From 5479cf334af64b9b7838396137f6c5d3c88a934a Mon Sep 17 00:00:00 2001 From: BixBite-project <38261741+BixBite-project@users.noreply.github.com> Date: Tue, 20 Nov 2018 17:05:25 +0500 Subject: [PATCH] Mobile API implementation api for mobile client support for openssl 1.1.0+ --- .gitmodules | 4 + CMakeLists.txt | 2 +- README.md | 2 +- cmake/test-static-assert.c | 1 + external/CMakeLists.txt | 10 +- .../archive/portable_binary_oarchive.hpp | 15 +- external/db_drivers/CMakeLists.txt | 2 +- external/db_drivers/liblmdb/.gitignore | 23 + external/db_drivers/liblmdb/CMakeLists.txt | 15 +- external/db_drivers/liblmdb/lmdb.h | 8 + external/db_drivers/liblmdb/mdb.c | 81 +- external/db_drivers/liblmdb/mdb_copy.1 | 6 + external/db_drivers/liblmdb/mdb_copy.c | 4 +- external/db_drivers/liblmdb/mdb_dump.1 | 6 + external/db_drivers/liblmdb/mdb_dump.c | 6 +- external/db_drivers/liblmdb/mdb_stat.1 | 6 + external/db_drivers/liblmdb/mdb_stat.c | 6 +- external/easylogging++/CMakeLists.txt | 6 +- external/easylogging++/ea_config.h | 12 +- external/easylogging++/easylogging++.cc | 28 +- external/easylogging++/easylogging++.h | 25 +- external/miniupnpc/.gitignore | 32 + external/miniupnpc/CMakeLists.txt | 4 +- external/miniupnpc/Makefile | 386 + external/miniupnpc/java/.gitignore | 2 + external/miniupnpc/miniwget.c | 12 +- .../miniupnpc/testdesc/new_LiveBox_desc.xml | 2 +- external/unbound/.gitattributes | 1 + external/unbound/.gitignore | 39 + external/unbound/CMakeLists.txt | 83 +- external/unbound/Makefile.in | 1164 +- external/unbound/ac_pkg_swig.m4 | 17 +- external/unbound/aclocal.m4 | 3101 +- external/unbound/acx_nlnetlabs.m4 | 72 +- external/unbound/acx_python.m4 | 5 +- external/unbound/cachedb/cachedb.c | 809 + external/unbound/cachedb/cachedb.h | 112 + external/unbound/cachedb/redis.c | 283 + external/unbound/cachedb/redis.h | 45 + external/unbound/compat/arc4_lock.c | 17 +- external/unbound/compat/arc4random.c | 76 +- external/unbound/compat/ctime_r.c | 2 +- external/unbound/compat/explicit_bzero.c | 4 + external/unbound/compat/getentropy_linux.c | 15 +- external/unbound/compat/strsep.c | 65 + external/unbound/config.guess | 354 +- external/unbound/config.h.cmake.in | 216 +- external/unbound/config.h.in | 198 +- external/unbound/config.sub | 88 +- external/unbound/configure | 3749 +- external/unbound/configure.ac | 464 +- external/unbound/configure_checks.cmake | 27 +- external/unbound/contrib/README | 9 + .../contrib/aaaa-filter-iterator.patch | 207 +- .../contrib/create_unbound_ad_servers.sh | 2 +- external/unbound/contrib/fastrpz.patch | 3510 + external/unbound/contrib/libunbound.pc.in | 13 + external/unbound/contrib/libunbound.so.conf | 41 + external/unbound/contrib/parseunbound.pl | 4 +- external/unbound/contrib/redirect-bogus.patch | 344 + .../unbound/contrib/unbound-querycachedb.py | 77 + external/unbound/contrib/unbound.service.in | 28 + external/unbound/contrib/unbound.socket.in | 6 + external/unbound/contrib/unbound_cache.sh | 2 +- external/unbound/contrib/unbound_cacti.tar.gz | Bin 73220 -> 73219 bytes external/unbound/contrib/unbound_munin_ | 17 +- external/unbound/contrib/unbound_smf22.tar.gz | Bin 4579 -> 4578 bytes external/unbound/contrib/warmup.cmd | 2 +- external/unbound/daemon/acl_list.c | 327 +- external/unbound/daemon/acl_list.h | 42 +- external/unbound/daemon/cachedump.c | 45 +- external/unbound/daemon/cachedump.h | 7 +- external/unbound/daemon/daemon.c | 142 +- external/unbound/daemon/daemon.h | 22 +- external/unbound/daemon/remote.c | 1082 +- external/unbound/daemon/remote.h | 31 +- external/unbound/daemon/stats.c | 237 +- external/unbound/daemon/stats.h | 141 +- external/unbound/daemon/unbound.c | 200 +- external/unbound/daemon/worker.c | 831 +- external/unbound/daemon/worker.h | 5 +- external/unbound/dns64/dns64.c | 44 +- external/unbound/dnscrypt/cert.h | 32 + external/unbound/dnscrypt/dnscrypt.c | 1115 + external/unbound/dnscrypt/dnscrypt.h | 175 + external/unbound/dnscrypt/dnscrypt.m4 | 44 + .../unbound/dnscrypt/dnscrypt_config.h.in | 17 + external/unbound/dnscrypt/testdata/gencert.sh | 38 + .../dnscrypt/testdata/keys1/public.key | 1 + .../dnscrypt/testdata/keys1/secret.key | 1 + .../dnscrypt/testdata/keys2/public.key | 1 + .../dnscrypt/testdata/keys2/secret.key | 1 + external/unbound/dnstap/dnstap.c | 14 +- external/unbound/dnstap/dnstap.proto | 1 + .../doc/CNAME-basedRedirectionDesignNotes.pdf | Bin 0 -> 56975 bytes external/unbound/doc/Changelog | 1781 + external/unbound/doc/IP-BasedActions.pdf | Bin 0 -> 247560 bytes external/unbound/doc/example.conf.in | 299 +- external/unbound/doc/ietf67-design-02.odp | Bin 331531 -> 331530 bytes external/unbound/doc/libunbound.3.in | 36 +- external/unbound/doc/requirements.txt | 2 +- external/unbound/doc/unbound-anchor.8.in | 8 +- external/unbound/doc/unbound-control.8.in | 137 +- external/unbound/doc/unbound.8.in | 6 + external/unbound/doc/unbound.conf.5.in | 1084 +- external/unbound/doc/unbound.doxygen | 4 +- external/unbound/edns-subnet/addrtree.c | 532 + external/unbound/edns-subnet/addrtree.h | 187 + external/unbound/edns-subnet/edns-subnet.c | 65 + external/unbound/edns-subnet/edns-subnet.h | 67 + .../unbound/edns-subnet/subnet-whitelist.c | 207 + .../unbound/edns-subnet/subnet-whitelist.h | 111 + external/unbound/edns-subnet/subnetmod.c | 815 + external/unbound/edns-subnet/subnetmod.h | 130 + external/unbound/install-sh | 366 +- .../unbound/ipsecmod/ipsecmod-whitelist.c | 158 + .../unbound/ipsecmod/ipsecmod-whitelist.h | 82 + external/unbound/ipsecmod/ipsecmod.c | 515 + external/unbound/ipsecmod/ipsecmod.h | 97 + external/unbound/iterator/iter_delegpt.c | 35 +- external/unbound/iterator/iter_delegpt.h | 14 +- external/unbound/iterator/iter_donotq.h | 2 +- external/unbound/iterator/iter_fwd.c | 17 +- external/unbound/iterator/iter_fwd.h | 4 +- external/unbound/iterator/iter_hints.c | 18 +- external/unbound/iterator/iter_hints.h | 2 +- external/unbound/iterator/iter_priv.h | 4 +- external/unbound/iterator/iter_scrub.c | 22 +- external/unbound/iterator/iter_utils.c | 85 +- external/unbound/iterator/iter_utils.h | 22 +- external/unbound/iterator/iterator.c | 849 +- external/unbound/iterator/iterator.h | 55 +- external/unbound/libunbound/context.c | 9 +- external/unbound/libunbound/context.h | 29 +- external/unbound/libunbound/libunbound.c | 163 +- external/unbound/libunbound/libworker.c | 124 +- external/unbound/libunbound/libworker.h | 9 +- .../unbound/libunbound/python/doc/conf.py | 5 +- .../python/doc/examples/example1a.rst | 45 +- .../python/doc/examples/example1b.rst | 44 +- .../python/doc/examples/example2.rst | 64 +- .../python/doc/examples/example3.rst | 9 +- .../python/doc/examples/example4.rst | 46 +- .../python/doc/examples/example5.rst | 17 +- .../python/doc/examples/example6.rst | 12 +- .../python/doc/examples/example7.rst | 33 +- .../python/doc/examples/example8.rst | 44 +- .../libunbound/python/doc/examples/index.rst | 16 +- .../unbound/libunbound/python/doc/install.rst | 39 +- .../unbound/libunbound/python/doc/intro.rst | 95 +- .../unbound/libunbound/python/libunbound.i | 2 +- external/unbound/libunbound/ubsyms.def | 40 +- external/unbound/libunbound/unbound-event.h | 157 +- external/unbound/libunbound/unbound.h | 212 +- external/unbound/libunbound/worker.h | 34 +- external/unbound/ltmain.sh | 5530 +- external/unbound/makedist.sh | 72 +- external/unbound/pythonmod/doc/conf.py | 5 +- .../pythonmod/doc/examples/example0-1.py | 2 +- .../pythonmod/doc/examples/example0.rst | 2 +- .../pythonmod/doc/examples/example1.rst | 14 +- .../pythonmod/doc/examples/example2.rst | 45 +- .../pythonmod/doc/examples/example3.rst | 2 +- .../pythonmod/doc/examples/example4.rst | 180 +- .../pythonmod/doc/examples/example5.rst | 191 + .../pythonmod/doc/examples/example6.rst | 299 + .../unbound/pythonmod/doc/examples/index.rst | 17 +- external/unbound/pythonmod/doc/install.rst | 44 +- .../pythonmod/doc/modules/functions.rst | 141 +- .../unbound/pythonmod/doc/modules/struct.rst | 189 +- external/unbound/pythonmod/doc/usecase.rst | 2 +- external/unbound/pythonmod/examples/edns.py | 194 + .../pythonmod/examples/inplace_callbacks.py | 244 + external/unbound/pythonmod/interface.i | 567 +- external/unbound/pythonmod/pythonmod.c | 113 +- external/unbound/pythonmod/pythonmod.h | 12 +- external/unbound/pythonmod/pythonmod_utils.c | 5 +- external/unbound/pythonmod/test-edns.conf | 17 + .../pythonmod/test-inplace_callbacks.conf | 17 + external/unbound/respip/respip.c | 1180 + external/unbound/respip/respip.h | 230 + external/unbound/services/authzone.c | 6570 ++ external/unbound/services/authzone.h | 653 + external/unbound/services/cache/dns.c | 160 +- external/unbound/services/cache/dns.h | 52 +- external/unbound/services/cache/infra.c | 171 +- external/unbound/services/cache/infra.h | 52 +- external/unbound/services/cache/rrset.c | 44 +- external/unbound/services/cache/rrset.h | 20 +- external/unbound/services/listen_dnsport.c | 403 +- external/unbound/services/listen_dnsport.h | 27 +- external/unbound/services/localzone.c | 918 +- external/unbound/services/localzone.h | 214 +- external/unbound/services/mesh.c | 489 +- external/unbound/services/mesh.h | 101 +- external/unbound/services/modstack.c | 58 +- external/unbound/services/modstack.h | 3 + external/unbound/services/outside_network.c | 583 +- external/unbound/services/outside_network.h | 132 +- external/unbound/services/view.c | 250 + external/unbound/services/view.h | 137 + external/unbound/sldns/keyraw.c | 90 +- external/unbound/sldns/keyraw.h | 18 + external/unbound/sldns/parse.c | 10 +- external/unbound/sldns/parse.h | 12 +- external/unbound/sldns/parseutil.c | 21 +- external/unbound/sldns/parseutil.h | 4 +- external/unbound/sldns/rrdef.c | 28 +- external/unbound/sldns/rrdef.h | 31 +- external/unbound/sldns/sbuffer.c | 19 +- external/unbound/sldns/sbuffer.h | 116 +- external/unbound/sldns/str2wire.c | 135 +- external/unbound/sldns/str2wire.h | 26 + external/unbound/sldns/wire2str.c | 115 +- external/unbound/sldns/wire2str.h | 60 +- external/unbound/smallapp/unbound-anchor.c | 47 +- external/unbound/smallapp/unbound-checkconf.c | 213 +- external/unbound/smallapp/unbound-control.c | 583 +- external/unbound/smallapp/unbound-host.c | 33 +- external/unbound/smallapp/worker_cb.c | 26 +- external/unbound/systemd.m4 | 31 + external/unbound/testcode/asynclook.c | 41 +- external/unbound/testcode/checklocks.c | 2 +- external/unbound/testcode/checklocks.h | 12 +- external/unbound/testcode/delayer.c | 5 +- external/unbound/testcode/do-tests.sh | 26 +- external/unbound/testcode/fake_event.c | 455 +- external/unbound/testcode/lock_verify.c | 20 +- external/unbound/testcode/memstats.c | 17 +- external/unbound/testcode/mini_tdir.sh | 171 + external/unbound/testcode/perf.c | 1 + external/unbound/testcode/petal.c | 32 +- external/unbound/testcode/replay.c | 36 +- external/unbound/testcode/replay.h | 33 +- external/unbound/testcode/run_vm.sh | 26 +- external/unbound/testcode/signit.c | 2 +- external/unbound/testcode/streamtcp.c | 25 +- external/unbound/testcode/testbound.c | 113 +- external/unbound/testcode/testpkts.c | 324 +- external/unbound/testcode/testpkts.h | 22 + external/unbound/testcode/unitauth.c | 882 + external/unbound/testcode/unitecs.c | 284 + external/unbound/testcode/unitlruhash.c | 76 +- external/unbound/testcode/unitmain.c | 335 +- external/unbound/testcode/unitmain.h | 6 + external/unbound/testcode/unitneg.c | 10 +- external/unbound/testcode/unitslabhash.c | 62 +- external/unbound/testcode/unitverify.c | 34 +- .../unbound/testdata/00-lint.tdir/00-lint.dsc | 16 + .../testdata/00-lint.tdir/00-lint.test | 11 + .../unbound/testdata/01-doc.tdir/01-doc.dsc | 16 + .../unbound/testdata/01-doc.tdir/01-doc.test | 47 + .../testdata/02-unittest.tdir/02-unittest.dsc | 16 + .../02-unittest.tdir/02-unittest.test | 63 + .../03-testbound.tdir/03-testbound.dsc | 16 + .../03-testbound.tdir/03-testbound.test | 149 + .../04-checkconf.tdir/04-checkconf.dsc | 16 + .../04-checkconf.tdir/04-checkconf.test | 72 + .../testdata/04-checkconf.tdir/bad.badfwd | 8 + .../testdata/04-checkconf.tdir/bad.badif | 17 + .../testdata/04-checkconf.tdir/bad.badip | 2 + .../testdata/04-checkconf.tdir/bad.bind | 35 + .../testdata/04-checkconf.tdir/bad.user | 2 + .../testdata/04-checkconf.tdir/good.all | 246 + .../testdata/04-checkconf.tdir/good.ifport | 23 + .../testdata/04-checkconf.tdir/good.include | 6 + .../testdata/04-checkconf.tdir/warn.algo | 9 + .../05-asynclook.tdir/05-asynclook.dsc | 16 + .../05-asynclook.tdir/05-asynclook.hosts | 12 + .../05-asynclook.tdir/05-asynclook.post | 10 + .../05-asynclook.tdir/05-asynclook.pre | 20 + .../05-asynclook.tdir/05-asynclook.test | 198 + .../05-asynclook.tdir/05-asynclook.testns | 35 + .../06-ianaports.tdir/06-ianaports.dsc | 16 + .../06-ianaports.tdir/06-ianaports.test | 27 + .../testdata/07-confroot.tdir/07-confroot.dsc | 16 + .../07-confroot.tdir/07-confroot.test | 287 + .../testdata/08-host-lib.tdir/08-host-lib.dsc | 16 + .../08-host-lib.tdir/08-host-lib.hosts | 12 + .../08-host-lib.tdir/08-host-lib.post | 10 + .../testdata/08-host-lib.tdir/08-host-lib.pre | 19 + .../08-host-lib.tdir/08-host-lib.test | 194 + .../08-host-lib.tdir/08-host-lib.testns | 35 + .../09-unbound-control.conf | 24 + .../09-unbound-control.dsc | 16 + .../09-unbound-control.post | 13 + .../09-unbound-control.pre | 33 + .../09-unbound-control.test | 406 + .../09-unbound-control.testns | 22 + .../09-unbound-control.tdir/bad_control.key | 15 + .../09-unbound-control.tdir/bad_control.pem | 11 + .../09-unbound-control.tdir/bad_server.key | 15 + .../09-unbound-control.tdir/bad_server.pem | 11 + .../09-unbound-control.tdir/local_data | 1 + .../09-unbound-control.tdir/local_data_remove | 1 + .../09-unbound-control.tdir/local_zones | 2 + .../local_zones_remove | 1 + .../unbound_control.key | 15 + .../unbound_control.pem | 11 + .../unbound_server.key | 15 + .../unbound_server.pem | 11 + .../10-unbound-anchor.conf | 8 + .../10-unbound-anchor.dsc | 16 + .../10-unbound-anchor.post | 10 + .../10-unbound-anchor.pre | 33 + .../10-unbound-anchor.test | 162 + .../10-unbound-anchor.testns | 17 + .../10-unbound-anchor.tdir/127.0.0.1/bad.p7s | Bin 0 -> 1165 bytes .../10-unbound-anchor.tdir/127.0.0.1/bad.xml | 10 + .../127.0.0.1/no_more_keys.p7s | Bin 0 -> 1165 bytes .../127.0.0.1/no_more_keys.xml | 16 + .../10-unbound-anchor.tdir/127.0.0.1/root.p7s | Bin 0 -> 1165 bytes .../10-unbound-anchor.tdir/127.0.0.1/root.xml | 10 + .../10-unbound-anchor.tdir/K.+005+37348.ds | 1 + .../10-unbound-anchor.tdir/K.+005+37348.key | 1 + .../K.+005+37348.private | 10 + .../10-unbound-anchor.tdir/keys/test_cert.key | 21 + .../10-unbound-anchor.tdir/keys/test_cert.pem | 15 + .../keys/unbound-control-setup | 167 + .../keys/unbound_control.key | 21 + .../keys/unbound_control.pem | 14 + .../keys/unbound_server.key | 21 + .../keys/unbound_server.pem | 14 + .../testdata/10-unbound-anchor.tdir/petal.key | 21 + .../testdata/10-unbound-anchor.tdir/petal.pem | 14 + .../testdata/10-unbound-anchor.tdir/signit | 10 + .../10-unbound-anchor.tdir/test_cert.key | 21 + .../10-unbound-anchor.tdir/test_cert.pem | 15 + .../testdata/Kexample.com.+003+02854.ds | 1 + .../testdata/Kexample.com.+003+02854.key | 1 + .../testdata/Kexample.com.+003+02854.private | 7 + .../testdata/Kexample.com.+005+16486.ds | 1 + .../testdata/Kexample.com.+005+16486.key | 1 + .../testdata/Kexample.com.+005+16486.private | 10 + .../testdata/Kexample.com.+005+30899.ds | 1 + .../testdata/Kexample.com.+005+30899.key | 1 + .../testdata/Kexample.com.+005+30899.private | 10 + .../testdata/Kexample.com.+005+55582.ds | 1 + .../testdata/Kexample.com.+005+55582.key | 1 + .../testdata/Kexample.com.+005+55582.private | 10 + .../testdata/Kexample.com.+005+60946.ds | 1 + .../testdata/Kexample.com.+005+60946.key | 1 + .../testdata/Kexample.com.+005+60946.private | 10 + .../testdata/Kexample.com.+007+57024.ds | 1 + .../testdata/Kexample.com.+007+57024.key | 1 + .../testdata/Kexample.com.+007+57024.private | 10 + .../testdata/Kexample.com.+008+01443.ds | 1 + .../testdata/Kexample.com.+008+01443.key | 1 + .../testdata/Kexample.com.+008+01443.private | 10 + .../testdata/Kexample.com.+008+29332.ds | 1 + .../testdata/Kexample.com.+008+29332.key | 1 + .../testdata/Kexample.com.+008+29332.private | 10 + .../testdata/Kexample.com.+008+55566.ds | 1 + .../testdata/Kexample.com.+008+55566.key | 1 + .../testdata/Kexample.com.+008+55566.private | 10 + .../testdata/Kexample.com.+009+48886.ds | 1 + .../testdata/Kexample.com.+009+48886.key | 1 + .../testdata/Kexample.com.+009+48886.private | 10 + .../testdata/Kexample.com.+012+60385.ds | 1 + .../testdata/Kexample.com.+012+60385.key | 1 + .../testdata/Kexample.com.+012+60385.private | 3 + external/unbound/testdata/acl.rpl | 52 + .../testdata/auth_axfr.tdir/auth_axfr.conf | 18 + .../testdata/auth_axfr.tdir/auth_axfr.dsc | 16 + .../testdata/auth_axfr.tdir/auth_axfr.post | 10 + .../testdata/auth_axfr.tdir/auth_axfr.pre | 31 + .../testdata/auth_axfr.tdir/auth_axfr.test | 51 + .../testdata/auth_axfr.tdir/auth_axfr.testns | 27 + .../127.0.0.1/example.com.zone | 3 + .../testdata/auth_https.tdir/auth_https.conf | 18 + .../testdata/auth_https.tdir/auth_https.dsc | 16 + .../testdata/auth_https.tdir/auth_https.post | 11 + .../testdata/auth_https.tdir/auth_https.pre | 34 + .../testdata/auth_https.tdir/auth_https.test | 51 + .../testdata/auth_https.tdir/petal.key | 21 + .../testdata/auth_https.tdir/petal.pem | 14 + external/unbound/testdata/auth_xfr.rpl | 232 + external/unbound/testdata/auth_xfr_host.rpl | 248 + external/unbound/testdata/auth_xfr_ixfr.rpl | 277 + .../unbound/testdata/auth_xfr_ixfrisaxfr.rpl | 236 + .../testdata/auth_xfr_ixfrmismatch.rpl | 267 + .../unbound/testdata/auth_xfr_ixfrnotimpl.rpl | 250 + external/unbound/testdata/auth_xfr_notify.rpl | 262 + .../unbound/testdata/auth_xfr_probesoa.rpl | 219 + external/unbound/testdata/auth_zonefile.rpl | 189 + .../unbound/testdata/auth_zonefile_dnssec.rpl | 194 + .../testdata/auth_zonefile_dnssec_fail.rpl | 202 + .../unbound/testdata/auth_zonefile_down.rpl | 185 + .../unbound/testdata/auth_zonefile_noup.rpl | 184 + .../unbound/testdata/auth_zonefile_root.rpl | 181 + external/unbound/testdata/autotrust_10key.rpl | 146 + .../testdata/autotrust_addpend_2exceed.rpl | 306 + .../testdata/autotrust_addpend_early.rpl | 242 + .../testdata/autotrust_addpend_nosign.rpl | 224 + .../testdata/autotrust_addpend_nosignnew.rpl | 225 + .../testdata/autotrust_addpend_once.rpl | 278 + .../testdata/autotrust_addpend_twice.rpl | 309 + external/unbound/testdata/autotrust_init.rpl | 183 + .../unbound/testdata/autotrust_init_ds.rpl | 182 + .../unbound/testdata/autotrust_init_fail.rpl | 181 + .../testdata/autotrust_init_failsig.rpl | 169 + .../testdata/autotrust_init_legacy.rpl | 86 + .../unbound/testdata/autotrust_init_sigs.rpl | 185 + .../unbound/testdata/autotrust_init_zsk.rpl | 182 + .../unbound/testdata/autotrust_missing.rpl | 320 + .../testdata/autotrust_missing_all.rpl | 318 + .../testdata/autotrust_missing_returns.rpl | 319 + .../unbound/testdata/autotrust_probefail.rpl | 165 + .../testdata/autotrust_probefailsig.rpl | 165 + .../testdata/autotrust_revoked_use.rpl | 405 + .../autotrust_revoked_with_invalid.rpl | 130 + external/unbound/testdata/autotrust_revtp.rpl | 150 + .../unbound/testdata/autotrust_revtp_read.rpl | 110 + .../unbound/testdata/autotrust_revtp_use.rpl | 154 + .../unbound/testdata/autotrust_rollalgo.rpl | 316 + .../testdata/autotrust_rollalgo_unknown.rpl | 325 + .../unbound/testdata/autotrust_rollover.rpl | 325 + .../unbound/testdata/autotrust_valid_use.rpl | 312 + external/unbound/testdata/black_data.rpl | 306 + external/unbound/testdata/black_dnskey.rpl | 509 + external/unbound/testdata/black_ds.rpl | 419 + external/unbound/testdata/black_ds_entry.rpl | 628 + external/unbound/testdata/black_ent.rpl | 452 + external/unbound/testdata/black_key_entry.rpl | 610 + external/unbound/testdata/black_prime.rpl | 306 + .../unbound/testdata/black_prime_entry.rpl | 314 + .../unbound/testdata/chaos_trustanchor.rpl | 145 + external/unbound/testdata/common.sh | 256 + .../testdata/ctrl_itr.tdir/bad_control.key | 15 + .../testdata/ctrl_itr.tdir/bad_control.pem | 11 + .../testdata/ctrl_itr.tdir/bad_server.key | 15 + .../testdata/ctrl_itr.tdir/bad_server.pem | 11 + .../testdata/ctrl_itr.tdir/ctrl_itr.conf | 26 + .../testdata/ctrl_itr.tdir/ctrl_itr.dsc | 16 + .../testdata/ctrl_itr.tdir/ctrl_itr.post | 13 + .../testdata/ctrl_itr.tdir/ctrl_itr.pre | 33 + .../testdata/ctrl_itr.tdir/ctrl_itr.test | 39 + .../testdata/ctrl_itr.tdir/ctrl_itr.testns | 22 + .../ctrl_itr.tdir/unbound_control.key | 15 + .../ctrl_itr.tdir/unbound_control.pem | 11 + .../testdata/ctrl_itr.tdir/unbound_server.key | 15 + .../testdata/ctrl_itr.tdir/unbound_server.pem | 11 + .../testdata/ctrl_pipe.tdir/bad_control.key | 15 + .../testdata/ctrl_pipe.tdir/bad_control.pem | 11 + .../testdata/ctrl_pipe.tdir/bad_server.key | 15 + .../testdata/ctrl_pipe.tdir/bad_server.pem | 11 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.conf | 23 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.dsc | 16 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.post | 15 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.pre | 35 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.test | 61 + .../testdata/ctrl_pipe.tdir/ctrl_pipe.testns | 22 + .../ctrl_pipe.tdir/unbound_control.key | 15 + .../ctrl_pipe.tdir/unbound_control.pem | 11 + .../ctrl_pipe.tdir/unbound_server.key | 15 + .../ctrl_pipe.tdir/unbound_server.pem | 11 + external/unbound/testdata/dlv_anchor.rpl | 278 + external/unbound/testdata/dlv_ask_higher.rpl | 353 + external/unbound/testdata/dlv_below_ta.rpl | 354 + external/unbound/testdata/dlv_delegation.rpl | 334 + external/unbound/testdata/dlv_ds_lookup.rpl | 281 + external/unbound/testdata/dlv_insecure.rpl | 253 + .../testdata/dlv_insecure_negcache.rpl | 310 + external/unbound/testdata/dlv_keyretry.rpl | 287 + external/unbound/testdata/dlv_negnx.rpl | 405 + external/unbound/testdata/dlv_optout.rpl | 440 + external/unbound/testdata/dlv_remove.rpl | 198 + .../unbound/testdata/dlv_remove_empty.rpl | 271 + .../unbound/testdata/dlv_remove_nodel.rpl | 275 + external/unbound/testdata/dlv_remove_pos.rpl | 166 + external/unbound/testdata/dlv_unused.rpl | 276 + external/unbound/testdata/dns64_lookup.rpl | 307 + .../testdata/dnscrypt_cert.tdir/1.cert | Bin 0 -> 124 bytes .../unbound/testdata/dnscrypt_cert.tdir/1.key | 1 + .../testdata/dnscrypt_cert.tdir/1_chacha.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert.tdir/1_salsa.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert.tdir/2.cert | Bin 0 -> 124 bytes .../unbound/testdata/dnscrypt_cert.tdir/2.key | 1 + .../testdata/dnscrypt_cert.tdir/2_chacha.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert.tdir/2_salsa.cert | Bin 0 -> 124 bytes .../dnscrypt_cert.tdir/dnscrypt_cert.conf | 26 + .../dnscrypt_cert.tdir/dnscrypt_cert.dsc | 16 + .../dnscrypt_cert.tdir/dnscrypt_cert.post | 16 + .../dnscrypt_cert.tdir/dnscrypt_cert.pre | 38 + .../dnscrypt_cert.tdir/dnscrypt_cert.test | 108 + .../dnscrypt_cert.tdir/dnscrypt_cert.testns | 26 + .../testdata/dnscrypt_cert.tdir/precheck.sh | 16 + .../testdata/dnscrypt_cert_chacha.tdir/1.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert_chacha.tdir/1.key | 1 + .../dnscrypt_cert_chacha.tdir/1_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_cert_chacha.tdir/1_salsa.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert_chacha.tdir/2.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_cert_chacha.tdir/2.key | 1 + .../dnscrypt_cert_chacha.tdir/2_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_cert_chacha.tdir/2_salsa.cert | Bin 0 -> 124 bytes .../dnscrypt_cert_chacha.conf | 27 + .../dnscrypt_cert_chacha.dsc | 16 + .../dnscrypt_cert_chacha.post | 17 + .../dnscrypt_cert_chacha.pre | 43 + .../dnscrypt_cert_chacha.test | 130 + .../dnscrypt_cert_chacha.testns | 26 + .../dnscrypt_cert_chacha.tdir/precheck.sh | 16 + .../testdata/dnscrypt_queries.tdir/1.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_queries.tdir/1.key | 1 + .../dnscrypt_queries.tdir/1_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_queries.tdir/1_salsa.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_queries.tdir/2.cert | Bin 0 -> 124 bytes .../testdata/dnscrypt_queries.tdir/2.key | 1 + .../dnscrypt_queries.tdir/2_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_queries.tdir/2_salsa.cert | Bin 0 -> 124 bytes .../dnscrypt_queries.conf | 26 + .../dnscrypt_queries.dsc | 16 + .../dnscrypt_queries.post | 20 + .../dnscrypt_queries.pre | 53 + .../dnscrypt_queries.test | 107 + .../dnscrypt_queries.testns | 63 + .../dnscrypt_queries_chacha.tdir/1.key | 1 + .../1_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_queries_chacha.tdir/1_salsa.cert | Bin 0 -> 124 bytes .../dnscrypt_queries_chacha.tdir/2.key | 1 + .../2_chacha.cert | Bin 0 -> 124 bytes .../dnscrypt_queries_chacha.tdir/2_salsa.cert | Bin 0 -> 124 bytes .../dnscrypt_queries_chacha.conf | 24 + .../dnscrypt_queries_chacha.dsc | 16 + .../dnscrypt_queries_chacha.post | 17 + .../dnscrypt_queries_chacha.pre | 52 + .../dnscrypt_queries_chacha.test | 101 + .../dnscrypt_queries_chacha.testns | 63 + .../dnscrypt_queries_chacha.tdir/precheck.sh | 27 + .../unbound/testdata/domain_insec_dlv.rpl | 276 + external/unbound/testdata/domain_insec_ds.rpl | 213 + .../testdata/edns_cache.tdir/edns_cache.conf | 21 + .../testdata/edns_cache.tdir/edns_cache.dsc | 16 + .../testdata/edns_cache.tdir/edns_cache.post | 11 + .../testdata/edns_cache.tdir/edns_cache.pre | 43 + .../testdata/edns_cache.tdir/edns_cache.stub1 | 43 + .../testdata/edns_cache.tdir/edns_cache.stub2 | 33 + .../testdata/edns_cache.tdir/edns_cache.test | 30 + .../testdata/edns_lame.tdir/edns_lame.conf | 15 + .../testdata/edns_lame.tdir/edns_lame.dsc | 16 + .../testdata/edns_lame.tdir/edns_lame.post | 10 + .../testdata/edns_lame.tdir/edns_lame.pre | 30 + .../testdata/edns_lame.tdir/edns_lame.test | 24 + .../testdata/edns_lame.tdir/edns_lame.testns | 14 + external/unbound/testdata/fetch_glue.rpl | 210 + .../unbound/testdata/fetch_glue_cname.rpl | 222 + external/unbound/testdata/fwd.rpl | 42 + .../unbound/testdata/fwd_0ttlservfail.rpl | 85 + .../testdata/fwd_ancil.tdir/fwd_ancil.conf | 17 + .../testdata/fwd_ancil.tdir/fwd_ancil.dsc | 16 + .../testdata/fwd_ancil.tdir/fwd_ancil.post | 18 + .../testdata/fwd_ancil.tdir/fwd_ancil.pre | 44 + .../testdata/fwd_ancil.tdir/fwd_ancil.test | 101 + .../testdata/fwd_ancil.tdir/fwd_ancil.testns | 14 + external/unbound/testdata/fwd_any.rpl | 161 + .../testdata/fwd_bogus.tdir/fwd_bogus.conf | 26 + .../testdata/fwd_bogus.tdir/fwd_bogus.dsc | 16 + .../testdata/fwd_bogus.tdir/fwd_bogus.post | 10 + .../testdata/fwd_bogus.tdir/fwd_bogus.pre | 32 + .../testdata/fwd_bogus.tdir/fwd_bogus.test | 48 + .../testdata/fwd_bogus.tdir/fwd_bogus.testns | 25 + .../fwd_bogus.tdir/unbound_control.key | 15 + .../fwd_bogus.tdir/unbound_control.pem | 11 + .../fwd_bogus.tdir/unbound_server.key | 15 + .../fwd_bogus.tdir/unbound_server.pem | 11 + external/unbound/testdata/fwd_cached.rpl | 73 + .../testdata/fwd_capsid.tdir/fwd_capsid.conf | 16 + .../testdata/fwd_capsid.tdir/fwd_capsid.dsc | 16 + .../testdata/fwd_capsid.tdir/fwd_capsid.post | 10 + .../testdata/fwd_capsid.tdir/fwd_capsid.pre | 31 + .../testdata/fwd_capsid.tdir/fwd_capsid.test | 22 + .../fwd_capsid.tdir/fwd_capsid.testns | 14 + .../fwd_capsid_fallback.conf | 16 + .../fwd_capsid_fallback.dsc | 16 + .../fwd_capsid_fallback.post | 10 + .../fwd_capsid_fallback.pre | 30 + .../fwd_capsid_fallback.test | 22 + .../fwd_capsid_fallback.testns | 15 + .../fwd_capsid_strip.conf | 17 + .../fwd_capsid_strip.dsc | 16 + .../fwd_capsid_strip.post | 11 + .../fwd_capsid_strip.pre | 38 + .../fwd_capsid_strip.test | 23 + .../fwd_capsid_strip.testns | 20 + .../fwd_capsid_strip.testns2 | 18 + .../fwd_capsid_white.conf | 18 + .../fwd_capsid_white.dsc | 16 + .../fwd_capsid_white.post | 11 + .../fwd_capsid_white.pre | 38 + .../fwd_capsid_white.test | 23 + .../fwd_capsid_white.testns | 15 + .../fwd_capsid_white.testns2 | 17 + .../fwd_compress_c00c.conf | 15 + .../fwd_compress_c00c.dsc | 16 + .../fwd_compress_c00c.good | 7 + .../fwd_compress_c00c.post | 10 + .../fwd_compress_c00c.pre | 31 + .../fwd_compress_c00c.test | 49 + .../fwd_compress_c00c.testns | 18 + external/unbound/testdata/fwd_droptoomany.rpl | 90 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.conf | 23 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.dsc | 16 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.post | 10 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.pre | 31 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.test | 42 + .../fwd_edns_bksec.tdir/fwd_edns_bksec.testns | 73 + .../fwd_edns_probe.tdir/fwd_edns_probe.conf | 14 + .../fwd_edns_probe.tdir/fwd_edns_probe.dsc | 16 + .../fwd_edns_probe.tdir/fwd_edns_probe.post | 10 + .../fwd_edns_probe.tdir/fwd_edns_probe.pre | 31 + .../fwd_edns_probe.tdir/fwd_edns_probe.test | 42 + .../fwd_edns_probe.tdir/fwd_edns_probe.testns | 42 + external/unbound/testdata/fwd_error.rpl | 27 + external/unbound/testdata/fwd_jostle.rpl | 110 + external/unbound/testdata/fwd_jostle_out.rpl | 113 + external/unbound/testdata/fwd_lrudrop.rpl | 122 + .../fwd_malformed.tdir/fwd_malformed.conf | 16 + .../fwd_malformed.tdir/fwd_malformed.dsc | 16 + .../fwd_malformed.tdir/fwd_malformed.post | 10 + .../fwd_malformed.tdir/fwd_malformed.pre | 31 + .../fwd_malformed.tdir/fwd_malformed.test | 22 + .../fwd_malformed.tdir/fwd_malformed.testns | 23 + .../fwd_no_edns.tdir/fwd_no_edns.conf | 14 + .../testdata/fwd_no_edns.tdir/fwd_no_edns.dsc | 16 + .../fwd_no_edns.tdir/fwd_no_edns.post | 11 + .../testdata/fwd_no_edns.tdir/fwd_no_edns.pre | 31 + .../fwd_no_edns.tdir/fwd_no_edns.test | 22 + .../fwd_no_edns.tdir/fwd_no_edns.testns | 26 + external/unbound/testdata/fwd_notcached.rpl | 87 + .../fwd_oneport.tdir/fwd_oneport.conf | 18 + .../testdata/fwd_oneport.tdir/fwd_oneport.dsc | 16 + .../fwd_oneport.tdir/fwd_oneport.post | 18 + .../testdata/fwd_oneport.tdir/fwd_oneport.pre | 31 + .../fwd_oneport.tdir/fwd_oneport.test | 111 + .../fwd_oneport.tdir/fwd_oneport.testns | 64 + .../testdata/fwd_tcp.tdir/fwd_tcp.conf | 14 + .../unbound/testdata/fwd_tcp.tdir/fwd_tcp.dsc | 16 + .../testdata/fwd_tcp.tdir/fwd_tcp.post | 10 + .../unbound/testdata/fwd_tcp.tdir/fwd_tcp.pre | 31 + .../testdata/fwd_tcp.tdir/fwd_tcp.test | 22 + .../testdata/fwd_tcp.tdir/fwd_tcp.testns | 14 + .../testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.conf | 16 + .../testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.dsc | 16 + .../testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.post | 11 + .../testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.pre | 31 + .../testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.test | 22 + .../fwd_tcp_tc.tdir/fwd_tcp_tc.testns | 26 + .../fwd_tcp_tc6.tdir/fwd_tcp_tc6.conf | 17 + .../testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.dsc | 16 + .../fwd_tcp_tc6.tdir/fwd_tcp_tc6.post | 11 + .../testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.pre | 31 + .../fwd_tcp_tc6.tdir/fwd_tcp_tc6.test | 26 + .../fwd_tcp_tc6.tdir/fwd_tcp_tc6.testns | 26 + .../testdata/fwd_three.tdir/fwd_three.conf | 17 + .../testdata/fwd_three.tdir/fwd_three.dsc | 16 + .../testdata/fwd_three.tdir/fwd_three.post | 21 + .../testdata/fwd_three.tdir/fwd_three.pre | 31 + .../testdata/fwd_three.tdir/fwd_three.test | 63 + .../testdata/fwd_three.tdir/fwd_three.testns | 34 + .../fwd_three_service.conf | 16 + .../fwd_three_service.dsc | 16 + .../fwd_three_service.post | 20 + .../fwd_three_service.pre | 31 + .../fwd_three_service.test | 63 + .../fwd_three_service.testns | 34 + external/unbound/testdata/fwd_timeout.rpl | 27 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.conf | 15 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.dsc | 16 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.post | 11 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.pre | 31 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.test | 35 + .../fwd_ttlexpire.tdir/fwd_ttlexpire.testns | 14 + external/unbound/testdata/fwd_two.rpl | 89 + .../testdata/fwd_udp.tdir/fwd_udp.conf | 15 + .../unbound/testdata/fwd_udp.tdir/fwd_udp.dsc | 16 + .../testdata/fwd_udp.tdir/fwd_udp.post | 10 + .../unbound/testdata/fwd_udp.tdir/fwd_udp.pre | 31 + .../testdata/fwd_udp.tdir/fwd_udp.test | 22 + .../testdata/fwd_udp.tdir/fwd_udp.testns | 14 + .../fwd_udptmout.tdir/fwd_udptmout.conf | 16 + .../fwd_udptmout.tdir/fwd_udptmout.dsc | 16 + .../fwd_udptmout.tdir/fwd_udptmout.post | 19 + .../fwd_udptmout.tdir/fwd_udptmout.pre | 31 + .../fwd_udptmout.tdir/fwd_udptmout.test | 110 + .../fwd_udptmout.tdir/fwd_udptmout.testns | 64 + .../fwd_waitudp.tdir/fwd_waitudp.conf | 16 + .../testdata/fwd_waitudp.tdir/fwd_waitudp.dsc | 16 + .../fwd_waitudp.tdir/fwd_waitudp.post | 21 + .../testdata/fwd_waitudp.tdir/fwd_waitudp.pre | 31 + .../fwd_waitudp.tdir/fwd_waitudp.test | 67 + .../fwd_waitudp.tdir/fwd_waitudp.testns | 34 + .../testdata/fwd_zero.tdir/fwd_zero.conf | 15 + .../testdata/fwd_zero.tdir/fwd_zero.dsc | 16 + .../testdata/fwd_zero.tdir/fwd_zero.post | 10 + .../testdata/fwd_zero.tdir/fwd_zero.pre | 31 + .../testdata/fwd_zero.tdir/fwd_zero.test | 32 + .../testdata/fwd_zero.tdir/fwd_zero.testns | 14 + external/unbound/testdata/fwddlv_parse.rpl | 134 + external/unbound/testdata/host_file.template | 5 + .../hostsfileosx.tdir/hostsfileosx.dsc | 16 + .../hostsfileosx.tdir/hostsfileosx.hosts | 15 + .../hostsfileosx.tdir/hostsfileosx.post | 9 + .../hostsfileosx.tdir/hostsfileosx.pre | 20 + .../hostsfileosx.tdir/hostsfileosx.test | 63 + .../hostsfileosx.tdir/hostsfileosx.testns | 35 + .../testdata/ipsecmod_bogus_ipseckey.crpl | 238 + .../unbound/testdata/ipsecmod_enabled.crpl | 220 + external/unbound/testdata/ipsecmod_hook.sh | 2 + .../ipsecmod_ignore_bogus_ipseckey.crpl | 259 + .../unbound/testdata/ipsecmod_max_ttl.crpl | 229 + .../unbound/testdata/ipsecmod_strict.crpl | 218 + .../unbound/testdata/ipsecmod_whitelist.crpl | 295 + external/unbound/testdata/iter_class_any.rpl | 153 + .../unbound/testdata/iter_cname_cache.rpl | 298 + .../unbound/testdata/iter_cname_double.rpl | 164 + external/unbound/testdata/iter_cname_nx.rpl | 158 + .../unbound/testdata/iter_cname_qnamecopy.rpl | 199 + external/unbound/testdata/iter_cycle.rpl | 179 + external/unbound/testdata/iter_cycle_noh.rpl | 226 + .../unbound/testdata/iter_dname_insec.rpl | 1055 + external/unbound/testdata/iter_dname_yx.rpl | 1041 + .../unbound/testdata/iter_dnsseclame_bug.rpl | 468 + .../unbound/testdata/iter_dnsseclame_ds.rpl | 417 + .../testdata/iter_dnsseclame_ds_ok.rpl | 370 + .../unbound/testdata/iter_dnsseclame_ta.rpl | 330 + .../testdata/iter_dnsseclame_ta_ok.rpl | 306 + .../unbound/testdata/iter_domain_sale.rpl | 273 + .../testdata/iter_domain_sale_nschange.rpl | 342 + external/unbound/testdata/iter_donotq127.rpl | 136 + .../unbound/testdata/iter_dp_turnsuseless.rpl | 166 + .../unbound/testdata/iter_ds_locate_ns.rpl | 145 + .../testdata/iter_ds_locate_ns_cname.rpl | 155 + .../testdata/iter_ds_locate_ns_detach.rpl | 297 + .../testdata/iter_ds_locate_ns_nosoa.rpl | 145 + .../unbound/testdata/iter_ds_referral.rpl | 213 + external/unbound/testdata/iter_ds_reply.rpl | 225 + external/unbound/testdata/iter_emptydp.rpl | 266 + .../testdata/iter_emptydp_for_glue.rpl | 496 + external/unbound/testdata/iter_fwdfirst.rpl | 157 + .../unbound/testdata/iter_fwdfirstequal.rpl | 157 + external/unbound/testdata/iter_fwdstub.rpl | 218 + .../unbound/testdata/iter_fwdstubroot.rpl | 175 + external/unbound/testdata/iter_got6only.rpl | 136 + external/unbound/testdata/iter_hint_lame.rpl | 121 + external/unbound/testdata/iter_lame_aaaa.rpl | 181 + external/unbound/testdata/iter_lame_noaa.rpl | 202 + external/unbound/testdata/iter_lame_nosoa.rpl | 290 + external/unbound/testdata/iter_lamescrub.rpl | 151 + external/unbound/testdata/iter_mod.rpl | 122 + external/unbound/testdata/iter_ns_badip.rpl | 238 + external/unbound/testdata/iter_ns_spoof.rpl | 279 + external/unbound/testdata/iter_pc_a.rpl | 233 + external/unbound/testdata/iter_pc_aaaa.rpl | 233 + external/unbound/testdata/iter_pcdiff.rpl | 213 + external/unbound/testdata/iter_pcdirect.rpl | 247 + external/unbound/testdata/iter_pclame.rpl | 191 + external/unbound/testdata/iter_pcname.rpl | 277 + external/unbound/testdata/iter_pcnamech.rpl | 424 + .../unbound/testdata/iter_pcnamechrec.rpl | 403 + external/unbound/testdata/iter_pcnamerec.rpl | 278 + external/unbound/testdata/iter_pcttl.rpl | 245 + external/unbound/testdata/iter_prefetch.rpl | 227 + .../unbound/testdata/iter_prefetch_change.rpl | 364 + .../testdata/iter_prefetch_change2.rpl | 313 + .../testdata/iter_prefetch_childns.rpl | 228 + .../unbound/testdata/iter_prefetch_fail.rpl | 393 + .../unbound/testdata/iter_prefetch_ns.rpl | 315 + .../unbound/testdata/iter_primenoglue.rpl | 386 + external/unbound/testdata/iter_privaddr.rpl | 286 + .../unbound/testdata/iter_ranoaa_lame.rpl | 293 + .../unbound/testdata/iter_reclame_one.rpl | 166 + .../unbound/testdata/iter_reclame_two.rpl | 182 + external/unbound/testdata/iter_recurse.rpl | 228 + external/unbound/testdata/iter_req_qname.rpl | 118 + external/unbound/testdata/iter_resolve.rpl | 121 + .../testdata/iter_resolve_minimised.rpl | 159 + .../testdata/iter_resolve_minimised_nx.rpl | 130 + .../iter_resolve_minimised_refused.rpl | 124 + .../iter_resolve_minimised_timeout.rpl | 152 + .../unbound/testdata/iter_scrub_cname_an.rpl | 182 + .../testdata/iter_scrub_dname_insec.rpl | 251 + .../unbound/testdata/iter_scrub_dname_rev.rpl | 161 + .../unbound/testdata/iter_scrub_dname_sec.rpl | 215 + external/unbound/testdata/iter_scrub_ns.rpl | 103 + .../unbound/testdata/iter_scrub_ns_fwd.rpl | 103 + .../unbound/testdata/iter_scrub_ns_side.rpl | 103 + external/unbound/testdata/iter_soamin.rpl | 208 + external/unbound/testdata/iter_stub_leak.rpl | 220 + .../unbound/testdata/iter_stub_noroot.rpl | 64 + external/unbound/testdata/iter_stubfirst.rpl | 157 + .../unbound/testdata/iter_stublastresort.rpl | 259 + .../unbound/testdata/iter_timeout_ra_aaaa.rpl | 245 + .../unbound/testdata/local_acl_override.rpl | 93 + .../unbound/testdata/local_acl_taglist.rpl | 169 + .../testdata/local_acl_taglist_action.rpl | 125 + external/unbound/testdata/local_cname.rpl | 492 + external/unbound/testdata/local_ds.rpl | 103 + external/unbound/testdata/local_nodefault.rpl | 61 + .../local_nodefault.tdir/local_nodefault.conf | 27 + .../local_nodefault.tdir/local_nodefault.dsc | 16 + .../local_nodefault.tdir/local_nodefault.post | 11 + .../local_nodefault.tdir/local_nodefault.pre | 31 + .../local_nodefault.tdir/local_nodefault.test | 53 + .../local_nodefault.testns | 24 + .../local_norec.tdir/local_norec.conf | 24 + .../testdata/local_norec.tdir/local_norec.dsc | 16 + .../local_norec.tdir/local_norec.post | 10 + .../testdata/local_norec.tdir/local_norec.pre | 31 + .../local_norec.tdir/local_norec.test | 65 + .../local_norec.tdir/local_norec.testns | 24 + .../local_nosnoop.tdir/local_nosnoop.conf | 24 + .../local_nosnoop.tdir/local_nosnoop.dsc | 16 + .../local_nosnoop.tdir/local_nosnoop.post | 10 + .../local_nosnoop.tdir/local_nosnoop.pre | 31 + .../local_nosnoop.tdir/local_nosnoop.test | 75 + .../local_nosnoop.tdir/local_nosnoop.testns | 24 + .../testdata/local_transparent_sametype.rpl | 78 + .../testdata/local_typetransparent.rpl | 110 + external/unbound/testdata/localdata.rpl | 357 + .../unbound/testdata/net_signed_servfail.rpl | 1376 + .../unbound/testdata/nomem_cnametopos.rpl | 299 + .../testdata/nss_compile.tdir/nss_compile.dsc | 16 + .../nss_compile.tdir/nss_compile.test | 38 + .../unbound/testdata/pylib.tdir/pylib.conf | 19 + .../unbound/testdata/pylib.tdir/pylib.dsc | 16 + .../testdata/pylib.tdir/pylib.lookup.py | 24 + .../unbound/testdata/pylib.tdir/pylib.post | 20 + .../unbound/testdata/pylib.tdir/pylib.pre | 36 + external/unbound/testdata/pylib.tdir/pylib.py | 159 + .../unbound/testdata/pylib.tdir/pylib.test | 40 + .../unbound/testdata/pylib.tdir/pylib.testns | 14 + .../unbound/testdata/pymod.tdir/pymod.conf | 19 + .../unbound/testdata/pymod.tdir/pymod.dsc | 16 + .../unbound/testdata/pymod.tdir/pymod.post | 20 + .../unbound/testdata/pymod.tdir/pymod.pre | 56 + external/unbound/testdata/pymod.tdir/pymod.py | 159 + .../unbound/testdata/pymod.tdir/pymod.test | 56 + .../unbound/testdata/pymod.tdir/pymod.testns | 24 + .../pymod_thread.tdir/pymod_thread.conf | 19 + .../pymod_thread.tdir/pymod_thread.dsc | 16 + .../pymod_thread.tdir/pymod_thread.post | 21 + .../pymod_thread.tdir/pymod_thread.pre | 56 + .../pymod_thread.tdir/pymod_thread.py | 165 + .../pymod_thread.tdir/pymod_thread.test | 67 + .../pymod_thread.tdir/pymod_thread.testns | 24 + external/unbound/testdata/refuse_xfr.rpl | 37 + .../remote-threaded.tdir/bad_control.key | 15 + .../remote-threaded.tdir/bad_control.pem | 11 + .../remote-threaded.tdir/bad_server.key | 15 + .../remote-threaded.tdir/bad_server.pem | 11 + .../remote-threaded.tdir/remote-threaded.conf | 25 + .../remote-threaded.tdir/remote-threaded.dsc | 16 + .../remote-threaded.tdir/remote-threaded.post | 13 + .../remote-threaded.tdir/remote-threaded.pre | 33 + .../remote-threaded.tdir/remote-threaded.test | 308 + .../remote-threaded.testns | 22 + .../remote-threaded.tdir/unbound_control.key | 15 + .../remote-threaded.tdir/unbound_control.pem | 11 + .../remote-threaded.tdir/unbound_server.key | 15 + .../remote-threaded.tdir/unbound_server.pem | 11 + .../testdata/root_anchor.tdir/root_anchor.dsc | 16 + .../root_anchor.tdir/root_anchor.test | 51 + .../testdata/root_hints.tdir/root_hints.dsc | 16 + .../testdata/root_hints.tdir/root_hints.test | 62 + .../unbound/testdata/root_key_sentinel.rpl | 185 + external/unbound/testdata/rrset_rettl.rpl | 118 + external/unbound/testdata/rrset_untrusted.rpl | 119 + external/unbound/testdata/rrset_updated.rpl | 123 + .../testdata/speed_cache.tdir/makeqs.c | 14 + .../testdata/speed_cache.tdir/makeqs.sh | 33 + .../speed_cache.tdir/speed_cache.conf | 17 + .../testdata/speed_cache.tdir/speed_cache.dsc | 16 + .../speed_cache.tdir/speed_cache.post | 10 + .../testdata/speed_cache.tdir/speed_cache.pre | 31 + .../speed_cache.tdir/speed_cache.test | 79 + .../speed_cache.tdir/speed_cache.testns | 14 + .../speed_local.tdir/speed_local.conf | 15 + .../testdata/speed_local.tdir/speed_local.dsc | 16 + .../speed_local.tdir/speed_local.post | 9 + .../testdata/speed_local.tdir/speed_local.pre | 23 + .../speed_local.tdir/speed_local.test | 43 + .../speed_local.tdir/speed_local.testns | 14 + .../testdata/stat_timer.tdir/stat_timer.conf | 16 + .../testdata/stat_timer.tdir/stat_timer.dsc | 16 + .../testdata/stat_timer.tdir/stat_timer.post | 11 + .../testdata/stat_timer.tdir/stat_timer.pre | 31 + .../testdata/stat_timer.tdir/stat_timer.test | 40 + .../stat_timer.tdir/stat_timer.testns | 14 + external/unbound/testdata/stop_nxdomain.rpl | 96 + .../testdata/stop_nxdomain_minimised.rpl | 112 + .../stream_ssl.tdir/stream_ssl.clie.conf | 18 + .../testdata/stream_ssl.tdir/stream_ssl.dsc | 16 + .../testdata/stream_ssl.tdir/stream_ssl.post | 10 + .../testdata/stream_ssl.tdir/stream_ssl.pre | 29 + .../stream_ssl.tdir/stream_ssl.serv.conf | 20 + .../testdata/stream_ssl.tdir/stream_ssl.test | 74 + .../stream_ssl.tdir/unbound_control.key | 15 + .../stream_ssl.tdir/unbound_control.pem | 11 + .../stream_ssl.tdir/unbound_server.key | 15 + .../stream_ssl.tdir/unbound_server.pem | 11 + .../testdata/stream_tcp.tdir/stream_tcp.conf | 14 + .../testdata/stream_tcp.tdir/stream_tcp.dsc | 16 + .../testdata/stream_tcp.tdir/stream_tcp.post | 10 + .../testdata/stream_tcp.tdir/stream_tcp.pre | 30 + .../testdata/stream_tcp.tdir/stream_tcp.test | 79 + .../stream_tcp.tdir/stream_tcp.testns | 34 + .../testdata/stub_udp.tdir/stub_udp.conf | 18 + .../testdata/stub_udp.tdir/stub_udp.dsc | 16 + .../testdata/stub_udp.tdir/stub_udp.post | 10 + .../testdata/stub_udp.tdir/stub_udp.pre | 35 + .../testdata/stub_udp.tdir/stub_udp.test | 37 + .../testdata/stub_udp.tdir/stub_udp.testns | 46 + .../testdata/stub_udp6.tdir/stub_udp6.conf | 19 + .../testdata/stub_udp6.tdir/stub_udp6.dsc | 16 + .../testdata/stub_udp6.tdir/stub_udp6.post | 10 + .../testdata/stub_udp6.tdir/stub_udp6.pre | 31 + .../testdata/stub_udp6.tdir/stub_udp6.test | 37 + .../testdata/stub_udp6.tdir/stub_udp6.testns | 46 + external/unbound/testdata/subnet_cached.crpl | 236 + external/unbound/testdata/subnet_derived.crpl | 164 + .../unbound/testdata/subnet_format_ip4.crpl | 161 + .../unbound/testdata/subnet_max_source.crpl | 232 + .../testdata/subnet_not_whitelisted.crpl | 157 + .../unbound/testdata/subnet_val_positive.crpl | 185 + .../testdata/subnet_val_positive_client.crpl | 196 + .../testdata/subnet_without_validator.crpl | 161 + .../tcp_sigpipe.tdir/tcp_sigpipe.conf | 15 + .../testdata/tcp_sigpipe.tdir/tcp_sigpipe.dsc | 16 + .../tcp_sigpipe.tdir/tcp_sigpipe.post | 10 + .../testdata/tcp_sigpipe.tdir/tcp_sigpipe.pre | 31 + .../tcp_sigpipe.tdir/tcp_sigpipe.test | 45 + .../tcp_sigpipe.tdir/tcp_sigpipe.testns | 42 + external/unbound/testdata/test_ds.sha1 | 33 + external/unbound/testdata/test_ds.sha384 | 45 + external/unbound/testdata/test_ldnsrr.1 | 5739 ++ external/unbound/testdata/test_ldnsrr.2 | 1434 + external/unbound/testdata/test_ldnsrr.3 | 574 + external/unbound/testdata/test_ldnsrr.4 | 79 + external/unbound/testdata/test_ldnsrr.5 | 153 + external/unbound/testdata/test_ldnsrr.c1 | 11470 +++ external/unbound/testdata/test_ldnsrr.c2 | 2860 + external/unbound/testdata/test_ldnsrr.c3 | 1068 + external/unbound/testdata/test_ldnsrr.c4 | 80 + external/unbound/testdata/test_ldnsrr.c5 | 190 + external/unbound/testdata/test_nsec3_hash.1 | 180 + external/unbound/testdata/test_packets.1 | 80000 ++++++++++++++++ external/unbound/testdata/test_packets.2 | 50 + external/unbound/testdata/test_packets.3 | 496 + external/unbound/testdata/test_packets.4 | 929 + external/unbound/testdata/test_packets.5 | 70 + external/unbound/testdata/test_packets.6 | 22 + external/unbound/testdata/test_packets.7 | 37 + external/unbound/testdata/test_packets.8 | 13 + external/unbound/testdata/test_packets.9 | 23 + external/unbound/testdata/test_signatures.1 | 605 + external/unbound/testdata/test_signatures.2 | 23 + external/unbound/testdata/test_signatures.3 | 48 + external/unbound/testdata/test_signatures.4 | 47 + external/unbound/testdata/test_signatures.5 | 48 + external/unbound/testdata/test_signatures.6 | 48 + external/unbound/testdata/test_signatures.7 | 32 + external/unbound/testdata/test_signatures.8 | 83 + external/unbound/testdata/test_signatures.9 | 21 + .../unbound/testdata/test_sigs.ecdsa_p256 | 23 + .../unbound/testdata/test_sigs.ecdsa_p384 | 23 + external/unbound/testdata/test_sigs.ed25519 | 21 + external/unbound/testdata/test_sigs.ed448 | 21 + external/unbound/testdata/test_sigs.gost | 40 + external/unbound/testdata/test_sigs.hinfo | 55 + external/unbound/testdata/test_sigs.revoked | 24 + external/unbound/testdata/test_sigs.rsasha256 | 23 + .../testdata/test_sigs.rsasha256_draft | 23 + .../testdata/test_sigs.rsasha512_draft | 23 + .../unbound/testdata/test_sigs.sha1_and_256 | 56 + .../unbound/testdata/trust_cname_chain.rpl | 153 + external/unbound/testdata/ttl_max.rpl | 213 + external/unbound/testdata/ttl_min.rpl | 214 + external/unbound/testdata/ttl_msg.rpl | 492 + external/unbound/testdata/val_adbit.rpl | 173 + external/unbound/testdata/val_adcopy.rpl | 172 + external/unbound/testdata/val_anchor_nx.rpl | 220 + .../unbound/testdata/val_anchor_nx_nosig.rpl | 218 + external/unbound/testdata/val_ans_dsent.rpl | 247 + external/unbound/testdata/val_ans_nx.rpl | 249 + external/unbound/testdata/val_any.rpl | 203 + external/unbound/testdata/val_any_cname.rpl | 164 + external/unbound/testdata/val_any_dname.rpl | 207 + external/unbound/testdata/val_cname_loop1.rpl | 146 + external/unbound/testdata/val_cname_loop2.rpl | 155 + external/unbound/testdata/val_cname_loop3.rpl | 168 + .../unbound/testdata/val_cnameinsectopos.rpl | 292 + .../unbound/testdata/val_cnamenx_dblnsec.rpl | 179 + .../unbound/testdata/val_cnamenx_rcodenx.rpl | 237 + external/unbound/testdata/val_cnameqtype.rpl | 231 + .../unbound/testdata/val_cnametocloser.rpl | 105 + .../testdata/val_cnametocloser_nosig.rpl | 98 + .../testdata/val_cnametocnamewctoposwc.rpl | 211 + .../unbound/testdata/val_cnametodname.rpl | 233 + .../testdata/val_cnametodnametocnametopos.rpl | 421 + .../unbound/testdata/val_cnametoinsecure.rpl | 139 + .../unbound/testdata/val_cnametonodata.rpl | 233 + .../testdata/val_cnametonodata_nonsec.rpl | 265 + external/unbound/testdata/val_cnametonsec.rpl | 191 + external/unbound/testdata/val_cnametonx.rpl | 237 + .../unbound/testdata/val_cnametooptin.rpl | 195 + .../unbound/testdata/val_cnametooptout.rpl | 112 + external/unbound/testdata/val_cnametopos.rpl | 233 + .../unbound/testdata/val_cnametoposnowc.rpl | 265 + .../unbound/testdata/val_cnametoposwc.rpl | 239 + .../unbound/testdata/val_cnamewctonodata.rpl | 237 + external/unbound/testdata/val_cnamewctonx.rpl | 241 + .../unbound/testdata/val_cnamewctoposwc.rpl | 245 + external/unbound/testdata/val_deleg_nons.rpl | 271 + .../unbound/testdata/val_dnametoolong.rpl | 258 + external/unbound/testdata/val_dnametopos.rpl | 264 + .../unbound/testdata/val_dnametoposwc.rpl | 241 + external/unbound/testdata/val_dnamewc.rpl | 268 + .../unbound/testdata/val_ds_afterprime.rpl | 180 + external/unbound/testdata/val_ds_cname.rpl | 205 + external/unbound/testdata/val_ds_cnamesub.rpl | 278 + external/unbound/testdata/val_ds_gost.crpl | 209 + .../testdata/val_ds_gost_downgrade.crpl | 248 + external/unbound/testdata/val_ds_sha2.crpl | 205 + .../testdata/val_ds_sha2_downgrade.crpl | 229 + .../unbound/testdata/val_ds_sha2_lenient.crpl | 229 + external/unbound/testdata/val_dsnsec.rpl | 287 + external/unbound/testdata/val_entds.rpl | 277 + external/unbound/testdata/val_faildnskey.rpl | 170 + .../unbound/testdata/val_faildnskey_ok.rpl | 179 + external/unbound/testdata/val_fwdds.rpl | 231 + external/unbound/testdata/val_keyprefetch.rpl | 215 + .../testdata/val_keyprefetch_verify.rpl | 248 + external/unbound/testdata/val_mal_wc.rpl | 152 + external/unbound/testdata/val_negcache_ds.rpl | 216 + .../unbound/testdata/val_negcache_dssoa.rpl | 256 + .../unbound/testdata/val_negcache_nodata.rpl | 167 + .../unbound/testdata/val_negcache_nta.rpl | 121 + .../testdata/val_negcache_nxdomain.rpl | 110 + .../unbound/testdata/val_noadwhennodo.rpl | 152 + external/unbound/testdata/val_nodata.rpl | 150 + external/unbound/testdata/val_nodata_ent.rpl | 156 + .../unbound/testdata/val_nodata_entnx.rpl | 151 + .../unbound/testdata/val_nodata_entwc.rpl | 156 + .../unbound/testdata/val_nodata_failsig.rpl | 166 + .../unbound/testdata/val_nodata_failwc.rpl | 72 + .../unbound/testdata/val_nodata_hasdata.rpl | 164 + .../unbound/testdata/val_nodata_zonecut.rpl | 162 + external/unbound/testdata/val_nodatawc.rpl | 152 + .../unbound/testdata/val_nodatawc_badce.rpl | 164 + .../unbound/testdata/val_nodatawc_nodeny.rpl | 164 + .../unbound/testdata/val_nodatawc_one.rpl | 147 + external/unbound/testdata/val_nokeyprime.rpl | 163 + .../testdata/val_nsec3_b1_nameerror.rpl | 134 + .../testdata/val_nsec3_b1_nameerror_noce.rpl | 144 + .../testdata/val_nsec3_b1_nameerror_nonc.rpl | 146 + .../testdata/val_nsec3_b1_nameerror_nowc.rpl | 151 + .../testdata/val_nsec3_b21_nodataent.rpl | 117 + .../testdata/val_nsec3_b21_nodataent_wr.rpl | 135 + .../unbound/testdata/val_nsec3_b2_nodata.rpl | 117 + .../testdata/val_nsec3_b2_nodata_nons.rpl | 139 + .../unbound/testdata/val_nsec3_b3_optout.rpl | 214 + .../testdata/val_nsec3_b3_optout_negcache.rpl | 216 + .../testdata/val_nsec3_b3_optout_noce.rpl | 255 + .../testdata/val_nsec3_b3_optout_nonc.rpl | 256 + .../unbound/testdata/val_nsec3_b4_wild.rpl | 155 + .../unbound/testdata/val_nsec3_b4_wild_wr.rpl | 166 + .../testdata/val_nsec3_b5_wcnodata.rpl | 156 + .../testdata/val_nsec3_b5_wcnodata_noce.rpl | 165 + .../testdata/val_nsec3_b5_wcnodata_nonc.rpl | 165 + .../testdata/val_nsec3_b5_wcnodata_nowc.rpl | 167 + .../unbound/testdata/val_nsec3_cname_ds.rpl | 214 + .../unbound/testdata/val_nsec3_cname_par.rpl | 218 + .../unbound/testdata/val_nsec3_cname_sub.rpl | 228 + .../val_nsec3_cnametocnamewctoposwc.rpl | 209 + .../testdata/val_nsec3_entnodata_optout.rpl | 202 + .../val_nsec3_entnodata_optout_badopt.rpl | 198 + .../val_nsec3_entnodata_optout_match.rpl | 202 + .../unbound/testdata/val_nsec3_iter_high.rpl | 165 + .../testdata/val_nsec3_nodatawccname.rpl | 170 + external/unbound/testdata/val_nsec3_nods.rpl | 221 + .../testdata/val_nsec3_nods_badopt.rpl | 249 + .../testdata/val_nsec3_nods_badsig.rpl | 238 + .../testdata/val_nsec3_nods_negcache.rpl | 222 + .../unbound/testdata/val_nsec3_nods_soa.rpl | 253 + .../unbound/testdata/val_nsec3_optout_ad.rpl | 362 + .../testdata/val_nsec3_optout_cache.rpl | 280 + external/unbound/testdata/val_nsec3_wcany.rpl | 162 + .../testdata/val_nsec3_wcany_nodeny.rpl | 171 + external/unbound/testdata/val_nx.rpl | 155 + external/unbound/testdata/val_nx_failwc.rpl | 70 + external/unbound/testdata/val_nx_nodeny.rpl | 165 + external/unbound/testdata/val_nx_nowc.rpl | 165 + .../testdata/val_nx_nsec3_collision.rpl | 188 + .../unbound/testdata/val_nx_nsec3_params.rpl | 164 + .../unbound/testdata/val_nx_overreach.rpl | 166 + external/unbound/testdata/val_pos_truncns.rpl | 151 + external/unbound/testdata/val_positive.rpl | 153 + .../unbound/testdata/val_positive_nosigs.rpl | 181 + external/unbound/testdata/val_positive_wc.rpl | 162 + .../testdata/val_positive_wc_nodeny.rpl | 169 + external/unbound/testdata/val_qds_badanc.rpl | 223 + external/unbound/testdata/val_qds_oneanc.rpl | 223 + external/unbound/testdata/val_qds_twoanc.rpl | 224 + .../unbound/testdata/val_refer_unsignadd.rpl | 353 + external/unbound/testdata/val_referd.rpl | 175 + external/unbound/testdata/val_referglue.rpl | 300 + external/unbound/testdata/val_rrsig.rpl | 169 + external/unbound/testdata/val_secds.rpl | 214 + external/unbound/testdata/val_secds_nosig.rpl | 232 + external/unbound/testdata/val_spurious_ns.rpl | 154 + external/unbound/testdata/val_stub_noroot.rpl | 85 + external/unbound/testdata/val_stubds.rpl | 230 + .../unbound/testdata/val_ta_algo_dnskey.rpl | 184 + .../testdata/val_ta_algo_dnskey_dp.rpl | 185 + .../unbound/testdata/val_ta_algo_missing.rpl | 175 + .../testdata/val_ta_algo_missing_dp.rpl | 188 + external/unbound/testdata/val_twocname.rpl | 134 + .../unbound/testdata/val_unalgo_anchor.rpl | 152 + external/unbound/testdata/val_unalgo_dlv.rpl | 283 + external/unbound/testdata/val_unalgo_ds.rpl | 203 + external/unbound/testdata/val_unsec_cname.rpl | 362 + external/unbound/testdata/val_unsecds.rpl | 194 + .../unbound/testdata/val_unsecds_negcache.rpl | 195 + .../unbound/testdata/val_unsecds_qtypeds.rpl | 210 + external/unbound/testdata/val_wild_pos.rpl | 162 + external/unbound/testdata/version_bind.rpl | 74 + .../unbound/testdata/version_bind_hide.rpl | 71 + external/unbound/testdata/views.rpl | 211 + external/unbound/util/alloc.c | 69 +- external/unbound/util/alloc.h | 24 +- external/unbound/util/as112.c | 143 + external/unbound/util/as112.h | 57 + external/unbound/util/config_file.c | 668 +- external/unbound/util/config_file.h | 404 +- external/unbound/util/configlexer.c | 4825 +- external/unbound/util/configlexer.lex | 102 +- external/unbound/util/configparser.c | 5810 +- external/unbound/util/configparser.h | 822 +- external/unbound/util/configparser.y | 1142 +- external/unbound/util/data/dname.c | 49 +- external/unbound/util/data/dname.h | 16 +- external/unbound/util/data/msgencode.c | 111 +- external/unbound/util/data/msgparse.c | 143 +- external/unbound/util/data/msgparse.h | 45 +- external/unbound/util/data/msgreply.c | 407 +- external/unbound/util/data/msgreply.h | 246 +- external/unbound/util/data/packed_rrset.c | 5 +- external/unbound/util/data/packed_rrset.h | 21 +- external/unbound/util/fptr_wlist.c | 211 +- external/unbound/util/fptr_wlist.h | 74 +- external/unbound/util/iana_ports.inc | 45 +- external/unbound/util/locks.c | 34 +- external/unbound/util/locks.h | 91 +- external/unbound/util/log.c | 23 +- external/unbound/util/log.h | 9 + external/unbound/util/mini_event.c | 2 +- external/unbound/util/mini_event.h | 4 +- external/unbound/util/module.c | 167 + external/unbound/util/module.h | 321 +- external/unbound/util/net_help.c | 314 +- external/unbound/util/net_help.h | 50 +- external/unbound/util/netevent.c | 1642 +- external/unbound/util/netevent.h | 107 +- external/unbound/util/rbtree.c | 106 +- external/unbound/util/rbtree.h | 58 +- external/unbound/util/shm_side/shm_main.c | 294 + external/unbound/util/shm_side/shm_main.h | 68 + external/unbound/util/storage/dnstree.c | 39 +- external/unbound/util/storage/dnstree.h | 39 +- external/unbound/util/storage/lookup3.c | 24 +- external/unbound/util/storage/lruhash.c | 103 +- external/unbound/util/storage/lruhash.h | 80 +- external/unbound/util/storage/slabhash.c | 18 +- external/unbound/util/storage/slabhash.h | 18 +- external/unbound/util/timehist.c | 8 +- external/unbound/util/timehist.h | 4 +- external/unbound/util/tube.c | 26 +- external/unbound/util/tube.h | 13 +- external/unbound/util/ub_event.c | 450 + external/unbound/util/ub_event.h | 127 + external/unbound/util/ub_event_pluggable.c | 692 + external/unbound/util/winsock_event.c | 7 +- external/unbound/util/winsock_event.h | 4 +- external/unbound/validator/autotrust.c | 45 +- external/unbound/validator/autotrust.h | 13 +- external/unbound/validator/val_anchor.c | 100 +- external/unbound/validator/val_anchor.h | 34 +- external/unbound/validator/val_neg.c | 316 +- external/unbound/validator/val_neg.h | 19 +- external/unbound/validator/val_nsec.c | 22 +- external/unbound/validator/val_nsec.h | 4 +- external/unbound/validator/val_nsec3.c | 39 +- external/unbound/validator/val_nsec3.h | 9 +- external/unbound/validator/val_secalgo.c | 418 +- external/unbound/validator/val_secalgo.h | 8 + external/unbound/validator/val_sigcrypt.c | 144 +- external/unbound/validator/val_sigcrypt.h | 24 +- external/unbound/validator/val_utils.c | 127 +- external/unbound/validator/val_utils.h | 39 +- external/unbound/validator/validator.c | 303 +- external/unbound/validator/validator.h | 22 +- external/unbound/winrc/combined.ico | Bin 10535 -> 10534 bytes external/unbound/winrc/gen_msg.bin | Bin 117 -> 116 bytes external/unbound/winrc/setup.nsi | 20 +- external/unbound/winrc/setup_left.bmp | Bin 154543 -> 154542 bytes external/unbound/winrc/setup_top.bmp | Bin 25819 -> 25818 bytes .../unbound/winrc/unbound-control-setup.cmd | 2 +- external/unbound/winrc/unbound16.ico | Bin 895 -> 894 bytes external/unbound/winrc/unbound32.ico | Bin 3263 -> 3262 bytes external/unbound/winrc/unbound48.ico | Bin 7359 -> 7358 bytes external/unbound/winrc/unbound64.ico | Bin 12863 -> 12862 bytes external/unbound/winrc/unbound64.png | Bin 6241 -> 6240 bytes external/unbound/winrc/w_inst.c | 4 +- external/unbound/winrc/win_svc.c | 25 +- include/INode.h | 1 + include/IWallet.h | 1 + src/CMakeLists.txt | 1 + src/blockchain_db/berkeleydb/db_bdb.h | 1 + src/blockchain_db/blockchain_db.cpp | 1 + src/blockchain_db/blockchain_db.h | 1 + src/blockchain_db/db_types.h | 1 + src/blockchain_db/lmdb/db_lmdb.cpp | 1 + src/blockchain_db/lmdb/db_lmdb.h | 1 + .../blockchain_export.cpp | 1 + .../blockchain_import.cpp | 1 + .../blockchain_utilities.h | 1 + src/blockchain_utilities/blocksdat_file.cpp | 1 + src/blockchain_utilities/bootstrap_file.cpp | 1 + src/blockchain_utilities/bootstrap_file.h | 1 + .../bootstrap_serialization.h | 1 + src/blockchain_utilities/cn_deserialize.cpp | 1 + src/blockchain_utilities/fake_core.h | 1 + src/common/base58.cpp | 1 + src/common/base58.h | 1 + src/common/command_line.cpp | 1 + src/common/http_connection.h | 1 + src/common/i18n.cpp | 1 + src/common/i18n.h | 1 + src/common/pod-class.h | 1 + src/common/rpc_client.h | 1 + src/common/scoped_message_writer.h | 1 + src/common/task_region.h | 1 + src/common/thread_group.cpp | 1 + src/common/thread_group.h | 1 + ...unordered_containers_boost_serialization.h | 1 + src/common/util.cpp | 1 + src/common/util.h | 1 + src/common/varint.h | 1 + src/crypto/blake256.c | 1 + src/crypto/blake256.h | 1 + src/crypto/chacha8.h | 1 + src/crypto/crypto-ops-data.c | 1 + src/crypto/crypto-ops.c | 1 + src/crypto/crypto-ops.h | 1 + src/crypto/crypto_ops_builder/crypto-ops.h | 1 + .../ref10CommentedCombined/crypto-ops.h | 1 + src/crypto/generic-ops.h | 1 + src/crypto/groestl.h | 1 + src/crypto/groestl_tables.h | 1 + src/crypto/hash-ops.h | 1 + src/crypto/hash.c | 1 + src/crypto/hash.h | 1 + src/crypto/initializer.h | 1 + src/crypto/random.c | 1 + src/crypto/random.h | 1 + src/crypto/skein_port.h | 1 + src/crypto/tree-hash.c | 1 + src/cryptonote_config.h | 1 + src/cryptonote_core/account.h | 1 + .../account_boost_serialization.h | 1 + src/cryptonote_core/blockchain.cpp | 1 + src/cryptonote_core/blockchain.h | 1 + .../blockchain_storage_boost_serialization.h | 1 + src/cryptonote_core/checkpoints.cpp | 1 + src/cryptonote_core/checkpoints.h | 1 + src/cryptonote_core/connection_context.h | 1 + src/cryptonote_core/cryptonote_stat_info.h | 1 + src/cryptonote_core/difficulty.cpp | 1 + src/cryptonote_core/difficulty.h | 1 + src/cryptonote_core/hardfork.cpp | 1 + src/cryptonote_core/hardfork.h | 1 + src/cryptonote_core/miner.h | 1 + src/cryptonote_core/tx_pool.cpp | 1 + src/cryptonote_core/tx_pool.h | 1 + src/cryptonote_core/verification_context.h | 1 + src/cryptonote_protocol/blobdatatype.h | 1 + .../cryptonote_protocol_defs.h | 1 + .../cryptonote_protocol_handler-base.cpp | 1 + .../cryptonote_protocol_handler.h | 1 + .../cryptonote_protocol_handler.inl | 1 + .../cryptonote_protocol_handler_common.h | 1 + src/daemon/CMakeLists.txt | 2 + src/daemon/command_line_args.h | 1 + src/daemon/command_parser_executor.h | 1 + src/daemon/command_server.cpp | 1 + src/daemon/command_server.h | 1 + src/daemon/core.h | 1 + src/daemon/daemon.cpp | 7 + src/daemon/main.cpp | 2 + src/daemon/node_rpc.h | 105 + src/daemon/p2p.h | 1 + src/daemon/protocol.h | 1 + src/daemon/rpc.h | 5 +- src/daemon/rpc_command_executor.h | 1 + src/daemonizer/daemonizer.h | 1 + src/daemonizer/posix_fork.h | 1 + src/daemonizer/windows_daemonizer.inl | 1 + src/daemonizer/windows_service.cpp | 1 + src/daemonizer/windows_service.h | 1 + src/daemonizer/windows_service_runner.h | 1 + src/mnemonics/electrum-words.cpp | 1 + src/mnemonics/electrum-words.h | 1 + src/mnemonics/english.h | 1 + src/mnemonics/german.h | 1 + src/mnemonics/italian.h | 1 + src/mnemonics/japanese.h | 1 + src/mnemonics/language_base.h | 1 + src/mnemonics/portuguese.h | 1 + src/mnemonics/russian.h | 1 + src/mnemonics/singleton.h | 1 + src/mnemonics/spanish.h | 1 + src/node_rpc/CMakeLists.txt | 54 + src/node_rpc/node_rpc_server.cpp | 347 + src/node_rpc/node_rpc_server.h | 118 + src/node_rpc/node_rpc_server_commands_defs.h | 237 + src/node_rpc/node_rpc_server_error_codes.h | 43 + src/p2p/connection_basic.cpp | 1 + src/p2p/connection_basic.hpp | 1 + src/p2p/net_node.h | 1 + src/p2p/net_node.inl | 1 + src/p2p/net_node_common.h | 1 + src/p2p/net_peerlist.h | 1 + src/p2p/net_peerlist_boost_serialization.h | 1 + src/p2p/network_throttle-detail.cpp | 1 + src/p2p/network_throttle-detail.hpp | 1 + src/p2p/network_throttle.cpp | 1 + src/p2p/network_throttle.hpp | 1 + src/p2p/p2p_protocol_defs.h | 1 + src/p2p/stdafx.h | 1 + src/platform/mingw/alloca.h | 1 + src/platform/msc/alloca.h | 1 + src/platform/msc/inline_c.h | 1 + src/platform/msc/stdbool.h | 1 + src/ringct/rctCryptoOps.c | 1 + src/ringct/rctCryptoOps.h | 1 + src/rpc/core_rpc_server.cpp | 7 + src/rpc/core_rpc_server.h | 2 + src/serialization/binary_archive.h | 1 + src/serialization/binary_utils.h | 1 + src/serialization/crypto.h | 1 + src/serialization/debug_archive.h | 1 + src/serialization/json_archive.h | 1 + src/serialization/json_utils.h | 1 + src/serialization/serialization.h | 1 + src/serialization/string.h | 1 + src/serialization/variant.h | 1 + src/serialization/vector.h | 1 + src/version.h | 2 +- src/version.h.in | 2 +- src/version.rc | 8 +- src/wallet/api/utils.cpp | 1 + src/wallet/wallet_args.cpp | 1 + src/wallet/wallet_args.h | 1 + src/wallet/wallet_rpc_server.cpp | 2 + 1364 files changed, 260890 insertions(+), 14094 deletions(-) create mode 100644 .gitmodules create mode 100644 external/db_drivers/liblmdb/.gitignore create mode 100644 external/miniupnpc/.gitignore create mode 100644 external/miniupnpc/Makefile create mode 100644 external/miniupnpc/java/.gitignore create mode 100644 external/unbound/.gitattributes create mode 100644 external/unbound/.gitignore create mode 100644 external/unbound/cachedb/cachedb.c create mode 100644 external/unbound/cachedb/cachedb.h create mode 100644 external/unbound/cachedb/redis.c create mode 100644 external/unbound/cachedb/redis.h create mode 100644 external/unbound/compat/strsep.c create mode 100644 external/unbound/contrib/fastrpz.patch create mode 100644 external/unbound/contrib/libunbound.pc.in create mode 100644 external/unbound/contrib/libunbound.so.conf create mode 100644 external/unbound/contrib/redirect-bogus.patch create mode 100644 external/unbound/contrib/unbound-querycachedb.py create mode 100644 external/unbound/contrib/unbound.service.in create mode 100644 external/unbound/contrib/unbound.socket.in create mode 100644 external/unbound/dnscrypt/cert.h create mode 100644 external/unbound/dnscrypt/dnscrypt.c create mode 100644 external/unbound/dnscrypt/dnscrypt.h create mode 100644 external/unbound/dnscrypt/dnscrypt.m4 create mode 100644 external/unbound/dnscrypt/dnscrypt_config.h.in create mode 100644 external/unbound/dnscrypt/testdata/gencert.sh create mode 100644 external/unbound/dnscrypt/testdata/keys1/public.key create mode 100644 external/unbound/dnscrypt/testdata/keys1/secret.key create mode 100644 external/unbound/dnscrypt/testdata/keys2/public.key create mode 100644 external/unbound/dnscrypt/testdata/keys2/secret.key create mode 100644 external/unbound/doc/CNAME-basedRedirectionDesignNotes.pdf create mode 100644 external/unbound/doc/IP-BasedActions.pdf create mode 100644 external/unbound/edns-subnet/addrtree.c create mode 100644 external/unbound/edns-subnet/addrtree.h create mode 100644 external/unbound/edns-subnet/edns-subnet.c create mode 100644 external/unbound/edns-subnet/edns-subnet.h create mode 100644 external/unbound/edns-subnet/subnet-whitelist.c create mode 100644 external/unbound/edns-subnet/subnet-whitelist.h create mode 100644 external/unbound/edns-subnet/subnetmod.c create mode 100644 external/unbound/edns-subnet/subnetmod.h create mode 100644 external/unbound/ipsecmod/ipsecmod-whitelist.c create mode 100644 external/unbound/ipsecmod/ipsecmod-whitelist.h create mode 100644 external/unbound/ipsecmod/ipsecmod.c create mode 100644 external/unbound/ipsecmod/ipsecmod.h create mode 100644 external/unbound/pythonmod/doc/examples/example5.rst create mode 100644 external/unbound/pythonmod/doc/examples/example6.rst create mode 100644 external/unbound/pythonmod/examples/edns.py create mode 100644 external/unbound/pythonmod/examples/inplace_callbacks.py create mode 100644 external/unbound/pythonmod/test-edns.conf create mode 100644 external/unbound/pythonmod/test-inplace_callbacks.conf create mode 100644 external/unbound/respip/respip.c create mode 100644 external/unbound/respip/respip.h create mode 100644 external/unbound/services/authzone.c create mode 100644 external/unbound/services/authzone.h create mode 100644 external/unbound/services/view.c create mode 100644 external/unbound/services/view.h create mode 100644 external/unbound/systemd.m4 create mode 100644 external/unbound/testcode/mini_tdir.sh create mode 100644 external/unbound/testcode/unitauth.c create mode 100644 external/unbound/testcode/unitecs.c create mode 100644 external/unbound/testdata/00-lint.tdir/00-lint.dsc create mode 100644 external/unbound/testdata/00-lint.tdir/00-lint.test create mode 100644 external/unbound/testdata/01-doc.tdir/01-doc.dsc create mode 100644 external/unbound/testdata/01-doc.tdir/01-doc.test create mode 100644 external/unbound/testdata/02-unittest.tdir/02-unittest.dsc create mode 100644 external/unbound/testdata/02-unittest.tdir/02-unittest.test create mode 100644 external/unbound/testdata/03-testbound.tdir/03-testbound.dsc create mode 100644 external/unbound/testdata/03-testbound.tdir/03-testbound.test create mode 100644 external/unbound/testdata/04-checkconf.tdir/04-checkconf.dsc create mode 100644 external/unbound/testdata/04-checkconf.tdir/04-checkconf.test create mode 100644 external/unbound/testdata/04-checkconf.tdir/bad.badfwd create mode 100644 external/unbound/testdata/04-checkconf.tdir/bad.badif create mode 100644 external/unbound/testdata/04-checkconf.tdir/bad.badip create mode 100644 external/unbound/testdata/04-checkconf.tdir/bad.bind create mode 100644 external/unbound/testdata/04-checkconf.tdir/bad.user create mode 100644 external/unbound/testdata/04-checkconf.tdir/good.all create mode 100644 external/unbound/testdata/04-checkconf.tdir/good.ifport create mode 100644 external/unbound/testdata/04-checkconf.tdir/good.include create mode 100644 external/unbound/testdata/04-checkconf.tdir/warn.algo create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.dsc create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.hosts create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.post create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.pre create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.test create mode 100644 external/unbound/testdata/05-asynclook.tdir/05-asynclook.testns create mode 100644 external/unbound/testdata/06-ianaports.tdir/06-ianaports.dsc create mode 100644 external/unbound/testdata/06-ianaports.tdir/06-ianaports.test create mode 100644 external/unbound/testdata/07-confroot.tdir/07-confroot.dsc create mode 100644 external/unbound/testdata/07-confroot.tdir/07-confroot.test create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.dsc create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.hosts create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.post create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.pre create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.test create mode 100644 external/unbound/testdata/08-host-lib.tdir/08-host-lib.testns create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.conf create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.dsc create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.post create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.pre create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test create mode 100644 external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.testns create mode 100644 external/unbound/testdata/09-unbound-control.tdir/bad_control.key create mode 100644 external/unbound/testdata/09-unbound-control.tdir/bad_control.pem create mode 100644 external/unbound/testdata/09-unbound-control.tdir/bad_server.key create mode 100644 external/unbound/testdata/09-unbound-control.tdir/bad_server.pem create mode 100644 external/unbound/testdata/09-unbound-control.tdir/local_data create mode 100644 external/unbound/testdata/09-unbound-control.tdir/local_data_remove create mode 100644 external/unbound/testdata/09-unbound-control.tdir/local_zones create mode 100644 external/unbound/testdata/09-unbound-control.tdir/local_zones_remove create mode 100644 external/unbound/testdata/09-unbound-control.tdir/unbound_control.key create mode 100644 external/unbound/testdata/09-unbound-control.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/09-unbound-control.tdir/unbound_server.key create mode 100644 external/unbound/testdata/09-unbound-control.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.conf create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.dsc create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.post create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.pre create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.test create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.testns create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/bad.p7s create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/bad.xml create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.p7s create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.xml create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/root.p7s create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/root.xml create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.ds create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.private create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.pem create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound_control.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound_server.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/petal.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/petal.pem create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/signit create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/test_cert.key create mode 100644 external/unbound/testdata/10-unbound-anchor.tdir/test_cert.pem create mode 100644 external/unbound/testdata/Kexample.com.+003+02854.ds create mode 100644 external/unbound/testdata/Kexample.com.+003+02854.key create mode 100644 external/unbound/testdata/Kexample.com.+003+02854.private create mode 100644 external/unbound/testdata/Kexample.com.+005+16486.ds create mode 100644 external/unbound/testdata/Kexample.com.+005+16486.key create mode 100644 external/unbound/testdata/Kexample.com.+005+16486.private create mode 100644 external/unbound/testdata/Kexample.com.+005+30899.ds create mode 100644 external/unbound/testdata/Kexample.com.+005+30899.key create mode 100644 external/unbound/testdata/Kexample.com.+005+30899.private create mode 100644 external/unbound/testdata/Kexample.com.+005+55582.ds create mode 100644 external/unbound/testdata/Kexample.com.+005+55582.key create mode 100644 external/unbound/testdata/Kexample.com.+005+55582.private create mode 100644 external/unbound/testdata/Kexample.com.+005+60946.ds create mode 100644 external/unbound/testdata/Kexample.com.+005+60946.key create mode 100644 external/unbound/testdata/Kexample.com.+005+60946.private create mode 100644 external/unbound/testdata/Kexample.com.+007+57024.ds create mode 100644 external/unbound/testdata/Kexample.com.+007+57024.key create mode 100644 external/unbound/testdata/Kexample.com.+007+57024.private create mode 100644 external/unbound/testdata/Kexample.com.+008+01443.ds create mode 100644 external/unbound/testdata/Kexample.com.+008+01443.key create mode 100644 external/unbound/testdata/Kexample.com.+008+01443.private create mode 100644 external/unbound/testdata/Kexample.com.+008+29332.ds create mode 100644 external/unbound/testdata/Kexample.com.+008+29332.key create mode 100644 external/unbound/testdata/Kexample.com.+008+29332.private create mode 100644 external/unbound/testdata/Kexample.com.+008+55566.ds create mode 100644 external/unbound/testdata/Kexample.com.+008+55566.key create mode 100644 external/unbound/testdata/Kexample.com.+008+55566.private create mode 100644 external/unbound/testdata/Kexample.com.+009+48886.ds create mode 100644 external/unbound/testdata/Kexample.com.+009+48886.key create mode 100644 external/unbound/testdata/Kexample.com.+009+48886.private create mode 100644 external/unbound/testdata/Kexample.com.+012+60385.ds create mode 100644 external/unbound/testdata/Kexample.com.+012+60385.key create mode 100644 external/unbound/testdata/Kexample.com.+012+60385.private create mode 100644 external/unbound/testdata/acl.rpl create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.conf create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.dsc create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.post create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.pre create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.test create mode 100644 external/unbound/testdata/auth_axfr.tdir/auth_axfr.testns create mode 100644 external/unbound/testdata/auth_https.tdir/127.0.0.1/example.com.zone create mode 100644 external/unbound/testdata/auth_https.tdir/auth_https.conf create mode 100644 external/unbound/testdata/auth_https.tdir/auth_https.dsc create mode 100644 external/unbound/testdata/auth_https.tdir/auth_https.post create mode 100644 external/unbound/testdata/auth_https.tdir/auth_https.pre create mode 100644 external/unbound/testdata/auth_https.tdir/auth_https.test create mode 100644 external/unbound/testdata/auth_https.tdir/petal.key create mode 100644 external/unbound/testdata/auth_https.tdir/petal.pem create mode 100644 external/unbound/testdata/auth_xfr.rpl create mode 100644 external/unbound/testdata/auth_xfr_host.rpl create mode 100644 external/unbound/testdata/auth_xfr_ixfr.rpl create mode 100644 external/unbound/testdata/auth_xfr_ixfrisaxfr.rpl create mode 100644 external/unbound/testdata/auth_xfr_ixfrmismatch.rpl create mode 100644 external/unbound/testdata/auth_xfr_ixfrnotimpl.rpl create mode 100644 external/unbound/testdata/auth_xfr_notify.rpl create mode 100644 external/unbound/testdata/auth_xfr_probesoa.rpl create mode 100644 external/unbound/testdata/auth_zonefile.rpl create mode 100644 external/unbound/testdata/auth_zonefile_dnssec.rpl create mode 100644 external/unbound/testdata/auth_zonefile_dnssec_fail.rpl create mode 100644 external/unbound/testdata/auth_zonefile_down.rpl create mode 100644 external/unbound/testdata/auth_zonefile_noup.rpl create mode 100644 external/unbound/testdata/auth_zonefile_root.rpl create mode 100644 external/unbound/testdata/autotrust_10key.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_2exceed.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_early.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_nosign.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_nosignnew.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_once.rpl create mode 100644 external/unbound/testdata/autotrust_addpend_twice.rpl create mode 100644 external/unbound/testdata/autotrust_init.rpl create mode 100644 external/unbound/testdata/autotrust_init_ds.rpl create mode 100644 external/unbound/testdata/autotrust_init_fail.rpl create mode 100644 external/unbound/testdata/autotrust_init_failsig.rpl create mode 100644 external/unbound/testdata/autotrust_init_legacy.rpl create mode 100644 external/unbound/testdata/autotrust_init_sigs.rpl create mode 100644 external/unbound/testdata/autotrust_init_zsk.rpl create mode 100644 external/unbound/testdata/autotrust_missing.rpl create mode 100644 external/unbound/testdata/autotrust_missing_all.rpl create mode 100644 external/unbound/testdata/autotrust_missing_returns.rpl create mode 100644 external/unbound/testdata/autotrust_probefail.rpl create mode 100644 external/unbound/testdata/autotrust_probefailsig.rpl create mode 100644 external/unbound/testdata/autotrust_revoked_use.rpl create mode 100644 external/unbound/testdata/autotrust_revoked_with_invalid.rpl create mode 100644 external/unbound/testdata/autotrust_revtp.rpl create mode 100644 external/unbound/testdata/autotrust_revtp_read.rpl create mode 100644 external/unbound/testdata/autotrust_revtp_use.rpl create mode 100644 external/unbound/testdata/autotrust_rollalgo.rpl create mode 100644 external/unbound/testdata/autotrust_rollalgo_unknown.rpl create mode 100644 external/unbound/testdata/autotrust_rollover.rpl create mode 100644 external/unbound/testdata/autotrust_valid_use.rpl create mode 100644 external/unbound/testdata/black_data.rpl create mode 100644 external/unbound/testdata/black_dnskey.rpl create mode 100644 external/unbound/testdata/black_ds.rpl create mode 100644 external/unbound/testdata/black_ds_entry.rpl create mode 100644 external/unbound/testdata/black_ent.rpl create mode 100644 external/unbound/testdata/black_key_entry.rpl create mode 100644 external/unbound/testdata/black_prime.rpl create mode 100644 external/unbound/testdata/black_prime_entry.rpl create mode 100644 external/unbound/testdata/chaos_trustanchor.rpl create mode 100644 external/unbound/testdata/common.sh create mode 100644 external/unbound/testdata/ctrl_itr.tdir/bad_control.key create mode 100644 external/unbound/testdata/ctrl_itr.tdir/bad_control.pem create mode 100644 external/unbound/testdata/ctrl_itr.tdir/bad_server.key create mode 100644 external/unbound/testdata/ctrl_itr.tdir/bad_server.pem create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.conf create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.dsc create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.post create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.pre create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.test create mode 100644 external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.testns create mode 100644 external/unbound/testdata/ctrl_itr.tdir/unbound_control.key create mode 100644 external/unbound/testdata/ctrl_itr.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/ctrl_itr.tdir/unbound_server.key create mode 100644 external/unbound/testdata/ctrl_itr.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/bad_control.key create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/bad_control.pem create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/bad_server.key create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/bad_server.pem create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.conf create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.dsc create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.post create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.pre create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.test create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.testns create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/unbound_control.key create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/unbound_server.key create mode 100644 external/unbound/testdata/ctrl_pipe.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/dlv_anchor.rpl create mode 100644 external/unbound/testdata/dlv_ask_higher.rpl create mode 100644 external/unbound/testdata/dlv_below_ta.rpl create mode 100644 external/unbound/testdata/dlv_delegation.rpl create mode 100644 external/unbound/testdata/dlv_ds_lookup.rpl create mode 100644 external/unbound/testdata/dlv_insecure.rpl create mode 100644 external/unbound/testdata/dlv_insecure_negcache.rpl create mode 100644 external/unbound/testdata/dlv_keyretry.rpl create mode 100644 external/unbound/testdata/dlv_negnx.rpl create mode 100644 external/unbound/testdata/dlv_optout.rpl create mode 100644 external/unbound/testdata/dlv_remove.rpl create mode 100644 external/unbound/testdata/dlv_remove_empty.rpl create mode 100644 external/unbound/testdata/dlv_remove_nodel.rpl create mode 100644 external/unbound/testdata/dlv_remove_pos.rpl create mode 100644 external/unbound/testdata/dlv_unused.rpl create mode 100644 external/unbound/testdata/dns64_lookup.rpl create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/1.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/1.key create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/1_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/1_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/2.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/2.key create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/2_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/2_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.conf create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.dsc create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.post create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.pre create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.test create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.testns create mode 100644 external/unbound/testdata/dnscrypt_cert.tdir/precheck.sh create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.key create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.key create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/2_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/2_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.conf create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.dsc create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.post create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.pre create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.test create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.testns create mode 100644 external/unbound/testdata/dnscrypt_cert_chacha.tdir/precheck.sh create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/1.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/1.key create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/1_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/1_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/2.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/2.key create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/2_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/2_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.conf create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.dsc create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.post create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.pre create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.test create mode 100644 external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.testns create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/1.key create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/2.key create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/2_chacha.cert create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/2_salsa.cert create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.conf create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.dsc create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.post create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.pre create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.test create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.testns create mode 100644 external/unbound/testdata/dnscrypt_queries_chacha.tdir/precheck.sh create mode 100644 external/unbound/testdata/domain_insec_dlv.rpl create mode 100644 external/unbound/testdata/domain_insec_ds.rpl create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.conf create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.dsc create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.post create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.pre create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.stub1 create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.stub2 create mode 100644 external/unbound/testdata/edns_cache.tdir/edns_cache.test create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.conf create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.dsc create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.post create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.pre create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.test create mode 100644 external/unbound/testdata/edns_lame.tdir/edns_lame.testns create mode 100644 external/unbound/testdata/fetch_glue.rpl create mode 100644 external/unbound/testdata/fetch_glue_cname.rpl create mode 100644 external/unbound/testdata/fwd.rpl create mode 100644 external/unbound/testdata/fwd_0ttlservfail.rpl create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.conf create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.dsc create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.post create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.pre create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.test create mode 100644 external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.testns create mode 100644 external/unbound/testdata/fwd_any.rpl create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.conf create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.dsc create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.post create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.pre create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.test create mode 100644 external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.testns create mode 100644 external/unbound/testdata/fwd_bogus.tdir/unbound_control.key create mode 100644 external/unbound/testdata/fwd_bogus.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/fwd_bogus.tdir/unbound_server.key create mode 100644 external/unbound/testdata/fwd_bogus.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/fwd_cached.rpl create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.conf create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.dsc create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.post create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.pre create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.test create mode 100644 external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.testns create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.conf create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.dsc create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.post create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.pre create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.test create mode 100644 external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.testns create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.conf create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.dsc create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.post create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.pre create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.test create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns create mode 100644 external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns2 create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.conf create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.dsc create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.post create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.pre create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.test create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns create mode 100644 external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns2 create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.conf create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.dsc create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.good create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.post create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.pre create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.test create mode 100644 external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.testns create mode 100644 external/unbound/testdata/fwd_droptoomany.rpl create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.conf create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.dsc create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.post create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.pre create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.test create mode 100644 external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.testns create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.conf create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.dsc create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.post create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.pre create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.test create mode 100644 external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.testns create mode 100644 external/unbound/testdata/fwd_error.rpl create mode 100644 external/unbound/testdata/fwd_jostle.rpl create mode 100644 external/unbound/testdata/fwd_jostle_out.rpl create mode 100644 external/unbound/testdata/fwd_lrudrop.rpl create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.conf create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.dsc create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.post create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.pre create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.test create mode 100644 external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.testns create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.conf create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.dsc create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.post create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.pre create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.test create mode 100644 external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.testns create mode 100644 external/unbound/testdata/fwd_notcached.rpl create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.conf create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.dsc create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.post create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.pre create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.test create mode 100644 external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.testns create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.conf create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.dsc create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.post create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.pre create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.test create mode 100644 external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.testns create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.conf create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.dsc create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.post create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.pre create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.test create mode 100644 external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.testns create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.conf create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.dsc create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.post create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.pre create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.test create mode 100644 external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.testns create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.conf create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.dsc create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.post create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.pre create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.test create mode 100644 external/unbound/testdata/fwd_three.tdir/fwd_three.testns create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.conf create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.dsc create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.post create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.pre create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.test create mode 100644 external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.testns create mode 100644 external/unbound/testdata/fwd_timeout.rpl create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.conf create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.dsc create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.post create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.pre create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.test create mode 100644 external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.testns create mode 100644 external/unbound/testdata/fwd_two.rpl create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.conf create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.dsc create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.post create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.pre create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.test create mode 100644 external/unbound/testdata/fwd_udp.tdir/fwd_udp.testns create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.conf create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.dsc create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.post create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.pre create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.test create mode 100644 external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.testns create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.conf create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.dsc create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.post create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.pre create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.test create mode 100644 external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.testns create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.conf create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.dsc create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.post create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.pre create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.test create mode 100644 external/unbound/testdata/fwd_zero.tdir/fwd_zero.testns create mode 100644 external/unbound/testdata/fwddlv_parse.rpl create mode 100644 external/unbound/testdata/host_file.template create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.dsc create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.hosts create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.post create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.pre create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.test create mode 100644 external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.testns create mode 100644 external/unbound/testdata/ipsecmod_bogus_ipseckey.crpl create mode 100644 external/unbound/testdata/ipsecmod_enabled.crpl create mode 100644 external/unbound/testdata/ipsecmod_hook.sh create mode 100644 external/unbound/testdata/ipsecmod_ignore_bogus_ipseckey.crpl create mode 100644 external/unbound/testdata/ipsecmod_max_ttl.crpl create mode 100644 external/unbound/testdata/ipsecmod_strict.crpl create mode 100644 external/unbound/testdata/ipsecmod_whitelist.crpl create mode 100644 external/unbound/testdata/iter_class_any.rpl create mode 100644 external/unbound/testdata/iter_cname_cache.rpl create mode 100644 external/unbound/testdata/iter_cname_double.rpl create mode 100644 external/unbound/testdata/iter_cname_nx.rpl create mode 100644 external/unbound/testdata/iter_cname_qnamecopy.rpl create mode 100644 external/unbound/testdata/iter_cycle.rpl create mode 100644 external/unbound/testdata/iter_cycle_noh.rpl create mode 100644 external/unbound/testdata/iter_dname_insec.rpl create mode 100644 external/unbound/testdata/iter_dname_yx.rpl create mode 100644 external/unbound/testdata/iter_dnsseclame_bug.rpl create mode 100644 external/unbound/testdata/iter_dnsseclame_ds.rpl create mode 100644 external/unbound/testdata/iter_dnsseclame_ds_ok.rpl create mode 100644 external/unbound/testdata/iter_dnsseclame_ta.rpl create mode 100644 external/unbound/testdata/iter_dnsseclame_ta_ok.rpl create mode 100644 external/unbound/testdata/iter_domain_sale.rpl create mode 100644 external/unbound/testdata/iter_domain_sale_nschange.rpl create mode 100644 external/unbound/testdata/iter_donotq127.rpl create mode 100644 external/unbound/testdata/iter_dp_turnsuseless.rpl create mode 100644 external/unbound/testdata/iter_ds_locate_ns.rpl create mode 100644 external/unbound/testdata/iter_ds_locate_ns_cname.rpl create mode 100644 external/unbound/testdata/iter_ds_locate_ns_detach.rpl create mode 100644 external/unbound/testdata/iter_ds_locate_ns_nosoa.rpl create mode 100644 external/unbound/testdata/iter_ds_referral.rpl create mode 100644 external/unbound/testdata/iter_ds_reply.rpl create mode 100644 external/unbound/testdata/iter_emptydp.rpl create mode 100644 external/unbound/testdata/iter_emptydp_for_glue.rpl create mode 100644 external/unbound/testdata/iter_fwdfirst.rpl create mode 100644 external/unbound/testdata/iter_fwdfirstequal.rpl create mode 100644 external/unbound/testdata/iter_fwdstub.rpl create mode 100644 external/unbound/testdata/iter_fwdstubroot.rpl create mode 100644 external/unbound/testdata/iter_got6only.rpl create mode 100644 external/unbound/testdata/iter_hint_lame.rpl create mode 100644 external/unbound/testdata/iter_lame_aaaa.rpl create mode 100644 external/unbound/testdata/iter_lame_noaa.rpl create mode 100644 external/unbound/testdata/iter_lame_nosoa.rpl create mode 100644 external/unbound/testdata/iter_lamescrub.rpl create mode 100644 external/unbound/testdata/iter_mod.rpl create mode 100644 external/unbound/testdata/iter_ns_badip.rpl create mode 100644 external/unbound/testdata/iter_ns_spoof.rpl create mode 100644 external/unbound/testdata/iter_pc_a.rpl create mode 100644 external/unbound/testdata/iter_pc_aaaa.rpl create mode 100644 external/unbound/testdata/iter_pcdiff.rpl create mode 100644 external/unbound/testdata/iter_pcdirect.rpl create mode 100644 external/unbound/testdata/iter_pclame.rpl create mode 100644 external/unbound/testdata/iter_pcname.rpl create mode 100644 external/unbound/testdata/iter_pcnamech.rpl create mode 100644 external/unbound/testdata/iter_pcnamechrec.rpl create mode 100644 external/unbound/testdata/iter_pcnamerec.rpl create mode 100644 external/unbound/testdata/iter_pcttl.rpl create mode 100644 external/unbound/testdata/iter_prefetch.rpl create mode 100644 external/unbound/testdata/iter_prefetch_change.rpl create mode 100644 external/unbound/testdata/iter_prefetch_change2.rpl create mode 100644 external/unbound/testdata/iter_prefetch_childns.rpl create mode 100644 external/unbound/testdata/iter_prefetch_fail.rpl create mode 100644 external/unbound/testdata/iter_prefetch_ns.rpl create mode 100644 external/unbound/testdata/iter_primenoglue.rpl create mode 100644 external/unbound/testdata/iter_privaddr.rpl create mode 100644 external/unbound/testdata/iter_ranoaa_lame.rpl create mode 100644 external/unbound/testdata/iter_reclame_one.rpl create mode 100644 external/unbound/testdata/iter_reclame_two.rpl create mode 100644 external/unbound/testdata/iter_recurse.rpl create mode 100644 external/unbound/testdata/iter_req_qname.rpl create mode 100644 external/unbound/testdata/iter_resolve.rpl create mode 100644 external/unbound/testdata/iter_resolve_minimised.rpl create mode 100644 external/unbound/testdata/iter_resolve_minimised_nx.rpl create mode 100644 external/unbound/testdata/iter_resolve_minimised_refused.rpl create mode 100644 external/unbound/testdata/iter_resolve_minimised_timeout.rpl create mode 100644 external/unbound/testdata/iter_scrub_cname_an.rpl create mode 100644 external/unbound/testdata/iter_scrub_dname_insec.rpl create mode 100644 external/unbound/testdata/iter_scrub_dname_rev.rpl create mode 100644 external/unbound/testdata/iter_scrub_dname_sec.rpl create mode 100644 external/unbound/testdata/iter_scrub_ns.rpl create mode 100644 external/unbound/testdata/iter_scrub_ns_fwd.rpl create mode 100644 external/unbound/testdata/iter_scrub_ns_side.rpl create mode 100644 external/unbound/testdata/iter_soamin.rpl create mode 100644 external/unbound/testdata/iter_stub_leak.rpl create mode 100644 external/unbound/testdata/iter_stub_noroot.rpl create mode 100644 external/unbound/testdata/iter_stubfirst.rpl create mode 100644 external/unbound/testdata/iter_stublastresort.rpl create mode 100644 external/unbound/testdata/iter_timeout_ra_aaaa.rpl create mode 100644 external/unbound/testdata/local_acl_override.rpl create mode 100644 external/unbound/testdata/local_acl_taglist.rpl create mode 100644 external/unbound/testdata/local_acl_taglist_action.rpl create mode 100644 external/unbound/testdata/local_cname.rpl create mode 100644 external/unbound/testdata/local_ds.rpl create mode 100644 external/unbound/testdata/local_nodefault.rpl create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.conf create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.dsc create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.post create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.pre create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.test create mode 100644 external/unbound/testdata/local_nodefault.tdir/local_nodefault.testns create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.conf create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.dsc create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.post create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.pre create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.test create mode 100644 external/unbound/testdata/local_norec.tdir/local_norec.testns create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.conf create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.dsc create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.post create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.pre create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.test create mode 100644 external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.testns create mode 100644 external/unbound/testdata/local_transparent_sametype.rpl create mode 100644 external/unbound/testdata/local_typetransparent.rpl create mode 100644 external/unbound/testdata/localdata.rpl create mode 100644 external/unbound/testdata/net_signed_servfail.rpl create mode 100644 external/unbound/testdata/nomem_cnametopos.rpl create mode 100644 external/unbound/testdata/nss_compile.tdir/nss_compile.dsc create mode 100644 external/unbound/testdata/nss_compile.tdir/nss_compile.test create mode 100644 external/unbound/testdata/pylib.tdir/pylib.conf create mode 100644 external/unbound/testdata/pylib.tdir/pylib.dsc create mode 100644 external/unbound/testdata/pylib.tdir/pylib.lookup.py create mode 100644 external/unbound/testdata/pylib.tdir/pylib.post create mode 100644 external/unbound/testdata/pylib.tdir/pylib.pre create mode 100644 external/unbound/testdata/pylib.tdir/pylib.py create mode 100644 external/unbound/testdata/pylib.tdir/pylib.test create mode 100644 external/unbound/testdata/pylib.tdir/pylib.testns create mode 100644 external/unbound/testdata/pymod.tdir/pymod.conf create mode 100644 external/unbound/testdata/pymod.tdir/pymod.dsc create mode 100644 external/unbound/testdata/pymod.tdir/pymod.post create mode 100644 external/unbound/testdata/pymod.tdir/pymod.pre create mode 100644 external/unbound/testdata/pymod.tdir/pymod.py create mode 100644 external/unbound/testdata/pymod.tdir/pymod.test create mode 100644 external/unbound/testdata/pymod.tdir/pymod.testns create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.conf create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.dsc create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.post create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.pre create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.py create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.test create mode 100644 external/unbound/testdata/pymod_thread.tdir/pymod_thread.testns create mode 100644 external/unbound/testdata/refuse_xfr.rpl create mode 100644 external/unbound/testdata/remote-threaded.tdir/bad_control.key create mode 100644 external/unbound/testdata/remote-threaded.tdir/bad_control.pem create mode 100644 external/unbound/testdata/remote-threaded.tdir/bad_server.key create mode 100644 external/unbound/testdata/remote-threaded.tdir/bad_server.pem create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.conf create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.dsc create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.post create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.pre create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.test create mode 100644 external/unbound/testdata/remote-threaded.tdir/remote-threaded.testns create mode 100644 external/unbound/testdata/remote-threaded.tdir/unbound_control.key create mode 100644 external/unbound/testdata/remote-threaded.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/remote-threaded.tdir/unbound_server.key create mode 100644 external/unbound/testdata/remote-threaded.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/root_anchor.tdir/root_anchor.dsc create mode 100644 external/unbound/testdata/root_anchor.tdir/root_anchor.test create mode 100644 external/unbound/testdata/root_hints.tdir/root_hints.dsc create mode 100644 external/unbound/testdata/root_hints.tdir/root_hints.test create mode 100644 external/unbound/testdata/root_key_sentinel.rpl create mode 100644 external/unbound/testdata/rrset_rettl.rpl create mode 100644 external/unbound/testdata/rrset_untrusted.rpl create mode 100644 external/unbound/testdata/rrset_updated.rpl create mode 100644 external/unbound/testdata/speed_cache.tdir/makeqs.c create mode 100644 external/unbound/testdata/speed_cache.tdir/makeqs.sh create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.conf create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.dsc create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.post create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.pre create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.test create mode 100644 external/unbound/testdata/speed_cache.tdir/speed_cache.testns create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.conf create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.dsc create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.post create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.pre create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.test create mode 100644 external/unbound/testdata/speed_local.tdir/speed_local.testns create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.conf create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.dsc create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.post create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.pre create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.test create mode 100644 external/unbound/testdata/stat_timer.tdir/stat_timer.testns create mode 100644 external/unbound/testdata/stop_nxdomain.rpl create mode 100644 external/unbound/testdata/stop_nxdomain_minimised.rpl create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.clie.conf create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.dsc create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.post create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.pre create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.serv.conf create mode 100644 external/unbound/testdata/stream_ssl.tdir/stream_ssl.test create mode 100644 external/unbound/testdata/stream_ssl.tdir/unbound_control.key create mode 100644 external/unbound/testdata/stream_ssl.tdir/unbound_control.pem create mode 100644 external/unbound/testdata/stream_ssl.tdir/unbound_server.key create mode 100644 external/unbound/testdata/stream_ssl.tdir/unbound_server.pem create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.conf create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.dsc create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.post create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.pre create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.test create mode 100644 external/unbound/testdata/stream_tcp.tdir/stream_tcp.testns create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.conf create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.dsc create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.post create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.pre create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.test create mode 100644 external/unbound/testdata/stub_udp.tdir/stub_udp.testns create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.conf create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.dsc create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.post create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.pre create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.test create mode 100644 external/unbound/testdata/stub_udp6.tdir/stub_udp6.testns create mode 100644 external/unbound/testdata/subnet_cached.crpl create mode 100644 external/unbound/testdata/subnet_derived.crpl create mode 100644 external/unbound/testdata/subnet_format_ip4.crpl create mode 100644 external/unbound/testdata/subnet_max_source.crpl create mode 100644 external/unbound/testdata/subnet_not_whitelisted.crpl create mode 100644 external/unbound/testdata/subnet_val_positive.crpl create mode 100644 external/unbound/testdata/subnet_val_positive_client.crpl create mode 100644 external/unbound/testdata/subnet_without_validator.crpl create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.conf create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.dsc create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.post create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.pre create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.test create mode 100644 external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.testns create mode 100644 external/unbound/testdata/test_ds.sha1 create mode 100644 external/unbound/testdata/test_ds.sha384 create mode 100644 external/unbound/testdata/test_ldnsrr.1 create mode 100644 external/unbound/testdata/test_ldnsrr.2 create mode 100644 external/unbound/testdata/test_ldnsrr.3 create mode 100644 external/unbound/testdata/test_ldnsrr.4 create mode 100644 external/unbound/testdata/test_ldnsrr.5 create mode 100644 external/unbound/testdata/test_ldnsrr.c1 create mode 100644 external/unbound/testdata/test_ldnsrr.c2 create mode 100644 external/unbound/testdata/test_ldnsrr.c3 create mode 100644 external/unbound/testdata/test_ldnsrr.c4 create mode 100644 external/unbound/testdata/test_ldnsrr.c5 create mode 100644 external/unbound/testdata/test_nsec3_hash.1 create mode 100644 external/unbound/testdata/test_packets.1 create mode 100644 external/unbound/testdata/test_packets.2 create mode 100644 external/unbound/testdata/test_packets.3 create mode 100644 external/unbound/testdata/test_packets.4 create mode 100644 external/unbound/testdata/test_packets.5 create mode 100644 external/unbound/testdata/test_packets.6 create mode 100644 external/unbound/testdata/test_packets.7 create mode 100644 external/unbound/testdata/test_packets.8 create mode 100644 external/unbound/testdata/test_packets.9 create mode 100644 external/unbound/testdata/test_signatures.1 create mode 100644 external/unbound/testdata/test_signatures.2 create mode 100644 external/unbound/testdata/test_signatures.3 create mode 100644 external/unbound/testdata/test_signatures.4 create mode 100644 external/unbound/testdata/test_signatures.5 create mode 100644 external/unbound/testdata/test_signatures.6 create mode 100644 external/unbound/testdata/test_signatures.7 create mode 100644 external/unbound/testdata/test_signatures.8 create mode 100644 external/unbound/testdata/test_signatures.9 create mode 100644 external/unbound/testdata/test_sigs.ecdsa_p256 create mode 100644 external/unbound/testdata/test_sigs.ecdsa_p384 create mode 100644 external/unbound/testdata/test_sigs.ed25519 create mode 100644 external/unbound/testdata/test_sigs.ed448 create mode 100644 external/unbound/testdata/test_sigs.gost create mode 100644 external/unbound/testdata/test_sigs.hinfo create mode 100644 external/unbound/testdata/test_sigs.revoked create mode 100644 external/unbound/testdata/test_sigs.rsasha256 create mode 100644 external/unbound/testdata/test_sigs.rsasha256_draft create mode 100644 external/unbound/testdata/test_sigs.rsasha512_draft create mode 100644 external/unbound/testdata/test_sigs.sha1_and_256 create mode 100644 external/unbound/testdata/trust_cname_chain.rpl create mode 100644 external/unbound/testdata/ttl_max.rpl create mode 100644 external/unbound/testdata/ttl_min.rpl create mode 100644 external/unbound/testdata/ttl_msg.rpl create mode 100644 external/unbound/testdata/val_adbit.rpl create mode 100644 external/unbound/testdata/val_adcopy.rpl create mode 100644 external/unbound/testdata/val_anchor_nx.rpl create mode 100644 external/unbound/testdata/val_anchor_nx_nosig.rpl create mode 100644 external/unbound/testdata/val_ans_dsent.rpl create mode 100644 external/unbound/testdata/val_ans_nx.rpl create mode 100644 external/unbound/testdata/val_any.rpl create mode 100644 external/unbound/testdata/val_any_cname.rpl create mode 100644 external/unbound/testdata/val_any_dname.rpl create mode 100644 external/unbound/testdata/val_cname_loop1.rpl create mode 100644 external/unbound/testdata/val_cname_loop2.rpl create mode 100644 external/unbound/testdata/val_cname_loop3.rpl create mode 100644 external/unbound/testdata/val_cnameinsectopos.rpl create mode 100644 external/unbound/testdata/val_cnamenx_dblnsec.rpl create mode 100644 external/unbound/testdata/val_cnamenx_rcodenx.rpl create mode 100644 external/unbound/testdata/val_cnameqtype.rpl create mode 100644 external/unbound/testdata/val_cnametocloser.rpl create mode 100644 external/unbound/testdata/val_cnametocloser_nosig.rpl create mode 100644 external/unbound/testdata/val_cnametocnamewctoposwc.rpl create mode 100644 external/unbound/testdata/val_cnametodname.rpl create mode 100644 external/unbound/testdata/val_cnametodnametocnametopos.rpl create mode 100644 external/unbound/testdata/val_cnametoinsecure.rpl create mode 100644 external/unbound/testdata/val_cnametonodata.rpl create mode 100644 external/unbound/testdata/val_cnametonodata_nonsec.rpl create mode 100644 external/unbound/testdata/val_cnametonsec.rpl create mode 100644 external/unbound/testdata/val_cnametonx.rpl create mode 100644 external/unbound/testdata/val_cnametooptin.rpl create mode 100644 external/unbound/testdata/val_cnametooptout.rpl create mode 100644 external/unbound/testdata/val_cnametopos.rpl create mode 100644 external/unbound/testdata/val_cnametoposnowc.rpl create mode 100644 external/unbound/testdata/val_cnametoposwc.rpl create mode 100644 external/unbound/testdata/val_cnamewctonodata.rpl create mode 100644 external/unbound/testdata/val_cnamewctonx.rpl create mode 100644 external/unbound/testdata/val_cnamewctoposwc.rpl create mode 100644 external/unbound/testdata/val_deleg_nons.rpl create mode 100644 external/unbound/testdata/val_dnametoolong.rpl create mode 100644 external/unbound/testdata/val_dnametopos.rpl create mode 100644 external/unbound/testdata/val_dnametoposwc.rpl create mode 100644 external/unbound/testdata/val_dnamewc.rpl create mode 100644 external/unbound/testdata/val_ds_afterprime.rpl create mode 100644 external/unbound/testdata/val_ds_cname.rpl create mode 100644 external/unbound/testdata/val_ds_cnamesub.rpl create mode 100644 external/unbound/testdata/val_ds_gost.crpl create mode 100644 external/unbound/testdata/val_ds_gost_downgrade.crpl create mode 100644 external/unbound/testdata/val_ds_sha2.crpl create mode 100644 external/unbound/testdata/val_ds_sha2_downgrade.crpl create mode 100644 external/unbound/testdata/val_ds_sha2_lenient.crpl create mode 100644 external/unbound/testdata/val_dsnsec.rpl create mode 100644 external/unbound/testdata/val_entds.rpl create mode 100644 external/unbound/testdata/val_faildnskey.rpl create mode 100644 external/unbound/testdata/val_faildnskey_ok.rpl create mode 100644 external/unbound/testdata/val_fwdds.rpl create mode 100644 external/unbound/testdata/val_keyprefetch.rpl create mode 100644 external/unbound/testdata/val_keyprefetch_verify.rpl create mode 100644 external/unbound/testdata/val_mal_wc.rpl create mode 100644 external/unbound/testdata/val_negcache_ds.rpl create mode 100644 external/unbound/testdata/val_negcache_dssoa.rpl create mode 100644 external/unbound/testdata/val_negcache_nodata.rpl create mode 100644 external/unbound/testdata/val_negcache_nta.rpl create mode 100644 external/unbound/testdata/val_negcache_nxdomain.rpl create mode 100644 external/unbound/testdata/val_noadwhennodo.rpl create mode 100644 external/unbound/testdata/val_nodata.rpl create mode 100644 external/unbound/testdata/val_nodata_ent.rpl create mode 100644 external/unbound/testdata/val_nodata_entnx.rpl create mode 100644 external/unbound/testdata/val_nodata_entwc.rpl create mode 100644 external/unbound/testdata/val_nodata_failsig.rpl create mode 100644 external/unbound/testdata/val_nodata_failwc.rpl create mode 100644 external/unbound/testdata/val_nodata_hasdata.rpl create mode 100644 external/unbound/testdata/val_nodata_zonecut.rpl create mode 100644 external/unbound/testdata/val_nodatawc.rpl create mode 100644 external/unbound/testdata/val_nodatawc_badce.rpl create mode 100644 external/unbound/testdata/val_nodatawc_nodeny.rpl create mode 100644 external/unbound/testdata/val_nodatawc_one.rpl create mode 100644 external/unbound/testdata/val_nokeyprime.rpl create mode 100644 external/unbound/testdata/val_nsec3_b1_nameerror.rpl create mode 100644 external/unbound/testdata/val_nsec3_b1_nameerror_noce.rpl create mode 100644 external/unbound/testdata/val_nsec3_b1_nameerror_nonc.rpl create mode 100644 external/unbound/testdata/val_nsec3_b1_nameerror_nowc.rpl create mode 100644 external/unbound/testdata/val_nsec3_b21_nodataent.rpl create mode 100644 external/unbound/testdata/val_nsec3_b21_nodataent_wr.rpl create mode 100644 external/unbound/testdata/val_nsec3_b2_nodata.rpl create mode 100644 external/unbound/testdata/val_nsec3_b2_nodata_nons.rpl create mode 100644 external/unbound/testdata/val_nsec3_b3_optout.rpl create mode 100644 external/unbound/testdata/val_nsec3_b3_optout_negcache.rpl create mode 100644 external/unbound/testdata/val_nsec3_b3_optout_noce.rpl create mode 100644 external/unbound/testdata/val_nsec3_b3_optout_nonc.rpl create mode 100644 external/unbound/testdata/val_nsec3_b4_wild.rpl create mode 100644 external/unbound/testdata/val_nsec3_b4_wild_wr.rpl create mode 100644 external/unbound/testdata/val_nsec3_b5_wcnodata.rpl create mode 100644 external/unbound/testdata/val_nsec3_b5_wcnodata_noce.rpl create mode 100644 external/unbound/testdata/val_nsec3_b5_wcnodata_nonc.rpl create mode 100644 external/unbound/testdata/val_nsec3_b5_wcnodata_nowc.rpl create mode 100644 external/unbound/testdata/val_nsec3_cname_ds.rpl create mode 100644 external/unbound/testdata/val_nsec3_cname_par.rpl create mode 100644 external/unbound/testdata/val_nsec3_cname_sub.rpl create mode 100644 external/unbound/testdata/val_nsec3_cnametocnamewctoposwc.rpl create mode 100644 external/unbound/testdata/val_nsec3_entnodata_optout.rpl create mode 100644 external/unbound/testdata/val_nsec3_entnodata_optout_badopt.rpl create mode 100644 external/unbound/testdata/val_nsec3_entnodata_optout_match.rpl create mode 100644 external/unbound/testdata/val_nsec3_iter_high.rpl create mode 100644 external/unbound/testdata/val_nsec3_nodatawccname.rpl create mode 100644 external/unbound/testdata/val_nsec3_nods.rpl create mode 100644 external/unbound/testdata/val_nsec3_nods_badopt.rpl create mode 100644 external/unbound/testdata/val_nsec3_nods_badsig.rpl create mode 100644 external/unbound/testdata/val_nsec3_nods_negcache.rpl create mode 100644 external/unbound/testdata/val_nsec3_nods_soa.rpl create mode 100644 external/unbound/testdata/val_nsec3_optout_ad.rpl create mode 100644 external/unbound/testdata/val_nsec3_optout_cache.rpl create mode 100644 external/unbound/testdata/val_nsec3_wcany.rpl create mode 100644 external/unbound/testdata/val_nsec3_wcany_nodeny.rpl create mode 100644 external/unbound/testdata/val_nx.rpl create mode 100644 external/unbound/testdata/val_nx_failwc.rpl create mode 100644 external/unbound/testdata/val_nx_nodeny.rpl create mode 100644 external/unbound/testdata/val_nx_nowc.rpl create mode 100644 external/unbound/testdata/val_nx_nsec3_collision.rpl create mode 100644 external/unbound/testdata/val_nx_nsec3_params.rpl create mode 100644 external/unbound/testdata/val_nx_overreach.rpl create mode 100644 external/unbound/testdata/val_pos_truncns.rpl create mode 100644 external/unbound/testdata/val_positive.rpl create mode 100644 external/unbound/testdata/val_positive_nosigs.rpl create mode 100644 external/unbound/testdata/val_positive_wc.rpl create mode 100644 external/unbound/testdata/val_positive_wc_nodeny.rpl create mode 100644 external/unbound/testdata/val_qds_badanc.rpl create mode 100644 external/unbound/testdata/val_qds_oneanc.rpl create mode 100644 external/unbound/testdata/val_qds_twoanc.rpl create mode 100644 external/unbound/testdata/val_refer_unsignadd.rpl create mode 100644 external/unbound/testdata/val_referd.rpl create mode 100644 external/unbound/testdata/val_referglue.rpl create mode 100644 external/unbound/testdata/val_rrsig.rpl create mode 100644 external/unbound/testdata/val_secds.rpl create mode 100644 external/unbound/testdata/val_secds_nosig.rpl create mode 100644 external/unbound/testdata/val_spurious_ns.rpl create mode 100644 external/unbound/testdata/val_stub_noroot.rpl create mode 100644 external/unbound/testdata/val_stubds.rpl create mode 100644 external/unbound/testdata/val_ta_algo_dnskey.rpl create mode 100644 external/unbound/testdata/val_ta_algo_dnskey_dp.rpl create mode 100644 external/unbound/testdata/val_ta_algo_missing.rpl create mode 100644 external/unbound/testdata/val_ta_algo_missing_dp.rpl create mode 100644 external/unbound/testdata/val_twocname.rpl create mode 100644 external/unbound/testdata/val_unalgo_anchor.rpl create mode 100644 external/unbound/testdata/val_unalgo_dlv.rpl create mode 100644 external/unbound/testdata/val_unalgo_ds.rpl create mode 100644 external/unbound/testdata/val_unsec_cname.rpl create mode 100644 external/unbound/testdata/val_unsecds.rpl create mode 100644 external/unbound/testdata/val_unsecds_negcache.rpl create mode 100644 external/unbound/testdata/val_unsecds_qtypeds.rpl create mode 100644 external/unbound/testdata/val_wild_pos.rpl create mode 100644 external/unbound/testdata/version_bind.rpl create mode 100644 external/unbound/testdata/version_bind_hide.rpl create mode 100644 external/unbound/testdata/views.rpl create mode 100644 external/unbound/util/as112.c create mode 100644 external/unbound/util/as112.h create mode 100644 external/unbound/util/shm_side/shm_main.c create mode 100644 external/unbound/util/shm_side/shm_main.h create mode 100644 external/unbound/util/ub_event.c create mode 100644 external/unbound/util/ub_event.h create mode 100644 external/unbound/util/ub_event_pluggable.c create mode 100644 src/daemon/node_rpc.h create mode 100644 src/node_rpc/CMakeLists.txt create mode 100644 src/node_rpc/node_rpc_server.cpp create mode 100644 src/node_rpc/node_rpc_server.h create mode 100644 src/node_rpc/node_rpc_server_commands_defs.h create mode 100644 src/node_rpc/node_rpc_server_error_codes.h diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fbcec5b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "external/unbound"] + path = external/unbound + url = https://github.com/monero-project/unbound + branch = monero diff --git a/CMakeLists.txt b/CMakeLists.txt index b2e933e..1ff5bd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -620,7 +620,7 @@ endif() include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) if(MINGW) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj") - set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi) + set(EXTRA_LIBRARIES mswsock;ws2_32;crypt32;iphlpapi) elseif(APPLE OR FREEBSD OR OPENBSD OR ANDROID) set(EXTRA_LIBRARIES "") elseif(NOT MSVC) diff --git a/README.md b/README.md index e0b52ae..186da70 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ BixBite inherited all the best from Sumocoin and intends to organize a faster pa ## Coin Supply & Emission - **Total supply**: **688 009 000** Bixbite. About ~5% was premined to reserve for future development -- **Coin symbol**: **BXB** +- **Coin symbol**: **bixbite** - **Hash algorithm**: CryptoNight Heavy (Proof-Of-Work) ## About this Project diff --git a/cmake/test-static-assert.c b/cmake/test-static-assert.c index 0c6dfb1..553fbb2 100644 --- a/cmake/test-static-assert.c +++ b/cmake/test-static-assert.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 91611b1..93366a4 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2014-2016, The Monero Project +# Copyright (c) 2014-2017, The Monero Project # # All rights reserved. # @@ -34,11 +34,12 @@ # We always compile if we are building statically to reduce static dependency issues... # ...except for FreeBSD, because FreeBSD is a special case that doesn't play well with # others. - -find_package(Miniupnpc QUIET) +if(NOT IOS) + find_package(Miniupnpc QUIET) +endif() # If we have the correct shared version and we're not building static, use it -if(STATIC) +if(STATIC OR IOS) set(USE_SHARED_MINIUPNPC false) elseif(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER) set(USE_SHARED_MINIUPNPC true) @@ -98,3 +99,4 @@ else() endif() add_subdirectory(db_drivers) +add_subdirectory(easylogging++) diff --git a/external/boost/archive/portable_binary_oarchive.hpp b/external/boost/archive/portable_binary_oarchive.hpp index 58ee3f8..b458be8 100644 --- a/external/boost/archive/portable_binary_oarchive.hpp +++ b/external/boost/archive/portable_binary_oarchive.hpp @@ -41,19 +41,24 @@ class portable_binary_oarchive_exception : public boost::archive::archive_exception { public: - typedef enum { + enum exception_code { invalid_flags - } exception_code; - portable_binary_oarchive_exception(exception_code c = invalid_flags ) + } m_exception_code ; + portable_binary_oarchive_exception(exception_code c = invalid_flags ) : + boost::archive::archive_exception(boost::archive::archive_exception::other_exception), + m_exception_code(c) {} virtual const char *what( ) const throw( ) { const char *msg = "programmer error"; - switch(code){ + switch(m_exception_code){ case invalid_flags: msg = "cannot be both big and little endian"; + break; default: - boost::archive::archive_exception::what(); + msg = boost::archive::archive_exception::what(); + assert(false); + break; } return msg; } diff --git a/external/db_drivers/CMakeLists.txt b/external/db_drivers/CMakeLists.txt index 5bc7b5c..b00bd8c 100644 --- a/external/db_drivers/CMakeLists.txt +++ b/external/db_drivers/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2014-2016, The Monero Project +# Copyright (c) 2014-2017, The Monero Project # # All rights reserved. # diff --git a/external/db_drivers/liblmdb/.gitignore b/external/db_drivers/liblmdb/.gitignore new file mode 100644 index 0000000..d5102a8 --- /dev/null +++ b/external/db_drivers/liblmdb/.gitignore @@ -0,0 +1,23 @@ +mtest +mtest[23456] +testdb +mdb_copy +mdb_stat +mdb_dump +mdb_load +*.lo +*.[ao] +*.so +*.exe +*[~#] +*.bak +*.orig +*.rej +*.gcov +*.gcda +*.gcno +core +core.* +valgrind.* +man/ +html/ diff --git a/external/db_drivers/liblmdb/CMakeLists.txt b/external/db_drivers/liblmdb/CMakeLists.txt index 4aef189..d3d3df6 100644 --- a/external/db_drivers/liblmdb/CMakeLists.txt +++ b/external/db_drivers/liblmdb/CMakeLists.txt @@ -1,21 +1,21 @@ -# Copyright (c) 2014-2016, The Monero Project -# +# Copyright (c) 2014-2017, The Monero Project +# # All rights reserved. -# +# # Redistribution and use in source and binary forms, with or without modification, are # permitted provided that the following conditions are met: -# +# # 1. Redistributions of source code must retain the above copyright notice, this list of # conditions and the following disclaimer. -# +# # 2. Redistributions in binary form must reproduce the above copyright notice, this list # of conditions and the following disclaimer in the documentation and/or other # materials provided with the distribution. -# +# # 3. Neither the name of the copyright holder nor the names of its contributors may be # used to endorse or promote products derived from this software without specific # prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL @@ -34,6 +34,7 @@ if(ANDROID) add_definitions("-DANDROID=1") endif() + set (lmdb_sources mdb.c midl.c) diff --git a/external/db_drivers/liblmdb/lmdb.h b/external/db_drivers/liblmdb/lmdb.h index a794c9f..0bca3eb 100644 --- a/external/db_drivers/liblmdb/lmdb.h +++ b/external/db_drivers/liblmdb/lmdb.h @@ -311,6 +311,8 @@ typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *rel #define MDB_NORDAHEAD 0x800000 /** don't initialize malloc'd memory before writing to datafile */ #define MDB_NOMEMINIT 0x1000000 + /** use the previous snapshot rather than the latest one */ +#define MDB_PREVSNAPSHOT 0x2000000 /** @} */ /** @defgroup mdb_dbi_open Database Flags @@ -622,6 +624,12 @@ int mdb_env_create(MDB_env **env); * caller is expected to overwrite all of the memory that was * reserved in that case. * This flag may be changed at any time using #mdb_env_set_flags(). + *
  • #MDB_PREVSNAPSHOT + * Open the environment with the previous snapshot rather than the latest + * one. This loses the latest transaction, but may help work around some + * types of corruption. If opened with write access, this must be the + * only process using the environment. This flag is automatically reset + * after a write transaction is successfully committed. * * @param[in] mode The UNIX permissions to set on created files and semaphores. * This parameter is ignored on Windows. diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 43abcad..b3de970 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -809,6 +809,16 @@ typedef struct MDB_txbody { uint32_t mtb_magic; /** Format of this lock file. Must be set to #MDB_LOCK_FORMAT. */ uint32_t mtb_format; + /** The ID of the last transaction committed to the database. + * This is recorded here only for convenience; the value can always + * be determined by reading the main database meta pages. + */ + volatile txnid_t mtb_txnid; + /** The number of slots that have been used in the reader table. + * This always records the maximum count, it is not decremented + * when readers release their slots. + */ + volatile unsigned mtb_numreaders; #if defined(_WIN32) || defined(MDB_USE_POSIX_SEM) char mtb_rmname[MNAME_LEN]; #elif defined(MDB_USE_SYSV_SEM) @@ -820,16 +830,6 @@ typedef struct MDB_txbody { */ mdb_mutex_t mtb_rmutex; #endif - /** The ID of the last transaction committed to the database. - * This is recorded here only for convenience; the value can always - * be determined by reading the main database meta pages. - */ - volatile txnid_t mtb_txnid; - /** The number of slots that have been used in the reader table. - * This always records the maximum count, it is not decremented - * when readers release their slots. - */ - volatile unsigned mtb_numreaders; } MDB_txbody; /** The actual reader table definition. */ @@ -1468,7 +1468,7 @@ static int mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst); static int mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno, unsigned int nflags); -static int mdb_env_read_header(MDB_env *env, MDB_meta *meta); +static int mdb_env_read_header(MDB_env *env, int prev, MDB_meta *meta); static MDB_meta *mdb_env_pick_meta(const MDB_env *env); static int mdb_env_write_meta(MDB_txn *txn); #ifdef MDB_USE_POSIX_MUTEX /* Drop unused excl arg */ @@ -1953,13 +1953,15 @@ static void mdb_cursor_unref(MDB_cursor *mc) { int i; - if (!mc->mc_snum || !mc->mc_pg[0] || IS_SUBP(mc->mc_pg[0])) - return; - for (i=0; imc_snum; i++) - mdb_page_unref(mc->mc_txn, mc->mc_pg[i]); - if (mc->mc_ovpg) { - mdb_page_unref(mc->mc_txn, mc->mc_ovpg); - mc->mc_ovpg = 0; + if (mc->mc_txn->mt_rpages[0].mid) { + if (!mc->mc_snum || !mc->mc_pg[0] || IS_SUBP(mc->mc_pg[0])) + return; + for (i=0; imc_snum; i++) + mdb_page_unref(mc->mc_txn, mc->mc_pg[i]); + if (mc->mc_ovpg) { + mdb_page_unref(mc->mc_txn, mc->mc_ovpg); + mc->mc_ovpg = 0; + } } mc->mc_snum = mc->mc_top = 0; mc->mc_pg[0] = NULL; @@ -3630,6 +3632,8 @@ mdb_page_flush(MDB_txn *txn, int keep) return MDB_SUCCESS; } +static int ESECT mdb_env_share_locks(MDB_env *env, int *excl); + int mdb_txn_commit(MDB_txn *txn) { @@ -3852,6 +3856,15 @@ mdb_txn_commit(MDB_txn *txn) if ((rc = mdb_env_write_meta(txn))) goto fail; end_mode = MDB_END_COMMITTED|MDB_END_UPDATE; + if (env->me_flags & MDB_PREVSNAPSHOT) { + if (!(env->me_flags & MDB_NOLOCK)) { + int excl; + rc = mdb_env_share_locks(env, &excl); + if (rc) + goto fail; + } + env->me_flags ^= MDB_PREVSNAPSHOT; + } done: mdb_txn_end(txn, end_mode); @@ -3865,11 +3878,12 @@ mdb_txn_commit(MDB_txn *txn) /** Read the environment parameters of a DB environment before * mapping it into memory. * @param[in] env the environment handle + * @param[in] prev whether to read the backup meta page * @param[out] meta address of where to store the meta information * @return 0 on success, non-zero on failure. */ static int ESECT -mdb_env_read_header(MDB_env *env, MDB_meta *meta) +mdb_env_read_header(MDB_env *env, int prev, MDB_meta *meta) { MDB_metabuf pbuf; MDB_page *p; @@ -3920,7 +3934,7 @@ mdb_env_read_header(MDB_env *env, MDB_meta *meta) return MDB_VERSION_MISMATCH; } - if (off == 0 || m->mm_txnid > meta->mm_txnid) + if (off == 0 || (prev ? m->mm_txnid < meta->mm_txnid : m->mm_txnid > meta->mm_txnid)) *meta = *m; } return 0; @@ -4129,7 +4143,8 @@ static MDB_meta * mdb_env_pick_meta(const MDB_env *env) { MDB_meta *const *metas = env->me_metas; - return metas[ metas[0]->mm_txnid < metas[1]->mm_txnid ]; + return metas[ (metas[0]->mm_txnid < metas[1]->mm_txnid) ^ + ((env->me_flags & MDB_PREVSNAPSHOT) != 0) ]; } int ESECT @@ -4364,7 +4379,7 @@ mdb_fsize(HANDLE fd, mdb_size_t *size) /** Further setup required for opening an LMDB environment */ static int ESECT -mdb_env_open2(MDB_env *env) +mdb_env_open2(MDB_env *env, int prev) { unsigned int flags = env->me_flags; int i, newenv = 0, rc; @@ -4427,7 +4442,7 @@ mdb_env_open2(MDB_env *env) } #endif - if ((i = mdb_env_read_header(env, &meta)) != 0) { + if ((i = mdb_env_read_header(env, prev, &meta)) != 0) { if (i != ENOENT) return i; DPUTS("new mdbenv"); @@ -4503,6 +4518,9 @@ mdb_env_open2(MDB_env *env) #endif env->me_maxpg = env->me_mapsize / env->me_psize; + if (env->me_txns) + env->me_txns->mti_txnid = meta.mm_txnid; + #if MDB_DEBUG { MDB_meta *meta = mdb_env_pick_meta(env); @@ -4598,9 +4616,6 @@ static int ESECT mdb_env_share_locks(MDB_env *env, int *excl) { int rc = 0; - MDB_meta *meta = mdb_env_pick_meta(env); - - env->me_txns->mti_txnid = meta->mm_txnid; #ifdef _WIN32 { @@ -5054,7 +5069,7 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl) */ #define CHANGEABLE (MDB_NOSYNC|MDB_NOMETASYNC|MDB_MAPASYNC|MDB_NOMEMINIT) #define CHANGELESS (MDB_FIXEDMAP|MDB_NOSUBDIR|MDB_RDONLY| \ - MDB_WRITEMAP|MDB_NOTLS|MDB_NOLOCK|MDB_NORDAHEAD) + MDB_WRITEMAP|MDB_NOTLS|MDB_NOLOCK|MDB_NORDAHEAD|MDB_PREVSNAPSHOT) #if VALID_FLAGS & PERSISTENT_FLAGS & (CHANGEABLE|CHANGELESS) # error "Persistent DB flags & env flags overlap, but both go in mm_flags" @@ -5176,9 +5191,13 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode rc = mdb_env_setup_locks(env, lpath, mode, &excl); if (rc) goto leave; + if ((flags & MDB_PREVSNAPSHOT) && !excl) { + rc = EAGAIN; + goto leave; + } } - if ((rc = mdb_env_open2(env)) == MDB_SUCCESS) { + if ((rc = mdb_env_open2(env, flags & MDB_PREVSNAPSHOT)) == MDB_SUCCESS) { if (flags & (MDB_RDONLY|MDB_WRITEMAP)) { env->me_mfd = env->me_fd; } else { @@ -5204,7 +5223,7 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode } } DPRINTF(("opened dbenv %p", (void *) env)); - if (excl > 0) { + if (excl > 0 && !(flags & MDB_PREVSNAPSHOT)) { rc = mdb_env_share_locks(env, &excl); if (rc) goto leave; @@ -6269,6 +6288,10 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp) if (rc) return rc; } +#ifdef MDB_VL32 + if (mc->mc_ovpg == mp) + mc->mc_ovpg = NULL; +#endif mc->mc_db->md_overflow_pages -= ovpages; return 0; } diff --git a/external/db_drivers/liblmdb/mdb_copy.1 b/external/db_drivers/liblmdb/mdb_copy.1 index 1e2a976..401e47a 100644 --- a/external/db_drivers/liblmdb/mdb_copy.1 +++ b/external/db_drivers/liblmdb/mdb_copy.1 @@ -11,6 +11,8 @@ mdb_copy \- LMDB environment copy tool .BR \-c ] [\c .BR \-n ] +[\c +.BR \-v ] .B srcpath [\c .BR dstpath ] @@ -39,6 +41,10 @@ slow down the backup process as it is more CPU-intensive. .TP .BR \-n Open LDMB environment(s) which do not use subdirectories. +.TP +.BR \-v +Use the previous environment state instead of the latest state. +This may be useful if the latest state has been corrupted. .SH DIAGNOSTICS Exit status is zero if no errors occur. diff --git a/external/db_drivers/liblmdb/mdb_copy.c b/external/db_drivers/liblmdb/mdb_copy.c index f37ccbc..95a6e71 100644 --- a/external/db_drivers/liblmdb/mdb_copy.c +++ b/external/db_drivers/liblmdb/mdb_copy.c @@ -38,6 +38,8 @@ int main(int argc,char * argv[]) for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) { if (argv[1][1] == 'n' && argv[1][2] == '\0') flags |= MDB_NOSUBDIR; + else if (argv[1][1] == 'v' && argv[1][2] == '\0') + flags |= MDB_PREVSNAPSHOT; else if (argv[1][1] == 'c' && argv[1][2] == '\0') cpflags |= MDB_CP_COMPACT; else if (argv[1][1] == 'V' && argv[1][2] == '\0') { @@ -48,7 +50,7 @@ int main(int argc,char * argv[]) } if (argc<2 || argc>3) { - fprintf(stderr, "usage: %s [-V] [-c] [-n] srcpath [dstpath]\n", progname); + fprintf(stderr, "usage: %s [-V] [-c] [-n] [-v] srcpath [dstpath]\n", progname); exit(EXIT_FAILURE); } diff --git a/external/db_drivers/liblmdb/mdb_dump.1 b/external/db_drivers/liblmdb/mdb_dump.1 index 5a647ba..a25fb92 100644 --- a/external/db_drivers/liblmdb/mdb_dump.1 +++ b/external/db_drivers/liblmdb/mdb_dump.1 @@ -14,6 +14,8 @@ mdb_dump \- LMDB environment export tool [\c .BR \-n ] [\c +.BR \-v ] +[\c .BR \-p ] [\c .BR \-a \ | @@ -42,6 +44,10 @@ names will be listed, no data will be output. .BR \-n Dump an LMDB database which does not use subdirectories. .TP +.BR \-v +Use the previous environment state instead of the latest state. +This may be useful if the latest state has been corrupted. +.TP .BR \-p If characters in either the key or data items are printing characters (as defined by isprint(3)), output them directly. This option permits users to diff --git a/external/db_drivers/liblmdb/mdb_dump.c b/external/db_drivers/liblmdb/mdb_dump.c index 72a4690..7a42bc0 100644 --- a/external/db_drivers/liblmdb/mdb_dump.c +++ b/external/db_drivers/liblmdb/mdb_dump.c @@ -164,7 +164,7 @@ static int dumpit(MDB_txn *txn, MDB_dbi dbi, char *name) static void usage(char *prog) { - fprintf(stderr, "usage: %s [-V] [-f output] [-l] [-n] [-p] [-a|-s subdb] dbpath\n", prog); + fprintf(stderr, "usage: %s [-V] [-f output] [-l] [-n] [-p] [-v] [-a|-s subdb] dbpath\n", prog); exit(EXIT_FAILURE); } @@ -188,6 +188,7 @@ int main(int argc, char *argv[]) * -n: use NOSUBDIR flag on env_open * -p: use printable characters * -f: write to file instead of stdout + * -v: use previous snapshot * -V: print version and exit * (default) dump only the main DB */ @@ -215,6 +216,9 @@ int main(int argc, char *argv[]) case 'n': envflags |= MDB_NOSUBDIR; break; + case 'v': + envflags |= MDB_PREVSNAPSHOT; + break; case 'p': mode |= PRINT; break; diff --git a/external/db_drivers/liblmdb/mdb_stat.1 b/external/db_drivers/liblmdb/mdb_stat.1 index 351c017..bf49bd3 100644 --- a/external/db_drivers/liblmdb/mdb_stat.1 +++ b/external/db_drivers/liblmdb/mdb_stat.1 @@ -14,6 +14,8 @@ mdb_stat \- LMDB environment status tool [\c .BR \-n ] [\c +.BR \-v ] +[\c .BR \-r [ r ]] [\c .BR \-a \ | @@ -39,6 +41,10 @@ If \fB\-fff\fP is given, display the full list of page IDs in the freelist. .BR \-n Display the status of an LMDB database which does not use subdirectories. .TP +.BR \-v +Use the previous environment state instead of the latest state. +This may be useful if the latest state has been corrupted. +.TP .BR \-r Display information about the environment reader table. Shows the process ID, thread ID, and transaction ID for each active diff --git a/external/db_drivers/liblmdb/mdb_stat.c b/external/db_drivers/liblmdb/mdb_stat.c index b785e7a..30ec81f 100644 --- a/external/db_drivers/liblmdb/mdb_stat.c +++ b/external/db_drivers/liblmdb/mdb_stat.c @@ -46,7 +46,7 @@ static void prstat(MDB_stat *ms) static void usage(char *prog) { - fprintf(stderr, "usage: %s [-V] [-n] [-e] [-r[r]] [-f[f[f]]] [-a|-s subdb] dbpath\n", prog); + fprintf(stderr, "usage: %s [-V] [-n] [-e] [-r[r]] [-f[f[f]]] [-v] [-a|-s subdb] dbpath\n", prog); exit(EXIT_FAILURE); } @@ -73,6 +73,7 @@ int main(int argc, char *argv[]) * -f: print freelist info * -r: print reader info * -n: use NOSUBDIR flag on env_open + * -v: use previous snapshot * -V: print version and exit * (default) print stat of only the main DB */ @@ -96,6 +97,9 @@ int main(int argc, char *argv[]) case 'n': envflags |= MDB_NOSUBDIR; break; + case 'v': + envflags |= MDB_PREVSNAPSHOT; + break; case 'r': rdrinfo++; break; diff --git a/external/easylogging++/CMakeLists.txt b/external/easylogging++/CMakeLists.txt index 78795d5..ae7d931 100644 --- a/external/easylogging++/CMakeLists.txt +++ b/external/easylogging++/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2014-2018, The Monero Project +# Copyright (c) 2014-2017, The Monero Project # # All rights reserved. # @@ -51,8 +51,6 @@ if (BUILD_GUI_DEPS) set(lib_folder lib) endif() install(TARGETS easylogging - ARCHIVE DESTINATION ${lib_folder} - LIBRARY DESTINATION ${lib_folder}) + ARCHIVE DESTINATION ${lib_folder}) endif() -set_property(TARGET easylogging APPEND PROPERTY COMPILE_FLAGS "-fPIC") diff --git a/external/easylogging++/ea_config.h b/external/easylogging++/ea_config.h index 4c74925..2524d34 100644 --- a/external/easylogging++/ea_config.h +++ b/external/easylogging++/ea_config.h @@ -2,13 +2,9 @@ #define ELPP_THREAD_SAFE #define ELPP_DEFAULT_LOG_FILE "" +#if !defined __GNUC__ || defined __MINGW32__ || defined __MINGW64__ || defined __ANDROID__ +#else +#define ELPP_FEATURE_CRASH_LOG 1 +#endif #define ELPP_DISABLE_DEFAULT_CRASH_HANDLING #define ELPP_NO_CHECK_MACROS -#define ELPP_WINSOCK2 -#define ELPP_NO_DEBUG_MACROS - -#ifdef EASYLOGGING_CC -#if !(!defined __GNUC__ || defined __MINGW32__ || defined __MINGW64__ || defined __ANDROID__) -#define ELPP_FEATURE_CRASH_LOG -#endif -#endif diff --git a/external/easylogging++/easylogging++.cc b/external/easylogging++/easylogging++.cc index 212a182..721b2af 100644 --- a/external/easylogging++/easylogging++.cc +++ b/external/easylogging++/easylogging++.cc @@ -14,11 +14,8 @@ // http://muflihun.com // -#define EASYLOGGING_CC #include "easylogging++.h" -#include - #if defined(AUTO_INITIALIZE_EASYLOGGINGPP) INITIALIZE_EASYLOGGINGPP #endif @@ -37,12 +34,8 @@ static void abort(int status, const std::string& reason) { #if defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) // Ignore msvc critical error dialog - break instead (on debug mode) _asm int 3 -#else -#ifdef NDEBUG - ::_exit(1); #else ::abort(); -#endif #endif // defined(ELPP_COMPILER_MSVC) && defined(_M_IX86) && defined(_DEBUG) } @@ -1022,9 +1015,8 @@ const std::string OS::getBashOutput(const char* command) { char hBuff[4096]; if (fgets(hBuff, sizeof(hBuff), proc) != nullptr) { pclose(proc); - const size_t len = strlen(hBuff); - if (len > 0 && hBuff[len - 1] == '\n') { - hBuff[len- 1] = '\0'; + if (hBuff[strlen(hBuff) - 1] == '\n') { + hBuff[strlen(hBuff) - 1] = '\0'; } return std::string(hBuff); } @@ -1969,13 +1961,8 @@ void VRegistry::setCategories(const char* categories, bool clear) { m_categories.push_back(std::make_pair(ss.str(), level)); }; - if (clear) { + if (clear) m_categories.clear(); - m_categoriesString.clear(); - } - if (!m_categoriesString.empty()) - m_categoriesString += ","; - m_categoriesString += categories; if (!categories) return; @@ -2014,11 +2001,6 @@ void VRegistry::setCategories(const char* categories, bool clear) { } } -std::string VRegistry::getCategories() { - base::threading::ScopedLock scopedLock(lock()); - return m_categoriesString; -} - // Log levels are sorted in a weird way... static int priority(Level level) { if (level == Level::Fatal) return 0; @@ -3091,10 +3073,6 @@ void Loggers::setCategories(const char* categories, bool clear) { ELPP->vRegistry()->setCategories(categories, clear); } -std::string Loggers::getCategories() { - return ELPP->vRegistry()->getCategories(); -} - void Loggers::clearCategories(void) { ELPP->vRegistry()->clearCategories(); } diff --git a/external/easylogging++/easylogging++.h b/external/easylogging++/easylogging++.h index 3270bd6..8f59289 100644 --- a/external/easylogging++/easylogging++.h +++ b/external/easylogging++/easylogging++.h @@ -99,11 +99,6 @@ #else # define ELPP_OS_FREEBSD 0 #endif -#if (defined(__OpenBSD__)) -# define ELPP_OS_OPENBSD 1 -#else -# define ELPP_OS_OPENBSD 0 -#endif #if (defined(__sun)) # define ELPP_OS_SOLARIS 1 #else @@ -115,7 +110,7 @@ # define ELPP_OS_DRAGONFLY 0 #endif // Unix -#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_SOLARIS || ELPP_OS_DRAGONFLY || ELPP_OS_OPENBSD) && (!ELPP_OS_WINDOWS)) +#if ((ELPP_OS_LINUX || ELPP_OS_MAC || ELPP_OS_FREEBSD || ELPP_OS_SOLARIS || ELPP_OS_DRAGONFLY) && (!ELPP_OS_WINDOWS)) # define ELPP_OS_UNIX 1 #else # define ELPP_OS_UNIX 0 @@ -200,20 +195,19 @@ ELPP_INTERNAL_DEBUGGING_OUT_INFO << ELPP_INTERNAL_DEBUGGING_MSG(internalInfoStre # define ELPP_INTERNAL_INFO(lvl, msg) #endif // (defined(ELPP_DEBUG_INFO)) #if (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) -# if (ELPP_COMPILER_GCC && !ELPP_MINGW && !ELPP_OS_OPENBSD) +# if (ELPP_COMPILER_GCC && !ELPP_MINGW) # define ELPP_STACKTRACE 1 # else -# define ELPP_STACKTRACE 0 -# ifdef EASYLOGGING_CC +# define ELPP_STACKTRACE 0 # if ELPP_COMPILER_MSVC -# pragma message("Stack trace not available for this compiler") +# pragma message("Stack trace not available for this compiler") # else -# warning "Stack trace not available for this compiler"; +# warning "Stack trace not available for this compiler"; # endif // ELPP_COMPILER_MSVC -# endif +# define ELPP_STACKTRACE 0 # endif // ELPP_COMPILER_GCC #else -# define ELPP_STACKTRACE 0 +# define ELPP_STACKTRACE 0 #endif // (defined(ELPP_FEATURE_ALL)) || (defined(ELPP_FEATURE_CRASH_LOG)) // Miscellaneous macros #define ELPP_UNUSED(x) (void)x @@ -2494,8 +2488,6 @@ class VRegistry : base::NoCopy, public base::threading::ThreadSafe { void setCategories(const char* categories, bool clear = true); - std::string getCategories(); - void setModules(const char* modules); bool allowed(Level level, const char* category); @@ -2526,7 +2518,6 @@ class VRegistry : base::NoCopy, public base::threading::ThreadSafe { base::type::EnumType* m_pFlags; std::map m_modules; std::deque> m_categories; - std::string m_categoriesString; std::string m_filenameCommonPrefix; }; } // namespace base @@ -3962,8 +3953,6 @@ class Loggers : base::StaticClass { static void setVModules(const char* modules); /// @brief Sets categories as specified (on the fly) static void setCategories(const char* categories, bool clear = true); - /// @brief Gets current categories - static std::string getCategories(); /// @brief Clears vmodules static void clearVModules(void); /// @brief Clears categories diff --git a/external/miniupnpc/.gitignore b/external/miniupnpc/.gitignore new file mode 100644 index 0000000..b1209cc --- /dev/null +++ b/external/miniupnpc/.gitignore @@ -0,0 +1,32 @@ +deb_dist/ +build/ +*.o +*.a +*.so +*.dll +*.dylib +Makefile.bak +miniupnpcstrings.h +pythonmodule +pythonmodule3 +upnpc-shared +upnpc-static +minihttptestserver +minixmlvalid +testminiwget +validateminiwget +validateminixml +java/miniupnpc_*.jar +_jnaerator.* +out.errors.txt +jnaerator-*.jar +miniupnpc.h.bak +testupnpreplyparse +validateupnpreplyparse +testportlistingparse +validateportlistingparse +listdevices +testigddescparse +validateigddescparse +dist/ +miniupnpc.egg-info/ diff --git a/external/miniupnpc/CMakeLists.txt b/external/miniupnpc/CMakeLists.txt index 1d6572b..4c01b6d 100644 --- a/external/miniupnpc/CMakeLists.txt +++ b/external/miniupnpc/CMakeLists.txt @@ -32,10 +32,10 @@ endif (NO_GETADDRINFO) if (NOT WIN32) add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT) add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE) - if (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + if (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "DragonFly") # add_definitions (-D_POSIX_C_SOURCE=200112L) add_definitions (-D_XOPEN_SOURCE=600) - endif (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + endif (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "DragonFly") else (NOT WIN32) add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends endif (NOT WIN32) diff --git a/external/miniupnpc/Makefile b/external/miniupnpc/Makefile new file mode 100644 index 0000000..b7826ca --- /dev/null +++ b/external/miniupnpc/Makefile @@ -0,0 +1,386 @@ +# $Id: Makefile,v 1.133 2016/01/24 17:24:35 nanard Exp $ +# MiniUPnP Project +# http://miniupnp.free.fr/ +# http://miniupnp.tuxfamily.org/ +# https://github.com/miniupnp/miniupnp +# (c) 2005-2015 Thomas Bernard +# to install use : +# $ make DESTDIR=/tmp/dummylocation install +# or +# $ INSTALLPREFIX=/usr/local make install +# or +# $ make install (default INSTALLPREFIX is /usr) +OS = $(shell uname -s) +VERSION = $(shell cat VERSION) + +ifeq ($(OS), Darwin) +JARSUFFIX=mac +LIBTOOL ?= $(shell which libtool) +endif +ifeq ($(OS), Linux) +JARSUFFIX=linux +endif +ifneq (,$(findstring NT-5.1,$(OS))) +JARSUFFIX=win32 +endif + +HAVE_IPV6 ?= yes +export HAVE_IPV6 + +CC ?= gcc +#AR = gar +#CFLAGS = -O -g -DDEBUG +CFLAGS ?= -O +CFLAGS += -Wall +CFLAGS += -W -Wstrict-prototypes +CFLAGS += -fno-common +CFLAGS += -DMINIUPNPC_SET_SOCKET_TIMEOUT +CFLAGS += -DMINIUPNPC_GET_SRC_ADDR +CFLAGS += -D_BSD_SOURCE +CFLAGS += -D_DEFAULT_SOURCE +ifeq ($(OS), NetBSD) +CFLAGS += -D_NETBSD_SOURCE +endif +ifneq ($(OS), FreeBSD) +ifneq ($(OS), Darwin) +#CFLAGS += -D_POSIX_C_SOURCE=200112L +CFLAGS += -D_XOPEN_SOURCE=600 +endif +endif +#CFLAGS += -ansi +# -DNO_GETADDRINFO +INSTALL = install +SH = /bin/sh +JAVA = java +# see http://code.google.com/p/jnaerator/ +#JNAERATOR = jnaerator-0.9.7.jar +#JNAERATOR = jnaerator-0.9.8-shaded.jar +#JNAERATORARGS = -library miniupnpc +#JNAERATOR = jnaerator-0.10-shaded.jar +#JNAERATOR = jnaerator-0.11-shaded.jar +# https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12/jnaerator-0.12-shaded.jar +JNAERATOR = jnaerator-0.12-shaded.jar +JNAERATORARGS = -mode StandaloneJar -runtime JNAerator -library miniupnpc +#JNAERATORBASEURL = http://jnaerator.googlecode.com/files/ +JNAERATORBASEURL = https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12 + +ifeq (SunOS, $(OS)) + LDFLAGS=-lsocket -lnsl -lresolv +endif + +# APIVERSION is used to build SONAME +APIVERSION = 16 + +SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \ + upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \ + minixmlvalid.c testupnpreplyparse.c minissdpc.c \ + upnperrors.c testigddescparse.c testminiwget.c \ + connecthostport.c portlistingparse.c receivedata.c \ + upnpdev.c testportlistingparse.c miniupnpcmodule.c \ + minihttptestserver.c \ + listdevices.c + +LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \ + miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ + connecthostport.o portlistingparse.o receivedata.o upnpdev.o + +ifneq ($(OS), AmigaOS) +CFLAGS := -fPIC $(CFLAGS) +LIBOBJS := $(LIBOBJS) minissdpc.o +endif + +OBJS = $(patsubst %.c,%.o,$(SRCS)) + +# HEADERS to install +HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \ + upnpreplyparse.h upnperrors.h miniupnpctypes.h \ + portlistingparse.h \ + upnpdev.h \ + miniupnpc_declspec.h + +# library names +LIBRARY = libminiupnpc.a +ifeq ($(OS), Darwin) + SHAREDLIBRARY = libminiupnpc.dylib + SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib + CFLAGS := -D_DARWIN_C_SOURCE $(CFLAGS) +else +ifeq ($(JARSUFFIX), win32) + SHAREDLIBRARY = miniupnpc.dll +else + # Linux/BSD/etc. + SHAREDLIBRARY = libminiupnpc.so + SONAME = $(SHAREDLIBRARY).$(APIVERSION) +endif +endif + +EXECUTABLES = upnpc-static listdevices +EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \ + testigddescparse testminiwget testportlistingparse + +TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o + +TESTMINIWGETOBJS = miniwget.o testminiwget.o connecthostport.o receivedata.o + +TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o + +TESTPORTLISTINGPARSE = testportlistingparse.o minixml.o portlistingparse.o + +TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \ + miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \ + minisoap.o connecthostport.o receivedata.o \ + portlistingparse.o + +ifneq ($(OS), AmigaOS) +EXECUTABLES := $(EXECUTABLES) upnpc-shared +TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o +TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o +endif + +LIBDIR ?= lib +# install directories +ifeq ($(strip $(PREFIX)),) +INSTALLPREFIX ?= /usr +else +INSTALLPREFIX ?= $(PREFIX) +endif +INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc +INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR) +INSTALLDIRBIN = $(INSTALLPREFIX)/bin +INSTALLDIRMAN = $(INSTALLPREFIX)/share/man + +FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES) +ifneq ($(OS), AmigaOS) +FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY) +endif + + +.PHONY: install clean depend all check test everything \ + installpythonmodule updateversion +# validateminixml validateminiwget + +all: $(LIBRARY) $(EXECUTABLES) + +test: check + +check: validateminixml validateminiwget validateupnpreplyparse \ + validateportlistingparse validateigddescparse + +everything: all $(EXECUTABLES_ADDTESTS) + +pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py + python setup.py build + touch $@ + +installpythonmodule: pythonmodule + python setup.py install + +pythonmodule3: $(LIBRARY) miniupnpcmodule.c setup.py + python3 setup.py build + touch $@ + +installpythonmodule3: pythonmodule3 + python3 setup.py install + +validateminixml: minixmlvalid + @echo "minixml validation test" + ./minixmlvalid + touch $@ + +validateminiwget: testminiwget minihttptestserver testminiwget.sh + @echo "miniwget validation test" + ./testminiwget.sh + touch $@ + +validateupnpreplyparse: testupnpreplyparse testupnpreplyparse.sh + @echo "upnpreplyparse validation test" + ./testupnpreplyparse.sh + touch $@ + +validateportlistingparse: testportlistingparse + @echo "portlistingparse validation test" + ./testportlistingparse + touch $@ + +validateigddescparse: testigddescparse + @echo "igd desc parse validation test" + ./testigddescparse testdesc/new_LiveBox_desc.xml testdesc/new_LiveBox_desc.values + ./testigddescparse testdesc/linksys_WAG200G_desc.xml testdesc/linksys_WAG200G_desc.values + touch $@ + +clean: + $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h + $(RM) $(EXECUTABLES_ADDTESTS) + # clean python stuff + $(RM) pythonmodule pythonmodule3 + $(RM) validateminixml validateminiwget validateupnpreplyparse + $(RM) validateigddescparse + $(RM) minihttptestserver + $(RM) -r build/ dist/ + #python setup.py clean + # clean jnaerator stuff + $(RM) _jnaerator.* java/miniupnpc_$(OS).jar + +distclean: clean + $(RM) $(JNAERATOR) java/*.jar java/*.class out.errors.txt + +updateversion: miniupnpc.h + cp miniupnpc.h miniupnpc.h.bak + sed 's/\(.*MINIUPNPC_API_VERSION\s\+\)[0-9]\+/\1$(APIVERSION)/' < miniupnpc.h.bak > miniupnpc.h + +install: updateversion $(FILESTOINSTALL) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) +ifneq ($(OS), AmigaOS) + $(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME) + ln -fs $(SONAME) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) +endif + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) +ifeq ($(OS), AmigaOS) + $(INSTALL) -m 755 upnpc-static $(DESTDIR)$(INSTALLDIRBIN)/upnpc +else + $(INSTALL) -m 755 upnpc-shared $(DESTDIR)$(INSTALLDIRBIN)/upnpc +endif + $(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip +ifneq ($(OS), AmigaOS) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRMAN)/man3 + $(INSTALL) -m 644 man3/miniupnpc.3 $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 +ifeq ($(OS), Linux) + gzip -f $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 +endif +endif + +install-static: updateversion $(FILESTOINSTALL) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) + $(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) + $(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip + +cleaninstall: + $(RM) -r $(DESTDIR)$(INSTALLDIRINC) + $(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(LIBRARY) + $(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) + +depend: + makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null + +$(LIBRARY): $(LIBOBJS) +ifeq ($(OS), Darwin) + $(LIBTOOL) -static -o $@ $? +else + $(AR) crs $@ $? +endif + +$(SHAREDLIBRARY): $(LIBOBJS) +ifeq ($(OS), Darwin) +# $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^ + $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(INSTALLDIRLIB)/$(SONAME) -o $@ $^ +else + $(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^ +endif + +upnpc-static: upnpc.o $(LIBRARY) + $(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) + +upnpc-shared: upnpc.o $(SHAREDLIBRARY) + $(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) + +listdevices: listdevices.o $(LIBRARY) + +testminixml: $(TESTMINIXMLOBJS) + +testminiwget: $(TESTMINIWGETOBJS) + +minixmlvalid: minixml.o minixmlvalid.o + +testupnpreplyparse: $(TESTUPNPREPLYPARSE) + +testigddescparse: $(TESTIGDDESCPARSE) + +testportlistingparse: $(TESTPORTLISTINGPARSE) + +miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh VERSION + $(SH) updateminiupnpcstrings.sh + +# ftp tool supplied with OpenBSD can download files from http. +jnaerator-%.jar: + wget $(JNAERATORBASEURL)/$@ || \ + curl -o $@ $(JNAERATORBASEURL)/$@ || \ + ftp $(JNAERATORBASEURL)/$@ + +jar: $(SHAREDLIBRARY) $(JNAERATOR) + $(JAVA) -jar $(JNAERATOR) $(JNAERATORARGS) \ + miniupnpc.h miniupnpc_declspec.h upnpcommands.h upnpreplyparse.h \ + igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) \ + -package fr.free.miniupnp -o . -jar java/miniupnpc_$(JARSUFFIX).jar -v + +mvn_install: + mvn install:install-file -Dfile=java/miniupnpc_$(JARSUFFIX).jar \ + -DgroupId=com.github \ + -DartifactId=miniupnp \ + -Dversion=$(VERSION) \ + -Dpackaging=jar \ + -Dclassifier=$(JARSUFFIX) \ + -DgeneratePom=true \ + -DcreateChecksum=true + +# make .deb packages +deb: /usr/share/pyshared/stdeb all + (python setup.py --command-packages=stdeb.command bdist_deb) + +# install .deb packages +ideb: + (sudo dpkg -i deb_dist/*.deb) + +/usr/share/pyshared/stdeb: /usr/share/doc/python-all-dev + (sudo apt-get install python-stdeb) + +/usr/share/doc/python-all-dev: + (sudo apt-get install python-all-dev) + +minihttptestserver: minihttptestserver.o + +# DO NOT DELETE THIS LINE -- make depend depends on it. + +igd_desc_parse.o: igd_desc_parse.h +miniupnpc.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h +miniupnpc.o: minissdpc.h miniwget.h minisoap.h minixml.h upnpcommands.h +miniupnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h +miniupnpc.o: connecthostport.h +minixml.o: minixml.h +minisoap.o: minisoap.h miniupnpcstrings.h +miniwget.o: miniupnpcstrings.h miniwget.h miniupnpc_declspec.h +miniwget.o: connecthostport.h receivedata.h +upnpc.o: miniwget.h miniupnpc_declspec.h miniupnpc.h igd_desc_parse.h +upnpc.o: upnpdev.h upnpcommands.h upnpreplyparse.h portlistingparse.h +upnpc.o: miniupnpctypes.h upnperrors.h miniupnpcstrings.h +upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h +upnpcommands.o: miniupnpc_declspec.h miniupnpctypes.h miniupnpc.h +upnpcommands.o: igd_desc_parse.h upnpdev.h +upnpreplyparse.o: upnpreplyparse.h minixml.h +testminixml.o: minixml.h igd_desc_parse.h +minixmlvalid.o: minixml.h +testupnpreplyparse.o: upnpreplyparse.h +minissdpc.o: minissdpc.h miniupnpc_declspec.h upnpdev.h miniupnpc.h +minissdpc.o: igd_desc_parse.h receivedata.h codelength.h +upnperrors.o: upnperrors.h miniupnpc_declspec.h upnpcommands.h +upnperrors.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h +upnperrors.o: miniupnpc.h igd_desc_parse.h upnpdev.h +testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h +testigddescparse.o: miniupnpc_declspec.h upnpdev.h +testminiwget.o: miniwget.h miniupnpc_declspec.h +connecthostport.o: connecthostport.h +portlistingparse.o: portlistingparse.h miniupnpc_declspec.h miniupnpctypes.h +portlistingparse.o: minixml.h +receivedata.o: receivedata.h +upnpdev.o: upnpdev.h miniupnpc_declspec.h +testportlistingparse.o: portlistingparse.h miniupnpc_declspec.h +testportlistingparse.o: miniupnpctypes.h +miniupnpcmodule.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h +miniupnpcmodule.o: upnpdev.h upnpcommands.h upnpreplyparse.h +miniupnpcmodule.o: portlistingparse.h miniupnpctypes.h upnperrors.h +listdevices.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h diff --git a/external/miniupnpc/java/.gitignore b/external/miniupnpc/java/.gitignore new file mode 100644 index 0000000..8e9e794 --- /dev/null +++ b/external/miniupnpc/java/.gitignore @@ -0,0 +1,2 @@ +*.class +*.jar diff --git a/external/miniupnpc/miniwget.c b/external/miniupnpc/miniwget.c index ca88a1e..9978bf3 100644 --- a/external/miniupnpc/miniwget.c +++ b/external/miniupnpc/miniwget.c @@ -280,11 +280,12 @@ getHTTPResponse(int s, int * size, int * status_code) goto end_of_stream; } } - bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i); + /* it is guaranteed that (n >= i) */ + bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i); if((content_buf_used + bytestocopy) > content_buf_len) { char * tmp; - if(content_length >= (int)(content_buf_used + bytestocopy)) { + if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) { content_buf_len = content_length; } else { content_buf_len = content_buf_used + bytestocopy; @@ -309,14 +310,15 @@ getHTTPResponse(int s, int * size, int * status_code) { /* not chunked */ if(content_length > 0 - && (int)(content_buf_used + n) > content_length) { + && (content_buf_used + n) > (unsigned int)content_length) { /* skipping additional bytes */ n = content_length - content_buf_used; } if(content_buf_used + n > content_buf_len) { char * tmp; - if(content_length >= (int)(content_buf_used + n)) { + if(content_length >= 0 + && (unsigned int)content_length >= (content_buf_used + n)) { content_buf_len = content_length; } else { content_buf_len = content_buf_used + n; @@ -336,7 +338,7 @@ getHTTPResponse(int s, int * size, int * status_code) } } /* use the Content-Length header value if available */ - if(content_length > 0 && (int)content_buf_used >= content_length) + if(content_length > 0 && content_buf_used >= (unsigned int)content_length) { #ifdef DEBUG printf("End of HTTP content\n"); diff --git a/external/miniupnpc/testdesc/new_LiveBox_desc.xml b/external/miniupnpc/testdesc/new_LiveBox_desc.xml index 3e522df..7619a4b 100644 --- a/external/miniupnpc/testdesc/new_LiveBox_desc.xml +++ b/external/miniupnpc/testdesc/new_LiveBox_desc.xml @@ -87,4 +87,4 @@ - \ No newline at end of file + diff --git a/external/unbound/.gitattributes b/external/unbound/.gitattributes new file mode 100644 index 0000000..6414a0a --- /dev/null +++ b/external/unbound/.gitattributes @@ -0,0 +1 @@ +testdata/*.[0-9] linguist-documentation diff --git a/external/unbound/.gitignore b/external/unbound/.gitignore new file mode 100644 index 0000000..baf06fa --- /dev/null +++ b/external/unbound/.gitignore @@ -0,0 +1,39 @@ +*.lo +*.o +/.libs/ +/Makefile +/autom4te.cache/ +/config.h +/config.log +/config.status +/dnstap/dnstap_config.h +/dnscrypt/dnscrypt_config.h +/doc/example.conf +/doc/libunbound.3 +/doc/unbound-anchor.8 +/doc/unbound-checkconf.8 +/doc/unbound-control.8 +/doc/unbound-host.1 +/doc/unbound.8 +/doc/unbound.conf.5 +/libtool +/libunbound.la +/smallapp/unbound-control-setup.sh +/unbound +/unbound-anchor +/unbound-checkconf +/unbound-control +/unbound-control-setup +/unbound-host +/unbound.h +/asynclook +/delayer +/lock-verify +/memstats +/perf +/petal +/pktview +/streamtcp +/testbound +/unittest + diff --git a/external/unbound/CMakeLists.txt b/external/unbound/CMakeLists.txt index c1e2d68..06f7455 100644 --- a/external/unbound/CMakeLists.txt +++ b/external/unbound/CMakeLists.txt @@ -1,21 +1,21 @@ -# Copyright (c) 2014-2016, The Monero Project -# +# Copyright (c) 2014-2018, The Monero Project +# # All rights reserved. -# +# # Redistribution and use in source and binary forms, with or without modification, are # permitted provided that the following conditions are met: -# +# # 1. Redistributions of source code must retain the above copyright notice, this list of # conditions and the following disclaimer. -# +# # 2. Redistributions in binary form must reproduce the above copyright notice, this list # of conditions and the following disclaimer in the documentation and/or other # materials provided with the distribution. -# +# # 3. Neither the name of the copyright holder nor the names of its contributors may be # used to endorse or promote products derived from this software without specific # prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL @@ -30,22 +30,6 @@ cmake_minimum_required(VERSION 2.8.7) project(unbound C) -if (APPLE) - if (NOT OpenSSL_DIR) - EXECUTE_PROCESS(COMMAND brew --prefix openssl - OUTPUT_VARIABLE OPENSSL_ROOT_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE) - message(STATUS "Using OpenSSL found at ${OPENSSL_ROOT_DIR}") - endif() -endif() - -find_package(OpenSSL REQUIRED) -if(STATIC) - if(UNIX) - set(OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES};${CMAKE_DL_LIBS}") - endif() -endif() - find_package(Threads) include(configure_checks.cmake) @@ -60,11 +44,19 @@ endif () set(RETSIGTYPE void) +if(CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)") +add_definitions(-D_XOPEN_SOURCE=600) +else() add_definitions(-D_GNU_SOURCE) +endif() +add_definitions(-std=c99) +add_definitions(-fPIC) option(USE_ECDSA "Use ECDSA algorithms" ON) option(USE_SHA2 "Enable SHA2 support" ON) +option(USE_SHA1 "Enable SHA1 support" ON) set(ENABLE_DNSTAP 0) +set(ENABLE_DNSCRYPT 0) set(HAVE_SSL 1) if (CMAKE_USE_PTHREADS_INIT AND NOT CMAKE_USE_WIN32_THREADS_INIT) set(HAVE_PTHREAD 1) @@ -76,14 +68,27 @@ if (CMAKE_USE_WIN32_THREADS_INIT) else () set(HAVE_WINDOWS_THREADS 0) endif () + +# determine if we have libressl +check_symbol_exists(LIBRESSL_VERSION_TEXT "openssl/opensslv.h" HAVE_LIBRESSL) +# check if we have found HAVE_DECL_REALLOCARRAY already, so we can safely undefine and redefine it with value 1 +if (HAVE_LIBRESSL AND HAVE_DECL_REALLOCARRAY) + unset(HAVE_DECL_REALLOCARRAY CACHE) + add_definitions(-DHAVE_DECL_REALLOCARRAY=1) +endif () + configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h") configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/dnstap/dnstap_config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/dnstap/dnstap_config.h") +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/dnscrypt/dnscrypt_config.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/dnscrypt/dnscrypt_config.h") set(common_src + services/authzone.c services/cache/dns.c services/cache/infra.c services/cache/rrset.c @@ -101,13 +106,16 @@ set(common_src iterator/iter_resptype.c iterator/iter_scrub.c iterator/iter_utils.c + respip/respip.c services/listen_dnsport.c services/localzone.c services/mesh.c services/modstack.c services/outbound_list.c services/outside_network.c + services/view.c util/alloc.c + util/as112.c util/config_file.c util/configlexer.c util/configparser.c @@ -128,6 +136,7 @@ set(common_src util/storage/slabhash.c util/timehist.c util/tube.c + util/ub_event.c util/winsock_event.c validator/autotrust.c validator/val_anchor.c @@ -147,7 +156,7 @@ set(common_src set(compat_src) -foreach (symbol IN ITEMS ctime_r gmtime_r inet_aton inet_ntop inet_pton isblank malloc memmove snprintf strlcat strlcpy strptime explicit_bzero arc4random arc4random_uniform reallocarray) +foreach (symbol IN ITEMS ctime_r gmtime_r inet_aton inet_ntop inet_pton isblank malloc memmove snprintf strsep strlcat strlcpy strptime explicit_bzero arc4random arc4random_uniform reallocarray) string(TOUPPER "${symbol}" upper_sym) if (NOT HAVE_${upper_sym}) list(APPEND compat_src @@ -213,24 +222,12 @@ if (WIN32) ws2_32) endif () -if (MINGW) - # There is no variable for this (probably due to the fact that the pthread - # library is implicit with a link in msys). - find_library(win32pthread - NAMES libwinpthread-1.dll) - foreach (input IN LISTS win32pthread OPENSSL_LIBRARIES) - # Copy shared libraries into the build tree so that no PATH manipulation is - # necessary. - get_filename_component(name "${input}" NAME) - configure_file( - "${input}" - "${CMAKE_BINARY_DIR}/bin/${name}" - COPYONLY) - endforeach () -endif () - - if (INSTALL_VENDORED_LIBUNBOUND) + if(IOS) + set(lib_folder lib-${ARCH}) + else() + set(lib_folder lib) + endif() install(TARGETS unbound - ARCHIVE DESTINATION lib) -endif() + ARCHIVE DESTINATION ${lib_folder}) +endif() diff --git a/external/unbound/Makefile.in b/external/unbound/Makefile.in index 293e63c..4bdb705 100644 --- a/external/unbound/Makefile.in +++ b/external/unbound/Makefile.in @@ -23,6 +23,8 @@ CHECKLOCK_SRC=testcode/checklocks.c CHECKLOCK_OBJ=@CHECKLOCK_OBJ@ DNSTAP_SRC=@DNSTAP_SRC@ DNSTAP_OBJ=@DNSTAP_OBJ@ +DNSCRYPT_SRC=@DNSCRYPT_SRC@ +DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ WITH_PYUNBOUND=@WITH_PYUNBOUND@ PY_MAJOR_VERSION=@PY_MAJOR_VERSION@ @@ -54,6 +56,7 @@ LEX=@LEX@ STRIP=@STRIP@ CC=@CC@ CPPFLAGS=-I. @CPPFLAGS@ +PYTHON_CPPFLAGS=-I. @PYTHON_CPPFLAGS@ CFLAGS=@CFLAGS@ LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ @@ -80,7 +83,7 @@ LINTFLAGS+=@NETBSD_LINTFLAGS@ # compat with OpenBSD LINTFLAGS+="-Dsigset_t=long" # FreeBSD -LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int" "-D_RuneLocale=int" "-D__va_list=va_list" +LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int" "-D_RuneLocale=int" "-D__va_list=va_list" "-D__uint32_t=uint32_t" INSTALL=$(SHELL) $(srcdir)/install-sh @@ -94,37 +97,50 @@ PYTHONMOD_HEADER=@PYTHONMOD_HEADER@ PYUNBOUND_SRC= # libunbound_wrap.lo if python libunbound wrapper enabled. PYUNBOUND_OBJ=@PYUNBOUND_OBJ@ +SUBNET_SRC=edns-subnet/edns-subnet.c edns-subnet/subnetmod.c edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c +SUBNET_OBJ=@SUBNET_OBJ@ +SUBNET_HEADER=@SUBNET_HEADER@ +IPSECMOD_SRC=ipsecmod/ipsecmod.c ipsecmod/ipsecmod-whitelist.c +IPSECMOD_OBJ=@IPSECMOD_OBJ@ +IPSECMOD_HEADER=@IPSECMOD_HEADER@ COMMON_SRC=services/cache/dns.c services/cache/infra.c services/cache/rrset.c \ -util/data/dname.c util/data/msgencode.c util/data/msgparse.c \ +util/as112.c util/data/dname.c util/data/msgencode.c util/data/msgparse.c \ util/data/msgreply.c util/data/packed_rrset.c iterator/iterator.c \ iterator/iter_delegpt.c iterator/iter_donotq.c iterator/iter_fwd.c \ iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \ iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \ -services/localzone.c services/mesh.c services/modstack.c \ +services/localzone.c services/mesh.c services/modstack.c services/view.c \ services/outbound_list.c services/outside_network.c util/alloc.c \ util/config_file.c util/configlexer.c util/configparser.c \ +util/shm_side/shm_main.c services/authzone.c \ util/fptr_wlist.c util/locks.c util/log.c util/mini_event.c util/module.c \ util/netevent.c util/net_help.c util/random.c util/rbtree.c util/regional.c \ util/rtt.c util/storage/dnstree.c util/storage/lookup3.c \ util/storage/lruhash.c util/storage/slabhash.c util/timehist.c util/tube.c \ -util/winsock_event.c validator/autotrust.c validator/val_anchor.c \ -validator/validator.c validator/val_kcache.c validator/val_kentry.c \ -validator/val_neg.c validator/val_nsec3.c validator/val_nsec.c \ -validator/val_secalgo.c validator/val_sigcrypt.c \ -validator/val_utils.c dns64/dns64.c $(CHECKLOCK_SRC) $(DNSTAP_SRC) +util/ub_event.c util/ub_event_pluggable.c util/winsock_event.c \ +validator/autotrust.c validator/val_anchor.c validator/validator.c \ +validator/val_kcache.c validator/val_kentry.c validator/val_neg.c \ +validator/val_nsec3.c validator/val_nsec.c validator/val_secalgo.c \ +validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ +edns-subnet/edns-subnet.c edns-subnet/subnetmod.c \ +edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c \ +cachedb/cachedb.c cachedb/redis.c respip/respip.c $(CHECKLOCK_SRC) \ +$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ -msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ +as112.lo msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ -iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo \ +iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo view.lo \ outbound_list.lo alloc.lo config_file.lo configlexer.lo configparser.lo \ fptr_wlist.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \ random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \ slabhash.lo timehist.lo tube.lo winsock_event.lo autotrust.lo val_anchor.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ -val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo \ -$(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) -COMMON_OBJ=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ +val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ +$(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ +$(IPSECMOD_OBJ) respip.lo +COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo +COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo # set to $COMMON_OBJ or to "" if --enableallsymbols COMMON_OBJ_ALL_SYMBOLS=@COMMON_OBJ_ALL_SYMBOLS@ COMPAT_SRC=compat/ctime_r.c compat/fake-rfc2553.c compat/gmtime_r.c \ @@ -133,7 +149,8 @@ compat/memcmp.c compat/memmove.c compat/snprintf.c compat/strlcat.c \ compat/strlcpy.c compat/strptime.c compat/getentropy_linux.c \ compat/getentropy_osx.c compat/getentropy_solaris.c compat/getentropy_win.c \ compat/explicit_bzero.c compat/arc4random.c compat/arc4random_uniform.c \ -compat/arc4_lock.c compat/sha512.c compat/reallocarray.c compat/isblank.c +compat/arc4_lock.c compat/sha512.c compat/reallocarray.c compat/isblank.c \ +compat/strsep.c COMPAT_OBJ=$(LIBOBJS:.o=.lo) COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo) COMPAT_OBJ_WITHOUT_CTIMEARC4=$(LIBOBJ_WITHOUT_CTIMEARC4:.o=.lo) @@ -144,15 +161,16 @@ str2wire.lo UNITTEST_SRC=testcode/unitanchor.c testcode/unitdname.c \ testcode/unitlruhash.c testcode/unitmain.c testcode/unitmsgparse.c \ testcode/unitneg.c testcode/unitregional.c testcode/unitslabhash.c \ -testcode/unitverify.c testcode/readhex.c testcode/testpkts.c testcode/unitldns.c +testcode/unitverify.c testcode/readhex.c testcode/testpkts.c testcode/unitldns.c \ +testcode/unitecs.c testcode/unitauth.c UNITTEST_OBJ=unitanchor.lo unitdname.lo unitlruhash.lo unitmain.lo \ unitmsgparse.lo unitneg.lo unitregional.lo unitslabhash.lo unitverify.lo \ -readhex.lo testpkts.lo unitldns.lo +readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(SLDNS_OBJ) \ $(COMPAT_OBJ) DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \ daemon/remote.c daemon/stats.c daemon/unbound.c daemon/worker.c @WIN_DAEMON_SRC@ -DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo remote.lo stats.lo unbound.lo \ +DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo shm_main.lo remote.lo stats.lo unbound.lo \ worker.lo @WIN_DAEMON_OBJ@ DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ $(COMPAT_OBJ) @WIN_DAEMON_OBJ_LINK@ @@ -176,7 +194,8 @@ daemon/worker.c daemon/acl_list.c daemon/daemon.c daemon/stats.c \ testcode/replay.c testcode/fake_event.c TESTBOUND_OBJ=testbound.lo replay.lo fake_event.lo TESTBOUND_OBJ_LINK=$(TESTBOUND_OBJ) testpkts.lo worker.lo acl_list.lo \ -daemon.lo stats.lo $(COMMON_OBJ_WITHOUT_NETCALL) $(SLDNS_OBJ) $(COMPAT_OBJ) +daemon.lo stats.lo shm_main.lo $(COMMON_OBJ_WITHOUT_NETCALL) ub_event.lo $(SLDNS_OBJ) \ +$(COMPAT_OBJ) LOCKVERIFY_SRC=testcode/lock_verify.c LOCKVERIFY_OBJ=lock_verify.lo LOCKVERIFY_OBJ_LINK=$(LOCKVERIFY_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ @@ -208,22 +227,22 @@ DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ libunbound/libworker.c -LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo -LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ) $(SLDNS_OBJ) $(COMPAT_OBJ) +LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo ub_event_pluggable.lo +LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ_WITHOUT_UB_EVENT) $(SLDNS_OBJ) $(COMPAT_OBJ) # win apps or "" if not on windows WINAPPS=@WINAPPS@ WIN_DAEMON_THE_SRC=winrc/win_svc.c winrc/w_inst.c SVCINST_SRC=winrc/unbound-service-install.c SVCINST_OBJ=unbound-service-install.lo -SVCINST_OBJ_LINK=$(SVCINST_OBJ) w_inst.lo rsrc_svcinst.o $(COMPAT_OBJ_WITHOUT_CTIME) +SVCINST_OBJ_LINK=$(SVCINST_OBJ) w_inst.lo rsrc_svcinst.o $(COMPAT_OBJ_WITHOUT_CTIMEARC4) SVCUNINST_SRC=winrc/unbound-service-remove.c SVCUNINST_OBJ=unbound-service-remove.lo SVCUNINST_OBJ_LINK=$(SVCUNINST_OBJ) w_inst.lo rsrc_svcuninst.o \ -$(COMPAT_OBJ_WITHOUT_CTIME) +$(COMPAT_OBJ_WITHOUT_CTIMEARC4) ANCHORUPD_SRC=winrc/anchor-update.c ANCHORUPD_OBJ=anchor-update.lo -ANCHORUPD_OBJ_LINK=$(ANCHORUPD_OBJ) rsrc_anchorupd.o $(COMPAT_OBJ_WITHOUT_CTIME) +ANCHORUPD_OBJ_LINK=$(ANCHORUPD_OBJ) rsrc_anchorupd.o $(COMPAT_OBJ_WITHOUT_CTIMEARC4) wire2str.lo str2wire.lo parseutil.lo sbuffer.lo rrdef.lo keyraw.lo parse.lo RSRC_OBJ=rsrc_svcinst.o rsrc_svcuninst.o rsrc_anchorupd.o rsrc_unbound.o \ rsrc_unbound_host.o rsrc_unbound_anchor.o rsrc_unbound_control.o \ rsrc_unbound_checkconf.o @@ -245,7 +264,7 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -LINK_LIB=$(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(staticexe) -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined +LINK_LIB=$(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined .PHONY: clean realclean doc lint all install uninstall tests test strip lib longtest longcheck check alltargets @@ -308,7 +327,7 @@ unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) + $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) unbound-anchor$(EXEEXT): $(UBANCHOR_OBJ_LINK) libunbound.la $(LINK) -o $@ $(UBANCHOR_OBJ_LINK) -L. -L.libs -lunbound -lexpat $(SSLLIB) $(LIBS) @@ -341,7 +360,7 @@ memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) $(LIBS) -L. -L.libs -lunbound + $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) @@ -370,10 +389,17 @@ dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h dnstap/dnstap_config.h \ dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h: $(srcdir)/dnstap/dnstap.proto @-if test ! -d dnstap; then $(INSTALL) -d dnstap; fi - $(PROTOC_C) --c_out=. $(srcdir)/dnstap/dnstap.proto + $(PROTOC_C) --c_out=. --proto_path=$(srcdir) $(srcdir)/dnstap/dnstap.proto dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h +# dnscrypt +dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ + dnscrypt/dnscrypt_config.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h + # Python Module pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ pythonmod/interface.h \ @@ -389,17 +415,17 @@ pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ pythonmod/interface.h: $(srcdir)/pythonmod/interface.i config.h @-if test ! -d pythonmod; then $(INSTALL) -d pythonmod; fi - $(SWIG) $(CPPFLAGS) -o $@ -python $(srcdir)/pythonmod/interface.i + $(SWIG) $(PYTHON_CPPFLAGS) -o $@ -python $(srcdir)/pythonmod/interface.i libunbound_wrap.lo libunbound_wrap.o: libunbound/python/libunbound_wrap.c \ unbound.h libunbound/python/libunbound_wrap.c: $(srcdir)/libunbound/python/libunbound.i unbound.h @-if test ! -d libunbound/python; then $(INSTALL) -d libunbound/python; fi - $(SWIG) -python -o $@ $(CPPFLAGS) -DPY_MAJOR_VERSION=$(PY_MAJOR_VERSION) $(srcdir)/libunbound/python/libunbound.i + $(SWIG) -python -o $@ $(PYTHON_CPPFLAGS) -DPY_MAJOR_VERSION=$(PY_MAJOR_VERSION) $(srcdir)/libunbound/python/libunbound.i # Pyunbound python unbound wrapper _unbound.la: libunbound_wrap.lo libunbound.la - $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) L. -L.libs -lunbound + $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) -L. -L.libs -lunbound util/config_file.c: util/configparser.h util/configlexer.c: $(srcdir)/util/configlexer.lex util/configparser.h @@ -506,11 +532,13 @@ install-all: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTA $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man8 $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man5 $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 - $(LIBTOOL) --mode=install cp unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound$(EXEEXT) - $(LIBTOOL) --mode=install cp unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) - $(LIBTOOL) --mode=install cp unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) - $(LIBTOOL) --mode=install cp unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT) - $(LIBTOOL) --mode=install cp unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT) + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL) -m 644 contrib/libunbound.pc $(DESTDIR)$(libdir)/pkgconfig + $(LIBTOOL) --mode=install cp -f unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound$(EXEEXT) + $(LIBTOOL) --mode=install cp -f unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) + $(LIBTOOL) --mode=install cp -f unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) + $(LIBTOOL) --mode=install cp -f unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT) + $(LIBTOOL) --mode=install cp -f unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT) $(INSTALL) -c -m 644 doc/unbound.8 $(DESTDIR)$(mandir)/man8 $(INSTALL) -c -m 644 doc/unbound-checkconf.8 $(DESTDIR)$(mandir)/man8 $(INSTALL) -c -m 644 doc/unbound-control.8 $(DESTDIR)$(mandir)/man8 @@ -551,7 +579,7 @@ uninstall: $(PYTHONMOD_UNINSTALL) $(PYUNBOUND_UNINSTALL) $(UNBOUND_EVENT_UNINSTA @echo "You still need to remove "`dirname $(DESTDIR)$(configfile)`" , $(DESTDIR)$(configfile) by hand" iana_update: - curl -o port-numbers.tmp http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed + curl -o port-numbers.tmp https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed if file port-numbers.tmp | grep 'gzip' >/dev/null; then zcat port-numbers.tmp; else cat port-numbers.tmp; fi | awk '// {p=0;} /udp/ {p=1;} /[^u]/ {p=0;} /Decomissioned|Decommissioned|Removed|De-registered|unassigned|Unassigned|Reserved/ {u=1;} // { if(u==1) {u=0;} else { if(p==1) { match($$0,/[0-9]+/); print substr($$0, RSTART, RLENGTH) ","}}}' | sort -nu > util/iana_ports.inc rm -f port-numbers.tmp @@ -579,7 +607,10 @@ depend: -e 's?$$(srcdir)/util/configparser.c?util/configparser.c?g' \ -e 's?$$(srcdir)/util/configparser.h?util/configparser.h?g' \ -e 's?$$(srcdir)/dnstap/dnstap_config.h??g' \ + -e 's?$$(srcdir)/dnscrypt/dnscrypt_config.h??g' \ -e 's?$$(srcdir)/pythonmod/pythonmod.h?$$(PYTHONMOD_HEADER)?g' \ + -e 's?$$(srcdir)/edns-subnet/subnetmod.h $$(srcdir)/edns-subnet/subnet-whitelist.h $$(srcdir)/edns-subnet/edns-subnet.h $$(srcdir)/edns-subnet/addrtree.h?$$(SUBNET_HEADER)?g' \ + -e 's?$$(srcdir)/ipsecmod/ipsecmod.h $$(srcdir)/ipsecmod/ipsecmod-whitelist.h?$$(IPSECMOD_HEADER)?g' \ -e 's!\(.*\)\.o[ :]*!\1.lo \1.o: !g' \ > $(DEPEND_TMP) cp $(DEPEND_TARGET) $(DEPEND_TMP2) @@ -597,330 +628,517 @@ depend: # Dependencies dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/services/cache/dns.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/util/data/msgreply.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h 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/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/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.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/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 \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h +as112.lo as112.o: $(srcdir)/util/as112.c $(srcdir)/util/as112.h dname.lo dname.o: $(srcdir)/util/data/dname.c config.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/storage/lookup3.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/sldns/sbuffer.h msgencode.lo msgencode.o: $(srcdir)/util/data/msgencode.c config.h $(srcdir)/util/data/msgencode.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/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/sbuffer.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h \ + $(srcdir)/util/net_help.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h $(srcdir)/services/view.h msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c config.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/data/dname.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/regional.h $(srcdir)/sldns/sbuffer.h $(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/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/data/packed_rrset.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 \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h iterator.lo iterator.o: $(srcdir)/iterator/iterator.c config.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.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/module.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/iterator/iter_utils.h \ - $(srcdir)/iterator/iter_resptype.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_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/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.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_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)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.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/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 \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/sldns/sbuffer.h iter_donotq.lo iter_donotq.o: $(srcdir)/iterator/iter_donotq.c config.h $(srcdir)/iterator/iter_donotq.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h iter_fwd.lo iter_fwd.o: $(srcdir)/iterator/iter_fwd.c config.h $(srcdir)/iterator/iter_fwd.h \ $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h + $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h iter_hints.lo iter_hints.o: $(srcdir)/iterator/iter_hints.c config.h $(srcdir)/iterator/iter_hints.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/sldns/wire2str.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h iter_priv.lo iter_priv.o: $(srcdir)/iterator/iter_priv.c config.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h $(srcdir)/util/config_file.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)/util/net_help.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/sbuffer.h iter_resptype.lo iter_resptype.o: $(srcdir)/iterator/iter_resptype.c config.h \ $(srcdir)/iterator/iter_resptype.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/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h iter_scrub.lo iter_scrub.o: $(srcdir)/iterator/iter_scrub.c config.h $(srcdir)/iterator/iter_scrub.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.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/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/iterator/iter_priv.h $(srcdir)/util/rbtree.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/util/alloc.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/iterator/iter_priv.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/util/alloc.h \ + $(srcdir)/sldns/sbuffer.h iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/iterator/iter_utils.h \ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.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/module.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(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)/services/cache/dns.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/netevent.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)/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)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.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)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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/storage/lruhash.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.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)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.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)/testcode/checklocks.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)/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)/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)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.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)/testcode/checklocks.h $(srcdir)/services/localzone.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)/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 $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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/msgparse.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/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)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.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)/testcode/checklocks.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)/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)/testcode/checklocks.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)/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)/edns-subnet/edns-subnet.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)/libunbound/unbound.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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)/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 +authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.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)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/random.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/outside_network.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.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)/services/cache/infra.h $(srcdir)/util/storage/dnstree.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 -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 + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/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/authzone.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/unbound-event.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)/ipsecmod/ipsecmod.h \ + $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h +locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h +log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.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/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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)/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 -netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/netevent.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 $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/util/fptr_wlist.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)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.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 \ - $(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/regional.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.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/regional.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ + 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/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/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 \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/net_help.h + $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/testcode/checklocks.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 + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/fptr_wlist.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)/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/locks.h $(srcdir)/testcode/checklocks.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/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/fptr_wlist.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)/services/mesh.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.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 \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_utils.h \ - $(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)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h $(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/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)/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 \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/autotrust.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/autotrust.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/as112.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/sldns/str2wire.h validator.lo validator.o: $(srcdir)/validator/validator.c config.h $(srcdir)/validator/validator.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)/validator/val_utils.h \ + $(srcdir)/testcode/checklocks.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)/validator/val_utils.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_kcache.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_nsec.h \ $(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)/validator/autotrust.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.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)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/modstack.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.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 \ - $(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)/testcode/checklocks.h $(srcdir)/validator/val_kentry.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/dname.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 val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ + +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/validator.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/validator/val_nsec.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/validator/val_secalgo.h \ + $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/validator/val_kentry.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/validator/val_nsec.h \ + $(srcdir)/sldns/sbuffer.h val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/validator/val_nsec.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h + $(srcdir)/testcode/checklocks.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/sbuffer.h \ + val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/validator.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ + val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/regional.h + $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_neg.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.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)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.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)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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/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)/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 +edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h +subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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/outbound_list.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h +addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/edns-subnet/addrtree.h +subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ + $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.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)/testcode/checklocks.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)/cachedb/redis.h $(srcdir)/util/regional.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h \ + $(srcdir)/validator/val_secalgo.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h +redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h $(srcdir)/cachedb/redis.h $(srcdir)/cachedb/cachedb.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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/alloc.h \ + $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h +respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/util/config_file.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 \ + $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/lookup3.h +ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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/rbtree.h \ + $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.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/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/wire2str.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ + $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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/rbtree.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.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 + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/sldns/rrdef.h unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ - $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/util/log.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/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/storage/slabhash.h +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/random.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 \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/alloc.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/testcode/readhex.h \ - $(srcdir)/testcode/testpkts.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h + $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.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/alloc.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/testcode/readhex.h $(srcdir)/testcode/testpkts.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h \ + $(srcdir)/sldns/wire2str.h unitneg.lo unitneg.o: $(srcdir)/testcode/unitneg.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/data/dname.h $(srcdir)/testcode/unitmain.h $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h \ - $(srcdir)/sldns/rrdef.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/data/dname.h $(srcdir)/testcode/unitmain.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h unitregional.lo unitregional.o: $(srcdir)/testcode/unitregional.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h unitslabhash.lo unitslabhash.o: $(srcdir)/testcode/unitslabhash.c config.h $(srcdir)/testcode/unitmain.h \ - $(srcdir)/util/log.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h + $(srcdir)/util/log.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.h unitverify.lo unitverify.o: $(srcdir)/testcode/unitverify.c config.h $(srcdir)/util/log.h \ $(srcdir)/testcode/unitmain.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/validator/val_secalgo.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/util/rbtree.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/testcode/testpkts.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h \ $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h @@ -931,14 +1149,33 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h +unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.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)/testcode/unitmain.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/edns-subnet.h +unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.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)/testcode/unitmain.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h -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/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h $(srcdir)/services/localzone.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)/sldns/str2wire.h +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)/testcode/checklocks.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)/libunbound/unbound.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 \ @@ -946,229 +1183,291 @@ cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon $(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 \ +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/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)/libunbound/unbound.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 \ + $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.h +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/netevent.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h -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)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.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 \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/validator/val_anchor.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_delegpt.h \ - $(srcdir)/services/outside_network.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h + $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/util/data/dname.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/services/outside_network.h \ + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.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)/libunbound/unbound.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)/testcode/checklocks.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)/iterator/iterator.h $(srcdir)/services/outbound_list.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/rtt.h $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h \ + $(srcdir)/validator/val_neg.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)/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/fptr_wlist.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/net_help.h \ - $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.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)/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)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.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 $(srcdir)/services/outbound_list.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ - $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/libunbound/libworker.h + $(srcdir)/testcode/checklocks.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)/libunbound/unbound.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 \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/respip/respip.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.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)/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/fptr_wlist.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/net_help.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.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)/daemon/daemon.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 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)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.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 $(srcdir)/services/outbound_list.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ - $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/libunbound/libworker.h -acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.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)/testcode/checklocks.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/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.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 \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/respip/respip.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h +acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/net_help.h $(srcdir)/services/localzone.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)/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)/testcode/checklocks.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)/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)/libunbound/unbound.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 \ + $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ + $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/respip/respip.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)/libunbound/unbound.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)/testcode/checklocks.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)/iterator/iterator.h $(srcdir)/services/outbound_list.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/rtt.h $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h \ + $(srcdir)/validator/val_neg.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)/util/locks.h \ + $(srcdir)/testcode/checklocks.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/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.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)/testcode/checklocks.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 \ - $(srcdir)/sldns/parseutil.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.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 $(srcdir)/sldns/parseutil.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)/testcode/checklocks.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 \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \ - $(srcdir)/sldns/sbuffer.h + $(srcdir)/testcode/checklocks.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/net_help.h \ + $(srcdir)/util/regional.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h $(srcdir)/sldns/sbuffer.h \ + $(PYTHONMOD_HEADER) $(srcdir)/edns-subnet/subnet-whitelist.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.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 \ - $(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)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.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)/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 \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/localzone.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)/sldns/sbuffer.h + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.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/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)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnscrypt/cert.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.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 \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/libunbound/libworker.h \ - $(srcdir)/util/config_file.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/regional.h \ - $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.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)/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/log.h $(srcdir)/testcode/checklocks.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/libunbound/libworker.h $(srcdir)/util/config_file.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/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)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h \ + $(srcdir)/services/mesh.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)/testcode/checklocks.h $(srcdir)/libunbound/context.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/outside_network.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)/services/authzone.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)/util/storage/dnstree.h $(srcdir)/sldns/str2wire.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 \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ + asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.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)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/sldns/rrdef.h + $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h \ + streamtcp.lo streamtcp.o: $(srcdir)/testcode/streamtcp.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h -perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/testcode/checklocks.h $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ + +perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h \ + $(srcdir)/testcode/checklocks.h $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h -unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h $(srcdir)/util/log.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h +unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \ + $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/testcode/checklocks.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/pkthdr.h unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h -petal.lo petal.o: $(srcdir)/testcode/petal.c config.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ + +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)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/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/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/testcode/checklocks.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)/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/winsock_event.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)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \ $(srcdir)/winrc/w_inst.h @@ -1176,18 +1475,22 @@ unbound-service-remove.lo unbound-service-remove.o: $(srcdir)/winrc/unbound-serv $(srcdir)/winrc/w_inst.h anchor-update.lo anchor-update.o: $(srcdir)/winrc/anchor-update.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/wire2str.h -keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/rrdef.h +keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/rrdef.h \ + sbuffer.lo sbuffer.o: $(srcdir)/sldns/sbuffer.c config.h $(srcdir)/sldns/sbuffer.h wire2str.lo wire2str.o: $(srcdir)/sldns/wire2str.c config.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/keyraw.h + $(srcdir)/sldns/keyraw.h \ + parse.lo parse.o: $(srcdir)/sldns/parse.c config.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/sldns/sbuffer.h parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/parseutil.h rrdef.lo rrdef.o: $(srcdir)/sldns/rrdef.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h str2wire.lo str2wire.o: $(srcdir)/sldns/str2wire.c config.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h -ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h +ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/checklocks.h fake-rfc2553.lo fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c $(srcdir)/compat/fake-rfc2553.h config.h gmtime_r.lo gmtime_r.o: $(srcdir)/compat/gmtime_r.c config.h inet_aton.lo inet_aton.o: $(srcdir)/compat/inet_aton.c config.h @@ -1200,9 +1503,11 @@ snprintf.lo snprintf.o: $(srcdir)/compat/snprintf.c config.h strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \ + getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h -getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h +getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h \ + getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h @@ -1211,3 +1516,4 @@ arc4_lock.lo arc4_lock.o: $(srcdir)/compat/arc4_lock.c config.h $(srcdir)/util/l sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h reallocarray.lo reallocarray.o: $(srcdir)/compat/reallocarray.c config.h isblank.lo isblank.o: $(srcdir)/compat/isblank.c config.h +strsep.lo strsep.o: $(srcdir)/compat/strsep.c config.h diff --git a/external/unbound/ac_pkg_swig.m4 b/external/unbound/ac_pkg_swig.m4 index 738f69d..87f99fb 100644 --- a/external/unbound/ac_pkg_swig.m4 +++ b/external/unbound/ac_pkg_swig.m4 @@ -103,9 +103,20 @@ AC_DEFUN([AC_PROG_SWIG],[ if test -z "$available_patch" ; then [available_patch=0] fi - if test $available_major -ne $required_major \ - -o $available_minor -ne $required_minor \ - -o $available_patch -lt $required_patch ; then + [badversion=0] + if test $available_major -lt $required_major ; then + [badversion=1] + fi + if test $available_major -eq $required_major \ + -a $available_minor -lt $required_minor ; then + [badversion=1] + fi + if test $available_major -eq $required_major \ + -a $available_minor -eq $required_minor \ + -a $available_patch -lt $required_patch ; then + [badversion=1] + fi + if test $badversion -eq 1 ; then AC_MSG_WARN([SWIG version >= $1 is required. You have $swig_version. You should look at http://www.swig.org]) SWIG='echo "Error: SWIG version >= $1 is required. You have '"$swig_version"'. You should look at http://www.swig.org" ; false' else diff --git a/external/unbound/aclocal.m4 b/external/unbound/aclocal.m4 index a50a630..002c472 100644 --- a/external/unbound/aclocal.m4 +++ b/external/unbound/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.13.4 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,9 +14,7 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -24,36 +22,30 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. # -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . ]) -# serial 57 LT_INIT +# serial 58 LT_INIT # LT_PREREQ(VERSION) @@ -81,7 +73,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl @@ -105,7 +97,7 @@ dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -125,26 +117,43 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + # _LT_CC_BASENAME(CC) # ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} @@ -191,15 +200,16 @@ m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -212,7 +222,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -223,14 +233,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -283,21 +293,21 @@ no_glob_subst='s/\*/\\\*/g' # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from `configure', and `config.status' +# Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' +# in macros and then make a single call at the end using the 'libtool' # label. @@ -429,8 +439,8 @@ m4_define([_lt_decl_all_varnames], # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) @@ -454,7 +464,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl +available_tags='_LT_TAGS'dnl ]) @@ -482,7 +492,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], @@ -508,8 +518,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], @@ -555,7 +565,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -568,7 +578,7 @@ for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -584,7 +594,7 @@ _LT_OUTPUT_LIBTOOL_INIT # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this +# '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). @@ -606,7 +616,7 @@ AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl +test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT @@ -629,7 +639,7 @@ exec AS_MESSAGE_LOG_FD>>config.log } >&AS_MESSAGE_LOG_FD lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, +'$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. @@ -651,7 +661,7 @@ Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." -while test $[#] != 0 +while test 0 != $[#] do case $[1] in --version | --v* | -V ) @@ -664,10 +674,10 @@ do lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; esac shift done @@ -693,7 +703,7 @@ chmod +x "$CONFIG_LT" # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: -test "$silent" = yes && +test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false @@ -713,32 +723,47 @@ m4_defun([_LT_CONFIG], _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. -# + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + _LT_COPYING _LT_LIBTOOL_TAGS +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + _LT_EOF case $host_os in @@ -747,7 +772,7 @@ _LT_EOF # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -764,8 +789,6 @@ _LT_EOF sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - _LT_PROG_REPLACE_SHELLFNS - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -783,7 +806,6 @@ _LT_EOF [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS @@ -980,7 +1002,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -998,7 +1020,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1016,7 +1038,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], @@ -1038,7 +1060,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1048,32 +1070,32 @@ _LT_EOF ]) case $host_os in rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -1093,29 +1115,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1135,7 +1157,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then +if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], @@ -1153,7 +1175,7 @@ else _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) @@ -1173,8 +1195,8 @@ m4_define([_LT_SHELL_INIT], # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO @@ -1202,10 +1224,10 @@ fi # Invoke $ECHO with all args, space-separated. func_echo_all () { - $ECHO "$*" + $ECHO "$*" } -case "$ECHO" in +case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; @@ -1231,16 +1253,17 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -1250,14 +1273,14 @@ case ${with_sysroot} in #( no|'') ;; #( *) - AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) +[dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- @@ -1265,31 +1288,33 @@ m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -1318,9 +1343,46 @@ ia64-*-hpux*) rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1330,7 +1392,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" @@ -1375,19 +1444,20 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1395,7 +1465,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -1404,7 +1474,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -1420,7 +1490,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK @@ -1439,11 +1509,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -1451,7 +1521,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], ]) ]) -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -1482,7 +1552,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -1518,7 +1588,7 @@ AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -1545,7 +1615,7 @@ AC_CACHE_CHECK([$1], [$2], $RM conftest* ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) @@ -1567,7 +1637,7 @@ AC_DEFUN([_LT_LINKER_OPTION], m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -1586,10 +1656,10 @@ AC_CACHE_CHECK([$1], [$2], fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) @@ -1610,7 +1680,7 @@ AC_DEFUN([LT_CMD_MAX_LEN], AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -1650,7 +1720,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1700,22 +1770,23 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -1731,7 +1802,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; esac ]) -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) @@ -1759,7 +1830,7 @@ m4_defun([_LT_HEADER_DLFCN], # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : +if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -1806,9 +1877,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -1834,7 +1905,7 @@ int main () return status; }] _LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in @@ -1855,7 +1926,7 @@ rm -fr conftest* # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then +if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -1865,44 +1936,52 @@ else case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], + [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], + [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) @@ -1911,21 +1990,21 @@ else ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], @@ -1935,7 +2014,7 @@ else lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl @@ -1945,9 +2024,9 @@ else ]) fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -2039,8 +2118,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS], m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes @@ -2050,8 +2129,8 @@ if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else @@ -2078,8 +2157,8 @@ objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR @@ -2091,15 +2170,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH], _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else @@ -2113,12 +2192,12 @@ else fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -2142,7 +2221,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) @@ -2160,6 +2239,47 @@ _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -2170,17 +2290,18 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -2196,28 +2317,35 @@ if test "$GCC" = yes; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -2231,7 +2359,7 @@ BEGIN {RS=" "; FS="/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -2240,7 +2368,7 @@ fi]) library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -2257,14 +2385,17 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) @@ -2272,41 +2403,91 @@ aix[[4-9]]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -2316,18 +2497,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -2335,8 +2516,8 @@ beos*) bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -2348,7 +2529,7 @@ bsdi[[45]]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -2357,8 +2538,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -2374,17 +2555,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -2393,8 +2574,8 @@ m4_if([$1], [],[ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -2421,7 +2602,7 @@ m4_if([$1], [],[ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -2434,8 +2615,8 @@ m4_if([$1], [],[ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -2448,7 +2629,7 @@ m4_if([$1], [],[ *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -2461,8 +2642,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -2475,8 +2656,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2494,12 +2675,13 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -2524,26 +2706,15 @@ freebsd* | dragonfly*) esac ;; -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2561,14 +2732,15 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -2576,8 +2748,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -2586,8 +2758,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -2600,8 +2772,8 @@ interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2612,7 +2784,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -2620,8 +2792,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -2640,8 +2812,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -2650,13 +2822,33 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2684,11 +2876,15 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu) # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2705,12 +2901,12 @@ netbsd*) need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -2720,7 +2916,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -2729,58 +2925,68 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -2791,8 +2997,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -2802,11 +3008,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -2814,8 +3020,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -2836,24 +3042,24 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -2871,7 +3077,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2879,8 +3085,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2889,20 +3095,30 @@ uts4*) ;; esac AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -2935,39 +3151,41 @@ _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- -# find a file program which can recognize shared library +# find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -2990,11 +3208,11 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else @@ -3012,7 +3230,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- -# find a file program which can recognize a shared library +# find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then @@ -3039,16 +3257,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], + [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -3062,7 +3280,7 @@ if test "$GCC" = yes; then while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -3073,37 +3291,37 @@ if test "$GCC" = yes; then with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3189,13 +3444,13 @@ lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) @@ -3222,8 +3477,7 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -3259,10 +3513,6 @@ freebsd* | dragonfly*) fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3301,7 +3551,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -3323,8 +3573,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' @@ -3377,6 +3627,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac ]) @@ -3417,33 +3670,38 @@ AC_DEFUN([LT_PATH_NM], AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -3454,21 +3712,21 @@ else esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -3476,8 +3734,8 @@ else esac fi AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -3523,8 +3781,8 @@ lt_cv_sharedlib_from_linklib_cmd, case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -3536,7 +3794,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) @@ -3563,13 +3821,28 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + # LT_LIB_M # -------- # check for math library @@ -3581,11 +3854,11 @@ case $host in # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) - AC_CHECK_LIB(m, cos, LIBM="-lm") + AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) @@ -3604,7 +3877,7 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; @@ -3656,7 +3929,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; @@ -3689,14 +3962,44 @@ case `$NM -V 2>&1` in symcode='[[ABCDGIRSTW]]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3714,21 +4017,24 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -3768,11 +4074,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else @@ -3798,7 +4104,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -3818,9 +4124,9 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -3841,7 +4147,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -3868,12 +4174,16 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3889,17 +4199,18 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -3910,8 +4221,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -3927,6 +4238,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -3976,7 +4292,7 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4017,14 +4333,14 @@ m4_if([$1], [CXX], [ case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -4053,7 +4369,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4061,7 +4377,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. + # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' @@ -4206,17 +4522,18 @@ m4_if([$1], [CXX], [ fi ], [ - if test "$GCC" = yes; then + if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4227,8 +4544,8 @@ m4_if([$1], [CXX], [ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -4245,6 +4562,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -4315,7 +4637,7 @@ m4_if([$1], [CXX], [ case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4323,11 +4645,30 @@ m4_if([$1], [CXX], [ fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -4343,7 +4684,7 @@ m4_if([$1], [CXX], [ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -4352,9 +4693,9 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4379,6 +4720,12 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4476,7 +4823,7 @@ m4_if([$1], [CXX], [ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi @@ -4505,7 +4852,7 @@ m4_if([$1], [CXX], [ fi ]) case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -4571,17 +4918,21 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -4627,9 +4978,9 @@ m4_if([$1], [CXX], [ # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -4645,7 +4996,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -4653,7 +5004,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; esac @@ -4663,7 +5014,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -4685,24 +5036,24 @@ dnl Note also adjust exclude_expsyms for C++ above. esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -4715,7 +5066,7 @@ dnl Note also adjust exclude_expsyms for C++ above. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 @@ -4734,7 +5085,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -4750,7 +5101,7 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4760,7 +5111,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -4768,61 +5119,89 @@ _LT_EOF _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4833,42 +5212,47 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4882,8 +5266,8 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4901,8 +5285,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4914,7 +5298,7 @@ _LT_EOF _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -4929,9 +5313,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4948,15 +5332,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= @@ -4972,7 +5356,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported @@ -4980,34 +5364,57 @@ _LT_EOF ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -5026,13 +5433,21 @@ _LT_EOF _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -5051,61 +5466,80 @@ _LT_EOF ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -5114,7 +5548,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5144,16 +5578,17 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -5162,18 +5597,18 @@ _LT_EOF # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -5182,7 +5617,7 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -5232,33 +5667,33 @@ _LT_EOF ;; hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -5266,25 +5701,25 @@ _LT_EOF ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ @@ -5292,14 +5727,14 @@ _LT_EOF # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in @@ -5310,7 +5745,7 @@ _LT_EOF *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -5321,16 +5756,16 @@ _LT_EOF ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], @@ -5343,21 +5778,31 @@ _LT_EOF end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -5372,7 +5817,7 @@ _LT_EOF newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; @@ -5380,27 +5825,19 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no @@ -5411,33 +5848,53 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5448,24 +5905,24 @@ _LT_EOF solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -5475,11 +5932,11 @@ _LT_EOF solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi @@ -5489,10 +5946,10 @@ _LT_EOF ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -5541,43 +5998,43 @@ _LT_EOF ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -5592,17 +6049,17 @@ _LT_EOF ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld @@ -5619,7 +6076,7 @@ x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -5699,12 +6156,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the + "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR @@ -5745,10 +6202,10 @@ dnl [Compiler flag to generate thread safe objects]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" +lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. @@ -5784,18 +6241,18 @@ if test -n "$compiler"; then LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB - # Report which library types will actually be built + # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -5803,8 +6260,12 @@ if test -n "$compiler"; then ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -5812,13 +6273,13 @@ if test -n "$compiler"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP -CC="$lt_save_CC" +CC=$lt_save_CC ])# _LT_LANG_C_CONFIG @@ -5826,14 +6287,14 @@ CC="$lt_save_CC" # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes @@ -5875,7 +6336,7 @@ _LT_TAGVAR(objext, $1)=$objext # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then +if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -5917,35 +6378,35 @@ if test "$_lt_caught_CXX_error" != yes; then if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi - if test "$GXX" = yes; then + if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='${wl}' + wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi @@ -5981,18 +6442,30 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in @@ -6002,6 +6475,13 @@ if test "$_lt_caught_CXX_error" != yes; then ;; esac done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -6020,13 +6500,21 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GXX" = yes; then + if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -6044,64 +6532,84 @@ if test "$_lt_caught_CXX_error" != yes; then fi esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -6111,7 +6619,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6139,57 +6647,58 @@ if test "$_lt_caught_CXX_error" != yes; then # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6200,6 +6709,34 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_DARWIN_LINKER_FEATURES($1) ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + dgux*) case $cc_basename in ec++*) @@ -6234,18 +6771,15 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - gnu*) - ;; - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default @@ -6257,7 +6791,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6266,11 +6800,11 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -6280,15 +6814,15 @@ if test "$_lt_caught_CXX_error" != yes; then ;; hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi @@ -6314,13 +6848,13 @@ if test "$_lt_caught_CXX_error" != yes; then aCC*) case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -6331,20 +6865,20 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -6359,22 +6893,22 @@ if test "$_lt_caught_CXX_error" != yes; then interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -6383,22 +6917,22 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -6406,8 +6940,8 @@ if test "$_lt_caught_CXX_error" != yes; then # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6416,10 +6950,10 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -6433,59 +6967,59 @@ if test "$_lt_caught_CXX_error" != yes; then # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -6499,18 +7033,18 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -6518,10 +7052,10 @@ if test "$_lt_caught_CXX_error" != yes; then *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on @@ -6579,22 +7113,17 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -6610,9 +7139,9 @@ if test "$_lt_caught_CXX_error" != yes; then # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using @@ -6630,17 +7159,17 @@ if test "$_lt_caught_CXX_error" != yes; then cxx*) case $host in osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac @@ -6655,21 +7184,21 @@ if test "$_lt_caught_CXX_error" != yes; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists @@ -6715,9 +7244,9 @@ if test "$_lt_caught_CXX_error" != yes; then # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -6725,7 +7254,7 @@ if test "$_lt_caught_CXX_error" != yes; then solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. + # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; @@ -6742,30 +7271,30 @@ if test "$_lt_caught_CXX_error" != yes; then ;; gcx*) # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require `-G' NOT `-shared' on this + # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -6773,11 +7302,11 @@ if test "$_lt_caught_CXX_error" != yes; then output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi @@ -6786,52 +7315,52 @@ if test "$_lt_caught_CXX_error" != yes; then ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" + '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -6862,10 +7391,10 @@ if test "$_lt_caught_CXX_error" != yes; then esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -6892,7 +7421,7 @@ if test "$_lt_caught_CXX_error" != yes; then lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes +fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG @@ -6914,13 +7443,14 @@ AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -7004,13 +7534,13 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in + case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test $p = "-L" || - test $p = "-R"; then + if test x-L = "$p" || + test x-R = "$p"; then prev=$p continue fi @@ -7026,16 +7556,16 @@ if AC_TRY_EVAL(ac_compile); then case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in + if test no = "$pre_test_object_deps_done"; then + case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being @@ -7043,9 +7573,9 @@ if AC_TRY_EVAL(ac_compile); then esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" + _LT_TAGVAR(postdeps, $1)=$prev$p else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= @@ -7060,15 +7590,15 @@ if AC_TRY_EVAL(ac_compile); then continue fi - if test "$pre_test_object_deps_done" = no; then + if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" + _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" + _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi @@ -7099,51 +7629,6 @@ interix[[3-9]]*) _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; esac ]) @@ -7152,7 +7637,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) @@ -7172,10 +7657,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then +if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi @@ -7212,7 +7697,7 @@ _LT_TAGVAR(objext, $1)=$objext # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then +if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7234,7 +7719,7 @@ if test "$_lt_disable_F77" != yes; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} @@ -7248,21 +7733,25 @@ if test "$_lt_disable_F77" != yes; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7270,11 +7759,11 @@ if test "$_lt_disable_F77" != yes; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7291,9 +7780,9 @@ if test "$_lt_disable_F77" != yes; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG @@ -7303,11 +7792,11 @@ AC_LANG_POP # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) -if test -z "$FC" || test "X$FC" = "Xno"; then +if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi @@ -7344,7 +7833,7 @@ _LT_TAGVAR(objext, $1)=$objext # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then +if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7366,7 +7855,7 @@ if test "$_lt_disable_FC" != yes; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} @@ -7382,21 +7871,25 @@ if test "$_lt_disable_FC" != yes; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7404,11 +7897,11 @@ if test "$_lt_disable_FC" != yes; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7428,7 +7921,7 @@ if test "$_lt_disable_FC" != yes; then GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes +fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG @@ -7438,7 +7931,7 @@ AC_LANG_POP # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE @@ -7472,7 +7965,7 @@ CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. @@ -7505,7 +7998,7 @@ CFLAGS=$lt_save_CFLAGS # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE @@ -7539,7 +8032,7 @@ CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. @@ -7572,7 +8065,7 @@ CFLAGS=$lt_save_CFLAGS # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE @@ -7588,7 +8081,7 @@ _LT_TAGVAR(objext, $1)=$objext lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" +lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER @@ -7598,7 +8091,7 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= @@ -7627,7 +8120,7 @@ AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) @@ -7736,7 +8229,7 @@ lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue + test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -7753,9 +8246,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break + test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then + if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi @@ -7779,27 +8272,7 @@ dnl AC_DEFUN([LT_AC_PROG_SED], []) # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false @@ -7823,102 +8296,9 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- -# Determine which file name conversion functions should be used by +# Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], @@ -7985,15 +8365,15 @@ _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 7 ltoptions.m4 +# serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -8014,7 +8394,7 @@ m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl + [m4_warning([Unknown $1 option '$2'])])[]dnl ]) @@ -8060,13 +8440,15 @@ m4_if([$1],[LT_INIT],[ dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS @@ -8094,7 +8476,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) +put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -8130,7 +8512,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL], _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) +put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -8139,9 +8521,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], @@ -8154,14 +8536,14 @@ AC_ARG_ENABLE([shared], *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) @@ -8193,9 +8575,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], @@ -8208,14 +8590,14 @@ AC_ARG_ENABLE([static], *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) @@ -8247,9 +8629,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], @@ -8262,14 +8644,14 @@ AC_ARG_ENABLE([fast-install], *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) @@ -8286,14 +8668,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) +the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) +the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -8301,11 +8683,64 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], @@ -8316,19 +8751,17 @@ m4_define([_LT_WITH_PIC], *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC @@ -8341,7 +8774,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) +put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -8364,7 +8797,8 @@ LT_OPTION_DEFINE([LTDL_INIT], [convenience], # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -8397,7 +8831,7 @@ m4_define([_lt_join], # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. +# Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], @@ -8408,7 +8842,7 @@ m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different @@ -8488,7 +8922,7 @@ m4_define([lt_dict_filter], # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -8497,22 +8931,23 @@ m4_define([lt_dict_filter], # @configure_input@ -# serial 3337 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -8523,7 +8958,7 @@ _LT_DECL(, macro_revision, 0) # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -8537,7 +8972,7 @@ _LT_DECL(, macro_revision, 0) # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until @@ -8609,3 +9044,397 @@ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + diff --git a/external/unbound/acx_nlnetlabs.m4 b/external/unbound/acx_nlnetlabs.m4 index be184d2..8eccc15 100644 --- a/external/unbound/acx_nlnetlabs.m4 +++ b/external/unbound/acx_nlnetlabs.m4 @@ -2,7 +2,10 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 31 +# Version 34 +# 2016-03-21 Check -ldl -pthread for libcrypto for ldns and openssl 1.1.0. +# 2016-03-21 Use HMAC_Update instead of HMAC_CTX_Init (for openssl-1.1.0). +# 2016-01-04 -D_DEFAULT_SOURCE defined with -D_BSD_SOURCE for Linux glibc 2.20 # 2015-12-11 FLTO check for new OSX, clang. # 2015-11-18 spelling check fix. # 2015-11-05 ACX_SSL_CHECKS no longer adds -ldl needlessly. @@ -242,7 +245,7 @@ ACX_CHECK_COMPILER_FLAG(xc99, [C99FLAG="-xc99"]) AC_CHECK_HEADERS([getopt.h time.h],,, [AC_INCLUDES_DEFAULT]) -ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE, +ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE, [ #include "confdefs.h" #include @@ -277,9 +280,9 @@ int test() { a = 0; return a; } -], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE"]) +], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE"]) -ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE, +ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE, [ #include "confdefs.h" #include @@ -314,7 +317,7 @@ int test() { a = 0; return a; } -], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE"]) +], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE"]) ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG, [ @@ -326,7 +329,7 @@ int test() { } ], [CFLAGS="$CFLAGS $C99FLAG"]) -ACX_CHECK_COMPILER_FLAG_NEEDED(-D_BSD_SOURCE, +ACX_CHECK_COMPILER_FLAG_NEEDED(-D_BSD_SOURCE -D_DEFAULT_SOURCE, [ #include @@ -335,7 +338,7 @@ int test() { a = isascii(32); return a; } -], [CFLAGS="$CFLAGS -D_BSD_SOURCE"]) +], [CFLAGS="$CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE"]) ACX_CHECK_COMPILER_FLAG_NEEDED(-D_GNU_SOURCE, [ @@ -670,30 +673,30 @@ AC_DEFUN([ACX_SSL_CHECKS], [ ACX_RUNTIME_PATH_ADD([$ssldir/lib]) fi - AC_MSG_CHECKING([for HMAC_CTX_init in -lcrypto]) + AC_MSG_CHECKING([for HMAC_Update in -lcrypto]) LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" AC_TRY_LINK(, [ - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ], [ AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_HMAC_CTX_INIT], 1, - [If you have HMAC_CTX_init]) + AC_DEFINE([HAVE_HMAC_UPDATE], 1, + [If you have HMAC_Update]) ], [ AC_MSG_RESULT(no) # check if -lwsock32 or -lgdi32 are needed. BAKLIBS="$LIBS" BAKSSLLIBS="$LIBSSL_LIBS" - LIBS="$LIBS -lgdi32" - LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32" + LIBS="$LIBS -lgdi32 -lws2_32" + LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32" AC_MSG_CHECKING([if -lcrypto needs -lgdi32]) AC_TRY_LINK([], [ - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ],[ - AC_DEFINE([HAVE_HMAC_CTX_INIT], 1, - [If you have HMAC_CTX_init]) + AC_DEFINE([HAVE_HMAC_UPDATE], 1, + [If you have HMAC_Update]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) @@ -703,15 +706,30 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -ldl" AC_MSG_CHECKING([if -lcrypto needs -ldl]) AC_TRY_LINK([], [ - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ],[ - AC_DEFINE([HAVE_HMAC_CTX_INIT], 1, - [If you have HMAC_CTX_init]) + AC_DEFINE([HAVE_HMAC_UPDATE], 1, + [If you have HMAC_Update]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) - AC_MSG_ERROR([OpenSSL found in $ssldir, but version 0.9.7 or higher is required]) + LIBS="$BAKLIBS" + LIBSSL_LIBS="$BAKSSLLIBS" + LIBS="$LIBS -ldl -pthread" + LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread" + AC_MSG_CHECKING([if -lcrypto needs -ldl -pthread]) + AC_TRY_LINK([], [ + int HMAC_Update(void); + (void)HMAC_Update(); + ],[ + AC_DEFINE([HAVE_HMAC_UPDATE], 1, + [If you have HMAC_Update]) + AC_MSG_RESULT(yes) + ],[ + AC_MSG_RESULT(no) + AC_MSG_ERROR([OpenSSL found in $ssldir, but version 0.9.7 or higher is required]) + ]) ]) ]) ]) @@ -821,7 +839,11 @@ dnl see if on windows if test "$ac_cv_header_windows_h" = "yes"; then AC_DEFINE(USE_WINSOCK, 1, [Whether the windows socket API is used]) USE_WINSOCK="1" - LIBS="$LIBS -lws2_32" + if echo $LIBS | grep 'lws2_32' >/dev/null; then + : + else + LIBS="$LIBS -lws2_32" + fi fi ], dnl no quick getaddrinfo, try mingw32 and winsock2 library. @@ -1285,6 +1307,7 @@ AC_DEFUN([ACX_STRIP_EXT_FLAGS], AC_MSG_NOTICE([Stripping extension flags...]) ACX_CFLAGS_STRIP(-D_GNU_SOURCE) ACX_CFLAGS_STRIP(-D_BSD_SOURCE) + ACX_CFLAGS_STRIP(-D_DEFAULT_SOURCE) ACX_CFLAGS_STRIP(-D__EXTENSIONS__) ACX_CFLAGS_STRIP(-D_POSIX_C_SOURCE=200112) ACX_CFLAGS_STRIP(-D_XOPEN_SOURCE=600) @@ -1312,6 +1335,7 @@ dnl config.h part to define omitted cflags, use with ACX_STRIP_EXT_FLAGS. AC_DEFUN([AHX_CONFIG_EXT_FLAGS], [AHX_CONFIG_FLAG_EXT(-D_GNU_SOURCE) AHX_CONFIG_FLAG_EXT(-D_BSD_SOURCE) +AHX_CONFIG_FLAG_EXT(-D_DEFAULT_SOURCE) AHX_CONFIG_FLAG_EXT(-D__EXTENSIONS__) AHX_CONFIG_FLAG_EXT(-D_POSIX_C_SOURCE=200112) AHX_CONFIG_FLAG_EXT(-D_XOPEN_SOURCE=600) diff --git a/external/unbound/acx_python.m4 b/external/unbound/acx_python.m4 index 254ff20..2940971 100644 --- a/external/unbound/acx_python.m4 +++ b/external/unbound/acx_python.m4 @@ -22,8 +22,7 @@ AC_DEFUN([AC_PYTHON_DEVEL],[ # Check if you have distutils, else fail # AC_MSG_CHECKING([for the distutils Python package]) - ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` - if test -z "$ac_distutils_result"; then + if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) @@ -54,7 +53,7 @@ $ac_distutils_result]) AC_MSG_CHECKING([for Python library path]) if test -z "$PYTHON_LDFLAGS"; then PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \ - print(get_config_var('BLDLIBRARY'));"` + print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"` fi AC_MSG_RESULT([$PYTHON_LDFLAGS]) AC_SUBST([PYTHON_LDFLAGS]) diff --git a/external/unbound/cachedb/cachedb.c b/external/unbound/cachedb/cachedb.c new file mode 100644 index 0000000..a6a609d --- /dev/null +++ b/external/unbound/cachedb/cachedb.c @@ -0,0 +1,809 @@ +/* + * cachedb/cachedb.c - cache from a database external to the program module + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that uses an external database to cache + * dns responses. + */ + +#include "config.h" +#ifdef USE_CACHEDB +#include "cachedb/cachedb.h" +#include "cachedb/redis.h" +#include "util/regional.h" +#include "util/net_help.h" +#include "util/config_file.h" +#include "util/data/msgreply.h" +#include "util/data/msgencode.h" +#include "services/cache/dns.h" +#include "validator/val_neg.h" +#include "validator/val_secalgo.h" +#include "iterator/iter_utils.h" +#include "sldns/parseutil.h" +#include "sldns/wire2str.h" +#include "sldns/sbuffer.h" + +/* header file for htobe64 */ +#ifdef HAVE_ENDIAN_H +# include +#endif +#ifdef HAVE_SYS_ENDIAN_H +# include +#endif +#ifdef HAVE_LIBKERN_OSBYTEORDER_H +/* In practice this is specific to MacOS X. We assume it doesn't have +* htobe64/be64toh but has alternatives with a different name. */ +# include +# define htobe64(x) OSSwapHostToBigInt64(x) +# define be64toh(x) OSSwapBigToHostInt64(x) +#endif + +/** the unit test testframe for cachedb, its module state contains + * a cache for a couple queries (in memory). */ +struct testframe_moddata { + /** lock for mutex */ + lock_basic_type lock; + /** key for single stored data element, NULL if none */ + char* stored_key; + /** data for single stored data element, NULL if none */ + uint8_t* stored_data; + /** length of stored data */ + size_t stored_datalen; +}; + +static int +testframe_init(struct module_env* env, struct cachedb_env* cachedb_env) +{ + struct testframe_moddata* d; + (void)env; + verbose(VERB_ALGO, "testframe_init"); + d = (struct testframe_moddata*)calloc(1, + sizeof(struct testframe_moddata)); + cachedb_env->backend_data = (void*)d; + if(!cachedb_env->backend_data) { + log_err("out of memory"); + return 0; + } + lock_basic_init(&d->lock); + lock_protect(&d->lock, d, sizeof(*d)); + return 1; +} + +static void +testframe_deinit(struct module_env* env, struct cachedb_env* cachedb_env) +{ + struct testframe_moddata* d = (struct testframe_moddata*) + cachedb_env->backend_data; + (void)env; + verbose(VERB_ALGO, "testframe_deinit"); + if(!d) + return; + lock_basic_destroy(&d->lock); + free(d->stored_key); + free(d->stored_data); + free(d); +} + +static int +testframe_lookup(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, struct sldns_buffer* result_buffer) +{ + struct testframe_moddata* d = (struct testframe_moddata*) + cachedb_env->backend_data; + (void)env; + verbose(VERB_ALGO, "testframe_lookup of %s", key); + lock_basic_lock(&d->lock); + if(d->stored_key && strcmp(d->stored_key, key) == 0) { + if(d->stored_datalen > sldns_buffer_capacity(result_buffer)) { + lock_basic_unlock(&d->lock); + return 0; /* too large */ + } + verbose(VERB_ALGO, "testframe_lookup found %d bytes", + (int)d->stored_datalen); + sldns_buffer_clear(result_buffer); + sldns_buffer_write(result_buffer, d->stored_data, + d->stored_datalen); + sldns_buffer_flip(result_buffer); + lock_basic_unlock(&d->lock); + return 1; + } + lock_basic_unlock(&d->lock); + return 0; +} + +static void +testframe_store(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, uint8_t* data, size_t data_len) +{ + struct testframe_moddata* d = (struct testframe_moddata*) + cachedb_env->backend_data; + (void)env; + lock_basic_lock(&d->lock); + verbose(VERB_ALGO, "testframe_store %s (%d bytes)", key, (int)data_len); + + /* free old data element (if any) */ + free(d->stored_key); + d->stored_key = NULL; + free(d->stored_data); + d->stored_data = NULL; + d->stored_datalen = 0; + + d->stored_data = memdup(data, data_len); + if(!d->stored_data) { + lock_basic_unlock(&d->lock); + log_err("out of memory"); + return; + } + d->stored_datalen = data_len; + d->stored_key = strdup(key); + if(!d->stored_key) { + free(d->stored_data); + d->stored_data = NULL; + d->stored_datalen = 0; + lock_basic_unlock(&d->lock); + return; + } + lock_basic_unlock(&d->lock); + /* (key,data) successfully stored */ +} + +/** The testframe backend is for unit tests */ +static struct cachedb_backend testframe_backend = { "testframe", + testframe_init, testframe_deinit, testframe_lookup, testframe_store +}; + +/** find a particular backend from possible backends */ +static struct cachedb_backend* +cachedb_find_backend(const char* str) +{ +#ifdef USE_REDIS + if(strcmp(str, redis_backend.name) == 0) + return &redis_backend; +#endif + if(strcmp(str, testframe_backend.name) == 0) + return &testframe_backend; + /* TODO add more backends here */ + return NULL; +} + +/** apply configuration to cachedb module 'global' state */ +static int +cachedb_apply_cfg(struct cachedb_env* cachedb_env, struct config_file* cfg) +{ + const char* backend_str = cfg->cachedb_backend; + + /* If unspecified we use the in-memory test DB. */ + if(!backend_str) + backend_str = "testframe"; + cachedb_env->backend = cachedb_find_backend(backend_str); + if(!cachedb_env->backend) { + log_err("cachedb: cannot find backend name '%s'", backend_str); + return 0; + } + + /* TODO see if more configuration needs to be applied or not */ + return 1; +} + +int +cachedb_init(struct module_env* env, int id) +{ + struct cachedb_env* cachedb_env = (struct cachedb_env*)calloc(1, + sizeof(struct cachedb_env)); + if(!cachedb_env) { + log_err("malloc failure"); + return 0; + } + env->modinfo[id] = (void*)cachedb_env; + if(!cachedb_apply_cfg(cachedb_env, env->cfg)) { + log_err("cachedb: could not apply configuration settings."); + return 0; + } + /* see if a backend is selected */ + if(!cachedb_env->backend || !cachedb_env->backend->name) + return 1; + if(!(*cachedb_env->backend->init)(env, cachedb_env)) { + log_err("cachedb: could not init %s backend", + cachedb_env->backend->name); + return 0; + } + cachedb_env->enabled = 1; + return 1; +} + +void +cachedb_deinit(struct module_env* env, int id) +{ + struct cachedb_env* cachedb_env; + if(!env || !env->modinfo[id]) + return; + cachedb_env = (struct cachedb_env*)env->modinfo[id]; + /* free contents */ + /* TODO */ + if(cachedb_env->enabled) { + (*cachedb_env->backend->deinit)(env, cachedb_env); + } + + free(cachedb_env); + env->modinfo[id] = NULL; +} + +/** new query for cachedb */ +static int +cachedb_new(struct module_qstate* qstate, int id) +{ + struct cachedb_qstate* iq = (struct cachedb_qstate*)regional_alloc( + qstate->region, sizeof(struct cachedb_qstate)); + qstate->minfo[id] = iq; + if(!iq) + return 0; + memset(iq, 0, sizeof(*iq)); + /* initialise it */ + /* TODO */ + + return 1; +} + +/** + * Return an error + * @param qstate: our query state + * @param id: module id + * @param rcode: error code (DNS errcode). + * @return: 0 for use by caller, to make notation easy, like: + * return error_response(..). + */ +static int +error_response(struct module_qstate* qstate, int id, int rcode) +{ + verbose(VERB_QUERY, "return error response %s", + sldns_lookup_by_id(sldns_rcodes, rcode)? + sldns_lookup_by_id(sldns_rcodes, rcode)->name:"??"); + qstate->return_rcode = rcode; + qstate->return_msg = NULL; + qstate->ext_state[id] = module_finished; + return 0; +} + +/** + * Hash the query name, type, class and dbacess-secret into lookup buffer. + * @param qstate: query state with query info + * and env->cfg with secret. + * @param buf: returned buffer with hash to lookup + * @param len: length of the buffer. + */ +static void +calc_hash(struct module_qstate* qstate, char* buf, size_t len) +{ + uint8_t clear[1024]; + size_t clen = 0; + uint8_t hash[CACHEDB_HASHSIZE/8]; + const char* hex = "0123456789ABCDEF"; + const char* secret = qstate->env->cfg->cachedb_secret ? + qstate->env->cfg->cachedb_secret : "default"; + size_t i; + + /* copy the hash info into the clear buffer */ + if(clen + qstate->qinfo.qname_len < sizeof(clear)) { + memmove(clear+clen, qstate->qinfo.qname, + qstate->qinfo.qname_len); + clen += qstate->qinfo.qname_len; + } + if(clen + 4 < sizeof(clear)) { + uint16_t t = htons(qstate->qinfo.qtype); + uint16_t c = htons(qstate->qinfo.qclass); + memmove(clear+clen, &t, 2); + memmove(clear+clen+2, &c, 2); + clen += 4; + } + if(secret && secret[0] && clen + strlen(secret) < sizeof(clear)) { + memmove(clear+clen, secret, strlen(secret)); + clen += strlen(secret); + } + + /* hash the buffer */ + secalgo_hash_sha256(clear, clen, hash); + memset(clear, 0, clen); + + /* hex encode output for portability (some online dbs need + * no nulls, no control characters, and so on) */ + log_assert(len >= sizeof(hash)*2 + 1); + (void)len; + for(i=0; i>4]; + buf[i*2+1] = hex[hash[i]&0x0f]; + } + buf[sizeof(hash)*2] = 0; +} + +/** convert data from return_msg into the data buffer */ +static int +prep_data(struct module_qstate* qstate, struct sldns_buffer* buf) +{ + uint64_t timestamp, expiry; + size_t oldlim; + struct edns_data edns; + memset(&edns, 0, sizeof(edns)); + edns.edns_present = 1; + edns.bits = EDNS_DO; + edns.ext_rcode = 0; + edns.edns_version = EDNS_ADVERTISED_VERSION; + edns.udp_size = EDNS_ADVERTISED_SIZE; + + if(!qstate->return_msg || !qstate->return_msg->rep) + return 0; + /* We don't store the reply if its TTL is 0 unless serve-expired is + * enabled. Such a reply won't be reusable and simply be a waste for + * the backend. It's also compatible with the default behavior of + * dns_cache_store_msg(). */ + if(qstate->return_msg->rep->ttl == 0 && + !qstate->env->cfg->serve_expired) + return 0; + if(verbosity >= VERB_ALGO) + log_dns_msg("cachedb encoding", &qstate->return_msg->qinfo, + qstate->return_msg->rep); + if(!reply_info_answer_encode(&qstate->return_msg->qinfo, + qstate->return_msg->rep, 0, qstate->query_flags, + buf, 0, 1, qstate->env->scratch, 65535, &edns, 1, 0)) + return 0; + + /* TTLs in the return_msg are relative to time(0) so we have to + * store that, we also store the smallest ttl in the packet+time(0) + * as the packet expiry time */ + /* qstate->return_msg->rep->ttl contains that relative shortest ttl */ + timestamp = (uint64_t)*qstate->env->now; + expiry = timestamp + (uint64_t)qstate->return_msg->rep->ttl; + timestamp = htobe64(timestamp); + expiry = htobe64(expiry); + oldlim = sldns_buffer_limit(buf); + if(oldlim + sizeof(timestamp)+sizeof(expiry) >= + sldns_buffer_capacity(buf)) + return 0; /* doesn't fit. */ + sldns_buffer_set_limit(buf, oldlim + sizeof(timestamp)+sizeof(expiry)); + sldns_buffer_write_at(buf, oldlim, ×tamp, sizeof(timestamp)); + sldns_buffer_write_at(buf, oldlim+sizeof(timestamp), &expiry, + sizeof(expiry)); + + return 1; +} + +/** check expiry, return true if matches OK */ +static int +good_expiry_and_qinfo(struct module_qstate* qstate, struct sldns_buffer* buf) +{ + uint64_t expiry; + /* the expiry time is the last bytes of the buffer */ + if(sldns_buffer_limit(buf) < sizeof(expiry)) + return 0; + sldns_buffer_read_at(buf, sldns_buffer_limit(buf)-sizeof(expiry), + &expiry, sizeof(expiry)); + expiry = be64toh(expiry); + + if((time_t)expiry < *qstate->env->now && + !qstate->env->cfg->serve_expired) + return 0; + + return 1; +} + +/* Adjust the TTL of the given RRset by 'subtract'. If 'subtract' is + * negative, set the TTL to 0. */ +static void +packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t subtract) +{ + size_t i; + size_t total = data->count + data->rrsig_count; + if(subtract >= 0 && data->ttl > subtract) + data->ttl -= subtract; + else data->ttl = 0; + for(i=0; i= 0 && data->rr_ttl[i] > subtract) + data->rr_ttl[i] -= subtract; + else data->rr_ttl[i] = 0; + } +} + +/* Adjust the TTL of a DNS message and its RRs by 'adjust'. If 'adjust' is + * negative, set the TTLs to 0. */ +static void +adjust_msg_ttl(struct dns_msg* msg, time_t adjust) +{ + size_t i; + if(adjust >= 0 && msg->rep->ttl > adjust) + msg->rep->ttl -= adjust; + else msg->rep->ttl = 0; + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); + + for(i=0; irep->rrset_count; i++) { + packed_rrset_ttl_subtract((struct packed_rrset_data*)msg-> + rep->rrsets[i]->entry.data, adjust); + } +} + +/** convert dns message in buffer to return_msg */ +static int +parse_data(struct module_qstate* qstate, struct sldns_buffer* buf) +{ + struct msg_parse* prs; + struct edns_data edns; + uint64_t timestamp, expiry; + time_t adjust; + size_t lim = sldns_buffer_limit(buf); + if(lim < LDNS_HEADER_SIZE+sizeof(timestamp)+sizeof(expiry)) + return 0; /* too short */ + + /* remove timestamp and expiry from end */ + sldns_buffer_read_at(buf, lim-sizeof(expiry), &expiry, sizeof(expiry)); + sldns_buffer_read_at(buf, lim-sizeof(expiry)-sizeof(timestamp), + ×tamp, sizeof(timestamp)); + expiry = be64toh(expiry); + timestamp = be64toh(timestamp); + + /* parse DNS packet */ + regional_free_all(qstate->env->scratch); + prs = (struct msg_parse*)regional_alloc(qstate->env->scratch, + sizeof(struct msg_parse)); + if(!prs) + return 0; /* out of memory */ + memset(prs, 0, sizeof(*prs)); + memset(&edns, 0, sizeof(edns)); + sldns_buffer_set_limit(buf, lim - sizeof(expiry)-sizeof(timestamp)); + if(parse_packet(buf, prs, qstate->env->scratch) != LDNS_RCODE_NOERROR) { + sldns_buffer_set_limit(buf, lim); + return 0; + } + if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + LDNS_RCODE_NOERROR) { + sldns_buffer_set_limit(buf, lim); + return 0; + } + + qstate->return_msg = dns_alloc_msg(buf, prs, qstate->region); + sldns_buffer_set_limit(buf, lim); + if(!qstate->return_msg) + return 0; + + qstate->return_rcode = LDNS_RCODE_NOERROR; + + /* see how much of the TTL expired, and remove it */ + if(*qstate->env->now <= (time_t)timestamp) { + verbose(VERB_ALGO, "cachedb msg adjust by zero"); + return 1; /* message from the future (clock skew?) */ + } + adjust = *qstate->env->now - (time_t)timestamp; + if(qstate->return_msg->rep->ttl < adjust) { + verbose(VERB_ALGO, "cachedb msg expired"); + /* If serve-expired is enabled, we still use an expired message + * setting the TTL to 0. */ + if(qstate->env->cfg->serve_expired) + adjust = -1; + else + return 0; /* message expired */ + } + verbose(VERB_ALGO, "cachedb msg adjusted down by %d", (int)adjust); + adjust_msg_ttl(qstate->return_msg, adjust); + + /* Similar to the unbound worker, if serve-expired is enabled and + * the msg would be considered to be expired, mark the state so a + * refetch will be scheduled. The comparison between 'expiry' and + * 'now' should be redundant given how these values were calculated, + * but we check it just in case as does good_expiry_and_qinfo(). */ + if(qstate->env->cfg->serve_expired && + (adjust == -1 || (time_t)expiry < *qstate->env->now)) { + qstate->need_refetch = 1; + } + + return 1; +} + +/** + * Lookup the qstate.qinfo in extcache, store in qstate.return_msg. + * return true if lookup was successful. + */ +static int +cachedb_extcache_lookup(struct module_qstate* qstate, struct cachedb_env* ie) +{ + char key[(CACHEDB_HASHSIZE/8)*2+1]; + calc_hash(qstate, key, sizeof(key)); + + /* call backend to fetch data for key into scratch buffer */ + if( !(*ie->backend->lookup)(qstate->env, ie, key, + qstate->env->scratch_buffer)) { + return 0; + } + + /* check expiry date and check if query-data matches */ + if( !good_expiry_and_qinfo(qstate, qstate->env->scratch_buffer) ) { + return 0; + } + + /* parse dns message into return_msg */ + if( !parse_data(qstate, qstate->env->scratch_buffer) ) { + return 0; + } + return 1; +} + +/** + * Store the qstate.return_msg in extcache for key qstate.info + */ +static void +cachedb_extcache_store(struct module_qstate* qstate, struct cachedb_env* ie) +{ + char key[(CACHEDB_HASHSIZE/8)*2+1]; + calc_hash(qstate, key, sizeof(key)); + + /* prepare data in scratch buffer */ + if(!prep_data(qstate, qstate->env->scratch_buffer)) + return; + + /* call backend */ + (*ie->backend->store)(qstate->env, ie, key, + sldns_buffer_begin(qstate->env->scratch_buffer), + sldns_buffer_limit(qstate->env->scratch_buffer)); +} + +/** + * See if unbound's internal cache can answer the query + */ +static int +cachedb_intcache_lookup(struct module_qstate* qstate) +{ + struct dns_msg* msg; + msg = dns_cache_lookup(qstate->env, qstate->qinfo.qname, + qstate->qinfo.qname_len, qstate->qinfo.qtype, + qstate->qinfo.qclass, qstate->query_flags, + qstate->region, qstate->env->scratch, + 1 /* no partial messages with only a CNAME */ + ); + if(!msg && qstate->env->neg_cache && + iter_qname_indicates_dnssec(qstate->env, &qstate->qinfo)) { + /* lookup in negative cache; may result in + * NOERROR/NODATA or NXDOMAIN answers that need validation */ + msg = val_neg_getmsg(qstate->env->neg_cache, &qstate->qinfo, + qstate->region, qstate->env->rrset_cache, + qstate->env->scratch_buffer, + *qstate->env->now, 1/*add SOA*/, NULL, + qstate->env->cfg); + } + if(!msg) + return 0; + /* this is the returned msg */ + qstate->return_rcode = LDNS_RCODE_NOERROR; + qstate->return_msg = msg; + return 1; +} + +/** + * Store query into the internal cache of unbound. + */ +static void +cachedb_intcache_store(struct module_qstate* qstate) +{ + uint32_t store_flags = qstate->query_flags; + + if(qstate->env->cfg->serve_expired) + store_flags |= DNSCACHE_STORE_ZEROTTL; + if(!qstate->return_msg) + return; + (void)dns_cache_store(qstate->env, &qstate->qinfo, + qstate->return_msg->rep, 0, qstate->prefetch_leeway, 0, + qstate->region, store_flags); +} + +/** + * Handle a cachedb module event with a query + * @param qstate: query state (from the mesh), passed between modules. + * contains qstate->env module environment with global caches and so on. + * @param iq: query state specific for this module. per-query. + * @param ie: environment specific for this module. global. + * @param id: module id. + */ +static void +cachedb_handle_query(struct module_qstate* qstate, + struct cachedb_qstate* ATTR_UNUSED(iq), + struct cachedb_env* ie, int id) +{ + /* check if we are enabled, and skip if so */ + if(!ie->enabled) { + /* pass request to next module */ + qstate->ext_state[id] = module_wait_module; + return; + } + + if(qstate->blacklist || qstate->no_cache_lookup) { + /* cache is blacklisted or we are instructed from edns to not look */ + /* pass request to next module */ + qstate->ext_state[id] = module_wait_module; + return; + } + + /* lookup inside unbound's internal cache */ + if(cachedb_intcache_lookup(qstate)) { + if(verbosity >= VERB_ALGO) { + if(qstate->return_msg->rep) + log_dns_msg("cachedb internal cache lookup", + &qstate->return_msg->qinfo, + qstate->return_msg->rep); + else log_info("cachedb internal cache lookup: rcode %s", + sldns_lookup_by_id(sldns_rcodes, qstate->return_rcode)? + sldns_lookup_by_id(sldns_rcodes, qstate->return_rcode)->name:"??"); + } + /* we are done with the query */ + qstate->ext_state[id] = module_finished; + return; + } + + /* ask backend cache to see if we have data */ + if(cachedb_extcache_lookup(qstate, ie)) { + if(verbosity >= VERB_ALGO) + log_dns_msg(ie->backend->name, + &qstate->return_msg->qinfo, + qstate->return_msg->rep); + /* store this result in internal cache */ + cachedb_intcache_store(qstate); + /* we are done with the query */ + qstate->ext_state[id] = module_finished; + return; + } + + /* no cache fetches */ + /* pass request to next module */ + qstate->ext_state[id] = module_wait_module; +} + +/** + * Handle a cachedb module event with a response from the iterator. + * @param qstate: query state (from the mesh), passed between modules. + * contains qstate->env module environment with global caches and so on. + * @param iq: query state specific for this module. per-query. + * @param ie: environment specific for this module. global. + * @param id: module id. + */ +static void +cachedb_handle_response(struct module_qstate* qstate, + struct cachedb_qstate* ATTR_UNUSED(iq), struct cachedb_env* ie, int id) +{ + /* check if we are not enabled or instructed to not cache, and skip */ + if(!ie->enabled || qstate->no_cache_store) { + /* we are done with the query */ + qstate->ext_state[id] = module_finished; + return; + } + + /* store the item into the backend cache */ + cachedb_extcache_store(qstate, ie); + + /* we are done with the query */ + qstate->ext_state[id] = module_finished; +} + +void +cachedb_operate(struct module_qstate* qstate, enum module_ev event, int id, + struct outbound_entry* outbound) +{ + struct cachedb_env* ie = (struct cachedb_env*)qstate->env->modinfo[id]; + struct cachedb_qstate* iq = (struct cachedb_qstate*)qstate->minfo[id]; + verbose(VERB_QUERY, "cachedb[module %d] operate: extstate:%s event:%s", + id, strextstate(qstate->ext_state[id]), strmodulevent(event)); + if(iq) log_query_info(VERB_QUERY, "cachedb operate: query", + &qstate->qinfo); + + /* perform cachedb state machine */ + if((event == module_event_new || event == module_event_pass) && + iq == NULL) { + if(!cachedb_new(qstate, id)) { + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); + return; + } + iq = (struct cachedb_qstate*)qstate->minfo[id]; + } + if(iq && (event == module_event_pass || event == module_event_new)) { + cachedb_handle_query(qstate, iq, ie, id); + return; + } + if(iq && (event == module_event_moddone)) { + cachedb_handle_response(qstate, iq, ie, id); + return; + } + if(iq && outbound) { + /* cachedb does not need to process responses at this time + * ignore it. + cachedb_process_response(qstate, iq, ie, id, outbound, event); + */ + return; + } + if(event == module_event_error) { + verbose(VERB_ALGO, "got called with event error, giving up"); + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); + return; + } + if(!iq && (event == module_event_moddone)) { + /* during priming, module done but we never started */ + qstate->ext_state[id] = module_finished; + return; + } + + log_err("bad event for cachedb"); + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); +} + +void +cachedb_inform_super(struct module_qstate* ATTR_UNUSED(qstate), + int ATTR_UNUSED(id), struct module_qstate* ATTR_UNUSED(super)) +{ + /* cachedb does not use subordinate requests at this time */ + verbose(VERB_ALGO, "cachedb inform_super was called"); +} + +void +cachedb_clear(struct module_qstate* qstate, int id) +{ + struct cachedb_qstate* iq; + if(!qstate) + return; + iq = (struct cachedb_qstate*)qstate->minfo[id]; + if(iq) { + /* free contents of iq */ + /* TODO */ + } + qstate->minfo[id] = NULL; +} + +size_t +cachedb_get_mem(struct module_env* env, int id) +{ + struct cachedb_env* ie = (struct cachedb_env*)env->modinfo[id]; + if(!ie) + return 0; + return sizeof(*ie); /* TODO - more mem */ +} + +/** + * The cachedb function block + */ +static struct module_func_block cachedb_block = { + "cachedb", + &cachedb_init, &cachedb_deinit, &cachedb_operate, + &cachedb_inform_super, &cachedb_clear, &cachedb_get_mem +}; + +struct module_func_block* +cachedb_get_funcblock(void) +{ + return &cachedb_block; +} +#endif /* USE_CACHEDB */ diff --git a/external/unbound/cachedb/cachedb.h b/external/unbound/cachedb/cachedb.h new file mode 100644 index 0000000..27187dc --- /dev/null +++ b/external/unbound/cachedb/cachedb.h @@ -0,0 +1,112 @@ +/* + * cachedb/cachedb.h - cache from a database external to the program module + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that uses an external database to cache + * dns responses. + */ +#include "util/module.h" +struct cachedb_backend; + +/** + * The global variable environment contents for the cachedb + * Shared between threads, this represents long term information. + * Like database connections. + */ +struct cachedb_env { + /** true is cachedb is enabled, the backend is turned on */ + int enabled; + + /** the backend routines */ + struct cachedb_backend* backend; + + /** backend specific data here */ + void* backend_data; +}; + +/** + * Per query state for the cachedb module. + */ +struct cachedb_qstate { + int todo; +}; + +/** + * Backend call routines + */ +struct cachedb_backend { + /** backend name */ + const char* name; + + /** Init(env, cachedb_env): false on setup failure */ + int (*init)(struct module_env*, struct cachedb_env*); + + /** Deinit - close db for program exit */ + void (*deinit)(struct module_env*, struct cachedb_env*); + + /** Lookup (env, cachedb_env, key, result_buffer): true if found */ + int (*lookup)(struct module_env*, struct cachedb_env*, char*, + struct sldns_buffer*); + + /** Store (env, cachedb_env, key, data, data_len) */ + void (*store)(struct module_env*, struct cachedb_env*, char*, + uint8_t*, size_t); +}; + +#define CACHEDB_HASHSIZE 256 /* bit hash */ + +/** Init the cachedb module */ +int cachedb_init(struct module_env* env, int id); +/** Deinit the cachedb module */ +void cachedb_deinit(struct module_env* env, int id); +/** Operate on an event on a query (in qstate). */ +void cachedb_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); +/** Subordinate query done, inform this super request of its conclusion */ +void cachedb_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); +/** clear the cachedb query-specific contents out of qstate */ +void cachedb_clear(struct module_qstate* qstate, int id); +/** return memory estimate for cachedb module */ +size_t cachedb_get_mem(struct module_env* env, int id); + +/** + * Get the function block with pointers to the cachedb functions + * @return the function block for "cachedb". + */ +struct module_func_block* cachedb_get_funcblock(void); + diff --git a/external/unbound/cachedb/redis.c b/external/unbound/cachedb/redis.c new file mode 100644 index 0000000..3dfbf8f --- /dev/null +++ b/external/unbound/cachedb/redis.c @@ -0,0 +1,283 @@ +/* + * cachedb/redis.c - cachedb redis module + * + * Copyright (c) 2018, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that uses the redis database to cache + * dns responses. + */ + +#include "config.h" +#ifdef USE_CACHEDB +#include "cachedb/redis.h" +#include "cachedb/cachedb.h" +#include "util/alloc.h" +#include "util/config_file.h" +#include "sldns/sbuffer.h" + +#ifdef USE_REDIS +#include "hiredis/hiredis.h" + +struct redis_moddata { + redisContext** ctxs; /* thread-specific redis contexts */ + int numctxs; /* number of ctx entries */ + const char* server_host; /* server's IP address or host name */ + int server_port; /* server's TCP port */ + struct timeval timeout; /* timeout for connection setup and commands */ +}; + +static redisContext* +redis_connect(const struct redis_moddata* moddata) +{ + redisContext* ctx; + + ctx = redisConnectWithTimeout(moddata->server_host, + moddata->server_port, moddata->timeout); + if(!ctx || ctx->err) { + const char *errstr = "out of memory"; + if(ctx) + errstr = ctx->errstr; + log_err("failed to connect to redis server: %s", errstr); + goto fail; + } + if(redisSetTimeout(ctx, moddata->timeout) != REDIS_OK) { + log_err("failed to set redis timeout"); + goto fail; + } + return ctx; + + fail: + if(ctx) + redisFree(ctx); + return NULL; +} + +static int +redis_init(struct module_env* env, struct cachedb_env* cachedb_env) +{ + int i; + struct redis_moddata* moddata = NULL; + + verbose(VERB_ALGO, "redis_init"); + + moddata = calloc(1, sizeof(struct redis_moddata)); + if(!moddata) { + log_err("out of memory"); + return 0; + } + moddata->numctxs = env->cfg->num_threads; + moddata->ctxs = calloc(env->cfg->num_threads, sizeof(redisContext*)); + if(!moddata->ctxs) { + log_err("out of memory"); + free(moddata); + return 0; + } + /* note: server_host is a shallow reference to configured string. + * we don't have to free it in this module. */ + moddata->server_host = env->cfg->redis_server_host; + moddata->server_port = env->cfg->redis_server_port; + moddata->timeout.tv_sec = env->cfg->redis_timeout / 1000; + moddata->timeout.tv_usec = (env->cfg->redis_timeout % 1000) * 1000; + for(i = 0; i < moddata->numctxs; i++) + moddata->ctxs[i] = redis_connect(moddata); + cachedb_env->backend_data = moddata; + return 1; +} + +static void +redis_deinit(struct module_env* env, struct cachedb_env* cachedb_env) +{ + struct redis_moddata* moddata = (struct redis_moddata*) + cachedb_env->backend_data; + (void)env; + + verbose(VERB_ALGO, "redis_deinit"); + + if(!moddata) + return; + if(moddata->ctxs) { + int i; + for(i = 0; i < moddata->numctxs; i++) { + if(moddata->ctxs[i]) + redisFree(moddata->ctxs[i]); + } + free(moddata->ctxs); + } + free(moddata); +} + +/* + * Send a redis command and get a reply. Unified so that it can be used for + * both SET and GET. If 'data' is non-NULL the command is supposed to be + * SET and GET otherwise, but the implementation of this function is agnostic + * about the semantics (except for logging): 'command', 'data', and 'data_len' + * are opaquely passed to redisCommand(). + * This function first checks whether a connection with a redis server has + * been established; if not it tries to set up a new one. + * It returns redisReply returned from redisCommand() or NULL if some low + * level error happens. The caller is responsible to check the return value, + * if it's non-NULL, it has to free it with freeReplyObject(). + */ +static redisReply* +redis_command(struct module_env* env, struct cachedb_env* cachedb_env, + const char* command, const uint8_t* data, size_t data_len) +{ + redisContext* ctx; + redisReply* rep; + struct redis_moddata* d = (struct redis_moddata*) + cachedb_env->backend_data; + + /* We assume env->alloc->thread_num is a unique ID for each thread + * in [0, num-of-threads). We could treat it as an error condition + * if the assumption didn't hold, but it seems to be a fundamental + * assumption throughout the unbound architecture, so we simply assert + * it. */ + log_assert(env->alloc->thread_num < d->numctxs); + ctx = d->ctxs[env->alloc->thread_num]; + + /* If we've not established a connection to the server or we've closed + * it on a failure, try to re-establish a new one. Failures will be + * logged in redis_connect(). */ + if(!ctx) { + ctx = redis_connect(d); + d->ctxs[env->alloc->thread_num] = ctx; + } + if(!ctx) + return NULL; + + /* Send the command and get a reply, synchronously. */ + rep = (redisReply*)redisCommand(ctx, command, data, data_len); + if(!rep) { + /* Once an error as a NULL-reply is returned the context cannot + * be reused and we'll need to set up a new connection. */ + log_err("redis_command: failed to receive a reply, " + "closing connection: %s", ctx->errstr); + redisFree(ctx); + d->ctxs[env->alloc->thread_num] = NULL; + return NULL; + } + + /* Check error in reply to unify logging in that case. + * The caller may perform context-dependent checks and logging. */ + if(rep->type == REDIS_REPLY_ERROR) + log_err("redis: %s resulted in an error: %s", + data ? "set" : "get", rep->str); + + return rep; +} + +static int +redis_lookup(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, struct sldns_buffer* result_buffer) +{ + redisReply* rep; + char cmdbuf[4+(CACHEDB_HASHSIZE/8)*2+1]; /* "GET " + key */ + int n; + int ret = 0; + + verbose(VERB_ALGO, "redis_lookup of %s", key); + + n = snprintf(cmdbuf, sizeof(cmdbuf), "GET %s", key); + if(n < 0 || n >= (int)sizeof(cmdbuf)) { + log_err("redis_lookup: unexpected failure to build command"); + return 0; + } + + rep = redis_command(env, cachedb_env, cmdbuf, NULL, 0); + if(!rep) + return 0; + switch (rep->type) { + case REDIS_REPLY_NIL: + verbose(VERB_ALGO, "redis_lookup: no data cached"); + break; + case REDIS_REPLY_STRING: + verbose(VERB_ALGO, "redis_lookup found %d bytes", + (int)rep->len); + if((size_t)rep->len > sldns_buffer_capacity(result_buffer)) { + log_err("redis_lookup: replied data too long: %lu", + (size_t)rep->len); + break; + } + sldns_buffer_clear(result_buffer); + sldns_buffer_write(result_buffer, rep->str, rep->len); + sldns_buffer_flip(result_buffer); + ret = 1; + break; + case REDIS_REPLY_ERROR: + break; /* already logged */ + default: + log_err("redis_lookup: unexpected type of reply for (%d)", + rep->type); + break; + } + freeReplyObject(rep); + return ret; +} + +static void +redis_store(struct module_env* env, struct cachedb_env* cachedb_env, + char* key, uint8_t* data, size_t data_len) +{ + redisReply* rep; + char cmdbuf[4+(CACHEDB_HASHSIZE/8)*2+3+1]; /* "SET " + key + " %b" */ + int n; + + verbose(VERB_ALGO, "redis_store %s (%d bytes)", key, (int)data_len); + + /* build command to set to a binary safe string */ + n = snprintf(cmdbuf, sizeof(cmdbuf), "SET %s %%b", key); + if(n < 0 || n >= (int)sizeof(cmdbuf)) { + log_err("redis_store: unexpected failure to build command"); + return; + } + + rep = redis_command(env, cachedb_env, cmdbuf, data, data_len); + if(rep) { + verbose(VERB_ALGO, "redis_store set completed"); + if(rep->type != REDIS_REPLY_STATUS && + rep->type != REDIS_REPLY_ERROR) { + log_err("redis_store: unexpected type of reply (%d)", + rep->type); + } + freeReplyObject(rep); + } +} + +struct cachedb_backend redis_backend = { "redis", + redis_init, redis_deinit, redis_lookup, redis_store +}; +#endif /* USE_REDIS */ +#endif /* USE_CACHEDB */ diff --git a/external/unbound/cachedb/redis.h b/external/unbound/cachedb/redis.h new file mode 100644 index 0000000..2da2a64 --- /dev/null +++ b/external/unbound/cachedb/redis.h @@ -0,0 +1,45 @@ +/* + * cachedb/redis.h - cachedb redis module + * + * Copyright (c) 2018, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that uses the redis database to cache + * dns responses. + */ + +/** the redis backend definition, contains callable functions + * and name string */ +extern struct cachedb_backend redis_backend; diff --git a/external/unbound/compat/arc4_lock.c b/external/unbound/compat/arc4_lock.c index faa743d..a78f752 100644 --- a/external/unbound/compat/arc4_lock.c +++ b/external/unbound/compat/arc4_lock.c @@ -33,6 +33,9 @@ */ #include "config.h" #define LOCKRET(func) func +#ifdef ENABLE_LOCK_CHECKS +#undef ENABLE_LOCK_CHECKS +#endif #include "util/locks.h" void _ARC4_LOCK(void); @@ -46,9 +49,13 @@ void _ARC4_LOCK(void) void _ARC4_UNLOCK(void) { } + +void _ARC4_LOCK_DESTROY(void) +{ +} #else /* !THREADS_DISABLED */ -static lock_quick_t arc4lock; +static lock_quick_type arc4lock; static int arc4lockinit = 0; void _ARC4_LOCK(void) @@ -64,4 +71,12 @@ void _ARC4_UNLOCK(void) { lock_quick_unlock(&arc4lock); } + +void _ARC4_LOCK_DESTROY(void) +{ + if(arc4lockinit) { + arc4lockinit = 0; + lock_quick_destroy(&arc4lock); + } +} #endif /* THREADS_DISABLED */ diff --git a/external/unbound/compat/arc4random.c b/external/unbound/compat/arc4random.c index 2c859f1..bcef0ec 100644 --- a/external/unbound/compat/arc4random.c +++ b/external/unbound/compat/arc4random.c @@ -48,6 +48,9 @@ #else /* !__GNUC__ */ #define inline #endif /* !__GNUC__ */ +#ifndef MAP_ANON +#define MAP_ANON MAP_ANONYMOUS +#endif #define KEYSZ 32 #define IVSZ 8 @@ -68,6 +71,72 @@ static struct { static inline void _rs_rekey(u_char *dat, size_t datlen); +/* + * Basic sanity checking; wish we could do better. + */ +static int +fallback_gotdata(char *buf, size_t len) +{ + char any_set = 0; + size_t i; + + for (i = 0; i < len; ++i) + any_set |= buf[i]; + if (any_set == 0) + return -1; + return 0; +} + +/* fallback for getentropy in case libc returns failure */ +static int +fallback_getentropy_urandom(void *buf, size_t len) +{ + size_t i; + int fd, flags; + int save_errno = errno; + +start: + + flags = O_RDONLY; +#ifdef O_NOFOLLOW + flags |= O_NOFOLLOW; +#endif +#ifdef O_CLOEXEC + flags |= O_CLOEXEC; +#endif + fd = open("/dev/urandom", flags, 0); + if (fd == -1) { + if (errno == EINTR) + goto start; + goto nodevrandom; + } +#ifndef O_CLOEXEC +# ifdef HAVE_FCNTL + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); +# endif +#endif + for (i = 0; i < len; ) { + size_t wanted = len - i; + ssize_t ret = read(fd, (char*)buf + i, wanted); + + if (ret == -1) { + if (errno == EAGAIN || errno == EINTR) + continue; + close(fd); + goto nodevrandom; + } + i += ret; + } + close(fd); + if (fallback_gotdata(buf, len) == 0) { + errno = save_errno; + return 0; /* satisfied */ + } +nodevrandom: + errno = EIO; + return -1; +} + static inline void _rs_init(u_char *buf, size_t n) { @@ -111,11 +180,14 @@ _rs_stir(void) u_char rnd[KEYSZ + IVSZ]; if (getentropy(rnd, sizeof rnd) == -1) { + if(errno != ENOSYS || + fallback_getentropy_urandom(rnd, sizeof rnd) == -1) { #ifdef SIGKILL - raise(SIGKILL); + raise(SIGKILL); #else - exit(9); /* windows */ + exit(9); /* windows */ #endif + } } if (!rs) diff --git a/external/unbound/compat/ctime_r.c b/external/unbound/compat/ctime_r.c index 2594dc1..87c2609 100644 --- a/external/unbound/compat/ctime_r.c +++ b/external/unbound/compat/ctime_r.c @@ -6,7 +6,7 @@ #include "util/locks.h" /** the lock for ctime buffer */ -static lock_basic_t ctime_lock; +static lock_basic_type ctime_lock; /** has it been inited */ static int ctime_r_init = 0; diff --git a/external/unbound/compat/explicit_bzero.c b/external/unbound/compat/explicit_bzero.c index a3ba279..5f1c427 100644 --- a/external/unbound/compat/explicit_bzero.c +++ b/external/unbound/compat/explicit_bzero.c @@ -6,7 +6,11 @@ #include "config.h" #include +#ifdef HAVE_ATTR_WEAK __attribute__((weak)) void +#else +void +#endif __explicit_bzero_hook(void *ATTR_UNUSED(buf), size_t ATTR_UNUSED(len)) { } diff --git a/external/unbound/compat/getentropy_linux.c b/external/unbound/compat/getentropy_linux.c index d3c561d..b86c0fb 100644 --- a/external/unbound/compat/getentropy_linux.c +++ b/external/unbound/compat/getentropy_linux.c @@ -30,13 +30,7 @@ #ifdef HAVE_SYS_SYSCTL_H #include #endif -#ifdef __ANDROID__ -#include -#define statvfs statfs -#define fstatvfs fstatfs -#else #include -#endif #include #include #include @@ -66,6 +60,9 @@ #include #endif #include +#ifndef MAP_ANON +#define MAP_ANON MAP_ANONYMOUS +#endif #define REPEAT 5 #define min(a, b) (((a) < (b)) ? (a) : (b)) @@ -100,7 +97,7 @@ int getentropy(void *buf, size_t len); extern int main(int, char *argv[]); #endif static int gotdata(char *buf, size_t len); -#ifdef SYS_getrandom +#if defined(SYS_getrandom) && defined(__NR_getrandom) static int getentropy_getrandom(void *buf, size_t len); #endif static int getentropy_urandom(void *buf, size_t len); @@ -119,7 +116,7 @@ getentropy(void *buf, size_t len) return -1; } -#ifdef SYS_getrandom +#if defined(SYS_getrandom) && defined(__NR_getrandom) /* * Try descriptor-less getrandom() */ @@ -215,7 +212,7 @@ gotdata(char *buf, size_t len) return 0; } -#ifdef SYS_getrandom +#if defined(SYS_getrandom) && defined(__NR_getrandom) static int getentropy_getrandom(void *buf, size_t len) { diff --git a/external/unbound/compat/strsep.c b/external/unbound/compat/strsep.c new file mode 100644 index 0000000..4e3f05c --- /dev/null +++ b/external/unbound/compat/strsep.c @@ -0,0 +1,65 @@ +/** + * strsep implementation for compatibility. + * + * LICENSE + * Copyright (c) 2016, NLnet Labs + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NLnetLabs nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + **/ + +#include "config.h" + +/** see if character is in the delimiter array */ +static int +in_delim(char c, const char* delim) +{ + const char* p; + if(!delim) + return 0; + for(p=delim; *p; p++) { + if(*p == c) + return 1; + } + return 0; +} + +char *strsep(char **stringp, const char *delim) +{ + char* s; + char* orig; + if(stringp == NULL || *stringp == NULL) + return NULL; + orig = *stringp; + s = *stringp; + while(*s && !in_delim(*s, delim)) + s++; + if(*s) { + *s = 0; + *stringp = s+1; + } else { + *stringp = NULL; + } + return orig; +} diff --git a/external/unbound/config.guess b/external/unbound/config.guess index b79252d..2e9ad7f 100644 --- a/external/unbound/config.guess +++ b/external/unbound/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,12 +24,12 @@ timestamp='2013-06-10' # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -579,8 +603,9 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi @@ -617,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -662,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -679,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -789,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -826,7 +851,7 @@ EOF *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -878,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -901,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -932,6 +957,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -944,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -969,10 +1000,13 @@ EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) + mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1001,6 +1035,9 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1020,7 +1057,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1099,7 +1136,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1248,6 +1285,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1260,22 +1300,32 @@ EOF if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1306,7 +1356,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1348,7 +1398,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1359,171 +1409,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; -esac - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs exit ;; - esac -fi +esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/external/unbound/config.h.cmake.in b/external/unbound/config.h.cmake.in index 87c282f..59160c4 100644 --- a/external/unbound/config.h.cmake.in +++ b/external/unbound/config.h.cmake.in @@ -1,11 +1,11 @@ /* config.h.in. Generated from configure.ac by autoheader. */ -/* define if a library can reference the 'main' symbol */ -#cmakedefine CAN_REFERENCE_MAIN - /* Directory to chroot to */ #define CHROOT_DIR "@UNBOUND_CHROOT_DIR@" +/* Define this to enable client subnet option. */ +#cmakedefine CLIENT_SUBNET + /* Do sha512 definitions in config.h */ #cmakedefine COMPAT_SHA512 @@ -30,6 +30,9 @@ internal symbols */ #cmakedefine EXPORT_ALL_SYMBOLS +/* Define to 1 if you have the `accept4' function. */ +#cmakedefine HAVE_ACCEPT4 + /* Define to 1 if you have the `arc4random' function. */ #cmakedefine HAVE_ARC4RANDOM @@ -45,12 +48,18 @@ /* Whether the C compiler accepts the "unused" attribute */ #cmakedefine HAVE_ATTR_UNUSED +/* Whether the C compiler accepts the "weak" attribute */ +#cmakedefine HAVE_ATTR_WEAK + /* Define to 1 if you have the `chown' function. */ #cmakedefine HAVE_CHOWN /* Define to 1 if you have the `chroot' function. */ #cmakedefine HAVE_CHROOT +/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */ +#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA + /* Define to 1 if you have the `ctime_r' function. */ #cmakedefine HAVE_CTIME_R @@ -65,6 +74,22 @@ if you don't. */ #cmakedefine HAVE_DECL_ARC4RANDOM_UNIFORM +/* Define to 1 if you have the declaration of `inet_ntop', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INET_NTOP + +/* Define to 1 if you have the declaration of `inet_pton', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INET_PTON + +/* Define to 1 if you have the declaration of `NID_ED25519', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_NID_ED25519 + +/* Define to 1 if you have the declaration of `NID_ED448', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_NID_ED448 + /* Define to 1 if you have the declaration of `NID_secp384r1', and to 0 if you don't. */ #cmakedefine HAVE_DECL_NID_SECP384R1 @@ -77,6 +102,10 @@ don't. */ #cmakedefine HAVE_DECL_REALLOCARRAY +/* Define to 1 if you have the declaration of `redisConnect', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_REDISCONNECT + /* Define to 1 if you have the declaration of `sk_SSL_COMP_pop_free', and to 0 if you don't. */ #cmakedefine HAVE_DECL_SK_SSL_COMP_POP_FREE @@ -104,15 +133,27 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_DLFCN_H +/* Define to 1 if you have the `DSA_SIG_set0' function. */ +#cmakedefine HAVE_DSA_SIG_SET0 + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_ENDIAN_H /* Define to 1 if you have the `endprotoent' function. */ #cmakedefine HAVE_ENDPROTOENT +/* Define to 1 if you have the `endpwent' function. */ +#cmakedefine HAVE_ENDPWENT + /* Define to 1 if you have the `endservent' function. */ #cmakedefine HAVE_ENDSERVENT +/* Define to 1 if you have the `ERR_free_strings' function. */ +#cmakedefine HAVE_ERR_FREE_STRINGS + +/* Define to 1 if you have the `ERR_load_crypto_strings' function. */ +#cmakedefine HAVE_ERR_LOAD_CRYPTO_STRINGS + /* Define to 1 if you have the `event_base_free' function. */ #cmakedefine HAVE_EVENT_BASE_FREE @@ -128,6 +169,18 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_EVENT_H +/* Define to 1 if you have the `EVP_cleanup' function. */ +#cmakedefine HAVE_EVP_CLEANUP + +/* Define to 1 if you have the `EVP_DigestVerify' function. */ +#cmakedefine HAVE_EVP_DIGESTVERIFY + +/* Define to 1 if you have the `EVP_dss1' function. */ +#cmakedefine HAVE_EVP_DSS1 + +/* Define to 1 if you have the `EVP_MD_CTX_new' function. */ +#cmakedefine HAVE_EVP_MD_CTX_NEW + /* Define to 1 if you have the `EVP_sha1' function. */ #cmakedefine HAVE_EVP_SHA1 @@ -191,8 +244,11 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_GRP_H -/* If you have HMAC_CTX_init */ -#cmakedefine HAVE_HMAC_CTX_INIT +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_HIREDIS_HIREDIS_H + +/* If you have HMAC_Update */ +#cmakedefine HAVE_HMAC_UPDATE /* Define to 1 if you have the `inet_aton' function. */ #cmakedefine HAVE_INET_ATON @@ -221,6 +277,9 @@ /* Define to 1 if you have the `kill' function. */ #cmakedefine HAVE_KILL +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIBKERN_OSBYTEORDER_H + /* Define if we have LibreSSL */ #cmakedefine HAVE_LIBRESSL @@ -245,27 +304,57 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_NETINET_IN_H +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETINET_TCP_H + /* Use libnettle for crypto */ #cmakedefine HAVE_NETTLE +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETTLE_DSA_COMPAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_NETTLE_EDDSA_H + /* Use libnss for crypto */ #cmakedefine HAVE_NSS +/* Define to 1 if you have the `OpenSSL_add_all_digests' function. */ +#cmakedefine HAVE_OPENSSL_ADD_ALL_DIGESTS + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_OPENSSL_BN_H + /* Define to 1 if you have the `OPENSSL_config' function. */ #cmakedefine HAVE_OPENSSL_CONFIG /* Define to 1 if you have the header file. */ #cmakedefine HAVE_OPENSSL_CONF_H +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_OPENSSL_DH_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_OPENSSL_DSA_H + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_OPENSSL_ENGINE_H /* Define to 1 if you have the header file. */ #cmakedefine HAVE_OPENSSL_ERR_H +/* Define to 1 if you have the `OPENSSL_init_crypto' function. */ +#cmakedefine HAVE_OPENSSL_INIT_CRYPTO + +/* Define to 1 if you have the `OPENSSL_init_ssl' function. */ +#cmakedefine HAVE_OPENSSL_INIT_SSL + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_OPENSSL_RAND_H +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_OPENSSL_RSA_H + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_OPENSSL_SSL_H @@ -290,15 +379,15 @@ /* Define to 1 if you have the `random' function. */ #cmakedefine HAVE_RANDOM +/* Define to 1 if you have the `RAND_cleanup' function. */ +#cmakedefine HAVE_RAND_CLEANUP + /* Define to 1 if you have the `reallocarray' function. */ #cmakedefine HAVE_REALLOCARRAY /* Define to 1 if you have the `recvmsg' function. */ #cmakedefine HAVE_RECVMSG -/* define if you have the sbrk() call */ -#cmakedefine HAVE_SBRK - /* Define to 1 if you have the `sendmsg' function. */ #cmakedefine HAVE_SENDMSG @@ -326,6 +415,9 @@ /* Define to 1 if you have the `SHA512_Update' function. */ #cmakedefine HAVE_SHA512_UPDATE +/* Define to 1 if you have the `shmget' function. */ +#cmakedefine HAVE_SHMGET + /* Define to 1 if you have the `sigprocmask' function. */ #cmakedefine HAVE_SIGPROCMASK @@ -347,6 +439,15 @@ /* Define if you have the SSL libraries installed. */ #cmakedefine HAVE_SSL +/* Define to 1 if you have the `SSL_CTX_set_security_level' function. */ +#cmakedefine HAVE_SSL_CTX_SET_SECURITY_LEVEL + +/* Define to 1 if you have the `SSL_get0_peername' function. */ +#cmakedefine HAVE_SSL_GET0_PEERNAME + +/* Define to 1 if you have the `SSL_set1_host' function. */ +#cmakedefine HAVE_SSL_SET1_HOST + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STDARG_H @@ -377,6 +478,9 @@ /* Define to 1 if you have the `strptime' function. */ #cmakedefine HAVE_STRPTIME +/* Define to 1 if you have the `strsep' function. */ +#cmakedefine HAVE_STRSEP + /* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */ #cmakedefine HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST @@ -389,6 +493,15 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYSLOG_H +/* Define to 1 if systemd should be used */ +#undef HAVE_SYSTEMD + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_ENDIAN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_IPC_H + /* Define to 1 if you have the header file. */ #cmakedefine01 HAVE_SYS_PARAM_H @@ -398,6 +511,9 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_SHA2_H +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SHM_H + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_SOCKET_H @@ -464,8 +580,7 @@ /* if lex has yylex_destroy */ #cmakedefine LEX_HAS_YYLEX_DESTROY -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ +/* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the maximum message length to pass to syslog. */ @@ -487,6 +602,9 @@ /* Put -D_BSD_SOURCE define in config.h */ #cmakedefine OMITTED__D_BSD_SOURCE +/* Put -D_DEFAULT_SOURCE define in config.h */ +#cmakedefine OMITTED__D_DEFAULT_SOURCE + /* Put -D_GNU_SOURCE define in config.h */ #cmakedefine OMITTED__D_GNU_SOURCE @@ -554,6 +672,9 @@ /* define if (v)snprintf does not return length needed, (but length used) */ #undef SNPRINTF_RET_BROKEN +/* Define to 1 if libsodium supports sodium_set_misuse_handler */ +#cmakedefine SODIUM_MISUSE_HANDLER + /* Define to 1 if you have the ANSI C header files. */ #cmakedefine STDC_HEADERS @@ -578,22 +699,54 @@ /* define this to enable debug checks. */ #cmakedefine UNBOUND_DEBUG +/* Define to 1 to use cachedb support */ +#cmakedefine USE_CACHEDB + +/* Define to 1 to enable dnscrypt support */ +#cmakedefine USE_DNSCRYPT + +/* Define to 1 to enable dnscrypt with xchacha20 support */ +#cmakedefine USE_DNSCRYPT_XCHACHA20 + /* Define to 1 to enable dnstap support */ #cmakedefine USE_DNSTAP +/* Define this to enable DSA support. */ +#cmakedefine USE_DSA + /* Define this to enable ECDSA support. */ #cmakedefine USE_ECDSA /* Define this to enable an EVP workaround for older openssl */ #cmakedefine USE_ECDSA_EVP_WORKAROUND +/* Define this to enable ED25519 support. */ +#cmakedefine USE_ED25519 + +/* Define this to enable ED448 support. */ +#cmakedefine USE_ED448 + /* Define this to enable GOST support. */ #cmakedefine USE_GOST +/* Define to 1 to use ipsecmod support. */ +#cmakedefine USE_IPSECMOD + /* Define if you want to use internal select based events */ -/* #cmakedefine USE_MINI_EVENT */ #define USE_MINI_EVENT 1 +/* Define this to enable client TCP Fast Open. */ +#cmakedefine USE_MSG_FASTOPEN + +/* Define this to enable client TCP Fast Open. */ +#cmakedefine USE_OSX_MSG_FASTOPEN + +/* Define this to use hiredis client. */ +#cmakedefine USE_REDIS + +/* Define this to enable SHA1 support. */ +#cmakedefine USE_SHA1 + /* Define this to enable SHA256 and SHA512 support. */ #cmakedefine USE_SHA2 @@ -619,6 +772,9 @@ #endif +/* Define this to enable server TCP Fast Open. */ +#cmakedefine USE_TCP_FASTOPEN + /* Whether the windows socket API is used */ #cmakedefine USE_WINSOCK @@ -744,6 +900,10 @@ #define _BSD_SOURCE 1 #endif +#if defined(OMITTED__D_DEFAULT_SOURCE) && !defined(_DEFAULT_SOURCE) +#define _DEFAULT_SOURCE 1 +#endif + #if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ 1 #endif @@ -768,6 +928,13 @@ #define _LARGEFILE_SOURCE 1 #endif + + + +#ifndef UNBOUND_DEBUG +# define NDEBUG +#endif + /** Use small-ldns codebase */ #define USE_SLDNS 1 #ifdef HAVE_SSL @@ -786,6 +953,7 @@ #endif #if STDC_HEADERS +#include #include #endif @@ -819,6 +987,10 @@ #include #endif +#ifdef HAVE_NETINET_TCP_H +#include +#endif + #ifdef HAVE_ARPA_INET_H #include #endif @@ -837,11 +1009,11 @@ #define ARG_LL "%I64" #endif - #ifndef AF_LOCAL #define AF_LOCAL AF_UNIX #endif + #ifdef HAVE_ATTR_FORMAT # define ATTR_FORMAT(archetype, string_index, first_to_check) \ @@ -872,7 +1044,6 @@ #define MAXHOSTNAMELEN 256 #endif - #if !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) #define snprintf snprintf_unbound #define vsnprintf vsnprintf_unbound @@ -881,7 +1052,6 @@ int snprintf (char *str, size_t count, const char *fmt, ...); int vsnprintf (char *str, size_t count, const char *fmt, va_list arg); #endif /* HAVE_SNPRINTF or SNPRINTF_RET_BROKEN */ - #ifndef HAVE_INET_PTON #define inet_pton inet_pton_unbound int inet_pton(int af, const char* src, void* dst); @@ -976,11 +1146,26 @@ int memcmp(const void *x, const void *y, size_t n); char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_STRSEP +#define strsep unbound_strsep +char *strsep(char **stringp, const char *delim); +#endif + #ifndef HAVE_ISBLANK #define isblank unbound_isblank int isblank(int c); #endif +/* +#if defined(HAVE_INET_NTOP) && !HAVE_DECL_INET_NTOP +const char *inet_ntop(int af, const void *src, char *dst, size_t size); +#endif + +#if defined(HAVE_INET_PTON) && !HAVE_DECL_INET_PTON +int inet_pton(int af, const char* src, void* dst); +#endif +*/ + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; @@ -1011,6 +1196,7 @@ uint32_t arc4random(void); void arc4random_buf(void* buf, size_t n); void _ARC4_LOCK(void); void _ARC4_UNLOCK(void); +void _ARC4_LOCK_DESTROY(void); #endif #ifndef HAVE_ARC4RANDOM_UNIFORM uint32_t arc4random_uniform(uint32_t upper_bound); @@ -1076,6 +1262,8 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, /** default port for DNS traffic. */ #define UNBOUND_DNS_PORT 53 +/** default port for DNS over TLS traffic. */ +#define UNBOUND_DNS_OVER_TLS_PORT 853 /** default port for unbound control traffic, registered port with IANA, ub-dns-control 8953/tcp unbound dns nameserver control */ #define UNBOUND_CONTROL_PORT 8953 diff --git a/external/unbound/config.h.in b/external/unbound/config.h.in index 3364395..04356f3 100644 --- a/external/unbound/config.h.in +++ b/external/unbound/config.h.in @@ -3,6 +3,9 @@ /* Directory to chroot to */ #undef CHROOT_DIR +/* Define this to enable client subnet option. */ +#undef CLIENT_SUBNET + /* Do sha512 definitions in config.h */ #undef COMPAT_SHA512 @@ -27,6 +30,9 @@ internal symbols */ #undef EXPORT_ALL_SYMBOLS +/* Define to 1 if you have the `accept4' function. */ +#undef HAVE_ACCEPT4 + /* Define to 1 if you have the `arc4random' function. */ #undef HAVE_ARC4RANDOM @@ -42,12 +48,18 @@ /* Whether the C compiler accepts the "unused" attribute */ #undef HAVE_ATTR_UNUSED +/* Whether the C compiler accepts the "weak" attribute */ +#undef HAVE_ATTR_WEAK + /* Define to 1 if you have the `chown' function. */ #undef HAVE_CHOWN /* Define to 1 if you have the `chroot' function. */ #undef HAVE_CHROOT +/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */ +#undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA + /* Define to 1 if you have the `ctime_r' function. */ #undef HAVE_CTIME_R @@ -62,6 +74,22 @@ if you don't. */ #undef HAVE_DECL_ARC4RANDOM_UNIFORM +/* Define to 1 if you have the declaration of `inet_ntop', and to 0 if you + don't. */ +#undef HAVE_DECL_INET_NTOP + +/* Define to 1 if you have the declaration of `inet_pton', and to 0 if you + don't. */ +#undef HAVE_DECL_INET_PTON + +/* Define to 1 if you have the declaration of `NID_ED25519', and to 0 if you + don't. */ +#undef HAVE_DECL_NID_ED25519 + +/* Define to 1 if you have the declaration of `NID_ED448', and to 0 if you + don't. */ +#undef HAVE_DECL_NID_ED448 + /* Define to 1 if you have the declaration of `NID_secp384r1', and to 0 if you don't. */ #undef HAVE_DECL_NID_SECP384R1 @@ -74,6 +102,10 @@ don't. */ #undef HAVE_DECL_REALLOCARRAY +/* Define to 1 if you have the declaration of `redisConnect', and to 0 if you + don't. */ +#undef HAVE_DECL_REDISCONNECT + /* Define to 1 if you have the declaration of `sk_SSL_COMP_pop_free', and to 0 if you don't. */ #undef HAVE_DECL_SK_SSL_COMP_POP_FREE @@ -101,15 +133,27 @@ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H +/* Define to 1 if you have the `DSA_SIG_set0' function. */ +#undef HAVE_DSA_SIG_SET0 + /* Define to 1 if you have the header file. */ #undef HAVE_ENDIAN_H /* Define to 1 if you have the `endprotoent' function. */ #undef HAVE_ENDPROTOENT +/* Define to 1 if you have the `endpwent' function. */ +#undef HAVE_ENDPWENT + /* Define to 1 if you have the `endservent' function. */ #undef HAVE_ENDSERVENT +/* Define to 1 if you have the `ERR_free_strings' function. */ +#undef HAVE_ERR_FREE_STRINGS + +/* Define to 1 if you have the `ERR_load_crypto_strings' function. */ +#undef HAVE_ERR_LOAD_CRYPTO_STRINGS + /* Define to 1 if you have the `event_base_free' function. */ #undef HAVE_EVENT_BASE_FREE @@ -125,6 +169,18 @@ /* Define to 1 if you have the header file. */ #undef HAVE_EVENT_H +/* Define to 1 if you have the `EVP_cleanup' function. */ +#undef HAVE_EVP_CLEANUP + +/* Define to 1 if you have the `EVP_DigestVerify' function. */ +#undef HAVE_EVP_DIGESTVERIFY + +/* Define to 1 if you have the `EVP_dss1' function. */ +#undef HAVE_EVP_DSS1 + +/* Define to 1 if you have the `EVP_MD_CTX_new' function. */ +#undef HAVE_EVP_MD_CTX_NEW + /* Define to 1 if you have the `EVP_sha1' function. */ #undef HAVE_EVP_SHA1 @@ -188,8 +244,11 @@ /* Define to 1 if you have the header file. */ #undef HAVE_GRP_H -/* If you have HMAC_CTX_init */ -#undef HAVE_HMAC_CTX_INIT +/* Define to 1 if you have the header file. */ +#undef HAVE_HIREDIS_HIREDIS_H + +/* If you have HMAC_Update */ +#undef HAVE_HMAC_UPDATE /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON @@ -218,6 +277,9 @@ /* Define to 1 if you have the `kill' function. */ #undef HAVE_KILL +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBKERN_OSBYTEORDER_H + /* Define if we have LibreSSL */ #undef HAVE_LIBRESSL @@ -242,27 +304,57 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_TCP_H + /* Use libnettle for crypto */ #undef HAVE_NETTLE +/* Define to 1 if you have the header file. */ +#undef HAVE_NETTLE_DSA_COMPAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETTLE_EDDSA_H + /* Use libnss for crypto */ #undef HAVE_NSS +/* Define to 1 if you have the `OpenSSL_add_all_digests' function. */ +#undef HAVE_OPENSSL_ADD_ALL_DIGESTS + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_BN_H + /* Define to 1 if you have the `OPENSSL_config' function. */ #undef HAVE_OPENSSL_CONFIG /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_CONF_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_DH_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_DSA_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_ENGINE_H /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_ERR_H +/* Define to 1 if you have the `OPENSSL_init_crypto' function. */ +#undef HAVE_OPENSSL_INIT_CRYPTO + +/* Define to 1 if you have the `OPENSSL_init_ssl' function. */ +#undef HAVE_OPENSSL_INIT_SSL + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_RAND_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_RSA_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_SSL_H @@ -287,15 +379,15 @@ /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM +/* Define to 1 if you have the `RAND_cleanup' function. */ +#undef HAVE_RAND_CLEANUP + /* Define to 1 if you have the `reallocarray' function. */ #undef HAVE_REALLOCARRAY /* Define to 1 if you have the `recvmsg' function. */ #undef HAVE_RECVMSG -/* define if you have the sbrk() call */ -#undef HAVE_SBRK - /* Define to 1 if you have the `sendmsg' function. */ #undef HAVE_SENDMSG @@ -323,6 +415,9 @@ /* Define to 1 if you have the `SHA512_Update' function. */ #undef HAVE_SHA512_UPDATE +/* Define to 1 if you have the `shmget' function. */ +#undef HAVE_SHMGET + /* Define to 1 if you have the `sigprocmask' function. */ #undef HAVE_SIGPROCMASK @@ -344,6 +439,15 @@ /* Define if you have the SSL libraries installed. */ #undef HAVE_SSL +/* Define to 1 if you have the `SSL_CTX_set_security_level' function. */ +#undef HAVE_SSL_CTX_SET_SECURITY_LEVEL + +/* Define to 1 if you have the `SSL_get0_peername' function. */ +#undef HAVE_SSL_GET0_PEERNAME + +/* Define to 1 if you have the `SSL_set1_host' function. */ +#undef HAVE_SSL_SET1_HOST + /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H @@ -374,6 +478,9 @@ /* Define to 1 if you have the `strptime' function. */ #undef HAVE_STRPTIME +/* Define to 1 if you have the `strsep' function. */ +#undef HAVE_STRSEP + /* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */ #undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST @@ -386,6 +493,15 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H +/* Define to 1 if systemd should be used */ +#undef HAVE_SYSTEMD + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_ENDIAN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IPC_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H @@ -395,6 +511,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SHA2_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SHM_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H @@ -461,8 +580,7 @@ /* if lex has yylex_destroy */ #undef LEX_HAS_YYLEX_DESTROY -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ +/* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the maximum message length to pass to syslog. */ @@ -484,6 +602,9 @@ /* Put -D_BSD_SOURCE define in config.h */ #undef OMITTED__D_BSD_SOURCE +/* Put -D_DEFAULT_SOURCE define in config.h */ +#undef OMITTED__D_DEFAULT_SOURCE + /* Put -D_GNU_SOURCE define in config.h */ #undef OMITTED__D_GNU_SOURCE @@ -551,6 +672,9 @@ /* define if (v)snprintf does not return length needed, (but length used) */ #undef SNPRINTF_RET_BROKEN +/* Define to 1 if libsodium supports sodium_set_misuse_handler */ +#undef SODIUM_MISUSE_HANDLER + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS @@ -575,21 +699,54 @@ /* define this to enable debug checks. */ #undef UNBOUND_DEBUG +/* Define to 1 to use cachedb support */ +#undef USE_CACHEDB + +/* Define to 1 to enable dnscrypt support */ +#undef USE_DNSCRYPT + +/* Define to 1 to enable dnscrypt with xchacha20 support */ +#undef USE_DNSCRYPT_XCHACHA20 + /* Define to 1 to enable dnstap support */ #undef USE_DNSTAP +/* Define this to enable DSA support. */ +#undef USE_DSA + /* Define this to enable ECDSA support. */ #undef USE_ECDSA /* Define this to enable an EVP workaround for older openssl */ #undef USE_ECDSA_EVP_WORKAROUND +/* Define this to enable ED25519 support. */ +#undef USE_ED25519 + +/* Define this to enable ED448 support. */ +#undef USE_ED448 + /* Define this to enable GOST support. */ #undef USE_GOST +/* Define to 1 to use ipsecmod support. */ +#undef USE_IPSECMOD + /* Define if you want to use internal select based events */ #undef USE_MINI_EVENT +/* Define this to enable client TCP Fast Open. */ +#undef USE_MSG_FASTOPEN + +/* Define this to enable client TCP Fast Open. */ +#undef USE_OSX_MSG_FASTOPEN + +/* Define this to use hiredis client. */ +#undef USE_REDIS + +/* Define this to enable SHA1 support. */ +#undef USE_SHA1 + /* Define this to enable SHA256 and SHA512 support. */ #undef USE_SHA2 @@ -615,6 +772,9 @@ #endif +/* Define this to enable server TCP Fast Open. */ +#undef USE_TCP_FASTOPEN + /* Whether the windows socket API is used */ #undef USE_WINSOCK @@ -738,6 +898,10 @@ #define _BSD_SOURCE 1 #endif +#if defined(OMITTED__D_DEFAULT_SOURCE) && !defined(_DEFAULT_SOURCE) +#define _DEFAULT_SOURCE 1 +#endif + #if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ 1 #endif @@ -811,6 +975,10 @@ #include #endif +#ifdef HAVE_NETINET_TCP_H +#include +#endif + #ifdef HAVE_ARPA_INET_H #include #endif @@ -966,11 +1134,24 @@ int memcmp(const void *x, const void *y, size_t n); char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_STRSEP +#define strsep unbound_strsep +char *strsep(char **stringp, const char *delim); +#endif + #ifndef HAVE_ISBLANK #define isblank unbound_isblank int isblank(int c); #endif +#if defined(HAVE_INET_NTOP) && !HAVE_DECL_INET_NTOP +const char *inet_ntop(int af, const void *src, char *dst, size_t size); +#endif + +#if defined(HAVE_INET_PTON) && !HAVE_DECL_INET_PTON +int inet_pton(int af, const char* src, void* dst); +#endif + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; @@ -1001,6 +1182,7 @@ uint32_t arc4random(void); void arc4random_buf(void* buf, size_t n); void _ARC4_LOCK(void); void _ARC4_UNLOCK(void); +void _ARC4_LOCK_DESTROY(void); #endif #ifndef HAVE_ARC4RANDOM_UNIFORM uint32_t arc4random_uniform(uint32_t upper_bound); @@ -1066,6 +1248,8 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, /** default port for DNS traffic. */ #define UNBOUND_DNS_PORT 53 +/** default port for DNS over TLS traffic. */ +#define UNBOUND_DNS_OVER_TLS_PORT 853 /** default port for unbound control traffic, registered port with IANA, ub-dns-control 8953/tcp unbound dns nameserver control */ #define UNBOUND_CONTROL_PORT 8953 diff --git a/external/unbound/config.sub b/external/unbound/config.sub index d2a9613..cc69b06 100644 --- a/external/unbound/config.sub +++ b/external/unbound/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2013-08-10' +timestamp='2016-09-05' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ timestamp='2013-08-10' # of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +33,7 @@ timestamp='2013-08-10' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2013-08-10' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,8 +116,8 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -255,16 +254,18 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -282,8 +283,10 @@ case $basic_machine in | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -295,14 +298,14 @@ case $basic_machine in | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -310,6 +313,7 @@ case $basic_machine in | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) @@ -324,7 +328,10 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -369,18 +376,20 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ @@ -400,8 +409,10 @@ case $basic_machine in | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -413,16 +424,18 @@ case $basic_machine in | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -430,6 +443,7 @@ case $basic_machine in | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ + | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -506,6 +520,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -626,6 +643,14 @@ case $basic_machine in basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -767,6 +792,9 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; m68knommu) basic_machine=m68k-unknown os=-linux @@ -822,6 +850,10 @@ case $basic_machine in basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos @@ -998,7 +1030,7 @@ case $basic_machine in ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) + ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) @@ -1006,9 +1038,9 @@ case $basic_machine in ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) + ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) @@ -1354,27 +1386,28 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1506,6 +1539,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) @@ -1592,9 +1627,6 @@ case $basic_machine in mips*-*) os=-elf ;; - or1k-*) - os=-elf - ;; or32-*) os=-coff ;; diff --git a/external/unbound/configure b/external/unbound/configure index 2e0e34c..7163bb9 100644 --- a/external/unbound/configure +++ b/external/unbound/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.5.8. +# Generated by GNU Autoconf 2.69 for unbound 1.7.3. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.5.8' -PACKAGE_STRING='unbound 1.5.8' +PACKAGE_VERSION='1.7.3' +PACKAGE_STRING='unbound 1.7.3' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl' PACKAGE_URL='' @@ -638,6 +638,12 @@ INSTALLTARGET ALLTARGET SOURCEFILE SOURCEDETERMINE +IPSECMOD_HEADER +IPSECMOD_OBJ +DNSCRYPT_OBJ +DNSCRYPT_SRC +ENABLE_DNSCRYPT +ENABLE_DNSCRYPT_XCHACHA20 DNSTAP_OBJ DNSTAP_SRC opt_dnstap_socket_path @@ -658,9 +664,21 @@ WIN_DAEMON_SRC WINAPPS WINDRES CHECKLOCK_OBJ +USE_SYSTEMD_FALSE +USE_SYSTEMD_TRUE +SYSTEMD_DAEMON_LIBS +SYSTEMD_DAEMON_CFLAGS +SYSTEMD_LIBS +SYSTEMD_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG staticexe +PC_LIBEVENT_DEPENDENCY UNBOUND_EVENT_UNINSTALL UNBOUND_EVENT_INSTALL +SUBNET_HEADER +SUBNET_OBJ SSLLIB HAVE_SSL CONFIG_DATE @@ -678,6 +696,7 @@ WITH_PYTHONMODULE swig SWIG_LIB SWIG +PC_PY_DEPENDENCY PY_MAJOR_VERSION PYTHON_SITE_PKG PYTHON_LDFLAGS @@ -691,6 +710,7 @@ PTHREAD_CC ax_pthread_config RUNTIME_PATH LIBOBJS +LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO @@ -738,6 +758,9 @@ UNBOUND_CHROOT_DIR UNBOUND_RUN_DIR ub_conf_dir ub_conf_file +UNBOUND_LOCALSTATE_DIR +UNBOUND_SYSCONF_DIR +UNBOUND_SBIN_DIR EGREP GREP CPP @@ -812,6 +835,7 @@ enable_shared enable_static with_pic enable_fast_install +with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock @@ -824,22 +848,36 @@ with_pthreads with_solaris_threads with_pyunbound with_pythonmodule +enable_swig_version_check with_nss with_nettle with_ssl +enable_sha1 enable_sha2 +enable_subnet enable_gost enable_ecdsa +enable_dsa +enable_ed25519 +enable_ed448 enable_event_api +enable_tfo_client +enable_tfo_server with_libevent with_libexpat +with_libhiredis enable_static_exe +enable_systemd enable_lock_checks enable_allsymbols enable_dnstap with_dnstap_socket_path with_protobuf_c with_libfstrm +enable_dnscrypt +with_libsodium +enable_cachedb +enable_ipsecmod with_libunbound_only ' ac_precious_vars='build_alias @@ -853,7 +891,15 @@ CPPFLAGS CPP YACC YFLAGS -PYTHON_VERSION' +LT_SYS_LIBRARY_PATH +PYTHON_VERSION +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +SYSTEMD_CFLAGS +SYSTEMD_LIBS +SYSTEMD_DAEMON_CFLAGS +SYSTEMD_DAEMON_LIBS' # Initialize some variables set by options. @@ -1394,7 +1440,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.5.8 to adapt to many kinds of systems. +\`configure' configures unbound 1.7.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1459,7 +1505,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.5.8:";; + short | recursive ) echo "Configuration of unbound 1.7.3:";; esac cat <<\_ACEOF @@ -1489,19 +1535,36 @@ Optional Features: enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes + --disable-swig-version-check + Disable swig version check to build python modules + with older swig even though that is unreliable + --disable-sha1 Disable SHA1 RRSIG support, does not disable nsec3 + support --disable-sha2 Disable SHA256 and SHA512 RRSIG support + --enable-subnet Enable client subnet --disable-gost Disable GOST support --disable-ecdsa Disable ECDSA support - --enable-event-api Enable (experimental) libevent-based libunbound API - installed to unbound-event.h + --disable-dsa Disable DSA support + --disable-ed25519 Disable ED25519 support + --disable-ed448 Disable ED448 support + --enable-event-api Enable (experimental) pluggable event base + libunbound API installed to unbound-event.h + --enable-tfo-client Enable TCP Fast Open for client mode + --enable-tfo-server Enable TCP Fast Open for server mode --enable-static-exe enable to compile executables statically against (event) libs, for debug purposes + --enable-systemd compile with systemd support --enable-lock-checks enable to check lock and unlock calls, for debug purposes --enable-allsymbols export all symbols from libunbound and link binaries 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 + --enable-ipsecmod Enable ipsecmod module that facilitates + opportunistic IPsec Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1526,9 +1589,12 @@ Optional Packages: user is unbound) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). --with-pthreads use pthreads library, or --without-pthreads to disable threading support. --with-solaris-threads use solaris native thread library. @@ -1547,10 +1613,12 @@ Optional Packages: an explicit path). Slower, but allows use of large outgoing port ranges. --with-libexpat=path specify explicit path for libexpat. + --with-libhiredis=path specify explicit path for libhiredis. --with-dnstap-socket-path=pathname 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: @@ -1568,10 +1636,25 @@ Some influential environment variables: YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. PYTHON_VERSION The installed Python version to use, for example '2.3'. This string will be appended to the Python interpreter canonical name. + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + SYSTEMD_CFLAGS + C compiler flags for SYSTEMD, overriding pkg-config + SYSTEMD_LIBS + linker flags for SYSTEMD, overriding pkg-config + SYSTEMD_DAEMON_CFLAGS + C compiler flags for SYSTEMD_DAEMON, overriding pkg-config + SYSTEMD_DAEMON_LIBS + linker flags for SYSTEMD_DAEMON, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1639,7 +1722,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.5.8 +unbound configure 1.7.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2348,7 +2431,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.5.8, which was +It was created by unbound $as_me 1.7.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2698,14 +2781,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=5 +UNBOUND_VERSION_MINOR=7 -UNBOUND_VERSION_MICRO=8 +UNBOUND_VERSION_MICRO=3 -LIBUNBOUND_CURRENT=5 +LIBUNBOUND_CURRENT=7 LIBUNBOUND_REVISION=11 -LIBUNBOUND_AGE=3 +LIBUNBOUND_AGE=5 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 # 1.0.2 had 0:14:0 @@ -2751,7 +2834,22 @@ LIBUNBOUND_AGE=3 # 1.5.5 had 5:8:3 # 1.5.6 had 5:9:3 # 1.5.7 had 5:10:3 -# 1.5.8 had 5:11:3 +# 1.5.8 had 6:0:4 # adds ub_ctx_set_stub +# 1.5.9 had 6:1:4 +# 1.5.10 had 6:2:4 +# 1.6.0 had 6:3:4 +# 1.6.1 had 7:0:5 # ub_callback_t typedef renamed to ub_callback_type +# 1.6.2 had 7:1:5 +# 1.6.3 had 7:2:5 +# 1.6.4 had 7:3:5 +# 1.6.5 had 7:4:5 +# 1.6.6 had 7:5:5 +# 1.6.7 had 7:6:5 +# 1.6.8 had 7:7:5 +# 1.7.0 had 7:8:5 +# 1.7.1 had 7:9:5 +# 1.7.2 had 7:10:5 +# 1.7.3 had 7:11:5 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -2767,7 +2865,7 @@ LIBUNBOUND_AGE=3 # Current and Age. Set Revision to 0, since this is the first # implementation of the new API. # -# Otherwise, we're changing the binary API and breaking bakward +# Otherwise, we're changing the binary API and breaking backward # compatibility with old binaries. Increment Current. Set Age to 0, # since we're backward compatible with no previous APIs. Set Revision # to 0 too. @@ -4036,17 +4134,28 @@ case "$prefix" in prefix="/usr/local" ;; esac +case "$exec_prefix" in + NONE) + exec_prefix="$prefix" + ;; +esac # are we on MinGW? if uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" else - if echo $target | grep mingw32 >/dev/null; then on_mingw="yes" + if echo $host $target | grep mingw32 >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi # # Determine configuration file # the eval is to evaluate shell expansion twice +UNBOUND_SBIN_DIR=`eval echo "${sbindir}"` + +UNBOUND_SYSCONF_DIR=`eval echo "${sysconfdir}"` + +UNBOUND_LOCALSTATE_DIR=`eval echo "${localstatedir}"` + if test $on_mingw = "no"; then ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` else @@ -4332,6 +4441,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu # allow user to override the -g -O2 flags. +default_cflags=no if test "x$CFLAGS" = "x" ; then @@ -4395,6 +4505,7 @@ $as_echo "no" >&6; } fi +default_cflags=yes fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5099,9 +5210,9 @@ done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC" >&5 -$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC... " >&6; } -cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC" >&5 +$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE as a flag for $CC... " >&6; } +cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" | $as_tr_sh` if eval \${cv_prog_cc_flag_needed_$cache+:} false; then : $as_echo_n "(cached) " >&6 else @@ -5146,14 +5257,14 @@ if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else -if test -z "`$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then +if test -z "`$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=yes" else eval "cv_prog_cc_flag_needed_$cache=fail" #echo 'Test with flag fails too!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 fi @@ -5166,15 +5277,15 @@ if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : -CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" +CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE" else if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } #echo 'Test with flag is no!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 : @@ -5190,9 +5301,9 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC" >&5 -$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC... " >&6; } -cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC" >&5 +$as_echo_n "checking whether we need $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE as a flag for $CC... " >&6; } +cache=`$as_echo "$C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" | $as_tr_sh` if eval \${cv_prog_cc_flag_needed_$cache+:} false; then : $as_echo_n "(cached) " >&6 else @@ -5237,14 +5348,14 @@ if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else -if test -z "`$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then +if test -z "`$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=yes" else eval "cv_prog_cc_flag_needed_$cache=fail" #echo 'Test with flag fails too!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 fi @@ -5257,15 +5368,15 @@ if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : -CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" +CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE" else if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } #echo 'Test with flag is no!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 : @@ -5345,9 +5456,9 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_BSD_SOURCE as a flag for $CC" >&5 -$as_echo_n "checking whether we need -D_BSD_SOURCE as a flag for $CC... " >&6; } -cache=_D_BSD_SOURCE +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC" >&5 +$as_echo_n "checking whether we need -D_BSD_SOURCE -D_DEFAULT_SOURCE as a flag for $CC... " >&6; } +cache=_D_BSD_SOURCE__D_DEFAULT_SOURCE if eval \${cv_prog_cc_flag_needed_$cache+:} false; then : $as_echo_n "(cached) " >&6 else @@ -5366,14 +5477,14 @@ if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else -if test -z "`$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then +if test -z "`$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=yes" else eval "cv_prog_cc_flag_needed_$cache=fail" #echo 'Test with flag fails too!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 fi @@ -5386,15 +5497,15 @@ if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : -CFLAGS="$CFLAGS -D_BSD_SOURCE" +CFLAGS="$CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE" else if eval "test \"`echo '$cv_prog_cc_flag_needed_'$cache`\" = no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } #echo 'Test with flag is no!' #cat conftest.c -#echo "$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE $ERRFLAG -c conftest.c 2>&1" -#echo `$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE $ERRFLAG -c conftest.c 2>&1` +#echo "$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1" +#echo `$CC $CPPFLAGS $CFLAGS -D_BSD_SOURCE -D_DEFAULT_SOURCE $ERRFLAG -c conftest.c 2>&1` #exit 1 : @@ -5848,6 +5959,10 @@ $as_echo "#define UNBOUND_DEBUG /**/" >>confdefs.h # nothing to do. ;; esac +if test "$default_cflags" = "yes"; then + # only when CFLAGS was "" at the start, if the users wants to + # override we shouldn't add default cflags, because they wouldn't + # be able to turn off these options and set the CFLAGS wanted. # Check whether --enable-flto was given. if test "${enable_flto+set}" = set; then : @@ -5982,6 +6097,7 @@ rm -f core conftest.err conftest.$ac_objext \ fi +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } @@ -6109,6 +6225,48 @@ $as_echo "#define HAVE_ATTR_UNUSED 1" >>confdefs.h fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute" >&5 +$as_echo_n "checking whether the C compiler (${CC-cc}) accepts the \"weak\" attribute... " >&6; } +if ${ac_cv_c_weak_attribute+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_weak_attribute=no +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + #include +__attribute__((weak)) void f(int x) { printf("%d", x); } + +int +main () +{ + + f(1); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_weak_attribute="yes" +else + ac_cv_c_weak_attribute="no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_weak_attribute" >&5 +$as_echo "$ac_cv_c_weak_attribute" >&6; } +if test $ac_cv_c_weak_attribute = yes; then + +$as_echo "#define HAVE_ATTR_WEAK 1" >>confdefs.h + +fi + + if test "$srcdir" != "."; then CPPFLAGS="$CPPFLAGS -I$srcdir" fi @@ -6688,8 +6846,8 @@ esac -macro_version='2.4.2' -macro_revision='1.3337' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -6703,7 +6861,7 @@ macro_revision='1.3337' -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. @@ -6752,7 +6910,7 @@ func_echo_all () $ECHO "" } -case "$ECHO" in +case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 @@ -6945,19 +7103,19 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -6971,7 +7129,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -6982,7 +7140,7 @@ $as_echo_n "checking for ld used by $CC... " >&6; } with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -6993,32 +7151,32 @@ if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -7061,33 +7219,38 @@ if ${lt_cv_path_NM+:} false; then : else if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -7098,15 +7261,15 @@ else esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : @@ -7212,9 +7375,9 @@ esac fi fi - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -7222,8 +7385,8 @@ fi esac fi - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -7274,7 +7437,7 @@ if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -7314,7 +7477,7 @@ else lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -7364,22 +7527,23 @@ else ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -7397,7 +7561,7 @@ else fi -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else @@ -7415,30 +7579,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len : ${MV="mv -f"} : ${RM="rm -f"} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else @@ -7561,13 +7701,13 @@ esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then + if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi @@ -7695,13 +7835,13 @@ lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) @@ -7728,8 +7868,7 @@ mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -7765,10 +7904,6 @@ freebsd* | dragonfly*) fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -7807,7 +7942,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -7829,8 +7964,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' @@ -7883,6 +8018,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac fi @@ -8040,8 +8178,8 @@ else case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -8053,7 +8191,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac @@ -8207,7 +8345,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 @@ -8215,7 +8353,7 @@ if ac_fn_c_try_compile "$LINENO"; then : ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -8228,7 +8366,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -8445,7 +8583,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -8577,7 +8715,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; @@ -8610,14 +8748,44 @@ case `$NM -V 2>&1` in symcode='[ABCDGIRSTW]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -8635,21 +8803,24 @@ for ac_symprfx in "" "_"; do # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -8697,11 +8868,11 @@ _LT_EOF if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else @@ -8727,7 +8898,7 @@ lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -8747,13 +8918,13 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -8774,7 +8945,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -8816,6 +8987,16 @@ fi + + + + + + + + + + @@ -8839,9 +9020,9 @@ fi lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -8851,8 +9032,8 @@ case ${with_sysroot} in #( no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac @@ -8864,18 +9045,99 @@ $as_echo "${lt_sysroot:-no}" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -8884,24 +9146,25 @@ ia64-*-hpux*) test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -8930,9 +9193,50 @@ ia64-*-hpux*) rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -8946,7 +9250,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" @@ -8991,7 +9302,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } @@ -9031,13 +9342,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -9049,7 +9361,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -9058,7 +9370,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -9074,7 +9386,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. @@ -9185,7 +9497,7 @@ else fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -9688,7 +10000,7 @@ if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -9706,7 +10018,7 @@ else cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -9745,7 +10057,7 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 @@ -9774,7 +10086,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -9787,32 +10099,32 @@ fi $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -9820,6 +10132,41 @@ $as_echo "$lt_cv_ld_force_load" >&6; } ;; esac +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default @@ -9858,14 +10205,14 @@ if test "${enable_shared+set}" = set; then : *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9889,14 +10236,14 @@ if test "${enable_static+set}" = set; then : *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9920,14 +10267,14 @@ if test "${with_pic+set}" = set; then : *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9935,8 +10282,6 @@ else fi -test -z "$pic_mode" && pic_mode=default - @@ -9952,14 +10297,14 @@ if test "${enable_fast_install+set}" = set; then : *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9973,11 +10318,63 @@ fi + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -10026,7 +10423,7 @@ test -z "$LN_S" && LN_S="ln -s" -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -10065,7 +10462,7 @@ aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -10076,14 +10473,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -10092,15 +10489,8 @@ test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +func_cc_basename $compiler +cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it @@ -10115,22 +10505,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then : else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -10153,13 +10543,13 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -10181,22 +10571,22 @@ if ${lt_cv_path_MAGIC_CMD+:} false; then : else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -10219,13 +10609,13 @@ _LT_EOF break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -10246,7 +10636,7 @@ esac # Use C for the default configuration in the libtool script -lt_save_CC="$CC" +lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -10304,7 +10694,7 @@ if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; @@ -10320,7 +10710,7 @@ else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -10350,7 +10740,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : @@ -10368,17 +10758,18 @@ lt_prog_compiler_pic= lt_prog_compiler_static= - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi + lt_prog_compiler_pic='-fPIC' ;; amigaos*) @@ -10389,8 +10780,8 @@ lt_prog_compiler_static= ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -10406,6 +10797,11 @@ lt_prog_compiler_static= # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -10476,7 +10872,7 @@ lt_prog_compiler_static= case $host_os in aix*) lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -10484,10 +10880,29 @@ lt_prog_compiler_static= fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -10503,7 +10918,7 @@ lt_prog_compiler_static= ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' + lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -10512,9 +10927,9 @@ lt_prog_compiler_static= lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' @@ -10539,6 +10954,12 @@ lt_prog_compiler_static= lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -10636,7 +11057,7 @@ lt_prog_compiler_static= ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi @@ -10665,7 +11086,7 @@ lt_prog_compiler_static= fi case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; @@ -10697,7 +11118,7 @@ else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -10727,7 +11148,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -10759,7 +11180,7 @@ if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -10778,13 +11199,13 @@ else fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } -if test x"$lt_cv_prog_compiler_static_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= @@ -10904,8 +11325,8 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; } -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -10917,9 +11338,9 @@ $as_echo_n "checking if we can lock with hard links... " >&6; } ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -10962,9 +11383,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -10979,7 +11400,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -10987,7 +11408,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; esac @@ -10997,7 +11418,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -11019,24 +11440,24 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -11049,7 +11470,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -11068,7 +11489,7 @@ _LT_EOF case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -11084,7 +11505,7 @@ _LT_EOF allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi @@ -11094,7 +11515,7 @@ _LT_EOF # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' + export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -11102,61 +11523,89 @@ _LT_EOF exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -11167,42 +11616,47 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -11216,8 +11670,8 @@ _LT_EOF archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -11235,8 +11689,8 @@ _LT_EOF _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -11248,7 +11702,7 @@ _LT_EOF ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -11263,9 +11717,9 @@ _LT_EOF # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -11282,15 +11736,15 @@ _LT_EOF *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac - if test "$ld_shlibs" = no; then + if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= @@ -11306,7 +11760,7 @@ _LT_EOF # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported @@ -11314,34 +11768,57 @@ _LT_EOF ;; aix[4-9]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -11360,13 +11837,21 @@ _LT_EOF hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes - file_list_spec='${wl}-f,' + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -11385,35 +11870,42 @@ _LT_EOF ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec='${wl}-bexpall' + export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -11448,7 +11940,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -11456,17 +11948,17 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -11501,7 +11993,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -11509,21 +12001,33 @@ fi aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -11532,7 +12036,7 @@ fi case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -11562,16 +12066,17 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes @@ -11580,18 +12085,18 @@ fi # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -11600,7 +12105,7 @@ fi # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -11619,24 +12124,24 @@ fi hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" + allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no @@ -11678,33 +12183,33 @@ fi ;; hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes @@ -11712,25 +12217,25 @@ fi ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) @@ -11742,7 +12247,7 @@ if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -11761,14 +12266,14 @@ else fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi @@ -11776,8 +12281,8 @@ fi ;; esac fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in @@ -11788,7 +12293,7 @@ fi *) hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -11799,8 +12304,8 @@ fi ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. @@ -11810,8 +12315,8 @@ $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " > if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } @@ -11823,24 +12328,34 @@ else fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -11855,7 +12370,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -11863,27 +12378,19 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no @@ -11894,33 +12401,53 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ;; osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -11931,24 +12458,24 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } solaris*) no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -11958,11 +12485,11 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi @@ -11972,10 +12499,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -12024,43 +12551,43 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' + no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' + export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -12075,10 +12602,10 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' + export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi @@ -12086,7 +12613,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no +test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -12112,7 +12639,7 @@ x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -12327,14 +12854,14 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -12350,28 +12877,35 @@ if test "$GCC" = yes; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -12385,7 +12919,7 @@ BEGIN {RS=" "; FS="/|\n";} { # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -12394,7 +12928,7 @@ fi library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -12411,14 +12945,16 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown + + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) @@ -12426,41 +12962,91 @@ aix[4-9]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -12470,18 +13056,18 @@ amigaos*) powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -12489,8 +13075,8 @@ beos*) bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -12502,7 +13088,7 @@ bsdi[45]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -12511,8 +13097,8 @@ cygwin* | mingw* | pw32* | cegcc*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -12528,17 +13114,17 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -12547,8 +13133,8 @@ cygwin* | mingw* | pw32* | cegcc*) *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -12575,7 +13161,7 @@ cygwin* | mingw* | pw32* | cegcc*) sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -12588,8 +13174,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -12602,7 +13188,7 @@ cygwin* | mingw* | pw32* | cegcc*) *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -12615,8 +13201,8 @@ darwin* | rhapsody*) version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -12629,8 +13215,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -12648,12 +13234,13 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -12678,26 +13265,15 @@ freebsd* | dragonfly*) esac ;; -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -12715,14 +13291,15 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -12730,8 +13307,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -12740,8 +13317,8 @@ hpux9* | hpux10* | hpux11*) dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -12754,8 +13331,8 @@ interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -12766,7 +13343,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -12774,8 +13351,8 @@ irix5* | irix6* | nonstopux*) esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -12794,8 +13371,8 @@ irix5* | irix6* | nonstopux*) esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -12804,22 +13381,42 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux # correct to gnu/linux during the next big refactor +linux*android*) + version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no + shlibpath_overrides_runpath=yes - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ @@ -12857,11 +13454,15 @@ fi # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -12878,12 +13479,12 @@ netbsd*) need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -12893,7 +13494,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -12902,58 +13503,68 @@ newsos6) version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -12964,8 +13575,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -12975,11 +13586,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -12987,8 +13598,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -13009,24 +13620,24 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -13044,7 +13655,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -13052,8 +13663,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -13063,20 +13674,35 @@ uts4*) esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + @@ -13173,15 +13799,15 @@ $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then + test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && + if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else @@ -13196,12 +13822,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -13211,7 +13837,7 @@ fi - if test "x$enable_dlopen" != xyes; then + if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -13221,23 +13847,23 @@ else case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : @@ -13275,10 +13901,10 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else - lt_cv_dlopen="dyld" + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes @@ -13286,10 +13912,18 @@ fi ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" + lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } @@ -13328,11 +13962,11 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } @@ -13371,7 +14005,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } @@ -13410,7 +14044,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } @@ -13449,7 +14083,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -13470,21 +14104,21 @@ fi ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 @@ -13492,7 +14126,7 @@ $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -13539,9 +14173,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -13571,7 +14205,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -13591,14 +14225,14 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -13645,9 +14279,9 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -13677,7 +14311,7 @@ _LT_EOF (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -13698,9 +14332,9 @@ fi $as_echo "$lt_cv_dlopen_self_static" >&6; } fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -13744,7 +14378,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -13772,7 +14406,7 @@ fi - # Report which library types will actually be built + # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 @@ -13780,13 +14414,13 @@ $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -13794,8 +14428,12 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } ;; aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -13805,7 +14443,7 @@ $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } @@ -13819,7 +14457,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" +CC=$lt_save_CC @@ -13846,7 +14484,7 @@ CC="$lt_save_CC" # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -15848,7 +16486,9 @@ if test x"$ax_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h - LIBS="$PTHREAD_LIBS $LIBS" + if test -n "$PTHREAD_LIBS"; then + LIBS="$PTHREAD_LIBS $LIBS" + fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" ub_have_pthreads=yes @@ -15874,7 +16514,7 @@ _ACEOF fi - if echo "$CFLAGS" | grep -e "-pthread" >/dev/null; then + if echo "$CFLAGS" | $GREP -e "-pthread" >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread unused during linking" >&5 $as_echo_n "checking if -pthread unused during linking... " >&6; } # catch clang warning 'argument unused during compilation' @@ -16141,8 +16781,7 @@ fi # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 $as_echo_n "checking for the distutils Python package... " >&6; } - ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` - if test -z "$ac_distutils_result"; then + if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else @@ -16178,7 +16817,7 @@ $as_echo "$PYTHON_CPPFLAGS" >&6; } $as_echo_n "checking for Python library path... " >&6; } if test -z "$PYTHON_LDFLAGS"; then PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \ - print(get_config_var('BLDLIBRARY'));"` + print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 $as_echo "$PYTHON_LDFLAGS" >&6; } @@ -16279,12 +16918,145 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu $as_echo "#define HAVE_PYTHON 1" >>confdefs.h - LIBS="$PYTHON_LDFLAGS $LIBS" - CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" + if test -n "$LIBS"; then + LIBS="$PYTHON_LDFLAGS $LIBS" + else + LIBS="$PYTHON_LDFLAGS" + fi + if test -n "$CPPFLAGS"; then + CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" + else + CPPFLAGS="$PYTHON_CPPFLAGS" + fi ub_have_python=yes + PC_PY_DEPENDENCY="python" + # Check for SWIG ub_have_swig=no + # Check whether --enable-swig-version-check was given. +if test "${enable_swig_version_check+set}" = set; then : + enableval=$enable_swig_version_check; +fi + + if test "$enable_swig_version_check" = "yes"; then + + # Extract the first word of "swig", so it can be a program name with args. +set dummy swig; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SWIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SWIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +SWIG=$ac_cv_path_SWIG +if test -n "$SWIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +$as_echo "$SWIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test -z "$SWIG" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5 +$as_echo "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;} + SWIG='echo "Error: SWIG is not installed. You should look at http://www.swig.org" ; false' + elif test -n "2.0.1" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5 +$as_echo_n "checking for SWIG version... " >&6; } + swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +$as_echo "$swig_version" >&6; } + if test -n "$swig_version" ; then + # Calculate the required version number components + required=2.0.1 + required_major=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_major" ; then + required_major=0 + fi + required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required_minor=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_minor" ; then + required_minor=0 + fi + required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required_patch=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_patch" ; then + required_patch=0 + fi + # Calculate the available version number components + available=$swig_version + available_major=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_major" ; then + available_major=0 + fi + available=`echo $available | sed 's/[0-9]*[^0-9]//'` + available_minor=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_minor" ; then + available_minor=0 + fi + available=`echo $available | sed 's/[0-9]*[^0-9]//'` + available_patch=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_patch" ; then + available_patch=0 + fi + badversion=0 + if test $available_major -lt $required_major ; then + badversion=1 + fi + if test $available_major -eq $required_major \ + -a $available_minor -lt $required_minor ; then + badversion=1 + fi + if test $available_major -eq $required_major \ + -a $available_minor -eq $required_minor \ + -a $available_patch -lt $required_patch ; then + badversion=1 + fi + if test $badversion -eq 1 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0.1 is required. You have $swig_version. You should look at http://www.swig.org" >&5 +$as_echo "$as_me: WARNING: SWIG version >= 2.0.1 is required. You have $swig_version. You should look at http://www.swig.org" >&2;} + SWIG='echo "Error: SWIG version >= 2.0.1 is required. You have '"$swig_version"'. You should look at http://www.swig.org" ; false' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5 +$as_echo "$as_me: SWIG executable is '$SWIG'" >&6;} + SWIG_LIB=`$SWIG -swiglib` + { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5 +$as_echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;} + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} + SWIG='echo "Error: Cannot determine SWIG version. You should look at http://www.swig.org" ; false' + fi + fi + + + else # Extract the first word of "swig", so it can be a program name with args. set dummy swig; ac_word=$2 @@ -16369,9 +17141,20 @@ $as_echo "$swig_version" >&6; } if test -z "$available_patch" ; then available_patch=0 fi - if test $available_major -ne $required_major \ - -o $available_minor -ne $required_minor \ - -o $available_patch -lt $required_patch ; then + badversion=0 + if test $available_major -lt $required_major ; then + badversion=1 + fi + if test $available_major -eq $required_major \ + -a $available_minor -lt $required_minor ; then + badversion=1 + fi + if test $available_major -eq $required_major \ + -a $available_minor -eq $required_minor \ + -a $available_patch -lt $required_patch ; then + badversion=1 + fi + if test $badversion -eq 1 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= is required. You have $swig_version. You should look at http://www.swig.org" >&5 $as_echo "$as_me: WARNING: SWIG version >= is required. You have $swig_version. You should look at http://www.swig.org" >&2;} SWIG='echo "Error: SWIG version >= is required. You have '"$swig_version"'. You should look at http://www.swig.org" ; false' @@ -16390,6 +17173,7 @@ $as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} fi + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG" >&5 $as_echo_n "checking SWIG... " >&6; } if test ! -x "$SWIG"; then @@ -16497,6 +17281,19 @@ if test "${with_nettle+set}" = set; then : $as_echo "#define HAVE_NETTLE 1" >>confdefs.h + for ac_header in nettle/dsa-compat.h +do : + ac_fn_c_check_header_compile "$LINENO" "nettle/dsa-compat.h" "ac_cv_header_nettle_dsa_compat_h" "$ac_includes_default +" +if test "x$ac_cv_header_nettle_dsa_compat_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETTLE_DSA_COMPAT_H 1 +_ACEOF + +fi + +done + if test "$withval" != "" -a "$withval" != "yes"; then CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" LDFLAGS="$LDFLAGS -L$withval/lib" @@ -16576,8 +17373,8 @@ $as_echo "found in $ssldir" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_CTX_init in -lcrypto" >&5 -$as_echo_n "checking for HMAC_CTX_init in -lcrypto... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_Update in -lcrypto" >&5 +$as_echo_n "checking for HMAC_Update in -lcrypto... " >&6; } LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -16587,8 +17384,8 @@ int main () { - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ; return 0; @@ -16599,7 +17396,7 @@ if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -$as_echo "#define HAVE_HMAC_CTX_INIT 1" >>confdefs.h +$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h else @@ -16609,8 +17406,8 @@ $as_echo "no" >&6; } # check if -lwsock32 or -lgdi32 are needed. BAKLIBS="$LIBS" BAKSSLLIBS="$LIBSSL_LIBS" - LIBS="$LIBS -lgdi32" - LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32" + LIBS="$LIBS -lgdi32 -lws2_32" + LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -lgdi32" >&5 $as_echo_n "checking if -lcrypto needs -lgdi32... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -16620,8 +17417,8 @@ int main () { - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ; return 0; @@ -16630,7 +17427,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_CTX_INIT 1" >>confdefs.h +$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -16652,8 +17449,8 @@ int main () { - int HMAC_CTX_init(void); - (void)HMAC_CTX_init(); + int HMAC_Update(void); + (void)HMAC_Update(); ; return 0; @@ -16662,7 +17459,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_CTX_INIT 1" >>confdefs.h +$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -16671,7 +17468,43 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "OpenSSL found in $ssldir, but version 0.9.7 or higher is required" "$LINENO" 5 + LIBS="$BAKLIBS" + LIBSSL_LIBS="$BAKSSLLIBS" + LIBS="$LIBS -ldl -pthread" + LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -lcrypto needs -ldl -pthread" >&5 +$as_echo_n "checking if -lcrypto needs -ldl -pthread... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + int HMAC_Update(void); + (void)HMAC_Update(); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + +$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "OpenSSL found in $ssldir, but version 0.9.7 or higher is required" "$LINENO" 5 + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ @@ -16825,6 +17658,47 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext SSLLIB="-lssl" + +# check if -lcrypt32 is needed because CAPIENG needs that. (on windows) +BAKLIBS="$LIBS" +LIBS="-lssl $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libssl needs -lcrypt32" >&5 +$as_echo_n "checking if libssl needs -lcrypt32... " >&6; } +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 HMAC_Update (); +int +main () +{ +return HMAC_Update (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + LIBS="$BAKLIBS" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + LIBS="$BAKLIBS" + LIBS="$LIBS -lcrypt32" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5 $as_echo_n "checking for LibreSSL... " >&6; } if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then @@ -16890,33 +17764,37 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -for ac_header in openssl/conf.h +for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h do : - ac_fn_c_check_header_compile "$LINENO" "openssl/conf.h" "ac_cv_header_openssl_conf_h" "$ac_includes_default + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " -if test "x$ac_cv_header_openssl_conf_h" = xyes; then : +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_OPENSSL_CONF_H 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done -for ac_header in openssl/engine.h +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify do : - ac_fn_c_check_header_compile "$LINENO" "openssl/engine.h" "ac_cv_header_openssl_engine_h" "$ac_includes_default -" -if test "x$ac_cv_header_openssl_engine_h" = xyes; then : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define HAVE_OPENSSL_ENGINE_H 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi - done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode + +# these check_funcs need -lssl +BAKLIBS="$LIBS" +LIBS="-lssl $LIBS" +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -16928,6 +17806,8 @@ _ACEOF fi done +LIBS="$BAKLIBS" + ac_fn_c_check_decl "$LINENO" "SSL_COMP_get_compression_methods" "ac_cv_have_decl_SSL_COMP_get_compression_methods" " $ac_includes_default #ifdef HAVE_OPENSSL_ERR_H @@ -17023,8 +17903,24 @@ fi -# Check whether --enable-sha2 was given. -if test "${enable_sha2+set}" = set; then : +# Check whether --enable-sha1 was given. +if test "${enable_sha1+set}" = set; then : + enableval=$enable_sha1; +fi + +case "$enable_sha1" in + no) + ;; + yes|*) + +$as_echo "#define USE_SHA1 1" >>confdefs.h + + ;; +esac + + +# Check whether --enable-sha2 was given. +if test "${enable_sha2+set}" = set; then : enableval=$enable_sha2; fi @@ -17038,6 +17934,25 @@ $as_echo "#define USE_SHA2 1" >>confdefs.h ;; esac +# Check whether --enable-subnet was given. +if test "${enable_subnet+set}" = set; then : + enableval=$enable_subnet; +fi + +case "$enable_subnet" in + yes) + +$as_echo "#define CLIENT_SUBNET 1" >>confdefs.h + + SUBNET_OBJ="edns-subnet.lo subnetmod.lo addrtree.lo subnet-whitelist.lo" + + SUBNET_HEADER='$(srcdir)/edns-subnet/subnetmod.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/edns-subnet/addrtree.h' + + ;; + no|*) + ;; +esac + # check wether gost also works # Check whether --enable-gost was given. @@ -17283,20 +18198,265 @@ _ACEOF ;; esac +# Check whether --enable-dsa was given. +if test "${enable_dsa+set}" = set; then : + enableval=$enable_dsa; +fi + +use_dsa="no" +case "$enable_dsa" in + no) + ;; + *) + # detect if DSA is supported, and turn it off if not. + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + ac_fn_c_check_func "$LINENO" "DSA_SIG_new" "ac_cv_func_DSA_SIG_new" +if test "x$ac_cv_func_DSA_SIG_new" = xyes; then : + + as_ac_Type=`$as_echo "ac_cv_type_DSA_SIG*" | $as_tr_sh` +ac_fn_c_check_type "$LINENO" "DSA_SIG*" "$as_ac_Type" " +$ac_includes_default +#ifdef HAVE_OPENSSL_ERR_H +#include +#endif + +#ifdef HAVE_OPENSSL_RAND_H +#include +#endif + +#ifdef HAVE_OPENSSL_CONF_H +#include +#endif + +#ifdef HAVE_OPENSSL_ENGINE_H +#include +#endif + +" +if eval test \"x\$"$as_ac_Type"\" = x"yes"; then : + + +cat >>confdefs.h <<_ACEOF +#define USE_DSA 1 +_ACEOF + + +else + if test "x$enable_dsa" = "xyes"; then as_fn_error $? "OpenSSL does not support DSA and you used --enable-dsa." "$LINENO" 5 + fi +fi + + +else + if test "x$enable_dsa" = "xyes"; then as_fn_error $? "OpenSSL does not support DSA and you used --enable-dsa." "$LINENO" 5 + fi +fi + + else + +cat >>confdefs.h <<_ACEOF +#define USE_DSA 1 +_ACEOF + + fi + ;; +esac + +# Check whether --enable-ed25519 was given. +if test "${enable_ed25519+set}" = set; then : + enableval=$enable_ed25519; +fi + +use_ed25519="no" +case "$enable_ed25519" in + no) + ;; + *) + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + ac_fn_c_check_decl "$LINENO" "NID_ED25519" "ac_cv_have_decl_NID_ED25519" "$ac_includes_default +#include + +" +if test "x$ac_cv_have_decl_NID_ED25519" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_NID_ED25519 $ac_have_decl +_ACEOF +if test $ac_have_decl = 1; then : + + use_ed25519="yes" + +else + if test "x$enable_ed25519" = "xyes"; then as_fn_error $? "OpenSSL does not support ED25519 and you used --enable-ed25519." "$LINENO" 5 + fi +fi + + fi + if test $USE_NETTLE = "yes"; then + for ac_header in nettle/eddsa.h +do : + ac_fn_c_check_header_compile "$LINENO" "nettle/eddsa.h" "ac_cv_header_nettle_eddsa_h" "$ac_includes_default +" +if test "x$ac_cv_header_nettle_eddsa_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETTLE_EDDSA_H 1 +_ACEOF + use_ed25519="yes" +fi + +done + + fi + if test $use_ed25519 = "yes"; then + +cat >>confdefs.h <<_ACEOF +#define USE_ED25519 1 +_ACEOF + + fi + ;; +esac + +# Check whether --enable-ed448 was given. +if test "${enable_ed448+set}" = set; then : + enableval=$enable_ed448; +fi + +use_ed448="no" +case "$enable_ed448" in + no) + ;; + *) + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + ac_fn_c_check_decl "$LINENO" "NID_ED448" "ac_cv_have_decl_NID_ED448" "$ac_includes_default +#include + +" +if test "x$ac_cv_have_decl_NID_ED448" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_NID_ED448 $ac_have_decl +_ACEOF +if test $ac_have_decl = 1; then : + + use_ed448="yes" + +else + if test "x$enable_ed448" = "xyes"; then as_fn_error $? "OpenSSL does not support ED448 and you used --enable-ed448." "$LINENO" 5 + fi +fi + + fi + if test $use_ed448 = "yes"; then + +cat >>confdefs.h <<_ACEOF +#define USE_ED448 1 +_ACEOF + + fi + ;; +esac + # Check whether --enable-event-api was given. if test "${enable_event_api+set}" = set; then : enableval=$enable_event_api; fi -use_unbound_event="no" case "$enable_event_api" in yes) - use_unbound_event="yes" + UNBOUND_EVENT_INSTALL=unbound-event-install + + UNBOUND_EVENT_UNINSTALL=unbound-event-uninstall + ;; *) ;; esac +# Check whether --enable-tfo-client was given. +if test "${enable_tfo_client+set}" = set; then : + enableval=$enable_tfo_client; +fi + +case "$enable_tfo_client" in + yes) + case `uname` in + Linux) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default +#include + +" +if test "x$ac_cv_have_decl_MSG_FASTOPEN" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5 +$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;} +else + as_fn_error $? "TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client" "$LINENO" 5 +fi + + +cat >>confdefs.h <<_ACEOF +#define USE_MSG_FASTOPEN 1 +_ACEOF + + ;; + Darwin) ac_fn_c_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default +#include + +" +if test "x$ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&5 +$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO" >&2;} +else + as_fn_error $? "TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client" "$LINENO" 5 +fi + + +cat >>confdefs.h <<_ACEOF +#define USE_OSX_MSG_FASTOPEN 1 +_ACEOF + + ;; + esac + ;; + no|*) + ;; +esac + +# Check whether --enable-tfo-server was given. +if test "${enable_tfo_server+set}" = set; then : + enableval=$enable_tfo_server; +fi + +case "$enable_tfo_server" in + yes) + ac_fn_c_check_decl "$LINENO" "TCP_FASTOPEN" "ac_cv_have_decl_TCP_FASTOPEN" "$ac_includes_default +#include + +" +if test "x$ac_cv_have_decl_TCP_FASTOPEN" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&5 +$as_echo "$as_me: WARNING: Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO" >&2;} +else + as_fn_error $? "TCP Fast Open is not available for server mode: please rerun without --enable-tfo-server" "$LINENO" 5 +fi + + +cat >>confdefs.h <<_ACEOF +#define USE_TCP_FASTOPEN 1 +_ACEOF + + ;; + no|*) + ;; +esac + # check for libevent # Check whether --with-libevent was given. @@ -17635,15 +18795,11 @@ _ACEOF fi done # only in libev. (tested on 4.00) + PC_LIBEVENT_DEPENDENCY="libevent" + if test -n "$BAK_LDFLAGS_SET"; then LDFLAGS="$BAK_LDFLAGS" fi - if test "$use_unbound_event" = "yes"; then - UNBOUND_EVENT_INSTALL=unbound-event-install - - UNBOUND_EVENT_UNINSTALL=unbound-event-uninstall - - fi else $as_echo "#define USE_MINI_EVENT 1" >>confdefs.h @@ -17705,6 +18861,70 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# hiredis (redis C client for cachedb) + +# Check whether --with-libhiredis was given. +if test "${with_libhiredis+set}" = set; then : + withval=$with_libhiredis; +else + withval="no" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhiredis" >&5 +$as_echo_n "checking for libhiredis... " >&6; } +found_libhiredis="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/hiredis/hiredis.h"; then + found_libhiredis="yes" + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5 +$as_echo "found in $dir" >&6; } + +$as_echo "#define USE_REDIS 1" >>confdefs.h + + LIBS="$LIBS -lhiredis" + break; + fi + done + if test x_$found_libhiredis != x_yes; then + as_fn_error $? "Could not find libhiredis, hiredis.h" "$LINENO" 5 + fi + for ac_header in hiredis/hiredis.h +do : + ac_fn_c_check_header_compile "$LINENO" "hiredis/hiredis.h" "ac_cv_header_hiredis_hiredis_h" "$ac_includes_default +" +if test "x$ac_cv_header_hiredis_hiredis_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_HIREDIS_HIREDIS_H 1 +_ACEOF + +fi + +done + + ac_fn_c_check_decl "$LINENO" "redisConnect" "ac_cv_have_decl_redisConnect" "$ac_includes_default + #include + +" +if test "x$ac_cv_have_decl_redisConnect" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_REDISCONNECT $ac_have_decl +_ACEOF + +fi + # set static linking if requested staticexe="" @@ -17717,13 +18937,327 @@ if test x_$enable_static_exe = x_yes; then staticexe="-static" if test "$on_mingw" = yes; then staticexe="-all-static" - # for static crosscompile, include gdi32 and zlib here. - if test "`uname`" = "Linux"; then - LIBS="$LIBS -lgdi32 -lz" + # for static compile, include gdi32 and zlib here. + if echo $LIBS | grep 'lgdi32' >/dev/null; then + : + else + LIBS="$LIBS -lgdi32" fi + LIBS="$LIBS -lz" fi fi +# Include systemd.m4 - begin +# macros for configuring systemd +# Copyright 2015, Sami Kerola, CloudFlare. +# BSD licensed. +# Check whether --enable-systemd was given. +if test "${enable_systemd+set}" = set; then : + enableval=$enable_systemd; +else + enable_systemd=no +fi + +have_systemd=no + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi +if test "x$enable_systemd" != xno; then : + + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5 +$as_echo_n "checking for SYSTEMD... " >&6; } + +if test -n "$SYSTEMD_CFLAGS"; then + pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_LIBS"; then + pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1` + else + SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_PKG_ERRORS" >&5 + + have_systemd=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_systemd=no +else + SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS + SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_systemd=yes +fi + if test "x$have_systemd" != "xyes"; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5 +$as_echo_n "checking for SYSTEMD_DAEMON... " >&6; } + +if test -n "$SYSTEMD_DAEMON_CFLAGS"; then + pkg_cv_SYSTEMD_DAEMON_CFLAGS="$SYSTEMD_DAEMON_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_DAEMON_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SYSTEMD_DAEMON_LIBS"; then + pkg_cv_SYSTEMD_DAEMON_LIBS="$SYSTEMD_DAEMON_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SYSTEMD_DAEMON_LIBS=`$PKG_CONFIG --libs "libsystemd-daemon" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SYSTEMD_DAEMON_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + else + SYSTEMD_DAEMON_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd-daemon" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SYSTEMD_DAEMON_PKG_ERRORS" >&5 + + have_systemd_daemon=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_systemd_daemon=no +else + SYSTEMD_DAEMON_CFLAGS=$pkg_cv_SYSTEMD_DAEMON_CFLAGS + SYSTEMD_DAEMON_LIBS=$pkg_cv_SYSTEMD_DAEMON_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_systemd_daemon=yes +fi + if test "x$have_systemd_daemon" = "xyes"; then : + have_systemd=yes +fi + +fi + case $enable_systemd:$have_systemd in #( + yes:no) : + as_fn_error $? "systemd enabled but libsystemd not found" "$LINENO" 5 ;; #( + *:yes) : + +$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h + + LIBS="$LIBS $SYSTEMD_LIBS" + + ;; #( + *) : + ;; +esac + + +fi + if test "x$have_systemd" = xyes; then + USE_SYSTEMD_TRUE= + USE_SYSTEMD_FALSE='#' +else + USE_SYSTEMD_TRUE='#' + USE_SYSTEMD_FALSE= +fi + + +# Include systemd.m4 - end + # set lock checking if requested # Check whether --enable-lock_checks was given. if test "${enable_lock_checks+set}" = set; then : @@ -17767,7 +19301,11 @@ if test "$ac_cv_header_windows_h" = "yes"; then $as_echo "#define USE_WINSOCK 1" >>confdefs.h USE_WINSOCK="1" - LIBS="$LIBS -lws2_32" + if echo $LIBS | grep 'lws2_32' >/dev/null; then + : + else + LIBS="$LIBS -lws2_32" + fi fi else @@ -17931,7 +19469,7 @@ else WINDRES="$ac_cv_prog_WINDRES" fi - LIBS="$LIBS -liphlpapi" + LIBS="$LIBS -liphlpapi -lcrypt32" WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" @@ -18083,6 +19621,10 @@ $ac_includes_default #include #endif +#ifdef HAVE_NETINET_TCP_H +#include +#endif + #ifdef HAVE_ARPA_INET_H #include #endif @@ -18161,7 +19703,7 @@ if test "$ac_res" != no; then : fi -for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync +for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -18220,39 +19762,77 @@ fi done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5 -$as_echo_n "checking for sbrk... " >&6; } -# catch the warning of deprecated sbrk -old_cflags="$CFLAGS" -CFLAGS="$CFLAGS -Werror" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +# check if setreuid en setregid fail, on MacOSX10.4(darwin8). +if echo $target_os | grep darwin8 > /dev/null; then + +$as_echo "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_decl "$LINENO" "inet_pton" "ac_cv_have_decl_inet_pton" " $ac_includes_default +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif -int main(void) { void* cur = sbrk(0); printf("%u\n", (unsigned)(size_t)((char*)cur - (char*)sbrk(0))); return 0; } +#ifdef HAVE_WS2TCPIP_H +#include +#endif + +" +if test "x$ac_cv_have_decl_inet_pton" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_INET_PTON $ac_have_decl _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +ac_fn_c_check_decl "$LINENO" "inet_ntop" "ac_cv_have_decl_inet_ntop" " +$ac_includes_default +#ifdef HAVE_NETINET_IN_H +#include +#endif - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif -$as_echo "#define HAVE_SBRK 1" >>confdefs.h +#ifdef HAVE_WINSOCK2_H +#include +#endif +#ifdef HAVE_WS2TCPIP_H +#include +#endif +" +if test "x$ac_cv_have_decl_inet_ntop" = xyes; then : + ac_have_decl=1 else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + ac_have_decl=0 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS="$old_cflags" - -# check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $build_os | grep darwin8 > /dev/null; then -$as_echo "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_INET_NTOP $ac_have_decl +_ACEOF -fi ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton" if test "x$ac_cv_func_inet_aton" = xyes; then : $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h @@ -18497,8 +20077,8 @@ else esac else - case `uname` in - Darwin) + case "$host" in + Darwin|*darwin*) case " $LIBOBJS " in *" getentropy_osx.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS getentropy_osx.$ac_objext" @@ -18506,7 +20086,7 @@ esac esac ;; - SunOS) + *solaris*|*sunos*|SunOS) case " $LIBOBJS " in *" getentropy_solaris.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS getentropy_solaris.$ac_objext" @@ -18610,7 +20190,7 @@ if test "$ac_res" != no; then : fi ;; - Linux|*) + *linux*|Linux|*) case " $LIBOBJS " in *" getentropy_linux.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS getentropy_linux.$ac_objext" @@ -18745,6 +20325,20 @@ esac fi +ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep" +if test "x$ac_cv_func_strsep" = xyes; then : + $as_echo "#define HAVE_STRSEP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strsep.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strsep.$ac_objext" + ;; +esac + +fi + + # Check whether --enable-allsymbols was given. if test "${enable_allsymbols+set}" = set; then : @@ -19028,6 +20622,274 @@ _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 "$as_me:${as_lineno-$LINENO}: checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm" >&5 +$as_echo_n "checking for library containing crypto_box_curve25519xchacha20poly1305_beforenm... " >&6; } +if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} 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 crypto_box_curve25519xchacha20poly1305_beforenm (); +int +main () +{ +return crypto_box_curve25519xchacha20poly1305_beforenm (); + ; + 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_crypto_box_curve25519xchacha20poly1305_beforenm=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} false; then : + break +fi +done +if ${ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm+:} false; then : + +else + ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&5 +$as_echo "$ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm" >&6; } +ac_res=$ac_cv_search_crypto_box_curve25519xchacha20poly1305_beforenm +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + ENABLE_DNSCRYPT_XCHACHA20=1 + + +$as_echo "#define USE_DNSCRYPT_XCHACHA20 1" >>confdefs.h + + +else + + ENABLE_DNSCRYPT_XCHACHA20=0 + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_set_misuse_handler" >&5 +$as_echo_n "checking for library containing sodium_set_misuse_handler... " >&6; } +if ${ac_cv_search_sodium_set_misuse_handler+:} 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_set_misuse_handler (); +int +main () +{ +return sodium_set_misuse_handler (); + ; + 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_set_misuse_handler=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_sodium_set_misuse_handler+:} false; then : + break +fi +done +if ${ac_cv_search_sodium_set_misuse_handler+:} false; then : + +else + ac_cv_search_sodium_set_misuse_handler=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_set_misuse_handler" >&5 +$as_echo "$ac_cv_search_sodium_set_misuse_handler" >&6; } +ac_res=$ac_cv_search_sodium_set_misuse_handler +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + +$as_echo "#define SODIUM_MISUSE_HANDLER 1" >>confdefs.h + + +fi + + + +$as_echo "#define USE_DNSCRYPT 1" >>confdefs.h + + ENABLE_DNSCRYPT=1 + + + DNSCRYPT_SRC="dnscrypt/dnscrypt.c" + + DNSCRYPT_OBJ="dnscrypt.lo" + + + else + ENABLE_DNSCRYPT_XCHACHA20=0 + + + ENABLE_DNSCRYPT=0 + + + + fi + + +# check for cachedb if requested +# Check whether --enable-cachedb was given. +if test "${enable_cachedb+set}" = set; then : + enableval=$enable_cachedb; +fi + +# turn on cachedb when hiredis support is enabled. +if test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi +case "$enable_cachedb" in + yes) + +$as_echo "#define USE_CACHEDB 1" >>confdefs.h + + ;; + no|*) + # nothing + ;; +esac + +# check for ipsecmod if requested +# Check whether --enable-ipsecmod was given. +if test "${enable_ipsecmod+set}" = set; then : + enableval=$enable_ipsecmod; +fi + +case "$enable_ipsecmod" in + yes) + +$as_echo "#define USE_IPSECMOD 1" >>confdefs.h + + IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo" + + IPSECMOD_HEADER='$(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h' + + ;; + no|*) + # nothing + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5 $as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; } # on openBSD, the implicit rule make $< work. @@ -19080,6 +20942,15 @@ if test "${with_libunbound_only+set}" = set; then : fi +if test $ALLTARGET = "alltargets"; then + if test $USE_NSS = "yes"; then + as_fn_error $? "--with-nss can only be used in combination with --with-libunbound-only." "$LINENO" 5 + fi + if test $USE_NETTLE = "yes"; then + as_fn_error $? "--with-nettle can only be used in combination with --with-libunbound-only." "$LINENO" 5 + fi +fi + @@ -19103,6 +20974,14 @@ $as_echo "#define OMITTED__D_BSD_SOURCE 1" >>confdefs.h fi + if echo $CFLAGS | grep " -D_DEFAULT_SOURCE" >/dev/null 2>&1; then + CFLAGS="`echo $CFLAGS | sed -e 's/ -D_DEFAULT_SOURCE//g'`" + +$as_echo "#define OMITTED__D_DEFAULT_SOURCE 1" >>confdefs.h + + fi + + if echo $CFLAGS | grep " -D__EXTENSIONS__" >/dev/null 2>&1; then CFLAGS="`echo $CFLAGS | sed -e 's/ -D__EXTENSIONS__//g'`" @@ -19151,7 +21030,12 @@ $as_echo "#define OMITTED__D_LARGEFILE_SOURCE_1 1" >>confdefs.h fi -LDFLAGS="$LATE_LDFLAGS $LDFLAGS" +if test -n "$LATE_LDFLAGS"; then + LDFLAGS="$LATE_LDFLAGS $LDFLAGS" +fi +# remove start spaces +LDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'` +LIBS=`echo "$LIBS"|sed -e 's/^ *//'` cat >>confdefs.h <<_ACEOF @@ -19161,12 +21045,12 @@ _ACEOF -version=1.5.8 +version=1.7.3 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" +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" @@ -19279,6 +21163,10 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +if test -z "${USE_SYSTEMD_TRUE}" && test -z "${USE_SYSTEMD_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEMD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -19676,7 +21564,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.5.8, which was +This file was extended by unbound $as_me 1.7.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19742,7 +21630,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.5.8 +unbound config.status 1.7.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19874,6 +21762,7 @@ enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' @@ -19923,10 +21812,13 @@ compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' @@ -19991,7 +21883,8 @@ finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' @@ -20042,9 +21935,12 @@ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ nm_file_list_spec \ +lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ @@ -20079,7 +21975,7 @@ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20106,10 +22002,11 @@ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -20118,19 +22015,16 @@ sys_lib_dlsearch_path_spec; do done ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' @@ -20158,6 +22052,10 @@ 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" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; @@ -20711,55 +22609,53 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in "libtool":C) - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . # The names of the tagged configurations supported by this script. -available_tags="" +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG @@ -20779,6 +22675,9 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + # Shell to use when invoking shell scripts. SHELL=$lt_SHELL @@ -20896,18 +22795,27 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec -# The root where to search for dependent libraries,and in which our libraries should be installed. +# The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -20998,8 +22906,11 @@ hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen @@ -21092,13 +23003,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute @@ -21148,6 +23059,65 @@ hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + _LT_EOF case $host_os in @@ -21156,7 +23126,7 @@ _LT_EOF # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -21165,7 +23135,7 @@ _LT_EOF esac -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if @@ -21175,165 +23145,6 @@ ltmain="$ac_aux_dir/ltmain.sh" sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" diff --git a/external/unbound/configure.ac b/external/unbound/configure.ac index d3f4ef6..80fed29 100644 --- a/external/unbound/configure.ac +++ b/external/unbound/configure.ac @@ -6,19 +6,20 @@ sinclude(ax_pthread.m4) sinclude(acx_python.m4) sinclude(ac_pkg_swig.m4) sinclude(dnstap/dnstap.m4) +sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[5]) -m4_define([VERSION_MICRO],[8]) +m4_define([VERSION_MINOR],[7]) +m4_define([VERSION_MICRO],[3]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) -LIBUNBOUND_CURRENT=5 +LIBUNBOUND_CURRENT=7 LIBUNBOUND_REVISION=11 -LIBUNBOUND_AGE=3 +LIBUNBOUND_AGE=5 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 # 1.0.2 had 0:14:0 @@ -64,7 +65,22 @@ LIBUNBOUND_AGE=3 # 1.5.5 had 5:8:3 # 1.5.6 had 5:9:3 # 1.5.7 had 5:10:3 -# 1.5.8 had 5:11:3 +# 1.5.8 had 6:0:4 # adds ub_ctx_set_stub +# 1.5.9 had 6:1:4 +# 1.5.10 had 6:2:4 +# 1.6.0 had 6:3:4 +# 1.6.1 had 7:0:5 # ub_callback_t typedef renamed to ub_callback_type +# 1.6.2 had 7:1:5 +# 1.6.3 had 7:2:5 +# 1.6.4 had 7:3:5 +# 1.6.5 had 7:4:5 +# 1.6.6 had 7:5:5 +# 1.6.7 had 7:6:5 +# 1.6.8 had 7:7:5 +# 1.7.0 had 7:8:5 +# 1.7.1 had 7:9:5 +# 1.7.2 had 7:10:5 +# 1.7.3 had 7:11:5 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -80,7 +96,7 @@ LIBUNBOUND_AGE=3 # Current and Age. Set Revision to 0, since this is the first # implementation of the new API. # -# Otherwise, we're changing the binary API and breaking bakward +# Otherwise, we're changing the binary API and breaking backward # compatibility with old binaries. Increment Current. Set Age to 0, # since we're backward compatible with no previous APIs. Set Revision # to 0 too. @@ -102,17 +118,28 @@ case "$prefix" in prefix="/usr/local" ;; esac +case "$exec_prefix" in + NONE) + exec_prefix="$prefix" + ;; +esac # are we on MinGW? if uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" else - if echo $target | grep mingw32 >/dev/null; then on_mingw="yes" + if echo $host $target | grep mingw32 >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi # # Determine configuration file # the eval is to evaluate shell expansion twice +UNBOUND_SBIN_DIR=`eval echo "${sbindir}"` +AC_SUBST(UNBOUND_SBIN_DIR) +UNBOUND_SYSCONF_DIR=`eval echo "${sysconfdir}"` +AC_SUBST(UNBOUND_SYSCONF_DIR) +UNBOUND_LOCALSTATE_DIR=`eval echo "${localstatedir}"` +AC_SUBST(UNBOUND_LOCALSTATE_DIR) if test $on_mingw = "no"; then ub_conf_file=`eval echo "${sysconfdir}/unbound/unbound.conf"` else @@ -223,9 +250,11 @@ AC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource f AC_C_CONST AC_LANG_C # allow user to override the -g -O2 flags. +default_cflags=no if test "x$CFLAGS" = "x" ; then ACX_CHECK_COMPILER_FLAG(g, [CFLAGS="$CFLAGS -g"]) ACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"]) +default_cflags=yes fi AC_PROG_CC ACX_DEPFLAG @@ -249,14 +278,42 @@ case "$debug_enabled" in # nothing to do. ;; esac -ACX_CHECK_FLTO -ACX_CHECK_PIE -ACX_CHECK_RELRO_NOW +if test "$default_cflags" = "yes"; then + # only when CFLAGS was "" at the start, if the users wants to + # override we shouldn't add default cflags, because they wouldn't + # be able to turn off these options and set the CFLAGS wanted. + ACX_CHECK_FLTO + ACX_CHECK_PIE + ACX_CHECK_RELRO_NOW +fi AC_C_INLINE ACX_CHECK_FORMAT_ATTRIBUTE ACX_CHECK_UNUSED_ATTRIBUTE +AC_DEFUN([CHECK_WEAK_ATTRIBUTE], +[AC_REQUIRE([AC_PROG_CC]) +AC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "weak" attribute) +AC_CACHE_VAL(ac_cv_c_weak_attribute, +[ac_cv_c_weak_attribute=no +AC_TRY_COMPILE( +[ #include +__attribute__((weak)) void f(int x) { printf("%d", x); } +], [ + f(1); +], +[ac_cv_c_weak_attribute="yes"], +[ac_cv_c_weak_attribute="no"]) +]) + +AC_MSG_RESULT($ac_cv_c_weak_attribute) +if test $ac_cv_c_weak_attribute = yes; then + AC_DEFINE(HAVE_ATTR_WEAK, 1, [Whether the C compiler accepts the "weak" attribute]) +fi +])dnl End of CHECK_WEAK_ATTRIBUTE + +CHECK_WEAK_ATTRIBUTE + if test "$srcdir" != "."; then CPPFLAGS="$CPPFLAGS -I$srcdir" fi @@ -277,7 +334,7 @@ AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. @@ -413,13 +470,15 @@ ub_have_pthreads=no if test x_$withval != x_no; then AX_PTHREAD([ AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]) - LIBS="$PTHREAD_LIBS $LIBS" + if test -n "$PTHREAD_LIBS"; then + LIBS="$PTHREAD_LIBS $LIBS" + fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC" ub_have_pthreads=yes AC_CHECK_TYPES([pthread_spinlock_t, pthread_rwlock_t],,,[#include ]) - if echo "$CFLAGS" | grep -e "-pthread" >/dev/null; then + if echo "$CFLAGS" | $GREP -e "-pthread" >/dev/null; then AC_MSG_CHECKING([if -pthread unused during linking]) # catch clang warning 'argument unused during compilation' AC_LANG_CONFTEST([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT @@ -515,13 +574,28 @@ if test x_$ub_test_python != x_no; then AC_SUBST(PY_MAJOR_VERSION) # Have Python AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) - LIBS="$PYTHON_LDFLAGS $LIBS" - CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" + if test -n "$LIBS"; then + LIBS="$PYTHON_LDFLAGS $LIBS" + else + LIBS="$PYTHON_LDFLAGS" + fi + if test -n "$CPPFLAGS"; then + CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" + else + CPPFLAGS="$PYTHON_CPPFLAGS" + fi ub_have_python=yes + PC_PY_DEPENDENCY="python" + AC_SUBST(PC_PY_DEPENDENCY) # Check for SWIG ub_have_swig=no - AC_PROG_SWIG + AC_ARG_ENABLE(swig-version-check, AC_HELP_STRING([--disable-swig-version-check], [Disable swig version check to build python modules with older swig even though that is unreliable])) + if test "$enable_swig_version_check" = "yes"; then + AC_PROG_SWIG(2.0.1) + else + AC_PROG_SWIG + fi AC_MSG_CHECKING(SWIG) if test ! -x "$SWIG"; then AC_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) @@ -605,6 +679,7 @@ AC_ARG_WITH([nettle], AC_HELP_STRING([--with-nettle=path], [ USE_NETTLE="yes" AC_DEFINE(HAVE_NETTLE, 1, [Use libnettle for crypto]) + AC_CHECK_HEADERS([nettle/dsa-compat.h],,, [AC_INCLUDES_DEFAULT]) if test "$withval" != "" -a "$withval" != "yes"; then CPPFLAGS="$CPPFLAGS -I$withval/include/nettle" LDFLAGS="$LDFLAGS -L$withval/lib" @@ -622,6 +697,20 @@ if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then ACX_WITH_SSL ACX_LIB_SSL SSLLIB="-lssl" + +# check if -lcrypt32 is needed because CAPIENG needs that. (on windows) +BAKLIBS="$LIBS" +LIBS="-lssl $LIBS" +AC_MSG_CHECKING([if libssl needs -lcrypt32]) +AC_TRY_LINK_FUNC([HMAC_Update], [ + AC_MSG_RESULT([no]) + LIBS="$BAKLIBS" +], [ + AC_MSG_RESULT([yes]) + LIBS="$BAKLIBS" + LIBS="$LIBS -lcrypt32" +]) + AC_MSG_CHECKING([for LibreSSL]) if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then AC_MSG_RESULT([yes]) @@ -632,9 +721,15 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_HEADERS([openssl/engine.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode]) +AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify]) + +# these check_funcs need -lssl +BAKLIBS="$LIBS" +LIBS="-lssl $LIBS" +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername]) +LIBS="$BAKLIBS" + AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ AC_INCLUDES_DEFAULT #ifdef HAVE_OPENSSL_ERR_H @@ -659,6 +754,16 @@ fi AC_SUBST(SSLLIB) +AC_ARG_ENABLE(sha1, AC_HELP_STRING([--disable-sha1], [Disable SHA1 RRSIG support, does not disable nsec3 support])) +case "$enable_sha1" in + no) + ;; + yes|*) + AC_DEFINE([USE_SHA1], [1], [Define this to enable SHA1 support.]) + ;; +esac + + AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) case "$enable_sha2" in no) @@ -668,6 +773,19 @@ case "$enable_sha2" in ;; esac +AC_ARG_ENABLE(subnet, AC_HELP_STRING([--enable-subnet], [Enable client subnet])) +case "$enable_subnet" in + yes) + AC_DEFINE([CLIENT_SUBNET], [1], [Define this to enable client subnet option.]) + SUBNET_OBJ="edns-subnet.lo subnetmod.lo addrtree.lo subnet-whitelist.lo" + AC_SUBST(SUBNET_OBJ) + SUBNET_HEADER='$(srcdir)/edns-subnet/subnetmod.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/edns-subnet/addrtree.h' + AC_SUBST(SUBNET_HEADER) + ;; + no|*) + ;; +esac + # check wether gost also works AC_DEFUN([AC_CHECK_GOST_WORKS], [AC_REQUIRE([AC_PROG_CC]) @@ -816,16 +934,133 @@ case "$enable_ecdsa" in ;; esac -AC_ARG_ENABLE(event-api, AC_HELP_STRING([--enable-event-api], [Enable (experimental) libevent-based libunbound API installed to unbound-event.h])) -use_unbound_event="no" +AC_ARG_ENABLE(dsa, AC_HELP_STRING([--disable-dsa], [Disable DSA support])) +use_dsa="no" +case "$enable_dsa" in + no) + ;; + *) + # detect if DSA is supported, and turn it off if not. + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + AC_CHECK_FUNC(DSA_SIG_new, [ + AC_CHECK_TYPE(DSA_SIG*, [ + AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) + ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) + fi ], [ +AC_INCLUDES_DEFAULT +#ifdef HAVE_OPENSSL_ERR_H +#include +#endif + +#ifdef HAVE_OPENSSL_RAND_H +#include +#endif + +#ifdef HAVE_OPENSSL_CONF_H +#include +#endif + +#ifdef HAVE_OPENSSL_ENGINE_H +#include +#endif + ]) + ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.]) + fi ]) + else + AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.]) + fi + ;; +esac + +AC_ARG_ENABLE(ed25519, AC_HELP_STRING([--disable-ed25519], [Disable ED25519 support])) +use_ed25519="no" +case "$enable_ed25519" in + no) + ;; + *) + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + AC_CHECK_DECLS([NID_ED25519], [ + use_ed25519="yes" + ], [ if test "x$enable_ed25519" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED25519 and you used --enable-ed25519.]) + fi ], [AC_INCLUDES_DEFAULT +#include + ]) + fi + if test $USE_NETTLE = "yes"; then + AC_CHECK_HEADERS([nettle/eddsa.h], use_ed25519="yes",, [AC_INCLUDES_DEFAULT]) + fi + if test $use_ed25519 = "yes"; then + AC_DEFINE_UNQUOTED([USE_ED25519], [1], [Define this to enable ED25519 support.]) + fi + ;; +esac + +AC_ARG_ENABLE(ed448, AC_HELP_STRING([--disable-ed448], [Disable ED448 support])) +use_ed448="no" +case "$enable_ed448" in + no) + ;; + *) + if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then + AC_CHECK_DECLS([NID_ED448], [ + use_ed448="yes" + ], [ if test "x$enable_ed448" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED448 and you used --enable-ed448.]) + fi ], [AC_INCLUDES_DEFAULT +#include + ]) + fi + if test $use_ed448 = "yes"; then + AC_DEFINE_UNQUOTED([USE_ED448], [1], [Define this to enable ED448 support.]) + fi + ;; +esac + +AC_ARG_ENABLE(event-api, AC_HELP_STRING([--enable-event-api], [Enable (experimental) pluggable event base libunbound API installed to unbound-event.h])) case "$enable_event_api" in yes) - use_unbound_event="yes" + AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) + AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) ;; *) ;; esac +AC_ARG_ENABLE(tfo-client, AC_HELP_STRING([--enable-tfo-client], [Enable TCP Fast Open for client mode])) +case "$enable_tfo_client" in + yes) + case `uname` in + Linux) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT +#include +]) + AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; + Darwin) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT +#include +]) + AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; + esac + ;; + no|*) + ;; +esac + +AC_ARG_ENABLE(tfo-server, AC_HELP_STRING([--enable-tfo-server], [Enable TCP Fast Open for server mode])) +case "$enable_tfo_server" in + yes) + AC_CHECK_DECL([TCP_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO])], [AC_MSG_ERROR([TCP Fast Open is not available for server mode: please rerun without --enable-tfo-server])], [AC_INCLUDES_DEFAULT +#include + ]) + AC_DEFINE_UNQUOTED([USE_TCP_FASTOPEN], [1], [Define this to enable server TCP Fast Open.]) + ;; + no|*) + ;; +esac + # check for libevent AC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], [use libevent (will check /usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr or you can specify an explicit path). Slower, but allows use of large outgoing port ranges.]), @@ -903,13 +1138,11 @@ large outgoing port ranges. ]) AC_CHECK_FUNCS([event_base_get_method]) # only in libevent 1.4.3 and later AC_CHECK_FUNCS([ev_loop]) # only in libev. (tested on 3.51) AC_CHECK_FUNCS([ev_default_loop]) # only in libev. (tested on 4.00) + PC_LIBEVENT_DEPENDENCY="libevent" + AC_SUBST(PC_LIBEVENT_DEPENDENCY) if test -n "$BAK_LDFLAGS_SET"; then LDFLAGS="$BAK_LDFLAGS" fi - if test "$use_unbound_event" = "yes"; then - AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) - AC_SUBST(UNBOUND_EVENT_UNINSTALL, [unbound-event-uninstall]) - fi else AC_DEFINE(USE_MINI_EVENT, 1, [Define if you want to use internal select based events]) fi @@ -940,6 +1173,39 @@ AC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT #include ]) +# hiredis (redis C client for cachedb) +AC_ARG_WITH(libhiredis, AC_HELP_STRING([--with-libhiredis=path], + [specify explicit path for libhiredis.]), + [ ],[ withval="no" ]) +AC_MSG_CHECKING(for libhiredis) +found_libhiredis="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/hiredis/hiredis.h"; then + found_libhiredis="yes" + dnl assume /usr is in default path. + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + AC_MSG_RESULT(found in $dir) + AC_DEFINE([USE_REDIS], [1], [Define this to use hiredis client.]) + LIBS="$LIBS -lhiredis" + break; + fi + done + if test x_$found_libhiredis != x_yes; then + AC_ERROR([Could not find libhiredis, hiredis.h]) + fi + AC_CHECK_HEADERS([hiredis/hiredis.h],,, [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([redisConnect], [], [], [AC_INCLUDES_DEFAULT + #include + ]) +fi + # set static linking if requested AC_SUBST(staticexe) staticexe="" @@ -950,13 +1216,20 @@ if test x_$enable_static_exe = x_yes; then staticexe="-static" if test "$on_mingw" = yes; then staticexe="-all-static" - # for static crosscompile, include gdi32 and zlib here. - if test "`uname`" = "Linux"; then - LIBS="$LIBS -lgdi32 -lz" + # for static compile, include gdi32 and zlib here. + if echo $LIBS | grep 'lgdi32' >/dev/null; then + : + else + LIBS="$LIBS -lgdi32" fi + LIBS="$LIBS -lz" fi fi +# Include systemd.m4 - begin +sinclude(systemd.m4) +# Include systemd.m4 - end + # set lock checking if requested AC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], [ enable to check lock and unlock calls, for debug purposes ]), @@ -974,7 +1247,7 @@ if test "$USE_WINSOCK" = 1; then #include ]) AC_CHECK_TOOL(WINDRES, windres) - LIBS="$LIBS -liphlpapi" + LIBS="$LIBS -liphlpapi -lcrypt32" WINAPPS="unbound-service-install.exe unbound-service-remove.exe anchor-update.exe" AC_SUBST(WINAPPS) WIN_DAEMON_SRC="winrc/win_svc.c winrc/w_inst.c" @@ -1030,6 +1303,10 @@ AC_INCLUDES_DEFAULT #include #endif +#ifdef HAVE_NETINET_TCP_H +#include +#endif + #ifdef HAVE_ARPA_INET_H #include #endif @@ -1043,27 +1320,36 @@ AC_INCLUDES_DEFAULT #endif ]) AC_SEARCH_LIBS([setusercontext], [util]) -AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync]) +AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4]) AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) -AC_MSG_CHECKING([for sbrk]) -# catch the warning of deprecated sbrk -old_cflags="$CFLAGS" -CFLAGS="$CFLAGS -Werror" -AC_COMPILE_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT -[[ -int main(void) { void* cur = sbrk(0); printf("%u\n", (unsigned)(size_t)((char*)cur - (char*)sbrk(0))); return 0; } -]])], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_SBRK, 1, [define if you have the sbrk() call]) - ], [AC_MSG_RESULT(no)]) -CFLAGS="$old_cflags" - # check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $build_os | grep darwin8 > /dev/null; then +if echo $target_os | grep darwin8 > /dev/null; then AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) fi +AC_CHECK_DECLS([inet_pton,inet_ntop], [], [], [ +AC_INCLUDES_DEFAULT +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif + +#ifdef HAVE_WS2TCPIP_H +#include +#endif +]) AC_REPLACE_FUNCS(inet_aton) AC_REPLACE_FUNCS(inet_pton) AC_REPLACE_FUNCS(inet_ntop) @@ -1101,11 +1387,11 @@ if test "$USE_NSS" = "no"; then if test "$USE_WINSOCK" = 1; then AC_LIBOBJ(getentropy_win) else - case `uname` in - Darwin) + case "$host" in + Darwin|*darwin*) AC_LIBOBJ(getentropy_osx) ;; - SunOS) + *solaris*|*sunos*|SunOS) AC_LIBOBJ(getentropy_solaris) AC_CHECK_HEADERS([sys/sha2.h],, [ AC_CHECK_FUNCS([SHA512_Update],,[ @@ -1118,7 +1404,7 @@ if test "$USE_NSS" = "no"; then fi AC_SEARCH_LIBS([clock_gettime], [rt]) ;; - Linux|*) + *linux*|Linux|*) AC_LIBOBJ(getentropy_linux) AC_CHECK_FUNCS([SHA512_Update],,[ AC_DEFINE([COMPAT_SHA512], [1], [Do sha512 definitions in config.h]) @@ -1136,6 +1422,7 @@ fi LIBOBJ_WITHOUT_CTIME="$LIBOBJS" AC_SUBST(LIBOBJ_WITHOUT_CTIME) AC_REPLACE_FUNCS(ctime_r) +AC_REPLACE_FUNCS(strsep) AC_ARG_ENABLE(allsymbols, AC_HELP_STRING([--enable-allsymbols], [export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) case "$enable_allsymbols" in @@ -1188,6 +1475,47 @@ dt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], ] ) +# check for dnscrypt if requested +dnsc_DNSCRYPT([ + AC_DEFINE([USE_DNSCRYPT], [1], [Define to 1 to enable dnscrypt support]) + AC_SUBST([ENABLE_DNSCRYPT], [1]) + + AC_SUBST([DNSCRYPT_SRC], ["dnscrypt/dnscrypt.c"]) + AC_SUBST([DNSCRYPT_OBJ], ["dnscrypt.lo"]) + ], + [ + AC_SUBST([ENABLE_DNSCRYPT], [0]) + ] +) + +# check for cachedb if requested +AC_ARG_ENABLE(cachedb, AC_HELP_STRING([--enable-cachedb], [enable cachedb module that can use external cache storage])) +# turn on cachedb when hiredis support is enabled. +if test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi +case "$enable_cachedb" in + yes) + AC_DEFINE([USE_CACHEDB], [1], [Define to 1 to use cachedb support]) + ;; + no|*) + # nothing + ;; +esac + +# check for ipsecmod if requested +AC_ARG_ENABLE(ipsecmod, AC_HELP_STRING([--enable-ipsecmod], [Enable ipsecmod module that facilitates opportunistic IPsec])) +case "$enable_ipsecmod" in + yes) + AC_DEFINE([USE_IPSECMOD], [1], [Define to 1 to use ipsecmod support.]) + IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo" + AC_SUBST(IPSECMOD_OBJ) + IPSECMOD_HEADER='$(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h' + AC_SUBST(IPSECMOD_HEADER) + ;; + no|*) + # nothing + ;; +esac + AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) # on openBSD, the implicit rule make $< work. # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). @@ -1234,11 +1562,25 @@ AC_ARG_WITH(libunbound-only, AC_HELP_STRING([--with-libunbound-only], INSTALLTARGET="install-lib" fi ]) +if test $ALLTARGET = "alltargets"; then + if test $USE_NSS = "yes"; then + AC_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) + fi + if test $USE_NETTLE = "yes"; then + AC_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) + fi +fi + AC_SUBST(ALLTARGET) AC_SUBST(INSTALLTARGET) ACX_STRIP_EXT_FLAGS -LDFLAGS="$LATE_LDFLAGS $LDFLAGS" +if test -n "$LATE_LDFLAGS"; then + LDFLAGS="$LATE_LDFLAGS $LDFLAGS" +fi +# remove start spaces +LDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'` +LIBS=`echo "$LIBS"|sed -e 's/^ *//'` AC_DEFINE_UNQUOTED([MAXSYSLOGMSGLEN], [10240], [Define to the maximum message length to pass to syslog.]) @@ -1294,6 +1636,10 @@ dnl includes #include #endif +#ifdef HAVE_NETINET_TCP_H +#include +#endif + #ifdef HAVE_ARPA_INET_H #include #endif @@ -1350,11 +1696,24 @@ AHX_MEMCMP_BROKEN(unbound) char *ctime_r(const time_t *timep, char *buf); #endif +#ifndef HAVE_STRSEP +#define strsep unbound_strsep +char *strsep(char **stringp, const char *delim); +#endif + #ifndef HAVE_ISBLANK #define isblank unbound_isblank int isblank(int c); #endif +#if defined(HAVE_INET_NTOP) && !HAVE_DECL_INET_NTOP +const char *inet_ntop(int af, const void *src, char *dst, size_t size); +#endif + +#if defined(HAVE_INET_PTON) && !HAVE_DECL_INET_PTON +int inet_pton(int af, const char* src, void* dst); +#endif + #if !defined(HAVE_STRPTIME) || !defined(STRPTIME_WORKS) #define strptime unbound_strptime struct tm; @@ -1385,6 +1744,7 @@ uint32_t arc4random(void); void arc4random_buf(void* buf, size_t n); void _ARC4_LOCK(void); void _ARC4_UNLOCK(void); +void _ARC4_LOCK_DESTROY(void); #endif #ifndef HAVE_ARC4RANDOM_UNIFORM uint32_t arc4random_uniform(uint32_t upper_bound); @@ -1450,6 +1810,8 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, /** default port for DNS traffic. */ #define UNBOUND_DNS_PORT 53 +/** default port for DNS over TLS traffic. */ +#define UNBOUND_DNS_OVER_TLS_PORT 853 /** default port for unbound control traffic, registered port with IANA, ub-dns-control 8953/tcp unbound dns nameserver control */ #define UNBOUND_CONTROL_PORT 8953 @@ -1463,6 +1825,6 @@ dnl if this is a distro tarball, that was already done by makedist.sh AC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) AC_SUBST(date, [`date +'%b %e, %Y'`]) -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]) +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_HEADER([config.h]) AC_OUTPUT diff --git a/external/unbound/configure_checks.cmake b/external/unbound/configure_checks.cmake index 1cfc20d..c31b3f3 100644 --- a/external/unbound/configure_checks.cmake +++ b/external/unbound/configure_checks.cmake @@ -18,6 +18,7 @@ check_include_file(login_cap.h HAVE_LOGIN_CAP_H) check_include_file(memory.h HAVE_MEMORY_H) check_include_file(netdb.h HAVE_NETDB_H) check_include_file(netinet/in.h HAVE_NETINET_IN_H) +check_include_file(pthread.h HAVE_PTHREAD) check_include_file(pwd.h HAVE_PWD_H) check_include_file(stdarg.h HAVE_STDARG_H) check_include_file(stdbool.h HAVE_STDBOOL_H) @@ -48,6 +49,11 @@ if (WIN32) iphlpapi ws2_32) endif () +if (CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)") + set(CMAKE_REQUIRED_LIBRARIES + socket + nsl) +endif () check_function_exists(_beginthreadex HAVE__BEGINTHREADEX) check_function_exists(arc4random HAVE_ARC4RANDOM) @@ -95,6 +101,7 @@ check_function_exists(sleep HAVE_SLEEP) check_function_exists(snprintf HAVE_SNPRINTF) check_function_exists(socketpair HAVE_SOCKETPAIR) check_function_exists(srandom HAVE_SRANDOM) +check_function_exists(strsep HAVE_STRSEP) check_function_exists(strftime HAVE_STRFTIME) check_function_exists(strlcat HAVE_STRLCAT) check_function_exists(strlcpy HAVE_STRLCPY) @@ -165,6 +172,11 @@ endif () # XXX: Check for broken vfork()? # XXX: Check for one-arg mkdir? +check_symbol_exists(inet_pton "arpa/inet.h" HAVE_INET_PTON) +check_symbol_exists(inet_ntop "arpa/inet.h" HAVE_INET_NTOP) + +check_symbol_exists(strsep "string.h" HAVE_STRSEP) + check_symbol_exists(PTHREAD_PRIO_INHERIT "pthread.h" HAVE_PTHREAD_PRIO_INHERIT) check_symbol_exists(pthread_rwlock_t "pthread.h" HAVE_PTHREAD_RWLOCK_T) check_symbol_exists(pthread_spinlock_t "pthread.h" HAVE_PTHREAD_SPINLOCK_T) @@ -179,24 +191,27 @@ check_include_file(openssl/err.h HAVE_OPENSSL_ERR_H) check_include_file(openssl/rand.h HAVE_OPENSSL_RAND_H) check_include_file(openssl/ssl.h HAVE_OPENSSL_SSL_H) -set(CMAKE_REQUIRED_INCLUDES) +set(CMAKE_REQUIRED_LIBRARIES + ${OPENSSL_LIBRARIES}) +if (WIN32 AND OPENSSL_VERSION STRGREATER "1.1.0") + set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};ws2_32") +endif() check_symbol_exists(NID_secp384r1 "openssl/evp.h" HAVE_DECL_NID_SECP384R1) check_symbol_exists(NID_X9_62_prime256v1 "openssl/evp.h" HAVE_DECL_NID_X9_62_PRIME256V1) check_symbol_exists(sk_SSL_COMP_pop_free "openssl/ssl.h" HAVE_DECL_SK_SSL_COMP_POP_FREE) check_symbol_exists(SSL_COMP_get_compression_methods "openssl/ssl.h" HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS) -set(CMAKE_REQUIRED_LIBRARIES - ${OPENSSL_LIBRARIES}) - +check_function_exists(EVP_MD_CTX_new HAVE_EVP_MD_CTX_NEW) check_function_exists(EVP_sha1 HAVE_EVP_SHA1) check_function_exists(EVP_sha256 HAVE_EVP_SHA256) check_function_exists(EVP_sha512 HAVE_EVP_SHA512) check_function_exists(FIPS_mode HAVE_FIPS_MODE) -check_function_exists(HMAC_CTX_init HAVE_HMAC_CTX_INIT) +check_function_exists(HMAC_Update HAVE_HMAC_UPDATE) check_function_exists(OPENSSL_config HAVE_OPENSSL_CONFIG) check_function_exists(SHA512_Update HAVE_SHA512_UPDATE) +set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_LIBRARIES) set(UNBOUND_CONFIGFILE "${CMAKE_INSTALL_PREFIX}/etc/unbound/unbound.conf" @@ -214,7 +229,7 @@ set(UNBOUND_PIDFILE "${CMAKE_INSTALL_PREFIX}/etc/unbound/unbound.pid" # Copied from configure.ac. set(WINVER 0x0502) -set(PACKAGE_VERSION "1.5.8") +set(PACKAGE_VERSION "1.7.3") set(PACKAGE_NAME "${PROJECT_NAME}") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(MAXSYSLOGMSGLEN 10240) diff --git a/external/unbound/contrib/README b/external/unbound/contrib/README index 8eae9b5..2b5e754 100644 --- a/external/unbound/contrib/README +++ b/external/unbound/contrib/README @@ -29,3 +29,12 @@ distribution but may be helpful. Patch from Stephane Lapie for ASAHI Net. * unbound_smf22.tar.gz: Solaris SMF installation/removal scripts. Contributed by Yuri Voinov. +* unbound.socket and unbound.service: systemd files for unbound, install them + in /usr/lib/systemd/system. Contributed by Sami Kerola and Pavel Odintsov. +* redirect-bogus.patch: Return configured address for bogus A and AAAA answers, + instead of SERVFAIL. Contributed by SIDN. +* fastrpz.patch: fastrpz support from Farsight Security. +* libunbound.so.conf: ltrace.conf file, see ltrace.conf(5), for libunbound. +* unbound-querycachedb.py: utility to show data stored in cachedb backend + for a particular query name and type. It requires dnspython and (for + redis backend) redis Python modules. diff --git a/external/unbound/contrib/aaaa-filter-iterator.patch b/external/unbound/contrib/aaaa-filter-iterator.patch index 71a57b4..b5c5268 100644 --- a/external/unbound/contrib/aaaa-filter-iterator.patch +++ b/external/unbound/contrib/aaaa-filter-iterator.patch @@ -1,8 +1,10 @@ ---- unbound-1.4.17.orig/doc/unbound.conf.5.in -+++ unbound-1.4.17/doc/unbound.conf.5.in -@@ -519,6 +519,13 @@ authority servers and checks if the repl - Disabled by default. - This feature is an experimental implementation of draft dns\-0x20. +Index: trunk/doc/unbound.conf.5.in +=================================================================== +--- trunk/doc/unbound.conf.5.in (revision 4357) ++++ trunk/doc/unbound.conf.5.in (working copy) +@@ -701,6 +701,13 @@ + this option in enabled. Only use if you know what you are doing. + This option only has effect when qname-minimisation is enabled. Default is off. .TP +.B aaaa\-filter: \fI +Activate behavior similar to BIND's AAAA-filter. @@ -13,20 +15,12 @@ +.TP .B private\-address: \fI Give IPv4 of IPv6 addresses or classless subnets. These are addresses - on your private network, and are not allowed to be returned for public ---- unbound-1.4.17.orig/util/config_file.c -+++ unbound-1.4.17/util/config_file.c -@@ -160,6 +160,7 @@ config_create(void) - cfg->harden_below_nxdomain = 0; - cfg->harden_referral_path = 0; - cfg->use_caps_bits_for_id = 0; -+ cfg->aaaa_filter = 0; /* ASN: default is disabled */ - cfg->private_address = NULL; - cfg->private_domain = NULL; - cfg->unwanted_threshold = 0; ---- unbound-1.4.17.orig/iterator/iter_scrub.c -+++ unbound-1.4.17/iterator/iter_scrub.c -@@ -580,6 +580,32 @@ static int sanitize_nsec_is_overreach(st + on your private network, and are not allowed to be returned for +Index: trunk/iterator/iter_scrub.c +=================================================================== +--- trunk/iterator/iter_scrub.c (revision 4357) ++++ trunk/iterator/iter_scrub.c (working copy) +@@ -617,6 +617,32 @@ } /** @@ -38,7 +32,7 @@ + */ +static int +asn_lookup_a_record_from_cache(struct query_info* qinfo, -+ struct module_env* env, struct iter_env* ie) ++ struct module_env* env, struct iter_env* ATTR_UNUSED(ie)) +{ + struct ub_packed_rrset_key* akey; + @@ -59,7 +53,7 @@ * Given a response event, remove suspect RRsets from the response. * "Suspect" rrsets are potentially poison. Note that this routine expects * the response to be in a "normalized" state -- that is, all "irrelevant" -@@ -598,6 +625,7 @@ scrub_sanitize(ldns_buffer* pkt, struct +@@ -635,6 +661,7 @@ struct query_info* qinfo, uint8_t* zonename, struct module_env* env, struct iter_env* ie) { @@ -67,7 +61,7 @@ int del_addi = 0; /* if additional-holding rrsets are deleted, we do not trust the normalized additional-A-AAAA any more */ struct rrset_parse* rrset, *prev; -@@ -633,6 +661,13 @@ scrub_sanitize(ldns_buffer* pkt, struct +@@ -670,6 +697,13 @@ rrset = rrset->rrset_all_next; } @@ -81,10 +75,11 @@ /* At this point, we brutally remove ALL rrsets that aren't * children of the originating zone. The idea here is that, * as far as we know, the server that we contacted is ONLY -@@ -644,6 +679,24 @@ scrub_sanitize(ldns_buffer* pkt, struct +@@ -680,6 +714,24 @@ + prev = NULL; rrset = msg->rrset_first; while(rrset) { - ++ + /* ASN: For AAAA records only... */ + if((ie->aaaa_filter) && (rrset->type == LDNS_RR_TYPE_AAAA)) { + /* ASN: If this is not a AAAA query, then remove AAAA @@ -102,13 +97,26 @@ + LDNS_RR_TYPE_AAAA, qinfo->qclass); + } + /* ASN: End of added code */ -+ + /* remove private addresses */ if( (rrset->type == LDNS_RR_TYPE_A || - rrset->type == LDNS_RR_TYPE_AAAA) && ---- unbound-1.4.17.orig/iterator/iterator.c -+++ unbound-1.4.17/iterator/iterator.c -@@ -1579,6 +1579,53 @@ processDSNSFind(struct module_qstate* qs +Index: trunk/iterator/iter_utils.c +=================================================================== +--- trunk/iterator/iter_utils.c (revision 4357) ++++ trunk/iterator/iter_utils.c (working copy) +@@ -175,6 +175,7 @@ + } + iter_env->supports_ipv6 = cfg->do_ip6; + iter_env->supports_ipv4 = cfg->do_ip4; ++ iter_env->aaaa_filter = cfg->aaaa_filter; + return 1; + } + +Index: trunk/iterator/iterator.c +=================================================================== +--- trunk/iterator/iterator.c (revision 4357) ++++ trunk/iterator/iterator.c (working copy) +@@ -1847,6 +1847,53 @@ return 0; } @@ -128,7 +136,7 @@ + */ +static int +asn_processQueryAAAA(struct module_qstate* qstate, struct iter_qstate* iq, -+ struct iter_env* ie, int id) ++ struct iter_env* ATTR_UNUSED(ie), int id) +{ + struct module_qstate* subq = NULL; + @@ -162,7 +170,7 @@ /** * This is the request event state where the request will be sent to one of -@@ -1626,6 +1673,13 @@ processQueryTargets(struct module_qstate +@@ -1894,6 +1941,13 @@ return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -176,7 +184,7 @@ /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ if(!iq->dp) { -@@ -2568,6 +2622,62 @@ processFinished(struct module_qstate* qs +@@ -3095,6 +3149,61 @@ return 0; } @@ -195,9 +203,8 @@ +asn_processAAAAResponse(struct module_qstate* qstate, int id, + struct module_qstate* super) +{ -+ struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id]; ++ /*struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id];*/ + struct iter_qstate* super_iq = (struct iter_qstate*)super->minfo[id]; -+ struct ub_packed_rrset_key* rrset; + struct delegpt_ns* dpns = NULL; + int error = (qstate->return_rcode != LDNS_RCODE_NOERROR); + @@ -237,9 +244,9 @@ +/* ASN: End of added code */ + /* - * Return priming query results to interestes super querystates. + * Return priming query results to interested super querystates. * -@@ -2587,6 +2697,9 @@ iter_inform_super(struct module_qstate* +@@ -3114,6 +3223,9 @@ else if(super->qinfo.qtype == LDNS_RR_TYPE_DS && ((struct iter_qstate*) super->minfo[id])->state == DSNS_FIND_STATE) processDSNSResponse(qstate, id, super); @@ -249,7 +256,7 @@ else if(qstate->return_rcode != LDNS_RCODE_NOERROR) error_supers(qstate, id, super); else if(qstate->is_priming) -@@ -2624,6 +2737,9 @@ iter_handle(struct module_qstate* qstate +@@ -3151,6 +3263,9 @@ case INIT_REQUEST_3_STATE: cont = processInitRequest3(qstate, iq, id); break; @@ -259,7 +266,7 @@ case QUERYTARGETS_STATE: cont = processQueryTargets(qstate, iq, ie, id); break; -@@ -2863,6 +2979,8 @@ iter_state_to_string(enum iter_state sta +@@ -3460,6 +3575,8 @@ return "INIT REQUEST STATE (stage 2)"; case INIT_REQUEST_3_STATE: return "INIT REQUEST STATE (stage 3)"; @@ -268,7 +275,7 @@ case QUERYTARGETS_STATE : return "QUERY TARGETS STATE"; case PRIME_RESP_STATE : -@@ -2887,6 +3005,7 @@ iter_state_is_responsestate(enum iter_st +@@ -3484,6 +3601,7 @@ case INIT_REQUEST_STATE : case INIT_REQUEST_2_STATE : case INIT_REQUEST_3_STATE : @@ -276,29 +283,21 @@ case QUERYTARGETS_STATE : case COLLECT_CLASS_STATE : return 0; ---- unbound-1.4.17.orig/iterator/iter_utils.c -+++ unbound-1.4.17/iterator/iter_utils.c -@@ -128,6 +128,7 @@ iter_apply_cfg(struct iter_env* iter_env - } - iter_env->supports_ipv6 = cfg->do_ip6; - iter_env->supports_ipv4 = cfg->do_ip4; -+ iter_env->aaaa_filter = cfg->aaaa_filter; - return 1; - } - ---- unbound-1.4.17.orig/iterator/iterator.h -+++ unbound-1.4.17/iterator/iterator.h -@@ -110,6 +110,9 @@ struct iter_env { - * array of max_dependency_depth+1 size. +Index: trunk/iterator/iterator.h +=================================================================== +--- trunk/iterator/iterator.h (revision 4357) ++++ trunk/iterator/iterator.h (working copy) +@@ -130,6 +130,9 @@ */ int* target_fetch_policy; -+ + + /** ASN: AAAA-filter flag */ + int aaaa_filter; - }; - - /** -@@ -135,6 +138,14 @@ enum iter_state { ++ + /** lock on ratelimit counter */ + lock_basic_type queries_ratelimit_lock; + /** number of queries that have been ratelimited */ +@@ -182,6 +185,14 @@ INIT_REQUEST_3_STATE, /** @@ -313,44 +312,74 @@ * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. * This state is responsible for iterating through a list of -@@ -309,6 +320,13 @@ struct iter_qstate { +@@ -364,6 +375,13 @@ + * be used when creating the state. A higher one will be attempted. */ int refetch_glue; - ++ + /** + * ASN: This is a flag that, if true, means that this query is + * for fetching A records to populate cache and determine if we must + * return AAAA records or not. + */ + int fetch_a_for_aaaa; -+ + /** list of pending queries to authoritative servers. */ struct outbound_list outlist; - }; ---- unbound-1.4.17.orig/util/config_file.h -+++ unbound-1.4.17/util/config_file.h -@@ -169,6 +169,8 @@ struct config_file { - int harden_referral_path; +Index: trunk/pythonmod/interface.i +=================================================================== +--- trunk/pythonmod/interface.i (revision 4357) ++++ trunk/pythonmod/interface.i (working copy) +@@ -851,6 +851,7 @@ + int harden_dnssec_stripped; + int harden_referral_path; + int use_caps_bits_for_id; ++ int aaaa_filter; /* ASN */ + struct config_strlist* private_address; + struct config_strlist* private_domain; + size_t unwanted_threshold; +Index: trunk/util/config_file.c +=================================================================== +--- trunk/util/config_file.c (revision 4357) ++++ trunk/util/config_file.c (working copy) +@@ -195,6 +195,7 @@ + cfg->harden_referral_path = 0; + cfg->harden_algo_downgrade = 0; + cfg->use_caps_bits_for_id = 0; ++ cfg->aaaa_filter = 0; /* ASN: default is disabled */ + cfg->caps_whitelist = NULL; + cfg->private_address = NULL; + cfg->private_domain = NULL; +Index: trunk/util/config_file.h +=================================================================== +--- trunk/util/config_file.h (revision 4357) ++++ trunk/util/config_file.h (working copy) +@@ -209,6 +209,8 @@ + int harden_algo_downgrade; /** use 0x20 bits in query as random ID bits */ int use_caps_bits_for_id; + /** ASN: enable AAAA filter? */ + int aaaa_filter; + /** 0x20 whitelist, domains that do not use capsforid */ + struct config_strlist* caps_whitelist; /** strip away these private addrs from answers, no DNS Rebinding */ - struct config_strlist* private_address; - /** allow domain (and subdomains) to use private address space */ ---- unbound-1.4.17.orig/util/configlexer.lex -+++ unbound-1.4.17/util/configlexer.lex -@@ -177,6 +177,7 @@ harden-below-nxdomain{COLON} { YDVAR(1, - harden-referral-path{COLON} { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +Index: trunk/util/configlexer.lex +=================================================================== +--- trunk/util/configlexer.lex (revision 4357) ++++ trunk/util/configlexer.lex (working copy) +@@ -279,6 +279,7 @@ use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } + caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +aaaa-filter{COLON} { YDVAR(1, VAR_AAAA_FILTER) } private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } prefetch-key{COLON} { YDVAR(1, VAR_PREFETCH_KEY) } ---- unbound-1.4.17.orig/util/configparser.y -+++ unbound-1.4.17/util/configparser.y -@@ -92,6 +92,7 @@ extern struct config_parser_state* cfg_p +Index: trunk/util/configparser.y +=================================================================== +--- trunk/util/configparser.y (revision 4357) ++++ trunk/util/configparser.y (working copy) +@@ -95,6 +95,7 @@ %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT %token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %token VAR_NEG_CACHE_SIZE VAR_HARDEN_REFERRAL_PATH VAR_PRIVATE_ADDRESS @@ -358,7 +387,7 @@ %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -@@ -151,6 +152,7 @@ content_server: server_num_threads | ser +@@ -203,6 +204,7 @@ server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | server_private_domain | server_extended_statistics | @@ -366,10 +395,12 @@ server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | -@@ -802,6 +803,15 @@ server_use_caps_for_id: VAR_USE_CAPS_FOR - free($2); - } - ; +@@ -1183,6 +1185,15 @@ + OUTYY(("P(server_caps_whitelist:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2)) + yyerror("out of memory"); ++ } ++ ; +server_aaaa_filter: VAR_AAAA_FILTER STRING_ARG + { + OUTYY(("P(server_aaaa_filter:%s)\n", $2)); @@ -377,18 +408,6 @@ + yyerror("expected yes or no."); + else cfg_parser->cfg->aaaa_filter = (strcmp($2, "yes")==0); + free($2); -+ } -+ ; + } + ; server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG - { - OUTYY(("P(server_private_address:%s)\n", $2)); ---- unbound-1.4.17.orig/pythonmod/interface.i -+++ unbound-1.4.17/pythonmod/interface.i -@@ -626,6 +626,7 @@ struct config_file { - int harden_dnssec_stripped; - int harden_referral_path; - int use_caps_bits_for_id; -+ int aaaa_filter; /* ASN */ - struct config_strlist* private_address; - struct config_strlist* private_domain; - size_t unwanted_threshold; diff --git a/external/unbound/contrib/create_unbound_ad_servers.sh b/external/unbound/contrib/create_unbound_ad_servers.sh index c3b05c6..d31f078 100644 --- a/external/unbound/contrib/create_unbound_ad_servers.sh +++ b/external/unbound/contrib/create_unbound_ad_servers.sh @@ -36,4 +36,4 @@ echo "Done." # the unbound_ad_servers file: # # include: $dst_dir/unbound_ad_servers -# +# \ No newline at end of file diff --git a/external/unbound/contrib/fastrpz.patch b/external/unbound/contrib/fastrpz.patch new file mode 100644 index 0000000..d5edc32 --- /dev/null +++ b/external/unbound/contrib/fastrpz.patch @@ -0,0 +1,3510 @@ +Description: based on the included patch contrib/fastrpz.patch +Author: fastrpz@farsightsecurity.com +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +=================================================================== +RCS file: ./RCS/Makefile.in,v +retrieving revision 1.1 +Index: unbound-1.7.0~rc1/Makefile.in +=================================================================== +--- unbound-1.7.0~rc1.orig/Makefile.in ++++ unbound-1.7.0~rc1/Makefile.in +@@ -23,6 +23,8 @@ CHECKLOCK_SRC=testcode/checklocks.c + CHECKLOCK_OBJ=@CHECKLOCK_OBJ@ + DNSTAP_SRC=@DNSTAP_SRC@ + DNSTAP_OBJ=@DNSTAP_OBJ@ ++FASTRPZ_SRC=@FASTRPZ_SRC@ ++FASTRPZ_OBJ=@FASTRPZ_OBJ@ + DNSCRYPT_SRC=@DNSCRYPT_SRC@ + DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ + WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ +@@ -125,7 +127,7 @@ validator/val_sigcrypt.c validator/val_u + edns-subnet/edns-subnet.c edns-subnet/subnetmod.c \ + edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c \ + cachedb/cachedb.c cachedb/redis.c respip/respip.c $(CHECKLOCK_SRC) \ +-$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) ++$(DNSTAP_SRC) $(FASTRPZ_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) + COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ + as112.lo msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ + iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ +@@ -137,7 +139,7 @@ slabhash.lo timehist.lo tube.lo winsock_ + validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ + val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo authzone.lo\ + $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ +-$(IPSECMOD_OBJ) respip.lo ++$(FASTRPZ_OBJ) $(IPSECMOD_OBJ) respip.lo + COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ + outside_network.lo + COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo +@@ -400,6 +402,11 @@ dnscrypt.lo dnscrypt.o: $(srcdir)/dnscry + $(srcdir)/util/config_file.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h + ++# fastrpz ++rpz.lo rpz.o: $(srcdir)/fastrpz/rpz.c config.h fastrpz/rpz.h fastrpz/librpz.h \ ++ $(srcdir)/util/config_file.h $(srcdir)/daemon/daemon.h \ ++ $(srcdir)/util/log.h ++ + # Python Module + pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ + pythonmod/interface.h \ +Index: unbound-1.7.0~rc1/config.h.in +=================================================================== +--- unbound-1.7.0~rc1.orig/config.h.in ++++ unbound-1.7.0~rc1/config.h.in +@@ -1228,4 +1228,11 @@ void *unbound_stat_realloc_log(void *ptr + /** the version of unbound-control that this software implements */ + #define UNBOUND_CONTROL_VERSION 1 + +- ++/* have __attribute__s used in librpz.h */ ++#undef LIBRPZ_HAVE_ATTR ++/** fastrpz librpz.so */ ++#undef FASTRPZ_LIBRPZ_PATH ++/** 0=no fastrpz 1=static link 2=dlopen() */ ++#undef FASTRPZ_LIB_OPEN ++/** turn on fastrpz response policy zones */ ++#undef ENABLE_FASTRPZ +Index: unbound-1.7.0~rc1/configure.ac +=================================================================== +--- unbound-1.7.0~rc1.orig/configure.ac ++++ unbound-1.7.0~rc1/configure.ac +@@ -6,6 +6,7 @@ sinclude(ax_pthread.m4) + sinclude(acx_python.m4) + sinclude(ac_pkg_swig.m4) + sinclude(dnstap/dnstap.m4) ++sinclude(fastrpz/rpz.m4) + sinclude(dnscrypt/dnscrypt.m4) + + # must be numbers. ac_defun because of later processing +@@ -1453,6 +1454,9 @@ case "$enable_ipsecmod" in + ;; + esac + ++# check for Fastrpz with fastrpz/rpz.m4 ++ck_FASTRPZ ++ + AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) + # on openBSD, the implicit rule make $< work. + # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). +Index: unbound-1.7.0~rc1/daemon/daemon.c +=================================================================== +--- unbound-1.7.0~rc1.orig/daemon/daemon.c ++++ unbound-1.7.0~rc1/daemon/daemon.c +@@ -90,6 +90,9 @@ + #include "sldns/keyraw.h" + #include "respip/respip.h" + #include ++#ifdef ENABLE_FASTRPZ ++#include "fastrpz/rpz.h" ++#endif + + #ifdef HAVE_SYSTEMD + #include +@@ -461,6 +464,14 @@ daemon_create_workers(struct daemon* dae + fatal_exit("dnstap enabled in config but not built with dnstap support"); + #endif + } ++ if(daemon->cfg->rpz_enable) { ++#ifdef ENABLE_FASTRPZ ++ rpz_init(&daemon->rpz_clist, &daemon->rpz_client, daemon->cfg); ++#else ++ fatal_exit("fastrpz enabled in config" ++ " but not built with fastrpz"); ++#endif ++ } + for(i=0; inum; i++) { + if(!(daemon->workers[i] = worker_create(daemon, i, + shufport+numport*i/daemon->num, +@@ -710,6 +721,9 @@ daemon_cleanup(struct daemon* daemon) + #ifdef USE_DNSCRYPT + dnsc_delete(daemon->dnscenv); + #endif ++#ifdef ENABLE_FASTRPZ ++ rpz_delete(&daemon->rpz_clist, &daemon->rpz_client); ++#endif + daemon->cfg = NULL; + } + +Index: unbound-1.7.0~rc1/daemon/daemon.h +=================================================================== +--- unbound-1.7.0~rc1.orig/daemon/daemon.h ++++ unbound-1.7.0~rc1/daemon/daemon.h +@@ -134,6 +134,11 @@ struct daemon { + /** the dnscrypt environment */ + struct dnsc_env* dnscenv; + #endif ++#ifdef ENABLE_FASTRPZ ++ /** global opaque rpz handles */ ++ struct librpz_clist *rpz_clist; ++ struct librpz_client *rpz_client; ++#endif + }; + + /** +Index: unbound-1.7.0~rc1/daemon/worker.c +=================================================================== +--- unbound-1.7.0~rc1.orig/daemon/worker.c ++++ unbound-1.7.0~rc1/daemon/worker.c +@@ -74,6 +74,9 @@ + #include "libunbound/context.h" + #include "libunbound/libworker.h" + #include "sldns/sbuffer.h" ++#ifdef ENABLE_FASTRPZ ++#include "fastrpz/rpz.h" ++#endif + #include "sldns/wire2str.h" + #include "util/shm_side/shm_main.h" + #include "dnscrypt/dnscrypt.h" +@@ -527,8 +530,27 @@ answer_norec_from_cache(struct worker* w + /* not secure */ + secure = 0; + break; ++#ifdef ENABLE_FASTRPZ ++ case sec_status_rpz_rewritten: ++ case sec_status_rpz_drop: ++ fatal_exit("impossible cached RPZ sec_status"); ++ break; ++#endif + } + } ++#ifdef ENABLE_FASTRPZ ++ if(repinfo->rpz) { ++ /* Scan the cached answer for RPZ hits. ++ * ret=1 use cache entry ++ * ret=-1 rewritten response already sent or dropped ++ * ret=0 deny a cached entry exists ++ */ ++ int ret = rpz_worker_cache(worker, msg->rep, qinfo, ++ id, flags, edns, repinfo); ++ if(ret != 1) ++ return ret; ++ } ++#endif + /* return this delegation from the cache */ + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; +@@ -689,6 +711,23 @@ answer_from_cache(struct worker* worker, + secure = 0; + } + } else secure = 0; ++#ifdef ENABLE_FASTRPZ ++ if(repinfo->rpz) { ++ /* Scan the cached answer for RPZ hits. ++ * ret=1 use cache entry ++ * ret=-1 rewritten response already sent or dropped ++ * ret=0 deny a cached entry exists ++ */ ++ int ret = rpz_worker_cache(worker, rep, qinfo, id, flags, edns, ++ repinfo); ++ if(ret != 1) { ++ rrset_array_unlock_touch(worker->env.rrset_cache, ++ worker->scratchpad, rep->ref, ++ rep->rrset_count); ++ return ret; ++ } ++ } ++#endif + + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; +@@ -1291,6 +1330,15 @@ worker_handle_request(struct comm_point* + log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", + &repinfo->addr, repinfo->addrlen); + goto send_reply; ++#ifdef ENABLE_FASTRPZ ++ } else { ++ /* Start to rewrite for response policy zones. ++ * This can hit a qname trigger and be done. */ ++ if(rpz_start(worker, &qinfo, repinfo, &edns)) { ++ regional_free_all(worker->scratchpad); ++ return 0; ++ } ++#endif + } + + /* If we've found a local alias, replace the qname with the alias +@@ -1339,12 +1387,21 @@ lookup_cache: + h = query_info_hash(lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); + if((e=slabhash_lookup(worker->env.msg_cache, h, lookup_qinfo, 0))) { + /* answer from cache - we have acquired a readlock on it */ +- if(answer_from_cache(worker, &qinfo, ++ ret = answer_from_cache(worker, &qinfo, + cinfo, &need_drop, &alias_rrset, &partial_rep, + (struct reply_info*)e->data, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), repinfo, +- &edns)) { ++ &edns); ++#ifdef ENABLE_FASTRPZ ++ if(ret < 0) { ++ /* RPZ already dropped or sent a response. */ ++ lock_rw_unlock(&e->lock); ++ regional_free_all(worker->scratchpad); ++ return 0; ++ } ++#endif ++ if(ret) { + /* prefetch it if the prefetch TTL expired. + * Note that if there is more than one pass + * its qname must be that used for cache +@@ -1398,11 +1455,19 @@ lookup_cache: + lock_rw_unlock(&e->lock); + } + if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { +- if(answer_norec_from_cache(worker, &qinfo, ++ ret = answer_norec_from_cache(worker, &qinfo, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), repinfo, +- &edns)) { ++ &edns); ++ if(ret) { + regional_free_all(worker->scratchpad); ++#ifdef ENABLE_FASTRPZ ++ if(ret < 0) { ++ /* RPZ already dropped ++ * or sent a response. */ ++ return 0; ++ } ++#endif + goto send_reply; + } + verbose(VERB_ALGO, "answer norec from cache -- " +Index: unbound-1.7.0~rc1/doc/unbound.conf.5.in +=================================================================== +--- unbound-1.7.0~rc1.orig/doc/unbound.conf.5.in ++++ unbound-1.7.0~rc1/doc/unbound.conf.5.in +@@ -1581,6 +1581,81 @@ It must be /96 or shorter. The default + .B dns64\-synthall: \fI\fR + Debug option, default no. If enabled, synthesize all AAAA records + despite the presence of actual AAAA records. ++.SS "Response Policy Zone Rewriting" ++.LP ++Response policy zone rewriting is controlled with the ++.B rpz ++clause. ++It must contain a ++.B rpz\-enable: ++option, and one or more ++.B rpz\-zone: ++options. ++It will usually also contain ++.B rpz\-option: ++clauses with general rewriting options or specifying dnsrpzd parameters. ++Beneath the surface, the text in ++.B rpz\-zone: \fI<"domain">\fR ++is converted to \fI"zone domain\\n"\fR and added to the configuration string ++given to ++\fIlibrpz\fR(3). ++The text in ++.B rpz-option \fI<"text">\fR ++is also added to that configuration string. ++.LP ++If using chroot, then the chroot directory must contain the \fIdnsrpzd\fR(3) ++command and the shared libraries that it uses. ++Those can be found with the \fIldd\fR(1) command. ++.LP ++Resolver zone and rewriting options and response policy zone triggers and ++actions are described in \fIlibrpz\fR(3). ++The separate control file that specifies the policy zones maintained by ++the dnsrpzd daemon is described in \fIdnsrpzd\fR(8). ++.LP ++Many installations need a local whitelist that exempts local ++domains from rewriting. ++Whitelist records can be in zones transferred by dnsrpzd from ++authorities or in a local zone file. ++.TP ++.B rpz-enable: \fI ++enables Fastrpz. ++If not enabled, the other options in the ++.B rpz: ++clause are ignored. ++.TP ++.B rpz-zone: \fI<"zone and options"> ++specifies a policy zone and optional per-zone rewriting parameters. ++.TP ++.B rpz-option: \fI<"option"> ++specifies general Fastrpz options. ++.LP ++Fastrpz is available only on POSIX compliant UNIX-like systems with the ++\fImmap\fR(2) system call. ++.LP ++Fastrpz in Unbound differs from rpz and fastrpz in BIND by ++.RS 3 ++.HP 4 ++RPZ-CLIENT-IP triggers can only be used in the first policy zone ++specified with ++.B rpz-zone: ++.HP ++Policy zone rewriting is disabled by the DO bit in DNS requests ++even when no DNSSEC signatures are supplied by authorities. ++.HP ++Unbound local zones are not subject to rpz rewriting. ++.HP ++Like Fastrpz with BIND but unlike classic BIND rpz, ++the ADDITIONAL sections of rewritten responses contain the SOA record from ++the policy zone used to rewrite the response. ++.RE ++.P ++.nf ++# example Fastrpz settings for use with chroot on Freebsd ++rpz: ++ rpz-zone: "rpz.example.org" ++ rpz-zone: "other.rpz.example.org ip-as-ns yes" ++ rpz-option: "dnsrpzd ./dnsrpzd" ++.fi + .SS "DNSCrypt Options" + .LP + The +Index: unbound-1.7.0~rc1/fastrpz/librpz.h +=================================================================== +--- /dev/null ++++ unbound-1.7.0~rc1/fastrpz/librpz.h +@@ -0,0 +1,957 @@ ++/* ++ * Define the interface from a DNS resolver to the Response Policy Zone ++ * library, librpz. ++ * ++ * This file should be included only the interface functions between the ++ * resolver and librpz to avoid name space pollution. ++ * ++ * Copyright (c) 2016-2017 Farsight Security, Inc. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ * ++ * Fastrpz version 1.2.10 ++ */ ++ ++#ifndef LIBRPZ_H ++#define LIBRPZ_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++/* ++ * Allow either ordinary or dlopen() linking. ++ */ ++#ifdef LIBRPZ_INTERNAL ++#define LIBDEF(t,s) extern t s; ++#define LIBDEF_F(f) LIBDEF(librpz_##f##_t, librpz_##f) ++#else ++#define LIBDEF(t,s) ++#define LIBDEF_F(f) ++#endif ++ ++/* ++ * Response Policy Zone triggers. ++ * Comparisons of trigger precedences require ++ * LIBRPZ_TRIG_CLIENT_IP < LIBRPZ_TRIG_QNAME < LIBRPZ_TRIG_IP ++ * < LIBRPZ_TRIG_NSDNAME < LIBRPZ_TRIG_NSIP} ++ */ ++typedef enum { ++ LIBRPZ_TRIG_BAD =0, ++ LIBRPZ_TRIG_CLIENT_IP =1, ++ LIBRPZ_TRIG_QNAME =2, ++ LIBRPZ_TRIG_IP =3, ++ LIBRPZ_TRIG_NSDNAME =4, ++ LIBRPZ_TRIG_NSIP =5 ++} librpz_trig_t; ++#define LIBRPZ_TRIG_SIZE 3 /* sizeof librpz_trig_t in bits */ ++typedef uint8_t librpz_tbit_t; /* one bit for each of the TRIGS_NUM ++ * trigger types */ ++ ++ ++/* ++ * Response Policy Zone Actions or policies ++ */ ++typedef enum { ++ LIBRPZ_POLICY_UNDEFINED =0, /* an empty entry or no decision yet */ ++ LIBRPZ_POLICY_DELETED =1, /* placeholder for a deleted policy */ ++ ++ LIBRPZ_POLICY_PASSTHRU =2, /* 'passthru': do not rewrite */ ++ LIBRPZ_POLICY_DROP =3, /* 'drop': do not respond */ ++ LIBRPZ_POLICY_TCP_ONLY =4, /* 'tcp-only': answer UDP with TC=1 */ ++ LIBRPZ_POLICY_NXDOMAIN =5, /* 'nxdomain': answer with NXDOMAIN */ ++ LIBRPZ_POLICY_NODATA =6, /* 'nodata': answer with ANCOUNT=0 */ ++ LIBRPZ_POLICY_RECORD =7, /* rewrite with the policy's RR */ ++ ++ /* only in client configurations to override the zone */ ++ LIBRPZ_POLICY_GIVEN, /* 'given': what policy record says */ ++ LIBRPZ_POLICY_DISABLED, /* at most log */ ++ LIBRPZ_POLICY_CNAME, /* answer with 'cname x' */ ++} librpz_policy_t; ++#define LIBRPZ_POLICY_BITS 4 ++ ++/* ++ * Special policies that appear as targets of CNAMEs ++ * NXDOMAIN is signaled by a CNAME with a "." target. ++ * NODATA is signaled by a CNAME with a "*." target. ++ */ ++#define LIBRPZ_RPZ_PREFIX "rpz-" ++#define LIBRPZ_RPZ_PASSTHRU LIBRPZ_RPZ_PREFIX"passthru" ++#define LIBRPZ_RPZ_DROP LIBRPZ_RPZ_PREFIX"drop" ++#define LIBRPZ_RPZ_TCP_ONLY LIBRPZ_RPZ_PREFIX"tcp-only" ++ ++ ++typedef uint16_t librpz_dznum_t; /* dnsrpzd zone # in [0,DZNUM_MAX] */ ++typedef uint8_t librpz_cznum_t; /* client zone # in [0,CZNUM_MAX] */ ++ ++ ++/* ++ * CIDR block ++ */ ++typedef struct librpz_prefix { ++ union { ++ struct in_addr in; ++ struct in6_addr in6; ++ } addr; ++ uint8_t family; ++ uint8_t len; ++} librpz_prefix_t; ++ ++/* ++ * A domain ++ */ ++typedef uint8_t librpz_dsize_t; ++typedef struct librpz_domain { ++ librpz_dsize_t size; /* of only .d */ ++ uint8_t d[0]; /* variable length wire format */ ++} librpz_domain_t; ++ ++/* ++ * A maximal domain buffer ++ */ ++typedef struct librpz_domain_buf { ++ librpz_dsize_t size; ++ uint8_t d[NS_MAXCDNAME]; ++} librpz_domain_buf_t; ++ ++/* ++ * A resource record without the owner name. ++ * C compilers say that sizeof(librpz_rr_t)=12 instead of 10. ++ */ ++typedef struct { ++ uint16_t type; /* network byte order */ ++ uint16_t class; /* network byte order */ ++ uint32_t ttl; /* network byte order */ ++ uint16_t rdlength; /* network byte order */ ++ uint8_t rdata[0]; /* variable length */ ++} librpz_rr_t; ++ ++/* ++ * The database file might be mapped with different starting addresses ++ * by concurrent clients (resolvers), and so all pointers are offsets. ++ */ ++typedef uint32_t librpz_idx_t; ++#define LIBRPZ_IDX_NULL 0 ++#define LIBRPZ_IDX_MIN 1 ++#define LIBRPZ_IDX_BAD ((librpz_idx_t)-1) ++/** ++ * Partial decoded results of a set of RPZ queries for a single DNS response ++ * or interation through the mapped file. ++ */ ++typedef int16_t librpz_result_id_t; ++typedef struct librpz_result { ++ librpz_idx_t next_rr; ++ librpz_result_id_t hit_id; /* trigger ID from resolver */ ++ librpz_policy_t zpolicy; /* policy from zone */ ++ librpz_policy_t policy; /* adjusted by client configuration */ ++ librpz_dznum_t dznum; /* dnsrpzd zone number */ ++ librpz_cznum_t cznum; /* librpz client zone number */ ++ librpz_trig_t trig:LIBRPZ_TRIG_SIZE; ++ bool log:1; /* log rewrite given librpz_log_level */ ++} librpz_result_t; ++ ++ ++/** ++ * librpz trace or log levels. ++ */ ++typedef enum { ++ LIBRPZ_LOG_FATAL =0, /* always print fatal errors */ ++ LIBRPZ_LOG_ERROR =1, /* errors have this level */ ++ LIBRPZ_LOG_TRACE1 =2, /* big events such as dnsrpzd starts */ ++ LIBRPZ_LOG_TRACE2 =3, /* smaller dnsrpzd zone transfers */ ++ LIBRPZ_LOG_TRACE3 =4, /* librpz hits */ ++ LIBRPZ_LOG_TRACE4 =5, /* librpz lookups */ ++ LIBRPZ_LOG_INVALID =999, ++} librpz_log_level_t; ++typedef librpz_log_level_t (librpz_log_level_val_t)(librpz_log_level_t level); ++LIBDEF_F(log_level_val) ++ ++/** ++ * Logging function that can be supplied by the resolver. ++ * @param level is one of librpz_log_level_t ++ * @param ctx is for use by the resolver's logging system. ++ * NULL mean a context-free message. ++ */ ++typedef void(librpz_log_fnc_t)(librpz_log_level_t level, void *ctx, ++ const char *buf); ++ ++/** ++ * Point librpz logging functions to the resolver's choice. ++ */ ++typedef void (librpz_set_log_t)(librpz_log_fnc_t *new_log, const char *prog_nm); ++LIBDEF_F(set_log) ++ ++ ++/** ++ * librpz error messages are put in these buffers. ++ * Use a structure intead of naked char* to let the compiler check the length. ++ * A function defined with "foo(char buf[120])" can be called with ++ * "char sbuf[2]; foo(sbuf)" and suffer a buffer overrun. ++ */ ++typedef struct { ++ char c[120]; ++} librpz_emsg_t; ++ ++ ++#ifdef LIBRPZ_HAVE_ATTR ++#define LIBRPZ_UNUSED __attribute__((unused)) ++#define LIBRPZ_PF(f,l) __attribute__((format(printf,f,l))) ++#define LIBRPZ_NORET __attribute__((__noreturn__)) ++#else ++#define LIBRPZ_UNUSED ++#define LIBRPZ_PF(f,l) ++#define LIBRPZ_NORET ++#endif ++ ++#ifdef HAVE_BUILTIN_EXPECT ++#define LIBRPZ_LIKELY(c) __builtin_expect(!!(c), 1) ++#define LIBRPZ_UNLIKELY(c) __builtin_expect(!!(c), 0) ++#else ++#define LIBRPZ_LIKELY(c) (c) ++#define LIBRPZ_UNLIKELY(c) (c) ++#endif ++ ++typedef bool (librpz_parse_log_opt_t)(librpz_emsg_t *emsg, const char *arg); ++LIBDEF_F(parse_log_opt) ++ ++typedef void (librpz_vpemsg_t)(librpz_emsg_t *emsg, ++ const char *p, va_list args); ++LIBDEF_F(vpemsg) ++typedef void (librpz_pemsg_t)(librpz_emsg_t *emsg, ++ const char *p, ...) LIBRPZ_PF(2,3); ++LIBDEF_F(pemsg) ++ ++typedef void (librpz_vlog_t)(librpz_log_level_t level, void *ctx, ++ const char *p, va_list args); ++LIBDEF_F(vlog) ++typedef void (librpz_log_t)(librpz_log_level_t level, void *ctx, ++ const char *p, ...) LIBRPZ_PF(3,4); ++LIBDEF_F(log) ++ ++typedef void (librpz_fatal_t)(int ex_code, ++ const char *p, ...) LIBRPZ_PF(2,3); ++extern void librpz_fatal(int ex_code, ++ const char *p, ...) LIBRPZ_PF(2,3) LIBRPZ_NORET; ++ ++typedef void (librpz_rpz_assert_t)(const char *file, unsigned line, ++ const char *p, ...) LIBRPZ_PF(3,4); ++extern void librpz_rpz_assert(const char *file, unsigned line, ++ const char *p, ...) LIBRPZ_PF(3,4) LIBRPZ_NORET; ++ ++typedef void (librpz_rpz_vassert_t)(const char *file, uint line, ++ const char *p, va_list args); ++extern void librpz_rpz_vassert(const char *file, uint line, ++ const char *p, va_list args) LIBRPZ_NORET; ++ ++ ++/* ++ * As far as clients are concerned, all relative pointers or indexes in a ++ * version of the mapped file except trie node parent pointers remain valid ++ * forever. A client must release a version so that it can be garbage ++ * collected by the file system. When dnsrpzd needs to expand the file, ++ * it copies the old file to a new, larger file. Clients can continue ++ * using the old file. ++ * ++ * Versions can also appear in a single file. Old nodes and trie values ++ * within the file are not destroyed until all clients using the version ++ * that contained the old values release the version. ++ * ++ * A client is marked as using version by connecting to the deamon. It is ++ * marked as using all subsequent versions. A client releases all versions ++ * by closing the connection or a range of versions by updating is slot ++ * in the shared memory version table. ++ * ++ * As far as clients are concerned, there are the following possible librpz ++ * failures: ++ * - malloc() or other fatal internal librpz problems indicated by ++ * a failing return from a librpz function ++ * All operations will fail until client handle is destroyed and ++ * recreated with librpz_client_detach() and librpz_client_create(). ++ * - corrupt database detected by librpz code, corrupt database detected ++ * by dnsrpzd, or disconnection from the daemon. ++ * Current operations will fail. ++ * ++ * Clients assume that the file has already been unlinked before ++ * the corrupt flag is set so that they do not race with the server ++ * over the corruption of a single file. A client that finds the ++ * corrupt set knows that dnsrpzd has already crashed with ++ * abort() and is restarting. The client can re-connect to dnsrpzd ++ * and retransmit its configuration, backing off as usual if anything ++ * goes wrong. ++ * ++ * Searchs of the database by a client do not need locks against dnsrpzd or ++ * other clients, but a lock is used to protect changes to the connection ++ * by competing threads in the client. The client provides fuctions ++ * to serialize the conncurrent use of any single client handle. ++ * Functions that do nothing are appropriate for applications that are ++ * not "threaded" or that do not share client handles among threads. ++ * Otherwise, functions must be provided to librpz_clientcreate(). ++ * Something like the following works with pthreads: ++ * ++ * static void ++ * lock(void *mutex) { assert(pthread_mutex_lock(mutex) == 0); } ++ * ++ * static void ++ * unlock(void *mutex) { assert(pthread_mutex_unlock(mutex) == 0); } ++ * ++ * static void ++ * mutex_destroy(void *mutex) { assert(pthread_mutex_destroy(mutex) == 0); } ++ * ++ * ++ * ++ * At every instant, all of the data and pointers in the mapped file are valid. ++ * Changes to trie node or other data are always made so that it and ++ * all pointers in and to it remain valid for a time. Old versions are ++ * eventually discarded. ++ * ++ * Dnsrpzd periodically defines a new version by setting asside all changes ++ * made since the previous version was defined. Subsequent changes ++ * made (only!) by dnsrpzd will be part of the next version. ++ * ++ * To discard an old version, dnsrpzd must know that all clients have stopped ++ * using that version. Clients do that by using part of the mapped file ++ * to tell dnsrpzd the oldest version that each client is using. ++ * Dnsrpzd assigns each connecting client an entry in the cversions array ++ * in the mapped file. The client puts version numbers into that entry ++ * to signal to dnsrpzd which versions that can be discarded. ++ * Dnsrpzd is free, as far as that client is concerned, to discard all ++ * numerically smaller versions. A client can disclaim all versions with ++ * the version number VERSIONS_ALL or 0. ++ * ++ * The race between a client changing its entry and dnsrpzd discarding a ++ * version is resolved by allowing dnsrpzd to discard all versions ++ * smaller or equal to the client's version number. If dnsrpzd is in ++ * the midst of discarding or about to discard version N when the ++ * client asserts N, no harm is done. The client depends only on ++ * the consistency of version N+1. ++ * ++ * This version mechanism depends in part on not being exercised too frequently ++ * Version numbers are 32 bits long and dnsrpzd creates new versions ++ * at most once every 30 seconds. ++ */ ++ ++ ++/* ++ * Lock functions for concurrent use of a single librpz_client_t client handle. ++ */ ++typedef void(librpz_mutex_t)(void *mutex); ++ ++/* ++ * List of connections to dnsrpzd daemons. ++ */ ++typedef struct librpz_clist librpz_clist_t; ++ ++/* ++ * Client's handle on dnsrpzd. ++ */ ++typedef struct librpz_client librpz_client_t; ++ ++/** ++ * Create the list of connections to the dnsrpzd daemon. ++ * @param[out] emsg: error message ++ * @param lock: start exclusive access to the client handle ++ * @param unlock: end exclusive access to the client handle ++ * @param mutex_destroy: release the lock ++ * @param mutex: pointer to the lock for the client handle ++ * @param log_ctx: NULL or resolver's context log messages ++ */ ++typedef librpz_clist_t *(librpz_clist_create_t)(librpz_emsg_t *emsg, ++ librpz_mutex_t *lock, ++ librpz_mutex_t *unlock, ++ librpz_mutex_t *mutex_destroy, ++ void *mutex, void *log_ctx); ++LIBDEF_F(clist_create) ++ ++ ++/** ++ * Release the list of dnsrpzd connections. ++ */ ++typedef void (librpz_clist_detach_t)(librpz_clist_t **clistp); ++LIBDEF_F(clist_detach) ++ ++/** ++ * Create a librpz client handle. ++ * @param[out] emsg: error message ++ * @param: list of dnsrpzd connections ++ * @param cstr: string of configuration settings separated by ';' or '\n' ++ * @param use_expired: true to not ignore expired zones ++ * @return client handle or NULL if the handle could not be created ++ */ ++typedef librpz_client_t *(librpz_client_create_t)(librpz_emsg_t *emsg, ++ librpz_clist_t *clist, ++ const char *cstr, ++ bool use_expired); ++LIBDEF_F(client_create) ++ ++/** ++ * Start (if necessary) dnsrpzd and connect to it. ++ * @param[out] emsg: error message ++ * @param client handle ++ * @param optional: true if it is ok if starting the daemon is not allowed ++ */ ++typedef bool (librpz_connect_t)(librpz_emsg_t *emsg, librpz_client_t *client, ++ bool optional); ++LIBDEF_F(connect) ++ ++/** ++ * Start to destroy a librpz client handle. ++ * It will not be destroyed until the last set of RPZ queries represented ++ * by a librpz_rsp_t ends. ++ * @param client handle to be released ++ * @return false on error ++ */ ++typedef void (librpz_client_detach_t)(librpz_client_t **clientp); ++LIBDEF_F(client_detach) ++ ++/** ++ * State for a set of RPZ queries for a single DNS response ++ * or for listing the database. ++ */ ++typedef struct librpz_rsp librpz_rsp_t; ++ ++/** ++ * Start a set of RPZ queries for a single DNS response. ++ * @param[out] emsg: error message for false return or *rspp=NULL ++ * @param[out] rspp created context or NULL ++ * @param[out] min_ns_dotsp: NULL or pointer to configured MIN-NS-DOTS value ++ * @param client state ++ * @param have_rd: RD=1 in the DNS request ++ * @param have_do: DO=1 in the DNS request ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_create_t)(librpz_emsg_t *emsg, librpz_rsp_t **rspp, ++ int *min_ns_dotsp, librpz_client_t *client, ++ bool have_rd, bool have_do); ++LIBDEF_F(rsp_create) ++ ++/** ++ * Finish RPZ work for a DNS response. ++ */ ++typedef void (librpz_rsp_detach_t)(librpz_rsp_t **rspp); ++LIBDEF_F(rsp_detach) ++ ++/** ++ * Get the final, accumulated result of a set of RPZ queries. ++ * Yield LIBRPZ_POLICY_UNDEFINED if ++ * - there were no hits, ++ * - there was a dispositive hit, be we have not recursed and are required ++ * to recurse so that evil DNS authories will not know we are using RPZ ++ * - we have a hit and have recursed, but later data such as NSIP could ++ * override ++ * @param[out] emsg ++ * @param[out] result describes the hit ++ * or result->policy=LIBRPZ_POLICY_UNDEFINED without a hit ++ * @param[out] result: current policy rewrite values ++ * @param recursed: recursion has now been done even if it was not done ++ * when the hit was found ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_result_t)(librpz_emsg_t *emsg, librpz_result_t *result, ++ bool recursed, const librpz_rsp_t *rsp); ++LIBDEF_F(rsp_result) ++ ++/** ++ * Might looking for a trigger be worthwhile? ++ * @param trig: look for this type of trigger ++ * @param ipv6: true if trig is LIBRPZ_TRIG_CLIENT_IP, LIBRPZ_TRIG_IP, ++ * or LIBRPZ_TRIG_NSIP and the IP address is IPv6 ++ * @return: true if looking could be worthwhile ++ */ ++typedef bool (librpz_have_trig_t)(librpz_trig_t trig, bool ipv6, ++ const librpz_rsp_t *rsp); ++LIBDEF_F(have_trig) ++ ++/** ++ * Might looking for NSDNAME and NSIP triggers be worthwhile? ++ * @return: true if looking could be worthwhile ++ */ ++typedef bool (librpz_have_ns_trig_t)(const librpz_rsp_t *rsp); ++LIBDEF_F(have_ns_trig) ++ ++/** ++ * Convert the found client IP trie key to a CIDR block ++ * @param[out] emsg ++ * @param[out] prefix trigger ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_clientip_prefix_t)(librpz_emsg_t *emsg, ++ librpz_prefix_t *prefix, ++ librpz_rsp_t *rsp); ++LIBDEF_F(rsp_clientip_prefix) ++ ++/** ++ * Compute the owner name of the found or result trie key, usually to log it. ++ * An IP address key might be returned as 8.0.0.0.127.rpz-client-ip. ++ * example.com. might be a qname trigger. example.com.rpz-nsdname. could ++ * be an NSDNAME trigger. ++ * @param[out] emsg ++ * @param[out] owner domain ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_domain_t)(librpz_emsg_t *emsg, ++ librpz_domain_buf_t *owner, ++ librpz_rsp_t *rsp); ++LIBDEF_F(rsp_domain) ++ ++/** ++ * Get the next RR of the LIBRPZ_POLICY_RECORD result after an initial use of ++ * librpz_rsp_result() or librpz_itr_node() or after a previous use of ++ * librpz_rsp_rr(). The RR is in uncompressed wire format including type, ++ * class, ttl and length in network byte order. ++ * @param[out] emsg ++ * @param[out] typep: optional host byte order record type or ns_t_invalid (0) ++ * @param[out] classp: class such as ns_c_in ++ * @param[out] ttlp: TTL ++ * @param[out] rrp: optionall malloc() buffer containting the next RR or ++ * NULL after the last RR ++ * @param[out] result: current policy rewrite values ++ * @param qname: used construct a wildcard CNAME ++ * @param qname_size ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_rr_t)(librpz_emsg_t *emsg, uint16_t *typep, ++ uint16_t *classp, uint32_t *ttlp, ++ librpz_rr_t **rrp, librpz_result_t *result, ++ const uint8_t *qname, size_t qname_size, ++ librpz_rsp_t *rsp); ++LIBDEF_F(rsp_rr) ++ ++/** ++ * Get the next RR of the LIBRPZ_POLICY_RECORD result. ++ * @param[out] emsg ++ * @param[out] ttlp: TTL ++ * @param[out] rrp: malloc() buffer with SOA RR without owner name ++ * @param[out] result: current policy rewrite values ++ * @param[out] origin: SOA owner name ++ * @param[out] origin_size ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_soa_t)(librpz_emsg_t *emsg, uint32_t *ttlp, ++ librpz_rr_t **rrp, librpz_domain_buf_t *origin, ++ librpz_result_t *result, librpz_rsp_t *rsp); ++LIBDEF_F(rsp_soa) ++ ++/** ++ * Get the SOA serial number for a policy zone to compare with a known value ++ * to check whether a zone tranfer is complete. ++ */ ++typedef bool (librpz_soa_serial_t)(librpz_emsg_t *emsg, uint32_t *serialp, ++ const char *domain_nm, librpz_rsp_t *rsp); ++LIBDEF_F(soa_serial) ++ ++/** ++ * Save the current policy checking state. ++ * @param[out] emsg ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_push_t)(librpz_emsg_t *emsg, librpz_rsp_t *rsp); ++LIBDEF_F(rsp_push) ++#define LIBRPZ_RSP_STACK_DEPTH 3 ++ ++/** ++ * Restore the previous policy checking state. ++ * @param[out] emsg ++ * @param[out] result: NULL or restored policy rewrite values ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_pop_t)(librpz_emsg_t *emsg, librpz_result_t *result, ++ librpz_rsp_t *rsp); ++LIBDEF_F(rsp_pop) ++ ++/** ++ * Discard the most recently save policy checking state. ++ * @param[out] emsg ++ * @param[out] result: NULL or restored policy rewrite values ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_pop_discard_t)(librpz_emsg_t *emsg, librpz_rsp_t *rsp); ++LIBDEF_F(rsp_pop_discard) ++ ++/** ++ * Disable a zone. ++ * @param[out] emsg ++ * @param znum ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_rsp_forget_zone_t)(librpz_emsg_t *emsg, ++ librpz_cznum_t znum, librpz_rsp_t *rsp); ++LIBDEF_F(rsp_forget_zone) ++ ++/** ++ * Apply RPZ to an IP address. ++ * @param[out] emsg ++ * @param addr: address to check ++ * @param ipv6: true for 16 byte IPv6 instead of 4 byte IPv4 ++ * @param trig LIBRPZ_TRIG_CLIENT_IP, LIBRPZ_TRIG_IP, or LIBRPZ_TRIG_NSIP ++ * @param hit_id: caller chosen ++ * @param recursed: recursion has been done ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_ck_ip_t)(librpz_emsg_t *emsg, ++ const void *addr, uint family, ++ librpz_trig_t trig, librpz_result_id_t hit_id, ++ bool recursed, librpz_rsp_t *rsp); ++LIBDEF_F(ck_ip) ++ ++/** ++ * Apply RPZ to a wire-format domain. ++ * @param[out] emsg ++ * @param domain in wire format ++ * @param domain_size ++ * @param trig LIBRPZ_TRIG_QNAME or LIBRPZ_TRIG_NSDNAME ++ * @param hit_id: caller chosen ++ * @param recursed: recursion has been done ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return false on error ++ */ ++typedef bool (librpz_ck_domain_t)(librpz_emsg_t *emsg, ++ const uint8_t *domain, size_t domain_size, ++ librpz_trig_t trig, librpz_result_id_t hit_id, ++ bool recursed, librpz_rsp_t *rsp); ++LIBDEF_F(ck_domain) ++ ++/** ++ * Ask dnsrpzd to refresh a zone. ++ * @param[out] emsg error message ++ * @param librpz_domain_t domain to refresh ++ * @param client context ++ * @return false after error ++ */ ++typedef bool (librpz_zone_refresh_t)(librpz_emsg_t *emsg, const char *domain, ++ librpz_rsp_t *rsp); ++LIBDEF_F(zone_refresh) ++ ++/** ++ * Get a string describing the the databasse ++ * @param license: include the license ++ * @param cfiles: include the configuration file names ++ * @param listens: include the local notify IP addresses ++ * @param[out] emsg error message if the result is null ++ * @param client context ++ * @return malloc'ed string or NULL after error ++ */ ++typedef char *(librpz_db_info_t)(librpz_emsg_t *emsg, ++ bool license, bool cfiles, bool listens, ++ librpz_rsp_t *rsp); ++LIBDEF_F(db_info) ++ ++/** ++ * Start a context for listing the nodes and/or zones in the mapped file ++ * @param[out] emsg: error message for false return or *rspp=NULL ++ * @param[out[ rspp created context or NULL ++ * @param client context ++ * @return false after error ++ */ ++typedef bool (librpz_itr_start_t)(librpz_emsg_t *emsg, librpz_rsp_t **rspp, ++ librpz_client_t *client); ++LIBDEF_F(itr_start) ++ ++/** ++ * Get mapped file memory allocation statistics. ++ * @param[out] emsg: error message ++ * @param rsp state from librpz_itr_start() ++ * @return malloc'ed string or NULL after error ++ */ ++typedef char *(librpz_mf_stats_t)(librpz_emsg_t *emsg, librpz_rsp_t *rsp); ++LIBDEF_F(mf_stats) ++ ++/** ++ * Get versions currently used by clients. ++ * @param[out] emsg: error message ++ * @param[in,out] rsp: state from librpz_itr_start() ++ * @return malloc'ed string or NULL after error ++ */ ++typedef char *(librpz_vers_stats_t)(librpz_emsg_t *emsg, librpz_rsp_t *rsp); ++LIBDEF_F(vers_stats) ++ ++/** ++ * Allocate a string describing the next zone or "" after the last zone. ++ * @param[out] emsg ++ * @param all_zones to list all instead of only requested zones ++ * @param[in,out] rsp state from librpz_rsp_start() ++ * @return malloc'ed string or NULL after error ++ */ ++typedef char *(librpz_itr_zone_t)(librpz_emsg_t *emsg, bool all_zones, ++ librpz_rsp_t *rsp); ++LIBDEF_F(itr_zone) ++ ++/** ++ * Describe the next trie node while dumping the database. ++ * @param[out] emsg ++ * @param[out] result describes node ++ * or result->policy=LIBRPZ_POLICY_UNDEFINED after the last node. ++ * @param all_zones to list all instead of only requested zones ++ * @param[in,out] rsp state from librpz_itr_start() ++ * @return: false on error ++ */ ++typedef bool (librpz_itr_node_t)(librpz_emsg_t *emsg, librpz_result_t *result, ++ bool all_zones, librpz_rsp_t *rsp); ++LIBDEF_F(itr_node) ++ ++/** ++ * RPZ policy to string with a backup buffer of POLICY2STR_SIZE size ++ */ ++typedef const char *(librpz_policy2str_t)(librpz_policy_t policy, ++ char *buf, size_t buf_size); ++#define POLICY2STR_SIZE sizeof("policy xxxxxx") ++LIBDEF_F(policy2str) ++ ++/** ++ * Trigger type to string. ++ */ ++typedef const char *(librpz_trig2str_t)(librpz_trig_t trig); ++LIBDEF_F(trig2str) ++ ++/** ++ * Convert a number of seconds to a zone file duration string ++ */ ++typedef const char *(librpz_secs2str_t)(time_t secs, ++ char *buf, size_t buf_size); ++#define SECS2STR_SIZE sizeof("1234567w7d24h59m59s") ++LIBDEF_F(secs2str) ++ ++/** ++ * Parse a duration with 's', 'm', 'h', 'd', and 'w' units. ++ */ ++typedef bool (librpz_str2secs_t)(librpz_emsg_t *emsg, time_t *val, ++ const char *str0); ++LIBDEF_F(str2secs) ++ ++/** ++ * Translate selected rtypes to strings ++ */ ++typedef const char *(librpz_rtype2str_t)(uint type, char *buf, size_t buf_size); ++#define RTYPE2STR_SIZE sizeof("type xxxxx") ++LIBDEF_F(rtype2str) ++ ++/** ++ * Local version of ns_name_ntop() for portability. ++ */ ++typedef int (librpz_domain_ntop_t)(const u_char *src, char *dst, size_t dstsiz); ++LIBDEF_F(domain_ntop) ++ ++/** ++ * Local version of ns_name_pton(). ++ */ ++typedef int (librpz_domain_pton2_t)(const char *src, u_char *dst, size_t dstsiz, ++ size_t *dstlen, bool lower); ++LIBDEF_F(domain_pton2) ++ ++typedef union socku socku_t; ++typedef socku_t *(librpz_mk_inet_su_t)(socku_t *su, const struct in_addr *addrp, ++ in_port_t port); ++LIBDEF_F(mk_inet_su) ++ ++typedef socku_t *(librpz_mk_inet6_su_t)(socku_t *su, const ++ struct in6_addr *addrp, ++ uint32_t scope_id, in_port_t port); ++LIBDEF_F(mk_inet6_su) ++ ++typedef bool (librpz_str2su_t)(socku_t *sup, const char *str); ++LIBDEF_F(str2su) ++ ++typedef char *(librpz_su2str_t)(char *str, size_t str_len, const socku_t *su); ++LIBDEF_F(su2str) ++#define SU2STR_SIZE (INET6_ADDRSTRLEN+1+6+1) ++ ++ ++/** ++ * default path to dnsrpzd ++ */ ++const char *librpz_dnsrpzd_path; ++ ++ ++#undef LIBDEF ++ ++/* ++ * This is the dlopen() interface to librpz. ++ */ ++typedef const struct { ++ const char *dnsrpzd_path; ++ const char *version; ++ librpz_parse_log_opt_t *parse_log_opt; ++ librpz_log_level_val_t *log_level_val; ++ librpz_set_log_t *set_log; ++ librpz_vpemsg_t *vpemsg; ++ librpz_pemsg_t *pemsg; ++ librpz_vlog_t *vlog; ++ librpz_log_t *log; ++ librpz_fatal_t *fatal LIBRPZ_NORET; ++ librpz_rpz_assert_t *rpz_assert LIBRPZ_NORET; ++ librpz_rpz_vassert_t *rpz_vassert LIBRPZ_NORET; ++ librpz_clist_create_t *clist_create; ++ librpz_clist_detach_t *clist_detach; ++ librpz_client_create_t *client_create; ++ librpz_connect_t *connect; ++ librpz_client_detach_t *client_detach; ++ librpz_rsp_create_t *rsp_create; ++ librpz_rsp_detach_t *rsp_detach; ++ librpz_rsp_result_t *rsp_result; ++ librpz_have_trig_t *have_trig; ++ librpz_have_ns_trig_t *have_ns_trig; ++ librpz_rsp_clientip_prefix_t *rsp_clientip_prefix; ++ librpz_rsp_domain_t *rsp_domain; ++ librpz_rsp_rr_t *rsp_rr; ++ librpz_rsp_soa_t *rsp_soa; ++ librpz_soa_serial_t *soa_serial; ++ librpz_rsp_push_t *rsp_push; ++ librpz_rsp_pop_t *rsp_pop; ++ librpz_rsp_pop_discard_t *rsp_pop_discard; ++ librpz_rsp_forget_zone_t *rsp_forget_zone; ++ librpz_ck_ip_t *ck_ip; ++ librpz_ck_domain_t *ck_domain; ++ librpz_zone_refresh_t *zone_refresh; ++ librpz_db_info_t *db_info; ++ librpz_itr_start_t *itr_start; ++ librpz_mf_stats_t *mf_stats; ++ librpz_vers_stats_t *vers_stats; ++ librpz_itr_zone_t *itr_zone; ++ librpz_itr_node_t *itr_node; ++ librpz_policy2str_t *policy2str; ++ librpz_trig2str_t *trig2str; ++ librpz_secs2str_t *secs2str; ++ librpz_str2secs_t *str2secs; ++ librpz_rtype2str_t *rtype2str; ++ librpz_domain_ntop_t *domain_ntop; ++ librpz_domain_pton2_t *domain_pton2; ++ librpz_mk_inet_su_t *mk_inet_su; ++ librpz_mk_inet6_su_t *mk_inet6_su; ++ librpz_str2su_t *str2su; ++ librpz_su2str_t *su2str; ++} librpz_0_t; ++extern librpz_0_t librpz_def_0; ++ ++/* ++ * Future versions can be upward compatible by defining LIBRPZ_DEF as ++ * librpz_X_t. ++ */ ++#define LIBRPZ_DEF librpz_def_0 ++#define LIBRPZ_DEF_STR "librpz_def_0" ++ ++typedef librpz_0_t librpz_t; ++extern librpz_t *librpz; ++ ++ ++#if LIBRPZ_LIB_OPEN == 2 ++#include ++ ++/** ++ * link-load librpz ++ * @param[out] emsg: error message ++ * @param[in,out] dl_handle: NULL or pointer to new dlopen handle ++ * @param[in] path: librpz.so path ++ * @return address of interface structure or NULL on failure ++ */ ++static inline librpz_t * ++librpz_lib_open(librpz_emsg_t *emsg, void **dl_handle, const char *path) ++{ ++ void *handle; ++ librpz_t *new_librpz; ++ ++ emsg->c[0] = '\0'; ++ ++ /* ++ * Close a previously opened handle on librpz.so. ++ */ ++ if (dl_handle != NULL && *dl_handle != NULL) { ++ if (dlclose(*dl_handle) != 0) { ++ snprintf(emsg->c, sizeof(librpz_emsg_t), ++ "dlopen(NULL): %s", dlerror()); ++ return (NULL); ++ } ++ *dl_handle = NULL; ++ } ++ ++ /* ++ * First try the main executable of the process in case it was ++ * linked to librpz. ++ * Do not worry if we cannot search the main executable of the process. ++ */ ++ handle = dlopen(NULL, RTLD_NOW | RTLD_LOCAL); ++ if (handle != NULL) { ++ new_librpz = dlsym(handle, LIBRPZ_DEF_STR); ++ if (new_librpz != NULL) { ++ if (dl_handle != NULL) ++ *dl_handle = handle; ++ return (new_librpz); ++ } ++ if (dlclose(handle) != 0) { ++ snprintf(emsg->c, sizeof(librpz_emsg_t), ++ "dlsym(NULL, "LIBRPZ_DEF_STR"): %s", ++ dlerror()); ++ return (NULL); ++ } ++ } ++ ++ if (path == NULL || path[0] == '\0') { ++ snprintf(emsg->c, sizeof(librpz_emsg_t), ++ "librpz not linked and no dlopen() path provided"); ++ return (NULL); ++ } ++ ++ handle = dlopen(path, RTLD_NOW | RTLD_LOCAL); ++ if (handle == NULL) { ++ snprintf(emsg->c, sizeof(librpz_emsg_t), "dlopen(%s): %s", ++ path, dlerror()); ++ return (NULL); ++ } ++ new_librpz = dlsym(handle, LIBRPZ_DEF_STR); ++ if (new_librpz != NULL) { ++ if (dl_handle != NULL) ++ *dl_handle = handle; ++ return (new_librpz); ++ } ++ snprintf(emsg->c, sizeof(librpz_emsg_t), ++ "dlsym(%s, "LIBRPZ_DEF_STR"): %s", ++ path, dlerror()); ++ dlclose(handle); ++ return (NULL); ++} ++ ++#elif defined(LIBRPZ_LIB_OPEN) ++ ++/* ++ * Statically link to the librpz.so DSO on systems without dlopen() ++ */ ++static inline librpz_t * ++librpz_lib_open(librpz_emsg_t *emsg, void **dl_handle, const char *path) ++{ ++ (void)(path); ++ ++ if (dl_handle != NULL) ++ *dl_handle = NULL; ++ ++#if LIBRPZ_LIB_OPEN == 1 ++ emsg->c[0] = '\0'; ++ return (&LIBRPZ_DEF); ++#else ++ snprintf(emsg->c, sizeof(librpz_emsg_t), ++ "librpz not available via ./configure"); ++ return (NULL); ++#endif /* LIBRPZ_LIB_OPEN */ ++} ++#endif /* LIBRPZ_LIB_OPEN */ ++ ++#endif /* LIBRPZ_H */ +Index: unbound-1.7.0~rc1/fastrpz/rpz.c +=================================================================== +--- /dev/null ++++ unbound-1.7.0~rc1/fastrpz/rpz.c +@@ -0,0 +1,1357 @@ ++/* ++ * fastrpz/rpz.c - interface to the fastrpz response policy zone library ++ * ++ * Optimize no-rewrite cases for speed but optimize rewriting for ++ * simplicity and size. ++ */ ++ ++#include "config.h" ++ ++#ifdef ENABLE_FASTRPZ ++#include "daemon/daemon.h" ++#define LIBRPZ_LIB_OPEN FASTRPZ_LIB_OPEN ++#include "fastrpz/rpz.h" ++#include "daemon/worker.h" ++#include "iterator/iter_delegpt.h" ++#include "iterator/iter_utils.h" ++#include "iterator/iterator.h" ++#include "util/data/dname.h" ++#include "util/data/msgencode.h" ++#include "util/data/msgparse.h" ++#include "util/data/msgreply.h" ++#include "util/log.h" ++#include "util/netevent.h" ++#include "util/net_help.h" ++#include "util/regional.h" ++#include "util/storage/slabhash.h" ++#include "services/cache/dns.h" ++#include "services/cache/rrset.h" ++#include "services/mesh.h" ++#include "sldns/sbuffer.h" ++#include "sldns/rrdef.h" ++ ++ ++typedef enum state { ++ /* No more rewriting */ ++ st_off = 1, ++ /* Send SERVFAIL */ ++ st_servfail, ++ /* No dispositive hit yet */ ++ st_unknown, ++ /* Let the iterator resolve a CNAME or get a delegation point. */ ++ st_iterate, ++ /* Let the iterator resolve NS to check NSIP or NSDNAME triggers. */ ++ st_ck_ns, ++ /* We have an answer */ ++ st_rewritten, ++} st_t; ++ ++ ++/* RPZ state pointed to by struct comm_reply */ ++typedef struct commreply_rpz { ++ /* librpz state */ ++ librpz_rsp_t* rsp; ++ /* ID for log messages */ ++ int log_id; ++ ++ /* from configuration */ ++ int min_ns_dots; ++ ++ /* Running in the iterator */ ++ bool iterating; ++ ++ /* current and previous state and librpz result */ ++ st_t st; ++ st_t saved_st[LIBRPZ_RSP_STACK_DEPTH-1]; ++ librpz_result_t result; ++ ++ /* Stop adding CNAMEs to the prepend list before this owner name. */ ++ librpz_domain_buf_t cname_hit; ++ /* It is not the first CNAME */ ++ bool cname_hit_2nd; ++ librpz_result_id_t hit_id; ++} commreply_rpz_t; ++ ++ ++/* Generate an ID for log messages. */ ++static int log_id; ++ ++librpz_t *librpz; ++ ++ ++static void LIBRPZ_NORET ++rpz_assert(const char *s) ++{ ++ fatal_exit("%s", s); ++ exit(1); ++} ++#define RPZ_ASSERT(c) ((c) ? (void)0 : rpz_assert(#c), (void)0) ++ ++/* ++ * librpz client handle locking ++ */ ++static void ++lock_destroy(void* mutex) ++{ ++ lock_basic_destroy(mutex); ++ free(mutex); ++} ++ ++static void ++lock(void* mutex) ++{ ++ lock_basic_lock(mutex); ++} ++ ++static void ++unlock(void* mutex) ++{ ++ lock_basic_unlock(mutex); ++} ++ ++ ++static void ++log_fnc(librpz_log_level_t level, void* ATTR_UNUSED(ctx), const char* buf) ++{ ++ char label_buf[sizeof("rpz ")+8]; ++ ++ /* Setting librpz_log_level overrides the unbound "verbose" level. */ ++ if(level > LIBRPZ_LOG_TRACE1 && ++ level <= librpz->log_level_val(LIBRPZ_LOG_INVALID)) ++ level = LIBRPZ_LOG_TRACE1; ++ ++ switch(level) { ++ case LIBRPZ_LOG_FATAL: ++ case LIBRPZ_LOG_ERROR: /* errors */ ++ default: ++ log_err("rpz: %s", buf); ++ break; ++ ++ case LIBRPZ_LOG_TRACE1: /* big events such as dnsrpzd starts */ ++ verbose(VERB_OPS, "rpz: %s", buf); ++ break; ++ ++ case LIBRPZ_LOG_TRACE2: /* smaller dnsrpzd zone transfers */ ++ verbose(VERB_DETAIL, "rpz: %s", buf); ++ break; ++ ++ case LIBRPZ_LOG_TRACE3: /* librpz hits */ ++ verbose(VERB_QUERY, "rpz: %s", buf); ++ break; ++ ++ case LIBRPZ_LOG_TRACE4: /* librpz lookups */ ++ verbose(VERB_CLIENT, "rpz: %s", buf); ++ break; ++ } ++} ++ ++ ++/* Release the librpz version. */ ++static void ++rpz_off(commreply_rpz_t* rpz, st_t st) ++{ ++ if(!rpz) ++ return; ++ rpz->st = st; ++ librpz->rsp_detach(&rpz->rsp); ++} ++ ++ ++static void LIBRPZ_PF(2,3) ++log_fail(commreply_rpz_t* rpz, const char* p, ...) ++{ ++ va_list args; ++ ++ if(rpz->st == st_servfail) ++ return; ++ ++ va_start(args, p); ++ librpz->vlog(LIBRPZ_LOG_ERROR, rpz, p, args); ++ va_end(args); ++ if(!rpz) ++ return; ++ rpz_off(rpz, st_servfail); ++} ++ ++ ++/* Announce a rewrite. */ ++static void ++log_rewrite(uint8_t* qname, librpz_policy_t policy, const char* msg, ++ commreply_rpz_t* rpz) ++{ ++ char policy_buf[POLICY2STR_SIZE]; ++ char qname_nm[LDNS_MAX_DOMAINLEN+1]; ++ librpz_domain_buf_t tdomain; ++ char tdomain_nm[LDNS_MAX_DOMAINLEN+1]; ++ librpz_emsg_t emsg; ++ ++ if(rpz->st == st_servfail || !rpz->result.log) ++ return; ++ if(librpz->log_level_val(LIBRPZ_LOG_INVALID) < LIBRPZ_LOG_TRACE1) ++ return; ++ ++ dname_str(qname, qname_nm); ++ ++ if(!librpz->rsp_domain(&emsg, &tdomain, rpz->rsp)) { ++ librpz->log(LIBRPZ_LOG_ERROR, rpz, "%s", emsg.c); ++ return; ++ } ++ dname_str(tdomain.d, tdomain_nm); ++ ++ librpz->log(LIBRPZ_LOG_TRACE3, rpz, "%srewriting %s via %s %s to %s", ++ msg, qname_nm, tdomain_nm, ++ librpz->trig2str(rpz->result.trig), ++ librpz->policy2str(policy, policy_buf, ++ sizeof(policy_buf))); ++} ++ ++ ++/* Connect to and start dnsrpzd if necessary for the unbound daemon. ++ * Require "rpz-conf: path" to specify the rpz configuration file. ++ * The unbound server directory name is the default rpz working ++ * directory. If unbound uses chroot, then the dnsrpzd working ++ * directory must be in the chroot tree. ++ * The database and socket are closed and re-opened. ++ */ ++void ++rpz_init(librpz_clist_t** pclist, librpz_client_t** pclient, ++ const struct config_file* cfg) ++{ ++ lock_basic_type* mutex; ++ librpz_emsg_t emsg; ++ ++ if(!librpz) { ++ librpz = librpz_lib_open(&emsg, NULL, FASTRPZ_LIBRPZ_PATH); ++ if(!librpz) ++ fatal_exit("rpz: %s", emsg.c); ++ } ++ ++ librpz->set_log(&log_fnc, NULL); ++ ++ if(!cfg->rpz_cstr) ++ fatal_exit("rpz: rpz-zone: not set"); ++ ++ librpz->client_detach(pclient); ++ librpz->clist_detach(pclist); ++ ++ mutex = malloc(sizeof(*mutex)); ++ if(!mutex) ++ fatal_exit("rpz: no memory for lock"); ++ lock_basic_init(mutex); ++ ++ *pclist = librpz->clist_create(&emsg, &lock, &unlock, &lock_destroy, ++ mutex, NULL); ++ if(!pclist) ++ fatal_exit("rpz: %s", emsg.c); ++ ++ *pclient = librpz->client_create(&emsg, *pclist, cfg->rpz_cstr, false); ++ if(!*pclient) ++ fatal_exit("rpz: %s", emsg.c); ++ ++ if(!librpz->connect(&emsg, *pclient, true)) ++ fatal_exit("rpz: %s", emsg.c); ++ ++ verbose(VERB_OPS, "rpz: librpz version %s", librpz->version); ++} ++ ++ ++/* Stop using librpz on behalf of a worker thread. */ ++void ++rpz_delete(librpz_clist_t** pclist, librpz_client_t** pclient) ++{ ++ if(librpz) { ++ librpz->client_detach(pclient); ++ librpz->clist_detach(pclist); ++ } ++} ++ ++ ++/* Release the librpz resources held for a DNS client request. */ ++void ++rpz_end(struct comm_reply* commreply) ++{ ++ if(!commreply->rpz) ++ return; ++ rpz_off(commreply->rpz, commreply->rpz->st); ++ free(commreply->rpz); ++ commreply->rpz = NULL; ++} ++ ++ ++static bool ++push_st(commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ if(rpz->st == st_off || rpz->st == st_servfail) { ++ librpz->log(LIBRPZ_LOG_ERROR, rpz, ++ "state %d in push_st()", rpz->st); ++ return false; ++ } ++ if(!librpz->rsp_push(&emsg, rpz->rsp)) ++ log_fail(rpz, "%s", emsg.c); ++ memmove(&rpz->saved_st[1], &rpz->saved_st[0], ++ sizeof(rpz->saved_st) - sizeof(rpz->saved_st[0])); ++ rpz->saved_st[0] = rpz->st; ++ return rpz->st != st_servfail; ++} ++ ++ ++static bool ++pop_st(commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ if(rpz->rsp && !librpz->rsp_pop(&emsg, &rpz->result, rpz->rsp)) ++ log_fail(rpz, "%s", emsg.c); ++ if(rpz->st != st_servfail) ++ rpz->st = rpz->saved_st[0]; ++ memmove(&rpz->saved_st[0], &rpz->saved_st[1], ++ sizeof(rpz->saved_st) - sizeof(rpz->saved_st[0])); ++ return rpz->st != st_servfail; ++} ++ ++static bool ++pop_discard_st(commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ if(rpz->rsp && !librpz->rsp_pop_discard(&emsg, rpz->rsp)) ++ log_fail(rpz, "%s", emsg.c); ++ memmove(&rpz->saved_st[0], &rpz->saved_st[1], ++ sizeof(rpz->saved_st) - sizeof(rpz->saved_st[0])); ++ return rpz->st != st_servfail; ++} ++ ++/* Check a rewrite attempt for errors and a disabled zone. */ ++static bool /* true=repeat the check */ ++ck_after(uint8_t* qname, bool recursed, librpz_trig_t trig, ++ commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ if(rpz->st == st_servfail) ++ return false; ++ ++ if(!librpz->rsp_result(&emsg, &rpz->result, recursed, rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ return false; ++ } ++ ++ if(rpz->result.policy == LIBRPZ_POLICY_DISABLED) { ++ /* Log the hit on the disabled zone, do not try the zone again, ++ * and restore the state from before the check to forget the hit ++ * before trying again. */ ++ log_rewrite(qname, rpz->result.zpolicy, "disabled ", rpz); ++ if(!librpz->rsp_forget_zone(&emsg, rpz->result.cznum, rpz->rsp)) ++ log_fail(rpz, "%s", emsg.c); ++ return pop_st(rpz); ++ } ++ ++ /* Complain about and forget client-IP address hit that is not ++ * dispositive. Client-IP triggers have the highest priority ++ * within a policy zone, but can be overridden by any hit in a policy ++ * earlier in the client's (resolver's) list of zones, including ++ * policies that cannot be hit until after recursion. If we allowed ++ * client-IP triggers in secondary zones, then than two DNS requests ++ * that differ only in DNS client-IP addresses could properly ++ * have differing results. The Unbound iterator treats identical ++ * DNS requests the same regardless of DNS client-IP address. ++ * struct query_info would need to be modified to have an optional ++ * librpz_prefix_t containing the prefix of the client-IP address hit ++ * from librpz->rsp_clientip_prefix(). Adding to struct query_info ++ * would require finding and changing the many and obscure places ++ * including the Unbound tests to memset(0) the struct query_info ++ * that they create. */ ++ if(trig == LIBRPZ_TRIG_CLIENT_IP) { ++ if(rpz->result.cznum != 0) { ++ log_rewrite(qname, rpz->result.policy, ++ "ignore secondary ", rpz); ++ if(!pop_st(rpz)) ++ log_fail(rpz, "%s", emsg.c); ++ return (false); ++ } ++ } ++ ++ /* Forget the state from before the check and keep the new state ++ * if we do not have a hit on a disabled policy zone. */ ++ pop_discard_st(rpz); ++ return false; ++} ++ ++ ++/* Get the next RR from the policy record. */ ++static bool ++next_rr(librpz_rr_t** rrp, const uint8_t* qname, size_t qname_len, ++ commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ if(!librpz->rsp_rr(&emsg, NULL, NULL, NULL, rrp, &rpz->result, ++ qname, qname_len, rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ *rrp = NULL; ++ return false; ++ } ++ return true; ++} ++ ++ ++static bool /* false=fatal error to be logged */ ++add_rr(struct sldns_buffer* pkt, const uint8_t* owner, size_t owner_len, ++ librpz_rr_t* rr, commreply_rpz_t* rpz) ++{ ++ size_t rdlength; ++ ++ rdlength = ntohs(rr->rdlength); ++ ++ if(!sldns_buffer_available(pkt, owner_len + 10 + rdlength)) { ++ log_fail(rpz, "comm_reply buffer exhausted"); ++ free(rr); ++ return false; ++ } ++ sldns_buffer_write(pkt, owner, owner_len); ++ /* sizeof(librpz_rr_t)=12 instead of 10 */ ++ sldns_buffer_write(pkt, rr, 10 + rdlength); ++ return true; ++} ++ ++ ++/* Convert a fake incoming DNS message to an Unbound struct dns_msg */ ++static void ++pkt2dns_msg(struct dns_msg** dnsmsg, struct sldns_buffer* pkt, ++ commreply_rpz_t* rpz, struct regional* region) ++{ ++ struct msg_parse* msgparse; ++ ++ msgparse = regional_alloc(region, sizeof(*msgparse)); ++ if(!msgparse) { ++ log_fail(rpz, "out of memory for msgparse"); ++ *dnsmsg = NULL; ++ return; ++ } ++ memset(msgparse, 0, sizeof(*msgparse)); ++ if(parse_packet(pkt, msgparse, region) != LDNS_RCODE_NOERROR) { ++ log_fail(rpz, "packet parse error"); ++ *dnsmsg = NULL; ++ return; ++ } ++ *dnsmsg = dns_alloc_msg(pkt, msgparse, region); ++ if(!*dnsmsg) { ++ log_fail(rpz, "dns_alloc_msg() failed"); ++ *dnsmsg = NULL; ++ return; ++ } ++ (*dnsmsg)->rep->security = sec_status_rpz_rewritten; ++} ++ ++ ++static bool /* false=SERVFAIL */ ++ck_ip_rrset(const void* vdata, int family, librpz_trig_t trig, ++ uint8_t* qname, commreply_rpz_t* rpz) ++{ ++ const struct packed_rrset_data* data; ++ uint rr_n; ++ size_t len; ++ librpz_emsg_t emsg; ++ ++ data = vdata; ++ ++ /* Loop to ignore disabled zones. */ ++ do { ++ if(!push_st(rpz)) ++ return false; ++ for(rr_n = 0; rr_n < data->count; ++rr_n) { ++ len = data->rr_len[rr_n]; ++ /* Skip bogus including negative placeholding rdata. */ ++ if((family == AF_INET && ++ len != sizeof(struct in_addr)+2) || ++ (family == AF_INET6 && ++ len != sizeof(struct in6_addr)+2)) ++ continue; ++ if(!librpz->ck_ip(&emsg, data->rr_data[rr_n]+2, ++ family, trig, rpz->hit_id, true, ++ rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ return false; ++ } ++ } ++ } while(ck_after(qname, true, trig, rpz)); ++ return rpz->st != st_servfail; ++} ++ ++ ++static bool /* false=SERVFAIL */ ++ck_dname(uint8_t* dname, size_t dname_size, librpz_trig_t trig, ++ uint8_t* qname, bool recursed, commreply_rpz_t* rpz) ++{ ++ librpz_emsg_t emsg; ++ ++ /* Refuse to check the root. */ ++ if(dname_is_root(dname)) ++ return rpz->st != st_servfail; ++ ++ /* Loop to ignore disabled zones. */ ++ do { ++ if(!push_st(rpz)) ++ return false; ++ if(!librpz->ck_domain(&emsg, dname, dname_size, trig, ++ rpz->hit_id, recursed, rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ return false; ++ } ++ } while(ck_after(qname, recursed, trig, rpz)); ++ ++ return rpz->st != st_servfail; ++} ++ ++ ++/* Check the IPv4 or IPv6 addresses for one NS name. */ ++static bool /* false=st_servfail */ ++ck_1nsip(uint8_t* nsname, size_t nsname_size, int family, int qtype, ++ bool* have_ns, commreply_rpz_t* rpz, struct module_env* env) ++{ ++ struct ub_packed_rrset_key* akey; ++ ++ akey = rrset_cache_lookup(env->rrset_cache, nsname, nsname_size, ++ qtype, LDNS_RR_CLASS_IN, 0, 0, 0); ++ if(akey) { ++ *have_ns = true; ++ ++ if(!ck_ip_rrset(akey->entry.data, family, LIBRPZ_TRIG_NSIP, ++ nsname, rpz)) { ++ lock_rw_unlock(&akey->entry.lock); ++ return false; ++ } ++ lock_rw_unlock(&akey->entry.lock); ++ } ++ return true; ++} ++ ++ ++static bool /* false=st_servfail */ ++ck_qname(uint8_t* qname, size_t qname_len, ++ bool recursed, /* recursion done */ ++ bool wait_ns, /* willing to iterate for NS data */ ++ commreply_rpz_t* rpz, struct module_env* env) ++{ ++ uint8_t* dname; ++ size_t dname_size; ++ int cur_lab; ++ struct ub_packed_rrset_key* nskey; ++ const struct packed_rrset_data* nsdata; ++ uint8_t* nsname; ++ size_t nsname_size; ++ uint rr_n; ++ bool have_ns, tried_ns; ++ ++ if(!ck_dname(qname, qname_len, LIBRPZ_TRIG_QNAME, qname, false, rpz)) ++ return false; ++ ++ /* Do not waste time looking for NSDNAME and NSIP hits when there ++ * are no currently relevant triggers. */ ++ if(!librpz->have_ns_trig(rpz->rsp)) ++ return true; ++ ++ have_ns = false; ++ tried_ns = false; ++ dname = qname; ++ dname_size = qname_len; ++ for(cur_lab = dname_count_labels(dname) - 2; ++ cur_lab > rpz->min_ns_dots; ++ --cur_lab) { ++ tried_ns = true; ++ dname_remove_label(&dname, &dname_size); ++ nskey = rrset_cache_lookup(env->rrset_cache, dname, dname_size, ++ LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN, ++ 0, 0, 0); ++ if(!nskey) ++ continue; ++ ++ nsdata = (const struct packed_rrset_data*)nskey->entry.data; ++ for(rr_n = 0; ++ rr_n < nsdata->count && rpz->st == st_unknown; ++ ++rr_n) { ++ nsname = nsdata->rr_data[rr_n]+2; ++ nsname_size = nsdata->rr_len[rr_n]; ++ if(nsname_size <= 2) ++ continue; ++ nsname_size -= 2; ++ if(!ck_dname(nsname, nsname_size, LIBRPZ_TRIG_NSDNAME, ++ qname, recursed, rpz)) ++ return false; ++ if(!ck_1nsip(nsname, nsname_size, AF_INET, ++ LDNS_RR_TYPE_A, &have_ns, rpz, env)) ++ return false; ++ if(!ck_1nsip(nsname, nsname_size, AF_INET6, ++ LDNS_RR_TYPE_AAAA, &have_ns, rpz, env)) ++ return false; ++ } ++ lock_rw_unlock(&nskey->entry.lock); ++ } ++ ++ /* If we failed to find NS records, then stop building the response ++ * before a CNAME with this owner name. */ ++ if(!have_ns && tried_ns && (!recursed || wait_ns)) { ++ rpz->cname_hit.size = qname_len; ++ RPZ_ASSERT(rpz->cname_hit.size <= sizeof(rpz->cname_hit.d)); ++ memcpy(rpz->cname_hit.d, qname, qname_len); ++ rpz->result.hit_id = rpz->hit_id; ++ rpz->st = st_ck_ns; ++ } ++ return true; ++} ++ ++ ++/* ++ * Are we ready to rewrite the response? ++ */ ++static bool /* true=send rewritten response */ ++ck_result(uint8_t* qname, bool recursed, ++ commreply_rpz_t* rpz, const struct comm_point* commpoint) ++{ ++ librpz_emsg_t emsg; ++ ++ switch(rpz->st) { ++ case st_off: ++ case st_servfail: ++ case st_rewritten: ++ return false; ++ case st_unknown: ++ break; ++ case st_iterate: ++ return false; ++ case st_ck_ns: ++ /* An NSDNAME or NSIP check failed for lack of cached data. */ ++ return false; ++#pragma clang diagnostic push ++#pragma clang diagnostic ignored "-Wunreachable-code" ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_worker_cache()", ++ rpz->st); ++#pragma clang diagnostic pop ++ } ++ ++ /* Wait for a trigger. */ ++ if(rpz->result.policy == LIBRPZ_POLICY_UNDEFINED) { ++ if(recursed && ++ rpz->result.zpolicy != LIBRPZ_POLICY_UNDEFINED && ++ !librpz->rsp_result(&emsg, &rpz->result, true, rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ return false; ++ } ++ if(rpz->result.policy == LIBRPZ_POLICY_UNDEFINED) ++ return false; ++ } ++ ++ if(rpz->result.policy == LIBRPZ_POLICY_PASSTHRU) { ++ log_rewrite(qname, rpz->result.policy, "", rpz); ++ rpz_off(rpz, st_off); ++ return false; ++ } ++ ++ /* The TCP-only policy answers UDP requests with truncated responses. */ ++ if(rpz->result.policy == LIBRPZ_POLICY_TCP_ONLY && ++ commpoint->type == comm_tcp) { ++ rpz_off(rpz, st_off); ++ return false; ++ } ++ ++ return true; ++} ++ ++ ++/* ++ * Convert an RPZ hit to a struct dns_msg ++ */ ++static void ++get_result_msg(struct dns_msg** dnsmsg, struct query_info* qinfo, ++ uint16_t id, uint16_t flags, bool recursed, commreply_rpz_t* rpz, ++ struct comm_point* commpoint, struct regional* region) ++{ ++ librpz_rr_t* rr; ++ librpz_domain_buf_t origin; ++ struct sldns_buffer* pkt; ++ uint16_t num_rrs; ++ librpz_emsg_t emsg; ++ ++ *dnsmsg = NULL; ++ if(!ck_result(qinfo->qname, recursed, rpz, commpoint)) ++ return; ++ ++ rpz->st = st_rewritten; ++ ++ if(rpz->result.policy == LIBRPZ_POLICY_DROP) { ++ log_rewrite(qinfo->qname, rpz->result.policy, "", rpz); ++ /* Make a fake cached message to carry ++ * sec_status_rpz_drop and be dropped. */ ++ error_encode(commpoint->buffer, LDNS_RCODE_NOERROR, ++ qinfo, id, flags, NULL); ++ pkt2dns_msg(dnsmsg, commpoint->buffer, rpz, region); ++ (*dnsmsg)->rep->security = sec_status_rpz_drop; ++ return; ++ } ++ ++ /* Create a DNS message of the RPZ data. ++ * In many cases that message could be sent directly to the DNS client, ++ * but sometimes iteration must be used to resolve a CNAME. ++ * This need not be fast, because rewriting responses should be rare. ++ * Therefore, use the simpler but slower tactic of generating a ++ * parsed version of the message. */ ++ ++ flags &= ~BIT_AA; ++ flags |= BIT_QR | BIT_RA; ++ rr = NULL; ++ ++ /* The TCP-only policy answers UDP requests with truncated responses. */ ++ if(rpz->result.policy == LIBRPZ_POLICY_TCP_ONLY) { ++ flags |= BIT_TC; ++ ++ } else if(rpz->result.policy == LIBRPZ_POLICY_NXDOMAIN) { ++ flags |= LDNS_RCODE_NXDOMAIN; ++ ++ } else if(rpz->result.policy == LIBRPZ_POLICY_CNAME) { ++ if(!rpz->iterating && ++ qinfo->qtype != LDNS_RR_TYPE_CNAME) { ++ /* The new DNS message would be a CNAME and ++ * the external request was not for a CNAME. ++ * The worker must punt to the iterator so that ++ * the iterator can resolve the CNAME. */ ++ rpz->st = st_iterate; ++ return; ++ } ++ next_rr(&rr, qinfo->qname, qinfo->qname_len, rpz); ++ ++ } else if(rpz->result.policy == LIBRPZ_POLICY_RECORD || ++ rpz->result.policy == LIBRPZ_POLICY_NODATA) { ++ next_rr(&rr, qinfo->qname, qinfo->qname_len, rpz); ++ /* Punt to the iterator if the new DNS message would ++ * be a CNAME that must be resolved. */ ++ if(!rpz->iterating && ++ qinfo->qtype != LDNS_RR_TYPE_CNAME && ++ rr && rr->type == ntohs(LDNS_RR_TYPE_CNAME)) { ++ free(rr); ++ rpz->st = st_iterate; ++ return; ++ } ++ } ++ log_rewrite(qinfo->qname, rpz->result.policy, "", rpz); ++ ++ /* Make a buffer containing a DNS message with the RPZ data. */ ++ pkt = commpoint->buffer; ++ sldns_buffer_clear(pkt); ++ if(sldns_buffer_remaining(pkt) < LDNS_HEADER_SIZE) { ++ log_fail(rpz, "comm_reply buffer too small for header"); ++ if(rr) ++ free(rr); ++ return; ++ } ++ ++ /* Install ID, flags, QDCOUNT=1, ANCOUNT=# of RPZ RRs, NSCOUNT=0, ++ * and ARCOUNT=1 for the RPZ SOA. */ ++ sldns_buffer_write_u16(pkt, id); ++ sldns_buffer_write_u16(pkt, flags); ++ sldns_buffer_write_u16(pkt, 1); /* QDCOUNT */ ++ sldns_buffer_write_u16(pkt, 0); /* ANCOUNT will be set later */ ++ sldns_buffer_write_u16(pkt, 0); /* NSCOUNT */ ++ sldns_buffer_write_u16(pkt, 1); /* ARCOUNT */ ++ ++ /* Install the question with the LDNS_RR_CLASS_RPZ bit to ++ * to distinguish this supposed cache entry from the real deal. */ ++ sldns_buffer_write(pkt, qinfo->qname, qinfo->qname_len); ++ sldns_buffer_write_u16(pkt, qinfo->qtype); ++ sldns_buffer_write_u16(pkt, LDNS_RR_CLASS_IN); ++ ++ /* Install the RPZ RRs in the answer section */ ++ num_rrs = 0; ++ while(rr) { ++ /* Include only the requested RRs. */ ++ if(qinfo->qtype == LDNS_RR_TYPE_ANY || ++ rr->type == htons(qinfo->qtype) || ++ rr->type == htons(LDNS_RR_TYPE_CNAME)) { ++ if(!add_rr(pkt, qinfo->qname, qinfo->qname_len, ++ rr, rpz)) ++ return; ++ ++ ++num_rrs; ++ } ++ free(rr); ++ ++ next_rr(&rr, qinfo->qname, qinfo->qname_len, rpz); ++ } ++ /* Finish ANCOUNT. */ ++ if(num_rrs != 0) ++ sldns_buffer_write_u16_at(pkt, 6, num_rrs); ++ ++ /* All rewritten responses have an identifying SOA record in the ++ * additional section. */ ++ if(!librpz->rsp_soa(&emsg, NULL, &rr, &origin, ++ &rpz->result, rpz->rsp)) { ++ log_fail(rpz, "no soa"); ++ return; ++ } ++ if(!add_rr(pkt, origin.d, origin.size, rr, rpz)) ++ return; ++ free(rr); ++ ++ /* Create a dns_msg representation of the fake incoming message. */ ++ sldns_buffer_flip(pkt); ++ pkt2dns_msg(dnsmsg, pkt, rpz, region); ++} ++ ++ ++/* Check the RRs in the ANSWER section of a reply_info. */ ++static void ++ck_reply(struct reply_info* reply, uint8_t* qname, bool wait_ns, ++ commreply_rpz_t* rpz, struct module_env* env) ++{ ++ struct ub_packed_rrset_key* rrset; ++ enum sldns_enum_rr_type type; ++ uint rrset_n; ++ ++ /* Check the RRs in the ANSWER section. */ ++ rpz->cname_hit.size = 0; ++ rpz->cname_hit_2nd = false; ++ for(rrset_n = 0; rrset_n < reply->an_numrrsets; ++rrset_n) { ++ /* Check all of the RRs before deciding. */ ++ if(rpz->st != st_unknown) ++ return; ++ ++ rrset = reply->rrsets[rrset_n]; ++ if(ntohs(rrset->rk.rrset_class) != LDNS_RR_CLASS_IN) ++ continue; ++ type = ntohs(rrset->rk.type); ++ ++ if(type == LDNS_RR_TYPE_A) { ++ if(!ck_ip_rrset(rrset->entry.data, AF_INET, ++ LIBRPZ_TRIG_IP, qname, rpz)) ++ break; ++ ++ } else if(type == LDNS_RR_TYPE_AAAA) { ++ if(!ck_ip_rrset(rrset->entry.data, AF_INET6, ++ LIBRPZ_TRIG_IP, qname, rpz)) ++ break; ++ ++ } else if(type == LDNS_RR_TYPE_CNAME) { ++ /* Check CNAME owners unless we already have a hit. */ ++ ++rpz->hit_id; ++ if(!ck_qname(rrset->rk.dname, rrset->rk.dname_len, ++ true, wait_ns, rpz, env)) ++ break; ++ ++ /* Do not worry about the CNAME if it did not hit, ++ * but note the miss so that it can be prepended ++ * if we do hit. */ ++ if(rpz->result.hit_id != rpz->hit_id) { ++ rpz->cname_hit_2nd = true; ++ continue; ++ } ++ ++ /* Stop after hitting a CNAME. ++ * The iterator must be used to include CNAMEs before ++ * the CNAME that hit in the rewritten response. */ ++ rpz->cname_hit.size = rrset->rk.dname_len; ++ RPZ_ASSERT(rpz->cname_hit.size <= sizeof(rpz->cname_hit.d)); ++ memcpy(rpz->cname_hit.d, rrset->rk.dname, ++ rpz->cname_hit.size); ++ break; ++ } ++ } ++} ++ ++ ++static void ++worker_servfail(struct worker* worker, struct query_info* qinfo, ++ uint16_t id, uint16_t flags, struct comm_reply* commreply) ++{ ++ error_encode(commreply->c->buffer, LDNS_RCODE_SERVFAIL, ++ qinfo, id, flags, NULL); ++ regional_free_all(worker->scratchpad); ++ comm_point_send_reply(commreply); ++} ++ ++ ++/* Send an RPZ answer before the iterator has started. ++ * @return: 1=continue normal unbound processing ++ * 0=punt to the iterator ++ * -1=rewritten response already sent or dropped. */ ++static int ++worker_send(struct dns_msg* dnsmsg, struct worker* worker, ++ struct query_info* qinfo, uint16_t id, uint16_t flags, ++ struct edns_data* edns, struct comm_reply* commreply) ++{ ++ switch (commreply->rpz->st) { ++ case st_off: ++ return 1; ++ case st_servfail: ++ worker_servfail(worker, qinfo, id, flags, commreply); ++ return -1; ++ case st_unknown: ++ return 1; ++ case st_iterate: ++ case st_ck_ns: ++ return 0; /* punt to the iterator */ ++ case st_rewritten: ++ break; ++ default: ++ fatal_exit("impossible RPZ state %d in worker_send()", ++ commreply->rpz->st); ++ } ++ ++ if(dnsmsg->rep->security == sec_status_rpz_drop) { ++ regional_free_all(worker->scratchpad); ++ comm_point_drop_reply(commreply); ++ return -1; ++ } ++ ++ edns->edns_version = EDNS_ADVERTISED_VERSION; ++ edns->udp_size = EDNS_ADVERTISED_SIZE; ++ edns->ext_rcode = 0; ++ edns->bits = 0; /* rewritten response cannot verify. */ ++ if(!reply_info_answer_encode(qinfo, dnsmsg->rep, ++ id, flags | BIT_QR, ++ commreply->c->buffer, 0, 1, ++ worker->scratchpad, ++ edns->udp_size, edns, 0, 0)) { ++ worker_servfail(worker, qinfo, id, flags, commreply); ++ } else { ++ regional_free_all(worker->scratchpad); ++ comm_point_send_reply(commreply); ++ } ++ return -1; ++} ++ ++ ++/* Set commreply to an RPZ context if the response might be rewritten. ++ * Try to answer now with a hit allowed before recursion (iteration). */ ++bool /* true=response sent or dropped */ ++rpz_start(struct worker* worker, struct query_info* qinfo, ++ struct comm_reply* commreply, struct edns_data* edns) ++{ ++ commreply_rpz_t* rpz; ++ uint16_t id, flags; ++ struct dns_msg* dnsmsg; ++ int family; ++ const void* addr; ++ librpz_emsg_t emsg; ++ ++ /* Quit if rpz not configured. */ ++ if(!worker->daemon->rpz_client) ++ return false; ++ ++ /* Rewrite only the Internet class */ ++ if(qinfo->qclass != LDNS_RR_CLASS_IN) ++ return false; ++ ++ rpz = commreply->rpz; ++ RPZ_ASSERT(!rpz); ++ ++ dnsmsg = NULL; ++ id = htons(sldns_buffer_read_u16_at(commreply->c->buffer, 0)); ++ flags = sldns_buffer_read_u16_at(commreply->c->buffer, 2); ++ ++ rpz = malloc(sizeof(*rpz)); ++ if(!rpz) { ++ librpz->log(LIBRPZ_LOG_ERROR, NULL, "no memory for rpz"); ++ return 0 > worker_send(dnsmsg, worker, qinfo, ++ id, flags, edns, commreply); ++ } ++ memset(rpz, 0, sizeof(*rpz)); ++ rpz->st = st_unknown; ++ commreply->rpz = rpz; ++ ++ /* Make a new ID for log messages */ ++ rpz->log_id = __sync_add_and_fetch(&log_id, 1); ++ ++ /* Get access to the librpz data. */ ++ if(!librpz->rsp_create(&emsg, &rpz->rsp, &rpz->min_ns_dots, ++ worker->daemon->rpz_client, ++ (flags & BIT_RD) != 0, ++ (edns->bits & EDNS_DO) != 0)) { ++ log_fail(rpz, "%s", emsg.c); ++ return false; ++ } ++ /* Quit if benign reasons prevent rewriting. */ ++ if(!rpz->rsp) { ++ rpz->st = st_off; ++ librpz->log(LIBRPZ_LOG_TRACE1, rpz, "%s", emsg.c); ++ return false; ++ } ++ ++ /* Check the client IP address. ++ * Do not use commreply->srctype because it is often 0. */ ++ family = ((struct sockaddr*)&commreply->addr)->sa_family; ++ switch(family) { ++ case AF_INET: ++ addr = &((struct sockaddr_in*)&commreply->addr)->sin_addr; ++ break; ++ case AF_INET6: ++ addr = &((struct sockaddr_in6*)&commreply->addr)->sin6_addr; ++ break; ++ default: ++ /* Maybe the client is on a UNIX domain socket. */ ++ librpz->log(LIBRPZ_LOG_TRACE2, rpz, ++ "unknown client address family %d", family); ++ addr = NULL; ++ break; ++ } ++ /* Loop to ignore disabled zones. */ ++ while(addr) { ++ if(!push_st(rpz)) ++ break; ++ if(!librpz->ck_ip(&emsg, addr, family, LIBRPZ_TRIG_CLIENT_IP, ++ rpz->hit_id, true, rpz->rsp)) { ++ log_fail(rpz, "%s", emsg.c); ++ break; ++ } ++ if(!ck_after(qinfo->qname, false, LIBRPZ_TRIG_CLIENT_IP, rpz)) ++ break; ++ } ++ if(rpz->st == st_servfail) ++ return 0 > worker_send(dnsmsg, worker, qinfo, ++ id, flags, edns, commreply); ++ ++ /* Check the QNAME and possibly replace a client-IP hit. */ ++ ck_qname(qinfo->qname, qinfo->qname_len, false, true, ++ rpz, &worker->env); ++ ++ get_result_msg(&dnsmsg, qinfo, id, flags, false, ++ rpz, commreply->c, worker->scratchpad); ++ return 0 > worker_send(dnsmsg, worker, qinfo, ++ id, flags, edns, commreply); ++} ++ ++ ++/* Check a cached reply before iteration. ++ * @return: 1=use cache entry ++ * 0=deny a cached entry exists in order to punt to the iterator ++ * -1=rewritten response already sent or dropped */ ++int ++rpz_worker_cache(struct worker* worker, struct reply_info* reply, ++ struct query_info* qinfo, uint16_t id, uint16_t flags, ++ struct edns_data* edns, struct comm_reply* commreply) ++{ ++ commreply_rpz_t* rpz; ++ struct dns_msg* dnsmsg; ++ st_t new_st; ++ librpz_rr_t* rr; ++ ++ dnsmsg = NULL; ++ ++ rpz = commreply->rpz; ++ switch(rpz->st) { ++ case st_off: ++ return 1; /* Send the cache entry. */ ++ case st_servfail: ++ return worker_send(dnsmsg, worker, qinfo, id, flags, ++ edns, commreply); ++ case st_unknown: ++ break; ++ case st_iterate: ++ case st_ck_ns: ++ return 0; /* Punt to the iterator. */ ++ case st_rewritten: ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_worker_cache()", ++ rpz->st); ++ } ++ ++ /* Check the RRs in the ANSWER section. */ ++ if(!push_st(rpz)) ++ return worker_send(dnsmsg, worker, qinfo, id, flags, edns, ++ commreply); ++ ++ ck_reply(reply, qinfo->qname, true, rpz, &worker->env); ++ if(!ck_result(qinfo->qname, true, rpz, commreply->c)) ++ return worker_send(dnsmsg, worker, qinfo, id, flags, edns, ++ commreply); ++ ++ if(rpz->cname_hit.size != 0) { ++ /* Punt to the iterator if leading CNAMEs must be ++ * included in the rewritten response. */ ++ rpz->cname_hit.size = 0; ++ new_st = st_iterate; ++ ++ } else if(rpz->result.policy == LIBRPZ_POLICY_CNAME) { ++ /* Punt if the rewritten response is to a CNAME. */ ++ new_st = st_iterate; ++ ++ } else { ++ if(rpz->result.policy == LIBRPZ_POLICY_RECORD) { ++ next_rr(&rr, qinfo->qname, qinfo->qname_len, rpz); ++ if(rr) { ++ /* Punt we are rewriting to a CNAME. */ ++ if(rr->type == ntohs(LDNS_RR_TYPE_CNAME)) { ++ free(rr); ++ rpz->st = st_iterate; ++ } else { ++ free(rr); ++ } ++ } ++ } ++ get_result_msg(&dnsmsg, qinfo, id, flags, true, ++ rpz, commreply->c, worker->scratchpad); ++ new_st = rpz->st; ++ } ++ ++ switch(new_st) { ++ case st_off: ++ case st_servfail: ++ break; ++ case st_unknown: ++ pop_discard_st(rpz); ++ break; ++ case st_iterate: ++ case st_ck_ns: ++ if(pop_st(rpz)) ++ rpz->st = new_st; ++ break; ++ case st_rewritten: ++ pop_discard_st(rpz); ++ break; ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_worker_cache()", ++ rpz->st); ++ } ++ ++ return worker_send(dnsmsg, worker, qinfo, id, flags, edns, commreply); ++} ++ ++ ++/* Check a cache hit or miss for the iterator. ++ * A cache miss can already have a QNAME hit that was ignored before checking ++ * the iterator because of "QNAME-WAIT-RECURSE yes". ++ * Cache hits are treated like responses from authorities. */ ++bool /* false=SERVFAIL */ ++rpz_iter_cache(struct dns_msg** msg, enum response_type* type, ++ struct module_qstate* qstate, struct iter_qstate* iq) ++{ ++ struct comm_reply* commreply; ++ commreply_rpz_t* rpz; ++ struct dns_msg* dnsmsg; ++ ++ commreply = &qstate->mesh_info->reply_list->query_reply; ++ rpz = commreply->rpz; ++ ++ rpz->iterating = true; ++ ++ switch(rpz->st) { ++ case st_off: ++ iq->rpz_rewritten = 1; /* RPZ has nothing to say. */ ++ return true; ++ case st_servfail: ++ return false; ++ case st_unknown: ++ break; ++ case st_iterate: ++ case st_ck_ns: ++ rpz->st = st_unknown; ++ if(!ck_qname(iq->qchase.qname, iq->qchase.qname_len, ++ *msg != NULL, true, rpz, qstate->env)) ++ return false; ++ /* If we must recurse regardless and if NSIP/NSDNAME ++ * checking failed, then delay in the hope that ++ * recursion will also get NS data. */ ++ if(rpz->st == st_ck_ns) ++ return true; ++ break; ++ case st_rewritten: ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_iter_cache()", ++ rpz->st); ++ } ++ ++ push_st(rpz); ++ ++ /* Check the cache hit. */ ++ if(*msg) ++ ck_reply((*msg)->rep, iq->qchase.qname, true, rpz, qstate->env); ++ ++ /* The DNS ID does not matter, because the generated dns_msg ++ * is nominally from an authority and not to the DNS client. */ ++ get_result_msg(&dnsmsg, &iq->qchase, 1, qstate->query_flags, true, ++ rpz, commreply->c, qstate->region); ++ ++ switch(rpz->st) { ++ case st_off: ++ iq->rpz_rewritten = 1; /* RPZ has nothing to say. */ ++ return true; ++ case st_servfail: ++ return false; ++ case st_unknown: ++ /* RPZ has nothing to say yet. Maybe there will be a hit ++ * later in the CNAME chain. */ ++ return pop_discard_st(rpz); ++ case st_ck_ns: ++ /* Try to get NS data for a CNAME found by ck_reply() */ ++ *type = RESPONSE_TYPE_CNAME; ++ return pop_discard_st(rpz); ++ case st_iterate: ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_iter_cache()", ++ rpz->st); ++ case st_rewritten: ++ break; ++ } ++ ++ if(*msg && rpz->cname_hit.size != 0 && rpz->cname_hit_2nd) { ++ /* We hit a CNAME owner in the cached msg after not hitting one ++ * or more CNAME owners. We need to add those leading CNAMEs ++ * to the prepend list. Tell the iterator to treat the cached ++ * message as a RESPONSE_TYPE_CNAME even if it contains answers. ++ * handle_cname_response() will stop prepending CNAMEs before ++ * the triggering CNAME. handle_cname_response() will cause ++ * a restart to resolve the target of the preceding CNAME, ++ * which is the same as the hit CNAME owner. */ ++ rpz->st = st_unknown; ++ *type = RESPONSE_TYPE_CNAME; ++ return pop_discard_st(rpz); ++ } ++ ++ *msg = dnsmsg; ++ iq->rpz_security = dnsmsg->rep->security; ++ ++ if(dnsmsg && dnsmsg->rep->an_numrrsets != 0 && ++ dnsmsg->rep->rrsets[0]->rk.type == htons(LDNS_RR_TYPE_CNAME)) { ++ /* The cached msg triggered a rule that rewrites to a ++ * CNAME that must be resolved. ++ * We have a replacement dns_msg with that CNAME and also ++ * an SOA RR in the ADDITIONAL section that the iterator ++ * will lose as it adds the CNAME to the prepend list. ++ * Save the SOA RR in iq->rpz_soa. */ ++ iq->rpz_soa = dnsmsg->rep->rrsets[1]; ++ iq->rpz_rewritten = 1; ++ *type = RESPONSE_TYPE_CNAME; ++ return true; ++ } ++ ++ /* Otherwise we have rewritten to zero or more non-CNAME RRs. ++ * (DNAMEs are not supported.) ++ * Tell the iterator to send the rewritten message. */ ++ *type = RESPONSE_TYPE_ANSWER; ++ iq->rpz_rewritten = 1; ++ return true; ++} ++ ++ ++/* Check a RESPONSE_TYPE_ANSWER response from an authority in the iterator. */ ++rpz_iter_resp_t ++rpz_iter_resp(struct module_qstate* qstate, struct iter_qstate* iq, ++ struct dns_msg** resp, bool* is_cname) ++{ ++ struct comm_reply* commreply; ++ commreply_rpz_t* rpz; ++ struct reply_info* rep; ++ ++ *is_cname = false; ++ ++ commreply = &qstate->mesh_info->reply_list->query_reply; ++ rpz = commreply->rpz; ++ switch(rpz->st) { ++ case st_off: ++ case st_servfail: ++ case st_iterate: ++ case st_rewritten: ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_iter_resp()", ++ rpz->st); ++ case st_ck_ns: ++ case st_unknown: ++ break; ++ } ++ ++ /* We know !iq->rpz_rewritten and so the response was after a simple ++ * cache miss when the original QNAME did not trigger a response ++ * or after a CNAME whose owner name did hit but was then forgotten ++ * with pop_st(). ++ * In either case, it is necessary to check the QNAME here. ++ * Checking the QNAME will not lose a better hit. */ ++ rpz->st = st_unknown; ++ ck_qname(iq->qchase.qname, iq->qchase.qname_len, true, false, ++ rpz, qstate->env); ++ ++ /* Check the RRs in the ANSWER section. */ ++ if(!push_st(rpz)) ++ return rpz_iter_resp_fail; ++ ck_reply(iq->response->rep, iq->qchase.qname, false, rpz, qstate->env); ++ get_result_msg(resp, &qstate->qinfo, 1, qstate->query_flags, true, ++ rpz, commreply->c, qstate->region); ++ switch(rpz->st) { ++ case st_off: ++ iq->rpz_rewritten = 1; /* Do not come back. */ ++ return rpz_iter_resp_done; ++ case st_servfail: /* Send SERVFAIL */ ++ return rpz_iter_resp_fail; ++ case st_unknown: ++ case st_ck_ns: ++ return rpz_iter_resp_done; /* continue without change */ ++ case st_iterate: ++ default: ++ fatal_exit("impossible RPZ state %d in rpz_iter_resp()", ++ rpz->st); ++ case st_rewritten: ++ /* Tell the iterator to use handle_cname_response() to ++ * prepend any preceding CNAMEs. ++ * We have a replacement dns_msg that also has an SOA RR in the ++ * ADDITIONAL section that the iterator will lose if it is a ++ * CNAME. Save that SOA in that case. */ ++ rep = (*resp)->rep; ++ if(rep->an_numrrsets != 0 && ++ rep->rrsets[0]->rk.type == ntohs(LDNS_RR_TYPE_CNAME)) { ++ *is_cname = true; ++ iq->rpz_soa = rep->rrsets[1]; ++ } ++ return rpz_iter_resp_rewrite; ++ } ++} ++ ++ ++/* Tell handle_cname_response() to stop adding to the answer prepend list ++ * after adding CNAME with a target that hits a QNAME trigger. ++ * Do not change any RPZ state, but expect the call of handle_cname_response() ++ * to try to resolve the CNAME and hit the same QNAME trigger and rewrite ++ * the response. */ ++rpz_cname_t ++rpz_cname(struct module_qstate* qstate, ++ uint8_t* oname, size_t oname_size) ++{ ++ struct mesh_reply* reply_list; ++ struct comm_reply* commreply; ++ commreply_rpz_t* rpz; ++ rpz_cname_t ret; ++ ++ /* Quit if RPZ is off */ ++ reply_list = qstate->mesh_info->reply_list; ++ if(!reply_list) ++ return rpz_cname_prepend; ++ commreply = &reply_list->query_reply; ++ rpz = commreply->rpz; ++ ++ if(!rpz || rpz->st == st_off) ++ return rpz_cname_prepend; ++ ++ /* Stop on a 2nd or later CNAME for rpz_iter_resp(). */ ++ if(rpz->cname_hit.size != 0) { ++ if(!query_dname_compare(rpz->cname_hit.d, oname)) ++ return rpz_cname_stop; ++ return rpz_cname_prepend; ++ } ++ ++ if(rpz->st != st_unknown) ++ fatal_exit("impossible RPZ state %d in rpz_cname()", rpz->st); ++ ++ ret = rpz_cname_prepend; ++ if(!push_st(rpz)) ++ return rpz_cname_fail; ++ /* Stop before prepending a CNAME that would preempt a ++ * rewritten response or before a possible NSDNAME or NSIP trigger. */ ++ ++rpz->hit_id; ++ ck_qname(oname, oname_size, true, true, rpz, qstate->env); ++ if(rpz->st != st_unknown) ++ ret = rpz_cname_stop; ++ if(!pop_st(rpz)) ++ return rpz_cname_fail; ++ return ret; ++} ++ ++#endif /* ENABLE_FASTRPZ */ +Index: unbound-1.7.0~rc1/fastrpz/rpz.h +=================================================================== +--- /dev/null ++++ unbound-1.7.0~rc1/fastrpz/rpz.h +@@ -0,0 +1,138 @@ ++/* ++ * fastrpz/rpz.h - interface to the fastrpz response policy zone library ++ * ++ * Copyright (c) 2016 Farsight Security, Inc. ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++#ifndef UNBOUND_FASTRPZ_RPZ_H ++#define UNBOUND_FASTRPZ_RPZ_H ++ ++#ifndef PACKAGE_VERSION ++/* Ensure that config.h has been included to correctly set ENABLE_FASTRPZ */ ++#include "config.h" ++#endif ++ ++#ifdef ENABLE_FASTRPZ ++ ++#include "librpz.h" ++ ++#include "daemon/daemon.h" ++#include "util/config_file.h" ++ ++struct comm_point; /* forward references */ ++struct comm_reply; ++struct dns_msg; ++struct edns_data; ++struct iter_qstate; ++struct query_info; ++struct reply_info; ++enum response_type; /* iterator/iter_utils.h */ ++ ++ ++struct commreply_rpz; ++ ++/** ++ * Connect to the librpz database. ++ * @param pclist: future pointer to opaque librpz client data ++ * @param pclient: future pointer to opaque librpz client data ++ * @param cfg: parsed unbound configuration ++ */ ++void rpz_init(librpz_clist_t** pclist, librpz_client_t** pclient, ++ const struct config_file* cfg); ++ ++/** ++ * Disconnect from the librpz database ++ * @param client: opaque librpz client data ++ */ ++void rpz_delete(librpz_clist_t** pclist, librpz_client_t** pclient); ++ ++/** ++ * Start working on a DNS request and check for client IP address triggers. ++ * @param worker: the DNS request context ++ * @param qinfo: the DNS question ++ * @param[in,out] commreply: the answer ++ * @param c: where to send the response ++ * @param[in,out] edns for the DO flag ++ * @return true if response already sent or dropped ++ */ ++bool rpz_start(struct worker* worker, struct query_info* qinfo, ++ struct comm_reply* commreply, struct edns_data* edns); ++ ++/** ++ * Release resources held for a DNS request ++ * @param rspp: pointer to pointer to rpz client context. ++ */ ++void rpz_end(struct comm_reply* comm_rep); ++ ++/** ++ * Check a cached reply for RPZ hits before iteration ++ * @param worker: the DNS request context ++ * @param casheresp: cache reply ++ * @param qinfo: the DNS question ++ * @param id from the DNS request ++ * @param flags from the DNS request ++ * @param[in,out] edns for the DO flag ++ * @param[in,out] commreply: RPZ state ++ * @return 1=use cache entry, -1=rewritten response already sent or dropped, ++ * 0=deny a cached entry exists ++ */ ++int rpz_worker_cache(struct worker* worker, struct reply_info* cacheresp, ++ struct query_info* qinfo, uint16_t id, uint16_t flags, ++ struct edns_data* edns, struct comm_reply* commreply); ++ ++/** ++ * Check for an existing RPZ CNAME rewrite with "QNAME-WAIT-RECURSE no" ++ * that needs to be resolved before resolving the external request. ++ * @param[out] msg: rewritten CNAME response. ++ * @param qstate: query state. ++ * @param iq: iterator query state. ++ * @return false=send SERVFAIL ++ */ ++bool rpz_iter_cache(struct dns_msg** msg, enum response_type* type, ++ struct module_qstate* qstate, struct iter_qstate* iq); ++ ++/** ++ * Check a response from an authority in the iterator. ++ * @param[out] type: of the final response ++ * @param qstate: query state. ++ * @param iq: iterator query state. ++ * @param is_cname: true if the rewritten response is a CNAME ++ * @return one of rpz_resp_t ++ */ ++typedef enum { ++ rpz_iter_resp_fail, /* Send SERVFAIL. */ ++ rpz_iter_resp_rewrite, /* We rewrote the response. */ ++ rpz_iter_resp_done, /* Restart to refetch glue. */ ++} rpz_iter_resp_t; ++rpz_iter_resp_t rpz_iter_resp(struct module_qstate* qstate, ++ struct iter_qstate* iq, struct dns_msg** resp, ++ bool* is_cname); ++ ++/** ++ * Check a CNAME RR ++ * @param qstate: query state. ++ * @param oname: cname owner name ++ * @param oname_size: length of oname ++ * @return: one of rpz_cname_t ++ */ ++typedef enum { ++ rpz_cname_fail, /* send SERVFAIL */ ++ rpz_cname_prepend, /* prepend CNAME as usual */ ++ rpz_cname_stop, /* stop before prepending this CNAME */ ++} rpz_cname_t; ++rpz_cname_t rpz_cname(struct module_qstate* qstate, ++ uint8_t* oname, size_t oname_size); ++ ++#endif /* ENABLE_FASTRPZ */ ++#endif /* UNBOUND_FASTRPZ_RPZ_H */ +Index: unbound-1.7.0~rc1/fastrpz/rpz.m4 +=================================================================== +--- /dev/null ++++ unbound-1.7.0~rc1/fastrpz/rpz.m4 +@@ -0,0 +1,64 @@ ++# fastrpz/rpz.m4 ++ ++# ck_FASTRPZ ++# -------------------------------------------------------------------------- ++# check for Fastrpz ++# --enable-fastrpz enable Fastrpz response policy zones ++# --enable-fastrpz-dl Fastrpz delayed link [default=have dlopen] ++# --with-fastrpz-dir directory containing librpz.so ++# ++# Fastrpz can be compiled into Unbound everywhere with a reasonably ++# modern C compiler. It is enabled on systems with dlopen() and librpz.so. ++ ++AC_DEFUN([ck_FASTRPZ], ++[ ++ fastrpz_avail=yes ++ AC_MSG_CHECKING([for librpz __attribute__s]) ++ AC_TRY_COMPILE(,[ ++ extern void f(char *p __attribute__((unused)), ...) ++ __attribute__((format(printf,1,2))) __attribute__((__noreturn__));], ++ librpz_have_attr=yes ++ AC_DEFINE([LIBRPZ_HAVE_ATTR], 1, [have __attribute__s used in librpz.h]) ++ AC_MSG_RESULT([yes]), ++ librpz_have_attr=no ++ AC_MSG_RESULT([no])) ++ ++ AC_SEARCH_LIBS(dlopen, dl) ++ librpz_dl=yes ++ AC_CHECK_FUNCS(dlopen dlclose dlsym,,librpz_dl=no) ++ AC_ARG_ENABLE([fastrpz-dl], ++ [ --enable-fastrpz-dl Fastrpz delayed link [[default=$librpz_dl]]], ++ [enable_librpz_dl="$enableval"], ++ [enable_librpz_dl="$librpz_dl"]) ++ AC_ARG_WITH([fastrpz-dir], ++ [ --with-fastrpz-dir directory containing librpz.so], ++ [librpz_path="$withval/librpz.so"], [librpz_path="librpz.so"]) ++ AC_DEFINE_UNQUOTED([FASTRPZ_LIBRPZ_PATH], ["$librpz_path"], ++ [fastrpz librpz.so]) ++ if test "x$enable_librpz_dl" = "xyes"; then ++ fastrpz_lib_open=2 ++ else ++ fastrpz_lib_open=1 ++ # Add librpz.so to linked libraries if we are not using dlopen() ++ AC_SEARCH_LIBS([librpz_client_create], [rpz], [], ++ [fastrpz_lib_open=0 ++ fastrpz_avail=no]) ++ fi ++ AC_DEFINE_UNQUOTED([FASTRPZ_LIB_OPEN], [$fastrpz_lib_open], ++ [0=no fastrpz 1=static link 2=dlopen()]) ++ ++ AC_ARG_ENABLE([fastrpz], ++ AS_HELP_STRING([--enable-fastrpz],[enable Fastrpz response policy zones]), ++ [enable_fastrpz=$enableval],[enable_fastrpz=$fastrpz_avail]) ++ if test "x$enable_fastrpz" = xyes; then ++ AC_DEFINE([ENABLE_FASTRPZ], [1], [Enable fastrpz]) ++ if test "x$fastrpz_lib_open" = "x0"; then ++ AC_MSG_ERROR([[dlopen and librpz.so needed for fastrpz]]) ++ fi ++ # used in Makefile.in ++ AC_SUBST([FASTRPZ_SRC], [fastrpz/rpz.c]) ++ AC_SUBST([FASTRPZ_OBJ], [rpz.lo]) ++ elif test "x$fastrpz_avail" = "x0"; then ++ AC_MSG_WARN([[dlopen and librpz.so needed for fastrpz]]) ++ fi ++]) +Index: unbound-1.7.0~rc1/iterator/iterator.c +=================================================================== +--- unbound-1.7.0~rc1.orig/iterator/iterator.c ++++ unbound-1.7.0~rc1/iterator/iterator.c +@@ -68,6 +68,9 @@ + #include "sldns/str2wire.h" + #include "sldns/parseutil.h" + #include "sldns/sbuffer.h" ++#ifdef ENABLE_FASTRPZ ++#include "fastrpz/rpz.h" ++#endif + + int + iter_init(struct module_env* env, int id) +@@ -511,6 +514,23 @@ handle_cname_response(struct module_qsta + if(ntohs(r->rk.type) == LDNS_RR_TYPE_CNAME && + query_dname_compare(*mname, r->rk.dname) == 0 && + !iter_find_rrset_in_prepend_answer(iq, r)) { ++#ifdef ENABLE_FASTRPZ ++ /* Stop adding CNAME rrsets to the prepend list ++ * before defining an RPZ hit. */ ++ if(!iq->rpz_rewritten) { ++ switch (rpz_cname(qstate, *mname, *mname_len)) { ++ case rpz_cname_fail: ++ /* send SERVFAIL */ ++ return 0; ++ case rpz_cname_prepend: ++ /* save the CNAME. */ ++ break; ++ case rpz_cname_stop: ++ /* Pause before adding the CNAME. */ ++ goto stop_short; ++ } ++ } ++#endif + /* Add this relevant CNAME rrset to the prepend list.*/ + if(!iter_add_prepend_answer(qstate, iq, r)) + return 0; +@@ -519,6 +539,9 @@ handle_cname_response(struct module_qsta + + /* Other rrsets in the section are ignored. */ + } ++#ifdef ENABLE_FASTRPZ ++stop_short: ; ++#endif + /* add authority rrsets to authority prepend, for wildcarded CNAMEs */ + for(i=msg->rep->an_numrrsets; irep->an_numrrsets + + msg->rep->ns_numrrsets; i++) { +@@ -1148,6 +1171,7 @@ processInitRequest(struct module_qstate* + uint8_t* delname; + size_t delnamelen; + struct dns_msg* msg = NULL; ++ enum response_type type; + + log_query_info(VERB_DETAIL, "resolving", &qstate->qinfo); + /* check effort */ +@@ -1223,8 +1247,7 @@ processInitRequest(struct module_qstate* + } + if(msg) { + /* handle positive cache response */ +- enum response_type type = response_type_from_cache(msg, +- &iq->qchase); ++ type = response_type_from_cache(msg, &iq->qchase); + if(verbosity >= VERB_ALGO) { + log_dns_msg("msg from cache lookup", &msg->qinfo, + msg->rep); +@@ -1232,7 +1255,22 @@ processInitRequest(struct module_qstate* + (int)msg->rep->ttl, + (int)msg->rep->prefetch_ttl); + } ++#ifdef ENABLE_FASTRPZ ++ } ++ /* Check for an RPZ hit in the cached DNS message or an existing ++ * RPZ CNAME rewrite that can be resolved now after a hit on the QNAME ++ * or client IP address. This can involve a creating a fake cache ++ * hit. It can also involve overriding an RESPONSE_TYPE_ANSWER ++ * result from response_type_from_cache(). Or it can ignore ++ * the cached result to refetch glue. */ ++ if(!iq->rpz_rewritten && ++ qstate->mesh_info->reply_list && ++ qstate->mesh_info->reply_list->query_reply.rpz && ++ !rpz_iter_cache(&msg, &type, qstate, iq)) ++ return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + ++ if(msg) { ++#endif + if(type == RESPONSE_TYPE_CNAME) { + uint8_t* sname = 0; + size_t slen = 0; +@@ -2552,6 +2590,62 @@ processQueryResponse(struct module_qstat + sock_list_insert(&qstate->reply_origin, + &qstate->reply->addr, qstate->reply->addrlen, + qstate->region); ++#ifdef ENABLE_FASTRPZ ++ /* Check the response for an RPZ hit. The response has already ++ * been saved in the cache. This should have the same effect ++ * as finding that response in the cache. ++ * We have already used rpz_iter_cache() at least once. */ ++ if(!iq->rpz_rewritten && ++ qstate->mesh_info->reply_list && ++ qstate->mesh_info->reply_list->query_reply.rpz) { ++ struct dns_msg* resp; ++ bool is_cname; ++ uint8_t* sname; ++ size_t slen; ++ ++ switch (rpz_iter_resp(qstate, iq, &resp, &is_cname)) { ++ case rpz_iter_resp_fail: ++ return error_response(qstate, id, ++ LDNS_RCODE_SERVFAIL); ++ case rpz_iter_resp_rewrite: ++ /* Prepend any initial CNAMEs from the original ++ * response up to a hit. */ ++ if(!handle_cname_response(qstate, iq, ++ iq->response, ++ &sname, &slen)) ++ return error_response(qstate, id, ++ LDNS_RCODE_SERVFAIL); ++ if (resp) { ++ iq->response = resp; ++ iq->rpz_security = resp->rep->security; ++ iq->rpz_rewritten = 1; ++ ++ /* Send the rewritten record if it ++ * is not a CNAME. */ ++ if(!is_cname) ++ break; ++ ++ /* Prepend the new CNAME ++ * and restart to resolve it. */ ++ if(!handle_cname_response(qstate, iq, ++ resp, &sname, &slen)) ++ return error_response(qstate, id, ++ LDNS_RCODE_SERVFAIL); ++ } ++ iq->qchase.qname = sname; ++ iq->qchase.qname_len = slen; ++ iq->dp = NULL; ++ iq->refetch_glue = 0; ++ iq->query_restart_count++; ++ iq->sent_count = 0; ++ iq->state = INIT_REQUEST_STATE; ++ return 1; ++ ++ case rpz_iter_resp_done: ++ break; ++ } ++ } ++#endif + if(iq->minimisation_state != DONOT_MINIMISE_STATE) { + if(FLAGS_GET_RCODE(iq->response->rep->flags) != + LDNS_RCODE_NOERROR) { +@@ -3273,12 +3367,44 @@ processFinished(struct module_qstate* qs + * but only if we did recursion. The nonrecursion referral + * from cache does not need to be stored in the msg cache. */ + if(!qstate->no_cache_store && qstate->query_flags&BIT_RD) { ++#ifdef ENABLE_FASTRPZ ++ /* Do not save RPZ rewritten messages. */ ++ if(!iq->rpz_rewritten) ++#endif + iter_dns_store(qstate->env, &qstate->qinfo, + iq->response->rep, 0, qstate->prefetch_leeway, + iq->dp&&iq->dp->has_parent_side_NS, + qstate->region, qstate->query_flags); + } + } ++#ifdef ENABLE_FASTRPZ ++ if(iq->rpz_rewritten) { ++ /* Restore RPZ marks on a rewritten response. The marks ++ * are lost if the rewrite is to a CNAME. */ ++ iq->response->rep->security = iq->rpz_security; ++ ++ /* Append the RPZ SOA to rewritten CNAME chains. */ ++ if(iq->rpz_soa) { ++ struct ub_packed_rrset_key** sets; ++ uint n; ++ ++ n = iq->response->rep->rrset_count; ++ sets = regional_alloc(qstate->region, ++ (1+n) * sizeof(*sets)); ++ if(!sets) { ++ log_err("append RPZ SOA: out of memory"); ++ return error_response(qstate, id, ++ LDNS_RCODE_SERVFAIL); ++ } ++ memcpy(sets, iq->response->rep->rrsets, ++ n * sizeof(struct ub_packed_rrset_key*)); ++ sets[n] = iq->rpz_soa; ++ iq->response->rep->rrsets = sets; ++ ++iq->response->rep->rrset_count; ++ ++iq->response->rep->ar_numrrsets; ++ } ++ } ++#endif + qstate->return_rcode = LDNS_RCODE_NOERROR; + qstate->return_msg = iq->response; + return 0; +Index: unbound-1.7.0~rc1/iterator/iterator.h +=================================================================== +--- unbound-1.7.0~rc1.orig/iterator/iterator.h ++++ unbound-1.7.0~rc1/iterator/iterator.h +@@ -383,6 +383,16 @@ struct iter_qstate { + */ + int minimise_count; + ++ ++#ifdef ENABLE_FASTRPZ ++ /** The response has been rewritten by RPZ. */ ++ int rpz_rewritten; ++ /** RPZ SOA RR for the ADDITIONAL section */ ++ struct ub_packed_rrset_key* rpz_soa; ++ /** sec_status_rpz_rewritten or sec_status_rpz_drop if rewritten. */ ++ enum sec_status rpz_security; ++#endif ++ + /** + * Count number of time-outs. Used to prevent resolving failures when + * the QNAME minimisation QTYPE is blocked. */ +Index: unbound-1.7.0~rc1/services/cache/dns.c +=================================================================== +--- unbound-1.7.0~rc1.orig/services/cache/dns.c ++++ unbound-1.7.0~rc1/services/cache/dns.c +@@ -876,6 +876,14 @@ dns_cache_store(struct module_env* env, + struct regional* region, uint32_t flags) + { + struct reply_info* rep = NULL; ++ ++#ifdef ENABLE_FASTRPZ ++ /* Never save RPZ rewritten data. */ ++ if (msgrep->security == sec_status_rpz_drop || ++ msgrep->security == sec_status_rpz_rewritten) ++ return 1; ++#endif ++ + /* alloc, malloc properly (not in region, like msg is) */ + rep = reply_info_copy(msgrep, env->alloc, NULL); + if(!rep) +Index: unbound-1.7.0~rc1/services/mesh.c +=================================================================== +--- unbound-1.7.0~rc1.orig/services/mesh.c ++++ unbound-1.7.0~rc1/services/mesh.c +@@ -59,6 +59,9 @@ + #include "sldns/wire2str.h" + #include "services/localzone.h" + #include "util/data/dname.h" ++#ifdef ENABLE_FASTRPZ ++#include "fastrpz/rpz.h" ++#endif + #include "respip/respip.h" + + /** subtract timers and the values do not overflow or become negative */ +@@ -1050,6 +1053,13 @@ mesh_send_reply(struct mesh_state* m, in + else secure = 0; + if(!rep && rcode == LDNS_RCODE_NOERROR) + rcode = LDNS_RCODE_SERVFAIL; ++#ifdef ENABLE_FASTRPZ ++ /* Drop the response here for LIBRPZ_POLICY_DROP after iteration. */ ++ if(rep && rep->security == sec_status_rpz_drop) { ++ log_query_info(VERB_QUERY, "rpz drop", &m->s.qinfo); ++ secure = 0; ++ } else ++#endif + /* send the reply */ + /* We don't reuse the encoded answer if either the previous or current + * response has a local alias. We could compare the alias records +@@ -1199,6 +1209,7 @@ struct mesh_state* mesh_area_find(struct + key.s.is_valrec = valrec; + key.s.qinfo = *qinfo; + key.s.query_flags = qflags; ++ key.reply_list = NULL; + /* We are searching for a similar mesh state when we DO want to + * aggregate the state. Thus unique is set to NULL. (default when we + * desire aggregation).*/ +@@ -1245,6 +1256,10 @@ int mesh_state_add_reply(struct mesh_sta + if(!r) + return 0; + r->query_reply = *rep; ++#ifdef ENABLE_FASTRPZ ++ /* The new reply structure owns the RPZ state. */ ++ rep->rpz = NULL; ++#endif + r->edns = *edns; + if(edns->opt_list) { + r->edns.opt_list = edns_opt_copy_region(edns->opt_list, +Index: unbound-1.7.0~rc1/util/config_file.c +=================================================================== +--- unbound-1.7.0~rc1.orig/util/config_file.c ++++ unbound-1.7.0~rc1/util/config_file.c +@@ -1323,6 +1323,8 @@ config_delete(struct config_file* cfg) + free(cfg->dnstap_socket_path); + free(cfg->dnstap_identity); + free(cfg->dnstap_version); ++ if (cfg->rpz_cstr) ++ free(cfg->rpz_cstr); + config_deldblstrlist(cfg->ratelimit_for_domain); + config_deldblstrlist(cfg->ratelimit_below_domain); + #ifdef USE_IPSECMOD +Index: unbound-1.7.0~rc1/util/config_file.h +=================================================================== +--- unbound-1.7.0~rc1.orig/util/config_file.h ++++ unbound-1.7.0~rc1/util/config_file.h +@@ -431,6 +431,11 @@ struct config_file { + /** true to disable DNSSEC lameness check in iterator */ + int disable_dnssec_lame_check; + ++ /** true to enable RPZ */ ++ int rpz_enable; ++ /** RPZ configuration */ ++ char* rpz_cstr; ++ + /** ratelimit for ip addresses. 0 is off, otherwise qps (unless overridden) */ + int ip_ratelimit; + /** number of slabs for ip_ratelimit cache */ +Index: unbound-1.7.0~rc1/util/configlexer.lex +=================================================================== +--- unbound-1.7.0~rc1.orig/util/configlexer.lex ++++ unbound-1.7.0~rc1/util/configlexer.lex +@@ -412,6 +412,10 @@ dnstap-log-forwarder-query-messages{COLO + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + dnstap-log-forwarder-response-messages{COLON} { + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } ++rpz{COLON} { YDVAR(0, VAR_RPZ) } ++rpz-enable{COLON} { YDVAR(1, VAR_RPZ_ENABLE) } ++rpz-zone{COLON} { YDVAR(1, VAR_RPZ_ZONE) } ++rpz-option{COLON} { YDVAR(1, VAR_RPZ_OPTION) } + disable-dnssec-lame-check{COLON} { YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } + ip-ratelimit{COLON} { YDVAR(1, VAR_IP_RATELIMIT) } + ratelimit{COLON} { YDVAR(1, VAR_RATELIMIT) } +Index: unbound-1.7.0~rc1/util/configparser.y +=================================================================== +--- unbound-1.7.0~rc1.orig/util/configparser.y ++++ unbound-1.7.0~rc1/util/configparser.y +@@ -124,6 +124,7 @@ extern struct config_parser_state* cfg_p + %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES + %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES + %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES ++%token VAR_RPZ VAR_RPZ_ENABLE VAR_RPZ_ZONE VAR_RPZ_OPTION + %token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA + %token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT + %token VAR_DISABLE_DNSSEC_LAME_CHECK +@@ -158,7 +159,7 @@ extern struct config_parser_state* cfg_p + + %% + toplevelvars: /* empty */ | toplevelvars toplevelvar ; +-toplevelvar: serverstart contents_server | stubstart contents_stub | ++toplevelvar: serverstart contents_server | stubstart contents_stub | rpzstart contents_rpz | + forwardstart contents_forward | pythonstart contents_py | + rcstart contents_rc | dtstart contents_dt | viewstart contents_view | + dnscstart contents_dnsc | cachedbstart contents_cachedb | +@@ -2384,6 +2385,50 @@ dt_dnstap_log_forwarder_response_message + (strcmp($2, "yes")==0); + } + ; ++rpzstart: VAR_RPZ ++ { ++ OUTYY(("\nP(rpz:)\n")); ++ } ++ ; ++contents_rpz: contents_rpz content_rpz ++ | ; ++content_rpz: rpz_enable | rpz_zone | rpz_option ++ ; ++rpz_enable: VAR_RPZ_ENABLE STRING_ARG ++ { ++ OUTYY(("P(rpz_enable:%s)\n", $2)); ++ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) ++ yyerror("expected yes or no."); ++ else cfg_parser->cfg->rpz_enable = (strcmp($2, "yes")==0); ++ free($2); ++ } ++ ; ++rpz_zone: VAR_RPZ_ZONE STRING_ARG ++ { ++ char *new_cstr, *old_cstr; ++ ++ OUTYY(("P(rpz_zone:%s)\n", $2)); ++ old_cstr = cfg_parser->cfg->rpz_cstr; ++ asprintf(&new_cstr, "%s\nzone %s", old_cstr?old_cstr:"", $2); ++ if(!new_cstr) ++ yyerror("out of memory"); ++ free(old_cstr); ++ cfg_parser->cfg->rpz_cstr = new_cstr; ++ } ++ ; ++rpz_option: VAR_RPZ_OPTION STRING_ARG ++ { ++ char *new_cstr, *old_cstr; ++ ++ OUTYY(("P(rpz_option:%s)\n", $2)); ++ old_cstr = cfg_parser->cfg->rpz_cstr; ++ asprintf(&new_cstr, "%s\n%s", old_cstr ? old_cstr : "", $2); ++ if(!new_cstr) ++ yyerror("out of memory"); ++ free(old_cstr); ++ cfg_parser->cfg->rpz_cstr = new_cstr; ++ } ++ ; + pythonstart: VAR_PYTHON + { + OUTYY(("\nP(python:)\n")); +Index: unbound-1.7.0~rc1/util/data/msgencode.c +=================================================================== +--- unbound-1.7.0~rc1.orig/util/data/msgencode.c ++++ unbound-1.7.0~rc1/util/data/msgencode.c +@@ -585,6 +585,35 @@ insert_section(struct reply_info* rep, s + return RETVAL_OK; + } + ++#ifdef ENABLE_FASTRPZ ++/* Insert the RPZ SOA even with MINIMAL_RESPONSES */ ++static int ++insert_rpz_soa(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs, ++ sldns_buffer* pkt, size_t rrsets_before, time_t timenow, ++ struct regional* region, struct compress_tree_node** tree, ++ size_t rr_offset) ++{ ++ int r; ++ size_t i, setstart; ++ ++ *num_rrs = 0; ++ for(i=0; irrsets[rrsets_before+i]->rk.type != LDNS_RR_TYPE_SOA) ++ continue; ++ setstart = sldns_buffer_position(pkt); ++ if((r=packed_rrset_encode(rep->rrsets[rrsets_before+i], ++ pkt, num_rrs, timenow, region, ++ 1, 0, tree, LDNS_SECTION_ADDITIONAL, ++ LDNS_RR_TYPE_ANY, 0, rr_offset)) ++ != RETVAL_OK) { ++ sldns_buffer_set_position(pkt, setstart); ++ return r; ++ } ++ } ++ return RETVAL_OK; ++} ++ ++#endif + /** store query section in wireformat buffer, return RETVAL */ + static int + insert_query(struct query_info* qinfo, struct compress_tree_node** tree, +@@ -750,6 +779,19 @@ reply_info_encode(struct query_info* qin + return 0; + } + sldns_buffer_write_u16_at(buffer, 10, arcount); ++#ifdef ENABLE_FASTRPZ ++ } else if(rep->security == sec_status_rpz_rewritten) { ++ /* Insert the RPZ SOA for rpz even with MINIMAL_RESPONSES */ ++ r = insert_rpz_soa(rep, rep->ar_numrrsets, &arcount, buffer, ++ rep->an_numrrsets + rep->ns_numrrsets, ++ timenow, region, &tree, rr_offset); ++ if(r!= RETVAL_OK) { ++ if(r != RETVAL_TRUNC) ++ return 0; ++ /* no need to set TC bit, this is the additional */ ++ sldns_buffer_write_u16_at(buffer, 10, arcount); ++ } ++#endif + } + sldns_buffer_flip(buffer); + return 1; +Index: unbound-1.7.0~rc1/util/data/packed_rrset.c +=================================================================== +--- unbound-1.7.0~rc1.orig/util/data/packed_rrset.c ++++ unbound-1.7.0~rc1/util/data/packed_rrset.c +@@ -254,6 +254,10 @@ sec_status_to_string(enum sec_status s) + case sec_status_indeterminate: return "sec_status_indeterminate"; + case sec_status_insecure: return "sec_status_insecure"; + case sec_status_secure: return "sec_status_secure"; ++#ifdef ENABLE_FASTRPZ ++ case sec_status_rpz_rewritten: return "sec_status_rpz_rewritten"; ++ case sec_status_rpz_drop: return "sec_status_rpz_drop"; ++#endif + } + return "unknown_sec_status_value"; + } +Index: unbound-1.7.0~rc1/util/data/packed_rrset.h +=================================================================== +--- unbound-1.7.0~rc1.orig/util/data/packed_rrset.h ++++ unbound-1.7.0~rc1/util/data/packed_rrset.h +@@ -189,7 +189,15 @@ enum sec_status { + sec_status_insecure, + /** SECURE means that the object (RRset or message) validated + * according to local policy. */ +- sec_status_secure ++ sec_status_secure, ++#ifdef ENABLE_FASTRPZ ++ /** RPZ_REWRITTEN means that the response has been rewritten by ++ * rpz and so cannot be verified. */ ++ sec_status_rpz_rewritten, ++ /** RPZ_DROP means that the response has been rewritten by rpz ++ * as silence. */ ++ sec_status_rpz_drop ++#endif + }; + + /** +Index: unbound-1.7.0~rc1/util/netevent.c +=================================================================== +--- unbound-1.7.0~rc1.orig/util/netevent.c ++++ unbound-1.7.0~rc1/util/netevent.c +@@ -54,6 +54,9 @@ + #ifdef HAVE_OPENSSL_ERR_H + #include + #endif ++#ifdef ENABLE_FASTRPZ ++#include "fastrpz/rpz.h" ++#endif + + /* -------- Start of local definitions -------- */ + /** if CMSG_ALIGN is not defined on this platform, a workaround */ +@@ -585,6 +588,9 @@ comm_point_udp_ancil_callback(int fd, sh + struct cmsghdr* cmsg; + #endif /* S_SPLINT_S */ + ++#ifdef ENABLE_FASTRPZ ++ rep.rpz = NULL; ++#endif + rep.c = (struct comm_point*)arg; + log_assert(rep.c->type == comm_udp); + +@@ -674,6 +680,9 @@ comm_point_udp_callback(int fd, short ev + int i; + struct sldns_buffer *buffer; + ++#ifdef ENABLE_FASTRPZ ++ rep.rpz = NULL; ++#endif + rep.c = (struct comm_point*)arg; + log_assert(rep.c->type == comm_udp); + +@@ -717,6 +726,9 @@ comm_point_udp_callback(int fd, short ev + (void)comm_point_send_udp_msg(rep.c, buffer, + (struct sockaddr*)&rep.addr, rep.addrlen); + } ++#ifdef ENABLE_FASTRPZ ++ rpz_end(&rep); ++#endif + if(!rep.c || rep.c->fd != fd) /* commpoint closed to -1 or reused for + another UDP port. Note rep.c cannot be reused with TCP fd. */ + break; +@@ -2956,6 +2968,9 @@ comm_point_send_reply(struct comm_reply + comm_point_start_listening(repinfo->c, -1, + repinfo->c->tcp_timeout_msec); + } ++#ifdef ENABLE_FASTRPZ ++ rpz_end(repinfo); ++#endif + } + + void +@@ -2965,6 +2980,9 @@ comm_point_drop_reply(struct comm_reply* + return; + log_assert(repinfo && repinfo->c); + log_assert(repinfo->c->type != comm_tcp_accept); ++#ifdef ENABLE_FASTRPZ ++ rpz_end(repinfo); ++#endif + if(repinfo->c->type == comm_udp) + return; + reclaim_tcp_handler(repinfo->c); +@@ -2984,6 +3002,9 @@ comm_point_start_listening(struct comm_p + { + verbose(VERB_ALGO, "comm point start listening %d", + c->fd==-1?newfd:c->fd); ++#ifdef ENABLE_FASTRPZ ++ rpz_end(&c->repinfo); ++#endif + if(c->type == comm_tcp_accept && !c->tcp_free) { + /* no use to start listening no free slots. */ + return; +Index: unbound-1.7.0~rc1/util/netevent.h +=================================================================== +--- unbound-1.7.0~rc1.orig/util/netevent.h ++++ unbound-1.7.0~rc1/util/netevent.h +@@ -119,6 +119,10 @@ struct comm_reply { + /** return type 0 (none), 4(IP4), 6(IP6) */ + int srctype; + /* DnsCrypt context */ ++#ifdef ENABLE_FASTRPZ ++ /** per-request RPZ state */ ++ struct commreply_rpz* rpz; ++#endif + #ifdef USE_DNSCRYPT + uint8_t client_nonce[crypto_box_HALF_NONCEBYTES]; + uint8_t nmkey[crypto_box_BEFORENMBYTES]; +Index: unbound-1.7.0~rc1/validator/validator.c +=================================================================== +--- unbound-1.7.0~rc1.orig/validator/validator.c ++++ unbound-1.7.0~rc1/validator/validator.c +@@ -2688,6 +2688,12 @@ ds_response_to_ke(struct module_qstate* + default: + /* NSEC proof did not work, try next */ + break; ++#ifdef ENABLE_FASTRPZ ++ case sec_status_rpz_rewritten: ++ case sec_status_rpz_drop: ++ fatal_exit("impossible RPZ sec_status"); ++ break; ++#endif + } + + sec = nsec3_prove_nods(qstate->env, ve, +@@ -2721,6 +2727,12 @@ ds_response_to_ke(struct module_qstate* + default: + /* NSEC3 proof did not work */ + break; ++#ifdef ENABLE_FASTRPZ ++ case sec_status_rpz_rewritten: ++ case sec_status_rpz_drop: ++ fatal_exit("impossible RPZ sec_status"); ++ break; ++#endif + } + + /* Apparently, no available NSEC/NSEC3 proved NODATA, so + diff --git a/external/unbound/contrib/libunbound.pc.in b/external/unbound/contrib/libunbound.pc.in new file mode 100644 index 0000000..0cb9f87 --- /dev/null +++ b/external/unbound/contrib/libunbound.pc.in @@ -0,0 +1,13 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: unbound +Description: Library with validating, recursive, and caching DNS resolver +URL: http://www.unbound.net +Version: @PACKAGE_VERSION@ +Requires: @PC_LIBEVENT_DEPENDENCY@ @PC_PY_DEPENDENCY@ +Libs: -L${libdir} -lunbound -lssl -lcrypto +Libs.private: @SSLLIB@ @LIBS@ +Cflags: -I${includedir} diff --git a/external/unbound/contrib/libunbound.so.conf b/external/unbound/contrib/libunbound.so.conf new file mode 100644 index 0000000..3b78fca --- /dev/null +++ b/external/unbound/contrib/libunbound.so.conf @@ -0,0 +1,41 @@ +# See ltrace.conf(5) for description of syntax of this file. +typedef ub_type = enum(TYPE_A=1,TYPE_NS=2,TYPE_SOA=6,TYPE_MX=15,TYPE_TXT=16,TYPE_AAAA=28,TYPE_DS=43,TYPE_DNSKEY=48,TYPE_TLSA=52,TYPE_ANY=255); +typedef ub_class = enum(CLASS_IN=1,CLASS_CH=3,CLASS_NONE=254,CLASS_ANY=255); +typedef ub_rcode = enum(RCODE_NOERROR,RCODE_FORMERR,RCODE_SERVFAIL,RCODE_NXDOMAIN,RCODE_NOTIMPL,RCODE_REFUSED,RCODE_YXDOMAIN,RCODE_YXRRSET,RCODE_NXRRSET,RCODE_NOTAUTH,RCODE_NOTZONE); +typedef ub_havedata = enum(no_data, have_data); +typedef ub_nxdomain = enum(name_exists, nxdomain); +typedef ub_secure = enum(not_secure, secure); +typedef ub_bogus = enum(not_bogus, bogus); +typedef ub_result = struct(string, ub_type, ub_class, array(void*,zero)*, array(int,zero)*, string, ub_rcode, void*, int, ub_havedata, ub_nxdomain, ub_secure, ub_bogus, string, int); +typedef ub_ctx = void; +ub_ctx* ub_ctx_create(void); +void ub_ctx_delete(ub_ctx*); +int ub_ctx_set_option(ub_ctx*, string, string); +int ub_ctx_get_option(ub_ctx*, string, +string*); +int ub_ctx_config(ub_ctx*, string); +int ub_ctx_set_fwd(ub_ctx*, string); +int ub_ctx_set_stub(ub_ctx*, string, string, bool(int)); +int ub_ctx_resolvconf(ub_ctx*, string); +int ub_ctx_hosts(ub_ctx*, string); +int ub_ctx_add_ta(ub_ctx*, string); +int ub_ctx_add_ta_file(ub_ctx*, string); +int ub_ctx_add_ta_autr(ub_ctx*, string); +int ub_ctx_trustedkeys(ub_ctx*, string); +int ub_ctx_debugout(ub_ctx*, void*); +int ub_ctx_debuglevel(ub_ctx*, int); +int ub_ctx_async(ub_ctx*, bool(int)); +int ub_poll(ub_ctx*); +int ub_wait(ub_ctx*); +int ub_fd(ub_ctx*); +int ub_process(ub_ctx*); +int ub_resolve(ub_ctx*, string, ub_type, ub_class, +ub_result**); +int ub_resolve_async(ub_ctx*, string, ub_type, ub_class, void*, void*, +int*); +int ub_cancel(ub_ctx*, int); +void ub_resolve_free(ub_result*); +string ub_strerror(int); +int ub_ctx_print_local_zones(ub_ctx*); +int ub_ctx_zone_add(ub_ctx*, string, string); +int ub_ctx_zone_remove(ub_ctx*, string); +int ub_ctx_data_add(ub_ctx*, string); +int ub_ctx_data_remove(ub_ctx*, string); +string ub_version(void); diff --git a/external/unbound/contrib/parseunbound.pl b/external/unbound/contrib/parseunbound.pl index 6a6a76d..1d294b1 100644 --- a/external/unbound/contrib/parseunbound.pl +++ b/external/unbound/contrib/parseunbound.pl @@ -91,7 +91,7 @@ $allstats{$inthread}->{outstandingexc} = $4; } elsif ( $line =~ m/info: average recursion processing time ([0-9\.]+) sec/ ) { - $allstats{$inthread}->{recursionavg} = int($1 * 1000); # change sec to milisec. + $allstats{$inthread}->{recursionavg} = int($1 * 1000); # change sec to millisec. } elsif ( $line =~ m/info: histogram of recursion processing times/ ) { next; @@ -103,7 +103,7 @@ } elsif ( $line =~ m/info: lower\(secs\) upper\(secs\) recursions/ ) { # since after this line we're unsure if we get these numbers - # at all, we sould consider this marker as the end of the + # at all, we should consider this marker as the end of the # block. Chances that we're parsing a file halfway written # at this stage are small. Bold statement. $donestats{$inthread} = 1; diff --git a/external/unbound/contrib/redirect-bogus.patch b/external/unbound/contrib/redirect-bogus.patch new file mode 100644 index 0000000..8f8035c --- /dev/null +++ b/external/unbound/contrib/redirect-bogus.patch @@ -0,0 +1,344 @@ +Index: daemon/worker.c +=================================================================== +--- daemon/worker.c (revision 4191) ++++ daemon/worker.c (working copy) +@@ -663,8 +663,21 @@ + if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, rep, + LDNS_RCODE_SERVFAIL, edns, worker->scratchpad)) + goto bail_out; +- error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, +- qinfo, id, flags, edns); ++ if (qinfo->qtype == LDNS_RR_TYPE_A && ++ worker->env.cfg->redirect_bogus_ipv4) { ++ /* BAD cached */ ++ fixed_address_encode(repinfo->c->buffer, ++ LDNS_RCODE_NOERROR, qinfo, id, flags, edns, ++ worker->env.cfg->redirect_bogus_ipv4); ++ } else if (qinfo->qtype == LDNS_RR_TYPE_AAAA && ++ worker->env.cfg->redirect_bogus_ipv6) { ++ fixed_address_encode(repinfo->c->buffer, ++ LDNS_RCODE_NOERROR, qinfo, id, flags, edns, ++ worker->env.cfg->redirect_bogus_ipv6); ++ } else { ++ error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, ++ qinfo, id, flags, edns); ++ } + rrset_array_unlock_touch(worker->env.rrset_cache, + worker->scratchpad, rep->ref, rep->rrset_count); + if(worker->stats.extended) { +Index: doc/unbound.conf.5.in +=================================================================== +--- doc/unbound.conf.5.in (revision 4191) ++++ doc/unbound.conf.5.in (working copy) +@@ -1244,6 +1244,18 @@ + This can make ordinary queries complete (if repeatedly queried for), + and enter the cache, whilst also mitigating the traffic flow by the + factor given. ++.TP 5 ++.B redirect-bogus-ipv4: \fI ++Set a fixed address for DNSSEC failures that are cached ++Instead of responding to A queries with SERVFAIL, respond ++with NOERROR and the address specified here ++The TTL of the response will be 5 seconds ++.TP 5 ++.B redirect-bogus-ipv6: \fI ++Set a fixed address for DNSSEC failures that are cached ++Instead of responding to AAAA queries with SERVFAIL, respond ++with NOERROR and the address specified here ++The TTL of the response will be 5 seconds + .SS "Remote Control Options" + In the + .B remote\-control: +Index: services/mesh.c +=================================================================== +--- services/mesh.c (revision 4191) ++++ services/mesh.c (working copy) +@@ -1006,6 +1006,7 @@ + struct timeval end_time; + struct timeval duration; + int secure; ++ int bogus_override = 0; + /* Copy the client's EDNS for later restore, to make sure the edns + * compare is with the correct edns options. */ + struct edns_data edns_bak = r->edns; +@@ -1016,6 +1017,7 @@ + rcode = LDNS_RCODE_SERVFAIL; + if(m->s.env->cfg->stat_extended) + m->s.env->mesh->ans_bogus++; ++ bogus_override = 1; + } + if(rep && rep->security == sec_status_secure) + secure = 1; +@@ -1047,17 +1049,34 @@ + } else if(rcode) { + m->s.qinfo.qname = r->qname; + m->s.qinfo.local_alias = r->local_alias; +- if(rcode == LDNS_RCODE_SERVFAIL) { +- if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, +- rep, rcode, &r->edns, m->s.region)) +- r->edns.opt_list = NULL; +- } else { +- if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, +- &r->edns, m->s.region)) +- r->edns.opt_list = NULL; ++ if(bogus_override && m->s.qinfo.qtype == LDNS_RR_TYPE_A && ++ m->s.env->cfg->redirect_bogus_ipv4) { ++ fixed_address_encode(r->query_reply.c->buffer, ++ LDNS_RCODE_NOERROR, &m->s.qinfo, r->qid, ++ r->qflags, &r->edns, ++ m->s.env->cfg->redirect_bogus_ipv4); ++ } else if(bogus_override && ++ m->s.qinfo.qtype == LDNS_RR_TYPE_AAAA && ++ m->s.env->cfg->redirect_bogus_ipv6) { ++ fixed_address_encode(r->query_reply.c->buffer, ++ LDNS_RCODE_NOERROR, &m->s.qinfo, r->qid, ++ r->qflags, &r->edns, ++ m->s.env->cfg->redirect_bogus_ipv6); ++ } else { ++ if(rcode == LDNS_RCODE_SERVFAIL) { ++ if(!inplace_cb_reply_servfail_call(m->s.env, ++ &m->s.qinfo, &m->s, ++ rep, rcode, &r->edns, m->s.region)) ++ r->edns.opt_list = NULL; ++ } else { ++ if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, ++ &m->s, rep, rcode, &r->edns, ++ m->s.region)) ++ r->edns.opt_list = NULL; ++ } ++ error_encode(r->query_reply.c->buffer, rcode, ++ &m->s.qinfo, r->qid, r->qflags, &r->edns); + } +- error_encode(r->query_reply.c->buffer, rcode, &m->s.qinfo, +- r->qid, r->qflags, &r->edns); + comm_point_send_reply(&r->query_reply); + } else { + size_t udp_size = r->edns.udp_size; +Index: util/config_file.c +=================================================================== +--- util/config_file.c (revision 4191) ++++ util/config_file.c (working copy) +@@ -273,6 +273,8 @@ + cfg->ratelimit_factor = 10; + cfg->qname_minimisation = 0; + cfg->qname_minimisation_strict = 0; ++ cfg->redirect_bogus_ipv4 = NULL; ++ cfg->redirect_bogus_ipv6 = NULL; + cfg->shm_enable = 0; + cfg->shm_key = 11777; + cfg->dnscrypt = 0; +@@ -602,6 +604,10 @@ + } + oi[cfg->num_out_ifs++] = d; + cfg->out_ifs = oi; ++ } else if (strcmp(opt, "redirect-bogus-ipv4:") == 0) { ++ cfg->redirect_bogus_ipv4 = strdup(val); ++ } else if (strcmp(opt, "redirect-bogus-ipv6:") == 0) { ++ cfg->redirect_bogus_ipv6 = strdup(val); + } else { + /* unknown or unsupported (from the set_option interface): + * interface, outgoing-interface, access-control, +@@ -1250,6 +1256,12 @@ + free(cfg->dnstap_version); + config_deldblstrlist(cfg->ratelimit_for_domain); + config_deldblstrlist(cfg->ratelimit_below_domain); ++ if (cfg->redirect_bogus_ipv4) { ++ free(cfg->redirect_bogus_ipv4); ++ } ++ if (cfg->redirect_bogus_ipv6) { ++ free(cfg->redirect_bogus_ipv6); ++ } + #ifdef USE_IPSECMOD + free(cfg->ipsecmod_hook); + config_delstrlist(cfg->ipsecmod_whitelist); +Index: util/config_file.h +=================================================================== +--- util/config_file.h (revision 4191) ++++ util/config_file.h (working copy) +@@ -444,6 +444,9 @@ + /** minimise QNAME in strict mode, minimise according to RFC. + * Do not apply fallback */ + int qname_minimisation_strict; ++ /** construct fake responses for DNSSEC failures */ ++ char *redirect_bogus_ipv4; ++ char *redirect_bogus_ipv6; + /** SHM data - true if shm is enabled */ + int shm_enable; + /** SHM data - key for the shm */ +Index: util/configlexer.lex +=================================================================== +--- util/configlexer.lex (revision 4191) ++++ util/configlexer.lex (working copy) +@@ -410,6 +410,8 @@ + response-ip-tag{COLON} { YDVAR(2, VAR_RESPONSE_IP_TAG) } + response-ip{COLON} { YDVAR(2, VAR_RESPONSE_IP) } + response-ip-data{COLON} { YDVAR(2, VAR_RESPONSE_IP_DATA) } ++redirect-bogus-ipv4{COLON} { YDVAR(1, VAR_REDIRECT_BOGUS_IPV4) } ++redirect-bogus-ipv6{COLON} { YDVAR(1, VAR_REDIRECT_BOGUS_IPV6) } + dnscrypt{COLON} { YDVAR(0, VAR_DNSCRYPT) } + dnscrypt-enable{COLON} { YDVAR(1, VAR_DNSCRYPT_ENABLE) } + dnscrypt-port{COLON} { YDVAR(1, VAR_DNSCRYPT_PORT) } +Index: util/configparser.y +=================================================================== +--- util/configparser.y (revision 4191) ++++ util/configparser.y (working copy) +@@ -44,6 +44,7 @@ + #include + #include + ++#include "sldns/str2wire.h" + #include "util/configyyrename.h" + #include "util/config_file.h" + #include "util/net_help.h" +@@ -141,6 +142,7 @@ + %token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW + %token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_FAKE_DSA VAR_FAKE_SHA1 + %token VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR VAR_TRUST_ANCHOR_SIGNALING ++%token VAR_REDIRECT_BOGUS_IPV4 VAR_REDIRECT_BOGUS_IPV6 + %token VAR_USE_SYSTEMD VAR_SHM_ENABLE VAR_SHM_KEY + %token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER + %token VAR_DNSCRYPT_SECRET_KEY VAR_DNSCRYPT_PROVIDER_CERT +@@ -228,6 +230,7 @@ + server_access_control_tag_data | server_access_control_view | + server_qname_minimisation_strict | server_serve_expired | + server_fake_dsa | server_log_identity | server_use_systemd | ++ server_redirect_bogus_ipv4 | server_redirect_bogus_ipv6 | + server_response_ip_tag | server_response_ip | server_response_ip_data | + server_shm_enable | server_shm_key | server_fake_sha1 | + server_hide_trustanchor | server_trust_anchor_signaling | +@@ -1873,6 +1876,34 @@ + #endif + } + ; ++server_redirect_bogus_ipv4: VAR_REDIRECT_BOGUS_IPV4 STRING_ARG ++ { ++ uint8_t data[4]; ++ size_t data_len = 4; ++ OUTYY(("P(name:%s)\n", $2)); ++ if(cfg_parser->cfg->redirect_bogus_ipv4) { ++ yyerror("redirect-bogus-ipv4, can only use one address"); ++ } ++ if(sldns_str2wire_a_buf($2, data, &data_len) != LDNS_WIREPARSE_ERR_OK) { ++ yyerror("redirect-bogus-ipv4, not a valid IPv4 address"); ++ } ++ free(cfg_parser->cfg->redirect_bogus_ipv4); ++ cfg_parser->cfg->redirect_bogus_ipv4 = $2; ++ } ++server_redirect_bogus_ipv6: VAR_REDIRECT_BOGUS_IPV6 STRING_ARG ++ { ++ uint8_t data[16]; ++ size_t data_len = 16; ++ OUTYY(("P(name:%s)\n", $2)); ++ if(cfg_parser->cfg->redirect_bogus_ipv6) { ++ yyerror("redirect-bogus-ipv6, can only use one address"); ++ } ++ if(sldns_str2wire_aaaa_buf($2, data, &data_len) != LDNS_WIREPARSE_ERR_OK) { ++ yyerror("redirect-bogus-ipv6, not a valid IPv6 address"); ++ } ++ free(cfg_parser->cfg->redirect_bogus_ipv6); ++ cfg_parser->cfg->redirect_bogus_ipv6 = $2; ++ } + stub_name: VAR_NAME STRING_ARG + { + OUTYY(("P(name:%s)\n", $2)); +Index: util/data/msgencode.c +=================================================================== +--- util/data/msgencode.c (revision 4191) ++++ util/data/msgencode.c (working copy) +@@ -48,6 +48,7 @@ + #include "util/regional.h" + #include "util/net_help.h" + #include "sldns/sbuffer.h" ++#include "sldns/str2wire.h" + #include "services/localzone.h" + + /** return code that means the function ran out of memory. negative so it does +@@ -914,3 +915,63 @@ + attach_edns_record(buf, &es); + } + } ++ ++void ++fixed_address_encode(sldns_buffer* buf, int r, struct query_info* qinfo, ++ uint16_t qid, uint16_t qflags, struct edns_data* edns, char* data) ++{ ++ uint16_t flags; ++ uint8_t addr_data[16]; ++ size_t addr_len = 16; ++ if (qinfo->qtype == LDNS_RR_TYPE_A) { ++ sldns_str2wire_a_buf(data, addr_data, &addr_len); ++ } else if (qinfo->qtype == LDNS_RR_TYPE_AAAA) { ++ sldns_str2wire_aaaa_buf(data, addr_data, &addr_len); ++ } else { ++ return error_encode(buf, LDNS_RCODE_NOERROR, qinfo, qid, qflags, edns); ++ } ++ sldns_buffer_clear(buf); ++ sldns_buffer_write(buf, &qid, sizeof(uint16_t)); ++ flags = (uint16_t)(BIT_QR | BIT_RA | r); /* QR and retcode*/ ++ flags |= (qflags & (BIT_RD|BIT_CD)); /* copy RD and CD bit */ ++ sldns_buffer_write_u16(buf, flags); ++ if(qinfo) flags = 1; ++ else flags = 0; ++ sldns_buffer_write_u16(buf, flags); ++ sldns_buffer_write_u16(buf, 1); ++ flags = 0; ++ sldns_buffer_write(buf, &flags, sizeof(uint16_t)); ++ sldns_buffer_write(buf, &flags, sizeof(uint16_t)); ++ if(qinfo) { ++ // query ++ if(sldns_buffer_current(buf) == qinfo->qname) ++ sldns_buffer_skip(buf, (ssize_t)qinfo->qname_len); ++ else sldns_buffer_write(buf, qinfo->qname, qinfo->qname_len); ++ sldns_buffer_write_u16(buf, qinfo->qtype); ++ sldns_buffer_write_u16(buf, qinfo->qclass); ++ // faked answer ++ if(sldns_buffer_current(buf) == qinfo->qname) ++ sldns_buffer_skip(buf, (ssize_t)qinfo->qname_len); ++ else sldns_buffer_write(buf, qinfo->qname, qinfo->qname_len); ++ sldns_buffer_write_u16(buf, qinfo->qtype); ++ sldns_buffer_write_u16(buf, qinfo->qclass); ++ sldns_buffer_write_u16(buf, 0); ++ // TTL. Should we make this configurable too? ++ sldns_buffer_write_u16(buf, 5); ++ sldns_buffer_write_u16(buf, addr_len); ++ sldns_buffer_write(buf, addr_data, addr_len); ++ fflush(stderr); ++ } ++ sldns_buffer_flip(buf); ++ if(edns) { ++ struct edns_data es = *edns; ++ es.edns_version = EDNS_ADVERTISED_VERSION; ++ es.udp_size = EDNS_ADVERTISED_SIZE; ++ es.ext_rcode = 0; ++ es.bits &= EDNS_DO; ++ if(sldns_buffer_limit(buf) + calc_edns_field_size(&es) > ++ edns->udp_size) ++ return; ++ attach_edns_record(buf, &es); ++ } ++} +Index: util/data/msgencode.h +=================================================================== +--- util/data/msgencode.h (revision 4191) ++++ util/data/msgencode.h (working copy) +@@ -128,4 +128,20 @@ + void error_encode(struct sldns_buffer* pkt, int r, struct query_info* qinfo, + uint16_t qid, uint16_t qflags, struct edns_data* edns); + ++/** ++ * Encode a fixed address response. ++ * This is a fake answer to either an A or AAA query ++ * ++ * It will answer with that address ++ * ++ * @param pkt: where to store the packet. ++ * @param r: RCODE value to encode. ++ * @param qinfo: if not NULL, the query is included. ++ * @param qid: query ID to set in packet. network order. ++ * @param qflags: original query flags (to copy RD and CD bits). host order. ++ * @param edns: if not NULL, this is the query edns info, ++ * and an edns reply is attached. Only attached if EDNS record fits reply. ++ */ ++void fixed_address_encode(struct sldns_buffer* pkt, int r, struct query_info* qinfo, ++ uint16_t qid, uint16_t qflags, struct edns_data* edns, char* address); + #endif /* UTIL_DATA_MSGENCODE_H */ diff --git a/external/unbound/contrib/unbound-querycachedb.py b/external/unbound/contrib/unbound-querycachedb.py new file mode 100644 index 0000000..5b4485b --- /dev/null +++ b/external/unbound/contrib/unbound-querycachedb.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python + +import hashlib +import sys +import struct +import socket +import time +from optparse import OptionParser + +import dns.message +import dns.name +import dns.rdataclass +import dns.rdatatype + +def _calc_hashkey(qname, secret, qtype): + qclass = 'IN' # CLASS is fixed for simplicity + hobj = hashlib.sha256() + hobj.update(dns.name.from_text(qname).to_wire()) + hobj.update(struct.pack('HH', + socket.htons(dns.rdatatype.from_text(qtype)), + socket.htons(dns.rdataclass.from_text(qclass)))) + hobj.update(secret) + return hobj.hexdigest().upper() + +def _redis_get(options, key): + import redis + return redis.Redis(options.address, int(options.port)).get(key) + +def _dump_value(options, qname, key, value): + print(';; query=%s/IN/%s' % (qname, options.qtype)) + print(';; key=%s' % key) + if value is None: + print(';; no value') + return + if len(value) < 16: + print(';; broken value, short length: %d' % len(value)) + return + now = int(time.time()) + timestamp = struct.unpack('!Q', value[-16:-8])[0] + expire = struct.unpack('!Q', value[-8:])[0] + print(';; Now=%d, TimeStamp=%d, Expire=%d, TTL=%d' % + (now, timestamp, expire, max(expire - now, 0))) + print(dns.message.from_wire(value[:-16])) + +def main(): + parser = OptionParser(usage='usage: %prog [options] query_name') + parser.add_option("-a", "--address", dest="address", action="store", + default='127.0.0.1', help="backend-server address", + metavar='ADDRESS') + parser.add_option("-b", "--backend", dest="backend", action="store", + default='redis', help="backend name", + metavar='BACKEND') + parser.add_option("-p", "--port", dest="port", action="store", + default='6379', help="backend-server port", + metavar='PORT') + parser.add_option("-s", "--secret", dest="secret", action="store", + default='default', help="secret seed", metavar='SECRET') + parser.add_option("-t", "--qtype", dest="qtype", action="store", + default='A', help="query RR type", metavar='QTYPE') + + (options, args) = parser.parse_args() + if len(args) < 1: + parser.error('qname is missing') + if options.backend == 'redis': + get_func = _redis_get + else: + raise Exception('unknown backend name: %s\n' % options.backend) + key = _calc_hashkey(args[0], options.secret, options.qtype) + value = get_func(options, key) + _dump_value(options, args[0], key, value) + +if __name__ == '__main__': + try: + main() + except Exception as e: + sys.stderr.write('%s\n' % e) + exit(1) diff --git a/external/unbound/contrib/unbound.service.in b/external/unbound/contrib/unbound.service.in new file mode 100644 index 0000000..b385669 --- /dev/null +++ b/external/unbound/contrib/unbound.service.in @@ -0,0 +1,28 @@ +[Unit] +Description=Validating, recursive, and caching DNS resolver +Documentation=man:unbound(8) + +[Install] +WantedBy=multi-user.target + +[Service] +ExecReload=/bin/kill -HUP $MAINPID +ExecStart=@UNBOUND_SBIN_DIR@/unbound +NotifyAccess=main +Type=notify +CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID CAP_SYS_CHROOT +MemoryDenyWriteExecute=true +NoNewPrivileges=true +PrivateDevices=true +PrivateTmp=true +ProtectHome=true +ProtectControlGroups=true +ProtectKernelModules=true +ProtectKernelTunables=true +ProtectSystem=strict +ReadWritePaths=@UNBOUND_SYSCONF_DIR@ @UNBOUND_LOCALSTATE_DIR@ /run @UNBOUND_RUN_DIR@ +RestrictAddressFamilies=AF_INET AF_UNIX +RestrictRealtime=true +SystemCallArchitectures=native +SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module mount @obsolete @resources + diff --git a/external/unbound/contrib/unbound.socket.in b/external/unbound/contrib/unbound.socket.in new file mode 100644 index 0000000..162fb3e --- /dev/null +++ b/external/unbound/contrib/unbound.socket.in @@ -0,0 +1,6 @@ +[Socket] +ListenDatagram=127.0.0.1:1153 +ListenStream=127.0.0.1:1153 +# ListenStream=@UNBOUND_RUN_DIR@/control +[Install] +WantedBy=sockets.target diff --git a/external/unbound/contrib/unbound_cache.sh b/external/unbound/contrib/unbound_cache.sh index fd2b481..b3e876b 100644 --- a/external/unbound/contrib/unbound_cache.sh +++ b/external/unbound/contrib/unbound_cache.sh @@ -171,4 +171,4 @@ elif [ "$save" = "2" ]; then reload_cache $file fi -exit 0 +exit 0 \ No newline at end of file diff --git a/external/unbound/contrib/unbound_cacti.tar.gz b/external/unbound/contrib/unbound_cacti.tar.gz index cc29476c65de13dfbb87cf6ad05a72d8bdd3105d..36bbdecd7abe634191e139c0500478282625bdcb 100644 GIT binary patch delta 11 ScmZqK!_vHmrC|#rvm5{${sZ0s delta 13 UcmZqP!_u;crC|#rvm7HA03*W#=>Px# diff --git a/external/unbound/contrib/unbound_munin_ b/external/unbound/contrib/unbound_munin_ index 69e9f31..5d3dff8 100644 --- a/external/unbound/contrib/unbound_munin_ +++ b/external/unbound/contrib/unbound_munin_ @@ -150,7 +150,7 @@ get_state ( ) { fi done # try to get it - echo $$ >$lock + if echo $$ >$lock ; then : ; else break; fi done # do not refetch if the file exists and only LEE seconds old if test -f $state; then @@ -266,7 +266,6 @@ if test "$1" = "config" ; then echo "graph_args --base 1024 -l 0" echo "graph_vlabel memory used in bytes" echo "graph_category DNS" - p_config "mem.total.sbrk" "Total memory" "GAUGE" p_config "mem.cache.rrset" "RRset cache memory" "GAUGE" p_config "mem.cache.message" "Message cache memory" "GAUGE" p_config "mem.mod.iterator" "Iterator module memory" "GAUGE" @@ -458,20 +457,6 @@ queue) done ;; memory) - mn=`echo mem.total.sbrk | sed $ABBREV | tr . _` - get_value 'mem.total.sbrk' - if test $value -eq 0; then - chk=`echo $ctrl | sed -e 's/-control$/-checkconf/'` - pidf=`$chk -o pidfile $conf 2>&1` - pid=`cat $pidf 2>&1` - value=`ps -p "$pid" -o rss= 2>&1` - if test "`expr $value + 1 - 1 2>&1`" -eq "$value" 2>&1; then - value=`expr $value \* 1024` - else - value=0 - fi - fi - echo "$mn.value" $value for x in mem.cache.rrset mem.cache.message mem.mod.iterator \ mem.mod.validator msg.cache.count rrset.cache.count \ infra.cache.count key.cache.count; do diff --git a/external/unbound/contrib/unbound_smf22.tar.gz b/external/unbound/contrib/unbound_smf22.tar.gz index 4845c3354c77a53f32a18e791b74b3804d1162f3..e4c51c3dc6c1054b59ae8d3218bd52930b6097fc 100644 GIT binary patch delta 7 OcmaE?{78AjBS8QU=>x9- delta 9 QcmaE){8)LzBSA(k02fgMx&QzG diff --git a/external/unbound/contrib/warmup.cmd b/external/unbound/contrib/warmup.cmd index b2f1786..40b7c5a 100644 --- a/external/unbound/contrib/warmup.cmd +++ b/external/unbound/contrib/warmup.cmd @@ -150,4 +150,4 @@ echo Saving cache... if exist unbound_cache.cmd unbound_cache.cmd -s echo Done. -exit 0 +exit 0 \ No newline at end of file diff --git a/external/unbound/daemon/acl_list.c b/external/unbound/daemon/acl_list.c index 84d099c..c16a920 100644 --- a/external/unbound/daemon/acl_list.c +++ b/external/unbound/daemon/acl_list.c @@ -45,6 +45,8 @@ #include "util/log.h" #include "util/config_file.h" #include "util/net_help.h" +#include "services/localzone.h" +#include "sldns/str2wire.h" struct acl_list* acl_list_create(void) @@ -71,21 +73,21 @@ acl_list_delete(struct acl_list* acl) } /** insert new address into acl_list structure */ -static int +static struct acl_addr* acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr, socklen_t addrlen, int net, enum acl_access control, int complain_duplicates) { - struct acl_addr* node = regional_alloc(acl->region, + struct acl_addr* node = regional_alloc_zero(acl->region, sizeof(struct acl_addr)); if(!node) - return 0; + return NULL; node->control = control; if(!addr_tree_insert(&acl->tree, &node->node, addr, addrlen, net)) { if(complain_duplicates) verbose(VERB_QUERY, "duplicate acl address ignored."); } - return 1; + return node; } /** apply acl_list string */ @@ -109,6 +111,8 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, control = acl_refuse_non_local; else if(strcmp(s2, "allow_snoop") == 0) control = acl_allow_snoop; + else if(strcmp(s2, "allow_setrd") == 0) + control = acl_allow_setrd; else { log_err("access control type %s unknown", str); return 0; @@ -125,6 +129,205 @@ acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2, return 1; } +/** find or create node (NULL on parse or error) */ +static struct acl_addr* +acl_find_or_create(struct acl_list* acl, const char* str) +{ + struct acl_addr* node; + struct sockaddr_storage addr; + int net; + socklen_t addrlen; + if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { + log_err("cannot parse netblock: %s", str); + return NULL; + } + /* find or create node */ + if(!(node=(struct acl_addr*)addr_tree_find(&acl->tree, &addr, + addrlen, net))) { + /* create node, type 'allow' since otherwise tags are + * pointless, can override with specific access-control: cfg */ + if(!(node=(struct acl_addr*)acl_list_insert(acl, &addr, + addrlen, net, acl_allow, 1))) { + log_err("out of memory"); + return NULL; + } + } + return node; +} + +/** apply acl_tag string */ +static int +acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap, + size_t bitmaplen) +{ + struct acl_addr* node; + if(!(node=acl_find_or_create(acl, str))) + return 0; + node->taglen = bitmaplen; + node->taglist = regional_alloc_init(acl->region, bitmap, bitmaplen); + if(!node->taglist) { + log_err("out of memory"); + return 0; + } + return 1; +} + +/** apply acl_view string */ +static int +acl_list_view_cfg(struct acl_list* acl, const char* str, const char* str2, + struct views* vs) +{ + struct acl_addr* node; + if(!(node=acl_find_or_create(acl, str))) + return 0; + node->view = views_find_view(vs, str2, 0 /* get read lock*/); + if(!node->view) { + log_err("no view with name: %s", str2); + return 0; + } + lock_rw_unlock(&node->view->lock); + return 1; +} + +/** apply acl_tag_action string */ +static int +acl_list_tag_action_cfg(struct acl_list* acl, struct config_file* cfg, + const char* str, const char* tag, const char* action) +{ + struct acl_addr* node; + int tagid; + enum localzone_type t; + if(!(node=acl_find_or_create(acl, str))) + return 0; + /* allocate array if not yet */ + if(!node->tag_actions) { + node->tag_actions = (uint8_t*)regional_alloc_zero(acl->region, + sizeof(*node->tag_actions)*cfg->num_tags); + if(!node->tag_actions) { + log_err("out of memory"); + return 0; + } + node->tag_actions_size = (size_t)cfg->num_tags; + } + /* parse tag */ + if((tagid=find_tag_id(cfg, tag)) == -1) { + log_err("cannot parse tag (define-tag it): %s %s", str, tag); + return 0; + } + if((size_t)tagid >= node->tag_actions_size) { + log_err("tagid too large for array %s %s", str, tag); + return 0; + } + if(!local_zone_str2type(action, &t)) { + log_err("cannot parse access control action type: %s %s %s", + str, tag, action); + return 0; + } + node->tag_actions[tagid] = (uint8_t)t; + return 1; +} + +/** check wire data parse */ +static int +check_data(const char* data, const struct config_strlist* head) +{ + char buf[65536]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr); + int res; + /* '.' is sufficient for validation, and it makes the call to + * sldns_wirerr_get_type() simpler below. */ + snprintf(buf, sizeof(buf), "%s %s", ".", data); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, NULL, 0, + NULL, 0); + + /* Reject it if we would end up having CNAME and other data (including + * another CNAME) for the same tag. */ + if(res == 0 && head) { + const char* err_data = NULL; + + if(sldns_wirerr_get_type(rr, len, 1) == LDNS_RR_TYPE_CNAME) { + /* adding CNAME while other data already exists. */ + err_data = data; + } else { + snprintf(buf, sizeof(buf), "%s %s", ".", head->str); + len = sizeof(rr); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, + NULL, 0, NULL, 0); + if(res != 0) { + /* This should be impossible here as head->str + * has been validated, but we check it just in + * case. */ + return 0; + } + if(sldns_wirerr_get_type(rr, len, 1) == + LDNS_RR_TYPE_CNAME) /* already have CNAME */ + err_data = head->str; + } + if(err_data) { + log_err("redirect tag data '%s' must not coexist with " + "other data.", err_data); + return 0; + } + } + if(res == 0) + return 1; + log_err("rr data [char %d] parse error %s", + (int)LDNS_WIREPARSE_OFFSET(res)-13, + sldns_get_errorstr_parse(res)); + return 0; +} + +/** apply acl_tag_data string */ +static int +acl_list_tag_data_cfg(struct acl_list* acl, struct config_file* cfg, + const char* str, const char* tag, const char* data) +{ + struct acl_addr* node; + int tagid; + char* dupdata; + if(!(node=acl_find_or_create(acl, str))) + return 0; + /* allocate array if not yet */ + if(!node->tag_datas) { + node->tag_datas = (struct config_strlist**)regional_alloc_zero( + acl->region, sizeof(*node->tag_datas)*cfg->num_tags); + if(!node->tag_datas) { + log_err("out of memory"); + return 0; + } + node->tag_datas_size = (size_t)cfg->num_tags; + } + /* parse tag */ + if((tagid=find_tag_id(cfg, tag)) == -1) { + log_err("cannot parse tag (define-tag it): %s %s", str, tag); + return 0; + } + if((size_t)tagid >= node->tag_datas_size) { + log_err("tagid too large for array %s %s", str, tag); + return 0; + } + + /* check data? */ + if(!check_data(data, node->tag_datas[tagid])) { + log_err("cannot parse access-control-tag data: %s %s '%s'", + str, tag, data); + return 0; + } + + dupdata = regional_strdup(acl->region, data); + if(!dupdata) { + log_err("out of memory"); + return 0; + } + if(!cfg_region_strlist_insert(acl->region, + &(node->tag_datas[tagid]), dupdata)) { + log_err("out of memory"); + return 0; + } + return 1; +} + /** read acl_list config */ static int read_acl_list(struct acl_list* acl, struct config_file* cfg) @@ -138,13 +341,114 @@ read_acl_list(struct acl_list* acl, struct config_file* cfg) return 1; } +/** read acl tags config */ +static int +read_acl_tags(struct acl_list* acl, struct config_file* cfg) +{ + struct config_strbytelist* np, *p = cfg->acl_tags; + cfg->acl_tags = NULL; + while(p) { + log_assert(p->str && p->str2); + if(!acl_list_tags_cfg(acl, p->str, p->str2, p->str2len)) { + config_del_strbytelist(p); + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + +/** read acl view config */ +static int +read_acl_view(struct acl_list* acl, struct config_file* cfg, struct views* v) +{ + struct config_str2list* np, *p = cfg->acl_view; + cfg->acl_view = NULL; + while(p) { + log_assert(p->str && p->str2); + if(!acl_list_view_cfg(acl, p->str, p->str2, v)) { + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + +/** read acl tag actions config */ +static int +read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg) +{ + struct config_str3list* p, *np; + p = cfg->acl_tag_actions; + cfg->acl_tag_actions = NULL; + while(p) { + log_assert(p->str && p->str2 && p->str3); + if(!acl_list_tag_action_cfg(acl, cfg, p->str, p->str2, + p->str3)) { + config_deltrplstrlist(p); + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p->str3); + free(p); + p = np; + } + return 1; +} + +/** read acl tag datas config */ +static int +read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg) +{ + struct config_str3list* p, *np; + p = cfg->acl_tag_datas; + cfg->acl_tag_datas = NULL; + while(p) { + log_assert(p->str && p->str2 && p->str3); + if(!acl_list_tag_data_cfg(acl, cfg, p->str, p->str2, p->str3)) { + config_deltrplstrlist(p); + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p->str3); + free(p); + p = np; + } + return 1; +} + int -acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg) +acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, + struct views* v) { regional_free_all(acl->region); addr_tree_init(&acl->tree); if(!read_acl_list(acl, cfg)) return 0; + if(!read_acl_view(acl, cfg, v)) + return 0; + if(!read_acl_tags(acl, cfg)) + return 0; + if(!read_acl_tag_actions(acl, cfg)) + return 0; + if(!read_acl_tag_datas(acl, cfg)) + return 0; /* insert defaults, with '0' to ignore them if they are duplicates */ if(!acl_list_str_cfg(acl, "0.0.0.0/0", "refuse", 0)) return 0; @@ -163,13 +467,18 @@ acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg) } enum acl_access -acl_list_lookup(struct acl_list* acl, struct sockaddr_storage* addr, +acl_get_control(struct acl_addr* acl) +{ + if(acl) return acl->control; + return acl_deny; +} + +struct acl_addr* +acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr, socklen_t addrlen) { - struct acl_addr* r = (struct acl_addr*)addr_tree_lookup(&acl->tree, + return (struct acl_addr*)addr_tree_lookup(&acl->tree, addr, addrlen); - if(r) return r->control; - return acl_deny; } size_t diff --git a/external/unbound/daemon/acl_list.h b/external/unbound/daemon/acl_list.h index 2323697..3a3b94b 100644 --- a/external/unbound/daemon/acl_list.h +++ b/external/unbound/daemon/acl_list.h @@ -43,6 +43,7 @@ #ifndef DAEMON_ACL_LIST_H #define DAEMON_ACL_LIST_H #include "util/storage/dnstree.h" +#include "services/view.h" struct config_file; struct regional; @@ -62,7 +63,9 @@ enum acl_access { /** allow full access for recursion (+RD) queries */ acl_allow, /** allow full access for all queries, recursion and cache snooping */ - acl_allow_snoop + acl_allow_snoop, + /** allow full access for recursion queries and set RD flag regardless of request */ + acl_allow_setrd }; /** @@ -75,7 +78,7 @@ struct acl_list { * Tree of the addresses that are allowed/blocked. * contents of type acl_addr. */ - rbtree_t tree; + rbtree_type tree; }; /** @@ -87,6 +90,21 @@ struct acl_addr { struct addr_tree_node node; /** access control on this netblock */ enum acl_access control; + /** tag bitlist */ + uint8_t* taglist; + /** length of the taglist (in bytes) */ + size_t taglen; + /** array per tagnumber of localzonetype(in one byte). NULL if none. */ + uint8_t* tag_actions; + /** size of the tag_actions_array */ + size_t tag_actions_size; + /** array per tagnumber, with per tag a list of rdata strings. + * NULL if none. strings are like 'A 127.0.0.1' 'AAAA ::1' */ + struct config_strlist** tag_datas; + /** size of the tag_datas array */ + size_t tag_datas_size; + /* view element, NULL if none */ + struct view* view; }; /** @@ -105,19 +123,29 @@ void acl_list_delete(struct acl_list* acl); * Process access control config. * @param acl: where to store. * @param cfg: config options. + * @param v: views structure * @return 0 on error. */ -int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg); +int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, + struct views* v); /** - * Lookup address to see its access control status. + * Lookup access control status for acl structure. + * @param acl: structure for acl storage. + * @return: what to do with message from this address. + */ +enum acl_access acl_get_control(struct acl_addr* acl); + +/** + * Lookup address to see its acl structure * @param acl: structure for address storage. * @param addr: address to check * @param addrlen: length of addr. - * @return: what to do with message from this address. + * @return: acl structure from this address. */ -enum acl_access acl_list_lookup(struct acl_list* acl, - struct sockaddr_storage* addr, socklen_t addrlen); +struct acl_addr* +acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr, + socklen_t addrlen); /** * Get memory used by acl structure. diff --git a/external/unbound/daemon/cachedump.c b/external/unbound/daemon/cachedump.c index 4b0a583..5a72e9d 100644 --- a/external/unbound/daemon/cachedump.c +++ b/external/unbound/daemon/cachedump.c @@ -62,7 +62,7 @@ /** dump one rrset zonefile line */ static int -dump_rrset_line(SSL* ssl, struct ub_packed_rrset_key* k, time_t now, size_t i) +dump_rrset_line(RES* ssl, struct ub_packed_rrset_key* k, time_t now, size_t i) { char s[65535]; if(!packed_rr_to_string(k, i, now, s, sizeof(s))) { @@ -73,12 +73,13 @@ dump_rrset_line(SSL* ssl, struct ub_packed_rrset_key* k, time_t now, size_t i) /** dump rrset key and data info */ static int -dump_rrset(SSL* ssl, struct ub_packed_rrset_key* k, +dump_rrset(RES* ssl, struct ub_packed_rrset_key* k, struct packed_rrset_data* d, time_t now) { size_t i; /* rd lock held by caller */ if(!k || !d) return 1; + if(k->id == 0) return 1; /* deleted */ if(d->ttl < now) return 1; /* expired */ /* meta line */ @@ -98,7 +99,7 @@ dump_rrset(SSL* ssl, struct ub_packed_rrset_key* k, /** dump lruhash rrset cache */ static int -dump_rrset_lruhash(SSL* ssl, struct lruhash* h, time_t now) +dump_rrset_lruhash(RES* ssl, struct lruhash* h, time_t now) { struct lruhash_entry* e; /* lruhash already locked by caller */ @@ -117,7 +118,7 @@ dump_rrset_lruhash(SSL* ssl, struct lruhash* h, time_t now) /** dump rrset cache */ static int -dump_rrset_cache(SSL* ssl, struct worker* worker) +dump_rrset_cache(RES* ssl, struct worker* worker) { struct rrset_cache* r = worker->env.rrset_cache; size_t slab; @@ -136,7 +137,7 @@ dump_rrset_cache(SSL* ssl, struct worker* worker) /** dump message to rrset reference */ static int -dump_msg_ref(SSL* ssl, struct ub_packed_rrset_key* k) +dump_msg_ref(RES* ssl, struct ub_packed_rrset_key* k) { char* nm, *tp, *cl; nm = sldns_wire2str_dname(k->rk.dname, k->rk.dname_len); @@ -163,7 +164,7 @@ dump_msg_ref(SSL* ssl, struct ub_packed_rrset_key* k) /** dump message entry */ static int -dump_msg(SSL* ssl, struct query_info* k, struct reply_info* d, +dump_msg(RES* ssl, struct query_info* k, struct reply_info* d, time_t now) { size_t i; @@ -245,7 +246,7 @@ copy_msg(struct regional* region, struct lruhash_entry* e, /** dump lruhash msg cache */ static int -dump_msg_lruhash(SSL* ssl, struct worker* worker, struct lruhash* h) +dump_msg_lruhash(RES* ssl, struct worker* worker, struct lruhash* h) { struct lruhash_entry* e; struct query_info* k; @@ -273,7 +274,7 @@ dump_msg_lruhash(SSL* ssl, struct worker* worker, struct lruhash* h) /** dump msg cache */ static int -dump_msg_cache(SSL* ssl, struct worker* worker) +dump_msg_cache(RES* ssl, struct worker* worker) { struct slabhash* sh = worker->env.msg_cache; size_t slab; @@ -290,7 +291,7 @@ dump_msg_cache(SSL* ssl, struct worker* worker) } int -dump_cache(SSL* ssl, struct worker* worker) +dump_cache(RES* ssl, struct worker* worker) { if(!dump_rrset_cache(ssl, worker)) return 0; @@ -301,7 +302,7 @@ dump_cache(SSL* ssl, struct worker* worker) /** read a line from ssl into buffer */ static int -ssl_read_buf(SSL* ssl, sldns_buffer* buf) +ssl_read_buf(RES* ssl, sldns_buffer* buf) { return ssl_read_line(ssl, (char*)sldns_buffer_begin(buf), sldns_buffer_capacity(buf)); @@ -309,7 +310,7 @@ ssl_read_buf(SSL* ssl, sldns_buffer* buf) /** check fixed text on line */ static int -read_fixed(SSL* ssl, sldns_buffer* buf, const char* str) +read_fixed(RES* ssl, sldns_buffer* buf, const char* str) { if(!ssl_read_buf(ssl, buf)) return 0; return (strcmp((char*)sldns_buffer_begin(buf), str) == 0); @@ -317,7 +318,7 @@ read_fixed(SSL* ssl, sldns_buffer* buf, const char* str) /** load an RR into rrset */ static int -load_rr(SSL* ssl, sldns_buffer* buf, struct regional* region, +load_rr(RES* ssl, sldns_buffer* buf, struct regional* region, struct ub_packed_rrset_key* rk, struct packed_rrset_data* d, unsigned int i, int is_rrsig, int* go_on, time_t now) { @@ -434,7 +435,7 @@ move_into_cache(struct ub_packed_rrset_key* k, /** load an rrset entry */ static int -load_rrset(SSL* ssl, sldns_buffer* buf, struct worker* worker) +load_rrset(RES* ssl, sldns_buffer* buf, struct worker* worker) { char* s = (char*)sldns_buffer_begin(buf); struct regional* region = worker->scratchpad; @@ -518,7 +519,7 @@ load_rrset(SSL* ssl, sldns_buffer* buf, struct worker* worker) /** load rrset cache */ static int -load_rrset_cache(SSL* ssl, struct worker* worker) +load_rrset_cache(RES* ssl, struct worker* worker) { sldns_buffer* buf = worker->env.scratch_buffer; if(!read_fixed(ssl, buf, "START_RRSET_CACHE")) return 0; @@ -563,6 +564,7 @@ load_qinfo(char* str, struct query_info* qinfo, struct regional* region) qinfo->qclass = sldns_wirerr_get_class(rr, rr_len, dname_len); qinfo->qname_len = dname_len; qinfo->qname = (uint8_t*)regional_alloc_init(region, rr, dname_len); + qinfo->local_alias = NULL; if(!qinfo->qname) { log_warn("error out of memory"); return NULL; @@ -573,7 +575,7 @@ load_qinfo(char* str, struct query_info* qinfo, struct regional* region) /** load a msg rrset reference */ static int -load_ref(SSL* ssl, sldns_buffer* buf, struct worker* worker, +load_ref(RES* ssl, sldns_buffer* buf, struct worker* worker, struct regional *region, struct ub_packed_rrset_key** rrset, int* go_on) { @@ -618,7 +620,7 @@ load_ref(SSL* ssl, sldns_buffer* buf, struct worker* worker, /** load a msg entry */ static int -load_msg(SSL* ssl, sldns_buffer* buf, struct worker* worker) +load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) { struct regional* region = worker->scratchpad; struct query_info qinf; @@ -683,7 +685,7 @@ load_msg(SSL* ssl, sldns_buffer* buf, struct worker* worker) /** load msg cache */ static int -load_msg_cache(SSL* ssl, struct worker* worker) +load_msg_cache(RES* ssl, struct worker* worker) { sldns_buffer* buf = worker->env.scratch_buffer; if(!read_fixed(ssl, buf, "START_MSG_CACHE")) return 0; @@ -696,7 +698,7 @@ load_msg_cache(SSL* ssl, struct worker* worker) } int -load_cache(SSL* ssl, struct worker* worker) +load_cache(RES* ssl, struct worker* worker) { if(!load_rrset_cache(ssl, worker)) return 0; @@ -707,7 +709,7 @@ load_cache(SSL* ssl, struct worker* worker) /** print details on a delegation point */ static void -print_dp_details(SSL* ssl, struct worker* worker, struct delegpt* dp) +print_dp_details(RES* ssl, struct worker* worker, struct delegpt* dp) { char buf[257]; struct delegpt_addr* a; @@ -783,7 +785,7 @@ print_dp_details(SSL* ssl, struct worker* worker, struct delegpt* dp) /** print main dp info */ static void -print_dp_main(SSL* ssl, struct delegpt* dp, struct dns_msg* msg) +print_dp_main(RES* ssl, struct delegpt* dp, struct dns_msg* msg) { size_t i, n_ns, n_miss, n_addr, n_res, n_avail; @@ -811,7 +813,7 @@ print_dp_main(SSL* ssl, struct delegpt* dp, struct dns_msg* msg) return; } -int print_deleg_lookup(SSL* ssl, struct worker* worker, uint8_t* nm, +int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm, size_t nmlen, int ATTR_UNUSED(nmlabs)) { /* deep links into the iterator module */ @@ -826,6 +828,7 @@ int print_deleg_lookup(SSL* ssl, struct worker* worker, uint8_t* nm, qinfo.qname_len = nmlen; qinfo.qtype = LDNS_RR_TYPE_A; qinfo.qclass = LDNS_RR_CLASS_IN; + qinfo.local_alias = NULL; dname_str(nm, b); if(!ssl_printf(ssl, "The following name servers are used for lookup " diff --git a/external/unbound/daemon/cachedump.h b/external/unbound/daemon/cachedump.h index 0f2feab..72c172d 100644 --- a/external/unbound/daemon/cachedump.h +++ b/external/unbound/daemon/cachedump.h @@ -72,6 +72,7 @@ #ifndef DAEMON_DUMPCACHE_H #define DAEMON_DUMPCACHE_H struct worker; +#include "daemon/remote.h" /** * Dump cache(s) to text @@ -80,7 +81,7 @@ struct worker; * ptrs to the caches. * @return false on ssl print error. */ -int dump_cache(SSL* ssl, struct worker* worker); +int dump_cache(RES* ssl, struct worker* worker); /** * Load cache(s) from text @@ -89,7 +90,7 @@ int dump_cache(SSL* ssl, struct worker* worker); * ptrs to the caches. * @return false on ssl error. */ -int load_cache(SSL* ssl, struct worker* worker); +int load_cache(RES* ssl, struct worker* worker); /** * Print the delegation used to lookup for this name. @@ -101,7 +102,7 @@ int load_cache(SSL* ssl, struct worker* worker); * @param nmlabs: labels in name. * @return false on ssl error. */ -int print_deleg_lookup(SSL* ssl, struct worker* worker, uint8_t* nm, +int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm, size_t nmlen, int nmlabs); #endif /* DAEMON_DUMPCACHE_H */ diff --git a/external/unbound/daemon/daemon.c b/external/unbound/daemon/daemon.c index e763f72..6820e11 100644 --- a/external/unbound/daemon/daemon.c +++ b/external/unbound/daemon/daemon.c @@ -73,20 +73,28 @@ #include "util/log.h" #include "util/config_file.h" #include "util/data/msgreply.h" +#include "util/shm_side/shm_main.h" #include "util/storage/lookup3.h" #include "util/storage/slabhash.h" #include "services/listen_dnsport.h" #include "services/cache/rrset.h" #include "services/cache/infra.h" #include "services/localzone.h" +#include "services/view.h" #include "services/modstack.h" +#include "services/authzone.h" #include "util/module.h" #include "util/random.h" #include "util/tube.h" #include "util/net_help.h" #include "sldns/keyraw.h" +#include "respip/respip.h" #include +#ifdef HAVE_SYSTEMD +#include +#endif + /** How many quit requests happened. */ static int sig_record_quit = 0; /** How many reload requests happened. */ @@ -174,8 +182,15 @@ static void signal_handling_playback(struct worker* wrk) { #ifdef SIGHUP - if(sig_record_reload) + if(sig_record_reload) { +# ifdef HAVE_SYSTEMD + sd_notify(0, "RELOADING=1"); +# endif worker_sighandler(SIGHUP, wrk); +# ifdef HAVE_SYSTEMD + sd_notify(0, "READY=1"); +# endif + } #endif if(sig_record_quit) worker_sighandler(SIGTERM, wrk); @@ -204,20 +219,31 @@ daemon_init(void) signal_handling_record(); checklock_start(); #ifdef HAVE_SSL +# ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS ERR_load_crypto_strings(); - ERR_load_SSL_strings(); -# ifdef HAVE_OPENSSL_CONFIG - OPENSSL_config("unbound"); # endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + ERR_load_SSL_strings(); +#endif # ifdef USE_GOST (void)sldns_key_EVP_load_gost_id(); # endif +# if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) OpenSSL_add_all_algorithms(); +# else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +# endif # if HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS /* grab the COMP method ptr because openssl leaks it */ comp_meth = (void*)SSL_COMP_get_compression_methods(); # endif +# if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) (void)SSL_library_init(); +# else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +# endif # if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) if(!ub_openssl_lock_init()) fatal_exit("could not init openssl locks"); @@ -239,9 +265,16 @@ daemon_init(void) free(daemon); return NULL; } + /* init edns_known_options */ + if(!edns_known_options_init(daemon->env)) { + free(daemon->env); + free(daemon); + return NULL; + } alloc_init(&daemon->superalloc, NULL, 0); daemon->acl = acl_list_create(); if(!daemon->acl) { + edns_known_options_delete(daemon->env); free(daemon->env); free(daemon); return NULL; @@ -249,6 +282,13 @@ daemon_init(void) if(gettimeofday(&daemon->time_boot, NULL) < 0) log_err("gettimeofday: %s", strerror(errno)); daemon->time_last_stat = daemon->time_boot; + if((daemon->env->auth_zones = auth_zones_create()) == 0) { + acl_list_delete(daemon->acl); + edns_known_options_delete(daemon->env); + free(daemon->env); + free(daemon); + return NULL; + } return daemon; } @@ -338,6 +378,7 @@ static void daemon_setup_modules(struct daemon* daemon) daemon->env)) { fatal_exit("failed to setup modules"); } + log_edns_known_options(VERB_ALGO, daemon->env); } /** @@ -390,8 +431,8 @@ daemon_create_workers(struct daemon* daemon) daemon->rand = ub_initstate(seed, NULL); if(!daemon->rand) fatal_exit("could not init random generator"); + hash_set_raninit((uint32_t)ub_random(daemon->rand)); } - hash_set_raninit((uint32_t)ub_random(daemon->rand)); shufport = (int*)calloc(65536, sizeof(int)); if(!shufport) fatal_exit("out of memory during daemon init"); @@ -407,6 +448,8 @@ daemon_create_workers(struct daemon* daemon) } daemon->workers = (struct worker**)calloc((size_t)daemon->num, sizeof(struct worker*)); + if(!daemon->workers) + fatal_exit("out of memory during daemon init"); if(daemon->cfg->dnstap) { #ifdef USE_DNSTAP daemon->dtenv = dt_create(daemon->cfg->dnstap_socket_path, @@ -530,17 +573,59 @@ daemon_stop_others(struct daemon* daemon) void daemon_fork(struct daemon* daemon) { + int have_view_respip_cfg = 0; + log_assert(daemon); - if(!acl_list_apply_cfg(daemon->acl, daemon->cfg)) + if(!(daemon->views = views_create())) + fatal_exit("Could not create views: out of memory"); + /* create individual views and their localzone/data trees */ + if(!views_apply_cfg(daemon->views, daemon->cfg)) + fatal_exit("Could not set up views"); + + if(!acl_list_apply_cfg(daemon->acl, daemon->cfg, daemon->views)) fatal_exit("Could not setup access control list"); + if(daemon->cfg->dnscrypt) { +#ifdef USE_DNSCRYPT + daemon->dnscenv = dnsc_create(); + if (!daemon->dnscenv) + fatal_exit("dnsc_create failed"); + dnsc_apply_cfg(daemon->dnscenv, daemon->cfg); +#else + fatal_exit("dnscrypt enabled in config but unbound was not built with " + "dnscrypt support"); +#endif + } + /* create global local_zones */ if(!(daemon->local_zones = local_zones_create())) fatal_exit("Could not create local zones: out of memory"); if(!local_zones_apply_cfg(daemon->local_zones, daemon->cfg)) fatal_exit("Could not set up local zones"); + /* process raw response-ip configuration data */ + if(!(daemon->respip_set = respip_set_create())) + fatal_exit("Could not create response IP set"); + if(!respip_global_apply_cfg(daemon->respip_set, daemon->cfg)) + fatal_exit("Could not set up response IP set"); + if(!respip_views_apply_cfg(daemon->views, daemon->cfg, + &have_view_respip_cfg)) + fatal_exit("Could not set up per-view response IP sets"); + daemon->use_response_ip = !respip_set_is_empty(daemon->respip_set) || + have_view_respip_cfg; + + /* read auth zonefiles */ + if(!auth_zones_apply_cfg(daemon->env->auth_zones, daemon->cfg, 1)) + fatal_exit("auth_zones could not be setup"); + /* setup modules */ daemon_setup_modules(daemon); + /* response-ip-xxx options don't work as expected without the respip + * module. To avoid run-time operational surprise we reject such + * configuration. */ + if(daemon->use_response_ip && + modstack_find(&daemon->mods, "respip") < 0) + fatal_exit("response-ip options require respip module"); + /* first create all the worker structures, so we can pass * them to the newly created threads. */ @@ -567,14 +652,26 @@ daemon_fork(struct daemon* daemon) #endif signal_handling_playback(daemon->workers[0]); + if (!shm_main_init(daemon)) + log_warn("SHM has failed"); + /* Start resolver service on main thread. */ +#ifdef HAVE_SYSTEMD + sd_notify(0, "READY=1"); +#endif log_info("start of service (%s).", PACKAGE_STRING); worker_work(daemon->workers[0]); +#ifdef HAVE_SYSTEMD + sd_notify(0, "STOPPING=1"); +#endif log_info("service stopped (%s).", PACKAGE_STRING); /* we exited! a signal happened! Stop other threads */ daemon_stop_others(daemon); + /* Shutdown SHM */ + shm_main_shutdown(daemon); + daemon->need_to_exit = daemon->workers[0]->need_to_exit; } @@ -589,21 +686,32 @@ daemon_cleanup(struct daemon* daemon) log_thread_set(NULL); /* clean up caches because * a) RRset IDs will be recycled after a reload, causing collisions - * b) validation config can change, thus rrset, msg, keycache clear - * The infra cache is kept, the timing and edns info is still valid */ + * b) validation config can change, thus rrset, msg, keycache clear */ slabhash_clear(&daemon->env->rrset_cache->table); slabhash_clear(daemon->env->msg_cache); local_zones_delete(daemon->local_zones); daemon->local_zones = NULL; - /* key cache is cleared by module desetup during next daemon_init() */ + respip_set_delete(daemon->respip_set); + daemon->respip_set = NULL; + views_delete(daemon->views); + daemon->views = NULL; + if(daemon->env->auth_zones) + auth_zones_cleanup(daemon->env->auth_zones); + /* key cache is cleared by module desetup during next daemon_fork() */ daemon_remote_clear(daemon->rc); for(i=0; inum; i++) worker_delete(daemon->workers[i]); free(daemon->workers); daemon->workers = NULL; daemon->num = 0; + alloc_clear_special(&daemon->superalloc); #ifdef USE_DNSTAP dt_delete(daemon->dtenv); + daemon->dtenv = NULL; +#endif +#ifdef USE_DNSCRYPT + dnsc_delete(daemon->dnscenv); + daemon->dnscenv = NULL; #endif daemon->cfg = NULL; } @@ -624,6 +732,8 @@ daemon_delete(struct daemon* daemon) slabhash_delete(daemon->env->msg_cache); rrset_cache_delete(daemon->env->rrset_cache); infra_delete(daemon->env->infra_cache); + edns_known_options_delete(daemon->env); + auth_zones_delete(daemon->env->auth_zones); } ub_randfree(daemon->rand); alloc_clear(&daemon->superalloc); @@ -647,21 +757,33 @@ daemon_delete(struct daemon* daemon) # endif # if HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS && HAVE_DECL_SK_SSL_COMP_POP_FREE # ifndef S_SPLINT_S +# if OPENSSL_VERSION_NUMBER < 0x10100000 sk_SSL_COMP_pop_free(comp_meth, (void(*)())CRYPTO_free); +# endif # endif # endif # ifdef HAVE_OPENSSL_CONFIG EVP_cleanup(); +# if OPENSSL_VERSION_NUMBER < 0x10100000 ENGINE_cleanup(); +# endif CONF_modules_free(); # endif +# ifdef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA CRYPTO_cleanup_all_ex_data(); /* safe, no more threads right now */ - ERR_remove_state(0); +# endif +# ifdef HAVE_ERR_FREE_STRINGS ERR_free_strings(); +# endif +# if OPENSSL_VERSION_NUMBER < 0x10100000 RAND_cleanup(); +# endif # if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) ub_openssl_lock_delete(); # endif +#ifndef HAVE_ARC4RANDOM + _ARC4_LOCK_DESTROY(); +#endif #elif defined(HAVE_NSS) NSS_Shutdown(); #endif /* HAVE_SSL or HAVE_NSS */ diff --git a/external/unbound/daemon/daemon.h b/external/unbound/daemon/daemon.h index 86ddab1..031e05d 100644 --- a/external/unbound/daemon/daemon.h +++ b/external/unbound/daemon/daemon.h @@ -45,9 +45,6 @@ #include "util/locks.h" #include "util/alloc.h" #include "services/modstack.h" -#ifdef UB_ON_WINDOWS -# include "util/winsock_event.h" -#endif struct config_file; struct worker; struct listen_port; @@ -56,14 +53,22 @@ struct module_env; struct rrset_cache; struct acl_list; struct local_zones; +struct views; struct ub_randstate; struct daemon_remote; +struct respip_set; +struct shm_main_info; #include "dnstap/dnstap_config.h" #ifdef USE_DNSTAP struct dt_env; #endif +#include "dnscrypt/dnscrypt_config.h" +#ifdef USE_DNSCRYPT +struct dnsc_env; +#endif + /** * Structure holding worker list. * Holds globally visible information. @@ -114,9 +119,20 @@ struct daemon { struct timeval time_last_stat; /** time when daemon started */ struct timeval time_boot; + /** views structure containing view tree */ + struct views* views; #ifdef USE_DNSTAP /** the dnstap environment master value, copied and changed by threads*/ struct dt_env* dtenv; +#endif + struct shm_main_info* shm_info; + /** response-ip set with associated actions and tags. */ + struct respip_set* respip_set; + /** some response-ip tags or actions are configured if true */ + int use_response_ip; +#ifdef USE_DNSCRYPT + /** the dnscrypt environment */ + struct dnsc_env* dnscenv; #endif }; diff --git a/external/unbound/daemon/remote.c b/external/unbound/daemon/remote.c index d533e08..011c55e 100644 --- a/external/unbound/daemon/remote.c +++ b/external/unbound/daemon/remote.c @@ -46,9 +46,12 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif -#ifndef HEADER_DH_H +#ifdef HAVE_OPENSSL_DH_H #include #endif +#ifdef HAVE_OPENSSL_BN_H +#include +#endif #include #include "daemon/remote.h" @@ -65,6 +68,7 @@ #include "services/cache/infra.h" #include "services/mesh.h" #include "services/localzone.h" +#include "services/authzone.h" #include "util/storage/slabhash.h" #include "util/fptr_wlist.h" #include "util/data/dname.h" @@ -121,7 +125,7 @@ timeval_subtract(struct timeval* d, const struct timeval* end, /** divide sum of timers to get average */ static void -timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) +timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) { #ifndef S_SPLINT_S size_t leftover; @@ -138,106 +142,20 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) #endif } -/* - * The following function was generated using the openssl utility, using - * the command : "openssl dhparam -dsaparam -C 1024" - * (some openssl versions reject DH that is 'too small', eg. 512). - */ -#ifndef S_SPLINT_S -DH *get_dh1024() -{ - static unsigned char dh1024_p[]={ - 0xB3,0x67,0x2E,0x3B,0x68,0xC5,0xDA,0x58,0x46,0xD6,0x2B,0xD3, - 0x41,0x78,0x97,0xE4,0xE1,0x61,0x71,0x68,0xE6,0x0F,0x1D,0x78, - 0x05,0xAA,0xF0,0xFF,0x30,0xDF,0xAC,0x49,0x7F,0xE0,0x90,0xFE, - 0xB9,0x56,0x4E,0x3F,0xE2,0x98,0x8A,0xED,0xF5,0x28,0x39,0xEF, - 0x2E,0xA6,0xB7,0x67,0xB2,0x43,0xE4,0x53,0xF8,0xEB,0x2C,0x1F, - 0x06,0x77,0x3A,0x6F,0x62,0x98,0xC1,0x3B,0xF7,0xBA,0x4D,0x93, - 0xF7,0xEB,0x5A,0xAD,0xC5,0x5F,0xF0,0xB7,0x24,0x35,0x81,0xF7, - 0x7F,0x1F,0x24,0xC0,0xDF,0xD3,0xD8,0x40,0x72,0x7E,0xF3,0x19, - 0x2B,0x26,0x27,0xF4,0xB6,0xB3,0xD4,0x7D,0x08,0x23,0xBE,0x68, - 0x2B,0xCA,0xB4,0x46,0xA8,0x9E,0xDD,0x6C,0x3D,0x75,0xA6,0x48, - 0xF7,0x44,0x43,0xBF,0x91,0xC2,0xB4,0x49, - }; - static unsigned char dh1024_g[]={ - 0x5F,0x37,0xB5,0x80,0x4D,0xB4,0xC4,0xB2,0x37,0x12,0xD5,0x2F, - 0x56,0x81,0xB0,0xDF,0x3D,0x27,0xA2,0x54,0xE7,0x14,0x65,0x2D, - 0x72,0xA8,0x97,0xE0,0xA9,0x4A,0x09,0x5E,0x89,0xBE,0x34,0x9A, - 0x90,0x98,0xC1,0xE8,0xBB,0x01,0x2B,0xC2,0x74,0x74,0x90,0x59, - 0x0B,0x72,0x62,0x5C,0xFD,0x49,0x63,0x4B,0x38,0x91,0xF1,0x7F, - 0x13,0x25,0xEB,0x52,0x50,0x47,0xA2,0x8C,0x32,0x28,0x42,0xAC, - 0xBD,0x7A,0xCC,0x58,0xBE,0x36,0xDA,0x6A,0x24,0x06,0xC7,0xF1, - 0xDA,0x8D,0x8A,0x3B,0x03,0xFA,0x6F,0x25,0xE5,0x20,0xA7,0xD6, - 0x6F,0x74,0x61,0x53,0x14,0x81,0x29,0x04,0xB5,0x61,0x12,0x53, - 0xA3,0xD6,0x09,0x98,0x0C,0x8F,0x1C,0xBB,0xD7,0x1C,0x2C,0xEE, - 0x56,0x4B,0x74,0x8F,0x4A,0xF8,0xA9,0xD5, - }; - DH *dh; - - if ((dh=DH_new()) == NULL) return(NULL); - dh->p=BN_bin2bn(dh1024_p,sizeof(dh1024_p),NULL); - dh->g=BN_bin2bn(dh1024_g,sizeof(dh1024_g),NULL); - if ((dh->p == NULL) || (dh->g == NULL)) - { DH_free(dh); return(NULL); } - dh->length = 160; - return(dh); -} -#endif /* SPLINT */ - -struct daemon_remote* -daemon_remote_create(struct config_file* cfg) +static int +remote_setup_ctx(struct daemon_remote* rc, struct config_file* cfg) { char* s_cert; char* s_key; - struct daemon_remote* rc = (struct daemon_remote*)calloc(1, - sizeof(*rc)); - if(!rc) { - log_err("out of memory in daemon_remote_create"); - return NULL; - } - rc->max_active = 10; - - if(!cfg->remote_control_enable) { - rc->ctx = NULL; - return rc; - } rc->ctx = SSL_CTX_new(SSLv23_server_method()); if(!rc->ctx) { log_crypto_err("could not SSL_CTX_new"); - free(rc); - return NULL; - } - /* no SSLv2, SSLv3 because has defects */ - if((SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) - != SSL_OP_NO_SSLv2){ - log_crypto_err("could not set SSL_OP_NO_SSLv2"); - daemon_remote_delete(rc); - return NULL; + return 0; } - if((SSL_CTX_set_options(rc->ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) - != SSL_OP_NO_SSLv3){ - log_crypto_err("could not set SSL_OP_NO_SSLv3"); - daemon_remote_delete(rc); - return NULL; + if(!listen_sslctx_setup(rc->ctx)) { + return 0; } - if (cfg->remote_control_use_cert == 0) { - /* No certificates are requested */ - if(!SSL_CTX_set_cipher_list(rc->ctx, "aNULL")) { - log_crypto_err("Failed to set aNULL cipher list"); - return NULL; - } - - /* Since we have no certificates and hence no source of - * DH params, let's generate and set them - */ - if(!SSL_CTX_set_tmp_dh(rc->ctx,get_dh1024())) { - log_crypto_err("Wanted to set DH param, but failed"); - return NULL; - } - return rc; - } - rc->use_cert = 1; s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); s_key = fname_after_chroot(cfg->server_key_file, cfg, 1); if(!s_cert || !s_key) { @@ -260,36 +178,52 @@ daemon_remote_create(struct config_file* cfg) log_crypto_err("Error in SSL_CTX check_private_key"); goto setup_error; } -#if HAVE_DECL_SSL_CTX_SET_ECDH_AUTO - if(!SSL_CTX_set_ecdh_auto(rc->ctx,1)) { - log_crypto_err("Error in SSL_CTX_ecdh_auto, not enabling ECDHE"); - } -#elif defined(USE_ECDSA) - if(1) { - EC_KEY *ecdh = EC_KEY_new_by_curve_name (NID_X9_62_prime256v1); - if (!ecdh) { - log_crypto_err("could not find p256, not enabling ECDHE"); - } else { - if (1 != SSL_CTX_set_tmp_ecdh (rc->ctx, ecdh)) { - log_crypto_err("Error in SSL_CTX_set_tmp_ecdh, not enabling ECDHE"); - } - EC_KEY_free (ecdh); - } - } -#endif + listen_sslctx_setup_2(rc->ctx); if(!SSL_CTX_load_verify_locations(rc->ctx, s_cert, NULL)) { log_crypto_err("Error setting up SSL_CTX verify locations"); setup_error: free(s_cert); free(s_key); - daemon_remote_delete(rc); - return NULL; + return 0; } SSL_CTX_set_client_CA_list(rc->ctx, SSL_load_client_CA_file(s_cert)); SSL_CTX_set_verify(rc->ctx, SSL_VERIFY_PEER, NULL); free(s_cert); free(s_key); + return 1; +} +struct daemon_remote* +daemon_remote_create(struct config_file* cfg) +{ + struct daemon_remote* rc = (struct daemon_remote*)calloc(1, + sizeof(*rc)); + if(!rc) { + log_err("out of memory in daemon_remote_create"); + return NULL; + } + rc->max_active = 10; + + if(!cfg->remote_control_enable) { + rc->ctx = NULL; + return rc; + } + if(options_remote_is_address(cfg) && cfg->control_use_cert) { + if(!remote_setup_ctx(rc, cfg)) { + daemon_remote_delete(rc); + return NULL; + } + rc->use_cert = 1; + } else { + struct config_strlist* p; + rc->ctx = NULL; + rc->use_cert = 0; + if(!options_remote_is_address(cfg)) + for(p = cfg->control_ifs.first; p; p = p->next) { + if(p->str && p->str[0] != '/') + log_warn("control-interface %s is not using TLS, but plain transfer, because first control-interface in config file is a local socket (starts with a /).", p->str); + } + } return rc; } @@ -350,7 +284,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, if(ip[0] == '/') { /* This looks like a local socket */ - fd = create_local_accept_sock(ip, &noproto); + fd = create_local_accept_sock(ip, &noproto, cfg->use_systemd); /* * Change socket ownership and permissions so users other * than root can access it provided they are in the same @@ -359,8 +293,12 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, if(fd != -1) { #ifdef HAVE_CHOWN if (cfg->username && cfg->username[0] && - cfg_uid != (uid_t)-1) - chown(ip, cfg_uid, cfg_gid); + cfg_uid != (uid_t)-1) { + if(chown(ip, cfg_uid, cfg_gid) == -1) + verbose(VERB_QUERY, "cannot chown %u.%u %s: %s", + (unsigned)cfg_uid, (unsigned)cfg_gid, + ip, strerror(errno)); + } chmod(ip, (mode_t)(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)); #else (void)cfg; @@ -389,7 +327,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, /* open fd */ fd = create_tcp_accept_sock(res, 1, &noproto, 0, - cfg->ip_transparent); + cfg->ip_transparent, 0, cfg->ip_freebind, cfg->use_systemd); freeaddrinfo(res); } @@ -426,9 +364,9 @@ struct listen_port* daemon_remote_open_ports(struct config_file* cfg) { struct listen_port* l = NULL; log_assert(cfg->remote_control_enable && cfg->control_port); - if(cfg->control_ifs) { + if(cfg->control_ifs.first) { struct config_strlist* p; - for(p = cfg->control_ifs; p; p = p->next) { + for(p = cfg->control_ifs.first; p; p = p->next) { if(!add_open(p->str, cfg->control_port, &l, 1, cfg)) { listening_ports_free(l); return NULL; @@ -535,6 +473,7 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, log_err("out of memory"); goto close_exit; } + n->fd = newfd; /* start in reading state */ n->c = comm_point_create_raw(rc->worker->base, newfd, 0, &remote_control_callback, n); @@ -549,22 +488,26 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, comm_point_start_listening(n->c, -1, REMOTE_CONTROL_TCP_TIMEOUT); memcpy(&n->c->repinfo.addr, &addr, addrlen); n->c->repinfo.addrlen = addrlen; - n->shake_state = rc_hs_read; - n->ssl = SSL_new(rc->ctx); - if(!n->ssl) { - log_crypto_err("could not SSL_new"); - comm_point_delete(n->c); - free(n); - goto close_exit; - } - SSL_set_accept_state(n->ssl); - (void)SSL_set_mode(n->ssl, SSL_MODE_AUTO_RETRY); - if(!SSL_set_fd(n->ssl, newfd)) { - log_crypto_err("could not SSL_set_fd"); - SSL_free(n->ssl); - comm_point_delete(n->c); - free(n); - goto close_exit; + if(rc->use_cert) { + n->shake_state = rc_hs_read; + n->ssl = SSL_new(rc->ctx); + if(!n->ssl) { + log_crypto_err("could not SSL_new"); + comm_point_delete(n->c); + free(n); + goto close_exit; + } + SSL_set_accept_state(n->ssl); + (void)SSL_set_mode(n->ssl, SSL_MODE_AUTO_RETRY); + if(!SSL_set_fd(n->ssl, newfd)) { + log_crypto_err("could not SSL_set_fd"); + SSL_free(n->ssl); + comm_point_delete(n->c); + free(n); + goto close_exit; + } + } else { + n->ssl = NULL; } n->rc = rc; @@ -606,27 +549,45 @@ clean_point(struct daemon_remote* rc, struct rc_state* s) } int -ssl_print_text(SSL* ssl, const char* text) +ssl_print_text(RES* res, const char* text) { int r; - if(!ssl) + if(!res) return 0; - ERR_clear_error(); - if((r=SSL_write(ssl, text, (int)strlen(text))) <= 0) { - if(SSL_get_error(ssl, r) == SSL_ERROR_ZERO_RETURN) { - verbose(VERB_QUERY, "warning, in SSL_write, peer " - "closed connection"); + if(res->ssl) { + ERR_clear_error(); + if((r=SSL_write(res->ssl, text, (int)strlen(text))) <= 0) { + if(SSL_get_error(res->ssl, r) == SSL_ERROR_ZERO_RETURN) { + verbose(VERB_QUERY, "warning, in SSL_write, peer " + "closed connection"); + return 0; + } + log_crypto_err("could not SSL_write"); return 0; } - log_crypto_err("could not SSL_write"); - return 0; + } else { + size_t at = 0; + while(at < strlen(text)) { + ssize_t r = send(res->fd, text+at, strlen(text)-at, 0); + if(r == -1) { + if(errno == EAGAIN || errno == EINTR) + continue; +#ifndef USE_WINSOCK + log_err("could not send: %s", strerror(errno)); +#else + log_err("could not send: %s", wsa_strerror(WSAGetLastError())); +#endif + return 0; + } + at += r; + } } return 1; } /** print text over the ssl connection */ static int -ssl_print_vmsg(SSL* ssl, const char* format, va_list args) +ssl_print_vmsg(RES* ssl, const char* format, va_list args) { char msg[1024]; vsnprintf(msg, sizeof(msg), format, args); @@ -634,7 +595,7 @@ ssl_print_vmsg(SSL* ssl, const char* format, va_list args) } /** printf style printing to the ssl connection */ -int ssl_printf(SSL* ssl, const char* format, ...) +int ssl_printf(RES* ssl, const char* format, ...) { va_list args; int ret; @@ -645,21 +606,42 @@ int ssl_printf(SSL* ssl, const char* format, ...) } int -ssl_read_line(SSL* ssl, char* buf, size_t max) +ssl_read_line(RES* res, char* buf, size_t max) { int r; size_t len = 0; - if(!ssl) + if(!res) return 0; while(len < max) { - ERR_clear_error(); - if((r=SSL_read(ssl, buf+len, 1)) <= 0) { - if(SSL_get_error(ssl, r) == SSL_ERROR_ZERO_RETURN) { - buf[len] = 0; - return 1; + if(res->ssl) { + ERR_clear_error(); + if((r=SSL_read(res->ssl, buf+len, 1)) <= 0) { + if(SSL_get_error(res->ssl, r) == SSL_ERROR_ZERO_RETURN) { + buf[len] = 0; + return 1; + } + log_crypto_err("could not SSL_read"); + return 0; + } + } else { + while(1) { + ssize_t rr = recv(res->fd, buf+len, 1, 0); + if(rr <= 0) { + if(rr == 0) { + buf[len] = 0; + return 1; + } + if(errno == EINTR || errno == EAGAIN) + continue; +#ifndef USE_WINSOCK + log_err("could not recv: %s", strerror(errno)); +#else + log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); +#endif + return 0; + } + break; } - log_crypto_err("could not SSL_read"); - return 0; } if(buf[len] == '\n') { /* return string without \n */ @@ -684,14 +666,14 @@ skipwhite(char* str) } /** send the OK to the control client */ -static void send_ok(SSL* ssl) +static void send_ok(RES* ssl) { (void)ssl_printf(ssl, "ok\n"); } /** do the stop command */ static void -do_stop(SSL* ssl, struct daemon_remote* rc) +do_stop(RES* ssl, struct daemon_remote* rc) { rc->worker->need_to_exit = 1; comm_base_exit(rc->worker->base); @@ -700,7 +682,7 @@ do_stop(SSL* ssl, struct daemon_remote* rc) /** do the reload command */ static void -do_reload(SSL* ssl, struct daemon_remote* rc) +do_reload(RES* ssl, struct daemon_remote* rc) { rc->worker->need_to_exit = 0; comm_base_exit(rc->worker->base); @@ -709,7 +691,7 @@ do_reload(SSL* ssl, struct daemon_remote* rc) /** do the verbosity command */ static void -do_verbosity(SSL* ssl, char* str) +do_verbosity(RES* ssl, char* str) { int val = atoi(str); if(val == 0 && strcmp(str, "0") != 0) { @@ -722,11 +704,13 @@ do_verbosity(SSL* ssl, char* str) /** print stats from statinfo */ static int -print_stats(SSL* ssl, const char* nm, struct stats_info* s) +print_stats(RES* ssl, const char* nm, struct ub_stats_info* s) { - struct timeval avg; + struct timeval sumwait, avg; if(!ssl_printf(ssl, "%s.num.queries"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries)) return 0; + if(!ssl_printf(ssl, "%s.num.queries_ip_ratelimited"SQ"%lu\n", nm, + (unsigned long)s->svr.num_queries_ip_ratelimited)) return 0; if(!ssl_printf(ssl, "%s.num.cachehits"SQ"%lu\n", nm, (unsigned long)(s->svr.num_queries - s->svr.num_queries_missed_cache))) return 0; @@ -734,12 +718,24 @@ print_stats(SSL* ssl, const char* nm, struct stats_info* s) (unsigned long)s->svr.num_queries_missed_cache)) return 0; if(!ssl_printf(ssl, "%s.num.prefetch"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_prefetch)) return 0; + if(!ssl_printf(ssl, "%s.num.zero_ttl"SQ"%lu\n", nm, + (unsigned long)s->svr.zero_ttl_responses)) return 0; if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm, (unsigned long)s->mesh_replies_sent)) return 0; +#ifdef USE_DNSCRYPT + if(!ssl_printf(ssl, "%s.num.dnscrypt.crypted"SQ"%lu\n", nm, + (unsigned long)s->svr.num_query_dnscrypt_crypted)) return 0; + if(!ssl_printf(ssl, "%s.num.dnscrypt.cert"SQ"%lu\n", nm, + (unsigned long)s->svr.num_query_dnscrypt_cert)) return 0; + if(!ssl_printf(ssl, "%s.num.dnscrypt.cleartext"SQ"%lu\n", nm, + (unsigned long)s->svr.num_query_dnscrypt_cleartext)) return 0; + if(!ssl_printf(ssl, "%s.num.dnscrypt.malformed"SQ"%lu\n", nm, + (unsigned long)s->svr.num_query_dnscrypt_crypted_malformed)) return 0; +#endif if(!ssl_printf(ssl, "%s.requestlist.avg"SQ"%g\n", nm, (s->svr.num_queries_missed_cache+s->svr.num_queries_prefetch)? (double)s->svr.sum_query_list_size/ - (s->svr.num_queries_missed_cache+ + (double)(s->svr.num_queries_missed_cache+ s->svr.num_queries_prefetch) : 0.0)) return 0; if(!ssl_printf(ssl, "%s.requestlist.max"SQ"%lu\n", nm, (unsigned long)s->svr.max_query_list_size)) return 0; @@ -751,7 +747,11 @@ print_stats(SSL* ssl, const char* nm, struct stats_info* s) (unsigned long)s->mesh_num_states)) return 0; if(!ssl_printf(ssl, "%s.requestlist.current.user"SQ"%lu\n", nm, (unsigned long)s->mesh_num_reply_states)) return 0; - timeval_divide(&avg, &s->mesh_replies_sum_wait, s->mesh_replies_sent); +#ifndef S_SPLINT_S + sumwait.tv_sec = s->mesh_replies_sum_wait_sec; + sumwait.tv_usec = s->mesh_replies_sum_wait_usec; +#endif + timeval_divide(&avg, &sumwait, s->mesh_replies_sent); if(!ssl_printf(ssl, "%s.recursion.time.avg"SQ ARG_LL "d.%6.6d\n", nm, (long long)avg.tv_sec, (int)avg.tv_usec)) return 0; if(!ssl_printf(ssl, "%s.recursion.time.median"SQ"%g\n", nm, @@ -763,9 +763,9 @@ print_stats(SSL* ssl, const char* nm, struct stats_info* s) /** print stats for one thread */ static int -print_thread_stats(SSL* ssl, int i, struct stats_info* s) +print_thread_stats(RES* ssl, int i, struct ub_stats_info* s) { - char nm[16]; + char nm[32]; snprintf(nm, sizeof(nm), "thread%d", i); nm[sizeof(nm)-1]=0; return print_stats(ssl, nm, s); @@ -773,7 +773,7 @@ print_thread_stats(SSL* ssl, int i, struct stats_info* s) /** print long number */ static int -print_longnum(SSL* ssl, const char* desc, size_t x) +print_longnum(RES* ssl, const char* desc, size_t x) { if(x > 1024*1024*1024) { /* more than a Gb */ @@ -788,34 +788,37 @@ print_longnum(SSL* ssl, const char* desc, size_t x) /** print mem stats */ static int -print_mem(SSL* ssl, struct worker* worker, struct daemon* daemon) -{ - int m; - size_t msg, rrset, val, iter; -#ifdef HAVE_SBRK - extern void* unbound_start_brk; - void* cur = sbrk(0); - if(!print_longnum(ssl, "mem.total.sbrk"SQ, - (size_t)((char*)cur - (char*)unbound_start_brk))) return 0; -#endif /* HAVE_SBRK */ +print_mem(RES* ssl, struct worker* worker, struct daemon* daemon) +{ + size_t msg, rrset, val, iter, respip; +#ifdef CLIENT_SUBNET + size_t subnet = 0; +#endif /* CLIENT_SUBNET */ +#ifdef USE_IPSECMOD + size_t ipsecmod = 0; +#endif /* USE_IPSECMOD */ +#ifdef USE_DNSCRYPT + size_t dnscrypt_shared_secret = 0; + size_t dnscrypt_nonce = 0; +#endif /* USE_DNSCRYPT */ msg = slabhash_get_mem(daemon->env->msg_cache); rrset = slabhash_get_mem(&daemon->env->rrset_cache->table); - val=0; - iter=0; - m = modstack_find(&worker->env.mesh->mods, "validator"); - if(m != -1) { - fptr_ok(fptr_whitelist_mod_get_mem(worker->env.mesh-> - mods.mod[m]->get_mem)); - val = (*worker->env.mesh->mods.mod[m]->get_mem) - (&worker->env, m); - } - m = modstack_find(&worker->env.mesh->mods, "iterator"); - if(m != -1) { - fptr_ok(fptr_whitelist_mod_get_mem(worker->env.mesh-> - mods.mod[m]->get_mem)); - iter = (*worker->env.mesh->mods.mod[m]->get_mem) - (&worker->env, m); - } + val = mod_get_mem(&worker->env, "validator"); + iter = mod_get_mem(&worker->env, "iterator"); + respip = mod_get_mem(&worker->env, "respip"); +#ifdef CLIENT_SUBNET + subnet = mod_get_mem(&worker->env, "subnet"); +#endif /* CLIENT_SUBNET */ +#ifdef USE_IPSECMOD + ipsecmod = mod_get_mem(&worker->env, "ipsecmod"); +#endif /* USE_IPSECMOD */ +#ifdef USE_DNSCRYPT + if(daemon->dnscenv) { + dnscrypt_shared_secret = slabhash_get_mem( + daemon->dnscenv->shared_secrets_cache); + dnscrypt_nonce = slabhash_get_mem(daemon->dnscenv->nonces_cache); + } +#endif /* USE_DNSCRYPT */ if(!print_longnum(ssl, "mem.cache.rrset"SQ, rrset)) return 0; @@ -825,12 +828,30 @@ print_mem(SSL* ssl, struct worker* worker, struct daemon* daemon) return 0; if(!print_longnum(ssl, "mem.mod.validator"SQ, val)) return 0; + if(!print_longnum(ssl, "mem.mod.respip"SQ, respip)) + return 0; +#ifdef CLIENT_SUBNET + if(!print_longnum(ssl, "mem.mod.subnet"SQ, subnet)) + return 0; +#endif /* CLIENT_SUBNET */ +#ifdef USE_IPSECMOD + if(!print_longnum(ssl, "mem.mod.ipsecmod"SQ, ipsecmod)) + return 0; +#endif /* USE_IPSECMOD */ +#ifdef USE_DNSCRYPT + if(!print_longnum(ssl, "mem.cache.dnscrypt_shared_secret"SQ, + dnscrypt_shared_secret)) + return 0; + if(!print_longnum(ssl, "mem.cache.dnscrypt_nonce"SQ, + dnscrypt_nonce)) + return 0; +#endif /* USE_DNSCRYPT */ return 1; } /** print uptime stats */ static int -print_uptime(SSL* ssl, struct worker* worker, int reset) +print_uptime(RES* ssl, struct worker* worker, int reset) { struct timeval now = *worker->env.now_tv; struct timeval up, dt; @@ -849,7 +870,7 @@ print_uptime(SSL* ssl, struct worker* worker, int reset) /** print extended histogram */ static int -print_hist(SSL* ssl, struct stats_info* s) +print_hist(RES* ssl, struct ub_stats_info* s) { struct timehist* hist; size_t i; @@ -877,14 +898,14 @@ print_hist(SSL* ssl, struct stats_info* s) /** print extended stats */ static int -print_ext(SSL* ssl, struct stats_info* s) +print_ext(RES* ssl, struct ub_stats_info* s) { int i; char nm[16]; const sldns_rr_descriptor* desc; const sldns_lookup_table* lt; /* TYPE */ - for(i=0; isvr.qtype[i] == 0) continue; desc = sldns_rr_descript((uint16_t)i); @@ -911,7 +932,7 @@ print_ext(SSL* ssl, struct stats_info* s) (unsigned long)s->svr.qtype_big)) return 0; } /* CLASS */ - for(i=0; isvr.qclass[i] == 0) continue; lt = sldns_lookup_by_id(sldns_rr_classes, i); @@ -928,7 +949,7 @@ print_ext(SSL* ssl, struct stats_info* s) (unsigned long)s->svr.qclass_big)) return 0; } /* OPCODE */ - for(i=0; isvr.qopcode[i] == 0) continue; lt = sldns_lookup_by_id(sldns_opcodes, i); @@ -970,7 +991,7 @@ print_ext(SSL* ssl, struct stats_info* s) (unsigned long)s->svr.qEDNS_DO)) return 0; /* RCODE */ - for(i=0; i LDNS_RCODE_REFUSED && s->svr.ans_rcode[i] == 0) continue; @@ -987,6 +1008,9 @@ print_ext(SSL* ssl, struct stats_info* s) if(!ssl_printf(ssl, "num.answer.rcode.nodata"SQ"%lu\n", (unsigned long)s->svr.ans_rcode_nodata)) return 0; } + /* iteration */ + if(!ssl_printf(ssl, "num.query.ratelimited"SQ"%lu\n", + (unsigned long)s->svr.queries_ratelimited)) return 0; /* validation */ if(!ssl_printf(ssl, "num.answer.secure"SQ"%lu\n", (unsigned long)s->svr.ans_secure)) return 0; @@ -994,6 +1018,10 @@ print_ext(SSL* ssl, struct stats_info* s) (unsigned long)s->svr.ans_bogus)) return 0; if(!ssl_printf(ssl, "num.rrset.bogus"SQ"%lu\n", (unsigned long)s->svr.rrset_bogus)) return 0; + if(!ssl_printf(ssl, "num.query.aggressive.NOERROR"SQ"%lu\n", + (unsigned long)s->svr.num_neg_cache_noerror)) return 0; + if(!ssl_printf(ssl, "num.query.aggressive.NXDOMAIN"SQ"%lu\n", + (unsigned long)s->svr.num_neg_cache_nxdomain)) return 0; /* threat detection */ if(!ssl_printf(ssl, "unwanted.queries"SQ"%lu\n", (unsigned long)s->svr.unwanted_queries)) return 0; @@ -1008,16 +1036,30 @@ print_ext(SSL* ssl, struct stats_info* s) (unsigned)s->svr.infra_cache_count)) return 0; if(!ssl_printf(ssl, "key.cache.count"SQ"%u\n", (unsigned)s->svr.key_cache_count)) return 0; +#ifdef USE_DNSCRYPT + if(!ssl_printf(ssl, "dnscrypt_shared_secret.cache.count"SQ"%u\n", + (unsigned)s->svr.shared_secret_cache_count)) return 0; + if(!ssl_printf(ssl, "dnscrypt_nonce.cache.count"SQ"%u\n", + (unsigned)s->svr.nonce_cache_count)) return 0; + if(!ssl_printf(ssl, "num.query.dnscrypt.shared_secret.cachemiss"SQ"%lu\n", + (unsigned long)s->svr.num_query_dnscrypt_secret_missed_cache)) return 0; + if(!ssl_printf(ssl, "num.query.dnscrypt.replay"SQ"%lu\n", + (unsigned long)s->svr.num_query_dnscrypt_replay)) return 0; +#endif /* USE_DNSCRYPT */ + if(!ssl_printf(ssl, "num.query.authzone.up"SQ"%lu\n", + (unsigned long)s->svr.num_query_authzone_up)) return 0; + if(!ssl_printf(ssl, "num.query.authzone.down"SQ"%lu\n", + (unsigned long)s->svr.num_query_authzone_down)) return 0; return 1; } /** do the stats command */ static void -do_stats(SSL* ssl, struct daemon_remote* rc, int reset) +do_stats(RES* ssl, struct daemon_remote* rc, int reset) { struct daemon* daemon = rc->worker->daemon; - struct stats_info total; - struct stats_info s; + struct ub_stats_info total; + struct ub_stats_info s; int i; log_assert(daemon->num > 0); /* gather all thread statistics in one place */ @@ -1047,7 +1089,7 @@ do_stats(SSL* ssl, struct daemon_remote* rc, int reset) /** parse commandline argument domain name */ static int -parse_arg_name(SSL* ssl, char* str, uint8_t** res, size_t* len, int* labs) +parse_arg_name(RES* ssl, char* str, uint8_t** res, size_t* len, int* labs) { uint8_t nm[LDNS_MAX_DOMAINLEN+1]; size_t nmlen = sizeof(nm); @@ -1073,7 +1115,7 @@ parse_arg_name(SSL* ssl, char* str, uint8_t** res, size_t* len, int* labs) /** find second argument, modifies string */ static int -find_arg2(SSL* ssl, char* arg, char** arg2) +find_arg2(RES* ssl, char* arg, char** arg2) { char* as = strchr(arg, ' '); char* at = strchr(arg, '\t'); @@ -1097,8 +1139,8 @@ find_arg2(SSL* ssl, char* arg, char** arg2) } /** Add a new zone */ -static void -do_zone_add(SSL* ssl, struct worker* worker, char* arg) +static int +perform_zone_add(RES* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; @@ -1107,86 +1149,301 @@ do_zone_add(SSL* ssl, struct worker* worker, char* arg) enum localzone_type t; struct local_zone* z; if(!find_arg2(ssl, arg, &arg2)) - return; + return 0; if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) - return; + return 0; if(!local_zone_str2type(arg2, &t)) { ssl_printf(ssl, "error not a zone type. %s\n", arg2); free(nm); - return; + return 0; } - lock_rw_wrlock(&worker->daemon->local_zones->lock); - if((z=local_zones_find(worker->daemon->local_zones, nm, nmlen, + lock_rw_wrlock(&zones->lock); + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* already present in tree */ lock_rw_wrlock(&z->lock); z->type = t; /* update type anyway */ lock_rw_unlock(&z->lock); free(nm); - lock_rw_unlock(&worker->daemon->local_zones->lock); - send_ok(ssl); - return; + lock_rw_unlock(&zones->lock); + return 1; } - if(!local_zones_add_zone(worker->daemon->local_zones, nm, nmlen, + if(!local_zones_add_zone(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN, t)) { - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); ssl_printf(ssl, "error out of memory\n"); - return; + return 0; } - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); + return 1; +} + +/** Do the local_zone command */ +static void +do_zone_add(RES* ssl, struct local_zones* zones, char* arg) +{ + if(!perform_zone_add(ssl, zones, arg)) + return; send_ok(ssl); } -/** Remove a zone */ +/** Do the local_zones command */ static void -do_zone_remove(SSL* ssl, struct worker* worker, char* arg) +do_zones_add(RES* ssl, struct local_zones* zones) +{ + char buf[2048]; + int num = 0; + while(ssl_read_line(ssl, buf, sizeof(buf))) { + if(buf[0] == 0x04 && buf[1] == 0) + break; /* end of transmission */ + if(!perform_zone_add(ssl, zones, buf)) { + if(!ssl_printf(ssl, "error for input line: %s\n", buf)) + return; + } + else + num++; + } + (void)ssl_printf(ssl, "added %d zones\n", num); +} + +/** Remove a zone */ +static int +perform_zone_remove(RES* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; size_t nmlen; struct local_zone* z; if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) - return; - lock_rw_wrlock(&worker->daemon->local_zones->lock); - if((z=local_zones_find(worker->daemon->local_zones, nm, nmlen, + return 0; + lock_rw_wrlock(&zones->lock); + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* present in tree */ - local_zones_del_zone(worker->daemon->local_zones, z); + local_zones_del_zone(zones, z); } - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); free(nm); + return 1; +} + +/** Do the local_zone_remove command */ +static void +do_zone_remove(RES* ssl, struct local_zones* zones, char* arg) +{ + if(!perform_zone_remove(ssl, zones, arg)) + return; send_ok(ssl); } -/** Add new RR data */ +/** Do the local_zones_remove command */ static void -do_data_add(SSL* ssl, struct worker* worker, char* arg) +do_zones_remove(RES* ssl, struct local_zones* zones) +{ + char buf[2048]; + int num = 0; + while(ssl_read_line(ssl, buf, sizeof(buf))) { + if(buf[0] == 0x04 && buf[1] == 0) + break; /* end of transmission */ + if(!perform_zone_remove(ssl, zones, buf)) { + if(!ssl_printf(ssl, "error for input line: %s\n", buf)) + return; + } + else + num++; + } + (void)ssl_printf(ssl, "removed %d zones\n", num); +} + +/** Add new RR data */ +static int +perform_data_add(RES* ssl, struct local_zones* zones, char* arg) { - if(!local_zones_add_RR(worker->daemon->local_zones, arg)) { + if(!local_zones_add_RR(zones, arg)) { ssl_printf(ssl,"error in syntax or out of memory, %s\n", arg); - return; + return 0; } + return 1; +} + +/** Do the local_data command */ +static void +do_data_add(RES* ssl, struct local_zones* zones, char* arg) +{ + if(!perform_data_add(ssl, zones, arg)) + return; send_ok(ssl); } -/** Remove RR data */ +/** Do the local_datas command */ static void -do_data_remove(SSL* ssl, struct worker* worker, char* arg) +do_datas_add(RES* ssl, struct local_zones* zones) +{ + char buf[2048]; + int num = 0; + while(ssl_read_line(ssl, buf, sizeof(buf))) { + if(buf[0] == 0x04 && buf[1] == 0) + break; /* end of transmission */ + if(!perform_data_add(ssl, zones, buf)) { + if(!ssl_printf(ssl, "error for input line: %s\n", buf)) + return; + } + else + num++; + } + (void)ssl_printf(ssl, "added %d datas\n", num); +} + +/** Remove RR data */ +static int +perform_data_remove(RES* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; size_t nmlen; if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) - return; - local_zones_del_data(worker->daemon->local_zones, nm, + return 0; + local_zones_del_data(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN); free(nm); + return 1; +} + +/** Do the local_data_remove command */ +static void +do_data_remove(RES* ssl, struct local_zones* zones, char* arg) +{ + if(!perform_data_remove(ssl, zones, arg)) + return; send_ok(ssl); } +/** Do the local_datas_remove command */ +static void +do_datas_remove(RES* ssl, struct local_zones* zones) +{ + char buf[2048]; + int num = 0; + while(ssl_read_line(ssl, buf, sizeof(buf))) { + if(buf[0] == 0x04 && buf[1] == 0) + break; /* end of transmission */ + if(!perform_data_remove(ssl, zones, buf)) { + if(!ssl_printf(ssl, "error for input line: %s\n", buf)) + return; + } + else + num++; + } + (void)ssl_printf(ssl, "removed %d datas\n", num); +} + +/** Add a new zone to view */ +static void +do_view_zone_add(RES* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(!v->local_zones) { + if(!(v->local_zones = local_zones_create())){ + lock_rw_unlock(&v->lock); + ssl_printf(ssl,"error out of memory\n"); + return; + } + if(!v->isfirst) { + /* Global local-zone is not used for this view, + * therefore add defaults to this view-specic + * local-zone. */ + struct config_file lz_cfg; + memset(&lz_cfg, 0, sizeof(lz_cfg)); + local_zone_enter_defaults(v->local_zones, &lz_cfg); + } + } + do_zone_add(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Remove a zone from view */ +static void +do_view_zone_remove(RES* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(!v->local_zones) { + lock_rw_unlock(&v->lock); + send_ok(ssl); + return; + } + do_zone_remove(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Add new RR data to view */ +static void +do_view_data_add(RES* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(!v->local_zones) { + if(!(v->local_zones = local_zones_create())){ + lock_rw_unlock(&v->lock); + ssl_printf(ssl,"error out of memory\n"); + return; + } + } + do_data_add(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Remove RR data from view */ +static void +do_view_data_remove(RES* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(!v->local_zones) { + lock_rw_unlock(&v->lock); + send_ok(ssl); + return; + } + do_data_remove(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + /** cache lookup of nameservers */ static void -do_lookup(SSL* ssl, struct worker* worker, char* arg) +do_lookup(RES* ssl, struct worker* worker, char* arg) { uint8_t* nm; int nmlabs; @@ -1202,7 +1459,7 @@ static void do_cache_remove(struct worker* worker, uint8_t* nm, size_t nmlen, uint16_t t, uint16_t c) { - hashvalue_t h; + hashvalue_type h; struct query_info k; rrset_cache_remove(worker->env.rrset_cache, nm, nmlen, t, c, 0); if(t == LDNS_RR_TYPE_SOA) @@ -1212,6 +1469,7 @@ do_cache_remove(struct worker* worker, uint8_t* nm, size_t nmlen, k.qname_len = nmlen; k.qtype = t; k.qclass = c; + k.local_alias = NULL; h = query_info_hash(&k, 0); slabhash_remove(worker->env.msg_cache, h, &k); if(t == LDNS_RR_TYPE_AAAA) { @@ -1223,7 +1481,7 @@ do_cache_remove(struct worker* worker, uint8_t* nm, size_t nmlen, /** flush a type */ static void -do_flush_type(SSL* ssl, struct worker* worker, char* arg) +do_flush_type(RES* ssl, struct worker* worker, char* arg) { uint8_t* nm; int nmlabs; @@ -1243,7 +1501,7 @@ do_flush_type(SSL* ssl, struct worker* worker, char* arg) /** flush statistics */ static void -do_flush_stats(SSL* ssl, struct worker* worker) +do_flush_stats(RES* ssl, struct worker* worker) { worker_stats_clear(worker); send_ok(ssl); @@ -1298,7 +1556,7 @@ infra_del_host(struct lruhash_entry* e, void* arg) /** flush infra cache */ static void -do_flush_infra(SSL* ssl, struct worker* worker, char* arg) +do_flush_infra(RES* ssl, struct worker* worker, char* arg) { struct sockaddr_storage addr; socklen_t len; @@ -1332,7 +1590,7 @@ do_flush_infra(SSL* ssl, struct worker* worker, char* arg) /** flush requestlist */ static void -do_flush_requestlist(SSL* ssl, struct worker* worker) +do_flush_requestlist(RES* ssl, struct worker* worker) { mesh_delete_all(worker->env.mesh); send_ok(ssl); @@ -1366,6 +1624,7 @@ zone_del_msg(struct lruhash_entry* e, void* arg) struct reply_info* d = (struct reply_info*)e->data; if(d->ttl > inf->expired) { d->ttl = inf->expired; + d->prefetch_ttl = inf->expired; inf->num_msgs++; } } @@ -1389,7 +1648,7 @@ zone_del_kcache(struct lruhash_entry* e, void* arg) /** remove all rrsets and keys from zone from cache */ static void -do_flush_zone(SSL* ssl, struct worker* worker, char* arg) +do_flush_zone(RES* ssl, struct worker* worker, char* arg) { uint8_t* nm; int nmlabs; @@ -1467,7 +1726,7 @@ bogus_del_kcache(struct lruhash_entry* e, void* arg) /** remove all bogus rrsets, msgs and keys from cache */ static void -do_flush_bogus(SSL* ssl, struct worker* worker) +do_flush_bogus(RES* ssl, struct worker* worker) { struct del_info inf; /* what we do is to set them all expired */ @@ -1502,7 +1761,7 @@ negative_del_rrset(struct lruhash_entry* e, void* arg) struct ub_packed_rrset_key* k = (struct ub_packed_rrset_key*)e->key; struct packed_rrset_data* d = (struct packed_rrset_data*)e->data; /* delete the parentside negative cache rrsets, - * these are namerserver rrsets that failed lookup, rdata empty */ + * these are nameserver rrsets that failed lookup, rdata empty */ if((k->rk.flags & PACKED_RRSET_PARENT_SIDE) && d->count == 1 && d->rrsig_count == 0 && d->rr_len[0] == 0) { d->ttl = inf->expired; @@ -1542,7 +1801,7 @@ negative_del_kcache(struct lruhash_entry* e, void* arg) /** remove all negative(NODATA,NXDOMAIN), and servfail messages from cache */ static void -do_flush_negative(SSL* ssl, struct worker* worker) +do_flush_negative(RES* ssl, struct worker* worker) { struct del_info inf; /* what we do is to set them all expired */ @@ -1570,7 +1829,7 @@ do_flush_negative(SSL* ssl, struct worker* worker) /** remove name rrset from cache */ static void -do_flush_name(SSL* ssl, struct worker* w, char* arg) +do_flush_name(RES* ssl, struct worker* w, char* arg) { uint8_t* nm; int nmlabs; @@ -1594,7 +1853,7 @@ do_flush_name(SSL* ssl, struct worker* w, char* arg) /** printout a delegation point info */ static int -ssl_print_name_dp(SSL* ssl, const char* str, uint8_t* nm, uint16_t dclass, +ssl_print_name_dp(RES* ssl, const char* str, uint8_t* nm, uint16_t dclass, struct delegpt* dp) { char buf[257]; @@ -1628,7 +1887,7 @@ ssl_print_name_dp(SSL* ssl, const char* str, uint8_t* nm, uint16_t dclass, /** print root forwards */ static int -print_root_fwds(SSL* ssl, struct iter_forwards* fwds, uint8_t* root) +print_root_fwds(RES* ssl, struct iter_forwards* fwds, uint8_t* root) { struct delegpt* dp; dp = forwards_lookup(fwds, root, LDNS_RR_CLASS_IN); @@ -1641,7 +1900,7 @@ print_root_fwds(SSL* ssl, struct iter_forwards* fwds, uint8_t* root) /** parse args into delegpt */ static struct delegpt* -parse_delegpt(SSL* ssl, char* args, uint8_t* nm, int allow_names) +parse_delegpt(RES* ssl, char* args, uint8_t* nm, int allow_names) { /* parse args and add in */ char* p = args; @@ -1649,6 +1908,7 @@ parse_delegpt(SSL* ssl, char* args, uint8_t* nm, int allow_names) struct delegpt* dp = delegpt_create_mlc(nm); struct sockaddr_storage addr; socklen_t addrlen; + char* auth_name; if(!dp) { (void)ssl_printf(ssl, "error out of memory\n"); return NULL; @@ -1661,7 +1921,7 @@ parse_delegpt(SSL* ssl, char* args, uint8_t* nm, int allow_names) p = skipwhite(p); /* position at next spot */ } /* parse address */ - if(!extstrtoaddr(todo, &addr, &addrlen)) { + if(!authextstrtoaddr(todo, &addr, &addrlen, &auth_name)) { if(allow_names) { uint8_t* n = NULL; size_t ln; @@ -1689,7 +1949,8 @@ parse_delegpt(SSL* ssl, char* args, uint8_t* nm, int allow_names) } } else { /* add address */ - if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0)) { + if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, + auth_name)) { (void)ssl_printf(ssl, "error out of memory\n"); delegpt_free_mlc(dp); return NULL; @@ -1702,7 +1963,7 @@ parse_delegpt(SSL* ssl, char* args, uint8_t* nm, int allow_names) /** do the status command */ static void -do_forward(SSL* ssl, struct worker* worker, char* args) +do_forward(RES* ssl, struct worker* worker, char* args) { struct iter_forwards* fwd = worker->env.fwds; uint8_t* root = (uint8_t*)"\000"; @@ -1733,7 +1994,7 @@ do_forward(SSL* ssl, struct worker* worker, char* args) } static int -parse_fs_args(SSL* ssl, char* args, uint8_t** nm, struct delegpt** dp, +parse_fs_args(RES* ssl, char* args, uint8_t** nm, struct delegpt** dp, int* insecure, int* prime) { char* zonename; @@ -1778,7 +2039,7 @@ parse_fs_args(SSL* ssl, char* args, uint8_t** nm, struct delegpt** dp, /** do the forward_add command */ static void -do_forward_add(SSL* ssl, struct worker* worker, char* args) +do_forward_add(RES* ssl, struct worker* worker, char* args) { struct iter_forwards* fwd = worker->env.fwds; int insecure = 0; @@ -1806,7 +2067,7 @@ do_forward_add(SSL* ssl, struct worker* worker, char* args) /** do the forward_remove command */ static void -do_forward_remove(SSL* ssl, struct worker* worker, char* args) +do_forward_remove(RES* ssl, struct worker* worker, char* args) { struct iter_forwards* fwd = worker->env.fwds; int insecure = 0; @@ -1823,7 +2084,7 @@ do_forward_remove(SSL* ssl, struct worker* worker, char* args) /** do the stub_add command */ static void -do_stub_add(SSL* ssl, struct worker* worker, char* args) +do_stub_add(RES* ssl, struct worker* worker, char* args) { struct iter_forwards* fwd = worker->env.fwds; int insecure = 0, prime = 0; @@ -1864,7 +2125,7 @@ do_stub_add(SSL* ssl, struct worker* worker, char* args) /** do the stub_remove command */ static void -do_stub_remove(SSL* ssl, struct worker* worker, char* args) +do_stub_remove(RES* ssl, struct worker* worker, char* args) { struct iter_forwards* fwd = worker->env.fwds; int insecure = 0; @@ -1882,7 +2143,7 @@ do_stub_remove(SSL* ssl, struct worker* worker, char* args) /** do the insecure_add command */ static void -do_insecure_add(SSL* ssl, struct worker* worker, char* arg) +do_insecure_add(RES* ssl, struct worker* worker, char* arg) { size_t nmlen; int nmlabs; @@ -1903,7 +2164,7 @@ do_insecure_add(SSL* ssl, struct worker* worker, char* arg) /** do the insecure_remove command */ static void -do_insecure_remove(SSL* ssl, struct worker* worker, char* arg) +do_insecure_remove(RES* ssl, struct worker* worker, char* arg) { size_t nmlen; int nmlabs; @@ -1918,7 +2179,7 @@ do_insecure_remove(SSL* ssl, struct worker* worker, char* arg) } static void -do_insecure_list(SSL* ssl, struct worker* worker) +do_insecure_list(RES* ssl, struct worker* worker) { char buf[257]; struct trust_anchor* a; @@ -1934,7 +2195,7 @@ do_insecure_list(SSL* ssl, struct worker* worker) /** do the status command */ static void -do_status(SSL* ssl, struct worker* worker) +do_status(RES* ssl, struct worker* worker) { int i; time_t uptime; @@ -1955,9 +2216,12 @@ do_status(SSL* ssl, struct worker* worker) uptime = (time_t)time(NULL) - (time_t)worker->daemon->time_boot.tv_sec; if(!ssl_printf(ssl, "uptime: " ARG_LL "d seconds\n", (long long)uptime)) return; - if(!ssl_printf(ssl, "options:%s%s\n" , + if(!ssl_printf(ssl, "options:%s%s%s%s\n" , (worker->daemon->reuseport?" reuseport":""), - (worker->daemon->rc->accept_list?" control(ssl)":""))) + (worker->daemon->rc->accept_list?" control":""), + (worker->daemon->rc->accept_list && worker->daemon->rc->use_cert?"(ssl)":""), + (worker->daemon->rc->accept_list && worker->daemon->cfg->control_ifs.first && worker->daemon->cfg->control_ifs.first->str && worker->daemon->cfg->control_ifs.first->str[0] == '/'?"(namedpipe)":"") + )) return; if(!ssl_printf(ssl, "unbound (pid %d) is running...\n", (int)getpid())) @@ -2039,7 +2303,7 @@ get_mesh_status(struct mesh_area* mesh, struct mesh_state* m, /** do the dump_requestlist command */ static void -do_dump_requestlist(SSL* ssl, struct worker* worker) +do_dump_requestlist(RES* ssl, struct worker* worker) { struct mesh_area* mesh; struct mesh_state* m; @@ -2078,7 +2342,7 @@ struct infra_arg { /** the infra cache */ struct infra_cache* infra; /** the SSL connection */ - SSL* ssl; + RES* ssl; /** the time now */ time_t now; /** ssl failure? stop writing and skip the rest. If the tcp @@ -2095,10 +2359,16 @@ dump_infra_host(struct lruhash_entry* e, void* arg) struct infra_data* d = (struct infra_data*)e->data; char ip_str[1024]; char name[257]; + int port; if(a->ssl_failed) return; addr_to_str(&k->addr, k->addrlen, ip_str, sizeof(ip_str)); dname_str(k->zonename, name); + port = (int)ntohs(((struct sockaddr_in*)&k->addr)->sin_port); + if(port != UNBOUND_DNS_PORT) { + snprintf(ip_str+strlen(ip_str), sizeof(ip_str)-strlen(ip_str), + "@%d", port); + } /* skip expired stuff (only backed off) */ if(d->ttl < a->now) { if(d->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT) { @@ -2127,7 +2397,7 @@ dump_infra_host(struct lruhash_entry* e, void* arg) /** do the dump_infra command */ static void -do_dump_infra(SSL* ssl, struct worker* worker) +do_dump_infra(RES* ssl, struct worker* worker) { struct infra_arg arg; arg.infra = worker->env.infra_cache; @@ -2139,7 +2409,7 @@ do_dump_infra(SSL* ssl, struct worker* worker) /** do the log_reopen command */ static void -do_log_reopen(SSL* ssl, struct worker* worker) +do_log_reopen(RES* ssl, struct worker* worker) { struct config_file* cfg = worker->env.cfg; send_ok(ssl); @@ -2148,7 +2418,7 @@ do_log_reopen(SSL* ssl, struct worker* worker) /** do the set_option command */ static void -do_set_option(SSL* ssl, struct worker* worker, char* arg) +do_set_option(RES* ssl, struct worker* worker, char* arg) { char* arg2; if(!find_arg2(ssl, arg, &arg2)) @@ -2157,19 +2427,27 @@ do_set_option(SSL* ssl, struct worker* worker, char* arg) (void)ssl_printf(ssl, "error setting option\n"); return; } + /* effectuate some arguments */ + if(strcmp(arg, "val-override-date:") == 0) { + int m = modstack_find(&worker->env.mesh->mods, "validator"); + struct val_env* val_env = NULL; + if(m != -1) val_env = (struct val_env*)worker->env.modinfo[m]; + if(val_env) + val_env->date_override = worker->env.cfg->val_date_override; + } send_ok(ssl); } /* routine to printout option values over SSL */ void remote_get_opt_ssl(char* line, void* arg) { - SSL* ssl = (SSL*)arg; + RES* ssl = (RES*)arg; (void)ssl_printf(ssl, "%s\n", line); } /** do the get_option command */ static void -do_get_option(SSL* ssl, struct worker* worker, char* arg) +do_get_option(RES* ssl, struct worker* worker, char* arg) { int r; r = config_get_option(worker->env.cfg, arg, remote_get_opt_ssl, ssl); @@ -2181,7 +2459,7 @@ do_get_option(SSL* ssl, struct worker* worker, char* arg) /** do the list_forwards command */ static void -do_list_forwards(SSL* ssl, struct worker* worker) +do_list_forwards(RES* ssl, struct worker* worker) { /* since its a per-worker structure no locks needed */ struct iter_forwards* fwds = worker->env.fwds; @@ -2209,7 +2487,7 @@ do_list_forwards(SSL* ssl, struct worker* worker) /** do the list_stubs command */ static void -do_list_stubs(SSL* ssl, struct worker* worker) +do_list_stubs(RES* ssl, struct worker* worker) { struct iter_hints_stub* z; struct trust_anchor* a; @@ -2235,11 +2513,40 @@ do_list_stubs(SSL* ssl, struct worker* worker) } } +/** do the list_auth_zones command */ +static void +do_list_auth_zones(RES* ssl, struct auth_zones* az) +{ + struct auth_zone* z; + char buf[257], buf2[256]; + lock_rw_rdlock(&az->lock); + RBTREE_FOR(z, struct auth_zone*, &az->ztree) { + lock_rw_rdlock(&z->lock); + dname_str(z->name, buf); + if(z->zone_expired) + snprintf(buf2, sizeof(buf2), "expired"); + else { + uint32_t serial = 0; + if(auth_zone_get_serial(z, &serial)) + snprintf(buf2, sizeof(buf2), "serial %u", + (unsigned)serial); + else snprintf(buf2, sizeof(buf2), "no serial"); + } + if(!ssl_printf(ssl, "%s\t%s\n", buf, buf2)) { + /* failure to print */ + lock_rw_unlock(&z->lock); + lock_rw_unlock(&az->lock); + return; + } + lock_rw_unlock(&z->lock); + } + lock_rw_unlock(&az->lock); +} + /** do the list_local_zones command */ static void -do_list_local_zones(SSL* ssl, struct worker* worker) +do_list_local_zones(RES* ssl, struct local_zones* zones) { - struct local_zones* zones = worker->daemon->local_zones; struct local_zone* z; char buf[257]; lock_rw_rdlock(&zones->lock); @@ -2260,9 +2567,8 @@ do_list_local_zones(SSL* ssl, struct worker* worker) /** do the list_local_data command */ static void -do_list_local_data(SSL* ssl, struct worker* worker) +do_list_local_data(RES* ssl, struct worker* worker, struct local_zones* zones) { - struct local_zones* zones = worker->daemon->local_zones; struct local_zone* z; struct local_data* d; struct local_rrset* p; @@ -2298,18 +2604,52 @@ do_list_local_data(SSL* ssl, struct worker* worker) lock_rw_unlock(&zones->lock); } +/** do the view_list_local_zones command */ +static void +do_view_list_local_zones(RES* ssl, struct worker* worker, char* arg) +{ + struct view* v = views_find_view(worker->daemon->views, + arg, 0 /* get read lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(v->local_zones) { + do_list_local_zones(ssl, v->local_zones); + } + lock_rw_unlock(&v->lock); +} + +/** do the view_list_local_data command */ +static void +do_view_list_local_data(RES* ssl, struct worker* worker, char* arg) +{ + struct view* v = views_find_view(worker->daemon->views, + arg, 0 /* get read lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + if(v->local_zones) { + do_list_local_data(ssl, worker, v->local_zones); + } + lock_rw_unlock(&v->lock); +} + /** struct for user arg ratelimit list */ struct ratelimit_list_arg { /** the infra cache */ struct infra_cache* infra; /** the SSL to print to */ - SSL* ssl; + RES* ssl; /** all or only ratelimited */ int all; /** current time */ time_t now; }; +#define ip_ratelimit_list_arg ratelimit_list_arg + /** list items in the ratelimit table */ static void rate_list(struct lruhash_entry* e, void* arg) @@ -2328,9 +2668,27 @@ rate_list(struct lruhash_entry* e, void* arg) ssl_printf(a->ssl, "%s %d limit %d\n", buf, max, lim); } +/** list items in the ip_ratelimit table */ +static void +ip_rate_list(struct lruhash_entry* e, void* arg) +{ + char ip[128]; + struct ip_ratelimit_list_arg* a = (struct ip_ratelimit_list_arg*)arg; + struct ip_rate_key* k = (struct ip_rate_key*)e->key; + struct ip_rate_data* d = (struct ip_rate_data*)e->data; + int lim = infra_ip_ratelimit; + int max = infra_rate_max(d, a->now); + if(a->all == 0) { + if(max < lim) + return; + } + addr_to_str(&k->addr, k->addrlen, ip, sizeof(ip)); + ssl_printf(a->ssl, "%s %d limit %d\n", ip, max, lim); +} + /** do the ratelimit_list command */ static void -do_ratelimit_list(SSL* ssl, struct worker* worker, char* arg) +do_ratelimit_list(RES* ssl, struct worker* worker, char* arg) { struct ratelimit_list_arg a; a.all = 0; @@ -2346,9 +2704,27 @@ do_ratelimit_list(SSL* ssl, struct worker* worker, char* arg) slabhash_traverse(a.infra->domain_rates, 0, rate_list, &a); } +/** do the ip_ratelimit_list command */ +static void +do_ip_ratelimit_list(RES* ssl, struct worker* worker, char* arg) +{ + struct ip_ratelimit_list_arg a; + a.all = 0; + a.infra = worker->env.infra_cache; + a.now = *worker->env.now; + a.ssl = ssl; + arg = skipwhite(arg); + if(strcmp(arg, "+a") == 0) + a.all = 1; + if(a.infra->client_ip_rates==NULL || + (a.all == 0 && infra_ip_ratelimit == 0)) + return; + slabhash_traverse(a.infra->client_ip_rates, 0, ip_rate_list, &a); +} + /** tell other processes to execute the command */ static void -distribute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd) +distribute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd) { int i; if(!cmd || !ssl) @@ -2374,7 +2750,7 @@ cmdcmp(char* p, const char* cmd, size_t len) /** execute a remote control command */ static void -execute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd, +execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, struct worker* worker) { char* p = skipwhite(cmd); @@ -2410,14 +2786,26 @@ execute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd, do_insecure_list(ssl, worker); return; } else if(cmdcmp(p, "list_local_zones", 16)) { - do_list_local_zones(ssl, worker); + do_list_local_zones(ssl, worker->daemon->local_zones); return; } else if(cmdcmp(p, "list_local_data", 15)) { - do_list_local_data(ssl, worker); + do_list_local_data(ssl, worker, worker->daemon->local_zones); + return; + } else if(cmdcmp(p, "view_list_local_zones", 21)) { + do_view_list_local_zones(ssl, worker, skipwhite(p+21)); + return; + } else if(cmdcmp(p, "view_list_local_data", 20)) { + do_view_list_local_data(ssl, worker, skipwhite(p+20)); return; } else if(cmdcmp(p, "ratelimit_list", 14)) { do_ratelimit_list(ssl, worker, p+14); return; + } else if(cmdcmp(p, "ip_ratelimit_list", 17)) { + do_ip_ratelimit_list(ssl, worker, p+17); + return; + } else if(cmdcmp(p, "list_auth_zones", 15)) { + do_list_auth_zones(ssl, worker->env.auth_zones); + return; } else if(cmdcmp(p, "stub_add", 8)) { /* must always distribute this cmd */ if(rc) distribute_cmd(rc, ssl, cmd); @@ -2479,13 +2867,29 @@ execute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd, if(cmdcmp(p, "verbosity", 9)) { do_verbosity(ssl, skipwhite(p+9)); } else if(cmdcmp(p, "local_zone_remove", 17)) { - do_zone_remove(ssl, worker, skipwhite(p+17)); + do_zone_remove(ssl, worker->daemon->local_zones, skipwhite(p+17)); + } else if(cmdcmp(p, "local_zones_remove", 18)) { + do_zones_remove(ssl, worker->daemon->local_zones); } else if(cmdcmp(p, "local_zone", 10)) { - do_zone_add(ssl, worker, skipwhite(p+10)); + do_zone_add(ssl, worker->daemon->local_zones, skipwhite(p+10)); + } else if(cmdcmp(p, "local_zones", 11)) { + do_zones_add(ssl, worker->daemon->local_zones); } else if(cmdcmp(p, "local_data_remove", 17)) { - do_data_remove(ssl, worker, skipwhite(p+17)); + do_data_remove(ssl, worker->daemon->local_zones, skipwhite(p+17)); + } else if(cmdcmp(p, "local_datas_remove", 18)) { + do_datas_remove(ssl, worker->daemon->local_zones); } else if(cmdcmp(p, "local_data", 10)) { - do_data_add(ssl, worker, skipwhite(p+10)); + do_data_add(ssl, worker->daemon->local_zones, skipwhite(p+10)); + } else if(cmdcmp(p, "local_datas", 11)) { + do_datas_add(ssl, worker->daemon->local_zones); + } else if(cmdcmp(p, "view_local_zone_remove", 22)) { + do_view_zone_remove(ssl, worker, skipwhite(p+22)); + } else if(cmdcmp(p, "view_local_zone", 15)) { + do_view_zone_add(ssl, worker, skipwhite(p+15)); + } else if(cmdcmp(p, "view_local_data_remove", 22)) { + do_view_data_remove(ssl, worker, skipwhite(p+22)); + } else if(cmdcmp(p, "view_local_data", 15)) { + do_view_data_add(ssl, worker, skipwhite(p+15)); } else if(cmdcmp(p, "flush_zone", 10)) { do_flush_zone(ssl, worker, skipwhite(p+10)); } else if(cmdcmp(p, "flush_type", 10)) { @@ -2530,7 +2934,7 @@ daemon_remote_exec(struct worker* worker) /** handle remote control request */ static void -handle_req(struct daemon_remote* rc, struct rc_state* s, SSL* ssl) +handle_req(struct daemon_remote* rc, struct rc_state* s, RES* res) { int r; char pre[10]; @@ -2544,12 +2948,31 @@ handle_req(struct daemon_remote* rc, struct rc_state* s, SSL* ssl) fd_set_block(s->c->fd); /* try to read magic UBCT[version]_space_ string */ - ERR_clear_error(); - if((r=SSL_read(ssl, magic, (int)sizeof(magic)-1)) <= 0) { - if(SSL_get_error(ssl, r) == SSL_ERROR_ZERO_RETURN) + if(res->ssl) { + ERR_clear_error(); + if((r=SSL_read(res->ssl, magic, (int)sizeof(magic)-1)) <= 0) { + if(SSL_get_error(res->ssl, r) == SSL_ERROR_ZERO_RETURN) + return; + log_crypto_err("could not SSL_read"); return; - log_crypto_err("could not SSL_read"); - return; + } + } else { + while(1) { + ssize_t rr = recv(res->fd, magic, sizeof(magic)-1, 0); + if(rr <= 0) { + if(rr == 0) return; + if(errno == EINTR || errno == EAGAIN) + continue; +#ifndef USE_WINSOCK + log_err("could not recv: %s", strerror(errno)); +#else + log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); +#endif + return; + } + r = (int)rr; + break; + } } magic[6] = 0; if( r != 6 || strncmp(magic, "UBCT", 4) != 0) { @@ -2559,25 +2982,58 @@ handle_req(struct daemon_remote* rc, struct rc_state* s, SSL* ssl) } /* read the command line */ - if(!ssl_read_line(ssl, buf, sizeof(buf))) { + if(!ssl_read_line(res, buf, sizeof(buf))) { return; } snprintf(pre, sizeof(pre), "UBCT%d ", UNBOUND_CONTROL_VERSION); if(strcmp(magic, pre) != 0) { verbose(VERB_QUERY, "control connection had bad " "version %s, cmd: %s", magic, buf); - ssl_printf(ssl, "error version mismatch\n"); + ssl_printf(res, "error version mismatch\n"); return; } verbose(VERB_DETAIL, "control cmd: %s", buf); /* figure out what to do */ - execute_cmd(rc, ssl, buf, rc->worker); + execute_cmd(rc, res, buf, rc->worker); +} + +/** handle SSL_do_handshake changes to the file descriptor to wait for later */ +static int +remote_handshake_later(struct daemon_remote* rc, struct rc_state* s, + struct comm_point* c, int r, int r2) +{ + if(r2 == SSL_ERROR_WANT_READ) { + if(s->shake_state == rc_hs_read) { + /* try again later */ + return 0; + } + s->shake_state = rc_hs_read; + comm_point_listen_for_rw(c, 1, 0); + return 0; + } else if(r2 == SSL_ERROR_WANT_WRITE) { + if(s->shake_state == rc_hs_write) { + /* try again later */ + return 0; + } + s->shake_state = rc_hs_write; + comm_point_listen_for_rw(c, 0, 1); + return 0; + } else { + if(r == 0) + log_err("remote control connection closed prematurely"); + log_addr(1, "failed connection from", + &s->c->repinfo.addr, s->c->repinfo.addrlen); + log_crypto_err("remote control failed ssl"); + clean_point(rc, s); + } + return 0; } int remote_control_callback(struct comm_point* c, void* arg, int err, struct comm_reply* ATTR_UNUSED(rep)) { + RES res; struct rc_state* s = (struct rc_state*)arg; struct daemon_remote* rc = s->rc; int r; @@ -2587,38 +3043,16 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, clean_point(rc, s); return 0; } - /* (continue to) setup the SSL connection */ - ERR_clear_error(); - r = SSL_do_handshake(s->ssl); - if(r != 1) { - int r2 = SSL_get_error(s->ssl, r); - if(r2 == SSL_ERROR_WANT_READ) { - if(s->shake_state == rc_hs_read) { - /* try again later */ - return 0; - } - s->shake_state = rc_hs_read; - comm_point_listen_for_rw(c, 1, 0); - return 0; - } else if(r2 == SSL_ERROR_WANT_WRITE) { - if(s->shake_state == rc_hs_write) { - /* try again later */ - return 0; - } - s->shake_state = rc_hs_write; - comm_point_listen_for_rw(c, 0, 1); - return 0; - } else { - if(r == 0) - log_err("remote control connection closed prematurely"); - log_addr(1, "failed connection from", - &s->c->repinfo.addr, s->c->repinfo.addrlen); - log_crypto_err("remote control failed ssl"); - clean_point(rc, s); - return 0; + if(s->ssl) { + /* (continue to) setup the SSL connection */ + ERR_clear_error(); + r = SSL_do_handshake(s->ssl); + if(r != 1) { + int r2 = SSL_get_error(s->ssl, r); + return remote_handshake_later(rc, s, c, r, r2); } + s->shake_state = rc_none; } - s->shake_state = rc_none; /* once handshake has completed, check authentication */ if (!rc->use_cert) { @@ -2641,7 +3075,9 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, } /* if OK start to actually handle the request */ - handle_req(rc, s, s->ssl); + res.ssl = s->ssl; + res.fd = c->fd; + handle_req(rc, s, &res); verbose(VERB_ALGO, "remote control operation completed"); clean_point(rc, s); diff --git a/external/unbound/daemon/remote.h b/external/unbound/daemon/remote.h index b25bfb1..217ea21 100644 --- a/external/unbound/daemon/remote.h +++ b/external/unbound/daemon/remote.h @@ -56,8 +56,8 @@ struct comm_reply; struct comm_point; struct daemon_remote; -/** number of seconds timeout on incoming remote control handshake */ -#define REMOTE_CONTROL_TCP_TIMEOUT 120 +/** number of milliseconds timeout on incoming remote control handshake */ +#define REMOTE_CONTROL_TCP_TIMEOUT 120000 /** * a busy control command connection, SSL state @@ -73,6 +73,8 @@ struct rc_state { /** the ssl state */ SSL* ssl; #endif + /** file descriptor */ + int fd; /** the rc this is part of */ struct daemon_remote* rc; }; @@ -103,6 +105,19 @@ struct daemon_remote { #endif }; +/** + * Connection to print to, either SSL or plain over fd + */ +struct remote_stream { +#ifdef HAVE_SSL + /** SSL structure, nonNULL if using SSL */ + SSL* ssl; +#endif + /** file descriptor for plain transfer */ + int fd; +}; +typedef struct remote_stream RES; + /** * Create new remote control state for the daemon. * @param cfg: config file with key file settings. @@ -166,26 +181,26 @@ void daemon_remote_exec(struct worker* worker); * @param text: the text. * @return false on connection failure. */ -int ssl_print_text(SSL* ssl, const char* text); +int ssl_print_text(RES* ssl, const char* text); /** * printf style printing to the ssl connection - * @param ssl: the SSL connection to print to. Blocking. + * @param ssl: the RES connection to print to. Blocking. * @param format: printf style format string. * @return success or false on a network failure. */ -int ssl_printf(SSL* ssl, const char* format, ...) +int ssl_printf(RES* ssl, const char* format, ...) ATTR_FORMAT(printf, 2, 3); /** * Read until \n is encountered - * If SSL signals EOF, the string up to then is returned (without \n). - * @param ssl: the SSL connection to read from. blocking. + * If stream signals EOF, the string up to then is returned (without \n). + * @param ssl: the RES connection to read from. blocking. * @param buf: buffer to read to. * @param max: size of buffer. * @return false on connection failure. */ -int ssl_read_line(SSL* ssl, char* buf, size_t max); +int ssl_read_line(RES* ssl, char* buf, size_t max); #endif /* HAVE_SSL */ #endif /* DAEMON_REMOTE_H */ diff --git a/external/unbound/daemon/stats.c b/external/unbound/daemon/stats.c index 838cf05..6f4feaa 100644 --- a/external/unbound/daemon/stats.c +++ b/external/unbound/daemon/stats.c @@ -56,72 +56,101 @@ #include "util/timehist.h" #include "util/net_help.h" #include "validator/validator.h" +#include "iterator/iterator.h" #include "sldns/sbuffer.h" #include "services/cache/rrset.h" #include "services/cache/infra.h" +#include "services/authzone.h" #include "validator/val_kcache.h" +#include "validator/val_neg.h" /** add timers and the values do not overflow or become negative */ static void -timeval_add(struct timeval* d, const struct timeval* add) +stats_timeval_add(long long* d_sec, long long* d_usec, long long add_sec, long long add_usec) { #ifndef S_SPLINT_S - d->tv_sec += add->tv_sec; - d->tv_usec += add->tv_usec; - if(d->tv_usec > 1000000) { - d->tv_usec -= 1000000; - d->tv_sec++; + (*d_sec) += add_sec; + (*d_usec) += add_usec; + if((*d_usec) > 1000000) { + (*d_usec) -= 1000000; + (*d_sec)++; } #endif } -void server_stats_init(struct server_stats* stats, struct config_file* cfg) +void server_stats_init(struct ub_server_stats* stats, struct config_file* cfg) { memset(stats, 0, sizeof(*stats)); stats->extended = cfg->stat_extended; } -void server_stats_querymiss(struct server_stats* stats, struct worker* worker) +void server_stats_querymiss(struct ub_server_stats* stats, struct worker* worker) { stats->num_queries_missed_cache++; stats->sum_query_list_size += worker->env.mesh->all.count; - if(worker->env.mesh->all.count > stats->max_query_list_size) - stats->max_query_list_size = worker->env.mesh->all.count; + if((long long)worker->env.mesh->all.count > stats->max_query_list_size) + stats->max_query_list_size = (long long)worker->env.mesh->all.count; } -void server_stats_prefetch(struct server_stats* stats, struct worker* worker) +void server_stats_prefetch(struct ub_server_stats* stats, struct worker* worker) { stats->num_queries_prefetch++; /* changes the query list size so account that, like a querymiss */ stats->sum_query_list_size += worker->env.mesh->all.count; - if(worker->env.mesh->all.count > stats->max_query_list_size) - stats->max_query_list_size = worker->env.mesh->all.count; + if((long long)worker->env.mesh->all.count > stats->max_query_list_size) + stats->max_query_list_size = (long long)worker->env.mesh->all.count; } -void server_stats_log(struct server_stats* stats, struct worker* worker, +void server_stats_log(struct ub_server_stats* stats, struct worker* worker, int threadnum) { log_info("server stats for thread %d: %u queries, " - "%u answers from cache, %u recursions, %u prefetch", + "%u answers from cache, %u recursions, %u prefetch, %u rejected by " + "ip ratelimiting", threadnum, (unsigned)stats->num_queries, (unsigned)(stats->num_queries - stats->num_queries_missed_cache), (unsigned)stats->num_queries_missed_cache, - (unsigned)stats->num_queries_prefetch); + (unsigned)stats->num_queries_prefetch, + (unsigned)stats->num_queries_ip_ratelimited); log_info("server stats for thread %d: requestlist max %u avg %g " "exceeded %u jostled %u", threadnum, (unsigned)stats->max_query_list_size, (stats->num_queries_missed_cache+stats->num_queries_prefetch)? (double)stats->sum_query_list_size/ - (stats->num_queries_missed_cache+ + (double)(stats->num_queries_missed_cache+ stats->num_queries_prefetch) : 0.0, (unsigned)worker->env.mesh->stats_dropped, (unsigned)worker->env.mesh->stats_jostled); } +/** Set the neg cache stats. */ +static void +set_neg_cache_stats(struct worker* worker, struct ub_server_stats* svr, + int reset) +{ + int m = modstack_find(&worker->env.mesh->mods, "validator"); + struct val_env* ve; + struct val_neg_cache* neg; + if(m == -1) + return; + ve = (struct val_env*)worker->env.modinfo[m]; + if(!ve->neg_cache) + return; + neg = ve->neg_cache; + lock_basic_lock(&neg->lock); + svr->num_neg_cache_noerror = (long long)neg->num_neg_cache_noerror; + svr->num_neg_cache_nxdomain = (long long)neg->num_neg_cache_nxdomain; + if(reset && !worker->env.cfg->stat_cumulative) { + neg->num_neg_cache_noerror = 0; + neg->num_neg_cache_nxdomain = 0; + } + lock_basic_unlock(&neg->lock); +} + /** get rrsets bogus number from validator */ static size_t -get_rrset_bogus(struct worker* worker) +get_rrset_bogus(struct worker* worker, int reset) { int m = modstack_find(&worker->env.mesh->mods, "validator"); struct val_env* ve; @@ -131,56 +160,153 @@ get_rrset_bogus(struct worker* worker) ve = (struct val_env*)worker->env.modinfo[m]; lock_basic_lock(&ve->bogus_lock); r = ve->num_rrset_bogus; - if(!worker->env.cfg->stat_cumulative) + if(reset && !worker->env.cfg->stat_cumulative) ve->num_rrset_bogus = 0; lock_basic_unlock(&ve->bogus_lock); return r; } +/** get number of ratelimited queries from iterator */ +static size_t +get_queries_ratelimit(struct worker* worker, int reset) +{ + int m = modstack_find(&worker->env.mesh->mods, "iterator"); + struct iter_env* ie; + size_t r; + if(m == -1) + return 0; + ie = (struct iter_env*)worker->env.modinfo[m]; + lock_basic_lock(&ie->queries_ratelimit_lock); + r = ie->num_queries_ratelimited; + if(reset && !worker->env.cfg->stat_cumulative) + ie->num_queries_ratelimited = 0; + lock_basic_unlock(&ie->queries_ratelimit_lock); + return r; +} + +#ifdef USE_DNSCRYPT +/** get the number of shared secret cache miss */ +static size_t +get_dnscrypt_cache_miss(struct worker* worker, int reset) +{ + size_t r; + struct dnsc_env* de = worker->daemon->dnscenv; + if(!de) return 0; + + lock_basic_lock(&de->shared_secrets_cache_lock); + r = de->num_query_dnscrypt_secret_missed_cache; + if(reset && !worker->env.cfg->stat_cumulative) + de->num_query_dnscrypt_secret_missed_cache = 0; + lock_basic_unlock(&de->shared_secrets_cache_lock); + return r; +} + +/** get the number of replayed queries */ +static size_t +get_dnscrypt_replay(struct worker* worker, int reset) +{ + size_t r; + struct dnsc_env* de = worker->daemon->dnscenv; + + lock_basic_lock(&de->nonces_cache_lock); + r = de->num_query_dnscrypt_replay; + if(reset && !worker->env.cfg->stat_cumulative) + de->num_query_dnscrypt_replay = 0; + lock_basic_unlock(&de->nonces_cache_lock); + return r; +} +#endif /* USE_DNSCRYPT */ + void -server_stats_compile(struct worker* worker, struct stats_info* s, int reset) +server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) { int i; struct listen_list* lp; s->svr = worker->stats; - s->mesh_num_states = worker->env.mesh->all.count; - s->mesh_num_reply_states = worker->env.mesh->num_reply_states; - s->mesh_jostled = worker->env.mesh->stats_jostled; - s->mesh_dropped = worker->env.mesh->stats_dropped; - s->mesh_replies_sent = worker->env.mesh->replies_sent; - s->mesh_replies_sum_wait = worker->env.mesh->replies_sum_wait; + s->mesh_num_states = (long long)worker->env.mesh->all.count; + s->mesh_num_reply_states = (long long)worker->env.mesh->num_reply_states; + s->mesh_jostled = (long long)worker->env.mesh->stats_jostled; + s->mesh_dropped = (long long)worker->env.mesh->stats_dropped; + s->mesh_replies_sent = (long long)worker->env.mesh->replies_sent; + s->mesh_replies_sum_wait_sec = (long long)worker->env.mesh->replies_sum_wait.tv_sec; + s->mesh_replies_sum_wait_usec = (long long)worker->env.mesh->replies_sum_wait.tv_usec; s->mesh_time_median = timehist_quartile(worker->env.mesh->histogram, 0.50); /* add in the values from the mesh */ - s->svr.ans_secure += worker->env.mesh->ans_secure; - s->svr.ans_bogus += worker->env.mesh->ans_bogus; - s->svr.ans_rcode_nodata += worker->env.mesh->ans_nodata; + s->svr.ans_secure += (long long)worker->env.mesh->ans_secure; + s->svr.ans_bogus += (long long)worker->env.mesh->ans_bogus; + s->svr.ans_rcode_nodata += (long long)worker->env.mesh->ans_nodata; for(i=0; i<16; i++) - s->svr.ans_rcode[i] += worker->env.mesh->ans_rcode[i]; + s->svr.ans_rcode[i] += (long long)worker->env.mesh->ans_rcode[i]; timehist_export(worker->env.mesh->histogram, s->svr.hist, NUM_BUCKETS_HIST); /* values from outside network */ - s->svr.unwanted_replies = worker->back->unwanted_replies; - s->svr.qtcp_outgoing = worker->back->num_tcp_outgoing; + s->svr.unwanted_replies = (long long)worker->back->unwanted_replies; + s->svr.qtcp_outgoing = (long long)worker->back->num_tcp_outgoing; /* get and reset validator rrset bogus number */ - s->svr.rrset_bogus = get_rrset_bogus(worker); + s->svr.rrset_bogus = (long long)get_rrset_bogus(worker, reset); + + /* get and reset iterator query ratelimit number */ + s->svr.queries_ratelimited = (long long)get_queries_ratelimit(worker, reset); /* get cache sizes */ - s->svr.msg_cache_count = count_slabhash_entries(worker->env.msg_cache); - s->svr.rrset_cache_count = count_slabhash_entries(&worker->env.rrset_cache->table); - s->svr.infra_cache_count = count_slabhash_entries(worker->env.infra_cache->hosts); + s->svr.msg_cache_count = (long long)count_slabhash_entries(worker->env.msg_cache); + s->svr.rrset_cache_count = (long long)count_slabhash_entries(&worker->env.rrset_cache->table); + s->svr.infra_cache_count = (long long)count_slabhash_entries(worker->env.infra_cache->hosts); if(worker->env.key_cache) - s->svr.key_cache_count = count_slabhash_entries(worker->env.key_cache->slab); + s->svr.key_cache_count = (long long)count_slabhash_entries(worker->env.key_cache->slab); else s->svr.key_cache_count = 0; +#ifdef USE_DNSCRYPT + if(worker->daemon->dnscenv) { + s->svr.num_query_dnscrypt_secret_missed_cache = + (long long)get_dnscrypt_cache_miss(worker, reset); + s->svr.shared_secret_cache_count = (long long)count_slabhash_entries( + worker->daemon->dnscenv->shared_secrets_cache); + s->svr.nonce_cache_count = (long long)count_slabhash_entries( + worker->daemon->dnscenv->nonces_cache); + s->svr.num_query_dnscrypt_replay = + (long long)get_dnscrypt_replay(worker, reset); + } else { + s->svr.num_query_dnscrypt_secret_missed_cache = 0; + s->svr.shared_secret_cache_count = 0; + s->svr.nonce_cache_count = 0; + s->svr.num_query_dnscrypt_replay = 0; + } +#else + s->svr.num_query_dnscrypt_secret_missed_cache = 0; + s->svr.shared_secret_cache_count = 0; + s->svr.nonce_cache_count = 0; + s->svr.num_query_dnscrypt_replay = 0; +#endif /* USE_DNSCRYPT */ + if(worker->env.auth_zones) { + if(reset && !worker->env.cfg->stat_cumulative) { + lock_rw_wrlock(&worker->env.auth_zones->lock); + } else { + lock_rw_rdlock(&worker->env.auth_zones->lock); + } + s->svr.num_query_authzone_up = (long long)worker->env. + auth_zones->num_query_up; + s->svr.num_query_authzone_down = (long long)worker->env. + auth_zones->num_query_down; + if(reset && !worker->env.cfg->stat_cumulative) { + worker->env.auth_zones->num_query_up = 0; + worker->env.auth_zones->num_query_down = 0; + } + lock_rw_unlock(&worker->env.auth_zones->lock); + } + + /* Set neg cache usage numbers */ + set_neg_cache_stats(worker, &s->svr, reset); + /* get tcp accept usage */ s->svr.tcp_accept_usage = 0; for(lp = worker->front->cps; lp; lp = lp->next) { if(lp->com->type == comm_tcp_accept) - s->svr.tcp_accept_usage += lp->com->cur_tcp_count; + s->svr.tcp_accept_usage += (long long)lp->com->cur_tcp_count; } if(reset && !worker->env.cfg->stat_cumulative) { @@ -189,7 +315,7 @@ server_stats_compile(struct worker* worker, struct stats_info* s, int reset) } void server_stats_obtain(struct worker* worker, struct worker* who, - struct stats_info* s, int reset) + struct ub_stats_info* s, int reset) { uint8_t *reply = NULL; uint32_t len = 0; @@ -215,7 +341,7 @@ void server_stats_obtain(struct worker* worker, struct worker* who, void server_stats_reply(struct worker* worker, int reset) { - struct stats_info s; + struct ub_stats_info s; server_stats_compile(worker, &s, reset); verbose(VERB_ALGO, "write stats replymsg"); if(!tube_write_msg(worker->daemon->workers[0]->cmd, @@ -223,12 +349,21 @@ void server_stats_reply(struct worker* worker, int reset) fatal_exit("could not write stat values over cmd channel"); } -void server_stats_add(struct stats_info* total, struct stats_info* a) +void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a) { total->svr.num_queries += a->svr.num_queries; + total->svr.num_queries_ip_ratelimited += a->svr.num_queries_ip_ratelimited; total->svr.num_queries_missed_cache += a->svr.num_queries_missed_cache; total->svr.num_queries_prefetch += a->svr.num_queries_prefetch; total->svr.sum_query_list_size += a->svr.sum_query_list_size; +#ifdef USE_DNSCRYPT + total->svr.num_query_dnscrypt_crypted += a->svr.num_query_dnscrypt_crypted; + total->svr.num_query_dnscrypt_cert += a->svr.num_query_dnscrypt_cert; + total->svr.num_query_dnscrypt_cleartext += \ + a->svr.num_query_dnscrypt_cleartext; + total->svr.num_query_dnscrypt_crypted_malformed += \ + a->svr.num_query_dnscrypt_crypted_malformed; +#endif /* USE_DNSCRYPT */ /* the max size reached is upped to higher of both */ if(a->svr.max_query_list_size > total->svr.max_query_list_size) total->svr.max_query_list_size = a->svr.max_query_list_size; @@ -251,19 +386,19 @@ void server_stats_add(struct stats_info* total, struct stats_info* a) total->svr.qEDNS += a->svr.qEDNS; total->svr.qEDNS_DO += a->svr.qEDNS_DO; total->svr.ans_rcode_nodata += a->svr.ans_rcode_nodata; + total->svr.zero_ttl_responses += a->svr.zero_ttl_responses; total->svr.ans_secure += a->svr.ans_secure; total->svr.ans_bogus += a->svr.ans_bogus; - total->svr.rrset_bogus += a->svr.rrset_bogus; total->svr.unwanted_replies += a->svr.unwanted_replies; total->svr.unwanted_queries += a->svr.unwanted_queries; total->svr.tcp_accept_usage += a->svr.tcp_accept_usage; - for(i=0; isvr.qtype[i] += a->svr.qtype[i]; - for(i=0; isvr.qclass[i] += a->svr.qclass[i]; - for(i=0; isvr.qopcode[i] += a->svr.qopcode[i]; - for(i=0; isvr.ans_rcode[i] += a->svr.ans_rcode[i]; for(i=0; isvr.hist[i] += a->svr.hist[i]; @@ -274,22 +409,22 @@ void server_stats_add(struct stats_info* total, struct stats_info* a) total->mesh_jostled += a->mesh_jostled; total->mesh_dropped += a->mesh_dropped; total->mesh_replies_sent += a->mesh_replies_sent; - timeval_add(&total->mesh_replies_sum_wait, &a->mesh_replies_sum_wait); + stats_timeval_add(&total->mesh_replies_sum_wait_sec, &total->mesh_replies_sum_wait_usec, a->mesh_replies_sum_wait_sec, a->mesh_replies_sum_wait_usec); /* the medians are averaged together, this is not as accurate as * taking the median over all of the data, but is good and fast * added up here, division later*/ total->mesh_time_median += a->mesh_time_median; } -void server_stats_insquery(struct server_stats* stats, struct comm_point* c, +void server_stats_insquery(struct ub_server_stats* stats, struct comm_point* c, uint16_t qtype, uint16_t qclass, struct edns_data* edns, struct comm_reply* repinfo) { uint16_t flags = sldns_buffer_read_u16_at(c->buffer, 2); - if(qtype < STATS_QTYPE_NUM) + if(qtype < UB_STATS_QTYPE_NUM) stats->qtype[qtype]++; else stats->qtype_big++; - if(qclass < STATS_QCLASS_NUM) + if(qclass < UB_STATS_QCLASS_NUM) stats->qclass[qclass]++; else stats->qclass_big++; stats->qopcode[ LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) ]++; @@ -320,7 +455,7 @@ void server_stats_insquery(struct server_stats* stats, struct comm_point* c, } } -void server_stats_insrcode(struct server_stats* stats, sldns_buffer* buf) +void server_stats_insrcode(struct ub_server_stats* stats, sldns_buffer* buf) { if(stats->extended && sldns_buffer_limit(buf) != 0) { int r = (int)LDNS_RCODE_WIRE( sldns_buffer_begin(buf) ); diff --git a/external/unbound/daemon/stats.h b/external/unbound/daemon/stats.h index 6985446..4e5e6cf 100644 --- a/external/unbound/daemon/stats.h +++ b/external/unbound/daemon/stats.h @@ -50,143 +50,24 @@ struct comm_reply; struct edns_data; struct sldns_buffer; -/** number of qtype that is stored for in array */ -#define STATS_QTYPE_NUM 256 -/** number of qclass that is stored for in array */ -#define STATS_QCLASS_NUM 256 -/** number of rcodes in stats */ -#define STATS_RCODE_NUM 16 -/** number of opcodes in stats */ -#define STATS_OPCODE_NUM 16 - -/** per worker statistics */ -struct server_stats { - /** number of queries from clients received. */ - size_t num_queries; - /** number of queries that had a cache-miss. */ - size_t num_queries_missed_cache; - /** number of prefetch queries - cachehits with prefetch */ - size_t num_queries_prefetch; - - /** - * Sum of the querylistsize of the worker for - * every query that missed cache. To calculate average. - */ - size_t sum_query_list_size; - /** max value of query list size reached. */ - size_t max_query_list_size; - - /** Extended stats below (bool) */ - int extended; - - /** qtype stats */ - size_t qtype[STATS_QTYPE_NUM]; - /** bigger qtype values not in array */ - size_t qtype_big; - /** qclass stats */ - size_t qclass[STATS_QCLASS_NUM]; - /** bigger qclass values not in array */ - size_t qclass_big; - /** query opcodes */ - size_t qopcode[STATS_OPCODE_NUM]; - /** number of queries over TCP */ - size_t qtcp; - /** number of outgoing queries over TCP */ - size_t qtcp_outgoing; - /** number of queries over IPv6 */ - size_t qipv6; - /** number of queries with QR bit */ - size_t qbit_QR; - /** number of queries with AA bit */ - size_t qbit_AA; - /** number of queries with TC bit */ - size_t qbit_TC; - /** number of queries with RD bit */ - size_t qbit_RD; - /** number of queries with RA bit */ - size_t qbit_RA; - /** number of queries with Z bit */ - size_t qbit_Z; - /** number of queries with AD bit */ - size_t qbit_AD; - /** number of queries with CD bit */ - size_t qbit_CD; - /** number of queries with EDNS OPT record */ - size_t qEDNS; - /** number of queries with EDNS with DO flag */ - size_t qEDNS_DO; - /** answer rcodes */ - size_t ans_rcode[STATS_RCODE_NUM]; - /** answers with pseudo rcode 'nodata' */ - size_t ans_rcode_nodata; - /** answers that were secure (AD) */ - size_t ans_secure; - /** answers that were bogus (withheld as SERVFAIL) */ - size_t ans_bogus; - /** rrsets marked bogus by validator */ - size_t rrset_bogus; - /** unwanted traffic received on server-facing ports */ - size_t unwanted_replies; - /** unwanted traffic received on client-facing ports */ - size_t unwanted_queries; - /** usage of tcp accept list */ - size_t tcp_accept_usage; - - /** histogram data exported to array - * if the array is the same size, no data is lost, and - * if all histograms are same size (is so by default) then - * adding up works well. */ - size_t hist[NUM_BUCKETS_HIST]; - - /** number of message cache entries */ - size_t msg_cache_count; - /** number of rrset cache entries */ - size_t rrset_cache_count; - /** number of infra cache entries */ - size_t infra_cache_count; - /** number of key cache entries */ - size_t key_cache_count; -}; - -/** - * Statistics to send over the control pipe when asked - * This struct is made to be memcpied, sent in binary. - */ -struct stats_info { - /** the thread stats */ - struct server_stats svr; - - /** mesh stats: current number of states */ - size_t mesh_num_states; - /** mesh stats: current number of reply (user) states */ - size_t mesh_num_reply_states; - /** mesh stats: number of reply states overwritten with a new one */ - size_t mesh_jostled; - /** mesh stats: number of incoming queries dropped */ - size_t mesh_dropped; - /** mesh stats: replies sent */ - size_t mesh_replies_sent; - /** mesh stats: sum of waiting times for the replies */ - struct timeval mesh_replies_sum_wait; - /** mesh stats: median of waiting times for replies (in sec) */ - double mesh_time_median; -}; +/* stats struct */ +#include "libunbound/unbound.h" /** * Initialize server stats to 0. * @param stats: what to init (this is alloced by the caller). * @param cfg: with extended statistics option. */ -void server_stats_init(struct server_stats* stats, struct config_file* cfg); +void server_stats_init(struct ub_server_stats* stats, struct config_file* cfg); /** add query if it missed the cache */ -void server_stats_querymiss(struct server_stats* stats, struct worker* worker); +void server_stats_querymiss(struct ub_server_stats* stats, struct worker* worker); /** add query if was cached and also resulted in a prefetch */ -void server_stats_prefetch(struct server_stats* stats, struct worker* worker); +void server_stats_prefetch(struct ub_server_stats* stats, struct worker* worker); /** display the stats to the log */ -void server_stats_log(struct server_stats* stats, struct worker* worker, +void server_stats_log(struct ub_server_stats* stats, struct worker* worker, int threadnum); /** @@ -197,7 +78,7 @@ void server_stats_log(struct server_stats* stats, struct worker* worker, * @param reset: if stats can be reset. */ void server_stats_obtain(struct worker* worker, struct worker* who, - struct stats_info* s, int reset); + struct ub_stats_info* s, int reset); /** * Compile stats into structure for this thread worker. @@ -207,7 +88,7 @@ void server_stats_obtain(struct worker* worker, struct worker* who, * @param reset: if true, depending on config stats are reset. * if false, statistics are not reset. */ -void server_stats_compile(struct worker* worker, struct stats_info* s, +void server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset); /** @@ -223,7 +104,7 @@ void server_stats_reply(struct worker* worker, int reset); * @param total: sum of the two entries. * @param a: to add to it. */ -void server_stats_add(struct stats_info* total, struct stats_info* a); +void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a); /** * Add stats for this query @@ -234,7 +115,7 @@ void server_stats_add(struct stats_info* total, struct stats_info* a); * @param edns: edns record * @param repinfo: reply info with remote address */ -void server_stats_insquery(struct server_stats* stats, struct comm_point* c, +void server_stats_insquery(struct ub_server_stats* stats, struct comm_point* c, uint16_t qtype, uint16_t qclass, struct edns_data* edns, struct comm_reply* repinfo); @@ -243,6 +124,6 @@ void server_stats_insquery(struct server_stats* stats, struct comm_point* c, * @param stats: the stats * @param buf: buffer with rcode. If buffer is length0: not counted. */ -void server_stats_insrcode(struct server_stats* stats, struct sldns_buffer* buf); +void server_stats_insrcode(struct ub_server_stats* stats, struct sldns_buffer* buf); #endif /* DAEMON_STATS_H */ diff --git a/external/unbound/daemon/unbound.c b/external/unbound/daemon/unbound.c index 0ceee53..1383110 100644 --- a/external/unbound/daemon/unbound.c +++ b/external/unbound/daemon/unbound.c @@ -57,6 +57,7 @@ #include "util/data/msgreply.h" #include "util/module.h" #include "util/net_help.h" +#include "util/ub_event.h" #include #include #include @@ -77,22 +78,6 @@ #include #endif -#ifdef USE_MINI_EVENT -# ifdef USE_WINSOCK -# include "util/winsock_event.h" -# else -# include "util/mini_event.h" -# endif -#else -# ifdef HAVE_EVENT_H -# include -# else -# include "event2/event.h" -# include "event2/event_struct.h" -# include "event2/event_compat.h" -# endif -#endif - #ifdef UB_ON_WINDOWS # include "winrc/win_svc.h" #endif @@ -102,64 +87,14 @@ # include "nss.h" #endif -#ifdef HAVE_SBRK -/** global debug value to keep track of heap memory allocation */ -void* unbound_start_brk = 0; -#endif - -#if !defined(HAVE_EVENT_BASE_GET_METHOD) && (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) -static const char* ev_backend2str(int b) -{ - switch(b) { - case EVBACKEND_SELECT: return "select"; - case EVBACKEND_POLL: return "poll"; - case EVBACKEND_EPOLL: return "epoll"; - case EVBACKEND_KQUEUE: return "kqueue"; - case EVBACKEND_DEVPOLL: return "devpoll"; - case EVBACKEND_PORT: return "evport"; - } - return "unknown"; -} -#endif - -/** get the event system in use */ -static void get_event_sys(const char** n, const char** s, const char** m) -{ -#ifdef USE_WINSOCK - *n = "event"; - *s = "winsock"; - *m = "WSAWaitForMultipleEvents"; -#elif defined(USE_MINI_EVENT) - *n = "mini-event"; - *s = "internal"; - *m = "select"; -#else - struct event_base* b; - *s = event_get_version(); -# ifdef HAVE_EVENT_BASE_GET_METHOD - *n = "libevent"; - b = event_base_new(); - *m = event_base_get_method(b); -# elif defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) - *n = "libev"; - b = (struct event_base*)ev_default_loop(EVFLAG_AUTO); - *m = ev_backend2str(ev_backend((struct ev_loop*)b)); -# else - *n = "unknown"; - *m = "not obtainable"; - b = NULL; -# endif -# ifdef HAVE_EVENT_BASE_FREE - event_base_free(b); -# endif -#endif -} - /** print usage. */ -static void usage() +static void usage(void) { const char** m; const char *evnm="event", *evsys="", *evmethod=""; + time_t t; + struct timeval now; + struct ub_event_base* base; printf("usage: unbound [options]\n"); printf(" start unbound daemon DNS resolver.\n"); printf("-h this help\n"); @@ -173,11 +108,16 @@ static void usage() printf(" service - used to start from services control panel\n"); #endif printf("Version %s\n", PACKAGE_VERSION); - get_event_sys(&evnm, &evsys, &evmethod); + base = ub_default_event_base(0,&t,&now); + ub_get_event_sys(base, &evnm, &evsys, &evmethod); printf("linked libs: %s %s (it uses %s), %s\n", evnm, evsys, evmethod, #ifdef HAVE_SSL +# ifdef SSLEAY_VERSION SSLeay_version(SSLEAY_VERSION) +# else + OpenSSL_version(OPENSSL_VERSION) +# endif #elif defined(HAVE_NSS) NSS_GetVersion() #elif defined(HAVE_NETTLE) @@ -188,8 +128,12 @@ static void usage() for(m = module_list_avail(); *m; m++) printf(" %s", *m); printf("\n"); +#ifdef USE_DNSCRYPT + printf("DNSCrypt feature available\n"); +#endif printf("BSD licensed, see LICENSE in source package for details.\n"); printf("Report bugs to %s\n", PACKAGE_BUGREPORT); + ub_event_base_free(base); } #ifndef unbound_testbound @@ -230,7 +174,7 @@ checkrlimits(struct config_file* cfg) struct rlimit rlim; if(total > 1024 && - strncmp(event_get_version(), "mini-event", 10) == 0) { + strncmp(ub_event_get_version(), "mini-event", 10) == 0) { log_warn("too many file descriptors requested. The builtin" "mini-event cannot handle more than 1024. Config " "for less fds or compile with libevent"); @@ -244,7 +188,7 @@ checkrlimits(struct config_file* cfg) total = 1024; } if(perthread > 64 && - strncmp(event_get_version(), "winsock-event", 13) == 0) { + strncmp(ub_event_get_version(), "winsock-event", 13) == 0) { log_err("too many file descriptors requested. The winsock" " event handler cannot handle more than 64 per " " thread. Config for less fds"); @@ -298,19 +242,37 @@ checkrlimits(struct config_file* cfg) #endif /* S_SPLINT_S */ } +/** set default logfile identity based on value from argv[0] at startup **/ +static void +log_ident_set_fromdefault(struct config_file* cfg, + const char *log_default_identity) +{ + if(cfg->log_identity == NULL || cfg->log_identity[0] == 0) + log_ident_set(log_default_identity); + else + log_ident_set(cfg->log_identity); +} + /** set verbosity, check rlimits, cache settings */ static void apply_settings(struct daemon* daemon, struct config_file* cfg, - int cmdline_verbose, int debug_mode) + int cmdline_verbose, int debug_mode, const char* log_default_identity) { /* apply if they have changed */ verbosity = cmdline_verbose + cfg->verbosity; if (debug_mode > 1) { cfg->use_syslog = 0; + free(cfg->logfile); cfg->logfile = NULL; } daemon_apply_cfg(daemon, cfg); checkrlimits(cfg); + + if (cfg->use_systemd && cfg->do_daemonize) { + log_warn("use-systemd and do-daemonize should not be enabled at the same time"); + } + + log_ident_set_fromdefault(cfg, log_default_identity); } #ifdef HAVE_KILL @@ -438,11 +400,14 @@ detach(void) #endif /* HAVE_DAEMON */ } -/** daemonize, drop user priviliges and chroot if needed */ +/** daemonize, drop user privileges and chroot if needed */ static void perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, - const char** cfgfile) + const char** cfgfile, int need_pidfile) { +#ifdef HAVE_KILL + int pidinchroot; +#endif #ifdef HAVE_GETPWNAM struct passwd *pwd = NULL; @@ -456,17 +421,6 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, w_config_adjust_directory(cfg); #endif - /* init syslog (as root) if needed, before daemonize, otherwise - * a fork error could not be printed since daemonize closed stderr.*/ - if(cfg->use_syslog) { - log_init(cfg->logfile, cfg->use_syslog, cfg->chrootdir); - } - /* if using a logfile, we cannot open it because the logfile would - * be created with the wrong permissions, we cannot chown it because - * we cannot chown system logfiles, so we do not open at all. - * So, using a logfile, the user does not see errors unless -d is - * given to unbound on the commandline. */ - /* read ssl keys while superuser and outside chroot */ #ifdef HAVE_SSL if(!(daemon->rc = daemon_remote_create(cfg))) @@ -476,13 +430,31 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, cfg->ssl_service_key, cfg->ssl_service_pem, NULL))) fatal_exit("could not set up listen SSL_CTX"); } - if(!(daemon->connect_sslctx = connect_sslctx_create(NULL, NULL, NULL))) + if(!(daemon->connect_sslctx = connect_sslctx_create(NULL, NULL, + cfg->tls_cert_bundle, cfg->tls_win_cert))) fatal_exit("could not set up connect SSL_CTX"); #endif + /* init syslog (as root) if needed, before daemonize, otherwise + * a fork error could not be printed since daemonize closed stderr.*/ + if(cfg->use_syslog) { + log_init(cfg->logfile, cfg->use_syslog, cfg->chrootdir); + } + /* if using a logfile, we cannot open it because the logfile would + * be created with the wrong permissions, we cannot chown it because + * we cannot chown system logfiles, so we do not open at all. + * So, using a logfile, the user does not see errors unless -d is + * given to unbound on the commandline. */ + #ifdef HAVE_KILL + /* true if pidfile is inside chrootdir, or nochroot */ + pidinchroot = need_pidfile && (!(cfg->chrootdir && cfg->chrootdir[0]) || + (cfg->chrootdir && cfg->chrootdir[0] && + strncmp(cfg->pidfile, cfg->chrootdir, + strlen(cfg->chrootdir))==0)); + /* check old pid file before forking */ - if(cfg->pidfile && cfg->pidfile[0]) { + if(cfg->pidfile && cfg->pidfile[0] && need_pidfile) { /* calculate position of pidfile */ if(cfg->pidfile[0] == '/') daemon->pidfile = strdup(cfg->pidfile); @@ -490,12 +462,7 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, cfg, 1); if(!daemon->pidfile) fatal_exit("pidfile alloc: out of memory"); - checkoldpid(daemon->pidfile, - /* true if pidfile is inside chrootdir, or nochroot */ - !(cfg->chrootdir && cfg->chrootdir[0]) || - (cfg->chrootdir && cfg->chrootdir[0] && - strncmp(daemon->pidfile, cfg->chrootdir, - strlen(cfg->chrootdir))==0)); + checkoldpid(daemon->pidfile, pidinchroot); } #endif @@ -506,12 +473,13 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, /* write new pidfile (while still root, so can be outside chroot) */ #ifdef HAVE_KILL - if(cfg->pidfile && cfg->pidfile[0]) { + if(cfg->pidfile && cfg->pidfile[0] && need_pidfile) { writepid(daemon->pidfile, getpid()); - if(cfg->username && cfg->username[0] && cfg_uid != (uid_t)-1) { + if(cfg->username && cfg->username[0] && cfg_uid != (uid_t)-1 && + pidinchroot) { # ifdef HAVE_CHOWN if(chown(daemon->pidfile, cfg_uid, cfg_gid) == -1) { - log_err("cannot chown %u.%u %s: %s", + verbose(VERB_QUERY, "cannot chown %u.%u %s: %s", (unsigned)cfg_uid, (unsigned)cfg_gid, daemon->pidfile, strerror(errno)); } @@ -520,6 +488,7 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, } #else (void)daemon; + (void)need_pidfile; #endif /* HAVE_KILL */ /* Set user context */ @@ -597,7 +566,9 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, log_warn("unable to initgroups %s: %s", cfg->username, strerror(errno)); # endif /* HAVE_INITGROUPS */ +# ifdef HAVE_ENDPWENT endpwent(); +# endif #ifdef HAVE_SETRESGID if(setresgid(cfg_gid,cfg_gid,cfg_gid) != 0) @@ -633,9 +604,11 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, * @param cmdline_verbose: verbosity resulting from commandline -v. * These increase verbosity as specified in the config file. * @param debug_mode: if set, do not daemonize. + * @param log_default_identity: Default identity to report in logs + * @param need_pidfile: if false, no pidfile is checked or created. */ static void -run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode) +run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode, const char* log_default_identity, int need_pidfile) { struct config_file* cfg = NULL; struct daemon* daemon = NULL; @@ -657,7 +630,7 @@ run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode) cfgfile); log_warn("Continuing with default config settings"); } - apply_settings(daemon, cfg, cmdline_verbose, debug_mode); + apply_settings(daemon, cfg, cmdline_verbose, debug_mode, log_default_identity); if(!done_setup) config_lookup_uid(cfg); @@ -665,7 +638,7 @@ run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode) if(!daemon_open_shared_ports(daemon)) fatal_exit("could not open ports"); if(!done_setup) { - perform_setup(daemon, cfg, debug_mode, &cfgfile); + perform_setup(daemon, cfg, debug_mode, &cfgfile, need_pidfile); done_setup = 1; } else { /* reopen log after HUP to facilitate log rotation */ @@ -712,21 +685,20 @@ main(int argc, char* argv[]) int c; const char* cfgfile = CONFIGFILE; const char* winopt = NULL; + const char* log_ident_default; int cmdline_verbose = 0; int debug_mode = 0; + int need_pidfile = 1; + #ifdef UB_ON_WINDOWS int cmdline_cfg = 0; #endif -#ifdef HAVE_SBRK - /* take debug snapshot of heap */ - unbound_start_brk = sbrk(0); -#endif - log_init(NULL, 0, NULL); - log_ident_set(strrchr(argv[0],'/')?strrchr(argv[0],'/')+1:argv[0]); + log_ident_default = strrchr(argv[0],'/')?strrchr(argv[0],'/')+1:argv[0]; + log_ident_set(log_ident_default); /* parse the options */ - while( (c=getopt(argc, argv, "c:dhvw:")) != -1) { + while( (c=getopt(argc, argv, "c:dhpvw:")) != -1) { switch(c) { case 'c': cfgfile = optarg; @@ -735,9 +707,12 @@ main(int argc, char* argv[]) #endif break; case 'v': - cmdline_verbose ++; + cmdline_verbose++; verbosity++; break; + case 'p': + need_pidfile = 0; + break; case 'd': debug_mode++; break; @@ -768,7 +743,12 @@ main(int argc, char* argv[]) return 1; } - run_daemon(cfgfile, cmdline_verbose, debug_mode); + run_daemon(cfgfile, cmdline_verbose, debug_mode, log_ident_default, need_pidfile); log_init(NULL, 0, NULL); /* close logfile */ +#ifndef unbound_testbound + if(log_get_lock()) { + lock_quick_destroy((lock_quick_type*)log_get_lock()); + } +#endif return 0; } diff --git a/external/unbound/daemon/worker.c b/external/unbound/daemon/worker.c index c90a659..44a989a 100644 --- a/external/unbound/daemon/worker.c +++ b/external/unbound/daemon/worker.c @@ -58,6 +58,7 @@ #include "services/cache/rrset.h" #include "services/cache/infra.h" #include "services/cache/dns.h" +#include "services/authzone.h" #include "services/mesh.h" #include "services/localzone.h" #include "util/data/msgparse.h" @@ -69,9 +70,13 @@ #include "iterator/iter_hints.h" #include "validator/autotrust.h" #include "validator/val_anchor.h" +#include "respip/respip.h" #include "libunbound/context.h" #include "libunbound/libworker.h" #include "sldns/sbuffer.h" +#include "sldns/wire2str.h" +#include "util/shm_side/shm_main.h" +#include "dnscrypt/dnscrypt.h" #ifdef HAVE_SYS_TYPES_H # include @@ -101,61 +106,21 @@ */ #define PREFETCH_EXPIRY_ADD 60 -#ifdef UNBOUND_ALLOC_STATS -/** measure memory leakage */ -static void -debug_memleak(size_t accounted, size_t heap, - size_t total_alloc, size_t total_free) -{ - static int init = 0; - static size_t base_heap, base_accounted, base_alloc, base_free; - size_t base_af, cur_af, grow_af, grow_acc; - if(!init) { - init = 1; - base_heap = heap; - base_accounted = accounted; - base_alloc = total_alloc; - base_free = total_free; - } - base_af = base_alloc - base_free; - cur_af = total_alloc - total_free; - grow_af = cur_af - base_af; - grow_acc = accounted - base_accounted; - log_info("Leakage: %d leaked. growth: %u use, %u acc, %u heap", - (int)(grow_af - grow_acc), (unsigned)grow_af, - (unsigned)grow_acc, (unsigned)(heap - base_heap)); -} - -/** give debug heap size indication */ -static void -debug_total_mem(size_t calctotal) -{ -#ifdef HAVE_SBRK - extern void* unbound_start_brk; - extern size_t unbound_mem_alloc, unbound_mem_freed; - void* cur = sbrk(0); - int total = cur-unbound_start_brk; - log_info("Total heap memory estimate: %u total-alloc: %u " - "total-free: %u", (unsigned)total, - (unsigned)unbound_mem_alloc, (unsigned)unbound_mem_freed); - debug_memleak(calctotal, (size_t)total, - unbound_mem_alloc, unbound_mem_freed); -#else - (void)calctotal; -#endif /* HAVE_SBRK */ -} -#endif /* UNBOUND_ALLOC_STATS */ - /** Report on memory usage by this thread and global */ static void worker_mem_report(struct worker* ATTR_UNUSED(worker), struct serviced_query* ATTR_UNUSED(cur_serv)) { #ifdef UNBOUND_ALLOC_STATS + /* measure memory leakage */ + extern size_t unbound_mem_alloc, unbound_mem_freed; /* debug func in validator module */ size_t total, front, back, mesh, msg, rrset, infra, ac, superac; size_t me, iter, val, anch; int i; +#ifdef CLIENT_SUBNET + size_t subnet = 0; +#endif /* CLIENT_SUBNET */ if(verbosity < VERB_ALGO) return; front = listen_get_mem(worker->front); @@ -175,6 +140,12 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), if(strcmp(worker->env.mesh->mods.mod[i]->name, "validator")==0) val += (*worker->env.mesh->mods.mod[i]->get_mem) (&worker->env, i); +#ifdef CLIENT_SUBNET + else if(strcmp(worker->env.mesh->mods.mod[i]->name, + "subnet")==0) + subnet += (*worker->env.mesh->mods.mod[i]->get_mem) + (&worker->env, i); +#endif /* CLIENT_SUBNET */ else iter += (*worker->env.mesh->mods.mod[i]->get_mem) (&worker->env, i); } @@ -192,6 +163,17 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), me += serviced_get_mem(cur_serv); } total = front+back+mesh+msg+rrset+infra+iter+val+ac+superac+me; +#ifdef CLIENT_SUBNET + total += subnet; + log_info("Memory conditions: %u front=%u back=%u mesh=%u msg=%u " + "rrset=%u infra=%u iter=%u val=%u subnet=%u anchors=%u " + "alloccache=%u globalalloccache=%u me=%u", + (unsigned)total, (unsigned)front, (unsigned)back, + (unsigned)mesh, (unsigned)msg, (unsigned)rrset, (unsigned)infra, + (unsigned)iter, (unsigned)val, + (unsigned)subnet, (unsigned)anch, (unsigned)ac, + (unsigned)superac, (unsigned)me); +#else /* no CLIENT_SUBNET */ log_info("Memory conditions: %u front=%u back=%u mesh=%u msg=%u " "rrset=%u infra=%u iter=%u val=%u anchors=%u " "alloccache=%u globalalloccache=%u me=%u", @@ -199,9 +181,15 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), (unsigned)mesh, (unsigned)msg, (unsigned)rrset, (unsigned)infra, (unsigned)iter, (unsigned)val, (unsigned)anch, (unsigned)ac, (unsigned)superac, (unsigned)me); - debug_total_mem(total); +#endif /* CLIENT_SUBNET */ + log_info("Total heap memory estimate: %u total-alloc: %u " + "total-free: %u", (unsigned)total, + (unsigned)unbound_mem_alloc, (unsigned)unbound_mem_freed); #else /* no UNBOUND_ALLOC_STATS */ size_t val = 0; +#ifdef CLIENT_SUBNET + size_t subnet = 0; +#endif /* CLIENT_SUBNET */ int i; if(verbosity < VERB_QUERY) return; @@ -211,12 +199,27 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), if(strcmp(worker->env.mesh->mods.mod[i]->name, "validator")==0) val += (*worker->env.mesh->mods.mod[i]->get_mem) (&worker->env, i); +#ifdef CLIENT_SUBNET + else if(strcmp(worker->env.mesh->mods.mod[i]->name, + "subnet")==0) + subnet += (*worker->env.mesh->mods.mod[i]->get_mem) + (&worker->env, i); +#endif /* CLIENT_SUBNET */ } +#ifdef CLIENT_SUBNET + verbose(VERB_QUERY, "cache memory msg=%u rrset=%u infra=%u val=%u " + "subnet=%u", + (unsigned)slabhash_get_mem(worker->env.msg_cache), + (unsigned)slabhash_get_mem(&worker->env.rrset_cache->table), + (unsigned)infra_get_mem(worker->env.infra_cache), + (unsigned)val, (unsigned)subnet); +#else /* no CLIENT_SUBNET */ verbose(VERB_QUERY, "cache memory msg=%u rrset=%u infra=%u val=%u", (unsigned)slabhash_get_mem(worker->env.msg_cache), (unsigned)slabhash_get_mem(&worker->env.rrset_cache->table), (unsigned)infra_get_mem(worker->env.infra_cache), (unsigned)val); +#endif /* CLIENT_SUBNET */ #endif /* UNBOUND_ALLOC_STATS */ } @@ -339,7 +342,8 @@ worker_check_request(sldns_buffer* pkt, struct worker* worker) verbose(VERB_QUERY, "request bad, has TC bit on"); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } - if(LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_QUERY) { + if(LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_QUERY && + LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY) { verbose(VERB_QUERY, "request unknown opcode %d", LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_NOTIMPL); @@ -349,7 +353,9 @@ worker_check_request(sldns_buffer* pkt, struct worker* worker) LDNS_QDCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } - if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 0) { + if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 0 && + (LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 1 || + LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY)) { verbose(VERB_QUERY, "request wrong nr an=%d", LDNS_ANCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); @@ -483,25 +489,30 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, qinfo->qname_len, qinfo->qtype, qinfo->qclass, worker->scratchpad, &msg, timenow); if(!dp) { /* no delegation, need to reprime */ - regional_free_all(worker->scratchpad); return 0; } + /* In case we have a local alias, copy it into the delegation message. + * Shallow copy should be fine, as we'll be done with msg in this + * function. */ + msg->qinfo.local_alias = qinfo->local_alias; if(must_validate) { switch(check_delegation_secure(msg->rep)) { case sec_status_unchecked: /* some rrsets have not been verified yet, go and * let validator do that */ - regional_free_all(worker->scratchpad); return 0; case sec_status_bogus: + case sec_status_secure_sentinel_fail: /* some rrsets are bogus, reply servfail */ edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; + if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, + msg->rep, LDNS_RCODE_SERVFAIL, edns, worker->scratchpad)) + return 0; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); - regional_free_all(worker->scratchpad); if(worker->stats.extended) { worker->stats.ans_bogus++; worker->stats.ans_rcode[LDNS_RCODE_SERVFAIL]++; @@ -527,14 +538,19 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; + if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, msg->rep, + (int)(flags&LDNS_RCODE_MASK), edns, worker->scratchpad)) + return 0; msg->rep->flags |= BIT_QR|BIT_RA; if(!reply_info_answer_encode(&msg->qinfo, msg->rep, id, flags, repinfo->c->buffer, 0, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { + if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, + LDNS_RCODE_SERVFAIL, edns, worker->scratchpad)) + edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); } - regional_free_all(worker->scratchpad); if(worker->stats.extended) { if(secure) worker->stats.ans_secure++; server_stats_insrcode(&worker->stats, repinfo->c->buffer); @@ -542,28 +558,93 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, return 1; } -/** answer query from the cache */ +/** Apply, if applicable, a response IP action to a cached answer. + * If the answer is rewritten as a result of an action, '*encode_repp' will + * point to the reply info containing the modified answer. '*encode_repp' will + * be intact otherwise. + * It returns 1 on success, 0 otherwise. */ +static int +apply_respip_action(struct worker* worker, const struct query_info* qinfo, + struct respip_client_info* cinfo, struct reply_info* rep, + struct comm_reply* repinfo, struct ub_packed_rrset_key** alias_rrset, + struct reply_info** encode_repp) +{ + struct respip_action_info actinfo = {respip_none, NULL}; + + if(qinfo->qtype != LDNS_RR_TYPE_A && + qinfo->qtype != LDNS_RR_TYPE_AAAA && + qinfo->qtype != LDNS_RR_TYPE_ANY) + return 1; + + if(!respip_rewrite_reply(qinfo, cinfo, rep, encode_repp, &actinfo, + alias_rrset, 0, worker->scratchpad)) + return 0; + + /* xxx_deny actions mean dropping the reply, unless the original reply + * was redirected to response-ip data. */ + if((actinfo.action == respip_deny || + actinfo.action == respip_inform_deny) && + *encode_repp == rep) + *encode_repp = NULL; + + /* If address info is returned, it means the action should be an + * 'inform' variant and the information should be logged. */ + if(actinfo.addrinfo) { + respip_inform_print(actinfo.addrinfo, qinfo->qname, + qinfo->qtype, qinfo->qclass, qinfo->local_alias, + repinfo); + } + + return 1; +} + +/** answer query from the cache. + * Normally, the answer message will be built in repinfo->c->buffer; if the + * answer is supposed to be suppressed or the answer is supposed to be an + * incomplete CNAME chain, the buffer is explicitly cleared to signal the + * caller as such. In the latter case *partial_rep will point to the incomplete + * reply, and this function is (possibly) supposed to be called again with that + * *partial_rep value to complete the chain. In addition, if the query should + * be completely dropped, '*need_drop' will be set to 1. */ static int answer_from_cache(struct worker* worker, struct query_info* qinfo, + struct respip_client_info* cinfo, int* need_drop, + struct ub_packed_rrset_key** alias_rrset, + struct reply_info** partial_repp, struct reply_info* rep, uint16_t id, uint16_t flags, struct comm_reply* repinfo, struct edns_data* edns) { time_t timenow = *worker->env.now; uint16_t udpsize = edns->udp_size; + struct reply_info* encode_rep = rep; + struct reply_info* partial_rep = *partial_repp; int secure; int must_validate = (!(flags&BIT_CD) || worker->env.cfg->ignore_cd) && worker->env.need_to_validate; - /* see if it is possible */ - if(rep->ttl < timenow) { - /* the rrsets may have been updated in the meantime. - * we will refetch the message format from the - * authoritative server - */ - return 0; + *partial_repp = NULL; /* avoid accidental further pass */ + if(worker->env.cfg->serve_expired) { + /* always lock rrsets, rep->ttl is ignored */ + if(!rrset_array_lock(rep->ref, rep->rrset_count, 0)) + return 0; + /* below, rrsets with ttl before timenow become TTL 0 in + * the response */ + /* This response was served with zero TTL */ + if (timenow >= rep->ttl) { + worker->stats.zero_ttl_responses++; + } + } else { + /* see if it is possible */ + if(rep->ttl < timenow) { + /* the rrsets may have been updated in the meantime. + * we will refetch the message format from the + * authoritative server + */ + return 0; + } + if(!rrset_array_lock(rep->ref, rep->rrset_count, timenow)) + return 0; + /* locked and ids and ttls are OK. */ } - if(!rrset_array_lock(rep->ref, rep->rrset_count, timenow)) - return 0; - /* locked and ids and ttls are OK. */ /* check CNAME chain (if any) */ if(rep->an_numrrsets > 0 && (rep->rrsets[0]->rk.type == htons(LDNS_RR_TYPE_CNAME) || rep->rrsets[0]->rk.type == @@ -574,22 +655,24 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, bail_out: rrset_array_unlock_touch(worker->env.rrset_cache, worker->scratchpad, rep->ref, rep->rrset_count); - regional_free_all(worker->scratchpad); return 0; } } /* check security status of the cached answer */ - if( rep->security == sec_status_bogus && must_validate) { + if(must_validate && (rep->security == sec_status_bogus || + rep->security == sec_status_secure_sentinel_fail)) { /* BAD cached */ edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; + if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, rep, + LDNS_RCODE_SERVFAIL, edns, worker->scratchpad)) + goto bail_out; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); rrset_array_unlock_touch(worker->env.rrset_cache, worker->scratchpad, rep->ref, rep->rrset_count); - regional_free_all(worker->scratchpad); if(worker->stats.extended) { worker->stats.ans_bogus ++; worker->stats.ans_rcode[LDNS_RCODE_SERVFAIL] ++; @@ -616,9 +699,41 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - if(!reply_info_answer_encode(qinfo, rep, id, flags, + if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, rep, + (int)(flags&LDNS_RCODE_MASK), edns, worker->scratchpad)) + goto bail_out; + *alias_rrset = NULL; /* avoid confusion if caller set it to non-NULL */ + if(worker->daemon->use_response_ip && !partial_rep && + !apply_respip_action(worker, qinfo, cinfo, rep, repinfo, alias_rrset, + &encode_rep)) { + goto bail_out; + } else if(partial_rep && + !respip_merge_cname(partial_rep, qinfo, rep, cinfo, + must_validate, &encode_rep, worker->scratchpad)) { + goto bail_out; + } + if(encode_rep != rep) + secure = 0; /* if rewritten, it can't be considered "secure" */ + if(!encode_rep || *alias_rrset) { + sldns_buffer_clear(repinfo->c->buffer); + sldns_buffer_flip(repinfo->c->buffer); + if(!encode_rep) + *need_drop = 1; + else { + /* If a partial CNAME chain is found, we first need to + * make a copy of the reply in the scratchpad so we + * can release the locks and lookup the cache again. */ + *partial_repp = reply_info_copy(encode_rep, NULL, + worker->scratchpad); + if(!*partial_repp) + goto bail_out; + } + } else if(!reply_info_answer_encode(qinfo, encode_rep, id, flags, repinfo->c->buffer, timenow, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { + if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, + LDNS_RCODE_SERVFAIL, edns, worker->scratchpad)) + edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); } @@ -626,7 +741,6 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, * is bad while holding locks. */ rrset_array_unlock_touch(worker->env.rrset_cache, worker->scratchpad, rep->ref, rep->rrset_count); - regional_free_all(worker->scratchpad); if(worker->stats.extended) { if(secure) worker->stats.ans_secure++; server_stats_insrcode(&worker->stats, repinfo->c->buffer); @@ -635,14 +749,18 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, return 1; } -/** Reply to client and perform prefetch to keep cache up to date */ +/** Reply to client and perform prefetch to keep cache up to date. + * If the buffer for the reply is empty, it indicates that only prefetch is + * necessary and the reply should be suppressed (because it's dropped or + * being deferred). */ static void reply_and_prefetch(struct worker* worker, struct query_info* qinfo, uint16_t flags, struct comm_reply* repinfo, time_t leeway) { /* first send answer to client to keep its latency * as small as a cachereply */ - comm_point_send_reply(repinfo); + if(sldns_buffer_limit(repinfo->c->buffer) != 0) + comm_point_send_reply(repinfo); server_stats_prefetch(&worker->stats, worker); /* create the prefetch in the mesh as a normal lookup without @@ -657,39 +775,115 @@ reply_and_prefetch(struct worker* worker, struct query_info* qinfo, * Fill CH class answer into buffer. Keeps query. * @param pkt: buffer * @param str: string to put into text record (<255). + * array of strings, every string becomes a text record. + * @param num: number of strings in array. * @param edns: edns reply information. + * @param worker: worker with scratch region. */ static void -chaos_replystr(sldns_buffer* pkt, const char* str, struct edns_data* edns) +chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, + struct worker* worker) { - size_t len = strlen(str); + int i; unsigned int rd = LDNS_RD_WIRE(sldns_buffer_begin(pkt)); unsigned int cd = LDNS_CD_WIRE(sldns_buffer_begin(pkt)); - if(len>255) len=255; /* cap size of TXT record */ sldns_buffer_clear(pkt); sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip id */ sldns_buffer_write_u16(pkt, (uint16_t)(BIT_QR|BIT_RA)); if(rd) LDNS_RD_SET(sldns_buffer_begin(pkt)); if(cd) LDNS_CD_SET(sldns_buffer_begin(pkt)); sldns_buffer_write_u16(pkt, 1); /* qdcount */ - sldns_buffer_write_u16(pkt, 1); /* ancount */ + sldns_buffer_write_u16(pkt, (uint16_t)num); /* ancount */ sldns_buffer_write_u16(pkt, 0); /* nscount */ sldns_buffer_write_u16(pkt, 0); /* arcount */ (void)query_dname_len(pkt); /* skip qname */ sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip qtype */ sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip qclass */ - sldns_buffer_write_u16(pkt, 0xc00c); /* compr ptr to query */ - sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_TXT); - sldns_buffer_write_u16(pkt, LDNS_RR_CLASS_CH); - sldns_buffer_write_u32(pkt, 0); /* TTL */ - sldns_buffer_write_u16(pkt, sizeof(uint8_t) + len); - sldns_buffer_write_u8(pkt, len); - sldns_buffer_write(pkt, str, len); + for(i=0; i255) len=255; /* cap size of TXT record */ + sldns_buffer_write_u16(pkt, 0xc00c); /* compr ptr to query */ + sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_TXT); + sldns_buffer_write_u16(pkt, LDNS_RR_CLASS_CH); + sldns_buffer_write_u32(pkt, 0); /* TTL */ + sldns_buffer_write_u16(pkt, sizeof(uint8_t) + len); + sldns_buffer_write_u8(pkt, len); + sldns_buffer_write(pkt, str[i], len); + } sldns_buffer_flip(pkt); edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; edns->bits &= EDNS_DO; - attach_edns_record(pkt, edns); + if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, + LDNS_RCODE_NOERROR, edns, worker->scratchpad)) + edns->opt_list = NULL; + if(sldns_buffer_capacity(pkt) >= + sldns_buffer_limit(pkt)+calc_edns_field_size(edns)) + attach_edns_record(pkt, edns); +} + +/** Reply with one string */ +static void +chaos_replyonestr(sldns_buffer* pkt, const char* str, struct edns_data* edns, + struct worker* worker) +{ + chaos_replystr(pkt, (char**)&str, 1, edns, worker); +} + +/** + * Create CH class trustanchor answer. + * @param pkt: buffer + * @param edns: edns reply information. + * @param w: worker with scratch region. + */ +static void +chaos_trustanchor(sldns_buffer* pkt, struct edns_data* edns, struct worker* w) +{ +#define TA_RESPONSE_MAX_TXT 16 /* max number of TXT records */ +#define TA_RESPONSE_MAX_TAGS 32 /* max number of tags printed per zone */ + char* str_array[TA_RESPONSE_MAX_TXT]; + uint16_t tags[TA_RESPONSE_MAX_TAGS]; + int num = 0; + struct trust_anchor* ta; + + if(!w->env.need_to_validate) { + /* no validator module, reply no trustanchors */ + chaos_replystr(pkt, NULL, 0, edns, w); + return; + } + + /* fill the string with contents */ + lock_basic_lock(&w->env.anchors->lock); + RBTREE_FOR(ta, struct trust_anchor*, w->env.anchors->tree) { + char* str; + size_t i, numtag, str_len = 255; + if(num == TA_RESPONSE_MAX_TXT) continue; + str = (char*)regional_alloc(w->scratchpad, str_len); + if(!str) continue; + lock_basic_lock(&ta->lock); + numtag = anchor_list_keytags(ta, tags, TA_RESPONSE_MAX_TAGS); + if(numtag == 0) { + /* empty, insecure point */ + lock_basic_unlock(&ta->lock); + continue; + } + str_array[num] = str; + num++; + + /* spool name of anchor */ + (void)sldns_wire2str_dname_buf(ta->name, ta->namelen, str, str_len); + str_len -= strlen(str); str += strlen(str); + /* spool tags */ + for(i=0; ilock); + } + lock_basic_unlock(&w->env.anchors->lock); + + chaos_replystr(pkt, str_array, num, edns, w); + regional_free_all(w->scratchpad); } /** @@ -718,13 +912,13 @@ answer_chaos(struct worker* w, struct query_info* qinfo, char buf[MAXHOSTNAMELEN+1]; if (gethostname(buf, MAXHOSTNAMELEN) == 0) { buf[MAXHOSTNAMELEN] = 0; - chaos_replystr(pkt, buf, edns); + chaos_replyonestr(pkt, buf, edns, w); } else { log_err("gethostname: %s", strerror(errno)); - chaos_replystr(pkt, "no hostname", edns); + chaos_replyonestr(pkt, "no hostname", edns, w); } } - else chaos_replystr(pkt, cfg->identity, edns); + else chaos_replyonestr(pkt, cfg->identity, edns, w); return 1; } if(query_dname_compare(qinfo->qname, @@ -735,13 +929,82 @@ answer_chaos(struct worker* w, struct query_info* qinfo, if(cfg->hide_version) return 0; if(cfg->version==NULL || cfg->version[0]==0) - chaos_replystr(pkt, PACKAGE_STRING, edns); - else chaos_replystr(pkt, cfg->version, edns); + chaos_replyonestr(pkt, PACKAGE_STRING, edns, w); + else chaos_replyonestr(pkt, cfg->version, edns, w); return 1; } + if(query_dname_compare(qinfo->qname, + (uint8_t*)"\013trustanchor\007unbound") == 0) + { + if(cfg->hide_trustanchor) + return 0; + chaos_trustanchor(pkt, edns, w); + return 1; + } + return 0; } +/** + * Answer notify queries. These are notifies for authoritative zones, + * the reply is an ack that the notify has been received. We need to check + * access permission here. + * @param w: worker + * @param qinfo: query info. Pointer into packet buffer. + * @param edns: edns info from query. + * @param repinfo: reply info with source address. + * @param pkt: packet buffer. + */ +static void +answer_notify(struct worker* w, struct query_info* qinfo, + struct edns_data* edns, sldns_buffer* pkt, struct comm_reply* repinfo) +{ + int refused = 0; + int rcode = LDNS_RCODE_NOERROR; + uint32_t serial = 0; + int has_serial; + if(!w->env.auth_zones) return; + has_serial = auth_zone_parse_notify_serial(pkt, &serial); + if(auth_zones_notify(w->env.auth_zones, &w->env, qinfo->qname, + qinfo->qname_len, qinfo->qclass, &repinfo->addr, + repinfo->addrlen, has_serial, serial, &refused)) { + rcode = LDNS_RCODE_NOERROR; + } else { + if(refused) + rcode = LDNS_RCODE_REFUSED; + else rcode = LDNS_RCODE_SERVFAIL; + } + + if(verbosity >= VERB_DETAIL) { + char buf[380]; + char zname[255+1]; + char sr[25]; + dname_str(qinfo->qname, zname); + sr[0]=0; + if(has_serial) + snprintf(sr, sizeof(sr), "serial %u ", + (unsigned)serial); + if(rcode == LDNS_RCODE_REFUSED) + snprintf(buf, sizeof(buf), + "refused NOTIFY %sfor %s from", sr, zname); + else if(rcode == LDNS_RCODE_SERVFAIL) + snprintf(buf, sizeof(buf), + "servfail for NOTIFY %sfor %s from", sr, zname); + else snprintf(buf, sizeof(buf), + "received NOTIFY %sfor %s from", sr, zname); + log_addr(VERB_DETAIL, buf, &repinfo->addr, repinfo->addrlen); + } + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->ext_rcode = 0; + edns->bits &= EDNS_DO; + edns->opt_list = NULL; + error_encode(pkt, rcode, qinfo, + *(uint16_t*)(void *)sldns_buffer_begin(pkt), + sldns_buffer_read_u16_at(pkt, 2), edns); + LDNS_OPCODE_SET(sldns_buffer_begin(pkt), LDNS_PACKET_NOTIFY); +} + static int deny_refuse(struct comm_point* c, enum acl_access acl, enum acl_access deny, enum acl_access refuse, @@ -768,6 +1031,8 @@ deny_refuse(struct comm_point* c, enum acl_access acl, LDNS_QR_SET(sldns_buffer_begin(c->buffer)); LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_REFUSED); + sldns_buffer_set_position(c->buffer, LDNS_HEADER_SIZE); + sldns_buffer_flip(c->buffer); return 1; } @@ -794,25 +1059,81 @@ worker_handle_request(struct comm_point* c, void* arg, int error, { struct worker* worker = (struct worker*)arg; int ret; - hashvalue_t h; + hashvalue_type h; struct lruhash_entry* e; struct query_info qinfo; struct edns_data edns; enum acl_access acl; + struct acl_addr* acladdr; int rc = 0; + int need_drop = 0; + /* We might have to chase a CNAME chain internally, in which case + * we'll have up to two replies and combine them to build a complete + * answer. These variables control this case. */ + struct ub_packed_rrset_key* alias_rrset = NULL; + struct reply_info* partial_rep = NULL; + struct query_info* lookup_qinfo = &qinfo; + struct query_info qinfo_tmp; /* placeholdoer for lookup_qinfo */ + struct respip_client_info* cinfo = NULL, cinfo_tmp; + memset(&qinfo, 0, sizeof(qinfo)); if(error != NETEVENT_NOERROR) { /* some bad tcp query DNS formats give these error calls */ verbose(VERB_ALGO, "handle request called with err=%d", error); return 0; } +#ifdef USE_DNSCRYPT + repinfo->max_udp_size = worker->daemon->cfg->max_udp_size; + if(!dnsc_handle_curved_request(worker->daemon->dnscenv, repinfo)) { + worker->stats.num_query_dnscrypt_crypted_malformed++; + return 0; + } + if(c->dnscrypt && !repinfo->is_dnscrypted) { + char buf[LDNS_MAX_DOMAINLEN+1]; + /* Check if this is unencrypted and asking for certs */ + if(worker_check_request(c->buffer, worker) != 0) { + verbose(VERB_ALGO, + "dnscrypt: worker check request: bad query."); + log_addr(VERB_CLIENT,"from",&repinfo->addr, + repinfo->addrlen); + comm_point_drop_reply(repinfo); + return 0; + } + if(!query_info_parse(&qinfo, c->buffer)) { + verbose(VERB_ALGO, + "dnscrypt: worker parse request: formerror."); + log_addr(VERB_CLIENT, "from", &repinfo->addr, + repinfo->addrlen); + comm_point_drop_reply(repinfo); + return 0; + } + dname_str(qinfo.qname, buf); + if(!(qinfo.qtype == LDNS_RR_TYPE_TXT && + strcasecmp(buf, + worker->daemon->dnscenv->provider_name) == 0)) { + verbose(VERB_ALGO, + "dnscrypt: not TXT \"%s\". Received: %s \"%s\"", + worker->daemon->dnscenv->provider_name, + sldns_rr_descript(qinfo.qtype)->_name, + buf); + comm_point_drop_reply(repinfo); + worker->stats.num_query_dnscrypt_cleartext++; + return 0; + } + worker->stats.num_query_dnscrypt_cert++; + sldns_buffer_rewind(c->buffer); + } else if(c->dnscrypt && repinfo->is_dnscrypted) { + worker->stats.num_query_dnscrypt_crypted++; + } +#endif #ifdef USE_DNSTAP if(worker->dtenv.log_client_query_messages) dt_msg_send_client_query(&worker->dtenv, &repinfo->addr, c->type, c->buffer); #endif - acl = acl_list_lookup(worker->daemon->acl, &repinfo->addr, + acladdr = acl_addr_lookup(worker->daemon->acl, &repinfo->addr, repinfo->addrlen); + acl = acl_get_control(acladdr); if((ret=deny_refuse_all(c, acl, worker, repinfo)) != -1) { if(ret == 1) @@ -830,11 +1151,34 @@ worker_handle_request(struct comm_point* c, void* arg, int error, comm_point_drop_reply(repinfo); return 0; } + worker->stats.num_queries++; + + /* check if this query should be dropped based on source ip rate limiting */ + if(!infra_ip_ratelimit_inc(worker->env.infra_cache, repinfo, + *worker->env.now)) { + /* See if we are passed through with slip factor */ + if(worker->env.cfg->ip_ratelimit_factor != 0 && + ub_random_max(worker->env.rnd, + worker->env.cfg->ip_ratelimit_factor) == 1) { + + char addrbuf[128]; + addr_to_str(&repinfo->addr, repinfo->addrlen, + addrbuf, sizeof(addrbuf)); + verbose(VERB_OPS, "ip_ratelimit allowed through for ip address %s ", + addrbuf); + } else { + worker->stats.num_queries_ip_ratelimited++; + comm_point_drop_reply(repinfo); + return 0; + } + } + /* see if query is in the cache */ if(!query_info_parse(&qinfo, c->buffer)) { verbose(VERB_ALGO, "worker parse request: formerror."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); + memset(&qinfo, 0, sizeof(qinfo)); /* zero qinfo.qname */ if(worker_err_ratelimit(worker, LDNS_RCODE_FORMERR) == -1) { comm_point_drop_reply(repinfo); return 0; @@ -865,7 +1209,29 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } goto send_reply; } - if((ret=parse_edns_from_pkt(c->buffer, &edns)) != 0) { + if(qinfo.qtype == LDNS_RR_TYPE_OPT || + qinfo.qtype == LDNS_RR_TYPE_TSIG || + qinfo.qtype == LDNS_RR_TYPE_TKEY || + qinfo.qtype == LDNS_RR_TYPE_MAILA || + qinfo.qtype == LDNS_RR_TYPE_MAILB || + (qinfo.qtype >= 128 && qinfo.qtype <= 248)) { + verbose(VERB_ALGO, "worker request: formerror for meta-type."); + log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); + if(worker_err_ratelimit(worker, LDNS_RCODE_FORMERR) == -1) { + comm_point_drop_reply(repinfo); + return 0; + } + sldns_buffer_rewind(c->buffer); + LDNS_QR_SET(sldns_buffer_begin(c->buffer)); + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_FORMERR); + if(worker->stats.extended) { + worker->stats.qtype[qinfo.qtype]++; + server_stats_insrcode(&worker->stats, c->buffer); + } + goto send_reply; + } + if((ret=parse_edns_from_pkt(c->buffer, &edns, worker->scratchpad)) != 0) { struct edns_data reply_edns; verbose(VERB_ALGO, "worker parse edns: formerror."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); @@ -876,6 +1242,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, error_encode(c->buffer, ret, &qinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), &reply_edns); + regional_free_all(worker->scratchpad); server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } @@ -884,12 +1251,16 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits &= EDNS_DO; + edns.opt_list = NULL; verbose(VERB_ALGO, "query with bad edns version."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); error_encode(c->buffer, EDNS_RCODE_BADVERS&0xf, &qinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), NULL); - attach_edns_record(c->buffer, &edns); + if(sldns_buffer_capacity(c->buffer) >= + sldns_buffer_limit(c->buffer)+calc_edns_field_size(&edns)) + attach_edns_record(c->buffer, &edns); + regional_free_all(worker->scratchpad); goto send_reply; } if(edns.edns_present && edns.udp_size < NORMAL_UDP_SIZE && @@ -918,6 +1289,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, sldns_buffer_write_at(c->buffer, 4, (uint8_t*)"\0\0\0\0\0\0\0\0", 8); sldns_buffer_flip(c->buffer); + regional_free_all(worker->scratchpad); goto send_reply; } if(worker->stats.extended) @@ -928,15 +1300,42 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(qinfo.qclass == LDNS_RR_CLASS_CH && answer_chaos(worker, &qinfo, &edns, c->buffer)) { server_stats_insrcode(&worker->stats, c->buffer); + regional_free_all(worker->scratchpad); + goto send_reply; + } + if(LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) == + LDNS_PACKET_NOTIFY) { + answer_notify(worker, &qinfo, &edns, c->buffer, repinfo); + regional_free_all(worker->scratchpad); + goto send_reply; + } + if(local_zones_answer(worker->daemon->local_zones, &worker->env, &qinfo, + &edns, c->buffer, worker->scratchpad, repinfo, acladdr->taglist, + acladdr->taglen, acladdr->tag_actions, + acladdr->tag_actions_size, acladdr->tag_datas, + acladdr->tag_datas_size, worker->daemon->cfg->tagname, + worker->daemon->cfg->num_tags, acladdr->view)) { + regional_free_all(worker->scratchpad); + if(sldns_buffer_limit(c->buffer) == 0) { + comm_point_drop_reply(repinfo); + return 0; + } + server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } - if(local_zones_answer(worker->daemon->local_zones, &qinfo, &edns, - c->buffer, worker->scratchpad, repinfo)) { + if(worker->env.auth_zones && + auth_zones_answer(worker->env.auth_zones, &worker->env, + &qinfo, &edns, c->buffer, worker->scratchpad)) { regional_free_all(worker->scratchpad); if(sldns_buffer_limit(c->buffer) == 0) { comm_point_drop_reply(repinfo); return 0; } + /* set RA for everyone that can have recursion (based on + * access control list) */ + if(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer)) && + acl != acl_deny_non_local && acl != acl_refuse_non_local) + LDNS_RA_SET(sldns_buffer_begin(c->buffer)); server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } @@ -945,62 +1344,148 @@ worker_handle_request(struct comm_point* c, void* arg, int error, * might need to bail out based on ACLs now. */ if((ret=deny_refuse_non_local(c, acl, worker, repinfo)) != -1) { + regional_free_all(worker->scratchpad); if(ret == 1) goto send_reply; return ret; } + /* If this request does not have the recursion bit set, verify + * ACLs allow the recursion bit to be treated as set. */ + if(!(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) && + acl == acl_allow_setrd ) { + LDNS_RD_SET(sldns_buffer_begin(c->buffer)); + } + /* If this request does not have the recursion bit set, verify * ACLs allow the snooping. */ if(!(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) && acl != acl_allow_snoop ) { - sldns_buffer_set_limit(c->buffer, LDNS_HEADER_SIZE); - sldns_buffer_write_at(c->buffer, 4, - (uint8_t*)"\0\0\0\0\0\0\0\0", 8); - LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), - LDNS_RCODE_REFUSED); - sldns_buffer_flip(c->buffer); + error_encode(c->buffer, LDNS_RCODE_REFUSED, &qinfo, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), NULL); + regional_free_all(worker->scratchpad); server_stats_insrcode(&worker->stats, c->buffer); log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", &repinfo->addr, repinfo->addrlen); goto send_reply; } - h = query_info_hash(&qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); - if((e=slabhash_lookup(worker->env.msg_cache, h, &qinfo, 0))) { - /* answer from cache - we have acquired a readlock on it */ - if(answer_from_cache(worker, &qinfo, - (struct reply_info*)e->data, - *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), - sldns_buffer_read_u16_at(c->buffer, 2), repinfo, - &edns)) { - /* prefetch it if the prefetch TTL expired */ - if(worker->env.cfg->prefetch && *worker->env.now >= - ((struct reply_info*)e->data)->prefetch_ttl) { - time_t leeway = ((struct reply_info*)e-> - data)->ttl - *worker->env.now; - lock_rw_unlock(&e->lock); - reply_and_prefetch(worker, &qinfo, - sldns_buffer_read_u16_at(c->buffer, 2), - repinfo, leeway); - rc = 0; - goto send_reply_rc; + + /* If we've found a local alias, replace the qname with the alias + * target before resolving it. */ + if(qinfo.local_alias) { + struct ub_packed_rrset_key* rrset = qinfo.local_alias->rrset; + struct packed_rrset_data* d = rrset->entry.data; + + /* Sanity check: our current implementation only supports + * a single CNAME RRset as a local alias. */ + if(qinfo.local_alias->next || + rrset->rk.type != htons(LDNS_RR_TYPE_CNAME) || + d->count != 1) { + log_err("assumption failure: unexpected local alias"); + regional_free_all(worker->scratchpad); + return 0; /* drop it */ + } + qinfo.qname = d->rr_data[0] + 2; + qinfo.qname_len = d->rr_len[0] - 2; + } + + /* If we may apply IP-based actions to the answer, build the client + * information. As this can be expensive, skip it if there is + * absolutely no possibility of it. */ + if(worker->daemon->use_response_ip && + (qinfo.qtype == LDNS_RR_TYPE_A || + qinfo.qtype == LDNS_RR_TYPE_AAAA || + qinfo.qtype == LDNS_RR_TYPE_ANY)) { + cinfo_tmp.taglist = acladdr->taglist; + cinfo_tmp.taglen = acladdr->taglen; + cinfo_tmp.tag_actions = acladdr->tag_actions; + cinfo_tmp.tag_actions_size = acladdr->tag_actions_size; + cinfo_tmp.tag_datas = acladdr->tag_datas; + cinfo_tmp.tag_datas_size = acladdr->tag_datas_size; + cinfo_tmp.view = acladdr->view; + cinfo_tmp.respip_set = worker->daemon->respip_set; + cinfo = &cinfo_tmp; + } + +lookup_cache: + /* Lookup the cache. In case we chase an intermediate CNAME chain + * this is a two-pass operation, and lookup_qinfo is different for + * each pass. We should still pass the original qinfo to + * answer_from_cache(), however, since it's used to build the reply. */ + if(!edns_bypass_cache_stage(edns.opt_list, &worker->env)) { + h = query_info_hash(lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); + if((e=slabhash_lookup(worker->env.msg_cache, h, lookup_qinfo, 0))) { + /* answer from cache - we have acquired a readlock on it */ + if(answer_from_cache(worker, &qinfo, + cinfo, &need_drop, &alias_rrset, &partial_rep, + (struct reply_info*)e->data, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), repinfo, + &edns)) { + /* prefetch it if the prefetch TTL expired. + * Note that if there is more than one pass + * its qname must be that used for cache + * lookup. */ + if((worker->env.cfg->prefetch || worker->env.cfg->serve_expired) + && *worker->env.now >= + ((struct reply_info*)e->data)->prefetch_ttl) { + time_t leeway = ((struct reply_info*)e-> + data)->ttl - *worker->env.now; + if(((struct reply_info*)e->data)->ttl + < *worker->env.now) + leeway = 0; + lock_rw_unlock(&e->lock); + reply_and_prefetch(worker, lookup_qinfo, + sldns_buffer_read_u16_at(c->buffer, 2), + repinfo, leeway); + if(!partial_rep) { + rc = 0; + regional_free_all(worker->scratchpad); + goto send_reply_rc; + } + } else if(!partial_rep) { + lock_rw_unlock(&e->lock); + regional_free_all(worker->scratchpad); + goto send_reply; + } else { + /* Note that we've already released the + * lock if we're here after prefetch. */ + lock_rw_unlock(&e->lock); + } + /* We've found a partial reply ending with an + * alias. Replace the lookup qinfo for the + * alias target and lookup the cache again to + * (possibly) complete the reply. As we're + * passing the "base" reply, there will be no + * more alias chasing. */ + memset(&qinfo_tmp, 0, sizeof(qinfo_tmp)); + get_cname_target(alias_rrset, &qinfo_tmp.qname, + &qinfo_tmp.qname_len); + if(!qinfo_tmp.qname) { + log_err("unexpected: invalid answer alias"); + regional_free_all(worker->scratchpad); + return 0; /* drop query */ + } + qinfo_tmp.qtype = qinfo.qtype; + qinfo_tmp.qclass = qinfo.qclass; + lookup_qinfo = &qinfo_tmp; + goto lookup_cache; } + verbose(VERB_ALGO, "answer from the cache failed"); lock_rw_unlock(&e->lock); - goto send_reply; } - verbose(VERB_ALGO, "answer from the cache failed"); - lock_rw_unlock(&e->lock); - } - if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { - if(answer_norec_from_cache(worker, &qinfo, - *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), - sldns_buffer_read_u16_at(c->buffer, 2), repinfo, - &edns)) { - goto send_reply; + if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { + if(answer_norec_from_cache(worker, &qinfo, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), repinfo, + &edns)) { + regional_free_all(worker->scratchpad); + goto send_reply; + } + verbose(VERB_ALGO, "answer norec from cache -- " + "need to validate or not primed"); } - verbose(VERB_ALGO, "answer norec from cache -- " - "need to validate or not primed"); } sldns_buffer_rewind(c->buffer); server_stats_querymiss(&worker->stats, worker); @@ -1014,19 +1499,35 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } /* grab a work request structure for this new request */ - mesh_new_client(worker->env.mesh, &qinfo, + mesh_new_client(worker->env.mesh, &qinfo, cinfo, sldns_buffer_read_u16_at(c->buffer, 2), &edns, repinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer)); + regional_free_all(worker->scratchpad); worker_mem_report(worker, NULL); return 0; send_reply: rc = 1; send_reply_rc: + if(need_drop) { + comm_point_drop_reply(repinfo); + return 0; + } #ifdef USE_DNSTAP if(worker->dtenv.log_client_response_messages) dt_msg_send_client_response(&worker->dtenv, &repinfo->addr, c->type, c->buffer); +#endif + if(worker->env.cfg->log_replies) + { + struct timeval tv = {0, 0}; + log_reply_info(0, &qinfo, &repinfo->addr, repinfo->addrlen, + tv, 1, c->buffer); + } +#ifdef USE_DNSCRYPT + if(!dnsc_handle_uncurved_request(repinfo)) { + return 0; + } #endif return rc; } @@ -1083,6 +1584,10 @@ void worker_stat_timer_cb(void* arg) server_stats_log(&worker->stats, worker, worker->thread_num); mesh_stats(worker->env.mesh, "mesh has"); worker_mem_report(worker, NULL); + /* SHM is enabled, process data to SHM */ + if (worker->daemon->cfg->shm_enable) { + shm_main_run(worker); + } if(!worker->daemon->cfg->stat_cumulative) { worker_stats_clear(worker); } @@ -1217,8 +1722,10 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->do_tcp?cfg->outgoing_num_tcp:0, worker->daemon->env->infra_cache, worker->rndstate, cfg->use_caps_bits_for_id, worker->ports, worker->numports, - cfg->unwanted_threshold, &worker_alloc_cleanup, worker, - cfg->do_udp, worker->daemon->connect_sslctx, cfg->delay_close, + cfg->unwanted_threshold, cfg->outgoing_tcp_mss, + &worker_alloc_cleanup, worker, + cfg->do_udp || cfg->udp_upstream_without_downstream, + worker->daemon->connect_sslctx, cfg->delay_close, dtenv); if(!worker->back) { log_err("could not create outgoing sockets"); @@ -1256,13 +1763,26 @@ worker_init(struct worker* worker, struct config_file *cfg, if(worker->thread_num == 0) log_set_time(worker->env.now); worker->env.worker = worker; + worker->env.worker_base = worker->base; worker->env.send_query = &worker_send_query; worker->env.alloc = &worker->alloc; + worker->env.outnet = worker->back; worker->env.rnd = worker->rndstate; - worker->env.scratch = worker->scratchpad; + /* If case prefetch is triggered, the corresponding mesh will clear + * the scratchpad for the module env in the middle of request handling. + * It would be prone to a use-after-free kind of bug, so we avoid + * sharing it with worker's own scratchpad at the cost of having + * one more pad per worker. */ + worker->env.scratch = regional_create_custom(cfg->msg_buffer_size); + if(!worker->env.scratch) { + log_err("malloc failure"); + worker_delete(worker); + return 0; + } worker->env.mesh = mesh_create(&worker->daemon->mods, &worker->env); worker->env.detach_subs = &mesh_detach_subs; worker->env.attach_sub = &mesh_attach_sub; + worker->env.add_sub = &mesh_add_sub; worker->env.kill_sub = &mesh_state_delete; worker->env.detect_cycle = &mesh_detect_cycle; worker->env.scratch_buffer = sldns_buffer_new(cfg->msg_buffer_size); @@ -1296,6 +1816,14 @@ worker_init(struct worker* worker, struct config_file *cfg, comm_timer_set(worker->env.probe_timer, &tv); } } + /* zone transfer tasks, setup once per process, if any */ + if(worker->env.auth_zones +#ifndef THREADS_DISABLED + && worker->thread_num == 0 +#endif + ) { + auth_xfer_pickup_initial(worker->env.auth_zones, &worker->env); + } if(!worker->env.mesh || !worker->env.scratch_buffer) { worker_delete(worker); return 0; @@ -1347,15 +1875,16 @@ worker_delete(struct worker* worker) comm_base_delete(worker->base); ub_randfree(worker->rndstate); alloc_clear(&worker->alloc); + regional_destroy(worker->env.scratch); regional_destroy(worker->scratchpad); free(worker); } struct outbound_entry* -worker_send_query(uint8_t* qname, size_t qnamelen, uint16_t qtype, - uint16_t qclass, uint16_t flags, int dnssec, int want_dnssec, - int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, struct module_qstate* q) +worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, + int want_dnssec, int nocaps, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, int ssl_upstream, + char* tls_auth_name, struct module_qstate* q) { struct worker* worker = q->env->worker; struct outbound_entry* e = (struct outbound_entry*)regional_alloc( @@ -1363,11 +1892,10 @@ worker_send_query(uint8_t* qname, size_t qnamelen, uint16_t qtype, if(!e) return NULL; e->qstate = q; - e->qsent = outnet_serviced_query(worker->back, qname, - qnamelen, qtype, qclass, flags, dnssec, want_dnssec, nocaps, - q->env->cfg->tcp_upstream, q->env->cfg->ssl_upstream, addr, - addrlen, zone, zonelen, worker_handle_service_reply, e, - worker->back->udp_buff); + e->qsent = outnet_serviced_query(worker->back, qinfo, flags, dnssec, + want_dnssec, nocaps, q->env->cfg->tcp_upstream, + ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, q, + worker_handle_service_reply, e, worker->back->udp_buff, q->env); if(!e->qsent) { return NULL; } @@ -1407,13 +1935,14 @@ void worker_stop_accept(void* arg) } /* --- fake callbacks for fptr_wlist to work --- */ -struct outbound_entry* libworker_send_query(uint8_t* ATTR_UNUSED(qname), - size_t ATTR_UNUSED(qnamelen), uint16_t ATTR_UNUSED(qtype), - uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags), - int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), - socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q)) +struct outbound_entry* libworker_send_query( + struct query_info* ATTR_UNUSED(qinfo), + uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), + int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), + uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), + int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), + struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; diff --git a/external/unbound/daemon/worker.h b/external/unbound/daemon/worker.h index 6361343..3887d04 100644 --- a/external/unbound/daemon/worker.h +++ b/external/unbound/daemon/worker.h @@ -61,6 +61,7 @@ struct ub_randstate; struct regional; struct tube; struct daemon_remote; +struct query_info; /** worker commands */ enum worker_commands { @@ -84,7 +85,7 @@ struct worker { /** global shared daemon structure */ struct daemon* daemon; /** thread id */ - ub_thread_t thr_id; + ub_thread_type thr_id; /** pipe, for commands for this worker */ struct tube* cmd; /** the event base this worker works with */ @@ -115,7 +116,7 @@ struct worker { /** allocation cache for this thread */ struct alloc_cache alloc; /** per thread statistics */ - struct server_stats stats; + struct ub_server_stats stats; /** thread scratch regional */ struct regional* scratchpad; diff --git a/external/unbound/dns64/dns64.c b/external/unbound/dns64/dns64.c index 0de3f66..7889d72 100644 --- a/external/unbound/dns64/dns64.c +++ b/external/unbound/dns64/dns64.c @@ -411,31 +411,6 @@ handle_ipv6_ptr(struct module_qstate* qstate, int id) return module_wait_subquery; } -/** allocate (special) rrset keys, return 0 on error */ -static int -repinfo_alloc_rrset_keys(struct reply_info* rep, - struct regional* region) -{ - size_t i; - for(i=0; irrset_count; i++) { - if(region) { - rep->rrsets[i] = (struct ub_packed_rrset_key*) - regional_alloc(region, - sizeof(struct ub_packed_rrset_key)); - if(rep->rrsets[i]) { - memset(rep->rrsets[i], 0, - sizeof(struct ub_packed_rrset_key)); - rep->rrsets[i]->entry.key = rep->rrsets[i]; - } - } - else return 0;/* rep->rrsets[i] = alloc_special_obtain(alloc);*/ - if(!rep->rrsets[i]) - return 0; - rep->rrsets[i]->entry.data = NULL; - } - return 1; -} - static enum module_ext_state generate_type_A_query(struct module_qstate* qstate, int id) { @@ -521,13 +496,14 @@ handle_event_moddone(struct module_qstate* qstate, int id) * - An internal query. * - A query for a record type other than AAAA. * - CD FLAG was set on querier - * - An AAAA query for which an error was returned. + * - An AAAA query for which an error was returned.(qstate.return_rcode) + * -> treated as servfail thus synthesize (sec 5.1.3 6147), thus + * synthesize in (sec 5.1.2 of RFC6147). * - A successful AAAA query with an answer. */ if ( (enum dns64_qstate)qstate->minfo[id] == DNS64_INTERNAL_QUERY || qstate->qinfo.qtype != LDNS_RR_TYPE_AAAA || (qstate->query_flags & BIT_CD) - || qstate->return_rcode != LDNS_RCODE_NOERROR || (qstate->return_msg && qstate->return_msg->rep && reply_find_answer_rrset(&qstate->qinfo, @@ -564,6 +540,7 @@ dns64_operate(struct module_qstate* qstate, enum module_ev event, int id, case module_event_new: /* Tag this query as being new and fall through. */ qstate->minfo[id] = (void*)DNS64_NEW_QUERY; + /* fallthrough */ case module_event_pass: qstate->ext_state[id] = handle_event_pass(qstate, id); break; @@ -706,7 +683,7 @@ dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate* qstate return; /* allocate ub_key structures special or not */ - if(!repinfo_alloc_rrset_keys(cp, super->region)) { + if(!reply_info_alloc_rrset_keys(cp, NULL, super->region)) { return; } @@ -815,6 +792,10 @@ dns64_inform_super(struct module_qstate* qstate, int id, qstate->return_msg->rep)) return; + /* Use return code from A query in response to client. */ + if (super->return_rcode != LDNS_RCODE_NOERROR) + super->return_rcode = qstate->return_rcode; + /* Generate a response suitable for the original query. */ if (qstate->qinfo.qtype == LDNS_RR_TYPE_A) { dns64_adjust_a(id, super, qstate); @@ -824,8 +805,9 @@ dns64_inform_super(struct module_qstate* qstate, int id, } /* Store the generated response in cache. */ - if (!dns_cache_store(super->env, &super->qinfo, super->return_msg->rep, - 0, 0, 0, NULL, super->query_flags)) + if (!super->no_cache_store && + !dns_cache_store(super->env, &super->qinfo, super->return_msg->rep, + 0, 0, 0, NULL, super->query_flags)) log_err("out of memory"); } @@ -871,7 +853,7 @@ static struct module_func_block dns64_block = { * Function for returning the above function block. */ struct module_func_block * -dns64_get_funcblock() +dns64_get_funcblock(void) { return &dns64_block; } diff --git a/external/unbound/dnscrypt/cert.h b/external/unbound/dnscrypt/cert.h new file mode 100644 index 0000000..7cad146 --- /dev/null +++ b/external/unbound/dnscrypt/cert.h @@ -0,0 +1,32 @@ +#ifndef UNBOUND_DNSCRYPT_CERT_H +#define UNBOUND_DNSCRYPT_CERT_H + +/** + * \file + * certificate type for dnscrypt for use in other header files + */ + +#include +#define CERT_MAGIC_CERT "DNSC" +#define CERT_MAJOR_VERSION 1 +#define CERT_MINOR_VERSION 0 +#define CERT_OLD_MAGIC_HEADER "7PYqwfzt" + +#define CERT_FILE_EXPIRE_DAYS 365 + +struct SignedCert { + uint8_t magic_cert[4]; + uint8_t version_major[2]; + uint8_t version_minor[2]; + + // Signed Content + uint8_t signed_content[64]; + uint8_t server_publickey[crypto_box_PUBLICKEYBYTES]; + uint8_t magic_query[8]; + uint8_t serial[4]; + uint8_t ts_begin[4]; + uint8_t ts_end[4]; +}; + + +#endif diff --git a/external/unbound/dnscrypt/dnscrypt.c b/external/unbound/dnscrypt/dnscrypt.c new file mode 100644 index 0000000..3545d3d --- /dev/null +++ b/external/unbound/dnscrypt/dnscrypt.c @@ -0,0 +1,1115 @@ + +#include "config.h" +#include +#include +#ifdef HAVE_TIME_H +#include +#endif +#include +#include +#include +#include "sldns/sbuffer.h" +#include "util/config_file.h" +#include "util/net_help.h" +#include "util/netevent.h" +#include "util/log.h" +#include "util/storage/slabhash.h" +#include "util/storage/lookup3.h" + +#include "dnscrypt/cert.h" +#include "dnscrypt/dnscrypt.h" +#include "dnscrypt/dnscrypt_config.h" + +#include + + +/** + * \file + * dnscrypt functions for encrypting DNS packets. + */ + +#define DNSCRYPT_QUERY_BOX_OFFSET \ + (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_PUBLICKEYBYTES + \ + crypto_box_HALF_NONCEBYTES) + +// 8 bytes: magic header (CERT_MAGIC_HEADER) +// 12 bytes: the client's nonce +// 12 bytes: server nonce extension +// 16 bytes: Poly1305 MAC (crypto_box_ZEROBYTES - crypto_box_BOXZEROBYTES) + +#define DNSCRYPT_REPLY_BOX_OFFSET \ + (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_HALF_NONCEBYTES + \ + crypto_box_HALF_NONCEBYTES) + + +/** + * Shared secret cache key length. + * secret key. + * 1 byte: ES_VERSION[1] + * 32 bytes: client crypto_box_PUBLICKEYBYTES + * 32 bytes: server crypto_box_SECRETKEYBYTES + */ +#define DNSCRYPT_SHARED_SECRET_KEY_LENGTH \ + (1 + crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES) + + +struct shared_secret_cache_key { + /** the hash table key */ + uint8_t key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH]; + /** the hash table entry, data is uint8_t pointer of size crypto_box_BEFORENMBYTES which contains the shared secret. */ + struct lruhash_entry entry; +}; + + +struct nonce_cache_key { + /** the nonce used by the client */ + uint8_t nonce[crypto_box_HALF_NONCEBYTES]; + /** the client_magic used by the client, this is associated to 1 cert only */ + uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN]; + /** the client public key */ + uint8_t client_publickey[crypto_box_PUBLICKEYBYTES]; + /** the hash table entry, data is uint8_t */ + struct lruhash_entry entry; +}; + +/** + * Generate a key suitable to find shared secret in slabhash. + * \param[in] key: a uint8_t pointer of size DNSCRYPT_SHARED_SECRET_KEY_LENGTH + * \param[in] esversion: The es version least significant byte. + * \param[in] pk: The public key of the client. uint8_t pointer of size + * crypto_box_PUBLICKEYBYTES. + * \param[in] sk: The secret key of the server matching the magic query number. + * uint8_t pointer of size crypto_box_SECRETKEYBYTES. + * \return the hash of the key. + */ +static uint32_t +dnsc_shared_secrets_cache_key(uint8_t* key, + uint8_t esversion, + uint8_t* pk, + uint8_t* sk) +{ + key[0] = esversion; + memcpy(key + 1, pk, crypto_box_PUBLICKEYBYTES); + memcpy(key + 1 + crypto_box_PUBLICKEYBYTES, sk, crypto_box_SECRETKEYBYTES); + return hashlittle(key, DNSCRYPT_SHARED_SECRET_KEY_LENGTH, 0); +} + +/** + * Inserts a shared secret into the shared_secrets_cache slabhash. + * The shared secret is copied so the caller can use it freely without caring + * about the cache entry being evicted or not. + * \param[in] cache: the slabhash in which to look for the key. + * \param[in] key: a uint8_t pointer of size DNSCRYPT_SHARED_SECRET_KEY_LENGTH + * which contains the key of the shared secret. + * \param[in] hash: the hash of the key. + * \param[in] nmkey: a uint8_t pointer of size crypto_box_BEFORENMBYTES which + * contains the shared secret. + */ +static void +dnsc_shared_secret_cache_insert(struct slabhash *cache, + uint8_t key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH], + uint32_t hash, + uint8_t nmkey[crypto_box_BEFORENMBYTES]) +{ + struct shared_secret_cache_key* k = + (struct shared_secret_cache_key*)calloc(1, sizeof(*k)); + uint8_t* d = malloc(crypto_box_BEFORENMBYTES); + if(!k || !d) { + free(k); + free(d); + return; + } + memcpy(d, nmkey, crypto_box_BEFORENMBYTES); + lock_rw_init(&k->entry.lock); + memcpy(k->key, key, DNSCRYPT_SHARED_SECRET_KEY_LENGTH); + k->entry.hash = hash; + k->entry.key = k; + k->entry.data = d; + slabhash_insert(cache, + hash, &k->entry, + d, + NULL); +} + +/** + * Lookup a record in shared_secrets_cache. + * \param[in] cache: a pointer to shared_secrets_cache slabhash. + * \param[in] key: a uint8_t pointer of size DNSCRYPT_SHARED_SECRET_KEY_LENGTH + * containing the key to look for. + * \param[in] hash: a hash of the key. + * \return a pointer to the locked cache entry or NULL on failure. + */ +static struct lruhash_entry* +dnsc_shared_secrets_lookup(struct slabhash* cache, + uint8_t key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH], + uint32_t hash) +{ + return slabhash_lookup(cache, hash, key, 0); +} + +/** + * Generate a key hash suitable to find a nonce in slabhash. + * \param[in] nonce: a uint8_t pointer of size crypto_box_HALF_NONCEBYTES + * \param[in] magic_query: a uint8_t pointer of size DNSCRYPT_MAGIC_HEADER_LEN + * \param[in] pk: The public key of the client. uint8_t pointer of size + * crypto_box_PUBLICKEYBYTES. + * \return the hash of the key. + */ +static uint32_t +dnsc_nonce_cache_key_hash(const uint8_t nonce[crypto_box_HALF_NONCEBYTES], + const uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN], + const uint8_t pk[crypto_box_PUBLICKEYBYTES]) +{ + uint32_t h = 0; + h = hashlittle(nonce, crypto_box_HALF_NONCEBYTES, h); + h = hashlittle(magic_query, DNSCRYPT_MAGIC_HEADER_LEN, h); + return hashlittle(pk, crypto_box_PUBLICKEYBYTES, h); +} + +/** + * Inserts a nonce, magic_query, pk tuple into the nonces_cache slabhash. + * \param[in] cache: the slabhash in which to look for the key. + * \param[in] nonce: a uint8_t pointer of size crypto_box_HALF_NONCEBYTES + * \param[in] magic_query: a uint8_t pointer of size DNSCRYPT_MAGIC_HEADER_LEN + * \param[in] pk: The public key of the client. uint8_t pointer of size + * crypto_box_PUBLICKEYBYTES. + * \param[in] hash: the hash of the key. + */ +static void +dnsc_nonce_cache_insert(struct slabhash *cache, + const uint8_t nonce[crypto_box_HALF_NONCEBYTES], + const uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN], + const uint8_t pk[crypto_box_PUBLICKEYBYTES], + uint32_t hash) +{ + struct nonce_cache_key* k = + (struct nonce_cache_key*)calloc(1, sizeof(*k)); + if(!k) { + free(k); + return; + } + lock_rw_init(&k->entry.lock); + memcpy(k->nonce, nonce, crypto_box_HALF_NONCEBYTES); + memcpy(k->magic_query, magic_query, DNSCRYPT_MAGIC_HEADER_LEN); + memcpy(k->client_publickey, pk, crypto_box_PUBLICKEYBYTES); + k->entry.hash = hash; + k->entry.key = k; + k->entry.data = NULL; + slabhash_insert(cache, + hash, &k->entry, + NULL, + NULL); +} + +/** + * Lookup a record in nonces_cache. + * \param[in] cache: the slabhash in which to look for the key. + * \param[in] nonce: a uint8_t pointer of size crypto_box_HALF_NONCEBYTES + * \param[in] magic_query: a uint8_t pointer of size DNSCRYPT_MAGIC_HEADER_LEN + * \param[in] pk: The public key of the client. uint8_t pointer of size + * crypto_box_PUBLICKEYBYTES. + * \param[in] hash: the hash of the key. + * \return a pointer to the locked cache entry or NULL on failure. + */ +static struct lruhash_entry* +dnsc_nonces_lookup(struct slabhash* cache, + const uint8_t nonce[crypto_box_HALF_NONCEBYTES], + const uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN], + const uint8_t pk[crypto_box_PUBLICKEYBYTES], + uint32_t hash) +{ + struct nonce_cache_key k; + memset(&k, 0, sizeof(k)); + k.entry.hash = hash; + memcpy(k.nonce, nonce, crypto_box_HALF_NONCEBYTES); + memcpy(k.magic_query, magic_query, DNSCRYPT_MAGIC_HEADER_LEN); + memcpy(k.client_publickey, pk, crypto_box_PUBLICKEYBYTES); + + return slabhash_lookup(cache, hash, &k, 0); +} + +/** + * Decrypt a query using the dnsccert that was found using dnsc_find_cert. + * The client nonce will be extracted from the encrypted query and stored in + * client_nonce, a shared secret will be computed and stored in nmkey and the + * buffer will be decrypted inplace. + * \param[in] env the dnscrypt environment. + * \param[in] cert the cert that matches this encrypted query. + * \param[in] client_nonce where the client nonce will be stored. + * \param[in] nmkey where the shared secret key will be written. + * \param[in] buffer the encrypted buffer. + * \return 0 on success. + */ +static int +dnscrypt_server_uncurve(struct dnsc_env* env, + const dnsccert *cert, + uint8_t client_nonce[crypto_box_HALF_NONCEBYTES], + uint8_t nmkey[crypto_box_BEFORENMBYTES], + struct sldns_buffer* buffer) +{ + size_t len = sldns_buffer_limit(buffer); + uint8_t *const buf = sldns_buffer_begin(buffer); + uint8_t nonce[crypto_box_NONCEBYTES]; + struct dnscrypt_query_header *query_header; + // shared secret cache + uint8_t key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH]; + struct lruhash_entry* entry; + uint32_t hash; + + uint32_t nonce_hash; + + if (len <= DNSCRYPT_QUERY_HEADER_SIZE) { + return -1; + } + + query_header = (struct dnscrypt_query_header *)buf; + + /* Detect replay attacks */ + nonce_hash = dnsc_nonce_cache_key_hash( + query_header->nonce, + cert->magic_query, + query_header->publickey); + + lock_basic_lock(&env->nonces_cache_lock); + entry = dnsc_nonces_lookup( + env->nonces_cache, + query_header->nonce, + cert->magic_query, + query_header->publickey, + nonce_hash); + + if(entry) { + lock_rw_unlock(&entry->lock); + env->num_query_dnscrypt_replay++; + lock_basic_unlock(&env->nonces_cache_lock); + return -1; + } + + dnsc_nonce_cache_insert( + env->nonces_cache, + query_header->nonce, + cert->magic_query, + query_header->publickey, + nonce_hash); + lock_basic_unlock(&env->nonces_cache_lock); + + /* Find existing shared secret */ + hash = dnsc_shared_secrets_cache_key(key, + cert->es_version[1], + query_header->publickey, + cert->keypair->crypt_secretkey); + entry = dnsc_shared_secrets_lookup(env->shared_secrets_cache, + key, + hash); + + if(!entry) { + lock_basic_lock(&env->shared_secrets_cache_lock); + env->num_query_dnscrypt_secret_missed_cache++; + lock_basic_unlock(&env->shared_secrets_cache_lock); + if(cert->es_version[1] == 2) { +#ifdef USE_DNSCRYPT_XCHACHA20 + if (crypto_box_curve25519xchacha20poly1305_beforenm( + nmkey, query_header->publickey, + cert->keypair->crypt_secretkey) != 0) { + return -1; + } +#else + return -1; +#endif + } else { + if (crypto_box_beforenm(nmkey, + query_header->publickey, + cert->keypair->crypt_secretkey) != 0) { + return -1; + } + } + // Cache the shared secret we just computed. + dnsc_shared_secret_cache_insert(env->shared_secrets_cache, + key, + hash, + nmkey); + } else { + /* copy shared secret and unlock entry */ + memcpy(nmkey, entry->data, crypto_box_BEFORENMBYTES); + lock_rw_unlock(&entry->lock); + } + + memcpy(nonce, query_header->nonce, crypto_box_HALF_NONCEBYTES); + memset(nonce + crypto_box_HALF_NONCEBYTES, 0, crypto_box_HALF_NONCEBYTES); + + if(cert->es_version[1] == 2) { +#ifdef USE_DNSCRYPT_XCHACHA20 + if (crypto_box_curve25519xchacha20poly1305_open_easy_afternm + (buf, + buf + DNSCRYPT_QUERY_BOX_OFFSET, + len - DNSCRYPT_QUERY_BOX_OFFSET, nonce, + nmkey) != 0) { + return -1; + } +#else + return -1; +#endif + } else { + if (crypto_box_open_easy_afternm + (buf, + buf + DNSCRYPT_QUERY_BOX_OFFSET, + len - DNSCRYPT_QUERY_BOX_OFFSET, nonce, + nmkey) != 0) { + return -1; + } + } + + len -= DNSCRYPT_QUERY_HEADER_SIZE; + + while (*sldns_buffer_at(buffer, --len) == 0) + ; + + if (*sldns_buffer_at(buffer, len) != 0x80) { + return -1; + } + + memcpy(client_nonce, nonce, crypto_box_HALF_NONCEBYTES); + + sldns_buffer_set_position(buffer, 0); + sldns_buffer_set_limit(buffer, len); + + return 0; +} + + +/** + * Add random padding to a buffer, according to a client nonce. + * The length has to depend on the query in order to avoid reply attacks. + * + * @param buf a buffer + * @param len the initial size of the buffer + * @param max_len the maximum size + * @param nonce a nonce, made of the client nonce repeated twice + * @param secretkey + * @return the new size, after padding + */ +size_t +dnscrypt_pad(uint8_t *buf, const size_t len, const size_t max_len, + const uint8_t *nonce, const uint8_t *secretkey) +{ + uint8_t *buf_padding_area = buf + len; + size_t padded_len; + uint32_t rnd; + + // no padding + if (max_len < len + DNSCRYPT_MIN_PAD_LEN) + return len; + + assert(nonce[crypto_box_HALF_NONCEBYTES] == nonce[0]); + + crypto_stream((unsigned char *)&rnd, (unsigned long long)sizeof(rnd), nonce, + secretkey); + padded_len = + len + DNSCRYPT_MIN_PAD_LEN + rnd % (max_len - len - + DNSCRYPT_MIN_PAD_LEN + 1); + padded_len += DNSCRYPT_BLOCK_SIZE - padded_len % DNSCRYPT_BLOCK_SIZE; + if (padded_len > max_len) + padded_len = max_len; + + memset(buf_padding_area, 0, padded_len - len); + *buf_padding_area = 0x80; + + return padded_len; +} + +uint64_t +dnscrypt_hrtime(void) +{ + struct timeval tv; + uint64_t ts = (uint64_t)0U; + int ret; + + ret = gettimeofday(&tv, NULL); + if (ret == 0) { + ts = (uint64_t)tv.tv_sec * 1000000U + (uint64_t)tv.tv_usec; + } else { + log_err("gettimeofday: %s", strerror(errno)); + } + return ts; +} + +/** + * Add the server nonce part to once. + * The nonce is made half of client nonce and the seconf half of the server + * nonce, both of them of size crypto_box_HALF_NONCEBYTES. + * \param[in] nonce: a uint8_t* of size crypto_box_NONCEBYTES + */ +static void +add_server_nonce(uint8_t *nonce) +{ + uint64_t ts; + uint64_t tsn; + uint32_t suffix; + ts = dnscrypt_hrtime(); + // TODO? dnscrypt-wrapper does some logic with context->nonce_ts_last + // unclear if we really need it, so skipping it for now. + tsn = (ts << 10) | (randombytes_random() & 0x3ff); +#if (BYTE_ORDER == LITTLE_ENDIAN) + tsn = + (((uint64_t)htonl((uint32_t)tsn)) << 32) | htonl((uint32_t)(tsn >> 32)); +#endif + memcpy(nonce + crypto_box_HALF_NONCEBYTES, &tsn, 8); + suffix = randombytes_random(); + memcpy(nonce + crypto_box_HALF_NONCEBYTES + 8, &suffix, 4); +} + +/** + * Encrypt a reply using the dnsccert that was used with the query. + * The client nonce will be extracted from the encrypted query and stored in + * The buffer will be encrypted inplace. + * \param[in] cert the dnsccert that matches this encrypted query. + * \param[in] client_nonce client nonce used during the query + * \param[in] nmkey shared secret key used during the query. + * \param[in] buffer the buffer where to encrypt the reply. + * \param[in] udp if whether or not it is a UDP query. + * \param[in] max_udp_size configured max udp size. + * \return 0 on success. + */ +static int +dnscrypt_server_curve(const dnsccert *cert, + uint8_t client_nonce[crypto_box_HALF_NONCEBYTES], + uint8_t nmkey[crypto_box_BEFORENMBYTES], + struct sldns_buffer* buffer, + uint8_t udp, + size_t max_udp_size) +{ + size_t dns_reply_len = sldns_buffer_limit(buffer); + size_t max_len = dns_reply_len + DNSCRYPT_MAX_PADDING \ + + DNSCRYPT_REPLY_HEADER_SIZE; + size_t max_reply_size = max_udp_size - 20U - 8U; + uint8_t nonce[crypto_box_NONCEBYTES]; + uint8_t *boxed; + uint8_t *const buf = sldns_buffer_begin(buffer); + size_t len = sldns_buffer_limit(buffer); + + if(udp){ + if (max_len > max_reply_size) + max_len = max_reply_size; + } + + + memcpy(nonce, client_nonce, crypto_box_HALF_NONCEBYTES); + memcpy(nonce + crypto_box_HALF_NONCEBYTES, client_nonce, + crypto_box_HALF_NONCEBYTES); + + boxed = buf + DNSCRYPT_REPLY_BOX_OFFSET; + memmove(boxed + crypto_box_MACBYTES, buf, len); + len = dnscrypt_pad(boxed + crypto_box_MACBYTES, len, + max_len - DNSCRYPT_REPLY_HEADER_SIZE, nonce, + cert->keypair->crypt_secretkey); + sldns_buffer_set_at(buffer, + DNSCRYPT_REPLY_BOX_OFFSET - crypto_box_BOXZEROBYTES, + 0, crypto_box_ZEROBYTES); + + // add server nonce extension + add_server_nonce(nonce); + + if(cert->es_version[1] == 2) { +#ifdef USE_DNSCRYPT_XCHACHA20 + if (crypto_box_curve25519xchacha20poly1305_easy_afternm + (boxed, boxed + crypto_box_MACBYTES, len, nonce, nmkey) != 0) { + return -1; + } +#else + return -1; +#endif + } else { + if (crypto_box_easy_afternm + (boxed, boxed + crypto_box_MACBYTES, len, nonce, nmkey) != 0) { + return -1; + } + } + + sldns_buffer_write_at(buffer, + 0, + DNSCRYPT_MAGIC_RESPONSE, + DNSCRYPT_MAGIC_HEADER_LEN); + sldns_buffer_write_at(buffer, + DNSCRYPT_MAGIC_HEADER_LEN, + nonce, + crypto_box_NONCEBYTES); + sldns_buffer_set_limit(buffer, len + DNSCRYPT_REPLY_HEADER_SIZE); + return 0; +} + +/** + * Read the content of fname into buf. + * \param[in] fname name of the file to read. + * \param[in] buf the buffer in which to read the content of the file. + * \param[in] count number of bytes to read. + * \return 0 on success. + */ +static int +dnsc_read_from_file(char *fname, char *buf, size_t count) +{ + int fd; + fd = open(fname, O_RDONLY); + if (fd == -1) { + return -1; + } + if (read(fd, buf, count) != (ssize_t)count) { + close(fd); + return -2; + } + close(fd); + return 0; +} + +/** + * Given an absolute path on the original root, returns the absolute path + * within the chroot. If chroot is disabled, the path is not modified. + * No char * is malloced so there is no need to free this. + * \param[in] cfg the configuration. + * \param[in] path the path from the original root. + * \return the path from inside the chroot. + */ +static char * +dnsc_chroot_path(struct config_file *cfg, char *path) +{ + char *nm; + nm = path; + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, + cfg->chrootdir, strlen(cfg->chrootdir)) == 0) + nm += strlen(cfg->chrootdir); + return nm; +} + +/** + * Parse certificates files provided by the configuration and load them into + * dnsc_env. + * \param[in] env the dnsc_env structure to load the certs into. + * \param[in] cfg the configuration. + * \return the number of certificates loaded. + */ +static int +dnsc_parse_certs(struct dnsc_env *env, struct config_file *cfg) +{ + struct config_strlist *head, *head2; + size_t signed_cert_id; + size_t rotated_cert_id; + char *nm; + + env->signed_certs_count = 0U; + env->rotated_certs_count = 0U; + for (head = cfg->dnscrypt_provider_cert; head; head = head->next) { + env->signed_certs_count++; + } + for (head = cfg->dnscrypt_provider_cert_rotated; head; head = head->next) { + env->rotated_certs_count++; + } + env->signed_certs = sodium_allocarray(env->signed_certs_count, + sizeof *env->signed_certs); + + env->rotated_certs = sodium_allocarray(env->rotated_certs_count, + sizeof env->signed_certs); + signed_cert_id = 0U; + rotated_cert_id = 0U; + for(head = cfg->dnscrypt_provider_cert; head; head = head->next, signed_cert_id++) { + nm = dnsc_chroot_path(cfg, head->str); + if(dnsc_read_from_file( + nm, + (char *)(env->signed_certs + signed_cert_id), + sizeof(struct SignedCert)) != 0) { + fatal_exit("dnsc_parse_certs: failed to load %s: %s", head->str, strerror(errno)); + } + for(head2 = cfg->dnscrypt_provider_cert_rotated; head2; head2 = head2->next) { + if(strcmp(head->str, head2->str) == 0) { + *(env->rotated_certs + rotated_cert_id) = env->signed_certs + signed_cert_id; + rotated_cert_id++; + verbose(VERB_OPS, "Cert %s is rotated and will not be distributed via DNS", head->str); + break; + } + } + verbose(VERB_OPS, "Loaded cert %s", head->str); + } + return signed_cert_id; +} + +/** + * Helper function to convert a binary key into a printable fingerprint. + * \param[in] fingerprint the buffer in which to write the printable key. + * \param[in] key the key to convert. + */ +void +dnsc_key_to_fingerprint(char fingerprint[80U], const uint8_t * const key) +{ + const size_t fingerprint_size = 80U; + size_t fingerprint_pos = (size_t) 0U; + size_t key_pos = (size_t) 0U; + + for (;;) { + assert(fingerprint_size > fingerprint_pos); + snprintf(&fingerprint[fingerprint_pos], + fingerprint_size - fingerprint_pos, "%02X%02X", + key[key_pos], key[key_pos + 1U]); + key_pos += 2U; + if (key_pos >= crypto_box_PUBLICKEYBYTES) { + break; + } + fingerprint[fingerprint_pos + 4U] = ':'; + fingerprint_pos += 5U; + } +} + +/** + * Find the cert matching a DNSCrypt query. + * \param[in] dnscenv The DNSCrypt environment, which contains the list of certs + * supported by the server. + * \param[in] buffer The encrypted DNS query. + * \return a dnsccert * if we found a cert matching the magic_number of the + * query, NULL otherwise. + */ +static const dnsccert * +dnsc_find_cert(struct dnsc_env* dnscenv, struct sldns_buffer* buffer) +{ + const dnsccert *certs = dnscenv->certs; + 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); + for (i = 0U; i < dnscenv->signed_certs_count; i++) { + if (memcmp(certs[i].magic_query, dnscrypt_header->magic_query, + DNSCRYPT_MAGIC_HEADER_LEN) == 0) { + return &certs[i]; + } + } + return NULL; +} + +/** + * Insert local-zone and local-data into configuration. + * In order to be able to serve certs over TXT, we can reuse the local-zone and + * local-data config option. The zone and qname are infered from the + * provider_name and the content of the TXT record from the certificate content. + * returns the number of certificate TXT record that were loaded. + * < 0 in case of error. + */ +static int +dnsc_load_local_data(struct dnsc_env* dnscenv, struct config_file *cfg) +{ + size_t i, j; + // Insert 'local-zone: "2.dnscrypt-cert.example.com" deny' + if(!cfg_str2list_insert(&cfg->local_zones, + strdup(dnscenv->provider_name), + strdup("deny"))) { + log_err("Could not load dnscrypt local-zone: %s deny", + dnscenv->provider_name); + return -1; + } + + // Add local data entry of type: + // 2.dnscrypt-cert.example.com 86400 IN TXT "DNSC......" + for(i=0; isigned_certs_count; i++) { + const char *ttl_class_type = " 86400 IN TXT \""; + int rotated_cert = 0; + uint32_t serial; + uint16_t rrlen; + char* rr; + struct SignedCert *cert = dnscenv->signed_certs + i; + // Check if the certificate is being rotated and should not be published + for(j=0; jrotated_certs_count; j++){ + if(cert == dnscenv->rotated_certs[j]) { + rotated_cert = 1; + break; + } + } + memcpy(&serial, cert->serial, sizeof serial); + serial = htonl(serial); + if(rotated_cert) { + verbose(VERB_OPS, + "DNSCrypt: not adding cert with serial #%" + PRIu32 + " to local-data as it is rotated", + serial + ); + continue; + } + rrlen = strlen(dnscenv->provider_name) + + strlen(ttl_class_type) + + 4 * sizeof(struct SignedCert) + // worst case scenario + 1 + // trailing double quote + 1; + rr = malloc(rrlen); + if(!rr) { + log_err("Could not allocate memory"); + return -2; + } + snprintf(rr, rrlen - 1, "%s 86400 IN TXT \"", dnscenv->provider_name); + for(j=0; jlocal_data, strdup(rr)); + free(rr); + } + return dnscenv->signed_certs_count; +} + +static const char * +key_get_es_version(uint8_t version[2]) +{ + struct es_version { + uint8_t es_version[2]; + const char *name; + }; + + struct es_version es_versions[] = { + {{0x00, 0x01}, "X25519-XSalsa20Poly1305"}, + {{0x00, 0x02}, "X25519-XChacha20Poly1305"}, + }; + int i; + for(i=0; i < (int)sizeof(es_versions); i++){ + if(es_versions[i].es_version[0] == version[0] && + es_versions[i].es_version[1] == version[1]){ + return es_versions[i].name; + } + } + return NULL; +} + + +/** + * Parse the secret key files from `dnscrypt-secret-key` config and populates + * a list of dnsccert with es_version, magic number and secret/public keys + * supported by dnscrypt listener. + * \param[in] env The dnsc_env structure which will hold the keypairs. + * \param[in] cfg The config with the secret key file paths. + */ +static int +dnsc_parse_keys(struct dnsc_env *env, struct config_file *cfg) +{ + struct config_strlist *head; + size_t cert_id, keypair_id; + size_t c; + char *nm; + + env->keypairs_count = 0U; + for (head = cfg->dnscrypt_secret_key; head; head = head->next) { + env->keypairs_count++; + } + + env->keypairs = sodium_allocarray(env->keypairs_count, + sizeof *env->keypairs); + env->certs = sodium_allocarray(env->signed_certs_count, + sizeof *env->certs); + + cert_id = 0U; + keypair_id = 0U; + for(head = cfg->dnscrypt_secret_key; head; head = head->next, keypair_id++) { + char fingerprint[80]; + int found_cert = 0; + KeyPair *current_keypair = &env->keypairs[keypair_id]; + nm = dnsc_chroot_path(cfg, head->str); + if(dnsc_read_from_file( + nm, + (char *)(current_keypair->crypt_secretkey), + crypto_box_SECRETKEYBYTES) != 0) { + fatal_exit("dnsc_parse_keys: failed to load %s: %s", head->str, strerror(errno)); + } + verbose(VERB_OPS, "Loaded key %s", head->str); + if (crypto_scalarmult_base(current_keypair->crypt_publickey, + current_keypair->crypt_secretkey) != 0) { + fatal_exit("dnsc_parse_keys: could not generate public key from %s", head->str); + } + dnsc_key_to_fingerprint(fingerprint, current_keypair->crypt_publickey); + verbose(VERB_OPS, "Crypt public key fingerprint for %s: %s", head->str, fingerprint); + // find the cert matching this key + for(c = 0; c < env->signed_certs_count; c++) { + if(memcmp(current_keypair->crypt_publickey, + env->signed_certs[c].server_publickey, + crypto_box_PUBLICKEYBYTES) == 0) { + dnsccert *current_cert = &env->certs[cert_id++]; + found_cert = 1; + current_cert->keypair = current_keypair; + memcpy(current_cert->magic_query, + env->signed_certs[c].magic_query, + sizeof env->signed_certs[c].magic_query); + memcpy(current_cert->es_version, + env->signed_certs[c].version_major, + sizeof env->signed_certs[c].version_major + ); + dnsc_key_to_fingerprint(fingerprint, + current_cert->keypair->crypt_publickey); + verbose(VERB_OPS, "Crypt public key fingerprint for %s: %s", + head->str, fingerprint); + verbose(VERB_OPS, "Using %s", + key_get_es_version(current_cert->es_version)); +#ifndef USE_DNSCRYPT_XCHACHA20 + if (current_cert->es_version[1] == 0x02) { + fatal_exit("Certificate for XChacha20 but libsodium does not support it."); + } +#endif + + } + } + if (!found_cert) { + fatal_exit("dnsc_parse_keys: could not match certificate for key " + "%s. Unable to determine ES version.", + head->str); + } + } + return cert_id; +} + +static void +sodium_misuse_handler(void) +{ + fatal_exit( + "dnscrypt: libsodium could not be initialized, this typically" + " happens when no good source of entropy is found. If you run" + " unbound in a chroot, make sure /dev/random is available. See" + " https://www.unbound.net/documentation/unbound.conf.html"); +} + + +/** + * ######################################################### + * ############# Publicly accessible functions ############# + * ######################################################### + */ + +int +dnsc_handle_curved_request(struct dnsc_env* dnscenv, + struct comm_reply* repinfo) +{ + struct comm_point* c = repinfo->c; + + repinfo->is_dnscrypted = 0; + if( !c->dnscrypt ) { + return 1; + } + // Attempt to decrypt the query. If it is not crypted, we may still need + // to serve the certificate. + verbose(VERB_ALGO, "handle request called on DNSCrypt socket"); + if ((repinfo->dnsc_cert = dnsc_find_cert(dnscenv, c->buffer)) != NULL) { + if(dnscrypt_server_uncurve(dnscenv, + repinfo->dnsc_cert, + repinfo->client_nonce, + repinfo->nmkey, + c->buffer) != 0){ + verbose(VERB_ALGO, "dnscrypt: Failed to uncurve"); + comm_point_drop_reply(repinfo); + return 0; + } + repinfo->is_dnscrypted = 1; + sldns_buffer_rewind(c->buffer); + } + return 1; +} + +int +dnsc_handle_uncurved_request(struct comm_reply *repinfo) +{ + if(!repinfo->c->dnscrypt) { + return 1; + } + sldns_buffer_copy(repinfo->c->dnscrypt_buffer, repinfo->c->buffer); + if(!repinfo->is_dnscrypted) { + return 1; + } + if(dnscrypt_server_curve(repinfo->dnsc_cert, + repinfo->client_nonce, + repinfo->nmkey, + repinfo->c->dnscrypt_buffer, + repinfo->c->type == comm_udp, + repinfo->max_udp_size) != 0){ + verbose(VERB_ALGO, "dnscrypt: Failed to curve cached missed answer"); + comm_point_drop_reply(repinfo); + return 0; + } + return 1; +} + +struct dnsc_env * +dnsc_create(void) +{ + struct dnsc_env *env; +#ifdef SODIUM_MISUSE_HANDLER + sodium_set_misuse_handler(sodium_misuse_handler); +#endif + if (sodium_init() == -1) { + fatal_exit("dnsc_create: could not initialize libsodium."); + } + env = (struct dnsc_env *) calloc(1, sizeof(struct dnsc_env)); + lock_basic_init(&env->shared_secrets_cache_lock); + lock_protect(&env->shared_secrets_cache_lock, + &env->num_query_dnscrypt_secret_missed_cache, + sizeof(env->num_query_dnscrypt_secret_missed_cache)); + lock_basic_init(&env->nonces_cache_lock); + lock_protect(&env->nonces_cache_lock, + &env->nonces_cache, + sizeof(env->nonces_cache)); + lock_protect(&env->nonces_cache_lock, + &env->num_query_dnscrypt_replay, + sizeof(env->num_query_dnscrypt_replay)); + + return env; +} + +int +dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg) +{ + if(dnsc_parse_certs(env, cfg) <= 0) { + fatal_exit("dnsc_apply_cfg: no cert file loaded"); + } + if(dnsc_parse_keys(env, cfg) <= 0) { + fatal_exit("dnsc_apply_cfg: no key file loaded"); + } + randombytes_buf(env->hash_key, sizeof env->hash_key); + env->provider_name = cfg->dnscrypt_provider; + + if(dnsc_load_local_data(env, cfg) <= 0) { + fatal_exit("dnsc_apply_cfg: could not load local data"); + } + lock_basic_lock(&env->shared_secrets_cache_lock); + env->shared_secrets_cache = slabhash_create( + cfg->dnscrypt_shared_secret_cache_slabs, + HASH_DEFAULT_STARTARRAY, + cfg->dnscrypt_shared_secret_cache_size, + dnsc_shared_secrets_sizefunc, + dnsc_shared_secrets_compfunc, + dnsc_shared_secrets_delkeyfunc, + dnsc_shared_secrets_deldatafunc, + NULL + ); + lock_basic_unlock(&env->shared_secrets_cache_lock); + if(!env->shared_secrets_cache){ + fatal_exit("dnsc_apply_cfg: could not create shared secrets cache."); + } + lock_basic_lock(&env->nonces_cache_lock); + env->nonces_cache = slabhash_create( + cfg->dnscrypt_nonce_cache_slabs, + HASH_DEFAULT_STARTARRAY, + cfg->dnscrypt_nonce_cache_size, + dnsc_nonces_sizefunc, + dnsc_nonces_compfunc, + dnsc_nonces_delkeyfunc, + dnsc_nonces_deldatafunc, + NULL + ); + lock_basic_unlock(&env->nonces_cache_lock); + return 0; +} + +void +dnsc_delete(struct dnsc_env *env) +{ + if(!env) { + return; + } + verbose(VERB_OPS, "DNSCrypt: Freeing environment."); + sodium_free(env->signed_certs); + sodium_free(env->rotated_certs); + sodium_free(env->certs); + sodium_free(env->keypairs); + lock_basic_destroy(&env->shared_secrets_cache_lock); + lock_basic_destroy(&env->nonces_cache_lock); + slabhash_delete(env->shared_secrets_cache); + slabhash_delete(env->nonces_cache); + free(env); +} + +/** + * ######################################################### + * ############# Shared secrets cache functions ############ + * ######################################################### + */ + +size_t +dnsc_shared_secrets_sizefunc(void *k, void* ATTR_UNUSED(d)) +{ + struct shared_secret_cache_key* ssk = (struct shared_secret_cache_key*)k; + size_t key_size = sizeof(struct shared_secret_cache_key) + + lock_get_mem(&ssk->entry.lock); + size_t data_size = crypto_box_BEFORENMBYTES; + (void)ssk; /* otherwise ssk is unused if no threading, or fixed locksize */ + return key_size + data_size; +} + +int +dnsc_shared_secrets_compfunc(void *m1, void *m2) +{ + return sodium_memcmp(m1, m2, DNSCRYPT_SHARED_SECRET_KEY_LENGTH); +} + +void +dnsc_shared_secrets_delkeyfunc(void *k, void* ATTR_UNUSED(arg)) +{ + struct shared_secret_cache_key* ssk = (struct shared_secret_cache_key*)k; + lock_rw_destroy(&ssk->entry.lock); + free(ssk); +} + +void +dnsc_shared_secrets_deldatafunc(void* d, void* ATTR_UNUSED(arg)) +{ + uint8_t* data = (uint8_t*)d; + free(data); +} + +/** + * ######################################################### + * ############### Nonces cache functions ################## + * ######################################################### + */ + +size_t +dnsc_nonces_sizefunc(void *k, void* ATTR_UNUSED(d)) +{ + struct nonce_cache_key* nk = (struct nonce_cache_key*)k; + size_t key_size = sizeof(struct nonce_cache_key) + + lock_get_mem(&nk->entry.lock); + (void)nk; /* otherwise ssk is unused if no threading, or fixed locksize */ + return key_size; +} + +int +dnsc_nonces_compfunc(void *m1, void *m2) +{ + struct nonce_cache_key *k1 = m1, *k2 = m2; + return + sodium_memcmp( + k1->nonce, + k2->nonce, + crypto_box_HALF_NONCEBYTES) != 0 || + sodium_memcmp( + k1->magic_query, + k2->magic_query, + DNSCRYPT_MAGIC_HEADER_LEN) != 0 || + sodium_memcmp( + k1->client_publickey, k2->client_publickey, + crypto_box_PUBLICKEYBYTES) != 0; +} + +void +dnsc_nonces_delkeyfunc(void *k, void* ATTR_UNUSED(arg)) +{ + struct nonce_cache_key* nk = (struct nonce_cache_key*)k; + lock_rw_destroy(&nk->entry.lock); + free(nk); +} + +void +dnsc_nonces_deldatafunc(void* ATTR_UNUSED(d), void* ATTR_UNUSED(arg)) +{ + return; +} diff --git a/external/unbound/dnscrypt/dnscrypt.h b/external/unbound/dnscrypt/dnscrypt.h new file mode 100644 index 0000000..666f54e --- /dev/null +++ b/external/unbound/dnscrypt/dnscrypt.h @@ -0,0 +1,175 @@ +#ifndef UNBOUND_DNSCRYPT_H +#define UNBOUND_DNSCRYPT_H + +/** + * \file + * dnscrypt functions for encrypting DNS packets. + */ + +#include "dnscrypt/dnscrypt_config.h" +#ifdef USE_DNSCRYPT + +#define DNSCRYPT_MAGIC_HEADER_LEN 8U +#define DNSCRYPT_MAGIC_RESPONSE "r6fnvWj8" + +#ifndef DNSCRYPT_MAX_PADDING +# define DNSCRYPT_MAX_PADDING 256U +#endif +#ifndef DNSCRYPT_BLOCK_SIZE +# define DNSCRYPT_BLOCK_SIZE 64U +#endif +#ifndef DNSCRYPT_MIN_PAD_LEN +# define DNSCRYPT_MIN_PAD_LEN 8U +#endif + +#define crypto_box_HALF_NONCEBYTES (crypto_box_NONCEBYTES / 2U) + +#include "config.h" +#include "dnscrypt/cert.h" +#include "util/locks.h" + +#define DNSCRYPT_QUERY_HEADER_SIZE \ + (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_PUBLICKEYBYTES + crypto_box_HALF_NONCEBYTES + crypto_box_MACBYTES) +#define DNSCRYPT_RESPONSE_HEADER_SIZE \ + (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_NONCEBYTES + crypto_box_MACBYTES) + +#define DNSCRYPT_REPLY_HEADER_SIZE \ + (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_HALF_NONCEBYTES * 2 + crypto_box_MACBYTES) + +struct sldns_buffer; +struct config_file; +struct comm_reply; +struct slabhash; + +typedef struct KeyPair_ { + uint8_t crypt_publickey[crypto_box_PUBLICKEYBYTES]; + uint8_t crypt_secretkey[crypto_box_SECRETKEYBYTES]; +} KeyPair; + +typedef struct cert_ { + uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN]; + uint8_t es_version[2]; + KeyPair *keypair; +} dnsccert; + +struct dnsc_env { + struct SignedCert *signed_certs; + struct SignedCert **rotated_certs; + dnsccert *certs; + size_t signed_certs_count; + size_t rotated_certs_count; + uint8_t provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES]; + uint8_t provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES]; + KeyPair *keypairs; + size_t keypairs_count; + uint64_t nonce_ts_last; + unsigned char hash_key[crypto_shorthash_KEYBYTES]; + char * provider_name; + + /** Caches */ + struct slabhash *shared_secrets_cache; + /** lock on shared secret cache counters */ + lock_basic_type shared_secrets_cache_lock; + /** number of misses from shared_secrets_cache */ + size_t num_query_dnscrypt_secret_missed_cache; + + /** slabhash keeping track of nonce/cient pk/server sk pairs. */ + struct slabhash *nonces_cache; + /** lock on nonces_cache, used to avoid race condition in updating the hash */ + lock_basic_type nonces_cache_lock; + /** number of replayed queries */ + size_t num_query_dnscrypt_replay; +}; + +struct dnscrypt_query_header { + uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN]; + uint8_t publickey[crypto_box_PUBLICKEYBYTES]; + uint8_t nonce[crypto_box_HALF_NONCEBYTES]; + uint8_t mac[crypto_box_MACBYTES]; +}; + +/** + * Initialize DNSCrypt environment. + * Initialize sodium library and allocate the dnsc_env structure. + * \return an uninitialized struct dnsc_env. + */ +struct dnsc_env * dnsc_create(void); + +/** + * Apply configuration. + * Read certificates and secret keys from configuration. Initialize hashkey and + * provider name as well as loading cert TXT records. + * In case of issue applying configuration, this function fatals. + * \param[in] env the struct dnsc_env to populate. + * \param[in] cfg the config_file struct with dnscrypt options. + * \return 0 on success. + */ +int dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg); + +/** + * Delete DNSCrypt environment + * + */ +void dnsc_delete(struct dnsc_env *env); + +/** + * handle a crypted dnscrypt request. + * Determine wether or not a query is coming over the dnscrypt listener and + * attempt to uncurve it or detect if it is a certificate query. + * return 0 in case of failure. + */ +int dnsc_handle_curved_request(struct dnsc_env* dnscenv, + struct comm_reply* repinfo); +/** + * handle an unencrypted dnscrypt request. + * Determine wether or not a query is going over the dnscrypt channel and + * attempt to curve it unless it was not crypted like when it is a + * certificate query. + * \return 0 in case of failure. + */ + +int dnsc_handle_uncurved_request(struct comm_reply *repinfo); + +/** + * Computes the size of the shared secret cache entry. + */ +size_t dnsc_shared_secrets_sizefunc(void *k, void *d); + +/** + * Compares two shared secret cache keys. + */ +int dnsc_shared_secrets_compfunc(void *m1, void *m2); + +/** + * Function to delete a shared secret cache key. + */ +void dnsc_shared_secrets_delkeyfunc(void *k, void* arg); + +/** + * Function to delete a share secret cache value. + */ +void dnsc_shared_secrets_deldatafunc(void* d, void* arg); + +/** + * Computes the size of the nonce cache entry. + */ +size_t dnsc_nonces_sizefunc(void *k, void *d); + +/** + * Compares two nonce cache keys. + */ +int dnsc_nonces_compfunc(void *m1, void *m2); + +/** + * Function to delete a nonce cache key. + */ +void dnsc_nonces_delkeyfunc(void *k, void* arg); + +/** + * Function to delete a nonce cache value. + */ +void dnsc_nonces_deldatafunc(void* d, void* arg); + + +#endif /* USE_DNSCRYPT */ +#endif diff --git a/external/unbound/dnscrypt/dnscrypt.m4 b/external/unbound/dnscrypt/dnscrypt.m4 new file mode 100644 index 0000000..591bd13 --- /dev/null +++ b/external/unbound/dnscrypt/dnscrypt.m4 @@ -0,0 +1,44 @@ +# dnscrypt.m4 + +# dnsc_DNSCRYPT([action-if-true], [action-if-false]) +# -------------------------------------------------------------------------- +# Check for required dnscrypt libraries and add dnscrypt configure args. +AC_DEFUN([dnsc_DNSCRYPT], +[ + AC_ARG_ENABLE([dnscrypt], + AS_HELP_STRING([--enable-dnscrypt], + [Enable dnscrypt support (requires libsodium)]), + [opt_dnscrypt=$enableval], [opt_dnscrypt=no]) + + if test "x$opt_dnscrypt" != "xno"; then + AC_ARG_WITH([libsodium], AC_HELP_STRING([--with-libsodium=path], + [Path where libsodium is installed, for dnscrypt]), [ + CFLAGS="$CFLAGS -I$withval/include" + LDFLAGS="$LDFLAGS -L$withval/lib" + ]) + AC_SEARCH_LIBS([sodium_init], [sodium], [], + AC_MSG_ERROR([The sodium library was not found. Please install sodium!])) + AC_SEARCH_LIBS([crypto_box_curve25519xchacha20poly1305_beforenm], [sodium], + [ + AC_SUBST([ENABLE_DNSCRYPT_XCHACHA20], [1]) + AC_DEFINE( + [USE_DNSCRYPT_XCHACHA20], [1], + [Define to 1 to enable dnscrypt with xchacha20 support]) + ], + [ + AC_SUBST([ENABLE_DNSCRYPT_XCHACHA20], [0]) + ]) + AC_SEARCH_LIBS([sodium_set_misuse_handler], [sodium], + [ + AC_DEFINE( + [SODIUM_MISUSE_HANDLER], [1], + [Define to 1 if libsodium supports sodium_set_misuse_handler]) + ], + [ + ]) + $1 + else + AC_SUBST([ENABLE_DNSCRYPT_XCHACHA20], [0]) + $2 + fi +]) diff --git a/external/unbound/dnscrypt/dnscrypt_config.h.in b/external/unbound/dnscrypt/dnscrypt_config.h.in new file mode 100644 index 0000000..d9f38a8 --- /dev/null +++ b/external/unbound/dnscrypt/dnscrypt_config.h.in @@ -0,0 +1,17 @@ +#ifndef UNBOUND_DNSCRYPT_CONFIG_H +#define UNBOUND_DNSCRYPT_CONFIG_H + +/* + * Process this file (dnscrypt_config.h.in) with AC_CONFIG_FILES to generate + * dnscrypt_config.h. + * + * This file exists so that USE_DNSCRYPT can be used without including config.h. + */ + +#if @ENABLE_DNSCRYPT@ /* ENABLE_DNSCRYPT */ +# ifndef USE_DNSCRYPT +# define USE_DNSCRYPT 1 +# endif +#endif + +#endif /* UNBOUND_DNSCRYPT_CONFIG_H */ diff --git a/external/unbound/dnscrypt/testdata/gencert.sh b/external/unbound/dnscrypt/testdata/gencert.sh new file mode 100644 index 0000000..ae0b231 --- /dev/null +++ b/external/unbound/dnscrypt/testdata/gencert.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +CERT_EXPIRE_DAYS="$(( 365 * 15 ))" +DIR="$(dirname "$0")" + + +if [[ "$PWD" != *tdir ]] +then + echo "You should run this script with a .tdir directory" + exit 1 +fi + +for i in 1 2 +do + # Ephemeral key + rm -f "${i}.key" + dnscrypt-wrapper --gen-crypt-keypair \ + --crypt-secretkey-file="${i}.key" \ + --provider-publickey-file="${DIR}/keys${i}/public.key" \ + --provider-secretkey-file="${DIR}/keys${i}/secret.key" + # Cert file + for cipher in salsa chacha + do + rm -f "${i}_${cipher}.cert" + extraarg="" + if [ "${cipher}" == "chacha" ] + then + extraarg="-x" + fi + + dnscrypt-wrapper ${extraarg} --gen-cert-file \ + --provider-cert-file="${i}_${cipher}.cert" \ + --crypt-secretkey-file="${i}.key" \ + --provider-publickey-file="${DIR}/keys${i}/public.key" \ + --provider-secretkey-file="${DIR}/keys${i}/secret.key" \ + --cert-file-expire-days="${CERT_EXPIRE_DAYS}" + done +done diff --git a/external/unbound/dnscrypt/testdata/keys1/public.key b/external/unbound/dnscrypt/testdata/keys1/public.key new file mode 100644 index 0000000..45e6aad --- /dev/null +++ b/external/unbound/dnscrypt/testdata/keys1/public.key @@ -0,0 +1 @@ +¸_A¡O#÷ÛÈfó—ÌoD¶_eŶ)|'T¦éÜòO \ No newline at end of file diff --git a/external/unbound/dnscrypt/testdata/keys1/secret.key b/external/unbound/dnscrypt/testdata/keys1/secret.key new file mode 100644 index 0000000..7672c97 --- /dev/null +++ b/external/unbound/dnscrypt/testdata/keys1/secret.key @@ -0,0 +1 @@ +-&ç6\Uùõñh`^"…ºz/C9‚ óˆ¸_A¡O#÷ÛÈfó—ÌoD¶_eŶ)|'T¦éÜòO \ No newline at end of file diff --git a/external/unbound/dnscrypt/testdata/keys2/public.key b/external/unbound/dnscrypt/testdata/keys2/public.key new file mode 100644 index 0000000..036b04a --- /dev/null +++ b/external/unbound/dnscrypt/testdata/keys2/public.key @@ -0,0 +1 @@ +ÃR òÒýeµô{ölˆÁKË€Î:5r\±}KÓçƒ \ No newline at end of file diff --git a/external/unbound/dnscrypt/testdata/keys2/secret.key b/external/unbound/dnscrypt/testdata/keys2/secret.key new file mode 100644 index 0000000..6873029 --- /dev/null +++ b/external/unbound/dnscrypt/testdata/keys2/secret.key @@ -0,0 +1 @@ +çi%‚ 5 fÍ™–í ÉûŒí Bnêͯ.º“ÃR òÒýeµô{ölˆÁKË€Î:5r\±}KÓçƒ \ No newline at end of file diff --git a/external/unbound/dnstap/dnstap.c b/external/unbound/dnstap/dnstap.c index b62dc5b..5d0420f 100644 --- a/external/unbound/dnstap/dnstap.c +++ b/external/unbound/dnstap/dnstap.c @@ -121,14 +121,17 @@ dt_msg_init(const struct dt_env *env, struct dt_env * dt_create(const char *socket_path, unsigned num_workers) { +#ifdef UNBOUND_DEBUG fstrm_res res; +#endif struct dt_env *env; struct fstrm_iothr_options *fopt; struct fstrm_unix_writer_options *fuwopt; struct fstrm_writer *fw; struct fstrm_writer_options *fwopt; - verbose(VERB_OPS, "opening dnstap socket %s", socket_path); + verbose(VERB_OPS, "attempting to connect to dnstap socket %s", + socket_path); log_assert(socket_path != NULL); log_assert(num_workers > 0); @@ -137,7 +140,12 @@ dt_create(const char *socket_path, unsigned num_workers) return NULL; fwopt = fstrm_writer_options_init(); - res = fstrm_writer_options_add_content_type(fwopt, +#ifdef UNBOUND_DEBUG + res = +#else + (void) +#endif + fstrm_writer_options_add_content_type(fwopt, DNSTAP_CONTENT_TYPE, sizeof(DNSTAP_CONTENT_TYPE) - 1); log_assert(res == fstrm_res_success); @@ -474,7 +482,7 @@ dt_msg_send_outside_response(struct dt_env *env, return; dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE); } else { - if (!env->log_resolver_query_messages) + if (!env->log_resolver_response_messages) return; dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE); } diff --git a/external/unbound/dnstap/dnstap.proto b/external/unbound/dnstap/dnstap.proto index 32871f4..88bfb4e 100644 --- a/external/unbound/dnstap/dnstap.proto +++ b/external/unbound/dnstap/dnstap.proto @@ -13,6 +13,7 @@ // with this file. If not, see: // // . +syntax = "proto2"; package dnstap; diff --git a/external/unbound/doc/CNAME-basedRedirectionDesignNotes.pdf b/external/unbound/doc/CNAME-basedRedirectionDesignNotes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..11cea0f0f7e48f6b0bc245146e1cc3008aa6956a GIT binary patch literal 56975 zcma%?Q;aUm60X;*v2EM-8r!z{jcwbuZQHhObB%4!oPX~eC3`35+*PV?x;yF0`}A8y zDlaTb%SgupMLJkC*frQPm3z(8PYXaU8|O)m|wF?BK{VE!kgNH1z`ffDyikr#4gdpdD7UO`Es03#am1dN+BtWAp7tfE0{-F@I7e)=+y2+%bjA@j zH@feSnK9Cot%~>Q0bm|y6}tF(ulnMp&YsVkt6ub@Zf}UpV)r2%FTIuGk1waLbn0yGkB5>+BRgPk&_>NsY4Dg=^v5}%wo!Ab;@UzD{`CP^ zbU;sz?=R@=^`_IJMQ03q^}g+oB)0Vz3QrIvHB8uzXc|y$t-T}rhMe=@)?%;s_wDni z*GIiWP&i!P7tmvq&XdgSrZbr2mf8ic{@H#>sx<`szU@_u!bTCH$5Skh2r$B5yjOpE z-t{Jk+D!~Th$^z9f(`8^(2zwe;u0Cb2I>4}CyqCwQ zyGlGZq7b}x@Wq@#izrZv02J7DgBd|F*eP$uJ7BTjg`Y{oD8jF72_aW3^IB;;0<7&B@y(z)96~F1wM8lM$k0l4G3wR^`$c>4 zO(G6^;aMV{qIj4>Ug1vI*lknQA!R3C531PWJz~|S_Z?`OwnYoTy&M=6CFt{y*n5S{ zMrrJXLl8Q~4UpVUO;zL-{(9O(QE-2d=Ri5wf(LoiO+Zax;$LH$npgxezTRdx^hehw zi>5xXMlxA+sSB&Hwtfm7ZsvDsW=3Jo^Le*2MR>L|(SK!llnw!Ue4R^+*E*%=E=R@E+gl;5UC9aFl8L<;Dmp2vTQzcu);n`KoS5d~(8 zw~WUy9#3-QGx5i8UmF;Yh{I&<41kq;3(_a@yapmdimBwtc@N7K8gM$h62_ThYqB3R zs7H%>MF1%3Atk^^;#7buh+sflFoklSW=Pto0sEZ-)W{1xw;>4)+KeI@X7P!rfV`#y z8Jky&Zto1X3(v|Pooz$VRPD{)$p{|fGo|}=hVC@cOb0w)sti`u57Tv5Fy zxbZ7sAqcSi$u~#4VDf_M)YRyXSYHcT%M(CC4_Y}jAAL+ugpIoZEdM4>+-1TL9JL8(iR^kan5Mu zG)KBX8WPzlm2=GqIf=V99|;vD!HORM+<-9G+fRg+g4DEt@;78XoFm7PLD0bqv20Z# zj&wBPH1LM;h&)m10KlP!!dTX%uxI2VDY$bR??q29={8P$$<6q302*mb!l2TYE0jiP z`E=ZwTHY{K9`g3gMr4;>;K)g$B5 zrA}(D6%ZB%JvOEU4}%vnRn9@N#oqEq2u;pC7ok#R3(|nc>UAMS#f4U!>hlz*bDhSXMn-&(n0)DRZJ@q!$r(sYR1#nwb5DeS#@Q7$MJU2_?i5IXZ@A>)5&Z^n@4D8 zbnJSe8VhAupJ8XieKs~A?Ivn{WYJfEAH|B4LArG(|F#xFbFRlWLRo5hOkBBY5LVw< zHi-K(+yHbf=0XSXuT+?jCpk#VYNw&XbhTp<{2dqpL3l-_E(W9w%va0 zav}vfg1K8*05D7l4=e^BbXZjR3%1`3hC@Wz%@;k!Z)6w(|LfHgJ`&)hr@#B>Wvv( zPcJM*Cu)`utbBX&Jr?mjYcihOvnp2J0aVrtxX25rNsJf~Z}v&EMdy(e(`VHJa-=tG z@4(`_M?DLf?g9ssE3oAXwO|!wTsR|3&b2bii%vqzWLeN?O?4YYwUe(Je6C#vAO#h|EPj-a z7jWZ~SsA80LrQwNx+aZ7wnWA^+_&eqw1@~c5t}9LYYx6Ox)t5CxDo+J)j{BIji$-s zKIYX}BpJYykOoe|Aq8Wa+WKK?X%isyEPZZ&a1NYwm!>1pls~)S3JjE0pW9cRb5+Io zk_YAv3qtBSyPBfth~tpXIvI+$77IWoQjYOc@E=sulrxFMI1ybC4Z}S(VVim3DAwlz z)g5T%%q0dVp{? zH9RSG;uOuq0X>6@pWmgwY?aWE+Vp!&k)Q{-X-vz#7R|Ez^KF*A|1&WtvW&!6w z;I6egU)Q?197iXVmwDo3s}y((ya=j`D(XHGd0;A~!i1TOl*$2d^^i~N*3nQ)rikHf zdXlCJf6IjZR3_Ht`MriNv)#Vc|J=F#0W z$TUWcXQ)LO;&y97MMvdZGTI0k%~3MKmc68WpjJLSCDV5-8RZ!klekP@>ZUQWCTpm`C5#GvwO9nQ@xBQ(qZZHyG-E=YMHP)Z-(DlZ!HU(48w$YgA5!xGxi z>hxZ_mecZtQ8ofn?v84{n6*gWl*G8v$#EJ<#)7}#Nv3P5+Bxb8RAUleKO<&>@(j-! z#$Z$O8De6p;Dd}-4<4^QE}XXGs&tj%=2PA0@EM1pbUO1Bt|KcO_6)p_?NaC`wpHs_ z2(*3+X<@Ggvmfl}q7N2ys$}<|K#06W)MEZz75R)d?kRH~rd|^1_az-^?92pcToQUM>NRXhhUq#d-{+Oz{o zc%Sg7Y~a_Lv+-G1<<-oACYa7%)iLi@LGh|u!ASq7ye{RX?poP*NqJONV? z!3#;Wo+#s<_R%s|)vs%v@>&u21j&gglbjpFjKnc#!IpQ`l~lk!JJGzX%2DUtsdDfSHk<>0itLPO|<7zp(v( z@Jq4QWXxq7?DmV=qlaHb*gduxivFrm{Pr(cV?^Ur=>UB)ev`!ASPDrL5eb(!I651Z zX6thSh0xFtQT954^G!{n;&uVMAkb4OAGjq%5MY3;C^%4UHrsE zh6m^O&+m_uTwPh*+qbVtyXwwLqQRfAXm;mTrY`!3zJqf6`Q&5=ubZ(m36 z8Co97*4+&(-|;5k{r9b+rN@MxAEfQXHo9il9C9b#ZH4c(bLZMzuO)EDEk8me z>^f>FX-GKyFpvOFY|@bb7-L)L@|xM0eaRYg^l+tlTkspFy+u}z1oLk`LOeUp!lKd> zSkmg=gOjEr!o6&X=|Gzq7Hkwv_Z{q5{0|@qX3YiS2G~{R7L>==)*C)w?p{70x@Z&a zj*F_O66|@!s{VD9>JQ4@uQj~ZDI}P^T{ONeB96+7?mr=!AL?b(41AeMA{|$vLe=2r znUJBZ8S4x!O%6?D^I(OF0Rd*}8>*l0PQ+b*4?L1Tz&=4>zj{gm$H|=!dxJ>zNfP&l zsaE3zXSxm6fmlt(^<`af*r#@7+k(AYxR%2eJM%d-J1C8`R%~(r-Ub*T6*HMN2|^s~KD@2btZbIAgPmBZ=PT2ijKh*@GS;rzW8Ea+W$I}4zL2fm(D;HlMp z<=o(*{Q`Kj3KJqUovM`?wkv9i*A#b#h_&&Tgp>{YrZCR^^N~s!nhD#pVkpiq`wV^K zUu}rw2<(QyW(lZV(su03Y&PaLn5u%Z@prA+_D~V%ukN17>)Ywq zE%*_L%1Ptqk6bZX0c~h$%W&(aCbD0b7!qnWp*z+gGgEZ~7GN)v8RORBsUIV-2W+7a zE}^Gp!6bL{wM{D1(xtk?2?9%-^0(Mk)$mvxRaqm*|YY5dPuR zjh?1vuwQ0TX-Y|CL}MJOVHyS%zd4{(mxzqG7%?po4+gB;J6vAldM^zr&c-+~WFsgF zdSFz7HN<40ge5pTynv4zL4*bH9Se=s!#hsOYNq?9y^Xf zNR7k!_#vY?mrFf(MWPzR$k~s)w!(u)E}d%%>g%?y8`Nehn-U@+iyMpEV)5rg z)&CZsldDK_?L-AC0fw83t7ycpFt%0XC82ebtO0>1)duDS%?JqlO`=Vsp$Km<8$EFx z($3H=pYy~3j9LgVSi&tu>()878`|~L4{~R#PiTl}Du3*KCe;zG^~8}`7>m)6PJVTb z*PYbjCvC2DAw8KeDh*yP9qtMN6OO%{Dh)8Q}r()6@(KxNJ^vjTS)p z8)r^}FcL;2>rt~lh>gajEGW?OvsNDp!8V$=w{6v{XtSZ(zRuh^^C=dwk|Wqil`-C6 z!P}2}j*&3QtIpcY#&qq(WKHCvf6A_bDdtwZoK(dWWRFyU7F23%#>k7XFCg5*1d=?L ziTvBTmzP%$b$>F|Vbtbb(rP)(2!MkWnim+yB%H9{9%e9Qz26;A^&7KuOyXS%+4IVv z>*su+tz(k|58;@R(@E!kjDm``CpQx2;{20uI+5DleT~R&k0OX?N{za9ccvh^8@g*) z5&vYqX$YPpBp(=DqS(KA(7Q=Y3zEjUqG6nm&VJgFVPYi+nd&XW7^SL=kb&gMeP{xO z-OBBtyQKj~jccQvzQ_IGizzJpMOnvbFK8bIb zBb<3KY6cJNQAzKVn>y=gT)&?4o+Xgd!6ow86NfLd;T`FXOGRVI5Zqaes(4^d3hGFt z0uCU#ibaeu>Go}+o_wA}8PBMAQErfto0TZ8KqsgjWLUs4s~~9DcnVI~hB};tI}>5q z;DnmJ1f+5rT1=vQvfQGzF@@CPbU|nAJfMvGN4zgh0X`|0SfOAYj@>`QEjO`A+x3_r z18Vtcdi~+2h%DDL%A%pD1jwLoAezDTHiNwTwOzMQf01o#I9&F7`HlB=F-D2M-F*dG9jRUd%j+!%GR8@YjQ2HpqTXG^!wq#IMCtDu`^3)!8`<1?>QujNFs}mE-L=!Tcomdfe zgbc0QM56Yjb@}y7wo?9q5wi{1Dv2TJ?+C+$U6f{agVUjGx0B;MjgowQI~Sb~;V29nldaB3Hfhv~>% zJya~TVm2*MZaTD#A!0F)z?~o%yR>461NRKgi$BqFg~LtcL=~<{t0AYOCow~3sgNC0 zjgHr|k;KF_JXyNa(qa+_RrIQ923}L#P^1NrES|YX2xTCa9GqIS@qs$P(4unaQVMKC zt{g>2zgF{n#v&65(qR_eJH{zk$)r6KF5d+-ZV?@!AaMsoKy8A@HVP{ zn`ia#!NsL+TNZ0g>5!Ua;k#DhYb)-uz`%%|%Yb}EFjMuoY@JR&z*#2}EfzXWvp{-6 z9B+>Ml(R#AU%6NFKwgD`o{prZ#_iZ*T*M;gxOF!j@){NPeb65 zv0U&FqnnoWj!J5_D`@?RSaA{t(@^le@-j1@Jq6Tu^b6^R$oAzHuZZQ7QhBjeRb!3$ zBz})YU@0GTO7HDT%l#3RJ%QY?;LR)JExELauPqK)B+?(D2LdR8PyaTd1LIq$sCzodQJcF9LwbF!(e%9_B8=1B^*AyHmYI z!!pw|6pg=V(W|W#oS4}-VL!UYj{{i6;~-s` z4>2A`C(~84MXr&CQ|+Fr__mnG_&-vfw@^AcR!T6bimmRX#3}B{)bO>1PQzH0tw3JK zVUDx$l_s?(s%G}mY+?b^klTf>V)_(z<+>c^?&CgAJrYe0muk&Hf2N<&IC%hHSIR{k zQ>xKQOrB`P4gvxs)lh^fP+1kIckGg(owkbxkv?r_&SZ&-ja2qLX?74AS?R+m zySzR32@?qKEY146MjnN@#^wZ(hp|?oIYXgoB{>z$8}-mycYc)L;%8utYs3G<9OT1txv`BHiQG;bl?PYoM zMepbRxioj@=L_uS?qs#MJN@xh&$hUqPe}>cC-XC0?&te?Qm&S*WwGP$%9)(iH_*ee zqR}_C?-y}m)k@OH$|F{3X}LYZ@c4Xh-P=WL>v9kMPWJJOt*`sfATh*nkMGCP$B7fq zY_1)buiqQX>g~m%)gAKQC!=qMl!pV?rkr~HG*3&eQX;E&d*5n%Q`5fVwC~}e7S4#F zCk_lBzTNQ6Jq5>E(s$4CH9nhMDqg7sEFBp)oSvrR&cwzMk+g0f37aCD%6kAR^3II! z_w#7$M{8?tBN`@Q({eTqBy7T56<_Jqq0LH@)C=V1`mp`s^}_uCT+3Pkcbd(Tb>#NI zrFpA)Bb-(VTRrD5UWf*%g2^9NUN|iFBi^fwlJ$f>z8>T*!#f(Y$ zsvY}~^010uQUO}jG{1(q7>SVKG_XXnYBod%u!JQ<(P)PieomRx!ap!c6ZTQdMOg1Y zg$Ztj{ibU~4qi&+Mf|gd0yuy^*y<4=&B|<`HpP)KH^HckxWJCae?!5+Mw{awQdRF2 zdWlk3IpCu^02a#0-daK_-`@@-?LH}RLac)?&g5r!BR+&CJF}!5dh$im=ON_C1p{eb zq5WAo@2kM8PMk)bsc_;_*s@P-wXGAftA&Dan$`}`iw}|C)3$f`3l<1?%~b;u|d~vxu^`S zrR{`Db8bs!B$#(JZmZX|>AI1|2)lTP=Q_D}dm>Rgw4hpK= zc}Ac|H)O15AlOZrnbUIx8}yM%-A3jb)35&*y;N2iT z)g!zI+y?BEB-PtWv;9j`$i#2L?vk)FJqi@UcU$PRq406i!^3)|WVGI(S|Q&9oX8=Q z9`k0*jrpE8^AF|T5V2HiOhky2&|S~A9d}H4zbzc>m*ZJDaP5oRrA3*Tvkwr2T3e8k zXCKPe4s6fD?#t=v6du25bgnkF{;~5~HcQ8Jek5&<;4LTa3gq*YuS0y98(^nol(BigrG~o)K0!#$bceHpTw6w4dtxGh9txjK0p|G9>6n6f zt!E-t9T#Gm*?&TvMSmIW8~l$QdmUbU=7q^i3IsRg@vK(^>F4=||DNFt(>)0O=RQU;89ah^))f#! zIdmP8j?18m#Ke=*;O>kzMmjE9*g$+pTS3qreHbT@IjxruG5WM&o;UD9+W})sC_sf2 zBxO&jnE(s%`F^i2rB~A7K`3^|WU-Y|$w1LEw|U_V-z2UOCuo0sT=9~=4XA<2k_43% zmOL|Xc9rVDQ_$bQSDHGGCI<*}YO63VJA}d8MpFmC(Ayrk{dam`JiLP4)&LlIkpn+3ujRZIxyTGDb*#X9J`2`S+3k-`>1VrE$+}l zirTTY2M(7UcBE&=1d$F|g-}e&L%f)b{4ls?`o{~2OMRuKPvVNK52EhYz92!!2vE5( z$o$#Qz6{>V*T}hUeGAnb1#jVuVby!;| z9n9bCM=C;!3l#<7jc8B_IMsXa0)7ikY5J*Pvs`#bc%Qorv#vedJ4FihJDZUXS^>|4 zu-QZpmDs~7x5zDz%|ou`9Bl`hK=~P{&06Cs=D((jnHgTVA;B^VTDn+@=ql!BpYMdy zq1(|FJ{yz^@7^@g=OZ2|E+`11=e;vBG3Nu4TmAzt^mPf~_8L@G=~oJV8zlea<2 zi3MfaX*^7pns1INqKMaF3wPN9B2MkEJhbH26R|L${^ejK(D~sLjOlx3ZMoFyXkm7* z7R>nPIDg_l`Kj|@ImQsi(jvyB!;MRRr)297niHL=(rTvaa?ltz!c~ zKh2IwFgisr##N#|B{to~I>e}qQKm~@@~#(gwW~^*CCt1Yu@13}M-&w1m32IsA-9I; zP5s$2Nux@c%uzVf0xo8(enDpqi_XRy)LND5%oZXvtAz*brmr{?=ZkdI_A!PB(-E*N z39|g&|8Q|9Odhk4$)6CQ(Y2S6CjfCR-)$*3-Y{dtLP^pH9!>gnmoF{0G7@=8E#tf^ z=G}9;riR|xjIlW2A(I_BCYcNcoxOJ<(mh(iCRzfVi*5h3KjVuT8iV$CK)1 zn%N(w7M}L92`!@Qedd2{ThZY{Z92t@#g~A+x!%%#mlXosmM+xY> zrPTF5ZL>iQRd-FJ(^SuqT{d(Cww`n4N&|5DU%I6Uui$Eqj8B#jVep4?50x zvNQJ^(-khXr**6#U$gDXO0@>66Y^KcxY`HrxvaRs?@rhCL17PNOBauoB$kJI3s0~{ zvF?m+K-nyL)u8TqjyI9a+)=AeW2cF=_#Klnq09Uk?fI;cR&rQ7iNDKcd8|+AMhb|} zkP1r9ihqy6U)!I2B2{@hKwS42*JPKVNV1gC7W(Lc$8x_3CTK22Burwb*)fuASjtlR zAX59tnc@}nvy4~roJ7m27?bJ70J{u&$PD%Z-zph7xX;j|t+Eh*#z^-XfF)kE6aGTC z|2t_?f%7WpnKxHfv!XN~AH&;8e-r15p|@18NpGsYVJYtvcg`Dr6VPnEzS1PjxFqfj zUSX(3gZLXsQ@7lHJ~VqW7G4cf=Ligj_%QXorp&B;@Urj+o^fafJN=3wO#-^R1^rEu zuA4$-Fe@ZMkX$}$RDud$QK-=DKpZh6f^yB5uc4wvA6EV|M0H>Jx!-_vUitp%&?bM{ z5j3=)y|rI>zoSl}XhgPSm}CntGLKm}o2Gn3T9s?IY{Eo;#5bpHw6-P{4NnyuN>>06ivpU|xXz zl73LI=l3AK(lNC#jcm#+ewqxvX)lTJApy)n+yf4ek`+#`cn?*`#^6! z!-^=#2QGTzdlw|S>H|{<4Mvk&F`u!3vY25Q7Q?~40ou-p6w|dCsY;09v))q+Hi~qt z-s8uS-?WdZhJ6pg`Vo(uervpqsahL)ISh7okKc0b*ryT@n zO4A@49JRlXw{twZGvkAoh^6|Jt#h%}&Wvn?I*X%1~s*`D)pUl0+6T6`?(p7GADii(l-6?Att{wtyeg+i7{v7dnrM zKniGhN+~d6wvDV&LK9u)6| zDCJ3^Se>25OP7x zbGA77N+ihj$7??e^46e4sU+=+m?jhX^FLDQ<+2XbM{~mZIY(Zdoy|Z9^91=SA8V7= zn@(DhJdHS8%_#!bfxaW+DItk{O_lpWYjg~OH1n(0@iakVwcA3e$(I?KX|PYxX2%og z?qd%do>2>(f#!4WW=8X#ZwgZye-QvYHcmeA5(9$8EbUn{2j+&=uIvt zsW|66w9p7f20*seusrhjnA2(cE!dohg*g4r$*B5Oc=!xgtFa6im1o)Qp%qEC7D4-j z6?s&}*rLWuzY;H(%E*YADm2&?0OO(-;f<9lI`V6IH57tK*hKXl60g04O*A8MW7dC+ z&d`z#TO=X^whlH(iZ6daBqaEI3=>$H4(iKduDa^>nb48}kTw>$uMzpMIb7ni#va5z z5pG8yv~0vs4mMqyU4MrR!*7_B6}4kxaS2<;F2i@?T7G;Ud>lo+LaQc3C>a`zmpy_tag=0Vitk1IIZD!CilXZ#$p<%JO zxj2N2$Kx!U*xM1u-|`%6i*&cFlD5(}PyW8C4Id{B)`*nUE#o;hH7s-^p-oL**a6O0 z*p~nP1uYN1Om{rlu=JwtBBLN0bz1x)Ayh=Oa0>GG-7inGCIho%X7?~s?bG*F%QzVcp70V zTiWiDo-XOD1>6tZT7sbsyQOpi1>O;pYlNeXz-ey08L0T7cJeyC3Zn z(vl%tCMgo>3?Nj>I7wEvb zBKxf8yf~&iCP+ng@VUWttKB#(4=t22z#`@dfF2%??$JvW<`$lPP@!Fn32UjAzHe70 z&NWP$U%_djeO*w>lGwbZ;xg4>S+H@V%k}0knr!g|2WjH61EK7nqv61D=I%GcDFCsg z2oEQfPe<{DWm`zG8Hkt$SzH_#7Q7d><|MtU^=u9JmsI;lAhvqRs2Gw&g4U?caPRUy zXr?HIRDq(LI4{88z3=u*<+k;-&wZ<38{F{)WLX;i@iTk1A@dO^=~x%r(7%i2_tEs- zmbvqqKx}b?yeY-N*Cf}WY~*!bNDknTLuli@VqbO(j$6iR6wlHfmF|n!oN8VOHc38@ zkWhsp)sm+ETQe1@Bgme-x;LEAI;1HT4@8_u?N{W7g`|xa|Buh6XTML)39N<3maZWk zfvUOgvjM&C{^L;{YXAyhP$;zu){A6;V2_q9z4qr@AeVM7g6sT?3C-yjCb0mn>FtH!us zI+aqJwifdWxqGPh8P!hnv_RHh3?pMi|4zdgiY-ILZP*~~O-VYkgmD_3%D-NLcFc@4 z{*Lv;po})&@_6?OzqXOF`(K37zXi{~lo1mXGwc6RMlAoSjQ-VR_5V^v&1y1}hinKv zCu*-$FbvUmw}?r_2snuIQ3|@x^am$AiRAVB5W= zzJEk|f$FevU3Pu=zV7osK0t7PdcN!xeLgNIk-YATBED7JCa!Z!XYqSd)jI`1EqblS z2cKgh@EIqLm*E)6#((=8x~6`ZlfVIXN3OrMUKT@e`CWg!`ZF_tehHLoXf#t4)|{94 ztyC^RomsC`VwpG3=a5yncle z82TfE@nC_3@@TLJ1nTZS<{^TqIuJORU3wloN?Leeh$n+0Npu#L8b*l01%&Kr>G2!o zcof#Yn>2}Dj)!J4?w%#ucoS(o@<%ZPAKmFfS}Q|nKK1$UNYBb?I@-}*^)}#ReS`=5 z&Zglc=PuZ)rV%ilJwb9Bv)iu8qTgaKalr9*C_p zT`OVMP0CV;c9O z-+)53ca|aow%ADhHR*|(9GnQxv_%vyXrVHM$m5_CdKBnU?}m?0Dq?4YjFReW#}|IM zdI2D4BHrc_V2|g;!T@4)D}~QXJx&O9?)1A2WfQy~VV1Fk$|@LB<{H8taP}v7X-rFn z&9UtmMJIP2wT4oiF;huXbzS-{QO8C5BMPTSx^xZen2RY2z>2$QDr?&!mvIvU-X;yDMoslrQ# z#0V(5HLA4x_V;a?66fl%ay5>0Qx58+C`pEm@*d>U)@B9CbW7W1P7D+YAO_fW!7I_z zPbNMQYMLSvoRObXB7bH+Ya}_F>;;996N3(4w#-74?~ktcS_YMrGyWvNwqfqv1GI+(VESZtQ6$L4NpLhSTB~(Nym*>=y^^To<=wRnn8C6hMiS0R^%Hz&$S51 zxn$odFxgC06}l>f9zJCzY!<%Z24ij>7rt!-*Yo2Y%#LQ~`V|ff9B;7uhPis(QGeF{ zSvP+6u_q)Mbq*5f*uW8^koxYHLQdIfUC_7RBeY(4QZ3*DInk5Fwo?`V4<`!-Z_v^% z(^wWGM>yW^4WO%SB4+bpmN2S9y+GhB3QflDBiCH_Ol^4yC?L^(AD3DE)XSV=F?7sD zKDPYBNNK4b2@_)T{rrog>uU$K?GL(=0lDd_?8fZ6rs|pm{>+@TkWq^q+m0t$WcGUG z_1hzl*QMe7;%?O8o17`>pPQ^~KIQU8@5^ssZ{0nK|5pG0SMMkzBgg+$|JeVt{{71| z{BQN|e~!#C5->5avT*$019Hn@``O&G76sOsi2L!QZ50#sqNTN_)R)DJA?{_=O7jDP;XgXuEXt&f1GpXbz?-3DFl9LnERFxH$pN7^t-a^FhKX;+NiN46*;kLqPOY}Up?{=tTQ7(i{uY{30 zzM?Ciy9&fxrVZjbi--@+0RJF+88v0KU6UDH1n+Q)Gf zGFltdw6^J8k$ZTevrm&l-kMpLLzEu%ej3bF0yCs+VA)q13IHOwxwPuLf|+`rg`1+E zv9jX=eYw<#HgV}fq=*vKk+<}@^Ax+>@9W++$oIui8zRFtvxUo4t+|3qZ1Qt-`=z+I zdgGG3t`l-y%#`1o9PNj|50_UyIZWnbtSgL7fRv-LjvCE15BAY0{^-#$Sd@FDtvONe z)R2{4oMpNEv0axjUD;tWsI9q}*NJH6WlX@`2=rv|Jx3#l8IUzaT~v|w$kO4U|ZiQr86IMMYgcBp6|KSaSaTX!_jd- zK+frmt7E_r804R+3M|%~=@-Fhe;@UNcrf#~0o@n3wac2$mK-bfXyVF_BC2`|14nO+ zC)=oHC{Ju`_1T$`_3w~V1a+>2 zg%P)%^&>n7*Ur#v1IDG{691x`_z@ZMA0d`KBM0Fwtax& zrzVS=l*^)Gi=*nkjV|jXmg^{%FvEQbgCPw~3g%_PBeS~;I2eDJKmnommLldA-=#fmYtvr+7J6HzwRM2Yy7ik%MbGz)SY4S;N95 zkd<3P&IZk$F~uJm9ef#dMrRItFgT%(j?Yt2(bsa;?F-K_SbL0PuD>Ny3cDIH+$(dE z9mCb2XD41=D|3oL0#0cFTLR6ZQcV=lfA7vL8( zU^0k0>Q*>}45YUqkl=t54m=|ij$xx5welmvU$WX^nsGlC`9Br?VUyilHE15NytVaP zT5-9@4Q&zmXNKtQ0XMHi*uKp7c;D;wMx$-F^`~twv_503_SA8B?Fy~xJZS;Il$ASJ%Yrv6M<Qm!GYU)C5CGT9hxobYpQn1jyUw>cd zJvCdynhUMlcUt1_H|pi-BzT_}|9KkMUuQTi2d`r{L^r!{Lm^RB(Q;cpC+uv-CRVRx zg~*v=m{Y{C-ZEDBQGaLzKXu0 zvVAwdbG+weKd#nnW*KOWs-rg<8=#+kKH9uTe8%Y-XX$m3kgvuCI=9grhR+1Mgu2yu zN=qydk(MoV`F(O%7pZ>%t$B_jp?a)aXcvN9U$LSt_hlu9tK@{%F6I?2RTM_?f2iW~ zthVk~8UbCA8kn4%p8?=T8_s5|M`6&DV3A|t@Os)RgGl(kAJPv7Sh=vBEX5?n@Gx<> zIW_A6oh9EfPe+yb9?&aJU}pC4a|H;?1-4<|>&ji^?riB%$~QH<+A@oh5mI5}~oV3a+Jw1a})1?oXgB8>q^jXn+L2AJFclm)0+{MFcOA|a% zl-l0pqbw7gLk`LRVD2qrGYOh*u{F~g*31lRX8SSon%QgiV`gS%W@ct)W@ct)W@gI1 zU-IQ%BBnsWKc#P^y#DllFrbxV zCL#0suF!)49Y}2_tm+_QF76NypF$nSF~@&TYL-Qkzj#?Ax9lMmf;}uyHed6wK1shi`ckR$ z2HdM_Xgt`$j{^G_5RFa?8KJg%FOK-hpkgb0g|j7LrE-AxG@18TE2ir!)Qf?^9f2*v zlots=AlzS-H!Nhf;&t+q(%KIv!0~hUj2NP2&b(b z*H*E|WIt4gEc%_(T*^R1@HX)XD-=k-sn^v=B=(pL}0) zJE4_^reMX0(q5K??H&(|qvEKEd>0_El1QwKt6%`~Q7x&nJSM2SCQ@T>A7bslE#jM&)X0UY6#66GjB(aBuvGcsW-yDTBDs&EJ z*rwm{OjTdAPpu=}oD-pn8c_TzqRx8!krQnf#hkNvZM?~F9t!O&=oCfkS5${4TVv~{ zQF*DgSQ*yOg7O24%41?JO{V1tSUD0-qNR(`>`99Bj~4m)Qmna|qp(Ia4Qi8GxO?#= z(jqsGMAqK6VNUbI4&T0n7zBdl%(-8gbh@cDJ>J&0`U7BkV+$I7+}e#a89wrThv0EB zrS$NHfPl4_Ej{_57{w%d5+G_zK#ylW zD5QX|b17ntZ!Zn=W*?1#{q%0+;+kuJl;fef`R0I9s~Jnn=?iCc@%8R3-u4(o)$VOG z7F6f{m^BVn)ixnH#XHnl7<(WrvDWE0o6;bAwUlX>i=wk!;2E%>y53L#CETb~x0}YkuB_zZO{CtemNT1{P!yfeNzULzG)B#x)8$E;faMG(SHF z8%1BoU$6Lw(M)X1kuqW-za8W6vn}Ef^D~ixBM&jtLL%D%mma|`<|mp^6{PP~^NoZo zxwz#oV5f@VC6CJjD%MVevtnbd)pTjwW5bOK;Dlo0TF17u^<_<$z;}3`#nTLY0=tFcfOrhn?k;d|o zX2Un7Z^aHYSdsR;ki6zeawXH_NOKHqitB`Pj_s7kzW71Y7=JCGb^^oL%nb$=r%Yif zk(Z8a3o|Gq+U5ViHH3GN0LFzY!$`?`;!w75#^6J2^u*#Z3Av zfkcnZ7EqGF96%v7HDIt4^SajsTpvt%u6@x(J(9h&7Mn7{VpGR$wpiF#Q1&PE3%A8_ zkL{Ad1Zq2CvGIW}d1Zs{uB=btOYwIiw3MEVy#{yd>E^%e9X;$`UNp?~`u@>R-cNd{ z%>BXcC`W{%Ml3{2sn9moT#Iv$xYkE5W2smujs8EXlE)|PQj<^)ROzDE$0u#UrGCvB zv!%Kmb$#nQvrfMEM&HT=Q-lp1spTUuO4M7;oKX_qcV zhY>?R$b~oy?O^0U;W%iE4^1Phm`;>8@<8^{R0SYEt>k;EIiF7o=&J>2wo|U;)9E z%loI1RWZZPi*i;suiROF9yKahO4O9JAk;F!hYQlWZKqhvNmB_Cy%ltnmA!>IXe9wt zKOr+Ep9glW#~j=QbXgb!?a$6!3ls4;%of-VU$tiiwv%wR1x#(PbleO$zN&b~HFT&e z$LPoKZar=NtRqw_D^EEffU;|0E+1T`z4_ejASQ)>c=QT2l~VofI27c^Jea6xt1m*a zi^F(%u8*JZ?77(?qvJnBzIgC?C8`h=4GGen7Y;xS+$K+SQ*e!dF$9Yiv)B3$xq(u4 zdLUAaUAMvo$K}7aVK9fA`MV21oqh{J4OCgOb*#IsNHnS4CLwdH**Jr!Dc2PF6eR6k zkXGcuB;3e^#~ZL28sy{*?v==~mnv-$+A)x^?C;n`zNmElP{gCz+&0sj( zump9+mQ{iHj=#lz>>Ax){6SSqlS*!C`MGizCQ(KGD+sn?G(oZw*W1J3QwXJUC_ZiP z2>uWa$6u|hYIA&mi(R?<-fjJ&iF{N4uH!ALLzaiSX>kdEYc?QU{P5#QxmS#V$nHGFEHh&38#8s17xd=W}qA_>AsJBNmbeKcz zq#qW_5AE&aN4_QO3<@sL(@9?g%Yr{s*if5{_Qdp84bo3F#(I#KTOd69bI+35`;d8* zPPpD@9;M~*H=43ed`ks~v*p#2=9=7$JcBAfHL@)ujY=7rBj+PORk0m8;2B_?nZXz{ z6fE`9a+(mDB89eP_#2`aHE<8l_K&+$2-MUq22e}z%o~K3f#krk;V?=fAYkZ+4d!j- z%D7x}Y316V6)(3S@qzofBAjb&4yE^@K$Q?i`&Ti`ett&$$!}t>~)hhe!`khw)KbGAx{Kcmpm(2PYq` z^dRiPj7~~>$^)n6Ul{VO$eOEk>RBQCjv$TLPy7j-@e&HD#UxV}vxJ}USqMXlU4@e) zH39KfJu;Fd^FGZQ;as14M@13G)$g3hW^2vhZcmN|HfV5{6Ips&2u!bo%*}3GUEE?{ zp|p;872CR)^_FETuj9f760H&e_@_H_n81727_d{Ul(2*wc}-S~`Vn!7cq_EN09FJ2Fo}#i9BT4k_=1Q?ro3uN4OVPW?*b7P3Tqkl3m_~9g7H!Ryo5orR8LyDJ zOlLHktw63z%Su)WM@M@NJ&~e}rlBP5m$Ev0&MD(NHUM=qrxrst+;OgE{ zi$qURXydxFO9wUEn+J}HORC_&SoYzPQF`5(vZ1T;qEXP&7fl^G10uk=x0D(0h82zdvHdd z$_A$J-NT)t6h3B;U_9V`iHbqh8EH|k!@8seneY|58D`r_i7zTu>Gb44!~_b0wEw0M z4B78#_-pF8?_&`vQ565dt6m8tq(al-nrt}o36di#)(Hj`u8g5%H3N=Ej~gEhA1Wch zdtso<(JkklaQH^QTDxOS#NglHWDaW_R{QC!1}tqeED&Ax)QEYWr}o1YtGSkIMlwsx zOSqnqP}CB$-+jGmA!e;S+8s2vs#dlJyX)P56;1o4(B$o8ry*Dks>Mmq61+m0MZChd z4`7pFAiBu@ILJ>J^#7a`JP@EECxxmtsR3s^dZ`}4kMl;e1!X7sMF8#X=Pm4uue&t! zcQ<;jsHO*Vyg!CohgdFw7mTfy;otA|h;MNX)1BMG>dULZ-A*66X||rrA+?Xn&z@w& zOi`F{0={C=O3;1lX8fBq-JcBuBQW~{ki9xR89orcS4srnX-}A|bqT5#y`4iGBm#ea zK55`y>iTmJ26Ff$6-@tXW{-N=AKH@{@Z$52QjYULxn%~~?iO`Ai4mJJd!p0lu zzVYmuWoKwFI(nLn0u_v-yL+!{9nI6ACzPm{@+#+&yMxU12L37i=aKxSa(RBs>pclI z-Ho-X2uN_=?Doos;-x~_4y(xhR-EID&vP;!>qTXXYvek&L6|}E(xu3UD z$1WiNn||M0p8+zQQI=QBd@E%iNt;XJNbVoaO%=p8uvoma;O}-9`9#Dq%AZ`)Mw=2a zWW!04Rw}Azh?4Of^bXF!is4j=*d71KdtaJfs+y>HH|Er^#`dLhxa#)LZ*{&XwX{c7(2p#7~F zfnq>_^U&c>!EG%T?A>TTOuzO0@p8-e{oZ}C@>>4Pr~4V0(`{PXtu!0Jt6W|Q`K5m%qSF`hqH5e# zh=KuWd}uW@!RSqpId#R^aHa5Vq2lDUZ1G*_7~EDD`ucKw{VjN=`&6@V-u>~OO-4Ys zlgoKB9vU{|quLxifjqZ!egpqzQtw{rUY@Re(*pQ)j}WfEX4})7YxqfbVVCG)aP)&| z@&`Z)k&M(Iq`L7S*x=#X-KLfw6W@kDa)t1gdSCTpdCK$L>)~!;{uNw@=nJ7=_861u z;4VAO>u~X!?EU@htck_Yh%IvA?Og;zJoJP7?&}O5rqGp6=Cl;n$VP=^Q~b~tW+}F7 z1S(cL(%aKs;OeOOYUR;H8}go0_d$2!xByZsyIy=M3UHERC()`cZapl@VA{9o(`Smp zb-og2C0c{QnrkIYy3UKTz^hD|An0EwB%UDQpy2t(Q(ih&{f8xK$)Y+3JRySpM2kZK zM4@wrmRmTaj|FaQc?~Z01NWXDlY`U$uLRcP?-@xYDhErR+bBCEIHW`xiW=rSl25PMPp^lzn841NC~%a9j5{u2PYxNxKYE(H5TZ%*BkziPaI> z=zKT(C#9z^i?qzl{OK*y;Xpg7gV0c0wN=o?^G(}%Tc|y;40MvrKvxwH3$8~EGQ9ca z_4C2GTjYyI`RGAb=RuF zDTox0hkEv7RHH(5m~Nv*Fg~~4RbZJi^#W2n!P^&as(7g~B?~qu>d<#_=WJ?HQqq~~ zQOJQ`?2V&_@poIn290w(79WVh$_BM>T zuJO^(pQ{D^VX{?q^iO?4cI)(F)-a;UiQ@dCb+~#2**NcWdhHi+P~XbYJYUv#-mivl z1E1O%Wh?*uXzh9}Wo8BsvkB@Mdk=+aA$#4_z3h~@mClwI+ZcB3 z>sMFXE-K|D$W`Z5O#^7vr6|h@s+DBs#C+e@;S6dXKAX%?5&FWLdK^qT{sNdJuz_Iu zJaSF&&$}EG2+xO@=is1kb{P{svtm+4g9QrWj!Yo3OnyMx1UmVF9a=?XE>a4XcD7w= zC#;?uDkENnqpVkKuil04LVd^ahU|wCK zcfUM@HX214%L&~N>h0=QTgP2T#Dh_+BwHwa*^-=+;)eXDKC9=nymr{^h^`~4c)e8jCEE1&&6#j=h?S{NGl|*NtE` z+yu(|+EmbI_12-*RXzKKtC`75>G~P*ai6rab;X1hD^^LmrecZ$ANaXD?ou=CNlFw# z=y{PLltIBpXz|7SrGar@FL>R!-H4#mAYK>=30246o=wmr6dO0Uxe}pWl^DiB5eOTw zF_x$_sS-X%Zb$OOqN1)z8RXRRDU$`6wF7`-D1;9ivPm3wwWJc&!`8v&9oq5@`*wV6 zK~Q`<&9HqG-&Z6U9@aP{m82UO$DL~-;Atf()>?YGg7;w{6pP~Z^q~hud&_&-_wcXz z*yZTo&BUN2e<8Hj&ic*sZZD7R2`%4uB$H4sALlilDe?r6H{<3N;NAd8zZn>eiHf;+ ze20cinh86ZU=wqC$ZD>IU!9GUvXe3sHrgZ+vw)EW+c9}`Z9As$Vp8Zj(>s&6k#Z83 zmjb=BEYna3)1bz3wM=clZ4r-~vt~Ol+J4A61?UU?3L*SYzN*T{o>uAf?9TR9*Y8$Z zA>-%fj+jz@PDm4w4sKGClqd<1$L6TCQ}n}xofM*J2Tgt7adA$wr+0E`qv*R0of5WUd8Fw7M>UN^TBkNbl)F*wPBUxs8@SS zGl*pCO(HajC}hDkJ}^hwwl?mq@f%oI#3|KzjC3Qp#&@>R&-=C$fjf-;{Vz;MkF)6- z{0{VT86eiX!#+3C7gT5-#V6I>VtL&~T8P|80*Kr_4jxo9r<9}DUui8er2}SI%5{&E zpf_QRWIyy#&17gv?8uZ$ToQlAg&^y4^j@kGsq8!oTagP-mD{vqLly(8_a>=;m3qb| z0X`u=3>55OVI0!GqIp)b3C$!d1sy$A2PUd4Qex zka0SM8!}-*W|D}CmEr_*SBX|XP#-5yBx5p&Xx&7tmjFPb#p9m3Q*+(9que@5X!U)yYUIN7dUb7G`)zQqy%Egs9 z|9G3nG#~{|-ZT3dX}MS{6y|*ud3MjSu)7Nsaky> z>)jUNmF1}(yAYhiD9OjVh1?^>=W`J=t0PH#M`N=EAw&QuzWvCUN3MPtXe)U`R z>w;-bJ=&1&s9qAzNn3RdS19K%%QqBN)1Gvg6Y3Cn z+lj7fTm60ZwsCXc$V7qt%27B!PuI%d`nbrJ{ixImpMAz0;nkRTX#iSa)=6m~sGh|9 z148i2%1=i;wmjB7hCS+2UpMbbB9XgS+AHfdt~K)5m&KPcQ@u68ispt&OGnmvu25(# zg=_6aT@EZ))rwC0=?x2NIu2GHKTCNU*X`+fJc^ktstV0Pe6;uTwRBdvybTIDykkuN zoNzKUaw6E40-JNu@F6fNuzx$$14&85owaQdmHi+@r5F{tV~cH!MnS*x)(l~>6WLJAuHMb!wDo&r51g_!ZxI!cWe+ty zGx3)AX!tDzUf%OGV?rb_b$)lK8r5Q)@L@kOs`%0mMAWmC^n9$mek9{xqumsbkeJ#a zIPH_&iq0nej79KxgP>g}RiGzDtNIA~otU-_AqO$V^B${Lu_EoxIHOGKGOp8RwLk?dvNB;qjH z-mQ?68`!kT$^>U|dV~{alT%L@>hI|@myjABPifJ4jy2USbj)Ng=Byv|B&r=QlR>V{ z*{|om#vBt)w77?Mbg~)zY${7V6@yi9KX!R*jke8$p$M?en>@KbM^vXXEw74Yj;qV) zXa0EkZgc5Sk4ode;ty%Rq7NCng|#`eCq-UaaX&=A6K4y18P^O^+lFl74BI>KR3@Gr zqbSBia$NdO3q%k3e;H)Cf1uqVeU>@sdH7{w4r|`WagCC2931Cuy*wH??DB?wCtZc2 z?xD}_D457m*TP)nF6E%>dfhf3s}lOoN+A6#DeN)guY^#j!a^?8WVgQ~Eqg2>8zkp} zKr9VZ$yyU6RRIjElY^Pa1?OJ6dTKeY z)m->pi^U%b(p*ehP!o_dr=v^-U(=830=tAkY_ChCbLwR8=h``HV$_Xq2+9f**iut7 zQt(jJQ20jVy4w|>kgH&ZWgPs8|W z7B7!BWv|ltH{&)*rb>|Dcwuc@Qk6YWK&h*PjebdFQ{IuSYy+!0^K&+qRkM|}{+bQi z$Ku%lwTn|GoE!47~lZml|dmNp|{_-W6H|EQ+st#A%1)_bcYX zpKl={1odFL-5*~8&;^;?;&7%IA07RcyI(!#FJ7rKPMS|e+<&_Sy+q`TT|m)yWmY)N zl&Z_(7iG)oP2yOi&9-K%X10pwPnXWW{t^^h&vp|nVBSS!FdBReu$aBAbo742y+$YT zBuU!t+g__WE_s|oXk=IhUIN$SZ#izuQPh#6C_Z|-=>F9HIMeyk8to_aF?b>rwl76% z;K_F&26{$TeJ-0s#Nz7#lqC`BaN!jbe4K{*a1%K2;qJwPWrq5gp!rbX#%J*#^k^#h zjWluLsACb>2m8!0`_s(78A%Xjhx*i6g1YhH&gI~LrO>A;3SJRn&ww6)S%1V{fLXV`K8(GoXCDQj~t)9ASZ(hM9tmh2z*1 z6&cltXqmOe#vsqtYHQ+PW73y;-ci^?JG&@^5>KNUldPSl;=psCl=nSJsB@4mN?sg9 zPH1beu$tOTHI0Rxf{mSNhwzV;hO6qY#d?FO!G26ai>-;C*$>!gY50CXvy^Ov6hf4R zL8tVQ7LM2F%D{`N!_V@fASVP44XC1`AoAfq!No;G)E!$|?M{dA1F+Tsb*?zWP43^o zt%a-G+}_;L*vWi`+m7AR%XM`f{``1`8`Dxz%*jYnxQNKUK8x_AQCk@Vcn-Du_?fSw zTmj6rmw}a}+(<=NeU$Xh_CHNgF8P;{5mrw?>!3#D^JDL7wlb(w9MN_GI*Z0Wp zgC>b<#?mdLnV$86C$rq*$QUN7M@EoCyF&TTPV_IYD>F*tJ9RgZh!A-iM6}PvH1F=k zZypI@(=IhLLkTl3bvt3Rb`*(EvaP8Z9Giq{PS6 zZx+vf-28@D4NdfzE&0$@Cq*s`!`1XfE$mMNi;wgIuRJB3;A6}gPq93wtb{hTw0-D` zUFZNSTmp^S$=U`D(R!Ao^yB+)!)+E=Tw<%8sqVX9P>Bf|J=sA_c;3(koL?j{moEUh z3&7pGsMq)9_IxD)-fKw5%P+4z5{qw>OHmEJyp3RZ0^~&~UyaOrcz_fL*TsTVA} z)70^4q-)b}Q@gwMm$~`mZ1Tp5MCB0296=;*h!@UXE(Gl#rm9G^0EfKqffty!M5uW@ zM5sBuSHw`nUrwn9y)6SjaAcqSIfZrzF2WH$!Hn@+UVfkvh*3d@AP%hV=FUPrJiA{% zZ+Aa`MPD61ZuevJ8)46iUvZ^fz1)?F47(58e%W3Cu6SgIqON&lW-=I#Gx966jx%T( zcesexgfGea z9A0p;3da?P(j}mwd(776HE;g_gyzEeYIb@h|SX_s$sa6oitHQ!3Q=kw;*-jo(+Fw!?kLl8VLYF2%_%u)!Xm zI;&ZQ;{i2$_;%&VqE;v)IGL51A^NW#Hp>cr9T%^9YfD@Rb@({w-dMv#&pOcu5Y7sQ zlp_sHK-2_(eGtC`S8NL$46e@^%VQe+#@#m>)PUS)AC@)~vf>&Q_AwJ243Xr*=H&B@ z_Y=rdyzKsH`NsH}@x}9*2fPYyh<-rralz>;-eZV9zP+u-E9cHSa(&fvw^zkd#~FGK zm{+bXZmFZ7X{U(bbYF7H9DGrI_RSZS*HW-=vH7dg!dKeP!3_-(3t>b^NSYZbwnt?7P`jvgslH6|85i%w06;;Wnv+uWoBR?WMg0_ z1TZsc(Th9iTA1n!SQ%Rw5;DNj3)t%$S~>iu3zq&rBmJlG9|2f;Azd3WLsMgu|D#jU z!O&8f5b&?#Kg$0x02(q8GX4h+sQ~*A+xXv%8%zxU3qX>UiS7S|Fi>kj+G?Ev31X*H zrq{3yniPSO67nZl6doAx0m{+shgzN%NF(XUSYI>!Hg^+5o7j!;Gy?%e(cPx4H|`tR zH(T^2CC$+s;wJ9Z{_qB*J;JirNJUDOb@D?&_qqnNq3ZS z;VrJl7g`5jk&bXSE#>7(;QK;@u2qov$dX7c<9WYsd|>YTb-meO(tY9Q>O}3r&|F@L zQ+i6^tItIWUY&8%NTJaxiAvfzt=(iA`vJxgvTNb0>10wT#2vM}c8qhyGS9Q-avJ;6 zc@|WaXJp0)KF6!d$is4*Ot%UBC;oBWgZqW`=`$d|aJygsUm0H5y##!NsIPli zUQ7Q_m-Vj1f0JC0y!($#^~jAR(LX^QE5Yu0>^I2_k&|i$q1^5uwG#}jVr?CyH|op6 z?m3=#f_v0A2(R4jT}{F6e%>grU{Bmngm3!cSNDwB*=t7cHo9}dPPS)hyR#}lAWXBe_a*SwKx3F)ck)m4pTdO2O$$(yZ=mkDc%30&c*>tuVQN8 zU}CSq_Frc5A5;1Nbi)3Bl>6`T{(md4^}n0^|5%3z8UHISGAzB4^7}{b-GgpQNt-ybpFn=tM-BK-E2(Fv)$_U-pqdaV0yuwyVv zt;M+P3G2aEc3UqsSd4&7joy?xVj`xLED2jui9~p#WlUasy5V|3AhHrTJFfUg}Tzu*ml=8FHE1H z1-C}<{oFq$nlmkX{|HM6r$?e&!U%_ zD_by2#UeK^-{Y=J-=1r@R!MH$T);e*okzTDzxBT?FKY5ZR>l!Xt~3r)-wLcD4U?xE zk=-{NysNMApHRNH&`?6&sTGI|T)nkW$t3Eg_pTj0na3OouaPzaGR8I?FJ8hfzv#H5 zF_m$JOR<=BsMmw@%~vT_JuOfs>iR=M4=TGgT_I(+uDo##c`w|JH<>R0KWidsPQNM7 z(i$1r##j8Q&(Qc5URC*72ujbP%|+d+w`jlIrr)G}T@`0L1aWosMX`+sW>F}HoZji> zo^a*qxIyu#qhGk_ygX_rhuI;VA}-NIzbIIC^x!Y?dKy=(aL2Id_T5Z;o=9g&B%r=v zu6c-&DQ)fVCo!HkHY%Pi1RHA$c+O?1oORjMdx0D6W8XN+-#FV6hi#mE=WloUvYmdc zd~XZ+vX;Qjx~@Wf&+)f{?9XNxjF0E|r;D&6?e9Ff?pWe3t7$0uP^--k_haBA^;29T zDior3`>p3;iA|{v0u>bO8Mk?L`Oi$(T%}-OR)srPWM+d%1CnTF{dC$Y6xpBew6?|< z+RwMauH}RqkDP${VQiZtd)e1j(GA9(H_^>ng5l>@eTe(j;|*J$eN6c&7cz4JYv&>O z6F%9N{h=kq*AA(b0buJJg7d}%wld#Eltzm8<8w^jv^N4%gX`n|)ynWvm8tFU@AWjv ze=6OQxt{g`2T^EFTWQO!`)*53Lk`2#YVT<{o3>!*YWKFz8!NN*N1|6Pp@mhN$5H94 zYt)FX`{+$~W9x5`A5ug-sdWQE1Ak^aUGLEu8A;yel1$MYSaFbcHS-j~nX!H)$`ys2 z6#-M`8fCh6P7Lo%G&9GpnC;^8WTk2CZ1}f}uW0f#%38%YQOyJ}PBTU@D40$IW+E!m zrd$~qS&g5thQ7i~2W^Uh4D)|v9GtCI&uCPBkVfJvG|Gh}7#_N}wXtYsQ#qymsg0S5 z|D&sLJ#o53=qrw2fJ)Xo2&uR{7?8zS#O@SkXtO~X#KioXKsmSCAz$MlO$zr%8655{ zVLVLKpGC=mMM*s9p2;ym3Jt-WjP+hx^6MrLQmu)0kbBHDzPyjBBrWSN+9&i;N)ZoH}+3NOcZo8nn)@+5zy2l zXwyOmS=rEl*h!KW@EU~>yvB-SsRbZcX@MsR@qB<;+8^RdVxB6jP(9^owKB3-@gioE z0(fK+JS0XEQ|bJ-b#`P5)fv>El_@hYkx74g=TJl>leuroz(82+i4_+}DdtV74N++g z$kUx*#9<*s6GNIzh&xaz29r5@e78K;fSW8HC2FCXn-LiOQqNJUy!@MiP?-F9BC(@T)z)<;xFP>`pKsVp(C` zq-z6N3@lAugWh1qCor@a0n#y(%%NFL6#^i% zl()gDp^B6W8p1K~Io~pXIYRS)1eitKDG}DmEUo>U$7?Jp5_1iMHeFI@7~@Enh}Zbf z493KgG3OCgF&PCXj~P1_LL=zdaaVuUgI%>KfozkM5q=sT3E!zzyg5V*LY*{ee=Ta;vn|0+d3Cw&sG>adPW}OF90=u zPmcyOGWdNs*k7KJ4IeLjKrlrA$81!PC{(@} z84I!?5t6*OfrTs!cLObckC3hA&l?vO01`ILA7^lI;_#dic>%)A5wbm`+{`;03k@3= z)rY|SS{D{n+}IigE}{I`SR{goh-d`x{oRq06S&;py`GF1-NVGCv0X znC=dzIm>`K3`w{Z9z}a1y@e|tRK|kjDOe|tH8I7bnIfkVzhV(`eh+-ARM9-S2q(~2 zt-tj?pwuV^Gb>JBST2Qn@h3jBq=hmB>N8!x2T`PG5u7Ppe5hP_i@I3%Y-bSM6{`qx zNF8{b1P2G;1H*wix>?ChVtT@X*g{~-a6p_hxKVxS9|u%&ja!F8FLHc7d6)ZT(5Id8WCa*niKh7aXWS=TJs+TJhIcfy(10FEAPq z+80c(^%7!;%9{b3eYUo{3Wq)Je_fd8>%6CO9G6*Mb^7q-pn}aj;ydL*wS8Dr>zc{D zH2pKln7N{7&LXZbWe|M52ibze%ej8?#iDl>To8IGm;s&nwzLufty*?cXHm} zI6M$N*^Z_R-E{1 zm*82VdMFew-hW$4)~?TtCYq?OaWa`<$r%|;Pc1m*p}ExLtaik5WrMBOK-@_q*|rsJ z4ynGg>Jl3l`KyaYm)hMs%|&81>uQWuT*%^xF za=LgNQ*k_a8uwv8_4ZDCi0!~7?40Bwe+8_DLP0sNEt)kxCMT`UXY^Zk9n7NN{(Wkz z6P_=KzNq`{G8ge7fzlNGM8iyvK#&wV8*G17_RV%^(jqGmSy+Q4YM!o` z2Q||+nG1~(I{|Bqtz<&P5T0fNoFkxl!-Sz+r&E>Eyn+czDGPUA*wwzQN;vaxn)+GA!f1qhGhm@`Dt;jU$W0;Wqd`vH z_MbH`Qds~`9k<}i<|0#yGGcSF=*0_u70&@%VJ)SUH_H*o=!44+c%rV|SdPwzJ(N?q z>018_b(%7C2mrq02})`80r38;oH0^3F7`7&7zDcLTqRmxXOC*&iso79hg zCCfVm?GxF!7gbp)&E1?GIo3MF;u3|5l-yA_P!=)o4`$zQ?dKX(>ysz z3)5`$2kfr<4a61KRYOjMSAI{CWiA&viX#Q86*>4j(j?W z4QT-d<;uFZme0D5S%&nYJ+xpNLB%YAsM#1ayak@y)cxr+JzWOl1`CcFR zLTku+(63?f=%j@$a9D&~60VRZ9R+RvIk;2ARf&f!5ry-Mh5f+`-&4qkn4^6E8)5Gl zBv}}x>vq|;yKLKCUAAr8wv8^kD$BNQ+qP}<*35|$cP7rZM^@#T(;^*(FA zPt?EPulp^?Y zmt~R|*NIjVtda#2cU@EvHM1hixZa4 zc4Jhk%&BzN{pV?_{aV3%uBL*VTe}17s52$WnTU1gVX^MMLg$GuyfSq1no0~$O2w`! zu8Pyq!zrGu*z54ICHuQ-KJ99}EA~yGql|#1`_AL)=amV+SmvP*qOJ;mNn5)=dCt;V&CPLTH3|Ad(#!XA64jf;A$-5BscyLHX3ey&ZuqjBrYGS;lG|jLf_h&4 zyy~9h1I(0+Zg_pdC3VvG(y7!_(%7xarmDuplXge@K?i_4X#l3OeL&sWwbaFR|H3Kd z1$hk(4cklKHI3tSrO)E%!Zqy$re%EK*g0+Ny3MqHd;rimPBNvD5)Keb5$7@0CX?Y> z30G@IX^v?MZ1H{a5bY?M1XOP!>CSK?PitO>(XVk+J^N+9Zz1uAZ_O&W0oJ$TQq(cJ z<>-PI)%lGSVvMv|6_&W0T>y@^5rJT$vz+ODnTjzViV=|qyhq_zO zh&nHZx9Rqz^UF#T&X#$qlvNESzcZNMY?Duq2QpSHEkC~@VwSYGJ@?qzCK`KvoqMX= zclk|s)5utJ6F$ZbyW z?WSE#$gj%4o0WXQF++&mSwgpiU6@2sE4LTm7f+ln^ZxDCn`Sm#K(H;3Q`{XK4t^Wt zR}oH^O}{EaBZY1!Vpkn{msNj?)k_|nZq07B)k_DQuX+Em)k_83u+@tcjMrNw-dM3U z$J-9$VF?@ppI!9b4x`(R$2SPzOb)-L=oyq}=KNa;V#BsyccRam?V}Y=)ar#9hp)63 zz}8ECbt%V}+uQlvK=tg>!&`Y{Z}hhBc*BUpXVJgO_90HaVcajuw^86#fWx-|>RZv9 z1?g~1^AQK<>SdPX@Iy5W`gHeC2N)?f(^Zh&yM_}5E1wnJ7$+z9YJ zwrM(^d8NlZ*?TuK7Qz;16$D?OK+DcBo(*Rgj*v|8i?oAZjc)__7ab`Y#uc4=wH;Mh6}!M3dW zAKA1_1+T-|@pwu)MneK2cAr^W*t$eon?SbA`lH|=()B#hr0gly^d|i|A%Z#G`f(4e z8LUQDW7QGftyh-kiZ3Ds)Euo2yl-n)EAxh}fcHSg7;aqFDNC z;JEEfL*dr@C&!)^5p|YJf->|qiD6e6IAC(sF>7+WZ4&1AA-soww}5z9zu@8M+@Gl& zvRdDql}{<_Y(lGQua;;ndhThp)FF9Twe*FkYHt;FSisYDSE#pkz|pO*~S)zqS~ zY0c$YLH3d2-PFZ^9~vM36$R;72#K^dLcob+?1uo6TQl(MO zvQ`6~t6CWhj^oChY1l6Ts%hRI!B(=|^Do2a!H?CiTu%^h>YUBL8Y>m9E1&OjhTA*k zi|wQ4IK!XRcj=Sc5To0J=}%5E5s1#I}i4!!q1ix01jefhBE8keTrwE z)dwrngw27gs;9^0d8i= zqid<5@w_sw76j+Ta4kvd>4~e7!JoH(AiKX44AyGvx_+I9S{MIMhyTC5k^l9W|9@E2 z|8&~_BZp%AZy1XChphge*yTTeV+#KbyZmSQ_J2FX|FfZ%>HpqP%gXlOvCCoyoSKqo zGJ{s}+16DTOG?+~%pVYG*ZB|EdGA7?SIZWv2I(*)G*kviim(?5;Pevlo&ii@6!D>1 zj`WiYlGRjxO~a@(DG?X43@MZN*-0Z4wv36fDU-Skaoo*SsV#9-w{jcy2(kok!1ZVL zv1eCE*R#@MsbaBA7MJr`HN+d6OP(1^5Tt@ih2=FIhau8uM>JxpiWPQ^Zu)yC3-mw2 zpncURm&)-c?;G-<5nZIYJ8et$Y8Lvvqu&L^>Nbm&XI9rM99wKCxujg!@(mFpJUsT* z$suUiGP;d6J5xmm^mMa!5QU|h>-Bk`q3i6ILM8UJ(%ZFFpHo{FlfZxb0rNH9-tTQw zecxmRgbS#lu`;KZrvxki9LSL@s!dNjy|X%n$9+@;`au%Ab>}&9d@oR>1>j%|`);u- zWy0n}BN@R*%_5?ihsjAa;^P%7O4-_pC)56;r#36$+~L^0<1WfeS3rMuVlRHK&cRo> zkO}7V`=h^mvOD_fsF{#?t%A??#jcP7e$#*Ez?8=6le6~VTbs^lcbW15n=2+}E4Be; zQxGt{iRg;{iOO64H*_X&`|lIlgB0jmD108o7ulAD6G7oUDDC%KarBUl$iKPx>74H3 zh5jk9#IGl-K)TQab3aNAtbnR(QEqz5K%{JivLv~Mil0F1oHmu4fJHjK+WXCB~9 zGx|YWLD?RKhNz(s{&6|-v)1sFpL9w#kG26r=ly1#>>DRs_4`M+5jnT|uWdHOoHILw zel>E1;+j4uWue7dF?{W}dbF$|&leuH8>aKDEq90Pt5@vAU*!&@7{UT2c2>3pdX1JG zn=k8oo662YG7fe*?Vqfirm(J0S4Txdfv3L2F683zptZi9iFq!|9A48PQ=Vxc?2SU8 zc<~0e*KcES>Q4r5;wt(cQ&z7YJ`DG|xzKw-@Q`mxDp5v90x8-XeXDwauP47 z_0yT0-hA2aSre7Sbr7FLjH8UHQZ`Oj*qoxAY_42W{WGYMsvq>u#n~JR=Bbd1RhW@d zvun^9I*W=b>5mH7{VH89s$N3+ucJ~t;bdm43aRF0Uy`L&qfA=I(`A zcPFFJn)#N#0x!?UpOF*jLyq#loSJ+R1+3Swty#*8gc$i6?Kc{njmwcihyX&)%YI*h z2Ck_{z$WHAe)z1Bn6CgVtlTX;0z~FhkKMZ6d)jF3p-lS$E*}ye?}nx{Y1A3Ec@=X4 z|3(%r^o2RJxOI6Bi^6J8-mEr`N-P_wxtTfMW4&OZg45cpR z$jmlhdO^F8O?Tw{0&bAgRM%2=NX7X%PlQ#HM3cfs2C}g->;T%myj*Sc>1?;Di~%Mp z*->DhdW4=>F zf~5~X$IsD)(>tUAi|Z|^q-RmBsH}ecGCDS@sD=_J7uVC-R2lSNugAtdlt&)`D7m9mEGSuQ<>(2`wc2<*mSq}Z<02Jt-_cvZ5gtW`D9;3+_cQ~!kC?qup%ea~9(94j{R$2sH59xE2bU@M)2w=RFVe_r z*kMbxj${k)0l{p~@fxMe4@m=j92&;5ynpar{vJIV2b@47nm!8Sr*ubvnHz#+07+`V z38?-oPb6RIBBbiLEO6vA7TyqS=&XG3CCcf|$pBT?ZnI36!buq3Tgh-|C>l|G)seuov^aEAv6?FojWZ{u>;;2*j#^YthpIbiP>cg< z$=TsBFjB&&U0!qo=Y%A;Q>s@gWzC&!_PZeG=-lw8Pxu_|r>o(k#~Ady@F(HEAk!Nu zdu1wDdtGJgu0D1*s{fYSZ8VwBn_juOC6+!>^ZxNb$yd9CWYbUUVviI$c%*x9yPRbV zF31W@D-uW z`<{2O&aO>?2ex9$3OvjKLPI1yV)3NHXGtQ3_wgbM6FI4(lgE>WCQ}mw6oZ(7@@wmH zGINw%d5iwo=FVWzzY#nC0`bnJ$rVl?8|dE9S+=HLTdeL_n_I8$%%5|U3qSD}lfQk&W`TpLEix+Bdf_U~U7P(CuIs^Jd_UCHoeS4MyZE?Qo-aX&b* zq6~Pd#D@+6h*C??mnf>!+OPob02Ch(4+(XMS$N?3`{%9a*A<-BD<2)UuRz@p&aYt- zHMrs$Ab44)oAoa21G}d_PIsQ`QjJtzM&b%bY$@Z5Asf=SSzHdiK(o;s@F5D2>Zi)v54yV!hKYXHQud(IdLlcdbEo`i8!ZpU#iG5*SxzfN-d*!(Wx zZhYTh5RBVqe`D=|2LgP;wE=4X!)qJEAQeLReGsM9GeaA|(~0Kz7{4w@hD1i{HF$au%zGtH1ypuPHL@73Hhxsn@)J)s} zHgA%l)^>P6C)$j`EP4S||6>BJMG(i736Usm-)ZI@<1W*-ah?4APWw__6^+SaWa^#_ zb?)@%!KHHx-tNmX_9_RLG?Jw0sxabj)Fz~|F9#GQ-$%18NsToqIn)Hj5EX)`2xRwM zEJ7&CFta#qQ0?>I2t4$5m4AX%mcZy$=FZ&NwSv%<-K=5Pb{?B1 zVhv&NjtXx$Gx<8_xmRF99bQ*{F^Q9{I;{?zO6C47p$XdRi~DOu9W?qElNOhH zAUTSw-01JD$(Cm5zIow2H8pj=N~ndu#_b2mX@4?_MW415+zAMYsD?>0Gaa~P7Fv+{ z6-Ts6{-d%V{kBla7FTg}bf$Bj?Ky&1Dk3obOjEF8!&T2Af9qkEuN!S)UZuxXTl&OA zdZYiUbp%{-^mm83utII-5LDHj9=fZ29;I{9Dsp$3`(Azc_A~xvJTEn%&2i@zjc$63 zprlUYukqsaX2{(v&4V|oZ@q5{fo;qdTC{!BZ}9vV68v`L($QVT2}%xPV%8kDpzOWg zz0Sb`w<);|t;X|#G{pcD$3ra~AfjoktiXR${+u+u*=Mj^=tjdSG>AbYx|Xx%>KW;_Qgm77aY3e75T+c4Vri&&_{|K%IO*{5zk5+&t~@WG)=^!#WNC4%Wp}LqZ{9zqNfJeu^qncpYSGwEA6K*b?eWYlqQlU)m751 zM$-40sVr?AJ3S2g6r25sJGr#)CcuQj9*v(Ms8SG6+3fWuY^%(z4Bs@FUa>eQ7xU6i zSPT8t1vU)vS*}?VSZ`zHL0d=l=zc9e&J~jt?>%6jX@a47R^Ud88vGjyF%Y*JjqM_n zs4bY=I)a~SZqlgTgkEZjpGD?T0wyhUO-{n8paCicHQ4l$$-*n_7kfK&%FMP&F*ti+ z^RC86I2EWqE-gq)ER2l9xQys&_*o_rQJmZA394+f3~RMe+M)fksDySpp``aV0tz@J z3gEWfr|>?o#ElceJor+T!n|AloK_7=KK~Mja(*ZwzOg z)5=DSc~~)9aj#Ai8BUvARwy%^-xdYCrGr6#>&$qo2!5VdI{-sh6!^*>7UW)O0ic0y zFJBQun@s^kRQ~y-SH>WmQlD3Cz7-hX7x^9ww4~Q$*RqyueclQT_p{YUX4Xv4|Uq<%mrn< z5GS^r|0Kbx($J;&8O@n-MjrS`W|fHBQ0TqDN+D;BW^GBX{3{Hzq%>O$S~&w0!P=XM z0EAU>L4{Xz5*`0L#nR*~nYAp^Xugo(=W)Zl?N)xDAvxoSQerEYT>@XzY9gf?9$`6c}@n%mGT=SqEgBM-2^H-sDd7DFcD<%4ILvB2gt@A{`KC z{!)!Ji72NWRXj)xPlgg!CcHdDK8}-#* zl`Hfoy z^vpz?WA(lQ&$w;%q|FljskoM7UE689dSh_B(pdV-Ysbd-J`q$lRrQnp+&&#=zgt96 zcixGt46le|ZHT|u!6{R$#;da#)~_O2!$j5bqC<_E!D@?iz^m68?gu8DB^0p!X3h(& zxW;o%ZV-5+(MVP7rAeSqO7%XAjn#vHmZ-laEQ*-^h4-gbP1Rgm+^cDeq*#R}Elr4O z?r4fmT8yHcBD`Ep!(=g@+`Y?funKJ7$}(aV>&|gZ6Me0OW`(Br2vjW&h#GPQge`;4 zE^$n7BzK7v-5|?Zob5fwyZSRAtA0I!q`gX&y@0zKCtoFG>UC{lha!4LptnifK% z=xF?bP+qp^FmKki*;SAzI%*=-wuT*lZJvt5#I9sf*%G{VRN}d#$vR~IulsV>Q*Q$A z>uEi9`h$!654#n z+Ojjp27J@#I7f=>JW`rQ<^|?SjD93k(3Di$;N%`%+{KY!y<&J%*}b_D#> z0K(Aziy33K7?4173dDeJHRkIr0e{M8Es$trcW9zjZ@Jf|nqUP*zOaHR@{!{Mq zK7?aazF~M!P&Yq(&dt&)WiUr%w7G?zY{&J}utvTgHmPf`b5G%{Amkl=Rk5#u{9R?P} zBn2a%kE~U@JLrCz_m5WA?;t#Pbkx2yR;)EDFY-1Ywj4XFDm`x{M=Fx@rN0<1X6s%K zI_OQedtSL4xT{P>kT-4JAKYD39Lfs6LBFC@>Vj)LLrdg;S#UWIG6PHC1rVFXL;tpf zEY06gLuXG13!%Xr19tAIA10fbLcv5kT@XPwwwLOlx#OD6E3Fr=1&@0y@mjQnd#1p+ z*CEa)c+|ujDlL=4aTcV{KN=I0K!(PqN~%h~P~43fTKXMNgr_I3Cg1(pEq}?rfYn>-yY{v8Qh{+2$_w{wIRIkP8|^+P5U+Mh6s+q6K9P zrHRsFh)g0$S1PqeWv>Zm7u#b3TcUnD*Xno|8xLzgDMoCL3O8$EpxH=LrED0{fZo_g z+rVaFT-B_MTQoK#MT22Gr^DXtb$rIG`tv7G@AeFV_%1Si(&yd1!F8)Ew|2jFWBsCK zw%4s|vD-|`!Dj!su%)|k-t9p2GUHixB~3$^Qqs*1qMZMnw3Ce0&&+_6Vs8q@BIGLa zQ{%T-$dQ1GlxZG-3jqn095e~lj?59wy45z?);|Wd;+Dn+Tq5W$>kgo#f@hz&Y|b-n)0CXNGj* z3~5Mf2#2dbo4Ea}oeR!Xs_7SRZrR+R6&3YeL&Kx4U%v<^rLx@78^+9FjSe%l%g*NITS(*T-R-&`ci5U8Gu+=K{YR`l@GLo0GjGAlrC)^D zYOtNLs+R$=lNTEzPhawkAq%;Ptt z_zP$ks8tbJ4k8j8$l1eQ-=j}fgk$d= ze@A?`MUY`$yAcpi-kL=aUVODP|5yB;dtOi8Vcvm!HH83|e;2*r2$1+X0sLaVaX03t zaHs6Zgz-~yRxR^2^EV~CQ35E|a*5)SCNp-SUVpwSr6LaeI@HLZ9Fn70nI;n354aDy zQ*@KJ6Tbz&bnEC8!7DR=?>BE1tb7wDa36{u79TP*Ez=4%Y0`{`bDyrLK(6B`v?(SO7% zoJ=I6h_wA>_E>xgyRJ+fw1G^o>9Esdc52`f&vaNzBX;eujZBH-JMo0V;GM9l#xF`C z2*x>DA7;=5ycGR8u;)f*N&4BaI;{#rDp;^gGstwMq?rl+bNqDuhD;YfuJ&=a(gC+WyVW3ZXt+l`?KTE$yCnD{V-pI?7b|`CR#YSddq^rdHDFfCF8JQg3cY9Si)835;E-5H_2#^ekNeJI!ZK=% z{!++WygAG;VsK1yH4#6RayLF&wEk!+U#GfGm)DTvB`?hLG67b1edLB>9;Z?`0xeUu zru!W@vBf*^0eW`LoeIdwCx*O7d03DQ3n89OnB`dG49d)(x}RbsXFmfCL{Ac;rAX)R*w+82ILb<7Ulwk`RjH!Q zH~Wz^e*;tQGgxs!`B$CwQO8Hn-W2cSzRt(r$1;oJ;;*T-ThG^K@+=MtC+eu<^ta^jOPJ7c!OZ%nnbmFDr zy`+?}edsHZa(*$3G~zS!v6zUpZIIXbgw76d$bkkHCtk_vHiog-rj`-tvCQjG(K2Dn zTv-zxM+XwEQaY?#A9~Vss0V*d=)BTkY!7@gBLO49pRF~V7!eL2t<;X;q!@hD!Sgic zo>yI39Zar@bae9d1BU@*7*4J6{`QQNnCY;aA(P;AV>co1hR+x_cR@H$?fx<9)SGhG zAw;e{(X=)%8*l{eyUy&HF8u=R7k2%A5ej=D9IkCRmK!(s^y*9VHX>o?F-B+`={bT2E-klKA<(y1QtU??H=fUc%@M>)eO1O~S};qF|l zQl@Mqs{7MM;jqeeKd;oGy<3lEx3hFC4(Qn>88>H<@D!GGE1KU_`DG>gxfNh%s1a(@ z2&_!gI1*j0d`~F>bgfVhX&n{nq=8E5)A!l-&ij09VO>Ipyk589-f*{8EwXV`pTRJpFiQVpj^#-y4l zO+Ej8m=1gYc1fGB%tw|vm144bm}a|H7JAn%?HY8t{^p%Xk2G(k}9oL z9JGXqBG6zHp<^l|i$q$d@)&<`vOF-)N?kupzT z?AZ1o=eEd_=*$TtYa(E4#79~8N|MDhG@PCvr*CmLa&+T;Hj)zqikeWpQ#S-b>Y zTuC4!jUOfVW_>TZRt8gS65H~9cF#WjTa@dTzqaY{^y8eWvKS7aIMyY&!;J|qQA5xh zIA@6LgUB0lgMMD~=&3Si9XzZ+sEk~=LtI-!jQ(bzZ+|hS_7MgZ7QVXclunW>g!jo@ zv{n$vwxSY+VC4O2p>FmmI9z*i6zaYN(2tly$Dr{@q2 zF{jTI=6!`Q{-V0_8T#eLe1}?fhdNkP5u*0^%xRaAzwBR*`v`C4Is!kzxrggEVZZ9H z>)LVLvmL{ppu!gbjzkic^CxI#d5+P60oWP7YKrjy(>{ueqZ%Yu&_R#Z+T2K%6+7?z z#i&USkx%p*`l{!uMC-{z?-Bt8b z3n`sne<4kOb|F=s@U2FDXlt!rX%EYfJy$}^FC*%NGMgShzCwoJty0D-P^3G^sMV6G zW1V!(6$GM}wVrRd*SX-UX=N79{CTImvfC;p=E`R+TBt3W)tjFLd*TN3W7v{SHvEO zve*`G8o6YK2kdQsmHFK=2EtPomrkPmsor?P^ugcX#7wtiANptZEfWdRu-?d#qg|n0 zO1jGRo2x?^B$G@gq00TQqr`po5plFi`7APTVz0t)`5dE3*Z_kln1F2iRBumFJ0*nT zho8&)14BV55O2e2t`0&3KJAW%v+NrRv zu$(a4YF&V##~Ssci+5I+>a_WynS2C{g&3acFKaxMfHpp`D&w=+VmOO$2W?kNEgg)E z`PV+l(Mp`6r6;f89SWz^Uj1zUZtgEU1)eVK?zTvyt1ah8U6=B60aLQB0P7PF)My(| zF#7~UdPM;L*{`)~W2phfYF%zrUgYScleQB%7OZeSiDD@lN-}10OzBow5letb=)(y2 z7m^&A+5C&vzLYid#ICeAg%f%o8{rgoGpnu0K7=d=U1^pzpwW8?V)==OMdpf4Da7{< zdMpdqQ@$8sZSjxXz#^f?(^e`}%u8R_C!_fdAr2u-Uhsfc{Z1nn3G| z=|?Aq0C?N==KttJsMZz*j)>o33{9_o^wbjZJ?`&+)%!@zLwvH6oPXYQii?P(1;O~_7{xF%g?_lj zGS(0MJATidKscqMqP@hPBNVZ$CUAYpT|!8TqQU%NkH;*QOUXTLkPwbE& zu6`Mn=ZCGK*=>unv#+2@e*zUWnbrKnC3V_DXqn{S<3A&KbZl^1MbP2@O}d28*3j2x z^&Hh+{%}xV}D8$>GM%p~>(B-zdDM?dht=e=YO&EUYj5pTDZ6nRk8T@FC13A8| zwJid<-+Fef&hqv9(hzEa?JI6gg!d~Nc_UOGA_T(u-|3AB-bT5*P$0YcA7^NG;#4eW zQB;}m09xDuhd; z+9;v%P9J%%G?7zSjam>DQiPBg2B8ipU7f;56=Xh9CaQjWi>%jQ5?`3tNqV6dv7qg+ zn>NT|VYh&^5Wg0+4ZMZ~PIMVus2jf|Bz6`8B& z7y4_WTe<-=SfYU*yjs1=#swet+EF`W`gn{iMl{d7oKX_7na#xZ@OoD;R__8^q#E*|#vmW?neE0z~6Vvvw(zal+M(&uk(KgfI_rlD?u21^N~T4McBB0}$uupxzz zJZlxArqMvCnlS#MhDNlu!3;8Jz}`pdm;A(^Y^a`*x37ESu)x}0b@Fqj%jP7OUyb<= z7adcRI4<+>S3(Vuro%2$XZrplRhb?hO1!EPGO>}w({(I*~1+k z6Nu!>bQi#s#V(THm!9kWLuO7x4p1U>$w${jx9E)Wp*ehyL~BjXU} z!K&b#SiFf?AnO}HGsLFMcyhdZfr3rzi;JW^AGg=I5IT3GCuidy#?tkK6vA0()<+TF>VJQ`EPcfBT*bZNiE=T2%A`!W)!*GC;`#y~tzZ zX`|m>akYZm#Y!=$mnl~1or%;B$DJNCl3|lPSfcy$oB^dMd5ZZ|F5V!LbJ_MobD;pn zWWG;4LvsVymTFHk435F6mwwN&g5N!weeZoK!0yU^*ty~>G#AJ%OfDgVL_74L926a- zJDa<9(KEDmwq5jIL_4~Wb{c-T>A4vu927UBz-A?FFq~A;fqje;%I{F5QT&KIslVRA zC~{jkWPi=T*y%;rD6i1+P0`_&#Sh%uJAE zK(b7Xi4L-!m^qS2&^_=eQjW~8YLBARj$gxIm`FLIn5Z=*D`3JUC@nXPCG}ByIFn9F zJ5*pbYMWGl*ly}0y11b zgA`YB0UBCP9ctybIGuTU5GN(whhBnV}6fJo@BKokMgNY(!W*+53UkyD1sQ3-01dWammdU^P zAY~>$e8;ruv?^pislORJYzC0HL{4VW3cu)JHJxh2VIqT*`r!4udrF(#Rw~OT!(fH1 z|E*yNm*xG+%X?_GdK8HTPqi;%{^#-O=L5*D8K(U7eEatRI8RFmRz`1clo#ks2JIu~ zDc#TCw=yUUTg_L_MCA;`1cwmr5>i5^g>RCtel8i|G5G@K{*4arxSL=gK@yjRiPC^s zVq3v{6UH1WtFJb4I}{o4~tFR(oqXKGA%g(fHVP0Jhn_aI5~EFx-!KCeq`hQLk1! zGEy(dL|X5Ml)QVUodLJ{SpM8pS_|?p4^38(&(NVixbMaEXBBNUwBPi8?Pm?fcl^2- zUL9Sde4~y9B%bNdh+i-~!~BxdA8)4A1buU0HDtX)Bo$#0jWW!=-*l!U+02Q7iYfU2 zxNw3m<@Lhqgm)<<%l#dj?rIf_DK)!J{j$%1^x<6lCuc_FJI%YOzt@)(QB(n5`g`RV z*tYyoAGO8){Pyp%rf^?o=e+#*6`8CrYfG1=&B?p$fXtWsld^MFLDes_y+{Js>}^$y zE`SFpj;AoimHxj;F+gi4pYjkPh*?4_h)cOaAbW8K z`=cCGyES34Zc-?smx0&$UeyKoE}bJ+p4tV{5`lCke{=1|sGrmD=Jhxb(JZ6a|32D$ zOv~Gs+GpI~WsIbWLidRnEy-33o{;G*cLWrS)?!dvp1pO5`M-edeGO3J6k(iUGCtjx<|Zg$1SGutJ`=dd zN0Yc|W;6*%AFJ9_(+j{J1+z zX~RVE%7Bf3rv-AZ8!yW%54B-6SpEAiQ8PA)$-W>heqa5Y05HtM*kCtW8vgP9W{Tj! zUY&8oLpq~fOcb{{VD!N>tbz{(aI-MddWB({j!EEK@KPDEpBi;v#t!kCUg2TW6fU`T zHmzr}>P;D?gcW-)=UOcTX6*xq+R-Y;x=sbm)-}V2OD7vGjY5v1Mjf21!h4SFPCGof;2Vmp#ae$(V(zfT zPGCt1#BmMGxqv27W--&h1LdU!^Mu)r?IElk*IDRiT(&3q*5A1nW!2O`pL>f4gIQ@S zxU(VQ7G+3MfVPs)$RZai9BdgDRFR^|?vt`T zo`s5>Gq}EX-Mfm092KiJCZjiQ?JZ^_nIQZm=FccNW8QF`npYal97wvD8!vnPuA7aH z_OEl$nilSgX}3#wS%t6TqREqZ*lO#Gt#$1OdMnF$WSPt}E)jpnQQNaNj}bvPJ$U+n zj)Ob>fH>gv6KpF6&)!VpQ3)#c&R^lrlSbR;zBX@Q(^JD7++T|WtR$P4&wz9GeWiQtk*a~<>%h{g zAkL%>uY~&};#n<)(V=Vb8*}>9MiU*Is}AR~ zs)m`TS88j3#Dk~t=NEKInP2gko+y$P00^RPHx=X|#wc{$ex#RG{bvrfA--7Z^MO5s zi?}SDQ32gFSuqOQILgFbs0cD3bXkg>sZcCf$&pc=iL#29u0^V(Rf&j3*urXOewtNN zK!*X7y6<2)iwS^$hDVK^0}i9z>8#{!ok@ggJfm#gaH1<}l=ce-R+1M@bw{YE*H!}1 zUi{5(Gspe93@T;5h+Fqm-fuwfa=Y0W1b?CWq_{Nek{abjwBgR`_oZ z2fB^Akrmta;*#JHDrrhDJUc2cVw|o0FTjYapEsZTbKRl%BPg{xoM-ReF*vA~`IOi# z*Ndt&we5W8zns6A>5V3=vXg9RZL_pHTR50?8d@bVDxjP$I(gYmcaOM2tE(sm)w_B$ zTXQHjjdH>ty)80$WW1|!*L-QsiuY_KPGowd3o`VaQ<^mb&L|kzsUu3KoEC(P=EF|w z!Y^3y81dMV5s2(cx{{Z{L-Zg&iV*&Gfx^swbs(rPp{Fc^e~W#{IO`8uYe> zOR!dbu6n&58LpW`Dy9qpYnG#`mwME(7xEUy3pyEgZ4Tnb&e4*f*4v8l8Qtv$b z6qHK=C^sjfa!s&Ztq47LKF{G!On(w5iSs!8M&K%_;7xq7BKnHKyK3%tz0)(?`gC`b ze6xFdo`b4pKWBar3f#9RBb!d&34>ZnZJJZ(U@Q!qgo-eOB_mXf5<(Rm zs_1nx>NFt~f0L4uw<=3I6kR2jV602_`FI?BP-_+ysRWK4r{0>-ON)yn ztDUcU`KvR{{*?Y-aiuJ?V{TJO8|er6uOpHSlk`fdve z3GqC5P|&8C@&jeJvmBjvKW|W#=NuaOxG|&v_)UlEqUG`?wY^v;`K*$vRTQy zYoZY8gPP%7>S2G{%E+P8l^?Cn(&YNrrCGOc5ax^;^x~MU&T{1n+6L|MQfr;G&Z_#; zpYPO`rdhzfB+VjaBh?ioe%sukG3-C=yT|v7>Z?9o0}1!aypF;S0Xc@|D0}bLq%tK^gf( z!MlHSeo!Im6PQ)8x9>R5ovqj7yV)riX>7AD>sjH(wiS1S*1!D}EJ*99Db2u*8HhTclG;A!%E0NccL1XvVK8K3w`Xivk(CRH%69Z>iFA zJ6>;e(C|trlYCl3JE5Frb}7*-(lyp*Gx=8OirW|EgGJ2UTyVKK52O!QOmR!U+l1a@ z(dz>%g;$O*@mOBFWZDex%g?8a~X)2Xq$T8)D}!*{XTZ{=a5SN)Q^Z_ho8u_ghmf;z;2wU^gr zt3s^Wy^wB+lUurDhC`1F2W+sQIY0e$*(FEpE~C=>zFUnuwfivT17Q;dbz`#0Pepb2 zOqlv;6qU0|GB@B+e{}f9%Vrn_+?ETKg82lA;}=^R9OdlNBWTAg{Q@xuO&qc3lA>>j z9B|1jW7s_v@_&-f^e$0aB_LHaQ0$Z(_~)SK$f}^opq^uX5(R=Vv{h{5%Lcid!-jdp z0t;n$-+GcvUECg%#*wyS2aKcjxZQ2Ke0jU}6GO2Q@pjBm)j7$vUefR1$fj-gGhdDS zOx|m6qM$W0{eT|lM=(=(lgoNT7-iYdws2>kyh|r-lCV=q=vcvd*QsgiOYJzn&g6@U zKj~57@xJo(U(Zpi8ct~Me)}pulD5w9^M#fx9xcE0$JNt^>zg#A?U`q_o_T#Z>-bkYr|uJhmyxcc6sG*Z$>7j3(J?I@x9Yj7BwF?`rqP zu^CLriXB~(bpez1kAK;l{&1@9kg+HJNjSc4XH?@4eOxX;!ixek~U@OIys#Y_2 z@05VIXsl0K+h98E)*>mRmGiFpxkCs0)^tD}$7#|t-QO+kOPue_#kps_RWnj48Q!aB zgfN;Z%jED<;jojsNzZ8?FoDWruBptY?y+vMZpuZ$MRVyn^(o@avtsY54RMun!&&bY zEK0>u?T01_IQ)1FA!fo@+v@R)v*wQ(+ukOBG47xkxmq0i9Q$EJiO}Wqq6*Mxp!$Nd zOS7M3o3-w1F=f3R;Hpa8$jlfp4t`-Xcp!ClB)aR$fsF7YwD1N8L3+C3pXZZ$FrSWv z#6K%YFga7%#3~rDO=j#{=#IlSqQQqe(PFoln^FLEO zcTXO%t06QF7_^Z+6BMsKuHz^go*G+WJ4y^9E$uVM1#Vj^tQfxOe8q{quk2$g>OKWL zge^S}C^h~7CI^|hsrB{uOX>IB-<&1|>&B8C5{|MY0|J`E29|jRS5K~&naVA8AK0$V zct9^?6na}8ji?H72VZc87xub$vyX5FOG;V=CRu8#O~u^20&Z?OaxSm^rP>rrpe(qt zRkE1QacFKSKIR$B&YfMK(x;|6)gLsTyv9pt=U{)|(IJsI^?FMm((ty1xif+tpe15x;S6t^*cPYu7vW_E^>CYvU_F3q|$W)D^y- z@^oF69IOW7xqrX0J}P*hXs%tbGR5VTCgmi}R<7$v*`G^EeXdV(MLX{efN!n?^d6=% z9a>s;+4K$c*|e7)s;IAT>Uuy6HYvdy(}PbXa#c6#ZMAqkXYb|a9c&I~MNgXJi&b)J zm)xOw6fNzl4b-^M!!{P$p_7so_Ao3f<Qzw-2m{Dln+LW$BAj0<=zf)&;$cw5JnAPcLCKFShu< zTEBgOPimFrVA{~F-_)%wZMfOeepwSYdK=A*X3Ive436y?=qokUi@tB-c4egD3!hcu ze%5wu!};Ak2A#TrS)npfzVcn`#mZ#X+v+3dQoA=@C(*1gIp1WxuouU-b;w-mR=s6Y zqPL~!;G4j0X)*P^8xpG7%sZziS8*>F<7=IEynL&|5$Dc`&062;I-A*OluFt=m~yL# z>Ql&`t)RT{AuTO6%>QA(9_$c-+ zKElyYIyP>ZR7BQGpTU!e!^|UJ ziU*qZpHkE`GhTIdO0XPf>opZoX51PVa@8~Wk&3JKA7C5{~_X1#BlAC+WUbnaG4fiT5t`ga)etn*waD|;NRw{KNvBQL)&gE3bE^=R+UcGG(cf3NRmDzng@5)2x5ff4MOM;1J zQYTh!FxdJiQNnm<#fx7bcbvWhlUMUG&8CMXoo<)Nzzc|ho0+LEUqlQ%^> zy8QlGRMbzdWywkp962-X4Z`J}$O^jC!?ddWCZ9(L*V=u|dqyj??JLuczk4qdeKpJB z1NF_dI@6uGqON@j=NykJI*SEw7fvE4rTo%RTV6EGUqLqEf*-q*Jo7}m;BF$tHpy<} z&En=85ITI%Psqtsdr5tgZO)q2*?N`_^Nu>kMgNwPr}aLS&cA-CwWi4pmziZV7(~9< z*!@X?>x|TZ4}4PW)h`v>*fr@>XS%PmL#!{WXKD$;Y5bp@Va8>Q)DCX_^i1T-tb=pj z`4Yb)eugOWoeBbv!py^y`A?}Jw7=rX{7nV%kC-wj1RA1tK*Nv-3=u{|BL0aCf`|YZ zGT+G{P)LAH@;4a-==TqRGKDB`tDfDAWOve$i3`Ce+q#dFMn5_gzxd2~`Jh#u^s4^GX47HIgwPZg z!GESweWqC^v9I%#bZDh}|53}seZ{VwLD?gvGK_|%%kGUMY4%=$Bb`Bp6M^qKk$Unc zJhPc1p5-zA>u#1Yo_bh`yBD%JO*Z|lbAwjbly3Tt6kbc91rTk;Gwt9i9|H5`?R*U1 zo*}h_DO2i>o8RW2)^2RG?z%pPk9Hs2RLbvdb8`tN{y}5V$1B!D*ZkL%Ebq*6?U6OF zVlr4^Jq~G-$Bxtjq(W&rM0A@G+6;%={P6=R}P| zZyL|79osx(G}^)B2&^*QuiqIPEwg!M`G}wE?5E1Dq2-qPKqoW;$Wk;CXJt6;b?i=i z!fSTUvKgbiWue1%G4*VksbOdwG5)#cr#l&W6)Z>kTrSOZu)ZiaeJ5iOc9-5qo0t+n zu99btj%-@4$}jwr+Ccx8%n$!m3qM8N!GR?I#{7WBVPSXxhy)!t91gIdpm}FBIAgK6 zuLod-`0E;l$MbXnJQ57(2w_1RB>Sr!vIAWcF<<*b_ut#U*@60g>n8;H`^yFn`L`{o z4-^A*K=QwI=Jkc*5Q2Q+=jkGezy=f>7V|wONCz6*U$H^gI0Ocg3Gw8h|4$%?7BM~W ziuwo67xX-)2R$T=w`dk{JuqZw`M?z#hJs*|e(VHsK|m;407wa9?SS#D0B|F7s<*Qx z#m^3IuA>LvOF8amKOf#`VM3TY9i_m{ov09P4U*>sZb9+&_NO{ie8IHw{F_h?yE;K+ zIM8;4LxN={0v;TFs<*!naBc}0L;wnx4`jnR2u`*HJ70jSGsQw*8*T{m1MDIi8gMd* z5V-J#@j$cY@!c#${rX?W!^3}?7tcKOCmt!v|2iHX)YQCqK+=9+=Ko7TNL~)kk7!=v z{eL2Ya>inQL<=#+phW|)a0?Sz2(X8I%Vc2Tdn!X!Yvg*^*AB)TDvW0y#(NlpCq3i~ zhU66jq)7Jm2bF@I=N-K;g~?8UAD#ZzqSE=ji>ggd67z_e|ML~sBd zo*vlqFrXg}uRro;eUqPv~DZfW_MY literal 0 HcmV?d00001 diff --git a/external/unbound/doc/Changelog b/external/unbound/doc/Changelog index 3b9d506..3d05ae5 100644 --- a/external/unbound/doc/Changelog +++ b/external/unbound/doc/Changelog @@ -1,3 +1,1784 @@ +19 June 2018: Wouter + - Fix for unbound-control on Windows and set TCP socket parameters + more closely. + - Fix windows unbound-control no cert bad file descriptor error. + +18 June 2018: Wouter + - Fix that control-use-cert: no works for 127.0.0.1 to disable certs. + - Fix unbound-checkconf for control-use-cert. + +15 June 2018: Wouter + - tag for 1.7.3rc1. + +14 June 2018: Wouter + - #4103: Fix that auth-zone does not insist on SOA record first in + file for url downloads. + - Fix that first control-interface determines if TLS is used. Warn + when IP address interfaces are used without TLS. + - Fix nettle compile. + +12 June 2018: Ralph + - Don't count CNAME response types received during qname minimisation as + query restart. + +12 June 2018: Wouter + - #4102 for NSD, but for Unbound. Named unix pipes do not use + certificate and key files, access can be restricted with file and + directory permissions. The option control-use-cert is no longer + used, and ignored if found in unbound.conf. + - Rename tls-additional-ports to tls-additional-port, because every + line adds one port. + - Fix buffer size warning in unit test. + - remade dependencies in the Makefile. + +6 June 2018: Wouter + - Patch to fix openwrt for mac os build darwin detection in configure. + +5 June 2018: Wouter + - Fix crash if ratelimit taken into use with unbound-control + instead of with unbound.conf. + +4 June 2018: Wouter + - Fix deadlock caused by incoming notify for auth-zone. + - tag for 1.7.2rc1, became 1.7.2 release on 11 June 2018, + trunk is 1.7.3 in development from this point. + - #4100: Fix stub reprime when it becomes useless. + +1 June 2018: Wouter + - Rename additional-tls-port to tls-additional-ports. + The older name is accepted for backwards compatibility. + +30 May 2018: Wouter + - Patch from Syzdek: Add ability to ignore RD bit and treat all + requests as if the RD bit is set. + +29 May 2018: Wouter + - in compat/arc4random call getentropy_urandom when getentropy fails + with ENOSYS. + - Fix that fallback for windows port. + +28 May 2018: Wouter + - Fix windows tcp and tls spin on events. + - Add routine from getdns to add windows cert store to the SSL_CTX. + - tls-win-cert option that adds the system certificate store for + authenticating DNS-over-TLS connections. It can be used instead + of the tls-cert-bundle option, or with it to add certificates. + +25 May 2018: Wouter + - For TCP and TLS connections that don't establish, perform address + update in infra cache, so future selections can exclude them. + - Fix that tcp sticky events are removed for closed fd on windows. + - Fix close events for tcp only. + +24 May 2018: Wouter + - Fix that libunbound can do DNS-over-TLS, when configured. + - Fix that windows unbound service can use DNS-over-TLS. + - unbound-host initializes ssl (for potential DNS-over-TLS usage + inside libunbound), when ssl upstream or a cert-bundle is configured. + +23 May 2018: Wouter + - Use accept4 to speed up incoming TCP (and TLS) connections, + available on Linux, FreeBSD and OpenBSD. + +17 May 2018: Ralph + - Qname minimisation default changed to yes. + +15 May 2018: Wouter + - Fix low-rtt-pct to low-rtt-permil, as it is parts in one thousand. + +11 May 2018: Wouter + - Fix contrib/libunbound.pc for libssl libcrypto references, + from https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226914 + +7 May 2018: Wouter + - Fix windows to not have sticky TLS events for TCP. + - Fix read of DNS over TLS length and data in one read call. + - Fix mesh state assertion failure due to callback removal. + +3 May 2018: Wouter + - Fix that configure --with-libhiredis also turns on cachedb. + - Fix gcc 8 buffer warning in testcode. + - Fix function type cast warning in libunbound context callback type. + +2 May 2018: Wouter + - Fix fail to reject dead peers in forward-zone, with ssl-upstream. + +1 May 2018: Wouter + - Fix that unbound-control reload frees the rrset keys and returns + the memory pages to the system. + +30 April 2018: Wouter + - Fix spelling error in man page and note defaults as no instead of + off. + +26 April 2018: Wouter + - Fix for crash in daemon_cleanup with dnstap during reload, + from Saksham Manchanda. + - Also that for dnscrypt. + - tag for 1.7.1rc1 release. Became 1.7.1 release on 3 May, trunk + is from here 1.7.2 in development. + +25 April 2018: Ralph + - Fix memory leak when caching wildcard records for aggressive NSEC use + +24 April 2018: Wouter + - Fix contrib/fastrpz.patch for this release. + - Fix auth https for libev. + +24 April 2018: Ralph + - Added root-key-sentinel support + +23 April 2018: Wouter + - makedist uses bz2 for expat code, instead of tar.gz. + - Fix #4092: libunbound: use-caps-for-id lacks colon in + config_set_option. + - auth zone http download stores exact copy of downloaded file, + including comments in the file. + - Fix sldns parse failure for CDS alternate delete syntax empty hex. + - Attempt for auth zone fix; add of callback in mesh gets from + callback does not skip callback of result. + - Fix cname classification with qname minimisation enabled. + - list_auth_zones unbound-control command. + +20 April 2018: Wouter + - man page documentation for dns-over-tls forward-addr '#' notation. + - removed free from failed parse case. + - Fix #4091: Fix that reload of auth-zone does not merge the zonefile + with the previous contents. + - Delete auth zone when removed from config. + +19 April 2018: Wouter + - Can set tls authentication with forward-addr: IP#tls.auth.name + And put the public cert bundle in tls-cert-bundle: "ca-bundle.pem". + such as forward-addr: 9.9.9.9@853#dns.quad9.net or + 1.1.1.1@853#cloudflare-dns.com + - Fix #658: unbound using TLS in a forwarding configuration does not + verify the server's certificate (RFC 8310 support). + - For addr with #authname and no @port notation, the default is 853. + +18 April 2018: Wouter + - Fix auth-zone retry timer to be on schedule with retry timeout, + with backoff. Also time a refresh at the zone expiry. + +17 April 2018: Wouter + - auth zone notify work. + - allow-notify: config statement for auth-zones. + - unit test for allow-notify + +16 April 2018: Wouter + - Fix auth zone target lookup iterator. + - auth zone notify with prefix + - auth zone notify work. + +13 April 2018: Wouter + - Fix for max include depth for authzones. + - Fix memory free on fail for $INCLUDE in authzone. + - Fix that an internal error to look up the wrong rr type for + auth zone gets stopped, before trying to send there. + - auth zone notify work. + +10 April 2018: Ralph + - num.query.aggressive.NOERROR and num.query.aggressive.NXDOMAIN + statistics counters. + +10 April 2018: Wouter + - documentation for low-rtt and low-rtt-pct. + - auth zone notify work. + +9 April 2018: Wouter + - Fix that flush_zone sets prefetch ttl expired, so that with + serve-expired enabled it'll start prefetching those entries. + - num.query.authzone.up and num.query.authzone.down statistics counters. + - Fix downstream auth zone, only fallback when auth zone fails to + answer and fallback is enabled. + - Accept both option names with and without colon for get_option + and set_option. + - low-rtt and low-rtt-pct in unbound.conf enable the server selection + of fast servers for some percentage of the time. + +5 April 2018: Wouter + - Combine write of tcp length and tcp query for dns over tls. + - nitpick fixes in example.conf. + - Fix above stub queries for type NS and useless delegation point. + - Fix unbound-control over pipe with openssl 1.1.1, the TLSv1.3 + tls_choose_sigalg routine does not allow the ciphers for the pipe, + so use TLSv1.2. + - ED448 support. + +3 April 2018: Wouter + - Fix #4043: make test fails due to v6 presentation issue in macOS. + - Fix unable to resolve after new WLAN connection, due to auth-zone + failing with a forwarder set. Now, auth-zone is only used for + answers (not referrals) when a forwarder is set. + +29 March 2018: Ralph + - Check "result" in dup_all(), by Florian Obser. + +23 March 2018: Ralph + - Fix unbound-control get_option aggressive-nsec + +21 March 2018: Ralph + - Do not use cached NSEC records to generate negative answers for + domains under DNSSEC Negative Trust Anchors. + +19 March 2018: Wouter + - iana port update. + +16 March 2018: Wouter + - corrected a minor typo in the changelog. + - move htobe64/be64toh portability code to cachedb.c. + +15 March 2018: Wouter + - Add --with-libhiredis, unbound support for a new cachedb backend + that uses a Redis server as the storage. This implementation + depends on the hiredis client library (https://redislabs.com/lp/hiredis/). + And unbound should be built with both --enable-cachedb and + --with-libhiredis[=PATH] (where $PATH/include/hiredis/hiredis.h + should exist). Patch from Jinmei Tatuya (Infoblox). + - Fix #3817: core dump happens in libunbound delete, when queued + servfail hits deleted message queue. + - Create additional tls service interfaces by opening them on other + portnumbers and listing the portnumbers as additional-tls-port: nr. + +13 March 2018: Wouter + - Fix typo in documentation. + - Fix #3736: Fix 0 TTL domains stuck on SERVFAIL unless manually + flushed with serve-expired on. + +12 March 2018: Wouter + - Added documentation for aggressive-nsec: yes. + - tag 1.7.0rc3. That became the 1.7.0 release on 15 Mar, trunk + now has 1.7.1 in development. + - Fix #3727: Protocol name is TLS, options have been renamed but + documentation is not consistent. + - Check IXFR start serial. + +9 March 2018: Wouter + - Fix #3598: Fix swig build issue on rhel6 based system. + configure --disable-swig-version-check stops the swig version check. + +8 March 2018: Wouter + - tag 1.7.0rc2. + +7 March 2018: Wouter + - Fixed contrib/fastrpz.patch, even though this already applied + cleanly for me, now also for others. + - patch to log creates keytag queries, from A. Schulze. + - patch suggested by Debian lintian: allow to -> allow one to, from + A. Schulze. + - Attempt to remove warning about trailing whitespace. + +6 March 2018: Wouter + - Reverted fix for #3512, this may not be the best way forward; + although it could be changed at a later time, to stay similar to + other implementations. + - svn trunk contains 1.7.0, this is the number for the next release. + - Fix for windows compile. + - tag 1.7.0rc1. + +5 March 2018: Wouter + - Fix to check define of DSA for when openssl is without deprecated. + - iana port update. + - Fix #3582: Squelch address already in use log when reuseaddr option + causes same port to be used twice for tcp connections. + +27 February 2018: Wouter + - Fixup contrib/fastrpz.patch so that it applies. + - Fix compile without threads, and remove unused variable. + - Fix compile with staticexe and python module. + - Fix nettle compile. + +22 February 2018: Ralph + - Save wildcard RRset from answer with original owner for use in + aggressive NSEC. + +21 February 2018: Wouter + - Fix #3512: unbound incorrectly reports SERVFAIL for CAA query + when there is a CNAME loop. + - Fix validation for CNAME loops. When it detects a cname loop, + by finding the cname, cname in the existing list, it returns + the partial result with the validation result up to then. + - more robust cachedump rrset routine. + +19 February 2018: Wouter + - Fix #3505: Documentation for default local zones references + wrong RFC. + - Fix #3494: local-zone noview can be used to break out of the view + to the global local zone contents, for queries for that zone. + - Fix for more maintainable code in localzone. + +16 February 2018: Wouter + - Fixes for clang static analyzer, the missing ; in + edns-subnet/addrtree.c after the assert made clang analyzer + produce a failure to analyze it. + +13 February 2018: Ralph + - Aggressive NSEC tests + +13 February 2018: Wouter + - tls-cert-bundle option in unbound.conf enables TLS authentication. + - iana port update. + +12 February 2018: Wouter + - Unit test for auth zone https url download. + +12 February 2018: Ralph + - Added tests with wildcard expanded NSEC records (CVE-2017-15105 test) + - Processed aggressive NSEC code review remarks Wouter + +8 February 2018: Ralph + - Aggressive use of NSEC implementation. Use cached NSEC records to + generate NXDOMAIN, NODATA and positive wildcard answers. + +8 February 2018: Wouter + - iana port update. + - auth zone url config. + +5 February 2018: Wouter + - Fix #3451: dnstap not building when you have a separate build dir. + And removed protoc warning, set dnstap.proto syntax to proto2. + - auth-zone provides a way to configure RFC7706 from unbound.conf, + eg. with auth-zone: name: "." for-downstream: no for-upstream: yes + fallback-enabled: yes and masters or a zonefile with data. + +2 February 2018: Wouter + - Fix unfreed locks in log and arc4random at exit of unbound. + - unit test with valgrind + - Fix lock race condition in dns cache dname synthesis. + - lock subnet new item before insertion to please checklocks, + no modification of critical regions outside of lock region. + +1 February 2018: Wouter + - fix unaligned structure making a false positive in checklock + unitialised memory. + +29 January 2018: Ralph + - Use NSEC with longest ce to prove wildcard absence. + - Only use *.ce to prove wildcard absence, no longer names. + +25 January 2018: Wouter + - ltrace.conf file for libunbound in contrib. + +23 January 2018: Wouter + - Fix that unbound-checkconf -f flag works with auto-trust-anchor-file + for startup scripts to get the full pathname(s) of anchor file(s). + - Print fatal errors about remote control setup before log init, + so that it is printed to console. + +22 January 2018: Wouter + - Accept tls-upstream in unbound.conf, the ssl-upstream keyword is + also recognized and means the same. Also for tls-port, + tls-service-key, tls-service-pem, stub-tls-upstream and + forward-tls-upstream. + - Fix #3397: Fix that cachedb could return a partial CNAME chain. + - Fix #3397: Fix that when the cache contains an unsigned DNAME in + the middle of a cname chain, a result without the DNAME could + be returned. + +19 January 2018: Wouter + - tag 1.6.8 for release with CVE fix. + - trunk has 1.6.9 with fix and previous commits. + - patch for CVE-2017-15105: vulnerability in the processing of + wildcard synthesized NSEC records. + - iana port update. + - make depend: code dependencies updated in Makefile. + +4 January 2018: Ralph + - Copy query and correctly set flags on REFUSED answers when cache + snooping is not allowed. + +3 January 2018: Ralph + - Fix queries being leaked above stub when refetching glue. + +2 January 2017: Wouter + - Fix that DS queries with referral replies are answered straight + away, without a repeat query picking the DS from cache. + The correct reply should have been an answer, the reply is fixed + by the scrubber to have the answer in the answer section. + - Remove clang optimizer disable, + Fix that expiration date checks don't fail with clang -O2. + +15 December 2017: Wouter + - Fix timestamp failure because of clang optimizer failure, by + disabling -O2 when the compiler --version is clang. + - iana port update. + - Also disable -flto for clang, to make incep-expi signature check + work. + +12 December 2017: Ralph + - Fix qname-minimisation documentation (A QTYPE, not NS) + +12 December 2017: Wouter + - authzone work, transfer connect. + +7 December 2017: Ralph + - Check whether --with-libunbound-only is set when using --with-nettle + or --with-nss. + +4 December 2017: Wouter + - Fix link failure on OmniOS. + +1 December 2017: Wouter + - auth zone work. + +30 November 2017: Wouter + - Fix #3299 - forward CNAME daisy chain is not working + +14 November 2017: Wouter + - Fix #2882: Unbound behaviour changes (wrong) when domain-insecure is + set for stub zone. It no longer searches for DNSSEC information. + - auth xfer work on probe timer and lookup. + +13 November 2017: Wouter + - Fix #2801: Install libunbound.pc. + - Fix qname minimisation to send AAAA queries at zonecut like type A. + - reverted AAAA change. + +7 November 2017: Wouter + - Fix #2492: Documentation libunbound. + +3 November 2017: Wouter + - Fix #2362: TLS1.3/openssl-1.1.1 not working. + - Fix #2034 - Autoconf and -flto. + - Fix #2141 - for libsodium detect lack of entropy in chroot, print + a message and exit. + +2 November 2017: Wouter + - Fix #1913: ub_ctx_config is under circumstances thread-safe. + - make ip-transparent option work on OpenBSD. + +31 October 2017: Wouter + - Document that errno is left informative on libunbound config read + fail. + - lexer output. + - iana port update. + +25 October 2017: Ralph + - Fixed libunbound manual typo. + - Fix #1949: [dnscrypt] make provider name mismatch more obvious. + - Fix #2031: Double included headers + +24 October 2017: Ralph + - Update B root ipv4 address. + +19 October 2017: Wouter + - authzone work, probe timer setup. + +18 October 2017: Wouter + - lint for recent authzone commit. + +17 October 2017: Wouter + - Fix #1749: With harden-referral-path: performance drops, due to + circular dependency in NS and DS lookups. + - [dnscrypt] prevent dnscrypt-secret-key, dnscrypt-provider-cert + duplicates + - [dnscrypt] introduce dnscrypt-provider-cert-rotated option, + from Manu Bretelle. + This option allows handling multiple cert/key pairs while only + distributing some of them. + In order to reliably match a client magic with a given key without + strong assumption as to how those were generated, we need both key and + cert. Likewise, in order to know which ES version should be used. + On the other hand, when rotating a cert, it can be desirable to only + serve the new cert but still be able to handle clients that are still + using the old certs's public key. + The `dnscrypt-provider-cert-rotated` allow to instruct unbound to not + publish the cert as part of the DNS's provider_name's TXT answer. + - Better documentation for cache-max-negative-ttl. + - Work on local root zone code. + +10 October 2017: Wouter + - tag 1.6.7 + - trunk has version 1.6.8. + +6 October 2017: Wouter + - Fix spelling in unbound-control man page. + +5 October 2017: Wouter + - Fix trust-anchor-signaling works in libunbound. + - Fix some more crpls in testdata for different signaling default. + - tag 1.6.7rc1 + +5 October 2017: Ralph + - Set trust-anchor-signaling default to yes + - Use RCODE from A query on DNS64 synthesized answer. + +2 October 2017: Wouter + - Fix param unused warning for windows exportsymbol compile. + +25 September 2017: Ralph + - Fix #1450: Generate again patch contrib/aaaa-filter-iterator.patch + (by Danilo G. Baio). + +21 September 2017: Ralph + - Log name of looping module + +19 September 2017: Wouter + - use a cachedb answer even if it's "expired" when serve-expired is yes + (patch from Jinmei Tatuya). + - trigger refetching of the answer in that case (this will bypass + cachedb lookup) + - allow storing a 0-TTL answer from cachedb in the in-memory message + cache when serve-expired is yes + - Fix DNSCACHE_STORE_ZEROTTL to be bigger than 0xffff. + +18 September 2017: Ralph + - Fix #1400: allowing use of global cache on ECS-forwarding unless + always-forward. + +18 September 2017: Wouter + - tag 1.6.6 (is 1.6.6rc2) + - Fix that looping modules always stop the query, and don't pass + control. + - Fix #1435: Please allow UDP to be disabled separately upstream and + downstream. + - Fix #1440: [dnscrypt] client nonce cache. + +15 September 2017: Wouter + - Fix unbound-host to report error for DNSSEC state of failed lookups. + - Spelling fixes, from Josh Soref. + +13 September 2017: Wouter + - tag 1.6.6rc2, became 1.6.6 on 18 sep. trunk 1.6.7 in development. + +12 September 2017: Wouter + - Add dns64 for client-subnet in unbound-checkconf. + +4 September 2017: Ralph + - Fix #1412: QNAME minimisation strict mode not honored + - Fix #1434: Fix windows openssl 1.1.0 linking. + +4 September 2017: Wouter + - tag 1.6.6rc1 + - makedist fix for windows binaries, with openssl 1.1.0 windres fix, + and expat 2.2.4 install target fix. + +1 September 2017: Wouter + - Recommend 1472 buffer size in unbound.conf + +31 August 2017: Wouter + - Fix #1424: cachedb:testframe is not thread safe. + - For #1417: escape ; in dnscrypt tests. + - but reverted that, tests fails with that escape. + - Fix #1417: [dnscrypt] shared secret cache counters, and works when + dnscrypt is not enabled. And cache size configuration option. + - make depend + - Fix #1418: [ip ratelimit] initialize slabhash using + ip-ratelimit-slabs. + +30 August 2017: Wouter + - updated contrib/fastrpz.patch to apply with configparser changes. + - Fix 1416: qname-minimisation breaks TLSA lookups with CNAMEs. + +29 August 2017: Wouter + - Fix #1414: fix segfault on parse failure and log_replies. + - zero qinfo in handle_request, this zeroes local_alias and also the + qname member. + - new keys and certs for dnscrypt tests. + - fixup WKS test on buildhost without servicebyname. + +28 August 2017: Wouter + - Fix #1415: patch to free dnscrypt environment on reload. + - iana portlist update + - Fix #1415: [dnscrypt] shared secret cache, patch from + Manu Bretelle. + - Small fixes for the shared secret cache patch. + - Fix WKS records on kvm autobuild host, with default protobyname + entries for udp and tcp. + +23 August 2017: Wouter + - Fix #1407: Add ECS options check to unbound-checkconf. + - make depend + - Fix to reclaim tcp handler when it is closed due to dnscrypt buffer + allocation failure. + +22 August 2017: Wouter + - Fix install of trust anchor when two anchors are present, makes both + valid. Checks hash of DS but not signature of new key. This fixes + the root.key file if created when unbound is installed between + sep11 and oct11 2017. + - tag 1.6.5 with pointrelease 1.6.5 (1.6.4 plus 5011 fix). + - trunk version 1.6.6 in development. + - Fix issue on macOX 10.10 where TCP fast open is detected but not + implemented causing TCP to fail. The fix allows fallback to regular + TCP in this case and is also more robust for cases where connectx() + fails for some reason. + - Fix #1402: squelch invalid argument error for fd_set_block on windows. + +10 August 2017: Wouter + - Patch to show DNSCrypt status in help output, from Carsten + Strotmann. + +8 August 2017: Wouter + - Fix #1398: make cachedb secret configurable. + - Remove spaces from Makefile. + +7 August 2017: Wouter + - Fix #1397: Recursive DS lookups for AS112 zones names should recurse. + +3 August 2017: Ralph + - Remove unused iter_env member (ip6arpa_dname) + - Do not reset rrset.bogus stats when called using stats_noreset. + - Added stats for queries that have been ratelimited by domain + recursion. + - Do not add rrset_bogus and query ratelimiting stats per thread, these + module stats are global. + +3 August 2017: Wouter + - Fix #1394: mix of serve-expired and response-ip could cause a crash. + +24 July 2017: Wouter + - upgrade aclocal(pkg.m4 0.29.1), config.guess(2016-10-02), + config.sub(2016-09-05). + - annotate case statement fallthrough for gcc 7.1.1. + - flex output from flex 2.6.1. + - snprintf of thread number does not warn about truncated string. + - squelch TCP fast open error on FreeBSD when kernel has it disabled, + unless verbosity is high. + - remove warning from windows compile. + - Fix compile with libnettle + - Fix DSA configure switch (--disable dsa) for libnettle and libnss. + - Fix #1365: Add Ed25519 support using libnettle. + - iana portlist update + +17 July 2017: Wouter + - Fix #1350: make cachedb backend configurable (from JINMEI Tatuya). + - Fix #1349: allow suppression of pidfiles (from Daniel Kahn Gillmor). + With the -p option unbound does not create a pidfile. + +11 July 2017: Wouter + - Fix #1344: RFC6761-reserved domains: test. and invalid. + - Redirect all localhost names to localhost address for RFC6761. + +6 July 2017: Wouter + - Fix tests to use .tdir (from Manu Bretelle) instead of .tpkg. + - Fix svn hooks for tdir (selected if testcode/mini_tdir.sh exists).. + +4 July 2017: Wouter + - Fix 1332: Bump verbosity of failed chown'ing of the control socket. + +3 July 2017: Wouter + - Fix for unbound-checkconf, check ipsecmod-hook if ipsecmod is turned + on. + - Fix #1331: libunbound segfault in threaded mode when context is + deleted. + - Fix pythonmod link line option flag. + - Fix openssl 1.1.0 load of ssl error strings from ssl init. + +29 June 2017: Wouter + - Fix python example0 return module wait instead of error for pass. + - iana portlist update + - enhancement for hardened-tls for DNS over TLS. Removed duplicated + security settings. + +27 June 2017: Wouter + - Tag 1.6.4 is created with the 1.6.4rc2 contents. + - Trunk contains 1.6.5, with changes from 26, 27 june. + - Remove signed unsigned warning from authzone. + - Fix that infra cache host hash does not change after reconfig. + +26 June 2017: Wouter + - (for 1.6.5) + Better fixup of dnscrypt_cert_chacha test for different escapes. + - First fix for zero b64 and hex text zone format in sldns. + - unbound-control dump_infra prints port number for address if not 53. + +23 June 2017: Wouter + - (for 1.6.5): fixup of dnscrypt_cert_chacha test (from Manu Bretelle). + +22 June 2017: Wouter + - Tag 1.6.4rc2 + +22 June 2017: Ralph + - Added fastrpz patch to contrib + +21 June 2017: Wouter + - Fix #1316: heap read buffer overflow in parse_edns_options. + +20 June 2017: Wouter + - Fix warning in pythonmod under clang compiler. + - Tag 1.6.4rc1 + - Fix lintian typo. + +16 June 2017: Ralph + - Fix #1277: disable domain ratelimit by setting value to 0. + +16 June 2017: Wouter + - Fix #1301: memory leak in respip and tests. + - Free callback in edns-subnetmod on exit and restart. + - Fix memory leak in sldns_buffer_new_frm_data. + - Fix memory leak in dnscrypt config read. + - Fix dnscrypt chacha cert support ifdefs. + - Fix dnscrypt chacha cert unit test escapes in grep. + - Remove asynclook tests that cause test and purifier problems. + - Fix to unlock view in view test. + +15 June 2017: Wouter + - Fix stub zone queries leaking to the internet for + harden-referral-path ns checks. + - Fix query for refetch_glue of stub leaking to internet. + +13 June 2017: Wouter + - Fix #1279: Memory leak on reload when python module is enabled. + - Fix #1280: Unbound fails assert when response from authoritative + contains malformed qname. When 0x20 caps-for-id is enabled, when + assertions are not enabled the malformed qname is handled correctly. + - 1.6.3 tag created, with only #1280 fix, trunk is 1.6.4 development. + - More fixes in depth for buffer checks in 0x20 qname checks. + +12 June 2017: Wouter + - Fix #1278: Incomplete wildcard proof. + +8 June 2017: Ralph + - Added domain name based ECS whitelist. + +8 June 2017: Wouter + - Detect chacha for dnscrypt at configure time. + - dnscrypt unit tests with chacha. + +7 June 2017: Wouter + - Fix that unbound-control can set val_clean_additional and val_permissive_mode. + - Add dnscrypt XChaCha20 tests. + +6 June 2017: Wouter + - Add an explicit type cast for TCP FASTOPEN fix. + - renumbering B-Root's IPv6 address to 2001:500:200::b. + - Fix #1275: cached data in cachedb is never used. + - Fix #1276: [dnscrypt] add XChaCha20-Poly1305 cipher. + +1 June 2017: Ralph + - Fix #1274: automatically trim chroot path from dnscrypt key/cert paths + (from Manu Bretelle). + +1 June 2017: Wouter + - Fix fastopen EPIPE fallthrough to perform connect. + +31 May 2017: Ralph + - Also use global local-zones when there is a matching view that does + not have any local-zone specified. + +31 May 2017: Wouter + - Fix #1273: cachedb.c doesn't compile with -Wextra. + - If MSG_FASTOPEN gives EPIPE fallthrough to try normal tcp write. + +30 May 2017: Ralph + - Fix #1269: inconsistent use of built-in local zones with views. + - Add defaults for new local-zone trees added to views using + unbound-control. + +30 May 2017: Wouter + - Support for openssl EVP_DigestVerify. + - Support for the ED25519 algorithm with openssl (from openssl 1.1.1). + +29 May 2017: Wouter + - Fix assertion for low buffer size and big edns payload when worker + overrides udpsize. + +26 May 2017: Ralph + - Added redirect-bogus.patch to contrib directory. + +26 May 2017: Wouter + - Fix #1270: unitauth.c doesn't compile with higher warning level + and optimization + - exec_prefix is by default equal to prefix. + - printout localzone for duplicate local-zone warnings. + +24 May 2017: Wouter + - authzone cname chain, no rrset duplicates, wildcard doesn't change + rrsets added for cname chain. + +23 May 2017: Wouter + - first services/authzone check in, it compiles and reads and writes + zonefiles. + - iana portlist update + +22 May 2017: Wouter + - Fix #1268: SIGSEGV after log_reopen. + +18 May 2017: Wouter + - Fix #1265 to use /bin/kill. + - Fix #1267: Libunbound validator/val_secalgo.c uses obsolete APIs, + and compatibility with BoringSSL. + +17 May 2017: Wouter + - Fix #1265: contrib/unbound.service contains hardcoded path. + +17 May 2017: George + - Use qstate's region for IPSECKEY rrset (ipsecmod). + +16 May 2017: George + - Implemented opportunistic IPsec support module (ipsecmod). + - Some whitespace fixup. + +16 May 2017: Wouter + - updated dependencies in the makefile. + - document trust-anchor-signaling in example config file. + - updated configure, dependencies and flex output. + - better module memory lookup, fix of unbound-control shm names for + module memory printout of statistics. + - Fix type AVC sldns rrdef. + +12 May 2017: Wouter + - Adjust servfail by iterator to not store in cache when serve-expired + is enabled, to avoid overwriting useful information there. + - Fix queries for nameservers under a stub leaking to the internet. + +9 May 2017: Ralph + - Add 'c' to getopt() in testbound. + - iana portlist update + +8 May 2017: Wouter + - Fix tcp-mss failure printout text. + - Set SO_REUSEADDR on outgoing tcp connections to fix the bind before + connect limited tcp connections. With the option tcp connections + can share the same source port (for different destinations). + +2 May 2017: Ralph + - Added mesh_add_sub to add detached mesh entries. + - Use mesh_add_sub for key tag signaling query. + +2 May 2017: Wouter + - Added test for leak of stub information. + - Fix sldns wire2str printout of RR type CAA tags. + - Fix sldns int16_data parse. + - Fix sldns parse and printout of TSIG RRs. + - sldns SMIMEA and AVC definitions, same as getdns definitions. + +1 May 2017: Wouter + - Fix #1259: "--disable-ecdsa" argument overwritten + by "#ifdef SHA256_DIGEST_LENGTH@daemon/remote.c". + - iana portlist update + - Fix #1258: Windows 10 X64 unbound 1.6.2 service will not start. + and fix that 64bit getting installed in C:\Program Files (x86). + +26 April 2017: Ralph + - Implemented trust anchor signaling using key tag query. + +26 April 2017: Wouter + - Based on #1257: check parse limit before t increment in sldns RR + string parse routine. + +24 April 2017: Wouter + - unbound-checkconf -o allows query of dnstap config variables. + Also unbound-control get_option. Also for dnscrypt. + - trunk contains 1.6.3 version number (changes from 1.6.2 back from + when the 1.6.2rc1 tag has been created). + +21 April 2017: Ralph + - Fix #1254: clarify ratelimit-{for,below}-domain (from Manu Bretelle). + - iana portlist update + +18 April 2017: Ralph + - Fix #1252: more indentation inconsistencies. + - Fix #1253: unused variable in edns-subnet/addrtree.c:getbit(). + +13 April 2017: Ralph + - Added ECS unit test (from Manu Bretelle). + - ECS documentation fix (from Manu Bretelle). + +13 April 2017: Wouter + - Fix #1250: inconsistent indentation in services/listen_dnsport.c. + - tag for 1.6.2rc1 + - (for 1.6.3:) unbound.h exports the shm stats structures. They use + type long long and no ifdefs, and ub_ before the typenames. + +12 April 2017: Wouter + - subnet mem value is available in shm, also when not enabled, + to make the struct easier to memmap by other applications, + independent of the configuration of unbound. + +12 April 2017: Ralph + - Fix #1247: unbound does not shorten source prefix length when + forwarding ECS. + - Properly check for allocation failure in local_data_find_tag_datas. + - Fix #1249: unbound doesn't return FORMERR to bogus ECS. + - Set SHM ECS memory usage to 0 when module not loaded. + +11 April 2017: Ralph + - Display ECS module memory usage. + +10 April 2017: Wouter + - harden-algo-downgrade: no also makes unbound more lenient about + digest algorithms in DS records. + +10 April 2017: Ralph + - Remove ECS option after REFUSED answer. + - Fix small memory leak in edns_opt_copy_alloc. + - Respip dereference after NULL check. + - Zero initialize addrtree allocation. + - Use correct identifier for SHM destroy. + +7 April 2017: George + - Fix pythonmod for cb changes. + - Some whitespace fixup. + +7 April 2017: Ralph + - Unlock view in respip unit test + +6 April 2017: Ralph + - Generalise inplace callback (de)registration + - (de)register inplace callbacks for module id + - No unbound-control set_option for ECS options + - Deprecated client-subnet-opcode config option + - Introduced client-subnet-always-forward config option + - Changed max-client-subnet-ipv6 default to 56 (as in RFC) + - Removed extern ECS config options + - module_restart_next now calls clear on all following modules + - Also create ECS module qstate on module_event_pass event + - remove malloc from inplace_cb_register + +6 April 2017: Wouter + - Small fixup for documentation. + - iana portlist update + - Fix respip for braces when locks arent used. + - Fix pythonmod for cb changes. + +4 April 2017: Wouter + - Fix #1244: document that use of chroot requires trust anchor file to + be under chroot. + - iana portlist update + +3 April 2017: Ralph + - Do not add current time twice to TTL before ECS cache store. + - Do not touch rrset cache after ECS cache message generation. + - Use LDNS_EDNS_CLIENT_SUBNET as default ECS opcode. + +3 April 2017: Wouter + - Fix #1217: Add metrics to unbound-control interface showing + crypted, cert request, plaintext and malformed queries (from + Manu Bretelle). + - iana portlist update + +27 March 2017: Wouter + - Remove (now unused) event2 include from dnscrypt code. + +24 March 2017: George + - Fix to prevent non-referal query from being cached as referal when the + no_cache_store flag was set. + +23 March 2017: Wouter + - Fix #1239: configure fails to find python distutils if python + prints warning. + +22 March 2017: Wouter + - Fix #1238: segmentation fault when adding through the remote + interface a per-view local zone to a view with no previous + (configured) local zones. + - Fix #1229: Systemd service sandboxing, options in wrong sections. + +21 March 2017: Ralph + - Merge EDNS Client subnet implementation from feature branch into main + branch, using new EDNS processing framework. + +21 March 2017: Wouter + - Fix doxygen for dnscrypt files. + +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. + - lru_demote and lruhash_insert_or_retrieve functions for getdns. + - fixup for lruhash (whitespace and header file comment). + - dnscrypt tests. + +17 March 2017: Wouter + - Patch for view functionality for local-data-ptr from Björn Ketelaars. + - Fix #1237 - Wrong resolving in chain, for norec queries that get + SERVFAIL returned. + +16 March 2017: Wouter + - Fix that SHM is not inited if not enabled. + - Add trustanchor.unbound CH TXT that gets a response with a number + of TXT RRs with a string like "example.com. 2345 1234" with + the trust anchors and their keytags. + - Fix that looped DNAMEs do not cause unbound to spend effort. + - trustanchor tags are sorted. reusable routine to fetch taglist. + +13 March 2017: Wouter + - testbound understands Deckard MATCH rcode question answer commands. + - Fix #1235: Fix too long DNAME expansion produces SERVFAIL instead + of YXDOMAIN + query loop, reported by Petr Spacek. + +10 March 2017: Wouter + - Fix #1234: shortening DNAME loop produces duplicate DNAME records + in ANSWER section. + +9 March 2017: Wouter + - --disable-sha1 disables SHA1 support in RRSIG, so from DNSKEY and + DS records. NSEC3 is not disabled. + - fake-sha1 test option; print warning if used. To make unit tests. + - unbound-control list local zone and data commands listed in the + help output. + +8 March 2017: Wouter + - make depend for build dependencies. + - swig version 2.0.1 required. + - fix enum conversion warnings + +7 March 2017: Wouter + - Fix #1230: swig version 2.0.0 is required for pythonmod, with + 1.3.40 it crashes when running repeatly unbound-control reload. + - Response actions based on IP address from Jinmei Tatuya (Infoblox). + +6 March 2017: Wouter + - Fix #1229: Systemd service sandboxing in contrib/unbound.service. + - iana portlist update + +28 February 2017: Ralph + - Fix testpkts.c, check if DO bit is set, not only if there is an OPT + record. + +28 February 2017: Wouter + - For #1227: if we have sha256, set the cipher list to have no + known vulns. + +27 February 2017: Wouter + - Fix #1227: Fix that Unbound control allows weak ciphersuits. + - Fix #1226: provide official 32bit binary for windows. + +24 February 2017: Wouter + - include sys/time.h for new shm code on NetBSD. + +23 February 2017: Wouter + - Fix doc/CNAME-basedRedirectionDesignNotes.pdf zone static to + redirect. + - Patch from Luiz Fernando Softov for Stats Shared Memory. + - unbound-control stats_shm command prints stats using shared memory, + which uses less cpu. + - make depend, autoconf, doxygen and lint fixed up. + +22 February 2017: Wouter + - Fix #1224: Fix that defaults should not fall back to "Program Files + (x86) if Unbound is 64bit by default on windows. + +21 February 2017: Wouter + - iana portlist update + +16 February 2017: Wouter + - sldns updated for vfixed and buffer resize indication from getdns. + +15 February 2017: Wouter + - sldns has ED25519 and ED448 algorithm number and name for display. + +14 February 2017: Wouter + - tag 1.6.1rc3. -- which became 1.6.1 on 21feb, trunk has 1.6.2 + +13 February 2017: Wouter + - Fix autoconf of systemd check for lack of pkg-config. + +10 February 2017: Wouter + - Fix pythonmod for typedef changes. + - Fix dnstap for warning of set but not used. + - tag 1.6.1rc2. + +9 February 2017: Wouter + - tag 1.6.1rc1. + +8 February 2017: Wouter + - Fix for type name change and fix warning on windows compile. + +7 February 2017: Wouter + - Include root trust anchor id 20326 in unbound-anchor. + +6 February 2017: Wouter + - Fix compile on solaris of the fix to use $host detect. + +4 February 2017: Wouter + - fix root_anchor test for updated icannbundle.pem lower certificates. + +26 January 2017: Wouter + - Fix 1211: Fix can't enable interface-automatic if no IPv6 with + more helpful error message. + +20 January 2017: Wouter + - Increase MAX_MODULE to 16. + +19 January 2017: Wouter + - Fix to Rename ub_callback_t to ub_callback_type, because POSIX + reserves _t typedefs. + - Fix to rename internally used types from _t to _type, because _t + type names are reserved by POSIX. + - iana portlist update + +12 January 2017: Wouter + - Fix to also block meta types 128 through to 248 with formerr. + - Fix #1206: Some view-related commands are missing from 'unbound-control -h' + +9 January 2017: Wouter + - Fix #1202: Fix code comment that packed_rrset_data is not always + 'packed'. + +6 January 2017: Wouter + - Fix #1201: Fix missing unlock in answer_from_cache error condition. + +5 January 2017: Wouter + - Fix to return formerr for queries for meta-types, to avoid + packet amplification if this meta-type is sent on to upstream. + - Fix #1184: Log DNS replies. This includes the same logging + information that DNS queries and response code and response size, + patch from Larissa Feng. + - Fix #1187: Source IP rate limiting, patch from Larissa Feng. + +3 January 2017: Wouter + - configure --enable-systemd and lets unbound use systemd sockets if + you enable use-systemd: yes in unbound.conf. + Also there are contrib/unbound.socket and contrib/unbound.service: + systemd files for unbound, install them in /usr/lib/systemd/system. + Contributed by Sami Kerola and Pavel Odintsov. + - Fix reload chdir failure when also chrooted to that directory. + +2 January 2017: Wouter + - Fix #1194: Cross build fails when $host isn't `uname` for getentropy. + +23 December 2016: Ralph + - Fix #1190: Do not echo back EDNS options in local-zone error response. + - iana portlist update + +21 December 2016: Ralph + - Fix #1188: Unresolved symbol 'fake_dsa' in libunbound.so when built + with Nettle + +19 December 2016: Ralph + - Fix #1191: remove comment about view deletion. + +15 December 2016: Wouter + - iana portlist update + - 64bit is default for windows builds. + - Fix inet_ntop and inet_pton warnings in windows compile. + +14 December 2016: Wouter + - Fix #1178: attempt to fix setup error at end, pop result values + at end of install. + +13 December 2016: Wouter + - Fix #1182: Fix Resource leak (socket), at startup. + - Fix unbound-control and ipv6 only. + +9 December 2016: Wouter + - Fix #1176: stack size too small for Alpine Linux. + +8 December 2016: Wouter + - Fix downcast warnings from visual studio in sldns code. + - tag 1.6.0rc1 which became 1.6.0 on 15 dec, and trunk is 1.6.1. + +7 December 2016: Ralph + - Add DSA support for OpenSSL 1.1.0 + - Fix remote control without cert for LibreSSL + +6 December 2016: George + - Added generic EDNS code for registering known EDNS option codes, + bypassing the cache response stage and uniquifying mesh states. Four EDNS + option lists were added to module_qstate (module_qstate.edns_opts_*) to + store EDNS options from/to front/back side. + - Added two flags to module_qstate (no_cache_lookup, no_cache_store) that + control the modules' cache interactions. + - Added code for registering inplace callback functions. The registered + functions can be called just before replying with local data or Chaos, + replying from cache, replying with SERVFAIL, replying with a resolved + query, sending a query to a nameserver. The functions can inspect the + available data and maybe change response/query related data (i.e. append + EDNS options). + - Updated Python module for the above. + - Updated Python documentation. + +5 December 2016: Ralph + - Fix #1173: differ local-zone type deny from unset + tag_actions element. + +5 December 2016: Wouter + - Fix #1170: document that 'inform' local-zone uses local-data. + +1 December 2016: Ralph + - hyphen as minus fix, by Andreas Schulze + +30 November 2016: Ralph + - Added local-zones and local-data bulk addition and removal + functionality in unbound-control (local_zones, local_zones_remove, + local_datas and local_datas_remove). + - iana portlist update + +29 November 2016: Wouter + - version 1.6.0 is in the development branch. + - braces in view.c around lock statements. + +28 November 2016: Wouter + - new install-sh. + +25 November 2016: Wouter + - Fix that with openssl 1.1 control-use-cert: no uses less cpu, by + using no encryption over the unix socket. + +22 Novenber 2016: Ralph + - Make access-control-tag-data RDATA absolute. This makes the RDATA + origin consistent between local-data and access-control-tag-data. + - Fix NSEC ENT wildcard check. Matching wildcard does not have to be a + subdomain of the NSEC owner. + - QNAME minimisation uses QTYPE=A, therefore always check cache for + this type in harden-below-nxdomain functionality. + - Added unit test for QNAME minimisation + harden below nxdomain + synergy. + +22 November 2016: Wouter + - iana portlist update. + - Fix unit tests for DS hash processing for fake-dsa test option. + - patch from Dag-Erling Smorgrav that removes code that relies + on sbrk(). + +21 November 2016: Wouter + - Fix #1158: reference RFC 8020 "NXDOMAIN: There Really Is Nothing + Underneath" for the harden-below-nxdomain option. + +10 November 2016: Ralph + - Fix #1155: test status code of unbound-control in 04-checkconf, + not the status code from the tee command. + +4 November 2016: Ralph + - Added stub-ssl-upstream and forward-ssl-upstream options. + +4 November 2016: Wouter + - configure detects ssl security level API function in the autoconf + manner. Every function on its own, so that other libraries (eg. + LibreSSL) can develop their API without hindrance. + - Fix #1154: segfault when reading config with duplicate zones. + - Note that for harden-below-nxdomain the nxdomain must be secure, + this means nsec3 with optout is insufficient. + +3 November 2016: Ralph + - Set OpenSSL security level to 0 when using aNULL ciphers. + +3 November 2016: Wouter + - .gitattributes line for githubs code language display. + - log-identity: config option to set sys log identity, patch from + "Robin H. Johnson" + +2 November 2016: Wouter + - iana portlist update. + +31 October 2016: Wouter + - Fix failure to build on arm64 with no sbrk. + - iana portlist update. + +28 October 2016: Wouter + - Patch for server.num.zero_ttl stats for count of expired replies, + from Pavel Odintsov. + +26 October 2016: Wouter + - Fix unit tests for openssl 1.1, with no DSA, by faking DSA, enabled + with the undocumented switch 'fake-dsa'. It logs a warning. + +25 October 2016: Wouter + - Fix #1134: unbound-control set_option -- val-override-date: -1 works + immediately to ignore datetime, or back to 0 to enable it again. + The -- is to ignore the '-1' as an option flag. + +24 October 2016: Wouter + - serve-expired config option: serve expired responses with TTL 0. + - g.root-servers.net has AAAA address. + +21 October 2016: Wouter + - Ported tests for local_cname unit test to testbound framework. + +20 October 2016: Wouter + - suppress compile warning in lex files. + - init lzt variable, for older gcc compiler warnings. + - fix --enable-dsa to work, instead of copying ecdsa enable. + - Fix DNSSEC validation of query type ANY with DNAME answers. + - Fixup query_info local_alias init. + +19 October 2016: Wouter + - Fix #1130: whitespace in example.conf.in more consistent. + +18 October 2016: Wouter + - Patch that resolves CNAMEs entered in local-data conf statements that + point to data on the internet, from Jinmei Tatuya (Infoblox). + - Removed patch comments from acllist.c and msgencode.c + - Added documentation doc/CNAME-basedRedirectionDesignNotes.pdf, + from Jinmei Tatuya (Infoblox). + - Fix #1125: unbound could reuse an answer packet incorrectly for + clients with different EDNS parameters, from Jinmei Tatuya. + - Fix #1118: libunbound.pc sets strange Libs, Libs.private values. + - Added Requires line to libunbound.pc + - Please doxygen by modifying mesh.h + +17 October 2016: Wouter + - Re-fix #839 from view commit overwrite. + - Fixup const void cast warning. + +12 October 2016: Ralph + - Free view config elements. + +11 October 2016: Ralph + - Added qname-minimisation-strict config option. + - iana portlist update. + - fix memoryleak logfile when in debug mode. + +5 October 2016: Ralph + - Added views functionality. + - Fix #1117: spelling errors, from Robert Edmonds. + +30 September 2016: Wouter + - Fix Nits for 1.5.10 reported by Dag-Erling Smorgrav. + +29 September 2016: Wouter + - Fix #838: 1.5.10 cannot be built on Solaris, undefined PATH_MAX. + - Fix #839: Memory grows unexpectedly with large RPZ files. + - Fix #840: infinite loop in unbound_munin_ plugin on unowned lockfile. + - Fix #841: big local-zone's make it consume large amounts of memory. + +27 September 2016: Wouter + - tag for 1.5.10 release + - trunk contains 1.5.11 in development. + - Fix dnstap relaying "random" messages instead of resolver/forwarder + responses, from Nikolay Edigaryev. + - Fix #836: unbound could echo back EDNS options in an error response. + +20 September 2016: Wouter + - iana portlist update. + - Fix #835: fix --disable-dsa with nettle verify. + - tag for 1.5.10rc1 release. + +15 September 2016: Wouter + - Fix 883: error for duplicate local zone entry. + - Test for openssl init_crypto and init_ssl functions. + +15 September 2016: Ralph + - fix potential memory leak in daemon/remote.c and nullpointer + dereference in validator/autotrust. + - iana portlist update. + +13 September 2016: Wouter + - Silenced flex-generated sign-unsigned warning print with gcc + diagnostic pragma. + - Fix for new splint on FreeBSD. Fix cast for sockaddr_un.sun_len. + +9 September 2016: Wouter + - Fix #831: workaround for spurious fread_chk warning against petal.c + +5 September 2016: Ralph + - Take configured minimum TTL into consideration when reducing TTL + to original TTL from RRSIG. + +5 September 2016: Wouter + - Fix #829: doc of sldns_wire2str_rdata_buf() return value has an + off-by-one typo, from Jinmei Tatuya (Infoblox). + - Fix incomplete prototypes reported by Dag-Erling Smørgrav. + - Fix #828: missing type in access-control-tag-action redirect results + in NXDOMAIN. + +2 September 2016: Wouter + - Fix compile with openssl 1.1.0 with api=1.1.0. + +1 September 2016: Wouter + - RFC 7958 is now out, updated docs for unbound-anchor. + - Fix for compile without warnings with openssl 1.1.0. + - Fix #826: Fix refuse_non_local could result in a broken response. + - iana portlist update. + +29 August 2016: Wouter + - Fix #777: OpenSSL 1.1.0 compatibility, patch from Sebastian A. + Siewior. + - Add default root hints for IPv6 E.ROOT-SERVERS.NET, 2001:500:a8::e. + +25 August 2016: Ralph + - Clarify local-zone-override entry in unbound.conf.5 + +25 August 2016: Wouter + - 64bit build option for makedist windows compile, -w64. + +24 August 2016: Ralph + - Fix #820: set sldns_str2wire_rr_buf() dual meaning len parameter + in each iteration in find_tag_datas(). + - unbound.conf.5 entries for define-tag, access-control-tag, + access-control-tag-action, access-control-tag-data, local-zone-tag, + and local-zone-override. + +23 August 2016: Wouter + - Fix #804: unbound stops responding after outage. Fixes queries + that attempt to wait for an empty list of subqueries. + - Fix #804: lower num_target_queries for iterator also for failed + lookups. + +8 August 2016: Wouter + - Note that OPENPGPKEY type is RFC 7929. + +4 August 2016: Wouter + - Fix #807: workaround for possible some "unused" function parameters + in test code, from Jinmei Tatuya. + +3 August 2016: Wouter + - use sendmsg instead of sendto for TFO. + +28 July 2016: Wouter + - Fix #806: wrong comment removed. + +26 July 2016: Wouter + - nicer ratelimit-below-domain explanation. + +22 July 2016: Wouter + - Fix #801: missing error condition handling in + daemon_create_workers(). + - Fix #802: workaround for function parameters that are "unused" + without log_assert. + - Fix #803: confusing (and incorrect) code comment in daemon_cleanup(). + +20 July 2016: Wouter + - Fix typo in unbound.conf. + +18 July 2016: Wouter + - Fix #798: Client-side TCP fast open fails (Linux). + +14 July 2016: Wouter + - TCP Fast open patch from Sara Dickinson. + - Fixed unbound.doxygen for 1.8.11. + +7 July 2016: Wouter + - access-control-tag-data implemented. verbose(4) prints tag debug. + +5 July 2016: Wouter + - Fix dynamic link of anchor-update.exe on windows. + - Fix detect of mingw for MXE package build. + - Fixes for 64bit windows compile. + - Fix #788 for nettle 3.0: Failed to build with Nettle >= 3.0 and + --with-libunbound-only --with-nettle. + +4 July 2016: Wouter + - For #787: prefer-ip6 option for unbound.conf prefers to send + upstream queries to ipv6 servers. + - Fix #787: outgoing-interface netblock/64 ipv6 option to use linux + freebind to use 64bits of entropy for every query with random local + part. + +30 June 2016: Wouter + - Document always_transparent, always_refuse, always_nxdomain types. + +29 June 2016: Wouter + - Fix static compile on windows missing gdi32. + +28 June 2016: Wouter + - Create a pkg-config file for libunbound in contrib. + +27 June 2016: Wouter + - Fix #784: Build configure assumess that having getpwnam means there + is endpwent function available. + - Updated repository with newer flex and bison output. + +24 June 2016: Ralph + - Possibility to specify local-zone type for an acl/tag pair + - Possibility to specify (override) local-zone type for a source address + block +16 June 2016: Ralph + - Decrease dp attempts at each QNAME minimisation iteration + +16 June 2016: Wouter + - Fix tcp timeouts in tv.usec. + +15 June 2016: Wouter + - TCP_TIMEOUT is specified in milliseconds. + - If more than half of tcp connections are in use, a shorter timeout + is used (200 msec, vs 2 minutes) to pressure tcp for new connects. + +14 June 2016: Ralph + - QNAME minimisation unit test for dropped QTYPE=A queries. + +14 June 2016: Wouter + - Fix 775: unbound-host and unbound-anchor crash on windows, ignore + null delete for wsaevent. + - Fix spelling in freebind option man page text. + - Fix windows link of ssl with crypt32. + - Fix 779: Union casting is non-portable. + - Fix 780: MAP_ANON not defined in HP-UX 11.31. + - Fix 781: prealloc() is an HP-UX system library call. + +13 June 2016: Ralph + - Use QTYPE=A for QNAME minimisation. + - Keep track of number of time-outs when performing QNAME minimisation. + Stop minimising when number of time-outs for a QNAME/QTYPE pair is + more than three. + +13 June 2016: Wouter + - Fix #778: unbound 1.5.9: -h segfault (null deref). + - Fix directory: fix for unbound-checkconf, it restores cwd. + +10 June 2016: Wouter + - And delete service.conf.shipped on uninstall. + - In unbound.conf directory: dir immediately changes to that directory, + so that include: file below that is relative to that directory. + With chroot, make the directory an absolute path inside chroot. + - keep debug symbols in windows build. + - do not delete service.conf on windows uninstall. + - document directory immediate fix and allow EXECUTABLE syntax in it + on windows. + +9 June 2016: Wouter + - Trunk is called 1.5.10 (with previous fixes already in there to 2 + june). + - Revert fix for NetworkService account on windows due to breakage + it causes. + - Fix that windows install will not overwrite existing service.conf + file (and ignore gui config choices if it exists). + +7 June 2016: Ralph + - Lookup localzones by taglist from acl. + - Possibility to lookup local_zone, regardless the taglist. + - Added local_zone/taglist/acl unit test. + +7 June 2016: Wouter + - Fix #773: Non-standard Python location build failure with pyunbound. + - Improve threadsafety for openssl 0.9.8 ecdsa dnssec signatures. + +6 June 2016: Wouter + - Better help text from -h (from Ray Griffith). + - access-control-tag config directive. + - local-zone-override config directive. + - access-control-tag-action and access-control-tag-data config + directives. + - free acl-tags, acltag-action and acltag-data config lists during + initialisation to free up memory for more entries. + +3 June 2016: Wouter + - Fix to not ignore return value of chown() in daemon startup. + +2 June 2016: Wouter + - Fix libubound for edns optlist feature. + - Fix distinction between free and CRYPTO_free in dsa and ecdsa alloc. + - Fix #752: retry resource temporarily unavailable on control pipe. + - un-document localzone tags. + - tag for release 1.5.9rc1. + And this also became release 1.5.9. + - Fix (for 1.5.10): Fix unbound-anchor.exe file location defaults to + Program Files with (x86) appended. + - re-documented localzone tags in example.conf. + +31 May 2016: Wouter + - Fix windows service to be created run with limited rights, as a + network service account, from Mario Turschmann. + - compat strsep implementation. + - generic edns option parse and store code. + - and also generic edns options for upstream messages (and replies). + after parse use edns_opt_find(edns.opt_list, LDNS_EDNS_NSID), + to insert use edns_opt_append(edns, region, code, len, bindata) on + the opt_list passed to send_query, or in edns_opt_inplace_reply. + +30 May 2016: Wouter + - Fix time in case answer comes from cache in ub_resolve_event(). + - Attempted fix for #765: _unboundmodule missing for python3. + +27 May 2016: Wouter + - Fix #770: Small subgroup attack on DH used in unix pipe on localhost + if unbound control uses a unix local named pipe. + - Document write permission to directory of trust anchor needed. + - Fix #768: Unbound Service Sometimes Can Not Shutdown + Completely, WER Report Shown Up. Close handle before closing WSA. + +26 May 2016: Wouter + - Updated patch from Charles Walker. + +24 May 2016: Wouter + - disable-dnssec-lame-check config option from Charles Walker. + - remove memory leak from lame-check patch. + - iana portlist update. + +23 May 2016: Wouter + - Fix #767: Reference to an expired Internet-Draft in + harden-below-nxdomain documentation. + +20 May 2016: Ralph + - No QNAME minimisation fall-back for NXDOMAIN answers from DNSSEC + signed zones. + - iana portlist update. + +19 May 2016: Wouter + - Fix #766: dns64 should synthesize results on timeout/errors. + +18 May 2016: Wouter + - Fix #761: DNSSEC LAME false positive resolving nic.club. + +17 May 2016: Wouter + - trunk updated with output of flex 2.6.0. + +6 May 2016: Wouter + - Fix memory leak in out-of-memory conditions of local zone add. + +29 April 2016: Wouter + - Fix sldns with static checking fixes copied from getdns. + +28 April 2016: Wouter + - Fix #759: 0x20 capsforid no longer checks type PTR, for + compatibility with cisco dns guard. This lowers false positives. + +18 April 2016: Wouter + - Fix some malformed reponses to edns queries get fallback to nonedns. + +15 April 2016: Wouter + - cachedb module event handling design. + +14 April 2016: Wouter + - cachedb module framework (empty). + - iana portlist update. + +12 April 2016: Wouter + - Fix #753: document dump_requestlist is for first thread. + +24 March 2016: Wouter + - Document permit-small-holddown for 5011 debug. + - Fix #749: unbound-checkconf gets SIGSEGV when use against a + malformatted conf file. + +23 March 2016: Wouter + - OpenSSL 1.1.0 portability, --disable-dsa configure option. + +21 March 2016: Wouter + - Fix compile of getentropy_linux for SLES11 servicepack 4. + - Fix dnstap-log-resolver-response-messages, from Nikolay Edigaryev. + - Fix test for openssl to use HMAC_Update for 1.1.0. + - acx_nlnetlabs.m4 to v33, with HMAC_Update. + - acx_nlnetlabs.m4 to v34, with -ldl -pthread test for libcrypto. + - ERR_remove_state deprecated since openssl 1.0.0. + - OPENSSL_config is deprecated, removing. + +18 March 2016: Ralph + - Validate QNAME minimised NXDOMAIN responses. + - If QNAME minimisation is enabled, do cache lookup for QTYPE NS in + harden-below-nxdomain. + +17 March 2016: Ralph + - Limit number of QNAME minimisation iterations. + +17 March 2016: Wouter + - Fix #746: Fix unbound sets CD bit on all forwards. + If no trust anchors, it'll not set CD bit when forwarding to another + server. If a trust anchor, no CD bit on the first attempt to a + forwarder, but CD bit thereafter on repeated attempts to get DNSSEC. + - iana portlist update. + +16 March 2016: Wouter + - Fix ip-transparent for ipv6 on FreeBSD, thanks to Nick Hibma. + - Fix ip-transparent for tcp on freebsd. + +15 March 2016: Wouter + - ip_freebind: yesno option in unbound.conf sets IP_FREEBIND for + binding to an IP address while the interface or address is down. + +14 March 2016: Wouter + - Fix warnings in ifdef corner case, older or unknown libevent. + - Fix compile for ub_event code with older libev. + +11 March 2016: Wouter + - Remove warning about unused parameter in event_pluggable.c. + - Fix libev usage of dispatch return value. + - No side effects in tolower() call, in case it is a macro. + - For test put free in pluggable api in parenthesis. + +10 March 2016: Wouter + - Fixup backend2str for libev. + +09 March 2016: Willem + - User defined pluggable event API for libunbound + - Fixup of compile fix for pluggable event API from P.Y. Adi + Prasaja. + +09 March 2016: Wouter + - Updated configure and ltmain.sh. + - Updated L root IPv6 address. + +07 March 2016: Wouter + - Fix #747: assert in outnet_serviced_query_stop. + - iana ports fetched via https. + - iana portlist update. + +03 March 2016: Wouter + - configure tests for the weak attribute support by the compiler. + +02 March 2016: Wouter + - 1.5.8 release tag + - trunk contains 1.5.9 in development. + - iana portlist update. + - Fix #745: unbound.py - idn2dname throws UnicodeError when idnname + contains trailing dot. + +24 February 2016: Wouter + - Fix OpenBSD asynclook lock free that gets used later (fix test code). + - Fix that NSEC3 negative cache is used when there is no salt. + +23 February 2016: Wouter + - ub_ctx_set_stub() function for libunbound to config stub zones. + - sorted ubsyms.def file with exported libunbound functions. + +19 February 2016: Wouter + - Print understandable debug log when unusable DS record is seen. + - load gost algorithm if digest is seen before key algorithm. + - iana portlist update. + +17 February 2016: Wouter + - Fix that "make install" fails due to "text file busy" error. + +16 February 2016: Wouter + - Set IPPROTO_IP6 for ipv6 sockets otherwise invalid argument error. + +15 February 2016: Wouter + - ip-transparent option for FreeBSD with IP_BINDANY socket option. + - wait for sendto to drain socket buffers when they are full. + +9 February 2016: Wouter + - Test for type OPENPGPKEY. + - insecure-lan-zones: yesno config option, patch from Dag-Erling + Smørgrav. + +8 February 2016: Wouter + - Fix patch typo in prevuous commit for 734 from Adi Prasaja. + - RR Type CSYNC support RFC 7477, in debug printout and config input. + - RR Type OPENPGPKEY support (draft-ietf-dane-openpgpkey-07). + +29 January 2016: Wouter + - Neater cmdline_verbose increment patch from Edgar Pettijohn. + +27 January 2016: Wouter + - Made netbsd sendmsg test nonfatal, in case of false positives. + - Fix #741: log message for dnstap socket connection is more clear. + +26 January 2016: Wouter + - Fix #734: chown the pidfile if it resides inside the chroot. + - Use arc4random instead of random in tests (because it is + available, possibly as compat, anyway). + - Fix cmsg alignment for argument to sendmsg on NetBSD. + - Fix that unbound complains about unimplemented IP_PKTINFO for + sendmsg on NetBSD (for interface-automatic). + +25 January 2016: Wouter + - Fix #738: Swig should not be invoked with CPPFLAGS. + +19 January 2016: Wouter + - Squelch 'cannot assign requested address' log messages unless + verbosity is high, it was spammed after network down. + +14 January 2016: Wouter + - Fix to simplify empty string checking from Michael McConville. + - iana portlist update. + +12 January 2016: Wouter + - Fix #734: Do not log an error when the PID file cannot be chown'ed. + Patch from Simon Deziel. + +11 January 2016: Wouter + - Fix test if -pthreads unused to use better grep for portability. + +06 January 2016: Wouter + - Fix mingw crosscompile for recent mingw. + - Update aclocal, autoconf output with new versions (1.15, 2.4.6). + +05 January 2016: Wouter + - #731: tcp-mss, outgoing-tcp-mss options for unbound.conf, patch + from Daisuke Higashi. + - Support RFC7686: handle ".onion" Special-Use Domain. It is blocked + by default, and can be unblocked with "nodefault" localzone config. + +04 January 2016: Wouter + - Define DEFAULT_SOURCE together with BSD_SOURCE when that is defined, + for Linux glibc 2.20. + - Fixup contrib/aaaa-filter-iterator.patch for moved contents in the + source code, so it applies cleanly again. Removed unused variable + warnings. + 15 December 2015: Ralph - Fix #729: omit use of escape sequences in echo since they are not portable (unbound-control-setup). diff --git a/external/unbound/doc/IP-BasedActions.pdf b/external/unbound/doc/IP-BasedActions.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07cec0fa62810e47aa9c7bdbf6016fb6d1d5dc7f GIT binary patch literal 247560 zcmagFWmsK3&^C&@yF*KHcX#*VR@~j)3Z+ooy|`>#H^rei#a%YAacASMhv)s??>gt- z`LmKtvSwz@m1JcmbJKj4mSy2!9_=X)6mCODif-Q4|kPcPld|6kq6xT&09BD@nQcw@l_N z-z7rCpb81UAi%-dN+?4&VOjS&H}YUbz>F9lo}UQutx*fFtCiU7Md8g$Hx)BdvoMcC zKs-WsPs4jt86n>)$N2d&dQ2kP8S37eIxAV<|Eb-)zq>uQyt_Yc>|vf5zCE^#^<3)q zyzjW&?qzJS-nKkxm;^uX!IlIEUFB`u1}z;?_tezA?OdI987__nWZPTi>-yaF)SRA( zJW--uIn`O1yxnx{rFFlsh4j2^J(pJ0)x5R6KD+_^TIY>kAko} zRh5r>bmct$D}S`Lbzihiw2kiP;6Z!m&!J*!31U7wkXycBfc<$7*t0XPa?6Yq^gHa=ou0`- zH#xZzvU*s|q1u91ZRa;nG%nD(7X@JPYEnPmb_&w$ybqpWl z6;#u{(f~GJ{5-37B2l(lZjLKD`NyeNMZ|zdO$Pj@zd6g2EkUkab#UElskZ7A`zfo6 zI@yQMIMOeZY@_Ni=J5WyIUBK#iRk{<9lJ>+vd!?wH$uPXrNlRGqYnE&!{z+QM;?2b zf24jexz7_{<{w)Qb2wG59IM!qbhOKDI8>eQIip$4@j#lZ=$M|**j79speGO}_+}q? zaI&nW!+J%C6LijBHK+I76s;dJ=r`Ekx)@|pN8_i7{chpmRJAx-hIt-`!B=o1#6&7^ zg1xaET6kQ89y4{g_ASy42#gsfX(tZixfGUjuy~q&yYmXD0nMytWZwDaI-L8L9+bO8 zINa{OoS@wnDuH~KGn}v774mI{bNQxprslZj@0T;cm5To1PtZxaZ59Da8FzTiXt7>m?pDI`}!r9{fGVJW{1L@YL zduN^d9YX$+@z(I|tWRZ4kVL$JRE;s`PMnAgYblwM-!gK)kM9p5ZROLojYkT z$)lmGcoO2e_%)*vz#D35q}+uS=&F^l?+7}^P(%1o_+-8zUGNPquB$EhbNhkSY#c!+ zF27E0>nP6?`|8dUTNjr)14>(7Pu>p5W8ABF=UcCIQ8?pH9BSu<9@@7oo_{`}SG7BV z#XAEp(MM4%)HLCIzIi1y#xGUo(;^2$&nXp&^Vdqgz16*tf^jFp)zsC7BbloCfjdyq zC{C#F0n4Hb?vi{z|6EHjYzb-K{^Dh|KrpTOMe0m%(I&U#7o) zPq%w@0tnS3t&VK!wW%|1w$EjM=f)ST%?znj_Tjlj!j}t$xl4)Z3`VW#uN#6j$7UzU z1qiMTBhE#IAA<(3t9zZvAs1zbRa+>(EFM+&)|c=XD0Z>YHYx^>PmUB7Cr7_@J^oys zge?T@1WY;?PpXVqn)SfA7>jHEud131CByc3 zYyZA@X}01EWEdmP%@ftXr77Y%RL;(KTwIprFhk~Fu|>hUYP&3Gbe)`tWFS9#$fH8l zGJ>-2oG7wwKb864QYRbA>7n**6-R&OpA>%(M7S4fU8q{oTU%sKpAb3kS;_ACQsHFO zCCw$UZ)L#Uc-eot%f_~WRwonFRh&qp?%@SY8xpQcvAEAF98Gd2^EDt@0BICu`%d#5nNqa$wE# z;+pS@29>!zVY~#MnRs|)kH#?()a516j1?1G>60Up*Dm&gAPrZ39IDK7tmD8{CZxRT zKue_0D>tx%++pVNfy11IZ`o+orMbucLRj4DHnz*EuyCUuu8cni14HF$T{E*mpQQ|Q zu~tJgFMSG5CzKVM9;@ds&&pBH1V=Z>A%vDle^Xp3!ga~>LoM;f$`GB-Q-uX))yVte z#cOhE76Fwj*h=U@Rtt0lQJd^P*W{u~&U_FjMW6b!%T(YRC)6+;NG5!^poWF96v$<8 zlt>@CDa!wH0yS5cVK-WC9UoPB>H*>;oAXa>d#vcFanBLuX8!Ir;YoNbJP+((iZats z@zVCDGxbVFAiGhA!pdwhiQ;ZW_B|{_7Ph%P;*H52Q)G~5^Iv*kG;aKIe*_6zzrX+B zEgmGc*j1AHu73Y}D#CJd*fKRl&*&G-KAlcg9j8mfCcV}-{%*}Go_U~m>iD`k?Ge26 zFcR_w-J*^heT_WYO4|YRKvB-5Kbe!ih-cF`zA`_CTVEn zpPnl^E85~=1N?VEfG4FnMs#b^VP31f+o!e7$cDjSB>9fAs zSvkIjEavW(a`c;yXukN*qpt`J>fh~rF<&bP?sM?axk=X%2&Tk~##QOXxA@Zx%)1B~})LU*-GG^p@2h2v=rR7LU=UHJ~gD~4YQ>VNT0 zOUoN6QeOmTuz)*o)R#CeL~~0< z*iMoNx{v}k=aQ=7%UsdX&@!S<$$%@(Dh+!i8|~%Ho#O5};9?zhJh@BeboUCwq(EXN zC2c7H?YuCC$2K~j?@vX`xTSpZFyp02Be|IBXx=}Hm7Nst8Z^AWGf#VVfbFu=wp`~6 zu(8T)fqemWL<907P8r1kyP-pJp6^yuhkBt^IpEmF^Rq6MpVtUsLF?x5>eVE~@C1EQ z8L2Zlaj2$l@GjaG*0WBl1uw$~wSBEKU@YZpbK2(JZM1u>7?UU}A-83Bt_0{jfYmDd zpnP{o)w+*%u5yaB%t;~A7<-L1@h%CX6-qL@Ar8{{Qla2-VUQ^r{`v&deQDtQ=Tcti zrvoYa74x5&X;lgSBIZwzs%CA35A4-y^ylFoMRTD$;2_BOMI&c=g1@Dyk~86DxUtRaU%*Pqfmc~r zr?$dk(mB}#i_w)1ZAE8*M!SW?YeFF4%D873!DHWMCg^0D|1?S9Y-rFybo6LWk)1ox8wp(jlDk5t9W3Y6$VO=XPgzu_aNc^se4+CaC#yGqe{1l{5EdN=oiki9d~z zA<1=+OOB_`@a6b?ora43zA2&{}8)7CvV^=eKbX%WwCSY2JD$2BNvw@(H)d-v+v)7Xe z7w2Bz6~Haa({~&;)T#%o6q;q7>T~crcH@pkCWIEVFa;Rg*!ewyp|^#OrVzaqJEgt@ zb#^`DcU@S33F)L_e_I`o)#QwrSAwdoroMPtfG2RuZJi6G^~(; z5qEwIYsgO9tBMwVLvER;tAzo6 z9tlWtdQ$r}{5EMG^|16)zN}nnW*7CSD^O}GsaM7KG+tyC!N>{SejH<>x<{e~yQN}Ac5Se} z(=GDel%uv!q+<>H*f(&)hO5JZlL4GFSXlVd#D4h!c;`7)oVbL*kq^J_GqA@@v}#Mp zsBXo~+J;An7<3Z0?a9jOpA9_R|%1hr={>Whdd>=~BTqw%1o+YUyOY4b68 zOio|E!p?SVc8RVuv}XtD-$qQ~xjPh;8uGDKP1r?7*0knm(2VP`%n2!^4^pZj6$lq?@ z=-WWTp|@(n(4e%9#2yi7%f?_6@guMP(Wjsdd3OnoGchTGlasjRKRt~EBv}V70Z=}Q zOss7$qXsC=!C!mQp7tADv@ITUh5nIyPzHUiIvfYpMkUDvxOGDrxyY7%<3!w;QJqLd zxZy-7_5o^Y6;%_H{^E^Oo{eyap;W=oC5J$ceC^Z00(dOzTFUshK<#`Y+200;Iu5^M zQ%^oucMSt({ilSoKhvs8(WtQ)9z#A0@NwI?%n_&78POCo=C&@cV zb%-p47V4u*@;@s((jg)7w_57_*Fh6~*iu5xy6|%N7+bc0K-3e<$nVAE4$(slQ)*f? zoku*XZHu&WbSd>D3PNM-jEhnV=go~x)riclfou)Z;riIdI?5*QyHbeqCq0=MrrN^V zX%vX%X5RICLO-qDzGtdh#F_cm+5L9kNC9zQsh&4ep#8)P)pm2DQ-Dp)gK5gHL>mrx z5muO*ws5cmOu8pvhF3Jp(MPQCv|C)o`!c)4Efolj{1akfrV*w6PUU2N!_K2`nVhL9 zAviv*x>p0Us{pSO?|rC{3bUI9qbMhow=NOwRHD8xtvVGSopZ!>rRy$en2pdJl_nj3 zu3Lg&heiu^-w8OdG4(*NxTs4KpmuKi!3@zGR;Y7}IK5UTtzWKIG$VRmi=`O4vd(D! zlvCM~m_PKr*5&VLsh&MN|DME#i3`+ZssAB{{n^(e{DJkNI{)l*s=Crjmmf|itF`4P z`*mI|b!biu&b~W*=S0sbjmwZFe<^IDceF$ihG?xz-@0eQu2pLyxDl9*o_{HUMf8nO zfWfIir4aI~q}KX4gbut|3jl2$R0<$TTZ)_LTpJ5S(~J!k$i!l)^VyyAfYpFH=?hFS zS5U!|+IG%KMTg8wH;+$}%J1^enq7d>-7tV{q@adY7u+&FV2)DI<6Bi(o-USvmELdzWqHOaZ;rkix`>VF-dvd%6Nv%3be2*sc-z@OB+1nlQX8y{| zDMNujz8%;RVdG&HGkAwC>kkWr@9_`eZ@Vri07DnN~=lN=qr?HRYK|WLL|;#sSoHm`O^^ zp%YNv*B{M7W+C^wJB2MU_&bxqBHuuMk&#pw5FgA)s;Fzn%;8LFBQ|XEok&g=mb9(p z%>@(3h>x3}2-Ki#D`{Ghy=UmAXKxq|VVAS=sGGkJph-tP$j^FO1gE>Xn-TsTO60un z1!VxgwAr9B_>=>3uO{U8)jR&hc9(Ec5*@;8+1%1h;G2yth~Luq*NS}edgVFrC_u}y z7Nt8g_Chg>ka(T1W^1^ai=F)YYtHX2`y^{cL;UE?KX~wxtX$f9yh3~MhJ*wtlBo0P zUfCjx3%chHpb77EYtl61CFSdv7lFcq&KJAh;n%8=T5uk%ROIX+8Ea@n^v=>U$&w6( z%p|6()vKaW6n`aZ9da~9b49=PPi-SvK7X+1NwLMW_|+S;t}lg2*Mc2s&RXuZELcPL zG3=uANNJ-$L=xe~Me0VzYoFX%!_4&GfaCG`pUg>u+2k~1>|$~XugIw2YCI36AO@^& z3~7;3V}1yqyG-7}NYa%hOG0+rt)+|2y-`r(d$W%)ploo=i3NS+7V>oulA6|~rEM|Q z5s!(EduW^B(-F@`GO=@12pMEP*D3?++C@vobQdRrmc`DdmP<`2FmHUR;8{f*POjS` ztNg6Cgee|4R}atvH>iLv$xjNNij|JGo6fvt201t<$l9F6)^fyIC2y&UPegoh+}^1^l|Qm!qkAl-tn3k2;fVCmnxiA{RH^!Ui#~Lv$}SlNhaI3?tjd1;`GchfcX)!6%hSz1wryO;*&{}b z1e^iiaTNCy=bv!B6+@P7b=bK?{Ap0bi%ac5PCYEreO;8=>FSEAcwbegEFgAWeyz`#O)v0$zu7Y_dQ@p~XCNFxY zFM*?(Wf&Tv38we(L~Du#5w=> zk3&xS@4UhwXB}`P!&v+|$@KViyj7UMZ~b{2yGZEVp(1r>E&~vQZN#d4T||qnSzePB z0}ktgDZ{;*k&mfZ4&w1xtNzm6;Pv~`RDLPx%2$<%{+k5o?$-*>@Y3* z&Fj7xNXdhJ@OKK?2_c|`M9=RaKuRc0VQg6tQrR*0mK51@5kyjT8>#j;qeD4y^0_kcNSo*~Ux|4jWr{NDWMFA-bKJ+8r-jyr* zXFL$uu=^{M8Pt=$BqvY4u4#V8qAnc$x)0cE%u!nrW2;nl7I3P@J?St%R3rUtcqbzg z{=z?V0KN9yJ~Q1sGtvIIg!oVp)Ks2jQ;YIMJin3nUjHT%ibAB(yNeBK`k3e|_Vfjn zHpGI|>6+9}-6Mu56$=F-z_xxub@206@fe<(81wA8r;a z3WgRp;N>3;5zDtP8AX76#7OQ;jRI3YwmTl7ywv1rZe`lx5!&>a^eImB;Tch%N!7{3 zKU1nVgQOp;++!j|`GyudYuF~WXx7f$HD^mCT|lO^Df{n73^dlhRl$hkb#z)a6cE2} zIG$dbJ1YG{vs@AgoU>VR<7>uh;Y232fqAhd8*Sto}TGjM}SFB#3Ylw!9ML z)4%TCm_0ii+!g6Z!Np428*P<@VO)HMNC>6#q4!TnCy!05lAa0ubfVk_8zP#tme9?X|X;gqNvEf zZ{EsFWye>nLx_;%3ly#gAR5f7p&WnLz(T23#mPW@o;957h+dlHQdIG4*sKyu1sT)m zKKd))`fUDJ!gMXc#)>i|Xnq~|z|7-FtO%Zf_xjQ2u*-w5n}*8TfJe=s3UoV>JPftq z34lj)R`>k%T;Nk&3#At<5d~Ey%DzJ-3W@2Y7pk~j4?Z*FUx_4Wu?*o+0jmSortdgU zBHEu)nE_y?a!ULVKhUFPb`VYz~h>c1=Pc8w@yQ57@~7=MAP}rk80g5eJq4>%_);m0pP{rck1zY z;C6-VbmzhiGl>SdP6?FEd3v=Tup|K;l)c6BW=00ON(rSS-)fEDu|2h9d~E#5&OcB* z&^D~@sQ{j@Z29=Pd&HI)h10kGB0bgr#cx zbD~%_8~YwP4|6N~VrtLl)e_qrT3j~Lf1<)=B1ibVO!|){*4TCNr&lv`3oIn*jr2rk zS=Ogow9Tz35s_Jr>FUGta5t9j!=atfb$wp>zGi zKQW&=>>ZLZJTx8W%cA{5p`TUaO36p}dh<3P$@fi+6IvBn`tWt4vB-c1dT8qH$XQJs}A z>|^#jYGk-?RL=nRhq96)wE3~9X{#IY8r1FQ+4u_TZ&#^zm=y0n?84XaY-1350-^9u z`S&XMfF@8>z&_FZ88z*nC*5q1;ne4Lz;UVq!}Yi%rD!VlWsHohpV$%J_ShBKIzK~8 z$zk27DC;2!Y7flX`8*oJN0!N|O6us^+D#)%BSHWby8(Ifxr7LB$yk_9sG>ROI zqe)?-fRNd*4UW>pi_sHPMMExjpw;Zf$0%ifBORTdvCKX!$%3dDrj165DimzeSHtvM zLuhG&y?gs}>#!{RXVls#iWGjJTD+~TK_*5YKESh0{T9y+M!&FefMVt*`|!x2s$$0{ za3k8V&t|ln=x#>u$xe7i^GyKuS^%s$2VW_vDruYUmv?CHpYA`6U*-yGO1*W zd80+iHH5CxJaL)U!-ubKWEzbUhS!0s=9~dj7S@xP6@VLy62@&6D}TaLlZS40$)Jr% z6I01(yeq5`&kZ$@r+IS$B4=A~Zjdl*Wuv#qU)hId^=t(jSRnJ}>Y38C%R-Y4(J9u) z{v?jE%I1Dmg%y{^GXK~kp+C><9HLp($83pAlAAUz^EvF{jIBNASG1xUcibT`FYl7q z;ZHHiR&7JCWIpHf)gKcmu5UNHm!zXQvJ|Xo_&yi2B$duGQCEkF4qY0dIPQFS$$@kM6U?>J%(cepx3b9VIHe?RnHl&~lQMYE5Ph%(@9znItmZNt;Gj?Rvj7%ShbGq#1BQ=u!Fg1fWqV0Km& z7GaydK);jWnptYNBSV5RO+s{5)x}%K!AuP=mdtM0UowG$%ZUZTZEiZv?b^KANxk7F zk?8&d#NuE(d_~JApHdK%UeSpdp@KeACDPxUInw4=RaYOh|1w%gPz&yM8M(h15|lkHhaq_Q^dgTeFb0N^O= z{vYF^v5*WU1*C0+uoB>gb))@DyY>ru3vUNc_jN(AXP~)MgLz$_ zK2c{|rYKgROx5XDF~!VgjrQFSf;%lRx{#iBhsV2W0_Kw=+u78BmdjHnejcME4Y!e$ zUQpDn$UT;h*gz|uzoH535dj(~Hf(J34d3rW<>C^G6GmrMmyCfl=gK+t9}!h@n8&Sccll@AqM=ZsR{KRqz4z=0k(|M)g~S<3u`kU+sSG=YUV&5(4M$ zA#X`{bi&hg{7tf|&GsTa*RKUZ#yUQId>w~8iSvn~n5a|oDTevqw?14OTu<4Yw&l|! zZ{U>K6fTIwMtf$&>_N0ef({6u#-TVfBg*$^17v`4K5XC)Boy;T{S?@D`*qB5Fgs4< zRkxKwq;f+U?JVs6M-u8MINmE;ufCzbPVs7o{$DGL7m)8z#Fos%w~Vbo^b%`9;M zc0~R>9LBS=Lo2G$?;Ho!s`QNAA*lznd(vO3RUM93FF$@gUGiTQ?B896ZPbKnJI$#u zTMPsQ13(SgNJ+ojX3p%ds9Qjv&*z>E{V+vKi85CC_`w_SE7Kx1rdb6~rk>38m)+{5 zhhGY>RZPwnbnilM`k8-E1qp3sQx{A``qWaEOi|tw+wC8C^6`07cD|9p*y@owV;wi5 zZyYET;dU>4(@h%T08WLzPIeGbzfg9{NB~ z&+}QOn_?k(uH&Gu+^qa(x~a{Yc3KasLqHt10nx^6@_~Hh-p~2`AK7EH#0~PSfV-RB zs7auHeDmI`FpOYv4Fi{Bmv^TNB)7|R15i`DBJq5K2GOED&bA8dIS3#v42*E$F$6k7 zcmng~e$sK;W!{QT=+GV{ts*<|7}n>3E_08OsgbqzkL8CGlH1F+Su*ER?5W^q1{`%h zbLhzhAe9EBdo$xW^22tWJ>BEi`gT0WMpD1M2XWB8c1um1VeI}me`>RmP!n$qmU@mm z_zNK>wBUTkrmVjRDj)}Ai##(7NxW@b;ti^cqCW2%sD4~Q8^j`yDGzB}^-W_yS_N&& zcN&0mxPnM_mEj2FkE&hOp(_d1B#l1O_QMP5u%9jMhB?jZzf8@I3OP4Xop3Hl-o;)eXaK#WMV~>Ro?et zEG0+~H6$^w_A!sYqGhi5T?7I!;A^jRe-(%K)-F02F5S|87GcZ7;vTjz__64^L9L+b7+l{n`#&u!RvuJSVD73`Z3pUvp{PAJubth>xj22Wx_e#AS@ zWV>oCg5oR^Et4Pxd(8k}F&R2~uhyjT82*0eF}tI@8mHrjYed;2rQ9K{tO!SD=g=UY z+(VCzTl`24nb!iMWLeW(C;XTCfnUNxdnPY*E9yFgmmu(G=WlyB7jq5wX9YHdQ~-$9Qcl@qp~ZX--bRYAWOfGS_Is8L>I6`Lo07Ou@9vPGkH}N?(hUe^NuZ zO=qE~hh7a*^0qU{*QuDn1EFG9xr<2ZWS=aAkR%O2^DXeJkpkN8jyZe@&^4ZhL6R8_RHOBPvHCRKvsn6cRQW;t**#B(Jaxp zAYu)rP}r2)!XR-!6ZZQWysNLeE=Q5s(t|>S?8ZHDI&+KWiXAl!nZLIzXbDI?AFyvsr>_tzo)CAN zeDbI~IgmhFND9tovLnt#``a(_5jvq&GAN2`zdf+cVOEF}!#5aDvzqF9#ISmU`B|*6 zU0C2tB5QvLn2{JBLIk;d+(rWBNJw2Yew|*f5ZrLASr3$Joh&2Q7`2~_VvHC-jxt{QBAn4 zSOg<-9a=lth>rLx$Dv0dBjm9F+b$b$HYg_EpXh|2OIOf|gc~^Lv4Lw=k30>=ZRnK4 zic>7T`;Z}OH1(qC*jkzk9=n=0twfN^v?UYw;Jj6fwZLa?&5x2B zxChH6#sJ?8w8%1TS+=&e1FVQc84ChB)sn1X5vSZ4G0aTo1g#xoLc8pWR>gH2dzc)X zb4BjG!D|*psquX9s4}_Gky<-{UfT7yu^!F;AGKZpl+m^%OD<^GKC zTQ9A@Y>J^^5GJ#s@|JGCIRbA1xi?u@+zdooL(l>te9&w-s%U}G{%bqN135E8cJmST z*W|OP9ah`0ur|z)o4&F@iJ)w*1`inqk&j{r0IJCzaP%+@2&qdwftgAmOL! z{It%D8wnMDBB1d5>ddhDfMEYTVMK=Eo5c$I?N644yn8%JYjMtNs8cSLT>CW8jI61b zNZLJ2nSQsXUk0bB_cFhc!jH`O=p+9j2~PjaymyT04v1?a8bpuwCiF9*QpfM9={D-0 zQ?9`g?Id6qSc%3Cc`NUfc3$*XJzkijUlimJy(xyRoB#)%*{X8b;wq+k8S3QLN_C=K z_ofJMl76J(6ZscG&{1)xndf+$Phccta2<*#P>QSelXmqP1=&W0{!C(JR$j2&heOf8 zs(KJ{rwbIm|8Q-%Me61vc6+Z?HnJ#Mm2m>OLLNB+9@ifu)UxAOtPuP?I+jh=r#n9! zneaIP?{`~mCD%qk?jk-0zs9c4Ix+IphWIdyAC-gBTr_=ZU&C*db~v?;UeOkH-UN27 zrN1N*$K`c(w<}8gjO*z#O9`XXpU95sT-M?GS5=eJ4)0o8L5s5DelqthSUmeGLAWaA zgy!>I{-vUJc87B%9#S1&PQ@{1YxyG#HZ_@eMXvJg;R4+4NQ*omOtw{6j%DALrwLdu zqKj~{mtH*59?>ydx9@6aq50g^8e(Pt2?;1gca;GdC0e4h1=wc7p4f)i?%qAW?lFcGo^Cqq)*|rMNV;}uB8t*7nijv1bZZj+miwpZ8=?>{m&(Gabtd9NvNQZIk@T#k z4m*a?lwOn_N9~-d8kdC`SW66YkYxUMSVHJCZ^vrj6WHQ>NEX&xL!xqpX)3-}{tU3*kxOjpDu;eWZ%$=7bK8)v~ ziKW&I1;ww)tnAFFKPr3S6FLE{n|~jw-O8Byr*$%{zgb8r7ThK|L!ZnJSE4=d2F*M) zR1%kkY{!(9GNuNO#|0G~i3~gmJ?-SRzS+qTP)Au$d}asX#E`~}*dy0PRb-oDJA6P|iOAj5?fF3!$_8cmXLhy;u<_f#Gjg)o(gXP&M@x8pD-*$;| zQpAt^f(+;z6+JWdHWv1DVTxLx;RYoo&?D-nD@JJ;XvykvfA zGwm3@HjD8{A34r>B_$)|9AB4a(x>}7F~B5S2u-=K=6<+fXe)!1w0&ZsD_b-)*91-#t~+T3SSe{T2yN#lf1O~@(;9c+DxP_X z9FpyDjL=QkQy5XeN3JxCb7(dafNP&oI9(*=M}#{6dXl$&t$(t*bm!X$;EL8VCqJu_ z@Jo#UsPL*fgEMsokQYm>)TW`elzh7uK8B#&Vp&yN<|}tsNxXOEHf+ws_cvw;cPcrf z>|j;F8-4OTA`Xtx#{q!aX~IUCEk6{pa@yMj;38;CJXEJ|-xATnFVkUDL5uJ%-?B7F z{}}hNyO!){A(>kx^OB$q=y>%@Ls6gWsmWH7o3O=)v7GIP<2$Oq)MDjxqGlhoz3I!? z-7i7K+%NS}hdds|Gdd>?Ow`?sJ(M?V;HZ4N9D+n{L(=Ijl(3ot-|I_T8=>-D6n>{k zcK2jA&Va^}mA=@$y`E=mydO27+z2;{6~>V&tuxAxCf&7J=g;T}A&QJgc(;3W7Lvu% z=={#6-Z)TyMc&}b(RHxWjR#IiG;o2GVdn6ZrJi4A{qntgQ4Ak3<+|r=D)ddc>^{jo zzsL%0k-q1EMah1#ZRSKBc^w&kOq40r7?%xYcd8E#ugkbu(=`PIL2^$wMZ(k**7?zH zACbvwS`s$i(Fx&b>75#|mbNCps-y9xn6j-OkH+-H*aln3L$Kd0^NjtuaX-O2`Ri(yhm*!^`45>BqsUHu$=E{9 zc9Ea7p}&%P=~F(&@5K=litgD~m0i93>SiO5>J^r|II|d*N+1Ky~`M1$dB(X4u9&c_q5#NGw^ zMkB721kR0UaIE)T2A$z|g{14TM?u=#paQxzje1m~I{cyoKu7onWdqI1Egn;x1DMV- zjeKfu9|131m8g>}XPXDr%O4ak;{A%`M_TZ5HFK8~O3XOpqp>z;5Ah4qkoHpAL*HFZ zwJP0JhxdV0z?IGp(?WwPZ9``k-CVd�E#+mV&k%xXMU>fvc!&quRuB{a zrd4S7qoKg>OQCw%;7XU?EpYZgphFqC%B(7F1tQ<370;=PH&7Fw%;3-3cx5%mFel5O zg-&6Vj|3*YE`_?35FlsNf?@Mqc8`N4&R7mmB#kKD+ul4f%m>W=??-T?-7|EjN2WG` z!_61&h95m{8tR17fqZ6HI!@1MfySTH@iPeylRr&2uN^)sM*dHV$=9=Mmpf6M!Sdus z(Ur5|iu4N#<6yrCf+$hkGZahk`VrF|ps#2g;bo*gA(;4X=Jlt;dtHJV<;32z7+ZeU z!_2fi3bSZTTTbw^AKk(c;%~*x2la$PIs>S0?-ZYy0&avslx5h~&@PFU>f0g?mPXAZC|6`B;R~(zB1eK?|*Z)8n|Mz1! z{xi`39sj==NRI!tiRy>-*d+b~LOTCv12$5mO?hv-aY-?+{15WD0aLolko%ELdPgh89d^%s4EyK zq|^a{PIru$M*-VBDBm)h-DtQd1@kiOrA)iM!x8JJ%O=f7a}K7|ewD3XzRFWKK(u&v z!tZr1=`zqX`c7H4Nst;c2tvcoW&qLY2+a)kv`L4|*p$AV3VWtE4q6NhV*5M72sk>FT{_Woh-3N;_< zKMkiE#_Njk4Nmtjx+^N$cR6vCh+ZXjXmF??Th~#k?`;8mSQV`C`L;k;TGuy6!TA$z7!Wa=mr?( zafLpHm6|U!lSk+G{7#KoeGg*4F4tGCUXsLCHltc%u@^3 zg1Hpi@%^M9eT(+ex04Z!cOHh>>v3To_^BHuge-(&BY|?Lhb|G>0L~!{^HVz27soGJ zSR_aXNU!18ecbAy$)KZr+d@@W}^XW`Jg($w2y|lup_loyw zh8EZB6v}P^`$T>!$Yd9#ng24+Hjgs@vCT86PScqjn%sh;Rv~^=KTA{ki9~X))Ni&G zr~(uOS%KKe<@idT=TeRaZzvDDZjh~LtPJ<)_sI50_L@dD5c=3nAGkD#OJh@FJ7N>A zx%b+Fo*I~md*8J!se(>|wJr$MJBR4Qw`EZ{BVRytLx&9mFn+MC(0*gr3@ zR>e&LrhM|Ia!t73cV8lp>)WIJTc7N2`;SGAQ%JH&x=Dyhv`I3!hj@syowNUC?`0ow z4+CutP@CZl_6!c1joH((&c?N@X_{gL3TtX10G1iilJzQ)8jJEKJ)2_Hrb%3*WL85y ziI#6Inm&?hN^E*;CUxrPg`(>DHTfkyay^D2qkpHVK&CMgIlbkD(SsUjT6P~_U^6HXB?Wtd@wr{Yn4;+iRjI`81hkU}w z?1)@U9Dx#nkL*9WL74?P6`25;3>l>iJ!bu;UD;TJSgJA+0!mW+fG^(e75B62N|8IK z+bBC{tX$vHn@&OQ&3hGNQ?-dEz4~s96r_~o8(8mAxP29S%C$EpZ9aQ&ODP?Z&&dZv zOb2n7Mh{jmNpKnAjo~xW83RU977Dcr_zF8PY7)(xUX3PKp}Q5SiK)d5Top4F6L#Ui z2jH9}jahU(lM$B)T^CzFcQLzE`>5T*nKo{b_)L;Ay@$SaM`rw+@~wRAmmHcO`lwCz zjbIx&tNc;*aqRt@-RxcGG4g-c|DJ<+ta*IAY`VSQB3^oV&Kxjme*Qm%yk|6AZ`?H; z5fRaXh~7I9z1JW*ql=y>QAZ!5N22#GdN;c0j39c8no$R%mtk}UqdfliyY98#wVn^p zx3jKu);jB)bN$Y>uf6wg&(@g2+BCh*x*=;9o%``XdZ6;c@u=cxtPK_1Icf!}ov;0? z^OIe}(e{8`o1FGq2lu!Mfm6Q|sS|SfOGC8-ES=GO>cVn#J!&1mvXrzBHwrMkUjBO- zg6t@{EJ1s(dcE*oTHb@4eax^lGGCaiSv9NP`g>Y<+R|=#&}s15#O)KIeY|yiBY#ea=|Ampkj~hF7L8=(m2YvV0LLXvbk8;-cQ{RzW4244$U|X zw@lW9|9Q-1MrOl^t=dH5IB9m4Se|#_soX&5NpvJxxVWLGG^BBJI;ZAW&B|zSdae0M zn|nE|1AVKXUTIq+W+oAk6VQPSyNjKrZO=`!I0&@gYdQjU?724FrEOHlbz%kV+?b(x zRxTj{TX7FLRG87vZw}ve`aPI0N$mx!+)ZJZ6PnBX^%cFdyR$mjC}evH;LNR%slJ=J zn)_1Taek0L_i3Ub!ZtpvRi5V|^|}_&i#1XHXu)VyL?~4&O~hQsEc@1-_aBeOr2pFp z?c%s^Mx{^6Dzv2G>z|jAJ_>XY>f5G>EDEhy#N5HKj zFE97m!^WEae=w{Lz1ja>!}tG3=>Lmp|3CQs{|xq+=}?PzQgN>qk?CR_d@9}sCtNMW ze*NreCK3B8!881iGfpp_nmp-$Alx-+wo*F46N&HOGTiKVMb$qd&NjW&yR@|Aw6HHD zbAPcRBa<2LgOt8M;cGIxJ*PX-Jv*VhjlF+(xHy47q{lz7-CI2jJ)n>19&%)Ezz-K) zi}5n|`$cy%fsJ$z7lT+jK|2D-R=k#r^+8~F7v9-?!0lk|_QoX%?*2d9tmp~Pv3snm zy-Tb>sm^cGMGti!I*)cF2ZHXlE_I#Ooy;*Phb!CCtY{VIjFpc`{hP|O?iRA&bJ)sw|6M{)2E}pRRJ7hhHjC5(oMd)B zj~&e%duQET4WEqdJ$e^lfIC|W&FcA)M%!rM0g z#V_OYh0_B58-4apJJ8wP3MOdj$8+O&yNzG|YBY||;B3tI zW|&(0ug`03i0W7Q`R#i=ETB^5FHoJI9)w8Y-7-*{d#4>C!?b3kcnwqbFd@h@)>qy9 z?~HIzk<)=& zk9I zC>hN}Ko>`%`-4OTaN$1SUx9K@t)_u1!vXC?p?zBRLvtAN{@d@zfe{Y2Cq(Xt6 zgk~tQrt4XFp>X)O^EVinTbICYYF_pBg2MTA%eI6GUd=o;_^1=$(nWsrNf_7rxNJxV z%Kpj;EZo&BeYA5(V(~UTr@ONrmv8FDNU9U6BsbxZ{GF@H5_TP#o?EiO9gty4mJ#+M zGR>k}dQp}Utdi@hvh0;PAj`8FUr0qv!7vp9p(3X7lPi=DQBXrjSA~$lYlw)s z%frQ)m>1{apBbMMw~=o#Ud~X0PdwzsRM$Hz*?X|t$AQ@O#QkwnDk>GMN&+1gxOy^G3y)zy)*sO4O!S5Cl6o#&UsH$F}pTUIqD(Ia7R@G#7X|$Gl!8R6f zWt1VYT2P0274nyj@1L&tH=X{}4UV<%YiyxP>vyll%PbO3NDv{0gW88i^(fp-RLG5- zLT94ir2y1$auQ?tr&f@hXHWo_jrj4b&210Obl-5+wsmju`++;CtWF)T^tz+J%6KQM zG#yW9!_mNm%8{_-4aPc`&-}|Q7N{Qz=|^9K1ES(%dUM>S9%b+aYSvdpcQR#MkctDM zQ!`vdKzICG0vZA{WhDOWdLCV3e$PNHD2;sRp@8*05)Como%q+^>AZQ;LZ21VI+2d$ zSUy4~5?eYbW}>*I&gzHSa$|9y8hNf+2Fs?%%#9g1RL;qBF>Y;;WGV|VlMN~RAXs>L=AzSv-W68-RT*mN%=d&+0OF0BjA^=z>jWRO64+Gl%qpk zobh{198eze+uyTd>%|y|BW5JeDP#ic>Fg_>fVd9SV#J>tra91x~7uko_(|&C>LQ7@UHr0BY$VRLzPSE z1V~54Ms7K6XejT1l=AWO`ycV?KR$ML-3f;JjI&<3YQ47vu|mek&Lk&?SV1Qj^Qgcf zHop~&S4uUb<;d|c{;nOu`b(};Rx@B!3dQI)a@Th{1ei-#caY1fW6f|@RRCy| zt>@wF0F&$40_OpwZRZylDj(%}qU&D|gOB@A;t+)`$#Koj@3I_ZjTFYOzqHy98@g`g zn!gp*sYo6p_oSF>-!Qb8dMg@VS#;%~Xcm@?&P@2L))VT`ltk*ZM=`|p(=etc29if# zmNKoPQaQX*G_nlxetue9NdDI7k1YZ3!|&S!X{uj$5qKq4b@sZ9( zBef|LpihBM<;5=WpNZ%yD!x0*7B}EWEU%9!bC}Jruq3MFi7%KnK2(qo91h1xshl?c z8bRF?m=S*c7HpL02P-I)qsH_Yw;5D?_2RmmL$2l^z%_UEsRog|jXl%ShNLBgbBsM% z6-A*pZ>cZP8Uq2&E2V)ddCz{+< z+lJ8M%VnlJKhZI%xe#$*Aoy@GK+68TXjanjf5pR@e330=O)RK4;jOaV3E+Hf(mM!< zXg7#m-|aIk9taHa1^nXD306hS9qIKm9uA9Aqg|C%5oG+s=1ROX_R;?89K%UBRMbQt zEaX-0pMm&)9mkh2t09Dsd1S!R1hzOAL?A2M1fpvL$I)B41@|9bDcYA-P@55KVeQkE zaRw^rby&~Pt+g36rv0X^sscw-b2iX)>%EY?by;fm34oNWf@M#78Et~dD39!;kMl2g ze-K6petR7+{}s-1F$8r>WD{dLA4na}sak!0Fp&1Pon@L;718-VW_$thyuPEIP_%Za z+L^w*@Qb^88VNK8E0EBgULA1X#m`Ojii_JS`S zWP}<1t{e?k6-@BO7K1;Q#;&dx1!&X#i5kKsk~iixW^%~KI+rDDT1ezslETgVwje6c z!h$?bMXuU>t}_yR({l1Li}xnZdgs`OiMn&ci)s7N&+sQVTlN2bQep@mdayL{mpH>0 z?7yMLvb)x$kFZz!c8Rl=IP;F|1oF52k6hXsDqOPsX1dwXE!+u_t#i`~aSwz`3y(+Q ziql`@mYYn$AEq`<*#ib9ZJO@*GW06 z3^cJdZ{`vxASgk{KXd36Iw(*I_OBzH zs%X?)r$s8Zvq-KDhpx5QS^h{$s>2oQTrmY2(D{$tZjm4Ag@7k!{EIG9Z3cq~TEaOK z%iiFaC`OjHR3vsGWg9JLZY6V!8EY%~u&?zyD4+cqt=7B%1i)l8?ihN>Ue%Bw=EaI5 zo!yTwDPb5Aw&qW97sSry(O4W3uy%wV6YmuXbc@8R;b0@lH^>>5cVI^I)L3Xowaj9Y zh7F2S^#R9U?)H0wzhd^wFazK>0mRPn7zJoS)L}kH8~kCsyYa#Nq;6GUaXL_J-tXiD zt3Wb%KX~E`zo*s11VLU2Wja3cdwh5&WTGMq(f`jvROwgsd)3P={kx@v)po( zWe3uudv50DA!*LjKVx)Wp-bLu)&Jo8pxT$){;mD7<~|&Tis3sj1iveXjV)Vi3M?sR$`l0NujaazGRZi_62p@q z6BNXCuwDFQgqU=((792d9a+#tVKxu$U{;hn6={vB@m4|c_8gwESH^}$4< zvP42Co>K;-E0-d#6EJQUT)2x=J7GqRm@i{XyHmNi{EWtomJhnLt4F{u{-ndZ(`X>Y zT6hL^<7Fn2zT@zQ*NRDWX+k|YTlc_a0f*aFt;B#llx(P{WQ{V|F?^Ccmf%<7w2u2g z;476u?I|Z``Ri;7a*YHKEPGs zwS|_~&0B=qBD}7?ZLWOf&%=SKR{z(rwBklc_z@OMXsArDX z&8OSuZgUW_vD>83INxkXxk+Pu^ich5wNRq9R(oXaYYWHT?FVR<=fxF!ldn10D*{}5 zkS-K717r01YSl;kaVO9^TnN=1PFiKYgs(Z+rSYy3v0~H-@M*KplI{)e?`SPHSXWIR=U?rev1%D*xjTI2*OShD zE&Pa`qXkDh?^OxzYNw(QNIf}^qyrn*`8-|a>0T14|H{U=r2t}UfoDeE`Q1D*o1bBG z0NW3dqQmEE&uw56a=au6X(w1v+c7otXFcG{tYD*MM03tjk)W$_qZrh&HdTdl4= zvf;^~*IMaFIR5aHKwVj?W&_5I%N4`yk`KI^&EAImO20s-)u$4Uw*9f6_63)&8QSRV zZ}|Jqf5iwKmKWj=4I9jQ$}P{PGOga!v-9R^%b;S+9R+5j#*(*VnW4adA_$u}-VPLL zsI^K>6XxNALdCI`%2;bk$(o@$3th|Isv&EXRWU!=CWuY>a z2j=HZIg!ew4LmOM*Ks1;#iu?9@J0SM2>KYEU?v~0S^ZSGBh zw!~`*j?aHNPj^=P;d3v<^f}C$(FwL%g>E{N!A70U4Xqzuu*bu67RBWI0*v5+!Ksn1ecwTc_ECK)Qt(;zB^d%>Rnqb!ZB=dp3THo&vcDZI6kN7# zOJ9Y&KQY&L5$qZ(Z=a8v_VkgjBYH#~VHOjAZ{8)uhd_Xm_I6auN?*~BGYfuVNl_Jx zovYn-`^>P>1rRk{C|4aLO15NhB!vYqv%!F=l~VEAl?}L9!{X&ab!pBQd1piTCq41< zt+DdN5GHgHc5-*zKWzv(l?XK&)$6|_!#55SfK{0>F_7=-@8Vwhl#gnh$w+K?y-cBG zoscOdOSyzxKcnzA_4aup;pphwJ@9s>sLCZ3^7CLh&F_MJACpL<3=I}vjlgEi)M~k? z6PI#%r>%I$ov~skWL$hdX(F1i6ef_{wc&L{DISqH&A=?R7FX*+j&5KSt$?%l^) zQWH7-rcC)CS!}F?FCJl5XA^+b%%H8(EA3ANtI1HU>h-!B9?_GLY|fPk$0@E4>CQo< zqrGv|}S&bx(bhugral4opgVj@<6bMWXu1-PuzL5>-n5Dg}#^{QutS1#}7&*JtRfrXrVP z_5N{fHL&stBQe;Tx3^ovBugavs8S7*e)T&G3VmRE7}>Dp@@aA^;^iYFf8cx^FipmZ zXj%b+oU&5p6I_=K;~Vp;K3X2`^AX9G%71?M?w*F_+fq}LA?!mI>uF?$b1F==nb+Zf zMbvc5jP&PLA(4RY^0ubbfA!0T`qC!NSkLof7W7+B%L@_Z}(S3g5YLAxt%411Sr zywfZCHo_{&XCDaiq;JcYM()T!f6)_z0B>yHRO6V9!M1yJOE$4ojC& z1jfnGwG8dh!AXwH1M`P+WMN+`H^Bdg6o^ zsq1(mvL%onlWkv@?NSKqrOx5<4jzcp5h}uxT?aP=J)tQY)qeaRf8pauVZGfeU%dJ9hrxnq zI0YgTs@S@#mq_u@S;z(JoM4%5zIrWTX>1rO@UB#uFb@zjYdSaIxg$$*!6%MpBi=j9 zVVAbwYkLznl;ZfW^67IciIy8hiKzG49r0gWal8-E74Hk^#jdFwVZBV3$2xxI%bl@I z-?((KJ$}p#+>>YjsL&2i4?#9-aUNrh=jaBh#U6-G7nFXH;Go@KTvAWa^B7txL{TVs za8NdHL4kA@Hk@O|C&dS-ELBX6?ores?w3%GIitW#e#)P7<`F}>_p@TfUu-1HBU;w5 zLkd>%tc`V)x(>w9N93Q%!dUmKS}fuBpE2gbkJt~uGra&J+XPkcRP^v{#*w1-5*75N z%9Nz{XXA9ddVJ-rYhBTdpzwW>vb0wfiV0I_!L@`tJzR2=p1F4vR*nj5mQ#jY3vCl* z5cTi3+oq^%Iq<7(;Es+9)vT0(q6N_nd}2rMw_?53_F!RPGY-tVaY_E7@QrXnosPrp zz5@KoOOs6yGZb0n!zpZM$`Q{|a5%u5VHgW2lA8~K@SJ{BYLQH}K62@<(Zd@ZYVv&W zYO7FGOE%5Ps{%?~;`x6p6!Y%!%jmjnqOogV8RIk@GjIi3faEBe|K6T@0+(L>BZ?R5 z*?%N;`LRpMHU0>S*_wj!=uKv}+A4yg6^oFiUwH2)FSYITPPSblCw!|$gO{rOkBI#Y zZC*Y%w)}0tc-ai0doxhVU&R9NqWVgsB?bg19uKbox!%*0c-ee#Ug90i4?g>?zqfLy z-A*YgQ)%Vclflm6S2X8-G^T+CjR!!7omas91{U7vO(`ErcS{#hM%}Z zg;j+1R)9PSU*z(}3KwXG6Fd9AWKupKc`M}OO-CsAMeoDRt>E0O!R+PlG7bM88WU$$ ze1`9?s>^9qTOlnbuL^!^H9s|&6=u3V1rK-Dc;@TS{mq5|r`g^7K5``_0LwIg)0)(4 z_jrk1$zZ5`vf7!OAyfVonRcRHF6*!z$|JmcRc@$Oa3Hs^R1gw|fJV)?7R+*dr`sx6 zoTeq%TKV`~if2e>+P?(ToO!fDYmA?r$c>p07F*1}niXAZQIq?j8g+wK`G zt+$ygn55;M$F@CnsKSH;@;h2$RekAcsD=<1z@=tAB>Y3!Kg|M?*h=n}pHKSS!v;0$ zL{aWFDI^BSEo*$;i`@LHeU<#m8(EV3S46M4>X8I75m)B4!+2e+#B9`!l_7ZRieLl_ z7Q`_&U^UPQCJB6Mb;oK?%2sFP)MgCoD0YU?hRFYE#$@IyhmFKoiu@q}y?o?8b|gAk zq*UAyUfTtwFErIQi&L`eI-E6#tbes7?1Vrnol}7Aic77`&R`Yo7KI+=5DXH;Ar=2> z?gbx{@aGtA{%?jO0>mjv2g_IvLmkr!VWx=-X}q;0CDJmWjNMf=SoorioZ1ZuO>Tp}vwpw4vW%6{nkkEfL! z3x}1I8ZGmu2x3G{8gn#Rd(m*}`&PkLq2>{yRrtW_uKHH%yHfF7Jo+6OCUJzn^x8rR zG+=x(F|I!3k$yjXD&V{4s^#-6z|=&5J#%PKnfago7xfRpUN7f#16&`|?>I zUoW{>sElqJNb7bn_#c&p9YP0~w(pk!hwqm!9mJbXBHpD_fDDV0n<{hhunQ!dmMA-Fq`F)LQlRMPA>163$?)kO&K z(-%T=>KNyg(Kv7MwIlfdE_f>>w0w^yO?)VemP{%LW4>PDd9me~ z82NpJ&hO7FPa$Rug;uUYO!)F!i%kCGCuJBqkM9sKjBqPm3?$*Ipk(j?%VT`LtPqjW z@;5R>fGKKzC(fAfor6Ml^=cTFQpq`9gsR+94M0~+z${aDUD{$uCPMRacs%vO_5P+q z2aA$Zic>2`tA(4^U;gG59nDU!8R#+Vwzzz&jQm=Zv-wTweH1lD>}$=R8+lxxM1D+o zAi~4ZS-K08$-0fWkMiA^oiBs1YK8Sr&6;7S0=*)$f#ppokW85)%VFSWZpDQ6xpfQY zP14CSXgpPKct4#aDBMMQN+agIJgL;4?>Ju5lm3o{%87`Q*eSqny^TRod&osI|4*no zBZJd^@DtZON+IBIz|(s-m&>=J0io!LX_xS9ajDOK(r~)?&NPd_&=$)F5YYGGYHl_U z6~9D`NQv^kI_DcZoXUutGZeY*dbg5bZ(<^--76nmc$?GzvpB@r|j*u5*6f@ zG|3Isbi>|lLXp2(>5cxfm*1J$(N?vPX4T`=6vVtbex<}7W#MGcO> z4_iR8iu~h5OgF(vJMSCcS{4?E+F5Ghn=&ReS1U<|C^SUn+&o8!u3Gges3x8el9IGX zPKSmFm>iFXa=GE9vZha>-kT24w;(>IylN2&Hvaf0BkGMG?#E%lH3}!L<*tCn5j?YB zY`O^HRgokLh;Rkp#MdMFhuyEl^tzAi1JtIfbOY&Q&$Jr!fnxqEh3}J~POltOlXzO~ z5MIa2q#SIG-LFW&F{wmy6OB0Q+|OVGb2by&VS--G>M}kuEB&tLNzz;{d5%^9S)%ht zRX_^;&R(1z=SB=t@Pip zqpd^JUja;h0$n-GD`)o`Rt4V@<6`V?liZ^^(|;yON!OX%3)O7L7P{CEBsFut8yN;N z)ip6YE0GqhQz4U_m&0rd*RulmI6#qQ)t@ZSpmUp6`12Bq9p?3l^s~nk1U?}ogB)Mb>>oXiHC#hE+;LHf2RHt-< zGsDT-(w|bP2XL8>V-4{GR5&1u)tMM~wJzn>A2%(h4!(=?S~bj6JOziwpAkW@zQ(i= zNURGxcDh29Dd!{49YYM&F!lpn z9x`#%yqv52QjTrYD}`H_WbGxT+h%-0EIz>cXLX}!jr(A3Yt2e2UjG}DwLGSgfpqkw8i%srcaL$PQzna>bp6JYagbauw{c?&tWxG77I``u%g5~}fo z;=;1kt%y-z&)ro^=7&`>qU*?q(&**837+Q3uQ}684)kl}D_AULU3VKBdG}Z|-clzh zMX64%u1lrrY$2m?wnGp`b;k7H+qYrh(fdW8TX5&XzJr{l{{)op%Xt8!Dg(zt!9x}a z2pjd@Xi4&%NGpYN=E?ze`l!?Hh~7CS?uNKjujwEe-OvtEPqS@LbF>XBlv?%v1CvwH ze71kF0JqlrUw?#H=+;s!u3c%}XkRyHt)?QrS3sj|~m$V}-Mo5?GS%Q6J5$mP>; z^GZlyJ_|mH=!R!rWs#Fh1>GLso8`GfhnqTY39>|$LDjp(!-KPxfbo0|`@Iz1mhLQR zW0mKUjWVB(Hq{%G@aWo#X))~Pu5=BACL$yk+(XO$x)o7iz9RZDDBN-84~%~!1DOY=WM&pKWaw#DTeYs(}LZM6*^8>h!g>3$~D zpi*5SqH3q`ObL|hA(GPnEo&clCwaf(#cmZN#c#dp-A0SlW8-h2PQ@`!%Y{F z^7>0pvqa}Gnb2Lx}6#HWaPb3)e*0+IT~km4%XPcQthQ zBoB7vKSw*qvMS?PrM%kSuCa5a1R0XT{(O-_;{O`qd|pXY(~Iwv9`)(QGJZ-)l9S92 z#+s!(S|TgdRo^KWp&FrM?Nq98dadhszEojr(t= z2C|~_goc{vM%@Gy#+tbyw%xXlRW3TB*HO=LN3xB?ajGnsQfu_$RL7 z01oJQ)hp^3JYH*%ZWlA1qa2nU>3PYrG?WCXnR)Nj89AS1^Q4rMX|J<~rmo`;dhQ+% z$wbae6Tg=n$Ixk6Y1&iGe7;x06-h^aCY7E)NLu7=uX@|lmV1l^h*9rEN=s$&PVvD( zt9}lQ81)|8^IsWs(d4#t)rM-bFjn>WL_U|uIGhV_auoz&{Y42k*>PxYarx)b;qh6ST#|RN;>@I`F1BhTS&Ib&P2QBIE|iOAtje( zr`@!B=T$*XX?$__1x3DoiLOnmhNKIxOsB;RZ9?2)x)E~YW6|dy}@M*(HBWWgU>Bat- zVqmHBC>~B#pS$x)uK)-(Ks_vy-wkk9TJQ!j%PFZEJKLyIz((*G74`}{PuMn}r+YaS z3R$S!Nudp+_o`isO}o=+dOU&83RTzd*Em&M^d;D!h6n5-F)CsF(m~MJ6t4NSFU2ha z&l&XXg!jSC4}Be^=4l7ZO$Droobc-M$5poGJFJJBWo-k9h5syP@&3A2X54>rPng)| z=2ch0!-qsHdZpzcJY8H|#FIQ4G>Mx2(Wj-kW`Zs+e>Ka1hwIYMm*-C3cS7L@c@AC@LNzu1+`2Ol@dR=ol>-Qbs7dA8|jNK|S`zk#i?6&zeV(dLD!KZ`3 zSA5#rFA{q$?*0&jyI*NY)uP$FL=oST>Uq|W`QmmiNzw!6De@Z1qU(vII3y9Mw@BFU ztZnz(bwM@ss5mTml>`~t&#=uaKt9rynjZJp+448O$Zye`T_I79l=5i1eTX)ffnsoV9DY`-=N|4d(DC@ysNkobGWyo95iG zrk&RS8QJ`&`U$qrX(?YBl79aTGDe-e_(Z}1V_fJ2#!sKT|55o^ESkB*dN?)P(0HC* zR9L=tuVjs?v!$ItvL9m(vflBYW)$l}uec>{mEV9DXA^x70i z+kOpj9Oxu24ylOrS2X*6B;A-vHaF={Z`OSoJjg8x$zYh6NafB5ndE(+BA4UJhUZ1b zp!IJaR3jDP1*xddDCGNE|Ip00@j~xf%e^pUI^^c6MZ|8)%`rEX$8}*wR^c%v^ z@sGFqe$naW$viKC0(}g7IJx`X5iUN3KLb?a-)!|*FZqP~3@nMR14z%NcM=rY0V7i* zmxQuku>P^dYB}p8lC@f5yHx7d^^={59})d)uH4tT%4KNE;Agib*i3)RV2~t+lb`*M zc2}A(qhtq?()qW9-+b<0iURk3%W_GCJv>_+c`3u#FOkq5-Y9DwEL}5=4u%RztU*dMcgp5ac;(lpTWPdgfRONhM+&k1oA{ST2bS!ezU$A&+$8F zrp0MV3(wHW{0zpvQGo>O^0@9c?a7Ig<%TJ)F+-bzVE>|5#?{zJ@|U_|56Y1}vq547 zhd;(X8LG|y+nNQ!l#%Hszk0Lz-Z_0xAROIiy_q;{@A8Ixm^}3$LE9oahbFndi*t75 zvcLlpBdJYT_E?~IxFupG@<_S1{O5a@nV++{e!!SKO8Eh=pBfl;h4JW~-lOc)K@}+g zgM@VP5JJm%CeiORGO%d?D4wp zwu~q*f=|qIihi4qqMQ)FudLX&(|*;ANZx*l=`O4b!bHBbYDSYO=^qqG*-*cGDbpO8 z1p2PG7^rkp-)KJmD!XuUJ^}?&NMZNh**}{k&lgr#q_l-T$05)8 zRx|u@g#JB}Iu*8hkJ*&Z0c95Kg?`ni!`i8BT6`eWk}3@6pSYw}eI0t9M;Pp_MpqN1 zaTDH_>1V}WOgQj>42n7nzu0EAG8mxR@`cGhI0h0>(f7{2ON;L*veVEk9 zIUzaxdS#g{%F^(q7njJ$PW#9{nNX*)^-5qNtK|z^e7G*+ekHO+7`UZ)cW8V@vd8hP z@J#nY7s+(4y;$DN8-|9kD*Is520m**(a#b1)0r4LUH^#}^g=p>j}fxBKUs&-(a8k& z9kE{%eSFxMDz?NHxQsucLJNDnkW6Z(J10~_S}@9PVj@-7NjzOPWQnbZsy2 ziq5P+fW5ix`7Q*0E^`62aI6RsFTERALtRji>!>&sE+zhF+#~xtlH7s$;~fSQYaa+d z-eFUMR9x>3Nrx`{aO2X2RJ@szLg=qI!K6Le2DXP2KDzoin<4nu95uaRl(yKQY z;J!7lxSPr(2{MJ9rk6z7%HjAvYb>C4Bie#j$C1a+9xdF`0L~XPW@1OcEpeTfeCI^z z+$iZqju{1WR>;w&zc*bIk-iE%$8;Mh_$>2P1-99^w*^)H-^HKLl9h|^=yf5_N=pXP zC_rS@F;#2tRKKWY)NM)ChwVftu|VU+r2$pG)i{ifAMw|T2jh6$ZGkN=mF|gqI=YDzWOhG=j7npjDv|`4=JP=rWjcV+sV`BJiqmCX z^h~wtbU!bsQd2`O%!NrWm{f%NQX)`TNhNB!Qak0N z&jha2ZRhrpNfd=pQV=b|vqIQzTMcD$hEnmjP>iqI=SgQ_%sTFB1+lLiaO( ztYe##f0OJdIB16?-JDo!3Qak-ekaoY)-zp*>Yyvjqr$g^p1dqikkNY3wGAu^4BQUk z%AFO<7E9Om`R2ywf^^u`huonwXbWTUS!mKiaH)|@O8=6Mqo|poglt=HxRs9J`Z+mA zell7z=|ARfq`xiiv0}qE&cU0jh~-BH`t}XLJ--ejj)sXYKQOo#3~MS}wU`{=xmYAd zhuo}fnzm_`KajVM1BUvQ$MH0b;$@fU$u_s?K~fP-7&P2Y3^Ddox32P+c2!4?(+lJzGQ2GgB*Fl{0xB@cG66m*&dx{ zF*{4axC65|pi_hJLodGEaezY`WY*cut@W$BZ4I z#jBw?*vjuQ@E4z2NnayD;|r*K5Vtz?Gs&I~)8h4{t2<%0`I{NtQ7NOHW4VLbHdDu$ z^cgBm-?aAM^j}`>Egn_fkNbV};UGp3mRRmQC0_qj8mYs7=oh5bvIW3QaU~3j5g&SM zrSh-Cu`G2fev0bn$7YBIYj&L*oWMpjPEO=MC(6u^Lfjyy^r69W^REvUj;V3)h|a2% zmFm4={D(6v-&dZ9U3lwlXrIM_s}J8T+%HD};oAF#M5-oEzA@8wA{hruX_@9`52XHT z5f;2)3tW6%d3|Jxz@6NeEgaCufc?kxqr2}jU*&RM--GnQ12F>W@BhS$>!^8fvy8u> zddE{0^sDT%c-Nzb4O9L#OdKGZ+|kA2#+unDycU(dH1*QU-#uT})41m|r{S+H+b2B> zc<_+czQKS>yn#$~%5tAvImCA2A(ljZ$Y)Ux0zF zj&Dg`DBKe-&KV$WVZz_tS>V7>$<>!uP1|oGsuLoAI?e}-Q#{BeYVuae*fbFolf>xu zKlM@Dr*tN9PsS|)%1(XD`JoSVW<7P5I8J0#%MKe++vmiLO{RQotr{4{t_z>(L*{Jp z{m2dX)d9n@a-|zQ@eMf{29&F*whzCPHtK6N2{D4Yu}mrD1Nhfm#@UBMu|(6zUW?)N zu7??J&}kd4BcAs^4e?R~+CYGg!*iglLiZ%&cdsK+-yJ9x7ZRi#L63PS%fzgw)0Iy* zURK%2xssX$>GBqT&IeSyDJTx??vY%OXnw)8B#aXfr($vZh`MxZMU|NImu^Cp|KPZ# za=mk4O5ol8p6I2RgNJvOtJ9M8y6ioWEWjwK!$K>s7PV42&VN(?=)DU*C~u%H2Wg6V ztZ9fXNOT-1E02{wM!^Bfe(38wQX8<*@-dGy7pVphn9Y1xv%-!_ZJ<_kDRS`7Q5?4N?y4|D})WI@2S!!WnGpZD7hBz zlFJ)xw0aW(Pepg-&ud-+4!l|A#o=AillXms=|cX!?nh*L_rohfWj1lpf+Psihd{L# z!MJU%GdBkL)Si1l2P0K0=uf-n~H9$X>7{aewg~J&2GkV=JhdIQZ7Rb=7;{9 zfm?dA4-=e@$^K(s6B*F?qu}$l-eq9#o2ryHqT=Y%2vXoDr9XBX@88IMaP~(m&9%v_ zD~K>FUH8@m{3+98X)2MsPJ8xdF`f8bIXQiECY|B!*vU4Lbo3oo#Cp>_;HRzN=}?=M z%=aZWxva#ZMD}N7=C7UL(;DJ3MuuYmnlQ&$zM3@fO-?bxMF2psq#8KXZ)h#R;ta^9 zPbsi|Fdc>k`>W#P*p?LmddN*kzs>&>Vt6W5B6;(klNcwxriWaz8TZNPuniXA2r@*> z-EyRcZ$Cw|q+;~&9P#?5;=#bZrh}%iXVq%*{r%NK*kDZeVE&I==>>i!Pm7_63toxSxw zjDEB+Br?VGNdp4M{EGELj3{L>E15DWjb2Epdx3xF=yS}| zzoeyM&d`tir4Co+UWytYJ`04rv#q#l}o4MSkZIq^D6D@X}RPC%02z&w)1HE*0d z?MYyu(V2XwwB6>{ikAQtB)wi7zBhCE`0spHI!W@eUFB`aT)n{Rg^*gx+@q7jBJ0}U z!L@6FZX#;FvmSFKrYt~nIk50+d-=zqN2@aVato7aib7RmgnB>gleZ?k!w&r-qqQ{? z`Roy~lfE3{&G`IJI=MYUW`jb+wW+r=OMj!VNbKTEZN)AEG^4{`R&IZa#QPm0(Hd}R z@=h<;;0fu1Ti)A((-b^h0@cf-5h+l{&lRF>o^lvC8vbnC!cWT-tngJPhwpT-FYvFn z-6oS_u<q7?on+e2t)n&OE?7X3p+3B`AK}Z0 zvqsF3iyGl!@Y$`Ac8tB2A3OZ3?70DEOnU*X`L$0cOie-c#3IJ!?<=hJ$Ql|DnY-?vSkoR5 z

    l=2712cO4fjl2@#lGJ@e1}1`~n24L7`LLn{xN76tMOPaxH6x4AvBp!xuFbdg)s zcl!*mzX3`z6NgJ#y`K)gamEr5MzSk##p0Y!Mu@BNwoX>>GJlk|x5Kx3~^zazGB?9g2Li}oC^)?}1Nf!;2CGSg0Z-6fE) zZc&wd0(a6jCdeHNW93_MF~EH@8@V*xdRg#fA`kv*9KY9!Q0;38wtzNF{^HarVD=a7 z_3oF!L*ww_&%Y45x`mdpC<==xcT=C!zPw)t_sYtegK>_}EFypUzpevwI;WNggdAav zV^tTt3-pbTyVjsk#h`=x&WD1{fd403dD@uMwaxaNeZo=^Tl}|0=WkD_X3q(!OlQ%w zon*8<+FyPJa}~?=jwZZHOS$^NhM)=Jd?hx($C-A>olaIICTQdYHZ-bUE z^MPm6BNPJ@PVo=WNp|Ey4Fs-r|2o3;dnoNJWmE4*>+8_T+MapJ-t`X`8bHj+Sc=dr z!59L+Iz^fzyN~G_cWKCrp`mbbtQGsl-cOd@0qjLOeI(yS!>51Ly3;yF3|2?XsZjcy z2NWIt2d_Wi+o6XaW*}qwyJw7Bt)c19`QvY^M~e;JHKBY&i&BZ!tuy>5syD3Jihv4V zySHe7*D7U&AJkA^YV0#nS5%3e4DgON1-Uu-il98dwzQVTcHk0rktCz0lz%u6&-eKV z^T@P+11o_-D)++czg_ry!5WVuP8j6Xq*yvw&u8gQyVTsdNW<|JrKHZ^SlGGC-;=`n zHK3f+k8is?#{BaO*^RnX2sOaNI>s4tF%!Pv-|p&@aq3*H7~9{SKbhKpl8jsl=+OuJph^PiQJqZ)hN{hHrY(&(Y@m5r7=sO|TsPTbD$__Y%ych;c7 zWNz&ZdpkLXQmGq-z*-w>Eaia=k8D86(+ed_8|vGghxpdop(!`pRT*TLSFV7qw55mF z#ZFMgkO za8cB{qEfCPni3U2X*OXWbvW-haDOagwuBG8tjg+r`qyijlL!WZX_PJY4tf($U=lO^ z3mhXDZId|6g{q|xG+Y|#c6;^qZ7HWDk1 zc6{`~(RKt?t;U)C!MJ~`85Po``7b4mx7wtf3ld3kgzgXCPNiwl!+z3P&NaTDWVsW0 zi8?493#fHO_!tsH%VNlndiI^qq|T9A(@OF}@u&kkD!&l$O`1E7yps->j|-*W^{`%5 zSNJbRyoGi*^Ock$pT`8xzYsdHxPn6-LSd`H9S+6ME5T)|eg;pl&jyYl3Fesps3{Vu%9RBZsS55ifyE{^4kKq|dzaT{SkOcPq};XgDB8$o+k4L4a?!@2h25nN_M} z74T$1yMTI-zhbaGiq!n9ftl>-eF$ehbDI8*rmw8_+GHA~w-icGf_R2o|GWT6newX1 zZpTXp>M&cYoz^dT?Sj=dZzoirttbamC%V`54=Y8pACSwfry!-A%Gt}}b$cHwO}!@7 z_K3-)t_b_)1!;_szP&9PYlI>#N19sa>q{Pb87nfhpDYoA+6>`k@)N%+{VGi4V6q9szebJ%0Do z`nG4P?r%iMs9-%D4o|**Td_6GGchkx117?W46?i%2sesSP+xFMpwQvX8qZ;0iKp1J zid6E#!j8;sI;}vq`xoj_sl+fLOnA4r?7r$XrbqfixeiqU=;ck;q;+@?xIUGg_@>(a z+1HJl*C=h|&g%7!LV4<;r=Rx1;jdrQ**TfXMV$3B3Am>~JG&Y;tir(N1EHq2XpT&Z zsD9VD^r5_+p=F>|FF+|N4C4nE!90yfBNXeiQ2c%!43batp9A=f!X@2D3t0{qs9YNa zv%ID~R;x@n@Cu$GBp+kP_)NXzTdJY!uZ8*!OIF9CHV7d8u9QNo1Ix>Mf;H6l-_s)6 zJ+1G0&&C>7eex20BR$JtZjCbiH;RPP;(oj#EFV+A%@F_GGPTjakCTD(xV(53a3S9K zf)z8uG3N2A&fGV}yDvvmKhwgI7J6Q@HiIwP&alN@N{twa( z6IvUbheB}oV01Appqx^p>M4>+-q$`!HN9pvnjuzJ_~&flET|v1h-OG|y)_HHg7vha zY;mWLR2;976>@xrQ@*9ydPOGxnqEcYt zDms6QX)Sh6mbyu#r+P)yEf^TX$&+sO8u?}iX4B|WaJ!f6NI@83bk?*`TY3!No7XqAmO?_NwE$sX{O(?D^juw5@Z?AnJaDueh z^=`aSeb13Av*A`&X?NpucGo6D`o<_Y(=tEMYgD8w({Z=9CPX7c9FtB8d09hjPjyW0 zT)Bl5dSW?LSYG6KXP}gcf9!=tM6w?y>rZ!!F<98PkD zc5{$?u2LZEf2VLKQ`^&jN3kU`ng(^2$r%rrFw1oP(ehgEESx>fG}((N4hAHnyt|+E zcFXwr9pTVN!L%^U%Nfc^gLm-zLh2dW)9WYtcPHqi(V87KLTR<>dX}fyyq@6GH@}`U zx(q0EOvP4m`Q>p$8mFwI=RRQy*2}L^<;Zk27)#M=98Q%7C8;7Op1vkcFqbPuXSOA& z7ABqs)KAIlcxyH?)Q~)PJqs-k=Ilwx=%@^RdaAn7!`^Y0b4#8DjFr{IM*bKKYyG8S z8Q1v!n4<}3^TC#x7VlG`5WM~Rr!++NMlk`2t?VgO;Xm|rSGa&&;Tf|F_5uu@S@EsuPIny-i@2B`gg_2X)8*kC;TIDdvBkKo;lEGa$J<1xxnV@hK zZF7;s7rmEbDb;hbV+jc>#2FZ?s=tX&li7p#lr9 z3`CO84vQb)GKYw(61jv{3q$4wPSR!fcg1MtJNR18EEq5BuX?+NMw9k#FpCg}eNckS z9=Wpkfelh(?nBlRmXDHQ%fkIZTKTR!YK|mhT|NbWo6AR@3-8nGr}_*EJ)G2ZfCSs zp4XP&32qW8_ra(pEZ2&+UMANHy2Pm2Zv)YOKhK(eKi2j`h@!g``p7a@_e$1$g6Q}H zT7F?qC%AeN(9+LngWV@G_>|C2EtOG-;tg*tTHcG_G{|qh5VN zjq;W-Is|2`e}lp#K2BqLm~ZTyW2dT?(x@?TOc8sS+ea+JnNS>t6AQBis$AK!3b3Fk z7n!VLMx)PubT;f8mT;;@(~VnV67B4SOD*0}bAkn-u`Jwc-Fp6#`YS2(2=(|FzOhy= z+~5_RtG+!HFz_-ByxDQ4)NO8pdMlE(p*v7VR^LGnAJkrhu4X`42dYtIW+8)w%w>>U zJJlxhzd_0w1n^usX7PJFoAI`l2iI4^!mD7R;WLB$H~EGB;-sC$Dsrg_MgoU^d(pVI zzOPfORLj5VS87ysK_O{L;KNb#*Qy1!Yd<5JSDMXs(mm~YZec>#HCf#GcKt|edPR#W z=lu%k!``6h?qlDl^%M8?O;ViUyNKV`-%%Qmh&eqD);I`D3Zd8x#p9gPso=twj|+N- zEyuW+I=fi6bL}2eNqE}u>ndiMc2Zh^PzA!*;W0Hf*D*nC&3z3JlfbkY9~)gz5M1VD zO`pmTpb!;joTazdM%V<6mWJVSLzZ)eM5lPn?gh;QQV;043y3Pkw)a9 z^Ig5cC&J)9be44QjO*!dH__8nw#-qP#W%Z4-lfw{rpa~RhNRG=I-{)cxU_4# z+Bu@P_o>|4>hT4RfV=NL^}A#61kwYhbW434hcTSkLzh+-ZN$P}TWOcSel}lNxdI0L zbrUlnIPV$fT}(eogftcj|9dH6?;~9d7(7T$GeWxSCh>anijl<;8hn91$`LD8+fH*b zus+Y?QRu8ka(0yM|MI3|{iCSH7uHz6FJL@MQP-=lcTO&bcev}Zp&6 z+wnuwf)|9yGSzgS+&(mD9ua=vnJ7iZ)Lc!|AawS|?LHGvAb;Tl+3h&2v|Jh6)<$re zi(RUAzeLZM8wI~FFs&~1M~n{u)FnjbXBscf(cNH|_{xAj!82&QR4+HqouRPFZ}Gn* zlTgQhsxh<_)elAL^$7b1vx^@*LBR#^fIAdh{(> z!5viY3XVVHzZFXivW&oZgm0No@)*=D_gYl$Uf>pCRJ`QMF^`sjSIennd=wpE;&H{T zeICMMn%h1bmUv!xrKsKzIi)h{aWBf6aYZ*}W1jyJQp#HbmOEh1NhRjZ?K_dPRh1$$ zOTj^nTyyv&*YvZI>WzHZhJ!pjDylBQ>F~|3*vSyyg%CwX1c=qRQ`PPvAl6ONXnOA$ zn>OK6fuwW~9BD-oP^U=44NzQh%7-z9r7^kr)gVG?%d=UKpVIO#&^}9zmAdDY9gGO; zL@Jmt+7&E%@)cdpDsXx=#!-Kc&A-k1qm z3G3@=dK+F;MArSknO$#+NU9;P^Q z-7%+zTeyeS1Geyr^WeEu_J85R{x<`bn@f;W;D141|GORHKb;EyUy2~O{;Nmfe>Fk; zPi*Y}Q3ZkZ|Ehxc^na^@_@B@5-|Y$izq%m)ciqE(6+2*Y$o_Y+!~fCy0B?r)-yIL! z|LKDG?^pdVzAg8ERYl0y{im-1UeMqOuWXRAvT(BepKTBSRixpK*pOuu!8;UJbat#e zdm~Xo-Mx+X(P)$#V^3w0lW@dPsfqTNRekQ_kZBF zCyNWBBCpR6F%x@k-@p@{0nq@$oEISxzMR*w&Z*azh5gRgn2A?XQAd-9fB@LDm;X)Z z>&?XN)m?ypBju^h)5FBN$)_8Ej+rF8HW3byDxBvcR+^Y6TaoG<@4p?O#^!sK1xJp5 zCCAu)D<)#=Qvv$aXTE8_?hjLrOZ0lr0$!g}Ohh3s+?P3au)C(55jn&{mK<#(ND@GI!<_|;G};NbWQcGrW@;(vFQ z`11XhH_raW^T|gONEu2Vw+^j;g1LDq?s14V3JAWAz})J+f4>auSHIrEQMgsENf!^> ziXvV;es)iun7{yN3!8P=!q@GES3K4G`?9Q)Vpn1zTBE1$Af)LL|I1(s3gfcZ%uM$g z@3fLKvLfl@&;p8^mKIi6yyk*+>TIZDoy(s1bc1K`d_l*Xlp5k+i9BB@=x-jlV@?w_ zy}TNDSBn58+RQnE79&b_zZBCR-4AbzldW5>LHX^pr$2{ord3kR(w5y1r_tuKlYz}j zu(s@38~8YTm^`w=CwLR2a6P{!kV1i0lF76}NO69K4F+BW^VIhGAw`?Hs9^SMeiC z`)eT3dOn>ZJC9M!C`6SgLlI&Kh_L|`Fx2zE)(AIux>cGw)cdD<1OyOzj62pP`gwuY zI8ISRl1D%>oA!qz{`%~v+`Hhlj*?&2;6(oy`U*!|h~he*pvME!M;kQWZq9~>s^OH2 zQm+}SBd{Sgpw&)nomF%9BeDMgjVs$$-r1yJQifD^&I(_QWRH7V=yQ2|>ozt6b4jki z40fN*B(K>X0tH#-wpa6;p07s9MOwWB+E_i@=JeMOA?8=0UZsQN<#F)d(r@i`6$^hy zScAoU%DYHfh_->Xa|ef2nPE`lrf~9Y?I@k7dS6o7dm2lUj*(ts^jT#SE*HluM>1>~ zuPC0VvcZ14W>!h*Ij^d8G8@A#;P}|jaa5dsVqM%T_9QO@>XPEFgQ{kYTf6j09+=t; z3cC%xQbt+j$q{EdHxDSKlEfB}liPq;1I?Qd>VJsr6+vjZq7>!-(X_AHII-N0vN6}! z{-hf;-q`ssv0ZbS14Yx}X&kCbxv^1FjbR77$FhSxlh~c^*zs#5wmVP8h(4DYxB#l4 zdsZXWEeDXC&KG0J@m83dPIdW8_RO~SO#mMFo~Cj3aWsY_Tky6G!sti4_IC8;MM?jc z**A~pfDzHo3&(edxjEm{^b$H|UM_lSPqDDP_HHZ)jx%20ggS9y^l|vNz!KFu`|0Wf zs&)-zPNwN13rgH*S0=Uhg9FZQyFV+GV()r^9)b=R?|$M!b}*~Hv0}@iS9vO|-VP0S z50QmO9&IlJa{kB`)rGiXM9%_R4li^v>_*EVt~Af($4JbgRUl`pjsb%{NW#(+`Rs@@ zF<2Vf9|u0gwpa*kpHoR>ITQAGp4msT^Cg8LoHU~3`dCKdH{i5JJxt$CkMl*(LSOGj z)Gk6L`mQ8Py`PvOan!;<=iCx~wX{t_FI2yUR?Vx-_fA<yuPU$6dPJfaRE^= z!oFN!Z`m)yiLl2&(~vKE2SjUf63;gyH4=VIgm3Vf!f9^I%p6Qa#~<(%c!1@M-@A`v z%|m>IjFYW#`Qy|A$RA487;JOi`+pq~X7~=W zuN`Un%2Fit>@O3mxJ$Nae-OAcOkQP~uT$i% zyvV)Q*;`2(Uz6Xe$>5GB=m7bv84HCp7)-vf_~NMCVfZg*%^FV)9|ephw6aXwm~%Ke zW}D3BRTrx-pMR%WGjqcGAhW<nm|gR7};P}jBN=7Yhfk_0F0xF?1)_YRapmn5jN^bYHj0;J2psXx5QpICMV};YpxE^)Y!v4QMcXqosU+R>C;eI71pLXj0%aoN`zw$4VOCL zKeA2EXqu@<32@rTVkEO93*CNXW#mA3fMea)PnS%A;WVV4p+h1lDYvG_A{hN$t-mVj z|FTR!$FkQ+26?!x$8N0d!*ZZqTQErizNOda;QJ3aVD5c_=J1Yr) z46*arS;MthQ}q#7{cqZ+47C>P^t5RO$1DnCB6`Batwut7u4is&A@gH_%6_4vN>a1T zNQXSu-!Qz&IJuX!a=23cXRIHEcLD}E-JG16+uq-~?>6pA5wJCw0mcap)ZfvP)q}+L zWCLqjL`*e3V_zx8-z+9ty%~IN_RQfaBs&j&_HS@}z*(~~w>Jlns6ZK8Bu;U#6u%%v;(r}YJXs&;{r73qU zwIyvW>XO3%d_v{7iUhp|k{kDzWvO)i|R+Pv8+jS#a}z-*JU#;bfTHFHWB z5Ah)^(8H5qg;`X8Ntn8m&-uq_wQqAXoidZaw4K&!Ah|d&vFg{%%l_(uK)HIAo5=)} z^eJ}W_O$Y_(D5|t{8m_918eO(#bc~wGc@7fkLXKWeh41UE;-m5Q!thnCGvhb4h%{Z zivL{V92DK#XQnvdQ9gO1Wu!1NZPT>m8Kjk6M;}NQ1~Eh@rNiXt{waHO+ouhd_>fH! zNf%kOq@w!4^oG9#T4#isE;T#dFfipGN~vY*te`6Mok{iuJ!n*uI_kFEi&dO$Cu>rM zi%`oT`Fy|m$ZCVWdTR|+I4z)gHmS(Oqp>eD`?<~R-JiQ=e<9UBC1YcTNK;=maOePT zwx>-D1_$>jPoGQky{SmzG`(88uquGb!*k{=SnOtOn3Wb|Bx;G>V?Hk@qczUnvY)?-n_yzqOU#>2-Uxw%gM#cp^T~I(Q`oP0kQE2^jg-_{O+cl8$C3 zg4cZ`x4#IK-%i{^nYZI&pWirUX*AJk5Ygt%8Csvr@J>tkewxmyTICmO?zF4Lwepq? zs|PH^JyR~D=+ytM=$k)>xGeFHpxR!a7EH8^=Pg=Ebs!O7$fz|PIlS!Zq<@#h-}raR z!`%TA@jJ7J8g_kHb0VdrGI4!k8S1{(@1MGXJekPuVV*fNxEm~Y@QBeZxEjneZMeic z$$vzWwcfpO>)6Hi^^!44s_33v?6NuHSd3(tbs|UkaKsTzs#3cC1;cW7qGp8W2s>#H zYZZRm?bt^7S?u;eJ8L3Vs5-9#BUNrmklc3MrCja5XXcw5gSG1es|_} zs{UU8Mrk=Kc*Fqg$GnMV{~=Al2Nymp6Td+CUE$WojM|o}*Zuy<$%M2M9risKvdBCW zFCsF$T0mGik>RUFVq=Qz*R)Bg(izwDgzAmgX> zSCH%iLAcV)>fB-N-H&4_z#N`~5|`G3U!hwOGdatpn?EGmIrNK~0{plDjPQinT;BV) zGeW4h`miG1Z6E~{WbCj%BgOOF4|?wI^X?89Kl>23yo2e<_vR^-jShjX0IIN;PQ-*j zm-iBs^uT9>Rtws2W*4~4lK#2w@R>)ym3%cO{QJqTOrCwu4NRNCGIXgj=l-=hxmGP# zvuqDCM72wNnI^O1k*?)4_r?%(*1$1Bp)J>Vb zVfwYcGg_lfr!39;mA(WT@s^#zTBT|afJcQpB(Ddczq}3XW^zQ4qwfVY#smos@v4+T zzI-OZWNc1iU0u_p=ViY6V}9G-<4&%gh$m?=eFGV`mQo*oBP9oqV(U^OD$^-{KO?cC zkq$d8oNckR0p<0Up1?(MjXN&yM9XUf)nq6hp=)DlDIC4QBZFr)Fgym(?Xly;qB(Y@ zv-1_CF(chW*iG*jRf_0eRca}}cu-LghHbeWHL{h}u=Es0!lbNEMljzNRB+G%8BSD( z!E!nPx38m-m%sTcPZL^H1O@|eHqN%Obm82UC}UYHqOV@uDdDR~nBd692?K)@$ixO- z(}cHF8-$JhqEA!5SHv?P)TZ8&kM^ivffWh7Gq&A_=swiVi1pgz`)e(aZIS~6F<2ob z{Wu(CZPhh1?<&qoet*^o5Pt)|_>tes9@#@(%-M6)bnC*YP8w-$2=Uj5J$_)D*WeR( z<{T@q=k!dAY6Nt7e%5c%(6C?y)Oz}=@*xPNXVdixjW6_Iu&a=qOI};H`fGGQEf}lu zb`vGy*9CMF;57AY#C;}d@m34)tUZ~<6n{`0RaPzS{P&1AZi;U{am4+(s@(&wvTu@3 zwR7b`tF!!zv^@45ni#lJQZMmK`{H;|$;zI0wcxe96jpV~&LC_r#+W^wDS)5htHC35 zk_w|xfU|5H&yhvCuDpccyCD1=Id_Lfl2$nnL`5?R5$1B0yma$jHmqC+&dhG7a9ecfZsn26U$pvUlNi{G6|pd2l)8_sl~h;#pJ# zUlTgkCKTbRNssK$!jy|r$m1g14-Mv~!}L9C{r-JPf4~NRt`(sMvirS%ODQ)lpJU3y zm`{HltWXAdH2svl%=Ugku6aAVELD^Ovk&tuz%A5WrqR`%SGCl^2DDa@;8LLwbAkzE z4=fH29msHAi!$F1RWmM7dUV{q?XZ9Jej}q;`edlfT>t1z+uPIPQN1XR++kl_L~f4e zhlqmHcF|muH*GkRI{is|QCA7272^j=Vwemw(<>;X07#%L<{;?hccK4r_fYp;CCeiX zR>D^pmdD*#?IRSXK^%h`4L11?oE8Y3P1Pte2q|VR7gEAEIjEir2b!V-9X(2-l~jk|{LAp<&~8 z^UApKW@PCnP{+;76~WeR;>Sf=%2CQK*<=E3t1&+c|H9pDxV` zd~-!V`=uBeB?|08xn7NE4#s5K+3i)83-W;h9Z%2A$T*un_wWCWWF!c`-jU-r)K5=jD%Y$9u!z5bgbD88#l2MNOu&PaN+*Z<(nd=D%_pN|d`*m&Zbc4F zb1JH`tbal>d7N^iHIDg;7&nEkN;0}+MiF#=8B+i*QJ%Ekx>u!B6J@A1&F!gi;@OVH zRjuy9#P*qe)Zrx7t1puuI^VLgZ;oQ`)|njprVF~p1*DAP)D!13==B|Etg61TaQ_Oee{YWnYomGJj)gP!k4fCe{(&D77~5m@)y#eKfADTsPz@}#28gi=g44H zPU{z=wk-6lm$$FjOHf)&gUy337t4&LrLijNsT`%<5*|)x)4CCFQ41g8h@ubRU zQz>D35Qby@Zmb0FfM>QVP&v4=HhGB2bE4K>MNcw*O5zKu z9q%`2eV`cyj=kZ}s#;<>)m&z-{b*3qo5b6AZFQ>nvA0?fy^GTYUo2naxS)O*BgkszpH43BlUSc;G_mC{-DTn=^M+Rs^q%aD(56rhTH5bortR zpVYx$Kx|H?&2|Ug(mAKTVZVVs?oxv3!j8X~4t_PW|4@7)N@f8DxT^9Ew=H_hw;073 z4<~^zddTCuHI|!bJzMsB&riDK0sHCQHFcpio?_?BSS2n~CIk>wz7Pw=-RAjxt)0C# z)vX1cm)~VG)l4yP)B3PXd$3E@r9-c3ghlk$toB#@*1WM&6-7inhDaB{PxYu|Bz2Jw zcXVhFoK~82JS3`AIHvj2H%X!{nHi~9iwhEW@KSWgu@UIIvH8Eu{ z%Hm+AQ=RY!qCb15i4w0UMz;O3!|A@EZ4zCO`hgF;^bjljaMXxeM33=X#7kRZ)pNl% z#{ZC{fq0^{HDoYuhQ;J7Rfo_UQ7<&=A^}(F4@aJ{)jh1yhH=5o04mOV)fQ^KYhsT- z=B@A28i9nL7PXbXDz<^hyFFyyX<2HhrL?z%@N)Q3{29RtefCmwThEtj-obPlVq+xI z)Ei1lIR190z}4q9s9HrS)Rk_p6`#gAKp0RgGRb+7aV?RjP+7r9p2LA(7MGirV+f&) zteP@KluQpGOz=zsJW=lmIzfya?M>C@NWum9{pSn*3-) zc&{sou(Vou2Clu%S zZ<49*GOq5XHJoaiN73q(-@U9Q1dp!iVc95-lD7%BMZWAQmv@K&P*J5zyuLd7mR+0` zWv&LEIO?dlKn(nm31;K5_v6$a6?x@lGHa+NxQcPa=DW1=H@cJ3FgU@M))1WFAoI>qhUVX3;9yhmnhF})_???Y+ zK}8Ig`_l61%1vrr(N0VxnEWAJ(13Xo?$*W1Cb`G%d3Am36yf`ZT{#)xWLw&I@t(*S zqSOO@TROgZ4H~|-XbLqjKxcEpRz2Cm#z7>%GY+xW+)=1RS|L2NmNIpvxA_hQ^ktT_x_#SeutaPgTjdAbA-wr77&A4v zA5~_ihlLhfSy=s;!8|d~cYOgs@#1cyuNqC*m&k8o;PInnk7mci6M3B?G`f9IB1TKO z$s$L?gy8G;vw{MEEYg})Q&%$&%4886OJBWDB0u(Iqo+O8b4x%ziL~@)@hu+|mgYUeOsVSK}jYE=YMC80Zc%Q4_uG4ycr1zx556k24uAs&CDe`j%bjpJJJ&$-s`h+TB&q*yjoJb2;j9LGc& zQFW;VjV9#WDO)|h{UP|N|9Q;|h&ru0BmHropJp|*3~H=cj{VgH|3jrX4gIzAB!(J2 z4RnxKo<=?znuxEYLys+FynO!Hh?iJsp)u@XvRK2?want@a!Ne*no&xmxB#SaoU(1E zLFP)h{X1mnWqA5SUV1dgG=~9g(|iU6{5{cI$no=*b23qO0!9(2soWkRgSGR)(db{~ zw@j-B%8_|?MF>TxniW|VE zz_c#Oyan+bEhsd=j0-WNzAKIa4(?($q0@*si$2^m+|%O=yz>U@ zA6&I9E51IL)o)TvSI2^@gwkcsI)lpVxV*-%(;d!x<;p6P>FDMw9) zg5Uh{&PtbPTG0TO?5e$mW9i3aZE(bHv8!QDq5kw$mj8TS_ACLcRIw(ZX4wH0yxX znWo@JB)ON5Tlhh;kZem$AukM!zCrs(-S=_=Yy~#|J|5~51p3K}E5{7yVFw}M%C14S z){s@j4RsFUd`dw=(k5ae+agyCrkP85+=yHCPJ>>HI%x>PydQp#4%3ACy||T`Y&3WwF*V>wqykRyiVLTqvRYx! zKFrcP)i8*dJi-HDmV|r>9@x`6jkJlcg4bJNXh_mD{70PnROqQ5uwbd#W9C)RbuClW z1eDfZF1P;YdGu@8rJ*a{tXTIm6BCn{UyC@VmqXQvIWbq`C5LdN57Gyb=6 zs26V?Vyb!^fG=KZC3wnHqd%l}PL;K3(!1qC62V3~xQCk-pE_jw?`P+Rn`0CbX>R@l z1GUt8LQvS%gx+@r{Vt|R0Xmic701G&5G#=zidqRY`UXYLY(hr8`%CsY!?g9^diJC! z+cmyMTcCfd6CSKp{AcU#pvuapZkP>fb<=u9bHG!Zc-Dl2CaW3T2~d_U;$s9<*EGuw z`bfHmFa6an^^c`rKMLANr|mb5;~8g(EF$J%>|=ETYE?FMy0Tr(!nmLcSy5Y z7rSDPX~u;;pSbD}mX}_DqV(^S#N}yJ7PIkVQs3pkPJ-mm9=bf6Ykr+`k1dqjl<7K6 z0aO0xG5)H!5~2g5`}D72Xu9K~*m~6sPe{hz11y__>n_JP9s#{0XM?op4wMCyywY6@ zUTsE{9Btd$|4jS_*m|Gw&g5{K61@DZC~MTazqW8}gm^utJ1^F_H>_p|SCF^zs0onr zhu3m4f9O%gexMTa;8F3ia_}W}cglc@o^{qOmDT*IcnbmydKzpwc-rHCH>?;7T7KEB z-b~gcy>$S{4^MhCKYDQrg)!9G1N+ z=;k;ThS(R!oy=w;6OFBE8;(WXCiwH@r*wocc!S9~?oWW^2Nm|{YMd123Awr0;{?aQ zru`Wu??VC=trZG~8{FuI1Yqx{e=v9Cn)r(xKz zviWf)QJvJ|?16uMCp9i#w5|Wz;;-YcC{_olOPULId+(s0oZC@-HrX^k%{J=~(n#ze zE?T$to{&X9GI)s88N6>3<{{&|;20-vgWqlFC^&pkRlKLpJk9qiJI_^z|Ln*{GjmH3 zalDvBAK?tSgmexxj_V2rbg3tAlewNkkqJUier_vqL(O(XHLoXLc5f5N*uZ%d$Y?i8 zn;Cd@4<@ca3i8Sf!kbhJzo(JaCa>suv?C|GUc~zDmI~yiCz?eplQW8S{~CC?P}>-> z-=}c<7MMs3{z=(w^FRr7Zo!`w@T9FAoK>7$=j){N>CfBX7%kZ*?gYFe4n1lH2VD$D zjYca87%KW!F!+nDS8YDL5AEXyrpKRB?zejC@RQHJ!gHjRd*k|*=Loz2MOacr`!u^E zIhFPw6-7O>oBR*r#(!71fN|$;JhqZvKM`pLbSfjyre)V)dh81K& zRKT2)JgTN3b`_=@!Z&Bt+MG*$zoT6D;R`-u6ib}g_4phHQbFs|$B=CI7WVU{Xtd%o zZI#stSGHNzD6B7*j$T|hc?`RttKw`v<@|(Tk>@TUJh&ifB{sVXYCfWz7GiK1{0aI9F^eQY}wH?iL*JSJU)9kZ@Sk7p& zt{6Eg{unL(Jx0&}eMs?OWb8_7Izvpey3{oL7+pVSg9P-SSoWHe8>=j4vkA= zO~drPQ}@#&H^d}XYW95mXIx)JJetieQM|*JnTMiWP>knvP`vX16dmIwZmZRw=pq9F| zWG`p*y1`7!MMtpyv{nV^C%xTFE_)PK);a4m34GXoG?evIeokVqSK{OC! z+u)P76BL?tS+f91dUX2YZ z%k9MG6c+1a)4^Kz`9cN@Lb*Ttuu)s~rzrs#w5YixBCDhJna{gtj9fS;O0#y}F(@B% z3C|N2AR(N@a9~BQ#gyWPyf+XtFB9odiR2Dy?);UhG}9Zy6~*$&2P)IB+U8y8n1S+C zGNSkM;o<%D43d;xvd0PPOj)O?N2t;TC0}`fAp8imL#!w~B5C?dLK7rv4nEpX$o|7G zmW^q5((>_KUHZdOLgCL;fqbCYhLVm$qJ>Hx_0bmKVn6Z3a-Di9wdondyo5aYt#F!8 z-s!&P{DUIHg4=nsmAD#CROTdaM#%4D+%D@HI){fD9IMd{ocD(PM7psU$D`f4Ve-x1 zhU<(w-~QRD7?Y=vRfZvJULg!9w(h06+Pa&|Y3^hTvlUXnW*kEeP_U*69X%#|4mpuU ztO$L|YYsm2!n>G)aiSEe4uc7i;!G%WjXk7{qA6yR@9xUaDp&z{D*SLiDh3~;82!{g zbnR-uiXqWmyo$v@GNhYK=5zf43z*PYV%$o1VuV$`UO?y`@ROOPVl5Dn=i&Ws1PhuJ zy2xQd*aepx#p`ZNu2VSnEX?YV*h|e=wbI=HiNgI86u|w}Mf@^xo{R>qqd9J?teK1{ za($5^ooP_jZ048Jv|%tC`s?t^die8)*@|CH^X~-=u5AWql8U)^4gH;^jCb931#;DT zN{;A&d*;Z>?J;G#y%G?bY(mLgk&~TwCve$4BdF^NOyt-!S~^l2$mE5_?E0v%ZA=v& zG64q>SD7;+){=Fv;Fi;0#Udy{e&=uQdu?@pHK6Q@=veJ@AU#oC4$mTO0l7qhgH{^0 zuAQ26(-|s*dY&|Q(UewlvPiGZ$6tX8CeuWgHk0@_5<+d}V{_1OK`;1Wz+^=abqoO| zN6G97?pYANl48@>FZ7+%ak5LQ-@ zufi%JDi;dAwif;RQX5#5`M9g;uBqxReOkW}^uhQ!hnssww3B7(kPFN6W}Wxd9(XWi z`k{c?s@*##gBG}z+&`&Zs8KVHYm|l`P7$hr;q?o=mfA1ziRU|Io9rL(K`0-|=fZTD z>Fhn?O?IXc$=V_q5QC;ss{>KNFyO=Wx%CP#PQVEF!PevQS0&_B=r0Z zt+Xolqn)bo0XOLuQh9I`6uKClx>L?u+Z#$O$T$afYr0GD@RYrhkEX6e*`62ZPg@Se zh!I-8Kj47wm2p~a8iQaGN+Ro`>75y@$K>Z3wY7=r5sI!-kfa~gTX}kS|V#-0YYM8?Z%PtkiN0ufcW~mP`AS5be0p(bCONJ@6tgv zjB-2&#RZY5r$N#5QmV1l<2O$AlIm=6vZ_nY0b~0eYNzFaIpN&R$$9BE^G%gDuvWkh zx_g!3f4U0HFdUUlS7+{j`M>b?_%11$4-6vaBmdm^=e+W?W>aH1FmA`)1~rJWhjc<> za0r@BT}%$||0dVNO4hCq+ zKc!cKvmYq)`ul(4$fEu-_`+Q*et(tiG2%bV3?Y9q`~yYE{= z(5|i&#yV-Wu&0Lc3&SNNC8DwvKZd>(+ZV+N8T9e>j|$Uu$g4m7Pv=EM?`k8Yy#wW< zwFGPSoI|9P`qWenm0pn^eRR1;n_h$+ie%*{Yn(ywwd3pZD>CTuI#id@D@0R)%>WtP zKD}65H9mw9OPoRpIl(pgH)48g@&x*k8EkbLvQsEjq>`i?Cq2`;SNJZ!f~JsR<8#r4 zKksZg=h^*U*v(2p>6yX8A9}@>pEzy>QetQKFy&i9*4L_O4Hp(^Mb8s1QF*Hhb5ao9 zNknj?7Bhld;8r}xTSF~A02Ny;ZpqiGS#+zw`q;2A8#h@ti35qYT5oYpvbx6laL(>g zcETEm^|Mj$wT%HJ_?$L_ni=z~QoW$)Sxr2hXZ1*d7jjwx|V<}}9WMy_%C$=J4ch(#j&I)<0p^yXjA=+SEYq*Wuj)w2S(Y3afYwsSk(^B-2KwL z3T;#N9cZ&Bh*`p>9l*q@Xe97$XiS6W!iszj#oIoAfl~%!lmw|4Cum-w9X_99jb4wuAZdBD)Tb&4M9mp>BZUD(=4YpiQ8N0ft@D@ zF3fUs_~`^BaHsRl{W5ElvK2pizTm(L5;8lipSHSqIZ6Hb4xK~^q#ZKlZ-q2kywab2 zSkTQAHiAq#rrxB+aLG`tuE>^P5zn=C=cFGGlG-sN@vUj$YF3t>R%1^)=5WFU9EyF( zmYf|Pq}uuXl(=XCK-2P_N8)fzdR)4N2_^xJhaCl>R=J{+xYjA}z;~tFqYUz?7gEYU z(XhGVnIgw{!z|EMJcYk5Uc?G-qBuPR7;AnS3JP%r?UtC*(H-(p`C3{EcZ9Ey-by7 zGA`-ieZ2Jhq}IB@C@EHp`~W#n_h(AnP?dtV(d9@xOOWr{T}r^1v#(?>yd;4YC#j&t zhkZ1DIbugCC|OH0vG>10p`!#={wU#p_7cBf#mzEoPD!@)$?>G0(%moRQ}9-{PnaEu z>d`;pLUpR042b~f+?fIfC#&bNmO%6qUO9#p;}#qnnS$BBOle9Xx+%BvMC#K-51GWX zw#ImQWJDH*e7H=J$EMvC&Epx}A4bt8U+k<`GvT|Xvykw%BrH_wE>f9;gF+`E0WrKE zLFAy#mkbhG$?6Hv-dRXl`-ZSkci3fzjeT9S_(z+T8Jr#`{keW&IFtI?x5r2Dme?D3 zX-53bC_sv-dUS;KW+C^HmSc4&S4h_Qw~hrq%n;rN((=KXAHfCj`S%JeOsH8*Y8$aM zYS;Wp!%=bU_vcStEFh>A8%t`hNr=6Zy8EH1=Ms=PY1Xfh5DtJr4)u)o$bX+{vof0`h83{7bxh_s1g((@Zr4SAy;BPXc3{#ITaYTLcYC{ZBlmO3cih3|IN(3iUj zd_}(Ct-a?h8WyuWt8XFrIS@BybQRRSO{)1PO|u0*p%4yxS2QLbWAw}L6EU4~c?W_Z zS7O0w;ptXV`xJOo(3DA6Yklhizp8ZOF0Ep;I3A~}XVPdVp$7eT=f-YW+0ochP@{dh z@iyPq&s#H!VuzNRacug;>^NAici;%B5lNSg|76079URSGgZp$V<(2{3BZeF=++Er0 z=?DQ6{-DAAw+Iu}mTr39>VPWpuH6kRy$8)^VS01K*$|HFAnEyoZI_8ou}4`qtcJ@? zI>*mUNX}0OrlA)UZ#Sp(i)*7Hr85z4ukMfvO^&KOEB!=T@H+p2QFLD8@;^8^|K}3e zIv`@f{D&2;3>N=o^J_qGr-LpYm?yJnXXn>DlUQ_?Pj%&G*bx@4M}mz1oEPQ)NI%61 zf=9c3FpB1qFdD7vDBAuGm5N~6@zG?oFh)A=l_yTg81}>NT;wTXzfI2KJYmYL`Y6A- zSmN0U_2oIU!G>Hq)^AOKrP)Jff~Auzp!hUIQHYE2X8f972<+ZNI zt0Rb_I`)OAAaM1bU&8~k=I1j-&UP0h-3+zx3AqjA-HJ?o@4P|Y-ZS}-_pqhzsLKBk ziOr^KT9*{j97nV`1-*_GH&(o9&9Wq0&Z@kgI4Ask+t}p)J)niFJ9e6Qecj+~C$N2? zfD+zwar;oEqN9w$D0`atI5n<)>Y-mxFL~Y_#OE1bAHE)^*zWyiQh4ZCkYzqh`1Z8~ zTZQ|(4Xot_bMzmlCH133b$|%*lHBL(7)&|Bz!O|YkGMF|&n<1Ero09Eza#Y}(k9U& z&%n69DNQR>+xD^swgIesZeKUV8{iV7R8+e52dgKHS_tdT zKTLv8S5K9})hAAib$iOaVD9NgwzZ{ey6tBo@RqEHCQ-Z!7VPgC_iT9Ks_fxR(BRoX z|9GIyvtaY}OKswZRO_eM392j9>YbNwcI{a~fBX~JHnpZHP5M5msW>m`pp&h|X+Vie zLfS%+2Y1QC%5keUV%hI}p{q&62IKB{sT1#jWtcLYj4WvyK2yD6d&0~tY3dJ%wO!-x z$6qouMtWN|Cd2OiYKVC(RsS3W6CU4fYOAEG2JLGUyrVVl2%=&l{hBsAKHZ)=EwP5t z?yLpu4%qlUS`ldoO9Q!D_!)~0h7o$I;l$-X=xbmgj0(I2?n5s{#pLql*n65mmfOH{ zZ!rSQ0(%2@#D6OIrKWZMt_NjfsToO@CY=XHGmiLZsa~YFdtF2&Cqq3q@wU_9AL56 zM`2vL7xW>zv;Fz|Pk!K~1OoD}U#!oJzW@(-_5)kI;&C(@Fq-tq1&%e1*N7uG&3epS zJ;JvBY?CE-N^^>p}`pX1vBx|GqI7hk5YCkpAeH$9j;;XISd)~siEVkf~ zWo6tTij-5myT?Xym{mH~XgRh`#$by`cuR<6o|-64d{X^^^_G(gP=j7%Rg zE9_MT2e5CKut?{tY?*?-C-gQE0~?yq1kRNjtiV*4QKCs@je?wVl0njAXlb{ErO!#v z0j~V!0>qQaTw@Uqs5>m7D}r82!rBKYIpNG-M@9QYb3WP9W_t{aS#UBH6v&J0bvSX_ zYayIJxKA&CG2ltlT&{EfvtIhg^PI{oOso2G2OUZZtE$a9@z?~-6cl1+!c*b5`OJoy z+!k_@X<~LA++b8Ue|~;lhHtv9WJEHwsC@pB?>0?(aJsBA0{2eRwZ*-4eVeUD27i4D zD~(K(;+X!cQ}nmPy&!Yu2tv?0Qfrc$537_iPkL$SI*coHr5}QQ_^jq9DDD_hnSCTW>kVEyM|F3d=4XYYBL5QaeY__@skyh zY%2cp8uvr8MF)vKo>G-Ii!7?|-$w+ctfSWx>#Q>#m^$@=B!X)zE!m9Q+rJ-89A97F z;77Di4*z$4{XbFd|G>97dHK0H|C?VI{9mB%{~LatiwpJw7_R=`{Q7@l;s0;^`hSk` zUnKeeKYpF(e|f9_#jpPdz7MJs@SqFy&(|c{!sf6okbK|h;42v` z`Js!IcOakq-`!iJUxJmaj@IzC;lhJupQlI1-%2i4ktx_CAqcv(MzQsJdj8z(2wgMX zJglwLebcY2b$J^zz3X{9JvV(_TYIaZxNmvcdh>;R3I_YU?bU6p<-I;HLXS7wTY6qk zJ`}%B21GcUT+URbwV=H2+&_D1hQA=6io7L1-XV@$?HYlopA^(@$4-Sa=CQc_zESl zeD>cUGr@{nngi^Lgq)_z~?O?uh)Q{jpALGBaJPWw6-jlPJhTbyEyD@&m?t?BCW9V1w#

    C<&N0E_$?%ylb{vID`72+nynZoHiPT@!T7KH+7A=@3%J zwlZA~Seg)0mYXIm-@?+k53lICn{Rvqdn8JMV5Ij27g(~U7gC{GF@tFDcznKE#!fMq zy3Vp;bw1pukw!cw@K-6#D@W9;Vj}U``(!w{!C~oXYN^MVUGo<8_|y?fLTpCzQqg{r zcZEvbvB?@FebJU%2nGa&5IxT}h+9LKXVUtN7lbs8qF2TvpBieGB8=RVtbrpZa~L@` zadDAx&pbxYO|;+&F~Xw@E=-J!Nq#R`P4^~)q@=drZq}P@^9{ZrE&vw@#@jtFhc^kJPBV}BbS`YtvMPWwc%c#d7cZZ|5zHT|He6p+J?p*J_3DFPR=6J4M(ns!7EOIoHown7;a1%7xtH~| z8Kox;;CSPBRuZKJ#g=;vKh>HBI}hHuKlFM&CNwbFYMB}=DqoPtjAi1@KD>#U?pRiFF{SdzHX>*=l!NYZ@T zt6=SsC8lGw{ULnDiJS}ZAc{SC{ok|*2NwEbMdfk7eph=vtLvnkdfg>t7ZV9m zSY*Ry5V3iNk*rd8L^5D%!HsoQMysLU&e{ad*So$0Rs%$j>f8uH~Hn0@Kgio`ku z5J=|a7|JxUz)eRmdK1ZyXne`hnD4-86InlU9!5=JYTkB!*$N>LCl~ivr>Mie7DlTn zxzxKCRu0mGTiQeX#@2Z|0?iQ(xzL}2j_gRZN8Y_wAf8|RxrfvtMPi|h2DVzPnM&r7 zK;~6X584T`p9YmgPqzj-N=G`|F=L%~xV`$u%oRMdz`gcs1~z*y;qV_JnZz?tSQWn( z2}0J$x$@ky(_qZ6DvInAaq3IdA}Mz@nWI;SX&jOt3yw>cb)_{ZU$=EO*Sp(MJseByud%(aUS_O(zKgmU@Tk3EU~ z7)-Dl%vs944H~XFCg#%A$Y5%O*R;(<+Y+n`QJUR^Z*is~b|~R0Q;GYQW8L$&-cQVt zBq3J3)(g`8d6Lr`H}M9PhXd)f5Qk&rcdklfXu=kt`2DqePd{*XfEVGrvPi$iOdH~R zJ{Jtb@O%&N`2?AcrFy9#V9%qMNLh$`8l8+f@rJI6o@9dOv1XvF1Ig z`@ul`N880*|Af79-Zihy;PHc?fs$^?r=zBkw6RvRj>1z`o850u;pa=n%nk>g_vzg8 zUbNZm{@oKW&nlqy9s6~r0G8)Rmh_0lXU&Rid7O-n)X6erU^s!vVZ`Lf<90Z~X8UH= z`?mGO;D#EETiI?W%Q;n=D5YBvMq;*5DN#Kq)#4E@7^m3g^PQmbPlLQXj^XvbB^s}a z0vGwS7$2W*oQs|W6XwBWL7#9)8CnL(MR8e-QtN~-?U%Xp+K)x@Tt~tEY*mSE`T+^; zMa+QR?*mebu1F@~R{{tTXCPZP4vE zJve;t4sOw$bcc77w%PVhY>h#>eBZ2cmXN@#6evF=R(NgcAm-}5g9#aF`Ue@AD3kL! z4@oZd>lAy*1)MQJBI(z6LW4LXBcrB-X-ncS>Ykt$>Id;fX%r#CV$du9_N}aO&NoKP zx4p8AN6}slaa6|0i5AN<>GeC0tp{9?9vd}BPuVNB67*Uz<(=gZY!~`2=%3(9`f_?T zLORi8(cHOkb^laJbyX^UHkHJ%gW;SbU~ZQ`Rl8&)CL<}nw6B=7L5M#DYvXJ1vAs%p zd6~|hM0YO_+NigKY7$0V&4fR`(P?>EYOKVgvTYd^dDWoV87ecsPVQ=~<)c~4=pmOP zAn4SLc$V+$ybrKsPJBtgMSQ^qF;~yj3g-e9HnT=C-^V(7NsD$DqTU-1qoE6e>Xnk? z;i`9h_>P4AeUT^sW+wrN9kQ-tri9mdp?{lM94HUe3ie+~24BofCEvH2=j;!@?~@PK z;GcfY9k2K?$uh98^|`5q^GLEDQuQKF{Z!Ac!*E}jUs6DRq!S-&15vk>-x+G}ghD#4 z-Me)ar(LX|DyJxRbwXpg_MID2FNyPoZ-gNGpxDT)yxRmUG#)fMb(*5fl6lja|7LD%s7$k)o=A6`WDBT&SZ?gw;T zTtT?QVoO;U^6Sw0XZ4+&oF2J7)8UO-8@NNi>eD|+6k`1wO}~Vyb%h@fa;}G3MUzew z(B%?FaOqbnp^6(*|4e!2KJ^vFboPkvm=%wVbg<|3D7AS#yJ}fRl=9Mdb-M4^us~%* z76Q7mZzLrW3W7ywdk#rO3;uY(P(DpBJ81|MB!s zxF0%Ns!xu?aaIF(t^C+>xFpcQt$~5X99VcWih+|v2ekE$s-n|{WWwL!bKI-YZGL|- ztfA1Lv3tjHQgP6rI_8sBJOuB#p}}4x)Py7Z)tm9pBVCY4Az|}ZLf(MH39KRWrBsax zzdGV5*b@#R(HIDD3gLhMHUBk_#s21*_BEmFxY(Fk!s5Lv-(-*8xe{J1_V+t;3i_TO z*i6@x6f1fR^xt<81&R+KiR4RmlwFk?r}1isffOSXDNNEG_k^B#z>*T?7AVWbwP*sL zj5Z&pW;UAy0;cFU;`=~*H`NcKv4<5qiY2W#jT(`Q_`yEb0c;n{Zlz6bZ$nMwxF@sU zzDc3XH~@I}l{8_sY@R{Ucmzh5sA>+EkbNRLhHaCda}k`^rA&;`QiLHsgP$B|X&Gnx zSVYCjZQ&a5NI?Aev)1DdhuVIk&gUm3LVF~23uk@ms#&6wgCov;%pSir9^470TX=g* zv(LZM=n*f<)*=ISk@M%A?F%Y6eR`j?wh!_?G81dLss=&%)#;5%1178L8Ii`V7vc%+ z0NUxjkn3k`ZPu%9zPt3^fy0aChYR&{aR+?i-R{n!;}KPhe;Ga$7N5l>pM8u>P%N<+ zNYj3xhD=fmN!>>RY*XHz_kJnmD&V{HOzo<`^MDTLVH zA1vk?s5b6?4rqG-S}YX7_4;cMck2f@QkRdX#YuVK!f}D^mB{|B)Dal+LYAp zxb%vL`O8NWX3uszKUjZIj>Y39UfW__JEDGN*=YZ|J53>? zz93f)PJSo!90OEQNpy8S+h;N~l0F{lv4!RCLu#Wj;ojRup+jpX1gfw?waTO_AB!u< zoj^}Ln5(!OQUi1;Y3tN+Pfd`4eRUN?=v$7vhmwIqU2v(S=K;1 z=qgR4LV99oj+ptVSla(-$;;VD_i43)h>~b=Vmg95=PSKeHR0!Ak3ER%=Pt{dI~@9F z##VuXf0Z!{*s4X_xa6<06@Y`lX~ITYNlO=oLER^r3xBx@q>g(da}M|NYUgzgyVI-~ z0E4R~A8&L1A@kyvHWGe>e>Ix5hT@?;*uH$EHzqT~T=eOeP?r?`Bw}Uj=Xz_XTbu!_ z+(>E=0R=-7>6a8B2mv@O%ze zVwgAilgD_6OBBq1+jhQ>An4l$x%~654;Wc0arge+3Ey{#{Mn@n-TwkIQs!oVcZ7v^ za9qBKFZZOPZ)z1XN*42pc7scp)~e#74$I|}o15?3yjh#nKk#W`F)wL38DnG5x9kYj z6lJ70p7VXZe^ zg)!af@M0Rf7gzk*9P~7h;vuVD))=)ZASp1XgM|hCtz+yGD%fdrr2`%a5^-@DpRUx_i#0(e8F0pA8z459 z0JVW`^2zKmYTC~fn?ayx%YU(H0H;?|0(~l!q zcMmA}@r%@{m1XWy?nD6X-Z-fs?hKJM+eM{pe}wNQS%mE8!IG}hu_q~3xfX4Py~%VD zB;vb@yoqN%pyuzauOGf{16NnCL}evfeUs!;dWb-rTlhx3!*@1}1fxlTVvb6xqTYOR z2G~YbST#FJ-QF5e^_e!*+j+H{y$J zNhL$1_ZU8whQp+luS}JIH-abi5PVr8Jy6}w#}&7w)ah!TXP}(rK2NJuLFkcaRF@5c zmhUUZ2JYz;>V&&-YD9QMa^s;bprB5ZP zJjg&~%D?Ws*W*^D{Dj_k3*0mOQqgUR`Dk1dn5}jB?^J&=%1WiXKKz}e6S#E5to@}V+2pY&Q_{DR(Y{byIXR;Uzyc~|$ICEZY7cdv#g(qxwr}B$ zv*jGcmpMj<7_Xw9{8PRI_Vit|iCTALIFnfU4lGs`eX~{6OA+y0 zsm1)cUj}m7=sAVEdCMy3$(Vs&T-BXL6RC zSQ+%2D^l^Iq=;>ZbZ?_E1|D=f!mlGvja^*gUbpdVs_tqyzrsJ|#-$ns=w%IQy9HWo z>b^EK5KPVOQTECd1)%kH9UsN1yL+b8W;BhYPYoV7{A5TzQp!H5OagZy5L%ztt5hX{ zW1l|>f;fGHNtiA#`vY}Tx{ZFy!B%Qq7KCJBa`@y#AU6={S0z>*5gYR_d`UDCvH0xV zf?GeGO!5DCWcQWDvA#rmGHKjHqx}_lDLgW4b03wFUzNJZu&#i0CuDlKr&U$OW+BPPOvy5=_6qH^g51Adbj!Ti z&3fc+HY1tj7OA-&WRbX5D{2E8d~V<1vl@yPDy)Lm`F)2=Y2F6b2J4qYyG({bjNg1I zOsP|XZQhUE=#`&pVoUQjzaoGtBQMp;jbeoTpXI&8@+&B=l+MB+BbayzaG-=PvAvp0 z3SdpoUIE18=NUOF4qT@=@+vusm~}=#zD}lV$UirIe2b^?^4S^pHo^Mv%cRFL<&Qj> z-`|VUr#>-j{I&tzm|I-8f&a3xU%^_M5uEU^_Ii*1DRG zrBwgG!s7&4sFYyF5$vZI>6Fj7@D;V*IAogarp*orf@Ni*SEO*O;f(vb6WQ8e4jGtH zeu^H}!T?>bB2{q@PuGbqJRm+N&+cQi0cKc;YkH7Yrvm{8!Iu7WYA1Zwx_gI0;~krX zqGnIz{7XdeO~Y9eu7`0_I}6Qz5RwYTZcO_0tGa-9H5+w6;a-YNUDX# zpfX{-#Ak8KL51v}f9i)go@n(X)OzKWP35_gvMKVi^E&_pi+18CeXneoyH$BQlM0PO z@;YfgDxBry)KFgOU+m#P?Pvz8r!gbIZdq-Hh&zkg>Fs+9zYFPz(wmM*s%r5T+UC?| ze&T4Q(FMlG@=amnxK>9H<5(`{M*8sdCIR2EbJughS?Vv24-3WyRFBG+=4;lr_Xti8 z;-C_5XnXKUi>4B>QN@?t+wdMvDwz>&XIm*HOwBf8I!+tb2;j+om`x=YGSOg@9Bi zIURc|MqOEis5CD9lrPmRI%n2aH9D!Bbq`yp%^DF7b)MGfr*D^BmJTn1ruQ9xQ|(Ug zCTBz;k1jK4-M2Vm6!YS5sp!_Elre1gA!g$YC;X$9$xqO~EPJ9G9RbDDBR-L?p0anr zqf{)U#@y|B@cZMEV%t-4X8|u*(GTa`s*ewswC9)m21S%!90|&rt?ipTE<<*hiqGZ` zc3tPW9xr=mts8TEv#cbRT1yqK=yW=n0RO?sSGrQs;3pw`aNa@8u?Jz9rvVkV=Afcl4l9U(}= z2G>en@Yhup-%#bGwE2hZihkDg<4%_%ionfV`&{C5?>+?1fO8fwZcY|sGG798O zHTjBJkA!Dt9-F4K+Dfs9aJ;{|GZ&bTleOXm5edb7fWX_GMa5D&$xwpnTrcp2|1OurOO97tRBL zJH0B)-Ln;PA~V|KnD?GUz{0!Oen$w2W6d|#TGIiUh<#M5q6xdGyT*qR4p|eOHyHst zc3Ta9c~C$EO@>~;lB4vX!}fY6B(b zv2D#Cx+GkVWN&ar3d*hsp`yC{)%0OSTP@W->qrOR^r~B&s(W`$m#v_vR&72YAks94 zcl2HHnxKF68`-@IyAB7HY(Tk623WjEr5@YJ*KK3fW*24n#Xv;D)eS#7D`n(Du3*T} zSn;SN?e;FF>O@p`DG-Is0$ODoXHxd%azLsEW@7FrE2#|r20YceEhh!z*-=r4zebJ= zdIJS*IDMi3<=A;jN`Ln%?8Hq_`V~Pz4&|RDa@@;>5bNwUZF4{7McV7A+R zwLKRyHq_XkRKe>}ep|X$S$_SBg)Y?B7)pVH60*VOt(e7b#%LEXsm>}-OGqh@J?ENL zqP_jfCB%Er0S+&``o_Hm-DX$w=dEkj&XG57ZVto8za`wa+!GsO{FnE?xi7h2V8@Mv zW(4?v7K!piBT5X-a@xAi-GNeKG++oyG5@)Y*IXkHPf+y-hP;QNOuef3Rim7^h8ffbR{mtVU)aV_ z{M_53;fI?u)*apTv+=oN{uSU=sm9f57Bo$YzSu^UCa8x+-gNE@M4eH<4kro#w`Ux1kRJ~SMwytX!lEL`lx;KK^G zg)%_&jzZ_;=rvk;YkQy$i-PU!_$3Nd?e@rPa$@1e6)=|laEDpUTbb^KS0O#HBl^SL zbQeBkGxqFW4i#T}l6eXR*_GHCyF*mBI{-yiQ~f0R&y44U?8m%&F#d_}f>7a~QtoSk zqDmpTbp-E-XJK+^)t@RlHSNzw8UBu6?ZwRbwew;7@oq3O3nqu%iaBgYfkXH{468-$ zFvI_BYH5GSFn?C72lsO_mYur+2C4MT7)+l z*%?#Tc+_7+bLOd#fDH7{Eb1t*ph#VpmK zAs*m2Zb&J4)jhUNG7Em&N`yaX@Yg}?4XyWC`3RFN^`{nX)`!Ve)8qoF7`lvn3`LeL z{cHs~S$`y>umUZLxNY6Iu50wK_1oAlm02VNQ=c^GgEx&6+^Ll(Z!1~4A+le@o2Am? zmPa_hd=Ym(Nw5KNdTU=tD|1`sEHm3M#OtZ({bI&=e8JTSsIwMy2I-qGQe2+N&>Hdc zzGUegxEi&|Gc~QAIrveQ4czB41O^boDbPPW$F4fPG3Wrx;`tFEbo5U;KV_?gm?9 z&*HO7rqZa(v|lG!oj3-3a{Vj4G*p;c@_Q`YuJ!wKVtk=O5)3+rs3e z^v;XOnA)EW42q)N*#hNyE85zY0>6lnlt_~@&eL)YD&u5zbdg+Q4^Xr@o+{yOoi#Ou z-DP|BX#GHK$kIKUh{uAspJuTg8kC~-O%69UjgAO0R)72g$d3lF$dZrkEiH#Z9K39v zmneFmw`=0Biz=IMZJ(A>%)Z|(;sGBB$Ci4ImY%t%0t~YsUX>PpM2~6=A@gc$5#hfC z%-9{;1gmXPeMtmPD2Qe`6V=}oKFX<<8DbvCtAH6a0A&!*)e#zl%{9jFNMy>KH5HA| zZ%`YkF|I8*Fj!Yv8?5xRNaj+^PkW}ybdI%bG2jjQy6%PDD>$uqx7YUy8qoci$7Jyc9V}>_e+URfYk#AVhfykLeWzF7(V@iDHQ2d2lMC?K; zYZpgOi&6!vmBTSY0 z1^&-I|LUj|KeSwb5V|&?LOEWd+v?o2tZf=iOAy3JT5_QsME|g^_V%oNBcMs4N?3Gg zr#kNk;y=I>@|Z-Ea0b2~tQN=m$ywlgihs)q)DHQiV1*&9$5XMO_Q}Wm70a`bQkmk< ztSFUEYKq57mEOGbxD*M>@tz-LcZGa4kUime=3H+Nn)w1fD=xW))49MQT(D`K_^2$ta4Q zEf0}CVH4-K8e}!irW$_Im;(xkNlqoniz*m%Htz#tNUndikD6`oPCNd6YH3SNW+f%9k1|<3W*^Z{_;^cIwmnv5*%O~ilfw{LwkwXn%D#=^KfA~i zYQj-jO>4qP*XB7ez^?+@!HSxDb_n=e{=A{w%rhAY!X1T{EMTK=t~N_wHqh2rHUE~% zS|%25SCpN64Skw~)9k^6Nuk`845!vjB0Rvo0K3xKw2Qc0?)pCdc}e15y>+lc&hL_Z zSPX|@a`Gt)0N)ZNW z5gXx(SQ2AOR&e&Y5$RHsl|yI0=(oxRtHB=)r!!x2I|t75ImnkuetyFp;ClRd`3J5L z9fZDd5Xzc-NpIe=yaHL9_|h$Bue#tGxjY^j>=H>h#>rKzcW*`%U|S9z4LDe5A5jC@ zRZ*y(BeYU`@H>mYO`kGU5dbZHl8 za6+-BYdgas$}2tw>F;NfKT;AE{~Bk%kMo<#th@(dsQL|tg&f39Rd<1dYMgx0G%i$q_?EJu((cVd~_Ft z7CdIvRfWB#ivjA~Cw>%io3<%mNJ|Q*j<`ukMu=bPwXfUvl{l5cI&G#j-$>|{mwS4P{I_pKRJa7Xx~?M^Zw6=uYXRtewW z_u+A4?yPGs-*&zR+I-^S6vaP#PBBZmWW$#EtpAEyU!@wQlvIrjew^HG!&oRBv<=VZ zCTZ3$aY>I?#&_e5LVSNsl9ieAVU*N=*;HNAK&@TNWHf{EdPA2lo>f3-dz|9x4Dk$F zpc5(_968)nNru@&eaP#Rd6!F8xd{n46Nd#+mBanB+uU*w43g=^qNv$Tq`%4mw4JcD z`}vH^*(dL)O5Ui_1(f4$(+vaWDn?o_+3x_4;q4L0)gX^n*hZo+_c2Z=e~wjpTM7E% z2*M4j)Ma6YDv6qQ?0PFwA=rRAdN*8hO|#3tm&hab1FGMy*YapLuGI&p5$@a0Pd#jD zFOt+YuF;4>gwE=s*0el2>)CjujU&0byb0?P5Oq$7U@Oi5c-b%1KM*RXffh^7Y8Z%S zHOZOt!=;>Mm1g-ZttGj)WFtOpR_R33#jX)dG>I4)Og11l9ydzigowoU%Nbx*HIFj? z5D9IihHIRk)FfF`X2%fo4DdFGmaA`@rOw%e`!<{JtK~^R8^Cy;_*@x2ZfoOCD_$Z| zu|z8f@l>v%ZxQ*(^mE!?eiF=X-}CN*C|XBD@uY;_+pJP-S4Z)Q?2O((p)X$o$PH#s z7Z7L9s7o9-@Y08^-HeK2*tJvwx<`orBJZw`vrRi}8H&i&3RB@v-0S6}Q2h15Zsk|; z{i#mZerkdd;yC)RioVZVS|x{~z@-r)fuf5j?W{U0*eR{i((`o8LDrc!(1G8*PNDGU zdS^o<68RDjFbE(g^j_iglMkLNOPHCl>S3z31NvEKR8IoGR-v6bxbW@clWhE28BAwU z4U(s7F+q)8NIBL|*9%ZFo&w92AP|DsXCHoKp3W;wic@Xq%T84x4`>3k5nUI$kOy4p zTP`X}j86I7fEFKqg(+JC11f;ihwJd@r6p0~f8DmD@5|rC@S3i=(whqFE2FPnIj|p) z-i8eC=$7Q`2a___A~*;M`+^uL8IQtihePq5&##k^9P}exgd1dVmrl>{rK;IbNPn3* z7-@2P#mKW|RlZ`Z5!nWv&&MxFOf|Wz{|L&y`@B`~iNJg@&+r~mnXF})mE`nC61h(? zkf+g#>1IEGv1IttF%V$;o&ov$QAhse+N-H$JgoTolEAEUWsm*IL?Q znu2MXQhUCbM_x`;-I_;?!bC7mMGufK-o%V9F8`WF?Nr}mdkx|INjp@_U%wy^A^UrdrL4+W! z|1~f3bR)9`O-TIPZGg@m=6J|xnz;jc&yx1Zd=e%l^m_go6M6WJklObh9Oh-Mz~}4@ z3RWkGZ;;Wmo8Lr$<9EPjUI67Yl`4pF>Z=QcC-6$a`{TDY4P4t3El(FgXf8kai5H6M zb>NjcE{gm1UFRjdHR1?ik`mU;^2p$t8w6uXd@Rdjuk*ek=Be3CK01B;T~M2@@izTz zs+dLmC$ZGT19vm;D!t|TC-`msjMPVNo8X`uhqt53-@UZ<$uJ=3&C-i&|Y`saa$&G!>Ng71=8Xb=Oj6OS!8g>*jzZEQxSb zd3-=P1gu1OEJgN95YTQ6LaDE^qrJN0^k?G?VB17OWQ4@XNrPmcLHsXy8-cP}iJ(Qy zumBtJK)oR6lev0}1JD9o=l-qdb}Scmy|4{A*7gb2HcVarO&O#q_fI##eoRv};P-jP z;UP#c)h@v8Bb%hxB;9eddC3q2QtC#LmuT@v7C^0 zsn~GdnsfWHs|DpOAHTnOdEEiQZB{Tl3~IhtJbNlABz^j>> zDGzI21Ii>9;r1+a_%|n&kY&M_$P;NA* zTS)#;Liid;HjIWlb$tZk-60}Rsq1xSX4Ni%2~(Dd0Pqq?IdM6 z{YAA^pDO!^B{s6oUA$p$&;F{C?%KkL`Bw+JgU{~DMmB?=m#PLi>v)wEz^La!nhR+f z;V1+CH7^)5WKtf8jzdin5tSUD*G5nq5lIPa-WC(BX4d}AD9D3UdHFAmj{xjq$+jlr zw%sSI{vNcskZ%$H%<|?Pov9B1Ctya7;CC#-_n^D@{1>g`gN;UI#W!)mccSDPREqQG zP^iApy30_CO-vX)ZVxUb>h#x#mE^zn)=4T4K;8!LnZXB-j?9@augn64H}S+@s;p<8 z_SZq!6~c$VmVLiszbHh-i5hGSwT<)&UXh!X7T<~*#)illr*1O%E{^-#2<##gzPhx* zDiV9>@tRyB+FsJ^fsMg(7K|2sA5UYaK{e*ra9xipX&BusiES|*)!h-ii=y}7mza?s z_V1ER7?~CW4X^G?#M9gu#Hv+%JG4WcYs*rTCDPXgg59wGMU4CfUMMT2am?|T6`w+% z*;0Z_{N6$OpwzkDS5XDQLEBL7LMcfHHQgLpv++`|j(6g)8W7}ecP%{36?SFP!Bsbq z!Cw&nt{xb&t6=rY(IjyVVXNx}afImPeqG_t$K#pj%?PqCSM}?kSaazpM}YsinqT!q zQi)Tvh&xduxQy_1cV@J^@o_<<`X|PXaaVO?5LZ$F+wAL@s^THBUPw20v(^M?tff47 zzFx2;m!2>$A+J1d53;#-f$U*eFm>38W@n@q!-nF@CtyW-T5(YH_@T>nQoQI`MVbBg z$BG%n$1ri}o|c#&xfFSCd4;;Eaf~tDCF1goS$0E#rTqNQfU08}j)4I@*{(;PUqMNh zoXZY5t7_Y7vczwGU5`JvCo~N~`cK8H>Z|aL4}72jC7n8d>upOuymw}TM|tbz>YGUo z;zJ@2h+}fU;!{J8v+GuQ-5qH0@9kx7MaGqb(ZtKckz>DqFTR-Dd)hQoXE%=j(`q0m zwHTNL`WD+(Iwax+cC^S8gPX8Ql8RgHP^%eRH7z*%48PVN%GHg`^b4N)qNn1xQt#)D z@rJk6NGtRM1EeT=kcjg6@zV>FZbbo3ZaEblG$Sf~VGi)%`RX&!xdFk4 z1ujM7)JncCX3i_cx4^O~!+p@U4J)VXVN#S@HyeQWsw#9g0z(ydelGvXd{IsMU@0qN zi1jCcCCsE5oT%h@=^O?pLT**Odafu5jSdy%mGXZ@T&gSUg0BkD3Why7STb%Bi7lml z^wju_d9Vzw7n#b-!g+v|baAzjAr(0gVuJ2Xa0Q*ua69=PZs=2zM?7Abp$G)y0bw*S z1`Yh<=3EBf%!DugBD_>z#25wGF2z~Ou4VZEZ}ixUnCaNAjY+EsTXIjU_Wn6hAMt-M zT|jkj3?c>PxWiFbt&P_T4jU=o?N_+phI_~T-P;cC_M94QRYjGoUNSJh;N8aeY+5?7 z5fiKrGqh*2D|&;?Sa#hBwpV94T#CypU_7j<)MiVs@{o-^U{j2ufs;dd3zF66a{=y* zrgqz%$Rn*7wOdl2tT}MY6Me;kXNRWKph` z(dDZb?3JQcxKQ&ujQvMDmvi^A)UkDCn{!m{4eP7Lz}3hHcbCL)rmpRqDtDl({BQZE z4*^a#KBc%Kp2J2r!*1jhNLfjB@%HJ}3?jJvxV+VUlaam=#P3Hh~-#2jX4#JZNrFqEE`Kxw$<)!Of^MHnbAO6A+qb!2z zs!DZ`m;cB0knyQjz$5$`k%&iiI#J=Cz9&%dM$>cx?Wyc*%V+}+i}3JYIHml!xHfRx z#VH0>r$-~3&1Z1us~7W40b85wbFanJAO-IaPnbsQh)IZs!le8aRdSF>NSP^4Zl73h zR|T+B6}!ry&K#(TDEEgw{;j38|!aVejg0l z|EMa$fEKs!Wo+sZ|<#+!Rm8uA%laQQ-Sb3kM+% z9^qk}#dv8C7Vg?8itI|!C-(a)tIdGIZ1v|^x#C7bB8DR!e^#vQRCU(h%22#wY}eXd@cxTn~%`6&G{|h!lKS zu)5S#*}shOvbVw{%xDi=cu1VE#>ZmO6D%?pwT$yVzd{bBf;DegFbNY2V}XivJ6a-% zmUAOGl{R-)`P*>0w-ds`{^StR3Qz2>}qvHULS;|qj zWxVKdog0U~7L^@_NuipiY#30EUigIIJ_|9Z>6-qrI9@Nbd%Mdc4?1WJ@-+eOl<&IA zB7`?uUYKzJO>gHRUJp)u7jyeAKPY$6uaksyDMO3*-SHB6?qv(n91Ffg9EBbeu)P$#{WvKwUPV<+q#du7(sgLo1;X zhnv5mR?&MM`%2mBynxeN7R|pj;;|c=-fg>mXoZuvwc}kAg-Eem%gMZ!!-nhxsy(zC zo>P#W%G+rXRy3St^RS<1BP7u|r>jiMYy&h zm2<=1nS4mhs2oWGrw5dH?_OUisXWN;pPY!-MszNDfLM5)+|6|*BPM0XH&#*zk58{U zF+k!fZ1-2RQ4%Nh+Jl7pQDeW}qxgWQ+Rf(-YE5EN!c&E}Z&&IFG@891#9v42WBW|} zS?=_Og-oUq zkKNf_Q~a+l5+N%aAMX!}`9{}wJ+IGi8plo~!U=VEo)hfCc_|?X)l-hbBJ4RN^;GsF z!&}aWmwRn}7FRNDpT1<(zQ^e0A#l{M>q6pWaaAG*eXa+jB_)Qv&L>;0CtLWE#vIv@ zU+=#bKQ-VFZB4g9f|i?$>X}ygepA5qVame)JL1yhvv;J>48KT~7e3S8-mU5groF=6ouvmsB};>HZEX$LCh$ z<;{+#W|aLmXv${C2MVC2-W{=g%NPiJHA#J)8^Iwj(Iw|_$3o@m0*`Jv-PBl&Qw%T3 zzCqUB2DDs^SzTT_N%oo;=g~LC1t!6xms$Y2$q@0w3P3~a58piXU*+uw4R_>f0D5m+ zfG9ne%odHr+F5W8$ht;2ox(XS`zLNf0FvnT3`gU?YP(NoJIgHJi<6x&T|i%T=fb6` zEc>eRuk1)1Uk$!_pU^Ggbo+wd4HZS@%OJ>nQ$){>X%F14oJ;9Ezzwl9bw>CFr#p8X zD=j-`3nidT;oP!E#c|)A^YQ0b{-oT~h(7THDYtej0kZgNI_Cw}9DR*w4h1>9GWNf> zw7By0xzbypk*c@M1v?_d0bAL_$DCAuTgI5?+!KzjsUJ!;IF>3S?ZX546Kf`esWRn3 z8#ZnCqERZba##Xc?wlkEZZ<Iw>Q_N6Qp9hi7^5s(>#YhC!IlT=`m@CbRh|?e zf#A997wY2hT{PuSoCIkIrc}50uOxSbHO%_04MtHot(tF3;g(56$0@9e5-byof523kqUn#Wyu2rWWcdsjlmR<4MdLH3QHA za{Sj}9bjWbrMU?(<;VU~UMI_9k>3*2c?E+2j*HX~dNb{vqBJoc-;pwebW4U#K%86f zSPZg>590$~Ic#b_68WW(C+YZP!Pae7{#nIH7oTAdQv!JFRSw3h^;vz!@%8{dYW`-Z zA-HSDVnIj$At27%wudb^`Gb(-sBuA+lefY$qDvB z%!tZ)tRnxZy)CBr<9mMMQ`(Vx!1xWUr!qq~oST_!$@0ZN4gzvr9yUq0;fsTIYdTS7 zj!ot1*3!J66bk(uSXnv)aLrB)5s+HCZgxS}*gpSS=t6 zZ)=z_cL}wA59|5ZGFNvbufd&?#dkq)6z@Ej_N>7Nu6tk#gJaaPf1!o?^t|dX>O}=v z%y)r2)|E)G;k2I9G_6qTg^molY&O&2Muv&O@bHzAB~a){q~G@S${ZRFR^gzLjb{$8 zMMVIyg^_3YRbwuNQh+&TS9xAl7JcncwNi^E64?@hZ${s}fQ=7Tb5XUTGv*gJbth;|7dUL;3HlMXg*!coA=R(vyvg;sd%QJ* zih{jwRX$js`@G5e@=q!-BG}t5zKWBAl7T^W2sR!Is$zKU@p$s%=`z(6C%>mLTwVm$ zT1I@!>-PERqV{<1kh-1i+jpd#KKDPNtN&#<{2zEE|DiYjUmgiJI~(u+wgeD{uhtrKg`GfM;^(4zw!S+kA&xcJL~`Ck^F~a`M=3Cg z+lr{YYkpz96bW~NoQAR8K|?`zjdL}`OM=w8LVwaxRyS>;ZyKGCj%6^CJ-274#|M8J z_pb6u13sRPrS8}ay5a+T*JDp5i}mZvyszy)%7YIgoz#*MB^1 ze=PdHz0}7)O1;kdznv}PO1}^LyqqoAPDiJoL4VFX+}+=RNGC@g{{xatq$Ok+6>4B6q;N^K1Ej{vc;%wVNSg$<3@M?rq`19swBw*R&{ds-l z^X;i#9uOxFVElZ9tYr4jd(ty_+rX}0-{ZX6cM*P^Zb23P)PCzJn7#I<5JmyDp?EL& ze$Ll>SeqPHGBK>sVv9$oZ$3Q2S#D^QJ7{&E?IM2;3}`KWzC1k(3w^v!s~51teLki1 zZwmZNKLw4_s+V6fki%1BK&K8tXJvN5AT%^#Q?_kJht}5$Qu;;AHU)*Z%w5;k+=Yph~fcY<_iDR*{P?D zy{qW`^wDR7?y$e*UHQq$nqo%UxbsE*DVFQK0Q2PLAzv)-!wn1b1MD+?HnU#Wbf%3@ zW_GJ07z5NnF6@%8+E(gf`7-Xd%qvx^WZ7JwTT^(!JSlL*H&VXkr0S}AxY5aHaq=?W z;40f$yYNGka6e&@@6)FqiERmU#ygT-KgiieMT_TFb+LNoUCx5$ z3j5)=%dC6blbX1%oWDNaj*lcY)%S~c{7;yAhl+dg_$v}^?wPeGk&FMf`ifS8d zfNh$rPmf02qIr_`2LAdPRl1*!`*2+sgbIbpRGq8xGc-hyj|if zd9St1{k#U>4drk_+uVEV40P5I0PcI@vrgZ3nYvbjSqWJe$D~VE?I@EW;_lTxbmJdp znY)8`m+|?1OGGO-Z#f^2IXJ1akL!IwpPvjk7ZbwZ9X<+R=|Y^x`iV&1-{8ahbitu2-q) zPTzIUunQ_QCGXo`Ee@0|b?}(kQoRAGjb8oyp9oiPBdFIHKW~4nEAsqIH_vn%VC9bA zdUm-w$h;CR^1)ec1nZ7HkESbF(s%j(E&Zqv2Ce5Q8I&P6gfXuJ-0WtO?`}e0utTeI zU4SgQhtn1NE(+0gw|8p>?e#+CTipL*dI&=J4 zdYO-NnTDQ57vd|TZ24ql9~s|t#B_SyfY-YB#WCEpMcsMz2>| zB6VdQ-+0xLND=q?|&gN&y;@7t7C{?%4J-~yZm&r|dDg6%1e{#oQL=)x1>0TMH4fV(rNcYF1Fz&LW8<|QNo9sY~XCA7Tnrr;Wvd*yRp}P+_GLaDBj%E zq3~R{=50%^9Z4|GYeHIqNW5VpSHceH<@l z&vQId3fMjkDQ{s1JTAwR!@W*=Ji-#~+!0!fegRFoJxD5^d7zeAS+R)A-^vaS`vspiPuJFPCk>+T{r zge2?8l}AdbzR|?{3-~JrXM>ReuhZ=eZQ|5Sj=$WZ+trm$H3WBR=tRJ=rvm`^b?A zg8er(SSz|W;QSLO*Us+&8En4zUZ@9gdA1!tWA~n8x`Z+HIUbnW`%!jZvXYX!Ki3lZZK!a&YYF6ga$D?Jur^Z@J(tm~G?yAOUXqAABR z{c=P4_tEW|eQF}xX-~Kd4DB4hZ`|jR-@VMO{ABO3MqZpbL;LF&#y7oSCqa?%=p9=! z1pwQ~CCP%#k+>h^HZ?dXFd&2Yzg1cQ-8;{C&~Tw_orC*AUMOMnNy~8AiG=!EI?@8I z(sj{k)0fb_m2$rmi1zv$*oq)@at6FjybQ+?Clr2nPQLyHa1*`^g0pwrR|U4p0}_R| z9?;R0jnKQew-*9C^lZpKaW;@R+&VNoulDWrWSeV>(6^d=QI?o?{BekNa1{kX{|Fp~ zRY4LKe;BhF>LO5C75QKd>m$5)Hmwa#g2Oo;*ZWqxf^ZClCF!Lyp@$4-`ffW zNW?VT)4{mruF}&#?f@Y3^^)>eS7IOApwJip=I#g8gO&ZA14Ty)d1BW789G=hoxbdW zC8H9R*-*qBr8Y%3cqLZUU>>lFFjZV03AUGA1&oGIU1)>ZH8%?ZE9EQCe;gM9VMiDX z?eB=O0@Yya=0e-2-4k{+I2{q4){#yceP1=uY(xcJ%k`4vWHg0o6A}daTmN{gbV`od zvF`~TBL>C(25KaizKTL?u%gPa$yK}(%2M|;nt*9ez<(qefqZc}7ZM8AOh6ECL=lI9 zGZ{h+rHwG;Lz@%l zDRe0-cKmg_3y+Q`ShmC3M{LkIT-KQti+R;O!WhY}`j3s|W{X%wY>#2U@!ToRfQmgw zbJah^CHwJSrB5T}9nL~~gH~Giuw&={Mk#WwtTm{xr+QxeSwDH*5=@Zh>U|!@0ZS^X^fOmwIUJ-bKwPfUKN|`qzK>;2VP{6xF?=OFl$pT6 zuOh<86e_Uh~Z#-6zbB(rWlyi?hScuuE$c!*pqcPJ}sDoL=I)LcG4owjCJp{2oW- z;&b6JE9&0eak5A&Z2RhV69@0jJK-Bchwx5vg*c7=^;*3p>{VqfRgL)BRAi$`j5UH z|LZmW^ukCjVoaOA^K1l@1`kZgc?|=rw(lcr)YNvrLJV+Jdbk(XMhgEUCx5}jOPWeS3dnsX z1PGm{q?}q82`HG5B!DOb(^QMao3XKZuBvJ$PS~n$S8}de*$I`*DVL6N8aW3d*o%d@ z`ig9Ooy{iWFejg4ZpAn)_APoFLL+ zYJAJ=L&||I&U*AYHxh6hefZE@0`+=Rzx@iJT;jQ+N2k^b12}aG@%o%~^(tf%J~-DH zscqVrWWK+IS~+)(ZmlA+G{ka6udZ!3{>Ji>G&NM8AOu0>NW&IUb1x&f>$(ANAc_OY z_u~lt@+<}9?g5&EA5(E0r&en6sWqEI$`dvP4Jx(6>_B^Dc=L^fW4-=nTU)aM%PKrh z2dfLp6Yuj(?Ub7`D$TV4!Lld`JxyaZ#X*?Tw|+MQYG)h$0<~#c41vFjl&Nx_Cp0HcFim;%-*)oFqlFW2 zt^!h}4!T2?ft-RJ;ZadGbyI&H(LCUl2A!qih%GTf z86R8I`=n;?r4v>J`_CFo6$xNsDh2vme&f4}467(?a3Q_u7ywO8>?rayv~?^}LOWTw zfIoUFg82*W3Hy7RnrI|`gXe?&<>b_!=9YcyXq1*+6v0umBc?b8cak689YS~9T&#CV zcYW2X^JORbYcw8~AFY2qC=PAlByctBwbud}wtI`Lv49|;n|x_QjEsDZ zmgH_oTg!IkdU{0xrG4ZZW>cbS+GJ*>u9E{V;67}BqC!z~n0Of?umMv?buTgMxV585 z3>P04X@zpUZTd}Gkmyi~*Db)M^4D3yyX!?OI}P~8lw^S+x{X8r#tm?Xs~vSMykc$8 zL;Ehk$2$6s)F9FAA$&Eeno zBp0|cci(BS(^^;9V?Xv)M>iBT?ibWEHVfSsguqBbpi;L6INy7%1z<&lUSl%ZLeoU0 z!$K$*5e)GUR`ORkow;_2vArtY?qL}jrbKVD2KgC{>G81uA*Jac()Km!NlHrT8s~## z7E%JkZ~O1C)b<|3f&YjMV^UBu|HdIjIMq`23q)g1W9{uFnSH3ROErd}O?w@>hh~0} zOgW}KNLFeSn~)10Y**#{F8cnZnJaSvR3)vv_2ZUu+h$qKF`+f3GhZA&uhH1{7`1iY z&v;OS)N!~?DIW4q$J0vEwh3y2PbOHa>UgF*lu)aIUm5vtg}!hZkFiXoWWjIB5>2B% zG{^LUzvj|O3RUVE>KRK3MEy{$vO&L~=O&k|dCN^NBfrsjp{Bl#6_&i4m_zULZferz zaxu}_UH%PMtEDO)JiW>u6+kL*oPg!!tt8(KZO+DERyHnq9|iMDI6mKJb$i+pCPH zfubc-@#>2kjxCmk2|l|wC3|=`*rdiJhyLZ3f&ndFuV!olg$Ne)S#HT*s+kiiq3A<* z%TBQJahh1wZocI;rx0CyUE@B61%Q%khig_y<=f^Uj3j#MgXt7?H+dmT8C#0~l*kNL zY+h7^mrmoG{C(TU=B6}PG_$1<956?VMZ+MZsstNG7fZ_ScPrGH9Y9dCDZP!V&mK+g zJ{B|+p10jD;6GL&rVYnA3ci2_WLV|`(qM)I}Qsg2WeD22^ZR*$%sY~fD*^M zCqbO6Kt>>!D!H6f1!W|w#1~~H6DvVWbkeVEK~2SfKlonI89Xvf+DDMSUc^TPe1}^; zdORjqQWA*Fe%B&5zp=M7l4Q+$PcIUa=wPN|`%T?e5Ay*KJS?d}?^YX>e4eW#UEURo zuSWOt4`$MLRTT03`%6d_H-NDl4gO0vo9_uY!SOEU3@PeWDYpP}xzB!C?@mHUQf>1{ zT`^ydQz<`gxjG)&^Hc2MSS3*LKBid_l88r-U6DP_t?Vl`%n~w6fq_rT5eWKw2uf1| z{gS>H6#fI}@m0jAyQ=0hw9}^ienEErkHXSj<_n>=tmT+NU?ZZNCY|^lJOLiA&8LjQ z?p=%wXQrobT(&Zuo8@2?e0P<*Mn6th>u^=y?Igo$3i<+R6{jn9qO4)H3#XEqib|cM zof{gt$Ek+r38Pyp9}Qad;~TbH9HbH5dg4^LNKps=jtkt+xW~8WwRb((v|=8Pa{G}# zCbT;Bk1CO6P0FEoW35GG7Mb{ZO#IfgI`XEv_rl>#de9_%ESv6}QYtU?VEgsDU!wAX z8LY#U4TxJEdQ}=vZuydwI`DTLI?Y?RyTN3^-sx^KDfK#VPK2vUo56Z`(l$fsj~H&^ zFu=lAB9IA&LrpocHJwr#jk3*N@wK}gAR%FWemD3B7Rix(@_fRJ--OD%Q9jWjPst;d zlF0`4Anj;FPQ&X2rG`g5YHUzXW_~d zac3<+A}%r7Q|H&VgvO1Ilsr6I zE!cU(Ti98r7W^0!=3LmP%q(&$U%O=Nu-^;8^HU_SvKCkb_}S#ndDI}-l!pg{z0qVm zwbA&{0MUO&peXpEe#WBvmz|4L=~X2?rv4n zclC$aUS4JRk746Sw(Q0M?+%~3)4^`}Iq&i@?2kAoWGXa}yelUUa=G1(xV3`>*SmlW zMvec_b*|Z5RjT zewP{>u2o5P6hKrU&EziIS7$|*_zw3Sz?J#MD~5iatmGR|3%LyhP%TcTpX}6hm8aUj)eJhWh|*bVCXs8WzrYweQ%I7eb`KmTeZ7 zwKDM-UO)%ShUHcEQFW<3tTBZo-qG0d?xYE`1zNWvSCPM>x%;C;mgY#e+g}!_*_VxWyT=D1yB(L+`+7%2wxycv6?@rAD%ZsqetupG9T>inykk7J@^?{#i z)UTZ-Uy2chPvka_P+~VuLov(*_#f&mTgrjHJ_?l-NPhNincV!D)tVbKQ_ciLXlnP~ zqVIKH7n|7;ztCmxOE;GN%P)NzgYkYzVwi|-4s~a$pg^pQQT?dss^EY$Goz$eB`drf zCdlY3%{#*O6ZH-)MW$)SPNp6I?YzA>tlwp*j53n~a7M0anZ_Pytr*|!SM*_xB_EMY z7_@(rUER_zUg91R<9hwDVLG^sKj-B_|B%+&cB4`8Ria@iZYx^yh!2yxaPaXI+2xZ+ z`t$w`T|bp5ukgAostwzq!nLii!?7|>p*=i4g;wdZS&p*BYi;rBY!R#>SfZFe{fZH8 zdI3cxI+v((#y=<$B3-VKhZzx++brq_#iXOuJBnq?{KdI2PZw88bhEc1lTl(XlsPW+ zMTe*{@0*fcJxRzY*4smfiZh(bp3s>xf5}Eo)Wt4AqH#MzOTCx$KT1|(vx`=A5iCB5 zD2-Gv?N@Kb40vSH@ShG6cAXoM8}SaRg3z-#S%R8qi~Q|ax%cFINs&EyJ5|JdbV@db zhHj5A%SVJt{2c9Lha<6EGoG~Hp z9I4? z{seJSy-V#IPDoTx;K|e&miMb#Vr-PDMsqgP9h*tpxLcgwxa;(cwCPrB#U(xgzFYd$ ztUZbjxOT|At-g*2eVSCdUKkbG{PHb}1RVOQ1K4IzX?cW|T0dD6H57vk-!X5N(SL3% zE%KRyoRO8{`F%&g7&ALFF~onEzpEXwajuAYvW;kwRyk5l}x!5 zBy&fJ<9`eCz4_8z&rfFqf$v;|(oI zLMMNN3L2$cGfKOH7BdHxY~?zz4!Qvj0ld;r{97@6hN{jxw+G;1OF=$EwdPi`V0Ro% zq`z_2PCaeYMjV*;P2)-bd1}q~>Xbv2H@fcWZtcQU1Y0W+Nca0uZc_oSP-U-;irLJaGb$9nt#s9TD&&+ehtYxKeN4ircAj#3(%M3^0wl3IaCyXc`7KmIZv<;s>1Y2yI}omYhGU)*%k71Ie=Z5s$0@;>RRSXq7;tfL zonQ9M=0Nh@6dd=1`IpJ@b03&{t?YPoXE6Sw>fNYaSj_DSM=HuU*$PH;S8qN9j;DUuYNbDwJcbpfg1ic-wXc--SBAs-EAqQ(gQ z8kJQcehRf902o%_%$eb6wi=y8)3IHMix~`dC}tkv6t%aQs_;v5bC@3@9ckH{ThHcW zz!l_`@@j<3GPU<55=_v&|HPnUnRc1Uud7jF}mbm=F>;w2C`rE zQbnar56*5Pjt#9;e$D^-8`O3lnPpvAX7l*uqdtv&MxRyj;2?cQsUWi>q0O50J>czT z`-*qSN47)$q&H)!aum{f;-`?I&7?U)KOT`ID$NcV8LQp4?%6~Ir0_nY8-ISjq12*x z);8;u%F;<@r=O!YW&xgsmKMJ8lfgEH%2(&&$XTFA2GiycH-)+@YHA+7$vRV3r`)1~ zf5Drr0zHsgGP2~qQe)>&cPGJo-hBu9p7zt(%;>J#h~hr{3q6&o6@{)M;@KNvENSNN zit)3zA>oS8T20)kWFuzw6ri2%N*|at?Ens*XyqM5kMr1AI14r;fkONBnAx3}=hn)V zl{Op7X?8WTQhU-0OUETmdz#lv9l{)m&<93tE)M>{o!Mkl+jmOezr$rlDve6nqt)7F$f6|K{=mD*Ywj71Li4zm6n z^EbdiHsy5s3CD_OgsL6pIQao2GNkV(?FjM#C5+1Ed8!~@=<}|7&gJPNl!hy}NXKWb zX@uIwhZ1tmWoq(ja9TzaB`O59hF#gLt{)8k#qCtb@r9d z4-gfv4OvT}F%V1~d4`gs*}al~{Wh5m36d%FkC00F^N9n92pS^P?}R5!S<+8PA-fEq z_tCP&Ujqqmk`qci_Vzw}#PR3il2d<4q}6B)=_G9Ybv0C#cQh+(6+>~<|~y4cAt`?zstSDo_)Fiqw*7`=xt~VKXjpmiWR&KNR1}J%WdZ5{&N+Jj!loa zWb-sOG}WQ58k#68VCs21s{J|LdU=n? zZPzY>x2q$o>3M7+9IirD0MEcyVLT@@%-MV0k8NaQf`w4t*T;$twU%K>w05b5*)`h_ zY$wVkY5uoFSiqRVMlm_j`_X#c=?fnUok@l)E%%{F`u4YS^A-d7O+~!{EM1e^~<*@^|+ocETme4efr4r zK*!ZNIy|2|Ya+~WbC-yT&bXv7T z$l}+xH|NCiP`ff1Tb~n9_dqKl4B@=2jHO1A8dUASIv?TG8Lek3$*Jy3d^ zV=Cd%KRBAd>%8Ez--z@ayFr3qk=nAU_pf^iu^HA8rkWeWqHT=W=R<#M~ z&#>L!3(Sa5rsd&*+Kz5)r;tjN%X>&5M%l-3T69YGPp}H8X=q4u*pEO z6!@i0j`QJkU|eh*KTZR4^j7Z(0!B$gSo3RW^?Hi@L?Fzn5IE;n5(|v~2}$QhXdR)^ zO-X&Yuo;3~>q$7kfp2jxCJ_#u`%0lsw%g^CFIBwFR?r{XNr*_Esje>a?DSv;#~)RB z)zR5jUk&My^=R7BV(24EaM?_q1>R*$TxM$)*!Wwwc;(>@Mp#2+pZ7@mxTZ}aFMDrJ z$?{$hUdB(W0)I5D$z##<-YgSJUg&Pq-GL&r9W{co@KQTNhML+v!{vwxXF&REglmMa zg^LPbjSQ1F0??(kUt7p8x=rLF( z6HCWx2*r#}@a|s%i5}{YQCl9OgYjLsZmz#^6|@I^+;Bdwe8>Mo3ym!yOmyQK&_#Lm z*hyB*(jY~XbUjKEw6b-3J;OAAB&lwRHzrWnTKk?hr7zU{PntBctQ!ybq?|dpHVa?l z;5PJk!DQ_jIs3tjz`ndO@}RM7!Jr)loJqsBElZ@;yoWh%U;%*!)ErFTE&-AbAawyn<+(WKGh^>2StH0O zFTU?7!ulCcS*r2-yIE7#fg#1c_Sa7DdkJ z9%~Bb@nlcBd1xR8hb&L%iGvX|OaoloadL8$Fx=#`KKIqkP|zT!*k7D$J1m`L5L zm8_r+WSIo8LK$N>kQbKdQY zjaNG8XTeIwl~5_DEgdR4I@}=;k)_eO=^R&7`uz5ZkgB{t3=d@wtbUtVxF+(fW83lykjuIF)82GA6@fXkguF!Lm&fR&7J#wisAC+;LuJc z00M=DI=&pD8=+fvh6u;}G<~`K6+OaZ%X8g42jbs6oAS{ub=1T`9$DV~eCn}qohDZm zVDAJ*=LIFVLz>_v${!_aMF7{&gX78S= z?&>%?fc}*BCi&)xw8#< z#NbCXLlm|2Sdxecj{)c@jG&@f9axi`v4aukEx)u~PqWtgIDk+#&#{B{c*k_}gRE9D z7hlpQa+|3z1|&rFW{lo9eIT*$xCC?CDYo33!!h>3@=YS7a&-00GJ3__Wo3AD{sZOx zq%CZ-s5F!@|4viHooK%jo2eh_=HQl+OeC}6ZwFUt!)kyUL$sox$iDf@eT(0I40w>%Ru#!to5Wz|RBUHRvB6*#kLsRK zbL=8|ufG1*{1hE}T>K0-X{iwnnOpU7rCR9PY9gmh*6ICzp5LvUU)X$ZQ&0Y!azi7; z@rG!9!xR}>eyTrAzEqZ=#g0|g(PEF3f(636Cu`C7fCck~5E;&Y0s|$Esb#;;1b5qS-No5y7 zqW30njA}b2K-)6H5!8-+dzDlBR#{j~o$j{1qpbU)cy?PV--DN-BYq{3#-kC=#m>Tf z45h?SQ{cu48?=d~WQ!UI?J-&9_C5LZRn2BM*(r&|D^gbms~O(iW;`QQAWqn|N2YY` za9FCGQ#l^ta)VI5I5m!`U~Jpu;vql<%I`(>z-m*2%UDtwEIWeTN%I{V(1P697x~gP zc|kQMQQ6S3>Nd+mtGMZr$Mqi#H8f2l)Sc`p;0v@7g6vbETMQafD`Z$|lWac!M*p4? z9SemQ9C(!0OGyVxJ6=XrY8(^Z%+!cEPMT(T} z=82MAlnMoNPL+`$Tm=xc(@qNCp`k*$Fixt(C>_|De|;ym(ermsE~9Jl)|!KjbzR zEobqqmM4|^NN}|7N+_x%y(x1?ZUa_;#-zB{DX4xLY@ecH7M_%Wdcii= z_meP$IsEPRyDyG>DwuTU3(*lu+dOlm)JKut>G`Vurm9c_t|>LM?eYf@_I0_izXO+3 zA!(-Kjb-1#t6G%UrErP!`RdRYSpzOhga^r8&J@ems5!$WL!}l6PrdunZ;8$*!!**X;n6ie zs@$D^X)@LmY_H*BFzJqddSR&FSWm|AAe|J+bhJCMbOLGr#l`RK?Y=;TbhDf>khh7W zzv^?lvwL*%Lx`Q$F<&jwvm7jd}aZr+3XG+NH!(#k#&dGQX>m9t5tU$8qCZH#lHv4eX^XBTzOEdO!eA3ora z-S8KOF*n0c2!K&ahWfk2|mth42BZ`hsbfH=Ai2L8E zptB@ZH}6T1oizh7#XmRy;eNp1ZB^VoZFCk(@v&MhDSMuM)NZ40esW^U&3FLYJ+py6_pOPyK_+D^nws@yu_R}fd!1m^=#)*#~b=m}l} z8NJDFCI}1R7t8IUZ2(mt7IX>&Jf@Ko)c)@jhd-j6aJ!9-|4DfEih$5hIR&strE8GK z;a#_=MK&5|jcD^g1xTkfU0b!1t?=Y?ol=m)p_Q*D@7*(-V{OGj#_VwzIZBVdmM?yQ zzj{MKZB=$s^`r~7BW15NP$!%GondoLYu{|ZjjTwdlNZKQHD2aFbVYWOlSu=iWYwjf zg!umE!Nx9qM(C||OpYAAEu4YU;ABzK1dU)xvAxYLDZbIbU6aWL=T_LDVQ9Lh$tFj( z#I7BSHo11&Hy%0^2Vym$I3<9%AG91S!z7-uAsP7w$LcY3Ql)-MXm=e=gJUTTwC-fg z9WA+zuCkfO(jrz72>-ScGCYV+!2DRX87bX1U1{kDqy0tUnew5MvPrdNt_weci*wrL z`aU#APIgLo%?uZnIgt3pOFi9W$epW}E6)m!<0!MvG~_vOB(i=xp=qro>_mOv>nO6W z3ZJ9Yf~rY)Dj8(uF+r))Nxy4%)KF^!qZ-CeZ4F3bPRc8Xlns0JmQjb7X5hJYr}5xj zXJe};yK4R{r!3%8hZhO2YLiT__6OG6;olN6!l=!7Xd+q?wYj*Kk^O0?C9pcE&!A!YP#FcKoo8?QcJO zM>wqO)k&`R;h9`O9uh=2ml99z!9D`igg15n9#?fc?qFKI13<(ttH;%O6v8&9EfRrh z>=~X?zZuBH!)LHqzuVSHE79t87{{DqUe4@n!8Bp624>scuIa{dbqY`o65m>k$DHY6 zQIOFLUM~+k4Ce@bJY)G}*WSaZELXBlYt(fH8|{s>CP`<7K&yU3SM-=c7n{6?VaUkv zae6_b*@(I)DO)oWk^DO2*1I4bdg*<@V5m=5Yj{iD!YH~m0c{AZ<?cTGrYG@PQwH(fr&6xlCwUg1Aw{_K6= zD&UgBO^0{Qc|85bTAJh{vH|;!J2(C$9knZ4y5>k*>;$$Wo!}+pW?&rhxuhD|6c+8B z|E(kk{<~2vimZ>jW6qET)_jRVsFCXW3tlG{3BS2YCklLZt-y*rLlO0Zv)Jb~&%Ica zMmf6igr!*+2uY3-erXwf`9BO^f;6Y9GfYIrsQ*Mr3{#yw7R8TAE#?r^cButwsZAv@ zaFBZpRwllJQ=`ezQL$c0fhNEUZXv`Lt-24NuH4D|4r<-jHPsM>i7yaz;!>q+q-X`0 zjLusJRzsXZi`DmI@#Bk(C_oM-$-bvMOS%{<_hD!QH;?RMOX_J_mTzV3&+~8HH%<{9 z=gDh7oErUCKB~v%pWDXb3?_W^dFP<5W1^cGW+Cd&pW7&LRf;o`nTJFXXY!9Vp85G$ z^VBbJS7Ei_4Cd8aq3{NEO>zX37?`62#9H6U4~CaaZq`(9G)m)7-~08%_+C^5+D6KJ zpW;X6Kcp$A&uh50C5|IXJ3`+U=pcFfs^kmu_?G&SL$#~*shE$n1ArsRI{hBAw9 zyd5>Y0+U?$2CMvw?bZs3u=%D!)WGxP^sBBvVFIHVh2rW28;tSPQcgb&BMkyB(20jV z-vwMD+Zv}PTW@0(-m#WzsV{>+@&Y5lPK_tIXs@)zRAi&sCE(>G zqy+r0@VmGLT6|pnx?qx@y~nk|_M+O;Kj!u>B^!#ugeK zeX0e(ec>@W0B25{7hPmB`qmSg%((u@=D784Dk3XbW~)+PW)B~TWHJCgpHDE}qKK$D zHRjtA?%hLeo~QlrH=!-*t!6WRPAZzIYs$JRy7J@jx>AE73VV={+RBN^wz9BqnNlyAbw-aRvEms74yoMt?e(FRvo z$DBjE*_iu+1}w%NFTCPD&^9BxD|R1BjhS$*IEOhWlw8eDLwA$Ik6P!GDjY15cWtk$ z|KuP@>qjj(ifvN|-vW|qoqR0m;&ovHn%V*o$V5}D*^Lwz?Y*t{_l)5*3+L>LJ44XB zd*!~7zAN>UXa^IR5k41rB8Ke}@w)OYBT?JyQ&PP~D4G77hKD$HI= z#D(w95AqTV*%NF1BxwVfCZ&2_C-Y;Y=K5d%$#*?^P?37+&&N{Z@d?9Gez5Yh-QF%| zEQ;MvHGB<3e*c-)Sa4o?mgt?O*W5~IE0l31I1SwDCq(f4;zBpEQ|~EE>tBrtD+4fh)t|uK z*U9el#<3E1KCLdn^02S*g9P7URU=+KEeX^uD1jHO8m_0AYVh&O09{IP>`g0<92iw4 z8*Tjkyj}cmpqS6o8-*eF$%T{!cekp|Bwiaws+2Rj6{=~Do0Ym~XU`?H){uX+A5 z%suQRWVe_lnrl&plq>=& zpYALiCvyKE>Xq8(>X*#Cxv;kiuvHTwhtx;@3069+p-i%@KFc$dh4J&{*)C1Y1vPMS)*Zj{;e#?>R)xg#28QRTmko9b7vVgpUv7@6=N0QlGvyr1|p8o6*j^#^Zq+UM$?|3RKKX%Q>B zA34M8;5b~G^F6dY)<6vn|GfDY*FruQOd~aGFZ-it*Yfipzp~FINylvL*Y=1go!c%l z1i_EH21W#+R)HN{PnOXM&cF_QW5uc`C8;^k@Obhyh_~Q3e&usyOSg-qv`(ejfZ@nr zuX-mP*eRkb8JYLGm7yil%j_5Oq2=fU47*ssR+{EsBQLbXnZIDEEZLF=B_Bn>2dogj zmTB+ZNa?FmC#+Rjj;IV#l}Rr;ouH;_Ut)_56yF?k`5tx?=?aDcw`z{{b+$}`+ZV;@ z(lr6KnEI1HR4S*<3qV!Nz*l`VnGmBVMIl=HfDa~!C;GiA1>JBO#`HU8(X+J`L=y)okig~#1zK+E>e5x%<~ zW>9N34%MR?2%YbvukuXdITCN{LX|@yJx6Iajgyg!Rk~gLYQAX=d$km3=@6UQ79l|E zn(mYwF1G9GRU(b+1$A@B-!3DR!+C>cYqU3Wm!Hf3yUT6Ot*D#OoP(Me?+g@>4%do8 z{{1oX-YxH13Qoj9&u>I^LRPpnJ^-MnY2?#P9d85YlT7fOp3(~6Z?>5SN zT^(~xTIo8t;rh24tOy}@7;r`LOhf$!RE&aQ)?WR?Jq_%C>o&AD?1x|QclkAC-TFbG zK!d#^vgF7BAo?aWkVmdzks~%2Uq(T&^q)y5F9L-Ipg6MXcGY(3j$3j)o#&pbGE3<9 z{GksZD#aGK_7ekt|6czu9$QGsqD?u3-?jpObXG}B;VDpdg%VpIfzL-L5bD(eYo=21Z zKt_C1JL<2-H!Yf|=|x6{OQ_N@SA)EFlXtt$3!!>*Irgzd`x{{XYlR;S z#xx>@4jj7O7cfW`1eGV@#lt`98^6g5kN!sCCSTFUallpLVyR>~i0pK`n{H2|O8l#3;qwg_Y;gG}j(_>8sdOe9{WHs^9+M^~oO zU9%K!yGKIV=UoWli(?FT>1rE%Q9xvnZ^?IS;~ZAk|Bk_l*Bh!AT;^NEz$x=yyyYn# z)#`+i%F!vKQg+uWy2KKapkV{`_>c{oxUY3xV8bMD{8(x{npD_b0sR&imD$$qmN#aN zdhFx7T>4MxKtY~?RsPUfLiD}5adV>dwFtQpjueY+$)q{kB$WA4Qhu18f2`?=-Q#j~ zkr|7!yHzpu`WFPXldq*L)#?{t?K)(em9&LFLaG96E7v@tJQV%nbZwhW{D;-jDYk5s zyF~vGVnf|a4?;OzP>4D*dHiDB2w8{6@q_Z|!+nS>v-p|wY8nL-&1hb0nuGyMj{{eV zA~?LYuhd^q?GnT7)dkKJoMZ6U1tOEK*~xSufdUIokhh-Bf8bTBj0 z6?}+rUSXW3yYfo*^;dC>RONgkhVEmWCORaDP|%a+eGu|_ie$m=CL)}4ajW_Z8}b)0 ziZP)RPXQNFkKoJiB6%NOL?6MShnO;5!w4H?-{^Tq)C>|q{|IEM>g&>H>m|xBoqzrE z!X+dpG+Ix`>LL2TrQ0OgaNZrqm98xjz3fxE$A0v#A#$lF8K@DY!u9izm}<$_y*#kZlC#7?}7RFqr`2+yvyPuu(0o#+GKM zc{8jZHUFZACAgx^kzh&I@G+5vGxsH1xnyauL%+7lNj@qa@cVPpPZjE?^zj{FDY@&85~`Jcb>|D8C(#`@oO^?wsb*!}}t`M)5JbY{uM z{1}bPdVJIb>U@d7yMzxbiv z^I4qf&M!MVJGb-u>6mVxx7)oN7KV#qL4l#-C@^uvP+#C<%Kq;2b7|QBEhXj?W9yvc zx!eEs3B~Vj`17IWa1Y?`%PyE6bGT>N-6?eHE-h6;4ub_9x-G}seYdS>c4t=me=X)d-4H&@#Huh^QibEMOLsT=OwQj zck%OO%g%pAad2tPT)Z=PnTacWjm_O^uw?8=#93G5(^|nmcI88>adpd{gnp}n#PjdR zLwnbg-u1bgH+&qOpa3Rfz!(^9a?tJn_R3W8*4d1qzeEW5Z9L8N=}k!$&?$wg_yG7M zeBNrjxcSgOcjcn=u5xE`lOd$6CPa&^rlRqTN^B?xkGKLfV(Nx z?-8M(bU27dL?c4j!S`s2r`S4OV!E83;=6uFnf%b_GZ6UacfL~l)lcR}h@kH|!9$U+ z)$p^k9#z%^xoc-E?hZfrAI-4LoTomfuqf!D{?UKL93}e!%{f&l;6HU1Ak7^_qXldq ze`=lZ&8YSjV)6oJ>@=K&Fc$dna%BBy)m?sS z&+QYtA70<8tQh6oBg)uD>fW{70ce^&0#yjw^@Lmrv?orOXqwDMnXvRriSJ>HIQ2tZ zjBSe+!Qa95X2r<3K;~T9ipmjPQ$t?#Z(BbpnLdnX+S<}$SKw;Ks&nM<6LiTjW;?<+ zOwOR@?0@1>^kw917T8wHw;jrCV@lk+38R~GUl3H9zgu~57AMu`UoZH_$9Qum^z4)K zZ`#h%d1^Vl#gMmhj}gH5^${75@!O(f&X&J@ZkNxLZ!in!7k)Z2gQ_xgzkNlH712`O zh2THg40@=wQj%4?f-W=Mb}rzbket=@Up5i)D9H6{NX9vAzMniXvQzHgF*d97cbP6I z0Z2CH4!8uFy;Pcg&E#p>x(0M?6=+DsfI^o?p5; zA_^hUcMQV%(v#7R0#JQWf6_kg_Fh&XnNtK-@}72wy#k0x7_;m1ZZu1|KKF>b?fe&! zKhC$dAZF=lymWE)AEvPoX+BN9LMy~=lju&E4EvG9Z67!v_u-3YBr0Qm?>&m`fxj;s zw3xkcqxk5P7W^(S{%l1Loc=Y%cIwo{t1ULVx>9ra5JX}aI0^wR=*R)e7RrtOvM37N zj{w#c4!69LC`@~oLS6sehj9l%vMSkcyq4^J;2ny4U9~*m>>uuxjkp`}tETF~Uo$M5 z>F4MVYwPmrqYqOrTXmf2{_HToS&w_UqAz)1z;&Rv=J))fkbP0;wp_GF__%%z-@KqD z)C2Fjw0n_^==Gg>o7`3K&9VOv#%VRm3d0kW7|mRkukebXpk^-UxPfX3zFA(!Xlbh_ z?IUnuIqo5LtRrfwSqpWN4DqDJP51juHF`o z#1K|oQ#QtM(64eoFeA9O;4kPje8eAc$I14m)x`D@FwA*I7UZYb+Fi43CfcCw7xNIn zbj|iS>@uoYF?|nH(1eo6wi9W+w*7=oS&>G<3F~EJJi z2I9WiXnu(uny!m-00-k2u0*N78MeMmb(S9CoP9Z-iHU29{qcSn;=@o8e#e9BTvoYZ zhLqdSt}ZqtP!82|v+j-+fZ1b7Lh~Ekop1d(huacDs?H&sb6MA3Grc85p=OZbu)-1Gd0TWiYT8oQBAu2m`a_V&R%W<>|gL!ef%Nn=a%Tldb%NC zEB!HYX3a&>|A#wQ0&2hnk;HW8@E+ z?>&1J3)D=rUv4uneYkFFD6|m{?R@{sEJHR1CrRn8@5PGpQ_mP*P}5FWK}rP%_1GaT4{- zh$N<2z^nh{w%zbUgLb`sJg?us+11|~(fiBAXXb+3(1*bb=#PdWV|fg3USWapX;U`|Kvx?#>;&Ghzq5RE>rJ3A*$$ zC|Mi6RwQ^=K^Ed4bs0&5S;_!M|5`D~qSl`;nRq(&*hAn>c1|9-yemFtl`OY$#?YV8 z5%Q)0TGtb{*T#4^LBQCF)S`Vs7!gZ~X}Q#aRY+=^T-r4*fk)8F%SL8m_Jjv(loMz< zeuds`RwW{(dP72V*7Sl*jd4dV6&WNijyFQx#D#UT&v?g!34b0AXLf0H3F^@os4yeX z1MS_Ja82pwSi`=WK-dNZA@N-Lc43GQ4T9A;fDJ`0RAZqJpf}vlASh_xsk?2rcnS{_ z{us-6dVi=1oecdCQJRW9BWQKhuEXf92&ie)=Nrh{`_(j+V!h6OU z_qq%mT`1cnd)DLqMF;QtO7-t(0EWIf(AFKrLu0-$bIsg~j<5QiV*H31rq-3}(9W__J<3h1MEqs^|_+=Vmgin}fbmD11X_6J4;haXA) zZX0$tY3|947#@vYHdIn^d~f>_ZQ5(-xL#wb1<)eEI5D+3CYGx z_xHs(I)Q#8ruF|iw$ z7oP#1w`LE6;ICi2Z@qV@3R=(2a*^%b~Tix`FfitoKTf&a7R5qh~ ztMAwhPYUmZ2Jdk%oB4wepSv9_$hjy%h*X;AsMx0UPD_VpX0?^d zwD@?2dU7IZ&$1LdltA0Hf__C(!lbjmGv@x@fA1cb*YyT(3ZvfuTf+JZ*uj}>r_Jxc z1SshfKZT7&M3ZM_cb3FV%Npq)DJco0iq8D;N9*yX28uG=O$^zZIkX2DU!;>kcCBx~ zwGa0DD%X7Wr)Qp@1qw{*o(X@42q2%yU97HVG1CQgJ21w%inftqC_ripA&ewRm4dNFVlQ`%8X*z= z{;}^+K=BOsuv9{SBjB&}1#G%Qj#_lOA!@TUghrJUaJ`Uz;Lw_uHn1$6W=G-4?r&FM zS+SpX(#qO%b)m}7rS;|dXMs}{Rei0#RKsCahEF}x1^L_p7;%|*7+YrvqPJ+I3$Pu* zdc2bzVg}B#&6jFIh-mL1p@tl^#*o^$FqF|iX7I8s1QRZ0vK;}=Mypj~XCkpaEfgDX zTMAYgbp90n$7QRB*zXeAQ14S4ozY`;`W~&B$aGu2v5WpjJQZsa{)yg-I^49ToEV0% zG_I!H_prdrVI-|@nVAw2<*7&Q6#`y$baT3g`62PiwijYT#$TUhl#G%yJ`V9*rR(k9 zInKjZ+_b5MoV|Rz=Rx)2_yfTA8$TFb-4H!Xlv?6E=h}98!L+kF z)k*KzQ6z%vp|P)(x+t=bQEd_IhKB9+zA$@@rU(9mHEwZnX_O{_r=*YkCk<-$rF=V(c2YYPq@;0HwK+EKYnK7U##v&=Q%`G~kGHiahTlu*6@)S4ATWQ&!|1=IJnq zck{4*D#JsfEu_kAgXtvMb82nFU92oUb+~6Z`kxLmulP&I)})Z zyC$ANtJZ_gqg3=jv|7IpRbodR$u=S&WU&`5`VH^OM^O@Oxa@rmj$XEp!M zlzj?2IVv=}vnC_jqX|U1TOMc+daak_ zCi*#4_&WIe$3#&G>^OeyI8RzrO;+!C*?%-)W1GE6a%}nCSQQQj1-C#>pCI>Kg3jMV=4P6C%1t z7znQvN~zs{vy$PgdSan|IgY;AexUS>0GBn`Gjx$lAutj-kJ5V$`9?V=Yw`ZZ0P?bu z2j$_I^SHrj3_=lEx+P+xRy0!*?H|w!oc{A;uK|z}l)jWcb-Fyt&wqZFGbxH}Y^h4f zDrKcR51I3|MOsrVC31QZ6j1VVI7o9FpVbN%P?GWUfW2GTv&w=g2K{zhL0VPg&@Z;& zW{2L?(IOtgp>v_e5B>JZG&FZ-E0`;=O~_)agG%$x+zqbP(?N;N$xXghu8J4T>ir08 zfHyxsM4#1e4D~R^cflF*>A~ z=j<0c@tpeF4X(qzN6Zk6-aGX6Mz1lyk7T3lxfdfOl=ykB6xxgiNUaZXy8oN5&mIyf z6BJGo#|23k1@vO0pdNa=zkZkF^PW@HqhmBliPGb(J{B(j>`-i#?=s{U<@OU%Sw$NM z|2z@N)8_3NWw{nf1%9uoRtJ{Bo^9e^)+9@x*rwPH?)UJVi{bCHoWB}~m+a};`i9bt z%Ok*9`dv;Jcq&&tyf!>nMn_#g-Z}BKn%oEq?d}LG%WAk5NyaRJO$3SQxm)KmXV}Q> z4<#PgwS+#5-X&#ag+6ya6xgu0^ApJwRd)`^zu#$il#=D^-EuD3t8yh+4PSL@cWLl4 z`ZHuq47BRT^ZX`#r@>tXWiNIe;4;-Y0H(p7U6^jky!qD(y>-s7rZVvCk;J)O=mp45 z|0{BX|EJ7sDrJTWpvZvoH_`=Wy;GvJt}41$9=}EIEjU{rQlwiy_dpLw^#01asBHO) zB_Gyn{VTVzUUSv2`rthw979%f$9^sm34W<|R&TsRT$RplmfgxPQOcBpvHeMYV$gtY zvCcNjl999D%jsk7g=!Z&0{xY4{krb=&L@ivmuFy=Gi=-11MM%tV%!QMdlen&Lbunhq6zK!|bD`YU6E=yy{}45#TVj9m7~h{cm*S}VzDuLIAlk%-<~ z*1RHr9g*ha>!&dfqjcr&5Clfk-uEWs!x%UitAbG|xB-7g)n?hN#W~dp?RAOCy;!Jc zBgXe4qaa(BQ~|ZYyn|&Q7AO!(CoWYDN^v6Bv&d3TuN5?QJ2lPr<0u;?i-wk1B+6D@ zVz&PKqTeK+IA;W+eq}%G#i|_KK`itRbOHjMInJ zQBV;e(58dj)zHlA8={ecro=l;_jb@F6r4PJh}7Z-q>O_^)}pw)hxb-5UXsC((vZ!? zL$#ATGslmkS45g#c=J$#8d1E2rf#F*Or>FzVg$;ixGu5yY)JeZ)yF2>6IwBViX$LN zD~8}FOZ{<1sVX!JTRUe7D4l=>BLqjPY%QGBtPd3e4C*OH*CIyXRw0ZD@6lij(oyc= z!15&i;^~))+X7)yBrU$8%#ZRXQ%SOOey83kRgb)0vXg5*lYp?9?D$_mm+#I3MLV73 zlbfS|6?y_~RN;^W@BKYIKt?Y6DsWv;QQ)*rJ%h8S=qt)82hL6;F9h@|V(|ITWaW}0lhf%4bWBd5>Iwm>e5@6}G9Qt$aJMGqLEt}*Qrd_Q;A5qY!)%Y^TkbvRbJ zl!ld4xtyQk+W47_dI+=ghuF|$07>i{xUI#UMOQ6%IBM_kYsx7|R0d4FlBf1%hh&Xo zNOuTl@AnliCX*?GHy`|G)OHgTtKll#05ITBk&VX*3`b^KuA&BVYzTOfIN}L_?D9a} zA$KUb-bj;WrG&cQXI?D^5TuhFx0{bro}ED!a&PHaekRdk!)7y5rh+J=C`*Ws&!abK z>s;trvUvNVfS`8x=<4LDHF4@O2F{#)p>-k+=@XikNwZ_Z(lr%PMzWL>_qr@Q=v(yG zP{}->-aKA3yr}Fl8gD_Q!22b}ajQ<^Wxoc7?qZwNV!2hdLS{ldj4yYvzBxvD)JQrs zN?GiH@5-soFjAv0=1XQz-IbaE7k35#H|wwlyAJaxxx21avaU_q)e;$e$Az^`o=RKp z(sCe<6Zr!Z2VC~naZP~&B+nXc*&owat?S{r(^u-|06xGaAT)v|$zSD%;#wjqgMe~n z^v8f(D-1lH(4gMm7~LNHt>4>X!jj}U4=+JEr!L)DrSn}Mqt4O3?~dQ$@2||PNJD-- z{vI80uIV(+9|h9Us_-bGX}y$jy;+_D7Au$tyVy>j#93T-+8zk*aoFeJU5gEvI(_CM zUl!x6=SvOyp?TwZrDc0++6D4De?!`5;@9zi)r~l+EH96(h7D73!8*ZbK3wuRq_RBn zyLKjiP{!_^=V&FQbCRut;^9e(b*WM6Xy+2SjqH$QG7MFqUTWVJeOhJK4| zJJYiAx?zRqn=Un`U-5{IkK@~ZzJq5PIfTEg8}Qmc@-9VWFh)|GA|gRiQHPTk0yCo& zd_~iP^5;f}UOW)gzuy*yZ-YS&6W>gE0Xxl9idRe17VO!z23+pgXYCV|VFW`z$MVD(<~VMWSHT>pk%H7|hj#v16&jf>8#{ z;+{a!{Q&SNHO#ZpWk201t*)j_m>dUR-3`q5gW}Z_OZ|t>o}&a{LOW1qDwtUaYP)cV z!9Nx{8&3omYSLF4*pm>iVER9w@5_IlBHFIsG#M(WjwzI?<}68sc=oybYnDx)y^Ikp ztnySuCKqSeFvj`$lMq(J#?T+MZ#4K7#(SnGO2=PqfV2hYN`s4oTW9w#%YS2KwE@8! zkg+JqDJrsT;P%JZ7BV_Xzx;9PhQI+hW6~AP%u1Ir<8WVp%uk;k+%d=w{998{viF!HR6m0K0vd}NFDr+c5Vg>r%lfI(c? zL8~pPsa?4p)(i8?E7a{CcYP`-d0=cmxJd?!358*Cm=qDi#A|{r zKUO18F&xqd3xTp_It2xXT8P|nL=(?BMYW$&{FvYU;m~ZpI*AG$?|bc=RY{IoTk5VnoSJQo=<2t zvbuSeO1T5q8eodt(419!wQcyz{Lm2L15Q?v!Qw1MW z18IG`$(y{kL%s<1G`v!y?$R^s`Mh9-YPUI4Hz>yd$8UxQb!3*Gqko>H@umHS;q5-y zb<1%6+Gyw@BP<`=6d`5I%>vTk-0DZBDe4)d)71$QAJvo4^R%jt5+X!q)@0j_r(Q;* zp6rfBswcPRMF*Xys{RX`nfNtDt>}<8jZ29t3vS$dK;0VKm02IUoN^1{>wREq7Kq#L zD`1GmyVoXkEGCAMpUKv_z#=O;d*keDmrVVBxkwjA_j<=)$hA;+>G_om`ncWgz{uSY zRpb5XZRH_0ir}kS&P*Dli^ishs}f7lrNtJu}`OtjKt@;IB8EwOVLBm{6}g# zC1%AsW2_vn)}*WHi`KJ9Ja+SP=Z~w$(yJcMz?gBsI1O5@|kTD9nrnpZTRjYGBrgFUDz+z!UZGLy2>( zrHvw!w0H;@b3C}#^yPQ|$hUMQ0AGK?NSK&LvYkEM9`>Pd?~KWbz?v`u4uZSNDd*VM zEG^_k5(c1(tX?cbnE3&~9P(qfxyo{+es^1TP9X(gS8gFi;BhkAFK0GAH27`1E~=A|1B;i z@gscg{VaA~C~!zsRMl>u^c2A`F+8%~(szluz0=lOV=;~2Tm717yge{33+{<2bjWy0 zRg6}l=$_p@EsrSp6`#}E^7~?kNU#y1Pc8E@P+?C%27)Ju9LuT{?8sJXNlJjf8*((1 z)TPDadbi|M3<)CH)fzeB-!WGuphOq_3JGNu0z-1^bUgVVx-TX_ryf*>L9WaNQ?)j_MW!6IJ)4^c^xWTD3Yt=Qk(rnCAZl-Y3c^Vml_`0nK$ z+hV-{vU}6$rd_M2KgV*%Fq~CVs|xN0Gbl*te7p^jSZ=9D;rc`eNr;3;{3geJvq$yw zJh^symfRFoTVxEMYFfC z28yY6Il>h8o*V0h#XmUASel9@1)%eVj4{W{O_>6}cKfvZ+yP@m+aK_I#v7a{vL}l1 zF%6ry#{#c15v{X6d$a7Ky`uMp17TWB>g}dr4f!u7Rvza~=RwcR-bJ!;mEzsFN6z2! zKLY)TcT}i>`Vsl$3pG&qV8Gz`&uDVnbLZ1bTJ|U^K`Ykus}BY{*mtSgW8g8hci@?s zMaYe*%7?1NMv@#IM_6K+tB%AwksqvPRQ8nyPrgj0jCLM$$H&1 z1OGL!&a`P7gk%k(lP;bn!cRwM9mz2|nuIBj;Ye^Ao_gu`Qc20zv&+x^P^s9Nv{9?0$m*oR#I?LCV&9x9-zWdbV!=Y@yKfH$A z6x2#bVu`jY@RB0FTUnEduXI4^xC>InT&<5y)8)>^AeZg?0pv_(o$-KR2wvh3ZucASG#^)RqVsic)dyQ)qW-CFzCqtm70D z4W0_iI&nax9^L=sm)S=Q2s={1@jOo7X(lcP3&Q4!&QXrpPKW%l=r|wi!8|Ve@6}NZ z!*vB-fG}jdQIJ58T^HwBp>C~2$%q$s*WU{gSH#u&1*t=m_Xp$(w1tkgh0)cG?QneM zs-&&aRZ2ll%$m`3S@}yTKOf{-*Bk^+&sa(1mG7C^N|5^O^t@Z&cJ6}EaQjqepR4_4 zlITt{cZ7*~_HMKOFeWV0S-W>KQ{v8Z>)S0mUNjRdLSaLe9&m-*(5z`3_rhZH))k!r z?2`g=k4?*@il(YM+hs~%)W(}u|0X?iRLSjp6|U~;`+gB%Z3RmK|CVqWko8px&x!3T zLY!170RmpBRQ`+6{deLESly3>mTXS%=M$@sLy_J;S$76wWv}tlGy%l>Jmzl{t}|0* zGrnE~-iQ?>_Ut$y3I7>X+{h)WWzs0+7fHH&+7j&uA}auA9w7$tIt_xH8mq!%0x_f=vQ zwo{^GYEJL{0Y&!0cq`<4h6B3*2938?m!-(dqqWdEi9ukbj4XlZA(V7Nwu>UKW6)PS z+tn&r`DiT$B253NPT~4rSW(v&quj`=UirT#1KJ4}G!-&u8pg5rnUxEDl7 ze~B!;0-isu^7PoOPDbc_~tRl;T$;&neL9Hv0A~^);=qg>qX|BdEPw;dYqd7*hrY_SZkTizfQIqp9$q*jkp8S@W zh)sK1?N{4Fvb;O&+(lkZ*j24p2{Cg=at#|8e`6So8V5qmkrJAysQ(q`MK**V98@LvgZ4*PLAlcc!;#v;3~jEU-F zz-K+Q?(Gx7?k^`6V!XQh4Mfj&{i1z3bvAS%2^G6#lO=SLqBvcqn(+0HzJt0A7!?v6 zo_STuZEm`f(LiH1FPao7!_5;t=3(yepv(8I&D=feJBrrWB;9?&?_P|z7-o127SH!q z-Wk?8aeKe&SBPVeeNYI+j$mj5h;%TaoBXS&?NCcLtt9zmN$V{<^?Z1xQITyLa~Vi& z{iA_FU4C+sR0|^U9sWO)Cc zoIjl=A6eU*R%FxLsvFl zad!q7WasafCM-LD2A-SoQ3&73*2$L$vO|$wfrW2Ndk2rWxP?` zOG^z}&=i&+aFbW~$WIaUy**g&8&S6PzdnF`_m1G{K7=*lL?@qa-WG5$s+=VY1svn=N%y%yW(}GI zek+MHJRUk%IM-S{<_P#mX=4GesJwL1B-%NI_azIb?Ul#PKc{gZ=K?@70U8!NN8i<7Ic~3LBH@+f-kj&)!Co ziVR3s+9)C5(x_AhiJSVwgT;lKB?5-0SX3|V&8)cDlbktswoqUamV#R4bj;n*h=##a zvFE2Dkim8~swjf21zl)Qzc_s--g&GlX;SEmTMf?o=XsoOf$~`U>s`Gx=&j<&N;gn2_k5Pv+87l{|nKIX2H;Mn%5qofK!Q>p4B%D6URL7uHL`iRr`Qdw~w-9a7;CS&#f)d?M zoUE4@EBjoLQ~M9xo_NuQc-+E0&tuy4yrM=WF^Ws#{YQtt-^yDj`L&Dod9G_;d)f(O z#iH(g08Ju=<%Z&yjmA<|Ww3l3_X&&z`W;FW%uF!e#m%%YplE22S9fx+ifFi%Astr>~IuMaKVN9=^{RLg{0*=*#9Qlqh8 zRM1LX7|X03`FPy~oG;Ap1`*|HCgE@t-|! zr4q`?Gqd}FF(satnj2DL-Oxguh4_seZU?%K8b67_)sV{5!mK-xtQEOVN5yyP3^E4c zUoMvQbRfkjwc~o{8BUe5o-0=TF8G_zdN5uSZwl4lJkdm!EDWeAe!$h5wh)m3{J^>O zJdZ!6zNd+3`Q5Hi1u<6}L-6=q@fP;^UYKfbJ~c%4tANefz+gVdiiL_XG|{I2orX2< zW>XC4xsq>=&h!`Vt(VzeDI*eh@o?h zr~g7y9<0mSHx}l$`0}T!-jcF%^d8c^%pOL_lY3svoJK4w4)CzDG2XSK{3P=;`2{Xj z%HjACwzS&7UI=w%N8=Fjm?0f1dgv+mqI0ybIW;6mgY33*wZMi{9KRy}U2ZgA%aB|Bn9ayZ^(Iu}vg3Gm zKk;^6k`JFx$dqH^^mb0So@-6PiNFc{!aht)_q?%^Agfo`w8VK*_`Zb4Q%ooHZ<9ZWuSQiDXF@Pq#jnnCh8g(``9!g(c}E?7xwD7N6_%71=A^ z{8%SA3CiJ8I*b$KN32zVA{D3T7aFk}b=*(b7?QY7BGAS>l$PJZT&{Ed;!ffPERnY< zPIN&lspr$V>Uq_#HR31MoY@FCp3X8mxu`pS~aYQ4bgILHjibPjFwFU7N zNSp724~ClSxwPgPg5lwi@gZ|(GCHgyd4{uLQ5+pCMzoMv(S;<@Y?>pA(tozT$g2%v zD*5u%&jx>>x7oN-kQqymv7#}+Pi;?Q$TPw)@w7x7-td-~d;J6iS}KWy zqJBIF(Tz0@qgR)Y1JXyYD?I2PU<^(h z0FqZncJX)!gD&Ci8-%figW99BPkZ^zp?#+b%dYMmxHoz~@!^guqr*LYlPm$zfjd;b zY#y|TC#k;{T|(dF5j;P+29yXbJ$=fP@Yl2X8t7T=O zG~4NPD};HnouFo$?nZLlJgU;tUjVCLTg7N$N;LFkH=EPjjN`dpvrC8LgHwvxH&*JW z*^X@AerUv8dDdQBrNDzns~pa7sdpdAenQapl^E0Tee&7(=)j;qiUd_n2fSm}`DFLfvcx zg=xYPZv_(5d<%y#1xL4^mzF_gra#p(?~36aPjhM|04m!|wJGYoCH&Nh zZztYwv{7piiL@Omdn+dLN*jrc?zC=W&zqDUaeeq?D9mHtx{m?fgSF;kk?nUqQh-i^ z@^nEGQp@u-w^KVwuqYP>)#(Mdt)ZYh?}D675qS2)(BFW#=k?zg`Cp?YJh+-F+AL`OCsUo(-yv_<*~Py~~cGK98cHB1ohx>UOg z@Pt4!vj-nprmr>aC&YQ?fSuSNp7V=CSloLL7XkIjE0qc5a5vaakD}(qDR~O5=jB6p zi_6*{%bbzaV!*etZ$Fm97=aoGdQu{0@t}7J|KSNte(f+XW~R3?P=aF z`^SS3HkXup`Nn`+c0X;oQ<3X-ovy*Jt;aFuC?bFot?8fbdCrO>gPz?XW&(Q~0#ZC?heeNO8)Vt1-33;A+icMA zGDTj9MYKe3i^9v$VpXBE)Fg=b3w~X|X+M<_vH5XvYZR&(CST&O-QqvQ3V)ImWr+Xl zV-0|FOt@YDg%WC9M>qr(J9W;#B@vVEkYfIW`w3TJ#`T5Bh8)>m1Xo^S_JYWYn^)uq z^J(yB7O(*EEKl?vVJvuz43fkto=iTtM{L=hcoq8-w{S6wf4*+Om;J`*1MAms@ppC# z%a@1{@j6STKZ*tz_2%`+N)rc4(J4&$L!>!m>N_Gr1C6@!0v7;tA@SJ`7RLHP zgAoVGoCjW3<)1O*JYVZtvR!4uHmn0Y+u#!0E5W2nZ?tmX|Hc}y z{kv~Hmhku?BFV0h{B$XHzlG9%!?w*Q8BiFxX47=@aQW5~RA27~AUV1;9rg4L5>4fP zstpPPbBTHoz1N$SL>yeYLm z&W{~@iVzgB`lhNM-}w~KOZGndSk>J~hMJs@4p@H@?s@NKmr#PFyJw5g7QaYGe!Iq2 zF=Ykmge!_Ddf&XY{9gJ;y>G#6hd;NNqoX3fYfp_jJhoNRr0B)tJ!MI1NvEL5W%Se0 zIeSOA{^pB8IAbOYIuhpzn>a81LY9F1dCgg~<@x6)J(8!NbfVX!Yn7;??V>x?yxwxd za|)4pFO*kJ1N)pE-a!?d)jw8I{G#Lx=X)3JR5*u+ztcDm{%MveVFf6+Iv&53O*bS? z5)#pmww&_&lPI}Hn8Oq8$enl-{$fvo3ca#?xl$4rXdgs<7(9#Jmi!tpB<<=8B=)0usf;%`Y3RIdc&aL=fW^gSem#*_vlMMSU2+_7 zql4IsO?y*p85oYDBeYhub+@Hr@A%WU&;n+DP}k%2dW-a|PdF5B0%pE!T~D;1n3IdS zb)%zC>`<^B5#5{j6*5M!zNR@^9rL{DsC0g+k6x2*jr%xS1~IC@?&owNz5)2{op<;~ z-K`Zf^LuSG`WOl8Ta+L0$Q|0&K6Y17ea|{r6bsx-IR9p=i_4is63e!sN>7zY?A&Og z34*wXhpH}Dki+F8y0th*{{g=1fEbD*;f_7SejOFKN^3Ds@eLNx-@9T)^!viNZWhzkcSOL zJUW*u+K=mA2!0qMAcQqBc!vM+#FJuN(wzA(R?F4!eah0u32hj1s7o8EE>`Iw#JLJ5 zt1QH9Ce8c^%Y>GM=C>OoN0p3raPmq^&RvT3oQs_9oW@<}OjXLzyOdZ( z5Cz$zIS}rF?B4pc>g)bNg?K?cxB@E!F+oK5ke(9AeZ$m#I@$|$zGu|;_=>@Qwl}%; zCWkWVXH0!>W0kixf`t=Xm1|_9NcX+Y6BnqMqZK(QE|F5O)1n* zaD@*qeVAw*_Tx#=DJP;0cpwn#EVt8P^`ClW1(>f&GX94Rk`J)PP6IpF+6 zV8Fkr2A*@!@z-Uss(+3`gGQ6LskN>6d<_omXV6U8FE}rIZZVJea<%XM)k0=HbG1BF zbjI&O2Lx4k0rma($GAoi^M#1d_JUAM1nUwESR}L^Nv6DzWYP^fOJSG1)J^w0K$r&xoij@$2(B;DzzODFIA60O_8+aLK<+(kIJ4_+TlwdIbWv49vdJG|>_#)O zM&p|C`r(|BT1dF#l_@sn@$}VVUm|5H;MG^7wiLWF?)Z_N*afdly0Zuv{52_Nt=?US z-w<;6kiI8$yzOj|k@!;&MfoY?vQL|lB!6Ifb>7N_gh2EVeejuBa;bX!&5zlnz;zMJ zMdK~5n9>orzAqu0T6tu0a<@Xi7&gm6(S%nQy-MG zS&?k-aW7QsdLS$Twmc{P+RgAir*@OKuVgf+USCTRikk2{<12NA4o6d`!?ClH<269t zsy=CF>P9KKTyJasMkzA=>z3!D4T{6Ogn)~^J?>SUs^99*wiVC`4K2J*^`c}=Fs-I< zg_bz7-1G{e#$H})C^K}|4#a%vsi~{oS_AggGyM?HgW{{{(YlA+Dg@LR)2b&&LiRE| zSX^*48GsSH3F2e|6 zKS4&)pSy?bjG`s>O_+u0QN@xzwvN%`)(YwT&ny>XAQXUb2NTa-2_1iJogutMZUq7b zk)ymJtI5H+qb(NF4=`=#=;gG45n>Oc9qk*R?S;(UFjkIyAFoi{SvijN130PlD>5d! z^7D@lAr}ZFTzF&<$;7Q^yt-rDk3ffo92UU%l4`4t%`0BG$VCmsSP7Tvy1W~>>%af0w$-`c~d$-c4_NtOxD*gNKb*#`C5DNdZ#j};3xZGrk0nDccqul)sFRQ-}#QJd{+U$XG(fW5tq~VY`Kl(n~nos(wOz< zQmZjk(X2Bd^*zBvbH0!z!jW&OGsSQ8yVO=e%}b+(4nqkw*eK|Vbo=)EYkKF_C`!YKcignanEHR)10e18iXV)1 zG^f`^td57n6S3vb-Hu!Rt2r=2BAym)lmgT?VibhZZY^Dy0;2&5FT$&=%3{jWxH{(r zM{uT=u1Vz`lT}K4PAuE=Xfe|vX^=}Y_Rqh}Vj3JDUeOG*4b{iN!M2VhX}|GSg;mFLnh~v(Yue}YUM@M z4@mF}gQlWpEBgN3uITPT@n^ErygVY8TieQe;>!zPp4wnx7Kup$qd(rJbyA$E<^}9=b=WTpy@$9F3<(` zqy-@*Pa0%qi8szf6HSC*f<4yh0;|l1T+%tOXBcs|G#b%|OQgkH?hYF@9yw!MI>3^~ zUG072_scK0G{AT$w|_P1st-dXVSC?Wo9C-2Tzw3x(>_x(=8|*|&E^qv*fA4#X0f*# zv~89bKf)JtZ^k9l#$2*@ady`7@gh+3j^|S${Y7R_7VeZ)uNLin zY6HzVFai%J{KI$2YrWx&yq9d@ZuRNJ6+0$_?nj4w@AvO(N~g;e8pt816z>m8b*Qbx z>Pbk$5>Z`Il@SS4i=>gf@8*KM#(nYxQb*2e9Wr!AD!^HE^c0vxoTkP zMwIn(?zVS&v0tjQjP}Ny!^E`saA_r!&)F^O5j5&Mz@$>yyPu#tx~@b6p;7xTbp=Br zMJX-2;e{f2as#8i9PU-oy4BQZpRt1KIk|LU?OHVmmlxvp7x%)&;tbgt z&N@nJzKy3pmCj2?HA?c-I%^4<0r_68WjMIj*disxoVf{?X5-*<{uAbx#aF1I>YxiJ zk>F2%z&UWkWy*t@xF6v&Z?5n%lFNq)T+lj>FZ=}Vi6Wif&(2E()a7PLPgQpwslEX~ zdrnUji6?DxpZv(nw-|{?vilaan0%TaR#jDj;3E_~XZiRU%nbj}vU6_jJVdAGcN*@; z#D5>5&f2vOvuWrR52O_@jw1^sbR<#F`+8)a<1r$)eYC(S`>P=Wx+SOpXL*drHJVP8 z409}_*)ingt0(EfjjF_t`o@nizVg*Cs;#b-9UAwtaE8+t9jxLS^~T>S8ji*8TI6Kh;ZV2c{MwrSr8U9f zBMD^^JfYqb#VSNi`5{Sy7gf+=ghwLv5#G8>5@a4 zI@0*=4H{THB1@#0H!B19jv|lIX zUiub>0*w+@yH$|(#XaMrtzbM6XxtF~#kW28deuwaXpP~P@O56C_<1h|m(1pR=nE$d zkasL@kb&;ruB_so5Kq@)=R@Bo1U#hoHa9w~HyMRJ_@3n-p-5V!rV~?^d2zA>l!%eG2Pki(IzIQ2Tn=M_X$lG+2 z_?=(0e|tqk1fYYEU%M^ZB;BB}RmpzH;vU0F_cg}_c#h(E^zWeVA(8AuZuk3aiRPZ)~D!tPV*owWxU-YHCK zM8?G3|JUIw`Gv%_2dyk2TNZCq+D}ld`MBlnLi^_mXikYfjdU(n(qj{hq`YSYrp-sr zOKmDsZVNvW`C&?dzJlx4tfjR~<4+5nZg!H1X{E|0%pAXFFb?z~aQ+#@zyZhR`_b@d z5i>FZGI8y+i&8ufeNbYvpW#N)ZA501cjRZsiu<9hxXGAXX4=WFpwEA=@&7x}hl`Tq|AGz4aZ>(AFVdtG6@`BP zuYZ;IfBUQdH_+!lp3(mcpic`F=tHgKUIxBrb{7$^`1cBf*kdb!MfnXM-B|o*D1N72 zpbfh^Cgr{P+greBn1t-y6j7~kX~e~JwRyJC6!a^h=k0cPhT{EcHsH4d_il2D zdvrl|;`?9IyX|+#uIbzQ=zF{v6zNkBMgO1%-}?l=w>|8(^#(SJttCF}y7Y=jK#@LN z34^W%Y(X3NFX7(T6j0dD`N#A{o0(Spg5&H!$cyKuXld*DDc5r_?^xSw?&#w@1*_OF zeh}nzv>@ooHfkp3J*O?W_suR(wA?H+_~m9fu@@p2IBy#C{#Zcq-edRtl=$cLZujbx zLaea;^=1A1(9QmFon!e3Qorv+KU*$c12VYOR@LbTK#xF-cXSr-kP`-f^#U5m& z+~3{`!e^&O#ok36Ne^3y{=U9L2u0sM#>qCnEpLnJKlR#Ic(4AuXWr)cmM6OGORP%t zr(r131zFaRwWy}yr=0r*PTDmk&*b@UxyOK)_?<*C@6gVa)W)vYr3O)YMzNEBn<|5c z?VdSFF3IlL?g}W$?G#@lh@21Jwrs#6en^C%( zRxWs<;Lk^Te~PskuiV=nzFsPx?r?hWi6w#w$jgAaySICE3k8bSVasHWG@u-p6Y^iM zxx4~RI~Bj$d6b+2S2ZyuzO zT&eSpB9A6;)oX6fOQU^|&#(=#*rD&ls>}A8*;la)v+=67)}xure~)3XoUI+j;4&*R zQAl|)gCQ6|mUH1j2$`Thjh&3P@nq9QVr%#4il?d(_j5ikAYfF2`{d2-$+G&OI*B zfFg<3??anv4a9Mr>->bX7Y;%PY$;An30&-x+FXu~PVC_Cf|r_zw=b*pX|dMdnNbVu_}JQfB&qVe~!okgDLKLHp+=&kR$ zqu%98+BVNvT@6W}UrUH*078&R!;cup-K<6V&fnw+5E;woO}qb2ih(P$ClhZjeaMgZ z*MheK4%uG*=_L~`V*J_$$t@S>wz0XRDmw{xQhl}o)aTiY+#rO!>|@yj*aBa734~ma z$HvGAK|#UO+Vwm4GbFA7c)cZ=7lcyyHZ_XJX~~{5pa~80#2nGL*K1TG3`fj$yTOmJ zGni+MRJul%&WL&6wzo-c!cR@SZ|^$ds1tl-^IR-GTaj5C%49Uy7 zHHA$z*iIXoNB(PR>b(YI6_@=ofr&mkrH!MyByB z`ZFHWa&siItj6D*R?u$WwXSqjHvnFpxf?1VZWCr5&mdHd6Qjv zTihxlp+7^Ml|(E~$L#33yBK_#QhW#=Gb2V+oZg;S$rq&4-PfmG{6y#+6&fa9?vsM) z8n*pj8PMfdolO_9(yy7@iI2Q|#@p6szY(bsC>#8=zPfop-sz1}`%vx4@RDTSJ=ZNh zqCx78)?#E%>rgv9&Y*dgMws9h8qSsCf9F$P{D`@QfWv(y?v!{2c@Kn4eglrDM z(HPI*RjK>MXCROOQnlcaJ47p9Lx(o!dFkIiX)bmzUZ6tq&7|NAGzsf$ym`oG{%q-|NPfO4Svt2jPyYe#h2;h?HQSXW~ z)ie&=-Esm)nVewmK5thJc!38nSlBBjw7I5N95KHOyXWG9AXrZIH`5`hidMT(bYm&@ z)T08cU5@l!ADjp~YF)I_;jslInLD(%Rt2`ZwBi3EqwcAVyK=nNR=8q)`W;+0cU-`Z z(C|2bhtcs>Lj8)f=70u3VfX-#0*nUL9m@U50+xSrY)#Zxm#Rl;jNo94$%+@z=nzdh z)8u%py;LwUUYoG^_nfjDvUW^etbehoJGMJEu34FXvn5B9W(|_YQ0VX}5KNd6)`e=@ zpCzXpOa*ib1Y3dwxegQCgR8X_!MDR@EN6;F)=J1~=yqj>*6P01qFbv;2^+i}+06n{ zbw`H{o=@=R1t-!17_MPSjmcbZTa2Th{TVARZpp|LlK3;^*XN6TMr|mUcBKP3p0g)>!fZ1mDAaomA{eZV!~c>6IG)2=hD{_%T zt=aE$v&|n==F5Zi3yj`ba!~!-^QVC=%FwSqrOqd=-P$NX`_V4q@HgQt54fZn<|(WY zDaky~wYTkhIIv0xsRL41xUsF{#NG~{%>H5mKjTsA51BF#-G#xk=5E}x77sfuZ2z;{NMiBJB!Ovj* zUF?p~H7Jt^ZkJBhl-$q}5J6yefbpeuE4by3we6BcG?v_)!pFPVy3Bqvp?~bC)R)24 zbtz=1;8UU_Jaf8Q0rE(KK z3BWz^E>(!x)fPXTDP-e4na72y2)53n6zz_2VJlKEAEe5fJzYz4xp)~0zxNA%ur-eD zo&o!6eCwjRWkuqxG{nr5ngI7OE%;eRIgI8@JD(*_D2?Xl3bpzRYHsoIosLO#O3fnB4e{}sYM2)W8AkLWffLqoKPKf(2$$G2kUm!da>0nf$%>bWSb|_L;Qdha(c(1Z%xW#eNO%ttem{(u8Q<;! zL<<1zZr*wy=3eWd+q?H+D?eSB>YeF4d+aSQmIKQLE3-XMABt3u{+7F!dtYRzD4S_C#a!;xY$jIGn95(?z@ zTj3Q(Ihaf5@YO3BO*x%YE1kbLwALOc>naY^bUCs-Z52jj0tLy?@oB$Ao7QABB&F?c z!_u6&-oZXtOWjq*Y`sSHikL6UQLVkb9b2s3Be3ZSdY|tKu(QIS9UGsg-@KtVIm{P4 zt$j>-5fb?>udO{%fB`sZBcpkj@P{bnw*?AR$$SRLu+47T#YVADx_=b(!%nmWKzj;A zXRbDIGt55DU6o|7NUcZK3L6jVU3hgkb>m#+UBr=}(7hU0ED!dr^|mz`RzF;*yN`SX z!=^F}{szAdurhdtmGh}FrMI%t6?UAL%*c%wE%)`=BKVyicd+U;usNwUo*1oy0&V>N zrpUk(H05=H@?p-r(2W>(er|B+6>&^O>gHhcE9o|bQ|`IXiRwHmD{Qt}!J(MgIizd) zXuTmOr|QC#r*@KMtN-wsNAS~hAHi3&`p)N&0qwonb8H@Cq-cTF(j-a3(gn6nQ$DLS zqVGp_sJ4=whgwb}gfOO&K+4M8SXS?OZby3R0ePZ`?mCKAgdk_hX?BO-@_l;yD4-3k zwcZG3Q=B%Agitu)PGg;+5uG7%Kj9|qQ&uokS7EfEWMZaZyqMMsU^hPs0hMXKCnIv7 zgoCDA23v|m2JV&Fp;Uke1zE+bm`P+s##I-J3wdNwv*+AS^fGC8XxMarDR4yjFSmz^ z;|7)pte79J_NShB62zr$X&ON&8u5AdDPf0|C*>_nLLYP%txBl_R>^nYtDwHP#P;=b zOR~VCG#H1B1eT^2h_(VGOf=iJu}R5dA;oJYrOtA$?z@jfnLvTV{ORk@^LJ1Al5}tz^{A#5Wai{=P~pfZ zaKSr+wZwa{70Tu1(5siflQ^>r+ZOzBzY z<$#wy_ANvC1%(?CG5tP}Sj|GdSMkc?z!6-Y0QKYj*8O|4hNYn!o=;%Emi=-g5Jlux4DOsENP<1fqH2W^>6^O{ryF zx^!LbFp^9i#OpOCH97%$mGWY0%SYHa5yi+31vJ9{y zV;vF1IIt?f;0NM?EnsRw%h6ziptR)J*PG!0u}@pqx}gQ}~bNxn6z|Ba0S_TlmchpJqjNk)N<+R3p@%NpzRP6)gDTCkUJdN^h-^7iZ&m2uq!xeS2CVY5EL zyMjECi~f&zOnkvM{sC8-~^A?l;RIMEuU^O>or_^2u@-bW6;wV zU5F9`_$H;>Julh%anr&k1VcUoOr z5!aa`_~Fl#=VWd>+tXd%e={$Kz{S}V)tNsDMn{1F?WiAR<;hOK6m_*)wRC%5Gbion z8;!4$)q(Poo1zP_UQ5IJ@e$8k^5arEFc@n`ig~q#Tgv2K?)?Y6P?+=O@q?viMoXt| zzGMLyExowN_bsl5Hf@wBetW$;;=l55QRcH?wPnT0!Cyv5^Wsol+~YEa-nL_WT<7Oy z<4nbI(yl?gry|B3>Sb69j?!K}liY=QwqdsQ73>cO=I)d7D^oTS9uQNDtg~Pi3W*VJ z!!;EM#{9+eOjKeu;@LM>DV8h>P>-Kj$UP743+9VU&5J(mIQc6cQ$2|Nv#4 z1+VvG*|sQ?#@1E*(Wk&R-6$olziQlLXaLyUu5%JYf|_%2r{YiH9Zu^4-NTV8OC22z zIW?VuU9M)k!UY;cPyvZj{Lec3wI$bAACtEQKL4{`x&>xNIs?tI6dZksJz4yEt9BQd z{A<&64aWJWTgv524-+b45XH8clWW455*3BQ^0yC^4Zu*+B42d<%?`vgRH&ZE46Vr} zVn!y_b^AZ)A=7JgtQJ$$GjmmM!yIOeE~8~rbUf@I#gHI7>~qH6u*MA(zszpM@HV;XjF_&Un^R%R;Hr!6kGKh**|1wdNr zlp%&vj8(<2M7y#TZ)2DfnK|tz>mX6F17@EB-q6;Lx2REUoT*A$H@es^stw5DADEyr zfFj$hj%v6?#ghkWp=w)!=LD$Nr^H2C2S;~;r>Aa6TN24KgQQl}EA}N5A*sd}T6^tP z99SbSJJH8Fijgzmg+eizzPU)ayiQZYp1TTn#Qicg8?=V6s^3oU1}9Y%g}TR6UGba` zX7b6@vZ?lav|%4YQNpeAO=6UPZt8t|^0g(tz0xK2mKPGx6zW@$`(wDh59c>Iw(t+& z?k+F$l&tHnpcFH0(UyjxjZwu(+UI5134-tm1^CSX*WZuFU|uI+CtpmSQS!KKDX`8! zl3V_V+rAd9ZNqU&RE% zh!)(04qgG0t_3_f%b?q!xu3gls$iu5Qx7?MmW?0e`u1<}3~D3)A+mYYeQ=O~<7n^R znzck&2mP^4O|w7Y)1W6w{j?3O#_y>zvszom2i=Zg83|T0DE?7#myHYTO=1RSj%4m9 zF>8$h#-hq&jY5*m@ohF<(b$9ed2{fN60 z91%$P7oeuLUr+@fxz=6nBu_$Oa!rNNovEVt1-)8j#Rg?BWs&pb9!%1vj`SRTLep6) z1aP)Np2%ORXIwzEYHxFTk`-z)zfl=*`G6{~#N-t`q^81ui$hjF&M?$AkMMGyqC39V zHsR$rjEgsQMPBze_~Qa?Qx@}X-!J1xd@0$H*sKG1)XGO1*_v%F32QsoSO*JEw?D?`VElP9CZ@b7jtjQIig_xJ(2ch=0dDB;5Sw^D zBYa}s?0OAh4r-8oq1=f(=TDB_=``KWB@98@w>qs3*u3GlYsLc zMJUax&EJ0|*}l;%xLQ{Oam?J1iknHkZ2f%F{T7yy)wy5}j_p}N1jrVvr&s%TPrk+T zJ(Ls{F~9&c18Ke1DXGp>!;N{6p(IM6h8zW=HH%ZgJ5G>4!nW@uccyPwBzS>(Zoi!2 z{v=H%?vY=2+`Hle>{9UMwvPLs{((6o-)?WO_{E|$CYaT<5B=f3IhU$f2U~er z^K8+*y3S}dLqAp|?drQi$I-g3pvCSU?RdHp#`1v(Y%g!;GR?yI9(s}_I`0(1Jifnu z7555vg|h_)@gZklcIu_*LRJ2j#tYzjGtGD3Y$ncS418hksBAOhqhNQr=}|WkBC%OZ zbV z1$Yz4{!8=ZV1^3&oJrE`pGHsfdMVThHxhG1*oX2l9sr(zZi=RMC$!`R8BT&* zf{FAAz}7f(L(qi3SQfsDLQcBTWFnBCbKN zYuI)owN%62r9lSVb3JTT+lr_7Y~ZxJdp2z=@r&TVqg3~op#Y~ODl*U4tDQ+Q(LkdE zM&U=aMp{VnCvjFxPWR;vnq*$*<=dQJYTvn8%SXH-PtR~6{XaRDN{Ba_-u=&}g03Q} zSphm4IBhb*hz6stj4|s%i2_Td0~G;{@r2gpCUhz`Mu)nqGh~b;1*Oh=kTxzD*z}{R zoSPBRrTmZ7<^43ZzOZhBd>=GTCeTz|V!&eag@+|ug>p_T<+fID>E{lDysOfThk;o| zb;F%R9JD^gB$p}~f%R2-$_=_gClLag=|Kf>*|NBy6N_17BSZ|ig*=v>fjN-yCVRfo z@;wmCBS2@piqU?+uYiMpy^kR++{@TZ1ud(Xm3O_%Fp3||^OFIbr0>V=dff7qo~XdT z#FcRkpG^hLJNMrP9|qo>R$o3X92&&cFwrE0pN- zNu|7_`zQ560wIt`9|`0PH>~Ghww`-I2H1;?C(VGCt1U>4%j?arHRfj*o3e`v@9=$I zNf)7O!;wX|_Yg*H8H)F=t+}*l1DZYn@8J7XhIb>R;KP@ymA^<{(mw0tTrQ)ItR7?t z!_wA7Hbm6y7)Y}OXUHVZQBKXLdB63JY%at6A0vn*E+{bEI%Wmn^h}rF;$D|2dSB*8 z#a?c%54qT^-{%ZRH(u4q`f6zEoJT`RDB zu@@?N6J9YaQGGLCAfsCd9>}azUk+%k)KIE?mv*JD00xyezx{rC!{s-O?}VG`zFS=? z@JV7CYLpFxCuiyutu zupxJwsrJVB)LW(+vYD1vM2Bgu3YC>D3VFF6JnMEbUyw;df&bTKsOhatcP7 z$34Oq{s;rhsy9bi1ToMwd}?4z&3 zA|tW|jgP7350KWkLbD5%-vVLGc+h58 z5Gs0G!%)j)3h+mmDNg8ngX`Zhj&fE4&KIk*B(-CZgelNsLx7IYhE zJx=GTlxcRSJ2d^jfKN&#g_>hGx{hfT2`Uy%gKV4vrAFC)Z?glH0xh-~Xn*2nRBagK za2XoOs;WSH{Lq7Pchg9W&`-I9pXuF8>_~h1HZ9*pFB$*R*QP3!)wytw2hz@RZg$ON zWuZ;0UUx@usb%uh2iQcbknC?lRR|wy1tmtJO8tXjy)I6Rxd$vSy-CyLF>ws$Z$ly< z#uGk_t*@a#e=Z<<|Fov3+h{bEm`nX$@~K*}5?X}wd;$zWYqOy&04xe6g24UOq9rkQ zqCu{b)oFRbT&*E)k%#f^umwz9oho_FRN#OkeMt2W)A6cj90iL?H}w%^$yZu(_=;Gd zw#@gYuyc;MID0#t*JLcPj0s-!U{a11?2P|~h z^BSVHC2wiuB$SfUqC9G#6Jn#h2 z4wyUGj-Enuhn(r%9#3~iN2k0urP@v3V(_5-(NT=Z>?U@8sW7im1+&HaKXT1H{VJGp zf(HFl3q@7@A^NtbKI-%nzr3-@zEqiFjChm^#ia&m`HrLf>xJMm^H2IG6*SZ}!Z#;4 zJMuh9)Us3-Rlx79)Tqfch1E&9`oxr10@7cb)p*nYCsf=HcFTAG>;W z)v504Q>XT~_wSJc9l(}MNlEZ0r;*arb1GP@PWEgrH<~`9f`Czpn!0-8!)tq$Kb$v zbOw`0nk--6CtdRF4KHNr#UU$ILSNXU@#%+APMG|g*rCSKDaBA#UQkQ=D8+h@gjsmr ziP7WEL~HEE2eQrypQ@wR+5U5~Iv~C)Fay<99^J@?yRJEFKl5oK22);fZV!2lMgaDo zrlP{!T$1GkYeoD>ypr3kcVbB2myqCdCX2ADw>%%;j2F1+dd0NE2~c(!3Q_dUw$4`$ zb}4RStHAhXiq(IP6AzzhD>|YdRLIzDownk`%>Tj_XsI;0@Y{U$Pk@>ERvH@9WJ;u& z+!~#E|27=xTdA}Bqt5Rh7LB4Sk{~R&^*Jyq@T#f47SwtQZP`kVCe{Dys;C}qa3Qv~ z!yp!CXz6GLsS4JN^H**G&@K2Dt_Q8Ajfuri&_~T{)6ERi35j#=af89eLa`Xw^!K*w zbKxx}$oSIgFS2UmVzyjZ7A;E4hZ>lB7hw{>)lU2krTHS(>1Zpa5}oF0Hm>L;yy24j zH)%JuBQ@KFt|l%UHQItAPtv}8VF4KE;^z8BF2zU~{4`Yitb$@(lb%*)+IJwn{g|djyeB)3ht8)5&>kQAVu8jgit4f9-5V}n6nb%Uc;j$` z_L;{&AH9{*+2&s52S3Q#le&DygUJ}uu&-u_o8SMkC?>J$BNn#rEm8VibR|W)b=gLG z9N~7MCR-uh=8Gx?{R8Oxpiy89R%sL3R~s$J6B5~ndg9`98@gLgm+T*b9hTwoHLG7U zpv0_fun^@+on;JdaZ_5lALpkiyVZ6EI5XBUJ4gW{>?2Fu z1V_(9W^0BoGxL^R;kv!ds>Vl*7Ic#YW-5LTO_Xa-UC%oz`o&-3QMGM1C-NndrA6hV z>{@D4rW2$YeE#o9+N6cH-+iIqHS-E-Z`})ZA>XvWyUZbROYs}m^IKX9_up- zJAc!}YM^{>V!}S1g{|8uKE5AbGV{}@u+?OhR)jT5b4)sP3RyuONpb4924&VLzb1Y8 zD~mcGB7E>UW>!fR@yv?jvmM1*k^$XwVL!3PN;z4g;7sK&<+5d&hqFi&*cl4NeK33z z!W%oPTS~n_!Cj)xGw2pdu(kXySudF9jw>jtZrg`_E2;s z9Y>w>v0N9P&m9&7cmu5FR$Mu#j1%0!tSiRx;Nf@X#I#H>QeqU6R zDff)`t3Wm7b-)c#BG~4+l3KCOAPFy1={*kI|7d;egB4CHX{!f6(cXbVRf+M z8pJFWs)B6FwZ6;X-o+go>ijD|My8Z*Nv@|9lt3B7L(Lc}$ZDwXM;eW^95qhO+SdGg zjTNFY)nUc@*X1ceN7mW93GNn!5iZ}m^|d;7?{Jqq-o-wJ&7q(^!+m55nM>GI6!{1Fo$ z&cg{`=BV*a^GLjWc_OO0{4Jle4(+^trIljfsv^xzRhg0@=JQF^2hIgMu}3CxdiOk$AqBbY zt>BDWXmO20cQ849gHk0sAqYsari!KvLz6pyg9*8_rcBJ4j9@F3a$%PW*)E zN{?EBpG=%o&s?4&Ie@E)F;$#HYuZw6sN)m=ms!$Nla{sdDJ!hk87x>3RSWA#cAFha zTWss4j4AIEqRcS^j3M?&%yI$NgW=J3!Huo%BB7XkKgzGH4=-#;lY3jAD!P5-$6I@I zW{fQoyAxAHyF3h}?#Ur`mrQjNYjz=<_3fv=CJ~)UW(Fc{D zTt9wAvRq$W;jaf3?ygWW_!7OV0q7FTy@AdK`C=w)viSZVGE5l>!c{lO^Qf@7>S{E}LL3fwxtWD}O<~)W`*_PL`9Z z@!bmJA~FZf4v{vK^=9KH#jg>(woJOxS?(^FNs-*kt`=hc)Z@d2Fe6FX3s6{$2p1`5_$*h>2$lt2#8u3#BnNF3KT+x& zd#ZFnaaMcjRo7(C2GcxqnO0!^uV$v?m$FXnbxz0j-FB^DFw9~)gu7Rpa@{7JfQAhw zWthh}2nNQ~40H8uR<)r4`4gw-x9$KC8>h7>7p=-)XacE{^^@51Rdoq2^!g>_X{J{U zeGES$U^hA>TtX*iX%9x8jk9bGdWLjF@scih($1-;2PikZITF#1!zF$V^j#iR;Ocm? zjCE>***}!E4C^jApDb=~h-F%~kD-^Trav-bdpx^{n$b|4ImS0}M5ix|cbI*ra5O&N zh>t;vDyp_0kbr(GXE@XL}64Lz|A@T_}0`67#cHJEToZ7Bg!1SILg?F zc-+o^BJ;YZk_%?q4~Y9nEDO}W-^iVQB;Rw6hsHbnx;t+pYgZ5pGn?ataz094s%fQ( zfs0Q=fZajZ(zke&5+KD-IE_bX)JD(3{&_$uIIH}ynZ*AXTD-Yz15Sg;``%bani0unb-SCwgT`yO*L*4F1FA^NnPG8 zRx8Hmhc&IRdUfK)D?O5Hc?@DzVIb&4&n|2yyc{$pqMWXC6!N{Oz){`vxF9U6#<#@^ zy{h0xm8{s7f#$torT;z?lC@;)1USP&oQk`+DociBXwHfr&X4T(?kq_}WmXzv8J89S z?9F`B$+50;x~56wOn0CXF|8kvs=}@^ue&S>fx>mcpAX|XZBuC;MDWR_&~r!&xcS=w z(QGsTNBk-Jazd4g80csY%(){ZPcsbcMEUJtOSBMm`VnI|#47uN24Yy#d*>OMrnB@; zogA*KRG{}611pWf5|lU)2>vMb?^j-zjD()%0ye%&{P7wU=bsCt1Zfnv6iZ&B933^ghGoyz~262O*TzCoK(d zhgBKEj9H+fxT}3rMa35s4fw#J-L(l^jDl6Dd=u+?CagHl3F)dSAX65{=}C|6p_3LZ zyu5R^2Yx+{KpC2M>U>_n>dw3gj1WeAbr#oecBR+lOTdTxO~(TbfvE)ZZH4|uWqxd- zBR| zBFo0{NyYHZ-ksd>o-F9GK|LkiZ<`JOl(gelt0n~^^{;)^qMaRYnSSA}ZtmYKln{yf zXYA+k<|f?%diSxO4T)&o`ZIWATUreh?D4_mR-e#!7qRrn-_<_(;`VL(lFR5w>Zt@N zWW?@>2Bo?7GI{MKc+JyWN`|2rB~z~8HO>~CgWk(_bkmfYk@_I;}!FJ1mJC1O(|-d zGdk~$X}XJ3X#5-1aRHkD*ui&L{PqubWwArt{s#!>x3S@0867;zy<3WffE&GhUH%)v zD8YeIi<=I4iOArHUtzH&{ZCU1F1?Mi-8Gx&KbKpla-Vgn;swq9m2qwpRqsi;Ied>T zBGXS-=efv*;a}Sv!@W^{DtxjhVw%`{^=YsJOLa)ks&K_Qm`}=H+1nrs)uiiYJk|wm zN=mpWtahneF34IM4-i0FjovtRvf*&=31YC5uFFYYwNiV~z`JsM}Nd`L=0GRhMFT z5-?ktIc4~onHB>Rm>@o~J5!aQFaEKaPwu1TFGQK*9XV81>g?_1W;kQfAq5=2JTt71 zEZm+n_nL+qkq>Gm$8}BksVw)fUdb&b+8I~_W>y;J*R&1uf4XiwTXkMwuy(ywM4u49 zpC+qRgkE1Q95vd*LYOx8-|)SUo)od<^x@{;aHA*NUXB)As&lw2yk3HpRt@ah_-3Ly z??QF!RZaZ9FZ!x!J31R0o)T=y&G>$lvR!<}-0MT|?TDq69Q_K;si9UVangdb=BfHA z`uakbtyD~jM~hfTEpwzebdBpGzDcV*Tq1PIovD-pkuncUe8NP77$4!ecG{-e4X4>d z*-pOQt8CBFn2{>^uDo-Q8MQH6?$%X7QLX+;l(l@vEcOc2fqAUZ`D#|z%VKtIm$=$`!11aql{PvQF}Z*1Fn7jGuORLl)|^>DvdRbMC9q@ZJ;r zL}Ya-O*%KES`Z^QiguagHZg`+QpgpmO%Mw7-ytBKXB-NPMpvST+6)S3eO_y8^@WZ- zo~z{8eny%Se8LcCl&f=jR)TsCVJJ{lxkpPHj=TZfWXAL`0X_+4muA-YY{md~TmIKb z$-Qmbh1l7~qC$%Zq&31?RNi)&2v`S`vCZz7lq}XYCTB|Z#a8j*LQHWVM5Tjp|Kvvy zIbn`2y3(;U*29C`7jC_*QtYjDKLnvJW;#!z9u3R3zIhL?cVzgvWx7$5KRnO}tP?W# zcFQ^wq)>{H%{n)i(zS)GSUA{!J|DG*^PF%kzND}50 zewihN5L-(XQXbci;qNZ}ilD`v?<#Hf6^>GKK^@qPy`WX~U$Pbed7RrOv@Y9?rZ>e|oY7f`h2+efK znA!@?VC1-6*rY>f&8-_M=P_h0P92X09iqdEzKeFc+{-J~ImnjU$-Gjo*|NKpR2iNV zI|UwHkG$y-1o0?DWqs1EN{^g!4|~@~wN3}?dgp)+wMD{&`A4N zBf8ul!nl(LqW5%xm>T)%$WtM7#gw^cmbfcQMlX+gDpJdyKZXb5>9qkH0=W@`?sR5r zbm?Z!C>FrTK1JgGvzpQ{et$NK++z!Bb`&r?X1<-WfJB6-(e%cm*GE_gG zTmj5v0XPE1PDlajW~~81Az)1)(lAtu+zyJ~`~8}2s^TT>_1X*BG1T&x2}a2|i@@#T z&!)h;vr&nEOC#oe6v+rvsf6c?=MI$4M{J+Y^EE1*v)dB2S8Fi|rUa=hT|Df1nZK1n zri*PQ_Av%T>=MBoyp!ufn+HYFftil5kXP(ph(f-jF5nC*A9|Tr)V4&7^F+E;|9KfELpSL&xG$#>}-S8L;S$e=L)RSBE zTi>_0@#H>Gc3+CzV{lD6<{xq8$!e!oplnlpspI*~$=6T$3T>x2m!SYX8S2J@9WQ~N zc!L3)&*JeL*nnQCY3#V94ft&HoZyN+*7$z|Tr^y^g%a>%oyk~PN^XUY=p>MjVQPS# z1ZvwQK$?uDyug<41O}JW3LDkyKYYQ+;T{bhVEO-gBP{Kt*-|A)7U_}Qwec1n<9_Vq ztfJVQ_o?w&5DEc=jLpHni`ckdIFGgyyuachUCZ@7hn6!6xVOC}J#VgQp|pO#bHX3= zl@5zfp!yQ$4#>e9u8)G1bbc>ac`$hIF4RDbeqz~SaG zUs37{<1`kNe2Z9Iwie4k@%e}%3k13sgr^$spqE+y=4ROaRo0g}C|8Q+%-MwWP;A{#fLX5B1J6oNH(>eMs zy=WG}pTUVwJx|O$L?rij8)b!bl8EmDS`bk+l8!%f<+XZQhrz3mim1!3m@@JgJSz)J ztaLTR`491P7tv=|7c@8Mh_zFpNWzp@dgS(Z7u|0X5lcff5#}levtBU)QOghTyznN< zmHhzCVvz?fSYE}-F1KoBK>?-y^AVr0t(IT>^K$78vzAflO(m8mnYObD#pm=2bZHFR zRwQM=-aZvOK>JA`0>I`CbE72?DWnn_pQKA!K<{0^ETOR%ms$0#XD6*Fp7WN`YwelO z6Tl?fQ{MyYG=G15VJ+?YF1i|nd2g69=G2opQUY-d%3YejiJ5ex5_9&s17^>xpa$YK zs7huy{TzqETO@ea(f#gYAb&xoN+HjAq>-)EbQ=w#qD8H+FwwLn`=ugsV{&|F7zt%6 zp%|Lk%8)oRRFKjQDIt%8TAxV}!?v^YO|};&6W6+3G(*O81KD zPJ=Y(ilq=muyBGk^5F|>w3kf4DCziFo*9Xs+3Abjt)SsYo82@Q%4^OxdLBJu9Ch>G z;zmost*>EGUpARfDExlf$Qg-cL|cio+O(K!L-8ylj#2@H)y{E(@}XCHIkpo%5E1*_ zx1}zd=9vtvSrt`4tZ(d$nl?PbOU7tQf|`{mQcwGa;9_8Hk-=WhBqGW`lkc60D(N@n zUu*)4d)ug>Q9a8;M-RfXhLgX^q^i=LMqs>1GM+5XC@P_1|~ye8Q3CG044k7mrD6wa81Xl{p1;MoP^n4_Mh5+&XN?0 zOrvl2{rk*o+RfEMd=rZf;Xc`V@582PrPHUn&7raJx{RjpG$*Q|E$)0 zlg{6@Ja%~syCie`JWke!nydzVA6es8bPLuEpor@#1y31mdxfP1+Iif(YpE@y!-0nY z>}Q;?(umxX<>le9FZV3L++5P$6G|&hE;}Q4Z-_0Vw!+(~h)y?qt;l$#3CEnxHD7%A zd_RQAcZ7Mim?Hm7&hx3oAyhE1#rj4~zX;Ednt0HJq0H1`94T12>^0b-&Px$aw@q%O>*%Qa20Zwm8khie~R1+4Auu3`0Q82RIj zLh1klRh#Ly-}G;=e0VVn7RCc}<#~2oB%(lzN^FMe^a&1T`z>DId^Cv^Im0 zH3D$^dPRFk*4>K_V|(qd*0M2^7x@dywp<6F&OQLb z|4qkC<}|T*ck7?kq)tnz^2;e?*`UTuK2@<~{V?;qp%d>DJ7c`9dc>=&nnL%hN&KEc zk2(*GgG3-Hj{~+??iY2DMfvS@*^WvFGB>v<9EIU0YW?LwF4w7(I!+mOnIq1)O5fry zZu{Q%=U+k$7Rnmr$Zp@VdN1;u`2cK-1PY49VAk1cwvd#Q1eV)A*k&S1?MQ`EZ*#1r z=k*6!zB=@9HIKQjAD=cQdlFZlZ&$v0FOH#&M}~K2xjHmin&Tc|f+rs)V(%@XG2&V> z7DGrVNjaAG3PU&YG?K$QYd*jaErTP(I(}p z^a%uX)|!;H&#uOIf!=BwHB58C zhu4JEuKM(3c3chFG~>cISMXE5?fJPq8X&bY58`jd5aPdGPMtyl{Q|!F99Ae+-0EEi5T|NV1i@&L1|1v_GscKMg} zm+6alzveeu=En{uhxZ;yKQuW!!YKJUWE0mY!uKA%gh9>&bJOxTcljWX8ml+Wcj0Lr z%;vpVzlYs6r&-*i+J6)*EXRZEuf}ex%1$v4f?xkKfxE)A`bhd_2{VhOw|57PON6Ti zu`;mH7$4fNqgxte>q()yA0KwBy|?e4qHVY;XH%Cgrl4<`)^Uc$=FJHe4B7R^!yuvJ zX?(ELy`M)bg_zznS>EYxkZGyw(bpWLSIyfZN@>XC?yE+(&vS5_ZEk{Ony*1OFZu`+ zCb`AyJ@XGT;|331Zp!e7sG7_?x(nYl%mlx8>;f)zz0vAe=?07{rqXBTD#V`UAz8*! zh^REa7*-?T*M@T0a#7t;O!jKxi??!LB?uS;HAnZC>KcWg0O{7r6sd~%CC$%GvuSE@ zB3bIb1+K83vF|csbPJb)w>k)_y|_9k=<0t0N-qFiJ6gG{^=DoPRiSMgq6tVP^Xr6F z-MwbJqW|Yi>yHZwSh|$b-}&J1#px3Ofq)2Y!*s_~!#0tg3r2b(fIOM6NxetdSb6P4 z&4R3aV2$5n=)mxiV)yPJea*jLh^8}TRC+y}d?7lU>UHm$J2l&k0aoIox-Efz4$4T) z4=ppb{pM;k3H*bJ_jlwa3d1&0>T)K7z9kaBS(~=rLFa`aGkR>pYNZF1Q8*y#%(@FWIfv==(`VK^NwQP{eSm!wJ zvSun8O-mpA1&9ZkfRg|za=45wKp zb>Yy7&?=hGP#_YdD)r`~?B`p-JSo}w*1|1+=+zgHIR zu0GGPYSftLYhjXp55*C7=Ql`ss!a$>9b(A)6DzZP=ZA{4(P$(x@hpUpvM{O4-fdZo z^&u7wS`xRN^)u+KSpvCR5Jeova~X80kpwpQY((-vfm2XmTg(?v=pT)aAWi9#!}gJx zCMCIA1IQF=!7}4?CSR|H2wPN!MWZ*&0D@s*>4eaDva7ZVKqo{dz$cxW2emT93t)Q0 zdB8G$KI#)W-B7;4(kAb(*6q3D$gf6^uXcWaTPv;9`-B1zGnEpTwTUVcn{BpAjFchY zSPwB9+lHkCs;HXOseGhYu|1;W3$WE?081#HFNG$3;TdrmoB-=Ab8!_3A6i9HZfsGH zMC92t<++Wiga;j2&R=~_f5N}{dPqGxpI{RqP2%u>o}F@gNld#Gv+{}xi$;0fKJN)* z2ioxJIhI=M71^HflRqL^MZOA08VykH{j@XC;*cxG^z|)k?Be{Cl%Fk>l!mP&IqDX_ zsX5|R&*+qN=`Y#r@`DchLOi=D$7h_#RgZIzV-}bE=`Km9sZvl}lB)ahMfY?O<7|&# z98&FgE(lS+8buE{0zFx6XylRKO!*`T;z&2)?$MxsySMW~iinA#slPF?35G?BR;%=H zP3UN|D9I!L^92}}75;d5@QF@yOKwL>krbf2>nOiy zCYM*Q(GPZ6-8k|s z=JX_UzK9gH`i!4^4eJ7J_-?`RM!f2Geh9hlQ}U8|WRx_IZw5v}(;Z=A;-+L21S(pQ zesFcUH=n4G9wddmsBhMb{+=Q6Tf~+0GFuq9Ke-K0pL@&H=fxQq9$t>nTI#x)8BWsH z)mo@mBVw3!r(3C2{F;K&^ta9r-wbL6+H}~%?il~}o0iwE1U2>XXf&_UUcFDLa%F%h z#qfX)p(5#r#W?i1C|=fI&yO&$2CqsUR;H-SW7yCQ&J8I_c9j|qHbi^YbhcRr4EXBA z;pnyw$2$Zki>1rD=uH!+gnSdw73M zr+o5B5RR4bv;#tZ_N)r7WQhNg92T9WRe_ww@l-_t6p1W8-Q$%U`0DtL=(lGcl~P8v zmAb@G+y4#5@TZhfH%bxK)2t;?Xv9Y&3{J zz1v0dmFllz=JV2;WWDpB$LBRWa85G@H8?3=BDXt$jq6BpC5-LpNa5=r&Huc?J8ii| zvBjQ{XH3sClk@hQ?_-p0BV*A|m`W!IE+Dr-_1wLvCmsTK(X5@-G~ZTQmz;Cw-#W`2 z#ht%Gt**}Qe|m3o)?AdJESJA-=PSFf&3@TT&`TgvxXZkcU6%wEacsK(wT;Ba;aZ4@ zj;0_ozOy^i5P8)_5?bR+ru?B9tSB?VPs(Ku#?6%u-H#jLI?>}{NSDfK?^Ik_Na&zH z!WF<_J=)jrM{tqXD%fLMea1{biQ*+KuO(x9D;@b6Nra4G{?ai!=pWvM<>BVk0)BML zOnOc~S)FIQVWl2r7R}nV@q~ur=9$CrHY#0F&uR7ibat@ws^pVwcydZ}yU_pVj=t+f~1 zTa)YOJ9Wo(_dl-12mj->gsB0yum`DEe=>3vO_kcC1?`n?{%+*Ex!5mg06kJF=hMq$ z^VBJMr~$t(zR&P%1Z0p?Q!=H1)X_1mz2Omut9&awpD$N%+TnK*qeU6Wb5Xa6>%fas zGjv>BKdGYi7*R80G-lf6!-~nu$IEA=_m56Q1`jcfTZ9a&sz-M&1*hbu9ChIHsu;&p zUG@Xc_9F(cal0BxC7|@y`)5BvXPb45Q{I*=)wX=6!ZF$&L0r)qO+K5uina|te6y)N zoV&6?=<3*sc@?~e;c;Z?CfO7~$&@y7ZV4LbVfVy#6K?Jq;q-B>Mkm|vzWwL<8;qx( zNJ-!cUF})nm>TrWC-ZaDtyb(nPr*df+sB=2_hV&k-tu2^y*M2mcW>~YmG)BwK$RPG zziB>X!T3rsCew4K>xrMwBA#!?Fk;WK_^ONvUoZIr87#u}Ah=p`J5S#cTbBkZkp`Px z$H%LDBJ)T%J*q2Xdb22YO8uQa)4A635r5l1<@UZk*42*a(0yO3oZlNA|Cob#9ri-f zZD0|1&*u@(3vXY&>1M==Z+}v+chNT*I_8#`MQ3JRjXZ(#>1uz*-kd2RNI0wP#&MdMDS^01C{UBm~(L-_XzF5ABu|HPv5h-EH zmWJ*p@6tTc?VeE(t#d%M6dFL3+DPc3mpH-qm7P(pn;?Cav`>bM=?SFyHpR?}LOZ+u zivM0NM)8^f0!_%OGYUWdB1_b^_^gn{0P9EcfPSYSSI-n;D)2g1Ll28Ah<7*}7g9+*OSobqjBxhXKTnEomEqJdYP zqlqH(@>MNc??2_X;3Z3+$-S4~0C80?P02_3SUkd<7P{xSZ0u2W)kYa10yRp+2+-a|^oDOi#`4t_e3QW1j6ij2&KwKwkV$Rnb z-moTyF@)!Q)sS)z2OfVq#?4+bS1dK>Y*hhDsoC(T^M@}NQlAEbSjCrt%0;e}7b00o zB}I{Xrl~Tni);ysA64<}z#^PjtMIJaxm!+gzEM{aE(JYcq7>qmEMp?`frIMM(|mm^ zgYuZ*<&UMvC*JKB4Iu?jGRchK&5Lt4w3Fh_O-0qN)i!DcpmSGN|NbZFGp{aXzb%a% zrNPPkZ@z3<=LzH4-9SEfw#P1&Jb-oSxnI*Z&5xa{RBY{QM+L|F3|o+`tC_ zgz5hVvi`?8{r?DL{cj)tzksab?#_~`&PL9rB>#4fko>Q6_`ic&+5b;Q?f(L|vj5M$GfDiib~bec4q*)(Tg=qh&cyUT zcO&ts`SW9}K@Q0+z7X5(tFt~+=S$s2 z=vT0!z_Qwl+`kw|- z72`7!9|o*|1!tPGLoje#iFVXYtXU3=-q>Ab6@0w4i)ccD(xXHc2tARn#D6#^yBJB)|2T(|BT>5t_WL{LGT*`+Pz0s z{sS@58T$J*%(yJ)%gDl0HIY-5EB}tSV$sNu6?SaXo4nBAdT7$StKUnFT&hF*RQ$H` zr>=kDBalR;F2r1)2<9F37@Y9Zk8hSTB=>Li^*+0Ed)_avOxva9mCTFJ21*^XPgJWM zRkOd2u8w(HQ;7GniyH3A()W2U&72xr*0uya7<<4n#b_ zbUG=bj+Ftw{BPxV<*(A%?ux?`v~tIKG=d#}=+&liFBSpyex%*{?D<-Jm5HeQ zwtJ6m@u8-(zdi$RHjY^5$7zLpmDh>oLz~zsOjcf&Z7)^J%RaqLhbfyDTDk`F4y;Z3 ze-}@;k=2TxBSu~{H&_i>NTBt+qqAGQ8K{pQ>}U=~yKHz5jo;f`-KeHNTn_QAzDt)` zy+2(T&+t4q@qmyDx9?5&&V{a#qE@?-Z%)hgu!(#jzFROA(xL6|Hx~=?erJ9{)?30- zT(1w9@2`*BLV}&KiY}^dmJ7}IdT1)w4r0C5Hfu({x8L~-xTxte<>5c*eA}-7C#>Dt zEIN#MrW(zZ;l!(V9{OMHO)#N_Jw%xB9nTjOFL za80p30!Ou+SBOz>af66T#Aa&~ge3xgkqWPx3ZTsM1A_r0HOXlp1OwhbqE^T%T?gIA zy&{M>^GMX)hzEFi)H(Jo7&~Np*0DnlP{j};pZw!D>Am!Y{R zhBI>I-@fUbSRP&_Z)QTz zb}ws~W~KOZv)Hg@;ac#`2@q&*d=i|BdQNNQd<<7+r__kh4A#PbqFyV-<8pyn8QFdu zq&i7BNcg?eD_UVU8_*^hAQ!c1VPXaSvi!93ttDm4_*==aZ-u)Sr*Tp82S+Z%9$H-E z&|=soPMeR|vPX?%8Le26RLotVC)qx;-ZlJUPCqeg4k47fU~*rrvvrNWSsK~qK*k4f z?NGYwV*6hR{FKJ^Y!t`RZ41ZYIbn5kHQnFAvn3y|*yc#3-#~*LpMDDbg_b`p7^u=@YH|gQ4ee`z}nG*hp!}KxBS9nS{J%R%+mw z>O^#mYvLdz<>zmD?bYBq7)8K3$z&gD)4&J?rt)%wZPH0sg@p3Tl(e}TNoL|EXf&!z zcf6MW!gi%dyD7jZ0H0lV#D ztp)jBJpfwU9y^vMVP^hcy4@eltG=_gKgODso?aCdEUSr+hC{pk6`QeT+gLw1^MkA7 zu$ukM)l6uzzsD|$^X(FeIg%e)65g|}!{^`g>J)FBCl`cFo(GcOf_YLrzmW?O$b>wV zF4aZL4qr}wjSkW;KY6#F_n7(K?H(e3i0}+jEE=kl*i#?QN;%jO;lbAFZr1HdnM(2& z0I8s@JeC^nFI9TsOb|A@>};IoY;k5jS0uYPf89gKp`{}RHK>(bU6UFM?!#jVV||n5 z$^Dm%$xE}l*+9A-{KTPu8T@f2HY$cfC0g&}`(1}YsgTiM{yc>tcU&&7%U$Kwcufyn z@;>#m*S$NR>XT24A6|Gs4UF`wKs#%=wIBlkX0&e`xo$Le&|*=I0Z$%hZ@?K;tS2Pr19vJy6&3G&ILx%9smn4jm} zvnxVFM`P=mjyOO5*VLCcj}qY(s;0n?sv2UA5ba=NvE}!`G=7P~H`MN#6wIxwlrVc2VQ3q z@7JK_Z#N>A`C}pTUloI}cqfNnPd$p9f8wLa%s)|Z=n0C@v zSy0wt{1JMoD5h!)Bsl~ZvxOZo19m_UvNZ{vl-~8f z1FVTMTF7O)tOtBZ2D=RwB$RB*b6R*_7^W8qIFXJTu zWqY!-lABf)`|*AE&1VfWuBfb)?AmsmgzCe*LGZ*#2V`$h%KlT=_YdCEK5Atl&oas; zGJF9MCd=)`;i$0hNqkm1YhNr$xi(X&R~!mK8gj)R^s9`3&kMJthp?B0sT9KT;ew## zKu-_>PQX(zNjisV=g}qWX9T6rNmv4}7&=;632W1Xav1Ld?Rs1E+olny2YtwN7}sFh ze~w9S_pp)aNbIAJ7I~!LQd@a%qKced(uzslqoA^f$QV5rpS42{@0j}x*wMr9_cND~ z;)HQO_r<-CeVv{OQz9VvqMTAEHw5x6;i~Qsk#S*!(gJba5?YxSE3<^-%xNKv7U{wP zp;;Qt>Jk<{{=(&^TN`VPC@Gc844k0AoMBI(*LE)|UM=_!>Vmiu=t1VnsP(pEE&x_- zf-Yon9MBHMNUow4aK`GcKQCHP2S>Kwe4LmCABTz%%Viu5zJw zun|ztZ)0T#bH@Km&n~kOo6g(-vP2)X&sI6}LQt)Y!dN2#<7XPGRRF z$xwXStQw7lbi_tVU$W$RHT4=4^y$Hh%2GqV3s#KNqo(=m-QRWnS<_UOU&(_@3T)}6 zZ!yd&gm=r9-D$dEX`dgrcbp`|FI0oEKTovx&S*S2%3cWWc4XypFi;HMHYB)^w^O__2rl z@J+he*!&BfEM9pTP=Hpux~s1WM0q?6M4cHrCH?BRo^k+R7Ek^7iV(`XP=DkRJg5$E^aO_zVx83r?#xmuA~64iRFfehVEs}D4-hwZ3J0<*r8Zjz7mERru;JmcUBaQ$`Uid;+Myruwb1|xXk{Hi;d;jrGjMpiM2 zqqS19F&jJL(CFzZQ4hBHwhJi=)@no=fJ64&H}vsyB>Omf{u|=6UBRt6U;D8_^i9j5 zhIk^dcFC6h12*ojt7pRU7}i~BB!L1}Gy_UGB3CauLL@haVVRRe_QDoK5p=_yvFr)f!M98{@^Y`bug zs!bq2AXor^gW&#P)GL#MgYN+sw7b>#10$z&){6ThBjz4~=T zm|!${x;ocuww63@EITITe~|VTP<1uizGr~o4k1`@cemi~?hxGF-QC@TJA~lw0fM`` zySrPj$(56JsL_R*S@!8AerAyFOeh+I%%kH(68Z5tTaNb<>9}p3KfGe%H-oYv zGsvqD$^lF6c^GjnXtgK%Uj?IciyOSPrxgb|1F}ffOfVsbV~b5Yi5zZ zgQI>$fOdBL6DsJt?s*%}r%S+km5b}18ZUAfbpK2ZWQ0X=8vhw{=Ty+D8UGj6IRh~Ayt-*tRAI_J1^sWr^<8taP zOSJiRT=LC;Cd;XKLFYRVD^k<8S6VL)dM-0F%BL$58hucq!cEa398GUfA+4mPl*>0X z4$#SFJ>_V@8h=DkMN>9AD4@}2PZG0Bs8Y3vg2eU*kG-k}5nfC$LH^bm@>V0l@JF}! zn2&s4yy>HsdO0f;GYUzCq_2mh6eL)|EAAMyq3)}?`*webGWTXy`N0r-L%G>MX0oIo z)K!R*mnSl>V4bJi0dOf8Q88;C-BTo;Io&k*Xw!0#5x1hbY^)1P*!%FkC{fNwJeo&b z^Jr9ll2gK`y4441iKH%TIJz8D+?7aPtYP$UZm}(5(GN z>9s~RT%Tv}Ial_;5tq7ebJW8)e}Qms3?2fiI(k0$#ikGjsTA8xjsJ}eg5~{n`0>0( zS-*(eXWs&?4PhFuU4K3rtC6%~v!fJ!t|j^R_=YlHp!oph*cm=n@LF^;j$g-ijMz3< z7x%~6GfhRDQ)JfNDxW>7B2v|1mFG+)6YMjI=I-lmrBeJedWaBkC3EAWfzy2b9yrjB zPzVWzl$q0gm0$BKCGu(_t1Q1gGURIf3R3}Gi|089;)rJ{z#~A6lXIV--qZ(R&ZBb< zqpjNF0CNk>u8|BWj(b7m(YeOoD?gEYV5jOEWg*<_v@&lpK}Klcdj;5h8Ih!;tZb73 zCo(s}0llckpEv+k**BVUt$Z@nJAd#u#7wYlJAy2x3s(2VUKgD(&ZxZ^1 z3b-McjN_E}y>+MekZVRyJ|&`Z%(~N+`3*gya@BhC8*YS^Kta4e*D;w;!M=O??6t^90JjbOsph{ei zkBE8I&OH|o4D~hd#!$T>a|G31PXCD{AfpR~7TAq&ATK2H!+%eM^mF34i+lK(G;t2G zrwjai7?%aJ3?TTlF(J&U9&Pc0HMxk_tm;ZUZ=maC=T>kq|IwH1LTO{>m~7#nf&oP- ztn)owb}RemRqj3%agu@=r={YKpeTN6f%Q81Q#m1qg(gUhon(YhR6tsNJ4mI1_9bgeU5SRMq<}R+|c) zEWe+ysQMKMw&VLT;k6Y}I`LR^N?v?r4n6beFoiw?^@ui@Umn`jUP%*Z%ES-2Rzme1 z)YvzjH-f^JF?Glu6aX`h294aT>q0OczN2+x^NWt!tT&w90qiPTtP ziggwYm`eEg8l29mVxKp{uzBrM4jQjYe-S4t=&=Z(M#FDVb@ zoO!;wA4y-uu=VkeIici{o}-Ck{Zx;3(zB`I_7wi^QxBi1y&v< zlp|J?85rH+O39K|4s%T^U)u=4xxG!a-g~!qD#(7_0cB5?Nzg~Jy4vZxNKD*pdPG|c zWxl=Z_;mR)N~KEEIU`!4U8~YhNo=C78=_E!>UU4K=A!H5tv8fsgO8faBBw^?3NlH{ zHFP2|voldz4m3g>J=ME^Oiq}Vv&Kosf zc}^(L7tGvI6HfoU$1_Ft@)yOKjop64a;#|LTY|ApLS~b9E9w`VN*==X{_Ku`VmuGV zlZaLS15pJ=IfRJX(-5S)03I+Xro$n8>x;&NPW-vpSRangbD1Xv8^D*g4P{=LXK5U- zvlpakp1W#;ytFe3IeK0M9t;-3oR-8E9hdF+r^(A?8|Bxe)Aja5!;DFm6zpuIM!cr1 z#Sv-Kvd9*XsvQT#Nw3f8bSdv>kl3qmSkl%*cW34rmV}foXm4UAIe)i9 z--YaVG9~NUXIJ=7-gR-w-&fc;=?lleyox`C2D(4bn;5=bM~@i5-BM)|Z6Zh9k$)nv><#+aR) z!Wq%7r8De&t#g^CFa_k5I3AaT}wiwyVK_Rmi@kvS2JmLfj@m*YnbdI%?Ad(c-YqO zq<6c)?DJxeqQKkPEkxgxSP~#|Y6&(@D^8t2+2aP8zJ9TwAYJ?PwifN1^v_RDHNWhS4P+zg>Z*;u!_T69YgQ$EWG~&< z>c&|HMSkHDU9=QfP4TE>C{0S@JPwW^^_-|zU7j>N?+}qga1&TCmdN?Z#_iY`sXOzG z5QEF9>ggvPgmyH3Y4Y5beu8YpZG2{*e`geJc++Kj0g4W;u;jDTlyDsbCBwCq-``#m zDOZ8-u~Y1FqiWxR%0R0L0<(dU0O6_ZH_X;!G8=g}(g-QxU+| zvH#j<`cp)~W#O$^`KQ;U+nwx+12+m=O>qxb_IKh@g&^k9zFF8$Z0frVZFcLk`Fzq4 zeSNu_Irg1sYj34Lth-^z8|m~|!UA5&TQW0!&+6cJ@s34Z*Wt3utd5hM-UY7&#zd9WMUHYE>LY(du60aKvLmU+xBcJ5Ot}LQLnyh8Y-}gljU7(lDS)nTd*2yejDV&N(S zWk(i%<^t>Kz+{efu3uPVkU~}7BMXh}2Bo|X`T46zl3Z2sbn|B3gxbBAl7V>( zoFqKS%qnEObHy>VQ zJk7F~-pDqWMIKF#m$&arzURp!iHnz4XgsGBJceHBloY+23~0zB@){FDT)OZ<8EdL? z#9QUIkDKJ&kARnOjq*+i8+ab+y0z3uk^#o?>RfQq+8>lOxz_suC@Vs7rJH&ptK17v zNk9F5r05%5Yt`NkBqo`tDctvP?F3kR`Jf)LzOl)H2o4v9kDzum7-cQs@M#1>N}d7i zQVY*_kHwB7obHLJZ;V#?bnYQ=^1X^@I>t>?j3>p;sUXgu(RxUWE!VY{8swPerfs+DJoOUF((0tb%_lMyBX`0?@A!i z4bECN9LjZza}`wiXL)o)OK@bo^AO&zpv^0Fq4J^l9Ln=3dN0he8adj~x2hlU6H%p2 zDSX5|i8(~r!N;`E-dWT;g@_MxQ#<$W%DahvY(ZruyQkq*vpcImIL0 zd~@;(;*n-P@(-+R%FGdR$5}v-e^N3%3c)iYHD-W-U-bbi!%(oVpH-H7z_iN#A zoaxx>;av9^i;*J_l)g~YseVF%Du?2BiByYdxKGbx#B%*_I@xD~BSZDDkjHyYDGmoB zPzPXRqoGjz029IrAn6PISE%I zNKd|%yw7lY?mchs351vUXzlBo4bC%~DJhvkcqq&kZp&ECviAM7iEo zES)ACksndh9N>o%}g>U`!uC4Fn|odu*+$DdQb(}>aE6G^^_4q zCA@c)xC30y_HZ(iq0g4Z7NY{9*Ph1}9(l%l$M}Lk{J>YW?JmkVQZnmxrM=Tz$4;@* z^#$?uwsOP!v65j=a5fV<_vq`ay%{Y@5$=As{Y%b-fOJ6;PlT_mxz;+SS!gV} zBeJu179RD75jV?*=MCOxW(AExPgWwYb`Mt_K2rvlz99qKbT$d2_ZBtDoT3LOUP~>j#wuIxpwig4 zW(A-(z?Fu`GwTBlmqPk=&WLd&?ix@zHu&7{rZlz5wBKmtY8BMX?Y?vGZg$U5tJ&P)4==P5c> z>AKvZ#pIfDJ{N@DEYHc{Z|28m0|dl$+*$@@hdAWMTDk!WN3e; zeZDJEeaI&x7^QC|{|u0C&lya`p?ZTW?cd3Bkh%spMxo}gyj zT8Gh9vN;6U8;tX6)$t6x6JD3~dz8>KWLPdFN|yWZ!VCgAspLYvwDR|*RTjVEao9P*bCn)-Ci62{l(W&}AvSH+ zRO9ZwuVzYXBX={HwH9FEdW2V33Hcs)-C#Fc{;7fKjG*{zsUC6#i2YVp$+GBZ))NEF zs2vh9EHW>N5PLS>){CS!SUuSN(O=Co&1QUuP0IvKxbag4E%In_l7=%e3#N<^DxJYW z3TM2I#d3BW=na8Cis1&0D2nw-JXiz2582`$!q9a=ZO%YbvuOP?Mhb#!Dtc50;yHW@ zZc_QBw965}_I5W|VhJ*+xVLZ~zEq2(I?}v-o~bESdFOd{sg5dI}yhqWU`r@PILd znmxPByxo~jhJL`V4G?el;jj|E^k%r5AQ}*xL+mAVcC^EHl%b7%a{97cezY=gF0}8< zu#Z*l!Z|0Bb*t7apIJ8AbVFA4`chcWgqLr@8AZNM6nC`5Giq)Tze1|HCjMn7bM{MS zU<*!vRMy2OhT<8kcaw~yb#&x21z@@-wz0}7LzW!~k!u=MtK6FC(a8PjDvG&^HN|C_ zHD4UQk%D(xRn0iAH*?x2Y;|-($ueDRgWByKrBxH3NfFn9+s0!LG;O}RRL8ak7q7%(r;BpNn} zRhCb~X_@uDx9Lft`;8Fs#XFM91;n4k5OT+v%u(w|X6f!N0;3w;osr`{6Z(hIjDld6 zE&IG|clWHmV>}F|IAPD$RL55B>&xY`_Q~4^l#X?8!NHN^&wkXUyqj&jd1KSOWl;_d zE`FD)V$U9hXYv!$207a>DGDxl0!j{cFUL7=SIkaWhl=4}cLB?hD^4oRxeeeL!#fk4 z$!E=0+E&=Hz5yBkh+nEcT|byC4%FCn&?L5FC7de7W^7`3I)pGS{a_{t9SK#_7)Czb zAt)w64={ZOdSeRl;px;Ea8a~!XW*73Qly&Enl2+VFviG-quGqqM3|lKiZ_#dY_Fdl z2d&ENh6dbmS|ugev=2g))+jai$yZ%TQg{l_&T(?w3Nz(oR)c#?h2~I9qyS?-0YSVm zHir`)1Svrc88qc;YvwTH#y})P>sL2`L;%%Y1jD)BDy98w2$JR|{xLt9ZD{>n=(=7; z&;sS?j#Cm1+nrH^C(+~H=2HWSSOLEOAHVc<;Ji#4rxk00xKr*f*IbGwRa|EEZk2#~q(ETxcJ(kE%s3vkQR_ZVCGE6n z4@>)VwU;K5t(;~TuNq5A?z+hjSP@=ohK*hk0YQ7s(^wc=wEQ#5#v~z#WmLl^29jiX z35B!ueQph0mT!}gtS%Eh(^&9HYt=3+@&v0aN!U6mrRZLUj>(#h@Bya6y!Ve_we$bTSiD+>!?NJLt zFdUB}98T!fX_SFh!H^H$(`wFO>xi+BS!_*UvpO{y)#Z2RR9QbO^TDZO#^1aS%U&%` zA0oe(tq;7NZqIvsuq7jTHi2B4#PyFI^WjF~e4Ai^e*SP6AfaP>Z*ce~^V||yuu1Ur z_MuB9U#}$zA90vdqf5b2R>m7}(Oe!jb>%~Rm|Yx#IjDsMc@G!NCy)W zec>CB%8`*FhIiaCPxSB+aKx3@ImE{31A?dpFS%1%hS3&l-Y?4doi;5_?at}M+b&+a zZVBxDY=ob}jS`$~S=+OJZ$O;0Xd&Z{bU3O=nF)B9n024NX}pYnrKzp>*~cv9HFKG~ zG6~c00{1-;Q}K@Rt@R7mud1~8yj1CCpJvJYc2K9Z=}+K$yD;8{!iOVPpHcyA!tdCE zWaBxhhCoib=GK5%Wo#>eu;YMbUK#!&qj&|wZ7_hH z^4>KIpo)WCVf8c@8Yit(-^%RZR!(BH0nSHU+|y4qECBlmQg9-iSO)wIVB{NRxivVV zhlh6q6#P`nRI88n!0h?QnW=@+C_Vv!RhAr6>Vh+YW|TQaBO5#;5pm59f0{(p+So(s zB*n(c$=kq*|mj{^j?u_orwifhlFst)E)f`7=4WjN;;VJ~5FOX%jfn7|XcA&HZw zG$Vm~%uLD*QK;a{_};|GMh}yxSySOQq6H6v3z0&(e2LT1si^38#D<4 z=%Hr%Qxo}3kCGJ^7&O`jJ5PhqcXM?A*kKzq6&;-JkG zKNGzDFAi)-^9%!ED_|=dckCd7R`_*b4&Skj;*Doc+qWCXYA-qhTi^p3^~3wXVX6VU zM}NRq>F=E|#?mFru71IpPLqxVz;o_f*2ptYRdk^H#(RZIWLIrBTs#mD4J@e_DkiY$ z)coGCud)2gV_=IFNpI7Na2y~d9LLCczaT^1YWT%O1J%jLEe*^>L6h!eW9h@SHOh&C zkE>w-_TcF=`7YSq9E#f%*Cp>SRkx+M#tRu3jr2aI|aHxe-suS0m?12h7vd&`!*_@`}M-(3#)@xjhd!!j6 zm~wIXkyXEf-NlT=8G>_4N>uS)BROO~##2+YoK3OGzxvg@0!khXld!p9Xs2ZcMM@ST zWQTG~3kZpEaTGZ|`o-3ACZZJgG>0SBm0ZXDXvzwJxZDBaP;|l%{tem$AZKts7O+bS zc-_yni6QunpeYt~_~VSqCwX{Vc%3DjaE(b=NjhMU0X?r2FD&O(8ih` zjzVek>-oHkU$7;oP)}{_fqO+sSlp>nbM;;6k9nx1b2P7wD=&Rre!RFzA!BX*PMMpu z^!z}4&93^+{7E(pG1}`2+SIDC?<&0ufHm4GhljLo(lg;y6ax1=6eT{seR-pRv2MA6 z@S4X&Z1SvVh{|XgS7MS>u$7R>89zj*%If=!=7Y=%T6S&T;7L1^bohpTg@xrOKQIzX zt?MFfWFe2`X{^{sY1xNmnH5oTbq!wG^tCSIGqG^#2zXK5_P{zi*IPa0oJ!bwEsOJG zyssr+8cRfPUx*+D>^)MDFNVo-_cuUDLrg&vc*P`CLg~5&ZTWrLKR%!DYCd!K_SQpyTy@pu~?iNlX|DNaN74qfr2;9}$8Un_n z3ep(d)pm1$z9l;_`dXE2zvIVh*i4+kQAR&Jek>l6V<^@kWduIoa6HLDvuD%cKk73D zBge5k+LDxMobIeUM`21znudP(_KGTUF2t4)_)3Q#9i|jFn%ciXDk7wM2~R>^xKF}g zVLDLLPTqUi(uy||ZKQnjjx!RYtJxX?dq&iz|=E{#dJHb-sZ~u-DG)&HU))~CMI0LeWlgL&aPJdvpV8| z-jDDr#XqT$OH1Q=Rtdws2Cdv%+&b@LT)q4&yr=Co%0m125Di59@3`d%abmjD5a3<=o2t!MKnT{%XFiNmyATsmw?U zuqcR*D0mu8hC4RkJ{NWRNF1i=E5=D=7@v3KVYX1{=NGOl*xknYxBCfoWr1Z<9E4YVPgnxtKX4)oVh^^C0@K!z@i5BLO3kVuW`*3C0(2cZ zmf<(`8w!SQYG93OwKz_sdz*Xo7V@gJ^$=W4?G^G!%cnyB?P1N$$d|uviExF z$b(Pe{=y?)s5)c|k<0sb+P|OOX>v3vhb#`45YX%iv}AVwi3a4AQU^pD@g`w5NXa~{ z0+FV11<^eGW@kp2c(fIhQpNRHl8+q)*07$2O0t_DlYzjROQ<>hBgvD%G;$P!oQk8= z&R}Q2*9uJdo|}WDnR`m`VI}1`hguclX_)|`35h3v+Zg-jhJ~92>>OzhCu}Q)IVMxZ zpq6wuWcBe&#-zyV)#5B-(jwx6QJIp~4@QnU>yZzEEoEjiUYT9cjFkZ3kl^#`{AD(9 zYv-Gy(_1)_0X$%%(^@L0ohkPtEBj}>xckCLJsUZCP7vail`jCB2M22V>U{Xf$>}0B z4W=)ze5vC*>&T~^7Zkq*1#4|Stx`S^CSV5s8H?gXk{yra)^u?9t9MUMV5XR(jEXHw z_pbwPnMV7X3T4(0hPjlxe!zykPhFS*a94~PNxx%AnR7F>&VNasJO>~tg%p@&fD&$txFc5=7 zQ<}di4+MCs)_VF`x5u1nRvA8_JerE=JHa5CVnCBnc23Cd`(s#6#e zo=dkLi!S3*e(z9_WVW7+1)d>!w3F-#>28 z%UY5gA=4-4RS)di(|_LrD!6TA39_T99Bn=#;h^YO%?7hF+?trmMeF z4}N_$$}IQWcU~7M@<7-T;VFLRdArH)Ygb{xh^wm}UwbJvplp*HDfIJ+@aPLq&+tqO=i$3Jdm9j|Zv7=l0-hlf-*tegp4LS(bR&GX&C)QM zWoL{?Bb@n<0l)$$Z%hzySTa<}Mg>R8`HepfHq+P0GI69DXE=-cLvRYf$7-LR9<*L0 zgaKwk$o#Iysu>`cEhXyuyCWRA-)v%-7NC=I`M ztU{`Cwd(ye^N_VC(k!&Z`ce>Py3<>%p#c4>VPsk-B*80%feYDM>nZ$4b$ejgN*vl1 zg^TB!!BxGciW~*oofnCeCt;Z?e{x_;x_%BT`^S7L1+#VX$iY&GqJ;%Yx+41Ql%?uszHSzyZ@-qCGA1= ztpQE3nKf`AaYG|(M>9t^8Zmr2AtMI^p!|B)j(_$7O2Pa$Z(1;P0(uTc{~Sp`Sx7-u ziV7&My_u1{jFF3+qO=llTpML;v%flJ=6{6R|COn~3;tbQhn>lZXLxbNdRRhnJ6K&wnN;YlE7=G>y~(4_ zLH0h*12(z)U~KE`c*ft1Zp~*}$QteWXGKt<-?sMG_a$j!do`D+-KQpNPUqE6+393m zWcndeqKvhLy)MB5`(ug99@4rl@+Zw_I zJVB@x+f)v~sUb_4mr__iBcLcDN{)lqr+5;0cXYah(_t2SXT~=N{sQZ+^jqvri;S-D ziOKeY`*jaS*Il~#|I)?(E!1aXV)%Ef|9idveX0Iw_WzIeBPcHPXUU&+jQIa^vj8>+ z7*mc$R^ryiHZXrg^a@5MW`K^}4WFDJ7*mWW@abgj4UO#ov_X6tBUkI(#%2LC@A-oN$#z$`NG$4XC+ z&jS4Y`DS3i2YT+`6bn8h^WPNEErBliXBiW)`9IqOos)_6pJnX$Ozbd!)&e~h`20;V z;{$#4Z;JiT>Hnly82)_zq*#F+|Jj$79iQW$<1w&t;4`rQ-5W;hf7SY*jQ{sq|Bs^m zEvk&370`kIKl&d)3NUfNXa0vuAOMU{Fq$-s4EQvxe@@244%8SU129U71H*@z0l&40 zr4evWI{rWX9T>HM(*CRSJL1zY0ePnr)Uy>cGBYuC#Ajm$s#+1agergbQ2WTYe~bG!j{vv;XcsJhh9QOj7|H%F_;(5aH3R^)^k*Zwe||Cm^~cBvoZx># zADpzicq;YY^Kvl(>McW$^VUV_MQMVl573JrK){jZkO)5tDE>g|(hdce=i^7F&e2sx zg3rYOg`rdtlIwzic>>`K4_Avn;W=+kmwP$5zklW)KYrYH<31U^X?8Ff%W&8mNprA) zA_**rgCLCUnr(lA^D-WF%ZGC7k`A?PYngXz=bm&fXgq+9LyO7gao!7c;l&gW-BTB! zZtv6KSbqPFYT!d!uz@Y`iA{&`dg_n{@-0<3^c~|U+u^Xzf)-QJ^UYNNf)cv&LdWVC{kXB?o#BX!66u;G+}`y7Qr6c zbiX#YqEqP|OkzrI$9qlnG@1E4TD#=H4+w#uRL0soc6*n}F;h@sIp1EtY#JDxzuL~n zJs24{?sifrA3%7=1cgNIZuW)W{@7XT{5+g7L>^B$v+t7QCa^PJ$IBPmMAgjp*s-t_ zM~5bn^~=E!8H;#7emE?WK9B6N07lLOV;l_%)g?~SO*-&l^1SrBB|*q0$_=cFq{Co} zAwyLB=avXh;piMgc()`^F=siVM_*5AX-D)v_Gl^Mdj-_TP>cav#t<$kk=UfvveG64 z_)`86nX3Wf8eHp-i&CHCU?*efF{Szvyngz>ge2!12{gv{5~I7UgmUr_vc>A{2-o;o z3ffQ`Vl`tM!IQ5_pAis=BPs+J(~^iDDyYbu3*&%QaF}NE9tzYs9%%$TE2zSXYqiyn zSrBV%t77B$Yk!mdJc+4LNm4aIQ-?CnkXJc9xy5czx6)e>CnQec7VgPkYZ|De%gi*W zdgBp!jZlN&)r>@x9`Nj%P1=PyxH_24@b+4l89X^=f8)u8Ux}}{C>JjyRe%;7882u$ z?8{)w209_B_0j4BLt$A^@^;#89Vd|^j#V!Afi~YcA(sOaer?PbquoJgdsGdb@cmu= zyQ#w@M+|UhNnRd0wj3>O4}`wK)u=%tOUSHdHG4#&)#ze2u?i3xmlm!OP?v-ct;kI= zoNHr*BTz2rpy4aI=<(?R$l7qORt2>7yo-VrlDN4dzo((|*&M&(5{-XQL5%Gk=|N6+ zOAUFZn4h!}u;Dv|FQIvTqghjb?i3{5>}!lany^7* zAn`Fu+>4_jH*jRkl*$6Lwq}Q~25p4`c3!zePc%lMJvBi4cY*gztR>;rmIK?D1uJ16bg6=mYcmz!^`o9tw6D6gF`+h4?<;y+Y?n7)eJGY#T5ZdA0|vh9=6`BPcq3lHKk z7^rSXmmbW%=3LMkqQFkS-F$PW9nPWKXvtoSS@@9LCE+)FUu&-ivM99v%^pm zt}Q&?dm@upORtJO;A|V!oWsk88TdfALwCjDme?keMRFdiyraR0UbsAPo|9%H=R=Vr zD0hzYE25QqYIgBTNW)p9)uE8pErM)0UsX?p6@OoSE}gc(i8-Kye;vOZPDmJW;&}sM zqJLwp==l&(NU$&4eGNe<)GCdqG$mCB@XOV2H{4HD()npKzG>W#`8G^`@}v`@hueIWmE_38jvrrlC#W0V}d_Kc^_;T@W;&}-e;N~Y*^TL8SL>^7-rlt>U?3jH&?zU z`QWt&0X&NABAfgU$m?IK?Me%n`!uh-FS+Mb1!xG8tR>&1ok0ceL9QF8%Wn`%vt2=( zPVh3f^KGUyIkz+Q_SN30JW~;JZBgLZzwA&fWWc?zd00Vueib7Pup0P4Y; zXubNOWq(&ffi6h8PJBrALz&xK9*`dEU=r;JF8&Y#1 zA}u1Wh=D6HyGfj(#(qaWtQl=mCaK;@3&6XYIjd~%(LpGzJhqOZBjM5ZI> z!-mDLl~HDxp{nW0x)@t9H^mko60bNOew`#!uJ9}JIW=z*S#8b_e$&&%67IRIUmn!W zUtiYYWpy~;D7-&@3#-KQtbgUT%cSb#4e|s(bZpCh!E8JADUrM;IDLbF)P{PqgurXp zuvhHD>(9kGg8-|o?b0mPM>__O9$MbwmAPJNRzxZN8vLm#wkS5#d|=j*6a~iCADiJh z;(+@Gc?pVIss`&0!Xv_qRE{4>NkFVgK9!F86E5-^TKyKjT_U^4H^MbC9%3HS3iQU% z?9lZg)?w`=FEUQr`5`U)?6%ey&_|_5N4Iv*h8K}XtE=bTnBnX=UOFGq4q0!tw_=xy zd)dx0n@f*ZexKhu8+2DL_bJaFPtOng4|w;yyFRS=u&JPPeDp}rJK(_(B9O@tSqL>b zTqUqr0m(T`2e8JF`CShF1_7vo)CGv(zTc^T!XNkSRdJsnm;@SZZrQrIYBUjeT0Goc zbYH|@5N(?DNN*-z%w0rZj9r{vkZo2H?#8(ms20#N^4N7ZDJ8P?FG{f>O77O@Mh%o`Wn zdVxjq!9jY*uxvryY6RVKfsP4Nl0pv&&F}5qV!Y(Pl)vPtR)0}@5t$=jCR`@soCCS^ z<)WZ(nne3kpP8Vgf2@zkI!CfnB*E5sa^Fd$<{;7&ts z#hNBS>u0I7cBj7V*T8MXxr|WXzTS{NZ|RY9>irJIH&;JCDreOsg@K zeVsA78@kJ-nv_qnl(-5%<)~G;N`4`zTqf(+>X&aJ_e%V}Mw1s#7NC(G@JYZ+@}YWH z@D_V(esOxVxKiEK+|}Hnxf;Eaz6#l;+8N&6AMzNI88}NsW+0H+<_gyCTjsq*ZA%4d z8p}=`LmA^u)1Jh9E|zPOHr;#d?tfQ%`YKU{8_^hcEj%)q#%o6)vGI0FrZ4=t@>8Wu zQbg^0`I^su#C{mrGu_?$`4yAH?^Ly?#te$$sW$X?L~qc7HO;|qmkKp-SpLgZ4RrX3 zdc61S&g9n&IE}ipc9AbqXMrOwoNnM)NdOwGyiem5mIGn&R{iI%%7l6~={^JQ@4jBY zg~UK?^x)T_F~qc5MR+e;i<}NIMzyQ4_0)&`+GiKX?yyV(m1{u$@z&v3kBnozfdDAcjiy?MQVcO7+e# zr4IoF}}X z8l)a*R70ISYOj{KI(8OYIP7>rwn@7AS+9a#wn?x_QH_`yIT;2K3Xz}DRlrq5jp!#@ z7Wy1CcF<^dME7vFMYm=*t+SM?>;jo5p(m*)!58EXv}hP!Xx`fFMY&py(j!pgH@rj_eY4 z9^Tr^z2&j>yal8lIhanGRIZyMc_r@CB{{ai_n|Io5q{S zo64Kao9+!C7tQCB4@yiJZ$xKkr$8SMH7>djs%&UygiolC!1c`Uy=ncLI7`CHDWZjb z8{ZcnCbzVa0OEU=W!kk5n9m@lCfWqDu^v^&8bW1N2&?dJy3o!sqc`sEiErd%pN@MW zF6}Qr+p#`Omv5nMeY-TjXmZ;+-NM;$g#BHHA42o#{L?uKIzNvZCC>+Fz2+v+_(jG6 zllzGI2*e1gUga&K69?y59DSWCx<#J_J?B8L-j2^){;K525^S-iTyhBK~ zE>DO-{^SW%iIjjFV{*kbb|h(SuX!zJ25n>i@inA>ZloJ*6`>s-GPFd(l>>r z`k$KjxVvcFRNKn!?)Rl<%jX#m&xq_c8;=1Hh|L?_xjnR4Jb8Otarx$=F{Rj&eNox; zm+_Kh(pij7OE<&DBR@Mm=T4|9+K!GaD%#JUu&pzuZKp>YSH9jixHYab_;hu1o@>-S zoOvX#v^p+&-Sb{-T%jRyx7p7U#qiucpvv;x-Y}KTLycE>ojvwBNguOWuG|P*?Uf$h-=*ldIrUpqc3$pj+MIiu%(u4Q$KJ02qW%s<-lvBI*?YW)lj{JJ!mV0`OZ8F= z&yAl-o+^|)RA|{r;o}m$z>0Sr$=*xXwi***x0tilp_b%N=xELq1LMO{!VWdHj6|D} za`YSbZrs)>(|V2SG{y;&IrD|ZW-R7O3Ir)(>?H)%M{?_5eGCdJ02M0jhSveb(w$Ir1N@|eu~D~?; zl%=^^WXZ$R^cxZMt@(^_A!R}1O{$37xk%6r#`}&)WH9wbWrS6BXO+5a->h&wssL(V zG}a_}q%ihuR4{qga`B||sorxbF&5h$F2nhaLJEE763^l|)p$1V_R0{Gi#%<5K(4?=+mRvLy5w6I>wJZ4kyKzs2_5b69tco zNAxUXk5N1R7NF8HCY}ygNOmgE`-nKmFw80~0xSm4P4j7kFR&Hr=b_IyCdoT}bBFL0 zzbYi>orLPlibY954@wy+NR{`iLC`Y-sdu?yGM6zRMWXKW$%q6n6fy5flj9z@hv`8c zX6069*+G~Xo8@O)tvfn6$NQ1Y@~M9!KJLFmD2r+x93YzPMV=1Ch1_-`YY$xR5dUDA zs?NOZGp%DF3&{`7W83@WbwW`nX>Xv)T05AV=FSW18v_Sn*+1tv4*38E!qWx&ecSL0 zN))`HNWqjhD;LG^nvG|0>`5@mx?1Iyuh4PpjkHyoP(z6LI zYzoKka$F3`JR98;z69to7pmix$G?_91joe+hdB5^*b<$7V@bD*LeU0u;Tq8LQ-Ui* zw>%i45sR2&_tL-ZpeV?is*w97DInb5Tg}X8CR|y}`0+uGzEoP9%iwOih<5=|3ka&D7-EF!^05)UvbW7kqczrN4h- zEe)qEy9zorBwe|-ZQT@Ngm}w{{^Iw5R2I119I+u(Be5WWwb{^f>bK27GhoIq18c7l zs|dZzfToSa%3|~|5deRTgBirD%n@`;4Ba2ts>g%Gx17(}&49B>7|1c8vx2-vL2Y`p zIjvk8TeL&=AkH3KU2b~BRuYS7FRVCkPf^pxWb){~^YG(KH_VMWxO+WlyM~|k>&NW8 z+uZ@3=ojE0?Jgaek~wAU>ZFpWp>V?3Qe1!-a6?C?B@8mv7ZPRv)>KkD(OCXN1|zsA zJLN^WTkbcy_#4I`9`U0?!4!vrXYi+Nf?ldZS0mAk^>n&k#SYp33q(M>zl!U)FI*s8 zh*L+OFhuAtg@c7^5=MFu(mXt0I9Cb>3jL(;JmlMvKR~F4<&010FZ7kt=OWz)>2r|g zVLzd7Qy*VJ)l8(vpbU0G0?+S*p7gPinpEh6t2eGH zp$d1z(MB94aU8P6aaH2#DfC211x8Z=KQ5GGygvB(aFuX_;KsmhhuZ_E5X#~Eg%VN# z7l#`RR|h9UJ2BiBL%(p&D#V0bl7Y4YY#~lQs`p~h!<%uThQe7#j8|o0~rig z2R9S0fo*7#8Ff`=)Z=yY;ReBtftv%j67G38C8>mulDLLdvPxkP8zhLp?(FsD<%LpM zRGJFio>ZuH7V4@l7qS7SY_bwgK$o-8r^W|Hw!sgXfq4<Ty?B2t|nG1)T%~<(pjZvA{j-}=wFh*R`M^G z{J7-X;?7ZNhexHoIV$aeQE5v@rHvSscK)cezN6CeN2N8>adBHTZGSXvaWw6sXj*AB ztt6UO6iv&Hrd1he4IK_c-IpZ4m*f{peo*o~ba+!5QEjCoNk9pVr5i zvgm+D)!>mM)=_#_4N{Hl_GU_kj%cPyo;BCSrNzyJ(%9TPT^(Uf4Zml^I+5OaXAQAl zS!u5{_B3?s+vgv=Iw`ZRPxRE!ekvM`@}77amkqdZMB{2tO=BUCBt10)0B0^-Zf0ey zw7Sn`)|Ce}BQ~oWSXuQ2JYU_=2Oa6GNBqd|vzY{VAk`y&UXS?yR?o}2@_Jz&r0RL4 zdfqeYt*Z!B_gNQ!m#R}C)u}kM&ZTG8xm2oiX-6GF>c7-PXFG~RBp}rZC=N+|KfR7O z^{oG~PWT_|oCeN`y-rK~SCnps4djRGdS6=&$-FL9JrS<1alw_7?2QfM{Qk|PH~o+o z`5T2u-MI0ScsO=qGyO0$u}@>~P#^!g{?e^ymN#C@i~EQAtRvS}4;``Y+W5piP5tBj zt3zY^)U59}HfQY_kGrGuaqDu%{`bQg$MVK<__O*+_xQ(XGG3I4WVAdUOl-F{$|bUh@_JLOMlj^S+hsa8jWDq zZ0QdtISBcj;ZS(iY=RL~X{Ghe2X4%H^8&bq5|0*U&8nGAr1_n71>sMh&ApQkJr%nG zjni4DV*=riJmZH_ScRn=nwxb6MIU%Ku1MWSXK_O_G=p1br}AJA@HN~$#D&l+jKg|O zk_S87mx&uw<%#xWl6?gBG_=DZkYYn&ku{WGbYLpPdHPGF= z;`d;UIkZ4nLvMziZ8`2;Mr>p^TFgnRkzSAU-E!PDlv2}!0BeC=w1!o%ZOJ>( zrxEDG9Gv6tq*0(#9pt$SQ2SQc>ux45!A{^~oN7~?t!L2&e%>u3?K=`XlIJGJC1=1k z`FvQcHK5dkbMY#6v2Za?jz4PuPvTJ0i?)ZtV&H063M_&p!Wx{0e*$}bfvMS0HcVJc zT%X1^OSdl-;>iyVaAY%%Rll1b+uC z7~VshKf|s-z-fLIHuJ#7|a*6?TJKDvR`se^0nkgu%gaH-3myx)v$dY z4(p0*V2QB>mKM8ky$ef?-vK27whTtV!VgP<3+RRP3dwrmC)&=en7=YMjWw~oLR8o# z4i}$m-;l5*ni4<3u4zrOG5Kop9cg|`@toe6fm+yI%#vnoBcAgbtP8%ynKOkAg%5o_ zhYrAa???LwX&cZ<$!=uNvLs~R#ll;nL%ct6eqws!{>1uZadIGVOMuAbAjP=41Dl4y zK7AI>vF`>fS7T<@1A9IsKf;F7OABC~eGwf2b-*M#19pY=^g5hk&xJL{23S;l2%FU( zVWl944MG&xcy=>e!ZxrS>_c`KC;b;<2U9Ox2YZ4I!XDupQ4d?00&$>NCtf37D}z8L zw<_Ohv$aicAJ_h1`>Tn(M4!ae#Dc`ji4PNBCN;@z$s@4KEkGY@V4X4xHYRf<8<>^A zkJaeo7qDOX9&`Q+U?ISE#EBmJqTd?DJ zAC?$D!PdgU@^JM46%1pSUk`a4{liVS_Um z>5JKItd2ZMx55_v9AMg&u+CV;#t6&Bd&HjfBkV3-hG~BqJpt?CD%uls_W`NL4CM;X zi`2$Jy&L=Tg$iRM|-AzjAMB$}2 zM|&2dZAa-k;T*D#w!#kNEr{N&fTRbQtE6#Y$YbCU!$6q0 ze3E!jb~BF)9|*^jHOW9?j4VBI02Wc7VD9!)yvKp?Q&=61rbEOe8z3f=7m+pWdGSEf z1}mokc`peHOKij&M;S>!txsxT(|#Kn&EGqN9mrhRhFp*JsTExFHoW)nAS_Gv!S>4w z{?iTpABye7I9O=qf<_8S2}akG^a58p7iEL-*3!io|lSx<1k`MPSOn!i;WfK>;e=(>On4kPU`C;-7^U3v7L|# z;7BF<5=TFJ!``tE^7`fx((eyK20Tp2`3DFYl0(P^=<`|k{{jqt;P17bb!TC476;Da zz*!tPivwqI;4BWD#euUpa25y7;=oxPIEw>kao{WtoW+6v58wbSd!Y}<1s$=1^j#-c zG*j&c?i{22!^!UDnKQi>s+x#lJ(Q{z%or z9w!?1Qe5jdY%}aO95no7kQrL2l`!_wdL^{`&Ft}w1Z{SGUCA$Ti2XB+joiS;CZ$IFSmQ{azL|RQe9Y%SKn8b(rD>Cg zBzTmvVHstEhjiuM&x6XkpU)kh|5b9h@SSWr&|-SLyGmuH4wX?@%qH52&7?&!{$$O?cb-E!BtgEBdYK1pPy0)2OJXnZCJE(DWoDRn4>sof@fp zF&}Ree`IK;Th?s_(jTvF2flZ}rM|Wn=cB24qNOSH5)QSGGPn#5HG52BPB%DY8Gnrk zJ9Ju$>}gxNL#F{69KpE1k@54S6%&t-)o|QaKGLyd(E1V_y z`zCj~DqWe*T9SVdee#zkPkJuDBPaPwJd`bSr~A@_#_3A0+eq?grYtQON)J>RV-+%^ zOqS-X0R6tRsY^yhx})Hc7Agn&#UyeWcvOD^5UvEp90m4)R1Dk$z4X2&elg3_N9+!p z!|Jd&%nq5{?ee(1E}u)3XGXFj*^!)xDA#D!T9sC*RcK{$ArdrX#EIYJjMJz*94EPA zew>DMfjD(J;6=2tILTx1xbXxmDe%j|FM1Ox>-f>mh!n!kBW^KxO^!;l*I=tOaL?-X z8Y_d%$<}xrkxaAO0MDg|=g`5krB{Zymua@9AqGz{qn_Y3YASQp@T@%MF*^dhkssnV zM094GkKg61WNN*kr;U55-br0N>G5vYP>Wuo%gjgwBw3=DSc=VRwOJL#$jOX^g3Mwu zBW<%56&g!~Z*H3SVEfIVgqi@^Y+nOhxX2KWOeIz=c?XOdseq|7OrCZ_auIP z`1&3tfqN=0nze`Oc|3Se`9*WC+Eo#9gc66gZ@%i?il8Hd2EfrN&gKcuy8i&DT-Rh& zx|)-J#B~NaQL0>V*I?sdm#EUUuxE&tE|079TCGn1l1j;Vjtn_QDw8q#lCtB?6NS-b zZhGZZw<39B#el)9e4z`;z3YR>d#g|uc3M}oBPj7P11 z8QZO5ma-E_2VUrak?ci!7(7!$)4;DrZcwSzT4yu;bA!1eD8p9;N8+nq4Ef403>D$3 zG&Te0q&DPwQD4KR<23p1PJ+{)z-oB{yo2-mqem+Ny2JXTv;$m(gG(Yjw=ctJw}$-@ zOTZo{rjQ{{Z9a3H8Z+Q^5YA0Er9cU2l6qPn?HZ7l2df4AHKS`!R#FT^lq+zhcxH+- z$>j>7XlHZnfMeTUN`9#y>U-|G%T_z&Dy`mNo4k4KLtjQlUYYo~WoUqd|BCCs`fvEkDvHt(ZZuZNLlvd?EJs{z zsSw=mZi2IWehX&6&2D-@bViPMadNSvBQW1N6BU}kQ@4?$UNeHkgM zr`D8!!TCgL=`JcP#k^o*qzs#sl4hwB`%}xDV48jHZ_U%b$XWoF!<8xa9)~_~sJTF;w7GpE5iyPC^ zU$XcEflHYHNkm`)AKn5R`GSD2I0U?DUc{SV?$yk&5_#O53h*^YySMn2Y^7uos#Be%htdQCE4u@Uhw@yAo$FPI#0pR%#j^}_}jC>vsYFsLJ zP?hcIZkOd|pO-x*`?Bo&v)^*;w|{R}Iye$rITD)?arr|^v)-R!^*O1}6Cf`FP+`tS z0FA?Om8U`!)g%%&HPipZRkjMXvqG<+iWWAPWV2}-QS;JpMl=2F1-&CTEUG(E_!P_r z9*5|!KiXcKLSHWM<{t$=<|r%)z8sGwo?^GVWh%D}E3;h%&n5T7sY7Wyg}ET%XtcJT z8ajj+pd??-&cNJIFvU(f**Bfj|MrT9_Z{1C)n(_$BX+&PbYIhw?N2t`a*IC=VrqZR zLd1I#6MeqVH@^8tNw{mkYIGRyeCw&Z)>iB7R+h{85U}uTNJC#s(omRmq4VN>j86sM zCO?uNwW3q>SfaVZqZ64-lP=m_>1O+U`@Qr*<%60fnJc3!a-X4(Wo~5K)GgYU=q~l! zQPVZ_i2&+YEWbjY2IKHg;`;1tt3Fa8eBrF9v<|W|Yco9>*A)3H^k2j(RF1;G z2~^+xC9M>svx(E%V)5NO0Ur$CvG$5Ax{Bms6Ylb;xk}ITo!n_ z%KSL#0@3M|n8X>&f6GV&Us$Xs^^lS_lW6jr^^kKgkZ;yQ{NZ7|0Md`lj+D%f809g_ zV=}v0TWPVQx`pRic%Fsl0Rv9`YEJSm;6T?-RFHO0U8ThZLJk<3>9n|DnmqN;s#S-k zP8pTcec!VC_IA%sd*q7QkF31%s+G298ycQnJ7>;XwxH;#x}~3fx^&D_#U#M3=&D#W@@rjIgo1+ON$^QP1I#%SEyy+c~8XE`4xho z4pdmvA}ut7q_HRC>Wm7Vv&8v@q9XPpdzuu}GI~>olytlu3(bjvM~@!?K5%R}T$z%T zfFlsMZ7B-P%*+dhL`zz_Hl4{0VCN>iSue_E;T#okBufJv$&3Uo;0MpfO*BvBVze?F znd$IC`T+7bl3Y2^rW0@U<(SQ!9F9A+Q3wjrdMb%u(j3=QX^);FaLB5BS1d^jr_nqq zDTbJf6)H8=T}y>+RqIC&f2?lXs>`<)_wE*1GU~?LFYe~F8??5}qJ6Z`T=LN5sgFK- zNsn1Y0rvW=*%Mx#@?iU2^VS||x^nQc{K}x-Zm?-gwCL-ck9RKFaOWNC<9LCCrFMbB zIP3ylq)S|-YqDyTO+;?o0u6+Nh}61Kqj5Ogr?!RAeWZjazB#0wEMHnyO=qM|+bT-? zMadJ!4er|GeD2y8o!mb%T9(X#H7W0fos5VZwx{n&|5$%0{agL9^gs0q8<_O!^#wYr zYo^Y)3jNdls(;xkHdAXnO;eoyzRpUmpE`)VqnD(Tf)O0&`VlNjOd?cRr_76{V+BTNmm+*n2AUEt6_ln#o=jn( zRby}j+fE3opu?cCvVQb0C?*`H#NfnW6C#qv;M6E?iwC#K-_!o070&4W>7yEn4LC-E z5mjk05JRB_7)qPliTAeqqjIM4zCia^$1NJ zpw;`)E0G&A?CdFF;rWeo<)1f`(&l~SBHL}gMrcd+K!cpmUK`|X_2(Y z;aeQJ#b7oT6`s`YLBIyz0wXh|w&zxhL6XJgAt)w0c$qNLkz>5>p;uSmeo4Q|sJozg z{r$@Z81x2vdEN5Cb93G2>utABd-#I+Q_SWxlfBQaOQ(-Bgz+IfjVRtf?YebiFI$-5 z$f#U*OJd_IiQoI_?RtNtqDQfBS@$6`VTnv0y}A04$?e;j)sSXU;bY1-4?XV^8UOaV z0oJ73@ODTJ6g8XT(NY5->gpNmn%mEKuJgQD-&}0otz(>HVuN%4$k9bfPEITj-|5R$ z>!E{^0f^MF5j*s{ne2aa;9v}5(yL>+Ad4evdGnSL%bvey0m(yr4 zcv&v?0l68W5I#>qs5h$1^TC`wPvyvsMVzJxRG-ckygCx2J>%w_h%2sBRT2Z$L0xpn zb<8EYnrUoP0gD)NBgPimlNdk?26ZL2d)woB)YTa%F${vmiu%U2`f5OoY0W?+&<(RVyjLfv@vq($-)e_|m)^utQLuR73n+Tb~b2#AzA-M@i{! z1@<7^Njy9tba3&`%?0h)(gix%duM@w?;i`-wSQdy2$zKuuXDeO&iaFg_~7J&RZ{jF zd=s*2$v3_)=)AqWMS<_Xrxc{9zktTXK!Z0fG=(t`fh{-q;rBTJ^(CY8)}Kaj63>Z0?zf_Ozk znQpapE%b-HI_w6Gn$U)*G2B(NK=g*AT?LUvRp}9BT_6&1c6UW|U3^{gyHs`&yEwYd zyCyX`(i(A;OE>N9T#+bg68YN9#TrZxmvB=1Xh=F(0Lg$x&4mLRGw^YQ&BP4}9qSYq z!#&9#HbRHywp+P=2)`OG+G656wHjPg4~pjMHBRvgIdp6U;^#@4M|ozRP*PHC#9AbL z%t2=}8Ei~;(d>K2UWD&7XS%6=!?ZPn4Hly{dcm&ABS)Vz`i{c6U(eek`g-tb_}1sN zyM|WPM18sEkLf#N$=1a8qsLgR23!89+K}sW^T7co$x*=dWKOde-(9tSAv5-ln5 zpP@y#(hDhL5U0}*L{$xC66pW72{xc-4dTsf@qwRdB zeVkK|zP29XNj;xF&gxTJZNB%$790D@-)i@kpNw>DyQTbSw6kEZR2SQEuHb`muVc~- zom61xBoBi$jU^>Grs}NIkwb^E+xVQdjpb8OU(bDE7SCyal1lqT=>6=hB;k{2C$WL6 z0aFx`ILIsSN(>mo!^Dr=AA?ys0&T~)m?a1}20?r3@Gm^r34iJ6juQ&!WZ-50qA@)~ zeR@VhVnm%A@eV)(tQ`u~lzNrj{Wo3eAr2dMFZacsZPrfCl7b@#Hs>yQHv(Tjy@!;s z%y{=NJzsfQU(&y9JKlZ!fPUqtUEPPhN9! zLEMf1LF0FOJYI@#*K*%mMu^wrH6sffI8R*T4ddj|>vek~5P&`L{%*IctSb{N5f{tL z&n%7P=W8@t(G<}tBbjAo94%rTiWGM~@fmMP1`8D(*1+*qQ^T$H&d z^HAn7+PNPDumC3m|+|N^~me%E}Sv#EisIc%Vi7QN9>r z6_liO8N~G{G-fApto97Gd~N+1$$wA$_iezz%j;{Qe-6>mf9cygXugPcu8IFpg*{xC zcu~JxqT9E*->-!G@8bQjZtwC%u{for+X+F$x7^6paev3!_88kMF^j;|@nt$b^3xksZs*ipD%)wJ23l z6bTB2D0tLPvy=w^w%N>J;Tc|@4hD)mfq>WJ$#5~eis^N`%)lo6vmH}35)OMK85v+0 z*KTr|BQ7U{#C0tW6*X!#ReIcB?9O6w7hb}Nhf8#^L9sEh8L>sNgE4u`na6Nw<>J*% z#xbTDrbVV>CQ)aiCP!}fsV7(8dd|y%7+8X9qu3UIm0~PF0*SF8XCC;Tj>02M1+ebUN{XcW}E|zEqcaKTD zJw&`=qb{Q|gJopc!Q!*SSeM<-{9Lely(90$Det#>x!n zI^bz^mDt?WNP;ZL`Xrs60qnmeIQ!>EKR8T-&i2gXw4yVCEFA)c1BIph@F5hywpBV{ zOSm{}Q!6d~X6^odg#!k6zbNr1)z&^XVD-(3ee_Ub_L)$B=Z+yahs&I%p%-4=b39)8 zqGVwEZkaO?g3csugJLAri23;`dx0|+BJs=C$N0m_tKY{%cez z9Ty+6TJgAVb)FDWgnd24*`}+USGpR^bDj5?mpa!dR+%4nK9|2yu{C|2d4qGacW3(X zE*3RjoXnxZgNA#Z?7F=9dCT)wr?1I-t;@bHN4hApg3au?xHFs|2#14#V3yHivSpVB zNNF||inOX2HpYkI7t`Cbh`J~sXjB0b)5m7UgjjYDtv1WNLLcxbctINR`vcfhSLy;Z zKTsJM6c`g&8F)UhEpRZP3^>bdiwXjAUOq#R+961H60X42eh{)H6>nEz z#0z`wTYc!G?zazWXc)K7uhQGp>El-nUfDF0)9h4X>Kb|n;iKThr?ZP zAkXB^oX}9B^;^t*3#v2EFdsAvW=HnuyH1}DJ_%eYE0JYoWw}Ft*p6k>aoEmv9DLjI zuVg4qhPGoe;zOsXXo036qhHoVSrf9J2|khW0^O|H>fMyNL$*`7S3ICREc;Gru!{IP zzN|vin-0>P>%E8$lhrC}H52G1vT2$t*mdgbyw~{d@V59~3~mftDL%v2q|s+VO})-5 zZHV~f)z{!`rl^o$--E4=rE_`hq;-0l9-ijh|4}oQCw|{}V99Hzs9bpX(|hjulsob3 z_77f9{PxO@#Ie_(kPg&)N=L$PuKet?m2jZ!HJF_Npv)X{Y-2zT76py^iFgc=H!KIj zpJX2L9SVFO{w`CIVac@i@ed3S%pB&g4PTr&MK{GUIedphi&L;);eukyeUI%uXRz63i1wOFg*SFm zXhIqOTjN3eZvuQT1n~Z1)44g5a`1TtP5|k!*O28)JB^^yYv);dSH8{VvfF}QwKbTf zs#Svw)@KC(Z;*pO7%+Q@R%2E`M+~z8mA`?1NrO^nEF5USCZw4zTp!J8ND+hnM12Q* zAVPAf5*v8P3$RK!e4Nw4zYqZy{w@Ur8m%2fus$8%XW}eoKw~FeY=&jh4^4h^Cbw6L zB)?uCQf4?#@~D&YK}h09T-6H9wsoTN=|@T;OR<=HzPS9oYp!{3)`4YGdgjMVmwo*4 zvZWu3U$;)@yydAkuQ_zp)d#PAlYW}QLGY zE-SSkmR8G76M$3*WkqL(q@GUCiMlYMF&~M#vVD|5tqdCtuB14_0_mj41f?=Z#SYUA zu5N;+siQ8-r;>EqK7;erotwD7>DjxknpcF=Q>E#?Ntazk@8Fq2T6@1v$%$>|_&8_E z3aip;G};8)wCXw1u{SXDhQy8Hjlj%IoNs#LU8>D9&FnzngYXZ5!{OGz@eKLY?CH7V z^T!umn|6J6ebK_~hN6eE?=D)Cy{f3io6eM+8;p|}gi0n;s)CGoqh0KNz0HrgO!qG7 z67Z{|0kR~bQ1)Or7@=7nKlQ8CdMJ$=Rf0}6NHs?FylOXeN6wPGKtpJ8XjP~&ByJ1s z4jl>|3yC2|an9H?kX7QQ{P+zF1MK2x%4tyTU*!eo451MJKui$&O3LqHy@NZ#^#~D zVxzMlo7(Al=jK$kZKibNMoJO`?tN$1l6!aU0xb*!EldY3l+oew+y|VkekS6-{Y;Qw zAzw`IWvl4ptdXu~>L=t+DmKVADqdH7tT^aYIF$yQ#J6>3pP89Q+0AB~J!r_z=b4(= zsDfB5zaW^cSMzi_zUY@WN|lzTRt5Db`Bf7h)gix@74j;flKd_uC52srWz?VT4v5)V zS(xrJA}aK1rONL(Xs1{w9*b+blYqa=wu0RSte}~GzrI_)j;X|g$eD~pQ5`H_QX3fl zmEoVU`S|;`?=(?WnsZn>=$$T^LLPR>u!VCf+$p*P;Q<|tC)L05 zJ8pF-OlkTNW=N}Yt!ji!7SvkZj-?hztHNunnclm}El<s5IcBj<6e0JbaaMg(8CfzDNvExvvZ?av3^Zs$yh_WzA* zO=N~oK1mE|`=xVa;75>H_{cUSZWPL-k$K3HIN3{z#4?5 zy7cpvizwLtmxRm>u*Y=afJcvH)2G^(8O;N08~?N<)d$JljwW=)Wx|ziM$tH3R>QV zd0hfpE@Ag>CfU%`!w4puYwTeM!^8L>*a=^1deX#p6w@4YPBYM758)q*Tf?oz%I@Lr#Zxk-l&mqY3CS~X9)Pc9Nz^XO z@8HyKzBS!|Z)f^^{GnQXB@g3z$k)D6A)hZ83c8`pD3W+WK|$Z*f`X#rU~X}VK_fMk zp07?%*QkRAt{cTZDWw>-KOkvFgD$fv7UB8*va?5pv$G@NU=07&G9$xZQf$TRXIi9XCPcUMQnW<_}F}=#KDnNvRfih0vO{}i>o!l6)K{Cao87zKTV9Dn^u6odT~nc> zFcsQzrLYMKF3AQ4*4p!A(1NDpOpt3q&o~tP`x)SWv9*6cFT@@p|L@fm>8aDf(`Dcg zWMH#0%nkL6lPCCcR)ZY|7u;|J20l1gItB|R|5zV(6#J!Ou0i8wShSO@Pe~?*lc$Uw zy0ep-)ecgCs&(sW+r8K5#Hd6EX`CsHO~49ZERQ9Q@!TGX`{A2{5#8eD z@22anE7w)%;=10tYLzjfE!A#tHO0hCT1we4_c+Bk_iV*%x2#lA=&n{&yN4-c1p)M@E{n>Fq$DX=!c6tOMh@%l3(JRNDkdrWOT zNxr|bCs#$0p4)ov#s{h${c_f()|r&*2~-wMt^Pc~Z15w4l>7$T<9lN+RU5mJlWNE_ zG5vo`{p~CPbtNI(pOtOLOG2Vd6V4VheN-lQsBQS9pe)Bn?OG=n4XI9) z=q+V`$um+lgmJ@WRrl>%-Q&EA+c$E8V)w;|R!?mIK#Jepd$=ciLMp*gIJH#(22TS9 z4+jR9;T*W@KKVW++acefWREGE6I{Y_*AsGfoo_wezy!B%iVy$l z97j!F(4vHKI*ZT3EPWjoi`@}4{$1isEhXtBou>EgSWQwAr=H+nA+x`UooOX~Q(|Xf zk1{!Jp@)bc`UaCHASxh%8lmb_sr}A_4(i|wfnE|m7ZmHUnSmgmuXC9> z$0hakT)Bq#xFBAoP~?xHAp@!>w3>^|M_HE+Au;syBm6oa$tc5?~|MpFEd(2tJ!81 z-lA`5_Obo4&lLMK@~Mi+1~!pR6elYutEZ$*GfXsHVpCcIf-azfLR+B?V2=eW1V^P5 zrrV@2o@Oa&Bvg+N`qe=&ZD#Z0b|W;{+(sdeIy0ce-i`m)drU5qH`6cI+rdIQZE>(T z!QQ-{n`d#00lx2(log$39b51U&T(Q+9^arhr<-jp$uF^F|6i?L3w&HvnZNhW`~9BD zOkQ^$ZIULPY0@c8I;EL5X>Bci*fta@*)mNg$&@6MP9_Z%c3ao|VG$G&s}yyA^{0rm zwG|5T76jy>tYz2AE}~NVE2zH}t%6+IiZrt=n+;nt<|8JAE=#A;zm@_fa z&FgmfmbvNXa@*Vl@pRG&htY_Rl%8&q%2vOWw(gyMT?re>g6>Yhf~}%vPrY>d4X8tZ zCpw>gQgrqF^3b7Q(oa18#Pm7Q@i;AcJomkS{l%+a`SR&k!JGLQxl;)xd-eIr&Q_zX zqXEA~^FIPZhF(j*2%c!KvE;?;=H;TMr?gKPU)H^B_-Vt-t*>ie!(t|E_IaJ|W*mQd z6uXmRP7nh@f2+Qt`Ue#`* zsMe zdiBZr)Ai?Ykbr+dL5)jRSWqN#O*dOEBM?)eBjdBc7bs@RhU~NW${Or4oz1-gZk`oG zM|O_8g_cw_x|^|l;-01o&T_qZQAblbdWV7rYRO22g68P=sj3`f8r|tJ;_MG^I`ioC zl&Jdd>6=d7e)}o3qf1-Bfrg*S$| z3hi828}_$MeWujtVWC+s`dZMNVPc+^{xRc4;tTI_b-d52$yv-|<<6n>jqZ23tzKsh zZ^keW%-Sz*flUUmsN8fF{psRpLXy7zwUui>?splju5jGH_)CwAd1A)Y2o0lu$Y$SF zJ5GJRCmnD>%@GbT92zc~v!yveYg9A-Uh(S+iVnUWRRyGu=n! zql>@V{(|fI6~A!3RleMXIb@%n?eWT zkJwCGUEA6-?K=}6YyYRjjqNuk?sVVlHhv~?f4%e(eRETIZfo+=rSU+O&8qX5JA`=K zg0MPziOmYDam*I^6PI2J3#cy4hb+2JB}c{RgW?yGHFGZs28D#Krz5zbZhKu8r*8yS zwQdO~nmoZI4Y|E&^^#X+o5Uvn$}XKsJJ%RA{ev<;LfSF5RGy>XX1{*uBb%n5-GAAs+m5N4Yayzi ztqXYlOB>odninl?tg*SO!q>09=B{+eZ4K0Y3sUTf)-UM%Soiu^OpXsN9o|dw`Z@He z5@Z!5JfDobQ!QGm1J%;kjrSX$H2&Cl)~MNSy}^3G`VH$drk6}wpPts@9m4{YT+*Xg zt9AO2Xm=Yt4m!Ttt?`?i9u&Wpbkrpx5nV#W`6K3_-{jtpB_Vew-7PK9#m)^rBh=Vy zW2H1A7)#0Q$mg+6UTmGTx%9fUn!DDDu##S_9QalPO@R7mU^B zdYH)5JO-N+CH(X=b6QBi@nMs|Ie=5 zjxi&wFA+0TJE(L|{rj373uOzfvJS5M)PxixPiA{bbo?mjc%^CwW-exuW~2Ikuhi%j z1DFV6T^VysZ#EnBAse5tG*z!xCM+9*^c_bViIG)uBodTE4WifPmV*hQ!RV_>z#`A4 zHze#fts7<+m{}8iFa!8n($Hjg$oi958%c`n#!5vt2uahsRI5^9;X9)I)s3DqNVPj% zwA#w0cGL?_t(()B7dV$v-#&&Vgug}q_Ke`1IfK$gb8yV0f|eQ-hl|98#iduJDOBBX z^ttPjo0$gs`$Oyh?Fb|I@7bu}x-WNKF(K74vVVHh&PTbE>uibI3AApX1GU3Yr?wsu zk2sIIRI*Vv$z;%Km2EOcTM4nBC6RYhBqbgxEXu}Dp5O*d`E-4XnbUKbZRM=i-r{EF|Nvw?#7dW%d zLr|%xosWsfAsutXAXgJo$L4kD1^EsGsB&3R0jFcJf{EkB?ENcsd+6kpY4dt3KGQqw zsYo*i+ckxcN}&ql$c+jg>D!-~zUy)-L}G&OH;M5%V)SO_v6QACdQ=u-C1dA@_@JKL z#L4!V8TIGE$wpO6^3FzYgYO2_Veg%o9(u@opHDAHc4@Eo7VmNIcfGHAr@i_^I3VDp zq{4wmo+@>fr%`HBH+mX;?do>VYV~T*R`pi*6`m{nS2PZY*Qkd)gT6ukVB>Y_YdyDn zzu^0ZbVU74&mrIa(j)2zJ>T{{;D4a;dGE8nSG=cuzww^+HJiNEUKq}Ln|+`3f3oqY z_YvX1CpDXfrc2GqcOg3~jsJW@ct)=58}HGcz+j z_nA3!@0+=!ng8{qRFyJRky#NtLn-Cjx!1+SG}k)c3*IW#fF*tEUNet?dNYAkW4MSg zF^O0#@*IZ){?B$Sg$R**5i(C>QjI=*>u_Nl9HAc3p7H`9nH6|X_@>ExBc4Khl`gg) z1MpF}y5xvc`s~GwSoO(#Q^k8g0$i3>M(@kZetcvvWeDQBS+AR;A#nhL21ysISxfbY z=BZ2ll4$L{5bkID_5jKFGB3NAYE2#GAp&}$_UWBTrN>_G{G)G!7yi?n<^3E~xt3we zi_uUJD7DlEQ(r~}G#b@MmudFLGp~)-xA%9ow^)50dPsb0YdFs3#x1%l8WGrhf!NYW z&*jLff-4S5w{@^S51AIrYa11BefC2Ni~>15zMgA48LE}qVro#$Q+Ptj<_>WFJ$P0L z7Gr8h*i$UMgY`y@>~}jds3!@xCkd0smkeD!?YLW-<+2tLQs`889OxCLbmY`w$=Vhm)XVtfj5`sTvcMQ+<|%6*{+_eYvybnya$*cC1Q< zJyvFyu8{vtb!?ktl{2EURkX}^I~gc6kXp>}{?ldwkA3Q6la@y`7)7FVPMA{f+! z+=<^o?oHLuu{%gHRn)r;wV)ohzX|df|4w#j>3s1xx>UkUk+4-0&)zg}>2glzvoz9@ z@9wL@WzZ!oK(0UQwDu^6xQizrWm(uP>Gu+PV@Nd9Kd0_ zBC4-^_&SB_+7z^7=FE_#!fbM&K-E$?ay8VP7WKNpj4?5ee*)mqhr~+^^xg?b`!X_^ z8qmNfLYrN3=ZYHvyu%F;e0lzzi(vBIHd5j6I+M2YIbXNRcWsHPR!_utL9YMEZYFiI z&Y!KcngJd;Pdzq`5sdfk}d(B;wb-6w>;7K=(bF;Bo|%X_XL`Cw^<=y*#5bGkD#WqNQ6U zgD$%x1T3@6q9W8X85Tjhgbx-%$kd6}KL1Q}xfO@%K$z2sW;lMZaH}(IKdTVQTB~^# zvGmq5XJEgkyT)p;R@#bQ2OM=HPX=JtxgT}0j$+=G*ZbG`mx|jN30S?haBG< z2*m{EaGL)v71}aQ#>H==Z}p3~_mWW3`nJ4`VQJ%t-Tag;>KKhXfi3Jm`Y=`hi18?_ z7oKt%0#e!Nj{Nzew)u}BTpT;9hjzQcxnOd8VzzK;Jj%lQ%H<=JUREzV!<5`k*`06l zm_@D28Bk#I4&=w%!YDVIsOpuL=*O({5=PENC*xD<%$*8>-fyQk8q9?p6&yuVmanh} zJT!_Q!Dl_rjjotZplv^gfi)5Gog5a`ft0e;9c1c~$X*B;LN%7^N{VB{vX;)JeGem+ z%ofINc`9aBl8!B6b}HAiNu-l#yyUK^%1`CVzEQ%<`Ht#gR=c%VDXq1^LXrXu@z)oQ zL0w#(j+?TGE{9+$Uu-asjhh|rK; zGvCAF_)AH~5`#3fqRlZkVP!=|>o++vZ<~r+<4C-TTrmeh&b(((Q)~DDsYBWM)O^cD z19jmHBM2$EQ9|dG>wY#JzPoIz+b<9R+w}{KAl_3Ou@#I-R+V~t;CMXa1mHR%{rRwY zRqWX$Z3-WcUU|s0q_oTOyZPt2uGIG*6Q?CsXug%~enZsL*y#xUj7QSTcd`lqarqHRZ@0dhoF6#-7=B@a(F9T z@O>Jd{A+_C{CMOx17~`abIA5QtYZNtT9ZKWR98WBgknZcbfN?ns|dPp9fLmA_XhKe zxY(avD$Ot$zev^(m#sP_?ZX0wyj1O_0>%Yd=yj+JI-k({D(C{IpiIMLt`=ZaVV{}c zbSbPGzkRjo*sSF)X@(D&dym}?Cc)uivUiKK3*C|F17Kiq!Wz()0uoQqean!Xb-|^D zS;{lP>TZ-qEBsf^+XGt~Mn4!FPm(`elW~QJy19R^LTnC{(3e_dv3=Hzv;cy;`q9P_ z)tq+ozxi4fO{CA%TRxaN_X^#zpu1^edN>))YGi2OoM3K(wK*h8UeSTL@L#E%MB=K& zI64YhIlg9kw1oJ*Q%)P0Ln{V*8^!Pl6__=!3K-?dYKhwo-V#OD)l0+(U;O#LFR0tN z$^DBleV3gm|2r?YNxIjU9qCHqeO(G;dlGewq5*qKYzjEjAUwfI9`Fyi!00XJ@Jog7 zXQuBZA4bxQoATn0%+px?U*m&j`;i}THv49*`kqYjlfg3R?bOl@YVe4Ift#SQ5J=eE z({)8{Ex2d8z1hy+*pqBr-V>`|Wi~y71%`fka8uad6Zae-HAZi+=1)h)%^H_`XhLrA zdW~&+V#JT`I5A6FAh9C`;&7x_xm-;Ok11MmS46NgN65lw+|gnQN@^h~!KfG6_v80@ zz`s&cyIi}9I! zCm6Kid})F0FUSFIUw4ue7)bG6u0-FxFL6zuaJxM**atDi`3lBvM9`#?`j|?3zmn2x z|B^aVfFa`{L*?S<$c0cyQi>bKoIoG4AP>R88Z%Y;DQSL7qG)e0oc=}lWNnaV4(V$? z=jgN)F~+tffgU{_zVI7?zSt$0*0xtDX1ZMOnPSTzDQ_%sF8Ex!_uvDNkN0It25JDw z5cNSz`5?(vmgJJYMyqmTXljs0eg!T281Oc+1`swZxF8!p~}4gDcG4pANtF zGPcu(miAi0x=_I2yx)tFWA@F`|_d>@iWD-WIwKyqxiMnG37+?X_teDK%u0wS~-DTR8evg zTvG{~ruV&PF|k-%!{)1ME<=I?)mk0n_7gF*rXtM%Pw__*r~|K0ggM6!J7PWbd7pX1 z%2pc?FYKjRw;tj+{$4cfWdpk2wj0HRp#iZE+A&JH!E%q!tdIOlrWjoklzI!CeD{*nV_ zN(!s*=*36H z*z07F@sfo4ZXdyl`5wysgi{$ivPkW!IXEYp-SP+n>Nd~(BEL%FeTM}?gM(7jAKN~Hv_>-{Cy2H1+qWDl*#L438) zGxUqF(mH*CYKC1AiXbh@MPR~l6G~@1%wF2DKZwb5PaW@fs`}}IREB4^VU6&fD55tk z!x7R1w6KKr{-87QAP2>0gjlv%%~%tdo2H>#$O4hqTmsI9*Q1XlWtaluV7E|@S=HE6 zbjNCw33U&mxunF4#3s0cJ?EtN19v4;J4!w}Tgj**$F`ZbpxZXbe$RR1oTQz`qwtwuTkqF$7+Hz={F(4%_D0O7_QNFftxxbMuS<37sxr)r(z52fsgk6mx6NOQjd8 zFI2K-!O<4TAU60)WBkJ|u0&f?)(lBQ_IzS@+WTpX=bE36OYs+VSbc4v1q2hccnek~ z;qH)$i}Wrs%j9SzNr_@GPCu-;zp98L8YrpIS9e!SHs>prjyg(Z3(k?zBrX-w1N9k_OL9PLFSZi#F z;TW9paAQg#@$Wq{rj85Y2QBr8ei)<7T+mZli;U^mgt<=L6td?rvjo@$VC6WVJU{Zm zVa8;COc{*<2}PUGv9yYnbF4l^KJT0-8gcRk; zN}qHv5^;9bCv&|$fBytqZ9J@hr~x|xUQuzyejbKNmsq1+Z=?{?#~wcsMH|}pg@PiF zRPqkxY$URLT#)W%ui?nchdtv&Hp&b_!b^#aNjdS0qrQTysmM=xy*fi3*iv#`8EFtW z!L=+Ye+i_Ky|)&)YMlh3IcD)3Hz0RM53KFXK(L(7oNJnqk+1jCgu*67j8v;cbyGxiFq}*B*VwW z-iY-0X*o7^OC}f&_mPnEW#)Ib?{i?Fyp7?{Q%3Vc5OW%S(jbF+vROINEb;nmk)_aw zjZL-Z&Xk6;*#rF!_Bs4gPvxi*f`JR-x!x zIz=`rRVu#X-e1r0{R(S1BE}ydO`zH?yi~|H0Z86uc<;@sWZ-Y9*#Q~>PU5uCR2F_~ z6fBF}(swcylJaF99}o~lsqzUAjJSHjetB|a?34)`7&@? zcWa}_vt}E(ig)c@2Avwh_p7ymrIUypvKtPs$I1Du*CWCv+qWT(IL&Y7d?R#qsto4z zU5*qVX0}=%^+_MLF`Xq6<0}IMf^tgNKwuTUo*Ha@b109i-w8y|1_*lvvl3fCc*-~F+&_!L5411*D(!9cc>*y&`8=SaNt?R6lk66NzY z6^$Cf?nJLh+~7-*x;GFe3}101#`M4Wg`g{ZHdZ9|__pEcmUUYJS5^2e7);pqe&B7^ zAfgWFQCp~|V+JmqU~|jTQ}y5~fPJ{qU^W*Wr))%eX%_t(YFpwSeMeH2N6Zmu2EsOG3Ljn)~!VY z*V%=)p4+VjWLx6bq>24{=U3H(=q`|slM3_u2H%01q79js_4F+8bsZs!gcl9B`(7*cDej2E+vrcVst}E?U<>U`N#D_aXvjZL$tw z`wIPjrn{wg-F@3W?j7q742*fY$IpkIOuivVl+V9O5PepzW)4{bRGHr@<*xwozx+ZV z#%}c_H`sOAHq)Tn&{&keKViJms#3JHIoe+MXZo5N?)YY z_w{x0lz7#RKlg7dDR||#;AG-w9cOLvEtnzWC3dxwztY!ehWG!`YJD2UObh^j3%34J zP5seNF|jeSG5y{8udQ2u)MNj@TzM>i8UOw-SDuoBoSe8UwU~jklL5fupCx%L%>UVt z^{3%K8?yfR|2_>_|C16+C%VV7mk25Ng0~OP6)|imGw{=q=V0FU?F|qZOE0+Mjy|hs_0wblhLr6M|5?Goy4LBP|}oZE+!7 zN>1r}r4rDyP&CU8LI?$+7&pdQ29HBFHiBMK4%P3(X*N1>Y#b9fxAfgswY2rqfNW}y z`(tiIREw{GBJJoJD7jX{@?TW|H)kU zpM&)OQd!6HZ*E8W|4v!Q@}FIae|7jX3@xHhL)~Zi|3eb@*H8cJ0ROcl?mv&|zu4i3 zv}hT>u`&_SvNJLheXfbm4@Ty1pBL}H7Q}IUD)Rmzi2Kv$p9FF2pPspY2;!to4E~5E zVHnvyWp01l;#e73|H&4|$j0*TqPlNM@*m*D_1{`a>oj**q^ zQ*HM@u8lKI&(BnujE^-()9X*HfCeo?Oo9JAo_FgHD2`@LnXE66Nvr=7gt%|I|Am<$ z1$#fHUZWToT*^(ojbCA^f`-nvLu9prW@KJR6(&rR_nM z=|~9JRp;X{zl)>mhU?>Lvd9$^RP(RiQv^efLJ$0MiH4t5&WAJyOf}F8UHGZ)Ox> zGw($4ymNKA3woQ^XHa1!T@r^Pk6$aTT{)crPw5=dwM^!R{(3e`?+@LCkm-bAIfomt zL}9_e2N0fdT3MdQtrvpxin*~oTg7@5oR>@~)uvKrEfaGE>KkMIg~L&U(b51a}hAKr_h z>rCTYe^~@|PmM1p`d7RX2h3R~&RUVA6U$j2j*A!sEpdl~NP+C}3g?C4C<`Vwt_>zO z6gUE%jCd{3J9lu)FGp{}c~+s3BtOM$uHk+`0F5}G^1V;UMT1$h|$m0`>Fm zmJ=ith$x782_g8NY1HgSp+xtUS*|^kL+AC?d|4;!t80_-e#;4y(i(GQVc%LxP%SO9 z6x|qF3*q3X!$#`Y>C8bd+3}H6B)K9zCwz%6N<`!1YYekv{R^S!2oFMkgb>Tans1hj z9WXa9q3bWaQ(F>FLeF%|shtU$(`)K4T9X$L8$g%fjXEE=Oro1n+U&JRX1m>G*Jo;nV}%l)*!T89sV*rl zF^`7ATe$SQOc#+>&?`#}K;DSR+~Lu3)5Vn|A5KaY#9!`gvC$|m_9d1e0GPQK@bgJ5+VE5>qEKL z%U&Gz?((1<&=$elAdYYQgOR?f5ye8SX4BDiui zN#R8+dceeG+yMc98LoXcam=0j8gG}IMylqcbyQ|s+>~p-Xh_@?@}lNWnlE(G7u9L^ z-8_>!xh37-e)8OTGrA+hVj!>#pF1$6jb<^l4$JA#Rc*gYwo-3-z5>omi+O>wbq$i| z;#Z2NY;jtsBap8;Tjh;C55=J?sFRWY#~bo<#%d+%fY7~(OU_1OOO~*#!S|0W$X5z$ zk+TB5@yK&rCNW3is*Fl~%FcAju*?F*2Px&OE*Pf!96E=dp__KDns=ifC=wFaICV4GdH%Ayug zty}Q4ZlkPEd&ibMIXd82Lb)P$-qvA@rv@fxd_xENo$m)-K{p_^yH+1sHXNf4I(cg+ zGvu13n3;j;TZSzXPAa7P?=a3>Y;zI1ZTfYxdc3-LFyju>u8}pZr;29I+d1ZSt=6_3 z?}0bKI^83~bK6OkAvFELvxuu6S-odiGE#vT1lJ|QG5Fst5PT}`;X#ZuyIX^H%B|de zT{6UCY9EvQq)GbpNDJsD2#(_tWohh*nMA2Xd{U?|~LfaqdYbZ3Ox3#&(J!g!iF)(%@Zr;o3(SdZAs`3r+OjHovKNabglV;_Rn0 z&+M84qE1u*h?#s(>l!+fVr_jy9Ylyz6W6NKKHWFxn1=*s3O@(OZmBlC+euf$eQvmF z{A}XO%%OI8k~j7|Vpa9ufEVy@DL0Y%@u~?gzio1KF91K>`0NL*5;g~^MqOcM^QHSn z`_Mha4b?L69<;{k_H{(}H!EfqdgJXNRzKXomKZbfbkW2S#DROOQw*k!aZGT0;LltRb)L!ewb8Ec*INM9OJ&cCp$0rizkWVt$$!P3;LRC3E80<)=fiv9d3p~)p(6!ZP$ z!l8S5wZcg+^up%%3l0ivN;tP~Q7g*i?R8zJp6Ehxe>zLD{jAI8zoNSw;dC@R?mv3uM_td*iC^9F z#mDMwsU?_#;qA|qOLuYyHT&?K*F!(ihi#%Oy*dEFhX#fdXC6e0D>O*v7WOPRRgdbtw#ec>h zqP`iHEq;OM)%)XtGHiRS$BI7~i5e+zNGV5M_<7Q6)@#;xw+->Bz!O@f4DOZLHnk6H zR`Jq3MbkrS>(%?Y(tEazP@}c_wUe@wtdoX5dSs7cH|X&KUXeAFtykcx&`s*K>9N91 ztDV$`BDk+@JK9aIogN{K)KECTub7>RDK`I0Q2aFc8k5}q2#5wHu1O3{B7p`8#n6m# zNjl9rdeo09Sfy2pPV#rn%2=zCG!IH~;?{u5e1^L%Q44fHa~8-iq=zubUbVi!ZQ>d+ zFPT+Z0t{c$dz85afVoE3d2EA~DqB@+^U%U#wS&l;2&RwW6S(t8qR;Cqc>~LwilgZm z_X1a5uJ!Tm^o-=sFc{eDn^n56-%79D(>N12%4VF#t}8WF#vH2<0y2dTzoCoEpgtu3 zd~%|ZS=5NiSQ|JkZ*rZFI-8Z8bI{b)De%%Y;hi~Dd8wzxUH0FYK0K4(Ps8vD4Qeyh zh(nR4qVCD@GU*XDvCJ4YW4!|p@ydvpQ(0c$&V{fIR8ZCt@eKRvj{(Yj;AZ66z=3Ir zL9+jNd=EoKxn(57F;fINnh1Z^*?&Dej1VRYpGd=8)ic^;ToMhParC93$?{`z>_xJq z%(0VV6aFx%Ax#l-Ci)g0-g`Wqdn5e>@a+KMwG|HG+bET7-bDIEkf9Z8Bz|_vc}jsU z%PpON`$ZaLjx&OYE2TTL)CRe(G3vmoajppm9qAziyn&tx`H90!r^oTHUcA*wn+bI1 z1U|vLh8r&FsUhl@I%+fP?S!7wVJy!g%*;D??~L)TPW=>)#e&i@B#n~|=@}N(li~O} z&bC(p0%xPa6)4y(DN8H16I}nKAsQt$BX^g^1}4mT;?rN&wy?eKV^virbSB9}7O;OfR+Q@~4g z;ztl7F`!DJ_0|(cYUC~Vmy{w8hxbZ#sEbZn)3;Cctpo6+cSnO&^!uUagH`qt#BEM) zJe8@M;Qeq+dy-}8D7Od}hIkM1OPAU-a$1JXzU@=83s8PZ42Y~pJ^8wb8OfY22pr;w zz9O$f?nh07nGE8hNfv3C!c-#C;0bRVg2|!0F+JX6pr>`EGjps{XCT#v4xo@){xW)c zS72m?psHi?QIZ34kvdPDxaFKE4$qSIeYZ?(i#DTn(G(y!f{SB$U0RqkPVB8`T0K%G z*&*b)P>%icX|lAq03W-K{$^2T&va%C-_*iPzD%eP(LD`RXnp>E4+>MS@GewvVfN>Y zc4=;}ifYV7X?Zi1n`s}5nwskOfCO~UMk~+C`FpSi?uT-iCM(rGGJB68v;_19!7veO zYVJP%JWW6iYf7Q&?SqPHx<+Ghu1lFJmrNOtRN2{#<;b@$xcseBjwZ6<)ie zL(2#zSXCYSiCrJ}P@@@&1+#Uh2YqvaYo{p9KDz3F@JWsUZi=j)5;!kCuAn`bS~ z(Zss3?$mh~$IDX$M`BX0iSuk>!}r%G=y!EeyKw1EV8Ym{A=k@u52OhR&&#wPZzmT0 zGLaTKqW}~q?}?7LLnLrSL`5LBQ{a}zL+VGKP5yDE-Yno_-8~!sdHPL@3!7(}4hUT7 zU#LWsY|~x)T>-YSd~vpTG78;yUr(E(It3p>G4bcr47tIJyzHnTW%s&E@YoYTiyStU z5z>eKl{o%xeEb*(76^3n#Eq}of{gV_Rn#vmBucFW5WE0GbRBRuLxjTOYXj-+Z^oL+cLeT~*YMa- z<CJE7JGgE#VI!kbDlkcN=MC#M-Io%jl%**grg(5Vg0+V(#DtQh!Gp@790nqY@9A7X5IJEAIgGYF=$khzQ10XlPqT_!%w-<;4H-D znCFXDK!vDq&!S3yQC=0ty5c33cdW^jJnqPe5S61UAD|Bv%^dm*s`(i;r0t`A6h5Z^?=7IF`*muT$SO zTf*bS_{Ag;NK*3T&JTqDXlUcYktjVk*Cr2~Bu9aIQu#%Q*cUqo5M`f>D^(bi0MDf3 zF#toGT|$F?$^*`meCjC)A%UL5ki$+aH>biz5P{<*$`0U6h9k`d5ha;L1!m5QmBfO9 zZC#!XcPG>M9F384L&MwK8%sx|lwhNnoLv#_A z$Nu*r%O=PiaAWqmS+O~$CtCUt^s$}K-HE*rHgPe!8Zh;*EkG$3!5NP(GlFUTKy~AN zpismWq+qBq_iTdXHdHZg#O9#Qh_V!Qm;Yi$_k3!3U_V%oxX#_tR{T2pzTcPd-B4^c zkzb-D1|0phNcWnR&?2!4Kg4_Ce2Z~8T+`K*<+P*7S{N2fJcy9Cho|dIRQim$GH774 zO=LjS8Qp7dqEcXh?X_pBVYLwO3zZ?GQ*{nC3 zDYI27R_$ehD609Wv#AG7;7NI#UFESUCs-=1l*ERfPp>1{{>hb{56#)b*>g>I*Xf^xcSma>?Pgq;HTLfJu8VQ9sz<# z_oUTRVdW3lI9QgRJ$2<-Foh-cC5f?yOvyu@U?cg2pF!}-8ON~Xf`c%^B^!r|-7%CB zTAQKN9c zk;cWHjUYYfVD{of)j(K`ydIUb)GyT86XgAuINq_sNF0=i>r{vc_MQ<(WyysGak+Bj z;o4b=Z-<)C1fFx5yZFF=5g_-w%nO+u?jbh}2{Cc%MA~AxIzg z;_Rf49+_LPhI0Wg;&++e7R{Gm2AD^AM#Hn9FF;W+AM9aP{$9sMVA3I|0FH=j;6ha$ zl}#QmROdJ3KM6!dVoXkBGioe}7=l*I*_%NdFKw94QyGN7BWS=*Stc?2xx(;7jgt-Z ziJlD_oKkjjdGa}%8q-KI)PQZmj^z(W_R^J#-e+^Q}@ThSlE#^rMVT{@lPQ>UtW=%Kn z>%wkxI)(CI4|HeI&joW14Bl;pdwvE5fhcPS59R|{Z6Xh+wEAOpYjEXTM2?0dz4xTr@ z_V}2Eo7B)X>Zub9hzWp*eFZxwdz}fsWB6uP<)ED^prXEK?j%4ODGJ2ysX6t4m*w)bmj+s9Fa~ENK=<@xr&&v%#giP|J$pW_dB9v=YmPcIeIbd3YS_YjU*V6 zlnNa%D39%AcTTq*)dex2 zyb>!$DIHb^W0o({d(bT(Ca!Ltdcp1;)?9k@PVw*4&vYVV0pwz|xO4V;H3O%uFZ%W- zgtDXAJ1n){1B^$3NzH+WlV7ZldeDcjwq&n+^mVcK${2TviYw`0GcpxclJC%d6(=2Y$MwXm3vVH!4R$0< zfMno@(ZG_emUUK&7MoXy17`JwYTLj7&CiTBieXW%i_>!U`F(3%7A+m}ldY>k2e8NX zvTVWuz7xlB&=;RAxJV;4)dTyLFT8xlCUxHFd+e=jfX-SWR#s?PWm?#DGu*ba2pl zZLD;Vn7Ee{p6D!E%xFNIq?B!iw9I(g>(V}+ne}RpI$R*Vl=wf`4QPcm0H+i5u<^y& z6*?wd!uQSFp)WNh{E`{*cI(!V;&(jfdqwNPaqL)b!nvt8G+l|Qwe&NoejEMGaV-(9 zgVA>mhLSg)rR!5v> z;g#l4U*|x zn^klgKDxKfE>__hc{OZgfjlyB&kV7_=5luRf-?~2m`oZyrkr+PbXA~3jCWui-$Dfm zv|8}^MzvzFbnpt%Jwc+qS5E$5*`FN3gyo!97oL8e<)@?f6S} z%vcV~&t~f5#^!FIqk^Gn4KwO2cs0qW{>~RDI@UvRrW2wn?2Q6WfVQ2f7O~0hxkm^^ASxkLPh*!40(NtTrQjhhV<%u@M3#~z_WrzG8(pfz$J;NBrSZzA7b)i}!rU<3J5459pn2q|+Q zB|yE$L4z=&VE0;o4!EgR9ps@uzm<)qMGpnS~K{x zK8J9 z5iv4+W7i@2@AxeP%Rlj3CdSVh7Ba9CH?c4?cY*sGi|4;aq_1{VO-}si9k>wlv z{{r87L%S)fOuJ-w%DGYyfB(Xd@@twc6h9FOKp_)t@3SY$IW zZF#6{1vL98T#{lZlv$!|`weh0dwHatP9~-uS;1%Dlht#w?3=OC2k(!Y*NKnGoYvz^ zCFfFEm5jZ0-nD3=T!Q+aPLkvF_DS?>95)`hK9Hf$+DTpI!;dRHX}T1tOwog^J`zvU zv7UEbcjP##;>H}F7FXBg6X_59uv58uKk5l#c+LaVsxBB2XwQMesf7g|9Xs?O-at3Q zf5nzcNvUQ$e2Kx5n{DcBrrD4&nD7WKoEW%!BR`iK5%Ro+sQLlYrEpAl)vh{gpKN~B zBphg(q~Pr5oo1cTD&lB-fKK<=c-dBQutBE}!wZGi0wT>6{l!#TwK~us{hNoH_6 zZYmRW0hj;5Pp79l$B#h*4K`C^Sz{Mm_WQdlkbjp>S-&^WDzCP;1 z33WHF-`gZ%b;Q{T0&YCOI?KYSl~=Pb>SYzxuJ9g0CPnSh0OxZ2BJKI@cUKXdg)n#4p zOVAz2nx*t4-|h3@4eJx~8lGz)MYl+3T5d)1sT% zS_r7SixH@_0+4UD;}JuW4$+dPT#45sS(3HPgS`QSwnqltBVbqaTd&K$%G$-J~JUr`WJlYAI8Fno*cw_a( zPOXo4EZXf7*#k9*DEcNki3@^Ne=S0>F4mMY7Br6=U9>St^TazgtyiRxxYy05SZjhg zJW1#dwIRuyE(V)&C6Ks`PZ{he3@96=u?QK@A(K zMzhj@{_`DPl;_4Nz?{(?o7t&qhxI+~`n>jouA;+gNmeTR!D<9J3-PTbX5jl7ZVVg) z2-aSNpNij>0JNdwWMA%5qu;4&IlzzUC^r-XvtSq_mEH;~;+H}lp4KW|37qdy)eI^^}8a<~gC@jDxcmfwrfDi8D` zyxRsMA+T?_7Y(>Fsoaj8H~ph6cn3!J4es@vE1HR^Pp6=3_Gv4>4+O)BU?u_|IUj(M z?<>7r$9@Ai0IaM5+!6kC6HoQ+;3?*SeOAtY{3iOM3hYs?Z*AAMfAvajab2lXAnbL= z1Ivzy2pVt-e92v_WqbeT$M{@u2iUM#LEEr-Q`xXNspzC_4D+Vfa(zDM?+U4*^^?Jx zu%rvbNA`l}S^(Yn`L3vs-_SdQat}FdtHc=Ka~Y-o+1DYwD~uBHtTU2{FiPkRA)MV- zcZ8{vO?ipJ6hBD=V~TdLjjSc{yy=@ftMxPJgAneCCpw_tU{nmUB9{yB9q&EaCT?Kr z0OK~sds48;u`9tk?t=Yc!sUyIrqgYdI}nXgOB`GmAL~~=JNznOZr@*+tA%&?4I4xw z0+$;yNsvL400AKezBlnH)=_dvHP8&qT}7XyYC!NSSN{OpU=4VE|MbEG_3$(e;)~a_ zeRz&7Lnjv4@w0;O2%8gE|1{2F+R4C4cNhOh@H22oj&Hkch@feOmmgL6ibY2QxVtOR zr`mILXd{~*bH;6wZSbs<_0lw()^Lq7EAYfPGIam?EF|lqp+P==4E$}=09T%H+~aOS z|3XwVu!W5F5Vv*0^0HGDYIj|~n-X>QPI8hO=tM@|#3fFxH#=fPr6ojnzVQg>I&H;G zg!enkwu|HpVLnm|*h@&&ktA(s<(wJuMWo@_ByorpM?mng*jJ?w@E82k2^!+~(npf& zNM8vJCdg}AWg^@X{s;d^kkxRn@97087#i0#6VIf}SAnbuOg-@?I${f!5}hF_az~GS zm^q-k4w4EEG$)WI)GN5vPwO_U8*m%C{&+^70OYqsF zTR834`d9&6e;(p&PyCr{Ivi5^zD!E&cd)||%CH_BQIkd@su^BUjtQM2?H!*33=Pph zIlu*92gVC!%F7<4+5<1dHZb0mEzm&p6BcebV<(Ec_q!b6IqRCVlNwm61z(CMLYd>1 z{M9y3zb53JQZvTab+QHS{X~0jqK)DF&0g>c=W;I-hwtnwPSFJULdjlpXDl(1uch|K z9Lw_B6h4SMQgQSaw3553}`Sx+E57)q#;7xV{F&W8)8CUNVSyS`)vEAHeNu%wVrUoo01<2B0HM z#gAauud|QU8Q1QY-jX%hd2)UJcrc@w{#O0mdQKCLEJ^w{9HB*4(oPZZ;ppTSS%IxL zA0NU-r|mFq(3jgEXFkw^l^~};Co7A#ZWfhyysKuNqPRa~%ZV*LgNxq;a}icmn)m{0 z!LxV#KM=a>itb7D%S8bd*)bXT7eMPkvm?MxC3Ed&r%@+xO831OzMis5nR}5&O*5?H z@wROkw`bW`r)BsW^Y?g{GTnRu8(}UEernmLlADap;~>%lcUsMvaFhIUU|!&U8E1?A z^%Mf{blptrQJ1{%jz$kJlOJm*O6Ml-dXU~34~-wkIIP>)K(r9$W}fc8Ki&pcKd>OT zpXeE0?Wa4$h~7V7AkWEt0^i>IGA~qu{nm<(pUf7198~!{0zY!K%)5ekN~SG~8PS*B zueST{cCcNTxOa`csQVBY^C~H0`Rq3bU$3V;RCT)oRW+Ul@=+gYFE&KK{hVERV?dfg z)$MUq0HGpFGiJC}3?B%J=r^LTSJbArL3@CzVyE%ajJ%J%|9S6E=cI!;zjKT3QPHW} zCFZLXJiK%b;-0fgX&d7@{9+upO1lxKr{SWJS?2|K>cO$Z*LPN@&^*wjZ%kCDuc@ro zHCnUo*m#b14!Lta0Y0e;R6~59J2bgvhQO^6ZD*VoXBEXojgaU!CS9XsR>gV1MZ`fI zP&a(;74Gfr?;QvaPa(V+NKP|q?6<6$U(~JHs(CZaGs3U=ZHQ_(5$ZhPv0cyZsU41r z*q@#w+g4Y_Jj^la9_;wtG2Ah>Zn0(9y}>cUvBNR%hT!1$xadLLIM4V&M%CwIn+-=F z0=}>7=zJ`^Y`lCv60d!Fnw{a#4%>`pi^Z%JW9GOEtR(;kEln+tmD9%b#*vlzhPBmw zs|hZ~y7*Z&C%a$V z)7sT|snYfYo(lS`mHcfAQM2{B?oe|a(+H7pR zYkFF}=q*1mn!QwKmudOF znOj-GS7rju0$Xa)e-uCe4&&8cf8M1a)vS84I|)gPwB~fUh;bGcV`xJ4#&X|{B~@pP zBqOxP$M)V0|2>0fhL`E&_G`;NM2t|Dm;2Q2bPG7-g#aVu-Q_S%NRQz86zQH?I7FBG z_BN*oL0}{Y6M@Ihd>|)WNC~k3pL0k4G$&aoFi$HtO3c^T7si!OZmDtcynfA~ZOtX^ zOm)R{g}PD9`eE_B|M@P#xz;2w=+=v%4P>YBMd}5wjfj7%n@7O38`3zN?Ek>~j#hd$QGmRs{>=A`&}T}G~UuoXFG zM-1L#u2Zbf1X&-i{14N=Z<#v8qvQ$pl7Be$#`}^mgJ3IHzZp6k$SDviQ%FL<+sk@`|d5^-nB6W$l zcBsO(aYnQFI_(9Tdz9DsZV#En9m-FDp(F9TgmBdB0Juq%hw?W}$(el!=0381%OOq=K}Xs74hdAGs7Z~7XuC|;tm8|%5Gs=K4;)l_Lp0_n zt^RTV=QZEKIJaark2sHH`!e-I)SrH%{xtxhmns6P_y7xQw$QJseo(J8p`ynlUp@)x zqw2fBCq)8u{~_Ib3kdgDmyi|@{OwP=j|8m z7cTopp94PPI}Q9LwtjLS#T~cZb-b{@z`xMH;IFd2Grk9W+JjWyFsm> z<1fKUUYaY=M|QxcU*tp;*}~SZIsVEKQ&i>@A=~MqT=(jQAWV>r`|D*)B(6lVY=8- z6i2Q6dceI&VaZR6YfDGnmFVE6;+3)d7Bd4`wTltH7Yx{)DbL*iw6BeH3?fRRHr~881rI&LFlWQprB@@&>L;@%jgXMxcQEI;i({Mo?MhpIs0k|Xh0q8D9LvVQce0$FXks>( z<*N|X2=b&v>0i-A>~8uePq64y*)EHFv{enIbF=Kf^L!_xh0SvLofpq4c%2U?jB2jh z&$1;CjcT6aun$^knY+5{&8&@QB(bs6l2cQRR8@2|Iw}rk_tV~wr_!pmTTUYBt6RP9 zIhU$*^xD3^hn-ecx9tqZaBs99r%wFYbbBRq-*k0<7ku1w{{+_~T7Q{tI)CYl6KL&Q zn_h0XtsTm<+PvSp5cJOTYTeJU%=7*T#WwPKPSG;*evjdPJTLz9ar3|rz4?CH^SCMO z@)S%?oV&^YKOF$i$*x*=mll0Bsyxo)@d)(6;#fjpQ^}kL|g*I>EKEMo>}4vakUVF7b~YrRudgsPXT@ z?wSeuywzveF%623a`R11NWPj$VE)E8Ot3ZcC}yUwm>5=2A|S={3XzY>I)IfW5Je;v z6nOyIkBO$YM@dKuC2JUtjzGkNyqCc4m~lMD-TZJwkz{XW?=#q*$V|#f5F(+XqIL|? zk_T?@yH#CRx37j65SvTJt9H#?`aO>$X?Pd5h>J+BYqP|?M$61i+CWm(?JL@(yRu;h-R}U;%WDN*m+9>F z{oJL*FiysNl09ERFDL07v;61mcCJJ9_=hKet(oGHtPh`no3pCsp+G-`suhb^k0H)F zI@ay{rcu=;Ood;VpJ|ZaTtq*X-}kGyQCUt~dui9$k-w7y;0Khq{ah`gamSm4)zn1@ zv?BK@#;@g!(d@NjogS=#iL2Ilm1ii1ky!D(!P_iLfdwEO334@x8h?XDLMFMnZQauN z5TPH-1Xn#^9mj6t-)|bY-dwnqs}Fcc)6RJyj-cmN;!~TTUk6>yir*#_%2w;=LSzk% zNm{sH?nfQVY;<(ocLRsHC}enA%wcDRy@-q00jaiiQz2q%FF!ELT7ud~w4%^b6^qpx z+sA{Lt~mY^V5RMiqOZ>-gzNe_spR=8Keh;MMPn+5pI@#^u@4!=r{j=7c#@*{R$n)RL&%q? ziV0)dx|Hi3`<#o8hQ3S8)|F!21nG)y^FU}y8`|3c)^VjMf3;?@1xL=)KV0`GNdUR}Q|{gDzKLe~#}oEa$ow6G zbHoO;{6N8aR!8+wCaO%aUe&X0BWb9wm?Fhq?eMPWU;}TbnJ*F!w_2PJCzX32^XUSE z6q#o#v^v(l_g`d>h&qx1!+~+Ka@H&kLRTc)0s=ngrDraj_jSb;L7lW;^MaD{`jm6R ziW_LVkG(h$mA@^-82`>a8T{F&HY;{#?UihD{OhrZ^(*46T?{Rf>7R?BUrfFVY7WRv z_6mg^Mx%xT9(5{44wYb9MTJX-f+2|@>q*ZFJ%VZ{vtrjGzlib!%P|zzD>n_itjY0$ zIuU$HB=av!2o6r61q_JSm#1dx^tMXwHij!jw)O_|XQDH`!hSUrL7pb5oDQJxVu9F} z+eQ-SiCJI2D9b@vIh@D=e;-@9*HvzWQDYQSi<+MAjnvIPAn|3iSq!3GR!gITGkRh$LaNEJ^=WBewx8D)IjH@41R*syu{>JN>T*|KqF$N{RBJRPn4I8V@ z$*{Z!D8Wy^EiW49{6_AZXCL}f~ztI8k&iwaStU;IR!mHc~~C~x<6b4c{@jq_~)?a zpp|8g@#F%G5^d6EQN-QqO3=7!&2ILlblj>-%|i}nvnLIFTIywE$8s)qGf6ok5hHpo zeby9srGr@H6IBM%SUkw!ntI`n>TDcl$lZ`7bBkP~>h`O!cM-3@X6V|N=;^R8_an*L z*MNZ45C*5Do<&n!$jdknov%$ys0mxO(V+e&oP`hj{W#MidnK(S{%edP{+09SoXQT{bD^P&ZcvOt4`<|+peMv8F@9Y*Q}lvSejVHnD8(X|I5(fROl z(!5!&7F^{W$%Qf(s)yRr7#fG@?$9|wL`X^7R5!rLgVuv$gN=f?gS&y`LM>x7BF~3| z(q8^_@elX>+q*vkd&=B$n!g3sme- zFDTg>CZ6z$BT77;uo;`h?^B{ruGtwJ;mH|>hjgoSdeF2jFgy@F5G^oOP}%^A0Q7B; zqCw#HP6)IYw6(=ng(ETBjLij`0d7X6Icrl zfcdzFNFKgk3qWL7A9C?w1=%SUn&K#n?Z$f?0C&PE&Lg3(Jn>BSG$ac3&0{Pb@u08Q z#>B#o6H18lTs@UgsAO1zPAqw$BfNZ18&2(A=yRN}ow;T_dxwgZ^lG={_>%8CX;C|k z30O|@z)qhdh_NOekGucb6W0+mQ%rM?hv{OhpiF|m-P69s>4o6plLC*3;j%FgBW zvKbe-mbr!(xoHH3i7>D*@G#IYFw77WMRidi@9iEMThU;w*RaD$0xJ@?eifWQS;>;b zJrm}cLRsHI-#pB)H;#L%N&fyrna6gEaH(_)$dnw;mNfjbuD*jfRW$yr*0GDumSxx3 zvN<0jU(I;>b_PXSH6~iBr8mc5<>yv^f^sgVs#$|+9vbkqnvwhPg%Xcj#fpj zm-;c6MeyBy(@DelyO-D!eHlORa2u_&VUzn>K7ld3-M_APLChK%weccVqU84 zfGFhS(x;-YongUJQeNP>k}SwbhlJ_^&^hxl(750$cVQmwf%KCoE8~<`$>O+N@|=4P z0hFlrUs0DYOT!4nXm6=pYkA%oO!;*N=?q$}<7~pVrscPOg64LL_ss1Ne-iCyWRhe` zX;gbKfg@u$?Xn33=wG&)hpKF9c!tf?6lBsn7!l`X0l%FspI>VZdCqpw17>5wROBv_ zPY#>C)b+i<1=CoC+je-Ahr{n1* znBcj|6iuqg>qp^$8D%99Ey~}Nza23LakWCP)yVxd<|Elnp#*4~UdqpCE(p0(zye89 zr|x2Nl8$3C{?KHpLB_fH30tJRsV=A_t0c$zH&>}DYv^EFC9tv{+8b$fJ(g8f4N`Y_ zP;P&T%-GzyW$W0zQvcaw5nQ%@N01zYkbK-qXA6TgY4y;U&ju>>gHCfuJxC@1+JMxI zGE39G@{hF-w#ovAAkD9D%nyk4pv`e}Hh4+%?{%7U7^i!$X=T5QYN-a_X^pt0hKfYQ z)#xN}`4!Gia$pK3b<(ucbT2EEDwG-v9#S1 z+U*uSdH9tZ5fYLeBKPwRbNjNlj3CV*R+4z3T$OX`Lz8HbKZ&m3M_6gws+oce3oIop zGd-%hPHs^k98v#c)2<`9WTz7Nw94LV@+pq3k!j{2_ayFHwNy6l3;kpb&OAk|8pV51 zJ!_#AlTA_NKTexy-*(4&bJBN<^_Ebc8AvDE}8s$fZG<^mX-_FhRowjE{fJm z)6WmDY~dG3EP@`Vbh-NOE)dK3&fY)KPCkEjYHk~!kUldwv?Sv3i_JGFv*`yjerFxg zUR!Q4Pp@JZGkh^(h50OVpy<&?R57gRu$Oa z9-r^4p%rZycBX+kOw*jRm@)E4ouA<0T_6=}9C+avo15kc#sZkBAua&M=gZ0T&2*4- zW1m0vUcqP=!^3)ilfB4AW3o3wo0ZttUHbCnxy_6nF@H7=-|h#e-tzx`y0{aJ(mSPg z@Uo8c7)&&2x#-92^!ABUr8&cej2jQi6=;pj?O7@BniFnF=}d7!ng~9?cGw(7xxRX8 zx_{>XBeJ%!9Jf5GeMcLVdUUCq$tYe==myqZf{l{%-g z+8T;uy@CLMpW~lPZxjpx#>XgmTJ{#Q?%!VyXJgeo$@gipKMg2+f5=Dfe;X4R(;Raf ztLN$98`1sB_{Yz>ZPv|o`jk2>k7rhtFqCjJmTK=i3fnQ82Y@NNa1GSxZ1A{cX(!_4_<>?_y)&wqQrg&)Vv?TvsPGQ=1VNehML87OS*x#}`)KXX_hsz``z7r~ zMS@WkY4A9I%wh3RG&{v>%&F=Zg#V*%Zc~HyW?h5cYGo$pD&KUbS;uhe!b|Oh4Zh`A zU1ej3>8nr)!Qon1pA&e?*7NL(DFUF)SJ$XTl|b^EWL@=6YziGE+!F_LYYw9W+!1!y zt3&;=_&&{7d;KKQ@a(3n|2rPNVSb9H!cdh`lWHMPMdRpUL%o9#v({Z2^2x7Mtwx;H z*p(8+wZd~OHS1z7S-p~tz`~6@m_PGHuyQE7TVOM^1&C zjdIy+eR()3N z%5aR1h2V`Z=XJ#&oZWAfgQouDBm;}S4Qkqs%K{60I)-6Msa>;LsniK7YOGm)Gb$l! zT6s^Zz7aUaIOYwQyH)X%gFl`Tbn38|d|W}LykHK{1ayiRbVI03(@YoJdJgY5cG^b& ztZPYCi$3rueh^~cP2Qy0t|Oabw##gm?Vz0#D|F zIcfL12R@ip$v4<9JmR|fkyw0|wRKj|n-9|EB=0zOh(bHNl z#Qgex%9;Y~7ssHNh!u_|Q>Je$MgtWa zic}&84MJCwlX6zr85!MbLa^M8~j=2yxjco{AER62>9sVtdV?OGwQN zb*140GiwpM#J;^b9cQBN;b%3l`2L-E>!t|u`j;p5bW%91Bdogemkz-Q-gO4`+_tBg z(JHqEXkS-Nn(Ti2UQ-HF>a*RJuq7fArpQMzqei{<7fDD-ggl-`O>tadW0QNuDaz(l z#1Ntr3sVSPP}xnRw`g%3QvGJi@YL9Rr{2U87k+X+;l)|I_ z(8$ZM;k z*i=HQk_NRDvS#CDw0eox!ewQ5#A#gKxAb5zXRolASz=otZnq=qYd7=WTlgv^eIM0y zFMEc&EBNu_!`ZC#Gq?apVW%&n{ACA*B-9&8Y@Mg(jh6)o`i%Mr(crV znUV$c{Wg8!(H;cVJ73Ntsy4l}v4jZqe=Y2ABfLQ8cr2fNImkYPn&1?&oRx=o>8EHn z_m~xyOy(U-LNTw!vF73WZ6t4hZ9F93^3ycc=ON8#m5O|ax&M$k`}*xf`BJ{GHpn(( z5Zj(X`mG^$3)b#>?g?S#23y$fC(T%z->RI7=0~GjYU9l9qM0zE#C4N~A78qS_xJlb z(i@#$8PDFzhT4%`0?DZ%#>pjaUb^nOtj=_N(M&M>lg0V-w&vBLet5!tOQ+Jpl?e#Q zZ(;m?NgO`eUHYmrJd^A6vhbl{pFK)?qPNVww_{SCJ3ctMMxyh@N+EejzoTJ<7$&Px zCN@q3@-9RR$wuE?XkubT25ED1Uka|?{rIA#q}mZrL+5v*q8`3?N@ zLU3rQXyPfe0oN#rYu9$x!bf2>x>`2tn$w!Slge)Jf4|5)_f!Sub5Ct<2}3n=G|VRX zDB|g{H{pjj#6iA9$EW^WG@?|mM5OM5GkTuzro-#!3VV(a?ISwlwh%jFFa7*g*q=CA zk35bpSBM5V?oDRKSA_`c_;&8w)MMmD_)VwE`+EZg`DnB~#I3Y~@;>S}fAxZbSNac6 zzs%<;%{!3fa0!hU>phWqRY_#AmIdNd(NQAyMWg}yhmF9SA0=a$pSU#0F|BJ#yvZxyJ;T$@5rrlpQ0NtkgfGbKR2F4-EYF(qTsFA znQpI7x%PQ#>mc&b55e)D?g_#3NU-RGYt5bv^*zpXNV7Jlq7*N^+E%&OOW|C`&Ge%3?8GkH>-pEWvw?;Som+q0uj9&(RoZeG{9NxW4klXv^RV6nIPL%Ic zPGl@jbo{TqnR3bQ6XPs;41KUDbGoto-U+YWE#0OSV~3FOF64d9^U2kLOT5fHY-gV) z{kgAtkVN3wlB2c;j1UYa#10kXXWLdzRq37s=NXl4Gk8-V7F;(aH&5QPf^7=OS-8hN zr7-Ml>n62$%mlC>`wY&CUvt7T)s~T|q)CDmbM2dnH(r6GzzH3vB ze2h%h;n{X{R%uBUt`|Voc~*TMt8gQNC(qIbZhT4LOYD%o^>+K1d_!8bE^>6f@rJH! zzco&MN=AB8n-f4~crrYh_hCgGbNH(JDZ83&;VH)V(*}}tI#PO{BMz@=CAtguPj`DA zh;2|{JtF}%c=5$@VunXv41#t+9rrfpq*5&1VfxCdOm=Ao;s-8IIX5`HNM?a$Ve)?Q z?z_H5ZeXHka^NXPwsIys9XMaJi%_Q~PCDu+zRId*#1GZwbWEJ_bt?$i_Kdz zwSd^@Hu!@bF9(ZzzHs1*aJ-slnH%rZ^#oBDV>?<#hS^K(p?hxeM1t|E=}QwtC#<%~ zBxW|O0MxQ&MM~w>HZ#j-tb}!}5&jfKMY!IuT47kB*~y*^q=3WCk4qpmPBK-A58}Mf zYPWaYx8Kf|={$s{?|kuTCkByfqTJWy9s$+i4iKd0Pb~ObGSOE6bAgLY#!E_{8FpIl$Gx z*^A`Hpq9mwg?*_-i2&XC*Vjq`=2}Zn;Xc9b`=8!Qe#{5$gAPoYr_H?dkassnmiABw z6wV4e_v|&NfR>59gE#m+yRV!uW+TG47_j zNHn34`!#`rlL=qXE&S!%S}nP!tORbx-&&v>1UrvF+kB&KrTroF}myP8)G-FauPdkW1%uT z)RKHLfFJNg#_^RPX5bwbyqefYDX5xI+z9Q%W`0YivD3Y47q8Suw3H!H9h>X$~9OEwzCcBILqI{ zJrQtdq^%&fRrd8K{&Hazoufsn7RW7Q-lp|FSLSY^H7r!Qk*qY!MR zOCCS}T5ebSdVPP+B`Xoz0k&6khWRgZ4H~xJDH_RX8qMXAqjE7ffVTvx*0#}i=Jdp7 zR#QVAN6sh>Ja#!!ZkyhaJ&E>T(HygpQ86u&U*OB>Vp?+Llm^(8dK&6x>6Bn?%e23% zw~~h36i`Y97S~x>AH$GW77QDF+Y25u2pLVRgNswqHUKa&mQ}Fbz;9q)ywSm^Yhvze z;c0|ksDitW#ne$sp*Cy_dox_^dDGF4(a|BgTLLzrR7N{1Mwa%N)V`yNC zt%F0FLo!Ub)Z+7zT!yg*)|KHYS!*OfuRoKN(Wl07ByWwTdeW^Q8ES+M8E6F2VGUPH zVbkmAn6IFvm&$9a8t5aauE5<>nk%cS>jv0clvZhKGBQ87JVHPhCpLP}$wkWTAh4tw zL|be)NcwSN{6wy4${+4%h(5K2i<<5eQ*z`LP_jgj#n1OSe)tw=Ate`V zE-Uv-*~;>X&qG&j5rTnK6pX!whRU(3%S!iWzmBGg25(TGI&500S)X}?cj;?gfvU@l zT8eP53tm5bB;8ol#+VM|mozUMy0MLY7DNU}mfEtCMEnDmG_B;62SG znAr0AFr<^G$qBn^(LdRvZs{K0bHhksM8^7X5_A z9a?mh07_xkt!q5}ynkkoS^1J0t^V6Hl3tKA^eaBE?ZX@HoTdDiEMe0J2Ga+Z-F4hK zHj9Zdmf6YNtOQne)5W)3QbF+pY%&~BBWEfgtxxn~@C$%)lowd5)zr{yVA!mGymM!% zw9m+$nx;{2CUi(sQO?Au{2X2(B3C*trHMhB*K=X0yCXXNrCbV+7lq!1+;jBC<4Uyd zgu-;$oHILw2!W_UTUmW)q*~04A@H${3Ju9;MKv0yro?!WHavjr@V2acnq!=yk0&Gv zoDfeHmj&*4>o`);cv8hQqpf*0C%oN7i>$i!OB@GQa+&<$WVvC!(#Q5!<>r`CCndj` z#Dceg#Hw8UE3!cz)d=$qNJzJ(o@lFdG|Du4%SaH_5G`GInS5R96n7=-V)Su2Z$5TSh7X~1Q7tAGd@lw8Y!L|d$DFoBG-^4SVtLo!ez9q{TUK@xAuG$t$w~g@4Ss3(tu9fK(?(FP+F_}N znFYcaLpM_|H5`=>zTOP?_YdxN^D3B)PJuPfSI+ z()Q_z`Ue@NH*QE9fdQ78+iFRVdFtoB!sa%?>Fr8XVXtjHrOu2aulXMQX&awE?HI!N zTOBU2Jn)Ki8C7QGt!c-$SM`9YQ>9%(qx_5Y3m5C%tgNKQoG80cPd#O*Na7T?G=4q1 zN3cJUKH~EoZhYSu1`%hJntR^hvNukjNT+3+c21Ri`kD~9DT)`(ei}SLZZTva$E4=X zYj$gW+mgkS3D0JjN}k)};WcdC(_vFn$ zB?`CGf85N0C+ehip8EvdgGG?}KOl^MX|=z=9xFR98~48<#((3hf3ddzMe+TA77XV4 zNBs5wMyg7wXlbcx{fkunZ;C|Epkd;+Rbz3yS392OQ&^WDVt- zX8>zRauBw!@*m=_vb!WD=A`uSpT5$C9D#5?qLv4SW-&L;kLx<<+8;ZX3*ui3YghZ& zj5@%mc1*qvLe5EruEnNjLZ$6nT`W;{&#yRIC?v6_`WKkP`k7}XnC~3Wl$p(8xH)VzPd^y%`3pt+;4cT>HJZRdT6t*VeWBO5$kySjJ|trdc$Q z_zbe{clQDpbMq=f#fR2`tJBE!jA7G^1YKk*nvGbI7zG7vX$c^H8i(6QNd^@lEhawi zl!l_ibDt_L7L*j)5E4?R2Zu+Wt6WE5@>A~G9BvVH!TY2PVnOzlm2|YM)Hbb-;ytH7 zh{j_yvCS$v^2g*r+>8vJO{k8Cum2;4J)7dY5T)xq5wwI-um!fI3B$TkT$TYs{v|dA zbh+mLVeR~TnXt3}C;s}+RR8Y)=zm!{{}cZD-&e%{ujK1Ls5B4^)dJF^EG%&UFrEJe zN(FMEf63VY0(SnJ;suhgz!%$J+72lB2!+!aWb0=rDY%1NU4&!xYKzeWBj29z)6 z{BOa4gpCu9?O*volvVGa0{>Zohl9l6FN6v_IDzNvT)+Zcz(xNz`~`0RhJVt)JO9OQ zfoY(;HxIB92ls!p#RIJSPf=j@Kh^$K?0;1QHemp49ax-~gX3S>fA7G`3TFUJ{XPCZ zGw`qKU(fbW2Y~GBzdQ0@JH`fV>u=x$UjG~az4w2VgZp>+zXS5mb>MUSyRE;^_c!m~ z!2qbn%uB)wls5inEP2>~=l^P%gM|YQ7)ZE);XhTO|CyryePR8VN&IJ06^-r8fw1j= z`|t91{5>?6Kf0I)oWeHd) zP5lay@RgG3S0n$e1ov!5VV+ znGkQNHW-V?b>p!(VQzIzl0TqLp-q+fhtvl=p2rO^A0BJZaE&gehlbYj5hzO@HZ#k3 zi4M37dOC>cBg(A!5P4*{aTEr4IV|_9*w3=AgnXkTqfiv~94#3UK4bWZj91^YwSm3l ze|?OL8}DkcDPeu(*2so~4f*!QN1L(RVK=(f(OB*lU7At`U0{=Z$T=-QI@;7@SQH$w zzKSW&-B|V|js02DrdzEDs(CLSRe~%!U53tD=|@SQFJv!>Eh#B03Agbli}N zn{ag$7uBtsnZ6iQdA3<12a9^tYi0ZL!h!LK98hutYz1;U;N9yu2ZlU8V9j za{7c$sAux{CM+J}YeX1i(T?A)#*H_!Xi*%TB7t{dR+g**!p@0TRMw=aA)Wp882J<5 z1D>0ui5#d!+>;|fz9VakY>~nr^Z$$)hNe>5{($%3%Qq#w2y#0h6^6b?OL&0j<+>9G z{RYttinxrFI6yWcx~(qonSbTHyRt=UIx`g0y<^#1pO3g%{0Xxo6x zDR~f{P$Yb@1+hOjFvf;FA?*Wu;aZui=+lmx7wmW*Ra-8ap6@3tVj2B~b{lm5GW50B zDf8B`7(7^q#v9f=%t6E}8e!Xc+D5p#@3fH7o{;$a8+=j>%`L@|7pgXd#I?|T@VI66 zCCIQh{&_zb29PU8?>6t2>V^=Z@3swq@?Z*jg*zg?R6;sb*oMmHE^-$Uzf(9^xni%7 z^by_2UQu4c>Wb5=4VEtf=e9?G&xBbg@?A05;(Fo2vpZZc-E&8ycIYe?zCDy^U$cvD zq5crzyA{g+klJ&t9)hVB$$R$E?tzLA?Jn;bQp(@pgkdfj%I5mvE|LA{YDhR)b%~tY zNc)mDTr2V;{IF2KUV8App*dzKal)!zhLwQLT=1AokdznXetQ+Q_*j3AYr zW!%WlXF$T#*gBLKkAA8tlKa6m*9Z5p`{H|E*ow6^zuCdV^y6%)GR)L1LLT}kv6Wgt zIT3jWfij$o=CA3LGS~)H-hgxr?KO}j31Mr>XW8E#IPEx)ym2i7cc8Ord+}EkIuyBZ zzKUODY564&=nIEgn!wl)A5Dr!&GAjPoM8EaoTHIVvDo8;l{g= zPqxum!m|Rlx}~$alimz7^o0uFF=3b?99BU65I4m1j6VdV48>LfULO@h*_Th*FZli^ zC(qZyeK)IM&#_+mgKaZ$lJ`?_toizbJ4El@L(bDv@Avzkv6m%AgH3^PEd)ZMP)if1 z5MPltriZFMghAu`a4toE#uum^VGiU@WA&h|7RZP{u?JvyK~BA+T*4QJClkYg-QG8l z<^s1L^&Ly-b;ZgZn~@bmPf2g;USr=7jB-n+3+L(9MvbSIv0lUn3dBr_djf?{JuYBP zP^~&M89)h5LLt-RWS|jtI1+|}Q0R@YQJP@KNN=Aq?|7Ss7W$$M$J&|IKg;BTNz7Nsy*XCI;ZjoO(AAlR3SN|(GmlwLI6^sj^aUj0HNgAo z6@DuLQH;9|#b;fyk-#Ne8qc&Ne_IebUk7LJ$rQ#}8x4wg0)y$xMo@$RU2$=YGuXH&)S^I??%T`2?;~?c zi2}KkLSjCYxC|DBA7VH8Jjuy0Z9U$3C^0;ErZHYXp|K>1`A^96MbP(51S}|%?-SI_ z)57BX9=y*)-eSQJ0n4Ersi)Vit|X5skB`JJo!47_&a|hBtbq0XjD(N~zH#7#M1U#PHUi4!; zwz7XH8Pg(p$r`i~eDRj0h4vy>AKRG}Ai_EnVYWxI0`~&zjvC{ku}JC}J;v#xDB_wWj3cpe|md=uJH)UX5Ji@fq&*qX$uo|&wPS!n+}gTo&j*2Yw?ZpKL7Z>`0Ekv z^5ZKHuc7*rskjQ5d03NNi5TN~{s0HWpfZ;fQx9Bdg)#2w@V-Ahh0gWRFRLbU z`N!DuykA~-#hv zq0rH0yd_KUys&qaw6DkjNric~Nm|nldPrT5&Fj~Px@vXu74%ev7)b`MSzx%mmED+v~{T#>BJ~fnkOn>AX_~Q5ZF7&BGu#4M{ z-Vgdy_b8dKO4`{V^>hks$@r9Ib%kKj)X@k>+SoqJ!gSg~LM zd8g~eTS2Wro}msV1i<>Abp9YM8lf&|h15(>{Xrx94vXfIi{>#y0ZWM}%f$O8YObyw+9(~d8Pkq!gR`uX~7 zG-(H;Wrgb=%HPpx{+u(7-aBs{8oFgUStv7c^{7a<6oe$O?dyNS?%x1!l;PgtzGgQ{ z2)!=^zOTFSd!1(MiC+CTK?jqjnle*MD<#cg^@Z|Asn^&0@sqlf;xb#Ci)uUg(G;iA z&`u~*CS=LF-7{BGPM6pn2ofs@X(4e-pqmr939tSk$6UnU5J|y^!H6i?k`{@_d!THo zcO-VUoh7_lx5g9RoY=NPWxOL_7Awkhbm|K&!2PBc$Ez~*ZapTNGhM_wnJD(?Wqdx| z9f`g^r#%{EdtXm6|IyD5T($)nUWhWsCVqEX4ZX%D>eRk>Ed;vMTXr%Yc*Z>B&NY%B z_N+h;(f`3~@#=!aeI7-KIO`n=FRk~zu1CxI6K8DxOAo8+tTcuaCo$mH~Hc4 zFuF2k*#&5v?DTz@Ug4euFj;=OKK!b0n*=(5^KaT%>92>i+^{5U>TA+#Vpg#KD*YaI zW4<3X$~lUiT%J;%OrJ88%%6gvd|Kn@TWm#d>`oWG?VM(^x%oWQ8Hfc@@|m=|6nga1 z%u*+Gr=)!Z8F3ru->Zi6vvGRZE5dhxY&K9-0;x$!X?ZZl$ijoG*x`W_9pa*7h42I(uf%x zE$Q5_`qdqRQ>XyMg1NL)>Ib^er^6eOK$gnANQYhqPF z`7wM^Dnw}zU1?;<5#9@#!I!0(`}kd(vY)zTh4{x*PDyWy+;eG1V|SRXq2GV49l5mz zUldh~SwJ3r*Hxq+Cf>tfEQ~rPYE8Q+te%l8D~4*#(^MhnRAFz7kJ|f!CrW+{>J=|F zW7QhcskoINeq{VYB`9WEl5$1{iuc9tj?pW5P=!CH80m%ih3h$Koy;hqx-_Y^B#Ua= z{iy9PqqBFK^8RT`IDL_F(17k4ythi(NU+W=}OlQcrx|grj6mFsh>VO-$r_o}5XoArOu4K&91HW>@j*a(&Hy{KGaI&E?>a*uSE2Q| z_?!;eEgSI{6GUzC)N$2iu_hTdSqnFXbaDaGada%0s1WMVU%mCcPR1!$WSWy{A(g#u z#>F*XmKo15AKs8_vdJ9xJ7_E{?U$2@r-NM z0{R&UbG7Kw4t0IWe`=%gh=-9n3t{6yQr+CtsJjEfi=c<&~N2Cqd_uCK91Ka_R0AxTM zK;xSFI@818P3KMWO{1OkL#pd{T7MSc5d12EQRo`uD4Qxg%eQ5 zC2<>fol@Rmy})^j5gP}vDC1D~X&^@-qlYAth?;(ODdP*~85gPn~sh;q%2i z9jJGKDlMu%(s)VIW>7>u{6Q%e$fDh>ghPfA={#T!Kyb|EG00{XVqikSj*RMObF6Ka z@R9LR^ilPZ(~rb_w)Rx;6V(ULv0&uLN&(Pat2pK~8?FbWcqL8iTams+-m(xZgP!cc znZr0V-y&xO(az5^meZmS`xyI=km!0$5`KtR-`dX=TTGdADddo?f6c>NJ7p z`B`%%;oCFkF)e{Er-c*j#r9^mjTc0GZacr@eXXW%8%+kwwYLiffgAgn-VYbvl}`Q( zfx*>Xjz?En(wlrQ)ql1;AD6FzQ1Nxo2=Yjm@XJ$@TCwo^*)6-}l&|AQui(aY?uCbv zdwVhe<{aVWaqOeZkaz2@;0EeL_GjS5k^RzS-dvM{+o`4wBYT!*Q8A}&=4z2+Ve(!W zVxrHcgi_GjzDxhw?zh^-^rMntn5Y#qjw4sy7~Nm$G6mf<*2$;G>U(fckzfT=bHBcr z5azSHo&*i*jmBz~+>mX4$-)ZueG?R)75q7w>M z$?-KS3H2(u-C;C?Y3(~G@wUq&ouaz6sr01S60Xf)=1W$sixeN5jyXl~aebF?x8)=h zAe6Gk<0fn4)P-n-fiw|Fa-U0YQb(#uU)OBIRXM)?0h(28`kiDkxXeoG>HrBJclb0Z zZ;f^GoXKjPMub253IQ2K={0~=l1Yqj_zx@%A4Kwvo&GME2VUKBW82J59c2m?TRV*; z_bj{9a{OBW3xeGq)HrRk{gBA`_?N}50;}~|QvaTu7Dq9iD%WhF>t1@jZMcfdB!B4* z9&Y=e`5<=rOt)@ybf+PD%sn!$mxsL@%k4pLAUWZBtxri;#c;w~G)hcLw0M_rC4%RI zrelNH##Z0VL1!P0-CHIOwuoD0zO_`L}ezB))&Y+-u4EAC3Q zDIBmEyW>Z@g64cocGI8;W>bgn0R-kdF6~BDH_4Tj0*DDXdqZ>gyszXLpUu_3sB#rh zLV@^0Vl;x0vy$zCoghh?|JD>BjFSORT-tL?d53BfNjN--b1z0H|Dxid(1n^i^1R1Y z4tZ4b;y^-48J|6_Be4Q%8Y$G2vO9s#ooP5CkUK(!jWR5KBeG@;S*a@O_a_Va3Lqzp z8!MCFpybDMLDsiB8X?U2i=;c!V{+#uy989AxIyU9?Vb#o$1|?|GzzZ7=g%ju!VGGQ zsUD=&oqvKLUG`Q-Ua@yx&vVs!T>)R!`Q~SpHcuWphKsnN0S(FwsnHKpnO#yW>fx5J zqol$1*rF7`ul*fQ#qk+lX1`P+tCH19%GJ8n=P7*{r<*rioe#Ro)p1)VZAXr(ZCv9} ztx{B%W*q*2S6)VLEeIN9Om_%NAf0adJLqH_R0-7RHm4b!qVVM2O}V%6K@5Y8%QJsy zgdzReQ%1qQ3N{-)j?F>7;7k|oW6I_jGe-edQBzWm?jM14$QAp$UdL7zNMKT%;TkK!QYNshnHXn-FSvK=U6$v{ESr!{y7 zn6>H9e63HBV95e$W%K_p06sv$zc6V!Lx%-gt~aN()36Y`Ml3k0`-xo*=di0426NiF zcHP)lWEbENKww|t_a*xhei0WjL5#TO0M-Ex0Zsz00Tk>aei!gN&(5RN7w}>J0wup7 zLjmgmhXB_AO7;b=CU%ZbH~GrLIRM7a;c8-M@mObZHNuOBvNP;V=rH@ZJToh8zZ^(O ztqVB4b%B_;x_~7*t&)9I{%1pHCHuO}?sp$NnYbW55pNA7^iuJDjAQ7Wo8qOu#1KROCzS&5A^eGt|z^4uMEcTvGu# zfZl+ifTaKhJH!&oM>;KNI@dZM z^ZQn;LX=;8Pd$SWzxd`ZL5N>`Gv^@0FTMw+Bg8Mhk>e5K7vJEa2=R-rcYlO%sbp(k zOH6WR_MSjp?Tl;&s5ApqngJ@!fIIjM{v&^iypJ!GCntkqtNkerlbxkiwDce??Mq8H z($Z11^f6jGhn8m3()(#?3N5wMQU@*d)6xTYmxRI>%D?BXXqMkfOOMmiowT%smilO^ zmzE~dQWwqiS2A~bS4=FRTp3lgg<*J$TmXm|ptrzAZ=sR5(3}z19KcY(VZb#&2%tde z1U$!5`D(;96_5iM3YZPJ22jY|xrVMVG6`4S#a(j8QgO`z^yV@47JfJ|h1J^ak2l#( zDW)#MQad#|Xm3Zz!7@oSKOwT1Rc2WF_x-N_<99t#w^OsH*isUYfml|DmzMt-@2sRN z%Y6r&?V{-O#36#~XcqBNFK|n^=kR!QVpnmTLF{Zha9X*2AgUS5eT|$|)WB=)bN*?+ z9^Kj8e-RVmVP=P9IY-{<_qzQ}njwNizYgT6`%ROOP3?zgve?mR9Ror8?k z<<7@A+UI=K-q|_9E@zAiXWUl^Isg7!MvhdccxXmg)4$9}&vJ6x(cud~nD z6kSLO2b0m+hIaX;9*5lEfXqrd*563ELYc4Zt!$x8Q#Mk%l}=^6GENz(vZzcdgG#5; zs8lM2N>niwQAJjUF8Wgl1~5_quM@Zcf}!CkCWlRsFjTe`bGb%UjC3P`2%$Uc-mg9F z9ymOLbRX^t-0bJ6q?$g11Cpmb4OqI9?)}>bTBdZbREGKnGE=$-lzI2%@22#r0;C4m z!b*z8u#$#&(!4mXs_rM0n&&+k$8m#sPZksqYxMLSYmTL@Ijd90f4CIMiA5b#{`#~2 z6-=?F#0OS%@0TCg7GDrZjZYy0gr2FUojvL7C`Ma$GKRJi3&Z3AB})vD;C^feVUI8?nnp z?9?U~k$b*dE|OYTWYO&+i{v{A;oit)_yx`AFV>gQUqqQZ2>D+JN3~B$p%twQMhwZt zKA^~xI|@(~SUi2KHBdU-<=Q=>fM-A*_Z1BvF_z*!L<{{~haH_B!1=myyTze8AL(< z!5{;a{wkzNr*Y z35$bNh4=od@c!K^@DKM9yl)x$7I1~*;JDBgp3gCZ_Zq3J146ctopc;d$`6qv^g3$o zBKvX1$2FdgWDU-?pCb#fiVa4}BGMN>3F*(#*w7xlUAY14;|83j$B;od{jMU>)EfE@ zC*kvik5OwL(USzyj^yF|{7Kp)G>r_w8; zTdg)S0>2ZXpQO*=LEIQMmg5}p0)0lkm-um)Qj~lVC-JLsR!Bo*LbuQZH<^Jxh@>Yu zK@YPOv_6V_ORaR4&;hM%3I#$(QOZsVak{@6C)LeqXXciMgnEWfkZ9cFA+)-Rl;ebR zAL#NrIYV{Q_0Z&y=SP0h63FdG@gGvoa7IG$$H{ez9A@$HV*(6CP zrAdBiX6O?VNtzLOdy!XA^Bej*dknwX!rNk}P@y;q|3^Wd6&IR8EgpQP<#wIV)vF=W7q_{a<7Me-)j{jJnROX%bD zH2s=&U_;pp>?`3poH2i-9EPX9A6^Xbq=!#|1^#1w=zVl7PG1+`EOr%6^FO3lSUc9A zO~6_BSfN;WU2KmZ-dz=+kmgH^6<31!!K1-{2Y(Nxh31n!;D;a#g#2NqR zIO+e2O7LDV;OBzJzySIPevi>7;myGP7xv&TAJVVrcUXabqt!U&$IG}lt#`{BkB3cx zLirq9!%pJ&A^Va2DZ~f~LJCfCvvD#!3B6h%EW>ZF@TF+Od3OkOPLozh>!dBxcIgQB z#Zo?wCH?)HO|{9j=Yu4;Ft{RE9^4c9l0;z)u~=YJm5tsH!*4vsdj&Xd7x@_e7FLWv zGHpwHfHFhrcv?&!0ww3dSK}qQ@2|pp;spJaUPGVt@GszfZo-iL|%%q5&;h8rL zC)nSL-%3NI_oT}T4SdPwD=HN~Ly2jt%v1JJ7Alu2_bES774Z{zoWsL2>90R}5grV= z!d~(eOBZ9YWBCC5Jd}(SdNOb-+d>zzN9i7xC_SWT&05o5sV?MWnb5C|i7sTon)E**-wa4=Hr?F?LO%Bjr$u@E$S!m(Wy95#A$bgbP$D zZou0V8u*i3Wv>W%;DXo1wo*QE3v0-$LNR@m>}9#|V60Xx0U!6Gc!!wur)l&LAq1_r z7q}=>_?kR{H@rTBx4;be@;pyRieupKlTK&BOXp?GiiXmIieyC;J;ug~Wh{d3Aq+m3 z=nMQ%1SyitrG>(3#WnUhymL;%!|1%Q1HC`VUKM(Z*QLI6EM~x?@F6M=%^?p<`Qk@( z3=!x+;uSAKy3G>OL^tqkNR=UwY5Op{s~`v3;eCNA2s=p+@WlW~h}HP5gq#q;LE|vT z2SJK`K=vs5vq~~XGEhhz_%Xc~>`MlRUM8zTW5|P{XGmkng9V{kXmJaJ)0s%Gl?uAKo#%YkWa%FFbX=$M03riL{jt;2o$>Nk5VkS`s=1 z?rs1HyNV2letHQ{`4jHYMZmkD!Cq{4sFN@m&wGLN3B3|>QVkg!dVutXU&c#Hi40Rh z_m%(Ps|+uvyMRXGzW)Tzf$H#Kz71sve+Ul>9bguoeIC6|dL<^N$JGQN}SGd(#_)xW*FVP7H%560dh2AtWgcuZ_Xi>_0#$(g4Zr2}zkw zNTW4`G{&=~;w^`!sM~BVA!!d0l5Pk5K}hpk_*}wTyoUEaAuTTwl7+O^4KR7o-!=-o zayFR|e>NfQ@SN?>5R&^DA)Qwe(iQjU?!O2B7c}TGo{*j^!qBS~zHf04?$O{L5Bz`2 z15@~SW$wW}8r|ir4j^2l&WlvQC+HLYMd+jqx8lM^?53Y*^K)2<_sFE zD}KeAf{vu{o|tM=3egR8$b?^QHZIg`$;#r;tSL=Ni4dBnM+xcjby?bp#$Pl$(Nw6Q zG1spLzYAYsnkBRFb)+KcW4zDM#;-{-Qev_wRVGsl&~ICZ^VyD6yz{4>aopypEdgH^SNOext!@V1^x* zf4+Z&hnO>xeE6kD!-v|$YUh9k32l;Q&N(=^=gD9ndXav4aQ}+3!5>xEp7|;GOHhTo zZwsEMPvFE)LwfDifGxHwDruhIM}=(0@EUD4(ZE4Y$R>)G%2vH`8ZrsC{q-2r_1X<9 zL4_NIH!hj3g7PGXUrkp{wO9EdG;5j;+D9ssNiAAr?mLk;C@rgnaNnJ<9q!^TBCbdNdQtA>&B8*A6PnQMh7FcDR_9 zGne*_&_xmrumFtkq!}(M7O;idg~nqBNv+gcS#Cs+sBW1i#@CZ8uksTeTfo#cn0fM5wfQd5b#aCFS1SZx)}rt=`bI2RSC@Hty7OAeBg z6O%>FTuKy@!W6g1tWYSMgHzL4^`3Sg_kaGY)T!blZD%=O?Rc4oHU-2bAxqj@gx6bp^Wqh6%cnhMAU`5sNGbEthSVn->mi21*VLeIrJLk}2e4e*;M$txLmDHoxL3C`c@T0KQG^tAaNoi0kWRG^(V})R8ac zDkmVH5jSKB0s?}5S*Z|noRDEUf{QRez(}+>A~TxL2$^Kc%-g|w>T&WZqj4pk1mD0t z&gBzk@7nlidXGqpwxn|Y_;E`j_qe}*^`YYvMvr`aS@6o~H$(IZ>#7BT$7gMbT+1GM zbj0Ix=eqX3Gp2mx&^1jQuRnD-_}e#_zBX{D2`jAzJ|Z{#EiC!EvAWf|t-516sfW-* z|C}gTz*|J85R{TeD=3Lhr`I1B#7IF91wCOpy{Hrpz*klU|Gf2n4gVyjPDhSw#7Z{$ zHA&L=C3q=;ZVqtOW3$&NpI$X`pAzB2TQUz?sKBs9(v#Q6AZ z?v+yj%A$-vQs>uZ=}Pmmbbeo!F2N4mI7@chDS!&noTi)8qdaE8OxcRsx$MPf-+p^f zusI$2lCZC)+e^U>m>SD#CxBW#A%~;Df$=1nl>3t=#L|vRe^kfVj;_I${;mnaNaaY? zc*{uFRMj;5Jk@;rY1JpuW+hl~Pm;^ya&ulZH*om%d3uJ2kE0(C1t(U5?bMPZPD*e@ z>ajw!^hc4s-V&3{by&?!CKEF)Yoy`q=Ac=AO-{_vm`O3SW5k$BmRONeCx5Tjb6Z#f zhnXz3kc(nIGi4@IVu|PSR-tSGX>8#$(vv{UrcA`5Y2;rFs1T|vtc|)(7}##WaMteN zm_4;KKAihy@Y0KmuI&7xHnaCry{2s5_{hv{Vn4(9rahas{ps9@qTufzm0f)do(!|- z);G5tsrjOCTS4X8mAmjEFA9GTg1P$&xNNfDa8yr4{9`In4IbhGswtzQTBk38BF7)Q zw=9wbW;3cv)IX5ka0wa8gdCtr_~MdCW5F%*JcB-0Se)JS#?@Y?n_NEg^^_}_S!S7A z@a)C%y00LDLg{H?v1ASt_AUut?cTz;UwHi2MdGcUOO^*M!RpGhJL&iI9UL}?SKC-w zVkeU~{28rmJ)-@d`=SSVMhg!_PqdBk%(Ok~SYli3SRK99cF^{H^f#`Xu820#Yom8Y z3#}TCRIsEfNNW#9+v;{HTn!w(4MU-Q8SEHgiGG|H9`rq;!>)&yZx+#F%*|GLysea2 zO;%=I)`)Y$9?l5n`qjy0_M4e`S^a?jC1Ci7W4v>&LcH7_a8k&19$BcgWz92^_)r5A zj5OYm-T703)H)655Z%>Hb$&N^@cReg4WnpOwDhBo+Zu;SH2LdFaGj;>k4$D6??iO~7*e&f4^ zmVTEg5rtCC6xpJXO%)<^tyKK?0L%qSY*5u{gT;L8pb^Q_T-L)QxDF2354B4uIB}xp z6{ueb}8_PQ3^1?tmeYC35KYDQ`HYQEAawHkwx-&2{bP)G(* zyB)G9&+n14MY$Vuu&GffvqeoyZ7V5N%n_LjADr4?tnX4bR8;I1pqz3!R9kzMZx^7c z%AF*pW1PXrl;Zl1-d0*q)TyoYy{=bY@w}7CS7K{;_Q03VuUjgVLOqcbf{IB8*kB|I zY;ZaAE2?N71Zo~c!FIacB{G{z%$8M_Y05!^Wqm7~^E`=7we`G;KdY^-S255`2zVaf znxRpXh4*TL0%LQw(A5?2AA7Tc&&9iXP|B8ykZ%<7o$(%EKZYJieynbJL<;vnu^pS2 zYz48YToRS)dhksl?w{TBD(}KS^nk*>5C6p0HO&QD6B6EIbArPvXb#P;2#yAaz{`+G z1yU9G!$2MW5viu8rZK9q>LSxZVVUWe^tR%#>AFd)k_zCJmuDKQ4VZq_{i^@fpvJe< z^rAt)`<;>~VqsS)lu8}KD!89PHFqg>kw{>I;1YF_D4}*plFFeF6qRhUUrkiH@BIAp zHdRzhDAoEcIu{wG6#C}DqwRtyEW`N2qusB~(;Ze`&mgw#0<7BRee9R|1RzkEq> zr&Lw2f7JairzagO9kaWrnb6l9J-TPtNe!#lD|Ia=bn5#soarbT9r{+9j-6UOsq`0( zVB_N&{6Zsafyg?S_@;a$OmdS|! z$09Dmp%da9qT1v$b|XF)rPSt(@wrq~73&xQBJvfiC!fl=aw=l;WR^*ml2XXGP;?57 zQHY*|L{P_)n4TuaC_$tI1&fNbaJen+InpNh*5#|gPhZ$YI~+Mj8?`=^e&pG$Uk{o1 z&HPPYG1lx_^_%p;k1o>zyDz@ic>OaQgV&xu5d5y}AS5aLrli5(5hLg`*Y9&VX$Mt! z;LRq7k*Ls7HC5Z3@us?QclaqtkG>KNZXK4kvqiJq z?_U1q_hbj>f{mC9-0xaT?(;_}B!^0+RN{L>oWnJ0hnA?IqaF6!O_mI0f1#U8H!h|8o#A02FuS9`$uevd6KmEADK)2rxl+~6V9t)9ekbqA z7W8BudZLE&S+d-drAm6cGw8?~>^ZcI*|fLsuHiK2Y;ybVm%>U8U+wu+yYtRlgfD6? zvp{VgziX?VwWD#*iI@ZXF$cWlGkXa&C90tMd zP^c;OC3zDe^U;^2B53DRN|R_(yw9bfnpoe6I%4#^+S62c6TLzg_{K)&T|WEeXn2Q{ z#mzZjjgF!x&Tg~E+69HqXYxk*oIaHo@8Wx{`gk{qHb%H19U~)LO2iT*ubbMn;E_l( zE)KQZO%erMWG{X23SWb7``mM`!7OR+HQzN$qGOaz7^Vp~r$t&sOq5Ks(1T4}8vJnm zXTf!QDrnx>b(B8i+vOgOYGu$l~Q11Q{?AU+l09Q8pKCg~ zv}d2Wy%(-K8vLVlSSB^|k=%^AlOXfd*!@J$r+h?IhA24Hn)R9wHB2Khrd44wxRgpo zVX2<#nKsN$oYkUGmK5q-dg{Vvph!PiFSahQrW6)q>%$F`AS@qQ*+7_8$Vmzznu2W# ztfuK^53ZY!uvrLf-xh?ok?PaX^}*NJ3t zA#oXQw^2Ne2Y^t(eyh9`D{Emv@s#XZn6tuvd?UvhHQjvZ2w$zxSH40eqpuQ4_vJ`v}ebx)TLg!sFG5_Dpn|e>P!8 zRV0g3iPLrSb?@o~wXUnKt5Ikudi9MA`NDnTbp1ny1$vd1NvbS;3qx<#UBG5e)l=Wz zpjpXQ2`iKO%$e^fv>rw zBB@joq)N7>!pu1$mYYcnv#nqWS;Iisb~|#Z5c)=^M(o{MS9Jni(FI83l@^qKH z7lfKyoy7O5n~N8#U3@lS<0UyUc53qdZi|*rk>;2pDz3#TRnX^DOeqK|waA!SsS*Vj zwE04pmb$cg+9K^_ZK+n$svxdq1D_5xWyaBP3W6n5EaQUJ2gR&XO1`);Q*h_nUi1^p5e{@}+$B zAkzTz(1^h?L#+dCgW?v)tYW5EhagxST6L7qg=NQ98c*YmK2EDx`<==N#5xrFI}Eu{ zMIubZohI^yS=L4}P1s4|)PO-5!S|^b(iZR0PTThc_Z>PJtlIJ}jsNs4jeGdJr#}dO z%8t{C^u;5=m(E=XuHXAE9sEY{_uxsILE|c@_SxWNzF&kUBGzL3^~6dB`J0b2Pl#mQ zP2D5!Gu;;{YIP1wK@wx-3pP<%d@7sEM)A*P)z`_0*uP{%FH>U=5$?`M@&;KLw8k7t%)#t}X1*Y;JIoRAsP?+Bfk)u(o!GK$pxO z@*RoQl3oF2`K9+U!yaNtRkmVxjbmb%pPg zPxMA7`!b@ld|j&boNhWM?}4GKViyb%P&~zpl^2_oI}}#VGDvMv z$17&eIGMgA@wWw2vev%1>0j>z5AF)k++&=79<2Rl%f#(qo6mz^(YSMChuk;n#ln;Y zS&!Uzm<~DfIUQN`X7HsmdxICAOf6hPv&yOF+2E%^6b^on)H)WUvjK7hTLW-W0`1{9 zTC@ggX<;Ai9Icw@6fKpZuPQ9I4B+b(2}v2StbA1wpOj&$!^S#{{Ld=lec^nRm-B&n zzP|(kuc4d0o2#F8h<&1ciuxhL!^U}5)atdg% zEaVM1x3a}%nIYyZ0E6G2WlD$yI03ii7G%}!?Hd&I2#?T&VeWY3c_bUH-5Xfh(f4N_ z|F~y^0X;%DjtqEkP-A!ZFX@JPD|$V@DcDr1>izD+Yfi^|6MIby7Sm>Pm$cL>Yo`h6 znGbg!E1%>Hfpzr<=&4Of(7$Gcfd9x%m@10iq~=1Fy@SwI*&{yJ*)g$GQa_X_d7R&3z)$k!aW(f`g>Xx_WSeL{0aI;u+WMr`VlMjNoCLig%^U>4$q^g?TUj%D5 zJw^533B7B|5A7X(M1D;R?>G|WbS{195`V{r#Aj}3@maG-3v-sGg|#c`Z0>65Y|STw z%=wlnvuD{ez>R z>EMGV%!O|zP}qwlmC6xijf{%2T6Ai)Bg%rH#jGr~b#$!Io#T2how z609bpQ4PNd9GWw$#bSny#}*S~GqqFGKEy?IxJCi|FaY-1=i)|-*w{+Ccz2y7vc>kS zg%(!{rWUL+>Vnk&xXTJrbHxgpJflnR|+@}m&M;FLl)O^=Wj z)AR@n^wS7f)3C!;C@EbVeB_-AiMEz_aq|0*dVB1Rzj-V8;DO+KNy?bW;4utz&hyKE zNEFW3+JZm+x_FQ9Dpa$=C9YAOt2c38Rb#d3it&zMgZvFK^X!OehUS*c2#qDeWpQU%_{D%@pbB7|SjiavDl%5_{uK%ood)Wt!z; zrRp`y+u|`5K1i+l+;G~04^OME7{0MI;$K@d%1o{j18 z$?OP?mMTmvLam92a1k}U5!3?Cu3S1HQl}F%YBf%5ScG1WGe1>o6paEGxpaOVgUxj4 zYc9<)&0&oIlY8afp?KAmVaHSH*C_V*O?jr1CIOBzL;V^TiH(dp;w}PnrS!VNd8^QR zIreJd)j|Yh_TqcK@OsCu3#7YPiEswX$}$=`_hhSNCaOnaW|G%JOz!&SP+s=5SoXBB zS(Gn%*0?Mz`RAcEMTC)98M?ABE=!dVm&Lt_%I$pDbJ*{+XGLIn6aacdbWC=HB|4^! z3afdxAR>fq%Xxnjs7DEwEUhly-G-8QceYl;LyU)X5iv-Mh(Q_;F@);-6vnr^h$z-) z=u_|nNe^$T5US%^HOma@zNMOeo@O0r(#N&6EaiG|sngvoD!7c*us4DWr{&}gqVsBd z*8It|jhp8=g4nzB|6GkooxrU+nz2u%ZY7AV@o?W(SYk53df)mD2#B$`2>gPq&nm2L zp7oi(69QrbTr6NlRk9}4AdaPD6=SvM6(VOJg-WSbDAWo;?b2u?H5x6f?P^$$Xe1sr&jhr7)LN(!G8?4(eS*=-V6a8=P16mP5Ru z*gn0Xjz3@(!D%`yBQk>A!R{Af*q>y9gTrAJbRUV!6&_f??d&F8x(8w)80-)XdsI5L zPOJ*ufZxsy`D7F_0?Z+6NNP3MK?MKc%`}?W= ztJ>GtM4@M})2vw~%jm9}irQy6y&Gcn3~+jrZ+2TS>ks=|!8@f3?X2pe7BniYnr#c7$ji}OSeDUs#1{(S&tZXhSLbQvT23mUt2jdT+YIoNQ}iLRdcGiI?dyqsux!P|xoL5>>5{1?Y*K+T ziBoo&1!aGvVlJp5jAemLr$CYx7xI0wU(FKSS=8$0bL0G8?2bV&&c6le&1s8FH`aBk zbVoI0*Ydj5d?4Ctjui-7_6XZYcH6nLMmYwSn$VX)yg?rP0cIl`EI&91v`KK<>d=n& z?^3iy#Fb+UY#7PwZnnA#^u7HF1ZT@KMa=7CtNp6xR%`Rvg4l@lSUUy<8yU%Y*@^j}Am#?XB zmrwFF%aWyu1Aa(ZhqKuFESeSLwI-w{9#WiCFsC9%!4%C}!f;WHBLNd!NMLHekzITF zGT(#Ym^bW5g4|-rJ}&-XJPn`wVTeevR{^b1)*0bah#wArxz?ymY74CrN@R2tj(lT0 zJ{*Y~up8#52q+|EkK8|g*TK#uU7AlgGlr(;E}Z>ve8BqPhl>_&%QLBC5)Rs9h98|Y zByHlju^WByPYmd^eO|9Qy&?^ITcTIzRfYO|V`23Dw(+V5^ka<=Mn7mf?EGAJCgx1+R}nwP{22Rn{6%NT8S9c#jj54M zr5vMQ>S4^2MoVYne-m$+bfzeSs9+?{jul@MWjAQ8i63gIN$ZE{s8lOzr@{zB(giPL zhbi>?_4v;{u2a#8v&!E1pF?6DoioE5FxWF;>*goIAbof{oFgA{g#}3Q6jBU#uyiw2 zbyyipaMVc>ps9nrVLvF^_?10Vb`RfG><|9(`oRe-W5CnXcf2%h`VQD|e_Psn>G6`_ zwczO&>54-G7N2S*@c^dxwY)G5sR?#S}#p#k{~?5LW9q zn>O2YDt)YGJR2vBm!|0^>r3@7>-MVmY4+-L(XfAh%>+ZjP~#-yY@=X=3)D7$*QT-! zw+IJe%V5;K2wSe27>!zpEQ?*MwAw|j-AIjzhJ-luB2k;-geZm{*wr4Dcv4B7${d`7 zHjB$RD(m>g-1lTk-DfWG5iPEaU7d2{>J-_Age|H$E7gQ8PvIp_D!#7aPzy{7`;qJx zcza*Ni6vz3j=%Qmnc(kJzFV~OoO4&~?7<7SZJs;+DLOCawUhYYQ8YU!o3m>}+=K_- z`uOyb$H7^hK&1=dEPmE`+P_`HM7>v^q3@`dnnyOb4`Tf_eIxtX$FPyoDD{ZQBKu+I zC(@~iFJdo8T#mdJ^F!=qnS-L8&J-JGyY4p5gE&A))HjK4#hUB8vs`_r$gcK5nt}Q; z`pb%Mqi@k01`~}E3|buX#ergG0@f0=)^tj|W~0|+`p`^GaM&m^mzqWMR7>I^oF89M zhLj?wU2mnJjCEw>)iG92xNkrd^Mws(JJ^qK_=~mpq;@ywlNz%+Ofaw+{B>@#me6w4 z(b=b_jsN6{q7|tXwXPl0roXi1k%uf}Y^=ZcpI3%#VfBen2&%A#WH0zGp z=m2L$foA9ZBb~$^#Rdq4QlWZ)c9bwdnxr13RheK+H?btk=hCgnn>J-LORLys_I8$@ zws!VD7Pynzhgl}thS?udJQQ`4-L#tUVUNs?L1xy;|;~eX%5O@%17vv9S}| zS!@DU$VLdUA#p-hh+@mO64|mP*^VJVC`+JFNYm*MI_)DYWf|ILb4UWExNOt1Ou`V_ z0zV-92rWx#Gabq+O>MvbcaCJ6ZQ6P7#gTOGxo7##x1R5u@7#O+z{MMK=hm)Rc>K8G zd$;v%tzUeZ`v=W@b-is}Zyk<2&JHN_O z>a8knu*~*eWLfN8Ew8b3S^ld1Im=#MTvc{{@%d#Jm+h+BTP4pfoL$jWwb-(_a8X5T zVQWQHZYyl7*i^Nn>h-es3;$63$1<1SXU;k*9T+ap^Tgkp9{sj0h*NL~&HQ zIyB#um*>zH73EnqUshePP74MCC;Xz*AM$VV??A*{${_}YqJokq9mgGSJH{Qx0!Ndh z1zIt?vMNX{;*9s4Y`3sP6#9I%T6``UeF_ zDWlQYtYk)rT}!r1)x;ywXnsYSBpv02QQSN{JZ${v`0=w@#?rH|L-@z<#R-W<2BTZJ zE418b3YyL}*5ScjCck1b$wow2nLL7Mvq*585y@|n2`-CS&T~0-LGIx-Bd#{6X}c_9 zfu+gPVlh~DM|5=@LC*)DstlNMY0gr?vuwy<)TcZsc`nA^$@0#TY%wn;*R1PW)=DBKOpMjIt;?PCcG7g)y%%4X~lnhjVj zHfh+Lg^!5~1)D|eol=U$f>*QCV^vK>*p79Cigh-B$=L^Nh82#CK6JGJXRr99{+mlz9gB4W1!qNmHxx8&m}W$!1zx z$Zx>U$%8ukIZ(*A1rer<&67TC3bLgMGgcf5+4kc>AN{;_&`HJVhh16O&jAasjD-UD zUeuNQO{1uIedx{WoyWdV>(he)s{H!{xx6^`<;mOaBXNX3i!}uq3@!fa2V+~rC*K;o z=UOa!{Z!mPHZa;Q6EO0)mwfNrqpyLYWJi7rZ25#2LmrdC z?2#UF9(BHJ_?_pB;Zu(piwtK%Gl9S%r?|&?B5*1&9x&>P*Y5SXVNgV~&!*YzR(pws zSrv;oj&+7+EX$6Ba>%L#&IF|1z}~?Az(~LtK)7O-FKt-dUotHIj8VZHhIzU$E08g= zEZA+Fuq!^ZOVt!jMl6}L)Md8kiVn@4Mi_+vL3kKXXE7547nh-lBW&lr{cmo%=Mtwj zJbmkh$p?+4ckWx%yS(=5(WG=!Pxt)YFOE_y+(OKU%YYLbR`Gux+USSohs)d(5)u$X=!9pOK9F0%0c zTb_MG^j-DQt#6NgeC*)Pn+_hjapyri&adqDfw6Z+U;5}9c>Sd9#TQt-LEb-|upazYcGT1eZ3l|rMI5_EqcdsCGRtujn3b2&Y5uCz=V zvYMN+nzEN=@0zxEnyKDXpW8HTp=V((ocY`~Ph0LLyr}r3`BnFC%^z4l3^*&KB5NhW zM`l@FIwv`Ky1U*~E>QEcr%^06)*Bb#QKucol+moZ6jf1e9+zqp42o!BY#?ZA`7T7v7U>?*BNe&6c9!a1 zl3tI1wZLk_Ckcv_B%))6%BM<*+23hrF;N>66tTpWEcbg5D(JfL-t(hP>n}h5f(y>Q z+&j%!dQabljSrSBY1)(+JxTC4VWr^!;GZGB7P`t<0BxkLt1vV%f)D7AO%LeNP+ZJVux<%V!*<#&d8!jC# zbCi{ql$BJ>E?K9owX~PEm#2zT2n6_!_I>N_@;j@(JL7)sVe5Tm_m>|keYVt>kLf_j zJ*{D#QWmso#vHvg%V??2&mj*xuOPcAyCwUI?0wnCv(1j|g6w$q+u6o~>^rih?8l{5 z@c0E3b2=${&50+%VrkwfN))zy$m^?T;mgzPI5I6(Z^)13OZjeilI)Nt zP@j!8&4Y5ubksPK*KlIGI6bG9R97jy`AxMWwNg{y*)9xnn`+$ zf?4|zQsVqL(ae-S`S71qrk9KQuwI0KlD-66XiLypIs8vAabk8GDm!OdF&xcOm(%U^ zI1T0^o1QDE<#MiQItO3Vytpj17v~B^IPj-bU>aOrrfTL&W3Eu(%qOG4Lr7^eiKfPg zKCZm(I`UGmGKDafiIaF`rDb@=Y&}*-xmB6meTVBufke#FYdYw-<*M!5W(B|V++8j6 z=T86j%B!DP=h|;gMz?SA`D$`+c=FEG(dVu{{+f7R-qu89;d#Y@VC~ZDnwJcf7gSz& zRcBzuh81&)^YT4fN!|SI8`j-@*^h|RO2+>rO*h?zRfQeL1P!z)E~UxzNN7G1JF?;7 zSZ$hU5PVLx(xE|B8Y~WH5yD<ts^T(tu z*rJ|&0Fzv@zU&w_wp31&7Qn(2;&-7X;ZU&H9xN~f{ZIo~d!m&B*Bo|Mj_r+0&YX+q zZH`slaKoX)hdq_$)9$(3d4A+xsqHpVj*Wfmw$bk_ufhRC%pf5(r`WTwpExGuU<@i| zh?4H{QAo|1P=(uDU+ED`6pzm;dVChFhPW^sq0Sc!_}LW0FOK*{e{&9vKZ~XqIcIXD z-kiNT`*X%~j5+Xc*&Ui)&{<_&J)xdbjcRjtW&#PjnVwy&y<>DG&)@DHV`AI3ZQHgr zu_m@APIf%8CYac^ZQHhaGQazO>zwUDMX)!*LLRb6}S-LYiE&ZkWt$iJbhRtW?j>jQv{#)f0<9FPT)Ma*y*Bt7f(4N0wRp5os3 zDal{96%c5%e>_7v5LutLiQa@Uml>qr$P46Y$}mQ*L;gI9P@As?A{aDz^0_p%wdhY> z?^mfq?SC&>ARL>aM@_c;XnT^=pt44_ZrUW)q4oUx z1=J|^#r9mHr+o#b2kF`WL1tU)+;v;+{IREXMQah=7st zBEjnWj>3Sk01sYY^5kV~^gX7Gg#A%eBfKO>!sEoFSgb#>-7!$ivwQ#Xz&E*;q52J1 zo|s@{zf$m!`w3pKh@qOJ_;a+5CN&O1iT3QEMN4-7$OU><#h}pc%3!>X3CuuHo-?8iB*U5w0 z@6G*c^ogq@XZtbCZqaTPjDvi|YXxUaYgYZ%Lxo|qn#&mYYy#$=;B7mLbC1!NJidn? zeQz3UleUJrq&3i9W#0m&SSfZUV`3OYz`}9jNn}Lue)U!eoCA;&E}U9vs#$~kppFO!|*7^+ds--r^VPMNcb(+!5s#66u(h-(B-wE2M3TYE01_1D;8_TLeGEJ?To4 zBJY5gAByjKG{??vtALwmp%@7n(u|DvO-unLx^|&BD|_CV2v&49nmhBi!Kem8adkp$ z3r;Y#ca@z(mx%nE_62Zl>Zx#WLscAlY<7P=<_PRgP4yswSJSZO<5hL5MdssCNA>m~ zLB$hW>W6`RYgUS<_+#4@V9xQu)#`P-6A$u{Cnxp;W$h9bGL~~K4>Y~GZV6Gi?Us8` z0OwPy+lXTDr&S*>ap#sI9+81aOn1KdvQtKFpZKWj&N+JFfKQrZdD}wGfNxQg#HtAw zF<$*g&rRFA*x_lY#(avcJ?G}^njOnTT&+I}3;Ze3US9yClxPMgF8iTqQ@9EX4{6we zx4gT2Qbu>Uf5KsvB1#6fv+<9bRFv|5x|WocifVMLm@2Jy@?g%uH4>s*vID%cuFb$W zJq}$Gw0grF8NJo#vn!MeogD3q%k683Gs*6`D`ehCl5(A+G+f#auxT>dnmw$KXo4N` zvU>+^xK+?+ING;fK63pD+RQsYpJ*`Rl-3^7A zye4q9W0?}e;jcrhTQ{03xhtvNj}}cf(d~V1?+2<83Y;9zYROpWi+Om=@!s98^Xg4- zq`c6K;XV*@3}TvY<3R1HiC5OM7Zoq`&XN zIoz!nY$N#IdHb=l zusDK~5HidqIVsOr+vsVA4xO~4udnJX<* zVQ?JiV=sZDA5t@xZkBFWYg1|#dzXC^9T``b?*CS(Y^&&7{HC24?iI^fdqQSOsM(p2 z%PiYpD6W=Jb%%{gCR!p%oY|e!^IIBL31$^cr%+GiF2)2?yeC+t@l-@DP}g)dQV`W^ zsAIUJ*LT3KrU>jDTWO8rC!ISZqP{SpDNja;F!J_y-9~U%3xAmKG)zW5l&<9{*HRuqp-xUo=iO2 z)R50MKQJSM2!=;q=10hPmqP}k@kK%-TeXpEIcdfny|I4Y4YMD5M(WKjeoo_>k-0v1 zhu67uI})vM5gw0QNBbHjpMkCcNui&B1*4RyK&*FrVVsLlFY5_~j#ZL%qRs92iulTFNsFXfeX8GmZ8O|vnHn|J>Xm!e<&us$v3c15>32xZPJ>$#32y$ypB?;21P=%ZH6zr& z%lo*N9K@ieOttSmbhA4;zRR}@y%ouhJdKSCv{`MCp+&x*GNj7_tH{6-NRIzDV3uu1 z`fi@eou6^N18xXK$wQWXBT2D`f^Q{?e=YgC|BipG|EwQdr?YV$-$CTpOL9Nbj!%^* z+BPF?W`?Z-|EHhOo!}bLu8cir4Bj++goN2_3^71ZDwQJQ#~?4wm74i&b}Sy2a7wuW z;0lo@r%X0Sa)}OB=PG?>5+cW9&tKx03ph%wyPmUml>K%YVurMa{Ax~O5_apANx#YD zF5?gP*|_OU%6nUmlMfoPlW&3)<|hbPrk7Pe@+KM$g-QXMaVSFHEoOys?u^Eso7u7d zTOIAY6jEpYTE3*zK2AiPbU5J*#wkUYpl8?YlD{K}Fa8D@01FRCzu_KIWKCqy)74XT zD|q-C3abWX-AaZE^s5IoFxiloa?O~Q{Y|ZEJMiK22#Fmeq)tZ1OCCNdn$OeJ#%8Nv zyD~fhxw}J+b$79A#^fx0hS)y$kCo8j}ts9M{-=}D2)ZCnEnwr z!2$E*w$4QxJ&Q@Ba5h4b+FqeZZ9APkfe>%ZfQZ zd$v^3c@M;Ek$>E0>q0egrZ{ZYuE4C7RNVUQtW}WWZiQS?w8}^-*dH$|?#-y1?XQn# zZ*85i61&<`M8A|lLw}Z@v6B17qc2}X*CT7dn%U5k`=QTm%TnenkS)I&@|}PWQjQgy z&_{h!EBR}t`<+NT;il~Khi-DRmM@mfZms|&OIRTiOy&UU4%RgD^v{!0N)gr_D|wQv zga0qPygKn+>Da}dftuj%aL(s&Z=S;UlxlB^nIC=>GG1{%USG9VcnW#-F=#kvZD(lA zSk6sApXzrTIZ>xnRqC z5Ch4Gg(0*0XG0D2+%dD&+ae=pMva2KuA~ZOj(b3K$rOV+dWT|bkhz_Viw&Z=VYGao zKC26{ySj*GulX}MwJ)=e=)xPmpphG!vTdh-fQ1MSx7u|ROU)F=B%(1#%7KD2G2u2o z2P%l4qJbWOy&G$%@3!>8><@>dr~-Ul6Tjs{miCTH1Q6k|74z3G1#tu%_juQ#ibm!@{IP5?=jcV=u7;U%t3}T*&NeP=b&%tm0} zM{X~cGx?bVA(Uj=K8;tpIN{6n_D(q+Vto>@Lb8IS3Py217i-XhFA9G@>Q#hGjbmYZ z-EmC6KR5+R0C_2pF(3;uAlr<(5|!hMtwFlZE+oVC?r;2a`a58ACyG88O}-s9DDkO` zM~`M!1m}-}Y5~)AJQ4)AV)7ABcnExA!Gik*ss8hkRj@ay%X&IO$q2qHsIcC2d$pFaC|N=HZPj zZwh?K_9*0>QM#TgP2?v(cHoP+x3foihLNS1Q^-%E-JO+duUko5GoN&aPn@$zeCOj&`MdpP;|j z<W*NSQjkDy(Hp!E(rlmQ?>+cqZH(+&)YX-umc;o$s;;tdU z`gR>J+rRt#!7mCBFbyKZL4Ufs5h z9@@rzRO9VCXDGVHkYF7qkO_E&l^^nc_;`>~gerMv48JG*fRi|?^t$)bvli-o-8qefLuIqGW$ zjfI0;(@5RNV{T^O4aR=5HW{qN0a|w0&rtzK#ob`sgrv0Co5L*?cpRdUKfCt@Np|GstHWs;C+yd)9JbxueQo z%MT?R>TJDYk12JE1M+cM+Cv2icX)?pcHqsb&PN(R+3CwZcn^^mh!$5^yu%cY1$|-# zSU*8%uKBDuhI-;H#BPH>vDVniyg6P!w@J^y#f>()OdOfW*L=EsS!;9hy8GcfD?uI*1 zV_!~tnb^+1^f*wzxqX{gG30Ic9tb` zVWVpZ%60=PHL1#ULqXQbx5uLrBLncr2o(Zvah2_P8L+U5)kDA1yFTyT)z!*jo9ZqxB2N(D2u zsS+d0yY8Z^S)L9eCd_FuZvZo5LE*huV*+5+T{iI~D5kT1v}I($v87>0i2XJW{FzXo zPaJ+>i4YeMcwKJE4y#&spHC76Jk=o4o9Wmhu!PnR)k<8gZ%A6zYTph#?L_Ogu<8ZRup6 zTf&`wO^E*yGcIW$0KB>>{59gQqn*j!>Vc@OYUW|O>`3Y{ZSMmp?zE5Ka}_!hzU(jxmWaHL$r-&!o7;ScPiT3 zl7=|*z1ktqk?jP@dQp9{e10@VVinmjPYIl+zAfpUx1f<+@b$vMm?rwE69plv5JeUf zxD&}nG**q~UZ#htUDaN%qS3`gm8FZg`fFGLsF-XWF`67 z)M<~q3JMyML}}f@%Pa8-DkH-%;!i{k3Tz`OSTLYOus?5I2^*2yXdhxXyj*HxNfu1g z+#8X)-p`r#*IAygAVtiD9V15_gXBDnH)E)R$bd>?y5@_Y>fRI_m zBDTYnr*O&C-14jiwByhz181{xLRx*Z4K)ARZSHZPEO7BOm>}l+v|&PyHqyqR44>wdcr`UZ*=89?L&jv zMI;7txBf^jYT3aVF3gkuTY(e4r6<;rK zFG?uIHJ7>j*i}B2t&;V0_^F%bYJ9kL3r;tfbq(7Be$3hgD?JN6Q&!j|L?U^k{~8TH z-dWG`tyk5es7l-OkwEuvi@8w3Hv-ymMEw5~s`wA-?Jxa}nUj(IKY*NH=)Zr%bpHQD zx1?k`kS z`Tvcl(~BSf9>Rzi^2py$Ymb2uy_o%tI8o;t{fme#0U>!l*mqbadhb{Aga>r&D}RFn z*aVj2dcU)Jr?`$~HP|CVWo_-Xh4pX2NEU@C$w8_;?{7#bFdR}Ro{QnWu z`hTNs{@1bp8prnkU@ix;~(_ve~>r7+JwEG%YT73a{Pt6{#WwmKNtKhk`5sg z``?ZIFK3eL@AfzKg{b_yeWkuIiC^E9e^RW3U#;+;6#L%{|E4&ZzQC0KmSX$H`Gvat z>v8?v{-*wuD)~42|FZ)B%MJb)s^tH@&c2FeV`Sk>$og;P6Bf32|E5F7%1%hf!Sr>f zj9+ZaFI1);A%m2Qk&Ts!ke!8%*;mF4Le3_CE9);pli_cke-G$bzHX2~#K=L?%*w*j z<*R64ywd;ROKSehW&Xm1{wGuNZ<+qN(JvmZ*%vYN-{`pi1u6OOq}IO=^WTw@|6-#4 zJ5rK`jfwG#WcmLh>Yn>}xTE$jxT(2L%09@FCuEv>GN+vl%L?}(gRl@mrxKD1Dh7%p z1AqgGPyj%IHSX(3;P)-L`dxVUBZ#^nC*TYh5qZRcgxz=;sO?+gL*AXGSyDjz?T_yp zkFl2?{4LI@(6Iq>WeAEk$N(vT@w$q&|S-Zdg zT3QRsh(h#neXK$23v#^jfJih#uS+rZU5nMZd?8hGC}cgjkC$_Ge(G*!I)1+EiPvz* z#uUs?WRcJZHjdfL?$B%;*aRI>I1CAywWNQ2NpR)TD>iOMC>ZlHbJamh$1>rX@nSHq zZDxgW(REZ0;a&3QtFiEozMZvOeLsY@Y;b{(grq6ewynjbubaohs(~y513x|@ra!DO ze(DbW_Vp|YN0`UrC%=-j!PY1x4%8N#e-`3-Xo4FG@#S5`;|km3^G&}Tk|eK0LPVF) zN_Z$^9tFD-k!Sli7qXtcOw%uR1tz3V7DQbCp3x1*4fK0386Z0@OLQ^e@R-LG)B|-& zx`M$VZe2+~M=sqcADP${RGEzu3?Rb@g_aQG-GxP+P zH63yCc+1Py4SPw}VPdx#{u@j#Dg0}@0tA5eWuxUGCG)Q}_@9IBo|0V6GhT79x(kZy9%>L1LCv07W~M8aRdx< ztSpBqXCz^Uk&zGI@eX(IgnkJ#w-Mx&W5i1xS;1M717swr!pYD?B}gner3T)0Zzz2> zT4UD)(er+AVab>$q~*zBZSZaI6}JYhDg2n`{}uDGNwVV0z*$ig*`3+GN3dney(~5} z9Z3q$NpPQuwWSB4-8H#CCn{peTtCHd^nPde{kMWL3YAE9asZ1PKrYG?A*VcpBeJ_% zYLAXP?Leu>jZZxLry~|zTU#AU+X3T9YkWJ{uX^06R;8{uuoy>55{(z&47@R5+h(9b zZ7>Jk1V&=qJf$E|Z6ZU|f!2tx7SJYx9%pO%%Z;Qt40{S*Jmo2%h>#3xkNA>5S+wL) zB6$eeqd4$U;=VvelUPqUrC7s4=2hmC$-GvOpo!BJ`67s77>zV3mQ`CtxTRYx)VI7p zRi1=s1EHOu#*iCzY;9Au(gqK2)`-W5D zYu>>yShs?Jf|{@X^rQ@dLi^^^-un+Gc><{Lu|gh?4uYptk@OBxp5H>99gn_;?@1rR z1Vz@vuTA`14uJD6fS_=nrX!u)l`o-79hR+BSeCjWZ*5LtXS~oJFd%}-JEd-Ramf7! zZMZ;$kcGyvK6r@;v`{sGmlxie5r2j?c}@koB;4OqvIc|CRd}U|wh_!*Rt*G&5QbISsg%q>RYmKcE1NkJ4}fqZ3vu@z@@RMwp_zh>q_N_Y%l*vxB#Z@u^2wfnXj7;JF3TgBs=wnc zrLZSqjklkEcpTy|<(K9k`F12=6p1_(yQhNPV*!3ISf0P*9dB2ZeuOFs4BWs~2SQSc zk8R+M$lM!yIxK4d-(6fhsCefA`qBw}NSom|_zd<8_rgA&B9N{Rto_H5M31agvZDog zAino=Mrd(L0yBHt!CwJ7^|~TIa_G;VoF{=#!qtx(p0K!w``CsVqz@NA@3^wv{UI!- zOoeh>Fa-JiAj&Ai91Y)zr_17N@fritx9aRh=kSpvAW3ckbwM7-DJvK3SfXK!D<~4q zz`-_wJO&Y>IUI}5mXc|Hl zyA$#9W)}{h_>P~=7oICZZe7%nHKqmhgpr0)p3O<=cZ6j=y_C8^TS@Px;T^X$zu92eWks>l4!jPu6U-W^Kr3Bf1^t^yhNc4pp*Z zU#WdI|El0W_uP_4iw3@@HA?YuKJo*E&Z}4~)%JgQ1U>F`f_`W{O&VXIJ;`r~GjTj~ z_BXpycX8vAwgRuAL-h2>2ZA{cbsrD*@HLq(9pk!#!{3GN?m(tk!3U|vvQpw`e64(a z8;)BLrdq!(EU_}A+yXn}N~5R1cL#J|qy0ebmFYvPBn1E=i>y=CCMr){kg*>na!T^9 z=GE(v>rm-X@D<#k6`;6G=v=UwKAZB+=lTsdO>QaowWI~iGTu9nvw`TtTI%p{t?PTS*_o^#k_gEMhmGVQf$Enrf{PV$FVs+c{KPI!`*NSWuKX>4me zQ@Lt$9hkEI1@u#=)A@zda+>l+two*esvla7+S!dArarSTF|OJ7qjNi|7AHq@FLMKP zX(cK63%D_yxE`DjS3mR5EVq{0I>)+XLz z;H!L*{5TTEhClB7OYc`ce@uG4ye%K+#zPUVz^^)9t4!oPQEH|LV$Q5e*vrEw(5)wv zB1i94MJE#FvXSRk8|j9_rLh`{cLyYX>h%6R zdMA5Td7!xDxKxPP#NWj6BmQ`NQnwg!%BHg>{U!wj5M+XuXfd zJg|2sGO!8>Z^5$%-qb1BA=}R2mQ}t+aJzrI|M4)In zb*d*<5pNOCbG7G4*PON{`SoAmk#K{xtjj@H%#K82TV?}H;MMa+!O8y($l#IbhQVEb z@JjRzEUR2U0D&`zwP(>bP~$Yv?TXt2$9Gi6lp>46yhp$nQei;Bc;FM?`PJ^J^wQ+x z6WjL`ZVF)TMCA=Y=hZ7Cv2&ldy*lO@^0u4;dBOAOF<^=dRh;!6?CE91ct>U%Qq#&>p`=!bbw$3aXR@&;@w z5D*F^7+m>o5xp?_1oKOCObuR@-GjaJWDRi`^RJ4w9+}_JJo{JVaLg1P&E8@03c2*Q zLgnimsbj}jd_wVl%{n^7l8V0LYV!%to4!ib_ZMh^(|?G(8aKYWtBQBG#ElLsx<{7F z39=-X%VU_;*kb#X=O@eFj`k0H1RB0md%^a}>;NV>qFZ`sypACR*SDnh3A@Oz-VomUt@5mvD<0}X|BO&Ns<(1?oC731H+Wq|5{6z7>;2HH1bvS5nY=7tW zBuin*z!(0Av7B0T%{hjdkUGXHJL*E~4_-s~t2a;!3dYQcHse?ejHOD_yr7vjLQDmx zz7`XGbVrj{#xUqAD!Wfs)`%tztHT6;+yb2&b5cz`d1OYDd(<%PYZB$8-Bhqu&oaVH z(u~>++l=cB+>G1|^)dVLk7K)Ies>52DV&1A!cG~SLb;jQ8T4cDW3gkiV^=E*9_n@) zAHwql{$&36j<}BG7)b$1ff|Bkg)@UQOrD8*2OUZcDx>VxtpW5H@qIrYxD+WZaw^ZbdxES@eD!Ht@0iE z9l*&K;vPhARY^B;H{&%Xn9l7l6vRPx8v7#o^Osp@m-fYK5hu zGnNOg*Fc})4ghi?X^A2>@w-gVt7<9u6D*>cqyy)Dmz>msr7LiNP&ZMo(e?|JNC6Wy zH#s{!zmcLbK#GY%N4c!T>KH3cYniK=-An&tE3k)1Bn*xLTZz{xu~&<^rLN3-Z0VMo zdN5PKS6J=7Pb$Isx30tX+=>;3p03;Q-51#=zj~O>dExAUE2Uw~*0pim`tm5F({S4? z65YVJA5b`&Z19}&r=sIv<+P&Hs6U#C-sJ4BL{9L=98Le!4Svj?DdtR7m z+*}sh@VR_nCpdd{xa^31Ab5H*oaCx}%Fythpb5p}JVeXBjhOW4KWy7^*1!Hb@o8PT zq~+0__-iaI@JI)ZGuEERwZN!B;m zKOicBMFNNPa#b}Ix0TZcl&MZ469qVP8cp@=Ptd-MSD`!1OzEwpgB!BsB+K8(C$t_r zHsk$Px#+J`l;o1PH^w5(Jr9`p0H{`?ChTO`6t3mD|47zKwBxqjQ7y2iuAQUKA|d9} zFW6UgM2di^#bQgmSz0!W2wR}p&tifxucWMG7#;qd9vCD|S6GpgVN*jzi8*Xoz{`}} zAjfKsiUy6YqF)yt@2_|_jbcwl^Vp}Qh-OJ@?IDs-;Z=vGc@HwmY@fzcqym3c)vWq(&uH~<>MARG{AtA5GM7c%ex?6Rg3I(E$S=byU*_nxr zL(1EZ!ZFxrb*81@cvu6Vi;OjSj+jj``N?_7MbN!dXVA3e2DuD7&xU08mSvuiH9MU8 zu5&su-fo`qK@1Ys^8^%c^E>9wE#!?aR4D`-5W}HLCJb+l>x(S9$LQ{#LyWcQ&sLXoQfZ_I%A<5DW**3|6i|S( z4jMDh&UUf;-XOa2K_`rNWjHFCqIYTIDZXSGX8?v zhL=cPAqUNA2fE&~N0fVJ1r3j#Oy)XxUdKqQ=T#)D;Dt)XjUv@LsU)I^93{Ds^P%|M zvbqTSfI>NfFtg-2+%`>6`5Wakfd?M&S)=4NyS z&g^s}L^^G&g}dpI5w~thn1#Dj4fDjX5|*HxKx+PK{?R~mj?#lIAR;#&?IwD?kvB4d z?h&XaT(eGn2}rx1w|!F2zX7DCU%^1W&KQEAZG)10hHOA$;j%qQ6(D8cZ(Yv*J4F>l zVu2$HdMMv-WXP{*+bRy0{Ca4t*?b2uHZLP9@B0^@cGL}cS1}B>BIngVg2BI2XT^7< zJ_hbiKK6TbES*Fq_*Cyi$`OB5Ti1=IlgLn^El1Wr0!rRCQWFmDCKP;otk z`vTA;c9kcb6O=HYAn+2fydWD816(13@`b}lxN($D_fe)mJkL+8w}`1NCN@j2k4?*fHjB1x%l~dS3OSC4;Wog4FGGo%y(v2 zna?xo{prZ`ak<}D0NxVRBN-x=!Xrg0?p(?I?t*hD1mLO{*j%_RusP5bAZ)9$#E^Pi z@{&|N!EZ>hU2L(D1vW?skNv#`Wfj6xQpsms#$l){(^n2ua2i%k(kL2KP14T7HEw(<3ms$zvY#|>U6 zl7ik70TOu+u4waCqRX`&(=;&N*?R*(QH9n+X)B#^G6noba)j8CG_X05#mYbzX%yyFC#?R&f3i~B`oA-R=8SgSh103ig4&1E|kw$;f@ihRZ~l$ z(}2z-+L)DzXBTjsCfr-S*t~0=-vP{jP(e6y^9WM%bggOnm=KRH`|eTM5D4=KQ~1Yw z2HO(X<8FVC*AAN^QC>wVb$!wkzk|vo?w7d$!3B{d&OT&ph^>eE{%sY8+DplkA%02! zp?GM%7GWBs0+P25G{gV9{}{iiwP>2eGX4zQ5=`6@{tqhD(LVkoYABAR3{!$Cn7(_R zGr9-z2@Z#jm|HeRR^2X~JdMhP^E1~SaLK-aH%~zvLpDPmLC}k~fR1t#d!jlb7myR+ zwl^G8G(#N0p7uo`d%~36Uomk2v$JnCskR`6W@pS@#9hW+`-(YcWhjgURX|mWdv!!? z2vhJ!h+K4%Mph`+;7wu^HU+$IVIRVN*f3SgD1Ah}&SRpsFytUKOF=lDZ7O1jLW*O5-2-_AjT) zfa+fkh+kos0qGS6upiQ2iSIH1dlUOdK>p47vZ4RwbQ$!mrSIh-GeDsR2qHnDLW8gi zbwPlzBUT0Y%l#ENFdITcl)nNBj03d<_E!Y|Moa_aT&?FD7o5G5Y#Yqs2Qpx z64=#WMsy-XQVx6$uj@GRIMQK@fn|XmxMzhdxK{;#2cT;tiwmN3fp5L1!T)0($zr(t4w`V8 z`g;tXd7Q(7_s{WH{E@5$8<~Ev3Q&eJ8l_r*a$$}txU||o68LY zDyn)aPT5kLiFE+JeJH@!R77DWhe6#^jJd8CmQE>$PRa(|VFFAZgG0*BL z>C{5Kr8CNkFOfDUIvt%@WaP9H&&t=54CeXmR+f!uLZw7tkC$ zMua%XA#j&jcMBrkd=!6I|7w3@f4n$|Di8qhH$rH^y!`9iN+RMeE#zKt<|klH>X$$$ zjqodTBzn~CXJTBM9%2hw*CUwuT$)mm_4(Y{KO)wDLB0j@js}0M2Oo& zgZqh9MZd;FwhBuba`0`K;fMPYoHA<=anG1#1z3utGE;M)R`PcDH!d56&UhL!7A96xOS+vS{6e{}T4RfT<4T22W}!}I ziB4vzPG+8t?M%7+92O`n@QZ(yf1H1gzdw+zKWQ0n)2Oz<6n@5p2 zvJRh~Ger9qQAQL56TNEQ-i&0MJZh~k)RVZ-(PnLL+9kuniv){9jRQ zHos($F(&E{R^~hs&jbpGM}`HnevnITeAd3%E-G$TlhlrrmsUB28fhz)5cg)v4`RJN z83qZ@GKT1z`m9{7-4@pksVpO{UEY9s47qjD4KGK z**M6qmb}L0>g!2814tH(FwvO2WtX$T?ulzVXsx$?;z>HK%tvMr{ibmJ?UZR%HDNk^ z-MULo;(VXbGQZz4j|s)b!anUh*fgxdw;}2>mVz1Pm{F$7>k8vs6~Aw$vqXtMFTal5 z7{fI}asAfhdSvRyMOg&8pOgMml*@R3|L1*_)36OHL&^Y2y>1OfknAu z+QRhhnQT4q-HtC^oR)G>XTejZ8AkE4*|GafbMgi&q9!CNhwm*pkc0T11>54bse4|| zi?)J!5=thm#tKmE`QkGP;_C${v_a8Q)Ms&>1u6PdW({ywZZ6C%`{6uKD=})dXLpsb zx|ez{VVtFfn-(-%ihMtjGv8yc;iyfQp$=1|wqJ%^H z(uZ#&DLQ7MF°u?M%6)##7xQ9daqgP_P&7B6a7JxLL1QSfHq&aIBo8(Pby`q>Q9 zL2&t<(k2~W4GC>NwCWaugvavd$1+t+%;(mVf;2#$Aa7#n=AcI9^C}sO?_}(x%V5EK zOBrUTG`}_hNL1WH0v$Luljz>+e)-;{@TI_$<@Bg{KaF8)I6~n5>X0UacSWkErZ`rr z_=v|}Lk`LCLJ%qL>`agge|xLAVW)mjnXsf#vpy00w>(@^|e)%j^VmOY4l!gV zO0ULcKA9nGW#@ZH845W`0#hK`lB1efe|oitR+r(A**(JBP)TZ|c*AVFn8yp`x#4+u z2?k##9=poLW&r#)Fy!A}bRyav4^0#>H(6XD7nX0-FG(n<#9+*g877fE5fZjS>LzptcF)4k!ySPgm+gy&2IIF&&n=r?U{A!7%)>;xUB}qWXx5IE5Gfas3mDZ0 zcNAqRc+u@@ez|@joBbM-{0fg#{ADCQxYl6y30d9pU=$0O9WxlykAennn+O|D_H;i) z%niq{zD8!3G57+tCUV3T`Im>q6duloFTtrHL@mzXR580jzQdoYGMFpKl+5s2Rl9I4 z#Nelt-xxoGjt6$MbgaHKxSwyp*FAZjNga5J><%e%(z7jbEx`_3_HyrxP94y6-F9Bp zPwcco^F8rc^2=m_8o(RTT|1V+9awvzl;9mQa(`?8CCyWv^=May{DI07?%Q3eh4n`} ztP0u&eZZN|E4+P@KmL0GMZsa=W8vezrAHetxboA_w}Mbh;yM!04eshnx831Z`HEwc zB|OE$c@LDfpf;0soOYhJ*S1X&XEXp@a|Tdm3kXedb{G8uUEGu&=VLrWmG28=DH2Vz zN)@s@Z+ogfw7da~{-z8;S2Hl67U>V5wfp|C`ryf|3~fV1ps%Bmp=t-CC-T0Dz3$1F zJwa~*-;ALOuMFYT6s3xXLXA3Eck39rY}5zS$6et?=>@!1oOoZ=Blrwp-~VeFqq^Zf z*u2cV%{-S~xK+7TT9PQGPX%6k;+uc=wDysJ{!@HWH4PagHqqUgA6Hwzhp>Kre)Y>U zX~7#rh6bQ_Dj!CR>Kz&2B7isIMr!0*8@VRfXrlJ)c?{hWrYEK@{OUa12t}1H=X`u` zgIKmrXT$Og3#dkUxgo)cypxY|py7SZ)*Vcrn zj+1XeK@Jt!O)P;hpzT5-v#Ipvc@15c_v=Dg(w=@zssn!g!Axk+b1Y^`avC2t#2_d= zC@8b5)zzXK2I&fGT9>AAp`xUz(4)rGW(fmv~8<@{G0wUgPm}1ZSI2AWU zYqvO~nCh{n1Ix71jo1SeU4{X#PyhY>PJAi)c1VKt*V?Y_HM$_So2T{k#Gh(kzlh(W z31HT1{uXl>uBTPK`I_lPg}?fLk&ly(bIO&N7n3U_Ao4$LGgNV+}eJ5(6R4h>vK~b{y^CV0dt4?z~d6QyL&Z~aQWw)Y0*G0Kga^_DtYwbjs?pgSqJn%NM-!GHJAM3#QwHX*qF#Y(gLJ=m?C z6`YeDI>{rrT_mXkQWCpNmgbQl)uq83M*w_J!q#Vgmv3mpv!E}G%7G9X2tQe{2;uK(7NRG3Vc{$yQeIK;caEox zK@e{f)68#72sf8u89~mxoD`skrdt`X83_T-%ntGp6T@9xU+mHU+2qGE)T9a|=wf|B zLg|c)b|ANMm548jkCi5s{KG{pMa!>9K~P9aZ@9K!t%Y(o7%`Ylo0ap~?B4ca%H)We zO?wb$!6A`KQug((7;;BF^Po@hnHNcHKWP7La<;c7o(~B7dIIsSMsSCXRbJnhWAL&0 zL&g}#k91OgJj8r?>9v?O3EwxS(qQ?R&%e@m{inU+K%B6}&pJ9qoO(K5NdjS!mXcvC zQ_NDxi}jVJrShj}vXq|-(O*mEoqPa5DM{ z10u*}DM2!1Z^^EHbS!u&cF1^wb-Kb8l4ORYVSk@2{6#b^LMwus7DFrXFqF}3r190W zlt{Th;g7enn6&;hu{VHq+b!Gn4BXTs%d{UVg?5jE*4(+?Fp}@^laTGVm8NlAec**TkMOM)Y4=WV*#dcQZtav8%Q)-x@!WtG3Lw} zbCo^Ndq0t31>erX8xAQB>04dF2Qb65OJDRg)%QY=upwG1tHug(SK-Ld_<0ZA!71IR z_gzgD-wuSBod|$A6h|dA`;+6a;gK#0USfZG)Pf<6 zotEgcXXKFj3=0eAQ1`i-iJ_5_%th4B`+F2W^+m3l&ur-70c_F5QoPl1IE1qjzxa>D zMo5Fo$gWGbG?&s@bW~i#-{F9m5G9`~s*!>tmL$XfRoGcaMY;WJTtrY>LO{BaW{R1i z8>B@Lq>=6zIu#_PySq`OLs}Fhhmb}Z5tVKn;Ew0s`@83iXRSMnKW3hJ=6&}5zTdrH z7Hjyt`bnyffTyK9NR-g={Lo@}qLPzR^C}@e|0jwp1!))DP>~PXykvMIpVn_#`INCg zC;WNkCq*A{x1!5AME3D`r{QOT`!x^mNloL*DsaS`BhX)VdGLjfhK`)x0sn)dNKXW9 z?hmv1{Z~wd`?F8PhxR%AlLOu@zHyp3{T4XtdyF-Iq{W!3U86*J+V*bWul~meYqL&r z9bDADOaJ@lN&K$8dgJd2DT60v$KT&Al4Z-Zw)J`!QC7)R)s~?3nb-9@2pB8_44&X~ zl@ITi4i2v7A~0q+TGAfseZbB=TL7SSfpWjQ<~Kgo2-}q!DZBzSgpYBC;M@wPd;D#p zUy&bo?g1;KwRchR`-m|*#A(sni;ki#Myusb6wfg(6wTALDOqi!K{F?QCVwPK!Q)0qLD7pO3@1|AOMVTmo;%q8y*v$ zeNCeF-SXJb+*DA=#-TCFCEUw^J638bLDTs`8g5@{32)JZO|ZN$Ur5QPMn%dkLL!0i zsJbWhcWOSZS}r5_si|}K`(m7HVCl*C01GMFw=IwZ!YnKgE+-z2!0LieP3r)L(PP#w z4uJ4x9z$vZYt*UxVQnpw`RG~NN_DgQduzd6M=KNAsGg+guJP?JUqYzaZ2Q}U@mB;D z%tpiT+o9j<(Oggg+OZkA?395GX-?>=c%`Vb*)IZe^crC=K5ei0zS-gbxyG))H5ggP zl{>p*o8zCFZKNs2iquWY7XPHDRJgRD+*3+imE{{S5mZiP1WQ(yHI7CV98uRKhzc*k zMR}t)0EUVx;j?j8)DCD)TBb3m-SUcWyQ$5@Kd8TgZRWM-OS+zCvr7|d=JbQ`9IC8d zchT57;kyy_8yda_e4e2!q(AD-*l}}l!5fYOq8!E2lZ5T@3GV{!zAgdR0Hd}7&^1Qjx*tPv4>?Zr;Jicmf4g4rZ z1BWuGU=Ppi!VPLwrDUL?3y(vjWu|m;Gb-|Fz@)^v1%0nqPQ_(ffdr?)`6~%ex-rHV z+Cqd>jk8v_fr!KeP-2}b8x&6}1>PfzP-z5hKNk}))i4SgW|_ZTtYS5y(dz>pQ?_;jhCsCx)cb#@kPxj7H!D1G~Ev4;d{ z7x<0&jMN;SWJ_n?{_>uzNOc*-GkQAV$bIH$=>p+6VVP`G`{lJK^J)#VY)N)c!L&1< zcNynKi||=aoi0x|aoM$Jsx|BJ38))u3G!#>v-3@R=yg40acyK|g1|`T>2QBJDvz;2 zbJNwr0*b;fx=u+^E)f$9TBY_oM)W;#-94_buTs!%^(vzUX@#fwzf>!q9y{SGoKX*o z_LW^(jWi~jd7mB1EL7RDoNWJSMVaGSrKJ%Dt}@$?nCyl6!a}rMIjkGT=0wPgbGjJF z5xBy^Y1d}PV*ve{^ax)-8}fTohpQ{XAuw$L#VB!y@T`aL7=ahrpXA2P|E>M3B#3Xi zud}KMpL&33Bv#^?PMD;1iLFGlA&D&HqYo>dcqLMCz}T?P3GuO0FgI_TEOh|@1i z4->4OHhHLzc2vg_GRkg8Tr%wxzHATf!2cC;SwiH`zLR{*5=M6J{W;ZTiQ^OF$DR8} zkY7r_EJmA5jcMIfYY@0%Mc!qJ)0L3~QR~vza6-RjiZejW@VV2wcekE_5r)r*D2ZJ97eI%y7|B(`6~GrqgB1 z4=&-YcM(%lL2ulhKbWpRZssAz9UK!*F6?NzKB&AEplsQu?_uCiIp{$XDs2bn0(}%raRXVdv10u!8$Wu zA;q`=8t2f!2(CKP5+kErUbE6CRx18HMY0 z(PL*L&5G&-Hc#H{o+yRYy)O_a$ZE1&^#%K{y+J;CW7=DrS+XSNu-?maeX!mp9yut$zI7ZfhFTduo`0kb*vf%ahw@d28dLzk4O!h&+8x)#-e|AxrNZ6f zIkqnhFuMhUZwNZlXLpa>wJNh*28FXTmk!f*pIO~xzTtiqce~^6TIxN1sX#xqDCLSf zctnD-58#bKcdYt#Z&}(&$?A$a^;`M|ya-R!ltV=Us-9cE#POVvErk=F0A*+ysbp_b zJaBZE6id=+r3tX{qhvT_C0vk{XCtqB)|gp2eEe0YZi+5-R&|R*y9z}@NPcA8xJF8I z;({XG0htti)^Mk9Hi)==OQt#Jp%10y*h^(n%7R!EiubF5iqFkH4F^BkjUw=r-ILq} zhcbmo5{d@`k7y0{ok!X`?$p`(ASrO3_-$;ntER#fEQ_bo>KKgG9)F+<8}roSuUgNq zclG{KHh>EH8Nb<7f7CwfWHDJzTZLAdAXQfK$#;ly`04KL`SmjN?bMYm9?*JEYC=*!T#RFeI)U0Q@>LUUWEEb=*p<;< zfc{Ksj|A7nFb5ala}F6R(FhS9i)#x1M>={kE2|cK`MHtcyP~c3Bf|oB4n8(7E^2Fq zD>Fp2%7j*Wk{-5ZR&pNNk-qwsto_~pL&1rzk*{59I59j}nP8iVzcl`Ug^`Fs1bb}) zKQgj7E-%kYpE4UtLrs;5}WSkgwlL{h{+i>|*;u#^;TAhx933 z=FLDh9He0P!w7Pf;N0 z)H|h6H}<^E-zaL1=p~L^}+XMBDMr$ByQlnDq9VA z-Vh19WxWhCpcX?oAmfW{9&kGK6vlrK)f7kg5{ubb5D-?V*BqM-R& z#{1UIe7)4lT%oU|ua9<>hlk(cjkOXrMX3IHaZO8$pYNP;{ww{BrW%inh^por292dS+y?l{);24Sg4Tt)6T2q!0b=LCI@)(h?m5p0C2kp{i* z^{;YC(Z%z2nkCU=ElnJ~?#-CxJMEQf*4q$hvGeCUf{vt$>`u{`HBqYf~XbWFijih(_0`_L$HcA&9QT4Mux zX#EC6i1!`L!4%%VZ^4`&`%zZb`!1H4|I}{Ji5=ad_8#6(n_9Xi7!q2T5WcVZvd>Vm zUs;ChO?DB&rM;2i)LxzGy=#Ndet34#-dskw z#u8fs!T$WZ5>;RA9&#VAeKw6g7B&vJ@zCN--KW5j=|06?EBdc)2{#M>_iP+EcA7dC z7dNVC+>s(1x*C0dZ~xi|2nR2v5=&lXcDOO&O`M*MOM&T-NZWH0AX~w7Dlu~~(bc>B z@%m9azjITz>1FA+WxOkRyhB~5zYgnFG>Mub>T%DdLOuO$(%EPm!|N%}^?Ew}&@b+v zys9TY$BIV{V<)@&@e+1MxZOCAVL3#xDaP_2@C*-q>QQ=i_yaw5AoMPN0En76r#Ug|{uF zraZJXFH{WM>yQ;+S1!Daheo(j9~{Sf-NVl^?Mh@gf35ffhoPa3;XJ+LApX;|{1wZ9 zEQ>02L0(QUQ_s z1o62MsOJyr1cTy$>wFlT9h=iged8nRI&2`)`CBKSY*t+B)yUdLJHC&JsL@&<&llM`zPC`?D1Vuy! z>e~3scVvr*_5491vEQ)uJ#ow6UyghAzJz)!}W081GMb;E&xcE-4tQ%g1GF5>a!#JQmpDY@QD7?0CkEFJXxoHojk_WE| zU8orOr3K(5Uiy0*_m`S0vsNxQSw~}hv&9V`!J#@yI{NS3^KhtPxApyJXk~c}KBe=x ziiFg!&Vz&I?CT?yId%sLO`dpHjjy|*=wOMU02}>q8b989l67w_+M-pPSI?tA*^ypm zM%Z2De!Yq^HfZwhg!LJenmqm1Q=TVK;YKpLM$vraoSycg!`ab!r($7UujJ%AQvQMJ z-cL6*7qQ_>^71oQi)7BMX@XH-N6x)nj=KmSqOSJ}4dh!Asl<*odyMv97#wFCbL^e5Ab?v6|ERr`&(=ACKMd{xY&nVS9OJ}+MoZy(WL0LfL zuuQkf+HIk=9XrQAV%+J5@cjr;&wix!#+Dpj@!>L^u>7JpWoRnM2?I0fPOz*huba;bGZKJ6Z>Gygc09;-Ly|9H)DrLcw7%ue zj|J)q2I&_mQKjY;1c>F_{AC=J0DtZ_lz}s2n)%{LW9UmyoSi}py%p04*UXRdl=?MC zh8>FKjMA`G`f-g%c6YcwEFfPX>HSi6Wd&Y^6KzVne3hP3&s{^{2z-4u&6{fMC~&SD zBSYfl;0T>t>2bDMq3PSE>_qZKRP0`P+b|F8*JxV3z`E{79^((Kt?i%49H--2`iS>( z3r%W5vDC2-w8UL)_^{++^f$Jti?o-*^v%Q%N*`-BowY{{}ZvOa=(87zvJAiX%NInDUaCLRaK)5&R)UUl{!aQ)kO|}^$TT! z4^qxr%3P*yUTk=gF;~k~(9lLyp}m1%od)oW7*t(ltr?JTIFkL*Oo@%lL@v73f`KDX0BfN&;m*KwbxC5X}fng#rs{z8f=Z4ojS|~F!Y@-pe&eDmc;0!s3s&t}g zev4pD(0p-}XVW{8_~N8@^YaVaMA^eTPm13Z19Z6TzS*BaL+t6&fwNzLxjH{Ixb+?h zIGs8B5(l9Sii?Wn(m#vZd02%3`zKdyjhAf?CV05rkxot?4Lsxq1j%DNDJ2CsRVT!1 zq7t6E9SPzcEj3@zP@&m$mu{}}4yCfkV(_qO8soJ=AC+<&Cu`SX2kTBP7bHrcwWPk) z65{FhZq86u2~j!z&34y*xyCoZjx*zPyhwgU$uku>n}@1$leda(qg(^zY|dZyZz%Q8 zJlxn=8|3`_5;p{Qa>#K<1Gae!3{9ywFgBaIBGZ=eK3kWx-YdctPMTVAqVSqTMqUkk(+IB3%eM&ViJ}Cz7WPbf+in|JDA~QL zER=CGI=bn95G_|qt1U8T5Iqdaq`j2I^{IOP>P`0Wn>yJqp(Q1j{2oMnO097<_Bmhp zyr)15QrF?A}Zj)hR8Q^nkGM*bN$49B`Nt?f;lD^nPTHEZT4R4ubX?Y+Wbc-Y( z32Hek-?l2xl_@1BLzSg*(L4~I9(|{n4qcjLKB^e|f^TDYe4O`X+VN4dS)*@&GPx{5 z3Pce!*u{uzl+>g6E+bzdk{V!C)fsC|dB;r%>_Hp_*wqbwJDJ5981w|(VysI`tCxJA zUxH=S<{R&-nW%+pL_%Q^2@iEfKH)HJikU$5JT`V|luU`3z}vhVE2G^q_fRK*HfJyE z(VrtDjVzfCEAK;E5dM@LO=DuGqR{o)hxa$X|Fm~$NNo|$uyWaVSZ3*Qw=oq7Ei)wL z{+MY5@bMGkO|<2rETDe*uDl&9_*MpZYKFJ%9nyZ(4sWLsi+m)qs_mM4lFBy1ERYKfr&A3-yk&18`^sCnMaKOkB`5aRckE96q^!Uver7N1mLH{vJhZZ*H)`~YjyTgqt$oH( zTuCgpS|JPMa-R}^5Ba*Yaub$utzB-r{Iz|ZB=GxSwVYLPU*9M)zOKVd2VxS|0p9~t`?T~Xv_)_U+_N< zCLss}1Yxpd`bz_XAwn=T5$5-U$??B6K>!#CNApSkt^vS8APBk|f7gCL2LdrP^k;t) zWd7j;fWd%2d{7VsjXe6h4*-WkpcokdC1mS`pjM@W0f-uZpL;C;_jN1S9p*#5> zbwO+BlZm0hfDj=}AG$Swf8?T5FvpDc{Yy^*F?$l-YG61<9{|8m0A^j#J|XxYV}brl zF8YLEoL}_u{w)LgM+VyVdk^`0524o7V0+0ilAJwTFQOfq(cwKnUjC&;+MH`T&OBaxnVr6 zLV=hWXdmYK1;Ak-FlG(lF!U~lF*i624#ViR-+LGsqo!z02#zskv<3oTWc>DF?wx22 zj=5HWXowx=JkS~tg3+hwh5yIi`CG&6=ik>4@ZaX)=4y%tUb*7`zIZ*h@j+jsfM{5m zlam|MZ`W@G-9tx9Cnj{-U(aQk^qEBA0Fb4bsUYkb90mlKLoCfK%wU#6W)=Vl6f9)= k%t9Rh|FGaj+|ZZbzb<;{aY2Ou`0VU*>hk#i1^A2Nod5s; literal 0 HcmV?d00001 diff --git a/external/unbound/doc/example.conf.in b/external/unbound/doc/example.conf.in index af8f92b..55a0889 100644 --- a/external/unbound/doc/example.conf.in +++ b/external/unbound/doc/example.conf.in @@ -19,6 +19,14 @@ server: # Set to "" or 0 to disable. Default is disabled. # statistics-interval: 0 + # enable shm for stats, default no. if you enable also enable + # statistics-interval, every time it also writes stats to the + # shared memory segment keyed with shm-key. + # shm-enable: no + + # shm for stats uses this key, and key+1 for the shared mem segment. + # shm-key: 11777 + # enable cumulative statistics, without clearing them after printing. # statistics-cumulative: no @@ -53,6 +61,15 @@ server: # outgoing-interface: 2001:DB8::5 # outgoing-interface: 2001:DB8::6 + # Specify a netblock to use remainder 64 bits as random bits for + # upstream queries. Uses freebind option (Linux). + # outgoing-interface: 2001:DB8::/64 + # Also (Linux:) ip -6 addr add 2001:db8::/64 dev lo + # And: ip -6 route add local 2001:db8::/64 dev lo + # And set prefer-ip6: yes to use the ip6 randomness from a netblock. + # Set this to yes to prefer ipv6 upstream servers over ipv4. + # prefer-ip6: no + # number of ports to allocate per thread, determines the size of the # port range that can be open simultaneously. About double the # num-queries-per-thread, or, use as many as the OS will allow you. @@ -90,10 +107,16 @@ server: # use IP_TRANSPARENT so the interface: addresses can be non-local # and you can config non-existing IPs that are going to work later on + # (uses IP_BINDANY on FreeBSD). # ip-transparent: no + # use IP_FREEBIND so the interface: addresses can be non-local + # and you can bind to nonexisting IPs and interfaces that are down. + # Linux only. On Linux you also have ip-transparent that is similar. + # ip-freebind: no + # EDNS reassembly buffer to advertise to UDP peers (the actual buffer - # is set with msg-buffer-size). 1480 can solve fragmentation (timeouts). + # is set with msg-buffer-size). 1472 can solve fragmentation (timeouts) # edns-buffer-size: 4096 # Maximum UDP response size (not applied to TCP response). @@ -157,6 +180,10 @@ server: # the maximum number of hosts that are cached (roundtrip, EDNS, lame). # infra-cache-numhosts: 10000 + # define a number of tags here, use with local-zone, access-control. + # repeat the define-tag statement to add additional tags. + # define-tag: "tag1 tag2 tag3" + # Enable IPv4, "yes" or "no". # do-ip4: yes @@ -173,14 +200,31 @@ server: # useful for tunneling scenarios, default no. # tcp-upstream: no + # upstream connections also use UDP (even if do-udp is no). + # useful if if you want UDP upstream, but don't provide UDP downstream. + # udp-upstream-without-downstream: no + + # Maximum segment size (MSS) of TCP socket on which the server + # responds to queries. Default is 0, system default MSS. + # tcp-mss: 0 + + # Maximum segment size (MSS) of TCP socket for outgoing queries. + # Default is 0, system default MSS. + # outgoing-tcp-mss: 0 + + # Use systemd socket activation for UDP, TCP, and control sockets. + # use-systemd: no + # Detach from the terminal, run in background, "yes" or "no". + # Set the value to "no" when unbound runs as systemd service. # do-daemonize: yes # control which clients are allowed to make (recursive) queries # to this server. Specify classless netblocks with /size and action. # By default everything is refused, except for localhost. # Choose deny (drop message), refuse (polite error reply), - # allow (recursive ok), allow_snoop (recursive and nonrecursive ok) + # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on), + # allow_snoop (recursive and nonrecursive ok) # deny_non_local (drop queries unless can be answered from local-data) # refuse_non_local (like deny_non_local but polite error reply). # access-control: 0.0.0.0/0 refuse @@ -189,6 +233,23 @@ server: # access-control: ::1 allow # access-control: ::ffff:127.0.0.1 allow + # tag access-control with list of tags (in "" with spaces between) + # Clients using this access control element use localzones that + # are tagged with one of these tags. + # access-control-tag: 192.0.2.0/24 "tag2 tag3" + + # set action for particular tag for given access control element + # if you have multiple tag values, the tag used to lookup the action + # is the first tag match between access-control-tag and local-zone-tag + # where "first" comes from the order of the define-tag values. + # access-control-tag-action: 192.0.2.0/24 tag3 refuse + + # set redirect data for particular tag for access control element + # access-control-tag-data: 192.0.2.0/24 tag2 "A 127.0.0.1" + + # Set view for access control element + # access-control-view: 192.0.2.0/24 viewname + # if given, a chroot(2) is done to the given directory. # i.e. you can chroot to the working directory, for example, # for extra security, but make sure all files are in that directory. @@ -222,6 +283,8 @@ server: # the working directory. The relative files in this config are # relative to this directory. If you give "" the working directory # is not changed. + # If you give a server: directory: dir before include: file statements + # then those includes can be relative to the working directory. # directory: "@UNBOUND_RUN_DIR@" # the log file, "" means log to stderr. @@ -229,15 +292,23 @@ server: # logfile: "" # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to - # log to, with identity "unbound". If yes, it overrides the logfile. + # log to. If yes, it overrides the logfile. # use-syslog: yes + # Log identity to report. if empty, defaults to the name of argv[0] + # (usually "unbound"). + # log-identity: "" + # print UTC timestamp in ascii to logfile, default is epoch in seconds. # log-time-ascii: no # print one line with time, IP, name, type, class for every query. # log-queries: no + # print one line per reply, with time, IP, name, type, class, rcode, + # timetoresolve, fromcache and responsesize. + # log-replies: no + # the pid file. Can be an absolute path outside of chroot/work dir. # pidfile: "@UNBOUND_PIDFILE@" @@ -251,6 +322,9 @@ server: # enable to not answer version.server and version.bind queries. # hide-version: no + # enable to not answer trustanchor.unbound queries. + # hide-trustanchor: no + # the identity to report. Leave "" or default to return hostname. # identity: "" @@ -285,7 +359,7 @@ server: # Harden against queries that fall under dnssec-signed nxdomain names. # harden-below-nxdomain: no - # Harden the referral path by performing additional queries for + # Harden the referral path by performing additional queries for # infrastructure data. Validates the replies (if possible). # Default off, because the lookups burden the server. Experimental # implementation of draft-wijngaards-dnsext-resolver-side-mitigation. @@ -298,8 +372,18 @@ server: # Sent minimum amount of information to upstream servers to enhance # privacy. Only sent minimum required labels of the QNAME and set QTYPE - # to NS when possible. - # qname-minimisation: no + # to A when possible. + # qname-minimisation: yes + + # QNAME minimisation in strict mode. Do not fall-back to sending full + # QNAME to potentially broken nameservers. A lot of domains will not be + # resolvable when this option in enabled. + # This option only has effect when qname-minimisation is enabled. + # qname-minimisation-strict: no + + # Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN + # and other denials, using information from previous NXDOMAINs answers. + # aggressive-nsec: no # Use 0x20-encoded random bits in the query to foil spoof attempts. # This feature is an experimental implementation of draft dns-0x20. @@ -308,6 +392,7 @@ server: # Domains (and domains in them) without support for dns-0x20 and # the fallback fails because they keep sending different answers. # caps-whitelist: "licdn.com" + # caps-whitelist: "senderbase.org" # Enforce privacy of these addresses. Strips them away from answers. # It may cause DNSSEC validation to additionally mark it as bogus. @@ -355,6 +440,9 @@ server: # into response messages when those sections are not required. # minimal-responses: no + # true to disable DNSSEC lameness check in iterator. + # disable-dnssec-lame-check: no + # module configuration of the server. A string with identifiers # separated by spaces. Syntax: "[dns64] [validator] iterator" # module-config: "validator iterator" @@ -369,6 +457,12 @@ server: # and under the terms of our LICENSE (see that file in the source). # auto-trust-anchor-file: "@UNBOUND_ROOTKEY_FILE@" + # trust anchor signaling sends a RFC8145 key tag query after priming. + # trust-anchor-signaling: yes + + # Root key trust anchor sentinel (draft-ietf-dnsop-kskroll-sentinel) + # root-key-sentinel: yes + # File with DLV trusted keys. Same format as trust-anchor-file. # There can be only one DLV configured, it is trusted from root down. # DLV is going to be decommissioned. Please do not use it any more. @@ -430,6 +524,10 @@ server: # that set CD but cannot validate themselves. # ignore-cd-flag: no + # Serve expired responses from cache, with TTL 0 in the response, + # and then attempt to fetch the data afresh. + # serve-expired: no + # Have the validator log failed validations for your diagnosis. # 0: off. 1: A line per failed user query. 2: With reason and bad IP. # val-log-level: 0 @@ -450,7 +548,8 @@ server: # If the value 0 is given, missing anchors are not removed. # keep-missing: 31622400 # 366 days - # debug option that allows very small holddown times for key rollover + # debug option that allows very small holddown times for key rollover, + # otherwise the RFC mandates probe intervals must be at least 1 hour. # permit-small-holddown: no # the amount of memory to use for the key cache. @@ -475,6 +574,9 @@ server: # local-zone: "localhost." nodefault # local-zone: "127.in-addr.arpa." nodefault # local-zone: "1.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.ip6.arpa." nodefault + # local-zone: "onion." nodefault + # local-zone: "test." nodefault + # local-zone: "invalid." nodefault # local-zone: "10.in-addr.arpa." nodefault # local-zone: "16.172.in-addr.arpa." nodefault # local-zone: "17.172.in-addr.arpa." nodefault @@ -508,13 +610,17 @@ server: # local-zone: "8.b.d.0.1.0.0.2.ip6.arpa." nodefault # And for 64.100.in-addr.arpa. to 127.100.in-addr.arpa. - # if unbound is running service for the local host then it is useful + # If unbound is running service for the local host then it is useful # to perform lan-wide lookups to the upstream, and unblock the # long list of local-zones above. If this unbound is a dns server # for a network of computers, disabled is better and stops information # leakage of local lan information. # unblock-lan-zones: no + # The insecure-lan-zones option disables validation for + # these zones, as if they were all listed as domain-insecure. + # insecure-lan-zones: no + # a number of locally served zones can be configured. # local-zone: # local-data: "" @@ -525,8 +631,11 @@ server: # o redirect serves the zone data for any subdomain in the zone. # o nodefault can be used to normally resolve AS112 zones. # o typetransparent resolves normally for other types and other names - # o inform resolves normally, but logs client IP address + # o inform acts like transparent, but logs client IP address # o inform_deny drops queries and logs client IP address + # o always_transparent, always_refuse, always_nxdomain, resolve in + # that way but ignore local data for that name + # o noview breaks out of that view towards global local-zones. # # defaults are localhost address, reverse for 127.0.0.1 and ::1 # and nxdomain for AS112 zones. If you configure one of these zones @@ -553,16 +662,31 @@ server: # you need to do the reverse notation yourself. # local-data-ptr: "192.0.2.3 www.example.com" - # service clients over SSL (on the TCP sockets), with plain DNS inside - # the SSL stream. Give the certificate to use and private key. + # tag a localzone with a list of tag names (in "" with spaces between) + # local-zone-tag: "example.com" "tag2 tag3" + + # add a netblock specific override to a localzone, with zone type + # local-zone-override: "example.com" 192.0.2.0/24 refuse + + # service clients over TLS (on the TCP sockets), with plain DNS inside + # the TLS stream. Give the certificate to use and private key. # default is "" (disabled). requires restart to take effect. - # ssl-service-key: "path/to/privatekeyfile.key" - # ssl-service-pem: "path/to/publiccertfile.pem" - # ssl-port: 853 + # tls-service-key: "path/to/privatekeyfile.key" + # tls-service-pem: "path/to/publiccertfile.pem" + # tls-port: 853 - # request upstream over SSL (with plain DNS inside the SSL stream). + # request upstream over TLS (with plain DNS inside the TLS stream). # Default is no. Can be turned on and off with unbound-control. - # ssl-upstream: no + # tls-upstream: no + + # Certificates used to authenticate connections made upstream. + # tls-cert-bundle: "" + + # Add system certs to the cert bundle, from the Windows Cert Store + # tls-win-cert: no + + # Also serve tls on these port numbers (eg. 443, ...), by listing + # tls-additional-port: portno for each of the port numbers. # DNS64 prefix. Must be specified when DNS64 is use. # Enable dns64 in module-config. Used to synthesize IPv6 from IPv4. @@ -586,7 +710,55 @@ server: # ratelimit-for-domain: example.com 1000 # override the ratelimits for all domains below a domain name # can give this multiple times, the name closest to the zone is used. - # ratelimit-below-domain: example 1000 + # ratelimit-below-domain: com 1000 + + # global query ratelimit for all ip addresses. + # feature is experimental. + # if 0(default) it is disabled, otherwise states qps allowed per ip address + # ip-ratelimit: 0 + + # ip ratelimits are tracked in a cache, size in bytes of cache (or k,m). + # ip-ratelimit-size: 4m + # ip ratelimit cache slabs, reduces lock contention if equal to cpucount. + # ip-ratelimit-slabs: 4 + + # 0 blocks when ip is ratelimited, otherwise let 1/xth traffic through + # ip-ratelimit-factor: 10 + + # what is considered a low rtt (ping time for upstream server), in msec + # low-rtt: 45 + # select low rtt this many times out of 1000. 0 means the fast server + # select is disabled. prefetches are not sped up. + # low-rtt-permil: 0 + + # Specific options for ipsecmod. unbound needs to be configured with + # --enable-ipsecmod for these to take effect. + # + # Enable or disable ipsecmod (it still needs to be defined in + # module-config above). Can be used when ipsecmod needs to be + # enabled/disabled via remote-control(below). + # ipsecmod-enabled: yes + # + # Path to executable external hook. It must be defined when ipsecmod is + # listed in module-config (above). + # ipsecmod-hook: "./my_executable" + # + # When enabled unbound will reply with SERVFAIL if the return value of + # the ipsecmod-hook is not 0. + # ipsecmod-strict: no + # + # Maximum time to live (TTL) for cached A/AAAA records with IPSECKEY. + # ipsecmod-max-ttl: 3600 + # + # Reply with A/AAAA even if the relevant IPSECKEY is bogus. Mainly used for + # testing. + # ipsecmod-ignore-bogus: no + # + # Domains for which ipsecmod will be triggered. If not defined (default) + # all domains are treated as being whitelisted. + # ipsecmod-whitelist: "example.com" + # ipsecmod-whitelist: "nlnetlabs.nl" + # Python config section. To enable: # o use --with-pythonmodule to configure before compiling. @@ -602,18 +774,20 @@ remote-control: # set up the keys and certificates with unbound-control-setup. # control-enable: no - # Set to no and use an absolute path as control-interface to use - # a unix local named pipe for unbound-control. - # control-use-cert: yes - # what interfaces are listened to for remote control. # give 0.0.0.0 and ::0 to listen to all interfaces. + # set to an absolute path to use a unix local name pipe, certificates + # are not used for that, so key and cert files need not be present. # control-interface: 127.0.0.1 # control-interface: ::1 # port number for remote control operations. # control-port: 8953 + # for localhost, you can disable use of TLS by setting this to "no" + # For local sockets this option is ignored, and TLS is not used. + # control-use-cert: "yes" + # unbound server key file. # server-key-file: "@UNBOUND_RUN_DIR@/unbound_server.key" @@ -639,6 +813,7 @@ remote-control: # stub-addr: 192.0.2.68 # stub-prime: no # stub-first: no +# stub-tls-upstream: no # stub-zone: # name: "example.org" # stub-host: ns.example.com. @@ -654,6 +829,88 @@ remote-control: # forward-addr: 192.0.2.68 # forward-addr: 192.0.2.73@5355 # forward to port 5355. # forward-first: no +# forward-tls-upstream: no # forward-zone: # name: "example.org" # forward-host: fwd.example.com + +# Authority zones +# The data for these zones is kept locally, from a file or downloaded. +# The data can be served to downstream clients, or used instead of the +# upstream (which saves a lookup to the upstream). The first example +# has a copy of the root for local usage. The second serves example.org +# authoritatively. zonefile: reads from file (and writes to it if you also +# download it), master: fetches with AXFR and IXFR, or url to zonefile. +# With allow-notify: you can give additional (apart from masters) sources of +# notifies. +# auth-zone: +# name: "." +# for-downstream: no +# for-upstream: yes +# fallback-enabled: yes +# master: b.root-servers.net +# master: c.root-servers.net +# master: e.root-servers.net +# master: f.root-servers.net +# master: g.root-servers.net +# master: k.root-servers.net +# auth-zone: +# name: "example.org" +# for-downstream: yes +# for-upstream: yes +# zonefile: "example.org.zone" + +# Views +# Create named views. Name must be unique. Map views to requests using +# the access-control-view option. Views can contain zero or more local-zone +# and local-data options. Options from matching views will override global +# options. Global options will be used if no matching view is found. +# With view-first yes, it will try to answer using the global local-zone and +# local-data elements if there is no view specific match. +# view: +# name: "viewname" +# local-zone: "example.com" redirect +# local-data: "example.com A 192.0.2.3" +# local-data-ptr: "192.0.2.3 www.example.com" +# view-first: no +# view: +# name: "anotherview" +# local-zone: "example.com" refuse + +# DNSCrypt +# Caveats: +# 1. the keys/certs cannot be produced by unbound. You can use dnscrypt-wrapper +# for this: https://github.com/cofyc/dnscrypt-wrapper/blob/master/README.md#usage +# 2. dnscrypt channel attaches to an interface. you MUST set interfaces to +# listen on `dnscrypt-port` with the follo0wing snippet: +# server: +# interface: 0.0.0.0@443 +# interface: ::0@443 +# +# Finally, `dnscrypt` config has its own section. +# dnscrypt: +# dnscrypt-enable: yes +# dnscrypt-port: 443 +# dnscrypt-provider: 2.dnscrypt-cert.example.com. +# dnscrypt-secret-key: /path/unbound-conf/keys1/1.key +# dnscrypt-secret-key: /path/unbound-conf/keys2/1.key +# dnscrypt-provider-cert: /path/unbound-conf/keys1/1.cert +# dnscrypt-provider-cert: /path/unbound-conf/keys2/1.cert + +# CacheDB +# Enable external backend DB as auxiliary cache. Specify the backend name +# (default is "testframe", which has no use other than for debugging and +# testing) and backend-specific options. The 'cachedb' module must be +# included in module-config. +# cachedb: +# backend: "testframe" +# # secret seed string to calculate hashed keys +# secret-seed: "default" +# +# # For "redis" backend: +# # redis server's IP address or host name +# redis-server-host: 127.0.0.1 +# # redis server's TCP port +# redis-server-port: 6379 +# # timeout (in ms) for communication with the redis server +# redis-timeout: 100 diff --git a/external/unbound/doc/ietf67-design-02.odp b/external/unbound/doc/ietf67-design-02.odp index 8321b556f9dd82202b2ed5444dd31838ae46eb13..4be2c7d4e5d718fd123c5671cb032a046cba71e7 100644 GIT binary patch delta 19 acmeC4C(<=fq@jheg{g(Pg=GsX7e4?-CI#jI delta 21 ccmeC0C(=Dnq@jheg{g(Pg=GsX7e6Bx08#q|@c;k- diff --git a/external/unbound/doc/libunbound.3.in b/external/unbound/doc/libunbound.3.in index 1cefbea..1f48d9d 100644 --- a/external/unbound/doc/libunbound.3.in +++ b/external/unbound/doc/libunbound.3.in @@ -12,13 +12,14 @@ .B unbound.h, .B ub_ctx, .B ub_result, -.B ub_callback_t, +.B ub_callback_type, .B ub_ctx_create, .B ub_ctx_delete, .B ub_ctx_set_option, .B ub_ctx_get_option, .B ub_ctx_config, .B ub_ctx_set_fwd, +.B ub_ctx_set_stub, .B ub_ctx_resolvconf, .B ub_ctx_hosts, .B ub_ctx_add_ta, @@ -65,6 +66,12 @@ \fBub_ctx_set_fwd\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR addr); .LP \fIint\fR +\fBub_ctx_set_stub\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR zone, +\fIchar*\fR addr, +.br + \fIint\fR isprime); +.LP +\fIint\fR \fBub_ctx_resolvconf\fR(\fIstruct ub_ctx*\fR ctx, \fIchar*\fR fname); .LP \fIint\fR @@ -113,7 +120,7 @@ .br \fIint\fR rrtype, \fIint\fR rrclass, \fIvoid*\fR mydata, .br - \fIub_callback_t\fR callback, \fIint*\fR async_id); + \fIub_callback_type\fR callback, \fIint*\fR async_id); .LP \fIint\fR \fBub_cancel\fR(\fIstruct ub_ctx*\fR ctx, \fIint\fR async_id); @@ -143,7 +150,8 @@ is an implementation of a DNS resolver, that does caching and DNSSEC validation. This is the library API, for using the \-lunbound library. The server daemon is described in \fIunbound\fR(8). -The library can be used to convert hostnames to ip addresses, and back, +The library works independent from a running unbound server, and +can be used to convert hostnames to ip addresses, and back, and obtain other information from the DNS. The library performs public\-key validation of results with DNSSEC. .P @@ -155,7 +163,7 @@ and deleting it with It can be created and deleted at any time. Creating it anew removes any previous configuration (such as trusted keys) and clears any cached results. .P -The functions are thread\-safe, and a context an be used in a threaded (as +The functions are thread\-safe, and a context can be used in a threaded (as well as in a non\-threaded) environment. Also resolution (and validation) can be performed blocking and non\-blocking (also called asynchronous). The async method returns from the call immediately, so that processing @@ -173,7 +181,7 @@ and .B ub_ctx_hosts to read them. Before you call this, use the openssl functions CRYPTO_set_id_callback and -CRYPTO_set_locking_callback to set up asyncronous operation if you use +CRYPTO_set_locking_callback to set up asynchronous operation if you use lib openssl (the application calls these functions once for initialisation). Openssl 1.0.0 or later uses the CRYPTO_THREADID_set_callback function. .TP @@ -196,7 +204,10 @@ without trailing ':'. The returned value must be free(2)d by the caller. A power\-user interface that lets you specify an unbound config file, see \fIunbound.conf\fR(5), which is read for configuration. Not all options are relevant. For some specific options, such as adding trust anchors, special -routines exist. +routines exist. This function is thread\-safe only if a single instance of +ub_ctx* exists in the application. If several instances exist the +application has to ensure that ub_ctx_config is not called in parallel by +the different instances. .TP .B ub_ctx_set_fwd Set machine to forward DNS queries to, the caching resolver to use. @@ -207,6 +218,15 @@ that case the addresses are used as backup servers. At this time it is only possible to set configuration before the first resolve is done. .TP +.B ub_ctx_set_stub +Set a stub zone, authoritative dns servers to use for a particular zone. +IP4 or IP6 address. If the address is NULL the stub entry is removed. +Set isprime true if you configure root hints with it. Otherwise similar to +the stub zone item from unbound's config file. Can be called several times, +for different zones, or to add multiple addresses for a particular zone. +At this time it is only possible to set configuration before the +first resolve is done. +.TP .B ub_ctx_resolvconf By default the root servers are queried and full resolver mode is used, but you can use this call to read the list of nameservers to use from the @@ -391,6 +411,10 @@ returns NULL on an error (a malloc failure). returns true if some information may be available, false otherwise. .B ub_fd returns a file descriptor or \-1 on error. +.B ub_ctx_config +and +.B ub_ctx_resolvconf +attempt to leave errno informative on a function return with file read failure. .SH "SEE ALSO" \fIunbound.conf\fR(5), \fIunbound\fR(8). diff --git a/external/unbound/doc/requirements.txt b/external/unbound/doc/requirements.txt index a66962d..b643cec 100644 --- a/external/unbound/doc/requirements.txt +++ b/external/unbound/doc/requirements.txt @@ -81,7 +81,7 @@ o Too many Features. 5. Choices ---------- -o rfc2181 decourages duplicates RRs in RRsets. unbound does not create +o rfc2181 discourages duplicates RRs in RRsets. unbound does not create duplicates, but when presented with duplicates on the wire from the authoritative servers, does not perform duplicate removal. It does do some rrsig duplicate removal, in the msgparser, for dnssec qtype diff --git a/external/unbound/doc/unbound-anchor.8.in b/external/unbound/doc/unbound-anchor.8.in index 3d743a7..02a3e78 100644 --- a/external/unbound/doc/unbound-anchor.8.in +++ b/external/unbound/doc/unbound-anchor.8.in @@ -16,6 +16,8 @@ .SH "DESCRIPTION" .B Unbound\-anchor performs setup or update of the root trust anchor for DNSSEC validation. +The program fetches the trust anchor with the method from RFC7958 when +regular RFC5011 update fails to bring it up to date. It can be run (as root) from the commandline, or run as part of startup scripts. Before you start the \fIunbound\fR(8) DNS server. .P @@ -39,8 +41,8 @@ update certificate files. .P It tests if the root anchor file works, and if not, and an update is possible, attempts to update the root anchor using the root update certificate. -It performs a https fetch of root-anchors.xml and checks the results, if -all checks are successful, it updates the root anchor file. Otherwise +It performs a https fetch of root-anchors.xml and checks the results (RFC7958), +if all checks are successful, it updates the root anchor file. Otherwise the root anchor file is unchanged. It performs RFC5011 tracking if the DNSSEC information available via the DNS makes that possible. .P @@ -65,7 +67,7 @@ List the builtin root key and builtin root update certificate on stdout. .B \-u \fIname The server name, it connects to https://name. Specify without https:// prefix. The default is "data.iana.org". It connects to the port specified with \-P. -You can pass an IPv4 addres or IPv6 address (no brackets) if you want. +You can pass an IPv4 address or IPv6 address (no brackets) if you want. .TP .B \-x \fIpath The pathname to the root\-anchors.xml file on the server. (forms URL with \-u). diff --git a/external/unbound/doc/unbound-control.8.in b/external/unbound/doc/unbound-control.8.in index 12d309d..c207bee 100644 --- a/external/unbound/doc/unbound-control.8.in +++ b/external/unbound/doc/unbound-control.8.in @@ -99,6 +99,22 @@ but if the name has become an empty nonterminal (there is still data in domain names below the removed name), NOERROR nodata answers are the result for that name. .TP +.B local_zones +Add local zones read from stdin of unbound\-control. Input is read per line, +with name space type on a line. For bulk additions. +.TP +.B local_zones_remove +Remove local zones read from stdin of unbound\-control. Input is one name per +line. For bulk removals. +.TP +.B local_datas +Add local data RRs read from stdin of unbound\-control. Input is one RR per +line. For bulk additions. +.TP +.B local_datas_remove +Remove local data RRs read from stdin of unbound\-control. Input is one name per +line. For bulk removals. +.TP .B dump_cache The contents of the cache is printed in a text format to stdout. You can redirect it to a file to store the cache in a file. @@ -128,6 +144,9 @@ Remove the name, type information from the cache. Remove all information at or below the name from the cache. The rrsets and key entries are removed so that new lookups will be performed. This needs to walk and inspect the entire cache, and is a slow operation. +The entries are set to expired in the implementation of this command (so, +with serve\-expired enabled, it'll serve that information but schedule a +prefetch for new information). .TP .B flush_bogus Remove all bogus data from the cache. @@ -178,7 +197,7 @@ harden\-referral\-path, prefetch, prefetch\-key, log\-queries, hide\-identity, hide\-version, identity, version, val\-log\-level, val\-log\-squelch, ignore\-cd\-flag, add\-holddown, del\-holddown, keep\-missing, tcp\-upstream, ssl\-upstream, max\-udp\-size, ratelimit, -cache\-max\-ttl, cache\-min\-ttl, cache\-max\-negative\-ttl. +ip\-ratelimit, cache\-max\-ttl, cache\-min\-ttl, cache\-max\-negative\-ttl. .TP .B get_option \fIopt Get the value of the option. Give the option name without a trailing ':'. @@ -263,6 +282,34 @@ estimated qps and qps limit from config. With +a it prints all domains, not just the ratelimited domains, with their estimated qps. The ratelimited domains return an error for uncached (new) queries, but cached queries work as normal. +.TP +.B ip_ratelimit_list \fR[\fI+a\fR] +List the ip addresses that are ratelimited. Printed one per line with current +estimated qps and qps limit from config. With +a it prints all ips, not +just the ratelimited ips, with their estimated qps. The ratelimited +ips are dropped before checking the cache. +.TP +.B list_auth_zones +List the auth zones that are configured. Printed one per line with a +status, indicating if the zone is expired and current serial number. +.TP +.B view_list_local_zones \fIview\fR +\fIlist_local_zones\fR for given view. +.TP +.B view_local_zone \fIview\fR \fIname\fR \fItype +\fIlocal_zone\fR for given view. +.TP +.B view_local_zone_remove \fIview\fR \fIname +\fIlocal_zone_remove\fR for given view. +.TP +.B view_list_local_data \fIview\fR +\fIlist_local_data\fR for given view. +.TP +.B view_local_data \fIview\fR \fIRR data... +\fIlocal_data\fR for given view. +.TP +.B view_local_data_remove \fIview\fR \fIname +\fIlocal_data_remove\fR for given view. .SH "EXIT CODE" The unbound\-control program exits with status code 1 on error, 0 on success. .SH "SET UP" @@ -288,12 +335,28 @@ The \fIstats\fR command shows a number of statistic counters. .I threadX.num.queries number of queries received by thread .TP +.I threadX.num.queries_ip_ratelimited +number of queries rate limited by thread +.TP .I threadX.num.cachehits number of queries that were successfully answered using a cache lookup .TP .I threadX.num.cachemiss number of queries that needed recursive processing .TP +.I threadX.num.dnscrypt.crypted +number of queries that were encrypted and successfully decapsulated by dnscrypt. +.TP +.I threadX.num.dnscrypt.cert +number of queries that were requesting dnscrypt certificates. +.TP +.I threadX.num.dnscrypt.cleartext +number of queries received on dnscrypt port that were cleartext and not a +request for certificates. +.TP +.I threadX.num.dnscrypt.malformed +number of request that were neither cleartext, not valid dnscrypt messages. +.TP .I threadX.num.prefetch number of cache prefetches performed. This number is included in cachehits, as the original query had the unprefetched answer from cache, @@ -301,6 +364,9 @@ and resulted in recursive processing, taking a slot in the requestlist. Not part of the recursivereplies (or the histogram thereof) or cachemiss, as a cache response was sent. .TP +.I threadX.num.zero_ttl +number of replies with ttl zero, because they served an expired cache entry. +.TP .I threadX.num.recursivereplies The number of replies sent to queries that needed recursive processing. Could be smaller than threadX.num.cachemiss if due to timeouts no replies were sent for some queries. .TP @@ -347,9 +413,24 @@ summed over threads. .I total.num.cachemiss summed over threads. .TP +.I total.num.dnscrypt.crypted +summed over threads. +.TP +.I total.num.dnscrypt.cert +summed over threads. +.TP +.I total.num.dnscrypt.cleartext +summed over threads. +.TP +.I total.num.dnscrypt.malformed +summed over threads. +.TP .I total.num.prefetch summed over threads. .TP +.I total.num.zero_ttl +summed over threads. +.TP .I total.num.recursivereplies summed over threads. .TP @@ -384,15 +465,18 @@ uptime since server boot in seconds. time since last statistics printout, in seconds. .SH EXTENDED STATISTICS .TP -.I mem.total.sbrk -If sbrk(2) is available, an estimate of the heap size of the program in number of bytes. Close to the total memory used by the program, as reported by top and ps. Could be wrong if the OS allocates memory non\-contiguously. -.TP .I mem.cache.rrset Memory in bytes in use by the RRset cache. .TP .I mem.cache.message Memory in bytes in use by the message cache. .TP +.I mem.cache.dnscrypt_shared_secret +Memory in bytes in use by the dnscrypt shared secrets cache. +.TP +.I mem.cache.dnscrypt_nonce +Memory in bytes in use by the dnscrypt nonce cache. +.TP .I mem.mod.iterator Memory in bytes in use by the iterator module. .TP @@ -447,6 +531,18 @@ number of queries that had an EDNS OPT record present. number of queries that had an EDNS OPT record with the DO (DNSSEC OK) bit set. These queries are also included in the num.query.edns.present number. .TP +.I num.query.ratelimited +The number of queries that are turned away from being send to nameserver due to +ratelimiting. +.TP +.I num.query.dnscrypt.shared_secret.cachemiss +The number of dnscrypt queries that did not find a shared secret in the cache. +The can be use to compute the shared secret hitrate. +.TP +.I num.query.dnscrypt.replay +The number of dnscrypt queries that found a nonce hit in the nonce cache and +hence are considered a query replay. +.TP .I num.answer.rcode.NXDOMAIN The number of answers to queries, from cache or from recursion, that had the return code NXDOMAIN. Also printed for the other return codes. @@ -496,6 +592,39 @@ timing and protocol support information. .I key.cache.count The number of items in the key cache. These are DNSSEC keys, one item per delegation point, and their validation status. +.TP +.I dnscrypt_shared_secret.cache.count +The number of items in the shared secret cache. These are precomputed shared +secrets for a given client public key/server secret key pair. Shared secrets +are CPU intensive and this cache allows unbound to avoid recomputing the +shared secret when multiple dnscrypt queries are sent from the same client. +.TP +.I dnscrypt_nonce.cache.count +The number of items in the client nonce cache. This cache is used to prevent +dnscrypt queries replay. The client nonce must be unique for each client public +key/server secret key pair. This cache should be able to host QPS * `replay +window` interval keys to prevent replay of a query during `replay window` +seconds. +.TP +.I num.query.authzone.up +The number of queries answered from auth\-zone data, upstream queries. +These queries would otherwise have been sent (with fallback enabled) to +the internet, but are now answered from the auth zone. +.TP +.I num.query.authzone.down +The number of queries for downstream answered from auth\-zone data. +These queries are from downstream clients, and have had an answer from +the data in the auth zone. +.TP +.I num.query.aggressive.NOERROR +The number of queries answered using cached NSEC records with NODATA RCODE. +These queries would otherwise have been sent to the internet, but are now +answered using cached data. +.TP +.I num.query.aggressive.NXDOMAIN +The number of queries answered using cached NSEC records with NXDOMAIN RCODE. +These queries would otherwise have been sent to the internet, but are now +answered using cached data. .SH "FILES" .TP .I @ub_conf_file@ diff --git a/external/unbound/doc/unbound.8.in b/external/unbound/doc/unbound.8.in index 3601443..cea3aef 100644 --- a/external/unbound/doc/unbound.8.in +++ b/external/unbound/doc/unbound.8.in @@ -14,6 +14,7 @@ .B unbound .RB [ \-h ] .RB [ \-d ] +.RB [ \-p ] .RB [ \-v ] .RB [ \-c .IR cfgfile ] @@ -67,6 +68,11 @@ the thread\-spawn time, so that most config and setup errors appear on stderr. If given twice or more, logging does not switch to the log file or to syslog, but the log messages are printed to stderr all the time. .TP +.B \-p +Don't use a pidfile. This argument should only be used by supervision +systems which can ensure that only one instance of unbound will run +concurrently. +.TP .B \-v Increase verbosity. If given multiple times, more information is logged. This is in addition to the verbosity (if any) from the config file. diff --git a/external/unbound/doc/unbound.conf.5.in b/external/unbound/doc/unbound.conf.5.in index 7029144..c0ef1ab 100644 --- a/external/unbound/doc/unbound.conf.5.in +++ b/external/unbound/doc/unbound.conf.5.in @@ -16,13 +16,14 @@ .B unbound.conf is used to configure \fIunbound\fR(8). -The file format has attributes and values. Some attributes have attributes inside them. +The file format has attributes and values. Some attributes have attributes +inside them. The notation is: attribute: value. .P Comments start with # and last to the end of line. Empty lines are ignored as is whitespace at the beginning of a line. .P -The utility +The utility \fIunbound\-checkconf\fR(8) can be used to check unbound.conf prior to usage. .SH "EXAMPLE" @@ -30,7 +31,7 @@ An example config file is shown below. Copy this to /etc/unbound/unbound.conf and start the server with: .P .nf - $ unbound \-c /etc/unbound/unbound.conf + $ unbound \-c /etc/unbound/unbound.conf .fi .P Most settings are the defaults. Stop the server with: @@ -62,8 +63,8 @@ server: access\-control: 2001:DB8::/64 allow .fi .SH "FILE FORMAT" -There must be whitespace between keywords. Attribute keywords end with a colon ':'. An attribute -is followed by its containing attributes, or a value. +There must be whitespace between keywords. Attribute keywords end with a colon ':'. +An attribute is followed by its containing attributes, or a value. .P Files can be included using the .B include: @@ -71,25 +72,26 @@ directive. It can appear anywhere, it accepts a single file name as argument. Processing continues as if the text from the included file was copied into the config file at that point. If also using chroot, using full path names for the included files works, relative pathnames for the included names work -if the directory where the daemon is started equals its chroot/working -directory. Wildcards can be used to include multiple files, see \fIglob\fR(7). +if the directory where the daemon is started equals its chroot/working +directory or is specified before the include statement with directory: dir. +Wildcards can be used to include multiple files, see \fIglob\fR(7). .SS "Server Options" These options are part of the .B server: clause. .TP .B verbosity: \fI -The verbosity number, level 0 means no verbosity, only errors. Level 1 +The verbosity number, level 0 means no verbosity, only errors. Level 1 gives operational information. Level 2 gives detailed operational -information. Level 3 gives query level information, output per query. -Level 4 gives algorithm level information. Level 5 logs client -identification for cache misses. Default is level 1. +information. Level 3 gives query level information, output per query. +Level 4 gives algorithm level information. Level 5 logs client +identification for cache misses. Default is level 1. The verbosity can also be increased from the commandline, see \fIunbound\fR(8). .TP .B statistics\-interval: \fI The number of seconds between printing statistics to the log for every thread. Disable with value 0 or "". Default is disabled. The histogram statistics -are only printed if replies were sent during the statistics interval, +are only printed if replies were sent during the statistics interval, requestlist statistics are printed for every interval (but can be 0). This is because the median calculation requires data to be present. .TP @@ -98,7 +100,7 @@ If enabled, statistics are cumulative since starting unbound, without clearing the statistics counters after logging the statistics. Default is no. .TP .B extended\-statistics: \fI -If enabled, extended statistics are printed from \fIunbound\-control\fR(8). +If enabled, extended statistics are printed from \fIunbound\-control\fR(8). Default is off, because keeping track of more statistics takes time. The counters are listed in \fIunbound\-control\fR(8). .TP @@ -111,7 +113,7 @@ The port number, default 53, on which the server responds to queries. .B interface: \fI Interface to use to connect to the network. This interface is listened to for queries from clients, and answers to clients are given from it. -Can be given multiple times to work on several interfaces. If none are +Can be given multiple times to work on several interfaces. If none are given the default is to listen to localhost. The interfaces are not changed on a reload (kill \-HUP) but only on restart. A port number can be specified with @port (without spaces between @@ -122,42 +124,58 @@ interface and port number), if not specified the default port (from Same as interface: (for easy of compatibility with nsd.conf). .TP .B interface\-automatic: \fI -Detect source interface on UDP queries and copy them to replies. This +Detect source interface on UDP queries and copy them to replies. This feature is experimental, and needs support in your OS for particular socket options. Default value is no. .TP -.B outgoing\-interface: \fI +.B outgoing\-interface: \fI Interface to use to connect to the network. This interface is used to send -queries to authoritative servers and receive their replies. Can be given -multiple times to work on several interfaces. If none are given the -default (all) is used. You can specify the same interfaces in +queries to authoritative servers and receive their replies. Can be given +multiple times to work on several interfaces. If none are given the +default (all) is used. You can specify the same interfaces in .B interface: and .B outgoing\-interface: -lines, the interfaces are then used for both purposes. Outgoing queries are +lines, the interfaces are then used for both purposes. Outgoing queries are sent via a random outgoing interface to counter spoofing. +.IP +If an IPv6 netblock is specified instead of an individual IPv6 address, +outgoing UDP queries will use a randomised source address taken from the +netblock to counter spoofing. Requires the IPv6 netblock to be routed to the +host running unbound, and requires OS support for unprivileged non-local binds +(currently only supported on Linux). Several netblocks may be specified with +multiple +.B outgoing\-interface: +options, but do not specify both an individual IPv6 address and an IPv6 +netblock, or the randomisation will be compromised. Consider combining with +.B prefer\-ip6: yes +to increase the likelihood of IPv6 nameservers being selected for queries. +On Linux you need these two commands to be able to use the freebind socket +option to receive traffic for the ip6 netblock: +ip \-6 addr add mynetblock/64 dev lo && +ip \-6 route add local mynetblock/64 dev lo .TP .B outgoing\-range: \fI -Number of ports to open. This number of file descriptors can be opened per -thread. Must be at least 1. Default depends on compile options. Larger +Number of ports to open. This number of file descriptors can be opened per +thread. Must be at least 1. Default depends on compile options. Larger numbers need extra resources from the operating system. For performance a -a very large value is best, use libevent to make this possible. +very large value is best, use libevent to make this possible. .TP .B outgoing\-port\-permit: \fI Permit unbound to open this port or range of ports for use to send queries. A larger number of permitted outgoing ports increases resilience against -spoofing attempts. Make sure these ports are not needed by other daemons. +spoofing attempts. Make sure these ports are not needed by other daemons. By default only ports above 1024 that have not been assigned by IANA are used. Give a port number or a range of the form "low\-high", without spaces. .IP -The \fBoutgoing\-port\-permit\fR and \fBoutgoing\-port\-avoid\fR statements -are processed in the line order of the config file, adding the permitted ports -and subtracting the avoided ports from the set of allowed ports. The -processing starts with the non IANA allocated ports above 1024 in the set +The \fBoutgoing\-port\-permit\fR and \fBoutgoing\-port\-avoid\fR statements +are processed in the line order of the config file, adding the permitted ports +and subtracting the avoided ports from the set of allowed ports. The +processing starts with the non IANA allocated ports above 1024 in the set of allowed ports. .TP .B outgoing\-port\-avoid: \fI -Do not permit unbound to open this port or range of ports for use to send +Do not permit unbound to open this port or range of ports for use to send queries. Use this to make sure unbound does not grab a port that another daemon needs. The port is avoided on all outgoing interfaces, both IP4 and IP6. By default only ports above 1024 that have not been assigned by IANA are used. @@ -179,7 +197,7 @@ This is the value put into datagrams over UDP towards peers. The actual buffer size is determined by msg\-buffer\-size (both for TCP and UDP). Do not set higher than that value. Default is 4096 which is RFC recommended. If you have fragmentation reassembly problems, usually seen as timeouts, -then a value of 1480 can fix it. Setting to 512 bypasses even the most +then a value of 1472 can fix it. Setting to 512 bypasses even the most stringent path MTU problems, but is seen as extreme, since the amount of TCP fallback generated is excessive (probably also for this resolver, consider tuning the outgoing tcp number). @@ -187,13 +205,13 @@ consider tuning the outgoing tcp number). .B max\-udp\-size: \fI Maximum UDP response size (not applied to TCP response). 65536 disables the udp response size maximum, and uses the choice from the client, always. -Suggested values are 512 to 4096. Default is 4096. +Suggested values are 512 to 4096. Default is 4096. .TP .B msg\-buffer\-size: \fI Number of bytes size of the message buffers. Default is 65552 bytes, enough for 64 Kb packets, the maximum DNS message size. No message larger than this can be sent or received. Can be reduced to use less memory, but some requests -for DNS data, such as for huge resource records, will result in a SERVFAIL +for DNS data, such as for huge resource records, will result in a SERVFAIL reply to the client. .TP .B msg\-cache\-size: \fI @@ -203,7 +221,7 @@ or gigabytes (1024*1024 bytes in a megabyte). .TP .B msg\-cache\-slabs: \fI Number of slabs in the message cache. Slabs reduce lock contention by threads. -Must be set to a power of 2. Setting (close) to the number of cpus is a +Must be set to a power of 2. Setting (close) to the number of cpus is a reasonable guess. .TP .B num\-queries\-per\-thread: \fI @@ -215,12 +233,12 @@ the existing queries. Default depends on compile options, 512 or 1024. .TP .B jostle\-timeout: \fI Timeout used when the server is very busy. Set to a value that usually -results in one roundtrip to the authority servers. If too many queries +results in one roundtrip to the authority servers. If too many queries arrive, then 50% of the queries are allowed to run to completion, and -the other 50% are replaced with the new incoming query if they have already -spent more than their allowed time. This protects against denial of +the other 50% are replaced with the new incoming query if they have already +spent more than their allowed time. This protects against denial of service by slow queries or high query rates. Default 200 milliseconds. -The effect is that the qps for long-lasting queries is about +The effect is that the qps for long-lasting queries is about (numqueriesperthread / 2) / (average time for such long queries) qps. The qps for short queries can be about (numqueriesperthread / 2) / (jostletimeout in whole seconds) qps per thread, about (1024/2)*5 = 2560 @@ -270,12 +288,20 @@ silently (unless verbosity 3) without the option. .B ip\-transparent: \fI If yes, then use IP_TRANSPARENT socket option on sockets where unbound is listening for incoming traffic. Default no. Allows you to bind to -non\-local interfaces. For example for non\-existant IP addresses that +non\-local interfaces. For example for non\-existent IP addresses that are going to exist later on, with host failover configuration. This is a lot like interface\-automatic, but that one services all interfaces and with this option you can select which (future) interfaces unbound provides service on. This option needs unbound to be started with root -permissions on some systems. +permissions on some systems. The option uses IP_BINDANY on FreeBSD systems +and SO_BINDANY on OpenBSD systems. +.TP +.B ip\-freebind: \fI +If yes, then use IP_FREEBIND socket option on sockets where unbound +is listening to incoming traffic. Default no. Allows you to bind to +IP addresses that are nonlocal or do not exist, like when the network +interface or IP address is down. Exists only on Linux, where the similar +ip\-transparent option is also available. .TP .B rrset\-cache\-size: \fI Number of bytes size of the RRset cache. Default is 4 megabytes. @@ -284,12 +310,12 @@ or gigabytes (1024*1024 bytes in a megabyte). .TP .B rrset\-cache\-slabs: \fI Number of slabs in the RRset cache. Slabs reduce lock contention by threads. -Must be set to a power of 2. +Must be set to a power of 2. .TP .B cache\-max\-ttl: \fI -Time to live maximum for RRsets and messages in the cache. Default is -86400 seconds (1 day). If the maximum kicks in, responses to clients -still get decrementing TTLs based on the original (larger) values. +Time to live maximum for RRsets and messages in the cache. Default is +86400 seconds (1 day). If the maximum kicks in, responses to clients +still get decrementing TTLs based on the original (larger) values. When the internal TTL expires, the cache item has expired. Can be set lower to force the resolver to query for data often, and not trust (very large) TTL values. @@ -299,20 +325,21 @@ Time to live minimum for RRsets and messages in the cache. Default is 0. If the minimum kicks in, the data is cached for longer than the domain owner intended, and thus less queries are made to look up the data. Zero makes sure the data in the cache is as the domain owner intended, -higher values, especially more than an hour or so, can lead to trouble as +higher values, especially more than an hour or so, can lead to trouble as the data in the cache does not match up with the actual data any more. .TP .B cache\-max\-negative\-ttl: \fI Time to live maximum for negative responses, these have a SOA in the authority section that is limited in time. Default is 3600. +This applies to nxdomain and nodata answers. .TP .B infra\-host\-ttl: \fI -Time to live for entries in the host cache. The host cache contains +Time to live for entries in the host cache. The host cache contains roundtrip timing, lameness and EDNS support information. Default is 900. .TP .B infra\-cache\-slabs: \fI -Number of slabs in the infrastructure cache. Slabs reduce lock contention -by threads. Must be set to a power of 2. +Number of slabs in the infrastructure cache. Slabs reduce lock contention +by threads. Must be set to a power of 2. .TP .B infra\-cache\-numhosts: \fI Number of hosts for which information is cached. Default is 10000. @@ -322,6 +349,10 @@ Lower limit for dynamic retransmit timeout calculation in infrastructure cache. Default is 50 milliseconds. Increase this value if using forwarders needing more time to do recursive name resolution. .TP +.B define\-tag: \fI<"list of tags"> +Define the tags that can be used with local\-zone and access\-control. +Enclose the list between quotes ("") and put spaces between tags. +.TP .B do\-ip4: \fI Enable or disable whether ip4 queries are answered or issued. Default is yes. .TP @@ -332,75 +363,151 @@ IPv6 to the internet nameservers. With this option you can disable the ipv6 transport for sending DNS traffic, it does not impact the contents of the DNS traffic, which may have ip4 and ip6 addresses in it. .TP +.B prefer\-ip6: \fI +If enabled, prefer IPv6 transport for sending DNS queries to internet +nameservers. Default is no. +.TP .B do\-udp: \fI Enable or disable whether UDP queries are answered or issued. Default is yes. .TP .B do\-tcp: \fI Enable or disable whether TCP queries are answered or issued. Default is yes. .TP +.B tcp\-mss: \fI +Maximum segment size (MSS) of TCP socket on which the server responds +to queries. Value lower than common MSS on Ethernet +(1220 for example) will address path MTU problem. +Note that not all platform supports socket option to set MSS (TCP_MAXSEG). +Default is system default MSS determined by interface MTU and +negotiation between server and client. +.TP +.B outgoing\-tcp\-mss: \fI +Maximum segment size (MSS) of TCP socket for outgoing queries +(from Unbound to other servers). Value lower than +common MSS on Ethernet (1220 for example) will address path MTU problem. +Note that not all platform supports socket option to set MSS (TCP_MAXSEG). +Default is system default MSS determined by interface MTU and +negotiation between Unbound and other servers. +.TP .B tcp\-upstream: \fI Enable or disable whether the upstream queries use TCP only for transport. Default is no. Useful in tunneling scenarios. .TP +.B udp\-upstream\-without\-downstream: \fI +Enable udp upstream even if do-udp is no. Default is no, and this does not +change anything. Useful for TLS service providers, that want no udp downstream +but use udp to fetch data upstream. +.TP +.B tls\-upstream: \fI +Enabled or disable whether the upstream queries use TLS only for transport. +Default is no. Useful in tunneling scenarios. The TLS contains plain DNS in +TCP wireformat. The other server must support this (see +\fBtls\-service\-key\fR). +If you enable this, also configure a tls\-cert\-bundle or use tls\-win\cert to +load CA certs, otherwise the connections cannot be authenticated. +.TP .B ssl\-upstream: \fI -Enabled or disable whether the upstream queries use SSL only for transport. -Default is no. Useful in tunneling scenarios. The SSL contains plain DNS in -TCP wireformat. The other server must support this (see \fBssl\-service\-key\fR). -.TP -.B ssl\-service-key: \fI -If enabled, the server provider SSL service on its TCP sockets. The clients -have to use ssl\-upstream: yes. The file is the private key for the TLS -session. The public certificate is in the ssl\-service\-pem file. Default +Alternate syntax for \fBtls\-upstream\fR. If both are present in the config +file the last is used. +.TP +.B tls\-service\-key: \fI +If enabled, the server provider TLS service on its TCP sockets. The clients +have to use tls\-upstream: yes. The file is the private key for the TLS +session. The public certificate is in the tls\-service\-pem file. Default is "", turned off. Requires a restart (a reload is not enough) if changed, because the private key is read while root permissions are held and before chroot (if any). Normal DNS TCP service is not provided and gives errors, this service is best run with a different \fBport:\fR config or \fI@port\fR suffixes in the \fBinterface\fR config. .TP -.B ssl\-service\-pem: \fI -The public key certificate pem file for the ssl service. Default is "", +.B ssl\-service\-key: \fI +Alternate syntax for \fBtls\-service\-key\fR. +.TP +.B tls\-service\-pem: \fI +The public key certificate pem file for the tls service. Default is "", turned off. .TP +.B ssl\-service\-pem: \fI +Alternate syntax for \fBtls\-service\-pem\fR. +.TP +.B tls\-port: \fI +The port number on which to provide TCP TLS service, default 853, only +interfaces configured with that port number as @number get the TLS service. +.TP .B ssl\-port: \fI -The port number on which to provide TCP SSL service, default 853, only -interfaces configured with that port number as @number get the SSL service. +Alternate syntax for \fBtls\-port\fR. +.TP +.B tls\-cert\-bundle: \fI +If null or "", no file is used. Set it to the certificate bundle file, +for example "/etc/pki/tls/certs/ca\-bundle.crt". These certificates are used +for authenticating connections made to outside peers. For example auth\-zone +urls, and also DNS over TLS connections. +.TP +.B ssl\-cert\-bundle: \fI +Alternate syntax for \fBtls\-cert\-bundle\fR. +.TP +.B tls\-win\-cert: \fI +Add the system certificates to the cert bundle certificates for authentication. +If no cert bundle, it uses only these certificates. Default is no. +On windows this option uses the certificates from the cert store. Use +the tls\-cert\-bundle option on other systems. +.TP +.B tls\-additional\-port: \fI +List portnumbers as tls\-additional\-port, and when interfaces are defined, +eg. with the @port suffix, as this port number, they provide dns over TLS +service. Can list multiple, each on a new statement. +.TP +.B use\-systemd: \fI +Enable or disable systemd socket activation. +Default is no. .TP .B do\-daemonize: \fI Enable or disable whether the unbound server forks into the background as -a daemon. Default is yes. +a daemon. Set the value to \fIno\fR when unbound runs as systemd service. +Default is yes. .TP .B access\-control: \fI -The netblock is given as an IP4 or IP6 address with /size appended for a -classless network block. The action can be \fIdeny\fR, \fIrefuse\fR, -\fIallow\fR, \fIallow_snoop\fR, \fIdeny_non_local\fR or \fIrefuse_non_local\fR. +The netblock is given as an IP4 or IP6 address with /size appended for a +classless network block. The action can be \fIdeny\fR, \fIrefuse\fR, +\fIallow\fR, \fIallow_setrd\fR, \fIallow_snoop\fR, \fIdeny_non_local\fR or +\fIrefuse_non_local\fR. The most specific netblock match is used, if none match \fIdeny\fR is used. .IP The action \fIdeny\fR stops queries from hosts from that netblock. .IP -The action \fIrefuse\fR stops queries too, but sends a DNS rcode REFUSED +The action \fIrefuse\fR stops queries too, but sends a DNS rcode REFUSED error message back. .IP -The action \fIallow\fR gives access to clients from that netblock. -It gives only access for recursion clients (which is +The action \fIallow\fR gives access to clients from that netblock. +It gives only access for recursion clients (which is what almost all clients need). Nonrecursive queries are refused. .IP -The \fIallow\fR action does allow nonrecursive queries to access the +The \fIallow\fR action does allow nonrecursive queries to access the local\-data that is configured. The reason is that this does not involve -the unbound server recursive lookup algorithm, and static data is served -in the reply. This supports normal operations where nonrecursive queries -are made for the authoritative data. For nonrecursive queries any replies +the unbound server recursive lookup algorithm, and static data is served +in the reply. This supports normal operations where nonrecursive queries +are made for the authoritative data. For nonrecursive queries any replies from the dynamic cache are refused. .IP -The action \fIallow_snoop\fR gives nonrecursive access too. This give -both recursive and non recursive access. The name \fIallow_snoop\fR refers +The \fIallow_setrd\fR action ignores the recursion desired (RD) bit and +treats all requests as if the recursion desired bit is set. Note that this +behavior violates RFC 1034 which states that a name server should never perform +recursive service unless asked via the RD bit since this interferes with +trouble shooting of name servers and their databases. This prohibited behavior +may be useful if another DNS server must forward requests for specific +zones to a resolver DNS server, but only supports stub domains and +sends queries to the resolver DNS server with the RD bit cleared. +.IP +The action \fIallow_snoop\fR gives nonrecursive access too. This give +both recursive and non recursive access. The name \fIallow_snoop\fR refers to cache snooping, a technique to use nonrecursive queries to examine -the cache contents (for malicious acts). However, nonrecursive queries can -also be a valuable debugging tool (when you want to examine the cache +the cache contents (for malicious acts). However, nonrecursive queries can +also be a valuable debugging tool (when you want to examine the cache contents). In that case use \fIallow_snoop\fR for your administration host. .IP By default only localhost is \fIallow\fRed, the rest is \fIrefuse\fRd. -The default is \fIrefuse\fRd, because that is protocol\-friendly. The DNS -protocol is not designed to handle dropped packets due to policy, and +The default is \fIrefuse\fRd, because that is protocol\-friendly. The DNS +protocol is not designed to handle dropped packets due to policy, and dropping may result in (possibly excessive) retried queries. .IP The deny_non_local and refuse_non_local settings are for hosts that are @@ -409,11 +516,31 @@ allowed full recursion but only the static data. With deny_non_local, messages that are disallowed are dropped, with refuse_non_local they receive error code REFUSED. .TP +.B access\-control\-tag: \fI <"list of tags"> +Assign tags to access-control elements. Clients using this access control +element use localzones that are tagged with one of these tags. Tags must be +defined in \fIdefine\-tags\fR. Enclose list of tags in quotes ("") and put +spaces between tags. If access\-control\-tag is configured for a netblock that +does not have an access\-control, an access\-control element with action +\fIallow\fR is configured for this netblock. +.TP +.B access\-control\-tag\-action: \fI +Set action for particular tag for given access control element. If you have +multiple tag values, the tag used to lookup the action is the first tag match +between access\-control\-tag and local\-zone\-tag where "first" comes from the +order of the define-tag values. +.TP +.B access\-control\-tag\-data: \fI <"resource record string"> +Set redirect data for particular tag for given access control element. +.TP +.B access\-control\-view: \fI +Set view for given access control element. +.TP .B chroot: \fI If chroot is enabled, you should pass the configfile (from the commandline) as a full path from the original root. After the -chroot has been performed the now defunct portion of the config -file path is removed to be able to reread the config after a reload. +chroot has been performed the now defunct portion of the config +file path is removed to be able to reread the config after a reload. .IP All other file paths (working dir, logfile, roothints, and key files) can be specified in several ways: @@ -424,46 +551,55 @@ In the last case the path is adjusted to remove the unused portion. .IP The pidfile can be either a relative path to the working directory, or an absolute path relative to the original root. It is written just prior -to chroot and dropping permissions. This allows the pidfile to be +to chroot and dropping permissions. This allows the pidfile to be /var/run/unbound.pid and the chroot to be /var/unbound, for example. .IP Additionally, unbound may need to access /dev/random (for entropy) from inside the chroot. .IP -If given a chroot is done to the given directory. The default is +If given a chroot is done to the given directory. The default is "@UNBOUND_CHROOT_DIR@". If you give "" no chroot is performed. .TP .B username: \fI If given, after binding the port the user privileges are dropped. Default is -"@UNBOUND_USERNAME@". If you give username: "" no user change is performed. +"@UNBOUND_USERNAME@". If you give username: "" no user change is performed. .IP If this user is not capable of binding the port, reloads (by signal HUP) will still retain the opened ports. -If you change the port number in the config file, and that new port number +If you change the port number in the config file, and that new port number requires privileges, then a reload will fail; a restart is needed. .TP .B directory: \fI Sets the working directory for the program. Default is "@UNBOUND_RUN_DIR@". On Windows the string "%EXECUTABLE%" tries to change to the directory that unbound.exe resides in. +If you give a server: directory: dir before include: file statements +then those includes can be relative to the working directory. .TP .B logfile: \fI If "" is given, logging goes to stderr, or nowhere once daemonized. -The logfile is appended to, in the following format: +The logfile is appended to, in the following format: .nf -[seconds since 1970] unbound[pid:tid]: type: message. +[seconds since 1970] unbound[pid:tid]: type: message. .fi If this option is given, the use\-syslog is option is set to "no". -The logfile is reopened (for append) when the config file is reread, on +The logfile is reopened (for append) when the config file is reread, on SIGHUP. .TP .B use\-syslog: \fI -Sets unbound to send log messages to the syslogd, using -\fIsyslog\fR(3). +Sets unbound to send log messages to the syslogd, using +\fIsyslog\fR(3). The log facility LOG_DAEMON is used, with identity "unbound". The logfile setting is overridden when use\-syslog is turned on. The default is to log to syslog. .TP +.B log\-identity: \fI +If "" is given (default), then the name of the executable, usually "unbound" +is used to report to the log. Enter a string to override it +with that, which is useful on systems that run more than one instance of +unbound, with different configurations, so that the logs can be easily +distinguished against. +.TP .B log\-time\-ascii: \fI Sets logfile lines to use a timestamp in UTC ascii. Default is no, which prints the seconds since 1970 in brackets. No effect if using syslog, in @@ -475,21 +611,28 @@ name, type and class. Default is no. Note that it takes time to print these lines which makes the server (significantly) slower. Odd (nonprintable) characters in names are printed as '?'. .TP +.B log\-replies: \fI +Prints one line per reply to the log, with the log timestamp and IP address, +name, type, class, return code, time to resolve, from cache and response size. +Default is no. Note that it takes time to print these +lines which makes the server (significantly) slower. Odd (nonprintable) +characters in names are printed as '?'. +.TP .B pidfile: \fI -The process id is written to the file. Default is "@UNBOUND_PIDFILE@". +The process id is written to the file. Default is "@UNBOUND_PIDFILE@". So, .nf -kill \-HUP `cat @UNBOUND_PIDFILE@` +kill \-HUP `cat @UNBOUND_PIDFILE@` .fi triggers a reload, .nf -kill \-TERM `cat @UNBOUND_PIDFILE@` +kill \-TERM `cat @UNBOUND_PIDFILE@` .fi gracefully terminates. .TP .B root\-hints: \fI Read the root hints from this file. Default is nothing, using builtin hints -for the IN class. The file has the format of zone files, with root +for the IN class. The file has the format of zone files, with root nameserver names and addresses only. The default may become outdated, when servers change, therefore it is good practice to use a root\-hints file. .TP @@ -507,25 +650,28 @@ If enabled version.server and version.bind queries are refused. Set the version to report. If set to "", the default, then the package version is returned. .TP +.B hide\-trustanchor: \fI +If enabled trustanchor.unbound queries are refused. +.TP .B target\-fetch\-policy: \fI<"list of numbers"> Set the target fetch policy used by unbound to determine if it should fetch nameserver target addresses opportunistically. The policy is described per -dependency depth. +dependency depth. .IP The number of values determines the maximum dependency depth -that unbound will pursue in answering a query. +that unbound will pursue in answering a query. A value of \-1 means to fetch all targets opportunistically for that dependency depth. A value of 0 means to fetch on demand only. A positive value fetches -that many targets opportunistically. +that many targets opportunistically. .IP Enclose the list between quotes ("") and put spaces between numbers. The default is "3 2 1 0 0". Setting all zeroes, "0 0 0 0 0" gives behaviour -closer to that of BIND 9, while setting "\-1 \-1 \-1 \-1 \-1" gives behaviour +closer to that of BIND 9, while setting "\-1 \-1 \-1 \-1 \-1" gives behaviour rumoured to be closer to that of BIND 8. .TP .B harden\-short\-bufsize: \fI Very small EDNS buffer sizes from queries are ignored. Default is off, since -it is legal protocol wise to send these, and unbound tries to give very +it is legal protocol wise to send these, and unbound tries to give very small answers to these queries, where possible. .TP .B harden\-large\-queries: \fI @@ -539,29 +685,31 @@ Will trust glue only if it is within the servers authority. Default is on. .B harden\-dnssec\-stripped: \fI Require DNSSEC data for trust\-anchored zones, if such data is absent, the zone becomes bogus. If turned off, and no DNSSEC data is received -(or the DNSKEY data fails to validate), then the zone is made insecure, -this behaves like there is no trust anchor. You could turn this off if -you are sometimes behind an intrusive firewall (of some sort) that -removes DNSSEC data from packets, or a zone changes from signed to -unsigned to badly signed often. If turned off you run the risk of a +(or the DNSKEY data fails to validate), then the zone is made insecure, +this behaves like there is no trust anchor. You could turn this off if +you are sometimes behind an intrusive firewall (of some sort) that +removes DNSSEC data from packets, or a zone changes from signed to +unsigned to badly signed often. If turned off you run the risk of a downgrade attack that disables security for a zone. Default is on. .TP .B harden\-below\-nxdomain: \fI -From draft\-vixie\-dnsext\-resimprove, returns nxdomain to queries for a name +From RFC 8020 (with title "NXDOMAIN: There Really Is Nothing Underneath"), +returns nxdomain to queries for a name below another name that is already known to be nxdomain. DNSSEC mandates noerror for empty nonterminals, hence this is possible. Very old software might return nxdomain for empty nonterminals (that usually happen for reverse IP address lookups), and thus may be incompatible with this. To try to avoid this only DNSSEC-secure nxdomains are used, because the old software does not have DNSSEC. Default is off. +The nxdomain must be secure, this means nsec3 with optout is insufficient. .TP .B harden\-referral\-path: \fI Harden the referral path by performing additional queries for infrastructure data. Validates the replies if trust anchors are configured and the zones are signed. This enforces DNSSEC validation on nameserver -NS sets and the nameserver addresses that are encountered on the referral +NS sets and the nameserver addresses that are encountered on the referral path to the answer. -Default off, because it burdens the authority servers, and it is +Default no, because it burdens the authority servers, and it is not RFC standard, and could lead to performance problems because of the extra query load that is generated. Experimental option. If you enable it consider adding more numbers after the target\-fetch\-policy @@ -576,9 +724,9 @@ this option off avoids that validation failure. .TP .B use\-caps\-for\-id: \fI Use 0x20\-encoded random bits in the query to foil spoof attempts. -This perturbs the lowercase and uppercase of query names sent to -authority servers and checks if the reply still has the correct casing. -Disabled by default. +This perturbs the lowercase and uppercase of query names sent to +authority servers and checks if the reply still has the correct casing. +Disabled by default. This feature is an experimental implementation of draft dns\-0x20. .TP .B caps\-whitelist: \fI @@ -589,9 +737,22 @@ Can be given multiple times, for different domains. .TP .B qname\-minimisation: \fI Send minimum amount of information to upstream servers to enhance privacy. -Only sent minimum required labels of the QNAME and set QTYPE to NS when -possible. Best effort approach, full QNAME and original QTYPE will be sent when -upstream replies with a RCODE other than NOERROR. Default is off. +Only sent minimum required labels of the QNAME and set QTYPE to A when +possible. Best effort approach; full QNAME and original QTYPE will be sent when +upstream replies with a RCODE other than NOERROR, except when receiving +NXDOMAIN from a DNSSEC signed zone. Default is yes. +.TP +.B qname\-minimisation\-strict: \fI +QNAME minimisation in strict mode. Do not fall-back to sending full QNAME to +potentially broken nameservers. A lot of domains will not be resolvable when +this option in enabled. Only use if you know what you are doing. +This option only has effect when qname-minimisation is enabled. Default is off. +.TP +.B aggressive\-nsec: \fI +Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN +and other denials, using information from previous NXDOMAINs answers. +Default is no. It helps to reduce the query rate towards targets that get +a very high nonexistent name lookup rate. .TP .B private\-address: \fI Give IPv4 of IPv6 addresses or classless subnets. These are addresses @@ -614,7 +775,7 @@ stops IPv4-mapped IPv6 addresses from bypassing the filter. .TP .B private\-domain: \fI Allow this domain, and all its subdomains to contain private addresses. -Give multiple times to allow multiple domain names to contain private +Give multiple times to allow multiple domain names to contain private addresses. Default is none. .TP .B unwanted\-reply\-threshold: \fI @@ -625,7 +786,7 @@ message caches, hopefully flushing away any poison. A value of 10 million is suggested. Default is 0 (turned off). .TP .B do\-not\-query\-address: \fI -Do not query the given IP address. Can be IP4 or IP6. Append /num to +Do not query the given IP address. Can be IP4 or IP6. Append /num to indicate a classless delegation netblock, for example like 10.2.3.4/24 or 2001::11/64. .TP @@ -657,6 +818,13 @@ This may cause a slight speedup. The default is no, because the DNS protocol RFCs mandate these sections, and the additional content could be of use and save roundtrips for clients. .TP +.B disable-dnssec-lame-check: \fI +If true, disables the DNSSEC lameness check in the iterator. This check +sees if RRSIGs are present in the answer, when dnssec is expected, +and retries another authority if RRSIGs are unexpectedly missing. +The validator will insist in RRSIGs for DNSSEC signed domains regardless +of this setting, if a trust anchor is loaded. +.TP .B module\-config: \fI<"module names"> Module configuration, a list of module names separated by spaces, surround the string with quotes (""). The modules can be validator, iterator. @@ -675,24 +843,33 @@ File with trust anchor for one zone, which is tracked with RFC5011 probes. The probes are several times per month, thus the machine must be online frequently. The initial file can be one with contents as described in \fBtrust\-anchor\-file\fR. The file is written to when the anchor is updated, -so the unbound user must have write permission. +so the unbound user must have write permission. Write permission to the file, +but also to the directory it is in (to create a temporary file, which is +necessary to deal with filesystem full events), it must also be inside the +chroot (if that is used). .TP .B trust\-anchor: \fI<"Resource Record"> A DS or DNSKEY RR for a key to use for validation. Multiple entries can be given to specify multiple trusted keys, in addition to the trust\-anchor\-files. The resource record is entered in the same format as 'dig' or 'drill' prints them, the same format as in the zone file. Has to be on a single line, with -"" around it. A TTL can be specified for ease of cut and paste, but is ignored. +"" around it. A TTL can be specified for ease of cut and paste, but is ignored. A class can be specified, but class IN is default. .TP .B trusted\-keys\-file: \fI File with trusted keys for validation. Specify more than one file with several entries, one file per entry. Like \fBtrust\-anchor\-file\fR -but has a different file format. Format is BIND\-9 style format, +but has a different file format. Format is BIND\-9 style format, the trusted\-keys { name flag proto algo "key"; }; clauses are read. It is possible to use wildcards with this statement, the wildcard is expanded on start and on reload. .TP +.B trust\-anchor\-signaling: \fI +Send RFC8145 key tag query after trust anchor priming. Default is on. +.TP +.B root\-key\-sentinel: \fI +Root key trust anchor sentinel. Default is on. +.TP .B dlv\-anchor\-file: \fI This option was used during early days DNSSEC deployment when no parent-side DS record registrations were easily available. Nowadays, it is best to have @@ -700,9 +877,9 @@ DS records registered with the parent zone (many top level zones are signed). File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and DNSKEY entries can be used in the file, in the same format as for \fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more -would be slow. The DLV configured is used as a root trusted DLV, this -means that it is a lookaside for the root. Default is "", or no dlv anchor file. -DLV is going to be decommissioned. Please do not use it any more. +would be slow. The DLV configured is used as a root trusted DLV, this +means that it is a lookaside for the root. Default is "", or no dlv anchor +file. DLV is going to be decommissioned. Please do not use it any more. .TP .B dlv\-anchor: \fI<"Resource Record"> Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline. @@ -714,17 +891,17 @@ the domain name. So a trust anchor above the domain name can not make the domain secure with a DS record, such a DS record is then ignored. Also keys from DLV are ignored for the domain. Can be given multiple times to specify multiple domains that are treated as if unsigned. If you set -trust anchors for the domain they override this setting (and the domain +trust anchors for the domain they override this setting (and the domain is secured). .IP This can be useful if you want to make sure a trust anchor for external -lookups does not affect an (unsigned) internal domain. A DS record +lookups does not affect an (unsigned) internal domain. A DS record externally can create validation failures for that internal domain. .TP .B val\-override\-date: \fI Default is "" or "0", which disables this debugging feature. If enabled by giving a RRSIG style date, that date is used for verifying RRSIG inception -and expiration dates, instead of the current date. Do not set this unless +and expiration dates, instead of the current date. Do not set this unless you are debugging signature inception and expiration. The value \-1 ignores the date altogether, useful for some special applications. .TP @@ -754,7 +931,7 @@ The time interval prevents repeated revalidation of bogus data. Instruct the validator to remove data from the additional section of secure messages that are not signed properly. Messages that are insecure, bogus, indeterminate or unchecked are not affected. Default is yes. Use this setting -to protect the users that rely on this validator for authentication from +to protect the users that rely on this validator for authentication from potentially bad data in the additional section. .TP .B val\-log\-level: \fI @@ -769,10 +946,10 @@ it was wrong and which server sent the faulty data. .B val\-permissive\-mode: \fI Instruct the validator to mark bogus messages as indeterminate. The security checks are performed, but if the result is bogus (failed security), the -reply is not withheld from the client with SERVFAIL as usual. The client -receives the bogus data. For messages that are found to be secure the AD bit +reply is not withheld from the client with SERVFAIL as usual. The client +receives the bogus data. For messages that are found to be secure the AD bit is set in replies. Also logging is performed as for full validation. -The default value is "no". +The default value is "no". .TP .B ignore\-cd\-flag: \fI Instruct unbound to ignore the CD flag from clients and refuse to @@ -782,12 +959,17 @@ servers that set the CD flag but cannot validate DNSSEC themselves are the clients, and then unbound provides them with DNSSEC protection. The default value is "no". .TP +.B serve\-expired: \fI +If enabled, unbound attempts to serve old responses from cache with a +TTL of 0 in the response without waiting for the actual resolution to finish. +The actual resolution answer ends up in the cache later on. Default is "no". +.TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> List of keysize and iteration count values, separated by spaces, surrounded by quotes. Default is "1024 150 2048 500 4096 2500". This determines the maximum allowed NSEC3 iteration count before a message is simply marked insecure instead of performing the many hashing iterations. The list must -be in ascending order and have at least one entry. If you set it to +be in ascending order and have at least one entry. If you set it to "1024 65535" there is no restriction to NSEC3 iteration values. This table must be kept short; a very long list could cause slower operation. .TP @@ -822,7 +1004,7 @@ or gigabytes (1024*1024 bytes in a megabyte). .TP .B key\-cache\-slabs: \fI Number of slabs in the key cache. Slabs reduce lock contention by threads. -Must be set to a power of 2. Setting (close) to the number of cpus is a +Must be set to a power of 2. Setting (close) to the number of cpus is a reasonable guess. .TP .B neg\-cache\-size: \fI @@ -841,10 +1023,16 @@ as a (DHCP-) DNS network resolver for a group of machines, where such lookups should be filtered (RFC compliance), this also stops potential data leakage about the local network to the upstream DNS servers. .TP +.B insecure\-lan\-zones: \fI +Default is disabled. If enabled, then reverse lookups in private +address space are not validated. This is usually required whenever +\fIunblock\-lan\-zones\fR is used. +.TP .B local\-zone: \fI Configure a local zone. The type determines the answer to give if there is no match from local\-data. The types are deny, refuse, static, transparent, redirect, nodefault, typetransparent, inform, inform_deny, +always_transparent, always_refuse, always_nxdomain, noview, and are explained below. After that the default settings are listed. Use local\-data: to enter data into the local zone. Answers for local zones are authoritative DNS answers. By default the zones are class IN. @@ -867,7 +1055,7 @@ Otherwise, the query is answered with nodata or nxdomain. For a negative answer a SOA is included in the answer if present as local\-data for the zone apex domain. .TP 10 -\h'5'\fItransparent\fR +\h'5'\fItransparent\fR If there is a match from local data, the query is answered. Otherwise if the query has a different name, the query is resolved normally. If the query is for a name given in localdata but no such type of data is @@ -875,104 +1063,147 @@ given in localdata, then a noerror nodata answer is returned. If no local\-zone is given local\-data causes a transparent zone to be created by default. .TP 10 -\h'5'\fItypetransparent\fR +\h'5'\fItypetransparent\fR If there is a match from local data, the query is answered. If the query is for a different name, or for the same name but for a different type, the query is resolved normally. So, similar to transparent but types that are not listed in local data are resolved normally, so if an A record is in the local data that does not cause a nodata reply for AAAA queries. .TP 10 -\h'5'\fIredirect\fR +\h'5'\fIredirect\fR The query is answered from the local data for the zone name. There may be no local data beneath the zone name. This answers queries for the zone, and all subdomains of the zone with the local data for the zone. It can be used to redirect a domain to return a different address record -to the end user, with -local\-zone: "example.com." redirect and +to the end user, with +local\-zone: "example.com." redirect and local\-data: "example.com. A 127.0.0.1" queries for www.example.com and www.foo.example.com are redirected, so that users with web browsers cannot access sites with suffix example.com. .TP 10 -\h'5'\fIinform\fR -The query is answered normally. The client IP address (@portnumber) -is printed to the logfile. The log message is: timestamp, unbound-pid, -info: zonename inform IP@port queryname type class. This option can be -used for normal resolution, but machines looking up infected names are -logged, eg. to run antivirus on them. +\h'5'\fIinform\fR +The query is answered normally, same as transparent. The client IP +address (@portnumber) is printed to the logfile. The log message is: +timestamp, unbound-pid, info: zonename inform IP@port queryname type +class. This option can be used for normal resolution, but machines +looking up infected names are logged, eg. to run antivirus on them. .TP 10 -\h'5'\fIinform_deny\fR +\h'5'\fIinform_deny\fR The query is dropped, like 'deny', and logged, like 'inform'. Ie. find infected machines without answering the queries. .TP 10 -\h'5'\fInodefault\fR +\h'5'\fIalways_transparent\fR +Like transparent, but ignores local data and resolves normally. +.TP 10 +\h'5'\fIalways_refuse\fR +Like refuse, but ignores local data and refuses the query. +.TP 10 +\h'5'\fIalways_nxdomain\fR +Like static, but ignores local data and returns nxdomain for the query. +.TP 10 +\h'5'\fInoview\fR +Breaks out of that view and moves towards the global local zones for answer +to the query. If the view first is no, it'll resolve normally. If view first +is enabled, it'll break perform that step and check the global answers. +For when the view has view specific overrides but some zone has to be +answered from global local zone contents. +.TP 10 +\h'5'\fInodefault\fR Used to turn off default contents for AS112 zones. The other types -also turn off default contents for the zone. The 'nodefault' option -has no other effect than turning off default contents for the +also turn off default contents for the zone. The 'nodefault' option +has no other effect than turning off default contents for the given zone. Use \fInodefault\fR if you use exactly that zone, if you want to use a subzone, use \fItransparent\fR. .P -The default zones are localhost, reverse 127.0.0.1 and ::1, and the AS112 -zones. The AS112 zones are reverse DNS zones for private use and reserved -IP addresses for which the servers on the internet cannot provide correct -answers. They are configured by default to give nxdomain (no reverse -information) answers. The defaults can be turned off by specifying your -own local\-zone of that name, or using the 'nodefault' type. Below is a -list of the default zone contents. +The default zones are localhost, reverse 127.0.0.1 and ::1, the onion, test, +invalid and the AS112 zones. The AS112 zones are reverse DNS zones for +private use and reserved IP addresses for which the servers on the internet +cannot provide correct answers. They are configured by default to give +nxdomain (no reverse information) answers. The defaults can be turned off +by specifying your own local\-zone of that name, or using the 'nodefault' +type. Below is a list of the default zone contents. .TP 10 -\h'5'\fIlocalhost\fR +\h'5'\fIlocalhost\fR The IP4 and IP6 localhost information is given. NS and SOA records are provided for completeness and to satisfy some DNS update tools. Default content: .nf -local\-zone: "localhost." static +local\-zone: "localhost." redirect local\-data: "localhost. 10800 IN NS localhost." -local\-data: "localhost. 10800 IN +local\-data: "localhost. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" local\-data: "localhost. 10800 IN A 127.0.0.1" local\-data: "localhost. 10800 IN AAAA ::1" .fi .TP 10 -\h'5'\fIreverse IPv4 loopback\fR +\h'5'\fIreverse IPv4 loopback\fR Default content: .nf local\-zone: "127.in\-addr.arpa." static local\-data: "127.in\-addr.arpa. 10800 IN NS localhost." -local\-data: "127.in\-addr.arpa. 10800 IN +local\-data: "127.in\-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" -local\-data: "1.0.0.127.in\-addr.arpa. 10800 IN +local\-data: "1.0.0.127.in\-addr.arpa. 10800 IN PTR localhost." .fi .TP 10 -\h'5'\fIreverse IPv6 loopback\fR +\h'5'\fIreverse IPv6 loopback\fR Default content: .nf local\-zone: "1.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.ip6.arpa." static local\-data: "1.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.ip6.arpa. 10800 IN + 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN NS localhost." local\-data: "1.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.ip6.arpa. 10800 IN + 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" local\-data: "1.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.ip6.arpa. 10800 IN + 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN PTR localhost." .fi .TP 10 -\h'5'\fIreverse RFC1918 local use zones\fR -Reverse data for zones 10.in\-addr.arpa, 16.172.in\-addr.arpa to +\h'5'\fIonion (RFC 7686)\fR +Default content: +.nf +local\-zone: "onion." static +local\-data: "onion. 10800 IN NS localhost." +local\-data: "onion. 10800 IN + SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +.fi +.TP 10 +\h'5'\fItest (RFC 2606)\fR +Default content: +.nf +local\-zone: "test." static +local\-data: "test. 10800 IN NS localhost." +local\-data: "test. 10800 IN + SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +.fi +.TP 10 +\h'5'\fIinvalid (RFC 2606)\fR +Default content: +.nf +local\-zone: "invalid." static +local\-data: "invalid. 10800 IN NS localhost." +local\-data: "invalid. 10800 IN + SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +.fi +.TP 10 +\h'5'\fIreverse RFC1918 local use zones\fR +Reverse data for zones 10.in\-addr.arpa, 16.172.in\-addr.arpa to 31.172.in\-addr.arpa, 168.192.in\-addr.arpa. -The \fBlocal\-zone:\fR is set static and as \fBlocal\-data:\fR SOA and NS +The \fBlocal\-zone:\fR is set static and as \fBlocal\-data:\fR SOA and NS records are provided. .TP 10 -\h'5'\fIreverse RFC3330 IP4 this, link\-local, testnet and broadcast\fR -Reverse data for zones 0.in\-addr.arpa, 254.169.in\-addr.arpa, +\h'5'\fIreverse RFC3330 IP4 this, link\-local, testnet and broadcast\fR +Reverse data for zones 0.in\-addr.arpa, 254.169.in\-addr.arpa, 2.0.192.in\-addr.arpa (TEST NET 1), 100.51.198.in\-addr.arpa (TEST NET 2), 113.0.203.in\-addr.arpa (TEST NET 3), 255.255.255.255.in\-addr.arpa. And from 64.100.in\-addr.arpa to 127.100.in\-addr.arpa (Shared Address Space). .TP 10 \h'5'\fIreverse RFC4291 IP6 unspecified\fR -Reverse data for zone +Reverse data for zone .nf 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.ip6.arpa. @@ -997,11 +1228,11 @@ This also works with the other default zones. .TP 5 .B local\-data: \fI"" Configure local data, which is served in reply to queries for it. -The query has to match exactly unless you configure the local\-zone as +The query has to match exactly unless you configure the local\-zone as redirect. If not matched exactly, the local\-zone type determines further processing. If local\-data is configured that is not a subdomain of -a local\-zone, a transparent local\-zone is configured. -For record types such as TXT, use single quotes, as in +a local\-zone, a transparent local\-zone is configured. +For record types such as TXT, use single quotes, as in local\-data: 'example. TXT "text"'. .IP If you need more complicated authoritative data, with referrals, wildcards, @@ -1013,6 +1244,18 @@ Configure local data shorthand for a PTR record with the reversed IPv4 or IPv6 address and the host name. For example "192.0.2.4 www.example.com". TTL can be inserted like this: "2001:DB8::4 7200 www.example.com" .TP 5 +.B local\-zone\-tag: \fI <"list of tags"> +Assign tags to localzones. Tagged localzones will only be applied when the +used access-control element has a matching tag. Tags must be defined in +\fIdefine\-tags\fR. Enclose list of tags in quotes ("") and put spaces between +tags. +.TP 5 +.B local\-zone\-override: \fI +Override the localzone type for queries from addresses matching netblock. +Use this localzone type, regardless the type configured for the local-zone +(both tagged and untagged) and regardless the type configured using +access\-control\-tag\-action. +.TP 5 .B ratelimit: \fI Enable ratelimiting of queries sent to nameserver for performing recursion. If 0, the default, it is disabled. This option is experimental at this time. @@ -1045,25 +1288,72 @@ This can make ordinary queries complete (if repeatedly queried for), and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 -.B ratelimit\-for\-domain: \fI +.B ratelimit\-for\-domain: \fI Override the global ratelimit for an exact match domain name with the listed number. You can give this for any number of names. For example, for a top\-level\-domain you may want to have a higher limit than other names. +A value of 0 will disable ratelimiting for that domain. .TP 5 -.B ratelimit\-below\-domain: \fI +.B ratelimit\-below\-domain: \fI Override the global ratelimit for a domain name that ends in this name. You can give this multiple times, it then describes different settings in different parts of the namespace. The closest matching suffix is used to determine the qps limit. The rate for the exact matching domain name is not changed, use ratelimit\-for\-domain to set that, you might want to use different settings for a top\-level\-domain and subdomains. +A value of 0 will disable ratelimiting for domain names that end in this name. +.TP 5 +.B ip\-ratelimit: \fI +Enable global ratelimiting of queries accepted per ip address. +If 0, the default, it is disabled. This option is experimental at this time. +The ratelimit is in queries per second that are allowed. More queries are +completely dropped and will not receive a reply, SERVFAIL or otherwise. +IP ratelimiting happens before looking in the cache. This may be useful for +mitigating amplification attacks. +.TP 5 +.B ip\-ratelimit\-size: \fI +Give the size of the data structure in which the current ongoing rates are +kept track in. Default 4m. In bytes or use m(mega), k(kilo), g(giga). +The ip ratelimit structure is small, so this data structure likely does +not need to be large. +.TP 5 +.B ip\-ratelimit\-slabs: \fI +Give power of 2 number of slabs, this is used to reduce lock contention +in the ip ratelimit tracking data structure. Close to the number of cpus is +a fairly good setting. +.TP 5 +.B ip\-ratelimit\-factor: \fI +Set the amount of queries to rate limit when the limit is exceeded. +If set to 0, all queries are dropped for addresses where the limit is +exceeded. If set to another value, 1 in that number is allowed through +to complete. Default is 10, allowing 1/10 traffic to flow normally. +This can make ordinary queries complete (if repeatedly queried for), +and enter the cache, whilst also mitigating the traffic flow by the +factor given. +.TP 5 +.B low\-rtt: \fI +Set the time in millisecond that is considere a low ping time for fast +server selection with the low\-rtt\-permil option, that turns this on or off. +The default is 45 msec, a number from IPv6 quick response documents. +.TP 5 +.B low\-rtt\-permil: \fI +Specify how many times out of 1000 to pick the fast server from the low +rtt band. 0 turns the feature off. A value of 900 would pick the fast +server when such fast servers are available 90 percent of the time, and +the remaining time perform normal exploration of random servers. +When prefetch is enabled (or serve\-expired), such prefetches are not +sped up, because there is no one waiting for it, and it presents a good +moment to perform server exploration. The low\-rtt option can be used +to specify which servers are picked for fast server selection, servers +with a ping roundtrip time below that value are considered. +The default for low\-rtt\-permil is 0. .SS "Remote Control Options" In the .B remote\-control: clause are the declarations for the remote control facility. If this is enabled, the \fIunbound\-control\fR(8) utility can be used to send commands to the running unbound server. The server uses these clauses -to setup SSLv3 / TLSv1 security for the connection. The +to setup TLSv1 security for the connection. The \fIunbound\-control\fR(8) utility also reads the \fBremote\-control\fR section for options. To setup the correct self\-signed certificates use the \fIunbound\-control\-setup\fR(8) utility. @@ -1079,6 +1369,14 @@ By default localhost (127.0.0.1 and ::1) is listened to. Use 0.0.0.0 and ::0 to listen to all interfaces. If you change this and permissions have been dropped, you must restart the server for the change to take effect. +.IP +If you set it to an absolute path, a local socket is used. The local socket +does not use the certificates and keys, so those files need not be present. +To restrict access, unbound sets permissions on the file to the user and +group that is configured, the access bits are set to allow the group members +to access the control socket file. Put users that need to access the socket +in the that group. To restrict access further, create a directory to put +the control socket in and restrict access to that directory. .TP 5 .B control\-port: \fI The port number to listen on for IPv4 or IPv6 control interfaces, @@ -1087,11 +1385,9 @@ If you change this and permissions have been dropped, you must restart the server for the change to take effect. .TP 5 .B control\-use\-cert: \fI -Whether to require certificate authentication of control connections. -The default is "yes". -This should not be changed unless there are other mechanisms in place -to prevent untrusted users from accessing the remote control -interface. +For localhost control-interface you can disable the use of TLS by setting +this option to "no", default is "yes". For local sockets, TLS is disabled +and the value of this option is ignored. .TP 5 .B server\-key\-file: \fI Path to the server private key, by default unbound_server.key. @@ -1124,21 +1420,21 @@ the recursive processing itself for stub zones. .P The stub zone can be used to configure authoritative data to be used by the resolver that cannot be accessed using the public internet servers. -This is useful for company\-local data or private zones. Setup an -authoritative server on a different host (or different port). Enter a config -entry for unbound with +This is useful for company\-local data or private zones. Setup an +authoritative server on a different host (or different port). Enter a config +entry for unbound with .B stub\-addr: -. -The unbound resolver can then access the data, without referring to the -public internet for it. +. +The unbound resolver can then access the data, without referring to the +public internet for it. .P -This setup allows DNSSEC signed zones to be served by that +This setup allows DNSSEC signed zones to be served by that authoritative server, in which case a trusted key entry with the public key -can be put in config, so that unbound can validate the data and set the AD -bit on replies for the private zone (authoritative servers do not set the -AD bit). This setup makes unbound capable of answering queries for the -private zone, and can even set the AD bit ('authentic'), but the AA -('authoritative') bit is not set on these replies. +can be put in config, so that unbound can validate the data and set the AD +bit on replies for the private zone (authoritative servers do not set the +AD bit). This setup makes unbound capable of answering queries for the +private zone, and can even set the AD bit ('authentic'), but the AA +('authoritative') bit is not set on these replies. .P Consider adding \fBserver:\fR statements for \fBdomain\-insecure:\fR and for \fBlocal\-zone:\fI name nodefault\fR for the zone if it is a locally @@ -1157,8 +1453,8 @@ IP address of stub zone nameserver. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. .TP .B stub\-prime: \fI -This option is by default off. If enabled it performs NS set priming, -which is similar to root hints, where it starts using the list of nameservers +This option is by default no. If enabled it performs NS set priming, +which is similar to root hints, where it starts using the list of nameservers currently published by the zone. Thus, if the hint list is slightly outdated, the resolver picks up a correct list online. .TP @@ -1167,6 +1463,13 @@ If enabled, a query is attempted without the stub clause if it fails. The data could not be retrieved and would have caused SERVFAIL because the servers are unreachable, instead it is tried without this clause. The default is no. +.TP +.B stub\-tls\-upstream: \fI +Enabled or disable whether the queries to this stub use TLS for transport. +Default is no. +.TP +.B stub\-ssl\-upstream: \fI +Alternate syntax for \fBstub\-tls\-upstream\fR. .SS "Forward Zone Options" .LP There may be multiple @@ -1178,6 +1481,9 @@ forward the queries to. The servers listed as \fBforward\-host:\fR and those servers are not authority servers, but are (just like unbound is) recursive servers too; unbound does not perform recursion itself for the forward zone, it lets the remote server do it. Class IN is assumed. +CNAMEs are chased by unbound itself, asking the remote server for every +name in the indirection chain, to protect the local cache from illegal +indirect referenced items. A forward\-zone entry with name "." and a forward\-addr target will forward all queries to that other server (unless it can answer from the cache). @@ -1191,12 +1497,131 @@ Name of server to forward to. Is itself resolved before it is used. .B forward\-addr: \fI IP address of server to forward to. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. +If tls is enabled, then you can append a '#' and a name, then it'll check +the tls authentication certificates with that name. If you combine +the '@' and '#', the '@' comes first. +.IP +At high verbosity it logs the TLS certificate, with TLS enabled. +If you leave out the '#' and auth name from the forward\-addr, any +name is accepted. The cert must also match a CA from the tls\-cert\-bundle. .TP .B forward\-first: \fI If enabled, a query is attempted without the forward clause if it fails. The data could not be retrieved and would have caused SERVFAIL because the servers are unreachable, instead it is tried without this clause. The default is no. +.TP +.B forward\-tls\-upstream: \fI +Enabled or disable whether the queries to this forwarder use TLS for transport. +Default is no. +If you enable this, also configure a tls\-cert\-bundle or use tls\-win\cert to +load CA certs, otherwise the connections cannot be authenticated. +.TP +.B forward\-ssl\-upstream: \fI +Alternate syntax for \fBforward\-tls\-upstream\fR. +.SS "Authority Zone Options" +.LP +Authority zones are configured with \fBauth\-zone:\fR, and each one must +have a \fBname:\fR. There can be multiple ones, by listing multiple auth\-zone clauses, each with a different name, pertaining to that part of the namespace. +The authority zone with the name closest to the name looked up is used. +Authority zones are processed after \fBlocal\-zones\fR and before +cache (\fBfor\-downstream:\fR \fIyes\fR), and when used in this manner +make unbound respond like an authority server. Authority zones are also +processed after cache, just before going to the network to fetch +information for recursion (\fBfor\-upstream:\fR \fIyes\fR), and when used +in this manner provide a local copy of an authority server that speeds up +lookups of that data. +.LP +Authority zones can be read from zonefile. And can be kept updated via +AXFR and IXFR. After update the zonefile is rewritten. The update mechanism +uses the SOA timer values and performs SOA UDP queries to detect zone changes. +.TP +.B name: \fI +Name of the authority zone. +.TP +.B master: \fI +Where to download a copy of the zone from, with AXFR and IXFR. Multiple +masters can be specified. They are all tried if one fails. +.TP +.B url: \fI +Where to download a zonefile for the zone. With http or https. An example +for the url is "http://www.example.com/example.org.zone". Multiple url +statements can be given, they are tried in turn. If only urls are given +the SOA refresh timer is used to wait for making new downloads. If also +masters are listed, the masters are first probed with UDP SOA queries to +see if the SOA serial number has changed, reducing the number of downloads. +If none of the urls work, the masters are tried with IXFR and AXFR. +For https, the \fBtls\-cert\-bundle\fR and the hostname from the url are used +to authenticate the connection. +.TP +.B allow\-notify: \fI +With allow\-notify you can specify additional sources of notifies. +When notified, the server attempts to first probe and then zone transfer. +If the notify is from a master, it first attempts that master. Otherwise +other masters are attempted. If there are no masters, but only urls, the +file is downloaded when notified. The masters from master: statements are +allowed notify by default. +.TP +.B fallback\-enabled: \fI +Default no. If enabled, unbound falls back to querying the internet as +a resolver for this zone when lookups fail. For example for DNSSEC +validation failures. +.TP +.B for\-downstream: \fI +Default yes. If enabled, unbound serves authority responses to +downstream clients for this zone. This option makes unbound behave, for +the queries with names in this zone, like one of the authority servers for +that zone. Turn it off if you want unbound to provide recursion for the +zone but have a local copy of zone data. If for\-downstream is no and +for\-upstream is yes, then unbound will DNSSEC validate the contents of the +zone before serving the zone contents to clients and store validation +results in the cache. +.TP +.B for\-upstream: \fI +Default yes. If enabled, unbound fetches data from this data collection +for answering recursion queries. Instead of sending queries over the internet +to the authority servers for this zone, it'll fetch the data directly from +the zone data. Turn it on when you want unbound to provide recursion for +downstream clients, and use the zone data as a local copy to speed up lookups. +.TP +.B zonefile: \fI +The filename where the zone is stored. If not given then no zonefile is used. +If the file does not exist or is empty, unbound will attempt to fetch zone +data (eg. from the master servers). +.SS "View Options" +.LP +There may be multiple +.B view: +clauses. Each with a \fBname:\fR and zero or more \fBlocal\-zone\fR and +\fBlocal\-data\fR elements. View can be mapped to requests by specifying the +view name in an \fBaccess\-control\-view\fR element. Options from matching +views will override global options. Global options will be used if no matching +view is found, or when the matching view does not have the option specified. +.TP +.B name: \fI +Name of the view. Must be unique. This name is used in access\-control\-view +elements. +.TP +.B local\-zone: \fI +View specific local\-zone elements. Has the same types and behaviour as the +global local\-zone elements. When there is at least one local\-zone specified +and view\-first is no, the default local-zones will be added to this view. +Defaults can be disabled using the nodefault type. When view\-first is yes or +when a view does not have a local\-zone, the global local\-zone will be used +including it's default zones. +.TP +.B local\-data: \fI"" +View specific local\-data elements. Has the same behaviour as the global +local\-data elements. +.TP +.B local\-data\-ptr: \fI"IPaddr name" +View specific local\-data\-ptr elements. Has the same behaviour as the global +local\-data\-ptr elements. +.TP +.B view\-first: \fI +If enabled, it attempts to use the global local\-zone and local\-data if there +is no match in the view specific options. +The default is no. .SS "Python Module Options" .LP The @@ -1206,9 +1631,15 @@ acts like the iterator and validator modules do, on queries and answers. To enable the script module it has to be compiled into the daemon, and the word "python" has to be put in the \fBmodule\-config:\fR option (usually first, or between the validator and iterator). +.LP +If the \fBchroot:\fR option is enabled, you should make sure Python's +library directory structure is bind mounted in the new root environment, see +\fImount\fR(8). Also the \fBpython\-script:\fR path should be specified as an +absolute path relative to the new root, or as a relative path to the working +directory. .TP .B python\-script: \fI\fR -The script file to load. +The script file to load. .SS "DNS64 Module Options" .LP The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 @@ -1222,6 +1653,267 @@ It must be /96 or shorter. The default prefix is 64:ff9b::/96. .B dns64\-synthall: \fI\fR Debug option, default no. If enabled, synthesize all AAAA records despite the presence of actual AAAA records. +.SS "DNSCrypt Options" +.LP +The +.B dnscrypt: +clause gives the settings of the dnscrypt channel. While those options are +available, they are only meaningful if unbound was compiled with +\fB\-\-enable\-dnscrypt\fR. +Currently certificate and secret/public keys cannot be generated by unbound. +You can use dnscrypt-wrapper to generate those: https://github.com/cofyc/\ +dnscrypt-wrapper/blob/master/README.md#usage +.TP +.B dnscrypt\-enable: \fI\fR +Whether or not the \fBdnscrypt\fR config should be enabled. You may define +configuration but not activate it. +The default is no. +.TP +.B dnscrypt\-port: \fI +On which port should \fBdnscrypt\fR should be activated. Note that you should +have a matching \fBinterface\fR option defined in the \fBserver\fR section for +this port. +.TP +.B dnscrypt\-provider: \fI\fR +The provider name to use to distribute certificates. This is of the form: +\fB2.dnscrypt-cert.example.com.\fR. The name \fIMUST\fR end with a dot. +.TP +.B dnscrypt\-secret\-key: \fI\fR +Path to the time limited secret key file. This option may be specified multiple +times. +.TP +.B dnscrypt\-provider\-cert: \fI\fR +Path to the certificate related to the \fBdnscrypt\-secret\-key\fRs. +This option may be specified multiple times. +.TP +.B dnscrypt\-provider\-cert\-rotated: \fI\fR +Path to a certificate that we should be able to serve existing connection from +but do not want to advertise over \fBdnscrypt\-provider\fR's TXT record certs +distribution. +A typical use case is when rotating certificates, existing clients may still use +the client magic from the old cert in their queries until they fetch and update +the new cert. Likewise, it would allow one to prime the new cert/key without +distributing the new cert yet, this can be useful when using a network of +servers using anycast and on which the configuration may not get updated at the +exact same time. By priming the cert, the servers can handle both old and new +certs traffic while distributing only one. +This option may be specified multiple times. +.TP +.B dnscrypt\-shared\-secret\-cache\-size: \fI +Give the size of the data structure in which the shared secret keys are kept +in. Default 4m. In bytes or use m(mega), k(kilo), g(giga). +The shared secret cache is used when a same client is making multiple queries +using the same public key. It saves a substantial amount of CPU. +.TP +.B dnscrypt\-shared\-secret\-cache\-slabs: \fI +Give power of 2 number of slabs, this is used to reduce lock contention +in the dnscrypt shared secrets cache. Close to the number of cpus is +a fairly good setting. +.TP +.B dnscrypt\-nonce\-cache\-size: \fI +Give the size of the data structure in which the client nonces are kept in. +Default 4m. In bytes or use m(mega), k(kilo), g(giga). +The nonce cache is used to prevent dnscrypt message replaying. Client nonce +should be unique for any pair of client pk/server sk. +.TP +.B dnscrypt\-nonce\-cache\-slabs: \fI +Give power of 2 number of slabs, this is used to reduce lock contention +in the dnscrypt nonce cache. Close to the number of cpus is +a fairly good setting. +.SS "EDNS Client Subnet Module Options" +.LP +The ECS module must be configured in the \fBmodule\-config:\fR "subnetcache +validator iterator" directive and be compiled into the daemon to be +enabled. These settings go in the \fBserver:\fR section. +.LP +If the destination address is whitelisted with Unbound will add the EDNS0 +option to the query containing the relevant part of the client's address. When +an answer contains the ECS option the response and the option are placed in a +specialized cache. If the authority indicated no support, the response is +stored in the regular cache. +.LP +Additionally, when a client includes the option in its queries, Unbound will +forward the option to the authority if present in the whitelist, or +\fBclient\-subnet\-always\-forward\fR is set to yes. In this case the lookup in +the regular cache is skipped. +.LP +The maximum size of the ECS cache is controlled by 'msg-cache-size' in the +configuration file. On top of that, for each query only 100 different subnets +are allowed to be stored for each address family. Exceeding that number, older +entries will be purged from cache. +.TP +.B send\-client\-subnet: \fI\fR +Send client source address to this authority. Append /num to indicate a +classless delegation netblock, for example like 10.2.3.4/24 or 2001::11/64. Can +be given multiple times. Authorities not listed will not receive edns-subnet +information, unless domain in query is specified in \fBclient\-subnet\-zone\fR. +.TP +.B client\-subnet\-zone: \fI\fR +Send client source address in queries for this domain and its subdomains. Can be +given multiple times. Zones not listed will not receive edns-subnet information, +unless hosted by authority specified in \fBsend\-client\-subnet\fR. +.TP +.B client\-subnet\-always\-forward: \fI\fR +Specify whether the ECS whitelist check (configured using +\fBsend\-client\-subnet\fR) is applied for all queries, even if the triggering +query contains an ECS record, or only for queries for which the ECS record is +generated using the querier address (and therefore did not contain ECS data in +the client query). If enabled, the whitelist check is skipped when the client +query contains an ECS record. Default is no. +.TP +.B max\-client\-subnet\-ipv6: \fI\fR +Specifies the maximum prefix length of the client source address we are willing +to expose to third parties for IPv6. Defaults to 56. +.TP +.B max\-client\-subnet\-ipv4: \fI\fR +Specifies the maximum prefix length of the client source address we are willing +to expose to third parties for IPv4. Defaults to 24. +.SS "Opportunistic IPsec Support Module Options" +.LP +The IPsec module must be configured in the \fBmodule\-config:\fR "ipsecmod +validator iterator" directive and be compiled into the daemon to be +enabled. These settings go in the \fBserver:\fR section. +.LP +When unbound receives an A/AAAA query that is not in the cache and finds a +valid answer, it will withhold returning the answer and instead will generate +an IPSECKEY subquery for the same domain name. If an answer was found, unbound +will call an external hook passing the following arguments: +.TP 10 +\h'5'\fIQNAME\fR +Domain name of the A/AAAA and IPSECKEY query. In string format. +.TP 10 +\h'5'\fIIPSECKEY TTL\fR +TTL of the IPSECKEY RRset. +.TP 10 +\h'5'\fIA/AAAA\fR +String of space separated IP addresses present in the A/AAAA RRset. The IP +addresses are in string format. +.TP 10 +\h'5'\fIIPSECKEY\fR +String of space separated IPSECKEY RDATA present in the IPSECKEY RRset. The +IPSECKEY RDATA are in DNS presentation format. +.LP +The A/AAAA answer is then cached and returned to the client. If the external +hook was called the TTL changes to ensure it doesn't surpass +\fBipsecmod-max-ttl\fR. +.LP +The same procedure is also followed when \fBprefetch:\fR is used, but the +A/AAAA answer is given to the client before the hook is called. +\fBipsecmod-max-ttl\fR ensures that the A/AAAA answer given from cache is still +relevant for opportunistic IPsec. +.TP +.B ipsecmod-enabled: \fI\fR +Specifies whether the IPsec module is enabled or not. The IPsec module still +needs to be defined in the \fBmodule\-config:\fR directive. This option +facilitates turning on/off the module without restarting/reloading unbound. +Defaults to yes. +.TP +.B ipsecmod\-hook: \fI\fR +Specifies the external hook that unbound will call with \fIsystem\fR(3). The +file can be specified as an absolute/relative path. The file needs the proper +permissions to be able to be executed by the same user that runs unbound. It +must be present when the IPsec module is defined in the \fBmodule\-config:\fR +directive. +.TP +.B ipsecmod-strict: \fI\fR +If enabled unbound requires the external hook to return a success value of 0. +Failing to do so unbound will reply with SERVFAIL. The A/AAAA answer will also +not be cached. Defaults to no. +.TP +.B ipsecmod\-max-ttl: \fI\fR +Time to live maximum for A/AAAA cached records after calling the external hook. +Defaults to 3600. +.TP +.B ipsecmod-ignore-bogus: \fI\fR +Specifies the behaviour of unbound when the IPSECKEY answer is bogus. If set +to yes, the hook will be called and the A/AAAA answer will be returned to the +client. If set to no, the hook will not be called and the answer to the +A/AAAA query will be SERVFAIL. Mainly used for testing. Defaults to no. +.TP +.B ipsecmod\-whitelist: \fI\fR +Whitelist the domain so that the module logic will be executed. Can +be given multiple times, for different domains. If the option is not +specified, all domains are treated as being whitelisted (default). +.SS "Cache DB Module Options" +.LP +The Cache DB module must be configured in the \fBmodule\-config:\fR +"validator cachedb iterator" directive and be compiled into the daemon +with \fB\-\-enable\-cachedb\fR. +If this module is enabled and configured, the specified backend database +works as a second level cache: +When Unbound cannot find an answer to a query in its built-in in-memory +cache, it consults the specified backend. +If it finds a valid answer in the backend, Unbound uses it to respond +to the query without performing iterative DNS resolution. +If Unbound cannot even find an answer in the backend, it resolves the +query as usual, and stores the answer in the backend. +.P +If Unbound was built with +\fB\-\-with\-libhiredis\fR +on a system that has installed the hiredis C client library of Redis, +then the "redis" backend can be used. +This backend communicates with the specified Redis server over a TCP +connection to store and retrieve cache data. +It can be used as a persistent and/or shared cache backend. +It should be noted that Unbound never removes data stored in the Redis server, +even if some data have expired in terms of DNS TTL or the Redis server has +cached too much data; +if necessary the Redis server must be configured to limit the cache size, +preferably with some kind of least-recently-used eviction policy. +This backend uses synchronous communication with the Redis server +based on the assumption that the communication is stable and sufficiently +fast. +The thread waiting for a response from the Redis server cannot handle +other DNS queries. +Although the backend has the ability to reconnect to the server when +the connection is closed unexpectedly and there is a configurable timeout +in case the server is overly slow or hangs up, these cases are assumed +to be very rare. +If connection close or timeout happens too often, Unbound will be +effectively unusable with this backend. +It's the administrator's responsibility to make the assumption hold. +.P +The +.B cachedb: +clause gives custom settings of the cache DB module. +.TP +.B backend: \fI\fR +Specify the backend database name. +The default database is the in-memory backend named "testframe", which, +as the name suggests, is not of any practical use. +Depending on the build-time configuration, "redis" backend may also be +used as described above. +.TP +.B secret-seed: \fI<"secret string">\fR +Specify a seed to calculate a hash value from query information. +This value will be used as the key of the corresponding answer for the +backend database and can be customized if the hash should not be predictable +operationally. +If the backend database is shared by multiple Unbound instances, +all instances must use the same secret seed. +This option defaults to "default". +.P +The following +.B cachedb +otions are specific to the redis backend. +.TP +.B redis-server-host: \fI\fR +The IP (either v6 or v4) address or domain name of the Redis server. +In general an IP address should be specified as otherwise Unbound will have to +resolve the name of the server every time it establishes a connection +to the server. +This option defaults to "127.0.0.1". +.TP +.B redis-server-port: \fI\fR +The TCP port number of the Redis server. +This option defaults to 6379. +.TP +.B redis-timeout: \fI\fR +The period until when Unbound waits for a response from the Redis sever. +If this timeout expires Unbound closes the connection, treats it as +if the Redis server does not have the requested data, and will try to +re-establish a new connection later. +This option defaults to 100 milliseconds. .SH "MEMORY CONTROL EXAMPLE" In the example config settings below memory usage is reduced. Some service levels are lower, notable very large data and a high TCP load are no longer @@ -1229,7 +1921,7 @@ supported. Very large data and high TCP loads are exceptional for the DNS. DNSSEC validation is enabled, just add trust anchors. If you do not have to worry about programs using more than 3 Mb of memory, the below example is not for you. Use the defaults to receive full service, -which on BSD\-32bit tops out at 30\-40 Mb after heavy usage. +which on BSD\-32bit tops out at 30\-40 Mb after heavy usage. .P .nf # example settings that reduce memory usage @@ -1270,12 +1962,12 @@ unbound configuration file. default unbound pidfile with process ID of the running daemon. .TP .I unbound.log -unbound log file. default is to log to -\fIsyslog\fR(3). +unbound log file. default is to log to +\fIsyslog\fR(3). .SH "SEE ALSO" -\fIunbound\fR(8), +\fIunbound\fR(8), \fIunbound\-checkconf\fR(8). .SH "AUTHORS" -.B Unbound +.B Unbound was written by NLnet Labs. Please see CREDITS file in the distribution for further details. diff --git a/external/unbound/doc/unbound.doxygen b/external/unbound/doc/unbound.doxygen index 43f2e38..fe39876 100644 --- a/external/unbound/doc/unbound.doxygen +++ b/external/unbound/doc/unbound.doxygen @@ -623,7 +623,9 @@ EXCLUDE = ./build \ pythonmod/examples/resip.py \ libunbound/python/unbound.py \ libunbound/python/libunbound_wrap.c \ - ./ldns-src + ./ldns-src \ + doc/control_proto_spec.txt \ + doc/requirements.txt # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded diff --git a/external/unbound/edns-subnet/addrtree.c b/external/unbound/edns-subnet/addrtree.c new file mode 100644 index 0000000..9a02db0 --- /dev/null +++ b/external/unbound/edns-subnet/addrtree.c @@ -0,0 +1,532 @@ +/* + * edns-subnet/addrtree.c -- radix tree for edns subnet cache. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** \file + * addrtree -- radix tree for edns subnet cache. + */ + +#include "config.h" +#include "util/log.h" +#include "util/data/msgreply.h" +#include "util/module.h" +#include "addrtree.h" + +/** + * Create a new edge + * @param node: Child node this edge will connect to. + * @param addr: full key to this edge. + * @param addrlen: length of relevant part of key for this node + * @param parent_node: Parent node for node + * @param parent_index: Index of child node at parent node + * @return new addredge or NULL on failure + */ +static struct addredge * +edge_create(struct addrnode *node, const addrkey_t *addr, + addrlen_t addrlen, struct addrnode *parent_node, int parent_index) +{ + size_t n; + struct addredge *edge = (struct addredge *)malloc( sizeof (*edge) ); + if (!edge) + return NULL; + edge->node = node; + edge->len = addrlen; + edge->parent_index = parent_index; + edge->parent_node = parent_node; + /* ceil() */ + n = (size_t)((addrlen / KEYWIDTH) + ((addrlen % KEYWIDTH != 0)?1:0)); + edge->str = (addrkey_t *)calloc(n, sizeof (addrkey_t)); + if (!edge->str) { + free(edge); + return NULL; + } + memcpy(edge->str, addr, n * sizeof (addrkey_t)); + /* Only manipulate other objects after successful alloc */ + node->parent_edge = edge; + log_assert(parent_node->edge[parent_index] == NULL); + parent_node->edge[parent_index] = edge; + return edge; +} + +/** + * Create a new node + * @param tree: Tree the node lives in. + * @param elem: Element to store at this node + * @param scope: Scopemask from server reply + * @param ttl: Element is valid up to this time. Absolute, seconds + * @return new addrnode or NULL on failure + */ +static struct addrnode * +node_create(struct addrtree *tree, void *elem, addrlen_t scope, + time_t ttl) +{ + struct addrnode* node = (struct addrnode *)malloc( sizeof (*node) ); + if (!node) + return NULL; + node->elem = elem; + tree->node_count++; + node->scope = scope; + node->ttl = ttl; + node->edge[0] = NULL; + node->edge[1] = NULL; + node->parent_edge = NULL; + node->next = NULL; + node->prev = NULL; + return node; +} + +/** Size in bytes of node and parent edge + * @param tree: tree the node lives in + * @param n: node which size must be calculated + * @return size in bytes. + **/ +static inline size_t +node_size(const struct addrtree *tree, const struct addrnode *n) +{ + return sizeof *n + sizeof *n->parent_edge + n->parent_edge->len + + (n->elem?tree->sizefunc(n->elem):0); +} + +struct addrtree * +addrtree_create(addrlen_t max_depth, void (*delfunc)(void *, void *), + size_t (*sizefunc)(void *), void *env, unsigned int max_node_count) +{ + struct addrtree *tree; + log_assert(delfunc != NULL); + log_assert(sizefunc != NULL); + tree = (struct addrtree *)calloc(1, sizeof(*tree)); + if (!tree) + return NULL; + tree->root = node_create(tree, NULL, 0, 0); + if (!tree->root) { + free(tree); + return NULL; + } + tree->size_bytes = sizeof *tree + sizeof *tree->root; + tree->first = NULL; + tree->last = NULL; + tree->max_depth = max_depth; + tree->delfunc = delfunc; + tree->sizefunc = sizefunc; + tree->env = env; + tree->node_count = 0; + tree->max_node_count = max_node_count; + return tree; +} + +/** + * Scrub a node clean of elem + * @param tree: tree the node lives in. + * @param node: node to be cleaned. + */ +static void +clean_node(struct addrtree *tree, struct addrnode *node) +{ + if (!node->elem) return; + tree->size_bytes -= tree->sizefunc(node->elem); + tree->delfunc(tree->env, node->elem); + node->elem = NULL; +} + +/** Remove specified node from LRU list */ +static void +lru_pop(struct addrtree *tree, struct addrnode *node) +{ + if (node == tree->first) { + if (!node->next) { /* it is the last as well */ + tree->first = NULL; + tree->last = NULL; + } else { + tree->first = node->next; + tree->first->prev = NULL; + } + } else if (node == tree->last) { /* but not the first */ + tree->last = node->prev; + tree->last->next = NULL; + } else { + node->prev->next = node->next; + node->next->prev = node->prev; + } +} + +/** Add node to LRU list as most recently used. */ +static void +lru_push(struct addrtree *tree, struct addrnode *node) +{ + if (!tree->first) { + tree->first = node; + node->prev = NULL; + } else { + tree->last->next = node; + node->prev = tree->last; + } + tree->last = node; + node->next = NULL; +} + +/** Move node to the end of LRU list */ +static void +lru_update(struct addrtree *tree, struct addrnode *node) +{ + if (tree->root == node) return; + lru_pop(tree, node); + lru_push(tree, node); +} + +/** + * Purge a node from the tree. Node and parentedge are cleaned and + * free'd. + * @param tree: Tree the node lives in. + * @param node: Node to be freed + */ +static void +purge_node(struct addrtree *tree, struct addrnode *node) +{ + struct addredge *parent_edge, *child_edge = NULL; + int index; + int keep = node->edge[0] && node->edge[1]; + + clean_node(tree, node); + parent_edge = node->parent_edge; + if (keep || !parent_edge) return; + tree->node_count--; + index = parent_edge->parent_index; + child_edge = node->edge[!node->edge[0]]; + if (child_edge) { + child_edge->parent_node = parent_edge->parent_node; + child_edge->parent_index = index; + } + parent_edge->parent_node->edge[index] = child_edge; + tree->size_bytes -= node_size(tree, node); + free(parent_edge->str); + free(parent_edge); + lru_pop(tree, node); + free(node); +} + +/** + * If a limit is set remove old nodes while above that limit. + * @param tree: Tree to be cleaned up. + */ +static void +lru_cleanup(struct addrtree *tree) +{ + struct addrnode *n, *p; + int children; + if (tree->max_node_count == 0) return; + while (tree->node_count > tree->max_node_count) { + n = tree->first; + if (!n) break; + children = (n->edge[0] != NULL) + (n->edge[1] != NULL); + /** Don't remove this node, it is either the root or we can't + * do without it because it has 2 children */ + if (children == 2 || !n->parent_edge) { + lru_update(tree, n); + continue; + } + p = n->parent_edge->parent_node; + purge_node(tree, n); + /** Since we removed n, n's parent p is eligible for deletion + * if it is not the root node, caries no data and has only 1 + * child */ + children = (p->edge[0] != NULL) + (p->edge[1] != NULL); + if (!p->elem && children == 1 && p->parent_edge) { + purge_node(tree, p); + } + } +} + +inline size_t +addrtree_size(const struct addrtree *tree) +{ + return tree?tree->size_bytes:0; +} + +void addrtree_delete(struct addrtree *tree) +{ + struct addrnode *n; + if (!tree) return; + clean_node(tree, tree->root); + free(tree->root); + tree->size_bytes -= sizeof(struct addrnode); + while ((n = tree->first)) { + tree->first = n->next; + clean_node(tree, n); + tree->size_bytes -= node_size(tree, n); + free(n->parent_edge->str); + free(n->parent_edge); + free(n); + } + log_assert(sizeof *tree == addrtree_size(tree)); + free(tree); +} + +/** + * Get N'th bit from address + * @param addr: address to inspect + * @param addrlen: length of addr in bits + * @param n: index of bit to test. Must be in range [0, addrlen) + * @return 0 or 1 + */ +static int +getbit(const addrkey_t *addr, addrlen_t addrlen, addrlen_t n) +{ + log_assert(addrlen > n); + (void)addrlen; + return (int)(addr[n/KEYWIDTH]>>((KEYWIDTH-1)-(n%KEYWIDTH))) & 1; +} + +/** + * Test for equality on N'th bit. + * @return 0 for equal, 1 otherwise + */ +static inline int +cmpbit(const addrkey_t *key1, const addrkey_t *key2, addrlen_t n) +{ + addrkey_t c = key1[n/KEYWIDTH] ^ key2[n/KEYWIDTH]; + return (int)(c >> ((KEYWIDTH-1)-(n%KEYWIDTH))) & 1; +} + +/** + * Common number of bits in prefix. + * @param s1: first prefix. + * @param l1: length of s1 in bits. + * @param s2: second prefix. + * @param l2: length of s2 in bits. + * @param skip: nr of bits already checked. + * @return common number of bits. + */ +static addrlen_t +bits_common(const addrkey_t *s1, addrlen_t l1, + const addrkey_t *s2, addrlen_t l2, addrlen_t skip) +{ + addrlen_t len, i; + len = (l1 > l2) ? l2 : l1; + log_assert(skip < len); + for (i = skip; i < len; i++) { + if (cmpbit(s1, s2, i)) return i; + } + return len; +} + +/** + * Tests if s1 is a substring of s2 + * @param s1: first prefix. + * @param l1: length of s1 in bits. + * @param s2: second prefix. + * @param l2: length of s2 in bits. + * @param skip: nr of bits already checked. + * @return 1 for substring, 0 otherwise + */ +static int +issub(const addrkey_t *s1, addrlen_t l1, + const addrkey_t *s2, addrlen_t l2, addrlen_t skip) +{ + return bits_common(s1, l1, s2, l2, skip) == l1; +} + +void +addrtree_insert(struct addrtree *tree, const addrkey_t *addr, + addrlen_t sourcemask, addrlen_t scope, void *elem, time_t ttl, + time_t now) +{ + struct addrnode *newnode, *node; + struct addredge *edge; + int index; + addrlen_t common, depth; + + node = tree->root; + log_assert(node != NULL); + + /* Protect our cache against too much fine-grained data */ + if (tree->max_depth < scope) scope = tree->max_depth; + /* Server answer was less specific than question */ + if (scope < sourcemask) sourcemask = scope; + + depth = 0; + while (1) { + log_assert(depth <= sourcemask); + /* Case 1: update existing node */ + if (depth == sourcemask) { + /* update this node's scope and data */ + clean_node(tree, node); + node->ttl = ttl; + node->elem = elem; + node->scope = scope; + tree->size_bytes += tree->sizefunc(elem); + return; + } + index = getbit(addr, sourcemask, depth); + /* Get an edge to an unexpired node */ + edge = node->edge[index]; + while (edge) { + /* Purge all expired nodes on path */ + if (!edge->node->elem || edge->node->ttl >= now) + break; + purge_node(tree, edge->node); + edge = node->edge[index]; + } + /* Case 2: New leafnode */ + if (!edge) { + newnode = node_create(tree, elem, scope, ttl); + if (!newnode) return; + if (!edge_create(newnode, addr, sourcemask, node, + index)) { + clean_node(tree, newnode); + tree->node_count--; + free(newnode); + return; + } + tree->size_bytes += node_size(tree, newnode); + lru_push(tree, newnode); + lru_cleanup(tree); + return; + } + /* Case 3: Traverse edge */ + common = bits_common(edge->str, edge->len, addr, sourcemask, + depth); + if (common == edge->len) { + /* We update the scope of intermediate nodes. Apparently + * the * authority changed its mind. If we would not do + * this we might not be able to reach our new node. */ + node->scope = scope; + depth = edge->len; + node = edge->node; + continue; + } + /* Case 4: split. */ + if (!(newnode = node_create(tree, NULL, 0, 0))) + return; + node->edge[index] = NULL; + if (!edge_create(newnode, addr, common, node, index)) { + node->edge[index] = edge; + clean_node(tree, newnode); + tree->node_count--; + free(newnode); + return; + } + lru_push(tree, newnode); + /* connect existing child to our new node */ + index = getbit(edge->str, edge->len, common); + newnode->edge[index] = edge; + edge->parent_node = newnode; + edge->parent_index = (int)index; + + if (common == sourcemask) { + /* Data is stored in the node */ + newnode->elem = elem; + newnode->scope = scope; + newnode->ttl = ttl; + } + + tree->size_bytes += node_size(tree, newnode); + + if (common != sourcemask) { + /* Data is stored in other leafnode */ + node = newnode; + newnode = node_create(tree, elem, scope, ttl); + if (!edge_create(newnode, addr, sourcemask, node, + index^1)) { + clean_node(tree, newnode); + tree->node_count--; + free(newnode); + return; + } + tree->size_bytes += node_size(tree, newnode); + lru_push(tree, newnode); + } + lru_cleanup(tree); + return; + } +} + +struct addrnode * +addrtree_find(struct addrtree *tree, const addrkey_t *addr, + addrlen_t sourcemask, time_t now) +{ + struct addrnode *node = tree->root; + struct addredge *edge = NULL; + addrlen_t depth = 0; + + log_assert(node != NULL); + while (1) { + /* Current node more specific then question. */ + log_assert(depth <= sourcemask); + /* does this node have data? if yes, see if we have a match */ + if (node->elem && node->ttl >= now) { + /* saved at wrong depth */; + log_assert(node->scope >= depth); + if (depth == node->scope || + (node->scope > sourcemask && + depth == sourcemask)) { + /* Authority indicates it does not have a more + * precise answer or we cannot ask a more + * specific question. */ + lru_update(tree, node); + return node; + } + } + /* This is our final depth, but we haven't found an answer. */ + if (depth == sourcemask) + return NULL; + /* Find an edge to traverse */ + edge = node->edge[getbit(addr, sourcemask, depth)]; + if (!edge || !edge->node) + return NULL; + if (edge->len > sourcemask ) + return NULL; + if (!issub(edge->str, edge->len, addr, sourcemask, depth)) + return NULL; + log_assert(depth < edge->len); + depth = edge->len; + node = edge->node; + } +} + +/** Wrappers for static functions to unit test */ +int unittest_wrapper_addrtree_cmpbit(const addrkey_t *key1, + const addrkey_t *key2, addrlen_t n) { + return cmpbit(key1, key2, n); +} +addrlen_t unittest_wrapper_addrtree_bits_common(const addrkey_t *s1, + addrlen_t l1, const addrkey_t *s2, addrlen_t l2, addrlen_t skip) { + return bits_common(s1, l1, s2, l2, skip); +} +int unittest_wrapper_addrtree_getbit(const addrkey_t *addr, + addrlen_t addrlen, addrlen_t n) { + return getbit(addr, addrlen, n); +} +int unittest_wrapper_addrtree_issub(const addrkey_t *s1, addrlen_t l1, + const addrkey_t *s2, addrlen_t l2, addrlen_t skip) { + return issub(s1, l1, s2, l2, skip); +} diff --git a/external/unbound/edns-subnet/addrtree.h b/external/unbound/edns-subnet/addrtree.h new file mode 100644 index 0000000..71d9d2e --- /dev/null +++ b/external/unbound/edns-subnet/addrtree.h @@ -0,0 +1,187 @@ +/* + * edns-subnet/addrtree.h -- radix tree for edns subnet cache. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * The addrtree is a radix tree designed for edns subnet. Most notable + * is the addition of 'scope' to a node. Scope is only relevant for + * nodes with elem set, it indicates the number of bits the authority + * desires. + * + * For retrieving data one needs an address and address length + * (sourcemask). While traversing the tree the first matching node is + * returned. A node matches when + * node.scope<=sourcemask && node.elem!=NULL + * (This is the most specific answer the authority has.) + * or + * node.sourcemask==sourcemask && node.elem!=NULL + * (This is the most specific question the client can ask.) + * + * Insertion needs an address, sourcemask and scope. The length of the + * address is capped by min(sourcemask, scope). While traversing the + * tree the scope of all visited nodes is updated. This ensures we are + * always able to find the most specific answer available. + */ + +#ifndef ADDRTREE_H +#define ADDRTREE_H + +typedef uint8_t addrlen_t; +typedef uint8_t addrkey_t; +#define KEYWIDTH 8 + +struct addrtree { + struct addrnode *root; + /** Number of elements in the tree (not always equal to number of + * nodes) */ + unsigned int node_count; + /** Maximum number of allowed nodes, will be enforced by LRU list. + * Excluding the root node, 0 for unlimited */ + unsigned int max_node_count; + /** Size of tree in bytes */ + size_t size_bytes; + /** Maximum prefix length we are willing to cache. */ + addrlen_t max_depth; + /** External function to delete elem. Called as + * delfunc(addrnode->elem, addrtree->env) */ + void (*delfunc)(void *, void *); + /** Environment for delfunc */ + void *env; + /** External function returning size of elem. Called as + * sizefunc(addrnode->elem) */ + size_t (*sizefunc)(void *); + /** first node in LRU list, first candidate to go */ + struct addrnode* first; + /** last node in LRU list, last candidate to go */ + struct addrnode *last; +}; + +struct addrnode { + /** Payload of node, may be NULL */ + void *elem; + /** Abs time in seconds in which elem is meaningful */ + time_t ttl; + /** Number of significant bits in address. */ + addrlen_t scope; + /** A node can have 0-2 edges, set to NULL for unused */ + struct addredge *edge[2]; + /** edge between this node and parent */ + struct addredge *parent_edge; + /** previous node in LRU list */ + struct addrnode *prev; + /** next node in LRU list */ + struct addrnode *next; +}; + +struct addredge { + /** address of connected node */ + addrkey_t *str; + /** length in bits of str */ + addrlen_t len; + /** child node this edge is connected to */ + struct addrnode *node; + /** Parent node this ege is connected to */ + struct addrnode *parent_node; + /** Index of this edge in parent_node */ + int parent_index; +}; + +/** + * Size of tree in bytes. + * @param tree: Tree. + * @return size of tree in bytes. + */ +size_t addrtree_size(const struct addrtree *tree); + +/** + * Create a new tree. + * @param max_depth: Tree will cap keys to this length. + * @param delfunc: f(element, env) delete element. + * @param sizefunc: f(element) returning the size of element. + * @param env: Module environment for alloc information. + * @param max_node_count: Maximum size of this data structure in nodes. + * 0 for unlimited. + * @return new addrtree or NULL on failure. + */ +struct addrtree * +addrtree_create(addrlen_t max_depth, void (*delfunc)(void *, void *), + size_t (*sizefunc)(void *), void *env, unsigned int max_node_count); + +/** + * Free tree and all nodes below. + * @param tree: Tree to be freed. + */ +void addrtree_delete(struct addrtree *tree); + +/** + * Insert an element in the tree. Failures are silent. Sourcemask and + * scope might be changed according to local policy. Caller should no + * longer access elem, it could be free'd now or later during future + * inserts. + * + * @param tree: Tree insert elem in. + * @param addr: key for element lookup. + * @param sourcemask: Length of addr in bits. + * @param scope: Number of significant bits in addr. + * @param elem: data to store in the tree. + * @param ttl: elem is valid up to this time, seconds. + * @param now: Current time in seconds. + */ +void addrtree_insert(struct addrtree *tree, const addrkey_t *addr, + addrlen_t sourcemask, addrlen_t scope, void *elem, time_t ttl, + time_t now); + +/** + * Find a node containing an element in the tree. + * + * @param tree: Tree to search. + * @param addr: key for element lookup. + * @param sourcemask: Length of addr in bits. + * @param now: Current time in seconds. + * @return addrnode or NULL on miss. + */ +struct addrnode * addrtree_find(struct addrtree *tree, + const addrkey_t *addr, addrlen_t sourcemask, time_t now); + +/** Wrappers for static functions to unit test */ +int unittest_wrapper_addrtree_cmpbit(const addrkey_t *key1, + const addrkey_t *key2, addrlen_t n); +addrlen_t unittest_wrapper_addrtree_bits_common(const addrkey_t *s1, + addrlen_t l1, const addrkey_t *s2, addrlen_t l2, addrlen_t skip); +int unittest_wrapper_addrtree_getbit(const addrkey_t *addr, + addrlen_t addrlen, addrlen_t n); +int unittest_wrapper_addrtree_issub(const addrkey_t *s1, addrlen_t l1, + const addrkey_t *s2, addrlen_t l2, addrlen_t skip); +#endif /* ADDRTREE_H */ diff --git a/external/unbound/edns-subnet/edns-subnet.c b/external/unbound/edns-subnet/edns-subnet.c new file mode 100644 index 0000000..4c93192 --- /dev/null +++ b/external/unbound/edns-subnet/edns-subnet.c @@ -0,0 +1,65 @@ +/* + * edns-subnet/edns-subnet.c - Subnet option related constants + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * Subnet option related constants. + */ + +#include "config.h" + +#ifdef CLIENT_SUBNET /* keeps splint happy */ +#include "edns-subnet/edns-subnet.h" +#include + +int +copy_clear(uint8_t* dst, size_t dstlen, uint8_t* src, size_t srclen, size_t n) +{ + size_t intpart = n / 8; /* bytes */ + size_t fracpart = n % 8; /* bits */ + size_t written = intpart; + if (intpart > dstlen || intpart > srclen) + return 1; + if (fracpart && (intpart+1 > dstlen || intpart+1 > srclen)) + return 1; + memcpy(dst, src, intpart); + if (fracpart) { + dst[intpart] = src[intpart] & ~(0xFF >> fracpart); + written++; + } + memset(dst + written, 0, dstlen - written); + return 0; +} + +#endif /* CLIENT_SUBNET */ diff --git a/external/unbound/edns-subnet/edns-subnet.h b/external/unbound/edns-subnet/edns-subnet.h new file mode 100644 index 0000000..4b30608 --- /dev/null +++ b/external/unbound/edns-subnet/edns-subnet.h @@ -0,0 +1,67 @@ +/* + * edns-subnet/edns-subnet.h - Subnet option related constants + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * Subnet option related constants. + */ + +#include "util/net_help.h" + +#ifndef EDNSSUBNET_EDNSSUBNET_H +#define EDNSSUBNET_EDNSSUBNET_H + +/** In use by the edns subnet option code, as assigned by IANA */ +#define EDNSSUBNET_ADDRFAM_IP4 1 +#define EDNSSUBNET_ADDRFAM_IP6 2 + +/** + * ECS option + */ +struct ecs_data { + uint16_t subnet_addr_fam; + uint8_t subnet_source_mask; + uint8_t subnet_scope_mask; + uint8_t subnet_addr[INET6_SIZE]; + int subnet_validdata; +}; + +/** + * copy the first n BITS from src to dst iff both src and dst + * are large enough, return 0 on succes + */ +int +copy_clear(uint8_t* dst, size_t dstlen, uint8_t* src, size_t srclen, size_t n); + +#endif /* EDNSSUBNET_EDNSSUBNET_H */ diff --git a/external/unbound/edns-subnet/subnet-whitelist.c b/external/unbound/edns-subnet/subnet-whitelist.c new file mode 100644 index 0000000..1ea7fb1 --- /dev/null +++ b/external/unbound/edns-subnet/subnet-whitelist.c @@ -0,0 +1,207 @@ +/* + * edns-subnet/subnet-whitelist.c - Hosts we actively try to send subnet option + * to. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * + * Keep track of the white listed servers for subnet option. Based + * on acl_list.c|h + */ + +#include "config.h" + +#ifdef CLIENT_SUBNET /* keeps splint happy */ +#include "edns-subnet/edns-subnet.h" +#include "edns-subnet/subnet-whitelist.h" +#include "util/regional.h" +#include "util/log.h" +#include "util/config_file.h" +#include "util/net_help.h" +#include "util/storage/dnstree.h" +#include "sldns/str2wire.h" +#include "util/data/dname.h" + +struct ecs_whitelist* +ecs_whitelist_create(void) +{ + struct ecs_whitelist* whitelist = + (struct ecs_whitelist*)calloc(1, + sizeof(struct ecs_whitelist)); + if(!whitelist) + return NULL; + whitelist->region = regional_create(); + if(!whitelist->region) { + ecs_whitelist_delete(whitelist); + return NULL; + } + return whitelist; +} + +void +ecs_whitelist_delete(struct ecs_whitelist* whitelist) +{ + if(!whitelist) + return; + regional_destroy(whitelist->region); + free(whitelist); +} + +/** insert new address into whitelist structure */ +static int +upstream_insert(struct ecs_whitelist* whitelist, + struct sockaddr_storage* addr, socklen_t addrlen, int net) +{ + struct addr_tree_node* node = (struct addr_tree_node*)regional_alloc( + whitelist->region, sizeof(*node)); + if(!node) + return 0; + if(!addr_tree_insert(&whitelist->upstream, node, addr, addrlen, net)) { + verbose(VERB_QUERY, + "duplicate send-client-subnet address ignored."); + } + return 1; +} + +/** apply edns-subnet string */ +static int +upstream_str_cfg(struct ecs_whitelist* whitelist, const char* str) +{ + struct sockaddr_storage addr; + int net; + socklen_t addrlen; + verbose(VERB_ALGO, "send-client-subnet: %s", str); + if(!netblockstrtoaddr(str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { + log_err("cannot parse send-client-subnet netblock: %s", str); + return 0; + } + if(!upstream_insert(whitelist, &addr, addrlen, net)) { + log_err("out of memory"); + return 0; + } + return 1; +} + +/** read client_subnet config */ +static int +read_upstream(struct ecs_whitelist* whitelist, struct config_file* cfg) +{ + struct config_strlist* p; + for(p = cfg->client_subnet; p; p = p->next) { + log_assert(p->str); + if(!upstream_str_cfg(whitelist, p->str)) + return 0; + } + return 1; +} + +/** read client_subnet_zone config */ +static int +read_names(struct ecs_whitelist* whitelist, struct config_file* cfg) +{ + /* parse names, report errors, insert into tree */ + struct config_strlist* p; + struct name_tree_node* n; + uint8_t* nm, *nmr; + size_t nm_len; + int nm_labs; + + for(p = cfg->client_subnet_zone; p; p = p->next) { + log_assert(p->str); + nm = sldns_str2wire_dname(p->str, &nm_len); + if(!nm) { + log_err("cannot parse client-subnet-zone: %s", p->str); + return 0; + } + nm_labs = dname_count_size_labels(nm, &nm_len); + nmr = (uint8_t*)regional_alloc_init(whitelist->region, nm, + nm_len); + free(nm); + if(!nmr) { + log_err("out of memory"); + return 0; + } + n = (struct name_tree_node*)regional_alloc(whitelist->region, + sizeof(*n)); + if(!n) { + log_err("out of memory"); + return 0; + } + if(!name_tree_insert(&whitelist->dname, n, nmr, nm_len, nm_labs, + LDNS_RR_CLASS_IN)) { + verbose(VERB_QUERY, "ignoring duplicate " + "client-subnet-zone: %s", p->str); + } + } + return 1; +} + +int +ecs_whitelist_apply_cfg(struct ecs_whitelist* whitelist, + struct config_file* cfg) +{ + regional_free_all(whitelist->region); + addr_tree_init(&whitelist->upstream); + name_tree_init(&whitelist->dname); + if(!read_upstream(whitelist, cfg)) + return 0; + if(!read_names(whitelist, cfg)) + return 0; + addr_tree_init_parents(&whitelist->upstream); + name_tree_init_parents(&whitelist->dname); + return 1; +} + +int +ecs_is_whitelisted(struct ecs_whitelist* whitelist, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* qname, + size_t qname_len, uint16_t qclass) +{ + int labs; + if(addr_tree_lookup(&whitelist->upstream, addr, addrlen)) + return 1; + /* Not in upstream whitelist, check dname whitelist. */ + labs = dname_count_labels(qname); + return name_tree_lookup(&whitelist->dname, qname, qname_len, labs, + qclass) != NULL; +} + +size_t +ecs_whitelist_get_mem(struct ecs_whitelist* whitelist) +{ + if(!whitelist) return 0; + return sizeof(*whitelist) + regional_get_mem(whitelist->region); +} + +#endif /* CLIENT_SUBNET */ diff --git a/external/unbound/edns-subnet/subnet-whitelist.h b/external/unbound/edns-subnet/subnet-whitelist.h new file mode 100644 index 0000000..8cd03ab --- /dev/null +++ b/external/unbound/edns-subnet/subnet-whitelist.h @@ -0,0 +1,111 @@ +/* + * edns-subnet/subnet-whitelist.h - Hosts we actively try to send subnet option + * to. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * + * Keep track of the white listed servers and domain names for subnet option. + * Based on acl_list.c|h + */ + +#ifndef EDNSSUBNET_WHITELIST_H +#define EDNSSUBNET_WHITELIST_H +#include "util/storage/dnstree.h" + +struct config_file; +struct regional; + +/** + * ecs_whitelist structure + */ +struct ecs_whitelist { + /** regional for allocation */ + struct regional* region; + /** + * Tree of the address spans that are whitelisted. + * contents of type addr_tree_node. Each node is an address span + * Unbound will append subnet option for. + */ + rbtree_type upstream; + /** + * Tree of domain names for which Unbound will append an ECS option. + * rbtree of struct name_tree_node. + */ + rbtree_type dname; +}; + +/** + * Create ecs_whitelist structure + * @return new structure or NULL on error. + */ +struct ecs_whitelist* ecs_whitelist_create(void); + +/** + * Delete ecs_whitelist structure. + * @param whitelist: to delete. + */ +void ecs_whitelist_delete(struct ecs_whitelist* whitelist); + +/** + * Process ecs_whitelist config. + * @param whitelist: where to store. + * @param cfg: config options. + * @return 0 on error. + */ +int ecs_whitelist_apply_cfg(struct ecs_whitelist* whitelist, + struct config_file* cfg); + +/** + * See if an address or domain is whitelisted. + * @param whitelist: structure for address storage. + * @param addr: address to check + * @param addrlen: length of addr. + * @param qname: dname in query + * @param qname_len: length of dname + * @param qclass: class in query + * @return: true if the address is whitelisted for subnet option. + */ +int ecs_is_whitelisted(struct ecs_whitelist* whitelist, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* qname, + size_t qname_len, uint16_t qclass); + +/** + * Get memory used by ecs_whitelist structure. + * @param whitelist: structure for address storage. + * @return bytes in use. + */ +size_t ecs_whitelist_get_mem(struct ecs_whitelist* whitelist); + +#endif /* EDNSSUBNET_WHITELIST_H */ diff --git a/external/unbound/edns-subnet/subnetmod.c b/external/unbound/edns-subnet/subnetmod.c new file mode 100644 index 0000000..ae2523b --- /dev/null +++ b/external/unbound/edns-subnet/subnetmod.c @@ -0,0 +1,815 @@ +/* + * edns-subnet/subnetmod.c - edns subnet module. Must be called before validator + * and iterator. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /** + * \file + * subnet module for unbound. + */ + +#include "config.h" + +#ifdef CLIENT_SUBNET /* keeps splint happy */ + +#include "edns-subnet/subnetmod.h" +#include "edns-subnet/edns-subnet.h" +#include "edns-subnet/addrtree.h" +#include "edns-subnet/subnet-whitelist.h" + +#include "services/mesh.h" +#include "services/cache/dns.h" +#include "util/module.h" +#include "util/regional.h" +#include "util/storage/slabhash.h" +#include "util/config_file.h" +#include "util/data/msgreply.h" +#include "sldns/sbuffer.h" + +#define ECS_MAX_TREESIZE 100 + +/** externally called */ +void +subnet_data_delete(void *d, void *ATTR_UNUSED(arg)) +{ + struct subnet_msg_cache_data *r; + r = (struct subnet_msg_cache_data*)d; + addrtree_delete(r->tree4); + addrtree_delete(r->tree6); + free(r); +} + +/** externally called */ +size_t +msg_cache_sizefunc(void *k, void *d) +{ + struct msgreply_entry *q = (struct msgreply_entry*)k; + struct subnet_msg_cache_data *r = (struct subnet_msg_cache_data*)d; + size_t s = sizeof(struct msgreply_entry) + + sizeof(struct subnet_msg_cache_data) + + q->key.qname_len + lock_get_mem(&q->entry.lock); + s += addrtree_size(r->tree4); + s += addrtree_size(r->tree6); + return s; +} + +/** new query for ecs module */ +static int +subnet_new_qstate(struct module_qstate *qstate, int id) +{ + struct subnet_qstate *sq = (struct subnet_qstate*)regional_alloc( + qstate->region, sizeof(struct subnet_qstate)); + if(!sq) + return 0; + qstate->minfo[id] = sq; + memset(sq, 0, sizeof(*sq)); + return 1; +} + +/** Add ecs struct to edns list, after parsing it to wire format. */ +static void +ecs_opt_list_append(struct ecs_data* ecs, struct edns_option** list, + struct module_qstate *qstate) +{ + size_t sn_octs, sn_octs_remainder; + sldns_buffer* buf = qstate->env->scratch_buffer; + + if(ecs->subnet_validdata) { + log_assert(ecs->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4 || + ecs->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP6); + log_assert(ecs->subnet_addr_fam != EDNSSUBNET_ADDRFAM_IP4 || + ecs->subnet_source_mask <= INET_SIZE*8); + log_assert(ecs->subnet_addr_fam != EDNSSUBNET_ADDRFAM_IP6 || + ecs->subnet_source_mask <= INET6_SIZE*8); + + sn_octs = ecs->subnet_source_mask / 8; + sn_octs_remainder = + (size_t)((ecs->subnet_source_mask % 8)>0?1:0); + + log_assert(sn_octs + sn_octs_remainder <= INET6_SIZE); + + sldns_buffer_clear(buf); + sldns_buffer_write_u16(buf, ecs->subnet_addr_fam); + sldns_buffer_write_u8(buf, ecs->subnet_source_mask); + sldns_buffer_write_u8(buf, ecs->subnet_scope_mask); + sldns_buffer_write(buf, ecs->subnet_addr, sn_octs); + if(sn_octs_remainder) + sldns_buffer_write_u8(buf, ecs->subnet_addr[sn_octs] & + ~(0xFF >> (ecs->subnet_source_mask % 8))); + sldns_buffer_flip(buf); + + edns_opt_list_append(list, + qstate->env->cfg->client_subnet_opcode, + sn_octs + sn_octs_remainder + 4, + sldns_buffer_begin(buf), qstate->region); + } +} + +int ecs_whitelist_check(struct query_info* qinfo, + uint16_t ATTR_UNUSED(flags), struct module_qstate* qstate, + struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), + struct regional* ATTR_UNUSED(region), int id, void* ATTR_UNUSED(cbargs)) +{ + struct subnet_qstate *sq; + struct subnet_env *sn_env; + + if(!(sq=(struct subnet_qstate*)qstate->minfo[id])) + return 1; + sn_env = (struct subnet_env*)qstate->env->modinfo[id]; + + /* Cache by default, might be disabled after parsing EDNS option + * received from nameserver. */ + qstate->no_cache_store = 0; + + if(sq->ecs_server_out.subnet_validdata && ((sq->subnet_downstream && + qstate->env->cfg->client_subnet_always_forward) || + ecs_is_whitelisted(sn_env->whitelist, + addr, addrlen, qinfo->qname, qinfo->qname_len, + qinfo->qclass))) { + /* Address on whitelist or client query contains ECS option, we + * want to sent out ECS. Only add option if it is not already + * set. */ + if(!(sq->subnet_sent)) { + ecs_opt_list_append(&sq->ecs_server_out, + &qstate->edns_opts_back_out, qstate); + sq->subnet_sent = 1; + } + } + else if(sq->subnet_sent) { + /* Outgoing ECS option is set, but we don't want to sent it to + * this address, remove option. */ + edns_opt_list_remove(&qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode); + sq->subnet_sent = 0; + } + return 1; +} + + +int +subnetmod_init(struct module_env *env, int id) +{ + struct subnet_env *sn_env = (struct subnet_env*)calloc(1, + sizeof(struct subnet_env)); + if(!sn_env) { + log_err("malloc failure"); + return 0; + } + alloc_init(&sn_env->alloc, NULL, 0); + env->modinfo[id] = (void*)sn_env; + /* Copy msg_cache settings */ + sn_env->subnet_msg_cache = slabhash_create(env->cfg->msg_cache_slabs, + HASH_DEFAULT_STARTARRAY, env->cfg->msg_cache_size, + msg_cache_sizefunc, query_info_compare, query_entry_delete, + subnet_data_delete, NULL); + if(!sn_env->subnet_msg_cache) { + log_err("subnet: could not create cache"); + free(sn_env); + env->modinfo[id] = NULL; + return 0; + } + /* whitelist for edns subnet capable servers */ + sn_env->whitelist = ecs_whitelist_create(); + if(!sn_env->whitelist || + !ecs_whitelist_apply_cfg(sn_env->whitelist, env->cfg)) { + log_err("subnet: could not create ECS whitelist"); + slabhash_delete(sn_env->subnet_msg_cache); + free(sn_env); + env->modinfo[id] = NULL; + return 0; + } + + verbose(VERB_QUERY, "subnet: option registered (%d)", + env->cfg->client_subnet_opcode); + /* Create new mesh state for all queries. */ + env->unique_mesh = 1; + if(!edns_register_option(env->cfg->client_subnet_opcode, + env->cfg->client_subnet_always_forward /* bypass cache */, + 0 /* no aggregation */, env)) { + log_err("subnet: could not register opcode"); + ecs_whitelist_delete(sn_env->whitelist); + slabhash_delete(sn_env->subnet_msg_cache); + free(sn_env); + env->modinfo[id] = NULL; + return 0; + } + inplace_cb_register((void*)ecs_whitelist_check, inplace_cb_query, NULL, + env, id); + inplace_cb_register((void*)ecs_edns_back_parsed, + inplace_cb_edns_back_parsed, NULL, env, id); + inplace_cb_register((void*)ecs_query_response, + inplace_cb_query_response, NULL, env, id); + lock_rw_init(&sn_env->biglock); + return 1; +} + +void +subnetmod_deinit(struct module_env *env, int id) +{ + struct subnet_env *sn_env; + if(!env || !env->modinfo[id]) + return; + sn_env = (struct subnet_env*)env->modinfo[id]; + lock_rw_destroy(&sn_env->biglock); + inplace_cb_delete(env, inplace_cb_edns_back_parsed, id); + inplace_cb_delete(env, inplace_cb_query, id); + inplace_cb_delete(env, inplace_cb_query_response, id); + ecs_whitelist_delete(sn_env->whitelist); + slabhash_delete(sn_env->subnet_msg_cache); + alloc_clear(&sn_env->alloc); + free(sn_env); + env->modinfo[id] = NULL; +} + +/** Tells client that upstream has no/improper support */ +static void +cp_edns_bad_response(struct ecs_data *target, struct ecs_data *source) +{ + target->subnet_scope_mask = 0; + target->subnet_source_mask = source->subnet_source_mask; + target->subnet_addr_fam = source->subnet_addr_fam; + memcpy(target->subnet_addr, source->subnet_addr, INET6_SIZE); + target->subnet_validdata = 1; +} + +static void +delfunc(void *envptr, void *elemptr) { + struct reply_info *elem = (struct reply_info *)elemptr; + struct subnet_env *env = (struct subnet_env *)envptr; + reply_info_parsedelete(elem, &env->alloc); +} + +static size_t +sizefunc(void *elemptr) { + struct reply_info *elem = (struct reply_info *)elemptr; + return sizeof (struct reply_info) - sizeof (struct rrset_ref) + + elem->rrset_count * sizeof (struct rrset_ref) + + elem->rrset_count * sizeof (struct ub_packed_rrset_key *); +} + +/** + * Select tree from cache entry based on edns data. + * If for address family not present it will create a new one. + * NULL on failure to create. */ +static struct addrtree* +get_tree(struct subnet_msg_cache_data *data, struct ecs_data *edns, + struct subnet_env *env, struct config_file* cfg) +{ + struct addrtree *tree; + if (edns->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4) { + if (!data->tree4) + data->tree4 = addrtree_create( + cfg->max_client_subnet_ipv4, &delfunc, + &sizefunc, env, ECS_MAX_TREESIZE); + tree = data->tree4; + } else { + if (!data->tree6) + data->tree6 = addrtree_create( + cfg->max_client_subnet_ipv6, &delfunc, + &sizefunc, env, ECS_MAX_TREESIZE); + tree = data->tree6; + } + return tree; +} + +static void +update_cache(struct module_qstate *qstate, int id) +{ + struct msgreply_entry *mrep_entry; + struct addrtree *tree; + struct reply_info *rep; + struct query_info qinf; + struct subnet_env *sne = qstate->env->modinfo[id]; + struct subnet_qstate *sq = (struct subnet_qstate*)qstate->minfo[id]; + struct slabhash *subnet_msg_cache = sne->subnet_msg_cache; + struct ecs_data *edns = &sq->ecs_client_in; + size_t i; + + /* We already calculated hash upon lookup */ + hashvalue_type h = qstate->minfo[id] ? + ((struct subnet_qstate*)qstate->minfo[id])->qinfo_hash : + query_info_hash(&qstate->qinfo, qstate->query_flags); + /* Step 1, general qinfo lookup */ + struct lruhash_entry *lru_entry = slabhash_lookup(subnet_msg_cache, h, + &qstate->qinfo, 1); + int acquired_lock = (lru_entry != NULL); + if (!lru_entry) { + qinf = qstate->qinfo; + qinf.qname = memdup(qstate->qinfo.qname, + qstate->qinfo.qname_len); + if(!qinf.qname) { + log_err("memdup failed"); + return; + } + mrep_entry = query_info_entrysetup(&qinf, NULL, h); + free(qinf.qname); /* if qname 'consumed', it is set to NULL */ + if (!mrep_entry) { + log_err("query_info_entrysetup failed"); + return; + } + lru_entry = &mrep_entry->entry; + lock_rw_wrlock(&lru_entry->lock); + lru_entry->data = calloc(1, + sizeof(struct subnet_msg_cache_data)); + if (!lru_entry->data) { + log_err("malloc failed"); + return; + } + } + /* Step 2, find the correct tree */ + if (!(tree = get_tree(lru_entry->data, edns, sne, qstate->env->cfg))) { + if (acquired_lock) lock_rw_unlock(&lru_entry->lock); + log_err("Subnet cache insertion failed"); + return; + } + lock_quick_lock(&sne->alloc.lock); + rep = reply_info_copy(qstate->return_msg->rep, &sne->alloc, NULL); + lock_quick_unlock(&sne->alloc.lock); + if (!rep) { + if (acquired_lock) lock_rw_unlock(&lru_entry->lock); + log_err("Subnet cache insertion failed"); + return; + } + + /* store RRsets */ + for(i=0; irrset_count; i++) { + rep->ref[i].key = rep->rrsets[i]; + rep->ref[i].id = rep->rrsets[i]->id; + } + reply_info_set_ttls(rep, *qstate->env->now); + rep->flags |= (BIT_RA | BIT_QR); /* fix flags to be sensible for */ + rep->flags &= ~(BIT_AA | BIT_CD);/* a reply based on the cache */ + addrtree_insert(tree, (addrkey_t*)edns->subnet_addr, + edns->subnet_source_mask, + sq->ecs_server_in.subnet_scope_mask, rep, + rep->ttl, *qstate->env->now); + if (acquired_lock) { + lock_rw_unlock(&lru_entry->lock); + } else { + lock_rw_unlock(&lru_entry->lock); + slabhash_insert(subnet_msg_cache, h, lru_entry, lru_entry->data, + NULL); + } +} + +/** Lookup in cache and reply true iff reply is sent. */ +static int +lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq) +{ + struct lruhash_entry *e; + struct module_env *env = qstate->env; + struct subnet_env *sne = (struct subnet_env*)env->modinfo[id]; + hashvalue_type h = query_info_hash(&qstate->qinfo, qstate->query_flags); + struct subnet_msg_cache_data *data; + struct ecs_data *ecs = &sq->ecs_client_in; + struct addrtree *tree; + struct addrnode *node; + uint8_t scope; + + memset(&sq->ecs_client_out, 0, sizeof(sq->ecs_client_out)); + + if (sq) sq->qinfo_hash = h; /* Might be useful on cache miss */ + e = slabhash_lookup(sne->subnet_msg_cache, h, &qstate->qinfo, 1); + if (!e) return 0; /* qinfo not in cache */ + data = e->data; + tree = (ecs->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4)? + data->tree4 : data->tree6; + if (!tree) { /* qinfo in cache but not for this family */ + lock_rw_unlock(&e->lock); + return 0; + } + node = addrtree_find(tree, (addrkey_t*)ecs->subnet_addr, + ecs->subnet_source_mask, *env->now); + if (!node) { /* plain old cache miss */ + lock_rw_unlock(&e->lock); + return 0; + } + + qstate->return_msg = tomsg(NULL, &qstate->qinfo, + (struct reply_info *)node->elem, qstate->region, *env->now, + env->scratch); + scope = (uint8_t)node->scope; + lock_rw_unlock(&e->lock); + + if (!qstate->return_msg) { /* Failed allocation or expired TTL */ + return 0; + } + + if (sq->subnet_downstream) { /* relay to interested client */ + sq->ecs_client_out.subnet_scope_mask = scope; + sq->ecs_client_out.subnet_addr_fam = ecs->subnet_addr_fam; + sq->ecs_client_out.subnet_source_mask = ecs->subnet_source_mask; + memcpy(&sq->ecs_client_out.subnet_addr, &ecs->subnet_addr, + INET6_SIZE); + sq->ecs_client_out.subnet_validdata = 1; + } + return 1; +} + +/** + * Test first bits of addresses for equality. Caller is responsible + * for making sure that both a and b are at least net/8 octets long. + * @param a: first address. + * @param a: seconds address. + * @param net: Number of bits to test. + * @return: 1 if equal, 0 otherwise. + */ +static int +common_prefix(uint8_t *a, uint8_t *b, uint8_t net) +{ + size_t n = (size_t)net / 8; + return !memcmp(a, b, n) && ((net % 8) == 0 || a[n] == b[n]); +} + +static enum module_ext_state +eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) +{ + struct subnet_env *sne = qstate->env->modinfo[id]; + + struct ecs_data *c_in = &sq->ecs_client_in; /* rcvd from client */ + struct ecs_data *c_out = &sq->ecs_client_out;/* will send to client */ + struct ecs_data *s_in = &sq->ecs_server_in; /* rcvd from auth */ + struct ecs_data *s_out = &sq->ecs_server_out;/* sent to auth */ + + memset(c_out, 0, sizeof(*c_out)); + + if (!qstate->return_msg) return module_error; + + /* We have not asked for subnet data */ + if (!sq->subnet_sent) { + if (s_in->subnet_validdata) + verbose(VERB_QUERY, "subnet: received spurious data"); + if (sq->subnet_downstream) /* Copy back to client */ + cp_edns_bad_response(c_out, c_in); + return module_finished; + } + + /* subnet sent but nothing came back */ + if (!s_in->subnet_validdata) { + /* The authority indicated no support for edns subnet. As a + * consequence the answer ended up in the regular cache. It + * is still usefull to put it in the edns subnet cache for + * when a client explicitly asks for subnet specific answer. */ + verbose(VERB_QUERY, "subnet: Authority indicates no support"); + lock_rw_wrlock(&sne->biglock); + update_cache(qstate, id); + lock_rw_unlock(&sne->biglock); + if (sq->subnet_downstream) + cp_edns_bad_response(c_out, c_in); + return module_finished; + } + + /* Being here means we have asked for and got a subnet specific + * answer. Also, the answer from the authority is not yet cached + * anywhere. */ + + /* can we accept response? */ + if(s_out->subnet_addr_fam != s_in->subnet_addr_fam || + s_out->subnet_source_mask != s_in->subnet_source_mask || + !common_prefix(s_out->subnet_addr, s_in->subnet_addr, + s_out->subnet_source_mask)) + { + /* we can not accept, restart query without option */ + verbose(VERB_QUERY, "subnet: forged data"); + s_out->subnet_validdata = 0; + (void)edns_opt_list_remove(&qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode); + sq->subnet_sent = 0; + return module_restart_next; + } + + lock_rw_wrlock(&sne->biglock); + update_cache(qstate, id); + lock_rw_unlock(&sne->biglock); + + if (sq->subnet_downstream) { + /* Client wants to see the answer, echo option back + * and adjust the scope. */ + c_out->subnet_addr_fam = c_in->subnet_addr_fam; + c_out->subnet_source_mask = c_in->subnet_source_mask; + memcpy(&c_out->subnet_addr, &c_in->subnet_addr, INET6_SIZE); + c_out->subnet_scope_mask = s_in->subnet_scope_mask; + c_out->subnet_validdata = 1; + } + return module_finished; +} + +/** Parse EDNS opt data containing ECS */ +static int +parse_subnet_option(struct edns_option* ecs_option, struct ecs_data* ecs) +{ + memset(ecs, 0, sizeof(*ecs)); + if (ecs_option->opt_len < 4) + return 0; + + ecs->subnet_addr_fam = sldns_read_uint16(ecs_option->opt_data); + ecs->subnet_source_mask = ecs_option->opt_data[2]; + ecs->subnet_scope_mask = ecs_option->opt_data[3]; + /* remaining bytes indicate address */ + + /* validate input*/ + /* option length matches calculated length? */ + if (ecs_option->opt_len != (size_t)((ecs->subnet_source_mask+7)/8 + 4)) + return 0; + if (ecs_option->opt_len - 4 > INET6_SIZE || ecs_option->opt_len == 0) + return 0; + if (ecs->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4) { + if (ecs->subnet_source_mask > 32 || ecs->subnet_scope_mask > 32) + return 0; + } else if (ecs->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP6) { + if (ecs->subnet_source_mask > 128 || + ecs->subnet_scope_mask > 128) + return 0; + } else + return 0; + + /* valid ECS data, write to ecs_data */ + if (copy_clear(ecs->subnet_addr, INET6_SIZE, ecs_option->opt_data + 4, + ecs_option->opt_len - 4, ecs->subnet_source_mask)) + return 0; + ecs->subnet_validdata = 1; + return 1; +} + +static void +subnet_option_from_ss(struct sockaddr_storage *ss, struct ecs_data* ecs, + struct config_file* cfg) +{ + void* sinaddr; + + /* Construct subnet option from original query */ + if(((struct sockaddr_in*)ss)->sin_family == AF_INET) { + ecs->subnet_source_mask = cfg->max_client_subnet_ipv4; + ecs->subnet_addr_fam = EDNSSUBNET_ADDRFAM_IP4; + sinaddr = &((struct sockaddr_in*)ss)->sin_addr; + if (!copy_clear( ecs->subnet_addr, INET6_SIZE, + (uint8_t *)sinaddr, INET_SIZE, + ecs->subnet_source_mask)) { + ecs->subnet_validdata = 1; + } + } +#ifdef INET6 + else { + ecs->subnet_source_mask = cfg->max_client_subnet_ipv6; + ecs->subnet_addr_fam = EDNSSUBNET_ADDRFAM_IP6; + sinaddr = &((struct sockaddr_in6*)ss)->sin6_addr; + if (!copy_clear( ecs->subnet_addr, INET6_SIZE, + (uint8_t *)sinaddr, INET6_SIZE, + ecs->subnet_source_mask)) { + ecs->subnet_validdata = 1; + } + } +#else + /* We don't know how to handle ip6, just pass */ +#endif /* INET6 */ +} + +int +ecs_query_response(struct module_qstate* qstate, struct dns_msg* response, + int id, void* ATTR_UNUSED(cbargs)) +{ + struct subnet_qstate *sq; + + if(!response || !(sq=(struct subnet_qstate*)qstate->minfo[id])) + return 1; + + if(sq->subnet_sent && + FLAGS_GET_RCODE(response->rep->flags) == LDNS_RCODE_REFUSED) { + /* REFUSED response to ECS query, remove ECS option. */ + edns_opt_list_remove(&qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode); + sq->subnet_sent = 0; + memset(&sq->ecs_server_out, 0, sizeof(sq->ecs_server_out)); + } + return 1; +} + +int +ecs_edns_back_parsed(struct module_qstate* qstate, int id, + void* ATTR_UNUSED(cbargs)) +{ + struct subnet_qstate *sq; + struct edns_option* ecs_opt; + + if(!(sq=(struct subnet_qstate*)qstate->minfo[id])) + return 1; + if((ecs_opt = edns_opt_list_find( + qstate->edns_opts_back_in, + qstate->env->cfg->client_subnet_opcode))) { + if(parse_subnet_option(ecs_opt, &sq->ecs_server_in) && + sq->subnet_sent && + sq->ecs_server_in.subnet_validdata) + /* Only skip global cache store if we sent an ECS option + * and received one back. Answers from non-whitelisted + * servers will end up in global cache. Answers for + * queries with 0 source will not (unless nameserver + * does not support ECS). */ + qstate->no_cache_store = 1; + } + + return 1; +} + +void +subnetmod_operate(struct module_qstate *qstate, enum module_ev event, + int id, struct outbound_entry* outbound) +{ + struct subnet_env *sne = qstate->env->modinfo[id]; + struct subnet_qstate *sq = (struct subnet_qstate*)qstate->minfo[id]; + + verbose(VERB_QUERY, "subnet[module %d] operate: extstate:%s " + "event:%s", id, strextstate(qstate->ext_state[id]), + strmodulevent(event)); + log_query_info(VERB_QUERY, "subnet operate: query", &qstate->qinfo); + + if((event == module_event_new || event == module_event_pass) && + sq == NULL) { + struct edns_option* ecs_opt; + if(!subnet_new_qstate(qstate, id)) { + qstate->return_msg = NULL; + qstate->ext_state[id] = module_finished; + return; + } + + sq = (struct subnet_qstate*)qstate->minfo[id]; + + if((ecs_opt = edns_opt_list_find( + qstate->edns_opts_front_in, + qstate->env->cfg->client_subnet_opcode))) { + if(!parse_subnet_option(ecs_opt, &sq->ecs_client_in)) { + /* Wrongly formatted ECS option. RFC mandates to + * return FORMERROR. */ + qstate->return_rcode = LDNS_RCODE_FORMERR; + qstate->ext_state[id] = module_finished; + return; + } + sq->subnet_downstream = 1; + } + else if(qstate->mesh_info->reply_list) { + subnet_option_from_ss( + &qstate->mesh_info->reply_list->query_reply.addr, + &sq->ecs_client_in, qstate->env->cfg); + } + + if(sq->ecs_client_in.subnet_validdata == 0) { + /* No clients are interested in result or we could not + * parse it, we don't do client subnet */ + sq->ecs_server_out.subnet_validdata = 0; + verbose(VERB_ALGO, "subnet: pass to next module"); + qstate->ext_state[id] = module_wait_module; + return; + } + + lock_rw_wrlock(&sne->biglock); + if (lookup_and_reply(qstate, id, sq)) { + lock_rw_unlock(&sne->biglock); + verbose(VERB_QUERY, "subnet: answered from cache"); + qstate->ext_state[id] = module_finished; + + ecs_opt_list_append(&sq->ecs_client_out, + &qstate->edns_opts_front_out, qstate); + return; + } + lock_rw_unlock(&sne->biglock); + + sq->ecs_server_out.subnet_addr_fam = + sq->ecs_client_in.subnet_addr_fam; + sq->ecs_server_out.subnet_source_mask = + sq->ecs_client_in.subnet_source_mask; + /* Limit source prefix to configured maximum */ + if(sq->ecs_server_out.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4 + && sq->ecs_server_out.subnet_source_mask > + qstate->env->cfg->max_client_subnet_ipv4) + sq->ecs_server_out.subnet_source_mask = + qstate->env->cfg->max_client_subnet_ipv4; + else if(sq->ecs_server_out.subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP6 + && sq->ecs_server_out.subnet_source_mask > + qstate->env->cfg->max_client_subnet_ipv6) + sq->ecs_server_out.subnet_source_mask = + qstate->env->cfg->max_client_subnet_ipv6; + /* Safe to copy completely, even if the source is limited by the + * configuration. ecs_opt_list_append() will limit the address. + * */ + memcpy(&sq->ecs_server_out.subnet_addr, + sq->ecs_client_in.subnet_addr, INET6_SIZE); + sq->ecs_server_out.subnet_scope_mask = 0; + sq->ecs_server_out.subnet_validdata = 1; + if(sq->ecs_server_out.subnet_source_mask != 0 && + qstate->env->cfg->client_subnet_always_forward && + sq->subnet_downstream) + /* ECS specific data required, do not look at the global + * cache in other modules. */ + qstate->no_cache_lookup = 1; + + /* pass request to next module */ + verbose(VERB_ALGO, + "subnet: not found in cache. pass to next module"); + qstate->ext_state[id] = module_wait_module; + return; + } + /* Query handed back by next module, we have a 'final' answer */ + if(sq && event == module_event_moddone) { + qstate->ext_state[id] = eval_response(qstate, id, sq); + if(qstate->ext_state[id] == module_finished) { + ecs_opt_list_append(&sq->ecs_client_out, + &qstate->edns_opts_front_out, qstate); + } + return; + } + if(sq && outbound) { + return; + } + /* We are being revisited */ + if(event == module_event_pass || event == module_event_new) { + /* Just pass it on, we already did the work */ + verbose(VERB_ALGO, "subnet: pass to next module"); + qstate->ext_state[id] = module_wait_module; + return; + } + if(!sq && (event == module_event_moddone)) { + /* during priming, module done but we never started */ + qstate->ext_state[id] = module_finished; + return; + } + log_err("subnet: bad event %s", strmodulevent(event)); + qstate->ext_state[id] = module_error; + return; +} + +void +subnetmod_clear(struct module_qstate *ATTR_UNUSED(qstate), + int ATTR_UNUSED(id)) +{ + /* qstate has no data outside region */ +} + +void +subnetmod_inform_super(struct module_qstate *ATTR_UNUSED(qstate), + int ATTR_UNUSED(id), struct module_qstate *ATTR_UNUSED(super)) +{ + /* Not used */ +} + +size_t +subnetmod_get_mem(struct module_env *env, int id) +{ + struct subnet_env *sn_env = env->modinfo[id]; + if (!sn_env) return 0; + return sizeof(*sn_env) + + slabhash_get_mem(sn_env->subnet_msg_cache) + + ecs_whitelist_get_mem(sn_env->whitelist); +} + +/** + * The module function block + */ +static struct module_func_block subnetmod_block = { + "subnet", &subnetmod_init, &subnetmod_deinit, &subnetmod_operate, + &subnetmod_inform_super, &subnetmod_clear, &subnetmod_get_mem +}; + +struct module_func_block* +subnetmod_get_funcblock(void) +{ + return &subnetmod_block; +} + +/** Wrappers for static functions to unit test */ +size_t +unittest_wrapper_subnetmod_sizefunc(void *elemptr) +{ + return sizefunc(elemptr); +} + +#endif /* CLIENT_SUBNET */ diff --git a/external/unbound/edns-subnet/subnetmod.h b/external/unbound/edns-subnet/subnetmod.h new file mode 100644 index 0000000..c7f5632 --- /dev/null +++ b/external/unbound/edns-subnet/subnetmod.h @@ -0,0 +1,130 @@ +/* + * edns-subnet/subnetmod.h - edns subnet module. Must be called before validator + * and iterator. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * subnet module for unbound. + */ + +#ifndef SUBNETMOD_H +#define SUBNETMOD_H +#include "util/module.h" +#include "services/outbound_list.h" +#include "util/alloc.h" +#include "util/net_help.h" +#include "util/storage/slabhash.h" +#include "edns-subnet/addrtree.h" +#include "edns-subnet/edns-subnet.h" + +/** + * Global state for the subnet module. + */ +struct subnet_env { + /** shared message cache + * key: struct query_info* + * data: struct subnet_msg_cache_data* */ + struct slabhash* subnet_msg_cache; + /** access control, which upstream servers we send client address */ + struct ecs_whitelist* whitelist; + /** allocation service */ + struct alloc_cache alloc; + lock_rw_type biglock; +}; + +struct subnet_msg_cache_data { + struct addrtree* tree4; + struct addrtree* tree6; +}; + +struct subnet_qstate { + /** We need the hash for both cache lookup and insert */ + hashvalue_type qinfo_hash; + /** ecs_data for client communication */ + struct ecs_data ecs_client_in; + struct ecs_data ecs_client_out; + /** ecss data for server communication */ + struct ecs_data ecs_server_in; + struct ecs_data ecs_server_out; + int subnet_downstream; + int subnet_sent; +}; + +void subnet_data_delete(void* d, void* ATTR_UNUSED(arg)); +size_t msg_cache_sizefunc(void* k, void* d); + +/** + * Get the module function block. + * @return: function block with function pointers to module methods. + */ +struct module_func_block* subnetmod_get_funcblock(void); + +/** subnet module init */ +int subnetmod_init(struct module_env* env, int id); + +/** subnet module deinit */ +void subnetmod_deinit(struct module_env* env, int id); + +/** subnet module operate on a query */ +void subnetmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); + +/** subnet module */ +void subnetmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); + +/** subnet module cleanup query state */ +void subnetmod_clear(struct module_qstate* qstate, int id); + +/** subnet module alloc size routine */ +size_t subnetmod_get_mem(struct module_env* env, int id); + +/** Wrappers for static functions to unit test */ +size_t unittest_wrapper_subnetmod_sizefunc(void *elemptr); + +/** Whitelist check, called just before query is sent upstream. */ +int ecs_whitelist_check(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, + struct regional* region, int id, void* cbargs); + +/** Check whether response from server contains ECS record, if so, skip cache + * store. Called just after parsing EDNS data from server. */ +int ecs_edns_back_parsed(struct module_qstate* qstate, int id, void* cbargs); + +/** Remove ECS record from back_out when query resulted in REFUSED response. */ +int ecs_query_response(struct module_qstate* qstate, struct dns_msg* response, + int id, void* cbargs); + +#endif /* SUBNETMOD_H */ diff --git a/external/unbound/install-sh b/external/unbound/install-sh index 377bb86..0b0fdcb 100644 --- a/external/unbound/install-sh +++ b/external/unbound/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-11-20.07; # UTC +scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -207,6 +203,15 @@ if test $# -eq 0; then exit 0 fi +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -223,16 +228,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -269,41 +274,15 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,74 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +370,51 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +449,12 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +467,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff --git a/external/unbound/ipsecmod/ipsecmod-whitelist.c b/external/unbound/ipsecmod/ipsecmod-whitelist.c new file mode 100644 index 0000000..c2b1f5d --- /dev/null +++ b/external/unbound/ipsecmod/ipsecmod-whitelist.c @@ -0,0 +1,158 @@ +/* + * ipsecmod/ipsecmod-whitelist.h - White listed domains for the ipsecmod to + * operate on. + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * + * Keep track of the white listed domains for ipsecmod. + */ + +#include "config.h" + +#ifdef USE_IPSECMOD +#include "ipsecmod/ipsecmod.h" +#include "ipsecmod/ipsecmod-whitelist.h" +#include "util/regional.h" +#include "util/log.h" +#include "util/config_file.h" +#include "util/rbtree.h" +#include "util/data/dname.h" +#include "util/storage/dnstree.h" +#include "sldns/str2wire.h" + +/** Apply ipsecmod-whitelist string. */ +static int +whitelist_str_cfg(rbtree_type* whitelist, const char* name) +{ + struct name_tree_node* n; + size_t len; + uint8_t* nm = sldns_str2wire_dname(name, &len); + if(!nm) { + log_err("ipsecmod: could not parse %s for whitelist.", name); + return 0; + } + n = (struct name_tree_node*)calloc(1, sizeof(*n)); + if(!n) { + log_err("ipsecmod: out of memory while creating whitelist."); + free(nm); + return 0; + } + n->node.key = n; + n->name = nm; + n->len = len; + n->labs = dname_count_labels(nm); + n->dclass = LDNS_RR_CLASS_IN; + if(!name_tree_insert(whitelist, n, nm, len, n->labs, n->dclass)) { + /* duplicate element ignored, idempotent */ + free(n->name); + free(n); + } + return 1; +} + +/** Read ipsecmod-whitelist config. */ +static int +read_whitelist(rbtree_type* whitelist, struct config_file* cfg) +{ + struct config_strlist* p; + for(p = cfg->ipsecmod_whitelist; p; p = p->next) { + log_assert(p->str); + if(!whitelist_str_cfg(whitelist, p->str)) + return 0; + } + return 1; +} + +int +ipsecmod_whitelist_apply_cfg(struct ipsecmod_env* ie, + struct config_file* cfg) +{ + ie->whitelist = rbtree_create(name_tree_compare); + if(!read_whitelist(ie->whitelist, cfg)) + return 0; + name_tree_init_parents(ie->whitelist); + return 1; +} + +/** Delete ipsecmod_env->whitelist element. */ +static void +whitelist_free(struct rbnode_type* n, void* ATTR_UNUSED(d)) +{ + if(n) { + free(((struct name_tree_node*)n)->name); + free(n); + } +} + +/** Get memory usage of ipsecmod_env->whitelist element. */ +static void +whitelist_get_mem(struct rbnode_type* n, void* arg) +{ + struct name_tree_node* node = (struct name_tree_node*)n; + size_t* size = (size_t*) arg; + if(node) { + *size += sizeof(node) + node->len; + } +} + +void +ipsecmod_whitelist_delete(rbtree_type* whitelist) +{ + if(whitelist) { + traverse_postorder(whitelist, whitelist_free, NULL); + free(whitelist); + } +} + +int +ipsecmod_domain_is_whitelisted(struct ipsecmod_env* ie, uint8_t* dname, + size_t dname_len, uint16_t qclass) +{ + if(!ie->whitelist) return 1; /* No whitelist, treat as whitelisted. */ + return name_tree_lookup(ie->whitelist, dname, dname_len, + dname_count_labels(dname), qclass) != NULL; +} + +size_t +ipsecmod_whitelist_get_mem(rbtree_type* whitelist) +{ + size_t size = 0; + if(whitelist) { + traverse_postorder(whitelist, whitelist_get_mem, &size); + } + return size; +} + +#endif /* USE_IPSECMOD */ diff --git a/external/unbound/ipsecmod/ipsecmod-whitelist.h b/external/unbound/ipsecmod/ipsecmod-whitelist.h new file mode 100644 index 0000000..d988688 --- /dev/null +++ b/external/unbound/ipsecmod/ipsecmod-whitelist.h @@ -0,0 +1,82 @@ +/* + * ipsecmod/ipsecmod-whitelist.h - White listed domains for the ipsecmod to + * operate on. + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * + * Keep track of the white listed domains for ipsecmod. + */ + +#ifndef IPSECMOD_WHITELIST_H +#define IPSECMOD_WHITELIST_H +#include "util/storage/dnstree.h" + +struct config_file; +struct regional; + +/** + * Process ipsecmod_whitelist config. + * @param ie: ipsecmod environment. + * @param cfg: config options. + * @return 0 on error. + */ +int ipsecmod_whitelist_apply_cfg(struct ipsecmod_env* ie, + struct config_file* cfg); + +/** + * Delete the ipsecmod whitelist. + * @param whitelist: ipsecmod whitelist. + */ +void ipsecmod_whitelist_delete(rbtree_type* whitelist); + +/** + * See if a domain is whitelisted. + * @param ie: ipsecmod environment. + * @param dname: domain name to check. + * @param dname_len: length of domain name. + * @param qclass: query CLASS. + * @return: true if the domain is whitelisted for the ipsecmod. + */ +int ipsecmod_domain_is_whitelisted(struct ipsecmod_env* ie, uint8_t* dname, + size_t dname_len, uint16_t qclass); + +/** + * Get memory used by ipsecmod whitelist. + * @param whitelist: structure for domain storage. + * @return bytes in use. + */ +size_t ipsecmod_whitelist_get_mem(rbtree_type* whitelist); + +#endif /* IPSECMOD_WHITELIST_H */ diff --git a/external/unbound/ipsecmod/ipsecmod.c b/external/unbound/ipsecmod/ipsecmod.c new file mode 100644 index 0000000..3e4ee6a --- /dev/null +++ b/external/unbound/ipsecmod/ipsecmod.c @@ -0,0 +1,515 @@ +/* + * ipsecmod/ipsecmod.c - facilitate opportunistic IPsec module + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that facilitates opportunistic IPsec. It does so + * by also quering for the IPSECKEY for A/AAAA queries and calling a + * configurable hook (eg. signaling an IKE daemon) before replying. + */ + +#include "config.h" +#ifdef USE_IPSECMOD +#include "ipsecmod/ipsecmod.h" +#include "ipsecmod/ipsecmod-whitelist.h" +#include "util/fptr_wlist.h" +#include "util/regional.h" +#include "util/net_help.h" +#include "util/config_file.h" +#include "services/cache/dns.h" +#include "sldns/wire2str.h" + +/** Apply configuration to ipsecmod module 'global' state. */ +static int +ipsecmod_apply_cfg(struct ipsecmod_env* ipsecmod_env, struct config_file* cfg) +{ + if(!cfg->ipsecmod_hook || (cfg->ipsecmod_hook && !cfg->ipsecmod_hook[0])) { + log_err("ipsecmod: missing ipsecmod-hook."); + return 0; + } + if(cfg->ipsecmod_whitelist && + !ipsecmod_whitelist_apply_cfg(ipsecmod_env, cfg)) + return 0; + return 1; +} + +int +ipsecmod_init(struct module_env* env, int id) +{ + struct ipsecmod_env* ipsecmod_env = (struct ipsecmod_env*)calloc(1, + sizeof(struct ipsecmod_env)); + if(!ipsecmod_env) { + log_err("malloc failure"); + return 0; + } + env->modinfo[id] = (void*)ipsecmod_env; + ipsecmod_env->whitelist = NULL; + if(!ipsecmod_apply_cfg(ipsecmod_env, env->cfg)) { + log_err("ipsecmod: could not apply configuration settings."); + return 0; + } + return 1; +} + +void +ipsecmod_deinit(struct module_env* env, int id) +{ + struct ipsecmod_env* ipsecmod_env; + if(!env || !env->modinfo[id]) + return; + ipsecmod_env = (struct ipsecmod_env*)env->modinfo[id]; + /* Free contents. */ + ipsecmod_whitelist_delete(ipsecmod_env->whitelist); + free(ipsecmod_env); + env->modinfo[id] = NULL; +} + +/** New query for ipsecmod. */ +static int +ipsecmod_new(struct module_qstate* qstate, int id) +{ + struct ipsecmod_qstate* iq = (struct ipsecmod_qstate*)regional_alloc( + qstate->region, sizeof(struct ipsecmod_qstate)); + memset(iq, 0, sizeof(*iq)); + qstate->minfo[id] = iq; + if(!iq) + return 0; + /* Initialise it. */ + iq->enabled = qstate->env->cfg->ipsecmod_enabled; + iq->is_whitelisted = ipsecmod_domain_is_whitelisted( + (struct ipsecmod_env*)qstate->env->modinfo[id], qstate->qinfo.qname, + qstate->qinfo.qname_len, qstate->qinfo.qclass); + return 1; +} + +/** + * Exit module with an error status. + * @param qstate: query state + * @param id: module id. + */ +static void +ipsecmod_error(struct module_qstate* qstate, int id) +{ + qstate->ext_state[id] = module_error; + qstate->return_rcode = LDNS_RCODE_SERVFAIL; +} + +/** + * Generate a request for the IPSECKEY. + * + * @param qstate: query state that is the parent. + * @param id: module id. + * @param name: what name to query for. + * @param namelen: length of name. + * @param qtype: query type. + * @param qclass: query class. + * @param flags: additional flags, such as the CD bit (BIT_CD), or 0. + * @return false on alloc failure. + */ +static int +generate_request(struct module_qstate* qstate, int id, uint8_t* name, + size_t namelen, uint16_t qtype, uint16_t qclass, uint16_t flags) +{ + struct module_qstate* newq; + struct query_info ask; + ask.qname = name; + ask.qname_len = namelen; + ask.qtype = qtype; + ask.qclass = qclass; + ask.local_alias = NULL; + log_query_info(VERB_ALGO, "ipsecmod: generate request", &ask); + fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub)); + if(!(*qstate->env->attach_sub)(qstate, &ask, + (uint16_t)(BIT_RD|flags), 0, 0, &newq)){ + log_err("Could not generate request: out of memory"); + return 0; + } + qstate->ext_state[id] = module_wait_subquery; + return 1; +} + +/** + * Prepare the data and call the hook. + * + * @param qstate: query state. + * @param iq: ipsecmod qstate. + * @param ie: ipsecmod environment. + * @return true on success, false otherwise. + */ +static int +call_hook(struct module_qstate* qstate, struct ipsecmod_qstate* iq, + struct ipsecmod_env* ATTR_UNUSED(ie)) +{ + size_t slen, tempdata_len, tempstring_len, i; + char str[65535], *s, *tempstring; + int w; + struct ub_packed_rrset_key* rrset_key; + struct packed_rrset_data* rrset_data; + uint8_t *tempdata; + + /* Check if a shell is available */ + if(system(NULL) == 0) { + log_err("ipsecmod: no shell available for ipsecmod-hook"); + return 0; + } + + /* Zero the buffer. */ + s = str; + slen = sizeof(str); + memset(s, 0, slen); + + /* Copy the hook into the buffer. */ + sldns_str_print(&s, &slen, "%s", qstate->env->cfg->ipsecmod_hook); + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + /* Copy the qname into the buffer. */ + tempstring = sldns_wire2str_dname(qstate->qinfo.qname, + qstate->qinfo.qname_len); + if(!tempstring) { + log_err("ipsecmod: out of memory when calling the hook"); + return 0; + } + sldns_str_print(&s, &slen, "\"%s\"", tempstring); + free(tempstring); + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + /* Copy the IPSECKEY TTL into the buffer. */ + rrset_data = (struct packed_rrset_data*)iq->ipseckey_rrset->entry.data; + sldns_str_print(&s, &slen, "\"%ld\"", (long)rrset_data->ttl); + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + /* Copy the A/AAAA record(s) into the buffer. Start and end this section + * with a double quote. */ + rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo, + qstate->return_msg->rep); + rrset_data = (struct packed_rrset_data*)rrset_key->entry.data; + sldns_str_print(&s, &slen, "\""); + for(i=0; icount; i++) { + if(i > 0) { + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + } + /* Ignore the first two bytes, they are the rr_data len. */ + w = sldns_wire2str_rdata_buf(rrset_data->rr_data[i] + 2, + rrset_data->rr_len[i] - 2, s, slen, qstate->qinfo.qtype); + if(w < 0) { + /* Error in printout. */ + return -1; + } else if((size_t)w >= slen) { + s = NULL; /* We do not want str to point outside of buffer. */ + slen = 0; + return -1; + } else { + s += w; + slen -= w; + } + } + sldns_str_print(&s, &slen, "\""); + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + /* Copy the IPSECKEY record(s) into the buffer. Start and end this section + * with a double quote. */ + sldns_str_print(&s, &slen, "\""); + rrset_data = (struct packed_rrset_data*)iq->ipseckey_rrset->entry.data; + for(i=0; icount; i++) { + if(i > 0) { + /* Put space into the buffer. */ + sldns_str_print(&s, &slen, " "); + } + /* Ignore the first two bytes, they are the rr_data len. */ + tempdata = rrset_data->rr_data[i] + 2; + tempdata_len = rrset_data->rr_len[i] - 2; + /* Save the buffer pointers. */ + tempstring = s; tempstring_len = slen; + w = sldns_wire2str_ipseckey_scan(&tempdata, &tempdata_len, &s, &slen, + NULL, 0); + /* There was an error when parsing the IPSECKEY; reset the buffer + * pointers to their previous values. */ + if(w == -1){ + s = tempstring; slen = tempstring_len; + } + } + sldns_str_print(&s, &slen, "\""); + verbose(VERB_ALGO, "ipsecmod: hook command: '%s'", str); + /* ipsecmod-hook should return 0 on success. */ + if(system(str) != 0) + return 0; + return 1; +} + +/** + * Handle an ipsecmod module event with a query + * @param qstate: query state (from the mesh), passed between modules. + * contains qstate->env module environment with global caches and so on. + * @param iq: query state specific for this module. per-query. + * @param ie: environment specific for this module. global. + * @param id: module id. + */ +static void +ipsecmod_handle_query(struct module_qstate* qstate, + struct ipsecmod_qstate* iq, struct ipsecmod_env* ie, int id) +{ + struct ub_packed_rrset_key* rrset_key; + struct packed_rrset_data* rrset_data; + size_t i; + /* Pass to next module if we are not enabled and whitelisted. */ + if(!(iq->enabled && iq->is_whitelisted)) { + qstate->ext_state[id] = module_wait_module; + return; + } + /* New query, check if the query is for an A/AAAA record and disable + * caching for other modules. */ + if(!iq->ipseckey_done) { + if(qstate->qinfo.qtype == LDNS_RR_TYPE_A || + qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) { + char type[16]; + sldns_wire2str_type_buf(qstate->qinfo.qtype, type, + sizeof(type)); + verbose(VERB_ALGO, "ipsecmod: query for %s; engaging", + type); + qstate->no_cache_store = 1; + } + /* Pass request to next module. */ + qstate->ext_state[id] = module_wait_module; + return; + } + /* IPSECKEY subquery is finished. */ + /* We have an IPSECKEY answer. */ + if(iq->ipseckey_rrset) { + rrset_data = (struct packed_rrset_data*)iq->ipseckey_rrset->entry.data; + if(rrset_data) { + /* If bogus return SERVFAIL. */ + if(!qstate->env->cfg->ipsecmod_ignore_bogus && + rrset_data->security == sec_status_bogus) { + log_err("ipsecmod: bogus IPSECKEY"); + ipsecmod_error(qstate, id); + return; + } + /* We have a valid IPSECKEY reply, call hook. */ + if(!call_hook(qstate, iq, ie) && + qstate->env->cfg->ipsecmod_strict) { + log_err("ipsecmod: ipsecmod-hook failed"); + ipsecmod_error(qstate, id); + return; + } + /* Make sure the A/AAAA's TTL is equal/less than the + * ipsecmod_max_ttl. */ + rrset_key = reply_find_answer_rrset(&qstate->return_msg->qinfo, + qstate->return_msg->rep); + rrset_data = (struct packed_rrset_data*)rrset_key->entry.data; + if(rrset_data->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) { + /* Update TTL for rrset to fixed value. */ + rrset_data->ttl = qstate->env->cfg->ipsecmod_max_ttl; + for(i=0; icount+rrset_data->rrsig_count; i++) + rrset_data->rr_ttl[i] = qstate->env->cfg->ipsecmod_max_ttl; + /* Also update reply_info's TTL */ + if(qstate->return_msg->rep->ttl > (time_t)qstate->env->cfg->ipsecmod_max_ttl) { + qstate->return_msg->rep->ttl = + qstate->env->cfg->ipsecmod_max_ttl; + qstate->return_msg->rep->prefetch_ttl = PREFETCH_TTL_CALC( + qstate->return_msg->rep->ttl); + } + } + } + } + /* Store A/AAAA in cache. */ + if(!dns_cache_store(qstate->env, &qstate->qinfo, + qstate->return_msg->rep, 0, qstate->prefetch_leeway, + 0, qstate->region, qstate->query_flags)) { + log_err("ipsecmod: out of memory caching record"); + } + qstate->ext_state[id] = module_finished; +} + +/** + * Handle an ipsecmod module event with a response from the iterator. + * @param qstate: query state (from the mesh), passed between modules. + * contains qstate->env module environment with global caches and so on. + * @param iq: query state specific for this module. per-query. + * @param ie: environment specific for this module. global. + * @param id: module id. + */ +static void +ipsecmod_handle_response(struct module_qstate* qstate, + struct ipsecmod_qstate* ATTR_UNUSED(iq), + struct ipsecmod_env* ATTR_UNUSED(ie), int id) +{ + /* Pass to previous module if we are not enabled and whitelisted. */ + if(!(iq->enabled && iq->is_whitelisted)) { + qstate->ext_state[id] = module_finished; + return; + } + /* check if the response is for an A/AAAA query. */ + if((qstate->qinfo.qtype == LDNS_RR_TYPE_A || + qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) && + /* check that we had an answer for the A/AAAA query. */ + qstate->return_msg && + reply_find_answer_rrset(&qstate->return_msg->qinfo, + qstate->return_msg->rep) && + /* check that another module didn't SERVFAIL. */ + qstate->return_rcode == LDNS_RCODE_NOERROR) { + char type[16]; + sldns_wire2str_type_buf(qstate->qinfo.qtype, type, + sizeof(type)); + verbose(VERB_ALGO, "ipsecmod: response for %s; generating IPSECKEY " + "subquery", type); + /* generate an IPSECKEY query. */ + if(!generate_request(qstate, id, qstate->qinfo.qname, + qstate->qinfo.qname_len, LDNS_RR_TYPE_IPSECKEY, + qstate->qinfo.qclass, 0)) { + log_err("ipsecmod: could not generate subquery."); + ipsecmod_error(qstate, id); + } + return; + } + /* we are done with the query. */ + qstate->ext_state[id] = module_finished; +} + +void +ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id, + struct outbound_entry* outbound) +{ + struct ipsecmod_env* ie = (struct ipsecmod_env*)qstate->env->modinfo[id]; + struct ipsecmod_qstate* iq = (struct ipsecmod_qstate*)qstate->minfo[id]; + verbose(VERB_QUERY, "ipsecmod[module %d] operate: extstate:%s event:%s", + id, strextstate(qstate->ext_state[id]), strmodulevent(event)); + if(iq) log_query_info(VERB_QUERY, "ipsecmod operate: query", + &qstate->qinfo); + + /* create ipsecmod_qstate. */ + if((event == module_event_new || event == module_event_pass) && + iq == NULL) { + if(!ipsecmod_new(qstate, id)) { + ipsecmod_error(qstate, id); + return; + } + iq = (struct ipsecmod_qstate*)qstate->minfo[id]; + } + if(iq && (event == module_event_pass || event == module_event_new)) { + ipsecmod_handle_query(qstate, iq, ie, id); + return; + } + if(iq && (event == module_event_moddone)) { + ipsecmod_handle_response(qstate, iq, ie, id); + return; + } + if(iq && outbound) { + /* cachedb does not need to process responses at this time + * ignore it. + cachedb_process_response(qstate, iq, ie, id, outbound, event); + */ + return; + } + if(event == module_event_error) { + verbose(VERB_ALGO, "got called with event error, giving up"); + ipsecmod_error(qstate, id); + return; + } + if(!iq && (event == module_event_moddone)) { + /* during priming, module done but we never started. */ + qstate->ext_state[id] = module_finished; + return; + } + + log_err("ipsecmod: bad event %s", strmodulevent(event)); + ipsecmod_error(qstate, id); + return; +} + +void +ipsecmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) +{ + struct ipsecmod_qstate* siq; + log_query_info(VERB_ALGO, "ipsecmod: inform_super, sub is", + &qstate->qinfo); + log_query_info(VERB_ALGO, "super is", &super->qinfo); + siq = (struct ipsecmod_qstate*)super->minfo[id]; + if(!siq) { + verbose(VERB_ALGO, "super has no ipsecmod state"); + return; + } + + if(qstate->return_msg) { + struct ub_packed_rrset_key* rrset_key = reply_find_answer_rrset( + &qstate->return_msg->qinfo, qstate->return_msg->rep); + if(rrset_key) { + /* We have an answer. */ + /* Copy to super's region. */ + rrset_key = packed_rrset_copy_region(rrset_key, super->region, 0); + siq->ipseckey_rrset = rrset_key; + if(!rrset_key) { + log_err("ipsecmod: out of memory."); + } + } + } + /* Notify super to proceed. */ + siq->ipseckey_done = 1; +} + +void +ipsecmod_clear(struct module_qstate* qstate, int id) +{ + if(!qstate) + return; + qstate->minfo[id] = NULL; +} + +size_t +ipsecmod_get_mem(struct module_env* env, int id) +{ + struct ipsecmod_env* ie = (struct ipsecmod_env*)env->modinfo[id]; + if(!ie) + return 0; + return sizeof(*ie) + ipsecmod_whitelist_get_mem(ie->whitelist); +} + +/** + * The ipsecmod function block + */ +static struct module_func_block ipsecmod_block = { + "ipsecmod", + &ipsecmod_init, &ipsecmod_deinit, &ipsecmod_operate, + &ipsecmod_inform_super, &ipsecmod_clear, &ipsecmod_get_mem +}; + +struct module_func_block* +ipsecmod_get_funcblock(void) +{ + return &ipsecmod_block; +} +#endif /* USE_IPSECMOD */ diff --git a/external/unbound/ipsecmod/ipsecmod.h b/external/unbound/ipsecmod/ipsecmod.h new file mode 100644 index 0000000..e00816d --- /dev/null +++ b/external/unbound/ipsecmod/ipsecmod.h @@ -0,0 +1,97 @@ +/* + * ipsecmod/ipsecmod.h - facilitate opportunistic IPsec module + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains a module that facilitates opportunistic IPsec. It does so + * by also quering for the IPSECKEY for A/AAAA queries and calling a + * configurable hook (eg. signaling an IKE daemon) before replying. + */ + +#ifndef IPSECMOD_H +#define IPSECMOD_H +#include "util/module.h" +#include "util/rbtree.h" + +/** + * The global variable environment contents for the ipsecmod + * Shared between threads, this represents long term information. + */ +struct ipsecmod_env { + /** White listed domains for ipsecmod. */ + rbtree_type* whitelist; +}; + +/** + * Per query state for the ipsecmod module. + */ +struct ipsecmod_qstate { + /** State of the IPsec module. */ + /** NOTE: This value is copied here from the configuration so that a change + * with unbound-control would not complicate an already running mesh. */ + int enabled; + /** If the qname is whitelisted or not. */ + /** NOTE: No whitelist means all qnames are whitelisted. */ + int is_whitelisted; + /** Pointer to IPSECKEY rrset allocated in the qstate region. NULL if there + * was no IPSECKEY reply from the subquery. */ + struct ub_packed_rrset_key* ipseckey_rrset; + /** If the IPSECKEY subquery has finished. */ + int ipseckey_done; +}; + +/** Init the ipsecmod module */ +int ipsecmod_init(struct module_env* env, int id); +/** Deinit the ipsecmod module */ +void ipsecmod_deinit(struct module_env* env, int id); +/** Operate on an event on a query (in qstate). */ +void ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); +/** Subordinate query done, inform this super request of its conclusion */ +void ipsecmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); +/** clear the ipsecmod query-specific contents out of qstate */ +void ipsecmod_clear(struct module_qstate* qstate, int id); +/** return memory estimate for the ipsecmod module */ +size_t ipsecmod_get_mem(struct module_env* env, int id); + +/** + * Get the function block with pointers to the ipsecmod functions + * @return the function block for "ipsecmod". + */ +struct module_func_block* ipsecmod_get_funcblock(void); + +#endif /* IPSECMOD_H */ diff --git a/external/unbound/iterator/iter_delegpt.c b/external/unbound/iterator/iter_delegpt.c index 0e251ff..f88b3e1 100644 --- a/external/unbound/iterator/iter_delegpt.c +++ b/external/unbound/iterator/iter_delegpt.c @@ -72,6 +72,7 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) return NULL; copy->bogus = dp->bogus; copy->has_parent_side_NS = dp->has_parent_side_NS; + copy->ssl_upstream = dp->ssl_upstream; for(ns = dp->nslist; ns; ns = ns->next) { if(!delegpt_add_ns(copy, region, ns->name, ns->lame)) return NULL; @@ -83,7 +84,7 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) } for(a = dp->target_list; a; a = a->next_target) { if(!delegpt_add_addr(copy, region, &a->addr, a->addrlen, - a->bogus, a->lame)) + a->bogus, a->lame, a->tls_auth_name)) return NULL; } return copy; @@ -175,13 +176,13 @@ delegpt_add_target(struct delegpt* dp, struct regional* region, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame); + return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL); } int delegpt_add_addr(struct delegpt* dp, struct regional* region, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, - uint8_t lame) + uint8_t lame, char* tls_auth_name) { struct delegpt_addr* a; log_assert(!dp->dp_type_mlc); @@ -209,6 +210,13 @@ delegpt_add_addr(struct delegpt* dp, struct regional* region, a->bogus = bogus; a->lame = lame; a->dnsseclame = 0; + if(tls_auth_name) { + a->tls_auth_name = regional_strdup(region, tls_auth_name); + if(!a->tls_auth_name) + return 0; + } else { + a->tls_auth_name = NULL; + } return 1; } @@ -275,11 +283,16 @@ void delegpt_log(enum verbosity_value v, struct delegpt* dp) (ns->done_pside6?" PSIDE_AAAA":"")); } for(a = dp->target_list; a; a = a->next_target) { + char s[128]; const char* str = " "; if(a->bogus && a->lame) str = " BOGUS ADDR_LAME "; else if(a->bogus) str = " BOGUS "; else if(a->lame) str = " ADDR_LAME "; - log_addr(VERB_ALGO, str, &a->addr, a->addrlen); + if(a->tls_auth_name) + snprintf(s, sizeof(s), "%s[%s]", str, + a->tls_auth_name); + else snprintf(s, sizeof(s), "%s", str); + log_addr(VERB_ALGO, s, &a->addr, a->addrlen); } } } @@ -538,6 +551,7 @@ void delegpt_free_mlc(struct delegpt* dp) a = dp->target_list; while(a) { na = a->next_target; + free(a->tls_auth_name); free(a); a = na; } @@ -584,7 +598,7 @@ int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame) } int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame) + socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name) { struct delegpt_addr* a; log_assert(dp->dp_type_mlc); @@ -611,6 +625,15 @@ int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, a->bogus = bogus; a->lame = lame; a->dnsseclame = 0; + if(tls_auth_name) { + a->tls_auth_name = strdup(tls_auth_name); + if(!a->tls_auth_name) { + free(a); + return 0; + } + } else { + a->tls_auth_name = NULL; + } return 1; } @@ -631,7 +654,7 @@ int delegpt_add_target_mlc(struct delegpt* dp, uint8_t* name, size_t namelen, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr_mlc(dp, addr, addrlen, bogus, lame); + return delegpt_add_addr_mlc(dp, addr, addrlen, bogus, lame, NULL); } size_t delegpt_get_mem(struct delegpt* dp) diff --git a/external/unbound/iterator/iter_delegpt.h b/external/unbound/iterator/iter_delegpt.h index eb77135..354bd61 100644 --- a/external/unbound/iterator/iter_delegpt.h +++ b/external/unbound/iterator/iter_delegpt.h @@ -81,6 +81,10 @@ struct delegpt { uint8_t has_parent_side_NS; /** for assertions on type of delegpt */ uint8_t dp_type_mlc; + /** use SSL for upstream query */ + uint8_t ssl_upstream; + /** delegpt from authoritative zone that is locally hosted */ + uint8_t auth_dp; }; /** @@ -147,6 +151,8 @@ struct delegpt_addr { * option is useful to mark the address dnsseclame. * This value is not copied in addr-copy and dp-copy. */ uint8_t dnsseclame; + /** the TLS authentication name, (if not NULL) to use. */ + char* tls_auth_name; }; /** @@ -255,11 +261,12 @@ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, * @param addrlen: the length of addr. * @param bogus: if address is bogus. * @param lame: if address is lame. + * @param tls_auth_name: TLS authentication name (or NULL). * @return false on error. */ int delegpt_add_addr(struct delegpt* dp, struct regional* regional, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t bogus, uint8_t lame); + uint8_t bogus, uint8_t lame, char* tls_auth_name); /** * Find NS record in name list of delegation point. @@ -355,7 +362,7 @@ void delegpt_no_ipv4(struct delegpt* dp); /** * create malloced delegation point, with the given name - * @param name: uncompressed wireformat of degegpt name. + * @param name: uncompressed wireformat of delegpt name. * @return NULL on alloc failure */ struct delegpt* delegpt_create_mlc(uint8_t* name); @@ -390,10 +397,11 @@ int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame); * @param addrlen: the length of addr. * @param bogus: if address is bogus. * @param lame: if address is lame. + * @param tls_auth_name: TLS authentication name (or NULL). * @return false on error. */ int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame); + socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name); /** * Add target address to the delegation point. diff --git a/external/unbound/iterator/iter_donotq.h b/external/unbound/iterator/iter_donotq.h index 429e5a3..1410507 100644 --- a/external/unbound/iterator/iter_donotq.h +++ b/external/unbound/iterator/iter_donotq.h @@ -58,7 +58,7 @@ struct iter_donotq { * contents of type addr_tree_node. Each node is an address span * that must not be used to send queries to. */ - rbtree_t tree; + rbtree_type tree; }; /** diff --git a/external/unbound/iterator/iter_fwd.c b/external/unbound/iterator/iter_fwd.c index 0feee03..a44f543 100644 --- a/external/unbound/iterator/iter_fwd.c +++ b/external/unbound/iterator/iter_fwd.c @@ -82,7 +82,7 @@ static void fwd_zone_free(struct iter_forward_zone* n) free(n); } -static void delfwdnode(rbnode_t* n, void* ATTR_UNUSED(arg)) +static void delfwdnode(rbnode_type* n, void* ATTR_UNUSED(arg)) { struct iter_forward_zone* node = (struct iter_forward_zone*)n; fwd_zone_free(node); @@ -231,14 +231,16 @@ read_fwds_addr(struct config_stub* s, struct delegpt* dp) struct config_strlist* p; struct sockaddr_storage addr; socklen_t addrlen; + char* tls_auth_name; for(p = s->addrs; p; p = p->next) { log_assert(p->str); - if(!extstrtoaddr(p->str, &addr, &addrlen)) { + if(!authextstrtoaddr(p->str, &addr, &addrlen, &tls_auth_name)) { log_err("cannot parse forward %s ip address: '%s'", s->name, p->str); return 0; } - if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0)) { + if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, + tls_auth_name)) { log_err("out of memory"); return 0; } @@ -265,6 +267,8 @@ read_forwards(struct iter_forwards* fwd, struct config_file* cfg) * last resort will ask for parent-side NS record and thus * fallback to the internet name servers on a failure */ dp->has_parent_side_NS = (uint8_t)!s->isfirst; + /* use SSL for queries to this forwarder */ + dp->ssl_upstream = (uint8_t)s->ssl_upstream; verbose(VERB_QUERY, "Forward zone server list:"); delegpt_log(VERB_QUERY, dp); if(!forwards_insert(fwd, LDNS_RR_CLASS_IN, dp)) @@ -294,6 +298,7 @@ make_stub_holes(struct iter_forwards* fwd, struct config_file* cfg) uint8_t* dname; size_t dname_len; for(s = cfg->stubs; s; s = s->next) { + if(!s->name) continue; dname = sldns_str2wire_dname(s->name, &dname_len); if(!dname) { log_err("cannot parse stub name '%s'", s->name); @@ -329,7 +334,7 @@ forwards_apply_cfg(struct iter_forwards* fwd, struct config_file* cfg) struct delegpt* forwards_find(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass) { - rbnode_t* res = NULL; + rbnode_type* res = NULL; struct iter_forward_zone key; key.node.key = &key; key.dclass = qclass; @@ -344,7 +349,7 @@ struct delegpt* forwards_lookup(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass) { /* lookup the forward zone in the tree */ - rbnode_t* res = NULL; + rbnode_type* res = NULL; struct iter_forward_zone *result; struct iter_forward_zone key; key.node.key = &key; @@ -385,7 +390,7 @@ int forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass) { struct iter_forward_zone key; - rbnode_t* n; + rbnode_type* n; struct iter_forward_zone* p; if(*dclass == 0) { /* first root item is first item in tree */ diff --git a/external/unbound/iterator/iter_fwd.h b/external/unbound/iterator/iter_fwd.h index 20113a3..e90b74c 100644 --- a/external/unbound/iterator/iter_fwd.h +++ b/external/unbound/iterator/iter_fwd.h @@ -57,7 +57,7 @@ struct iter_forwards { * match which gives the ancestor needed. * contents of type iter_forward_zone. */ - rbtree_t* tree; + rbtree_type* tree; }; /** @@ -65,7 +65,7 @@ struct iter_forwards { */ struct iter_forward_zone { /** redblacktree node, key is this structure: class and name */ - rbnode_t node; + rbnode_type node; /** name */ uint8_t* name; /** length of name */ diff --git a/external/unbound/iterator/iter_hints.c b/external/unbound/iterator/iter_hints.c index d7f8158..e8d0933 100644 --- a/external/unbound/iterator/iter_hints.c +++ b/external/unbound/iterator/iter_hints.c @@ -67,7 +67,7 @@ static void hints_stub_free(struct iter_hints_stub* s) free(s); } -static void delhintnode(rbnode_t* n, void* ATTR_UNUSED(arg)) +static void delhintnode(rbnode_type* n, void* ATTR_UNUSED(arg)) { struct iter_hints_stub* node = (struct iter_hints_stub*)n; hints_stub_free(node); @@ -129,7 +129,7 @@ compile_time_root_prime(int do_ip4, int do_ip6) dp->has_parent_side_NS = 1; if(do_ip4) { if(!ah(dp, "A.ROOT-SERVERS.NET.", "198.41.0.4")) goto failed; - if(!ah(dp, "B.ROOT-SERVERS.NET.", "192.228.79.201")) goto failed; + if(!ah(dp, "B.ROOT-SERVERS.NET.", "199.9.14.201")) goto failed; if(!ah(dp, "C.ROOT-SERVERS.NET.", "192.33.4.12")) goto failed; if(!ah(dp, "D.ROOT-SERVERS.NET.", "199.7.91.13")) goto failed; if(!ah(dp, "E.ROOT-SERVERS.NET.", "192.203.230.10")) goto failed; @@ -144,15 +144,17 @@ compile_time_root_prime(int do_ip4, int do_ip6) } if(do_ip6) { if(!ah(dp, "A.ROOT-SERVERS.NET.", "2001:503:ba3e::2:30")) goto failed; - if(!ah(dp, "B.ROOT-SERVERS.NET.", "2001:500:84::b")) goto failed; + if(!ah(dp, "B.ROOT-SERVERS.NET.", "2001:500:200::b")) goto failed; if(!ah(dp, "C.ROOT-SERVERS.NET.", "2001:500:2::c")) goto failed; if(!ah(dp, "D.ROOT-SERVERS.NET.", "2001:500:2d::d")) goto failed; + if(!ah(dp, "E.ROOT-SERVERS.NET.", "2001:500:a8::e")) goto failed; if(!ah(dp, "F.ROOT-SERVERS.NET.", "2001:500:2f::f")) goto failed; + if(!ah(dp, "G.ROOT-SERVERS.NET.", "2001:500:12::d0d")) goto failed; if(!ah(dp, "H.ROOT-SERVERS.NET.", "2001:500:1::53")) goto failed; if(!ah(dp, "I.ROOT-SERVERS.NET.", "2001:7fe::53")) goto failed; if(!ah(dp, "J.ROOT-SERVERS.NET.", "2001:503:c27::2:30")) goto failed; if(!ah(dp, "K.ROOT-SERVERS.NET.", "2001:7fd::1")) goto failed; - if(!ah(dp, "L.ROOT-SERVERS.NET.", "2001:500:3::42")) goto failed; + if(!ah(dp, "L.ROOT-SERVERS.NET.", "2001:500:9f::42")) goto failed; if(!ah(dp, "M.ROOT-SERVERS.NET.", "2001:dc3::35")) goto failed; } return dp; @@ -242,14 +244,16 @@ read_stubs_addr(struct config_stub* s, struct delegpt* dp) struct config_strlist* p; struct sockaddr_storage addr; socklen_t addrlen; + char* auth_name; for(p = s->addrs; p; p = p->next) { log_assert(p->str); - if(!extstrtoaddr(p->str, &addr, &addrlen)) { + if(!authextstrtoaddr(p->str, &addr, &addrlen, &auth_name)) { log_err("cannot parse stub %s ip address: '%s'", s->name, p->str); return 0; } - if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0)) { + if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, + auth_name)) { log_err("out of memory"); return 0; } @@ -274,6 +278,8 @@ read_stubs(struct iter_hints* hints, struct config_file* cfg) * last resort will ask for parent-side NS record and thus * fallback to the internet name servers on a failure */ dp->has_parent_side_NS = (uint8_t)!s->isfirst; + /* ssl_upstream */ + dp->ssl_upstream = (uint8_t)s->ssl_upstream; delegpt_log(VERB_QUERY, dp); if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, !s->isprime)) return 0; diff --git a/external/unbound/iterator/iter_hints.h b/external/unbound/iterator/iter_hints.h index 715ec9f..06b4b96 100644 --- a/external/unbound/iterator/iter_hints.h +++ b/external/unbound/iterator/iter_hints.h @@ -59,7 +59,7 @@ struct iter_hints { * contents of type iter_hints_stub. The class IN root is in here. * uses name_tree_node from dnstree.h. */ - rbtree_t tree; + rbtree_type tree; }; /** diff --git a/external/unbound/iterator/iter_priv.h b/external/unbound/iterator/iter_priv.h index 6fa8490..0430d57 100644 --- a/external/unbound/iterator/iter_priv.h +++ b/external/unbound/iterator/iter_priv.h @@ -60,14 +60,14 @@ struct iter_priv { * contents of type addr_tree_node. * No further data need, only presence or absence. */ - rbtree_t a; + rbtree_type a; /** * Tree of the domains spans that are allowed to contain * the blocked address spans. * contents of type name_tree_node. * No further data need, only presence or absence. */ - rbtree_t n; + rbtree_type n; }; /** diff --git a/external/unbound/iterator/iter_scrub.c b/external/unbound/iterator/iter_scrub.c index 8a3fc17..12580dc 100644 --- a/external/unbound/iterator/iter_scrub.c +++ b/external/unbound/iterator/iter_scrub.c @@ -161,8 +161,8 @@ mark_additional_rrset(sldns_buffer* pkt, struct msg_parse* msg, for(rr = rrset->rr_first; rr; rr = rr->next) { if(get_additional_name(rrset, rr, &nm, &nmlen, pkt)) { /* mark A */ - hashvalue_t h = pkt_hash_rrset(pkt, nm, LDNS_RR_TYPE_A, - rrset->rrset_class, 0); + hashvalue_type h = pkt_hash_rrset(pkt, nm, + LDNS_RR_TYPE_A, rrset->rrset_class, 0); struct rrset_parse* r = msgparse_hashtable_lookup( msg, pkt, h, 0, nm, nmlen, LDNS_RR_TYPE_A, rrset->rrset_class); @@ -503,6 +503,24 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, continue; } } + /* if this is type DS and we query for type DS we just got + * a referral answer for our type DS query, fix packet */ + if(rrset->type==LDNS_RR_TYPE_DS && + qinfo->qtype == LDNS_RR_TYPE_DS && + dname_pkt_compare(pkt, qinfo->qname, rrset->dname) == 0) { + rrset->section = LDNS_SECTION_ANSWER; + msg->ancount = rrset->rr_count + rrset->rrsig_count; + msg->nscount = 0; + msg->arcount = 0; + msg->an_rrsets = 1; + msg->ns_rrsets = 0; + msg->ar_rrsets = 0; + msg->rrset_count = 1; + msg->rrset_first = rrset; + msg->rrset_last = rrset; + rrset->rrset_all_next = NULL; + return 1; + } mark_additional_rrset(pkt, msg, rrset); prev = rrset; rrset = rrset->rrset_all_next; diff --git a/external/unbound/iterator/iter_utils.c b/external/unbound/iterator/iter_utils.c index 58e62fb..0a8f770 100644 --- a/external/unbound/iterator/iter_utils.c +++ b/external/unbound/iterator/iter_utils.c @@ -108,7 +108,7 @@ read_fetch_policy(struct iter_env* ie, const char* str) /** apply config caps whitelist items to name tree */ static int -caps_white_apply_cfg(rbtree_t* ntree, struct config_file* cfg) +caps_white_apply_cfg(rbtree_type* ntree, struct config_file* cfg) { struct config_strlist* p; for(p=cfg->caps_whitelist; p; p=p->next) { @@ -312,9 +312,9 @@ static int iter_filter_order(struct iter_env* iter_env, struct module_env* env, uint8_t* name, size_t namelen, uint16_t qtype, time_t now, struct delegpt* dp, int* selected_rtt, int open_target, - struct sock_list* blacklist) + struct sock_list* blacklist, time_t prefetch) { - int got_num = 0, low_rtt = 0, swap_to_front; + int got_num = 0, low_rtt = 0, swap_to_front, rtt_band = RTT_BAND; struct delegpt_addr* a, *n, *prev=NULL; /* fillup sel_rtt and find best rtt in the bunch */ @@ -329,6 +329,16 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, return 0 to force the caller to fetch more */ } + if(env->cfg->low_rtt_permil != 0 && prefetch == 0 && + low_rtt < env->cfg->low_rtt && + ub_random_max(env->rnd, 1000) < env->cfg->low_rtt_permil) { + /* the query is not prefetch, but for a downstream client, + * there is a low_rtt (fast) server. We choose that x% of the + * time */ + /* pick rtt numbers from 0..LOWBAND_RTT */ + rtt_band = env->cfg->low_rtt - low_rtt; + } + got_num = 0; a = dp->result_list; while(a) { @@ -340,10 +350,10 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, } /* classify the server address and determine what to do */ swap_to_front = 0; - if(a->sel_rtt >= low_rtt && a->sel_rtt - low_rtt <= RTT_BAND) { + if(a->sel_rtt >= low_rtt && a->sel_rtt - low_rtt <= rtt_band) { got_num++; swap_to_front = 1; - } else if(a->sel_rttsel_rtt<=RTT_BAND) { + } else if(a->sel_rttsel_rtt<=rtt_band) { got_num++; swap_to_front = 1; } @@ -360,6 +370,39 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, } } *selected_rtt = low_rtt; + + if (env->cfg->prefer_ip6) { + int got_num6 = 0; + int low_rtt6 = 0; + int i; + prev = NULL; + a = dp->result_list; + for(i = 0; i < got_num; i++) { + swap_to_front = 0; + if(a->addr.ss_family == AF_INET6) { + got_num6++; + swap_to_front = 1; + if(low_rtt6 == 0 || a->sel_rtt < low_rtt6) { + low_rtt6 = a->sel_rtt; + } + } + /* swap to front if IPv6, or move to next result */ + if(swap_to_front && prev) { + n = a->next_result; + prev->next_result = n; + a->next_result = dp->result_list; + dp->result_list = a; + a = n; + } else { + prev = a; + a = a->next_result; + } + } + if(got_num6 > 0) { + got_num = got_num6; + *selected_rtt = low_rtt6; + } + } return got_num; } @@ -367,13 +410,14 @@ struct delegpt_addr* iter_server_selection(struct iter_env* iter_env, struct module_env* env, struct delegpt* dp, uint8_t* name, size_t namelen, uint16_t qtype, int* dnssec_lame, - int* chase_to_rd, int open_target, struct sock_list* blacklist) + int* chase_to_rd, int open_target, struct sock_list* blacklist, + time_t prefetch) { int sel; int selrtt; struct delegpt_addr* a, *prev; int num = iter_filter_order(iter_env, env, name, namelen, qtype, - *env->now, dp, &selrtt, open_target, blacklist); + *env->now, dp, &selrtt, open_target, blacklist, prefetch); if(num == 0) return NULL; @@ -499,6 +543,7 @@ causes_cycle(struct module_qstate* qstate, uint8_t* name, size_t namelen, qinf.qname_len = namelen; qinf.qtype = t; qinf.qclass = c; + qinf.local_alias = NULL; fptr_ok(fptr_whitelist_modenv_detect_cycle( qstate->env->detect_cycle)); return (*qstate->env->detect_cycle)(qstate, &qinf, @@ -590,6 +635,27 @@ iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, return 1; } +int +iter_qname_indicates_dnssec(struct module_env* env, struct query_info *qinfo) +{ + struct trust_anchor* a; + if(!env || !env->anchors || !qinfo || !qinfo->qname) + return 0; + /* a trust anchor exists above the name? */ + if((a=anchors_lookup(env->anchors, qinfo->qname, qinfo->qname_len, + qinfo->qclass))) { + if(a->numDS == 0 && a->numDNSKEY == 0) { + /* insecure trust point */ + lock_basic_unlock(&a->lock); + return 0; + } + lock_basic_unlock(&a->lock); + return 1; + } + /* no trust anchor above it. */ + return 0; +} + int iter_indicates_dnssec(struct module_env* env, struct delegpt* dp, struct dns_msg* msg, uint16_t dclass) @@ -601,6 +667,11 @@ iter_indicates_dnssec(struct module_env* env, struct delegpt* dp, /* a trust anchor exists with this name, RRSIGs expected */ if((a=anchor_find(env->anchors, dp->name, dp->namelabs, dp->namelen, dclass))) { + if(a->numDS == 0 && a->numDNSKEY == 0) { + /* insecure trust point */ + lock_basic_unlock(&a->lock); + return 0; + } lock_basic_unlock(&a->lock); return 1; } diff --git a/external/unbound/iterator/iter_utils.h b/external/unbound/iterator/iter_utils.h index 3a4df3e..e971d93 100644 --- a/external/unbound/iterator/iter_utils.h +++ b/external/unbound/iterator/iter_utils.h @@ -87,13 +87,18 @@ int iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg); * @param open_target: number of currently outstanding target queries. * If we wait for these, perhaps more server addresses become available. * @param blacklist: the IP blacklist to use. + * @param prefetch: if not 0, prefetch is in use for this query. + * This means the query can have different timing, because prefetch is + * not waited upon by the downstream client, and thus a good time to + * perform exploration of other targets. * @return best target or NULL if no target. * if not null, that target is removed from the result list in the dp. */ struct delegpt_addr* iter_server_selection(struct iter_env* iter_env, struct module_env* env, struct delegpt* dp, uint8_t* name, size_t namelen, uint16_t qtype, int* dnssec_lame, - int* chase_to_rd, int open_target, struct sock_list* blacklist); + int* chase_to_rd, int open_target, struct sock_list* blacklist, + time_t prefetch); /** * Allocate dns_msg from parsed msg, in regional. @@ -173,6 +178,17 @@ void iter_mark_pside_cycle_targets(struct module_qstate* qstate, int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, struct delegpt* dp); +/** + * See if qname has DNSSEC needs. This is true if there is a trust anchor above + * it. Whether there is an insecure delegation to the data is unknown. + * @param env: environment with anchors. + * @param qinfo: query name and class. + * @return true if trust anchor above qname, false if no anchor or insecure + * point above qname. + */ +int iter_qname_indicates_dnssec(struct module_env* env, + struct query_info *qinfo); + /** * See if delegation is expected to have DNSSEC information (RRSIGs) in * its answers, or not. Inspects delegation point (name), trust anchors, @@ -181,7 +197,7 @@ int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, * @param dp: delegation point. * @param msg: delegation message, with DS if a secure referral. * @param dclass: class of query. - * @return 1 if dnssec is expected, 0 if not. + * @return 1 if dnssec is expected, 0 if not or insecure point above qname. */ int iter_indicates_dnssec(struct module_env* env, struct delegpt* dp, struct dns_msg* msg, uint16_t dclass); @@ -240,7 +256,7 @@ void caps_strip_reply(struct reply_info* rep); int caps_failed_rcode(struct reply_info* rep); /** - * Store parent-side rrset in seperate rrset cache entries for later + * Store parent-side rrset in separate rrset cache entries for later * last-resort * lookups in case the child-side versions of this information * fails. * @param env: environment with cache, time, ... diff --git a/external/unbound/iterator/iterator.c b/external/unbound/iterator/iterator.c index b1bf902..58a9bff 100644 --- a/external/unbound/iterator/iterator.c +++ b/external/unbound/iterator/iterator.c @@ -36,7 +36,7 @@ /** * \file * - * This file contains a module that performs recusive iterative DNS query + * This file contains a module that performs recursive iterative DNS query * processing. */ @@ -53,6 +53,7 @@ #include "validator/val_neg.h" #include "services/cache/dns.h" #include "services/cache/infra.h" +#include "services/authzone.h" #include "util/module.h" #include "util/netevent.h" #include "util/net_help.h" @@ -78,31 +79,23 @@ iter_init(struct module_env* env, int id) return 0; } env->modinfo[id] = (void*)iter_env; + + lock_basic_init(&iter_env->queries_ratelimit_lock); + lock_protect(&iter_env->queries_ratelimit_lock, + &iter_env->num_queries_ratelimited, + sizeof(iter_env->num_queries_ratelimited)); + if(!iter_apply_cfg(iter_env, env->cfg)) { log_err("iterator: could not apply configuration settings."); return 0; } - if(env->cfg->qname_minimisation) { - uint8_t dname[LDNS_MAX_DOMAINLEN+1]; - size_t len = sizeof(dname); - if(sldns_str2wire_dname_buf("ip6.arpa.", dname, &len) != 0) { - log_err("ip6.arpa. parse error"); - return 0; - } - iter_env->ip6arpa_dname = (uint8_t*)malloc(len); - if(!iter_env->ip6arpa_dname) { - log_err("malloc failure"); - return 0; - } - memcpy(iter_env->ip6arpa_dname, dname, len); - } return 1; } /** delete caps_whitelist element */ static void -caps_free(struct rbnode_t* n, void* ATTR_UNUSED(d)) +caps_free(struct rbnode_type* n, void* ATTR_UNUSED(d)) { if(n) { free(((struct name_tree_node*)n)->name); @@ -117,7 +110,7 @@ iter_deinit(struct module_env* env, int id) if(!env || !env->modinfo[id]) return; iter_env = (struct iter_env*)env->modinfo[id]; - free(iter_env->ip6arpa_dname); + lock_basic_destroy(&iter_env->queries_ratelimit_lock); free(iter_env->target_fetch_policy); priv_delete(iter_env->priv); donotq_delete(iter_env->donotq); @@ -162,6 +155,8 @@ iter_new(struct module_qstate* qstate, int id) /* Start with the (current) qname. */ iq->qchase = qstate->qinfo; outbound_list_init(&iq->outlist); + iq->minimise_count = 0; + iq->minimise_timeout_count = 0; if (qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; else @@ -229,6 +224,7 @@ error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA) { /* mark address as failed. */ struct delegpt_ns* dpns = NULL; + super_iq->num_target_queries--; if(super_iq->dp) dpns = delegpt_find_ns(super_iq->dp, qstate->qinfo.qname, qstate->qinfo.qname_len); @@ -242,13 +238,11 @@ error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) return; } else { /* see if the failure did get (parent-lame) info */ - if(!cache_fill_missing(super->env, - super_iq->qchase.qclass, super->region, - super_iq->dp)) + if(!cache_fill_missing(super->env, super_iq->qchase.qclass, + super->region, super_iq->dp)) log_err("out of memory adding missing"); } dpns->resolved = 1; /* mark as failed */ - super_iq->num_target_queries--; } if(qstate->qinfo.qtype == LDNS_RR_TYPE_NS) { /* prime failed to get delegation */ @@ -291,27 +285,45 @@ error_response(struct module_qstate* qstate, int id, int rcode) static int error_response_cache(struct module_qstate* qstate, int id, int rcode) { - /* store in cache */ - struct reply_info err; - if(qstate->prefetch_leeway > NORR_TTL) { - verbose(VERB_ALGO, "error response for prefetch in cache"); - /* attempt to adjust the cache entry prefetch */ - if(dns_cache_prefetch_adjust(qstate->env, &qstate->qinfo, - NORR_TTL, qstate->query_flags)) - return error_response(qstate, id, rcode); - /* if that fails (not in cache), fall through to store err */ - } - memset(&err, 0, sizeof(err)); - err.flags = (uint16_t)(BIT_QR | BIT_RA); - FLAGS_SET_RCODE(err.flags, rcode); - err.qdcount = 1; - err.ttl = NORR_TTL; - err.prefetch_ttl = PREFETCH_TTL_CALC(err.ttl); - /* do not waste time trying to validate this servfail */ - err.security = sec_status_indeterminate; - verbose(VERB_ALGO, "store error response in message cache"); - iter_dns_store(qstate->env, &qstate->qinfo, &err, 0, 0, 0, NULL, - qstate->query_flags); + if(!qstate->no_cache_store) { + /* store in cache */ + struct reply_info err; + if(qstate->prefetch_leeway > NORR_TTL) { + verbose(VERB_ALGO, "error response for prefetch in cache"); + /* attempt to adjust the cache entry prefetch */ + if(dns_cache_prefetch_adjust(qstate->env, &qstate->qinfo, + NORR_TTL, qstate->query_flags)) + return error_response(qstate, id, rcode); + /* if that fails (not in cache), fall through to store err */ + } + if(qstate->env->cfg->serve_expired) { + /* if serving expired contents, and such content is + * already available, don't overwrite this servfail */ + struct msgreply_entry* msg; + if((msg=msg_cache_lookup(qstate->env, + qstate->qinfo.qname, qstate->qinfo.qname_len, + qstate->qinfo.qtype, qstate->qinfo.qclass, + qstate->query_flags, 0, 0)) + != NULL) { + lock_rw_unlock(&msg->entry.lock); + return error_response(qstate, id, rcode); + } + /* serving expired contents, but nothing is cached + * at all, so the servfail cache entry is useful + * (stops waste of time on this servfail NORR_TTL) */ + } + memset(&err, 0, sizeof(err)); + err.flags = (uint16_t)(BIT_QR | BIT_RA); + FLAGS_SET_RCODE(err.flags, rcode); + err.qdcount = 1; + err.ttl = NORR_TTL; + err.prefetch_ttl = PREFETCH_TTL_CALC(err.ttl); + /* do not waste time trying to validate this servfail */ + err.security = sec_status_indeterminate; + verbose(VERB_ALGO, "store error response in message cache"); + iter_dns_store(qstate->env, &qstate->qinfo, &err, 0, 0, 0, NULL, + qstate->query_flags); + } return error_response(qstate, id, rcode); } @@ -384,6 +396,29 @@ iter_prepend(struct iter_qstate* iq, struct dns_msg* msg, return 1; } +/** + * Find rrset in ANSWER prepend list. + * to avoid duplicate DNAMEs when a DNAME is traversed twice. + * @param iq: iterator query state. + * @param rrset: rrset to add. + * @return false if not found + */ +static int +iter_find_rrset_in_prepend_answer(struct iter_qstate* iq, + struct ub_packed_rrset_key* rrset) +{ + struct iter_prep_list* p = iq->an_prepend_list; + while(p) { + if(ub_rrset_compare(p->rrset, rrset) == 0 && + rrsetdata_equal((struct packed_rrset_data*)p->rrset + ->entry.data, (struct packed_rrset_data*)rrset + ->entry.data)) + return 1; + p = p->next; + } + return 0; +} + /** * Add rrset to ANSWER prepend list * @param qstate: query state. @@ -466,14 +501,16 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, * by this DNAME following, so we don't process the DNAME * directly. */ if(ntohs(r->rk.type) == LDNS_RR_TYPE_DNAME && - dname_strict_subdomain_c(*mname, r->rk.dname)) { + dname_strict_subdomain_c(*mname, r->rk.dname) && + !iter_find_rrset_in_prepend_answer(iq, r)) { if(!iter_add_prepend_answer(qstate, iq, r)) return 0; continue; } if(ntohs(r->rk.type) == LDNS_RR_TYPE_CNAME && - query_dname_compare(*mname, r->rk.dname) == 0) { + query_dname_compare(*mname, r->rk.dname) == 0 && + !iter_find_rrset_in_prepend_answer(iq, r)) { /* Add this relevant CNAME rrset to the prepend list.*/ if(!iter_add_prepend_answer(qstate, iq, r)) return 0; @@ -496,6 +533,35 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, return 1; } +/** see if last resort is possible - does config allow queries to parent */ +static int +can_have_last_resort(struct module_env* env, uint8_t* nm, size_t nmlen, + uint16_t qclass, struct delegpt** retdp) +{ + struct delegpt* fwddp; + struct iter_hints_stub* stub; + int labs = dname_count_labels(nm); + /* do not process a last resort (the parent side) if a stub + * or forward is configured, because we do not want to go 'above' + * the configured servers */ + if(!dname_is_root(nm) && (stub = (struct iter_hints_stub*) + name_tree_find(&env->hints->tree, nm, nmlen, labs, qclass)) && + /* has_parent side is turned off for stub_first, where we + * are allowed to go to the parent */ + stub->dp->has_parent_side_NS) { + if(retdp) *retdp = stub->dp; + return 0; + } + if((fwddp = forwards_find(env->fwds, nm, qclass)) && + /* has_parent_side is turned off for forward_first, where + * we are allowed to go to the parent */ + fwddp->has_parent_side_NS) { + if(retdp) *retdp = fwddp; + return 0; + } + return 1; +} + /** see if target name is caps-for-id whitelisted */ static int is_caps_whitelisted(struct iter_env* ie, struct iter_qstate* iq) @@ -564,6 +630,7 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, qinf.qname_len = qnamelen; qinf.qtype = qtype; qinf.qclass = qclass; + qinf.local_alias = NULL; /* RD should be set only when sending the query back through the INIT * state. */ @@ -707,6 +774,11 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id, if(!stub) return 0; stub_dp = stub->dp; + /* if we have an auth_zone dp, and stub is equal, don't prime stub + * yet, unless we want to fallback and avoid the auth_zone */ + if(!iq->auth_zone_avoid && iq->dp && iq->dp->auth_dp && + query_dname_compare(iq->dp->name, stub_dp->name) == 0) + return 0; /* is it a noprime stub (always use) */ if(stub->noprime) { @@ -767,9 +839,99 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id, return 1; } +/** + * Generate a delegation point for an auth zone (unless cached dp is better) + * false on alloc failure. + */ +static int +auth_zone_delegpt(struct module_qstate* qstate, struct iter_qstate* iq, + uint8_t* delname, size_t delnamelen) +{ + struct auth_zone* z; + if(iq->auth_zone_avoid) + return 1; + if(!delname) { + delname = iq->qchase.qname; + delnamelen = iq->qchase.qname_len; + } + lock_rw_rdlock(&qstate->env->auth_zones->lock); + z = auth_zones_find_zone(qstate->env->auth_zones, delname, delnamelen, + qstate->qinfo.qclass); + if(!z) { + lock_rw_unlock(&qstate->env->auth_zones->lock); + return 1; + } + lock_rw_rdlock(&z->lock); + lock_rw_unlock(&qstate->env->auth_zones->lock); + if(z->for_upstream) { + if(iq->dp && query_dname_compare(z->name, iq->dp->name) == 0 + && iq->dp->auth_dp && qstate->blacklist && + z->fallback_enabled) { + /* cache is blacklisted and fallback, and we + * already have an auth_zone dp */ + if(verbosity>=VERB_ALGO) { + char buf[255+1]; + dname_str(z->name, buf); + verbose(VERB_ALGO, "auth_zone %s " + "fallback because cache blacklisted", + buf); + } + lock_rw_unlock(&z->lock); + iq->dp = NULL; + return 1; + } + if(iq->dp==NULL || dname_subdomain_c(z->name, iq->dp->name)) { + struct delegpt* dp; + if(qstate->blacklist && z->fallback_enabled) { + /* cache is blacklisted because of a DNSSEC + * validation failure, and the zone allows + * fallback to the internet, query there. */ + if(verbosity>=VERB_ALGO) { + char buf[255+1]; + dname_str(z->name, buf); + verbose(VERB_ALGO, "auth_zone %s " + "fallback because cache blacklisted", + buf); + } + lock_rw_unlock(&z->lock); + return 1; + } + dp = (struct delegpt*)regional_alloc_zero( + qstate->region, sizeof(*dp)); + if(!dp) { + log_err("alloc failure"); + if(z->fallback_enabled) { + lock_rw_unlock(&z->lock); + return 1; /* just fallback */ + } + lock_rw_unlock(&z->lock); + return 0; + } + dp->name = regional_alloc_init(qstate->region, + z->name, z->namelen); + if(!dp->name) { + log_err("alloc failure"); + if(z->fallback_enabled) { + lock_rw_unlock(&z->lock); + return 1; /* just fallback */ + } + lock_rw_unlock(&z->lock); + return 0; + } + dp->namelen = z->namelen; + dp->namelabs = z->namelabs; + dp->auth_dp = 1; + iq->dp = dp; + } + } + + lock_rw_unlock(&z->lock); + return 1; +} + /** * Generate A and AAAA checks for glue that is in-zone for the referral - * we just got to obtain authoritative information on the adresses. + * we just got to obtain authoritative information on the addresses. * * @param qstate: the qtstate that triggered the need to prime. * @param iq: iterator query state. @@ -839,6 +1001,9 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id) if(iq->depth == ie->max_dependency_depth) return; + if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, + iq->qchase.qclass, NULL)) + return; /* is this query the same as the nscheck? */ if(qstate->qinfo.qtype == LDNS_RR_TYPE_NS && query_dname_compare(iq->dp->name, qstate->qinfo.qname)==0 && @@ -847,6 +1012,9 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id) generate_a_aaaa_check(qstate, iq, id); return; } + /* no need to get the NS record for DS, it is above the zonecut */ + if(qstate->qinfo.qtype == LDNS_RR_TYPE_DS) + return; log_nametypeclass(VERB_ALGO, "schedule ns fetch", iq->dp->name, LDNS_RR_TYPE_NS, iq->qchase.qclass); @@ -981,7 +1149,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, { uint8_t* delname; size_t delnamelen; - struct dns_msg* msg; + struct dns_msg* msg = NULL; log_query_info(VERB_DETAIL, "resolving", &qstate->qinfo); /* check effort */ @@ -1011,6 +1179,18 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, return next_state(iq, COLLECT_CLASS_STATE); } + /* + * If we are restricted by a forward-zone or a stub-zone, we + * can't re-fetch glue for this delegation point. + * we won’t try to re-fetch glue if the iq->dp is null. + */ + if (iq->refetch_glue && + iq->dp && + !can_have_last_resort(qstate->env, iq->dp->name, + iq->dp->namelen, iq->qchase.qclass, NULL)) { + iq->refetch_glue = 0; + } + /* Resolver Algorithm Step 1 -- Look for the answer in local data. */ /* This either results in a query restart (CNAME cache response), a @@ -1021,18 +1201,20 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, * getting older results from cache is a bad idea, no cache */ verbose(VERB_ALGO, "cache blacklisted, going to the network"); msg = NULL; - } else { + } else if(!qstate->no_cache_lookup) { msg = dns_cache_lookup(qstate->env, iq->qchase.qname, iq->qchase.qname_len, iq->qchase.qtype, iq->qchase.qclass, qstate->query_flags, - qstate->region, qstate->env->scratch); - if(!msg && qstate->env->neg_cache) { - /* lookup in negative cache; may result in + qstate->region, qstate->env->scratch, 0); + if(!msg && qstate->env->neg_cache && + iter_qname_indicates_dnssec(qstate->env, &iq->qchase)) { + /* lookup in negative cache; may result in * NOERROR/NODATA or NXDOMAIN answers that need validation */ msg = val_neg_getmsg(qstate->env->neg_cache, &iq->qchase, qstate->region, qstate->env->rrset_cache, qstate->env->scratch_buffer, - *qstate->env->now, 1/*add SOA*/, NULL); + *qstate->env->now, 1/*add SOA*/, NULL, + qstate->env->cfg); } /* item taken from cache does not match our query name, thus * security needs to be re-examined later */ @@ -1083,7 +1265,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, iq->response = msg; return final_state(iq); } - + /* attempt to forward the request */ if(forward_request(qstate, iq)) { @@ -1117,7 +1299,8 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, delnamelen = iq->qchase.qname_len; } if(iq->qchase.qtype == LDNS_RR_TYPE_DS || iq->refetch_glue || - (iq->qchase.qtype == LDNS_RR_TYPE_NS && qstate->prefetch_leeway)) { + (iq->qchase.qtype == LDNS_RR_TYPE_NS && qstate->prefetch_leeway + && can_have_last_resort(qstate->env, delname, delnamelen, iq->qchase.qclass, NULL))) { /* remove first label from delname, root goes to hints, * but only to fetch glue, not for qtype=DS. */ /* also when prefetching an NS record, fetch it again from @@ -1144,8 +1327,15 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, /* If the cache has returned nothing, then we have a * root priming situation. */ if(iq->dp == NULL) { + int r; + /* if under auth zone, no prime needed */ + if(!auth_zone_delegpt(qstate, iq, delname, delnamelen)) + return error_response(qstate, id, + LDNS_RCODE_SERVFAIL); + if(iq->dp) /* use auth zone dp */ + return next_state(iq, INIT_REQUEST_2_STATE); /* if there is a stub, then no root prime needed */ - int r = prime_stub(qstate, iq, id, delname, + r = prime_stub(qstate, iq, id, delname, iq->qchase.qclass); if(r == 2) break; /* got noprime-stub-zone, continue */ @@ -1202,6 +1392,9 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, "delegation point", iq->dp->name, LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN); } else { + lock_basic_lock(&ie->queries_ratelimit_lock); + ie->num_queries_ratelimited++; + lock_basic_unlock(&ie->queries_ratelimit_lock); log_nametypeclass(VERB_ALGO, "ratelimit exceeded with " "delegation point", iq->dp->name, LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN); @@ -1223,6 +1416,28 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, */ if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags, iq->dp)) { + struct delegpt* retdp = NULL; + if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, iq->qchase.qclass, &retdp)) { + if(retdp) { + verbose(VERB_QUERY, "cache has stub " + "or fwd but no addresses, " + "fallback to config"); + iq->dp = delegpt_copy(retdp, + qstate->region); + if(!iq->dp) { + log_err("out of memory in " + "stub/fwd fallback"); + return error_response(qstate, + id, LDNS_RCODE_SERVFAIL); + } + break; + } + verbose(VERB_ALGO, "useless dp " + "but cannot go up, servfail"); + delegpt_log(VERB_ALGO, iq->dp); + return error_response(qstate, id, + LDNS_RCODE_SERVFAIL); + } if(dname_is_root(iq->dp->name)) { /* use safety belt */ verbose(VERB_QUERY, "Cache has root NS but " @@ -1269,7 +1484,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, * the same init processing as ones that do not. Request events that reach * this state must have a valid currentDelegationPoint set. * - * This part is primarly handling stub zone priming. Events that reach this + * This part is primarily handling stub zone priming. Events that reach this * state must have a current delegation point. * * @param qstate: query state. @@ -1287,22 +1502,36 @@ processInitRequest2(struct module_qstate* qstate, struct iter_qstate* iq, log_query_info(VERB_QUERY, "resolving (init part 2): ", &qstate->qinfo); + delname = iq->qchase.qname; + delnamelen = iq->qchase.qname_len; if(iq->refetch_glue) { + struct iter_hints_stub* stub; if(!iq->dp) { log_err("internal or malloc fail: no dp for refetch"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } - delname = iq->dp->name; - delnamelen = iq->dp->namelen; - } else { - delname = iq->qchase.qname; - delnamelen = iq->qchase.qname_len; + /* Do not send queries above stub, do not set delname to dp if + * this is above stub without stub-first. */ + stub = hints_lookup_stub( + qstate->env->hints, iq->qchase.qname, iq->qchase.qclass, + iq->dp); + if(!stub || !stub->dp->has_parent_side_NS || + dname_subdomain_c(iq->dp->name, stub->dp->name)) { + delname = iq->dp->name; + delnamelen = iq->dp->namelen; + } } if(iq->qchase.qtype == LDNS_RR_TYPE_DS || iq->refetch_glue) { if(!dname_is_root(delname)) dname_remove_label(&delname, &delnamelen); iq->refetch_glue = 0; /* if CNAME causes restart, no refetch */ } + + /* see if we have an auth zone to answer from, improves dp from cache + * (if any dp from cache) with auth zone dp, if that is lower */ + if(!auth_zone_delegpt(qstate, iq, delname, delnamelen)) + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + /* Check to see if we need to prime a stub zone. */ if(prime_stub(qstate, iq, id, delname, iq->qchase.qclass)) { /* A priming sub request was made */ @@ -1337,7 +1566,7 @@ processInitRequest3(struct module_qstate* qstate, struct iter_qstate* iq, /* If the RD flag wasn't set, then we just finish with the * cached referral as the response. */ - if(!(qstate->query_flags & BIT_RD)) { + if(!(qstate->query_flags & BIT_RD) && iq->deleg_msg) { iq->response = iq->deleg_msg; if(verbosity >= VERB_ALGO && iq->response) log_dns_msg("no RD requested, using delegation msg", @@ -1544,35 +1773,6 @@ query_for_targets(struct module_qstate* qstate, struct iter_qstate* iq, return 1; } -/** see if last resort is possible - does config allow queries to parent */ -static int -can_have_last_resort(struct module_env* env, struct delegpt* dp, - struct iter_qstate* iq) -{ - struct delegpt* fwddp; - struct iter_hints_stub* stub; - /* do not process a last resort (the parent side) if a stub - * or forward is configured, because we do not want to go 'above' - * the configured servers */ - if(!dname_is_root(dp->name) && (stub = (struct iter_hints_stub*) - name_tree_find(&env->hints->tree, dp->name, dp->namelen, - dp->namelabs, iq->qchase.qclass)) && - /* has_parent side is turned off for stub_first, where we - * are allowed to go to the parent */ - stub->dp->has_parent_side_NS) { - verbose(VERB_QUERY, "configured stub servers failed -- returning SERVFAIL"); - return 0; - } - if((fwddp = forwards_find(env->fwds, dp->name, iq->qchase.qclass)) && - /* has_parent_side is turned off for forward_first, where - * we are allowed to go to the parent */ - fwddp->has_parent_side_NS) { - verbose(VERB_QUERY, "configured forward servers failed -- returning SERVFAIL"); - return 0; - } - return 1; -} - /** * Called by processQueryTargets when it would like extra targets to query * but it seems to be out of options. At last resort some less appealing @@ -1594,9 +1794,11 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, verbose(VERB_ALGO, "No more query targets, attempting last resort"); log_assert(iq->dp); - if(!can_have_last_resort(qstate->env, iq->dp, iq)) { + if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, + iq->qchase.qclass, NULL)) { /* fail -- no more targets, no more hope of targets, no hope * of a response. */ + verbose(VERB_QUERY, "configured stub or forward servers failed -- returning SERVFAIL"); return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); } if(!iq->dp->has_parent_side_NS && dname_is_root(iq->dp->name)) { @@ -1613,7 +1815,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, for(a = p->target_list; a; a=a->next_target) { (void)delegpt_add_addr(iq->dp, qstate->region, &a->addr, a->addrlen, a->bogus, - a->lame); + a->lame, a->tls_auth_name); } } iq->dp->has_parent_side_NS = 1; @@ -1681,6 +1883,19 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, /* see if we can issue queries to get nameserver addresses */ /* this lookup is not randomized, but sequential. */ for(ns = iq->dp->nslist; ns; ns = ns->next) { + /* if this nameserver is at a delegation point, but that + * delegation point is a stub and we cannot go higher, skip*/ + if( ((ie->supports_ipv6 && !ns->done_pside6) || + (ie->supports_ipv4 && !ns->done_pside4)) && + !can_have_last_resort(qstate->env, ns->name, ns->namelen, + iq->qchase.qclass, NULL)) { + log_nametypeclass(VERB_ALGO, "cannot pside lookup ns " + "because it is also a stub/forward,", + ns->name, LDNS_RR_TYPE_NS, iq->qchase.qclass); + if(ie->supports_ipv6) ns->done_pside6 = 1; + if(ie->supports_ipv4) ns->done_pside4 = 1; + continue; + } /* query for parent-side A and AAAA for nameservers */ if(ie->supports_ipv6 && !ns->done_pside6) { /* Send the AAAA request. */ @@ -1713,10 +1928,11 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, /* if this was a parent-side glue query itself, then store that * failure in cache. */ - if(iq->query_for_pside_glue && !iq->pside_glue) - iter_store_parentside_neg(qstate->env, &qstate->qinfo, - iq->deleg_msg?iq->deleg_msg->rep: - (iq->response?iq->response->rep:NULL)); + if(!qstate->no_cache_store && iq->query_for_pside_glue + && !iq->pside_glue) + iter_store_parentside_neg(qstate->env, &qstate->qinfo, + iq->deleg_msg?iq->deleg_msg->rep: + (iq->response?iq->response->rep:NULL)); verbose(VERB_QUERY, "out of query targets -- returning SERVFAIL"); /* fail -- no more targets, no more hope of targets, no hope @@ -1800,6 +2016,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, int tf_policy; struct delegpt_addr* target; struct outbound_entry* outq; + int auth_fallback = 0; /* NOTE: a request will encounter this state for each target it * needs to send a query to. That is, at least one per referral, @@ -1844,6 +2061,159 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } + if(iq->minimisation_state == INIT_MINIMISE_STATE) { + /* (Re)set qinfo_out to (new) delegation point, except when + * qinfo_out is already a subdomain of dp. This happens when + * increasing by more than one label at once (QNAMEs with more + * than MAX_MINIMISE_COUNT labels). */ + if(!(iq->qinfo_out.qname_len + && dname_subdomain_c(iq->qchase.qname, + iq->qinfo_out.qname) + && dname_subdomain_c(iq->qinfo_out.qname, + iq->dp->name))) { + iq->qinfo_out.qname = iq->dp->name; + iq->qinfo_out.qname_len = iq->dp->namelen; + iq->qinfo_out.qtype = LDNS_RR_TYPE_A; + iq->qinfo_out.qclass = iq->qchase.qclass; + iq->qinfo_out.local_alias = NULL; + iq->minimise_count = 0; + } + + iq->minimisation_state = MINIMISE_STATE; + } + if(iq->minimisation_state == MINIMISE_STATE) { + int qchaselabs = dname_count_labels(iq->qchase.qname); + int labdiff = qchaselabs - + dname_count_labels(iq->qinfo_out.qname); + + iq->qinfo_out.qname = iq->qchase.qname; + iq->qinfo_out.qname_len = iq->qchase.qname_len; + iq->minimise_count++; + iq->minimise_timeout_count = 0; + + iter_dec_attempts(iq->dp, 1); + + /* Limit number of iterations for QNAMEs with more + * than MAX_MINIMISE_COUNT labels. Send first MINIMISE_ONE_LAB + * labels of QNAME always individually. + */ + if(qchaselabs > MAX_MINIMISE_COUNT && labdiff > 1 && + iq->minimise_count > MINIMISE_ONE_LAB) { + if(iq->minimise_count < MAX_MINIMISE_COUNT) { + int multilabs = qchaselabs - 1 - + MINIMISE_ONE_LAB; + int extralabs = multilabs / + MINIMISE_MULTIPLE_LABS; + + if (MAX_MINIMISE_COUNT - iq->minimise_count >= + multilabs % MINIMISE_MULTIPLE_LABS) + /* Default behaviour is to add 1 label + * every iteration. Therefore, decrement + * the extralabs by 1 */ + extralabs--; + if (extralabs < labdiff) + labdiff -= extralabs; + else + labdiff = 1; + } + /* Last minimised iteration, send all labels with + * QTYPE=NS */ + else + labdiff = 1; + } + + if(labdiff > 1) { + verbose(VERB_QUERY, "removing %d labels", labdiff-1); + dname_remove_labels(&iq->qinfo_out.qname, + &iq->qinfo_out.qname_len, + labdiff-1); + } + if(labdiff < 1 || (labdiff < 2 + && (iq->qchase.qtype == LDNS_RR_TYPE_DS + || iq->qchase.qtype == LDNS_RR_TYPE_A))) + /* Stop minimising this query, resolve "as usual" */ + iq->minimisation_state = DONOT_MINIMISE_STATE; + else if(!qstate->no_cache_lookup) { + struct dns_msg* msg = dns_cache_lookup(qstate->env, + iq->qinfo_out.qname, iq->qinfo_out.qname_len, + iq->qinfo_out.qtype, iq->qinfo_out.qclass, + qstate->query_flags, qstate->region, + qstate->env->scratch, 0); + if(msg && msg->rep->an_numrrsets == 0 + && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NOERROR) + /* no need to send query if it is already + * cached as NOERROR/NODATA */ + return 1; + } + } + if(iq->minimisation_state == SKIP_MINIMISE_STATE) { + if(iq->minimise_timeout_count < MAX_MINIMISE_TIMEOUT_COUNT) + /* Do not increment qname, continue incrementing next + * iteration */ + iq->minimisation_state = MINIMISE_STATE; + else if(!qstate->env->cfg->qname_minimisation_strict) + /* Too many time-outs detected for this QNAME and QTYPE. + * We give up, disable QNAME minimisation. */ + iq->minimisation_state = DONOT_MINIMISE_STATE; + } + if(iq->minimisation_state == DONOT_MINIMISE_STATE) + iq->qinfo_out = iq->qchase; + + /* now find an answer to this query */ + /* see if authority zones have an answer */ + /* now we know the dp, we can check the auth zone for locally hosted + * contents */ + if(!iq->auth_zone_avoid && qstate->blacklist) { + if(auth_zones_can_fallback(qstate->env->auth_zones, + iq->dp->name, iq->dp->namelen, iq->qinfo_out.qclass)) { + /* if cache is blacklisted and this zone allows us + * to fallback to the internet, then do so, and + * fetch results from the internet servers */ + iq->auth_zone_avoid = 1; + } + } + if(iq->auth_zone_avoid) { + iq->auth_zone_avoid = 0; + auth_fallback = 1; + } else if(auth_zones_lookup(qstate->env->auth_zones, &iq->qinfo_out, + qstate->region, &iq->response, &auth_fallback, iq->dp->name, + iq->dp->namelen)) { + /* use this as a response to be processed by the iterator */ + if(verbosity >= VERB_ALGO) { + log_dns_msg("msg from auth zone", + &iq->response->qinfo, iq->response->rep); + } + if((iq->chase_flags&BIT_RD) && !(iq->response->rep->flags&BIT_AA)) { + verbose(VERB_ALGO, "forwarder, ignoring referral from auth zone"); + } else { + lock_rw_wrlock(&qstate->env->auth_zones->lock); + qstate->env->auth_zones->num_query_up++; + lock_rw_unlock(&qstate->env->auth_zones->lock); + iq->num_current_queries++; + iq->chase_to_rd = 0; + iq->dnssec_lame_query = 0; + iq->auth_zone_response = 1; + return next_state(iq, QUERY_RESP_STATE); + } + } + iq->auth_zone_response = 0; + if(auth_fallback == 0) { + /* like we got servfail from the auth zone lookup, and + * no internet fallback */ + verbose(VERB_ALGO, "auth zone lookup failed, no fallback," + " servfail"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } + if(iq->dp && iq->dp->auth_dp) { + /* we wanted to fallback, but had no delegpt, only the + * auth zone generated delegpt, create an actual one */ + iq->auth_zone_avoid = 1; + return next_state(iq, INIT_REQUEST_STATE); + } + /* but mostly, fallback==1 (like, when no such auth zone exists) + * and we continue with lookups */ + tf_policy = 0; /* < not <=, because although the array is large enough for <=, the * generated query will immediately be discarded due to depth and @@ -1914,7 +2284,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, target = iter_server_selection(ie, qstate->env, iq->dp, iq->dp->name, iq->dp->namelen, iq->qchase.qtype, &iq->dnssec_lame_query, &iq->chase_to_rd, - iq->num_target_queries, qstate->blacklist); + iq->num_target_queries, qstate->blacklist, + qstate->prefetch_leeway); /* If no usable target was selected... */ if(!target) { @@ -2003,80 +2374,14 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) { if(!infra_ratelimit_inc(qstate->env->infra_cache, iq->dp->name, iq->dp->namelen, *qstate->env->now)) { + lock_basic_lock(&ie->queries_ratelimit_lock); + ie->num_queries_ratelimited++; + lock_basic_unlock(&ie->queries_ratelimit_lock); verbose(VERB_ALGO, "query exceeded ratelimits"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } } - if(iq->minimisation_state == INIT_MINIMISE_STATE) { - /* (Re)set qinfo_out to (new) delegation point, except - * when qinfo_out is already a subdomain of dp. This happens - * when resolving ip6.arpa dnames. */ - if(!(iq->qinfo_out.qname_len - && dname_subdomain_c(iq->qchase.qname, - iq->qinfo_out.qname) - && dname_subdomain_c(iq->qinfo_out.qname, - iq->dp->name))) { - iq->qinfo_out.qname = iq->dp->name; - iq->qinfo_out.qname_len = iq->dp->namelen; - iq->qinfo_out.qtype = LDNS_RR_TYPE_NS; - iq->qinfo_out.qclass = iq->qchase.qclass; - } - - iq->minimisation_state = MINIMISE_STATE; - } - if(iq->minimisation_state == MINIMISE_STATE) { - int labdiff = dname_count_labels(iq->qchase.qname) - - dname_count_labels(iq->qinfo_out.qname); - - iq->qinfo_out.qname = iq->qchase.qname; - iq->qinfo_out.qname_len = iq->qchase.qname_len; - - /* Special treatment for ip6.arpa lookups. - * Reverse IPv6 dname has 34 labels, increment the IP part - * (usually first 32 labels) by 8 labels (7 more than the - * default 1 label increment). */ - if(labdiff <= 32 && - dname_subdomain_c(iq->qchase.qname, ie->ip6arpa_dname)) { - labdiff -= 7; - /* Small chance of zone cut after first label. Stop - * minimising */ - if(labdiff <= 1) - labdiff = 0; - } - - if(labdiff > 1) { - verbose(VERB_QUERY, "removing %d labels", labdiff-1); - dname_remove_labels(&iq->qinfo_out.qname, - &iq->qinfo_out.qname_len, - labdiff-1); - } - if(labdiff < 1 || - (labdiff < 2 && iq->qchase.qtype == LDNS_RR_TYPE_DS)) - /* Stop minimising this query, resolve "as usual" */ - iq->minimisation_state = DONOT_MINIMISE_STATE; - else { - struct dns_msg* msg = dns_cache_lookup(qstate->env, - iq->qinfo_out.qname, iq->qinfo_out.qname_len, - iq->qinfo_out.qtype, iq->qinfo_out.qclass, - qstate->query_flags, qstate->region, - qstate->env->scratch); - if(msg && msg->rep->an_numrrsets == 0 - && FLAGS_GET_RCODE(msg->rep->flags) == - LDNS_RCODE_NOERROR) - /* no need to send query if it is already - * cached as NOERROR/NODATA */ - return 1; - } - - } - if(iq->minimisation_state == SKIP_MINIMISE_STATE) - /* Do not increment qname, continue incrementing next - * iteration */ - iq->minimisation_state = MINIMISE_STATE; - if(iq->minimisation_state == DONOT_MINIMISE_STATE) - iq->qinfo_out = iq->qchase; - /* We have a valid target. */ if(verbosity >= VERB_QUERY) { log_query_info(VERB_QUERY, "sending query:", &iq->qinfo_out); @@ -2087,19 +2392,27 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->dnssec_lame_query?" but lame_query anyway": ""); } fptr_ok(fptr_whitelist_modenv_send_query(qstate->env->send_query)); - outq = (*qstate->env->send_query)( - iq->qinfo_out.qname, iq->qinfo_out.qname_len, - iq->qinfo_out.qtype, iq->qinfo_out.qclass, - iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), EDNS_DO|BIT_CD, + outq = (*qstate->env->send_query)(&iq->qinfo_out, + iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), + /* unset CD if to forwarder(RD set) and not dnssec retry + * (blacklist nonempty) and no trust-anchors are configured + * above the qname or on the first attempt when dnssec is on */ + EDNS_DO| ((iq->chase_to_rd||(iq->chase_flags&BIT_RD)!=0)&& + !qstate->blacklist&&(!iter_qname_indicates_dnssec(qstate->env, + &iq->qinfo_out)||target->attempts==1)?0:BIT_CD), iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted( - ie, iq), &target->addr, target->addrlen, iq->dp->name, - iq->dp->namelen, qstate); + ie, iq), &target->addr, target->addrlen, + iq->dp->name, iq->dp->namelen, + (iq->dp->ssl_upstream || qstate->env->cfg->ssl_upstream), + target->tls_auth_name, qstate); if(!outq) { log_addr(VERB_DETAIL, "error sending query to auth server", &target->addr, target->addrlen); if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) infra_ratelimit_dec(qstate->env->infra_cache, iq->dp->name, iq->dp->namelen, *qstate->env->now); + if(qstate->env->cfg->qname_minimisation) + iq->minimisation_state = SKIP_MINIMISE_STATE; return next_state(iq, QUERYTARGETS_STATE); } outbound_list_insert(&iq->outlist, outq); @@ -2143,10 +2456,16 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, int dnsseclame = 0; enum response_type type; iq->num_current_queries--; + + if(!inplace_cb_query_response_call(qstate->env, qstate, iq->response)) + log_err("unable to call query_response callback"); + if(iq->response == NULL) { /* Don't increment qname when QNAME minimisation is enabled */ - if (qstate->env->cfg->qname_minimisation) + if(qstate->env->cfg->qname_minimisation) { + iq->minimise_timeout_count++; iq->minimisation_state = SKIP_MINIMISE_STATE; + } iq->chase_to_rd = 0; iq->dnssec_lame_query = 0; verbose(VERB_ALGO, "query response was timeout"); @@ -2154,15 +2473,18 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } type = response_type_from_server( (int)((iq->chase_flags&BIT_RD) || iq->chase_to_rd), - iq->response, &iq->qchase, iq->dp); + iq->response, &iq->qinfo_out, iq->dp); iq->chase_to_rd = 0; - if(type == RESPONSE_TYPE_REFERRAL && (iq->chase_flags&BIT_RD)) { + if(type == RESPONSE_TYPE_REFERRAL && (iq->chase_flags&BIT_RD) && + !iq->auth_zone_response) { /* When forwarding (RD bit is set), we handle referrals * differently. No queries should be sent elsewhere */ type = RESPONSE_TYPE_ANSWER; } - if(iq->dnssec_expected && !iq->dnssec_lame_query && + if(!qstate->env->cfg->disable_dnssec_lame_check && iq->dnssec_expected + && !iq->dnssec_lame_query && !(iq->chase_flags&BIT_RD) + && iq->sent_count < DNSSEC_LAME_DETECT_COUNT && type != RESPONSE_TYPE_LAME && type != RESPONSE_TYPE_REC_LAME && type != RESPONSE_TYPE_THROWAWAY @@ -2205,6 +2527,22 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } else iter_scrub_ds(iq->response, ns, iq->dp->name); } else iter_scrub_ds(iq->response, NULL, NULL); + if(type == RESPONSE_TYPE_THROWAWAY && + FLAGS_GET_RCODE(iq->response->rep->flags) == LDNS_RCODE_YXDOMAIN) { + /* YXDOMAIN is a permanent error, no need to retry */ + type = RESPONSE_TYPE_ANSWER; + } + if(type == RESPONSE_TYPE_CNAME && iq->response->rep->an_numrrsets >= 1 + && ntohs(iq->response->rep->rrsets[0]->rk.type) == LDNS_RR_TYPE_DNAME) { + uint8_t* sname = NULL; + size_t snamelen = 0; + get_cname_target(iq->response->rep->rrsets[0], &sname, + &snamelen); + if(snamelen && dname_subdomain_c(sname, iq->response->rep->rrsets[0]->rk.dname)) { + /* DNAME to a subdomain loop; do not recurse */ + type = RESPONSE_TYPE_ANSWER; + } + } /* handle each of the type cases */ if(type == RESPONSE_TYPE_ANSWER) { @@ -2232,10 +2570,11 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_target_queries = 0; return processDSNSFind(qstate, iq, id); } - iter_dns_store(qstate->env, &iq->response->qinfo, - iq->response->rep, 0, qstate->prefetch_leeway, - iq->dp&&iq->dp->has_parent_side_NS, - qstate->region, qstate->query_flags); + if(!qstate->no_cache_store) + iter_dns_store(qstate->env, &iq->response->qinfo, + iq->response->rep, 0, qstate->prefetch_leeway, + iq->dp&&iq->dp->has_parent_side_NS, + qstate->region, qstate->query_flags); /* close down outstanding requests to be discarded */ outbound_list_clear(&iq->outlist); iq->num_current_queries = 0; @@ -2248,12 +2587,44 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, &qstate->reply->addr, qstate->reply->addrlen, qstate->region); if(iq->minimisation_state != DONOT_MINIMISE_STATE) { - /* Best effort qname-minimisation. - * Stop minimising and send full query when RCODE - * is not NOERROR */ if(FLAGS_GET_RCODE(iq->response->rep->flags) != - LDNS_RCODE_NOERROR) + LDNS_RCODE_NOERROR) { + if(qstate->env->cfg->qname_minimisation_strict) + return final_state(iq); + /* Best effort qname-minimisation. + * Stop minimising and send full query when + * RCODE is not NOERROR. */ iq->minimisation_state = DONOT_MINIMISE_STATE; + } + if(FLAGS_GET_RCODE(iq->response->rep->flags) == + LDNS_RCODE_NXDOMAIN) { + /* Stop resolving when NXDOMAIN is DNSSEC + * signed. Based on assumption that nameservers + * serving signed zones do not return NXDOMAIN + * for empty-non-terminals. */ + if(iq->dnssec_expected) + return final_state(iq); + /* Make subrequest to validate intermediate + * NXDOMAIN if harden-below-nxdomain is + * enabled. */ + if(qstate->env->cfg->harden_below_nxdomain) { + struct module_qstate* subq = NULL; + log_query_info(VERB_QUERY, + "schedule NXDOMAIN validation:", + &iq->response->qinfo); + if(!generate_sub_request( + iq->response->qinfo.qname, + iq->response->qinfo.qname_len, + iq->response->qinfo.qtype, + iq->response->qinfo.qclass, + qstate, id, iq, + INIT_REQUEST_STATE, + FINISHED_STATE, &subq, 1)) + verbose(VERB_ALGO, + "could not validate NXDOMAIN " + "response"); + } + } return next_state(iq, QUERYTARGETS_STATE); } return final_state(iq); @@ -2271,7 +2642,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } /* if hardened, only store referral if we asked for it */ - if(!qstate->env->cfg->harden_referral_path || + if(!qstate->no_cache_store && + (!qstate->env->cfg->harden_referral_path || ( qstate->qinfo.qtype == LDNS_RR_TYPE_NS && (qstate->query_flags&BIT_RD) && !(qstate->query_flags&BIT_CD) @@ -2286,7 +2658,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->qchase.qname, iq->qchase.qname_len, LDNS_RR_TYPE_NS, iq->qchase.qclass) ) - )) { + ))) { /* Store the referral under the current query */ /* no prefetch-leeway, since its not the answer */ iter_dns_store(qstate->env, &iq->response->qinfo, @@ -2299,16 +2671,17 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->response->rep, iq->dp->name); } /* store parent-side-in-zone-glue, if directly queried for */ - if(iq->query_for_pside_glue && !iq->pside_glue) { - iq->pside_glue = reply_find_rrset(iq->response->rep, - iq->qchase.qname, iq->qchase.qname_len, - iq->qchase.qtype, iq->qchase.qclass); - if(iq->pside_glue) { - log_rrset_key(VERB_ALGO, "found parent-side " - "glue", iq->pside_glue); - iter_store_parentside_rrset(qstate->env, - iq->pside_glue); - } + if(!qstate->no_cache_store && iq->query_for_pside_glue + && !iq->pside_glue) { + iq->pside_glue = reply_find_rrset(iq->response->rep, + iq->qchase.qname, iq->qchase.qname_len, + iq->qchase.qtype, iq->qchase.qclass); + if(iq->pside_glue) { + log_rrset_key(VERB_ALGO, "found parent-side " + "glue", iq->pside_glue); + iter_store_parentside_rrset(qstate->env, + iq->pside_glue); + } } /* Reset the event state, setting the current delegation @@ -2389,22 +2762,26 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* NOTE : set referral=1, so that rrsets get stored but not * the partial query answer (CNAME only). */ /* prefetchleeway applied because this updates answer parts */ - iter_dns_store(qstate->env, &iq->response->qinfo, - iq->response->rep, 1, qstate->prefetch_leeway, - iq->dp&&iq->dp->has_parent_side_NS, NULL, - qstate->query_flags); + if(!qstate->no_cache_store) + iter_dns_store(qstate->env, &iq->response->qinfo, + iq->response->rep, 1, qstate->prefetch_leeway, + iq->dp&&iq->dp->has_parent_side_NS, NULL, + qstate->query_flags); /* set the current request's qname to the new value. */ iq->qchase.qname = sname; iq->qchase.qname_len = snamelen; - if (qstate->env->cfg->qname_minimisation) - iq->minimisation_state = INIT_MINIMISE_STATE; /* Clear the query state, since this is a query restart. */ iq->deleg_msg = NULL; iq->dp = NULL; iq->dsns_point = NULL; - /* Note the query restart. */ - iq->query_restart_count++; + iq->auth_zone_response = 0; iq->sent_count = 0; + if(iq->minimisation_state != MINIMISE_STATE) + /* Only count as query restart when it is not an extra + * query as result of qname minimisation. */ + iq->query_restart_count++; + if(qstate->env->cfg->qname_minimisation) + iq->minimisation_state = INIT_MINIMISE_STATE; /* stop current outstanding queries. * FIXME: should the outstanding queries be waited for and @@ -2471,8 +2848,28 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* LAME, THROWAWAY and "unknown" all end up here. * Recycle to the QUERYTARGETS state to hopefully try a * different target. */ - if (qstate->env->cfg->qname_minimisation) + if (qstate->env->cfg->qname_minimisation && + !qstate->env->cfg->qname_minimisation_strict) iq->minimisation_state = DONOT_MINIMISE_STATE; + if(iq->auth_zone_response) { + /* can we fallback? */ + iq->auth_zone_response = 0; + if(!auth_zones_can_fallback(qstate->env->auth_zones, + iq->dp->name, iq->dp->namelen, qstate->qinfo.qclass)) { + verbose(VERB_ALGO, "auth zone response bad, and no" + " fallback possible, servfail"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } + verbose(VERB_ALGO, "auth zone response was bad, " + "fallback enabled"); + iq->auth_zone_avoid = 1; + if(iq->dp->auth_dp) { + /* we are using a dp for the auth zone, with no + * nameservers, get one first */ + iq->dp = NULL; + return next_state(iq, INIT_REQUEST_STATE); + } + } return next_state(iq, QUERYTARGETS_STATE); } @@ -2581,7 +2978,7 @@ processPrimeResponse(struct module_qstate* qstate, int id) /** * Do final processing on responses to target queries. Events reach this * state after the iterative resolution algorithm terminates. This state is - * responsible for reactiving the original event, and housekeeping related + * responsible for reactivating the original event, and housekeeping related * to received target responses (caching, updating the current delegation * point, etc). * Callback from walk_supers for every super state that is interested in @@ -2605,6 +3002,10 @@ processTargetResponse(struct module_qstate* qstate, int id, log_query_info(VERB_ALGO, "processTargetResponse", &qstate->qinfo); log_query_info(VERB_ALGO, "processTargetResponse super", &forq->qinfo); + /* Tell the originating event that this target query has finished + * (regardless if it succeeded or not). */ + foriq->num_target_queries--; + /* check to see if parent event is still interested (in orig name). */ if(!foriq->dp) { verbose(VERB_ALGO, "subq: parent not interested, was reset"); @@ -2620,10 +3021,6 @@ processTargetResponse(struct module_qstate* qstate, int id, return; } - /* Tell the originating event that this target query has finished - * (regardless if it succeeded or not). */ - foriq->num_target_queries--; - /* if iq->query_for_pside_glue then add the pside_glue (marked lame) */ if(iq->pside_glue) { /* if the pside_glue is NULL, then it could not be found, @@ -2871,10 +3268,11 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, &qstate->qinfo); /* store negative cache element for parent side glue. */ - if(iq->query_for_pside_glue && !iq->pside_glue) - iter_store_parentside_neg(qstate->env, &qstate->qinfo, - iq->deleg_msg?iq->deleg_msg->rep: - (iq->response?iq->response->rep:NULL)); + if(!qstate->no_cache_store && iq->query_for_pside_glue + && !iq->pside_glue) + iter_store_parentside_neg(qstate->env, &qstate->qinfo, + iq->deleg_msg?iq->deleg_msg->rep: + (iq->response?iq->response->rep:NULL)); if(!iq->response) { verbose(VERB_ALGO, "No response is set, servfail"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); @@ -2910,7 +3308,7 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, /* store message with the finished prepended items, * but only if we did recursion. The nonrecursion referral * from cache does not need to be stored in the msg cache. */ - if(qstate->query_flags&BIT_RD) { + if(!qstate->no_cache_store && qstate->query_flags&BIT_RD) { iter_dns_store(qstate->env, &qstate->qinfo, iq->response->rep, 0, qstate->prefetch_leeway, iq->dp&&iq->dp->has_parent_side_NS, @@ -2923,7 +3321,7 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, } /* - * Return priming query results to interestes super querystates. + * Return priming query results to interested super querystates. * * Sets the delegation point and delegation message (not nonRD queries). * This is a callback from walk_supers. @@ -3082,8 +3480,25 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, goto handle_it; } /* edns is not examined, but removed from message to help cache */ - if(parse_extract_edns(prs, &edns) != LDNS_RCODE_NOERROR) + if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + LDNS_RCODE_NOERROR) goto handle_it; + + /* Copy the edns options we may got from the back end */ + if(edns.opt_list) { + qstate->edns_opts_back_in = edns_opt_copy_region(edns.opt_list, + qstate->region); + if(!qstate->edns_opts_back_in) { + log_err("out of memory on incoming message"); + /* like packet got dropped */ + goto handle_it; + } + if(!inplace_cb_edns_back_parsed_call(qstate->env, qstate)) { + log_err("unable to call edns_back_parsed callback"); + goto handle_it; + } + } + /* remove CD-bit, we asked for in case we handle validation ourself */ prs->flags &= ~BIT_CD; diff --git a/external/unbound/iterator/iterator.h b/external/unbound/iterator/iterator.h index b7aa82e..67ffeb1 100644 --- a/external/unbound/iterator/iterator.h +++ b/external/unbound/iterator/iterator.h @@ -36,7 +36,7 @@ /** * \file * - * This file contains a module that performs recusive iterative DNS query + * This file contains a module that performs recursive iterative DNS query * processing. */ @@ -51,7 +51,7 @@ struct iter_forwards; struct iter_donotq; struct iter_prep_list; struct iter_priv; -struct rbtree_t; +struct rbtree_type; /** max number of targets spawned for a query and its subqueries */ #define MAX_TARGET_COUNT 64 @@ -61,6 +61,23 @@ struct rbtree_t; #define MAX_REFERRAL_COUNT 130 /** max number of queries-sent-out. Make sure large NS set does not loop */ #define MAX_SENT_COUNT 32 +/** max number of queries for which to perform dnsseclameness detection, + * (rrsigs missing detection) after that, just pick up that response */ +#define DNSSEC_LAME_DETECT_COUNT 4 +/** + * max number of QNAME minimisation iterations. Limits number of queries for + * QNAMEs with a lot of labels. +*/ +#define MAX_MINIMISE_COUNT 10 +/* max number of time-outs for minimised query. Prevents resolving failures + * when the QNAME minimisation QTYPE is blocked. */ +#define MAX_MINIMISE_TIMEOUT_COUNT 3 +/** + * number of labels from QNAME that are always send individually when using + * QNAME minimisation, even when the number of labels of the QNAME is bigger + * tham MAX_MINIMISE_COUNT */ +#define MINIMISE_ONE_LAB 4 +#define MINIMISE_MULTIPLE_LABS (MAX_MINIMISE_COUNT - MINIMISE_ONE_LAB) /** at what query-sent-count to stop target fetch policy */ #define TARGET_FETCH_STOP 3 /** how nice is a server without further information, in msec @@ -98,7 +115,7 @@ struct iter_env { struct iter_priv* priv; /** whitelist for capsforid names */ - struct rbtree_t* caps_white; + struct rbtree_type* caps_white; /** The maximum dependency depth that this resolver will pursue. */ int max_dependency_depth; @@ -113,8 +130,10 @@ struct iter_env { */ int* target_fetch_policy; - /** ip6.arpa dname in wireformat, used for qname-minimisation */ - uint8_t* ip6arpa_dname; + /** lock on ratelimit counter */ + lock_basic_type queries_ratelimit_lock; + /** number of queries that have been ratelimited */ + size_t num_queries_ratelimited; }; /** @@ -123,11 +142,11 @@ struct iter_env { enum minimisation_state { /** * (Re)start minimisation. Outgoing QNAME should be set to dp->name. - * State entered on new query or after following refferal or CNAME. + * State entered on new query or after following referral or CNAME. */ INIT_MINIMISE_STATE = 0, /** - * QNAME minimisataion ongoing. Increase QNAME on every iteration. + * QNAME minimisation ongoing. Increase QNAME on every iteration. */ MINIMISE_STATE, /** @@ -165,7 +184,7 @@ enum iter_state { /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. - * This state is reponsible for iterating through a list of + * This state is responsible for iterating through a list of * nameserver targets. */ QUERYTARGETS_STATE, @@ -349,7 +368,7 @@ struct iter_qstate { /** list of pending queries to authoritative servers. */ struct outbound_list outlist; - /** QNAME minimisation state */ + /** QNAME minimisation state, RFC7816 */ enum minimisation_state minimisation_state; /** @@ -357,6 +376,22 @@ struct iter_qstate { * when qname minimisation is enabled. */ struct query_info qinfo_out; + + /** + * Count number of QNAME minimisation iterations. Used to limit number of + * outgoing queries when QNAME minimisation is enabled. + */ + int minimise_count; + + /** + * Count number of time-outs. Used to prevent resolving failures when + * the QNAME minimisation QTYPE is blocked. */ + int minimise_timeout_count; + + /** True if the current response is from auth_zone */ + int auth_zone_response; + /** True if the auth_zones should not be consulted for the query */ + int auth_zone_avoid; }; /** @@ -400,7 +435,7 @@ void iter_operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* outbound); /** - * Return priming query results to interestes super querystates. + * Return priming query results to interested super querystates. * * Sets the delegation point and delegation message (not nonRD queries). * This is a callback from walk_supers. diff --git a/external/unbound/libunbound/context.c b/external/unbound/libunbound/context.c index 4469b5b..6ac8086 100644 --- a/external/unbound/libunbound/context.c +++ b/external/unbound/libunbound/context.c @@ -47,6 +47,7 @@ #include "services/localzone.h" #include "services/cache/rrset.h" #include "services/cache/infra.h" +#include "services/authzone.h" #include "util/data/msgreply.h" #include "util/storage/slabhash.h" #include "sldns/sbuffer.h" @@ -62,11 +63,14 @@ context_finalize(struct ub_ctx* ctx) config_apply(cfg); if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env)) return UB_INITFAIL; + log_edns_known_options(VERB_ALGO, ctx->env); ctx->local_zones = local_zones_create(); if(!ctx->local_zones) return UB_NOMEM; if(!local_zones_apply_cfg(ctx->local_zones, cfg)) return UB_INITFAIL; + if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1)) + return UB_INITFAIL; if(!ctx->env->msg_cache || cfg->msg_cache_size != slabhash_get_size(ctx->env->msg_cache) || cfg->msg_cache_slabs != ctx->env->msg_cache->size) { @@ -126,7 +130,7 @@ find_id(struct ub_ctx* ctx, int* id) struct ctx_query* context_new(struct ub_ctx* ctx, const char* name, int rrtype, int rrclass, - ub_callback_t cb, void* cbarg) + ub_callback_type cb, ub_event_callback_type cb_event, void* cbarg) { struct ctx_query* q = (struct ctx_query*)calloc(1, sizeof(*q)); if(!q) return NULL; @@ -138,8 +142,9 @@ context_new(struct ub_ctx* ctx, const char* name, int rrtype, int rrclass, } lock_basic_unlock(&ctx->cfglock); q->node.key = &q->querynum; - q->async = (cb != NULL); + q->async = (cb != NULL || cb_event != NULL); q->cb = cb; + q->cb_event = cb_event; q->cb_arg = cbarg; q->res = (struct ub_result*)calloc(1, sizeof(*q->res)); if(!q->res) { diff --git a/external/unbound/libunbound/context.h b/external/unbound/libunbound/context.h index 31ca09c..1114722 100644 --- a/external/unbound/libunbound/context.h +++ b/external/unbound/libunbound/context.h @@ -45,11 +45,12 @@ #include "util/rbtree.h" #include "services/modstack.h" #include "libunbound/unbound.h" +#include "libunbound/unbound-event.h" #include "util/data/packed_rrset.h" struct libworker; struct tube; struct sldns_buffer; -struct event_base; +struct ub_event_base; /** * The context structure @@ -61,17 +62,17 @@ struct event_base; struct ub_ctx { /* --- pipes --- */ /** mutex on query write pipe */ - lock_basic_t qqpipe_lock; + lock_basic_type qqpipe_lock; /** the query write pipe */ struct tube* qq_pipe; /** mutex on result read pipe */ - lock_basic_t rrpipe_lock; + lock_basic_type rrpipe_lock; /** the result read pipe */ struct tube* rr_pipe; /* --- shared data --- */ /** mutex for access to env.cfg, finalized and dothread */ - lock_basic_t cfglock; + lock_basic_type cfglock; /** * The context has been finalized * This is after config when the first resolve is done. @@ -84,13 +85,13 @@ struct ub_ctx { /** pid of bg worker process */ pid_t bg_pid; /** tid of bg worker thread */ - ub_thread_t bg_tid; + ub_thread_type bg_tid; /** do threading (instead of forking) for async resolution */ int dothread; /** next thread number for new threads */ int thr_next_num; - /** if logfile is overriden */ + /** if logfile is overridden */ int logfile_override; /** what logfile to use instead */ FILE* log_out; @@ -114,7 +115,7 @@ struct ub_ctx { struct ub_randstate* seed_rnd; /** event base for event oriented interface */ - struct event_base* event_base; + struct ub_event_base* event_base; /** libworker for event based interface */ struct libworker* event_worker; @@ -129,7 +130,7 @@ struct ub_ctx { * Used to see if querynum is free for use. * Content of type ctx_query. */ - rbtree_t queries; + rbtree_type queries; }; /** @@ -140,7 +141,7 @@ struct ub_ctx { */ struct ctx_query { /** node in rbtree, must be first entry, key is ptr to the querynum */ - struct rbnode_t node; + struct rbnode_type node; /** query id number, key for node */ int querynum; /** was this an async query? */ @@ -148,8 +149,10 @@ struct ctx_query { /** was this query cancelled (for bg worker) */ int cancelled; - /** for async query, the callback function */ - ub_callback_t cb; + /** for async query, the callback function of type ub_callback_type */ + ub_callback_type cb; + /** for event callbacks the type is ub_event_callback_type */ + ub_event_callback_type cb_event; /** for async query, the callback user arg */ void* cb_arg; @@ -238,11 +241,13 @@ void context_query_delete(struct ctx_query* q); * @param rrtype: type * @param rrclass: class * @param cb: callback for async, or NULL for sync. + * @param cb_event: event callback for async, or NULL for sync. * @param cbarg: user arg for async queries. * @return new ctx_query or NULL for malloc failure. */ struct ctx_query* context_new(struct ub_ctx* ctx, const char* name, int rrtype, - int rrclass, ub_callback_t cb, void* cbarg); + int rrclass, ub_callback_type cb, ub_event_callback_type cb_event, + void* cbarg); /** * Get a new alloc. Creates a new one or uses a cached one. diff --git a/external/unbound/libunbound/libunbound.c b/external/unbound/libunbound/libunbound.c index 17f50e8..275e8d2 100644 --- a/external/unbound/libunbound/libunbound.c +++ b/external/unbound/libunbound/libunbound.c @@ -37,7 +37,7 @@ * \file * * This file contains functions to resolve DNS queries and - * validate the answers. Synchonously and asynchronously. + * validate the answers. Synchronously and asynchronously. * */ @@ -57,10 +57,12 @@ #include "util/random.h" #include "util/net_help.h" #include "util/tube.h" +#include "util/ub_event.h" #include "services/modstack.h" #include "services/localzone.h" #include "services/cache/infra.h" #include "services/cache/rrset.h" +#include "services/authzone.h" #include "sldns/sbuffer.h" #ifdef HAVE_PTHREAD #include @@ -87,6 +89,7 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) WSADATA wsa_data; #endif + checklock_start(); log_init(NULL, 0, NULL); /* logs to stderr */ log_ident_set("libunbound"); #ifdef USE_WINSOCK @@ -131,6 +134,25 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) errno = ENOMEM; return NULL; } + /* init edns_known_options */ + if(!edns_known_options_init(ctx->env)) { + config_delete(ctx->env->cfg); + free(ctx->env); + ub_randfree(ctx->seed_rnd); + free(ctx); + errno = ENOMEM; + return NULL; + } + ctx->env->auth_zones = auth_zones_create(); + if(!ctx->env->auth_zones) { + edns_known_options_delete(ctx->env); + config_delete(ctx->env->cfg); + free(ctx->env); + ub_randfree(ctx->seed_rnd); + free(ctx); + errno = ENOMEM; + return NULL; + } ctx->env->alloc = &ctx->superalloc; ctx->env->worker = NULL; ctx->env->need_to_validate = 0; @@ -150,6 +172,7 @@ ub_ctx_create(void) ub_randfree(ctx->seed_rnd); config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); + edns_known_options_delete(ctx->env); free(ctx->env); free(ctx); errno = e; @@ -161,6 +184,7 @@ ub_ctx_create(void) ub_randfree(ctx->seed_rnd); config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); + edns_known_options_delete(ctx->env); free(ctx->env); free(ctx); errno = e; @@ -169,6 +193,20 @@ ub_ctx_create(void) return ctx; } +struct ub_ctx* +ub_ctx_create_ub_event(struct ub_event_base* ueb) +{ + struct ub_ctx* ctx = ub_ctx_create_nopipe(); + if(!ctx) + return NULL; + /* no pipes, but we have the locks to make sure everything works */ + ctx->created_bg = 0; + ctx->dothread = 1; /* the processing is in the same process, + makes ub_cancel and ub_ctx_delete do the right thing */ + ctx->event_base = ueb; + return ctx; +} + struct ub_ctx* ub_ctx_create_event(struct event_base* eb) { @@ -179,13 +217,17 @@ ub_ctx_create_event(struct event_base* eb) ctx->created_bg = 0; ctx->dothread = 1; /* the processing is in the same process, makes ub_cancel and ub_ctx_delete do the right thing */ - ctx->event_base = eb; + ctx->event_base = ub_libevent_event_base(eb); + if (!ctx->event_base) { + ub_ctx_delete(ctx); + return NULL; + } return ctx; } /** delete q */ static void -delq(rbnode_t* n, void* ATTR_UNUSED(arg)) +delq(rbnode_type* n, void* ATTR_UNUSED(arg)) { struct ctx_query* q = (struct ctx_query*)n; context_query_delete(q); @@ -279,6 +321,8 @@ ub_ctx_delete(struct ub_ctx* ctx) rrset_cache_delete(ctx->env->rrset_cache); infra_delete(ctx->env->infra_cache); config_delete(ctx->env->cfg); + edns_known_options_delete(ctx->env); + auth_zones_delete(ctx->env->auth_zones); free(ctx->env); } ub_randfree(ctx->seed_rnd); @@ -468,7 +512,7 @@ ub_fd(struct ub_ctx* ctx) /** process answer from bg worker */ static int process_answer_detail(struct ub_ctx* ctx, uint8_t* msg, uint32_t len, - ub_callback_t* cb, void** cbarg, int* err, + ub_callback_type* cb, void** cbarg, int* err, struct ub_result** res) { struct ctx_query* q; @@ -535,7 +579,7 @@ static int process_answer(struct ub_ctx* ctx, uint8_t* msg, uint32_t len) { int err; - ub_callback_t cb; + ub_callback_type cb; void* cbarg; struct ub_result* res; int r; @@ -578,7 +622,7 @@ int ub_wait(struct ub_ctx* ctx) { int err; - ub_callback_t cb; + ub_callback_type cb; void* cbarg; struct ub_result* res; int r; @@ -646,7 +690,7 @@ ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, } /* create new ctx_query and attempt to add to the list */ lock_basic_unlock(&ctx->cfglock); - q = context_new(ctx, name, rrtype, rrclass, NULL, NULL); + q = context_new(ctx, name, rrtype, rrclass, NULL, NULL, NULL); if(!q) return UB_NOMEM; /* become a resolver thread for a bit */ @@ -674,7 +718,8 @@ ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, int ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype, - int rrclass, void* mydata, ub_event_callback_t callback, int* async_id) + int rrclass, void* mydata, ub_event_callback_type callback, + int* async_id) { struct ctx_query* q; int r; @@ -698,9 +743,11 @@ ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype, } } + /* set time in case answer comes from cache */ + ub_comm_base_now(ctx->event_worker->base); + /* create new ctx_query and attempt to add to the list */ - q = context_new(ctx, name, rrtype, rrclass, (ub_callback_t)callback, - mydata); + q = context_new(ctx, name, rrtype, rrclass, NULL, callback, mydata); if(!q) return UB_NOMEM; @@ -713,7 +760,7 @@ ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype, int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype, - int rrclass, void* mydata, ub_callback_t callback, int* async_id) + int rrclass, void* mydata, ub_callback_type callback, int* async_id) { struct ctx_query* q; uint8_t* msg = NULL; @@ -745,7 +792,7 @@ ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype, } /* create new ctx_query and attempt to add to the list */ - q = context_new(ctx, name, rrtype, rrclass, callback, mydata); + q = context_new(ctx, name, rrtype, rrclass, callback, NULL, mydata); if(!q) return UB_NOMEM; @@ -924,6 +971,88 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr) return UB_NOERROR; } +int ub_ctx_set_stub(struct ub_ctx* ctx, const char* zone, const char* addr, + int isprime) +{ + char* a; + struct config_stub **prev, *elem; + + /* check syntax for zone name */ + if(zone) { + uint8_t* nm; + int nmlabs; + size_t nmlen; + if(!parse_dname(zone, &nm, &nmlen, &nmlabs)) { + errno=EINVAL; + return UB_SYNTAX; + } + free(nm); + } else { + zone = "."; + } + + /* check syntax for addr (if not NULL) */ + if(addr) { + struct sockaddr_storage storage; + socklen_t stlen; + if(!extstrtoaddr(addr, &storage, &stlen)) { + errno=EINVAL; + return UB_SYNTAX; + } + } + + lock_basic_lock(&ctx->cfglock); + if(ctx->finalized) { + lock_basic_unlock(&ctx->cfglock); + errno=EINVAL; + return UB_AFTERFINAL; + } + + /* arguments all right, now find or add the stub */ + prev = &ctx->env->cfg->stubs; + elem = cfg_stub_find(&prev, zone); + if(!elem && !addr) { + /* not found and we want to delete, nothing to do */ + lock_basic_unlock(&ctx->cfglock); + return UB_NOERROR; + } else if(elem && !addr) { + /* found, and we want to delete */ + *prev = elem->next; + config_delstub(elem); + lock_basic_unlock(&ctx->cfglock); + return UB_NOERROR; + } else if(!elem) { + /* not found, create the stub entry */ + elem=(struct config_stub*)calloc(1, sizeof(struct config_stub)); + if(elem) elem->name = strdup(zone); + if(!elem || !elem->name) { + free(elem); + lock_basic_unlock(&ctx->cfglock); + errno = ENOMEM; + return UB_NOMEM; + } + elem->next = ctx->env->cfg->stubs; + ctx->env->cfg->stubs = elem; + } + + /* add the address to the list and set settings */ + elem->isprime = isprime; + a = strdup(addr); + if(!a) { + lock_basic_unlock(&ctx->cfglock); + errno = ENOMEM; + return UB_NOMEM; + } + if(!cfg_strlist_insert(&elem->addrs, a)) { + lock_basic_unlock(&ctx->cfglock); + free(a); + errno = ENOMEM; + return UB_NOMEM; + } + lock_basic_unlock(&ctx->cfglock); + return UB_NOERROR; +} + int ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname) { @@ -1241,10 +1370,12 @@ const char* ub_version(void) int ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base) { + struct ub_event_base* new_base; + if (!ctx || !ctx->event_base || !base) { return UB_INITFAIL; } - if (ctx->event_base == base) { + if (ub_libevent_get_event_base(ctx->event_base) == base) { /* already set */ return UB_NOERROR; } @@ -1253,9 +1384,11 @@ ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base) { /* destroy the current worker - safe to pass in NULL */ libworker_delete_event(ctx->event_worker); ctx->event_worker = NULL; - ctx->event_base = base; + new_base = ub_libevent_event_base(base); + if (new_base) + ctx->event_base = new_base; ctx->created_bg = 0; ctx->dothread = 1; lock_basic_unlock(&ctx->cfglock); - return UB_NOERROR; + return new_base ? UB_NOERROR : UB_INITFAIL; } diff --git a/external/unbound/libunbound/libworker.c b/external/unbound/libunbound/libworker.c index 72b6153..3dcaa78 100644 --- a/external/unbound/libunbound/libworker.c +++ b/external/unbound/libunbound/libworker.c @@ -55,6 +55,7 @@ #include "services/localzone.h" #include "services/cache/rrset.h" #include "services/outbound_list.h" +#include "services/authzone.h" #include "util/fptr_wlist.h" #include "util/module.h" #include "util/regional.h" @@ -119,7 +120,7 @@ libworker_delete_event(struct libworker* w) /** setup fresh libworker struct */ static struct libworker* -libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) +libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) { unsigned int seed; struct libworker* w = (struct libworker*)calloc(1, sizeof(*w)); @@ -157,8 +158,9 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) hints_delete(w->env->hints); w->env->hints = NULL; } - if(cfg->ssl_upstream) { - w->sslctx = connect_sslctx_create(NULL, NULL, NULL); + if(cfg->ssl_upstream || (cfg->tls_cert_bundle && cfg->tls_cert_bundle[0]) || cfg->tls_win_cert) { + w->sslctx = connect_sslctx_create(NULL, NULL, + cfg->tls_cert_bundle, cfg->tls_win_cert); if(!w->sslctx) { /* to make the setup fail after unlock */ hints_delete(w->env->hints); @@ -214,6 +216,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) libworker_delete(w); return NULL; } + w->env->worker_base = w->base; if(!w->is_bg || w->is_bg_thread) { lock_basic_lock(&ctx->cfglock); } @@ -232,8 +235,10 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) cfg->do_tcp?cfg->outgoing_num_tcp:0, w->env->infra_cache, w->env->rnd, cfg->use_caps_bits_for_id, ports, numports, cfg->unwanted_threshold, - &libworker_alloc_cleanup, w, cfg->do_udp, w->sslctx, + cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w, + cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, cfg->delay_close, NULL); + w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); } @@ -250,6 +255,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) w->env->send_query = &libworker_send_query; w->env->detach_subs = &mesh_detach_subs; w->env->attach_sub = &mesh_attach_sub; + w->env->add_sub = &mesh_add_sub; w->env->kill_sub = &mesh_state_delete; w->env->detect_cycle = &mesh_detect_cycle; comm_base_timept(w->base, &w->env->now, &w->env->now_tv); @@ -257,7 +263,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct event_base* eb) } struct libworker* libworker_create_event(struct ub_ctx* ctx, - struct event_base* eb) + struct ub_event_base* eb) { return libworker_setup(ctx, 0, eb); } @@ -293,6 +299,7 @@ libworker_do_cmd(struct libworker* w, uint8_t* msg, uint32_t len) log_err("unknown command for bg worker %d", (int)context_serial_getcmd(msg, len)); /* and fall through to quit */ + /* fallthrough */ case UB_LIBCMD_QUIT: free(msg); comm_base_exit(w->base); @@ -358,6 +365,7 @@ libworker_dobg(void* arg) /* cleanup */ m = UB_LIBCMD_QUIT; + w->want_quit = 1; tube_remove_bg_listen(w->ctx->qq_pipe); tube_remove_bg_write(w->ctx->rr_pipe); libworker_delete(w); @@ -416,25 +424,6 @@ int libworker_bg(struct ub_ctx* ctx) return UB_NOERROR; } -/** get msg reply struct (in temp region) */ -static struct reply_info* -parse_reply(sldns_buffer* pkt, struct regional* region, struct query_info* qi) -{ - struct reply_info* rep; - struct msg_parse* msg; - if(!(msg = regional_alloc(region, sizeof(*msg)))) { - return NULL; - } - memset(msg, 0, sizeof(*msg)); - sldns_buffer_set_position(pkt, 0); - if(parse_packet(pkt, msg, region) != 0) - return 0; - if(!parse_create_msg(pkt, msg, NULL, qi, &rep, region)) { - return 0; - } - return rep; -} - /** insert canonname */ static int fill_canon(struct ub_result* res, uint8_t* s) @@ -508,7 +497,7 @@ libworker_enter_result(struct ub_result* res, sldns_buffer* buf, struct query_info rq; struct reply_info* rep; res->rcode = LDNS_RCODE_SERVFAIL; - rep = parse_reply(buf, temp, &rq); + rep = parse_reply_in_temp_region(buf, temp, &rq); if(!rep) { log_err("cannot parse buf"); return; /* error parsing buf, or out of memory */ @@ -524,7 +513,8 @@ libworker_enter_result(struct ub_result* res, sldns_buffer* buf, res->nxdomain = 1; if(msg_security == sec_status_secure) res->secure = 1; - if(msg_security == sec_status_bogus) + if(msg_security == sec_status_bogus || + msg_security == sec_status_secure_sentinel_fail) res->bogus = 1; } @@ -572,14 +562,17 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, { qinfo->qtype = (uint16_t)q->res->qtype; qinfo->qclass = (uint16_t)q->res->qclass; + qinfo->local_alias = NULL; qinfo->qname = sldns_str2wire_dname(q->res->qname, &qinfo->qname_len); if(!qinfo->qname) { return 0; } + qinfo->local_alias = NULL; edns->edns_present = 1; edns->ext_rcode = 0; edns->edns_version = 0; edns->bits = EDNS_DO; + edns->opt_list = NULL; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) edns->udp_size = (uint16_t)sldns_buffer_capacity( w->back->udp_buff); @@ -605,8 +598,18 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q) /* see if there is a fixed answer */ sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); - if(local_zones_answer(ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL)) { + if(local_zones_answer(ctx->local_zones, w->env, &qinfo, &edns, + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, + NULL, 0, NULL, 0, NULL)) { + regional_free_all(w->env->scratch); + libworker_fillup_fg(q, LDNS_RCODE_NOERROR, + w->back->udp_buff, sec_status_insecure, NULL); + libworker_delete(w); + free(qinfo.qname); + return UB_NOERROR; + } + if(ctx->env->auth_zones && auth_zones_answer(ctx->env->auth_zones, + w->env, &qinfo, &edns, w->back->udp_buff, w->env->scratch)) { regional_free_all(w->env->scratch); libworker_fillup_fg(q, LDNS_RCODE_NOERROR, w->back->udp_buff, sec_status_insecure, NULL); @@ -634,7 +637,7 @@ libworker_event_done_cb(void* arg, int rcode, sldns_buffer* buf, enum sec_status s, char* why_bogus) { struct ctx_query* q = (struct ctx_query*)arg; - ub_event_callback_t cb = (ub_event_callback_t)q->cb; + ub_event_callback_type cb = q->cb_event; void* cb_arg = q->cb_arg; int cancelled = q->cancelled; @@ -675,8 +678,17 @@ int libworker_attach_mesh(struct ub_ctx* ctx, struct ctx_query* q, /* see if there is a fixed answer */ sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); - if(local_zones_answer(ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL)) { + if(local_zones_answer(ctx->local_zones, w->env, &qinfo, &edns, + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, + NULL, 0, NULL, 0, NULL)) { + regional_free_all(w->env->scratch); + free(qinfo.qname); + libworker_event_done_cb(q, LDNS_RCODE_NOERROR, + w->back->udp_buff, sec_status_insecure, NULL); + return UB_NOERROR; + } + if(ctx->env->auth_zones && auth_zones_answer(ctx->env->auth_zones, + w->env, &qinfo, &edns, w->back->udp_buff, w->env->scratch)) { regional_free_all(w->env->scratch); free(qinfo.qname); libworker_event_done_cb(q, LDNS_RCODE_NOERROR, @@ -703,6 +715,10 @@ add_bg_result(struct libworker* w, struct ctx_query* q, sldns_buffer* pkt, uint8_t* msg = NULL; uint32_t len = 0; + if(w->want_quit) { + context_query_delete(q); + return; + } /* serialize and delete unneeded q */ if(w->is_bg_thread) { lock_basic_lock(&w->ctx->cfglock); @@ -743,7 +759,7 @@ libworker_bg_done_cb(void* arg, int rcode, sldns_buffer* buf, enum sec_status s, { struct ctx_query* q = (struct ctx_query*)arg; - if(q->cancelled) { + if(q->cancelled || q->w->back->want_to_quit) { if(q->w->is_bg_thread) { /* delete it now */ struct ub_ctx* ctx = q->w->ctx; @@ -795,8 +811,17 @@ handle_newq(struct libworker* w, uint8_t* buf, uint32_t len) /* see if there is a fixed answer */ sldns_buffer_write_u16_at(w->back->udp_buff, 0, qid); sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); - if(local_zones_answer(w->ctx->local_zones, &qinfo, &edns, - w->back->udp_buff, w->env->scratch, NULL)) { + if(local_zones_answer(w->ctx->local_zones, w->env, &qinfo, &edns, + w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, + NULL, 0, NULL, 0, NULL)) { + regional_free_all(w->env->scratch); + q->msg_security = sec_status_insecure; + add_bg_result(w, q, w->back->udp_buff, UB_NOERROR, NULL); + free(qinfo.qname); + return; + } + if(w->ctx->env->auth_zones && auth_zones_answer(w->ctx->env->auth_zones, + w->env, &qinfo, &edns, w->back->udp_buff, w->env->scratch)) { regional_free_all(w->env->scratch); q->msg_security = sec_status_insecure; add_bg_result(w, q, w->back->udp_buff, UB_NOERROR, NULL); @@ -819,10 +844,10 @@ void libworker_alloc_cleanup(void* arg) slabhash_clear(w->env->msg_cache); } -struct outbound_entry* libworker_send_query(uint8_t* qname, size_t qnamelen, - uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, - int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, +struct outbound_entry* libworker_send_query(struct query_info* qinfo, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q) { struct libworker* w = (struct libworker*)q->env->worker; @@ -831,11 +856,10 @@ struct outbound_entry* libworker_send_query(uint8_t* qname, size_t qnamelen, if(!e) return NULL; e->qstate = q; - e->qsent = outnet_serviced_query(w->back, qname, - qnamelen, qtype, qclass, flags, dnssec, want_dnssec, nocaps, - q->env->cfg->tcp_upstream, q->env->cfg->ssl_upstream, addr, - addrlen, zone, zonelen, libworker_handle_service_reply, e, - w->back->udp_buff); + e->qsent = outnet_serviced_query(w->back, qinfo, flags, dnssec, + want_dnssec, nocaps, q->env->cfg->tcp_upstream, ssl_upstream, + tls_auth_name, addr, addrlen, zone, zonelen, q, + libworker_handle_service_reply, e, w->back->udp_buff, q->env); if(!e->qsent) { return NULL; } @@ -950,13 +974,13 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg)) log_assert(0); } -struct outbound_entry* worker_send_query(uint8_t* ATTR_UNUSED(qname), - size_t ATTR_UNUSED(qnamelen), uint16_t ATTR_UNUSED(qtype), - uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags), - int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), - socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q)) +struct outbound_entry* worker_send_query(struct query_info* ATTR_UNUSED(qinfo), + uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), + int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), + uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), + int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), + struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; diff --git a/external/unbound/libunbound/libworker.h b/external/unbound/libunbound/libworker.h index 0103b5d..42aa5ba 100644 --- a/external/unbound/libunbound/libworker.h +++ b/external/unbound/libunbound/libworker.h @@ -1,5 +1,5 @@ /* - * libunbound/worker.h - worker thread or process that resolves + * libunbound/libworker.h - worker thread or process that resolves * * Copyright (c) 2007, NLnet Labs. All rights reserved. * @@ -58,7 +58,8 @@ struct comm_reply; struct regional; struct tube; struct sldns_buffer; -struct event_base; +struct ub_event_base; +struct query_info; /** * The library-worker status structure @@ -74,6 +75,8 @@ struct libworker { int is_bg; /** is this a bg worker that is threaded (not forked)? */ int is_bg_thread; + /** want to quit, stop handling new content */ + int want_quit; /** copy of the module environment with worker local entries. */ struct module_env* env; @@ -115,7 +118,7 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q); * @return new worker or NULL. */ struct libworker* libworker_create_event(struct ub_ctx* ctx, - struct event_base* eb); + struct ub_event_base* eb); /** * Attach context_query to mesh for callback in event-driven setup. diff --git a/external/unbound/libunbound/python/doc/conf.py b/external/unbound/libunbound/python/doc/conf.py index 97fca21..1766036 100644 --- a/external/unbound/libunbound/python/doc/conf.py +++ b/external/unbound/libunbound/python/doc/conf.py @@ -82,10 +82,13 @@ # Options for HTML output # ----------------------- +# The theme that the html output should use. +html_theme = "classic" + # The style sheet to use for HTML and HTML Help pages. A file of that name # must exist either in Sphinx' static/ path, or in one of the custom paths # given in html_static_path. -html_style = 'default.css' +#html_style = 'default.css' # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". diff --git a/external/unbound/libunbound/python/doc/examples/example1a.rst b/external/unbound/libunbound/python/doc/examples/example1a.rst index 3c81547..f46cb92 100644 --- a/external/unbound/libunbound/python/doc/examples/example1a.rst +++ b/external/unbound/libunbound/python/doc/examples/example1a.rst @@ -1,26 +1,33 @@ .. _example_resolve_name: -============================== Resolve a name -============================== +============== -This basic example shows how to create a context and resolve a host address (DNS record of A type). +This basic example shows how to create a context and resolve a host address +(DNS record of A type). + +Source code +----------- :: - #!/usr/bin/python - import unbound - - ctx = unbound.ub_ctx() - ctx.resolvconf("/etc/resolv.conf") - - status, result = ctx.resolve("www.google.com") - if status == 0 and result.havedata: - print "Result.data:", result.data.address_list - elif status != 0: - print "Resolve error:", unbound.ub_strerror(status) - -In contrast with C API, the source code is more compact while the performance of C implementation is preserved. -The main advantage is that you need not take care about the deallocation and allocation of context and result structures; pyUnbound module do it automatically for you. - -If only domain name is given, the :meth:`unbound.ub_ctx.resolve` looks for A records in IN class. + #!/usr/bin/python + import unbound + + ctx = unbound.ub_ctx() + ctx.resolvconf("/etc/resolv.conf") + + status, result = ctx.resolve("www.google.com") + if status == 0 and result.havedata: + print "Result.data:", result.data.address_list + elif status != 0: + print "Resolve error:", unbound.ub_strerror(status) + +In contrast with the C API, the source code is more compact while the +performance of C implementation is preserved. +The main advantage is that you need not take care about the deallocation and +allocation of context and result structures; pyUnbound module does it +automatically for you. + +If only domain name is given, the :meth:`unbound.ub_ctx.resolve` looks for +A records in IN class. diff --git a/external/unbound/libunbound/python/doc/examples/example1b.rst b/external/unbound/libunbound/python/doc/examples/example1b.rst index ea1e6f5..1adae2c 100644 --- a/external/unbound/libunbound/python/doc/examples/example1b.rst +++ b/external/unbound/libunbound/python/doc/examples/example1b.rst @@ -1,33 +1,37 @@ .. _example_reverse_lookup: -============================== Reverse DNS lookup -============================== +================== -Reverse DNS lookup involves determining the hostname associated with a given IP address. +Reverse DNS lookup involves determining the hostname associated with a given IP +address. This example shows how reverse lookup can be done using unbound module. For the reverse DNS records, the special domain in-addr.arpa is reserved. -For example, a host name for the IP address 74.125.43.147 can be obtained by issuing a DNS query for the PTR record for address 147.43.125.74.in-addr.arpa. +For example, a host name for the IP address ``74.125.43.147`` can be obtained +by issuing a DNS query for the PTR record for address +``147.43.125.74.in-addr.arpa.`` + +Source code +----------- :: - #!/usr/bin/python - import unbound - - ctx = unbound.ub_ctx() - ctx.resolvconf("/etc/resolv.conf") - - status, result = ctx.resolve(unbound.reverse("74.125.43.147") + ".in-addr.arpa.", unbound.RR_TYPE_PTR, unbound.RR_CLASS_IN) - if status == 0 and result.havedata: - print "Result.data:", result.data.domain_list - elif status != 0: - print "Resolve error:", unbound.ub_strerror(status) - -In order to simplify the python code, unbound module contains function which reverses the hostname components. -This function is defined as follows:: + #!/usr/bin/python + import unbound - def reverse(domain): - return '.'.join([a for a in domain.split(".")][::-1]) + ctx = unbound.ub_ctx() + ctx.resolvconf("/etc/resolv.conf") + status, result = ctx.resolve(unbound.reverse("74.125.43.147") + ".in-addr.arpa.", unbound.RR_TYPE_PTR, unbound.RR_CLASS_IN) + if status == 0 and result.havedata: + print "Result.data:", result.data.domain_list + elif status != 0: + print "Resolve error:", unbound.ub_strerror(status) + +In order to simplify the python code, unbound module contains the +:meth:`unbound.reverse` function which reverses the hostname components. +This function is defined as follows:: + def reverse(domain): + return '.'.join([a for a in domain.split(".")][::-1]) diff --git a/external/unbound/libunbound/python/doc/examples/example2.rst b/external/unbound/libunbound/python/doc/examples/example2.rst index c009ec1..a2bf2cb 100644 --- a/external/unbound/libunbound/python/doc/examples/example2.rst +++ b/external/unbound/libunbound/python/doc/examples/example2.rst @@ -1,41 +1,41 @@ .. _example_setup_ctx: -============================== Lookup from threads -============================== +=================== -This example shows how to use unbound module from a threaded program. -In this example, three lookup threads are created which work in background. -Each thread resolves different DNS record. +This example shows how to use unbound module from a threaded program. +In this example, three lookup threads are created which work in background. +Each thread resolves different DNS record. + +Source code +----------- :: - #!/usr/bin/python - from unbound import ub_ctx, RR_TYPE_A, RR_CLASS_IN - from threading import Thread - - ctx = ub_ctx() - ctx.resolvconf("/etc/resolv.conf") - - class LookupThread(Thread): - def __init__(self,ctx, name): - Thread.__init__(self) - self.ctx = ctx - self.name = name - - def run(self): - print "Thread lookup started:",self.name - status, result = self.ctx.resolve(self.name, RR_TYPE_A, RR_CLASS_IN) - if status == 0 and result.havedata: - print " Result:",self.name,":", result.data.address_list - - threads = [] - for name in ["www.fit.vutbr.cz","www.vutbr.cz","www.google.com"]: - thread = LookupThread(ctx, name) - thread.start() - threads.append(thread) - - for thread in threads: - thread.join() + #!/usr/bin/python + from unbound import ub_ctx, RR_TYPE_A, RR_CLASS_IN + from threading import Thread + + ctx = ub_ctx() + ctx.resolvconf("/etc/resolv.conf") + + class LookupThread(Thread): + def __init__(self,ctx, name): + Thread.__init__(self) + self.ctx = ctx + self.name = name + + def run(self): + print "Thread lookup started:",self.name + status, result = self.ctx.resolve(self.name, RR_TYPE_A, RR_CLASS_IN) + if status == 0 and result.havedata: + print " Result:",self.name,":", result.data.address_list + threads = [] + for name in ["www.fit.vutbr.cz","www.vutbr.cz","www.google.com"]: + thread = LookupThread(ctx, name) + thread.start() + threads.append(thread) + for thread in threads: + thread.join() diff --git a/external/unbound/libunbound/python/doc/examples/example3.rst b/external/unbound/libunbound/python/doc/examples/example3.rst index 9136033..b0626b5 100644 --- a/external/unbound/libunbound/python/doc/examples/example3.rst +++ b/external/unbound/libunbound/python/doc/examples/example3.rst @@ -1,12 +1,14 @@ .. _example_asynch: -============================== Asynchronous lookup -============================== +=================== This example performs the name lookup in the background. The main program keeps running while the name is resolved. +Source code +----------- + :: #!/usr/bin/python @@ -33,4 +35,5 @@ The main program keeps running while the name is resolved. if (status != 0): print "Resolve error:", unbound.ub_strerror(status) -The :meth:`unbound.ub_ctx.resolve_async` method is able to pass on any Python object. In this example, we used a dictionary object `my_data`. +The :meth:`unbound.ub_ctx.resolve_async` method is able to pass on any Python +object. In this example, we used a dictionary object ``my_data``. diff --git a/external/unbound/libunbound/python/doc/examples/example4.rst b/external/unbound/libunbound/python/doc/examples/example4.rst index 996ef4e..3b43eb8 100644 --- a/external/unbound/libunbound/python/doc/examples/example4.rst +++ b/external/unbound/libunbound/python/doc/examples/example4.rst @@ -1,33 +1,35 @@ .. _example_examine: -============================== DNSSEC validator -============================== +================ This example program performs DNSSEC validation of a DNS lookup. +Source code +----------- + :: - #!/usr/bin/python - import os - from unbound import ub_ctx,RR_TYPE_A,RR_CLASS_IN - - ctx = ub_ctx() - ctx.resolvconf("/etc/resolv.conf") - if (os.path.isfile("keys")): - ctx.add_ta_file("keys") #read public keys for DNSSEC verification - - status, result = ctx.resolve("www.nic.cz", RR_TYPE_A, RR_CLASS_IN) - if status == 0 and result.havedata: - - print "Result:", result.data.address_list - - if result.secure: - print "Result is secure" - elif result.bogus: - print "Result is bogus" - else: - print "Result is insecure" + #!/usr/bin/python + import os + from unbound import ub_ctx,RR_TYPE_A,RR_CLASS_IN + + ctx = ub_ctx() + ctx.resolvconf("/etc/resolv.conf") + if (os.path.isfile("keys")): + ctx.add_ta_file("keys") #read public keys for DNSSEC verification + + status, result = ctx.resolve("www.nic.cz", RR_TYPE_A, RR_CLASS_IN) + if status == 0 and result.havedata: + + print "Result:", result.data.address_list + + if result.secure: + print "Result is secure" + elif result.bogus: + print "Result is bogus" + else: + print "Result is insecure" More detailed informations can be seen in libUnbound DNSSEC tutorial `here`_. diff --git a/external/unbound/libunbound/python/doc/examples/example5.rst b/external/unbound/libunbound/python/doc/examples/example5.rst index 0a31d9a..9262014 100644 --- a/external/unbound/libunbound/python/doc/examples/example5.rst +++ b/external/unbound/libunbound/python/doc/examples/example5.rst @@ -1,13 +1,17 @@ .. _example_resolver_only: -============================== Resolver only -============================== +============= This example program shows how to perform DNS resolution only. Unbound contains two basic modules: resolver and validator. -In case, the validator is not necessary, the validator module can be turned off using "module-config" option. -This option contains a list of module names separated by the space char. This list determined which modules should be employed and in what order. +In case, the validator is not necessary, the validator module can be turned off +using "module-config" option. +This option contains a list of module names separated by the space char. This +list determined which modules should be employed and in what order. + +Source code +----------- :: @@ -25,5 +29,6 @@ This option contains a list of module names separated by the space char. This li print "Result:", result.data.address_list .. note:: - The :meth:`unbound.ub_ctx.set_option` method must be used before the first resolution (i.e. before :meth:`unbound.ub_ctx.resolve` or :meth:`unbound.ub_ctx.resolve_async` call). - + The :meth:`unbound.ub_ctx.set_option` method must be used before the first + resolution (i.e. before :meth:`unbound.ub_ctx.resolve` or + :meth:`unbound.ub_ctx.resolve_async` call). diff --git a/external/unbound/libunbound/python/doc/examples/example6.rst b/external/unbound/libunbound/python/doc/examples/example6.rst index 478e139..6fde8b2 100644 --- a/external/unbound/libunbound/python/doc/examples/example6.rst +++ b/external/unbound/libunbound/python/doc/examples/example6.rst @@ -1,11 +1,13 @@ .. _example_localzone: -============================== Local zone manipulation -============================== +======================= -This example program shows how to define local zone containing custom DNS records. +This example program shows how to define local zone containing custom DNS +records. -.. literalinclude:: example6-1.py - :language: python +Source code +----------- +.. literalinclude:: example6-1.py + :language: python diff --git a/external/unbound/libunbound/python/doc/examples/example7.rst b/external/unbound/libunbound/python/doc/examples/example7.rst index d405021..5fde18e 100644 --- a/external/unbound/libunbound/python/doc/examples/example7.rst +++ b/external/unbound/libunbound/python/doc/examples/example7.rst @@ -1,18 +1,33 @@ .. _example_idna: -================================================= Internationalized domain name support -================================================= +===================================== Unlike the libUnbound, pyUnbound is able to handle IDN queries. -.. literalinclude:: example7-1.py - :language: python +Automatic IDN DNAME conversion +------------------------------- -If we use unicode string in :meth:`unbound.ub_ctx.resolve` method, the IDN DNAME conversion (if it is necessary) is performed on background. +If we use unicode string in :meth:`unbound.ub_ctx.resolve` method, +the IDN DNAME conversion (if it is necessary) is performed on background. -.. literalinclude:: example7-2.py - :language: python +Source code +........... -The :class:`unbound.ub_data` class contains attributes suffix which converts the dname to UTF string. These attributes have the '_idn' suffix. -Apart from this aproach, two conversion functions exist (:func:`unbound.idn2dname` and :func:`unbound.dname2idn`). +.. literalinclude:: example7-1.py + :language: python + +IDN converted attributes +------------------------ + +The :class:`unbound.ub_data` class contains attributes suffix which converts +the dname to UTF string. These attributes have the ``_idn`` suffix. + +Apart from this approach, two conversion functions exist +(:func:`unbound.idn2dname` and :func:`unbound.dname2idn`). + +Source code +........... + +.. literalinclude:: example7-2.py + :language: python diff --git a/external/unbound/libunbound/python/doc/examples/example8.rst b/external/unbound/libunbound/python/doc/examples/example8.rst index 8cdfcdc..16c1404 100644 --- a/external/unbound/libunbound/python/doc/examples/example8.rst +++ b/external/unbound/libunbound/python/doc/examples/example8.rst @@ -1,28 +1,34 @@ .. _example_mxlookup: -================================================= Lookup for MX and NS records -================================================= +============================ -The pyUnbound extension provides functions which are able to encode RAW RDATA produces by unbound resolver (see :class:`unbound.ub_data`). +The pyUnbound extension provides functions which are able to encode RAW RDATA +produces by unbound resolver (see :class:`unbound.ub_data`). -.. literalinclude:: example8-1.py - :language: python +Source code +----------- -Previous example produces following output:: +.. literalinclude:: example8-1.py + :language: python - Result: - raw data: 00 0F 05 6D 61 69 6C 34 03 6E 69 63 02 63 7A 00;00 14 02 6D 78 05 63 7A 6E 69 63 03 6F 72 67 00;00 0A 04 6D 61 69 6C 03 6E 69 63 02 63 7A 00 - priority:15 address: mail4.nic.cz. - priority:20 address: mx.cznic.org. - priority:10 address: mail.nic.cz. +Output +------ - Result: - raw data: D9 1F CD 32 - address: 217.31.205.50 +The previous example produces the following output:: - Result: - raw data: 01 61 02 6E 73 03 6E 69 63 02 63 7A 00;01 65 02 6E 73 03 6E 69 63 02 63 7A 00;01 63 02 6E 73 03 6E 69 63 02 63 7A 00 - host: a.ns.nic.cz. - host: e.ns.nic.cz. - host: c.ns.nic.cz. + Result: + raw data: 00 0F 05 6D 61 69 6C 34 03 6E 69 63 02 63 7A 00;00 14 02 6D 78 05 63 7A 6E 69 63 03 6F 72 67 00;00 0A 04 6D 61 69 6C 03 6E 69 63 02 63 7A 00 + priority:15 address: mail4.nic.cz. + priority:20 address: mx.cznic.org. + priority:10 address: mail.nic.cz. + + Result: + raw data: D9 1F CD 32 + address: 217.31.205.50 + + Result: + raw data: 01 61 02 6E 73 03 6E 69 63 02 63 7A 00;01 65 02 6E 73 03 6E 69 63 02 63 7A 00;01 63 02 6E 73 03 6E 69 63 02 63 7A 00 + host: a.ns.nic.cz. + host: e.ns.nic.cz. + host: c.ns.nic.cz. diff --git a/external/unbound/libunbound/python/doc/examples/index.rst b/external/unbound/libunbound/python/doc/examples/index.rst index c2c9cf4..2832616 100644 --- a/external/unbound/libunbound/python/doc/examples/index.rst +++ b/external/unbound/libunbound/python/doc/examples/index.rst @@ -1,14 +1,16 @@ Examples -============================== +======== -Here you can find several examples which utilizes the unbound library in Python environment. -Unbound is a caching validator and resolver and can be linked into an application, as a library where can answer DNS queries for the application. +Here you can find several examples which utilizes the unbound library in Python +environment. Unbound is a caching validator and resolver and can be linked into +an application, as a library where can answer DNS queries for the application. This set of examples shows how to use the functions from Python environment. -`Tutorials` +Tutorials +--------- .. toctree:: - :maxdepth: 1 - :glob: + :maxdepth: 1 + :glob: - example* + example* diff --git a/external/unbound/libunbound/python/doc/install.rst b/external/unbound/libunbound/python/doc/install.rst index a073a5c..bb31189 100644 --- a/external/unbound/libunbound/python/doc/install.rst +++ b/external/unbound/libunbound/python/doc/install.rst @@ -1,31 +1,38 @@ Installation -=================================== +============ -**Prerequisites** +Prerequisites +------------- Python 2.4 or higher, SWIG 1.3 or higher, GNU make -**Compiling** +Compiling +--------- After downloading, you can compile the pyUnbound library by doing:: - > tar -xzf unbound-x.x.x-py.tar.gz - > cd unbound-x.x.x - > ./configure --with-pyunbound - > make + > tar -xzf unbound-x.x.x-py.tar.gz + > cd unbound-x.x.x + > ./configure --with-pyunbound + > make -You may want to --with-pythonmodule as well if you want to use python as -a module in the resolver. +You may want to enable ``--with-pythonmodule`` as well if you want to use +python as a module in the resolver. -You need GNU make to compile sources; SWIG and Python devel libraries to compile extension module. +You need ``GNU make`` to compile sources; ``SWIG`` and ``Python devel`` +libraries to compile extension module. -**Testing** +Testing +------- -If the compilation is successful, you can test the python LDNS extension module by:: +If the compilation is successful, you can test the python LDNS extension module +by:: - > cd contrib/python - > make testenv - > ./dns-lookup.py + > cd contrib/python + > make testenv + > ./dns-lookup.py -You may want to make install in the main directory since make testenv is for debugging. In contrib/examples you can find simple applications written in Python using the Unbound extension. +You may want to ``make install`` in the main directory since ``make testenv`` +is for debugging. In contrib/examples you can find simple applications written +in Python using the Unbound extension. diff --git a/external/unbound/libunbound/python/doc/intro.rst b/external/unbound/libunbound/python/doc/intro.rst index f751f54..e490d2c 100644 --- a/external/unbound/libunbound/python/doc/intro.rst +++ b/external/unbound/libunbound/python/doc/intro.rst @@ -1,39 +1,58 @@ Introduction -=================================== - -**Unbound** - - `Unbound`_ is an implementation of a DNS resolver, that performs caching and DNSSEC validation. - Together with unbound, the libunbound library is provided. - This library can be used to convert hostnames to ip addresses, and back, as well as obtain other information. - Since the resolver allows to specify the class and type of a query (A record, NS, MX, ...), this library offers powerful resolving tool. - The library also performs public-key validation of results with DNSSEC. - - .. _Unbound: http://www.unbound.net/documentation - -**pyUnbound** - - The pyUnbound is an extension module for Python which provides an object-oriented interface to libunbound. - It is the first Python module which offers thread-safe caching resolver. - - The interface was designed with the emphasis on the simplicity of use. - There are two main classes :class:`unbound.ub_ctx` (a validation and resolution context) and :class:`unbound.ub_result` which contains the validation and resolution results. - The objects are thread-safe, and a context can be used in non-threaded as well as threaded environment. - Resolution can be performed blocking and non-blocking (i.e. asynchronous). - The asynchronous method returns from the call immediately, so that processing can go on, while the results become available later. - -**Features** - * customizable caching validation resolver for synchronous and asynchronous lookups - * easy to use object interface - * easy to integrate extension module - * designed for thread environment (i.e. thread-safe) - * allows define and customize of local zone and its RR's during the operation (i.e. without restart) - * includes encoding functions to simplify the results retrieval - * Internationalized domain name (`IDN`_) support - - .. _IDN: http://en.wikipedia.org/wiki/Internationalized_domain_name - -**Application area** - * DNS-based applications performing DNS lookups; the caching resolver can reduce overhead - * Applications where the validation of DNS records is required - * Great solution for customizable and dynamic DNS-based white/blacklists (spam rejection, connection rejection, ...) using the dynamic local zone manipulation +============ + +Unbound +------- + +`Unbound`_ is an implementation of a DNS resolver, that performs caching and +DNSSEC validation. +Together with unbound, the libunbound library is provided. +This library can be used to convert hostnames to ip addresses, and back, as +well as obtain other information. +Since the resolver allows to specify the class and type of a query (A record, +NS, MX, ...), this library offers powerful resolving tool. +The library also performs public-key validation of results with DNSSEC. + +.. _Unbound: http://www.unbound.net/documentation + +pyUnbound +--------- + +The pyUnbound is an extension module for Python which provides an +object-oriented interface to libunbound. +It is the first Python module which offers thread-safe caching resolver. + +The interface was designed with the emphasis on the simplicity of use. +There are two main classes :class:`unbound.ub_ctx` (a validation and resolution +context) and :class:`unbound.ub_result` which contains the validation and +resolution results. +The objects are thread-safe, and a context can be used in non-threaded as well +as threaded environment. +Resolution can be performed blocking and non-blocking (i.e. asynchronous). +The asynchronous method returns from the call immediately, so that processing +can go on, while the results become available later. + +Features +-------- + +* Customizable caching validation resolver for synchronous and asynchronous + lookups +* Easy to use object interface +* Easy to integrate extension module +* Designed for thread environment (i.e. thread-safe) +* Allows define and customize of local zone and its RR's during the operation + (i.e. without restart) +* Includes encoding functions to simplify the results retrieval +* Internationalized domain name (`IDN`_) support + +.. _IDN: http://en.wikipedia.org/wiki/Internationalized_domain_name + +Application area +---------------- + +* DNS-based applications performing DNS lookups; the caching resolver can + reduce overhead +* Applications where the validation of DNS records is required +* Great solution for customizable and dynamic DNS-based white/blacklists (spam + rejection, connection rejection, ...) using the dynamic local zone + manipulation diff --git a/external/unbound/libunbound/python/libunbound.i b/external/unbound/libunbound/python/libunbound.i index 50a9b67..84a5369 100644 --- a/external/unbound/libunbound/python/libunbound.i +++ b/external/unbound/libunbound/python/libunbound.i @@ -945,7 +945,7 @@ int _ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype, int rrclass, v :param idnname: (unicode string) IDN name :returns: (string) domain name """ - return '.'.join([encodings.idna.ToASCII(a) for a in idnname.split('.')]) + return '.'.join([encodings.idna.ToASCII(a) if a else '' for a in idnname.split('.')]) def dname2idn(name): """Converts canonic domain name in IDN format to unicode string diff --git a/external/unbound/libunbound/ubsyms.def b/external/unbound/libunbound/ubsyms.def index ff3d958..0d8e6af 100644 --- a/external/unbound/libunbound/ubsyms.def +++ b/external/unbound/libunbound/ubsyms.def @@ -1,33 +1,35 @@ +ub_cancel +ub_ctx_add_ta +ub_ctx_add_ta_autr +ub_ctx_add_ta_file +ub_ctx_async +ub_ctx_config ub_ctx_create ub_ctx_create_event +ub_ctx_create_ub_event +ub_ctx_data_add +ub_ctx_data_remove +ub_ctx_debuglevel +ub_ctx_debugout ub_ctx_delete ub_ctx_get_option -ub_ctx_set_option -ub_ctx_config -ub_ctx_set_fwd -ub_ctx_resolvconf ub_ctx_hosts -ub_ctx_add_ta -ub_ctx_add_ta_autr -ub_ctx_add_ta_file +ub_ctx_print_local_zones +ub_ctx_resolvconf +ub_ctx_set_event +ub_ctx_set_fwd +ub_ctx_set_option +ub_ctx_set_stub ub_ctx_trustedkeys -ub_ctx_debugout -ub_ctx_debuglevel -ub_ctx_async -ub_poll -ub_wait +ub_ctx_zone_add +ub_ctx_zone_remove ub_fd +ub_poll ub_process ub_resolve ub_resolve_async ub_resolve_event -ub_cancel ub_resolve_free ub_strerror -ub_ctx_print_local_zones -ub_ctx_zone_add -ub_ctx_zone_remove -ub_ctx_data_add -ub_ctx_data_remove ub_version -ub_ctx_set_event +ub_wait diff --git a/external/unbound/libunbound/unbound-event.h b/external/unbound/libunbound/unbound-event.h index b80de38..d5f0b1a 100644 --- a/external/unbound/libunbound/unbound-event.h +++ b/external/unbound/libunbound/unbound-event.h @@ -36,20 +36,21 @@ /** * \file * - * This file contains the unbound interface for use with libevent. - * You have to use the same libevent that unbound was compiled with, - * otherwise it wouldn't work, the event and event_base structures would - * be different. If unbound is compiled without libevent support then - * this header file is not supposed to be installed on the system. + * This file contains the unbound interface for use with user defined + * pluggable event bases. * - * Use ub_ctx_create_event_base() to create an unbound context that uses - * the event base that you have made. Then, use the ub_resolve_event call - * to add DNS resolve queries to the context. Those then run when you - * call event_dispatch() on your event_base, and when they are done you - * get a function callback. + * Use ub_ctx_create_event_ub_base() to create an unbound context that uses + * the user provided event base API. Then, use the ub_resolve_event call + * to add DNS resolve queries to the context. Those then run whith the + * provided event_base, and when they are done you get a function callback. * * This method does not fork another process or create a thread, the effort - * is done by the unbound state machines that are connected to the event_base. + * is done by the unbound state machines that are connected to the event base. + * + * It is also possible to provide a libevent based event base by using + * ub_ctx_create_event_base(). But you have to use the same libevent that + * unbound was compiled with, otherwise it wouldn't work, the event and + * event_base structures would be different. */ #ifndef _UB_UNBOUND_EVENT_H #define _UB_UNBOUND_EVENT_H @@ -62,12 +63,136 @@ struct ub_ctx; struct ub_result; struct event_base; -typedef void (*ub_event_callback_t)(void*, int, void*, int, int, char*); +/** event timeout */ +#define UB_EV_TIMEOUT 0x01 +/** event fd readable */ +#define UB_EV_READ 0x02 +/** event fd writable */ +#define UB_EV_WRITE 0x04 +/** event signal */ +#define UB_EV_SIGNAL 0x08 +/** event must persist */ +#define UB_EV_PERSIST 0x10 + +/** magic number to identify this version of the pluggable event api */ +#define UB_EVENT_MAGIC 0x44d74d78 + +struct ub_event; +struct ub_event_base; +struct timeval; + +/** + * The Virtual Method Table for and ub_event_base "object" + */ +struct ub_event_base_vmt { + /** Destructor for the ub_event_base object, + * (not called by libunbound) */ + void (*free)(struct ub_event_base*); + /** Run the event loop + * (not called by libunbound when using ub_resolve_event) */ + int (*dispatch)(struct ub_event_base*); + /** Exit the given event loop */ + int (*loopexit)(struct ub_event_base*, struct timeval*); + /** Instantiate a new ub_event associated with this event base */ + struct ub_event* (*new_event)(struct ub_event_base*, + int fd, short bits, void (*cb)(int, short, void*), void* arg); + /** Instantiate a new signal associated with this event base, + * (not called by libunbound) */ + struct ub_event* (*new_signal)(struct ub_event_base*, int fd, + void (*cb)(int, short, void*), void* arg); + /** Create a new ub_event associated with the given wsaevent, + * (not called by libunbound) */ + struct ub_event* (*winsock_register_wsaevent)(struct ub_event_base*, + void* wsaevent, void (*cb)(int, short, void*), void* arg); +}; + +/** + * A user defined pluggable event base is registered by providing a + * ub_event_base "object" with the ub_ctx_create_ub_event() function. + * The magic number must be correct and the Virtual Method Table must be + * fully equipped providing the event base API to be used by libunbound. + */ +struct ub_event_base { + /** magic must be UB_EVENT_MAGIC (0x44d74d78) */ + unsigned long magic; + /** Virtual Method Table for ub_event_base */ + struct ub_event_base_vmt* vmt; +}; + +/** + * The Virtual Method Table for and ub_event "object" + */ +struct ub_event_vmt { + /** Add event bits for this event to fire on. + * The event will be deactivated before this function is called. */ + void (*add_bits)(struct ub_event*, short); + /** Configure the event so it will not longer fire on given bits + * The event will be deactivated before this function is called. */ + void (*del_bits)(struct ub_event*, short); + /** Change or set the file descriptor on the event + * The event will be deactivated before this function is called. */ + void (*set_fd)(struct ub_event*, int); + /** Destructor for the ub_event object */ + void (*free)(struct ub_event*); + /** Activate the event. The given timeval is an timeout value. */ + int (*add)(struct ub_event*, struct timeval*); + /** Deactivate the event */ + int (*del)(struct ub_event*); + /** Reconfigure and activate a timeout event */ + int (*add_timer)(struct ub_event*, struct ub_event_base*, + void (*cb)(int, short, void*), void* arg, struct timeval*); + /** Deactivate the timeout event */ + int (*del_timer)(struct ub_event*); + /** Activate a signal event (not called by libunbound). */ + int (*add_signal)(struct ub_event*, struct timeval*); + /** Deactivate a signal event (not called by libunbound). */ + int (*del_signal)(struct ub_event*); + /** Destructor for a ub_event associated with a wsaevent, + * (not called by libunbound) + */ + void (*winsock_unregister_wsaevent)(struct ub_event* ev); + /** Libunbound will signal the eventloop when a TCP windows socket + * will block on next read or write (given by the eventbits), to work + * around edge trigger event behaviour of select on windows with TCP. + */ + void (*winsock_tcp_wouldblock)(struct ub_event*, int eventbit); +}; + +/** + * An "object" comprising a user defined pluggable event. + * The magic number must be correct and the Virtual Method Table must be + * fully equipped providing the ub_event API to be used by libunbound. + */ +struct ub_event { + /** magic must be UB_EVENT_MAGIC (0x44d74d78) */ + unsigned long magic; + /** Virtual Method Table for ub_event */ + struct ub_event_vmt* vmt; +}; + +typedef void (*ub_event_callback_type)(void*, int, void*, int, int, char*); + +/** + * Create a resolving and validation context. + * The information from /etc/resolv.conf and /etc/hosts is not utilised by + * default. Use ub_ctx_resolvconf and ub_ctx_hosts to read them. + * @param base: the pluggable event base that the caller has created. + * The unbound context uses this event base. + * @return a new context. default initialisation. + * returns NULL on error. + * You must use ub_resolve_event with this context. + * Do not call ub_ctx_async, ub_poll, ub_wait, ub_process, this is all done + * with the event_base. Setup the options you like with the other functions. + */ +struct ub_ctx* ub_ctx_create_ub_event(struct ub_event_base* base); /** * Create a resolving and validation context. * The information from /etc/resolv.conf and /etc/hosts is not utilised by * default. Use ub_ctx_resolvconf and ub_ctx_hosts to read them. + * You have to use the same libevent that unbound was compiled with, + * otherwise it wouldn't work, the event and event_base structures would + * be different. * @param base: the event base that the caller has created. The unbound * context uses this event base. * @return a new context. default initialisation. @@ -79,7 +204,10 @@ typedef void (*ub_event_callback_t)(void*, int, void*, int, int, char*); struct ub_ctx* ub_ctx_create_event(struct event_base* base); /** - * Set a new event_base on a context created with ub_ctx_create_event. + * Set a new libevent event_base on a context created with ub_ctx_create_event. + * You have to use the same libevent that unbound was compiled with, + * otherwise it wouldn't work, the event and event_base structures would + * be different. * Any outbound queries will be canceled. * @param ctx the ub_ctx to update. Must have been created with ub_ctx_create_event * @param base the new event_base to attach to the ctx @@ -126,7 +254,8 @@ int ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base); * @return 0 if OK, else error. */ int ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype, - int rrclass, void* mydata, ub_event_callback_t callback, int* async_id); + int rrclass, void* mydata, ub_event_callback_type callback, + int* async_id); #ifdef __cplusplus } diff --git a/external/unbound/libunbound/unbound.h b/external/unbound/libunbound/unbound.h index fe903d0..fbd69ca 100644 --- a/external/unbound/libunbound/unbound.h +++ b/external/unbound/libunbound/unbound.h @@ -37,7 +37,7 @@ * \file * * This file contains functions to resolve DNS queries and - * validate the answers. Synchonously and asynchronously. + * validate the answers. Synchronously and asynchronously. * * Several ways to use this interface from an application wishing * to perform (validated) DNS lookups. @@ -177,7 +177,7 @@ struct ub_result { * False, if validation failed or domain queried has no security info. * * It is possible to get a result with no data (havedata is false), - * and secure is true. This means that the non-existance of the data + * and secure is true. This means that the non-existence of the data * was cryptographically proven (with signatures). */ int secure; @@ -223,7 +223,7 @@ struct ub_result { * This structure is allocated on the heap and needs to be * freed with ub_resolve_free(result); */ -typedef void (*ub_callback_t)(void*, int, struct ub_result*); +typedef void (*ub_callback_type)(void*, int, struct ub_result*); /** * Create a resolving and validation context. @@ -303,6 +303,27 @@ int ub_ctx_config(struct ub_ctx* ctx, const char* fname); */ int ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr); +/** + * Add a stub zone, with given address to send to. This is for custom + * root hints or pointing to a local authoritative dns server. + * For dns resolvers and the 'DHCP DNS' ip address, use ub_ctx_set_fwd. + * This is similar to a stub-zone entry in unbound.conf. + * + * @param ctx: context. + * It is only possible to set configuration before the + * first resolve is done. + * @param zone: name of the zone, string. + * @param addr: address, IP4 or IP6 in string format. + * The addr is added to the list of stub-addresses if the entry exists. + * If the addr is NULL the stub entry is removed. + * @param isprime: set to true to set stub-prime to yes for the stub. + * For local authoritative servers, people usually set it to false, + * For root hints it should be set to true. + * @return 0 if OK, else error. + */ +int ub_ctx_set_stub(struct ub_ctx* ctx, const char* zone, const char* addr, + int isprime); + /** * Read list of nameservers to use from the filename given. * Usually "/etc/resolv.conf". Uses those nameservers as caching proxies. @@ -498,7 +519,7 @@ int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, * @return 0 if OK, else error. */ int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype, - int rrclass, void* mydata, ub_callback_t callback, int* async_id); + int rrclass, void* mydata, ub_callback_type callback, int* async_id); /** * Cancel an async query in progress. @@ -580,6 +601,189 @@ int ub_ctx_data_remove(struct ub_ctx* ctx, const char *data); */ const char* ub_version(void); +/** + * Some global statistics that are not in struct stats_info, + * this struct is shared on a shm segment (shm-key in unbound.conf) + */ +struct ub_shm_stat_info { + int num_threads; + + struct { + long long now_sec, now_usec; + long long up_sec, up_usec; + long long elapsed_sec, elapsed_usec; + } time; + + struct { + long long msg; + long long rrset; + long long val; + long long iter; + long long subnet; + long long ipsecmod; + long long respip; + long long dnscrypt_shared_secret; + long long dnscrypt_nonce; + } mem; +}; + +/** number of qtype that is stored for in array */ +#define UB_STATS_QTYPE_NUM 256 +/** number of qclass that is stored for in array */ +#define UB_STATS_QCLASS_NUM 256 +/** number of rcodes in stats */ +#define UB_STATS_RCODE_NUM 16 +/** number of opcodes in stats */ +#define UB_STATS_OPCODE_NUM 16 +/** number of histogram buckets */ +#define UB_STATS_BUCKET_NUM 40 + +/** per worker statistics. */ +struct ub_server_stats { + /** number of queries from clients received. */ + long long num_queries; + /** number of queries that have been dropped/ratelimited by ip. */ + long long num_queries_ip_ratelimited; + /** number of queries that had a cache-miss. */ + long long num_queries_missed_cache; + /** number of prefetch queries - cachehits with prefetch */ + long long num_queries_prefetch; + + /** + * Sum of the querylistsize of the worker for + * every query that missed cache. To calculate average. + */ + long long sum_query_list_size; + /** max value of query list size reached. */ + long long max_query_list_size; + + /** Extended stats below (bool) */ + int extended; + + /** qtype stats */ + long long qtype[UB_STATS_QTYPE_NUM]; + /** bigger qtype values not in array */ + long long qtype_big; + /** qclass stats */ + long long qclass[UB_STATS_QCLASS_NUM]; + /** bigger qclass values not in array */ + long long qclass_big; + /** query opcodes */ + long long qopcode[UB_STATS_OPCODE_NUM]; + /** number of queries over TCP */ + long long qtcp; + /** number of outgoing queries over TCP */ + long long qtcp_outgoing; + /** number of queries over IPv6 */ + long long qipv6; + /** number of queries with QR bit */ + long long qbit_QR; + /** number of queries with AA bit */ + long long qbit_AA; + /** number of queries with TC bit */ + long long qbit_TC; + /** number of queries with RD bit */ + long long qbit_RD; + /** number of queries with RA bit */ + long long qbit_RA; + /** number of queries with Z bit */ + long long qbit_Z; + /** number of queries with AD bit */ + long long qbit_AD; + /** number of queries with CD bit */ + long long qbit_CD; + /** number of queries with EDNS OPT record */ + long long qEDNS; + /** number of queries with EDNS with DO flag */ + long long qEDNS_DO; + /** answer rcodes */ + long long ans_rcode[UB_STATS_RCODE_NUM]; + /** answers with pseudo rcode 'nodata' */ + long long ans_rcode_nodata; + /** answers that were secure (AD) */ + long long ans_secure; + /** answers that were bogus (withheld as SERVFAIL) */ + long long ans_bogus; + /** rrsets marked bogus by validator */ + long long rrset_bogus; + /** number of queries that have been ratelimited by domain recursion. */ + long long queries_ratelimited; + /** unwanted traffic received on server-facing ports */ + long long unwanted_replies; + /** unwanted traffic received on client-facing ports */ + long long unwanted_queries; + /** usage of tcp accept list */ + long long tcp_accept_usage; + /** answers served from expired cache */ + long long zero_ttl_responses; + /** histogram data exported to array + * if the array is the same size, no data is lost, and + * if all histograms are same size (is so by default) then + * adding up works well. */ + long long hist[UB_STATS_BUCKET_NUM]; + + /** number of message cache entries */ + long long msg_cache_count; + /** number of rrset cache entries */ + long long rrset_cache_count; + /** number of infra cache entries */ + long long infra_cache_count; + /** number of key cache entries */ + long long key_cache_count; + + /** number of queries that used dnscrypt */ + long long num_query_dnscrypt_crypted; + /** number of queries that queried dnscrypt certificates */ + long long num_query_dnscrypt_cert; + /** number of queries in clear text and not asking for the certificates */ + long long num_query_dnscrypt_cleartext; + /** number of malformed encrypted queries */ + long long num_query_dnscrypt_crypted_malformed; + /** number of queries which did not have a shared secret in cache */ + long long num_query_dnscrypt_secret_missed_cache; + /** number of dnscrypt shared secret cache entries */ + long long shared_secret_cache_count; + /** number of queries which are replays */ + long long num_query_dnscrypt_replay; + /** number of dnscrypt nonces cache entries */ + long long nonce_cache_count; + /** number of queries for unbound's auth_zones, upstream query */ + long long num_query_authzone_up; + /** number of queries for unbound's auth_zones, downstream answers */ + long long num_query_authzone_down; + /** number of times neg cache records were used to generate NOERROR + * responses. */ + long long num_neg_cache_noerror; + /** number of times neg cache records were used to generate NXDOMAIN + * responses. */ + long long num_neg_cache_nxdomain; +}; + +/** + * Statistics to send over the control pipe when asked + * This struct is made to be memcopied, sent in binary. + * shm mapped with (number+1) at num_threads+1, with first as total + */ +struct ub_stats_info { + /** the thread stats */ + struct ub_server_stats svr; + + /** mesh stats: current number of states */ + long long mesh_num_states; + /** mesh stats: current number of reply (user) states */ + long long mesh_num_reply_states; + /** mesh stats: number of reply states overwritten with a new one */ + long long mesh_jostled; + /** mesh stats: number of incoming queries dropped */ + long long mesh_dropped; + /** mesh stats: replies sent */ + long long mesh_replies_sent; + /** mesh stats: sum of waiting times for the replies */ + long long mesh_replies_sum_wait_sec, mesh_replies_sum_wait_usec; + /** mesh stats: median of waiting times for replies (in sec) */ + double mesh_time_median; +}; + #ifdef __cplusplus } #endif diff --git a/external/unbound/libunbound/worker.h b/external/unbound/libunbound/worker.h index a531501..7d2ede0 100644 --- a/external/unbound/libunbound/worker.h +++ b/external/unbound/libunbound/worker.h @@ -48,13 +48,12 @@ struct comm_reply; struct comm_point; struct module_qstate; struct tube; +struct edns_option; +struct query_info; /** * Worker service routine to send serviced queries to authoritative servers. - * @param qname: query name. (host order) - * @param qnamelen: length in bytes of qname, including trailing 0. - * @param qtype: query type. (host order) - * @param qclass: query class. (host order) + * @param qinfo: query info. * @param flags: host order flags word, with opcode and CD bit. * @param dnssec: if set, EDNS record will have DO bit set. * @param want_dnssec: signatures needed. @@ -63,14 +62,17 @@ struct tube; * @param addrlen: length of addr. * @param zone: delegation point name. * @param zonelen: length of zone name wireformat dname. + * @param ssl_upstream: use SSL for upstream queries. + * @param tls_auth_name: if ssl_upstream, use this name with TLS + * authentication. * @param q: wich query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. */ -struct outbound_entry* libworker_send_query(uint8_t* qname, size_t qnamelen, - uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, - int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, +struct outbound_entry* libworker_send_query(struct query_info* qinfo, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); /** process incoming replies from the network */ @@ -106,10 +108,7 @@ void worker_sighandler(int sig, void* arg); /** * Worker service routine to send serviced queries to authoritative servers. - * @param qname: query name. (host order) - * @param qnamelen: length in bytes of qname, including trailing 0. - * @param qtype: query type. (host order) - * @param qclass: query class. (host order) + * @param qinfo: query info. * @param flags: host order flags word, with opcode and CD bit. * @param dnssec: if set, EDNS record will have DO bit set. * @param want_dnssec: signatures needed. @@ -118,14 +117,17 @@ void worker_sighandler(int sig, void* arg); * @param addrlen: length of addr. * @param zone: wireformat dname of the zone. * @param zonelen: length of zone name. + * @param ssl_upstream: use SSL for upstream queries. + * @param tls_auth_name: if ssl_upstream, use this name with TLS + * authentication. * @param q: wich query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. */ -struct outbound_entry* worker_send_query(uint8_t* qname, size_t qnamelen, - uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, - int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, +struct outbound_entry* worker_send_query(struct query_info* qinfo, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); /** diff --git a/external/unbound/ltmain.sh b/external/unbound/ltmain.sh index 6fdf4ba..0f0a2da 100644 --- a/external/unbound/ltmain.sh +++ b/external/unbound/ltmain.sh @@ -1,9 +1,12 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 -# libtool (GNU libtool) 2.4.2 +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -23,881 +26,2112 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . PROGRAM=libtool PACKAGE=libtool -VERSION=2.4.2 -TIMESTAMP="" -package_revision=1.3337 +VERSION=2.4.6 +package_revision=2.4.6 -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL -$lt_unset CDPATH +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. : ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" -dirname="s,/[^/]*$,," -basename="s,^.*/,," -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation +## ----------------- ## +## Global variables. ## +## ----------------- ## -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` -# Make sure we have an absolute path for reexecution: +# Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) - progdir=$func_dirname_result + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; *) - save_IFS="$IFS" + _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do - IFS="$save_IFS" + IFS=$_G_IFS test -x "$progdir/$progname" && break done - IFS="$save_IFS" + IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' +## ----------------- ## +## Standard options. ## +## ----------------- ## -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. -# Standard options: opt_dry_run=false -opt_help=false opt_quiet=false opt_verbose=false -opt_warning=: -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} +## -------------------- ## +## Resource management. ## +## -------------------- ## -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. - # bash bug again: - : -} -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () { - func_error ${1+"$@"} - exit $EXIT_FAILURE -} + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" + require_term_colors=: } -help="Try \`$progname --help' for more information." ## default -# func_grep expression filename +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { + $debug_cmd + $GREP "$1" "$2" >/dev/null 2>&1 } -# func_mkdir_p directory-path +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { - my_directory_path="$1" - my_dir_list= + $debug_cmd - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + _G_directory_path=$1 + _G_dir_list= - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do + while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" + _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac + case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : + $MKDIR "$_G_dir" 2>/dev/null || : done - IFS="$save_mkdir_p_IFS" + IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" fi } -# func_mktempdir [string] +# func_mktempdir [BASENAME] +# ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. +# given, BASENAME is the basename for that directory. func_mktempdir () { - my_template="${TMPDIR-/tmp}/${1-$progname}" + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} - if test "$opt_dry_run" = ":"; then + if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" + _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - if test ! -d "$my_tmpdir"; then + if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" + _G_tmpdir=$_G_template-${RANDOM-0}$$ - save_mktempdir_umask=`umask` + func_mktempdir_umask=`umask` umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result fi - $ECHO "$my_tmpdir" + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result } -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () { - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac + $debug_cmd - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result } -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () { - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac + $debug_cmd - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac + func_parse_options_result= - func_quote_for_expand_result="$my_arg" -} + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result } -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () { - my_cmd="$1" - my_fail_exp="${2-:}" + $debug_cmd - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} + func_run_hooks func_validate_options ${1+"$@"} -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result } -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} +## ----------------- ## +## Helper functions. ## +## ----------------- ## -# func_usage -# Echo short help message to standard output and exit. -func_usage () +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () { - $opt_debug + $debug_cmd - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE } -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. + +# func_help +# --------- +# Echo long help message to standard output and exit. func_help () { - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 } -# func_missing_arg argname + +# func_missing_arg ARGNAME +# ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { - $opt_debug + $debug_cmd - func_error "missing argument for $1." + func_error "Missing argument for '$1'." exit_cmd=exit } -# func_split_short_opt shortopt +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () { - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + $debug_cmd - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () { - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' + $debug_cmd - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} -exit_cmd=: +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + exit $? +} -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () { - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation + $debug_cmd -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation + _G_message=$* + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} -# func_arith arithmetic-term... -func_arith () + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () { - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation + $debug_cmd + $warning_func ${1+"$@"} +} -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" -# func_lo2o object -func_lo2o () +# Additional text appended to 'usage_message' in response to '--help'. +func_help () { - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi -# func_fatal_configuration arg... +# func_fatal_configuration ARG... +# ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." } # func_config +# ----------- # Display the configuration for all the tags in this script. func_config () { @@ -915,17 +2149,19 @@ func_config () exit $? } + # func_features +# ------------- # Display the features supported by this script. func_features () { echo "host: $host" - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" @@ -934,314 +2170,350 @@ func_features () exit $? } -# func_enable_tag tagname + +# func_enable_tag TAGNAME +# ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { - # Global variable: - tagname="$1" + # Global variable: + tagname=$1 - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac } + # func_check_version_match +# ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - else - cat >&2 <<_LT_EOF + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - fi - else - cat >&2 <<_LT_EOF + fi + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF - fi + fi - exit $EXIT_MISMATCH - fi + exit $EXIT_MISMATCH + fi } -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + nonopt= + preserve_args= -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () { - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done + $debug_cmd - # Validate options: + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - $opt_help || { - # Sanity checks first: - func_check_version_match - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift fi - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } +func_add_hook func_validate_options libtool_validate_options +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + ## ----------- ## ## Main. ## ## ----------- ## +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + # func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. +# fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no @@ -1249,13 +2521,13 @@ func_lalib_unsafe_p () for lalib_p_l in 1 2 3 4 do read lalib_p_line - case "$lalib_p_line" in + case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi - test "$lalib_p" = yes + test yes = "$lalib_p" } # func_ltwrapper_script_p file @@ -1264,7 +2536,8 @@ func_lalib_unsafe_p () # determined imposters. func_ltwrapper_script_p () { - func_lalib_p "$1" + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file @@ -1289,7 +2562,7 @@ func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file @@ -1308,11 +2581,13 @@ func_ltwrapper_p () # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { - $opt_debug + $debug_cmd + save_ifs=$IFS; IFS='~' for cmd in $1; do - IFS=$save_ifs + IFS=$sp$nl eval cmd=\"$cmd\" + IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs @@ -1324,10 +2599,11 @@ func_execute_cmds () # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. +# 'FILE.' does not work on cygwin managed mounts. func_source () { - $opt_debug + $debug_cmd + case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; @@ -1354,10 +2630,10 @@ func_resolve_sysroot () # store the result into func_replace_sysroot_result. func_replace_sysroot () { - case "$lt_sysroot:$1" in + case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" + func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. @@ -1374,7 +2650,8 @@ func_replace_sysroot () # arg is usually of the form 'gcc ...' func_infer_tag () { - $opt_debug + $debug_cmd + if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do @@ -1393,7 +2670,7 @@ func_infer_tag () for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. @@ -1418,7 +2695,7 @@ func_infer_tag () # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" + func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi @@ -1434,15 +2711,15 @@ func_infer_tag () # but don't create it if we're doing a dry run. func_write_libtool_object () { - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' else write_lobj=none fi - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' else write_oldobj=none fi @@ -1450,7 +2727,7 @@ func_write_libtool_object () $opt_dry_run || { cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` + $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi @@ -1514,18 +2792,19 @@ func_convert_core_file_wine_to_w32 () # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { - $opt_debug + $debug_cmd + # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" + func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi @@ -1554,7 +2833,8 @@ func_convert_core_path_wine_to_w32 () # environment variable; do not put it in $PATH. func_cygpath () { - $opt_debug + $debug_cmd + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then @@ -1563,7 +2843,7 @@ func_cygpath () fi else func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath @@ -1574,10 +2854,11 @@ func_cygpath () # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { - $opt_debug + $debug_cmd + # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 @@ -1588,13 +2869,14 @@ func_convert_core_msys_to_w32 () # func_to_host_file_result to ARG1). func_convert_file_check () { - $opt_debug - if test -z "$2" && test -n "$1" ; then + $debug_cmd + + if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" - func_error " \`$1'" + func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: - func_to_host_file_result="$1" + func_to_host_file_result=$1 fi } # end func_convert_file_check @@ -1606,10 +2888,11 @@ func_convert_file_check () # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { - $opt_debug + $debug_cmd + if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" - func_error " \`$3'" + func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. @@ -1618,7 +2901,7 @@ func_convert_path_check () func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else - func_to_host_path_result="$3" + func_to_host_path_result=$3 fi fi } @@ -1630,9 +2913,10 @@ func_convert_path_check () # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { - $opt_debug + $debug_cmd + case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" + $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in @@ -1646,7 +2930,7 @@ func_convert_path_front_back_pathsep () ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## -# invoked via `$to_host_file_cmd ARG' +# invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. @@ -1657,7 +2941,8 @@ func_convert_path_front_back_pathsep () # in func_to_host_file_result. func_to_host_file () { - $opt_debug + $debug_cmd + $to_host_file_cmd "$1" } # end func_to_host_file @@ -1669,7 +2954,8 @@ func_to_host_file () # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { - $opt_debug + $debug_cmd + case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 @@ -1687,7 +2973,7 @@ func_to_tool_file () # Copy ARG to func_to_host_file_result. func_convert_file_noop () { - func_to_host_file_result="$1" + func_to_host_file_result=$1 } # end func_convert_file_noop @@ -1698,11 +2984,12 @@ func_convert_file_noop () # func_to_host_file_result. func_convert_file_msys_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1714,8 +3001,9 @@ func_convert_file_msys_to_w32 () # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. @@ -1731,11 +3019,12 @@ func_convert_file_cygwin_to_w32 () # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1747,12 +3036,13 @@ func_convert_file_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1765,13 +3055,14 @@ func_convert_file_msys_to_cygwin () # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1781,7 +3072,7 @@ func_convert_file_nix_to_cygwin () ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# -# invoked via `$to_host_path_cmd ARG' +# invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. @@ -1805,10 +3096,11 @@ func_convert_file_nix_to_cygwin () to_host_path_cmd= func_init_to_host_path_cmd () { - $opt_debug + $debug_cmd + if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" + to_host_path_cmd=func_convert_path_$func_stripname_result fi } @@ -1818,7 +3110,8 @@ func_init_to_host_path_cmd () # in func_to_host_path_result. func_to_host_path () { - $opt_debug + $debug_cmd + func_init_to_host_path_cmd $to_host_path_cmd "$1" } @@ -1829,7 +3122,7 @@ func_to_host_path () # Copy ARG to func_to_host_path_result. func_convert_path_noop () { - func_to_host_path_result="$1" + func_to_host_path_result=$1 } # end func_convert_path_noop @@ -1840,8 +3133,9 @@ func_convert_path_noop () # func_to_host_path_result. func_convert_path_msys_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; @@ -1849,7 +3143,7 @@ func_convert_path_msys_to_w32 () func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1863,8 +3157,9 @@ func_convert_path_msys_to_w32 () # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" @@ -1883,14 +3178,15 @@ func_convert_path_cygwin_to_w32 () # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1904,15 +3200,16 @@ func_convert_path_nix_to_w32 () # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1927,8 +3224,9 @@ func_convert_path_msys_to_cygwin () # func_to_host_file_result. func_convert_path_nix_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them @@ -1937,7 +3235,7 @@ func_convert_path_nix_to_cygwin () func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1946,13 +3244,31 @@ func_convert_path_nix_to_cygwin () # end func_convert_path_nix_to_cygwin +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + # func_mode_compile arg... func_mode_compile () { - $opt_debug + $debug_cmd + # Get the compilation command and the source file. base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" + srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal @@ -1965,12 +3281,12 @@ func_mode_compile () case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile - lastarg="$arg" + lastarg=$arg arg_mode=normal ;; target ) - libobj="$arg" + libobj=$arg arg_mode=normal continue ;; @@ -1980,7 +3296,7 @@ func_mode_compile () case $arg in -o) test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" + func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; @@ -2009,12 +3325,12 @@ func_mode_compile () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for arg in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_append_quoted lastarg "$arg" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result @@ -2027,8 +3343,8 @@ func_mode_compile () # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # - lastarg="$srcfile" - srcfile="$arg" + lastarg=$srcfile + srcfile=$arg ;; esac # case $arg ;; @@ -2043,13 +3359,13 @@ func_mode_compile () func_fatal_error "you must specify an argument for -Xcompile" ;; target) - func_fatal_error "you must specify a target with \`-o'" + func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" - libobj="$func_basename_result" + libobj=$func_basename_result } ;; esac @@ -2069,7 +3385,7 @@ func_mode_compile () case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - func_fatal_error "cannot determine name of library object from \`$libobj'" + func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac @@ -2078,8 +3394,8 @@ func_mode_compile () for arg in $later; do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; @@ -2105,17 +3421,17 @@ func_mode_compile () func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." + && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" @@ -2127,16 +3443,16 @@ func_mode_compile () pic_mode=default ;; esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock else output_obj= need_locks=no @@ -2145,12 +3461,12 @@ func_mode_compile () # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then + if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done - elif test "$need_locks" = warn; then + elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: @@ -2158,7 +3474,7 @@ func_mode_compile () This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2180,11 +3496,11 @@ compiler." qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile - if test "$pic_mode" != no; then + if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code @@ -2201,7 +3517,7 @@ compiler." func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2212,7 +3528,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2228,20 +3544,20 @@ compiler." fi # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then + if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi - if test "$compiler_c_o" = yes; then + if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi @@ -2250,7 +3566,7 @@ compiler." func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2261,7 +3577,7 @@ $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2281,7 +3597,7 @@ compiler." func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked - if test "$need_locks" != no; then + if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi @@ -2291,7 +3607,7 @@ compiler." } $opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () @@ -2311,7 +3627,7 @@ func_mode_help () Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated @@ -2330,16 +3646,16 @@ This mode accepts the following additional options: -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler -COMPILE-COMMAND is a command to be used in creating a \`standard' object file +COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." ;; execute) @@ -2352,7 +3668,7 @@ This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path -This mode sets the library path environment variable according to \`-dlopen' +This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated @@ -2371,7 +3687,7 @@ Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." +the '--dry-run' option if you just want to see what would be executed." ;; install) @@ -2381,7 +3697,7 @@ the \`--dry-run' option if you just want to see what would be executed." Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. +either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: @@ -2407,7 +3723,7 @@ The following components of LINK-COMMAND are treated specially: -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE @@ -2421,7 +3737,8 @@ The following components of LINK-COMMAND are treated specially: -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information @@ -2441,20 +3758,20 @@ The following components of LINK-COMMAND are treated specially: -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) -All other options (arguments beginning with \`-') are ignored. +All other options (arguments beginning with '-') are ignored. -Every other argument is treated as a filename. Files ending in \`.la' are +Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; @@ -2465,7 +3782,7 @@ is created, otherwise an executable program is created." Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. @@ -2473,17 +3790,17 @@ Otherwise, only FILE itself is deleted using RM." ;; *) - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo - $ECHO "Try \`$progname --help' for more information about other modes." + $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then - if test "$opt_help" = :; then + if test : = "$opt_help"; then func_mode_help else { @@ -2491,7 +3808,7 @@ if $opt_help; then for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do @@ -2499,7 +3816,7 @@ if $opt_help; then func_mode_help done } | - sed '1d + $SED '1d /^When reporting/,/^Report/{ H d @@ -2516,16 +3833,17 @@ fi # func_mode_execute arg... func_mode_execute () { - $opt_debug + $debug_cmd + # The first argument is the command name. - cmd="$nonopt" + cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ - || func_fatal_help "\`$file' is not a file" + || func_fatal_help "'$file' is not a file" dir= case $file in @@ -2535,7 +3853,7 @@ func_mode_execute () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" + || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= @@ -2546,18 +3864,18 @@ func_mode_execute () if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" + func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; @@ -2565,18 +3883,18 @@ func_mode_execute () *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result ;; *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" + test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then @@ -2588,7 +3906,7 @@ func_mode_execute () # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. - libtool_execute_magic="$magic" + libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= @@ -2601,12 +3919,12 @@ func_mode_execute () if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program fi ;; esac @@ -2614,7 +3932,15 @@ func_mode_execute () func_append_quoted args "$file" done - if test "X$opt_dry_run" = Xfalse; then + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" @@ -2631,25 +3957,18 @@ func_mode_execute () done # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS + exec_cmd=\$cmd$args fi } -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { - $opt_debug + $debug_cmd + libs= libdirs= admincmds= @@ -2663,11 +3982,11 @@ func_mode_finish () if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else - func_warning "\`$opt' is not a valid libtool archive" + func_warning "'$opt' is not a valid libtool archive" fi else - func_fatal_error "invalid argument \`$opt'" + func_fatal_error "invalid argument '$opt'" fi done @@ -2682,12 +4001,12 @@ func_mode_finish () # Remove sysroot references if $opt_dry_run; then for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done @@ -2712,7 +4031,7 @@ func_mode_finish () fi # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS + $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" @@ -2723,27 +4042,27 @@ func_mode_finish () echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" + $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo @@ -2762,18 +4081,20 @@ func_mode_finish () exit $EXIT_SUCCESS } -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { - $opt_debug + $debug_cmd + # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then + case $nonopt in *shtool*) :;; *) false;; esac + then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -2800,7 +4121,7 @@ func_mode_install () opts= prev= install_type= - isdir=no + isdir=false stripme= no_mode=: for arg @@ -2813,7 +4134,7 @@ func_mode_install () fi case $arg in - -d) isdir=yes ;; + -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg @@ -2831,7 +4152,7 @@ func_mode_install () *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi @@ -2856,7 +4177,7 @@ func_mode_install () func_fatal_help "you must specify an install program" test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" + func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else @@ -2878,19 +4199,19 @@ func_mode_install () dest=$func_stripname_result # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" + destdir=$func_dirname_result + destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" + func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -2899,7 +4220,7 @@ func_mode_install () case $file in *.lo) ;; *) - func_fatal_help "\`$destdir' must be an absolute directory name" + func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done @@ -2908,7 +4229,7 @@ func_mode_install () # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic staticlibs= future_libdirs= @@ -2928,7 +4249,7 @@ func_mode_install () # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" + || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= @@ -2950,7 +4271,7 @@ func_mode_install () fi func_dirname "$file" "/" "" - dir="$func_dirname_result" + dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then @@ -2964,7 +4285,7 @@ func_mode_install () # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. @@ -2973,29 +4294,36 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi - func_warning "relinking \`$file'" + func_warning "relinking '$file'" func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then - realname="$1" + realname=$1 shift - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T + srcname=$realname + test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' - tstripme="$stripme" + tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) - tstripme="" + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= ;; esac ;; @@ -3006,7 +4334,7 @@ func_mode_install () if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on + # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname @@ -3017,14 +4345,14 @@ func_mode_install () fi # Do each command in the postinstall commands. - lib="$destdir/$realname" + lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i + name=$func_basename_result + instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. @@ -3036,11 +4364,11 @@ func_mode_install () # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. @@ -3050,11 +4378,11 @@ func_mode_install () staticdest=$func_lo2o_result ;; *.$objext) - staticdest="$destfile" + staticdest=$destfile destfile= ;; *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" + func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac @@ -3063,7 +4391,7 @@ func_mode_install () func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result @@ -3075,23 +4403,23 @@ func_mode_install () *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install - stripped_ext="" + stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result - stripped_ext=".exe" + stripped_ext=.exe fi ;; esac @@ -3119,19 +4447,19 @@ func_mode_install () # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" + func_fatal_error "invalid libtool wrapper script '$wrapper'" - finalize=yes + finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false fi done @@ -3139,29 +4467,29 @@ func_mode_install () func_source "$wrapper" outputname= - if test "$fast_install" = no && test -n "$relink_command"; then + if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { - if test "$finalize" = yes; then + if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" + file=$func_basename_result + outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - $opt_silent || { + $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else - func_error "error: relink \`$file' with the above command before installing it" + func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi - file="$outputname" + file=$outputname else - func_warning "cannot relink \`$file'" + func_warning "cannot relink '$file'" fi } else @@ -3198,10 +4526,10 @@ func_mode_install () for file in $staticlibs; do func_basename "$file" - name="$func_basename_result" + name=$func_basename_result # Set up the ranlib parameters. - oldlib="$destdir/$name" + oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result @@ -3216,18 +4544,18 @@ func_mode_install () done test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" + func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } -test "$opt_mode" = install && func_mode_install ${1+"$@"} +test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -3235,16 +4563,17 @@ test "$opt_mode" = install && func_mode_install ${1+"$@"} # a dlpreopen symbol table. func_generate_dlsyms () { - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" + my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi @@ -3255,7 +4584,7 @@ func_generate_dlsyms () "") ;; *.c) # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" + nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" @@ -3263,34 +4592,36 @@ func_generate_dlsyms () func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* External symbol declarations for the compiler. */\ " - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" @@ -3298,7 +4629,7 @@ extern \"C\" { progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done @@ -3318,10 +4649,10 @@ extern \"C\" { # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" + export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' @@ -3331,7 +4662,7 @@ extern \"C\" { } else $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in @@ -3345,22 +4676,22 @@ extern \"C\" { fi for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" + func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" - name="$func_basename_result" + name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" + dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then + if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" + dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" @@ -3368,7 +4699,7 @@ extern \"C\" { fi fi $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then + if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" @@ -3424,6 +4755,11 @@ extern \"C\" { echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ @@ -3432,11 +4768,30 @@ typedef struct { void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi case $need_lib_prefix in no) @@ -3478,9 +4833,7 @@ static const void *lt_preloaded_setup() { *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi + $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; @@ -3497,10 +4850,10 @@ static const void *lt_preloaded_setup() { func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" + symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then @@ -3518,7 +4871,7 @@ static const void *lt_preloaded_setup() { esac ;; *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" + func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else @@ -3532,6 +4885,32 @@ static const void *lt_preloaded_setup() { fi } +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + # func_win32_libid arg # return the library type of file 'arg' # @@ -3541,8 +4920,9 @@ static const void *lt_preloaded_setup() { # Despite the name, also deal with 64 bit binaries. func_win32_libid () { - $opt_debug - win32_libid_type="unknown" + $debug_cmd + + win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import @@ -3552,16 +4932,29 @@ func_win32_libid () # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' 1,100{ / I /{ - s,.*,import, + s|.*|import| p q } }'` + ;; + esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; @@ -3593,7 +4986,8 @@ func_win32_libid () # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { - $opt_debug + $debug_cmd + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } @@ -3610,7 +5004,8 @@ func_cygming_dll_for_implib () # specified import library. func_cygming_dll_for_implib_fallback_core () { - $opt_debug + $debug_cmd + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ @@ -3646,8 +5041,8 @@ func_cygming_dll_for_implib_fallback_core () /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually @@ -3658,30 +5053,6 @@ func_cygming_dll_for_implib_fallback_core () $SED -e '/^\./d;/^.\./d;q' } -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified @@ -3695,16 +5066,17 @@ func_cygming_ms_implib_p () # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then + elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown - sharedlib_from_linklib_result="" + sharedlib_from_linklib_result= fi } @@ -3712,10 +5084,11 @@ func_cygming_dll_for_implib_fallback () # func_extract_an_archive dir oldlib func_extract_an_archive () { - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" @@ -3724,7 +5097,7 @@ func_extract_an_archive () fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then + if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then @@ -3738,22 +5111,23 @@ func_extract_an_archive () # func_extract_archives gentop oldlib ... func_extract_archives () { - $opt_debug - my_gentop="$1"; shift + $debug_cmd + + my_gentop=$1; shift my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" - my_xlib="$func_basename_result" + my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in @@ -3765,7 +5139,7 @@ func_extract_archives () esac done extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" @@ -3778,22 +5152,23 @@ func_extract_archives () cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do @@ -3815,7 +5190,7 @@ func_extract_archives () my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done - func_extract_archives_result="$my_oldobjs" + func_extract_archives_result=$my_oldobjs } @@ -3830,7 +5205,7 @@ func_extract_archives () # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is +# will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () @@ -3841,7 +5216,7 @@ func_emit_wrapper () #! $SHELL # $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -3898,9 +5273,9 @@ _LTECHO_EOF' # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on +# /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match +# (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and @@ -3933,7 +5308,7 @@ func_parse_lt_options () # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } @@ -3944,7 +5319,7 @@ func_lt_dump_args () lt_dump_args_N=1; for lt_arg do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } @@ -3958,7 +5333,7 @@ func_exec_program_core () *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} @@ -3968,7 +5343,7 @@ func_exec_program_core () *) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} @@ -4043,13 +5418,13 @@ func_exec_program () test -n \"\$absdir\" && thisdir=\"\$absdir\" " - if test "$fast_install" = yes; then + if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" @@ -4066,7 +5441,7 @@ func_exec_program () if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else - $ECHO \"\$relink_command_output\" >&2 + \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi @@ -4101,7 +5476,7 @@ func_exec_program () fi # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" @@ -4121,7 +5496,7 @@ func_exec_program () fi else # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 @@ -4140,7 +5515,7 @@ func_emit_cwrapperexe_src () cat < #include +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* declarations of non-ANSI functions */ -#if defined(__MINGW32__) +#if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif -/* #elif defined (other platforms) ... */ +/* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) +#if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) +#elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ +/* #elif defined other platforms ... */ #endif -#if defined(PATH_MAX) +#if defined PATH_MAX # define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) +#elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 @@ -4234,8 +5607,8 @@ int setenv (const char *, const char *, int); # define PATH_SEPARATOR ':' #endif -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 @@ -4268,10 +5641,10 @@ int setenv (const char *, const char *, int); #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ + if (stale) { free (stale); stale = 0; } \ } while (0) -#if defined(LT_DEBUGWRAPPER) +#if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; @@ -4300,11 +5673,16 @@ void lt_dump_script (FILE *f); EOF cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { - new_value[len-1] = '\0'; + new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); @@ -5082,27 +6460,47 @@ EOF # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { - $opt_debug + $debug_cmd + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + # func_mode_link arg... func_mode_link () { - $opt_debug + $debug_cmd + case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra + # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not + # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. @@ -5146,10 +6544,11 @@ func_mode_link () module=no no_install=no objs= + os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no - preload=no + preload=false prev= prevarg= release= @@ -5161,7 +6560,7 @@ func_mode_link () vinfo= vinfo_number=no weak_libs= - single_module="${wl}-single_module" + single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. @@ -5169,15 +6568,15 @@ func_mode_link () do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then @@ -5210,7 +6609,7 @@ func_mode_link () # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do - arg="$1" + arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result @@ -5227,21 +6626,21 @@ func_mode_link () case $prev in bindir) - bindir="$arg" + bindir=$arg prev= continue ;; dlfiles|dlprefiles) - if test "$preload" = no; then + $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" - preload=yes - fi + preload=: + } case $arg in *.la | *.lo) ;; # We handle these cases below. force) - if test "$dlself" = no; then + if test no = "$dlself"; then dlself=needless export_dynamic=yes fi @@ -5249,9 +6648,9 @@ func_mode_link () continue ;; self) - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless @@ -5261,7 +6660,7 @@ func_mode_link () continue ;; *) - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" @@ -5272,14 +6671,14 @@ func_mode_link () esac ;; expsyms) - export_symbols="$arg" + export_symbols=$arg test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" + || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) - export_symbols_regex="$arg" + export_symbols_regex=$arg prev= continue ;; @@ -5297,7 +6696,13 @@ func_mode_link () continue ;; inst_prefix) - inst_prefix_dir="$arg" + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. prev= continue ;; @@ -5321,21 +6726,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5346,7 +6751,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5354,23 +6759,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" + arg=$pic_object fi # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5378,7 +6783,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5386,24 +6791,29 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi done else - func_fatal_error "link input file \`$arg' does not exist" + func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; precious_regex) - precious_files_regex="$arg" + precious_files_regex=$arg prev= continue ;; release) - release="-$arg" + release=-$arg prev= continue ;; @@ -5415,7 +6825,7 @@ func_mode_link () func_fatal_error "only absolute run-paths are allowed" ;; esac - if test "$prev" = rpath; then + if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; @@ -5430,7 +6840,7 @@ func_mode_link () continue ;; shrext) - shrext_cmds="$arg" + shrext_cmds=$arg prev= continue ;; @@ -5470,7 +6880,7 @@ func_mode_link () esac fi # test -n "$prev" - prevarg="$arg" + prevarg=$arg case $arg in -all-static) @@ -5484,7 +6894,7 @@ func_mode_link () -allow-undefined) # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" + func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) @@ -5516,7 +6926,7 @@ func_mode_link () if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi - if test "X$arg" = "X-export-symbols"; then + if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex @@ -5550,9 +6960,9 @@ func_mode_link () func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" + func_fatal_error "require no space between '-L' and '$1'" else - func_fatal_error "need path for \`-L' option" + func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" @@ -5563,8 +6973,8 @@ func_mode_link () *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir ;; esac case "$deplibs " in @@ -5599,7 +7009,7 @@ func_mode_link () ;; -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) @@ -5607,11 +7017,11 @@ func_mode_link () ;; *-*-os2*) # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework @@ -5620,16 +7030,16 @@ func_mode_link () ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; esac - elif test "X$arg" = "X-lc_r"; then + elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -5639,6 +7049,11 @@ func_mode_link () continue ;; + -mllvm) + prev=mllvm + continue + ;; + -module) module=yes continue @@ -5668,7 +7083,7 @@ func_mode_link () ;; -multi_module) - single_module="${wl}-multi_module" + single_module=$wl-multi_module continue ;; @@ -5682,8 +7097,8 @@ func_mode_link () *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -5701,6 +7116,11 @@ func_mode_link () continue ;; + -os2dllname) + prev=os2dllname + continue + ;; + -o) prev=output ;; -precious-files-regex) @@ -5788,14 +7208,14 @@ func_mode_link () func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5804,15 +7224,15 @@ func_mode_link () func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5835,7 +7255,7 @@ func_mode_link () # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -5847,25 +7267,46 @@ func_mode_link () # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -5886,21 +7327,21 @@ func_mode_link () if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + test none = "$pic_object" || { # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5911,7 +7352,7 @@ func_mode_link () fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5919,23 +7360,23 @@ func_mode_link () # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" - fi + arg=$pic_object + } # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5943,7 +7384,7 @@ func_mode_link () if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5951,7 +7392,7 @@ func_mode_link () func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; @@ -5967,11 +7408,11 @@ func_mode_link () # A libtool-controlled library. func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= - elif test "$prev" = dlprefiles; then + elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= @@ -5986,7 +7427,7 @@ func_mode_link () # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; esac # arg @@ -5998,9 +7439,9 @@ func_mode_link () done # argument parsing loop test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" + func_fatal_help "the '$prevarg' option requires an argument" - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -6009,20 +7450,23 @@ func_mode_link () oldlibs= # calculate the name of the file, without its directory func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" + outputname=$func_basename_result + libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" + output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. @@ -6045,7 +7489,7 @@ func_mode_link () # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6053,7 +7497,7 @@ func_mode_link () func_append libs " $deplib" done - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps @@ -6085,7 +7529,7 @@ func_mode_link () case $file in *.la) ;; *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done @@ -6093,7 +7537,7 @@ func_mode_link () prog) compile_deplibs= finalize_deplibs= - alldeplibs=no + alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" @@ -6105,29 +7549,29 @@ func_mode_link () for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then + if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs fi - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs deplibs= fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then + if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs @@ -6148,26 +7592,26 @@ func_mode_link () esac done done - libs="$dlprefiles" + libs=$dlprefiles fi - if test "$pass" = dlopen; then + if test dlopen = "$pass"; then # Collect dlpreopened libraries - save_deplibs="$deplibs" + save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= - found=no + found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6177,13 +7621,13 @@ func_mode_link () continue ;; -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" @@ -6191,31 +7635,22 @@ func_mode_link () for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" + lib=$searchdir/lib$name$search_ext if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes + if test .la = "$search_ext"; then + found=: else - found=no + found=false fi break 2 fi done done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library + if $found; then + # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then @@ -6223,19 +7658,19 @@ func_mode_link () old_library= func_source "$lib" for l in $old_library $library_names; do - ll="$l" + ll=$l done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no + if test "X$ll" = "X$old_library"; then # only static version available + found=false func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi @@ -6244,15 +7679,25 @@ func_mode_link () *) ;; esac fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue fi ;; # -l *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6265,18 +7710,18 @@ func_mode_link () case $linkmode in lib) deplibs="$deplib $deplibs" - test "$pass" = conv && continue + test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi - if test "$pass" = scan; then + if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6287,13 +7732,13 @@ func_mode_link () func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) - func_warning "\`-L' is ignored for archives/objects" + func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) - if test "$pass" = link; then + if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result @@ -6311,7 +7756,7 @@ func_mode_link () lib=$func_resolve_sysroot_result ;; *.$libext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi @@ -6322,21 +7767,26 @@ func_mode_link () case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) - valid_a_lib=no + valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes + valid_a_lib=: fi ;; pass_all) - valid_a_lib=yes + valid_a_lib=: ;; esac - if test "$valid_a_lib" != yes; then + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" @@ -6344,18 +7794,13 @@ func_mode_link () echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) - if test "$pass" != link; then + if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6366,10 +7811,10 @@ func_mode_link () esac # linkmode ;; # *.$libext *.lo | *.$objext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" @@ -6382,22 +7827,20 @@ func_mode_link () continue ;; %DEPLIBS%) - alldeplibs=yes + alldeplibs=: continue ;; esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" + || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result dlname= dlopen= @@ -6427,30 +7870,30 @@ func_mode_link () done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi - if test "$pass" = conv; then + if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6464,26 +7907,26 @@ func_mode_link () # Get the name of the library we link against. linklib= if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do - linklib="$l" + linklib=$l done fi if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't @@ -6497,40 +7940,40 @@ func_mode_link () # We need an absolute path. case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" + abs_ladir=$ladir fi ;; esac func_basename "$lib" - laname="$func_basename_result" + laname=$func_basename_result # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then + if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" + dir=$ladir + absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi @@ -6539,11 +7982,11 @@ func_mode_link () name=$func_stripname_result # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi - case "$host" in + case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both @@ -6587,9 +8030,9 @@ func_mode_link () if test -z "$libdir"; then # Link the convenience library - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then + elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else @@ -6599,14 +8042,14 @@ func_mode_link () fi - if test "$linkmode" = prog && test "$pass" != link; then + if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: fi tmp_libs= @@ -6618,14 +8061,14 @@ func_mode_link () ;; esac # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then + if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6635,15 +8078,15 @@ func_mode_link () continue fi # $linkmode = prog... - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in + case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac @@ -6672,9 +8115,9 @@ func_mode_link () esac fi # $linkmode,$pass = prog,link... - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue @@ -6683,19 +8126,19 @@ func_mode_link () link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then + if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then + { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw* | *cegcc*) + *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) - if test "$installed" = no; then + if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi @@ -6705,24 +8148,24 @@ func_mode_link () # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" + dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" + dlopenmodule=$dlpremoduletest break fi done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. @@ -6750,43 +8193,43 @@ func_mode_link () # figure out the soname set dummy $library_names shift - realname="$1" + realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then - soname="$dlname" + soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw* | *cegcc*) + *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; esac eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" + soroot=$soname func_basename "$soroot" - soname="$func_basename_result" + soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else - func_verbose "extracting exported symbol list from \`$soname'" + func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" + func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library @@ -6794,58 +8237,58 @@ func_mode_link () linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$opt_mode" != relink; then + if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" + if test no = "$hardcode_direct"; then + add=$dir/$linklib case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; + *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not + # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then + $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then + if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else - add="$dir/$old_library" + add=$dir/$old_library fi elif test -n "$old_library"; then - add="$dir/$old_library" + add=$dir/$old_library fi fi esac - elif test "$hardcode_minus_L" = no; then + elif test no = "$hardcode_minus_L"; then case $host in - *-*-sunos*) add_shlibpath="$dir" ;; + *-*-sunos*) add_shlibpath=$dir ;; esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi ;; relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6854,10 +8297,10 @@ func_mode_link () ;; esac fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi @@ -6865,7 +8308,7 @@ func_mode_link () *) lib_linked=no ;; esac - if test "$lib_linked" != yes; then + if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi @@ -6875,15 +8318,15 @@ func_mode_link () *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; @@ -6892,33 +8335,33 @@ func_mode_link () fi fi - if test "$linkmode" = prog || test "$opt_mode" = relink; then + if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then + add=-l$name + elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib else - add="$libdir/$linklib" + add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" + add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6927,10 +8370,10 @@ func_mode_link () ;; esac fi - add="-l$name" + add=-l$name fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else @@ -6938,43 +8381,43 @@ func_mode_link () test -n "$add" && deplibs="$add $deplibs" fi fi - elif test "$linkmode" = prog; then + elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi - elif test "$build_libtool_libs" = yes; then + elif test yes = "$build_libtool_libs"; then # Not a shared library - if test "$deplibs_check_method" != pass_all; then + if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then + if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then + if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else @@ -6987,11 +8430,11 @@ func_mode_link () fi fi # link shared/static library? - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do @@ -7005,12 +8448,12 @@ func_mode_link () *) func_append temp_deplibs " $libdir";; esac done - dependency_libs="$temp_deplibs" + dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do @@ -7020,7 +8463,7 @@ func_mode_link () func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; @@ -7029,12 +8472,12 @@ func_mode_link () func_append tmp_libs " $func_resolve_sysroot_result" done - if test "$link_all_deplibs" != no; then + if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in - -L*) path="$deplib" ;; + -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result @@ -7042,12 +8485,12 @@ func_mode_link () dir=$func_dirname_result # We need an absolute path. case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir fi ;; esac @@ -7055,35 +8498,35 @@ func_mode_link () case $host in *-*-darwin*) depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do depdepl=$tmp done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) - path="-L$absdir/$objdir" + path=-L$absdir/$objdir ;; esac else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" + func_warning "'$deplib' seems to be moved" - path="-L$absdir" + path=-L$absdir fi ;; esac @@ -7095,23 +8538,23 @@ func_mode_link () fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then + if test link = "$pass"; then + if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then + if test dlopen != "$pass"; then + test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do @@ -7121,12 +8564,12 @@ func_mode_link () esac done newlib_search_path= - fi + } - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else + if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" + else + vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order @@ -7184,62 +8627,93 @@ func_mode_link () eval $var=\"$tmp_libs\" done # for var fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= - for i in $dependency_libs ; do + for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) - i="" + i= ;; esac - if test -n "$i" ; then + if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" + if test prog = "$linkmode"; then + dlfiles=$newdlfiles fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles fi case $linkmode in oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; + func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" + func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" + func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" + func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ - func_warning "\`-release' is ignored for archives" + func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" + func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no - oldlibs="$output" + oldlibs=$output func_append objs "$old_deplibs" ;; lib) - # Make sure we only generate libraries of the form `libNAME.la'. + # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" @@ -7248,10 +8722,10 @@ func_mode_link () eval libname=\"$libname_spec\" ;; *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" - if test "$need_lib_prefix" != no; then + if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result @@ -7265,8 +8739,8 @@ func_mode_link () esac if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" @@ -7275,21 +8749,21 @@ func_mode_link () fi fi - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" - install_libdir="$1" + install_libdir=$1 oldlibs= if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so + # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" @@ -7298,20 +8772,20 @@ func_mode_link () fi test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" + func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. - save_ifs="$IFS"; IFS=':' + save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift - IFS="$save_ifs" + IFS=$save_ifs test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" + func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts @@ -7319,42 +8793,42 @@ func_mode_link () case $vinfo_number in yes) - number_major="$1" - number_minor="$2" - number_revision="$3" + number_major=$1 + number_minor=$2 + number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix - # which has an extra 1 added just for fun + # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) + darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_revision" + age=$number_minor + revision=$number_revision ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_minor" + age=$number_minor + revision=$number_minor lt_irix_increment=no ;; esac ;; no) - current="$1" - revision="$2" - age="$3" + current=$1 + revision=$2 + age=$3 ;; esac @@ -7362,30 +8836,30 @@ func_mode_link () case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. @@ -7400,26 +8874,36 @@ func_mode_link () # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac ;; freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; + major=.$current + versuffix=.$current.$revision ;; freebsd-elf) - major=".$current" - versuffix=".$current" + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision ;; irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then + if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 @@ -7430,69 +8914,74 @@ func_mode_link () nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac - verstring="$verstring_prefix$major.$revision" + verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" + verstring=$verstring_prefix$major.$iface:$verstring done - # Before this point, $major must not contain `.'. + # Before this point, $major must not contain '.'. major=.$major - versuffix="$major.$revision" + versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring:${iface}.0" + verstring=$verstring:$iface.0 done # Make executables depend on our current version. - func_append verstring ":${current}.0" + func_append verstring ":$current.0" ;; qnx) - major=".$current" - versuffix=".$current" + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current ;; sunos) - major=".$current" - versuffix=".$current.$revision" + major=.$current + versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. + # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; *) - func_fatal_configuration "unknown library version type \`$version_type'" + func_fatal_configuration "unknown library version type '$version_type'" ;; esac @@ -7506,42 +8995,45 @@ func_mode_link () verstring= ;; *) - verstring="0.0" + verstring=0.0 ;; esac - if test "$need_version" = no; then + if test no = "$need_version"; then versuffix= else - versuffix=".0.0" + versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then + if test yes,no = "$avoid_version,$need_version"; then major= versuffix= - verstring="" + verstring= fi # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi fi else # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" + allow_undefined_flag=$no_undefined_flag fi fi - func_generate_dlsyms "$libname" "$libname" "yes" + func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= + test " " = "$libobjs" && libobjs= - if test "$opt_mode" != relink; then + if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= @@ -7550,8 +9042,8 @@ func_mode_link () case $p in *.$objext | *.gcno) ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue @@ -7567,11 +9059,11 @@ func_mode_link () fi # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. @@ -7592,13 +9084,13 @@ func_mode_link () *) func_append finalize_rpath " $libdir" ;; esac done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" + old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in @@ -7608,7 +9100,7 @@ func_mode_link () done # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" + old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in @@ -7617,7 +9109,7 @@ func_mode_link () esac done - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) @@ -7641,7 +9133,7 @@ func_mode_link () ;; *) # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then + if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; @@ -7657,9 +9149,9 @@ func_mode_link () # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? - release="" - versuffix="" - major="" + release= + versuffix= + major= newdeplibs= droppeddeps=no case $deplibs_check_method in @@ -7688,20 +9180,20 @@ EOF -l*) func_stripname -l '' "$i" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7731,20 +9223,20 @@ EOF $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7781,24 +9273,24 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi - test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` + test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test "$want_nocaseglob" = yes; then + if test yes = "$want_nocaseglob"; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob @@ -7816,25 +9308,25 @@ EOF # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? - potlib="$potent_lib" + potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7842,7 +9334,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7865,30 +9357,30 @@ EOF -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test + potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7896,7 +9388,7 @@ EOF echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7912,18 +9404,18 @@ EOF done # Gone through all deplibs. ;; none | unknown | *) - newdeplibs="" + newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo - if test "X$deplibs_check_method" = "Xnone"; then + if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." @@ -7947,8 +9439,8 @@ EOF ;; esac - if test "$droppeddeps" = yes; then - if test "$module" = yes; then + if test yes = "$droppeddeps"; then + if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" @@ -7957,12 +9449,12 @@ EOF if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -7973,14 +9465,14 @@ EOF echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." - if test "$allow_undefined" = no; then + if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -8026,7 +9518,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - deplibs="$new_libs" + deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= @@ -8034,25 +9526,25 @@ EOF dlname= # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Remove ${wl} instances when linking with ld. + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac - if test "$hardcode_into_libs" = yes; then + if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8077,7 +9569,7 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then @@ -8091,8 +9583,8 @@ EOF test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -8102,19 +9594,19 @@ EOF eval library_names=\"$library_names_spec\" set dummy $library_names shift - realname="$1" + realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi if test -z "$dlname"; then dlname=$soname fi - lib="$output_objdir/$realname" + lib=$output_objdir/$realname linknames= for link do @@ -8128,7 +9620,7 @@ EOF delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi @@ -8137,31 +9629,31 @@ EOF cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. - orig_export_symbols="$export_symbols" + orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes - fi + } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do - IFS="$save_ifs" + IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in @@ -8175,7 +9667,7 @@ EOF try_normal_branch=no ;; esac - if test "$try_normal_branch" = yes \ + if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then @@ -8186,7 +9678,7 @@ EOF output_la=$func_basename_result save_libobjs=$libobjs save_output=$output - output=${output_objdir}/${output_la}.nm + output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" @@ -8209,8 +9701,8 @@ EOF break fi done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi @@ -8218,16 +9710,16 @@ EOF fi if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8246,11 +9738,11 @@ EOF ;; esac done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && + test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. @@ -8261,7 +9753,7 @@ EOF eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8270,18 +9762,18 @@ EOF fi fi - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds @@ -8299,7 +9791,7 @@ EOF fi fi - if test "X$skipped_export" != "X:" && + if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then @@ -8332,8 +9824,8 @@ EOF last_robj= k=1 - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs @@ -8345,14 +9837,14 @@ EOF func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= - if test "$compiler_needs_object" = yes; then + if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi @@ -8367,7 +9859,7 @@ EOF else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result @@ -8379,13 +9871,13 @@ EOF func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result - if test "X$objlist" = X || + if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. - if test "$k" -eq 1 ; then + if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" @@ -8395,10 +9887,10 @@ EOF reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi - last_robj=$output_objdir/$output_la-${k}.$objext + last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result @@ -8410,9 +9902,9 @@ EOF # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" @@ -8420,9 +9912,9 @@ EOF output= fi - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. @@ -8431,16 +9923,16 @@ EOF if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi - fi + } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8448,7 +9940,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8457,7 +9949,7 @@ EOF exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' @@ -8465,18 +9957,18 @@ EOF fi fi - if ${skipped_export-false}; then + ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8485,7 +9977,7 @@ EOF export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi - fi + } libobjs=$output # Restore the value of output. @@ -8499,7 +9991,7 @@ EOF # value of $libobjs for piecewise linking. # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else @@ -8521,7 +10013,7 @@ EOF # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -8529,11 +10021,12 @@ EOF test "X$libobjs" = "X " && libobjs= fi - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $cmds; do - IFS="$save_ifs" + IFS=$sp$nl eval cmd=\"$cmd\" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8541,7 +10034,7 @@ EOF lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8550,10 +10043,10 @@ EOF exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -8573,39 +10066,39 @@ EOF done # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then + if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. - dlname="$soname" + dlname=$soname fi fi ;; obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; + func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" + func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" + func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" + func_warning "'-version-info' is ignored for objects" test -n "$release" && \ - func_warning "\`-release' is ignored for objects" + func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" + func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" @@ -8613,7 +10106,7 @@ EOF ;; *) libobj= - obj="$output" + obj=$output ;; esac @@ -8626,17 +10119,19 @@ EOF # the extraction. reload_conv_objs= gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else - gentop="$output_objdir/${obj}x" + gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8645,12 +10140,12 @@ EOF fi # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - output="$obj" + output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. @@ -8662,7 +10157,7 @@ EOF exit $EXIT_SUCCESS fi - if test "$build_libtool_libs" != yes; then + test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi @@ -8672,12 +10167,12 @@ EOF # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS - fi + } - if test -n "$pic_flag" || test "$pic_mode" != default; then + if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" - output="$libobj" + output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi @@ -8694,16 +10189,14 @@ EOF output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" + func_warning "'-version-info' is ignored for programs" test -n "$release" && \ - func_warning "\`-release' is ignored for programs" + func_warning "'-release' is ignored for programs" - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) @@ -8717,11 +10210,11 @@ EOF *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then + if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" ;; esac fi @@ -8757,7 +10250,7 @@ EOF *) func_append new_libs " $deplib" ;; esac done - compile_deplibs="$new_libs" + compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" @@ -8781,7 +10274,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8804,7 +10297,7 @@ EOF fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; @@ -8821,10 +10314,10 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - compile_rpath="$rpath" + compile_rpath=$rpath rpath= hardcode_libdirs= @@ -8832,7 +10325,7 @@ EOF if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8857,45 +10350,43 @@ EOF # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - finalize_rpath="$rpath" + finalize_rpath=$rpath - if test -n "$libobjs" && test "$build_old_libs" = yes; then + if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi - wrappers_required=yes + wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no + wrappers_required=false ;; *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi + test yes = "$build_libtool_libs" || wrappers_required=false ;; *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false fi ;; esac - if test "$wrappers_required" = no; then + $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" + link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 @@ -8908,12 +10399,12 @@ EOF fi # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status - fi + } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" @@ -8943,9 +10434,9 @@ EOF fi fi - if test "$no_install" = yes; then + if test yes = "$no_install"; then # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" + link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. @@ -8962,27 +10453,28 @@ EOF exit $EXIT_SUCCESS fi - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` @@ -9039,8 +10531,8 @@ EOF func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 @@ -9061,7 +10553,7 @@ EOF trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then + if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result @@ -9084,25 +10576,27 @@ EOF # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience build_libtool_libs=no - else + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs @@ -9110,13 +10604,13 @@ EOF fi # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -9137,7 +10631,7 @@ EOF : else echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs @@ -9146,7 +10640,7 @@ EOF for obj in $save_oldobjs do func_basename "$obj" - objbase="$func_basename_result" + objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) @@ -9215,18 +10709,18 @@ EOF else # the above command should be used before it gets too long oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then + if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist - if test "X$oldobjs" = "X" ; then + if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" @@ -9243,7 +10737,7 @@ EOF case $output in *.la) old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" + test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior @@ -9258,31 +10752,31 @@ EOF fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then + if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do - if test "$installed" = yes; then + if test yes = "$installed"; then if test -z "$install_libdir"; then break fi - output="$output_objdir/$outputname"i + output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" - name="$func_basename_result" + name=$func_basename_result func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) @@ -9298,23 +10792,23 @@ EOF *) func_append newdependency_libs " $deplib" ;; esac done - dependency_libs="$newdependency_libs" + dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in @@ -9324,34 +10818,34 @@ EOF # didn't already link the preopened objects directly into # the library: func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin @@ -9367,10 +10861,9 @@ EOF case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then + if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname + tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname @@ -9379,7 +10872,7 @@ EOF esac $ECHO > $output "\ # $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. @@ -9393,7 +10886,7 @@ library_names='$library_names' # The name of the static archive. old_library='$old_library' -# Linker flags that can not go in dependency_libs. +# Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. @@ -9419,7 +10912,7 @@ dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then + if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi @@ -9434,27 +10927,29 @@ relink_command=\"$relink_command\"" exit $EXIT_SUCCESS } -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi # func_mode_uninstall arg... func_mode_uninstall () { - $opt_debug - RM="$nonopt" + $debug_cmd + + RM=$nonopt files= - rmforce= + rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic for arg do case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; + -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac @@ -9467,18 +10962,18 @@ func_mode_uninstall () for file in $files; do func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir else - odir="$dir/$objdir" + odir=$dir/$objdir fi func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then + if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; @@ -9493,11 +10988,11 @@ func_mode_uninstall () elif test -d "$file"; then exit_status=1 continue - elif test "$rmforce" = yes; then + elif $rmforce; then continue fi - rmfiles="$file" + rmfiles=$file case $name in *.la) @@ -9511,7 +11006,7 @@ func_mode_uninstall () done test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$opt_mode" in + case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; @@ -9522,12 +11017,12 @@ func_mode_uninstall () uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; @@ -9543,21 +11038,19 @@ func_mode_uninstall () func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then + if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then + if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$opt_mode" = clean ; then + if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) @@ -9584,12 +11077,12 @@ func_mode_uninstall () # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" fi fi fi @@ -9598,7 +11091,7 @@ func_mode_uninstall () func_show_eval "$RM $rmfiles" 'exit_status=1' done - # Try to remove the ${objdir}s in the directories where we deleted files + # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" @@ -9608,16 +11101,17 @@ func_mode_uninstall () exit $exit_status } -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi test -z "$opt_mode" && { - help="$generic_help" + help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" @@ -9628,7 +11122,7 @@ exit $exit_status # The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting +# where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support @@ -9651,5 +11145,3 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # mode:shell-script # sh-indentation:2 # End: -# vi:sw=2 - diff --git a/external/unbound/makedist.sh b/external/unbound/makedist.sh index 5f19dfb..ffc00c1 100644 --- a/external/unbound/makedist.sh +++ b/external/unbound/makedist.sh @@ -55,6 +55,7 @@ Generate a distribution tar file for unbound. Detected from svn working copy if not specified. -wssl openssl.xx.tar.gz Also build openssl from tarball for windows dist. -wxp expat.xx.tar.gz Also build expat from tarball for windows dist. + -w32 32bit windows compile. -w ... Build windows binary dist. last args passed to configure. EOF exit 1 @@ -177,6 +178,7 @@ storehash () { SNAPSHOT="no" RC="no" DOWIN="no" +W64="yes" WINSSL="" WINEXPAT="" @@ -201,6 +203,9 @@ while [ "$1" ]; do WINEXPAT="$2" shift ;; + "-w32") + W64="no" + ;; "-w") DOWIN="yes" shift @@ -222,8 +227,15 @@ if [ "$DOWIN" = "yes" ]; then if test "`uname`" = "Linux"; then info "Crosscompile windows dist" cross="yes" - configure="mingw32-configure" - strip="i686-w64-mingw32-strip" + if test "$W64" = "yes"; then + warch="x86_64" # i686 for 32bit, or x86_64 for 64bit + mw64="mingw64" # mingw32 or mingw64 + else + warch="i686" + mw64="mingw32" + fi + configure="${mw64}-configure" # mingw32-configure, mingw64-configure + strip="${warch}-w64-mingw32-strip" makensis="makensis" # from mingw32-nsis package # flags for crosscompiled dependency libraries cross_flag="" @@ -241,9 +253,13 @@ if [ "$DOWIN" = "yes" ]; then # configure for crosscompile, without CAPI because it fails # cross-compilation and it is not used anyway # before 1.0.1i need --cross-compile-prefix=i686-w64-mingw32- - sslflags="no-asm -DOPENSSL_NO_CAPIENG mingw" + if test "$mw64" = "mingw64"; then + sslflags="no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64" + else + sslflags="no-shared no-asm -DOPENSSL_NO_CAPIENG mingw" + fi info "winssl: Configure $sslflags" - CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar RANLIB=i686-w64-mingw32-ranlib ./Configure --prefix="$sslinstall" $sslflags || error_cleanup "OpenSSL Configure failed" + CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" $sslflags || error_cleanup "OpenSSL Configure failed" info "winssl: make" make || error_cleanup "OpenSSL crosscompile failed" # only install sw not docs, which take a long time. @@ -256,15 +272,15 @@ if [ "$DOWIN" = "yes" ]; then if test -n "$WINEXPAT"; then info "Cross compile $WINEXPAT" info "wxp: tar unpack" - (cd ..; gzip -cd $WINEXPAT) | tar xf - || error_cleanup "tar unpack of $WINEXPAT failed" + (cd ..; bzip2 -cd $WINEXPAT) | tar xf - || error_cleanup "tar unpack of $WINEXPAT failed" wxpinstall="`pwd`/wxpinstall" cd expat-* || error_cleanup "no expat-X dir in tarball" info "wxp: configure" - mingw32-configure --prefix="$wxpinstall" --exec-prefix="$wxpinstall" --bindir="$wxpinstall/bin" --includedir="$wxpinstall/include" --mandir="$wxpinstall/man" --libdir="$wxpinstall/lib" || error_cleanup "libexpat configure failed" + $configure --prefix="$wxpinstall" --exec-prefix="$wxpinstall" --bindir="$wxpinstall/bin" --includedir="$wxpinstall/include" --mandir="$wxpinstall/man" --libdir="$wxpinstall/lib" || error_cleanup "libexpat configure failed" #info "wxp: make" #make || error_cleanup "libexpat crosscompile failed" - info "wxp: make installlib" - make installlib || error_cleanup "libexpat install failed" + info "wxp: make install" + make install || error_cleanup "libexpat install failed" cross_flag="$cross_flag --with-libexpat=$wxpinstall" cd .. fi @@ -307,9 +323,20 @@ if [ "$DOWIN" = "yes" ]; then # procedure for making unbound installer on mingw. info "Creating windows dist unbound $version" info "Calling configure" - echo "$configure"' --enable-debug --enable-static-exe '"$* $cross_flag" - $configure --enable-debug --enable-static-exe $* $cross_flag \ + if test "$W64" = "no"; then + file_flag="--with-conf-file=C:\Program Files (x86)\Unbound\service.conf" + file2_flag="--with-rootkey-file=C:\Program Files (x86)\Unbound\root.key" + file3_flag="--with-rootcert-file=C:\Program Files (x86)\Unbound\icannbundle.pem" + version="$version"-w32 + fi + echo "$configure"' --enable-debug --enable-static-exe --disable-flto '"$* $cross_flag "$file_flag" "$file2_flag" "$file3_flag"" + if test "$W64" = "no"; then + $configure --enable-debug --enable-static-exe --disable-flto $* $cross_flag "$file_flag" "$file2_flag" "$file3_flag" \ + || error_cleanup "Could not configure" + else + $configure --enable-debug --enable-static-exe --disable-flto $* $cross_flag \ || error_cleanup "Could not configure" + fi info "Calling make" make || error_cleanup "Could not make" info "Make complete" @@ -318,26 +345,33 @@ if [ "$DOWIN" = "yes" ]; then file="unbound-$version.zip" rm -f $file info "Creating $file" + grep '^". IN DS' smallapp/unbound-anchor.c | sed -e 's/"//' -e 's/\\n.*$//' > root.key mkdir tmp.$$ - $strip unbound.exe - $strip anchor-update.exe - $strip unbound-control.exe - $strip unbound-host.exe - $strip unbound-anchor.exe - $strip unbound-checkconf.exe - $strip unbound-service-install.exe - $strip unbound-service-remove.exe + # keep debug symbols + #$strip unbound.exe + #$strip anchor-update.exe + #$strip unbound-control.exe + #$strip unbound-host.exe + #$strip unbound-anchor.exe + #$strip unbound-checkconf.exe + #$strip unbound-service-install.exe + #$strip unbound-service-remove.exe cd tmp.$$ + cp ../root.key . cp ../doc/example.conf ../doc/Changelog . cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt ../contrib/create_unbound_ad_servers.cmd ../contrib/warmup.cmd ../contrib/unbound_cache.cmd . # zipfile - zip ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog + zip ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf root.key unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog info "Testing $file" (cd .. ; zip -T $file ) # installer info "Creating installer" quadversion=`cat ../config.h | grep RSRC_PACKAGE_VERSION | sed -e 's/#define RSRC_PACKAGE_VERSION //' -e 's/,/\\./g'` cat ../winrc/setup.nsi | sed -e 's/define VERSION.*$/define VERSION "'$version'"/' -e 's/define QUADVERSION.*$/define QUADVERSION "'$quadversion'"/' > ../winrc/setup_ed.nsi + if test "$W64" = "yes"; then + mv ../winrc/setup_ed.nsi ../winrc/setup_ed_old.nsi + cat ../winrc/setup_ed_old.nsi | sed -e 's/PROGRAMFILES/PROGRAMFILES64/' > ../winrc/setup_ed.nsi + fi "$makensis" ../winrc/setup_ed.nsi info "Created installer" cd .. diff --git a/external/unbound/pythonmod/doc/conf.py b/external/unbound/pythonmod/doc/conf.py index bc7a5ab..7fcfe2d 100644 --- a/external/unbound/pythonmod/doc/conf.py +++ b/external/unbound/pythonmod/doc/conf.py @@ -80,10 +80,13 @@ # Options for HTML output # ----------------------- +# The theme that the html output should use. +html_theme = "classic" + # The style sheet to use for HTML and HTML Help pages. A file of that name # must exist either in Sphinx' static/ path, or in one of the custom paths # given in html_static_path. -html_style = 'default.css' +#html_style = 'default.css' # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". diff --git a/external/unbound/pythonmod/doc/examples/example0-1.py b/external/unbound/pythonmod/doc/examples/example0-1.py index 3b234f1..5ae48d1 100644 --- a/external/unbound/pythonmod/doc/examples/example0-1.py +++ b/external/unbound/pythonmod/doc/examples/example0-1.py @@ -24,7 +24,7 @@ def operate(id, event, qstate, qdata): if event == MODULE_EVENT_PASS: log_info("pythonmod: event_pass") - qstate.ext_state[id] = MODULE_ERROR + qstate.ext_state[id] = MODULE_WAIT_MODULE return True log_err("pythonmod: BAD event") diff --git a/external/unbound/pythonmod/doc/examples/example0.rst b/external/unbound/pythonmod/doc/examples/example0.rst index 80eca5e..8fff41f 100644 --- a/external/unbound/pythonmod/doc/examples/example0.rst +++ b/external/unbound/pythonmod/doc/examples/example0.rst @@ -109,7 +109,7 @@ Script file must contain four compulsory functions: return True if event == MODULE_EVENT_PASS: - qstate.ext_state[id] = MODULE_ERROR + qstate.ext_state[id] = MODULE_WAIT_MODULE return True log_err("pythonmod: BAD event") diff --git a/external/unbound/pythonmod/doc/examples/example1.rst b/external/unbound/pythonmod/doc/examples/example1.rst index b49e644..ccd76da 100644 --- a/external/unbound/pythonmod/doc/examples/example1.rst +++ b/external/unbound/pythonmod/doc/examples/example1.rst @@ -1,10 +1,12 @@ .. _log_handler: Packet logger -========================= +============= This example shows how to log and print details about query and response. -As soon as the ``iterator`` has finished (event is :data:`module_event_moddone`), ``qstate.return_msg`` contains response packet or ``None``. +As soon as the ``iterator`` has finished (event is +:data:`module_event_moddone`), ``qstate.return_msg`` contains response packet +or ``None``. This packet will be send to a client that asked for it. Complete source code @@ -14,14 +16,16 @@ Complete source code :language: python Testing ------------------- +------- Run the unbound server: ``root@localhost>unbound -dv -c ./test-log.conf`` -In case you use own configuration file, don't forget to enable python module: ``module-config: "validator python iterator"`` and use valid script path: ``python-script: "./examples/log.py"``. +In case you use own configuration file, don't forget to enable python module: +``module-config: "validator python iterator"`` and use valid script path: +``python-script: "./examples/log.py"``. -Example of output:: +Example of output:: [1231790168] unbound[7941:0] info: response for [1231790168] unbound[7941:0] info: reply from 192.5.6.31#53 diff --git a/external/unbound/pythonmod/doc/examples/example2.rst b/external/unbound/pythonmod/doc/examples/example2.rst index f00fcc2..663d1eb 100644 --- a/external/unbound/pythonmod/doc/examples/example2.rst +++ b/external/unbound/pythonmod/doc/examples/example2.rst @@ -1,12 +1,14 @@ Response generation -===================== +=================== This example shows how to handle queries and generate response packet. .. note:: - If the python module is the first module and validator module is enabled (``module-config: "python validator iterator"``), - a return_msg security flag has to be set at least to 2. Leaving security flag untouched causes that the - response will be refused by unbound worker as unbound will consider it as non-valid response. + If the python module is the first module and validator module is enabled + (``module-config: "python validator iterator"``), a return_msg security flag + has to be set at least to 2. Leaving security flag untouched causes that the + response will be refused by unbound worker as unbound will consider it as + non-valid response. Complete source code -------------------- @@ -27,20 +29,21 @@ Query for a A record ending with .localdomain Dig produces the following output:: - ;; global options: printcmd - ;; Got answer: - ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48426 - ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 - - ;; QUESTION SECTION: - ;test.xxx.localdomain. IN A - - ;; ANSWER SECTION: - test.xxx.localdomain. 10 IN A 127.0.0.1 - - ;; Query time: 2 msec - ;; SERVER: 127.0.0.1#53(127.0.0.1) - ;; WHEN: Mon Jan 01 12:46:02 2009 - ;; MSG SIZE rcvd: 54 - -As we handle (override) in python module only queries ending with "localdomain.", the unboud can still resolve host names. + ;; global options: printcmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48426 + ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 + + ;; QUESTION SECTION: + ;test.xxx.localdomain. IN A + + ;; ANSWER SECTION: + test.xxx.localdomain. 10 IN A 127.0.0.1 + + ;; Query time: 2 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Jan 01 12:46:02 2009 + ;; MSG SIZE rcvd: 54 + +As we handle (override) in the python module only queries ending with +``localdomain.``, unbound can still resolve host names. diff --git a/external/unbound/pythonmod/doc/examples/example3.rst b/external/unbound/pythonmod/doc/examples/example3.rst index 6213dc1..bc0e05f 100644 --- a/external/unbound/pythonmod/doc/examples/example3.rst +++ b/external/unbound/pythonmod/doc/examples/example3.rst @@ -10,7 +10,7 @@ As soon as the iterator module returns the response, we : 3. rewrite the data in cache 4. return modified packet -Note that the steps 1 and 3 are neccessary only in case, the python module is the first module in the processing chain. +Note that the steps 1 and 3 are necessary only in case, the python module is the first module in the processing chain. In other cases, the validator module guarantees updating data which are produced by iterator module. Complete source code diff --git a/external/unbound/pythonmod/doc/examples/example4.rst b/external/unbound/pythonmod/doc/examples/example4.rst index b665351..3382109 100644 --- a/external/unbound/pythonmod/doc/examples/example4.rst +++ b/external/unbound/pythonmod/doc/examples/example4.rst @@ -1,15 +1,19 @@ DNS-based language dictionary -=============================== +============================= This example shows how to create a simple language dictionary based on **DNS** -service within 15 minutes. The translation will be performed using TXT resource records. +service within 15 minutes. The translation will be performed using TXT resource +records. Key parts ------------ +--------- Initialization -~~~~~~~~~~~~~~~~~~~~~~~ -On **init()** module loads dictionary from a text file containing records in ``word [tab] translation`` format. +~~~~~~~~~~~~~~ + +On **init()** module loads dictionary from a text file containing records in +``word [tab] translation`` format. + :: def init(id, cfg): @@ -20,11 +24,14 @@ On **init()** module loads dictionary from a text file containing records in ``w The suitable file can be found at http://slovnik.zcu.cz DNS query and word lookup -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~ -Let's define the following format od DNS queries: ``word1[.]word2[.] ... wordN[.]{en,cs}[._dict_.cz.]``. +Let's define the following format od DNS queries: +``word1[.]word2[.] ... wordN[.]{en,cs}[._dict_.cz.]``. Word lookup is done by simple ``dict`` lookup from broken DNS request. -Query name is divided into a list of labels. This list is accessible as qname_list attribute. +Query name is divided into a list of labels. This list is accessible as +``qname_list`` attribute. + :: aword = ' '.join(qstate.qinfo.qname_list[0:-4]) #skip last four labels @@ -37,35 +44,40 @@ Query name is divided into a list of labels. This list is accessible as qname_li if (adict == "cs") and (aword in cz_dict): words = cz_dict[aword] # CS -> EN -In the first step, we get a string in the form: ``word1[space]word2[space]...word[space]``. -In the second assignment, fourth label from the end is obtained. This label should contains *"cs"* or *"en"*. -This label determines the direction of translation. - +In the first step, we get a string in the form: +``word1[space]word2[space]...word[space]``. +In the second assignment, fourth label from the end is obtained. This label +should contains *"cs"* or *"en"*. This label determines the direction of +translation. Forming of a DNS reply -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~ DNS reply is formed only on valid match and added as TXT answer. + :: - msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_TXT, RR_CLASS_IN, PKT_AA) + msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_TXT, RR_CLASS_IN, PKT_AA) - for w in words: - msg.answer.append("%s 300 IN TXT \"%s\"" % (qstate.qinfo.qname_str, w.replace("\"", "\\\""))) + for w in words: + msg.answer.append("%s 300 IN TXT \"%s\"" % (qstate.qinfo.qname_str, w.replace("\"", "\\\""))) - if not msg.set_return_msg(qstate): - qstate.ext_state[id] = MODULE_ERROR - return True + if not msg.set_return_msg(qstate): + qstate.ext_state[id] = MODULE_ERROR + return True - qstate.return_rcode = RCODE_NOERROR - qstate.ext_state[id] = MODULE_FINISHED - return True + qstate.return_rcode = RCODE_NOERROR + qstate.ext_state[id] = MODULE_FINISHED + return True -In the first step, a :class:`DNSMessage` instance is created for a given query *(type TXT)*. +In the first step, a :class:`DNSMessage` instance is created for a given query +*(type TXT)*. The fourth argument specifies the flags *(authoritative answer)*. -In the second step, we append TXT records containing the translation *(on the right side of RR)*. +In the second step, we append TXT records containing the translation *(on the +right side of RR)*. Then, the response is finished and ``qstate.return_msg`` contains new response. -If no error, the module sets :attr:`module_qstate.return_rcode` and :attr:`module_qstate.ext_state`. +If no error, the module sets :attr:`module_qstate.return_rcode` and +:attr:`module_qstate.ext_state`. **Steps:** @@ -82,80 +94,82 @@ Run the Unbound server: In case you use own configuration file, don't forget to enable Python module:: - module-config: "validator python iterator" + module-config: "validator python iterator" and use valid script path:: - python-script: "./examples/dict.py" + python-script: "./examples/dict.py" The translation from english word *"a bar fly"* to Czech can be done by doing: ``>>>dig TXT @127.0.0.1 a.bar.fly.en._dict_.cz`` -:: +:: + + ; (1 server found) + ;; global options: printcmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48691 + ;; flags: aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 + + ;; QUESTION SECTION: + ;a.bar.fly.en._dict_.cz. IN TXT + + ;; ANSWER SECTION: + a.bar.fly.en._dict_.cz. 300 IN TXT "barov\253 povale\232" + + ;; Query time: 5 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Jan 01 17:44:18 2009 + ;; MSG SIZE rcvd: 67 - ; (1 server found) - ;; global options: printcmd - ;; Got answer: - ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48691 - ;; flags: aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 - - ;; QUESTION SECTION: - ;a.bar.fly.en._dict_.cz. IN TXT - - ;; ANSWER SECTION: - a.bar.fly.en._dict_.cz. 300 IN TXT "barov\253 povale\232" - - ;; Query time: 5 msec - ;; SERVER: 127.0.0.1#53(127.0.0.1) - ;; WHEN: Mon Jan 01 17:44:18 2009 - ;; MSG SIZE rcvd: 67 - ``>>>dig TXT @127.0.0.1 nic.cs._dict_.cz`` + :: - ; <<>> DiG 9.5.0-P2 <<>> TXT @127.0.0.1 nic.cs._dict_.cz - ; (1 server found) - ;; global options: printcmd - ;; Got answer: - ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58710 - ;; flags: aa rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 - - ;; QUESTION SECTION: - ;nic.cs._dict_.cz. IN TXT - - ;; ANSWER SECTION: - nic.cs._dict_.cz. 300 IN TXT "aught" - nic.cs._dict_.cz. 300 IN TXT "naught" - nic.cs._dict_.cz. 300 IN TXT "nihil" - nic.cs._dict_.cz. 300 IN TXT "nix" - nic.cs._dict_.cz. 300 IN TXT "nothing" - nic.cs._dict_.cz. 300 IN TXT "zilch" - - ;; Query time: 0 msec - ;; SERVER: 127.0.0.1#53(127.0.0.1) - ;; WHEN: Mon Jan 01 17:45:39 2009 - ;; MSG SIZE rcvd: 143 - -Proof that the unbound still works as resolver. + ; <<>> DiG 9.5.0-P2 <<>> TXT @127.0.0.1 nic.cs._dict_.cz + ; (1 server found) + ;; global options: printcmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58710 + ;; flags: aa rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 + + ;; QUESTION SECTION: + ;nic.cs._dict_.cz. IN TXT + + ;; ANSWER SECTION: + nic.cs._dict_.cz. 300 IN TXT "aught" + nic.cs._dict_.cz. 300 IN TXT "naught" + nic.cs._dict_.cz. 300 IN TXT "nihil" + nic.cs._dict_.cz. 300 IN TXT "nix" + nic.cs._dict_.cz. 300 IN TXT "nothing" + nic.cs._dict_.cz. 300 IN TXT "zilch" + + ;; Query time: 0 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Jan 01 17:45:39 2009 + ;; MSG SIZE rcvd: 143 + + Proof that the unbound still works as resolver. ``>>>dig A @127.0.0.1 www.nic.cz`` + :: - ; (1 server found) - ;; global options: printcmd - ;; Got answer: - ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19996 - ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5 - - ;; QUESTION SECTION: - ;www.nic.cz. IN A - - ;; ANSWER SECTION: - www.nic.cz. 1662 IN A 217.31.205.50 - - ;; AUTHORITY SECTION: - ... + ; (1 server found) + ;; global options: printcmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19996 + ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 5 + + ;; QUESTION SECTION: + ;www.nic.cz. IN A + + ;; ANSWER SECTION: + www.nic.cz. 1662 IN A 217.31.205.50 + + ;; AUTHORITY SECTION: + ... Complete source code -------------------- diff --git a/external/unbound/pythonmod/doc/examples/example5.rst b/external/unbound/pythonmod/doc/examples/example5.rst new file mode 100644 index 0000000..938d894 --- /dev/null +++ b/external/unbound/pythonmod/doc/examples/example5.rst @@ -0,0 +1,191 @@ +EDNS options +============ + +This example shows how to interact with EDNS options. + +When querying unbound with the EDNS option ``65001`` and data ``0xc001`` we +expect an answer with the same EDNS option code and data ``0xdeadbeef``. + + +Key parts +~~~~~~~~~ + +This example relies on the following functionalities: + + +Registering EDNS options +------------------------ + +By registering EDNS options we can tune unbound's behavior when encountering a +query with a known EDNS option. The two available options are: + +- ``bypass_cache_stage``: If set to ``True`` unbound will not try to answer + from cache. Instead execution is passed to the modules +- ``no_aggregation``: If set to ``True`` unbound will consider this query + unique and will not aggregate it with similar queries + +Both values default to ``False``. + +.. code-block:: python + + if not register_edns_option(env, 65001, bypass_cache_stage=True, + no_aggregation=True): + log_info("python: Could not register EDNS option {}".format(65001)) + + +EDNS option lists +----------------- + +EDNS option lists can be found in the :class:`module_qstate` class. There are +four available lists in total: + +- :class:`module_qstate.edns_opts_front_in`: options that came from the client + side. **Should not** be changed +- :class:`module_qstate.edns_opts_back_out`: options that will be sent to the + server side. Can be populated by edns literate modules +- :class:`module_qstate.edns_opts_back_in`: options that came from the server + side. **Should not** be changed +- :class:`module_qstate.edns_opts_front_out`: options that will be sent to the + client side. Can be populated by edns literate modules + +Each list element has the following members: + +- ``code``: the EDNS option code; +- ``data``: the EDNS option data. + + +Reading an EDNS option list +........................... + +The lists' contents can be accessed in python by their ``_iter`` counterpart as +an iterator: + +.. code-block:: python + + if not edns_opt_list_is_empty(qstate.edns_opts_front_in): + for o in qstate.edns_opts_front_in_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + + +Writing to an EDNS option list +.............................. + +By appending to an EDNS option list we can add new EDNS options. The new +element is going to be allocated in :class:`module_qstate.region`. The data +**must** be represented with a python ``bytearray``: + +.. code-block:: python + + b = bytearray.fromhex("deadbeef") + if not edns_opt_list_append(qstate.edns_opts_front_out, + o.code, b, qstate.region): + log_info("python: Could not append EDNS option {}".format(o.code)) + +We can also remove an EDNS option code from an EDNS option list. + +.. code-block:: python + + if not edns_opt_list_remove(edns_opt_list, code): + log_info("python: Option code {} was not found in the " + "list.".format(code)) + +.. note:: All occurences of the EDNS option code will be removed from the list: + + +Controlling other modules' cache behavior +----------------------------------------- + +During the modules' operation, some modules may interact with the cache +(e.g., iterator). This behavior can be controlled by using the following +:class:`module_qstate` flags: + +- :class:`module_qstate.no_cache_lookup`: Modules *operating after* this module + will not lookup the cache for an answer +- :class:`module_qstate.no_cache_store`: Modules *operating after* this module + will not store the response in the cache + +Both values default to ``0``. + +.. code-block:: python + + def operate(id, event, qstate, qdata): + if (event == MODULE_EVENT_NEW) or (event == MODULE_EVENT_PASS): + # Detect if edns option code 56001 is present from the client side. If + # so turn on the flags for cache management. + if not edns_opt_list_is_empty(qstate.edns_opts_front_in): + log_info("python: searching for edns option code 65001 during NEW " + "or PASS event ") + for o in qstate.edns_opts_front_in_iter: + if o.code == 65001: + log_info("python: found edns option code 65001") + # Instruct other modules to not lookup for an + # answer in the cache. + qstate.no_cache_lookup = 1 + log_info("python: enabled no_cache_lookup") + + # Instruct other modules to not store the answer in + # the cache. + qstate.no_cache_store = 1 + log_info("python: enabled no_cache_store") + + +Testing +~~~~~~~ + +Run the Unbound server: :: + + root@localhost$ unbound -dv -c ./test-edns.conf + +In case you use your own configuration file, don't forget to enable the Python +module:: + + module-config: "validator python iterator" + +and use a valid script path:: + + python-script: "./examples/edns.py" + +Querying with EDNS option ``65001:0xc001``: + +:: + + root@localhost$ dig @localhost nlnetlabs.nl +ednsopt=65001:c001 + + ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost nlnetlabs.nl +ednsopt=65001:c001 + ; (1 server found) + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33450 + ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3 + + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 4096 + ; OPT=65001: de ad be ef ("....") + ;; QUESTION SECTION: + ;nlnetlabs.nl. IN A + + ;; ANSWER SECTION: + nlnetlabs.nl. 10200 IN A 185.49.140.10 + + ;; AUTHORITY SECTION: + nlnetlabs.nl. 10200 IN NS anyns.pch.net. + nlnetlabs.nl. 10200 IN NS ns.nlnetlabs.nl. + nlnetlabs.nl. 10200 IN NS ns-ext1.sidn.nl. + nlnetlabs.nl. 10200 IN NS sec2.authdns.ripe.net. + + ;; ADDITIONAL SECTION: + ns.nlnetlabs.nl. 10200 IN AAAA 2a04:b900::8:0:0:60 + ns.nlnetlabs.nl. 10200 IN A 185.49.140.60 + + ;; Query time: 10 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Dec 05 14:50:56 CET 2016 + ;; MSG SIZE rcvd: 212 + + +Complete source code +~~~~~~~~~~~~~~~~~~~~ + +.. literalinclude:: ../../examples/edns.py + :language: python diff --git a/external/unbound/pythonmod/doc/examples/example6.rst b/external/unbound/pythonmod/doc/examples/example6.rst new file mode 100644 index 0000000..eb32540 --- /dev/null +++ b/external/unbound/pythonmod/doc/examples/example6.rst @@ -0,0 +1,299 @@ +Inplace callbacks +================= + +This example shows how to register and use inplace callback functions. These +functions are going to be called just before unbound replies back to a client. +They can perform certain actions without interrupting unbound's execution flow +(e.g. add/remove EDNS options, manipulate the reply). + +Two different scenarios will be shown: + +- If answering from cache and the client used EDNS option code ``65002`` we + will answer with the same code but with data ``0xdeadbeef``; +- When answering with a SERVFAIL we also add an empty EDNS option code + ``65003``. + + +Key parts +~~~~~~~~~ + +This example relies on the following functionalities: + + +Registering inplace callback functions +-------------------------------------- + +There are four types of inplace callback functions: + +- `inplace callback reply functions`_ +- `inplace callback reply_cache functions`_ +- `inplace callback reply_local functions`_ +- `inplace callback reply_servfail functions`_ + + +Inplace callback reply functions +................................ + +Called when answering with a *resolved* query. + +The callback function's prototype is the following: + +.. code-block:: python + + def inplace_reply_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, region): + """Function that will be registered as an inplace callback function. + It will be called when answering with a resolved query. + :param qinfo: query_info struct; + :param qstate: module qstate. It contains the available opt_lists; It + SHOULD NOT be altered; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data to be sent to the client side. It SHOULD NOT be + altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + +.. note:: The function's name is irrelevant. + +We can register such function as: + +.. code-block:: python + + if not register_inplace_cb_reply(inplace_reply_callback, env, id): + log_info("python: Could not register inplace callback function.") + + +Inplace callback reply_cache functions +...................................... + +Called when answering *from cache*. + +The callback function's prototype is the following: + +.. code-block:: python + + def inplace_cache_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, region): + """Function that will be registered as an inplace callback function. + It will be called when answering from the cache. + :param qinfo: query_info struct; + :param qstate: module qstate. None; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data sent from the client side. The list with the EDNS + options is accessible through edns.opt_list. It SHOULD NOT be + altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + +.. note:: The function's name is irrelevant. + +We can register such function as: + +.. code-block:: python + + if not register_inplace_cb_reply_cache(inplace_cache_callback, env, id): + log_info("python: Could not register inplace callback function.") + + +Inplace callback reply_local functions +...................................... + +Called when answering with *local data* or a *Chaos(CH) reply*. + +The callback function's prototype is the following: + +.. code-block:: python + + def inplace_local_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, region): + """Function that will be registered as an inplace callback function. + It will be called when answering from local data. + :param qinfo: query_info struct; + :param qstate: module qstate. None; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data sent from the client side. The list with the + EDNS options is accessible through edns.opt_list. It + SHOULD NOT be altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + +.. note:: The function's name is irrelevant. + +We can register such function as: + +.. code-block:: python + + if not register_inplace_cb_reply_local(inplace_local_callback, env, id): + log_info("python: Could not register inplace callback function.") + + +Inplace callback reply_servfail functions +......................................... + +Called when answering with *SERVFAIL*. + +The callback function's prototype is the following: + +.. code-block:: python + + def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, region): + """Function that will be registered as an inplace callback function. + It will be called when answering with SERVFAIL. + :param qinfo: query_info struct; + :param qstate: module qstate. If not None the relevant opt_lists are + available here; + :param rep: reply_info struct. None; + :param rcode: return code for the query. LDNS_RCODE_SERVFAIL; + :param edns: edns_data to be sent to the client side. If qstate is None + edns.opt_list contains the EDNS options sent from the client + side. It SHOULD NOT be altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + +.. note:: The function's name is irrelevant. + +We can register such function as: + +.. code-block:: python + + if not register_inplace_cb_reply_servfail(inplace_servfail_callback, env, id): + log_info("python: Could not register inplace callback function.") + + +Testing +~~~~~~~ + +Run the Unbound server: :: + + root@localhost$ unbound -dv -c ./test-inplace_callbacks.conf + +In case you use your own configuration file, don't forget to enable the Python +module:: + + module-config: "validator python iterator" + +and use a valid script path :: + + python-script: "./examples/inplace_callbacks.py" + +On the first query for the nlnetlabs.nl A record we get no EDNS option back: + +:: + + root@localhost$ dig @localhost nlnetlabs.nl +ednsopt=65002 + + ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost nlnetlabs.nl +ednsopt=65002 + ; (1 server found) + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48057 + ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3 + + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 4096 + ;; QUESTION SECTION: + ;nlnetlabs.nl. IN A + + ;; ANSWER SECTION: + nlnetlabs.nl. 10200 IN A 185.49.140.10 + + ;; AUTHORITY SECTION: + nlnetlabs.nl. 10200 IN NS ns.nlnetlabs.nl. + nlnetlabs.nl. 10200 IN NS sec2.authdns.ripe.net. + nlnetlabs.nl. 10200 IN NS anyns.pch.net. + nlnetlabs.nl. 10200 IN NS ns-ext1.sidn.nl. + + ;; ADDITIONAL SECTION: + ns.nlnetlabs.nl. 10200 IN A 185.49.140.60 + ns.nlnetlabs.nl. 10200 IN AAAA 2a04:b900::8:0:0:60 + + ;; Query time: 813 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Dec 05 16:15:32 CET 2016 + ;; MSG SIZE rcvd: 204 + +When we issue the same query again we get a cached response and the expected +``65002: 0xdeadbeef`` EDNS option: + +:: + + root@localhost$ dig @localhost nlnetlabs.nl +ednsopt=65002 + + ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost nlnetlabs.nl +ednsopt=65002 + ; (1 server found) + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26489 + ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3 + + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 4096 + ; OPT=65002: de ad be ef ("....") + ;; QUESTION SECTION: + ;nlnetlabs.nl. IN A + + ;; ANSWER SECTION: + nlnetlabs.nl. 10197 IN A 185.49.140.10 + + ;; AUTHORITY SECTION: + nlnetlabs.nl. 10197 IN NS ns.nlnetlabs.nl. + nlnetlabs.nl. 10197 IN NS sec2.authdns.ripe.net. + nlnetlabs.nl. 10197 IN NS anyns.pch.net. + nlnetlabs.nl. 10197 IN NS ns-ext1.sidn.nl. + + ;; ADDITIONAL SECTION: + ns.nlnetlabs.nl. 10197 IN AAAA 2a04:b900::8:0:0:60 + ns.nlnetlabs.nl. 10197 IN A 185.49.140.60 + + ;; Query time: 0 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Dec 05 16:50:04 CET 2016 + ;; MSG SIZE rcvd: 212 + +By issuing a query for a bogus domain unbound replies with SERVFAIL and an +empty EDNS option code ``65003``. *For this example to work unbound needs to be +validating*: + +:: + + root@localhost$ dig @localhost bogus.nlnetlabs.nl txt + + ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost bogus.nlnetlabs.nl txt + ; (1 server found) + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19865 + ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 + + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 4096 + ; OPT=65003 + ;; QUESTION SECTION: + ;bogus.nlnetlabs.nl. IN TXT + + ;; Query time: 11 msec + ;; SERVER: 127.0.0.1#53(127.0.0.1) + ;; WHEN: Mon Dec 05 17:06:01 CET 2016 + ;; MSG SIZE rcvd: 51 + + +Complete source code +~~~~~~~~~~~~~~~~~~~~ +.. literalinclude:: ../../examples/inplace_callbacks.py + :language: python diff --git a/external/unbound/pythonmod/doc/examples/index.rst b/external/unbound/pythonmod/doc/examples/index.rst index 6c50225..93d9b8e 100644 --- a/external/unbound/pythonmod/doc/examples/index.rst +++ b/external/unbound/pythonmod/doc/examples/index.rst @@ -1,15 +1,16 @@ .. _Tutorials: -============================== -Tutorials -============================== +Examples +======== -Here you can find several tutorials which clarify the usage and capabilities of Unbound scriptable interface. +Here you can find several tutorials which clarify the usage and capabilities of +the Unbound scriptable interface. -`Tutorials` +Tutorials +--------- .. toctree:: - :maxdepth: 2 - :glob: + :maxdepth: 2 + :glob: - example* + example* diff --git a/external/unbound/pythonmod/doc/install.rst b/external/unbound/pythonmod/doc/install.rst index 991e2b4..b8d0b9f 100644 --- a/external/unbound/pythonmod/doc/install.rst +++ b/external/unbound/pythonmod/doc/install.rst @@ -1,39 +1,44 @@ Installation -=================================== +============ -**Prerequisites** +Prerequisites +------------- Python 2.4 or higher, SWIG 1.3 or higher, GNU make -**Download** +Download +-------- You can download the source codes `here`_. The latest release is 1.1.1, Jan 15, 2009. .. _here: unbound-1.1.1-py.tar.gz -**Compiling** +Compiling +--------- After downloading, you can compile the Unbound library by doing:: - > tar -xzf unbound-1.1.1-py.tar.gz - > cd unbound-1.1.1 - > ./configure --with-pythonmodule - > make + > tar -xzf unbound-1.1.1-py.tar.gz + > cd unbound-1.1.1 + > ./configure --with-pythonmodule + > make You need GNU make to compile sources. SWIG and Python devel libraries to compile extension module. -**Testing** +Testing +------- If the compilation is successful, you can test the extension module by:: - > cd pythonmod - > make sudo # or "make test" or "make suexec" + > cd pythonmod + > make sudo # or "make test" or "make suexec" -This will start unbound server with language dictionary service (see :ref:`Tutorials`). +This will start unbound server with language dictionary service +(see :ref:`Tutorials`). In order to test this service, type:: - + > dig TXT @127.0.0.1 aught.en._dict_.cz Dig should print this message (czech equivalent of aught):: @@ -44,16 +49,17 @@ Dig should print this message (czech equivalent of aught):: ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30085 ;; flags: aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 - + ;; QUESTION SECTION: - ;aught.en._dict_.cz. IN TXT - + ;aught.en._dict_.cz. IN TXT + ;; ANSWER SECTION: - aught.en._dict_.cz. 300 IN TXT "nic" - + aught.en._dict_.cz. 300 IN TXT "nic" + ;; Query time: 11 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jan 10 16:45:58 2009 ;; MSG SIZE rcvd: 52 -The ``pythonmod/examples`` directory contains simple applications written in Python. +The ``pythonmod/examples`` directory contains simple applications written in +Python. diff --git a/external/unbound/pythonmod/doc/modules/functions.rst b/external/unbound/pythonmod/doc/modules/functions.rst index 45a469f..49ea7bf 100644 --- a/external/unbound/pythonmod/doc/modules/functions.rst +++ b/external/unbound/pythonmod/doc/modules/functions.rst @@ -7,25 +7,26 @@ Network .. function:: ntohs(netshort) This subroutine converts values between the host and network byte order. - Specifically, **ntohs()** converts 16-bit quantities from network byte order to host byte order. - + Specifically, **ntohs()** converts 16-bit quantities from network byte order + to host byte order. + :param netshort: 16-bit short addr :rtype: converted addr - - + + Cache ----- .. function:: storeQueryInCache(qstate, qinfo, msgrep, is_referral) Store pending query in local cache. - + :param qstate: :class:`module_qstate` :param qinfo: :class:`query_info` :param msgrep: :class:`reply_info` - :param is_referal: integer + :param is_referral: integer :rtype: boolean - + .. function:: invalidateQueryInCache(qstate, qinfo) Invalidate record in local cache. @@ -34,6 +35,111 @@ Cache :param qinfo: :class:`query_info` +EDNS options +------------ + +.. function:: register_edns_option(env, code, bypass_cache_stage=False, no_aggregation=False) + + Register EDNS option code. + + :param env: :class:`module_env` + :param code: option code(integer) + :param bypass_cache_stage: whether to bypass the cache response stage + :param no_aggregation: whether this query should be unique + :return: ``1`` if successful, ``0`` otherwise + :rtype: integer + +.. function:: edns_opt_list_find(list, code) + + Find the EDNS option code in the EDNS option list. + + :param list: linked list of :class:`edns_option` + :param code: option code (integer) + :return: the edns option if found or None + :rtype: :class:`edns_option` or None + +.. function:: edns_opt_list_remove(list, code); + + Remove an ENDS option code from the list. + .. note:: All :class:`edns_option` with the code will be removed + + :param list: linked list of :class:`edns_option` + :param code: option code (integer) + :return: ``1`` if at least one :class:`edns_option` was removed, ``0`` otherwise + :rtype: integer + +.. function:: edns_opt_list_append(list, code, data, region) + + Append given EDNS option code with data to the list. + + :param list: linked list of :class:`edns_option` + :param code: option code (integer) + :param data: EDNS data. **Must** be a :class:`bytearray` + :param region: :class:`regional` + +.. function:: edns_opt_list_is_empty(list) + + Check if an EDNS option list is empty. + + :param list: linked list of :class:`edns_option` + :return: ``1`` if list is empty, ``0`` otherwise + :rtype: integer + + +Inplace callbacks +----------------- + +.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region) + + Function prototype for callback functions used in + `register_inplace_cb_reply`_, `register_inplace_cb_reply_cache`_, + `register_inplace_cb_reply_local` and `register_inplace_cb_reply_servfail`. + + :param qinfo: :class:`query_info` + :param qstate: :class:`module_qstate` + :param rep: :class:`reply_info` + :param rcode: return code (integer), check ``RCODE_`` constants. + :param edns: :class:`edns_data` + :param opt_list_out: :class:`edns_option`. EDNS option list to append options to. + :param region: :class:`regional` + +.. function:: register_inplace_cb_reply(py_cb, env) + + Register py_cb as an inplace reply callback function. + + :param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable. + :param env: :class:`module_env` + :return: True on success, False otherwise + :rtype: boolean + +.. function:: register_inplace_cb_reply_cache(py_cb, env) + + Register py_cb as an inplace reply_cache callback function. + + :param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable. + :param env: :class:`module_env` + :return: True on success, False otherwise + :rtype: boolean + +.. function:: register_inplace_cb_reply_local(py_cb, env) + + Register py_cb as an inplace reply_local callback function. + + :param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable. + :param env: :class:`module_env` + :return: True on success, False otherwise + :rtype: boolean + +.. function:: register_inplace_cb_reply_servfail(py_cb, env) + + Register py_cb as an inplace reply_servfail callback function. + + :param py_cb: Python function that follows `inplace_cb_reply`_'s prototype. **Must** be callable. + :param env: :class:`module_env` + :return: True on success, False otherwise + :rtype: boolean + + Logging ------- @@ -71,50 +177,51 @@ Logging :param msg: string desc to accompany the hexdump. :param data: data to dump in hex format. :param length: length of data. - + .. function:: log_dns_msg(str, qinfo, reply) Log DNS message. - + :param str: string message :param qinfo: :class:`query_info` :param reply: :class:`reply_info` - + .. function:: log_query_info(verbosity_value, str, qinf) Log query information. - + :param verbosity_value: see constants :param str: string message :param qinf: :class:`query_info` - + .. function:: regional_log_stats(r) Log regional statistics. - + :param r: :class:`regional` + Debugging --------- .. function:: strextstate(module_ext_state) Debug utility, module external qstate to string. - + :param module_ext_state: the state value. :rtype: descriptive string. .. function:: strmodulevent(module_event) Debug utility, module event to string. - + :param module_event: the module event value. :rtype: descriptive string. - + .. function:: ldns_rr_type2str(atype) Convert RR type to string. - + .. function:: ldns_rr_class2str(aclass) Convert RR class to string. diff --git a/external/unbound/pythonmod/doc/modules/struct.rst b/external/unbound/pythonmod/doc/modules/struct.rst index 669f36d..c74298b 100644 --- a/external/unbound/pythonmod/doc/modules/struct.rst +++ b/external/unbound/pythonmod/doc/modules/struct.rst @@ -6,55 +6,94 @@ module_qstate .. class:: module_qstate - Module state, per query. - - This class provides these data attributes: - - .. attribute:: qinfo - - (:class:`query_info`) Informations about query being answered. Name, RR type, RR class. - - .. attribute:: query_flags - - (uint16) Flags for query. See QF_BIT\_ predefined constants. - - .. attribute:: is_priming - - If this is a (stub or root) priming query (with hints). - - .. attribute:: reply - - comm_reply contains server replies. - - .. attribute:: return_msg - - (:class:`dns_msg`) The reply message, with message for client and calling module (read-only attribute). - Note that if you want to create of modify return_msg you should use :class:`DNSMessage`. - - .. attribute:: return_rcode - - The rcode, in case of error, instead of a reply message. Determines whether the return_msg contains reply. - - .. attribute:: region - - Region for this query. Cleared when query process finishes. - - .. attribute:: curmod - - Which module is executing. - - .. attribute:: ext_state[] - - Module states. - - .. attribute:: env - - Environment for this query. - - .. attribute:: mesh_info - - Mesh related information for this query. + Module state, per query. + + This class provides these data attributes: + + .. attribute:: qinfo + + (:class:`query_info`) Informations about query being answered. Name, RR type, RR class. + + .. attribute:: query_flags + + (uint16) Flags for query. See QF_BIT\_ predefined constants. + + .. attribute:: is_priming + + If this is a (stub or root) priming query (with hints). + + .. attribute:: reply + + comm_reply contains server replies. + + .. attribute:: return_msg + + (:class:`dns_msg`) The reply message, with message for client and calling module (read-only attribute). + Note that if you want to create of modify return_msg you should use :class:`DNSMessage`. + + .. attribute:: return_rcode + + The rcode, in case of error, instead of a reply message. Determines whether the return_msg contains reply. + + .. attribute:: region + + Region for this query. Cleared when query process finishes. + + .. attribute:: curmod + + Which module is executing. + + .. attribute:: ext_state[] + + Module states. + + .. attribute:: env + + Environment for this query. + .. attribute:: mesh_info + + Mesh related information for this query. + + .. attribute:: edns_opts_front_in + + Incoming EDNS options from the front end. + + .. attribute:: edns_opts_front_in_iter + + Iterator for `edns_opts_front_in`. + + .. attribute:: edns_opts_back_out + + Outgoing EDNS options to the back end. + + .. attribute:: edns_opts_back_out_iter + + Iterator for `edns_opts_back_out`. + + .. attribute:: edns_opts_back_in + + Incoming EDNS options from the back end. + + .. attribute:: edns_opts_back_in_iter + + Iterator for `ends_opts_back_in`. + + .. attribute:: edns_opts_front_out + + Outgoing EDNS options to the front end. + + .. attribute:: edns_opts_front_out_iter + + Iterator for `edns_opts_front_out`. + + .. attribute:: no_cache_lookup + + Flag to indicate whether modules should answer from the cache. + + .. attribute:: no_cache_store + + Flag to indicate whether modules should store answer in the cache. query_info ---------------- @@ -69,7 +108,7 @@ query_info .. attribute:: qname_len - Lenght of question name (number of bytes). + Length of question name (number of bytes). .. attribute:: qname_list[] @@ -94,7 +133,57 @@ query_info .. attribute:: qclass_str The ``qclass`` in display presentation format (string). - + +edns_data +--------- + +.. class:: edns_data + + This class represents the EDNS information parsed/encoded from/to a packet. It provides these data attributes: + + .. attribute:: edns_present + + If EDNS OPT record is present. + + .. attribute:: ext_rcode + + Extended RCODE. + + .. attribute:: edns_version + + The EDNS version number. + + .. attribute:: bits + + The EDNS bits field from ttl (host order): Z. + + .. attribute:: udp_size + + UDP reassembly size. + + .. attribute:: opt_list + + The EDNS option list. + + .. attribute:: opt_list_iter + + Iterator for `opt_list`. + +edns_option +----------- + +.. class:: edns_option + + This class represents an EDNS option (code, data) found in EDNS option lists. It provides these data attributes: + + .. attribute:: code + + The EDNS option code. + + .. attribute:: data + + The EDNS option data. + reply_info -------------------- diff --git a/external/unbound/pythonmod/doc/usecase.rst b/external/unbound/pythonmod/doc/usecase.rst index 2975740..5845061 100644 --- a/external/unbound/pythonmod/doc/usecase.rst +++ b/external/unbound/pythonmod/doc/usecase.rst @@ -25,7 +25,7 @@ Controled by secured queries secured with private key. Dynamic translation service --------------------------- -DNS request can be translated to virtualy any answer, that's easy to implement in client side +DNS request can be translated to virtually any answer, that's easy to implement in client side because of many DNS libraries available. Examples : diff --git a/external/unbound/pythonmod/examples/edns.py b/external/unbound/pythonmod/examples/edns.py new file mode 100644 index 0000000..37ce9e2 --- /dev/null +++ b/external/unbound/pythonmod/examples/edns.py @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +''' + edns.py: python module showcasing EDNS option functionality. + + Copyright (c) 2016, NLnet Labs. + + This software is open source. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the organization nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +''' +#Try: +# - dig @localhost nlnetlabs.nl +ednsopt=65001:c001 +# This query will always reach the modules stage as EDNS option 65001 is +# registered to bypass the cache response stage. It will also be handled +# as a unique query because of the no_aggregation flag. This means that +# it will not be aggregated with other queries for the same qinfo. +# For demonstration purposes when option 65001 with hexdata 'c001' is +# sent from the client side this module will reply with the same code and +# data 'deadbeef'. + +# Useful functions: +# edns_opt_list_is_empty(edns_opt_list): +# Check if the option list is empty. +# Return True if empty, False otherwise. +# +# edns_opt_list_append(edns_opt_list, code, data_bytearray, region): +# Append the EDNS option with code and data_bytearray to the given +# edns_opt_list. +# NOTE: data_bytearray MUST be a Python bytearray. +# Return True on success, False on failure. +# +# edns_opt_list_remove(edns_opt_list, code): +# Remove all occurences of the given EDNS option code from the +# edns_opt_list. +# Return True when at least one EDNS option was removed, False otherwise. +# +# register_edns_option(env, code, bypass_cache_stage=True, +# no_aggregation=True): +# Register EDNS option code as a known EDNS option. +# bypass_cache_stage: +# bypasses answering from cache and allows the query to reach the +# modules for further EDNS handling. +# no_aggregation: +# makes every query with the said EDNS option code unique. +# Return True on success, False on failure. +# +# Examples on how to use the functions are given in this file. + + +def init_standard(id, env): + """New version of the init function. + The function's signature is the same as the C counterpart and allows for + extra functionality during init. + ..note:: This function is preferred by unbound over the old init function. + ..note:: The previously accessible configuration options can now be found in + env.cgf. + """ + log_info("python: inited script {}".format(env.cfg.python_script)) + + # Register EDNS option 65001 as a known EDNS option. + if not register_edns_option(env, 65001, bypass_cache_stage=True, + no_aggregation=True): + return False + + return True + + +def init(id, cfg): + """Previous version init function. + ..note:: This function is still supported for backwards compatibility when + the init_standard function is missing. When init_standard is + present this function SHOULD be omitted to avoid confusion to the + reader. + """ + return True + + +def deinit(id): return True + + +def inform_super(id, qstate, superqstate, qdata): return True + + +def operate(id, event, qstate, qdata): + if (event == MODULE_EVENT_NEW) or (event == MODULE_EVENT_PASS): + # Detect if EDNS option code 56001 is present from the client side. If + # so turn on the flags for cache management. + if not edns_opt_list_is_empty(qstate.edns_opts_front_in): + log_info("python: searching for EDNS option code 65001 during NEW " + "or PASS event ") + for o in qstate.edns_opts_front_in_iter: + if o.code == 65001: + log_info("python: found EDNS option code 65001") + # Instruct other modules to not lookup for an + # answer in the cache. + qstate.no_cache_lookup = 1 + log_info("python: enabled no_cache_lookup") + + # Instruct other modules to not store the answer in + # the cache. + qstate.no_cache_store = 1 + log_info("python: enabled no_cache_store") + + #Pass on the query + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + elif event == MODULE_EVENT_MODDONE: + # If the client sent EDNS option code 65001 and data 'c001' reply + # with the same code and data 'deadbeef'. + if not edns_opt_list_is_empty(qstate.edns_opts_front_in): + log_info("python: searching for EDNS option code 65001 during " + "MODDONE") + for o in qstate.edns_opts_front_in_iter: + if o.code == 65001 and o.data == bytearray.fromhex("c001"): + b = bytearray.fromhex("deadbeef") + if not edns_opt_list_append(qstate.edns_opts_front_out, + o.code, b, qstate.region): + qstate.ext_state[id] = MODULE_ERROR + return False + + # List every EDNS option in all lists. + # The available lists are: + # - qstate.edns_opts_front_in: EDNS options that came from the + # client side. SHOULD NOT be changed; + # + # - qstate.edns_opts_back_out: EDNS options that will be sent to the + # server side. Can be populated by + # EDNS literate modules; + # + # - qstate.edns_opts_back_in: EDNS options that came from the + # server side. SHOULD NOT be changed; + # + # - qstate.edns_opts_front_out: EDNS options that will be sent to the + # client side. Can be populated by + # EDNS literate modules; + # + # The lists' contents can be accessed in python by their _iter + # counterpart as an iterator. + if not edns_opt_list_is_empty(qstate.edns_opts_front_in): + log_info("python: EDNS options in edns_opts_front_in:") + for o in qstate.edns_opts_front_in_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + + if not edns_opt_list_is_empty(qstate.edns_opts_back_out): + log_info("python: EDNS options in edns_opts_back_out:") + for o in qstate.edns_opts_back_out_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + + if not edns_opt_list_is_empty(qstate.edns_opts_back_in): + log_info("python: EDNS options in edns_opts_back_in:") + for o in qstate.edns_opts_back_in_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + + if not edns_opt_list_is_empty(qstate.edns_opts_front_out): + log_info("python: EDNS options in edns_opts_front_out:") + for o in qstate.edns_opts_front_out_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + + qstate.ext_state[id] = MODULE_FINISHED + return True + + log_err("pythonmod: Unknown event") + qstate.ext_state[id] = MODULE_ERROR + return True diff --git a/external/unbound/pythonmod/examples/inplace_callbacks.py b/external/unbound/pythonmod/examples/inplace_callbacks.py new file mode 100644 index 0000000..02ee56e --- /dev/null +++ b/external/unbound/pythonmod/examples/inplace_callbacks.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- +''' + inplace_callbacks.py: python module showcasing inplace callback function + registration and functionality. + + Copyright (c) 2016, NLnet Labs. + + This software is open source. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the organization nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +''' +#Try: +# - dig @localhost nlnetlabs.nl +ednsopt=65002: +# This query *could* be answered from cache. If so, unbound will reply +# with the same EDNS option 65002, but with hexdata 'deadbeef' as data. +# +# - dig @localhost bogus.nlnetlabs.nl txt: +# This query returns SERVFAIL as the txt record of bogus.nlnetlabs.nl is +# intentionally bogus. The reply will contain an empty EDNS option +# with option code 65003. +# (unbound needs to be validating for this example to work) + +# Useful functions: +# register_inplace_cb_reply(inplace_reply_callback, env, id): +# Register the reply_callback function as an inplace callback function +# when answering with a resolved query. +# Return True on success, False on failure. +# +# register_inplace_cb_reply_cache(inplace_reply_cache_callback, env, id): +# Register the reply_cache_callback function as an inplace callback +# function when answering from cache. +# Return True on success, False on failure. +# +# register_inplace_cb_reply_local(inplace_reply_local_callback, env, id): +# Register the reply_local_callback function as an inplace callback +# function when answering from local data or chaos reply. +# Return True on success, False on failure. +# +# register_inplace_cb_reply_servfail(inplace_reply_servfail_callback, env, id): +# Register the reply_servfail_callback function as an inplace callback +# function when answering with servfail. +# Return True on success, False on failure. +# +# Examples on how to use the functions are given in this file. + + +def inplace_reply_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, + region): + """Function that will be registered as an inplace callback function. + It will be called when answering with a resolved query. + :param qinfo: query_info struct; + :param qstate: module qstate. It contains the available opt_lists; It + SHOULD NOT be altered; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data to be sent to the client side. It SHOULD NOT be + altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + log_info("python: called back while replying.") + return True + + +def inplace_cache_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, + region): + """Function that will be registered as an inplace callback function. + It will be called when answering from the cache. + :param qinfo: query_info struct; + :param qstate: module qstate. None; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data sent from the client side. The list with the EDNS + options is accessible through edns.opt_list. It SHOULD NOT be + altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + + For demonstration purposes we want to see if EDNS option 65002 is present + and reply with a new value. + """ + log_info("python: called back while answering from cache.") + # Inspect the incoming EDNS options. + if not edns_opt_list_is_empty(edns.opt_list): + log_info("python: available EDNS options:") + for o in edns.opt_list_iter: + log_info("python: Code: {}, Data: '{}'".format(o.code, + "".join('{:02x}'.format(x) for x in o.data))) + if o.code == 65002: + log_info("python: *found option code 65002*") + + # add to opt_list + # Data MUST be represented in a bytearray. + b = bytearray.fromhex("deadbeef") + if edns_opt_list_append(opt_list_out, o.code, b, region): + log_info("python: *added new option code 65002*") + else: + log_info("python: *failed to add new option code 65002*") + return False + break + + return True + + +def inplace_local_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, + region): + """Function that will be registered as an inplace callback function. + It will be called when answering from local data. + :param qinfo: query_info struct; + :param qstate: module qstate. None; + :param rep: reply_info struct; + :param rcode: return code for the query; + :param edns: edns_data sent from the client side. The list with the + EDNS options is accessible through edns.opt_list. It + SHOULD NOT be altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + """ + log_info("python: called back while replying with local data or chaos" + " reply.") + return True + + +def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, + region): + """Function that will be registered as an inplace callback function. + It will be called when answering with SERVFAIL. + :param qinfo: query_info struct; + :param qstate: module qstate. If not None the relevant opt_lists are + available here; + :param rep: reply_info struct. None; + :param rcode: return code for the query. LDNS_RCODE_SERVFAIL; + :param edns: edns_data to be sent to the client side. If qstate is None + edns.opt_list contains the EDNS options sent from the client + side. It SHOULD NOT be altered; + :param opt_list_out: the list with the EDNS options that will be sent as a + reply. It can be populated with EDNS options; + :param region: region to allocate temporary data. Needs to be used when we + want to append a new option to opt_list_out. + :return: True on success, False on failure. + + For demonstration purposes we want to reply with an empty EDNS code '65003'. + """ + log_info("python: called back while servfail.") + b = bytearray.fromhex("") + edns_opt_list_append(opt_list_out, 65003, b, region) + return True + + +def init_standard(id, env): + """New version of the init function. + The function's signature is the same as the C counterpart and allows for + extra functionality during init. + ..note:: This function is preferred by unbound over the old init function. + ..note:: The previously accessible configuration options can now be found in + env.cgf. + """ + log_info("python: inited script {}".format(env.cfg.python_script)) + + # Register the inplace_reply_callback function as an inplace callback + # function when answering a resolved query. + if not register_inplace_cb_reply(inplace_reply_callback, env, id): + return False + + # Register the inplace_cache_callback function as an inplace callback + # function when answering from cache. + if not register_inplace_cb_reply_cache(inplace_cache_callback, env, id): + return False + + # Register the inplace_local_callback function as an inplace callback + # function when answering from local data. + if not register_inplace_cb_reply_local(inplace_local_callback, env, id): + return False + + # Register the inplace_servfail_callback function as an inplace callback + # function when answering with SERVFAIL. + if not register_inplace_cb_reply_servfail(inplace_servfail_callback, env, id): + return False + + return True + + +def init(id, cfg): + """Previous version init function. + ..note:: This function is still supported for backwards compatibility when + the init_standard function is missing. When init_standard is + present this function SHOULD be omitted to avoid confusion to the + reader. + """ + return True + + +def deinit(id): return True + + +def inform_super(id, qstate, superqstate, qdata): return True + + +def operate(id, event, qstate, qdata): + if (event == MODULE_EVENT_NEW) or (event == MODULE_EVENT_PASS): + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + elif event == MODULE_EVENT_MODDONE: + qstate.ext_state[id] = MODULE_FINISHED + return True + + log_err("pythonmod: Unknown event") + qstate.ext_state[id] = MODULE_ERROR + return True diff --git a/external/unbound/pythonmod/interface.i b/external/unbound/pythonmod/interface.i index 4b20c6e..df06d10 100644 --- a/external/unbound/pythonmod/interface.i +++ b/external/unbound/pythonmod/interface.i @@ -1,11 +1,10 @@ /* * interface.i: unbound python module */ - %module unboundmodule %{ /** - * \file + * \file * This is the interface between the unbound server and a python module * called to perform operations on queries. */ @@ -34,10 +33,10 @@ #include "sldns/pkthdr.h" %} -%include "stdint.i" // uint_16_t can be known type now +%include "stdint.i" /* uint_16_t can be known type now */ %inline %{ - //converts [len][data][len][data][0] string to a List of labels (PyBytes) + /* converts [len][data][len][data][0] string to a List of labels (PyBytes) */ PyObject* GetNameAsLabelList(const char* name, int len) { PyObject* list; int cnt=0, i; @@ -59,7 +58,7 @@ } %} -/* ************************************************************************************ * +/* ************************************************************************************ * Structure query_info * ************************************************************************************ */ /* Query info */ @@ -77,24 +76,24 @@ struct query_info { }; %inline %{ - enum enum_rr_class { + enum enum_rr_class { RR_CLASS_IN = 1, RR_CLASS_CH = 3, RR_CLASS_HS = 4, RR_CLASS_NONE = 254, RR_CLASS_ANY = 255, }; - + enum enum_rr_type { - RR_TYPE_A = 1, - RR_TYPE_NS = 2, - RR_TYPE_MD = 3, - RR_TYPE_MF = 4, - RR_TYPE_CNAME = 5, - RR_TYPE_SOA = 6, - RR_TYPE_MB = 7, - RR_TYPE_MG = 8, - RR_TYPE_MR = 9, + RR_TYPE_A = 1, + RR_TYPE_NS = 2, + RR_TYPE_MD = 3, + RR_TYPE_MF = 4, + RR_TYPE_CNAME = 5, + RR_TYPE_SOA = 6, + RR_TYPE_MB = 7, + RR_TYPE_MG = 8, + RR_TYPE_MR = 9, RR_TYPE_NULL = 10, RR_TYPE_WKS = 11, RR_TYPE_PTR = 12, @@ -132,7 +131,7 @@ struct query_info { RR_TYPE_SSHFP = 44, RR_TYPE_IPSECKEY = 45, RR_TYPE_RRSIG = 46, - RR_TYPE_NSEC = 47, + RR_TYPE_NSEC = 47, RR_TYPE_DNSKEY = 48, RR_TYPE_DHCID = 49, RR_TYPE_NSEC3 = 50, @@ -152,7 +151,7 @@ struct query_info { PyObject* _get_qname(struct query_info* q) { return PyBytes_FromStringAndSize((char*)q->qname, q->qname_len); - } + } PyObject* _get_qname_components(struct query_info* q) { return GetNameAsLabelList((const char*)q->qname, q->qname_len); @@ -180,7 +179,7 @@ struct query_info { __swig_getmethods__["qname"] = _unboundmodule._get_qname if _newclass:qname = _swig_property(_unboundmodule._get_qname) - + __swig_getmethods__["qname_list"] = _unboundmodule._get_qname_components if _newclass:qname_list = _swig_property(_unboundmodule._get_qname_components) @@ -190,7 +189,7 @@ struct query_info { %} } -/* ************************************************************************************ * +/* ************************************************************************************ * Structure packed_rrset_key * ************************************************************************************ */ %ignore packed_rrset_key::dname; @@ -201,20 +200,23 @@ struct packed_rrset_key { %immutable; char* dname; size_t dname_len; - uint32_t flags; - uint16_t type; //rrset type in network format - uint16_t rrset_class; //rrset class in network format + uint32_t flags; + uint16_t type; /* rrset type in network format */ + uint16_t rrset_class; /* rrset class in network format */ %mutable; }; -//This subroutine converts values between the host and network byte order. -//Specifically, ntohs() converts 16-bit quantities from network byte order to host byte order. +/** + * This subroutine converts values between the host and network byte order. + * Specifically, ntohs() converts 16-bit quantities from network byte order to + * host byte order. + */ uint16_t ntohs(uint16_t netshort); %inline %{ PyObject* _get_dname(struct packed_rrset_key* k) { return PyBytes_FromStringAndSize((char*)k->dname, k->dname_len); - } + } PyObject* _get_dname_components(struct packed_rrset_key* k) { return GetNameAsLabelList((char*)k->dname, k->dname_len); } @@ -242,24 +244,24 @@ uint16_t ntohs(uint16_t netshort); %} } -#if defined(SWIGWORDSIZE64) -typedef long int rrset_id_t; -#else -typedef long long int rrset_id_t; -#endif +#if defined(SWIGWORDSIZE64) +typedef long int rrset_id_type; +#else +typedef long long int rrset_id_type; +#endif struct ub_packed_rrset_key { struct lruhash_entry entry; - rrset_id_t id; + rrset_id_type id; struct packed_rrset_key rk; }; struct lruhash_entry { - lock_rw_t lock; + lock_rw_type lock; struct lruhash_entry* overflow_next; struct lruhash_entry* lru_next; struct lruhash_entry* lru_prev; - hashvalue_t hash; + hashvalue_type hash; void* key; struct packed_rrset_data* data; }; @@ -269,17 +271,24 @@ struct lruhash_entry { %ignore packed_rrset_data::rr_data; struct packed_rrset_data { - uint32_t ttl; //TTL (in seconds like time()) + /* TTL (in seconds like time()) */ + uint32_t ttl; - size_t count; //number of rrs - size_t rrsig_count; //number of rrsigs + /* number of rrs */ + size_t count; + /* number of rrsigs */ + size_t rrsig_count; - enum rrset_trust trust; + enum rrset_trust trust; enum sec_status security; - size_t* rr_len; //length of every rr's rdata - uint32_t *rr_ttl; //ttl of every rr - uint8_t** rr_data; //array of pointers to every rr's rdata; The rr_data[i] rdata is stored in uncompressed wireformat. + /* length of every rr's rdata */ + size_t* rr_len; + /* ttl of every rr */ + uint32_t *rr_ttl; + /* array of pointers to every rr's rdata. The rr_data[i] rdata is stored in + * uncompressed wireformat. */ + uint8_t** rr_data; }; %pythoncode %{ @@ -300,26 +309,26 @@ struct packed_rrset_data { %inline %{ PyObject* _get_data_rr_len(struct packed_rrset_data* d, int idx) { - if ((d != NULL) && (idx >= 0) && - ((size_t)idx < (d->count+d->rrsig_count))) + if ((d != NULL) && (idx >= 0) && + ((size_t)idx < (d->count+d->rrsig_count))) return PyInt_FromLong(d->rr_len[idx]); return Py_None; } void _set_data_rr_ttl(struct packed_rrset_data* d, int idx, uint32_t ttl) { - if ((d != NULL) && (idx >= 0) && - ((size_t)idx < (d->count+d->rrsig_count))) + if ((d != NULL) && (idx >= 0) && + ((size_t)idx < (d->count+d->rrsig_count))) d->rr_ttl[idx] = ttl; } PyObject* _get_data_rr_ttl(struct packed_rrset_data* d, int idx) { - if ((d != NULL) && (idx >= 0) && - ((size_t)idx < (d->count+d->rrsig_count))) + if ((d != NULL) && (idx >= 0) && + ((size_t)idx < (d->count+d->rrsig_count))) return PyInt_FromLong(d->rr_ttl[idx]); return Py_None; } PyObject* _get_data_rr_data(struct packed_rrset_data* d, int idx) { - if ((d != NULL) && (idx >= 0) && - ((size_t)idx < (d->count+d->rrsig_count))) + if ((d != NULL) && (idx >= 0) && + ((size_t)idx < (d->count+d->rrsig_count))) return PyBytes_FromStringAndSize((char*)d->rr_data[idx], d->rr_len[idx]); return Py_None; @@ -340,7 +349,7 @@ struct packed_rrset_data { %} } -/* ************************************************************************************ * +/* ************************************************************************************ * Structure reply_info * ************************************************************************************ */ /* Messages */ @@ -359,15 +368,15 @@ struct reply_info { size_t an_numrrsets; size_t ns_numrrsets; size_t ar_numrrsets; - size_t rrset_count; // an_numrrsets + ns_numrrsets + ar_numrrsets + size_t rrset_count; /* an_numrrsets + ns_numrrsets + ar_numrrsets */ struct ub_packed_rrset_key** rrsets; - struct rrset_ref ref[1]; //? + struct rrset_ref ref[1]; /* ? */ }; struct rrset_ref { struct ub_packed_rrset_key* key; - rrset_id_t id; + rrset_id_type id; }; struct dns_msg { @@ -396,11 +405,11 @@ struct dns_msg { struct rrset_ref* _rrset_ref_get(struct reply_info* r, int idx) { if ((r != NULL) && (idx >= 0) && ((size_t)idx < r->rrset_count)) { -//printf("_rrset_ref_get: %lX key:%lX\n", r->ref + idx, r->ref[idx].key); +/* printf("_rrset_ref_get: %lX key:%lX\n", r->ref + idx, r->ref[idx].key); */ return &(r->ref[idx]); -// return &(r->ref[idx]); +/* return &(r->ref[idx]); */ } -//printf("_rrset_ref_get: NULL\n"); +/* printf("_rrset_ref_get: NULL\n"); */ return NULL; } %} @@ -417,7 +426,7 @@ struct dns_msg { %} } -/* ************************************************************************************ * +/* ************************************************************************************ * Structure mesh_state * ************************************************************************************ */ struct mesh_state { @@ -430,7 +439,7 @@ struct mesh_reply { }; struct comm_reply { - + }; %inline %{ @@ -479,30 +488,165 @@ struct comm_reply { if _newclass:family = _swig_property(_family_get) %} } -/* ************************************************************************************ * + +/* ************************************************************************************ * + Structure edns_option + * ************************************************************************************ */ +/* Rename the members to follow the python convention of marking them as + * private. Access to the opt_code and opt_data members is given by the later + * python defined code and data members respectively. */ +%rename(_next) edns_option::next; +%rename(_opt_code) edns_option::opt_code; +%rename(_opt_len) edns_option::opt_len; +%rename(_opt_data) edns_option::opt_data; +struct edns_option { + struct edns_option* next; + uint16_t opt_code; + size_t opt_len; + uint8_t* opt_data; +}; + +%inline %{ + PyObject* _edns_option_opt_code_get(struct edns_option* option) { + uint16_t opt_code = option->opt_code; + return PyInt_FromLong(opt_code); + } + + PyObject* _edns_option_opt_data_get(struct edns_option* option) { + return PyByteArray_FromStringAndSize((void*)option->opt_data, + option->opt_len); + } +%} +%extend edns_option { + %pythoncode %{ + def _opt_code_get(self): return _edns_option_opt_code_get(self) + __swig_getmethods__["code"] = _opt_code_get + if _newclass: opt_code = _swig_property(_opt_code_get) + + def _opt_data_get(self): return _edns_option_opt_data_get(self) + __swig_getmethods__["data"] = _opt_data_get + if _newclass: opt_data = _swig_property(_opt_data_get) + %} +} + +/* ************************************************************************************ * + Structure edns_data + * ************************************************************************************ */ +/* This is ignored because we will pass a double pointer of this to Python + * with custom getmethods. This is done to bypass Swig's behavior to pass NULL + * pointers as None. */ +%ignore edns_data::opt_list; +struct edns_data { + int edns_present; + uint8_t ext_rcode; + uint8_t edns_version; + uint16_t bits; + uint16_t udp_size; + struct edns_option* opt_list; +}; +%inline %{ + struct edns_option** _edns_data_opt_list_get(struct edns_data* edns) { + return &edns->opt_list; + } +%} +%extend edns_data { + %pythoncode %{ + def _opt_list_iter(self): return EdnsOptsListIter(self.opt_list) + __swig_getmethods__["opt_list_iter"] = _opt_list_iter + if _newclass:opt_list_iter = _swig_property(_opt_list_iter) + def _opt_list(self): return _edns_data_opt_list_get(self) + __swig_getmethods__["opt_list"] = _opt_list + if _newclass:opt_list = _swig_property(_opt_list) + %} +} + +/* ************************************************************************************ * + Structure module_env + * ************************************************************************************ */ +struct module_env { + struct config_file* cfg; + struct slabhash* msg_cache; + struct rrset_cache* rrset_cache; + struct infra_cache* infra_cache; + struct key_cache* key_cache; + + /* --- services --- */ + struct outbound_entry* (*send_query)(struct query_info* qinfo, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, + struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, + struct module_qstate* q); + void (*detach_subs)(struct module_qstate* qstate); + int (*attach_sub)(struct module_qstate* qstate, + struct query_info* qinfo, uint16_t qflags, int prime, + int valrec, struct module_qstate** newq); + void (*kill_sub)(struct module_qstate* newq); + int (*detect_cycle)(struct module_qstate* qstate, + struct query_info* qinfo, uint16_t flags, int prime, + int valrec); + + struct regional* scratch; + struct sldns_buffer* scratch_buffer; + struct worker* worker; + struct mesh_area* mesh; + struct alloc_cache* alloc; + struct ub_randstate* rnd; + time_t* now; + struct timeval* now_tv; + int need_to_validate; + struct val_anchors* anchors; + struct val_neg_cache* neg_cache; + struct comm_timer* probe_timer; + struct iter_forwards* fwds; + struct iter_hints* hints; + void* modinfo[MAX_MODULE]; + + void* inplace_cb_lists[inplace_cb_types_total]; + struct edns_known_option* edns_known_options; + size_t edns_known_options_num; +}; + +/* ************************************************************************************ * Structure module_qstate * ************************************************************************************ */ %ignore module_qstate::ext_state; %ignore module_qstate::minfo; +/* These are ignored because we will pass a double pointer of them to Python + * with custom getmethods. This is done to bypass Swig's behavior to pass NULL + * pointers as None. */ +%ignore module_qstate::edns_opts_front_in; +%ignore module_qstate::edns_opts_back_out; +%ignore module_qstate::edns_opts_back_in; +%ignore module_qstate::edns_opts_front_out; + /* Query state */ struct module_qstate { struct query_info qinfo; - uint16_t query_flags; //See QF_BIT_xx constants - int is_priming; + uint16_t query_flags; /* See QF_BIT_xx constants */ + int is_priming; + int is_valrec; struct comm_reply* reply; struct dns_msg* return_msg; - int return_rcode; + int return_rcode; struct regional* region; /* unwrapped */ - int curmod; + int curmod; - enum module_ext_state ext_state[MAX_MODULE]; - void* minfo[MAX_MODULE]; + enum module_ext_state ext_state[MAX_MODULE]; + void* minfo[MAX_MODULE]; + time_t prefetch_leeway; struct module_env* env; /* unwrapped */ struct mesh_state* mesh_info; + + struct edns_option* edns_opts_front_in; + struct edns_option* edns_opts_back_out; + struct edns_option* edns_opts_back_in; + struct edns_option* edns_opts_front_out; + int no_cache_lookup; + int no_cache_store; }; %constant int MODULE_COUNT = MAX_MODULE; @@ -540,20 +684,69 @@ struct module_qstate { def __getitem__(self, index): return _unboundmodule._ext_state_get(self.obj, index) def __setitem__(self, index, value): _unboundmodule._ext_state_set(self.obj, index, value) def __len__(self): return _unboundmodule.MODULE_COUNT + + class EdnsOptsListIter: + def __init__(self, obj): + self._current = obj + self._temp = None + def __iter__(self): return self + def __next__(self): + """Python 3 compatibility""" + return self._get_next() + def next(self): + """Python 2 compatibility""" + return self._get_next() + def _get_next(self): + if not edns_opt_list_is_empty(self._current): + self._temp = self._current + self._current = _p_p_edns_option_get_next(self._current) + return _dereference_edns_option(self._temp) + else: + raise StopIteration %} %inline %{ enum module_ext_state _ext_state_get(struct module_qstate* q, int idx) { if ((q != NULL) && (idx >= 0) && (idx < MAX_MODULE)) { return q->ext_state[idx]; - } + } return 0; } - + void _ext_state_set(struct module_qstate* q, int idx, enum module_ext_state state) { if ((q != NULL) && (idx >= 0) && (idx < MAX_MODULE)) { q->ext_state[idx] = state; - } + } + } + + int edns_opt_list_is_empty(struct edns_option** opt) { + if (!opt || !(*opt)) return 1; + return 0; + } + + struct edns_option* _dereference_edns_option(struct edns_option** opt) { + if (!opt) return NULL; + return *opt; + } + + struct edns_option** _p_p_edns_option_get_next(struct edns_option** opt) { + return &(*opt)->next; + } + + struct edns_option** _edns_opts_front_in_get(struct module_qstate* q) { + return &q->edns_opts_front_in; + } + + struct edns_option** _edns_opts_back_out_get(struct module_qstate* q) { + return &q->edns_opts_back_out; + } + + struct edns_option** _edns_opts_back_in_get(struct module_qstate* q) { + return &q->edns_opts_back_in; + } + + struct edns_option** _edns_opts_front_out_get(struct module_qstate* q) { + return &q->edns_opts_front_out; } %} @@ -566,10 +759,36 @@ struct module_qstate { def __ext_state_get(self): return ExtState(self) __swig_getmethods__["ext_state"] = __ext_state_get if _newclass:ext_state = _swig_property(__ext_state_get)#, __ext_state_set) + + def _edns_opts_front_in_iter(self): return EdnsOptsListIter(self.edns_opts_front_in) + __swig_getmethods__["edns_opts_front_in_iter"] = _edns_opts_front_in_iter + if _newclass:edns_opts_front_in_iter = _swig_property(_edns_opts_front_in_iter) + def _edns_opts_back_out_iter(self): return EdnsOptsListIter(self.edns_opts_back_out) + __swig_getmethods__["edns_opts_back_out_iter"] = _edns_opts_back_out_iter + if _newclass:edns_opts_back_out_iter = _swig_property(_edns_opts_back_out_iter) + def _edns_opts_back_in_iter(self): return EdnsOptsListIter(self.edns_opts_back_in) + __swig_getmethods__["edns_opts_back_in_iter"] = _edns_opts_back_in_iter + if _newclass:edns_opts_back_in_iter = _swig_property(_edns_opts_back_in_iter) + def _edns_opts_front_out_iter(self): return EdnsOptsListIter(self.edns_opts_front_out) + __swig_getmethods__["edns_opts_front_out_iter"] = _edns_opts_front_out_iter + if _newclass:edns_opts_front_out_iter = _swig_property(_edns_opts_front_out_iter) + + def _edns_opts_front_in(self): return _edns_opts_front_in_get(self) + __swig_getmethods__["edns_opts_front_in"] = _edns_opts_front_in + if _newclass:edns_opts_front_in = _swig_property(_edns_opts_front_in) + def _edns_opts_back_out(self): return _edns_opts_back_out_get(self) + __swig_getmethods__["edns_opts_back_out"] = _edns_opts_back_out + if _newclass:edns_opts_back_out = _swig_property(_edns_opts_back_out) + def _edns_opts_back_in(self): return _edns_opts_back_in_get(self) + __swig_getmethods__["edns_opts_back_in"] = _edns_opts_back_in + if _newclass:edns_opts_back_in = _swig_property(_edns_opts_back_in) + def _edns_opts_front_out(self): return _edns_opts_front_out_get(self) + __swig_getmethods__["edns_opts_front_out"] = _edns_opts_front_out + if _newclass:edns_opts_front_out = _swig_property(_edns_opts_front_out) %} } -/* ************************************************************************************ * +/* ************************************************************************************ * Structure config_strlist * ************************************************************************************ */ struct config_strlist { @@ -577,7 +796,7 @@ struct config_strlist { char* str; }; -/* ************************************************************************************ * +/* ************************************************************************************ * Structure config_str2list * ************************************************************************************ */ struct config_str2list { @@ -586,7 +805,7 @@ struct config_str2list { char* str2; }; -/* ************************************************************************************ * +/* ************************************************************************************ * Structure config_file * ************************************************************************************ */ struct config_file { @@ -653,7 +872,7 @@ struct config_file { struct config_strlist* dlv_anchor_list; int max_ttl; int32_t val_date_override; - int bogus_ttl; + int bogus_ttl; int val_clean_additional; int val_permissive_mode; char* val_nsec3_key_iterations; @@ -664,7 +883,7 @@ struct config_file { struct config_strlist* local_zones_nodefault; struct config_strlist* local_data; int remote_control_enable; - struct config_strlist* control_ifs; + struct config_strlist_head control_ifs; int control_port; char* server_key_file; char* server_cert_file; @@ -674,7 +893,7 @@ struct config_file { char* python_script; }; -/* ************************************************************************************ * +/* ************************************************************************************ * ASN: Adding structures related to forwards_lookup and dns_cache_find_delegation * ************************************************************************************ */ struct delegpt_ns { @@ -712,7 +931,7 @@ struct delegpt { %inline %{ PyObject* _get_dp_dname(struct delegpt* dp) { return PyBytes_FromStringAndSize((char*)dp->name, dp->namelen); - } + } PyObject* _get_dp_dname_components(struct delegpt* dp) { return GetNameAsLabelList((char*)dp->name, dp->namelen); } @@ -767,7 +986,7 @@ struct delegpt { %} } -/* ************************************************************************************ * +/* ************************************************************************************ * Enums * ************************************************************************************ */ %rename ("MODULE_STATE_INITIAL") "module_state_initial"; @@ -820,6 +1039,26 @@ enum verbosity_value { VERB_ALGO }; +enum inplace_cb_list_type { + /* Inplace callbacks for when a resolved reply is ready to be sent to the + * front.*/ + inplace_cb_reply = 0, + /* Inplace callbacks for when a reply is given from the cache. */ + inplace_cb_reply_cache, + /* Inplace callbacks for when a reply is given with local data + * (or Chaos reply). */ + inplace_cb_reply_local, + /* Inplace callbacks for when the reply is servfail. */ + inplace_cb_reply_servfail, + /* Inplace callbacks for when a query is ready to be sent to the back.*/ + inplace_cb_query, + /* Inplace callback for when a reply is received from the back. */ + inplace_cb_edns_back_parsed, + /* Total number of types. Used for array initialization. + * Should always be last. */ + inplace_cb_types_total +}; + %constant uint16_t PKT_QR = 1; /* QueRy - query flag */ %constant uint16_t PKT_AA = 2; /* Authoritative Answer - server flag */ %constant uint16_t PKT_TC = 4; /* TrunCated - server flag */ @@ -829,17 +1068,17 @@ enum verbosity_value { %constant uint16_t PKT_AD = 64; /* Authenticated Data - server flag */ %{ -int checkList(PyObject *l) +int checkList(PyObject *l) { PyObject* item; int i; - if (l == Py_None) + if (l == Py_None) return 1; - if (PyList_Check(l)) + if (PyList_Check(l)) { - for (i=0; i < PyList_Size(l); i++) + for (i=0; i < PyList_Size(l); i++) { item = PyList_GetItem(l, i); if (!PyBytes_Check(item)) @@ -858,7 +1097,7 @@ int pushRRList(sldns_buffer* qb, PyObject *l, uint32_t default_ttl, int qsec, int i; size_t len; - for (i=0; i < PyList_Size(l); i++) + for (i=0; i < PyList_Size(l); i++) { item = PyList_GetItem(l, i); @@ -882,9 +1121,9 @@ int pushRRList(sldns_buffer* qb, PyObject *l, uint32_t default_ttl, int qsec, return 1; } -int set_return_msg(struct module_qstate* qstate, +int set_return_msg(struct module_qstate* qstate, const char* rr_name, sldns_rr_type rr_type, sldns_rr_class rr_class , uint16_t flags, uint32_t default_ttl, - PyObject* question, PyObject* answer, PyObject* authority, PyObject* additional) + PyObject* question, PyObject* answer, PyObject* authority, PyObject* additional) { sldns_buffer *qb = 0; int res = 1; @@ -896,7 +1135,7 @@ int set_return_msg(struct module_qstate* qstate, uint16_t PKT_CD = 16; uint16_t PKT_RA = 32; uint16_t PKT_AD = 64; - + if ((!checkList(question)) || (!checkList(answer)) || (!checkList(authority)) || (!checkList(additional))) return 0; if ((qb = sldns_buffer_new(LDNS_RR_BUF_SIZE)) == 0) return 0; @@ -945,7 +1184,7 @@ int set_return_msg(struct module_qstate* qstate, } %} -int set_return_msg(struct module_qstate* qstate, +int set_return_msg(struct module_qstate* qstate, const char* rr_name, int rr_type, int rr_class , uint16_t flags, uint32_t default_ttl, PyObject* question, PyObject* answer, PyObject* authority, PyObject* additional); @@ -965,17 +1204,17 @@ int set_return_msg(struct module_qstate* qstate, def set_return_msg(self, qstate): """Returns 1 if OK""" - status = _unboundmodule.set_return_msg(qstate, self.rr_name, self.rr_type, self.rr_class, + status = _unboundmodule.set_return_msg(qstate, self.rr_name, self.rr_type, self.rr_class, self.query_flags, self.default_ttl, self.question, self.answer, self.authority, self.additional) if (status) and (PKT_AA & self.query_flags): qstate.return_msg.rep.authoritative = 1 - return status + return status %} -/* ************************************************************************************ * +/* ************************************************************************************ * ASN: Delegation pointer related functions * ************************************************************************************ */ @@ -1034,11 +1273,12 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n } %} -/* ************************************************************************************ * +/* ************************************************************************************ * Functions * ************************************************************************************ */ - -// Various debuging functions +/****************************** + * Various debugging functions * + ******************************/ void verbose(enum verbosity_value level, const char* format, ...); void log_info(const char* format, ...); void log_err(const char* format, ...); @@ -1048,24 +1288,159 @@ void log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* r void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf); void regional_log_stats(struct regional *r); -// Free allocated memory from marked sources returning corresponding types +/*************************************************************************** + * Free allocated memory from marked sources returning corresponding types * + ***************************************************************************/ %typemap(newfree, noblock = 1) char * { free($1); } -// Mark as source returning newly allocated memory +/*************************************************** + * Mark as source returning newly allocated memory * + ***************************************************/ %newobject sldns_wire2str_type; %newobject sldns_wire2str_class; -// LDNS functions +/****************** + * LDNS functions * + ******************/ char *sldns_wire2str_type(const uint16_t atype); char *sldns_wire2str_class(const uint16_t aclass); -// Functions from pythonmod_utils +/********************************** + * Functions from pythonmod_utils * + **********************************/ int storeQueryInCache(struct module_qstate* qstate, struct query_info* qinfo, struct reply_info* msgrep, int is_referral); void invalidateQueryInCache(struct module_qstate* qstate, struct query_info* qinfo); -// Module conversion functions +/******************************* + * Module conversion functions * + *******************************/ const char* strextstate(enum module_ext_state s); const char* strmodulevent(enum module_ev e); +/************************** + * Edns related functions * + **************************/ +struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); +int edns_register_option(uint16_t opt_code, int bypass_cache_stage, + int no_aggregation, struct module_env* env); + +%pythoncode %{ + def register_edns_option(env, code, bypass_cache_stage=False, + no_aggregation=False): + """Wrapper function to provide keyword attributes.""" + return edns_register_option(code, bypass_cache_stage, + no_aggregation, env) +%} + +/****************************** + * Callback related functions * + ******************************/ +/* typemap to check if argument is callable */ +%typemap(in) PyObject *py_cb { + if (!PyCallable_Check($input)) { + SWIG_exception_fail(SWIG_TypeError, "Need a callable object!"); + return NULL; + } + $1 = $input; +} +/* typemap to get content/size from a bytearray */ +%typemap(in) (size_t len, uint8_t* py_bytearray_data) { + if (!PyByteArray_CheckExact($input)) { + SWIG_exception_fail(SWIG_TypeError, "Expected bytearray!"); + return NULL; + } + $2 = (void*)PyByteArray_AsString($input); + $1 = PyByteArray_Size($input); +} + +int edns_opt_list_remove(struct edns_option** list, uint16_t code); +int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, + uint8_t* py_bytearray_data, struct regional* region); + +%{ + /* This function is called by unbound in order to call the python + * callback function. */ + int python_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct regional* region, int id, void* python_callback) + { + PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; + PyObject *py_rep, *py_region; + PyObject *result; + int res = 0; + + PyGILState_STATE gstate = PyGILState_Ensure(); + func = (PyObject *) python_callback; + py_edns = SWIG_NewPointerObj((void*) edns, SWIGTYPE_p_edns_data, 0); + py_qstate = SWIG_NewPointerObj((void*) qstate, + SWIGTYPE_p_module_qstate, 0); + py_opt_list_out = SWIG_NewPointerObj((void*) opt_list_out, + SWIGTYPE_p_p_edns_option, 0); + py_qinfo = SWIG_NewPointerObj((void*) qinfo, SWIGTYPE_p_query_info, 0); + py_rep = SWIG_NewPointerObj((void*) rep, SWIGTYPE_p_reply_info, 0); + py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); + result = PyObject_CallFunction(func, "OOOiOOO", py_qinfo, py_qstate, + py_rep, rcode, py_edns, py_opt_list_out, py_region); + Py_XDECREF(py_edns); + Py_XDECREF(py_qstate); + Py_XDECREF(py_opt_list_out); + Py_XDECREF(py_qinfo); + Py_XDECREF(py_rep); + Py_XDECREF(py_region); + if (result) { + res = PyInt_AsLong(result); + } + Py_XDECREF(result); + PyGILState_Release(gstate); + return res; + } + + /* register a callback */ + static int python_inplace_cb_register(enum inplace_cb_list_type type, + PyObject* py_cb, struct module_env* env, int id) + { + int ret = inplace_cb_register(python_inplace_cb_reply_generic, + type, (void*) py_cb, env, id); + if (ret) Py_INCREF(py_cb); + return ret; + } + + /* Swig implementations for Python */ + static int register_inplace_cb_reply(PyObject* py_cb, + struct module_env* env, int id) + { + return python_inplace_cb_register(inplace_cb_reply, py_cb, env, id); + } + static int register_inplace_cb_reply_cache(PyObject* py_cb, + struct module_env* env, int id) + { + return python_inplace_cb_register(inplace_cb_reply_cache, py_cb, env, id); + } + static int register_inplace_cb_reply_local(PyObject* py_cb, + struct module_env* env, int id) + { + return python_inplace_cb_register(inplace_cb_reply_local, py_cb, env, id); + } + static int register_inplace_cb_reply_servfail(PyObject* py_cb, + struct module_env* env, int id) + { + return python_inplace_cb_register(inplace_cb_reply_servfail, + py_cb, env, id); + } +%} +/* C declarations */ +int inplace_cb_register(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id); + +/* Swig declarations */ +static int register_inplace_cb_reply(PyObject* py_cb, + struct module_env* env, int id); +static int register_inplace_cb_reply_cache(PyObject* py_cb, + struct module_env* env, int id); +static int register_inplace_cb_reply_local(PyObject* py_cb, + struct module_env* env, int id); +static int register_inplace_cb_reply_servfail(PyObject* py_cb, + struct module_env* env, int id); diff --git a/external/unbound/pythonmod/pythonmod.c b/external/unbound/pythonmod/pythonmod.c index 48dbc01..35a2043 100644 --- a/external/unbound/pythonmod/pythonmod.c +++ b/external/unbound/pythonmod/pythonmod.c @@ -1,22 +1,22 @@ /* * pythonmod.c: unbound module C wrapper - * + * * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * * Neither the name of the organization nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. @@ -41,8 +41,10 @@ /* ignore the varargs unused warning from SWIGs internal vararg support */ #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wunused-parameter" +#ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #endif +#endif #include "config.h" #include "sldns/sbuffer.h" @@ -63,7 +65,7 @@ typedef void* PyGILState_STATE; #endif /** - * Global state for the module. + * Global state for the module. */ struct pythonmod_env { @@ -112,10 +114,12 @@ int pythonmod_init(struct module_env* env, int id) { /* Initialize module */ FILE* script_py = NULL; - PyObject* py_cfg, *res; + PyObject* py_init_arg, *res; PyGILState_STATE gil; + int init_standard = 1; + struct pythonmod_env* pe = (struct pythonmod_env*)calloc(1, sizeof(struct pythonmod_env)); - if (!pe) + if (!pe) { log_err("pythonmod: malloc failure"); return 0; @@ -131,7 +135,7 @@ int pythonmod_init(struct module_env* env, int id) } /* Initialize Python libraries */ - if (!Py_IsInitialized()) + if (!Py_IsInitialized()) { #if PY_MAJOR_VERSION >= 3 wchar_t progname[8]; @@ -141,6 +145,9 @@ int pythonmod_init(struct module_env* env, int id) #endif Py_SetProgramName(progname); Py_NoSiteFlag = 1; +#if PY_MAJOR_VERSION >= 3 + PyImport_AppendInittab(SWIG_name, (void*)SWIG_init); +#endif Py_Initialize(); PyEval_InitThreads(); SWIG_init(); @@ -153,10 +160,10 @@ int pythonmod_init(struct module_env* env, int id) PyRun_SimpleString("import sys \n"); PyRun_SimpleString("sys.path.append('.') \n"); if(env->cfg->directory && env->cfg->directory[0]) { - char wdir[1524]; - snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n", - env->cfg->directory); - PyRun_SimpleString(wdir); + char wdir[1524]; + snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n", + env->cfg->directory); + PyRun_SimpleString(wdir); } PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n"); PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n"); @@ -164,13 +171,13 @@ int pythonmod_init(struct module_env* env, int id) PyRun_SimpleString("sys.path.append(distutils.sysconfig.get_python_lib(1,0)) \n"); if (PyRun_SimpleString("from unboundmodule import *\n") < 0) { - log_err("pythonmod: cannot initialize core module: unboundmodule.py"); + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); PyGILState_Release(gil); return 0; } /* Check Python file load */ - if ((script_py = fopen(pe->fname, "r")) == NULL) + if ((script_py = fopen(pe->fname, "r")) == NULL) { log_err("pythonmod: can't open file %s for reading", pe->fname); PyGILState_Release(gil); @@ -185,8 +192,8 @@ int pythonmod_init(struct module_env* env, int id) PyModule_AddObject(pe->module, "mod_env", pe->data); /* TODO: deallocation of pe->... if an error occurs */ - - if (PyRun_SimpleFile(script_py, pe->fname) < 0) + + if (PyRun_SimpleFile(script_py, pe->fname) < 0) { log_err("pythonmod: can't parse Python script %s", pe->fname); PyGILState_Release(gil); @@ -195,41 +202,57 @@ int pythonmod_init(struct module_env* env, int id) fclose(script_py); - if ((pe->func_init = PyDict_GetItemString(pe->dict, "init")) == NULL) + if ((pe->func_init = PyDict_GetItemString(pe->dict, "init_standard")) == NULL) { - log_err("pythonmod: function init is missing in %s", pe->fname); - PyGILState_Release(gil); - return 0; + init_standard = 0; + if ((pe->func_init = PyDict_GetItemString(pe->dict, "init")) == NULL) + { + log_err("pythonmod: function init is missing in %s", pe->fname); + PyGILState_Release(gil); + return 0; + } } - if ((pe->func_deinit = PyDict_GetItemString(pe->dict, "deinit")) == NULL) + if ((pe->func_deinit = PyDict_GetItemString(pe->dict, "deinit")) == NULL) { log_err("pythonmod: function deinit is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } - if ((pe->func_operate = PyDict_GetItemString(pe->dict, "operate")) == NULL) + if ((pe->func_operate = PyDict_GetItemString(pe->dict, "operate")) == NULL) { log_err("pythonmod: function operate is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } - if ((pe->func_inform = PyDict_GetItemString(pe->dict, "inform_super")) == NULL) + if ((pe->func_inform = PyDict_GetItemString(pe->dict, "inform_super")) == NULL) { log_err("pythonmod: function inform_super is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } - py_cfg = SWIG_NewPointerObj((void*) env->cfg, SWIGTYPE_p_config_file, 0); - res = PyObject_CallFunction(pe->func_init, "iO", id, py_cfg); - if (PyErr_Occurred()) + if (init_standard) + { + py_init_arg = SWIG_NewPointerObj((void*) env, SWIGTYPE_p_module_env, 0); + } + else + { + py_init_arg = SWIG_NewPointerObj((void*) env->cfg, + SWIGTYPE_p_config_file, 0); + } + res = PyObject_CallFunction(pe->func_init, "iO", id, py_init_arg); + if (PyErr_Occurred()) { log_err("pythonmod: Exception occurred in function init"); PyErr_Print(); + Py_XDECREF(res); + Py_XDECREF(py_init_arg); + PyGILState_Release(gil); + return 0; } Py_XDECREF(res); - Py_XDECREF(py_cfg); + Py_XDECREF(py_init_arg); PyGILState_Release(gil); return 1; @@ -283,20 +306,20 @@ void pythonmod_inform_super(struct module_qstate* qstate, int id, struct module_ py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); py_sqstate = SWIG_NewPointerObj((void*) super, SWIGTYPE_p_module_qstate, 0); - res = PyObject_CallFunction(pe->func_inform, "iOOO", id, py_qstate, + res = PyObject_CallFunction(pe->func_inform, "iOOO", id, py_qstate, py_sqstate, pq->data); - if (PyErr_Occurred()) + if (PyErr_Occurred()) { log_err("pythonmod: Exception occurred in function inform_super"); PyErr_Print(); qstate->ext_state[id] = module_error; - } - else if ((res == NULL) || (!PyObject_IsTrue(res))) + } + else if ((res == NULL) || (!PyObject_IsTrue(res))) { log_err("pythonmod: python returned bad code in inform_super"); qstate->ext_state[id] = module_error; - } + } Py_XDECREF(res); Py_XDECREF(py_sqstate); @@ -305,7 +328,7 @@ void pythonmod_inform_super(struct module_qstate* qstate, int id, struct module_ PyGILState_Release(gil); } -void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, +void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* ATTR_UNUSED(outbound)) { struct pythonmod_env* pe = (struct pythonmod_env*)qstate->env->modinfo[id]; @@ -314,10 +337,10 @@ void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, PyGILState_STATE gil = PyGILState_Ensure(); if ( pq == NULL) - { + { /* create qstate */ pq = qstate->minfo[id] = malloc(sizeof(struct pythonmod_qstate)); - + /* Initialize per query data */ pq->data = Py_None; Py_INCREF(pq->data); @@ -325,19 +348,19 @@ void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, /* Call operate */ py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); - res = PyObject_CallFunction(pe->func_operate, "iiOO", id, (int) event, + res = PyObject_CallFunction(pe->func_operate, "iiOO", id, (int) event, py_qstate, pq->data); - if (PyErr_Occurred()) + if (PyErr_Occurred()) { log_err("pythonmod: Exception occurred in function operate, event: %s", strmodulevent(event)); PyErr_Print(); qstate->ext_state[id] = module_error; - } - else if ((res == NULL) || (!PyObject_IsTrue(res))) + } + else if ((res == NULL) || (!PyObject_IsTrue(res))) { log_err("pythonmod: python returned bad code, event: %s", strmodulevent(event)); qstate->ext_state[id] = module_error; - } + } Py_XDECREF(res); Py_XDECREF(py_qstate); @@ -351,7 +374,7 @@ void pythonmod_clear(struct module_qstate* qstate, int id) return; pq = (struct pythonmod_qstate*)qstate->minfo[id]; - verbose(VERB_ALGO, "pythonmod: clear, id: %d, pq:%lX", id, + verbose(VERB_ALGO, "pythonmod: clear, id: %d, pq:%lX", id, (unsigned long int)pq); if(pq != NULL) { @@ -368,7 +391,7 @@ void pythonmod_clear(struct module_qstate* qstate, int id) size_t pythonmod_get_mem(struct module_env* env, int id) { struct pythonmod_env* pe = (struct pythonmod_env*)env->modinfo[id]; - verbose(VERB_ALGO, "pythonmod: get_mem, id: %d, pe:%lX", id, + verbose(VERB_ALGO, "pythonmod: get_mem, id: %d, pe:%lX", id, (unsigned long int)pe); if(!pe) return 0; @@ -376,11 +399,11 @@ size_t pythonmod_get_mem(struct module_env* env, int id) } /** - * The module function block + * The module function block */ static struct module_func_block pythonmod_block = { "python", - &pythonmod_init, &pythonmod_deinit, &pythonmod_operate, &pythonmod_inform_super, + &pythonmod_init, &pythonmod_deinit, &pythonmod_operate, &pythonmod_inform_super, &pythonmod_clear, &pythonmod_get_mem }; diff --git a/external/unbound/pythonmod/pythonmod.h b/external/unbound/pythonmod/pythonmod.h index b108cf9..7c7c0e7 100644 --- a/external/unbound/pythonmod/pythonmod.h +++ b/external/unbound/pythonmod/pythonmod.h @@ -55,14 +55,22 @@ int pythonmod_init(struct module_env* env, int id); void pythonmod_deinit(struct module_env* env, int id); /** python module operate on a query */ -void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* outbound); +void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); /** python module */ -void pythonmod_inform_super(struct module_qstate* qstate, int id, struct module_qstate* super); +void pythonmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); /** python module cleanup query state */ void pythonmod_clear(struct module_qstate* qstate, int id); /** python module alloc size routine */ size_t pythonmod_get_mem(struct module_env* env, int id); + +/** Declared here for fptr_wlist access. The definition is in interface.i. */ +int python_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct regional* region, int id, void* python_callback); #endif /* PYTHONMOD_H */ diff --git a/external/unbound/pythonmod/pythonmod_utils.c b/external/unbound/pythonmod/pythonmod_utils.c index 5120074..5d70f2b 100644 --- a/external/unbound/pythonmod/pythonmod_utils.c +++ b/external/unbound/pythonmod/pythonmod_utils.c @@ -74,7 +74,7 @@ int storeQueryInCache(struct module_qstate* qstate, struct query_info* qinfo, st /* Invalidate the message associated with query_info stored in message cache */ void invalidateQueryInCache(struct module_qstate* qstate, struct query_info* qinfo) { - hashvalue_t h; + hashvalue_type h; struct lruhash_entry* e; struct reply_info *r; size_t i, j; @@ -129,7 +129,8 @@ int createResponse(struct module_qstate* qstate, sldns_buffer* pkt) return 0; } /* edns is not examined, but removed from message to help cache */ - if(parse_extract_edns(prs, &edns) != LDNS_RCODE_NOERROR) + if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + LDNS_RCODE_NOERROR) return 0; /* remove CD-bit, we asked for in case we handle validation ourself */ diff --git a/external/unbound/pythonmod/test-edns.conf b/external/unbound/pythonmod/test-edns.conf new file mode 100644 index 0000000..440947f --- /dev/null +++ b/external/unbound/pythonmod/test-edns.conf @@ -0,0 +1,17 @@ +# Example configuration file for edns.py +server: + verbosity: 1 + interface: 0.0.0.0 + do-daemonize: no + access-control: 0.0.0.0/0 allow + chroot: "" + username: "" + directory: "" + logfile: "" + pidfile: "unbound.pid" + module-config: "validator python iterator" + +# Python config section +python: + # Script file to load + python-script: "./examples/edns.py" diff --git a/external/unbound/pythonmod/test-inplace_callbacks.conf b/external/unbound/pythonmod/test-inplace_callbacks.conf new file mode 100644 index 0000000..d7081fa --- /dev/null +++ b/external/unbound/pythonmod/test-inplace_callbacks.conf @@ -0,0 +1,17 @@ +# Example configuration file for edns.py +server: + verbosity: 1 + interface: 0.0.0.0 + do-daemonize: no + access-control: 0.0.0.0/0 allow + chroot: "" + username: "" + directory: "" + logfile: "" + pidfile: "unbound.pid" + module-config: "validator python iterator" + +# Python config section +python: + # Script file to load + python-script: "./examples/inplace_callbacks.py" diff --git a/external/unbound/respip/respip.c b/external/unbound/respip/respip.c new file mode 100644 index 0000000..2e9313f --- /dev/null +++ b/external/unbound/respip/respip.c @@ -0,0 +1,1180 @@ +/* + * respip/respip.c - filtering response IP module + */ + +/** + * \file + * + * This file contains a module that inspects a result of recursive resolution + * to see if any IP address record should trigger a special action. + * If applicable these actions can modify the original response. + */ +#include "config.h" + +#include "services/localzone.h" +#include "services/cache/dns.h" +#include "sldns/str2wire.h" +#include "util/config_file.h" +#include "util/fptr_wlist.h" +#include "util/module.h" +#include "util/net_help.h" +#include "util/regional.h" +#include "util/data/msgreply.h" +#include "util/storage/dnstree.h" +#include "respip/respip.h" +#include "services/view.h" +#include "sldns/rrdef.h" + +/** + * Conceptual set of IP addresses for response AAAA or A records that should + * trigger special actions. + */ +struct respip_set { + struct regional* region; + struct rbtree_type ip_tree; + char* const* tagname; /* shallow copy of tag names, for logging */ + int num_tags; /* number of tagname entries */ +}; + +/** An address span with response control information */ +struct resp_addr { + /** node in address tree */ + struct addr_tree_node node; + /** tag bitlist */ + uint8_t* taglist; + /** length of the taglist (in bytes) */ + size_t taglen; + /** action for this address span */ + enum respip_action action; + /** "local data" for this node */ + struct ub_packed_rrset_key* data; +}; + +/** Subset of resp_addr.node, used for inform-variant logging */ +struct respip_addr_info { + struct sockaddr_storage addr; + socklen_t addrlen; + int net; +}; + +/** Query state regarding the response-ip module. */ +enum respip_state { + /** + * The general state. Unless CNAME chasing takes place, all processing + * is completed in this state without any other asynchronous event. + */ + RESPIP_INIT = 0, + + /** + * A subquery for CNAME chasing is completed. + */ + RESPIP_SUBQUERY_FINISHED +}; + +/** Per query state for the response-ip module. */ +struct respip_qstate { + enum respip_state state; +}; + +struct respip_set* +respip_set_create(void) +{ + struct respip_set* set = calloc(1, sizeof(*set)); + if(!set) + return NULL; + set->region = regional_create(); + if(!set->region) { + free(set); + return NULL; + } + addr_tree_init(&set->ip_tree); + return set; +} + +void +respip_set_delete(struct respip_set* set) +{ + if(!set) + return; + regional_destroy(set->region); + free(set); +} + +struct rbtree_type* +respip_set_get_tree(struct respip_set* set) +{ + if(!set) + return NULL; + return &set->ip_tree; +} + +/** returns the node in the address tree for the specified netblock string; + * non-existent node will be created if 'create' is true */ +static struct resp_addr* +respip_find_or_create(struct respip_set* set, const char* ipstr, int create) +{ + struct resp_addr* node; + struct sockaddr_storage addr; + int net; + socklen_t addrlen; + + if(!netblockstrtoaddr(ipstr, 0, &addr, &addrlen, &net)) { + log_err("cannot parse netblock: '%s'", ipstr); + return NULL; + } + node = (struct resp_addr*)addr_tree_find(&set->ip_tree, &addr, addrlen, net); + if(!node && create) { + node = regional_alloc_zero(set->region, sizeof(*node)); + if(!node) { + log_err("out of memory"); + return NULL; + } + node->action = respip_none; + if(!addr_tree_insert(&set->ip_tree, &node->node, &addr, + addrlen, net)) { + /* We know we didn't find it, so this should be + * impossible. */ + log_warn("unexpected: duplicate address: %s", ipstr); + } + } + return node; +} + +static int +respip_tag_cfg(struct respip_set* set, const char* ipstr, + const uint8_t* taglist, size_t taglen) +{ + struct resp_addr* node; + + if(!(node=respip_find_or_create(set, ipstr, 1))) + return 0; + if(node->taglist) { + log_warn("duplicate response-address-tag for '%s', overridden.", + ipstr); + } + node->taglist = regional_alloc_init(set->region, taglist, taglen); + if(!node->taglist) { + log_err("out of memory"); + return 0; + } + node->taglen = taglen; + return 1; +} + +/** set action for the node specified by the netblock string */ +static int +respip_action_cfg(struct respip_set* set, const char* ipstr, + const char* actnstr) +{ + struct resp_addr* node; + enum respip_action action; + + if(!(node=respip_find_or_create(set, ipstr, 1))) + return 0; + if(node->action != respip_none) { + log_warn("duplicate response-ip action for '%s', overridden.", + ipstr); + } + if(strcmp(actnstr, "deny") == 0) + action = respip_deny; + else if(strcmp(actnstr, "redirect") == 0) + action = respip_redirect; + else if(strcmp(actnstr, "inform") == 0) + action = respip_inform; + else if(strcmp(actnstr, "inform_deny") == 0) + action = respip_inform_deny; + else if(strcmp(actnstr, "always_transparent") == 0) + action = respip_always_transparent; + else if(strcmp(actnstr, "always_refuse") == 0) + action = respip_always_refuse; + else if(strcmp(actnstr, "always_nxdomain") == 0) + action = respip_always_nxdomain; + else { + log_err("unknown response-ip action %s", actnstr); + return 0; + } + node->action = action; + return 1; +} + +/** allocate and initialize an rrset structure; this function is based + * on new_local_rrset() from the localzone.c module */ +static struct ub_packed_rrset_key* +new_rrset(struct regional* region, uint16_t rrtype, uint16_t rrclass) +{ + struct packed_rrset_data* pd; + struct ub_packed_rrset_key* rrset = regional_alloc_zero( + region, sizeof(*rrset)); + if(!rrset) { + log_err("out of memory"); + return NULL; + } + rrset->entry.key = rrset; + pd = regional_alloc_zero(region, sizeof(*pd)); + if(!pd) { + log_err("out of memory"); + return NULL; + } + pd->trust = rrset_trust_prim_noglue; + pd->security = sec_status_insecure; + rrset->entry.data = pd; + rrset->rk.dname = regional_alloc_zero(region, 1); + if(!rrset->rk.dname) { + log_err("out of memory"); + return NULL; + } + rrset->rk.dname_len = 1; + rrset->rk.type = htons(rrtype); + rrset->rk.rrset_class = htons(rrclass); + return rrset; +} + +/** enter local data as resource records into a response-ip node */ +static int +respip_enter_rr(struct regional* region, struct resp_addr* raddr, + const char* rrstr, const char* netblock) +{ + uint8_t* nm; + uint16_t rrtype = 0, rrclass = 0; + time_t ttl = 0; + uint8_t rr[LDNS_RR_BUF_SIZE]; + uint8_t* rdata = NULL; + size_t rdata_len = 0; + char buf[65536]; + char bufshort[64]; + struct packed_rrset_data* pd; + struct sockaddr* sa; + int ret; + if(raddr->action != respip_redirect) { + log_err("cannot parse response-ip-data %s: response-ip " + "action for %s is not redirect", rrstr, netblock); + return 0; + } + ret = snprintf(buf, sizeof(buf), ". %s", rrstr); + if(ret < 0 || ret >= (int)sizeof(buf)) { + strlcpy(bufshort, rrstr, sizeof(bufshort)); + log_err("bad response-ip-data: %s...", bufshort); + return 0; + } + if(!rrstr_get_rr_content(buf, &nm, &rrtype, &rrclass, &ttl, rr, sizeof(rr), + &rdata, &rdata_len)) { + log_err("bad response-ip-data: %s", rrstr); + return 0; + } + free(nm); + sa = (struct sockaddr*)&raddr->node.addr; + if (rrtype == LDNS_RR_TYPE_CNAME && raddr->data) { + log_err("CNAME response-ip data (%s) can not co-exist with other " + "response-ip data for netblock %s", rrstr, netblock); + return 0; + } else if (raddr->data && + raddr->data->rk.type == htons(LDNS_RR_TYPE_CNAME)) { + log_err("response-ip data (%s) can not be added; CNAME response-ip " + "data already in place for netblock %s", rrstr, netblock); + return 0; + } else if((rrtype != LDNS_RR_TYPE_CNAME) && + ((sa->sa_family == AF_INET && rrtype != LDNS_RR_TYPE_A) || + (sa->sa_family == AF_INET6 && rrtype != LDNS_RR_TYPE_AAAA))) { + log_err("response-ip data %s record type does not correspond " + "to netblock %s address family", rrstr, netblock); + return 0; + } + + if(!raddr->data) { + raddr->data = new_rrset(region, rrtype, rrclass); + if(!raddr->data) + return 0; + } + pd = raddr->data->entry.data; + return rrset_insert_rr(region, pd, rdata, rdata_len, ttl, rrstr); +} + +static int +respip_data_cfg(struct respip_set* set, const char* ipstr, const char* rrstr) +{ + struct resp_addr* node; + + node=respip_find_or_create(set, ipstr, 0); + if(!node || node->action == respip_none) { + log_err("cannot parse response-ip-data %s: " + "response-ip node for %s not found", rrstr, ipstr); + return 0; + } + return respip_enter_rr(set->region, node, rrstr, ipstr); +} + +static int +respip_set_apply_cfg(struct respip_set* set, char* const* tagname, int num_tags, + struct config_strbytelist* respip_tags, + struct config_str2list* respip_actions, + struct config_str2list* respip_data) +{ + struct config_strbytelist* p; + struct config_str2list* pa; + struct config_str2list* pd; + + set->tagname = tagname; + set->num_tags = num_tags; + + p = respip_tags; + while(p) { + struct config_strbytelist* np = p->next; + + log_assert(p->str && p->str2); + if(!respip_tag_cfg(set, p->str, p->str2, p->str2len)) { + config_del_strbytelist(p); + return 0; + } + free(p->str); + free(p->str2); + free(p); + p = np; + } + + pa = respip_actions; + while(pa) { + struct config_str2list* np = pa->next; + log_assert(pa->str && pa->str2); + if(!respip_action_cfg(set, pa->str, pa->str2)) { + config_deldblstrlist(pa); + return 0; + } + free(pa->str); + free(pa->str2); + free(pa); + pa = np; + } + + pd = respip_data; + while(pd) { + struct config_str2list* np = pd->next; + log_assert(pd->str && pd->str2); + if(!respip_data_cfg(set, pd->str, pd->str2)) { + config_deldblstrlist(pd); + return 0; + } + free(pd->str); + free(pd->str2); + free(pd); + pd = np; + } + + return 1; +} + +int +respip_global_apply_cfg(struct respip_set* set, struct config_file* cfg) +{ + int ret = respip_set_apply_cfg(set, cfg->tagname, cfg->num_tags, + cfg->respip_tags, cfg->respip_actions, cfg->respip_data); + cfg->respip_data = NULL; + cfg->respip_actions = NULL; + cfg->respip_tags = NULL; + return ret; +} + +/** Iterate through raw view data and apply the view-specific respip + * configuration; at this point we should have already seen all the views, + * so if any of the views that respip data refer to does not exist, that's + * an error. This additional iteration through view configuration data + * is expected to not have significant performance impact (or rather, its + * performance impact is not expected to be prohibitive in the configuration + * processing phase). + */ +int +respip_views_apply_cfg(struct views* vs, struct config_file* cfg, + int* have_view_respip_cfg) +{ + struct config_view* cv; + struct view* v; + int ret; + + for(cv = cfg->views; cv; cv = cv->next) { + + /** if no respip config for this view then there's + * nothing to do; note that even though respip data must go + * with respip action, we're checking for both here because + * we want to catch the case where the respip action is missing + * while the data is present */ + if(!cv->respip_actions && !cv->respip_data) + continue; + + if(!(v = views_find_view(vs, cv->name, 1))) { + log_err("view '%s' unexpectedly missing", cv->name); + return 0; + } + if(!v->respip_set) { + v->respip_set = respip_set_create(); + if(!v->respip_set) { + log_err("out of memory"); + lock_rw_unlock(&v->lock); + return 0; + } + } + ret = respip_set_apply_cfg(v->respip_set, NULL, 0, NULL, + cv->respip_actions, cv->respip_data); + lock_rw_unlock(&v->lock); + if(!ret) { + log_err("Error while applying respip configuration " + "for view '%s'", cv->name); + return 0; + } + *have_view_respip_cfg = (*have_view_respip_cfg || + v->respip_set->ip_tree.count); + cv->respip_actions = NULL; + cv->respip_data = NULL; + } + return 1; +} + +/** + * make a deep copy of 'key' in 'region'. + * This is largely derived from packed_rrset_copy_region() and + * packed_rrset_ptr_fixup(), but differs in the following points: + * + * - It doesn't assume all data in 'key' are in a contiguous memory region. + * Although that would be the case in most cases, 'key' can be passed from + * a lower-level module and it might not build the rrset to meet the + * assumption. In fact, an rrset specified as response-ip-data or generated + * in local_data_find_tag_datas() breaks the assumption. So it would be + * safer not to naively rely on the assumption. On the other hand, this + * function ensures the copied rrset data are in a contiguous region so + * that it won't cause a disruption even if an upper layer module naively + * assumes the memory layout. + * - It doesn't copy RRSIGs (if any) in 'key'. The rrset will be used in + * a reply that was already faked, so it doesn't make much sense to provide + * partial sigs even if they are valid themselves. + * - It doesn't adjust TTLs as it basically has to be a verbatim copy of 'key' + * just allocated in 'region' (the assumption is necessary TTL adjustment + * has been already done in 'key'). + * + * This function returns the copied rrset key on success, and NULL on memory + * allocation failure. + */ +struct ub_packed_rrset_key* +copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region) +{ + struct ub_packed_rrset_key* ck = regional_alloc(region, + sizeof(struct ub_packed_rrset_key)); + struct packed_rrset_data* d; + struct packed_rrset_data* data = key->entry.data; + size_t dsize, i; + uint8_t* nextrdata; + + /* derived from packed_rrset_copy_region(), but don't use + * packed_rrset_sizeof() and do exclude RRSIGs */ + if(!ck) + return NULL; + ck->id = key->id; + memset(&ck->entry, 0, sizeof(ck->entry)); + ck->entry.hash = key->entry.hash; + ck->entry.key = ck; + ck->rk = key->rk; + ck->rk.dname = regional_alloc_init(region, key->rk.dname, + key->rk.dname_len); + if(!ck->rk.dname) + return NULL; + + dsize = sizeof(struct packed_rrset_data) + data->count * + (sizeof(size_t)+sizeof(uint8_t*)+sizeof(time_t)); + for(i=0; icount; i++) + dsize += data->rr_len[i]; + d = regional_alloc(region, dsize); + if(!d) + return NULL; + *d = *data; + d->rrsig_count = 0; + ck->entry.data = d; + + /* derived from packed_rrset_ptr_fixup() with copying the data */ + d->rr_len = (size_t*)((uint8_t*)d + sizeof(struct packed_rrset_data)); + d->rr_data = (uint8_t**)&(d->rr_len[d->count]); + d->rr_ttl = (time_t*)&(d->rr_data[d->count]); + nextrdata = (uint8_t*)&(d->rr_ttl[d->count]); + for(i=0; icount; i++) { + d->rr_len[i] = data->rr_len[i]; + d->rr_ttl[i] = data->rr_ttl[i]; + d->rr_data[i] = nextrdata; + memcpy(d->rr_data[i], data->rr_data[i], data->rr_len[i]); + nextrdata += d->rr_len[i]; + } + + return ck; +} + +int +respip_init(struct module_env* env, int id) +{ + (void)env; + (void)id; + return 1; +} + +void +respip_deinit(struct module_env* env, int id) +{ + (void)env; + (void)id; +} + +/** Convert a packed AAAA or A RRset to sockaddr. */ +static int +rdata2sockaddr(const struct packed_rrset_data* rd, uint16_t rtype, size_t i, + struct sockaddr_storage* ss, socklen_t* addrlenp) +{ + /* unbound can accept and cache odd-length AAAA/A records, so we have + * to validate the length. */ + if(rtype == LDNS_RR_TYPE_A && rd->rr_len[i] == 6) { + struct sockaddr_in* sa4 = (struct sockaddr_in*)ss; + + memset(sa4, 0, sizeof(*sa4)); + sa4->sin_family = AF_INET; + memcpy(&sa4->sin_addr, rd->rr_data[i] + 2, + sizeof(sa4->sin_addr)); + *addrlenp = sizeof(*sa4); + return 1; + } else if(rtype == LDNS_RR_TYPE_AAAA && rd->rr_len[i] == 18) { + struct sockaddr_in6* sa6 = (struct sockaddr_in6*)ss; + + memset(sa6, 0, sizeof(*sa6)); + sa6->sin6_family = AF_INET6; + memcpy(&sa6->sin6_addr, rd->rr_data[i] + 2, + sizeof(sa6->sin6_addr)); + *addrlenp = sizeof(*sa6); + return 1; + } + return 0; +} + +/** + * Search the given 'iptree' for response address information that matches + * any of the IP addresses in an AAAA or A in the answer section of the + * response (stored in 'rep'). If found, a pointer to the matched resp_addr + * structure will be returned, and '*rrset_id' is set to the index in + * rep->rrsets for the RRset that contains the matching IP address record + * (the index is normally 0, but can be larger than that if this is a CNAME + * chain or type-ANY response). + */ +static const struct resp_addr* +respip_addr_lookup(const struct reply_info *rep, struct rbtree_type* iptree, + size_t* rrset_id) +{ + size_t i; + struct resp_addr* ra; + struct sockaddr_storage ss; + socklen_t addrlen; + + for(i=0; ian_numrrsets; i++) { + size_t j; + const struct packed_rrset_data* rd; + uint16_t rtype = ntohs(rep->rrsets[i]->rk.type); + + if(rtype != LDNS_RR_TYPE_A && rtype != LDNS_RR_TYPE_AAAA) + continue; + rd = rep->rrsets[i]->entry.data; + for(j = 0; j < rd->count; j++) { + if(!rdata2sockaddr(rd, rtype, j, &ss, &addrlen)) + continue; + ra = (struct resp_addr*)addr_tree_lookup(iptree, &ss, + addrlen); + if(ra) { + *rrset_id = i; + return ra; + } + } + } + + return NULL; +} + +/* + * Create a new reply_info based on 'rep'. The new info is based on + * the passed 'rep', but ignores any rrsets except for the first 'an_numrrsets' + * RRsets in the answer section. These answer rrsets are copied to the + * new info, up to 'copy_rrsets' rrsets (which must not be larger than + * 'an_numrrsets'). If an_numrrsets > copy_rrsets, the remaining rrsets array + * entries will be kept empty so the caller can fill them later. When rrsets + * are copied, they are shallow copied. The caller must ensure that the + * copied rrsets are valid throughout its lifetime and must provide appropriate + * mutex if it can be shared by multiple threads. + */ +static struct reply_info * +make_new_reply_info(const struct reply_info* rep, struct regional* region, + size_t an_numrrsets, size_t copy_rrsets) +{ + struct reply_info* new_rep; + size_t i; + + /* create a base struct. we specify 'insecure' security status as + * the modified response won't be DNSSEC-valid. In our faked response + * the authority and additional sections will be empty (except possible + * EDNS0 OPT RR in the additional section appended on sending it out), + * so the total number of RRsets is an_numrrsets. */ + new_rep = construct_reply_info_base(region, rep->flags, + rep->qdcount, rep->ttl, rep->prefetch_ttl, an_numrrsets, + 0, 0, an_numrrsets, sec_status_insecure); + if(!new_rep) + return NULL; + if(!reply_info_alloc_rrset_keys(new_rep, NULL, region)) + return NULL; + for(i=0; irrsets[i] = rep->rrsets[i]; + + return new_rep; +} + +/** + * See if response-ip or tag data should override the original answer rrset + * (which is rep->rrsets[rrset_id]) and if so override it. + * This is (mostly) equivalent to localzone.c:local_data_answer() but for + * response-ip actions. + * Note that this function distinguishes error conditions from "success but + * not overridden". This is because we want to avoid accidentally applying + * the "no data" action in case of error. + * @param raddr: address span that requires an action + * @param action: action to apply + * @param qtype: original query type + * @param rep: original reply message + * @param rrset_id: the rrset ID in 'rep' to which the action should apply + * @param new_repp: see respip_rewrite_reply + * @param tag: if >= 0 the tag ID used to determine the action and data + * @param tag_datas: data corresponding to 'tag'. + * @param tag_datas_size: size of 'tag_datas' + * @param tagname: array of tag names, used for logging + * @param num_tags: size of 'tagname', used for logging + * @param redirect_rrsetp: ptr to redirect record + * @param region: region for building new reply + * @return 1 if overridden, 0 if not overridden, -1 on error. + */ +static int +respip_data_answer(const struct resp_addr* raddr, enum respip_action action, + uint16_t qtype, const struct reply_info* rep, + size_t rrset_id, struct reply_info** new_repp, int tag, + struct config_strlist** tag_datas, size_t tag_datas_size, + char* const* tagname, int num_tags, + struct ub_packed_rrset_key** redirect_rrsetp, struct regional* region) +{ + struct ub_packed_rrset_key* rp = raddr->data; + struct reply_info* new_rep; + *redirect_rrsetp = NULL; + + if(action == respip_redirect && tag != -1 && + (size_t)tagrrsets[rrset_id]->rk.dname; + dataqinfo.qname_len = rep->rrsets[rrset_id]->rk.dname_len; + dataqinfo.qtype = ntohs(rep->rrsets[rrset_id]->rk.type); + dataqinfo.qclass = ntohs(rep->rrsets[rrset_id]->rk.rrset_class); + + memset(&r, 0, sizeof(r)); + if(local_data_find_tag_datas(&dataqinfo, tag_datas[tag], &r, + region)) { + verbose(VERB_ALGO, + "response-ip redirect with tag data [%d] %s", + tag, (tagdata) { + rp = copy_rrset(rp, region); + if(!rp) + return -1; + rp->rk.dname = rep->rrsets[rrset_id]->rk.dname; + rp->rk.dname_len = rep->rrsets[rrset_id]->rk.dname_len; + } + + /* Build a new reply with redirect rrset. We keep any preceding CNAMEs + * and replace the address rrset that triggers the action. If it's + * type ANY query, however, no other answer records should be kept + * (note that it can't be a CNAME chain in this case due to + * sanitizing). */ + if(qtype == LDNS_RR_TYPE_ANY) + rrset_id = 0; + new_rep = make_new_reply_info(rep, region, rrset_id + 1, rrset_id); + if(!new_rep) + return -1; + rp->rk.flags |= PACKED_RRSET_FIXEDTTL; /* avoid adjusting TTL */ + new_rep->rrsets[rrset_id] = rp; + + *redirect_rrsetp = rp; + *new_repp = new_rep; + return 1; +} + +/** + * apply response ip action in case where no action data is provided. + * this is similar to localzone.c:lz_zone_answer() but simplified due to + * the characteristics of response ip: + * - 'deny' variants will be handled at the caller side + * - no specific processing for 'transparent' variants: unlike local zones, + * there is no such a case of 'no data but name existing'. so all variants + * just mean 'transparent if no data'. + * @param qtype: query type + * @param action: found action + * @param rep: + * @param new_repp + * @param rrset_id + * @param region: region for building new reply + * @return 1 on success, 0 on error. + */ +static int +respip_nodata_answer(uint16_t qtype, enum respip_action action, + const struct reply_info *rep, size_t rrset_id, + struct reply_info** new_repp, struct regional* region) +{ + struct reply_info* new_rep; + + if(action == respip_refuse || action == respip_always_refuse) { + new_rep = make_new_reply_info(rep, region, 0, 0); + if(!new_rep) + return 0; + FLAGS_SET_RCODE(new_rep->flags, LDNS_RCODE_REFUSED); + *new_repp = new_rep; + return 1; + } else if(action == respip_static || action == respip_redirect || + action == respip_always_nxdomain) { + /* Since we don't know about other types of the owner name, + * we generally return NOERROR/NODATA unless an NXDOMAIN action + * is explicitly specified. */ + int rcode = (action == respip_always_nxdomain)? + LDNS_RCODE_NXDOMAIN:LDNS_RCODE_NOERROR; + + /* We should empty the answer section except for any preceding + * CNAMEs (in that case rrset_id > 0). Type-ANY case is + * special as noted in respip_data_answer(). */ + if(qtype == LDNS_RR_TYPE_ANY) + rrset_id = 0; + new_rep = make_new_reply_info(rep, region, rrset_id, rrset_id); + if(!new_rep) + return 0; + FLAGS_SET_RCODE(new_rep->flags, rcode); + *new_repp = new_rep; + return 1; + } + + return 1; +} + +/** Populate action info structure with the results of response-ip action + * processing, iff as the result of response-ip processing we are actually + * taking some action. Only action is set if action_only is true. + * Returns true on success, false on failure. + */ +static int +populate_action_info(struct respip_action_info* actinfo, + enum respip_action action, const struct resp_addr* raddr, + const struct ub_packed_rrset_key* ATTR_UNUSED(rrset), + int ATTR_UNUSED(tag), const struct respip_set* ATTR_UNUSED(ipset), + int ATTR_UNUSED(action_only), struct regional* region) +{ + if(action == respip_none || !raddr) + return 1; + actinfo->action = action; + + /* for inform variants, make a copy of the matched address block for + * later logging. We make a copy to proactively avoid disruption if + * and when we allow a dynamic update to the respip tree. */ + if(action == respip_inform || action == respip_inform_deny) { + struct respip_addr_info* a = + regional_alloc_zero(region, sizeof(*a)); + if(!a) { + log_err("out of memory"); + return 0; + } + a->addr = raddr->node.addr; + a->addrlen = raddr->node.addrlen; + a->net = raddr->node.net; + actinfo->addrinfo = a; + } + + return 1; +} + +int +respip_rewrite_reply(const struct query_info* qinfo, + const struct respip_client_info* cinfo, const struct reply_info* rep, + struct reply_info** new_repp, struct respip_action_info* actinfo, + struct ub_packed_rrset_key** alias_rrset, int search_only, + struct regional* region) +{ + const uint8_t* ctaglist; + size_t ctaglen; + const uint8_t* tag_actions; + size_t tag_actions_size; + struct config_strlist** tag_datas; + size_t tag_datas_size; + struct view* view = NULL; + struct respip_set* ipset = NULL; + size_t rrset_id = 0; + enum respip_action action = respip_none; + int tag = -1; + const struct resp_addr* raddr = NULL; + int ret = 1; + struct ub_packed_rrset_key* redirect_rrset = NULL; + + if(!cinfo) + goto done; + ctaglist = cinfo->taglist; + ctaglen = cinfo->taglen; + tag_actions = cinfo->tag_actions; + tag_actions_size = cinfo->tag_actions_size; + tag_datas = cinfo->tag_datas; + tag_datas_size = cinfo->tag_datas_size; + view = cinfo->view; + ipset = cinfo->respip_set; + + /** Try to use response-ip config from the view first; use + * global response-ip config if we don't have the view or we don't + * have the matching per-view config (and the view allows the use + * of global data in this case). + * Note that we lock the view even if we only use view members that + * currently don't change after creation. This is for safety for + * future possible changes as the view documentation seems to expect + * any of its member can change in the view's lifetime. + * Note also that we assume 'view' is valid in this function, which + * should be safe (see unbound bug #1191) */ + if(view) { + lock_rw_rdlock(&view->lock); + if(view->respip_set) { + if((raddr = respip_addr_lookup(rep, + &view->respip_set->ip_tree, &rrset_id))) { + /** for per-view respip directives the action + * can only be direct (i.e. not tag-based) */ + action = raddr->action; + } + } + if(!raddr && !view->isfirst) + goto done; + } + if(!raddr && ipset && (raddr = respip_addr_lookup(rep, &ipset->ip_tree, + &rrset_id))) { + action = (enum respip_action)local_data_find_tag_action( + raddr->taglist, raddr->taglen, ctaglist, ctaglen, + tag_actions, tag_actions_size, + (enum localzone_type)raddr->action, &tag, + ipset->tagname, ipset->num_tags); + } + if(raddr && !search_only) { + int result = 0; + + /* first, see if we have response-ip or tag action for the + * action except for 'always' variants. */ + if(action != respip_always_refuse + && action != respip_always_transparent + && action != respip_always_nxdomain + && (result = respip_data_answer(raddr, action, + qinfo->qtype, rep, rrset_id, new_repp, tag, tag_datas, + tag_datas_size, ipset->tagname, ipset->num_tags, + &redirect_rrset, region)) < 0) { + ret = 0; + goto done; + } + + /* if no action data applied, take action specific to the + * action without data. */ + if(!result && !respip_nodata_answer(qinfo->qtype, action, rep, + rrset_id, new_repp, region)) { + ret = 0; + goto done; + } + } + done: + if(view) { + lock_rw_unlock(&view->lock); + } + if(ret) { + /* If we're redirecting the original answer to a + * CNAME, record the CNAME rrset so the caller can take + * the appropriate action. Note that we don't check the + * action type; it should normally be 'redirect', but it + * can be of other type when a data-dependent tag action + * uses redirect response-ip data. + */ + if(redirect_rrset && + redirect_rrset->rk.type == ntohs(LDNS_RR_TYPE_CNAME) && + qinfo->qtype != LDNS_RR_TYPE_ANY) + *alias_rrset = redirect_rrset; + /* on success, populate respip result structure */ + ret = populate_action_info(actinfo, action, raddr, + redirect_rrset, tag, ipset, search_only, region); + } + return ret; +} + +static int +generate_cname_request(struct module_qstate* qstate, + struct ub_packed_rrset_key* alias_rrset) +{ + struct module_qstate* subq = NULL; + struct query_info subqi; + + memset(&subqi, 0, sizeof(subqi)); + get_cname_target(alias_rrset, &subqi.qname, &subqi.qname_len); + if(!subqi.qname) + return 0; /* unexpected: not a valid CNAME RDATA */ + subqi.qtype = qstate->qinfo.qtype; + subqi.qclass = qstate->qinfo.qclass; + fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub)); + return (*qstate->env->attach_sub)(qstate, &subqi, BIT_RD, 0, 0, &subq); +} + +void +respip_operate(struct module_qstate* qstate, enum module_ev event, int id, + struct outbound_entry* outbound) +{ + struct respip_qstate* rq = (struct respip_qstate*)qstate->minfo[id]; + + log_query_info(VERB_QUERY, "respip operate: query", &qstate->qinfo); + (void)outbound; + + if(event == module_event_new || event == module_event_pass) { + if(!rq) { + rq = regional_alloc_zero(qstate->region, sizeof(*rq)); + if(!rq) + goto servfail; + rq->state = RESPIP_INIT; + qstate->minfo[id] = rq; + } + if(rq->state == RESPIP_SUBQUERY_FINISHED) { + qstate->ext_state[id] = module_finished; + return; + } + verbose(VERB_ALGO, "respip: pass to next module"); + qstate->ext_state[id] = module_wait_module; + } else if(event == module_event_moddone) { + /* If the reply may be subject to response-ip rewriting + * according to the query type, check the actions. If a + * rewrite is necessary, we'll replace the reply in qstate + * with the new one. */ + enum module_ext_state next_state = module_finished; + + if((qstate->qinfo.qtype == LDNS_RR_TYPE_A || + qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA || + qstate->qinfo.qtype == LDNS_RR_TYPE_ANY) && + qstate->return_msg && qstate->return_msg->rep) { + struct respip_action_info actinfo = {respip_none, NULL}; + struct reply_info* new_rep = qstate->return_msg->rep; + struct ub_packed_rrset_key* alias_rrset = NULL; + + if(!respip_rewrite_reply(&qstate->qinfo, + qstate->client_info, qstate->return_msg->rep, + &new_rep, &actinfo, &alias_rrset, 0, + qstate->region)) { + goto servfail; + } + if(actinfo.action != respip_none) { + /* save action info for logging on a + * per-front-end-query basis */ + if(!(qstate->respip_action_info = + regional_alloc_init(qstate->region, + &actinfo, sizeof(actinfo)))) + { + log_err("out of memory"); + goto servfail; + } + } else { + qstate->respip_action_info = NULL; + } + if (new_rep == qstate->return_msg->rep && + (actinfo.action == respip_deny || + actinfo.action == respip_inform_deny)) { + /* for deny-variant actions (unless response-ip + * data is applied), mark the query state so + * the response will be dropped for all + * clients. */ + qstate->is_drop = 1; + } else if(alias_rrset) { + if(!generate_cname_request(qstate, alias_rrset)) + goto servfail; + next_state = module_wait_subquery; + } + qstate->return_msg->rep = new_rep; + } + qstate->ext_state[id] = next_state; + } else + qstate->ext_state[id] = module_finished; + + return; + + servfail: + qstate->return_rcode = LDNS_RCODE_SERVFAIL; + qstate->return_msg = NULL; +} + +int +respip_merge_cname(struct reply_info* base_rep, + const struct query_info* qinfo, const struct reply_info* tgt_rep, + const struct respip_client_info* cinfo, int must_validate, + struct reply_info** new_repp, struct regional* region) +{ + struct reply_info* new_rep; + struct reply_info* tmp_rep = NULL; /* just a placeholder */ + struct ub_packed_rrset_key* alias_rrset = NULL; /* ditto */ + uint16_t tgt_rcode; + size_t i, j; + struct respip_action_info actinfo = {respip_none, NULL}; + + /* If the query for the CNAME target would result in an unusual rcode, + * we generally translate it as a failure for the base query + * (which would then be translated into SERVFAIL). The only exception + * is NXDOMAIN and YXDOMAIN, which are passed to the end client(s). + * The YXDOMAIN case would be rare but still possible (when + * DNSSEC-validated DNAME has been cached but synthesizing CNAME + * can't be generated due to length limitation) */ + tgt_rcode = FLAGS_GET_RCODE(tgt_rep->flags); + if((tgt_rcode != LDNS_RCODE_NOERROR && + tgt_rcode != LDNS_RCODE_NXDOMAIN && + tgt_rcode != LDNS_RCODE_YXDOMAIN) || + (must_validate && tgt_rep->security <= sec_status_bogus)) { + return 0; + } + + /* see if the target reply would be subject to a response-ip action. */ + if(!respip_rewrite_reply(qinfo, cinfo, tgt_rep, &tmp_rep, &actinfo, + &alias_rrset, 1, region)) + return 0; + if(actinfo.action != respip_none) { + log_info("CNAME target of redirect response-ip action would " + "be subject to response-ip action, too; stripped"); + *new_repp = base_rep; + return 1; + } + + /* Append target reply to the base. Since we cannot assume + * tgt_rep->rrsets is valid throughout the lifetime of new_rep + * or it can be safely shared by multiple threads, we need to make a + * deep copy. */ + new_rep = make_new_reply_info(base_rep, region, + base_rep->an_numrrsets + tgt_rep->an_numrrsets, + base_rep->an_numrrsets); + if(!new_rep) + return 0; + for(i=0,j=base_rep->an_numrrsets; ian_numrrsets; i++,j++) { + new_rep->rrsets[j] = copy_rrset(tgt_rep->rrsets[i], region); + if(!new_rep->rrsets[j]) + return 0; + } + + FLAGS_SET_RCODE(new_rep->flags, tgt_rcode); + *new_repp = new_rep; + return 1; +} + +void +respip_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) +{ + struct respip_qstate* rq = (struct respip_qstate*)super->minfo[id]; + struct reply_info* new_rep = NULL; + + rq->state = RESPIP_SUBQUERY_FINISHED; + + /* respip subquery should have always been created with a valid reply + * in super. */ + log_assert(super->return_msg && super->return_msg->rep); + + /* return_msg can be NULL when, e.g., the sub query resulted in + * SERVFAIL, in which case we regard it as a failure of the original + * query. Other checks are probably redundant, but we check them + * for safety. */ + if(!qstate->return_msg || !qstate->return_msg->rep || + qstate->return_rcode != LDNS_RCODE_NOERROR) + goto fail; + + if(!respip_merge_cname(super->return_msg->rep, &qstate->qinfo, + qstate->return_msg->rep, super->client_info, + super->env->need_to_validate, &new_rep, super->region)) + goto fail; + super->return_msg->rep = new_rep; + return; + + fail: + super->return_rcode = LDNS_RCODE_SERVFAIL; + super->return_msg = NULL; + return; +} + +void +respip_clear(struct module_qstate* qstate, int id) +{ + qstate->minfo[id] = NULL; +} + +size_t +respip_get_mem(struct module_env* env, int id) +{ + (void)env; + (void)id; + return 0; +} + +/** + * The response-ip function block + */ +static struct module_func_block respip_block = { + "respip", + &respip_init, &respip_deinit, &respip_operate, &respip_inform_super, + &respip_clear, &respip_get_mem +}; + +struct module_func_block* +respip_get_funcblock(void) +{ + return &respip_block; +} + +enum respip_action +resp_addr_get_action(const struct resp_addr* addr) +{ + return addr ? addr->action : respip_none; +} + +struct ub_packed_rrset_key* +resp_addr_get_rrset(struct resp_addr* addr) +{ + return addr ? addr->data : NULL; +} + +int +respip_set_is_empty(const struct respip_set* set) +{ + return set ? set->ip_tree.count == 0 : 1; +} + +void +respip_inform_print(struct respip_addr_info* respip_addr, uint8_t* qname, + uint16_t qtype, uint16_t qclass, struct local_rrset* local_alias, + struct comm_reply* repinfo) +{ + char srcip[128], respip[128], txt[512]; + unsigned port; + + if(local_alias) + qname = local_alias->rrset->rk.dname; + port = (unsigned)((repinfo->addr.ss_family == AF_INET) ? + ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port) : + ntohs(((struct sockaddr_in6*)&repinfo->addr)->sin6_port)); + addr_to_str(&repinfo->addr, repinfo->addrlen, srcip, sizeof(srcip)); + addr_to_str(&respip_addr->addr, respip_addr->addrlen, + respip, sizeof(respip)); + snprintf(txt, sizeof(txt), "%s/%d inform %s@%u", respip, + respip_addr->net, srcip, port); + log_nametypeclass(0, txt, qname, qtype, qclass); +} diff --git a/external/unbound/respip/respip.h b/external/unbound/respip/respip.h new file mode 100644 index 0000000..01309ca --- /dev/null +++ b/external/unbound/respip/respip.h @@ -0,0 +1,230 @@ +/* + * respip/respip.h - IP-based response modification module + */ + +/** + * \file + * + * This file contains a module that selectively modifies query responses + * based on their AAAA/A IP addresses. + */ + +#ifndef RESPIP_RESPIP_H +#define RESPIP_RESPIP_H + +#include "util/module.h" +#include "services/localzone.h" + +/** + * Set of response IP addresses with associated actions and tags. + * Forward declaration only here. Actual definition is hidden within the + * module. + */ +struct respip_set; + +/** + * Forward declaration for the structure that represents a node in the + * respip_set address tree + */ +struct resp_addr; + +/** + * Forward declaration for the structure that represents a tree of view data. + */ +struct views; + +struct respip_addr_info; + +/** + * Client-specific attributes that can affect IP-based actions. + * This is essentially a subset of acl_addr (except for respip_set) but + * defined as a separate structure to avoid dependency on the daemon-specific + * structure. + * respip_set is supposed to refer to the response-ip set for the global view. + */ +struct respip_client_info { + uint8_t* taglist; + size_t taglen; + uint8_t* tag_actions; + size_t tag_actions_size; + struct config_strlist** tag_datas; + size_t tag_datas_size; + struct view* view; + struct respip_set* respip_set; +}; + +/** + * Data items representing the result of response-ip processing. + * Note: this structure currently only define a few members, but exists + * as a separate struct mainly for the convenience of custom extensions. + */ +struct respip_action_info { + enum respip_action action; + struct respip_addr_info* addrinfo; /* set only for inform variants */ +}; + +/** + * Forward declaration for the structure that represents a node in the + * respip_set address tree + */ +struct resp_addr; + +/** + * Create response IP set. + * @return new struct or NULL on error. + */ +struct respip_set* respip_set_create(void); + +/** + * Delete response IP set. + * @param set: to delete. + */ +void respip_set_delete(struct respip_set* set); + +/** + * Apply response-ip config settings to the global (default) view. + * It assumes exclusive access to set (no internal locks). + * @param set: processed global respip config data + * @param cfg: config data. + * @return 1 on success, 0 on error. + */ +int respip_global_apply_cfg(struct respip_set* set, struct config_file* cfg); + +/** + * Apply response-ip config settings in named views. + * @param vs: view structures with processed config data + * @param cfg: config data. + * @param have_view_respip_cfg: set to true if any named view has respip + * configuration; otherwise set to false + * @return 1 on success, 0 on error. + */ +int respip_views_apply_cfg(struct views* vs, struct config_file* cfg, + int* have_view_respip_cfg); + +/** + * Merge two replies to build a complete CNAME chain. + * It appends the content of 'tgt_rep' to 'base_rep', assuming (but not + * checking) the former ends with a CNAME and the latter resolves its target. + * A merged new reply will be built using 'region' and *new_repp will point + * to the new one on success. + * If the target reply would also be subject to a response-ip action for + * 'cinfo', this function uses 'base_rep' as the merged reply, ignoring + * 'tgt_rep'. This is for avoiding cases like a CNAME loop or failure of + * applying an action to an address. + * RRSIGs in 'tgt_rep' will be excluded in the merged reply, as the resulting + * reply is assumed to be faked due to a response-ip action and can't be + * considered secure in terms of DNSSEC. + * The caller must ensure that neither 'base_rep' nor 'tgt_rep' can be modified + * until this function returns. + * @param base_rep: the reply info containing an incomplete CNAME. + * @param qinfo: query info corresponding to 'base_rep'. + * @param tgt_rep: the reply info that completes the CNAME chain. + * @param cinfo: client info corresponding to 'base_rep'. + * @param must_validate: whether 'tgt_rep' must be DNSSEC-validated. + * @param new_repp: pointer placeholder for the merged reply. will be intact + * on error. + * @param region: allocator to build *new_repp. + * @return 1 on success, 0 on error. + */ +int respip_merge_cname(struct reply_info* base_rep, + const struct query_info* qinfo, const struct reply_info* tgt_rep, + const struct respip_client_info* cinfo, int must_validate, + struct reply_info** new_repp, struct regional* region); + +/** + * See if any IP-based action should apply to any IP address of AAAA/A answer + * record in the reply. If so, apply the action. In some cases it rewrites + * the reply rrsets, in which case *new_repp will point to the updated reply + * info. Depending on the action, some of the rrsets in 'rep' will be + * shallow-copied into '*new_repp'; the caller must ensure that the rrsets + * in 'rep' are valid throughout the lifetime of *new_repp, and it must + * provide appropriate mutex if the rrsets can be shared by multiple threads. + * @param qinfo: query info corresponding to the reply. + * @param cinfo: client-specific info to identify the best matching action. + * can be NULL. + * @param rep: original reply info. must not be NULL. + * @param new_repp: can be set to the rewritten reply info (intact on failure). + * @param actinfo: result of response-ip processing + * @param alias_rrset: must not be NULL. + * @param search_only: if true, only check if an action would apply. actionp + * will be set (or intact) accordingly but the modified reply won't be built. + * @param region: allocator to build *new_repp. + * @return 1 on success, 0 on error. + */ +int respip_rewrite_reply(const struct query_info* qinfo, + const struct respip_client_info* cinfo, + const struct reply_info *rep, struct reply_info** new_repp, + struct respip_action_info* actinfo, + struct ub_packed_rrset_key** alias_rrset, + int search_only, struct regional* region); + +/** + * Get the response-ip function block. + * @return: function block with function pointers to response-ip methods. + */ +struct module_func_block* respip_get_funcblock(void); + +/** response-ip init */ +int respip_init(struct module_env* env, int id); + +/** response-ip deinit */ +void respip_deinit(struct module_env* env, int id); + +/** response-ip operate on a query */ +void respip_operate(struct module_qstate* qstate, enum module_ev event, int id, + struct outbound_entry* outbound); + +/** inform response-ip super */ +void respip_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); + +/** response-ip cleanup query state */ +void respip_clear(struct module_qstate* qstate, int id); + +/** + * returns address of the IP address tree of the specified respip set; + * returns NULL for NULL input; exists for test purposes only + */ +struct rbtree_type* respip_set_get_tree(struct respip_set* set); + +/** + * returns respip action for the specified node in the respip address + * returns respip_none for NULL input; exists for test purposes only + */ +enum respip_action resp_addr_get_action(const struct resp_addr* addr); + +/** + * returns rrset portion of the specified node in the respip address + * tree; returns NULL for NULL input; exists for test purposes only + */ +struct ub_packed_rrset_key* resp_addr_get_rrset(struct resp_addr* addr); + +/** response-ip alloc size routine */ +size_t respip_get_mem(struct module_env* env, int id); + +/** + * respip set emptiness test + * @param set respip set to test + * @return 0 if the specified set exists (non-NULL) and is non-empty; + * otherwise returns 1 + */ +int respip_set_is_empty(const struct respip_set* set); + +/** + * print log information for a query subject to an inform or inform-deny + * response-ip action. + * @param respip_addr: response-ip information that causes the action + * @param qname: query name in the context, will be ignored if local_alias is + * non-NULL. + * @param qtype: query type, in host byte order. + * @param qclass: query class, in host byte order. + * @param local_alias: set to a local alias if the query matches an alias in + * a local zone. In this case its owner name will be considered the actual + * query name. + * @param repinfo: reply info containing the client's source address and port. + */ +void respip_inform_print(struct respip_addr_info* respip_addr, uint8_t* qname, + uint16_t qtype, uint16_t qclass, struct local_rrset* local_alias, + struct comm_reply* repinfo); + +#endif /* RESPIP_RESPIP_H */ diff --git a/external/unbound/services/authzone.c b/external/unbound/services/authzone.c new file mode 100644 index 0000000..f1ca2a2 --- /dev/null +++ b/external/unbound/services/authzone.c @@ -0,0 +1,6570 @@ +/* + * services/authzone.c - authoritative zone that is locally hosted. + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains the functions for an authority zone. This zone + * is queried by the iterator, just like a stub or forward zone, but then + * the data is locally held. + */ + +#include "config.h" +#include "services/authzone.h" +#include "util/data/dname.h" +#include "util/data/msgparse.h" +#include "util/data/msgreply.h" +#include "util/data/msgencode.h" +#include "util/data/packed_rrset.h" +#include "util/regional.h" +#include "util/net_help.h" +#include "util/netevent.h" +#include "util/config_file.h" +#include "util/log.h" +#include "util/module.h" +#include "util/random.h" +#include "services/cache/dns.h" +#include "services/outside_network.h" +#include "services/listen_dnsport.h" +#include "services/mesh.h" +#include "sldns/rrdef.h" +#include "sldns/pkthdr.h" +#include "sldns/sbuffer.h" +#include "sldns/str2wire.h" +#include "sldns/wire2str.h" +#include "sldns/parseutil.h" +#include "sldns/keyraw.h" +#include "validator/val_nsec3.h" +#include "validator/val_secalgo.h" +#include + +/** bytes to use for NSEC3 hash buffer. 20 for sha1 */ +#define N3HASHBUFLEN 32 +/** max number of CNAMEs we are willing to follow (in one answer) */ +#define MAX_CNAME_CHAIN 8 +/** timeout for probe packets for SOA */ +#define AUTH_PROBE_TIMEOUT 100 /* msec */ +/** when to stop with SOA probes (when exponential timeouts exceed this) */ +#define AUTH_PROBE_TIMEOUT_STOP 1000 /* msec */ +/* auth transfer timeout for TCP connections, in msec */ +#define AUTH_TRANSFER_TIMEOUT 10000 /* msec */ +/* auth transfer max backoff for failed tranfers and probes */ +#define AUTH_TRANSFER_MAX_BACKOFF 86400 /* sec */ +/* auth http port number */ +#define AUTH_HTTP_PORT 80 +/* auth https port number */ +#define AUTH_HTTPS_PORT 443 +/* max depth for nested $INCLUDEs */ +#define MAX_INCLUDE_DEPTH 10 + +/** pick up nextprobe task to start waiting to perform transfer actions */ +static void xfr_set_timeout(struct auth_xfer* xfr, struct module_env* env, + int failure, int lookup_only); +/** move to sending the probe packets, next if fails. task_probe */ +static void xfr_probe_send_or_end(struct auth_xfer* xfr, + struct module_env* env); +/** pick up probe task with specified(or NULL) destination first, + * or transfer task if nothing to probe, or false if already in progress */ +static int xfr_start_probe(struct auth_xfer* xfr, struct module_env* env, + struct auth_master* spec); +/** delete xfer structure (not its tree entry) */ +void auth_xfer_delete(struct auth_xfer* xfr); + +/** create new dns_msg */ +static struct dns_msg* +msg_create(struct regional* region, struct query_info* qinfo) +{ + struct dns_msg* msg = (struct dns_msg*)regional_alloc(region, + sizeof(struct dns_msg)); + if(!msg) + return NULL; + msg->qinfo.qname = regional_alloc_init(region, qinfo->qname, + qinfo->qname_len); + if(!msg->qinfo.qname) + return NULL; + msg->qinfo.qname_len = qinfo->qname_len; + msg->qinfo.qtype = qinfo->qtype; + msg->qinfo.qclass = qinfo->qclass; + msg->qinfo.local_alias = NULL; + /* non-packed reply_info, because it needs to grow the array */ + msg->rep = (struct reply_info*)regional_alloc_zero(region, + sizeof(struct reply_info)-sizeof(struct rrset_ref)); + if(!msg->rep) + return NULL; + msg->rep->flags = (uint16_t)(BIT_QR | BIT_AA); + msg->rep->authoritative = 1; + msg->rep->qdcount = 1; + /* rrsets is NULL, no rrsets yet */ + return msg; +} + +/** grow rrset array by one in msg */ +static int +msg_grow_array(struct regional* region, struct dns_msg* msg) +{ + if(msg->rep->rrsets == NULL) { + msg->rep->rrsets = regional_alloc_zero(region, + sizeof(struct ub_packed_rrset_key*)*(msg->rep->rrset_count+1)); + if(!msg->rep->rrsets) + return 0; + } else { + struct ub_packed_rrset_key** rrsets_old = msg->rep->rrsets; + msg->rep->rrsets = regional_alloc_zero(region, + sizeof(struct ub_packed_rrset_key*)*(msg->rep->rrset_count+1)); + if(!msg->rep->rrsets) + return 0; + memmove(msg->rep->rrsets, rrsets_old, + sizeof(struct ub_packed_rrset_key*)*msg->rep->rrset_count); + } + return 1; +} + +/** get ttl of rrset */ +static time_t +get_rrset_ttl(struct ub_packed_rrset_key* k) +{ + struct packed_rrset_data* d = (struct packed_rrset_data*) + k->entry.data; + return d->ttl; +} + +/** Copy rrset into region from domain-datanode and packet rrset */ +static struct ub_packed_rrset_key* +auth_packed_rrset_copy_region(struct auth_zone* z, struct auth_data* node, + struct auth_rrset* rrset, struct regional* region, time_t adjust) +{ + struct ub_packed_rrset_key key; + memset(&key, 0, sizeof(key)); + key.entry.key = &key; + key.entry.data = rrset->data; + key.rk.dname = node->name; + key.rk.dname_len = node->namelen; + key.rk.type = htons(rrset->type); + key.rk.rrset_class = htons(z->dclass); + key.entry.hash = rrset_key_hash(&key.rk); + return packed_rrset_copy_region(&key, region, adjust); +} + +/** fix up msg->rep TTL and prefetch ttl */ +static void +msg_ttl(struct dns_msg* msg) +{ + if(msg->rep->rrset_count == 0) return; + if(msg->rep->rrset_count == 1) { + msg->rep->ttl = get_rrset_ttl(msg->rep->rrsets[0]); + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); + } else if(get_rrset_ttl(msg->rep->rrsets[msg->rep->rrset_count-1]) < + msg->rep->ttl) { + msg->rep->ttl = get_rrset_ttl(msg->rep->rrsets[ + msg->rep->rrset_count-1]); + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); + } +} + +/** see if rrset is a duplicate in the answer message */ +static int +msg_rrset_duplicate(struct dns_msg* msg, uint8_t* nm, size_t nmlen, + uint16_t type, uint16_t dclass) +{ + size_t i; + for(i=0; irep->rrset_count; i++) { + struct ub_packed_rrset_key* k = msg->rep->rrsets[i]; + if(ntohs(k->rk.type) == type && k->rk.dname_len == nmlen && + ntohs(k->rk.rrset_class) == dclass && + query_dname_compare(k->rk.dname, nm) == 0) + return 1; + } + return 0; +} + +/** add rrset to answer section (no auth, add rrsets yet) */ +static int +msg_add_rrset_an(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset) +{ + log_assert(msg->rep->ns_numrrsets == 0); + log_assert(msg->rep->ar_numrrsets == 0); + if(!rrset) + return 1; + if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type, + z->dclass)) + return 1; + /* grow array */ + if(!msg_grow_array(region, msg)) + return 0; + /* copy it */ + if(!(msg->rep->rrsets[msg->rep->rrset_count] = + auth_packed_rrset_copy_region(z, node, rrset, region, 0))) + return 0; + msg->rep->rrset_count++; + msg->rep->an_numrrsets++; + msg_ttl(msg); + return 1; +} + +/** add rrset to authority section (no additonal section rrsets yet) */ +static int +msg_add_rrset_ns(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset) +{ + log_assert(msg->rep->ar_numrrsets == 0); + if(!rrset) + return 1; + if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type, + z->dclass)) + return 1; + /* grow array */ + if(!msg_grow_array(region, msg)) + return 0; + /* copy it */ + if(!(msg->rep->rrsets[msg->rep->rrset_count] = + auth_packed_rrset_copy_region(z, node, rrset, region, 0))) + return 0; + msg->rep->rrset_count++; + msg->rep->ns_numrrsets++; + msg_ttl(msg); + return 1; +} + +/** add rrset to additional section */ +static int +msg_add_rrset_ar(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset) +{ + if(!rrset) + return 1; + if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type, + z->dclass)) + return 1; + /* grow array */ + if(!msg_grow_array(region, msg)) + return 0; + /* copy it */ + if(!(msg->rep->rrsets[msg->rep->rrset_count] = + auth_packed_rrset_copy_region(z, node, rrset, region, 0))) + return 0; + msg->rep->rrset_count++; + msg->rep->ar_numrrsets++; + msg_ttl(msg); + return 1; +} + +struct auth_zones* auth_zones_create(void) +{ + struct auth_zones* az = (struct auth_zones*)calloc(1, sizeof(*az)); + if(!az) { + log_err("out of memory"); + return NULL; + } + rbtree_init(&az->ztree, &auth_zone_cmp); + rbtree_init(&az->xtree, &auth_xfer_cmp); + lock_rw_init(&az->lock); + lock_protect(&az->lock, &az->ztree, sizeof(az->ztree)); + lock_protect(&az->lock, &az->xtree, sizeof(az->xtree)); + /* also lock protects the rbnode's in struct auth_zone, auth_xfer */ + return az; +} + +int auth_zone_cmp(const void* z1, const void* z2) +{ + /* first sort on class, so that hierarchy can be maintained within + * a class */ + struct auth_zone* a = (struct auth_zone*)z1; + struct auth_zone* b = (struct auth_zone*)z2; + int m; + if(a->dclass != b->dclass) { + if(a->dclass < b->dclass) + return -1; + return 1; + } + /* sorted such that higher zones sort before lower zones (their + * contents) */ + return dname_lab_cmp(a->name, a->namelabs, b->name, b->namelabs, &m); +} + +int auth_data_cmp(const void* z1, const void* z2) +{ + struct auth_data* a = (struct auth_data*)z1; + struct auth_data* b = (struct auth_data*)z2; + int m; + /* canonical sort, because DNSSEC needs that */ + return dname_canon_lab_cmp(a->name, a->namelabs, b->name, + b->namelabs, &m); +} + +int auth_xfer_cmp(const void* z1, const void* z2) +{ + /* first sort on class, so that hierarchy can be maintained within + * a class */ + struct auth_xfer* a = (struct auth_xfer*)z1; + struct auth_xfer* b = (struct auth_xfer*)z2; + int m; + if(a->dclass != b->dclass) { + if(a->dclass < b->dclass) + return -1; + return 1; + } + /* sorted such that higher zones sort before lower zones (their + * contents) */ + return dname_lab_cmp(a->name, a->namelabs, b->name, b->namelabs, &m); +} + +/** delete auth rrset node */ +static void +auth_rrset_delete(struct auth_rrset* rrset) +{ + if(!rrset) return; + free(rrset->data); + free(rrset); +} + +/** delete auth data domain node */ +static void +auth_data_delete(struct auth_data* n) +{ + struct auth_rrset* p, *np; + if(!n) return; + p = n->rrsets; + while(p) { + np = p->next; + auth_rrset_delete(p); + p = np; + } + free(n->name); + free(n); +} + +/** helper traverse to delete zones */ +static void +auth_data_del(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct auth_data* z = (struct auth_data*)n->key; + auth_data_delete(z); +} + +/** delete an auth zone structure (tree remove must be done elsewhere) */ +static void +auth_zone_delete(struct auth_zone* z) +{ + if(!z) return; + lock_rw_destroy(&z->lock); + traverse_postorder(&z->data, auth_data_del, NULL); + free(z->name); + free(z->zonefile); + free(z); +} + +struct auth_zone* +auth_zone_create(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass) +{ + struct auth_zone* z = (struct auth_zone*)calloc(1, sizeof(*z)); + if(!z) { + return NULL; + } + z->node.key = z; + z->dclass = dclass; + z->namelen = nmlen; + z->namelabs = dname_count_labels(nm); + z->name = memdup(nm, nmlen); + if(!z->name) { + free(z); + return NULL; + } + rbtree_init(&z->data, &auth_data_cmp); + lock_rw_init(&z->lock); + lock_protect(&z->lock, &z->name, sizeof(*z)-sizeof(rbnode_type)); + lock_rw_wrlock(&z->lock); + /* z lock protects all, except rbtree itself, which is az->lock */ + if(!rbtree_insert(&az->ztree, &z->node)) { + lock_rw_unlock(&z->lock); + auth_zone_delete(z); + log_warn("duplicate auth zone"); + return NULL; + } + return z; +} + +struct auth_zone* +auth_zone_find(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass) +{ + struct auth_zone key; + key.node.key = &key; + key.dclass = dclass; + key.name = nm; + key.namelen = nmlen; + key.namelabs = dname_count_labels(nm); + return (struct auth_zone*)rbtree_search(&az->ztree, &key); +} + +struct auth_xfer* +auth_xfer_find(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass) +{ + struct auth_xfer key; + key.node.key = &key; + key.dclass = dclass; + key.name = nm; + key.namelen = nmlen; + key.namelabs = dname_count_labels(nm); + return (struct auth_xfer*)rbtree_search(&az->xtree, &key); +} + +/** find an auth zone or sorted less-or-equal, return true if exact */ +static int +auth_zone_find_less_equal(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass, struct auth_zone** z) +{ + struct auth_zone key; + key.node.key = &key; + key.dclass = dclass; + key.name = nm; + key.namelen = nmlen; + key.namelabs = dname_count_labels(nm); + return rbtree_find_less_equal(&az->ztree, &key, (rbnode_type**)z); +} + + +/** find the auth zone that is above the given name */ +struct auth_zone* +auth_zones_find_zone(struct auth_zones* az, uint8_t* name, size_t name_len, + uint16_t dclass) +{ + uint8_t* nm = name; + size_t nmlen = name_len; + struct auth_zone* z; + if(auth_zone_find_less_equal(az, nm, nmlen, dclass, &z)) { + /* exact match */ + return z; + } else { + /* less-or-nothing */ + if(!z) return NULL; /* nothing smaller, nothing above it */ + /* we found smaller name; smaller may be above the name, + * but not below it. */ + nm = dname_get_shared_topdomain(z->name, name); + dname_count_size_labels(nm, &nmlen); + z = NULL; + } + + /* search up */ + while(!z) { + z = auth_zone_find(az, nm, nmlen, dclass); + if(z) return z; + if(dname_is_root(nm)) break; + dname_remove_label(&nm, &nmlen); + } + return NULL; +} + +/** find or create zone with name str. caller must have lock on az. + * returns a wrlocked zone */ +static struct auth_zone* +auth_zones_find_or_add_zone(struct auth_zones* az, char* name) +{ + uint8_t nm[LDNS_MAX_DOMAINLEN+1]; + size_t nmlen = sizeof(nm); + struct auth_zone* z; + + if(sldns_str2wire_dname_buf(name, nm, &nmlen) != 0) { + log_err("cannot parse auth zone name: %s", name); + return 0; + } + z = auth_zone_find(az, nm, nmlen, LDNS_RR_CLASS_IN); + if(!z) { + /* not found, create the zone */ + z = auth_zone_create(az, nm, nmlen, LDNS_RR_CLASS_IN); + } else { + lock_rw_wrlock(&z->lock); + } + return z; +} + +/** find or create xfer zone with name str. caller must have lock on az. + * returns a locked xfer */ +static struct auth_xfer* +auth_zones_find_or_add_xfer(struct auth_zones* az, struct auth_zone* z) +{ + struct auth_xfer* x; + x = auth_xfer_find(az, z->name, z->namelen, z->dclass); + if(!x) { + /* not found, create the zone */ + x = auth_xfer_create(az, z); + } else { + lock_basic_lock(&x->lock); + } + return x; +} + +int +auth_zone_set_zonefile(struct auth_zone* z, char* zonefile) +{ + if(z->zonefile) free(z->zonefile); + if(zonefile == NULL) { + z->zonefile = NULL; + } else { + z->zonefile = strdup(zonefile); + if(!z->zonefile) { + log_err("malloc failure"); + return 0; + } + } + return 1; +} + +/** set auth zone fallback. caller must have lock on zone */ +int +auth_zone_set_fallback(struct auth_zone* z, char* fallbackstr) +{ + if(strcmp(fallbackstr, "yes") != 0 && strcmp(fallbackstr, "no") != 0){ + log_err("auth zone fallback, expected yes or no, got %s", + fallbackstr); + return 0; + } + z->fallback_enabled = (strcmp(fallbackstr, "yes")==0); + return 1; +} + +/** create domain with the given name */ +static struct auth_data* +az_domain_create(struct auth_zone* z, uint8_t* nm, size_t nmlen) +{ + struct auth_data* n = (struct auth_data*)malloc(sizeof(*n)); + if(!n) return NULL; + memset(n, 0, sizeof(*n)); + n->node.key = n; + n->name = memdup(nm, nmlen); + if(!n->name) { + free(n); + return NULL; + } + n->namelen = nmlen; + n->namelabs = dname_count_labels(nm); + if(!rbtree_insert(&z->data, &n->node)) { + log_warn("duplicate auth domain name"); + free(n->name); + free(n); + return NULL; + } + return n; +} + +/** find domain with exactly the given name */ +static struct auth_data* +az_find_name(struct auth_zone* z, uint8_t* nm, size_t nmlen) +{ + struct auth_zone key; + key.node.key = &key; + key.name = nm; + key.namelen = nmlen; + key.namelabs = dname_count_labels(nm); + return (struct auth_data*)rbtree_search(&z->data, &key); +} + +/** Find domain name (or closest match) */ +static void +az_find_domain(struct auth_zone* z, struct query_info* qinfo, int* node_exact, + struct auth_data** node) +{ + struct auth_zone key; + key.node.key = &key; + key.name = qinfo->qname; + key.namelen = qinfo->qname_len; + key.namelabs = dname_count_labels(key.name); + *node_exact = rbtree_find_less_equal(&z->data, &key, + (rbnode_type**)node); +} + +/** find or create domain with name in zone */ +static struct auth_data* +az_domain_find_or_create(struct auth_zone* z, uint8_t* dname, + size_t dname_len) +{ + struct auth_data* n = az_find_name(z, dname, dname_len); + if(!n) { + n = az_domain_create(z, dname, dname_len); + } + return n; +} + +/** find rrset of given type in the domain */ +static struct auth_rrset* +az_domain_rrset(struct auth_data* n, uint16_t t) +{ + struct auth_rrset* rrset; + if(!n) return NULL; + rrset = n->rrsets; + while(rrset) { + if(rrset->type == t) + return rrset; + rrset = rrset->next; + } + return NULL; +} + +/** remove rrset of this type from domain */ +static void +domain_remove_rrset(struct auth_data* node, uint16_t rr_type) +{ + struct auth_rrset* rrset, *prev; + if(!node) return; + prev = NULL; + rrset = node->rrsets; + while(rrset) { + if(rrset->type == rr_type) { + /* found it, now delete it */ + if(prev) prev->next = rrset->next; + else node->rrsets = rrset->next; + auth_rrset_delete(rrset); + return; + } + prev = rrset; + rrset = rrset->next; + } +} + +/** find an rr index in the rrset. returns true if found */ +static int +az_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata, size_t len, + size_t* index) +{ + size_t i; + for(i=0; icount; i++) { + if(d->rr_len[i] != len) + continue; + if(memcmp(d->rr_data[i], rdata, len) == 0) { + *index = i; + return 1; + } + } + return 0; +} + +/** find an rrsig index in the rrset. returns true if found */ +static int +az_rrset_find_rrsig(struct packed_rrset_data* d, uint8_t* rdata, size_t len, + size_t* index) +{ + size_t i; + for(i=d->count; icount + d->rrsig_count; i++) { + if(d->rr_len[i] != len) + continue; + if(memcmp(d->rr_data[i], rdata, len) == 0) { + *index = i; + return 1; + } + } + return 0; +} + +/** see if rdata is duplicate */ +static int +rdata_duplicate(struct packed_rrset_data* d, uint8_t* rdata, size_t len) +{ + size_t i; + for(i=0; icount + d->rrsig_count; i++) { + if(d->rr_len[i] != len) + continue; + if(memcmp(d->rr_data[i], rdata, len) == 0) + return 1; + } + return 0; +} + +/** get rrsig type covered from rdata. + * @param rdata: rdata in wireformat, starting with 16bit rdlength. + * @param rdatalen: length of rdata buffer. + * @return type covered (or 0). + */ +static uint16_t +rrsig_rdata_get_type_covered(uint8_t* rdata, size_t rdatalen) +{ + if(rdatalen < 4) + return 0; + return sldns_read_uint16(rdata+2); +} + +/** remove RR from existing RRset. Also sig, if it is a signature. + * reallocates the packed rrset for a new one, false on alloc failure */ +static int +rrset_remove_rr(struct auth_rrset* rrset, size_t index) +{ + struct packed_rrset_data* d, *old = rrset->data; + size_t i; + if(index >= old->count + old->rrsig_count) + return 0; /* index out of bounds */ + d = (struct packed_rrset_data*)calloc(1, packed_rrset_sizeof(old) - ( + sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t) + + old->rr_len[index])); + if(!d) { + log_err("malloc failure"); + return 0; + } + d->ttl = old->ttl; + d->count = old->count; + d->rrsig_count = old->rrsig_count; + if(index < d->count) d->count--; + else d->rrsig_count--; + d->trust = old->trust; + d->security = old->security; + + /* set rr_len, needed for ptr_fixup */ + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + if(index > 0) + memmove(d->rr_len, old->rr_len, (index)*sizeof(size_t)); + if(index+1 < old->count+old->rrsig_count) + memmove(&d->rr_len[index], &old->rr_len[index+1], + (old->count+old->rrsig_count - (index+1))*sizeof(size_t)); + packed_rrset_ptr_fixup(d); + + /* move over ttls */ + if(index > 0) + memmove(d->rr_ttl, old->rr_ttl, (index)*sizeof(time_t)); + if(index+1 < old->count+old->rrsig_count) + memmove(&d->rr_ttl[index], &old->rr_ttl[index+1], + (old->count+old->rrsig_count - (index+1))*sizeof(time_t)); + + /* move over rr_data */ + for(i=0; icount+d->rrsig_count; i++) { + size_t oldi; + if(i < index) oldi = i; + else oldi = i+1; + memmove(d->rr_data[i], old->rr_data[oldi], d->rr_len[i]); + } + + /* recalc ttl (lowest of remaining RR ttls) */ + if(d->count + d->rrsig_count > 0) + d->ttl = d->rr_ttl[0]; + for(i=0; icount+d->rrsig_count; i++) { + if(d->rr_ttl[i] < d->ttl) + d->ttl = d->rr_ttl[i]; + } + + free(rrset->data); + rrset->data = d; + return 1; +} + +/** add RR to existing RRset. If insert_sig is true, add to rrsigs. + * This reallocates the packed rrset for a new one */ +static int +rrset_add_rr(struct auth_rrset* rrset, uint32_t rr_ttl, uint8_t* rdata, + size_t rdatalen, int insert_sig) +{ + struct packed_rrset_data* d, *old = rrset->data; + size_t total, old_total; + + d = (struct packed_rrset_data*)calloc(1, packed_rrset_sizeof(old) + + sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t) + + rdatalen); + if(!d) { + log_err("out of memory"); + return 0; + } + /* copy base values */ + memcpy(d, old, sizeof(struct packed_rrset_data)); + if(!insert_sig) { + d->count++; + } else { + d->rrsig_count++; + } + old_total = old->count + old->rrsig_count; + total = d->count + d->rrsig_count; + /* set rr_len, needed for ptr_fixup */ + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + if(old->count != 0) + memmove(d->rr_len, old->rr_len, old->count*sizeof(size_t)); + if(old->rrsig_count != 0) + memmove(d->rr_len+d->count, old->rr_len+old->count, + old->rrsig_count*sizeof(size_t)); + if(!insert_sig) + d->rr_len[d->count-1] = rdatalen; + else d->rr_len[total-1] = rdatalen; + packed_rrset_ptr_fixup(d); + if((time_t)rr_ttl < d->ttl) + d->ttl = rr_ttl; + + /* copy old values into new array */ + if(old->count != 0) { + memmove(d->rr_ttl, old->rr_ttl, old->count*sizeof(time_t)); + /* all the old rr pieces are allocated sequential, so we + * can copy them in one go */ + memmove(d->rr_data[0], old->rr_data[0], + (old->rr_data[old->count-1] - old->rr_data[0]) + + old->rr_len[old->count-1]); + } + if(old->rrsig_count != 0) { + memmove(d->rr_ttl+d->count, old->rr_ttl+old->count, + old->rrsig_count*sizeof(time_t)); + memmove(d->rr_data[d->count], old->rr_data[old->count], + (old->rr_data[old_total-1] - old->rr_data[old->count]) + + old->rr_len[old_total-1]); + } + + /* insert new value */ + if(!insert_sig) { + d->rr_ttl[d->count-1] = rr_ttl; + memmove(d->rr_data[d->count-1], rdata, rdatalen); + } else { + d->rr_ttl[total-1] = rr_ttl; + memmove(d->rr_data[total-1], rdata, rdatalen); + } + + rrset->data = d; + free(old); + return 1; +} + +/** Create new rrset for node with packed rrset with one RR element */ +static struct auth_rrset* +rrset_create(struct auth_data* node, uint16_t rr_type, uint32_t rr_ttl, + uint8_t* rdata, size_t rdatalen) +{ + struct auth_rrset* rrset = (struct auth_rrset*)calloc(1, + sizeof(*rrset)); + struct auth_rrset* p, *prev; + struct packed_rrset_data* d; + if(!rrset) { + log_err("out of memory"); + return NULL; + } + rrset->type = rr_type; + + /* the rrset data structure, with one RR */ + d = (struct packed_rrset_data*)calloc(1, + sizeof(struct packed_rrset_data) + sizeof(size_t) + + sizeof(uint8_t*) + sizeof(time_t) + rdatalen); + if(!d) { + free(rrset); + log_err("out of memory"); + return NULL; + } + rrset->data = d; + d->ttl = rr_ttl; + d->trust = rrset_trust_prim_noglue; + d->rr_len = (size_t*)((uint8_t*)d + sizeof(struct packed_rrset_data)); + d->rr_data = (uint8_t**)&(d->rr_len[1]); + d->rr_ttl = (time_t*)&(d->rr_data[1]); + d->rr_data[0] = (uint8_t*)&(d->rr_ttl[1]); + + /* insert the RR */ + d->rr_len[0] = rdatalen; + d->rr_ttl[0] = rr_ttl; + memmove(d->rr_data[0], rdata, rdatalen); + d->count++; + + /* insert rrset into linked list for domain */ + /* find sorted place to link the rrset into the list */ + prev = NULL; + p = node->rrsets; + while(p && p->type<=rr_type) { + prev = p; + p = p->next; + } + /* so, prev is smaller, and p is larger than rr_type */ + rrset->next = p; + if(prev) prev->next = rrset; + else node->rrsets = rrset; + return rrset; +} + +/** count number (and size) of rrsigs that cover a type */ +static size_t +rrsig_num_that_cover(struct auth_rrset* rrsig, uint16_t rr_type, size_t* sigsz) +{ + struct packed_rrset_data* d = rrsig->data; + size_t i, num = 0; + *sigsz = 0; + log_assert(d && rrsig->type == LDNS_RR_TYPE_RRSIG); + for(i=0; icount+d->rrsig_count; i++) { + if(rrsig_rdata_get_type_covered(d->rr_data[i], + d->rr_len[i]) == rr_type) { + num++; + (*sigsz) += d->rr_len[i]; + } + } + return num; +} + +/** See if rrsig set has covered sigs for rrset and move them over */ +static int +rrset_moveover_rrsigs(struct auth_data* node, uint16_t rr_type, + struct auth_rrset* rrset, struct auth_rrset* rrsig) +{ + size_t sigs, sigsz, i, j, total; + struct packed_rrset_data* sigold = rrsig->data; + struct packed_rrset_data* old = rrset->data; + struct packed_rrset_data* d, *sigd; + + log_assert(rrset->type == rr_type); + log_assert(rrsig->type == LDNS_RR_TYPE_RRSIG); + sigs = rrsig_num_that_cover(rrsig, rr_type, &sigsz); + if(sigs == 0) { + /* 0 rrsigs to move over, done */ + return 1; + } + + /* allocate rrset sigsz larger for extra sigs elements, and + * allocate rrsig sigsz smaller for less sigs elements. */ + d = (struct packed_rrset_data*)calloc(1, packed_rrset_sizeof(old) + + sigs*(sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t)) + + sigsz); + if(!d) { + log_err("out of memory"); + return 0; + } + /* copy base values */ + total = old->count + old->rrsig_count; + memcpy(d, old, sizeof(struct packed_rrset_data)); + d->rrsig_count += sigs; + /* setup rr_len */ + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + if(total != 0) + memmove(d->rr_len, old->rr_len, total*sizeof(size_t)); + j = d->count+d->rrsig_count-sigs; + for(i=0; icount+sigold->rrsig_count; i++) { + if(rrsig_rdata_get_type_covered(sigold->rr_data[i], + sigold->rr_len[i]) == rr_type) { + d->rr_len[j] = sigold->rr_len[i]; + j++; + } + } + packed_rrset_ptr_fixup(d); + + /* copy old values into new array */ + if(total != 0) { + memmove(d->rr_ttl, old->rr_ttl, total*sizeof(time_t)); + /* all the old rr pieces are allocated sequential, so we + * can copy them in one go */ + memmove(d->rr_data[0], old->rr_data[0], + (old->rr_data[total-1] - old->rr_data[0]) + + old->rr_len[total-1]); + } + + /* move over the rrsigs to the larger rrset*/ + j = d->count+d->rrsig_count-sigs; + for(i=0; icount+sigold->rrsig_count; i++) { + if(rrsig_rdata_get_type_covered(sigold->rr_data[i], + sigold->rr_len[i]) == rr_type) { + /* move this one over to location j */ + d->rr_ttl[j] = sigold->rr_ttl[i]; + memmove(d->rr_data[j], sigold->rr_data[i], + sigold->rr_len[i]); + if(d->rr_ttl[j] < d->ttl) + d->ttl = d->rr_ttl[j]; + j++; + } + } + + /* put it in and deallocate the old rrset */ + rrset->data = d; + free(old); + + /* now make rrsig set smaller */ + if(sigold->count+sigold->rrsig_count == sigs) { + /* remove all sigs from rrsig, remove it entirely */ + domain_remove_rrset(node, LDNS_RR_TYPE_RRSIG); + return 1; + } + log_assert(packed_rrset_sizeof(sigold) > sigs*(sizeof(size_t) + + sizeof(uint8_t*) + sizeof(time_t)) + sigsz); + sigd = (struct packed_rrset_data*)calloc(1, packed_rrset_sizeof(sigold) + - sigs*(sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t)) + - sigsz); + if(!sigd) { + /* no need to free up d, it has already been placed in the + * node->rrset structure */ + log_err("out of memory"); + return 0; + } + /* copy base values */ + memcpy(sigd, sigold, sizeof(struct packed_rrset_data)); + sigd->rrsig_count -= sigs; + /* setup rr_len */ + sigd->rr_len = (size_t*)((uint8_t*)sigd + + sizeof(struct packed_rrset_data)); + j = 0; + for(i=0; icount+sigold->rrsig_count; i++) { + if(rrsig_rdata_get_type_covered(sigold->rr_data[i], + sigold->rr_len[i]) != rr_type) { + sigd->rr_len[j] = sigold->rr_len[i]; + j++; + } + } + packed_rrset_ptr_fixup(sigd); + + /* copy old values into new rrsig array */ + j = 0; + for(i=0; icount+sigold->rrsig_count; i++) { + if(rrsig_rdata_get_type_covered(sigold->rr_data[i], + sigold->rr_len[i]) != rr_type) { + /* move this one over to location j */ + sigd->rr_ttl[j] = sigold->rr_ttl[i]; + memmove(sigd->rr_data[j], sigold->rr_data[i], + sigold->rr_len[i]); + if(j==0) sigd->ttl = sigd->rr_ttl[j]; + else { + if(sigd->rr_ttl[j] < sigd->ttl) + sigd->ttl = sigd->rr_ttl[j]; + } + j++; + } + } + + /* put it in and deallocate the old rrset */ + rrsig->data = sigd; + free(sigold); + + return 1; +} + +/** copy the rrsigs from the rrset to the rrsig rrset, because the rrset + * is going to be deleted. reallocates the RRSIG rrset data. */ +static int +rrsigs_copy_from_rrset_to_rrsigset(struct auth_rrset* rrset, + struct auth_rrset* rrsigset) +{ + size_t i; + if(rrset->data->rrsig_count == 0) + return 1; + + /* move them over one by one, because there might be duplicates, + * duplicates are ignored */ + for(i=rrset->data->count; + idata->count+rrset->data->rrsig_count; i++) { + uint8_t* rdata = rrset->data->rr_data[i]; + size_t rdatalen = rrset->data->rr_len[i]; + time_t rr_ttl = rrset->data->rr_ttl[i]; + + if(rdata_duplicate(rrsigset->data, rdata, rdatalen)) { + continue; + } + if(!rrset_add_rr(rrsigset, rr_ttl, rdata, rdatalen, 0)) + return 0; + } + return 1; +} + +/** Add rr to node, ignores duplicate RRs, + * rdata points to buffer with rdatalen octets, starts with 2bytelength. */ +static int +az_domain_add_rr(struct auth_data* node, uint16_t rr_type, uint32_t rr_ttl, + uint8_t* rdata, size_t rdatalen, int* duplicate) +{ + struct auth_rrset* rrset; + /* packed rrsets have their rrsigs along with them, sort them out */ + if(rr_type == LDNS_RR_TYPE_RRSIG) { + uint16_t ctype = rrsig_rdata_get_type_covered(rdata, rdatalen); + if((rrset=az_domain_rrset(node, ctype))!= NULL) { + /* a node of the correct type exists, add the RRSIG + * to the rrset of the covered data type */ + if(rdata_duplicate(rrset->data, rdata, rdatalen)) { + if(duplicate) *duplicate = 1; + return 1; + } + if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 1)) + return 0; + } else if((rrset=az_domain_rrset(node, rr_type))!= NULL) { + /* add RRSIG to rrset of type RRSIG */ + if(rdata_duplicate(rrset->data, rdata, rdatalen)) { + if(duplicate) *duplicate = 1; + return 1; + } + if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0)) + return 0; + } else { + /* create rrset of type RRSIG */ + if(!rrset_create(node, rr_type, rr_ttl, rdata, + rdatalen)) + return 0; + } + } else { + /* normal RR type */ + if((rrset=az_domain_rrset(node, rr_type))!= NULL) { + /* add data to existing node with data type */ + if(rdata_duplicate(rrset->data, rdata, rdatalen)) { + if(duplicate) *duplicate = 1; + return 1; + } + if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0)) + return 0; + } else { + struct auth_rrset* rrsig; + /* create new node with data type */ + if(!(rrset=rrset_create(node, rr_type, rr_ttl, rdata, + rdatalen))) + return 0; + + /* see if node of type RRSIG has signatures that + * cover the data type, and move them over */ + /* and then make the RRSIG type smaller */ + if((rrsig=az_domain_rrset(node, LDNS_RR_TYPE_RRSIG)) + != NULL) { + if(!rrset_moveover_rrsigs(node, rr_type, + rrset, rrsig)) + return 0; + } + } + } + return 1; +} + +/** insert RR into zone, ignore duplicates */ +static int +az_insert_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len, + size_t dname_len, int* duplicate) +{ + struct auth_data* node; + uint8_t* dname = rr; + uint16_t rr_type = sldns_wirerr_get_type(rr, rr_len, dname_len); + uint16_t rr_class = sldns_wirerr_get_class(rr, rr_len, dname_len); + uint32_t rr_ttl = sldns_wirerr_get_ttl(rr, rr_len, dname_len); + size_t rdatalen = ((size_t)sldns_wirerr_get_rdatalen(rr, rr_len, + dname_len))+2; + /* rdata points to rdata prefixed with uint16 rdatalength */ + uint8_t* rdata = sldns_wirerr_get_rdatawl(rr, rr_len, dname_len); + + if(rr_class != z->dclass) { + log_err("wrong class for RR"); + return 0; + } + if(!(node=az_domain_find_or_create(z, dname, dname_len))) { + log_err("cannot create domain"); + return 0; + } + if(!az_domain_add_rr(node, rr_type, rr_ttl, rdata, rdatalen, + duplicate)) { + log_err("cannot add RR to domain"); + return 0; + } + return 1; +} + +/** Remove rr from node, ignores nonexisting RRs, + * rdata points to buffer with rdatalen octets, starts with 2bytelength. */ +static int +az_domain_remove_rr(struct auth_data* node, uint16_t rr_type, + uint8_t* rdata, size_t rdatalen, int* nonexist) +{ + struct auth_rrset* rrset; + size_t index = 0; + + /* find the plain RR of the given type */ + if((rrset=az_domain_rrset(node, rr_type))!= NULL) { + if(az_rrset_find_rr(rrset->data, rdata, rdatalen, &index)) { + if(rrset->data->count == 1 && + rrset->data->rrsig_count == 0) { + /* last RR, delete the rrset */ + domain_remove_rrset(node, rr_type); + } else if(rrset->data->count == 1 && + rrset->data->rrsig_count != 0) { + /* move RRSIGs to the RRSIG rrset, or + * this one becomes that RRset */ + struct auth_rrset* rrsigset = az_domain_rrset( + node, LDNS_RR_TYPE_RRSIG); + if(rrsigset) { + /* move left over rrsigs to the + * existing rrset of type RRSIG */ + rrsigs_copy_from_rrset_to_rrsigset( + rrset, rrsigset); + /* and then delete the rrset */ + domain_remove_rrset(node, rr_type); + } else { + /* no rrset of type RRSIG, this + * set is now of that type, + * just remove the rr */ + if(!rrset_remove_rr(rrset, index)) + return 0; + rrset->type = LDNS_RR_TYPE_RRSIG; + rrset->data->count = rrset->data->rrsig_count; + rrset->data->rrsig_count = 0; + } + } else { + /* remove the RR from the rrset */ + if(!rrset_remove_rr(rrset, index)) + return 0; + } + return 1; + } + /* rr not found in rrset */ + } + + /* is it a type RRSIG, look under the covered type */ + if(rr_type == LDNS_RR_TYPE_RRSIG) { + uint16_t ctype = rrsig_rdata_get_type_covered(rdata, rdatalen); + if((rrset=az_domain_rrset(node, ctype))!= NULL) { + if(az_rrset_find_rrsig(rrset->data, rdata, rdatalen, + &index)) { + /* rrsig should have d->count > 0, be + * over some rr of that type */ + /* remove the rrsig from the rrsigs list of the + * rrset */ + if(!rrset_remove_rr(rrset, index)) + return 0; + return 1; + } + } + /* also RRSIG not found */ + } + + /* nothing found to delete */ + if(nonexist) *nonexist = 1; + return 1; +} + +/** remove RR from zone, ignore if it does not exist, false on alloc failure*/ +static int +az_remove_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len, + size_t dname_len, int* nonexist) +{ + struct auth_data* node; + uint8_t* dname = rr; + uint16_t rr_type = sldns_wirerr_get_type(rr, rr_len, dname_len); + uint16_t rr_class = sldns_wirerr_get_class(rr, rr_len, dname_len); + size_t rdatalen = ((size_t)sldns_wirerr_get_rdatalen(rr, rr_len, + dname_len))+2; + /* rdata points to rdata prefixed with uint16 rdatalength */ + uint8_t* rdata = sldns_wirerr_get_rdatawl(rr, rr_len, dname_len); + + if(rr_class != z->dclass) { + log_err("wrong class for RR"); + /* really also a nonexisting entry, because no records + * of that class in the zone, but return an error because + * getting records of the wrong class is a failure of the + * zone transfer */ + return 0; + } + node = az_find_name(z, dname, dname_len); + if(!node) { + /* node with that name does not exist */ + /* nonexisting entry, because no such name */ + *nonexist = 1; + return 1; + } + if(!az_domain_remove_rr(node, rr_type, rdata, rdatalen, nonexist)) { + /* alloc failure or so */ + return 0; + } + /* remove the node, if necessary */ + /* an rrsets==NULL entry is not kept around for empty nonterminals, + * and also parent nodes are not kept around, so we just delete it */ + if(node->rrsets == NULL) { + (void)rbtree_delete(&z->data, node); + auth_data_delete(node); + } + return 1; +} + +/** decompress an RR into the buffer where it'll be an uncompressed RR + * with uncompressed dname and uncompressed rdata (dnames) */ +static int +decompress_rr_into_buffer(struct sldns_buffer* buf, uint8_t* pkt, + size_t pktlen, uint8_t* dname, uint16_t rr_type, uint16_t rr_class, + uint32_t rr_ttl, uint8_t* rr_data, uint16_t rr_rdlen) +{ + sldns_buffer pktbuf; + size_t dname_len = 0; + size_t rdlenpos; + size_t rdlen; + uint8_t* rd; + const sldns_rr_descriptor* desc; + sldns_buffer_init_frm_data(&pktbuf, pkt, pktlen); + sldns_buffer_clear(buf); + + /* decompress dname */ + sldns_buffer_set_position(&pktbuf, + (size_t)(dname - sldns_buffer_current(&pktbuf))); + dname_len = pkt_dname_len(&pktbuf); + if(dname_len == 0) return 0; /* parse fail on dname */ + if(!sldns_buffer_available(buf, dname_len)) return 0; + dname_pkt_copy(&pktbuf, sldns_buffer_current(buf), dname); + sldns_buffer_skip(buf, (ssize_t)dname_len); + + /* type, class, ttl and rdatalength fields */ + if(!sldns_buffer_available(buf, 10)) return 0; + sldns_buffer_write_u16(buf, rr_type); + sldns_buffer_write_u16(buf, rr_class); + sldns_buffer_write_u32(buf, rr_ttl); + rdlenpos = sldns_buffer_position(buf); + sldns_buffer_write_u16(buf, 0); /* rd length position */ + + /* decompress rdata */ + desc = sldns_rr_descript(rr_type); + rd = rr_data; + rdlen = rr_rdlen; + if(rdlen > 0 && desc && desc->_dname_count > 0) { + int count = (int)desc->_dname_count; + int rdf = 0; + size_t len; /* how much rdata to plain copy */ + size_t uncompressed_len, compressed_len; + size_t oldpos; + /* decompress dnames. */ + while(rdlen > 0 && count) { + switch(desc->_wireformat[rdf]) { + case LDNS_RDF_TYPE_DNAME: + sldns_buffer_set_position(&pktbuf, + (size_t)(rd - + sldns_buffer_begin(&pktbuf))); + oldpos = sldns_buffer_position(&pktbuf); + /* moves pktbuf to right after the + * compressed dname, and returns uncompressed + * dname length */ + uncompressed_len = pkt_dname_len(&pktbuf); + if(!uncompressed_len) + return 0; /* parse error in dname */ + if(!sldns_buffer_available(buf, + uncompressed_len)) + /* dname too long for buffer */ + return 0; + dname_pkt_copy(&pktbuf, + sldns_buffer_current(buf), rd); + sldns_buffer_skip(buf, (ssize_t)uncompressed_len); + compressed_len = sldns_buffer_position( + &pktbuf) - oldpos; + rd += compressed_len; + rdlen -= compressed_len; + count--; + len = 0; + break; + case LDNS_RDF_TYPE_STR: + len = rd[0] + 1; + break; + default: + len = get_rdf_size(desc->_wireformat[rdf]); + break; + } + if(len) { + if(!sldns_buffer_available(buf, len)) + return 0; /* too long for buffer */ + sldns_buffer_write(buf, rd, len); + rd += len; + rdlen -= len; + } + rdf++; + } + } + /* copy remaining data */ + if(rdlen > 0) { + if(!sldns_buffer_available(buf, rdlen)) return 0; + sldns_buffer_write(buf, rd, rdlen); + } + /* fixup rdlength */ + sldns_buffer_write_u16_at(buf, rdlenpos, + sldns_buffer_position(buf)-rdlenpos-2); + sldns_buffer_flip(buf); + return 1; +} + +/** insert RR into zone, from packet, decompress RR, + * if duplicate is nonNULL set the flag but otherwise ignore duplicates */ +static int +az_insert_rr_decompress(struct auth_zone* z, uint8_t* pkt, size_t pktlen, + struct sldns_buffer* scratch_buffer, uint8_t* dname, uint16_t rr_type, + uint16_t rr_class, uint32_t rr_ttl, uint8_t* rr_data, + uint16_t rr_rdlen, int* duplicate) +{ + uint8_t* rr; + size_t rr_len; + size_t dname_len; + if(!decompress_rr_into_buffer(scratch_buffer, pkt, pktlen, dname, + rr_type, rr_class, rr_ttl, rr_data, rr_rdlen)) { + log_err("could not decompress RR"); + return 0; + } + rr = sldns_buffer_begin(scratch_buffer); + rr_len = sldns_buffer_limit(scratch_buffer); + dname_len = dname_valid(rr, rr_len); + return az_insert_rr(z, rr, rr_len, dname_len, duplicate); +} + +/** remove RR from zone, from packet, decompress RR, + * if nonexist is nonNULL set the flag but otherwise ignore nonexisting entries*/ +static int +az_remove_rr_decompress(struct auth_zone* z, uint8_t* pkt, size_t pktlen, + struct sldns_buffer* scratch_buffer, uint8_t* dname, uint16_t rr_type, + uint16_t rr_class, uint32_t rr_ttl, uint8_t* rr_data, + uint16_t rr_rdlen, int* nonexist) +{ + uint8_t* rr; + size_t rr_len; + size_t dname_len; + if(!decompress_rr_into_buffer(scratch_buffer, pkt, pktlen, dname, + rr_type, rr_class, rr_ttl, rr_data, rr_rdlen)) { + log_err("could not decompress RR"); + return 0; + } + rr = sldns_buffer_begin(scratch_buffer); + rr_len = sldns_buffer_limit(scratch_buffer); + dname_len = dname_valid(rr, rr_len); + return az_remove_rr(z, rr, rr_len, dname_len, nonexist); +} + +/** + * Parse zonefile + * @param z: zone to read in. + * @param in: file to read from (just opened). + * @param rr: buffer to use for RRs, 64k. + * passed so that recursive includes can use the same buffer and do + * not grow the stack too much. + * @param rrbuflen: sizeof rr buffer. + * @param state: parse state with $ORIGIN, $TTL and 'prev-dname' and so on, + * that is kept between includes. + * The lineno is set at 1 and then increased by the function. + * @param fname: file name. + * @param depth: recursion depth for includes + * returns false on failure, has printed an error message + */ +static int +az_parse_file(struct auth_zone* z, FILE* in, uint8_t* rr, size_t rrbuflen, + struct sldns_file_parse_state* state, char* fname, int depth) +{ + size_t rr_len, dname_len; + int status; + state->lineno = 1; + + while(!feof(in)) { + rr_len = rrbuflen; + dname_len = 0; + status = sldns_fp2wire_rr_buf(in, rr, &rr_len, &dname_len, + state); + if(status == LDNS_WIREPARSE_ERR_INCLUDE && rr_len == 0) { + /* we have $INCLUDE or $something */ + if(strncmp((char*)rr, "$INCLUDE ", 9) == 0 || + strncmp((char*)rr, "$INCLUDE\t", 9) == 0) { + FILE* inc; + int lineno_orig = state->lineno; + char* incfile = (char*)rr + 8; + if(depth > MAX_INCLUDE_DEPTH) { + log_err("%s:%d max include depth" + "exceeded", fname, state->lineno); + return 0; + } + /* skip spaces */ + while(*incfile == ' ' || *incfile == '\t') + incfile++; + incfile = strdup(incfile); + if(!incfile) { + log_err("malloc failure"); + return 0; + } + verbose(VERB_ALGO, "opening $INCLUDE %s", + incfile); + inc = fopen(incfile, "r"); + if(!inc) { + log_err("%s:%d cannot open include " + "file %s: %s", z->zonefile, + lineno_orig, incfile, + strerror(errno)); + free(incfile); + return 0; + } + /* recurse read that file now */ + if(!az_parse_file(z, inc, rr, rrbuflen, + state, incfile, depth+1)) { + log_err("%s:%d cannot parse include " + "file %s", fname, + lineno_orig, incfile); + fclose(inc); + free(incfile); + return 0; + } + fclose(inc); + verbose(VERB_ALGO, "done with $INCLUDE %s", + incfile); + free(incfile); + state->lineno = lineno_orig; + } + continue; + } + if(status != 0) { + log_err("parse error %s %d:%d: %s", fname, + state->lineno, LDNS_WIREPARSE_OFFSET(status), + sldns_get_errorstr_parse(status)); + return 0; + } + if(rr_len == 0) { + /* EMPTY line, TTL or ORIGIN */ + continue; + } + /* insert wirerr in rrbuf */ + if(!az_insert_rr(z, rr, rr_len, dname_len, NULL)) { + char buf[17]; + sldns_wire2str_type_buf(sldns_wirerr_get_type(rr, + rr_len, dname_len), buf, sizeof(buf)); + log_err("%s:%d cannot insert RR of type %s", + fname, state->lineno, buf); + return 0; + } + } + return 1; +} + +int +auth_zone_read_zonefile(struct auth_zone* z) +{ + uint8_t rr[LDNS_RR_BUF_SIZE]; + struct sldns_file_parse_state state; + FILE* in; + if(!z || !z->zonefile || z->zonefile[0]==0) + return 1; /* no file, or "", nothing to read */ + if(verbosity >= VERB_ALGO) { + char nm[255+1]; + dname_str(z->name, nm); + verbose(VERB_ALGO, "read zonefile %s for %s", z->zonefile, nm); + } + in = fopen(z->zonefile, "r"); + if(!in) { + char* n = sldns_wire2str_dname(z->name, z->namelen); + if(z->zone_is_slave && errno == ENOENT) { + /* we fetch the zone contents later, no file yet */ + verbose(VERB_ALGO, "no zonefile %s for %s", + z->zonefile, n?n:"error"); + free(n); + return 1; + } + log_err("cannot open zonefile %s for %s: %s", + z->zonefile, n?n:"error", strerror(errno)); + free(n); + return 0; + } + + /* clear the data tree */ + traverse_postorder(&z->data, auth_data_del, NULL); + rbtree_init(&z->data, &auth_data_cmp); + + memset(&state, 0, sizeof(state)); + /* default TTL to 3600 */ + state.default_ttl = 3600; + /* set $ORIGIN to the zone name */ + if(z->namelen <= sizeof(state.origin)) { + memcpy(state.origin, z->name, z->namelen); + state.origin_len = z->namelen; + } + /* parse the (toplevel) file */ + if(!az_parse_file(z, in, rr, sizeof(rr), &state, z->zonefile, 0)) { + char* n = sldns_wire2str_dname(z->name, z->namelen); + log_err("error parsing zonefile %s for %s", + z->zonefile, n?n:"error"); + free(n); + fclose(in); + return 0; + } + fclose(in); + return 1; +} + +/** write buffer to file and check return codes */ +static int +write_out(FILE* out, const char* str, size_t len) +{ + size_t r; + if(len == 0) + return 1; + r = fwrite(str, 1, len, out); + if(r == 0) { + log_err("write failed: %s", strerror(errno)); + return 0; + } else if(r < len) { + log_err("write failed: too short (disk full?)"); + return 0; + } + return 1; +} + +/** convert auth rr to string */ +static int +auth_rr_to_string(uint8_t* nm, size_t nmlen, uint16_t tp, uint16_t cl, + struct packed_rrset_data* data, size_t i, char* s, size_t buflen) +{ + int w = 0; + size_t slen = buflen, datlen; + uint8_t* dat; + if(i >= data->count) tp = LDNS_RR_TYPE_RRSIG; + dat = nm; + datlen = nmlen; + w += sldns_wire2str_dname_scan(&dat, &datlen, &s, &slen, NULL, 0); + w += sldns_str_print(&s, &slen, "\t"); + w += sldns_str_print(&s, &slen, "%lu\t", (unsigned long)data->rr_ttl[i]); + w += sldns_wire2str_class_print(&s, &slen, cl); + w += sldns_str_print(&s, &slen, "\t"); + w += sldns_wire2str_type_print(&s, &slen, tp); + w += sldns_str_print(&s, &slen, "\t"); + datlen = data->rr_len[i]-2; + dat = data->rr_data[i]+2; + w += sldns_wire2str_rdata_scan(&dat, &datlen, &s, &slen, tp, NULL, 0); + + if(tp == LDNS_RR_TYPE_DNSKEY) { + w += sldns_str_print(&s, &slen, " ;{id = %u}", + sldns_calc_keytag_raw(data->rr_data[i]+2, + data->rr_len[i]-2)); + } + w += sldns_str_print(&s, &slen, "\n"); + + if(w > (int)buflen) { + log_nametypeclass(0, "RR too long to print", nm, tp, cl); + return 0; + } + return 1; +} + +/** write rrset to file */ +static int +auth_zone_write_rrset(struct auth_zone* z, struct auth_data* node, + struct auth_rrset* r, FILE* out) +{ + size_t i, count = r->data->count + r->data->rrsig_count; + char buf[LDNS_RR_BUF_SIZE]; + for(i=0; iname, node->namelen, r->type, + z->dclass, r->data, i, buf, sizeof(buf))) { + verbose(VERB_ALGO, "failed to rr2str rr %d", (int)i); + continue; + } + if(!write_out(out, buf, strlen(buf))) + return 0; + } + return 1; +} + +/** write domain to file */ +static int +auth_zone_write_domain(struct auth_zone* z, struct auth_data* n, FILE* out) +{ + struct auth_rrset* r; + /* if this is zone apex, write SOA first */ + if(z->namelen == n->namelen) { + struct auth_rrset* soa = az_domain_rrset(n, LDNS_RR_TYPE_SOA); + if(soa) { + if(!auth_zone_write_rrset(z, n, soa, out)) + return 0; + } + } + /* write all the RRsets for this domain */ + for(r = n->rrsets; r; r = r->next) { + if(z->namelen == n->namelen && + r->type == LDNS_RR_TYPE_SOA) + continue; /* skip SOA here */ + if(!auth_zone_write_rrset(z, n, r, out)) + return 0; + } + return 1; +} + +int auth_zone_write_file(struct auth_zone* z, const char* fname) +{ + FILE* out; + struct auth_data* n; + out = fopen(fname, "w"); + if(!out) { + log_err("could not open %s: %s", fname, strerror(errno)); + return 0; + } + RBTREE_FOR(n, struct auth_data*, &z->data) { + if(!auth_zone_write_domain(z, n, out)) { + log_err("could not write domain to %s", fname); + fclose(out); + return 0; + } + } + fclose(out); + return 1; +} + +/** read all auth zones from file (if they have) */ +static int +auth_zones_read_zones(struct auth_zones* az) +{ + struct auth_zone* z; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(z, struct auth_zone*, &az->ztree) { + lock_rw_wrlock(&z->lock); + if(!auth_zone_read_zonefile(z)) { + lock_rw_unlock(&z->lock); + lock_rw_unlock(&az->lock); + return 0; + } + lock_rw_unlock(&z->lock); + } + lock_rw_unlock(&az->lock); + return 1; +} + +/** find serial number of zone or false if none */ +int +auth_zone_get_serial(struct auth_zone* z, uint32_t* serial) +{ + struct auth_data* apex; + struct auth_rrset* soa; + struct packed_rrset_data* d; + apex = az_find_name(z, z->name, z->namelen); + if(!apex) return 0; + soa = az_domain_rrset(apex, LDNS_RR_TYPE_SOA); + if(!soa || soa->data->count==0) + return 0; /* no RRset or no RRs in rrset */ + if(soa->data->rr_len[0] < 2+4*5) return 0; /* SOA too short */ + d = soa->data; + *serial = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-20)); + return 1; +} + +/** Find auth_zone SOA and populate the values in xfr(soa values). */ +static int +xfr_find_soa(struct auth_zone* z, struct auth_xfer* xfr) +{ + struct auth_data* apex; + struct auth_rrset* soa; + struct packed_rrset_data* d; + apex = az_find_name(z, z->name, z->namelen); + if(!apex) return 0; + soa = az_domain_rrset(apex, LDNS_RR_TYPE_SOA); + if(!soa || soa->data->count==0) + return 0; /* no RRset or no RRs in rrset */ + if(soa->data->rr_len[0] < 2+4*5) return 0; /* SOA too short */ + /* SOA record ends with serial, refresh, retry, expiry, minimum, + * as 4 byte fields */ + d = soa->data; + xfr->have_zone = 1; + xfr->serial = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-20)); + xfr->refresh = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-16)); + xfr->retry = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-12)); + xfr->expiry = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-8)); + /* soa minimum at d->rr_len[0]-4 */ + return 1; +} + +/** + * Setup auth_xfer zone + * This populates the have_zone, soa values, and so on times. + * Doesn't do network traffic yet, can set option flags. + * @param z: locked by caller, and modified for setup + * @param x: locked by caller, and modified. + * @return false on failure. + */ +static int +auth_xfer_setup(struct auth_zone* z, struct auth_xfer* x) +{ + /* for a zone without zone transfers, x==NULL, so skip them, + * i.e. the zone config is fixed with no masters or urls */ + if(!z || !x) return 1; + if(!xfr_find_soa(z, x)) { + return 1; + } + /* nothing for probe, nextprobe and transfer tasks */ + return 1; +} + +/** + * Setup all zones + * @param az: auth zones structure + * @return false on failure. + */ +static int +auth_zones_setup_zones(struct auth_zones* az) +{ + struct auth_zone* z; + struct auth_xfer* x; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(z, struct auth_zone*, &az->ztree) { + lock_rw_wrlock(&z->lock); + x = auth_xfer_find(az, z->name, z->namelen, z->dclass); + if(x) { + lock_basic_lock(&x->lock); + } + if(!auth_xfer_setup(z, x)) { + if(x) { + lock_basic_unlock(&x->lock); + } + lock_rw_unlock(&z->lock); + lock_rw_unlock(&az->lock); + return 0; + } + if(x) { + lock_basic_unlock(&x->lock); + } + lock_rw_unlock(&z->lock); + } + lock_rw_unlock(&az->lock); + return 1; +} + +/** set config items and create zones */ +static int +auth_zones_cfg(struct auth_zones* az, struct config_auth* c) +{ + struct auth_zone* z; + struct auth_xfer* x = NULL; + + /* create zone */ + lock_rw_wrlock(&az->lock); + if(!(z=auth_zones_find_or_add_zone(az, c->name))) { + lock_rw_unlock(&az->lock); + return 0; + } + if(c->masters || c->urls) { + if(!(x=auth_zones_find_or_add_xfer(az, z))) { + lock_rw_unlock(&az->lock); + lock_rw_unlock(&z->lock); + return 0; + } + } + if(c->for_downstream) + az->have_downstream = 1; + lock_rw_unlock(&az->lock); + + /* set options */ + z->zone_deleted = 0; + if(!auth_zone_set_zonefile(z, c->zonefile)) { + if(x) { + lock_basic_unlock(&x->lock); + } + lock_rw_unlock(&z->lock); + return 0; + } + z->for_downstream = c->for_downstream; + z->for_upstream = c->for_upstream; + z->fallback_enabled = c->fallback_enabled; + + /* xfer zone */ + if(x) { + z->zone_is_slave = 1; + /* set options on xfer zone */ + if(!xfer_set_masters(&x->task_probe->masters, c, 0)) { + lock_basic_unlock(&x->lock); + lock_rw_unlock(&z->lock); + return 0; + } + if(!xfer_set_masters(&x->task_transfer->masters, c, 1)) { + lock_basic_unlock(&x->lock); + lock_rw_unlock(&z->lock); + return 0; + } + lock_basic_unlock(&x->lock); + } + + lock_rw_unlock(&z->lock); + return 1; +} + +/** set all auth zones deleted, then in auth_zones_cfg, it marks them + * as nondeleted (if they are still in the config), and then later + * we can find deleted zones */ +static void +az_setall_deleted(struct auth_zones* az) +{ + struct auth_zone* z; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(z, struct auth_zone*, &az->ztree) { + lock_rw_wrlock(&z->lock); + z->zone_deleted = 1; + lock_rw_unlock(&z->lock); + } + lock_rw_unlock(&az->lock); +} + +/** find zones that are marked deleted and delete them. + * This is called from apply_cfg, and there are no threads and no + * workers, so the xfr can just be deleted. */ +static void +az_delete_deleted_zones(struct auth_zones* az) +{ + struct auth_zone* z; + struct auth_zone* delete_list = NULL, *next; + struct auth_xfer* xfr; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(z, struct auth_zone*, &az->ztree) { + lock_rw_wrlock(&z->lock); + if(z->zone_deleted) { + /* we cannot alter the rbtree right now, but + * we can put it on a linked list and then + * delete it */ + z->delete_next = delete_list; + delete_list = z; + } + lock_rw_unlock(&z->lock); + } + /* now we are out of the tree loop and we can loop and delete + * the zones */ + z = delete_list; + while(z) { + next = z->delete_next; + xfr = auth_xfer_find(az, z->name, z->namelen, z->dclass); + if(xfr) { + (void)rbtree_delete(&az->xtree, &xfr->node); + auth_xfer_delete(xfr); + } + (void)rbtree_delete(&az->ztree, &z->node); + auth_zone_delete(z); + z = next; + } + lock_rw_unlock(&az->lock); +} + +int auth_zones_apply_cfg(struct auth_zones* az, struct config_file* cfg, + int setup) +{ + struct config_auth* p; + az_setall_deleted(az); + for(p = cfg->auths; p; p = p->next) { + if(!p->name || p->name[0] == 0) { + log_warn("auth-zone without a name, skipped"); + continue; + } + if(!auth_zones_cfg(az, p)) { + log_err("cannot config auth zone %s", p->name); + return 0; + } + } + az_delete_deleted_zones(az); + if(!auth_zones_read_zones(az)) + return 0; + if(setup) { + if(!auth_zones_setup_zones(az)) + return 0; + } + return 1; +} + +/** delete chunks + * @param at: transfer structure with chunks list. The chunks and their + * data are freed. + */ +void +auth_chunks_delete(struct auth_transfer* at) +{ + if(at->chunks_first) { + struct auth_chunk* c, *cn; + c = at->chunks_first; + while(c) { + cn = c->next; + free(c->data); + free(c); + c = cn; + } + } + at->chunks_first = NULL; + at->chunks_last = NULL; +} + +/** free master addr list */ +static void +auth_free_master_addrs(struct auth_addr* list) +{ + struct auth_addr *n; + while(list) { + n = list->next; + free(list); + list = n; + } +} + +/** free the masters list */ +static void +auth_free_masters(struct auth_master* list) +{ + struct auth_master* n; + while(list) { + n = list->next; + auth_free_master_addrs(list->list); + free(list->host); + free(list->file); + free(list); + list = n; + } +} + +/** delete auth xfer structure + * @param xfr: delete this xfer and its tasks. + */ +void +auth_xfer_delete(struct auth_xfer* xfr) +{ + if(!xfr) return; + lock_basic_destroy(&xfr->lock); + free(xfr->name); + if(xfr->task_nextprobe) { + comm_timer_delete(xfr->task_nextprobe->timer); + free(xfr->task_nextprobe); + } + if(xfr->task_probe) { + auth_free_masters(xfr->task_probe->masters); + comm_point_delete(xfr->task_probe->cp); + free(xfr->task_probe); + } + if(xfr->task_transfer) { + auth_free_masters(xfr->task_transfer->masters); + comm_point_delete(xfr->task_transfer->cp); + if(xfr->task_transfer->chunks_first) { + auth_chunks_delete(xfr->task_transfer); + } + free(xfr->task_transfer); + } + auth_free_masters(xfr->allow_notify_list); + free(xfr); +} + +/** helper traverse to delete zones */ +static void +auth_zone_del(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct auth_zone* z = (struct auth_zone*)n->key; + auth_zone_delete(z); +} + +/** helper traverse to delete xfer zones */ +static void +auth_xfer_del(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct auth_xfer* z = (struct auth_xfer*)n->key; + auth_xfer_delete(z); +} + +void auth_zones_delete(struct auth_zones* az) +{ + if(!az) return; + lock_rw_destroy(&az->lock); + traverse_postorder(&az->ztree, auth_zone_del, NULL); + traverse_postorder(&az->xtree, auth_xfer_del, NULL); + free(az); +} + +/** true if domain has only nsec3 */ +static int +domain_has_only_nsec3(struct auth_data* n) +{ + struct auth_rrset* rrset = n->rrsets; + int nsec3_seen = 0; + while(rrset) { + if(rrset->type == LDNS_RR_TYPE_NSEC3) { + nsec3_seen = 1; + } else if(rrset->type != LDNS_RR_TYPE_RRSIG) { + return 0; + } + rrset = rrset->next; + } + return nsec3_seen; +} + +/** see if the domain has a wildcard child '*.domain' */ +static struct auth_data* +az_find_wildcard_domain(struct auth_zone* z, uint8_t* nm, size_t nmlen) +{ + uint8_t wc[LDNS_MAX_DOMAINLEN]; + if(nmlen+2 > sizeof(wc)) + return NULL; /* result would be too long */ + wc[0] = 1; /* length of wildcard label */ + wc[1] = (uint8_t)'*'; /* wildcard label */ + memmove(wc+2, nm, nmlen); + return az_find_name(z, wc, nmlen+2); +} + +/** find wildcard between qname and cename */ +static struct auth_data* +az_find_wildcard(struct auth_zone* z, struct query_info* qinfo, + struct auth_data* ce) +{ + uint8_t* nm = qinfo->qname; + size_t nmlen = qinfo->qname_len; + struct auth_data* node; + if(!dname_subdomain_c(nm, z->name)) + return NULL; /* out of zone */ + while((node=az_find_wildcard_domain(z, nm, nmlen))==NULL) { + /* see if we can go up to find the wildcard */ + if(nmlen == z->namelen) + return NULL; /* top of zone reached */ + if(ce && nmlen == ce->namelen) + return NULL; /* ce reached */ + if(dname_is_root(nm)) + return NULL; /* cannot go up */ + dname_remove_label(&nm, &nmlen); + } + return node; +} + +/** domain is not exact, find first candidate ce (name that matches + * a part of qname) in tree */ +static struct auth_data* +az_find_candidate_ce(struct auth_zone* z, struct query_info* qinfo, + struct auth_data* n) +{ + uint8_t* nm; + size_t nmlen; + if(n) { + nm = dname_get_shared_topdomain(qinfo->qname, n->name); + } else { + nm = qinfo->qname; + } + dname_count_size_labels(nm, &nmlen); + n = az_find_name(z, nm, nmlen); + /* delete labels and go up on name */ + while(!n) { + if(dname_is_root(nm)) + return NULL; /* cannot go up */ + dname_remove_label(&nm, &nmlen); + n = az_find_name(z, nm, nmlen); + } + return n; +} + +/** go up the auth tree to next existing name. */ +static struct auth_data* +az_domain_go_up(struct auth_zone* z, struct auth_data* n) +{ + uint8_t* nm = n->name; + size_t nmlen = n->namelen; + while(!dname_is_root(nm)) { + dname_remove_label(&nm, &nmlen); + if((n=az_find_name(z, nm, nmlen)) != NULL) + return n; + } + return NULL; +} + +/** Find the closest encloser, an name that exists and is above the + * qname. + * return true if the node (param node) is existing, nonobscured and + * can be used to generate answers from. It is then also node_exact. + * returns false if the node is not good enough (or it wasn't node_exact) + * in this case the ce can be filled. + * if ce is NULL, no ce exists, and likely the zone is completely empty, + * not even with a zone apex. + * if ce is nonNULL it is the closest enclosing upper name (that exists + * itself for answer purposes). That name may have DNAME, NS or wildcard + * rrset is the closest DNAME or NS rrset that was found. + */ +static int +az_find_ce(struct auth_zone* z, struct query_info* qinfo, + struct auth_data* node, int node_exact, struct auth_data** ce, + struct auth_rrset** rrset) +{ + struct auth_data* n = node; + *ce = NULL; + *rrset = NULL; + if(!node_exact) { + /* if not exact, lookup closest exact match */ + n = az_find_candidate_ce(z, qinfo, n); + } else { + /* if exact, the node itself is the first candidate ce */ + *ce = n; + } + + /* no direct answer from nsec3-only domains */ + if(n && domain_has_only_nsec3(n)) { + node_exact = 0; + *ce = NULL; + } + + /* with exact matches, walk up the labels until we find the + * delegation, or DNAME or zone end */ + while(n) { + /* see if the current candidate has issues */ + /* not zone apex and has type NS */ + if(n->namelen != z->namelen && + (*rrset=az_domain_rrset(n, LDNS_RR_TYPE_NS)) && + /* delegate here, but DS at exact the dp has notype */ + (qinfo->qtype != LDNS_RR_TYPE_DS || + n->namelen != qinfo->qname_len)) { + /* referral */ + /* this is ce and the lowernode is nonexisting */ + *ce = n; + return 0; + } + /* not equal to qname and has type DNAME */ + if(n->namelen != qinfo->qname_len && + (*rrset=az_domain_rrset(n, LDNS_RR_TYPE_DNAME))) { + /* this is ce and the lowernode is nonexisting */ + *ce = n; + return 0; + } + + if(*ce == NULL && !domain_has_only_nsec3(n)) { + /* if not found yet, this exact name must be + * our lowest match (but not nsec3onlydomain) */ + *ce = n; + } + + /* walk up the tree by removing labels from name and lookup */ + n = az_domain_go_up(z, n); + } + /* found no problems, if it was an exact node, it is fine to use */ + return node_exact; +} + +/** add additional A/AAAA from domain names in rrset rdata (+offset) + * offset is number of bytes in rdata where the dname is located. */ +static int +az_add_additionals_from(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_rrset* rrset, size_t offset) +{ + struct packed_rrset_data* d = rrset->data; + size_t i; + if(!d) return 0; + for(i=0; icount; i++) { + size_t dlen; + struct auth_data* domain; + struct auth_rrset* ref; + if(d->rr_len[i] < 2+offset) + continue; /* too short */ + if(!(dlen = dname_valid(d->rr_data[i]+2+offset, + d->rr_len[i]-2-offset))) + continue; /* malformed */ + domain = az_find_name(z, d->rr_data[i]+2+offset, dlen); + if(!domain) + continue; + if((ref=az_domain_rrset(domain, LDNS_RR_TYPE_A)) != NULL) { + if(!msg_add_rrset_ar(z, region, msg, domain, ref)) + return 0; + } + if((ref=az_domain_rrset(domain, LDNS_RR_TYPE_AAAA)) != NULL) { + if(!msg_add_rrset_ar(z, region, msg, domain, ref)) + return 0; + } + } + return 1; +} + +/** add negative SOA record (with negative TTL) */ +static int +az_add_negative_soa(struct auth_zone* z, struct regional* region, + struct dns_msg* msg) +{ + uint32_t minimum; + struct packed_rrset_data* d; + struct auth_rrset* soa; + struct auth_data* apex = az_find_name(z, z->name, z->namelen); + if(!apex) return 0; + soa = az_domain_rrset(apex, LDNS_RR_TYPE_SOA); + if(!soa) return 0; + /* must be first to put in message; we want to fix the TTL with + * one RRset here, otherwise we'd need to loop over the RRs to get + * the resulting lower TTL */ + log_assert(msg->rep->rrset_count == 0); + if(!msg_add_rrset_ns(z, region, msg, apex, soa)) return 0; + /* fixup TTL */ + d = (struct packed_rrset_data*)msg->rep->rrsets[msg->rep->rrset_count-1]->entry.data; + /* last 4 bytes are minimum ttl in network format */ + if(d->count == 0) return 0; + if(d->rr_len[0] < 2+4) return 0; + minimum = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-4)); + d->ttl = (time_t)minimum; + d->rr_ttl[0] = (time_t)minimum; + msg->rep->ttl = get_rrset_ttl(msg->rep->rrsets[0]); + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); + return 1; +} + +/** See if the query goes to empty nonterminal (that has no auth_data, + * but there are nodes underneath. We already checked that there are + * not NS, or DNAME above, so that we only need to check if some node + * exists below (with nonempty rr list), return true if emptynonterminal */ +static int +az_empty_nonterminal(struct auth_zone* z, struct query_info* qinfo, + struct auth_data* node) +{ + struct auth_data* next; + if(!node) { + /* no smaller was found, use first (smallest) node as the + * next one */ + next = (struct auth_data*)rbtree_first(&z->data); + } else { + next = (struct auth_data*)rbtree_next(&node->node); + } + while(next && (rbnode_type*)next != RBTREE_NULL && next->rrsets == NULL) { + /* the next name has empty rrsets, is an empty nonterminal + * itself, see if there exists something below it */ + next = (struct auth_data*)rbtree_next(&node->node); + } + if((rbnode_type*)next == RBTREE_NULL || !next) { + /* there is no next node, so something below it cannot + * exist */ + return 0; + } + /* a next node exists, if there was something below the query, + * this node has to be it. See if it is below the query name */ + if(dname_strict_subdomain_c(next->name, qinfo->qname)) + return 1; + return 0; +} + +/** create synth cname target name in buffer, or fail if too long */ +static size_t +synth_cname_buf(uint8_t* qname, size_t qname_len, size_t dname_len, + uint8_t* dtarg, size_t dtarglen, uint8_t* buf, size_t buflen) +{ + size_t newlen = qname_len + dtarglen - dname_len; + if(newlen > buflen) { + /* YXDOMAIN error */ + return 0; + } + /* new name is concatenation of qname front (without DNAME owner) + * and DNAME target name */ + memcpy(buf, qname, qname_len-dname_len); + memmove(buf+(qname_len-dname_len), dtarg, dtarglen); + return newlen; +} + +/** create synthetic CNAME rrset for in a DNAME answer in region, + * false on alloc failure, cname==NULL when name too long. */ +static int +create_synth_cname(uint8_t* qname, size_t qname_len, struct regional* region, + struct auth_data* node, struct auth_rrset* dname, uint16_t dclass, + struct ub_packed_rrset_key** cname) +{ + uint8_t buf[LDNS_MAX_DOMAINLEN]; + uint8_t* dtarg; + size_t dtarglen, newlen; + struct packed_rrset_data* d; + + /* get DNAME target name */ + if(dname->data->count < 1) return 0; + if(dname->data->rr_len[0] < 3) return 0; /* at least rdatalen +1 */ + dtarg = dname->data->rr_data[0]+2; + dtarglen = dname->data->rr_len[0]-2; + if(sldns_read_uint16(dname->data->rr_data[0]) != dtarglen) + return 0; /* rdatalen in DNAME rdata is malformed */ + if(dname_valid(dtarg, dtarglen) != dtarglen) + return 0; /* DNAME RR has malformed rdata */ + + /* synthesize a CNAME */ + newlen = synth_cname_buf(qname, qname_len, node->namelen, + dtarg, dtarglen, buf, sizeof(buf)); + if(newlen == 0) { + /* YXDOMAIN error */ + *cname = NULL; + return 1; + } + *cname = (struct ub_packed_rrset_key*)regional_alloc(region, + sizeof(struct ub_packed_rrset_key)); + if(!*cname) + return 0; /* out of memory */ + memset(&(*cname)->entry, 0, sizeof((*cname)->entry)); + (*cname)->entry.key = (*cname); + (*cname)->rk.type = htons(LDNS_RR_TYPE_CNAME); + (*cname)->rk.rrset_class = htons(dclass); + (*cname)->rk.flags = 0; + (*cname)->rk.dname = regional_alloc_init(region, qname, qname_len); + if(!(*cname)->rk.dname) + return 0; /* out of memory */ + (*cname)->rk.dname_len = qname_len; + (*cname)->entry.hash = rrset_key_hash(&(*cname)->rk); + d = (struct packed_rrset_data*)regional_alloc_zero(region, + sizeof(struct packed_rrset_data) + sizeof(size_t) + + sizeof(uint8_t*) + sizeof(time_t) + sizeof(uint16_t) + + newlen); + if(!d) + return 0; /* out of memory */ + (*cname)->entry.data = d; + d->ttl = 0; /* 0 for synthesized CNAME TTL */ + d->count = 1; + d->rrsig_count = 0; + d->trust = rrset_trust_ans_noAA; + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + d->rr_len[0] = newlen + sizeof(uint16_t); + packed_rrset_ptr_fixup(d); + d->rr_ttl[0] = d->ttl; + sldns_write_uint16(d->rr_data[0], newlen); + memmove(d->rr_data[0] + sizeof(uint16_t), buf, newlen); + return 1; +} + +/** add a synthesized CNAME to the answer section */ +static int +add_synth_cname(struct auth_zone* z, uint8_t* qname, size_t qname_len, + struct regional* region, struct dns_msg* msg, struct auth_data* dname, + struct auth_rrset* rrset) +{ + struct ub_packed_rrset_key* cname; + /* synthesize a CNAME */ + if(!create_synth_cname(qname, qname_len, region, dname, rrset, + z->dclass, &cname)) { + /* out of memory */ + return 0; + } + if(!cname) { + /* cname cannot be create because of YXDOMAIN */ + msg->rep->flags |= LDNS_RCODE_YXDOMAIN; + return 1; + } + /* add cname to message */ + if(!msg_grow_array(region, msg)) + return 0; + msg->rep->rrsets[msg->rep->rrset_count] = cname; + msg->rep->rrset_count++; + msg->rep->an_numrrsets++; + msg_ttl(msg); + return 1; +} + +/** Change a dname to a different one, for wildcard namechange */ +static void +az_change_dnames(struct dns_msg* msg, uint8_t* oldname, uint8_t* newname, + size_t newlen, int an_only) +{ + size_t i; + size_t start = 0, end = msg->rep->rrset_count; + if(!an_only) start = msg->rep->an_numrrsets; + if(an_only) end = msg->rep->an_numrrsets; + for(i=start; irep->rrsets[i]->rk.dname, oldname) + == 0) { + msg->rep->rrsets[i]->rk.dname = newname; + msg->rep->rrsets[i]->rk.dname_len = newlen; + } + } +} + +/** find NSEC record covering the query */ +static struct auth_rrset* +az_find_nsec_cover(struct auth_zone* z, struct auth_data** node) +{ + uint8_t* nm = (*node)->name; + size_t nmlen = (*node)->namelen; + struct auth_rrset* rrset; + /* find the NSEC for the smallest-or-equal node */ + /* if node == NULL, we did not find a smaller name. But the zone + * name is the smallest name and should have an NSEC. So there is + * no NSEC to return (for a properly signed zone) */ + /* for empty nonterminals, the auth-data node should not exist, + * and thus we don't need to go rbtree_previous here to find + * a domain with an NSEC record */ + /* but there could be glue, and if this is node, then it has no NSEC. + * Go up to find nonglue (previous) NSEC-holding nodes */ + while((rrset=az_domain_rrset(*node, LDNS_RR_TYPE_NSEC)) == NULL) { + if(dname_is_root(nm)) return NULL; + if(nmlen == z->namelen) return NULL; + dname_remove_label(&nm, &nmlen); + /* adjust *node for the nsec rrset to find in */ + *node = az_find_name(z, nm, nmlen); + } + return rrset; +} + +/** Find NSEC and add for wildcard denial */ +static int +az_nsec_wildcard_denial(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, uint8_t* cenm, size_t cenmlen) +{ + struct query_info qinfo; + int node_exact; + struct auth_data* node; + struct auth_rrset* nsec; + uint8_t wc[LDNS_MAX_DOMAINLEN]; + if(cenmlen+2 > sizeof(wc)) + return 0; /* result would be too long */ + wc[0] = 1; /* length of wildcard label */ + wc[1] = (uint8_t)'*'; /* wildcard label */ + memmove(wc+2, cenm, cenmlen); + + /* we have '*.ce' in wc wildcard name buffer */ + /* get nsec cover for that */ + qinfo.qname = wc; + qinfo.qname_len = cenmlen+2; + qinfo.qtype = 0; + qinfo.qclass = 0; + az_find_domain(z, &qinfo, &node_exact, &node); + if((nsec=az_find_nsec_cover(z, &node)) != NULL) { + if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0; + } + return 1; +} + +/** Find the NSEC3PARAM rrset (if any) and if true you have the parameters */ +static int +az_nsec3_param(struct auth_zone* z, int* algo, size_t* iter, uint8_t** salt, + size_t* saltlen) +{ + struct auth_data* apex; + struct auth_rrset* param; + size_t i; + apex = az_find_name(z, z->name, z->namelen); + if(!apex) return 0; + param = az_domain_rrset(apex, LDNS_RR_TYPE_NSEC3PARAM); + if(!param || param->data->count==0) + return 0; /* no RRset or no RRs in rrset */ + /* find out which NSEC3PARAM RR has supported parameters */ + /* skip unknown flags (dynamic signer is recalculating nsec3 chain) */ + for(i=0; idata->count; i++) { + uint8_t* rdata = param->data->rr_data[i]+2; + size_t rdatalen = param->data->rr_len[i]; + if(rdatalen < 2+5) + continue; /* too short */ + if(!nsec3_hash_algo_size_supported((int)(rdata[0]))) + continue; /* unsupported algo */ + if(rdatalen < (size_t)(2+5+(size_t)rdata[4])) + continue; /* salt missing */ + if((rdata[1]&NSEC3_UNKNOWN_FLAGS)!=0) + continue; /* unknown flags */ + *algo = (int)(rdata[0]); + *iter = sldns_read_uint16(rdata+2); + *saltlen = rdata[4]; + if(*saltlen == 0) + *salt = NULL; + else *salt = rdata+5; + return 1; + } + /* no supported params */ + return 0; +} + +/** Hash a name with nsec3param into buffer, it has zone name appended. + * return length of hash */ +static size_t +az_nsec3_hash(uint8_t* buf, size_t buflen, uint8_t* nm, size_t nmlen, + int algo, size_t iter, uint8_t* salt, size_t saltlen) +{ + size_t hlen = nsec3_hash_algo_size_supported(algo); + /* buffer has domain name, nsec3hash, and 256 is for max saltlen + * (salt has 0-255 length) */ + unsigned char p[LDNS_MAX_DOMAINLEN+1+N3HASHBUFLEN+256]; + size_t i; + if(nmlen+saltlen > sizeof(p) || hlen+saltlen > sizeof(p)) + return 0; + if(hlen > buflen) + return 0; /* somehow too large for destination buffer */ + /* hashfunc(name, salt) */ + memmove(p, nm, nmlen); + query_dname_tolower(p); + memmove(p+nmlen, salt, saltlen); + (void)secalgo_nsec3_hash(algo, p, nmlen+saltlen, (unsigned char*)buf); + for(i=0; inamelen) /* approx b32 as hexb16 */ + return 0; + ret = sldns_b32_ntop_extended_hex(hash, hlen, (char*)(hashname+1), + (*hashnmlen)-1); + if(ret<1) + return 0; + hashname[0] = (uint8_t)ret; + ret++; + if((*hashnmlen) - ret < z->namelen) + return 0; + memmove(hashname+ret, z->name, z->namelen); + *hashnmlen = z->namelen+(size_t)ret; + return 1; +} + +/** Find the datanode that covers the nsec3hash-name */ +struct auth_data* +az_nsec3_findnode(struct auth_zone* z, uint8_t* hashnm, size_t hashnmlen) +{ + struct query_info qinfo; + struct auth_data* node; + int node_exact; + qinfo.qclass = 0; + qinfo.qtype = 0; + qinfo.qname = hashnm; + qinfo.qname_len = hashnmlen; + /* because canonical ordering and b32 nsec3 ordering are the same. + * this is a good lookup to find the nsec3 name. */ + az_find_domain(z, &qinfo, &node_exact, &node); + /* but we may have to skip non-nsec3 nodes */ + /* this may be a lot, the way to speed that up is to have a + * separate nsec3 tree with nsec3 nodes */ + while(node && (rbnode_type*)node != RBTREE_NULL && + !az_domain_rrset(node, LDNS_RR_TYPE_NSEC3)) { + node = (struct auth_data*)rbtree_previous(&node->node); + } + if((rbnode_type*)node == RBTREE_NULL) + node = NULL; + return node; +} + +/** Find cover for hashed(nm, nmlen) (or NULL) */ +static struct auth_data* +az_nsec3_find_cover(struct auth_zone* z, uint8_t* nm, size_t nmlen, + int algo, size_t iter, uint8_t* salt, size_t saltlen) +{ + struct auth_data* node; + uint8_t hname[LDNS_MAX_DOMAINLEN]; + size_t hlen = sizeof(hname); + if(!az_nsec3_hashname(z, hname, &hlen, nm, nmlen, algo, iter, + salt, saltlen)) + return NULL; + node = az_nsec3_findnode(z, hname, hlen); + if(node) + return node; + /* we did not find any, perhaps because the NSEC3 hash is before + * the first hash, we have to find the 'last hash' in the zone */ + node = (struct auth_data*)rbtree_last(&z->data); + while(node && (rbnode_type*)node != RBTREE_NULL && + !az_domain_rrset(node, LDNS_RR_TYPE_NSEC3)) { + node = (struct auth_data*)rbtree_previous(&node->node); + } + if((rbnode_type*)node == RBTREE_NULL) + node = NULL; + return node; +} + +/** Find exact match for hashed(nm, nmlen) NSEC3 record or NULL */ +static struct auth_data* +az_nsec3_find_exact(struct auth_zone* z, uint8_t* nm, size_t nmlen, + int algo, size_t iter, uint8_t* salt, size_t saltlen) +{ + struct auth_data* node; + uint8_t hname[LDNS_MAX_DOMAINLEN]; + size_t hlen = sizeof(hname); + if(!az_nsec3_hashname(z, hname, &hlen, nm, nmlen, algo, iter, + salt, saltlen)) + return NULL; + node = az_find_name(z, hname, hlen); + if(az_domain_rrset(node, LDNS_RR_TYPE_NSEC3)) + return node; + return NULL; +} + +/** Return nextcloser name (as a ref into the qname). This is one label + * more than the cenm (cename must be a suffix of qname) */ +static void +az_nsec3_get_nextcloser(uint8_t* cenm, uint8_t* qname, size_t qname_len, + uint8_t** nx, size_t* nxlen) +{ + int celabs = dname_count_labels(cenm); + int qlabs = dname_count_labels(qname); + int strip = qlabs - celabs -1; + log_assert(dname_strict_subdomain(qname, qlabs, cenm, celabs)); + *nx = qname; + *nxlen = qname_len; + if(strip>0) + dname_remove_labels(nx, nxlen, strip); +} + +/** Find the closest encloser that has exact NSEC3. + * updated cenm to the new name. If it went up no-exact-ce is true. */ +static struct auth_data* +az_nsec3_find_ce(struct auth_zone* z, uint8_t** cenm, size_t* cenmlen, + int* no_exact_ce, int algo, size_t iter, uint8_t* salt, size_t saltlen) +{ + struct auth_data* node; + while((node = az_nsec3_find_exact(z, *cenm, *cenmlen, + algo, iter, salt, saltlen)) == NULL) { + if(*cenmlen == z->namelen) { + /* next step up would take us out of the zone. fail */ + return NULL; + } + *no_exact_ce = 1; + dname_remove_label(cenm, cenmlen); + } + return node; +} + +/* Insert NSEC3 record in authority section, if NULL does nothing */ +static int +az_nsec3_insert(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node) +{ + struct auth_rrset* nsec3; + if(!node) return 1; /* no node, skip this */ + nsec3 = az_domain_rrset(node, LDNS_RR_TYPE_NSEC3); + if(!nsec3) return 1; /* if no nsec3 RR, skip it */ + if(!msg_add_rrset_ns(z, region, msg, node, nsec3)) return 0; + return 1; +} + +/** add NSEC3 records to the zone for the nsec3 proof. + * Specify with the flags with parts of the proof are required. + * the ce is the exact matching name (for notype) but also delegation points. + * qname is the one where the nextcloser name can be derived from. + * If NSEC3 is not properly there (in the zone) nothing is added. + * always enabled: include nsec3 proving about the Closest Encloser. + * that is an exact match that should exist for it. + * If that does not exist, a higher exact match + nxproof is enabled + * (for some sort of opt-out empty nonterminal cases). + * nxproof: include denial of the qname. + * wcproof: include denial of wildcard (wildcard.ce). + */ +static int +az_add_nsec3_proof(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, uint8_t* cenm, size_t cenmlen, uint8_t* qname, + size_t qname_len, int nxproof, int wcproof) +{ + int algo; + size_t iter, saltlen; + uint8_t* salt; + int no_exact_ce = 0; + struct auth_data* node; + + /* find parameters of nsec3 proof */ + if(!az_nsec3_param(z, &algo, &iter, &salt, &saltlen)) + return 1; /* no nsec3 */ + /* find ce that has an NSEC3 */ + node = az_nsec3_find_ce(z, &cenm, &cenmlen, &no_exact_ce, + algo, iter, salt, saltlen); + if(no_exact_ce) nxproof = 1; + if(!az_nsec3_insert(z, region, msg, node)) + return 0; + + if(nxproof) { + uint8_t* nx; + size_t nxlen; + /* create nextcloser domain name */ + az_nsec3_get_nextcloser(cenm, qname, qname_len, &nx, &nxlen); + /* find nsec3 that matches or covers it */ + node = az_nsec3_find_cover(z, nx, nxlen, algo, iter, salt, + saltlen); + if(!az_nsec3_insert(z, region, msg, node)) + return 0; + } + if(wcproof) { + /* create wildcard name *.ce */ + uint8_t wc[LDNS_MAX_DOMAINLEN]; + size_t wclen; + if(cenmlen+2 > sizeof(wc)) + return 0; /* result would be too long */ + wc[0] = 1; /* length of wildcard label */ + wc[1] = (uint8_t)'*'; /* wildcard label */ + memmove(wc+2, cenm, cenmlen); + wclen = cenmlen+2; + /* find nsec3 that matches or covers it */ + node = az_nsec3_find_cover(z, wc, wclen, algo, iter, salt, + saltlen); + if(!az_nsec3_insert(z, region, msg, node)) + return 0; + } + return 1; +} + +/** generate answer for positive answer */ +static int +az_generate_positive_answer(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset) +{ + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + /* see if we want additional rrs */ + if(rrset->type == LDNS_RR_TYPE_MX) { + if(!az_add_additionals_from(z, region, msg, rrset, 2)) + return 0; + } else if(rrset->type == LDNS_RR_TYPE_SRV) { + if(!az_add_additionals_from(z, region, msg, rrset, 6)) + return 0; + } else if(rrset->type == LDNS_RR_TYPE_NS) { + if(!az_add_additionals_from(z, region, msg, rrset, 0)) + return 0; + } + return 1; +} + +/** generate answer for type ANY answer */ +static int +az_generate_any_answer(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node) +{ + struct auth_rrset* rrset; + int added = 0; + /* add a couple (at least one) RRs */ + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_SOA)) != NULL) { + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + added++; + } + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_MX)) != NULL) { + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + added++; + } + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_A)) != NULL) { + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + added++; + } + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_AAAA)) != NULL) { + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + added++; + } + if(added == 0 && node->rrsets) { + if(!msg_add_rrset_an(z, region, msg, node, + node->rrsets)) return 0; + } + return 1; +} + +/** follow cname chain and add more data to the answer section */ +static int +follow_cname_chain(struct auth_zone* z, uint16_t qtype, + struct regional* region, struct dns_msg* msg, + struct packed_rrset_data* d) +{ + int maxchain = 0; + /* see if we can add the target of the CNAME into the answer */ + while(maxchain++ < MAX_CNAME_CHAIN) { + struct auth_data* node; + struct auth_rrset* rrset; + size_t clen; + /* d has cname rdata */ + if(d->count == 0) break; /* no CNAME */ + if(d->rr_len[0] < 2+1) break; /* too small */ + if((clen=dname_valid(d->rr_data[0]+2, d->rr_len[0]-2))==0) + break; /* malformed */ + if(!dname_subdomain_c(d->rr_data[0]+2, z->name)) + break; /* target out of zone */ + if((node = az_find_name(z, d->rr_data[0]+2, clen))==NULL) + break; /* no such target name */ + if((rrset=az_domain_rrset(node, qtype))!=NULL) { + /* done we found the target */ + if(!msg_add_rrset_an(z, region, msg, node, rrset)) + return 0; + break; + } + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME))==NULL) + break; /* no further CNAME chain, notype */ + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + d = rrset->data; + } + return 1; +} + +/** generate answer for cname answer */ +static int +az_generate_cname_answer(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg* msg, + struct auth_data* node, struct auth_rrset* rrset) +{ + if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0; + if(!rrset) return 1; + if(!follow_cname_chain(z, qinfo->qtype, region, msg, rrset->data)) + return 0; + return 1; +} + +/** generate answer for notype answer */ +static int +az_generate_notype_answer(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* node) +{ + struct auth_rrset* rrset; + if(!az_add_negative_soa(z, region, msg)) return 0; + /* DNSSEC denial NSEC */ + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_NSEC))!=NULL) { + if(!msg_add_rrset_ns(z, region, msg, node, rrset)) return 0; + } else if(node) { + /* DNSSEC denial NSEC3 */ + if(!az_add_nsec3_proof(z, region, msg, node->name, + node->namelen, msg->qinfo.qname, + msg->qinfo.qname_len, 0, 0)) + return 0; + } + return 1; +} + +/** generate answer for referral answer */ +static int +az_generate_referral_answer(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* ce, struct auth_rrset* rrset) +{ + struct auth_rrset* ds, *nsec; + /* turn off AA flag, referral is nonAA because it leaves the zone */ + log_assert(ce); + msg->rep->flags &= ~BIT_AA; + if(!msg_add_rrset_ns(z, region, msg, ce, rrset)) return 0; + /* add DS or deny it */ + if((ds=az_domain_rrset(ce, LDNS_RR_TYPE_DS))!=NULL) { + if(!msg_add_rrset_ns(z, region, msg, ce, ds)) return 0; + } else { + /* deny the DS */ + if((nsec=az_domain_rrset(ce, LDNS_RR_TYPE_NSEC))!=NULL) { + if(!msg_add_rrset_ns(z, region, msg, ce, nsec)) + return 0; + } else { + if(!az_add_nsec3_proof(z, region, msg, ce->name, + ce->namelen, msg->qinfo.qname, + msg->qinfo.qname_len, 0, 0)) + return 0; + } + } + /* add additional rrs for type NS */ + if(!az_add_additionals_from(z, region, msg, rrset, 0)) return 0; + return 1; +} + +/** generate answer for DNAME answer */ +static int +az_generate_dname_answer(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg* msg, struct auth_data* ce, + struct auth_rrset* rrset) +{ + log_assert(ce); + /* add the DNAME and then a CNAME */ + if(!msg_add_rrset_an(z, region, msg, ce, rrset)) return 0; + if(!add_synth_cname(z, qinfo->qname, qinfo->qname_len, region, + msg, ce, rrset)) return 0; + if(FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_YXDOMAIN) + return 1; + if(msg->rep->rrset_count == 0 || + !msg->rep->rrsets[msg->rep->rrset_count-1]) + return 0; + if(!follow_cname_chain(z, qinfo->qtype, region, msg, + (struct packed_rrset_data*)msg->rep->rrsets[ + msg->rep->rrset_count-1]->entry.data)) + return 0; + return 1; +} + +/** generate answer for wildcard answer */ +static int +az_generate_wildcard_answer(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg* msg, struct auth_data* ce, + struct auth_data* wildcard, struct auth_data* node) +{ + struct auth_rrset* rrset, *nsec; + if((rrset=az_domain_rrset(wildcard, qinfo->qtype)) != NULL) { + /* wildcard has type, add it */ + if(!msg_add_rrset_an(z, region, msg, wildcard, rrset)) + return 0; + az_change_dnames(msg, wildcard->name, msg->qinfo.qname, + msg->qinfo.qname_len, 1); + } else if((rrset=az_domain_rrset(wildcard, LDNS_RR_TYPE_CNAME))!=NULL) { + /* wildcard has cname instead, do that */ + if(!msg_add_rrset_an(z, region, msg, wildcard, rrset)) + return 0; + az_change_dnames(msg, wildcard->name, msg->qinfo.qname, + msg->qinfo.qname_len, 1); + if(!follow_cname_chain(z, qinfo->qtype, region, msg, + rrset->data)) + return 0; + } else if(qinfo->qtype == LDNS_RR_TYPE_ANY && wildcard->rrsets) { + /* add ANY rrsets from wildcard node */ + if(!az_generate_any_answer(z, region, msg, wildcard)) + return 0; + az_change_dnames(msg, wildcard->name, msg->qinfo.qname, + msg->qinfo.qname_len, 1); + } else { + /* wildcard has nodata, notype answer */ + /* call other notype routine for dnssec notype denials */ + if(!az_generate_notype_answer(z, region, msg, wildcard)) + return 0; + } + + /* ce and node for dnssec denial of wildcard original name */ + if((nsec=az_find_nsec_cover(z, &node)) != NULL) { + if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0; + } else if(ce) { + if(!az_add_nsec3_proof(z, region, msg, ce->name, + ce->namelen, msg->qinfo.qname, + msg->qinfo.qname_len, 1, 0)) + return 0; + } + + /* fixup name of wildcard from *.zone to qname, use already allocated + * pointer to msg qname */ + az_change_dnames(msg, wildcard->name, msg->qinfo.qname, + msg->qinfo.qname_len, 0); + return 1; +} + +/** generate answer for nxdomain answer */ +static int +az_generate_nxdomain_answer(struct auth_zone* z, struct regional* region, + struct dns_msg* msg, struct auth_data* ce, struct auth_data* node) +{ + struct auth_rrset* nsec; + msg->rep->flags |= LDNS_RCODE_NXDOMAIN; + if(!az_add_negative_soa(z, region, msg)) return 0; + if((nsec=az_find_nsec_cover(z, &node)) != NULL) { + if(!msg_add_rrset_ns(z, region, msg, node, nsec)) return 0; + if(ce && !az_nsec_wildcard_denial(z, region, msg, ce->name, + ce->namelen)) return 0; + } else if(ce) { + if(!az_add_nsec3_proof(z, region, msg, ce->name, + ce->namelen, msg->qinfo.qname, + msg->qinfo.qname_len, 1, 1)) + return 0; + } + return 1; +} + +/** Create answers when an exact match exists for the domain name */ +static int +az_generate_answer_with_node(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg* msg, struct auth_data* node) +{ + struct auth_rrset* rrset; + /* positive answer, rrset we are looking for exists */ + if((rrset=az_domain_rrset(node, qinfo->qtype)) != NULL) { + return az_generate_positive_answer(z, region, msg, node, rrset); + } + /* CNAME? */ + if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME)) != NULL) { + return az_generate_cname_answer(z, qinfo, region, msg, + node, rrset); + } + /* type ANY ? */ + if(qinfo->qtype == LDNS_RR_TYPE_ANY) { + return az_generate_any_answer(z, region, msg, node); + } + /* NOERROR/NODATA (no such type at domain name) */ + return az_generate_notype_answer(z, region, msg, node); +} + +/** Generate answer without an existing-node that we can use. + * So it'll be a referral, DNAME or nxdomain */ +static int +az_generate_answer_nonexistnode(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg* msg, struct auth_data* ce, + struct auth_rrset* rrset, struct auth_data* node) +{ + struct auth_data* wildcard; + + /* we do not have an exact matching name (that exists) */ + /* see if we have a NS or DNAME in the ce */ + if(ce && rrset && rrset->type == LDNS_RR_TYPE_NS) { + return az_generate_referral_answer(z, region, msg, ce, rrset); + } + if(ce && rrset && rrset->type == LDNS_RR_TYPE_DNAME) { + return az_generate_dname_answer(z, qinfo, region, msg, ce, + rrset); + } + /* if there is an empty nonterminal, wildcard and nxdomain don't + * happen, it is a notype answer */ + if(az_empty_nonterminal(z, qinfo, node)) { + return az_generate_notype_answer(z, region, msg, node); + } + /* see if we have a wildcard under the ce */ + if((wildcard=az_find_wildcard(z, qinfo, ce)) != NULL) { + return az_generate_wildcard_answer(z, qinfo, region, msg, + ce, wildcard, node); + } + /* generate nxdomain answer */ + return az_generate_nxdomain_answer(z, region, msg, ce, node); +} + +/** Lookup answer in a zone. */ +static int +auth_zone_generate_answer(struct auth_zone* z, struct query_info* qinfo, + struct regional* region, struct dns_msg** msg, int* fallback) +{ + struct auth_data* node, *ce; + struct auth_rrset* rrset; + int node_exact, node_exists; + /* does the zone want fallback in case of failure? */ + *fallback = z->fallback_enabled; + if(!(*msg=msg_create(region, qinfo))) return 0; + + /* lookup if there is a matching domain name for the query */ + az_find_domain(z, qinfo, &node_exact, &node); + + /* see if node exists for generating answers from (i.e. not glue and + * obscured by NS or DNAME or NSEC3-only), and also return the + * closest-encloser from that, closest node that should be used + * to generate answers from that is above the query */ + node_exists = az_find_ce(z, qinfo, node, node_exact, &ce, &rrset); + + if(verbosity >= VERB_ALGO) { + char zname[256], qname[256], nname[256], cename[256], + tpstr[32], rrstr[32]; + sldns_wire2str_dname_buf(qinfo->qname, qinfo->qname_len, qname, + sizeof(qname)); + sldns_wire2str_type_buf(qinfo->qtype, tpstr, sizeof(tpstr)); + sldns_wire2str_dname_buf(z->name, z->namelen, zname, + sizeof(zname)); + if(node) + sldns_wire2str_dname_buf(node->name, node->namelen, + nname, sizeof(nname)); + else snprintf(nname, sizeof(nname), "NULL"); + if(ce) + sldns_wire2str_dname_buf(ce->name, ce->namelen, + cename, sizeof(cename)); + else snprintf(cename, sizeof(cename), "NULL"); + if(rrset) sldns_wire2str_type_buf(rrset->type, rrstr, + sizeof(rrstr)); + else snprintf(rrstr, sizeof(rrstr), "NULL"); + log_info("auth_zone %s query %s %s, domain %s %s %s, " + "ce %s, rrset %s", zname, qname, tpstr, nname, + (node_exact?"exact":"notexact"), + (node_exists?"exist":"notexist"), cename, rrstr); + } + + if(node_exists) { + /* the node is fine, generate answer from node */ + return az_generate_answer_with_node(z, qinfo, region, *msg, + node); + } + return az_generate_answer_nonexistnode(z, qinfo, region, *msg, + ce, rrset, node); +} + +int auth_zones_lookup(struct auth_zones* az, struct query_info* qinfo, + struct regional* region, struct dns_msg** msg, int* fallback, + uint8_t* dp_nm, size_t dp_nmlen) +{ + int r; + struct auth_zone* z; + /* find the zone that should contain the answer. */ + lock_rw_rdlock(&az->lock); + z = auth_zone_find(az, dp_nm, dp_nmlen, qinfo->qclass); + if(!z) { + lock_rw_unlock(&az->lock); + /* no auth zone, fallback to internet */ + *fallback = 1; + return 0; + } + lock_rw_rdlock(&z->lock); + lock_rw_unlock(&az->lock); + + /* if not for upstream queries, fallback */ + if(!z->for_upstream) { + lock_rw_unlock(&z->lock); + *fallback = 1; + return 0; + } + /* see what answer that zone would generate */ + r = auth_zone_generate_answer(z, qinfo, region, msg, fallback); + lock_rw_unlock(&z->lock); + return r; +} + +/** encode auth answer */ +static void +auth_answer_encode(struct query_info* qinfo, struct module_env* env, + struct edns_data* edns, sldns_buffer* buf, struct regional* temp, + struct dns_msg* msg) +{ + uint16_t udpsize; + udpsize = edns->udp_size; + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->ext_rcode = 0; + edns->bits &= EDNS_DO; + + if(!inplace_cb_reply_local_call(env, qinfo, NULL, msg->rep, + (int)FLAGS_GET_RCODE(msg->rep->flags), edns, temp) + || !reply_info_answer_encode(qinfo, msg->rep, + *(uint16_t*)sldns_buffer_begin(buf), + sldns_buffer_read_u16_at(buf, 2), + buf, 0, 0, temp, udpsize, edns, + (int)(edns->bits&EDNS_DO), 0)) { + error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, + *(uint16_t*)sldns_buffer_begin(buf), + sldns_buffer_read_u16_at(buf, 2), edns); + } +} + +/** encode auth error answer */ +static void +auth_error_encode(struct query_info* qinfo, struct module_env* env, + struct edns_data* edns, sldns_buffer* buf, struct regional* temp, + int rcode) +{ + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->ext_rcode = 0; + edns->bits &= EDNS_DO; + + if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, + rcode, edns, temp)) + edns->opt_list = NULL; + error_encode(buf, rcode|BIT_AA, qinfo, + *(uint16_t*)sldns_buffer_begin(buf), + sldns_buffer_read_u16_at(buf, 2), edns); +} + +int auth_zones_answer(struct auth_zones* az, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, struct sldns_buffer* buf, + struct regional* temp) +{ + struct dns_msg* msg = NULL; + struct auth_zone* z; + int r; + int fallback = 0; + + lock_rw_rdlock(&az->lock); + if(!az->have_downstream) { + /* no downstream auth zones */ + lock_rw_unlock(&az->lock); + return 0; + } + if(qinfo->qtype == LDNS_RR_TYPE_DS) { + uint8_t* delname = qinfo->qname; + size_t delnamelen = qinfo->qname_len; + dname_remove_label(&delname, &delnamelen); + z = auth_zones_find_zone(az, delname, delnamelen, + qinfo->qclass); + } else { + z = auth_zones_find_zone(az, qinfo->qname, qinfo->qname_len, + qinfo->qclass); + } + if(!z) { + /* no zone above it */ + lock_rw_unlock(&az->lock); + return 0; + } + lock_rw_rdlock(&z->lock); + lock_rw_unlock(&az->lock); + if(!z->for_downstream) { + lock_rw_unlock(&z->lock); + return 0; + } + + /* answer it from zone z */ + r = auth_zone_generate_answer(z, qinfo, temp, &msg, &fallback); + lock_rw_unlock(&z->lock); + if(!r && fallback) { + /* fallback to regular answering (recursive) */ + return 0; + } + lock_rw_wrlock(&az->lock); + az->num_query_down++; + lock_rw_unlock(&az->lock); + + /* encode answer */ + if(!r) + auth_error_encode(qinfo, env, edns, buf, temp, + LDNS_RCODE_SERVFAIL); + else auth_answer_encode(qinfo, env, edns, buf, temp, msg); + + return 1; +} + +int auth_zones_can_fallback(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass) +{ + int r; + struct auth_zone* z; + lock_rw_rdlock(&az->lock); + z = auth_zone_find(az, nm, nmlen, dclass); + if(!z) { + lock_rw_unlock(&az->lock); + /* no such auth zone, fallback */ + return 1; + } + lock_rw_rdlock(&z->lock); + lock_rw_unlock(&az->lock); + r = z->fallback_enabled || (!z->for_upstream); + lock_rw_unlock(&z->lock); + return r; +} + +int +auth_zone_parse_notify_serial(sldns_buffer* pkt, uint32_t *serial) +{ + struct query_info q; + uint16_t rdlen; + memset(&q, 0, sizeof(q)); + sldns_buffer_set_position(pkt, 0); + if(!query_info_parse(&q, pkt)) return 0; + if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) == 0) return 0; + /* skip name of RR in answer section */ + if(sldns_buffer_remaining(pkt) < 1) return 0; + if(pkt_dname_len(pkt) == 0) return 0; + /* check type */ + if(sldns_buffer_remaining(pkt) < 10 /* type,class,ttl,rdatalen*/) + return 0; + if(sldns_buffer_read_u16(pkt) != LDNS_RR_TYPE_SOA) return 0; + sldns_buffer_skip(pkt, 2); /* class */ + sldns_buffer_skip(pkt, 4); /* ttl */ + rdlen = sldns_buffer_read_u16(pkt); /* rdatalen */ + if(sldns_buffer_remaining(pkt) < rdlen) return 0; + if(rdlen < 22) return 0; /* bad soa length */ + sldns_buffer_skip(pkt, (ssize_t)(rdlen-20)); + *serial = sldns_buffer_read_u32(pkt); + /* return true when has serial in answer section */ + return 1; +} + +/** see if addr appears in the list */ +static int +addr_in_list(struct auth_addr* list, struct sockaddr_storage* addr, + socklen_t addrlen) +{ + struct auth_addr* p; + for(p=list; p; p=p->next) { + if(sockaddr_cmp_addr(addr, addrlen, &p->addr, p->addrlen)==0) + return 1; + } + return 0; +} + +/** check if an address matches a master specification (or one of its + * addresses in the addr list) */ +static int +addr_matches_master(struct auth_master* master, struct sockaddr_storage* addr, + socklen_t addrlen, struct auth_master** fromhost) +{ + struct sockaddr_storage a; + socklen_t alen = 0; + int net = 0; + if(addr_in_list(master->list, addr, addrlen)) { + *fromhost = master; + return 1; + } + /* compare address (but not port number, that is the destination + * port of the master, the port number of the received notify is + * allowed to by any port on that master) */ + if(extstrtoaddr(master->host, &a, &alen) && + sockaddr_cmp_addr(addr, addrlen, &a, alen)==0) { + *fromhost = master; + return 1; + } + /* prefixes, addr/len, like 10.0.0.0/8 */ + /* not http and has a / and there is one / */ + if(master->allow_notify && !master->http && + strchr(master->host, '/') != NULL && + strchr(master->host, '/') == strrchr(master->host, '/') && + netblockstrtoaddr(master->host, UNBOUND_DNS_PORT, &a, &alen, + &net) && alen == addrlen) { + if(addr_in_common(addr, (addr_is_ip6(addr, addrlen)?128:32), + &a, net, alen) >= net) { + *fromhost = NULL; /* prefix does not have destination + to send the probe or transfer with */ + return 1; /* matches the netblock */ + } + } + return 0; +} + +/** check access list for notifies */ +static int +az_xfr_allowed_notify(struct auth_xfer* xfr, struct sockaddr_storage* addr, + socklen_t addrlen, struct auth_master** fromhost) +{ + struct auth_master* p; + for(p=xfr->allow_notify_list; p; p=p->next) { + if(addr_matches_master(p, addr, addrlen, fromhost)) { + return 1; + } + } + return 0; +} + +/** see if the serial means the zone has to be updated, i.e. the serial + * is newer than the zone serial, or we have no zone */ +static int +xfr_serial_means_update(struct auth_xfer* xfr, uint32_t serial) +{ + if(!xfr->have_zone) + return 1; /* no zone, anything is better */ + if(xfr->zone_expired) + return 1; /* expired, the sent serial is better than expired + data */ + if(compare_serial(xfr->serial, serial) < 0) + return 1; /* our serial is smaller than the sent serial, + the data is newer, fetch it */ + return 0; +} + +/** note notify serial, updates the notify information in the xfr struct */ +static void +xfr_note_notify_serial(struct auth_xfer* xfr, int has_serial, uint32_t serial) +{ + if(xfr->notify_received && xfr->notify_has_serial && has_serial) { + /* see if this serial is newer */ + if(compare_serial(xfr->notify_serial, serial) < 0) + xfr->notify_serial = serial; + } else if(xfr->notify_received && xfr->notify_has_serial && + !has_serial) { + /* remove serial, we have notify without serial */ + xfr->notify_has_serial = 0; + xfr->notify_serial = 0; + } else if(xfr->notify_received && !xfr->notify_has_serial) { + /* we already have notify without serial, keep it + * that way; no serial check when current operation + * is done */ + } else { + xfr->notify_received = 1; + xfr->notify_has_serial = has_serial; + xfr->notify_serial = serial; + } +} + +/** process a notify serial, start new probe or note serial. xfr is locked */ +static void +xfr_process_notify(struct auth_xfer* xfr, struct module_env* env, + int has_serial, uint32_t serial, struct auth_master* fromhost) +{ + /* if the serial of notify is older than we have, don't fetch + * a zone, we already have it */ + if(has_serial && !xfr_serial_means_update(xfr, serial)) { + lock_basic_unlock(&xfr->lock); + return; + } + /* start new probe with this addr src, or note serial */ + if(!xfr_start_probe(xfr, env, fromhost)) { + /* not started because already in progress, note the serial */ + xfr_note_notify_serial(xfr, has_serial, serial); + lock_basic_unlock(&xfr->lock); + } + /* successful end of start_probe unlocked xfr->lock */ +} + +int auth_zones_notify(struct auth_zones* az, struct module_env* env, + uint8_t* nm, size_t nmlen, uint16_t dclass, + struct sockaddr_storage* addr, socklen_t addrlen, int has_serial, + uint32_t serial, int* refused) +{ + struct auth_xfer* xfr; + struct auth_master* fromhost = NULL; + /* see which zone this is */ + lock_rw_rdlock(&az->lock); + xfr = auth_xfer_find(az, nm, nmlen, dclass); + if(!xfr) { + lock_rw_unlock(&az->lock); + /* no such zone, refuse the notify */ + *refused = 1; + return 0; + } + lock_basic_lock(&xfr->lock); + lock_rw_unlock(&az->lock); + + /* check access list for notifies */ + if(!az_xfr_allowed_notify(xfr, addr, addrlen, &fromhost)) { + lock_basic_unlock(&xfr->lock); + /* notify not allowed, refuse the notify */ + *refused = 1; + return 0; + } + + /* process the notify */ + xfr_process_notify(xfr, env, has_serial, serial, fromhost); + return 1; +} + +/** set a zone expired */ +static void +auth_xfer_set_expired(struct auth_xfer* xfr, struct module_env* env, + int expired) +{ + struct auth_zone* z; + + /* expire xfr */ + lock_basic_lock(&xfr->lock); + xfr->zone_expired = expired; + lock_basic_unlock(&xfr->lock); + + /* find auth_zone */ + lock_rw_rdlock(&env->auth_zones->lock); + z = auth_zone_find(env->auth_zones, xfr->name, xfr->namelen, + xfr->dclass); + if(!z) { + lock_rw_unlock(&env->auth_zones->lock); + return; + } + lock_rw_wrlock(&z->lock); + lock_rw_unlock(&env->auth_zones->lock); + + /* expire auth_zone */ + z->zone_expired = expired; + lock_rw_unlock(&z->lock); +} + +/** find master (from notify or probe) in list of masters */ +static struct auth_master* +find_master_by_host(struct auth_master* list, char* host) +{ + struct auth_master* p; + for(p=list; p; p=p->next) { + if(strcmp(p->host, host) == 0) + return p; + } + return NULL; +} + +/** delete the looked up auth_addrs for all the masters in the list */ +static void +xfr_masterlist_free_addrs(struct auth_master* list) +{ + struct auth_master* m; + for(m=list; m; m=m->next) { + if(m->list) { + auth_free_master_addrs(m->list); + m->list = NULL; + } + } +} + +/** copy a list of auth_addrs */ +static struct auth_addr* +auth_addr_list_copy(struct auth_addr* source) +{ + struct auth_addr* list = NULL, *last = NULL; + struct auth_addr* p; + for(p=source; p; p=p->next) { + struct auth_addr* a = (struct auth_addr*)memdup(p, sizeof(*p)); + if(!a) { + log_err("malloc failure"); + auth_free_master_addrs(list); + return NULL; + } + a->next = NULL; + if(last) last->next = a; + if(!list) list = a; + last = a; + } + return list; +} + +/** copy a master to a new structure, NULL on alloc failure */ +static struct auth_master* +auth_master_copy(struct auth_master* o) +{ + struct auth_master* m; + if(!o) return NULL; + m = (struct auth_master*)memdup(o, sizeof(*o)); + if(!m) { + log_err("malloc failure"); + return NULL; + } + m->next = NULL; + if(m->host) { + m->host = strdup(m->host); + if(!m->host) { + free(m); + log_err("malloc failure"); + return NULL; + } + } + if(m->file) { + m->file = strdup(m->file); + if(!m->file) { + free(m->host); + free(m); + log_err("malloc failure"); + return NULL; + } + } + if(m->list) { + m->list = auth_addr_list_copy(m->list); + if(!m->list) { + free(m->file); + free(m->host); + free(m); + return NULL; + } + } + return m; +} + +/** copy the master addresses from the task_probe lookups to the allow_notify + * list of masters */ +static void +probe_copy_masters_for_allow_notify(struct auth_xfer* xfr) +{ + struct auth_master* list = NULL, *last = NULL; + struct auth_master* p; + /* build up new list with copies */ + for(p = xfr->task_probe->masters; p; p=p->next) { + struct auth_master* m = auth_master_copy(p); + if(!m) { + auth_free_masters(list); + /* failed because of malloc failure, use old list */ + return; + } + m->next = NULL; + if(last) last->next = m; + if(!list) list = m; + last = m; + } + /* success, replace list */ + auth_free_masters(xfr->allow_notify_list); + xfr->allow_notify_list = list; +} + +/** start the lookups for task_transfer */ +static void +xfr_transfer_start_lookups(struct auth_xfer* xfr) +{ + /* delete all the looked up addresses in the list */ + xfr_masterlist_free_addrs(xfr->task_transfer->masters); + + /* start lookup at the first master */ + xfr->task_transfer->lookup_target = xfr->task_transfer->masters; + xfr->task_transfer->lookup_aaaa = 0; +} + +/** move to the next lookup of hostname for task_transfer */ +static void +xfr_transfer_move_to_next_lookup(struct auth_xfer* xfr, struct module_env* env) +{ + if(!xfr->task_transfer->lookup_target) + return; /* already at end of list */ + if(!xfr->task_transfer->lookup_aaaa && env->cfg->do_ip6) { + /* move to lookup AAAA */ + xfr->task_transfer->lookup_aaaa = 1; + return; + } + xfr->task_transfer->lookup_target = + xfr->task_transfer->lookup_target->next; + xfr->task_transfer->lookup_aaaa = 0; + if(!env->cfg->do_ip4 && xfr->task_transfer->lookup_target!=NULL) + xfr->task_transfer->lookup_aaaa = 1; +} + +/** start the lookups for task_probe */ +static void +xfr_probe_start_lookups(struct auth_xfer* xfr) +{ + /* delete all the looked up addresses in the list */ + xfr_masterlist_free_addrs(xfr->task_probe->masters); + + /* start lookup at the first master */ + xfr->task_probe->lookup_target = xfr->task_probe->masters; + xfr->task_probe->lookup_aaaa = 0; +} + +/** move to the next lookup of hostname for task_probe */ +static void +xfr_probe_move_to_next_lookup(struct auth_xfer* xfr, struct module_env* env) +{ + if(!xfr->task_probe->lookup_target) + return; /* already at end of list */ + if(!xfr->task_probe->lookup_aaaa && env->cfg->do_ip6) { + /* move to lookup AAAA */ + xfr->task_probe->lookup_aaaa = 1; + return; + } + xfr->task_probe->lookup_target = xfr->task_probe->lookup_target->next; + xfr->task_probe->lookup_aaaa = 0; + if(!env->cfg->do_ip4 && xfr->task_probe->lookup_target!=NULL) + xfr->task_probe->lookup_aaaa = 1; +} + +/** start the iteration of the task_transfer list of masters */ +static void +xfr_transfer_start_list(struct auth_xfer* xfr, struct auth_master* spec) +{ + if(spec) { + xfr->task_transfer->scan_specific = find_master_by_host( + xfr->task_transfer->masters, spec->host); + if(xfr->task_transfer->scan_specific) { + xfr->task_transfer->scan_target = NULL; + xfr->task_transfer->scan_addr = NULL; + if(xfr->task_transfer->scan_specific->list) + xfr->task_transfer->scan_addr = + xfr->task_transfer->scan_specific->list; + return; + } + } + /* no specific (notified) host to scan */ + xfr->task_transfer->scan_specific = NULL; + xfr->task_transfer->scan_addr = NULL; + /* pick up first scan target */ + xfr->task_transfer->scan_target = xfr->task_transfer->masters; + if(xfr->task_transfer->scan_target && xfr->task_transfer-> + scan_target->list) + xfr->task_transfer->scan_addr = + xfr->task_transfer->scan_target->list; +} + +/** start the iteration of the task_probe list of masters */ +static void +xfr_probe_start_list(struct auth_xfer* xfr, struct auth_master* spec) +{ + if(spec) { + xfr->task_probe->scan_specific = find_master_by_host( + xfr->task_probe->masters, spec->host); + if(xfr->task_probe->scan_specific) { + xfr->task_probe->scan_target = NULL; + xfr->task_probe->scan_addr = NULL; + if(xfr->task_probe->scan_specific->list) + xfr->task_probe->scan_addr = + xfr->task_probe->scan_specific->list; + return; + } + } + /* no specific (notified) host to scan */ + xfr->task_probe->scan_specific = NULL; + xfr->task_probe->scan_addr = NULL; + /* pick up first scan target */ + xfr->task_probe->scan_target = xfr->task_probe->masters; + if(xfr->task_probe->scan_target && xfr->task_probe->scan_target->list) + xfr->task_probe->scan_addr = + xfr->task_probe->scan_target->list; +} + +/** pick up the master that is being scanned right now, task_transfer */ +static struct auth_master* +xfr_transfer_current_master(struct auth_xfer* xfr) +{ + if(xfr->task_transfer->scan_specific) + return xfr->task_transfer->scan_specific; + return xfr->task_transfer->scan_target; +} + +/** pick up the master that is being scanned right now, task_probe */ +static struct auth_master* +xfr_probe_current_master(struct auth_xfer* xfr) +{ + if(xfr->task_probe->scan_specific) + return xfr->task_probe->scan_specific; + return xfr->task_probe->scan_target; +} + +/** true if at end of list, task_transfer */ +static int +xfr_transfer_end_of_list(struct auth_xfer* xfr) +{ + return !xfr->task_transfer->scan_specific && + !xfr->task_transfer->scan_target; +} + +/** true if at end of list, task_probe */ +static int +xfr_probe_end_of_list(struct auth_xfer* xfr) +{ + return !xfr->task_probe->scan_specific && !xfr->task_probe->scan_target; +} + +/** move to next master in list, task_transfer */ +static void +xfr_transfer_nextmaster(struct auth_xfer* xfr) +{ + if(!xfr->task_transfer->scan_specific && + !xfr->task_transfer->scan_target) + return; + if(xfr->task_transfer->scan_addr) { + xfr->task_transfer->scan_addr = + xfr->task_transfer->scan_addr->next; + if(xfr->task_transfer->scan_addr) + return; + } + if(xfr->task_transfer->scan_specific) { + xfr->task_transfer->scan_specific = NULL; + xfr->task_transfer->scan_target = xfr->task_transfer->masters; + if(xfr->task_transfer->scan_target && xfr->task_transfer-> + scan_target->list) + xfr->task_transfer->scan_addr = + xfr->task_transfer->scan_target->list; + return; + } + if(!xfr->task_transfer->scan_target) + return; + xfr->task_transfer->scan_target = xfr->task_transfer->scan_target->next; + if(xfr->task_transfer->scan_target && xfr->task_transfer-> + scan_target->list) + xfr->task_transfer->scan_addr = + xfr->task_transfer->scan_target->list; + return; +} + +/** move to next master in list, task_probe */ +static void +xfr_probe_nextmaster(struct auth_xfer* xfr) +{ + if(!xfr->task_probe->scan_specific && !xfr->task_probe->scan_target) + return; + if(xfr->task_probe->scan_addr) { + xfr->task_probe->scan_addr = xfr->task_probe->scan_addr->next; + if(xfr->task_probe->scan_addr) + return; + } + if(xfr->task_probe->scan_specific) { + xfr->task_probe->scan_specific = NULL; + xfr->task_probe->scan_target = xfr->task_probe->masters; + if(xfr->task_probe->scan_target && xfr->task_probe-> + scan_target->list) + xfr->task_probe->scan_addr = + xfr->task_probe->scan_target->list; + return; + } + if(!xfr->task_probe->scan_target) + return; + xfr->task_probe->scan_target = xfr->task_probe->scan_target->next; + if(xfr->task_probe->scan_target && xfr->task_probe-> + scan_target->list) + xfr->task_probe->scan_addr = + xfr->task_probe->scan_target->list; + return; +} + +/** create SOA probe packet for xfr */ +static void +xfr_create_soa_probe_packet(struct auth_xfer* xfr, sldns_buffer* buf, + uint16_t id) +{ + struct query_info qinfo; + + memset(&qinfo, 0, sizeof(qinfo)); + qinfo.qname = xfr->name; + qinfo.qname_len = xfr->namelen; + qinfo.qtype = LDNS_RR_TYPE_SOA; + qinfo.qclass = xfr->dclass; + qinfo_query_encode(buf, &qinfo); + sldns_buffer_write_u16_at(buf, 0, id); +} + +/** create IXFR/AXFR packet for xfr */ +static void +xfr_create_ixfr_packet(struct auth_xfer* xfr, sldns_buffer* buf, uint16_t id, + struct auth_master* master) +{ + struct query_info qinfo; + uint32_t serial; + int have_zone; + have_zone = xfr->have_zone; + serial = xfr->serial; + + memset(&qinfo, 0, sizeof(qinfo)); + qinfo.qname = xfr->name; + qinfo.qname_len = xfr->namelen; + xfr->task_transfer->got_xfr_serial = 0; + xfr->task_transfer->rr_scan_num = 0; + xfr->task_transfer->incoming_xfr_serial = 0; + xfr->task_transfer->on_ixfr_is_axfr = 0; + xfr->task_transfer->on_ixfr = 1; + qinfo.qtype = LDNS_RR_TYPE_IXFR; + if(!have_zone || xfr->task_transfer->ixfr_fail || !master->ixfr) { + qinfo.qtype = LDNS_RR_TYPE_AXFR; + xfr->task_transfer->ixfr_fail = 0; + xfr->task_transfer->on_ixfr = 0; + } + + qinfo.qclass = xfr->dclass; + qinfo_query_encode(buf, &qinfo); + sldns_buffer_write_u16_at(buf, 0, id); + + /* append serial for IXFR */ + if(qinfo.qtype == LDNS_RR_TYPE_IXFR) { + size_t end = sldns_buffer_limit(buf); + sldns_buffer_clear(buf); + sldns_buffer_set_position(buf, end); + /* auth section count 1 */ + sldns_buffer_write_u16_at(buf, LDNS_NSCOUNT_OFF, 1); + /* write SOA */ + sldns_buffer_write_u8(buf, 0xC0); /* compressed ptr to qname */ + sldns_buffer_write_u8(buf, 0x0C); + sldns_buffer_write_u16(buf, LDNS_RR_TYPE_SOA); + sldns_buffer_write_u16(buf, qinfo.qclass); + sldns_buffer_write_u32(buf, 0); /* ttl */ + sldns_buffer_write_u16(buf, 22); /* rdata length */ + sldns_buffer_write_u8(buf, 0); /* . */ + sldns_buffer_write_u8(buf, 0); /* . */ + sldns_buffer_write_u32(buf, serial); /* serial */ + sldns_buffer_write_u32(buf, 0); /* refresh */ + sldns_buffer_write_u32(buf, 0); /* retry */ + sldns_buffer_write_u32(buf, 0); /* expire */ + sldns_buffer_write_u32(buf, 0); /* minimum */ + sldns_buffer_flip(buf); + } +} + +/** check if returned packet is OK */ +static int +check_packet_ok(sldns_buffer* pkt, uint16_t qtype, struct auth_xfer* xfr, + uint32_t* serial) +{ + /* parse to see if packet worked, valid reply */ + + /* check serial number of SOA */ + if(sldns_buffer_limit(pkt) < LDNS_HEADER_SIZE) + return 0; + + /* check ID */ + if(LDNS_ID_WIRE(sldns_buffer_begin(pkt)) != xfr->task_probe->id) + return 0; + + /* check flag bits and rcode */ + if(!LDNS_QR_WIRE(sldns_buffer_begin(pkt))) + return 0; + if(LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_QUERY) + return 0; + if(LDNS_RCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_RCODE_NOERROR) + return 0; + + /* check qname */ + if(LDNS_QDCOUNT(sldns_buffer_begin(pkt)) != 1) + return 0; + sldns_buffer_skip(pkt, LDNS_HEADER_SIZE); + if(sldns_buffer_remaining(pkt) < xfr->namelen) + return 0; + if(query_dname_compare(sldns_buffer_current(pkt), xfr->name) != 0) + return 0; + sldns_buffer_skip(pkt, (ssize_t)xfr->namelen); + + /* check qtype, qclass */ + if(sldns_buffer_remaining(pkt) < 4) + return 0; + if(sldns_buffer_read_u16(pkt) != qtype) + return 0; + if(sldns_buffer_read_u16(pkt) != xfr->dclass) + return 0; + + if(serial) { + uint16_t rdlen; + /* read serial number, from answer section SOA */ + if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) == 0) + return 0; + /* read from first record SOA record */ + if(sldns_buffer_remaining(pkt) < 1) + return 0; + if(dname_pkt_compare(pkt, sldns_buffer_current(pkt), + xfr->name) != 0) + return 0; + if(!pkt_dname_len(pkt)) + return 0; + /* type, class, ttl, rdatalen */ + if(sldns_buffer_remaining(pkt) < 4+4+2) + return 0; + if(sldns_buffer_read_u16(pkt) != qtype) + return 0; + if(sldns_buffer_read_u16(pkt) != xfr->dclass) + return 0; + sldns_buffer_skip(pkt, 4); /* ttl */ + rdlen = sldns_buffer_read_u16(pkt); + if(sldns_buffer_remaining(pkt) < rdlen) + return 0; + if(sldns_buffer_remaining(pkt) < 1) + return 0; + if(!pkt_dname_len(pkt)) /* soa name */ + return 0; + if(sldns_buffer_remaining(pkt) < 1) + return 0; + if(!pkt_dname_len(pkt)) /* soa name */ + return 0; + if(sldns_buffer_remaining(pkt) < 20) + return 0; + *serial = sldns_buffer_read_u32(pkt); + } + return 1; +} + +/** read one line from chunks into buffer at current position */ +static int +chunkline_get_line(struct auth_chunk** chunk, size_t* chunk_pos, + sldns_buffer* buf) +{ + int readsome = 0; + while(*chunk) { + /* more text in this chunk? */ + if(*chunk_pos < (*chunk)->len) { + readsome = 1; + while(*chunk_pos < (*chunk)->len) { + char c = (char)((*chunk)->data[*chunk_pos]); + (*chunk_pos)++; + if(sldns_buffer_remaining(buf) < 2) { + /* buffer too short */ + verbose(VERB_ALGO, "http chunkline, " + "line too long"); + return 0; + } + sldns_buffer_write_u8(buf, (uint8_t)c); + if(c == '\n') { + /* we are done */ + return 1; + } + } + } + /* move to next chunk */ + *chunk = (*chunk)->next; + *chunk_pos = 0; + } + /* no more text */ + if(readsome) return 1; + return 0; +} + +/** count number of open and closed parenthesis in a chunkline */ +static int +chunkline_count_parens(sldns_buffer* buf, size_t start) +{ + size_t end = sldns_buffer_position(buf); + size_t i; + int count = 0; + int squote = 0, dquote = 0; + for(i=start; i 0) { + chunkline_remove_trailcomment(buf, pos); + pos = sldns_buffer_position(buf); + if(!chunkline_get_line(chunk, chunk_pos, buf)) { + if(sldns_buffer_position(buf) < sldns_buffer_limit(buf)) + sldns_buffer_write_u8_at(buf, sldns_buffer_position(buf), 0); + else sldns_buffer_write_u8_at(buf, sldns_buffer_position(buf)-1, 0); + sldns_buffer_flip(buf); + return 0; + } + parens += chunkline_count_parens(buf, pos); + } + + if(sldns_buffer_remaining(buf) < 1) { + verbose(VERB_ALGO, "http chunkline: " + "line too long"); + return 0; + } + sldns_buffer_write_u8_at(buf, sldns_buffer_position(buf), 0); + sldns_buffer_flip(buf); + return 1; +} + +/** process $ORIGIN for http */ +static int +http_parse_origin(sldns_buffer* buf, struct sldns_file_parse_state* pstate) +{ + char* line = (char*)sldns_buffer_begin(buf); + if(strncmp(line, "$ORIGIN", 7) == 0 && + isspace((unsigned char)line[7])) { + int s; + pstate->origin_len = sizeof(pstate->origin); + s = sldns_str2wire_dname_buf(sldns_strip_ws(line+8), + pstate->origin, &pstate->origin_len); + if(s) pstate->origin_len = 0; + return 1; + } + return 0; +} + +/** process $TTL for http */ +static int +http_parse_ttl(sldns_buffer* buf, struct sldns_file_parse_state* pstate) +{ + char* line = (char*)sldns_buffer_begin(buf); + if(strncmp(line, "$TTL", 4) == 0 && + isspace((unsigned char)line[4])) { + const char* end = NULL; + pstate->default_ttl = sldns_str2period( + sldns_strip_ws(line+5), &end); + return 1; + } + return 0; +} + +/** find noncomment RR line in chunks, collates lines if ( ) format */ +static int +chunkline_non_comment_RR(struct auth_chunk** chunk, size_t* chunk_pos, + sldns_buffer* buf, struct sldns_file_parse_state* pstate) +{ + while(chunkline_get_line_collated(chunk, chunk_pos, buf)) { + if(chunkline_is_comment_line_or_empty(buf)) { + /* a comment, go to next line */ + continue; + } + if(http_parse_origin(buf, pstate)) { + continue; /* $ORIGIN has been handled */ + } + if(http_parse_ttl(buf, pstate)) { + continue; /* $TTL has been handled */ + } + return 1; + } + /* no noncomments, fail */ + return 0; +} + +/** check syntax of chunklist zonefile, parse first RR, return false on + * failure and return a string in the scratch buffer (first RR string) + * on failure. */ +static int +http_zonefile_syntax_check(struct auth_xfer* xfr, sldns_buffer* buf) +{ + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t rr_len, dname_len = 0; + struct sldns_file_parse_state pstate; + struct auth_chunk* chunk; + size_t chunk_pos; + int e; + memset(&pstate, 0, sizeof(pstate)); + pstate.default_ttl = 3600; + if(xfr->namelen < sizeof(pstate.origin)) { + pstate.origin_len = xfr->namelen; + memmove(pstate.origin, xfr->name, xfr->namelen); + } + chunk = xfr->task_transfer->chunks_first; + chunk_pos = 0; + if(!chunkline_non_comment_RR(&chunk, &chunk_pos, buf, &pstate)) { + return 0; + } + rr_len = sizeof(rr); + e=sldns_str2wire_rr_buf((char*)sldns_buffer_begin(buf), rr, &rr_len, + &dname_len, pstate.default_ttl, + pstate.origin_len?pstate.origin:NULL, pstate.origin_len, + pstate.prev_rr_len?pstate.prev_rr:NULL, pstate.prev_rr_len); + if(e != 0) { + log_err("parse failure on first RR[%d]: %s", + LDNS_WIREPARSE_OFFSET(e), + sldns_get_errorstr_parse(LDNS_WIREPARSE_ERROR(e))); + return 0; + } + /* check that class is correct */ + if(sldns_wirerr_get_class(rr, rr_len, dname_len) != xfr->dclass) { + log_err("parse failure: first record in downloaded zonefile " + "from wrong RR class"); + return 0; + } + return 1; +} + +/** sum sizes of chunklist */ +static size_t +chunklist_sum(struct auth_chunk* list) +{ + struct auth_chunk* p; + size_t s = 0; + for(p=list; p; p=p->next) { + s += p->len; + } + return s; +} + +/** remove newlines from collated line */ +static void +chunkline_newline_removal(sldns_buffer* buf) +{ + size_t i, end=sldns_buffer_limit(buf); + for(i=0; idefault_ttl, + pstate->origin_len?pstate->origin:NULL, pstate->origin_len, + pstate->prev_rr_len?pstate->prev_rr:NULL, pstate->prev_rr_len); + if(e != 0) { + log_err("%s/%s parse failure RR[%d]: %s in '%s'", + xfr->task_transfer->master->host, + xfr->task_transfer->master->file, + LDNS_WIREPARSE_OFFSET(e), + sldns_get_errorstr_parse(LDNS_WIREPARSE_ERROR(e)), + line); + return 0; + } + if(rr_len == 0) + return 1; /* empty line or so */ + + /* set prev */ + if(dname_len < sizeof(pstate->prev_rr)) { + memmove(pstate->prev_rr, rr, dname_len); + pstate->prev_rr_len = dname_len; + } + + return az_insert_rr(z, rr, rr_len, dname_len, NULL); +} + +/** RR list iterator, returns RRs from answer section one by one from the + * dns packets in the chunklist */ +static void +chunk_rrlist_start(struct auth_xfer* xfr, struct auth_chunk** rr_chunk, + int* rr_num, size_t* rr_pos) +{ + *rr_chunk = xfr->task_transfer->chunks_first; + *rr_num = 0; + *rr_pos = 0; +} + +/** RR list iterator, see if we are at the end of the list */ +static int +chunk_rrlist_end(struct auth_chunk* rr_chunk, int rr_num) +{ + while(rr_chunk) { + if(rr_chunk->len < LDNS_HEADER_SIZE) + return 1; + if(rr_num < (int)LDNS_ANCOUNT(rr_chunk->data)) + return 0; + /* no more RRs in this chunk */ + /* continue with next chunk, see if it has RRs */ + rr_chunk = rr_chunk->next; + rr_num = 0; + } + return 1; +} + +/** RR list iterator, move to next RR */ +static void +chunk_rrlist_gonext(struct auth_chunk** rr_chunk, int* rr_num, + size_t* rr_pos, size_t rr_nextpos) +{ + /* already at end of chunks? */ + if(!*rr_chunk) + return; + /* move within this chunk */ + if((*rr_chunk)->len >= LDNS_HEADER_SIZE && + (*rr_num)+1 < (int)LDNS_ANCOUNT((*rr_chunk)->data)) { + (*rr_num) += 1; + *rr_pos = rr_nextpos; + return; + } + /* no more RRs in this chunk */ + /* continue with next chunk, see if it has RRs */ + if(*rr_chunk) + *rr_chunk = (*rr_chunk)->next; + while(*rr_chunk) { + *rr_num = 0; + *rr_pos = 0; + if((*rr_chunk)->len >= LDNS_HEADER_SIZE && + LDNS_ANCOUNT((*rr_chunk)->data) > 0) { + return; + } + *rr_chunk = (*rr_chunk)->next; + } +} + +/** RR iterator, get current RR information, false on parse error */ +static int +chunk_rrlist_get_current(struct auth_chunk* rr_chunk, int rr_num, + size_t rr_pos, uint8_t** rr_dname, uint16_t* rr_type, + uint16_t* rr_class, uint32_t* rr_ttl, uint16_t* rr_rdlen, + uint8_t** rr_rdata, size_t* rr_nextpos) +{ + sldns_buffer pkt; + /* integrity checks on position */ + if(!rr_chunk) return 0; + if(rr_chunk->len < LDNS_HEADER_SIZE) return 0; + if(rr_num >= (int)LDNS_ANCOUNT(rr_chunk->data)) return 0; + if(rr_pos >= rr_chunk->len) return 0; + + /* fetch rr information */ + sldns_buffer_init_frm_data(&pkt, rr_chunk->data, rr_chunk->len); + if(rr_pos == 0) { + size_t i; + /* skip question section */ + sldns_buffer_set_position(&pkt, LDNS_HEADER_SIZE); + for(i=0; idata); i++) { + if(pkt_dname_len(&pkt) == 0) return 0; + if(sldns_buffer_remaining(&pkt) < 4) return 0; + sldns_buffer_skip(&pkt, 4); /* type and class */ + } + } else { + sldns_buffer_set_position(&pkt, rr_pos); + } + *rr_dname = sldns_buffer_current(&pkt); + if(pkt_dname_len(&pkt) == 0) return 0; + if(sldns_buffer_remaining(&pkt) < 10) return 0; + *rr_type = sldns_buffer_read_u16(&pkt); + *rr_class = sldns_buffer_read_u16(&pkt); + *rr_ttl = sldns_buffer_read_u32(&pkt); + *rr_rdlen = sldns_buffer_read_u16(&pkt); + if(sldns_buffer_remaining(&pkt) < (*rr_rdlen)) return 0; + *rr_rdata = sldns_buffer_current(&pkt); + sldns_buffer_skip(&pkt, (ssize_t)(*rr_rdlen)); + *rr_nextpos = sldns_buffer_position(&pkt); + return 1; +} + +/** print log message where we are in parsing the zone transfer */ +static void +log_rrlist_position(const char* label, struct auth_chunk* rr_chunk, + uint8_t* rr_dname, uint16_t rr_type, size_t rr_counter) +{ + sldns_buffer pkt; + size_t dlen; + uint8_t buf[256]; + char str[256]; + char typestr[32]; + sldns_buffer_init_frm_data(&pkt, rr_chunk->data, rr_chunk->len); + sldns_buffer_set_position(&pkt, (size_t)(rr_dname - + sldns_buffer_begin(&pkt))); + if((dlen=pkt_dname_len(&pkt)) == 0) return; + if(dlen >= sizeof(buf)) return; + dname_pkt_copy(&pkt, buf, rr_dname); + dname_str(buf, str); + (void)sldns_wire2str_type_buf(rr_type, typestr, sizeof(typestr)); + verbose(VERB_ALGO, "%s at[%d] %s %s", label, (int)rr_counter, + str, typestr); +} + +/** check that start serial is OK for ixfr. we are at rr_counter == 0, + * and we are going to check rr_counter == 1 (has to be type SOA) serial */ +static int +ixfr_start_serial(struct auth_chunk* rr_chunk, int rr_num, size_t rr_pos, + uint8_t* rr_dname, uint16_t rr_type, uint16_t rr_class, + uint32_t rr_ttl, uint16_t rr_rdlen, uint8_t* rr_rdata, + size_t rr_nextpos, uint32_t transfer_serial, uint32_t xfr_serial) +{ + uint32_t startserial; + /* move forward on RR */ + chunk_rrlist_gonext(&rr_chunk, &rr_num, &rr_pos, rr_nextpos); + if(chunk_rrlist_end(rr_chunk, rr_num)) { + /* no second SOA */ + verbose(VERB_OPS, "IXFR has no second SOA record"); + return 0; + } + if(!chunk_rrlist_get_current(rr_chunk, rr_num, rr_pos, + &rr_dname, &rr_type, &rr_class, &rr_ttl, &rr_rdlen, + &rr_rdata, &rr_nextpos)) { + verbose(VERB_OPS, "IXFR cannot parse second SOA record"); + /* failed to parse RR */ + return 0; + } + if(rr_type != LDNS_RR_TYPE_SOA) { + verbose(VERB_OPS, "IXFR second record is not type SOA"); + return 0; + } + if(rr_rdlen < 22) { + verbose(VERB_OPS, "IXFR, second SOA has short rdlength"); + return 0; /* bad SOA rdlen */ + } + startserial = sldns_read_uint32(rr_rdata+rr_rdlen-20); + if(startserial == transfer_serial) { + /* empty AXFR, not an IXFR */ + verbose(VERB_OPS, "IXFR second serial same as first"); + return 0; + } + if(startserial != xfr_serial) { + /* wrong start serial, it does not match the serial in + * memory */ + verbose(VERB_OPS, "IXFR is from serial %u to %u but %u " + "in memory, rejecting the zone transfer", + (unsigned)startserial, (unsigned)transfer_serial, + (unsigned)xfr_serial); + return 0; + } + /* everything OK in second SOA serial */ + return 1; +} + +/** apply IXFR to zone in memory. z is locked. false on failure(mallocfail) */ +static int +apply_ixfr(struct auth_xfer* xfr, struct auth_zone* z, + struct sldns_buffer* scratch_buffer) +{ + struct auth_chunk* rr_chunk; + int rr_num; + size_t rr_pos; + uint8_t* rr_dname, *rr_rdata; + uint16_t rr_type, rr_class, rr_rdlen; + uint32_t rr_ttl; + size_t rr_nextpos; + int have_transfer_serial = 0; + uint32_t transfer_serial = 0; + size_t rr_counter = 0; + int delmode = 0; + int softfail = 0; + + /* start RR iterator over chunklist of packets */ + chunk_rrlist_start(xfr, &rr_chunk, &rr_num, &rr_pos); + while(!chunk_rrlist_end(rr_chunk, rr_num)) { + if(!chunk_rrlist_get_current(rr_chunk, rr_num, rr_pos, + &rr_dname, &rr_type, &rr_class, &rr_ttl, &rr_rdlen, + &rr_rdata, &rr_nextpos)) { + /* failed to parse RR */ + return 0; + } + if(verbosity>=7) log_rrlist_position("apply ixfr", + rr_chunk, rr_dname, rr_type, rr_counter); + /* twiddle add/del mode and check for start and end */ + if(rr_counter == 0 && rr_type != LDNS_RR_TYPE_SOA) + return 0; + if(rr_counter == 1 && rr_type != LDNS_RR_TYPE_SOA) { + /* this is an AXFR returned from the IXFR master */ + /* but that should already have been detected, by + * on_ixfr_is_axfr */ + return 0; + } + if(rr_type == LDNS_RR_TYPE_SOA) { + uint32_t serial; + if(rr_rdlen < 22) return 0; /* bad SOA rdlen */ + serial = sldns_read_uint32(rr_rdata+rr_rdlen-20); + if(have_transfer_serial == 0) { + have_transfer_serial = 1; + transfer_serial = serial; + delmode = 1; /* gets negated below */ + /* check second RR before going any further */ + if(!ixfr_start_serial(rr_chunk, rr_num, rr_pos, + rr_dname, rr_type, rr_class, rr_ttl, + rr_rdlen, rr_rdata, rr_nextpos, + transfer_serial, xfr->serial)) { + return 0; + } + } else if(transfer_serial == serial) { + have_transfer_serial++; + if(rr_counter == 1) { + /* empty AXFR, with SOA; SOA; */ + /* should have been detected by + * on_ixfr_is_axfr */ + return 0; + } + if(have_transfer_serial == 3) { + /* see serial three times for end */ + /* eg. IXFR: + * SOA 3 start + * SOA 1 second RR, followed by del + * SOA 2 followed by add + * SOA 2 followed by del + * SOA 3 followed by add + * SOA 3 end */ + /* ended by SOA record */ + xfr->serial = transfer_serial; + break; + } + } + /* twiddle add/del mode */ + /* switch from delete part to add part and back again + * just before the soa, it gets deleted and added too + * this means we switch to delete mode for the final + * SOA(so skip that one) */ + delmode = !delmode; + } + /* process this RR */ + /* if the RR is deleted twice or added twice, then we + * softfail, and continue with the rest of the IXFR, so + * that we serve something fairly nice during the refetch */ + if(verbosity>=7) log_rrlist_position((delmode?"del":"add"), + rr_chunk, rr_dname, rr_type, rr_counter); + if(delmode) { + /* delete this RR */ + int nonexist = 0; + if(!az_remove_rr_decompress(z, rr_chunk->data, + rr_chunk->len, scratch_buffer, rr_dname, + rr_type, rr_class, rr_ttl, rr_rdata, rr_rdlen, + &nonexist)) { + /* failed, malloc error or so */ + return 0; + } + if(nonexist) { + /* it was removal of a nonexisting RR */ + if(verbosity>=4) log_rrlist_position( + "IXFR error nonexistent RR", + rr_chunk, rr_dname, rr_type, rr_counter); + softfail = 1; + } + } else if(rr_counter != 0) { + /* skip first SOA RR for addition, it is added in + * the addition part near the end of the ixfr, when + * that serial is seen the second time. */ + int duplicate = 0; + /* add this RR */ + if(!az_insert_rr_decompress(z, rr_chunk->data, + rr_chunk->len, scratch_buffer, rr_dname, + rr_type, rr_class, rr_ttl, rr_rdata, rr_rdlen, + &duplicate)) { + /* failed, malloc error or so */ + return 0; + } + if(duplicate) { + /* it was a duplicate */ + if(verbosity>=4) log_rrlist_position( + "IXFR error duplicate RR", + rr_chunk, rr_dname, rr_type, rr_counter); + softfail = 1; + } + } + + rr_counter++; + chunk_rrlist_gonext(&rr_chunk, &rr_num, &rr_pos, rr_nextpos); + } + if(softfail) { + verbose(VERB_ALGO, "IXFR did not apply cleanly, fetching full zone"); + return 0; + } + return 1; +} + +/** apply AXFR to zone in memory. z is locked. false on failure(mallocfail) */ +static int +apply_axfr(struct auth_xfer* xfr, struct auth_zone* z, + struct sldns_buffer* scratch_buffer) +{ + struct auth_chunk* rr_chunk; + int rr_num; + size_t rr_pos; + uint8_t* rr_dname, *rr_rdata; + uint16_t rr_type, rr_class, rr_rdlen; + uint32_t rr_ttl; + uint32_t serial = 0; + size_t rr_nextpos; + size_t rr_counter = 0; + int have_end_soa = 0; + + /* clear the data tree */ + traverse_postorder(&z->data, auth_data_del, NULL); + rbtree_init(&z->data, &auth_data_cmp); + xfr->have_zone = 0; + xfr->serial = 0; + + /* insert all RRs in to the zone */ + /* insert the SOA only once, skip the last one */ + /* start RR iterator over chunklist of packets */ + chunk_rrlist_start(xfr, &rr_chunk, &rr_num, &rr_pos); + while(!chunk_rrlist_end(rr_chunk, rr_num)) { + if(!chunk_rrlist_get_current(rr_chunk, rr_num, rr_pos, + &rr_dname, &rr_type, &rr_class, &rr_ttl, &rr_rdlen, + &rr_rdata, &rr_nextpos)) { + /* failed to parse RR */ + return 0; + } + if(verbosity>=7) log_rrlist_position("apply_axfr", + rr_chunk, rr_dname, rr_type, rr_counter); + if(rr_type == LDNS_RR_TYPE_SOA) { + if(rr_counter != 0) { + /* end of the axfr */ + have_end_soa = 1; + break; + } + if(rr_rdlen < 22) return 0; /* bad SOA rdlen */ + serial = sldns_read_uint32(rr_rdata+rr_rdlen-20); + } + + /* add this RR */ + if(!az_insert_rr_decompress(z, rr_chunk->data, rr_chunk->len, + scratch_buffer, rr_dname, rr_type, rr_class, rr_ttl, + rr_rdata, rr_rdlen, NULL)) { + /* failed, malloc error or so */ + return 0; + } + + rr_counter++; + chunk_rrlist_gonext(&rr_chunk, &rr_num, &rr_pos, rr_nextpos); + } + if(!have_end_soa) { + log_err("no end SOA record for AXFR"); + return 0; + } + + xfr->serial = serial; + xfr->have_zone = 1; + return 1; +} + +/** apply HTTP to zone in memory. z is locked. false on failure(mallocfail) */ +static int +apply_http(struct auth_xfer* xfr, struct auth_zone* z, + struct sldns_buffer* scratch_buffer) +{ + /* parse data in chunks */ + /* parse RR's and read into memory. ignore $INCLUDE from the + * downloaded file*/ + struct sldns_file_parse_state pstate; + struct auth_chunk* chunk; + size_t chunk_pos; + memset(&pstate, 0, sizeof(pstate)); + pstate.default_ttl = 3600; + if(xfr->namelen < sizeof(pstate.origin)) { + pstate.origin_len = xfr->namelen; + memmove(pstate.origin, xfr->name, xfr->namelen); + } + + if(verbosity >= VERB_ALGO) + verbose(VERB_ALGO, "http download %s of size %d", + xfr->task_transfer->master->file, + (int)chunklist_sum(xfr->task_transfer->chunks_first)); + if(xfr->task_transfer->chunks_first && verbosity >= VERB_ALGO) { + char preview[1024]; + if(xfr->task_transfer->chunks_first->len+1 > sizeof(preview)) { + memmove(preview, xfr->task_transfer->chunks_first->data, + sizeof(preview)-1); + preview[sizeof(preview)-1]=0; + } else { + memmove(preview, xfr->task_transfer->chunks_first->data, + xfr->task_transfer->chunks_first->len); + preview[xfr->task_transfer->chunks_first->len]=0; + } + log_info("auth zone http downloaded content preview: %s", + preview); + } + + /* perhaps a little syntax check before we try to apply the data? */ + if(!http_zonefile_syntax_check(xfr, scratch_buffer)) { + log_err("http download %s/%s does not contain a zonefile, " + "but got '%s'", xfr->task_transfer->master->host, + xfr->task_transfer->master->file, + sldns_buffer_begin(scratch_buffer)); + return 0; + } + + /* clear the data tree */ + traverse_postorder(&z->data, auth_data_del, NULL); + rbtree_init(&z->data, &auth_data_cmp); + xfr->have_zone = 0; + xfr->serial = 0; + + chunk = xfr->task_transfer->chunks_first; + chunk_pos = 0; + pstate.lineno = 0; + while(chunkline_get_line_collated(&chunk, &chunk_pos, scratch_buffer)) { + /* process this line */ + pstate.lineno++; + chunkline_newline_removal(scratch_buffer); + if(chunkline_is_comment_line_or_empty(scratch_buffer)) { + continue; + } + /* parse line and add RR */ + if(http_parse_origin(scratch_buffer, &pstate)) { + continue; /* $ORIGIN has been handled */ + } + if(http_parse_ttl(scratch_buffer, &pstate)) { + continue; /* $TTL has been handled */ + } + if(!http_parse_add_rr(xfr, z, scratch_buffer, &pstate)) { + verbose(VERB_ALGO, "error parsing line [%s:%d] %s", + xfr->task_transfer->master->file, + pstate.lineno, + sldns_buffer_begin(scratch_buffer)); + return 0; + } + } + return 1; +} + +/** write http chunks to zonefile to create downloaded file */ +static int +auth_zone_write_chunks(struct auth_xfer* xfr, const char* fname) +{ + FILE* out; + struct auth_chunk* p; + out = fopen(fname, "w"); + if(!out) { + log_err("could not open %s: %s", fname, strerror(errno)); + return 0; + } + for(p = xfr->task_transfer->chunks_first; p ; p = p->next) { + if(!write_out(out, (char*)p->data, p->len)) { + log_err("could not write http download to %s", fname); + fclose(out); + return 0; + } + } + fclose(out); + return 1; +} + +/** write to zonefile after zone has been updated */ +static void +xfr_write_after_update(struct auth_xfer* xfr, struct module_env* env) +{ + struct auth_zone* z; + char tmpfile[1024]; + lock_basic_unlock(&xfr->lock); + + /* get lock again, so it is a readlock and concurrently queries + * can be answered */ + lock_rw_rdlock(&env->auth_zones->lock); + z = auth_zone_find(env->auth_zones, xfr->name, xfr->namelen, + xfr->dclass); + if(!z) { + lock_rw_unlock(&env->auth_zones->lock); + /* the zone is gone, ignore xfr results */ + lock_basic_lock(&xfr->lock); + return; + } + lock_rw_rdlock(&z->lock); + lock_basic_lock(&xfr->lock); + lock_rw_unlock(&env->auth_zones->lock); + + if(z->zonefile == NULL) { + lock_rw_unlock(&z->lock); + /* no write needed, no zonefile set */ + return; + } + + /* write to tempfile first */ + if((size_t)strlen(z->zonefile) + 16 > sizeof(tmpfile)) { + verbose(VERB_ALGO, "tmpfilename too long, cannot update " + " zonefile %s", z->zonefile); + lock_rw_unlock(&z->lock); + return; + } + snprintf(tmpfile, sizeof(tmpfile), "%s.tmp%u", z->zonefile, + (unsigned)getpid()); + if(xfr->task_transfer->master->http) { + /* use the stored chunk list to write them */ + if(!auth_zone_write_chunks(xfr, tmpfile)) { + unlink(tmpfile); + lock_rw_unlock(&z->lock); + } + } else if(!auth_zone_write_file(z, tmpfile)) { + unlink(tmpfile); + lock_rw_unlock(&z->lock); + return; + } + if(rename(tmpfile, z->zonefile) < 0) { + log_err("could not rename(%s, %s): %s", tmpfile, z->zonefile, + strerror(errno)); + unlink(tmpfile); + lock_rw_unlock(&z->lock); + return; + } + lock_rw_unlock(&z->lock); +} + +/** process chunk list and update zone in memory, + * return false if it did not work */ +static int +xfr_process_chunk_list(struct auth_xfer* xfr, struct module_env* env, + int* ixfr_fail) +{ + struct auth_zone* z; + + /* obtain locks and structures */ + /* release xfr lock, then, while holding az->lock grab both + * z->lock and xfr->lock */ + lock_basic_unlock(&xfr->lock); + lock_rw_rdlock(&env->auth_zones->lock); + z = auth_zone_find(env->auth_zones, xfr->name, xfr->namelen, + xfr->dclass); + if(!z) { + lock_rw_unlock(&env->auth_zones->lock); + /* the zone is gone, ignore xfr results */ + lock_basic_lock(&xfr->lock); + return 0; + } + lock_rw_wrlock(&z->lock); + lock_basic_lock(&xfr->lock); + lock_rw_unlock(&env->auth_zones->lock); + + /* apply data */ + if(xfr->task_transfer->master->http) { + if(!apply_http(xfr, z, env->scratch_buffer)) { + lock_rw_unlock(&z->lock); + verbose(VERB_ALGO, "http from %s: could not store data", + xfr->task_transfer->master->host); + return 0; + } + } else if(xfr->task_transfer->on_ixfr && + !xfr->task_transfer->on_ixfr_is_axfr) { + if(!apply_ixfr(xfr, z, env->scratch_buffer)) { + lock_rw_unlock(&z->lock); + verbose(VERB_ALGO, "xfr from %s: could not store IXFR" + " data", xfr->task_transfer->master->host); + *ixfr_fail = 1; + return 0; + } + } else { + if(!apply_axfr(xfr, z, env->scratch_buffer)) { + lock_rw_unlock(&z->lock); + verbose(VERB_ALGO, "xfr from %s: could not store AXFR" + " data", xfr->task_transfer->master->host); + return 0; + } + } + xfr->zone_expired = 0; + z->zone_expired = 0; + if(!xfr_find_soa(z, xfr)) { + lock_rw_unlock(&z->lock); + verbose(VERB_ALGO, "xfr from %s: no SOA in zone after update" + " (or malformed RR)", xfr->task_transfer->master->host); + return 0; + } + if(xfr->have_zone) + xfr->lease_time = *env->now; + + /* unlock */ + lock_rw_unlock(&z->lock); + + if(verbosity >= VERB_QUERY && xfr->have_zone) { + char zname[256]; + dname_str(xfr->name, zname); + verbose(VERB_QUERY, "auth zone %s updated to serial %u", zname, + (unsigned)xfr->serial); + } + /* see if we need to write to a zonefile */ + xfr_write_after_update(xfr, env); + return 1; +} + +/** disown task_transfer. caller must hold xfr.lock */ +static void +xfr_transfer_disown(struct auth_xfer* xfr) +{ + /* remove the commpoint */ + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + /* we don't own this item anymore */ + xfr->task_transfer->worker = NULL; + xfr->task_transfer->env = NULL; +} + +/** lookup a host name for its addresses, if needed */ +static int +xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) +{ + struct sockaddr_storage addr; + socklen_t addrlen = 0; + struct auth_master* master = xfr->task_transfer->lookup_target; + struct query_info qinfo; + uint16_t qflags = BIT_RD; + uint8_t dname[LDNS_MAX_DOMAINLEN+1]; + struct edns_data edns; + sldns_buffer* buf = env->scratch_buffer; + if(!master) return 0; + if(extstrtoaddr(master->host, &addr, &addrlen)) { + /* not needed, host is in IP addr format */ + return 0; + } + if(master->allow_notify) + return 0; /* allow-notifies are not transferred from, no + lookup is needed */ + + /* use mesh_new_callback to probe for non-addr hosts, + * and then wait for them to be looked up (in cache, or query) */ + qinfo.qname_len = sizeof(dname); + if(sldns_str2wire_dname_buf(master->host, dname, &qinfo.qname_len) + != 0) { + log_err("cannot parse host name of master %s", master->host); + return 0; + } + qinfo.qname = dname; + qinfo.qclass = xfr->dclass; + qinfo.qtype = LDNS_RR_TYPE_A; + if(xfr->task_transfer->lookup_aaaa) + qinfo.qtype = LDNS_RR_TYPE_AAAA; + qinfo.local_alias = NULL; + if(verbosity >= VERB_ALGO) { + char buf[512]; + char buf2[LDNS_MAX_DOMAINLEN+1]; + dname_str(xfr->name, buf2); + snprintf(buf, sizeof(buf), "auth zone %s: master lookup" + " for task_transfer", buf2); + log_query_info(VERB_ALGO, buf, &qinfo); + } + edns.edns_present = 1; + edns.ext_rcode = 0; + edns.edns_version = 0; + edns.bits = EDNS_DO; + edns.opt_list = NULL; + if(sldns_buffer_capacity(buf) < 65535) + edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); + else edns.udp_size = 65535; + + /* unlock xfr during mesh_new_callback() because the callback can be + * called straight away */ + lock_basic_unlock(&xfr->lock); + if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, + &auth_xfer_transfer_lookup_callback, xfr)) { + lock_basic_lock(&xfr->lock); + log_err("out of memory lookup up master %s", master->host); + return 0; + } + lock_basic_lock(&xfr->lock); + return 1; +} + +/** initiate TCP to the target and fetch zone. + * returns true if that was successfully started, and timeout setup. */ +static int +xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env) +{ + struct sockaddr_storage addr; + socklen_t addrlen = 0; + struct auth_master* master = xfr->task_transfer->master; + if(!master) return 0; + if(master->allow_notify) return 0; /* only for notify */ + + /* get master addr */ + if(xfr->task_transfer->scan_addr) { + addrlen = xfr->task_transfer->scan_addr->addrlen; + memmove(&addr, &xfr->task_transfer->scan_addr->addr, addrlen); + } else { + if(!extstrtoaddr(master->host, &addr, &addrlen)) { + /* the ones that are not in addr format are supposed + * to be looked up. The lookup has failed however, + * so skip them */ + char zname[255+1]; + dname_str(xfr->name, zname); + log_err("%s: failed lookup, cannot transfer from master %s", + zname, master->host); + return 0; + } + } + + /* remove previous TCP connection (if any) */ + if(xfr->task_transfer->cp) { + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + } + + if(master->http) { + /* perform http fetch */ + /* store http port number into sockaddr, + * unless someone used unbound's host@port notation */ + if(strchr(master->host, '@') == NULL) + sockaddr_store_port(&addr, addrlen, master->port); + xfr->task_transfer->cp = outnet_comm_point_for_http( + env->outnet, auth_xfer_transfer_http_callback, xfr, + &addr, addrlen, AUTH_TRANSFER_TIMEOUT, master->ssl, + master->host, master->file); + if(!xfr->task_transfer->cp) { + char zname[255+1]; + dname_str(xfr->name, zname); + verbose(VERB_ALGO, "cannot create http cp " + "connection for %s to %s", zname, + master->host); + return 0; + } + return 1; + } + + /* perform AXFR/IXFR */ + /* set the packet to be written */ + /* create new ID */ + xfr->task_transfer->id = (uint16_t)(ub_random(env->rnd)&0xffff); + xfr_create_ixfr_packet(xfr, env->scratch_buffer, + xfr->task_transfer->id, master); + + /* connect on fd */ + xfr->task_transfer->cp = outnet_comm_point_for_tcp(env->outnet, + auth_xfer_transfer_tcp_callback, xfr, &addr, addrlen, + env->scratch_buffer, AUTH_TRANSFER_TIMEOUT); + if(!xfr->task_transfer->cp) { + char zname[255+1]; + dname_str(xfr->name, zname); + verbose(VERB_ALGO, "cannot create tcp cp connection for " + "xfr %s to %s", zname, master->host); + return 0; + } + return 1; +} + +/** perform next lookup, next transfer TCP, or end and resume wait time task */ +static void +xfr_transfer_nexttarget_or_end(struct auth_xfer* xfr, struct module_env* env) +{ + log_assert(xfr->task_transfer->worker == env->worker); + + /* are we performing lookups? */ + while(xfr->task_transfer->lookup_target) { + if(xfr_transfer_lookup_host(xfr, env)) { + /* wait for lookup to finish, + * note that the hostname may be in unbound's cache + * and we may then get an instant cache response, + * and that calls the callback just like a full + * lookup and lookup failures also call callback */ + lock_basic_unlock(&xfr->lock); + return; + } + xfr_transfer_move_to_next_lookup(xfr, env); + } + + /* initiate TCP and fetch the zone from the master */ + /* and set timeout on it */ + while(!xfr_transfer_end_of_list(xfr)) { + xfr->task_transfer->master = xfr_transfer_current_master(xfr); + if(xfr_transfer_init_fetch(xfr, env)) { + /* successfully started, wait for callback */ + lock_basic_unlock(&xfr->lock); + return; + } + /* failed to fetch, next master */ + xfr_transfer_nextmaster(xfr); + } + + /* we failed to fetch the zone, move to wait task + * use the shorter retry timeout */ + xfr_transfer_disown(xfr); + + /* pick up the nextprobe task and wait */ + xfr_set_timeout(xfr, env, 1, 0); + lock_basic_unlock(&xfr->lock); +} + +/** add addrs from A or AAAA rrset to the master */ +static void +xfr_master_add_addrs(struct auth_master* m, struct ub_packed_rrset_key* rrset, + uint16_t rrtype) +{ + size_t i; + struct packed_rrset_data* data; + if(!m || !rrset) return; + if(rrtype != LDNS_RR_TYPE_A && rrtype != LDNS_RR_TYPE_AAAA) + return; + data = (struct packed_rrset_data*)rrset->entry.data; + for(i=0; icount; i++) { + struct auth_addr* a; + size_t len = data->rr_len[i] - 2; + uint8_t* rdata = data->rr_data[i]+2; + if(rrtype == LDNS_RR_TYPE_A && len != INET_SIZE) + continue; /* wrong length for A */ + if(rrtype == LDNS_RR_TYPE_AAAA && len != INET6_SIZE) + continue; /* wrong length for AAAA */ + + /* add and alloc it */ + a = (struct auth_addr*)calloc(1, sizeof(*a)); + if(!a) { + log_err("out of memory"); + return; + } + if(rrtype == LDNS_RR_TYPE_A) { + struct sockaddr_in* sa; + a->addrlen = (socklen_t)sizeof(*sa); + sa = (struct sockaddr_in*)&a->addr; + sa->sin_family = AF_INET; + sa->sin_port = (in_port_t)htons(UNBOUND_DNS_PORT); + memmove(&sa->sin_addr, rdata, INET_SIZE); + } else { + struct sockaddr_in6* sa; + a->addrlen = (socklen_t)sizeof(*sa); + sa = (struct sockaddr_in6*)&a->addr; + sa->sin6_family = AF_INET6; + sa->sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT); + memmove(&sa->sin6_addr, rdata, INET6_SIZE); + } + if(verbosity >= VERB_ALGO) { + char s[64]; + addr_to_str(&a->addr, a->addrlen, s, sizeof(s)); + verbose(VERB_ALGO, "auth host %s lookup %s", + m->host, s); + } + /* append to list */ + a->next = m->list; + m->list = a; + } +} + +/** callback for task_transfer lookup of host name, of A or AAAA */ +void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer* buf, + enum sec_status ATTR_UNUSED(sec), char* ATTR_UNUSED(why_bogus)) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_transfer); + lock_basic_lock(&xfr->lock); + env = xfr->task_transfer->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return; /* stop on quit */ + } + + /* process result */ + if(rcode == LDNS_RCODE_NOERROR) { + uint16_t wanted_qtype = LDNS_RR_TYPE_A; + struct regional* temp = env->scratch; + struct query_info rq; + struct reply_info* rep; + if(xfr->task_transfer->lookup_aaaa) + wanted_qtype = LDNS_RR_TYPE_AAAA; + memset(&rq, 0, sizeof(rq)); + rep = parse_reply_in_temp_region(buf, temp, &rq); + if(rep && rq.qtype == wanted_qtype && + FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NOERROR) { + /* parsed successfully */ + struct ub_packed_rrset_key* answer = + reply_find_answer_rrset(&rq, rep); + if(answer) { + xfr_master_add_addrs(xfr->task_transfer-> + lookup_target, answer, wanted_qtype); + } + } + } + if(xfr->task_transfer->lookup_target->list && + xfr->task_transfer->lookup_target == xfr_transfer_current_master(xfr)) + xfr->task_transfer->scan_addr = xfr->task_transfer->lookup_target->list; + + /* move to lookup AAAA after A lookup, move to next hostname lookup, + * or move to fetch the zone, or, if nothing to do, end task_transfer */ + xfr_transfer_move_to_next_lookup(xfr, env); + xfr_transfer_nexttarget_or_end(xfr, env); +} + +/** check if xfer (AXFR or IXFR) packet is OK. + * return false if we lost connection (SERVFAIL, or unreadable). + * return false if we need to move from IXFR to AXFR, with gonextonfail + * set to false, so the same master is tried again, but with AXFR. + * return true if fine to link into data. + * return true with transferdone=true when the transfer has ended. + */ +static int +check_xfer_packet(sldns_buffer* pkt, struct auth_xfer* xfr, + int* gonextonfail, int* transferdone) +{ + uint8_t* wire = sldns_buffer_begin(pkt); + int i; + if(sldns_buffer_limit(pkt) < LDNS_HEADER_SIZE) { + verbose(VERB_ALGO, "xfr to %s failed, packet too small", + xfr->task_transfer->master->host); + return 0; + } + if(!LDNS_QR_WIRE(wire)) { + verbose(VERB_ALGO, "xfr to %s failed, packet has no QR flag", + xfr->task_transfer->master->host); + return 0; + } + if(LDNS_TC_WIRE(wire)) { + verbose(VERB_ALGO, "xfr to %s failed, packet has TC flag", + xfr->task_transfer->master->host); + return 0; + } + /* check ID */ + if(LDNS_ID_WIRE(wire) != xfr->task_transfer->id) { + verbose(VERB_ALGO, "xfr to %s failed, packet wrong ID", + xfr->task_transfer->master->host); + return 0; + } + if(LDNS_RCODE_WIRE(wire) != LDNS_RCODE_NOERROR) { + char rcode[32]; + sldns_wire2str_rcode_buf((int)LDNS_RCODE_WIRE(wire), rcode, + sizeof(rcode)); + /* if we are doing IXFR, check for fallback */ + if(xfr->task_transfer->on_ixfr) { + if(LDNS_RCODE_WIRE(wire) == LDNS_RCODE_NOTIMPL || + LDNS_RCODE_WIRE(wire) == LDNS_RCODE_SERVFAIL || + LDNS_RCODE_WIRE(wire) == LDNS_RCODE_REFUSED || + LDNS_RCODE_WIRE(wire) == LDNS_RCODE_FORMERR) { + verbose(VERB_ALGO, "xfr to %s, fallback " + "from IXFR to AXFR (with rcode %s)", + xfr->task_transfer->master->host, + rcode); + xfr->task_transfer->ixfr_fail = 1; + *gonextonfail = 0; + return 0; + } + } + verbose(VERB_ALGO, "xfr to %s failed, packet with rcode %s", + xfr->task_transfer->master->host, rcode); + return 0; + } + if(LDNS_OPCODE_WIRE(wire) != LDNS_PACKET_QUERY) { + verbose(VERB_ALGO, "xfr to %s failed, packet with bad opcode", + xfr->task_transfer->master->host); + return 0; + } + if(LDNS_QDCOUNT(wire) > 1) { + verbose(VERB_ALGO, "xfr to %s failed, packet has qdcount %d", + xfr->task_transfer->master->host, + (int)LDNS_QDCOUNT(wire)); + return 0; + } + + /* check qname */ + sldns_buffer_set_position(pkt, LDNS_HEADER_SIZE); + for(i=0; i<(int)LDNS_QDCOUNT(wire); i++) { + size_t pos = sldns_buffer_position(pkt); + uint16_t qtype, qclass; + if(pkt_dname_len(pkt) == 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "malformed dname", + xfr->task_transfer->master->host); + return 0; + } + if(dname_pkt_compare(pkt, sldns_buffer_at(pkt, pos), + xfr->name) != 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "wrong qname", + xfr->task_transfer->master->host); + return 0; + } + if(sldns_buffer_remaining(pkt) < 4) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated query RR", + xfr->task_transfer->master->host); + return 0; + } + qtype = sldns_buffer_read_u16(pkt); + qclass = sldns_buffer_read_u16(pkt); + if(qclass != xfr->dclass) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "wrong qclass", + xfr->task_transfer->master->host); + return 0; + } + if(xfr->task_transfer->on_ixfr) { + if(qtype != LDNS_RR_TYPE_IXFR) { + verbose(VERB_ALGO, "xfr to %s failed, packet " + "with wrong qtype, expected IXFR", + xfr->task_transfer->master->host); + return 0; + } + } else { + if(qtype != LDNS_RR_TYPE_AXFR) { + verbose(VERB_ALGO, "xfr to %s failed, packet " + "with wrong qtype, expected AXFR", + xfr->task_transfer->master->host); + return 0; + } + } + } + + /* check parse of RRs in packet, store first SOA serial + * to be able to detect last SOA (with that serial) to see if done */ + /* also check for IXFR 'zone up to date' reply */ + for(i=0; i<(int)LDNS_ANCOUNT(wire); i++) { + size_t pos = sldns_buffer_position(pkt); + uint16_t tp, rdlen; + if(pkt_dname_len(pkt) == 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "malformed dname in answer section", + xfr->task_transfer->master->host); + return 0; + } + if(sldns_buffer_remaining(pkt) < 10) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR", + xfr->task_transfer->master->host); + return 0; + } + tp = sldns_buffer_read_u16(pkt); + (void)sldns_buffer_read_u16(pkt); /* class */ + (void)sldns_buffer_read_u32(pkt); /* ttl */ + rdlen = sldns_buffer_read_u16(pkt); + if(sldns_buffer_remaining(pkt) < rdlen) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR rdata", + xfr->task_transfer->master->host); + return 0; + } + + /* RR parses (haven't checked rdata itself), now look at + * SOA records to see serial number */ + if(xfr->task_transfer->rr_scan_num == 0 && + tp != LDNS_RR_TYPE_SOA) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "malformed zone transfer, no start SOA", + xfr->task_transfer->master->host); + return 0; + } + if(xfr->task_transfer->rr_scan_num == 1 && + tp != LDNS_RR_TYPE_SOA) { + /* second RR is not a SOA record, this is not an IXFR + * the master is replying with an AXFR */ + xfr->task_transfer->on_ixfr_is_axfr = 1; + } + if(tp == LDNS_RR_TYPE_SOA) { + uint32_t serial; + if(rdlen < 22) { + verbose(VERB_ALGO, "xfr to %s failed, packet " + "with SOA with malformed rdata", + xfr->task_transfer->master->host); + return 0; + } + if(dname_pkt_compare(pkt, sldns_buffer_at(pkt, pos), + xfr->name) != 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet " + "with SOA with wrong dname", + xfr->task_transfer->master->host); + return 0; + } + + /* read serial number of SOA */ + serial = sldns_buffer_read_u32_at(pkt, + sldns_buffer_position(pkt)+rdlen-20); + + /* check for IXFR 'zone has SOA x' reply */ + if(xfr->task_transfer->on_ixfr && + xfr->task_transfer->rr_scan_num == 0 && + LDNS_ANCOUNT(wire)==1) { + verbose(VERB_ALGO, "xfr to %s ended, " + "IXFR reply that zone has serial %u", + xfr->task_transfer->master->host, + (unsigned)serial); + return 0; + } + + /* if first SOA, store serial number */ + if(xfr->task_transfer->got_xfr_serial == 0) { + xfr->task_transfer->got_xfr_serial = 1; + xfr->task_transfer->incoming_xfr_serial = + serial; + verbose(VERB_ALGO, "xfr %s: contains " + "SOA serial %u", + xfr->task_transfer->master->host, + (unsigned)serial); + /* see if end of AXFR */ + } else if(!xfr->task_transfer->on_ixfr || + xfr->task_transfer->on_ixfr_is_axfr) { + /* second SOA with serial is the end + * for AXFR */ + *transferdone = 1; + verbose(VERB_ALGO, "xfr %s: last AXFR packet", + xfr->task_transfer->master->host); + /* for IXFR, count SOA records with that serial */ + } else if(xfr->task_transfer->incoming_xfr_serial == + serial && xfr->task_transfer->got_xfr_serial + == 1) { + xfr->task_transfer->got_xfr_serial++; + /* if not first soa, if serial==firstserial, the + * third time we are at the end, for IXFR */ + } else if(xfr->task_transfer->incoming_xfr_serial == + serial && xfr->task_transfer->got_xfr_serial + == 2) { + verbose(VERB_ALGO, "xfr %s: last IXFR packet", + xfr->task_transfer->master->host); + *transferdone = 1; + /* continue parse check, if that succeeds, + * transfer is done */ + } + } + xfr->task_transfer->rr_scan_num++; + + /* skip over RR rdata to go to the next RR */ + sldns_buffer_skip(pkt, (ssize_t)rdlen); + } + + /* check authority section */ + /* we skip over the RRs checking packet format */ + for(i=0; i<(int)LDNS_NSCOUNT(wire); i++) { + uint16_t rdlen; + if(pkt_dname_len(pkt) == 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "malformed dname in authority section", + xfr->task_transfer->master->host); + return 0; + } + if(sldns_buffer_remaining(pkt) < 10) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR", + xfr->task_transfer->master->host); + return 0; + } + (void)sldns_buffer_read_u16(pkt); /* type */ + (void)sldns_buffer_read_u16(pkt); /* class */ + (void)sldns_buffer_read_u32(pkt); /* ttl */ + rdlen = sldns_buffer_read_u16(pkt); + if(sldns_buffer_remaining(pkt) < rdlen) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR rdata", + xfr->task_transfer->master->host); + return 0; + } + /* skip over RR rdata to go to the next RR */ + sldns_buffer_skip(pkt, (ssize_t)rdlen); + } + + /* check additional section */ + for(i=0; i<(int)LDNS_ARCOUNT(wire); i++) { + uint16_t rdlen; + if(pkt_dname_len(pkt) == 0) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "malformed dname in additional section", + xfr->task_transfer->master->host); + return 0; + } + if(sldns_buffer_remaining(pkt) < 10) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR", + xfr->task_transfer->master->host); + return 0; + } + (void)sldns_buffer_read_u16(pkt); /* type */ + (void)sldns_buffer_read_u16(pkt); /* class */ + (void)sldns_buffer_read_u32(pkt); /* ttl */ + rdlen = sldns_buffer_read_u16(pkt); + if(sldns_buffer_remaining(pkt) < rdlen) { + verbose(VERB_ALGO, "xfr to %s failed, packet with " + "truncated RR rdata", + xfr->task_transfer->master->host); + return 0; + } + /* skip over RR rdata to go to the next RR */ + sldns_buffer_skip(pkt, (ssize_t)rdlen); + } + + return 1; +} + +/** Link the data from this packet into the worklist of transferred data */ +static int +xfer_link_data(sldns_buffer* pkt, struct auth_xfer* xfr) +{ + /* alloc it */ + struct auth_chunk* e; + e = (struct auth_chunk*)calloc(1, sizeof(*e)); + if(!e) return 0; + e->next = NULL; + e->len = sldns_buffer_limit(pkt); + e->data = memdup(sldns_buffer_begin(pkt), e->len); + if(!e->data) { + free(e); + return 0; + } + + /* alloc succeeded, link into list */ + if(!xfr->task_transfer->chunks_first) + xfr->task_transfer->chunks_first = e; + if(xfr->task_transfer->chunks_last) + xfr->task_transfer->chunks_last->next = e; + xfr->task_transfer->chunks_last = e; + return 1; +} + +/** task transfer. the list of data is complete. process it and if failed + * move to next master, if succeeded, end the task transfer */ +static void +process_list_end_transfer(struct auth_xfer* xfr, struct module_env* env) +{ + int ixfr_fail = 0; + if(xfr_process_chunk_list(xfr, env, &ixfr_fail)) { + /* it worked! */ + auth_chunks_delete(xfr->task_transfer); + + /* we fetched the zone, move to wait task */ + xfr_transfer_disown(xfr); + + if(xfr->notify_received && (!xfr->notify_has_serial || + (xfr->notify_has_serial && + xfr_serial_means_update(xfr, xfr->notify_serial)))) { + uint32_t sr = xfr->notify_serial; + int has_sr = xfr->notify_has_serial; + /* we received a notify while probe/transfer was + * in progress. start a new probe and transfer */ + xfr->notify_received = 0; + xfr->notify_has_serial = 0; + xfr->notify_serial = 0; + if(!xfr_start_probe(xfr, env, NULL)) { + /* if we couldn't start it, already in + * progress; restore notify serial, + * while xfr still locked */ + xfr->notify_received = 1; + xfr->notify_has_serial = has_sr; + xfr->notify_serial = sr; + lock_basic_unlock(&xfr->lock); + } + return; + } else { + /* pick up the nextprobe task and wait (normail wait time) */ + xfr_set_timeout(xfr, env, 0, 0); + } + lock_basic_unlock(&xfr->lock); + return; + } + /* processing failed */ + /* when done, delete data from list */ + auth_chunks_delete(xfr->task_transfer); + if(ixfr_fail) { + xfr->task_transfer->ixfr_fail = 1; + } else { + xfr_transfer_nextmaster(xfr); + } + xfr_transfer_nexttarget_or_end(xfr, env); +} + +/** callback for task_transfer tcp connections */ +int +auth_xfer_transfer_tcp_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* ATTR_UNUSED(repinfo)) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + int gonextonfail = 1; + int transferdone = 0; + log_assert(xfr->task_transfer); + lock_basic_lock(&xfr->lock); + env = xfr->task_transfer->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return 0; /* stop on quit */ + } + + if(err != NETEVENT_NOERROR) { + /* connection failed, closed, or timeout */ + /* stop this transfer, cleanup + * and continue task_transfer*/ + verbose(VERB_ALGO, "xfr stopped, connection lost to %s", + xfr->task_transfer->master->host); + failed: + /* delete transferred data from list */ + auth_chunks_delete(xfr->task_transfer); + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + xfr_transfer_nextmaster(xfr); + xfr_transfer_nexttarget_or_end(xfr, env); + return 0; + } + + /* handle returned packet */ + /* if it fails, cleanup and end this transfer */ + /* if it needs to fallback from IXFR to AXFR, do that */ + if(!check_xfer_packet(c->buffer, xfr, &gonextonfail, &transferdone)) { + goto failed; + } + /* if it is good, link it into the list of data */ + /* if the link into list of data fails (malloc fail) cleanup and end */ + if(!xfer_link_data(c->buffer, xfr)) { + verbose(VERB_ALGO, "xfr stopped to %s, malloc failed", + xfr->task_transfer->master->host); + goto failed; + } + /* if the transfer is done now, disconnect and process the list */ + if(transferdone) { + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + process_list_end_transfer(xfr, env); + return 0; + } + + /* if we want to read more messages, setup the commpoint to read + * a DNS packet, and the timeout */ + lock_basic_unlock(&xfr->lock); + c->tcp_is_reading = 1; + sldns_buffer_clear(c->buffer); + comm_point_start_listening(c, -1, AUTH_TRANSFER_TIMEOUT); + return 0; +} + +/** callback for task_transfer http connections */ +int +auth_xfer_transfer_http_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* repinfo) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_transfer); + lock_basic_lock(&xfr->lock); + env = xfr->task_transfer->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return 0; /* stop on quit */ + } + verbose(VERB_ALGO, "auth zone transfer http callback"); + + if(err != NETEVENT_NOERROR && err != NETEVENT_DONE) { + /* connection failed, closed, or timeout */ + /* stop this transfer, cleanup + * and continue task_transfer*/ + verbose(VERB_ALGO, "http stopped, connection lost to %s", + xfr->task_transfer->master->host); + failed: + /* delete transferred data from list */ + auth_chunks_delete(xfr->task_transfer); + if(repinfo) repinfo->c = NULL; /* signal cp deleted to + the routine calling this callback */ + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + xfr_transfer_nextmaster(xfr); + xfr_transfer_nexttarget_or_end(xfr, env); + return 0; + } + + /* if it is good, link it into the list of data */ + /* if the link into list of data fails (malloc fail) cleanup and end */ + if(sldns_buffer_limit(c->buffer) > 0) { + verbose(VERB_ALGO, "auth zone http queued up %d bytes", + (int)sldns_buffer_limit(c->buffer)); + if(!xfer_link_data(c->buffer, xfr)) { + verbose(VERB_ALGO, "http stopped to %s, malloc failed", + xfr->task_transfer->master->host); + goto failed; + } + } + /* if the transfer is done now, disconnect and process the list */ + if(err == NETEVENT_DONE) { + if(repinfo) repinfo->c = NULL; /* signal cp deleted to + the routine calling this callback */ + comm_point_delete(xfr->task_transfer->cp); + xfr->task_transfer->cp = NULL; + process_list_end_transfer(xfr, env); + return 0; + } + + /* if we want to read more messages, setup the commpoint to read + * a DNS packet, and the timeout */ + lock_basic_unlock(&xfr->lock); + c->tcp_is_reading = 1; + sldns_buffer_clear(c->buffer); + comm_point_start_listening(c, -1, AUTH_TRANSFER_TIMEOUT); + return 0; +} + + +/** start transfer task by this worker , xfr is locked. */ +static void +xfr_start_transfer(struct auth_xfer* xfr, struct module_env* env, + struct auth_master* master) +{ + log_assert(xfr->task_transfer != NULL); + log_assert(xfr->task_transfer->worker == NULL); + log_assert(xfr->task_transfer->chunks_first == NULL); + log_assert(xfr->task_transfer->chunks_last == NULL); + xfr->task_transfer->worker = env->worker; + xfr->task_transfer->env = env; + + /* init transfer process */ + /* find that master in the transfer's list of masters? */ + xfr_transfer_start_list(xfr, master); + /* start lookup for hostnames in transfer master list */ + xfr_transfer_start_lookups(xfr); + + /* initiate TCP, and set timeout on it */ + xfr_transfer_nexttarget_or_end(xfr, env); +} + +/** disown task_probe. caller must hold xfr.lock */ +static void +xfr_probe_disown(struct auth_xfer* xfr) +{ + /* remove timer (from this worker's event base) */ + comm_timer_delete(xfr->task_probe->timer); + xfr->task_probe->timer = NULL; + /* remove the commpoint */ + comm_point_delete(xfr->task_probe->cp); + xfr->task_probe->cp = NULL; + /* we don't own this item anymore */ + xfr->task_probe->worker = NULL; + xfr->task_probe->env = NULL; +} + +/** send the UDP probe to the master, this is part of task_probe */ +static int +xfr_probe_send_probe(struct auth_xfer* xfr, struct module_env* env, + int timeout) +{ + struct sockaddr_storage addr; + socklen_t addrlen = 0; + struct timeval t; + /* pick master */ + struct auth_master* master = xfr_probe_current_master(xfr); + if(!master) return 0; + if(master->allow_notify) return 0; /* only for notify */ + if(master->http) return 0; /* only masters get SOA UDP probe, + not urls, if those are in this list */ + + /* get master addr */ + if(xfr->task_probe->scan_addr) { + addrlen = xfr->task_probe->scan_addr->addrlen; + memmove(&addr, &xfr->task_probe->scan_addr->addr, addrlen); + } else { + if(!extstrtoaddr(master->host, &addr, &addrlen)) { + /* the ones that are not in addr format are supposed + * to be looked up. The lookup has failed however, + * so skip them */ + char zname[255+1]; + dname_str(xfr->name, zname); + log_err("%s: failed lookup, cannot probe to master %s", + zname, master->host); + return 0; + } + } + + /* create packet */ + /* create new ID for new probes, but not on timeout retries, + * this means we'll accept replies to previous retries to same ip */ + if(timeout == AUTH_PROBE_TIMEOUT) + xfr->task_probe->id = (uint16_t)(ub_random(env->rnd)&0xffff); + xfr_create_soa_probe_packet(xfr, env->scratch_buffer, + xfr->task_probe->id); + if(!xfr->task_probe->cp) { + xfr->task_probe->cp = outnet_comm_point_for_udp(env->outnet, + auth_xfer_probe_udp_callback, xfr, &addr, addrlen); + if(!xfr->task_probe->cp) { + char zname[255+1]; + dname_str(xfr->name, zname); + verbose(VERB_ALGO, "cannot create udp cp for " + "probe %s to %s", zname, master->host); + return 0; + } + } + if(!xfr->task_probe->timer) { + xfr->task_probe->timer = comm_timer_create(env->worker_base, + auth_xfer_probe_timer_callback, xfr); + if(!xfr->task_probe->timer) { + log_err("malloc failure"); + return 0; + } + } + + /* send udp packet */ + if(!comm_point_send_udp_msg(xfr->task_probe->cp, env->scratch_buffer, + (struct sockaddr*)&addr, addrlen)) { + char zname[255+1]; + dname_str(xfr->name, zname); + verbose(VERB_ALGO, "failed to send soa probe for %s to %s", + zname, master->host); + return 0; + } + xfr->task_probe->timeout = timeout; +#ifndef S_SPLINT_S + t.tv_sec = timeout/1000; + t.tv_usec = (timeout%1000)*1000; +#endif + comm_timer_set(xfr->task_probe->timer, &t); + + return 1; +} + +/** callback for task_probe timer */ +void +auth_xfer_probe_timer_callback(void* arg) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_probe); + lock_basic_lock(&xfr->lock); + env = xfr->task_probe->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return; /* stop on quit */ + } + + if(xfr->task_probe->timeout <= AUTH_PROBE_TIMEOUT_STOP) { + /* try again with bigger timeout */ + if(xfr_probe_send_probe(xfr, env, xfr->task_probe->timeout*2)) { + lock_basic_unlock(&xfr->lock); + return; + } + } + /* delete commpoint so a new one is created, with a fresh port nr */ + comm_point_delete(xfr->task_probe->cp); + xfr->task_probe->cp = NULL; + + /* too many timeouts (or fail to send), move to next or end */ + xfr_probe_nextmaster(xfr); + xfr_probe_send_or_end(xfr, env); +} + +/** callback for task_probe udp packets */ +int +auth_xfer_probe_udp_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* repinfo) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_probe); + lock_basic_lock(&xfr->lock); + env = xfr->task_probe->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return 0; /* stop on quit */ + } + + /* the comm_point_udp_callback is in a for loop for NUM_UDP_PER_SELECT + * and we set rep.c=NULL to stop if from looking inside the commpoint*/ + repinfo->c = NULL; + /* stop the timer */ + comm_timer_disable(xfr->task_probe->timer); + + /* see if we got a packet and what that means */ + if(err == NETEVENT_NOERROR) { + uint32_t serial = 0; + if(check_packet_ok(c->buffer, LDNS_RR_TYPE_SOA, xfr, + &serial)) { + /* successful lookup */ + if(verbosity >= VERB_ALGO) { + char buf[256]; + dname_str(xfr->name, buf); + verbose(VERB_ALGO, "auth zone %s: soa probe " + "serial is %u", buf, (unsigned)serial); + } + /* see if this serial indicates that the zone has + * to be updated */ + if(xfr_serial_means_update(xfr, serial)) { + /* if updated, start the transfer task, if needed */ + verbose(VERB_ALGO, "auth_zone updated, start transfer"); + if(xfr->task_transfer->worker == NULL) { + struct auth_master* master = + xfr_probe_current_master(xfr); + /* if we have download URLs use them + * in preference to this master we + * just probed the SOA from */ + if(xfr->task_transfer->masters && + xfr->task_transfer->masters->http) + master = NULL; + xfr_probe_disown(xfr); + xfr_start_transfer(xfr, env, master); + return 0; + + } + } else { + /* if zone not updated, start the wait timer again */ + verbose(VERB_ALGO, "auth_zone unchanged, new lease, wait"); + if(xfr->have_zone) + xfr->lease_time = *env->now; + if(xfr->task_nextprobe->worker == NULL) + xfr_set_timeout(xfr, env, 0, 0); + } + /* other tasks are running, we don't do this anymore */ + xfr_probe_disown(xfr); + lock_basic_unlock(&xfr->lock); + /* return, we don't sent a reply to this udp packet, + * and we setup the tasks to do next */ + return 0; + } + } + if(verbosity >= VERB_ALGO) { + char buf[256]; + dname_str(xfr->name, buf); + verbose(VERB_ALGO, "auth zone %s: soa probe failed", buf); + } + + /* failed lookup */ + /* delete commpoint so a new one is created, with a fresh port nr */ + comm_point_delete(xfr->task_probe->cp); + xfr->task_probe->cp = NULL; + + /* if the result was not a successfull probe, we need + * to send the next one */ + xfr_probe_nextmaster(xfr); + xfr_probe_send_or_end(xfr, env); + return 0; +} + +/** lookup a host name for its addresses, if needed */ +static int +xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) +{ + struct sockaddr_storage addr; + socklen_t addrlen = 0; + struct auth_master* master = xfr->task_probe->lookup_target; + struct query_info qinfo; + uint16_t qflags = BIT_RD; + uint8_t dname[LDNS_MAX_DOMAINLEN+1]; + struct edns_data edns; + sldns_buffer* buf = env->scratch_buffer; + if(!master) return 0; + if(extstrtoaddr(master->host, &addr, &addrlen)) { + /* not needed, host is in IP addr format */ + return 0; + } + if(master->allow_notify && !master->http && + strchr(master->host, '/') != NULL && + strchr(master->host, '/') == strrchr(master->host, '/')) { + return 0; /* is IP/prefix format, not something to look up */ + } + + /* use mesh_new_callback to probe for non-addr hosts, + * and then wait for them to be looked up (in cache, or query) */ + qinfo.qname_len = sizeof(dname); + if(sldns_str2wire_dname_buf(master->host, dname, &qinfo.qname_len) + != 0) { + log_err("cannot parse host name of master %s", master->host); + return 0; + } + qinfo.qname = dname; + qinfo.qclass = xfr->dclass; + qinfo.qtype = LDNS_RR_TYPE_A; + if(xfr->task_probe->lookup_aaaa) + qinfo.qtype = LDNS_RR_TYPE_AAAA; + qinfo.local_alias = NULL; + if(verbosity >= VERB_ALGO) { + char buf[512]; + char buf2[LDNS_MAX_DOMAINLEN+1]; + dname_str(xfr->name, buf2); + snprintf(buf, sizeof(buf), "auth zone %s: master lookup" + " for task_probe", buf2); + log_query_info(VERB_ALGO, buf, &qinfo); + } + edns.edns_present = 1; + edns.ext_rcode = 0; + edns.edns_version = 0; + edns.bits = EDNS_DO; + edns.opt_list = NULL; + if(sldns_buffer_capacity(buf) < 65535) + edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); + else edns.udp_size = 65535; + + /* unlock xfr during mesh_new_callback() because the callback can be + * called straight away */ + lock_basic_unlock(&xfr->lock); + if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, + &auth_xfer_probe_lookup_callback, xfr)) { + lock_basic_lock(&xfr->lock); + log_err("out of memory lookup up master %s", master->host); + return 0; + } + lock_basic_lock(&xfr->lock); + return 1; +} + +/** move to sending the probe packets, next if fails. task_probe */ +static void +xfr_probe_send_or_end(struct auth_xfer* xfr, struct module_env* env) +{ + /* are we doing hostname lookups? */ + while(xfr->task_probe->lookup_target) { + if(xfr_probe_lookup_host(xfr, env)) { + /* wait for lookup to finish, + * note that the hostname may be in unbound's cache + * and we may then get an instant cache response, + * and that calls the callback just like a full + * lookup and lookup failures also call callback */ + lock_basic_unlock(&xfr->lock); + return; + } + xfr_probe_move_to_next_lookup(xfr, env); + } + /* probe of list has ended. Create or refresh the list of of + * allow_notify addrs */ + probe_copy_masters_for_allow_notify(xfr); + if(xfr->task_probe->only_lookup) { + /* only wanted lookups for copy, stop probe and start wait */ + xfr->task_probe->only_lookup = 0; + xfr_probe_disown(xfr); + xfr_set_timeout(xfr, env, 0, 0); + lock_basic_unlock(&xfr->lock); + return; + } + + /* send probe packets */ + while(!xfr_probe_end_of_list(xfr)) { + if(xfr_probe_send_probe(xfr, env, AUTH_PROBE_TIMEOUT)) { + /* successfully sent probe, wait for callback */ + lock_basic_unlock(&xfr->lock); + return; + } + /* failed to send probe, next master */ + xfr_probe_nextmaster(xfr); + } + + /* we failed to send this as well, move to the wait task, + * use the shorter retry timeout */ + xfr_probe_disown(xfr); + + /* pick up the nextprobe task and wait */ + xfr_set_timeout(xfr, env, 1, 0); + lock_basic_unlock(&xfr->lock); +} + +/** callback for task_probe lookup of host name, of A or AAAA */ +void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer* buf, + enum sec_status ATTR_UNUSED(sec), char* ATTR_UNUSED(why_bogus)) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_probe); + lock_basic_lock(&xfr->lock); + env = xfr->task_probe->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return; /* stop on quit */ + } + + /* process result */ + if(rcode == LDNS_RCODE_NOERROR) { + uint16_t wanted_qtype = LDNS_RR_TYPE_A; + struct regional* temp = env->scratch; + struct query_info rq; + struct reply_info* rep; + if(xfr->task_probe->lookup_aaaa) + wanted_qtype = LDNS_RR_TYPE_AAAA; + memset(&rq, 0, sizeof(rq)); + rep = parse_reply_in_temp_region(buf, temp, &rq); + if(rep && rq.qtype == wanted_qtype && + FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NOERROR) { + /* parsed successfully */ + struct ub_packed_rrset_key* answer = + reply_find_answer_rrset(&rq, rep); + if(answer) { + xfr_master_add_addrs(xfr->task_probe-> + lookup_target, answer, wanted_qtype); + } + } + } + if(xfr->task_probe->lookup_target->list && + xfr->task_probe->lookup_target == xfr_probe_current_master(xfr)) + xfr->task_probe->scan_addr = xfr->task_probe->lookup_target->list; + + /* move to lookup AAAA after A lookup, move to next hostname lookup, + * or move to send the probes, or, if nothing to do, end task_probe */ + xfr_probe_move_to_next_lookup(xfr, env); + xfr_probe_send_or_end(xfr, env); +} + +/** disown task_nextprobe. caller must hold xfr.lock */ +static void +xfr_nextprobe_disown(struct auth_xfer* xfr) +{ + /* delete the timer, because the next worker to pick this up may + * not have the same event base */ + comm_timer_delete(xfr->task_nextprobe->timer); + xfr->task_nextprobe->timer = NULL; + xfr->task_nextprobe->next_probe = 0; + /* we don't own this item anymore */ + xfr->task_nextprobe->worker = NULL; + xfr->task_nextprobe->env = NULL; +} + +/** xfer nextprobe timeout callback, this is part of task_nextprobe */ +void +auth_xfer_timer(void* arg) +{ + struct auth_xfer* xfr = (struct auth_xfer*)arg; + struct module_env* env; + log_assert(xfr->task_nextprobe); + lock_basic_lock(&xfr->lock); + env = xfr->task_nextprobe->env; + if(env->outnet->want_to_quit) { + lock_basic_unlock(&xfr->lock); + return; /* stop on quit */ + } + + /* see if zone has expired, and if so, also set auth_zone expired */ + if(xfr->have_zone && !xfr->zone_expired && + *env->now >= xfr->lease_time + xfr->expiry) { + lock_basic_unlock(&xfr->lock); + auth_xfer_set_expired(xfr, env, 1); + lock_basic_lock(&xfr->lock); + } + + xfr_nextprobe_disown(xfr); + + if(!xfr_start_probe(xfr, env, NULL)) { + /* not started because already in progress */ + lock_basic_unlock(&xfr->lock); + } +} + +/** return true if there are probe (SOA UDP query) targets in the master list*/ +static int +have_probe_targets(struct auth_master* list) +{ + struct auth_master* p; + for(p=list; p; p = p->next) { + if(!p->allow_notify && p->host) + return 1; + } + return 0; +} + +/** start task_probe if possible, if no masters for probe start task_transfer + * returns true if task has been started, and false if the task is already + * in progress. */ +static int +xfr_start_probe(struct auth_xfer* xfr, struct module_env* env, + struct auth_master* spec) +{ + /* see if we need to start a probe (or maybe it is already in + * progress (due to notify)) */ + if(xfr->task_probe->worker == NULL) { + if(!have_probe_targets(xfr->task_probe->masters) && + !(xfr->task_probe->only_lookup && + xfr->task_probe->masters != NULL)) { + /* useless to pick up task_probe, no masters to + * probe. Instead attempt to pick up task transfer */ + if(xfr->task_transfer->worker == NULL) { + xfr_start_transfer(xfr, env, spec); + return 1; + } + /* task transfer already in progress */ + return 0; + } + + /* pick up the probe task ourselves */ + xfr->task_probe->worker = env->worker; + xfr->task_probe->env = env; + xfr->task_probe->cp = NULL; + + /* start the task */ + /* if this was a timeout, no specific first master to scan */ + /* otherwise, spec is nonNULL the notified master, scan + * first and also transfer first from it */ + xfr_probe_start_list(xfr, spec); + /* setup to start the lookup of hostnames of masters afresh */ + xfr_probe_start_lookups(xfr); + /* send the probe packet or next send, or end task */ + xfr_probe_send_or_end(xfr, env); + return 1; + } + return 0; +} + +/** for task_nextprobe. + * determine next timeout for auth_xfer. Also (re)sets timer. + * @param xfr: task structure + * @param env: module environment, with worker and time. + * @param failure: set true if timer should be set for failure retry. + * @param lookup_only: only perform lookups when timer done, 0 sec timeout + */ +static void +xfr_set_timeout(struct auth_xfer* xfr, struct module_env* env, + int failure, int lookup_only) +{ + struct timeval tv; + log_assert(xfr->task_nextprobe != NULL); + log_assert(xfr->task_nextprobe->worker == NULL || + xfr->task_nextprobe->worker == env->worker); + /* normally, nextprobe = startoflease + refresh, + * but if expiry is sooner, use that one. + * after a failure, use the retry timer instead. */ + xfr->task_nextprobe->next_probe = *env->now; + if(xfr->lease_time && !failure) + xfr->task_nextprobe->next_probe = xfr->lease_time; + + if(!failure) { + xfr->task_nextprobe->backoff = 0; + } else { + if(xfr->task_nextprobe->backoff == 0) + xfr->task_nextprobe->backoff = 3; + else xfr->task_nextprobe->backoff *= 2; + if(xfr->task_nextprobe->backoff > AUTH_TRANSFER_MAX_BACKOFF) + xfr->task_nextprobe->backoff = + AUTH_TRANSFER_MAX_BACKOFF; + } + + if(xfr->have_zone) { + time_t wait = xfr->refresh; + if(failure) wait = xfr->retry; + if(xfr->expiry < wait) + xfr->task_nextprobe->next_probe += xfr->expiry; + else xfr->task_nextprobe->next_probe += wait; + if(failure) + xfr->task_nextprobe->next_probe += + xfr->task_nextprobe->backoff; + /* put the timer exactly on expiry, if possible */ + if(xfr->lease_time && xfr->lease_time+xfr->expiry < + xfr->task_nextprobe->next_probe && + xfr->lease_time+xfr->expiry > *env->now) + xfr->task_nextprobe->next_probe = + xfr->lease_time+xfr->expiry; + } else { + xfr->task_nextprobe->next_probe += + xfr->task_nextprobe->backoff; + } + + if(!xfr->task_nextprobe->timer) { + xfr->task_nextprobe->timer = comm_timer_create( + env->worker_base, auth_xfer_timer, xfr); + if(!xfr->task_nextprobe->timer) { + /* failed to malloc memory. likely zone transfer + * also fails for that. skip the timeout */ + char zname[255+1]; + dname_str(xfr->name, zname); + log_err("cannot allocate timer, no refresh for %s", + zname); + return; + } + } + xfr->task_nextprobe->worker = env->worker; + xfr->task_nextprobe->env = env; + if(*(xfr->task_nextprobe->env->now) <= xfr->task_nextprobe->next_probe) + tv.tv_sec = xfr->task_nextprobe->next_probe - + *(xfr->task_nextprobe->env->now); + else tv.tv_sec = 0; + if(tv.tv_sec != 0 && lookup_only && xfr->task_probe->masters) { + /* don't lookup_only, if lookup timeout is 0 anyway, + * or if we don't have masters to lookup */ + tv.tv_sec = 0; + if(xfr->task_probe && xfr->task_probe->worker == NULL) + xfr->task_probe->only_lookup = 1; + } + if(verbosity >= VERB_ALGO) { + char zname[255+1]; + dname_str(xfr->name, zname); + verbose(VERB_ALGO, "auth zone %s timeout in %d seconds", + zname, (int)tv.tv_sec); + } + tv.tv_usec = 0; + comm_timer_set(xfr->task_nextprobe->timer, &tv); +} + +/** initial pick up of worker timeouts, ties events to worker event loop */ +void +auth_xfer_pickup_initial(struct auth_zones* az, struct module_env* env) +{ + struct auth_xfer* x; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(x, struct auth_xfer*, &az->xtree) { + lock_basic_lock(&x->lock); + /* set lease_time, because we now have timestamp in env, + * (not earlier during startup and apply_cfg), and this + * notes the start time when the data was acquired */ + if(x->have_zone) + x->lease_time = *env->now; + if(x->task_nextprobe && x->task_nextprobe->worker == NULL) { + xfr_set_timeout(x, env, 0, 1); + } + lock_basic_unlock(&x->lock); + } + lock_rw_unlock(&az->lock); +} + +void auth_zones_cleanup(struct auth_zones* az) +{ + struct auth_xfer* x; + lock_rw_wrlock(&az->lock); + RBTREE_FOR(x, struct auth_xfer*, &az->xtree) { + lock_basic_lock(&x->lock); + if(x->task_nextprobe && x->task_nextprobe->worker != NULL) { + xfr_nextprobe_disown(x); + } + if(x->task_probe && x->task_probe->worker != NULL) { + xfr_probe_disown(x); + } + if(x->task_transfer && x->task_transfer->worker != NULL) { + auth_chunks_delete(x->task_transfer); + xfr_transfer_disown(x); + } + lock_basic_unlock(&x->lock); + } + lock_rw_unlock(&az->lock); +} + +/** + * malloc the xfer and tasks + * @param z: auth_zone with name of zone. + */ +static struct auth_xfer* +auth_xfer_new(struct auth_zone* z) +{ + struct auth_xfer* xfr; + xfr = (struct auth_xfer*)calloc(1, sizeof(*xfr)); + if(!xfr) return NULL; + xfr->name = memdup(z->name, z->namelen); + if(!xfr->name) { + free(xfr); + return NULL; + } + xfr->node.key = xfr; + xfr->namelen = z->namelen; + xfr->namelabs = z->namelabs; + xfr->dclass = z->dclass; + + xfr->task_nextprobe = (struct auth_nextprobe*)calloc(1, + sizeof(struct auth_nextprobe)); + if(!xfr->task_nextprobe) { + free(xfr->name); + free(xfr); + return NULL; + } + xfr->task_probe = (struct auth_probe*)calloc(1, + sizeof(struct auth_probe)); + if(!xfr->task_probe) { + free(xfr->task_nextprobe); + free(xfr->name); + free(xfr); + return NULL; + } + xfr->task_transfer = (struct auth_transfer*)calloc(1, + sizeof(struct auth_transfer)); + if(!xfr->task_transfer) { + free(xfr->task_probe); + free(xfr->task_nextprobe); + free(xfr->name); + free(xfr); + return NULL; + } + + lock_basic_init(&xfr->lock); + lock_protect(&xfr->lock, &xfr->name, sizeof(xfr->name)); + lock_protect(&xfr->lock, &xfr->namelen, sizeof(xfr->namelen)); + lock_protect(&xfr->lock, xfr->name, xfr->namelen); + lock_protect(&xfr->lock, &xfr->namelabs, sizeof(xfr->namelabs)); + lock_protect(&xfr->lock, &xfr->dclass, sizeof(xfr->dclass)); + lock_protect(&xfr->lock, &xfr->notify_received, sizeof(xfr->notify_received)); + lock_protect(&xfr->lock, &xfr->notify_serial, sizeof(xfr->notify_serial)); + lock_protect(&xfr->lock, &xfr->zone_expired, sizeof(xfr->zone_expired)); + lock_protect(&xfr->lock, &xfr->have_zone, sizeof(xfr->have_zone)); + lock_protect(&xfr->lock, &xfr->serial, sizeof(xfr->serial)); + lock_protect(&xfr->lock, &xfr->retry, sizeof(xfr->retry)); + lock_protect(&xfr->lock, &xfr->refresh, sizeof(xfr->refresh)); + lock_protect(&xfr->lock, &xfr->expiry, sizeof(xfr->expiry)); + lock_protect(&xfr->lock, &xfr->lease_time, sizeof(xfr->lease_time)); + lock_protect(&xfr->lock, &xfr->task_nextprobe->worker, + sizeof(xfr->task_nextprobe->worker)); + lock_protect(&xfr->lock, &xfr->task_probe->worker, + sizeof(xfr->task_probe->worker)); + lock_protect(&xfr->lock, &xfr->task_transfer->worker, + sizeof(xfr->task_transfer->worker)); + lock_basic_lock(&xfr->lock); + return xfr; +} + +/** Create auth_xfer structure. + * This populates the have_zone, soa values, and so on times. + * and sets the timeout, if a zone transfer is needed a short timeout is set. + * For that the auth_zone itself must exist (and read in zonefile) + * returns false on alloc failure. */ +struct auth_xfer* +auth_xfer_create(struct auth_zones* az, struct auth_zone* z) +{ + struct auth_xfer* xfr; + + /* malloc it */ + xfr = auth_xfer_new(z); + if(!xfr) { + log_err("malloc failure"); + return NULL; + } + /* insert in tree */ + (void)rbtree_insert(&az->xtree, &xfr->node); + return xfr; +} + +/** create new auth_master structure */ +static struct auth_master* +auth_master_new(struct auth_master*** list) +{ + struct auth_master *m; + m = (struct auth_master*)calloc(1, sizeof(*m)); + if(!m) { + log_err("malloc failure"); + return NULL; + } + /* set first pointer to m, or next pointer of previous element to m */ + (**list) = m; + /* store m's next pointer as future point to store at */ + (*list) = &(m->next); + return m; +} + +/** dup_prefix : create string from initial part of other string, malloced */ +static char* +dup_prefix(char* str, size_t num) +{ + char* result; + size_t len = strlen(str); + if(len < num) num = len; /* not more than strlen */ + result = (char*)malloc(num+1); + if(!result) { + log_err("malloc failure"); + return result; + } + memmove(result, str, num); + result[num] = 0; + return result; +} + +/** dup string and print error on error */ +static char* +dup_all(char* str) +{ + char* result = strdup(str); + if(!result) { + log_err("malloc failure"); + return NULL; + } + return result; +} + +/** find first of two characters */ +static char* +str_find_first_of_chars(char* s, char a, char b) +{ + char* ra = strchr(s, a); + char* rb = strchr(s, b); + if(!ra) return rb; + if(!rb) return ra; + if(ra < rb) return ra; + return rb; +} + +/** parse URL into host and file parts, false on malloc or parse error */ +static int +parse_url(char* url, char** host, char** file, int* port, int* ssl) +{ + char* p = url; + /* parse http://www.example.com/file.htm + * or http://127.0.0.1 (index.html) + * or https://[::1@1234]/a/b/c/d */ + *ssl = 1; + *port = AUTH_HTTPS_PORT; + + /* parse http:// or https:// */ + if(strncmp(p, "http://", 7) == 0) { + p += 7; + *ssl = 0; + *port = AUTH_HTTP_PORT; + } else if(strncmp(p, "https://", 8) == 0) { + p += 8; + } else if(strstr(p, "://") && strchr(p, '/') > strstr(p, "://") && + strchr(p, ':') >= strstr(p, "://")) { + char* uri = dup_prefix(p, (size_t)(strstr(p, "://")-p)); + log_err("protocol %s:// not supported (for url %s)", + uri?uri:"", p); + free(uri); + return 0; + } + + /* parse hostname part */ + if(p[0] == '[') { + char* end = strchr(p, ']'); + p++; /* skip over [ */ + if(end) { + *host = dup_prefix(p, (size_t)(end-p)); + if(!*host) return 0; + p = end+1; /* skip over ] */ + } else { + *host = dup_all(p); + if(!*host) return 0; + p = end; + } + } else { + char* end = str_find_first_of_chars(p, ':', '/'); + if(end) { + *host = dup_prefix(p, (size_t)(end-p)); + if(!*host) return 0; + } else { + *host = dup_all(p); + if(!*host) return 0; + } + p = end; /* at next : or / or NULL */ + } + + /* parse port number */ + if(p && p[0] == ':') { + char* end = NULL; + *port = strtol(p+1, &end, 10); + p = end; + } + + /* parse filename part */ + while(p && *p == '/') + p++; + if(!p || p[0] == 0) + *file = strdup("index.html"); + else *file = strdup(p); + if(!*file) { + log_err("malloc failure"); + return 0; + } + return 1; +} + +int +xfer_set_masters(struct auth_master** list, struct config_auth* c, + int with_http) +{ + struct auth_master* m; + struct config_strlist* p; + /* list points to the first, or next pointer for the new element */ + while(*list) { + list = &( (*list)->next ); + } + if(with_http) + for(p = c->urls; p; p = p->next) { + m = auth_master_new(&list); + m->http = 1; + if(!parse_url(p->str, &m->host, &m->file, &m->port, &m->ssl)) + return 0; + } + for(p = c->masters; p; p = p->next) { + m = auth_master_new(&list); + m->ixfr = 1; /* this flag is not configurable */ + m->host = strdup(p->str); + if(!m->host) { + log_err("malloc failure"); + return 0; + } + } + for(p = c->allow_notify; p; p = p->next) { + m = auth_master_new(&list); + m->allow_notify = 1; + m->host = strdup(p->str); + if(!m->host) { + log_err("malloc failure"); + return 0; + } + } + return 1; +} + +#define SERIAL_BITS 32 +int +compare_serial(uint32_t a, uint32_t b) +{ + const uint32_t cutoff = ((uint32_t) 1 << (SERIAL_BITS - 1)); + + if (a == b) { + return 0; + } else if ((a < b && b - a < cutoff) || (a > b && a - b > cutoff)) { + return -1; + } else { + return 1; + } +} diff --git a/external/unbound/services/authzone.h b/external/unbound/services/authzone.h new file mode 100644 index 0000000..4e06c06 --- /dev/null +++ b/external/unbound/services/authzone.h @@ -0,0 +1,653 @@ +/* + * services/authzone.h - authoritative zone that is locally hosted. + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains the functions for an authority zone. This zone + * is queried by the iterator, just like a stub or forward zone, but then + * the data is locally held. + */ + +#ifndef SERVICES_AUTHZONE_H +#define SERVICES_AUTHZONE_H +#include "util/rbtree.h" +#include "util/locks.h" +#include "services/mesh.h" +struct ub_packed_rrset_key; +struct regional; +struct config_file; +struct config_auth; +struct query_info; +struct dns_msg; +struct edns_data; +struct module_env; +struct worker; +struct comm_point; +struct comm_timer; +struct comm_reply; +struct auth_rrset; +struct auth_nextprobe; +struct auth_probe; +struct auth_transfer; +struct auth_master; +struct auth_chunk; + +/** + * Authoritative zones, shared. + */ +struct auth_zones { + /** lock on the authzone trees */ + lock_rw_type lock; + /** rbtree of struct auth_zone */ + rbtree_type ztree; + /** rbtree of struct auth_xfer */ + rbtree_type xtree; + /** do we have downstream enabled */ + int have_downstream; + /** number of queries upstream */ + size_t num_query_up; + /** number of queries downstream */ + size_t num_query_down; +}; + +/** + * Auth zone. Authoritative data, that is fetched from instead of sending + * packets to the internet. + */ +struct auth_zone { + /** rbtree node, key is name and class */ + rbnode_type node; + + /** zone name, in uncompressed wireformat */ + uint8_t* name; + /** length of zone name */ + size_t namelen; + /** number of labels in zone name */ + int namelabs; + /** the class of this zone, in host byteorder. + * uses 'dclass' to not conflict with c++ keyword class. */ + uint16_t dclass; + + /** lock on the data in the structure + * For the node, parent, name, namelen, namelabs, dclass, you + * need to also hold the zones_tree lock to change them (or to + * delete this zone) */ + lock_rw_type lock; + + /** auth data for this zone + * rbtree of struct auth_data */ + rbtree_type data; + + /** zonefile name (or NULL for no zonefile) */ + char* zonefile; + /** fallback to the internet on failure or ttl-expiry of auth zone */ + int fallback_enabled; + /** the zone has expired (enabled by the xfer worker), fallback + * happens if that option is enabled. */ + int zone_expired; + /** zone is a slave zone (it has masters) */ + int zone_is_slave; + /** for downstream: this zone answers queries towards the downstream + * clients */ + int for_downstream; + /** for upstream: this zone answers queries that unbound intends to + * send upstream. */ + int for_upstream; + /** zone has been deleted */ + int zone_deleted; + /** deletelist pointer, unused normally except during delete */ + struct auth_zone* delete_next; +}; + +/** + * Auth data. One domain name, and the RRs to go with it. + */ +struct auth_data { + /** rbtree node, key is name only */ + rbnode_type node; + /** domain name */ + uint8_t* name; + /** length of name */ + size_t namelen; + /** number of labels in name */ + int namelabs; + /** the data rrsets, with different types, linked list. + * if the list if NULL the node would be an empty non-terminal, + * but in this data structure such nodes that represent an empty + * non-terminal are not needed; they just don't exist. + */ + struct auth_rrset* rrsets; +}; + +/** + * A auth data RRset + */ +struct auth_rrset { + /** next in list */ + struct auth_rrset* next; + /** RR type in host byteorder */ + uint16_t type; + /** RRset data item */ + struct packed_rrset_data* data; +}; + +/** + * Authoritative zone transfer structure. + * Create and destroy needs the auth_zones* biglock. + * The structure consists of different tasks. Each can be unowned (-1) or + * owner by a worker (worker-num). A worker can pick up a task and then do + * it. This means the events (timeouts, sockets) are for that worker. + * + * (move this to tasks). + * They don't have locks themselves, the worker (that owns it) uses it, + * also as part of callbacks, hence it has separate zonename pointers for + * lookup in the main zonetree. If the zone has no transfers, this + * structure is not created. + */ +struct auth_xfer { + /** rbtree node, key is name and class */ + rbnode_type node; + + /** lock on this structure, and on the workernum elements of the + * tasks. First hold the tree-lock in auth_zones, find the auth_xfer, + * lock this lock. Then a worker can reassign itself to fill up + * one of the tasks. + * Once it has the task assigned to it, the worker can access the + * other elements of the task structure without a lock, because that + * is necessary for the eventloop and callbacks from that. */ + lock_basic_type lock; + + /** zone name, in uncompressed wireformat */ + uint8_t* name; + /** length of zone name */ + size_t namelen; + /** number of labels in zone name */ + int namelabs; + /** the class of this zone, in host byteorder. + * uses 'dclass' to not conflict with c++ keyword class. */ + uint16_t dclass; + + /** task to wait for next-probe-timeout, + * once timeouted, see if a SOA probe is needed, or already + * in progress */ + struct auth_nextprobe* task_nextprobe; + + /** task for SOA probe. Check if the zone can be updated */ + struct auth_probe* task_probe; + + /** Task for transfer. Transferring and updating the zone. This + * includes trying (potentially) several upstream masters. Downloading + * and storing the zone */ + struct auth_transfer* task_transfer; + + /** a notify was received, but a zone transfer or probe was already + * acted on. + * However, the zone transfer could signal a newer serial number. + * The serial number of that notify is saved below. The transfer and + * probe tasks should check this once done to see if they need to + * restart the transfer task for the newer notify serial. + * Hold the lock to access this member (and the serial). + */ + int notify_received; + /** true if the notify_received has a serial number */ + int notify_has_serial; + /** serial number of the notify */ + uint32_t notify_serial; + /** the list of masters for checking notifies. This list is + * empty on start, and a copy of the list from the probe_task when + * it is done looking them up. */ + struct auth_master* allow_notify_list; + + /* protected by the lock on the structure, information about + * the loaded authority zone. */ + /** is the zone currently considered expired? after expiry also older + * serial numbers are allowed (not just newer) */ + int zone_expired; + /** do we have a zone (if 0, no zone data at all) */ + int have_zone; + + /** current serial (from SOA), if we have no zone, 0 */ + uint32_t serial; + /** retry time (from SOA), time to wait with next_probe + * if no master responds */ + time_t retry; + /** refresh time (from SOA), time to wait with next_probe + * if everything is fine */ + time_t refresh; + /** expiry time (from SOA), time until zone data is not considered + * valid any more, if no master responds within this time, either + * with the current zone or a new zone. */ + time_t expiry; + + /** zone lease start time (start+expiry is expiration time). + * this is renewed every SOA probe and transfer. On zone load + * from zonefile it is also set (with probe set soon to check) */ + time_t lease_time; +}; + +/** + * The next probe task. + * This task consists of waiting for the probetimeout. It is a task because + * it needs an event in the eventtable. Once the timeout has passed, that + * worker can (potentially) become the auth_probe worker, or if another worker + * is already doing that, do nothing. Tasks becomes unowned. + * The probe worker, if it detects nothing has to be done picks up this task, + * if unowned. + */ +struct auth_nextprobe { + /* Worker pointer. NULL means unowned. */ + struct worker* worker; + /* module env for this task */ + struct module_env* env; + + /** increasing backoff for failures */ + time_t backoff; + /** Timeout for next probe (for SOA) */ + time_t next_probe; + /** timeout callback for next_probe or expiry(if that is sooner). + * it is on the worker's event_base */ + struct comm_timer* timer; +}; + +/** + * The probe task. + * Send a SOA UDP query to see if the zone needs to be updated (or similar, + * potential, HTTP probe query) and check serial number. + * If yes, start the auth_transfer task. If no, make sure auth_nextprobe + * timeout wait task is running. + * Needs to be a task, because the UDP query needs an event entry. + * This task could also be started by eg. a NOTIFY being received, even though + * another worker is performing the nextprobe task (and that worker keeps + * waiting uninterrupted). + */ +struct auth_probe { + /* Worker pointer. NULL means unowned. */ + struct worker* worker; + /* module env for this task */ + struct module_env* env; + + /** list of upstream masters for this zone, from config */ + struct auth_master* masters; + + /** for the hostname lookups, which master is current */ + struct auth_master* lookup_target; + /** are we looking up A or AAAA, first A, then AAAA (if ip6 enabled) */ + int lookup_aaaa; + /** we only want to do lookups for making config work (for notify), + * don't proceed with UDP SOA probe queries */ + int only_lookup; + + /** once notified, or the timeout has been reached. a scan starts. */ + /** the scan specific target (notify source), or NULL if none */ + struct auth_master* scan_specific; + /** scan tries all the upstream masters. the scan current target. + * or NULL if not working on sequential scan */ + struct auth_master* scan_target; + /** if not NULL, the specific addr for the current master */ + struct auth_addr* scan_addr; + + /** dns id of packet in flight */ + uint16_t id; + /** the SOA probe udp event. + * on the workers event base. */ + struct comm_point* cp; + /** timeout for packets. + * on the workers event base. */ + struct comm_timer* timer; + /** timeout in msec */ + int timeout; +}; + +/** + * The transfer task. + * Once done, make sure the nextprobe waiting task is running, whether done + * with failure or success. If failure, use shorter timeout for wait time. + */ +struct auth_transfer { + /* Worker pointer. NULL means unowned. */ + struct worker* worker; + /* module env for this task */ + struct module_env* env; + + /** xfer data that has been transferred, the data is applied + * once the transfer has completed correctly */ + struct auth_chunk* chunks_first; + /** last element in chunks list (to append new data at the end) */ + struct auth_chunk* chunks_last; + + /** list of upstream masters for this zone, from config */ + struct auth_master* masters; + + /** for the hostname lookups, which master is current */ + struct auth_master* lookup_target; + /** are we looking up A or AAAA, first A, then AAAA (if ip6 enabled) */ + int lookup_aaaa; + + /** once notified, or the timeout has been reached. a scan starts. */ + /** the scan specific target (notify source), or NULL if none */ + struct auth_master* scan_specific; + /** scan tries all the upstream masters. the scan current target. + * or NULL if not working on sequential scan */ + struct auth_master* scan_target; + /** what address we are scanning for the master, or NULL if the + * master is in IP format itself */ + struct auth_addr* scan_addr; + /** the zone transfer in progress (or NULL if in scan). It is + * from this master */ + struct auth_master* master; + + /** failed ixfr transfer, retry with axfr (to the current master), + * the IXFR was 'REFUSED', 'SERVFAIL', 'NOTIMPL' or the contents of + * the IXFR did not apply cleanly (out of sync, delete of nonexistent + * data or add of duplicate data). Flag is cleared once the retry + * with axfr is done. */ + int ixfr_fail; + /** we are doing IXFR right now */ + int on_ixfr; + /** did we detect the current AXFR/IXFR serial number yet, 0 not yet, + * 1 we saw the first, 2 we saw the second, 3 must be last SOA in xfr*/ + int got_xfr_serial; + /** number of RRs scanned for AXFR/IXFR detection */ + size_t rr_scan_num; + /** we are doing an IXFR but we detected an AXFR contents */ + int on_ixfr_is_axfr; + /** the serial number for the current AXFR/IXFR incoming reply, + * for IXFR, the outermost SOA records serial */ + uint32_t incoming_xfr_serial; + + /** dns id of AXFR query */ + uint16_t id; + /** the transfer (TCP) to the master. + * on the workers event base. */ + struct comm_point* cp; +}; + +/** list of addresses */ +struct auth_addr { + /** next in list */ + struct auth_addr* next; + /** IP address */ + struct sockaddr_storage addr; + /** addr length */ + socklen_t addrlen; +}; + +/** auth zone master upstream, and the config settings for it */ +struct auth_master { + /** next master in list */ + struct auth_master* next; + /** master IP address (and port), or hostname, string */ + char* host; + /** for http, filename */ + char* file; + /** use HTTP for this master */ + int http; + /** use IXFR for this master */ + int ixfr; + /** this is an allow notify member, the master can send notifies + * to us, but we don't send SOA probes, or zone transfer from it */ + int allow_notify; + /** use ssl for channel */ + int ssl; + /** the port number (for urls) */ + int port; + /** if the host is a hostname, the list of resolved addrs, if any*/ + struct auth_addr* list; +}; + +/** auth zone master zone transfer data chunk */ +struct auth_chunk { + /** next chunk in list */ + struct auth_chunk* next; + /** the data from this chunk, this is what was received. + * for an IXFR that means results from comm_net tcp actions, + * packets. also for an AXFR. For HTTP a zonefile chunk. */ + uint8_t* data; + /** length of allocated data */ + size_t len; +}; + +/** + * Create auth zones structure + */ +struct auth_zones* auth_zones_create(void); + +/** + * Apply configuration to auth zones. Reads zonefiles. + * @param az: auth zones structure + * @param cfg: config to apply. + * @param setup: if true, also sets up values in the auth zones structure + * @return false on failure. + */ +int auth_zones_apply_cfg(struct auth_zones* az, struct config_file* cfg, + int setup); + +/** initial pick up of worker timeouts, ties events to worker event loop + * @param az: auth zones structure + * @param env: worker env, of first worker that receives the events (if any) + * in its eventloop. + */ +void auth_xfer_pickup_initial(struct auth_zones* az, struct module_env* env); + +/** + * Cleanup auth zones. This removes all events from event bases. + * Stops the xfr tasks. But leaves zone data. + * @param az: auth zones structure. + */ +void auth_zones_cleanup(struct auth_zones* az); + +/** + * Delete auth zones structure + */ +void auth_zones_delete(struct auth_zones* az); + +/** + * Write auth zone data to file, in zonefile format. + */ +int auth_zone_write_file(struct auth_zone* z, const char* fname); + +/** + * Use auth zones to lookup the answer to a query. + * The query is from the iterator. And the auth zones attempts to provide + * the answer instead of going to the internet. + * + * @param az: auth zones structure. + * @param qinfo: query info to lookup. + * @param region: region to use to allocate the reply in. + * @param msg: reply is stored here (if one). + * @param fallback: if true, fallback to making a query to the internet. + * @param dp_nm: name of delegation point to look for. This zone is used + * to answer the query. + * If the dp_nm is not found, fallback is set to true and false returned. + * @param dp_nmlen: length of dp_nm. + * @return 0: failure (an error of some sort, like servfail). + * if 0 and fallback is true, fallback to the internet. + * if 0 and fallback is false, like getting servfail. + * If true, an answer is available. + */ +int auth_zones_lookup(struct auth_zones* az, struct query_info* qinfo, + struct regional* region, struct dns_msg** msg, int* fallback, + uint8_t* dp_nm, size_t dp_nmlen); + +/** + * Answer query from auth zone. Create authoritative answer. + * @param az: auth zones structure. + * @param env: the module environment. + * @param qinfo: query info (parsed). + * @param edns: edns info (parsed). + * @param buf: buffer with query ID and flags, also for reply. + * @param temp: temporary storage region. + * @return false if not answered + */ +int auth_zones_answer(struct auth_zones* az, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, struct sldns_buffer* buf, + struct regional* temp); + +/** + * Find the auth zone that is above the given qname. + * Return NULL when there is no auth_zone above the give name, otherwise + * returns the closest auth_zone above the qname that pertains to it. + * @param az: auth zones structure. + * @param name: query to look up for. + * @param name_len: length of name. + * @param dclass: class of zone to find. + * @return NULL or auth_zone that pertains to the query. + */ +struct auth_zone* auth_zones_find_zone(struct auth_zones* az, + uint8_t* name, size_t name_len, uint16_t dclass); + +/** find an auth zone by name (exact match by name or NULL returned) */ +struct auth_zone* auth_zone_find(struct auth_zones* az, uint8_t* nm, + size_t nmlen, uint16_t dclass); + +/** find an xfer zone by name (exact match by name or NULL returned) */ +struct auth_xfer* auth_xfer_find(struct auth_zones* az, uint8_t* nm, + size_t nmlen, uint16_t dclass); + +/** create an auth zone. returns wrlocked zone. caller must have wrlock + * on az. returns NULL on malloc failure */ +struct auth_zone* auth_zone_create(struct auth_zones* az, uint8_t* nm, + size_t nmlen, uint16_t dclass); + +/** set auth zone zonefile string. caller must have lock on zone */ +int auth_zone_set_zonefile(struct auth_zone* z, char* zonefile); + +/** set auth zone fallback. caller must have lock on zone. + * fallbackstr is "yes" or "no". false on parse failure. */ +int auth_zone_set_fallback(struct auth_zone* z, char* fallbackstr); + +/** see if the auth zone for the name can fallback + * @param az: auth zones + * @param nm: name of delegation point. + * @param nmlen: length of nm. + * @param dclass: class of zone to look for. + * @return true if fallback_enabled is true. false if not. + * if the zone does not exist, fallback is true (more lenient) + * also true if zone does not do upstream requests. + */ +int auth_zones_can_fallback(struct auth_zones* az, uint8_t* nm, size_t nmlen, + uint16_t dclass); + +/** process notify for auth zones. + * first checks the access list. Then processes the notify. This starts + * the probe sequence or it notes the serial number (if any) + * @param az: auth zones structure. + * @param env: module env of the worker that is handling the notify. it will + * pick up the task probe (or transfer), unless already in progress by + * another worker. + * @param nm: name of the zone. Uncompressed. from query. + * @param nmlen: length of name. + * @param dclass: class of zone. + * @param addr: source address of notify + * @param addrlen: length of addr. + * @param has_serial: if true, the notify has a serial attached. + * @param serial: the serial number, if has_serial is true. + * @param refused: is set to true on failure to note refused access. + * @return fail on failures (refused is false) and when access is + * denied (refused is true). True when processed. + */ +int auth_zones_notify(struct auth_zones* az, struct module_env* env, + uint8_t* nm, size_t nmlen, uint16_t dclass, + struct sockaddr_storage* addr, socklen_t addrlen, int has_serial, + uint32_t serial, int* refused); + +/** process notify packet and read serial number from SOA. + * returns 0 if no soa record in the notify */ +int auth_zone_parse_notify_serial(struct sldns_buffer* pkt, uint32_t *serial); + +/** read auth zone from zonefile. caller must lock zone. false on failure */ +int auth_zone_read_zonefile(struct auth_zone* z); + +/** find serial number of zone or false if none (no SOA record) */ +int auth_zone_get_serial(struct auth_zone* z, uint32_t* serial); + +/** compare auth_zones for sorted rbtree */ +int auth_zone_cmp(const void* z1, const void* z2); + +/** compare auth_data for sorted rbtree */ +int auth_data_cmp(const void* z1, const void* z2); + +/** compare auth_xfer for sorted rbtree */ +int auth_xfer_cmp(const void* z1, const void* z2); + +/** Create auth_xfer structure. + * Caller must have wrlock on az. Returns locked xfer zone. + * @param az: zones structure. + * @param z: zone with name and class + * @return xfer zone or NULL + */ +struct auth_xfer* auth_xfer_create(struct auth_zones* az, struct auth_zone* z); + +/** + * Set masters in auth xfer structure from config. + * @param list: pointer to start of list. The malloced list is returned here. + * @param c: the config items to copy over. + * @param with_http: if true, http urls are also included, before the masters. + * @return false on failure. + */ +int xfer_set_masters(struct auth_master** list, struct config_auth* c, + int with_http); + +/** xfer nextprobe timeout callback, this is part of task_nextprobe */ +void auth_xfer_timer(void* arg); + +/** callback for commpoint udp replies to task_probe */ +int auth_xfer_probe_udp_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* repinfo); +/** callback for task_transfer tcp connections */ +int auth_xfer_transfer_tcp_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* repinfo); +/** callback for task_transfer http connections */ +int auth_xfer_transfer_http_callback(struct comm_point* c, void* arg, int err, + struct comm_reply* repinfo); +/** xfer probe timeout callback, part of task_probe */ +void auth_xfer_probe_timer_callback(void* arg); +/** mesh callback for task_probe on lookup of host names */ +void auth_xfer_probe_lookup_callback(void* arg, int rcode, + struct sldns_buffer* buf, enum sec_status sec, char* why_bogus); +/** mesh callback for task_transfer on lookup of host names */ +void auth_xfer_transfer_lookup_callback(void* arg, int rcode, + struct sldns_buffer* buf, enum sec_status sec, char* why_bogus); + +/* + * Compares two 32-bit serial numbers as defined in RFC1982. Returns + * <0 if a < b, 0 if a == b, and >0 if a > b. The result is undefined + * if a != b but neither is greater or smaller (see RFC1982 section + * 3.2.). + */ +int compare_serial(uint32_t a, uint32_t b); + +#endif /* SERVICES_AUTHZONE_H */ diff --git a/external/unbound/services/cache/dns.c b/external/unbound/services/cache/dns.c index e14e636..35adc35 100644 --- a/external/unbound/services/cache/dns.c +++ b/external/unbound/services/cache/dns.c @@ -41,6 +41,7 @@ #include "config.h" #include "iterator/iter_delegpt.h" #include "validator/val_nsec.h" +#include "validator/val_utils.h" #include "services/cache/dns.h" #include "services/cache/rrset.h" #include "util/data/msgreply.h" @@ -98,16 +99,61 @@ store_rrsets(struct module_env* env, struct reply_info* rep, time_t now, } } /* no break: also copy key item */ + /* the line below is matched by gcc regex and silences + * the fallthrough warning */ + /* fallthrough */ case 1: /* ref updated, item inserted */ rep->rrsets[i] = rep->ref[i].key; } } } +/** delete message from message cache */ +static void +msg_cache_remove(struct module_env* env, uint8_t* qname, size_t qnamelen, + uint16_t qtype, uint16_t qclass, uint16_t flags) +{ + struct query_info k; + hashvalue_type h; + + k.qname = qname; + k.qname_len = qnamelen; + k.qtype = qtype; + k.qclass = qclass; + k.local_alias = NULL; + h = query_info_hash(&k, flags); + slabhash_remove(env->msg_cache, h, &k); +} + +/** remove servfail msg cache entry */ +static void +msg_del_servfail(struct module_env* env, struct query_info* qinfo, + uint32_t flags) +{ + struct msgreply_entry* e; + /* see if the entry is servfail, and then remove it, so that + * lookups move from the cacheresponse stage to the recursionresponse + * stage */ + e = msg_cache_lookup(env, qinfo->qname, qinfo->qname_len, + qinfo->qtype, qinfo->qclass, flags, 0, 0); + if(!e) return; + /* we don't check for the ttl here, also expired servfail entries + * are removed. If the user uses serve-expired, they would still be + * used to answer from cache */ + if(FLAGS_GET_RCODE(((struct reply_info*)e->entry.data)->flags) + != LDNS_RCODE_SERVFAIL) { + lock_rw_unlock(&e->entry.lock); + return; + } + lock_rw_unlock(&e->entry.lock); + msg_cache_remove(env, qinfo->qname, qinfo->qname_len, qinfo->qtype, + qinfo->qclass, flags); +} + void dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, - hashvalue_t hash, struct reply_info* rep, time_t leeway, int pside, - struct reply_info* qrep, struct regional* region) + hashvalue_type hash, struct reply_info* rep, time_t leeway, int pside, + struct reply_info* qrep, uint32_t flags, struct regional* region) { struct msgreply_entry* e; time_t ttl = rep->ttl; @@ -123,11 +169,17 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, * unnecessary, because the cache gets locked per rrset. */ reply_info_set_ttls(rep, *env->now); store_rrsets(env, rep, *env->now, leeway, pside, qrep, region); - if(ttl == 0) { + if(ttl == 0 && !(flags & DNSCACHE_STORE_ZEROTTL)) { /* we do not store the message, but we did store the RRs, * which could be useful for delegation information */ verbose(VERB_ALGO, "TTL 0: dropped msg from cache"); free(rep); + /* if the message is SERVFAIL in cache, remove that SERVFAIL, + * so that the TTL 0 response can be returned for future + * responses (i.e. don't get answered by the servfail from + * cache, but instead go to recursion to get this TTL0 + * response). */ + msg_del_servfail(env, qinfo, flags); return; } @@ -182,18 +234,19 @@ addr_to_additional(struct ub_packed_rrset_key* rrset, struct regional* region, } /** lookup message in message cache */ -static struct msgreply_entry* +struct msgreply_entry* msg_cache_lookup(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, time_t now, int wr) { struct lruhash_entry* e; struct query_info k; - hashvalue_t h; + hashvalue_type h; k.qname = qname; k.qname_len = qnamelen; k.qtype = qtype; k.qclass = qclass; + k.local_alias = NULL; h = query_info_hash(&k, flags); e = slabhash_lookup(env->msg_cache, h, &k, wr); @@ -361,6 +414,7 @@ dns_msg_create(uint8_t* qname, size_t qnamelen, uint16_t qtype, msg->qinfo.qname_len = qnamelen; msg->qinfo.qtype = qtype; msg->qinfo.qclass = qclass; + msg->qinfo.local_alias = NULL; /* non-packed reply_info, because it needs to grow the array */ msg->rep = (struct reply_info*)regional_alloc_zero(region, sizeof(struct reply_info)-sizeof(struct rrset_ref)); @@ -389,8 +443,7 @@ dns_msg_authadd(struct dns_msg* msg, struct regional* region, return 1; } -/** add rrset to answer section */ -static int +int dns_msg_ansadd(struct dns_msg* msg, struct regional* region, struct ub_packed_rrset_key* rrset, time_t now) { @@ -477,8 +530,7 @@ gen_dns_msg(struct regional* region, struct query_info* q, size_t num) return msg; } -/** generate dns_msg from cached message */ -static struct dns_msg* +struct dns_msg* tomsg(struct module_env* env, struct query_info* q, struct reply_info* r, struct regional* region, time_t now, struct regional* scratch) { @@ -523,8 +575,11 @@ tomsg(struct module_env* env, struct query_info* q, struct reply_info* r, return NULL; } } - rrset_array_unlock_touch(env->rrset_cache, scratch, r->ref, + if(env) + rrset_array_unlock_touch(env->rrset_cache, scratch, r->ref, r->rrset_count); + else + rrset_array_unlock(r->ref, r->rrset_count); return msg; } @@ -560,7 +615,7 @@ rrset_msg(struct ub_packed_rrset_key* rrset, struct regional* region, /** synthesize DNAME+CNAME response from cached DNAME item */ static struct dns_msg* synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region, - time_t now, struct query_info* q) + time_t now, struct query_info* q, enum sec_status* sec_status) { struct dns_msg* msg; struct ub_packed_rrset_key* ck; @@ -572,8 +627,9 @@ synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region, return NULL; /* only allow validated (with DNSSEC) DNAMEs used from cache * for insecure DNAMEs, query again. */ - if(d->security != sec_status_secure) - return NULL; + *sec_status = d->security; + /* return sec status, so the status of the CNAME can be checked + * by the calling routine. */ msg = gen_dns_msg(region, q, 2); /* DNAME + CNAME RRset */ if(!msg) return NULL; @@ -703,11 +759,12 @@ fill_any(struct module_env* env, struct dns_msg* dns_cache_lookup(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, struct regional* region, struct regional* scratch) + uint16_t flags, struct regional* region, struct regional* scratch, + int no_partial) { struct lruhash_entry* e; struct query_info k; - hashvalue_t h; + hashvalue_type h; time_t now = *env->now; struct ub_packed_rrset_key* rrset; @@ -716,6 +773,7 @@ dns_cache_lookup(struct module_env* env, k.qname_len = qnamelen; k.qtype = qtype; k.qclass = qclass; + k.local_alias = NULL; h = query_info_hash(&k, flags); e = slabhash_lookup(env->msg_cache, h, &k, 0); if(e) { @@ -734,26 +792,59 @@ dns_cache_lookup(struct module_env* env, /* see if a DNAME exists. Checked for first, to enforce that DNAMEs * are more important, the CNAME is resynthesized and thus * consistent with the DNAME */ - if( (rrset=find_closest_of_type(env, qname, qnamelen, qclass, now, + if(!no_partial && + (rrset=find_closest_of_type(env, qname, qnamelen, qclass, now, LDNS_RR_TYPE_DNAME, 1))) { /* synthesize a DNAME+CNAME message based on this */ - struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k); + enum sec_status sec_status = sec_status_unchecked; + struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k, + &sec_status); if(msg) { + struct ub_packed_rrset_key* cname_rrset; + lock_rw_unlock(&rrset->entry.lock); + /* now, after unlocking the DNAME rrset lock, + * check the sec_status, and see if we need to look + * up the CNAME record associated before it can + * be used */ + /* normally, only secure DNAMEs allowed from cache*/ + if(sec_status == sec_status_secure) + return msg; + /* but if we have a CNAME cached with this name, then we + * have previously already allowed this name to pass. + * the next cache lookup is going to fetch that CNAME itself, + * but it is better to have the (unsigned)DNAME + CNAME in + * that case */ + cname_rrset = rrset_cache_lookup( + env->rrset_cache, qname, qnamelen, + LDNS_RR_TYPE_CNAME, qclass, 0, now, 0); + if(cname_rrset) { + /* CNAME already synthesized by + * synth_dname_msg routine, so we can + * straight up return the msg */ + lock_rw_unlock(&cname_rrset->entry.lock); + return msg; + } + } else { lock_rw_unlock(&rrset->entry.lock); - return msg; } - lock_rw_unlock(&rrset->entry.lock); } /* see if we have CNAME for this domain, * but not for DS records (which are part of the parent) */ - if( qtype != LDNS_RR_TYPE_DS && + if(!no_partial && qtype != LDNS_RR_TYPE_DS && (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen, LDNS_RR_TYPE_CNAME, qclass, 0, now, 0))) { - struct dns_msg* msg = rrset_msg(rrset, region, now, &k); - if(msg) { - lock_rw_unlock(&rrset->entry.lock); - return msg; + uint8_t* wc = NULL; + size_t wl; + /* if the rrset is not a wildcard expansion, with wcname */ + /* because, if we return that CNAME rrset on its own, it is + * missing the NSEC or NSEC3 proof */ + if(!(val_rrset_wildcard(rrset, &wc, &wl) && wc != NULL)) { + struct dns_msg* msg = rrset_msg(rrset, region, now, &k); + if(msg) { + lock_rw_unlock(&rrset->entry.lock); + return msg; + } } lock_rw_unlock(&rrset->entry.lock); } @@ -795,6 +886,12 @@ dns_cache_lookup(struct module_env* env, dname_remove_label(&k.qname, &k.qname_len); h = query_info_hash(&k, flags); e = slabhash_lookup(env->msg_cache, h, &k, 0); + if(!e && k.qtype != LDNS_RR_TYPE_A && + env->cfg->qname_minimisation) { + k.qtype = LDNS_RR_TYPE_A; + h = query_info_hash(&k, flags); + e = slabhash_lookup(env->msg_cache, h, &k, 0); + } if(e) { struct reply_info* data = (struct reply_info*)e->data; struct dns_msg* msg; @@ -810,7 +907,8 @@ dns_cache_lookup(struct module_env* env, } lock_rw_unlock(&e->lock); } - } + k.qtype = qtype; + } /* fill common RR types for ANY response to avoid requery */ if(qtype == LDNS_RR_TYPE_ANY) { @@ -820,17 +918,17 @@ dns_cache_lookup(struct module_env* env, return NULL; } -int +int dns_cache_store(struct module_env* env, struct query_info* msgqinf, struct reply_info* msgrep, int is_referral, time_t leeway, int pside, - struct regional* region, uint16_t flags) + struct regional* region, uint32_t flags) { struct reply_info* rep = NULL; /* alloc, malloc properly (not in region, like msg is) */ rep = reply_info_copy(msgrep, env->alloc, NULL); if(!rep) return 0; - /* ttl must be relative ;i.e. 0..86400 not time(0)+86400. + /* ttl must be relative ;i.e. 0..86400 not time(0)+86400. * the env->now is added to message and RRsets in this routine. */ /* the leeway is used to invalidate other rrsets earlier */ @@ -855,7 +953,7 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, } else { /* store msg, and rrsets */ struct query_info qinf; - hashvalue_t h; + hashvalue_type h; qinf = *msgqinf; qinf.qname = memdup(msgqinf->qname, msgqinf->qname_len); @@ -868,9 +966,9 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, * Not AA from cache. Not CD in cache (depends on client bit). */ rep->flags |= (BIT_RA | BIT_QR); rep->flags &= ~(BIT_AA | BIT_CD); - h = query_info_hash(&qinf, flags); + h = query_info_hash(&qinf, (uint16_t)flags); dns_cache_store_msg(env, &qinf, h, rep, leeway, pside, msgrep, - region); + flags, region); /* qname is used inside query_info_entrysetup, and set to * NULL. If it has not been used, free it. free(0) is safe. */ free(qinf.qname); diff --git a/external/unbound/services/cache/dns.h b/external/unbound/services/cache/dns.h index 69796c2..78f81e7 100644 --- a/external/unbound/services/cache/dns.h +++ b/external/unbound/services/cache/dns.h @@ -49,6 +49,12 @@ struct reply_info; struct regional; struct delegpt; +/** Flags to control behavior of dns_cache_store() and dns_cache_store_msg(). + * Must be an unsigned 32-bit value larger than 0xffff */ + +/** Allow caching a DNS message with a zero TTL. */ +#define DNSCACHE_STORE_ZEROTTL 0x100000 + /** * Region allocated message reply */ @@ -80,11 +86,13 @@ struct dns_msg { * @param region: region to allocate better entries from cache into. * (used when is_referral is false). * @param flags: flags with BIT_CD for AAAA queries in dns64 translation. + * The higher 16 bits are used internally to customize the cache policy. + * (See DNSCACHE_STORE_xxx flags). * @return 0 on alloc error (out of memory). */ int dns_cache_store(struct module_env* env, struct query_info* qinf, struct reply_info* rep, int is_referral, time_t leeway, int pside, - struct regional* region, uint16_t flags); + struct regional* region, uint32_t flags); /** * Store message in the cache. Stores in message cache and rrset cache. @@ -103,11 +111,12 @@ int dns_cache_store(struct module_env* env, struct query_info* qinf, * from the parentside of the zonecut. This means that the type NS * can be updated to full TTL even in prefetch situations. * @param qrep: message that can be altered with better rrs from cache. + * @param flags: customization flags for the cache policy. * @param region: to allocate into for qmsg. */ void dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, - hashvalue_t hash, struct reply_info* rep, time_t leeway, int pside, - struct reply_info* qrep, struct regional* region); + hashvalue_type hash, struct reply_info* rep, time_t leeway, int pside, + struct reply_info* qrep, uint32_t flags, struct regional* region); /** * Find a delegation from the cache. @@ -126,6 +135,20 @@ struct delegpt* dns_cache_find_delegation(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, struct regional* region, struct dns_msg** msg, time_t timenow); +/** + * generate dns_msg from cached message + * @param env: module environment with the DNS cache. NULL if the LRU from cache + * does not need to be touched. + * @param q: query info, contains qname that will make up the dns message. + * @param r: reply info that, together with qname, will make up the dns message. + * @param region: where to allocate dns message. + * @param now: the time now, for check if TTL on cache entry is ok. + * @param scratch: where to allocate temporary data. + * */ +struct dns_msg* tomsg(struct module_env* env, struct query_info* q, + struct reply_info* r, struct regional* region, time_t now, + struct regional* scratch); + /** * Find cached message * @param env: module environment with the DNS cache. @@ -136,13 +159,16 @@ struct delegpt* dns_cache_find_delegation(struct module_env* env, * @param flags: flags with BIT_CD for AAAA queries in dns64 translation. * @param region: where to allocate result. * @param scratch: where to allocate temporary data. + * @param no_partial: if true, only complete messages and not a partial + * one (with only the start of the CNAME chain and not the rest). * @return new response message (alloced in region, rrsets do not have IDs). * or NULL on error or if not found in cache. * TTLs are made relative to the current time. */ struct dns_msg* dns_cache_lookup(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, struct regional* region, struct regional* scratch); + uint16_t flags, struct regional* region, struct regional* scratch, + int no_partial); /** * find and add A and AAAA records for missing nameservers in delegpt @@ -181,6 +207,18 @@ struct dns_msg* dns_msg_create(uint8_t* qname, size_t qnamelen, uint16_t qtype, int dns_msg_authadd(struct dns_msg* msg, struct regional* region, struct ub_packed_rrset_key* rrset, time_t now); +/** + * Add rrset to authority section in unpacked dns_msg message. Must have enough + * space left, does not grow the array. + * @param msg: msg to put it in. + * @param region: region to alloc in + * @param rrset: to add in authority section + * @param now: now. + * @return true if worked, false on fail + */ +int dns_msg_ansadd(struct dns_msg* msg, struct regional* region, + struct ub_packed_rrset_key* rrset, time_t now); + /** * Adjust the prefetch_ttl for a cached message. This adds a value to the * prefetch ttl - postponing the time when it will be prefetched for future @@ -194,4 +232,10 @@ int dns_msg_authadd(struct dns_msg* msg, struct regional* region, int dns_cache_prefetch_adjust(struct module_env* env, struct query_info* qinfo, time_t adjust, uint16_t flags); +/** lookup message in message cache + * the returned nonNULL entry is locked and has to be unlocked by the caller */ +struct msgreply_entry* msg_cache_lookup(struct module_env* env, + uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, + uint16_t flags, time_t now, int wr); + #endif /* SERVICES_CACHE_DNS_H */ diff --git a/external/unbound/services/cache/infra.c b/external/unbound/services/cache/infra.c index c0049d8..f432030 100644 --- a/external/unbound/services/cache/infra.c +++ b/external/unbound/services/cache/infra.c @@ -61,6 +61,10 @@ /** ratelimit value for delegation point */ int infra_dp_ratelimit = 0; +/** ratelimit value for client ip addresses, + * in queries per second. */ +int infra_ip_ratelimit = 0; + size_t infra_sizefunc(void* k, void* ATTR_UNUSED(d)) { @@ -228,27 +232,33 @@ infra_create(struct config_file* cfg) infra->host_ttl = cfg->host_ttl; name_tree_init(&infra->domain_limits); infra_dp_ratelimit = cfg->ratelimit; - if(cfg->ratelimit != 0) { - infra->domain_rates = slabhash_create(cfg->ratelimit_slabs, - INFRA_HOST_STARTSIZE, cfg->ratelimit_size, - &rate_sizefunc, &rate_compfunc, &rate_delkeyfunc, - &rate_deldatafunc, NULL); - if(!infra->domain_rates) { - infra_delete(infra); - return NULL; - } - /* insert config data into ratelimits */ - if(!infra_ratelimit_cfg_insert(infra, cfg)) { - infra_delete(infra); - return NULL; - } - name_tree_init_parents(&infra->domain_limits); + infra->domain_rates = slabhash_create(cfg->ratelimit_slabs, + INFRA_HOST_STARTSIZE, cfg->ratelimit_size, + &rate_sizefunc, &rate_compfunc, &rate_delkeyfunc, + &rate_deldatafunc, NULL); + if(!infra->domain_rates) { + infra_delete(infra); + return NULL; + } + /* insert config data into ratelimits */ + if(!infra_ratelimit_cfg_insert(infra, cfg)) { + infra_delete(infra); + return NULL; + } + name_tree_init_parents(&infra->domain_limits); + infra_ip_ratelimit = cfg->ip_ratelimit; + infra->client_ip_rates = slabhash_create(cfg->ip_ratelimit_slabs, + INFRA_HOST_STARTSIZE, cfg->ip_ratelimit_size, &ip_rate_sizefunc, + &ip_rate_compfunc, &ip_rate_delkeyfunc, &ip_rate_deldatafunc, NULL); + if(!infra->client_ip_rates) { + infra_delete(infra); + return NULL; } return infra; } /** delete domain_limit entries */ -static void domain_limit_free(rbnode_t* n, void* ATTR_UNUSED(arg)) +static void domain_limit_free(rbnode_type* n, void* ATTR_UNUSED(arg)) { if(n) { free(((struct domain_limit_data*)n)->node.name); @@ -264,6 +274,7 @@ infra_delete(struct infra_cache* infra) slabhash_delete(infra->hosts); slabhash_delete(infra->domain_rates); traverse_postorder(&infra->domain_limits, domain_limit_free, NULL); + slabhash_delete(infra->client_ip_rates); free(infra); } @@ -284,31 +295,38 @@ infra_adjust(struct infra_cache* infra, struct config_file* cfg) return infra; } -/** calculate the hash value for a host key */ -static hashvalue_t -hash_addr(struct sockaddr_storage* addr, socklen_t addrlen) +/** calculate the hash value for a host key + * set use_port to a non-0 number to use the port in + * the hash calculation; 0 to ignore the port.*/ +static hashvalue_type +hash_addr(struct sockaddr_storage* addr, socklen_t addrlen, + int use_port) { - hashvalue_t h = 0xab; + hashvalue_type h = 0xab; /* select the pieces to hash, some OS have changing data inside */ if(addr_is_ip6(addr, addrlen)) { struct sockaddr_in6* in6 = (struct sockaddr_in6*)addr; h = hashlittle(&in6->sin6_family, sizeof(in6->sin6_family), h); - h = hashlittle(&in6->sin6_port, sizeof(in6->sin6_port), h); + if(use_port){ + h = hashlittle(&in6->sin6_port, sizeof(in6->sin6_port), h); + } h = hashlittle(&in6->sin6_addr, INET6_SIZE, h); } else { struct sockaddr_in* in = (struct sockaddr_in*)addr; h = hashlittle(&in->sin_family, sizeof(in->sin_family), h); - h = hashlittle(&in->sin_port, sizeof(in->sin_port), h); + if(use_port){ + h = hashlittle(&in->sin_port, sizeof(in->sin_port), h); + } h = hashlittle(&in->sin_addr, INET_SIZE, h); } return h; } /** calculate infra hash for a key */ -static hashvalue_t +static hashvalue_type hash_infra(struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* name) { - return dname_query_hash(name, hash_addr(addr, addrlen)); + return dname_query_hash(name, hash_addr(addr, addrlen, 1)); } /** lookup version that does not check host ttl (you check it) */ @@ -726,12 +744,36 @@ int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name, return infra_dp_ratelimit; } +size_t ip_rate_sizefunc(void* k, void* ATTR_UNUSED(d)) +{ + struct ip_rate_key* key = (struct ip_rate_key*)k; + return sizeof(*key) + sizeof(struct ip_rate_data) + + lock_get_mem(&key->entry.lock); +} + +int ip_rate_compfunc(void* key1, void* key2) +{ + struct ip_rate_key* k1 = (struct ip_rate_key*)key1; + struct ip_rate_key* k2 = (struct ip_rate_key*)key2; + return sockaddr_cmp_addr(&k1->addr, k1->addrlen, + &k2->addr, k2->addrlen); +} + +void ip_rate_delkeyfunc(void* k, void* ATTR_UNUSED(arg)) +{ + struct ip_rate_key* key = (struct ip_rate_key*)k; + if(!key) + return; + lock_rw_destroy(&key->entry.lock); + free(key); +} + /** find data item in array, for write access, caller unlocks */ static struct lruhash_entry* infra_find_ratedata(struct infra_cache* infra, uint8_t* name, size_t namelen, int wr) { struct rate_key key; - hashvalue_t h = dname_query_hash(name, 0xab); + hashvalue_type h = dname_query_hash(name, 0xab); memset(&key, 0, sizeof(key)); key.name = name; key.namelen = namelen; @@ -739,11 +781,25 @@ static struct lruhash_entry* infra_find_ratedata(struct infra_cache* infra, return slabhash_lookup(infra->domain_rates, h, &key, wr); } +/** find data item in array for ip addresses */ +struct lruhash_entry* infra_find_ip_ratedata(struct infra_cache* infra, + struct comm_reply* repinfo, int wr) +{ + struct ip_rate_key key; + hashvalue_type h = hash_addr(&(repinfo->addr), + repinfo->addrlen, 0); + memset(&key, 0, sizeof(key)); + key.addr = repinfo->addr; + key.addrlen = repinfo->addrlen; + key.entry.hash = h; + return slabhash_lookup(infra->client_ip_rates, h, &key, wr); +} + /** create rate data item for name, number 1 in now */ static void infra_create_ratedata(struct infra_cache* infra, uint8_t* name, size_t namelen, time_t timenow) { - hashvalue_t h = dname_query_hash(name, 0xab); + hashvalue_type h = dname_query_hash(name, 0xab); struct rate_key* k = (struct rate_key*)calloc(1, sizeof(*k)); struct rate_data* d = (struct rate_data*)calloc(1, sizeof(*d)); if(!k || !d) { @@ -767,6 +823,30 @@ static void infra_create_ratedata(struct infra_cache* infra, slabhash_insert(infra->domain_rates, h, &k->entry, d, NULL); } +/** create rate data item for ip address */ +static void infra_ip_create_ratedata(struct infra_cache* infra, + struct comm_reply* repinfo, time_t timenow) +{ + hashvalue_type h = hash_addr(&(repinfo->addr), + repinfo->addrlen, 0); + struct ip_rate_key* k = (struct ip_rate_key*)calloc(1, sizeof(*k)); + struct ip_rate_data* d = (struct ip_rate_data*)calloc(1, sizeof(*d)); + if(!k || !d) { + free(k); + free(d); + return; /* alloc failure */ + } + k->addr = repinfo->addr; + k->addrlen = repinfo->addrlen; + lock_rw_init(&k->entry.lock); + k->entry.hash = h; + k->entry.key = k; + k->entry.data = d; + d->qps[0] = 1; + d->timestamp[0] = timenow; + slabhash_insert(infra->client_ip_rates, h, &k->entry, d, NULL); +} + /** find the second and return its rate counter, if none, remove oldest */ static int* infra_rate_find_second(void* data, time_t t) { @@ -811,6 +891,8 @@ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, /* find ratelimit */ lim = infra_find_ratelimit(infra, name, namelen); + if(!lim) + return 1; /* disabled for this domain */ /* find or insert ratedata */ entry = infra_find_ratedata(infra, name, namelen, 1); @@ -859,6 +941,8 @@ int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, /* find ratelimit */ lim = infra_find_ratelimit(infra, name, namelen); + if(!lim) + return 0; /* disabled for this domain */ /* find current rate */ entry = infra_find_ratedata(infra, name, namelen, 0); @@ -875,6 +959,41 @@ infra_get_mem(struct infra_cache* infra) { size_t s = sizeof(*infra) + slabhash_get_mem(infra->hosts); if(infra->domain_rates) s += slabhash_get_mem(infra->domain_rates); + if(infra->client_ip_rates) s += slabhash_get_mem(infra->client_ip_rates); /* ignore domain_limits because walk through tree is big */ return s; } + +int infra_ip_ratelimit_inc(struct infra_cache* infra, + struct comm_reply* repinfo, time_t timenow) +{ + int max; + struct lruhash_entry* entry; + + /* not enabled */ + if(!infra_ip_ratelimit) { + return 1; + } + /* find or insert ratedata */ + entry = infra_find_ip_ratedata(infra, repinfo, 1); + if(entry) { + int premax = infra_rate_max(entry->data, timenow); + int* cur = infra_rate_find_second(entry->data, timenow); + (*cur)++; + max = infra_rate_max(entry->data, timenow); + lock_rw_unlock(&entry->lock); + + if(premax < infra_ip_ratelimit && max >= infra_ip_ratelimit) { + char client_ip[128]; + addr_to_str((struct sockaddr_storage *)&repinfo->addr, + repinfo->addrlen, client_ip, sizeof(client_ip)); + verbose(VERB_OPS, "ratelimit exceeded %s %d", client_ip, + infra_ip_ratelimit); + } + return (max <= infra_ip_ratelimit); + } + + /* create */ + infra_ip_create_ratedata(infra, repinfo, timenow); + return 1; +} diff --git a/external/unbound/services/cache/infra.h b/external/unbound/services/cache/infra.h index fc7abb7..10db796 100644 --- a/external/unbound/services/cache/infra.h +++ b/external/unbound/services/cache/infra.h @@ -36,7 +36,10 @@ /** * \file * - * This file contains the infrastructure cache. + * This file contains the infrastructure cache, as well as rate limiting. + * Note that there are two sorts of rate-limiting here: + * - Pre-cache, per-query rate limiting (query ratelimits) + * - Post-cache, per-domain name rate limiting (infra-ratelimits) */ #ifndef SERVICES_CACHE_INFRA_H @@ -44,6 +47,8 @@ #include "util/storage/lruhash.h" #include "util/storage/dnstree.h" #include "util/rtt.h" +#include "util/netevent.h" +#include "util/data/msgreply.h" struct slabhash; struct config_file; @@ -112,7 +117,9 @@ struct infra_cache { /** hash table with query rates per name: rate_key, rate_data */ struct slabhash* domain_rates; /** ratelimit settings for domains, struct domain_limit_data */ - rbtree_t domain_limits; + rbtree_type domain_limits; + /** hash table with query rates per client ip: ip_rate_key, ip_rate_data */ + struct slabhash* client_ip_rates; }; /** ratelimit, unless overridden by domain_limits, 0 is off */ @@ -142,6 +149,21 @@ struct rate_key { size_t namelen; }; +/** ip ratelimit, 0 is off */ +extern int infra_ip_ratelimit; + +/** + * key for ip_ratelimit lookups, a source IP. + */ +struct ip_rate_key { + /** lruhash key entry */ + struct lruhash_entry entry; + /** client ip information */ + struct sockaddr_storage addr; + /** length of address */ + socklen_t addrlen; +}; + /** number of seconds to track qps rate */ #define RATE_WINDOW 2 @@ -160,6 +182,8 @@ struct rate_data { time_t timestamp[RATE_WINDOW]; }; +#define ip_rate_data rate_data + /** infra host cache default hash lookup size */ #define INFRA_HOST_STARTSIZE 32 /** bytes per zonename reserved in the hostcache, dnamelen(zonename.com.) */ @@ -377,10 +401,20 @@ int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, /** find the maximum rate stored, not too old. 0 if no information. */ int infra_rate_max(void* data, time_t now); -/** find the ratelimit in qps for a domain */ +/** find the ratelimit in qps for a domain. 0 if no limit for domain. */ int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name, size_t namelen); +/** Update query ratelimit hash and decide + * whether or not a query should be dropped. + * @param infra: infra cache + * @param repinfo: information about client + * @param timenow: what time it is now. + * @return 1 if it could be incremented. 0 if the increment overshot the + * ratelimit and the query should be dropped. */ +int infra_ip_ratelimit_inc(struct infra_cache* infra, + struct comm_reply* repinfo, time_t timenow); + /** * Get memory used by the infra cache. * @param infra: infrastructure cache. @@ -413,4 +447,16 @@ void rate_delkeyfunc(void* k, void* arg); /** delete data */ void rate_deldatafunc(void* d, void* arg); +/* calculate size for the client ip hashtable */ +size_t ip_rate_sizefunc(void* k, void* d); + +/* compare two addresses */ +int ip_rate_compfunc(void* key1, void* key2); + +/* delete key, and destroy the lock */ +void ip_rate_delkeyfunc(void* d, void* arg); + +/* delete data */ +#define ip_rate_deldatafunc rate_deldatafunc + #endif /* SERVICES_CACHE_INFRA_H */ diff --git a/external/unbound/services/cache/rrset.c b/external/unbound/services/cache/rrset.c index 2f6a1b5..26c1aeb 100644 --- a/external/unbound/services/cache/rrset.c +++ b/external/unbound/services/cache/rrset.c @@ -47,6 +47,7 @@ #include "util/data/msgreply.h" #include "util/regional.h" #include "util/alloc.h" +#include "util/net_help.h" void rrset_markdel(void* key) @@ -91,7 +92,7 @@ struct rrset_cache* rrset_cache_adjust(struct rrset_cache *r, void rrset_cache_touch(struct rrset_cache* r, struct ub_packed_rrset_key* key, - hashvalue_t hash, rrset_id_t id) + hashvalue_type hash, rrset_id_type id) { struct lruhash* table = slabhash_gettable(&r->table, hash); /* @@ -186,7 +187,7 @@ rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref, { struct lruhash_entry* e; struct ub_packed_rrset_key* k = ref->key; - hashvalue_t h = k->entry.hash; + hashvalue_type h = k->entry.hash; uint16_t rrset_type = ntohs(k->rk.type); int equal = 0; log_assert(ref->id != 0 && k->id != 0); @@ -237,6 +238,39 @@ rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref, return 0; } +void rrset_cache_update_wildcard(struct rrset_cache* rrset_cache, + struct ub_packed_rrset_key* rrset, uint8_t* ce, size_t ce_len, + struct alloc_cache* alloc, time_t timenow) +{ + struct rrset_ref ref; + uint8_t wc_dname[LDNS_MAX_DOMAINLEN+3]; + rrset = packed_rrset_copy_alloc(rrset, alloc, timenow); + if(!rrset) { + log_err("malloc failure in rrset_cache_update_wildcard"); + return; + } + /* ce has at least one label less then qname, we can therefore safely + * add the wildcard label. */ + wc_dname[0] = 1; + wc_dname[1] = (uint8_t)'*'; + memmove(wc_dname+2, ce, ce_len); + + free(rrset->rk.dname); + rrset->rk.dname_len = ce_len + 2; + rrset->rk.dname = (uint8_t*)memdup(wc_dname, rrset->rk.dname_len); + if(!rrset->rk.dname) { + alloc_special_release(alloc, rrset); + log_err("memdup failure in rrset_cache_update_wildcard"); + return; + } + + rrset->entry.hash = rrset_key_hash(&rrset->rk); + ref.key = rrset; + ref.id = rrset->id; + /* ignore ret: if it was in the cache, ref updated */ + (void)rrset_cache_update(rrset_cache, &ref, alloc, timenow); +} + struct ub_packed_rrset_key* rrset_cache_lookup(struct rrset_cache* r, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint32_t flags, time_t timenow, @@ -303,10 +337,10 @@ void rrset_array_unlock_touch(struct rrset_cache* r, struct regional* scratch, struct rrset_ref* ref, size_t count) { - hashvalue_t* h; + hashvalue_type* h; size_t i; - if(count > RR_COUNT_MAX || !(h = (hashvalue_t*)regional_alloc(scratch, - sizeof(hashvalue_t)*count))) { + if(count > RR_COUNT_MAX || !(h = (hashvalue_type*)regional_alloc( + scratch, sizeof(hashvalue_type)*count))) { log_warn("rrset LRU: memory allocation failed"); h = NULL; } else /* store hash values */ diff --git a/external/unbound/services/cache/rrset.h b/external/unbound/services/cache/rrset.h index 98e44a4..35a0d73 100644 --- a/external/unbound/services/cache/rrset.h +++ b/external/unbound/services/cache/rrset.h @@ -102,7 +102,7 @@ struct rrset_cache* rrset_cache_adjust(struct rrset_cache* r, * @param id: used to check that the item is unchanged and not deleted. */ void rrset_cache_touch(struct rrset_cache* r, struct ub_packed_rrset_key* key, - hashvalue_t hash, rrset_id_t id); + hashvalue_type hash, rrset_id_type id); /** * Update an rrset in the rrset cache. Stores the information for later use. @@ -133,6 +133,24 @@ void rrset_cache_touch(struct rrset_cache* r, struct ub_packed_rrset_key* key, int rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref, struct alloc_cache* alloc, time_t timenow); +/** + * Update or add an rrset in the rrset cache using a wildcard dname. + * Generates wildcard dname by prepending the wildcard label to the closest + * encloser. Will lookup if the rrset is in the cache and perform an update if + * necessary. + * + * @param rrset_cache: the rrset cache. + * @param rrset: which rrset to cache as wildcard. This rrset is left + * untouched. + * @param ce: the closest encloser, will be uses to generate the wildcard dname. + * @param ce_len: the closest encloser lenght. + * @param alloc: how to allocate (and deallocate) the special rrset key. + * @param timenow: current time (to see if ttl in cache is expired). + */ +void rrset_cache_update_wildcard(struct rrset_cache* rrset_cache, + struct ub_packed_rrset_key* rrset, uint8_t* ce, size_t ce_len, + struct alloc_cache* alloc, time_t timenow); + /** * Lookup rrset. You obtain read/write lock. You must unlock before lookup * anything of else. diff --git a/external/unbound/services/listen_dnsport.c b/external/unbound/services/listen_dnsport.c index 276c0fb..248cad3 100644 --- a/external/unbound/services/listen_dnsport.c +++ b/external/unbound/services/listen_dnsport.c @@ -43,6 +43,9 @@ # include #endif #include +#ifdef USE_TCP_FASTOPEN +#include +#endif #include "services/listen_dnsport.h" #include "services/outside_network.h" #include "util/netevent.h" @@ -60,6 +63,10 @@ #include #endif +#ifdef HAVE_SYSTEMD +#include +#endif + /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -93,13 +100,74 @@ verbose_print_addr(struct addrinfo *addr) } } +#ifdef HAVE_SYSTEMD +static int +systemd_get_activated(int family, int socktype, int listen, + struct sockaddr *addr, socklen_t addrlen, + const char *path) +{ + int i = 0; + int r = 0; + int s = -1; + const char* listen_pid, *listen_fds; + + /* We should use "listen" option only for stream protocols. For UDP it should be -1 */ + + if((r = sd_booted()) < 1) { + if(r == 0) + log_warn("systemd is not running"); + else + log_err("systemd sd_booted(): %s", strerror(-r)); + return -1; + } + + listen_pid = getenv("LISTEN_PID"); + listen_fds = getenv("LISTEN_FDS"); + + if (!listen_pid) { + log_warn("Systemd mandatory ENV variable is not defined: LISTEN_PID"); + return -1; + } + + if (!listen_fds) { + log_warn("Systemd mandatory ENV variable is not defined: LISTEN_FDS"); + return -1; + } + + if((r = sd_listen_fds(0)) < 1) { + if(r == 0) + log_warn("systemd: did not return socket, check unit configuration"); + else + log_err("systemd sd_listen_fds(): %s", strerror(-r)); + return -1; + } + + for(i = 0; i < r; i++) { + if(sd_is_socket(SD_LISTEN_FDS_START + i, family, socktype, listen)) { + s = SD_LISTEN_FDS_START + i; + break; + } + } + if (s == -1) { + if (addr) + log_err_addr("systemd sd_listen_fds()", + "no such socket", + (struct sockaddr_storage *)addr, addrlen); + else + log_err("systemd sd_listen_fds(): %s", path); + } + return s; +} +#endif + int create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t addrlen, int v6only, int* inuse, int* noproto, - int rcv, int snd, int listen, int* reuseport, int transparent) + int rcv, int snd, int listen, int* reuseport, int transparent, + int freebind, int use_systemd) { int s; -#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU) || defined(IP_TRANSPARENT) +#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined (SO_BINDANY) int on=1; #endif #ifdef IPV6_MTU @@ -114,8 +182,21 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifndef IPV6_V6ONLY (void)v6only; #endif -#ifndef IP_TRANSPARENT +#if !defined(IP_TRANSPARENT) && !defined(IP_BINDANY) && !defined(SO_BINDANY) (void)transparent; +#endif +#if !defined(IP_FREEBIND) + (void)freebind; +#endif +#ifdef HAVE_SYSTEMD + int got_fd_from_systemd = 0; + + if (!use_systemd + || (use_systemd + && (s = systemd_get_activated(family, socktype, -1, addr, + addrlen, NULL)) == -1)) { +#else + (void)use_systemd; #endif if((s = socket(family, socktype, 0)) == -1) { *inuse = 0; @@ -137,6 +218,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, *noproto = 0; return -1; } +#ifdef HAVE_SYSTEMD + } else { + got_fd_from_systemd = 1; + } +#endif if(listen) { #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, @@ -187,8 +273,31 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, log_warn("setsockopt(.. IP_TRANSPARENT ..) failed: %s", strerror(errno)); } -#endif /* IP_TRANSPARENT */ +#elif defined(IP_BINDANY) + if (transparent && + setsockopt(s, (family==AF_INET6? IPPROTO_IPV6:IPPROTO_IP), + (family == AF_INET6? IPV6_BINDANY:IP_BINDANY), + (void*)&on, (socklen_t)sizeof(on)) < 0) { + log_warn("setsockopt(.. IP%s_BINDANY ..) failed: %s", + (family==AF_INET6?"V6":""), strerror(errno)); + } +#elif defined(SO_BINDANY) + if (transparent && + setsockopt(s, SOL_SOCKET, SO_BINDANY, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + log_warn("setsockopt(.. SO_BINDANY ..) failed: %s", + strerror(errno)); + } +#endif /* IP_TRANSPARENT || IP_BINDANY || SO_BINDANY */ + } +#ifdef IP_FREEBIND + if(freebind && + setsockopt(s, IPPROTO_IP, IP_FREEBIND, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + log_warn("setsockopt(.. IP_FREEBIND ..) failed: %s", + strerror(errno)); } +#endif /* IP_FREEBIND */ if(rcv) { #ifdef SO_RCVBUF int got; @@ -442,7 +551,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, } # endif /* IPv4 MTU */ } - if(bind(s, (struct sockaddr*)addr, addrlen) != 0) { + if( +#ifdef HAVE_SYSTEMD + !got_fd_from_systemd && +#endif + bind(s, (struct sockaddr*)addr, addrlen) != 0) { *noproto = 0; *inuse = 0; #ifndef USE_WINSOCK @@ -465,7 +578,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, (struct sockaddr_storage*)addr, addrlen); } closesocket(s); -#endif +#endif /* USE_WINSOCK */ return -1; } if(!fd_set_nonblock(s)) { @@ -483,17 +596,35 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent) + int* reuseport, int transparent, int mss, int freebind, int use_systemd) { int s; -#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) +#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined(SO_BINDANY) int on = 1; #endif -#ifndef IP_TRANSPARENT +#ifdef HAVE_SYSTEMD + int got_fd_from_systemd = 0; +#endif +#ifdef USE_TCP_FASTOPEN + int qlen; +#endif +#if !defined(IP_TRANSPARENT) && !defined(IP_BINDANY) && !defined(SO_BINDANY) (void)transparent; +#endif +#if !defined(IP_FREEBIND) + (void)freebind; #endif verbose_print_addr(addr); *noproto = 0; +#ifdef HAVE_SYSTEMD + if (!use_systemd || + (use_systemd + && (s = systemd_get_activated(addr->ai_family, addr->ai_socktype, 1, + addr->ai_addr, addr->ai_addrlen, + NULL)) == -1)) { +#else + (void)use_systemd; +#endif if((s = socket(addr->ai_family, addr->ai_socktype, 0)) == -1) { #ifndef USE_WINSOCK if(errno == EAFNOSUPPORT || errno == EPROTONOSUPPORT) { @@ -512,6 +643,30 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #endif return -1; } + if (mss > 0) { +#if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) + if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG, (void*)&mss, + (socklen_t)sizeof(mss)) < 0) { + #ifndef USE_WINSOCK + log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", + strerror(errno)); + #else + log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", + wsa_strerror(WSAGetLastError())); + #endif + } else { + verbose(VERB_ALGO, + " tcp socket mss set to %d", mss); + } +#else + log_warn(" setsockopt(TCP_MAXSEG) unsupported"); +#endif /* defined(IPPROTO_TCP) && defined(TCP_MAXSEG) */ + } +#ifdef HAVE_SYSTEMD + } else { + got_fd_from_systemd = 1; + } +#endif #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { @@ -527,6 +682,13 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, return -1; } #endif /* SO_REUSEADDR */ +#ifdef IP_FREEBIND + if (freebind && setsockopt(s, IPPROTO_IP, IP_FREEBIND, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + log_warn("setsockopt(.. IP_FREEBIND ..) failed: %s", + strerror(errno)); + } +#endif /* IP_FREEBIND */ #ifdef SO_REUSEPORT /* try to set SO_REUSEPORT so that incoming * connections are distributed evenly among the receiving threads. @@ -573,8 +735,27 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, log_warn("setsockopt(.. IP_TRANSPARENT ..) failed: %s", strerror(errno)); } -#endif /* IP_TRANSPARENT */ - if(bind(s, addr->ai_addr, addr->ai_addrlen) != 0) { +#elif defined(IP_BINDANY) + if (transparent && + setsockopt(s, (addr->ai_family==AF_INET6? IPPROTO_IPV6:IPPROTO_IP), + (addr->ai_family == AF_INET6? IPV6_BINDANY:IP_BINDANY), + (void*)&on, (socklen_t)sizeof(on)) < 0) { + log_warn("setsockopt(.. IP%s_BINDANY ..) failed: %s", + (addr->ai_family==AF_INET6?"V6":""), strerror(errno)); + } +#elif defined(SO_BINDANY) + if (transparent && + setsockopt(s, SOL_SOCKET, SO_BINDANY, (void*)&on, (socklen_t) + sizeof(on)) < 0) { + log_warn("setsockopt(.. SO_BINDANY ..) failed: %s", + strerror(errno)); + } +#endif /* IP_TRANSPARENT || IP_BINDANY || SO_BINDANY */ + if( +#ifdef HAVE_SYSTEMD + !got_fd_from_systemd && +#endif + bind(s, addr->ai_addr, addr->ai_addrlen) != 0) { #ifndef USE_WINSOCK /* detect freebsd jail with no ipv6 permission */ if(addr->ai_family==AF_INET6 && errno==EINVAL) @@ -612,20 +793,51 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #endif return -1; } +#ifdef USE_TCP_FASTOPEN + /* qlen specifies how many outstanding TFO requests to allow. Limit is a defense + against IP spoofing attacks as suggested in RFC7413 */ +#ifdef __APPLE__ + /* OS X implementation only supports qlen of 1 via this call. Actual + value is configured by the net.inet.tcp.fastopen_backlog kernel parm. */ + qlen = 1; +#else + /* 5 is recommended on linux */ + qlen = 5; +#endif + if ((setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN, &qlen, + sizeof(qlen))) == -1 ) { +#ifdef ENOPROTOOPT + /* squelch ENOPROTOOPT: freebsd server mode with kernel support + disabled, except when verbosity enabled for debugging */ + if(errno != ENOPROTOOPT || verbosity >= 3) +#endif + log_err("Setting TCP Fast Open as server failed: %s", strerror(errno)); + } +#endif return s; } int -create_local_accept_sock(const char *path, int* noproto) +create_local_accept_sock(const char *path, int* noproto, int use_systemd) { +#ifdef HAVE_SYSTEMD + int ret; + + if (use_systemd && (ret = systemd_get_activated(AF_LOCAL, SOCK_STREAM, 1, NULL, 0, path)) != -1) + return ret; + else { +#endif #ifdef HAVE_SYS_UN_H int s; struct sockaddr_un usock; +#ifndef HAVE_SYSTEMD + (void)use_systemd; +#endif verbose(VERB_ALGO, "creating unix socket %s", path); #ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN /* this member exists on BSDs, not Linux */ - usock.sun_len = (socklen_t)sizeof(usock); + usock.sun_len = (unsigned)sizeof(usock); #endif usock.sun_family = AF_LOCAL; /* length is 92-108, 104 on FreeBSD */ @@ -641,29 +853,42 @@ create_local_accept_sock(const char *path, int* noproto) /* The socket already exists and cannot be removed */ log_err("Cannot remove old local socket %s (%s)", path, strerror(errno)); - return -1; + goto err; } if (bind(s, (struct sockaddr *)&usock, (socklen_t)sizeof(struct sockaddr_un)) == -1) { log_err("Cannot bind local socket %s (%s)", path, strerror(errno)); - return -1; + goto err; } if (!fd_set_nonblock(s)) { log_err("Cannot set non-blocking mode"); - return -1; + goto err; } if (listen(s, TCP_BACKLOG) == -1) { log_err("can't listen: %s", strerror(errno)); - return -1; + goto err; } (void)noproto; /*unused*/ return s; + +err: +#ifndef USE_WINSOCK + close(s); +#else + closesocket(s); +#endif + return -1; + +#ifdef HAVE_SYSTEMD + } +#endif #else + (void)use_systemd; (void)path; log_err("Local sockets are not supported"); *noproto = 1; @@ -678,7 +903,7 @@ create_local_accept_sock(const char *path, int* noproto) static int make_sock(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent) + int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) { struct addrinfo *res = NULL; int r, s, inuse, noproto; @@ -706,7 +931,7 @@ make_sock(int stype, const char* ifname, const char* port, s = create_udp_sock(res->ai_family, res->ai_socktype, (struct sockaddr*)res->ai_addr, res->ai_addrlen, v6only, &inuse, &noproto, (int)rcv, (int)snd, 1, - reuseport, transparent); + reuseport, transparent, freebind, use_systemd); if(s == -1 && inuse) { log_err("bind: address already in use"); } else if(s == -1 && noproto && hints->ai_family == AF_INET6){ @@ -714,7 +939,7 @@ make_sock(int stype, const char* ifname, const char* port, } } else { s = create_tcp_accept_sock(res, v6only, &noproto, reuseport, - transparent); + transparent, tcp_mss, freebind, use_systemd); if(s == -1 && noproto && hints->ai_family == AF_INET6){ *noip6 = 1; } @@ -727,7 +952,7 @@ make_sock(int stype, const char* ifname, const char* port, static int make_sock_port(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent) + int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) { char* s = strchr(ifname, '@'); if(s) { @@ -749,10 +974,10 @@ make_sock_port(int stype, const char* ifname, const char* port, (void)strlcpy(p, s+1, sizeof(p)); p[strlen(s+1)]=0; return make_sock(stype, newif, p, hints, v6only, noip6, - rcv, snd, reuseport, transparent); + rcv, snd, reuseport, transparent, tcp_mss, freebind, use_systemd); } return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd, - reuseport, transparent); + reuseport, transparent, tcp_mss, freebind, use_systemd); } /** @@ -802,7 +1027,7 @@ set_recvpktinfo(int s, int family) } # else log_err("no IPV6_RECVPKTINFO and no IPV6_PKTINFO option, please " - "disable interface-automatic in config"); + "disable interface-automatic or do-ip6 in config"); return 0; # endif /* defined IPV6_RECVPKTINFO */ @@ -823,7 +1048,7 @@ set_recvpktinfo(int s, int family) } # else log_err("no IP_SENDSRCADDR or IP_PKTINFO option, please disable " - "interface-automatic in config"); + "interface-automatic or do-ip4 in config"); return 0; # endif /* IP_PKTINFO */ @@ -831,6 +1056,26 @@ set_recvpktinfo(int s, int family) return 1; } +/** see if interface is ssl, its port number == the ssl port number */ +static int +if_is_ssl(const char* ifname, const char* port, int ssl_port, + struct config_strlist* tls_additional_port) +{ + struct config_strlist* s; + char* p = strchr(ifname, '@'); + if(!p && atoi(port) == ssl_port) + return 1; + if(p && atoi(p+1) == ssl_port) + return 1; + for(s = tls_additional_port; s; s = s->next) { + if(p && atoi(p+1) == atoi(s->str)) + return 1; + if(!p && atoi(port) == atoi(s->str)) + return 1; + } + return 0; +} + /** * Helper for ports_open. Creates one interface (or NULL for default). * @param ifname: The interface ip address. @@ -844,22 +1089,40 @@ set_recvpktinfo(int s, int family) * @param rcv: receive buffer size for UDP * @param snd: send buffer size for UDP * @param ssl_port: ssl service port number + * @param tls_additional_port: list of additional ssl service port numbers. * @param reuseport: try to set SO_REUSEPORT if nonNULL and true. * set to false on exit if reuseport failed due to no kernel support. * @param transparent: set IP_TRANSPARENT socket option. + * @param tcp_mss: maximum segment size of tcp socket. default if zero. + * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. + * @param dnscrypt_port: dnscrypt service port number * @return: returns false on error. */ static int ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, struct addrinfo *hints, const char* port, struct listen_port** list, - size_t rcv, size_t snd, int ssl_port, int* reuseport, int transparent) + size_t rcv, size_t snd, int ssl_port, + struct config_strlist* tls_additional_port, int* reuseport, + int transparent, int tcp_mss, int freebind, int use_systemd, + int dnscrypt_port) { int s, noip6=0; +#ifdef USE_DNSCRYPT + int is_dnscrypt = ((strchr(ifname, '@') && + atoi(strchr(ifname, '@')+1) == dnscrypt_port) || + (!strchr(ifname, '@') && atoi(port) == dnscrypt_port)); +#else + int is_dnscrypt = 0; + (void)dnscrypt_port; +#endif + if(!do_udp && !do_tcp) return 0; if(do_auto) { if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, - &noip6, rcv, snd, reuseport, transparent)) == -1) { + &noip6, rcv, snd, reuseport, transparent, + tcp_mss, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -875,7 +1138,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, #endif return 0; } - if(!port_insert(list, s, listen_type_udpancil)) { + if(!port_insert(list, s, + is_dnscrypt?listen_type_udpancil_dnscrypt:listen_type_udpancil)) { #ifndef USE_WINSOCK close(s); #else @@ -886,14 +1150,16 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } else if(do_udp) { /* regular udp socket */ if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, - &noip6, rcv, snd, reuseport, transparent)) == -1) { + &noip6, rcv, snd, reuseport, transparent, + tcp_mss, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; } return 0; } - if(!port_insert(list, s, listen_type_udp)) { + if(!port_insert(list, s, + is_dnscrypt?listen_type_udp_dnscrypt:listen_type_udp)) { #ifndef USE_WINSOCK close(s); #else @@ -903,11 +1169,11 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } } if(do_tcp) { - int is_ssl = ((strchr(ifname, '@') && - atoi(strchr(ifname, '@')+1) == ssl_port) || - (!strchr(ifname, '@') && atoi(port) == ssl_port)); + int is_ssl = if_is_ssl(ifname, port, ssl_port, + tls_additional_port); if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, - &noip6, 0, 0, reuseport, transparent)) == -1) { + &noip6, 0, 0, reuseport, transparent, tcp_mss, + freebind, use_systemd)) == -1) { if(noip6) { /*log_warn("IPv6 protocol not available");*/ return 1; @@ -917,7 +1183,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if(is_ssl) verbose(VERB_ALGO, "setup TCP for SSL service"); if(!port_insert(list, s, is_ssl?listen_type_ssl: - listen_type_tcp)) { + (is_dnscrypt?listen_type_tcp_dnscrypt:listen_type_tcp))) { #ifndef USE_WINSOCK close(s); #else @@ -951,7 +1217,7 @@ listen_cp_insert(struct comm_point* c, struct listen_dnsport* front) struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, void* sslctx, - struct dt_env* dtenv, comm_point_callback_t* cb, void *cb_arg) + struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg) { struct listen_dnsport* front = (struct listen_dnsport*) malloc(sizeof(struct listen_dnsport)); @@ -959,6 +1225,9 @@ listen_create(struct comm_base* base, struct listen_port* ports, return NULL; front->cps = NULL; front->udp_buff = sldns_buffer_new(bufsize); +#ifdef USE_DNSCRYPT + front->dnscrypt_udp_buff = NULL; +#endif if(!front->udp_buff) { free(front); return NULL; @@ -967,17 +1236,20 @@ listen_create(struct comm_base* base, struct listen_port* ports, /* create comm points as needed */ while(ports) { struct comm_point* cp = NULL; - if(ports->ftype == listen_type_udp) + if(ports->ftype == listen_type_udp || + ports->ftype == listen_type_udp_dnscrypt) cp = comm_point_create_udp(base, ports->fd, front->udp_buff, cb, cb_arg); - else if(ports->ftype == listen_type_tcp) + else if(ports->ftype == listen_type_tcp || + ports->ftype == listen_type_tcp_dnscrypt) cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, bufsize, cb, cb_arg); else if(ports->ftype == listen_type_ssl) { cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, bufsize, cb, cb_arg); cp->ssl = sslctx; - } else if(ports->ftype == listen_type_udpancil) + } else if(ports->ftype == listen_type_udpancil || + ports->ftype == listen_type_udpancil_dnscrypt) cp = comm_point_create_udp_ancil(base, ports->fd, front->udp_buff, cb, cb_arg); if(!cp) { @@ -987,6 +1259,21 @@ listen_create(struct comm_base* base, struct listen_port* ports, } cp->dtenv = dtenv; cp->do_not_close = 1; +#ifdef USE_DNSCRYPT + if (ports->ftype == listen_type_udp_dnscrypt || + ports->ftype == listen_type_tcp_dnscrypt || + ports->ftype == listen_type_udpancil_dnscrypt) { + cp->dnscrypt = 1; + cp->dnscrypt_buffer = sldns_buffer_new(bufsize); + if(!cp->dnscrypt_buffer) { + log_err("can't alloc dnscrypt_buffer"); + comm_point_delete(cp); + listen_delete(front); + return NULL; + } + front->dnscrypt_udp_buff = cp->dnscrypt_buffer; + } +#endif if(!listen_cp_insert(cp, front)) { log_err("malloc failed"); comm_point_delete(cp); @@ -1022,6 +1309,12 @@ listen_delete(struct listen_dnsport* front) if(!front) return; listen_list_delete(front->cps); +#ifdef USE_DNSCRYPT + if(front->dnscrypt_udp_buff && + front->udp_buff != front->dnscrypt_udp_buff) { + sldns_buffer_free(front->dnscrypt_udp_buff); + } +#endif sldns_buffer_free(front->udp_buff); free(front); } @@ -1063,8 +1356,10 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_auto, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, - cfg->ssl_port, reuseport, - cfg->ip_transparent)) { + cfg->ssl_port, cfg->tls_additional_port, + reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->dnscrypt_port)) { listening_ports_free(list); return NULL; } @@ -1075,8 +1370,10 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_auto, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, - cfg->ssl_port, reuseport, - cfg->ip_transparent)) { + cfg->ssl_port, cfg->tls_additional_port, + reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->dnscrypt_port)) { listening_ports_free(list); return NULL; } @@ -1089,8 +1386,10 @@ listening_ports_open(struct config_file* cfg, int* reuseport) if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, - cfg->ssl_port, reuseport, - cfg->ip_transparent)) { + cfg->ssl_port, cfg->tls_additional_port, + reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->dnscrypt_port)) { listening_ports_free(list); return NULL; } @@ -1101,8 +1400,10 @@ listening_ports_open(struct config_file* cfg, int* reuseport) if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, - cfg->ssl_port, reuseport, - cfg->ip_transparent)) { + cfg->ssl_port, cfg->tls_additional_port, + reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->dnscrypt_port)) { listening_ports_free(list); return NULL; } @@ -1130,10 +1431,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); - struct listen_list* p; +#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); + } +#endif for(p = listen->cps; p; p = p->next) { s += sizeof(*p); s += comm_point_get_mem(p->com); diff --git a/external/unbound/services/listen_dnsport.h b/external/unbound/services/listen_dnsport.h index 676f0c6..fac0f79 100644 --- a/external/unbound/services/listen_dnsport.h +++ b/external/unbound/services/listen_dnsport.h @@ -59,7 +59,9 @@ struct listen_dnsport { /** buffer shared by UDP connections, since there is only one datagram at any time. */ struct sldns_buffer* udp_buff; - +#ifdef USE_DNSCRYPT + struct sldns_buffer* dnscrypt_udp_buff; +#endif /** list of comm points used to get incoming events */ struct listen_list* cps; }; @@ -85,7 +87,14 @@ enum listen_type { /** udp ipv6 (v4mapped) for use with ancillary data */ listen_type_udpancil, /** ssl over tcp type */ - listen_type_ssl + listen_type_ssl, + /** udp type + dnscrypt*/ + listen_type_udp_dnscrypt, + /** tcp type + dnscrypt */ + listen_type_tcp_dnscrypt, + /** udp ipv6 (v4mapped) for use with ancillary data + dnscrypt*/ + listen_type_udpancil_dnscrypt + }; /** @@ -137,7 +146,7 @@ void listening_ports_free(struct listen_port* list); */ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, - void* sslctx, struct dt_env *dtenv, comm_point_callback_t* cb, + void* sslctx, struct dt_env *dtenv, comm_point_callback_type* cb, void* cb_arg); /** @@ -190,11 +199,13 @@ void listen_start_accept(struct listen_dnsport* listen); * @param reuseport: if nonNULL and true, try to set SO_REUSEPORT on * listening UDP port. Set to false on return if it failed to do so. * @param transparent: set IP_TRANSPARENT socket option. + * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ int create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv, - int snd, int listen, int* reuseport, int transparent); + int snd, int listen, int* reuseport, int transparent, int freebind, int use_systemd); /** * Create and bind TCP listening socket @@ -204,18 +215,22 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr, * @param reuseport: if nonNULL and true, try to set SO_REUSEPORT on * listening UDP port. Set to false on return if it failed to do so. * @param transparent: set IP_TRANSPARENT socket option. + * @param mss: maximum segment size of the socket. if zero, leaves the default. + * @param freebind: set IP_FREEBIND socket option. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent); + int* reuseport, int transparent, int mss, int freebind, int use_systemd); /** * Create and bind local listening socket * @param path: path to the socket. * @param noproto: on error, this is set true if cause is that local sockets * are not supported. + * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ -int create_local_accept_sock(const char* path, int* noproto); +int create_local_accept_sock(const char* path, int* noproto, int use_systemd); #endif /* LISTEN_DNSPORT_H */ diff --git a/external/unbound/services/localzone.c b/external/unbound/services/localzone.c index c50ad0f..0f60817 100644 --- a/external/unbound/services/localzone.c +++ b/external/unbound/services/localzone.c @@ -51,6 +51,11 @@ #include "util/netevent.h" #include "util/data/msgreply.h" #include "util/data/msgparse.h" +#include "util/as112.h" + +/* maximum RRs in an RRset, to cap possible 'endless' list RRs. + * with 16 bytes for an A record, a 64K packet has about 4000 max */ +#define LOCALZONE_RRSET_COUNT_MAX 4096 struct local_zones* local_zones_create(void) @@ -68,7 +73,7 @@ local_zones_create(void) /** helper traverse to delete zones */ static void -lzdel(rbnode_t* n, void* ATTR_UNUSED(arg)) +lzdel(rbnode_type* n, void* ATTR_UNUSED(arg)) { struct local_zone* z = (struct local_zone*)n->key; local_zone_delete(z); @@ -93,6 +98,7 @@ local_zone_delete(struct local_zone* z) lock_rw_destroy(&z->lock); regional_destroy(z->region); free(z->name); + free(z->taglist); free(z); } @@ -152,13 +158,13 @@ local_zone_create(uint8_t* nm, size_t len, int labs, z->namelen = len; z->namelabs = labs; lock_rw_init(&z->lock); - z->region = regional_create(); + z->region = regional_create_custom(sizeof(struct regional)); if(!z->region) { free(z); return NULL; } rbtree_init(&z->data, &local_data_cmp); - lock_protect(&z->lock, &z->parent, sizeof(*z)-sizeof(rbnode_t)); + lock_protect(&z->lock, &z->parent, sizeof(*z)-sizeof(rbnode_type)); /* also the zones->lock protects node, parent, name*, class */ return z; } @@ -170,6 +176,7 @@ lz_enter_zone_dname(struct local_zones* zones, uint8_t* nm, size_t len, { struct local_zone* z = local_zone_create(nm, len, labs, t, c); if(!z) { + free(nm); log_err("out of memory"); return NULL; } @@ -178,11 +185,20 @@ lz_enter_zone_dname(struct local_zones* zones, uint8_t* nm, size_t len, lock_rw_wrlock(&zones->lock); lock_rw_wrlock(&z->lock); if(!rbtree_insert(&zones->ztree, &z->node)) { - log_warn("duplicate local-zone"); + struct local_zone* oldz; + char str[256]; + dname_str(nm, str); + log_warn("duplicate local-zone %s", str); lock_rw_unlock(&z->lock); - local_zone_delete(z); + /* save zone name locally before deallocation, + * otherwise, nm is gone if we zone_delete now. */ + oldz = z; + /* find the correct zone, so not an error for duplicate */ + z = local_zones_find(zones, nm, len, labs, c); + lock_rw_wrlock(&z->lock); lock_rw_unlock(&zones->lock); - return NULL; + local_zone_delete(oldz); + return z; } lock_rw_unlock(&zones->lock); return z; @@ -214,9 +230,8 @@ lz_enter_zone(struct local_zones* zones, const char* name, const char* type, return z; } -/** return name and class and rdata of rr; parses string */ -static int -get_rr_content(const char* str, uint8_t** nm, uint16_t* type, +int +rrstr_get_rr_content(const char* str, uint8_t** nm, uint16_t* type, uint16_t* dclass, time_t* ttl, uint8_t* rr, size_t len, uint8_t** rdata, size_t* rdata_len) { @@ -244,7 +259,8 @@ get_rr_content(const char* str, uint8_t** nm, uint16_t* type, /** return name and class of rr; parses string */ static int -get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass) +get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass, + uint16_t* dtype) { uint8_t rr[LDNS_RR_BUF_SIZE]; size_t len = sizeof(rr), dname_len = 0; @@ -258,6 +274,7 @@ get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass) } *nm = memdup(rr, dname_len); *dclass = sldns_wirerr_get_class(rr, len, dname_len); + *dtype = sldns_wirerr_get_type(rr, len, dname_len); if(!*nm) { log_err("out of memory"); return 0; @@ -269,16 +286,20 @@ get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass) * Find an rrset in local data structure. * @param data: local data domain name structure. * @param type: type to look for (host order). + * @param alias_ok: 1 if matching a non-exact, alias type such as CNAME is + * allowed. otherwise 0. * @return rrset pointer or NULL if not found. */ static struct local_rrset* -local_data_find_type(struct local_data* data, uint16_t type) +local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) { struct local_rrset* p; type = htons(type); for(p = data->rrsets; p; p = p->next) { if(p->rrset->rk.type == type) return p; + if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME)) + return p; } return NULL; } @@ -334,15 +355,20 @@ new_local_rrset(struct regional* region, struct local_data* node, } /** insert RR into RRset data structure; Wastes a couple of bytes */ -static int -insert_rr(struct regional* region, struct packed_rrset_data* pd, - uint8_t* rdata, size_t rdata_len, time_t ttl) +int +rrset_insert_rr(struct regional* region, struct packed_rrset_data* pd, + uint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr) { size_t* oldlen = pd->rr_len; time_t* oldttl = pd->rr_ttl; uint8_t** olddata = pd->rr_data; /* add RR to rrset */ + if(pd->count > LOCALZONE_RRSET_COUNT_MAX) { + log_warn("RRset '%s' has more than %d records, record ignored", + rrstr, LOCALZONE_RRSET_COUNT_MAX); + return 1; + } pd->count++; pd->rr_len = regional_alloc(region, sizeof(*pd->rr_len)*pd->count); pd->rr_ttl = regional_alloc(region, sizeof(*pd->rr_ttl)*pd->count); @@ -432,8 +458,8 @@ lz_enter_rr_into_zone(struct local_zone* z, const char* rrstr) uint8_t rr[LDNS_RR_BUF_SIZE]; uint8_t* rdata; size_t rdata_len; - if(!get_rr_content(rrstr, &nm, &rrtype, &rrclass, &ttl, rr, sizeof(rr), - &rdata, &rdata_len)) { + if(!rrstr_get_rr_content(rrstr, &nm, &rrtype, &rrclass, &ttl, rr, + sizeof(rr), &rdata, &rdata_len)) { log_err("bad local-data: %s", rrstr); return 0; } @@ -453,7 +479,23 @@ lz_enter_rr_into_zone(struct local_zone* z, const char* rrstr) log_assert(node); free(nm); - rrset = local_data_find_type(node, rrtype); + /* Reject it if we would end up having CNAME and other data (including + * another CNAME) for a redirect zone. */ + if(z->type == local_zone_redirect && node->rrsets) { + const char* othertype = NULL; + if (rrtype == LDNS_RR_TYPE_CNAME) + othertype = "other"; + else if (node->rrsets->rrset->rk.type == + htons(LDNS_RR_TYPE_CNAME)) { + othertype = "CNAME"; + } + if(othertype) { + log_err("local-data '%s' in redirect zone must not " + "coexist with %s local-data", rrstr, othertype); + return 0; + } + } + rrset = local_data_find_type(node, rrtype, 0); if(!rrset) { rrset = new_local_rrset(z->region, node, rrtype, rrclass); if(!rrset) @@ -473,7 +515,7 @@ lz_enter_rr_into_zone(struct local_zone* z, const char* rrstr) verbose(VERB_ALGO, "ignoring duplicate RR: %s", rrstr); return 1; } - return insert_rr(z->region, pd, rdata, rdata_len, ttl); + return rrset_insert_rr(z->region, pd, rdata, rdata_len, ttl, rrstr); } /** enter a data RR into auth data; a zone for it must exist */ @@ -481,18 +523,18 @@ static int lz_enter_rr_str(struct local_zones* zones, const char* rr) { uint8_t* rr_name; - uint16_t rr_class; + uint16_t rr_class, rr_type; size_t len; int labs; struct local_zone* z; int r; - if(!get_rr_nameclass(rr, &rr_name, &rr_class)) { + if(!get_rr_nameclass(rr, &rr_name, &rr_class, &rr_type)) { log_err("bad rr %s", rr); return 0; } labs = dname_count_size_labels(rr_name, &len); lock_rw_rdlock(&zones->lock); - z = local_zones_lookup(zones, rr_name, len, labs, rr_class); + z = local_zones_lookup(zones, rr_name, len, labs, rr_class, rr_type); if(!z) { lock_rw_unlock(&zones->lock); fatal_exit("internal error: no zone for rr %s", rr); @@ -505,6 +547,123 @@ lz_enter_rr_str(struct local_zones* zones, const char* rr) return r; } +/** enter tagstring into zone */ +static int +lz_enter_zone_tag(struct local_zones* zones, char* zname, uint8_t* list, + size_t len, uint16_t rr_class) +{ + uint8_t dname[LDNS_MAX_DOMAINLEN+1]; + size_t dname_len = sizeof(dname); + int dname_labs, r = 0; + struct local_zone* z; + + if(sldns_str2wire_dname_buf(zname, dname, &dname_len) != 0) { + log_err("cannot parse zone name in local-zone-tag: %s", zname); + return 0; + } + dname_labs = dname_count_labels(dname); + + lock_rw_rdlock(&zones->lock); + z = local_zones_find(zones, dname, dname_len, dname_labs, rr_class); + if(!z) { + lock_rw_unlock(&zones->lock); + log_err("no local-zone for tag %s", zname); + return 0; + } + lock_rw_wrlock(&z->lock); + lock_rw_unlock(&zones->lock); + free(z->taglist); + z->taglist = memdup(list, len); + z->taglen = len; + if(z->taglist) + r = 1; + lock_rw_unlock(&z->lock); + return r; +} + +/** enter override into zone */ +static int +lz_enter_override(struct local_zones* zones, char* zname, char* netblock, + char* type, uint16_t rr_class) +{ + uint8_t dname[LDNS_MAX_DOMAINLEN+1]; + size_t dname_len = sizeof(dname); + int dname_labs; + struct sockaddr_storage addr; + int net; + socklen_t addrlen; + struct local_zone* z; + enum localzone_type t; + + /* parse zone name */ + if(sldns_str2wire_dname_buf(zname, dname, &dname_len) != 0) { + log_err("cannot parse zone name in local-zone-override: %s %s", + zname, netblock); + return 0; + } + dname_labs = dname_count_labels(dname); + + /* parse netblock */ + if(!netblockstrtoaddr(netblock, UNBOUND_DNS_PORT, &addr, &addrlen, + &net)) { + log_err("cannot parse netblock in local-zone-override: %s %s", + zname, netblock); + return 0; + } + + /* parse zone type */ + if(!local_zone_str2type(type, &t)) { + log_err("cannot parse type in local-zone-override: %s %s %s", + zname, netblock, type); + return 0; + } + + /* find localzone entry */ + lock_rw_rdlock(&zones->lock); + z = local_zones_find(zones, dname, dname_len, dname_labs, rr_class); + if(!z) { + lock_rw_unlock(&zones->lock); + log_err("no local-zone for local-zone-override %s", zname); + return 0; + } + lock_rw_wrlock(&z->lock); + lock_rw_unlock(&zones->lock); + + /* create netblock addr_tree if not present yet */ + if(!z->override_tree) { + z->override_tree = (struct rbtree_type*)regional_alloc_zero( + z->region, sizeof(*z->override_tree)); + if(!z->override_tree) { + lock_rw_unlock(&z->lock); + log_err("out of memory"); + return 0; + } + addr_tree_init(z->override_tree); + } + /* add new elem to tree */ + if(z->override_tree) { + struct local_zone_override* n; + n = (struct local_zone_override*)regional_alloc_zero( + z->region, sizeof(*n)); + if(!n) { + lock_rw_unlock(&z->lock); + log_err("out of memory"); + return 0; + } + n->type = t; + if(!addr_tree_insert(z->override_tree, + (struct addr_tree_node*)n, &addr, addrlen, net)) { + lock_rw_unlock(&z->lock); + log_err("duplicate local-zone-override %s %s", + zname, netblock); + return 1; + } + } + + lock_rw_unlock(&z->lock); + return 1; +} + /** parse local-zone: statements */ static int lz_enter_zones(struct local_zones* zones, struct config_file* cfg) @@ -561,9 +720,9 @@ lz_nodefault(struct config_file* cfg, const char* name) return 0; } -/** enter AS112 default zone */ +/** enter (AS112) empty default zone */ static int -add_as112_default(struct local_zones* zones, struct config_file* cfg, +add_empty_default(struct local_zones* zones, struct config_file* cfg, const char* name) { struct local_zone* z; @@ -588,19 +747,23 @@ add_as112_default(struct local_zones* zones, struct config_file* cfg, } /** enter default zones */ -static int -lz_enter_defaults(struct local_zones* zones, struct config_file* cfg) +int local_zone_enter_defaults(struct local_zones* zones, struct config_file* cfg) { struct local_zone* z; + const char** zstr; - /* this list of zones is from RFC 6303 */ + /* Do not add any default */ + if(cfg->local_zones_disable_default) + return 1; - /* block localhost level zones, first, later the LAN zones */ + /* this list of zones is from RFC 6303 and RFC 7686 */ + + /* block localhost level zones first, then onion and later the LAN zones */ /* localhost. zone */ if(!lz_exists(zones, "localhost.") && !lz_nodefault(cfg, "localhost.")) { - if(!(z=lz_enter_zone(zones, "localhost.", "static", + if(!(z=lz_enter_zone(zones, "localhost.", "redirect", LDNS_RR_CLASS_IN)) || !lz_enter_rr_into_zone(z, "localhost. 10800 IN NS localhost.") || @@ -653,112 +816,43 @@ lz_enter_defaults(struct local_zones* zones, struct config_file* cfg) } lock_rw_unlock(&z->lock); } - - /* if unblock lan-zones, then do not add the zones below. - * we do add the zones above, about 127.0.0.1, because localhost is - * not on the lan. */ - if(cfg->unblock_lan_zones) - return 1; - - /* block LAN level zones */ - if ( !add_as112_default(zones, cfg, "10.in-addr.arpa.") || - !add_as112_default(zones, cfg, "16.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "17.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "18.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "19.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "20.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "21.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "22.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "23.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "24.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "25.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "26.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "27.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "28.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "29.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "30.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "31.172.in-addr.arpa.") || - !add_as112_default(zones, cfg, "168.192.in-addr.arpa.") || - !add_as112_default(zones, cfg, "0.in-addr.arpa.") || - !add_as112_default(zones, cfg, "64.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "65.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "66.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "67.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "68.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "69.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "70.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "71.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "72.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "73.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "74.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "75.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "76.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "77.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "78.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "79.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "80.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "81.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "82.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "83.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "84.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "85.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "86.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "87.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "88.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "89.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "90.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "91.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "92.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "93.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "94.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "95.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "96.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "97.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "98.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "99.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "100.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "101.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "102.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "103.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "104.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "105.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "106.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "107.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "108.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "109.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "110.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "111.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "112.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "113.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "114.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "115.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "116.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "117.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "118.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "119.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "120.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "121.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "122.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "123.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "124.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "125.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "126.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "127.100.in-addr.arpa.") || - !add_as112_default(zones, cfg, "254.169.in-addr.arpa.") || - !add_as112_default(zones, cfg, "2.0.192.in-addr.arpa.") || - !add_as112_default(zones, cfg, "100.51.198.in-addr.arpa.") || - !add_as112_default(zones, cfg, "113.0.203.in-addr.arpa.") || - !add_as112_default(zones, cfg, "255.255.255.255.in-addr.arpa.") || - !add_as112_default(zones, cfg, "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.ip6.arpa.") || - !add_as112_default(zones, cfg, "d.f.ip6.arpa.") || - !add_as112_default(zones, cfg, "8.e.f.ip6.arpa.") || - !add_as112_default(zones, cfg, "9.e.f.ip6.arpa.") || - !add_as112_default(zones, cfg, "a.e.f.ip6.arpa.") || - !add_as112_default(zones, cfg, "b.e.f.ip6.arpa.") || - !add_as112_default(zones, cfg, "8.b.d.0.1.0.0.2.ip6.arpa.")) { + /* onion. zone (RFC 7686) */ + if(!add_empty_default(zones, cfg, "onion.")) { + log_err("out of memory adding default zone"); + return 0; + } + /* test. zone (RFC 7686) */ + if(!add_empty_default(zones, cfg, "test.")) { + log_err("out of memory adding default zone"); + return 0; + } + /* invalid. zone (RFC 7686) */ + if(!add_empty_default(zones, cfg, "invalid.")) { log_err("out of memory adding default zone"); return 0; } + /* block AS112 zones, unless asked not to */ + if(!cfg->unblock_lan_zones) { + for(zstr = as112_zones; *zstr; zstr++) { + if(!add_empty_default(zones, cfg, *zstr)) { + log_err("out of memory adding default zone"); + return 0; + } + } + } + return 1; +} + +/** parse local-zone-override: statements */ +static int +lz_enter_overrides(struct local_zones* zones, struct config_file* cfg) +{ + struct config_str3list* p; + for(p = cfg->local_zone_overrides; p; p = p->next) { + if(!lz_enter_override(zones, p->str, p->str2, p->str3, + LDNS_RR_CLASS_IN)) + return 0; + } return 1; } @@ -791,6 +885,9 @@ init_parents(struct local_zones* zones) break; } prev = node; + + if(node->override_tree) + addr_tree_init_parents(node->override_tree); lock_rw_unlock(&node->lock); } lock_rw_unlock(&zones->lock); @@ -815,16 +912,17 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) init_parents(zones); /* to enable local_zones_lookup() */ for(p = cfg->local_data; p; p = p->next) { uint8_t* rr_name; - uint16_t rr_class; + uint16_t rr_class, rr_type; size_t len; int labs; - if(!get_rr_nameclass(p->str, &rr_name, &rr_class)) { + if(!get_rr_nameclass(p->str, &rr_name, &rr_class, &rr_type)) { log_err("Bad local-data RR %s", p->str); return 0; } labs = dname_count_size_labels(rr_name, &len); lock_rw_rdlock(&zones->lock); - if(!local_zones_lookup(zones, rr_name, len, labs, rr_class)) { + if(!local_zones_lookup(zones, rr_name, len, labs, rr_class, + rr_type)) { if(!have_name) { dclass = rr_class; nm = rr_name; @@ -878,6 +976,22 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) return 1; } +/** enter local-zone-tag info */ +static int +lz_enter_zone_tags(struct local_zones* zones, struct config_file* cfg) +{ + struct config_strbytelist* p; + int c = 0; + for(p = cfg->local_zone_tags; p; p = p->next) { + if(!lz_enter_zone_tag(zones, p->str, p->str2, p->str2len, + LDNS_RR_CLASS_IN)) + return 0; + c++; + } + if(c) verbose(VERB_ALGO, "applied tags to %d local zones", c); + return 1; +} + /** enter auth data */ static int lz_enter_data(struct local_zones* zones, struct config_file* cfg) @@ -910,7 +1024,11 @@ local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg) return 0; } /* apply default zones+content (unless disabled, or overridden) */ - if(!lz_enter_defaults(zones, cfg)) { + if(!local_zone_enter_defaults(zones, cfg)) { + return 0; + } + /* enter local zone overrides */ + if(!lz_enter_overrides(zones, cfg)) { return 0; } /* create implicit transparent zone from data. */ @@ -920,6 +1038,10 @@ local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg) /* setup parent ptrs for lookup during data entry */ init_parents(zones); + /* insert local zone tags */ + if(!lz_enter_zone_tags(zones, cfg)) { + return 0; + } /* insert local data */ if(!lz_enter_data(zones, cfg)) { return 0; @@ -931,35 +1053,48 @@ local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg) struct local_zone* local_zones_lookup(struct local_zones* zones, - uint8_t* name, size_t len, int labs, uint16_t dclass) + uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype) { - rbnode_t* res = NULL; + return local_zones_tags_lookup(zones, name, len, labs, + dclass, dtype, NULL, 0, 1); +} + +struct local_zone* +local_zones_tags_lookup(struct local_zones* zones, + uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype, + uint8_t* taglist, size_t taglen, int ignoretags) +{ + rbnode_type* res = NULL; struct local_zone *result; struct local_zone key; + int m; + /* for type DS use a zone higher when on a zonecut */ + if(dtype == LDNS_RR_TYPE_DS && !dname_is_root(name)) { + dname_remove_label(&name, &len); + labs--; + } key.node.key = &key; key.dclass = dclass; key.name = name; key.namelen = len; key.namelabs = labs; - if(rbtree_find_less_equal(&zones->ztree, &key, &res)) { - /* exact */ - return (struct local_zone*)res; - } else { - /* smaller element (or no element) */ - int m; - result = (struct local_zone*)res; - if(!result || result->dclass != dclass) - return NULL; - /* count number of labels matched */ - (void)dname_lab_cmp(result->name, result->namelabs, key.name, - key.namelabs, &m); - while(result) { /* go up until qname is subdomain of zone */ - if(result->namelabs <= m) - break; - result = result->parent; - } - return result; + rbtree_find_less_equal(&zones->ztree, &key, &res); + result = (struct local_zone*)res; + /* exact or smaller element (or no element) */ + if(!result || result->dclass != dclass) + return NULL; + /* count number of labels matched */ + (void)dname_lab_cmp(result->name, result->namelabs, key.name, + key.namelabs, &m); + while(result) { /* go up until qname is zone or subdomain of zone */ + if(result->namelabs <= m) + if(ignoretags || !result->taglist || + taglist_intersect(result->taglist, + result->taglen, taglist, taglen)) + break; + result = result->parent; } + return result; } struct local_zone* @@ -997,45 +1132,11 @@ void local_zones_print(struct local_zones* zones) lock_rw_rdlock(&zones->lock); log_info("number of auth zones %u", (unsigned)zones->ztree.count); RBTREE_FOR(z, struct local_zone*, &zones->ztree) { + char buf[64]; lock_rw_rdlock(&z->lock); - switch(z->type) { - case local_zone_deny: - log_nametypeclass(0, "deny zone", - z->name, 0, z->dclass); - break; - case local_zone_refuse: - log_nametypeclass(0, "refuse zone", - z->name, 0, z->dclass); - break; - case local_zone_redirect: - log_nametypeclass(0, "redirect zone", - z->name, 0, z->dclass); - break; - case local_zone_transparent: - log_nametypeclass(0, "transparent zone", - z->name, 0, z->dclass); - break; - case local_zone_typetransparent: - log_nametypeclass(0, "typetransparent zone", - z->name, 0, z->dclass); - break; - case local_zone_static: - log_nametypeclass(0, "static zone", - z->name, 0, z->dclass); - break; - case local_zone_inform: - log_nametypeclass(0, "inform zone", - z->name, 0, z->dclass); - break; - case local_zone_inform_deny: - log_nametypeclass(0, "inform_deny zone", - z->name, 0, z->dclass); - break; - default: - log_nametypeclass(0, "badtyped zone", - z->name, 0, z->dclass); - break; - } + snprintf(buf, sizeof(buf), "%s zone", + local_zone_type2str(z->type)); + log_nametypeclass(0, buf, z->name, 0, z->dclass); local_zone_out(z); lock_rw_unlock(&z->lock); } @@ -1044,8 +1145,8 @@ void local_zones_print(struct local_zones* zones) /** encode answer consisting of 1 rrset */ static int -local_encode(struct query_info* qinfo, struct edns_data* edns, - sldns_buffer* buf, struct regional* temp, +local_encode(struct query_info* qinfo, struct module_env* env, + struct edns_data* edns, sldns_buffer* buf, struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, int rcode) { struct reply_info rep; @@ -1064,22 +1165,155 @@ local_encode(struct query_info* qinfo, struct edns_data* edns, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - if(!reply_info_answer_encode(qinfo, &rep, + if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, temp) + || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), - buf, 0, 0, temp, udpsize, edns, + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), - sldns_buffer_read_u16_at(buf, 2), edns); + sldns_buffer_read_u16_at(buf, 2), edns); return 1; } +/** encode local error answer */ +static void +local_error_encode(struct query_info* qinfo, struct module_env* env, + struct edns_data* edns, sldns_buffer* buf, struct regional* temp, + int rcode, int r) +{ + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->ext_rcode = 0; + edns->bits &= EDNS_DO; + + if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, + rcode, edns, temp)) + edns->opt_list = NULL; + error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf), + sldns_buffer_read_u16_at(buf, 2), edns); +} + +/** find local data tag string match for the given type in the list */ +int +local_data_find_tag_datas(const struct query_info* qinfo, + struct config_strlist* list, struct ub_packed_rrset_key* r, + struct regional* temp) +{ + struct config_strlist* p; + char buf[65536]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len; + int res; + struct packed_rrset_data* d; + for(p=list; p; p=p->next) { + uint16_t rdr_type; + + len = sizeof(rr); + /* does this element match the type? */ + snprintf(buf, sizeof(buf), ". %s", p->str); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, + NULL, 0, NULL, 0); + if(res != 0) + /* parse errors are already checked before, in + * acllist check_data, skip this for robustness */ + continue; + if(len < 1 /* . */ + 8 /* typeclassttl*/ + 2 /*rdatalen*/) + continue; + rdr_type = sldns_wirerr_get_type(rr, len, 1); + if(rdr_type != qinfo->qtype && rdr_type != LDNS_RR_TYPE_CNAME) + continue; + + /* do we have entries already? if not setup key */ + if(r->rk.dname == NULL) { + r->entry.key = r; + r->rk.dname = qinfo->qname; + r->rk.dname_len = qinfo->qname_len; + r->rk.type = htons(rdr_type); + r->rk.rrset_class = htons(qinfo->qclass); + r->rk.flags = 0; + d = (struct packed_rrset_data*)regional_alloc_zero( + temp, sizeof(struct packed_rrset_data) + + sizeof(size_t) + sizeof(uint8_t*) + + sizeof(time_t)); + if(!d) return 0; /* out of memory */ + r->entry.data = d; + d->ttl = sldns_wirerr_get_ttl(rr, len, 1); + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + d->rr_data = (uint8_t**)&(d->rr_len[1]); + d->rr_ttl = (time_t*)&(d->rr_data[1]); + } + d = (struct packed_rrset_data*)r->entry.data; + /* add entry to the data */ + if(d->count != 0) { + size_t* oldlen = d->rr_len; + uint8_t** olddata = d->rr_data; + time_t* oldttl = d->rr_ttl; + /* increase arrays for lookup */ + /* this is of course slow for very many records, + * but most redirects are expected with few records */ + d->rr_len = (size_t*)regional_alloc_zero(temp, + (d->count+1)*sizeof(size_t)); + d->rr_data = (uint8_t**)regional_alloc_zero(temp, + (d->count+1)*sizeof(uint8_t*)); + d->rr_ttl = (time_t*)regional_alloc_zero(temp, + (d->count+1)*sizeof(time_t)); + if(!d->rr_len || !d->rr_data || !d->rr_ttl) + return 0; /* out of memory */ + /* first one was allocated after struct d, but new + * ones get their own array increment alloc, so + * copy old content */ + memmove(d->rr_len, oldlen, d->count*sizeof(size_t)); + memmove(d->rr_data, olddata, d->count*sizeof(uint8_t*)); + memmove(d->rr_ttl, oldttl, d->count*sizeof(time_t)); + } + + d->rr_len[d->count] = sldns_wirerr_get_rdatalen(rr, len, 1)+2; + d->rr_ttl[d->count] = sldns_wirerr_get_ttl(rr, len, 1); + d->rr_data[d->count] = regional_alloc_init(temp, + sldns_wirerr_get_rdatawl(rr, len, 1), + d->rr_len[d->count]); + if(!d->rr_data[d->count]) + return 0; /* out of memory */ + d->count++; + } + if(r->rk.dname) + return 1; + return 0; +} + +static int +find_tag_datas(struct query_info* qinfo, struct config_strlist* list, + struct ub_packed_rrset_key* r, struct regional* temp) +{ + int result = local_data_find_tag_datas(qinfo, list, r, temp); + + /* If we've found a non-exact alias type of local data, make a shallow + * copy of the RRset and remember it in qinfo to complete the alias + * chain later. */ + if(result && qinfo->qtype != LDNS_RR_TYPE_CNAME && + r->rk.type == htons(LDNS_RR_TYPE_CNAME)) { + qinfo->local_alias = + regional_alloc_zero(temp, sizeof(struct local_rrset)); + if(!qinfo->local_alias) + return 0; /* out of memory */ + qinfo->local_alias->rrset = + regional_alloc_init(temp, r, sizeof(*r)); + if(!qinfo->local_alias->rrset) + return 0; /* out of memory */ + } + return result; +} + /** answer local data match */ static int -local_data_answer(struct local_zone* z, struct query_info* qinfo, - struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - int labs, struct local_data** ldp) +local_data_answer(struct local_zone* z, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, int labs, struct local_data** ldp, + enum localzone_type lz_type, int tag, struct config_strlist** tag_datas, + size_t tag_datas_size, char** tagname, int num_tags) { struct local_data key; struct local_data* ld; @@ -1088,58 +1322,95 @@ local_data_answer(struct local_zone* z, struct query_info* qinfo, key.name = qinfo->qname; key.namelen = qinfo->qname_len; key.namelabs = labs; - if(z->type == local_zone_redirect) { + if(lz_type == local_zone_redirect) { key.name = z->name; key.namelen = z->namelen; key.namelabs = z->namelabs; + if(tag != -1 && (size_t)taglocal_alias) + return 1; + return local_encode(qinfo, env, edns, buf, temp, + &r, 1, LDNS_RCODE_NOERROR); + } + } } ld = (struct local_data*)rbtree_search(&z->data, &key.node); *ldp = ld; if(!ld) { return 0; } - lr = local_data_find_type(ld, qinfo->qtype); + lr = local_data_find_type(ld, qinfo->qtype, 1); if(!lr) return 0; - if(z->type == local_zone_redirect) { + + /* Special case for alias matching. See local_data_answer(). */ + if(lz_type == local_zone_redirect && + qinfo->qtype != LDNS_RR_TYPE_CNAME && + lr->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME)) { + qinfo->local_alias = + regional_alloc_zero(temp, sizeof(struct local_rrset)); + if(!qinfo->local_alias) + return 0; /* out of memory */ + qinfo->local_alias->rrset = + regional_alloc_init(temp, lr->rrset, sizeof(*lr->rrset)); + if(!qinfo->local_alias->rrset) + return 0; /* out of memory */ + qinfo->local_alias->rrset->rk.dname = qinfo->qname; + qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; + return 1; + } + if(lz_type == local_zone_redirect) { /* convert rrset name to query name; like a wildcard */ struct ub_packed_rrset_key r = *lr->rrset; r.rk.dname = qinfo->qname; r.rk.dname_len = qinfo->qname_len; - return local_encode(qinfo, edns, buf, temp, &r, 1, + return local_encode(qinfo, env, edns, buf, temp, &r, 1, LDNS_RCODE_NOERROR); } - return local_encode(qinfo, edns, buf, temp, lr->rrset, 1, + return local_encode(qinfo, env, edns, buf, temp, lr->rrset, 1, LDNS_RCODE_NOERROR); } /** * answer in case where no exact match is found * @param z: zone for query + * @param env: module environment * @param qinfo: query * @param edns: edns from query * @param buf: buffer for answer. * @param temp: temp region for encoding * @param ld: local data, if NULL, no such name exists in localdata. + * @param lz_type: type of the local zone * @return 1 if a reply is to be sent, 0 if not. */ static int -lz_zone_answer(struct local_zone* z, struct query_info* qinfo, - struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - struct local_data* ld) +lz_zone_answer(struct local_zone* z, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, struct local_data* ld, enum localzone_type lz_type) { - if(z->type == local_zone_deny || z->type == local_zone_inform_deny) { + if(lz_type == local_zone_deny || lz_type == local_zone_inform_deny) { /** no reply at all, signal caller by clearing buffer. */ sldns_buffer_clear(buf); sldns_buffer_flip(buf); return 1; - } else if(z->type == local_zone_refuse) { - error_encode(buf, (LDNS_RCODE_REFUSED|BIT_AA), qinfo, - *(uint16_t*)sldns_buffer_begin(buf), - sldns_buffer_read_u16_at(buf, 2), edns); + } else if(lz_type == local_zone_refuse + || lz_type == local_zone_always_refuse) { + local_error_encode(qinfo, env, edns, buf, temp, + LDNS_RCODE_REFUSED, (LDNS_RCODE_REFUSED|BIT_AA)); return 1; - } else if(z->type == local_zone_static || - z->type == local_zone_redirect) { + } else if(lz_type == local_zone_static || + lz_type == local_zone_redirect || + lz_type == local_zone_always_nxdomain) { /* for static, reply nodata or nxdomain * for redirect, reply nodata */ /* no additional section processing, @@ -1147,30 +1418,30 @@ lz_zone_answer(struct local_zone* z, struct query_info* qinfo, * or using closest match for NSEC. * or using closest match for returning delegation downwards */ - int rcode = ld?LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; + int rcode = (ld || lz_type == local_zone_redirect)? + LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; if(z->soa) - return local_encode(qinfo, edns, buf, temp, + return local_encode(qinfo, env, edns, buf, temp, z->soa, 0, rcode); - error_encode(buf, (rcode|BIT_AA), qinfo, - *(uint16_t*)sldns_buffer_begin(buf), - sldns_buffer_read_u16_at(buf, 2), edns); + local_error_encode(qinfo, env, edns, buf, temp, rcode, + (rcode|BIT_AA)); return 1; - } else if(z->type == local_zone_typetransparent) { + } else if(lz_type == local_zone_typetransparent + || lz_type == local_zone_always_transparent) { /* no NODATA or NXDOMAINS for this zone type */ return 0; } - /* else z->type == local_zone_transparent */ + /* else lz_type == local_zone_transparent */ /* if the zone is transparent and the name exists, but the type * does not, then we should make this noerror/nodata */ if(ld && ld->rrsets) { int rcode = LDNS_RCODE_NOERROR; if(z->soa) - return local_encode(qinfo, edns, buf, temp, + return local_encode(qinfo, env, edns, buf, temp, z->soa, 0, rcode); - error_encode(buf, (rcode|BIT_AA), qinfo, - *(uint16_t*)sldns_buffer_begin(buf), - sldns_buffer_read_u16_at(buf, 2), edns); + local_error_encode(qinfo, env, edns, buf, temp, rcode, + (rcode|BIT_AA)); return 1; } @@ -1193,44 +1464,141 @@ lz_inform_print(struct local_zone* z, struct query_info* qinfo, log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } +static enum localzone_type +lz_type(uint8_t *taglist, size_t taglen, uint8_t *taglist2, size_t taglen2, + uint8_t *tagactions, size_t tagactionssize, enum localzone_type lzt, + struct comm_reply* repinfo, struct rbtree_type* override_tree, + int* tag, char** tagname, int num_tags) +{ + struct local_zone_override* lzo; + if(repinfo && override_tree) { + lzo = (struct local_zone_override*)addr_tree_lookup( + override_tree, &repinfo->addr, repinfo->addrlen); + if(lzo && lzo->type) { + verbose(VERB_ALGO, "local zone override to type %s", + local_zone_type2str(lzo->type)); + return lzo->type; + } + } + if(!taglist || !taglist2) + return lzt; + return local_data_find_tag_action(taglist, taglen, taglist2, taglen2, + tagactions, tagactionssize, lzt, tag, tagname, num_tags); +} + +enum localzone_type +local_data_find_tag_action(const uint8_t* taglist, size_t taglen, + const uint8_t* taglist2, size_t taglen2, const uint8_t* tagactions, + size_t tagactionssize, enum localzone_type lzt, int* tag, + char* const* tagname, int num_tags) +{ + size_t i, j; + uint8_t tagmatch; + + for(i=0; i0; j++) { + if((tagmatch & 0x1)) { + *tag = (int)(i*8+j); + verbose(VERB_ALGO, "matched tag [%d] %s", + *tag, (*tag>= 1; + } + } + return lzt; +} + int -local_zones_answer(struct local_zones* zones, struct query_info* qinfo, - struct edns_data* edns, sldns_buffer* buf, struct regional* temp, - struct comm_reply* repinfo) +local_zones_answer(struct local_zones* zones, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, + size_t taglen, uint8_t* tagactions, size_t tagactionssize, + struct config_strlist** tag_datas, size_t tag_datas_size, + char** tagname, int num_tags, struct view* view) { /* see if query is covered by a zone, * if so: - try to match (exact) local data * - look at zone type for negative response. */ int labs = dname_count_labels(qinfo->qname); - struct local_data* ld; - struct local_zone* z; - int r; - lock_rw_rdlock(&zones->lock); - z = local_zones_lookup(zones, qinfo->qname, - qinfo->qname_len, labs, qinfo->qclass); + struct local_data* ld = NULL; + struct local_zone* z = NULL; + enum localzone_type lzt = local_zone_transparent; + int r, tag = -1; + + if(view) { + lock_rw_rdlock(&view->lock); + if(view->local_zones && + (z = local_zones_lookup(view->local_zones, + qinfo->qname, qinfo->qname_len, labs, + qinfo->qclass, qinfo->qtype))) { + if(z->type != local_zone_noview) + verbose(VERB_ALGO, + "using localzone from view: %s", + view->name); + lock_rw_rdlock(&z->lock); + lzt = z->type; + } + if(lzt == local_zone_noview) { + lock_rw_unlock(&z->lock); + z = NULL; + } + if(view->local_zones && !z && !view->isfirst){ + lock_rw_unlock(&view->lock); + return 0; + } + lock_rw_unlock(&view->lock); + } if(!z) { + /* try global local_zones tree */ + lock_rw_rdlock(&zones->lock); + if(!(z = local_zones_tags_lookup(zones, qinfo->qname, + qinfo->qname_len, labs, qinfo->qclass, qinfo->qtype, + taglist, taglen, 0))) { + lock_rw_unlock(&zones->lock); + return 0; + } + lock_rw_rdlock(&z->lock); + + lzt = lz_type(taglist, taglen, z->taglist, z->taglen, + tagactions, tagactionssize, z->type, repinfo, + z->override_tree, &tag, tagname, num_tags); lock_rw_unlock(&zones->lock); - return 0; } - lock_rw_rdlock(&z->lock); - lock_rw_unlock(&zones->lock); - - if((z->type == local_zone_inform || z->type == local_zone_inform_deny) + if((lzt == local_zone_inform || lzt == local_zone_inform_deny) && repinfo) lz_inform_print(z, qinfo, repinfo); - if(local_data_answer(z, qinfo, edns, buf, temp, labs, &ld)) { + if(lzt != local_zone_always_refuse + && lzt != local_zone_always_transparent + && lzt != local_zone_always_nxdomain + && local_data_answer(z, env, qinfo, edns, buf, temp, labs, &ld, lzt, + tag, tag_datas, tag_datas_size, tagname, num_tags)) { lock_rw_unlock(&z->lock); - return 1; + /* We should tell the caller that encode is deferred if we found + * a local alias. */ + return !qinfo->local_alias; } - r = lz_zone_answer(z, qinfo, edns, buf, temp, ld); + r = lz_zone_answer(z, env, qinfo, edns, buf, temp, ld, lzt); lock_rw_unlock(&z->lock); - return r; + return r && !qinfo->local_alias; /* see above */ } const char* local_zone_type2str(enum localzone_type t) { switch(t) { + case local_zone_unset: return "unset"; case local_zone_deny: return "deny"; case local_zone_refuse: return "refuse"; case local_zone_redirect: return "redirect"; @@ -1240,6 +1608,10 @@ const char* local_zone_type2str(enum localzone_type t) case local_zone_nodefault: return "nodefault"; case local_zone_inform: return "inform"; case local_zone_inform_deny: return "inform_deny"; + case local_zone_always_transparent: return "always_transparent"; + case local_zone_always_refuse: return "always_refuse"; + case local_zone_always_nxdomain: return "always_nxdomain"; + case local_zone_noview: return "noview"; } return "badtyped"; } @@ -1262,6 +1634,16 @@ int local_zone_str2type(const char* type, enum localzone_type* t) *t = local_zone_inform; else if(strcmp(type, "inform_deny") == 0) *t = local_zone_inform_deny; + else if(strcmp(type, "always_transparent") == 0) + *t = local_zone_always_transparent; + else if(strcmp(type, "always_refuse") == 0) + *t = local_zone_always_refuse; + else if(strcmp(type, "always_nxdomain") == 0) + *t = local_zone_always_nxdomain; + else if(strcmp(type, "noview") == 0) + *t = local_zone_noview; + else if(strcmp(type, "nodefault") == 0) + *t = local_zone_nodefault; else return 0; return 1; } @@ -1298,7 +1680,10 @@ struct local_zone* local_zones_add_zone(struct local_zones* zones, { /* create */ struct local_zone* z = local_zone_create(name, len, labs, tp, dclass); - if(!z) return NULL; + if(!z) { + free(name); + return NULL; + } lock_rw_wrlock(&z->lock); /* find the closest parent */ @@ -1338,19 +1723,19 @@ int local_zones_add_RR(struct local_zones* zones, const char* rr) { uint8_t* rr_name; - uint16_t rr_class; + uint16_t rr_class, rr_type; size_t len; int labs; struct local_zone* z; int r; - if(!get_rr_nameclass(rr, &rr_name, &rr_class)) { + if(!get_rr_nameclass(rr, &rr_name, &rr_class, &rr_type)) { return 0; } labs = dname_count_size_labels(rr_name, &len); /* could first try readlock then get writelock if zone does not exist, * but we do not add enough RRs (from multiple threads) to optimize */ lock_rw_wrlock(&zones->lock); - z = local_zones_lookup(zones, rr_name, len, labs, rr_class); + z = local_zones_lookup(zones, rr_name, len, labs, rr_class, rr_type); if(!z) { z = local_zones_add_zone(zones, rr_name, len, labs, rr_class, local_zone_transparent); @@ -1402,14 +1787,47 @@ del_empty_term(struct local_zone* z, struct local_data* d, } } +/** find and remove type from list in domain struct */ +static void +del_local_rrset(struct local_data* d, uint16_t dtype) +{ + struct local_rrset* prev=NULL, *p=d->rrsets; + while(p && ntohs(p->rrset->rk.type) != dtype) { + prev = p; + p = p->next; + } + if(!p) + return; /* rrset type not found */ + /* unlink it */ + if(prev) prev->next = p->next; + else d->rrsets = p->next; + /* no memory recycling for zone deletions ... */ +} + void local_zones_del_data(struct local_zones* zones, uint8_t* name, size_t len, int labs, uint16_t dclass) { /* find zone */ struct local_zone* z; struct local_data* d; + + /* remove DS */ + lock_rw_rdlock(&zones->lock); + z = local_zones_lookup(zones, name, len, labs, dclass, LDNS_RR_TYPE_DS); + if(z) { + lock_rw_wrlock(&z->lock); + d = lz_find_node(z, name, len, labs); + if(d) { + del_local_rrset(d, LDNS_RR_TYPE_DS); + del_empty_term(z, d, name, len, labs); + } + lock_rw_unlock(&z->lock); + } + lock_rw_unlock(&zones->lock); + + /* remove other types */ lock_rw_rdlock(&zones->lock); - z = local_zones_lookup(zones, name, len, labs, dclass); + z = local_zones_lookup(zones, name, len, labs, dclass, 0); if(!z) { /* no such zone, we're done */ lock_rw_unlock(&zones->lock); diff --git a/external/unbound/services/localzone.h b/external/unbound/services/localzone.h index 3d62a69..dd7aa58 100644 --- a/external/unbound/services/localzone.h +++ b/external/unbound/services/localzone.h @@ -43,6 +43,10 @@ #define SERVICES_LOCALZONE_H #include "util/rbtree.h" #include "util/locks.h" +#include "util/storage/dnstree.h" +#include "util/module.h" +#include "services/view.h" +struct packed_rrset_data; struct ub_packed_rrset_key; struct regional; struct config_file; @@ -50,6 +54,7 @@ struct edns_data; struct query_info; struct sldns_buffer; struct comm_reply; +struct config_strlist; /** * Local zone type @@ -57,8 +62,10 @@ struct comm_reply; * local-data directly. */ enum localzone_type { + /** unset type, used for unset tag_action elements */ + local_zone_unset = 0, /** drop query */ - local_zone_deny = 0, + local_zone_deny, /** answer with error */ local_zone_refuse, /** answer nxdomain or nodata */ @@ -75,7 +82,15 @@ enum localzone_type { /** log client address, but no block (transparent) */ local_zone_inform, /** log client address, and block (drop) */ - local_zone_inform_deny + local_zone_inform_deny, + /** resolve normally, even when there is local data */ + local_zone_always_transparent, + /** answer with error, even when there is local data */ + local_zone_always_refuse, + /** answer with nxdomain, even when there is local data */ + local_zone_always_nxdomain, + /** answer not from the view, but global or no-answer */ + local_zone_noview }; /** @@ -83,9 +98,9 @@ enum localzone_type { */ struct local_zones { /** lock on the localzone tree */ - lock_rw_t lock; + lock_rw_type lock; /** rbtree of struct local_zone */ - rbtree_t ztree; + rbtree_type ztree; }; /** @@ -93,7 +108,7 @@ struct local_zones { */ struct local_zone { /** rbtree node, key is name and class */ - rbnode_t node; + rbnode_type node; /** parent zone, if any. */ struct local_zone* parent; @@ -111,17 +126,24 @@ struct local_zone { * For the node, parent, name, namelen, namelabs, dclass, you * need to also hold the zones_tree lock to change them (or to * delete this zone) */ - lock_rw_t lock; + lock_rw_type lock; /** how to process zone */ enum localzone_type type; + /** tag bitlist */ + uint8_t* taglist; + /** length of the taglist (in bytes) */ + size_t taglen; + /** netblock addr_tree with struct local_zone_override information + * or NULL if there are no override elements */ + struct rbtree_type* override_tree; /** in this region the zone's data is allocated. * the struct local_zone itself is malloced. */ struct regional* region; /** local data for this zone * rbtree of struct local_data */ - rbtree_t data; + rbtree_type data; /** if data contains zone apex SOA data, this is a ptr to it. */ struct ub_packed_rrset_key* soa; }; @@ -131,7 +153,7 @@ struct local_zone { */ struct local_data { /** rbtree node, key is name only */ - rbnode_t node; + rbnode_type node; /** domain name */ uint8_t* name; /** length of name */ @@ -153,6 +175,16 @@ struct local_rrset { struct ub_packed_rrset_key* rrset; }; +/** + * Local zone override information + */ +struct local_zone_override { + /** node in addrtree */ + struct addr_tree_node node; + /** override for local zone type */ + enum localzone_type type; +}; + /** * Create local zones storage * @return new struct or NULL on error. @@ -197,6 +229,25 @@ int local_data_cmp(const void* d1, const void* d2); */ void local_zone_delete(struct local_zone* z); +/** + * Lookup zone that contains the given name, class and taglist. + * User must lock the tree or result zone. + * @param zones: the zones tree + * @param name: dname to lookup + * @param len: length of name. + * @param labs: labelcount of name. + * @param dclass: class to lookup. + * @param dtype: type to lookup, if type DS a zone higher is used for zonecuts. + * @param taglist: taglist to lookup. + * @param taglen: lenth of taglist. + * @param ignoretags: lookup zone by name and class, regardless the + * local-zone's tags. + * @return closest local_zone or NULL if no covering zone is found. + */ +struct local_zone* local_zones_tags_lookup(struct local_zones* zones, + uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype, + uint8_t* taglist, size_t taglen, int ignoretags); + /** * Lookup zone that contains the given name, class. * User must lock the tree or result zone. @@ -205,10 +256,12 @@ void local_zone_delete(struct local_zone* z); * @param len: length of name. * @param labs: labelcount of name. * @param dclass: class to lookup. + * @param dtype: type of the record, if type DS then a zone higher up is found + * pass 0 to just plain find a zone for a name. * @return closest local_zone or NULL if no covering zone is found. */ struct local_zone* local_zones_lookup(struct local_zones* zones, - uint8_t* name, size_t len, int labs, uint16_t dclass); + uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype); /** * Debug helper. Print all zones @@ -221,18 +274,39 @@ void local_zones_print(struct local_zones* zones); * Answer authoritatively for local zones. * Takes care of locking. * @param zones: the stored zones (shared, read only). + * @param env: the module environment. * @param qinfo: query info (parsed). * @param edns: edns info (parsed). * @param buf: buffer with query ID and flags, also for reply. * @param temp: temporary storage region. * @param repinfo: source address for checks. may be NULL. + * @param taglist: taglist for checks. May be NULL. + * @param taglen: length of the taglist. + * @param tagactions: local zone actions for tags. May be NULL. + * @param tagactionssize: length of the tagactions. + * @param tag_datas: array per tag of strlist with rdata strings. or NULL. + * @param tag_datas_size: size of tag_datas array. + * @param tagname: array of tag name strings (for debug output). + * @param num_tags: number of items in tagname array. + * @param view: answer using this view. May be NULL. * @return true if answer is in buffer. false if query is not answered * by authority data. If the reply should be dropped altogether, the return * value is true, but the buffer is cleared (empty). + * It can also return true if a non-exact alias answer is found. In this + * case qinfo->local_alias points to the corresponding alias RRset but the + * answer is NOT encoded in buffer. It's the caller's responsibility to + * complete the alias chain (if needed) and encode the final set of answer. + * Data pointed to by qinfo->local_alias is allocated in 'temp' or refers to + * configuration data. So the caller will need to make a deep copy of it + * if it needs to keep it beyond the lifetime of 'temp' or a dynamic update + * to local zone data. */ -int local_zones_answer(struct local_zones* zones, struct query_info* qinfo, - struct edns_data* edns, struct sldns_buffer* buf, struct regional* temp, - struct comm_reply* repinfo); +int local_zones_answer(struct local_zones* zones, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, struct sldns_buffer* buf, + struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, + size_t taglen, uint8_t* tagactions, size_t tagactionssize, + struct config_strlist** tag_datas, size_t tag_datas_size, + char** tagname, int num_tags, struct view* view); /** * Parse the string into localzone type. @@ -321,4 +395,120 @@ void local_zones_del_data(struct local_zones* zones, */ int parse_dname(const char* str, uint8_t** res, size_t* len, int* labs); +/** + * Find local data tag string match for the given type (in qinfo) in the list. + * If found, 'r' will be filled with corresponding rrset information. + * @param qinfo: contains name, type, and class for the data + * @param list: stores local tag data to be searched + * @param r: rrset key to be filled for matched data + * @param temp: region to allocate rrset in 'r' + * @return 1 if a match is found and rrset is built; otherwise 0 including + * errors. + */ +int local_data_find_tag_datas(const struct query_info* qinfo, + struct config_strlist* list, struct ub_packed_rrset_key* r, + struct regional* temp); + +/** + * See if two sets of tag lists (in the form of bitmap) have the same tag that + * has an action. If so, '*tag' will be set to the found tag index, and the + * corresponding action will be returned in the form of local zone type. + * Otherwise the passed type (lzt) will be returned as the default action. + * Pointers except tagactions must not be NULL. + * @param taglist: 1st list of tags + * @param taglen: size of taglist in bytes + * @param taglist2: 2nd list of tags + * @param taglen2: size of taglist2 in bytes + * @param tagactions: local data actions for tags. May be NULL. + * @param tagactionssize: length of the tagactions. + * @param lzt: default action (local zone type) if no tag action is found. + * @param tag: see above. + * @param tagname: array of tag name strings (for debug output). + * @param num_tags: number of items in tagname array. + * @return found tag action or the default action. + */ +enum localzone_type local_data_find_tag_action(const uint8_t* taglist, + size_t taglen, const uint8_t* taglist2, size_t taglen2, + const uint8_t* tagactions, size_t tagactionssize, + enum localzone_type lzt, int* tag, char* const* tagname, int num_tags); + +/** + * Enter defaults to local zone. + * @param zones: to add defaults to + * @param cfg: containing list of zones to exclude from default set. + * @return 1 on success; 0 otherwise. + */ +int local_zone_enter_defaults(struct local_zones* zones, + struct config_file* cfg); + +/** + * Parses resource record string into wire format, also returning its field values. + * @param str: input resource record + * @param nm: domain name field + * @param type: record type field + * @param dclass: record class field + * @param ttl: ttl field + * @param rr: buffer for the parsed rr in wire format + * @param len: buffer length + * @param rdata: rdata field + * @param rdata_len: rdata field length + * @return 1 on success; 0 otherwise. + */ +int rrstr_get_rr_content(const char* str, uint8_t** nm, uint16_t* type, + uint16_t* dclass, time_t* ttl, uint8_t* rr, size_t len, + uint8_t** rdata, size_t* rdata_len); + +/** + * Insert specified rdata into the specified resource record. + * @param region: allocator + * @param pd: data portion of the destination resource record + * @param rdata: source rdata + * @param rdata_len: source rdata length + * @param ttl: time to live + * @param rrstr: resource record in text form (for logging) + * @return 1 on success; 0 otherwise. + */ +int rrset_insert_rr(struct regional* region, struct packed_rrset_data* pd, + uint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr); + +/** + * Valid response ip actions for the IP-response-driven-action feature; + * defined here instead of in the respip module to enable sharing of enum + * values with the localzone_type enum. + * Note that these values except 'none' are the same as localzone types of + * the 'same semantics'. It's intentional as we use these values via + * access-control-tags, which can be shared for both response ip actions and + * local zones. + */ +enum respip_action { + /** no respip action */ + respip_none = local_zone_unset, + /** don't answer */ + respip_deny = local_zone_deny, + /** redirect as per provided data */ + respip_redirect = local_zone_redirect, + /** log query source and answer query */ + respip_inform = local_zone_inform, + /** log query source and don't answer query */ + respip_inform_deny = local_zone_inform_deny, + /** resolve normally, even when there is response-ip data */ + respip_always_transparent = local_zone_always_transparent, + /** answer with 'refused' response */ + respip_always_refuse = local_zone_always_refuse, + /** answer with 'no such domain' response */ + respip_always_nxdomain = local_zone_always_nxdomain, + + /* The rest of the values are only possible as + * access-control-tag-action */ + + /** serves response data (if any), else, drops queries. */ + respip_refuse = local_zone_refuse, + /** serves response data, else, nodata answer. */ + respip_static = local_zone_static, + /** gives response data (if any), else nodata answer. */ + respip_transparent = local_zone_transparent, + /** gives response data (if any), else nodata answer. */ + respip_typetransparent = local_zone_typetransparent, +}; + #endif /* SERVICES_LOCALZONE_H */ diff --git a/external/unbound/services/mesh.c b/external/unbound/services/mesh.c index 8076874..41aba74 100644 --- a/external/unbound/services/mesh.c +++ b/external/unbound/services/mesh.c @@ -56,6 +56,10 @@ #include "util/alloc.h" #include "util/config_file.h" #include "sldns/sbuffer.h" +#include "sldns/wire2str.h" +#include "services/localzone.h" +#include "util/data/dname.h" +#include "respip/respip.h" /** subtract timers and the values do not overflow or become negative */ static void @@ -121,11 +125,69 @@ timeval_smaller(const struct timeval* x, const struct timeval* y) #endif } +/* + * Compare two response-ip client info entries for the purpose of mesh state + * compare. It returns 0 if ci_a and ci_b are considered equal; otherwise + * 1 or -1 (they mean 'ci_a is larger/smaller than ci_b', respectively, but + * in practice it should be only used to mean they are different). + * We cannot share the mesh state for two queries if different response-ip + * actions can apply in the end, even if those queries are otherwise identical. + * For this purpose we compare tag lists and tag action lists; they should be + * identical to share the same state. + * For tag data, we don't look into the data content, as it can be + * expensive; unless tag data are not defined for both or they point to the + * exact same data in memory (i.e., they come from the same ACL entry), we + * consider these data different. + * Likewise, if the client info is associated with views, we don't look into + * the views. They are considered different unless they are exactly the same + * even if the views only differ in the names. + */ +static int +client_info_compare(const struct respip_client_info* ci_a, + const struct respip_client_info* ci_b) +{ + int cmp; + + if(!ci_a && !ci_b) + return 0; + if(ci_a && !ci_b) + return -1; + if(!ci_a && ci_b) + return 1; + if(ci_a->taglen != ci_b->taglen) + return (ci_a->taglen < ci_b->taglen) ? -1 : 1; + cmp = memcmp(ci_a->taglist, ci_b->taglist, ci_a->taglen); + if(cmp != 0) + return cmp; + if(ci_a->tag_actions_size != ci_b->tag_actions_size) + return (ci_a->tag_actions_size < ci_b->tag_actions_size) ? + -1 : 1; + cmp = memcmp(ci_a->tag_actions, ci_b->tag_actions, + ci_a->tag_actions_size); + if(cmp != 0) + return cmp; + if(ci_a->tag_datas != ci_b->tag_datas) + return ci_a->tag_datas < ci_b->tag_datas ? -1 : 1; + if(ci_a->view != ci_b->view) + return ci_a->view < ci_b->view ? -1 : 1; + /* For the unbound daemon these should be non-NULL and identical, + * but we check that just in case. */ + if(ci_a->respip_set != ci_b->respip_set) + return ci_a->respip_set < ci_b->respip_set ? -1 : 1; + return 0; +} + int mesh_state_compare(const void* ap, const void* bp) { struct mesh_state* a = (struct mesh_state*)ap; struct mesh_state* b = (struct mesh_state*)bp; + int cmp; + + if(a->unique < b->unique) + return -1; + if(a->unique > b->unique) + return 1; if(a->s.is_priming && !b->s.is_priming) return -1; @@ -147,7 +209,10 @@ mesh_state_compare(const void* ap, const void* bp) if(!(a->s.query_flags&BIT_CD) && (b->s.query_flags&BIT_CD)) return 1; - return query_info_compare(&a->s.qinfo, &b->s.qinfo); + cmp = query_info_compare(&a->s.qinfo, &b->s.qinfo); + if(cmp != 0) + return cmp; + return client_info_compare(a->s.client_info, b->s.client_info); } int @@ -195,7 +260,7 @@ mesh_create(struct module_stack* stack, struct module_env* env) /** help mesh delete delete mesh states */ static void -mesh_delete_helper(rbnode_t* n) +mesh_delete_helper(rbnode_type* n) { struct mesh_state* mstate = (struct mesh_state*)n->key; /* perform a full delete, not only 'cleanup' routine, @@ -279,13 +344,16 @@ int mesh_make_new_space(struct mesh_area* mesh, sldns_buffer* qbuf) } void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, - uint16_t qflags, struct edns_data* edns, struct comm_reply* rep, - uint16_t qid) + struct respip_client_info* cinfo, uint16_t qflags, + struct edns_data* edns, struct comm_reply* rep, uint16_t qid) { - struct mesh_state* s = mesh_area_find(mesh, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + struct mesh_state* s = NULL; + int unique = unique_mesh_state(edns->opt_list, mesh->env); int was_detached = 0; int was_noreply = 0; int added = 0; + if(!unique) + s = mesh_area_find(mesh, cinfo, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); /* does this create a new reply state? */ if(!s || s->list_select == mesh_no_list) { if(!mesh_make_new_space(mesh, rep->c->buffer)) { @@ -310,16 +378,38 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, /* see if it already exists, if not, create one */ if(!s) { #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif - s = mesh_state_create(mesh->env, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + s = mesh_state_create(mesh->env, qinfo, cinfo, + qflags&(BIT_RD|BIT_CD), 0, 0); if(!s) { log_err("mesh_state_create: out of memory; SERVFAIL"); + if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, + LDNS_RCODE_SERVFAIL, edns, mesh->env->scratch)) + edns->opt_list = NULL; error_encode(rep->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); return; } + if(unique) + mesh_state_make_unique(s); + /* copy the edns options we got from the front */ + if(edns->opt_list) { + s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list, + s->s.region); + if(!s->s.edns_opts_front_in) { + log_err("mesh_state_create: out of memory; SERVFAIL"); + if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, + NULL, LDNS_RCODE_SERVFAIL, edns, mesh->env->scratch)) + edns->opt_list = NULL; + error_encode(rep->c->buffer, LDNS_RCODE_SERVFAIL, + qinfo, qid, qflags, edns); + comm_point_send_reply(rep); + return; + } + } + #ifdef UNBOUND_DEBUG n = #else @@ -336,8 +426,11 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s->reply_list && !s->cb_list) was_noreply = 1; /* add reply to s */ - if(!mesh_state_add_reply(s, edns, rep, qid, qflags, qinfo->qname)) { + if(!mesh_state_add_reply(s, edns, rep, qid, qflags, qinfo)) { log_err("mesh_new_client: out of memory; SERVFAIL"); + if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, + NULL, LDNS_RCODE_SERVFAIL, edns, mesh->env->scratch)) + edns->opt_list = NULL; error_encode(rep->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -374,23 +467,37 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, struct edns_data* edns, sldns_buffer* buf, - uint16_t qid, mesh_cb_func_t cb, void* cb_arg) + uint16_t qid, mesh_cb_func_type cb, void* cb_arg) { - struct mesh_state* s = mesh_area_find(mesh, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + struct mesh_state* s = NULL; + int unique = unique_mesh_state(edns->opt_list, mesh->env); int was_detached = 0; int was_noreply = 0; int added = 0; + if(!unique) + s = mesh_area_find(mesh, NULL, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + /* there are no limits on the number of callbacks */ /* see if it already exists, if not, create one */ if(!s) { #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif - s = mesh_state_create(mesh->env, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + s = mesh_state_create(mesh->env, qinfo, NULL, + qflags&(BIT_RD|BIT_CD), 0, 0); if(!s) { return 0; } + if(unique) + mesh_state_make_unique(s); + if(edns->opt_list) { + s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list, + s->s.region); + if(!s->s.edns_opts_front_in) { + return 0; + } + } #ifdef UNBOUND_DEBUG n = #else @@ -426,12 +533,27 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, return 1; } +static void mesh_schedule_prefetch(struct mesh_area* mesh, + struct query_info* qinfo, uint16_t qflags, time_t leeway, int run); + void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, time_t leeway) { - struct mesh_state* s = mesh_area_find(mesh, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + mesh_schedule_prefetch(mesh, qinfo, qflags, leeway, 1); +} + +/* Internal backend routine of mesh_new_prefetch(). It takes one additional + * parameter, 'run', which controls whether to run the prefetch state + * immediately. When this function is called internally 'run' could be + * 0 (false), in which case the new state is only made runnable so it + * will not be run recursively on top of the current state. */ +static void mesh_schedule_prefetch(struct mesh_area* mesh, + struct query_info* qinfo, uint16_t qflags, time_t leeway, int run) +{ + struct mesh_state* s = mesh_area_find(mesh, NULL, qinfo, + qflags&(BIT_RD|BIT_CD), 0, 0); #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif /* already exists, and for a different purpose perhaps. * if mesh_no_list, keep it that way. */ @@ -448,7 +570,9 @@ void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, mesh->stats_dropped ++; return; } - s = mesh_state_create(mesh->env, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); + + s = mesh_state_create(mesh->env, qinfo, NULL, + qflags&(BIT_RD|BIT_CD), 0, 0); if(!s) { log_err("prefetch mesh_state_create: out of memory"); return; @@ -479,6 +603,18 @@ void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, s->list_select = mesh_jostle_list; } } + + if(!run) { +#ifdef UNBOUND_DEBUG + n = +#else + (void) +#endif + rbtree_insert(&mesh->run, &s->run_node); + log_assert(n != NULL); + return; + } + mesh_run(mesh, s, module_event_new, NULL); } @@ -497,7 +633,8 @@ void mesh_report_reply(struct mesh_area* mesh, struct outbound_entry* e, struct mesh_state* mesh_state_create(struct module_env* env, struct query_info* qinfo, - uint16_t qflags, int prime, int valrec) + struct respip_client_info* cinfo, uint16_t qflags, int prime, + int valrec) { struct regional* region = alloc_reg_obtain(env->alloc); struct mesh_state* mstate; @@ -521,9 +658,11 @@ mesh_state_create(struct module_env* env, struct query_info* qinfo, rbtree_init(&mstate->super_set, &mesh_state_ref_compare); rbtree_init(&mstate->sub_set, &mesh_state_ref_compare); mstate->num_activated = 0; + mstate->unique = NULL; /* init module qstate */ mstate->s.qinfo.qtype = qinfo->qtype; mstate->s.qinfo.qclass = qinfo->qclass; + mstate->s.qinfo.local_alias = NULL; mstate->s.qinfo.qname_len = qinfo->qname_len; mstate->s.qinfo.qname = regional_alloc_init(region, qinfo->qname, qinfo->qname_len); @@ -531,6 +670,14 @@ mesh_state_create(struct module_env* env, struct query_info* qinfo, alloc_reg_release(env->alloc, region); return NULL; } + if(cinfo) { + mstate->s.client_info = regional_alloc_init(region, cinfo, + sizeof(*cinfo)); + if(!mstate->s.client_info) { + alloc_reg_release(env->alloc, region); + return NULL; + } + } /* remove all weird bits from qflags */ mstate->s.query_flags = (qflags & (BIT_RD|BIT_CD)); mstate->s.is_priming = prime; @@ -543,14 +690,36 @@ mesh_state_create(struct module_env* env, struct query_info* qinfo, mstate->s.env = env; mstate->s.mesh_info = mstate; mstate->s.prefetch_leeway = 0; + mstate->s.no_cache_lookup = 0; + mstate->s.no_cache_store = 0; + mstate->s.need_refetch = 0; + /* init modules */ for(i=0; imesh->mods.num; i++) { mstate->s.minfo[i] = NULL; mstate->s.ext_state[i] = module_state_initial; } + /* init edns option lists */ + mstate->s.edns_opts_front_in = NULL; + mstate->s.edns_opts_back_out = NULL; + mstate->s.edns_opts_back_in = NULL; + mstate->s.edns_opts_front_out = NULL; + return mstate; } +int +mesh_state_is_unique(struct mesh_state* mstate) +{ + return mstate->unique != NULL; +} + +void +mesh_state_make_unique(struct mesh_state* mstate) +{ + mstate->unique = mstate; +} + void mesh_state_cleanup(struct mesh_state* mstate) { @@ -567,7 +736,8 @@ mesh_state_cleanup(struct mesh_state* mstate) comm_point_drop_reply(&rep->query_reply); mesh->num_reply_addrs--; } - for(cb=mstate->cb_list; cb; cb=cb->next) { + while((cb = mstate->cb_list)!=NULL) { + mstate->cb_list = cb->next; fptr_ok(fptr_whitelist_mesh_cb(cb->cb)); (*cb->cb)(cb->cb_arg, LDNS_RCODE_SERVFAIL, NULL, sec_status_unchecked, NULL); @@ -658,7 +828,7 @@ void mesh_detach_subs(struct module_qstate* qstate) struct mesh_area* mesh = qstate->env->mesh; struct mesh_state_ref* ref, lookup; #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif lookup.node.key = &lookup; lookup.s = qstate->mesh_info; @@ -680,26 +850,26 @@ void mesh_detach_subs(struct module_qstate* qstate) rbtree_init(&qstate->mesh_info->sub_set, &mesh_state_ref_compare); } -int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, - uint16_t qflags, int prime, int valrec, struct module_qstate** newq) +int mesh_add_sub(struct module_qstate* qstate, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec, struct module_qstate** newq, + struct mesh_state** sub) { /* find it, if not, create it */ struct mesh_area* mesh = qstate->env->mesh; - struct mesh_state* sub = mesh_area_find(mesh, qinfo, qflags, prime, - valrec); - int was_detached; - if(mesh_detect_cycle_found(qstate, sub)) { + *sub = mesh_area_find(mesh, NULL, qinfo, qflags, + prime, valrec); + if(mesh_detect_cycle_found(qstate, *sub)) { verbose(VERB_ALGO, "attach failed, cycle detected"); return 0; } - if(!sub) { + if(!*sub) { #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif /* create a new one */ - sub = mesh_state_create(qstate->env, qinfo, qflags, prime, + *sub = mesh_state_create(qstate->env, qinfo, NULL, qflags, prime, valrec); - if(!sub) { + if(!*sub) { log_err("mesh_attach_sub: out of memory"); return 0; } @@ -708,7 +878,7 @@ int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, #else (void) #endif - rbtree_insert(&mesh->all, &sub->node); + rbtree_insert(&mesh->all, &(*sub)->node); log_assert(n != NULL); /* set detached (it is now) */ mesh->num_detached_states++; @@ -718,11 +888,22 @@ int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, #else (void) #endif - rbtree_insert(&mesh->run, &sub->run_node); + rbtree_insert(&mesh->run, &(*sub)->run_node); log_assert(n != NULL); - *newq = &sub->s; + *newq = &(*sub)->s; } else *newq = NULL; + return 1; +} + +int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec, struct module_qstate** newq) +{ + struct mesh_area* mesh = qstate->env->mesh; + struct mesh_state* sub = NULL; + int was_detached; + if(!mesh_add_sub(qstate, qinfo, qflags, prime, valrec, newq, &sub)) + return 0; was_detached = (sub->super_set.count == 0); if(!mesh_state_attachment(qstate->mesh_info, sub)) return 0; @@ -740,7 +921,7 @@ int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, int mesh_state_attachment(struct mesh_state* super, struct mesh_state* sub) { #ifdef UNBOUND_DEBUG - struct rbnode_t* n; + struct rbnode_type* n; #endif struct mesh_state_ref* subref; /* points to sub, inserted in super */ struct mesh_state_ref* superref; /* points to super, inserted in sub */ @@ -794,12 +975,22 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; - if(!rcode && rep->security == sec_status_bogus) { + if(!rcode && (rep->security == sec_status_bogus || + rep->security == sec_status_secure_sentinel_fail)) { if(!(reason = errinf_to_str(&m->s))) rcode = LDNS_RCODE_SERVFAIL; } /* send the reply */ if(rcode) { + if(rcode == LDNS_RCODE_SERVFAIL) { + if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, + rep, rcode, &r->edns, m->s.region)) + r->edns.opt_list = NULL; + } else { + if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, + &r->edns, m->s.region)) + r->edns.opt_list = NULL; + } fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, rcode, r->buf, sec_status_unchecked, NULL); } else { @@ -809,7 +1000,10 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, r->edns.udp_size = EDNS_ADVERTISED_SIZE; r->edns.ext_rcode = 0; r->edns.bits &= EDNS_DO; - if(!reply_info_answer_encode(&m->s.qinfo, rep, r->qid, + + if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, + LDNS_RCODE_NOERROR, &r->edns, m->s.region) || + !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r->buf, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), secure)) @@ -842,10 +1036,14 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, struct timeval end_time; struct timeval duration; int secure; + /* Copy the client's EDNS for later restore, to make sure the edns + * compare is with the correct edns options. */ + struct edns_data edns_bak = r->edns; /* examine security status */ if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || m->s.env->cfg->ignore_cd) && rep && - rep->security <= sec_status_bogus) { + (rep->security <= sec_status_bogus || + rep->security == sec_status_secure_sentinel_fail)) { rcode = LDNS_RCODE_SERVFAIL; if(m->s.env->cfg->stat_extended) m->s.env->mesh->ans_bogus++; @@ -856,10 +1054,18 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; /* send the reply */ + /* We don't reuse the encoded answer if either the previous or current + * response has a local alias. We could compare the alias records + * and still reuse the previous answer if they are the same, but that + * would be complicated and error prone for the relatively minor case. + * So we err on the side of safety. */ if(prev && prev->qflags == r->qflags && + !prev->local_alias && !r->local_alias && prev->edns.edns_present == r->edns.edns_present && prev->edns.bits == r->edns.bits && - prev->edns.udp_size == r->edns.udp_size) { + prev->edns.udp_size == r->edns.udp_size && + edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) + == 0) { /* if the previous reply is identical to this one, fix ID */ if(prev->query_reply.c->buffer != r->query_reply.c->buffer) sldns_buffer_copy(r->query_reply.c->buffer, @@ -871,6 +1077,16 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, comm_point_send_reply(&r->query_reply); } else if(rcode) { m->s.qinfo.qname = r->qname; + m->s.qinfo.local_alias = r->local_alias; + if(rcode == LDNS_RCODE_SERVFAIL) { + if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, + rep, rcode, &r->edns, m->s.region)) + r->edns.opt_list = NULL; + } else { + if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, + &r->edns, m->s.region)) + r->edns.opt_list = NULL; + } error_encode(r->query_reply.c->buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); comm_point_send_reply(&r->query_reply); @@ -881,15 +1097,22 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, r->edns.ext_rcode = 0; r->edns.bits &= EDNS_DO; m->s.qinfo.qname = r->qname; - if(!reply_info_answer_encode(&m->s.qinfo, rep, r->qid, + m->s.qinfo.local_alias = r->local_alias; + if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, + LDNS_RCODE_NOERROR, &r->edns, m->s.region) || + !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r->query_reply.c->buffer, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), secure)) { + if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, + rep, LDNS_RCODE_SERVFAIL, &r->edns, m->s.region)) + r->edns.opt_list = NULL; error_encode(r->query_reply.c->buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } + r->edns = edns_bak; comm_point_send_reply(&r->query_reply); } /* account */ @@ -910,6 +1133,12 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, query_reply.c->buffer)) == 0) m->s.env->mesh->ans_nodata++; } + /* Log reply sent */ + if(m->s.env->cfg->log_replies) { + log_reply_info(0, &m->s.qinfo, &r->query_reply.addr, + r->query_reply.addrlen, duration, 0, + r->query_reply.c->buffer); + } } void mesh_query_done(struct mesh_state* mstate) @@ -920,11 +1149,38 @@ void mesh_query_done(struct mesh_state* mstate) struct reply_info* rep = (mstate->s.return_msg? mstate->s.return_msg->rep:NULL); for(r = mstate->reply_list; r; r = r->next) { - mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, prev); - prev = r; + /* if a response-ip address block has been stored the + * information should be logged for each client. */ + if(mstate->s.respip_action_info && + mstate->s.respip_action_info->addrinfo) { + respip_inform_print(mstate->s.respip_action_info->addrinfo, + r->qname, mstate->s.qinfo.qtype, + mstate->s.qinfo.qclass, r->local_alias, + &r->query_reply); + } + + /* if this query is determined to be dropped during the + * mesh processing, this is the point to take that action. */ + if(mstate->s.is_drop) + comm_point_drop_reply(&r->query_reply); + else { + mesh_send_reply(mstate, mstate->s.return_rcode, rep, + r, prev); + prev = r; + } } mstate->replies_sent = 1; - for(c = mstate->cb_list; c; c = c->next) { + while((c = mstate->cb_list) != NULL) { + /* take this cb off the list; so that the list can be + * changed, eg. by adds from the callback routine */ + if(!mstate->reply_list && mstate->cb_list && !c->next) { + /* was a reply state, not anymore */ + mstate->s.env->mesh->num_reply_states--; + } + mstate->cb_list = c->next; + if(!mstate->reply_list && !mstate->cb_list && + mstate->super_set.count == 0) + mstate->s.env->mesh->num_detached_states++; mesh_do_callback(mstate, mstate->s.return_rcode, rep, c); } } @@ -945,7 +1201,8 @@ void mesh_walk_supers(struct mesh_area* mesh, struct mesh_state* mstate) } struct mesh_state* mesh_area_find(struct mesh_area* mesh, - struct query_info* qinfo, uint16_t qflags, int prime, int valrec) + struct respip_client_info* cinfo, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec) { struct mesh_state key; struct mesh_state* result; @@ -955,13 +1212,18 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, key.s.is_valrec = valrec; key.s.qinfo = *qinfo; key.s.query_flags = qflags; + /* We are searching for a similar mesh state when we DO want to + * aggregate the state. Thus unique is set to NULL. (default when we + * desire aggregation).*/ + key.unique = NULL; + key.s.client_info = cinfo; result = (struct mesh_state*)rbtree_search(&mesh->all, &key); return result; } int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, - sldns_buffer* buf, mesh_cb_func_t cb, void* cb_arg, + sldns_buffer* buf, mesh_cb_func_type cb, void* cb_arg, uint16_t qid, uint16_t qflags) { struct mesh_cb* r = regional_alloc(s->s.region, @@ -973,6 +1235,12 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, r->cb = cb; r->cb_arg = cb_arg; r->edns = *edns; + if(edns->opt_list) { + r->edns.opt_list = edns_opt_copy_region(edns->opt_list, + s->s.region); + if(!r->edns.opt_list) + return 0; + } r->qid = qid; r->qflags = qflags; r->next = s->cb_list; @@ -982,7 +1250,8 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, } int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, - struct comm_reply* rep, uint16_t qid, uint16_t qflags, uint8_t* qname) + struct comm_reply* rep, uint16_t qid, uint16_t qflags, + const struct query_info* qinfo) { struct mesh_reply* r = regional_alloc(s->s.region, sizeof(struct mesh_reply)); @@ -990,22 +1259,100 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, return 0; r->query_reply = *rep; r->edns = *edns; + if(edns->opt_list) { + r->edns.opt_list = edns_opt_copy_region(edns->opt_list, + s->s.region); + if(!r->edns.opt_list) + return 0; + } r->qid = qid; r->qflags = qflags; r->start_time = *s->s.env->now_tv; r->next = s->reply_list; - r->qname = regional_alloc_init(s->s.region, qname, + r->qname = regional_alloc_init(s->s.region, qinfo->qname, s->s.qinfo.qname_len); if(!r->qname) return 0; + + /* Data related to local alias stored in 'qinfo' (if any) is ephemeral + * and can be different for different original queries (even if the + * replaced query name is the same). So we need to make a deep copy + * and store the copy for each reply info. */ + if(qinfo->local_alias) { + struct packed_rrset_data* d; + struct packed_rrset_data* dsrc; + r->local_alias = regional_alloc_zero(s->s.region, + sizeof(*qinfo->local_alias)); + if(!r->local_alias) + return 0; + r->local_alias->rrset = regional_alloc_init(s->s.region, + qinfo->local_alias->rrset, + sizeof(*qinfo->local_alias->rrset)); + if(!r->local_alias->rrset) + return 0; + dsrc = qinfo->local_alias->rrset->entry.data; + + /* In the current implementation, a local alias must be + * a single CNAME RR (see worker_handle_request()). */ + log_assert(!qinfo->local_alias->next && dsrc->count == 1 && + qinfo->local_alias->rrset->rk.type == + htons(LDNS_RR_TYPE_CNAME)); + /* Technically, we should make a local copy for the owner + * name of the RRset, but in the case of the first (and + * currently only) local alias RRset, the owner name should + * point to the qname of the corresponding query, which should + * be valid throughout the lifetime of this mesh_reply. So + * we can skip copying. */ + log_assert(qinfo->local_alias->rrset->rk.dname == + sldns_buffer_at(rep->c->buffer, LDNS_HEADER_SIZE)); + + d = regional_alloc_init(s->s.region, dsrc, + sizeof(struct packed_rrset_data) + + sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t)); + if(!d) + return 0; + r->local_alias->rrset->entry.data = d; + d->rr_len = (size_t*)((uint8_t*)d + + sizeof(struct packed_rrset_data)); + d->rr_data = (uint8_t**)&(d->rr_len[1]); + d->rr_ttl = (time_t*)&(d->rr_data[1]); + d->rr_len[0] = dsrc->rr_len[0]; + d->rr_ttl[0] = dsrc->rr_ttl[0]; + d->rr_data[0] = regional_alloc_init(s->s.region, + dsrc->rr_data[0], d->rr_len[0]); + if(!d->rr_data[0]) + return 0; + } else + r->local_alias = NULL; + s->reply_list = r; return 1; +} + +/* Extract the query info and flags from 'mstate' into '*qinfop' and '*qflags'. + * Since this is only used for internal refetch of otherwise-expired answer, + * we simply ignore the rare failure mode when memory allocation fails. */ +static void +mesh_copy_qinfo(struct mesh_state* mstate, struct query_info** qinfop, + uint16_t* qflags) +{ + struct regional* region = mstate->s.env->scratch; + struct query_info* qinfo; + qinfo = regional_alloc_init(region, &mstate->s.qinfo, sizeof(*qinfo)); + if(!qinfo) + return; + qinfo->qname = regional_alloc_init(region, qinfo->qname, + qinfo->qname_len); + if(!qinfo->qname) + return; + *qinfop = qinfo; + *qflags = mstate->s.query_flags; } /** * Continue processing the mesh state at another module. - * Handles module to modules tranfer of control. + * Handles module to modules transfer of control. * Handles module finished. * @param mesh: the mesh area. * @param mstate: currently active mesh state. @@ -1025,7 +1372,8 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, mstate->num_activated++; if(mstate->num_activated > MESH_MAX_ACTIVATION) { /* module is looping. Stop it. */ - log_err("internal error: looping module stopped"); + log_err("internal error: looping module (%s) stopped", + mesh->mods.mod[mstate->s.curmod]->name); log_query_info(VERB_QUERY, "pass error for qstate", &mstate->s.qinfo); s = module_error; @@ -1041,24 +1389,56 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, return mesh_continue(mesh, mstate, module_error, ev); } if(s == module_restart_next) { - fptr_ok(fptr_whitelist_mod_clear( - mesh->mods.mod[mstate->s.curmod]->clear)); - (*mesh->mods.mod[mstate->s.curmod]->clear) - (&mstate->s, mstate->s.curmod); - mstate->s.minfo[mstate->s.curmod] = NULL; + int curmod = mstate->s.curmod; + for(; mstate->s.curmod < mesh->mods.num; + mstate->s.curmod++) { + fptr_ok(fptr_whitelist_mod_clear( + mesh->mods.mod[mstate->s.curmod]->clear)); + (*mesh->mods.mod[mstate->s.curmod]->clear) + (&mstate->s, mstate->s.curmod); + mstate->s.minfo[mstate->s.curmod] = NULL; + } + mstate->s.curmod = curmod; } *ev = module_event_pass; return 1; } + if(s == module_wait_subquery && mstate->sub_set.count == 0) { + log_err("module cannot wait for subquery, subquery list empty"); + log_query_info(VERB_QUERY, "pass error for qstate", + &mstate->s.qinfo); + s = module_error; + } if(s == module_error && mstate->s.return_rcode == LDNS_RCODE_NOERROR) { /* error is bad, handle pass back up below */ mstate->s.return_rcode = LDNS_RCODE_SERVFAIL; } - if(s == module_error || s == module_finished) { + if(s == module_error) { + mesh_query_done(mstate); + mesh_walk_supers(mesh, mstate); + mesh_state_delete(&mstate->s); + return 0; + } + if(s == module_finished) { if(mstate->s.curmod == 0) { + struct query_info* qinfo = NULL; + uint16_t qflags; + mesh_query_done(mstate); mesh_walk_supers(mesh, mstate); + + /* If the answer to the query needs to be refetched + * from an external DNS server, we'll need to schedule + * a prefetch after removing the current state, so + * we need to make a copy of the query info here. */ + if(mstate->s.need_refetch) + mesh_copy_qinfo(mstate, &qinfo, &qflags); + mesh_state_delete(&mstate->s); + if(qinfo) { + mesh_schedule_prefetch(mesh, qinfo, qflags, + 0, 1); + } return 0; } /* pass along the locus of control */ @@ -1187,8 +1567,9 @@ mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo, uint16_t flags, int prime, int valrec) { struct mesh_area* mesh = qstate->env->mesh; - struct mesh_state* dep_m = mesh_area_find(mesh, qinfo, flags, prime, - valrec); + struct mesh_state* dep_m = NULL; + if(!mesh_state_is_unique(qstate->mesh_info)) + dep_m = mesh_area_find(mesh, NULL, qinfo, flags, prime, valrec); return mesh_detect_cycle_found(qstate, dep_m); } diff --git a/external/unbound/services/mesh.h b/external/unbound/services/mesh.h index 086e390..67749ac 100644 --- a/external/unbound/services/mesh.h +++ b/external/unbound/services/mesh.h @@ -59,6 +59,7 @@ struct query_info; struct reply_info; struct outbound_entry; struct timehist; +struct respip_client_info; /** * Maximum number of mesh state activations. Any more is likely an @@ -83,9 +84,9 @@ struct mesh_area { struct module_env* env; /** set of runnable queries (mesh_state.run_node) */ - rbtree_t run; + rbtree_type run; /** rbtree of all current queries (mesh_state.node)*/ - rbtree_t all; + rbtree_type all; /** count of the total number of mesh_reply entries */ size_t num_reply_addrs; @@ -154,9 +155,9 @@ struct mesh_area { */ struct mesh_state { /** node in mesh_area all tree, key is this struct. Must be first. */ - rbnode_t node; + rbnode_type node; /** node in mesh_area runnable tree, key is this struct */ - rbnode_t run_node; + rbnode_type run_node; /** the query state. Note that the qinfo and query_flags * may not change. */ struct module_qstate s; @@ -166,10 +167,10 @@ struct mesh_state { struct mesh_cb* cb_list; /** set of superstates (that want this state's result) * contains struct mesh_state_ref* */ - rbtree_t super_set; + rbtree_type super_set; /** set of substates (that this state needs to continue) * contains struct mesh_state_ref* */ - rbtree_t sub_set; + rbtree_type sub_set; /** number of activations for the mesh state */ size_t num_activated; @@ -180,6 +181,8 @@ struct mesh_state { /** if this state is in the forever list, jostle list, or neither */ enum mesh_list_select { mesh_no_list, mesh_forever_list, mesh_jostle_list } list_select; + /** pointer to this state for uniqueness or NULL */ + struct mesh_state* unique; /** true if replies have been sent out (at end for alignment) */ uint8_t replies_sent; @@ -191,7 +194,7 @@ struct mesh_state { */ struct mesh_state_ref { /** node in rbtree for set, key is this structure */ - rbnode_t node; + rbnode_type node; /** the mesh state */ struct mesh_state* s; }; @@ -214,13 +217,15 @@ struct mesh_reply { uint16_t qflags; /** qname from this query. len same as mesh qinfo. */ uint8_t* qname; + /** same as that in query_info. */ + struct local_rrset* local_alias; }; /** * Mesh result callback func. * called as func(cb_arg, rcode, buffer_with_reply, security, why_bogus); */ -typedef void (*mesh_cb_func_t)(void*, int, struct sldns_buffer*, enum sec_status, +typedef void (*mesh_cb_func_type)(void*, int, struct sldns_buffer*, enum sec_status, char*); /** @@ -241,7 +246,7 @@ struct mesh_cb { /** callback routine for results. if rcode != 0 buf has message. * called as cb(cb_arg, rcode, buf, sec_state); */ - mesh_cb_func_t cb; + mesh_cb_func_type cb; /** user arg for callback */ void* cb_arg; }; @@ -270,14 +275,18 @@ void mesh_delete(struct mesh_area* mesh); * * @param mesh: the mesh. * @param qinfo: query from client. + * @param cinfo: additional information associated with the query client. + * 'cinfo' itself is ephemeral but data pointed to by its members + * can be assumed to be valid and unchanged until the query processing is + * completed. * @param qflags: flags from client query. * @param edns: edns data from client query. * @param rep: where to reply to. * @param qid: query id to reply with. */ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, - uint16_t qflags, struct edns_data* edns, struct comm_reply* rep, - uint16_t qid); + struct respip_client_info* cinfo, uint16_t qflags, + struct edns_data* edns, struct comm_reply* rep, uint16_t qid); /** * New query with callback. Create new query state if needed, and @@ -296,7 +305,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, */ int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, struct edns_data* edns, struct sldns_buffer* buf, - uint16_t qid, mesh_cb_func_t cb, void* cb_arg); + uint16_t qid, mesh_cb_func_type cb, void* cb_arg); /** * New prefetch message. Create new query state if needed. @@ -361,6 +370,35 @@ void mesh_detach_subs(struct module_qstate* qstate); int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, uint16_t qflags, int prime, int valrec, struct module_qstate** newq); +/** + * Add detached query. + * Creates it if it does not exist already. + * Does not make super/sub references. + * Performs a cycle detection - for double check - and fails if there is one. + * Updates stat items in mesh_area structure. + * Pass if it is priming query or not. + * return: + * o if error (malloc) happened. + * o need to initialise the new state (module init; it is a new state). + * so that the next run of the query with this module is successful. + * o no init needed, attachment successful. + * o added subquery, created if it did not exist already. + * + * @param qstate: the state to find mesh state, and that wants to receive + * the results from the new subquery. + * @param qinfo: what to query for (copied). + * @param qflags: what flags to use (RD / CD flag or not). + * @param prime: if it is a (stub) priming query. + * @param valrec: if it is a validation recursion query (lookup of key, DS). + * @param newq: If the new subquery needs initialisation, it is returned, + * otherwise NULL is returned. + * @param sub: The added mesh state, created if it did not exist already. + * @return: false on error, true if success (and init may be needed). + */ +int mesh_add_sub(struct module_qstate* qstate, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec, struct module_qstate** newq, + struct mesh_state** sub); + /** * Query state is done, send messages to reply entries. * Encode messages using reply entry values and the querystate (with original @@ -405,14 +443,31 @@ void mesh_state_delete(struct module_qstate* qstate); * Does not put the mesh state into rbtrees and so on. * @param env: module environment to set. * @param qinfo: query info that the mesh is for. + * @param cinfo: control info for the query client (can be NULL). * @param qflags: flags for query (RD / CD flag). * @param prime: if true, it is a priming query, set is_priming on mesh state. * @param valrec: if true, it is a validation recursion query, and sets * is_valrec on the mesh state. * @return: new mesh state or NULL on allocation error. */ -struct mesh_state* mesh_state_create(struct module_env* env, - struct query_info* qinfo, uint16_t qflags, int prime, int valrec); +struct mesh_state* mesh_state_create(struct module_env* env, + struct query_info* qinfo, struct respip_client_info* cinfo, + uint16_t qflags, int prime, int valrec); + +/** + * Check if the mesh state is unique. + * A unique mesh state uses it's unique member to point to itself, else NULL. + * @param mstate: mesh state to check. + * @return true if the mesh state is unique, false otherwise. + */ +int mesh_state_is_unique(struct mesh_state* mstate); + +/** + * Make a mesh state unique. + * A unique mesh state uses it's unique member to point to itself. + * @param mstate: mesh state to check. + */ +void mesh_state_make_unique(struct mesh_state* mstate); /** * Cleanup a mesh state and its query state. Does not do rbtree or @@ -432,14 +487,17 @@ void mesh_delete_all(struct mesh_area* mesh); * Find a mesh state in the mesh area. Pass relevant flags. * * @param mesh: the mesh area to look in. + * @param cinfo: if non-NULL client specific info that may affect IP-based + * actions that apply to the query result. * @param qinfo: what query * @param qflags: if RD / CD bit is set or not. * @param prime: if it is a priming query. * @param valrec: if it is a validation-recursion query. * @return: mesh state or NULL if not found. */ -struct mesh_state* mesh_area_find(struct mesh_area* mesh, - struct query_info* qinfo, uint16_t qflags, int prime, int valrec); +struct mesh_state* mesh_area_find(struct mesh_area* mesh, + struct respip_client_info* cinfo, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec); /** * Setup attachment super/sub relation between super and sub mesh state. @@ -459,11 +517,12 @@ int mesh_state_attachment(struct mesh_state* super, struct mesh_state* sub); * @param rep: comm point reply info. * @param qid: ID of reply. * @param qflags: original query flags. - * @param qname: original query name. + * @param qinfo: original query info. * @return: 0 on alloc error. */ -int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, - struct comm_reply* rep, uint16_t qid, uint16_t qflags, uint8_t* qname); +int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, + struct comm_reply* rep, uint16_t qid, uint16_t qflags, + const struct query_info* qinfo); /** * Create new callback structure and attach it to a mesh state. @@ -478,8 +537,8 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, * @return: 0 on alloc error. */ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, - struct sldns_buffer* buf, mesh_cb_func_t cb, void* cb_arg, uint16_t qid, - uint16_t qflags); + struct sldns_buffer* buf, mesh_cb_func_type cb, void* cb_arg, + uint16_t qid, uint16_t qflags); /** * Run the mesh. Run all runnable mesh states. Which can create new diff --git a/external/unbound/services/modstack.c b/external/unbound/services/modstack.c index 49bb2fd..136245a 100644 --- a/external/unbound/services/modstack.c +++ b/external/unbound/services/modstack.c @@ -46,10 +46,20 @@ #include "dns64/dns64.h" #include "iterator/iterator.h" #include "validator/validator.h" +#include "respip/respip.h" #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef USE_CACHEDB +#include "cachedb/cachedb.h" +#endif +#ifdef USE_IPSECMOD +#include "ipsecmod/ipsecmod.h" +#endif +#ifdef CLIENT_SUBNET +#include "edns-subnet/subnetmod.h" +#endif /** count number of modules (words) in the string */ static int @@ -119,10 +129,20 @@ module_list_avail(void) static const char* names[] = { "dns64", #ifdef WITH_PYTHONMODULE - "python", + "python", +#endif +#ifdef USE_CACHEDB + "cachedb", #endif - "validator", - "iterator", +#ifdef USE_IPSECMOD + "ipsecmod", +#endif +#ifdef CLIENT_SUBNET + "subnetcache", +#endif + "respip", + "validator", + "iterator", NULL}; return names; } @@ -137,15 +157,25 @@ module_funcs_avail(void) static struct module_func_block* (*fb[])(void) = { &dns64_get_funcblock, #ifdef WITH_PYTHONMODULE - &pythonmod_get_funcblock, + &pythonmod_get_funcblock, +#endif +#ifdef USE_CACHEDB + &cachedb_get_funcblock, #endif - &val_get_funcblock, - &iter_get_funcblock, +#ifdef USE_IPSECMOD + &ipsecmod_get_funcblock, +#endif +#ifdef CLIENT_SUBNET + &subnetmod_get_funcblock, +#endif + &respip_get_funcblock, + &val_get_funcblock, + &iter_get_funcblock, NULL}; return fb; } -struct +struct module_func_block* module_factory(const char** str) { int i = 0; @@ -207,9 +237,21 @@ int modstack_find(struct module_stack* stack, const char* name) { int i; - for(i=0; inum; i++) { + for(i=0; inum; i++) { if(strcmp(stack->mod[i]->name, name) == 0) return i; } return -1; } + +size_t +mod_get_mem(struct module_env* env, const char* name) +{ + int m = modstack_find(&env->mesh->mods, name); + if(m != -1) { + fptr_ok(fptr_whitelist_mod_get_mem(env->mesh-> + mods.mod[m]->get_mem)); + return (*env->mesh->mods.mod[m]->get_mem)(env, m); + } + return 0; +} diff --git a/external/unbound/services/modstack.h b/external/unbound/services/modstack.h index cb86132..3ff01b5 100644 --- a/external/unbound/services/modstack.h +++ b/external/unbound/services/modstack.h @@ -110,4 +110,7 @@ void modstack_desetup(struct module_stack* stack, struct module_env* env); */ int modstack_find(struct module_stack* stack, const char* name); +/** fetch memory for a module by name, returns 0 if module not there */ +size_t mod_get_mem(struct module_env* env, const char* name); + #endif /* SERVICES_MODSTACK_H */ diff --git a/external/unbound/services/outside_network.c b/external/unbound/services/outside_network.c index f105bc0..5700ef8 100644 --- a/external/unbound/services/outside_network.c +++ b/external/unbound/services/outside_network.c @@ -122,6 +122,8 @@ serviced_cmp(const void* key1, const void* key2) } if((r = query_dname_compare(q1->qbuf+10, q2->qbuf+10)) != 0) return r; + if((r = edns_opt_list_compare(q1->opt_list, q2->opt_list)) != 0) + return r; return sockaddr_cmp(&q1->addr, q1->addrlen, &q2->addr, q2->addrlen); } @@ -196,18 +198,17 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) return 1; } -/** use next free buffer to service a tcp query */ -static int -outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) +/** get TCP file descriptor for address, returns -1 on failure, + * tcp_mss is 0 or maxseg size to set for TCP packets. */ +int +outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss) { - struct pending_tcp* pend = w->outnet->tcp_free; int s; - log_assert(pend); - log_assert(pkt); - log_assert(w->addrlen > 0); - /* open socket */ +#ifdef SO_REUSEADDR + int on = 1; +#endif #ifdef INET6 - if(addr_is_ip6(&w->addr, w->addrlen)) + if(addr_is_ip6(addr, addrlen)) s = socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP); else #endif @@ -215,18 +216,117 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) if(s == -1) { #ifndef USE_WINSOCK log_err_addr("outgoing tcp: socket", strerror(errno), - &w->addr, w->addrlen); + addr, addrlen); #else log_err_addr("outgoing tcp: socket", - wsa_strerror(WSAGetLastError()), &w->addr, w->addrlen); + wsa_strerror(WSAGetLastError()), addr, addrlen); #endif - return 0; + return -1; + } + +#ifdef SO_REUSEADDR + if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + verbose(VERB_ALGO, "outgoing tcp:" + " setsockopt(.. SO_REUSEADDR ..) failed"); } +#endif + + if(tcp_mss > 0) { +#if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) + if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG, + (void*)&tcp_mss, (socklen_t)sizeof(tcp_mss)) < 0) { + verbose(VERB_ALGO, "outgoing tcp:" + " setsockopt(.. TCP_MAXSEG ..) failed"); + } +#else + verbose(VERB_ALGO, "outgoing tcp:" + " setsockopt(TCP_MAXSEG) unsupported"); +#endif /* defined(IPPROTO_TCP) && defined(TCP_MAXSEG) */ + } + + return s; +} + +/** connect tcp connection to addr, 0 on failure */ +int +outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen) +{ + if(connect(s, (struct sockaddr*)addr, addrlen) == -1) { +#ifndef USE_WINSOCK +#ifdef EINPROGRESS + if(errno != EINPROGRESS) { +#endif + if(tcp_connect_errno_needs_log( + (struct sockaddr*)addr, addrlen)) + log_err_addr("outgoing tcp: connect", + strerror(errno), addr, addrlen); + close(s); + return 0; +#ifdef EINPROGRESS + } +#endif +#else /* USE_WINSOCK */ + if(WSAGetLastError() != WSAEINPROGRESS && + WSAGetLastError() != WSAEWOULDBLOCK) { + closesocket(s); + return 0; + } +#endif + } + return 1; +} + +/** use next free buffer to service a tcp query */ +static int +outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) +{ + struct pending_tcp* pend = w->outnet->tcp_free; + int s; + log_assert(pend); + log_assert(pkt); + log_assert(w->addrlen > 0); + /* open socket */ + s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss); + if(!pick_outgoing_tcp(w, s)) return 0; fd_set_nonblock(s); +#ifdef USE_OSX_MSG_FASTOPEN + /* API for fast open is different here. We use a connectx() function and + then writes can happen as normal even using SSL.*/ + /* connectx requires that the len be set in the sockaddr struct*/ + struct sockaddr_in *addr_in = (struct sockaddr_in *)&w->addr; + addr_in->sin_len = w->addrlen; + sa_endpoints_t endpoints; + endpoints.sae_srcif = 0; + endpoints.sae_srcaddr = NULL; + endpoints.sae_srcaddrlen = 0; + endpoints.sae_dstaddr = (struct sockaddr *)&w->addr; + endpoints.sae_dstaddrlen = w->addrlen; + if (connectx(s, &endpoints, SAE_ASSOCID_ANY, + CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE, + NULL, 0, NULL, NULL) == -1) { + /* if fails, failover to connect for OSX 10.10 */ +#ifdef EINPROGRESS + if(errno != EINPROGRESS) { +#else + if(1) { +#endif + if(connect(s, (struct sockaddr*)&w->addr, w->addrlen) == -1) { +#else /* USE_OSX_MSG_FASTOPEN*/ +#ifdef USE_MSG_FASTOPEN + pend->c->tcp_do_fastopen = 1; + /* Only do TFO for TCP in which case no connect() is required here. + Don't combine client TFO with SSL, since OpenSSL can't + currently support doing a handshake on fd that already isn't connected*/ + if (w->outnet->sslctx && w->ssl_upstream) { + if(connect(s, (struct sockaddr*)&w->addr, w->addrlen) == -1) { +#else /* USE_MSG_FASTOPEN*/ if(connect(s, (struct sockaddr*)&w->addr, w->addrlen) == -1) { +#endif /* USE_MSG_FASTOPEN*/ +#endif /* USE_OSX_MSG_FASTOPEN*/ #ifndef USE_WINSOCK #ifdef EINPROGRESS if(errno != EINPROGRESS) { @@ -246,6 +346,13 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) return 0; } } +#ifdef USE_MSG_FASTOPEN + } +#endif /* USE_MSG_FASTOPEN */ +#ifdef USE_OSX_MSG_FASTOPEN + } + } +#endif /* USE_OSX_MSG_FASTOPEN */ if(w->outnet->sslctx && w->ssl_upstream) { pend->c->ssl = outgoing_ssl_fd(w->outnet->sslctx, s); if(!pend->c->ssl) { @@ -257,6 +364,20 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) comm_point_tcp_win_bio_cb(pend->c, pend->c->ssl); #endif pend->c->ssl_shake_state = comm_ssl_shake_write; +#ifdef HAVE_SSL_SET1_HOST + if(w->tls_auth_name) { + SSL_set_verify(pend->c->ssl, SSL_VERIFY_PEER, NULL); + /* setting the hostname makes openssl verify the + * host name in the x509 certificate in the + * SSL connection*/ + if(!SSL_set1_host(pend->c->ssl, w->tls_auth_name)) { + log_err("SSL_set1_host failed"); + pend->c->fd = s; + comm_point_close(pend->c); + return 0; + } + } +#endif /* HAVE_SSL_SET1_HOST */ } w->pkt = NULL; w->next_waiting = (void*)pend; @@ -288,7 +409,7 @@ use_free_buffer(struct outside_network* outnet) if(outnet->tcp_wait_last == w) outnet->tcp_wait_last = NULL; if(!outnet_tcp_take_into_use(w, w->pkt, w->pkt_len)) { - comm_point_callback_t* cb = w->cb; + comm_point_callback_type* cb = w->cb; void* cb_arg = w->cb_arg; waiting_tcp_delete(w); fptr_ok(fptr_whitelist_pending_tcp(cb)); @@ -297,9 +418,9 @@ use_free_buffer(struct outside_network* outnet) } } -/** decomission a tcp buffer, closes commpoint and frees waiting_tcp entry */ +/** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */ static void -decomission_pending_tcp(struct outside_network* outnet, +decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { if(pend->c->ssl) { @@ -339,7 +460,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); - decomission_pending_tcp(outnet, pend); + decommission_pending_tcp(outnet, pend); return 0; } @@ -574,7 +695,9 @@ static int setup_if(struct port_if* pif, const char* addrstr, pif->avail_ports = (int*)memdup(avail, (size_t)numavail*sizeof(int)); if(!pif->avail_ports) return 0; - if(!ipstrtoaddr(addrstr, UNBOUND_DNS_PORT, &pif->addr, &pif->addrlen)) + if(!ipstrtoaddr(addrstr, UNBOUND_DNS_PORT, &pif->addr, &pif->addrlen) && + !netblockstrtoaddr(addrstr, UNBOUND_DNS_PORT, + &pif->addr, &pif->addrlen, &pif->pfxlen)) return 0; pif->maxout = (int)numfd; pif->inuse = 0; @@ -590,7 +713,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, size_t num_ports, char** ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra, struct ub_randstate* rnd, int use_caps_for_id, int* availports, - int numavailports, size_t unwanted_threshold, + int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, struct dt_env* dtenv) { @@ -620,6 +743,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->unwanted_param = unwanted_param; outnet->use_caps_for_id = use_caps_for_id; outnet->do_udp = do_udp; + outnet->tcp_mss = tcp_mss; #ifndef S_SPLINT_S if(delayclose) { outnet->delayclose = 1; @@ -726,7 +850,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, /** helper pending delete */ static void -pending_node_del(rbnode_t* node, void* arg) +pending_node_del(rbnode_type* node, void* arg) { struct pending* pend = (struct pending*)node; struct outside_network* outnet = (struct outside_network*)arg; @@ -735,12 +859,14 @@ pending_node_del(rbnode_t* node, void* arg) /** helper serviced delete */ static void -serviced_node_del(rbnode_t* node, void* ATTR_UNUSED(arg)) +serviced_node_del(rbnode_type* node, void* ATTR_UNUSED(arg)) { struct serviced_query* sq = (struct serviced_query*)node; struct service_callback* p = sq->cblist, *np; free(sq->qbuf); free(sq->zone); + free(sq->tls_auth_name); + edns_opt_list_free(sq->opt_list); while(p) { np = p->next; free(p); @@ -874,32 +1000,55 @@ pending_delete(struct outside_network* outnet, struct pending* p) free(p); } +static void +sai6_putrandom(struct sockaddr_in6 *sa, int pfxlen, struct ub_randstate *rnd) +{ + int i, last; + if(!(pfxlen > 0 && pfxlen < 128)) + return; + for(i = 0; i < (128 - pfxlen) / 8; i++) { + sa->sin6_addr.s6_addr[15-i] = (uint8_t)ub_random_max(rnd, 256); + } + last = pfxlen & 7; + if(last != 0) { + sa->sin6_addr.s6_addr[15-i] |= + ((0xFF >> last) & ub_random_max(rnd, 256)); + } +} + /** * Try to open a UDP socket for outgoing communication. * Sets sockets options as needed. * @param addr: socket address. * @param addrlen: length of address. + * @param pfxlen: length of network prefix (for address randomisation). * @param port: port override for addr. * @param inuse: if -1 is returned, this bool means the port was in use. + * @param rnd: random state (for address randomisation). * @return fd or -1 */ static int -udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int port, - int* inuse) +udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int pfxlen, + int port, int* inuse, struct ub_randstate* rnd) { int fd, noproto; if(addr_is_ip6(addr, addrlen)) { - struct sockaddr_in6* sa = (struct sockaddr_in6*)addr; - sa->sin6_port = (in_port_t)htons((uint16_t)port); + int freebind = 0; + struct sockaddr_in6 sa = *(struct sockaddr_in6*)addr; + sa.sin6_port = (in_port_t)htons((uint16_t)port); + if(pfxlen != 0) { + freebind = 1; + sai6_putrandom(&sa, pfxlen, rnd); + } fd = create_udp_sock(AF_INET6, SOCK_DGRAM, - (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, - 0, 0, 0, NULL, 0); + (struct sockaddr*)&sa, addrlen, 1, inuse, &noproto, + 0, 0, 0, NULL, 0, freebind, 0); } else { struct sockaddr_in* sa = (struct sockaddr_in*)addr; sa->sin_port = (in_port_t)htons((uint16_t)port); fd = create_udp_sock(AF_INET, SOCK_DGRAM, (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, - 0, 0, 0, NULL, 0); + 0, 0, 0, NULL, 0, 0, 0); } return fd; } @@ -959,7 +1108,8 @@ select_ifport(struct outside_network* outnet, struct pending* pend, /* try to open new port, if fails, loop to try again */ log_assert(pif->inuse < pif->maxout); portno = pif->avail_ports[my_port - pif->inuse]; - fd = udp_sockport(&pif->addr, pif->addrlen, portno, &inuse); + fd = udp_sockport(&pif->addr, pif->addrlen, pif->pfxlen, + portno, &inuse, outnet->rnd); if(fd == -1 && !inuse) { /* nonrecoverable error making socket */ return 0; @@ -1050,7 +1200,7 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout) struct pending* pending_udp_query(struct serviced_query* sq, struct sldns_buffer* packet, - int timeout, comm_point_callback_t* cb, void* cb_arg) + int timeout, comm_point_callback_type* cb, void* cb_arg) { struct pending* pend = (struct pending*)calloc(1, sizeof(*pend)); if(!pend) return NULL; @@ -1100,7 +1250,7 @@ outnet_tcptimer(void* arg) { struct waiting_tcp* w = (struct waiting_tcp*)arg; struct outside_network* outnet = w->outnet; - comm_point_callback_t* cb; + comm_point_callback_type* cb; void* cb_arg; if(w->pkt) { /* it is on the waiting list */ @@ -1123,7 +1273,7 @@ outnet_tcptimer(void* arg) struct waiting_tcp* pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, - int timeout, comm_point_callback_t* callback, void* callback_arg) + int timeout, comm_point_callback_type* callback, void* callback_arg) { struct pending_tcp* pend = sq->outnet->tcp_free; struct waiting_tcp* w; @@ -1149,9 +1299,10 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->cb = callback; w->cb_arg = callback_arg; w->ssl_upstream = sq->ssl_upstream; + w->tls_auth_name = sq->tls_auth_name; #ifndef S_SPLINT_S - tv.tv_sec = timeout; - tv.tv_usec = 0; + tv.tv_sec = timeout/1000; + tv.tv_usec = (timeout%1000)*1000; #endif comm_timer_set(w->timer, &tv); if(pend) { @@ -1203,7 +1354,8 @@ serviced_gen_query(sldns_buffer* buff, uint8_t* qname, size_t qnamelen, /** lookup serviced query in serviced query rbtree */ static struct serviced_query* lookup_serviced(struct outside_network* outnet, sldns_buffer* buff, int dnssec, - struct sockaddr_storage* addr, socklen_t addrlen) + struct sockaddr_storage* addr, socklen_t addrlen, + struct edns_option* opt_list) { struct serviced_query key; key.node.key = &key; @@ -1213,6 +1365,7 @@ lookup_serviced(struct outside_network* outnet, sldns_buffer* buff, int dnssec, memcpy(&key.addr, addr, addrlen); key.addrlen = addrlen; key.outnet = outnet; + key.opt_list = opt_list; return (struct serviced_query*)rbtree_search(outnet->serviced, &key); } @@ -1220,12 +1373,12 @@ lookup_serviced(struct outside_network* outnet, sldns_buffer* buff, int dnssec, static struct serviced_query* serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, int want_dnssec, int nocaps, int tcp_upstream, int ssl_upstream, - struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, - size_t zonelen, int qtype) + char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list) { struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq)); #ifdef UNBOUND_DEBUG - rbnode_t* ins; + rbnode_type* ins; #endif if(!sq) return NULL; @@ -1249,8 +1402,30 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, sq->nocaps = nocaps; sq->tcp_upstream = tcp_upstream; sq->ssl_upstream = ssl_upstream; + if(tls_auth_name) { + sq->tls_auth_name = strdup(tls_auth_name); + if(!sq->tls_auth_name) { + free(sq->zone); + free(sq->qbuf); + free(sq); + return NULL; + } + } else { + sq->tls_auth_name = NULL; + } memcpy(&sq->addr, addr, addrlen); sq->addrlen = addrlen; + sq->opt_list = NULL; + if(opt_list) { + sq->opt_list = edns_opt_copy_alloc(opt_list); + if(!sq->opt_list) { + free(sq->tls_auth_name); + free(sq->zone); + free(sq->qbuf); + free(sq); + return NULL; + } + } sq->outnet = outnet; sq->cblist = NULL; sq->pending = NULL; @@ -1309,7 +1484,7 @@ serviced_delete(struct serviced_query* sq) struct waiting_tcp* p = (struct waiting_tcp*) sq->pending; if(p->pkt == NULL) { - decomission_pending_tcp(sq->outnet, + decommission_pending_tcp(sq->outnet, (struct pending_tcp*)p->next_waiting); } else { waiting_list_remove(sq->outnet, p); @@ -1330,6 +1505,7 @@ serviced_perturb_qname(struct ub_randstate* rnd, uint8_t* qbuf, size_t len) long int random = 0; int bits = 0; log_assert(len >= 10 + 5 /* offset qname, root, qtype, qclass */); + (void)len; lablen = *d++; while(lablen) { while(lablen--) { @@ -1378,6 +1554,7 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) edns.edns_present = 1; edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; + edns.opt_list = sq->opt_list; if(sq->status == serviced_query_UDP_EDNS_FRAG) { if(addr_is_ip6(&sq->addr, sq->addrlen)) { if(EDNS_FRAG_SIZE_IP6 < EDNS_ADVERTISED_SIZE) @@ -1450,18 +1627,22 @@ serviced_udp_send(struct serviced_query* sq, sldns_buffer* buff) static int serviced_check_qname(sldns_buffer* pkt, uint8_t* qbuf, size_t qbuflen) { - uint8_t* d1 = sldns_buffer_at(pkt, 12); + uint8_t* d1 = sldns_buffer_begin(pkt)+12; uint8_t* d2 = qbuf+10; uint8_t len1, len2; int count = 0; + if(sldns_buffer_limit(pkt) < 12+1+4) /* packet too small for qname */ + return 0; log_assert(qbuflen >= 15 /* 10 header, root, type, class */); len1 = *d1++; len2 = *d2++; - if(sldns_buffer_limit(pkt) < 12+1+4) /* packet too small for qname */ - return 0; while(len1 != 0 || len2 != 0) { if(LABEL_IS_PTR(len1)) { - d1 = sldns_buffer_at(pkt, PTR_OFFSET(len1, *d1)); + /* check if we can read *d1 with compression ptr rest */ + if(d1 >= sldns_buffer_at(pkt, sldns_buffer_limit(pkt))) + return 0; + d1 = sldns_buffer_begin(pkt)+PTR_OFFSET(len1, *d1); + /* check if we can read the destination *d1 */ if(d1 >= sldns_buffer_at(pkt, sldns_buffer_limit(pkt))) return 0; len1 = *d1++; @@ -1475,6 +1656,9 @@ serviced_check_qname(sldns_buffer* pkt, uint8_t* qbuf, size_t qbuflen) return 0; if(len1 > LDNS_MAX_LABELLEN) return 0; + /* check len1 + 1(next length) are okay to read */ + if(d1+len1 >= sldns_buffer_at(pkt, sldns_buffer_limit(pkt))) + return 0; log_assert(len1 <= LDNS_MAX_LABELLEN); log_assert(len2 <= LDNS_MAX_LABELLEN); log_assert(len1 == len2 && len1 != 0); @@ -1499,7 +1683,7 @@ serviced_callbacks(struct serviced_query* sq, int error, struct comm_point* c, uint8_t *backup_p = NULL; size_t backlen = 0; #ifdef UNBOUND_DEBUG - rbnode_t* rem = + rbnode_type* rem = #else (void) #endif @@ -1511,7 +1695,10 @@ serviced_callbacks(struct serviced_query* sq, int error, struct comm_point* c, sq->to_be_deleted = 1; verbose(VERB_ALGO, "svcd callbacks start"); if(sq->outnet->use_caps_for_id && error == NETEVENT_NOERROR && c && - !sq->nocaps) { + !sq->nocaps && sq->qtype != LDNS_RR_TYPE_PTR) { + /* for type PTR do not check perturbed name in answer, + * compatibility with cisco dns guard boxes that mess up + * reverse queries 0x20 contents */ /* noerror and nxdomain must have a qname in reply */ if(sldns_buffer_read_u16_at(c->buffer, 4) == 0 && (LDNS_RCODE_WIRE(sldns_buffer_begin(c->buffer)) @@ -1625,7 +1812,12 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, } if(sq->tcp_upstream || sq->ssl_upstream) { struct timeval now = *sq->outnet->now_tv; - if(now.tv_sec > sq->last_sent_time.tv_sec || + if(error!=NETEVENT_NOERROR) { + if(!infra_rtt_update(sq->outnet->infra, &sq->addr, + sq->addrlen, sq->zone, sq->zonelen, sq->qtype, + -1, sq->last_rtt, (time_t)now.tv_sec)) + log_err("out of memory in TCP exponential backoff."); + } else if(now.tv_sec > sq->last_sent_time.tv_sec || (now.tv_sec == sq->last_sent_time.tv_sec && now.tv_usec > sq->last_sent_time.tv_usec)) { /* convert from microseconds to milliseconds */ @@ -1635,7 +1827,7 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, log_assert(roundtime >= 0); /* only store if less then AUTH_TIMEOUT seconds, it could be * huge due to system-hibernated and we woke up */ - if(roundtime < TCP_AUTH_QUERY_TIMEOUT*1000) { + if(roundtime < 60000) { if(!infra_rtt_update(sq->outnet->infra, &sq->addr, sq->addrlen, sq->zone, sq->zonelen, sq->qtype, roundtime, sq->last_rtt, (time_t)now.tv_sec)) @@ -1676,22 +1868,68 @@ serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer* buff) static int serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff) { - int vs, rtt; + int vs, rtt, timeout; uint8_t edns_lame_known; if(!infra_host(sq->outnet->infra, &sq->addr, sq->addrlen, sq->zone, sq->zonelen, *sq->outnet->now_secs, &vs, &edns_lame_known, &rtt)) return 0; + sq->last_rtt = rtt; if(vs != -1) sq->status = serviced_query_TCP_EDNS; else sq->status = serviced_query_TCP; serviced_encode(sq, buff, sq->status == serviced_query_TCP_EDNS); sq->last_sent_time = *sq->outnet->now_tv; - sq->pending = pending_tcp_query(sq, buff, TCP_AUTH_QUERY_TIMEOUT, + if(sq->tcp_upstream || sq->ssl_upstream) { + timeout = rtt; + if(rtt >= 376 && rtt < TCP_AUTH_QUERY_TIMEOUT) + timeout = TCP_AUTH_QUERY_TIMEOUT; + } else { + timeout = TCP_AUTH_QUERY_TIMEOUT; + } + sq->pending = pending_tcp_query(sq, buff, timeout, serviced_tcp_callback, sq); return sq->pending != NULL; } +/* see if packet is edns malformed; got zeroes at start. + * This is from servers that return malformed packets to EDNS0 queries, + * but they return good packets for nonEDNS0 queries. + * We try to detect their output; without resorting to a full parse or + * check for too many bytes after the end of the packet. */ +static int +packet_edns_malformed(struct sldns_buffer* buf, int qtype) +{ + size_t len; + if(sldns_buffer_limit(buf) < LDNS_HEADER_SIZE) + return 1; /* malformed */ + /* they have NOERROR rcode, 1 answer. */ + if(LDNS_RCODE_WIRE(sldns_buffer_begin(buf)) != LDNS_RCODE_NOERROR) + return 0; + /* one query (to skip) and answer records */ + if(LDNS_QDCOUNT(sldns_buffer_begin(buf)) != 1 || + LDNS_ANCOUNT(sldns_buffer_begin(buf)) == 0) + return 0; + /* skip qname */ + len = dname_valid(sldns_buffer_at(buf, LDNS_HEADER_SIZE), + sldns_buffer_limit(buf)-LDNS_HEADER_SIZE); + if(len == 0) + return 0; + if(len == 1 && qtype == 0) + return 0; /* we asked for '.' and type 0 */ + /* and then 4 bytes (type and class of query) */ + if(sldns_buffer_limit(buf) < LDNS_HEADER_SIZE + len + 4 + 3) + return 0; + + /* and start with 11 zeroes as the answer RR */ + /* so check the qtype of the answer record, qname=0, type=0 */ + if(sldns_buffer_at(buf, LDNS_HEADER_SIZE+len+4)[0] == 0 && + sldns_buffer_at(buf, LDNS_HEADER_SIZE+len+4)[1] == 0 && + sldns_buffer_at(buf, LDNS_HEADER_SIZE+len+4)[2] == 0) + return 1; + return 0; +} + int serviced_udp_callback(struct comm_point* c, void* arg, int error, struct comm_reply* rep) @@ -1750,7 +1988,7 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, return 0; } #ifdef USE_DNSTAP - if(outnet->dtenv && + if(error == NETEVENT_NOERROR && outnet->dtenv && (outnet->dtenv->log_resolver_response_messages || outnet->dtenv->log_forwarder_response_messages)) dt_msg_send_outside_response(outnet->dtenv, &sq->addr, c->type, @@ -1762,7 +2000,9 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, ||sq->status == serviced_query_UDP_EDNS_FRAG) && (LDNS_RCODE_WIRE(sldns_buffer_begin(c->buffer)) == LDNS_RCODE_FORMERR || LDNS_RCODE_WIRE( - sldns_buffer_begin(c->buffer)) == LDNS_RCODE_NOTIMPL)) { + sldns_buffer_begin(c->buffer)) == LDNS_RCODE_NOTIMPL + || packet_edns_malformed(c->buffer, sq->qtype) + )) { /* try to get an answer by falling back without EDNS */ verbose(VERB_ALGO, "serviced query: attempt without EDNS"); sq->status = serviced_query_UDP_EDNS_fallback; @@ -1855,17 +2095,22 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, struct serviced_query* outnet_serviced_query(struct outside_network* outnet, - uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, int nocaps, - int tcp_upstream, int ssl_upstream, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, - comm_point_callback_t* callback, void* callback_arg, - sldns_buffer* buff) + struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, + int nocaps, int tcp_upstream, int ssl_upstream, char* tls_auth_name, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, struct module_qstate* qstate, + comm_point_callback_type* callback, void* callback_arg, sldns_buffer* buff, + struct module_env* env) { struct serviced_query* sq; struct service_callback* cb; - serviced_gen_query(buff, qname, qnamelen, qtype, qclass, flags); - sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen); + if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, + qstate, qstate->region)) + return NULL; + serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, + qinfo->qclass, flags); + sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen, + qstate->edns_opts_back_out); /* duplicate entries are included in the callback list, because * there is a counterpart registration by our caller that needs to * be doubly-removed (with callbacks perhaps). */ @@ -1874,8 +2119,9 @@ outnet_serviced_query(struct outside_network* outnet, if(!sq) { /* make new serviced query entry */ sq = serviced_create(outnet, buff, dnssec, want_dnssec, nocaps, - tcp_upstream, ssl_upstream, addr, addrlen, zone, - zonelen, (int)qtype); + tcp_upstream, ssl_upstream, tls_auth_name, addr, + addrlen, zone, zonelen, (int)qinfo->qtype, + qstate->edns_opts_back_out); if(!sq) { free(cb); return NULL; @@ -1932,17 +2178,220 @@ void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg) callback_list_remove(sq, cb_arg); /* if callbacks() routine scheduled deletion, let it do that */ if(!sq->cblist && !sq->to_be_deleted) { -#ifdef UNBOUND_DEBUG - rbnode_t* rem = -#else - (void) -#endif - rbtree_delete(sq->outnet->serviced, sq); - log_assert(rem); /* should be present */ + (void)rbtree_delete(sq->outnet->serviced, sq); serviced_delete(sq); } } +/** create fd to send to this destination */ +static int +fd_for_dest(struct outside_network* outnet, struct sockaddr_storage* to_addr, + socklen_t to_addrlen) +{ + struct sockaddr_storage* addr; + socklen_t addrlen; + int i; + int try; + + /* select interface */ + if(addr_is_ip6(to_addr, to_addrlen)) { + if(outnet->num_ip6 == 0) { + char to[64]; + addr_to_str(to_addr, to_addrlen, to, sizeof(to)); + verbose(VERB_QUERY, "need ipv6 to send, but no ipv6 outgoing interfaces, for %s", to); + return -1; + } + i = ub_random_max(outnet->rnd, outnet->num_ip6); + addr = &outnet->ip6_ifs[i].addr; + addrlen = outnet->ip6_ifs[i].addrlen; + } else { + if(outnet->num_ip4 == 0) { + char to[64]; + addr_to_str(to_addr, to_addrlen, to, sizeof(to)); + verbose(VERB_QUERY, "need ipv4 to send, but no ipv4 outgoing interfaces, for %s", to); + return -1; + } + i = ub_random_max(outnet->rnd, outnet->num_ip4); + addr = &outnet->ip4_ifs[i].addr; + addrlen = outnet->ip4_ifs[i].addrlen; + } + + /* create fd */ + for(try = 0; try<1000; try++) { + int freebind = 0; + int noproto = 0; + int inuse = 0; + int port = ub_random(outnet->rnd)&0xffff; + int fd = -1; + if(addr_is_ip6(to_addr, to_addrlen)) { + struct sockaddr_in6 sa = *(struct sockaddr_in6*)addr; + sa.sin6_port = (in_port_t)htons((uint16_t)port); + fd = create_udp_sock(AF_INET6, SOCK_DGRAM, + (struct sockaddr*)&sa, addrlen, 1, &inuse, &noproto, + 0, 0, 0, NULL, 0, freebind, 0); + } else { + struct sockaddr_in* sa = (struct sockaddr_in*)addr; + sa->sin_port = (in_port_t)htons((uint16_t)port); + fd = create_udp_sock(AF_INET, SOCK_DGRAM, + (struct sockaddr*)addr, addrlen, 1, &inuse, &noproto, + 0, 0, 0, NULL, 0, freebind, 0); + } + if(fd != -1) { + return fd; + } + if(!inuse) { + return -1; + } + } + /* too many tries */ + log_err("cannot send probe, ports are in use"); + return -1; +} + +struct comm_point* +outnet_comm_point_for_udp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen) +{ + struct comm_point* cp; + int fd = fd_for_dest(outnet, to_addr, to_addrlen); + if(fd == -1) { + return NULL; + } + cp = comm_point_create_udp(outnet->base, fd, outnet->udp_buff, + cb, cb_arg); + if(!cp) { + log_err("malloc failure"); + close(fd); + return NULL; + } + return cp; +} + +struct comm_point* +outnet_comm_point_for_tcp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, + sldns_buffer* query, int timeout) +{ + struct comm_point* cp; + int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss); + if(fd == -1) { + return 0; + } + fd_set_nonblock(fd); + if(!outnet_tcp_connect(fd, to_addr, to_addrlen)) { + /* outnet_tcp_connect has closed fd on error for us */ + return 0; + } + cp = comm_point_create_tcp_out(outnet->base, 65552, cb, cb_arg); + if(!cp) { + log_err("malloc failure"); + close(fd); + return 0; + } + cp->repinfo.addrlen = to_addrlen; + memcpy(&cp->repinfo.addr, to_addr, to_addrlen); + /* set timeout on TCP connection */ + comm_point_start_listening(cp, fd, timeout); + /* copy scratch buffer to cp->buffer */ + sldns_buffer_copy(cp->buffer, query); + return cp; +} + +/** setup http request headers in buffer for sending query to destination */ +static int +setup_http_request(sldns_buffer* buf, char* host, char* path) +{ + sldns_buffer_clear(buf); + sldns_buffer_printf(buf, "GET /%s HTTP/1.1\r\n", path); + sldns_buffer_printf(buf, "Host: %s\r\n", host); + sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", + PACKAGE_VERSION); + /* We do not really do multiple queries per connection, + * but this header setting is also not needed. + * sldns_buffer_printf(buf, "Connection: close\r\n") */ + sldns_buffer_printf(buf, "\r\n"); + if(sldns_buffer_position(buf)+10 > sldns_buffer_capacity(buf)) + return 0; /* somehow buffer too short, but it is about 60K + and the request is only a couple bytes long. */ + sldns_buffer_flip(buf); + return 1; +} + +struct comm_point* +outnet_comm_point_for_http(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, + int ssl, char* host, char* path) +{ + /* cp calls cb with err=NETEVENT_DONE when transfer is done */ + struct comm_point* cp; + int fd = outnet_get_tcp_fd(to_addr, to_addrlen, outnet->tcp_mss); + if(fd == -1) { + return 0; + } + fd_set_nonblock(fd); + if(!outnet_tcp_connect(fd, to_addr, to_addrlen)) { + /* outnet_tcp_connect has closed fd on error for us */ + return 0; + } + cp = comm_point_create_http_out(outnet->base, 65552, cb, cb_arg, + outnet->udp_buff); + if(!cp) { + log_err("malloc failure"); + close(fd); + return 0; + } + cp->repinfo.addrlen = to_addrlen; + memcpy(&cp->repinfo.addr, to_addr, to_addrlen); + + /* setup for SSL (if needed) */ + if(ssl) { + cp->ssl = outgoing_ssl_fd(outnet->sslctx, fd); + if(!cp->ssl) { + log_err("cannot setup https"); + comm_point_delete(cp); + return NULL; + } +#ifdef USE_WINSOCK + comm_point_tcp_win_bio_cb(cp, cp->ssl); +#endif + cp->ssl_shake_state = comm_ssl_shake_write; + /* https verification */ +#ifdef HAVE_SSL_SET1_HOST + if((SSL_CTX_get_verify_mode(outnet->sslctx)&SSL_VERIFY_PEER)) { + /* because we set SSL_VERIFY_PEER, in netevent in + * ssl_handshake, it'll check if the certificate + * verification has succeeded */ + /* SSL_VERIFY_PEER is set on the sslctx */ + /* and the certificates to verify with are loaded into + * it with SSL_load_verify_locations or + * SSL_CTX_set_default_verify_paths */ + /* setting the hostname makes openssl verify the + * host name in the x509 certificate in the + * SSL connection*/ + if(!SSL_set1_host(cp->ssl, host)) { + log_err("SSL_set1_host failed"); + comm_point_delete(cp); + return NULL; + } + } +#endif /* HAVE_SSL_SET1_HOST */ + } + + /* set timeout on TCP connection */ + comm_point_start_listening(cp, fd, timeout); + + /* setup http request in cp->buffer */ + if(!setup_http_request(cp->buffer, host, path)) { + log_err("error setting up http request"); + comm_point_delete(cp); + return NULL; + } + return cp; +} + /** get memory used by waiting tcp entry (in use or not) */ static size_t waiting_tcp_get_mem(struct waiting_tcp* w) diff --git a/external/unbound/services/outside_network.h b/external/unbound/services/outside_network.h index 9959676..01a3074 100644 --- a/external/unbound/services/outside_network.h +++ b/external/unbound/services/outside_network.h @@ -58,6 +58,10 @@ struct port_if; struct sldns_buffer; struct serviced_query; struct dt_env; +struct edns_option; +struct module_env; +struct module_qstate; +struct query_info; /** * Send queries to outside servers and wait for answers from servers. @@ -119,9 +123,9 @@ struct outside_network { struct pending* udp_wait_last; /** pending udp answers. sorted by id, addr */ - rbtree_t* pending; + rbtree_type* pending; /** serviced queries, sorted by qbuf, addr, dnssec */ - rbtree_t* serviced; + rbtree_type* serviced; /** host cache, pointer but not owned by outnet. */ struct infra_cache* infra; /** where to get random numbers */ @@ -132,6 +136,8 @@ struct outside_network { /** dnstap environment */ struct dt_env* dtenv; #endif + /** maximum segment size of tcp socket */ + int tcp_mss; /** * Array of tcp pending used for outgoing TCP connections. @@ -162,6 +168,10 @@ struct port_if { /** length of addr field */ socklen_t addrlen; + /** prefix length of network address (in bits), for randomisation. + * if 0, no randomisation. */ + int pfxlen; + /** the available ports array. These are unused. * Only the first total-inuse part is filled. */ int* avail_ports; @@ -200,7 +210,7 @@ struct port_comm { */ struct pending { /** redblacktree entry, key is the pending struct(id, addr). */ - rbnode_t node; + rbnode_type node; /** the ID for the query. int so that a value out of range can * be used to signify a pending that is for certain not present in * the rbtree. (and for which deletion is safe). */ @@ -214,7 +224,7 @@ struct pending { /** timeout event */ struct comm_timer* timer; /** callback for the timeout, error or reply to the message */ - comm_point_callback_t* cb; + comm_point_callback_type* cb; /** callback user argument */ void* cb_arg; /** the outside network it is part of */ @@ -275,11 +285,13 @@ struct waiting_tcp { /** length of query packet. */ size_t pkt_len; /** callback for the timeout, error or reply to the message */ - comm_point_callback_t* cb; + comm_point_callback_type* cb; /** callback user argument */ void* cb_arg; /** if it uses ssl upstream */ int ssl_upstream; + /** ref to the tls_auth_name from the serviced_query */ + char* tls_auth_name; }; /** @@ -289,7 +301,7 @@ struct service_callback { /** next in callback list */ struct service_callback* next; /** callback function */ - comm_point_callback_t* cb; + comm_point_callback_type* cb; /** user argument for callback function */ void* cb_arg; }; @@ -307,7 +319,7 @@ struct service_callback { */ struct serviced_query { /** The rbtree node, key is this record */ - rbnode_t node; + rbnode_type node; /** The query that needs to be answered. Starts with flags u16, * then qdcount, ..., including qname, qtype, qclass. Does not include * EDNS record. */ @@ -322,6 +334,9 @@ struct serviced_query { int nocaps; /** tcp upstream used, use tcp, or ssl_upstream for SSL */ int tcp_upstream, ssl_upstream; + /** the name of the tls authentication name, eg. 'ns.example.com' + * or NULL */ + char* tls_auth_name; /** where to send it */ struct sockaddr_storage addr; /** length of addr field in use. */ @@ -361,10 +376,12 @@ struct serviced_query { int retry; /** time last UDP was sent */ struct timeval last_sent_time; - /** rtt of last (UDP) message */ + /** rtt of last message */ int last_rtt; /** do we know edns probe status already, for UDP_EDNS queries */ int edns_lame_known; + /** edns options to use for sending upstream packet */ + struct edns_option* opt_list; /** outside network this is part of */ struct outside_network* outnet; /** list of interested parties that need callback on results. */ @@ -392,6 +409,7 @@ struct serviced_query { * @param unwanted_threshold: when to take defensive action. * @param unwanted_action: the action to take. * @param unwanted_param: user parameter to action. + * @param tcp_mss: maximum segment size of tcp socket. * @param do_udp: if udp is done. * @param sslctx: context to create outgoing connections with (if enabled). * @param delayclose: if not 0, udp sockets are delayed before timeout closure. @@ -403,7 +421,7 @@ struct outside_network* outside_network_create(struct comm_base* base, size_t bufsize, size_t num_ports, char** ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra, struct ub_randstate* rnd, int use_caps_for_id, int* availports, - int numavailports, size_t unwanted_threshold, + int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, struct dt_env *dtenv); @@ -430,7 +448,7 @@ void outside_network_quit_prepare(struct outside_network* outnet); * @return: NULL on error for malloc or socket. Else the pending query object. */ struct pending* pending_udp_query(struct serviced_query* sq, - struct sldns_buffer* packet, int timeout, comm_point_callback_t* callback, + struct sldns_buffer* packet, int timeout, comm_point_callback_type* callback, void* callback_arg); /** @@ -438,7 +456,7 @@ struct pending* pending_udp_query(struct serviced_query* sq, * checks id. * @param sq: serviced query. * @param packet: wireformat query to send to destination. copied from. - * @param timeout: in seconds from now. + * @param timeout: in milliseconds from now. * Timer starts running now. Timer may expire if all buffers are used, * without any query been sent to the server yet. * @param callback: function to call on error, timeout or reply. @@ -446,7 +464,7 @@ struct pending* pending_udp_query(struct serviced_query* sq, * @return: false on error for malloc or socket. Else the pending TCP object. */ struct waiting_tcp* pending_tcp_query(struct serviced_query* sq, - struct sldns_buffer* packet, int timeout, comm_point_callback_t* callback, + struct sldns_buffer* packet, int timeout, comm_point_callback_type* callback, void* callback_arg); /** @@ -461,10 +479,7 @@ void pending_delete(struct outside_network* outnet, struct pending* p); * Perform a serviced query to the authoritative servers. * Duplicate efforts are detected, and EDNS, TCP and UDP retry is performed. * @param outnet: outside network, with rbtree of serviced queries. - * @param qname: what qname to query. - * @param qnamelen: length of qname in octets including 0 root label. - * @param qtype: rrset type to query (host format) - * @param qclass: query class. (host format) + * @param qinfo: query info. * @param flags: flags u16 (host format), includes opcode, CD bit. * @param dnssec: if set, DO bit is set in EDNS queries. * If the value includes BIT_CD, CD bit is set when in EDNS queries. @@ -474,25 +489,30 @@ void pending_delete(struct outside_network* outnet, struct pending* p); * @param nocaps: ignore use_caps_for_id and use unperturbed qname. * @param tcp_upstream: use TCP for upstream queries. * @param ssl_upstream: use SSL for upstream queries. - * @param callback: callback function. - * @param callback_arg: user argument to callback function. + * @param tls_auth_name: when ssl_upstream is true, use this name to check + * the server's peer certificate. * @param addr: to which server to send the query. * @param addrlen: length of addr. * @param zone: name of the zone of the delegation point. wireformat dname. This is the delegation point name for which the server is deemed authoritative. * @param zonelen: length of zone. + * @param qstate: module qstate. Mainly for inspecting the available + * edns_opts_lists. + * @param callback: callback function. + * @param callback_arg: user argument to callback function. * @param buff: scratch buffer to create query contents in. Empty on exit. + * @param env: the module environment. * @return 0 on error, or pointer to serviced query that is used to answer * this serviced query may be shared with other callbacks as well. */ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, - uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, int nocaps, - int tcp_upstream, int ssl_upstream, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, - comm_point_callback_t* callback, void* callback_arg, - struct sldns_buffer* buff); + struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, + int nocaps, int tcp_upstream, int ssl_upstream, char* tls_auth_name, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, struct module_qstate* qstate, + comm_point_callback_type* callback, void* callback_arg, + struct sldns_buffer* buff, struct module_env* env); /** * Remove service query callback. @@ -520,6 +540,70 @@ size_t outnet_get_mem(struct outside_network* outnet); */ size_t serviced_get_mem(struct serviced_query* sq); +/** get TCP file descriptor for address, returns -1 on failure, + * tcp_mss is 0 or maxseg size to set for TCP packets. */ +int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss); + +/** + * Create udp commpoint suitable for sending packets to the destination. + * @param outnet: outside_network with the comm_base it is attached to, + * with the outgoing interfaces chosen from, and rnd gen for random. + * @param cb: callback function for the commpoint. + * @param cb_arg: callback argument for cb. + * @param to_addr: intended destination. + * @param to_addrlen: length of to_addr. + * @return commpoint that you can comm_point_send_udp_msg with, or NULL. + */ +struct comm_point* outnet_comm_point_for_udp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen); + +/** + * Create tcp commpoint suitable for communication to the destination. + * It also performs connect() to the to_addr. + * @param outnet: outside_network with the comm_base it is attached to, + * and the tcp_mss. + * @param cb: callback function for the commpoint. + * @param cb_arg: callback argument for cb. + * @param to_addr: intended destination. + * @param to_addrlen: length of to_addr. + * @param query: initial packet to send writing, in buffer. It is copied + * to the commpoint buffer that is created. + * @param timeout: timeout for the TCP connection. + * timeout in milliseconds, or -1 for no (change to the) timeout. + * So seconds*1000. + * @return tcp_out commpoint, or NULL. + */ +struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, + struct sldns_buffer* query, int timeout); + +/** + * Create http commpoint suitable for communication to the destination. + * Creates the http request buffer. It also performs connect() to the to_addr. + * @param outnet: outside_network with the comm_base it is attached to, + * and the tcp_mss. + * @param cb: callback function for the commpoint. + * @param cb_arg: callback argument for cb. + * @param to_addr: intended destination. + * @param to_addrlen: length of to_addr. + * @param timeout: timeout for the TCP connection. + * timeout in milliseconds, or -1 for no (change to the) timeout. + * So seconds*1000. + * @param ssl: set to true for https. + * @param host: hostname to use for the destination. part of http request. + * @param path: pathname to lookup, eg. name of the file on the destination. + * @return http_out commpoint, or NULL. + */ +struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, + int ssl, char* host, char* path); + +/** connect tcp connection to addr, 0 on failure */ +int outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen); + /** callback for incoming udp answers from the network */ int outnet_udp_cb(struct comm_point* c, void* arg, int error, struct comm_reply *reply_info); diff --git a/external/unbound/services/view.c b/external/unbound/services/view.c new file mode 100644 index 0000000..c6709e5 --- /dev/null +++ b/external/unbound/services/view.c @@ -0,0 +1,250 @@ +/* + * services/view.c - named views containing local zones authority service. + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions to enable named views that can hold local zone + * authority service. + */ +#include "config.h" +#include "services/view.h" +#include "services/localzone.h" +#include "util/config_file.h" + +int +view_cmp(const void* v1, const void* v2) +{ + struct view* a = (struct view*)v1; + struct view* b = (struct view*)v2; + + return strcmp(a->name, b->name); +} + +struct views* +views_create(void) +{ + struct views* v = (struct views*)calloc(1, + sizeof(*v)); + if(!v) + return NULL; + rbtree_init(&v->vtree, &view_cmp); + lock_rw_init(&v->lock); + lock_protect(&v->lock, &v->vtree, sizeof(v->vtree)); + return v; +} + +/** This prototype is defined in in respip.h, but we want to avoid + * unnecessary dependencies */ +void respip_set_delete(struct respip_set *set); + +void +view_delete(struct view* v) +{ + if(!v) + return; + lock_rw_destroy(&v->lock); + local_zones_delete(v->local_zones); + respip_set_delete(v->respip_set); + free(v->name); + free(v); +} + +static void +delviewnode(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct view* v = (struct view*)n; + view_delete(v); +} + +void +views_delete(struct views* v) +{ + if(!v) + return; + lock_rw_destroy(&v->lock); + traverse_postorder(&v->vtree, delviewnode, NULL); + free(v); +} + +/** create a new view */ +static struct view* +view_create(char* name) +{ + struct view* v = (struct view*)calloc(1, sizeof(*v)); + if(!v) + return NULL; + v->node.key = v; + if(!(v->name = strdup(name))) { + free(v); + return NULL; + } + lock_rw_init(&v->lock); + lock_protect(&v->lock, &v->name, sizeof(*v)-sizeof(rbnode_type)); + return v; +} + +/** enter a new view returns with WRlock */ +static struct view* +views_enter_view_name(struct views* vs, char* name) +{ + struct view* v = view_create(name); + if(!v) { + log_err("out of memory"); + return NULL; + } + + /* add to rbtree */ + lock_rw_wrlock(&vs->lock); + lock_rw_wrlock(&v->lock); + if(!rbtree_insert(&vs->vtree, &v->node)) { + log_warn("duplicate view: %s", name); + lock_rw_unlock(&v->lock); + view_delete(v); + lock_rw_unlock(&vs->lock); + return NULL; + } + lock_rw_unlock(&vs->lock); + return v; +} + +int +views_apply_cfg(struct views* vs, struct config_file* cfg) +{ + struct config_view* cv; + struct view* v; + struct config_file lz_cfg; + /* Check existence of name in first view (last in config). Rest of + * views are already checked when parsing config. */ + if(cfg->views && !cfg->views->name) { + log_err("view without a name"); + return 0; + } + for(cv = cfg->views; cv; cv = cv->next) { + /* create and enter view */ + if(!(v = views_enter_view_name(vs, cv->name))) + return 0; + v->isfirst = cv->isfirst; + if(cv->local_zones || cv->local_data) { + if(!(v->local_zones = local_zones_create())){ + lock_rw_unlock(&v->lock); + return 0; + } + memset(&lz_cfg, 0, sizeof(lz_cfg)); + lz_cfg.local_zones = cv->local_zones; + lz_cfg.local_data = cv->local_data; + lz_cfg.local_zones_nodefault = + cv->local_zones_nodefault; + if(v->isfirst) { + /* Do not add defaults to view-specific + * local-zone when global local zone will be + * used. */ + struct config_strlist* nd; + lz_cfg.local_zones_disable_default = 1; + /* Add nodefault zones to list of zones to add, + * so they will be used as if they are + * configured as type transparent */ + for(nd = cv->local_zones_nodefault; nd; + nd = nd->next) { + char* nd_str, *nd_type; + nd_str = strdup(nd->str); + if(!nd_str) { + log_err("out of memory"); + lock_rw_unlock(&v->lock); + return 0; + } + nd_type = strdup("nodefault"); + if(!nd_type) { + log_err("out of memory"); + free(nd_str); + lock_rw_unlock(&v->lock); + return 0; + } + if(!cfg_str2list_insert( + &lz_cfg.local_zones, nd_str, + nd_type)) { + log_err("failed to insert " + "default zones into " + "local-zone list"); + free(nd_str); + free(nd_type); + lock_rw_unlock(&v->lock); + return 0; + } + } + } + if(!local_zones_apply_cfg(v->local_zones, &lz_cfg)){ + lock_rw_unlock(&v->lock); + return 0; + } + /* local_zones, local_zones_nodefault and local_data + * are free'd from config_view by local_zones_apply_cfg. + * Set pointers to NULL. */ + cv->local_zones = NULL; + cv->local_data = NULL; + cv->local_zones_nodefault = NULL; + } + lock_rw_unlock(&v->lock); + } + return 1; +} + +/** find a view by name */ +struct view* +views_find_view(struct views* vs, const char* name, int write) +{ + struct view* v; + struct view key; + key.node.key = &v; + key.name = (char *)name; + lock_rw_rdlock(&vs->lock); + if(!(v = (struct view*)rbtree_search(&vs->vtree, &key.node))) { + lock_rw_unlock(&vs->lock); + return 0; + } + if(write) { + lock_rw_wrlock(&v->lock); + } else { + lock_rw_rdlock(&v->lock); + } + lock_rw_unlock(&vs->lock); + return v; +} + +void views_print(struct views* v) +{ + /* TODO implement print */ + (void)v; +} diff --git a/external/unbound/services/view.h b/external/unbound/services/view.h new file mode 100644 index 0000000..1777810 --- /dev/null +++ b/external/unbound/services/view.h @@ -0,0 +1,137 @@ +/* + * services/view.h - named views containing local zones authority service. + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions to enable named views that can hold local zone + * authority service. + */ + +#ifndef SERVICES_VIEW_H +#define SERVICES_VIEW_H +#include "util/rbtree.h" +#include "util/locks.h" +struct regional; +struct config_file; +struct config_view; +struct respip_set; + + +/** + * Views storage, shared. + */ +struct views { + /** lock on the view tree */ + lock_rw_type lock; + /** rbtree of struct view */ + rbtree_type vtree; +}; + +/** + * View. Named structure holding local authority zones. + */ +struct view { + /** rbtree node, key is name */ + rbnode_type node; + /** view name. + * Has to be right after rbnode_t due to pointer arithmetic in + * view_create's lock protect */ + char* name; + /** view specific local authority zones */ + struct local_zones* local_zones; + /** response-ip configuration data for this view */ + struct respip_set* respip_set; + /** Fallback to global local_zones when there is no match in the view + * specific tree. 1 for yes, 0 for no */ + int isfirst; + /** lock on the data in the structure + * For the node and name you need to also hold the views_tree lock to + * change them. */ + lock_rw_type lock; +}; + + +/** + * Create views storage + * @return new struct or NULL on error. + */ +struct views* views_create(void); + +/** + * Delete views storage + * @param v: views to delete. + */ +void views_delete(struct views* v); + +/** + * Apply config settings; + * Takes care of locking. + * @param v: view is set up. + * @param cfg: config data. + * @return false on error. + */ +int views_apply_cfg(struct views* v, struct config_file* cfg); + +/** + * Compare two view entries in rbtree. Sort canonical. + * @param v1: view 1 + * @param v2: view 2 + * @return: negative, positive or 0 comparison value. + */ +int view_cmp(const void* v1, const void* v2); + +/** + * Delete one view + * @param v: view to delete. + */ +void view_delete(struct view* v); + +/** + * Debug helper. Print all views + * Takes care of locking. + * @param v: the views tree + */ +void views_print(struct views* v); + +/* Find a view by name. + * @param vs: views + * @param name: name of the view we are looking for + * @param write: 1 for obtaining write lock on found view, 0 for read lock + * @return: locked view or NULL. + */ +struct view* views_find_view(struct views* vs, const char* name, int write); + +#endif /* SERVICES_VIEW_H */ diff --git a/external/unbound/sldns/keyraw.c b/external/unbound/sldns/keyraw.c index 59e8000..2ec225b 100644 --- a/external/unbound/sldns/keyraw.c +++ b/external/unbound/sldns/keyraw.c @@ -23,6 +23,15 @@ #ifdef HAVE_OPENSSL_ENGINE_H # include #endif +#ifdef HAVE_OPENSSL_BN_H +#include +#endif +#ifdef HAVE_OPENSSL_RSA_H +#include +#endif +#ifdef HAVE_OPENSSL_DSA_H +#include +#endif #endif /* HAVE_SSL */ size_t @@ -80,6 +89,14 @@ sldns_rr_dnskey_key_size_raw(const unsigned char* keydata, return 256; case LDNS_ECDSAP384SHA384: return 384; +#endif +#ifdef USE_ED25519 + case LDNS_ED25519: + return 256; +#endif +#ifdef USE_ED448 + case LDNS_ED448: + return 456; #endif default: return 0; @@ -206,7 +223,6 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) offset += length; Y = BN_bin2bn(key+offset, (int)length, NULL); - offset += length; /* create the key and set its properties */ if(!Q || !P || !G || !Y || !(dsa = DSA_new())) { @@ -216,6 +232,7 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) BN_free(Y); return NULL; } +#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) #ifndef S_SPLINT_S dsa->p = P; dsa->q = Q; @@ -223,6 +240,25 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) dsa->pub_key = Y; #endif /* splint */ +#else /* OPENSSL_VERSION_NUMBER */ + if (!DSA_set0_pqg(dsa, P, Q, G)) { + /* QPG not yet attached, need to free */ + BN_free(Q); + BN_free(P); + BN_free(G); + + DSA_free(dsa); + BN_free(Y); + return NULL; + } + if (!DSA_set0_key(dsa, Y, NULL)) { + /* QPG attached, cleaned up by DSA_fre() */ + DSA_free(dsa); + BN_free(Y); + return NULL; + } +#endif + return dsa; } @@ -274,11 +310,21 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) BN_free(modulus); return NULL; } +#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) #ifndef S_SPLINT_S rsa->n = modulus; rsa->e = exponent; #endif /* splint */ +#else /* OPENSSL_VERSION_NUMBER */ + if (!RSA_set0_key(rsa, modulus, exponent, NULL)) { + BN_free(exponent); + BN_free(modulus); + RSA_free(rsa); + return NULL; + } +#endif + return rsa; } @@ -350,6 +396,48 @@ sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) } #endif /* USE_ECDSA */ +#ifdef USE_ED25519 +EVP_PKEY* +sldns_ed255192pkey_raw(const unsigned char* key, size_t keylen) +{ + /* ASN1 for ED25519 is 302a300506032b6570032100 <32byteskey> */ + uint8_t pre[] = {0x30, 0x2a, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, + 0x70, 0x03, 0x21, 0x00}; + int pre_len = 12; + uint8_t buf[256]; + EVP_PKEY *evp_key; + /* pp gets modified by d2i() */ + const unsigned char* pp = (unsigned char*)buf; + if(keylen != 32 || keylen + pre_len > sizeof(buf)) + return NULL; /* wrong length */ + memmove(buf, pre, pre_len); + memmove(buf+pre_len, key, keylen); + evp_key = d2i_PUBKEY(NULL, &pp, (int)(pre_len+keylen)); + return evp_key; +} +#endif /* USE_ED25519 */ + +#ifdef USE_ED448 +EVP_PKEY* +sldns_ed4482pkey_raw(const unsigned char* key, size_t keylen) +{ + /* ASN1 for ED448 is 3043300506032b6571033a00 <57byteskey> */ + uint8_t pre[] = {0x30, 0x43, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, + 0x71, 0x03, 0x3a, 0x00}; + int pre_len = 12; + uint8_t buf[256]; + EVP_PKEY *evp_key; + /* pp gets modified by d2i() */ + const unsigned char* pp = (unsigned char*)buf; + if(keylen != 57 || keylen + pre_len > sizeof(buf)) + return NULL; /* wrong length */ + memmove(buf, pre, pre_len); + memmove(buf+pre_len, key, keylen); + evp_key = d2i_PUBKEY(NULL, &pp, (int)(pre_len+keylen)); + return evp_key; +} +#endif /* USE_ED448 */ + int sldns_digest_evp(unsigned char* data, unsigned int len, unsigned char* dest, const EVP_MD* md) diff --git a/external/unbound/sldns/keyraw.h b/external/unbound/sldns/keyraw.h index 8abe235..989b02c 100644 --- a/external/unbound/sldns/keyraw.h +++ b/external/unbound/sldns/keyraw.h @@ -92,6 +92,24 @@ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); */ RSA *sldns_key_buf2rsa_raw(unsigned char* key, size_t len); +/** + * Converts a holding buffer with key material to EVP PKEY in openssl. + * Only available if ldns was compiled with ED25519. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY* sldns_ed255192pkey_raw(const unsigned char* key, size_t len); + +/** + * Converts a holding buffer with key material to EVP PKEY in openssl. + * Only available if ldns was compiled with ED448. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY* sldns_ed4482pkey_raw(const unsigned char* key, size_t len); + /** * Utility function to calculate hash using generic EVP_MD pointer. * \param[in] data the data to hash. diff --git a/external/unbound/sldns/parse.c b/external/unbound/sldns/parse.c index 35dee71..b62c405 100644 --- a/external/unbound/sldns/parse.c +++ b/external/unbound/sldns/parse.c @@ -33,14 +33,14 @@ ssize_t sldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *line_nr) { int c, prev_c; - int p; /* 0 -> no parenthese seen, >0 nr of ( seen */ + int p; /* 0 -> no parentheses seen, >0 nr of ( seen */ int com, quoted; char *t; size_t i; const char *d; const char *del; - /* standard delimeters */ + /* standard delimiters */ if (!delim) { /* from isspace(3) */ del = LDNS_PARSE_NORMAL; @@ -120,6 +120,10 @@ sldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *l if (line_nr) { *line_nr = *line_nr + 1; } + if (limit > 0 && (i >= limit || (size_t)(t-token) >= limit)) { + *t = '\0'; + return -1; + } *t++ = ' '; prev_c = c; continue; @@ -240,7 +244,7 @@ sldns_bget_token_par(sldns_buffer *b, char *token, const char *delim, size_t limit, int* par, const char* skipw) { int c, lc; - int p; /* 0 -> no parenthese seen, >0 nr of ( seen */ + int p; /* 0 -> no parentheses seen, >0 nr of ( seen */ int com, quoted; char *t; size_t i; diff --git a/external/unbound/sldns/parse.h b/external/unbound/sldns/parse.h index 7b7456d..44236bf 100644 --- a/external/unbound/sldns/parse.h +++ b/external/unbound/sldns/parse.h @@ -103,9 +103,9 @@ ssize_t sldns_bget_token(struct sldns_buffer *b, char *token, const char *delim, * after the keyword + k_del until we hit d_del * \param[in] f file pointer to read from * \param[in] keyword keyword to look for - * \param[in] k_del keyword delimeter + * \param[in] k_del keyword delimiter * \param[out] data the data found - * \param[in] d_del the data delimeter + * \param[in] d_del the data delimiter * \param[in] data_limit maximum size the the data buffer * \return the number of character read */ @@ -116,9 +116,9 @@ ssize_t sldns_fget_keyword_data(FILE *f, const char *keyword, const char *k_del, * after the keyword + k_del until we hit d_del * \param[in] f file pointer to read from * \param[in] keyword keyword to look for - * \param[in] k_del keyword delimeter + * \param[in] k_del keyword delimiter * \param[out] data the data found - * \param[in] d_del the data delimeter + * \param[in] d_del the data delimiter * \param[in] data_limit maximum size the the data buffer * \param[in] line_nr pointer to an integer containing the current line number (for debugging purposes) @@ -131,9 +131,9 @@ ssize_t sldns_fget_keyword_data_l(FILE *f, const char *keyword, const char *k_de * after the keyword + k_del until we hit d_del * \param[in] b buffer pointer to read from * \param[in] keyword keyword to look for - * \param[in] k_del keyword delimeter + * \param[in] k_del keyword delimiter * \param[out] data the data found - * \param[in] d_del the data delimeter + * \param[in] d_del the data delimiter * \param[in] data_limit maximum size the the data buffer * \return the number of character read */ diff --git a/external/unbound/sldns/parseutil.c b/external/unbound/sldns/parseutil.c index 2a2ebbb..82dbc0f 100644 --- a/external/unbound/sldns/parseutil.c +++ b/external/unbound/sldns/parseutil.c @@ -165,20 +165,20 @@ sldns_gmtime64_r(int64_t clock, struct tm *result) #endif /* SIZEOF_TIME_T <= 4 */ static int64_t -sldns_serial_arithmitics_time(int32_t time, time_t now) +sldns_serial_arithmetics_time(int32_t time, time_t now) { int32_t offset = time - (int32_t) now; return (int64_t) now + offset; } struct tm * -sldns_serial_arithmitics_gmtime_r(int32_t time, time_t now, struct tm *result) +sldns_serial_arithmetics_gmtime_r(int32_t time, time_t now, struct tm *result) { #if SIZEOF_TIME_T <= 4 - int64_t secs_since_epoch = sldns_serial_arithmitics_time(time, now); + int64_t secs_since_epoch = sldns_serial_arithmetics_time(time, now); return sldns_gmtime64_r(secs_since_epoch, result); #else - time_t secs_since_epoch = sldns_serial_arithmitics_time(time, now); + time_t secs_since_epoch = sldns_serial_arithmetics_time(time, now); return gmtime_r(&secs_since_epoch, result); #endif } @@ -402,10 +402,12 @@ sldns_b32_ntop_base(const uint8_t* src, size_t src_sz, char* dst, size_t dst_sz, /* ........ ........ ....4444 4....... ........ */ c = src[3] >> 7 ; + /* fallthrough */ case 3: dst[4] = b32[(src[2] & 0x0f) << 1 | c]; /* ........ .......3 3333.... ........ ........ */ c = src[2] >> 4 ; + /* fallthrough */ case 2: dst[3] = b32[(src[1] & 0x01) << 4 | c]; /* ........ ..22222. ........ ........ ........ */ @@ -413,6 +415,7 @@ sldns_b32_ntop_base(const uint8_t* src, size_t src_sz, char* dst, size_t dst_sz, /* .....111 11...... ........ ........ ........ */ c = src[1] >> 6 ; + /* fallthrough */ case 1: dst[1] = b32[(src[0] & 0x07) << 2 | c]; /* 00000... ........ ........ ........ ........ */ @@ -423,9 +426,12 @@ sldns_b32_ntop_base(const uint8_t* src, size_t src_sz, char* dst, size_t dst_sz, switch (src_sz) { case 1: dst[2] = '='; dst[3] = '='; + /* fallthrough */ case 2: dst[4] = '='; + /* fallthrough */ case 3: dst[5] = '='; dst[6] = '='; + /* fallthrough */ case 4: dst[7] = '='; } } @@ -537,15 +543,18 @@ sldns_b32_pton_base(const char* src, size_t src_sz, uint8_t* dst, size_t dst_sz, /* ........ ........ ........ .55555.. ........ */ /* ........ ........ ....4444 4....... ........ */ dst[3] = buf[4] << 7 | buf[5] << 2 | buf[6] >> 3; + /* fallthrough */ case 5: /* ........ ........ ....4444 4....... ........ */ /* ........ .......3 3333.... ........ ........ */ dst[2] = buf[3] << 4 | buf[4] >> 1; + /* fallthrough */ case 4: /* ........ .......3 3333.... ........ ........ */ /* ........ ..22222. ........ ........ ........ */ /* .....111 11...... ........ ........ ........ */ dst[1] = buf[1] << 6 | buf[2] << 1 | buf[3] >> 4; + /* fallthrough */ case 2: /* .....111 11...... ........ ........ ........ */ /* 00000... ........ ........ ........ ........ */ @@ -637,7 +646,7 @@ int sldns_b64_ntop(uint8_t const *src, size_t srclength, target[o+1] = b64[ ((src[i]&0x03)<<4) | (src[i+1]>>4) ]; target[o+2] = b64[ ((src[i+1]&0x0f)<<2) ]; target[o+3] = pad64; - i += 2; + /* i += 2; */ o += 4; break; case 1: @@ -646,7 +655,7 @@ int sldns_b64_ntop(uint8_t const *src, size_t srclength, target[o+1] = b64[ ((src[i]&0x03)<<4) ]; target[o+2] = pad64; target[o+3] = pad64; - i += 1; + /* i += 1; */ o += 4; break; case 0: diff --git a/external/unbound/sldns/parseutil.h b/external/unbound/sldns/parseutil.h index c5238bc..10a2630 100644 --- a/external/unbound/sldns/parseutil.h +++ b/external/unbound/sldns/parseutil.h @@ -62,13 +62,13 @@ time_t sldns_mktime_from_utc(const struct tm *tm); * fields of RRSIG records. * * \param[in] time number of seconds since epoch (midnight, January 1st, 1970) - * to be intepreted as a serial arithmetics number relative to now. + * to be interpreted as a serial arithmetics number relative to now. * \param[in] now number of seconds since epoch (midnight, January 1st, 1970) * to which the time value is compared to determine the final value. * \param[out] result the struct with the broken-out time information * \return result on success or NULL on error */ -struct tm * sldns_serial_arithmitics_gmtime_r(int32_t time, time_t now, struct tm *result); +struct tm * sldns_serial_arithmetics_gmtime_r(int32_t time, time_t now, struct tm *result); /** * converts a ttl value (like 5d2h) to a long. diff --git a/external/unbound/sldns/rrdef.c b/external/unbound/sldns/rrdef.c index a8c6229..644762f 100644 --- a/external/unbound/sldns/rrdef.c +++ b/external/unbound/sldns/rrdef.c @@ -144,6 +144,12 @@ static const sldns_rdf_type type_dhcid_wireformat[] = { static const sldns_rdf_type type_talink_wireformat[] = { LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_DNAME }; +static const sldns_rdf_type type_openpgpkey_wireformat[] = { + LDNS_RDF_TYPE_B64 +}; +static const sldns_rdf_type type_csync_wireformat[] = { + LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_NSEC +}; /* nsec3 is some vars, followed by same type of data of nsec */ static const sldns_rdf_type type_nsec3_wireformat[] = { /* LDNS_RDF_TYPE_NSEC3_VARS, LDNS_RDF_TYPE_NSEC3_NEXT_OWNER, LDNS_RDF_TYPE_NSEC*/ @@ -169,7 +175,7 @@ static const sldns_rdf_type type_tkey_wireformat[] = { LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_INT16, - LDNS_RDF_TYPE_INT16, + LDNS_RDF_TYPE_TSIGERROR, LDNS_RDF_TYPE_INT16_DATA, LDNS_RDF_TYPE_INT16_DATA, }; @@ -179,7 +185,7 @@ static const sldns_rdf_type type_tsig_wireformat[] = { LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_INT16_DATA, LDNS_RDF_TYPE_INT16, - LDNS_RDF_TYPE_INT16, + LDNS_RDF_TYPE_TSIGERROR, LDNS_RDF_TYPE_INT16_DATA }; static const sldns_rdf_type type_tlsa_wireformat[] = { @@ -335,8 +341,12 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_NSEC3PARAM, "NSEC3PARAM", 4, 4, type_nsec3param_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 52 */ {LDNS_RR_TYPE_TLSA, "TLSA", 4, 4, type_tlsa_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, - + /*53 */ +#ifdef DRAFT_RRTYPES + {LDNS_RR_TYPE_SMIMEA, "SMIMEA", 4, 4, type_tlsa_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, +#else {LDNS_RR_TYPE_NULL, "TYPE53", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, +#endif {LDNS_RR_TYPE_NULL, "TYPE54", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 55 * Hip ends with 0 or more Rendezvous Servers represented as dname's. @@ -361,8 +371,10 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_CDS, "CDS", 4, 4, type_ds_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 60 */ {LDNS_RR_TYPE_CDNSKEY, "CDNSKEY", 4, 4, type_dnskey_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, -{LDNS_RR_TYPE_NULL, "TYPE61", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, -{LDNS_RR_TYPE_NULL, "TYPE62", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, + /* 61 */ +{LDNS_RR_TYPE_OPENPGPKEY, "OPENPGPKEY", 1, 1, type_openpgpkey_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, + /* 62 */ + {LDNS_RR_TYPE_CSYNC, "CSYNC", 3, 3, type_csync_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {LDNS_RR_TYPE_NULL, "TYPE63", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {LDNS_RR_TYPE_NULL, "TYPE64", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {LDNS_RR_TYPE_NULL, "TYPE65", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, @@ -592,6 +604,12 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_URI, "URI", 3, 3, type_uri_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 257 */ {LDNS_RR_TYPE_CAA, "CAA", 3, 3, type_caa_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, +#ifdef DRAFT_RRTYPES + /* 258 */ + {LDNS_RR_TYPE_AVC, "AVC", 1, 0, NULL, LDNS_RDF_TYPE_STR, LDNS_RR_NO_COMPRESS, 0 }, +#else +{LDNS_RR_TYPE_NULL, "TYPE258", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, +#endif /* split in array, no longer contiguous */ diff --git a/external/unbound/sldns/rrdef.h b/external/unbound/sldns/rrdef.h index ab65943..0446687 100644 --- a/external/unbound/sldns/rrdef.h +++ b/external/unbound/sldns/rrdef.h @@ -38,7 +38,7 @@ extern "C" { #define LDNS_KEY_REVOKE_KEY 0x0080 /* used to revoke KSK, rfc 5011 */ /* The first fields are contiguous and can be referenced instantly */ -#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 258 +#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 259 /** lookuptable for rr classes */ extern struct sldns_struct_lookup_table* sldns_rr_classes; @@ -182,6 +182,8 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_NSEC3PARAM = 51, /* RFC 5155 */ LDNS_RR_TYPE_NSEC3PARAMS = 51, LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */ + LDNS_RR_TYPE_SMIMEA = 53, /* draft-ietf-dane-smime, TLSA-like but may + be extended */ LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */ @@ -193,6 +195,8 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_TALINK = 58, LDNS_RR_TYPE_CDS = 59, /** RFC 7344 */ LDNS_RR_TYPE_CDNSKEY = 60, /** RFC 7344 */ + LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */ + LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */ LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */ @@ -222,6 +226,7 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_ANY = 255, LDNS_RR_TYPE_URI = 256, /* RFC 7553 */ LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */ + LDNS_RR_TYPE_AVC = 258, /** DNSSEC Trust Authorities */ LDNS_RR_TYPE_TA = 32768, @@ -326,13 +331,13 @@ enum sldns_enum_rdf_type LDNS_RDF_TYPE_NSEC3_NEXT_OWNER, /** 4 shorts represented as 4 * 16 bit hex numbers - * seperated by colons. For NID and L64. + * separated by colons. For NID and L64. */ LDNS_RDF_TYPE_ILNP64, - /** 6 * 8 bit hex numbers seperated by dashes. For EUI48. */ + /** 6 * 8 bit hex numbers separated by dashes. For EUI48. */ LDNS_RDF_TYPE_EUI48, - /** 8 * 8 bit hex numbers seperated by dashes. For EUI64. */ + /** 8 * 8 bit hex numbers separated by dashes. For EUI64. */ LDNS_RDF_TYPE_EUI64, /** A non-zero sequence of US-ASCII letters and numbers in lower case. @@ -346,6 +351,9 @@ enum sldns_enum_rdf_type */ LDNS_RDF_TYPE_LONG_STR, + /** TSIG extended 16bit error value */ + LDNS_RDF_TYPE_TSIGERROR, + /* Aliases */ LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC }; @@ -368,6 +376,8 @@ enum sldns_enum_algorithm LDNS_ECC_GOST = 12, /* RFC 5933 */ LDNS_ECDSAP256SHA256 = 13, /* RFC 6605 */ LDNS_ECDSAP384SHA384 = 14, /* RFC 6605 */ + LDNS_ED25519 = 15, /* RFC 8080 */ + LDNS_ED448 = 16, /* RFC 8080 */ LDNS_INDIRECT = 252, LDNS_PRIVATEDNS = 253, LDNS_PRIVATEOID = 254 @@ -416,12 +426,23 @@ enum sldns_enum_edns_option LDNS_EDNS_DAU = 5, /* RFC6975 */ LDNS_EDNS_DHU = 6, /* RFC6975 */ LDNS_EDNS_N3U = 7, /* RFC6975 */ - LDNS_EDNS_CLIENT_SUBNET = 8 /* draft-vandergaast-edns-client-subnet */ + LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */ + LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/ + LDNS_EDNS_PADDING = 12 /* RFC7830 */ }; typedef enum sldns_enum_edns_option sldns_edns_option; #define LDNS_EDNS_MASK_DO_BIT 0x8000 +/** TSIG and TKEY extended rcodes (16bit), 0-15 are the normal rcodes. */ +#define LDNS_TSIG_ERROR_NOERROR 0 +#define LDNS_TSIG_ERROR_BADSIG 16 +#define LDNS_TSIG_ERROR_BADKEY 17 +#define LDNS_TSIG_ERROR_BADTIME 18 +#define LDNS_TSIG_ERROR_BADMODE 19 +#define LDNS_TSIG_ERROR_BADNAME 20 +#define LDNS_TSIG_ERROR_BADALG 21 + /** * Contains all information about resource record types. * diff --git a/external/unbound/sldns/sbuffer.c b/external/unbound/sldns/sbuffer.c index a7fe53a..4ac8397 100644 --- a/external/unbound/sldns/sbuffer.c +++ b/external/unbound/sldns/sbuffer.c @@ -33,6 +33,7 @@ sldns_buffer_new(size_t capacity) buffer->_position = 0; buffer->_limit = buffer->_capacity = capacity; buffer->_fixed = 0; + buffer->_vfixed = 0; buffer->_status_err = 0; sldns_buffer_invariant(buffer); @@ -48,6 +49,9 @@ sldns_buffer_new_frm_data(sldns_buffer *buffer, void *data, size_t size) buffer->_position = 0; buffer->_limit = buffer->_capacity = size; buffer->_fixed = 0; + buffer->_vfixed = 0; + if (!buffer->_fixed && buffer->_data) + free(buffer->_data); buffer->_data = malloc(size); if(!buffer->_data) { buffer->_status_err = 1; @@ -66,6 +70,17 @@ sldns_buffer_init_frm_data(sldns_buffer *buffer, void *data, size_t size) buffer->_data = data; buffer->_capacity = buffer->_limit = size; buffer->_fixed = 1; + buffer->_vfixed = 0; +} + +void +sldns_buffer_init_vfixed_frm_data(sldns_buffer *buffer, void *data, size_t size) +{ + memset(buffer, 0, sizeof(*buffer)); + buffer->_data = data; + buffer->_capacity = buffer->_limit = size; + buffer->_fixed = 1; + buffer->_vfixed = 1; } int @@ -74,7 +89,7 @@ sldns_buffer_set_capacity(sldns_buffer *buffer, size_t capacity) void *data; sldns_buffer_invariant(buffer); - assert(buffer->_position <= capacity); + assert(buffer->_position <= capacity && !buffer->_fixed); data = (uint8_t *) realloc(buffer->_data, capacity); if (!data) { @@ -126,7 +141,7 @@ sldns_buffer_printf(sldns_buffer *buffer, const char *format, ...) if (written == -1) { buffer->_status_err = 1; return -1; - } else if ((size_t) written >= remaining) { + } else if (!buffer->_vfixed && (size_t) written >= remaining) { if (!sldns_buffer_reserve(buffer, (size_t) written + 1)) { buffer->_status_err = 1; return -1; diff --git a/external/unbound/sldns/sbuffer.h b/external/unbound/sldns/sbuffer.h index 3ce874f..2c30b37 100644 --- a/external/unbound/sldns/sbuffer.h +++ b/external/unbound/sldns/sbuffer.h @@ -87,6 +87,19 @@ sldns_write_uint32(void *dst, uint32_t data) } +INLINE void +sldns_write_uint48(void *dst, uint64_t data) +{ + uint8_t *p = (uint8_t *) dst; + p[0] = (uint8_t) ((data >> 40) & 0xff); + p[1] = (uint8_t) ((data >> 32) & 0xff); + p[2] = (uint8_t) ((data >> 24) & 0xff); + p[3] = (uint8_t) ((data >> 16) & 0xff); + p[4] = (uint8_t) ((data >> 8) & 0xff); + p[5] = (uint8_t) (data & 0xff); +} + + /** * \file sbuffer.h * @@ -117,6 +130,17 @@ struct sldns_buffer /** If the buffer is fixed it cannot be resized */ unsigned _fixed : 1; + /** If the buffer is vfixed, no more than capacity bytes willl be + * written to _data, however the _position counter will be updated + * with the amount that would have been written in consecutive + * writes. This allows for a modus operandi in which a sequence is + * written on a fixed capacity buffer (perhaps with _data on stack). + * When everything could be written, then the _data is immediately + * usable, if not, then a buffer could be allocated sized precisely + * to fit the data for a second attempt. + */ + unsigned _vfixed : 1; + /** The current state of the buffer. If writing to the buffer fails * for any reason, this value is changed. This way, you can perform * multiple writes in sequence and check for success afterwards. */ @@ -134,9 +158,9 @@ INLINE void sldns_buffer_invariant(sldns_buffer *buffer) { assert(buffer != NULL); - assert(buffer->_position <= buffer->_limit); + assert(buffer->_position <= buffer->_limit || buffer->_vfixed); assert(buffer->_limit <= buffer->_capacity); - assert(buffer->_data != NULL); + assert(buffer->_data != NULL || (buffer->_vfixed && buffer->_capacity == 0)); } #endif @@ -168,6 +192,19 @@ void sldns_buffer_new_frm_data(sldns_buffer *buffer, void *data, size_t size); */ void sldns_buffer_init_frm_data(sldns_buffer *buffer, void *data, size_t size); +/** + * Setup a buffer with the data pointed to. No data copied, no memory allocs. + * The buffer is "virtually" fixed. Writes beyond size (the capacity) will + * only update position, but no data will be written beyond capacity. This + * allows to determine how big the buffer should have been to contain all the + * written data, by looking at the position with sldns_buffer_position(), + * similarly to the return value of POSIX's snprintf. + * \param[in] buffer pointer to the buffer to put the data in + * \param[in] data the data to encapsulate in the buffer + * \param[in] size the size of the data + */ +void sldns_buffer_init_vfixed_frm_data(sldns_buffer *buffer, void *data, size_t size); + /** * clears the buffer and make it ready for writing. The buffer's limit * is set to the capacity and the position is set to 0. @@ -231,7 +268,7 @@ sldns_buffer_position(sldns_buffer *buffer) INLINE void sldns_buffer_set_position(sldns_buffer *buffer, size_t mark) { - assert(mark <= buffer->_limit); + assert(mark <= buffer->_limit || buffer->_vfixed); buffer->_position = mark; } @@ -245,7 +282,7 @@ sldns_buffer_set_position(sldns_buffer *buffer, size_t mark) INLINE void sldns_buffer_skip(sldns_buffer *buffer, ssize_t count) { - assert(buffer->_position + count <= buffer->_limit); + assert(buffer->_position + count <= buffer->_limit || buffer->_vfixed); buffer->_position += count; } @@ -317,7 +354,7 @@ int sldns_buffer_reserve(sldns_buffer *buffer, size_t amount); INLINE uint8_t * sldns_buffer_at(const sldns_buffer *buffer, size_t at) { - assert(at <= buffer->_limit); + assert(at <= buffer->_limit || buffer->_vfixed); return buffer->_data + at; } @@ -367,8 +404,8 @@ INLINE size_t sldns_buffer_remaining_at(sldns_buffer *buffer, size_t at) { sldns_buffer_invariant(buffer); - assert(at <= buffer->_limit); - return buffer->_limit - at; + assert(at <= buffer->_limit || buffer->_vfixed); + return at < buffer->_limit ? buffer->_limit - at : 0; } /** @@ -420,15 +457,47 @@ sldns_buffer_available(sldns_buffer *buffer, size_t count) INLINE void sldns_buffer_write_at(sldns_buffer *buffer, size_t at, const void *data, size_t count) { - assert(sldns_buffer_available_at(buffer, at, count)); + if (!buffer->_vfixed) + assert(sldns_buffer_available_at(buffer, at, count)); + else if (sldns_buffer_remaining_at(buffer, at) == 0) + return; + else if (count > sldns_buffer_remaining_at(buffer, at)) { + memcpy(buffer->_data + at, data, + sldns_buffer_remaining_at(buffer, at)); + return; + } memcpy(buffer->_data + at, data, count); } +/** + * set the given byte to the buffer at the specified position + * \param[in] buffer the buffer + * \param[in] at the position (in number of bytes) to write the data at + * \param[in] c the byte to set to the buffer + * \param[in] count the number of bytes of bytes to write + */ + +INLINE void +sldns_buffer_set_at(sldns_buffer *buffer, size_t at, int c, size_t count) +{ + if (!buffer->_vfixed) + assert(sldns_buffer_available_at(buffer, at, count)); + else if (sldns_buffer_remaining_at(buffer, at) == 0) + return; + else if (count > sldns_buffer_remaining_at(buffer, at)) { + memset(buffer->_data + at, c, + sldns_buffer_remaining_at(buffer, at)); + return; + } + memset(buffer->_data + at, c, count); +} + + /** * writes count bytes of data to the current position of the buffer * \param[in] buffer the buffer * \param[in] data the data to write - * \param[in] count the lenght of the data to write + * \param[in] count the length of the data to write */ INLINE void sldns_buffer_write(sldns_buffer *buffer, const void *data, size_t count) @@ -469,6 +538,7 @@ sldns_buffer_write_string(sldns_buffer *buffer, const char *str) INLINE void sldns_buffer_write_u8_at(sldns_buffer *buffer, size_t at, uint8_t data) { + if (buffer->_vfixed && at + sizeof(data) > buffer->_limit) return; assert(sldns_buffer_available_at(buffer, at, sizeof(data))); buffer->_data[at] = data; } @@ -494,6 +564,7 @@ sldns_buffer_write_u8(sldns_buffer *buffer, uint8_t data) INLINE void sldns_buffer_write_u16_at(sldns_buffer *buffer, size_t at, uint16_t data) { + if (buffer->_vfixed && at + sizeof(data) > buffer->_limit) return; assert(sldns_buffer_available_at(buffer, at, sizeof(data))); sldns_write_uint16(buffer->_data + at, data); } @@ -519,10 +590,25 @@ sldns_buffer_write_u16(sldns_buffer *buffer, uint16_t data) INLINE void sldns_buffer_write_u32_at(sldns_buffer *buffer, size_t at, uint32_t data) { + if (buffer->_vfixed && at + sizeof(data) > buffer->_limit) return; assert(sldns_buffer_available_at(buffer, at, sizeof(data))); sldns_write_uint32(buffer->_data + at, data); } +/** + * writes the given 6 byte integer at the given position in the buffer + * \param[in] buffer the buffer + * \param[in] at the position in the buffer + * \param[in] data the (lower) 48 bits to write + */ +INLINE void +sldns_buffer_write_u48_at(sldns_buffer *buffer, size_t at, uint64_t data) +{ + if (buffer->_vfixed && at + 6 > buffer->_limit) return; + assert(sldns_buffer_available_at(buffer, at, 6)); + sldns_write_uint48(buffer->_data + at, data); +} + /** * writes the given 4 byte integer at the current position in the buffer * \param[in] buffer the buffer @@ -535,6 +621,18 @@ sldns_buffer_write_u32(sldns_buffer *buffer, uint32_t data) buffer->_position += sizeof(data); } +/** + * writes the given 6 byte integer at the current position in the buffer + * \param[in] buffer the buffer + * \param[in] data the 48 bits to write + */ +INLINE void +sldns_buffer_write_u48(sldns_buffer *buffer, uint64_t data) +{ + sldns_buffer_write_u48_at(buffer, buffer->_position, data); + buffer->_position += 6; +} + /** * copies count bytes of data at the given position to the given data-array * \param[in] buffer the buffer diff --git a/external/unbound/sldns/str2wire.c b/external/unbound/sldns/str2wire.c index 8cda8c7..1a51bb6 100644 --- a/external/unbound/sldns/str2wire.c +++ b/external/unbound/sldns/str2wire.c @@ -204,7 +204,7 @@ rrinternal_get_owner(sldns_buffer* strbuf, uint8_t* rr, size_t* len, return RET_ERR(LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL, sldns_buffer_position(strbuf)); memmove(rr, tocopy, *dname_len); - } else if(strlen(token) == 0) { + } else if(*token == '\0') { /* no ownername was given, try prev, if that fails * origin, else default to root */ uint8_t* tocopy; @@ -328,7 +328,7 @@ rrinternal_write_typeclassttl(sldns_buffer* strbuf, uint8_t* rr, size_t len, /** find delimiters for type */ static const char* -rrinternal_get_delims(sldns_rdf_type rdftype, uint16_t r_cnt, uint16_t r_max) +rrinternal_get_delims(sldns_rdf_type rdftype, size_t r_cnt, size_t r_max) { switch(rdftype) { case LDNS_RDF_TYPE_B64 : @@ -463,7 +463,7 @@ rrinternal_parse_unknown(sldns_buffer* strbuf, char* token, size_t token_len, static int rrinternal_parse_rdf(sldns_buffer* strbuf, char* token, size_t token_len, uint8_t* rr, size_t rr_len, size_t* rr_cur_len, sldns_rdf_type rdftype, - uint16_t rr_type, uint16_t r_cnt, uint16_t r_max, size_t dname_len, + uint16_t rr_type, size_t r_cnt, size_t r_max, size_t dname_len, uint8_t* origin, size_t origin_len) { size_t len; @@ -613,7 +613,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, uint8_t* origin, size_t origin_len) { const sldns_rr_descriptor *desc = sldns_rr_descript((uint16_t)rr_type); - uint16_t r_cnt, r_min, r_max; + size_t r_cnt, r_min, r_max; size_t rr_cur_len = dname_len + 10, pre_data_pos, token_strlen; int was_unknown_rr_format = 0, parens = 0, status, quoted; const char* delimiters; @@ -664,6 +664,14 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, &pre_data_pos, delimiters, rdftype, &token_strlen)) break; + } else if(rdftype == LDNS_RDF_TYPE_INT16_DATA && + strcmp(token, "0")!=0) { + /* affix len and b64 fields */ + if(!sldns_affix_token(strbuf, token, + &token_len, "ed, &parens, + &pre_data_pos, delimiters, + rdftype, &token_strlen)) + break; } /* normal RR */ @@ -693,7 +701,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, sldns_buffer_position(strbuf)); } /* write rdata length */ - sldns_write_uint16(rr+dname_len+8, rr_cur_len-dname_len-10); + sldns_write_uint16(rr+dname_len+8, (uint16_t)(rr_cur_len-dname_len-10)); *rr_len = rr_cur_len; return LDNS_WIREPARSE_ERR_OK; } @@ -828,7 +836,7 @@ const char* sldns_get_errorstr_parse(int e) } /* Strip whitespace from the start and the end of . */ -static char * +char * sldns_strip_ws(char *line) { char *s = line, *e; @@ -861,6 +869,8 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, /* we can have the situation, where we've read ok, but still got * no bytes to play with, in this case size is 0 */ if(size == 0) { + if(*len > 0) + rr[0] = 0; *len = 0; *dname_len = 0; return LDNS_WIREPARSE_ERR_OK; @@ -868,6 +878,7 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, if(strncmp(line, "$ORIGIN", 7) == 0 && isspace((unsigned char)line[7])) { int s; + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; if(!parse_state) return LDNS_WIREPARSE_ERR_OK; @@ -878,24 +889,38 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, return s; } else if(strncmp(line, "$TTL", 4) == 0 && isspace((unsigned char)line[4])) { const char* end = NULL; + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; if(!parse_state) return LDNS_WIREPARSE_ERR_OK; parse_state->default_ttl = sldns_str2period( sldns_strip_ws(line+5), &end); } else if (strncmp(line, "$INCLUDE", 8) == 0) { + strlcpy((char*)rr, line, *len); + *len = 0; + *dname_len = 0; + return LDNS_WIREPARSE_ERR_INCLUDE; + } else if (strncmp(line, "$", 1) == 0) { + strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; return LDNS_WIREPARSE_ERR_INCLUDE; } else { - return sldns_str2wire_rr_buf(line, rr, len, dname_len, + int r = sldns_str2wire_rr_buf(line, rr, len, dname_len, parse_state?parse_state->default_ttl:0, (parse_state&&parse_state->origin_len)? parse_state->origin:NULL, - parse_state->origin_len, + parse_state?parse_state->origin_len:0, (parse_state&&parse_state->prev_rr_len)? parse_state->prev_rr:NULL, - parse_state->prev_rr_len); + parse_state?parse_state->prev_rr_len:0); + if(r == LDNS_WIREPARSE_ERR_OK && (*dname_len) != 0 && + parse_state && + (*dname_len) <= sizeof(parse_state->prev_rr)) { + memmove(parse_state->prev_rr, rr, *dname_len); + parse_state->prev_rr_len = (*dname_len); + } + return r; } return LDNS_WIREPARSE_ERR_OK; } @@ -940,6 +965,8 @@ int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, return sldns_str2wire_time_buf(str, rd, len); case LDNS_RDF_TYPE_PERIOD: return sldns_str2wire_period_buf(str, rd, len); + case LDNS_RDF_TYPE_TSIGTIME: + return sldns_str2wire_tsigtime_buf(str, rd, len); case LDNS_RDF_TYPE_LOC: return sldns_str2wire_loc_buf(str, rd, len); case LDNS_RDF_TYPE_WKS: @@ -964,6 +991,8 @@ int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, return sldns_str2wire_tag_buf(str, rd, len); case LDNS_RDF_TYPE_LONG_STR: return sldns_str2wire_long_str_buf(str, rd, len); + case LDNS_RDF_TYPE_TSIGERROR: + return sldns_str2wire_tsigerror_buf(str, rd, len); case LDNS_RDF_TYPE_HIP: return sldns_str2wire_hip_buf(str, rd, len); case LDNS_RDF_TYPE_INT16_DATA: @@ -1091,7 +1120,7 @@ int sldns_str2wire_apl_buf(const char* str, uint8_t* rd, size_t* len) uint8_t prefix; size_t i; - if(strlen(my_str) == 0) { + if(*my_str == '\0') { /* empty APL element, no data, no string */ *len = 0; return LDNS_WIREPARSE_ERR_OK; @@ -1168,6 +1197,10 @@ int sldns_str2wire_b64_buf(const char* str, uint8_t* rd, size_t* len) { size_t sz = sldns_b64_pton_calculate_size(strlen(str)); int n; + if(strcmp(str, "0") == 0) { + *len = 0; + return LDNS_WIREPARSE_ERR_OK; + } if(*len < sz) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; n = sldns_b64_pton(str, rd, *len); @@ -1192,6 +1225,17 @@ int sldns_str2wire_b32_ext_buf(const char* str, uint8_t* rd, size_t* len) return LDNS_WIREPARSE_ERR_OK; } +/** see if the string ends, or ends in whitespace */ +static int +sldns_is_last_of_string(const char* str) +{ + if(*str == 0) return 1; + while(isspace((unsigned char)*str)) + str++; + if(*str == 0) return 1; + return 0; +} + int sldns_str2wire_hex_buf(const char* str, uint8_t* rd, size_t* len) { const char* s = str; @@ -1201,6 +1245,10 @@ int sldns_str2wire_hex_buf(const char* str, uint8_t* rd, size_t* len) s++; continue; } + if(dlen == 0 && *s == '0' && sldns_is_last_of_string(s+1)) { + *len = 0; + return LDNS_WIREPARSE_ERR_OK; + } if(!isxdigit((unsigned char)*s)) return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_HEX, s-str); if(*len < dlen/2 + 1) @@ -1341,6 +1389,21 @@ int sldns_str2wire_alg_buf(const char* str, uint8_t* rd, size_t* len) return LDNS_WIREPARSE_ERR_OK; } +int sldns_str2wire_tsigerror_buf(const char* str, uint8_t* rd, size_t* len) +{ + sldns_lookup_table *lt = sldns_lookup_by_name(sldns_tsig_errors, str); + if(*len < 2) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + if(lt) { + sldns_write_uint16(rd, (uint16_t)lt->id); + *len = 2; + } else { + /* try as-is (a number) */ + return sldns_str2wire_int16_buf(str, rd, len); + } + return LDNS_WIREPARSE_ERR_OK; +} + int sldns_str2wire_time_buf(const char* str, uint8_t* rd, size_t* len) { /* convert a time YYYYDDMMHHMMSS to wireformat */ @@ -1369,7 +1432,7 @@ int sldns_str2wire_time_buf(const char* str, uint8_t* rd, size_t* len) if (tm.tm_sec < 0 || tm.tm_sec > 59) return LDNS_WIREPARSE_ERR_SYNTAX_TIME; - sldns_write_uint32(rd, sldns_mktime_from_utc(&tm)); + sldns_write_uint32(rd, (uint32_t)sldns_mktime_from_utc(&tm)); } else { /* handle it as 32 bits timestamp */ char *end; @@ -1383,6 +1446,24 @@ int sldns_str2wire_time_buf(const char* str, uint8_t* rd, size_t* len) return LDNS_WIREPARSE_ERR_OK; } +int sldns_str2wire_tsigtime_buf(const char* str, uint8_t* rd, size_t* len) +{ + char* end; + uint64_t t = (uint64_t)strtol((char*)str, &end, 10); + uint16_t high; + uint32_t low; + if(*end != 0) + return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_TIME, end-str); + if(*len < 6) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + high = (uint16_t)(t>>32); + low = (uint32_t)(t); + sldns_write_uint16(rd, high); + sldns_write_uint32(rd+2, low); + *len = 6; + return LDNS_WIREPARSE_ERR_OK; +} + int sldns_str2wire_period_buf(const char* str, uint8_t* rd, size_t* len) { const char* end; @@ -1478,7 +1559,7 @@ int sldns_str2wire_loc_buf(const char* str, uint8_t* rd, size_t* len) s = strtod(my_str, &my_str); } - /* skip blanks before norterness */ + /* skip blanks before northerness */ while (isblank((unsigned char) *my_str)) { my_str++; } @@ -1630,12 +1711,15 @@ int sldns_str2wire_wks_buf(const char* str, uint8_t* rd, size_t* len) struct protoent *p = getprotobyname(token); have_proto = 1; if(p) rd[0] = (uint8_t)p->p_proto; + else if(strcasecmp(token, "tcp")==0) rd[0]=6; + else if(strcasecmp(token, "udp")==0) rd[0]=17; else rd[0] = (uint8_t)atoi(token); (void)strlcpy(proto_str, token, sizeof(proto_str)); } else { int serv_port; struct servent *serv = getservbyname(token, proto_str); if(serv) serv_port=(int)ntohs((uint16_t)serv->s_port); + else if(strcasecmp(token, "domain")==0) serv_port=53; else { serv_port = atoi(token); if(serv_port == 0 && strcmp(token, "0") != 0) { @@ -1932,7 +2016,7 @@ int sldns_str2wire_tag_buf(const char* str, uint8_t* rd, size_t* len) if(!isalnum((unsigned char)*ptr)) return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_TAG, ptr-str); } - rd[0] = slen; + rd[0] = (uint8_t)slen; memmove(rd+1, str, slen); *len = slen+1; return LDNS_WIREPARSE_ERR_OK; @@ -2000,7 +2084,7 @@ int sldns_str2wire_hip_buf(const char* str, uint8_t* rd, size_t* len) return RET_ERR_SHIFT(e, s-(char*)str); if(pklen > 65535) return RET_ERR(LDNS_WIREPARSE_ERR_LABEL_OVERFLOW, s-(char*)str+65535); - sldns_write_uint16(rd+2, pklen); + sldns_write_uint16(rd+2, (uint16_t)pklen); *len = 4 + hitlen + pklen; return LDNS_WIREPARSE_ERR_OK; @@ -2008,16 +2092,29 @@ int sldns_str2wire_hip_buf(const char* str, uint8_t* rd, size_t* len) int sldns_str2wire_int16_data_buf(const char* str, uint8_t* rd, size_t* len) { - size_t sz = sldns_b64_pton_calculate_size(strlen(str)); + char* s; int n; - if(*len < sz+2) + n = strtol(str, &s, 10); + if(*len < ((size_t)n)+2) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; - if(sz > 65535) + if(n > 65535) return LDNS_WIREPARSE_ERR_LABEL_OVERFLOW; - n = sldns_b64_pton(str, rd+2, (*len)-2); + + if(n == 0) { + sldns_write_uint16(rd, 0); + *len = 2; + return LDNS_WIREPARSE_ERR_OK; + } + if(*s != ' ') + return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_INT, s-(char*)str); + s++; + while(*s == ' ') + s++; + + n = sldns_b64_pton(s, rd+2, (*len)-2); if(n < 0) return LDNS_WIREPARSE_ERR_SYNTAX_B64; sldns_write_uint16(rd, (uint16_t)n); - *len = (size_t)n; + *len = ((size_t)n)+2; return LDNS_WIREPARSE_ERR_OK; } diff --git a/external/unbound/sldns/str2wire.h b/external/unbound/sldns/str2wire.h index 527074a..70070e4 100644 --- a/external/unbound/sldns/str2wire.h +++ b/external/unbound/sldns/str2wire.h @@ -237,6 +237,8 @@ struct sldns_file_parse_state { * @param rr: this is malloced by the user and the result is stored here, * if an RR is read. If no RR is read this is signalled with the * return len set to 0 (for ORIGIN, TTL directives). + * The read line is available in the rr_buf (zero terminated), for + * $DIRECTIVE style elements. * @param len: on input, the length of the rr buffer. on output the rr len. * Buffer size of 64k should be enough. * @param dname_len: returns the length of the dname initial part of the rr. @@ -417,6 +419,24 @@ int sldns_str2wire_time_buf(const char* str, uint8_t* rd, size_t* len); */ int sldns_str2wire_period_buf(const char* str, uint8_t* rd, size_t* len); +/** + * Convert rdf of type LDNS_RDF_TYPE_TSIGTIME from string to wireformat. + * @param str: the text to convert for this rdata element. + * @param rd: rdata buffer for the wireformat. + * @param len: length of rd buffer on input, used length on output. + * @return 0 on success, error on failure. + */ +int sldns_str2wire_tsigtime_buf(const char* str, uint8_t* rd, size_t* len); + +/** + * Convert rdf of type LDNS_RDF_TYPE_TSIGERROR from string to wireformat. + * @param str: the text to convert for this rdata element. + * @param rd: rdata buffer for the wireformat. + * @param len: length of rd buffer on input, used length on output. + * @return 0 on success, error on failure. + */ +int sldns_str2wire_tsigerror_buf(const char* str, uint8_t* rd, size_t* len); + /** * Convert rdf of type LDNS_RDF_TYPE_LOC from string to wireformat. * @param str: the text to convert for this rdata element. @@ -534,6 +554,12 @@ int sldns_str2wire_hip_buf(const char* str, uint8_t* rd, size_t* len); */ int sldns_str2wire_int16_data_buf(const char* str, uint8_t* rd, size_t* len); +/** + * Strip whitespace from the start and the end of line. + * @param line: modified with 0 to shorten it. + * @return new start with spaces skipped. + */ +char * sldns_strip_ws(char *line); #ifdef __cplusplus } #endif diff --git a/external/unbound/sldns/wire2str.c b/external/unbound/sldns/wire2str.c index 5cbd78e..832239f 100644 --- a/external/unbound/sldns/wire2str.c +++ b/external/unbound/sldns/wire2str.c @@ -47,6 +47,8 @@ static sldns_lookup_table sldns_algorithms_data[] = { { LDNS_ECC_GOST, "ECC-GOST"}, { LDNS_ECDSAP256SHA256, "ECDSAP256SHA256"}, { LDNS_ECDSAP384SHA384, "ECDSAP384SHA384"}, + { LDNS_ED25519, "ED25519"}, + { LDNS_ED448, "ED448"}, { LDNS_INDIRECT, "INDIRECT" }, { LDNS_PRIVATEDNS, "PRIVATEDNS" }, { LDNS_PRIVATEOID, "PRIVATEOID" }, @@ -165,10 +167,34 @@ static sldns_lookup_table sldns_edns_options_data[] = { { 6, "DHU" }, { 7, "N3U" }, { 8, "edns-client-subnet" }, + { 11, "edns-tcp-keepalive"}, + { 12, "Padding" }, { 0, NULL} }; sldns_lookup_table* sldns_edns_options = sldns_edns_options_data; +static sldns_lookup_table sldns_tsig_errors_data[] = { + { LDNS_TSIG_ERROR_NOERROR, "NOERROR" }, + { LDNS_RCODE_FORMERR, "FORMERR" }, + { LDNS_RCODE_SERVFAIL, "SERVFAIL" }, + { LDNS_RCODE_NXDOMAIN, "NXDOMAIN" }, + { LDNS_RCODE_NOTIMPL, "NOTIMPL" }, + { LDNS_RCODE_REFUSED, "REFUSED" }, + { LDNS_RCODE_YXDOMAIN, "YXDOMAIN" }, + { LDNS_RCODE_YXRRSET, "YXRRSET" }, + { LDNS_RCODE_NXRRSET, "NXRRSET" }, + { LDNS_RCODE_NOTAUTH, "NOTAUTH" }, + { LDNS_RCODE_NOTZONE, "NOTZONE" }, + { LDNS_TSIG_ERROR_BADSIG, "BADSIG" }, + { LDNS_TSIG_ERROR_BADKEY, "BADKEY" }, + { LDNS_TSIG_ERROR_BADTIME, "BADTIME" }, + { LDNS_TSIG_ERROR_BADMODE, "BADMODE" }, + { LDNS_TSIG_ERROR_BADNAME, "BADNAME" }, + { LDNS_TSIG_ERROR_BADALG, "BADALG" }, + { 0, NULL } +}; +sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; + char* sldns_wire2str_pkt(uint8_t* data, size_t len) { size_t slen = (size_t)sldns_wire2str_pkt_buf(data, len, NULL, 0); @@ -229,6 +255,12 @@ int sldns_wire2str_rr_buf(uint8_t* d, size_t dlen, char* s, size_t slen) return sldns_wire2str_rr_scan(&d, &dlen, &s, &slen, NULL, 0); } +int sldns_wire2str_rrquestion_buf(uint8_t* d, size_t dlen, char* s, size_t slen) +{ + /* use arguments as temporary variables */ + return sldns_wire2str_rrquestion_scan(&d, &dlen, &s, &slen, NULL, 0); +} + int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char* str, size_t str_len, uint16_t rrtype) { @@ -269,6 +301,12 @@ int sldns_wire2str_rcode_buf(int rcode, char* s, size_t slen) return sldns_wire2str_rcode_print(&s, &slen, rcode); } +int sldns_wire2str_opcode_buf(int opcode, char* s, size_t slen) +{ + /* use arguments as temporary variables */ + return sldns_wire2str_opcode_print(&s, &slen, opcode); +} + int sldns_wire2str_dname_buf(uint8_t* d, size_t dlen, char* s, size_t slen) { /* use arguments as temporary variables */ @@ -666,7 +704,7 @@ int sldns_wire2str_rdata_scan(uint8_t** d, size_t* dlen, char** s, uint8_t* origd = *d; char* origs = *s; size_t origdlen = *dlen, origslen = *slen; - uint16_t r_cnt, r_max; + size_t r_cnt, r_max; sldns_rdf_type rdftype; int w = 0, n; @@ -787,8 +825,9 @@ int sldns_wire2str_dname_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, } /* spool label characters, end with '.' */ - if(in_buf && *dlen < labellen) labellen = *dlen; - else if(!in_buf && pos+labellen > pkt+pktlen) + if(in_buf && *dlen < (size_t)labellen) + labellen = (uint8_t)*dlen; + else if(!in_buf && pos+(size_t)labellen > pkt+pktlen) labellen = (uint8_t)(pkt + pktlen - pos); for(i=0; i<(unsigned)labellen; i++) { w += dname_char_print(s, slen, *pos++); @@ -965,6 +1004,8 @@ int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, return sldns_wire2str_tag_scan(d, dlen, s, slen); case LDNS_RDF_TYPE_LONG_STR: return sldns_wire2str_long_str_scan(d, dlen, s, slen); + case LDNS_RDF_TYPE_TSIGERROR: + return sldns_wire2str_tsigerror_scan(d, dlen, s, slen); } /* unknown rdf type */ return -1; @@ -1185,11 +1226,17 @@ static int sldns_wire2str_b64_scan_num(uint8_t** d, size_t* dl, char** s, int sldns_wire2str_b64_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) { + if(*dl == 0) { + return sldns_str_print(s, sl, "0"); + } return sldns_wire2str_b64_scan_num(d, dl, s, sl, *dl); } int sldns_wire2str_hex_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) { + if(*dl == 0) { + return sldns_str_print(s, sl, "0"); + } return print_remainder_hex("", d, dl, s, sl); } @@ -1294,7 +1341,7 @@ int sldns_wire2str_time_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) if(*dl < 4) return -1; t = sldns_read_uint32(*d); date_buf[15]=0; - if(sldns_serial_arithmitics_gmtime_r(t, time(NULL), &tm) && + if(sldns_serial_arithmetics_gmtime_r(t, time(NULL), &tm) && strftime(date_buf, 15, "%Y%m%d%H%M%S", &tm)) { (*d) += 4; (*dl) -= 4; @@ -1430,6 +1477,10 @@ int sldns_wire2str_wks_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) if(protocol && (protocol->p_name != NULL)) { w += sldns_str_print(s, sl, "%s", protocol->p_name); proto_name = protocol->p_name; + } else if(protocol_nr == 6) { + w += sldns_str_print(s, sl, "tcp"); + } else if(protocol_nr == 17) { + w += sldns_str_print(s, sl, "udp"); } else { w += sldns_str_print(s, sl, "%u", (unsigned)protocol_nr); } @@ -1563,6 +1614,7 @@ int sldns_wire2str_hip_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) int sldns_wire2str_int16_data_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) { + int w; uint16_t n; if(*dl < 2) return -1; @@ -1571,7 +1623,12 @@ int sldns_wire2str_int16_data_scan(uint8_t** d, size_t* dl, char** s, size_t* sl return -1; (*d)+=2; (*dl)-=2; - return sldns_wire2str_b64_scan_num(d, dl, s, sl, n); + if(n == 0) { + return sldns_str_print(s, sl, "0"); + } + w = sldns_str_print(s, sl, "%u ", (unsigned)n); + w += sldns_wire2str_b64_scan_num(d, dl, s, sl, n); + return w; } int sldns_wire2str_nsec3_next_owner_scan(uint8_t** d, size_t* dl, char** s, @@ -1628,10 +1685,10 @@ int sldns_wire2str_tag_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) if(*dl < 1+n) return -1; for(i=0; iname) + w = sldns_str_print(s, sl, "%s", lt->name); + else w = sldns_str_print(s, sl, "%d", data); + (*dl)-=2; + (*d)+=2; + return w; +} + int sldns_wire2str_edns_llq_print(char** s, size_t* sl, uint8_t* data, size_t len) { @@ -1836,6 +1908,25 @@ int sldns_wire2str_edns_subnet_print(char** s, size_t* sl, uint8_t* data, return w; } +int sldns_wire2str_edns_keepalive_print(char** s, size_t* sl, uint8_t* data, + size_t len) +{ + int w = 0; + uint16_t timeout; + if(!(len == 0 || len == 2)) { + w += sldns_str_print(s, sl, "malformed keepalive "); + w += print_hex_buf(s, sl, data, len); + return w; + } + if(len == 0 ) { + w += sldns_str_print(s, sl, "no timeout value (only valid for client option) "); + } else { + timeout = sldns_read_uint16(data); + w += sldns_str_print(s, sl, "timeout value in units of 100ms %u", (int)timeout); + } + return w; +} + int sldns_wire2str_edns_option_print(char** s, size_t* sl, uint16_t option_code, uint8_t* optdata, size_t optlen) { @@ -1864,6 +1955,12 @@ int sldns_wire2str_edns_option_print(char** s, size_t* sl, case LDNS_EDNS_CLIENT_SUBNET: w += sldns_wire2str_edns_subnet_print(s, sl, optdata, optlen); break; + case LDNS_EDNS_KEEPALIVE: + w += sldns_wire2str_edns_keepalive_print(s, sl, optdata, optlen); + break; + case LDNS_EDNS_PADDING: + w += print_hex_buf(s, sl, optdata, optlen); + break; default: /* unknown option code */ w += print_hex_buf(s, sl, optdata, optlen); @@ -1956,10 +2053,10 @@ int sldns_wire2str_edns_scan(uint8_t** data, size_t* data_len, char** str, w += sldns_str_print(str, str_len, " ; udp: %u", (unsigned)udpsize); if(rdatalen) { - if(*data_len < rdatalen) { + if((size_t)*data_len < rdatalen) { w += sldns_str_print(str, str_len, " ; Error EDNS rdata too short; "); - rdatalen = *data_len; + rdatalen = (uint16_t)*data_len; } w += print_edns_opts(str, str_len, *data, rdatalen); (*data) += rdatalen; diff --git a/external/unbound/sldns/wire2str.h b/external/unbound/sldns/wire2str.h index 67f5435..a64f580 100644 --- a/external/unbound/sldns/wire2str.h +++ b/external/unbound/sldns/wire2str.h @@ -38,6 +38,8 @@ extern struct sldns_struct_lookup_table* sldns_edns_flags; extern struct sldns_struct_lookup_table* sldns_edns_options; /** error string from wireparse */ extern struct sldns_struct_lookup_table* sldns_wireparse_errors; +/** tsig errors are the rcodes with extra (higher) values */ +extern struct sldns_struct_lookup_table* sldns_tsig_errors; /** * Convert wireformat packet to a string representation @@ -118,7 +120,7 @@ int sldns_str_print(char** str, size_t* slen, const char* format, ...) * @param str_len: the size of the string buffer. If more is needed, it'll * silently truncate the output to fit in the buffer. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_pkt_buf(uint8_t* data, size_t data_len, char* str, size_t str_len); @@ -351,11 +353,27 @@ int sldns_wire2str_edns_option_code_print(char** str, size_t* str_len, * @param str_len: the size of the string buffer. If more is needed, it'll * silently truncate the output to fit in the buffer. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_rr_buf(uint8_t* rr, size_t rr_len, char* str, size_t str_len); +/** + * Convert question RR to string presentation format, on one line. User buffer. + * @param rr: wireformat RR data + * @param rr_len: length of the rr wire data. + * @param str: the string buffer to write to. + * If you pass NULL as the str, the return value of the function is + * the str_len you need for the entire packet. It does not include + * the 0 byte at the end. + * @param str_len: the size of the string buffer. If more is needed, it'll + * silently truncate the output to fit in the buffer. + * @return the number of characters for this element, excluding zerobyte. + * Is larger or equal than str_len if output was truncated. + */ +int sldns_wire2str_rrquestion_buf(uint8_t* rr, size_t rr_len, char* str, + size_t str_len); + /** * 3597 printout of an RR in unknown rr format. * There are more format and comment options available for printout @@ -369,7 +387,7 @@ int sldns_wire2str_rr_buf(uint8_t* rr, size_t rr_len, char* str, * @param str_len: the size of the string buffer. If more is needed, it'll * silently truncate the output to fit in the buffer. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_rr_unknown_buf(uint8_t* rr, size_t rr_len, char* str, size_t str_len); @@ -389,7 +407,7 @@ int sldns_wire2str_rr_unknown_buf(uint8_t* rr, size_t rr_len, char* str, * @param str_len: the size of the string buffer. If more is needed, it'll * silently truncate the output to fit in the buffer. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_rr_comment_buf(uint8_t* rr, size_t rr_len, size_t dname_len, char* str, size_t str_len); @@ -406,7 +424,7 @@ int sldns_wire2str_rr_comment_buf(uint8_t* rr, size_t rr_len, size_t dname_len, * silently truncate the output to fit in the buffer. * @param rrtype: rr type of the data * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char* str, size_t str_len, uint16_t rrtype); @@ -417,7 +435,7 @@ int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char* str, * @param str: the string to write to. * @param len: length of str. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_type_buf(uint16_t rrtype, char* str, size_t len); @@ -427,7 +445,7 @@ int sldns_wire2str_type_buf(uint16_t rrtype, char* str, size_t len); * @param str: the string to write to. * @param len: length of str. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_class_buf(uint16_t rrclass, char* str, size_t len); @@ -437,10 +455,21 @@ int sldns_wire2str_class_buf(uint16_t rrclass, char* str, size_t len); * @param str: the string to write to. * @param len: length of str. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_rcode_buf(int rcode, char* str, size_t len); +/** + * Convert host format opcode to a string. 'QUERY', 'NOTIFY', 'UPDATE'. + * With user buffer. + * @param opcode: opcode as integer in host order + * @param str: the string to write to. + * @param len: length of str. + * @return the number of characters for this element, excluding zerobyte. + * Is larger or equal than str_len if output was truncated. + */ +int sldns_wire2str_opcode_buf(int opcode, char* str, size_t len); + /** * Convert wire dname to a string, "example.com.". With user buffer. * @param dname: the dname in uncompressed wireformat. @@ -448,7 +477,7 @@ int sldns_wire2str_rcode_buf(int rcode, char* str, size_t len); * @param str: the string to write to. * @param len: length of string. * @return the number of characters for this element, excluding zerobyte. - * Is larger than str_len if output was truncated. + * Is larger or equal than str_len if output was truncated. */ int sldns_wire2str_dname_buf(uint8_t* dname, size_t dname_len, char* str, size_t len); @@ -796,6 +825,19 @@ int sldns_wire2str_hip_scan(uint8_t** data, size_t* data_len, char** str, int sldns_wire2str_int16_data_scan(uint8_t** data, size_t* data_len, char** str, size_t* str_len); +/** + * Scan wireformat tsigerror field to string, with user buffers. + * It shifts the arguments to move along (see sldns_wire2str_pkt_scan). + * @param data: wireformat data. + * @param data_len: length of data buffer. + * @param str: string buffer. + * @param str_len: length of string buffer. + * @return number of characters (except null) needed to print. + * Can return -1 on failure. + */ +int sldns_wire2str_tsigerror_scan(uint8_t** data, size_t* data_len, char** str, + size_t* str_len); + /** * Scan wireformat nsec3_next_owner field to string, with user buffers. * It shifts the arguments to move along (see sldns_wire2str_pkt_scan). diff --git a/external/unbound/smallapp/unbound-anchor.c b/external/unbound/smallapp/unbound-anchor.c index 81bb896..b300910 100644 --- a/external/unbound/smallapp/unbound-anchor.c +++ b/external/unbound/smallapp/unbound-anchor.c @@ -37,7 +37,8 @@ * \file * * This file checks to see that the current 5011 keys work to prime the - * current root anchor. If not a certificate is used to update the anchor. + * current root anchor. If not a certificate is used to update the anchor, + * with RFC7958 https xml fetch. * * This is a concept solution for distribution of the DNSSEC root * trust anchor. It is a small tool, called "unbound-anchor", that @@ -47,7 +48,7 @@ * Management-Abstract: * * first run: fill root.key file with hardcoded DS record. * * mostly: use RFC5011 tracking, quick . DNSKEY UDP query. - * * failover: use builtin certificate, do https and update. + * * failover: use RFC7958 builtin certificate, do https and update. * Special considerations: * * 30-days RFC5011 timer saves a lot of https traffic. * * DNSKEY probe must be NOERROR, saves a lot of https traffic. @@ -77,7 +78,7 @@ * the file contains a list of normal DNSKEY/DS records, and uses that to * bootstrap 5011 (the KSK is made VALID). * - * The certificate update is done by fetching root-anchors.xml and + * The certificate RFC7958 update is done by fetching root-anchors.xml and * root-anchors.p7s via SSL. The HTTPS certificate can be logged but is * not validated (https for channel security; the security comes from the * certificate). The 'data.iana.org' domain name A and AAAA are resolved @@ -171,7 +172,7 @@ struct ip_list { /** Give unbound-anchor usage, and exit (1). */ static void -usage() +usage(void) { printf("Usage: unbound-anchor [opts]\n"); printf(" Setup or update root anchor. " @@ -240,7 +241,12 @@ static const char* get_builtin_ds(void) { return -". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5\n"; +/* The anchors must start on a new line with ". IN DS and end with \n"[;] + * because the makedist script greps on the source here */ +/* anchor 19036 is from 2010 */ +/* anchor 20326 is from 2017 */ +". IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5\n" +". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; } /** print hex data */ @@ -419,8 +425,14 @@ read_builtin_cert(void) { const char* builtin_cert = get_builtin_cert(); STACK_OF(X509)* sk; - BIO *bio = BIO_new_mem_buf((void*)builtin_cert, - (int)strlen(builtin_cert)); + BIO *bio; + char* d = strdup(builtin_cert); /* to avoid const warnings in the + changed prototype of BIO_new_mem_buf */ + if(!d) { + if(verb) printf("out of memory\n"); + exit(0); + } + bio = BIO_new_mem_buf(d, (int)strlen(d)); if(!bio) { if(verb) printf("out of memory\n"); exit(0); @@ -431,6 +443,7 @@ read_builtin_cert(void) exit(0); } BIO_free(bio); + free(d); return sk; } @@ -656,7 +669,7 @@ wipe_ip_usage(struct ip_list* p) } } -/** cound unused IPs */ +/** count unused IPs */ static int count_unused(struct ip_list* p) { @@ -1836,7 +1849,7 @@ write_unsigned_root(const char* root_anchor_file) #ifdef HAVE_FSYNC fsync(fileno(out)); #else - FlushFileBuffers((HANDLE)_fileno(out)); + FlushFileBuffers((HANDLE)_get_osfhandle(_fileno(out))); #endif fclose(out); } @@ -1868,7 +1881,7 @@ write_root_anchor(const char* root_anchor_file, BIO* ds) #ifdef HAVE_FSYNC fsync(fileno(out)); #else - FlushFileBuffers((HANDLE)_fileno(out)); + FlushFileBuffers((HANDLE)_get_osfhandle(_fileno(out))); #endif fclose(out); } @@ -2310,10 +2323,24 @@ int main(int argc, char* argv[]) if(argc != 0) usage(); +#ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS ERR_load_crypto_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) OpenSSL_add_all_algorithms(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif if(dolist) do_list_builtin(); diff --git a/external/unbound/smallapp/unbound-checkconf.c b/external/unbound/smallapp/unbound-checkconf.c index ec07713..37ba9ea 100644 --- a/external/unbound/smallapp/unbound-checkconf.c +++ b/external/unbound/smallapp/unbound-checkconf.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -53,6 +53,9 @@ #include "iterator/iter_hints.h" #include "validator/validator.h" #include "services/localzone.h" +#include "services/view.h" +#include "services/authzone.h" +#include "respip/respip.h" #include "sldns/sbuffer.h" #ifdef HAVE_GETOPT_H #include @@ -69,10 +72,13 @@ #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef CLIENT_SUBNET +#include "edns-subnet/subnet-whitelist.h" +#endif /** Give checkconf usage, and exit (1). */ static void -usage() +usage(void) { printf("Usage: unbound-checkconf [file]\n"); printf(" Checks unbound configuration file for errors.\n"); @@ -86,10 +92,10 @@ usage() exit(1); } -/** - * Print given option to stdout +/** + * Print given option to stdout * @param cfg: config - * @param opt: option name without trailing :. + * @param opt: option name without trailing :. * This is different from config_set_option. * @param final: if final pathname with chroot applied has to be printed. */ @@ -97,7 +103,20 @@ static void print_option(struct config_file* cfg, const char* opt, int final) { if(strcmp(opt, "pidfile") == 0 && final) { - printf("%s\n", fname_after_chroot(cfg->pidfile, cfg, 1)); + char *p = fname_after_chroot(cfg->pidfile, cfg, 1); + if(!p) fatal_exit("out of memory"); + printf("%s\n", p); + free(p); + return; + } + if(strcmp(opt, "auto-trust-anchor-file") == 0 && final) { + struct config_strlist* s = cfg->auto_trust_anchor_file_list; + for(; s; s=s->next) { + char *p = fname_after_chroot(s->str, cfg, 1); + if(!p) fatal_exit("out of memory"); + printf("%s\n", p); + free(p); + } return; } if(!config_get_option(cfg, opt, config_print_func, stdout)) @@ -115,12 +134,15 @@ check_mod(struct config_file* cfg, struct module_func_block* fb) env.scratch_buffer = sldns_buffer_new(BUFSIZ); if(!env.scratch || !env.scratch_buffer) fatal_exit("out of memory"); + if(!edns_known_options_init(&env)) + fatal_exit("out of memory"); if(!(*fb->init)(&env, 0)) { fatal_exit("bad config for %s module", fb->name); } (*fb->deinit)(&env, 0); sldns_buffer_free(env.scratch_buffer); regional_destroy(env.scratch); + edns_known_options_delete(&env); } /** check localzones */ @@ -135,6 +157,27 @@ localzonechecks(struct config_file* cfg) local_zones_delete(zs); } +/** check view and response-ip configuration */ +static void +view_and_respipchecks(struct config_file* cfg) +{ + struct views* views = NULL; + struct respip_set* respip = NULL; + int ignored = 0; + if(!(views = views_create())) + fatal_exit("Could not create views: out of memory"); + if(!(respip = respip_set_create())) + fatal_exit("Could not create respip set: out of memory"); + if(!views_apply_cfg(views, cfg)) + fatal_exit("Could not set up views"); + if(!respip_global_apply_cfg(respip, cfg)) + fatal_exit("Could not setup respip set"); + if(!respip_views_apply_cfg(views, cfg, &ignored)) + fatal_exit("Could not setup per-view respip sets"); + views_delete(views); + respip_set_delete(respip); +} + /** emit warnings for IP in hosts */ static void warn_hosts(const char* typ, struct config_stub* list) @@ -149,7 +192,7 @@ warn_hosts(const char* typ, struct config_stub* list) fprintf(stderr, "unbound-checkconf: warning:" " %s %s: \"%s\" is an IP%s address, " "and when looked up as a host name " - "during use may not resolve.\n", + "during use may not resolve.\n", s->name, typ, h->str, addr_is_ip6(&a, alen)?"6":"4"); } @@ -161,6 +204,7 @@ warn_hosts(const char* typ, struct config_stub* list) static void interfacechecks(struct config_file* cfg) { + int d; struct sockaddr_storage a; socklen_t alen; int i, j; @@ -177,8 +221,8 @@ interfacechecks(struct config_file* cfg) } } for(i=0; inum_out_ifs; i++) { - if(!ipstrtoaddr(cfg->out_ifs[i], UNBOUND_DNS_PORT, - &a, &alen)) { + if(!ipstrtoaddr(cfg->out_ifs[i], UNBOUND_DNS_PORT, &a, &alen) && + !netblockstrtoaddr(cfg->out_ifs[i], UNBOUND_DNS_PORT, &a, &alen, &d)) { fatal_exit("cannot parse outgoing-interface " "specified as '%s'", cfg->out_ifs[i]); } @@ -200,7 +244,7 @@ aclchecks(struct config_file* cfg) socklen_t alen; struct config_str2list* acl; for(acl=cfg->acls; acl; acl = acl->next) { - if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, + if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, &d)) { fatal_exit("cannot parse access control address %s %s", acl->str, acl->str2); @@ -210,7 +254,7 @@ aclchecks(struct config_file* cfg) /** true if fname is a file */ static int -is_file(const char* fname) +is_file(const char* fname) { struct stat buf; if(stat(fname, &buf) < 0) { @@ -230,7 +274,7 @@ is_file(const char* fname) /** true if fname is a directory */ static int -is_dir(const char* fname) +is_dir(const char* fname) { struct stat buf; if(stat(fname, &buf) < 0) { @@ -275,7 +319,7 @@ check_chroot_string(const char* desc, char** ss, fatal_exit("%s: \"%s\" does not exist in " "chrootdir %s", desc, str, chrootdir); else - fatal_exit("%s: \"%s\" does not exist", + fatal_exit("%s: \"%s\" does not exist", desc, str); } /* put in a new full path for continued checking */ @@ -302,8 +346,8 @@ check_chroot_filelist_wild(const char* desc, struct config_strlist* list, struct config_strlist* p; for(p=list; p; p=p->next) { #ifdef HAVE_GLOB - if(strchr(p->str, '*') || strchr(p->str, '[') || - strchr(p->str, '?') || strchr(p->str, '{') || + if(strchr(p->str, '*') || strchr(p->str, '[') || + strchr(p->str, '?') || strchr(p->str, '{') || strchr(p->str, '~')) { char* s = p->str; /* adjust whole pattern for chroot and check later */ @@ -315,6 +359,20 @@ check_chroot_filelist_wild(const char* desc, struct config_strlist* list, } } +#ifdef CLIENT_SUBNET +/** check ECS configuration */ +static void +ecs_conf_checks(struct config_file* cfg) +{ + struct ecs_whitelist* whitelist = NULL; + if(!(whitelist = ecs_whitelist_create())) + fatal_exit("Could not create ednssubnet whitelist: out of memory"); + if(!ecs_whitelist_apply_cfg(whitelist, cfg)) + fatal_exit("Could not setup ednssubnet whitelist"); + ecs_whitelist_delete(whitelist); +} +#endif /* CLIENT_SUBNET */ + /** check configuration for errors */ static void morechecks(struct config_file* cfg, const char* fname) @@ -330,6 +388,8 @@ morechecks(struct config_file* cfg, const char* fname) fatal_exit("num_threads value weird"); if(!cfg->do_ip4 && !cfg->do_ip6) fatal_exit("ip4 and ip6 are both disabled, pointless"); + if(!cfg->do_ip6 && cfg->prefer_ip6) + fatal_exit("cannot prefer and disable ip6, pointless"); if(!cfg->do_udp && !cfg->do_tcp) fatal_exit("udp and tcp are both disabled, pointless"); if(cfg->edns_buffer_size > cfg->msg_buffer_size) @@ -338,11 +398,11 @@ morechecks(struct config_file* cfg, const char* fname) #ifdef UB_ON_WINDOWS w_config_adjust_directory(cfg); #endif - if(cfg->chrootdir && cfg->chrootdir[0] && + if(cfg->chrootdir && cfg->chrootdir[0] && cfg->chrootdir[strlen(cfg->chrootdir)-1] == '/') fatal_exit("chootdir %s has trailing slash '/' please remove.", cfg->chrootdir); - if(cfg->chrootdir && cfg->chrootdir[0] && + if(cfg->chrootdir && cfg->chrootdir[0] && !is_dir(cfg->chrootdir)) { fatal_exit("bad chroot directory"); } @@ -384,33 +444,89 @@ morechecks(struct config_file* cfg, const char* fname) } } - check_chroot_filelist("file with root-hints", + check_chroot_filelist("file with root-hints", cfg->root_hints, cfg->chrootdir, cfg); - check_chroot_filelist("trust-anchor-file", + check_chroot_filelist("trust-anchor-file", cfg->trust_anchor_file_list, cfg->chrootdir, cfg); - check_chroot_filelist("auto-trust-anchor-file", + check_chroot_filelist("auto-trust-anchor-file", cfg->auto_trust_anchor_file_list, cfg->chrootdir, cfg); - check_chroot_filelist_wild("trusted-keys-file", + check_chroot_filelist_wild("trusted-keys-file", cfg->trusted_keys_file_list, cfg->chrootdir, cfg); - check_chroot_string("dlv-anchor-file", &cfg->dlv_anchor_file, + check_chroot_string("dlv-anchor-file", &cfg->dlv_anchor_file, cfg->chrootdir, cfg); +#ifdef USE_IPSECMOD + if(cfg->ipsecmod_enabled && strstr(cfg->module_conf, "ipsecmod")) { + /* only check hook if enabled */ + check_chroot_string("ipsecmod-hook", &cfg->ipsecmod_hook, + cfg->chrootdir, cfg); + } +#endif /* remove chroot setting so that modules are not stripping pathnames*/ free(cfg->chrootdir); cfg->chrootdir = NULL; - - if(strcmp(cfg->module_conf, "iterator") != 0 + + /* There should be no reason for 'respip' module not to work with + * dns64, but it's not explicitly confirmed, so the combination is + * excluded below. It's simply unknown yet for the combination of + * respip and other modules. */ + if(strcmp(cfg->module_conf, "iterator") != 0 && strcmp(cfg->module_conf, "validator iterator") != 0 && strcmp(cfg->module_conf, "dns64 validator iterator") != 0 && strcmp(cfg->module_conf, "dns64 iterator") != 0 + && strcmp(cfg->module_conf, "respip iterator") != 0 + && strcmp(cfg->module_conf, "respip validator iterator") != 0 #ifdef WITH_PYTHONMODULE - && strcmp(cfg->module_conf, "python iterator") != 0 - && strcmp(cfg->module_conf, "python validator iterator") != 0 + && strcmp(cfg->module_conf, "python iterator") != 0 + && strcmp(cfg->module_conf, "python validator iterator") != 0 && strcmp(cfg->module_conf, "validator python iterator") != 0 - && strcmp(cfg->module_conf, "dns64 python iterator") != 0 - && strcmp(cfg->module_conf, "dns64 python validator iterator") != 0 + && strcmp(cfg->module_conf, "dns64 python iterator") != 0 + && strcmp(cfg->module_conf, "dns64 python validator iterator") != 0 && strcmp(cfg->module_conf, "dns64 validator python iterator") != 0 - && strcmp(cfg->module_conf, "python dns64 iterator") != 0 - && strcmp(cfg->module_conf, "python dns64 validator iterator") != 0 + && strcmp(cfg->module_conf, "python dns64 iterator") != 0 + && strcmp(cfg->module_conf, "python dns64 validator iterator") != 0 +#endif +#ifdef USE_CACHEDB + && strcmp(cfg->module_conf, "validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 cachedb iterator") != 0 +#endif +#if defined(WITH_PYTHONMODULE) && defined(USE_CACHEDB) + && strcmp(cfg->module_conf, "python dns64 cachedb iterator") != 0 + && strcmp(cfg->module_conf, "python dns64 validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 python cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 python validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "python cachedb iterator") != 0 + && strcmp(cfg->module_conf, "python validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "cachedb python iterator") != 0 + && strcmp(cfg->module_conf, "validator cachedb python iterator") != 0 + && strcmp(cfg->module_conf, "validator python cachedb iterator") != 0 +#endif +#ifdef CLIENT_SUBNET + && strcmp(cfg->module_conf, "subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "dns64 subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "dns64 subnetcache validator iterator") != 0 +#endif +#if defined(WITH_PYTHONMODULE) && defined(CLIENT_SUBNET) + && strcmp(cfg->module_conf, "python subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache python iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "python subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache python validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator python iterator") != 0 +#endif +#ifdef USE_IPSECMOD + && strcmp(cfg->module_conf, "ipsecmod iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator iterator") != 0 +#endif +#if defined(WITH_PYTHONMODULE) && defined(USE_IPSECMOD) + && strcmp(cfg->module_conf, "python ipsecmod iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod python iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "python ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod python validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator python iterator") != 0 #endif ) { fatal_exit("module conf '%s' is not known to work", @@ -421,10 +537,13 @@ morechecks(struct config_file* cfg, const char* fname) if(cfg->username && cfg->username[0]) { if(getpwnam(cfg->username) == NULL) fatal_exit("user '%s' does not exist.", cfg->username); +# ifdef HAVE_ENDPWENT endpwent(); +# endif } #endif - if(cfg->remote_control_enable && cfg->remote_control_use_cert) { + if(cfg->remote_control_enable && options_remote_is_address(cfg) + && cfg->control_use_cert) { check_chroot_string("server-key-file", &cfg->server_key_file, cfg->chrootdir, cfg); check_chroot_string("server-cert-file", &cfg->server_cert_file, @@ -438,6 +557,10 @@ morechecks(struct config_file* cfg, const char* fname) } localzonechecks(cfg); + view_and_respipchecks(cfg); +#ifdef CLIENT_SUBNET + ecs_conf_checks(cfg); +#endif } /** check forwards */ @@ -462,18 +585,37 @@ check_hints(struct config_file* cfg) hints_delete(hints); } +/** check auth zones */ +static void +check_auth(struct config_file* cfg) +{ + struct auth_zones* az = auth_zones_create(); + if(!az || !auth_zones_apply_cfg(az, cfg, 0)) { + fatal_exit("Could not setup authority zones"); + } + auth_zones_delete(az); +} + /** check config file */ static void checkconf(const char* cfgfile, const char* opt, int final) { + char oldwd[4096]; struct config_file* cfg = config_create(); if(!cfg) fatal_exit("out of memory"); + oldwd[0] = 0; + if(!getcwd(oldwd, sizeof(oldwd))) { + log_err("cannot getcwd: %s", strerror(errno)); + oldwd[0] = 0; + } if(!config_read(cfg, cfgfile, NULL)) { /* config_read prints messages to stderr */ config_delete(cfg); exit(1); } + if(oldwd[0] && chdir(oldwd) == -1) + log_err("cannot chdir(%s): %s", oldwd, strerror(errno)); if(opt) { print_option(cfg, opt, final); config_delete(cfg); @@ -488,6 +630,7 @@ checkconf(const char* cfgfile, const char* opt, int final) #endif check_fwd(cfg); check_hints(cfg); + check_auth(cfg); printf("unbound-checkconf: no errors in %s\n", cfgfile); config_delete(cfg); } diff --git a/external/unbound/smallapp/unbound-control.c b/external/unbound/smallapp/unbound-control.c index fac73b0..d165417 100644 --- a/external/unbound/smallapp/unbound-control.c +++ b/external/unbound/smallapp/unbound-control.c @@ -58,14 +58,24 @@ #include "util/config_file.h" #include "util/locks.h" #include "util/net_help.h" +#include "util/shm_side/shm_main.h" +#include "daemon/stats.h" +#include "sldns/wire2str.h" +#include "sldns/pkthdr.h" +#ifdef HAVE_SYS_IPC_H +#include "sys/ipc.h" +#endif +#ifdef HAVE_SYS_SHM_H +#include "sys/shm.h" +#endif #ifdef HAVE_SYS_UN_H #include #endif /** Give unbound-control usage, and exit (1). */ static void -usage() +usage(void) { printf("Usage: unbound-control [options] command\n"); printf(" Remote control utility for unbound server.\n"); @@ -81,6 +91,9 @@ usage() printf(" (this flushes data, stats, requestlist)\n"); printf(" stats print statistics\n"); printf(" stats_noreset peek at statistics\n"); +#ifdef HAVE_SHMGET + printf(" stats_shm print statistics using shm\n"); +#endif printf(" status display status of server\n"); printf(" verbosity change logging detail\n"); printf(" log_reopen close and open the logfile\n"); @@ -89,6 +102,9 @@ usage() printf(" local_data add local data, for example\n"); printf(" local_data www.example.com A 192.0.2.1\n"); printf(" local_data_remove remove local RR data from name\n"); + printf(" local_zones, local_zones_remove, local_datas, local_datas_remove\n"); + printf(" same, but read list from stdin\n"); + printf(" (one entry per line).\n"); printf(" dump_cache print cache to stdout\n"); printf(" load_cache load cache from stdin\n"); printf(" lookup print nameservers for name\n"); @@ -102,7 +118,7 @@ usage() printf(" flush_negative flush all negative data\n"); printf(" flush_stats flush statistics, make zero\n"); printf(" flush_requestlist drop queries that are worked on\n"); - printf(" dump_requestlist show what is worked on\n"); + printf(" dump_requestlist show what is worked on by first thread\n"); printf(" flush_infra [all | ip] remove ping, edns for one IP or all\n"); printf(" dump_infra show ping and edns entries\n"); printf(" set_option opt: val set option to value, no reload\n"); @@ -124,13 +140,302 @@ usage() printf(" or off to turn off root forwarding\n"); printf(" or give list of ip addresses\n"); printf(" ratelimit_list [+a] list ratelimited domains\n"); + printf(" ip_ratelimit_list [+a] list ratelimited ip addresses\n"); printf(" +a list all, also not ratelimited\n"); + printf(" list_auth_zones list auth zones\n"); + printf(" view_list_local_zones view list local-zones in view\n"); + printf(" view_list_local_data view list local-data RRs in view\n"); + printf(" view_local_zone view name type add local-zone in view\n"); + printf(" view_local_zone_remove view name remove local-zone in view\n"); + printf(" view_local_data view RR... add local-data in view\n"); + printf(" view_local_data_remove view name remove local-data in view\n"); printf("Version %s\n", PACKAGE_VERSION); printf("BSD licensed, see LICENSE in source package for details.\n"); printf("Report bugs to %s\n", PACKAGE_BUGREPORT); exit(1); } +#ifdef HAVE_SHMGET +/** what to put on statistics lines between var and value, ": " or "=" */ +#define SQ "=" +/** if true, inhibits a lot of =0 lines from the stats output */ +static const int inhibit_zero = 1; +/** divide sum of timers to get average */ +static void +timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) +{ +#ifndef S_SPLINT_S + size_t leftover; + if(d == 0) { + avg->tv_sec = 0; + avg->tv_usec = 0; + return; + } + avg->tv_sec = sum->tv_sec / d; + avg->tv_usec = sum->tv_usec / d; + /* handle fraction from seconds divide */ + leftover = sum->tv_sec - avg->tv_sec*d; + avg->tv_usec += (leftover*1000000)/d; +#endif +} + +/** print unsigned long stats value */ +#define PR_UL_NM(str, var) printf("%s."str SQ"%lu\n", nm, (unsigned long)(var)); +#define PR_UL(str, var) printf(str SQ"%lu\n", (unsigned long)(var)); +#define PR_UL_SUB(str, nm, var) printf(str".%s"SQ"%lu\n", nm, (unsigned long)(var)); +#define PR_TIMEVAL(str, var) printf(str SQ ARG_LL "d.%6.6d\n", \ + (long long)var.tv_sec, (int)var.tv_usec); +#define PR_STATSTIME(str, var) printf(str SQ ARG_LL "d.%6.6d\n", \ + (long long)var ## _sec, (int)var ## _usec); +#define PR_LL(str, var) printf(str SQ ARG_LL"d\n", (long long)(var)); + +/** print stat block */ +static void pr_stats(const char* nm, struct ub_stats_info* s) +{ + struct timeval sumwait, avg; + PR_UL_NM("num.queries", s->svr.num_queries); + PR_UL_NM("num.queries_ip_ratelimited", + s->svr.num_queries_ip_ratelimited); + PR_UL_NM("num.cachehits", + s->svr.num_queries - s->svr.num_queries_missed_cache); + PR_UL_NM("num.cachemiss", s->svr.num_queries_missed_cache); + PR_UL_NM("num.prefetch", s->svr.num_queries_prefetch); + PR_UL_NM("num.zero_ttl", s->svr.zero_ttl_responses); + PR_UL_NM("num.recursivereplies", s->mesh_replies_sent); +#ifdef USE_DNSCRYPT + PR_UL_NM("num.dnscrypt.crypted", s->svr.num_query_dnscrypt_crypted); + PR_UL_NM("num.dnscrypt.cert", s->svr.num_query_dnscrypt_cert); + PR_UL_NM("num.dnscrypt.cleartext", s->svr.num_query_dnscrypt_cleartext); + PR_UL_NM("num.dnscrypt.malformed", + s->svr.num_query_dnscrypt_crypted_malformed); +#endif /* USE_DNSCRYPT */ + printf("%s.requestlist.avg"SQ"%g\n", nm, + (s->svr.num_queries_missed_cache+s->svr.num_queries_prefetch)? + (double)s->svr.sum_query_list_size/ + (double)(s->svr.num_queries_missed_cache+ + s->svr.num_queries_prefetch) : 0.0); + PR_UL_NM("requestlist.max", s->svr.max_query_list_size); + PR_UL_NM("requestlist.overwritten", s->mesh_jostled); + PR_UL_NM("requestlist.exceeded", s->mesh_dropped); + PR_UL_NM("requestlist.current.all", s->mesh_num_states); + PR_UL_NM("requestlist.current.user", s->mesh_num_reply_states); +#ifndef S_SPLINT_S + sumwait.tv_sec = s->mesh_replies_sum_wait_sec; + sumwait.tv_usec = s->mesh_replies_sum_wait_usec; +#endif + timeval_divide(&avg, &sumwait, s->mesh_replies_sent); + printf("%s.", nm); + PR_TIMEVAL("recursion.time.avg", avg); + printf("%s.recursion.time.median"SQ"%g\n", nm, s->mesh_time_median); + PR_UL_NM("tcpusage", s->svr.tcp_accept_usage); +} + +/** print uptime */ +static void print_uptime(struct ub_shm_stat_info* shm_stat) +{ + PR_STATSTIME("time.now", shm_stat->time.now); + PR_STATSTIME("time.up", shm_stat->time.up); + PR_STATSTIME("time.elapsed", shm_stat->time.elapsed); +} + +/** print memory usage */ +static void print_mem(struct ub_shm_stat_info* shm_stat) +{ + PR_LL("mem.cache.rrset", shm_stat->mem.rrset); + PR_LL("mem.cache.message", shm_stat->mem.msg); + PR_LL("mem.mod.iterator", shm_stat->mem.iter); + PR_LL("mem.mod.validator", shm_stat->mem.val); + PR_LL("mem.mod.respip", shm_stat->mem.respip); +#ifdef CLIENT_SUBNET + PR_LL("mem.mod.subnet", shm_stat->mem.subnet); +#endif +#ifdef USE_IPSECMOD + PR_LL("mem.mod.ipsecmod", shm_stat->mem.ipsecmod); +#endif +#ifdef USE_DNSCRYPT + PR_LL("mem.cache.dnscrypt_shared_secret", + shm_stat->mem.dnscrypt_shared_secret); + PR_LL("mem.cache.dnscrypt_nonce", + shm_stat->mem.dnscrypt_nonce); +#endif +} + +/** print histogram */ +static void print_hist(struct ub_stats_info* s) +{ + struct timehist* hist; + size_t i; + hist = timehist_setup(); + if(!hist) + fatal_exit("out of memory"); + timehist_import(hist, s->svr.hist, NUM_BUCKETS_HIST); + for(i=0; inum; i++) { + printf("histogram.%6.6d.%6.6d.to.%6.6d.%6.6d=%lu\n", + (int)hist->buckets[i].lower.tv_sec, + (int)hist->buckets[i].lower.tv_usec, + (int)hist->buckets[i].upper.tv_sec, + (int)hist->buckets[i].upper.tv_usec, + (unsigned long)hist->buckets[i].count); + } + timehist_delete(hist); +} + +/** print extended */ +static void print_extended(struct ub_stats_info* s) +{ + int i; + char nm[16]; + + /* TYPE */ + for(i=0; isvr.qtype[i] == 0) + continue; + sldns_wire2str_type_buf((uint16_t)i, nm, sizeof(nm)); + PR_UL_SUB("num.query.type", nm, s->svr.qtype[i]); + } + if(!inhibit_zero || s->svr.qtype_big) { + PR_UL("num.query.type.other", s->svr.qtype_big); + } + + /* CLASS */ + for(i=0; isvr.qclass[i] == 0) + continue; + sldns_wire2str_class_buf((uint16_t)i, nm, sizeof(nm)); + PR_UL_SUB("num.query.class", nm, s->svr.qclass[i]); + } + if(!inhibit_zero || s->svr.qclass_big) { + PR_UL("num.query.class.other", s->svr.qclass_big); + } + + /* OPCODE */ + for(i=0; isvr.qopcode[i] == 0) + continue; + sldns_wire2str_opcode_buf(i, nm, sizeof(nm)); + PR_UL_SUB("num.query.opcode", nm, s->svr.qopcode[i]); + } + + /* transport */ + PR_UL("num.query.tcp", s->svr.qtcp); + PR_UL("num.query.tcpout", s->svr.qtcp_outgoing); + PR_UL("num.query.ipv6", s->svr.qipv6); + + /* flags */ + PR_UL("num.query.flags.QR", s->svr.qbit_QR); + PR_UL("num.query.flags.AA", s->svr.qbit_AA); + PR_UL("num.query.flags.TC", s->svr.qbit_TC); + PR_UL("num.query.flags.RD", s->svr.qbit_RD); + PR_UL("num.query.flags.RA", s->svr.qbit_RA); + PR_UL("num.query.flags.Z", s->svr.qbit_Z); + PR_UL("num.query.flags.AD", s->svr.qbit_AD); + PR_UL("num.query.flags.CD", s->svr.qbit_CD); + PR_UL("num.query.edns.present", s->svr.qEDNS); + PR_UL("num.query.edns.DO", s->svr.qEDNS_DO); + + /* RCODE */ + for(i=0; i LDNS_RCODE_REFUSED && s->svr.ans_rcode[i] == 0) + continue; + sldns_wire2str_rcode_buf(i, nm, sizeof(nm)); + PR_UL_SUB("num.answer.rcode", nm, s->svr.ans_rcode[i]); + } + if(!inhibit_zero || s->svr.ans_rcode_nodata) { + PR_UL("num.answer.rcode.nodata", s->svr.ans_rcode_nodata); + } + /* iteration */ + PR_UL("num.query.ratelimited", s->svr.queries_ratelimited); + /* validation */ + PR_UL("num.answer.secure", s->svr.ans_secure); + PR_UL("num.answer.bogus", s->svr.ans_bogus); + PR_UL("num.rrset.bogus", s->svr.rrset_bogus); + PR_UL("num.query.aggressive.NOERROR", s->svr.num_neg_cache_noerror); + PR_UL("num.query.aggressive.NXDOMAIN", s->svr.num_neg_cache_nxdomain); + /* threat detection */ + PR_UL("unwanted.queries", s->svr.unwanted_queries); + PR_UL("unwanted.replies", s->svr.unwanted_replies); + /* cache counts */ + PR_UL("msg.cache.count", s->svr.msg_cache_count); + PR_UL("rrset.cache.count", s->svr.rrset_cache_count); + PR_UL("infra.cache.count", s->svr.infra_cache_count); + PR_UL("key.cache.count", s->svr.key_cache_count); +#ifdef USE_DNSCRYPT + PR_UL("dnscrypt_shared_secret.cache.count", + s->svr.shared_secret_cache_count); + PR_UL("num.query.dnscrypt.shared_secret.cachemiss", + s->svr.num_query_dnscrypt_secret_missed_cache); + PR_UL("dnscrypt_nonce.cache.count", s->svr.nonce_cache_count); + PR_UL("num.query.dnscrypt.replay", + s->svr.num_query_dnscrypt_replay); +#endif /* USE_DNSCRYPT */ + PR_UL("num.query.authzone.up", s->svr.num_query_authzone_up); + PR_UL("num.query.authzone.down", s->svr.num_query_authzone_down); +} + +/** print statistics out of memory structures */ +static void do_stats_shm(struct config_file* cfg, struct ub_stats_info* stats, + struct ub_shm_stat_info* shm_stat) +{ + int i; + char nm[32]; + for(i=0; inum_threads; i++) { + snprintf(nm, sizeof(nm), "thread%d", i); + pr_stats(nm, &stats[i+1]); + } + pr_stats("total", &stats[0]); + print_uptime(shm_stat); + if(cfg->stat_extended) { + print_mem(shm_stat); + print_hist(stats); + print_extended(stats); + } +} +#endif /* HAVE_SHMGET */ + +/** print statistics from shm memory segment */ +static void print_stats_shm(const char* cfgfile) +{ +#ifdef HAVE_SHMGET + struct config_file* cfg; + struct ub_stats_info* stats; + struct ub_shm_stat_info* shm_stat; + int id_ctl, id_arr; + /* read config */ + if(!(cfg = config_create())) + fatal_exit("out of memory"); + if(!config_read(cfg, cfgfile, NULL)) + fatal_exit("could not read config file"); + /* get shm segments */ + id_ctl = shmget(cfg->shm_key, sizeof(int), SHM_R|SHM_W); + if(id_ctl == -1) { + fatal_exit("shmget(%d): %s", cfg->shm_key, strerror(errno)); + } + id_arr = shmget(cfg->shm_key+1, sizeof(int), SHM_R|SHM_W); + if(id_arr == -1) { + fatal_exit("shmget(%d): %s", cfg->shm_key+1, strerror(errno)); + } + shm_stat = (struct ub_shm_stat_info*)shmat(id_ctl, NULL, 0); + if(shm_stat == (void*)-1) { + fatal_exit("shmat(%d): %s", id_ctl, strerror(errno)); + } + stats = (struct ub_stats_info*)shmat(id_arr, NULL, 0); + if(stats == (void*)-1) { + fatal_exit("shmat(%d): %s", id_arr, strerror(errno)); + } + + /* print the stats */ + do_stats_shm(cfg, stats, shm_stat); + + /* shutdown */ + shmdt(shm_stat); + shmdt(stats); + config_delete(cfg); +#else + (void)cfgfile; +#endif /* HAVE_SHMGET */ +} + /** exit with ssl error */ static void ssl_err(const char* s) { @@ -146,39 +451,33 @@ setup_ctx(struct config_file* cfg) char* s_cert=NULL, *c_key=NULL, *c_cert=NULL; SSL_CTX* ctx; - if(cfg->remote_control_use_cert) { - s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); - c_key = fname_after_chroot(cfg->control_key_file, cfg, 1); - c_cert = fname_after_chroot(cfg->control_cert_file, cfg, 1); - if(!s_cert || !c_key || !c_cert) - fatal_exit("out of memory"); - } - ctx = SSL_CTX_new(SSLv23_client_method()); + if(!(options_remote_is_address(cfg) && cfg->control_use_cert)) + return NULL; + s_cert = fname_after_chroot(cfg->server_cert_file, cfg, 1); + c_key = fname_after_chroot(cfg->control_key_file, cfg, 1); + c_cert = fname_after_chroot(cfg->control_cert_file, cfg, 1); + if(!s_cert || !c_key || !c_cert) + fatal_exit("out of memory"); + ctx = SSL_CTX_new(SSLv23_client_method()); if(!ctx) ssl_err("could not allocate SSL_CTX pointer"); - if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) != SSL_OP_NO_SSLv2) ssl_err("could not set SSL_OP_NO_SSLv2"); - if(cfg->remote_control_use_cert) { - if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) - != SSL_OP_NO_SSLv3) - ssl_err("could not set SSL_OP_NO_SSLv3"); - if(!SSL_CTX_use_certificate_chain_file(ctx,c_cert) || - !SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM) - || !SSL_CTX_check_private_key(ctx)) - ssl_err("Error setting up SSL_CTX client key and cert"); - if (SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) - ssl_err("Error setting up SSL_CTX verify, server cert"); - SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); - - free(s_cert); - free(c_key); - free(c_cert); - } else { - /* Use ciphers that don't require authentication */ - if(!SSL_CTX_set_cipher_list(ctx, "aNULL")) - ssl_err("Error setting NULL cipher!"); - } + if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) + != SSL_OP_NO_SSLv3) + ssl_err("could not set SSL_OP_NO_SSLv3"); + if(!SSL_CTX_use_certificate_chain_file(ctx,c_cert) || + !SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM) + || !SSL_CTX_check_private_key(ctx)) + ssl_err("Error setting up SSL_CTX client key and cert"); + if (SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) + ssl_err("Error setting up SSL_CTX verify, server cert"); + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); + + free(s_cert); + free(c_key); + free(c_cert); return ctx; } @@ -188,13 +487,17 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) { struct sockaddr_storage addr; socklen_t addrlen; - int addrfamily = 0; - int fd; + int addrfamily = 0, proto = IPPROTO_TCP; + int fd, useport = 1; /* use svr or the first config entry */ if(!svr) { - if(cfg->control_ifs) - svr = cfg->control_ifs->str; - else svr = "127.0.0.1"; + if(cfg->control_ifs.first) { + svr = cfg->control_ifs.first->str; + } else if(cfg->do_ip4) { + svr = "127.0.0.1"; + } else { + svr = "::1"; + } /* config 0 addr (everything), means ask localhost */ if(strcmp(svr, "0.0.0.0") == 0) svr = "127.0.0.1"; @@ -212,11 +515,13 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) struct sockaddr_un* usock = (struct sockaddr_un *) &addr; usock->sun_family = AF_LOCAL; #ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN - usock->sun_len = (socklen_t)sizeof(usock); + usock->sun_len = (unsigned)sizeof(usock); #endif (void)strlcpy(usock->sun_path, svr, sizeof(usock->sun_path)); addrlen = (socklen_t)sizeof(struct sockaddr_un); addrfamily = AF_LOCAL; + useport = 0; + proto = 0; #endif } else { if(!ipstrtoaddr(svr, cfg->control_port, &addr, &addrlen)) @@ -224,8 +529,8 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) } if(addrfamily == 0) - addrfamily = addr_is_ip6(&addr, addrlen)?AF_INET6:AF_INET; - fd = socket(addrfamily, SOCK_STREAM, 0); + addrfamily = addr_is_ip6(&addr, addrlen)?PF_INET6:PF_INET; + fd = socket(addrfamily, SOCK_STREAM, proto); if(fd == -1) { #ifndef USE_WINSOCK fatal_exit("socket: %s", strerror(errno)); @@ -235,14 +540,18 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) } if(connect(fd, (struct sockaddr*)&addr, addrlen) < 0) { #ifndef USE_WINSOCK - log_err_addr("connect", strerror(errno), &addr, addrlen); - if(errno == ECONNREFUSED && statuscmd) { + int err = errno; + if(!useport) log_err("connect: %s for %s", strerror(err), svr); + else log_err_addr("connect", strerror(err), &addr, addrlen); + if(err == ECONNREFUSED && statuscmd) { printf("unbound is stopped\n"); exit(3); } #else - log_err_addr("connect", wsa_strerror(WSAGetLastError()), &addr, addrlen); - if(WSAGetLastError() == WSAECONNREFUSED && statuscmd) { + int wsaerr = WSAGetLastError(); + if(!useport) log_err("connect: %s for %s", wsa_strerror(wsaerr), svr); + else log_err_addr("connect", wsa_strerror(wsaerr), &addr, addrlen); + if(wsaerr == WSAECONNREFUSED && statuscmd) { printf("unbound is stopped\n"); exit(3); } @@ -254,12 +563,13 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) /** setup SSL on the connection */ static SSL* -setup_ssl(SSL_CTX* ctx, int fd, struct config_file* cfg) +setup_ssl(SSL_CTX* ctx, int fd) { SSL* ssl; X509* x; int r; + if(!ctx) return NULL; ssl = SSL_new(ctx); if(!ssl) ssl_err("could not SSL_new"); @@ -280,62 +590,115 @@ setup_ssl(SSL_CTX* ctx, int fd, struct config_file* cfg) /* check authenticity of server */ if(SSL_get_verify_result(ssl) != X509_V_OK) ssl_err("SSL verification failed"); - if(cfg->remote_control_use_cert) { - x = SSL_get_peer_certificate(ssl); - if(!x) - ssl_err("Server presented no peer certificate"); - X509_free(x); - } + x = SSL_get_peer_certificate(ssl); + if(!x) + ssl_err("Server presented no peer certificate"); + X509_free(x); return ssl; } +/** read from ssl or fd, fatalexit on error, 0 EOF, 1 success */ +static int +remote_read(SSL* ssl, int fd, char* buf, size_t len) +{ + if(ssl) { + int r; + ERR_clear_error(); + if((r = SSL_read(ssl, buf, (int)len-1)) <= 0) { + if(SSL_get_error(ssl, r) == SSL_ERROR_ZERO_RETURN) { + /* EOF */ + return 0; + } + ssl_err("could not SSL_read"); + } + buf[r] = 0; + } else { + ssize_t rr = recv(fd, buf, len-1, 0); + if(rr <= 0) { + if(rr == 0) { + /* EOF */ + return 0; + } +#ifndef USE_WINSOCK + fatal_exit("could not recv: %s", strerror(errno)); +#else + fatal_exit("could not recv: %s", wsa_strerror(WSAGetLastError())); +#endif + } + buf[rr] = 0; + } + return 1; +} + +/** write to ssl or fd, fatalexit on error */ +static void +remote_write(SSL* ssl, int fd, const char* buf, size_t len) +{ + if(ssl) { + if(SSL_write(ssl, buf, (int)len) <= 0) + ssl_err("could not SSL_write"); + } else { + if(send(fd, buf, len, 0) < (ssize_t)len) { +#ifndef USE_WINSOCK + fatal_exit("could not send: %s", strerror(errno)); +#else + fatal_exit("could not send: %s", wsa_strerror(WSAGetLastError())); +#endif + } + } +} + /** send stdin to server */ static void -send_file(SSL* ssl, FILE* in, char* buf, size_t sz) +send_file(SSL* ssl, int fd, FILE* in, char* buf, size_t sz) { while(fgets(buf, (int)sz, in)) { - if(SSL_write(ssl, buf, (int)strlen(buf)) <= 0) - ssl_err("could not SSL_write contents"); + remote_write(ssl, fd, buf, strlen(buf)); } } +/** send end-of-file marker to server */ +static void +send_eof(SSL* ssl, int fd) +{ + char e[] = {0x04, 0x0a}; + remote_write(ssl, fd, e, sizeof(e)); +} + /** send command and display result */ static int -go_cmd(SSL* ssl, int quiet, int argc, char* argv[]) +go_cmd(SSL* ssl, int fd, int quiet, int argc, char* argv[]) { char pre[10]; const char* space=" "; const char* newline="\n"; int was_error = 0, first_line = 1; - int r, i; + int i; char buf[1024]; snprintf(pre, sizeof(pre), "UBCT%d ", UNBOUND_CONTROL_VERSION); - if(SSL_write(ssl, pre, (int)strlen(pre)) <= 0) - ssl_err("could not SSL_write"); + remote_write(ssl, fd, pre, strlen(pre)); for(i=0; i0&&strcmp(argv[0],"status")==0); - ssl = setup_ssl(ctx, fd, cfg); + ssl = setup_ssl(ctx, fd); /* send command */ - ret = go_cmd(ssl, quiet, argc, argv); + ret = go_cmd(ssl, fd, quiet, argc, argv); - SSL_free(ssl); + if(ssl) SSL_free(ssl); #ifndef USE_WINSOCK close(fd); #else closesocket(fd); #endif - SSL_CTX_free(ctx); + if(ctx) SSL_CTX_free(ctx); config_delete(cfg); return ret; } @@ -403,7 +766,7 @@ int main(int argc, char* argv[]) WSADATA wsa_data; #endif #ifdef USE_THREAD_DEBUG - /* stop the file output from unbound-control, overwites the servers */ + /* stop the file output from unbound-control, overwrites the servers */ extern int check_locking_order; check_locking_order = 0; #endif /* USE_THREAD_DEBUG */ @@ -411,32 +774,10 @@ int main(int argc, char* argv[]) log_init(NULL, 0, NULL); checklock_start(); #ifdef USE_WINSOCK - if((r = WSAStartup(MAKEWORD(2,2), &wsa_data)) != 0) - fatal_exit("WSAStartup failed: %s", wsa_strerror(r)); /* use registry config file in preference to compiletime location */ if(!(cfgfile=w_lookup_reg_str("Software\\Unbound", "ConfigFile"))) cfgfile = CONFIGFILE; #endif - - ERR_load_crypto_strings(); - ERR_load_SSL_strings(); - OpenSSL_add_all_algorithms(); - (void)SSL_library_init(); - - if(!RAND_status()) { - /* try to seed it */ - unsigned char buf[256]; - unsigned int seed=(unsigned)time(NULL) ^ (unsigned)getpid(); - unsigned int v = seed; - size_t i; - for(i=0; i<256/sizeof(v); i++) { - memmove(buf+i*sizeof(v), &v, sizeof(v)); - v = v*seed + (unsigned int)i; - } - RAND_seed(buf, 256); - log_warn("no entropy, seeding openssl PRNG with time\n"); - } - /* parse the options */ while( (c=getopt(argc, argv, "c:s:qh")) != -1) { switch(c) { @@ -466,11 +807,53 @@ int main(int argc, char* argv[]) strerror(errno)); } } + if(argc >= 1 && strcmp(argv[0], "stats_shm")==0) { + print_stats_shm(cfgfile); + return 0; + } + +#ifdef USE_WINSOCK + if((r = WSAStartup(MAKEWORD(2,2), &wsa_data)) != 0) + fatal_exit("WSAStartup failed: %s", wsa_strerror(r)); +#endif + +#ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS + ERR_load_crypto_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) + OpenSSL_add_all_algorithms(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif + + if(!RAND_status()) { + /* try to seed it */ + unsigned char buf[256]; + unsigned int seed=(unsigned)time(NULL) ^ (unsigned)getpid(); + unsigned int v = seed; + size_t i; + for(i=0; i<256/sizeof(v); i++) { + memmove(buf+i*sizeof(v), &v, sizeof(v)); + v = v*seed + (unsigned int)i; + } + RAND_seed(buf, 256); + log_warn("no entropy, seeding openssl PRNG with time\n"); + } ret = go(cfgfile, svr, quiet, argc, argv); #ifdef USE_WINSOCK - WSACleanup(); + WSACleanup(); #endif checklock_stop(); return ret; diff --git a/external/unbound/smallapp/unbound-host.c b/external/unbound/smallapp/unbound-host.c index 30fef51..cd1ffe3 100644 --- a/external/unbound/smallapp/unbound-host.c +++ b/external/unbound/smallapp/unbound-host.c @@ -66,13 +66,21 @@ /* nss3 */ #include "nss.h" #endif +#ifdef HAVE_SSL +#ifdef HAVE_OPENSSL_SSL_H +#include +#endif +#ifdef HAVE_OPENSSL_ERR_H +#include +#endif +#endif /* HAVE_SSL */ /** verbosity for unbound-host app */ static int verb = 0; /** Give unbound-host usage, and exit (1). */ static void -usage() +usage(void) { printf("Usage: unbound-host [-vdhr46] [-c class] [-t type] hostname\n"); printf(" [-y key] [-f keyfile] [-F namedkeyfile]\n"); @@ -91,7 +99,7 @@ usage() printf(" -F keyfile read named.conf-style trust anchors.\n"); printf(" -C config use the specified unbound.conf (none read by default)\n"); printf(" -r read forwarder information from /etc/resolv.conf\n"); - printf(" breaks validation if the fwder does not do DNSSEC.\n"); + printf(" breaks validation if the forwarder does not do DNSSEC.\n"); printf(" -v be more verbose, shows nodata and security.\n"); printf(" -d debug, traces the action, -d -d shows more.\n"); printf(" -4 use ipv4 network, avoid ipv6.\n"); @@ -209,6 +217,7 @@ massage_class(const char* c) static const char* secure_str(struct ub_result* result) { + if(result->rcode != 0 && result->rcode != 3) return "(error)"; if(result->secure) return "(secure)"; if(result->bogus) return "(BOGUS (security failure))"; return "(insecure)"; @@ -486,6 +495,26 @@ int main(int argc, char* argv[]) if(argc != 1) usage(); +#ifdef HAVE_SSL +#ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS + ERR_load_crypto_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) + OpenSSL_add_all_algorithms(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif +#endif /* HAVE_SSL */ #ifdef HAVE_NSS if(NSS_NoDB_Init(".") != SECSuccess) { fprintf(stderr, "could not init NSS\n"); diff --git a/external/unbound/smallapp/worker_cb.c b/external/unbound/smallapp/worker_cb.c index 8193bec..dda94cc 100644 --- a/external/unbound/smallapp/worker_cb.c +++ b/external/unbound/smallapp/worker_cb.c @@ -99,13 +99,13 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg)) log_assert(0); } -struct outbound_entry* worker_send_query(uint8_t* ATTR_UNUSED(qname), - size_t ATTR_UNUSED(qnamelen), uint16_t ATTR_UNUSED(qtype), - uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags), +struct outbound_entry* worker_send_query( + struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q)) + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), + char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; @@ -131,13 +131,13 @@ worker_alloc_cleanup(void* ATTR_UNUSED(arg)) log_assert(0); } -struct outbound_entry* libworker_send_query(uint8_t* ATTR_UNUSED(qname), - size_t ATTR_UNUSED(qnamelen), uint16_t ATTR_UNUSED(qtype), - uint16_t ATTR_UNUSED(qclass), uint16_t ATTR_UNUSED(flags), +struct outbound_entry* libworker_send_query( + struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), struct module_qstate* ATTR_UNUSED(q)) + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), + char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; @@ -223,8 +223,8 @@ struct order_id { int order_lock_cmp(const void* e1, const void* e2) { - struct order_id* o1 = (struct order_id*)e1; - struct order_id* o2 = (struct order_id*)e2; + const struct order_id* o1 = e1; + const struct order_id* o2 = e2; if(o1->thr < o2->thr) return -1; if(o1->thr > o2->thr) return 1; if(o1->instance < o2->instance) return -1; @@ -235,7 +235,7 @@ int order_lock_cmp(const void* e1, const void* e2) int codeline_cmp(const void* a, const void* b) { - return strcmp((const char*)a, (const char*)b); + return strcmp(a, b); } int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) diff --git a/external/unbound/systemd.m4 b/external/unbound/systemd.m4 new file mode 100644 index 0000000..e5d4e27 --- /dev/null +++ b/external/unbound/systemd.m4 @@ -0,0 +1,31 @@ +# macros for configuring systemd +# Copyright 2015, Sami Kerola, CloudFlare. +# BSD licensed. +AC_ARG_ENABLE([systemd], + [AS_HELP_STRING([--enable-systemd], [compile with systemd support])], + [], [enable_systemd=no]) +have_systemd=no +AS_IF([test "x$enable_systemd" != xno], [ + ifdef([PKG_CHECK_MODULES], [ + dnl systemd v209 or newer + PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [have_systemd=yes], [have_systemd=no]) + dnl old systemd library + AS_IF([test "x$have_systemd" != "xyes"], [ + PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon], + [have_systemd_daemon=yes], [have_systemd_daemon=no]) + AS_IF([test "x$have_systemd_daemon" = "xyes"], + [have_systemd=yes]) + ]) + AS_CASE([$enable_systemd:$have_systemd], + [yes:no], + [AC_MSG_ERROR([systemd enabled but libsystemd not found])], + [*:yes], + [AC_DEFINE([HAVE_SYSTEMD], [1], [Define to 1 if systemd should be used]) + LIBS="$LIBS $SYSTEMD_LIBS" + ] + ) + ], [ + AC_MSG_ERROR([systemd enabled but need pkg-config to configure for it]) + ]) +]) +AM_CONDITIONAL([USE_SYSTEMD], [test "x$have_systemd" = xyes]) diff --git a/external/unbound/testcode/asynclook.c b/external/unbound/testcode/asynclook.c index 5344897..06bcf5a 100644 --- a/external/unbound/testcode/asynclook.c +++ b/external/unbound/testcode/asynclook.c @@ -56,6 +56,15 @@ #undef free #undef strdup #endif +#ifdef HAVE_SSL +#ifdef HAVE_OPENSSL_SSL_H +#include +#endif +#ifdef HAVE_OPENSSL_ERR_H +#include +#endif +#endif /* HAVE_SSL */ + /** keeping track of the async ids */ struct track_id { @@ -64,7 +73,7 @@ struct track_id { /** true if cancelled */ int cancel; /** a lock on this structure for thread safety */ - lock_basic_t lock; + lock_basic_type lock; }; /** @@ -164,7 +173,7 @@ struct ext_thr_info { /** thread num for debug */ int thread_num; /** thread id */ - ub_thread_t tid; + ub_thread_type tid; /** context */ struct ub_ctx* ctx; /** size of array to query */ @@ -335,12 +344,17 @@ ext_thread(void* arg) r = ub_wait(inf->ctx); checkerr("ub_ctx_wait", r); } + /* if these locks are destroyed, or if the async_ids is freed, then + a use-after-free happens in another thread. + The allocation is only part of this test, though. */ + /* if(async_ids) { for(i=0; inumq; i++) { lock_basic_destroy(&async_ids[i].lock); } } free(async_ids); + */ return NULL; } @@ -454,6 +468,27 @@ int main(int argc, char** argv) argc -= optind; argv += optind; +#ifdef HAVE_SSL +#ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS + ERR_load_crypto_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) + OpenSSL_add_all_algorithms(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif +#endif /* HAVE_SSL */ + if(ext) return ext_test(ctx, argc, argv); @@ -465,7 +500,7 @@ int main(int argc, char** argv) return 1; } - /* perform asyncronous calls */ + /* perform asynchronous calls */ num_wait = argc; for(i=0; ic_rw), __func__, __FILE__, __LINE__) #define lock_rw_destroy(lock) checklock_destroy(check_lock_rwlock, &((lock)->c_rw), __func__, __FILE__, __LINE__) #define lock_rw_rdlock(lock) checklock_rdlock(check_lock_rwlock, (lock)->c_rw, __func__, __FILE__, __LINE__) @@ -315,26 +315,26 @@ typedef struct checked_lock_rw lock_rw_t; #define lock_rw_unlock(lock) checklock_unlock(check_lock_rwlock, (lock)->c_rw, __func__, __FILE__, __LINE__) /** debugging mutex */ -typedef struct checked_lock_mutex lock_basic_t; +typedef struct checked_lock_mutex lock_basic_type; #define lock_basic_init(lock) checklock_init(check_lock_mutex, &((lock)->c_m), __func__, __FILE__, __LINE__) #define lock_basic_destroy(lock) checklock_destroy(check_lock_mutex, &((lock)->c_m), __func__, __FILE__, __LINE__) #define lock_basic_lock(lock) checklock_lock(check_lock_mutex, (lock)->c_m, __func__, __FILE__, __LINE__) #define lock_basic_unlock(lock) checklock_unlock(check_lock_mutex, (lock)->c_m, __func__, __FILE__, __LINE__) /** debugging spinlock */ -typedef struct checked_lock_spl lock_quick_t; +typedef struct checked_lock_spl lock_quick_type; #define lock_quick_init(lock) checklock_init(check_lock_spinlock, &((lock)->c_spl), __func__, __FILE__, __LINE__) #define lock_quick_destroy(lock) checklock_destroy(check_lock_spinlock, &((lock)->c_spl), __func__, __FILE__, __LINE__) #define lock_quick_lock(lock) checklock_lock(check_lock_spinlock, (lock)->c_spl, __func__, __FILE__, __LINE__) #define lock_quick_unlock(lock) checklock_unlock(check_lock_spinlock, (lock)->c_spl, __func__, __FILE__, __LINE__) /** we use the pthread id, our thr_check structure is kept behind the scenes */ -typedef pthread_t ub_thread_t; +typedef pthread_t ub_thread_type; #define ub_thread_create(thr, func, arg) checklock_thrcreate(thr, func, arg) #define ub_thread_self() pthread_self() #define ub_thread_join(thread) checklock_thrjoin(thread) -typedef pthread_key_t ub_thread_key_t; +typedef pthread_key_t ub_thread_key_type; #define ub_thread_key_create(key, f) LOCKRET(pthread_key_create(key, f)) #define ub_thread_key_set(key, v) LOCKRET(pthread_setspecific(key, v)) #define ub_thread_key_get(key) pthread_getspecific(key) diff --git a/external/unbound/testcode/delayer.c b/external/unbound/testcode/delayer.c index 050cbd2..5489b59 100644 --- a/external/unbound/testcode/delayer.c +++ b/external/unbound/testcode/delayer.c @@ -1042,7 +1042,7 @@ service(const char* bind_str, int bindport, const char* serv_str, } i=0; if(bindport == 0) { - bindport = 1024 + random()%64000; + bindport = 1024 + arc4random()%64000; i = 100; } while(1) { @@ -1058,7 +1058,7 @@ service(const char* bind_str, int bindport, const char* serv_str, #endif if(i--==0) fatal_exit("cannot bind any port"); - bindport = 1024 + random()%64000; + bindport = 1024 + arc4random()%64000; } else break; } fd_set_nonblock(s); @@ -1138,7 +1138,6 @@ int main(int argc, char** argv) verbosity = 0; log_init(0, 0, 0); log_ident_set("delayer"); - srandom(time(NULL) ^ getpid()); if(argc == 1) usage(argv); while( (c=getopt(argc, argv, "b:d:f:hm:p:")) != -1) { switch(c) { diff --git a/external/unbound/testcode/do-tests.sh b/external/unbound/testcode/do-tests.sh index 6ea12cd..5439f0f 100644 --- a/external/unbound/testcode/do-tests.sh +++ b/external/unbound/testcode/do-tests.sh @@ -1,14 +1,15 @@ #!/usr/bin/env bash . testdata/common.sh -NEED_SPLINT='00-lint.tpkg' -NEED_DOXYGEN='01-doc.tpkg' -NEED_XXD='fwd_compress_c00c.tpkg fwd_zero.tpkg' -NEED_NC='fwd_compress_c00c.tpkg fwd_zero.tpkg' -NEED_CURL='06-ianaports.tpkg root_anchor.tpkg' -NEED_WHOAMI='07-confroot.tpkg' -NEED_IPV6='fwd_ancil.tpkg fwd_tcp_tc6.tpkg stub_udp6.tpkg edns_cache.tpkg' -NEED_NOMINGW='tcp_sigpipe.tpkg 07-confroot.tpkg 08-host-lib.tpkg fwd_ancil.tpkg' +NEED_SPLINT='00-lint.tdir' +NEED_DOXYGEN='01-doc.tdir' +NEED_XXD='fwd_compress_c00c.tdir fwd_zero.tdir' +NEED_NC='fwd_compress_c00c.tdir fwd_zero.tdir' +NEED_CURL='06-ianaports.tdir root_anchor.tdir' +NEED_WHOAMI='07-confroot.tdir' +NEED_IPV6='fwd_ancil.tdir fwd_tcp_tc6.tdir stub_udp6.tdir edns_cache.tdir' +NEED_NOMINGW='tcp_sigpipe.tdir 07-confroot.tdir 08-host-lib.tdir fwd_ancil.tdir' +NEED_DNSCRYPT_PROXY='dnscrypt_queries.tdir dnscrypt_queries_chacha.tdir' # test if dig and ldns-testns are available. test_tool_avail "dig" @@ -29,9 +30,9 @@ else fi cd testdata; -sh ../testcode/mini_tpkg.sh clean +sh ../testcode/mini_tdir.sh clean rm -f .perfstats.txt -for test in `ls *.tpkg`; do +for test in `ls -d *.tdir`; do SKIP=0 skip_if_in_list $test "$NEED_SPLINT" "splint" skip_if_in_list $test "$NEED_DOXYGEN" "doxygen" @@ -39,6 +40,7 @@ for test in `ls *.tpkg`; do skip_if_in_list $test "$NEED_XXD" "xxd" skip_if_in_list $test "$NEED_NC" "nc" skip_if_in_list $test "$NEED_WHOAMI" "whoami" + skip_if_in_list $test "$NEED_DNSCRYPT_PROXY" "dnscrypt-proxy" if echo $NEED_IPV6 | grep $test >/dev/null; then if test "$HAVE_IPV6" = no; then @@ -52,10 +54,10 @@ for test in `ls *.tpkg`; do fi if test $SKIP -eq 0; then echo $test - sh ../testcode/mini_tpkg.sh -a ../.. exe $test + sh ../testcode/mini_tdir.sh -a ../.. exe $test else echo "skip $test" fi done -sh ../testcode/mini_tpkg.sh report +sh ../testcode/mini_tdir.sh report cat .perfstats.txt diff --git a/external/unbound/testcode/fake_event.c b/external/unbound/testcode/fake_event.c index e371cfd..80e3685 100644 --- a/external/unbound/testcode/fake_event.c +++ b/external/unbound/testcode/fake_event.c @@ -67,6 +67,29 @@ struct worker; struct daemon_remote; +/** unique code to check that fake_commpoint is that structure */ +#define FAKE_COMMPOINT_TYPECODE 97347923 +/** fake commpoint, stores information */ +struct fake_commpoint { + /** typecode */ + int typecode; + /** if this is a udp outgoing type of commpoint */ + int type_udp_out; + /** if this is a tcp outgoing type of commpoint */ + int type_tcp_out; + /** if this is a http outgoing type of commpoint. */ + int type_http_out; + + /** the callback, stored for usage */ + comm_point_callback_type* cb; + /** the callback userarg, stored for usage */ + void* cb_arg; + /** runtime ptr */ + struct replay_runtime* runtime; + /** the pending entry for this commpoint (if any) */ + struct fake_pending* pending; +}; + /** Global variable: the scenario. Saved here for when event_init is done. */ static struct replay_scenario* saved_scenario = NULL; @@ -137,6 +160,7 @@ repevt_string(enum replay_event_type t) case repevt_back_reply: return "REPLY"; case repevt_back_query: return "CHECK_OUT_QUERY"; case repevt_autotrust_check: return "CHECK_AUTOTRUST"; + case repevt_tempfile_check: return "CHECK_TEMPFILE"; case repevt_error: return "ERROR"; case repevt_assign: return "ASSIGN"; case repevt_traffic: return "TRAFFIC"; @@ -247,7 +271,11 @@ pending_matches_range(struct replay_runtime* runtime, struct fake_pending* p = runtime->pending_list; /* slow, O(N*N), but it works as advertised with weird matching */ while(p) { - log_info("check of pending"); + if(p->tcp_pkt_counter != 0) { + /* continue tcp transfer */ + *pend = p; + return 1; + } if(pending_find_match(runtime, entry, p)) { *pend = p; return 1; @@ -278,24 +306,46 @@ pending_list_delete(struct replay_runtime* runtime, struct fake_pending* pend) } } +/** number of replies in entry */ +static int +count_reply_packets(struct entry* entry) +{ + int count = 0; + struct reply_packet* reppkt = entry->reply_list; + while(reppkt) { + count++; + reppkt = reppkt->next; + } + return count; +} + /** * Fill buffer with reply from the entry. */ static void fill_buffer_with_reply(sldns_buffer* buffer, struct entry* entry, uint8_t* q, - size_t qlen) + size_t qlen, int tcp_pkt_counter) { + struct reply_packet* reppkt; uint8_t* c; size_t clen; log_assert(entry && entry->reply_list); sldns_buffer_clear(buffer); - if(entry->reply_list->reply_from_hex) { - c = sldns_buffer_begin(entry->reply_list->reply_from_hex); - clen = sldns_buffer_limit(entry->reply_list->reply_from_hex); + reppkt = entry->reply_list; + if(tcp_pkt_counter > 0) { + int i = tcp_pkt_counter; + while(reppkt && i--) + reppkt = reppkt->next; + if(!reppkt) fatal_exit("extra packet read from TCP stream but none is available"); + log_pkt("extra_packet ", reppkt->reply_pkt, reppkt->reply_len); + } + if(reppkt->reply_from_hex) { + c = sldns_buffer_begin(reppkt->reply_from_hex); + clen = sldns_buffer_limit(reppkt->reply_from_hex); if(!c) fatal_exit("out of memory"); } else { - c = entry->reply_list->reply_pkt; - clen = entry->reply_list->reply_len; + c = reppkt->reply_pkt; + clen = reppkt->reply_len; } if(c) { if(q) adjust_packet(entry, &c, &clen, q, qlen); @@ -318,7 +368,7 @@ answer_callback_from_entry(struct replay_runtime* runtime, struct comm_point c; struct comm_reply repinfo; void* cb_arg = pend->cb_arg; - comm_point_callback_t* cb = pend->callback; + comm_point_callback_type* cb = pend->callback; memset(&c, 0, sizeof(c)); c.fd = -1; @@ -326,12 +376,20 @@ answer_callback_from_entry(struct replay_runtime* runtime, c.type = comm_udp; if(pend->transport == transport_tcp) c.type = comm_tcp; - fill_buffer_with_reply(c.buffer, entry, pend->pkt, pend->pkt_len); + fill_buffer_with_reply(c.buffer, entry, pend->pkt, pend->pkt_len, + pend->tcp_pkt_counter); repinfo.c = &c; repinfo.addrlen = pend->addrlen; memcpy(&repinfo.addr, &pend->addr, pend->addrlen); - if(!pend->serviced) - pending_list_delete(runtime, pend); + if(!pend->serviced) { + if(entry->reply_list->next && + pend->tcp_pkt_counter < count_reply_packets(entry)) { + /* go to next packet next time */ + pend->tcp_pkt_counter++; + } else { + pending_list_delete(runtime, pend); + } + } if((*cb)(&c, cb_arg, NETEVENT_NOERROR, &repinfo)) { fatal_exit("testbound: unexpected: callback returned 1"); } @@ -397,7 +455,7 @@ fake_front_query(struct replay_runtime* runtime, struct replay_moment *todo) if(todo->match->match_transport == transport_tcp) repinfo.c->type = comm_tcp; else repinfo.c->type = comm_udp; - fill_buffer_with_reply(repinfo.c->buffer, todo->match, NULL, 0); + fill_buffer_with_reply(repinfo.c->buffer, todo->match, NULL, 0, 0); log_info("testbound: incoming QUERY"); log_pkt("query pkt", todo->match->reply_list->reply_pkt, todo->match->reply_list->reply_len); @@ -422,7 +480,7 @@ fake_pending_callback(struct replay_runtime* runtime, struct comm_reply repinfo; struct comm_point c; void* cb_arg; - comm_point_callback_t* cb; + comm_point_callback_type* cb; memset(&c, 0, sizeof(c)); if(!p) fatal_exit("No pending queries."); @@ -434,13 +492,20 @@ fake_pending_callback(struct replay_runtime* runtime, c.type = comm_tcp; if(todo->evt_type == repevt_back_reply && todo->match) { fill_buffer_with_reply(c.buffer, todo->match, p->pkt, - p->pkt_len); + p->pkt_len, p->tcp_pkt_counter); } repinfo.c = &c; repinfo.addrlen = p->addrlen; memcpy(&repinfo.addr, &p->addr, p->addrlen); - if(!p->serviced) - pending_list_delete(runtime, p); + if(!p->serviced) { + if(todo->match->reply_list->next && !error && + p->tcp_pkt_counter < count_reply_packets(todo->match)) { + /* go to next packet next time */ + p->tcp_pkt_counter++; + } else { + pending_list_delete(runtime, p); + } + } if((*cb)(&c, cb_arg, error, &repinfo)) { fatal_exit("unexpected: pending callback returned 1"); } @@ -550,6 +615,59 @@ autotrust_check(struct replay_runtime* runtime, struct replay_moment* mom) log_info("autotrust %s is OK", mom->autotrust_id); } +/** check tempfile file contents */ +static void +tempfile_check(struct replay_runtime* runtime, struct replay_moment* mom) +{ + char name[1024], line[1024]; + FILE *in; + int lineno = 0, oke=1; + char* expanded; + struct config_strlist* p; + line[sizeof(line)-1] = 0; + log_assert(mom->autotrust_id); + fake_temp_file("_temp_", mom->autotrust_id, name, sizeof(name)); + in = fopen(name, "r"); + if(!in) fatal_exit("could not open %s: %s", name, strerror(errno)); + for(p=mom->file_content; p; p=p->next) { + lineno++; + if(!fgets(line, (int)sizeof(line)-1, in)) { + log_err("tempfile check failed, could not read line"); + log_err("file %s, line %d", name, lineno); + log_err("should be: %s", p->str); + fatal_exit("tempfile_check failed"); + } + if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + expanded = macro_process(runtime->vars, runtime, p->str); + if(!expanded) + fatal_exit("could not expand macro line %d", lineno); + if(verbosity >= 7 && strcmp(p->str, expanded) != 0) + log_info("expanded '%s' to '%s'", p->str, expanded); + if(strcmp(expanded, line) != 0) { + log_err("mismatch in file %s, line %d", name, lineno); + log_err("file has : %s", line); + log_err("should be: %s", expanded); + free(expanded); + oke = 0; + continue; + } + free(expanded); + fprintf(stderr, "%s:%2d ok : %s\n", name, lineno, line); + } + if(fgets(line, (int)sizeof(line)-1, in)) { + log_err("tempfile check failed, extra lines in %s after %d", + name, lineno); + do { + fprintf(stderr, "file has: %s", line); + } while(fgets(line, (int)sizeof(line)-1, in)); + oke = 0; + } + fclose(in); + if(!oke) + fatal_exit("tempfile_check STEP %d failed", mom->time_step); + log_info("tempfile %s is OK", mom->autotrust_id); +} + /** Store RTT in infra cache */ static void do_infra_rtt(struct replay_runtime* runtime) @@ -659,6 +777,10 @@ do_moment_and_advance(struct replay_runtime* runtime) autotrust_check(runtime, runtime->now); advance_moment(runtime); break; + case repevt_tempfile_check: + tempfile_check(runtime, runtime->now); + advance_moment(runtime); + break; case repevt_assign: moment_assign(runtime, runtime->now); advance_moment(runtime); @@ -735,7 +857,7 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), size_t bufsize, int ATTR_UNUSED(tcp_accept_count), void* ATTR_UNUSED(sslctx), struct dt_env* ATTR_UNUSED(dtenv), - comm_point_callback_t* cb, void* cb_arg) + comm_point_callback_type* cb, void* cb_arg) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct listen_dnsport* l= calloc(1, sizeof(struct listen_dnsport)); @@ -900,6 +1022,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, struct ub_randstate* ATTR_UNUSED(rnd), int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports), int ATTR_UNUSED(numavailports), size_t ATTR_UNUSED(unwanted_threshold), + int ATTR_UNUSED(outgoing_tcp_mss), void (*unwanted_action)(void*), void* ATTR_UNUSED(unwanted_param), int ATTR_UNUSED(do_udp), void* ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), struct dt_env* ATTR_UNUSED(dtenv)) @@ -936,7 +1059,7 @@ outside_network_quit_prepare(struct outside_network* ATTR_UNUSED(outnet)) struct pending* pending_udp_query(struct serviced_query* sq, sldns_buffer* packet, - int timeout, comm_point_callback_t* callback, void* callback_arg) + int timeout, comm_point_callback_type* callback, void* callback_arg) { struct replay_runtime* runtime = (struct replay_runtime*) sq->outnet->base; @@ -986,7 +1109,7 @@ pending_udp_query(struct serviced_query* sq, sldns_buffer* packet, struct waiting_tcp* pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, - int timeout, comm_point_callback_t* callback, void* callback_arg) + int timeout, comm_point_callback_type* callback, void* callback_arg) { struct replay_runtime* runtime = (struct replay_runtime*) sq->outnet->base; @@ -1002,7 +1125,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, pend->addrlen = sq->addrlen; pend->callback = callback; pend->cb_arg = callback_arg; - pend->timeout = timeout; + pend->timeout = timeout/1000; pend->transport = transport_tcp; pend->pkt = NULL; pend->zone = NULL; @@ -1035,13 +1158,14 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, } struct serviced_query* outnet_serviced_query(struct outside_network* outnet, - uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), int ATTR_UNUSED(tcp_upstream), - int ATTR_UNUSED(ssl_upstream), struct sockaddr_storage* addr, + struct query_info* qinfo, uint16_t flags, int dnssec, + int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), + char* ATTR_UNUSED(tls_auth_name), struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, - comm_point_callback_t* callback, void* callback_arg, - sldns_buffer* ATTR_UNUSED(buff)) + struct module_qstate* qstate, comm_point_callback_type* callback, + void* callback_arg, sldns_buffer* ATTR_UNUSED(buff), + struct module_env* ATTR_UNUSED(env)) { struct replay_runtime* runtime = (struct replay_runtime*)outnet->base; struct fake_pending* pend = (struct fake_pending*)calloc(1, @@ -1049,7 +1173,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, char z[256]; log_assert(pend); log_nametypeclass(VERB_OPS, "pending serviced query", - qname, qtype, qclass); + qinfo->qname, qinfo->qtype, qinfo->qclass); dname_str(zone, z); verbose(VERB_OPS, "pending serviced query zone %s flags%s%s%s%s", z, (flags&BIT_RD)?" RD":"", (flags&BIT_CD)?" CD":"", @@ -1064,18 +1188,24 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sldns_buffer_write_u16(pend->buffer, 0); /* ancount */ sldns_buffer_write_u16(pend->buffer, 0); /* nscount */ sldns_buffer_write_u16(pend->buffer, 0); /* arcount */ - sldns_buffer_write(pend->buffer, qname, qnamelen); - sldns_buffer_write_u16(pend->buffer, qtype); - sldns_buffer_write_u16(pend->buffer, qclass); + sldns_buffer_write(pend->buffer, qinfo->qname, qinfo->qname_len); + sldns_buffer_write_u16(pend->buffer, qinfo->qtype); + sldns_buffer_write_u16(pend->buffer, qinfo->qclass); sldns_buffer_flip(pend->buffer); if(1) { - /* add edns */ struct edns_data edns; + if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, + zone, zonelen, qstate, qstate->region)) { + free(pend); + return NULL; + } + /* add edns */ edns.edns_present = 1; edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits = 0; + edns.opt_list = qstate->edns_opts_back_out; if(dnssec) edns.bits = EDNS_DO; attach_edns_record(pend->buffer, &edns); @@ -1084,11 +1214,11 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, pend->addrlen = addrlen; pend->zone = memdup(zone, zonelen); pend->zonelen = zonelen; - pend->qtype = (int)qtype; + pend->qtype = (int)qinfo->qtype; log_assert(pend->zone); pend->callback = callback; pend->cb_arg = callback_arg; - pend->timeout = UDP_AUTH_QUERY_TIMEOUT; + pend->timeout = UDP_AUTH_QUERY_TIMEOUT/1000; pend->transport = transport_udp; /* pretend UDP */ pend->pkt = NULL; pend->runtime = runtime; @@ -1128,6 +1258,7 @@ void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg) while(p) { if(p == pend) { log_assert(p->cb_arg == cb_arg); + (void)cb_arg; log_info("serviced pending delete"); if(prev) prev->next = p->next; @@ -1157,19 +1288,27 @@ void listening_ports_free(struct listen_port* list) struct comm_point* comm_point_create_local(struct comm_base* ATTR_UNUSED(base), int ATTR_UNUSED(fd), size_t ATTR_UNUSED(bufsize), - comm_point_callback_t* ATTR_UNUSED(callback), + comm_point_callback_type* ATTR_UNUSED(callback), void* ATTR_UNUSED(callback_arg)) { - return calloc(1, 1); + struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, + sizeof(*fc)); + if(!fc) return NULL; + fc->typecode = FAKE_COMMPOINT_TYPECODE; + return (struct comm_point*)fc; } struct comm_point* comm_point_create_raw(struct comm_base* ATTR_UNUSED(base), int ATTR_UNUSED(fd), int ATTR_UNUSED(writing), - comm_point_callback_t* ATTR_UNUSED(callback), + comm_point_callback_type* ATTR_UNUSED(callback), void* ATTR_UNUSED(callback_arg)) { /* no pipe comm possible */ - return calloc(1, 1); + struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, + sizeof(*fc)); + if(!fc) return NULL; + fc->typecode = FAKE_COMMPOINT_TYPECODE; + return (struct comm_point*)fc; } void comm_point_start_listening(struct comm_point* ATTR_UNUSED(c), @@ -1186,6 +1325,13 @@ void comm_point_stop_listening(struct comm_point* ATTR_UNUSED(c)) /* only cmd com _local gets deleted */ void comm_point_delete(struct comm_point* c) { + struct fake_commpoint* fc = (struct fake_commpoint*)c; + if(c == NULL) return; + log_assert(fc->typecode == FAKE_COMMPOINT_TYPECODE); + if(fc->type_tcp_out) { + /* remove tcp pending, so no more callbacks to it */ + pending_list_delete(fc->runtime, fc->pending); + } free(c); } @@ -1277,6 +1423,12 @@ void comm_signal_callback(int ATTR_UNUSED(fd), log_assert(0); } +void comm_point_http_handle_callback(int ATTR_UNUSED(fd), + short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) +{ + log_assert(0); +} + void comm_point_local_handle_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { @@ -1323,7 +1475,7 @@ int serviced_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) return 0; } -/* timers in testbound for autotrust. statistics tested in tpkg. */ +/* timers in testbound for autotrust. statistics tested in tdir. */ struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) { @@ -1386,7 +1538,7 @@ void comm_base_set_slow_accept_handlers(struct comm_base* ATTR_UNUSED(b), (void)start_acc; } -struct event_base* comm_base_internal(struct comm_base* ATTR_UNUSED(b)) +struct ub_event_base* comm_base_internal(struct comm_base* ATTR_UNUSED(b)) { /* no pipe comm possible in testbound */ return NULL; @@ -1412,4 +1564,229 @@ void daemon_remote_stop_accept(struct daemon_remote* ATTR_UNUSED(rc)) { } +int create_udp_sock(int ATTR_UNUSED(family), int ATTR_UNUSED(socktype), + struct sockaddr* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), + int ATTR_UNUSED(v6only), int* ATTR_UNUSED(inuse), + int* ATTR_UNUSED(noproto), int ATTR_UNUSED(rcv), int ATTR_UNUSED(snd), + int ATTR_UNUSED(listen), int* ATTR_UNUSED(reuseport), + int ATTR_UNUSED(transparent), int ATTR_UNUSED(freebind), + int ATTR_UNUSED(use_systemd)) +{ + /* if you actually print to this, it'll be stdout during test */ + return 1; +} + +struct comm_point* comm_point_create_udp(struct comm_base *ATTR_UNUSED(base), + int ATTR_UNUSED(fd), sldns_buffer* ATTR_UNUSED(buffer), + comm_point_callback_type* ATTR_UNUSED(callback), + void* ATTR_UNUSED(callback_arg)) +{ + log_assert(0); + return NULL; +} + +struct comm_point* comm_point_create_tcp_out(struct comm_base* + ATTR_UNUSED(base), size_t ATTR_UNUSED(bufsize), + comm_point_callback_type* ATTR_UNUSED(callback), + void* ATTR_UNUSED(callback_arg)) +{ + log_assert(0); + return NULL; +} + +struct comm_point* outnet_comm_point_for_udp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* ATTR_UNUSED(to_addr), + socklen_t ATTR_UNUSED(to_addrlen)) +{ + struct replay_runtime* runtime = (struct replay_runtime*) + outnet->base; + struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, + sizeof(*fc)); + if(!fc) return NULL; + fc->typecode = FAKE_COMMPOINT_TYPECODE; + fc->type_udp_out = 1; + fc->cb = cb; + fc->cb_arg = cb_arg; + fc->runtime = runtime; + /* used by authzone transfers */ + return (struct comm_point*)fc; +} + +struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, + struct sldns_buffer* query, int timeout) +{ + struct replay_runtime* runtime = (struct replay_runtime*) + outnet->base; + struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, + sizeof(*fc)); + struct fake_pending* pend = (struct fake_pending*)calloc(1, + sizeof(struct fake_pending)); + if(!fc || !pend) { + free(fc); + free(pend); + return NULL; + } + fc->typecode = FAKE_COMMPOINT_TYPECODE; + fc->type_tcp_out = 1; + fc->cb = cb; + fc->cb_arg = cb_arg; + fc->runtime = runtime; + fc->pending = pend; + + /* used by authzone transfers */ + /* create pending item */ + pend->buffer = sldns_buffer_new(sldns_buffer_limit(query)+10); + if(!pend->buffer) { + free(fc); + free(pend); + return NULL; + } + sldns_buffer_copy(pend->buffer, query); + memcpy(&pend->addr, to_addr, to_addrlen); + pend->addrlen = to_addrlen; + pend->zone = NULL; + pend->zonelen = 0; + if(LDNS_QDCOUNT(sldns_buffer_begin(query)) > 0) { + char buf[512]; + char addrbuf[128]; + (void)sldns_wire2str_rrquestion_buf(sldns_buffer_at(query, LDNS_HEADER_SIZE), sldns_buffer_limit(query)-LDNS_HEADER_SIZE, buf, sizeof(buf)); + addr_to_str((struct sockaddr_storage*)to_addr, to_addrlen, + addrbuf, sizeof(addrbuf)); + if(verbosity >= VERB_ALGO) { + if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + log_info("tcp to %s: %s", addrbuf, buf); + } + log_assert(sldns_buffer_limit(query)-LDNS_HEADER_SIZE >= 2); + pend->qtype = (int)sldns_buffer_read_u16_at(query, + LDNS_HEADER_SIZE+ + dname_valid(sldns_buffer_at(query, LDNS_HEADER_SIZE), + sldns_buffer_limit(query)-LDNS_HEADER_SIZE)); + } + pend->callback = cb; + pend->cb_arg = cb_arg; + pend->timeout = timeout; + pend->transport = transport_tcp; + pend->pkt = NULL; + pend->runtime = runtime; + pend->serviced = 0; + pend->pkt_len = sldns_buffer_limit(pend->buffer); + pend->pkt = memdup(sldns_buffer_begin(pend->buffer), pend->pkt_len); + if(!pend->pkt) fatal_exit("out of memory"); + + log_info("testbound: created fake pending for tcp_out"); + + /* add to list */ + pend->next = runtime->pending_list; + runtime->pending_list = pend; + + return (struct comm_point*)fc; +} + +struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, + comm_point_callback_type* cb, void* cb_arg, + struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, + int ssl, char* host, char* path) +{ + struct replay_runtime* runtime = (struct replay_runtime*) + outnet->base; + struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, + sizeof(*fc)); + if(!fc) { + return NULL; + } + fc->typecode = FAKE_COMMPOINT_TYPECODE; + fc->type_http_out = 1; + fc->cb = cb; + fc->cb_arg = cb_arg; + fc->runtime = runtime; + + (void)to_addr; + (void)to_addrlen; + (void)timeout; + + (void)ssl; + (void)host; + (void)path; + + /* handle http comm point and return contents from test script */ + return (struct comm_point*)fc; +} + +int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, + struct sockaddr* addr, socklen_t addrlen) +{ + struct fake_commpoint* fc = (struct fake_commpoint*)c; + struct replay_runtime* runtime = fc->runtime; + struct fake_pending* pend = (struct fake_pending*)calloc(1, + sizeof(struct fake_pending)); + if(!pend) { + log_err("malloc failure"); + return 0; + } + fc->pending = pend; + /* used by authzone transfers */ + /* create pending item */ + pend->buffer = sldns_buffer_new(sldns_buffer_limit(packet) + 10); + if(!pend->buffer) { + free(pend); + return 0; + } + sldns_buffer_copy(pend->buffer, packet); + memcpy(&pend->addr, addr, addrlen); + pend->addrlen = addrlen; + pend->zone = NULL; + pend->zonelen = 0; + if(LDNS_QDCOUNT(sldns_buffer_begin(packet)) > 0) { + char buf[512]; + char addrbuf[128]; + (void)sldns_wire2str_rrquestion_buf(sldns_buffer_at(packet, LDNS_HEADER_SIZE), sldns_buffer_limit(packet)-LDNS_HEADER_SIZE, buf, sizeof(buf)); + addr_to_str((struct sockaddr_storage*)addr, addrlen, + addrbuf, sizeof(addrbuf)); + if(verbosity >= VERB_ALGO) { + if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + log_info("udp to %s: %s", addrbuf, buf); + } + log_assert(sldns_buffer_limit(packet)-LDNS_HEADER_SIZE >= 2); + pend->qtype = (int)sldns_buffer_read_u16_at(packet, + LDNS_HEADER_SIZE+ + dname_valid(sldns_buffer_at(packet, LDNS_HEADER_SIZE), + sldns_buffer_limit(packet)-LDNS_HEADER_SIZE)); + } + pend->callback = fc->cb; + pend->cb_arg = fc->cb_arg; + pend->timeout = UDP_AUTH_QUERY_TIMEOUT/1000; + pend->transport = transport_udp; + pend->pkt = NULL; + pend->runtime = runtime; + pend->serviced = 0; + pend->pkt_len = sldns_buffer_limit(pend->buffer); + pend->pkt = memdup(sldns_buffer_begin(pend->buffer), pend->pkt_len); + if(!pend->pkt) fatal_exit("out of memory"); + + log_info("testbound: created fake pending for send_udp_msg"); + + /* add to list */ + pend->next = runtime->pending_list; + runtime->pending_list = pend; + + return 1; +} + +int outnet_get_tcp_fd(struct sockaddr_storage* ATTR_UNUSED(addr), + socklen_t ATTR_UNUSED(addrlen), int ATTR_UNUSED(tcp_mss)) +{ + log_assert(0); + return -1; +} + +int outnet_tcp_connect(int ATTR_UNUSED(s), struct sockaddr_storage* ATTR_UNUSED(addr), + socklen_t ATTR_UNUSED(addrlen)) +{ + log_assert(0); + return 0; +} + /*********** End of Dummy routines ***********/ diff --git a/external/unbound/testcode/lock_verify.c b/external/unbound/testcode/lock_verify.c index 786d523..666a702 100644 --- a/external/unbound/testcode/lock_verify.c +++ b/external/unbound/testcode/lock_verify.c @@ -68,7 +68,7 @@ struct order_id { /** a lock */ struct order_lock { /** rbnode in all tree */ - rbnode_t node; + rbnode_type node; /** lock id */ struct order_id id; /** the creation file */ @@ -76,7 +76,7 @@ struct order_lock { /** creation line */ int create_line; /** set of all locks that are smaller than this one (locked earlier) */ - rbtree_t* smaller; + rbtree_type* smaller; /** during depthfirstsearch, this is a linked list of the stack * of locks. points to the next lock bigger than this one. */ struct lock_ref* dfs_next; @@ -89,7 +89,7 @@ struct order_lock { /** reference to a lock in a rbtree set */ struct lock_ref { /** rbnode, key is an order_id ptr */ - rbnode_t node; + rbnode_type node; /** the lock referenced */ struct order_lock* lock; /** why is this ref */ @@ -105,7 +105,7 @@ static int verb = 0; /** print program usage help */ static void -usage() +usage(void) { printf("lock_verify \n"); } @@ -181,7 +181,7 @@ static int readup_str(char** str, FILE* in) } /** read creation entry */ -static void read_create(rbtree_t* all, FILE* in) +static void read_create(rbtree_type* all, FILE* in) { struct order_lock* o = calloc(1, sizeof(struct order_lock)); if(!o) fatal_exit("malloc failure"); @@ -210,7 +210,7 @@ static void read_create(rbtree_t* all, FILE* in) /** insert lock entry (empty) into list */ static struct order_lock* -insert_lock(rbtree_t* all, struct order_id* id) +insert_lock(rbtree_type* all, struct order_id* id) { struct order_lock* o = calloc(1, sizeof(struct order_lock)); if(!o) fatal_exit("malloc failure"); @@ -223,7 +223,7 @@ insert_lock(rbtree_t* all, struct order_id* id) } /** read lock entry */ -static void read_lock(rbtree_t* all, FILE* in, int val) +static void read_lock(rbtree_type* all, FILE* in, int val) { struct order_id prev_id, now_id; struct lock_ref* ref; @@ -256,7 +256,7 @@ static void read_lock(rbtree_t* all, FILE* in, int val) } /** read input file */ -static void readinput(rbtree_t* all, char* file) +static void readinput(rbtree_type* all, char* file) { FILE *in = fopen(file, "r"); int fst; @@ -367,7 +367,7 @@ static void check_order_lock(struct order_lock* lock) } /** Check ordering of locks */ -static void check_order(rbtree_t* all_locks) +static void check_order(rbtree_type* all_locks) { /* check each lock */ struct order_lock* lock; @@ -391,7 +391,7 @@ static void check_order(rbtree_t* all_locks) int main(int argc, char* argv[]) { - rbtree_t* all_locks; + rbtree_type* all_locks; int i; time_t starttime = time(NULL); #ifdef USE_THREAD_DEBUG diff --git a/external/unbound/testcode/memstats.c b/external/unbound/testcode/memstats.c index fc56c0d..dc29058 100644 --- a/external/unbound/testcode/memstats.c +++ b/external/unbound/testcode/memstats.c @@ -51,7 +51,7 @@ */ struct codeline { /** rbtree node */ - rbnode_t node; + rbnode_type node; /** the name of the file:linenumber */ char* codeline; /** the name of the function */ @@ -66,7 +66,7 @@ struct codeline { /** print usage and exit */ static void -usage() +usage(void) { printf("usage: memstats \n"); printf("statistics are printed on stdout.\n"); @@ -99,7 +99,7 @@ match(char* line) /** find or alloc codeline in tree */ static struct codeline* -get_codeline(rbtree_t* tree, char* key, char* func) +get_codeline(rbtree_type* tree, char* key, char* func) { struct codeline* cl = (struct codeline*)rbtree_search(tree, key); if(!cl) { @@ -118,7 +118,7 @@ get_codeline(rbtree_t* tree, char* key, char* func) /** read up the malloc stats */ static void -read_malloc_stat(char* line, rbtree_t* tree) +read_malloc_stat(char* line, rbtree_type* tree) { char codeline[10240]; char name[10240]; @@ -143,7 +143,7 @@ read_malloc_stat(char* line, rbtree_t* tree) /** read up the calloc stats */ static void -read_calloc_stat(char* line, rbtree_t* tree) +read_calloc_stat(char* line, rbtree_type* tree) { char codeline[10240]; char name[10240]; @@ -180,7 +180,7 @@ get_file_size(const char* fname) /** read the logfile */ static void -readfile(rbtree_t* tree, const char* fname) +readfile(rbtree_type* tree, const char* fname) { off_t total = get_file_size(fname); off_t done = (off_t)0; @@ -216,7 +216,7 @@ readfile(rbtree_t* tree, const char* fname) /** print memory stats */ static void -printstats(rbtree_t* tree) +printstats(rbtree_type* tree) { struct codeline* cl; uint64_t total = 0, tcalls = 0; @@ -235,7 +235,8 @@ printstats(rbtree_t* tree) /** main program */ int main(int argc, const char* argv[]) { - rbtree_t* tree = 0; + rbtree_type* tree = 0; + log_init(NULL, 0, 0); if(argc != 2) { usage(); } diff --git a/external/unbound/testcode/mini_tdir.sh b/external/unbound/testcode/mini_tdir.sh new file mode 100644 index 0000000..9674551 --- /dev/null +++ b/external/unbound/testcode/mini_tdir.sh @@ -0,0 +1,171 @@ +# tdir that only exes the files. +args="../.." +if test "$1" = "-a"; then + args=$2 + shift + shift +fi + +if test "$1" = "clean"; then + echo "rm -f result.* .done* .tdir.var.master .tdir.var.test" + rm -f result.* .done* .tdir.var.master .tdir.var.test + exit 0 +fi +if test "$1" = "fake"; then + echo "minitdir fake $2" + echo "fake" > .done-`basename $2 .tdir` + exit 0 +fi +if test "$1" = "-f" && test "$2" = "report"; then + echo "Minitdir Long Report" + pass=0 + fail=0 + skip=0 + echo " STATUS ELAPSED TESTNAME TESTDESCRIPTION" + for result in *.tdir; do + name=`basename $result .tdir` + timelen=" " + desc="" + if test -f "result.$name"; then + timestart=`grep ^DateRunStart: "result.$name" | sed -e 's/DateRunStart: //'` + timeend=`grep ^DateRunEnd: "result.$name" | sed -e 's/DateRunEnd: //'` + timesec=`expr $timeend - $timestart` + timelen=`printf %4ds $timesec` + if test $? -ne 0; then + timelen="$timesec""s" + fi + desc=`grep ^Description: "result.$name" | sed -e 's/Description: //'` + fi + if test -f ".done-$name"; then + if test "$1" != "-q"; then + echo "** PASSED ** $timelen $name: $desc" + pass=`expr $pass + 1` + fi + else + if test -f "result.$name"; then + echo "!! FAILED !! $timelen $name: $desc" + fail=`expr $fail + 1` + else + echo ".> SKIPPED<< $timelen $name: $desc" + skip=`expr $skip + 1` + fi + fi + done + echo "" + if test "$skip" = "0"; then + echo "$pass pass, $fail fail" + else + echo "$pass pass, $fail fail, $skip skip" + fi + echo "" + exit 0 +fi +if test "$1" = "report" || test "$2" = "report"; then + echo "Minitdir Report" + for result in *.tdir; do + name=`basename $result .tdir` + if test -f ".done-$name"; then + if test "$1" != "-q"; then + echo "** PASSED ** : $name" + fi + else + if test -f "result.$name"; then + echo "!! FAILED !! : $name" + else + echo ">> SKIPPED<< : $name" + fi + fi + done + exit 0 +fi + +if test "$1" != 'exe'; then + # usage + echo "mini tdir. Reduced functionality for old shells." + echo " tdir exe " + echo " tdir fake " + echo " tdir clean" + echo " tdir [-q|-f] report" + exit 1 +fi +shift + +# do not execute if the disk is too full +#DISKLIMIT=100000 +# This check is not portable (to Solaris 10). +#avail=`df . | tail -1 | awk '{print $4}'` +#if test "$avail" -lt "$DISKLIMIT"; then + #echo "minitdir: The disk is too full! Only $avail." + #exit 1 +#fi + +name=`basename $1 .tdir` +dir=$name.$$ +result=result.$name +done=.done-$name +success="no" +if test -x "`which bash`"; then + shell="bash" +else + shell="sh" +fi + +# check already done +if test -f .done-$name; then + echo "minitdir .done-$name exists. skip test." + exit 0 +fi + +# Copy +echo "minitdir copy $1 to $dir" +mkdir $dir +cp -a $name.tdir/* $dir/ +cd $dir + +# EXE +echo "minitdir exe $name" > $result +grep "Description:" $name.dsc >> $result 2>&1 +echo "DateRunStart: "`date "+%s" 2>/dev/null` >> $result +if test -f $name.pre; then + echo "minitdir exe $name.pre" + echo "minitdir exe $name.pre" >> $result + $shell $name.pre $args >> $result + if test $? -ne 0; then + echo "Warning: $name.pre did not exit successfully" + fi +fi +if test -f $name.test; then + echo "minitdir exe $name.test" + echo "minitdir exe $name.test" >> $result + $shell $name.test $args >>$result 2>&1 + if test $? -ne 0; then + echo "$name: FAILED" >> $result + echo "$name: FAILED" + success="no" + else + echo "$name: PASSED" >> $result + echo "$name: PASSED" > ../.done-$name + echo "$name: PASSED" + success="yes" + fi +fi +if test -f $name.post; then + echo "minitdir exe $name.post" + echo "minitdir exe $name.post" >> $result + $shell $name.post $args >> $result + if test $? -ne 0; then + echo "Warning: $name.post did not exit successfully" + fi +fi +echo "DateRunEnd: "`date "+%s" 2>/dev/null` >> $result + +mv $result .. +cd .. +rm -rf $dir +# compat for windows where deletion may not succeed initially (files locked +# by processes that still have to exit). +if test $? -eq 1; then + echo "minitdir waiting for processes to terminate" + sleep 2 # some time to exit, and try again + rm -rf $dir +fi diff --git a/external/unbound/testcode/perf.c b/external/unbound/testcode/perf.c index 320cbc9..d11357c 100644 --- a/external/unbound/testcode/perf.c +++ b/external/unbound/testcode/perf.c @@ -487,6 +487,7 @@ qlist_parse_line(sldns_buffer* buf, char* p) qinfo.qname = sldns_str2wire_dname(nm, &qinfo.qname_len); if(!qinfo.qname) return 0; + qinfo.local_alias = NULL; qinfo_query_encode(buf, &qinfo); sldns_buffer_write_u16_at(buf, 0, 0); /* zero ID */ if(rec) LDNS_RD_SET(sldns_buffer_begin(buf)); diff --git a/external/unbound/testcode/petal.c b/external/unbound/testcode/petal.c index a54181c..1c26fa7 100644 --- a/external/unbound/testcode/petal.c +++ b/external/unbound/testcode/petal.c @@ -70,7 +70,7 @@ static int verb = 0; /** Give petal usage, and exit (1). */ static void -usage() +usage(void) { printf("Usage: petal [opts]\n"); printf(" https daemon serves files from ./'host'/filename\n"); @@ -429,6 +429,7 @@ static void provide_file_chunked(SSL* ssl, char* fname) { char buf[16384]; + char* tmpbuf = NULL; char* at = buf; size_t avail = sizeof(buf); size_t r; @@ -471,9 +472,13 @@ provide_file_chunked(SSL* ssl, char* fname) } do { - char tmpbuf[sizeof(buf)]; + size_t red; + free(tmpbuf); + tmpbuf = malloc(avail-16); + if(!tmpbuf) + break; /* read chunk; space-16 for xxxxCRLF..CRLF0CRLFCRLF (3 spare)*/ - size_t red = in?fread(tmpbuf, 1, avail-16, in):0; + red = in?fread(tmpbuf, 1, avail-16, in):0; /* prepare chunk */ snprintf(at, avail, "%x\r\n", (unsigned)red); r = strlen(at); @@ -514,6 +519,7 @@ provide_file_chunked(SSL* ssl, char* fname) avail = sizeof(buf); } while(in && !feof(in) && !ferror(in)); + free(tmpbuf); if(in) fclose(in); } @@ -634,16 +640,32 @@ int main(int argc, char* argv[]) #ifdef SIGPIPE (void)signal(SIGPIPE, SIG_IGN); #endif +#ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS ERR_load_crypto_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) OpenSSL_add_all_algorithms(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif do_service(addr, port, key, cert); +#ifdef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA CRYPTO_cleanup_all_ex_data(); - ERR_remove_state(0); +#endif +#ifdef HAVE_ERR_FREE_STRINGS ERR_free_strings(); - RAND_cleanup(); +#endif return 0; } diff --git a/external/unbound/testcode/replay.c b/external/unbound/testcode/replay.c index 22670eb..08d8747 100644 --- a/external/unbound/testcode/replay.c +++ b/external/unbound/testcode/replay.c @@ -63,7 +63,7 @@ * done (successfully). * @return expanded text, malloced. NULL on failure. */ -static char* macro_expand(rbtree_t* store, +static char* macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text); /** compare of time values */ @@ -323,6 +323,15 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->autotrust_id = strdup(remain); if(!mom->autotrust_id) fatal_exit("out of memory"); read_file_content(in, &pstate->lineno, mom); + } else if(parse_keyword(&remain, "CHECK_TEMPFILE")) { + mom->evt_type = repevt_tempfile_check; + while(isspace((unsigned char)*remain)) + remain++; + if(strlen(remain)>0 && remain[strlen(remain)-1]=='\n') + remain[strlen(remain)-1] = 0; + mom->autotrust_id = strdup(remain); + if(!mom->autotrust_id) fatal_exit("out of memory"); + read_file_content(in, &pstate->lineno, mom); } else if(parse_keyword(&remain, "ERROR")) { mom->evt_type = repevt_error; } else if(parse_keyword(&remain, "TRAFFIC")) { @@ -488,6 +497,7 @@ replay_scenario_read(FILE* in, const char* name, int* lineno) return scen; } } + log_err("scenario read failed at line %d (no SCENARIO_END?)", *lineno); replay_scenario_delete(scen); return NULL; } @@ -548,7 +558,7 @@ replay_var_compare(const void* a, const void* b) return strcmp(x->name, y->name); } -rbtree_t* +rbtree_type* macro_store_create(void) { return rbtree_create(&replay_var_compare); @@ -556,7 +566,7 @@ macro_store_create(void) /** helper function to delete macro values */ static void -del_macro(rbnode_t* x, void* ATTR_UNUSED(arg)) +del_macro(rbnode_type* x, void* ATTR_UNUSED(arg)) { struct replay_var* v = (struct replay_var*)x; free(v->name); @@ -565,7 +575,7 @@ del_macro(rbnode_t* x, void* ATTR_UNUSED(arg)) } void -macro_store_delete(rbtree_t* store) +macro_store_delete(rbtree_type* store) { if(!store) return; @@ -615,7 +625,7 @@ do_buf_insert(char* buf, size_t remain, char* after, char* inserted) /** do macro recursion */ static char* -do_macro_recursion(rbtree_t* store, struct replay_runtime* runtime, +do_macro_recursion(rbtree_type* store, struct replay_runtime* runtime, char* at, size_t remain) { char* after = at+2; @@ -632,7 +642,7 @@ do_macro_recursion(rbtree_t* store, struct replay_runtime* runtime, /** get var from store */ static struct replay_var* -macro_getvar(rbtree_t* store, char* name) +macro_getvar(rbtree_type* store, char* name) { struct replay_var k; k.node.key = &k; @@ -642,7 +652,7 @@ macro_getvar(rbtree_t* store, char* name) /** do macro variable */ static char* -do_macro_variable(rbtree_t* store, char* buf, size_t remain) +do_macro_variable(rbtree_type* store, char* buf, size_t remain) { struct replay_var* v; char* at = buf+1; @@ -776,7 +786,7 @@ do_macro_range(char* buf) } static char* -macro_expand(rbtree_t* store, struct replay_runtime* runtime, char** text) +macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text) { char buf[10240]; char* at = *text; @@ -844,7 +854,7 @@ macro_expand(rbtree_t* store, struct replay_runtime* runtime, char** text) } char* -macro_process(rbtree_t* store, struct replay_runtime* runtime, char* text) +macro_process(rbtree_type* store, struct replay_runtime* runtime, char* text) { char buf[10240]; char* next, *expand; @@ -872,14 +882,14 @@ macro_process(rbtree_t* store, struct replay_runtime* runtime, char* text) } char* -macro_lookup(rbtree_t* store, char* name) +macro_lookup(rbtree_type* store, char* name) { struct replay_var* x = macro_getvar(store, name); if(!x) return strdup(""); return strdup(x->value); } -void macro_print_debug(rbtree_t* store) +void macro_print_debug(rbtree_type* store) { struct replay_var* x; RBTREE_FOR(x, struct replay_var*, store) { @@ -888,7 +898,7 @@ void macro_print_debug(rbtree_t* store) } int -macro_assign(rbtree_t* store, char* name, char* value) +macro_assign(rbtree_type* store, char* name, char* value) { struct replay_var* x = macro_getvar(store, name); if(x) { @@ -918,7 +928,7 @@ macro_assign(rbtree_t* store, char* name, char* value) void testbound_selftest(void) { /* test the macro store */ - rbtree_t* store = macro_store_create(); + rbtree_type* store = macro_store_create(); char* v; int r; int num_asserts = 0; diff --git a/external/unbound/testcode/replay.h b/external/unbound/testcode/replay.h index 05bd442..81f0a2c 100644 --- a/external/unbound/testcode/replay.h +++ b/external/unbound/testcode/replay.h @@ -49,6 +49,14 @@ * AUTOTRUST_FILE id * ; contents of that file * AUTOTRUST_END + * ; temp file names are echoed as "tmp/xxx.fname" + * TEMPFILE_NAME fname + * ; temp file contents, inline, deleted at end of run + * TEMPFILE_CONTENTS fname + * ; contents of that file + * ; this creates $INCLUDE /tmp/xxx.fname + * $INCLUDE_TEMPFILE fname + * TEMPFILE_END * CONFIG_END * ; comment line. * SCENARIO_BEGIN name_of_scenario @@ -75,6 +83,7 @@ * the step waits for traffic to stop. * o CHECK_AUTOTRUST [id] - followed by FILE_BEGIN [to match] FILE_END. * The file contents is macro expanded before match. + * o CHECK_TEMPFILE [fname] - followed by FILE_BEGIN [to match] FILE_END * o INFRA_RTT [ip] [dp] [rtt] - update infra cache entry with rtt. * o ERROR * ; following entry starts on the next line, ENTRY_BEGIN. @@ -195,6 +204,8 @@ struct replay_moment { repevt_back_query, /** check autotrust key file */ repevt_autotrust_check, + /** check a temp file */ + repevt_tempfile_check, /** an error happens to outbound query */ repevt_error, /** assignment to a variable */ @@ -280,7 +291,7 @@ struct replay_runtime { struct fake_timer* timer_list; /** callback to call for incoming queries */ - comm_point_callback_t* callback_query; + comm_point_callback_type* callback_query; /** user argument for incoming query callback */ void *cb_arg; @@ -305,7 +316,7 @@ struct replay_runtime { /** * Tree of macro values. Of type replay_var */ - rbtree_t* vars; + rbtree_type* vars; }; /** @@ -325,7 +336,7 @@ struct fake_pending { /** qtype */ int qtype; /** The callback function to call when answer arrives (or timeout) */ - comm_point_callback_t* callback; + comm_point_callback_type* callback; /** callback user argument */ void* cb_arg; /** original timeout in seconds from 'then' */ @@ -340,6 +351,8 @@ struct fake_pending { enum transport_type transport; /** if this is a serviced query */ int serviced; + /** if we are handling a multi pkt tcp stream, non 0 and the pkt nr*/ + int tcp_pkt_counter; /** the runtime structure this is part of */ struct replay_runtime* runtime; }; @@ -380,7 +393,7 @@ struct fake_timer { */ struct replay_var { /** rbtree node. Key is this structure. Sorted by name. */ - rbnode_t node; + rbnode_type node; /** the variable name */ char* name; /** the variable value */ @@ -413,13 +426,13 @@ struct fake_timer* replay_get_oldest_timer(struct replay_runtime* runtime); * Create variable storage * @return new or NULL on failure. */ -rbtree_t* macro_store_create(void); +rbtree_type* macro_store_create(void); /** * Delete variable storage * @param store: the macro storage to free up. */ -void macro_store_delete(rbtree_t* store); +void macro_store_delete(rbtree_type* store); /** * Apply macro substitution to string. @@ -428,7 +441,7 @@ void macro_store_delete(rbtree_t* store); * @param text: string to work on. * @return newly malloced string with result. */ -char* macro_process(rbtree_t* store, struct replay_runtime* runtime, +char* macro_process(rbtree_type* store, struct replay_runtime* runtime, char* text); /** @@ -438,7 +451,7 @@ char* macro_process(rbtree_t* store, struct replay_runtime* runtime, * @return newly malloced string with result or strdup("") if not found. * or NULL on malloc failure. */ -char* macro_lookup(rbtree_t* store, char* name); +char* macro_lookup(rbtree_type* store, char* name); /** * Set macro value. @@ -447,10 +460,10 @@ char* macro_lookup(rbtree_t* store, char* name); * @param value: text to set it to. Not expanded. * @return false on failure. */ -int macro_assign(rbtree_t* store, char* name, char* value); +int macro_assign(rbtree_type* store, char* name, char* value); /** Print macro variables stored as debug info */ -void macro_print_debug(rbtree_t* store); +void macro_print_debug(rbtree_type* store); /** testbounds self test */ void testbound_selftest(void); diff --git a/external/unbound/testcode/run_vm.sh b/external/unbound/testcode/run_vm.sh index 78649f0..d4c2a2e 100644 --- a/external/unbound/testcode/run_vm.sh +++ b/external/unbound/testcode/run_vm.sh @@ -1,7 +1,7 @@ #!/usr/local/bin/bash -# run tpkg tests from within a VM. Looks for loopback addr. +# run tdir tests from within a VM. Looks for loopback addr. # if run not from within a VM, runs the tests as usual. -# with one argument: run that tpkg, otherwise, run all tpkgs. +# with one argument: run that tdir, otherwise, run all tdirs. get_lo0_ip4() { if test -x /sbin/ifconfig @@ -23,12 +23,12 @@ else ALT_LOOPBACK=true fi cd testdata -TPKG=../testcode/mini_tpkg.sh -#RUNLIST=`(ls -1 *.tpkg|grep -v '^0[016]')` -RUNLIST=`(ls -1 *.tpkg)` +TPKG=../testcode/mini_tdir.sh +#RUNLIST=`(ls -1d *.tdir|grep -v '^0[016]')` +RUNLIST=`(ls -1d *.tdir)` if test "$#" = "1"; then RUNLIST="$1"; fi -# fix up tpkg that was edited on keyboard interrupt. +# fix up tdir that was edited on keyboard interrupt. cleanup() { echo cleanup if test -f "$t.bak"; then mv "$t.bak" "$t"; fi @@ -44,16 +44,15 @@ do continue fi # We have alternative 127.0.0.1 number - if ( echo $t | grep '6\.tpkg$' ) # skip IPv6 tests + if ( echo $t | grep '6\.tdir$' ) # skip IPv6 tests then continue - elif test "$t" = "edns_cache.tpkg" # This one is IPv6 too! + elif test "$t" = "edns_cache.tdir" # This one is IPv6 too! then continue fi - cp -p "$t" "$t.bak" - tar xzf $t - find "${t%.tpkg}.dir" -type f \ + cp -ap "$t" "$t.bak" + find "${t}" -type f \ -exec grep -q -e '127\.0\.0\.1' -e '@localhost' {} \; -print | { while read f do @@ -63,15 +62,14 @@ do mv "$f._" "$f" done } - find "${t%.tpkg}.dir" -type d -name "127.0.0.1" -print | { + find "${t}" -type d -name "127.0.0.1" -print | { while read d do mv -v "$d" "${d%127.0.0.1}${LO0_IP4}" done } - tar czf $t "${t%.tpkg}.dir" - rm -fr "${t%.tpkg}.dir" $TPKG exe $t + rm -fr "${t}" mv "$t.bak" "$t" done # get out of testdata/ diff --git a/external/unbound/testcode/signit.c b/external/unbound/testcode/signit.c index af4e0fe..0eca0e0 100644 --- a/external/unbound/testcode/signit.c +++ b/external/unbound/testcode/signit.c @@ -63,7 +63,7 @@ struct keysets { /** print usage and exit */ static void -usage() +usage(void) { printf("usage: signit expi ince keytag owner keyfile\n"); printf("present rrset data on stdin.\n"); diff --git a/external/unbound/testcode/streamtcp.c b/external/unbound/testcode/streamtcp.c index c591942..0a63639 100644 --- a/external/unbound/testcode/streamtcp.c +++ b/external/unbound/testcode/streamtcp.c @@ -128,6 +128,9 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, qinfo.qtype = sldns_get_rr_type_by_name(strtype); qinfo.qclass = sldns_get_rr_class_by_name(strclass); + /* clear local alias */ + qinfo.local_alias = NULL; + /* make query */ qinfo_query_encode(buf, &qinfo); sldns_buffer_write_u16_at(buf, 0, id); @@ -140,7 +143,9 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, edns.edns_present = 1; edns.bits = EDNS_DO; edns.udp_size = 4096; - attach_edns_record(buf, &edns); + if(sldns_buffer_capacity(buf) >= + sldns_buffer_limit(buf)+calc_edns_field_size(&edns)) + attach_edns_record(buf, &edns); } /* send it */ @@ -265,7 +270,7 @@ static int get_random(void) if (RAND_bytes((unsigned char*)&r, (int)sizeof(r)) == 1) { return r; } - return (int)random(); + return arc4random(); } /** send the TCP queries and print answers */ @@ -279,7 +284,7 @@ send_em(const char* svr, int udp, int usessl, int noanswer, int num, char** qs) SSL* ssl = NULL; if(!buf) fatal_exit("out of memory"); if(usessl) { - ctx = connect_sslctx_create(NULL, NULL, NULL); + ctx = connect_sslctx_create(NULL, NULL, NULL, 0); if(!ctx) fatal_exit("cannot create ssl ctx"); ssl = outgoing_ssl_fd(ctx, fd); if(!ssl) fatal_exit("cannot create ssl"); @@ -405,9 +410,21 @@ int main(int argc, char** argv) return 1; } if(usessl) { +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) OpenSSL_add_all_algorithms(); - SSL_library_init(); +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif } send_em(svr, udp, usessl, noanswer, argc, argv); checklock_stop(); diff --git a/external/unbound/testcode/testbound.c b/external/unbound/testcode/testbound.c index d908150..071ac9c 100644 --- a/external/unbound/testcode/testbound.c +++ b/external/unbound/testcode/testbound.c @@ -67,15 +67,18 @@ static struct config_strlist* cfgfiles = NULL; /** give commandline usage for testbound. */ static void -testbound_usage() +testbound_usage(void) { printf("usage: testbound [options]\n"); printf("\ttest the unbound daemon.\n"); printf("-h this help\n"); printf("-p file playback text file\n"); + printf("-1 detect SHA1 support (exit code 0 or 1)\n"); printf("-2 detect SHA256 support (exit code 0 or 1)\n"); printf("-g detect GOST support (exit code 0 or 1)\n"); printf("-e detect ECDSA support (exit code 0 or 1)\n"); + printf("-c detect CLIENT_SUBNET support (exit code 0 or 1)\n"); + printf("-i detect IPSECMOD support (exit code 0 or 1)\n"); printf("-s testbound self-test - unit test of testbound parts.\n"); printf("-o str unbound commandline options separated by spaces.\n"); printf("Version %s\n", PACKAGE_VERSION); @@ -132,6 +135,66 @@ echo_cmdline(int argc, char* argv[]) fprintf(stderr, "\n"); } +/** spool temp file name */ +static void +spool_temp_file_name(int* lineno, FILE* cfg, char* id) +{ + char line[MAX_LINE_LEN]; + /* find filename for new file */ + while(isspace((unsigned char)*id)) + id++; + if(*id == '\0') + fatal_exit("TEMPFILE_NAME must have id, line %d", *lineno); + id[strlen(id)-1]=0; /* remove newline */ + fake_temp_file("_temp_", id, line, sizeof(line)); + fprintf(cfg, "\"%s\"\n", line); +} + +/** spool temp file */ +static void +spool_temp_file(FILE* in, int* lineno, char* id) +{ + char line[MAX_LINE_LEN]; + char* parse; + FILE* spool; + /* find filename for new file */ + while(isspace((unsigned char)*id)) + id++; + if(*id == '\0') + fatal_exit("TEMPFILE_CONTENTS must have id, line %d", *lineno); + id[strlen(id)-1]=0; /* remove newline */ + fake_temp_file("_temp_", id, line, sizeof(line)); + /* open file and spool to it */ + spool = fopen(line, "w"); + if(!spool) fatal_exit("could not open %s: %s", line, strerror(errno)); + fprintf(stderr, "testbound is spooling temp file: %s\n", line); + if(!cfg_strlist_insert(&cfgfiles, strdup(line))) + fatal_exit("out of memory"); + line[sizeof(line)-1] = 0; + while(fgets(line, MAX_LINE_LEN-1, in)) { + parse = line; + (*lineno)++; + while(isspace((unsigned char)*parse)) + parse++; + if(strncmp(parse, "$INCLUDE_TEMPFILE", 17) == 0) { + char l2[MAX_LINE_LEN-30]; /* -30 makes it fit with + a preceding $INCLUDE in the buf line[] */ + char* tid = parse+17; + while(isspace((unsigned char)*tid)) + tid++; + tid[strlen(tid)-1]=0; /* remove newline */ + fake_temp_file("_temp_", tid, l2, sizeof(l2)); + snprintf(line, sizeof(line), "$INCLUDE %s\n", l2); + } + if(strncmp(parse, "TEMPFILE_END", 12) == 0) { + fclose(spool); + return; + } + fputs(line, spool); + } + fatal_exit("no TEMPFILE_END in input file"); +} + /** spool autotrust file */ static void spool_auto_file(FILE* in, int* lineno, FILE* cfg, char* id) @@ -142,7 +205,7 @@ spool_auto_file(FILE* in, int* lineno, FILE* cfg, char* id) /* find filename for new file */ while(isspace((unsigned char)*id)) id++; - if(strlen(id)==0) + if(*id == '\0') fatal_exit("AUTROTRUST_FILE must have id, line %d", *lineno); id[strlen(id)-1]=0; /* remove newline */ fake_temp_file("_auto_", id, line, sizeof(line)); @@ -210,6 +273,14 @@ setup_config(FILE* in, int* lineno, int* pass_argc, char* pass_argv[]) spool_auto_file(in, lineno, cfg, parse+14); continue; } + if(strncmp(parse, "TEMPFILE_NAME", 13) == 0) { + spool_temp_file_name(lineno, cfg, parse+13); + continue; + } + if(strncmp(parse, "TEMPFILE_CONTENTS", 17) == 0) { + spool_temp_file(in, lineno, parse+17); + continue; + } if(strncmp(parse, "CONFIG_END", 10) == 0) { fclose(cfg); return; @@ -279,12 +350,25 @@ main(int argc, char* argv[]) pass_argc = 1; pass_argv[0] = "unbound"; add_opts("-d", &pass_argc, pass_argv); - while( (c=getopt(argc, argv, "2egho:p:s")) != -1) { + while( (c=getopt(argc, argv, "12egciho:p:s")) != -1) { switch(c) { case 's': free(pass_argv[1]); testbound_selftest(); + checklock_stop(); + if(log_get_lock()) { + lock_quick_destroy((lock_quick_type*)log_get_lock()); + } + exit(0); + case '1': +#ifdef USE_SHA1 + printf("SHA1 supported\n"); exit(0); +#else + printf("SHA1 not supported\n"); + exit(1); +#endif + break; case '2': #if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) printf("SHA256 supported\n"); @@ -315,6 +399,24 @@ main(int argc, char* argv[]) #else printf("GOST not supported\n"); exit(1); +#endif + break; + case 'c': +#ifdef CLIENT_SUBNET + printf("CLIENT_SUBNET supported\n"); + exit(0); +#else + printf("CLIENT_SUBNET not supported\n"); + exit(1); +#endif + break; + case 'i': +#ifdef USE_IPSECMOD + printf("IPSECMOD supported\n"); + exit(0); +#else + printf("IPSECMOD not supported\n"); + exit(1); #endif break; case 'p': @@ -359,7 +461,10 @@ main(int argc, char* argv[]) for(c=1; cpacket_sleep = 0; pkt->reply_pkt = NULL; pkt->reply_from_hex = NULL; + pkt->raw_ednsdata = NULL; /* link at end */ while(*p) p = &((*p)->next); @@ -118,6 +119,12 @@ static void matchline(char* line, struct entry* e) e->match_qtype = 1; } else if(str_keyword(&parse, "qname")) { e->match_qname = 1; + } else if(str_keyword(&parse, "rcode")) { + e->match_rcode = 1; + } else if(str_keyword(&parse, "question")) { + e->match_question = 1; + } else if(str_keyword(&parse, "answer")) { + e->match_answer = 1; } else if(str_keyword(&parse, "subdomain")) { e->match_subdomain = 1; } else if(str_keyword(&parse, "all")) { @@ -128,6 +135,8 @@ static void matchline(char* line, struct entry* e) e->match_do = 1; } else if(str_keyword(&parse, "noedns")) { e->match_noedns = 1; + } else if(str_keyword(&parse, "ednsdata")) { + e->match_ednsdata_raw = 1; } else if(str_keyword(&parse, "UDP")) { e->match_transport = transport_udp; } else if(str_keyword(&parse, "TCP")) { @@ -224,6 +233,8 @@ static void adjustline(char* line, struct entry* e, e->copy_id = 1; } else if(str_keyword(&parse, "copy_query")) { e->copy_query = 1; + } else if(str_keyword(&parse, "copy_ednsdata_assume_clientsubnet")) { + e->copy_ednsdata_assume_clientsubnet = 1; } else if(str_keyword(&parse, "sleep=")) { e->sleeptime = (unsigned int) strtol(parse, (char**)&parse, 10); while(isspace((unsigned char)*parse)) @@ -239,7 +250,7 @@ static void adjustline(char* line, struct entry* e, } /** create new entry */ -static struct entry* new_entry() +static struct entry* new_entry(void) { struct entry* e = (struct entry*)malloc(sizeof(struct entry)); if(!e) error("out of memory"); @@ -247,6 +258,9 @@ static struct entry* new_entry() e->match_opcode = 0; e->match_qtype = 0; e->match_qname = 0; + e->match_rcode = 0; + e->match_question = 0; + e->match_answer = 0; e->match_subdomain = 0; e->match_all = 0; e->match_ttl = 0; @@ -258,6 +272,7 @@ static struct entry* new_entry() e->reply_list = NULL; e->copy_id = 0; e->copy_query = 0; + e->copy_ednsdata_assume_clientsubnet = 0; e->sleeptime = 0; e->next = NULL; return e; @@ -475,25 +490,28 @@ static void add_rr(char* rrstr, uint8_t* pktbuf, size_t pktsize, else error("internal error bad section %d", (int)add_section); } -/* add EDNS 4096 DO opt record */ +/* add EDNS 4096 opt record */ static void -add_do_flag(uint8_t* pktbuf, size_t pktsize, size_t* pktlen) +add_edns(uint8_t* pktbuf, size_t pktsize, int do_flag, uint8_t *ednsdata, + uint16_t ednslen, size_t* pktlen) { uint8_t edns[] = {0x00, /* root label */ 0x00, LDNS_RR_TYPE_OPT, /* type */ 0x10, 0x00, /* class is UDPSIZE 4096 */ 0x00, /* TTL[0] is ext rcode */ 0x00, /* TTL[1] is edns version */ - 0x80, 0x00, /* TTL[2-3] is edns flags, DO */ - 0x00, 0x00 /* rdatalength (0 options) */ + (uint8_t)(do_flag?0x80:0x00), 0x00, /* TTL[2-3] is edns flags, DO */ + (uint8_t)((ednslen >> 8) & 0xff), + (uint8_t)(ednslen & 0xff), /* rdatalength */ }; if(*pktlen < LDNS_HEADER_SIZE) return; - if(*pktlen + sizeof(edns) > pktsize) + if(*pktlen + sizeof(edns) + ednslen > pktsize) error("not enough space for EDNS OPT record"); memmove(pktbuf+*pktlen, edns, sizeof(edns)); + memmove(pktbuf+*pktlen+sizeof(edns), ednsdata, ednslen); sldns_write_uint16(pktbuf+10, LDNS_ARCOUNT(pktbuf)+1); - *pktlen += sizeof(edns); + *pktlen += (sizeof(edns) + ednslen); } /* Reads one entry from file. Returns entry or NULL on error. */ @@ -507,7 +525,9 @@ read_entry(FILE* in, const char* name, struct sldns_file_parse_state* pstate, sldns_pkt_section add_section = LDNS_SECTION_QUESTION; struct reply_packet *cur_reply = NULL; int reading_hex = 0; + int reading_hex_ednsdata = 0; sldns_buffer* hex_data_buffer = NULL; + sldns_buffer* hex_ednsdata_buffer = NULL; uint8_t pktbuf[MAX_PACKETLEN]; size_t pktlen = LDNS_HEADER_SIZE; int do_flag = 0; /* DO flag in EDNS */ @@ -552,7 +572,15 @@ read_entry(FILE* in, const char* name, struct sldns_file_parse_state* pstate, } else if(str_keyword(&parse, "ADJUST")) { adjustline(parse, current, cur_reply); } else if(str_keyword(&parse, "EXTRA_PACKET")) { + /* copy current packet into buffer */ + cur_reply->reply_pkt = memdup(pktbuf, pktlen); + cur_reply->reply_len = pktlen; + if(!cur_reply->reply_pkt) + error("out of memory"); cur_reply = entry_add_reply(current); + /* clear for next packet */ + pktlen = LDNS_HEADER_SIZE; + memset(pktbuf, 0, pktlen); /* ID = 0, FLAGS="", and rr counts 0 */ } else if(str_keyword(&parse, "SECTION")) { if(str_keyword(&parse, "QUESTION")) add_section = LDNS_SECTION_QUESTION; @@ -574,21 +602,45 @@ read_entry(FILE* in, const char* name, struct sldns_file_parse_state* pstate, cur_reply->reply_from_hex = hex_buffer2wire(hex_data_buffer); sldns_buffer_free(hex_data_buffer); hex_data_buffer = NULL; + } else if(reading_hex) { + sldns_buffer_printf(hex_data_buffer, "%s", line); + } else if(str_keyword(&parse, "HEX_EDNSDATA_BEGIN")) { + hex_ednsdata_buffer = sldns_buffer_new(MAX_PACKETLEN); + reading_hex_ednsdata = 1; + } else if(str_keyword(&parse, "HEX_EDNSDATA_END")) { + if (!reading_hex_ednsdata) { + error("%s line %d: HEX_EDNSDATA_END read but no" + "HEX_EDNSDATA_BEGIN keyword seen", name, pstate->lineno); + } + reading_hex_ednsdata = 0; + cur_reply->raw_ednsdata = hex_buffer2wire(hex_ednsdata_buffer); + sldns_buffer_free(hex_ednsdata_buffer); + hex_ednsdata_buffer = NULL; + } else if(reading_hex_ednsdata) { + sldns_buffer_printf(hex_ednsdata_buffer, "%s", line); } else if(str_keyword(&parse, "ENTRY_END")) { if(hex_data_buffer) sldns_buffer_free(hex_data_buffer); + if(hex_ednsdata_buffer) + sldns_buffer_free(hex_ednsdata_buffer); if(pktlen != 0) { - if(do_flag) - add_do_flag(pktbuf, sizeof(pktbuf), - &pktlen); + if(do_flag || cur_reply->raw_ednsdata) { + if(cur_reply->raw_ednsdata && + sldns_buffer_limit(cur_reply->raw_ednsdata)) + add_edns(pktbuf, sizeof(pktbuf), do_flag, + sldns_buffer_begin(cur_reply->raw_ednsdata), + (uint16_t)sldns_buffer_limit(cur_reply->raw_ednsdata), + &pktlen); + else + add_edns(pktbuf, sizeof(pktbuf), do_flag, + NULL, 0, &pktlen); + } cur_reply->reply_pkt = memdup(pktbuf, pktlen); cur_reply->reply_len = pktlen; if(!cur_reply->reply_pkt) error("out of memory"); } return current; - } else if(reading_hex) { - sldns_buffer_printf(hex_data_buffer, "%s", line); } else { add_rr(skip_whitespace?parse:line, pktbuf, sizeof(pktbuf), &pktlen, pstate, add_section, @@ -596,10 +648,14 @@ read_entry(FILE* in, const char* name, struct sldns_file_parse_state* pstate, } } - if (reading_hex) { + if(reading_hex) { error("%s: End of file reached while still reading hex, " "missing HEX_ANSWER_END\n", name); } + if(reading_hex_ednsdata) { + error("%s: End of file reached while still reading edns data, " + "missing HEX_EDNSDATA_END\n", name); + } if(current) { error("%s: End of file reached while reading entry. " "missing ENTRY_END\n", name); @@ -691,6 +747,14 @@ static int get_opcode(uint8_t* pkt, size_t pktlen) return (int)LDNS_OPCODE_WIRE(pkt); } +/** returns rcode from packet */ +static int get_rcode(uint8_t* pkt, size_t pktlen) +{ + if(pktlen < LDNS_HEADER_SIZE) + return 0; + return (int)LDNS_RCODE_WIRE(pkt); +} + /** get authority section SOA serial value */ static uint32_t get_serial(uint8_t* p, size_t plen) { @@ -761,16 +825,16 @@ pkt_find_edns_opt(uint8_t** p, size_t* plen) wlen -= LDNS_HEADER_SIZE; /* skip other records with wire2str_scan */ - for(i=0; i < LDNS_QDCOUNT(p); i++) + for(i=0; i < LDNS_QDCOUNT(*p); i++) (void)sldns_wire2str_rrquestion_scan(&w, &wlen, &snull, &sl, *p, *plen); - for(i=0; i < LDNS_ANCOUNT(p); i++) + for(i=0; i < LDNS_ANCOUNT(*p); i++) (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen); - for(i=0; i < LDNS_NSCOUNT(p); i++) + for(i=0; i < LDNS_NSCOUNT(*p); i++) (void)sldns_wire2str_rr_scan(&w, &wlen, &snull, &sl, *p, *plen); /* walk through additional section */ - for(i=0; i < LDNS_ARCOUNT(p); i++) { + for(i=0; i < LDNS_ARCOUNT(*p); i++) { /* if this is OPT then done */ uint8_t* dstart = w; size_t dlen = wlen; @@ -802,8 +866,8 @@ get_do_flag(uint8_t* pkt, size_t len) uint16_t edns_bits; uint8_t* walk = pkt; size_t walk_len = len; - if(pkt_find_edns_opt(&walk, &walk_len)) { - return 1; + if(!pkt_find_edns_opt(&walk, &walk_len)) { + return 0; } if(walk_len < 6) return 0; /* malformed */ @@ -1086,6 +1150,138 @@ static void lowercase_pkt(uint8_t* pkt, size_t pktlen) } } +/** match question section of packet */ +static int +match_question(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl) +{ + char* qstr, *pstr, *s, *qcmpstr, *pcmpstr; + uint8_t* qb = q, *pb = p; + int r; + /* zero TTLs */ + qb = memdup(q, qlen); + pb = memdup(p, plen); + if(!qb || !pb) error("out of memory"); + if(!mttl) { + zerottls(qb, qlen); + zerottls(pb, plen); + } + lowercase_pkt(qb, qlen); + lowercase_pkt(pb, plen); + qstr = sldns_wire2str_pkt(qb, qlen); + pstr = sldns_wire2str_pkt(pb, plen); + if(!qstr || !pstr) error("cannot pkt2string"); + + /* remove before ;; QUESTION */ + s = strstr(qstr, ";; QUESTION SECTION"); + qcmpstr = s; + s = strstr(pstr, ";; QUESTION SECTION"); + pcmpstr = s; + if(!qcmpstr && !pcmpstr) { + free(qstr); + free(pstr); + free(qb); + free(pb); + return 1; + } + if(!qcmpstr || !pcmpstr) { + free(qstr); + free(pstr); + free(qb); + free(pb); + return 0; + } + + /* remove after answer section, (;; AUTH, ;; ADD, ;; MSG size ..) */ + s = strstr(qcmpstr, ";; ANSWER SECTION"); + if(!s) s = strstr(qcmpstr, ";; AUTHORITY SECTION"); + if(!s) s = strstr(qcmpstr, ";; ADDITIONAL SECTION"); + if(!s) s = strstr(qcmpstr, ";; MSG SIZE"); + if(s) *s = 0; + s = strstr(pcmpstr, ";; ANSWER SECTION"); + if(!s) s = strstr(pcmpstr, ";; AUTHORITY SECTION"); + if(!s) s = strstr(pcmpstr, ";; ADDITIONAL SECTION"); + if(!s) s = strstr(pcmpstr, ";; MSG SIZE"); + if(s) *s = 0; + + r = (strcmp(qcmpstr, pcmpstr) == 0); + + if(!r) { + verbose(3, "mismatch question section '%s' and '%s'", + qcmpstr, pcmpstr); + } + + free(qstr); + free(pstr); + free(qb); + free(pb); + return r; +} + +/** match answer section of packet */ +static int +match_answer(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl) +{ + char* qstr, *pstr, *s, *qcmpstr, *pcmpstr; + uint8_t* qb = q, *pb = p; + int r; + /* zero TTLs */ + qb = memdup(q, qlen); + pb = memdup(p, plen); + if(!qb || !pb) error("out of memory"); + if(!mttl) { + zerottls(qb, qlen); + zerottls(pb, plen); + } + lowercase_pkt(qb, qlen); + lowercase_pkt(pb, plen); + qstr = sldns_wire2str_pkt(qb, qlen); + pstr = sldns_wire2str_pkt(pb, plen); + if(!qstr || !pstr) error("cannot pkt2string"); + + /* remove before ;; ANSWER */ + s = strstr(qstr, ";; ANSWER SECTION"); + qcmpstr = s; + s = strstr(pstr, ";; ANSWER SECTION"); + pcmpstr = s; + if(!qcmpstr && !pcmpstr) { + free(qstr); + free(pstr); + free(qb); + free(pb); + return 1; + } + if(!qcmpstr || !pcmpstr) { + free(qstr); + free(pstr); + free(qb); + free(pb); + return 0; + } + + /* remove after answer section, (;; AUTH, ;; ADD, ;; MSG size ..) */ + s = strstr(qcmpstr, ";; AUTHORITY SECTION"); + if(!s) s = strstr(qcmpstr, ";; ADDITIONAL SECTION"); + if(!s) s = strstr(qcmpstr, ";; MSG SIZE"); + if(s) *s = 0; + s = strstr(pcmpstr, ";; AUTHORITY SECTION"); + if(!s) s = strstr(pcmpstr, ";; ADDITIONAL SECTION"); + if(!s) s = strstr(pcmpstr, ";; MSG SIZE"); + if(s) *s = 0; + + r = (strcmp(qcmpstr, pcmpstr) == 0); + + if(!r) { + verbose(3, "mismatch answer section '%s' and '%s'", + qcmpstr, pcmpstr); + } + + free(qstr); + free(pstr); + free(qb); + free(pb); + return r; +} + /** match all of the packet */ int match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl, @@ -1128,6 +1324,9 @@ match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl, /* check for reordered sections */ r = match_noloc(qstr, pstr, q, qlen, p, plen); } + if(!r) { + verbose(3, "mismatch pkt '%s' and '%s'", qstr, pstr); + } free(qstr); free(pstr); free(qb); @@ -1186,6 +1385,31 @@ static int subdomain_dname(uint8_t* q, size_t qlen, uint8_t* p, size_t plen) return 0; } +/** Match OPT RDATA (not the EDNS payload size or flags) */ +static int +match_ednsdata(uint8_t* q, size_t qlen, uint8_t* p, size_t plen) +{ + uint8_t* walk_q = q; + size_t walk_qlen = qlen; + uint8_t* walk_p = p; + size_t walk_plen = plen; + + if(!pkt_find_edns_opt(&walk_q, &walk_qlen)) + walk_qlen = 0; + if(!pkt_find_edns_opt(&walk_p, &walk_plen)) + walk_plen = 0; + + /* class + ttl + rdlen = 8 */ + if(walk_qlen <= 8 && walk_plen <= 8) { + verbose(3, "NO edns opt, move on"); + return 1; + } + if(walk_qlen != walk_plen) + return 0; + + return (memcmp(walk_p+8, walk_q+8, walk_qlen-8) == 0); +} + /* finds entry in list, or returns NULL */ struct entry* find_match(struct entry* entries, uint8_t* query_pkt, size_t len, @@ -1214,6 +1438,31 @@ find_match(struct entry* entries, uint8_t* query_pkt, size_t len, continue; } } + if(p->match_rcode) { + if(get_rcode(query_pkt, len) != get_rcode(reply, rlen)) { + char *r1 = sldns_wire2str_rcode(get_rcode(query_pkt, len)); + char *r2 = sldns_wire2str_rcode(get_rcode(reply, rlen)); + verbose(3, "bad rcode %s instead of %s\n", + r1, r2); + free(r1); + free(r2); + continue; + } + } + if(p->match_question) { + if(!match_question(query_pkt, len, reply, rlen, + (int)p->match_ttl)) { + verbose(3, "bad question section\n"); + continue; + } + } + if(p->match_answer) { + if(!match_answer(query_pkt, len, reply, rlen, + (int)p->match_ttl)) { + verbose(3, "bad answer section\n"); + continue; + } + } if(p->match_subdomain) { if(!subdomain_dname(query_pkt, len, reply, rlen)) { verbose(3, "bad subdomain\n"); @@ -1232,6 +1481,11 @@ find_match(struct entry* entries, uint8_t* query_pkt, size_t len, verbose(3, "bad; EDNS OPT present\n"); continue; } + if(p->match_ednsdata_raw && + !match_ednsdata(query_pkt, len, reply, rlen)) { + verbose(3, "bad EDNS data match.\n"); + continue; + } if(p->match_transport != transport_any && p->match_transport != transport) { verbose(3, "bad transport\n"); continue; @@ -1312,10 +1566,33 @@ adjust_packet(struct entry* match, uint8_t** answer_pkt, size_t *answer_len, return; } /* copy the ID */ - if(match->copy_id && reslen >= 2) - res[1] = orig[1]; - if(match->copy_id && reslen >= 1) - res[0] = orig[0]; + if(match->copy_id && reslen >= 2 && query_len >= 2) + res[1] = query_pkt[1]; + if(match->copy_id && reslen >= 1 && query_len >= 1) + res[0] = query_pkt[0]; + + if(match->copy_ednsdata_assume_clientsubnet) { + /** Assume there is only one EDNS option, which is ECS. + * Copy source mask from query to scope mask in reply. Assume + * rest of ECS data in response (eg address) matches the query. + */ + uint8_t* walk_q = orig; + size_t walk_qlen = origlen; + uint8_t* walk_p = res; + size_t walk_plen = reslen; + + if(!pkt_find_edns_opt(&walk_q, &walk_qlen)) { + walk_qlen = 0; + } + if(!pkt_find_edns_opt(&walk_p, &walk_plen)) { + walk_plen = 0; + } + /* class + ttl + rdlen + optcode + optlen + ecs fam + ecs source + * + ecs scope = index 15 */ + if(walk_qlen >= 15 && walk_plen >= 15) { + walk_p[15] = walk_q[14]; + } + } if(match->sleeptime > 0) { verbose(3, "sleeping for %d seconds\n", match->sleeptime); @@ -1410,6 +1687,7 @@ void delete_replylist(struct reply_packet* replist) np = p->next; free(p->reply_pkt); sldns_buffer_free(p->reply_from_hex); + sldns_buffer_free(p->raw_ednsdata); free(p); p=np; } diff --git a/external/unbound/testcode/testpkts.h b/external/unbound/testcode/testpkts.h index 5c00054..b175cab 100644 --- a/external/unbound/testcode/testpkts.h +++ b/external/unbound/testcode/testpkts.h @@ -50,6 +50,10 @@ struct sldns_file_parse_state; ; 'ttl' used with all, rrs in packet must also have matching TTLs. ; 'DO' will match only queries with DO bit set. ; 'noedns' matches queries without EDNS OPT records. + ; 'rcode' makes the query match the rcode from the reply + ; 'question' makes the query match the question section + ; 'answer' makes the query match the answer section + ; 'ednsdata' matches queries to HEX_EDNS section. MATCH [opcode] [qtype] [qname] [serial=] [all] [ttl] MATCH [UDP|TCP] DO MATCH ... @@ -84,6 +88,11 @@ struct sldns_file_parse_state; ; be parsed, ADJUST rules for the answer packet ; are ignored. Only copy_id is done. HEX_ANSWER_END + HEX_EDNS_BEGIN ; follow with hex data. + ; Raw EDNS data to match against. It must be an + ; exact match (all options are matched) and will be + ; evaluated only when 'MATCH ednsdata' given. + HEX_EDNS_END ENTRY_END @@ -144,6 +153,8 @@ struct reply_packet { uint8_t* reply_pkt; /** length of reply pkt */ size_t reply_len; + /** Additional EDNS data for matching queries. */ + struct sldns_buffer* raw_ednsdata; /** or reply pkt in hex if not parsable */ struct sldns_buffer* reply_from_hex; /** seconds to sleep before giving packet */ @@ -161,6 +172,12 @@ struct entry { uint8_t match_qtype; /** match qname with answer qname */ uint8_t match_qname; + /** match rcode with answer rcode */ + uint8_t match_rcode; + /** match question section */ + uint8_t match_question; + /** match answer section */ + uint8_t match_answer; /** match qname as subdomain of answer qname */ uint8_t match_subdomain; /** match SOA serial number, from auth section */ @@ -173,6 +190,8 @@ struct entry { uint8_t match_do; /** match absence of EDNS OPT record in query */ uint8_t match_noedns; + /** match edns data field given in hex */ + uint8_t match_ednsdata_raw; /** match query serial with this value. */ uint32_t ixfr_soa_serial; /** match on UDP/TCP */ @@ -186,6 +205,9 @@ struct entry { uint8_t copy_id; /** copy the query nametypeclass from query into the answer */ uint8_t copy_query; + /** copy ednsdata to reply, assume it is clientsubnet and + * adjust scopemask to match sourcemask */ + uint8_t copy_ednsdata_assume_clientsubnet; /** in seconds */ unsigned int sleeptime; diff --git a/external/unbound/testcode/unitauth.c b/external/unbound/testcode/unitauth.c new file mode 100644 index 0000000..4b538ef --- /dev/null +++ b/external/unbound/testcode/unitauth.c @@ -0,0 +1,882 @@ +/* + * testcode/unitauth.c - unit test for authzone authoritative zone code. + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * \file + * Unit test for auth zone code. + */ +#include "config.h" +#include "services/authzone.h" +#include "testcode/unitmain.h" +#include "util/regional.h" +#include "util/net_help.h" +#include "util/data/msgreply.h" +#include "services/cache/dns.h" +#include "sldns/str2wire.h" +#include "sldns/wire2str.h" +#include "sldns/sbuffer.h" + +/** verbosity for this test */ +static int vbmp = 0; + +/** struct for query and answer checks */ +struct q_ans { + /** zone to query (delegpt) */ + const char* zone; + /** query name, class, type */ + const char* query; + /** additional flags or "" */ + const char* flags; + /** expected answer to check against, multi-line string */ + const char* answer; +}; + +/** auth zone for test */ +static const char* zone_example_com = +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" +"example.com. 3600 IN A 10.0.0.1\n" +"example.com. 3600 IN NS ns.example.com.\n" +"example.com. 3600 IN MX 50 mail.example.com.\n" +"deep.ent.example.com. 3600 IN A 10.0.0.9\n" +"mail.example.com. 3600 IN A 10.0.0.4\n" +"ns.example.com. 3600 IN A 10.0.0.5\n" +"out.example.com. 3600 IN CNAME www.example.com.\n" +"plan.example.com. 3600 IN CNAME nonexist.example.com.\n" +"redir.example.com. 3600 IN DNAME redir.example.org.\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" +"*.wild.example.com. 3600 IN A 10.0.0.8\n" +"*.wild2.example.com. 3600 IN CNAME www.example.com.\n" +"*.wild3.example.com. 3600 IN A 10.0.0.8\n" +"*.wild3.example.com. 3600 IN MX 50 mail.example.com.\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" +"yy.example.com. 3600 IN TXT \"a\"\n" +"yy.example.com. 3600 IN TXT \"b\"\n" +"yy.example.com. 3600 IN TXT \"c\"\n" +"yy.example.com. 3600 IN TXT \"d\"\n" +"yy.example.com. 3600 IN TXT \"e\"\n" +"yy.example.com. 3600 IN TXT \"f\"\n" + +/* and some tests for RRSIGs (rrsig is www.nlnetlabs.nl copy) */ +/* normal: domain and 1 rrsig */ +"z1.example.com. 3600 IN A 10.0.0.10\n" +"z1.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +/* normal: domain and 2 rrsigs */ +"z2.example.com. 3600 IN A 10.0.0.10\n" +"z2.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z2.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +/* normal: domain and 3 rrsigs */ +"z3.example.com. 3600 IN A 10.0.0.10\n" +"z3.example.com. 3600 IN A 10.0.0.11\n" +"z3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12356 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +/* just an RRSIG rrset with nothing else */ +"z4.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +/* just an RRSIG rrset with nothing else, 2 rrsigs */ +"z5.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z5.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +#if 0 /* comparison of file does not work on this part because duplicates */ + /* are removed and the rrsets are reordered */ +/* first rrsig, then A record */ +"z6.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z6.example.com. 3600 IN A 10.0.0.10\n" +/* first two rrsigs, then A record */ +"z7.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z7.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z7.example.com. 3600 IN A 10.0.0.10\n" +/* first two rrsigs, then two A records */ +"z8.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z8.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z8.example.com. 3600 IN A 10.0.0.10\n" +"z8.example.com. 3600 IN A 10.0.0.11\n" +/* duplicate RR, duplicate RRsig */ +"z9.example.com. 3600 IN A 10.0.0.10\n" +"z9.example.com. 3600 IN A 10.0.0.11\n" +"z9.example.com. 3600 IN A 10.0.0.10\n" +"z9.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +"z9.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk=\n" +#endif /* if0 for duplicates and reordering */ +; + +/** queries for example.com: zone, query, flags, answer. end with NULL */ +static struct q_ans example_com_queries[] = { + { "example.com", "www.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" + }, + + { "example.com", "example.com. SOA", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"example.com. 3600 IN A 10.0.0.1\n" + }, + + { "example.com", "example.com. AAAA", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "example.com. NS", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"example.com. 3600 IN NS ns.example.com.\n" +";additional section\n" +"ns.example.com. 3600 IN A 10.0.0.5\n" + }, + + { "example.com", "example.com. MX", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"example.com. 3600 IN MX 50 mail.example.com.\n" +";additional section\n" +"mail.example.com. 3600 IN A 10.0.0.4\n" + }, + + { "example.com", "example.com. IN ANY", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" +"example.com. 3600 IN MX 50 mail.example.com.\n" +"example.com. 3600 IN A 10.0.0.1\n" + }, + + { "example.com", "nonexist.example.com. A", "", +";flags QR AA rcode NXDOMAIN\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "deep.ent.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"deep.ent.example.com. 3600 IN A 10.0.0.9\n" + }, + + { "example.com", "ent.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "below.deep.ent.example.com. A", "", +";flags QR AA rcode NXDOMAIN\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "mail.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"mail.example.com. 3600 IN A 10.0.0.4\n" + }, + + { "example.com", "ns.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"ns.example.com. 3600 IN A 10.0.0.5\n" + }, + + { "example.com", "out.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"out.example.com. 3600 IN CNAME www.example.com.\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" + }, + + { "example.com", "out.example.com. CNAME", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"out.example.com. 3600 IN CNAME www.example.com.\n" + }, + + { "example.com", "plan.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"plan.example.com. 3600 IN CNAME nonexist.example.com.\n" + }, + + { "example.com", "plan.example.com. CNAME", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"plan.example.com. 3600 IN CNAME nonexist.example.com.\n" + }, + + { "example.com", "redir.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "redir.example.com. DNAME", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"redir.example.com. 3600 IN DNAME redir.example.org.\n" + }, + + { "example.com", "abc.redir.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"redir.example.com. 3600 IN DNAME redir.example.org.\n" +"abc.redir.example.com. 0 IN CNAME abc.redir.example.org.\n" + }, + + { "example.com", "foo.abc.redir.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"redir.example.com. 3600 IN DNAME redir.example.org.\n" +"foo.abc.redir.example.com. 0 IN CNAME foo.abc.redir.example.org.\n" + }, + + { "example.com", "sub.example.com. NS", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "sub.example.com. DS", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "www.sub.example.com. NS", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "foo.abc.sub.example.com. NS", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "ns1.sub.example.com. A", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "ns1.sub.example.com. AAAA", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "ns2.sub.example.com. A", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "ns2.sub.example.com. AAAA", "", +";flags QR rcode NOERROR\n" +";authority section\n" +"sub.example.com. 3600 IN NS ns1.sub.example.com.\n" +"sub.example.com. 3600 IN NS ns2.sub.example.com.\n" +";additional section\n" +"ns1.sub.example.com. 3600 IN A 10.0.0.6\n" +"ns2.sub.example.com. 3600 IN AAAA 2001::7\n" + }, + + { "example.com", "wild.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "*.wild.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"*.wild.example.com. 3600 IN A 10.0.0.8\n" + }, + + { "example.com", "*.wild.example.com. AAAA", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "abc.wild.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"abc.wild.example.com. 3600 IN A 10.0.0.8\n" + }, + + { "example.com", "abc.wild.example.com. AAAA", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "foo.abc.wild.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"foo.abc.wild.example.com. 3600 IN A 10.0.0.8\n" + }, + + { "example.com", "foo.abc.wild.example.com. AAAA", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "wild2.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";authority section\n" +"example.com. 3600 IN SOA ns.example.org. noc.example.org. 2017042710 7200 3600 1209600 3600\n" + }, + + { "example.com", "*.wild2.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"*.wild2.example.com. 3600 IN CNAME www.example.com.\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" + }, + + { "example.com", "abc.wild2.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"abc.wild2.example.com. 3600 IN CNAME www.example.com.\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" + }, + + { "example.com", "foo.abc.wild2.example.com. A", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"foo.abc.wild2.example.com. 3600 IN CNAME www.example.com.\n" +"www.example.com. 3600 IN A 10.0.0.2\n" +"www.example.com. 3600 IN A 10.0.0.3\n" + }, + + { "example.com", "abc.wild2.example.com. CNAME", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"abc.wild2.example.com. 3600 IN CNAME www.example.com.\n" + }, + + { "example.com", "abc.wild3.example.com. IN ANY", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"abc.wild3.example.com. 3600 IN MX 50 mail.example.com.\n" +"abc.wild3.example.com. 3600 IN A 10.0.0.8\n" + }, + + { "example.com", "yy.example.com. TXT", "", +";flags QR AA rcode NOERROR\n" +";answer section\n" +"yy.example.com. 3600 IN TXT \"a\"\n" +"yy.example.com. 3600 IN TXT \"b\"\n" +"yy.example.com. 3600 IN TXT \"c\"\n" +"yy.example.com. 3600 IN TXT \"d\"\n" +"yy.example.com. 3600 IN TXT \"e\"\n" +"yy.example.com. 3600 IN TXT \"f\"\n" + }, + + {NULL, NULL, NULL, NULL} +}; + +/** number of tmpfiles */ +static int tempno = 0; +/** number of deleted files */ +static int delno = 0; + +/** cleanup tmp files at exit */ +static void +tmpfilecleanup(void) +{ + int i; + char buf[256]; + for(i=0; ilock); + z = auth_zone_create(az, nm, nmlen, LDNS_RR_CLASS_IN); + lock_rw_unlock(&az->lock); + if(!z) fatal_exit("cannot find zone"); + auth_zone_set_zonefile(z, fname); + z->for_upstream = 1; + + if(!auth_zone_read_zonefile(z)) { + fatal_exit("parse failure for auth zone %s", name); + } + lock_rw_unlock(&z->lock); + free(nm); + return z; +} + +/** check that file is the same as other file */ +static void +checkfile(char* f1, char *f2) +{ + char buf1[10240], buf2[10240]; + int line = 0; + FILE* i1, *i2; + i1 = fopen(f1, "r"); + if(!i1) fatal_exit("cannot open %s: %s", f1, strerror(errno)); + i2 = fopen(f2, "r"); + if(!i2) fatal_exit("cannot open %s: %s", f2, strerror(errno)); + + while(!feof(i1) && !feof(i2)) { + char* cp1, *cp2; + line++; + cp1 = fgets(buf1, (int)sizeof(buf1), i1); + cp2 = fgets(buf2, (int)sizeof(buf2), i2); + if((!cp1 && !feof(i1)) || (!cp2 && !feof(i2))) + fatal_exit("fgets failed: %s", strerror(errno)); + if(strcmp(buf1, buf2) != 0) { + log_info("in files %s and %s:%d", f1, f2, line); + log_info("'%s'", buf1); + log_info("'%s'", buf2); + fatal_exit("files are not eqaul"); + } + } + unit_assert(feof(i1) && feof(i2)); + + fclose(i1); + fclose(i2); +} + +/** check that a zone (in string) can be read and reproduced */ +static void +check_read_exact(const char* name, const char* zone) +{ + struct auth_zones* az; + struct auth_zone* z; + char* fname, *outf; + if(vbmp) printf("check read zone %s\n", name); + fname = create_tmp_file(zone); + + az = auth_zones_create(); + unit_assert(az); + z = addzone(az, name, fname); + unit_assert(z); + outf = create_tmp_file(NULL); + if(!auth_zone_write_file(z, outf)) { + fatal_exit("write file failed for %s", fname); + } + checkfile(fname, outf); + + del_tmp_file(fname); + del_tmp_file(outf); + auth_zones_delete(az); +} + +/** parse q_ans structure for making query */ +static void +q_ans_parse(struct q_ans* q, struct regional* region, + struct query_info** qinfo, int* fallback, uint8_t** dp_nm, + size_t* dp_nmlen) +{ + int ret; + uint8_t buf[65535]; + size_t len, dname_len; + + /* parse flags */ + *fallback = 0; /* default fallback value */ + if(strstr(q->flags, "fallback")) + *fallback = 1; + + /* parse zone */ + *dp_nmlen = sizeof(buf); + if((ret=sldns_str2wire_dname_buf(q->zone, buf, dp_nmlen))!=0) + fatal_exit("cannot parse query dp zone %s : %s", q->zone, + sldns_get_errorstr_parse(ret)); + *dp_nm = regional_alloc_init(region, buf, *dp_nmlen); + if(!dp_nm) fatal_exit("out of memory"); + + /* parse query */ + len = sizeof(buf); + dname_len = 0; + if((ret=sldns_str2wire_rr_question_buf(q->query, buf, &len, &dname_len, + *dp_nm, *dp_nmlen, NULL, 0))!=0) + fatal_exit("cannot parse query %s : %s", q->query, + sldns_get_errorstr_parse(ret)); + *qinfo = (struct query_info*)regional_alloc_zero(region, + sizeof(**qinfo)); + if(!*qinfo) fatal_exit("out of memory"); + (*qinfo)->qname = regional_alloc_init(region, buf, dname_len); + if(!(*qinfo)->qname) fatal_exit("out of memory"); + (*qinfo)->qname_len = dname_len; + (*qinfo)->qtype = sldns_wirerr_get_type(buf, len, dname_len); + (*qinfo)->qclass = sldns_wirerr_get_class(buf, len, dname_len); +} + +/** print flags to string */ +static void +pr_flags(sldns_buffer* buf, uint16_t flags) +{ + char rcode[32]; + sldns_buffer_printf(buf, ";flags"); + if((flags&BIT_QR)!=0) sldns_buffer_printf(buf, " QR"); + if((flags&BIT_AA)!=0) sldns_buffer_printf(buf, " AA"); + if((flags&BIT_TC)!=0) sldns_buffer_printf(buf, " TC"); + if((flags&BIT_RD)!=0) sldns_buffer_printf(buf, " RD"); + if((flags&BIT_CD)!=0) sldns_buffer_printf(buf, " CD"); + if((flags&BIT_RA)!=0) sldns_buffer_printf(buf, " RA"); + if((flags&BIT_AD)!=0) sldns_buffer_printf(buf, " AD"); + if((flags&BIT_Z)!=0) sldns_buffer_printf(buf, " Z"); + sldns_wire2str_rcode_buf((int)(FLAGS_GET_RCODE(flags)), + rcode, sizeof(rcode)); + sldns_buffer_printf(buf, " rcode %s", rcode); + sldns_buffer_printf(buf, "\n"); +} + +/** print RRs to string */ +static void +pr_rrs(sldns_buffer* buf, struct reply_info* rep) +{ + char s[65536]; + size_t i, j; + struct packed_rrset_data* d; + log_assert(rep->rrset_count == rep->an_numrrsets + rep->ns_numrrsets + + rep->ar_numrrsets); + for(i=0; irrset_count; i++) { + /* section heading */ + if(i == 0 && rep->an_numrrsets != 0) + sldns_buffer_printf(buf, ";answer section\n"); + else if(i == rep->an_numrrsets && rep->ns_numrrsets != 0) + sldns_buffer_printf(buf, ";authority section\n"); + else if(i == rep->an_numrrsets+rep->ns_numrrsets && + rep->ar_numrrsets != 0) + sldns_buffer_printf(buf, ";additional section\n"); + /* spool RRset */ + d = (struct packed_rrset_data*)rep->rrsets[i]->entry.data; + for(j=0; jcount+d->rrsig_count; j++) { + if(!packed_rr_to_string(rep->rrsets[i], j, 0, + s, sizeof(s))) { + fatal_exit("could not rr_to_string %d", + (int)i); + } + sldns_buffer_printf(buf, "%s", s); + } + } +} + +/** create string for message */ +static char* +msgtostr(struct dns_msg* msg) +{ + char* str; + sldns_buffer* buf = sldns_buffer_new(65535); + if(!buf) fatal_exit("out of memory"); + if(!msg) { + sldns_buffer_printf(buf, "null packet\n"); + } else { + pr_flags(buf, msg->rep->flags); + pr_rrs(buf, msg->rep); + } + + str = strdup((char*)sldns_buffer_begin(buf)); + if(!str) fatal_exit("out of memory"); + sldns_buffer_free(buf); + return str; +} + +/** find line diff between strings */ +static void +line_diff(const char* p, const char* q, const char* pdesc, const char* qdesc) +{ + char* pdup, *qdup, *pl, *ql; + int line = 1; + pdup = strdup(p); + qdup = strdup(q); + if(!pdup || !qdup) fatal_exit("out of memory"); + pl=pdup; + ql=qdup; + printf("linediff (<%s, >%s)\n", pdesc, qdesc); + while(pl && ql && *pl && *ql) { + char* ep = strchr(pl, '\n'); + char* eq = strchr(ql, '\n'); + /* terminate lines */ + if(ep) *ep = 0; + if(eq) *eq = 0; + /* printout */ + if(strcmp(pl, ql) == 0) { + printf("%3d %s\n", line, pl); + } else { + printf("%3d < %s\n", line, pl); + printf("%3d > %s\n", line, ql); + } + if(ep) *ep = '\n'; + if(eq) *eq = '\n'; + if(ep) pl = ep+1; + else pl = NULL; + if(eq) ql = eq+1; + else ql = NULL; + line++; + } + if(pl && *pl) { + printf("%3d < %s\n", line, pl); + } + if(ql && *ql) { + printf("%3d > %s\n", line, ql); + } + free(pdup); + free(qdup); +} + +/** make q_ans query */ +static void +q_ans_query(struct q_ans* q, struct auth_zones* az, struct query_info* qinfo, + struct regional* region, int expected_fallback, uint8_t* dp_nm, + size_t dp_nmlen) +{ + int ret, fallback = 0; + struct dns_msg* msg = NULL; + char* ans_str; + int oldv = verbosity; + /* increase verbosity to printout logic in authzone */ + if(vbmp) verbosity = 4; + ret = auth_zones_lookup(az, qinfo, region, &msg, &fallback, dp_nm, + dp_nmlen); + if(vbmp) verbosity = oldv; + + /* check the answer */ + ans_str = msgtostr(msg); + /* printout if vbmp */ + if(vbmp) printf("got (ret=%s%s):\n%s", + (ret?"ok":"fail"), (fallback?" fallback":""), ans_str); + /* check expected value for ret */ + if(expected_fallback && ret != 0) { + /* ret is zero on fallback */ + if(vbmp) printf("fallback expected, but " + "return value is not false\n"); + unit_assert(expected_fallback && ret == 0); + } + if(ret == 0) { + if(!expected_fallback) { + if(vbmp) printf("return value is false, " + "(unexpected)\n"); + } + unit_assert(expected_fallback); + } + /* check expected value for fallback */ + if(expected_fallback && !fallback) { + if(vbmp) printf("expected fallback, but fallback is no\n"); + } else if(!expected_fallback && fallback) { + if(vbmp) printf("expected no fallback, but fallback is yes\n"); + } + unit_assert( (expected_fallback&&fallback) || + (!expected_fallback&&!fallback)); + /* check answer string */ + if(strcmp(q->answer, ans_str) != 0) { + if(vbmp) printf("wanted:\n%s", q->answer); + line_diff(q->answer, ans_str, "wanted", "got"); + } + unit_assert(strcmp(q->answer, ans_str) == 0); + if(vbmp) printf("query ok\n\n"); + free(ans_str); +} + +/** check queries on a loaded zone */ +static void +check_az_q_ans(struct auth_zones* az, struct q_ans* queries) +{ + struct q_ans* q; + struct regional* region = regional_create(); + struct query_info* qinfo; + int fallback; + uint8_t* dp_nm; + size_t dp_nmlen; + for(q=queries; q->zone; q++) { + if(vbmp) printf("query %s: %s %s\n", q->zone, q->query, + q->flags); + q_ans_parse(q, region, &qinfo, &fallback, &dp_nm, &dp_nmlen); + q_ans_query(q, az, qinfo, region, fallback, dp_nm, dp_nmlen); + regional_free_all(region); + } + regional_destroy(region); +} + +/** check queries for a zone are returned as specified */ +static void +check_queries(const char* name, const char* zone, struct q_ans* queries) +{ + struct auth_zones* az; + struct auth_zone* z; + char* fname; + if(vbmp) printf("check queries %s\n", name); + fname = create_tmp_file(zone); + az = auth_zones_create(); + if(!az) fatal_exit("out of memory"); + z = addzone(az, name, fname); + if(!z) fatal_exit("could not read zone for queries test"); + del_tmp_file(fname); + + /* run queries and test them */ + check_az_q_ans(az, queries); + + auth_zones_delete(az); +} + +/** Test authzone compare_serial */ +static void +authzone_compare_serial(void) +{ + if(vbmp) printf("Testing compare_serial\n"); + unit_assert(compare_serial(0, 1) < 0); + unit_assert(compare_serial(1, 0) > 0); + unit_assert(compare_serial(0, 0) == 0); + unit_assert(compare_serial(1, 1) == 0); + unit_assert(compare_serial(0xf0000000, 0xf0000000) == 0); + unit_assert(compare_serial(0, 0xf0000000) > 0); + unit_assert(compare_serial(0xf0000000, 0) < 0); + unit_assert(compare_serial(0xf0000000, 0xf0000001) < 0); + unit_assert(compare_serial(0xf0000002, 0xf0000001) > 0); + unit_assert(compare_serial(0x70000000, 0x80000000) < 0); + unit_assert(compare_serial(0x90000000, 0x70000000) > 0); +} + +/** Test authzone read from file */ +static void +authzone_read_test(void) +{ + if(vbmp) printf("Testing read auth zone\n"); + check_read_exact("example.com", zone_example_com); +} + +/** Test authzone query from zone */ +static void +authzone_query_test(void) +{ + if(vbmp) printf("Testing query auth zone\n"); + check_queries("example.com", zone_example_com, example_com_queries); +} + +/** test authzone code */ +void +authzone_test(void) +{ + unit_show_feature("authzone"); + atexit(tmpfilecleanup); + authzone_compare_serial(); + authzone_read_test(); + authzone_query_test(); +} diff --git a/external/unbound/testcode/unitecs.c b/external/unbound/testcode/unitecs.c new file mode 100644 index 0000000..097ae9e --- /dev/null +++ b/external/unbound/testcode/unitecs.c @@ -0,0 +1,284 @@ +/* + * testcode/unitecs.c - unit test for ecs routines. + * + * Copyright (c) 2013, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** + * \file + * Calls ecs related unit tests. Exits with code 1 on a failure. + */ + +#include "config.h" + +#ifdef CLIENT_SUBNET + +#include "util/log.h" +#include "util/module.h" +#include "testcode/unitmain.h" +#include "edns-subnet/addrtree.h" +#include "edns-subnet/subnetmod.h" + +/* + void printkey(addrkey_t *k, addrlen_t bits) + { + int byte; + int bytes = bits/8 + ((bits%8)>0); + char msk = 0xFF; + for (byte = 0; byte < bytes; byte++) { + //~ if (byte+1 == bytes) + //~ msk = 0xFF<<(8-bits%8); + printf("%02x ", k[byte]&msk); + } + } + + void print_tree(struct addrnode* node, int indent, int maxdepth) + { + struct addredge* edge; + int i, s, byte; + if (indent == 0) printf("-----Tree-----\n"); + if (indent > maxdepth) { + printf("\n"); + return; + } + printf("[node elem:%d] (%d)\n", node->elem != NULL, node); + for (i = 0; i<2; i++) { + if (node->edge[i]) { + for (s = 0; s < indent; s++) printf(" "); + printkey(node->edge[i]->str, node->edge[i]->len); + printf("(len %d bits, %d bytes) ", node->edge[i]->len, + node->edge[i]->len/8 + ((node->edge[i]->len%8)>0)); + print_tree(node->edge[i]->node, indent+1, maxdepth); + } + } + if (indent == 0) printf("-----Tree-----"); + } +*/ + +/* what should we check? + * X - is it balanced? (a node with 1 child should not have + * a node with 1 child MUST have elem + * child must be sub of parent + * edge must be longer than parent edge + * */ +static int addrtree_inconsistent_subtree(struct addrtree* tree, + struct addredge* parent_edge, addrlen_t depth) +{ + struct addredge* edge; + struct addrnode* node = parent_edge->node; + int childcount, i, r; + if (depth > tree->max_depth) return 15; + childcount = (node->edge[0] != NULL) + (node->edge[1] != NULL); + /* Only nodes with 2 children should possibly have no element. */ + if (childcount < 2 && !node->elem) return 10; + for (i = 0; i<2; i++) { + edge = node->edge[i]; + if (!edge) continue; + if (!edge->node) return 11; + if (!edge->str) return 12; + if (edge->len <= parent_edge->len) return 13; + if (!unittest_wrapper_addrtree_issub(parent_edge->str, + parent_edge->len, edge->str, edge->len, 0)) + return 14; + if ((r = addrtree_inconsistent_subtree(tree, edge, depth+1)) != 0) + return 100+r; + } + return 0; +} + +static int addrtree_inconsistent(struct addrtree* tree) +{ + struct addredge* edge; + int i, r; + + if (!tree) return 0; + if (!tree->root) return 1; + + for (i = 0; i<2; i++) { + edge = tree->root->edge[i]; + if (!edge) continue; + if (!edge->node) return 3; + if (!edge->str) return 4; + if ((r = addrtree_inconsistent_subtree(tree, edge, 1)) != 0) + return r; + } + return 0; +} + +static addrlen_t randomkey(addrkey_t **k, int maxlen) +{ + int byte; + int bits = rand() % maxlen; + int bytes = bits/8 + (bits%8>0); /*ceil*/ + *k = (addrkey_t *) malloc(bytes * sizeof(addrkey_t)); + for (byte = 0; byte < bytes; byte++) { + (*k)[byte] = (addrkey_t)(rand() & 0xFF); + } + return (addrlen_t)bits; +} + +static void elemfree(void *envptr, void *elemptr) +{ + struct reply_info *elem = (struct reply_info *)elemptr; + (void)envptr; + free(elem); +} + +static void consistency_test(void) +{ + addrlen_t l; + time_t i; + unsigned int count; + addrkey_t *k; + struct addrtree* t; + struct module_env env; + struct reply_info *elem; + time_t timenow = 0; + unit_show_func("edns-subnet/addrtree.h", "Tree consistency check"); + srand(9195); /* just some value for reproducibility */ + + t = addrtree_create(100, &elemfree, &unittest_wrapper_subnetmod_sizefunc, &env, 0); + count = t->node_count; + unit_assert(count == 0); + for (i = 0; i < 1000; i++) { + l = randomkey(&k, 128); + elem = (struct reply_info *) calloc(1, sizeof(struct reply_info)); + addrtree_insert(t, k, l, 64, elem, timenow + 10, timenow); + /* This should always hold because no items ever expire. They + * could be overwritten, though. */ + unit_assert( count <= t->node_count ); + count = t->node_count; + free(k); + unit_assert( !addrtree_inconsistent(t) ); + } + addrtree_delete(t); + + unit_show_func("edns-subnet/addrtree.h", "Tree consistency with purge"); + t = addrtree_create(8, &elemfree, &unittest_wrapper_subnetmod_sizefunc, &env, 0); + unit_assert(t->node_count == 0); + for (i = 0; i < 1000; i++) { + l = randomkey(&k, 128); + elem = (struct reply_info *) calloc(1, sizeof(struct reply_info)); + addrtree_insert(t, k, l, 64, elem, i + 10, i); + free(k); + unit_assert( !addrtree_inconsistent(t) ); + } + addrtree_delete(t); + + unit_show_func("edns-subnet/addrtree.h", "Tree consistency with limit"); + t = addrtree_create(8, &elemfree, &unittest_wrapper_subnetmod_sizefunc, &env, 27); + unit_assert(t->node_count == 0); + for (i = 0; i < 1000; i++) { + l = randomkey(&k, 128); + elem = (struct reply_info *) calloc(1, sizeof(struct reply_info)); + addrtree_insert(t, k, l, 64, elem, i + 10, i); + unit_assert( t->node_count <= 27); + free(k); + unit_assert( !addrtree_inconsistent(t) ); + } + addrtree_delete(t); +} + +static void issub_test(void) +{ + addrkey_t k1[] = {0x55, 0x55, 0x5A}; + addrkey_t k2[] = {0x55, 0x5D, 0x5A}; + unit_show_func("edns-subnet/addrtree.h", "issub"); + unit_assert( !unittest_wrapper_addrtree_issub(k1, 24, k2, 24, 0) ); + unit_assert( unittest_wrapper_addrtree_issub(k1, 8, k2, 16, 0) ); + unit_assert( unittest_wrapper_addrtree_issub(k2, 12, k1, 13, 0) ); + unit_assert( !unittest_wrapper_addrtree_issub(k1, 16, k2, 12, 0) ); + unit_assert( unittest_wrapper_addrtree_issub(k1, 12, k2, 12, 0) ); + unit_assert( !unittest_wrapper_addrtree_issub(k1, 13, k2, 13, 0) ); + unit_assert( unittest_wrapper_addrtree_issub(k1, 24, k2, 24, 13) ); + unit_assert( !unittest_wrapper_addrtree_issub(k1, 24, k2, 20, 13) ); + unit_assert( unittest_wrapper_addrtree_issub(k1, 20, k2, 24, 13) ); +} + +static void getbit_test(void) +{ + addrkey_t k1[] = {0x55, 0x55, 0x5A}; + int i; + unit_show_func("edns-subnet/addrtree.h", "getbit"); + for(i = 0; i<20; i++) { + unit_assert( unittest_wrapper_addrtree_getbit(k1, 20, (addrlen_t)i) == (i&1) ); + } +} + +static void bits_common_test(void) +{ + addrkey_t k1[] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0}; + addrkey_t k2[] = {0,0,0,0,0,0,0,0}; + addrlen_t i; + + unit_show_func("edns-subnet/addrtree.h", "bits_common"); + for(i = 0; i<64; i++) { + unit_assert( unittest_wrapper_addrtree_bits_common(k1, 64, k1, 64, i) == 64 ); + } + for(i = 0; i<8; i++) { + k2[i] = k1[i]^(1<id = id; k->entry.hash = myhash(id); @@ -68,9 +68,9 @@ static testkey_t* newkey(int id) { return k; } /** new data el */ -static testdata_t* newdata(int val) { - testdata_t* d = (testdata_t*)calloc(1, - sizeof(testdata_t)); +static testdata_type* newdata(int val) { + testdata_type* d = (testdata_type*)calloc(1, + sizeof(testdata_type)); if(!d) fatal_exit("out of memory"); d->data = val; return d; @@ -80,12 +80,12 @@ static testdata_t* newdata(int val) { static void test_bin_find_entry(struct lruhash* table) { - testkey_t* k = newkey(12); - testdata_t* d = newdata(128); - testkey_t* k2 = newkey(12 + 1024); - testkey_t* k3 = newkey(14); - testkey_t* k4 = newkey(12 + 1024*2); - hashvalue_t h = myhash(12); + testkey_type* k = newkey(12); + testdata_type* d = newdata(128); + testkey_type* k2 = newkey(12 + 1024); + testkey_type* k3 = newkey(14); + testkey_type* k4 = newkey(12 + 1024*2); + hashvalue_type h = myhash(12); struct lruhash_bin bin; memset(&bin, 0, sizeof(bin)); bin_init(&bin, 1); @@ -161,8 +161,8 @@ test_bin_find_entry(struct lruhash* table) /** test lru_front lru_remove */ static void test_lru(struct lruhash* table) { - testkey_t* k = newkey(12); - testkey_t* k2 = newkey(14); + testkey_type* k = newkey(12); + testkey_type* k2 = newkey(14); lock_quick_lock(&table->lock); unit_assert( table->lru_start == NULL && table->lru_end == NULL); @@ -208,10 +208,10 @@ static void test_lru(struct lruhash* table) static void test_short_table(struct lruhash* table) { - testkey_t* k = newkey(12); - testkey_t* k2 = newkey(14); - testdata_t* d = newdata(128); - testdata_t* d2 = newdata(129); + testkey_type* k = newkey(12); + testkey_type* k2 = newkey(14); + testdata_type* d = newdata(128); + testdata_type* d2 = newdata(129); k->entry.data = d; k2->entry.data = d2; @@ -232,11 +232,11 @@ test_short_table(struct lruhash* table) /** test adding a random element */ static void -testadd(struct lruhash* table, testdata_t* ref[]) +testadd(struct lruhash* table, testdata_type* ref[]) { int numtoadd = random() % HASHTESTMAX; - testdata_t* data = newdata(numtoadd); - testkey_t* key = newkey(numtoadd); + testdata_type* data = newdata(numtoadd); + testkey_type* key = newkey(numtoadd); key->entry.data = data; lruhash_insert(table, myhash(numtoadd), &key->entry, data, NULL); ref[numtoadd] = data; @@ -244,10 +244,10 @@ testadd(struct lruhash* table, testdata_t* ref[]) /** test adding a random element */ static void -testremove(struct lruhash* table, testdata_t* ref[]) +testremove(struct lruhash* table, testdata_type* ref[]) { int num = random() % HASHTESTMAX; - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); lruhash_remove(table, myhash(num), key); ref[num] = NULL; delkey(key); @@ -255,12 +255,12 @@ testremove(struct lruhash* table, testdata_t* ref[]) /** test adding a random element */ static void -testlookup(struct lruhash* table, testdata_t* ref[]) +testlookup(struct lruhash* table, testdata_type* ref[]) { int num = random() % HASHTESTMAX; - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); struct lruhash_entry* en = lruhash_lookup(table, myhash(num), key, 0); - testdata_t* data = en? (testdata_t*)en->data : NULL; + testdata_type* data = en? (testdata_type*)en->data : NULL; if(en) { unit_assert(en->key); unit_assert(en->data); @@ -310,11 +310,11 @@ check_table(struct lruhash* table) /** test adding a random element (unlimited range) */ static void -testadd_unlim(struct lruhash* table, testdata_t** ref) +testadd_unlim(struct lruhash* table, testdata_type** ref) { int numtoadd = random() % (HASHTESTMAX * 10); - testdata_t* data = newdata(numtoadd); - testkey_t* key = newkey(numtoadd); + testdata_type* data = newdata(numtoadd); + testkey_type* key = newkey(numtoadd); key->entry.data = data; lruhash_insert(table, myhash(numtoadd), &key->entry, data, NULL); if(ref) @@ -323,10 +323,10 @@ testadd_unlim(struct lruhash* table, testdata_t** ref) /** test adding a random element (unlimited range) */ static void -testremove_unlim(struct lruhash* table, testdata_t** ref) +testremove_unlim(struct lruhash* table, testdata_type** ref) { int num = random() % (HASHTESTMAX*10); - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); lruhash_remove(table, myhash(num), key); if(ref) ref[num] = NULL; @@ -335,12 +335,12 @@ testremove_unlim(struct lruhash* table, testdata_t** ref) /** test adding a random element (unlimited range) */ static void -testlookup_unlim(struct lruhash* table, testdata_t** ref) +testlookup_unlim(struct lruhash* table, testdata_type** ref) { int num = random() % (HASHTESTMAX*10); - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); struct lruhash_entry* en = lruhash_lookup(table, myhash(num), key, 0); - testdata_t* data = en? (testdata_t*)en->data : NULL; + testdata_type* data = en? (testdata_type*)en->data : NULL; if(en) { unit_assert(en->key); unit_assert(en->data); @@ -360,7 +360,7 @@ static void test_long_table(struct lruhash* table) { /* assuming it all fits in the hashtable, this check will work */ - testdata_t* ref[HASHTESTMAX * 100]; + testdata_type* ref[HASHTESTMAX * 100]; size_t i; memset(ref, 0, sizeof(ref)); /* test assumption */ @@ -422,7 +422,7 @@ struct test_thr { /** thread num, first entry. */ int num; /** id */ - ub_thread_t id; + ub_thread_type id; /** hash table */ struct lruhash* table; }; diff --git a/external/unbound/testcode/unitmain.c b/external/unbound/testcode/unitmain.c index 0b32dcd..fecde80 100644 --- a/external/unbound/testcode/unitmain.c +++ b/external/unbound/testcode/unitmain.c @@ -73,7 +73,7 @@ int testcount = 0; /** test alloc code */ static void alloc_test(void) { - alloc_special_t *t1, *t2; + alloc_special_type *t1, *t2; struct alloc_cache major, minor1, minor2; int i; @@ -380,7 +380,31 @@ config_memsize_test(void) unit_assert( cfg_parse_memsize("0 Gb", &v) && v==0*1024*1024); } +/** test config_file: test tag code */ +static void +config_tag_test(void) +{ + unit_show_func("util/config_file.c", "taglist_intersect"); + unit_assert( taglist_intersect( + (uint8_t*)"\000\000\000", 3, (uint8_t*)"\001\000\001", 3 + ) == 0); + unit_assert( taglist_intersect( + (uint8_t*)"\000\000\001", 3, (uint8_t*)"\001\000\001", 3 + ) == 1); + unit_assert( taglist_intersect( + (uint8_t*)"\001\000\000", 3, (uint8_t*)"\001\000\001", 3 + ) == 1); + unit_assert( taglist_intersect( + (uint8_t*)"\001", 1, (uint8_t*)"\001\000\001", 3 + ) == 1); + unit_assert( taglist_intersect( + (uint8_t*)"\001\000\001", 3, (uint8_t*)"\001", 1 + ) == 1); +} + #include "util/rtt.h" +#include "util/timehist.h" +#include "libunbound/unbound.h" /** test RTT code */ static void rtt_test(void) @@ -404,10 +428,11 @@ rtt_test(void) unit_assert( rtt_timeout(&r) > RTT_MIN_TIMEOUT-1); unit_assert( rtt_timeout(&r) < RTT_MAX_TIMEOUT+1); } + /* must be the same, timehist bucket is used in stats */ + unit_assert(UB_STATS_BUCKET_NUM == NUM_BUCKETS_HIST); } #include "services/cache/infra.h" -#include "util/config_file.h" /* lookup and get key and data structs easily */ static struct infra_data* infra_lookup_host(struct infra_cache* infra, @@ -536,6 +561,285 @@ rnd_test(void) ub_randfree(r); } +#include "respip/respip.h" +#include "services/localzone.h" +#include "util/data/packed_rrset.h" +typedef struct addr_action {char* ip; char* sact; enum respip_action act;} + addr_action_t; + +/** Utility function that verifies that the respip set has actions as expected */ +static void +verify_respip_set_actions(struct respip_set* set, addr_action_t actions[], + int actions_len) +{ + int i = 0; + struct rbtree_type* tree = respip_set_get_tree(set); + for (i=0; icount); +} + +/** Global respip actions test; apply raw config data and verify that + * all the nodes in the respip set, looked up by address, have expected + * actions */ +static void +respip_conf_actions_test(void) +{ + addr_action_t config_response_ip[] = { + {"192.0.1.0/24", "deny", respip_deny}, + {"192.0.2.0/24", "redirect", respip_redirect}, + {"192.0.3.0/26", "inform", respip_inform}, + {"192.0.4.0/27", "inform_deny", respip_inform_deny}, + {"2001:db8:1::/48", "always_transparent", respip_always_transparent}, + {"2001:db8:2::/49", "always_refuse", respip_always_refuse}, + {"2001:db8:3::/50", "always_nxdomain", respip_always_nxdomain}, + }; + int i; + struct respip_set* set = respip_set_create(); + struct config_file cfg; + int clen = (int)(sizeof(config_response_ip) / sizeof(addr_action_t)); + + unit_assert(set); + unit_show_feature("global respip config actions apply"); + memset(&cfg, 0, sizeof(cfg)); + for(i=0; iname = strdup("view1"); + cv2->name = strdup("view2"); + unit_assert(cv1->name && cv2->name); + cv1->next = cv2; + cfg.views = cv1; + + for(i=0; irespip_actions, ip, sact)) + unit_assert(0); + } + for(i=0; irespip_actions, ip, sact)) + unit_assert(0); + } + views = views_create(); + unit_assert(views); + unit_assert(views_apply_cfg(views, &cfg)); + unit_assert(respip_views_apply_cfg(views, &cfg, &have_respip_cfg)); + + /* now verify the respip sets in each view */ + v = views_find_view(views, "view1", 0); + unit_assert(v); + verify_respip_set_actions(v->respip_set, config_response_ip_view1, clen1); + lock_rw_unlock(&v->lock); + v = views_find_view(views, "view2", 0); + unit_assert(v); + verify_respip_set_actions(v->respip_set, config_response_ip_view2, clen2); + lock_rw_unlock(&v->lock); + + views_delete(views); + free(cv1->name); + free(cv1); + free(cv2->name); + free(cv2); +} + +typedef struct addr_data {char* ip; char* data;} addr_data_t; + +/** find the respip address node in the specified tree (by address lookup) + * and verify type and address of the specified rdata (by index) in this + * node's rrset */ +static void +verify_rrset(struct respip_set* set, const char* ipstr, + const char* rdatastr, size_t rdi, uint16_t type) +{ + struct sockaddr_storage addr; + int net; + char buf[65536]; + socklen_t addrlen; + struct rbtree_type* tree; + struct resp_addr* node; + const struct ub_packed_rrset_key* rrs; + + netblockstrtoaddr(ipstr, UNBOUND_DNS_PORT, &addr, &addrlen, &net); + tree = respip_set_get_tree(set); + node = (struct resp_addr*)addr_tree_find(tree, &addr, addrlen, net); + unit_assert(node); + unit_assert((rrs = resp_addr_get_rrset(node))); + unit_assert(ntohs(rrs->rk.type) == type); + packed_rr_to_string((struct ub_packed_rrset_key*)rrs, + rdi, 0, buf, sizeof(buf)); + unit_assert(strstr(buf, rdatastr)); +} + +/** Dataset used to test redirect rrset initialization for both + * global and per-view respip redirect configuration */ +static addr_data_t config_response_ip_data[] = { + {"192.0.1.0/24", "A 1.2.3.4"}, + {"192.0.1.0/24", "A 11.12.13.14"}, + {"192.0.2.0/24", "CNAME www.example.com."}, + {"2001:db8:1::/48", "AAAA 2001:db8:1::2:1"}, +}; + +/** Populate raw respip redirect config data, used for both global and + * view-based respip redirect test case */ +static void +cfg_insert_respip_data(struct config_str2list** respip_actions, + struct config_str2list** respip_data) +{ + int clen = (int)(sizeof(config_response_ip_data) / sizeof(addr_data_t)); + int i = 0; + + /* insert actions (duplicate netblocks don't matter) */ + for(i=0; iname = strdup("view1"); + unit_assert(cv->name); + cfg.views = cv; + cfg_insert_respip_data(&cv->respip_actions, &cv->respip_data); + views = views_create(); + unit_assert(views); + unit_assert(views_apply_cfg(views, &cfg)); + + /* apply configuration and verify rrsets */ + unit_assert(respip_views_apply_cfg(views, &cfg, &have_respip_cfg)); + v = views_find_view(views, "view1", 0); + unit_assert(v); + verify_rrset(v->respip_set, "192.0.1.0/24", "1.2.3.4", + 0, LDNS_RR_TYPE_A); + verify_rrset(v->respip_set, "192.0.1.0/24", "11.12.13.14", + 1, LDNS_RR_TYPE_A); + verify_rrset(v->respip_set, "192.0.2.0/24", "www.example.com", + 0, LDNS_RR_TYPE_CNAME); + verify_rrset(v->respip_set, "2001:db8:1::/48", "2001:db8:1::2:1", + 0, LDNS_RR_TYPE_AAAA); + lock_rw_unlock(&v->lock); + + views_delete(views); + free(cv->name); + free(cv); +} + +/** respip unit tests */ +static void respip_test(void) +{ + respip_view_conf_data_test(); + respip_conf_data_test(); + respip_view_conf_actions_test(); + respip_conf_actions_test(); +} + void unit_show_func(const char* file, const char* func) { printf("test %s:%s\n", file, func); @@ -546,6 +850,9 @@ void unit_show_feature(const char* feature) printf("test %s functions\n", feature); } +#ifdef USE_ECDSA_EVP_WORKAROUND +void ecdsa_evp_workaround_init(void); +#endif /** * Main unit test program. Setup, teardown and report errors. * @param argc: arg count. @@ -563,23 +870,28 @@ main(int argc, char* argv[]) } printf("Start of %s unit test.\n", PACKAGE_STRING); #ifdef HAVE_SSL +# ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS ERR_load_crypto_strings(); -# ifdef HAVE_OPENSSL_CONFIG - OPENSSL_config("unbound"); # endif # ifdef USE_GOST (void)sldns_key_EVP_load_gost_id(); # endif +# ifdef USE_ECDSA_EVP_WORKAROUND + ecdsa_evp_workaround_init(); +# endif #elif defined(HAVE_NSS) if(NSS_NoDB_Init(".") != SECSuccess) fatal_exit("could not init NSS"); #endif /* HAVE_SSL or HAVE_NSS*/ checklock_start(); + authzone_test(); neg_test(); rnd_test(); + respip_test(); verify_test(); net_test(); config_memsize_test(); + config_tag_test(); dname_test(); rtt_test(); anchors_test(); @@ -590,6 +902,12 @@ main(int argc, char* argv[]) infra_test(); ldns_test(); msgparse_test(); +#ifdef CLIENT_SUBNET + ecs_test(); +#endif /* CLIENT_SUBNET */ + if(log_get_lock()) { + lock_quick_destroy((lock_quick_type*)log_get_lock()); + } checklock_stop(); printf("%d checks ok.\n", testcount); #ifdef HAVE_SSL @@ -597,14 +915,21 @@ main(int argc, char* argv[]) sldns_key_EVP_unload_gost(); # endif # ifdef HAVE_OPENSSL_CONFIG +# ifdef HAVE_EVP_CLEANUP EVP_cleanup(); +# endif ENGINE_cleanup(); CONF_modules_free(); # endif +# ifdef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA CRYPTO_cleanup_all_ex_data(); - ERR_remove_state(0); +# endif +# ifdef HAVE_ERR_FREE_STRINGS ERR_free_strings(); +# endif +# ifdef HAVE_RAND_CLEANUP RAND_cleanup(); +# endif #elif defined(HAVE_NSS) if(NSS_Shutdown() != SECSuccess) fatal_exit("could not shutdown NSS"); diff --git a/external/unbound/testcode/unitmain.h b/external/unbound/testcode/unitmain.h index c27bd14..e5c6109 100644 --- a/external/unbound/testcode/unitmain.h +++ b/external/unbound/testcode/unitmain.h @@ -72,7 +72,13 @@ void verify_test(void); void neg_test(void); /** unit test for regional allocator functions */ void regional_test(void); +#ifdef CLIENT_SUBNET +/** Unit test for ECS functions */ +void ecs_test(void); +#endif /* CLIENT_SUBNET */ /** unit test for ldns functions */ void ldns_test(void); +/** unit test for auth zone functions */ +void authzone_test(void); #endif /* TESTCODE_UNITMAIN_H */ diff --git a/external/unbound/testcode/unitneg.c b/external/unbound/testcode/unitneg.c index 36fa6b9..4cd9b30 100644 --- a/external/unbound/testcode/unitneg.c +++ b/external/unbound/testcode/unitneg.c @@ -94,7 +94,7 @@ static void print_neg_cache(struct val_neg_cache* neg) /** get static pointer to random zone name */ static char* get_random_zone(void) { - static char zname[256]; + static char zname[36]; int labels = random() % 3; int i; char* p = zname; @@ -102,10 +102,10 @@ static char* get_random_zone(void) for(i=0; ilock); @@ -324,7 +324,7 @@ static size_t sumtrees_inuse(struct val_neg_cache* neg) RBTREE_FOR(z, struct val_neg_zone*, &neg->tree) { /* get count of highest parent for num in use */ d = (struct val_neg_data*)rbtree_first(&z->tree); - if(d && (rbnode_t*)d!=RBTREE_NULL) + if(d && (rbnode_type*)d!=RBTREE_NULL) res += d->count; } return res; diff --git a/external/unbound/testcode/unitslabhash.c b/external/unbound/testcode/unitslabhash.c index 7834688..565d361 100644 --- a/external/unbound/testcode/unitslabhash.c +++ b/external/unbound/testcode/unitslabhash.c @@ -44,24 +44,24 @@ #include "util/storage/slabhash.h" /** use this type for the slabhash test key */ -typedef struct slabhash_testkey testkey_t; +typedef struct slabhash_testkey testkey_type; /** use this type for the slabhash test data */ -typedef struct slabhash_testdata testdata_t; +typedef struct slabhash_testdata testdata_type; /** delete key */ static void delkey(struct slabhash_testkey* k) { lock_rw_destroy(&k->entry.lock); free(k);} /** hash func, very bad to improve collisions, both high and low bits */ -static hashvalue_t myhash(int id) { - hashvalue_t h = (hashvalue_t)id & 0x0f; +static hashvalue_type myhash(int id) { + hashvalue_type h = (hashvalue_type)id & 0x0f; h |= (h << 28); return h; } /** allocate new key, fill in hash */ -static testkey_t* newkey(int id) { - testkey_t* k = (testkey_t*)calloc(1, sizeof(testkey_t)); +static testkey_type* newkey(int id) { + testkey_type* k = (testkey_type*)calloc(1, sizeof(testkey_type)); if(!k) fatal_exit("out of memory"); k->id = id; k->entry.hash = myhash(id); @@ -70,9 +70,9 @@ static testkey_t* newkey(int id) { return k; } /** new data el */ -static testdata_t* newdata(int val) { - testdata_t* d = (testdata_t*)calloc(1, - sizeof(testdata_t)); +static testdata_type* newdata(int val) { + testdata_type* d = (testdata_type*)calloc(1, + sizeof(testdata_type)); if(!d) fatal_exit("out of memory"); d->data = val; return d; @@ -82,10 +82,10 @@ static testdata_t* newdata(int val) { static void test_short_table(struct slabhash* table) { - testkey_t* k = newkey(12); - testkey_t* k2 = newkey(14); - testdata_t* d = newdata(128); - testdata_t* d2 = newdata(129); + testkey_type* k = newkey(12); + testkey_type* k2 = newkey(14); + testdata_type* d = newdata(128); + testdata_type* d2 = newdata(129); k->entry.data = d; k2->entry.data = d2; @@ -106,11 +106,11 @@ test_short_table(struct slabhash* table) /** test adding a random element */ static void -testadd(struct slabhash* table, testdata_t* ref[]) +testadd(struct slabhash* table, testdata_type* ref[]) { int numtoadd = random() % HASHTESTMAX; - testdata_t* data = newdata(numtoadd); - testkey_t* key = newkey(numtoadd); + testdata_type* data = newdata(numtoadd); + testkey_type* key = newkey(numtoadd); key->entry.data = data; slabhash_insert(table, myhash(numtoadd), &key->entry, data, NULL); ref[numtoadd] = data; @@ -118,10 +118,10 @@ testadd(struct slabhash* table, testdata_t* ref[]) /** test adding a random element */ static void -testremove(struct slabhash* table, testdata_t* ref[]) +testremove(struct slabhash* table, testdata_type* ref[]) { int num = random() % HASHTESTMAX; - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); slabhash_remove(table, myhash(num), key); ref[num] = NULL; delkey(key); @@ -129,12 +129,12 @@ testremove(struct slabhash* table, testdata_t* ref[]) /** test adding a random element */ static void -testlookup(struct slabhash* table, testdata_t* ref[]) +testlookup(struct slabhash* table, testdata_type* ref[]) { int num = random() % HASHTESTMAX; - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); struct lruhash_entry* en = slabhash_lookup(table, myhash(num), key, 0); - testdata_t* data = en? (testdata_t*)en->data : NULL; + testdata_type* data = en? (testdata_type*)en->data : NULL; if(en) { unit_assert(en->key); unit_assert(en->data); @@ -193,11 +193,11 @@ check_table(struct slabhash* table) /** test adding a random element (unlimited range) */ static void -testadd_unlim(struct slabhash* table, testdata_t** ref) +testadd_unlim(struct slabhash* table, testdata_type** ref) { int numtoadd = random() % (HASHTESTMAX * 10); - testdata_t* data = newdata(numtoadd); - testkey_t* key = newkey(numtoadd); + testdata_type* data = newdata(numtoadd); + testkey_type* key = newkey(numtoadd); key->entry.data = data; slabhash_insert(table, myhash(numtoadd), &key->entry, data, NULL); if(ref) @@ -206,10 +206,10 @@ testadd_unlim(struct slabhash* table, testdata_t** ref) /** test adding a random element (unlimited range) */ static void -testremove_unlim(struct slabhash* table, testdata_t** ref) +testremove_unlim(struct slabhash* table, testdata_type** ref) { int num = random() % (HASHTESTMAX*10); - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); slabhash_remove(table, myhash(num), key); if(ref) ref[num] = NULL; @@ -218,12 +218,12 @@ testremove_unlim(struct slabhash* table, testdata_t** ref) /** test adding a random element (unlimited range) */ static void -testlookup_unlim(struct slabhash* table, testdata_t** ref) +testlookup_unlim(struct slabhash* table, testdata_type** ref) { int num = random() % (HASHTESTMAX*10); - testkey_t* key = newkey(num); + testkey_type* key = newkey(num); struct lruhash_entry* en = slabhash_lookup(table, myhash(num), key, 0); - testdata_t* data = en? (testdata_t*)en->data : NULL; + testdata_type* data = en? (testdata_type*)en->data : NULL; if(en) { unit_assert(en->key); unit_assert(en->data); @@ -243,7 +243,7 @@ static void test_long_table(struct slabhash* table) { /* assuming it all fits in the hashtable, this check will work */ - testdata_t* ref[HASHTESTMAX * 100]; + testdata_type* ref[HASHTESTMAX * 100]; size_t i; memset(ref, 0, sizeof(ref)); /* test assumption */ @@ -301,7 +301,7 @@ struct slab_test_thr { /** thread num, first entry. */ int num; /** id */ - ub_thread_t id; + ub_thread_type id; /** hash table */ struct slabhash* table; }; diff --git a/external/unbound/testcode/unitverify.c b/external/unbound/testcode/unitverify.c index 9cb0eb9..95676e1 100644 --- a/external/unbound/testcode/unitverify.c +++ b/external/unbound/testcode/unitverify.c @@ -186,7 +186,9 @@ verifytest_rrset(struct module_env* env, struct val_env* ve, ntohs(rrset->rk.rrset_class)); } setup_sigalg(dnskey, sigalg); /* check all algorithms in the dnskey */ - sec = dnskeyset_verify_rrset(env, ve, rrset, dnskey, sigalg, &reason); + /* ok to give null as qstate here, won't be used for answer section. */ + sec = dnskeyset_verify_rrset(env, ve, rrset, dnskey, sigalg, &reason, + LDNS_SECTION_ANSWER, NULL); if(vsig) { printf("verify outcome is: %s %s\n", sec_status_to_string(sec), reason?reason:""); @@ -299,6 +301,7 @@ verifytest_file(const char* fname, const char* at_date) struct module_env env; struct val_env ve; time_t now = time(NULL); + unit_show_func("signature verify", fname); if(!list) fatal_exit("could not read %s: %s", fname, strerror(errno)); @@ -341,6 +344,7 @@ dstest_file(const char* fname) struct entry* e; struct entry* list = read_datafile(fname, 1); struct module_env env; + unit_show_func("DS verify", fname); if(!list) fatal_exit("could not read %s: %s", fname, strerror(errno)); @@ -412,7 +416,7 @@ nsectest(void) /** Test hash algo - NSEC3 hash it and compare result */ static void -nsec3_hash_test_entry(struct entry* e, rbtree_t* ct, +nsec3_hash_test_entry(struct entry* e, rbtree_type* ct, struct alloc_cache* alloc, struct regional* region, sldns_buffer* buf) { @@ -468,12 +472,13 @@ nsec3_hash_test(const char* fname) * * The test does not perform canonicalization during the compare. */ - rbtree_t ct; + rbtree_type ct; struct regional* region = regional_create(); struct alloc_cache alloc; sldns_buffer* buf = sldns_buffer_new(65535); struct entry* e; struct entry* list = read_datafile(fname, 1); + unit_show_func("NSEC3 hash", fname); if(!list) fatal_exit("could not read %s: %s", fname, strerror(errno)); @@ -496,24 +501,35 @@ void verify_test(void) { unit_show_feature("signature verify"); +#ifdef USE_SHA1 verifytest_file("testdata/test_signatures.1", "20070818005004"); +#endif +#if defined(USE_DSA) && defined(USE_SHA1) verifytest_file("testdata/test_signatures.2", "20080414005004"); verifytest_file("testdata/test_signatures.3", "20080416005004"); verifytest_file("testdata/test_signatures.4", "20080416005004"); verifytest_file("testdata/test_signatures.5", "20080416005004"); verifytest_file("testdata/test_signatures.6", "20080416005004"); verifytest_file("testdata/test_signatures.7", "20070829144150"); +#endif /* USE_DSA */ +#ifdef USE_SHA1 verifytest_file("testdata/test_signatures.8", "20070829144150"); +#endif #if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) verifytest_file("testdata/test_sigs.rsasha256", "20070829144150"); +# ifdef USE_SHA1 verifytest_file("testdata/test_sigs.sha1_and_256", "20070829144150"); +# endif verifytest_file("testdata/test_sigs.rsasha256_draft", "20090101000000"); #endif #if (defined(HAVE_EVP_SHA512) || defined(HAVE_NSS) || defined(HAVE_NETTLE)) && defined(USE_SHA2) verifytest_file("testdata/test_sigs.rsasha512_draft", "20070829144150"); + verifytest_file("testdata/test_signatures.9", "20171215000000"); #endif +#ifdef USE_SHA1 verifytest_file("testdata/test_sigs.hinfo", "20090107100022"); verifytest_file("testdata/test_sigs.revoked", "20080414005004"); +#endif #ifdef USE_GOST if(sldns_key_EVP_load_gost_id()) verifytest_file("testdata/test_sigs.gost", "20090807060504"); @@ -527,7 +543,19 @@ verify_test(void) } dstest_file("testdata/test_ds.sha384"); #endif +#ifdef USE_ED25519 + if(dnskey_algo_id_is_supported(LDNS_ED25519)) { + verifytest_file("testdata/test_sigs.ed25519", "20170530140439"); + } +#endif +#ifdef USE_ED448 + if(dnskey_algo_id_is_supported(LDNS_ED448)) { + verifytest_file("testdata/test_sigs.ed448", "20180408143630"); + } +#endif +#ifdef USE_SHA1 dstest_file("testdata/test_ds.sha1"); +#endif nsectest(); nsec3_hash_test("testdata/test_nsec3_hash.1"); } diff --git a/external/unbound/testdata/00-lint.tdir/00-lint.dsc b/external/unbound/testdata/00-lint.tdir/00-lint.dsc new file mode 100644 index 0000000..4778f7a --- /dev/null +++ b/external/unbound/testdata/00-lint.tdir/00-lint.dsc @@ -0,0 +1,16 @@ +BaseName: 00-lint +Version: 1.0 +Description: Put source into lint. +CreationDate: Wed Jan 3 14:12:02 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 00-lint.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/00-lint.tdir/00-lint.test b/external/unbound/testdata/00-lint.tdir/00-lint.test new file mode 100644 index 0000000..e40dce7 --- /dev/null +++ b/external/unbound/testdata/00-lint.tdir/00-lint.test @@ -0,0 +1,11 @@ +# #-- 00-lint.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +. ../common.sh +PRE="../.." +get_make + +(cd $PRE ; $MAKE lint) + diff --git a/external/unbound/testdata/01-doc.tdir/01-doc.dsc b/external/unbound/testdata/01-doc.tdir/01-doc.dsc new file mode 100644 index 0000000..a9282c7 --- /dev/null +++ b/external/unbound/testdata/01-doc.tdir/01-doc.dsc @@ -0,0 +1,16 @@ +BaseName: 01-doc +Version: 1.0 +Description: Check documentation +CreationDate: Wed Jan 3 15:15:01 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 01-doc.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/01-doc.tdir/01-doc.test b/external/unbound/testdata/01-doc.tdir/01-doc.test new file mode 100644 index 0000000..6a78a9c --- /dev/null +++ b/external/unbound/testdata/01-doc.tdir/01-doc.test @@ -0,0 +1,47 @@ +# #-- 01-doc.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +. ../common.sh + +set_doxygen_path + +PRE="../.." +get_make +(cd $PRE ; $MAKE doc) > mylog 2>&1 + +bad=0 +if grep -e "Warning" -e "warning" -e "Error" -e "error" mylog >/dev/null 2>&1; +then + cat mylog + bad=1 +else + # "doxygen ok" + cat mylog +fi + +(cd $PRE; find . -name "*.h" -print) >hlist +(cd $PRE; find . -name "*.c" -print) >>hlist +# filter out config.h +fgrep -v -e "config.h" hlist > ilist; mv ilist hlist +fgrep -v -e "util/configparser" hlist > ilist; mv ilist hlist +fgrep -v -e "util/configlexer" hlist > ilist; mv ilist hlist +fgrep -v -e "util/configyyrename" hlist > ilist; mv ilist hlist +fgrep -v -e "util/locks.h" hlist > ilist; mv ilist hlist +fgrep -v -e "util/storage/lookup3.c" hlist > ilist; mv ilist hlist +fgrep -v -e "ldns-src/" hlist > ilist; mv ilist hlist +fgrep -v -e "libunbound/python/libunbound_wrap.c" hlist > ilist; mv ilist hlist +fgrep -v -e "pythonmod/interface.h" hlist > ilist; mv ilist hlist +fgrep -v -e "dnstap" hlist > ilist; mv ilist hlist +# filter out compat +fgrep -v -e "compat/" hlist > ilist; mv ilist hlist +for h in `cat hlist`; do + if fgrep "`basename $h`" $PRE/doc/html/files.html >/dev/null; then + : # ok + else + echo "Warning: $h has no documentation." + bad=1 + fi +done +exit $bad diff --git a/external/unbound/testdata/02-unittest.tdir/02-unittest.dsc b/external/unbound/testdata/02-unittest.tdir/02-unittest.dsc new file mode 100644 index 0000000..b30695a --- /dev/null +++ b/external/unbound/testdata/02-unittest.tdir/02-unittest.dsc @@ -0,0 +1,16 @@ +BaseName: 02-unittest +Version: 1.0 +Description: Unit tests. +CreationDate: Thu Jan 4 16:32:42 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 02-unittest.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/02-unittest.tdir/02-unittest.test b/external/unbound/testdata/02-unittest.tdir/02-unittest.test new file mode 100644 index 0000000..7b1105b --- /dev/null +++ b/external/unbound/testdata/02-unittest.tdir/02-unittest.test @@ -0,0 +1,63 @@ +# #-- 02-unittest.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." +get_make +(cd $PRE ; $MAKE unittest; $MAKE lock-verify) + +if test -f $PRE/unbound_do_valgrind_in_test; then + do_valgrind=yes +else + do_valgrind=no +fi +VALGRIND_FLAGS="--leak-check=full --show-leak-kinds=all" + +if test $do_valgrind = "yes"; then + echo "valgrind yes" + echo + tmpout=/tmp/tmpout.$$ + if (cd $PRE; valgrind $VALGRIND_FLAGS ./unittest >$tmpout 2>&1); then + echo "unit test worked." + else + echo "unit test failed." + exit 1 + fi + if grep "All heap blocks were freed -- no leaks are possible" $tmpout; then + : # clean + else + cat $tmpout + echo "Memory leaked in unittest" + grep "in use at exit" $tmpout + exit 1 + fi + if grep "ERROR SUMMARY: 0 errors from 0 contexts" $tmpout; then + : # clean + else + cat $tmpout + echo "Errors in unittest" + grep "ERROR SUMMARY" $tmpout + exit 1 + fi + rm -f $tmpout +else + # without valgrind + if (cd $PRE; ./unittest); then + echo "unit test worked." + else + echo "unit test failed." + exit 1 + fi +fi +if test -f $PRE/ublocktrace.0; then + if (cd $PRE; ./lock-verify ublocktrace.*); then + echo "lock-verify test worked." + else + echo "lock-verify test failed." + exit 1 + fi +fi +exit 0 diff --git a/external/unbound/testdata/03-testbound.tdir/03-testbound.dsc b/external/unbound/testdata/03-testbound.tdir/03-testbound.dsc new file mode 100644 index 0000000..40cd9f9 --- /dev/null +++ b/external/unbound/testdata/03-testbound.tdir/03-testbound.dsc @@ -0,0 +1,16 @@ +BaseName: 03-testbound +Version: 1.0 +Description: Run testbound event replay scenarios. +CreationDate: Tue Feb 13 16:36:18 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 03-testbound.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/03-testbound.tdir/03-testbound.test b/external/unbound/testdata/03-testbound.tdir/03-testbound.test new file mode 100644 index 0000000..00d3622 --- /dev/null +++ b/external/unbound/testdata/03-testbound.tdir/03-testbound.test @@ -0,0 +1,149 @@ +# #-- 03-testbound.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." +get_make +(cd $PRE ; $MAKE testbound) +exitval=0 +# quiet="" to make verbose + +if test -f $PRE/unbound_do_valgrind_in_test; then + do_valgrind=yes +else + do_valgrind=no +fi +VALGRIND_FLAGS="--leak-check=full --show-leak-kinds=all" +# valgrind mode for debug +#if grep "staticexe=-static" $PRE/Makefile >/dev/null 2>&1; then +# if test -x "`which valgrind`"; then +# do_valgrind=yes +# fi +#fi + +# self-test (unit test of testbound) +if test $do_valgrind = "yes"; then + echo "valgrind yes" + echo + if (valgrind $VALGRIND_FLAGS $PRE/testbound -s >tmpout 2>&1;); then + echo "selftest OK " + else + echo "selftest FAILED" + exit 1 + fi + if grep "All heap blocks were freed -- no leaks are possible" tmpout; then + : # clean + else + cat tmpout + echo "Memory leaked in selftest" + grep "in use at exit" tmpout + exit 1 + fi + if grep "ERROR SUMMARY: 0 errors from 0 contexts" tmpout; then + : # clean + else + cat tmpout + echo "Errors in selftest" + grep "ERROR SUMMARY" tmpout + exit 1 + fi +else + if ($PRE/testbound -s >/dev/null 2>&1;); then + echo "selftest OK " + else + echo "selftest FAILED" + exit 1 + fi +fi + + +# the .crpl are not always supported and need checking for SHA256 and GOST +# support. +# the .rpl should work on any system (portable). +for input in $PRE/testdata/*.rpl $PRE/testdata/*.crpl; do + header=`grep SCENARIO_BEGIN $input | head -1 | sed -e 's/SCENARIO_BEGIN //'` + cleaninput=`echo $input | sed -e "s?$PRE/testdata/??"` + + # detect if SHA256 is needed + if echo $cleaninput | grep sha2 >/dev/null 2>&1; then + if $PRE/testbound -2 >/dev/null 2>&1; then + : # the SHA256 is supported + else + continue + fi + fi + + # detect if GOST is needed + if echo $cleaninput | grep gost >/dev/null 2>&1; then + if $PRE/testbound -g >/dev/null 2>&1; then + : # GOST is supported + else + continue + fi + fi + + # detect if CLIENT_SUBNET is needed + if echo $cleaninput | grep subnet >/dev/null 2>&1; then + if $PRE/testbound -c >/dev/null 2>&1; then + : # CLIENT_SUBNET is supported + else + continue + fi + fi + + # detect if IPSECMOD is needed + if echo $cleaninput | grep ipsecmod >/dev/null 2>&1; then + if $PRE/testbound -i >/dev/null 2>&1; then + : # IPSECMOD is supported + else + continue + fi + fi + + if test $do_valgrind = "yes"; then + echo + if (valgrind $VALGRIND_FLAGS $PRE/testbound -p $input >tmpout 2>&1;); then + echo " OK $cleaninput: $header" + else + echo "FAILED $cleaninput: $header" + exitval=1 + fi + if grep "All heap blocks were freed -- no leaks are possible" tmpout; then + : # clean + else + grep "^==" tmpout + echo "Memory leaked in $cleaninput" + grep "in use at exit" tmpout + exitval=1 + fi + if grep "ERROR SUMMARY: 0 errors from 0 contexts" tmpout; then + : # clean + else + grep "^==" tmpout + echo "Errors in $cleaninput" + grep "ERROR SUMMARY" tmpout + exitval=1 + fi + else + # do valgrind=no + if ($PRE/testbound -p $input >/dev/null 2>&1;); then + echo " OK $cleaninput: $header" + else + echo "FAILED $cleaninput: $header" + exitval=1 + fi + fi + if test -f ublocktrace.0; then + if $PRE/lock-verify ublocktrace.*; then + #echo "lock-verify test $input worked." + i=i + else + echo "lock-verify test $input failed." + exitval=1 + fi + fi +done +exit $exitval diff --git a/external/unbound/testdata/04-checkconf.tdir/04-checkconf.dsc b/external/unbound/testdata/04-checkconf.tdir/04-checkconf.dsc new file mode 100644 index 0000000..6d307fb --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/04-checkconf.dsc @@ -0,0 +1,16 @@ +BaseName: 04-checkconf +Version: 1.0 +Description: Test configuration checker. +CreationDate: Fri Sep 28 15:46:27 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 04-checkconf.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/04-checkconf.tdir/04-checkconf.test b/external/unbound/testdata/04-checkconf.tdir/04-checkconf.test new file mode 100644 index 0000000..a2396fe --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/04-checkconf.test @@ -0,0 +1,72 @@ +# #-- 04-checkconf.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# test that failed exit code is used +$PRE/unbound-checkconf bla bla bla>/dev/null +if test $? != 1; then + echo "exit code for usage wrong" + exit 1 +fi +$PRE/unbound-checkconf -h >/dev/null +if test $? != 1; then + echo "exit code for usage wrong" + exit 1 +fi +$PRE/unbound-checkconf notexist_file +if test $? != 1; then + echo "exit code for nofile wrong" + exit 1 +fi + +# detect windows +if grep "define UB_ON_WINDOWS 1" ../../config.h; then + onwin=1 +else + onwin=0 +fi + +# test check of config files. +for f in bad.*; do + echo + echo $PRE/unbound-checkconf $f + if test $f = "bad.user" -a $onwin -eq 1; then + echo "skipped on windows" + continue + fi + + $PRE/unbound-checkconf $f + if test $? != 1; then + echo "exit code case $f wrong" + exit 1 + fi +done +for f in good.*; do + echo + echo $PRE/unbound-checkconf $f + $PRE/unbound-checkconf $f + if test $? != 0; then + echo "exit code case $f wrong" + exit 1 + fi +done + +echo $PRE/unbound-checkconf warn.algo +$PRE/unbound-checkconf warn.algo > outfile 2>&1 +if test $? != 0; then + cat outfile + echo "wrong exit code, warning should not fail with error" + exit 1 +fi +cat outfile +if grep "unsupported algo" outfile; then + echo "OK" +else + echo "Failed, should print warning" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/04-checkconf.tdir/bad.badfwd b/external/unbound/testdata/04-checkconf.tdir/bad.badfwd new file mode 100644 index 0000000..27d58c5 --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/bad.badfwd @@ -0,0 +1,8 @@ +server: + # to make sure the check doesn't fail on username or chrootdir. + username: "" + chroot: "" + +forward-zone: + name: "example.com" + forward-addr: 123.123.AAAA.123 diff --git a/external/unbound/testdata/04-checkconf.tdir/bad.badif b/external/unbound/testdata/04-checkconf.tdir/bad.badif new file mode 100644 index 0000000..ea261fc --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/bad.badif @@ -0,0 +1,17 @@ +# bad host and interface lines. +server: + username: "" + interface: 127.0.0.1 + interface: 127.0.0.1 + interface: 127.0.0.1 + outgoing-interface: ::1 + outgoing-interface: ::1 + outgoing-interface: ::1 + +forward-zone: + name: root. + forward-host: 127.0.0.1 + +stub-zone: + name: com. + stub-host: ::3 diff --git a/external/unbound/testdata/04-checkconf.tdir/bad.badip b/external/unbound/testdata/04-checkconf.tdir/bad.badip new file mode 100644 index 0000000..74b2b7e --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/bad.badip @@ -0,0 +1,2 @@ +server: + interface: 123.AAAA.123.123 diff --git a/external/unbound/testdata/04-checkconf.tdir/bad.bind b/external/unbound/testdata/04-checkconf.tdir/bad.bind new file mode 100644 index 0000000..863d566 --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/bad.bind @@ -0,0 +1,35 @@ +# test daemon +options { + directory "/home/wouter/bla"; + version "test BIND 24"; + pid-file "/home/wouter/named_24.pid"; + dnssec-enable yes; + listen-on-v6 { any; }; +}; + +// logging clause +logging { + channel mainlog { + file "named_24.log" size 10m; + severity info; + }; + category default { + mainlog; + }; +}; + +zone "." IN { + type hint; + file "root.servers"; +}; + +zone "localhost" IN { + type master; + file "localhost.zone"; + allow-update { none; }; +}; +zone "0.0.127.in-addr.arpa" IN { + type master; + file "localhost.rev"; + allow-update { none; }; +}; diff --git a/external/unbound/testdata/04-checkconf.tdir/bad.user b/external/unbound/testdata/04-checkconf.tdir/bad.user new file mode 100644 index 0000000..40631ab --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/bad.user @@ -0,0 +1,2 @@ +server: + username: blabla_noexist_user diff --git a/external/unbound/testdata/04-checkconf.tdir/good.all b/external/unbound/testdata/04-checkconf.tdir/good.all new file mode 100644 index 0000000..33ebaf0 --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/good.all @@ -0,0 +1,246 @@ +# To test, all options are used. +# +# Example configuration file. +# +# See unbound.conf(5) man page. +# +# this is a comment. + +#Use this to include other text into the file. +#include: "otherfile.conf" + +# The server clause sets the main parameters. +server: + # whitespace is not necessary, but looks cleaner. + + # verbosity number, 0 is least verbose. 1 is default. + verbosity: 2 + + # number of threads to create. 1 disables threading. + num-threads: 1 + + # specify the interfaces to answer queries from by ip-address. + # If you give none the default (all) interface is used. + # specify every interface on a new 'interface:' labelled line. + interface: 192.0.2.153 + interface: 192.0.2.154 + interface: 2001:DB8::5 + + # port to answer queries from + port: 53 + + # number of port to allocate per thread, determines the size of the + # port range. A larger port range gives more resistance to certain + # spoof attacks, as it gets harder to guess which port is used. + # But also takes more system resources (for open sockets). + outgoing-range: 16 + + outgoing-port-permit: 1000-1020 + outgoing-port-avoid: 2000-2048 + outgoing-port-avoid: 3000 + + # number of outgoing simultaneous tcp buffers to hold per thread. + outgoing-num-tcp: 10 + + # number of incoming simultaneous tcp buffers to hold per thread. + incoming-num-tcp: 10 + + # buffer size for handling DNS data. No messages larger than this + # size can be sent or received, by UDP or TCP. In bytes. + msg-buffer-size: 65552 + + # the amount of memory to use for the message cache. + # in bytes. default is 4 Mb + msg-cache-size: 4194304 + + # the number of slabs to use for the message cache. + # the number of slabs must be a power of 2. + # more slabs reduce lock contention, but fragment memory usage. + msg-cache-slabs: 4 + + # the number of queries that a thread gets to service. + num-queries-per-thread: 1024 + + # the amount of memory to use for the RRset cache. + # in bytes. default is 4 Mb + rrset-cache-size: 4194304 + + # the number of slabs to use for the RRset cache. + # the number of slabs must be a power of 2. + # more slabs reduce lock contention, but fragment memory usage. + rrset-cache-slabs: 4 + + # the time to live (TTL) value for cached roundtrip times and + # EDNS version information for hosts. In seconds. + infra-host-ttl: 900 + + # the time to live (TTL) value for cached lame delegations. In sec. + infra-lame-ttl: 900 + + # the number of slabs to use for the Infrastructure cache. + # the number of slabs must be a power of 2. + # more slabs reduce lock contention, but fragment memory usage. + infra-cache-slabs: 4 + + # the maximum number of hosts that are cached (roundtrip times, EDNS). + infra-cache-numhosts: 10000 + + # the maximum size of the lame zones cached per host. in bytes. + infra-cache-lame-size: 10240 + + # Enable IPv4, "yes" or "no". + do-ip4: yes + + # Enable IPv6, "yes" or "no". + do-ip6: yes + + # Enable UDP, "yes" or "no". + do-udp: yes + + # Enable TCP, "yes" or "no". + do-tcp: yes + + # if given, a chroot(2) is done to the given directory. + # i.e. you can chroot to the working directory, for example, + # for extra security, but make sure all files are in that directory. + chroot: "" + + # if given, user privileges are dropped (after binding port), + # and the given username is assumed. Default is nothing "". + username: "nobody" + + # the working directory. + directory: "." + + # the log file, "" means log to stderr. + # Use of this option sets use-syslog to "no". + logfile: "" + + # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to + # log to, with identity "unbound". If yes, it overrides the logfile. + use-syslog: no + + # the pid file. + pidfile: "unbound.pid" + + # enable to not answer id.server and hostname.bind queries. + hide-identity: no + + # enable to not answer version.server and version.bind queries. + hide-version: no + + # the identity to report. Leave "" or default to return hostname. + identity: "" + + # the version to report. Leave "" or default to return package version. + version: "" + + # the target fetch policy. + # series of integers describing the policy per dependency depth. + # The number of values in the list determines the maximum dependency + # depth the recursor will pursue before giving up. Each integer means: + # -1 : fetch all targets opportunistically, + # 0: fetch on demand, + # positive value: fetch that many targets opportunistically. + # Enclose the list of numbers between quotes (""). + target-fetch-policy: "3 2 1 0 0" + + # Harden against very small EDNS buffer sizes. + harden-short-bufsize: yes + + # Harden against unseemly large queries. + harden-large-queries: yes + + # Harden against out of zone rrsets, to avoid spoofing attempts. + harden-glue: yes + + # Do not query the following addresses. No DNS queries are sent there. + # List one address per entry. To block other ports than the default + # DNS port, use "1.2.3.4@123" to block port 123 for 1.2.3.4. + do-not-query-address: 127.0.0.1 + do-not-query-address: 127.0.0.2 + do-not-query-address: 127.255.255.255 + do-not-query-address: ::1 + + # module configuration of the server. A string with identifiers + # separated by spaces. "iterator" or "validator iterator" + module-config: "validator iterator" + + # File with trusted keys for validation. Specify more than one file + # with several entries, one file per entry. + # Zone file format, with DS and DNSKEY entries. + trust-anchor-file: "" + + # Trusted key for validation. DS or DNSKEY. specify the RR on a + # single line, surrounded by "". TTL is ignored. class is IN default. + # (These examples are from August 2007 and may not be valid anymore). + trust-anchor: "nlnetlabs.nl. DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ==" + trust-anchor: "jelte.nlnetlabs.nl. DS 42860 5 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A" + + # File with trusted keys for validation. Specify more than one file + # with several entries, one file per entry. Like trust-anchor-file + # but has a different file format. Format is BIND-9 style format, + # the trusted-keys { name flag proto algo "key"; }; clauses are read. + trusted-keys-file: "" + + # Override the date for validation with a specific fixed date. + # Do not set this unless you are debugging signature inception + # and expiration. "" or "0" turns the feature off. + val-override-date: "" + + # The time to live for bogus data, rrsets and messages. This avoids + # some of the revalidation, until the time interval expires. in secs. + val-bogus-ttl: 900 + + # Should additional section of secure message also be kept clean of + # unsecure data. Useful to shield the users of this validator from + # potential bogus data in the additional section. All unsigned data + # in the additional section is removed from secure messages. + val-clean-additional: yes + + # Turn permissive mode on to permit bogus messages. Thus, messages + # for which security checks failed will be returned to clients, + # instead of SERVFAIL. It still performs the security checks, which + # result in interesting log files and possibly the AD bit in + # replies if the message is found secure. The default is off. + val-permissive-mode: no + + # It is possible to configure NSEC3 maximum iteration counts per + # keysize. Keep this table very short, as linear search is done. + # A message with an NSEC3 with larger count is marked insecure. + # List in ascending order the keysize and count values. + val-nsec3-keysize-iterations: "1024 150 2048 500 4096 2500" + + # the amount of memory to use for the key cache. + # in bytes. default is 4 Mb + key-cache-size: 4194304 + + # the number of slabs to use for the key cache. + # the number of slabs must be a power of 2. + # more slabs reduce lock contention, but fragment memory usage. + key-cache-slabs: 4 + + +# Stub zones. +# Create entries like below, to make all queries for 'example.com' and +# 'example.org' go to the given list of nameservers. list zero or more +# nameservers by hostname or by ipaddress. +stub-zone: + name: "example.com" + stub-addr: 192.0.2.68 +stub-zone: + name: "example.org" + stub-host: ns.example.com. + +# Forward zones +# Create entries like below, to make all queries for 'example.com' and +# 'example.org' go to the given list of servers. These servers have to handle +# recursion to other nameservers. List zero or more nameservers by hostname +# or by ipaddress. Use an entry with name "." to forward all queries. +forward-zone: + name: "example.com" + forward-addr: 192.0.2.68 + forward-addr: 192.0.2.73@5355 # forward to port 5355. +forward-zone: + name: "example.org" + forward-host: fwd.example.com diff --git a/external/unbound/testdata/04-checkconf.tdir/good.ifport b/external/unbound/testdata/04-checkconf.tdir/good.ifport new file mode 100644 index 0000000..1aa59d1 --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/good.ifport @@ -0,0 +1,23 @@ +# +# bug301 : unbound-checkconf cannot parse interface '0.0.0.0@5353' + +#Use this to include other text into the file. +#include: "otherfile.conf" + +# The server clause sets the main parameters. +server: + # specify the interfaces to answer queries from by ip-address. + # If you give none the default (all) interface is used. + # specify every interface on a new 'interface:' labelled line. + interface: 192.0.2.153 + interface: 192.0.2.154 + interface: 2001:DB8::5 + interface: 0.0.0.0@5353 + + # config + chroot: "" + username: "nobody" + directory: "." + logfile: "" + use-syslog: no + pidfile: "unbound.pid" diff --git a/external/unbound/testdata/04-checkconf.tdir/good.include b/external/unbound/testdata/04-checkconf.tdir/good.include new file mode 100644 index 0000000..49e742d --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/good.include @@ -0,0 +1,6 @@ +# include some file to test include functionality. + +include: "good.all" + +server: + identity: "my identity" diff --git a/external/unbound/testdata/04-checkconf.tdir/warn.algo b/external/unbound/testdata/04-checkconf.tdir/warn.algo new file mode 100644 index 0000000..dcd1a90 --- /dev/null +++ b/external/unbound/testdata/04-checkconf.tdir/warn.algo @@ -0,0 +1,9 @@ +server: + chroot: "" + directory: "" + pidfile: "" + username: "" + logfile: "" + + trust-anchor: "jelte.nlnetlabs.nl. DS 42860 2000 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A" + diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.dsc b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.dsc new file mode 100644 index 0000000..59ada05 --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.dsc @@ -0,0 +1,16 @@ +BaseName: 05-asynclook +Version: 1.0 +Description: Test async lookup using libunbound +CreationDate: Fri Jan 25 09:50:35 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: 05-asynclook.pre +Post: 05-asynclook.post +Test: 05-asynclook.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.hosts b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.hosts new file mode 100644 index 0000000..fa5e548 --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.hosts @@ -0,0 +1,12 @@ +# Host Database +# +# This file should contain the addresses and aliases for local hosts that +# share this file. Replace 'my.domain' below with the domainname of your +# machine. +# +::1 localhost localhost.my.domain +127.0.0.1 localhost localhost.my.domain +# Imaginary network. +10.0.0.2 myname.my.domain myname +10.0.0.3 myfriend.my.domain myfriend +10.20.30.40 virtual.virtual.virtual.local diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.post b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.post new file mode 100644 index 0000000..a4620f6 --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.post @@ -0,0 +1,10 @@ +# #-- 05-asynclook.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here + +. ../common.sh +kill_pid $FWD_PID diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.pre b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.pre new file mode 100644 index 0000000..708f7f6 --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.pre @@ -0,0 +1,20 @@ +# #-- 05-asynclook.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +FWD_PORT=$(($RND_PORT + 1)) +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT 05-asynclook.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +cat .tpkg.var.test + +wait_ldns_testns_up fwd.log diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.test b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.test new file mode 100644 index 0000000..28a054d --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.test @@ -0,0 +1,198 @@ +# #-- 05-asynclook.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# test if fwder is up +echo "> dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile" +dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile +if grep "10.20.30.40" outfile; then + echo "fwder is up" +else + cat fwd.log + echo "fwder not up" + exit 1 +fi +rm outfile + +# create asynclook +get_make +echo "> (cd $PRE ; $MAKE asynclook)" +(cd $PRE ; $MAKE asynclook) +if test ! -x $PRE/asynclook; then + echo "cannot build asynclook test program" + exit 1 +fi +(cd $PRE ; $MAKE lock-verify) + +# check the locks. +function locktest() { + if test -x $PRE/lock-verify -a -f ublocktrace.0; then + $PRE/lock-verify ublocktrace.* + if test $? -ne 0; then + echo "lock-verify error" + exit 1 + fi + fi +} + +# detect if there is forking on this system. +HAVE_FORK=yes +if grep "undef HAVE_FORK" $PRE/config.h >/dev/null 2>&1; then + HAVE_FORK=no +fi + +if test $HAVE_FORK = yes; then +# test hosts reading (directed at local auth info) +echo '> $PRE/asynclook -H 05-asynclook.hosts virtual.virtual.virtual.local 2>&1 | tee outfile' +$PRE/asynclook -H 05-asynclook.hosts virtual.virtual.virtual.local 2>&1 | tee outfile +if grep "virtual.virtual.virtual.local: 10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +# test async lookups (directed at testns) +echo '> $PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com 2>&1 | tee outfile' +$PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo '> $PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +fi #HAVE_FORK + +echo '> $PRE/asynclook -t -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +if test $HAVE_FORK = yes; then +# test cancellation +echo '> $PRE/asynclook -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile +fi #HAVE_FORK + +echo '> $PRE/asynclook -t -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +if test $HAVE_FORK = yes; then +# test blocking mode +echo '> $PRE/asynclook -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile +fi #HAVE_FORK + +echo '> $PRE/asynclook -t -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo "> cat logfiles" +cat fwd.log +exit 0 diff --git a/external/unbound/testdata/05-asynclook.tdir/05-asynclook.testns b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.testns new file mode 100644 index 0000000..6245ae1 --- /dev/null +++ b/external/unbound/testdata/05-asynclook.tdir/05-asynclook.testns @@ -0,0 +1,35 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +; for priming query +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +@ IN NS +SECTION ANSWER +@ IN NS 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/06-ianaports.tdir/06-ianaports.dsc b/external/unbound/testdata/06-ianaports.tdir/06-ianaports.dsc new file mode 100644 index 0000000..6eb91e3 --- /dev/null +++ b/external/unbound/testdata/06-ianaports.tdir/06-ianaports.dsc @@ -0,0 +1,16 @@ +BaseName: 06-ianaports +Version: 1.0 +Description: check if iana assigned ports have changed. +CreationDate: Thu Apr 10 12:42:40 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 06-ianaports.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/06-ianaports.tdir/06-ianaports.test b/external/unbound/testdata/06-ianaports.tdir/06-ianaports.test new file mode 100644 index 0000000..1c51218 --- /dev/null +++ b/external/unbound/testdata/06-ianaports.tdir/06-ianaports.test @@ -0,0 +1,27 @@ +# #-- 06-ianaports.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +mkdir util +get_make +echo "> $MAKE -f $PRE/Makefile iana_update" +$MAKE -f $PRE/Makefile iana_update +if test $? -ne 0; then + echo "cannot iana update" + exit 1 +fi + +diff -u $PRE/util/iana_ports.inc util/iana_ports.inc +if test $? -ne 0; then + echo "IANA assigned ports have updated, make iana_update and commit" + echo "cp util/iana_ports.inc $PRE/util/iana_ports.inc" + cp util/iana_ports.inc $PRE/util/iana_ports.inc + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/07-confroot.tdir/07-confroot.dsc b/external/unbound/testdata/07-confroot.tdir/07-confroot.dsc new file mode 100644 index 0000000..f1cbe6e --- /dev/null +++ b/external/unbound/testdata/07-confroot.tdir/07-confroot.dsc @@ -0,0 +1,16 @@ +BaseName: 07-confroot +Version: 1.0 +Description: test checkconf with chroot dir. +CreationDate: Mon Apr 14 14:54:59 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: 07-confroot.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/07-confroot.tdir/07-confroot.test b/external/unbound/testdata/07-confroot.tdir/07-confroot.test new file mode 100644 index 0000000..5238435 --- /dev/null +++ b/external/unbound/testdata/07-confroot.tdir/07-confroot.test @@ -0,0 +1,287 @@ +# #-- 07-confroot.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +if uname | grep "MINGW" >/dev/null; then + # no chroot, no need to test. + # (test fails on / en \ comparisons, by the way). + echo "no chroot on windows, end test" + exit 0 +fi + +# create config file +cwd=`pwd -P` +subdir=$cwd/subdir +user=`whoami` +mkdir subdir +if test $? -ne 0; then + echo "could not create subdir" + exit 1 +fi + +cat > test.conf < subdir/root.ca +echo "a.root-servers.net. IN A 127.0.0.1" >> subdir/root.ca +echo ". CH NS b.root-servers.net." > subdir/root.cb +echo "b.root-servers.net. CH A 127.0.0.1" >> subdir/root.cb +echo ". HS NS c.root-servers.net." > subdir/root.cc +echo "c.root-servers.net. HS A 127.0.0.1" >> subdir/root.cc +echo "" > subdir/trustkeys.conf +echo "" > subdir/trustkeys2.conf +echo "" > subdir/trustkeys3.conf +echo "" > subdir/trustanchor.conf +echo "" > subdir/trustanchor2.conf +echo "" > subdir/trustanchor3.conf + +$PRE/unbound-checkconf test.conf +if test $? -ne 0; then + echo "Checkconf of config with chroot inside it failed" + exit 1 +fi +echo "OK 1" + +### NEXT TEST + +cat > test.conf < test.conf < test.conf < test.conf < test.conf < test.conf < test.conf <> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT 08-host-lib.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log diff --git a/external/unbound/testdata/08-host-lib.tdir/08-host-lib.test b/external/unbound/testdata/08-host-lib.tdir/08-host-lib.test new file mode 100644 index 0000000..8de8977 --- /dev/null +++ b/external/unbound/testdata/08-host-lib.tdir/08-host-lib.test @@ -0,0 +1,194 @@ +# #-- 08-host-lib.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +if grep FORK $PRE/config.h | grep "define" >/dev/null 2>&1; then + # nothing + : +else + echo "forking is not available; test skipped." + exit 0 +fi + +# test if fwder is up +echo "> dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile" +dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile +if grep "10.20.30.40" outfile; then + echo "fwder is up" +else + cat fwd.log + echo "fwder not up" + exit 1 +fi +rm outfile + +# create asynclook +get_make +echo "> (cd $PRE ; $MAKE asynclook)" +(cd $PRE ; $MAKE asynclook) +if test ! -x $PRE/asynclook; then + echo "cannot build asynclook test program" + exit 1 +fi +(cd $PRE ; $MAKE lock-verify) + +# check the locks. +function locktest() { + if test -x $PRE/lock-verify -a -f ublocktrace.0; then + $PRE/lock-verify ublocktrace.* + if test $? -ne 0; then + echo "lock-verify error" + exit 1 + fi + fi +} + +# test hosts reading (directed at local auth info) +echo '> $PRE/asynclook -H 08-host-lib.hosts virtual.virtual.virtual.local 2>&1 | tee outfile' +$PRE/asynclook -H 08-host-lib.hosts virtual.virtual.virtual.local 2>&1 | tee outfile +if grep "virtual.virtual.virtual.local: 10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +# test async lookups (directed at testns) +echo '> $PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com 2>&1 | tee outfile' +$PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo '> $PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo '> $PRE/asynclook -t -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +# test cancellation +echo '> $PRE/asynclook -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo '> $PRE/asynclook -t -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -c -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: cancelled" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +# test blocking mode +echo '> $PRE/asynclook -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo '> $PRE/asynclook -t -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile' +$PRE/asynclook -t -b -f "127.0.0.1@"$FWD_PORT www.example.com www2.example.com 2>&1 | tee outfile +if grep "www.example.com: 10.20.30.40" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com: 10.20.30.42" outfile; then + echo "OK" +else + cat fwd.log + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo "> cat logfiles" +cat fwd.log +exit 0 diff --git a/external/unbound/testdata/08-host-lib.tdir/08-host-lib.testns b/external/unbound/testdata/08-host-lib.tdir/08-host-lib.testns new file mode 100644 index 0000000..6245ae1 --- /dev/null +++ b/external/unbound/testdata/08-host-lib.tdir/08-host-lib.testns @@ -0,0 +1,35 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +; for priming query +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +@ IN NS +SECTION ANSWER +@ IN NS 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.conf b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.conf new file mode 100644 index 0000000..ba55e34 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.conf @@ -0,0 +1,24 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.dsc b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.dsc new file mode 100644 index 0000000..7b44367 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.dsc @@ -0,0 +1,16 @@ +BaseName: 09-unbound-control +Version: 1.0 +Description: 09 test unbound-control remote control tool +CreationDate: Mon Sep 15 11:14:08 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: 09-unbound-control.pre +Post: 09-unbound-control.post +Test: 09-unbound-control.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.post b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.post new file mode 100644 index 0000000..4269fee --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.post @@ -0,0 +1,13 @@ +# #-- 09-unbound-control.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +# it was stopped with unbound-control (if the test succeeded) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 +exit 0 diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.pre b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.pre new file mode 100644 index 0000000..479e4a9 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.pre @@ -0,0 +1,33 @@ +# #-- 09-unbound-control.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT 09-unbound-control.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < 09-unbound-control.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test new file mode 100644 index 0000000..f683bf4 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test @@ -0,0 +1,406 @@ +# #-- 09-unbound-control.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# exit value is 1 on usage +$PRE/unbound-control -h +if test $? -ne 1; then + echo "wrong exit value for usage." + exit 1 +else + echo "exit value for usage: OK" +fi + +# use lock-verify if possible + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# exit value is 1 when a bad command is given. +echo "$PRE/unbound-control -c ub.conf blablargh" +$PRE/unbound-control -c ub.conf blablargh +if test $? -ne 1; then + echo "wrong exit value on error." + echo "> cat logfiles" + cat fwd.log + cat unbound.lo + exit 1 +else + echo "correct exit value on error" +fi + +# reload the server. test if the server came up by putting a new +# local-data element in the server. +echo "server: local-data: 'afterreload. IN A 5.6.7.8'" >> ub.conf +echo "$PRE/unbound-control -c ub.conf reload" +$PRE/unbound-control -c ub.conf reload +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "> dig afterreload." +dig @127.0.0.1 -p $UNBOUND_PORT afterreload. | tee outfile +echo "> check answer" +if grep "5.6.7.8" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# must have had queries now. 1 since reload. +echo "$PRE/unbound-control -c ub.conf stats" +$PRE/unbound-control -c ub.conf stats > tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +if grep "^total.num.queries=[1-9][0-9]*$" tmp.$$; then + echo "OK" +else + echo "bad stats" + cat tmp.$$ + exit 1 +fi + +# verbosity +echo "$PRE/unbound-control -c ub.conf verbosity 2" +$PRE/unbound-control -c ub.conf verbosity 2 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# check syntax error in parse +echo "$PRE/unbound-control -c ub.conf verbosity jkdf" +$PRE/unbound-control -c ub.conf verbosity jkdf +if test $? -ne 1; then + echo "wrong exit value after failure" + exit 1 +fi + +# check bad credentials +cp ub.conf bad.conf +echo "remote-control:" >> bad.conf +echo " server-key-file: bad_server.key" >> bad.conf +echo " server-cert-file: bad_server.pem" >> bad.conf +echo " control-key-file: bad_control.key" >> bad.conf +echo " control-cert-file: bad_control.pem" >> bad.conf +echo "$PRE/unbound-control -c bad.conf verbosity 2" +$PRE/unbound-control -c bad.conf verbosity 2 +if test $? -ne 1; then + echo "wrong exit value after failure" + exit 1 +fi + +# check spoofedclient credentials +rm -f bad.conf +cp ub.conf bad.conf +echo "remote-control:" >> bad.conf +echo " server-key-file: unbound_server.key" >> bad.conf +echo " server-cert-file: unbound_server.pem" >> bad.conf +echo " control-key-file: bad_control.key" >> bad.conf +echo " control-cert-file: bad_control.pem" >> bad.conf +echo "$PRE/unbound-control -c bad.conf verbosity 2" +$PRE/unbound-control -c bad.conf verbosity 2 +if test $? -ne 1; then + echo "wrong exit value after failure" + exit 1 +fi + +# create a new local zone +echo "> test of local zone" +echo "$PRE/unbound-control -c ub.conf local_zone example.net static" +$PRE/unbound-control -c ub.conf local_zone example.net static +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1" +$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# check that www.example.net exists +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# check that mail.example.net has nxdomain +echo "> dig mail.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT mail.example.net. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# remove www.example.net - check it gets nxdomain +echo "$PRE/unbound-control -c ub.conf local_data_remove www.example.net" +$PRE/unbound-control -c ub.conf local_data_remove www.example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# remove nonexistent name - check bug#287(segfault) does not happen. +echo "$PRE/unbound-control -c ub.conf local_data_remove test.example.net" +$PRE/unbound-control -c ub.conf local_data_remove test.example.net +# if crash then then we get: error: could not SSL_read from unbound-control +if test $? -ne 0; then + echo "wrong exit value after success" + cat unbound.log + echo "Not OK" + exit 1 +fi + +# remove example.net - check its gone. +echo "$PRE/unbound-control -c ub.conf local_zone_remove example.net" +$PRE/unbound-control -c ub.conf local_zone_remove example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "SERVFAIL" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# dump the cache +echo "> test cache dump" +# fillup cache +echo "dig www.example.com" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. +echo "$PRE/unbound-control -c ub.conf dump_cache" +$PRE/unbound-control -c ub.conf dump_cache > tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +cat tmp.$$ +if grep 10.20.30.40 tmp.$$; then + echo "OK example.com is in cache dump" +else + echo "Not OK cache dump" + exit 1 +fi + +# test lookup +echo "$PRE/unbound-control -c ub.conf lookup www.example.com" +$PRE/unbound-control -c ub.conf lookup www.example.com +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +# answer to lookup is meaningless because of use a forwarder, oh well. + +# load the cache dump. +echo "$PRE/unbound-control -c ub.conf load_cache < tmp.$$" +$PRE/unbound-control -c ub.conf load_cache < tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# load local-zones from file +echo "$PRE/unbound-control -c ub.conf local_zones < local_zones" +$PRE/unbound-control -c ub.conf local_zones < local_zones +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig localzonefromfile." +dig @127.0.0.1 -p $UNBOUND_PORT localzonefromfile | tee outfile +echo "> check answer" +if grep "REFUSED" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# load local-data from file +echo "$PRE/unbound-control -c ub.conf local_datas < local_data" +$PRE/unbound-control -c ub.conf local_datas < local_data +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig localdatafromfile." +dig @127.0.0.1 -p $UNBOUND_PORT -t txt localdatafromfile | tee outfile +echo "> check answer" +if grep "local data from file OK" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# remove local-zone and local-data from file +echo "$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove" +$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove" +$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> check zone and data removal list_local_zones" +$PRE/unbound-control -c ub.conf list_local_zones | tee outfile +if grep "localzonefromfile" outfile; then + echo "Not OK" + exit 1 +fi +if grep "local data from file OK" outfile; then + echo "Not OK" + exit 1 +fi +if grep "otherlocalzone" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# flushing +echo "$PRE/unbound-control -c ub.conf flush www.example.net" +$PRE/unbound-control -c ub.conf flush www.example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "$PRE/unbound-control -c ub.conf flush_type www.example.net TXT" +$PRE/unbound-control -c ub.conf flush_type www.example.net TXT +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "$PRE/unbound-control -c ub.conf flush_zone example.net" +$PRE/unbound-control -c ub.conf flush_zone example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# now stop the server +echo "$PRE/unbound-control -c ub.conf stop" +$PRE/unbound-control -c ub.conf stop +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +# see if the server has really exited. +TRY_MAX=20 +for (( try=0 ; try <= $TRY_MAX ; try++ )) ; do + if kill -0 $UNBOUND_PID 2>&1 | tee tmp.$$; then + echo "not stopped yet, waiting" + sleep 1 + else + echo "stopped OK; break" + break; + fi + if grep "No such process" tmp.$$; then + echo "stopped OK; break" + break; + fi +done +if kill -0 $UNBOUND_PID; then + echo "still up!" + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "not stopped, failure" + exit 1 +else + echo "stopped OK" + + if test -f ublocktrace.0; then + if $PRE/lock-verify ublocktrace.*; then + echo "lock-verify test worked." + else + echo "lock-verify test failed." + cat fwd.log + cat unbound.log + exit 1 + fi + fi +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.testns b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.testns new file mode 100644 index 0000000..0c911ca --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/09-unbound-control.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/external/unbound/testdata/09-unbound-control.tdir/bad_control.key b/external/unbound/testdata/09-unbound-control.tdir/bad_control.key new file mode 100644 index 0000000..d29cdbc --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/bad_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDti51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4G +SLOE02/hKDkdkOvaUG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtO +DWc3tXPT1IlSEN0xnAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQAB +AoGAG3w/DatfMCu/nS5OdQx9BSqPgNbnUSqux9xA0fhgPTlN0T3oRtPcqa7JUDUW +PryI/a62ry+zGkw98N2AxolCZg3N7Z3vuRx2FMcKKNwpTzDmcZW7TmMk5FPof6gE +PnYl/ff0w+kxqA+L2EexH3Xi6ApLSZcjyzKWj+dL2AuT9gkCQQD3dPitwITxgCAD +IaHw23e3FRkM/hw1Gp8bt6nbuxitVxxpO96q1EQ+fCy/mf0bMEJDp3xzMEIfP3r4 +GmNbaxa1AkEA9b8LeBLbQ2cm2+UMeUgygBsRirdUQ786auqH38Jbvi/j6S9sDl2x +q1vRtikEBZJWfkhsOzrzwFDKe1bI/EEn9wJAAzOwRA9JqRZPU7sLrWIpmmTbfh+L +neRKSsGFoSI6n4ORCouLxgoZF/XjXldPvxpQwS9ZnOPy9xSLMsqknno0QQJAeDtA +IT8Yh6GwIWWu9KeeDY8wxe1sDLlCm4yjbZZpzGMh3rSU6XJtuqjxsW3fydoO9zn3 +ugLdvvnIFxAexUwbgQJBANyM13xcObfUJOj9rjlGCh0CDh/04ONl8SH8HBnM8guA +RJI5S6vBHweVRopEZcF1sQm6wMf3ej/sGkyyNvJxRkY= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/bad_control.pem b/external/unbound/testdata/09-unbound-control.tdir/bad_control.pem new file mode 100644 index 0000000..e06b847 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/bad_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt +i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva +UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x +nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK +4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH +5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/bad_server.key b/external/unbound/testdata/09-unbound-control.tdir/bad_server.key new file mode 100644 index 0000000..0dbb134 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/bad_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC9hurNHBtB7QFEuPJOnCylUWUF2/US3v9yQQQXnstuXMQXRaq1 +1uviLmwaGurV9tngX59HITsBT74NQrtFKfEDLViLrm2arAM9Ozsn4tnv30HXPRDj +UOc1M05Q7UzjaSrOv+TkPEqyhtUyaP1DYo0bcmbxtSkYc2ZEWCwhPklUwQIDAQAB +AoGATjzZxN4ramWaNnJapJTX4U7eczK/0pB3xwSL2exVcjOdRzYdKH+WVIJxYb1m +3/jNLFCNAeH356yxeevoPr73nG75YJ9I1ZWQWTnS3SDK6JD1+3pmAD0bQWFoitpf +FoSH9H4X5gFB5vCZ99YVoYH1UXWPcgvUHwxz0voImt6lCKECQQD4YQ4A3M0+Ki8v +Hl+5FKULnS0UtBkweCvkF/X1zZRjjYr6hLnqldFkkgTBKWe17pUXX0nwRMbP1YZX +i+vDq5JNAkEAw1eYsmC0nVAMawo57N6LYavGv/n5u1cvpTpKDtn4cXH0Uqq13Kyu +2FUTzan2NhCEK78UzbWaeewBJmxYda1+RQJAdShKk6uTAEyjnwUjv8h2JWlJN2fQ +LeWxRlDrCruiz+aW9J4gl/99GoQpy/c83TshhjnDRZsbcDNWv/rXBZ/rTQJAFQva +CtX6f7yBKgM3DHtJvyM3zbVMH9Ab9QxbsE/xwZ9KeKGl6Hm+eNZpxM3cFiUfaGs0 +/ZjkZOB1m0MvILaplQJAXC3PJ/E+87banGZRJl5qtS6/HoX5lH9TPkL8Essy7ANO +2BT2OTQawD1A+VKIrQHXs085Of8tQUfrfHHt7s3Kqg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/bad_server.pem b/external/unbound/testdata/09-unbound-control.tdir/bad_server.pem new file mode 100644 index 0000000..983247a --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/bad_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B +RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ +DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV +Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy +zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm +O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu +oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/local_data b/external/unbound/testdata/09-unbound-control.tdir/local_data new file mode 100644 index 0000000..54e6e93 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/local_data @@ -0,0 +1 @@ +localdatafromfile 3600 TXT "local data from file OK" diff --git a/external/unbound/testdata/09-unbound-control.tdir/local_data_remove b/external/unbound/testdata/09-unbound-control.tdir/local_data_remove new file mode 100644 index 0000000..fcb8239 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/local_data_remove @@ -0,0 +1 @@ +localdatafromfile diff --git a/external/unbound/testdata/09-unbound-control.tdir/local_zones b/external/unbound/testdata/09-unbound-control.tdir/local_zones new file mode 100644 index 0000000..4c65f71 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/local_zones @@ -0,0 +1,2 @@ +localzonefromfile refuse +otherlocalzone static diff --git a/external/unbound/testdata/09-unbound-control.tdir/local_zones_remove b/external/unbound/testdata/09-unbound-control.tdir/local_zones_remove new file mode 100644 index 0000000..1d21558 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/local_zones_remove @@ -0,0 +1 @@ +localzonefromfile diff --git a/external/unbound/testdata/09-unbound-control.tdir/unbound_control.key b/external/unbound/testdata/09-unbound-control.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/unbound_control.pem b/external/unbound/testdata/09-unbound-control.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/unbound_server.key b/external/unbound/testdata/09-unbound-control.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/09-unbound-control.tdir/unbound_server.pem b/external/unbound/testdata/09-unbound-control.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/09-unbound-control.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.conf b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.conf new file mode 100644 index 0000000..bb125c0 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.conf @@ -0,0 +1,8 @@ +# test config to direct traffic to testns. +server: + do-not-query-localhost: no + fake-sha1: yes +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.dsc b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.dsc new file mode 100644 index 0000000..869dfaf --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.dsc @@ -0,0 +1,16 @@ +BaseName: 10-unbound-anchor +Version: 1.0 +Description: Test unbound-anchor for 5011 and cert update. +CreationDate: Thu Sep 30 15:35:09 CEST 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: 10-unbound-anchor.pre +Post: 10-unbound-anchor.post +Test: 10-unbound-anchor.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.post b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.post new file mode 100644 index 0000000..b111294 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.post @@ -0,0 +1,10 @@ +# #-- 10-unbound-anchor.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $PETAL_PID diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.pre b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.pre new file mode 100644 index 0000000..acf2232 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.pre @@ -0,0 +1,33 @@ +# #-- 10-unbound-anchor.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." +get_random_port 2 +PETAL_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "PETAL_PORT=$PETAL_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +get_make +(cd $PRE; $MAKE petal) + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT 10-unbound-anchor.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start https daemon +$PRE/petal -v -a "127.0.0.1" -p $PETAL_PORT >petal.log 2>&1 & +PETAL_PID=$! +echo "PETAL_PID=$PETAL_PID" >> .tpkg.var.test +cat .tpkg.var.test +sed -e "s/@TOPORT@/$FWD_PORT/" < 10-unbound-anchor.conf > ub.conf + +wait_ldns_testns_up fwd.log +wait_petal_up petal.log + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.test b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.test new file mode 100644 index 0000000..46cea62 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.test @@ -0,0 +1,162 @@ +# #-- 10-unbound-anchor.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +OPTS="-u 127.0.0.1 -P $PETAL_PORT -C ub.conf -v -a root.key -c root.pem -n petal" +DS=`cat K.+005+37348.ds` + +# check that the root.key file works. +function check_works() { + if $PRE/unbound-host -C ub.conf -f root.key -t DNSKEY -v . | grep "(secure)" >/dev/null; then + echo OK + else + echo "not OK" + cat fwd.log + cat petal.log + exit 1 + fi +} + +# check that the root.key file works, but insecurely. +function check_insecure() { + if $PRE/unbound-host -C ub.conf -f root.key -t DNSKEY -v . | grep "(insecure)" >/dev/null; then + echo OK + else + echo "not OK" + cat fwd.log + cat petal.log + exit 1 + fi +} + +# test with good start key, and must do 5011 (no URL possible) +echo "*** TEST 1 ***" +echo $DS > root.key +$PRE/unbound-anchor -x "notexist.xml" -s "notexist.p7s" $OPTS +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +check_works +# save for test 5 +cp root.key root.key.probed + +# force update with the cert. +echo "*** TEST 2 ***" +cp test_cert.pem root.pem +$PRE/unbound-anchor -F -x "root.xml" -s "root.p7s" $OPTS +if test $? != 1; then + echo "Exitcode not OK" + exit 1 +fi +check_works + +# 5011 fails +echo "*** TEST 3 ***" +echo ". IN DS 37000 5 1 b00000000000000000000100f0000000000000b2" > root.key +$PRE/unbound-anchor -x "root.xml" -s "root.p7s" $OPTS +if test $? != 1; then + echo "Exitcode not OK" + exit 1 +fi +check_works + +# cert fails (bad p7s). +echo "*** TEST 4 ***" +echo ". IN DS 44444 5 1 b00000000000000000000100f0000000000000b2" > root.key +$PRE/unbound-anchor -F -x "bad.xml" -s "bad.p7s" $OPTS +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +if grep "DS 44444" root.key >/dev/null ; then + echo OK +else + echo "keyfile changed" + exit 1 +fi + +# cert fails (bad name). +echo "*** TEST 4b ***" +echo ". IN DS 44444 5 1 b00000000000000000000100f0000000000000b2" > root.key +$PRE/unbound-anchor -F -x "bad.xml" -s "bad.p7s" $OPTS -n "not-it" +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +if grep "DS 44444" root.key >/dev/null ; then + echo OK +else + echo "keyfile changed" + exit 1 +fi + +# 5011 fails, and probe-time too recent. +echo "*** TEST 5 ***" +# break the probed key. +sed -e 's/bp0KIK3J3/b00KIK0J0/' < root.key.probed > root.key +$PRE/unbound-anchor -x "notexist.xml" -s "notexist.p7s" $OPTS +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +if grep "b00KIK0J0" root.key >/dev/null ; then + echo OK +else + echo "keyfile changed" + exit 1 +fi + +# 5011 fails, and probe time is very, very old. +echo "*** TEST 6 ***" +mv root.key bla.key +# last probe was Sun Sep 9 03:46:40 2001 +sed -e 's/;;last_success: .*$/;;last_success: 1000000000/' < bla.key > root.key +rm bla.key +$PRE/unbound-anchor -x "root.xml" -s "root.p7s" $OPTS +if test $? != 1; then + echo "Exitcode not OK" + exit 1 +fi +check_works + +# 5011 update probe is only needed. +echo "*** TEST 7 ***" +$PRE/unbound-anchor -x "notexist.xml" -s "notexist.p7s" $OPTS +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +check_works + +# root goes to insecure (0 anchors). +echo "*** TEST 8 ***" +$PRE/unbound-anchor -F -x "no_more_keys.xml" -s "no_more_keys.p7s" $OPTS +if test $? != 1; then + echo "Exitcode not OK" + exit 1 +fi +if grep ";;REVOKED" root.key >/dev/null; then echo "REVOKED"; else + echo "not revoked"; exit 1; fi +check_insecure + +# insecure input file +echo "*** TEST 9 ***" +$PRE/unbound-anchor -x "notexist.xml" -s "notexist.p7s" $OPTS +if test $? != 0; then + echo "Exitcode not OK" + exit 1 +fi +if grep ";;REVOKED" root.key >/dev/null; then echo "REVOKED"; else + echo "not revoked"; exit 1; fi +check_insecure + + +echo "logs" +cat fwd.log +cat petal.log + +exit 0 diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.testns b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.testns new file mode 100644 index 0000000..9aaf75b --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/10-unbound-anchor.testns @@ -0,0 +1,17 @@ +; nameserver test file +$ORIGIN . +$TTL 3600 + +; for easy test: valid until 2030. +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 3600 IN DNSKEY 257 3 5 AwEAAcjV/I6yYY0LGBEqBFZS0K6zcbCVAfarbOoCKBUEfsR/nVdy3pwMydXopUVhg4Z07tTu8w2gYTPALPv5E6EJFJebA34R0OcvTPRDr3671zVwZO9HyQK+RuT/0d7G/pdCeJX2gHHiVrG796nf078O/agtojZ8+HJ1V3oLnDZYBSDWv2oL2LB2Mpj+610W7RrmEmQQm2KaMP6aX3YMbAyBIrDjVzJTir4/WwJEHRHq59Xw91egJkS2bp0KIK3J3tQFqw== ;{id = 37348 (ksk), size = 1536b} +. 3600 IN RRSIG DNSKEY 5 0 3600 20300930162500 20100530162500 37348 . tjIVLqaVr2o1pLYxNbozR8OxPnGnCJN/rROZoIVzjEgvofyHx24hGMXak6lIlLHZ9GSmOxUM/71MeunhSdMqfjsoktc7MkpB8eR6ATePjdaPTdRH519wHH7qEkHj5WJNKvJOvG7Q9xs6O3KANErr+iotHjOJYpgbmZFoENJvLzqj4FVJ0bIglgD+SZGJGv9/qA+eWAK7WuWSe+ulMU/WH/SnxB/NKDjSAa//TyjzLhlIRR5UTjLIUymWxG4D3TbJ ;{id = 37348} + +ENTRY_END + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/bad.p7s b/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/bad.p7s new file mode 100644 index 0000000000000000000000000000000000000000..afbdb1b913884a91350aea629c445257e1f84830 GIT binary patch literal 1165 zcmXqLV(Db#)N1o+`_9YA&a|M3rOKd*rHqM@(U9AKlZ{oIkC{n|mBD};p@?xo6H}}~ z6H}x?6Jyf?W+p}^CQgQX5lY@od#3+1;Dsw>WCiL|GvqViVPg(uVHRdBNG(asF%&Tn zf-B)<6oZHw$cghB8XFiInj0FL8kv|ziSrs885$UvK)FPl(|8}*1&pi=%#CLm3>r@| zH6CQx@gXB|Myu6JGq2(jr4w=7Pj{<*;4J#DJL$~ke-aGymaOF~cgxa#1cNoN3B-3GuIXrmGeUbA6al$kBNA!Kam{*2$cC9b{A2 zAQozOXSJX^&oVu(U=QC))9(K_&dt34o%^aLUupDJzHRx}n0Htx7#`Ze@uFC#m%E@k zZkg19fO8u!b3B~7yG2(~QG{=gq<-Evn`p^3Uhc8?y|-#*ad`0=y?Fh+%j<|BClfOx z1LIBTF|{E37Z~EqK#$I1u37U;;Jm@r(uGBa@~gLLeh}xr9ih@* z?LfLqq3WHJki-AC!LOjO1a@IcI)cx~^yS#pBcLGfMX!%oW_lY}MGvHFJvN z9>@KQJl;wEPnptZa!tedv|Mlf^>0WtfgGz)Ve#0Dt zEKp8KX!Br9WoBX2Lgt7ebC?Xc*f=1$j+xzn56)&{Vq$0j#wbjViHXs{fE|(z*-^zc zkRu+L&{-M}$l88oEc#`);JK<3gW=b6#vMM#yRSYxt6UIdZ1^YNc74muJ(5-F(Q3C8 zr^UA0KPbAQY#AT&d%IfYH}l+I?t&h-?w|8uI#}>&$|9Gup}yC&e=ghf*ve4Z(){nu zPYHM-`o zah8%v(#*Mn7J7UsZ1t~f=f1ueGke;a+Xm*w3l5td;kYXH=Rk + +. + +37348 +5 +1 +b56a31943f14faa31224d147f8b1107b78590000 + + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.p7s b/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.p7s new file mode 100644 index 0000000000000000000000000000000000000000..c76b5b6e4754d5bce27f78f85286159ba3e0df64 GIT binary patch literal 1165 zcmXqLV(Db#)N1o+`_9YA&a|M3rOKd*rHqM@(U9AKlZ{oIkC{n|mBD};p@?xo6H}}~ z6H}x?6Jyf?W+p}^CQgQX5lY@od#3+1;Dsw>WCiL|GvqViVPg(uVHRdBNG(asF%&Tn zf-B)<6oZHw$cghB8XFiInj0FL8kv|ziSrs885$UvK)FPl(|8}*1&pi=%#CLm3>r@| zH6CQx@gXB|Myu6JGq2(jr4w=7Pj{<*;4J#DJL$~ke-aGymaOF~cgxa#1cNoN3B-3GuIXrmGeUbA6al$kBNA!Kam{*2$cC9b{A2 zAQozOXSJX^&oVu(U=QC))9(K_&dt34o%^aLUupDJzHRx}n0Htx7#`Ze@uFC#m%E@k zZkg19fO8u!b3B~7yG2(~QG{=gq<-Evn`p^3Uhc8?y|-#*ad`0=y?Fh+%j<|BClfOx z1LIBTF|{E37Z~EqK#$I1u37U;;Jm@r(uGBa@~gLLeh}xr9ih@* z?LfLqq3WHJki-AC!LOjO1a@IcI)cx~^yS#pBcLGfMX!%oW_lY}MGvHFJvN z9>@KQJl;3-l*df`F9aUTd zIpTo{ou%C?2@Ttt8Y?|T2Vew>-2tY1^(H@{TNBU_%EtP(iLVthM2%%t=PTSOz*TF&j~a~Ce2 ztT5NVEpt83iQ50Iysw?ZQ{1;@czFdB+1pyQoy(V4)jcgdj_Fya#_YU_D!xxcx~kvp F000?Vi{=0T literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.xml b/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.xml new file mode 100644 index 0000000..ac5cd48 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/no_more_keys.xml @@ -0,0 +1,16 @@ + + +. + +37348 +5 +1 +b56a31943f14faa31224d147f8b1107b78598eb2 + + +37348 +5 +1 +b56a31943f14faa31224d147f8b1107b78598eb2 + + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/root.p7s b/external/unbound/testdata/10-unbound-anchor.tdir/127.0.0.1/root.p7s new file mode 100644 index 0000000000000000000000000000000000000000..afbdb1b913884a91350aea629c445257e1f84830 GIT binary patch literal 1165 zcmXqLV(Db#)N1o+`_9YA&a|M3rOKd*rHqM@(U9AKlZ{oIkC{n|mBD};p@?xo6H}}~ z6H}x?6Jyf?W+p}^CQgQX5lY@od#3+1;Dsw>WCiL|GvqViVPg(uVHRdBNG(asF%&Tn zf-B)<6oZHw$cghB8XFiInj0FL8kv|ziSrs885$UvK)FPl(|8}*1&pi=%#CLm3>r@| zH6CQx@gXB|Myu6JGq2(jr4w=7Pj{<*;4J#DJL$~ke-aGymaOF~cgxa#1cNoN3B-3GuIXrmGeUbA6al$kBNA!Kam{*2$cC9b{A2 zAQozOXSJX^&oVu(U=QC))9(K_&dt34o%^aLUupDJzHRx}n0Htx7#`Ze@uFC#m%E@k zZkg19fO8u!b3B~7yG2(~QG{=gq<-Evn`p^3Uhc8?y|-#*ad`0=y?Fh+%j<|BClfOx z1LIBTF|{E37Z~EqK#$I1u37U;;Jm@r(uGBa@~gLLeh}xr9ih@* z?LfLqq3WHJki-AC!LOjO1a@IcI)cx~^yS#pBcLGfMX!%oW_lY}MGvHFJvN z9>@KQJl;wEPnptZa!tedv|Mlf^>0WtfgGz)Ve#0Dt zEKp8KX!Br9WoBX2Lgt7ebC?Xc*f=1$j+xzn56)&{Vq$0j#wbjViHXs{fE|(z*-^zc zkRu+L&{-M}$l88oEc#`);JK<3gW=b6#vMM#yRSYxt6UIdZ1^YNc74muJ(5-F(Q3C8 zr^UA0KPbAQY#AT&d%IfYH}l+I?t&h-?w|8uI#}>&$|9Gup}yC&e=ghf*ve4Z(){nu zPYHM-`o zah8%v(#*Mn7J7UsZ1t~f=f1ueGke;a+Xm*w3l5td;kYXH=Rk + +. + +37348 +5 +1 +b56a31943f14faa31224d147f8b1107b78598eb2 + + diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.ds b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.ds new file mode 100644 index 0000000..1b98f04 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.ds @@ -0,0 +1 @@ +. 3600 IN DS 37348 5 1 b56a31943f14faa31224d147f8b1107b78598eb2 ; xotek-pusin-gezoc-gevep-feged-gigyg-livor-cagil-riveh-nafar-duxix diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.key b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.key new file mode 100644 index 0000000..6550613 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.key @@ -0,0 +1 @@ +. 3600 IN DNSKEY 257 3 5 AwEAAcjV/I6yYY0LGBEqBFZS0K6zcbCVAfarbOoCKBUEfsR/nVdy3pwMydXopUVhg4Z07tTu8w2gYTPALPv5E6EJFJebA34R0OcvTPRDr3671zVwZO9HyQK+RuT/0d7G/pdCeJX2gHHiVrG796nf078O/agtojZ8+HJ1V3oLnDZYBSDWv2oL2LB2Mpj+610W7RrmEmQQm2KaMP6aX3YMbAyBIrDjVzJTir4/WwJEHRHq59Xw91egJkS2bp0KIK3J3tQFqw== ;{id = 37348 (ksk), size = 1536b} diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.private b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.private new file mode 100644 index 0000000..1e4f9c5 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/K.+005+37348.private @@ -0,0 +1,10 @@ +Private-key-format: v1.2 +Algorithm: 5 (RSASHA1) +Modulus: yNX8jrJhjQsYESoEVlLQrrNxsJUB9qts6gIoFQR+xH+dV3LenAzJ1eilRWGDhnTu1O7zDaBhM8As+/kToQkUl5sDfhHQ5y9M9EOvfrvXNXBk70fJAr5G5P/R3sb+l0J4lfaAceJWsbv3qd/Tvw79qC2iNnz4cnVXegucNlgFINa/agvYsHYymP7rXRbtGuYSZBCbYpow/ppfdgxsDIEisONXMlOKvj9bAkQdEern1fD3V6AmRLZunQogrcne1AWr +PublicExponent: AQAB +PrivateExponent: XKH2f4rfW8LGMwSCQ56nCi1SPvQ7l56x+a1M94S/Q7row7ED5E4xuiw4LqwvkhDVJ/meuaZDry7wkLftydT6XoLtNXTaOgejIvclNvtE5C0XIRanLFC/OliUYIDAZNwPGVCYX8ZIfcbi1Sp5Ng9EofCb1haSGn/Wnar31knaweRdTrAUIPl49+QhJmaHCrTtHVuYEOZjIaOPSGIBvxZAk//3yF6FXY3RVRaNRTcELWvLclSdtt52etVV0/SEWhjh +Prime1: 4wEpv8UVvqOkOKSxeu1ao42FWHwqzwUdFyNeKrUxg3E7ad5i9V0aaFhqbJKzQtVUreeEtoXsSRvjvbWJ4wSCwEay1qVD4xEJ4UFtasESxQvv1iVsBQ7zEywRkwSIT46/ +Prime2: 4n0h+1TXflSEqdxC4lPiwyIC/z+1iyq0kFru70SB395S44HAynbQBdsapZX29msfl+/tiu2DncIXe1oVaDDqPpbrOT5NZMH9xQnZDSCbM8l7Gyx5UB3MsbT+71J2VrAV +Exponent1: p81LTDvmyAZ1NX3gyCq+TpolkPQwPNnd2CXHzTAlirFgJvFCG3gYNjvtZ5bFtki2ENtMShQTRzO7lJemds71zCY2ut5toWMN95oCxOA1/LzHLHh7Mf4MBwcTcqbuEElH +Exponent2: w0ZyWxkuZxyF+VIQVMVQuT+E6ABNDX03i1LruV4OwC8WtlM0HxxLhREBK41eDd4UslJKM8NO/GDRECh+VoP+IxLKImPGJL5hh1ZTTs8zIXZw7t/shJf82acdOsiVgW51 +Coefficient: 10OZvNAPHe/wBO2+AO49EUohPksOxFy9dwspB1XUjlPB9zv93dUfZdou3pjZq1EkxnRChaAwmRMYxks3UiTmDuybMNzKlaFQajyB+UowjA1dStFYbDFpVrIqv6H0q7W2 diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.key b/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.key new file mode 100644 index 0000000..b860b1b --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.key @@ -0,0 +1,21 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIDfAIBAAKBwQC48GhhmIU66TZKc3QiyF4L5bsm8Aly/y2SzLP+GACepK0OcOtD +i2sXrTtoJDvGOPZ9ICqmIy8u/Q/cK26txNEeZFcClLcYF/U+NaqjEwrwkHEIgc3g +8qnKrhzM61I8foAWVT7cqxFHDKYuClNITXk1i//Yzpnf9wvVKQ51W9UOtm/WA7g4 +IDHCuAjocyyNC3B7XqYawFDOsdMI4ZW7hC0hIRQOvBkvbvY8WxmsSkdd30u1KmoI +Sg4y6OvnikrEEQkCAwEAAQKBwQC3hQlv37RF82sGkm8qnP6Ge+AuEYCu9v44cJ4k +hZkH1I5OiEtN6anKAwOyolIWsCwZmrP3zW5jCIiWiRr5oReLOzMEwqK2a//XTdYY +oSr38b3ZHUY59VP8Zq75woMGuNed35kAmGxzDRP1gI/TmvTvaHlqYyvxBtxnZJij +Za1CrT+a9JvR6hI8xXrE33CF0T6JO1v3v0HeBuve5+83cCHKo+GyqIBjL3FJgefZ +EsPz6rGnPDKTYgMyaljFV3LI5ikCYQDlaBnyiWk1C7tYO5x3CRoHoiuiiREZCncK +QkSxjiDoSP0rc+3BQp2kG3yy6S9mN4qMQPELEtBa6bORogxNK+Pxg8TRI/+xgeFt +bod5Bd4pfl6Y5hXm21JwELFlOzPI3PMCYQDOYK6Z7vegiOJyyAJXMjcI07H8S0Gr +SZW8f4tHRzO+RrRpR5ANzarELX7nF/Qj5mPXiZNiiMDGocxqkNzIa5HFLOqBhRkv +o7yC1Cj582dUBFHyEbsZxR6UMTPLdE3UaRMCYACC1Nv3dmaJ2ib+KwEQ4h/2Ooao +K4OUxGMfdqu2l1gtIXNBVNxDW7qL3SFA57wgj4x0cJUHu7MYJjBC3igl2uIk2wFk +RSOOGIR35JFec/o/r9JDYPUcs/hP8TU6hokCBQJgHbH/rZqa+vh3TPjGjXFmRdjg +JWNWwaTG7OaVTd5K7bgSwYtQiQvs5Gl/dxUVRg0ilKLxGB6BTpN9bGAHxLbltK9v +1s8l/praxyBr/PsvBQHSILi4aU7ZxY0G3OGRSV0NAmBx28Msdgc0yHh3qSkbwVEr +gr7av1iOH73ee+o4CmMWXYUBHOMW5Su0s0QHjNGDMiRiRoCvzYqdLcJj9/sFJxOT +CM35WGGeKDMNubX7C6YroQ91q7kUmhi7HHY3QOyhCDU= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.pem b/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.pem new file mode 100644 index 0000000..6e588a4 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/keys/test_cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWTCCAYKgAwIBAgIJAN5YIkuCvJf5MA0GCSqGSIb3DQEBBQUAMCYxDjAMBgNV +BAMTBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0xMzAxMTcxMTUyNDVa +Fw0zMjEwMDQxMTUyNDVaMCYxDjAMBgNVBAMTBXBldGFsMRQwEgYJKoZIhvcNAQkB +FgVwZXRhbDCB3zANBgkqhkiG9w0BAQEFAAOBzQAwgckCgcEAuPBoYZiFOuk2SnN0 +IsheC+W7JvAJcv8tksyz/hgAnqStDnDrQ4trF607aCQ7xjj2fSAqpiMvLv0P3Ctu +rcTRHmRXApS3GBf1PjWqoxMK8JBxCIHN4PKpyq4czOtSPH6AFlU+3KsRRwymLgpT +SE15NYv/2M6Z3/cL1SkOdVvVDrZv1gO4OCAxwrgI6HMsjQtwe16mGsBQzrHTCOGV +u4QtISEUDrwZL272PFsZrEpHXd9LtSpqCEoOMujr54pKxBEJAgMBAAGjDzANMAsG +A1UdDwQEAwIChDANBgkqhkiG9w0BAQUFAAOBwQCaA3ys5hDPMNV1oXIxH6u2KfAX +C9tYJId/SR0x8whsZuNaSEZAgImdM5dnyWdjey8Pio772E9/F2aUBGFkdadZx4My +d7hBfEi/NECEKs86k9g0ijbin41NKtnajb6GwyNQ9vDx7Z5FS8BZ3CD0BZIdCQUE +gKuDSWBROQU3tqrjdk2QTwGQkj2mgzT871Jn1MwZw0mczPjS1y469Ejym8wi3uCd +EboDOoGBCpmUQbxBv6JI75cUCdmNNEwjQjZ0XQw= +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup b/external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup new file mode 100644 index 0000000..3e59311 --- /dev/null +++ b/external/unbound/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup @@ -0,0 +1,167 @@ +#!/bin/sh +# +# unbound-control-setup.sh - set up SSL certificates for unbound-control +# +# Copyright (c) 2008, NLnet Labs. All rights reserved. +# +# This software is open source. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of the NLNET LABS nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# settings: + +# directory for files +DESTDIR=/usr/local/etc/unbound + +# issuer and subject name for certificates +SERVERNAME=petal +CLIENTNAME=unbound-anchor + +# validity period for certificates +DAYS=7200 + +# size of keys in bits +BITS=1536 + +# hash algorithm +HASH=sha1 + +# base name for unbound server keys +SVR_BASE=test_cert + +# base name for unbound-control keys +CTL_BASE=unbound_control + +# we want -rw-r--- access (say you run this as root: grp=yes (server), all=no). +umask 0026 + +# end of options + +# functions: +error ( ) { + echo "$0 fatal error: $1" + exit 1 +} + +# check arguments: +while test $# -ne 0; do + case $1 in + -d) + if test $# -eq 1; then error "need argument for -d"; fi + DESTDIR="$2" + shift + ;; + *) + echo "unbound-control-setup.sh - setup SSL keys for unbound-control" + echo " -d dir use directory to store keys and certificates." + echo " default: $DESTDIR" + echo "please run this command using the same user id that the " + echo "unboun daemon uses, it needs read privileges." + exit 1 + ;; + esac + shift +done + +# go!: +echo "setup in directory $DESTDIR" +cd "$DESTDIR" || error "could not cd to $DESTDIR" + +# create certificate keys; do not recreate if they already exist. +if test -f $SVR_BASE.key; then + echo "$SVR_BASE.key exists" +else + echo "generating $SVR_BASE.key" + openssl genrsa -out $SVR_BASE.key $BITS || error "could not genrsa" +fi +if test -f $CTL_BASE.key; then + echo "$CTL_BASE.key exists" +else + echo "generating $CTL_BASE.key" + openssl genrsa -out $CTL_BASE.key $BITS || error "could not genrsa" +fi + +# create self-signed cert for server +cat >request.cfg <request.cfg <> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT auth_axfr.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < auth_axfr.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/auth_axfr.tdir/auth_axfr.test b/external/unbound/testdata/auth_axfr.tdir/auth_axfr.test new file mode 100644 index 0000000..f9171ee --- /dev/null +++ b/external/unbound/testdata/auth_axfr.tdir/auth_axfr.test @@ -0,0 +1,51 @@ +# #-- auth_axfr.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +if grep SERVFAIL outfile; then + echo "> try again" + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "1.2.3.4" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/auth_axfr.tdir/auth_axfr.testns b/external/unbound/testdata/auth_axfr.tdir/auth_axfr.testns new file mode 100644 index 0000000..f1678a1 --- /dev/null +++ b/external/unbound/testdata/auth_axfr.tdir/auth_axfr.testns @@ -0,0 +1,27 @@ +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.net. +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END diff --git a/external/unbound/testdata/auth_https.tdir/127.0.0.1/example.com.zone b/external/unbound/testdata/auth_https.tdir/127.0.0.1/example.com.zone new file mode 100644 index 0000000..695eb1c --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/127.0.0.1/example.com.zone @@ -0,0 +1,3 @@ +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.net. +www.example.com. IN A 1.2.3.4 diff --git a/external/unbound/testdata/auth_https.tdir/auth_https.conf b/external/unbound/testdata/auth_https.tdir/auth_https.conf new file mode 100644 index 0000000..add166f --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/auth_https.conf @@ -0,0 +1,18 @@ +server: + verbosity: 7 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes +auth-zone: + name: "example.com" + for-upstream: yes + for-downstream: yes + url: "https://127.0.0.1:@TOPORT@/example.com.zone" + diff --git a/external/unbound/testdata/auth_https.tdir/auth_https.dsc b/external/unbound/testdata/auth_https.tdir/auth_https.dsc new file mode 100644 index 0000000..bf43411 --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/auth_https.dsc @@ -0,0 +1,16 @@ +BaseName: auth_https +Version: 1.0 +Description: Perform https for authority zone +CreationDate: Tue 13 Jun 09:35:40 CEST 2017 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: auth_https.pre +Post: auth_https.post +Test: auth_https.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/auth_https.tdir/auth_https.post b/external/unbound/testdata/auth_https.tdir/auth_https.post new file mode 100644 index 0000000..3c1b7ef --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/auth_https.post @@ -0,0 +1,11 @@ +# #-- auth_https.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh +kill_pid $UNBOUND_PID +kill_pid $PETAL_PID diff --git a/external/unbound/testdata/auth_https.tdir/auth_https.pre b/external/unbound/testdata/auth_https.tdir/auth_https.pre new file mode 100644 index 0000000..e50fd5f --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/auth_https.pre @@ -0,0 +1,34 @@ +# #-- auth_https.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +PETAL_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "PETAL_PORT=$PETAL_PORT" >> .tpkg.var.test + +get_make +(cd $PRE; $MAKE petal) + +# start https daemon +$PRE/petal -v -a "127.0.0.1" -p $PETAL_PORT >petal.log 2>&1 & +PETAL_PID=$! +echo "PETAL_PID=$PETAL_PID" >> .tpkg.var.test +cat .tpkg.var.test +wait_petal_up petal.log + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$PETAL_PORT'/' < auth_https.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/auth_https.tdir/auth_https.test b/external/unbound/testdata/auth_https.tdir/auth_https.test new file mode 100644 index 0000000..cff9354 --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/auth_https.test @@ -0,0 +1,51 @@ +# #-- auth_https.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +if grep SERVFAIL outfile; then + echo "> try again" + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +fi +echo "> cat logfiles" +cat petal.log +cat unbound.log +echo "> check answer" +if grep "1.2.3.4" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/auth_https.tdir/petal.key b/external/unbound/testdata/auth_https.tdir/petal.key new file mode 100644 index 0000000..6614e49 --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/petal.key @@ -0,0 +1,21 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIDfQIBAAKBwQC1xQ/Kca6zszZbcCtdOTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJ +RuN+Rm304SonpwghfP2/ULZNnuDgpG03/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1 +QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ867K029ypjOQtAJ85qdO3mERy7TGtdUcu +O6hLeVet419YeQ2F8cfNxn63d7bOzNGLPW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeU +J/i4YDWexFYSL+ECAwEAAQKBwCLXXQl+9O+5AEhSnd1Go1Jh0pSA7eBJOuXQcebG +Rb7ykp+6C4G2NtDziwwPRNdI6wQQQ0sym18RfyVQHydGr78/nbiIbB3HCn5e92Mh +mefzW6ow9Kvm2txLzGKA1lvoyRbNm81jnG/eygi3u7Nqd5PNv+4dHj2RkTlmxOeh +qnDMVP5md8uZPv6lYNnrnIzvLCR5vnPNdVwn89AqzI85IcDZdy0R9ZX4NBbsDgAU +6ig6uXuRXvSGiyJ/OUXSrnogaQJhAOjvkHUhVZQkPOxO90TNH4j0GdKKtbSWxIdz +lKfuJeBAEqs0TL+C6vbS81Xw3W1alyDdUBk3rJMOBqW6Ryq5HNL+j5H+Jfsh7fvc +Yle+5wHGci0P9zCFZCrY8It7n9XFIwJhAMfEi6oJa2G8waPJ1bQhxka82Tf9pnKM +XCn/1BBOFjVIx5F842cpA+zp5a62GENTGYPQTTRBB/2/ZwnW5aIkrlg54AtmbqBZ +Oh+2kJdJQD/tfoVmc5soUE2ScTHadK5RKwJhAN4w9kjkXS+MSZjX0kIMsBIBVkhh +C+aREjJqa9ir7/Ey7RvmLXdYuCxtGLRXp7/R8+rjcK49Tx6O+IRJZe042mfhbq3C +EhS1Tr86f4xXix9EXlDhs9bSxrOgcAN9Dv/opQJhAK7eBcPaav0rVfYh/8emqQHS +3fJ9Pu6WnzbEksWTFS2ff9KDGCx9YspIFJ5TF/oXDAaumGZdZrlgirm6O1kr8tGY +F97i04PZl1+bWAaWQH+1TUNI43m2WFUPE7coG2tb8QJgcddDg9VlXliZqgcETZfJ +kJmYETxrcSn3ao6v116N8yxhEgUgjkmsCTiFgx36iDVnXwK6PIt+sIu8MC7eYNa3 +berrv/M21K0LRn20IWRxvUobG070weHCAgkko7fTWgr2 +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/auth_https.tdir/petal.pem b/external/unbound/testdata/auth_https.tdir/petal.pem new file mode 100644 index 0000000..19c8b89 --- /dev/null +++ b/external/unbound/testdata/auth_https.tdir/petal.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw +ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT +BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd +OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 +/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 +67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL +PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG +9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD +ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO +mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV +bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd +q7miNnkO8vd0maw= +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/auth_xfr.rpl b/external/unbound/testdata/auth_xfr.rpl new file mode 100644 index 0000000..2dd2b7a --- /dev/null +++ b/external/unbound/testdata/auth_xfr.rpl @@ -0,0 +1,232 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with AXFR + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.net. +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 10 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_host.rpl b/external/unbound/testdata/auth_xfr_host.rpl new file mode 100644 index 0000000..d052d36 --- /dev/null +++ b/external/unbound/testdata/auth_xfr_host.rpl @@ -0,0 +1,248 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: ns.example.net. + #master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone that needs host name lookup + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +www.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.com. +www.example.com. IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 10 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.com. +www.example.com. 3600 IN A 1.2.3.4 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_ixfr.rpl b/external/unbound/testdata/auth_xfr_ixfr.rpl new file mode 100644 index 0000000..99cb75c --- /dev/null +++ b/external/unbound/testdata/auth_xfr_ixfr.rpl @@ -0,0 +1,277 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.6 +mail.example.com. 3600 IN A 1.2.3.7 +zup.example.com. 3600 IN A 1.2.3.4 +yyy.example.com. 3600 IN A 1.2.3.4 +yyy.example.com. 3600 IN AAAA 2001:db8::5 +r1.example.com. 3600 IN A 1.2.3.4 +r1.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r2.example.com. 3600 IN A 1.2.3.4 +r2.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r2.example.com. 3600 IN RRSIG AAAA 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r3.example.com. 3600 IN A 1.2.3.4 +r3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +add.example.com. 3600 IN A 1.2.3.4 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with IXFR + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +www.example.com. IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.6 +zup.example.com. 3600 IN A 1.2.3.4 +yyy.example.com. 3600 IN AAAA 2001:db8::5 +r1.example.com. 3600 IN A 1.2.3.4 +r2.example.com. 3600 IN A 1.2.3.4 +r3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 12345 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.8 +mail.example.com. IN AAAA 2001:db8::5 +add2.example.com. 3600 IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 2 TIME_PASSES ELAPSE 1 + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 3600 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.5 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +add.example.com. 3600 IN A 1.2.3.4 +add2.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.7 +mail.example.com. 3600 IN A 1.2.3.8 +mail.example.com. 3600 IN AAAA 2001:db8::5 +r1.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r2.example.com. 3600 IN RRSIG AAAA 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r2.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +r3.example.com. 3600 IN A 1.2.3.4 +r3.example.com. 3600 IN RRSIG A 8 3 10200 20170612005010 20170515005010 42393 nlnetlabs.nl. NhEDrHkuIgHkjWhDRVsGOIJWZpSs+QdduilWFe5d+/ZhOheLJbaTYD5w6+ZZ3yPh1tNud+jlg+GyiOSVapLEO31swDCIarL1UfRjRSpxxDCHGag5Zu+S4hF+KURxO3cJk8jLBELMQyRuMRHoKrw/wsiLGVu1YpAyAPPMcjFBNbk= +www.example.com. 3600 IN A 1.2.3.5 +yyy.example.com. 3600 IN A 1.2.3.4 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_ixfrisaxfr.rpl b/external/unbound/testdata/auth_xfr_ixfrisaxfr.rpl new file mode 100644 index 0000000..cde392b --- /dev/null +++ b/external/unbound/testdata/auth_xfr_ixfrisaxfr.rpl @@ -0,0 +1,236 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.6 +mail.example.com. 3600 IN A 1.2.3.7 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with IXFR reply really is an AXFR + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN NS ns.example.net. +www.example.com. IN A 1.2.3.6 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 2 TIME_PASSES ELAPSE 1 + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 3600 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.6 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.6 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_ixfrmismatch.rpl b/external/unbound/testdata/auth_xfr_ixfrmismatch.rpl new file mode 100644 index 0000000..b1d71b4 --- /dev/null +++ b/external/unbound/testdata/auth_xfr_ixfrmismatch.rpl @@ -0,0 +1,267 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.6 +mail.example.com. 3600 IN A 1.2.3.7 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with IXFR that has mismatched data + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +www.example.com. IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.6 +; this is the delete of the nonexistant entry +nonexist.example.com. 3600 IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.8 +mail.example.com. IN AAAA ::5 +add2.example.com. 3600 IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN NS ns.example.net. +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.6 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 2 TIME_PASSES ELAPSE 1 + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 3600 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.6 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.6 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_ixfrnotimpl.rpl b/external/unbound/testdata/auth_xfr_ixfrnotimpl.rpl new file mode 100644 index 0000000..39b1b3e --- /dev/null +++ b/external/unbound/testdata/auth_xfr_ixfrnotimpl.rpl @@ -0,0 +1,250 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.4 +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN A 1.2.3.6 +mail.example.com. 3600 IN A 1.2.3.7 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with IXFR NOTIMPL fallback + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOTIMPL +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN NS ns.example.net. +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.6 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 2 TIME_PASSES ELAPSE 1 + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 3600 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.6 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.6 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_notify.rpl b/external/unbound/testdata/auth_xfr_notify.rpl new file mode 100644 index 0000000..3603a22 --- /dev/null +++ b/external/unbound/testdata/auth_xfr_notify.rpl @@ -0,0 +1,262 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + allow-notify: 127.0.0.1 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with a NOTIFY + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOTIMPL +SECTION QUESTION +example.com. IN IXFR +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. IN NS ns.example.net. +EXTRA_PACKET +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +example.com. IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +ENTRY_END +RANGE_END + +; lookups for notify hostnames. +STEP 1 TIME_PASSES ELAPSED 0 + +; now the query +STEP 2 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +; NOTIFY example.com +STEP 30 QUERY +ENTRY_BEGIN +REPLY NOTIFY +SECTION QUESTION +example.com. IN SOA +ENTRY_END +; notify reply +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA NOTIFY NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +ENTRY_END + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 2 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_xfr_probesoa.rpl b/external/unbound/testdata/auth_xfr_probesoa.rpl new file mode 100644 index 0000000..865ac87 --- /dev/null +++ b/external/unbound/testdata/auth_xfr_probesoa.rpl @@ -0,0 +1,219 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with probe of SOA + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 3600 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. 3600 IN NS ns.example.net. +www.example.com. 3600 IN A 1.2.3.4 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile.rpl b/external/unbound/testdata/auth_zonefile.rpl new file mode 100644 index 0000000..23c4efc --- /dev/null +++ b/external/unbound/testdata/auth_zonefile.rpl @@ -0,0 +1,189 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +$ORIGIN com. +example 3600 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +$ORIGIN example.com. +www 3600 IN A 1.2.3.4 +mail 3600 IN A 1.2.3.5 + 3600 IN AAAA ::5 +ns1 3600 IN A 1.2.3.4 +ns2 3600 IN AAAA ::2 +$INCLUDE_TEMPFILE example.inc +TEMPFILE_END +TEMPFILE_CONTENTS example.inc +other 7200 IN A 1.2.3.6 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile_dnssec.rpl b/external/unbound/testdata/auth_zonefile_dnssec.rpl new file mode 100644 index 0000000..eb264ee --- /dev/null +++ b/external/unbound/testdata/auth_zonefile_dnssec.rpl @@ -0,0 +1,194 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +$ORIGIN example.com. +example 3600 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} + +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile and dnssec +; the zone file has signatures, used upstream, unbound validates the reply. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD DO RA AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile_dnssec_fail.rpl b/external/unbound/testdata/auth_zonefile_dnssec_fail.rpl new file mode 100644 index 0000000..49da199 --- /dev/null +++ b/external/unbound/testdata/auth_zonefile_dnssec_fail.rpl @@ -0,0 +1,202 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + fallback-enabled: yes + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +$ORIGIN example.com. +example 3600 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} + +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + +; this RR is edited to create the failure +;www.example.com. IN A 10.20.30.40 +www.example.com. IN A 127.0.0.1 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile and dnssec failure +; the zone file has signatures, used upstream, unbound validates the reply. +; but that fails and now it tries again, with failover to internet hosted +; (correct) contents. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD DO RA AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile_down.rpl b/external/unbound/testdata/auth_zonefile_down.rpl new file mode 100644 index 0000000..09e7fd0 --- /dev/null +++ b/external/unbound/testdata/auth_zonefile_down.rpl @@ -0,0 +1,185 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: yes + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: no + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +$ORIGIN com. +example 3600 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +$ORIGIN example.com. +www 3600 IN A 1.2.3.4 +mail 3600 IN A 1.2.3.5 + 3600 IN AAAA ::5 +ns1 3600 IN A 1.2.3.4 +ns2 3600 IN AAAA ::2 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile for downstream responses + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile_noup.rpl b/external/unbound/testdata/auth_zonefile_noup.rpl new file mode 100644 index 0000000..da0dd76 --- /dev/null +++ b/external/unbound/testdata/auth_zonefile_noup.rpl @@ -0,0 +1,184 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: no + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +$ORIGIN com. +example 3600 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +$ORIGIN example.com. +www 3600 IN A 1.2.3.4 +ns1 3600 IN A 1.2.3.4 +ns2 3600 IN AAAA ::2 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile with no upstream enabled +; and therefore fallback is going to be used. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/auth_zonefile_root.rpl b/external/unbound/testdata/auth_zonefile_root.rpl new file mode 100644 index 0000000..9755f91 --- /dev/null +++ b/external/unbound/testdata/auth_zonefile_root.rpl @@ -0,0 +1,181 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + fallback-enabled: yes + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME root.zone + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS root.zone +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018013100 1800 900 604800 86400 +. 518400 IN NS k.root-servers.net. +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +com. IN NS a.gtld-servers.net. +a.gtld-servers.net. IN A 192.5.6.30 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with zonefile for root referrals + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +; disable this referral for the test, we want to use the builtin copy of the zone +; a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_10key.rpl b/external/unbound/testdata/autotrust_10key.rpl new file mode 100644 index 0000000..22cd536 --- /dev/null +++ b/external/unbound/testdata/autotrust_10key.rpl @@ -0,0 +1,146 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 09:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with 10 keys +; spec says you must be able to handle at least 5 keys per trust point + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 3600 IN DNSKEY 257 3 5 AwEAAaxpsO70/oPdKhulQXVbkLX5V6lyzF7G0gtz0nReLlBmfEk6zQ3WSW8VZ8kdZUCOLQwJl+5nWNfRvFxnqUGwjT8= ;{id = 11146 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbXPzz66rviAvNKgPV5JNdkOZv9olQwNDFWnxy7p/RtObOL35ahwpamQGL5A5uPOvn1OghQyqiytTFFP8ZM/5Rc= ;{id = 11446 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdSj6e3XGnFwRNgw6Aifi4Q7SyRIdQ25XVsiWP/N9m7evkN+y6rlnaMP1ELRkhpiwK0bbNTP3DsGXtSMbR/4uzU= ;{id = 20314 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAa8er29rQIzO6+o3D4S8HsTTICTHHzDTeVbY/2kLdR0wwRy2PL8qvgxTX1YZXxEjrGHBhY5jD+aF9y9G3Ztfns8= ;{id = 22402 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAZ25ylUZoX11EeM7aPqJOprcnGFiXgI7P407NMiBVd8Wz5J1aaUuPabfu4f15oLp4/6czzn3iuJp4UJU4ZTjFrc= ;{id = 27586 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbZxgKqPMoc8E7BqdrT84U7ux57LHMXQJnAogNcobTvC9+e3aeL5YdFSqgf6Em7ICISMzS+Sd0wJqgRoL0ZDhzk= ;{id = 29146 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbpIKlHvo1Ev4La/eEPoqThtFA8+vLxcjUQaowkkR/Xvvt6fd6iM3vSH6RsyvNgbj5C+HBjkciSeW4KthUuIDUk= ;{id = 51673 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdzRZ1JnXuspXF03PH6p97f6Xq8JkbZiOZYTCcfBiSFuyq6046Yqhbo3UNpPxMlB0JY52Ffj3gohTZAuClVoIZ8= ;{id = 55999 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAeu99txoU5i2Z4BVatCVi9PTj93oOPft8ZB9ovcjfzRZLpfc/woges07k5Ru+H44qSRxjtDKDqtf4QSo3RkkGLk= ;{id = 56782 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAd9vx7tR9cd9MMDh0gL/qHNTG4ykehjT3UzIIEtAi3Z4DI3/FFw9U/GjpYcqVC6hx2Yo1lbc4tVIa/uA0mbU7uE= ;{id = 58687 (ksk), size = 512b} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdz+Xe5qS3BRnw1hBy2wL2wi0o3Nh94lDxtDtfOsmyJ0WD/25Ova9Pb27Yzh5XW/baENkI+xGJTFsljbi9bdSd0= ;{id = 63067 (ksk), size = 512b} + +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20091124111500 20091018111500 55582 example.com. baTsvlgA0tIVAts9myEBGKP/A7PvPshZfESq/dueRhPGVRwNYEoQACjkqYsIquzOs4sBec9xVH15CXIH+okXYA== ;{id = 55582} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +RANGE_END + +; set date/time to Mon Nov 23 09:46:40 2009 +STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 5400} +STEP 9 ASSIGN tp = ${1258962400} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 3600 +;;retry_time: 3600 +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdz+Xe5qS3BRnw1hBy2wL2wi0o3Nh94lDxtDtfOsmyJ0WD/25Ova9Pb27Yzh5XW/baENkI+xGJTFsljbi9bdSd0= ;{id = 63067 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAd9vx7tR9cd9MMDh0gL/qHNTG4ykehjT3UzIIEtAi3Z4DI3/FFw9U/GjpYcqVC6hx2Yo1lbc4tVIa/uA0mbU7uE= ;{id = 58687 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAeu99txoU5i2Z4BVatCVi9PTj93oOPft8ZB9ovcjfzRZLpfc/woges07k5Ru+H44qSRxjtDKDqtf4QSo3RkkGLk= ;{id = 56782 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdzRZ1JnXuspXF03PH6p97f6Xq8JkbZiOZYTCcfBiSFuyq6046Yqhbo3UNpPxMlB0JY52Ffj3gohTZAuClVoIZ8= ;{id = 55999 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbpIKlHvo1Ev4La/eEPoqThtFA8+vLxcjUQaowkkR/Xvvt6fd6iM3vSH6RsyvNgbj5C+HBjkciSeW4KthUuIDUk= ;{id = 51673 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbZxgKqPMoc8E7BqdrT84U7ux57LHMXQJnAogNcobTvC9+e3aeL5YdFSqgf6Em7ICISMzS+Sd0wJqgRoL0ZDhzk= ;{id = 29146 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAZ25ylUZoX11EeM7aPqJOprcnGFiXgI7P407NMiBVd8Wz5J1aaUuPabfu4f15oLp4/6czzn3iuJp4UJU4ZTjFrc= ;{id = 27586 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAa8er29rQIzO6+o3D4S8HsTTICTHHzDTeVbY/2kLdR0wwRy2PL8qvgxTX1YZXxEjrGHBhY5jD+aF9y9G3Ztfns8= ;{id = 22402 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAdSj6e3XGnFwRNgw6Aifi4Q7SyRIdQ25XVsiWP/N9m7evkN+y6rlnaMP1ELRkhpiwK0bbNTP3DsGXtSMbR/4uzU= ;{id = 20314 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAbXPzz66rviAvNKgPV5JNdkOZv9olQwNDFWnxy7p/RtObOL35ahwpamQGL5A5uPOvn1OghQyqiytTFFP8ZM/5Rc= ;{id = 11446 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 3600 IN DNSKEY 257 3 5 AwEAAaxpsO70/oPdKhulQXVbkLX5V6lyzF7G0gtz0nReLlBmfEk6zQ3WSW8VZ8kdZUCOLQwJl+5nWNfRvFxnqUGwjT8= ;{id = 11146 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_2exceed.rpl b/external/unbound/testdata/autotrust_addpend_2exceed.rpl new file mode 100644 index 0000000..ed26030 --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_2exceed.rpl @@ -0,0 +1,306 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with ADDPEND twice and exceeded time +; should work even though not signed with old key at latest time. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. YHX8pWL0LsJ4HGuEgu/9cFbC+pQnN3QWA50p+Q6ukY+fTALxiBFlaLUXzNqMqxl7CoYU3Ty2LVd8acEoGLwy/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. CZUdTyi3yebXMoyhMsna153k+WIiOk3jDPv8ixgwnw4u+ys/EB2UeQF0Laf1nDVziPhsQgu7/DYZQwfpvvpmmQ== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 60946 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. qLKZUJEi3ajSJ4/b7xl0BwhzW6JtjsojpZ+2nUx1PvaeQVoTmyWxjxc2tAmJGcBPqMqzeY470xvyMDvGTOiQCQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. EW2YB+2yNX9LTNDPVwkcGnRTTx38pOiwBaixdwxmDgqWKXLDLM6Kd2Xv9tveS39RnSZ5H1inRXE55q+rL6Re3g== ;{id = 55710} +; wrong keytag: +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. nH/6HauVJI4GGz78UoK/38cOOrEqsYZP0jFzfCC3OyIlclVTjAFvjVPlVMGK7sA5Nw1v20YtFTQkXZgbrRuInQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. xKSBZr4vOsEUKlVoNb6SOV69DM7xFOJI4gPFKq5Tv4APIMJ/9G3odoDmNcLCVyYGzhoDik5hciJnZio6UHgzAA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; t3 is removed third poll time. + +; 21 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${21*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_early.rpl b/external/unbound/testdata/autotrust_addpend_early.rpl new file mode 100644 index 0000000..51eff31 --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_early.rpl @@ -0,0 +1,242 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with ADDPEND used too early +; this should not work, as the holdown has not expired yet. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. nDlOZCE24pNtuoYkmmy9cVvtCn7ykdmlhJX9hYcI9b3DzqJjOrGz3GD5RQvti3uxD74gFcFho0g76NwOKFx/qQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. qBHDZu0XQmr6kpt51r1DxT5tuyfwSHcoL8qLpwwhyyNFF13OPlvxgmCVl+1v27A9+h8tcuqaNls5f+tcFBwtRg== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; t3 is removed third poll time. + +; only 10 days later: hold down has not lapsed! (need 21 days). +STEP 41 TIME_PASSES EVAL ${10*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +; must fail! +STEP 44 ASSIGN probe4 = ${range 3200 ${timeout} 3600} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_nosign.rpl b/external/unbound/testdata/autotrust_addpend_nosign.rpl new file mode 100644 index 0000000..be1b49b --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_nosign.rpl @@ -0,0 +1,224 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust ADDPEND state cannot sign + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 20 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END + +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 21 50 + ADDRESS 1.2.3.4 +; badly signed DNSKEY probe only signed with ADDPEND key +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} + +; probe must be a failed probe! no larger than 3600 +STEP 24 ASSIGN probe2 = ${range 3200 ${timeout} 3600} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_nosignnew.rpl b/external/unbound/testdata/autotrust_addpend_nosignnew.rpl new file mode 100644 index 0000000..c390fb6 --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_nosignnew.rpl @@ -0,0 +1,225 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust ADDPEND state cannot add new key + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 20 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END + +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 21 50 + ADDRESS 1.2.3.4 +; badly signed DNSKEY probe only signed with ADDPEND key +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; new KSK +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. JDeT7Z5zP9iw3RDFT4Yo+UMHo7qDNr3KjwIopAr+T3OyVGvoOWkDV+nqHIj3UNNzrjzWvoLpZaUrZuhaqily7w== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. rOxbAROwiW21OR8HjINk3IBs9bsxJKjipQ5EU4wWutiF/jr6KNT6LgtZv0TaFSiBHN/Jqz1wB2ODD2HXwLQ4DQ== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} + +; probe must be a failed probe! no larger than 3600 +STEP 24 ASSIGN probe2 = ${range 3200 ${timeout} 3600} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_once.rpl b/external/unbound/testdata/autotrust_addpend_once.rpl new file mode 100644 index 0000000..1fb8bf1 --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_once.rpl @@ -0,0 +1,278 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with ADDPEND seen once +; this should fail. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 60946 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. qLKZUJEi3ajSJ4/b7xl0BwhzW6JtjsojpZ+2nUx1PvaeQVoTmyWxjxc2tAmJGcBPqMqzeY470xvyMDvGTOiQCQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. EW2YB+2yNX9LTNDPVwkcGnRTTx38pOiwBaixdwxmDgqWKXLDLM6Kd2Xv9tveS39RnSZ5H1inRXE55q+rL6Re3g== ;{id = 55710} +; wrong keytag: +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. nH/6HauVJI4GGz78UoK/38cOOrEqsYZP0jFzfCC3OyIlclVTjAFvjVPlVMGK7sA5Nw1v20YtFTQkXZgbrRuInQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. xKSBZr4vOsEUKlVoNb6SOV69DM7xFOJI4gPFKq5Tv4APIMJ/9G3odoDmNcLCVyYGzhoDik5hciJnZio6UHgzAA== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; t2 is removed second poll time. +; t3 is removed third poll time. + +; 31 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${31*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +; it fails! ADDPEND not valid for signing this answer. +STEP 44 ASSIGN probe4 = ${range 3200 ${timeout} 3600} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_addpend_twice.rpl b/external/unbound/testdata/autotrust_addpend_twice.rpl new file mode 100644 index 0000000..c514503 --- /dev/null +++ b/external/unbound/testdata/autotrust_addpend_twice.rpl @@ -0,0 +1,309 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with ADDPEND seen twice +; this should work. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 60946 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. qLKZUJEi3ajSJ4/b7xl0BwhzW6JtjsojpZ+2nUx1PvaeQVoTmyWxjxc2tAmJGcBPqMqzeY470xvyMDvGTOiQCQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. EW2YB+2yNX9LTNDPVwkcGnRTTx38pOiwBaixdwxmDgqWKXLDLM6Kd2Xv9tveS39RnSZ5H1inRXE55q+rL6Re3g== ;{id = 55710} +; wrong keytag: +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. nH/6HauVJI4GGz78UoK/38cOOrEqsYZP0jFzfCC3OyIlclVTjAFvjVPlVMGK7sA5Nw1v20YtFTQkXZgbrRuInQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. xKSBZr4vOsEUKlVoNb6SOV69DM7xFOJI4gPFKq5Tv4APIMJ/9G3odoDmNcLCVyYGzhoDik5hciJnZio6UHgzAA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; t3 is removed third poll time. + +; 21 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${21*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init.rpl b/external/unbound/testdata/autotrust_init.rpl new file mode 100644 index 0000000..c6bde72 --- /dev/null +++ b/external/unbound/testdata/autotrust_init.rpl @@ -0,0 +1,183 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with initial trust anchor + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +; get probe time and check it. 4800 is about 10% less than 5400. And more than +; the 3600 that a failure timeout would have. +STEP 7 ASSIGN probe = ${range 4800 ${timeout} 5400} + + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 4800 ${timeout} 5400} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${time} ;;${ctime ${time}} +;;last_success: ${time} ;;${ctime ${time}} +;;next_probe_time: ${$t0 + $probe + $probe2} ;;${ctime $t0 + $probe + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_ds.rpl b/external/unbound/testdata/autotrust_init_ds.rpl new file mode 100644 index 0000000..37a168a --- /dev/null +++ b/external/unbound/testdata/autotrust_init_ds.rpl @@ -0,0 +1,182 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DS > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DS 55582 5 1 66e829ebd8145e6f030b840ae63b77273c9575e1 ; xiniv-mopov-rakoc-galuk-zibeb-ricob-penuf-rutad-lyzan-hetuv-caxox +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with initial trust anchor from DS + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +; get probe time and check it. 4800 is about 10% less than 5400. And more than +; the 3600 that a failure timeout would have. +STEP 7 ASSIGN probe = ${range 4800 ${timeout} 5400} + + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 4800 ${timeout} 5400} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${time} ;;${ctime ${time}} +;;last_success: ${time} ;;${ctime ${time}} +;;next_probe_time: ${$t0 + $probe + $probe2} ;;${ctime $t0 + $probe + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_fail.rpl b/external/unbound/testdata/autotrust_init_fail.rpl new file mode 100644 index 0000000..497dfcf --- /dev/null +++ b/external/unbound/testdata/autotrust_init_fail.rpl @@ -0,0 +1,181 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with failed initial trust anchor + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ns.example.com. IN NSEC nugget.example.com. A NSEC RRSIG +ns.example.com. 3600 IN RRSIG NSEC 5 3 3600 20090924111500 20090821111500 30899 example.com. WRUQ5d5aBO5AXbvnfCd0AWfKGvQIuAjT2qydGkUIaLZaiP4nj+JdquEy1nGvBwYQ9gWyP7b6C6UGrUnVcNBpcw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +STEP 7 ASSIGN probe = ${range 3200 ${timeout} 3600} + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 3200 ${timeout} 3600} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_failsig.rpl b/external/unbound/testdata/autotrust_init_failsig.rpl new file mode 100644 index 0000000..2bf5014 --- /dev/null +++ b/external/unbound/testdata/autotrust_init_failsig.rpl @@ -0,0 +1,169 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with failed signature initial trust anchor + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ns.example.com. IN NSEC nugget.example.com. A NSEC RRSIG +ns.example.com. 3600 IN RRSIG NSEC 5 3 3600 20090924111500 20090821111500 30899 example.com. WRUQ5d5aBO5AXbvnfCd0AWfKGvQIuAjT2qydGkUIaLZaiP4nj+JdquEy1nGvBwYQ9gWyP7b6C6UGrUnVcNBpcw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +; changed the date in signatures from 20090924111500 20090821111500 +; to make them fail. +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090101010000 20090101010000 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090101010000 20090101010000 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +STEP 7 ASSIGN probe = ${range 3200 ${timeout} 3600} + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 3200 ${timeout} 3600} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_legacy.rpl b/external/unbound/testdata/autotrust_init_legacy.rpl new file mode 100644 index 0000000..e4fd667 --- /dev/null +++ b/external/unbound/testdata/autotrust_init_legacy.rpl @@ -0,0 +1,86 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +bg. 3600 IN DNSKEY 257 3 5 AwEAAdSkAKz985k77l1wsGJJb0ITOjJnYNW7viMGMu6gxn+k94g+JBnVK3ic6vgtpgApKZXLPF/1IYtBxc6Xd+EtrJ9QMhCOhDK5enHYwmWoo/P4zSu1RIDDsi2xge7HQt3rzGiZB6L3CWm1gmLIYoYUKmpq2QttVtTcziEmP+MbO/WVvJsQYDMFb/eszILyPRB76kSmSz56k+lHl6BWwv4LUchKWNf8s0pJsI357FVqdXaqjES6PqbNeymPW6rvMRSRFFp7KGLrizPJjsMfBIvyXkya5Gx4Y81wPqoRbW74efgD5bXsPCwitI/WayJ5h99VL8VtH4Ed0/b7F/H0CqFUohAipZkwLyimagxcWPem0WvGRXy/o/XHr/n1aG9D4SVUrGFQZsUk+PztJdYhLw2zNTgmIW+/RGUzowyhkmqD4CC+cn7BgXJTAig3REQ6GSfmEbQk8mDwhmIKw/GOLNiUL9EIGmZintg/zdzU4fb8Wn+4oBtOBFmzrw1uWEgDtsmLpVZcJPnvrIOE+lVnist1b4mTz7OSFApcOquwpTaMxsaSu9cufbN0jpBzslhSwaUyWXNruxAypuIlOXWt6yPAJ+u6pZ7db7APj5XY5Pff16/zWTfC2xI5OpFsn2vuEsi816lknDwfi6vYihx10VBwlcfUus0cuZ+SxUGj9fHq3+TX ;{id = 64693 (ksk), size = 4096b} ;;state=2 ;;count=0 ;;lastchange=1253688984 ;;Wed Sep 23 06:56:24 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust in unbound with legacy autotrust file + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +bg. IN NS +SECTION AUTHORITY +bg. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +bg. IN DNSKEY +SECTION ANSWER +bg. 3600 IN DNSKEY 257 3 5 AwEAAdSkAKz985k77l1wsGJJb0ITOjJnYNW7viMGMu6gxn+k94g+JBnV K3ic6vgtpgApKZXLPF/1IYtBxc6Xd+EtrJ9QMhCOhDK5enHYwmWoo/P4 zSu1RIDDsi2xge7HQt3rzGiZB6L3CWm1gmLIYoYUKmpq2QttVtTcziEm P+MbO/WVvJsQYDMFb/eszILyPRB76kSmSz56k+lHl6BWwv4LUchKWNf8 s0pJsI357FVqdXaqjES6PqbNeymPW6rvMRSRFFp7KGLrizPJjsMfBIvy Xkya5Gx4Y81wPqoRbW74efgD5bXsPCwitI/WayJ5h99VL8VtH4Ed0/b7 F/H0CqFUohAipZkwLyimagxcWPem0WvGRXy/o/XHr/n1aG9D4SVUrGFQ ZsUk+PztJdYhLw2zNTgmIW+/RGUzowyhkmqD4CC+cn7BgXJTAig3REQ6 GSfmEbQk8mDwhmIKw/GOLNiUL9EIGmZintg/zdzU4fb8Wn+4oBtOBFmz rw1uWEgDtsmLpVZcJPnvrIOE+lVnist1b4mTz7OSFApcOquwpTaMxsaS u9cufbN0jpBzslhSwaUyWXNruxAypuIlOXWt6yPAJ+u6pZ7db7APj5XY 5Pff16/zWTfC2xI5OpFsn2vuEsi816lknDwfi6vYihx10VBwlcfUus0c uZ+SxUGj9fHq3+TX +bg. 3600 IN DNSKEY 256 3 5 AwEAAcgZKgxv/GlzYF/7ExO7fd4M23oC4z5vZa9A5kjiHDhK3fWbX7Zb 6i3Do668AVo2OVPJkhLHgueRkvON6G1AuKnNPr/aqYkswHp5RK4+bDz4 MYIgNxTHxVnmR0xY3K63xDinP1MP4bXfo8qoJDgYM25zQg4yZ5etrH+k l/fPK0Tr +bg. 3600 IN DNSKEY 256 3 5 AwEAAduUF9stPDvXkFznyZ/lL1CPJWHhmHqFv7zZHKtpd0YdoRSxJlT/ KtlEX5TFXOwiaodc5VPTPsUmkoIJ8XW+v9ocjzIPbKErSvQ1HsRNxjFR mUgnRGUeD7rlqGqwheEMlXD57IYAm5Vfs4RPp+zyp1PYVwDtamGPmWny 1xdOwiXF +bg. 3600 IN DNSKEY 257 3 5 AwEAAblV90SQjp4rI9ZLQs3pwcvkmlEt0OogfuI5cm4l+b3fHGA3YtVU Tz8j6SzpMQR/psx5KzFzqIJc8YRdLJSFhiBaLxDYPltcjFSie71Ln2U0 +PPn5NHqUzCYTysLtRG0sl8FHmFGEY4OmkevpDZCX9sscDdt0MfiVwoN 23Ni3nHuSrGewgr0RI4nBrcrBWII7oAfhyZ9XKWmlZpRM8aNHA6hijix ZsSzTNYAfr9r+s/lpiDG2ybiju1H6sKhL/jY02UdMTFiLFdRZ6yuOzxw FXWQE/d7cSe5dSCYMU5EmD2Qy0nbGG0YSD9e0iehw01Fr70HfIV9uNXM zqHrrTyajMtlft/z9aUug5qIVxFSczNSRCyJedcJU+9OZUMj90yXQLeG 2soa6QOfAUyYZLs9OgOIKoE0c7hQRIicPM5bK0ycUM3NTcIYUzDV8zZZ Fo0xaM1QEIMdXz4kCfFS6V4lUleufTCDTI0CkTq9g14ia464HFXb4WKD 6eHl0hvnXAviPAqrma0K1iX9efjxiDumyAIJlm/plBL39CMuX/ENyER8 XXqv9aXAAcdlN2EYsbejGJ262SjvGIMzEVoUKd9UqrnSe44w/2+lzL6a WYqFz6njejH6rbzcof2MoEt1QC47G80gZzFk/tn1mMIKKMbQyvMy7+6K HaTKSHnJCXr27klR +bg. 3600 IN RRSIG DNSKEY 5 1 3600 20091023110015 20090923110015 12576 bg. n73VW50NVGhJYvXUjuobebUFYS3NiVkYoZ9oW+lKtbp4AUQHf7HfIxKk aOesl1EeXMI+IcAIyMkmJQDVPBEpf5WhWarGVthAxOXradSSYKI0Nvuf 4cXoig8tM1n2qScNWlEwQTdNxZl5bQND61ZSPWWTpA3bt4iu8lWqXxFB O2g= +bg. 3600 IN RRSIG DNSKEY 5 1 3600 20091023110015 20090923110015 46846 bg. O4eZhJMy+A8aJL63rK04fFeDrn/CLLkuXW+NePdcuyDEaHwX0UwvuNxy V8aGQNtp+YJCfVzc4Qw9lrTCg+qS4o8qDtj4/p27HHtQ4+owLM2gi1pS Ek9/Ct8FabsuBAR+f4/SCVtf75+QT7kfNzJqN1/o6GU8W9/CILGzD52f kHxqpW8k0pPUrZ4r5UkpUiZTFoLe8lkSN30Dlc84dFOH8myuoDbiwH5B GjdrR8xwe5e2+wnsAkzcwN0+7ND1mIGCjebrdnfyCV3eMDzrDu2ZH8Bt swPShC+8VbnGcEmNfGycaIvwFJO89zQ0YBPbfiX07n+2mDIcfvHpq0cD iL0As6rbvEq9tmePkHrggN1DuuxZWInhfmUCOZK62F33rxefJv/VmM5T C45fvAh5RzetMhuRHq6Upxcma1hqlY7hz3PfQTHl0cPNI3ZnJOrfg5pe 04Tlu7KfVdSuhsS71+I8dotokCMdocoft9kPyQxfSln4/eoSPTYa/oaL pUJJfjdTS2XkgVL5zm8aC33273hzz82eLuHNc78x0Gac+QLknNJMwylx OYXn27o53TufSb8fkh4M3IiU53qY6IhCTQqEFwqiANodvQaOV6nrs4+D jRKbdviwxM7Tt2SQ3Z3d64kuD6T23C9FdovSGpRG5SHALcTdd8O9pUyk /mPoNBWKOuw= +bg. 3600 IN RRSIG DNSKEY 5 1 3600 20091023110015 20090923110015 64693 bg. DVh3tlQ6LnQ4HC5G9DFPszU8OmKDKBPIbp4DIKt/TbKWRpbMLfwzBUwR EHr6qkrdwKyUgo59JoDeeb0cXCFooxtIhZMLv2ntlPTPTp+4jEoi/t9P KhqTS2r3Ptbj3wVypdRwi45wChro0XW+ZNmbh/BRSo8eKJVZcor9rj5b soPwfPVvKe+iQ18PWxTXE4FLDv3wQ1/5EpqaAbOjvvCnuOCMUYotjvZt GwDcAx98mPLY42zQfc+EoN9qnlEfsu9zZOVgQQDgvb+yTbyLaP9yRp13 PIf3jQ4IPMAtL9ONGokd1Jl6v0hXIVTlMoF0EGgtcDiE2KZ64hhtY+t9 Z8sraETJxxdTeX/E81+9I3cBL1VVAT9Fe9nzfXd1sP0FKjaVcIzJnsZ4 lBVZE0iDA2ZaMVeaH8z/38eMHIhn+J2ZiMwz/5b/ueHFfiAjFedbSQrR ALOSggmFd2v6uh8X4osM9Gxg8Q3fDhqGjSkEQIc/VdEMQbh2yU0o+X8q 5r13WkEmS0pKJhvPXocpRWdqfKb2QwnswU6pxbuBuwUd1i087YkTSl/R QREOZNgtfw2qpwv6Lm3q5DT5igF0G78OS3L58aSm0nHxQx9WsCE19/pe 66o1hH3Umx1Q/B7Zt4ZD0R9YE1w20qUcb9HmZumt0LJWtIgTrOuW+6SE WgGvpjXrHS8= +ENTRY_END +RANGE_END + +; set date/time to wed sep 23. +STEP 5 TIME_PASSES EVAL ${1253688984 + 7200 + 10800} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 3600} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: bg. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0+$probe0} ;;${ctime $t0+$probe0} +;;query_failed: 0 +;;query_interval: 3600 +;;retry_time: 3600 +bg. 3600 IN DNSKEY 257 3 5 AwEAAblV90SQjp4rI9ZLQs3pwcvkmlEt0OogfuI5cm4l+b3fHGA3YtVUTz8j6SzpMQR/psx5KzFzqIJc8YRdLJSFhiBaLxDYPltcjFSie71Ln2U0+PPn5NHqUzCYTysLtRG0sl8FHmFGEY4OmkevpDZCX9sscDdt0MfiVwoN23Ni3nHuSrGewgr0RI4nBrcrBWII7oAfhyZ9XKWmlZpRM8aNHA6hijixZsSzTNYAfr9r+s/lpiDG2ybiju1H6sKhL/jY02UdMTFiLFdRZ6yuOzxwFXWQE/d7cSe5dSCYMU5EmD2Qy0nbGG0YSD9e0iehw01Fr70HfIV9uNXMzqHrrTyajMtlft/z9aUug5qIVxFSczNSRCyJedcJU+9OZUMj90yXQLeG2soa6QOfAUyYZLs9OgOIKoE0c7hQRIicPM5bK0ycUM3NTcIYUzDV8zZZFo0xaM1QEIMdXz4kCfFS6V4lUleufTCDTI0CkTq9g14ia464HFXb4WKD6eHl0hvnXAviPAqrma0K1iX9efjxiDumyAIJlm/plBL39CMuX/ENyER8XXqv9aXAAcdlN2EYsbejGJ262SjvGIMzEVoUKd9UqrnSe44w/2+lzL6aWYqFz6njejH6rbzcof2MoEt1QC47G80gZzFk/tn1mMIKKMbQyvMy7+6KHaTKSHnJCXr27klR ;{id = 46846 (ksk), size = 4096b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t0} ;;${ctime $t0} +bg. 3600 IN DNSKEY 257 3 5 AwEAAdSkAKz985k77l1wsGJJb0ITOjJnYNW7viMGMu6gxn+k94g+JBnVK3ic6vgtpgApKZXLPF/1IYtBxc6Xd+EtrJ9QMhCOhDK5enHYwmWoo/P4zSu1RIDDsi2xge7HQt3rzGiZB6L3CWm1gmLIYoYUKmpq2QttVtTcziEmP+MbO/WVvJsQYDMFb/eszILyPRB76kSmSz56k+lHl6BWwv4LUchKWNf8s0pJsI357FVqdXaqjES6PqbNeymPW6rvMRSRFFp7KGLrizPJjsMfBIvyXkya5Gx4Y81wPqoRbW74efgD5bXsPCwitI/WayJ5h99VL8VtH4Ed0/b7F/H0CqFUohAipZkwLyimagxcWPem0WvGRXy/o/XHr/n1aG9D4SVUrGFQZsUk+PztJdYhLw2zNTgmIW+/RGUzowyhkmqD4CC+cn7BgXJTAig3REQ6GSfmEbQk8mDwhmIKw/GOLNiUL9EIGmZintg/zdzU4fb8Wn+4oBtOBFmzrw1uWEgDtsmLpVZcJPnvrIOE+lVnist1b4mTz7OSFApcOquwpTaMxsaSu9cufbN0jpBzslhSwaUyWXNruxAypuIlOXWt6yPAJ+u6pZ7db7APj5XY5Pff16/zWTfC2xI5OpFsn2vuEsi816lknDwfi6vYihx10VBwlcfUus0cuZ+SxUGj9fHq3+TX ;{id = 64693 (ksk), size = 4096b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1253688984 ;;Wed Sep 23 06:56:24 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_sigs.rpl b/external/unbound/testdata/autotrust_init_sigs.rpl new file mode 100644 index 0000000..fe5eeb0 --- /dev/null +++ b/external/unbound/testdata/autotrust_init_sigs.rpl @@ -0,0 +1,185 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20070926134150 20070829134150 55582 example.com. sT5Se0rwBm0oAOcrX37oidl3zxK9QwvgAyOH+08Jq3V8KS4iPehBjNqXi9OITLgos4dHU/up4Z1BwgwTNYJIgg== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20070926134150 20070829134150 30899 example.com. DnrdGYsSAjAX1z93FQvPL8eX66uS9ip7A21gPTkvGBDwDoNB8JTNdRlEyWeXlipatbcQoZeG8mo87Wgp9eT/PA== ;{id = 30899} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with initial trust anchor with RRSIGs + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +; get probe time and check it. 4800 is about 10% less than 5400. And more than +; the 3600 that a failure timeout would have. +STEP 7 ASSIGN probe = ${range 4800 ${timeout} 5400} + + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 4800 ${timeout} 5400} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${time} ;;${ctime ${time}} +;;last_success: ${time} ;;${ctime ${time}} +;;next_probe_time: ${$t0 + $probe + $probe2} ;;${ctime $t0 + $probe + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_init_zsk.rpl b/external/unbound/testdata/autotrust_init_zsk.rpl new file mode 100644 index 0000000..b807f8e --- /dev/null +++ b/external/unbound/testdata/autotrust_init_zsk.rpl @@ -0,0 +1,182 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with initial trust anchor ZSK + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} + +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 ASSIGN t0 = ${time} +; get probe time and check it. 4800 is about 10% less than 5400. And more than +; the 3600 that a failure timeout would have. +STEP 7 ASSIGN probe = ${range 4800 ${timeout} 5400} + + +; the auto probing should have been done now. +STEP 8 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +; The autotrust anchor was probed due to the query. + +STEP 30 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;last_success: 1251100000 ;;Mon Aug 24 07:46:40 2009 +;;next_probe_time: ${$t0 + $probe} ;;${ctime $t0 + $probe} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +; wait and see if autotrust probes (the unchanged) domain again. +STEP 40 TIME_PASSES EVAL ${$probe} + +STEP 50 TRAFFIC + +STEP 65 ASSIGN probe2 = ${range 4800 ${timeout} 5400} + +STEP 70 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${time} ;;${ctime ${time}} +;;last_success: ${time} ;;${ctime ${time}} +;;next_probe_time: ${$t0 + $probe + $probe2} ;;${ctime $t0 + $probe + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1251100000 ;;Mon Aug 24 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_missing.rpl b/external/unbound/testdata/autotrust_missing.rpl new file mode 100644 index 0000000..0759a8c --- /dev/null +++ b/external/unbound/testdata/autotrust_missing.rpl @@ -0,0 +1,320 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with missing key + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 , 55582 is missing +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. ddH76HLQaMMN8O8BWuI9LxFzFOH0iVpdOJg2anl6xvNAnZH0Xtdi/KedsNolEx0EOHFrGrU7dH8w7Ag6sMDUpA== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. fRitjw2TEF+5i17ksiKZNBOGbYiqKKCUXywafBwfcOLiEKr8dapSPQLJst09FjEooRqc3Ii1YbBaL7pbdqfqOw== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_missing_all.rpl b/external/unbound/testdata/autotrust_missing_all.rpl new file mode 100644 index 0000000..e599280 --- /dev/null +++ b/external/unbound/testdata/autotrust_missing_all.rpl @@ -0,0 +1,318 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with all keys missing + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 missing , 55582 is missing +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. wzXQvn/XBgdkUn0HFl/mzaxZ30k8R9126hCio+gH5MgaFhWIdp8ob0TWRDA5yzrQCKzkyUqqcx+6fUWVOZOtXg== ;{id = 30899} +; includes a signature from 60946. +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. rn/rE/xoqKRbTz1tGUjTESB5e4UrFT5liigwrUi5a6nxn9juhAa+o1VbMXi1zXCAnZwHRE+tGZc8v44zjeioIw== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. ukRqyDSzKwQ6tI59ThkPDOcO+F6JFwfHMcRKq4N+ZM5pGc/aVZaFyF9M8dyF/tfwst1kVwF+r7eQuJuZuFm0Fg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. G8wabxIoGwpFPycOuOfBk6+l2/E/t3DhKlzUGBZjMY7gE+tOLCZnibZrhLd+2j07hoISlJ88fosjOdpD8Sqsqw== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, no keys are removed because there are no valid keys +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_missing_returns.rpl b/external/unbound/testdata/autotrust_missing_returns.rpl new file mode 100644 index 0000000..dd6c025 --- /dev/null +++ b/external/unbound/testdata/autotrust_missing_returns.rpl @@ -0,0 +1,319 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with missing key that returns + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 missing , 55582 is missing +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. wzXQvn/XBgdkUn0HFl/mzaxZ30k8R9126hCio+gH5MgaFhWIdp8ob0TWRDA5yzrQCKzkyUqqcx+6fUWVOZOtXg== ;{id = 30899} +; includes a signature from 60946. +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. rn/rE/xoqKRbTz1tGUjTESB5e4UrFT5liigwrUi5a6nxn9juhAa+o1VbMXi1zXCAnZwHRE+tGZc8v44zjeioIw== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=3 [ MISSING ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t6} ;;${ctime $t6} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_probefail.rpl b/external/unbound/testdata/autotrust_probefail.rpl new file mode 100644 index 0000000..d3ac6ae --- /dev/null +++ b/external/unbound/testdata/autotrust_probefail.rpl @@ -0,0 +1,165 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with probe failure + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +; revoked keys +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55710 example.com. zOSlB1iwtlP2lum1RK0WoDQrMVj0JKwk2E5Mu1okzV38hAx3Xm9IGMK6WrNkVVLmx4OkhYmdPVA95jVsFpwLMw== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 16614 example.com. qP49cCYP3lvNnLBYty/JxAwHqBIGjpup5zQ7qpjPnaZpBb/TlpOhY17LBZrqD86VvBbEVz5tkxC9UrCy85ePDQ== ;{id = 16614} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +RANGE_END + +; set date/time to Mon Nov 23 09:46:40 2009 +STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 3600} +STEP 9 ASSIGN tp = ${1258962400} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +FILE_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_probefailsig.rpl b/external/unbound/testdata/autotrust_probefailsig.rpl new file mode 100644 index 0000000..4823005 --- /dev/null +++ b/external/unbound/testdata/autotrust_probefailsig.rpl @@ -0,0 +1,165 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 09:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with probe signature failure + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +; revoked keys +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} +; signatures +; were edited from 20091124111500 20091018111500 to make them fail. +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090101011500 20090101011500 55710 example.com. zOSlB1iwtlP2lum1RK0WoDQrMVj0JKwk2E5Mu1okzV38hAx3Xm9IGMK6WrNkVVLmx4OkhYmdPVA95jVsFpwLMw== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090101011500 20090101011500 16614 example.com. qP49cCYP3lvNnLBYty/JxAwHqBIGjpup5zQ7qpjPnaZpBb/TlpOhY17LBZrqD86VvBbEVz5tkxC9UrCy85ePDQ== ;{id = 16614} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; set date/time to Mon Nov 23 09:46:40 2009 +STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 3600} +STEP 9 ASSIGN tp = ${1258962400} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;next_probe_time: ${$t0+$probe0} ;;${ctime $t0+$probe0} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +FILE_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_revoked_use.rpl b/external/unbound/testdata/autotrust_revoked_use.rpl new file mode 100644 index 0000000..6990b1b --- /dev/null +++ b/external/unbound/testdata/autotrust_revoked_use.rpl @@ -0,0 +1,405 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with use of revoked key + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 60946 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. qLKZUJEi3ajSJ4/b7xl0BwhzW6JtjsojpZ+2nUx1PvaeQVoTmyWxjxc2tAmJGcBPqMqzeY470xvyMDvGTOiQCQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. EW2YB+2yNX9LTNDPVwkcGnRTTx38pOiwBaixdwxmDgqWKXLDLM6Kd2Xv9tveS39RnSZ5H1inRXE55q+rL6Re3g== ;{id = 55710} +; wrong keytag: +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. nH/6HauVJI4GGz78UoK/38cOOrEqsYZP0jFzfCC3OyIlclVTjAFvjVPlVMGK7sA5Nw1v20YtFTQkXZgbrRuInQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. xKSBZr4vOsEUKlVoNb6SOV69DM7xFOJI4gPFKq5Tv4APIMJ/9G3odoDmNcLCVyYGzhoDik5hciJnZio6UHgzAA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 and also KSK 55582 resurrected +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. jTB+ID5gp3U+cxedEPpRvM3tegrBFuVjGR7y9IL+olrtbs5Yr3qeANJwbfO1WVAWiG+EtG876uHny9epo/tlhQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. p6lOsJpkmZUbj1KCSwzxip0NbK0SnjV1LKLayqkWTDiVNkTYHHLHHJfOU8Grb63SDTsZ5lyDocIwJSUBiKuhig== ;{id = 60946} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. NsC5s2quifzA7yQBnbroWHJ9rHfSrBo0V7+c+kZoii2cViOm8636uqcWlaNTqNtD5UI6vzQ5zXF4P8JGoac6ZQ== ;{id = 55582} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 used on its own +; so no signature from a real key, only signatures by REVOKED keys +RANGE_BEGIN 71 80 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. jTB+ID5gp3U+cxedEPpRvM3tegrBFuVjGR7y9IL+olrtbs5Yr3qeANJwbfO1WVAWiG+EtG876uHny9epo/tlhQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. NsC5s2quifzA7yQBnbroWHJ9rHfSrBo0V7+c+kZoii2cViOm8636uqcWlaNTqNtD5UI6vzQ5zXF4P8JGoac6ZQ== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; couple days later: someone is trying to use the revoked key again! +; like an outofdate authority server. +STEP 61 TIME_PASSES EVAL ${10*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t6} ;;${ctime $t6} +FILE_END + +; couple days later: someone is abusing the revoked key! +; like key material used after revocation +STEP 71 TIME_PASSES EVAL ${2*24*3600} +STEP 72 TRAFFIC +STEP 73 ASSIGN t7 = ${time} +STEP 74 ASSIGN probe7 = ${range 3200 ${timeout} 3600} +STEP 75 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t7} ;;${ctime $t7} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t7 + $probe7} ;;${ctime $t7 + $probe7} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t6} ;;${ctime $t6} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_revoked_with_invalid.rpl b/external/unbound/testdata/autotrust_revoked_with_invalid.rpl new file mode 100644 index 0000000..8015c01 --- /dev/null +++ b/external/unbound/testdata/autotrust_revoked_with_invalid.rpl @@ -0,0 +1,130 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 07:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 09:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1256370400 ;;Sat Oct 24 09:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 07:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with revoked key amidst invalid keys + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +; revoked key and an unknown key + +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55710 example.com. nu+W3T0afsJc2MrrsnBZ3adysi39TLUJ0o8GYaR/PFYsYSOigSCnr3xo05aKoNZ2oeQXhmwQVAxfwU1M/jXngQ== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 16486 example.com. LDW5an/v6YzgUhpTm8VJnBCko56WDvzzoqCmjXBwpoGjWXThO2hUyO6w00K90swQvKwgIWsC4y00zFlOgLayJw== ;{id = 16486} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; set date/time to Mon Nov 23 09:46:40 2009 +STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 3600} +STEP 9 ASSIGN tp = ${1258962400} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$tp} ;;${ctime $tp} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 6 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1256370400 ;;Sat Oct 24 07:46:40 2009 +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_revtp.rpl b/external/unbound/testdata/autotrust_revtp.rpl new file mode 100644 index 0000000..4ed113f --- /dev/null +++ b/external/unbound/testdata/autotrust_revtp.rpl @@ -0,0 +1,150 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with trust point revocation + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +; revoked keys + +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55710 example.com. zOSlB1iwtlP2lum1RK0WoDQrMVj0JKwk2E5Mu1okzV38hAx3Xm9IGMK6WrNkVVLmx4OkhYmdPVA95jVsFpwLMw== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 16614 example.com. qP49cCYP3lvNnLBYty/JxAwHqBIGjpup5zQ7qpjPnaZpBb/TlpOhY17LBZrqD86VvBbEVz5tkxC9UrCy85ePDQ== ;{id = 16614} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +RANGE_END + +; set date/time to Mon Nov 23 09:46:40 2009 +STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} +STEP 6 TRAFFIC ; do the probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 0 ${timeout} 0} +STEP 9 ASSIGN tp = ${1258962400} + +; the auto probing should have been done now. +STEP 11 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;REVOKED +; The zone has all keys revoked, and is +; considered as if it has no trust anchors. +; the remainder of the file is the last probe. +; to restart the trust anchor, overwrite this file. +; with one containing valid DNSKEYs or DSes. +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${0} ;;${ctime 0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; correct unsigned response works after trust point revocation. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_revtp_read.rpl b/external/unbound/testdata/autotrust_revtp_read.rpl new file mode 100644 index 0000000..cd48a63 --- /dev/null +++ b/external/unbound/testdata/autotrust_revtp_read.rpl @@ -0,0 +1,110 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + val-override-date: '20091018111500' + fake-sha1: yes +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;REVOKED +; The zone has all keys revoked, and is +; considered as if it has no trust anchors. +; the remainder of the file is the last probe. +; to restart the trust anchor, overwrite this file. +; with one containing valid DNSKEYs or DSes. +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;next_probe_time: ${0} ;;${ctime 0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with revoked trust point read back from config + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +RANGE_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; correct unsigned response works after trust point revocation. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_revtp_use.rpl b/external/unbound/testdata/autotrust_revtp_use.rpl new file mode 100644 index 0000000..b43eb60 --- /dev/null +++ b/external/unbound/testdata/autotrust_revtp_use.rpl @@ -0,0 +1,154 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + log-time-ascii: yes + val-override-date: '20091018111500' + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +AUTOTRUST_FILE example.com +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 +;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with trust point revocation and instant use +; so not a probe that discovers it but a user query. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER + +; revoked keys + +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55710 example.com. zOSlB1iwtlP2lum1RK0WoDQrMVj0JKwk2E5Mu1okzV38hAx3Xm9IGMK6WrNkVVLmx4OkhYmdPVA95jVsFpwLMw== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 16614 example.com. qP49cCYP3lvNnLBYty/JxAwHqBIGjpup5zQ7qpjPnaZpBb/TlpOhY17LBZrqD86VvBbEVz5tkxC9UrCy85ePDQ== ;{id = 16614} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; no AAAA +ENTRY_END +RANGE_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; correct unsigned response works after trust point revocation. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +STEP 37 ASSIGN t0 = ${time} +STEP 41 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;REVOKED +; The zone has all keys revoked, and is +; considered as if it has no trust anchors. +; the remainder of the file is the last probe. +; to restart the trust anchor, overwrite this file. +; with one containing valid DNSKEYs or DSes. +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${0} ;;${ctime 0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_rollalgo.rpl b/external/unbound/testdata/autotrust_rollalgo.rpl new file mode 100644 index 0000000..de9f39c --- /dev/null +++ b/external/unbound/testdata/autotrust_rollalgo.rpl @@ -0,0 +1,316 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with algorithm rollover +; from RSASHA1(5) to DSASHA1(3) +; Note, when both algorithms are present, the zone must be double-signed. +; with a ZSK for RSASHA1(5) and a ZSK for DSASHA1(3). + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and DSAkey 02855 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; and two ZSKs (omitted) for both algorithms. +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. aCZVA+PLXxm15p46499FCPHvhR/MSpMSRTZT6PoUy2e+wdk7bszLdsEmfWym81UN2Xx1JOj5104c43c3QnvjNQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 3 2 10800 20091024111500 20090921111500 2855 example.com. AKdhmjqEbe0STsFNq/UxOidElaWHWCy2hSPQ7oN0Tsq56w6Hsk72PpM= ;{id = 2855} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 02855 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. vpLMiMW+2uxqE1+OpMWipQdyGJ/pOQ63tIhup50WFejPysvlZRZ27XOoB4GVRyCwK9Bv46PrsQf3IsjHZf6jvw== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 3 2 10800 20091124111500 20091018111500 2855 example.com. ABJyZ97htJyBFk5wsKml3YAz81FpXkQKdJeC++fB5ysvl3i+zKJFzTo= ;{id = 2855} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 02855 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 3 2 10800 20091224111500 20091118111500 2855 example.com. AFAbqLJsTDBfwAipE84ETdFTfzKHs7pzdyzjTKHR2VXygGvHY4QsBaA= ;{id = 2855} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. DqR6BRE9G+kEb+ZorUr3yKKUsCF2TN+vrsNBaLfpHR+Vgv0RgeRCkXki+/FY9b4NEhXkg719dlLSASg4DmyV7g== ;{id = 55710} +; wrong keytag: 55582 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 02855 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 3 2 10800 20101224111500 20101118111500 2855 example.com. AJv9ujre3iUykHlhJpLYPqsXq12lmQp+AHUPSPpE5zuUhXAPjbnbewk= ;{id = 2855} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_rollalgo_unknown.rpl b/external/unbound/testdata/autotrust_rollalgo_unknown.rpl new file mode 100644 index 0000000..a50c6a9 --- /dev/null +++ b/external/unbound/testdata/autotrust_rollalgo_unknown.rpl @@ -0,0 +1,325 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with algorithm rollover to unknown algo +; from RSASHA1(5) to 'unknown' (157) +; 157 is really the algocode for HMACMD5, which is not used for DNSSEC. +; the signatures are made with a DSA key (02855) but the algorithm is +; edited (afterwards) to be 157. So the RRSIGs do not verify. + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 02855 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 157 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; and two ZSKs (omitted) for both algorithms. +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. Wp40P+Odx5gh1Zpjwa1YBwwKnqhobPSkv55sEb21vvKpLE2NNt7B6vZqRLg+bBiW0T/vRdo4w+7whKANVuPrtA== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 157 2 10800 20091024111500 20090921111500 2855 example.com. AKdhmjqEbe0STsFNq/UxOidElaWHWCy2hSPQ7oN0Tsq56w6Hsk72PpM= ;{id = 2855} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 02855 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 157 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. FXY4N99Udr/2Q+9oU4Dil9B8XQCBcaU0NlqJ9HnwZoLqzKiPhtxNlldU2Ab5TmuXfnkTT1bTYvsq5Dz6P3ezbw== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 157 2 10800 20091124111500 20091018111500 2855 example.com. ABJyZ97htJyBFk5wsKml3YAz81FpXkQKdJeC++fB5ysvl3i+zKJFzTo= ;{id = 2855} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 02855 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 157 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. w5hXwGyeLHWTzdStx4yjB7LNzt86u9A+Qpl3rtQlTKN/qkWIT+Hxa3M32P6jhFTpf+Iq1K9T06mKM21L3TQAOg== ;{id = 55710} +example.com. 10800 IN RRSIG DNSKEY 157 2 10800 20091224111500 20091118111500 2855 example.com. AFAbqLJsTDBfwAipE84ETdFTfzKHs7pzdyzjTKHR2VXygGvHY4QsBaA= ;{id = 2855} +; wrong keytag: 55582 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 02855 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 157 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2855 (ksk), size = 1688b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 157 2 10800 20101224111500 20101118111500 2855 example.com. AJv9ujre3iUykHlhJpLYPqsXq12lmQp+AHUPSPpE5zuUhXAPjbnbewk= ;{id = 2855} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +; no more timeout +STEP 54 ASSIGN probe5 = ${range 0 ${timeout} 0} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;REVOKED +; The zone has all keys revoked, and is +; considered as if it has no trust anchors. +; the remainder of the file is the last probe. +; to restart the trust anchor, overwrite this file. +; with one containing valid DNSKEYs or DSes. +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: 0 ;;${ctime 0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 0 ${timeout} 0} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;REVOKED +; The zone has all keys revoked, and is +; considered as if it has no trust anchors. +; the remainder of the file is the last probe. +; to restart the trust anchor, overwrite this file. +; with one containing valid DNSKEYs or DSes. +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: 0 ;;${ctime 0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_rollover.rpl b/external/unbound/testdata/autotrust_rollover.rpl new file mode 100644 index 0000000..39f1255 --- /dev/null +++ b/external/unbound/testdata/autotrust_rollover.rpl @@ -0,0 +1,325 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with prepublish rollover + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582-REVOKED and 60946 +RANGE_BEGIN 51 60 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 30899 example.com. qLKZUJEi3ajSJ4/b7xl0BwhzW6JtjsojpZ+2nUx1PvaeQVoTmyWxjxc2tAmJGcBPqMqzeY470xvyMDvGTOiQCQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55710 example.com. EW2YB+2yNX9LTNDPVwkcGnRTTx38pOiwBaixdwxmDgqWKXLDLM6Kd2Xv9tveS39RnSZ5H1inRXE55q+rL6Re3g== ;{id = 55710} +; wrong keytag: +;example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 55582 example.com. nH/6HauVJI4GGz78UoK/38cOOrEqsYZP0jFzfCC3OyIlclVTjAFvjVPlVMGK7sA5Nw1v20YtFTQkXZgbrRuInQ== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091224111500 20091118111500 60946 example.com. xKSBZr4vOsEUKlVoNb6SOV69DM7xFOJI4gPFKq5Tv4APIMJ/9G3odoDmNcLCVyYGzhoDik5hciJnZio6UHgzAA== ;{id = 60946} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 60946 +RANGE_BEGIN 61 70 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 30899 example.com. TfFGz1kDtkn3ixbKMJvQDZ0uGw/eW+inIiPqQVPQtO2WiocKrnYnzwv/AqwnFvEar70dF15/zffNIF+ipOS5/g== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20101224111500 20101118111500 60946 example.com. X0Ci//w0czN/J5RvypHGqp56n1tLdapi92ODAqjM7QpZXbSHaJ7wfPG1PZzvdxHUZUVyf8uy2stjg/XoLGHMWA== ;{id = 60946} +ENTRY_END +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${10*24*3600} +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 4800 ${timeout} 5400} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t3} ;;${ctime $t3} +;;last_success: ${$t3} ;;${ctime $t3} +;;next_probe_time: ${$t3 + $probe3} ;;${ctime $t3 + $probe3} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=3 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 11 days later, hold down has lapsed. +STEP 41 TIME_PASSES EVAL ${11*24*3600} +STEP 42 TRAFFIC +STEP 43 ASSIGN t4 = ${time} +STEP 44 ASSIGN probe4 = ${range 4800 ${timeout} 5400} +STEP 45 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t4} ;;${ctime $t4} +;;last_success: ${$t4} ;;${ctime $t4} +;;next_probe_time: ${$t4 + $probe4} ;;${ctime $t4 + $probe4} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 30 days later, the old key is revoked +STEP 51 TIME_PASSES EVAL ${30*24*3600} +STEP 52 TRAFFIC +STEP 53 ASSIGN t5 = ${time} +STEP 54 ASSIGN probe5 = ${range 4800 ${timeout} 5400} +STEP 55 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t5} ;;${ctime $t5} +;;last_success: ${$t5} ;;${ctime $t5} +;;next_probe_time: ${$t5 + $probe5} ;;${ctime $t5 + $probe5} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} ;;state=4 [ REVOKED ] ;;count=0 ;;lastchange=${$t5} ;;${ctime $t5} +FILE_END + +; 370 days later, the old key is removed from storage +STEP 61 TIME_PASSES EVAL ${370*24*3600} +STEP 62 TRAFFIC +STEP 63 ASSIGN t6 = ${time} +STEP 64 ASSIGN probe6 = ${range 4800 ${timeout} 5400} +STEP 65 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t6} ;;${ctime $t6} +;;last_success: ${$t6} ;;${ctime $t6} +;;next_probe_time: ${$t6 + $probe6} ;;${ctime $t6 + $probe6} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t4} ;;${ctime $t4} +FILE_END + + +SCENARIO_END diff --git a/external/unbound/testdata/autotrust_valid_use.rpl b/external/unbound/testdata/autotrust_valid_use.rpl new file mode 100644 index 0000000..998e94f --- /dev/null +++ b/external/unbound/testdata/autotrust_valid_use.rpl @@ -0,0 +1,312 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + log-time-ascii: yes + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +; initial content (say from dig example.com DNSKEY > example.com.key) +AUTOTRUST_FILE example.com +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +AUTOTRUST_END +CONFIG_END + +SCENARIO_BEGIN Test autotrust with using a valid key for validation + +; K-ROOT +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR AA +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. pYGxVLsWUvOp1wSf0iwPap+JnECfC5GAm1lRqy3YEqecNGld7U7x/5Imo3CerbdZrVptUQs2oH0lcjwYJXMnsw== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 30899 example.com. b/HK231jIQLX8IhlZfup3r0yhpXaasbPE6LzxoEVVvWaTZWcLmeV8jDIcn0qO7Yvs7bIJN20lwVAV0GcHH3hWQ== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20090924111500 20090821111500 55582 example.com. PCHme1QLoULxqjhg5tMlpR0qJlBfstEUVq18TtNoKQe9le1YhJ9caheXcTWoK+boLhXxg9u6Yyvq8FboQh0OjA== ;{id = 55582} +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 +RANGE_BEGIN 11 30 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 55582 example.com. CoMon+lWPAsUvgfpCTDPx8Zn8dQpky3lu2O6T+oJ2Mat9a/u1YwGhSQHGPn7ZNG/4vKM97tx84sSlUGz3geD1w== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091024111500 20090921111500 60946 example.com. o+Cbs7DcYPYlSLd4hi3vkSVQpXGnKgKSi9MpHGfu1Uahv5190U2DUOxP1du/HOYbf+IHYL8zLbMZjVEG5wgnTg== ;{id = 60946} +ENTRY_END +RANGE_END + +; probe failures +RANGE_BEGIN 31 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN DNSKEY +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END +RANGE_END + +; ns.example.com. KSK 55582 and 60946 (signatures updated) +RANGE_BEGIN 41 50 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +; KSK 1 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +; KSK 2 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +; ZSK 1 +example.com. 10800 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; signatures +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 30899 example.com. rkaCUpTFPWVu4Om5oMTR+39Mct6ZMs56xrE0rbxMMOokfvIQheIxsAEc5BFJeA/2y5WTewl6diCD6yQXCybrDg== ;{id = 30899} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55582 example.com. v/HJbdpeVMpbhwYXrT1EDGpAFMvEgdKQII1cAbP6o8KHYNKDh8TIJ25/pXe3daEXfej6/Z5kpqJ79okPKUoi1Q== ;{id = 55582} +example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 60946 example.com. HgXol1hdvbomOM1CFRW8qsHd3D0qOnN72EeMHTcpxIBBiuNLKZn4n1M14Voxj3vo0eAMNuG/y7EjQkxKvSsaDA== ;{id = 60946} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20091124111500 20091018111500 60946 example.com. pI3iwElQXjhje3SnAfwAG/VwdRskQcLdiApbKdUbR7MIsDUpqVjxIUtSIRu/aXNt8EVA8SwZQXNmTYA2SrrBhA== ;{id = 60946} +ENTRY_END + +RANGE_END + +; set date/time to Aug 24 07:46:40 (2009). +STEP 5 TIME_PASSES ELAPSE 1251100000 +STEP 6 TRAFFIC ; the initial probe +STEP 7 ASSIGN t0 = ${time} +STEP 8 ASSIGN probe0 = ${range 4800 ${timeout} 5400} + +; the auto probing should have been done now. +STEP 10 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t0} ;;${ctime $t0} +;;last_success: ${$t0} ;;${ctime $t0} +;;next_probe_time: ${$t0 + $probe0} ;;${ctime $t0 + $probe0} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; key prepublished. First poll. 30 days later +STEP 11 TIME_PASSES EVAL ${30*24*3600} +STEP 12 TRAFFIC +STEP 13 ASSIGN t1 = ${time} +STEP 14 ASSIGN probe1 = ${range 4800 ${timeout} 5400} +STEP 15 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t1} ;;${ctime $t1} +;;last_success: ${$t1} ;;${ctime $t1} +;;next_probe_time: ${$t1 + $probe1} ;;${ctime $t1 + $probe1} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=1 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; Second poll. 10 days later +STEP 21 TIME_PASSES EVAL ${10*24*3600} +STEP 22 TRAFFIC +STEP 23 ASSIGN t2 = ${time} +STEP 24 ASSIGN probe2 = ${range 4800 ${timeout} 5400} +STEP 25 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; put this almost one hour before expiration so that the next query arrives +; before the next poll timer. +; Make this probe fail to keep DNSKEY out of the cache +; Third poll. 10 days later +STEP 31 TIME_PASSES EVAL ${ ${20*24*3600} - 3000 } +STEP 32 TRAFFIC +STEP 33 ASSIGN t3 = ${time} +STEP 34 ASSIGN probe3 = ${range 3200 ${timeout} 3600} +STEP 35 CHECK_AUTOTRUST example.com +FILE_BEGIN +; autotrust trust anchor file +;;id: example.com. 1 +;;last_queried: ${$t2} ;;${ctime $t2} +;;last_success: ${$t2} ;;${ctime $t2} +;;next_probe_time: ${$t2 + $probe2} ;;${ctime $t2 + $probe2} +;;query_failed: 0 +;;query_interval: 5400 +;;retry_time: 3600 +example.com. 10800 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} ;;state=1 [ ADDPEND ] ;;count=2 ;;lastchange=${$t1} ;;${ctime $t1} +example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=${$t0} ;;${ctime $t0} +FILE_END + +; 3010 seconds later, hold down has lapsed. +; but the probe timer does not expire yet! +; key 60946 becomes valid. Use it. +; check this with a data query. +STEP 41 TIME_PASSES EVAL ${3010} +STEP 42 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; Note the data is signed with the newly valid KSK to make sure it can be used. +STEP 43 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20091124111500 20091018111500 60946 example.com. pI3iwElQXjhje3SnAfwAG/VwdRskQcLdiApbKdUbR7MIsDUpqVjxIUtSIRu/aXNt8EVA8SwZQXNmTYA2SrrBhA== ;{id = 60946} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_data.rpl b/external/unbound/testdata/black_data.rpl new file mode 100644 index 0000000..04304d3 --- /dev/null +++ b/external/unbound/testdata/black_data.rpl @@ -0,0 +1,306 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist for data response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; remove pending ns.blabla.com AAAA msg +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO CD +SECTION QUESTION +ns.blabla.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA DO NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_dnskey.rpl b/external/unbound/testdata/black_dnskey.rpl new file mode 100644 index 0000000..52deef1 --- /dev/null +++ b/external/unbound/testdata/black_dnskey.rpl @@ -0,0 +1,509 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist for DNSKEY response +; DNSKEY not for prime but further down the chain of trust +; data response also needs a blacklist action. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. IN A 1.2.4.7 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. g+YoDwrCF75YCFyqYoxlF+/mNfcscnuZ6LfmfBgPLohlvCCC7jYj/wkc2fxAl3MEK0CriWkHp1hw0QQYkmbbKw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. VCDq+gfZHuziE81Uypxm2va4eXCtoD8F8YKkwNo8laMNUcXh/hvGdbHKXMMghwuJXgxLh89Diu5kywBVwb/AIg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. eVe3iQS2/a1Y57AA2QSlMU/z31xaJ2mwUU36PZh8vlv6shPpQywAT70JdX6+ZsuliRpsbY6crkVXTXJ2qpKTiQ== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. vEX2n1CksMr5jPq9d2BQJMIDwxaXdWlY5mYg+PBmOFI4xngFMKTsXa/+SfJy2SiqAgHTDI6joIo30AdQJsjdHA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. dBK6JOkKlp2G+f7mhInKnQM6DUBnEziTS+KpXzQ/5HT8/h9XkryOt4vAJKGCz0Ew3qRqjLgylsbGrcuxmIO9jA== ;{id = 30899} +ENTRY_END + +RANGE_END + +; ns.foo.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + +; remove pending ns.blabla.com AAAA msg +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO CD +SECTION QUESTION +ns.blabla.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA DO NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_ds.rpl b/external/unbound/testdata/black_ds.rpl new file mode 100644 index 0000000..37caeb4 --- /dev/null +++ b/external/unbound/testdata/black_ds.rpl @@ -0,0 +1,419 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist for DS response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + +; remove pending ns.blabla.com AAAA msg +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO CD +SECTION QUESTION +ns.blabla.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA DO NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_ds_entry.rpl b/external/unbound/testdata/black_ds_entry.rpl new file mode 100644 index 0000000..8b4fa9b --- /dev/null +++ b/external/unbound/testdata/black_ds_entry.rpl @@ -0,0 +1,628 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacked key entry for DS and further queries +; a DS record fails. +; the blacklist action does not help. +; the further queries should not generate traffic to the authority any more. +; until the key entry expires. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. IN A 1.2.4.7 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. g+YoDwrCF75YCFyqYoxlF+/mNfcscnuZ6LfmfBgPLohlvCCC7jYj/wkc2fxAl3MEK0CriWkHp1hw0QQYkmbbKw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. VCDq+gfZHuziE81Uypxm2va4eXCtoD8F8YKkwNo8laMNUcXh/hvGdbHKXMMghwuJXgxLh89Diu5kywBVwb/AIg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. eVe3iQS2/a1Y57AA2QSlMU/z31xaJ2mwUU36PZh8vlv6shPpQywAT70JdX6+ZsuliRpsbY6crkVXTXJ2qpKTiQ== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. vEX2n1CksMr5jPq9d2BQJMIDwxaXdWlY5mYg+PBmOFI4xngFMKTsXa/+SfJy2SiqAgHTDI6joIo30AdQJsjdHA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. dBK6JOkKlp2G+f7mhInKnQM6DUBnEziTS+KpXzQ/5HT8/h9XkryOt4vAJKGCz0Ew3qRqjLgylsbGrcuxmIO9jA== ;{id = 30899} +ENTRY_END + +RANGE_END + +; ns.foo.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +; This is for after, so only new queries, no requeries allowed. +RANGE_BEGIN 100 200 + ADDRESS 1.2.4.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ftp.sub.example.com. IN A 10.20.30.46 +ftp.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. nbxk6SiooKsUeVm/ZGskrxKwhOSWdJt9ly9X6Hqji4DKpBskM6bqulmTt/xZ/3G4ZOguYBeiTp8qwlWjl7VoSQ== ;{id = 30899} +ENTRY_END + +RANGE_END + +; ns.example.com. +; fixed version +RANGE_BEGIN 200 300 + ADDRESS 1.2.3.4 +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +; fixed version +RANGE_BEGIN 200 300 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + +; no more outgoing traffic possible. +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ftp.sub.example.com. IN A +ENTRY_END + +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + +; wait for timeout seconds. +STEP 130 TIME_PASSES ELAPSE 901 + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 220 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/black_ent.rpl b/external/unbound/testdata/black_ent.rpl new file mode 100644 index 0000000..1a25666 --- /dev/null +++ b/external/unbound/testdata/black_ent.rpl @@ -0,0 +1,452 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist for ENT response +; 'ENT' Empty Non Terminal +; which needs a valid NSEC(3) proof. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END + +; ENT request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +rub.example.com. IN NSEC sub.sub.example.com. RRSIG NSEC A +rub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. AAUOa/L9F/ZrGfXSov4WRhTTbd8+CsdTJeM4Nk973wcLZ27A4YiIlTs= ;{id = 2854} +; extraneous DS +sub.sub.example.com. IN NSEC tub.example.com. RRSIG NSEC DS +sub.sub.example.com. 3600 IN RRSIG NSEC 3 4 3600 20030926134150 20030829134150 2854 example.com. AJVJEBTIlbnAHF0HR0skEfTVS28hMrbUHzBx5CMfY/NhxZohQtGVcwo= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN DS +SECTION ANSWER +sub.sub.example.com. 3600 IN DS 30899 5 1 dea269e4bccaa019a4ba0cf5b198292f28faeee1 +sub.sub.example.com. 3600 IN RRSIG DS 3 4 3600 20030926134150 20030829134150 2854 example.com. AGQoKQd4UT+e4AMdYdDznxWo9cybYZyRAgC7exEgJ1asYRmmgvJG7Zw= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN NS +SECTION AUTHORITY +sub.sub.example.com. IN NS ns.sub.sub.example.com. +sub.sub.example.com. IN NS ns.foo.com. +sub.sub.example.com. 3600 IN DS 30899 5 1 dea269e4bccaa019a4ba0cf5b198292f28faeee1 +sub.sub.example.com. 3600 IN RRSIG DS 3 4 3600 20030926134150 20030829134150 2854 example.com. AGQoKQd4UT+e4AMdYdDznxWo9cybYZyRAgC7exEgJ1asYRmmgvJG7Zw= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; ENT request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +rub.example.com. IN NSEC sub.sub.example.com. RRSIG NSEC A +rub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AKxt275OlwQmfqO36rTYkPXBqdoyaD3lId4q+UA4+Gs50qfn/RkuIOs= ;{id = 2854} +; extraneous DS +sub.sub.example.com. IN NSEC tub.example.com. RRSIG NSEC DS +sub.sub.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AJlIjBQvBluNTu1883DMH9ZtBVfKTXVEH2LvLV785UcwGELnwRYfZbA= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN DS +SECTION ANSWER +sub.sub.example.com. 3600 IN DS 30899 5 1 dea269e4bccaa019a4ba0cf5b198292f28faeee1 +sub.sub.example.com. 3600 IN RRSIG DS 3 4 3600 20070926134150 20070829134150 2854 example.com. AAPYiFzyEyehaff0hYTyOBFHF6qiCE7I7Zoa7Atn2F+HN2N/g/RloN8= ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN NS +SECTION AUTHORITY +sub.sub.example.com. IN NS ns.sub.sub.example.com. +sub.sub.example.com. IN NS ns.foo.com. +sub.sub.example.com. 3600 IN DS 30899 5 1 dea269e4bccaa019a4ba0cf5b198292f28faeee1 +sub.sub.example.com. 3600 IN RRSIG DS 3 4 3600 20070926134150 20070829134150 2854 example.com. AAPYiFzyEyehaff0hYTyOBFHF6qiCE7I7Zoa7Atn2F+HN2N/g/RloN8= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.sub.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN DNSKEY +SECTION ANSWER +sub.sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.sub.example.com. 3600 IN RRSIG DNSKEY 5 4 3600 20070926134150 20070829134150 30899 sub.sub.example.com. RO6LECPRS3aL6kRp++qbSIdNiJvhvYTJr0fupJMF5lPuTwI5HhAL5mAHjrmc3r0LeFE9iRpjFmdp/p1i0qVWzQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.sub.example.com. IN NS +SECTION ANSWER +sub.sub.example.com. IN NS ns.sub.sub.example.com. +sub.sub.example.com. IN NS ns.foo.com. +sub.sub.example.com. 3600 IN RRSIG NS 5 4 3600 20070926134150 20070829134150 30899 sub.sub.example.com. blhq9ELWjE5YhhLn1UN3K/QTh52w/ZkGv+hI8HbL1a9Av6W67H2jsb1B5iaPbOagKzAIPId9qtcskjCo3DSaHg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.sub.example.com. IN A 1.2.4.6 +ns.sub.sub.example.com. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 30899 sub.sub.example.com. JU2A7WvVR3AB7Ni9Qjfv7sxetc0jIfRgeERj8x+UUWdPiEBEkhUvD+ba6eLu5irMRWCj7CXIM81Mgl58QXCqfg== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.sub.example.com. IN A +SECTION ANSWER +ns.sub.sub.example.com. IN A 1.2.4.6 +ns.sub.sub.example.com. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 30899 sub.sub.example.com. JU2A7WvVR3AB7Ni9Qjfv7sxetc0jIfRgeERj8x+UUWdPiEBEkhUvD+ba6eLu5irMRWCj7CXIM81Mgl58QXCqfg== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.sub.example.com. IN NSEC nt.sub.sub.example.com. NSEC RRSIG A +ns.sub.sub.example.com. 3600 IN RRSIG NSEC 5 5 3600 20070926134150 20070829134150 30899 sub.sub.example.com. zoir16lVMbPOFS81l20ZXyqWlXYvQg99zzfOiH5tzpbqPYHxrnQvsfJgTMR7rZvYG55Qh64Y4J1MSw+U2QAgmw== ;{id = 30899} +sub.sub.example.com. IN SOA sub.sub.example.com. hostmaster.sub.sub.example.com. 1 2 3 4 5 +sub.sub.example.com. 3600 IN RRSIG SOA 5 4 3600 20070926134150 20070829134150 30899 sub.sub.example.com. aAKz5eF2EdRP5HVojabqDkvINeXczBAZyBesjC0+DtMmb7WvaUQzKQfYtBdWhE7CdrnPYuHPg4WlNbn0f7DsCw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.sub.example.com. IN A +SECTION ANSWER +www.sub.sub.example.com. IN A 10.20.30.40 +www.sub.sub.example.com. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 30899 sub.sub.example.com. ZXZoHA8pavJZELucMJpXLWQXNaIYXO4ryXpkp2BVZbW9sdcYCobWPyyzN5nmBatm+CaWLd6fjhwXh+OVVIH1Gg== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.sub.example.com. IN A +SECTION ANSWER +www.sub.sub.example.com. IN A 10.20.30.40 +www.sub.sub.example.com. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 30899 sub.sub.example.com. ZXZoHA8pavJZELucMJpXLWQXNaIYXO4ryXpkp2BVZbW9sdcYCobWPyyzN5nmBatm+CaWLd6fjhwXh+OVVIH1Gg== ;{id = 30899} +ENTRY_END + +; remove pending ns.blabla.com AAAA msg +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO CD +SECTION QUESTION +ns.blabla.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA DO NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_key_entry.rpl b/external/unbound/testdata/black_key_entry.rpl new file mode 100644 index 0000000..4fb3c71 --- /dev/null +++ b/external/unbound/testdata/black_key_entry.rpl @@ -0,0 +1,610 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacked key entry and further queries +; DNSKEY not for prime but further down the chain of trust +; the blacklist action does not help. +; the further queries should not generate traffic to the authority any more. +; until the key entry expires. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. IN A 1.2.4.7 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +; make priming query succeed +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20030926134150 20030829134150 2854 example.com. AAT/7XwtMjHiT1GFHfV6Wvv4n+oOkqxllNdf9bLnpTHw/8h586yBgwg= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; DS request +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AKslZ9oXcoyeOkPfGkTB3/hxnpdgU5ahzElLyK6B0n6+BdIXeirIEtE= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. g+YoDwrCF75YCFyqYoxlF+/mNfcscnuZ6LfmfBgPLohlvCCC7jYj/wkc2fxAl3MEK0CriWkHp1hw0QQYkmbbKw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. VCDq+gfZHuziE81Uypxm2va4eXCtoD8F8YKkwNo8laMNUcXh/hvGdbHKXMMghwuJXgxLh89Diu5kywBVwb/AIg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. l3wjlbDU2y7ECix6t1pp5Rtz+qFlADRMohcRsCrnD9b99IoOL0/cTpvvf2V1VTJveIibFGhbcHTuCqAQ4G4FKA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. eVe3iQS2/a1Y57AA2QSlMU/z31xaJ2mwUU36PZh8vlv6shPpQywAT70JdX6+ZsuliRpsbY6crkVXTXJ2qpKTiQ== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20030926134150 20030829134150 30899 sub.example.com. vEX2n1CksMr5jPq9d2BQJMIDwxaXdWlY5mYg+PBmOFI4xngFMKTsXa/+SfJy2SiqAgHTDI6joIo30AdQJsjdHA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. dBK6JOkKlp2G+f7mhInKnQM6DUBnEziTS+KpXzQ/5HT8/h9XkryOt4vAJKGCz0Ew3qRqjLgylsbGrcuxmIO9jA== ;{id = 30899} +ENTRY_END + +RANGE_END + +; ns.foo.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.4.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +; This is for after, so only new queries, no requeries allowed. +RANGE_BEGIN 100 200 + ADDRESS 1.2.4.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ftp.sub.example.com. IN A 10.20.30.46 +ftp.sub.example.com. 3600 IN RRSIG A 5 4 3600 20030926134150 20030829134150 30899 sub.example.com. nbxk6SiooKsUeVm/ZGskrxKwhOSWdJt9ly9X6Hqji4DKpBskM6bqulmTt/xZ/3G4ZOguYBeiTp8qwlWjl7VoSQ== ;{id = 30899} +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +; fixed version +RANGE_BEGIN 200 300 + ADDRESS 1.2.4.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. IN NS ns.foo.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. hJ3nkrfyBwPcfpwc9wEwzhF5+ZKUddKBHQuZuHPZBjBwb1BsT7B7ryadttbGE3keQJiwNmK9AqvE0Zb+WkDceg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.4.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. fMRshSYDWgvGAwc24Lzg6746jnoG5shlK+o9CgzU7CQbkeNWmj3oO/0TJGP/zxp52JiDBpzRuTmBlrcJYV/gBA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +ns.sub.example.com. IN NSEC nt.sub.example.com. NSEC RRSIG A +ns.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. qwUibvlPTFnxgiyCNtEJCYqJIgA8WFDqypmsO6TSYje2Rqhq4AaWEVxQwU4bdjmipCGVqtlP8mMyMQHaYNMGKA== ;{id = 30899} +sub.example.com. IN SOA sub.example.com. hostmaster.sub.example.com. 1 2 3 4 5 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. sZQEMd0ys2mxPRajzBuvy4XdLNVvXMmJSnmfTHUL41d9IxbGN/ifpiIWs2MXOFPnbab05aYadrzZpT/cpDTxmQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + +; no more outgoing traffic possible. +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ftp.sub.example.com. IN A +ENTRY_END + +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + +; wait for timeout seconds. +STEP 130 TIME_PASSES ELAPSE 901 + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 220 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.20.30.40 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. deNzEy9Hq+6gDZhafC0M7UDuRBm51AA1/FAIauAitNuQlYUzOvWLVHFQ95bn308rCVPqrb4rFDV+gNzxkzm1rw== ;{id = 30899} +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/black_prime.rpl b/external/unbound/testdata/black_prime.rpl new file mode 100644 index 0000000..2cbcc16 --- /dev/null +++ b/external/unbound/testdata/black_prime.rpl @@ -0,0 +1,306 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist for prime response +; the data response needs a blacklist action as well, since it also +; comes from an 'expired signatures' name server. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; remove pending ns.blabla.com AAAA msg +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO CD +SECTION QUESTION +ns.blabla.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA DO NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/black_prime_entry.rpl b/external/unbound/testdata/black_prime_entry.rpl new file mode 100644 index 0000000..c3f9326 --- /dev/null +++ b/external/unbound/testdata/black_prime_entry.rpl @@ -0,0 +1,314 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with blacklist prime gives bad key entry +; the data response needs a blacklist action as well, since it also +; comes from an 'expired signatures' name server. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN A +SECTION ANSWER +ns.blabla.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.blabla.com. IN AAAA +SECTION AUTHORITY +com. IN SOA com. com. 2009100100 28800 7200 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; no ns.blabla.com, try that later +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. AKJ3xUBdSrCiOFkYajsy93d+h06rewpbmBHItTkL8R/26rw57b1gCIg= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20030926134150 20030829134150 2854 example.com. ACFVLLBtuSX/1z3461tbOwDz9zTHe5S9DbVtwnSO1f2x06fYbMpzSDE= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20030926134150 20030829134150 2854 example.com. AG21xE8CFQzTq6XtHErg28b9EAmqPsoYCUcFPEAoAjFybM6AY4/bMOo= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACiWu7zjBHqgEX3iUoOF7rfpOmIAHj1npKQ+XDIaNlmdkfJxoCwFl04= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. ACmAsKTf7hqDaYK8CQ7FL1cGYPW+blTCnzZGkExFtEUAGrHeze87o+A= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGj9kE8oW3OhOLhkmJ3HBaNIOpvGf3S8zSd5gWmhpxAMc5hh6cxZfpQ= ;{id = 2854} +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. IN NS ns.blabla.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20030926134150 20030829134150 2854 example.com. ACHETweBNPgbmRoNRdKvxuw4X9qNUUTEpSuwV+HhuiBE83gbB98asAc= ;{id = 2854} +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AGvu9A/nGsbatxJCmnObioIhKg2Tm0Apr0eo+DO1kIDrAHco/bt/EdY= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.blabla.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ns.example.com. IN NSEC oof.example.com. NSEC RRSIG A +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABhDNtJramb2a4R1SK5gb/CTYJybQts6mZ++z3kLiwsrUSZInA4ikeQ= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.blabla.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AAJHNhPYVG6+550zQga9ZgV8McQZHLboOWjfbdiq2ZC+gUcQeQDDlFs= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.example.com. +; later on, making sure DNSKEY primes give testbound failure. +RANGE_BEGIN 100 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ftp.example.com. IN A 10.20.33.33 +; very bad signature +ftp.example.com. 3600 IN RRSIG A 3 3 3600 20030926134150 20030829134150 2854 example.com. AHNj99mBmP4np19V01nSq990ZIFlIiLWoeHijm/HcOG/o8+DuIp4fL8= ;{id = 2854} +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 100 TIME_PASSES ELAPSE 10 + +; second query should not result in going to the network. +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/chaos_trustanchor.rpl b/external/unbound/testdata/chaos_trustanchor.rpl new file mode 100644 index 0000000..b46b7dc --- /dev/null +++ b/external/unbound/testdata/chaos_trustanchor.rpl @@ -0,0 +1,145 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + hide-trustanchor: no + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test chaos trustanchor query + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +trustanchor.unbound. CH TXT +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +trustanchor.unbound. CH TXT +SECTION ANSWER +trustanchor.unbound. CH TXT "example.com. 2854" +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/common.sh b/external/unbound/testdata/common.sh new file mode 100644 index 0000000..f6d72c2 --- /dev/null +++ b/external/unbound/testdata/common.sh @@ -0,0 +1,256 @@ +# common.sh - an include file for commonly used functions for test code. +# BSD licensed (see LICENSE file). +# +# Version 3 +# 2011-02-23: get_pcat for PCAT, PCAT_DIFF and PCAT_PRINT defines. +# 2011-02-18: ports check on BSD,Solaris. wait_nsd_up. +# 2011-02-11: first version. +# +# include this file from a tdir script with +# . ../common.sh +# +# overview of functions available: +# error x : print error and exit +# info x : print info +# test_tool_avail x : see if program in path and complain, exit if not. +# get_ldns_testns : set LDNS_TESTNS to executable ldns-testns +# get_make : set MAKE to gmake or make tool. +# get_gcc : set cc or gcc in CC +# get_pcat : set PCAT, PCAT_DIFF and PCAT_PRINT executables. +# set_doxygen_path : set doxygen path +# skip_if_in_list : set SKIP=1 if name in list and tool not available. +# get_random_port x : get RND_PORT a sequence of free random port numbers. +# wait_server_up : wait on logfile to see when server comes up. +# wait_ldns_testns_up : wait for ldns-testns to come up. +# wait_unbound_up : wait for unbound to come up. +# wait_petal_up : wait for petal to come up. +# wait_nsd_up : wait for nsd to come up. +# wait_server_up_or_fail: wait for server to come up or print a failure string +# kill_pid : kill a server, make sure and wait for it to go down. + + +# print error and exit +# $0: name of program +# $1: error to printout. +error () { + echo "$0: error: $1" >&2 + exit 1 +} + +# print info +# $0: name of program +# $1: to printout. +info () { + echo "$0: info: $1" +} + +# test if 'tool' is available in path and complain otherwise. +# $1: tool +test_tool_avail () { + if test ! -x "`which $1 2>&1`"; then + echo No "$1" in path + exit 1 + fi +} + +# get ldns-testns tool in LDNS_TESTNS variable. +get_ldns_testns () { + if test -x "`which ldns-testns 2>&1`"; then + LDNS_TESTNS=ldns-testns + else + LDNS_TESTNS=/home/wouter/bin/ldns-testns + fi +} + +# get make tool in MAKE variable, gmake is used if present. +get_make () { + if test -x "`which gmake 2>&1`"; then + MAKE=gmake + else + MAKE=make + fi +} + +# get cc tool in CC variable, gcc is used if present. +get_gcc () { + if test -x "`which gcc 2>&1`"; then + CC=gcc + else + CC=cc + fi +} + +# get pcat, pcat-print and pcat-diff +get_pcat () { + PCAT=`which pcat` + PCAT_PRINT=`which pcat-print` + PCAT_DIFF=`which pcat-diff` +} + +# set SKIP=1 if the name is in list and tool is not available. +# $1: name of package to check. +# $2: list of packages that need the tool. +# #3: name of the tool required. +skip_if_in_list () { + if echo $2 | grep $1 >/dev/null; then + if test ! -x "`which $3 2>&1`"; then + SKIP=1; + fi + fi +} + +# function to get a number of random port numbers. +# $1: number of random ports. +# RND_PORT is returned as the starting port number +get_random_port () { + local plist + local cont + local collisions + local i + local MAXCOLLISION=1000 + cont=1 + collisions=0 + while test "$cont" = 1; do + #netstat -n -A ip -A ip6 -a | sed -e "s/^.*:\([0-9]*\) .*$/\1/" + RND_PORT=$(( $RANDOM + 5354 )) + # depending on uname try to check for collisions in port numbers + case "`uname`" in + linux|Linux) + plist=`netstat -n -A ip -A ip6 -a 2>/dev/null | sed -e 's/^.*:\([0-9]*\) .*$/\1/'` + ;; + FreeBSD|freebsd|NetBSD|netbsd|OpenBSD|openbsd) + plist=`netstat -n -a | grep "^[ut][dc]p[46] " | sed -e 's/^.*\.\([0-9]*\) .*$/\1/'` + ;; + Solaris|SunOS) + plist=`netstat -n -a | sed -e 's/^.*\.\([0-9]*\) .*$/\1/' | grep '^[0-9]*$'` + ;; + *) + plist="" + ;; + esac + cont=0 + for (( i=0 ; i < $1 ; i++ )); do + if echo "$plist" | grep '^'`expr $i + $RND_PORT`'$' >/dev/null 2>&1; then + cont=1; + collisions=`expr $collisions + 1` + fi + done + if test $collisions = $MAXCOLLISION; then + error "too many collisions getting random port number" + fi + done +} + +# wait for server to go up, pass +# $1 : logfilename +# $2 : string to watch for. +# exits with failure if it does not come up +wait_server_up () { + local MAX_UP_TRY=120 + local WAIT_THRES=30 + local try + for (( try=0 ; try <= $MAX_UP_TRY ; try++ )) ; do + if test -f $1 && fgrep "$2" $1 >/dev/null; then + #echo "done on try $try" + break; + fi + if test $try -eq $MAX_UP_TRY; then + echo "Server in $1 did not go up!" + cat $1 + exit 1; + fi + if test $try -ge $WAIT_THRES; then + sleep 1 + fi + done +} + +# wait for ldns-testns to come up +# $1 : logfilename that is watched. +wait_ldns_testns_up () { + wait_server_up "$1" "Listening on port" +} + +# wait for unbound to come up +# string 'Start of service' in log. +# $1 : logfilename that is watched. +wait_unbound_up () { + wait_server_up "$1" "start of service" +} + +# wait for petal to come up +# string 'petal start' in log. +# $1 : logfilename that is watched. +wait_petal_up () { + wait_server_up "$1" "petal start" +} + +# wait for nsd to come up +# string nsd start in log. +# $1 : logfilename that is watched. +wait_nsd_up () { + wait_server_up "$1" " started (NSD " +} + +# wait for server to go up, pass +# $1 : logfile +# $2 : success string +# $3 : failure string +wait_server_up_or_fail () { + local MAX_UP_TRY=120 + local WAIT_THRES=30 + local try + for (( try=0 ; try <= $MAX_UP_TRY ; try++ )) ; do + if test -f $1 && fgrep "$2" $1 >/dev/null; then + echo "done on try $try" + break; + fi + if test -f $1 && fgrep "$3" $1 >/dev/null; then + echo "failed on try $try" + break; + fi + if test $try -eq $MAX_UP_TRY; then + echo "Server in $1 did not go up!" + cat $1 + exit 1; + fi + if test $try -ge $WAIT_THRES; then + sleep 1 + fi + done +} + +# kill a pid, make sure and wait for it to go down. +# $1 : pid to kill +kill_pid () { + local MAX_DOWN_TRY=120 + local WAIT_THRES=30 + local try + kill $1 + for (( try=0 ; try <= $MAX_DOWN_TRY ; try++ )) ; do + if kill -0 $1 >/dev/null 2>&1; then + : + else + #echo "done on try $try" + break; + fi + if test $try -eq $MAX_DOWN_TRY; then + echo "Server in $1 did not go down! Send SIGKILL" + kill -9 $1 >/dev/null 2>&1 + fi + if test $try -ge $WAIT_THRES; then + sleep 1 + fi + # re-send the signal + kill $1 >/dev/null 2>&1 + done + return 0 +} + +# set doxygen path, so that make doc can find doxygen +set_doxygen_path () { + if test -x '/home/wouter/bin/doxygen'; then + export PATH="/home/wouter/bin:$PATH" + fi +} + diff --git a/external/unbound/testdata/ctrl_itr.tdir/bad_control.key b/external/unbound/testdata/ctrl_itr.tdir/bad_control.key new file mode 100644 index 0000000..d29cdbc --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/bad_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDti51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4G +SLOE02/hKDkdkOvaUG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtO +DWc3tXPT1IlSEN0xnAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQAB +AoGAG3w/DatfMCu/nS5OdQx9BSqPgNbnUSqux9xA0fhgPTlN0T3oRtPcqa7JUDUW +PryI/a62ry+zGkw98N2AxolCZg3N7Z3vuRx2FMcKKNwpTzDmcZW7TmMk5FPof6gE +PnYl/ff0w+kxqA+L2EexH3Xi6ApLSZcjyzKWj+dL2AuT9gkCQQD3dPitwITxgCAD +IaHw23e3FRkM/hw1Gp8bt6nbuxitVxxpO96q1EQ+fCy/mf0bMEJDp3xzMEIfP3r4 +GmNbaxa1AkEA9b8LeBLbQ2cm2+UMeUgygBsRirdUQ786auqH38Jbvi/j6S9sDl2x +q1vRtikEBZJWfkhsOzrzwFDKe1bI/EEn9wJAAzOwRA9JqRZPU7sLrWIpmmTbfh+L +neRKSsGFoSI6n4ORCouLxgoZF/XjXldPvxpQwS9ZnOPy9xSLMsqknno0QQJAeDtA +IT8Yh6GwIWWu9KeeDY8wxe1sDLlCm4yjbZZpzGMh3rSU6XJtuqjxsW3fydoO9zn3 +ugLdvvnIFxAexUwbgQJBANyM13xcObfUJOj9rjlGCh0CDh/04ONl8SH8HBnM8guA +RJI5S6vBHweVRopEZcF1sQm6wMf3ej/sGkyyNvJxRkY= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/bad_control.pem b/external/unbound/testdata/ctrl_itr.tdir/bad_control.pem new file mode 100644 index 0000000..e06b847 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/bad_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt +i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva +UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x +nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK +4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH +5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/bad_server.key b/external/unbound/testdata/ctrl_itr.tdir/bad_server.key new file mode 100644 index 0000000..0dbb134 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/bad_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC9hurNHBtB7QFEuPJOnCylUWUF2/US3v9yQQQXnstuXMQXRaq1 +1uviLmwaGurV9tngX59HITsBT74NQrtFKfEDLViLrm2arAM9Ozsn4tnv30HXPRDj +UOc1M05Q7UzjaSrOv+TkPEqyhtUyaP1DYo0bcmbxtSkYc2ZEWCwhPklUwQIDAQAB +AoGATjzZxN4ramWaNnJapJTX4U7eczK/0pB3xwSL2exVcjOdRzYdKH+WVIJxYb1m +3/jNLFCNAeH356yxeevoPr73nG75YJ9I1ZWQWTnS3SDK6JD1+3pmAD0bQWFoitpf +FoSH9H4X5gFB5vCZ99YVoYH1UXWPcgvUHwxz0voImt6lCKECQQD4YQ4A3M0+Ki8v +Hl+5FKULnS0UtBkweCvkF/X1zZRjjYr6hLnqldFkkgTBKWe17pUXX0nwRMbP1YZX +i+vDq5JNAkEAw1eYsmC0nVAMawo57N6LYavGv/n5u1cvpTpKDtn4cXH0Uqq13Kyu +2FUTzan2NhCEK78UzbWaeewBJmxYda1+RQJAdShKk6uTAEyjnwUjv8h2JWlJN2fQ +LeWxRlDrCruiz+aW9J4gl/99GoQpy/c83TshhjnDRZsbcDNWv/rXBZ/rTQJAFQva +CtX6f7yBKgM3DHtJvyM3zbVMH9Ab9QxbsE/xwZ9KeKGl6Hm+eNZpxM3cFiUfaGs0 +/ZjkZOB1m0MvILaplQJAXC3PJ/E+87banGZRJl5qtS6/HoX5lH9TPkL8Essy7ANO +2BT2OTQawD1A+VKIrQHXs085Of8tQUfrfHHt7s3Kqg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/bad_server.pem b/external/unbound/testdata/ctrl_itr.tdir/bad_server.pem new file mode 100644 index 0000000..983247a --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/bad_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B +RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ +DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV +Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy +zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm +O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu +oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.conf b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.conf new file mode 100644 index 0000000..8ee1dff --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.conf @@ -0,0 +1,26 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + # disabled validator + module-config: "iterator" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.dsc b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.dsc new file mode 100644 index 0000000..246ae60 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.dsc @@ -0,0 +1,16 @@ +BaseName: ctrl_itr +Version: 1.0 +Description: iterator only test unbound-control +CreationDate: Thu Jan 16 14:08:12 CET 2014 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: ctrl_itr.pre +Post: ctrl_itr.post +Test: ctrl_itr.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.post b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.post new file mode 100644 index 0000000..6c6d35d --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.post @@ -0,0 +1,13 @@ +# #-- ctrl_itr.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +# it was stopped with unbound-control (if the test succeeded) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 +exit 0 diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.pre b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.pre new file mode 100644 index 0000000..0ce1b65 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.pre @@ -0,0 +1,33 @@ +# #-- ctrl_itr.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT ctrl_itr.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < ctrl_itr.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.test b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.test new file mode 100644 index 0000000..dadd365 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.test @@ -0,0 +1,39 @@ +# #-- ctrl_itr.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# exit value is 1 on usage +$PRE/unbound-control -c ub.conf forward_add +i bla bla +if test $? -ne 0; then + echo "wrong exit value." + cat fwd.log + cat unbound.log + exit 1 +else + echo "exit value: OK" +fi + + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.testns b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.testns new file mode 100644 index 0000000..0c911ca --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/ctrl_itr.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/external/unbound/testdata/ctrl_itr.tdir/unbound_control.key b/external/unbound/testdata/ctrl_itr.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/unbound_control.pem b/external/unbound/testdata/ctrl_itr.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/unbound_server.key b/external/unbound/testdata/ctrl_itr.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_itr.tdir/unbound_server.pem b/external/unbound/testdata/ctrl_itr.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/ctrl_itr.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/bad_control.key b/external/unbound/testdata/ctrl_pipe.tdir/bad_control.key new file mode 100644 index 0000000..d29cdbc --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/bad_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDti51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4G +SLOE02/hKDkdkOvaUG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtO +DWc3tXPT1IlSEN0xnAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQAB +AoGAG3w/DatfMCu/nS5OdQx9BSqPgNbnUSqux9xA0fhgPTlN0T3oRtPcqa7JUDUW +PryI/a62ry+zGkw98N2AxolCZg3N7Z3vuRx2FMcKKNwpTzDmcZW7TmMk5FPof6gE +PnYl/ff0w+kxqA+L2EexH3Xi6ApLSZcjyzKWj+dL2AuT9gkCQQD3dPitwITxgCAD +IaHw23e3FRkM/hw1Gp8bt6nbuxitVxxpO96q1EQ+fCy/mf0bMEJDp3xzMEIfP3r4 +GmNbaxa1AkEA9b8LeBLbQ2cm2+UMeUgygBsRirdUQ786auqH38Jbvi/j6S9sDl2x +q1vRtikEBZJWfkhsOzrzwFDKe1bI/EEn9wJAAzOwRA9JqRZPU7sLrWIpmmTbfh+L +neRKSsGFoSI6n4ORCouLxgoZF/XjXldPvxpQwS9ZnOPy9xSLMsqknno0QQJAeDtA +IT8Yh6GwIWWu9KeeDY8wxe1sDLlCm4yjbZZpzGMh3rSU6XJtuqjxsW3fydoO9zn3 +ugLdvvnIFxAexUwbgQJBANyM13xcObfUJOj9rjlGCh0CDh/04ONl8SH8HBnM8guA +RJI5S6vBHweVRopEZcF1sQm6wMf3ej/sGkyyNvJxRkY= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/bad_control.pem b/external/unbound/testdata/ctrl_pipe.tdir/bad_control.pem new file mode 100644 index 0000000..e06b847 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/bad_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt +i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva +UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x +nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK +4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH +5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/bad_server.key b/external/unbound/testdata/ctrl_pipe.tdir/bad_server.key new file mode 100644 index 0000000..0dbb134 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/bad_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC9hurNHBtB7QFEuPJOnCylUWUF2/US3v9yQQQXnstuXMQXRaq1 +1uviLmwaGurV9tngX59HITsBT74NQrtFKfEDLViLrm2arAM9Ozsn4tnv30HXPRDj +UOc1M05Q7UzjaSrOv+TkPEqyhtUyaP1DYo0bcmbxtSkYc2ZEWCwhPklUwQIDAQAB +AoGATjzZxN4ramWaNnJapJTX4U7eczK/0pB3xwSL2exVcjOdRzYdKH+WVIJxYb1m +3/jNLFCNAeH356yxeevoPr73nG75YJ9I1ZWQWTnS3SDK6JD1+3pmAD0bQWFoitpf +FoSH9H4X5gFB5vCZ99YVoYH1UXWPcgvUHwxz0voImt6lCKECQQD4YQ4A3M0+Ki8v +Hl+5FKULnS0UtBkweCvkF/X1zZRjjYr6hLnqldFkkgTBKWe17pUXX0nwRMbP1YZX +i+vDq5JNAkEAw1eYsmC0nVAMawo57N6LYavGv/n5u1cvpTpKDtn4cXH0Uqq13Kyu +2FUTzan2NhCEK78UzbWaeewBJmxYda1+RQJAdShKk6uTAEyjnwUjv8h2JWlJN2fQ +LeWxRlDrCruiz+aW9J4gl/99GoQpy/c83TshhjnDRZsbcDNWv/rXBZ/rTQJAFQva +CtX6f7yBKgM3DHtJvyM3zbVMH9Ab9QxbsE/xwZ9KeKGl6Hm+eNZpxM3cFiUfaGs0 +/ZjkZOB1m0MvILaplQJAXC3PJ/E+87banGZRJl5qtS6/HoX5lH9TPkL8Essy7ANO +2BT2OTQawD1A+VKIrQHXs085Of8tQUfrfHHt7s3Kqg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/bad_server.pem b/external/unbound/testdata/ctrl_pipe.tdir/bad_server.pem new file mode 100644 index 0000000..983247a --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/bad_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B +RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ +DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV +Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy +zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm +O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu +oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.conf b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.conf new file mode 100644 index 0000000..d7c6819 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.conf @@ -0,0 +1,23 @@ +server: + verbosity: 4 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +remote-control: + control-enable: yes + control-interface: @PATH@/controlpipe.@PID@ + control-use-cert: no + #server-key-file: "unbound_server.key" + #server-cert-file: "unbound_server.pem" + #control-key-file: "unbound_control.key" + #control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.dsc b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.dsc new file mode 100644 index 0000000..c618f1d --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.dsc @@ -0,0 +1,16 @@ +BaseName: ctrl_pipe +Version: 1.0 +Description: unix pipe test unbound-control +CreationDate: Fri 16 Jan 13:25:48 CET 2015 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: ctrl_pipe.pre +Post: ctrl_pipe.post +Test: ctrl_pipe.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.post b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.post new file mode 100644 index 0000000..5e3cc6d --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.post @@ -0,0 +1,15 @@ +# #-- ctrl_pipe.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +# it was stopped with unbound-control (if the test succeeded) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 + +rm -f $CONTROL_PATH/controlpipe.$CONTROL_PID +exit 0 diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.pre b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.pre new file mode 100644 index 0000000..e9f2124 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.pre @@ -0,0 +1,35 @@ +# #-- ctrl_pipe.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT ctrl_pipe.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +CONTROL_PATH=/tmp +CONTROL_PID=$$ +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's?@PATH\@?'$CONTROL_PATH'?' -e 's/@PID@/'$CONTROL_PID'/' < ctrl_pipe.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +echo "CONTROL_PATH=$CONTROL_PATH" >> .tpkg.var.test +echo "CONTROL_PID=$CONTROL_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.test b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.test new file mode 100644 index 0000000..70dfdca --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.test @@ -0,0 +1,61 @@ +# #-- ctrl_pipe.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# exit value is 1 on usage +$PRE/unbound-control -c ub.conf status +if test $? -ne 0; then + echo "wrong exit value." + cat fwd.log + cat unbound.log + exit 1 +else + echo "exit value: OK" +fi +$PRE/unbound-control -c ub.conf local_data froob.example.net A 192.0.2.1 +if test $? -ne 0; then + echo "wrong exit value." + cat fwd.log + cat unbound.log + exit 1 +else + echo "exit value: OK" +fi + + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig froob.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT froob.example.net. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.testns b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.testns new file mode 100644 index 0000000..0c911ca --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/ctrl_pipe.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.key b/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.pem b/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.key b/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.pem b/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/ctrl_pipe.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/dlv_anchor.rpl b/external/unbound/testdata/dlv_anchor.rpl new file mode 100644 index 0000000..445da0a --- /dev/null +++ b/external/unbound/testdata/dlv_anchor.rpl @@ -0,0 +1,278 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor +; positive response for DLV. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_ask_higher.rpl b/external/unbound/testdata/dlv_ask_higher.rpl new file mode 100644 index 0000000..9f93310 --- /dev/null +++ b/external/unbound/testdata/dlv_ask_higher.rpl @@ -0,0 +1,353 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV where it needs to ask higher up in dlv. +; at first negative DLV response, it needs to ask higher. +; the SOA record in that negative reponse has a big span (if interpreted as NSEC) +; then a positive response for DLV. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; failed DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +sub.example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.net.example.com IN NSEC not.example.com. RRSIG NSEC DLV +example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AKz/e6KOw8gCx6wnpIatBwKb0WOPBTWmNNMg91XR/wlJQ9Z2+qICPmA= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.sub.example.net query +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +sub.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. nM5HAlRsrLurc5mUNKwCye5X6LSH53pLgSeyni4wb6Jd2J48ZRWwrVvy7IpyvI75+Wlu3aGOjv/kEyVaizChRQ== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +; DS +; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN DNSKEY +SECTION ANSWER +sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; www.sub.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +www.sub.example.net. 3600 IN A 10.20.30.40 +www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +www.sub.example.net. 3600 IN A 10.20.30.40 +www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_below_ta.rpl b/external/unbound/testdata/dlv_below_ta.rpl new file mode 100644 index 0000000..6f72f26 --- /dev/null +++ b/external/unbound/testdata/dlv_below_ta.rpl @@ -0,0 +1,354 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator, use DLV for nonDSed zone below trustanchor. +; DLV example.com. +; trust anchor at example.net but no secure delegation to +; sub.example.net signed with DLV but not by parent. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net.example.com. IN DLV +SECTION ANSWER +sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; no DS to sub.example.net, securely insecure. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} +sub.example.net. IN NSEC tut.example.net. NS NSEC +sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +; delegation to sub.example.net, securely insecure. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. IN NSEC tut.example.net. NS NSEC +sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ENTRY_END + + +RANGE_END + +; ns.sub.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +; DS is +; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.net. IN DNSKEY +SECTION ANSWER +sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; www.sub.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +www.sub.example.net. IN A 10.20.30.40 +www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +www.sub.example.net. IN A 10.20.30.40 +www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_delegation.rpl b/external/unbound/testdata/dlv_delegation.rpl new file mode 100644 index 0000000..1eada40 --- /dev/null +++ b/external/unbound/testdata/dlv_delegation.rpl @@ -0,0 +1,334 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with delegation in DLV repository +; positive response for DLV. +; but the DLV repository has a (secure) delegation inside it. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; referral to the net.example.com DLV server +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +net.example.com. NS ns.net.example.com. +net.example.com. 3600 IN DS 2854 3 1 24d80cd822bc4083cf491b7f055890345a77dd9b ; xenat-myfat-memir-sabym-fefig-nakol-zucyh-megef-gakel-lolyn-ruxox +net.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AA0APyTN12wzj1XmDEZe+wrPE1hkLAINKT8cT9zGup7zX3O8R4Ki2N8= ;{id = 2854} +SECTION ADDITIONAL +ns.net.example.com. A 1.2.3.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AJEvfI+tX6Y1OF0h1CNHERJjXaaTsmLWTMLgXk4UYJl8JjAikCpsf9Q= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.net.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN NS +SECTION ANSWER +net.example.com. NS ns.net.example.com. +net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} +SECTION ADDITIONAL +ns.net.example.com. A 1.2.3.6 +ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} +ENTRY_END + +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DNSKEY +SECTION ANSWER +net.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +net.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926134150 20070829134150 2854 net.example.com. ADgKDV1Yi2iFOXFUN1XkvBU7KW/rdtGcOEdc9VMIxfIKDo5h24E5fqs= ;{id = 2854} +SECTION AUTHORITY +net.example.com. NS ns.net.example.com. +net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} +SECTION ADDITIONAL +ns.net.example.com. A 1.2.3.6 +ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} +ENTRY_END + +; DLV apex +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +net.example.com. SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +net.example.com. 3600 IN RRSIG SOA 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AKAjedAeGWRHaqhDhNhbTvVUQMgCspiD4GNC7dMVbEZSd87AFcqwg1Y= ;{id = 2854} +net.example.com. NSEC example.net.example.com. SOA NS DNSKEY RRSIG NSEC +net.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AAHqj3xDqng7ZuNFn89sTjTo2qfuXTv0yR6v8mZ1+L5mCsOwjpGXrJw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; DLV of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AIZmoTbAlXYwLknm84i7sbglbHr1Iq7t0yyTENO/MsPj7K/mvEQAI/g= ;{id = 2854} +SECTION AUTHORITY +net.example.com. NS ns.net.example.com. +net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} +SECTION ADDITIONAL +ns.net.example.com. A 1.2.3.6 +ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_ds_lookup.rpl b/external/unbound/testdata/dlv_ds_lookup.rpl new file mode 100644 index 0000000..663cd9c --- /dev/null +++ b/external/unbound/testdata/dlv_ds_lookup.rpl @@ -0,0 +1,281 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor for a DS lookup. +; positive response for DLV. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DS +SECTION AUTHORITY +net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +example.net. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +example.net. IN DS +SECTION AUTHORITY +net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_insecure.rpl b/external/unbound/testdata/dlv_insecure.rpl new file mode 100644 index 0000000..94ba865 --- /dev/null +++ b/external/unbound/testdata/dlv_insecure.rpl @@ -0,0 +1,253 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with insecure zone with no DLV + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +; could be picked out of the negative cache due to NS queries in between. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_insecure_negcache.rpl b/external/unbound/testdata/dlv_insecure_negcache.rpl new file mode 100644 index 0000000..b911051 --- /dev/null +++ b/external/unbound/testdata/dlv_insecure_negcache.rpl @@ -0,0 +1,310 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with insecure zone, no DLV from negative cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 300 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +; could be picked out of the negative cache due to NS queries in between. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV +zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV +zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC frump.aqua.example.com. SOA NS RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AAscY9DfNm3Uy8f8Q4WX6AzR0flHYNSr3fKfgQ0Xc20fzj1lGP9ebfk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 300 + ADDRESS 1.2.3.5 +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +STEP 150 TIME_PASSES ELAPSE 30 + +; no more DLV authority reachable +STEP 200 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +STEP 210 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +STEP 220 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +net. IN NS +ENTRY_END + +STEP 230 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_keyretry.rpl b/external/unbound/testdata/dlv_keyretry.rpl new file mode 100644 index 0000000..8d477b5 --- /dev/null +++ b/external/unbound/testdata/dlv_keyretry.rpl @@ -0,0 +1,287 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor and subsequently key retries +; positive response for DLV. But the DNSKEY for the target fails validation. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +; expired signature +example.net. 3600 IN RRSIG DNSKEY 5 2 3600 20050926134150 20050829134150 30899 example.net. ydM0/eWMqFn4RxMTbscdSLU7bJNoPuzjCa0eI7HSV/r/54slSGvkl0fmwqrROl1tpc0YMV6kAzgB1T5lJbvdsA== ;{id = 30899} +; good signature: +;example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; AAAA for nameserver (for dnssec retry) query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN SOA . . 2007091300 28800 7200 604800 3600 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. MrpP4svNpbN/YKhuYRlNbvNg0yVxn4ywW1tyEFA9v6F7BR6k1pP8iPfN5XV+XWPAmbss9h3fwKq8zNs4F/SPkg== ;{id = 30899} +ns.example.net. IN NSEC ppp.example.net. A RRSIG NSEC +ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. freWP6rXWsU5iyRE2gIM9rICuBxCYlQSW01GkLPez5czqtEL0hHN8vtjTlfoNxjJjiZj3vAavZDIQGgOOOMIsA== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_negnx.rpl b/external/unbound/testdata/dlv_negnx.rpl new file mode 100644 index 0000000..03edf1a --- /dev/null +++ b/external/unbound/testdata/dlv_negnx.rpl @@ -0,0 +1,405 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor for negcache nxdomain proof +; put a DLV in the negcache. +; then test ask-higher with that in the cache. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; under example.net in DLV +ENTRY_BEGIN +MATCH opcode qtype subdomain +ADJUST copy_id copy_query +REPLY QR NXDOMAIN +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.net.example.com. 3600 IN NSEC fru.net.example.com. RRSIG NSEC DLV +example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AI6NNKt4dGcAdCrW73GYwyoqelsdj1dd8mBNPpHRQIL0yp7yYFZ7kXU= ;{id = 2854} +example.com. IN SOA . . 1 2 3 4 5 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AIkRPbv+kZaiG61pH/wQy8fX2UqQS5YRwHaxe4yjEUXk59fgO71Db3s= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +; have it flushed out of the cache quickly. +example.net. 0 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 0 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; subzone +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub1.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +sub1.example.net. 3600 IN DS 30899 5 1 8916603e54c6f7edcfd885602e3b7b8dc475ba5c ; xodec-komif-vehis-kotav-tefot-mecyk-biryf-rivym-ticol-huvyh-saxox +sub1.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. A3vVrEY3+oIUqdbAa3tkKaU3o47eBD01hVXfAEAue1M+Uci2PA5YyiulLzStyiP75XUXkvubLQ2+ltKMTtfdag== ;{id = 30899} +sub1.example.net. IN NS ns.sub1.example.net. +SECTION ADDITIONAL +ns.sub1.example.net. IN A 1.2.3.10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub2.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +sub2.example.net. 3600 IN DS 30899 5 1 627f7a51f1545133fec3ecbd19b85b92b15679c9 ; ximil-zovah-casuh-gygef-fyzas-farir-tikir-mukon-disih-kavus-nyxex +sub2.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. azMXKt4VPHj2hk5MDU6h8E/HOtNnHnIVS6Le3BV43wtJcHG5wlCxOksOZBOpXMkpbWLvbCJOOMPOnh31nlbjgg== ;{id = 30899} +sub2.example.net. IN NS ns.sub2.example.net. +SECTION ADDITIONAL +ns.sub2.example.net. IN A 1.2.3.12 +ENTRY_END +RANGE_END + +; sub1.example.net. +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub1.example.net. IN DNSKEY +SECTION ANSWER +sub1.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub1.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub1.example.net. E200eTdRnkL7/fk54i1nXEE9a/rC2GxZfVkWMU044tpwV6d4XRxVhlFBzY4FytbRFFBUDhz7L3B0qC6BXJM8rg== ;{id = 30899} +ENTRY_END + +; www query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub1.example.net. IN A +SECTION ANSWER +www.sub1.example.net. IN A 192.168.1.1 +www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} +ENTRY_END + +RANGE_END + +; sub2.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.12 +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub2.example.net. IN DNSKEY +SECTION ANSWER +sub2.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub2.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub2.example.net. VcNaPuz9Mmjj5ofZqOa4FsixBomFJTjd/9wxhZOVdxf1LsNR5L++8k09gQvnjtCvqSPfNer/uv0xl+9sRr8Wmw== ;{id = 30899} +ENTRY_END + +; www query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub2.example.net. IN A +SECTION ANSWER +www.sub2.example.net. IN A 192.168.1.12 +www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} +ENTRY_END + +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub1.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub1.example.net. IN A +SECTION ANSWER +www.sub1.example.net. IN A 192.168.1.1 +www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; have example.net DNSKEY time out +STEP 14 TIME_PASSES ELAPSE 1.0 + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub2.example.net. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub2.example.net. IN A +SECTION ANSWER +www.sub2.example.net. IN A 192.168.1.12 +www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_optout.rpl b/external/unbound/testdata/dlv_optout.rpl new file mode 100644 index 0000000..e5a8fdd --- /dev/null +++ b/external/unbound/testdata/dlv_optout.rpl @@ -0,0 +1,440 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator, DLV to zone below optout, check negative cache. +; DLV example.com. +; trust anchor at example.net but no secure delegation to +; sub.example.net signed with DLV but not by parent. +; parent uses optout NSEC3. +; then a signed delegation to down.sub.example.net. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net.example.com. IN DLV +SECTION ANSWER +sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +down.sub.example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +sub.example.net.example.com. IN NSEC zzz.example.net.example.com. RRSIG NSEC DLV +sub.example.net.example.com. 3600 IN RRSIG NSEC 3 5 3600 20070926134150 20070829134150 2854 example.com. AG/M+H/lex1CMTIuO+JpdmTjCzt7XBsLtRLPDfYTykhxnnECzZwkMnQ= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; no DS to sub.example.net, optout NSEC3. +; NSEC3PARAM 1 1 31 DE15C001 +; example.net. -> hk4jq0lg6q3bt992urc88dqten1k2be8. +; sub.example.net. -> ecs17hqd0kf7dk9g1cjvevj25pginrf2. +; *.example.net. -> 1tgbedpeeuubbsejh2dqvso62f8n4dk1. +; down.sub.example.net. -> 9j1r8re9b1238vd907tilclgat1i0fre. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} +; CE is example.net +hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM +hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} +; NC covers sub.example.net +ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG +ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +; delegation to sub.example.net, optout NSEC3. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM +hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} +ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG +ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ENTRY_END + + +RANGE_END + +; ns.sub.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +; DS is +; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.net. IN DNSKEY +SECTION ANSWER +sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; www.sub.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +www.sub.example.net. IN A 10.20.30.40 +www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} +SECTION AUTHORITY +sub.example.net. IN NS ns.sub.example.net. +sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.net. IN A 1.2.3.6 +ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} +ENTRY_END + +; DS for down.sub.example.net +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +down.sub.example.net. IN DS +SECTION ANSWER +down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 +down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; delegation to down.sub.example.net +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +down.sub.example.net. IN NS +SECTION ANSWER +SECTION AUTHORITY +down.sub.example.net. IN NS ns.down.sub.example.net. +; the DS record is not given (like it was parent and child hosted on the same +; server) +;down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 +;down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} +SECTION ADDITIONAL +ns.down.sub.example.net. IN A 1.2.3.7 +ENTRY_END + +RANGE_END + +; ns.down.sub.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.7 +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +down.sub.example.net. IN DNSKEY +SECTION ANSWER +down.sub.example.net. 3600 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} +down.sub.example.net. 3600 IN RRSIG DNSKEY 5 4 3600 20070926134150 20070829134150 60946 down.sub.example.net. lK5HNva/IPw0CS9BfBd16fqm5y9bgCSwGsBLBAA1d5SCcKep6AVrv6NFuXl12d1G3MdQ4ruHi6eDDO5dhtkfrw== ;{id = 60946} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; www.down.sub.example.net. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.down.sub.example.net. IN A +SECTION ANSWER +www.down.sub.example.net. IN A 10.20.30.44 +www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.down.sub.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.down.sub.example.net. IN A +SECTION ANSWER +www.down.sub.example.net. IN A 10.20.30.44 +www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_remove.rpl b/external/unbound/testdata/dlv_remove.rpl new file mode 100644 index 0000000..d503148 --- /dev/null +++ b/external/unbound/testdata/dlv_remove.rpl @@ -0,0 +1,198 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV anchor but DLV domain is down +; so DLV has been decommissioned. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.com. IN NS +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_remove_empty.rpl b/external/unbound/testdata/dlv_remove_empty.rpl new file mode 100644 index 0000000..2e9b4bc --- /dev/null +++ b/external/unbound/testdata/dlv_remove_empty.rpl @@ -0,0 +1,271 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV and DLV repository is empty. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query, everything is NXDOMAIN +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NXDOMAIN +SECTION QUESTION +example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_remove_nodel.rpl b/external/unbound/testdata/dlv_remove_nodel.rpl new file mode 100644 index 0000000..1f2d947 --- /dev/null +++ b/external/unbound/testdata/dlv_remove_nodel.rpl @@ -0,0 +1,275 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "dlv.example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV and DLV is removed and not delegated +; so the response is that the dlv domain itself does not exist, but it's +; parent domain does exist (securely). + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query, everything is NXDOMAIN +; thus, no delegation to the dlv repository in dlv.example.com +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NXDOMAIN +SECTION QUESTION +example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_remove_pos.rpl b/external/unbound/testdata/dlv_remove_pos.rpl new file mode 100644 index 0000000..fe2d7fe --- /dev/null +++ b/external/unbound/testdata/dlv_remove_pos.rpl @@ -0,0 +1,166 @@ +; config options +; The island of trust is at example.com +server: + dlv-anchor: "dlv.example.net. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DLV removed for positive anchored response +; So the destination has a valid DNSSEC chain of trust to the root, +; but the configured dlv anchor fails. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; this covers dlv.example.net and thus makes it servfail (unusable). +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +net. IN NS +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dlv_unused.rpl b/external/unbound/testdata/dlv_unused.rpl new file mode 100644 index 0000000..3867558 --- /dev/null +++ b/external/unbound/testdata/dlv_unused.rpl @@ -0,0 +1,276 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator, DLV anchor unused because trustanchor works. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dns64_lookup.rpl b/external/unbound/testdata/dns64_lookup.rpl new file mode 100644 index 0000000..e24622c --- /dev/null +++ b/external/unbound/testdata/dns64_lookup.rpl @@ -0,0 +1,307 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + module-config: "dns64 validator iterator" + dns64-prefix: 64:ff9b::0/96 + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test dns64 lookup and synthesis. +; normal A lookup should still succeed +; AAAA is synthesized if not present. +; AAAA if present, is passed through unchanged. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 200 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +7.6.5.in-addr.arpa. IN A +SECTION AUTHORITY +7.6.5.in-addr.arpa. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 200 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ip4.example.com. IN AAAA +SECTION ANSWER +; NO AAAA present +SECTION AUTHORITY +example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ip4.example.com. IN A +SECTION ANSWER +ip4.example.com. IN A 5.6.7.8 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +broken.example.com. IN AAAA +SECTION ANSWER +; NO AAAA present +SECTION AUTHORITY +example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +broken.example.com. IN A +SECTION ANSWER +broken.example.com. IN A 5.6.7.8 +broken.example.com. IN A \# 3 030405 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ip6.example.com. IN AAAA +SECTION ANSWER +ip6.example.com. IN AAAA 1:2:3::4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +8.7.6.5.in-addr.arpa. IN PTR +SECTION ANSWER +8.7.6.5.in-addr.arpa. PTR ip4.example.com. +SECTION AUTHORITY +7.6.5.in-addr.arpa. IN NS ns.example.com. +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; synthesize from A record 5.6.7.8 +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ip4.example.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ip4.example.com. IN AAAA +SECTION ANSWER +ip4.example.com. IN AAAA 64:ff9b::506:708 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; this node has its own ipv6 address +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ip6.example.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ip6.example.com. IN AAAA +SECTION ANSWER +ip6.example.com. IN AAAA 1:2:3::4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; test ptr lookup +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +8.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR +ENTRY_END + +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +8.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR +SECTION ANSWER +8.0.7.0.6.0.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.f.f.4.6.0.0.ip6.arpa. IN PTR ip4.example.com. +SECTION AUTHORITY +7.6.5.in-addr.arpa. IN NS ns.example.com. +ENTRY_END + +; synthesize from broken, malformed A records +STEP 80 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +broken.example.com. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +broken.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA a. b. 1 2 3 4 5 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/1.cert b/external/unbound/testdata/dnscrypt_cert.tdir/1.cert new file mode 100644 index 0000000000000000000000000000000000000000..fbc529bfa3abc64f84dcde8b7b41c48375059d29 GIT binary patch literal 124 zcmZ?q3wCB;WMI$^4_>YA@9W0=!HOrL)J1l346k%r+{*9ITNvN5oV_a(_1U)|(a%KU zO3p_64?2x$GLs#%b_AcTHQbQ;XrGlJxBp!B=wh?NX$>m{yiAi_-hQ(BWxyJGdf}v& WR?VzpJ$;yb_&$?YARIYABMSg@x-xbE literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/1.key b/external/unbound/testdata/dnscrypt_cert.tdir/1.key new file mode 100644 index 0000000..165262c --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/1.key @@ -0,0 +1 @@ +®öÝìK¬‡#‘€4ùsŽ pèÖôÁæÀx!¹»AŠ"mM \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/1_chacha.cert b/external/unbound/testdata/dnscrypt_cert.tdir/1_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..3da5c612d06020c86edda3d99a31d9d44c20cd26 GIT binary patch literal 124 zcmZ?q3wCB;VqjRK{Q6Xq>2Kc6nkT;%Z`>at>Uj9aQ{^>>p6yw{<#d9ddA`K_|5h54 zZY=O}n8R$k=uBeKY^nAImXoaS@G?$Vu!{e%^nRn$8(ajoq#n!YsJ>Bb9h_nmH|rs* Zjezr6?cm#vN1*bN3$9y$aOtJnI{=8hINSgL literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/1_salsa.cert b/external/unbound/testdata/dnscrypt_cert.tdir/1_salsa.cert new file mode 100644 index 0000000000000000000000000000000000000000..17e447fc339b7e1d19d078e43cdf685cacacc6a6 GIT binary patch literal 124 zcmZ?q3wCB;WMIgAwlO39lENChev9wxW`*9^Gh<>UL+HN?+Y6ln=LrYz-7<~Wd%>L_ zZ)6gh*IiQ-jL1GUW3N=mgDslsmZehtEKG-`_Zyww;3BXk^;kwn^^Icd;1r{{Sr1ul Y1f0)m2j6yt$ww|Y%?ZM#m(F(r0G>)XPXGV_ literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/2.cert b/external/unbound/testdata/dnscrypt_cert.tdir/2.cert new file mode 100644 index 0000000000000000000000000000000000000000..ebf8ac108d141a1d247ec4c08c4bb37ec13508db GIT binary patch literal 124 zcmZ?q3wCB;WMH`6a7UVRBhw!4878b(`7W`zS!C{GU`Yy{(A$`lwt07=)whXUtF1YM`(lvI1LnT6eL)A8bEhkvyY#B&;w$kRKT};77xas3 YnoQkTYfxtflaJ6_^a6yV_^)LE07hy#^8f$< literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/2.key b/external/unbound/testdata/dnscrypt_cert.tdir/2.key new file mode 100644 index 0000000..c299f55 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/2.key @@ -0,0 +1 @@ +m7Ÿñâƒx;‘%׸õé*•ÜR¯äÓ¯¹mDªñ \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/2_chacha.cert b/external/unbound/testdata/dnscrypt_cert.tdir/2_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..ed4ec26065a60f958ac8797b0515f692e2561152 GIT binary patch literal 124 zcmZ?q3wCB;VqjQp_UOOX7bc&L>5}pFB|+1_1)bhB^9Ng}QrFrVcYU1&Gx)jI?6{M# z{^oz3MM9f&Q`o;{8!&rDpDmZtJmbW)kn8K`@cnzEZd|I6JoA0+Vn2LPf}JkrbK?xa|s(C2#RraymOa5q+ zm`UrFB~;fg48Qo~I@8&j^IF`CRMuaLX8Za%eE;648<#31&wO9|xTH&HQQeHcm*uNs Ym~u@y{yi{($ww|Y%?ZM#m(F(r03OOaw*UYD literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.conf b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.conf new file mode 100644 index 0000000..355d4ff --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.conf @@ -0,0 +1,26 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + interface: 0.0.0.0 + interface: 0.0.0.0@@DNSCRYPT_PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + +dnscrypt: + dnscrypt-enable: yes + dnscrypt-port: @DNSCRYPT_PORT@ + dnscrypt-provider: 2.dnscrypt-cert.example.com. + dnscrypt-secret-key: 1.key + dnscrypt-secret-key: 2.key + dnscrypt-provider-cert: 1_salsa.cert + dnscrypt-provider-cert: 2_salsa.cert + diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.dsc b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.dsc new file mode 100644 index 0000000..f0ec882 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.dsc @@ -0,0 +1,16 @@ +BaseName: dnscrypt_cert +Version: 1.0 +Description: dnscrypt cert retrieval. +CreationDate: Fri Mar 03 10:08:08 CEST 2017 +Maintainer: Emmanuel Bretelle +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dnscrypt_cert.pre +Post: dnscrypt_cert.post +Test: dnscrypt_cert.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.post b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.post new file mode 100644 index 0000000..0346d3f --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.post @@ -0,0 +1,16 @@ +# #-- dnscrypt_cert.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.pre b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.pre new file mode 100644 index 0000000..bee9e8a --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.pre @@ -0,0 +1,38 @@ +# #-- dnscrypt_cert.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +DNSCRYPT_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "DNSCRYPT_PORT=$DNSCRYPT_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dnscrypt_cert.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' \ + -e 's/@DNSCRYPT_PORT\@/'$DNSCRYPT_PORT'/' < dnscrypt_cert.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.test b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.test new file mode 100644 index 0000000..f097537 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.test @@ -0,0 +1,108 @@ +# #-- dnscrypt_cert.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + +# do the test + +# Query plain request over DNSCrypt channel get closed +# We use TCP to avoid hanging on waiting for UDP. +# We expect `outfile` to contain no DNS payload +echo "> dig TCP www.example.com. DNSCrypt port" +dig +tcp @127.0.0.1 -p $DNSCRYPT_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "QUESTION SECTION" outfile; then + echo "NOK" + exit 1 +else + echo "OK" +fi + + +# Plaintext query on unbound port works correctly. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# Plaintext query on unbound port works correctly with TCP. +echo "> dig TCP www.example.com." +dig +tcp @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +for opt in '' '+tcp' +do + # Plaintext query on dnscrypt port returns cert when asking for providername/TXT. + # Check that it returns 1.cert. + echo "> dig TXT 2.dnscrypt-cert.example.com. 1_salsa.CERT. DNSCrypt plaintext ${opt}" + dig ${opt} @127.0.0.1 -p $DNSCRYPT_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000i\230\177hg\210 \172>\1438\247\174\154U\216\188\152\145y\000U\254\208\183qBQ\158\019S\189\180\150\013K\160\220\248\236\028`\131\174\214!\017Xk\202\152\189\026T\224\180)'"'"'9u\026\143\004\002\195\027\1912\203\176D\016\180e\198h\136{\216s;Sd2^\154\225\005<\016C\205+S\219A\195\027\1912\203\176D\016Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi + + # Plaintext query on dnscrypt port returns cert when asking for providername/TXT. + # Check that it returns 2.cert. + echo "> dig TXT 2.dnscrypt-cert.example.com. 2_salsa.CERT. DNSCrypt plaintext ${opt}" + dig ${opt} @127.0.0.1 -p $DNSCRYPT_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000AX\031\201\243\201LI<-\146]LU\247LY\2376\014K\194$D\151&\008\236\008\220\143We\029\227\030\233\015[4\\\146\174\166`{}\161W\209\228\215\002\205|\207*\011\162$\175\210[\006\245\243W\191\189Z\216\210x\025\204\247\173\227t\138\018\162~\152\253\211\031z\\\002m5\008\254\2244\245\243W\191\189Z\216\210Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "NOK" + exit 1 + fi + + # Certificates are local-data for unbound. We can also retrieve them from unbound + # port. + echo "> dig TXT 2.dnscrypt-cert.example.com. 1_salsa.CERT. Unbound ${opt}" + dig ${opt} @127.0.0.1 -p $UNBOUND_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000i\230\177hg\210 \172>\1438\247\174\154U\216\188\152\145y\000U\254\208\183qBQ\158\019S\189\180\150\013K\160\220\248\236\028`\131\174\214!\017Xk\202\152\189\026T\224\180)'"'"'9u\026\143\004\002\195\027\1912\203\176D\016\180e\198h\136{\216s;Sd2^\154\225\005<\016C\205+S\219A\195\027\1912\203\176D\016Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi +done + +exit 0 diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.testns b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.testns new file mode 100644 index 0000000..0af820e --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/dnscrypt_cert.testns @@ -0,0 +1,26 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA TC NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/dnscrypt_cert.tdir/precheck.sh b/external/unbound/testdata/dnscrypt_cert.tdir/precheck.sh new file mode 100644 index 0000000..00fa4bc --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert.tdir/precheck.sh @@ -0,0 +1,16 @@ +# dnscrypt precheck.sh + +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + +# if no xchacha20 support in unbound; exit +if grep "define USE_DNSCRYPT_XCHACHA20 1" $PRE/config.h; then + xchacha20=1 +else + xchacha20=0 +fi diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.cert b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.cert new file mode 100644 index 0000000000000000000000000000000000000000..fbc529bfa3abc64f84dcde8b7b41c48375059d29 GIT binary patch literal 124 zcmZ?q3wCB;WMI$^4_>YA@9W0=!HOrL)J1l346k%r+{*9ITNvN5oV_a(_1U)|(a%KU zO3p_64?2x$GLs#%b_AcTHQbQ;XrGlJxBp!B=wh?NX$>m{yiAi_-hQ(BWxyJGdf}v& WR?VzpJ$;yb_&$?YARIYABMSg@x-xbE literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.key b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.key new file mode 100644 index 0000000..165262c --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1.key @@ -0,0 +1 @@ +®öÝìK¬‡#‘€4ùsŽ pèÖôÁæÀx!¹»AŠ"mM \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_chacha.cert b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..3da5c612d06020c86edda3d99a31d9d44c20cd26 GIT binary patch literal 124 zcmZ?q3wCB;VqjRK{Q6Xq>2Kc6nkT;%Z`>at>Uj9aQ{^>>p6yw{<#d9ddA`K_|5h54 zZY=O}n8R$k=uBeKY^nAImXoaS@G?$Vu!{e%^nRn$8(ajoq#n!YsJ>Bb9h_nmH|rs* Zjezr6?cm#vN1*bN3$9y$aOtJnI{=8hINSgL literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_salsa.cert b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/1_salsa.cert new file mode 100644 index 0000000000000000000000000000000000000000..17e447fc339b7e1d19d078e43cdf685cacacc6a6 GIT binary patch literal 124 zcmZ?q3wCB;WMIgAwlO39lENChev9wxW`*9^Gh<>UL+HN?+Y6ln=LrYz-7<~Wd%>L_ zZ)6gh*IiQ-jL1GUW3N=mgDslsmZehtEKG-`_Zyww;3BXk^;kwn^^Icd;1r{{Sr1ul Y1f0)m2j6yt$ww|Y%?ZM#m(F(r0G>)XPXGV_ literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.cert b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.cert new file mode 100644 index 0000000000000000000000000000000000000000..ebf8ac108d141a1d247ec4c08c4bb37ec13508db GIT binary patch literal 124 zcmZ?q3wCB;WMH`6a7UVRBhw!4878b(`7W`zS!C{GU`Yy{(A$`lwt07=)whXUtF1YM`(lvI1LnT6eL)A8bEhkvyY#B&;w$kRKT};77xas3 YnoQkTYfxtflaJ6_^a6yV_^)LE07hy#^8f$< literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.key b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.key new file mode 100644 index 0000000..c299f55 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2.key @@ -0,0 +1 @@ +m7Ÿñâƒx;‘%׸õé*•ÜR¯äÓ¯¹mDªñ \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2_chacha.cert b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/2_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..ed4ec26065a60f958ac8797b0515f692e2561152 GIT binary patch literal 124 zcmZ?q3wCB;VqjQp_UOOX7bc&L>5}pFB|+1_1)bhB^9Ng}QrFrVcYU1&Gx)jI?6{M# z{^oz3MM9f&Q`o;{8!&rDpDmZtJmbW)kn8K`@cnzEZd|I6JoA0+Vn2LPf}JkrbK?xa|s(C2#RraymOa5q+ zm`UrFB~;fg48Qo~I@8&j^IF`CRMuaLX8Za%eE;648<#31&wO9|xTH&HQQeHcm*uNs Ym~u@y{yi{($ww|Y%?ZM#m(F(r03OOaw*UYD literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.conf b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.conf new file mode 100644 index 0000000..44b0ca8 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.conf @@ -0,0 +1,27 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + interface: 0.0.0.0 + interface: 0.0.0.0@@DNSCRYPT_PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + +dnscrypt: + dnscrypt-enable: yes + dnscrypt-port: @DNSCRYPT_PORT@ + dnscrypt-provider: 2.dnscrypt-cert.example.com. + dnscrypt-secret-key: 1.key + dnscrypt-secret-key: 2.key + dnscrypt-provider-cert: 1_salsa.cert + dnscrypt-provider-cert: 2_chacha.cert + dnscrypt-provider-cert: 2_salsa.cert + diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.dsc b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.dsc new file mode 100644 index 0000000..a5ed1da --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.dsc @@ -0,0 +1,16 @@ +BaseName: dnscrypt_cert_chacha +Version: 1.0 +Description: dnscrypt cert retrieval. +CreationDate: Fri Mar 03 10:08:08 CEST 2017 +Maintainer: Emmanuel Bretelle +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dnscrypt_cert_chacha.pre +Post: dnscrypt_cert_chacha.post +Test: dnscrypt_cert_chacha.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.post b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.post new file mode 100644 index 0000000..54337df --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.post @@ -0,0 +1,17 @@ +# #-- dnscrypt_cert_chacha.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + +kill_pid $FWD_PID +if [ $xchacha20 -ne 0 ]; then + kill_pid $UNBOUND_PID +fi diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.pre b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.pre new file mode 100644 index 0000000..c77290a --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.pre @@ -0,0 +1,43 @@ +# #-- dnscrypt_cert_chacha.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +DNSCRYPT_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "DNSCRYPT_PORT=$DNSCRYPT_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dnscrypt_cert_chacha.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' \ + -e 's/@DNSCRYPT_PORT\@/'$DNSCRYPT_PORT'/' < dnscrypt_cert_chacha.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +if [ $xchacha20 -eq 0 ]; then + # no xchacha20 support, we expect unbound to exit with an error message. + wait_server_up unbound.log "Certificate for XChacha20 but libsodium does not support it" +else + wait_unbound_up unbound.log +fi + diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.test b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.test new file mode 100644 index 0000000..4ef6942 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.test @@ -0,0 +1,130 @@ +# #-- dnscrypt_cert_chacha.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# Check if we can run the test. +. ./precheck.sh + +# do the test + +if [ $xchacha20 -eq 0 ]; then + # Unbound would exit before we can attempt any tests. + echo "OK" + exit 0 +fi + +# Query plain request over DNSCrypt channel get closed +# We use TCP to avoid hanging on waiting for UDP. +# We expect `outfile` to contain no DNS payload +echo "> dig TCP www.example.com. DNSCrypt port" +dig +tcp @127.0.0.1 -p $DNSCRYPT_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "QUESTION SECTION" outfile; then + echo "NOK" + exit 1 +else + echo "OK" +fi + + +# Plaintext query on unbound port works correctly. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# Plaintext query on unbound port works correctly with TCP. +echo "> dig TCP www.example.com." +dig +tcp @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +for opt in '' '+tcp' +do + # Plaintext query on dnscrypt port returns cert when asking for providername/TXT. + # Check that it returns 1.cert. + echo "> dig TXT 2.dnscrypt-cert.example.com. 1_salsa.CERT. DNSCrypt plaintext ${opt}" + dig ${opt} @127.0.0.1 -p $DNSCRYPT_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000i\230\177hg\210 \172>\1438\247\174\154U\216\188\152\145y\000U\254\208\183qBQ\158\019S\189\180\150\013K\160\220\248\236\028`\131\174\214!\017Xk\202\152\189\026T\224\180)'"'"'9u\026\143\004\002\195\027\1912\203\176D\016\180e\198h\136{\216s;Sd2^\154\225\005<\016C\205+S\219A\195\027\1912\203\176D\016Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi + + # Plaintext query on dnscrypt port returns cert when asking for providername/TXT. + # Check that it returns 2.cert. + echo "> dig TXT 2.dnscrypt-cert.example.com. 2_salsa.CERT. DNSCrypt plaintext ${opt}" + dig ${opt} @127.0.0.1 -p $DNSCRYPT_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000AX\031\201\243\201LI<-\146]LU\247LY\2376\014K\194$D\151&\008\236\008\220\143We\029\227\030\233\015[4\\\146\174\166`{}\161W\209\228\215\002\205|\207*\011\162$\175\210[\006\245\243W\191\189Z\216\210x\025\204\247\173\227t\138\018\162~\152\253\211\031z\\\002m5\008\254\2244\245\243W\191\189Z\216\210Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "NOK" + exit 1 + fi + + # Plaintext query on dnscrypt port returns cert when asking for providername/TXT. + # Check that it returns 2_chacha.cert + echo "> dig TXT 2.dnscrypt-cert.example.com. 2_CHACHA.CERT. DNSCrypt plaintext ${opt}" + dig ${opt} @127.0.0.1 -p $DNSCRYPT_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + grep -F 'DNSC\000\002\000\000\1716\226\255*\244\002L\177g\025_\127tR\151\246R\203\178\153\248\006\137\"\138\173|G/,\160\152\015\010\172\184\220`\175\217\255,\162\018\178-d\007\246k0\003I[\205w\026)\204B\002\161\010\245\243W\191\189Z\216\210x\025\204\247\173\227t\138\018\162~\152\253\211\031z\\\002m5\008\254\2244\246\243W\191\189Z\216\210Y\160\2158Y\160\2158u\210\219\184' outfile + cert_found=$? + if [ \( $cert_found -eq 0 -a $xchacha20 -eq 1 \) -o \( $cert_found -ne 0 -a $xchacha20 -eq 0 \) ]; then + echo "OK" + else + echo "Not OK" + exit 1 + fi + + # Certificates are local-data for unbound. We can also retrieve them from unbound + # port. + echo "> dig TXT 2.dnscrypt-cert.example.com. 1_salsa.CERT. Unbound ${opt}" + dig ${opt} @127.0.0.1 -p $UNBOUND_PORT 2.dnscrypt-cert.example.com. TXT | tee outfile + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "> check answer" + if grep -F 'DNSC\000\001\000\000i\230\177hg\210 \172>\1438\247\174\154U\216\188\152\145y\000U\254\208\183qBQ\158\019S\189\180\150\013K\160\220\248\236\028`\131\174\214!\017Xk\202\152\189\026T\224\180)'"'"'9u\026\143\004\002\195\027\1912\203\176D\016\180e\198h\136{\216s;Sd2^\154\225\005<\016C\205+S\219A\195\027\1912\203\176D\016Y\160\203\009Y\160\203\009u\210\207\137' outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi +done + +exit 0 diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.testns b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.testns new file mode 100644 index 0000000..0af820e --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/dnscrypt_cert_chacha.testns @@ -0,0 +1,26 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA TC NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/dnscrypt_cert_chacha.tdir/precheck.sh b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/precheck.sh new file mode 100644 index 0000000..00fa4bc --- /dev/null +++ b/external/unbound/testdata/dnscrypt_cert_chacha.tdir/precheck.sh @@ -0,0 +1,16 @@ +# dnscrypt precheck.sh + +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + +# if no xchacha20 support in unbound; exit +if grep "define USE_DNSCRYPT_XCHACHA20 1" $PRE/config.h; then + xchacha20=1 +else + xchacha20=0 +fi diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/1.cert b/external/unbound/testdata/dnscrypt_queries.tdir/1.cert new file mode 100644 index 0000000000000000000000000000000000000000..fbc529bfa3abc64f84dcde8b7b41c48375059d29 GIT binary patch literal 124 zcmZ?q3wCB;WMI$^4_>YA@9W0=!HOrL)J1l346k%r+{*9ITNvN5oV_a(_1U)|(a%KU zO3p_64?2x$GLs#%b_AcTHQbQ;XrGlJxBp!B=wh?NX$>m{yiAi_-hQ(BWxyJGdf}v& WR?VzpJ$;yb_&$?YARIYABMSg@x-xbE literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/1.key b/external/unbound/testdata/dnscrypt_queries.tdir/1.key new file mode 100644 index 0000000..165262c --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/1.key @@ -0,0 +1 @@ +®öÝìK¬‡#‘€4ùsŽ pèÖôÁæÀx!¹»AŠ"mM \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/1_chacha.cert b/external/unbound/testdata/dnscrypt_queries.tdir/1_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..3da5c612d06020c86edda3d99a31d9d44c20cd26 GIT binary patch literal 124 zcmZ?q3wCB;VqjRK{Q6Xq>2Kc6nkT;%Z`>at>Uj9aQ{^>>p6yw{<#d9ddA`K_|5h54 zZY=O}n8R$k=uBeKY^nAImXoaS@G?$Vu!{e%^nRn$8(ajoq#n!YsJ>Bb9h_nmH|rs* Zjezr6?cm#vN1*bN3$9y$aOtJnI{=8hINSgL literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/1_salsa.cert b/external/unbound/testdata/dnscrypt_queries.tdir/1_salsa.cert new file mode 100644 index 0000000000000000000000000000000000000000..17e447fc339b7e1d19d078e43cdf685cacacc6a6 GIT binary patch literal 124 zcmZ?q3wCB;WMIgAwlO39lENChev9wxW`*9^Gh<>UL+HN?+Y6ln=LrYz-7<~Wd%>L_ zZ)6gh*IiQ-jL1GUW3N=mgDslsmZehtEKG-`_Zyww;3BXk^;kwn^^Icd;1r{{Sr1ul Y1f0)m2j6yt$ww|Y%?ZM#m(F(r0G>)XPXGV_ literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/2.cert b/external/unbound/testdata/dnscrypt_queries.tdir/2.cert new file mode 100644 index 0000000000000000000000000000000000000000..ebf8ac108d141a1d247ec4c08c4bb37ec13508db GIT binary patch literal 124 zcmZ?q3wCB;WMH`6a7UVRBhw!4878b(`7W`zS!C{GU`Yy{(A$`lwt07=)whXUtF1YM`(lvI1LnT6eL)A8bEhkvyY#B&;w$kRKT};77xas3 YnoQkTYfxtflaJ6_^a6yV_^)LE07hy#^8f$< literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/2.key b/external/unbound/testdata/dnscrypt_queries.tdir/2.key new file mode 100644 index 0000000..c299f55 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/2.key @@ -0,0 +1 @@ +m7Ÿñâƒx;‘%׸õé*•ÜR¯äÓ¯¹mDªñ \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/2_chacha.cert b/external/unbound/testdata/dnscrypt_queries.tdir/2_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..ed4ec26065a60f958ac8797b0515f692e2561152 GIT binary patch literal 124 zcmZ?q3wCB;VqjQp_UOOX7bc&L>5}pFB|+1_1)bhB^9Ng}QrFrVcYU1&Gx)jI?6{M# z{^oz3MM9f&Q`o;{8!&rDpDmZtJmbW)kn8K`@cnzEZd|I6JoA0+Vn2LPf}JkrbK?xa|s(C2#RraymOa5q+ zm`UrFB~;fg48Qo~I@8&j^IF`CRMuaLX8Za%eE;648<#31&wO9|xTH&HQQeHcm*uNs Ym~u@y{yi{($ww|Y%?ZM#m(F(r03OOaw*UYD literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.conf b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.conf new file mode 100644 index 0000000..355d4ff --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.conf @@ -0,0 +1,26 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + interface: 0.0.0.0 + interface: 0.0.0.0@@DNSCRYPT_PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + +dnscrypt: + dnscrypt-enable: yes + dnscrypt-port: @DNSCRYPT_PORT@ + dnscrypt-provider: 2.dnscrypt-cert.example.com. + dnscrypt-secret-key: 1.key + dnscrypt-secret-key: 2.key + dnscrypt-provider-cert: 1_salsa.cert + dnscrypt-provider-cert: 2_salsa.cert + diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.dsc b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.dsc new file mode 100644 index 0000000..e1e653e --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.dsc @@ -0,0 +1,16 @@ +BaseName: dnscrypt_queries +Version: 1.0 +Description: dnscrypt queries. +CreationDate: Fri Mar 03 10:08:08 CEST 2017 +Maintainer: Emmanuel Bretelle +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dnscrypt_queries.pre +Post: dnscrypt_queries.post +Test: dnscrypt_queries.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.post b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.post new file mode 100644 index 0000000..b614806 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.post @@ -0,0 +1,20 @@ +# #-- dnscrypt_queries.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +kill_pid $PROXY_PID diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.pre b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.pre new file mode 100644 index 0000000..288a665 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.pre @@ -0,0 +1,53 @@ +# #-- dnscrypt_queries.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + +get_random_port 4 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +DNSCRYPT_PORT=$(($RND_PORT + 2)) +PROXY_PORT=$(($RND_PORT + 3)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "DNSCRYPT_PORT=$DNSCRYPT_PORT" >> .tpkg.var.test +echo "PROXY_PORT=$PROXY_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dnscrypt_queries.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +dnscrypt-proxy --local-address=127.0.0.1:${PROXY_PORT} \ + --resolver-address=127.0.0.1:${DNSCRYPT_PORT} \ + --provider-name=2.dnscrypt-cert.example.com \ + --provider-key=B85F:41A1:4F23:F7DB:C866:F397:CC6F:44B6:5F9D:65C5:B629:7C27:5403:A6E9:DCF2:4F9D \ + -m 32 \ + >dnscryptproxy.log 2>&1 & +PROXY_PID=$! +echo "PROXY_PID=$PROXY_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' \ + -e 's/@DNSCRYPT_PORT\@/'$DNSCRYPT_PORT'/' < dnscrypt_queries.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log +wait_server_up dnscryptproxy.log "Proxying from" diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.test b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.test new file mode 100644 index 0000000..5614a44 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.test @@ -0,0 +1,107 @@ +# #-- dnscrypt_queries.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + + +# do the test +for opt in '' '+tcp' +do + echo "> do queries ${opt}" + dig @127.0.0.1 ${opt} -p $PROXY_PORT www1.example.com. >outfile1 & + digpid1=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www2.example.com. >outfile2 & + digpid2=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www3.example.com. >outfile3 & + digpid3=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www4.example.com. >outfile4 & + digpid4=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www5.example.com. >outfile5 & + digpid5=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www6.example.com. >outfile6 & + digpid6=$! + sleep 1 + kill -9 $digpid1 + kill -9 $digpid2 + kill -9 $digpid3 + kill -9 $digpid4 + kill -9 $digpid5 + kill -9 $digpid6 + + echo "> cat outfile1" + cat outfile1 + echo "> cat outfile2" + cat outfile2 + echo "> cat outfile3" + cat outfile3 + echo "> cat outfile4" + cat outfile4 + echo "> cat outfile5" + cat outfile5 + echo "> cat outfile6" + cat outfile6 + echo "> cat logfiles" + cat fwd.log + cat unbound.log + + echo "> check for ID bit collisions" + grep "pending reply" unbound.log > ids + numsend=`cat ids | wc -l` + cat ids | awk '{print $8};' | sort -u > ids2 + numuniq=`cat ids2 | wc -l` + if test $numuniq -ne $numsend; then + echo "got a ID number clash. could not do test, sorry" + exit 0 + fi + + echo "> check answers for queries" + if grep "10.20.30.40" outfile1; then + echo "1 is OK" + else + echo "1 is not OK" + exit 1 + fi + if grep "10.20.30.50" outfile2; then + echo "2 is OK" + else + echo "2 is not OK" + exit 1 + fi + if grep "10.20.30.60" outfile3; then + echo "3 is OK" + else + echo "3 is not OK" + exit 1 + fi + if grep "10.20.30.70" outfile4; then + echo "4 is OK" + else + echo "4 is not OK" + exit 1 + fi + if grep "10.20.30.80" outfile5; then + echo "5 is OK" + else + echo "5 is not OK" + exit 1 + fi + if grep "10.20.30.90" outfile6; then + echo "6 is OK" + else + echo "6 is not OK" + exit 1 + fi +done + +exit 0 diff --git a/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.testns b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.testns new file mode 100644 index 0000000..f03c15f --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries.tdir/dnscrypt_queries.testns @@ -0,0 +1,63 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.70 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.80 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.90 +ENTRY_END diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1.key b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1.key new file mode 100644 index 0000000..165262c --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1.key @@ -0,0 +1 @@ +®öÝìK¬‡#‘€4ùsŽ pèÖôÁæÀx!¹»AŠ"mM \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_chacha.cert b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..3da5c612d06020c86edda3d99a31d9d44c20cd26 GIT binary patch literal 124 zcmZ?q3wCB;VqjRK{Q6Xq>2Kc6nkT;%Z`>at>Uj9aQ{^>>p6yw{<#d9ddA`K_|5h54 zZY=O}n8R$k=uBeKY^nAImXoaS@G?$Vu!{e%^nRn$8(ajoq#n!YsJ>Bb9h_nmH|rs* Zjezr6?cm#vN1*bN3$9y$aOtJnI{=8hINSgL literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_salsa.cert b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/1_salsa.cert new file mode 100644 index 0000000000000000000000000000000000000000..17e447fc339b7e1d19d078e43cdf685cacacc6a6 GIT binary patch literal 124 zcmZ?q3wCB;WMIgAwlO39lENChev9wxW`*9^Gh<>UL+HN?+Y6ln=LrYz-7<~Wd%>L_ zZ)6gh*IiQ-jL1GUW3N=mgDslsmZehtEKG-`_Zyww;3BXk^;kwn^^Icd;1r{{Sr1ul Y1f0)m2j6yt$ww|Y%?ZM#m(F(r0G>)XPXGV_ literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/2.key b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/2.key new file mode 100644 index 0000000..c299f55 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/2.key @@ -0,0 +1 @@ +m7Ÿñâƒx;‘%׸õé*•ÜR¯äÓ¯¹mDªñ \ No newline at end of file diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/2_chacha.cert b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/2_chacha.cert new file mode 100644 index 0000000000000000000000000000000000000000..ed4ec26065a60f958ac8797b0515f692e2561152 GIT binary patch literal 124 zcmZ?q3wCB;VqjQp_UOOX7bc&L>5}pFB|+1_1)bhB^9Ng}QrFrVcYU1&Gx)jI?6{M# z{^oz3MM9f&Q`o;{8!&rDpDmZtJmbW)kn8K`@cnzEZd|I6JoA0+Vn2LPf}JkrbK?xa|s(C2#RraymOa5q+ zm`UrFB~;fg48Qo~I@8&j^IF`CRMuaLX8Za%eE;648<#31&wO9|xTH&HQQeHcm*uNs Ym~u@y{yi{($ww|Y%?ZM#m(F(r03OOaw*UYD literal 0 HcmV?d00001 diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.conf b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.conf new file mode 100644 index 0000000..9e269ba --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.conf @@ -0,0 +1,24 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + interface: 0.0.0.0 + interface: 0.0.0.0@@DNSCRYPT_PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + +dnscrypt: + dnscrypt-enable: yes + dnscrypt-port: @DNSCRYPT_PORT@ + dnscrypt-provider: 2.dnscrypt-cert.example.com. + dnscrypt-secret-key: 2.key + dnscrypt-provider-cert: 2_salsa.cert + dnscrypt-provider-cert: 2_chacha.cert diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.dsc b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.dsc new file mode 100644 index 0000000..372126b --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.dsc @@ -0,0 +1,16 @@ +BaseName: dnscrypt_queries_chacha +Version: 1.0 +Description: dnscrypt queries using xchacha +CreationDate: Thu Jun 01 10:08:08 CEST 2017 +Maintainer: Emmanuel Bretelle +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dnscrypt_queries_chacha.pre +Post: dnscrypt_queries_chacha.post +Test: dnscrypt_queries_chacha.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.post b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.post new file mode 100644 index 0000000..1ca6a7e --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.post @@ -0,0 +1,17 @@ +# #-- dnscrypt_queries_chacha.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +. ../common.sh + +# Check if we can run the test. +. ./precheck.sh + + +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +kill_pid $PROXY_PID diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.pre b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.pre new file mode 100644 index 0000000..6474c54 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.pre @@ -0,0 +1,52 @@ +# #-- dnscrypt_queries_chacha.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# Check if we can run the test. +. ./precheck.sh + +get_random_port 4 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +DNSCRYPT_PORT=$(($RND_PORT + 2)) +PROXY_PORT=$(($RND_PORT + 3)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "DNSCRYPT_PORT=$DNSCRYPT_PORT" >> .tpkg.var.test +echo "PROXY_PORT=$PROXY_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dnscrypt_queries_chacha.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +dnscrypt-proxy --local-address=127.0.0.1:${PROXY_PORT} \ + --resolver-address=127.0.0.1:${DNSCRYPT_PORT} \ + --provider-name=2.dnscrypt-cert.example.com \ + --provider-key=C352:1F20:F2D2:FD65:B5F4:7BF6:6C1A:88C1:4BCB:80CE:1E3A:3572:5CB1:7D4B:12D3:E783 \ + -m 32 \ + >dnscryptproxy.log 2>&1 & +PROXY_PID=$! +echo "PROXY_PID=$PROXY_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' \ + -e 's/@DNSCRYPT_PORT\@/'$DNSCRYPT_PORT'/' < dnscrypt_queries_chacha.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log +wait_server_up dnscryptproxy.log "Proxying from" +if ! grep 'Using version 2.0 of the DNSCrypt protocol' dnscryptproxy.log; then + echo "Failed to select xchacha cert" + exit 1 +fi diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.test b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.test new file mode 100644 index 0000000..455c506 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.test @@ -0,0 +1,101 @@ +# #-- dnscrypt_queries_chacha.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# Check if we can run the test. +. ./precheck.sh + +# do the test +for opt in '' '+tcp' +do + echo "> do queries ${opt}" + dig @127.0.0.1 ${opt} -p $PROXY_PORT www1.example.com. >outfile1 & + digpid1=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www2.example.com. >outfile2 & + digpid2=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www3.example.com. >outfile3 & + digpid3=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www4.example.com. >outfile4 & + digpid4=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www5.example.com. >outfile5 & + digpid5=$! + dig @127.0.0.1 ${opt} -p $PROXY_PORT www6.example.com. >outfile6 & + digpid6=$! + sleep 1 + kill -9 $digpid1 + kill -9 $digpid2 + kill -9 $digpid3 + kill -9 $digpid4 + kill -9 $digpid5 + kill -9 $digpid6 + + echo "> cat outfile1" + cat outfile1 + echo "> cat outfile2" + cat outfile2 + echo "> cat outfile3" + cat outfile3 + echo "> cat outfile4" + cat outfile4 + echo "> cat outfile5" + cat outfile5 + echo "> cat outfile6" + cat outfile6 + echo "> cat logfiles" + cat fwd.log + cat unbound.log + + echo "> check for ID bit collisions" + grep "pending reply" unbound.log > ids + numsend=`cat ids | wc -l` + cat ids | awk '{print $8};' | sort -u > ids2 + numuniq=`cat ids2 | wc -l` + if test $numuniq -ne $numsend; then + echo "got a ID number clash. could not do test, sorry" + exit 0 + fi + + echo "> check answers for queries" + if grep "10.20.30.40" outfile1; then + echo "1 is OK" + else + echo "1 is not OK" + exit 1 + fi + if grep "10.20.30.50" outfile2; then + echo "2 is OK" + else + echo "2 is not OK" + exit 1 + fi + if grep "10.20.30.60" outfile3; then + echo "3 is OK" + else + echo "3 is not OK" + exit 1 + fi + if grep "10.20.30.70" outfile4; then + echo "4 is OK" + else + echo "4 is not OK" + exit 1 + fi + if grep "10.20.30.80" outfile5; then + echo "5 is OK" + else + echo "5 is not OK" + exit 1 + fi + if grep "10.20.30.90" outfile6; then + echo "6 is OK" + else + echo "6 is not OK" + exit 1 + fi +done + +exit 0 diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.testns b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.testns new file mode 100644 index 0000000..f03c15f --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/dnscrypt_queries_chacha.testns @@ -0,0 +1,63 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.70 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.80 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.90 +ENTRY_END diff --git a/external/unbound/testdata/dnscrypt_queries_chacha.tdir/precheck.sh b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/precheck.sh new file mode 100644 index 0000000..8288d95 --- /dev/null +++ b/external/unbound/testdata/dnscrypt_queries_chacha.tdir/precheck.sh @@ -0,0 +1,27 @@ +# dnscrypt precheck.sh + +# if no dnscrypt; exit +if grep "define USE_DNSCRYPT 1" $PRE/config.h; then + echo "have dnscrypt" +else + echo "no dnscrypt" + exit 0 +fi + +# if no xchacha20 support in unbound; exit +if grep "define USE_DNSCRYPT_XCHACHA20 1" $PRE/config.h; then + echo "have xchacha20" + xchacha20=1 +else + echo "no xchacha20" + xchacha20=0 + exit 0 +fi + +# if dnscrypt-proxy does not support xchacha20; exit +if (dnscrypt-proxy -h 2>&1 | grep -q 'XChaCha20-Poly1305 cipher: present'); then + echo "dnscrypt-proxy has xchacha20" +else + echo "dnscrypt-proxy does not have xchacha20" + exit 0 +fi diff --git a/external/unbound/testdata/domain_insec_dlv.rpl b/external/unbound/testdata/domain_insec_dlv.rpl new file mode 100644 index 0000000..8c89a70 --- /dev/null +++ b/external/unbound/testdata/domain_insec_dlv.rpl @@ -0,0 +1,276 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + domain-insecure: "example.net" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with domain-insecure below a DLV +; positive response for DLV. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/domain_insec_ds.rpl b/external/unbound/testdata/domain_insec_ds.rpl new file mode 100644 index 0000000..2cd6055 --- /dev/null +++ b/external/unbound/testdata/domain_insec_ds.rpl @@ -0,0 +1,213 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + domain-insecure: "sub.example.com" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with domain-insecure below a DS + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.conf b/external/unbound/testdata/edns_cache.tdir/edns_cache.conf new file mode 100644 index 0000000..101b975 --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.conf @@ -0,0 +1,21 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: ::1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +stub-zone: + name: "example.net" + stub-addr: "127.0.0.1@@STUB2_PORT@" +stub-zone: + name: "example.com" + stub-addr: "127.0.0.1@@STUB2_PORT@" +# a k a root hints +stub-zone: + name: "." + stub-addr: "::1@@STUB1_PORT@" diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.dsc b/external/unbound/testdata/edns_cache.tdir/edns_cache.dsc new file mode 100644 index 0000000..57f47dc --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.dsc @@ -0,0 +1,16 @@ +BaseName: edns_cache +Version: 1.0 +Description: Server does not support EDNS and cache this. +CreationDate: Tue Nov 30 12:34:37 CET 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: edns_cache.pre +Post: edns_cache.post +Test: edns_cache.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.post b/external/unbound/testdata/edns_cache.tdir/edns_cache.post new file mode 100644 index 0000000..0c3ed4c --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.post @@ -0,0 +1,11 @@ +# #-- edns_cache.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $STUB1_PID +kill_pid $STUB2_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.pre b/external/unbound/testdata/edns_cache.tdir/edns_cache.pre new file mode 100644 index 0000000..93d5213 --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.pre @@ -0,0 +1,43 @@ +# #-- edns_cache.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +STUB1_PORT=$(($RND_PORT + 1)) +STUB2_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "STUB1_PORT=$STUB1_PORT" >> .tpkg.var.test +echo "STUB2_PORT=$STUB2_PORT" >> .tpkg.var.test + +# start stub1 +get_ldns_testns +$LDNS_TESTNS -6 -p $STUB1_PORT edns_cache.stub1 >stub1.log 2>&1 & +STUB1_PID=$! +echo "STUB1_PID=$STUB1_PID" >> .tpkg.var.test + +# start stub2 +$LDNS_TESTNS -p $STUB2_PORT edns_cache.stub2 >stub2.log 2>&1 & +STUB2_PID=$! +echo "STUB2_PID=$STUB2_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@STUB1_PORT\@/'$STUB1_PORT'/' -e 's/@STUB2_PORT\@/'$STUB2_PORT'/' < edns_cache.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test + +# wait for stubs to come up +wait_ldns_testns_up stub1.log +wait_ldns_testns_up stub2.log + +# wait for unbound to come up +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.stub1 b/external/unbound/testdata/edns_cache.tdir/edns_cache.stub1 new file mode 100644 index 0000000..23653c3 --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.stub1 @@ -0,0 +1,43 @@ +; nameserver test file +; this is ::1 and the EDNS working server. +$ORIGIN . +$TTL 3600 + +; root prime +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS root.server. +SECTION AUTHORITY +SECTION ADDITIONAL +root.server. IN A 127.0.0.1 +ENTRY_END + +; referral to example.com +ENTRY_BEGIN +MATCH opcode subdomain +REPLY QR NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS netdns.example.net. +ENTRY_END + +; referral to example.net +ENTRY_BEGIN +MATCH opcode subdomain +REPLY QR NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS netdns.example.net. +SECTION ADDITIONAL +netdns.example.net. IN A 127.0.0.1 +ENTRY_END + diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.stub2 b/external/unbound/testdata/edns_cache.tdir/edns_cache.stub2 new file mode 100644 index 0000000..f70eb98 --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.stub2 @@ -0,0 +1,33 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname noedns +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname noedns +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +netdns.example.net. IN A +SECTION ANSWER +netdns.example.net. IN A 127.0.0.1 +ENTRY_END + +; fail EDNS queries for netdns. +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA FORMERR +ADJUST copy_id +SECTION QUESTION +netdns.example.net. IN A +ENTRY_END + diff --git a/external/unbound/testdata/edns_cache.tdir/edns_cache.test b/external/unbound/testdata/edns_cache.tdir/edns_cache.test new file mode 100644 index 0000000..53931de --- /dev/null +++ b/external/unbound/testdata/edns_cache.tdir/edns_cache.test @@ -0,0 +1,30 @@ +# #-- edns_cache.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +# notice that we use one stub server on IPv6 ::1 that supports EDNS that +# gives referrals to the other server on IPv4 127.0.0.1 that is nonEDNS. + +PRE="../.." +# do the test +echo "> dig netdns.example.net." +dig @::1 -p $UNBOUND_PORT netdns.example.net. | tee outfile +echo "> dig www.example.com." +dig @::1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat stub1.log" +cat stub1.log +echo "> cat stub2.log" +cat stub2.log +echo "> cat unbound.log" +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.conf b/external/unbound/testdata/edns_lame.tdir/edns_lame.conf new file mode 100644 index 0000000..9cd19c0 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.conf @@ -0,0 +1,15 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.dsc b/external/unbound/testdata/edns_lame.tdir/edns_lame.dsc new file mode 100644 index 0000000..83f9725 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.dsc @@ -0,0 +1,16 @@ +BaseName: edns_lame +Version: 1.0 +Description: Forward UDP but EDNS packets time out +CreationDate: Mon Sep 29 16:39:15 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: edns_lame.pre +Post: edns_lame.post +Test: edns_lame.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.post b/external/unbound/testdata/edns_lame.tdir/edns_lame.post new file mode 100644 index 0000000..f71e3c4 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.post @@ -0,0 +1,10 @@ +# #-- edns_lame.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.pre b/external/unbound/testdata/edns_lame.tdir/edns_lame.pre new file mode 100644 index 0000000..d8c2c07 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.pre @@ -0,0 +1,30 @@ +# #-- edns_lame.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -v edns_lame.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < edns_lame.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -vvvv -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.test b/external/unbound/testdata/edns_lame.tdir/edns_lame.test new file mode 100644 index 0000000..92d6692 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.test @@ -0,0 +1,24 @@ +# #-- edns_lame.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/edns_lame.tdir/edns_lame.testns b/external/unbound/testdata/edns_lame.tdir/edns_lame.testns new file mode 100644 index 0000000..cd248c3 --- /dev/null +++ b/external/unbound/testdata/edns_lame.tdir/edns_lame.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname noedns +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fetch_glue.rpl b/external/unbound/testdata/fetch_glue.rpl new file mode 100644 index 0000000..3ecc28a --- /dev/null +++ b/external/unbound/testdata/fetch_glue.rpl @@ -0,0 +1,210 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Fetch glue when missing or timed out. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +; is missing the glue! +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +; is missing the glue! +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; due to ordering of answer packets, this is still outstanding, remove it +STEP 21 CHECK_OUT_QUERY +ENTRY_BEGIN +ADJUST copy_id +MATCH qname qtype +REPLY QR +SECTION QUESTION +ns.example.com IN AAAA +ENTRY_END + +; some more recursion needed. +; to finish the NS query +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +. IN NS +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION AUTHORITY +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fetch_glue_cname.rpl b/external/unbound/testdata/fetch_glue_cname.rpl new file mode 100644 index 0000000..e8158f9 --- /dev/null +++ b/external/unbound/testdata/fetch_glue_cname.rpl @@ -0,0 +1,222 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Fetch cnamed glue when missing or timed out. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +; is missing the glue! +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +; is missing the glue! +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN CNAME ns2.example.com. +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns2.example.com. IN A +SECTION ANSWER +ns2.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; due to ordering of answer packets, this is still outstanding, remove it +STEP 21 CHECK_OUT_QUERY +ENTRY_BEGIN +ADJUST copy_id +MATCH qname qtype +REPLY QR +SECTION QUESTION +ns.example.com IN AAAA +ENTRY_END + +; some more recursion needed. +; to finish the NS query +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +. IN NS +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION AUTHORITY +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd.rpl b/external/unbound/testdata/fwd.rpl new file mode 100644 index 0000000..53b6f9a --- /dev/null +++ b/external/unbound/testdata/fwd.rpl @@ -0,0 +1,42 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Sample of a valid query +RANGE_BEGIN 0 100 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 + ENTRY_END +RANGE_END +RANGE_BEGIN 200 300 +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; unneccesary nothing steps. +STEP 2 NOTHING +STEP 3 NOTHING +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/fwd_0ttlservfail.rpl b/external/unbound/testdata/fwd_0ttlservfail.rpl new file mode 100644 index 0000000..f1a6dc6 --- /dev/null +++ b/external/unbound/testdata/fwd_0ttlservfail.rpl @@ -0,0 +1,85 @@ +; This is a comment. +; config options go here. +server: + serve-expired: yes +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Zero ttl answer needs to override servfail in cache. +RANGE_BEGIN 0 100 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA SERVFAIL + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER + ENTRY_END +RANGE_END +RANGE_BEGIN 200 300 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. 0 IN A 10.20.30.40 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +; enough to pass by the TTL of the servfail answer in cache +STEP 50 TIME_PASSES ELAPSE 40 + +; this query triggers a prefetch +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 220 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +; this query gets the 0ttl answer +STEP 230 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 240 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 0 IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.conf b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.conf new file mode 100644 index 0000000..022e10f --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.conf @@ -0,0 +1,17 @@ +server: + verbosity: 1 + # num-threads: 1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + interface-automatic: yes + access-control: 0.0.0.0/0 allow + access-control: ::0/0 allow +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.dsc b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.dsc new file mode 100644 index 0000000..eac1c8f --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_ancil +Version: 1.0 +Description: Test if ip6 ancillary recvmsg and sendmsg work. +CreationDate: Tue Jan 15 10:47:37 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_ancil.pre +Post: fwd_ancil.post +Test: fwd_ancil.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.post b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.post new file mode 100644 index 0000000..a74ba85 --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.post @@ -0,0 +1,18 @@ +# #-- fwd_ancil.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +if test `hostname`"" = "dicht.nlnetlabs.nl"; then + echo "In jail, no ::1, skip test" + exit 0 +fi + +kill_pid $FWD_PID +if fgrep "service stopped" unbound.log; then + exit 0 +fi +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.pre b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.pre new file mode 100644 index 0000000..e1ce37a --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.pre @@ -0,0 +1,44 @@ +# #-- fwd_ancil.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +. ../common.sh + +if test `hostname`"" = "dicht.nlnetlabs.nl"; then + echo "In jail, no ::1, skip test" + exit 0 +fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_ancil.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_ancil.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test + +wait_ldns_testns_up fwd.log + +# wait for unbound to come up +# string 'Start of service' in log. +wait_server_up_or_fail unbound.log "start of service" "disable interface-automatic" +if fgrep "disable interface-automatic" unbound.log; then + echo "skip test" + exit 1 +fi + diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.test b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.test new file mode 100644 index 0000000..b90360f --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.test @@ -0,0 +1,101 @@ +# #-- fwd_ancil.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +if test `hostname`"" = "dicht.nlnetlabs.nl"; then + echo "In jail, no ::1, skip test" + exit 0 +fi + +if fgrep "disable interface-automatic" unbound.log; then + echo "skip test" + exit 0 +fi + +get_make +(cd $PRE; $MAKE streamtcp) + +# detect platform support first +echo "> streamtcp -n -u -f 127.0.0.1 www.example.com. A IN" +$PRE/streamtcp -n -u -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN | tee outfile +sleep 2 +echo "> check answer" +if ! grep "Please disable interface-automatic" unbound.log; then + echo "OK" +else + echo "No platform support for ancillary data" + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK - but ignore test" + exit 0 +fi +rm outfile + + +# do the test +echo "> streamtcp -f 127.0.0.1 www.example.com. A IN" +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +rm outfile + +echo "> streamtcp -f ::1 www.example.com. A IN" +$PRE/streamtcp -f ::1@$UNBOUND_PORT www.example.com. A IN | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +rm outfile + +echo "> streamtcp -u -f ::1 www.example.com. A IN" +$PRE/streamtcp -u -f ::1@$UNBOUND_PORT www.example.com. A IN | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +rm outfile + +echo "> streamtcp -u -f 127.0.0.1 www.example.com. A IN" +$PRE/streamtcp -u -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +rm outfile + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +exit 0 diff --git a/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.testns b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/fwd_ancil.tdir/fwd_ancil.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_any.rpl b/external/unbound/testdata/fwd_any.rpl new file mode 100644 index 0000000..4284ee7 --- /dev/null +++ b/external/unbound/testdata/fwd_any.rpl @@ -0,0 +1,161 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Test query and cache with type ANY +RANGE_BEGIN 0 1000 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +www.example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +;; different type in this answer. +www.example.com. IN TXT "text" +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR RD RA NOERROR +SECTION QUESTION +www.foo.com. IN ANY +SECTION ANSWER +www.foo.com. IN A 1.2.3.77 +www.foo.com. IN AAAA ::77 +ENTRY_END + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; unneccesary nothing steps. +STEP 20 NOTHING +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +; test cache synthesis +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END +STEP 50 NOTHING +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +; and again +; the synthesized result itself is not added to the cache +STEP 62 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END +STEP 63 NOTHING +STEP 64 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +; AAAA lookup to add more data in cache +STEP 70 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 80 NOTHING +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::5 +ENTRY_END + +; test cache synthesis of AAAA, and two rrsets. +STEP 100 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END +STEP 110 NOTHING +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. IN AAAA ::5 +ENTRY_END + +; test query that is not synthesized from cache. +STEP 130 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN ANY +ENTRY_END +STEP 140 NOTHING +STEP 150 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.foo.com. IN ANY +SECTION ANSWER +www.foo.com. IN A 1.2.3.77 +www.foo.com. IN AAAA ::77 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.conf b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.conf new file mode 100644 index 0000000..04ec5aa --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.conf @@ -0,0 +1,26 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + fake-sha1: yes +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.dsc b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.dsc new file mode 100644 index 0000000..a578d22 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_bogus +Version: 1.0 +Description: Forward and check bogus TTL in the cache. +CreationDate: Thu Sep 10 10:14:57 CEST 2009 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_bogus.pre +Post: fwd_bogus.post +Test: fwd_bogus.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.post b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.post new file mode 100644 index 0000000..ec91bc7 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.post @@ -0,0 +1,10 @@ +# #-- fwd_bogus.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.pre b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.pre new file mode 100644 index 0000000..b4cf2a0 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.pre @@ -0,0 +1,32 @@ +# #-- fwd_bogus.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_bogus.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < fwd_bogus.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.test b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.test new file mode 100644 index 0000000..743b4e6 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.test @@ -0,0 +1,48 @@ +# #-- fwd_bogus.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +# servfail. +if grep "SERVFAIL" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# now check the cache. +$PRE/unbound-control -c ub.conf dump_cache > cachedump +if test $? -ne 0; then + echo "unbound-control failed" + cat cachedump + exit 1 +else + echo "unbound-control ok" +fi + +# bad cache entry looks like this +# msg www.example.com. IN A 32896 1 1252576696 1 1 0 0 +cat cachedump + +ttl=`grep "msg www.example.com" cachedump | awk '{print $7}'` +echo TTL $ttl +# must be smaller than bogus ttl of 60. +if test $ttl -gt 61; then + echo "failed: TTL too big!" + exit 1 +else + echo "TTL OK" +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.testns b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.testns new file mode 100644 index 0000000..258c0e9 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/fwd_bogus.testns @@ -0,0 +1,25 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +; give unsigned answers! +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +@ IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_bogus.tdir/unbound_control.key b/external/unbound/testdata/fwd_bogus.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/fwd_bogus.tdir/unbound_control.pem b/external/unbound/testdata/fwd_bogus.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/fwd_bogus.tdir/unbound_server.key b/external/unbound/testdata/fwd_bogus.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/fwd_bogus.tdir/unbound_server.pem b/external/unbound/testdata/fwd_bogus.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/fwd_bogus.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/fwd_cached.rpl b/external/unbound/testdata/fwd_cached.rpl new file mode 100644 index 0000000..23b4a08 --- /dev/null +++ b/external/unbound/testdata/fwd_cached.rpl @@ -0,0 +1,73 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Query receives answer from the cache + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; another query, same, so it must be answered from the cache +STEP 5 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; immediate answer without an OUT_QUERY happening (checked on exit) +; also, the answer does not have AA set +STEP 6 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.conf b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.conf new file mode 100644 index 0000000..dbb2eb8 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.conf @@ -0,0 +1,16 @@ +server: + verbosity: 4 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.dsc b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.dsc new file mode 100644 index 0000000..0899dc5 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_capsid +Version: 1.0 +Description: Forward and check 0x20 bits. +CreationDate: Mon Oct 6 16:25:09 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_capsid.pre +Post: fwd_capsid.post +Test: fwd_capsid.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.post b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.post new file mode 100644 index 0000000..6ecf912 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.post @@ -0,0 +1,10 @@ +# #-- fwd_capsid.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.pre b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.pre new file mode 100644 index 0000000..16365a4 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.pre @@ -0,0 +1,31 @@ +# #-- fwd_capsid.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_capsid.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_capsid.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.test b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.test new file mode 100644 index 0000000..8b49691 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.test @@ -0,0 +1,22 @@ +# #-- fwd_capsid.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.testns b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.testns new file mode 100644 index 0000000..8bb1b9d --- /dev/null +++ b/external/unbound/testdata/fwd_capsid.tdir/fwd_capsid.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.conf b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.conf new file mode 100644 index 0000000..dbb2eb8 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.conf @@ -0,0 +1,16 @@ +server: + verbosity: 4 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.dsc b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.dsc new file mode 100644 index 0000000..3b87345 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_capsid_fallback +Version: 1.0 +Description: Forward and do 0x20 fallback. +CreationDate: Mon Oct 6 16:30:15 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_capsid_fallback.pre +Post: fwd_capsid_fallback.post +Test: fwd_capsid_fallback.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.post b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.post new file mode 100644 index 0000000..81c334a --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.post @@ -0,0 +1,10 @@ +# #-- fwd_capsid_fallback.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.pre b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.pre new file mode 100644 index 0000000..0558bea --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.pre @@ -0,0 +1,30 @@ +# #-- fwd_capsid_fallback.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_capsid_fallback.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_capsid_fallback.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.test b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.test new file mode 100644 index 0000000..eba834f --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.test @@ -0,0 +1,22 @@ +# #-- fwd_capsid_fallback.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT wwwabcdefghijklmnopqrstuvwxyzwww.example.com | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.testns b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.testns new file mode 100644 index 0000000..f0d809e --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_fallback.tdir/fwd_capsid_fallback.testns @@ -0,0 +1,15 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +; WEIRD CAPS! ; probably not the query! +WwWabcdefghijklmnopqrstuvwxyzWwW.ExAMPLE.CoM. IN A +SECTION ANSWER +wWwABCDEFGHIJKLMNopqrstuvwxyzWwW.ExAMPLE.CoM. IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.conf b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.conf new file mode 100644 index 0000000..8d077d1 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.conf @@ -0,0 +1,17 @@ +server: + verbosity: 4 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + forward-addr: "127.0.0.1@@TOPORT2@" + diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.dsc b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.dsc new file mode 100644 index 0000000..b40a540 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_capsid_strip +Version: 1.0 +Description: Forward and do 0x20 fallback that needs stripping. +CreationDate: Fri 30 Jan 10:41:33 CET 2015 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_capsid_strip.pre +Post: fwd_capsid_strip.post +Test: fwd_capsid_strip.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.post b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.post new file mode 100644 index 0000000..7ca39f5 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.post @@ -0,0 +1,11 @@ +# #-- fwd_capsid_strip.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $FWD_PID2 +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.pre b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.pre new file mode 100644 index 0000000..e761d11 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.pre @@ -0,0 +1,38 @@ +# #-- fwd_capsid_strip.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +FWD2_PORT=$(($FWD_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "FWD2_PORT=$FWD2_PORT" >> .tpkg.var.test + +# start forwarder 1 +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_capsid_strip.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start forwarder 2 +$LDNS_TESTNS -p $FWD2_PORT fwd_capsid_strip.testns2 >fwd2.log 2>&1 & +FWD_PID2=$! +echo "FWD_PID2=$FWD_PID2" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@TOPORT2\@/'$FWD2_PORT'/' < fwd_capsid_strip.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_ldns_testns_up fwd2.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.test b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.test new file mode 100644 index 0000000..a74f89f --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.test @@ -0,0 +1,23 @@ +# #-- fwd_capsid_strip.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT wwwabcdefghijklmnopqrstuvwxyzwww.example.com | tee outfile +echo "> cat logfiles" +cat fwd.log +cat fwd2.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns new file mode 100644 index 0000000..e1d82a0 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns @@ -0,0 +1,20 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +; WEIRD CAPS! ; probably not the query! +WwWabcdefghijklmnopqrstuvwxyzWwW.ExAMPLE.CoM. IN A +SECTION ANSWER +wWwABCDEFGHIJKLMNopqrstuvwxyzWwW.ExAMPLE.CoM. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 1.2.3.4 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns2 b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns2 new file mode 100644 index 0000000..77213ab --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_strip.tdir/fwd_capsid_strip.testns2 @@ -0,0 +1,18 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +; WEIRD CAPS! ; probably not the query! +WwWabcdefghijklmnopqrstuvwxyzWwW.ExAMPLE.CoM. IN A +SECTION ANSWER +wWwABCDEFGHIJKLMNopqrstuvwxyzWwW.ExAMPLE.CoM. IN A 10.20.30.40 +SECTION AUTHORITY +SECTION ADDITIONAL +ns2.example.com. IN A 1.2.3.5 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.conf b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.conf new file mode 100644 index 0000000..65552c8 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.conf @@ -0,0 +1,18 @@ +server: + verbosity: 4 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes + caps-whitelist: "example.com" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + forward-addr: "127.0.0.1@@TOPORT2@" + diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.dsc b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.dsc new file mode 100644 index 0000000..3c9f042 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_capsid_white +Version: 1.0 +Description: Forward and and test 0x20 whitelist. +CreationDate: Fri 1 May 14:25:04 CEST 2015 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_capsid_white.pre +Post: fwd_capsid_white.post +Test: fwd_capsid_white.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.post b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.post new file mode 100644 index 0000000..c689872 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.post @@ -0,0 +1,11 @@ +# #-- fwd_capsid_white.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $FWD_PID2 +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.pre b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.pre new file mode 100644 index 0000000..18e801c --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.pre @@ -0,0 +1,38 @@ +# #-- fwd_capsid_white.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +FWD2_PORT=$(($FWD_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "FWD2_PORT=$FWD2_PORT" >> .tpkg.var.test + +# start forwarder 1 +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_capsid_white.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start forwarder 2 +$LDNS_TESTNS -p $FWD2_PORT fwd_capsid_white.testns2 >fwd2.log 2>&1 & +FWD_PID2=$! +echo "FWD_PID2=$FWD_PID2" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@TOPORT2\@/'$FWD2_PORT'/' < fwd_capsid_white.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_ldns_testns_up fwd2.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.test b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.test new file mode 100644 index 0000000..d287259 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.test @@ -0,0 +1,23 @@ +# #-- fwd_capsid_white.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT wwwabcdefghijklmnopqrstuvwxyzwww.example.com | tee outfile +echo "> cat logfiles" +cat fwd.log +cat fwd2.log +cat unbound.log +echo "> check answer" +if grep "10.20.30" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns new file mode 100644 index 0000000..f0d809e --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns @@ -0,0 +1,15 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +; WEIRD CAPS! ; probably not the query! +WwWabcdefghijklmnopqrstuvwxyzWwW.ExAMPLE.CoM. IN A +SECTION ANSWER +wWwABCDEFGHIJKLMNopqrstuvwxyzWwW.ExAMPLE.CoM. IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns2 b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns2 new file mode 100644 index 0000000..7660435 --- /dev/null +++ b/external/unbound/testdata/fwd_capsid_white.tdir/fwd_capsid_white.testns2 @@ -0,0 +1,17 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +; WEIRD CAPS! ; probably not the query! +WwWabcdefghijklmnopqrstuvwxyzWwW.ExAMPLE.CoM. IN A +SECTION ANSWER +wWwABCDEFGHIJKLMNopqrstuvwxyzWwW.ExAMPLE.CoM. IN A 10.20.30.44 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.conf b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.conf new file mode 100644 index 0000000..39bd9f5 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.conf @@ -0,0 +1,15 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.dsc b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.dsc new file mode 100644 index 0000000..6446e61 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_compress_c00c +Version: 1.0 +Description: Forward and check compression of answer to query name. +CreationDate: Mon Oct 15 15:57:03 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_compress_c00c.pre +Post: fwd_compress_c00c.post +Test: fwd_compress_c00c.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.good b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.good new file mode 100644 index 0000000..527895a --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.good @@ -0,0 +1,7 @@ +0000000: 006c eb41 8180 0001 0001 0003 0000 0a6f .l.A...........o +0000010: 7665 7265 696e 6465 7203 6e65 7400 0001 vereinder.net... +0000020: 0001 c00c 0001 0001 0000 0384 0004 5038 ..............P8 +0000030: dfcd c00c 0002 0001 0001 5180 0010 0161 ..........Q....a +0000040: 026e 7305 6a6f 6b65 7203 636f 6d00 c00c .ns.joker.com... +0000050: 0002 0001 0001 5180 0004 0162 c03e c00c ......Q....b.>.. +0000060: 0002 0001 0001 5180 0004 0163 c03e ......Q....c.> diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.post b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.post new file mode 100644 index 0000000..e6dda04 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.post @@ -0,0 +1,10 @@ +# #-- fwd_compress_c00c.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.pre b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.pre new file mode 100644 index 0000000..48dc757 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.pre @@ -0,0 +1,31 @@ +# #-- fwd_compress_c00c.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_compress_c00c.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_compress_c00c.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.test b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.test new file mode 100644 index 0000000..67354d0 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.test @@ -0,0 +1,49 @@ +# #-- fwd_compress_c00c.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +# check what sort of netcat we have +if nc -h 2>&1 | grep "q secs"; then + ncopt="-q 3 -w 2" +else + ncopt="-w 2" +fi + +PRE="../.." +# do the test +echo "> query overeinder.net | nc $ncopt tcp | xxd." +echo "0020eb41010000010000000000000a6f76657265696e646572036e65740000010001" | xxd -r -p | nc $ncopt 127.0.0.1 $UNBOUND_PORT | xxd | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> cat outfile" +cat outfile +echo "> check answer" +if grep "0000000: 007a" outfile; then + echo "too big!" + exit 1 +fi +if grep "0000000: 006c" outfile; then + echo "OK" +else + echo "bad size, not OK" + exit 1 +fi + +if grep "^00000000: 006c" outfile; then + echo "fixup xxd with long file positions" + sed -e 's/^0//' < outfile > outfile2 + mv outfile2 outfile + cat outfile +fi + +if diff fwd_compress_c00c.good outfile; then + echo "Diff OK" +else + echo "Diff in output" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.testns b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.testns new file mode 100644 index 0000000..e9574a6 --- /dev/null +++ b/external/unbound/testdata/fwd_compress_c00c.tdir/fwd_compress_c00c.testns @@ -0,0 +1,18 @@ +; nameserver test file +$ORIGIN overeinder.net. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +overeinder.net. IN A +SECTION ANSWER +overeinder.net. 900 IN A 80.56.223.205 +SECTION AUTHORITY +overeinder.net. 86400 IN NS a.ns.joker.com. +overeinder.net. 86400 IN NS b.ns.joker.com. +overeinder.net. 86400 IN NS c.ns.joker.com. +ENTRY_END + diff --git a/external/unbound/testdata/fwd_droptoomany.rpl b/external/unbound/testdata/fwd_droptoomany.rpl new file mode 100644 index 0000000..26af5f3 --- /dev/null +++ b/external/unbound/testdata/fwd_droptoomany.rpl @@ -0,0 +1,90 @@ +; config options go here. +server: + num-queries-per-thread: 1 +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Test too many queries asked, last is dropped. + +; query responses from authority servers. +RANGE_BEGIN 0 100 +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.net. IN A + SECTION ANSWER +www.example.net. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.net. IN NS ns.example.net. + SECTION ADDITIONAL +ns.example.net. IN A 10.20.30.50 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; NO REPLY (this step is not needed) +STEP 3 NOTHING + +; another query +STEP 4 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; reply from first query returns +STEP 5 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +; This answer does not arrive, the query was dropped +;STEP 11 CHECK_ANSWER +;ENTRY_BEGIN +;MATCH opcode qname qtype +;SECTION QUESTION +;www.example.net. IN A +;SECTION ANSWER +;www.example.net. IN A 10.20.30.40 +;ENTRY_END +SCENARIO_END + +; testbound checks before exit: +; * no more pending queries outstanding. +; * and no answers that have not been checked. diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.conf b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.conf new file mode 100644 index 0000000..b4d62a2 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.conf @@ -0,0 +1,23 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: UPORT + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + # key +005+30899 + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + # validation time + val-override-date: "20100406005004" + fake-sha1: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@TOPORT" +stub-zone: + name: "example.com" + stub-addr: "127.0.0.1@TOPORT" diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.dsc b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.dsc new file mode 100644 index 0000000..7a27275 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_edns_bksec +Version: 1.0 +Description: Forward EDNS backoff for DNSSEC domain +CreationDate: Tue Apr 6 08:45:57 CEST 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_edns_bksec.pre +Post: fwd_edns_bksec.post +Test: fwd_edns_bksec.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.post b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.post new file mode 100644 index 0000000..c43b038 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.post @@ -0,0 +1,10 @@ +# #-- fwd_edns_bksec.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.pre b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.pre new file mode 100644 index 0000000..d24f92d --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.pre @@ -0,0 +1,31 @@ +# #-- fwd_edns_bksec.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -v -p $FWD_PORT fwd_edns_bksec.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/UPORT/'$UNBOUND_PORT'/' -e 's/TOPORT/'$FWD_PORT'/' < fwd_edns_bksec.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.test b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.test new file mode 100644 index 0000000..4acd01e --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.test @@ -0,0 +1,42 @@ +# #-- fwd_edns_bksec.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +# +# First the nasty name. +# The server should not have performed EDNS fallback and cached it. +echo "> dig nasty.example.com." +dig @localhost -p $UNBOUND_PORT nasty.example.com. | tee outfile + +# no answer possible for it. +echo "> check backed-off" +if grep "10.20.30.77" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# Then the www name. +# See if we can still get the EDNS data. +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.testns b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.testns new file mode 100644 index 0000000..d54f2b0 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_bksec.tdir/fwd_edns_bksec.testns @@ -0,0 +1,73 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +; DNSKEY lookup works. +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20100429005004 20100401005004 30899 example.com. CcIIAhvwMsSnPzJdT1onlMK8jgQnKzYoklOsm8ab644jhQfWo/BIXyJ1l9ImK4J2+quIHdrXESTMHJ5KNRs2Sw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +;example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20100429005004 20100401005004 30899 example.com. CcIIAhvwMsSnPzJdT1onlMK8jgQnKzYoklOsm8ab644jhQfWo/BIXyJ1l9ImK4J2+quIHdrXESTMHJ5KNRs2Sw== ;{id = 30899} +ENTRY_END + +; the first part has nasty having a 'timeout'. +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR FORMERR +ADJUST copy_id +SECTION QUESTION +nasty IN A +ENTRY_END + +; the next part has nasty recover (with timing to be exactly during noEDNS). +; therefore we return the signature to make our test run fast. +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +nasty IN A +SECTION ANSWER +nasty IN A 10.20.30.77 +nasty.example.com. 3600 IN RRSIG A 5 3 3600 20100429005004 20100401005004 30899 example.com. nV1rzF6ow8sp5k315hczuO1xRQT5MrS14BEZ0Md71/EoCfVtjD+WK63w2MnPzqLIw3YRyfC1S/bMc3B7cVZv5A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +www.example.com. 3600 IN RRSIG A 5 3 3600 20100429005004 20100401005004 30899 example.com. gM9dI2Ew/zsRMD8ZrqetGo4xYts51quV4/CaOemUPAx8LOvGNJMGrHpJ1Q+CW7CWTauqNscFLlgUcmUQ2+RIlA== ;{id = 30899} +ENTRY_END + +; fake answer so we can distinguish it +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.conf b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.conf new file mode 100644 index 0000000..4756b4b --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.conf @@ -0,0 +1,14 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: UPORT + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@TOPORT" diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.dsc b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.dsc new file mode 100644 index 0000000..17a102c --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_edns_probe +Version: 1.0 +Description: Forward with EDNS probing +CreationDate: Wed Jan 6 09:45:50 CET 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_edns_probe.pre +Post: fwd_edns_probe.post +Test: fwd_edns_probe.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.post b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.post new file mode 100644 index 0000000..0f66815 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.post @@ -0,0 +1,10 @@ +# #-- fwd_edns_probe.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.pre b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.pre new file mode 100644 index 0000000..fe31c8f --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.pre @@ -0,0 +1,31 @@ +# #-- fwd_edns_probe.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_edns_probe.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/UPORT/'$UNBOUND_PORT'/' -e 's/TOPORT/'$FWD_PORT'/' < fwd_edns_probe.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.test b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.test new file mode 100644 index 0000000..2251204 --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.test @@ -0,0 +1,42 @@ +# #-- fwd_edns_probe.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +# +# First the nasty name. +# The server should not have performed EDNS fallback and cached it. +echo "> dig nasty.example.com." +dig @localhost -p $UNBOUND_PORT nasty.example.com. | tee outfile + +# no answer possible for it. +echo "> check no-answer" +if grep "SERVFAIL" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# Then the www name. +# See if we can still get the EDNS data. +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.testns b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.testns new file mode 100644 index 0000000..5197eaf --- /dev/null +++ b/external/unbound/testdata/fwd_edns_probe.tdir/fwd_edns_probe.testns @@ -0,0 +1,42 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR FORMERR +ADJUST copy_id +SECTION QUESTION +nasty IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR FORMERR +ADJUST copy_id +SECTION QUESTION +nasty IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_error.rpl b/external/unbound/testdata/fwd_error.rpl new file mode 100644 index 0000000..238b1f5 --- /dev/null +++ b/external/unbound/testdata/fwd_error.rpl @@ -0,0 +1,27 @@ +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Forwarder and an error happens on server query. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; But the pending query fails due to error (say TCP failure or malloc or ...) +; This is iterator/iterator.h OUTBOUND_MSG_RETRY number of errors. +STEP 2 ERROR +STEP 3 ERROR +STEP 4 ERROR +STEP 5 ERROR +STEP 6 ERROR +; returns servfail +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +REPLY SERVFAIL QR RD RA +MATCH all +www.example.com. IN A +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/fwd_jostle.rpl b/external/unbound/testdata/fwd_jostle.rpl new file mode 100644 index 0000000..14e5e86 --- /dev/null +++ b/external/unbound/testdata/fwd_jostle.rpl @@ -0,0 +1,110 @@ +; config options go here. +; This is one forever, one jostle. +server: + num-queries-per-thread: 2 +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Test too many queries asked, last is too recent to be jostled + +; fill the forever slot. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; NO REPLY (this step is not needed) +STEP 3 NOTHING + +;something enters the jostle slot. +STEP 4 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +STEP 5 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; something else tries to replace the entry in the jostle slot. +; but the entry in the jostle slot is too recent. +STEP 6 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.org. IN A +ENTRY_END + +; reply from latest query returns +STEP 7 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.net. IN A + SECTION ANSWER +www.example.net. IN A 10.20.30.42 + SECTION AUTHORITY +www.example.net. IN NS ns.example.net. + SECTION ADDITIONAL +ns.example.net. IN A 10.20.30.50 +ENTRY_END + +; answer to last query +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 10.20.30.42 +ENTRY_END + + +; reply from first query returns +STEP 10 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; answer to first query +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END + +; testbound checks before exit: +; * no more pending queries outstanding. +; * and no answers that have not been checked. diff --git a/external/unbound/testdata/fwd_jostle_out.rpl b/external/unbound/testdata/fwd_jostle_out.rpl new file mode 100644 index 0000000..7e01d9e --- /dev/null +++ b/external/unbound/testdata/fwd_jostle_out.rpl @@ -0,0 +1,113 @@ +; config options go here. +; This is one forever, one jostle. +server: + num-queries-per-thread: 2 +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Test too many queries asked, last one jostled out to make space + +; fill the forever slot. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; NO REPLY (this step is not needed) +STEP 3 NOTHING + +;something enters the jostle slot. +STEP 4 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +STEP 5 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; 300 msec passes +STEP 6 TIME_PASSES ELAPSE 0.300 + +; something else tries to replace the entry in the jostle slot. +; and it works because the entry is now too old. +STEP 8 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.org. IN A +ENTRY_END + +; reply from latest query returns +STEP 9 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.org. IN A + SECTION ANSWER +www.example.org. IN A 10.20.30.42 + SECTION AUTHORITY +www.example.org. IN NS ns.example.org. + SECTION ADDITIONAL +ns.example.org. IN A 10.20.30.50 +ENTRY_END + +; answer to last query +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.org. IN A +SECTION ANSWER +www.example.org. IN A 10.20.30.42 +ENTRY_END + + +; reply from first query returns +STEP 11 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; answer to first query +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END + +; testbound checks before exit: +; * no more pending queries outstanding. +; * and no answers that have not been checked. diff --git a/external/unbound/testdata/fwd_lrudrop.rpl b/external/unbound/testdata/fwd_lrudrop.rpl new file mode 100644 index 0000000..31b2674 --- /dev/null +++ b/external/unbound/testdata/fwd_lrudrop.rpl @@ -0,0 +1,122 @@ +; This is a comment. +; config options go here. +; extremely small cache to force dropping old records. +server: + msg-cache-size: 1 # one whole byte! + msg-cache-slabs: 1 +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Old answer is dropped from the cache + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH opcode qname qtype + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 +ENTRY_END + +; another query to force the cache to drop the example.com entry. +STEP 11 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.net. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 12 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.net. IN A +ENTRY_END +STEP 13 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.net. IN A + SECTION ANSWER + www.example.net. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.net. IN NS ns.example.net. + SECTION ADDITIONAL + ns.example.net. IN A 10.20.30.50 +ENTRY_END +STEP 14 CHECK_ANSWER +ENTRY_BEGIN + MATCH opcode qname qtype + SECTION QUESTION + www.example.net. IN A + SECTION ANSWER + www.example.net. IN A 10.20.30.40 +ENTRY_END + + +; query, same as first, but it fell out of the cache. +STEP 21 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 22 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 23 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 24 CHECK_ANSWER +ENTRY_BEGIN + MATCH opcode qname qtype + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.conf b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.conf new file mode 100644 index 0000000..50cf640 --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.conf @@ -0,0 +1,16 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.dsc b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.dsc new file mode 100644 index 0000000..b778c56 --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_malformed +Version: 1.0 +Description: Check authority that returns malformed packet. +CreationDate: Tue 13 Jun 09:35:40 CEST 2017 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_malformed.pre +Post: fwd_malformed.post +Test: fwd_malformed.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.post b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.post new file mode 100644 index 0000000..690b04c --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.post @@ -0,0 +1,10 @@ +# #-- fwd_malformed.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.pre b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.pre new file mode 100644 index 0000000..dec7e0c --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.pre @@ -0,0 +1,31 @@ +# #-- fwd_malformed.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_malformed.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_malformed.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.test b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.test new file mode 100644 index 0000000..621605d --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.test @@ -0,0 +1,22 @@ +# #-- fwd_malformed.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "SERVFAIL" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.testns b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.testns new file mode 100644 index 0000000..52b4cfa --- /dev/null +++ b/external/unbound/testdata/fwd_malformed.tdir/fwd_malformed.testns @@ -0,0 +1,23 @@ +; malformed packet created +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id +HEX_ANSWER_BEGIN + 03b8 0800 4500 0042 b40d 0000 + e4c2 d1e3 d2f8 d48c b5df + 1b93 0800 4500 +HEX_ANSWER_END +ENTRY_END + +; malformed packet from reporter +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id +HEX_ANSWER_BEGIN + 03b8 0800 4500 0042 b40d 0000 7211 548a ; ....E..B....r.T. + 8ccd 5119 d857 89d5 0035 6b80 002e 0000 ; ..Q..W...5k..... + cdb2 8015 0001 0000 0000 0001 0558 7a6a ; .............Xzj + 7051 0378 797a e4c2 d1e3 d2f8 d48c b5df ; pQ.xyz.......... + 1b93 0800 4500 ; ....E. +HEX_ANSWER_END +ENTRY_END diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.conf b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.conf new file mode 100644 index 0000000..9367e28 --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.conf @@ -0,0 +1,14 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: UPORT + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@TOPORT" diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.dsc b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.dsc new file mode 100644 index 0000000..167d358 --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_no_edns +Version: 1.0 +Description: Forward retry with no EDNS +CreationDate: Tue May 22 15:17:45 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_no_edns.pre +Post: fwd_no_edns.post +Test: fwd_no_edns.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.post b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.post new file mode 100644 index 0000000..c88b8f5 --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.post @@ -0,0 +1,11 @@ +# #-- fwd_no_edns.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.pre b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.pre new file mode 100644 index 0000000..1d775b4 --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.pre @@ -0,0 +1,31 @@ +# #-- fwd_no_edns.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_no_edns.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/UPORT/'$UNBOUND_PORT'/' -e 's/TOPORT/'$FWD_PORT'/' < fwd_no_edns.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.test b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.test new file mode 100644 index 0000000..bc209ea --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.test @@ -0,0 +1,22 @@ +# #-- fwd_no_edns.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.testns b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.testns new file mode 100644 index 0000000..b3742e4 --- /dev/null +++ b/external/unbound/testdata/fwd_no_edns.tdir/fwd_no_edns.testns @@ -0,0 +1,26 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP DO +REPLY QR AA FORMERR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_notcached.rpl b/external/unbound/testdata/fwd_notcached.rpl new file mode 100644 index 0000000..d937bb2 --- /dev/null +++ b/external/unbound/testdata/fwd_notcached.rpl @@ -0,0 +1,87 @@ +; This is a comment. + +; can set commandline options using something like this: +; COMMANDLINE -v +; here config file options: +server: + msg-cache-size: 1024 +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Query receives answer not from the cache + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH opcode qname qtype + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 +ENTRY_END + +; another query, different, so not from cache. +STEP 5 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.net. IN A +ENTRY_END +STEP 6 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.net. IN A +ENTRY_END +STEP 7 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.net. IN A + SECTION ANSWER + www.example.net. IN A 10.20.30.60 + SECTION AUTHORITY + www.example.net. IN NS ns.example.net. + SECTION ADDITIONAL + ns.example.net. IN A 10.20.30.50 +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN + MATCH opcode qname qtype + SECTION QUESTION + www.example.net. IN A + SECTION ANSWER + www.example.net. IN A 10.20.30.60 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.conf b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.conf new file mode 100644 index 0000000..f3427fe --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.conf @@ -0,0 +1,18 @@ +server: + verbosity: 4 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + outgoing-range: 2 + outgoing-port-avoid: 0-65535 + outgoing-port-permit: 20675 + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + num-queries-per-thread: 1024 + use-syslog: no + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.dsc b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.dsc new file mode 100644 index 0000000..566aed9 --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_oneport +Version: 1.0 +Description: Forward udp over one port with 2 fds +CreationDate: Mon Apr 14 10:39:27 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_oneport.pre +Post: fwd_oneport.post +Test: fwd_oneport.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.post b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.post new file mode 100644 index 0000000..8aafab7 --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.post @@ -0,0 +1,18 @@ +# #-- fwd_oneport.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID + +# find all extra forked testns and kill them. +pidlist=`fgrep "forked pid:" fwd.log | sed -e 's/forked pid: //'` +for p in $pidlist; do + kill_pid $p +done + +# kill unbound +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.pre b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.pre new file mode 100644 index 0000000..73c3548 --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.pre @@ -0,0 +1,31 @@ +# #-- fwd_oneport.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -f 9 fwd_oneport.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_oneport.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log +sleep 2 diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.test b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.test new file mode 100644 index 0000000..59d5b01 --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.test @@ -0,0 +1,111 @@ +# #-- fwd_oneport.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test + +# skip the single query test +# so that all three queries get timeouts during the later test. +# +#echo "> dig www1.example.com." +#dig @localhost -p $UNBOUND_PORT www1.example.com. | tee outfile +#echo "> cat logfiles" +#cat fwd.log +#cat unbound.log +#echo "> check answer for single query" +#if grep "10.20.30.40" outfile; then + #echo "OK" +#else + #echo "Not OK" + #exit 1 +#fi + +echo "> do queries" +dig @localhost -p $UNBOUND_PORT www1.example.com. >outfile1 & +digpid1=$! +dig @localhost -p $UNBOUND_PORT www2.example.com. >outfile2 & +digpid2=$! +dig @localhost -p $UNBOUND_PORT www3.example.com. >outfile3 & +digpid3=$! +dig @localhost -p $UNBOUND_PORT www4.example.com. >outfile4 & +digpid4=$! +dig @localhost -p $UNBOUND_PORT www5.example.com. >outfile5 & +digpid5=$! +dig @localhost -p $UNBOUND_PORT www6.example.com. >outfile6 & +digpid6=$! +sleep 12 +kill -9 $digpid1 +kill -9 $digpid2 +kill -9 $digpid3 +kill -9 $digpid4 +kill -9 $digpid5 +kill -9 $digpid6 + +echo "> cat outfile1" +cat outfile1 +echo "> cat outfile2" +cat outfile2 +echo "> cat outfile3" +cat outfile3 +echo "> cat outfile4" +cat outfile4 +echo "> cat outfile5" +cat outfile5 +echo "> cat outfile6" +cat outfile6 +echo "> cat logfiles" +cat fwd.log +cat unbound.log + +echo "> check for ID bit collisions" +grep "pending reply" unbound.log > ids +numsend=`cat ids | wc -l` +cat ids | awk '{print $8};' | sort -u > ids2 +numuniq=`cat ids2 | wc -l` +if test $numuniq -ne $numsend; then + echo "got a ID number clash. could not do test, sorry" + exit 0 +fi + +echo "> check answers for queries" +if grep "10.20.30.40" outfile1; then + echo "1 is OK" +else + echo "1 is not OK" + exit 1 +fi +if grep "10.20.30.50" outfile2; then + echo "2 is OK" +else + echo "2 is not OK" + exit 1 +fi +if grep "10.20.30.60" outfile3; then + echo "3 is OK" +else + echo "3 is not OK" + exit 1 +fi +if grep "10.20.30.70" outfile4; then + echo "4 is OK" +else + echo "4 is not OK" + exit 1 +fi +if grep "10.20.30.80" outfile5; then + echo "5 is OK" +else + echo "5 is not OK" + exit 1 +fi +if grep "10.20.30.90" outfile6; then + echo "6 is OK" +else + echo "6 is not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.testns b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.testns new file mode 100644 index 0000000..e6ce882 --- /dev/null +++ b/external/unbound/testdata/fwd_oneport.tdir/fwd_oneport.testns @@ -0,0 +1,64 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.70 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.80 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.90 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.conf b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.conf new file mode 100644 index 0000000..2b90064 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.conf @@ -0,0 +1,14 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.dsc b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.dsc new file mode 100644 index 0000000..cf024b6 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_tcp +Version: 1.0 +Description: Forward a TCP packet and return reply. +CreationDate: Thu Feb 8 12:57:38 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_tcp.pre +Post: fwd_tcp.post +Test: fwd_tcp.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.post b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.post new file mode 100644 index 0000000..28477b0 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.post @@ -0,0 +1,10 @@ +# #-- fwd_tcp.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.pre b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.pre new file mode 100644 index 0000000..96279b3 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.pre @@ -0,0 +1,31 @@ +# #-- fwd_tcp.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_tcp.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_tcp.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.test b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.test new file mode 100644 index 0000000..9ecc5df --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.test @@ -0,0 +1,22 @@ +# #-- fwd_tcp.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost +vc -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.testns b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.testns new file mode 100644 index 0000000..2ca3c15 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp.tdir/fwd_tcp.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.conf b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.conf new file mode 100644 index 0000000..ad0a1a9 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.conf @@ -0,0 +1,16 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.dsc b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.dsc new file mode 100644 index 0000000..4e729dd --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_tcp_tc +Version: 1.0 +Description: Forward retry in TCP mode +CreationDate: Wed May 9 09:11:32 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_tcp_tc.pre +Post: fwd_tcp_tc.post +Test: fwd_tcp_tc.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.post b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.post new file mode 100644 index 0000000..9906e37 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.post @@ -0,0 +1,11 @@ +# #-- fwd_tcp_tc.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.pre b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.pre new file mode 100644 index 0000000..f316faf --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.pre @@ -0,0 +1,31 @@ +# #-- fwd_tcp_tc.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_tcp_tc.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_tcp_tc.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.test b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.test new file mode 100644 index 0000000..1a8f9ed --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.test @@ -0,0 +1,22 @@ +# #-- fwd_tcp_tc.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.testns b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.testns new file mode 100644 index 0000000..0af820e --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc.tdir/fwd_tcp_tc.testns @@ -0,0 +1,26 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA TC NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.conf b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.conf new file mode 100644 index 0000000..53871fb --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.conf @@ -0,0 +1,17 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + use-syslog: no + do-ip4: no + do-ip6: yes + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "::1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.dsc b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.dsc new file mode 100644 index 0000000..896e381 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_tcp_tc6 +Version: 1.0 +Description: Forward retry in TCP IP6 mode. +CreationDate: Mon Oct 15 10:08:08 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_tcp_tc6.pre +Post: fwd_tcp_tc6.post +Test: fwd_tcp_tc6.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.post b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.post new file mode 100644 index 0000000..8d7a6e2 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.post @@ -0,0 +1,11 @@ +# #-- fwd_tcp_tc6.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.pre b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.pre new file mode 100644 index 0000000..618b55a --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.pre @@ -0,0 +1,31 @@ +# #-- fwd_tcp_tc6.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -6 fwd_tcp_tc6.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_tcp_tc6.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.test b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.test new file mode 100644 index 0000000..81dbea6 --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.test @@ -0,0 +1,26 @@ +# #-- fwd_tcp_tc6.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE streamtcp) + +# do the test +echo "> streamtcp www.example.com." +$PRE/streamtcp -u -f ::1@$UNBOUND_PORT www.example.com. A IN | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.testns b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.testns new file mode 100644 index 0000000..0af820e --- /dev/null +++ b/external/unbound/testdata/fwd_tcp_tc6.tdir/fwd_tcp_tc6.testns @@ -0,0 +1,26 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname UDP +REPLY QR AA TC NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +www IN A 10.20.30.41 +www IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.conf b/external/unbound/testdata/fwd_three.tdir/fwd_three.conf new file mode 100644 index 0000000..f25ceb5 --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.conf @@ -0,0 +1,17 @@ +server: + verbosity: 4 # old 2 + num-threads: 5 + interface: 127.0.0.1 + port: @PORT@ + outgoing-range: 2 + outgoing-num-tcp: 2 + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + num-queries-per-thread: 1 + use-syslog: no + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.dsc b/external/unbound/testdata/fwd_three.tdir/fwd_three.dsc new file mode 100644 index 0000000..804697d --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_three +Version: 1.0 +Description: Forward three queries at once, using threads. +CreationDate: Tue Feb 27 14:11:44 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_three.pre +Post: fwd_three.post +Test: fwd_three.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.post b/external/unbound/testdata/fwd_three.tdir/fwd_three.post new file mode 100644 index 0000000..7b2971d --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.post @@ -0,0 +1,21 @@ +# #-- fwd_three.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here + +. ../common.sh +# kill fwder +kill_pid $FWD_PID + +# find all extra forked testns and kill them. +pidlist=`fgrep "forked pid:" fwd.log | sed -e 's/forked pid: //'` +for p in $pidlist; do + kill_pid $p +done + +# kill unbound +kill_pid $UNBOUND_PID +exit 0 diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.pre b/external/unbound/testdata/fwd_three.tdir/fwd_three.pre new file mode 100644 index 0000000..7d522d9 --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.pre @@ -0,0 +1,31 @@ +# #-- fwd_three.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -f 9 fwd_three.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_three.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.test b/external/unbound/testdata/fwd_three.tdir/fwd_three.test new file mode 100644 index 0000000..962d0bf --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.test @@ -0,0 +1,63 @@ +# #-- fwd_three.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www1.example.com." +dig @localhost -p $UNBOUND_PORT www1.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer for single query" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> do three queries" +dig @localhost -p $UNBOUND_PORT +retry=10 +time=1 www1.example.com. >outfile1 & +digpid1=$! +dig @localhost -p $UNBOUND_PORT +retry=10 +time=1 www2.example.com. >outfile2 & +digpid2=$! +dig @localhost -p $UNBOUND_PORT +retry=10 +time=1 www3.example.com. >outfile3 & +digpid3=$! +sleep 5 +kill -9 $digpid1 +kill -9 $digpid2 +kill -9 $digpid3 + +echo "> cat outfile1" +cat outfile1 +echo "> cat outfile2" +cat outfile2 +echo "> cat outfile3" +cat outfile3 +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answers for three queries" +if grep "10.20.30.40" outfile1; then + echo "1 is OK" +else + echo "1 is not OK" + exit 1 +fi +if grep "10.20.30.50" outfile2; then + echo "2 is OK" +else + echo "2 is not OK" + exit 1 +fi +if grep "10.20.30.60" outfile3; then + echo "3 is OK" +else + echo "3 is not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_three.tdir/fwd_three.testns b/external/unbound/testdata/fwd_three.tdir/fwd_three.testns new file mode 100644 index 0000000..b0b5e74 --- /dev/null +++ b/external/unbound/testdata/fwd_three.tdir/fwd_three.testns @@ -0,0 +1,34 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.conf b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.conf new file mode 100644 index 0000000..05fafe0 --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.conf @@ -0,0 +1,16 @@ +server: + verbosity: 2 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + outgoing-range: 2 + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + num-queries-per-thread: 1024 + use-syslog: no + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.dsc b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.dsc new file mode 100644 index 0000000..039e963 --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_three_service +Version: 1.0 +Description: Forward three queries at once, using one thread. +CreationDate: Wed Mar 28 15:26:21 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_three_service.pre +Post: fwd_three_service.post +Test: fwd_three_service.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.post b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.post new file mode 100644 index 0000000..1d7a8da --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.post @@ -0,0 +1,20 @@ +# #-- fwd_three_service.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh + +# kill fwder +kill_pid $FWD_PID + +# find all extra forked testns and kill them. +pidlist=`fgrep "forked pid:" fwd.log | sed -e 's/forked pid: //'` +for p in $pidlist; do + kill_pid $p +done + +# kill unbound +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.pre b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.pre new file mode 100644 index 0000000..9c6a3ed --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.pre @@ -0,0 +1,31 @@ +# #-- fwd_three_service.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -f 9 fwd_three_service.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_three_service.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.test b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.test new file mode 100644 index 0000000..6c5e34a --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.test @@ -0,0 +1,63 @@ +# #-- fwd_three_service.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www1.example.com." +dig @localhost -p $UNBOUND_PORT www1.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer for single query" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> do three queries" +dig @localhost -p $UNBOUND_PORT www1.example.com. >outfile1 & +digpid1=$! +dig @localhost -p $UNBOUND_PORT www2.example.com. >outfile2 & +digpid2=$! +dig @localhost -p $UNBOUND_PORT www3.example.com. >outfile3 & +digpid3=$! +sleep 5 +kill -9 $digpid1 +kill -9 $digpid2 +kill -9 $digpid3 + +echo "> cat outfile1" +cat outfile1 +echo "> cat outfile2" +cat outfile2 +echo "> cat outfile3" +cat outfile3 +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answers for three queries" +if grep "10.20.30.40" outfile1; then + echo "1 is OK" +else + echo "1 is not OK" + exit 1 +fi +if grep "10.20.30.50" outfile2; then + echo "2 is OK" +else + echo "2 is not OK" + exit 1 +fi +if grep "10.20.30.60" outfile3; then + echo "3 is OK" +else + echo "3 is not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.testns b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.testns new file mode 100644 index 0000000..787e25f --- /dev/null +++ b/external/unbound/testdata/fwd_three_service.tdir/fwd_three_service.testns @@ -0,0 +1,34 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_timeout.rpl b/external/unbound/testdata/fwd_timeout.rpl new file mode 100644 index 0000000..1bb934d --- /dev/null +++ b/external/unbound/testdata/fwd_timeout.rpl @@ -0,0 +1,27 @@ +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Forwarder and a timeout happens on server query. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; But the pending query times out! +; OUTBOUND_MSG_RETRY times timeout. +STEP 2 TIMEOUT +STEP 3 TIMEOUT +STEP 4 TIMEOUT +STEP 5 TIMEOUT +STEP 6 TIMEOUT +; returns servfail +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +REPLY SERVFAIL QR RA RD +MATCH all +www.example.com. IN A +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.conf b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.conf new file mode 100644 index 0000000..9cd19c0 --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.conf @@ -0,0 +1,15 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.dsc b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.dsc new file mode 100644 index 0000000..da67fda --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_ttlexpire +Version: 1.0 +Description: forward UDP and TTL expires in the cache +CreationDate: Wed May 9 11:08:02 CEST 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_ttlexpire.pre +Post: fwd_ttlexpire.post +Test: fwd_ttlexpire.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.post b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.post new file mode 100644 index 0000000..3cc0061 --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.post @@ -0,0 +1,11 @@ +# #-- fwd_ttlexpire.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.pre b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.pre new file mode 100644 index 0000000..99e096c --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.pre @@ -0,0 +1,31 @@ +# #-- fwd_ttlexpire.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_ttlexpire.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_ttlexpire.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.test b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.test new file mode 100644 index 0000000..41ea395 --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.test @@ -0,0 +1,35 @@ +# #-- fwd_ttlexpire.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +# wait for query to expire. +sleep 4 +# query again +rm outfile +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +echo "> cat logfiles" +cat fwd.log +cat unbound.log + +exit 0 diff --git a/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.testns b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.testns new file mode 100644 index 0000000..38fbfa5 --- /dev/null +++ b/external/unbound/testdata/fwd_ttlexpire.tdir/fwd_ttlexpire.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www 2 IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_two.rpl b/external/unbound/testdata/fwd_two.rpl new file mode 100644 index 0000000..ca4d065 --- /dev/null +++ b/external/unbound/testdata/fwd_two.rpl @@ -0,0 +1,89 @@ +; config options go here. +server: + num-queries-per-thread: 2 +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Sample of a valid query + +; query responses from authority servers. +RANGE_BEGIN 0 100 +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.net. IN A + SECTION ANSWER +www.example.net. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.net. IN NS ns.example.net. + SECTION ADDITIONAL +ns.example.net. IN A 10.20.30.50 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; NO REPLY (this step is not needed) +STEP 3 NOTHING + +; another query +STEP 4 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; reply from first query returns +STEP 5 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR RD RA NOERROR + SECTION QUESTION +www.example.com. IN A + SECTION ANSWER +www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY +www.example.com. IN NS ns.example.com. + SECTION ADDITIONAL +ns.example.com. IN A 10.20.30.50 +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 10.20.30.40 +ENTRY_END +SCENARIO_END + +; testbound checks before exit: +; * no more pending queries outstanding. +; * and no answers that have not been checked. diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.conf b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.conf new file mode 100644 index 0000000..781eebc --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.conf @@ -0,0 +1,15 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.dsc b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.dsc new file mode 100644 index 0000000..741ad34 --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_udp +Version: 1.0 +Description: Forward an UDP packet and return reply. +CreationDate: Wed Feb 7 09:01:25 CET 2007 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_udp.pre +Post: fwd_udp.post +Test: fwd_udp.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.post b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.post new file mode 100644 index 0000000..87cf280 --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.post @@ -0,0 +1,10 @@ +# #-- fwd_udp.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.pre b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.pre new file mode 100644 index 0000000..b0e0831 --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.pre @@ -0,0 +1,31 @@ +# #-- fwd_udp.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_udp.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_udp.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.test b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.test new file mode 100644 index 0000000..9bd37ad --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.test @@ -0,0 +1,22 @@ +# #-- fwd_udp.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_udp.tdir/fwd_udp.testns b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/fwd_udp.tdir/fwd_udp.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.conf b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.conf new file mode 100644 index 0000000..d5135a1 --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.conf @@ -0,0 +1,16 @@ +server: + verbosity: 4 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + outgoing-range: 3 + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + num-queries-per-thread: 1024 + use-syslog: no + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.dsc b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.dsc new file mode 100644 index 0000000..77f05d2 --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_udptmout +Version: 1.0 +Description: Forward udp queries with timeouts and multiple fds +CreationDate: Mon Apr 14 10:26:48 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_udptmout.pre +Post: fwd_udptmout.post +Test: fwd_udptmout.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.post b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.post new file mode 100644 index 0000000..f2138b9 --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.post @@ -0,0 +1,19 @@ +# #-- fwd_udptmout.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +# kill fwder +kill_pid $FWD_PID + +# find all extra forked testns and kill them. +pidlist=`fgrep "forked pid:" fwd.log | sed -e 's/forked pid: //'` +for p in $pidlist; do + kill_pid $p +done + +# kill unbound +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.pre b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.pre new file mode 100644 index 0000000..5b4cacd --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.pre @@ -0,0 +1,31 @@ +# #-- fwd_udptmout.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -f 9 fwd_udptmout.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_udptmout.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.test b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.test new file mode 100644 index 0000000..8d89961 --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.test @@ -0,0 +1,110 @@ +# #-- fwd_udptmout.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test + +# skip the single query test +# so that all three queries get timeouts during the later test. +# +#echo "> dig www1.example.com." +#dig @localhost -p $UNBOUND_PORT www1.example.com. | tee outfile +#echo "> cat logfiles" +#cat fwd.log +#cat unbound.log +#echo "> check answer for single query" +#if grep "10.20.30.40" outfile; then + #echo "OK" +#else + #echo "Not OK" + #exit 1 +#fi + +echo "> do queries" +dig @localhost -p $UNBOUND_PORT www1.example.com. >outfile1 & +digpid1=$! +dig @localhost -p $UNBOUND_PORT www2.example.com. >outfile2 & +digpid2=$! +dig @localhost -p $UNBOUND_PORT www3.example.com. >outfile3 & +digpid3=$! +dig @localhost -p $UNBOUND_PORT www4.example.com. >outfile4 & +digpid4=$! +dig @localhost -p $UNBOUND_PORT www5.example.com. >outfile5 & +digpid5=$! +dig @localhost -p $UNBOUND_PORT www6.example.com. >outfile6 & +digpid6=$! + +sleep 15 + +# some slow systems need more for processing +if grep "10.20.30.40" outfile1 >/dev/null; then :; else sleep 2; fi +if grep "10.20.30.50" outfile2 >/dev/null; then :; else sleep 2; fi +if grep "10.20.30.60" outfile3 >/dev/null; then :; else sleep 2; fi +if grep "10.20.30.70" outfile4 >/dev/null; then :; else sleep 2; fi +if grep "10.20.30.80" outfile5 >/dev/null; then :; else sleep 2; fi +if grep "10.20.30.90" outfile6 >/dev/null; then :; else sleep 2; fi + +kill -9 $digpid1 +kill -9 $digpid2 +kill -9 $digpid3 +kill -9 $digpid4 +kill -9 $digpid5 +kill -9 $digpid6 + +echo "> cat outfile1" +cat outfile1 +echo "> cat outfile2" +cat outfile2 +echo "> cat outfile3" +cat outfile3 +echo "> cat outfile4" +cat outfile4 +echo "> cat outfile5" +cat outfile5 +echo "> cat outfile6" +cat outfile6 +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answers for queries" +if grep "10.20.30.40" outfile1; then + echo "1 is OK" +else + echo "1 is not OK" + exit 1 +fi +if grep "10.20.30.50" outfile2; then + echo "2 is OK" +else + echo "2 is not OK" + exit 1 +fi +if grep "10.20.30.60" outfile3; then + echo "3 is OK" +else + echo "3 is not OK" + exit 1 +fi +if grep "10.20.30.70" outfile4; then + echo "4 is OK" +else + echo "4 is not OK" + exit 1 +fi +if grep "10.20.30.80" outfile5; then + echo "5 is OK" +else + echo "5 is not OK" + exit 1 +fi +if grep "10.20.30.90" outfile6; then + echo "6 is OK" +else + echo "6 is not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.testns b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.testns new file mode 100644 index 0000000..bfccf9d --- /dev/null +++ b/external/unbound/testdata/fwd_udptmout.tdir/fwd_udptmout.testns @@ -0,0 +1,64 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.70 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.80 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.90 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.conf b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.conf new file mode 100644 index 0000000..91eaf7d --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.conf @@ -0,0 +1,16 @@ +server: + verbosity: 4 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + outgoing-range: 1 + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + num-queries-per-thread: 1024 + use-syslog: no + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.dsc b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.dsc new file mode 100644 index 0000000..5c310ac --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_waitudp +Version: 1.0 +Description: Forward 3 queries, 1thr, 1fd and force a udp wait list. +CreationDate: Mon Apr 14 10:03:28 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_waitudp.pre +Post: fwd_waitudp.post +Test: fwd_waitudp.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.post b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.post new file mode 100644 index 0000000..fedf97a --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.post @@ -0,0 +1,21 @@ +# #-- fwd_waitudp.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh + +# kill fwder +kill_pid $FWD_PID + +# find all extra forked testns and kill them. +pidlist=`fgrep "forked pid:" fwd.log | sed -e 's/forked pid: //'` +for p in $pidlist; do + kill_pid $p +done + +# kill unbound +kill_pid $UNBOUND_PID +exit 0 diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.pre b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.pre new file mode 100644 index 0000000..ab7a886 --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.pre @@ -0,0 +1,31 @@ +# #-- fwd_waitudp.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT -f 9 fwd_waitudp.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_waitudp.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.test b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.test new file mode 100644 index 0000000..1247885 --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.test @@ -0,0 +1,67 @@ +# #-- fwd_waitudp.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test + +# skip the single query test +# so that all three queries get timeouts during the later test. +# +#echo "> dig www1.example.com." +#dig @localhost -p $UNBOUND_PORT www1.example.com. | tee outfile +#echo "> cat logfiles" +#cat fwd.log +#cat unbound.log +#echo "> check answer for single query" +#if grep "10.20.30.40" outfile; then + #echo "OK" +#else + #echo "Not OK" + #exit 1 +#fi + +echo "> do three queries" +dig @localhost -p $UNBOUND_PORT www1.example.com. >outfile1 & +digpid1=$! +dig @localhost -p $UNBOUND_PORT www2.example.com. >outfile2 & +digpid2=$! +dig @localhost -p $UNBOUND_PORT www3.example.com. >outfile3 & +digpid3=$! +sleep 15 +kill -9 $digpid1 +kill -9 $digpid2 +kill -9 $digpid3 + +echo "> cat outfile1" +cat outfile1 +echo "> cat outfile2" +cat outfile2 +echo "> cat outfile3" +cat outfile3 +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answers for three queries" +if grep "10.20.30.40" outfile1; then + echo "1 is OK" +else + echo "1 is not OK" + exit 1 +fi +if grep "10.20.30.50" outfile2; then + echo "2 is OK" +else + echo "2 is not OK" + exit 1 +fi +if grep "10.20.30.60" outfile3; then + echo "3 is OK" +else + echo "3 is not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.testns b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.testns new file mode 100644 index 0000000..e1e1ea8 --- /dev/null +++ b/external/unbound/testdata/fwd_waitudp.tdir/fwd_waitudp.testns @@ -0,0 +1,34 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www1 IN A +SECTION ANSWER +www1 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=1 +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.60 +ENTRY_END + diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.conf b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.conf new file mode 100644 index 0000000..9cd19c0 --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.conf @@ -0,0 +1,15 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.dsc b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.dsc new file mode 100644 index 0000000..acacf38 --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_zero +Version: 1.0 +Description: Test for zero byte UDP reply assertion fail +CreationDate: Tue Jan 6 10:39:28 CET 2009 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_zero.pre +Post: fwd_zero.post +Test: fwd_zero.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.post b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.post new file mode 100644 index 0000000..b22a0b7 --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.post @@ -0,0 +1,10 @@ +# #-- fwd_zero.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.pre b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.pre new file mode 100644 index 0000000..eaa7262 --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.pre @@ -0,0 +1,31 @@ +# #-- fwd_zero.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_zero.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_zero.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.test b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.test new file mode 100644 index 0000000..87a2dec --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.test @@ -0,0 +1,32 @@ +# #-- fwd_zero.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +OPT="-i" +if nc -h 2>&1 | grep -- "-w secs" >/dev/null; then + OPT="-w" +fi + +# send query with qname but not qtype , qclass (malformed query) +echo "> nc www.example.com. (malformed)" +echo "b4380100000100000000000003777777076578616d706c6503636f6d00" | xxd -r -p | nc -un $OPT 2 127.0.0.1 $UNBOUND_PORT 2>/dev/null | xxd | tee outfile + +# now test that server is still up +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/fwd_zero.tdir/fwd_zero.testns b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/fwd_zero.tdir/fwd_zero.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/fwddlv_parse.rpl b/external/unbound/testdata/fwddlv_parse.rpl new file mode 100644 index 0000000..8b8a961 --- /dev/null +++ b/external/unbound/testdata/fwddlv_parse.rpl @@ -0,0 +1,134 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw==" + val-override-date: "20090617133009" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test parse of packet when forwarding and dlv are in use + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +org. IN NS +SECTION AUTHORITY +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (for ORG) +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +org. IN NS +SECTION ANSWER +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +dlv.isc.org. IN NS +SECTION AUTHORITY +dlv.isc.org. IN NS ns.org. +SECTION ADDITIONAL +ns.org. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.org for dlv.isc.org +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +dlv.isc.org. IN DNSKEY +SECTION ANSWER +dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw== ;{id = 64263 (zsk), size = 1024b} +dlv.isc.org. 5072 IN DNSKEY 257 3 5 BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URkY62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboMQKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VStTDN0YUuWrBNh ;{id = 19297 (ksk), size = 2048b} +dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 19297 dlv.isc.org. iqGOzsIQKFHcPLbJHLb/kNzcm7TlHiyT4kzTknCjKsC7DCB86YCOhnZZjvZQyA+D0N0KDgNWY8v5czbyX57qR6qORciT2zmPSTGj7CIOe4zrq60n8HzsChKgvk+RSYQrzf6vRfnZhce6Y1waXQd4wh1buPAUw/l46Ovt74ALXzcWSgfMNyx6PBz7rbusuePKeSv0GZL9+M2qhXKe9LJmnzD9uCwnbV/Y5yu+xLfxLdm9q4IKp6Rn50CeHYKf3tO2jI9dkWqFR94XHSTNGfhC02i5UsfP1HRPnk49bX7OMstuuCq9zMX+qTt602MVFYdTSHTy/5+Yw5DvOA9JgOqO4w== ;{id = 19297} +dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 64263 dlv.isc.org. W1KX1PagXsaWWmxkaOfnLetnw1hhSw7ym91S4rSu14QfFbYi5iN9ZkSuKa21M7Do52S9om/2hDllMF7EFfnv9l4e4/rMOc59vKGVojpHOvZyRVhIiMyh1H9NfLTYUovORRvKO0Cnp65gBXspVf1WhzoY3pC1NZ+5pscPWLeD1rw= ;{id = 64263} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com.dlv.isc.org. IN DLV +SECTION ANSWER +SECTION AUTHORITY +dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 +dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} +seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} +seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV +ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} +ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com.dlv.isc.org. IN DLV +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.example.com.dlv.isc.org. IN DLV +SECTION ANSWER +SECTION AUTHORITY +dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 +dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} +seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV +seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} +ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV +ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/host_file.template b/external/unbound/testdata/host_file.template new file mode 100644 index 0000000..77b674c --- /dev/null +++ b/external/unbound/testdata/host_file.template @@ -0,0 +1,5 @@ +# list of hosts and options for each. You need keyed ssh access to each. +# It must be one tab delimited only. Very strict syntax. +# hostname description directory variables +linux.example.com Linux Fedora Core i386 src/unbound/trunk +solaris.example.com Solaris 10 sparc64 nsd_trunk LDNS=/var/local/ldns diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.dsc b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.dsc new file mode 100644 index 0000000..78ba2de --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.dsc @@ -0,0 +1,16 @@ +BaseName: hostsfileosx +Version: 1.0 +Description: Test lookup using libunbound with osx hosts file +CreationDate: Fri May 16 13:29:39 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: hostsfileosx.pre +Post: hostsfileosx.post +Test: hostsfileosx.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.hosts b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.hosts new file mode 100644 index 0000000..2bf2775 --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.hosts @@ -0,0 +1,15 @@ +# Host Database +# +# This file should contain the addresses and aliases for local hosts that +# share this file. Replace 'my.domain' below with the domainname of your +# machine. +# +::1 localhost localhost.my.domain +127.0.0.1 localhost localhost.my.domain +# from MacOSX. +fe80::1%lo0 localhost +255.255.255.255 broadcasthost +# Imaginary network. +10.0.0.2 myname.my.domain myname +10.0.0.3 myfriend.my.domain myfriend +10.20.30.40 virtual.virtual.virtual.local diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.post b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.post new file mode 100644 index 0000000..50e72eb --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.post @@ -0,0 +1,9 @@ +# #-- hostsfileosx.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.pre b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.pre new file mode 100644 index 0000000..9443220 --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.pre @@ -0,0 +1,20 @@ +# #-- hostsfileosx.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +FWD_PORT=$(($RND_PORT + 1)) +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT hostsfileosx.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log + diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.test b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.test new file mode 100644 index 0000000..9660609 --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.test @@ -0,0 +1,63 @@ +# #-- hostsfileosx.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +# test if fwder is up +echo "> dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile" +dig @127.0.0.1 -p $FWD_PORT www.example.com | tee outfile +if grep "10.20.30.40" outfile; then + echo "fwder is up" +else + cat fwd.log + echo "fwder not up" + exit 1 +fi +rm outfile + +# create asynclook +get_make +echo "> (cd $PRE ; $MAKE asynclook)" +(cd $PRE ; $MAKE asynclook) +if test ! -x $PRE/asynclook; then + echo "cannot build asynclook test program" + exit 1 +fi +(cd $PRE ; $MAKE lock-verify) + +# check the locks. +function locktest() { + if test -x $PRE/lock-verify -a -f ublocktrace.0; then + $PRE/lock-verify ublocktrace.* + if test $? -ne 0; then + echo "lock-verify error" + exit 1 + fi + fi +} + + +THR="" +if grep "undef HAVE_FORK" $PRE/config.h; then + THR="-t" +fi + +# test hosts reading (directed at local auth info) +echo '> $PRE/asynclook $THR -H hostsfileosx.hosts virtual.virtual.virtual.local 2>&1 | tee outfile' +$PRE/asynclook $THR -H hostsfileosx.hosts virtual.virtual.virtual.local 2>&1 | tee outfile +if grep "virtual.virtual.virtual.local: 10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +locktest +rm outfile + +echo "> cat logfiles" +cat fwd.log +exit 0 diff --git a/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.testns b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.testns new file mode 100644 index 0000000..6245ae1 --- /dev/null +++ b/external/unbound/testdata/hostsfileosx.tdir/hostsfileosx.testns @@ -0,0 +1,35 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +; for priming query +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +@ IN NS +SECTION ANSWER +@ IN NS 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/ipsecmod_bogus_ipseckey.crpl b/external/unbound/testdata/ipsecmod_bogus_ipseckey.crpl new file mode 100644 index 0000000..094710b --- /dev/null +++ b/external/unbound/testdata/ipsecmod_bogus_ipseckey.crpl @@ -0,0 +1,238 @@ +; Test ipsecmod with bogus IPSECKEY + +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. IN DS 48069 8 2 fce2bcb0d88b828064faad58e935ca2e32ff0bbd8bd8407a8f344d8f8e8c438a" + val-override-date: "-1" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + # test that default value of harden-dnssec-stripped is still yes. + fake-sha1: yes + trust-anchor-signaling: no + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: no + ipsecmod-max-ttl: 200 + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod with bogus IPSECKEY +; Scenario overview: +; - query for example.com. IN A +; - check that query for example.com. IN IPSECKEY is generated +; - check that we get an answer for example.com. IN A with the correct TTL +; - check that the get the same answer from cache +; - check that we don't get the IPSECKEY answer from cache (bogus) + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 86400 IN SOA ns.example.com. example.com. 2002022401 10800 15 604800 10800 + example.com. 86400 IN RRSIG SOA 8 2 86400 20170609142855 20170512142855 48069 example.com. fr6oVOsRMnm3D8N01LxzPvT9lWdNDhTlmwR1co42c3H2ra1EjbbKqkLcrXQAsq7E/ddzqgL3RnYS+3USojXycI1xhjXC8YT2xsW3uH8uTY1Qvk1K75lu1OXmDiU6wvHplFowl0OX7sx76lB1itbvsau4bMPMt03sf4u8po7V35s= + ENTRY_END + + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + example.com. 3600 IN RRSIG A 8 2 3600 20170609142855 20170512142855 48069 example.com. Qviw6w8ReMG2WZxenvzj/YwoeM3Ln59Fnw6s1MRWGsD2yA3+y0loFdUEHZdRhrEiV0kvtQGC+kBhMuSMq/cyjprbKLw5pkS9+MMDDnVPP1PQb17LY4NIxPtq710AN1sjhBK6PVa6XN+3ciUmCcLs1ESviQkVKpgAY/QlV0TaarQ= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + + ; response to IPSECKEY query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + ;(correct answer) example.com. 3600 IN RRSIG IPSECKEY 8 2 3600 20170609144114 20170512144114 48069 example.com. UqRbG6P8mWQEVt16j86cS6fqEN8c+5t8qtePr9ghRqIxeuPOCkLiSqmXQYcQbOeOK4YoWQ3gD2az2JMWQMxEKeBLpxXZbgZN+2uIZ9LLEkyYjGRulr9kameKTM1feSe31A9mR9IgMNrY/ZeUkfxC+8Q7s8avOqYH2jVMFUg9raE= + ; (bogus answer) + example.com. 3600 IN RRSIG IPSECKEY 8 2 3600 20170609144114 20170512144114 48069 example.com. Bogus6P8mWQEVt16j86cS6fqEN8c+5t8qtePr9ghRqIxeuPOCkLiSqmXQYcQbOeOK4YoWQ3gD2az2JMWQMxEKeBLpxXZbgZN+2uIZ9LLEkyYjGRulr9kameKTM1feSe31A9mR9IgMNrY/ZeUkfxC+8Q7s8avOqYH2jVMFUg9raE= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + +; response to DNSKEY priming query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + example.com. IN DNSKEY + SECTION ANSWER + example.com. 86400 IN DNSKEY 256 3 8 AwEAAddE7q1HL4Id+gpQ7imk+RyNEhCWgtew5tstsqIR/fXq0RBn0rF4SI1H6ysbb3nfqAV1xRDJ01ddpgfGyz9zXXHQ/H/9qEpeWapqfNTQ5GHHdxBL2iST7XusThfXEyX/pouKIpvtknvtLs8tmH64dajxoJkaejU2EKXKaBaRKcYx ;{id = 48069 (zsk), size = 1024b} + example.com. 86400 IN RRSIG DNSKEY 8 2 86400 20170609144114 20170512144114 48069 example.com. mJU3LnubfYW7vhksiC1STWbrSjCe6TG1kEpnk4jRrYovues6bzOTIFSXEMjPW1mikulapnx3nMtTWdrW2InjfP9wLV/u2Wx1Vu3s9uzli/27y//3DOkZSeBa5RZdKpC1h8UB5GAxq4MRiSidgEBB1qaDIaE29sWmn9kPHEgNcgI= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER + ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A + SECTION ANSWER +ENTRY_END + +; Query without RD, check if not cached +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER + ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ipsecmod_enabled.crpl b/external/unbound/testdata/ipsecmod_enabled.crpl new file mode 100644 index 0000000..501f18b --- /dev/null +++ b/external/unbound/testdata/ipsecmod_enabled.crpl @@ -0,0 +1,220 @@ +; Test ipsecmod-enabled option. + +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: no + ipsecmod-max-ttl: 200 + ipsecmod-enabled: no + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod-enabled option +; Scenario overview: +; - query for example.com. IN A +; - check that we get an answer for example.com. IN A with the correct TTL +; - check that the get the same answer from cache +; - check that we don't get the IPSECKEY answer from cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 10 IN SOA . . 15 28800 7200 604800 10 + ENTRY_END + + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to IPSECKEY query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if cached and with correct TTL +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if IPSECKEY cached +STEP 21 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ipsecmod_hook.sh b/external/unbound/testdata/ipsecmod_hook.sh new file mode 100644 index 0000000..a418cb5 --- /dev/null +++ b/external/unbound/testdata/ipsecmod_hook.sh @@ -0,0 +1,2 @@ +echo " ---[ IPsec external hook FAIL; only care if ipsecmod-strict: yes ]---" +exit 1 diff --git a/external/unbound/testdata/ipsecmod_ignore_bogus_ipseckey.crpl b/external/unbound/testdata/ipsecmod_ignore_bogus_ipseckey.crpl new file mode 100644 index 0000000..d62dfaf --- /dev/null +++ b/external/unbound/testdata/ipsecmod_ignore_bogus_ipseckey.crpl @@ -0,0 +1,259 @@ +; Test ipsecmod-ignore-bogus option + +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. IN DS 48069 8 2 fce2bcb0d88b828064faad58e935ca2e32ff0bbd8bd8407a8f344d8f8e8c438a" + val-override-date: "-1" + target-fetch-policy: "0 0 0 0 0" + # test that default value of harden-dnssec-stripped is still yes. + fake-sha1: yes + trust-anchor-signaling: no + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: no + ipsecmod-max-ttl: 200 + ipsecmod-ignore-bogus: yes + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod-ignore-bogus option +; Scenario overview: +; - query for example.com. IN A +; - check that query for example.com. IN IPSECKEY is generated +; - check that we get an answer for example.com. IN A with the correct TTL +; - check that the get the same answer from cache +; - check that we don't get the IPSECKEY answer from cache (bogus) + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 86400 IN SOA ns.example.com. example.com. 2002022401 10800 15 604800 10800 + example.com. 86400 IN RRSIG SOA 8 2 86400 20170609142855 20170512142855 48069 example.com. fr6oVOsRMnm3D8N01LxzPvT9lWdNDhTlmwR1co42c3H2ra1EjbbKqkLcrXQAsq7E/ddzqgL3RnYS+3USojXycI1xhjXC8YT2xsW3uH8uTY1Qvk1K75lu1OXmDiU6wvHplFowl0OX7sx76lB1itbvsau4bMPMt03sf4u8po7V35s= + ENTRY_END + + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + example.com. 3600 IN RRSIG A 8 2 3600 20170609142855 20170512142855 48069 example.com. Qviw6w8ReMG2WZxenvzj/YwoeM3Ln59Fnw6s1MRWGsD2yA3+y0loFdUEHZdRhrEiV0kvtQGC+kBhMuSMq/cyjprbKLw5pkS9+MMDDnVPP1PQb17LY4NIxPtq710AN1sjhBK6PVa6XN+3ciUmCcLs1ESviQkVKpgAY/QlV0TaarQ= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + + ; response to IPSECKEY query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + ;(correct answer) example.com. 3600 IN RRSIG IPSECKEY 8 2 3600 20170609144114 20170512144114 48069 example.com. UqRbG6P8mWQEVt16j86cS6fqEN8c+5t8qtePr9ghRqIxeuPOCkLiSqmXQYcQbOeOK4YoWQ3gD2az2JMWQMxEKeBLpxXZbgZN+2uIZ9LLEkyYjGRulr9kameKTM1feSe31A9mR9IgMNrY/ZeUkfxC+8Q7s8avOqYH2jVMFUg9raE= + ; (bogus answer) + example.com. 3600 IN RRSIG IPSECKEY 8 2 3600 20170609144114 20170512144114 48069 example.com. Bogus6P8mWQEVt16j86cS6fqEN8c+5t8qtePr9ghRqIxeuPOCkLiSqmXQYcQbOeOK4YoWQ3gD2az2JMWQMxEKeBLpxXZbgZN+2uIZ9LLEkyYjGRulr9kameKTM1feSe31A9mR9IgMNrY/ZeUkfxC+8Q7s8avOqYH2jVMFUg9raE= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END + +; response to DNSKEY priming query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + example.com. IN DNSKEY + SECTION ANSWER + example.com. 86400 IN DNSKEY 256 3 8 AwEAAddE7q1HL4Id+gpQ7imk+RyNEhCWgtew5tstsqIR/fXq0RBn0rF4SI1H6ysbb3nfqAV1xRDJ01ddpgfGyz9zXXHQ/H/9qEpeWapqfNTQ5GHHdxBL2iST7XusThfXEyX/pouKIpvtknvtLs8tmH64dajxoJkaejU2EKXKaBaRKcYx ;{id = 48069 (zsk), size = 1024b} + example.com. 86400 IN RRSIG DNSKEY 8 2 86400 20170609144114 20170512144114 48069 example.com. mJU3LnubfYW7vhksiC1STWbrSjCe6TG1kEpnk4jRrYovues6bzOTIFSXEMjPW1mikulapnx3nMtTWdrW2InjfP9wLV/u2Wx1Vu3s9uzli/27y//3DOkZSeBa5RZdKpC1h8UB5GAxq4MRiSidgEBB1qaDIaE29sWmn9kPHEgNcgI= + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 8 2 3600 20170609142855 20170512142855 48069 example.com. SYFM1dsPEly0PjdShX8EsRnpq6XTysrvUBWB+LjGaC0wn3RFd0A2TG3WhVkUxhjTzRjt9jn3rz+JUJyybrhBkYXjBeBBjLep6Le7PQSct+FFDTIuX8duixfOzEN5LSYRMUnSuAq/z0LJHUB6nqTw8XWRm6EIImdEBc6D0u1KSes= + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 8 3 3600 20170609142855 20170512142855 48069 example.com. kK5LZnGi2VmVmKUXkVenYCQMHGqwhGaEOwjwVG9ScOVzvqNA+n7KWwxdLDsIVLgr/BjR9Cj9+HYB9hYMhk+LnsbHqf5ovY3+n7CV4v3MDWJBLYt7NHvXwoywbaD71w7koo0SUiBXMB/FyuxRj6BXEk4dlGh7mgHZXE+X/gCYxsM= + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if cached and with correct TTL +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if IPSECKEY is not cached +STEP 21 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA SERVFAIL + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ipsecmod_max_ttl.crpl b/external/unbound/testdata/ipsecmod_max_ttl.crpl new file mode 100644 index 0000000..50d4adf --- /dev/null +++ b/external/unbound/testdata/ipsecmod_max_ttl.crpl @@ -0,0 +1,229 @@ +; Test ipsecmod-max-ttl option. + +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: no + ipsecmod-max-ttl: 200 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod-max-ttl option +; Scenario overview: +; - query for example.com. IN A +; - check that query for example.com. IN IPSECKEY is generated +; - check that we get an answer for example.com. IN A with the correct TTL +; - check that the get the same answer from cache +; - check that we get the IPSECKEY answer from cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 10 IN SOA . . 15 28800 7200 604800 10 + ENTRY_END + + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to IPSECKEY query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if cached and with correct TTL +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Query without RD, check if IPSECKEY cached +STEP 21 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ipsecmod_strict.crpl b/external/unbound/testdata/ipsecmod_strict.crpl new file mode 100644 index 0000000..13d8e0e --- /dev/null +++ b/external/unbound/testdata/ipsecmod_strict.crpl @@ -0,0 +1,218 @@ +; Test ipsecmod-strict option + +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: yes + ipsecmod-max-ttl: 200 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod-strict option +; Scenario overview: +; - query for example.com. IN A +; - check that query for example.com. IN IPSECKEY is generated +; - check that we get SERVFAIL as answer (the hook failed) +; - check that the example.com. IN A answer is not cached +; - check that the example.com. IN IPSECKEY answer is cached + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 10 IN SOA . . 15 28800 7200 604800 10 + ENTRY_END + + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to IPSECKEY query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 21 QUERY +ENTRY_BEGIN + SECTION QUESTION + example.com. IN IPSECKEY +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN IPSECKEY + SECTION ANSWER + example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ipsecmod_whitelist.crpl b/external/unbound/testdata/ipsecmod_whitelist.crpl new file mode 100644 index 0000000..d916b00 --- /dev/null +++ b/external/unbound/testdata/ipsecmod_whitelist.crpl @@ -0,0 +1,295 @@ +; Test ipsecmod-whitelist option. + +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "ipsecmod validator iterator" + ; ../../ is there because the test runs from testdata/03-testbound.dir + ipsecmod-hook: "../../testdata/ipsecmod_hook.sh" + ipsecmod-strict: no + ipsecmod-max-ttl: 200 + ipsecmod-whitelist: white.example.com + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ipsecmod-whitelist option +; Scenario overview: +; - query for black.example.com. IN A +; - check that we get an answer for black.example.com. IN A with the correct TTL +; - check that an answer for black.example.com. IN IPSECKEY is not cached (not given) +; - query for white.example.com. IN A +; - check that query for white.example.com. IN IPSECKEY is generated +; - check that we get an answer for white.example.com. IN A with the correct TTL +; - check that the get the same answer from cache +; - check that we get the IPSECKEY answer from cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + K.ROOT-SERVERS.NET. IN AAAA + SECTION AUTHORITY + . 86400 IN SOA . . 20070304 28800 7200 604800 86400 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. 10 IN SOA . . 15 28800 7200 604800 10 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + white.example.com. IN A + SECTION ANSWER + white.example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + white.example.com. IN IPSECKEY + SECTION ANSWER + white.example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + black.example.com. IN A + SECTION ANSWER + black.example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + black.example.com. IN IPSECKEY + SECTION ANSWER + black.example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + black.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + black.example.com. IN A + SECTION ANSWER + black.example.com. 3600 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 11 QUERY +ENTRY_BEGIN + SECTION QUESTION + black.example.com. IN IPSECKEY +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + black.example.com. IN IPSECKEY + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + white.example.com. IN A +ENTRY_END + +STEP 21 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + white.example.com. IN IPSECKEY +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + white.example.com. IN A + SECTION ANSWER + white.example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 31 QUERY +ENTRY_BEGIN + SECTION QUESTION + white.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + white.example.com. IN A + SECTION ANSWER + white.example.com. 200 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 41 QUERY +ENTRY_BEGIN + SECTION QUESTION + white.example.com. IN IPSECKEY +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RA NOERROR + SECTION QUESTION + white.example.com. IN IPSECKEY + SECTION ANSWER + white.example.com. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_class_any.rpl b/external/unbound/testdata/iter_class_any.rpl new file mode 100644 index 0000000..a4ea822 --- /dev/null +++ b/external/unbound/testdata/iter_class_any.rpl @@ -0,0 +1,153 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test lookup of class any response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. ANY A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. ANY A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cname_cache.rpl b/external/unbound/testdata/iter_cname_cache.rpl new file mode 100644 index 0000000..a8068d2 --- /dev/null +++ b/external/unbound/testdata/iter_cname_cache.rpl @@ -0,0 +1,298 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with cached cname for nameserver +; example.com NS ns.example.com en ns2.example.com +; ns.example.com CNAME ns.bla.nl +; ns.bla.nl A .... +; dan timeout van A record uit cache - refetch. +; ns2.example.com timeed niet uit ; maar geeft altijd servfail. + + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +nl. IN A +SECTION AUTHORITY +nl. IN NS ns2.nic.nl. +SECTION ADDITIONAL +ns2.nic.nl. IN A 192.1.1.2 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. ".com" +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +;;; but really a CNAME in child server +ns.example.com. 1 IN A 1.2.3.4 +ns2.example.com. IN A 1.2.3.5 +ns2.example.com. IN AAAA 2002::5 +ENTRY_END + +; lame answers back to root for .nl (.com server not authoritative for .nl) +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +nl. IN A +SECTION AUTHORITY +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +RANGE_END + +; ns2.nic.nl ".nl" +RANGE_BEGIN 0 100 + ADDRESS 192.1.1.2 + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +bla.nl. IN A +SECTION AUTHORITY +bla.nl. IN NS ns.bla.nl. +SECTION ADDITIONAL +ns.bla.nl. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.bla.nl "bla..nl" +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.bla.nl. IN A +SECTION ANSWER +ns.bla.nl. IN A 1.2.3.6 +SECTION AUTHORITY +bla.nl. IN NS ns.bla.nl. +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.bla.nl. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +bla.nl. IN SOA bla.nl. bla.nl. 1 2 3 4 5 +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.bla.nl. IN MX +SECTION ANSWER +ns.bla.nl. IN MX 10 bla.nl. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +; ns.example.com "example.com" +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN MX +SECTION ANSWER +ns.example.com IN CNAME ns.bla.nl. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +; ns2.example.com "example.com" +; bad failing server +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +ns.example.com. IN MX +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns2.example.com "example.com" +; bad failing server +RANGE_BEGIN 0 100 + ADDRESS 2002::5 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +ns.example.com. IN MX +SECTION ANSWER +ENTRY_END +RANGE_END + +; get cname in cache. use MX query +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.com. IN MX +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.com. IN MX +SECTION ANSWER +ns.example.com. IN CNAME ns.bla.nl +ns.bla.nl. IN MX 10 bla.nl. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; get seconds to pass to timeout the A record +STEP 15 TIME_PASSES ELAPSE 5 + +; get into trouble getting cname for nameserver. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; there may still be pending ns.bla.nl AAAA queries ; get rid of them like this +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.bla.nl. IN AAAA +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.bla.nl. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +bla.nl. IN SOA bla.nl. bla.nl. 1 2 3 4 5 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cname_double.rpl b/external/unbound/testdata/iter_cname_double.rpl new file mode 100644 index 0000000..bb9f792 --- /dev/null +++ b/external/unbound/testdata/iter_cname_double.rpl @@ -0,0 +1,164 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test double cname in reply. +; this is in response to an error report from Robert Edmonds, +; about resolution of images-na.ssl-images-amazon.com. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.next.com. IN A +SECTION AUTHORITY +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; two CNAMEs for one name? +www.example.com. IN CNAME www.next.com. +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.next.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +www.next.com. IN A +SECTION ANSWER +www.next.com. IN A 10.20.30.40 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +next.com. IN NS +SECTION ANSWER +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +www.next.com. IN A 10.20.30.40 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cname_nx.rpl b/external/unbound/testdata/iter_cname_nx.rpl new file mode 100644 index 0000000..f826daa --- /dev/null +++ b/external/unbound/testdata/iter_cname_nx.rpl @@ -0,0 +1,158 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cname followed by nxdomain reply rcode. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.next.com. IN A +SECTION AUTHORITY +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.next.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.next.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +next.com. IN NS +SECTION ANSWER +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cname_qnamecopy.rpl b/external/unbound/testdata/iter_cname_qnamecopy.rpl new file mode 100644 index 0000000..bc672c1 --- /dev/null +++ b/external/unbound/testdata/iter_cname_qnamecopy.rpl @@ -0,0 +1,199 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cname to nodata and if qname is set to orig after prepend + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.next.com. IN A +SECTION AUTHORITY +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.next.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.next.com. IN A +SECTION ANSWER +SECTION AUTHORITY +next.com. IN SOA next.com. next.com. 2007090400 28800 7200 604800 18000 +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +next.com. IN NS +SECTION ANSWER +next.com. IN NS ns.next.com. +SECTION ADDITIONAL +ns.next.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 3 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD CD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +next.com. IN SOA next.com. next.com. 2007090400 28800 7200 604800 18000 +SECTION ADDITIONAL +ENTRY_END + +; query it from cache again +STEP 5 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 7 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.next.com. +SECTION AUTHORITY +next.com. IN SOA next.com. next.com. 2007090400 28800 7200 604800 18000 +SECTION ADDITIONAL +ENTRY_END + +; query answer to cname from cache again, test if stored under wrong qname. +STEP 9 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.next.com. IN A +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.next.com. IN A +SECTION ANSWER +SECTION AUTHORITY +next.com. IN SOA next.com. next.com. 2007090400 28800 7200 604800 18000 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cycle.rpl b/external/unbound/testdata/iter_cycle.rpl new file mode 100644 index 0000000..27adeb5 --- /dev/null +++ b/external/unbound/testdata/iter_cycle.rpl @@ -0,0 +1,179 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with dependency cycle +; query for ns.example.com, needs ns.example.net, needs ns.example.com. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +; note this will be scrubbed off +ns.example.net. IN A 1.2.3.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +; note this will be scrubbed off +ns.example.net. IN A 1.2.3.1 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.com. +SECTION ADDITIONAL +; note this will be scrubbed off +ns.example.com. IN A 1.2.3.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.com. +SECTION ADDITIONAL +; note this will be scrubbed off +ns.example.com. IN A 1.2.3.2 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +; recursion happens here. +; cycle detected and it fails. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_cycle_noh.rpl b/external/unbound/testdata/iter_cycle_noh.rpl new file mode 100644 index 0000000..6c2982a --- /dev/null +++ b/external/unbound/testdata/iter_cycle_noh.rpl @@ -0,0 +1,226 @@ +; config options +server: + harden-glue: "no" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution where disabled scrubber avoids cycle +; query for ns.example.com, needs ns.example.net, needs ns.example.com. +; scrubber disabled, so extra glue is trusted. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.1 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.2 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.2 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.1 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +; recursion happens here. +; cycle detected and it fails. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.2 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +; scrubbed off +; SECTION ADDITIONAL +; ns.example.net. IN A 1.2.3.1 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dname_insec.rpl b/external/unbound/testdata/iter_dname_insec.rpl new file mode 100644 index 0000000..791e384 --- /dev/null +++ b/external/unbound/testdata/iter_dname_insec.rpl @@ -0,0 +1,1055 @@ +; config options +server: + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of insecure DNAME in answer section + +; root infrastucture +RANGE_BEGIN 0 10000000 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +shortloop. IN TXT +SECTION ANSWER +shortloop. IN TXT "shortloop end" +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +x. IN A +SECTION AUTHORITY +x. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +long. IN NS +SECTION AUTHORITY +long. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS +SECTION AUTHORITY +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END +; end of root infrastucture + +; a.gtld-servers.net. (com. net. x.) +RANGE_BEGIN 0 10000000 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns1.example.net. +SECTION ADDITIONAL +ns1.example.net. IN A 168.192.3.3 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x. IN NS +SECTION AUTHORITY +x. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x. IN DNAME +SECTION AUTHORITY +x. IN DNAME . +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +shortloop.x.x. IN CNAME +SECTION ANSWER +x. DNAME . +shortloop.x.x. IN CNAME shortloop.x. +shortloop.x. IN CNAME shortloop. +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +shortloop.x. IN CNAME +SECTION ANSWER +x. DNAME . +shortloop.x. IN CNAME shortloop. +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS +SECTION AUTHORITY +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +long. IN NS +SECTION AUTHORITY +long. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; DNAME at zone apex, allowed by RFC 6672 section 2.3 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +long. IN DNAME +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.long. 3600 IN CNAME x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN A +SECTION ANSWER +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR YXDOMAIN +SECTION QUESTION +too.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +ENTRY_END +RANGE_END +; end of a.gtld-servers.net. + +; RFC 6672 section 2.2. The DNAME Substitution table tests +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;1 com. example.com. example.net. +;2 example.com. example.com. example.net. [0] +;3 a.example.com. example.com. example.net. a.example.net. +;4 a.b.example.com. example.com. example.net. a.b.example.net. +;5 ab.example.com. b.example.com. example.net. +;6 foo.example.com. example.com. example.net. foo.example.net. +;7 a.x.example.com. x.example.com. example.net. a.example.net. +;8 a.example.com. example.com. y.example.net. a.y.example.net. +;9 cyc.example.com. example.com. example.com. cyc.example.com. +;10 cyc.example.com. example.com. c.example.com. cyc.c.example.com. +;11 shortloop.x.x. x. . shortloop.x. +;12 shortloop.x. x. . shortloop. +; +; [0] The result depends on the QTYPE. If the QTYPE = DNAME, then +; the result is "example.com.", else "". +; +; Table 1. DNAME Substitution Examples + +; line no. 1 is mostly for authoritative server +; line no. 2 QTYPE != DNAME +STEP 220201 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +example.com. IN NS +ENTRY_END + +STEP 220202 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. 0 IN A 168.192.2.2 +ENTRY_END + +; line no. 2 QTYPE == DNAME +STEP 220203 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +example.com. IN DNAME +ENTRY_END + +STEP 220204 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +example.com. IN DNAME example.net. +ENTRY_END + + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;3 a.example.com. example.com. example.net. a.example.net. + +STEP 220301 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.example.com. IN A +ENTRY_END + +STEP 220302 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +a.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +a.example.com. IN CNAME a.example.net. +a.example.net. IN A 10.0.0.97 +ENTRY_END + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;4 a.b.example.com. example.com. example.net. a.b.example.net. + +STEP 220401 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.b.example.com. IN A +ENTRY_END + +STEP 220402 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +a.b.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +a.b.example.com. IN CNAME a.b.example.net. +a.b.example.net. IN A 10.0.97.98 +ENTRY_END + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;5 ab.example.com. b.example.com. example.net. +;6 foo.example.com. example.com. example.net. foo.example.net. + +; line no. 5 is mostly for authoritative server +; line no. 6 is basically the same as line no. 3 + +; ns1.example.com. +RANGE_BEGIN 220000 220699 + ADDRESS 168.192.2.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN A +SECTION ANSWER +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 2 DNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +example.com. IN DNAME example.net. +ENTRY_END + +; line 3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +a.example.com. IN CNAME a.example.net. +ENTRY_END + +; line 4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.b.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +a.b.example.com. IN CNAME a.b.example.net. +ENTRY_END +RANGE_END +; end of ns1.example.com. + + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;7 a.x.example.com. x.example.com. example.net. a.example.net. + +STEP 220701 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.x.example.com. IN A +ENTRY_END + +STEP 220702 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +a.x.example.com. IN A +SECTION ANSWER +x.example.com. IN DNAME example.net. +a.x.example.com. IN CNAME a.example.net. +a.example.net. IN A 10.0.0.97 +ENTRY_END + +; ns1.example.com. +RANGE_BEGIN 220700 220799 + ADDRESS 168.192.2.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN A +SECTION ANSWER +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 7 DNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +x.example.com. IN DNAME example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.x.example.com. IN A +SECTION ANSWER +x.example.com. IN DNAME example.net. +a.x.example.com. IN CNAME a.example.net. +ENTRY_END +RANGE_END +; end of ns1.example.com. + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;8 a.example.com. example.com. y.example.net. a.y.example.net. +; +; a.example.com. was renamed to a2.example.com. to avoid cache clashes +; on the synthetized CNAME (caching CNAMEs is allowed by RFC 6672 section 3.4) + +STEP 220801 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a2.example.com. IN A +ENTRY_END + +STEP 220802 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +a2.example.com. IN A +SECTION ANSWER +example.com. IN DNAME y.example.net. +a2.example.com. IN CNAME a2.y.example.net. +a2.y.example.net. IN A 10.97.50.121 +ENTRY_END + +; ns1.example.com. +RANGE_BEGIN 220800 220899 + ADDRESS 168.192.2.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN A +SECTION ANSWER +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 8 DNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +example.com. IN DNAME y.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a2.example.com. IN A +SECTION ANSWER +example.com. IN DNAME y.example.net. +a2.example.com. IN CNAME a2.y.example.net. +ENTRY_END +RANGE_END +; end of ns1.example.com. + + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;9 cyc.example.com. example.com. example.com. cyc.example.com. + +STEP 220901 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +cyc.example.com. IN A +ENTRY_END + +; Expected result is defined by RFC 1034 section 3.6.2: +; CNAME chains should be followed and CNAME loops signalled as an error +STEP 220902 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +REPLY NOERROR +SECTION QUESTION +cyc.example.com. IN A +SECTION ANSWER +example.com. 0 IN DNAME example.com. +cyc.example.com. 0 IN CNAME cyc.example.com. +ENTRY_END + +; ns1.example.com. +RANGE_BEGIN 220900 220999 + ADDRESS 168.192.2.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN A +SECTION ANSWER +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 9 DNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +example.com. IN DNAME example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +cyc.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.com. +cyc.example.com. IN CNAME cyc.example.com. +ENTRY_END +RANGE_END +; end of ns1.example.com. + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;10 cyc.example.com. example.com. c.example.com. cyc.c.example.com. +; +; cyc.example.com. was renamed to cyc2.example.com. to avoid cache clashes +; on the synthetized CNAME (caching CNAMEs is allowed by RFC 6672 section 3.4) +; +; target c.example.com. was renamed to cyc2.example.net. +; to limit number of pre-canned answers required for the test + +STEP 221001 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +cyc2.example.com. IN A +ENTRY_END + +; Expected result is defined by RFC 1034 section 3.6.2: +; CNAME chains should be followed and CNAME loops signalled as an error +STEP 221002 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +cyc2.example.com. IN A +ENTRY_END + +; ns1.example.com. +RANGE_BEGIN 221000 221099 + ADDRESS 168.192.2.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN A +SECTION ANSWER +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 10 DNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNAME +SECTION ANSWER +example.com. IN DNAME cyc2.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +cyc2.example.com. IN A +SECTION ANSWER +example.com. IN DNAME cyc2.example.net. +cyc2.example.com. IN CNAME cyc2.cyc2.example.net. +ENTRY_END +RANGE_END +; end of ns1.example.com. + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;11 shortloop.x.x. x. . shortloop.x. + +STEP 221101 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +shortloop.x.x. TXT +ENTRY_END + +STEP 221102 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +shortloop.x.x. IN TXT +SECTION ANSWER +x. IN DNAME . +shortloop.x.x. IN CNAME shortloop.x. +;;x. IN DNAME . +shortloop.x. IN CNAME shortloop. +shortloop. IN TXT "shortloop end" +ENTRY_END + +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;12 shortloop.x. x. . shortloop. + +; expire potentically cached CNAMEs for shortloop.x. from cache +STEP 221200 TIME_PASSES ELAPSE 10000 + +STEP 221201 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +shortloop.x. TXT +ENTRY_END + +STEP 221202 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +shortloop.x. IN TXT +SECTION ANSWER +x. IN DNAME . +shortloop.x. IN CNAME shortloop. +shortloop. IN TXT "shortloop end" +ENTRY_END + + +; ns1.example.net. (data shared by whole 22xxxx range) +RANGE_BEGIN 220000 229999 + ADDRESS 168.192.3.3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns1.example.net. +SECTION ADDITIONAL +example.net. IN A 168.192.3.3 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.net. IN A +SECTION ANSWER +ns1.example.net. IN A 168.192.3.3 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns1.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; line 3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.example.net. IN A +SECTION ANSWER +a.example.net. IN A 10.0.0.97 +ENTRY_END + +; line 4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.b.example.net. IN A +SECTION ANSWER +a.b.example.net. IN A 10.0.97.98 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a2.y.example.net. IN A +SECTION ANSWER +a2.y.example.net. IN A 10.97.50.121 +ENTRY_END + +; line 10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +cyc2.example.net. IN DNAME +SECTION ANSWER +cyc2.example.net. IN DNAME example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +cyc2.cyc2.example.net. IN A +SECTION ANSWER +cyc2.example.net. IN DNAME example.com. +cyc2.cyc2.example.com. IN CNAME cyc2.example.com. +ENTRY_END +RANGE_END +; end of ns1.example.net. + + +; RFC 6672 section 2.2: YXDOMAIN answers for too long results for substitution +; RFC 6672 section 2.3: DNAME can be at zone apex: zone apex = long. +STEP 229001 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +x.long. IN A +ENTRY_END + +; query returning maximal permissible length - should work +STEP 229002 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO +SECTION QUESTION +x.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.long. 3600 IN CNAME x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +ENTRY_END + +; result of substitution has too long name +; YXDOMAIN should be propagated to the client +; Unbound SEVFAILs: https://www.ietf.org/mail-archive/web/dnsext/current/msg11282.html +;TODO +; STEP 229003 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; too.long. IN A +; ENTRY_END +; +; STEP 229004 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH all +; REPLY QR YXDOMAIN +; SECTION QUESTION +; x.long. IN A +; SECTION ANSWER +; long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +; ENTRY_END + +; YXDOMAIN should work even if the cache is empty +STEP 229005 TIME_PASSES ELAPSE 4000 + +; STEP 229006 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; too.long. IN A +; ENTRY_END +; +; STEP 229007 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH all +; REPLY QR YXDOMAIN +; SECTION QUESTION +; x.long. IN A +; SECTION ANSWER +; long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +; ENTRY_END + + + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dname_yx.rpl b/external/unbound/testdata/iter_dname_yx.rpl new file mode 100644 index 0000000..18b9725 --- /dev/null +++ b/external/unbound/testdata/iter_dname_yx.rpl @@ -0,0 +1,1041 @@ +; config options +server: + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of insecure DNAME in answer section + +; root infrastucture +RANGE_BEGIN 0 10000000 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +shortloop. IN TXT +SECTION ANSWER +shortloop. IN TXT "shortloop end" +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH subdomain opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +x. IN A +SECTION AUTHORITY +x. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +long. IN NS +SECTION AUTHORITY +long. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS +SECTION AUTHORITY +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END +; end of root infrastucture + +; a.gtld-servers.net. (com. net. x.) +RANGE_BEGIN 0 10000000 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns1.example.net. +SECTION ADDITIONAL +ns1.example.net. IN A 168.192.3.3 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x. IN NS +SECTION AUTHORITY +x. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x. IN DNAME +SECTION AUTHORITY +x. IN DNAME . +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +shortloop.x.x. IN CNAME +SECTION ANSWER +x. DNAME . +shortloop.x.x. IN CNAME shortloop.x. +shortloop.x. IN CNAME shortloop. +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +shortloop.x. IN CNAME +SECTION ANSWER +x. DNAME . +shortloop.x. IN CNAME shortloop. +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS +SECTION AUTHORITY +60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +long. IN NS +SECTION AUTHORITY +long. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; DNAME at zone apex, allowed by RFC 6672 section 2.3 +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +long. IN DNAME +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.long. 3600 IN CNAME x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH qname qtype opcode +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. IN A +SECTION ANSWER +x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH qname opcode +ADJUST copy_id copy_query +REPLY QR AA YXDOMAIN +SECTION QUESTION +too.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +ENTRY_END +RANGE_END +; end of a.gtld-servers.net. + +; RFC 6672 section 2.2. The DNAME Substitution table tests +;# QNAME owner DNAME target result +;-- ---------------- -------------- -------------- ----------------- +;1 com. example.com. example.net. +;2 example.com. example.com. example.net. [0] +;3 a.example.com. example.com. example.net. a.example.net. +;4 a.b.example.com. example.com. example.net. a.b.example.net. +;5 ab.example.com. b.example.com. example.net. +;6 foo.example.com. example.com. example.net. foo.example.net. +;7 a.x.example.com. x.example.com. example.net. a.example.net. +;8 a.example.com. example.com. y.example.net. a.y.example.net. +;9 cyc.example.com. example.com. example.com. cyc.example.com. +;10 cyc.example.com. example.com. c.example.com. cyc.c.example.com. +;11 shortloop.x.x. x. . shortloop.x. +;12 shortloop.x. x. . shortloop. +; +; [0] The result depends on the QTYPE. If the QTYPE = DNAME, then +; the result is "example.com.", else "". +; +; Table 1. DNAME Substitution Examples + +; ; line no. 1 is mostly for authoritative server +; ; line no. 2 QTYPE != DNAME +; STEP 220201 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; example.com. IN NS +; ENTRY_END +; +; STEP 220202 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode answer +; REPLY QR RD RA DO +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; ENTRY_END +; +; ; line no. 2 QTYPE == DNAME +; STEP 220203 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; example.com. IN DNAME +; ENTRY_END +; +; STEP 220204 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; REPLY QR RD RA DO +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; example.com. IN DNAME example.net. +; ENTRY_END +; +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;3 a.example.com. example.com. example.net. a.example.net. +; +; STEP 220301 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; a.example.com. IN A +; ENTRY_END +; +; STEP 220302 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; a.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME example.net. +; a.example.com. IN CNAME a.example.net. +; a.example.net. IN A 10.0.0.97 +; ENTRY_END +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;4 a.b.example.com. example.com. example.net. a.b.example.net. +; +; STEP 220401 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; a.b.example.com. IN A +; ENTRY_END +; +; STEP 220402 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; a.b.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME example.net. +; a.b.example.com. IN CNAME a.b.example.net. +; a.b.example.net. IN A 10.0.97.98 +; ENTRY_END +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;5 ab.example.com. b.example.com. example.net. +; ;6 foo.example.com. example.com. example.net. foo.example.net. +; +; ; line no. 5 is mostly for authoritative server +; ; line no. 6 is basically the same as line no. 3 +; +; ; ns1.example.com. +; RANGE_BEGIN 220000 220699 +; ADDRESS 168.192.2.2 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN A +; SECTION ANSWER +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 2 DNAME +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; example.com. IN DNAME example.net. +; ENTRY_END +; +; ; line 3 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME example.net. +; a.example.com. IN CNAME a.example.net. +; ENTRY_END +; +; ; line 4 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a.b.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME example.net. +; a.b.example.com. IN CNAME a.b.example.net. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.com. +; +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;7 a.x.example.com. x.example.com. example.net. a.example.net. +; +; STEP 220701 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; a.x.example.com. IN A +; ENTRY_END +; +; STEP 220702 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; a.x.example.com. IN A +; SECTION ANSWER +; x.example.com. IN DNAME example.net. +; a.x.example.com. IN CNAME a.example.net. +; a.example.net. IN A 10.0.0.97 +; ENTRY_END +; +; ; ns1.example.com. +; RANGE_BEGIN 220700 220799 +; ADDRESS 168.192.2.2 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN A +; SECTION ANSWER +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 7 DNAME +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; x.example.com. IN DNAME example.net. +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a.x.example.com. IN A +; SECTION ANSWER +; x.example.com. IN DNAME example.net. +; a.x.example.com. IN CNAME a.example.net. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.com. +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;8 a.example.com. example.com. y.example.net. a.y.example.net. +; ; +; ; a.example.com. was renamed to a2.example.com. to avoid cache clashes +; ; on the synthetized CNAME (caching CNAMEs is allowed by RFC 6672 section 3.4) +; +; STEP 220801 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; a2.example.com. IN A +; ENTRY_END +; +; STEP 220802 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; a2.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME y.example.net. +; a2.example.com. IN CNAME a2.y.example.net. +; a2.y.example.net. IN A 10.97.50.121 +; ENTRY_END +; +; ; ns1.example.com. +; RANGE_BEGIN 220800 220899 +; ADDRESS 168.192.2.2 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN A +; SECTION ANSWER +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 8 DNAME +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; example.com. IN DNAME y.example.net. +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a2.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME y.example.net. +; a2.example.com. IN CNAME a2.y.example.net. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.com. +; +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;9 cyc.example.com. example.com. example.com. cyc.example.com. +; +; STEP 220901 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; cyc.example.com. IN A +; ENTRY_END +; +; ; Expected result is defined by RFC 1034 section 3.6.2: +; ; CNAME chains should be followed and CNAME loops signalled as an error +; STEP 220902 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; REPLY SERVFAIL +; SECTION QUESTION +; cyc.example.com. IN A +; ENTRY_END +; +; ; ns1.example.com. +; RANGE_BEGIN 220900 220999 +; ADDRESS 168.192.2.2 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN A +; SECTION ANSWER +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 9 DNAME +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; example.com. IN DNAME example.com. +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; cyc.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME example.com. +; cyc.example.com. IN CNAME cyc.example.com. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.com. +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;10 cyc.example.com. example.com. c.example.com. cyc.c.example.com. +; ; +; ; cyc.example.com. was renamed to cyc2.example.com. to avoid cache clashes +; ; on the synthetized CNAME (caching CNAMEs is allowed by RFC 6672 section 3.4) +; ; +; ; target c.example.com. was renamed to cyc2.example.net. +; ; to limit number of pre-canned answers required for the test +; +; STEP 221001 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; cyc2.example.com. IN A +; ENTRY_END +; +; ; Expected result is defined by RFC 1034 section 3.6.2: +; ; CNAME chains should be followed and CNAME loops signalled as an error +; STEP 221002 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; REPLY SERVFAIL +; SECTION QUESTION +; cyc2.example.com. IN A +; ENTRY_END +; +; ; ns1.example.com. +; RANGE_BEGIN 221000 221099 +; ADDRESS 168.192.2.2 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN A +; SECTION ANSWER +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.com. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 10 DNAME +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN DNAME +; SECTION ANSWER +; example.com. IN DNAME cyc2.example.net. +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; cyc2.example.com. IN A +; SECTION ANSWER +; example.com. IN DNAME cyc2.example.net. +; cyc2.example.com. IN CNAME cyc2.cyc2.example.net. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.com. +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;11 shortloop.x.x. x. . shortloop.x. +; +; STEP 221101 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; shortloop.x.x. TXT +; ENTRY_END +; +; STEP 221102 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; shortloop.x.x. IN TXT +; SECTION ANSWER +; x. IN DNAME . +; ; unbound hack +; x. IN DNAME . +; shortloop.x.x. IN CNAME shortloop.x. +; shortloop.x. IN CNAME shortloop. +; shortloop. IN TXT "shortloop end" +; ENTRY_END +; +; ;# QNAME owner DNAME target result +; ;-- ---------------- -------------- -------------- ----------------- +; ;12 shortloop.x. x. . shortloop. +; +; ; expire potentically cached CNAMEs for shortloop.x. from cache +; STEP 221200 TIME_PASSES ELAPSE 10000 +; +; STEP 221201 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; shortloop.x. TXT +; ENTRY_END +; +; STEP 221202 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; shortloop.x. IN TXT +; SECTION ANSWER +; x. IN DNAME . +; shortloop.x. IN CNAME shortloop. +; shortloop. IN TXT "shortloop end" +; ENTRY_END +; +; +; ; ns1.example.net. (data shared by whole 22xxxx range) +; RANGE_BEGIN 220000 229999 +; ADDRESS 168.192.3.3 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.net. IN NS +; SECTION ANSWER +; example.net. IN NS ns1.example.net. +; SECTION ADDITIONAL +; example.net. IN A 168.192.3.3 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.net. IN A +; SECTION ANSWER +; ns1.example.net. IN A 168.192.3.3 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; ns1.example.net. IN AAAA +; SECTION ANSWER +; ENTRY_END +; +; ; line 3 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a.example.net. IN A +; SECTION ANSWER +; a.example.net. IN A 10.0.0.97 +; ENTRY_END +; +; ; line 4 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a.b.example.net. IN A +; SECTION ANSWER +; a.b.example.net. IN A 10.0.97.98 +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; a2.y.example.net. IN A +; SECTION ANSWER +; a2.y.example.net. IN A 10.97.50.121 +; ENTRY_END +; +; ; line 10 +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; cyc2.example.net. IN DNAME +; SECTION ANSWER +; cyc2.example.net. IN DNAME example.com. +; ENTRY_END +; +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; cyc2.cyc2.example.net. IN A +; SECTION ANSWER +; cyc2.example.net. IN DNAME example.com. +; cyc2.cyc2.example.com. IN CNAME cyc2.example.com. +; ENTRY_END +; RANGE_END +; ; end of ns1.example.net. +; +; +; ; RFC 6672 section 2.2: YXDOMAIN answers for too long results for substitution +; ; RFC 6672 section 2.3: DNAME can be at zone apex: zone apex = long. +; STEP 229001 QUERY +; ENTRY_BEGIN +; REPLY RD DO +; SECTION QUESTION +; x.long. IN A +; ENTRY_END +; +; ; query returning maximal permissible length - should work +; STEP 229002 CHECK_ANSWER +; ENTRY_BEGIN +; MATCH rcode question answer +; SECTION QUESTION +; x.long. IN A +; SECTION ANSWER +; long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +; x.long. 3600 IN CNAME x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +; x.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. 3600 IN A 192.0.2.1 +; ENTRY_END + +; result of substitution has too long name +; YXDOMAIN should be propagated to the client +; Unbound SEVFAILs: https://www.ietf.org/mail-archive/web/dnsext/current/msg11282.html +STEP 229003 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +too.long. IN A +ENTRY_END + +STEP 229004 CHECK_ANSWER +ENTRY_BEGIN +MATCH rcode question answer +REPLY QR YXDOMAIN +SECTION QUESTION +too.long. IN A +SECTION ANSWER +long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. +ENTRY_END + + ; ; YXDOMAIN should work even if the cache is empty + ; STEP 229005 TIME_PASSES ELAPSE 4000 + ; + ; STEP 229006 QUERY + ; ENTRY_BEGIN + ; REPLY RD DO + ; SECTION QUESTION + ; too.long. IN A + ; ENTRY_END + ; + ; STEP 229007 CHECK_ANSWER + ; ENTRY_BEGIN + ; MATCH rcode question answer + ; REPLY QR YXDOMAIN + ; SECTION QUESTION + ; x.long. IN A + ; SECTION ANSWER + ; long. 3600 IN DNAME 63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.63o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.60o-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. + ; ENTRY_END + + + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dnsseclame_bug.rpl b/external/unbound/testdata/iter_dnsseclame_bug.rpl new file mode 100644 index 0000000..cb17bbf --- /dev/null +++ b/external/unbound/testdata/iter_dnsseclame_bug.rpl @@ -0,0 +1,468 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Bug test dnssec-lame detection at ds point with target queries. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +; Note this timing is so it will provide answers at the beginning. +RANGE_BEGIN 0 30 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +e.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; no example.net delegation answers yet. + +RANGE_END + +; e.gtld-servers.net. +; Note this timing is so it will not provide answers at the beginning, +; but only later on. +RANGE_BEGIN 30 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +e.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +; Note this timing is so it will not provide answers at the beginning, +; but only later on. +RANGE_BEGIN 30 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +; no NS set. not needed for this test. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. C/0b+sqlsdSTkhd+aDXb6ELyuQreosIGBzLCtWxYGD+Q9QGB5rN8uB+4+48yhw36pd3MfeAn06AgAnJ6eu8tJg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +; fine DNSKEY response. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + + +; correct delegation with DS +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; This server is DNSSEC LAME! +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +; dnssec-lameness detection depends on this information +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 10 NOTHING +; recursion at time 10. +; first recursion with answers in 0-30 time +; with bug it now resolves to the bad version +; fixed, it stops waiting for more target queries. + +STEP 40 NOTHING +; next recursion with more answers at time 40. + +; recursion happens here. +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/iter_dnsseclame_ds.rpl b/external/unbound/testdata/iter_dnsseclame_ds.rpl new file mode 100644 index 0000000..78a11cc --- /dev/null +++ b/external/unbound/testdata/iter_dnsseclame_ds.rpl @@ -0,0 +1,417 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Test dnssec-lame detection at ds point. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +e.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +; no NS set. not needed for this test. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. C/0b+sqlsdSTkhd+aDXb6ELyuQreosIGBzLCtWxYGD+Q9QGB5rN8uB+4+48yhw36pd3MfeAn06AgAnJ6eu8tJg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +; fine DNSKEY response. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + + +; correct delegation with DS +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; This server is DNSSEC LAME! +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +; dnssec-lameness detection depends on this information +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/iter_dnsseclame_ds_ok.rpl b/external/unbound/testdata/iter_dnsseclame_ds_ok.rpl new file mode 100644 index 0000000..d398c82 --- /dev/null +++ b/external/unbound/testdata/iter_dnsseclame_ds_ok.rpl @@ -0,0 +1,370 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Test dnssec-lame detection at ds point, which is ok. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +; no NS set. not needed for this test. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +; fine DNSKEY response. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; correct delegation with DS +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; server is not DNSSEC lame. +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NS ns.example.net. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. C/0b+sqlsdSTkhd+aDXb6ELyuQreosIGBzLCtWxYGD+Q9QGB5rN8uB+4+48yhw36pd3MfeAn06AgAnJ6eu8tJg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dnsseclame_ta.rpl b/external/unbound/testdata/iter_dnsseclame_ta.rpl new file mode 100644 index 0000000..5799a11 --- /dev/null +++ b/external/unbound/testdata/iter_dnsseclame_ta.rpl @@ -0,0 +1,330 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Test dnssec-lame detection at anchor point. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +; this entry; glue will make unbound take this reference first. +; it is however, the lame server. +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +e.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134802 20070829134802 2854 example.com. AJwwYIUGH7HgjehzPVkrVUFmFkSGGksGjUX+/zqpCOG9a/cgGC+n40I= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134802 20070829134802 2854 example.com. ABUu7ITHLl6vfuWzedIp03igXknUR1gYPBl8X6uIDrvraN1bjQJPXME= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +; lame DNSKEY response. +; here without sigs (assuming server does unknown-RR type handling) +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +ENTRY_END + +; lame NS response +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +; the lame response. No RRSIGS. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; the wrong answer. +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +; dnssec-lameness detection depends on this information +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dnsseclame_ta_ok.rpl b/external/unbound/testdata/iter_dnsseclame_ta_ok.rpl new file mode 100644 index 0000000..285fb3e --- /dev/null +++ b/external/unbound/testdata/iter_dnsseclame_ta_ok.rpl @@ -0,0 +1,306 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Test dnssec-lame detection with anchor point that is ok. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134802 20070829134802 2854 example.com. AJwwYIUGH7HgjehzPVkrVUFmFkSGGksGjUX+/zqpCOG9a/cgGC+n40I= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134802 20070829134802 2854 example.com. ABUu7ITHLl6vfuWzedIp03igXknUR1gYPBl8X6uIDrvraN1bjQJPXME= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +; the response is not lame at all. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134802 20070829134802 2854 example.com. AJwwYIUGH7HgjehzPVkrVUFmFkSGGksGjUX+/zqpCOG9a/cgGC+n40I= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134802 20070829134802 2854 example.com. ABUu7ITHLl6vfuWzedIp03igXknUR1gYPBl8X6uIDrvraN1bjQJPXME= ;{id = 2854} +ENTRY_END + +; response is not lame. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_domain_sale.rpl b/external/unbound/testdata/iter_domain_sale.rpl new file mode 100644 index 0000000..ff61278 --- /dev/null +++ b/external/unbound/testdata/iter_domain_sale.rpl @@ -0,0 +1,273 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver with a domain sale +; and the old operator is nasty, keeps running his server with the old data. +; and lots of lookups keep going towards the domain. +; eventually, the NS record has to timeout. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (before sale of domain) +RANGE_BEGIN 0 20 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (after sale of domain) +RANGE_BEGIN 30 200 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END +RANGE_END + +; ns.example.com. first owner +RANGE_BEGIN 0 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; nxdomains for any name,type +; last in RANGE so that it matches everything left over. +; it includes the NS record. +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA a. b. 1 2 3 4 5 +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. new owner +RANGE_BEGIN 0 200 + ADDRESS 8.8.8.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END +RANGE_END + +; Fetch the old record from the old owner. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 5 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; the domain is sold (right at this time). +; but the information stays in the cache. + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; and ask another query +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; at TTL 5 because TTL is capped at min-ttl of 5 in rdata of SOA +example.com. 5 IN SOA a. b. 1 2 3 4 5 +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; after another 1900 seconds the domain must have timed out. +STEP 70 TIME_PASSES ELAPSE 1900 + +; the NS record should have timed out. +STEP 80 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_domain_sale_nschange.rpl b/external/unbound/testdata/iter_domain_sale_nschange.rpl new file mode 100644 index 0000000..bc396f6 --- /dev/null +++ b/external/unbound/testdata/iter_domain_sale_nschange.rpl @@ -0,0 +1,342 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver with a domain sale and NS changes +; and the old operator is nasty, keeps running his server with the old data. +; and lots of lookups keep going towards the domain. +; and the old server is changing the NS record of the old domain. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (before sale of domain) +RANGE_BEGIN 0 20 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (after sale of domain) +RANGE_BEGIN 30 200 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END +RANGE_END + +; ns.example.com. first owner +RANGE_BEGIN 0 30 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; nxdomains for any name,type +; last in RANGE so that it matches everything left over. +; it includes the NS record. +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA a. b. 1 2 3 4 5 +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. first owner, NS changed +RANGE_BEGIN 40 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS nsb.example.com. +SECTION ADDITIONAL +nsb.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS nsb.example.com. +SECTION ADDITIONAL +nsb.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; nxdomains for any name,type +; last in RANGE so that it matches everything left over. +; it includes the NS record. +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA a. b. 1 2 3 4 5 +example.com. 3600 IN NS nsb.example.com. +SECTION ADDITIONAL +nsb.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. new owner +RANGE_BEGIN 0 200 + ADDRESS 8.8.8.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END +RANGE_END + +; Fetch the old record from the old owner. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 5 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; the domain is sold (right at this time). +; but the information stays in the cache. + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; and ask another query +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; at TTL 5 because TTL capped at ttl of minttl in rdata of SOA. +example.com. 5 IN SOA a. b. 1 2 3 4 5 +example.com. 3600 IN NS nsb.example.com. +SECTION ADDITIONAL +nsb.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +STEP 62 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 63 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; at TTL 5 because TTL capped at ttl of minttl in rdata of SOA. +example.com. 5 IN SOA a. b. 1 2 3 4 5 +example.com. 1800 IN NS nsb.example.com. +SECTION ADDITIONAL +nsb.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; after another 1900 seconds the domain must have timed out. +STEP 70 TIME_PASSES ELAPSE 1900 + +; the NS record should have timed out. +STEP 80 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_donotq127.rpl b/external/unbound/testdata/iter_donotq127.rpl new file mode 100644 index 0000000..3668d7b --- /dev/null +++ b/external/unbound/testdata/iter_donotq127.rpl @@ -0,0 +1,136 @@ +; config options +server: + qname-minimisation: "no" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator donotquery of 127/8. +; The scenario presents an iteration chain that has 127.0.0.2 and +; 127.255.255.255 as nameserver IPs, like a spam-blocklist. +; these are 127/8 localhost and should be blocked, causing servfail. +; if not blocked, they cause a lookup, but this file does not specify +; 127.* responses, so testbound will fail the test. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ns.example.com. IN A 127.255.255.255 +ns2.example.com. IN A 127.0.0.2 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ns.example.com. IN A 127.255.255.255 +ns2.example.com. IN A 127.0.0.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_dp_turnsuseless.rpl b/external/unbound/testdata/iter_dp_turnsuseless.rpl new file mode 100644 index 0000000..9d0c355 --- /dev/null +++ b/external/unbound/testdata/iter_dp_turnsuseless.rpl @@ -0,0 +1,166 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test parent-child dichotomy where dp turns useless + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; data for ns-crap does not exist. +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NXDOMAIN +SECTION QUESTION +ns-crap. IN NS +SECTION AUTHORITY +; very short TTL so it'll expire. +. 2 SOA . . 1 2 3 4 5 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +; very short TTL so it can time out quickly. +example.com. 2 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns-crap. +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 2 IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN NS +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns-crap. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 2 IN A 10.20.30.40 +ENTRY_END + +; parent side stuff times out +STEP 40 TIME_PASSES ELAPSE 5.0 + +; actual retry logic must fire +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 2 IN A 10.20.30.40 +ENTRY_END + + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_locate_ns.rpl b/external/unbound/testdata/iter_ds_locate_ns.rpl new file mode 100644 index 0000000..d3b613e --- /dev/null +++ b/external/unbound/testdata/iter_ds_locate_ns.rpl @@ -0,0 +1,145 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test locate of NS records for parent nameservers of DS + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; content of root-servers.net +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN NS +SECTION ANSWER +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +root-servers.net. IN A +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +root-servers.net. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_locate_ns_cname.rpl b/external/unbound/testdata/iter_ds_locate_ns_cname.rpl new file mode 100644 index 0000000..d99d301 --- /dev/null +++ b/external/unbound/testdata/iter_ds_locate_ns_cname.rpl @@ -0,0 +1,155 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test locate of NS records for DS with CNAME + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; content of root-servers.net +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN NS +SECTION ANSWER +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +root-servers.net. IN CNAME blabla.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +blabla.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +root-servers.net. IN A +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +root-servers.net. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_locate_ns_detach.rpl b/external/unbound/testdata/iter_ds_locate_ns_detach.rpl new file mode 100644 index 0000000..9308bba --- /dev/null +++ b/external/unbound/testdata/iter_ds_locate_ns_detach.rpl @@ -0,0 +1,297 @@ +; config options +server: + target-fetch-policy: "3 2 1 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test locate of NS records for DS and with detached queries +; the additional targets looked up cause detached queries. +; hence the target fetch policy is increased above. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN DS +SECTION ANSWER +SECTION AUTHORITY +. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.server.net. +net. IN NS b.server.net. +net. IN NS c.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.server.net. +; The b.server.net and c.server.net servers are here to cause +; extra lookups to be generated (to create detached queries in the +; iterator), there is no IP address that answers for them set up. +; force DSNSFind, we host a grandchild zone. +; also, this range of steps is without responses for b and c, so that +; they can be force to happen later (after the DSNS is activated). +RANGE_BEGIN 0 20 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.server.net. +net. IN NS b.server.net. +net. IN NS c.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.server.net. IN A +SECTION ANSWER +a.server.net. IN A 192.5.6.30 +SECTION AUTHORITY +net. IN NS a.server.net. +net. IN NS b.server.net. +net. IN NS c.server.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.sub.example.net. IN DS +SECTION AUTHORITY +sub.example.net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +sub.example.net. IN NS a.server.net. +sub.example.net. IN NS b.server.net. +sub.example.net. IN NS c.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.sub.example.net. IN A +SECTION AUTHORITY +sub.example.net. IN NS a.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.server.net range with all the answers (to finish the test). +RANGE_BEGIN 30 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.server.net. +net. IN NS b.server.net. +net. IN NS c.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.server.net. IN A +SECTION ANSWER +a.server.net. IN A 192.5.6.30 +SECTION AUTHORITY +net. IN NS a.server.net. +net. IN NS b.server.net. +net. IN NS c.server.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.server.net. IN AAAA +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.server.net. IN A +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.server.net. IN AAAA +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.server.net. IN A +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.server.net. IN AAAA +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.sub.example.net. IN DS +SECTION AUTHORITY +sub.example.net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN NS +SECTION ANSWER +sub.example.net. IN NS a.server.net. +sub.example.net. IN NS b.server.net. +sub.example.net. IN NS c.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.sub.example.net. IN A +SECTION AUTHORITY +sub.example.net. IN NS a.server.net. +SECTION ADDITIONAL +a.server.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.sub.example.net. IN DS +ENTRY_END + +; make traffic flow at this time +STEP 15 TRAFFIC + +STEP 20 TRAFFIC + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.sub.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +SECTION ADDITIONAL +ENTRY_END + +STEP 50 TRAFFIC + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_locate_ns_nosoa.rpl b/external/unbound/testdata/iter_ds_locate_ns_nosoa.rpl new file mode 100644 index 0000000..9c14cea --- /dev/null +++ b/external/unbound/testdata/iter_ds_locate_ns_nosoa.rpl @@ -0,0 +1,145 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test locate of NS records for DS without a SOA record + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; content of root-servers.net +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN NS +SECTION ANSWER +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +k.root-servers.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +;root-servers.net. IN SOA K.ROOT-SERVERS.NET. hostmaster. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +root-servers.net. IN A +SECTION AUTHORITY +root-servers.net. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +root-servers.net. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +root-servers.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +net. IN SOA a.gtld-servers.net. hostmaster. 2 3 4 5 6 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_referral.rpl b/external/unbound/testdata/iter_ds_referral.rpl new file mode 100644 index 0000000..e320942 --- /dev/null +++ b/external/unbound/testdata/iter_ds_referral.rpl @@ -0,0 +1,213 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with DS query and referral reply + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; note, no specific DS answer here, it replies with the referral for +; the type DS query + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to A query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; something for wrong type DS query here +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ds_reply.rpl b/external/unbound/testdata/iter_ds_reply.rpl new file mode 100644 index 0000000..ea2b69d --- /dev/null +++ b/external/unbound/testdata/iter_ds_reply.rpl @@ -0,0 +1,225 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with DS query and answer reply + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DS gets an answer from the authoritative server +; (like NSD 4.1.0 answers it) +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to A query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; something for wrong type DS query here +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_emptydp.rpl b/external/unbound/testdata/iter_emptydp.rpl new file mode 100644 index 0000000..f61b306 --- /dev/null +++ b/external/unbound/testdata/iter_emptydp.rpl @@ -0,0 +1,266 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "3 2 1 0 0" # make sure it fetches for test + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with empty delegation from cache. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. + +; sneak in some data into the cache to simulate partial data after timeouts +; gets scrubbed anyway. +example.net. NS ns.example.net. + +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +; com zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ENTRY_END + +; net zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +; example.net. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.com. zone +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; bogus +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; make sure glue fetch is done. +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_emptydp_for_glue.rpl b/external/unbound/testdata/iter_emptydp_for_glue.rpl new file mode 100644 index 0000000..33951e7 --- /dev/null +++ b/external/unbound/testdata/iter_emptydp_for_glue.rpl @@ -0,0 +1,496 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "3 2 1 0 0" # make sure it fetches for test + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with empty delegation for glue address +; setup: +; query for www.example.com. +; needs example.com served by ns.example.net and ns.example.org +; needs example.net served by ns.example.net and ns.example.org +; needs example.org served by ns.example.net and ns.example.org +; but the cache has all these NS rrsets, but not the addresses. +; observed in the wild this was from the in-addr zone towards two +; domains with such a setup. and high TTL NS, lower for A. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. + +; sneak in some data into the cache to simulate partial data after timeouts +; gets scrubbed away now .... +example.com. NS ns.example.net. +example.com. NS ns.example.org. +example.net. NS ns.example.net. +example.net. NS ns.example.org. +example.org. NS ns.example.net. +example.org. NS ns.example.org. + +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +org. IN A +SECTION AUTHORITY +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +; com zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. NS ns.example.net. +example.com. NS ns.example.org. +SECTION ADDITIONAL +; no glue! +ENTRY_END + +; net zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. NS ns.example.net. +example.net. NS ns.example.org. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +; org zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +org. IN A +SECTION ANSWER +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.org. IN A +SECTION AUTHORITY +example.org. NS ns.example.net. +example.org. NS ns.example.org. +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +; example.org. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.org. IN NS +SECTION ANSWER +example.org. NS ns.example.net. +example.org. NS ns.example.org. +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.org. IN A +SECTION ANSWER +ns.example.org. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.org. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.net. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. NS ns.example.net. +example.net. NS ns.example.org. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.com. zone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; bogus message. +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.example.org. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 + +; example.org. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.org. IN NS +SECTION ANSWER +example.org. NS ns.example.net. +example.org. NS ns.example.org. +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.org. IN A +SECTION ANSWER +ns.example.org. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.org. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.net. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. NS ns.example.net. +example.net. NS ns.example.org. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.com. zone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; make sure glue fetch is done. +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; make sure NS fetch is done. +STEP 14 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.org. IN NS +ENTRY_END + +STEP 15 CHECK_ANSWER +ENTRY_BEGIN +MATCH ; none +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_fwdfirst.rpl b/external/unbound/testdata/iter_fwdfirst.rpl new file mode 100644 index 0000000..5154bab --- /dev/null +++ b/external/unbound/testdata/iter_fwdfirst.rpl @@ -0,0 +1,157 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +forward-zone: + name: "example.com" + forward-addr: 1.2.3.6 # failing resolver + forward-first: yes + +CONFIG_END + +SCENARIO_BEGIN Test forward-first directive + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; local resolver (that fails a lot) +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA SERVFAIL +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_fwdfirstequal.rpl b/external/unbound/testdata/iter_fwdfirstequal.rpl new file mode 100644 index 0000000..d8da470 --- /dev/null +++ b/external/unbound/testdata/iter_fwdfirstequal.rpl @@ -0,0 +1,157 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +forward-zone: + name: "." + forward-addr: 1.2.3.6 # failing resolver + forward-first: yes + +CONFIG_END + +SCENARIO_BEGIN Test forward-first directive with equal stub name configured. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; local resolver (that fails a lot) +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA SERVFAIL +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_fwdstub.rpl b/external/unbound/testdata/iter_fwdstub.rpl new file mode 100644 index 0000000..06a8789 --- /dev/null +++ b/external/unbound/testdata/iter_fwdstub.rpl @@ -0,0 +1,218 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +forward-zone: + name: "example.com" + forward-addr: 10.0.0.1 +stub-zone: + name: "sub.example.com" + stub-addr: 10.0.0.2 +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with a stub under a forward zone + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; forwarder for example.com. +RANGE_BEGIN 0 100 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.0.0.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; fail all other queries +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.com. IN A +ENTRY_END +RANGE_END + +; stub for sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 10.0.0.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.0.0.5 +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + + +; check if forwarder is honored +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.0.0.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; try to resolve from stub zone +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.0.0.5 +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_fwdstubroot.rpl b/external/unbound/testdata/iter_fwdstubroot.rpl new file mode 100644 index 0000000..e43584c --- /dev/null +++ b/external/unbound/testdata/iter_fwdstubroot.rpl @@ -0,0 +1,175 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +forward-zone: + name: "." + forward-addr: 10.0.0.1 +stub-zone: + name: "sub.example.com" + stub-addr: 10.0.0.2 +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with a stub under a forward root zone + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + +; No answers from the actual root, blocked. + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; forwarder for example.com. +RANGE_BEGIN 0 100 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.0.0.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; fail all other queries +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.com. IN A +ENTRY_END +RANGE_END + +; stub for sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 10.0.0.2 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.0.0.5 +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; try to resolve from stub zone +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 10.0.0.5 +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.44 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_got6only.rpl b/external/unbound/testdata/iter_got6only.rpl new file mode 100644 index 0000000..7363a48 --- /dev/null +++ b/external/unbound/testdata/iter_got6only.rpl @@ -0,0 +1,136 @@ +; config options +server: + do-ip6: no + target-fetch-policy: "0 0 0 0 0 " + qname-minimisation: "no" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator when only ip6 in dp but doip6 is no + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.bla.com. +SECTION ADDITIONAL +; not included +;ns.bla.com. IN A 1.2.3.4 + +; and this one is useless because do-ip6 is "no" +ns.bla.com. IN AAAA ::53 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.bla.com. IN A +SECTION ANSWER +ns.bla.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_hint_lame.rpl b/external/unbound/testdata/iter_hint_lame.rpl new file mode 100644 index 0000000..e9ffbce --- /dev/null +++ b/external/unbound/testdata/iter_hint_lame.rpl @@ -0,0 +1,121 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with lame hints. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_lame_aaaa.rpl b/external/unbound/testdata/iter_lame_aaaa.rpl new file mode 100644 index 0000000..8afef77 --- /dev/null +++ b/external/unbound/testdata/iter_lame_aaaa.rpl @@ -0,0 +1,181 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator lameness detection of AAAA-only lameness + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN AAAA +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + + +; response to AAAA query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +. 3600000 IN NS a.root-servers.net. +. 3600000 IN NS b.root-servers.net. +. 3600000 IN NS c.root-servers.net. +. 3600000 IN NS d.root-servers.net. +. 3600000 IN NS e.root-servers.net. +. 3600000 IN NS f.root-servers.net. +. 3600000 IN NS g.root-servers.net. +. 3600000 IN NS h.root-servers.net. +. 3600000 IN NS i.root-servers.net. +. 3600000 IN NS j.root-servers.net. +. 3600000 IN NS k.root-servers.net. +. 3600000 IN NS l.root-servers.net. +. 3600000 IN NS m.root-servers.net. +SECTION ADDITIONAL +a.root-servers.net. 3600000 IN A 198.41.0.4 +b.root-servers.net. 3600000 IN A 128.9.0.107 +c.root-servers.net. 3600000 IN A 192.33.4.12 +ENTRY_END + +; response to A query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN A +SECTION ANSWER +example.com. 120 IN A 204.14.213.188 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD +SECTION QUESTION +example.com. IN AAAA +ENTRY_END + +; this fails; it is LAME +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; Now try the A type, which works, and is not LAME. +STEP 20 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD +SECTION QUESTION +example.com. IN A +ENTRY_END + +; this fails; it is LAME +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN A +SECTION ANSWER +example.com. 120 IN A 204.14.213.188 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_lame_noaa.rpl b/external/unbound/testdata/iter_lame_noaa.rpl new file mode 100644 index 0000000..18d326b --- /dev/null +++ b/external/unbound/testdata/iter_lame_noaa.rpl @@ -0,0 +1,202 @@ +; config options +server: + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test lame detection if AA bit is omitted +; the query is answered with a reply that has +; no AA bit +; no SOA record +; noanswer/noerror +; NS record in there which is not a down delegation (==). +; the query is not sent to a forward zone + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; root prime is sent +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +. IN NS +ENTRY_END +STEP 30 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; query sent to root server +STEP 40 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 50 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; query sent to .com server +STEP 60 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; answer the NS queries that have been generated +; STEP 62 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; com. IN NS +; ENTRY_END +; +; STEP 63 REPLY +; ; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; com. IN NS +; SECTION ANSWER +; com. IN NS a.gtld-servers.net. +; SECTION ADDITIONAL +; a.gtld-servers.net. IN A 192.5.6.30 +; ENTRY_END + +STEP 70 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns2.example.com. IN A 168.192.3.3 +ENTRY_END + +; no matter which one the iterator tries first, we present it as 'lame' +; query to ns1.example.com or ns2.example.com. +STEP 80 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; STEP 82 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; example.com. IN NS +; ENTRY_END +; +; STEP 83 REPLY +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; example.com. IN NS ns2.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ns2.example.com. IN A 168.192.3.3 +; ENTRY_END +; +STEP 90 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +; This is the BROKEN ANSWER here. +; it is lame. A delegation to example.com. itself. +example.com. IN NS ns1.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns2.example.com. IN A 168.192.3.3 +ENTRY_END + +; iterator should try again and ask the other nameserver. +STEP 100 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 110 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns2.example.com. IN A 168.192.3.3 +ENTRY_END + + +; is the final answer correct? +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns2.example.com. IN A 168.192.3.3 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_lame_nosoa.rpl b/external/unbound/testdata/iter_lame_nosoa.rpl new file mode 100644 index 0000000..903bb29 --- /dev/null +++ b/external/unbound/testdata/iter_lame_nosoa.rpl @@ -0,0 +1,290 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with lame reply looks like nodata with noSOA + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +; advertises +RA so it is REC_LAME. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ns.example.net IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.com. +; is like a BIND server that is LAME, authoritative for other domains, +; but not this one, and somehow got this NS record in its cache. +; trying to give 'lame referral' but to the same name, not up. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; store bad timing for one server to influence server selection +; 1.2.3.44 (ns.example.net) gets 900 msec. +; so the 376 ns.example.com is preferred. +STEP 1 INFRA_RTT 1.2.3.44 example.net. 900 + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +; scrubbed off +;ns.example.net IN A 1.2.3.44 +ENTRY_END + +; query to recursion-lame server +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.net. +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_lamescrub.rpl b/external/unbound/testdata/iter_lamescrub.rpl new file mode 100644 index 0000000..2de13a6 --- /dev/null +++ b/external/unbound/testdata/iter_lamescrub.rpl @@ -0,0 +1,151 @@ +; config options +server: + qname-minimisation: "no" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test lameness detection after scrubber. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END +ENTRY_BEGIN + +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +; This server is Lame! +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR RD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +com. 155182 IN NS a.gtld-servers.net. +com. 155182 IN NS b.gtld-servers.net. +com. 155182 IN NS c.gtld-servers.net. +com. 155182 IN NS d.gtld-servers.net. +com. 155182 IN NS e.gtld-servers.net. +com. 155182 IN NS f.gtld-servers.net. +com. 155182 IN NS g.gtld-servers.net. +com. 155182 IN NS h.gtld-servers.net. +com. 155182 IN NS i.gtld-servers.net. +com. 155182 IN NS j.gtld-servers.net. +com. 155182 IN NS k.gtld-servers.net. +com. 155182 IN NS l.gtld-servers.net. +com. 155182 IN NS m.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. 155182 IN A 192.5.6.30 +b.gtld-servers.net. 155182 IN A 192.33.14.30 +c.gtld-servers.net. 155182 IN A 192.26.92.30 +d.gtld-servers.net. 155182 IN A 192.31.80.30 +e.gtld-servers.net. 155182 IN A 192.12.94.30 +f.gtld-servers.net. 155182 IN A 192.35.51.30 +g.gtld-servers.net. 155182 IN A 192.42.93.30 +h.gtld-servers.net. 155182 IN A 192.54.112.30 +i.gtld-servers.net. 155182 IN A 192.43.172.30 +j.gtld-servers.net. 155182 IN A 192.48.79.30 +k.gtld-servers.net. 155182 IN A 192.52.178.30 +l.gtld-servers.net. 155182 IN A 192.41.162.30 +m.gtld-servers.net. 155182 IN A 192.55.83.30 +a.gtld-servers.net. 155182 IN AAAA 2001:503:a83e::2:30 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursin happens here + +; check that the answer is a failure (lame server) +; and not a nodata-noerror message (false answer classification). +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_mod.rpl b/external/unbound/testdata/iter_mod.rpl new file mode 100644 index 0000000..c57e232 --- /dev/null +++ b/external/unbound/testdata/iter_mod.rpl @@ -0,0 +1,122 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + module-config: "iterator" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test basic iterative resolve without validator module + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ns_badip.rpl b/external/unbound/testdata/iter_ns_badip.rpl new file mode 100644 index 0000000..6ce2b14 --- /dev/null +++ b/external/unbound/testdata/iter_ns_badip.rpl @@ -0,0 +1,238 @@ +; config options +server: + target-fetch-policy: "3 2 1 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with delegation with bad IP address + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION AUTHORITY +. SOA bla bla 1 2 3 4 5 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns.example.com. 10 IN A 1.2.3.4 +ns2.example.com. 3600 IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.com. IN A +SECTION AUTHORITY +foo.com. IN NS ns.example.com. +foo.com. IN NS ns2.example.com. +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN NS ns2.example.com. +SECTION ADDITIONAL +ns.example.com. 10 IN A 1.2.3.4 +ns2.example.com. 3600 IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. 10 IN A 1.2.3.4 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN NS ns2.example.com. +SECTION ADDITIONAL +ns2.example.com. 3600 IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns2.example.com. IN A +SECTION ANSWER +ns2.example.com. 3600 IN A 1.2.3.5 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN NS ns2.example.com. +SECTION ADDITIONAL +ns.example.com. 10 IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA bla. bla. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns2.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA bla. bla. 1 2 3 4 5 +ENTRY_END + +; foo.com contents. +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +foo.com. 3600 IN NS ns.example.com. +foo.com. 3600 IN NS ns2.example.com. +ENTRY_END + +RANGE_END + +; ns2.example.com. (lame) +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +foo.com. 3600 IN NS ns.example.com. +foo.com. 3600 IN NS ns2.example.com. +ENTRY_END + +STEP 15 TRAFFIC + +; Now move the time so good server times out and bad remains. +STEP 20 TIME_PASSES ELAPSE 20 + +; Try query again. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN A +ENTRY_END + +STEP 35 TRAFFIC + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +foo.com. 3600 IN NS ns.example.com. +foo.com. 3600 IN NS ns2.example.com. +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ns_spoof.rpl b/external/unbound/testdata/iter_ns_spoof.rpl new file mode 100644 index 0000000..1679ce7 --- /dev/null +++ b/external/unbound/testdata/iter_ns_spoof.rpl @@ -0,0 +1,279 @@ +; config options +server: + harden-referral-path: yes + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test NS record spoof protection. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; for simplicity the root server is authoritative for root-servers.net +; and also for gtld-servers.net +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +;; answer to the spoofed query ; spoofed reply answer. +; here we put it in the nameserver for ease. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +bad123.example.com. IN A +SECTION ANSWER +bad123.example.com. IN A 6.6.6.6 +SECTION AUTHORITY +; evil NS set. +example.com. IN NS bad123.example.com. +ENTRY_END + +RANGE_END + +; evil server +RANGE_BEGIN 0 100 + ADDRESS 6.6.6.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 6.6.6.6 +SECTION AUTHORITY +example.com. IN NS bad123.example.com. +SECTION ADDITIONAL +bad123.example.com. IN A 6.6.6.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 6.6.6.6 +SECTION AUTHORITY +example.com. IN NS bad123.example.com. +SECTION ADDITIONAL +bad123.example.com. IN A 6.6.6.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +bad123.example.com. IN A +SECTION ANSWER +bad123.example.com. IN A 6.6.6.6 +SECTION AUTHORITY +; evil NS set. +example.com. IN NS bad123.example.com. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; spoofed query +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +bad123.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +; no matching here, just accept the answer to the spoofed query. +; it is wrong, but only one query ... +; this test is to check further on, that we still have the right nameserver. +;MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +bad123.example.com. IN A +SECTION ANSWER +bad123.example.com. IN A 6.6.6.6 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; a new query +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pc_a.rpl b/external/unbound/testdata/iter_pc_a.rpl new file mode 100644 index 0000000..985345c --- /dev/null +++ b/external/unbound/testdata/iter_pc_a.rpl @@ -0,0 +1,233 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ for type A. +; the parent has the correct A record. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; the working version. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ftp.example.com. IN A 10.20.30.10 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +; now that the bad child NS record is in cache, ask something else. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +; test cache of parent data +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ftp.example.com. IN A 10.20.30.10 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pc_aaaa.rpl b/external/unbound/testdata/iter_pc_aaaa.rpl new file mode 100644 index 0000000..20e1a78 --- /dev/null +++ b/external/unbound/testdata/iter_pc_aaaa.rpl @@ -0,0 +1,233 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ for type AAAA. +; the parent has the correct A record. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::44 +ENTRY_END +RANGE_END + +; the working version. +RANGE_BEGIN 0 100 + ADDRESS 2002:b44d::44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ns.example.com. IN AAAA 2002:b44d::55 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ftp.example.com. IN A 10.20.30.10 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END +RANGE_END + +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 2002:b44d::55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +; now that the bad child NS record is in cache, ask something else. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +; test cache of parent data +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ftp.example.com. IN A 10.20.30.10 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN AAAA 2002:b44d::55 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcdiff.rpl b/external/unbound/testdata/iter_pcdiff.rpl new file mode 100644 index 0000000..18b984c --- /dev/null +++ b/external/unbound/testdata/iter_pcdiff.rpl @@ -0,0 +1,213 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with recursion and parent child differ. +; and the child gives bad information. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.net. +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +RANGE_END + +; ns.example.net. +; The parent-IP version +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.55 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; ns.example.net +; The child IP version. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +; scrubbed off +;SECTION ADDITIONAL +;ns.example.net IN A 1.2.3.44 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcdirect.rpl b/external/unbound/testdata/iter_pcdirect.rpl new file mode 100644 index 0000000..0a4487f --- /dev/null +++ b/external/unbound/testdata/iter_pcdirect.rpl @@ -0,0 +1,247 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver with parent-child diff for direct impact +; the trouble is resolving this right away. +; otherwise it gets picked out of the cache. +; i.e. on a failed lookup, pickup lame stuff from the cache. +; the nameserver lookup may have failed but produced some (lame) addresses. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +org. IN A +SECTION AUTHORITY +org. IN NS a0.org.afilias-nst.org. +SECTION ADDITIONAL +a0.org.afilias-nst.org. IN A 199.19.56.1 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.org. +ENTRY_END +RANGE_END + +; a0.org.afilias-nst.org. +RANGE_BEGIN 0 100 + ADDRESS 199.19.56.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +org. IN NS +SECTION ANSWER +org. IN NS a0.org.afilias-nst.org. +SECTION ADDITIONAL +a0.org.afilias-nst.org. IN A 199.19.56.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.org. IN A +SECTION AUTHORITY +example.org. IN NS ns.example.org. +SECTION ADDITIONAL +; parent-side working address. +ns.example.org. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.org. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN NS +SECTION ANSWER +example.org. IN NS ns.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +example.com. IN NS ns.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.org. IN A +SECTION ANSWER +; correct answer: ns.example.org. IN A 1.2.3.4 +SECTION AUTHORITY +ns.example.org. IN NS 1.2.3.4.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.org. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +ns.example.org. IN NS 1.2.3.4.example.org. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA NXDOMAIN +SECTION QUESTION +1.2.3.4.example.org. IN A +SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.org. root.example.org. 2009111400 14400 3600 1209600 86400 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA NXDOMAIN +SECTION QUESTION +1.2.3.4.example.org. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.org. root.example.org. 2009111400 14400 3600 1209600 86400 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.org. +ENTRY_END + +; perhaps some messages are still pending - allow those to resolve. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +example.com. IN NS ns.example.org. +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pclame.rpl b/external/unbound/testdata/iter_pclame.rpl new file mode 100644 index 0000000..21273e3 --- /dev/null +++ b/external/unbound/testdata/iter_pclame.rpl @@ -0,0 +1,191 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with recursion, parent child differ, lame domain +; make sure it stops probing once is has cached all the badness. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.net. +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 200 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +; Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 200 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +ftp.example.com. IN A +SECTION ANSWER +ENTRY_END + + +; no more outgoing queries to .com or .net, all should be cached. + +STEP 101 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcname.rpl b/external/unbound/testdata/iter_pcname.rpl new file mode 100644 index 0000000..037b642 --- /dev/null +++ b/external/unbound/testdata/iter_pcname.rpl @@ -0,0 +1,277 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ in names. +; the parent has an extra name that is the only working one. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +RANGE_END + +; ns.example.net. +; the working version. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; ns.example.net +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +; now that the bad child NS record is in cache, ask something else. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcnamech.rpl b/external/unbound/testdata/iter_pcnamech.rpl new file mode 100644 index 0000000..a979101 --- /dev/null +++ b/external/unbound/testdata/iter_pcnamech.rpl @@ -0,0 +1,424 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ with extra child name. +; child has extra name and it has to be used once the other one stops working. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +RANGE_END + +; the working version, until time 50. +RANGE_BEGIN 0 50 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.55 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 50 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END +RANGE_END + +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END +RANGE_END + +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.55 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +; server stops working. + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +; still pending query needs removal. +STEP 70 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +STEP 71 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcnamechrec.rpl b/external/unbound/testdata/iter_pcnamechrec.rpl new file mode 100644 index 0000000..f4c0197 --- /dev/null +++ b/external/unbound/testdata/iter_pcnamechrec.rpl @@ -0,0 +1,403 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ with pc child name. +; child has extra name and it has to be used once the other one stops working. +; the extra child name has parent-child trouble and needs its parent version. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +RANGE_END + +; the working version, until time 50. +RANGE_BEGIN 0 50 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 50 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END +RANGE_END + +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END +RANGE_END + +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +; server stops working. + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcnamerec.rpl b/external/unbound/testdata/iter_pcnamerec.rpl new file mode 100644 index 0000000..ecc03d3 --- /dev/null +++ b/external/unbound/testdata/iter_pcnamerec.rpl @@ -0,0 +1,278 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with parent child differ names recursive. +; the parent has an extra name that is the only working one. +; and that name needs its parent-side glue to work. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +RANGE_END + +; ns.example.net. +; the working version. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.55 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; ns.example.net +; Broken. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +; now that the bad child NS record is in cache, ask something else. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.20 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_pcttl.rpl b/external/unbound/testdata/iter_pcttl.rpl new file mode 100644 index 0000000..41d94bc --- /dev/null +++ b/external/unbound/testdata/iter_pcttl.rpl @@ -0,0 +1,245 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + do-ip6: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cache ttls where parent child differ in ttl +; and the lameness for parent suddenly becomes the only information point. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.foo.com. +SECTION ADDITIONAL +;ns.foo.com. 200 IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.com. IN NS +SECTION AUTHORITY +foo.com. 200 IN NS ns.foo.com. +SECTION ADDITIONAL +ns.foo.com. 200 IN A 1.2.3.44 +ENTRY_END + +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +RANGE_END + +; ns.foo.com. +; The parent-IP version +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +foo.com. IN NS +SECTION ANSWER +foo.com. 200 IN NS ns.foo.com. +SECTION ADDITIONAL +ns.foo.com. 100 IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. 100 IN A 1.2.3.44 +SECTION AUTHORITY +foo.com. 200 IN NS ns.foo.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION AUTHORITY +foo.com. 100 IN SOA . . 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 200 IN NS ns.foo.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 100 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 200 IN NS ns.foo.com. +SECTION ADDITIONAL +ns.foo.com 100 IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; NOT USED. The parent side equals child side but not in the cache. +; and they have different TTLs only. +; ns.foo.com +; The child IP version. Does not respond to anything (servfail instead +; of timeouts since this is easier to encode in .rpl file format). +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +foo.com. IN NS +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 100 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 100 IN NS ns.foo.com. +; scrubbed off +;SECTION ADDITIONAL +;ns.foo.com IN A 1.2.3.44 +ENTRY_END + +; Now we wait 101 seconds, and the child data is gone, +; but the parent-side was cached for 200 and it still there. + +STEP 30 TIME_PASSES ELAPSE 101 + +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 100 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 100 IN NS ns.foo.com. +; scrubbed off +;SECTION ADDITIONAL +;ns.foo.com IN A 1.2.3.44 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch.rpl b/external/unbound/testdata/iter_prefetch.rpl new file mode 100644 index 0000000..feb6b81 --- /dev/null +++ b/external/unbound/testdata/iter_prefetch.rpl @@ -0,0 +1,227 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch of almost expired data + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; after 1440 we are 360 seconds before the expiry +; (the authority changes behind the scenes to detect new lookup) +STEP 50 TIME_PASSES ELAPSE 1440 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 360 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 360 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 360 IN A 1.2.3.4 +ENTRY_END +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; above a cache reply with 10% of the original TTL +; but the actual cache is changed, try to get that +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +; NS rrset picked up from parent-NS (the child-NS timed out at now+prefetch) +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch_change.rpl b/external/unbound/testdata/iter_prefetch_change.rpl new file mode 100644 index 0000000..2ed70cd --- /dev/null +++ b/external/unbound/testdata/iter_prefetch_change.rpl @@ -0,0 +1,364 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch and a moved domain +; for bug #425. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 500 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (before sale of domain) +RANGE_BEGIN 0 30 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. 86400 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 86400 IN A 192.168.0.1 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (after sale of domain) +RANGE_BEGIN 40 500 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END +RANGE_END + +; ns.example.com. first owner +RANGE_BEGIN 0 500 + ADDRESS 192.168.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 86400 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 86400 IN A 192.168.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 86400 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 86400 IN A 192.168.0.1 +ENTRY_END +RANGE_END + +; ns.example.com. new owner +RANGE_BEGIN 0 500 + ADDRESS 172.16.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +old-ns.example.com. IN A +SECTION ANSWER +old-ns.example.com. 86400 IN A 172.16.0.1 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 86400 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 86400 IN A 192.168.0.1 +ENTRY_END + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 84600 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 84600 IN A 192.168.0.1 +ENTRY_END + +; after 1440 we are 360 seconds before the expiry +; but it still contacts the old-ns +STEP 50 TIME_PASSES ELAPSE 1440 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 360 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 83160 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 83160 IN A 192.168.0.1 +ENTRY_END + +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; we updated from the old-ns. +STEP 90 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 100 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 83160 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 83160 IN A 192.168.0.1 +ENTRY_END + +; the NS record is now 10% from expiry (8640 TTL left). +; and the A record has expired completely, retry. +STEP 110 TIME_PASSES ELAPSE 74520 + +; the NS record should have timed out. +; but you see the full TTL here, this is only for *this query* +; in the cache itself its 8640, not 86400. +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 8640 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 8640 IN A 192.168.0.1 +ENTRY_END + +; get it from cache +STEP 140 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 150 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 8640 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 8640 IN A 192.168.0.1 +ENTRY_END + +; the NS record times out after 8640 seconds. +STEP 160 TIME_PASSES ELAPSE 8641 + +; fetch it +STEP 170 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 180 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +; a reply from cache +STEP 190 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch_change2.rpl b/external/unbound/testdata/iter_prefetch_change2.rpl new file mode 100644 index 0000000..93196d5 --- /dev/null +++ b/external/unbound/testdata/iter_prefetch_change2.rpl @@ -0,0 +1,313 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch and a moved domain 2. +; for slightly different query pattern. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 500 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (before sale of domain) +RANGE_BEGIN 0 30 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. 86400 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 86400 IN A 192.168.0.1 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (after sale of domain) +RANGE_BEGIN 40 500 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END +RANGE_END + +; ns.example.com. first owner +RANGE_BEGIN 0 500 + ADDRESS 192.168.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 300 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 300 IN A 192.168.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 300 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 300 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 300 IN A 192.168.0.1 +ENTRY_END +RANGE_END + +; ns.example.com. new owner +RANGE_BEGIN 0 500 + ADDRESS 172.16.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +old-ns.example.com. IN A +SECTION ANSWER +old-ns.example.com. 86400 IN A 172.16.0.1 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 86400 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 300 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 300 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 300 IN A 192.168.0.1 +ENTRY_END + +; after 40 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 40 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 260 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 260 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 260 IN A 192.168.0.1 +ENTRY_END + +; after 230 we are 30 seconds before expiry, prefetch happens. +STEP 50 TIME_PASSES ELAPSE 230 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 30 IN A 10.1.1.1 +SECTION AUTHORITY +example.com. 30 IN NS old-ns.example.com. +SECTION ADDITIONAL +old-ns.example.com. 30 IN A 192.168.0.1 +ENTRY_END + +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; we updated from the old-ns. +STEP 90 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 100 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 86400 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86400 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86400 IN A 172.16.0.1 +ENTRY_END + +; the NS record times out after 31 seconds. +STEP 160 TIME_PASSES ELAPSE 31 + +; fetch it +STEP 170 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 180 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 86369 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86369 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86369 IN A 172.16.0.1 +ENTRY_END + +; a reply from cache +STEP 190 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 86369 IN A 10.2.2.2 +SECTION AUTHORITY +example.com. 86369 IN NS new-ns.example.com. +SECTION ADDITIONAL +new-ns.example.com. 86369 IN A 172.16.0.1 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch_childns.rpl b/external/unbound/testdata/iter_prefetch_childns.rpl new file mode 100644 index 0000000..869aaa4 --- /dev/null +++ b/external/unbound/testdata/iter_prefetch_childns.rpl @@ -0,0 +1,228 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch from child nameserver +; child NS record has longer TTL than A record and is thus valid for prefetch. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; after 900 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 900 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 900 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 2700 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 2700 IN A 1.2.3.4 +ENTRY_END + +; after 720 we are 180 seconds before the expiry +; (the authority changes behind the scenes to detect new lookup) +STEP 50 TIME_PASSES ELAPSE 720 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 180 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1980 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1980 IN A 1.2.3.4 +ENTRY_END +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; above a cache reply with 10% of the original TTL +; but the actual cache is changed, try to get that +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +; The NS rrset (from the child-side NS) is not updated but keeps counting down +example.com. 1980 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1980 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch_fail.rpl b/external/unbound/testdata/iter_prefetch_fail.rpl new file mode 100644 index 0000000..2f7f994 --- /dev/null +++ b/external/unbound/testdata/iter_prefetch_fail.rpl @@ -0,0 +1,393 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch where it fails to fetch + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 200 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 200 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 40 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 50 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +www.example.com. IN A +;SECTION ANSWER +;www.example.com. 3600 IN A 10.20.30.40 +;SECTION AUTHORITY +;example.com. 3600 IN NS ns.example.com. +;SECTION ADDITIONAL +;ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; note ns.example.com range for steps 100 - 160 is not entered +; no queries should be sent there + +; ns.example.com. +RANGE_BEGIN 160 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; after 1440 we are 360 seconds before the expiry +; (the authority changes behind the scenes to detect new lookup) +STEP 50 TIME_PASSES ELAPSE 1440 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 360 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 360 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 360 IN A 1.2.3.4 +ENTRY_END +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; above a cache reply with 10% of the original TTL +; but the actual cache could have been updated, try to get that +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 360 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 360 IN NS ns.example.com. +SECTION ADDITIONAL +; this is picked up from the parent (because this simulation has the +; parent respond with servfail, not actually timeout) +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; another query to see if there is another lookup towards the authority +; the server should not send too many queries towards the authority +STEP 140 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 150 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 360 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 360 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; some time later another query, and now it is fine to bother the authority +; with another lookup attempt. +STEP 160 TIME_PASSES ELAPSE 30 +; so we are now 330 seconds before expiry. +STEP 170 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 180 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 330 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 330 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3570 IN A 1.2.3.4 +ENTRY_END +; now the just-looked-up entry +STEP 190 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3570 IN A 1.2.3.4 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/iter_prefetch_ns.rpl b/external/unbound/testdata/iter_prefetch_ns.rpl new file mode 100644 index 0000000..f99fb80 --- /dev/null +++ b/external/unbound/testdata/iter_prefetch_ns.rpl @@ -0,0 +1,315 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + prefetch: "yes" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolver prefetch of NS record for moved domain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 200 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (before sale of domain) +RANGE_BEGIN 0 20 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. (after sale of domain) +RANGE_BEGIN 30 200 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END +RANGE_END + +; ns.example.com. first owner +RANGE_BEGIN 0 200 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. new owner +RANGE_BEGIN 0 200 + ADDRESS 8.8.8.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 5 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN NS +ENTRY_END +; recursion happens here. +STEP 15 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 3600 IN NS ns.example.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; after 1800 secs still the cached answer +STEP 20 TIME_PASSES ELAPSE 1800 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1800 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 1800 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +STEP 44 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN NS +ENTRY_END +; recursion happens here. +STEP 45 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 1800 IN NS ns.example.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ns.example.com. 1800 IN A 1.2.3.4 +ENTRY_END + +; after 1440 we are 360 seconds before the expiry +STEP 50 TIME_PASSES ELAPSE 1440 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN NS +ENTRY_END +; recursion happens here. +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 360 IN NS ns.example.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ns.example.com. 360 IN A 1.2.3.4 +ENTRY_END + +STEP 80 TRAFFIC +; let traffic flow for prefetch to happen + +; check result of that prefetch +STEP 90 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN NS +ENTRY_END +; recursion happens here. + +; because the prefetch+current makes old-NS expired, new delegation is picked up +STEP 91 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 3600 IN NS ns.example.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ns.example.com. 3600 IN A 8.8.8.8 +ENTRY_END + +STEP 100 TIME_PASSES ELAPSE 2360 + +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; recursion happens here. +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 88.88.88.88 +SECTION AUTHORITY +example.com. 1240 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 1240 IN A 8.8.8.8 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_primenoglue.rpl b/external/unbound/testdata/iter_primenoglue.rpl new file mode 100644 index 0000000..0d6adef --- /dev/null +++ b/external/unbound/testdata/iter_primenoglue.rpl @@ -0,0 +1,386 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "3 2 1 0 0" # make sure it fetches for test + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with root prime answer without glue. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +; glue ommitted! +;K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. + +; sneak in some data into the cache to simulate partial data after timeouts +; scrubbed away... +example.net. NS ns.example.net. + +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +; com zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ENTRY_END + +; net zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +A.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION AUTHORITY +ROOT-SERVERS.NET. IN NS A.ROOT-SERVERS.NET. +SECTION ADDITIONAL +A.ROOT-SERVERS.NET. IN A 198.41.0.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; A.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 198.41.0.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ROOT-SERVERS.NET. IN NS +SECTION ANSWER +ROOT-SERVERS.NET. IN NS A.ROOT-SERVERS.NET. +SECTION ADDITIONAL +A.ROOT-SERVERS.NET. IN A 198.41.0.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +A.ROOT-SERVERS.NET. IN A +SECTION ANSWER +A.ROOT-SERVERS.NET. IN A 198.41.0.4 +SECTION AUTHORITY +ROOT-SERVERS.NET. IN NS A.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +A.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +ROOT-SERVERS.NET. IN NS A.ROOT-SERVERS.NET. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +; no ip6 address: we want to use only one address for K. to avoid having +; to duplicate the entries in this file for both addresses. +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +; example.net. zone +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +; example.com. zone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; make sure glue fetch is done. +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 13 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +ENTRY_END + +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_privaddr.rpl b/external/unbound/testdata/iter_privaddr.rpl new file mode 100644 index 0000000..2361af6 --- /dev/null +++ b/external/unbound/testdata/iter_privaddr.rpl @@ -0,0 +1,286 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + + private-address: 10.0.0.0/8 + private-address: 172.16.0.0/12 + private-address: 192.168.0.0/16 + private-address: 169.254.0.0/16 + private-address: fd00::/8 + private-address: fe80::/10 + + private-domain: "example.net" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +CONFIG_END + +SCENARIO_BEGIN Test iterator scrubber with private addresses. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; root server authoritative for example.net too. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.net. IN A +SECTION ANSWER +mail.example.net. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 192.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN AAAA +SECTION ANSWER +mail.example.com. IN AAAA fe80::15 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +foo.example.com. IN A +SECTION ANSWER +foo.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +toss.example.com. IN A +SECTION ANSWER +toss.example.com. IN A 10.20.30.40 +toss.example.com. IN A 1.2.3.4 +toss.example.com. IN A 10.20.30.41 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; public address is not scrubbed +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 192.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; IPv4 address is scrubbed +STEP 3 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +foo.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +foo.example.com. IN A +SECTION ANSWER +; scrubbed away +;foo.example.com. IN A 10.20.30.40 +ENTRY_END + +; IPv6 address is scrubbed +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN AAAA +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mail.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; allowed domain is not scrubbed. +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.net. IN A +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.net. IN A +SECTION ANSWER +mail.example.net. IN A 10.20.30.40 +ENTRY_END + +; rest of RRset intact, only 10/8 tossed away. +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +toss.example.com. IN A +ENTRY_END + +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +toss.example.com. IN A +SECTION ANSWER +; toss.example.com. IN A 10.20.30.40 +toss.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_ranoaa_lame.rpl b/external/unbound/testdata/iter_ranoaa_lame.rpl new file mode 100644 index 0000000..d2db84a --- /dev/null +++ b/external/unbound/testdata/iter_ranoaa_lame.rpl @@ -0,0 +1,293 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test detection of RA but no AA lameness +; in this scenario mistakenly, a recursive server is deployed, instead +; of an authoritative server. It gives answers from cache. +; However, unbound is doing recursion on behalf of its client, and does +; not trust the server to do so. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +; this entry; glue will make unbound take this reference first. +; it is however, the lame server. +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.55 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.55 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +; the lame response. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; the wrong answer. +www.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.55 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +; scrubbed off +;SECTION ADDITIONAL +;ns.example.net IN A 1.2.3.44 +ENTRY_END + +; query still pending +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +; query still pending +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +REPLY RD RA +SECTION QUESTION +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_reclame_one.rpl b/external/unbound/testdata/iter_reclame_one.rpl new file mode 100644 index 0000000..fe15b25 --- /dev/null +++ b/external/unbound/testdata/iter_reclame_one.rpl @@ -0,0 +1,166 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with a recursion lame server. +; The scenario has a domain with two servers, one is lame the other doesn't +; so depending on the randomly chosen server that goes first, it may +; select the nonlame or the lame server first. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; lame.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_reclame_two.rpl b/external/unbound/testdata/iter_reclame_two.rpl new file mode 100644 index 0000000..3b7dfd6 --- /dev/null +++ b/external/unbound/testdata/iter_reclame_two.rpl @@ -0,0 +1,182 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative resolve with two recursion lame servers. +; both servers are recursion lame. The iterator tries both servers, +; but they are both lame. Then it concludes that it only has reclame. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +lame.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; lame.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS lame.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +lame.example.com. IN A 1.2.3.5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_recurse.rpl b/external/unbound/testdata/iter_recurse.rpl new file mode 100644 index 0000000..ab62e1a --- /dev/null +++ b/external/unbound/testdata/iter_recurse.rpl @@ -0,0 +1,228 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test resolution with recursion for NS target. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.net. +ENTRY_END +RANGE_END + +; e.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.12.94.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS e.gtld-servers.net. +SECTION ADDITIONAL +e.gtld-servers.net. IN A 192.12.94.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net IN A 1.2.3.44 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +; scrubbed off +;SECTION ADDITIONAL +;ns.example.net IN A 1.2.3.44 +ENTRY_END + +; due to ordering of answer packets, this is still outstanding, remove it +STEP 21 CHECK_OUT_QUERY +ENTRY_BEGIN +ADJUST copy_id +MATCH qname qtype +REPLY QR +SECTION QUESTION +ns.example.net IN AAAA +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_req_qname.rpl b/external/unbound/testdata/iter_req_qname.rpl new file mode 100644 index 0000000..2dc2c8f --- /dev/null +++ b/external/unbound/testdata/iter_req_qname.rpl @@ -0,0 +1,118 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test a query name in the reply is required by resolver + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; always the same reply since we cannot match anything from the qsection. +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +; no query section! +; www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. + +; the query name is echoed properly to *our* client +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_resolve.rpl b/external/unbound/testdata/iter_resolve.rpl new file mode 100644 index 0000000..cab3887 --- /dev/null +++ b/external/unbound/testdata/iter_resolve.rpl @@ -0,0 +1,121 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test basic iterative resolve of www.example.com. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_resolve_minimised.rpl b/external/unbound/testdata/iter_resolve_minimised.rpl new file mode 100644 index 0000000..ab3c6e9 --- /dev/null +++ b/external/unbound/testdata/iter_resolve_minimised.rpl @@ -0,0 +1,159 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test basic iterative qname minimised resolve of www.example.com. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::123 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +com. IN A +ENTRY_END + +STEP 30 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +example.com. IN A +ENTRY_END + +STEP 40 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 50 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::123 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_resolve_minimised_nx.rpl b/external/unbound/testdata/iter_resolve_minimised_nx.rpl new file mode 100644 index 0000000..cb877bc --- /dev/null +++ b/external/unbound/testdata/iter_resolve_minimised_nx.rpl @@ -0,0 +1,130 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative qname minimised resolve of www.ent.example.com. Simulate broken nameserver that gives NXDOMAIN responses on empty-non-terminals. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +ent.example.com. IN A +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.ent.example.com. IN A +SECTION ANSWER +www.ent.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.ent.example.com. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.ent.example.com. IN A +SECTION ANSWER +www.ent.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_resolve_minimised_refused.rpl b/external/unbound/testdata/iter_resolve_minimised_refused.rpl new file mode 100644 index 0000000..82852a4 --- /dev/null +++ b/external/unbound/testdata/iter_resolve_minimised_refused.rpl @@ -0,0 +1,124 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative qname minimised resolve of www.refused.example.com. Simulate broken nameserver that gives REFUSED responses on QTYPE=NS queries. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +refused.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +www.refused.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.refused.example.com. IN AAAA +SECTION ANSWER +www.refused.example.com. IN AAAA ::1 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.refused.example.com. IN AAAA +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.refused.example.com. IN AAAA +SECTION ANSWER +www.refused.example.com. IN AAAA ::1 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_resolve_minimised_timeout.rpl b/external/unbound/testdata/iter_resolve_minimised_timeout.rpl new file mode 100644 index 0000000..2a166af --- /dev/null +++ b/external/unbound/testdata/iter_resolve_minimised_timeout.rpl @@ -0,0 +1,152 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterative qname minimised resolve of www.example.com. Simulate broken nameserver that drops QTYPE=A queries. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::123 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +com. IN A +ENTRY_END + +STEP 30 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +example.com. IN A +ENTRY_END + +STEP 40 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 41 TIMEOUT +STEP 42 TIMEOUT +STEP 43 TIMEOUT + +STEP 50 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA ::123 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_cname_an.rpl b/external/unbound/testdata/iter_scrub_cname_an.rpl new file mode 100644 index 0000000..54a98c6 --- /dev/null +++ b/external/unbound/testdata/iter_scrub_cname_an.rpl @@ -0,0 +1,182 @@ +; config options +server: + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of CNAME in answer section + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; root prime is sent +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +. IN NS +ENTRY_END +STEP 30 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; query sent to root server +STEP 40 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 50 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; query sent to .com server +STEP 60 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; STEP 62 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; com. IN NS +; ENTRY_END +; STEP 63 REPLY +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; com. IN NS +; SECTION ANSWER +; com. IN NS a.gtld-servers.net. +; SECTION ADDITIONAL +; a.gtld-servers.net. IN A 192.5.6.30 +; ENTRY_END + +STEP 70 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +; this query reply has to be scrubbed +STEP 80 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; STEP 82 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; example.com. IN NS +; ENTRY_END +; STEP 83 REPLY +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END + +STEP 90 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME next.example.com. +next.example.com. IN A 10.20.30.0 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +; iterator should try again and ask the other nameserver. +STEP 100 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +next.example.com. IN A +ENTRY_END +STEP 110 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +next.example.com. IN A +SECTION ANSWER +next.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +; is the final answer correct? +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME next.example.com. +next.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_dname_insec.rpl b/external/unbound/testdata/iter_scrub_dname_insec.rpl new file mode 100644 index 0000000..a297220 --- /dev/null +++ b/external/unbound/testdata/iter_scrub_dname_insec.rpl @@ -0,0 +1,251 @@ +; config options +server: + harden-referral-path: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of insecure DNAME in answer section + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END + +; root prime is sent +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +. IN NS +ENTRY_END +STEP 30 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; query sent to root server +STEP 40 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END +STEP 50 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; query sent to .com server +STEP 60 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END + +; STEP 62 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; com. IN NS +; ENTRY_END +; STEP 63 REPLY +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; com. IN NS +; SECTION ANSWER +; com. IN NS a.gtld-servers.net. +; SECTION ADDITIONAL +; a.gtld-servers.net. IN A 192.5.6.30 +; ENTRY_END + +STEP 70 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +STEP 80 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END + +; STEP 82 CHECK_OUT_QUERY +; ENTRY_BEGIN +; MATCH qname qtype opcode +; SECTION QUESTION +; example.com. IN NS +; ENTRY_END +; STEP 83 REPLY +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; example.com. IN NS +; SECTION ANSWER +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END + +STEP 90 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +x.y.example.com. IN CNAME x.z.example.com. +x.z.example.com. IN A 10.20.30.0 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +STEP 100 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +x.z.example.com. IN A +ENTRY_END +STEP 110 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.z.example.com. IN A +SECTION ANSWER +x.z.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +; answer to first query (simply puts DNAME in cache) +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +x.y.example.com. IN CNAME x.z.example.com. +x.z.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +; now, DNAME insecure from cache should not be used. +; new query +STEP 200 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +other.y.example.com. IN A +ENTRY_END + +STEP 210 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +other.y.example.com. IN A +ENTRY_END +STEP 220 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +other.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +other.y.example.com. IN CNAME other.z.example.com. +other.z.example.com. IN A 50.60.70.0 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +STEP 230 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +other.z.example.com. IN A +ENTRY_END +STEP 240 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +other.z.example.com. IN A +SECTION ANSWER +other.z.example.com. IN A 50.60.70.80 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +STEP 250 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +other.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +other.y.example.com. IN CNAME other.z.example.com. +other.z.example.com. IN A 50.60.70.80 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_dname_rev.rpl b/external/unbound/testdata/iter_scrub_dname_rev.rpl new file mode 100644 index 0000000..b7e3ee2 --- /dev/null +++ b/external/unbound/testdata/iter_scrub_dname_rev.rpl @@ -0,0 +1,161 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of reversed DNAME and CNAME in answer section + +RANGE_BEGIN 0 100 +; all adresses +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; x.y.example.com. IN A +; SECTION AUTHORITY +; com. IN NS a.gtld-servers.net. +; SECTION ADDITIONAL +; a.gtld-servers.net. IN A 192.5.6.30 +; ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; x.y.example.com. IN A +; SECTION AUTHORITY +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +x.y.example.com. IN CNAME x.z.example.com. +y.example.com. DNAME z.example.com. +y.example.com. 3600 IN RRSIG DNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. ALCQdkXflwgQVKCFeYgCAx3ipuoPsGJVZjNeUriXE4nd94h50zJWDJ4= ;{id = 2854} +x.z.example.com. IN A 10.20.30.0 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AA3IkI13XbKFU5NSqBVA9oM1WiyEKCy4DYFOAdihDf6uHps9lce3kEc= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AKcUlwrSz2xYKnQ7b7oMblRa0rKjfUNT900bIkGjLKLWDUGc8mKZE2M= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.z.example.com. IN A +SECTION ANSWER +x.z.example.com. IN A 10.20.30.40 +x.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. ADZ12PiZGEjVUyLLYkct/SBE2WT4D5IkMOKdcl0dzQ0XRAC5y/0bS7A= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ACHcJehLt4Hz+rAdxMPE96o7HJAEFohFXbxrKYlG+0WLfYAvH2nxU8k= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AInP69g8uR1n/aRg4gmGu8UoM+zZYgjOqbNN2IvOxw3bk/q+g05jKg0= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END + +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +y.example.com. 3600 IN RRSIG DNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. ALCQdkXflwgQVKCFeYgCAx3ipuoPsGJVZjNeUriXE4nd94h50zJWDJ4= ;{id = 2854} +x.y.example.com. IN CNAME x.z.example.com. +x.z.example.com. IN A 10.20.30.40 +x.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. ADZ12PiZGEjVUyLLYkct/SBE2WT4D5IkMOKdcl0dzQ0XRAC5y/0bS7A= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_dname_sec.rpl b/external/unbound/testdata/iter_scrub_dname_sec.rpl new file mode 100644 index 0000000..1b9153b --- /dev/null +++ b/external/unbound/testdata/iter_scrub_dname_sec.rpl @@ -0,0 +1,215 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test scrub of secure DNAME in answer section + +RANGE_BEGIN 0 100 +; all adresses +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; x.y.example.com. IN A +; SECTION AUTHORITY +; com. IN NS a.gtld-servers.net. +; SECTION ADDITIONAL +; a.gtld-servers.net. IN A 192.5.6.30 +; ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; x.y.example.com. IN A +; SECTION AUTHORITY +; example.com. IN NS ns1.example.com. +; SECTION ADDITIONAL +; ns1.example.com. IN A 168.192.2.2 +; ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +y.example.com. 3600 IN RRSIG DNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. ALCQdkXflwgQVKCFeYgCAx3ipuoPsGJVZjNeUriXE4nd94h50zJWDJ4= ;{id = 2854} +x.y.example.com. IN CNAME x.z.example.com. +x.z.example.com. IN A 10.20.30.0 +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. AA3IkI13XbKFU5NSqBVA9oM1WiyEKCy4DYFOAdihDf6uHps9lce3kEc= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AKcUlwrSz2xYKnQ7b7oMblRa0rKjfUNT900bIkGjLKLWDUGc8mKZE2M= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +x.z.example.com. IN A +SECTION ANSWER +x.z.example.com. IN A 10.20.30.40 +x.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. ADZ12PiZGEjVUyLLYkct/SBE2WT4D5IkMOKdcl0dzQ0XRAC5y/0bS7A= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ACHcJehLt4Hz+rAdxMPE96o7HJAEFohFXbxrKYlG+0WLfYAvH2nxU8k= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AInP69g8uR1n/aRg4gmGu8UoM+zZYgjOqbNN2IvOxw3bk/q+g05jKg0= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +x.y.example.com. IN A +ENTRY_END + +; answer to first query (simply puts DNAME in cache) +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO +SECTION QUESTION +x.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +y.example.com. 3600 IN RRSIG DNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. ALCQdkXflwgQVKCFeYgCAx3ipuoPsGJVZjNeUriXE4nd94h50zJWDJ4= ;{id = 2854} +x.y.example.com. IN CNAME x.z.example.com. +x.z.example.com. IN A 10.20.30.40 +x.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. ADZ12PiZGEjVUyLLYkct/SBE2WT4D5IkMOKdcl0dzQ0XRAC5y/0bS7A= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +; now, DNAME is secure and can be used from cache. +; new query +STEP 200 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +other.y.example.com. IN A +ENTRY_END + +STEP 230 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode +SECTION QUESTION +other.z.example.com. IN A +ENTRY_END +STEP 240 REPLY +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +other.z.example.com. IN A +SECTION ANSWER +other.z.example.com. IN A 50.60.70.80 +other.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. AAp6G89oAvkyAaeF2d35AJNlzMhedGo0Bcppl0IOyF3HRzoc51vjJoU= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +STEP 250 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO +SECTION QUESTION +other.y.example.com. IN A +SECTION ANSWER +y.example.com. DNAME z.example.com. +y.example.com. 3600 IN RRSIG DNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. ALCQdkXflwgQVKCFeYgCAx3ipuoPsGJVZjNeUriXE4nd94h50zJWDJ4= ;{id = 2854} +other.y.example.com. IN CNAME other.z.example.com. +other.z.example.com. IN A 50.60.70.80 +other.z.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 example.com. AAp6G89oAvkyAaeF2d35AJNlzMhedGo0Bcppl0IOyF3HRzoc51vjJoU= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns1.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. ADesKDqTIOswg5QC6eTIQvGu3DHsPMz1htpHLcDJwE8IpURTnMuD0Mw= ;{id = 2854} +SECTION ADDITIONAL +ns1.example.com. IN A 168.192.2.2 +ns1.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. ACYkeSRNcLVXeL+R9AM9e1GbxTwXNXpy1M5hcyuVkhkY2d5jGrkye7I= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_ns.rpl b/external/unbound/testdata/iter_scrub_ns.rpl new file mode 100644 index 0000000..365f0b5 --- /dev/null +++ b/external/unbound/testdata/iter_scrub_ns.rpl @@ -0,0 +1,103 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test scrubber to scrub NS record for lamelike reply from stub + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; must be scrubbed +www.burritolovers.com. IN A 10.20.30.40 +SECTION AUTHORITY +example1234.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; LAME +com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_ns_fwd.rpl b/external/unbound/testdata/iter_scrub_ns_fwd.rpl new file mode 100644 index 0000000..239dc37 --- /dev/null +++ b/external/unbound/testdata/iter_scrub_ns_fwd.rpl @@ -0,0 +1,103 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +forward-zone: + name: "example.com" + forward-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test scrubber to scrub NS record for lamelike reply from fwd + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY RD RA QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; must be scrubbed +www.burritolovers.com. IN A 10.20.30.40 +SECTION AUTHORITY +example1234.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY RD RA QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; LAME +com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_scrub_ns_side.rpl b/external/unbound/testdata/iter_scrub_ns_side.rpl new file mode 100644 index 0000000..98d00fd --- /dev/null +++ b/external/unbound/testdata/iter_scrub_ns_side.rpl @@ -0,0 +1,103 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test scrubber to scrub NS record to the side of the query + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; must be scrubbed +www.burritolovers.com. IN A 10.20.30.40 +SECTION AUTHORITY +example1234.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; not pertinent to the query +www.example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_soamin.rpl b/external/unbound/testdata/iter_soamin.rpl new file mode 100644 index 0000000..42eb808 --- /dev/null +++ b/external/unbound/testdata/iter_soamin.rpl @@ -0,0 +1,208 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cache of SOA with minimum ttl and normal ttl. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +example.com. 86400 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION AUTHORITY +example.com. 3600 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +ENTRY_END + +RANGE_END + +; put both queries with SOA records into the cache and then query them from +; the cache. +; first the nxdomain, so that the positive SOA answer later overrides the +; SOA from the authority section from that nxdomain. + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION AUTHORITY +example.com. 3600 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN SOA +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +example.com. 86400 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +; now check them from the cache (no seconds elapsed). + +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx.example.com. IN A +ENTRY_END + +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION AUTHORITY +example.com. 3600 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +ENTRY_END + +STEP 130 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN SOA +ENTRY_END + +STEP 140 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +example.com. 86400 IN SOA dns1.icann.org. hostmaster.icann.org. 2010074630 7200 3600 1209600 3600 +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_stub_leak.rpl b/external/unbound/testdata/iter_stub_leak.rpl new file mode 100644 index 0000000..e5c6200 --- /dev/null +++ b/external/unbound/testdata/iter_stub_leak.rpl @@ -0,0 +1,220 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 +stub-zone: + name: "example.com" + stub-addr: 10.0.1.1 +stub-zone: + name: "example.net" + stub-addr: 10.0.5.1 +CONFIG_END + +SCENARIO_BEGIN Test stub zone leaking to the internet on last resort fallback + +; root server +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + +; root prime +ENTRY_BEGIN +MATCH qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS k.root-servers.net. +SECTION ADDITIONAL +k.root-servers.net. IN A 193.0.14.129 +ENTRY_END + +RANGE_END + +; stub server for example.com +RANGE_BEGIN 0 100 + ADDRESS 10.0.1.1 + +; subzone is delegated +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +subzone.example.com. IN A +SECTION AUTHORITY +subzone.example.com. IN NS sub-ns1.example.com. +subzone.example.com. IN NS sub-ns2.example.com. +subzone.example.com. IN NS example.net. +SECTION ADDITIONAL +sub-ns1.example.com. IN A 10.0.2.3 +sub-ns2.example.com. IN A 10.0.2.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub-ns1.example.com. IN A +SECTION ANSWER +sub-ns1.example.com. IN A 10.0.2.3 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub-ns2.example.com. IN A +SECTION ANSWER +sub-ns2.example.com. IN A 10.0.2.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub-ns1.example.com. IN AAAA +SECTION AUTHORITY +example.com. 300 SOA master.example.com etc 1 2 3 4 300 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +sub-ns2.example.com. IN AAAA +SECTION AUTHORITY +example.com. 300 SOA master.example.com etc 1 2 3 4 300 +ENTRY_END + +RANGE_END + +; stub server for example.net +RANGE_BEGIN 0 100 + ADDRESS 10.0.5.1 + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 10.0.5.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +example.net. IN A +SECTION ANSWER +example.net. IN A 10.0.5.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode question +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +example.net. IN AAAA +SECTION AUTHORITY +example.net. 300 SOA master.example.net etc 1 2 3 4 300 +ENTRY_END + +RANGE_END + +; stub server for subzone.example.com +RANGE_BEGIN 0 100 + ADDRESS 10.0.2.3 +; match anything, servfail +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +subzone.example.com. IN A +SECTION ANSWER +ENTRY_END +RANGE_END + +; stub server for subzone.example.com +RANGE_BEGIN 0 100 + ADDRESS 10.0.2.4 +; match anything, servfail +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +subzone.example.com. IN A +SECTION ANSWER +ENTRY_END +RANGE_END + +; stub server for subzone.example.com +RANGE_BEGIN 0 100 + ADDRESS 10.0.5.4 +; match anything, servfail +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +subzone.example.com. IN A +SECTION ANSWER +ENTRY_END +RANGE_END + + +; fetch the delegation point for example.net in cache. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.net. IN NS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 10.0.5.1 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +whatever.subzone.example.com. IN A +ENTRY_END + +; recursion happens here. +; the query should not leak subzone ns queries to the internet +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +whatever.subzone.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_stub_noroot.rpl b/external/unbound/testdata/iter_stub_noroot.rpl new file mode 100644 index 0000000..0bc1ff5 --- /dev/null +++ b/external/unbound/testdata/iter_stub_noroot.rpl @@ -0,0 +1,64 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 81.187.81.187 +stub-zone: + name: "lp0.eu" + stub-addr: 81.2.80.65 + stub-prime: no +CONFIG_END + +SCENARIO_BEGIN Test resolve of stub zone without root prime. + +; this server does not respond. (for the root) +RANGE_BEGIN 0 100 + ADDRESS 81.187.81.187 +ENTRY_BEGIN +MATCH +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +. IN NS +ENTRY_END +RANGE_END + +; lp0.eu server +RANGE_BEGIN 0 100 + ADDRESS 81.2.80.65 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +proxima.lp0.eu. IN A +SECTION ANSWER +proxima.lp0.eu. IN A 81.2.80.65 +SECTION AUTHORITY +lp0.eu. IN NS proxima.lp0.eu. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +proxima.lp0.eu. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +proxima.lp0.eu. IN A +SECTION ANSWER +proxima.lp0.eu. IN A 81.2.80.65 +SECTION AUTHORITY +lp0.eu. IN NS proxima.lp0.eu. +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_stubfirst.rpl b/external/unbound/testdata/iter_stubfirst.rpl new file mode 100644 index 0000000..6245a4f --- /dev/null +++ b/external/unbound/testdata/iter_stubfirst.rpl @@ -0,0 +1,157 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.6 # failing server + stub-first: yes + +CONFIG_END + +SCENARIO_BEGIN Test stub-first directive + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; local authority (that fails a lot) +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_stublastresort.rpl b/external/unbound/testdata/iter_stublastresort.rpl new file mode 100644 index 0000000..b607789 --- /dev/null +++ b/external/unbound/testdata/iter_stublastresort.rpl @@ -0,0 +1,259 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.6 + stub-prime: yes + +CONFIG_END + +SCENARIO_BEGIN Test stub with stub-prime and last resort fallback +; the last resort fallback should not activate, as the +; configured stub must be used for this data, or its primed data. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; the stub-prime server. +; local authority (that fails a lot) +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.7 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +;ns.example.com. IN A 1.2.3.7 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.70 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; the primed server +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.7 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.80 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; crap server that the primed server refers to. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.8 + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;www.example.com. IN A 10.20.30.50 +SECTION AUTHORITY +;example.com. IN NS ns.example.com. +SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/iter_timeout_ra_aaaa.rpl b/external/unbound/testdata/iter_timeout_ra_aaaa.rpl new file mode 100644 index 0000000..9b06aea --- /dev/null +++ b/external/unbound/testdata/iter_timeout_ra_aaaa.rpl @@ -0,0 +1,245 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator with timeouts on reclame AAAA dropping server + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. 280 IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +; This server is REC_LAME +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 280 IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 280 IN NS ns.example.net. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +ENTRY_END + +; query for (dropped) AAAA record. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +; the AAAA query times out. +STEP 21 TIMEOUT +STEP 22 TIMEOUT +STEP 23 TIMEOUT +STEP 24 TIMEOUT +STEP 25 TIMEOUT + +; we get servfail, but the AAA arrives again (after the servfail times +; out of the cache) +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 31 TIME_PASSES ELAPSE 6 +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +; timeouts for AAAA keep happening. +STEP 41 TIMEOUT +STEP 42 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 43 TIME_PASSES ELAPSE 12 + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +; fallback queries +STEP 51 TRAFFIC +; and it fails, no parentside entries and so on. +STEP 52 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 53 TIME_PASSES ELAPSE 12 + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 61 TIMEOUT +STEP 62 TRAFFIC +STEP 63 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +STEP 70 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +STEP 72 TRAFFIC +STEP 73 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.net. +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/local_acl_override.rpl b/external/unbound/testdata/local_acl_override.rpl new file mode 100644 index 0000000..b72afe6 --- /dev/null +++ b/external/unbound/testdata/local_acl_override.rpl @@ -0,0 +1,93 @@ +; config options +server: + local-zone: "1.example." transparent + local-zone: "2.example." transparent + access-control: 10.10.10.0/24 allow + + local-zone-override: "1.example." 10.10.10.20/32 refuse + local-zone-override: "2.example." 10.10.10.30/32 refuse + local-zone-override: "2.example." 10.10.10.40/32 always_nxdomain + +forward-zone: + name: "example." + forward-addr: 1.2.3.4 + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +RANGE_BEGIN 0 100 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +1.example. IN TXT +SECTION ANSWER +1.example. IN TXT "data 1" +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +2.example. IN TXT +SECTION ANSWER +2.example. IN TXT "data 2" +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +1.example. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +1.example. IN TXT +SECTION ANSWER +1.example. IN TXT "data 1" +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +1.example. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +1.example. IN TXT +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +2.example. IN TXT +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +2.example. IN TXT +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/local_acl_taglist.rpl b/external/unbound/testdata/local_acl_taglist.rpl new file mode 100644 index 0000000..834abe8 --- /dev/null +++ b/external/unbound/testdata/local_acl_taglist.rpl @@ -0,0 +1,169 @@ +; config options +server: + define-tag: "tag1 tag2 tag3" + define-tag: "tag4" + local-zone: "example." redirect + local-data: 'example. IN TXT "data 0"' + local-zone: "d.example." static + local-data: 'd.example. IN TXT "data 1"' + local-zone: "c.d.example." redirect + local-data: 'c.d.example. IN TXT "data 2"' + local-zone: "b.c.d.example." redirect + local-data: 'b.c.d.example. IN TXT "data 3"' + local-zone: "foo." redirect + local-data: 'foo. IN TXT "data plain 4"' + + ; no tags for local-zones example. and c.d.example. + local-zone-tag: "d.example." "tag1 tag2" + local-zone-tag: "b.c.d.example." "tag3" + local-zone-tag: "foo." "tag4" + + access-control: 10.10.10.0/24 allow + access-control-tag: 10.10.10.20/32 "tag1" + access-control-tag: 10.10.10.30/32 "tag2 tag3" + access-control-tag: 10.10.10.40/32 "tag3" + + access-control-tag: 10.10.10.50/32 "tag4" + access-control-tag-data: 10.10.10.50/32 "tag4" 'TXT "data tag4"' + access-control-tag: 10.10.10.60/32 "tag4" + + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +SECTION QUESTION +d.example. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +d.example. IN TXT +SECTION ANSWER +d.example. IN TXT "data 0" +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +d.example. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +d.example. IN TXT +SECTION ANSWER +d.example. IN TXT "data 1" +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +d.example. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +d.example. IN TXT +SECTION ANSWER +d.example. IN TXT "data 1" +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +d.example. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +d.example. IN TXT +SECTION ANSWER +d.example. IN TXT "data 0" +ENTRY_END + +STEP 9 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +c.d.example. IN TXT +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +c.d.example. IN TXT +SECTION ANSWER +c.d.example. IN TXT "data 2" +ENTRY_END + +STEP 11 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +a.b.c.d.example. IN TXT +ENTRY_END +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +a.b.c.d.example. IN TXT +SECTION ANSWER +a.b.c.d.example. IN TXT "data 2" +ENTRY_END + +STEP 13 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +a.b.c.d.example. IN TXT +ENTRY_END +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +a.b.c.d.example. IN TXT +SECTION ANSWER +a.b.c.d.example. IN TXT "data 3" +ENTRY_END + +STEP 15 QUERY ADDRESS 10.10.10.50 +ENTRY_BEGIN +SECTION QUESTION +www.foo. IN TXT +ENTRY_END +STEP 16 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +www.foo. IN TXT +SECTION ANSWER +www.foo. IN TXT "data tag4" +ENTRY_END + +STEP 17 QUERY ADDRESS 10.10.10.60 +ENTRY_BEGIN +SECTION QUESTION +www.foo. IN TXT +ENTRY_END +STEP 18 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +www.foo. IN TXT +SECTION ANSWER +www.foo. IN TXT "data plain 4" +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/local_acl_taglist_action.rpl b/external/unbound/testdata/local_acl_taglist_action.rpl new file mode 100644 index 0000000..9977e02 --- /dev/null +++ b/external/unbound/testdata/local_acl_taglist_action.rpl @@ -0,0 +1,125 @@ +; config options +server: + define-tag: "tag1 tag2 tag3" + local-zone: "example." static + local-data: 'example. IN TXT "data 0"' + + local-zone-tag: "example." "tag1 tag2 tag3" + + access-control: 10.10.10.0/24 allow + access-control-tag: 10.10.10.10/32 "tag1" + access-control-tag: 10.10.10.20/32 "tag2 tag3" + access-control-tag: 10.10.10.30/32 "tag3" + access-control-tag: 10.10.10.40/32 "tag3" + access-control-tag: 10.10.10.50/32 "tag3" + + access-control-tag-action: 10.10.10.10/32 tag1 always_refuse + access-control-tag-action: 10.10.10.20/32 tag2 always_nxdomain + access-control-tag-action: 10.10.10.30/32 tag3 always_refuse + access-control-tag-action: 10.10.10.50/32 tag3 always_transparent + +forward-zone: + name: "example." + forward-addr: 1.2.3.4 + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +RANGE_BEGIN 0 100 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +example. IN TXT +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 0" +ENTRY_END + +STEP 9 QUERY ADDRESS 10.10.10.50 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END + +STEP 11 QUERY ADDRESS 10.10.10.60 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN TXT +ENTRY_END +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example. IN TXT +SECTION ANSWER +example. IN TXT "data 1" +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/local_cname.rpl b/external/unbound/testdata/local_cname.rpl new file mode 100644 index 0000000..b8c4a56 --- /dev/null +++ b/external/unbound/testdata/local_cname.rpl @@ -0,0 +1,492 @@ +; config options +server: + # put unbound.conf config options here. + + access-control: 127.0.0.1/32 allow_snoop #allow queries with RD bit + trust-anchor-signaling: no + + # DNSSEC trust anchor taken from a real world example. Used for + # DNSSEC-signed CNAME target. + trust-anchor: "infoblox.com. 172800 IN DNSKEY 257 3 5 AwEAAerW6xQkJIb5wxm48RoHD/LE8r/GzmdIGOam0lQczIth+I9ctltV dDJXz5BH8j4TOaOH1gBRCXhsPDyPom/eLEkdUuXNuhV6QnWGHOtz1fuY EO+kBqaI79jR0K31OmevR/H/F3C8gi4T6//6G9qsftvcl6m7+V1vI2+c cgxiiOlMrZZb4YAhue1+tRw57f3aVOSNtcrONO/Jffgb9jbDTKRi33oT fDznyPa1lCWMbuybr/LaCU0LP6fG4BII/FDWFi5rQxMHygWfscdYX06c eGUzHqiuNNGL8Jze6johni71T/hJGtLMozkY7qxOLfWBXOu9kr1MBQh5 6hfibOZMZJM=" + # Use a fixed and faked date for DNSSEC validation to avoid run-time + # re-signing test signatures. + val-override-date: "20161001003725" + + define-tag: "cname cname2 nx servfail sec ambiguous" + access-control-tag: 127.0.0.1/32 "cname cname2 nx servfail sec" + + # Basic case: one CNAME whose target exists. + local-zone: example.com static + local-zone-tag: example.com "cname" + access-control-tag: 127.0.0.1/32 "cname" + access-control-tag-action: 127.0.0.1/32 "cname" redirect + access-control-tag-data: 127.0.0.1/32 "cname" "CNAME example.org." + + # Similar to the above, but different original query name. + local-zone: another.example.com static + local-zone-tag: another.example.com "cname2" + access-control-tag: 127.0.0.1/32 "cname2" + access-control-tag-action: 127.0.0.1/32 "cname2" redirect + access-control-tag-data: 127.0.0.1/32 "cname2" "CNAME example.org." + + # CNAME target is expected to be nonexistent. + local-zone: nx.example.com static + local-zone-tag: nx.example.com "nx" + access-control-tag: 127.0.0.1/32 "nx" + access-control-tag-action: 127.0.0.1/32 "nx" redirect + access-control-tag-data: 127.0.0.1/32 "nx" "CNAME nx.example.org." + + # Resolution of this CNAME target will result in SERVFAIL. + local-zone: servfail.example.com static + local-zone-tag: servfail.example.com "servfail" + access-control-tag-action: 127.0.0.1/32 "servfail" redirect + access-control-tag-data: 127.0.0.1/32 "servfail" "CNAME servfail.example.org." + + # CNAME target is supposed to be DNSSEC-signed. + local-zone: sec.example.com static + local-zone-tag: sec.example.com "sec" + access-control-tag-action: 127.0.0.1/32 "sec" redirect + access-control-tag-data: 127.0.0.1/32 "sec" "CNAME www.infoblox.com." + + # Test setup for non-tag based redirect + local-zone: example.net redirect + local-data: "example.net. IN CNAME cname.example.org." + + ### template zone and tag intended to be used for tests with CNAME and + ### other data. + ##local-zone: ambiguous.example.com redirect + ##@LOCALDATA1@ + ##@LOCALDATA2@ + ##local-zone-tag: ambiguous.example.com "ambiguous" + ##access-control-tag-action: 127.0.0.1/32 "ambiguous" redirect + ##@TAGDATA1@ + ##@TAGDATA2@ + + + + target-fetch-policy: "0 0 0 0 0" + +# send the queries to the test server (see the 10.0.10.3 entries below) +forward-zone: + name: "." + forward-addr: 10.0.10.3 +CONFIG_END + +; short one-line description of scenario: +SCENARIO_BEGIN Test local-data CNAME aliases + +; Specification of the answers that the upstream server provides to unbound +RANGE_BEGIN 0 1000 + ADDRESS 10.0.10.3 +; put entries here with answers to specific qname, qtype + +; infoblox.com +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +infoblox.com. IN DNSKEY +SECTION ANSWER +infoblox.com. 172800 IN DNSKEY 256 3 5 AwEAAbi2VnVHFm5rO2EiawNWhTTRPPzaA+VEdpGOc+CtwIZq86C4Ndbp 0M7XTi0wru0Pgh54oGZ3ty9WllYEnVfoA1rcGwFJmAln7KKAuQP+dlGE yHPJYduAjG/JFA6Qq0zj18AmWgks+qvethASMm3PtihQkNytjmQWjiL6 6h8cQwFP +infoblox.com. 172800 IN DNSKEY 257 3 5 AwEAAerW6xQkJIb5wxm48RoHD/LE8r/GzmdIGOam0lQczIth+I9ctltV dDJXz5BH8j4TOaOH1gBRCXhsPDyPom/eLEkdUuXNuhV6QnWGHOtz1fuY EO+kBqaI79jR0K31OmevR/H/F3C8gi4T6//6G9qsftvcl6m7+V1vI2+c cgxiiOlMrZZb4YAhue1+tRw57f3aVOSNtcrONO/Jffgb9jbDTKRi33oT fDznyPa1lCWMbuybr/LaCU0LP6fG4BII/FDWFi5rQxMHygWfscdYX06c eGUzHqiuNNGL8Jze6johni71T/hJGtLMozkY7qxOLfWBXOu9kr1MBQh5 6hfibOZMZJM= +infoblox.com. 172800 IN RRSIG DNSKEY 5 2 172800 20161004003725 20160930000830 31651 infoblox.com. Ds7LZY2W59fq9cWgqi3W6so1NGFa7JdjO8zlhK3hGu2a2WG1W/rVftom rCf0gdI5q4BZJnq2o0SdLd/U7he1uWz8ATntEETiNs9/8G7myNK17wQu AN/+3gol+qT4DX0CA3Boz7Z+xFQbTwnnJJvGASa/1jPMIYU8DiyNx3Pe SSh9lbyU/4YI0mshn5ZC2HCFChxr+aVJxk4UHjaPfHhWwVu9oM4IbEfn KD9x4ltKjjy0pXMYqVlNs9+tG2nXdwr/6Q4G+yfRBAcW+cWeW5w4igxf xYFq4Y5gkZetGOReoNODZ9YC9WvcxBo+qY/iUN2k+lEFq+oL8+DthAGH uA1krw== +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.infoblox.com. IN A +SECTION ANSWER +www.infoblox.com. 3600 IN A 161.47.10.70 +www.infoblox.com. 3600 IN RRSIG A 5 3 3600 20161003223322 20160929221122 14916 infoblox.com. WbO9ydRAoRTPvdK18atTdLEkkMGoOjuwbcb6vVI0d6Sea3xkcBMNmtst Wdzr+pKEJqO2bfm167X6uhcOHanHZRnirlTnEbuTdsP0HCiIEGQD5iHg UNH2FJSKGNYBmgZKJpuLhDca7oqtkl8EyGA+UEt6Rtq6aW8V0wpkhPHi Pug=' +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; example.org +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN A +SECTION ANSWER +example.org. IN A 192.0.2.1 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +cname.example.org. IN A +SECTION ANSWER +cname.example.org. IN A 192.0.2.2 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.org. hostmaster.example.org. 2016101900 28800 7200 604800 3600 +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +nx.example.org. IN A +SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.org. hostmaster.example.org. 2016101900 28800 7200 604800 3600 +SECTION ADDITIONAL +ENTRY_END + +; for norec query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN NS +SECTION ANSWER +example.org. IN NS ns.example. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR SERVFAIL +SECTION QUESTION +servfail.example.org. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; end of entries with answers from upstream server +RANGE_END +; Steps where queries are sent, one at a time, to unbound. +; QUERY is what the downstream client sends to unbound. +; CHECK_ANSWER contains the response from unbound. + + +; Basic case: both exact and subdomain matches result in the same CNAME +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN CNAME +ENTRY_END + +; For type-CNAME queries, the CNAME itself will be returned +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +example.com. IN CNAME +SECTION ANSWER +example.com. IN CNAME example.org. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +alias.example.com. IN CNAME +ENTRY_END + +; For type-CNAME queries, the CNAME itself will be returned +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +alias.example.com. IN CNAME +SECTION ANSWER +alias.example.com. IN CNAME example.org. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; Basic case: both exact and subdomain matches result in the same CNAME +; For other types, a complete CNAME chain will have to be returned +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +example.com. IN A +SECTION ANSWER +example.com. IN CNAME example.org. +example.org. IN A 192.0.2.1 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 70 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +alias.example.com. IN A +ENTRY_END + +STEP 80 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +alias.example.com. IN A +SECTION ANSWER +alias.example.com. IN CNAME example.org. +example.org. IN A 192.0.2.1 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; Basic case: both exact and subdomain matches result in the same CNAME. +; The result is the same for non-recursive query as long as a +; complete chain is cached. +STEP 90 QUERY +ENTRY_BEGIN +REPLY +SECTION QUESTION +example.com. IN A +ENTRY_END + +STEP 100 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +example.com. IN A +SECTION ANSWER +example.com. IN CNAME example.org. +example.org. IN A 192.0.2.1 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 110 QUERY +ENTRY_BEGIN +REPLY +SECTION QUESTION +alias.example.com. IN A +ENTRY_END + +STEP 120 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +alias.example.com. IN A +SECTION ANSWER +alias.example.com. IN CNAME example.org. +example.org. IN A 192.0.2.1 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; Similar to the above, but these are local-zone redirect, instead of +; tag-based policies. +STEP 130 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.net. IN CNAME +ENTRY_END + +; For type-CNAME queries, the CNAME itself will be returned +STEP 140 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +example.net. IN CNAME +SECTION ANSWER +example.net. IN CNAME cname.example.org. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 150 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +alias.example.net. IN CNAME +ENTRY_END + +; For type-CNAME queries, the CNAME itself will be returned +STEP 160 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +alias.example.net. IN CNAME +SECTION ANSWER +alias.example.net. IN CNAME cname.example.org. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 170 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.net. IN A +ENTRY_END + +STEP 180 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +example.net. IN A +SECTION ANSWER +example.net. IN CNAME cname.example.org. +cname.example.org. IN A 192.0.2.2 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 190 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +alias.example.net. IN A +ENTRY_END + +STEP 200 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +alias.example.net. IN A +SECTION ANSWER +alias.example.net. IN CNAME cname.example.org. +cname.example.org. IN A 192.0.2.2 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +; Relatively minor cases follow + +; query type doesn't exist for the CNAME target. The original query +; succeeds with an "incomplete" chain only containing the CNAME. +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN AAAA +ENTRY_END + +STEP 220 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +example.com. IN AAAA +SECTION ANSWER +example.com. IN CNAME example.org. +SECTION AUTHORITY +example.org. 3600 IN SOA ns.example.org. hostmaster.example.org. 2016101900 28800 7200 604800 3600 +SECTION ADDITIONAL +ENTRY_END + +; The CNAME target name doesn't exist. NXDOMAIN with the CNAME will +; be returned. +STEP 230 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx.example.com. IN A +ENTRY_END + +STEP 240 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION ANSWER +nx.example.com. IN CNAME nx.example.org. +SECTION AUTHORITY +example.org. 3600 IN SOA ns.example.org. hostmaster.example.org. 2016101900 28800 7200 604800 3600 +SECTION ADDITIONAL +ENTRY_END + +; Resolution for the CNAME target will result in SERVFAIL. It will +; be forwarded to the original query. The answer section should be +; empty. +STEP 250 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +servfail.example.com. IN A +ENTRY_END + +STEP 260 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +servfail.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; The CNAME target is DNSSEC-signed and it's validated. If the original +; query enabled the DNSSEC, the RRSIGs will be included in the answer, +; but the response should have the AD bit off +STEP 270 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sec.example.com. IN A +ENTRY_END + +STEP 280 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD DO RA AA NOERROR +SECTION QUESTION +sec.example.com. IN A +SECTION ANSWER +sec.example.com. IN CNAME www.infoblox.com. +www.infoblox.com. 3600 IN A 161.47.10.70 +www.infoblox.com. 3600 IN RRSIG A 5 3 3600 20161003223322 20160929221122 14916 infoblox.com. WbO9ydRAoRTPvdK18atTdLEkkMGoOjuwbcb6vVI0d6Sea3xkcBMNmtst Wdzr+pKEJqO2bfm167X6uhcOHanHZRnirlTnEbuTdsP0HCiIEGQD5iHg UNH2FJSKGNYBmgZKJpuLhDca7oqtkl8EyGA+UEt6Rtq6aW8V0wpkhPHi Pug=' +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/local_ds.rpl b/external/unbound/testdata/local_ds.rpl new file mode 100644 index 0000000..d76d346 --- /dev/null +++ b/external/unbound/testdata/local_ds.rpl @@ -0,0 +1,103 @@ +; config options +; The island of trust is at example.com +server: + qname-minimisation: "no" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test local data for as112 zone with DS lookup. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +arpa. IN NS +SECTION ANSWER +SECTION AUTHORITY +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +in-addr.arpa. IN NS +SECTION ANSWER +SECTION AUTHORITY +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +10.in-addr.arpa. IN DS +SECTION ANSWER +SECTION AUTHORITY +10.in-addr.arpa. IN NSEC 11.in-addr.arpa NSEC RRSIG +. IN SOA invalid. invalid. 1 2 3 4 5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +40.30.20.10.in-addr.arpa. IN PTR +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA DO NXDOMAIN +SECTION QUESTION +40.30.20.10.in-addr.arpa. IN PTR +SECTION ANSWER +SECTION AUTHORITY +10.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +10.in-addr.arpa. IN DS +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +10.in-addr.arpa. IN DS +SECTION ANSWER +SECTION AUTHORITY +10.in-addr.arpa. IN NSEC 11.in-addr.arpa NSEC RRSIG +. IN SOA invalid. invalid. 1 2 3 4 5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/local_nodefault.rpl b/external/unbound/testdata/local_nodefault.rpl new file mode 100644 index 0000000..7a1e140 --- /dev/null +++ b/external/unbound/testdata/local_nodefault.rpl @@ -0,0 +1,61 @@ +; config options +; The island of trust is at example.com +server: + local-zone: "10.in-addr.arpa" nodefault + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test local data with nodefault for as112 zone. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +40.30.20.10.in-addr.arpa. IN PTR +SECTION ANSWER +SECTION AUTHORITY +. IN SOA invalid. invalid. 1 2 3 4 5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +40.30.20.10.in-addr.arpa. IN PTR +ENTRY_END +; not blocked! + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +40.30.20.10.in-addr.arpa. IN PTR +SECTION ANSWER +SECTION AUTHORITY +. IN SOA invalid. invalid. 1 2 3 4 5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.conf b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.conf new file mode 100644 index 0000000..b245c03 --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.conf @@ -0,0 +1,27 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + # trailing . + local-zone: "30.172.in-addr.arpa." nodefault + # no trailing . + local-zone: "29.172.in-addr.arpa" nodefault + +forward-zone: + name: "." + # invalid address to be sure it fails. + forward-addr: "127.0.0.5@@TOPORT@" +forward-zone: + name: "30.172.in-addr.arpa" + forward-addr: "127.0.0.1@@TOPORT@" +forward-zone: + name: "29.172.in-addr.arpa" + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.dsc b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.dsc new file mode 100644 index 0000000..43133ee --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.dsc @@ -0,0 +1,16 @@ +BaseName: local_nodefault +Version: 1.0 +Description: Create a stub zone to replace a default local zone +CreationDate: Tue Jun 3 14:08:00 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: local_nodefault.pre +Post: local_nodefault.post +Test: local_nodefault.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.post b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.post new file mode 100644 index 0000000..af955a1 --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.post @@ -0,0 +1,11 @@ +# #-- local_nodefault.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.pre b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.pre new file mode 100644 index 0000000..48e8d25 --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.pre @@ -0,0 +1,31 @@ +# #-- local_nodefault.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT local_nodefault.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < local_nodefault.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.test b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.test new file mode 100644 index 0000000..01e0ac0 --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.test @@ -0,0 +1,53 @@ +# #-- local_nodefault.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# this one should have NXDOMAIN builtin +# +echo "> dig 1.0.31.172.in-addr.arpa." +dig @localhost -p $UNBOUND_PORT 1.0.31.172.in-addr.arpa. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK for a blocked by default zone" +else + echo "Not OK" + exit 1 +fi + +# this one should give our own data as the reply +echo "> dig 1.0.30.172.in-addr.arpa." +dig @localhost -p $UNBOUND_PORT 1.0.30.172.in-addr.arpa. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK for nodefault zone" +else + echo "Not OK" + exit 1 +fi + +# this one should give our own data as the reply +# but different trailing dot in unbound.conf file +echo "> dig 1.0.29.172.in-addr.arpa." +dig @localhost -p $UNBOUND_PORT 1.0.29.172.in-addr.arpa. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.42" outfile; then + echo "OK for nodefault zone" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/local_nodefault.tdir/local_nodefault.testns b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.testns new file mode 100644 index 0000000..041888e --- /dev/null +++ b/external/unbound/testdata/local_nodefault.tdir/local_nodefault.testns @@ -0,0 +1,24 @@ +; nameserver test file +$ORIGIN 30.172.in-addr.arpa. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +1.0 IN A +SECTION ANSWER +1.0 IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +1.0.29.172.in-addr.arpa. IN A +SECTION ANSWER +1.0.29.172.in-addr.arpa. IN A 10.20.30.42 +ENTRY_END + diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.conf b/external/unbound/testdata/local_norec.tdir/local_norec.conf new file mode 100644 index 0000000..86cddbd --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.conf @@ -0,0 +1,24 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + local-data: "foo.example.com. A 1.1.1.1" + + access-control: 0.0.0.0/0 allow_snoop + access-control: 127.0.0.0/8 allow_snoop + access-control: ::0/0 allow_snoop + access-control: ::1 allow_snoop + access-control: ::ffff:127.0.0.1 allow_snoop + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.dsc b/external/unbound/testdata/local_norec.tdir/local_norec.dsc new file mode 100644 index 0000000..fb1c778 --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.dsc @@ -0,0 +1,16 @@ +BaseName: local_norec +Version: 1.0 +Description: Local-data and access control allow_snoop test. +CreationDate: Mon Sep 1 14:26:00 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: local_norec.pre +Post: local_norec.post +Test: local_norec.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.post b/external/unbound/testdata/local_norec.tdir/local_norec.post new file mode 100644 index 0000000..bf65aa8 --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.post @@ -0,0 +1,10 @@ +# #-- local_norec.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.pre b/external/unbound/testdata/local_norec.tdir/local_norec.pre new file mode 100644 index 0000000..8ab4f62 --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.pre @@ -0,0 +1,31 @@ +# #-- local_norec.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT local_norec.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < local_norec.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.test b/external/unbound/testdata/local_norec.tdir/local_norec.test new file mode 100644 index 0000000..b32f0ae --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.test @@ -0,0 +1,65 @@ +# #-- local_norec.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +# +# www.example.com is available through recursion. +# foo.example.com is available through local-data (and recursion...). +# +echo "> dig www.example.com. +RD" +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig www.example.com. +norec" +dig @localhost +norec -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig foo.example.com. +RD" +dig @localhost -p $UNBOUND_PORT foo.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig foo.example.com. +norec" +dig @localhost +norec -p $UNBOUND_PORT foo.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/local_norec.tdir/local_norec.testns b/external/unbound/testdata/local_norec.tdir/local_norec.testns new file mode 100644 index 0000000..58dce45 --- /dev/null +++ b/external/unbound/testdata/local_norec.tdir/local_norec.testns @@ -0,0 +1,24 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +foo IN A +SECTION ANSWER +foo IN A 10.20.30.50 +ENTRY_END + diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.conf b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.conf new file mode 100644 index 0000000..f3dd8e7 --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.conf @@ -0,0 +1,24 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + local-data: "foo.example.com. A 1.1.1.1" + + access-control: 0.0.0.0/0 allow + access-control: 127.0.0.0/8 allow + access-control: ::0/0 allow + access-control: ::1 allow + access-control: ::ffff:127.0.0.1 allow + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.dsc b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.dsc new file mode 100644 index 0000000..1e009f9 --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.dsc @@ -0,0 +1,16 @@ +BaseName: local_nosnoop +Version: 1.0 +Description: Local-data and access control allow no snoop test. +CreationDate: Mon Sep 1 14:36:53 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: local_nosnoop.pre +Post: local_nosnoop.post +Test: local_nosnoop.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.post b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.post new file mode 100644 index 0000000..63d492d --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.post @@ -0,0 +1,10 @@ +# #-- local_nosnoop.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.pre b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.pre new file mode 100644 index 0000000..e304f49 --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.pre @@ -0,0 +1,31 @@ +# #-- local_nosnoop.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT local_nosnoop.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < local_nosnoop.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.test b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.test new file mode 100644 index 0000000..1e762d5 --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.test @@ -0,0 +1,75 @@ +# #-- local_nosnoop.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +# +# www.example.com is available through recursion. +# foo.example.com is available through local-data (and recursion...). +# +# so, with 'allow' the cache snoop stops working: +# dig +norec for www does not work any more. +# +echo "> dig www.example.com. +RD" +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig www.example.com. +norec" +dig @localhost +norec -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "REFUSED" outfile; then + echo "OK rcode" +else + echo "Not OK rcode" + exit 1 +fi + +if grep "10.20.30.40" outfile; then + echo "Not OK" + exit 1 +else + echo "OK" +fi + +echo "> dig foo.example.com. +RD" +dig @localhost -p $UNBOUND_PORT foo.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig foo.example.com. +norec" +dig @localhost +norec -p $UNBOUND_PORT foo.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.testns b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.testns new file mode 100644 index 0000000..58dce45 --- /dev/null +++ b/external/unbound/testdata/local_nosnoop.tdir/local_nosnoop.testns @@ -0,0 +1,24 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +foo IN A +SECTION ANSWER +foo IN A 10.20.30.50 +ENTRY_END + diff --git a/external/unbound/testdata/local_transparent_sametype.rpl b/external/unbound/testdata/local_transparent_sametype.rpl new file mode 100644 index 0000000..a737297 --- /dev/null +++ b/external/unbound/testdata/local_transparent_sametype.rpl @@ -0,0 +1,78 @@ +; config options +; The island of trust is at example.com +server: + local-zone: "example.com." transparent + local-data: "mail.example.com. IN A 10.20.30.40" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test local data with transparent zone queried for types + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +mail.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +. IN SOA invalid. invalid. 1 2 3 4 5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mail.example.com. IN A +ENTRY_END +; get straight answer from localdata + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA DO NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mail.example.com. IN AAAA +ENTRY_END +; must be NOERROR/NODATA because of A record, not NXDOMAIN from internet. + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA DO NOERROR +SECTION QUESTION +mail.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/local_typetransparent.rpl b/external/unbound/testdata/local_typetransparent.rpl new file mode 100644 index 0000000..8fe3402 --- /dev/null +++ b/external/unbound/testdata/local_typetransparent.rpl @@ -0,0 +1,110 @@ +; config options +; The island of trust is at example.com +server: + local-zone: "example.com." typetransparent + local-data: "mail.example.com. IN A 10.20.30.40" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test local data with typetransparent zone + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mail.example.com. IN MX +SECTION ANSWER +mail.example.com. IN MX 100 mail.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA 2001::1 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mail.example.com. IN A +ENTRY_END +; get straight answer from localdata + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA DO NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mail.example.com. IN MX +ENTRY_END + +; get internet answer for other type. + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +mail.example.com. IN MX +SECTION ANSWER +mail.example.com. IN MX 100 mail.example.com. +ENTRY_END + +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END + +; get internet answer for other name. + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN AAAA 2001::1 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/localdata.rpl b/external/unbound/testdata/localdata.rpl new file mode 100644 index 0000000..08aec6d --- /dev/null +++ b/external/unbound/testdata/localdata.rpl @@ -0,0 +1,357 @@ +; config options +server: + hide-identity: no + hide-version: no + identity: "test-identity" + version: "test-version" + + ; implicit transparent zone should not block id.server + local-data: "mydata.server. CH A 10.11.12.13" + local-data: "myd2.server. CH A 10.11.12.14" + local-data: 'myd3.server. CH TXT "a text record"' + ; together implicit CH top domain .server is created transparent. + + ; static zone + local-zone: "local" static + local-data: "local SOA nobody nobody 1 2 3 4 5" + local-data: "serv.local. A 20.30.40.50" + ; multiple RRs in this RRset. + local-data: "bla.bla.local. A 20.30.40.51" + local-data: "bla.bla.local. A 20.30.40.52" + local-data: "bla.bla.local. A 20.30.40.53" + + ; static zone (no soa) + local-zone: "noso.local" static + local-data: "bla.bla.noso.local AAAA 2001::2" + + ; deny zone (no answer) + local-zone: "deny.top." deny + + ; refuse zone (error) + local-zone: "refuse.top." refuse + + ; redirect zone + local-zone: "redirect.top." redirect + local-data: "redirect.top. A 20.30.40.54" + + ; create implicit data in the IN domain as well + local-data: "a.a.implicit. A 20.30.41.50" + local-data: "b.a.implicit. A 20.30.42.50" + local-data: "b.b.implicit. A 20.30.43.50" + local-data: "b.c.implicit. A 20.30.45.50" + local-data: "c.c.implicit. A 20.30.44.50" + +CONFIG_END +SCENARIO_BEGIN Test local data queries + +; id.server. +STEP 1 QUERY +ENTRY_BEGIN +SECTION QUESTION +id.server. CH TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA +SECTION QUESTION +id.server. CH TXT +SECTION ANSWER +id.server. 0 CH TXT "test-identity" +ENTRY_END + +; mydata.server. +STEP 3 QUERY +ENTRY_BEGIN +SECTION QUESTION +mydata.server. CH A +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +mydata.server. CH A +SECTION ANSWER +mydata.server. 3600 CH A 10.11.12.13 +ENTRY_END + +; nodata with SOA +STEP 5 QUERY +ENTRY_BEGIN +SECTION QUESTION +local. IN A +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +local. IN A +SECTION AUTHORITY +local. 3600 IN SOA nobody nobody 1 2 3 4 5 +ENTRY_END + +; positive SOA +STEP 7 QUERY +ENTRY_BEGIN +SECTION QUESTION +local. IN SOA +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +local. IN SOA +SECTION ANSWER +local. 3600 IN SOA nobody nobody 1 2 3 4 5 +ENTRY_END + +; positive subdomain +STEP 9 QUERY +ENTRY_BEGIN +SECTION QUESTION +serv.local. IN A +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +serv.local. IN A +SECTION ANSWER +serv.local. IN A 20.30.40.50 +ENTRY_END + +; no such type +STEP 11 QUERY +ENTRY_BEGIN +SECTION QUESTION +serv.local. IN MX +ENTRY_END +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +serv.local. IN MX +SECTION AUTHORITY +local. 3600 IN SOA nobody nobody 1 2 3 4 5 +ENTRY_END + +; no such type, empty nonterminal +STEP 13 QUERY +ENTRY_BEGIN +SECTION QUESTION +bla.local. IN MX +ENTRY_END +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +bla.local. IN MX +SECTION AUTHORITY +local. 3600 IN SOA nobody nobody 1 2 3 4 5 +ENTRY_END + +; nxdomain with SOA +STEP 15 QUERY +ENTRY_BEGIN +SECTION QUESTION +doing.local. IN MX +ENTRY_END +STEP 16 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +doing.local. IN MX +SECTION AUTHORITY +local. 3600 IN SOA nobody nobody 1 2 3 4 5 +ENTRY_END + +; nxdomain without SOA +STEP 17 QUERY +ENTRY_BEGIN +SECTION QUESTION +doing.noso.local. IN MX +ENTRY_END +STEP 18 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +doing.noso.local. IN MX +ENTRY_END + +; positive multiple RR +STEP 19 QUERY +ENTRY_BEGIN +SECTION QUESTION +bla.bla.local. IN A +ENTRY_END +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +bla.bla.local. IN A +SECTION ANSWER +bla.bla.local. IN A 20.30.40.51 +bla.bla.local. IN A 20.30.40.52 +bla.bla.local. IN A 20.30.40.53 +ENTRY_END + +; second implicit transparent zone. +STEP 21 QUERY +ENTRY_BEGIN +SECTION QUESTION +b.b.implicit. IN A +ENTRY_END +STEP 22 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +b.b.implicit. IN A +SECTION ANSWER +b.b.implicit. 3600 IN A 20.30.43.50 +ENTRY_END + +; localhost A default +STEP 30 QUERY +ENTRY_BEGIN +SECTION QUESTION +localhost. IN A +ENTRY_END +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +localhost. IN A +SECTION ANSWER +localhost. 10800 IN A 127.0.0.1 +ENTRY_END + +; localhost AAAA default +STEP 32 QUERY +ENTRY_BEGIN +SECTION QUESTION +localhost. IN AAAA +ENTRY_END +STEP 33 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +localhost. IN AAAA +SECTION ANSWER +localhost. 10800 IN AAAA ::1 +ENTRY_END + +; localhost A reverse default +STEP 34 QUERY +ENTRY_BEGIN +SECTION QUESTION +1.0.0.127.in-addr.arpa. IN PTR +ENTRY_END +STEP 35 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +1.0.0.127.in-addr.arpa. IN PTR +SECTION ANSWER +1.0.0.127.in-addr.arpa. 10800 IN PTR localhost. +ENTRY_END + +; localhost AAAA reverse default +STEP 36 QUERY +ENTRY_BEGIN +SECTION QUESTION +1.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.ip6.arpa. IN PTR +ENTRY_END +STEP 37 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +1.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.ip6.arpa. IN PTR +SECTION ANSWER +1.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.ip6.arpa. 10800 IN PTR localhost. +ENTRY_END + +; blocked AS112 reverse default +STEP 38 QUERY +ENTRY_BEGIN +SECTION QUESTION +1.0.0.10.in-addr.arpa. IN PTR +ENTRY_END +STEP 39 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NXDOMAIN +SECTION QUESTION +1.0.0.10.in-addr.arpa. IN PTR +SECTION AUTHORITY +10.in-addr.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 +ENTRY_END + +; refuse zone +STEP 40 QUERY +ENTRY_BEGIN +SECTION QUESTION +www.refuse.top. IN A +ENTRY_END +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA REFUSED +SECTION QUESTION +www.refuse.top. IN A +ENTRY_END + +; deny zone +STEP 42 QUERY +ENTRY_BEGIN +SECTION QUESTION +www.deny.top. IN A +ENTRY_END +; no answer is checked at exit of testbound. + +; redirect zone apex +STEP 50 QUERY +ENTRY_BEGIN +SECTION QUESTION +redirect.top. IN A +ENTRY_END +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +redirect.top. IN A +SECTION ANSWER +redirect.top. IN A 20.30.40.54 +ENTRY_END + +; redirect zone +STEP 52 QUERY +ENTRY_BEGIN +SECTION QUESTION +www.redirect.top. IN A +ENTRY_END +STEP 53 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +www.redirect.top. IN A +SECTION ANSWER +www.redirect.top. IN A 20.30.40.54 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/net_signed_servfail.rpl b/external/unbound/testdata/net_signed_servfail.rpl new file mode 100644 index 0000000..925dcee --- /dev/null +++ b/external/unbound/testdata/net_signed_servfail.rpl @@ -0,0 +1,1376 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: ". IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk)}" + val-override-date: "20110207110823" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS introduction for .net +; the report for a bug in BIND is on +; http://www.verisignlabs.com/documents/BIND-DS-Servfail.pdf. +; they saw a pattern of servfail/nonservfail every 1 minute (1 day really) +; after introduction of a .NET DS in the root for a running validator. + +; K.ROOT-SERVERS.NET. (before .net DS introduction) +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. 360 IN NS K.ROOT-SERVERS.NET. +. 360 IN RRSIG NS 5 0 360 20110214110823 20110205110823 55582 . vk0d/Bpr1NJFXh4eIG+JrTcBmeo7fxB5cHSBzfQLsuahzMd2x0VuBTvWjl1ziGrNEL/jEl64E41+s3nInUoXmg== ;{id = 55582} +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. 360 IN A 193.0.14.129 +k.root-servers.net. 360 IN RRSIG A 5 3 360 20110214110823 20110205110823 55582 . L/ldGIu3qvN9LxHWkT4nkgu/7wM4zCmQDvCeGvR5lnOAyesKQsO44XhrVFTZ7eZHHffCoXF0bNA47wkTLiio2w== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 60 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +. 60 IN RRSIG DNSKEY 5 0 60 20110214110823 20110205110823 55582 . WbDYJXdisfjhZ1gZ2U/VO2Hn9P2bPcQ6OEAhip6e5vtbtVFVYV6WhHuwcqE89VZGlrcTyQDHGVj+Yx17bmvX5g== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. 120 IN NS a.gtld-servers.net. +net. 60 IN NSEC nl. NS RRSIG NSEC +net. 60 IN RRSIG NSEC 5 1 60 20110214110823 20110205110823 55582 . OAo8N6bM0SqXZiUT7q/j4LlT2UDpn8ia2NcKwm1KCpve+FUFNWHY670aJ5tx8PCYXk+FFfunPVMtQBRJMAUgtg== ;{id = 55582} +SECTION ADDITIONAL +a.gtld-servers.net. 120 IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; K.ROOT-SERVERS.NET. (after .net DS introduction) +RANGE_BEGIN 100 1000 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. 360 IN NS K.ROOT-SERVERS.NET. +. 360 IN RRSIG NS 5 0 360 20110214110823 20110205110823 55582 . vk0d/Bpr1NJFXh4eIG+JrTcBmeo7fxB5cHSBzfQLsuahzMd2x0VuBTvWjl1ziGrNEL/jEl64E41+s3nInUoXmg== ;{id = 55582} +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. 360 IN A 193.0.14.129 +k.root-servers.net. 360 IN RRSIG A 5 3 360 20110214110823 20110205110823 55582 . L/ldGIu3qvN9LxHWkT4nkgu/7wM4zCmQDvCeGvR5lnOAyesKQsO44XhrVFTZ7eZHHffCoXF0bNA47wkTLiio2w== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 60 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} +. 60 IN RRSIG DNSKEY 5 0 60 20110214110823 20110205110823 55582 . WbDYJXdisfjhZ1gZ2U/VO2Hn9P2bPcQ6OEAhip6e5vtbtVFVYV6WhHuwcqE89VZGlrcTyQDHGVj+Yx17bmvX5g== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN DS +SECTION ANSWER +net. 60 IN DS 30899 5 1 cd056cca0e95e76acb7c0934d63082570078c5e8 +net. 60 IN RRSIG DS 5 1 60 20110214110823 20110205110823 55582 . LFpCyJVQZFIqVEsI8CxV1GAhyvb1KTwanKEYTfw8ySsUuPL1M/YOuYehCw6JR7PFubLUem8OwO0Wu64/o3mP4Q== ;{id = 55582} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION AUTHORITY +net. 120 IN NS a.gtld-servers.net. +net. 60 IN DS 30899 5 1 cd056cca0e95e76acb7c0934d63082570078c5e8 +net. 60 IN RRSIG DS 5 1 60 20110214110823 20110205110823 55582 . LFpCyJVQZFIqVEsI8CxV1GAhyvb1KTwanKEYTfw8ySsUuPL1M/YOuYehCw6JR7PFubLUem8OwO0Wu64/o3mP4Q== ;{id = 55582} +SECTION ADDITIONAL +a.gtld-servers.net. 120 IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 1000 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. 120 IN NS a.gtld-servers.net. +net. 120 IN RRSIG NS 5 1 120 20110214110823 20110205110823 30899 net. YnBGgfp1HPjgqxooKBYSR8cVL0MCPwT1w0z1ABXlq3mv40BR3gG041HnSQ35vj5Jrx3m8OmmX+bZYIalZsjPzw== ;{id = 30899} +SECTION ADDITIONAL +a.gtld-servers.net. 120 IN A 192.5.6.30 +a.gtld-servers.net. 120 IN RRSIG A 5 3 120 20110214110823 20110205110823 30899 net. QVDWcK9A1vBOwUmN1juqFWW/BTbY56npDnjf3FtLHsUzpwWfxd2GsbYda2pMXvOLI+C0/SRjkcmcjNIXXMFFFQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +net. IN DNSKEY +SECTION ANSWER +net. 60 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +net. 60 IN RRSIG DNSKEY 5 1 60 20110214110823 20110205110823 30899 net. RlK9lmXX69AkYLsGtNwraiaLboon6gZsSQADf3Z2r8MeBXo+zg24xWdBxXZRGNe8tkmvUOMxsAxFETJRmY1icQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +signed.net. IN DS +SECTION ANSWER +signed.net. 60 IN DS 16486 5 1 d98b27d62ec1be02346ca0c513a6562a03373fc3 +signed.net. 60 IN RRSIG DS 5 2 60 20110214110823 20110205110823 30899 net. JECbUqFSmPNXwG7q0wgBTXgk0u0q/5SuJh53gSthu027kpaYIL9gCAro0k9ZTzkpL2gc/T75iqQakMoWzWrvqQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +signed.net. IN NS +SECTION AUTHORITY +signed.net. 120 IN NS ns.signed.net. +signed.net. 60 IN DS 16486 5 1 d98b27d62ec1be02346ca0c513a6562a03373fc3 +signed.net. 60 IN RRSIG DS 5 2 60 20110214110823 20110205110823 30899 net. JECbUqFSmPNXwG7q0wgBTXgk0u0q/5SuJh53gSthu027kpaYIL9gCAro0k9ZTzkpL2gc/T75iqQakMoWzWrvqQ== ;{id = 30899} +SECTION ADDITIONAL +ns.signed.net. 120 IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +unsigned.net. IN DS +SECTION AUTHORITY +unsigned.net. 60 IN NSEC net. NS RRSIG NSEC +unsigned.net. 60 IN RRSIG NSEC 5 2 60 20110214110823 20110205110823 30899 net. BQVqD7KBhS6+mthhFmLajE899bt4aI5FqXIR0eJqhf8MYqXYYpF+R841QjpNjRQcDKeenu4TCeA3OtlGp3FoXA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +unsigned.net. IN NS +SECTION AUTHORITY +unsigned.net. 120 IN NS ns.unsigned.net. +unsigned.net. 60 IN NSEC net. NS RRSIG NSEC +unsigned.net. 60 IN RRSIG NSEC 5 2 60 20110214110823 20110205110823 30899 net. BQVqD7KBhS6+mthhFmLajE899bt4aI5FqXIR0eJqhf8MYqXYYpF+R841QjpNjRQcDKeenu4TCeA3OtlGp3FoXA== ;{id = 30899} +SECTION ADDITIONAL +ns.unsigned.net. 120 IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.unsigned.net. +RANGE_BEGIN 0 1000 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END +RANGE_END + +; ns.signed.net. +RANGE_BEGIN 0 1000 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +signed.net. IN DNSKEY +SECTION ANSWER +signed.net. 60 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} +signed.net. 60 IN RRSIG DNSKEY 5 2 60 20110214110823 20110205110823 16486 signed.net. MSTL72Tx6duOuvU7t1WgqeidjJzPw+hR1khHiCgA07wYyjOzIMhUvSIUJElbk7znTH9I1cW+e14Gn4OeV2S/Lg== ;{id = 16486} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +RANGE_END + +; a series of queries. The first starts by priming the cache with +; the contents (that includes the signed and unsigned subdomain). +; then we probe every 10 seconds, and they must all succeed for 3 minutes, +; because in the graphs in the report there is an alternating 1 minute OK +; 1 minute servfail in the results (for BIND; this test is to make sure we +; do not suffer the same fate). + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END + +STEP 2 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END + +STEP 3 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END + +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +; after 10 seconds +STEP 10 TIME_PASSES ELAPSE 10 +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 12 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 13 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 50 IN A 10.20.30.40 +www.signed.net. 50 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 50 IN A 10.20.30.44 +ENTRY_END + +; at 50 seconds +STEP 50 TIME_PASSES ELAPSE 40 +STEP 51 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 52 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 53 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 10 IN A 10.20.30.40 +www.signed.net. 10 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 54 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 10 IN A 10.20.30.44 +ENTRY_END + +; introduce .net DS record, time at 70 s. +STEP 100 TIME_PASSES ELAPSE 20 +STEP 101 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 102 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 103 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 104 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + + +; a very long list of tests that try every 10 seconds +; no strict ttl matches so it can be copy and pasted. + +STEP 200 TIME_PASSES ELAPSE 10 +STEP 201 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 202 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 203 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 204 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 210 TIME_PASSES ELAPSE 10 +STEP 211 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 212 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 213 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 214 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 220 TIME_PASSES ELAPSE 10 +STEP 221 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 222 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 223 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 224 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 230 TIME_PASSES ELAPSE 10 +STEP 231 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 232 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 233 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 234 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 240 TIME_PASSES ELAPSE 10 +STEP 241 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 242 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 243 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 244 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 250 TIME_PASSES ELAPSE 10 +STEP 251 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 252 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 253 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 254 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 260 TIME_PASSES ELAPSE 10 +STEP 261 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 262 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 263 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 264 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 270 TIME_PASSES ELAPSE 10 +STEP 271 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 272 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 273 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 274 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 280 TIME_PASSES ELAPSE 10 +STEP 281 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 282 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 283 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 284 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 290 TIME_PASSES ELAPSE 10 +STEP 291 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 292 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 293 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 294 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 300 TIME_PASSES ELAPSE 10 +STEP 301 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 302 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 303 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 304 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 310 TIME_PASSES ELAPSE 10 +STEP 311 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 312 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 313 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 314 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 320 TIME_PASSES ELAPSE 10 +STEP 321 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 322 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 323 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 324 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 330 TIME_PASSES ELAPSE 10 +STEP 331 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 332 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 333 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 334 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 340 TIME_PASSES ELAPSE 10 +STEP 341 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 342 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 343 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 344 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 350 TIME_PASSES ELAPSE 10 +STEP 351 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 352 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 353 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 354 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 360 TIME_PASSES ELAPSE 10 +STEP 361 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 362 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 363 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 364 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 370 TIME_PASSES ELAPSE 10 +STEP 371 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 372 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 373 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 374 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 380 TIME_PASSES ELAPSE 10 +STEP 381 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 382 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 383 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 384 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 390 TIME_PASSES ELAPSE 10 +STEP 391 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 392 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 393 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 394 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 400 TIME_PASSES ELAPSE 10 +STEP 401 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 402 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 403 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 404 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 410 TIME_PASSES ELAPSE 10 +STEP 411 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 412 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 413 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 414 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 420 TIME_PASSES ELAPSE 10 +STEP 421 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 422 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 423 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 424 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 430 TIME_PASSES ELAPSE 10 +STEP 431 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 432 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 433 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 434 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 440 TIME_PASSES ELAPSE 10 +STEP 441 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 442 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 443 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 444 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 450 TIME_PASSES ELAPSE 10 +STEP 451 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 452 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 453 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 454 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 460 TIME_PASSES ELAPSE 10 +STEP 461 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 462 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 463 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 464 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 470 TIME_PASSES ELAPSE 10 +STEP 471 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 472 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 473 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 474 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 480 TIME_PASSES ELAPSE 10 +STEP 481 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 482 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 483 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 484 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + +STEP 490 TIME_PASSES ELAPSE 10 +STEP 491 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.signed.net. IN A +ENTRY_END +STEP 492 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.unsigned.net. IN A +ENTRY_END +STEP 493 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.signed.net. IN A +SECTION ANSWER +www.signed.net. 60 IN A 10.20.30.40 +www.signed.net. 60 IN RRSIG A 5 3 60 20110214110823 20110205110823 16486 signed.net. Q7leQsS7zlMGD1he8yfa8TfgSNc0boERx/qprOB691cgzD6Cnx2InP57hYgoR09iNXU8Zrng4hpF6CJLGZKhvw== ;{id = 16486} +ENTRY_END +STEP 494 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.unsigned.net. IN A +SECTION ANSWER +www.unsigned.net. 60 IN A 10.20.30.44 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/nomem_cnametopos.rpl b/external/unbound/testdata/nomem_cnametopos.rpl new file mode 100644 index 0000000..c1610d6 --- /dev/null +++ b/external/unbound/testdata/nomem_cnametopos.rpl @@ -0,0 +1,299 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + msg-cache-size: 8 + rrset-cache-size: 8 + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cname to positive without cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 5 TRAFFIC + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/nss_compile.tdir/nss_compile.dsc b/external/unbound/testdata/nss_compile.tdir/nss_compile.dsc new file mode 100644 index 0000000..6c59d24 --- /dev/null +++ b/external/unbound/testdata/nss_compile.tdir/nss_compile.dsc @@ -0,0 +1,16 @@ +BaseName: nss_compile +Version: 1.0 +Description: Compile with NSS +CreationDate: Fri Feb 8 14:40:28 CET 2013 +Maintainer: Wouter Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: nss_compile.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/nss_compile.tdir/nss_compile.test b/external/unbound/testdata/nss_compile.tdir/nss_compile.test new file mode 100644 index 0000000..82b1946 --- /dev/null +++ b/external/unbound/testdata/nss_compile.tdir/nss_compile.test @@ -0,0 +1,38 @@ +# #-- nss_compile.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +if test "`hostname`" = "open.nlnetlabs.nl"; then + echo "on open, continue test" +else + echo "not on open, no test, do this explicitly" + exit 0 +fi + +. ../common.sh +get_make +PRE="../.." + +opts=`$PRE/unbound -h | grep configured | sed -e 's/^.*options: //' | sed -e "s/'//g" ` + +function error_exit () +{ + cat config.log + echo "$1" + exit 1 +} + +mkdir testdata +cp $PRE/testdata/*.rpl testdata/. +cp $PRE/testdata/test* testdata/. + +echo ">>> $PRE/configure $opts --without-ssl --with-nss --with-libunbound-only LDFLAGS=-L/usr/local/lib/nss" 'CPPFLAGS="-I/usr/local/include/nss/nss -I/usr/local/include/nspr"' +$PRE/configure $opts --without-ssl --with-nss --with-libunbound-only LDFLAGS=-L/usr/local/lib/nss CPPFLAGS="-I/usr/local/include/nss/nss -I/usr/local/include/nspr" || error_exit "could not configure" +echo ">>> $MAKE" +$MAKE || error_exit "could not make" +echo ">>> $MAKE test" +$MAKE test || error_exit "could not make test" + +exit 0 diff --git a/external/unbound/testdata/pylib.tdir/pylib.conf b/external/unbound/testdata/pylib.tdir/pylib.conf new file mode 100644 index 0000000..82fa27a --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.conf @@ -0,0 +1,19 @@ +server: + verbosity: 2 + # num-threads: 1 + #port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + module-config: "validator iterator" + +#python: + #python-script: "pylib.py" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/pylib.tdir/pylib.dsc b/external/unbound/testdata/pylib.tdir/pylib.dsc new file mode 100644 index 0000000..fcea32b --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.dsc @@ -0,0 +1,16 @@ +BaseName: pylib +Version: 1.0 +Description: Test python wrapper for libunbound +CreationDate: Mon Apr 6 12:33:31 CEST 2009 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: pylib.pre +Post: pylib.post +Test: pylib.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/pylib.tdir/pylib.lookup.py b/external/unbound/testdata/pylib.tdir/pylib.lookup.py new file mode 100644 index 0000000..1c829bc --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.lookup.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +''' +Test for unbound lookup. +BSD licensed. +''' +import unbound + +ctx = unbound.ub_ctx() +status = ctx.config("ub.conf") +if status != 0: + print "read config failed ", status + exit(1) + +print "config created" + +status, result = ctx.resolve("www.example.com", unbound.RR_TYPE_A, unbound.RR_CLASS_IN); +if status == 0 and result.havedata: + print "Result: ", result.data.address_list +else: + print "Failed ", status, " and data ", result + +ctx = None + +exit(0) diff --git a/external/unbound/testdata/pylib.tdir/pylib.post b/external/unbound/testdata/pylib.tdir/pylib.post new file mode 100644 index 0000000..26db7e8 --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.post @@ -0,0 +1,20 @@ +# #-- pylib.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYUNBOUND 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +# kill fwder +kill_pid $FWD_PID diff --git a/external/unbound/testdata/pylib.tdir/pylib.pre b/external/unbound/testdata/pylib.tdir/pylib.pre new file mode 100644 index 0000000..01ca2b8 --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.pre @@ -0,0 +1,36 @@ +# #-- pylib.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYUNBOUND 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi +# get module python local +cp $PRE/pythonmod/unboundmodule.py . + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT pylib.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# modify config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < pylib.conf > ub.conf + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log + diff --git a/external/unbound/testdata/pylib.tdir/pylib.py b/external/unbound/testdata/pylib.tdir/pylib.py new file mode 100644 index 0000000..3f6fed1 --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +''' + ubmodule-msg.py: simple response packet logger + + Authors: Zdenek Vasicek (vasicek AT fit.vutbr.cz) + Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + + Copyright (c) 2008. All rights reserved. + + This software is open source. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Modified for unit test by Wouter Wijngaards, NLnet Labs, 2009. +''' +import os + +def init(id, cfg): + log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, cfg.python_script)) + return True + +def deinit(id): + log_info("pythonmod: deinit called, module id is %d" % id) + return True + +def inform_super(id, qstate, superqstate, qdata): + return True + +def setTTL(qstate, ttl): + """Sets return_msg TTL and all the RRs TTL""" + if qstate.return_msg: + qstate.return_msg.rep.ttl = ttl + if (qstate.return_msg.rep): + for i in range(0,qstate.return_msg.rep.rrset_count): + d = qstate.return_msg.rep.rrsets[i].entry.data + for j in range(0,d.count+d.rrsig_count): + d.rr_ttl[j] = ttl + +def dataHex(data, prefix=""): + res = "" + for i in range(0, (len(data)+15)/16): + res += "%s0x%02X | " % (prefix, i*16) + d = map(lambda x:ord(x), data[i*16:i*16+17]) + for ch in d: + res += "%02X " % ch + for i in range(0,17-len(d)): + res += " " + res += "| " + for ch in d: + if (ch < 32) or (ch > 127): + res += ". " + else: + res += "%c " % ch + res += "\n" + return res + +def printReturnMsg(qstate): + print "Return MSG rep :: flags: %04X, QDcount: %d, Security:%d, TTL=%d" % (qstate.return_msg.rep.flags, qstate.return_msg.rep.qdcount,qstate.return_msg.rep.security, qstate.return_msg.rep.ttl) + print " qinfo :: qname:",qstate.return_msg.qinfo.qname_list, qstate.return_msg.qinfo.qname_str, "type:",qstate.return_msg.qinfo.qtype_str, "class:",qstate.return_msg.qinfo.qclass_str + if (qstate.return_msg.rep): + print "RRSets:",qstate.return_msg.rep.rrset_count + prevkey = None + for i in range(0,qstate.return_msg.rep.rrset_count): + r = qstate.return_msg.rep.rrsets[i] + rk = r.rk + print i,":",rk.dname_list, rk.dname_str, "flags: %04X" % rk.flags, + print "type:",rk.type_str,"(%d)" % ntohs(rk.type), "class:",rk.rrset_class_str,"(%d)" % ntohs(rk.rrset_class) + + d = r.entry.data + print " RRDatas:",d.count+d.rrsig_count + for j in range(0,d.count+d.rrsig_count): + print " ",j,":","TTL=",d.rr_ttl[j],"RR data:" + print dataHex(d.rr_data[j]," ") + + +def operate(id, event, qstate, qdata): + log_info("pythonmod: operate called, id: %d, event:%s" % (id, strmodulevent(event))) + #print "pythonmod: per query data", qdata + + print "Query:", ''.join(map(lambda x:chr(max(32,ord(x))),qstate.qinfo.qname)), qstate.qinfo.qname_list, qstate.qinfo.qname_str, + print "Type:",qstate.qinfo.qtype_str,"(%d)" % qstate.qinfo.qtype, + print "Class:",qstate.qinfo.qclass_str,"(%d)" % qstate.qinfo.qclass + print + + if (event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS) and (qstate.qinfo.qname_str.endswith("www2.example.com.")): + print qstate.qinfo.qname_str + + qstate.ext_state[id] = MODULE_FINISHED + + msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA) #, 300) + #msg.authority.append("xxx.seznam.cz. 10 IN A 192.168.1.1") + #msg.additional.append("yyy.seznam.cz. 10 IN A 1.1.1.2.") + + # answer can be returned to the client without further checking. + + if qstate.qinfo.qtype == RR_TYPE_A: + msg.answer.append("%s 10 IN A 192.168.1.1" % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_SRV) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN SRV 0 0 80 neinfo.example.com." % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_TXT) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN TXT path=/" % qstate.qinfo.qname_str) + + if not msg.set_return_msg(qstate): + qstate.ext_state[id] = MODULE_ERROR + return True + + #qstate.return_msg.rep.security = 2 #pokud nebude nasledovat validator, je zapotrebi nastavit security, aby nebyl paket zahozen v mesh_send_reply + printReturnMsg(qstate) + + #Authoritative result can't be stored in cache + #if (not storeQueryInCache(qstate, qstate.return_msg.qinfo, qstate.return_msg.rep, 0)): + # print "Can't store in cache" + # qstate.ext_state[id] = MODULE_ERROR + # return False + #print "Store OK" + + qstate.return_rcode = RCODE_NOERROR + return True + + if event == MODULE_EVENT_NEW: + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + if event == MODULE_EVENT_MODDONE: + log_info("pythonmod: previous module done") + qstate.ext_state[id] = MODULE_FINISHED + return True + + if event == MODULE_EVENT_PASS: + log_info("pythonmod: event_pass") + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + log_err("pythonmod: BAD event") + qstate.ext_state[id] = MODULE_ERROR + return True + +log_info("pythonmod: script loaded.") diff --git a/external/unbound/testdata/pylib.tdir/pylib.test b/external/unbound/testdata/pylib.tdir/pylib.test new file mode 100644 index 0000000..96a8464 --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.test @@ -0,0 +1,40 @@ +# #-- pylib.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +if grep "define WITH_PYUNBOUND 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +if test "`uname 2>&1`" = "Darwin"; then + echo export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:../../.libs" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:../../.libs" +fi +#echo export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:../../.libs:." +#export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:../../.libs:." + +cp $PRE/libunbound/python/unbound.py . +cp $PRE/.libs/_unbound* . +cp $PRE/.libs/libunbound* . + +# do the test +echo "> pylib.lookup.py www.example.com." +./pylib.lookup.py www.example.com. | tee outfile + +echo "> cat logfiles" +cat fwd.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/pylib.tdir/pylib.testns b/external/unbound/testdata/pylib.tdir/pylib.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/pylib.tdir/pylib.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/pymod.tdir/pymod.conf b/external/unbound/testdata/pymod.tdir/pymod.conf new file mode 100644 index 0000000..b419c71 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.conf @@ -0,0 +1,19 @@ +server: + verbosity: 2 + # num-threads: 1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + module-config: "validator python iterator" + +python: + python-script: "pymod.py" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/pymod.tdir/pymod.dsc b/external/unbound/testdata/pymod.tdir/pymod.dsc new file mode 100644 index 0000000..386e058 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.dsc @@ -0,0 +1,16 @@ +BaseName: pymod +Version: 1.0 +Description: Test python module +CreationDate: Thu Apr 2 12:50:50 CEST 2009 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: pymod.pre +Post: pymod.post +Test: pymod.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/pymod.tdir/pymod.post b/external/unbound/testdata/pymod.tdir/pymod.post new file mode 100644 index 0000000..368d285 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.post @@ -0,0 +1,20 @@ +# #-- pymod.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/pymod.tdir/pymod.pre b/external/unbound/testdata/pymod.tdir/pymod.pre new file mode 100644 index 0000000..9029a87 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.pre @@ -0,0 +1,56 @@ +# #-- pymod.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi +# get module python local +cp $PRE/pythonmod/unboundmodule.py . + +if test "`uname 2>&1`" = "Darwin"; then + ldnsdir=`grep ldnsdir= ../../Makefile | sed -e 's/ldnsdir=//'` + echo export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" +fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < pymod.conf > ub.conf + +# see if config file verifies +if $PRE/unbound-checkconf ub.conf 2>&1; then + echo "checkconf OK" +else + echo "checkconf failed" + exit 1 +fi + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT pymod.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/pymod.tdir/pymod.py b/external/unbound/testdata/pymod.tdir/pymod.py new file mode 100644 index 0000000..3f6fed1 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +''' + ubmodule-msg.py: simple response packet logger + + Authors: Zdenek Vasicek (vasicek AT fit.vutbr.cz) + Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + + Copyright (c) 2008. All rights reserved. + + This software is open source. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Modified for unit test by Wouter Wijngaards, NLnet Labs, 2009. +''' +import os + +def init(id, cfg): + log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, cfg.python_script)) + return True + +def deinit(id): + log_info("pythonmod: deinit called, module id is %d" % id) + return True + +def inform_super(id, qstate, superqstate, qdata): + return True + +def setTTL(qstate, ttl): + """Sets return_msg TTL and all the RRs TTL""" + if qstate.return_msg: + qstate.return_msg.rep.ttl = ttl + if (qstate.return_msg.rep): + for i in range(0,qstate.return_msg.rep.rrset_count): + d = qstate.return_msg.rep.rrsets[i].entry.data + for j in range(0,d.count+d.rrsig_count): + d.rr_ttl[j] = ttl + +def dataHex(data, prefix=""): + res = "" + for i in range(0, (len(data)+15)/16): + res += "%s0x%02X | " % (prefix, i*16) + d = map(lambda x:ord(x), data[i*16:i*16+17]) + for ch in d: + res += "%02X " % ch + for i in range(0,17-len(d)): + res += " " + res += "| " + for ch in d: + if (ch < 32) or (ch > 127): + res += ". " + else: + res += "%c " % ch + res += "\n" + return res + +def printReturnMsg(qstate): + print "Return MSG rep :: flags: %04X, QDcount: %d, Security:%d, TTL=%d" % (qstate.return_msg.rep.flags, qstate.return_msg.rep.qdcount,qstate.return_msg.rep.security, qstate.return_msg.rep.ttl) + print " qinfo :: qname:",qstate.return_msg.qinfo.qname_list, qstate.return_msg.qinfo.qname_str, "type:",qstate.return_msg.qinfo.qtype_str, "class:",qstate.return_msg.qinfo.qclass_str + if (qstate.return_msg.rep): + print "RRSets:",qstate.return_msg.rep.rrset_count + prevkey = None + for i in range(0,qstate.return_msg.rep.rrset_count): + r = qstate.return_msg.rep.rrsets[i] + rk = r.rk + print i,":",rk.dname_list, rk.dname_str, "flags: %04X" % rk.flags, + print "type:",rk.type_str,"(%d)" % ntohs(rk.type), "class:",rk.rrset_class_str,"(%d)" % ntohs(rk.rrset_class) + + d = r.entry.data + print " RRDatas:",d.count+d.rrsig_count + for j in range(0,d.count+d.rrsig_count): + print " ",j,":","TTL=",d.rr_ttl[j],"RR data:" + print dataHex(d.rr_data[j]," ") + + +def operate(id, event, qstate, qdata): + log_info("pythonmod: operate called, id: %d, event:%s" % (id, strmodulevent(event))) + #print "pythonmod: per query data", qdata + + print "Query:", ''.join(map(lambda x:chr(max(32,ord(x))),qstate.qinfo.qname)), qstate.qinfo.qname_list, qstate.qinfo.qname_str, + print "Type:",qstate.qinfo.qtype_str,"(%d)" % qstate.qinfo.qtype, + print "Class:",qstate.qinfo.qclass_str,"(%d)" % qstate.qinfo.qclass + print + + if (event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS) and (qstate.qinfo.qname_str.endswith("www2.example.com.")): + print qstate.qinfo.qname_str + + qstate.ext_state[id] = MODULE_FINISHED + + msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA) #, 300) + #msg.authority.append("xxx.seznam.cz. 10 IN A 192.168.1.1") + #msg.additional.append("yyy.seznam.cz. 10 IN A 1.1.1.2.") + + # answer can be returned to the client without further checking. + + if qstate.qinfo.qtype == RR_TYPE_A: + msg.answer.append("%s 10 IN A 192.168.1.1" % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_SRV) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN SRV 0 0 80 neinfo.example.com." % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_TXT) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN TXT path=/" % qstate.qinfo.qname_str) + + if not msg.set_return_msg(qstate): + qstate.ext_state[id] = MODULE_ERROR + return True + + #qstate.return_msg.rep.security = 2 #pokud nebude nasledovat validator, je zapotrebi nastavit security, aby nebyl paket zahozen v mesh_send_reply + printReturnMsg(qstate) + + #Authoritative result can't be stored in cache + #if (not storeQueryInCache(qstate, qstate.return_msg.qinfo, qstate.return_msg.rep, 0)): + # print "Can't store in cache" + # qstate.ext_state[id] = MODULE_ERROR + # return False + #print "Store OK" + + qstate.return_rcode = RCODE_NOERROR + return True + + if event == MODULE_EVENT_NEW: + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + if event == MODULE_EVENT_MODDONE: + log_info("pythonmod: previous module done") + qstate.ext_state[id] = MODULE_FINISHED + return True + + if event == MODULE_EVENT_PASS: + log_info("pythonmod: event_pass") + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + log_err("pythonmod: BAD event") + qstate.ext_state[id] = MODULE_ERROR + return True + +log_info("pythonmod: script loaded.") diff --git a/external/unbound/testdata/pymod.tdir/pymod.test b/external/unbound/testdata/pymod.tdir/pymod.test new file mode 100644 index 0000000..43bf6e6 --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.test @@ -0,0 +1,56 @@ +# #-- pymod.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +if test "`uname 2>&1`" = "Darwin"; then + ldnsdir=`grep ldnsdir= ../../Makefile | sed -e 's/ldnsdir=//'` + echo export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" +fi + +# see if config file verifies +if $PRE/unbound-checkconf ub.conf; then + echo "checkconf OK" +else + echo "checkconf failed" + exit 1 +fi + +# do the test +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig www2.example.com." +dig @localhost -p $UNBOUND_PORT www2.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "192.168.1.1" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/pymod.tdir/pymod.testns b/external/unbound/testdata/pymod.tdir/pymod.testns new file mode 100644 index 0000000..55926bb --- /dev/null +++ b/external/unbound/testdata/pymod.tdir/pymod.testns @@ -0,0 +1,24 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.conf b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.conf new file mode 100644 index 0000000..3bf8df4 --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.conf @@ -0,0 +1,19 @@ +server: + verbosity: 2 + num-threads: 3 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + module-config: "validator python iterator" + +python: + python-script: "pymod_thread.py" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.dsc b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.dsc new file mode 100644 index 0000000..d2cc7f5 --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.dsc @@ -0,0 +1,16 @@ +BaseName: pymod_thread +Version: 1.0 +Description: Test python module threaded +CreationDate: Fri Mar 12 11:41:03 CET 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: pymod_thread.pre +Post: pymod_thread.post +Test: pymod_thread.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.post b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.post new file mode 100644 index 0000000..e9b3075 --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.post @@ -0,0 +1,21 @@ +# #-- pymod_thread.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +exit 0 diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.pre b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.pre new file mode 100644 index 0000000..c16362a --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.pre @@ -0,0 +1,56 @@ +# #-- pymod_thread.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +# if no python; exit +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi +# get module python local +cp $PRE/pythonmod/unboundmodule.py . + +if test "`uname 2>&1`" = "Darwin"; then + ldnsdir=`grep ldnsdir= ../../Makefile | sed -e 's/ldnsdir=//'` + echo export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" +fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < pymod_thread.conf > ub.conf + +# see if config file verifies +if $PRE/unbound-checkconf ub.conf 2>&1; then + echo "checkconf OK" +else + echo "checkconf failed" + exit 1 +fi + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT pymod_thread.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.py b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.py new file mode 100644 index 0000000..31e1d43 --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +''' + ubmodule-msg.py: simple response packet logger + + Authors: Zdenek Vasicek (vasicek AT fit.vutbr.cz) + Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + + Copyright (c) 2008. All rights reserved. + + This software is open source. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Modified for unit test by Wouter Wijngaards, NLnet Labs, 2009. +''' +import os + +def init(id, cfg): + log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, cfg.python_script)) + return True + +def deinit(id): + log_info("pythonmod: deinit called, module id is %d" % id) + return True + +def inform_super(id, qstate, superqstate, qdata): + return True + +def setTTL(qstate, ttl): + """Sets return_msg TTL and all the RRs TTL""" + if qstate.return_msg: + qstate.return_msg.rep.ttl = ttl + if (qstate.return_msg.rep): + for i in range(0,qstate.return_msg.rep.rrset_count): + d = qstate.return_msg.rep.rrsets[i].entry.data + for j in range(0,d.count+d.rrsig_count): + d.rr_ttl[j] = ttl + +def dataHex(data, prefix=""): + res = "" + for i in range(0, (len(data)+15)/16): + res += "%s0x%02X | " % (prefix, i*16) + d = map(lambda x:ord(x), data[i*16:i*16+17]) + for ch in d: + res += "%02X " % ch + for i in range(0,17-len(d)): + res += " " + res += "| " + for ch in d: + if (ch < 32) or (ch > 127): + res += ". " + else: + res += "%c " % ch + res += "\n" + return res + +def printReturnMsg(qstate): + print "Return MSG rep :: flags: %04X, QDcount: %d, Security:%d, TTL=%d" % (qstate.return_msg.rep.flags, qstate.return_msg.rep.qdcount,qstate.return_msg.rep.security, qstate.return_msg.rep.ttl) + print " qinfo :: qname:",qstate.return_msg.qinfo.qname_list, qstate.return_msg.qinfo.qname_str, "type:",qstate.return_msg.qinfo.qtype_str, "class:",qstate.return_msg.qinfo.qclass_str + if (qstate.return_msg.rep): + print "RRSets:",qstate.return_msg.rep.rrset_count + prevkey = None + for i in range(0,qstate.return_msg.rep.rrset_count): + r = qstate.return_msg.rep.rrsets[i] + rk = r.rk + print i,":",rk.dname_list, rk.dname_str, "flags: %04X" % rk.flags, + print "type:",rk.type_str,"(%d)" % ntohs(rk.type), "class:",rk.rrset_class_str,"(%d)" % ntohs(rk.rrset_class) + + d = r.entry.data + print " RRDatas:",d.count+d.rrsig_count + for j in range(0,d.count+d.rrsig_count): + print " ",j,":","TTL=",d.rr_ttl[j],"RR data:" + print dataHex(d.rr_data[j]," ") + + +def operate(id, event, qstate, qdata): + log_info("pythonmod: operate called, id: %d, event:%s" % (id, strmodulevent(event))) + #print "pythonmod: per query data", qdata + + print "Query:", ''.join(map(lambda x:chr(max(32,ord(x))),qstate.qinfo.qname)), qstate.qinfo.qname_list, qstate.qinfo.qname_str, + print "Type:",qstate.qinfo.qtype_str,"(%d)" % qstate.qinfo.qtype, + print "Class:",qstate.qinfo.qclass_str,"(%d)" % qstate.qinfo.qclass + print + + if (event == MODULE_EVENT_NEW or event == MODULE_EVENT_PASS) and (qstate.qinfo.qname_str.endswith("example.com.")): + print qstate.qinfo.qname_str + + qstate.ext_state[id] = MODULE_FINISHED + + # eat time + y = 20 + for z in range(2, 10000): + y = y*2 - z/2 + y = y/2 + z + + msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA) #, 300) + #msg.authority.append("xxx.seznam.cz. 10 IN A 192.168.1.1") + #msg.additional.append("yyy.seznam.cz. 10 IN A 1.1.1.2.") + + # answer can be returned to the client without further checking. + + if qstate.qinfo.qtype == RR_TYPE_A: + msg.answer.append("%s 10 IN A 192.168.1.1" % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_SRV) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN SRV 0 0 80 neinfo.example.com." % qstate.qinfo.qname_str) + if (qstate.qinfo.qtype == RR_TYPE_TXT) or (qstate.qinfo.qtype == RR_TYPE_ANY): + msg.answer.append("%s 10 IN TXT path=/" % qstate.qinfo.qname_str) + + if not msg.set_return_msg(qstate): + qstate.ext_state[id] = MODULE_ERROR + return True + + #qstate.return_msg.rep.security = 2 #pokud nebude nasledovat validator, je zapotrebi nastavit security, aby nebyl paket zahozen v mesh_send_reply + printReturnMsg(qstate) + + #Authoritative result can't be stored in cache + #if (not storeQueryInCache(qstate, qstate.return_msg.qinfo, qstate.return_msg.rep, 0)): + # print "Can't store in cache" + # qstate.ext_state[id] = MODULE_ERROR + # return False + #print "Store OK" + + qstate.return_rcode = RCODE_NOERROR + return True + + if event == MODULE_EVENT_NEW: + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + if event == MODULE_EVENT_MODDONE: + log_info("pythonmod: previous module done") + qstate.ext_state[id] = MODULE_FINISHED + return True + + if event == MODULE_EVENT_PASS: + log_info("pythonmod: event_pass") + qstate.ext_state[id] = MODULE_WAIT_MODULE + return True + + log_err("pythonmod: BAD event") + qstate.ext_state[id] = MODULE_ERROR + return True + +log_info("pythonmod: script loaded.") diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.test b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.test new file mode 100644 index 0000000..c6baa01 --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.test @@ -0,0 +1,67 @@ +# #-- pymod_thread.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +if grep "define WITH_PYTHONMODULE 1" $PRE/config.h; then + echo "have python module" +else + echo "no python module" + exit 0 +fi + +if test "`uname 2>&1`" = "Darwin"; then + ldnsdir=`grep ldnsdir= ../../Makefile | sed -e 's/ldnsdir=//'` + echo export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$ldnsdir/lib:../../.libs" +fi + +# see if config file verifies +if $PRE/unbound-checkconf ub.conf; then + echo "checkconf OK" +else + echo "checkconf failed" + exit 1 +fi + +# do the test +# generate some load. +echo "> dig www[1-10].example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile1 & +dig @localhost -p $UNBOUND_PORT www2.example.com. | tee outfile3 & +dig @localhost -p $UNBOUND_PORT www3.example.com. | tee outfile2 & +dig @localhost -p $UNBOUND_PORT www4.example.com. | tee outfile4 & +dig @localhost -p $UNBOUND_PORT www5.example.com. | tee outfile5 & +dig @localhost -p $UNBOUND_PORT www6.example.com. | tee outfile6 & +dig @localhost -p $UNBOUND_PORT www7.example.com. | tee outfile7 & +dig @localhost -p $UNBOUND_PORT www8.example.com. | tee outfile8 & +dig @localhost -p $UNBOUND_PORT www9.example.com. | tee outfile9 & +dig @localhost -p $UNBOUND_PORT www10.example.com. | tee outfile10 & + +wait # wait for all jobs to complete. + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +for x in outfile1 outfile2 outfile3 outfile4 outfile5; do +if grep "192.168.1.1" $x; then + echo "$x OK" +else + echo "$x Not OK" + exit 1 +fi +done + +for x in outfile6 outfile7 outfile8 outfile9 outfile10; do +if grep "192.168.1.1" $x; then + echo "$x OK" +else + echo "$x Not OK" + exit 1 +fi +done + +exit 0 diff --git a/external/unbound/testdata/pymod_thread.tdir/pymod_thread.testns b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.testns new file mode 100644 index 0000000..55926bb --- /dev/null +++ b/external/unbound/testdata/pymod_thread.tdir/pymod_thread.testns @@ -0,0 +1,24 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/refuse_xfr.rpl b/external/unbound/testdata/refuse_xfr.rpl new file mode 100644 index 0000000..0285d2a --- /dev/null +++ b/external/unbound/testdata/refuse_xfr.rpl @@ -0,0 +1,37 @@ +; config options +CONFIG_END +SCENARIO_BEGIN Test AXFR and IXFR queries. + +; AXFR +STEP 1 QUERY +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN AXFR +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR REFUSED +SECTION QUESTION +nlnetlabs.nl. IN AXFR +ENTRY_END + +; IXFR +STEP 3 QUERY +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN IXFR +SECTION AUTHORITY +nlnetlabs.nl. IN SOA mr. op. 12 0 0 0 0 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR FORMERR +SECTION QUESTION +nlnetlabs.nl. IN IXFR +SECTION AUTHORITY +nlnetlabs.nl. IN SOA mr. op. 12 0 0 0 0 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/remote-threaded.tdir/bad_control.key b/external/unbound/testdata/remote-threaded.tdir/bad_control.key new file mode 100644 index 0000000..d29cdbc --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/bad_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDti51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4G +SLOE02/hKDkdkOvaUG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtO +DWc3tXPT1IlSEN0xnAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQAB +AoGAG3w/DatfMCu/nS5OdQx9BSqPgNbnUSqux9xA0fhgPTlN0T3oRtPcqa7JUDUW +PryI/a62ry+zGkw98N2AxolCZg3N7Z3vuRx2FMcKKNwpTzDmcZW7TmMk5FPof6gE +PnYl/ff0w+kxqA+L2EexH3Xi6ApLSZcjyzKWj+dL2AuT9gkCQQD3dPitwITxgCAD +IaHw23e3FRkM/hw1Gp8bt6nbuxitVxxpO96q1EQ+fCy/mf0bMEJDp3xzMEIfP3r4 +GmNbaxa1AkEA9b8LeBLbQ2cm2+UMeUgygBsRirdUQ786auqH38Jbvi/j6S9sDl2x +q1vRtikEBZJWfkhsOzrzwFDKe1bI/EEn9wJAAzOwRA9JqRZPU7sLrWIpmmTbfh+L +neRKSsGFoSI6n4ORCouLxgoZF/XjXldPvxpQwS9ZnOPy9xSLMsqknno0QQJAeDtA +IT8Yh6GwIWWu9KeeDY8wxe1sDLlCm4yjbZZpzGMh3rSU6XJtuqjxsW3fydoO9zn3 +ugLdvvnIFxAexUwbgQJBANyM13xcObfUJOj9rjlGCh0CDh/04ONl8SH8HBnM8guA +RJI5S6vBHweVRopEZcF1sQm6wMf3ej/sGkyyNvJxRkY= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/remote-threaded.tdir/bad_control.pem b/external/unbound/testdata/remote-threaded.tdir/bad_control.pem new file mode 100644 index 0000000..e06b847 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/bad_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt +i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva +UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x +nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK +4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH +5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/remote-threaded.tdir/bad_server.key b/external/unbound/testdata/remote-threaded.tdir/bad_server.key new file mode 100644 index 0000000..0dbb134 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/bad_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC9hurNHBtB7QFEuPJOnCylUWUF2/US3v9yQQQXnstuXMQXRaq1 +1uviLmwaGurV9tngX59HITsBT74NQrtFKfEDLViLrm2arAM9Ozsn4tnv30HXPRDj +UOc1M05Q7UzjaSrOv+TkPEqyhtUyaP1DYo0bcmbxtSkYc2ZEWCwhPklUwQIDAQAB +AoGATjzZxN4ramWaNnJapJTX4U7eczK/0pB3xwSL2exVcjOdRzYdKH+WVIJxYb1m +3/jNLFCNAeH356yxeevoPr73nG75YJ9I1ZWQWTnS3SDK6JD1+3pmAD0bQWFoitpf +FoSH9H4X5gFB5vCZ99YVoYH1UXWPcgvUHwxz0voImt6lCKECQQD4YQ4A3M0+Ki8v +Hl+5FKULnS0UtBkweCvkF/X1zZRjjYr6hLnqldFkkgTBKWe17pUXX0nwRMbP1YZX +i+vDq5JNAkEAw1eYsmC0nVAMawo57N6LYavGv/n5u1cvpTpKDtn4cXH0Uqq13Kyu +2FUTzan2NhCEK78UzbWaeewBJmxYda1+RQJAdShKk6uTAEyjnwUjv8h2JWlJN2fQ +LeWxRlDrCruiz+aW9J4gl/99GoQpy/c83TshhjnDRZsbcDNWv/rXBZ/rTQJAFQva +CtX6f7yBKgM3DHtJvyM3zbVMH9Ab9QxbsE/xwZ9KeKGl6Hm+eNZpxM3cFiUfaGs0 +/ZjkZOB1m0MvILaplQJAXC3PJ/E+87banGZRJl5qtS6/HoX5lH9TPkL8Essy7ANO +2BT2OTQawD1A+VKIrQHXs085Of8tQUfrfHHt7s3Kqg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/remote-threaded.tdir/bad_server.pem b/external/unbound/testdata/remote-threaded.tdir/bad_server.pem new file mode 100644 index 0000000..983247a --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/bad_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B +RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ +DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV +Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy +zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm +O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu +oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.conf b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.conf new file mode 100644 index 0000000..da9fee1 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.conf @@ -0,0 +1,25 @@ +server: + verbosity: 2 + num-threads: 4 + outgoing-range: 16 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.dsc b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.dsc new file mode 100644 index 0000000..b3aeeba --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.dsc @@ -0,0 +1,16 @@ +BaseName: remote-threaded +Version: 1.0 +Description: remote control test with thread communication +CreationDate: Wed Dec 3 15:00:38 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: remote-threaded.pre +Post: remote-threaded.post +Test: remote-threaded.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.post b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.post new file mode 100644 index 0000000..4cccd9a --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.post @@ -0,0 +1,13 @@ +# #-- remote-threaded.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +# unbound stopped by test (if successful) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 +exit 0 diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.pre b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.pre new file mode 100644 index 0000000..76dc6b2 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.pre @@ -0,0 +1,33 @@ +# #-- remote-threaded.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT remote-threaded.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < remote-threaded.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.test b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.test new file mode 100644 index 0000000..7392fa9 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.test @@ -0,0 +1,308 @@ +# #-- remote-threaded.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# exit value is 1 on usage +$PRE/unbound-control -h +if test $? -ne 1; then + echo "wrong exit value for usage." + exit 1 +else + echo "exit value for usage: OK" +fi + +# use lock-verify if possible + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# exit value is 1 when a bad command is given. +echo "$PRE/unbound-control -c ub.conf blablargh" +$PRE/unbound-control -c ub.conf blablargh +if test $? -ne 1; then + echo "wrong exit value on error." + echo "> cat logfiles" + cat fwd.log + cat unbound.log + exit 1 +else + echo "correct exit value on error" +fi + +# reload the server. test if the server came up by putting a new +# local-data element in the server. +echo "server: local-data: 'afterreload. IN A 5.6.7.8'" >> ub.conf +echo "$PRE/unbound-control -c ub.conf reload" +$PRE/unbound-control -c ub.conf reload +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "> dig afterreload." +dig @127.0.0.1 -p $UNBOUND_PORT afterreload. | tee outfile +echo "> check answer" +if grep "5.6.7.8" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# must have had queries now. 1 since reload. +echo "$PRE/unbound-control -c ub.conf stats" +$PRE/unbound-control -c ub.conf stats > tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +if grep "^total.num.queries=[1-9][0-9]*$" tmp.$$; then + echo "OK" +else + echo "bad stats" + cat tmp.$$ + exit 1 +fi + +# verbosity +echo "$PRE/unbound-control -c ub.conf verbosity 4" +$PRE/unbound-control -c ub.conf verbosity 4 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# check syntax error in parse +echo "$PRE/unbound-control -c ub.conf verbosity jkdf" +$PRE/unbound-control -c ub.conf verbosity jkdf +if test $? -ne 1; then + echo "wrong exit value after failure" + exit 1 +fi + +# check bad credentials +cp ub.conf bad.conf +echo "remote-control:" >> bad.conf +echo " server-key-file: bad_server.key" >> bad.conf +echo " server-cert-file: bad_server.pem" >> bad.conf +echo " control-key-file: bad_control.key" >> bad.conf +echo " control-cert-file: bad_control.pem" >> bad.conf +echo "$PRE/unbound-control -c bad.conf verbosity 2" +$PRE/unbound-control -c bad.conf verbosity 2 +if test $? -ne 1; then + echo "wrong exit value after failure" + exit 1 +fi + +# create a new local zone +echo "> test of local zone" +echo "$PRE/unbound-control -c ub.conf local_zone example.net static" +$PRE/unbound-control -c ub.conf local_zone example.net static +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1" +$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# check that www.example.net exists +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# check that mail.example.net has nxdomain +echo "> dig mail.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT mail.example.net. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# remove www.example.net - check it gets nxdomain +echo "$PRE/unbound-control -c ub.conf local_data_remove www.example.net" +$PRE/unbound-control -c ub.conf local_data_remove www.example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# remove example.net - check its gone. +echo "$PRE/unbound-control -c ub.conf local_zone_remove example.net" +$PRE/unbound-control -c ub.conf local_zone_remove example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "SERVFAIL" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# dump the cache +echo "> test cache dump" +# fillup cache +echo "dig www.example.com" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. +echo "$PRE/unbound-control -c ub.conf dump_cache" +$PRE/unbound-control -c ub.conf dump_cache > tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +cat tmp.$$ +# we do not look at content. Only thread 0 content. +# because it may not be there when it is compiled with processes only. +if grep MSG_CACHE tmp.$$; then + echo "OK this is a cache dump" +else + echo "Not OK cache dump" + exit 1 +fi + +# test lookup +echo "$PRE/unbound-control -c ub.conf lookup www.example.com" +$PRE/unbound-control -c ub.conf lookup www.example.com +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +# answer to lookup is meaningless because of use a forwarder, oh well. + +# load the cache dump. +echo "$PRE/unbound-control -c ub.conf load_cache < tmp.$$" +$PRE/unbound-control -c ub.conf load_cache < tmp.$$ +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +# do not check if cache dump contents are present ; other threads +# may not have gotten it when it is compiled with processes only. + +# flushing +echo "$PRE/unbound-control -c ub.conf flush www.example.net" +$PRE/unbound-control -c ub.conf flush www.example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "$PRE/unbound-control -c ub.conf flush_type www.example.net TXT" +$PRE/unbound-control -c ub.conf flush_type www.example.net TXT +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +echo "$PRE/unbound-control -c ub.conf flush_zone example.net" +$PRE/unbound-control -c ub.conf flush_zone example.net +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +# now stop the server +echo "$PRE/unbound-control -c ub.conf stop" +$PRE/unbound-control -c ub.conf stop +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +# see if the server has really exited. +TRY_MAX=20 +for (( try=0 ; try <= $TRY_MAX ; try++ )) ; do + if kill -0 $UNBOUND_PID 2>&1 | tee tmp.$$; then + echo "not stopped yet, waiting" + sleep 1 + else + echo "stopped OK; break" + break; + fi + if grep "No such process" tmp.$$; then + echo "stopped OK; break" + break; + fi +done +if kill -0 $UNBOUND_PID; then + echo "still up!" + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "not stopped, failure" + exit 1 +else + echo "stopped OK" + + if test -f ublocktrace.0; then + if $PRE/lock-verify ublocktrace.*; then + echo "lock-verify test worked." + else + echo "lock-verify test failed." + cat fwd.log + cat unbound.log + exit 1 + fi + fi +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/external/unbound/testdata/remote-threaded.tdir/remote-threaded.testns b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.testns new file mode 100644 index 0000000..0c911ca --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/remote-threaded.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/external/unbound/testdata/remote-threaded.tdir/unbound_control.key b/external/unbound/testdata/remote-threaded.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/remote-threaded.tdir/unbound_control.pem b/external/unbound/testdata/remote-threaded.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/remote-threaded.tdir/unbound_server.key b/external/unbound/testdata/remote-threaded.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/remote-threaded.tdir/unbound_server.pem b/external/unbound/testdata/remote-threaded.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/remote-threaded.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/root_anchor.tdir/root_anchor.dsc b/external/unbound/testdata/root_anchor.tdir/root_anchor.dsc new file mode 100644 index 0000000..daf231d --- /dev/null +++ b/external/unbound/testdata/root_anchor.tdir/root_anchor.dsc @@ -0,0 +1,16 @@ +BaseName: root_anchor +Version: 1.0 +Description: check if root anchor has changed. +CreationDate: Tue Sep 28 12:43:09 CEST 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: root_anchor.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/root_anchor.tdir/root_anchor.test b/external/unbound/testdata/root_anchor.tdir/root_anchor.test new file mode 100644 index 0000000..8be248a --- /dev/null +++ b/external/unbound/testdata/root_anchor.tdir/root_anchor.test @@ -0,0 +1,51 @@ +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# only do this test if the network is up. +echo "is the net up?" +if dig @k.root-servers.net . SOA 2>&1 | grep NOERROR ; then + echo yes +else + echo no + exit 0 +fi + +# test that unbound-anchor, its builtin DNSKEY, works. +# so the https is disabled (go to 127.0.0.1@10099). +$PRE/unbound-anchor -u "127.0.0.1" -P 10099 -a test.ds -v +# check that the test.ds file is OK. +if $PRE/unbound-host -f test.ds -t SOA -v . 2>&1 | grep "(secure)"; then + echo "The builtin DS root anchors work" +else + echo "The builtin DS root anchors do not work" + exit 1 +fi + +echo "" +# test that unbound-anchor, the builtin certificate, works +# so, force https with -F and the -c is a nonexistant file +$PRE/unbound-anchor -a test.cert -c test.pem -v -F +# check that the test.cert file is OK. +if $PRE/unbound-host -f test.cert -t SOA -v . 2>&1 | grep "(secure)"; then + echo "The builtin root update certificate works" +else + echo "The builtin root update certificate does not work" + exit 1 +fi + +# use curl to see if the PGP certificate has been updated. +curl --time-cond "20170203 10:00:00" https://data.iana.org/root-anchors/icannbundle.pem > newcert +if test -n "`cat newcert`"; then + echo "icannbundle.pem has been updated" + cat newcert + echo "icannbundle.pem has been updated" + exit 1 +else + echo "icannbundle.pem has not been updated" +fi + +exit 0 diff --git a/external/unbound/testdata/root_hints.tdir/root_hints.dsc b/external/unbound/testdata/root_hints.tdir/root_hints.dsc new file mode 100644 index 0000000..5576fba --- /dev/null +++ b/external/unbound/testdata/root_hints.tdir/root_hints.dsc @@ -0,0 +1,16 @@ +BaseName: root_hints +Version: 1.0 +Description: check if root hints have changed. +CreationDate: Thu Oct 22 12:42:40 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: root_hints.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/root_hints.tdir/root_hints.test b/external/unbound/testdata/root_hints.tdir/root_hints.test new file mode 100644 index 0000000..6ae4ec7 --- /dev/null +++ b/external/unbound/testdata/root_hints.tdir/root_hints.test @@ -0,0 +1,62 @@ +# #-- 06-ianaports.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." + +# dig 9 ? +digv=`dig -v 2>&1 | wc -l` +if test $digv -ne 1; then + echo "Dig too old. skip test" + exit 0 +fi + +eval `grep ^srcdir= $PRE/Makefile` +echo "srcdir="$srcdir + +# obtain list from compiled in settings: +grep "ROOT-SERVERS.NET." $PRE/$srcdir/iterator/iter_hints.c > curlist +echo "Current list:" +cat curlist + +result="0" + +# dig all servers and check if same +for rs in A.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET.; do + + addr4=`dig +short $rs A` + addr6=`dig +short $rs AAAA` + + # all IP4 must be present as listed. + if test -z "$addr4" ; then + echo "$rs A is removed! It has changed!" + result="1" + fi + if grep $rs curlist | grep "$addr4" >/dev/null; then + echo "$rs is OK: A $addr4" + else + echo "$rs A now $addr4, it has changed!" + result="1" + fi + # if IP6 is "" then it must be "" as well in the compiled hints + if test -z "$addr6" ; then + if grep $rs curlist | grep ":" >/dev/null; then + echo "$rs AAAA now removed, it has changed!" + result="1" + else + echo $rs' is OK: AAAA ""' + fi + else + # root server has an IP6. + if grep $rs curlist | grep "$addr6" >/dev/null; then + echo "$rs is OK: AAAA $addr6" + else + echo "$rs AAAA now $addr6, it has changed!" + result="1" + fi + fi +done + +exit $result diff --git a/external/unbound/testdata/root_key_sentinel.rpl b/external/unbound/testdata/root_key_sentinel.rpl new file mode 100644 index 0000000..1b66c5a --- /dev/null +++ b/external/unbound/testdata/root_key_sentinel.rpl @@ -0,0 +1,185 @@ +; config options +server: + trust-anchor: ". 145907 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0=" + val-override-date: "20180423171826" + target-fetch-policy: "0 0 0 0 0" + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test root key sentinel (draft-ietf-dnsop-kskroll-sentinel) + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 172800 IN DNSKEY 256 3 8 AwEAAdU4aKlDgEpXWWpH5aXHJZI1Vm9Cm42mGAsqkz3akFctS6zsZHC3 pNNMug99fKa7OW+tRHIwZEc//mX8Jt6bcw5bPgRHG6u2eT8vUpbXDPVs 1ICGR6FhlwFWEOyxbIIiDfd7Eq6eALk5RNcauyE+/ZP+VdrhWZDeEWZR rPBLjByBWTHl+v/f+xvTJ3Stcq2tEqnzS2CCOr6RTJepprYhu+5Yl6aR ZmEVBK27WCW1Zrk1LekJvJXfcyKSKk19C5M5JWX58px6nB1IS0pMs6aC IK2yaQQVNUEg9XyQzBSv/rMxVNNy3VAqOjvh+OASpLMm4GECbSSe8jtj wG0I78sfMZc= +. 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0= +. 172800 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3 +/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF 0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN R1AkUTV74bU= +. 172800 IN RRSIG DNSKEY 8 0 172800 20180512000000 20180421000000 19036 . e9I0U9vHrWZQN2v3aqxnHdq9BUCO8NG+4kNsaADxOndT9bJpUneAYfDz 4EJwJggjPjt6ms3Bh2pGJVOmfnRS5LQWLBKCgi+4p/vXVajWlZmIDvRr DhyYAS9ktrRLqHvXVZhx+udfvXoFuZnWSKVDFMI2fIL9wniJKCUdQ+nu 0a/iEsDBEVmwWw7T428yIQ6+NjvYQ36cf5mbchX58CBM7KfUGnsQLIAP 5tnkHM4kdIDbGCr78RCE916blRKETrbqtNi4hHIAscesJfRJsBZ+Tlho uyQie/SjGnvRULjADS5lCWKLDBRUIMzOomK4Tekrdrxk1DwcpL68xAHt 5D19Iw== +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +root-key-sentinel-is-ta-19036. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +root-key-sentinel-is-ta-20326. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +root-key-sentinel-not-ta-19036. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +root-key-sentinel-not-ta-20326. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +ENTRY_END + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +root-key-sentinel-is-ta-19036. IN A +ENTRY_END + +; recursion happens here. +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +root-key-sentinel-is-ta-19036. IN A +SECTION ANSWER +SECTION AUTHORITY +. 3600 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +root-key-sentinel-not-ta-19036. IN A +ENTRY_END + +; recursion happens here. +STEP 22 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +root-key-sentinel-not-ta-19036. IN A +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +root-key-sentinel-is-ta-20326. IN A +ENTRY_END + +; recursion happens here. +STEP 33 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +root-key-sentinel-is-ta-20326. IN A +ENTRY_END + +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +root-key-sentinel-not-ta-20326. IN A +ENTRY_END + +; recursion happens here. +STEP 44 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +root-key-sentinel-not-ta-20326. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== +. 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== +room. 86400 IN NSEC rs. NS DS RRSIG NSEC +room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/rrset_rettl.rpl b/external/unbound/testdata/rrset_rettl.rpl new file mode 100644 index 0000000..2ae64e9 --- /dev/null +++ b/external/unbound/testdata/rrset_rettl.rpl @@ -0,0 +1,118 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN RRset TTL is not greedily updated from message. + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. 100 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. 100 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; another query passes along +STEP 6 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 7 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 8 REPLY +; This answer has a fresh TTL +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + example.com. 200 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 9 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + example.com. 100 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; original www.example.com query +STEP 10 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END + +; immediate answer without an OUT_QUERY happening (checked on exit) +; also, the answer does not have AA set +; NS rrset has not been updated. No greedy TTL has happened. +STEP 11 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. 100 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/rrset_untrusted.rpl b/external/unbound/testdata/rrset_untrusted.rpl new file mode 100644 index 0000000..2325548 --- /dev/null +++ b/external/unbound/testdata/rrset_untrusted.rpl @@ -0,0 +1,119 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN Untrusted rrset not used for update + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; another query passes along +STEP 6 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 7 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 8 REPLY +; This answer has updated information on ns2.example.com. +; But it is nerfed into the additional. Must be ignored per rfc2181. +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + SECTION ADDITIONAL + example.com. IN NS ns.eeeek.com. + example.com. IN NS ns2.eeeek.com. + ns.eeeek.com. IN A 55.44.33.22 + ns2.eeeek.com. IN A 55.44.33.24 +ENTRY_END +STEP 9 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + SECTION ADDITIONAL +ENTRY_END + + +; original www.example.com query +STEP 10 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; immediate answer without an OUT_QUERY happening (checked on exit) +; also, the answer does not have AA set +; NS rrset has not been updated from the additional seen before. +STEP 11 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/rrset_updated.rpl b/external/unbound/testdata/rrset_updated.rpl new file mode 100644 index 0000000..4e877df --- /dev/null +++ b/external/unbound/testdata/rrset_updated.rpl @@ -0,0 +1,123 @@ +; This is a comment. +; config options go here. +forward-zone: name: "." forward-addr: 216.0.0.1 +CONFIG_END + +SCENARIO_BEGIN RRset is updated from other message that passes by. + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; the query is sent to the forwarder - no cache yet. +STEP 2 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + www.example.com. IN A +ENTRY_END +STEP 3 REPLY +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +; another query passes along +STEP 6 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 7 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH qname qtype opcode + SECTION QUESTION + bla.example.com. IN A +ENTRY_END +STEP 8 REPLY +; This answer has updated information on ns2.example.com. +ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + ; authoritative answer + REPLY QR AA RD RA NOERROR + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. IN NS ns2.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 + ns2.example.com. IN A 10.20.30.53 +ENTRY_END +STEP 9 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + bla.example.com. IN A + SECTION ANSWER + bla.example.com. IN A 10.20.30.140 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. IN NS ns2.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 + ns2.example.com. IN A 10.20.30.53 +ENTRY_END + + +; original www.example.com query +STEP 10 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A +ENTRY_END +; immediate answer without an OUT_QUERY happening (checked on exit) +; also, the answer does not have AA set +; NS rrset has been updated. +STEP 11 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. IN NS ns2.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 10.20.30.50 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/speed_cache.tdir/makeqs.c b/external/unbound/testdata/speed_cache.tdir/makeqs.c new file mode 100644 index 0000000..8e6179f --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/makeqs.c @@ -0,0 +1,14 @@ +/** + * \file + * This file creates queries for the speed test + */ +#include +#include +/** main program to create queries, pass the number of them. */ +int main(int argc, char** argv) { + int i; + int max = atoi(argv[1]); + for(i=0; imakeqs.c < +#include +int main(int argc, char** argv) { + int i; + int max = atoi(argv[1]); + for(i=0; i $2 + #while test $i -lt $1; do + #echo "a$i.example.com IN A" >> $2 + #i=`expr $i + 1` + #done +#} + +./makeqs 10 > q10.txt +cat q10.txt +./makeqs 100 > q100.txt +./makeqs 1000 > q1000.txt +./makeqs 10000 > q10000.txt +./makeqs 100000 > q100000.txt +#./makeqs 1000000 > q1000000.txt +#./makeqs 10000000 > q10000000.txt diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.conf b/external/unbound/testdata/speed_cache.tdir/speed_cache.conf new file mode 100644 index 0000000..64cf30b --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.conf @@ -0,0 +1,17 @@ +server: + verbosity: 0 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + rrset-cache-size: 100k + msg-cache-size: 100k +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.dsc b/external/unbound/testdata/speed_cache.tdir/speed_cache.dsc new file mode 100644 index 0000000..9171dd2 --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.dsc @@ -0,0 +1,16 @@ +BaseName: speed_cache +Version: 1.0 +Description: Speed test with cache sizes +CreationDate: Fri Feb 15 15:46:25 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: speed_cache.pre +Post: speed_cache.post +Test: speed_cache.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.post b/external/unbound/testdata/speed_cache.tdir/speed_cache.post new file mode 100644 index 0000000..3ca4a4b --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.post @@ -0,0 +1,10 @@ +# #-- speed_cache.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.pre b/external/unbound/testdata/speed_cache.tdir/speed_cache.pre new file mode 100644 index 0000000..fc7906e --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.pre @@ -0,0 +1,31 @@ +# #-- speed_cache.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT speed_cache.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < speed_cache.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.test b/external/unbound/testdata/speed_cache.tdir/speed_cache.test new file mode 100644 index 0000000..a45d443 --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.test @@ -0,0 +1,79 @@ +# #-- speed_cache.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +# make tool +get_make +(cd $PRE; $MAKE perf) + +get_gcc +$CC -o makeqs makeqs.c +if test $? -ne 0; then + echo "could not compile makeqs" + exit 1 +fi + +./makeqs 10 > q10.txt +cat q10.txt +./makeqs 100 > q100.txt +./makeqs 1000 > q1000.txt +./makeqs 10000 > q10000.txt +#./makeqs 100000 > q100000.txt +#./makeqs 1000000 > q1000000.txt +#./makeqs 10000000 > q10000000.txt + +# seconds per test +dur=1 + +# do the test +echo "> perf test ldns-testns" +$PRE/perf -d $dur -a "www.example.com IN A" 127.0.0.1@$FWD_PORT 2>&1 | tee outfile + +echo "> perf test cache-1" +$PRE/perf -d $dur -a "www.example.com IN A" 127.0.0.1@$UNBOUND_PORT 2>&1 | tee outfile +echo -n "cache-size-1 " >> ../.perfstats.txt +grep "average qps" outfile >> ../.perfstats.txt + +# with $1=number $2=pretty-str $3=queryfile +function perfnum() { + echo "" + echo "> perf test $1 $2" + $PRE/perf -d $dur -f $3 127.0.0.1@$UNBOUND_PORT 2>&1 | tee outfile + if test -n "$2"; then + echo -n "$2 " >> ../.perfstats.txt + grep "average qps" outfile >> ../.perfstats.txt + fi +} + +function perftns() { + echo "" + echo "> perf testns $1 $2" + $PRE/perf -d $dur -f $3 127.0.0.1@$FWD_PORT 2>&1 | tee outfile +} + +#perfnum 10 "" q10.txt +perfnum 100 "cache-suffices" q100.txt +#perfnum 1000 "" q1000.txt +perfnum 10000 "cache-toosmall" q10000.txt +#perfnum 100000 "100k" q100000.txt +#perfnum 1000000 "1m" q1000000.txt +#perfnum 1000000 "10m" q10000000.txt + +#perftns 10 "10" q10.txt +#perftns 100 "100" q100.txt +perftns 1000 "1k" q1000.txt +#perftns 10000 "10k" q10000.txt +#perftns 100000 "100k" q100000.txt +#perftns 1000000 "1m" q1000000.txt +#perftns 1000000 "10m" q10000000.txt + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +rm -f q*.txt +exit 0 diff --git a/external/unbound/testdata/speed_cache.tdir/speed_cache.testns b/external/unbound/testdata/speed_cache.tdir/speed_cache.testns new file mode 100644 index 0000000..1293c24 --- /dev/null +++ b/external/unbound/testdata/speed_cache.tdir/speed_cache.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +www IN A +SECTION AUTHORITY +@ IN SOA ns hostmaster 2008021401 1800 900 604800 86400 +ENTRY_END + diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.conf b/external/unbound/testdata/speed_local.tdir/speed_local.conf new file mode 100644 index 0000000..bfc1007 --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.conf @@ -0,0 +1,15 @@ +server: + verbosity: 1 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.dsc b/external/unbound/testdata/speed_local.tdir/speed_local.dsc new file mode 100644 index 0000000..7b4076f --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.dsc @@ -0,0 +1,16 @@ +BaseName: speed_local +Version: 1.0 +Description: Speed test with localhost query. +CreationDate: Thu Feb 14 16:51:55 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: speed_local.pre +Post: speed_local.post +Test: speed_local.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.post b/external/unbound/testdata/speed_local.tdir/speed_local.post new file mode 100644 index 0000000..dc88245 --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.post @@ -0,0 +1,9 @@ +# #-- speed_local.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.pre b/external/unbound/testdata/speed_local.tdir/speed_local.pre new file mode 100644 index 0000000..712fde6 --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.pre @@ -0,0 +1,23 @@ +# #-- speed_local.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < speed_local.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.test b/external/unbound/testdata/speed_local.tdir/speed_local.test new file mode 100644 index 0000000..684b3c5 --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.test @@ -0,0 +1,43 @@ +# #-- speed_local.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE perf) + +echo "> perf version.server" +$PRE/perf -d 1 -a "version.server CH TXT -" 127.0.0.1@$UNBOUND_PORT 2>&1 | +tee outfile + +echo -n "version-server " > line.txt +if grep "average qps" outfile >> line.txt 2>&1; then + echo "OK" +else + echo "> cat logfiles" + cat unbound.log + echo "Not OK" + exit 1 +fi + + +echo "> perf localhost" +$PRE/perf -d 1 -a "localhost IN A -" 127.0.0.1@$UNBOUND_PORT 2>&1 | +tee outfile + +echo -n "localhost-addr " >> line.txt +if grep "average qps" outfile >> line.txt 2>&1; then + echo "OK" +else + echo "> cat logfiles" + cat unbound.log + echo "Not OK" + exit 1 +fi + +cat line.txt >> ../.perfstats.txt + +exit 0 diff --git a/external/unbound/testdata/speed_local.tdir/speed_local.testns b/external/unbound/testdata/speed_local.tdir/speed_local.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/speed_local.tdir/speed_local.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.conf b/external/unbound/testdata/stat_timer.tdir/stat_timer.conf new file mode 100644 index 0000000..8245647 --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.conf @@ -0,0 +1,16 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + statistics-interval: 1 +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" + diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.dsc b/external/unbound/testdata/stat_timer.tdir/stat_timer.dsc new file mode 100644 index 0000000..3d6f23e --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.dsc @@ -0,0 +1,16 @@ +BaseName: stat_timer +Version: 1.0 +Description: Test statistics-interval timer. +CreationDate: Tue Feb 5 14:41:10 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stat_timer.pre +Post: stat_timer.post +Test: stat_timer.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.post b/external/unbound/testdata/stat_timer.tdir/stat_timer.post new file mode 100644 index 0000000..0a9d9ac --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.post @@ -0,0 +1,11 @@ +# #-- stat_timer.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID + diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.pre b/external/unbound/testdata/stat_timer.tdir/stat_timer.pre new file mode 100644 index 0000000..284e110 --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.pre @@ -0,0 +1,31 @@ +# #-- stat_timer.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stat_timer.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < stat_timer.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.test b/external/unbound/testdata/stat_timer.tdir/stat_timer.test new file mode 100644 index 0000000..8a84c3f --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.test @@ -0,0 +1,40 @@ +# #-- stat_timer.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# test if unbound is up +echo "> dig www.example.com." +dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +# wait for statistics timer to go off a couple times. +sleep 5 + +n=`grep "server stats" unbound.log | wc | awk '{print $1}'` +echo "counted $n stat lines" +if test $n -gt 6; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +exit 0 diff --git a/external/unbound/testdata/stat_timer.tdir/stat_timer.testns b/external/unbound/testdata/stat_timer.tdir/stat_timer.testns new file mode 100644 index 0000000..f2a700c --- /dev/null +++ b/external/unbound/testdata/stat_timer.tdir/stat_timer.testns @@ -0,0 +1,14 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + diff --git a/external/unbound/testdata/stop_nxdomain.rpl b/external/unbound/testdata/stop_nxdomain.rpl new file mode 100644 index 0000000..b503dfe --- /dev/null +++ b/external/unbound/testdata/stop_nxdomain.rpl @@ -0,0 +1,96 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + harden-below-nxdomain: yes + trust-anchor: ". IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test stop cache search on nxdomain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 3600 IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30900 (ksk), size = 512b} +. 3600 IN RRSIG DNSKEY 5 0 3600 20070926134150 20070829134150 30900 . BlVcSh8xSgm7ne+XVCJwNHQKjk5kTJgG4Fa3sOSfp3YUjb2YclmVWyIw7XEHl0/C6CN5gdy18idnM6vT6Hy42A== ;{id = 30900} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +example.local. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +. 86400 IN RRSIG SOA 5 0 86400 20070926134150 20070829134150 30900 . bOYbFZZp7vWWC2oxV+kph+YXjoQj2f6QJktlgmzRI7oReFX9jy/LibTPQi/sW0SGHpLaj3G5p4IfIlBibne4DA== ;{id = 30900} +. 86400 IN NSEC ac. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 5 0 86400 20070926134150 20070829134150 30900 . U+/m5+FmczzkosEx1aTP7MK/F3PpcKWct8CzM1jhjwNe2RlnW7qFe0IH8SLzD/elvxDTQMpJSMlKOhUUdapB8g== ;{id = 30900} +lk. 86400 IN NSEC lr. NS DS RRSIG NSEC +lk. 86400 IN RRSIG NSEC 5 1 86400 20070926134150 20070829134150 30900 . j6Pw5Eu9vGHDJcckTSWa8YD1b7FV7c/Z8aVkLfJCH+iPcaa40/LSp784+t2PnAAXL8fgriNL6jF/ve1rti3ANQ== ;{id = 30900} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.local. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +example.local. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +foo.example.local. IN A +ENTRY_END + +; this query does not get sent to K-ROOT. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +foo.example.local. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/stop_nxdomain_minimised.rpl b/external/unbound/testdata/stop_nxdomain_minimised.rpl new file mode 100644 index 0000000..0de22ed --- /dev/null +++ b/external/unbound/testdata/stop_nxdomain_minimised.rpl @@ -0,0 +1,112 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + harden-below-nxdomain: yes + qname-minimisation: yes + trust-anchor: ". IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +stub-zone: + name: "anotherexample.local." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test stop cache search on nxdomain for QNAME minimised query + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN DNSKEY +SECTION ANSWER +. 3600 IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30900 (ksk), size = 512b} +. 3600 IN RRSIG DNSKEY 5 0 3600 20070926134150 20070829134150 30900 . BlVcSh8xSgm7ne+XVCJwNHQKjk5kTJgG4Fa3sOSfp3YUjb2YclmVWyIw7XEHl0/C6CN5gdy18idnM6vT6Hy42A== ;{id = 30900} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +local. IN A +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +. 86400 IN RRSIG SOA 5 0 86400 20070926134150 20070829134150 30900 . bOYbFZZp7vWWC2oxV+kph+YXjoQj2f6QJktlgmzRI7oReFX9jy/LibTPQi/sW0SGHpLaj3G5p4IfIlBibne4DA== ;{id = 30900} +. 86400 IN NSEC ac. NS SOA RRSIG NSEC DNSKEY +. 86400 IN RRSIG NSEC 5 0 86400 20070926134150 20070829134150 30900 . U+/m5+FmczzkosEx1aTP7MK/F3PpcKWct8CzM1jhjwNe2RlnW7qFe0IH8SLzD/elvxDTQMpJSMlKOhUUdapB8g== ;{id = 30900} +lk. 86400 IN NSEC lr. NS DS RRSIG NSEC +lk. 86400 IN RRSIG NSEC 5 1 86400 20070926134150 20070829134150 30900 . j6Pw5Eu9vGHDJcckTSWa8YD1b7FV7c/Z8aVkLfJCH+iPcaa40/LSp784+t2PnAAXL8fgriNL6jF/ve1rti3ANQ== ;{id = 30900} +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +anotherexample.local. IN TXT +SECTION ANSWER +anotherexample.local. 86400 IN TXT "should not resolve this" +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.local. IN TXT +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +example.local. IN TXT +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +anotherexample.local. IN TXT +ENTRY_END + +; query should be answered using NXDOMAIN for local in cache +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +anotherexample.local. IN TXT +SECTION AUTHORITY +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010111601 1800 900 604800 86400 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.clie.conf b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.clie.conf new file mode 100644 index 0000000..4643c6d --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.clie.conf @@ -0,0 +1,18 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @CLIEPORT@ + use-syslog: no + directory: . + pidfile: "unbound-clie.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + ssl-upstream: yes + tls-cert-bundle: unbound_server.pem + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@SERVPORT@#unbound" diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.dsc b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.dsc new file mode 100644 index 0000000..ee79484 --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.dsc @@ -0,0 +1,16 @@ +BaseName: stream_ssl +Version: 1.0 +Description: Stream queries over SSL channel. +CreationDate: Wed Nov 9 14:02:31 CET 2011 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stream_ssl.pre +Post: stream_ssl.post +Test: stream_ssl.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.post b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.post new file mode 100644 index 0000000..4cdbe72 --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.post @@ -0,0 +1,10 @@ +# #-- stream_ssl.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $UNBOUNDSERV_PID +kill_pid $UNBOUNDCLIE_PID diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.pre b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.pre new file mode 100644 index 0000000..200d27c --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.pre @@ -0,0 +1,29 @@ +# #-- stream_ssl.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +SERV_PORT=$RND_PORT +CLIE_PORT=$(($RND_PORT + 1)) +echo "SERV_PORT=$SERV_PORT" >> .tpkg.var.test +echo "CLIE_PORT=$CLIE_PORT" >> .tpkg.var.test + +# make config files +sed -e 's/@SERVPORT\@/'$SERV_PORT'/' -e 's/@CLIEPORT\@/'$CLIE_PORT'/' < stream_ssl.serv.conf > ubserv.conf +sed -e 's/@SERVPORT\@/'$SERV_PORT'/' -e 's/@CLIEPORT\@/'$CLIE_PORT'/' < stream_ssl.clie.conf > ubclie.conf + +# start unbound in the background +PRE="../.." +$PRE/unbound -d -v -v -v -v -c ubserv.conf >unboundserv.log 2>&1 & +UNBOUNDSERV_PID=$! +echo "UNBOUNDSERV_PID=$UNBOUNDSERV_PID" >> .tpkg.var.test +$PRE/unbound -d -v -v -v -v -c ubclie.conf >unboundclie.log 2>&1 & +UNBOUNDCLIE_PID=$! +echo "UNBOUNDCLIE_PID=$UNBOUNDCLIE_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unboundserv.log +wait_unbound_up unboundclie.log diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.serv.conf b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.serv.conf new file mode 100644 index 0000000..9dd169f --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.serv.conf @@ -0,0 +1,20 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @SERVPORT@ + use-syslog: no + directory: . + pidfile: "unbound-serv.pid" + chroot: "" + username: "" + do-not-query-localhost: yes + local-data: "www.example.com. IN A 10.20.30.40" + ssl-port: @SERVPORT@ + ssl-service-key: "unbound_server.key" + ssl-service-pem: "unbound_server.pem" + +# no other queries should reach here. +forward-zone: + name: "." + forward-addr: "127.0.0.1" diff --git a/external/unbound/testdata/stream_ssl.tdir/stream_ssl.test b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.test new file mode 100644 index 0000000..08bbcde --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/stream_ssl.test @@ -0,0 +1,74 @@ +# #-- stream_ssl.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE streamtcp) + +# first test streamtcp against the server unbound. +echo "> streamtcp -s www.example.com A IN" +$PRE/streamtcp -s -f 127.0.0.1@$SERV_PORT www.example.com. A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + echo "SSLSERVICE" + cat unboundserv.log + echo "SSLCLIENT" + cat unboundclie.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +echo "SSLSERVICE" +cat unboundserv.log +echo "SSLCLIENT" +cat unboundclie.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +rm -f outfile + +# test client unbound (no SSL towards it, but it does SSL to the SSL service) +echo "> dig www.example.com A IN" +dig @127.0.0.1 -p $CLIE_PORT www.example.com. >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + echo "SSLSERVICE" + cat unboundserv.log + echo "SSLCLIENT" + cat unboundclie.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +echo "SSLSERVICE" +cat unboundserv.log +echo "SSLCLIENT" +cat unboundclie.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/stream_ssl.tdir/unbound_control.key b/external/unbound/testdata/stream_ssl.tdir/unbound_control.key new file mode 100644 index 0000000..d7c43a0 --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/stream_ssl.tdir/unbound_control.pem b/external/unbound/testdata/stream_ssl.tdir/unbound_control.pem new file mode 100644 index 0000000..8f1ba87 --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/stream_ssl.tdir/unbound_server.key b/external/unbound/testdata/stream_ssl.tdir/unbound_server.key new file mode 100644 index 0000000..4256c42 --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/external/unbound/testdata/stream_ssl.tdir/unbound_server.pem b/external/unbound/testdata/stream_ssl.tdir/unbound_server.pem new file mode 100644 index 0000000..aeda3ff --- /dev/null +++ b/external/unbound/testdata/stream_ssl.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.conf b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.conf new file mode 100644 index 0000000..2b90064 --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.conf @@ -0,0 +1,14 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.dsc b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.dsc new file mode 100644 index 0000000..3fce8b5 --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.dsc @@ -0,0 +1,16 @@ +BaseName: stream_tcp +Version: 1.0 +Description: Stream several queries over a TCP channel. +CreationDate: Fri Feb 8 11:09:09 CET 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stream_tcp.pre +Post: stream_tcp.post +Test: stream_tcp.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.post b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.post new file mode 100644 index 0000000..17f1e70 --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.post @@ -0,0 +1,10 @@ +# #-- stream_tcp.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.pre b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.pre new file mode 100644 index 0000000..4c2156c --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.pre @@ -0,0 +1,30 @@ +# #-- stream_tcp.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stream_tcp.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < stream_tcp.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -v -v -v -v -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.test b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.test new file mode 100644 index 0000000..695cb0c --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.test @@ -0,0 +1,79 @@ +# #-- stream_tcp.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE streamtcp) + +# first test a single TCP query. +echo "> query www.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +# test more +echo "" +echo "" +echo "> query www.example.com www2.example.com www3.example.com" +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN www2.example.com. A IN www3.example.com A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +if grep "10.20.30.42" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +if grep "10.20.30.43" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/stream_tcp.tdir/stream_tcp.testns b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.testns new file mode 100644 index 0000000..fefbcc7 --- /dev/null +++ b/external/unbound/testdata/stream_tcp.tdir/stream_tcp.testns @@ -0,0 +1,34 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.conf b/external/unbound/testdata/stub_udp.tdir/stub_udp.conf new file mode 100644 index 0000000..c8e2ae2 --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.conf @@ -0,0 +1,18 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +stub-zone: + name: "example.com" + stub-addr: "127.0.0.1@@TOPORT@" +# a k a root hints +stub-zone: + name: "." + stub-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.dsc b/external/unbound/testdata/stub_udp.tdir/stub_udp.dsc new file mode 100644 index 0000000..c76c899 --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.dsc @@ -0,0 +1,16 @@ +BaseName: stub_udp +Version: 1.0 +Description: Stub server contacted via UDP. +CreationDate: Tue Sep 30 15:10:00 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stub_udp.pre +Post: stub_udp.post +Test: stub_udp.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.post b/external/unbound/testdata/stub_udp.tdir/stub_udp.post new file mode 100644 index 0000000..c9216ed --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.post @@ -0,0 +1,10 @@ +# #-- stub_udp.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.pre b/external/unbound/testdata/stub_udp.tdir/stub_udp.pre new file mode 100644 index 0000000..d9dcaad --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.pre @@ -0,0 +1,35 @@ +# #-- stub_udp.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +. ../common.sh + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stub_udp.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < stub_udp.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test + +# wait for forwarder to come up +wait_ldns_testns_up fwd.log + +# wait for unbound to come up +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.test b/external/unbound/testdata/stub_udp.tdir/stub_udp.test new file mode 100644 index 0000000..c417d2a --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.test @@ -0,0 +1,37 @@ +# #-- stub_udp.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + + +# check delegations from cache by doing second test +echo "> dig mail.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT mail.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.66" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/stub_udp.tdir/stub_udp.testns b/external/unbound/testdata/stub_udp.tdir/stub_udp.testns new file mode 100644 index 0000000..5d581b0 --- /dev/null +++ b/external/unbound/testdata/stub_udp.tdir/stub_udp.testns @@ -0,0 +1,46 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +mail IN A +SECTION ANSWER +mail IN A 10.20.30.66 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +; root prime +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS root.server. +SECTION AUTHORITY +SECTION ADDITIONAL +root.server. IN A 127.0.0.1 +ENTRY_END + diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.conf b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.conf new file mode 100644 index 0000000..a037908 --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.conf @@ -0,0 +1,19 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: ::1 + outgoing-interface: ::1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +stub-zone: + name: "example.com" + stub-addr: "::1@@TOPORT@" +# a k a root hints +stub-zone: + name: "." + stub-addr: "::1@@TOPORT@" diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.dsc b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.dsc new file mode 100644 index 0000000..7f73c58 --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.dsc @@ -0,0 +1,16 @@ +BaseName: stub_udp6 +Version: 1.0 +Description: Stub server contacted via UDP over IPv6. +CreationDate: Wed Mar 10 13:33:06 CET 2010 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stub_udp6.pre +Post: stub_udp6.post +Test: stub_udp6.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.post b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.post new file mode 100644 index 0000000..e25670b --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.post @@ -0,0 +1,10 @@ +# #-- stub_udp6.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.pre b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.pre new file mode 100644 index 0000000..209ab24 --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.pre @@ -0,0 +1,31 @@ +# #-- stub_udp6.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -6 -p $FWD_PORT stub_udp6.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < stub_udp6.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.test b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.test new file mode 100644 index 0000000..5336c8e --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.test @@ -0,0 +1,37 @@ +# #-- stub_udp6.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +# do the test +echo "> dig www.example.com." +dig @::1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + + +# check delegations from cache by doing second test +echo "> dig mail.example.com." +dig @::1 -p $UNBOUND_PORT mail.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.66" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/stub_udp6.tdir/stub_udp6.testns b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.testns new file mode 100644 index 0000000..5d581b0 --- /dev/null +++ b/external/unbound/testdata/stub_udp6.tdir/stub_udp6.testns @@ -0,0 +1,46 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +mail IN A +SECTION ANSWER +mail IN A 10.20.30.66 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +; root prime +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS root.server. +SECTION AUTHORITY +SECTION ADDITIONAL +root.server. IN A 127.0.0.1 +ENTRY_END + diff --git a/external/unbound/testdata/subnet_cached.crpl b/external/unbound/testdata/subnet_cached.crpl new file mode 100644 index 0000000..3d4fd9a --- /dev/null +++ b/external/unbound/testdata/subnet_cached.crpl @@ -0,0 +1,236 @@ +; Ask the same question twice. Check to see second is answered +; from cache + +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 17 + module-config: "subnetcache validator iterator" + verbosity: 3 + access-control: 127.0.0.1 allow_snoop + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to DNSKEY priming query + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN DNSKEY + SECTION ANSWER + example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} + example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + HEX_ANSWER_BEGIN; + 00 00 01 00 00 01 00 00 ;ID 0 + 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) + 07 65 78 61 6d 70 6c 65 + 03 63 6f 6d 00 00 01 00 + 01 00 00 29 10 00 00 00 + 80 00 00 0b + + 00 08 00 07 ; OPC, optlen + 00 01 11 00 ; ip4, scope 17, source 0 + 7f 00 00 ;127.0.0.0/17 + HEX_ANSWER_END +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RD RA AD NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 11 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +STEP 11 QUERY + +ENTRY_BEGIN + HEX_ANSWER_BEGIN; + 00 00 00 00 00 01 00 00 ;ID 0, no RD + 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) + 07 65 78 61 6d 70 6c 65 + 03 63 6f 6d 00 00 01 00 + 01 00 00 29 10 00 00 00 + 80 00 00 0b + + 00 08 00 07 ; OPC, optlen + 00 01 12 00 ; ip4, scope 18, source 0 + 7f 00 00 ;127.0.0.0/18 + HEX_ANSWER_END +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RA AD NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 12 11 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_derived.crpl b/external/unbound/testdata/subnet_derived.crpl new file mode 100644 index 0000000..6ff626a --- /dev/null +++ b/external/unbound/testdata/subnet_derived.crpl @@ -0,0 +1,164 @@ +server: + send-client-subnet: 5.0.15.10 + send-client-subnet: 193.0.14.129 + max-client-subnet-ipv4: 21 + verbosity: 3 + module-config: "subnetcache validator iterator" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Must not send subnet option for 'derived' queries. + +RANGE_BEGIN 0 100 + + ADDRESS 193.0.14.129 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 192.5.6.30 + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 5.0.15.10 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 5.0.15.10 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION ANSWER + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ENTRY_END + +RANGE_END + +;; ---------------------------------------- + +STEP 1 QUERY + + ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A + ENTRY_END + +STEP 10 CHECK_ANSWER + + ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION AUTHORITY + SECTION ADDITIONAL + ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_format_ip4.crpl b/external/unbound/testdata/subnet_format_ip4.crpl new file mode 100644 index 0000000..cd1c858 --- /dev/null +++ b/external/unbound/testdata/subnet_format_ip4.crpl @@ -0,0 +1,161 @@ +server: + send-client-subnet: 5.0.15.10 + max-client-subnet-ipv4: 21 + verbosity: 3 + module-config: "subnetcache validator iterator" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Subnet option ONLY in final query + +RANGE_BEGIN 0 100 + + ADDRESS 193.0.14.129 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 192.5.6.30 + + ENTRY_BEGIN + MATCH opcode opcode qtype qname ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 5.0.15.10 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION ANSWER + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ENTRY_END + +RANGE_END + +;; ---------------------------------------- + +STEP 1 QUERY + + ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A + ENTRY_END + +STEP 10 CHECK_ANSWER + + ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION AUTHORITY + SECTION ADDITIONAL + ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_max_source.crpl b/external/unbound/testdata/subnet_max_source.crpl new file mode 100644 index 0000000..aae1f1a --- /dev/null +++ b/external/unbound/testdata/subnet_max_source.crpl @@ -0,0 +1,232 @@ +; When the triggering query includes ECS option, source prefix-length should +; be set to the shorter of the incoming query or server maximum cacheable prefix +; length + +server: + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 17 + module-config: "subnetcache validator iterator" + verbosity: 3 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test shortest source prefix-length + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 06 ; option length + 00 01 ; Family + 10 00 ; source mask, scopemask + 7f 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; client send /18, we expect /17 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.50 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.1.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 00 ; source mask, scopemask + 7f 01 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + HEX_ANSWER_BEGIN; + 00 00 01 00 00 01 00 00 ;ID 0 + 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) + 07 65 78 61 6d 70 6c 65 + 03 63 6f 6d 00 00 01 00 + 01 00 00 29 10 00 00 00 + 80 00 00 0a + + 00 08 00 06 ; OPC, optlen + 00 01 10 00 ; ip4, scope 16, source 0 + 7f 00 ;127.0.0.0/16 + HEX_ANSWER_END +ENTRY_END + + + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 06 ; option length + 00 01 ; Family + 10 10 ; source mask, scopemask + 7f 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 11 QUERY +ENTRY_BEGIN + HEX_ANSWER_BEGIN; + 00 00 01 00 00 01 00 00 ;ID 0 + 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) + 07 65 78 61 6d 70 6c 65 + 03 63 6f 6d 00 00 01 00 + 01 00 00 29 10 00 00 00 + 80 00 00 0b + + 00 08 00 07 ; OPC, optlen + 00 01 12 00 ; ip4, scope 18, source 0 + 7f 01 00 ;127.1.0.0/18 + HEX_ANSWER_END +ENTRY_END + + + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.50 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.1.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 12 11 ; source mask, scopemask + 7f 01 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_not_whitelisted.crpl b/external/unbound/testdata/subnet_not_whitelisted.crpl new file mode 100644 index 0000000..545b019 --- /dev/null +++ b/external/unbound/testdata/subnet_not_whitelisted.crpl @@ -0,0 +1,157 @@ +server: + send-client-subnet: 9.9.9.9/32 + client-subnet-opcode: 20730 + max-client-subnet-ipv4: 21 + verbosity: 3 + module-config: "subnetcache validator iterator" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Subnet option MUST NOT be send to any host + +RANGE_BEGIN 0 100 + + ADDRESS 193.0.14.129 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 192.5.6.30 + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 5.0.15.10 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION ANSWER + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + +RANGE_END + +;; ---------------------------------------- + +STEP 1 QUERY + + ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A + ENTRY_END + +STEP 10 CHECK_ANSWER + + ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION AUTHORITY + SECTION ADDITIONAL + ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_val_positive.crpl b/external/unbound/testdata/subnet_val_positive.crpl new file mode 100644 index 0000000..ef33531 --- /dev/null +++ b/external/unbound/testdata/subnet_val_positive.crpl @@ -0,0 +1,185 @@ +; Test subnet option in combination with dnssec + +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 17 + module-config: "subnetcache validator iterator" + verbosity: 3 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to DNSKEY priming query + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN DNSKEY + SECTION ANSWER + example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} + example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD DO + SECTION QUESTION + www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RD RA AD NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_val_positive_client.crpl b/external/unbound/testdata/subnet_val_positive_client.crpl new file mode 100644 index 0000000..dcd3a87 --- /dev/null +++ b/external/unbound/testdata/subnet_val_positive_client.crpl @@ -0,0 +1,196 @@ +; Test subnet option in combination with dnssec +; Client asks for subnet data + +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 17 + module-config: "subnetcache validator iterator" + verbosity: 3 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to DNSKEY priming query + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN DNSKEY + SECTION ANSWER + example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} + example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN + HEX_ANSWER_BEGIN; + 00 00 01 00 00 01 00 00 ;ID 0 + 00 00 00 01 03 77 77 77 ; www.example.com A? (DO) + 07 65 78 61 6d 70 6c 65 + 03 63 6f 6d 00 00 01 00 + 01 00 00 29 10 00 00 00 + 80 00 00 0b + + 00 08 00 07 ; OPC, optlen + 00 01 11 00 ; ip4, scope 17, source 0 + 7f 00 00 ;127.0.0.0/17 + HEX_ANSWER_END +ENTRY_END + + + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ednsdata + REPLY QR RD RA AD NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 10.20.30.40 + www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + SECTION AUTHORITY + example.com. IN NS ns.example.com. + example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 11 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/subnet_without_validator.crpl b/external/unbound/testdata/subnet_without_validator.crpl new file mode 100644 index 0000000..2fbf242 --- /dev/null +++ b/external/unbound/testdata/subnet_without_validator.crpl @@ -0,0 +1,161 @@ +server: + send-client-subnet: 5.0.15.10 + max-client-subnet-ipv4: 21 + verbosity: 3 + module-config: "subnetcache iterator" + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Works without validator module + +RANGE_BEGIN 0 100 + + ADDRESS 193.0.14.129 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + a.gtld-servers.net. IN AAAA + SECTION AUTHORITY + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 192.5.6.30 + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + + ADDRESS 5.0.15.10 + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 5.0.15.10 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + ns.example.com. IN AAAA + SECTION ANSWER + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ENTRY_END + + ENTRY_BEGIN + MATCH opcode subdomain ednsdata + ADJUST copy_id copy_query + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ENTRY_END + +RANGE_END + +;; ---------------------------------------- + +STEP 1 QUERY + + ENTRY_BEGIN + REPLY RD + SECTION QUESTION + www.example.com. IN A + ENTRY_END + +STEP 10 CHECK_ANSWER + + ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. IN A 4.3.2.1 + SECTION AUTHORITY + SECTION ADDITIONAL + ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.conf b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.conf new file mode 100644 index 0000000..384f16b --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.conf @@ -0,0 +1,15 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.dsc b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.dsc new file mode 100644 index 0000000..d775ec8 --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.dsc @@ -0,0 +1,16 @@ +BaseName: tcp_sigpipe +Version: 1.0 +Description: Generate SIGPIPE over a TCP channel. +CreationDate: Tue Apr 22 13:45:04 CEST 2008 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: tcp_sigpipe.pre +Post: tcp_sigpipe.post +Test: tcp_sigpipe.test +AuxFiles: +Passed: +Failure: diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.post b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.post new file mode 100644 index 0000000..4df9fe1 --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.post @@ -0,0 +1,10 @@ +# #-- tcp_sigpipe.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.pre b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.pre new file mode 100644 index 0000000..274dc11 --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.pre @@ -0,0 +1,31 @@ +# #-- tcp_sigpipe.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT tcp_sigpipe.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < tcp_sigpipe.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.test b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.test new file mode 100644 index 0000000..6263dca --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.test @@ -0,0 +1,45 @@ +# #-- tcp_sigpipe.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +if uname | grep MINGW >/dev/null; then + echo "no job control in shell on windows. end test" + exit 0 +fi + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE streamtcp) + +# first test a single TCP query. +echo "> query www.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www.example.com. A IN >outfile 2>&1 & +kill -PIPE $UNBOUND_PID +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.testns b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.testns new file mode 100644 index 0000000..1464772 --- /dev/null +++ b/external/unbound/testdata/tcp_sigpipe.tdir/tcp_sigpipe.testns @@ -0,0 +1,42 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH UDP opcode qtype qname +REPLY QR AA NOERROR TC +ADJUST copy_id +SECTION QUESTION +www IN A +ENTRY_END + +ENTRY_BEGIN +MATCH TCP opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + diff --git a/external/unbound/testdata/test_ds.sha1 b/external/unbound/testdata/test_ds.sha1 new file mode 100644 index 0000000..b3c6da5 --- /dev/null +++ b/external/unbound/testdata/test_ds.sha1 @@ -0,0 +1,33 @@ +; +; DS match test file. +; test matching of DS hash against DNSKEYs. +; +; enter ENTRYs with a DS and a DNSKEY. +; These are matched against another. +; If the query name starts with 'yes' then it must match. +; If the query name starts with 'no' then it must not match. + +ENTRY_BEGIN +SECTION QUESTION +yes. IN A +SECTION ANSWER +nlnetlabs.nl. 3600 IN DS 43791 RSASHA1 1 81ee88356df3c3077549445ed2fb1c92adc80641 +nlnetlabs.nl. DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ== +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +yes. IN A +SECTION ANSWER +jelte.nlnetlabs.nl. DS 42860 5 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A +jelte.nlnetlabs.nl. 3600 IN DNSKEY 256 3 5 AQOraLfzarHAlFskVGwAGnX0LRjlcOiO6y5WM4Kz+QvZ9vX28h4lOvnf d5tkxnZm7ERLTAJoFq+1w/wl7VXs2Isz75BSZ7LQh3OT2xXnS6VT5ZxX ko/UCOdoGiKZZ63jHZ0jNSTCYy8+5rfvwRD8s3gGuErp5KcHg3V8VLUK SDNNEQ== +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +no. IN A +SECTION ANSWER +nlnetlabs.nl. 3600 IN DS 43791 RSASHA1 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A +nlnetlabs.nl. DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ== +ENTRY_END + diff --git a/external/unbound/testdata/test_ds.sha384 b/external/unbound/testdata/test_ds.sha384 new file mode 100644 index 0000000..50a377b --- /dev/null +++ b/external/unbound/testdata/test_ds.sha384 @@ -0,0 +1,45 @@ +; +; DS match test file. +; test matching of DS hash against DNSKEYs. +; +; enter ENTRYs with a DS and a DNSKEY. +; These are matched against another. +; If the query name starts with 'yes' then it must match. +; If the query name starts with 'no' then it must not match. + +; These are SHA256 and SHA384 tests from the draft-ietf-dnsext-ecdsa-04 + +ENTRY_BEGIN +SECTION QUESTION +yes. IN A +SECTION ANSWER +example.net. 3600 IN DS 55648 13 2 ( b4c8c1fe2e7477127b27115656ad6256f424625bf5c1 e2770ce6d6e37df61d17 ) +example.net. 3600 IN DNSKEY 257 3 13 ( GojIhhXUN/u4v54ZQqGSnyhWJwaubCvTmeexv7bR6edb krSqQpF64cYbcB7wNcP+e+MAnLr+Wi9xMWyQLc8NAA== ) +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +yes. IN A +SECTION ANSWER +example.net. 3600 IN DS 10771 14 4 ( 72d7b62976ce06438e9c0bf319013cf801f09ecc84b8 d7e9495f27e305c6a9b0563a9b5f4d288405c3008a94 6df983d6 ) +example.net. 3600 IN DNSKEY 257 3 14 ( xKYaNhWdGOfJ+nPrL8/arkwf2EY3MDJ+SErKivBVSum1 w/egsXvSADtNJhyem5RCOpgQ6K8X1DRSEkrbYQ+OB+v8 /uX45NBwY8rp65F6Glur8I/mlVNgF6W/qTI37m40 ) +ENTRY_END + +; same entry as above, but corrupted by a change in the DS, MUST fail +ENTRY_BEGIN +SECTION QUESTION +no. IN A +SECTION ANSWER +example.net. 3600 IN DS 55648 13 2 ( b4c8c1fe2e7477126b27115656ad6256f424625bf5c1 e2770ce6d6e37df61d17 ) +example.net. 3600 IN DNSKEY 257 3 13 ( GojIhhXUN/u4v54ZQqGSnyhWJwaubCvTmeexv7bR6edb krSqQpF64cYbcB7wNcP+e+MAnLr+Wi9xMWyQLc8NAA== ) +ENTRY_END + +; same entry as above, but corrupted by a change in the DS, MUST fail +ENTRY_BEGIN +SECTION QUESTION +no. IN A +SECTION ANSWER +example.net. 3600 IN DS 10771 14 4 ( 72d7b62976ce06438e9c0cf319013cf801f09ecc84b8 d7e9495f27e305c6a9b0563a9b5f4d288405c3008a94 6df983d6 ) +example.net. 3600 IN DNSKEY 257 3 14 ( xKYaNhWdGOfJ+nPrL8/arkwf2EY3MDJ+SErKivBVSum1 w/egsXvSADtNJhyem5RCOpgQ6K8X1DRSEkrbYQ+OB+v8 /uX45NBwY8rp65F6Glur8I/mlVNgF6W/qTI37m40 ) +ENTRY_END + diff --git a/external/unbound/testdata/test_ldnsrr.1 b/external/unbound/testdata/test_ldnsrr.1 new file mode 100644 index 0000000..46ceaad --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.1 @@ -0,0 +1,5739 @@ +; . AXFR +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014013100 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20140207000000 20140130230000 33655 . R46KUKoHumqdDxS0HuplzEsqyRMb7z5FH89rZjE0187pJe7i0RKXJ+Pn ttQwz8xWI0DvNjBvqYWz3qka9qku56nZbc4zOrZH7X9sHcYbCyrK3Tq7 zZdpVTnswxY92BolUvEX/uY6kI8uq4RNR7XPyW+DgWwOqto1lwsvkaxe lVc= +. 518400 IN RRSIG NS 8 0 518400 20140207000000 20140130230000 33655 . CNnn/d9jDo2o5Kyvj2JIEpF18r0Zk9bCPyZMRZR42o70RR7W8zgzrNvX eHYsfHvVGJPgMwgnvazFLXm5dJ+XZZCPUAvxHtdsupUb35ChADt/ycU6 kj2ojV8QGhVYsfIpmk1Riah1OQVpc6NP77Ufwzy+lJSH628MLeEvgCPB OjM= +. 172800 IN RRSIG DNSKEY 8 0 172800 20140214235959 20140131000000 19036 . Ce153ygJ06VY8loC4NXdyBnuZeBMm5I9Ah9s5INZnjHklpvM1HHrB2wR xMt51rB+Iv+4lfEjygoSAAKbQGTA6n3mMKt6WofaPZwSeVegOAjHSJTO W2wx8W5fwA3RZCOUE5xtg1TBrmM/vXip2o5uZI7ac3MZvKCoTfY4h4Si 3aoRa5U47tpFfFR7lQtStkWS/tEeK/yAWKs1t2SV+12tpkG8IRftk8FH OerDIAenpJZ8KTEp5Zgt7DckYhi7eSXjH+Dd9S8Tc14g93I+0a1+BcpV zYNl4IKHJ5vkuUCj6WGTdFEFhqQud2HaxFcHR2nq13gG54dbZdBz5fjr R4rprQ== +. 86400 IN RRSIG NSEC 8 0 86400 20140207000000 20140130230000 33655 . ktL/fHzA1B4cB3Kfa1jl24/J2o04X6hBcmk5acFuLXI87UDxu6UT9Aee 6hMkiZ1hzy8B37Vowoj/Yy9jmkkFo1NCCrmT0N5bsBCWKt5WflwMSH8/ kbcqFDutig3lTpZkkNM88IWVyxKHoYXjZgrscor2J05+6EdfpIknMsMX /nA= +. 518400 IN NS a.root-servers.net. +. 518400 IN NS b.root-servers.net. +. 518400 IN NS c.root-servers.net. +. 518400 IN NS d.root-servers.net. +. 518400 IN NS e.root-servers.net. +. 518400 IN NS f.root-servers.net. +. 518400 IN NS g.root-servers.net. +. 518400 IN NS h.root-servers.net. +. 518400 IN NS i.root-servers.net. +. 518400 IN NS j.root-servers.net. +. 518400 IN NS k.root-servers.net. +. 518400 IN NS l.root-servers.net. +. 518400 IN NS m.root-servers.net. +. 172800 IN DNSKEY 256 3 8 AwEAAb8sU6pbYMWRbkRnEuEZw9NSir707TkOcF+UL1XiK4NDJOvXRyX1 95Am5dQ7bRnnuySZ3daf37vvjUUhuIWUAQ4stht8nJfYxVQXDYjSpGH5 I6Hf/0CZEoNP6cNvrQ7AFmKkmv00xWExKQjbvnRPI4bqpMwtHVzn6Wyb BZ6kuqED +. 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0= +. 86400 IN NSEC ac. NS SOA RRSIG NSEC DNSKEY +ac. 172800 IN NS a.nic.ac. +ac. 172800 IN NS a.ns13.net. +ac. 172800 IN NS b.nic.ac. +ac. 172800 IN NS b.nic.io. +ac. 172800 IN NS b.ns13.net. +ac. 172800 IN NS ns1.communitydns.net. +ac. 172800 IN NS ns3.icb.co.uk. +ac. 86400 IN DS 14403 7 1 3884DE2E920F38E01B659CC5F37B6749BB0DC818 +ac. 86400 IN DS 14403 7 2 584BCEE9B917FC92AFBDD0FC8AF12AB31B3A7B0754894688DA3C57F5 CA7D8E56 +ac. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nMH0nUZDmZfqtgnWE4r5bWNspd3+ZTXLERVTPeg+9gSAoF51XXOiOF03 90sN+JTzr5vX+RGVhVQuXgpfrE8V7X02SPRcZzcH/Q2aP4MEQidOD7cM UIn3gxfUnvf0Mi+OHKzhWBaYXUvthI30GagTTVJNCxqA1J1xTkX/EzFc 4AI= +ac. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iEHeweIksxnEwhI7p7WJKYnAAoPjpkSZ0fxDTjvZIpiTH4lqrI0BrA3o LJVJRqjdtm6rJfoZiDMir9nhd8EBrLbD1M+7EGlQuou5IcdEjBSy7aXW UcxXeKjk6LOWBT1mFRlXVnlzXgQu/zYmKn8eSuJHHEohJ91JTJFQ2bQi J4U= +ac. 86400 IN NSEC academy. NS DS RRSIG NSEC +a.nic.ac. 172800 IN A 64.251.31.177 +b.nic.ac. 172800 IN A 78.104.145.37 +academy. 172800 IN NS demand.beta.aridns.net.au. +academy. 172800 IN NS demand.alpha.aridns.net.au. +academy. 172800 IN NS demand.delta.aridns.net.au. +academy. 172800 IN NS demand.gamma.aridns.net.au. +academy. 86400 IN DS 47032 8 2 E2A2DAE3CC55E8CE27E9AEA6217BDA4A835BF2270C40749AD278E9A9 B4ABA132 +academy. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Q37SOwEmghU1whWY/rUH7g87gK3Di8zI2n87qMNalanPupLq3Q+bTMBF b/yFPCISK/Ti/SwkSX7pRnsj/JsJTW8PJStbAnBEWaBcHpkAwZx+z8YE YkgpjNObtHhkOBbCYF/eiENGdj6mkPBFuHVIHNjDJvdFWXTIeXvzqP4x L3s= +academy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jZH8Ss+jfsn0MU9Z/LcTb2N6qD8VwtViFBL5zqrXfA7ARdR70UdcGEVv QAAivLUDLNWU1djcJrA7RHUehxd2ldYFYJzywm5wawFJDKyjejMbU2Lg uECsdXg+8hsNURlLFEUxhSkItPF6Iio0cPVKyoKZEdZ9sr+bePwfpjk2 zoY= +academy. 86400 IN NSEC ad. NS DS RRSIG NSEC +ad. 172800 IN NS ad.ns.nic.es. +ad. 172800 IN NS ad.cctld.authdns.ripe.net. +ad. 172800 IN NS ns3.nic.fr. +ad. 172800 IN NS dnsc.ad. +ad. 172800 IN NS dnsm.ad. +ad. 172800 IN NS ns-ext.isc.org. +ad. 86400 IN NSEC ae. NS RRSIG NSEC +ad. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iT4UWXR9tl8m44pp4aHeSm7PO/WcagRLC8y0gxmf/QTK1LNghVHeAj0q 1XV5MQ2Kp/A13md8KQ4m4LzwnMyEta9doUAMzLjZe17Gx3dJaDVlZgz1 XhMQ5fEFkCSNJi9tZgnpYINgjDxVAPRyQeufLFvdhL6isWENURnKMTbO mPw= +dnsc.ad. 172800 IN A 194.158.74.10 +dnsc.ad. 172800 IN AAAA 2a02:8060:32fa::b +dnsm.ad. 172800 IN A 194.158.74.9 +dnsm.ad. 172800 IN AAAA 2a02:8060:32fa::a +ae. 86400 IN NSEC aero. NS RRSIG NSEC +ae. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ck48kHhaJnirFVz7gn9HeCayZS+bbH9cI5ewdBRnfTunsEgSoXugsEdK wQxM6zA+FdjtYB9ithdRJXQlLmekHRrPrzfkDsc7SKhtdz0lKo6pGIom d7Hsvv+ZVqih4gbYtvYe35XIjN2YevvM1KEMBNfbJx5oXqZgP9bD49T1 IkU= +ae. 172800 IN NS ae.cctld.authdns.ripe.net. +ae. 172800 IN NS ns1.aedns.ae. +ae. 172800 IN NS ns2.aedns.ae. +ae. 172800 IN NS sec3.apnic.net. +ae. 172800 IN NS sns-pb.isc.org. +ae. 172800 IN NS nsext-pch.aedns.ae. +ns1.aedns.ae. 172800 IN A 79.98.120.73 +ns2.aedns.ae. 172800 IN A 79.98.121.73 +nsext-pch.aedns.ae. 172800 IN A 199.4.137.1 +nsext-pch.aedns.ae. 172800 IN AAAA 2001:500:7d::1 +ns1.uaenic.ae. 172800 IN A 213.42.0.226 +ns2.uaenic.ae. 172800 IN A 195.229.0.186 +aero. 172800 IN NS a0.aero.afilias-nst.info. +aero. 172800 IN NS a2.aero.afilias-nst.info. +aero. 172800 IN NS b0.aero.afilias-nst.org. +aero. 172800 IN NS b2.aero.afilias-nst.org. +aero. 172800 IN NS c0.aero.afilias-nst.info. +aero. 172800 IN NS d0.aero.afilias-nst.org. +aero. 172800 IN NS ns2.switch.ch. +aero. 172800 IN NS ns5.knipp.de. +aero. 172800 IN NS dns7.denic.de. +aero. 86400 IN NSEC af. NS RRSIG NSEC +aero. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S0/wTqAOd4pUq7wM7er2BM/ioI+K/OlKyObxspUrjQBc22s7fouDr6LR qAujeYNdrFjoQe/Yx0wBfkbEX/KmzWfSEAgNBShf7A339xCLG56AcZhH cMemo+kwd5wY0rSAOCLpRMUjH0RC7Yzw8RX5m1I2m8EwOffdtNxfdT/u 76c= +af. 172800 IN NS ns.anycast.nic.af. +af. 172800 IN NS af1.dyntld.net. +af. 172800 IN NS af3.dyntld.net. +af. 86400 IN DS 3691 8 2 56C77864A2CD726F252634C8804A2AF33EA2CE70C49091E08C223BD2 BB33CF5C +af. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dnM3K8H/xeZv5QiWKMtFemz0I18HwhZfdpCr/43PSxsPDlm1haDGCzV5 Vr9zFqbW4GWSSnFWbA6SifSzsq9reXdAyJB7Yig2y8X+8T7pEnPzIIuj OjxPVgBMmORl0yXPPaaxvj9Zyig+v0X496tspOI6Qtj7oY/pSFaBM/ha tEA= +af. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gfrYJjr3qmhkgqEPSawELqwDUxE06oTeqF1ZrSUb9zP8zgo0xowHxaGJ JdIiXdLRZJo+vkwWr7/EyRauSHV1yvOke3gaogODl9T0fZyIlBqflE4w Mh875n4FyfCp3PrkZTBjjUK8Ui+u8zHf6/p7yhI5nWWwN/TjfmgLF8qa MDE= +af. 86400 IN NSEC ag. NS DS RRSIG NSEC +ns.anycast.nic.af. 172800 IN A 204.61.216.13 +ns.anycast.nic.af. 172800 IN AAAA 2001:500:14:6013:ad::1 +ag. 172800 IN NS a0.cctld.afilias-nst.info. +ag. 172800 IN NS a2.cctld.afilias-nst.info. +ag. 172800 IN NS b0.cctld.afilias-nst.org. +ag. 172800 IN NS b2.cctld.afilias-nst.org. +ag. 172800 IN NS c0.cctld.afilias-nst.info. +ag. 172800 IN NS d0.cctld.afilias-nst.org. +ag. 86400 IN DS 55656 7 1 57F9FF89CE3A02AE33EC017A7C83ED54D925AA13 +ag. 86400 IN DS 55656 7 2 B8DC00C070D5BFC5C1C3BA08E5205A1E7F15EABFBFD6359D11E0E62D 2FFFA57F +ag. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MjpsJKLV6UEmpuIMYd455caAq6y2rgq8sQgwrqoBJEqrZdwCAJtS74+l vOFesW2QhEjmez/LU+Mo0E887IFRF+QsEvwwvXb2OVyWjWZunHkxBFkv D07YvgYmTBpQQM8jRViVBRyp1K2svYjf/UDMe0y5QwAgSOk0h5zweP61 It4= +ag. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rxSnp+qS9PdXHUW3rrOZNDIlvDACfYZjMVvZUYMyhnCueP7ts2X0UEjL zgzn6C8ofgtMUTaqpD1QZ1NNrO0yUQdIAVhLN+athtXnpcapCMya5zYQ qZbIZoiVhlcsvZjzasSUvKRnvqNb1UJs+u9MxiziCEs0zuo8363SeZ6l IjM= +ag. 86400 IN NSEC agency. NS DS RRSIG NSEC +agency. 172800 IN NS demand.beta.aridns.net.au. +agency. 172800 IN NS demand.alpha.aridns.net.au. +agency. 172800 IN NS demand.delta.aridns.net.au. +agency. 172800 IN NS demand.gamma.aridns.net.au. +agency. 86400 IN DS 43582 8 2 50CC5CB5EC1AFFF1E70ED524F6DDD4F7978D15B4041FA7C5E5F85434 3967DDCF +agency. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . q9dIDW55+udO6+hcMJkLeyMjm7niUCPYbstULtHbv/acjiV5P2aXr/8g occfSUqAjPp/1H6F6rwI1O9lla9w2aGeYvLpfxK7MRCGMZz1ZSv7qizw P9OI1TE7OgUN+gzWTZoyoX2uEwBSbXLFQ8MyqlwaIMrrpezvGdJkq+1Y P2Y= +agency. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sHxELSpQj6tF6tpzTGnlyx+FpWJFovpKmxQImvZWlk1r6Emn/2fd0DdL iLdtsTOIdMi7vFbH1yDjMAZ3ml7iCEMd5s8/Rz+muuc5wdlYlDn9yaEU BEURzHpdbQEFYSbBM7g+rZuZows1/fS4/gXOUmFRzZ1Szvb0t7pgBhF5 5uk= +agency. 86400 IN NSEC ai. NS DS RRSIG NSEC +ai. 172800 IN NS ns1.pair.com. +ai. 172800 IN NS ns2.offshore.ai. +ai. 172800 IN NS whois.ai. +ai. 86400 IN NSEC al. NS RRSIG NSEC +ai. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VOZpwj25ZbdkLYLJEcYil1zQCHBxiB56H/w0suGgqrXbXxrEQ70DdMHH zwQdXe45VStqtFI5lZLWmzS8QzvdwZj+fTXNYRuHyjRx3lXvEpPKMd1F knLq1xk/+4Rq4SSQpk6Hk1ivp8bDWyYURkcVXPWq7VoPItq0FJlW1Tbb Z+I= +ns2.offshore.ai. 172800 IN A 108.166.113.245 +whois.ai. 172800 IN A 209.59.119.1 +al. 172800 IN NS al.cctld.authdns.ripe.net. +al. 172800 IN NS ns1.nic.al. +al. 172800 IN NS rip.psg.com. +al. 172800 IN NS ns-al.isti.cnr.it. +al. 172800 IN NS munnari.oz.au. +al. 86400 IN NSEC am. NS RRSIG NSEC +al. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rgSmY5UIqAwfssVkMzjT1yUJZNp61zkjNByHGZb4JVWdUK/gjKLDcYNI kw8o/tSWHhT7YXTFYPjWgdrb23QU/xAoXsHG6d0GGjO2NRRRuqGTdfYV kRdeUwhya3dl8bh5MeyiDgXviAPlel1hyW50UTFlohGtU2LpmJoKpBDt AQ4= +ns1.nic.al. 172800 IN A 194.1.149.230 +am. 172800 IN NS am.cctld.authdns.ripe.net. +am. 172800 IN NS rip.psg.com. +am. 172800 IN NS fork.sth.dnsnode.net. +am. 172800 IN NS ns-cdn.amnic.net. +am. 172800 IN NS ns-pri.amnic.net. +am. 172800 IN NS sns-pb.isc.org. +am. 86400 IN DS 51141 7 2 F14D6ACFC410DE94D18F63A7EDC2779DE70C1D5E9AF0E0EFB4687CC3 522E7F4F +am. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . F8M3qcX+1wL4rsvIZ4MTOkQ+u4z1C4jn/MOscUQhGesVJZb/NK2RS8DE fLwPVLFlKX2cf8gNPcf1CnZjr0NM0eW7m45k3vGBDXroYTgevAIOYx02 UYT7IiYGts0CagC06wMfML78Sv2oMvsso9f635gqzaBm0u2uADGqUczj d44= +am. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . q3mnzdE6VzkoQFs5QTk5G18P8ZD+eouZWK/oYq4sKSB1efW4FmTFhM58 ggoP8Z+CVYhaW0bQUIkbmcLFw3EnyEbyIakJRlBK8QLHIAJiSktTaWRE ZuymerHYd5ZkR0uigNmOf1nwSnabpUYDYwHyIXWq6YqctAhGUV2Xilsy 24c= +am. 86400 IN NSEC an. NS DS RRSIG NSEC +an. 172800 IN NS an.cctld.authdns.ripe.net. +an. 172800 IN NS ns0.ja.net. +an. 172800 IN NS engine0.una.an. +an. 172800 IN NS engine2.una.an. +an. 172800 IN NS engine3.una.an. +an. 172800 IN NS kadushi.curinfo.an. +an. 172800 IN NS ns01-server.curinfo.an. +an. 86400 IN NSEC ao. NS RRSIG NSEC +an. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FNLWwcBZNVPDsL+71vqsO9M0/VITCrDXrQXFauIgqayU+e6REVL4JrzG xBnzSgwZKOqDrKVH6c0z5OR/jDBzuF6bAevaw3V2BMAzM1MVtY9Ap6Vs YJP6vregovXeOnzEnxMCjQjG4oqhfSHXpJCeT8+dIWl15NFBRVDsBYvJ zZk= +kadushi.curinfo.an. 172800 IN A 65.208.122.63 +ns01-server.curinfo.an. 172800 IN A 65.208.122.36 +engine0.una.an. 172800 IN A 200.26.199.99 +engine2.una.an. 172800 IN A 65.174.238.100 +engine3.una.an. 172800 IN A 200.26.199.102 +ao. 172800 IN NS ns02.dns.ao. +ao. 172800 IN NS ns02.fccn.pt. +ao. 172800 IN NS ns03.fccn.pt. +ao. 172800 IN NS auth02.ns.uu.net. +ao. 172800 IN NS ns-ext.isc.org. +ao. 172800 IN NS phobos.fccn.pt. +ao. 86400 IN NSEC aq. NS RRSIG NSEC +ao. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VmhWJLDqfzbteT40KG5P4nynBXPBsFEagUN+M1SUKfCA9GCrqhn1bTvy TdLgi5lOxJWQQdUyG36rQGoNJDXH3wMdQB/WNN1uXE4KCNe21w5L7Eps UkF1fQ8eK0x/dEVrQrNl9so4LFWG2HVsXdYNzh8wzdnMGJXfY+ShoocP QGM= +ns02.dns.ao. 172800 IN A 197.149.149.11 +ns02.dns.ao. 172800 IN AAAA 2c0f:f828:2::b +aq. 172800 IN NS ns1.dns.aq. +aq. 172800 IN NS fork.sth.dnsnode.net. +aq. 172800 IN NS ns99.dns.net.nz. +aq. 172800 IN NS sns-pb.isc.org. +aq. 86400 IN NSEC ar. NS RRSIG NSEC +aq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WMwSI1kNC1z1OMYb2Ou9keV5Yk/aQU0LryrenWXwkFpYVtsZbmaWsnWG 3MCiXCFEMGY+svoxku269HoFRjjuD0e0bpanV3zYHLiCRXoBK4Kp0uIm EUakvRVXr8JhvBbvhTe3B3EYGcnDXwt0oA/4Ac/xXH+No44AUhtlHcuB jiA= +ns1.dns.aq. 172800 IN A 203.119.56.132 +ar. 172800 IN NS a.dns.ar. +ar. 172800 IN NS ar.cctld.authdns.ripe.net. +ar. 172800 IN NS ns2.switch.ch. +ar. 172800 IN NS athea.ar. +ar. 172800 IN NS ctina.ar. +ar. 172800 IN NS relay1.mecon.gov.ar. +ar. 86400 IN NSEC arpa. NS RRSIG NSEC +ar. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kyJWfVOj/hkW58piEAwE5RvRiROjePJ36u0eAXBFSu6fi101yJ4ErxGF WRRBQmyfku0VFPjMTRQztapSzX/o4owkmjSQJHwNCv2PGHjtuM+fB23Z 4lueJKY8YkNXiEZUQP54BrG0l0FnFGaG7yDgFKA0/8Z09gU9vDICHVTm jns= +athea.ar. 172800 IN A 200.16.98.2 +ctina.ar. 172800 IN A 200.16.97.17 +a.dns.ar. 172800 IN A 200.108.145.50 +a.dns.ar. 172800 IN AAAA 2801:140::10 +relay1.mecon.gov.ar. 172800 IN A 168.101.16.10 +arpa. 172800 IN NS a.root-servers.net. +arpa. 172800 IN NS b.root-servers.net. +arpa. 172800 IN NS c.root-servers.net. +arpa. 172800 IN NS d.root-servers.net. +arpa. 172800 IN NS e.root-servers.net. +arpa. 172800 IN NS f.root-servers.net. +arpa. 172800 IN NS g.root-servers.net. +arpa. 172800 IN NS h.root-servers.net. +arpa. 172800 IN NS i.root-servers.net. +arpa. 172800 IN NS k.root-servers.net. +arpa. 172800 IN NS l.root-servers.net. +arpa. 172800 IN NS m.root-servers.net. +arpa. 86400 IN DS 42581 8 1 778606D9623F843F156E7D11ACBF815EB67AB516 +arpa. 86400 IN DS 42581 8 2 F28391C1ED4DC0F151EDD251A3103DCE0B9A5A251ACF6E24073771D7 1F3C40F9 +arpa. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . li6CJWJOt81HwZIeV1xMGT6O9Sk50PpuYW7FVySnJFK160Idn1+eRNIw C3i+lmzjmUEL0jUJASGLeF4Gycg4yz0+0j3B9VKYS0ZVyAR+1du8zsPf j7IzkFJhVTBGlrgB2hLA4bbQDvqHrOP28rSs6P6R0gW8dibk22klhiCw wS8= +arpa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . g4u1/UMwIOkj4F1/x3fvtN45bHTuz6gg/faV2iQSx3j42smzd4CwWMPx Cb8J/ozeaNswoXLCMVJiiKiJDmHvdD67H3WuYBjvUzWzwBjjUtOj3Ng5 C605EUVUqa+KoxS9JHqtJ4BgHYlOd165OkKIdIQmPCOUsPspCFSLaMem GCQ= +arpa. 86400 IN NSEC as. NS DS RRSIG NSEC +as. 172800 IN NS tld.gdns.net. +as. 172800 IN NS tld1.ultradns.net. +as. 172800 IN NS tld2.ultradns.net. +as. 172800 IN NS tld3.ultradns.org. +as. 172800 IN NS tld4.ultradns.org. +as. 172800 IN NS tld5.ultradns.info. +as. 172800 IN NS tld6.ultradns.co.uk. +as. 86400 IN NSEC asia. NS RRSIG NSEC +as. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fySHmUOi3lwV8jha//9TSHV9379wM4t8Brsge/XziGJPmodXGZ7l2PaV 4jEKJwBao17hEL25A1ngjeUcR5QEVR7Zud+DlZzzo1WZLSq7ntQ8qpKa XxR6663SVpy2J0Crp/xIoejPXG45VedsoOvZKQtYUgxJ3uNXR6C1HDmd McI= +asia. 172800 IN NS a0.asia.afilias-nst.info. +asia. 172800 IN NS a2.asia.afilias-nst.info. +asia. 172800 IN NS b0.asia.afilias-nst.asia. +asia. 172800 IN NS b2.asia.afilias-nst.org. +asia. 172800 IN NS c0.asia.afilias-nst.info. +asia. 172800 IN NS d0.asia.afilias-nst.asia. +asia. 86400 IN DS 13890 7 1 A33A41F9B31E945CB3379FC36663887038927577 +asia. 86400 IN DS 13890 7 2 F7F1B03479CE200A0680158258D1B7925B0A5F273E54E6BDE742D132 14DD99CB +asia. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JvwsRBimyo9fH+vBgx/99UXw/hNVpk+SNKUtoxy4YhpPLVxwjdWIAXzz WLl/6cadK1xerm6XOIDTXDzw+HLbhWFYy6ZLdS33zQavZrGGQe+NPs34 6tsFPT5Vge06LmQZ7IHG4PHexMnaCbhnnRglUJirv4sPID804VbK5aJA SzU= +asia. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kYMraDYy5gdDJ35enPNgw7FTYic+eStVaNt/0l+CAHlaHFXMLMtV7QPq YrRYcifTMrDdmqtYoyZk7b3BgVpY5mtbdasKo2rLbRL+kbwzItduQ1VE 9HkqhyzCFSqRc52g6fa4z0BQjoujSJxV2LYjPL5A4pqDPcxIhBfOGca4 MCU= +asia. 86400 IN NSEC at. NS DS RRSIG NSEC +b0.asia.afilias-nst.asia. 172800 IN A 199.254.28.1 +b0.asia.afilias-nst.asia. 172800 IN AAAA 2001:500:16::1 +d0.asia.afilias-nst.asia. 172800 IN A 199.254.30.1 +d0.asia.afilias-nst.asia. 172800 IN AAAA 2001:500:18::1 +at. 86400 IN NSEC au. NS DS RRSIG NSEC +at. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cdAqIJBcoJKX1ZpO2RubEXL9wU+qVxWMDhCJu8i+vejwspAVGI8I2ify XcFoqS+GnXWGfumxEztQrhxCaa15/g90/AVNKq611/4TbkTM8YIdw+oF pM1EdVZOLUTs9V9Nkaqa1QFDKxET0DA1xodOiJY3buNNHuHswkYa5U2n v1Y= +at. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Nd7Ai0RCgNDW69Ta3uoV5hwqMt/Nx7ACIuRM/D4w3o0pTK+M1x++7HiR EntfZoKRlDi8JzsRnYbu6o9hQh/q2h80lPAe1q+AFpCxhm09xRxb54gh aOmvNl8nd3f9m7u8YPGqNfBlOPPBexYVgSQBmlGIl15ihXG1nLI09T8E NWI= +at. 172800 IN NS d.ns.at. +at. 172800 IN NS j.ns.at. +at. 172800 IN NS n.ns.at. +at. 172800 IN NS r.ns.at. +at. 172800 IN NS u.ns.at. +at. 172800 IN NS ns1.univie.ac.at. +at. 172800 IN NS ns2.univie.ac.at. +at. 172800 IN NS ns9.univie.ac.at. +at. 86400 IN DS 56489 8 2 2E48D4AAE2F5D5022F156516846803A58F3B2F8A854AAD238EC766DE 6AD98AF2 +at. 86400 IN DS 60836 8 2 6BB14AC9AB00B37AFE0BB5570048DFD13B16C8BF3512846C627CE560 F026CE39 +ns1.univie.ac.at. 172800 IN A 78.104.144.2 +ns1.univie.ac.at. 172800 IN AAAA 2001:628:2030:4301::2 +ns2.univie.ac.at. 172800 IN A 192.92.125.2 +ns2.univie.ac.at. 172800 IN AAAA 2001:678:1c::2 +ns5.univie.ac.at. 172800 IN A 193.171.255.77 +ns5.univie.ac.at. 172800 IN AAAA 2001:628:453:4305::53 +ns9.univie.ac.at. 172800 IN A 194.0.10.100 +ns9.univie.ac.at. 172800 IN AAAA 2001:678:d::cafe +d.ns.at. 172800 IN A 81.91.161.98 +d.ns.at. 172800 IN AAAA 2a02:568:20:1::d +j.ns.at. 172800 IN A 194.146.106.50 +j.ns.at. 172800 IN AAAA 2001:67c:1010:12::53 +n.ns.at. 172800 IN A 81.91.173.130 +r.ns.at. 172800 IN A 194.0.25.10 +r.ns.at. 172800 IN AAAA 2001:678:20::10 +u.ns.at. 172800 IN A 195.66.241.82 +au. 86400 IN NSEC aw. NS RRSIG NSEC +au. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bWExURHD4x+xDOy2S0d761z78EDPNDaaWyRlx6gXlB5QKkS/HIOlHOuS c8+NNbm8qbwzFwmxfFb8n8mEVlzaitRCJa/Bhx8j677Vd8sIWdlc3PEC 8yKV/4I3fss9mf8Z516OlG2+LpX26dWpwXJrnDSqIEsxOU8AcJVbhbaP O60= +au. 172800 IN NS a.au. +au. 172800 IN NS b.au. +au. 172800 IN NS r.au. +au. 172800 IN NS s.au. +au. 172800 IN NS u.au. +au. 172800 IN NS v.au. +au. 172800 IN NS w.au. +au. 172800 IN NS x.au. +au. 172800 IN NS y.au. +au. 172800 IN NS z.au. +a.au. 172800 IN A 58.65.254.73 +a.au. 172800 IN AAAA 2407:6e00:254:306::73 +b.au. 172800 IN A 58.65.253.73 +b.au. 172800 IN AAAA 2407:6e00:253:306::73 +yarrina.connect.com.au. 172800 IN A 192.189.54.17 +cctld.alpha.aridns.net.au. 172800 IN A 37.209.192.6 +cctld.alpha.aridns.net.au. 172800 IN AAAA 2001:dcd:1::6 +demand.alpha.aridns.net.au. 172800 IN A 37.209.192.7 +demand.alpha.aridns.net.au. 172800 IN AAAA 2001:dcd:1::7 +cctld.beta.aridns.net.au. 172800 IN A 37.209.194.6 +cctld.beta.aridns.net.au. 172800 IN AAAA 2001:dcd:2::6 +demand.beta.aridns.net.au. 172800 IN A 37.209.194.7 +demand.beta.aridns.net.au. 172800 IN AAAA 2001:dcd:2::7 +cctld.delta.aridns.net.au. 172800 IN A 37.209.198.6 +cctld.delta.aridns.net.au. 172800 IN AAAA 2001:dcd:4::6 +demand.delta.aridns.net.au. 172800 IN A 37.209.198.7 +demand.delta.aridns.net.au. 172800 IN AAAA 2001:dcd:4::7 +cctld.gamma.aridns.net.au. 172800 IN A 37.209.196.6 +cctld.gamma.aridns.net.au. 172800 IN AAAA 2001:dcd:3::6 +demand.gamma.aridns.net.au. 172800 IN A 37.209.196.7 +demand.gamma.aridns.net.au. 172800 IN AAAA 2001:dcd:3::7 +munnari.oz.au. 172800 IN A 202.29.151.3 +munnari.oz.au. 172800 IN AAAA 2001:3c8:9007:1::21 +munnari.oz.au. 172800 IN AAAA 2001:3c8:9009:181::2 +r.au. 172800 IN A 128.32.136.3 +r.au. 172800 IN AAAA 2607:f140:ffff:fffe::3 +s.au. 172800 IN A 128.32.136.14 +s.au. 172800 IN AAAA 2607:f140:ffff:fffe::e +u.au. 172800 IN A 211.29.133.32 +v.au. 172800 IN A 202.12.31.141 +v.au. 172800 IN AAAA 2001:dc0:4001:1:0:1836:0:141 +w.au. 172800 IN A 37.209.192.5 +w.au. 172800 IN AAAA 2001:dcd:1::5 +x.au. 172800 IN A 37.209.194.5 +x.au. 172800 IN AAAA 2001:dcd:2::5 +y.au. 172800 IN A 37.209.196.5 +y.au. 172800 IN AAAA 2001:dcd:3::5 +z.au. 172800 IN A 37.209.198.5 +z.au. 172800 IN AAAA 2001:dcd:4::5 +aw. 172800 IN NS ns1.setarnet.aw. +aw. 172800 IN NS ns2.setarnet.aw. +aw. 172800 IN NS ns-aw-ext1.sidn.nl. +aw. 86400 IN NSEC ax. NS RRSIG NSEC +aw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LjZrG8MY8S1y25Z+2CAseuX65N73V0Mmx1zETirT3qg5XS1D8mWYJJZI c7dmXGqHQsM7hkbfra4drwgNMh6nqrFsl1vzYqBy33YHe+Lw21l+LGWS BheDIaC+xkJfwCjbrg9iZyLGrPAR7CAMe0q9goa5W09OGbWNbnY5WCld nyo= +ns1.setarnet.aw. 172800 IN A 209.88.128.25 +ns2.setarnet.aw. 172800 IN A 209.88.128.26 +ax. 172800 IN NS ns1.aalnet.net. +ax. 172800 IN NS ns2.aalnet.net. +ax. 172800 IN NS ns3.aalnet.net. +ax. 86400 IN NSEC az. NS RRSIG NSEC +ax. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nZTCQD+pV0cwSE6WlWXjGFDBbVMfhevweiH2+TMXURa6mJRfs8P5JhkO Dn4d4UTiEt3dBEMDNV9Cp8Kf2JikGeN4VuIT/ZQ8tEIlaOJsBBRJl3db vfJesC6Vspp1GDuAlkK8oqsnFpyKUt4tH6TYWfeZdOjuk5MUAG/p40sr ufU= +az. 172800 IN NS az.hostmaster.ua. +az. 172800 IN NS ns.demos.su. +az. 172800 IN NS rip.psg.com. +az. 86400 IN NSEC ba. NS RRSIG NSEC +az. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HQoomu4z3G2iL1btsd9q4S2OlF2oazUrrn31IE47tG/435QfaVxJtHsJ La9mAoxt34977h/LRFcQ1jJV2AJ0gXvFB8G3VrAkc5AzQn4WCoBjqWyE zEdJnjRsy3fJXbL3ltznsLrQarhs2ditL0MoK9ofAwwIwivHeLyU/uNg des= +ba. 172800 IN NS ba.cctld.authdns.ripe.net. +ba. 172800 IN NS ns.ba. +ba. 172800 IN NS sava.utic.net.ba. +ba. 172800 IN NS auth03.ns.uu.net. +ba. 172800 IN NS munnari.oz.au. +ba. 86400 IN NSEC bargains. NS RRSIG NSEC +ba. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VEtQZHLdjoFxE+WVmGjZCssPsVGDpNcZPddZFKv3cWSjDK0VQYDnHYs7 Kdix5NVHCjLfQ+vvkYhtY3Qh9vIBjmDZ0+nxJV7qwp5xTJiGAG/iq7eS g9+rwpCO7dh4CwH3PoHcr+7idyLnsohnGPK2qBz0jWjNKLy8GVat3UXi uHs= +sava.utic.net.ba. 172800 IN A 195.130.35.3 +ns.ba. 172800 IN A 195.130.35.5 +bargains. 172800 IN NS demand.beta.aridns.net.au. +bargains. 172800 IN NS demand.alpha.aridns.net.au. +bargains. 172800 IN NS demand.delta.aridns.net.au. +bargains. 172800 IN NS demand.gamma.aridns.net.au. +bargains. 86400 IN DS 64582 8 2 B5B3BD40B9913CE466F392BE4F1E72316690BE19FD9E1E850CA3380D F1BCF7A2 +bargains. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Tu/eqXqBtVZIN5X8S5PjOhcWZDF8lJ+C1uGY31VRmW+NnbJ4xi0c1PE3 C7g1F5/z4zWRepIduxO/jBQoJ8RREnJSg2icJvidkddYBkXvcu/pqPjB xz7Tmb2YcCVe6Uq94kAg5COKUG+S7U+xu246W+sFs8VDO4LI8hhG6Zr5 qJQ= +bargains. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SopifeNoRdLUFdlbR6k+ZIZ6oLihH2EXnmoJMvPZ1wvt1Jtx3fYMt5lY TX7BRd6yCKpZdiL+UsgI/8MCzdXIEcfmXESE5MYSetu2zf1cwG58vnZf X0eMUs+NsGu76wY0bKvmzNQbIKj6xd5nhGP0CuwnBaHq5dG50sjXOSyr DtQ= +bargains. 86400 IN NSEC bb. NS DS RRSIG NSEC +bb. 172800 IN NS ns1.barbadosdomain.net. +bb. 172800 IN NS ns2.barbadosdomain.net. +bb. 86400 IN NSEC bd. NS RRSIG NSEC +bb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . j1Pus0SgUM7DWvP2tWOfhOj9ZUX9ZqIStUg+rknTSOZ931MMQUGxflkl 3iQvo6PDQK8NZqZ5Pr7vrDNACdn6+sn/k8BV/59dtZN88icZ9NY9sMKn sOFfl3NHQ6ZIcg+Sr+U4awkvHyhWg3/P/y5RJwKtCTVP3eO+nSqyIK9K iRg= +bd. 172800 IN NS dns.bd. +bd. 172800 IN NS surma.btcl.net.bd. +bd. 172800 IN NS jamuna.btcl.net.bd. +bd. 86400 IN NSEC be. NS RRSIG NSEC +bd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WcjkGTzA2cZswt8VA8THav2R6yzpO65I5d4mNSLMzn2WoxLSYpD4853c Etc+3I/aevxx9dYdvQaYC5D9fiFn9KcxsDqWdIKQwDr+gFyM4ZDt33Lw IrjZu3tlXag+XDa3PQi7PnBAMtg2vvWuYNxr9jGJa7RoO6MxrSVpf4iF GrM= +dns.bd. 172800 IN A 209.58.24.3 +jamuna.btcl.net.bd. 172800 IN A 203.112.194.231 +surma.btcl.net.bd. 172800 IN A 203.112.194.232 +be. 172800 IN NS a.ns.dns.be. +be. 172800 IN NS b.ns.dns.be. +be. 172800 IN NS c.ns.dns.be. +be. 172800 IN NS d.ns.dns.be. +be. 172800 IN NS x.ns.dns.be. +be. 172800 IN NS y.ns.dns.be. +be. 86400 IN DS 12664 8 1 59462E9CB5520A36DD248D9DDC4EAA44672A5ED1 +be. 86400 IN DS 12664 8 2 75141E9B1188A95A7A855BF47E278A742A5E3F2DDEED8E995D749D48 F2F0E72D +be. 86400 IN DS 16684 8 1 8BD0806315E077B56D3D0E235727F31D8CB9BF3C +be. 86400 IN DS 16684 8 2 7EF0A483A7A96FCECF3D9067828BAF7F3DF22C3276671C2E88AA4636 FD259F34 +be. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vXfpLGtbuNAO+f0kyxEaDhYpCUkntxX2+trdhAADuZ9Q3OyK5USMTmfk bIHkX8rSp+JE0jGUUpako9re4fyjLULJa5xjzroLUsyhbWxjEF4PLxYy 51Plr5M4wh6N1wH6/Q8xr7DTaHIjJxJHe4EFX/uAKZ7WhxE/ZymF766c aIo= +be. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SYF3P8H+lNDhmBKgVqQQ/M9SoP51ttDePzY/bjfOE9zlwwGrKWV0HkF/ MxHm00dWy9Wvs3ARariqslLw4ln0eVDuujMn4+rOCpP7pIuo+pvBToGe 4oot1NSaN+aYXC77fdz30tzMKxvIhVkVmkAc5m0OWmVV850oPofUFrGm MMo= +be. 86400 IN NSEC berlin. NS DS RRSIG NSEC +a.ns.dns.be. 172800 IN A 194.0.6.1 +a.ns.dns.be. 172800 IN AAAA 2001:678:9::1 +b.ns.dns.be. 172800 IN A 194.0.37.1 +b.ns.dns.be. 172800 IN AAAA 2001:678:64::1 +c.ns.dns.be. 172800 IN A 194.0.43.1 +c.ns.dns.be. 172800 IN AAAA 2001:678:68::1 +d.ns.dns.be. 172800 IN A 194.0.44.1 +d.ns.dns.be. 172800 IN AAAA 2001:678:6c::1 +x.ns.dns.be. 172800 IN A 194.0.1.10 +x.ns.dns.be. 172800 IN AAAA 2001:678:4::a +y.ns.dns.be. 172800 IN A 120.29.253.8 +y.ns.dns.be. 172800 IN AAAA 2001:dcd:7::8 +berlin. 172800 IN NS a.dns.nic.berlin. +berlin. 172800 IN NS b.dns.nic.berlin. +berlin. 172800 IN NS c.dns.nic.berlin. +berlin. 86400 IN DS 10394 8 1 41B409894CD48EBBD0877427D5320C92ED2879DD +berlin. 86400 IN DS 10394 8 2 B0D792359CB13AB1093CFA9D3754EC6933CAE2B2335A257017BDF63B CB682564 +berlin. 86400 IN DS 15259 8 1 77F489BD4EA570DF28EA5AE752798AACC900C547 +berlin. 86400 IN DS 15259 8 2 D7B794C41E4F2FFB19B22E307B7D5314C8665A0C77464A471305AC32 FC0BDAF3 +berlin. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IMvUe+OyVD8chahDTfFvCsp/aXSXC+6H8VboVW/A1E27RbayPv7mq5JC rXKtlVgnaPe/eYSi/mlRQ0wu5DpCbrB3SEkgsL1+wU5zgxhIHo3BBEXw WmZJe9OWQTn+rhxd9GY5+PLo8md/ZxyY6gQM7zRw0EvAUt2WzBhg3e8P UK0= +berlin. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n7v9dBunk+B0BLM8VG8swU8Hb+e1btfBnkZKZ8eccKxXvFEHeygSq5pz wJJ2m1LVb//ny2kq3qsz0Qs1vGEYaFGcxOiERE84ikOR95OtOlFjuX6/ J472WMUuSSs9Fw4PlCGJ8TvL+OphD3Sygf6a44K+PAdyBZSa8eqj44DS rI4= +berlin. 86400 IN NSEC bf. NS DS RRSIG NSEC +a.dns.nic.berlin. 172800 IN A 194.0.25.16 +a.dns.nic.berlin. 172800 IN AAAA 2001:678:20::16 +b.dns.nic.berlin. 172800 IN A 193.170.61.5 +b.dns.nic.berlin. 172800 IN AAAA 2001:62a:a:2000::5 +c.dns.nic.berlin. 172800 IN A 193.170.187.5 +c.dns.nic.berlin. 172800 IN AAAA 2001:62a:a:3000::5 +bf. 172800 IN NS ns1.ird.fr. +bf. 172800 IN NS ns1.as6453.net. +bf. 172800 IN NS ns2.as6453.net. +bf. 172800 IN NS nahouri.onatel.bf. +bf. 86400 IN NSEC bg. NS RRSIG NSEC +bf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rekpQV4VF5+gpgLycmW07ZVba/iC441ir9KFsaCzy6BtUa8N90RMCdyT cIWXa5VAfrt/9/cDYzM28AaOGqQPcM9gLHwzbMv5CVZo89BUujwP+wIf v9I2CApbWWkQdNHrpRll3EGjB87nivO69lXUQ3kqVB7/yG6kEk9Qpwu8 VDA= +nahouri.onatel.bf. 172800 IN A 206.82.130.196 +bg. 172800 IN NS bg.cctld.authdns.ripe.net. +bg. 172800 IN NS ns.register.bg. +bg. 172800 IN NS ns2.register.bg. +bg. 172800 IN NS ns3.register.bg. +bg. 172800 IN NS ns4.register.bg. +bg. 172800 IN NS ns-ext.isc.org. +bg. 172800 IN NS sns-pb.isc.org. +bg. 86400 IN DS 46846 5 1 1D83F503CCED4A4B6F7F8DB1CF43D38F9133A3EA +bg. 86400 IN DS 46846 5 2 26811E459C850F50A85D1EAF589E30DC14D09D1A6E6262E8D36B6BFF C605334C +bg. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UETMYs2gh4a3TPyg+rGAaKUORxUcnu6CWy8nldawsOOEWJ4NSGw90+4F e9hq7c/+5Pr9KPeYsB4Mqg2roTAXJH5PuQdOjeicYAzKcrE691geAJup akMf2RQq/Tevux7H+KDZ7LgTeoPWGnxKk5focD47iNN+1IulITIk5M5l hIM= +bg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XwkYsNK9n+9w39n/tRaKB5+GQ5mgl2tzgCiJKMOvHNyZTgP9Hq2DHTxS vbvASCGrWXfidA7rX0c5OC6ltfgDzplEnf6ZOiInbds6pneETw+tXhto uyPI/L/8LLQsa1XRnpEIpPPKAv6g62XOuQBY12/bJnnLEvU8TtbQqI6y 6hU= +bg. 86400 IN NSEC bh. NS DS RRSIG NSEC +ns.register.bg. 172800 IN A 192.92.129.99 +ns.register.bg. 172800 IN AAAA 2a02:6a80::192:92:129:99 +ns2.register.bg. 172800 IN A 193.68.3.232 +ns2.register.bg. 172800 IN AAAA 2a02:6a80::193:68:3:232 +ns3.register.bg. 172800 IN A 193.68.99.99 +ns3.register.bg. 172800 IN AAAA 2a02:6a80::193:68:99:99 +ns4.register.bg. 172800 IN A 194.0.32.1 +ns4.register.bg. 172800 IN AAAA 2001:678:3c::1 +bh. 172800 IN NS ns.batelco.com.bh. +bh. 172800 IN NS ns2.batelco.com.bh. +bh. 172800 IN NS ns3.batelco.com.bh. +bh. 172800 IN NS ns4.batelco.com.bh. +bh. 86400 IN NSEC bi. NS RRSIG NSEC +bh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KLa7ye3fIiV1PlJTPaSDOYFF6qvaYGwlNCpQ1AqylG8hIIagtQJjl2OR aY4Ofa+y1HmfeAq8Qv4QuWTxUNgn0xbCFX79+k7jzznR8oCtFrzjsVTW xnqJ1iwJOJsF+Dsr8HO0/vXpmgE6c0yg19+pexFkstKHArHBMKxffBHr kG4= +ns.batelco.com.bh. 172800 IN A 193.188.97.197 +ns2.batelco.com.bh. 172800 IN A 193.188.97.212 +ns3.batelco.com.bh. 172800 IN A 193.188.97.193 +ns4.batelco.com.bh. 172800 IN A 193.188.97.209 +bi. 172800 IN NS bi.cctld.authdns.ripe.net. +bi. 172800 IN NS ns.nic.bi. +bi. 172800 IN NS dns.princeton.edu. +bi. 172800 IN NS ns1.nic.bi. +bi. 172800 IN NS anyns.nic.bi. +bi. 172800 IN NS ns-bi.afrinic.net. +bi. 86400 IN NSEC bike. NS RRSIG NSEC +bi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T7N7Uq3WR+PS/RXLtCGGTmo4oVOEVscBDdtTHm3mZyMRasfc9QBbwwsA Yh3gf2aaRL3GMlEs82QQ2PqTwqhOpu7IU/MfZIlblvsOdh3/aKAGOoGb ZOKSLn3n9glPb5BGn3bM9/ccaL1g5cinuzwcJAUB6QSs2Wh/bdE7tmpt Qfw= +anyns.nic.bi. 172800 IN A 204.61.216.61 +anyns.nic.bi. 172800 IN AAAA 2001:500:14:6061:ad::1 +ns.nic.bi. 172800 IN A 196.2.8.205 +ns1.nic.bi. 172800 IN A 196.2.12.205 +bike. 172800 IN NS demand.beta.aridns.net.au. +bike. 172800 IN NS demand.alpha.aridns.net.au. +bike. 172800 IN NS demand.delta.aridns.net.au. +bike. 172800 IN NS demand.gamma.aridns.net.au. +bike. 86400 IN DS 54034 8 2 747E5D74063A31D2957E308218CFABAB23194B4FB6292FC5168F7B9E 5031AFAF +bike. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hemOWzDQ6cAp9cX0GGVJ0CQbFQPfbe/PE6c/pN5FzJkY8a+5pSrAOKCT oD9XhY9ysK4dSNyn+RVSY0f0XpvTPDDrOaa7JGpFenHUMGmP/iq7M5lE cHQNI6T0AGh0fPmhFUNuHKS0jZevQbd9/pN9uPL7OHoZfR/dyzifQyAz 5Oc= +bike. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . F2dKnYI1VNNncY/r8u/pSO5co/eLy1RTOnyJWAC0bME9BqCG4O4MOw/3 aZmz2TGYZFQIyQeSbteZN5/LvNc2bezyLR3PSlBHXUh8Z4ocgfPfAvzp h0ZvyPPZRPzOJPUVi2cXs2CMgNW4i7/m3p2E8Md4A+i9JTgZp+kHzcdy e/Y= +bike. 86400 IN NSEC biz. NS DS RRSIG NSEC +biz. 172800 IN NS a.gtld.biz. +biz. 172800 IN NS b.gtld.biz. +biz. 172800 IN NS c.gtld.biz. +biz. 172800 IN NS e.gtld.biz. +biz. 172800 IN NS f.gtld.biz. +biz. 172800 IN NS k.gtld.biz. +biz. 86400 IN DS 21910 8 1 5EAA597F7A5D92ECB6DB62B04423B5315CC807AB +biz. 86400 IN DS 21910 8 2 7C3B5FF5E65827A3D7CE2394B67891477779DCF28AF01BF12422E9EA 1A455D73 +biz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oBRKIKE1tg03enWmdoTP9SMaacXMnDZMAOElzK6y0W3fuanGbKpZPR9l EgnZv94VYhcgvujrRwJFDJ1J0QecW2vgH+GkfsEWhmO9ZBEuv+aDpxqz zQUSeoI/WxlBliH48ACCxudwSI22r7+3uRa7TpStJ7A3uYn4T4oIeYma 66A= +biz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K6TL27N78Oct0EeTZI3AdlwI7hH+Tu2AH/uLUI+14shloBW3GMCHZnkK eYuzxTYdmtO8AGnnDFv50MuV7LYpcLdL2gyNpAG4aIVU4gfv8gwWqx/L c0TBWnoXeNpDw9b4XPytnf72030qqbT8k1HMl6z2iSLe0hDs0iaEa3k4 eyY= +biz. 86400 IN NSEC bj. NS DS RRSIG NSEC +a.gtld.biz. 172800 IN A 156.154.124.65 +a.gtld.biz. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +b.gtld.biz. 172800 IN A 156.154.125.65 +c.gtld.biz. 172800 IN A 156.154.127.65 +e.gtld.biz. 172800 IN A 156.154.126.65 +f.gtld.biz. 172800 IN A 209.173.58.66 +f.gtld.biz. 172800 IN AAAA 2001:500:3682::12 +k.gtld.biz. 172800 IN A 156.154.128.65 +k.gtld.biz. 172800 IN AAAA 2001:503:e239::3:2 +bj. 172800 IN NS bj.cctld.authdns.ripe.net. +bj. 172800 IN NS bow.rain.fr. +bj. 172800 IN NS ns1.intnet.bj. +bj. 172800 IN NS ns-bj.afrinic.net. +bj. 172800 IN NS nakayo.leland.bj. +bj. 86400 IN NSEC bm. NS RRSIG NSEC +bj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . N8bHEko2I20PSv4/r5k/FuKHYeD/oGCwjcGZMgwIvkWt5FYZZTjnA4Yg FyiKDIKy38yih/ETuoGsJvfcpQPIfcuyTHDme/ejamLdUpxP9BtO+4Oi ftiZzlfxhsJtvjrtIwrOBITExHvhwlKeIuOyIoP6N9zWhBdln/yxeS3E CKs= +ns1.intnet.bj. 172800 IN A 81.91.225.18 +nakayo.leland.bj. 172800 IN A 81.91.225.1 +bm. 172800 IN NS ns.uu.net. +bm. 172800 IN NS ns1.bm. +bm. 172800 IN NS ns1.ibl.bm. +bm. 172800 IN NS ns2.bm. +bm. 172800 IN NS ns2.ibl.bm. +bm. 172800 IN NS ns3.bm. +bm. 172800 IN NS sunic.sunet.se. +bm. 172800 IN NS auth02.ns.uu.net. +bm. 86400 IN NSEC bn. NS RRSIG NSEC +bm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mHW26xguPIb2G4A6zFwuBG2IGYxYkVxBRqxsTeIx4z8Jfi2kl8hl70fK 4qGFNj1s/FZZqjoYvWa86AeVaT8EBjnYvrPK1E64bLJN2a4YsffpMe6e GwKiBTykYtpdE0ZnHqxQT0ZbX88biG5cGn1x9xZd9obY8ge41GDXTVCj Rq4= +ns1.ibl.bm. 172800 IN A 198.207.23.50 +ns2.ibl.bm. 172800 IN A 199.172.192.2 +ns1.bm. 172800 IN A 206.53.190.202 +ns2.bm. 172800 IN A 69.17.194.1 +ns3.bm. 172800 IN A 207.228.134.10 +bn. 172800 IN NS jtb.brunet.bn. +bn. 172800 IN NS ns2.brunet.bn. +bn. 172800 IN NS ns-bn.ripe.net. +bn. 172800 IN NS dns1-tl.brunet.bn. +bn. 172800 IN NS dns2-tl.brunet.bn. +bn. 86400 IN NSEC bo. NS RRSIG NSEC +bn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AeaYP5FWtRE84kPd6BVj7JYb6oAdV7R6ocSwhMgLY4Uqruga9V1qK5Od 00VFy+7CnD/X3k+mRBsBUleThkIwVbJ5BOK1p/c6z88gjMPABmuJoGaS iQKwpJeL7rvD0YMZ6AEXYfgigZdBJjS28c5Tx31nOT4oPYlM+XWws0/6 6pc= +dns1-tl.brunet.bn. 172800 IN A 202.160.9.9 +dns2-tl.brunet.bn. 172800 IN A 202.160.9.10 +jtb.brunet.bn. 172800 IN A 202.160.8.2 +ns2.brunet.bn. 172800 IN A 202.160.8.20 +bo. 172800 IN NS ns.dns.br. +bo. 172800 IN NS utama.bolnet.bo. +bo. 172800 IN NS anycast.ns.nic.bo. +bo. 86400 IN NSEC boutique. NS RRSIG NSEC +bo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fDss0CE8D5kxMWovLDtqUJbsDru89GJK4hZXM+gR8DZf4tM0ys9wPc2F prFrMq4MDiSxKFCSsgB3Y03EY+hChPCW9PXIp39FT6cuwuzxh+pq3zMt 0S5qqwIp8lGUxNqJZMjoQpWfjOPeA24aL51cDXuEcGZG5gDVlcLFqZlQ J2s= +utama.bolnet.bo. 172800 IN A 166.114.1.40 +anycast.ns.nic.bo. 172800 IN A 204.61.216.48 +anycast.ns.nic.bo. 172800 IN AAAA 2001:500:14:6048:ad::1 +boutique. 172800 IN NS demand.beta.aridns.net.au. +boutique. 172800 IN NS demand.alpha.aridns.net.au. +boutique. 172800 IN NS demand.delta.aridns.net.au. +boutique. 172800 IN NS demand.gamma.aridns.net.au. +boutique. 86400 IN DS 48127 8 2 3400E946A0A57CB11A176DEAC77AB42934513EFE0A8B5BE0203921AB 1888EE81 +boutique. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bOXMAvXICfooxAf/+qXmLYV6R91kLzBxnhMH/XsnZxe/8/W2BtpYxqOH iQtVRylntf6p28xQnNQ1KEDHcGgBbTGeyS0atLCMrgzp9oJM3hWUFlOZ XYKhsi+HqA7o3HROpJsH0YSc0vmBGXOT5TvTdu9wW0rDW/ZLSe113k7P /gk= +boutique. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vQTkL3IRa9zuJDNaTgXG9jEFBTMWSzx8nRkYc6P251n2s3+i8fOV2m/6 +zXXsAIxTpx21rAHwzRKqJGTitEB/CkOFstA1r+znPpc1DOfxv3cNo5U 296WZeONhDgJaq+LVR2Pf170uQ32l6CfCQU6QIKOzN864IaSy/Op0h/O hMg= +boutique. 86400 IN NSEC br. NS DS RRSIG NSEC +br. 86400 IN NSEC bs. NS DS RRSIG NSEC +br. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZFRgWntMCo6fZRAG6IJh/MP51T1+ZU4TeyQJ73+tvAO16K3n4FqqBVwR bghEVU5h+5Rs8TYlpwFdkh7hzq95+PS1fZlITm+C+IFVmCPqEBg8XDxX TSzvSA8CF308lW7NykFKKHzxgB7Z5++sbBQy9dApr8FpCAxI8iUPGoNx V6c= +br. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aEbe50q5v9A7Hh+rO0spcy6jfp8hiPPNFmagFEjir3Pxm8Em1+bW+2v1 ZkHJCFm6j8Ohrg4H/QP+OQEh3Vr+S9dtNxytU6SfCmTnbv7BEwNUptBa IlSbSHfAe25LjtvEc4Q+UUXIU8q1GUFU7VbwYFnfcHqR5FsJXpDSbmVa z1A= +br. 172800 IN NS a.dns.br. +br. 172800 IN NS b.dns.br. +br. 172800 IN NS c.dns.br. +br. 172800 IN NS d.dns.br. +br. 172800 IN NS e.dns.br. +br. 172800 IN NS f.dns.br. +br. 86400 IN DS 41674 5 1 EAA0978F38879DB70A53F9FF1ACF21D046A98B5C +a.dns.br. 172800 IN A 200.160.0.10 +a.dns.br. 172800 IN AAAA 2001:12ff::10 +b.dns.br. 172800 IN A 200.189.41.10 +c.dns.br. 172800 IN A 200.192.233.10 +d.dns.br. 172800 IN A 200.219.154.10 +d.dns.br. 172800 IN AAAA 2001:12f8:4::10 +e.dns.br. 172800 IN A 200.229.248.10 +e.dns.br. 172800 IN AAAA 2001:12f8:1::10 +f.dns.br. 172800 IN A 200.219.159.10 +ns.dns.br. 172800 IN A 200.160.0.5 +ns.dns.br. 172800 IN AAAA 2001:12ff:0:a20::5 +bs. 172800 IN NS dns.nic.bs. +bs. 172800 IN NS upr1.upr.clu.edu. +bs. 172800 IN NS anyns.pch.net. +bs. 86400 IN NSEC bt. NS RRSIG NSEC +bs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u4s8F+tsSltkjBksPccpHYQzut4twVxDhbapHwIWOmgT0UKOM0Hzpgz9 FVUEzknrdBySFCa2IvjfxZaIPnfozGphoROCjM1GlsPiBACqntSdyTcK x3aW7nJNfXb3aC3PV+tr6hvSICdR/MphaaHqibpDBEzLFXevoH2aB7Qg LAk= +dns.nic.bs. 172800 IN A 206.48.3.168 +bt. 172800 IN NS bt.cctld.authdns.ripe.net. +bt. 172800 IN NS ns.itu.ch. +bt. 172800 IN NS ns1.druknet.bt. +bt. 172800 IN NS ns2.druknet.bt. +bt. 172800 IN NS ns3.druknet.bt. +bt. 172800 IN NS auth00.ns.uu.net. +bt. 172800 IN NS auth61.ns.uu.net. +bt. 86400 IN NSEC build. NS RRSIG NSEC +bt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZZKSenfG/wfSgj6CoKbNpQLzfphjal8s1IqOEZSLVzyepV1/paCMX342 PluEAaCW7hztjqjTxtaYW1EvnNTbzNtHdM9vYAQH9P0+GK7ouRmgmz3A 95tw6c5n1trFkHRWpPHyKt36T6hmLvAEjnho9lgNHhdFBwzQg0Odyz9s V14= +ns1.druknet.bt. 172800 IN A 202.144.128.200 +ns1.druknet.bt. 172800 IN AAAA 2405:d000:0:100::200 +ns2.druknet.bt. 172800 IN A 202.144.128.210 +ns2.druknet.bt. 172800 IN AAAA 2405:d000:0:100::210 +ns3.druknet.bt. 172800 IN A 204.61.216.17 +ns3.druknet.bt. 172800 IN AAAA 2001:500:14:6017:ad::1 +build. 172800 IN NS a.nic.build. +build. 172800 IN NS b.nic.build. +build. 172800 IN NS c.nic.build. +build. 172800 IN NS d.nic.build. +build. 86400 IN DS 18634 8 2 97A275D8F2C987FB681D6E7C650FEFBF8EAE8ED9743822A3D9767F0D C3502938 +build. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . W6AaB4DW2SsuESfOpwvqqMLH1CEO+W3fV1SRoKIKggJ1z2zsr2MIYqLP 4g+hnKFtyKIhmZW/JbAnDXhQIJUn3da87ckfmX0ipF1xubZ49Eluzr8r P0f9QSdf37nqcAxfCXUgE7FRHQ22E8UJA6zNcZ8Yk9cN+zQMi8PdDy8H uF4= +build. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Q4Y+2o9aIWgVW048zcY1uvPLp9H6LZDUDVK2QQY41zY2GcsHVFxAaA3p PrJ5LnrTiKk3pz4GWtiEc5qfxT1bBwqtywm7qRewxM5+cCWwdhSoLmS7 KD5FT7Nd6FyWzp5hBBrKTjNSdvwXBS+vXy/Z+wMlZJeLal+PMguugt2V BPQ= +build. 86400 IN NSEC builders. NS DS RRSIG NSEC +a.nic.build. 172800 IN A 37.209.192.10 +a.nic.build. 172800 IN AAAA 2001:dcd:1::10 +b.nic.build. 172800 IN A 37.209.194.10 +b.nic.build. 172800 IN AAAA 2001:dcd:2::10 +c.nic.build. 172800 IN A 37.209.196.10 +c.nic.build. 172800 IN AAAA 2001:dcd:3::10 +d.nic.build. 172800 IN A 37.209.198.10 +d.nic.build. 172800 IN AAAA 2001:dcd:4::10 +builders. 172800 IN NS demand.beta.aridns.net.au. +builders. 172800 IN NS demand.alpha.aridns.net.au. +builders. 172800 IN NS demand.delta.aridns.net.au. +builders. 172800 IN NS demand.gamma.aridns.net.au. +builders. 86400 IN DS 58759 8 2 37BDBEAC742E662C91717356028143903ECD1DE08FA2D8CAA5367790 A94D3110 +builders. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OuYq1XKCUvs5QpuFEsdGcIzltuyqHKJRSv0xsig/UhKQ2rQDm3oBkDPr 2IjNZZX2RXnaDNcqwQenK6REapwjcRLqNML6la0XaT6NLM/uvsEGpBb1 foAtlyHe8nHxhJPQ4e94/yZ1KW174xKYoVRqk65sZIx8w0AQ/k/JEutA iGc= +builders. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aNv1M2jFhJzMTKJwuudR8F9A4DFCvobOw3sEKdneqh/Cgjf9Q7ffB9BA 3Xzl+eK9u5DLFFk/eK5JQGFqAYli5tfYhjIvBn5WGL10HdMAb42v7Heo LmjA+zEOTn9mKop7VORv3s33mcNpxosENSrJuVpVE2JZ4AV6AXC888ss 49I= +builders. 86400 IN NSEC buzz. NS DS RRSIG NSEC +buzz. 172800 IN NS ns1.dns.nic.buzz. +buzz. 172800 IN NS ns2.dns.nic.buzz. +buzz. 172800 IN NS ns3.dns.nic.buzz. +buzz. 172800 IN NS ns4.dns.nic.buzz. +buzz. 172800 IN NS ns5.dns.nic.buzz. +buzz. 172800 IN NS ns6.dns.nic.buzz. +buzz. 172800 IN NS ns7.dns.nic.buzz. +buzz. 86400 IN DS 47864 8 1 455F2C4738D8D597E70EE16AD30C249839C13EC9 +buzz. 86400 IN DS 47864 8 2 A7178B083CB8C38492BBA8B7BF71F2D86B892CD851FECB81EE2FFFB5 5097F78A +buzz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . a7IKPZ6Q9OlM/pphtVRfLu8b/SK0OuVC2Pox4AEdMSIbho0ivaB4EtyN /UgBy8CVl2ACO8buH5w0zGRwwZh0phNQN/ReXNp9HqlDtcTSpJF4nI8V lIr3KtJJnYKsZeQwN0SskZBm28vBP3au/WsskrhzRG/gHWFuUZQUj08Q WsI= +buzz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WHo65C/czbnVibMVWKD6kEdFOBOA8/R8K95s5gVz5+GtTZWTilvqtQVW 6RlZqc43mKrtlNR9QsCfgNIfd5cE1Bl0ZVmq/rP3WGTrPriAjZ4NimMk zwYaBzTlVhMtp7vAnZODbUwsAyf/BK88HtMUjC0mT4YGaMc2c1XVXj/A Tn0= +buzz. 86400 IN NSEC bv. NS DS RRSIG NSEC +ns1.dns.nic.buzz. 172800 IN A 156.154.144.29 +ns1.dns.nic.buzz. 172800 IN AAAA 2610:a1:1071::1d +ns2.dns.nic.buzz. 172800 IN A 156.154.145.29 +ns2.dns.nic.buzz. 172800 IN AAAA 2610:a1:1072::1d +ns3.dns.nic.buzz. 172800 IN A 156.154.159.29 +ns3.dns.nic.buzz. 172800 IN AAAA 2610:a1:1073::1d +ns4.dns.nic.buzz. 172800 IN A 156.154.156.29 +ns4.dns.nic.buzz. 172800 IN AAAA 2610:a1:1074::1d +ns5.dns.nic.buzz. 172800 IN A 156.154.157.29 +ns5.dns.nic.buzz. 172800 IN AAAA 2610:a1:1075::1d +ns6.dns.nic.buzz. 172800 IN A 156.154.158.29 +ns6.dns.nic.buzz. 172800 IN AAAA 2610:a1:1076::1d +ns7.dns.nic.buzz. 172800 IN A 207.34.5.10 +ns7.dns.nic.buzz. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +bv. 172800 IN NS nn.uninett.no. +bv. 172800 IN NS nac.no. +bv. 172800 IN NS server.nordu.net. +bv. 86400 IN NSEC bw. NS RRSIG NSEC +bv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MIzpahoZ4l92e69tCnBM6l/LZwuhU/18JKmHy/Zvm8bo3Fkfnj7J1/ot 7AfEF/CcUngjyAB6HjeL/XfIHvyUVuC2BQffued0Qa7I1LGvyGgC/TC/ ySwGAxw35ecOwY5vp+jBxgEX0/GEMQr51iYKUsvYFf9Ual+Fs3G/hiwA WhE= +bw. 172800 IN NS ns1.btc.bw. +bw. 172800 IN NS pch.nic.net.bw. +bw. 172800 IN NS dns1.nic.net.bw. +bw. 172800 IN NS dns2.nic.net.bw. +bw. 172800 IN NS ns-bw.afrinic.net. +bw. 86400 IN NSEC by. NS RRSIG NSEC +bw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . V8J0hQ0PEitQHkeLDrFD3aCgMJJCmTQj68Z4OeJT/GKXWvDVMZx9UarO Hyc/rOPs5dbzwzAXLM53Dodig2uqFNX7pKAMbz9vXgcBc8ccUKnFktQ/ rLNiQ8rEVpKX1FZsquOSO+CWSquf32SVwFsIajEIaqEIyTLUTtR0Skgr bAM= +ns1.btc.bw. 172800 IN A 168.167.168.34 +dns1.nic.net.bw. 172800 IN A 168.167.98.226 +dns2.nic.net.bw. 172800 IN A 168.167.98.218 +pch.nic.net.bw. 172800 IN A 204.61.216.70 +by. 172800 IN NS dns1.tld.tutby.com. +by. 172800 IN NS dns2.tld.tutby.com. +by. 172800 IN NS dns3.tld.tutby.com. +by. 172800 IN NS dns4.tld.tutby.com. +by. 172800 IN NS dns5.tld.tutby.com. +by. 172800 IN NS dns6.tld.tutby.com. +by. 172800 IN NS dns7.tld.tutby.com. +by. 86400 IN DS 43875 7 1 B5667014733F0FD07D096B2FA2AD175186ADF48C +by. 86400 IN DS 43875 7 2 27A33067E54A8C4CEE091DB22156EF02A79A76CCC1E48D6D195DFEF6 D520C48E +by. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ph66Nicme3iMy6A9sD3psSLgoXJufKniGP2CjQKY5edMM0t6evwWoxfM Ub+1iCdPqlgBbBmhC8lzjPf7qvyLvM/nPcO9rf9igyl2TE2EAgy/xEAb 2kvmeyqFvvGdfRq904tdUmT9Y6/8VzyqS7cfWVdxCT0lyV5sPQzYHR++ 7jk= +by. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DdUIk0vtvGZ9LeOe4mgH60oytzQ8CE+uVDU73AGUEavtShKW3v/F2ilh q90ATiC8LwbY1q4704hjSuWQuM+BwBWhWwnt94/Suc0ga66942nmKvZB WAK+3TfV3xHkvceNhyPBzWRX1yQXjRwgLst4xrbH+/kseQzJQL0d5ZZq sSs= +by. 86400 IN NSEC bz. NS DS RRSIG NSEC +bz. 172800 IN NS a0.cctld.afilias-nst.info. +bz. 172800 IN NS a2.cctld.afilias-nst.info. +bz. 172800 IN NS b0.cctld.afilias-nst.org. +bz. 172800 IN NS b2.cctld.afilias-nst.org. +bz. 172800 IN NS c0.cctld.afilias-nst.info. +bz. 172800 IN NS d0.cctld.afilias-nst.org. +bz. 86400 IN DS 16455 7 1 409AA5CD776352AEAB7A46B64EE7BA8061CB9374 +bz. 86400 IN DS 16455 7 2 457C64669C357AF4AABDEB16A6A119B22D3FCB339BBF3C1701AA84CB C3E105F3 +bz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qZgPi7PUvwRKgHfJt8wKM4yMXzCSRhQjPtdUzhg6z4AFCSYeQIplJDCK 37u/NmYtFMCLhHRi+iPPrmqWLd2bLsoi3y5dMM6ErCOewH7x6V8kbOrJ 4CwQvoii+uxqjMouPBqyYJMHmpALF7DRHC3u1IUdRWWMVVhAA56q75oW UY4= +bz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cr6tAr4f/JIjAlZ6rhhWbqdC3knzcwERv20U9SS75VuxwCEAmxmXkX5R FzcWBc0+dYyulYFt/ow05B2B0vWrbRvsLruJ/0/1UmVdhBUvC0fKF1H+ ecXB4nESII2m9ZiIKlXZczx+up52KGpWLa8lcgD2OREJFYDPXpePBvZn 3zc= +bz. 86400 IN NSEC ca. NS DS RRSIG NSEC +ca. 86400 IN NSEC cab. NS DS RRSIG NSEC +ca. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ELpR1OX4hZMg7F8/CRmH7I8fu0b8N26RdNHYdfObfCHKrmLIM7GY+74z Mx/RIVAi9qIKHJ3gm4B2cWlD7wfJOxeeKDGc4vk2116ntGYPO7BfoSC6 xaSrG18fE/WK+n2CjdF8mtgJVUwyha7OLVWAGMgXKcCB/dqHQr0HNZhm yFU= +ca. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bNO7myxbSNp/M2rP4Sdwftylvzo91xj+gNlkkAmZ5HHvkvWH60ljj9v3 TdhobVn7z3qfoniKJ60qxP077MaXKlM3ttLtT9AbPJHqulJMAS7Kl0kl NpD0szcAYN3pFqxrc3BQUWhBeVCwtthiXesJjktewG1iD2V1WW4e3/sd s2A= +ca. 172800 IN NS c.ca-servers.ca. +ca. 172800 IN NS e.ca-servers.ca. +ca. 172800 IN NS j.ca-servers.ca. +ca. 172800 IN NS k.ca-servers.ca. +ca. 172800 IN NS l.ca-servers.ca. +ca. 172800 IN NS z.ca-servers.ca. +ca. 172800 IN NS any.ca-servers.ca. +ca. 172800 IN NS tld.isc-sns.net. +ca. 172800 IN NS sns-pb.isc.org. +ca. 86400 IN DS 10207 8 2 7187A87B74FFF32A8549A05BE7E12F1D8BEDD0DEA9C3D864095D83BF 7C542A8F +any.ca-servers.ca. 172800 IN A 199.4.144.2 +any.ca-servers.ca. 172800 IN AAAA 2001:500:a7::2 +c.ca-servers.ca. 172800 IN A 192.228.28.9 +e.ca-servers.ca. 172800 IN A 192.228.30.9 +j.ca-servers.ca. 172800 IN A 198.182.167.1 +j.ca-servers.ca. 172800 IN AAAA 2001:500:83::1 +k.ca-servers.ca. 172800 IN A 156.154.100.4 +l.ca-servers.ca. 172800 IN A 156.154.101.4 +z.ca-servers.ca. 172800 IN A 192.228.25.66 +charles.cdec.polymtl.ca. 172800 IN A 132.207.144.2 +cab. 172800 IN NS demand.beta.aridns.net.au. +cab. 172800 IN NS demand.alpha.aridns.net.au. +cab. 172800 IN NS demand.delta.aridns.net.au. +cab. 172800 IN NS demand.gamma.aridns.net.au. +cab. 86400 IN DS 20239 8 2 E03C2DF189D39BD14C37695B586DA73C58C89B39050DC9E618A97886 B3A757BD +cab. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eR+8iY4X6uvZI4SlSD08wqYMPM0wjYEpS6l0ki+/u8vtKwBM3JPLE0Pl XHB45Cavt1qJ2J/l+0QlrPL6nYwHZyCF/5YFKx8yGva9IeBBbLl0knk8 imJY85kblamirOXtFzRy5o4TMwTrAEy2FS/u3RM/nRHK+o5zLVs+3Yat 3/k= +cab. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B2Bvoj9brS/3/+8pzLwntGECTIYCtbEG8iBvjanW3VEAHWRbmqvHwXQv sZauRhvmLnqhX0O0CjV6Lf7kgPmh4HZtRP4/0Xevmvu0uFyajdrvaGDD jF2jfkkJItMD75nJCpLycdvEnpM57OcUtT0W7lbQewwctHqNbKTUkYQU T0k= +cab. 86400 IN NSEC camera. NS DS RRSIG NSEC +camera. 172800 IN NS demand.beta.aridns.net.au. +camera. 172800 IN NS demand.alpha.aridns.net.au. +camera. 172800 IN NS demand.delta.aridns.net.au. +camera. 172800 IN NS demand.gamma.aridns.net.au. +camera. 86400 IN DS 54385 8 2 DDD1231F35667A209FEAF0749906B8DBDA96CF1F9ED224C519B74FEB 22F4888F +camera. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . C/qOVcY4YDYZawpRkofB/BRo/1ma1JItVlP7a2wrelNu16Zvn0isyPTB Uo6g9n32/+sff8uHobkeorrTNtaykD2etpaKWqkHiS96OpO+tf9cd8cL qGMb3GLBOt/zs3Qu0WXI3Xu168mxp/iRr7iA4Jl0GR8uX931es0lI4wN aJk= +camera. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LxdJkEXjhL+ryPxFsuQYoXc+uAJ9HmTVciyNTdLxgG50ahexDRiYYegN 670msPDjpa3ELMaJlcis2KuT7GYU+9Wnnj+1wLKg5qZ71+/10iehoNog ZGfcaG7ubajF0H9XpmQQB6A90nHfuvONJ6gxUoeCufhmDJ9UD4lL0riD 2xA= +camera. 86400 IN NSEC camp. NS DS RRSIG NSEC +camp. 172800 IN NS demand.beta.aridns.net.au. +camp. 172800 IN NS demand.alpha.aridns.net.au. +camp. 172800 IN NS demand.delta.aridns.net.au. +camp. 172800 IN NS demand.gamma.aridns.net.au. +camp. 86400 IN DS 64396 8 2 D2EDC9BFB5D3C98A155ACE7F93957C54EA8938F4E7AEDF32444A8D9E 57AE69ED +camp. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . e/o5BT+9kO9pMFJYrtCQ8S6YXUzZgoX4M5oAaR88QMor4dfN7u3BZ0zB KWVBVSSsRalgihEHPP3kYopimrrcqCF/Nive7yOykSgPSbjanlPYFjMQ 8kSDPE1AsthMmzhSt4y+KEMshXEOwzJqI0YN40vkePia6kUqXQuR6noq HPw= +camp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BiM5i/QDpMLMIsnpzm3Vec0ZnxqI1kLKm3lGH3bxTuEpWwUC2nw7mXDW KL0af3p4EBP0zK8IvlfF+DMu8vHgXSumOs8iYQkwaFaRZY5w6B6FKW1g jUDMCBCJ86C/SrPnIZfY8jQu5ey8F34XWU0XAqSpkQIo+x5TQEBqlO8p l2c= +camp. 86400 IN NSEC careers. NS DS RRSIG NSEC +careers. 172800 IN NS demand.beta.aridns.net.au. +careers. 172800 IN NS demand.alpha.aridns.net.au. +careers. 172800 IN NS demand.delta.aridns.net.au. +careers. 172800 IN NS demand.gamma.aridns.net.au. +careers. 86400 IN DS 23944 8 2 7EE0E65346C011F8EECC3A94C8668EA463CCA44CB8159F0E30D436FE 920F0DA7 +careers. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vMp1fq6v16Vsw9YE+L9yB2UA2hQORlEC+e7Ir9dEIJFmcrmVy1EDg4ih hf8Cjcm+LBuCuWsKiH8PdRfR19KHz4FOar3tHi4SY4SNrV3BN1zuMpnu Ci5nUzbRMgigGcEEYrMIu3BvOymNJaZf13nbAvy/X54av6EiYqL5qoyR Bts= +careers. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KhIZNx+wmOwWhd94s9wFHFgCf8Lh/XKXCWyDky/NcT0bIOnfeSU5/SD/ 5EI+G32PzS1XqfoqaRB19mBVeS/PotKLdORbfAVI/VuKYiIfpgAVierD qmcIFPYDLBvpsHGB9WDA+ZmJ6CNORxiHTq/rUEnIyJZsGmGWFI0lo7Iy u/Y= +careers. 86400 IN NSEC cat. NS DS RRSIG NSEC +cat. 172800 IN NS ns.nic.cat. +cat. 172800 IN NS cat.pch.net. +cat. 172800 IN NS ns1.nic.es. +cat. 172800 IN NS nsc.nic.de. +cat. 172800 IN NS dnsc.ad. +cat. 172800 IN NS anyc1.irondns.net. +cat. 172800 IN NS sns-pb.isc.org. +cat. 172800 IN NS switch.nic.cat. +cat. 86400 IN DS 33436 10 2 E1A0FC89B87F5E7F6B354D364CF704855A2E9A52B7F39BBE4E2BEA44 3B81B18E +cat. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . B4FbLK+Ip1aNPKkDAW27zhLDR6eI4ZY7nHhnaMu+P4t5wTXadveKdndm dGljq9eQ9Wh3hoP2svGFwj7tCKlD6pFC81p/TCIiIQxnm+9Iilqn2gYO lunKhJQ/2Tas4yBufFNWnnMSLxDEtB64z5OvZi6sAmnffgErh2+Qfz75 zCA= +cat. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QuYQfK2TZABjNUfwMYGRpyGCoP7tI3+iMZSsM7jKS0YwYhxZyxphnPkO o310un1US2lVPx/ag5cXdtGbcf6OYby5D3+sFF9GQPyhUPSDfwY16//i gxMLVjjvvKClQZs3fYJ/oc51359WdsDneH4V2K9GeaTrSt9ABEkj5wkS ItQ= +cat. 86400 IN NSEC cc. NS DS RRSIG NSEC +ns.nic.cat. 172800 IN A 84.88.0.162 +ns.nic.cat. 172800 IN AAAA 2001:40b0:1:3::2 +switch.nic.cat. 172800 IN A 130.59.138.49 +switch.nic.cat. 172800 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 +cc. 172800 IN NS a5.nstld.com. +cc. 172800 IN NS c5.nstld.com. +cc. 172800 IN NS d5.nstld.com. +cc. 172800 IN NS f5.nstld.com. +cc. 172800 IN NS g5.nstld.com. +cc. 172800 IN NS h5.nstld.com. +cc. 172800 IN NS l5.nstld.com. +cc. 86400 IN DS 519 8 1 7285EF05E1B4E679D4F072EEA9B00953E01F3AE2 +cc. 86400 IN DS 519 8 2 E1EC6495ABD34562E6F433DEE201E6C6A52CB10AF69C04D675DA692D 2D566897 +cc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j1rRckxGRcK36/SO2e/IKvsb1WtHM/LzjwmBVVonHcXbJux6ALe+fSpA 2UIDQZXq+Bz7cj3jNM2txXqtNyd0hVaSH48Bp2wcRbvrF5g3fPns2ulK f30ipM1MGv0i47rr7SoNvVSiGqdFh94jE/6TdiuhSGTQ4hJ5QWEBsM8l W14= +cc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ugq87qSDgqQOBZinCCPnegZCEr84s5D3oBKszZGyRETdJ/SbWft9t32m Nlk+0MlTqs91UbM2zMAOFsymj1G/KnP0aLRhWh+5aqcBN+p+qslHlZsP byx3LV8GMG2Yln9y066aFDZWoJqCOMm5KU/3KbCEkZ9r2Ksk8A1QsFVh vp8= +cc. 86400 IN NSEC cd. NS DS RRSIG NSEC +cd. 172800 IN NS dns.princeton.edu. +cd. 172800 IN NS ns1.pch.nic.cd. +cd. 172800 IN NS igubu.saix.net. +cd. 172800 IN NS sabela.saix.net. +cd. 86400 IN NSEC center. NS RRSIG NSEC +cd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RHd3Zzjn11EaE7VPvXAFeACp1NvsWa+5JmdYWY1FQfM9BaeasiXR8uRi YKrquKo6lEWf8exM+rZzVmBEtxPeVCON9Oslb58RupCMZinmREjTiUF3 h+xFqzwuKTwE8GxOV/YY4McnhAQYY1A+Zl3Q15C39uwfzu7zkwGl5Yov LBE= +ns1.pch.nic.cd. 172800 IN A 204.61.216.66 +ns1.pch.nic.cd. 172800 IN AAAA 2001:500:14:6066:ad::1 +center. 172800 IN NS demand.beta.aridns.net.au. +center. 172800 IN NS demand.alpha.aridns.net.au. +center. 172800 IN NS demand.delta.aridns.net.au. +center. 172800 IN NS demand.gamma.aridns.net.au. +center. 86400 IN DS 61060 8 2 F7B5230B71155E51F6E9EBE8467338CA2644DC34B08722E33105D498 A9226ACD +center. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . mvR4v+BvHXhlcza60Q6wPx8/KDyvli1Sc5wW36sVzQ611ulWFNhNK0Xp HudarvtNZccp9eFDsy1g4kmz7/eBZ3nyFGUjsvwhPbiG9JQwvI94B98i pZeOHb92QfBQStDA17JNW5RdaeZkiuC/k6j/esog3fhcc9EE0tNbevjl Kck= +center. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eYb6CAtxhtRM/HOWJGA69J9qqe8wGrFnQNBAkb1EnklYwIGLO+3TdOV3 8tTSxl1F8ROSQJDRmBpWbDW1bUgUaoOYp6i8eZWCTpnjvhPLFiApiPPs fyfhKoAVq2FT4oDt5vZhJqwzcC3G8yvGgaP+Wjx94Kf3yknxp01cO1vK BiI= +center. 86400 IN NSEC ceo. NS DS RRSIG NSEC +ceo. 172800 IN NS ns1.dns.nic.ceo. +ceo. 172800 IN NS ns2.dns.nic.ceo. +ceo. 172800 IN NS ns3.dns.nic.ceo. +ceo. 172800 IN NS ns4.dns.nic.ceo. +ceo. 172800 IN NS ns5.dns.nic.ceo. +ceo. 172800 IN NS ns6.dns.nic.ceo. +ceo. 172800 IN NS ns7.dns.nic.ceo. +ceo. 86400 IN DS 63689 8 1 DB7A8F6AADCEE147D241A9778857E94707234D4E +ceo. 86400 IN DS 63689 8 2 F2AB788C2802C3F219D53F37E7E1687ECF2E453E04BC5ABCC0B444FC 0E35B1EE +ceo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Piiog7RJg67/k14q4a30NV20XnoJp+t42pmGbVGAdYzofrP8YeLKM69g hFeg4P6s8P0GlUXZIY9uPICjH+W69utrvmxRA/r6Lf1efedkfchn/qT7 qd4o4Ttkv4hhrtmu48WxKJMtC46G3HddHnpsNp2MiiOK+RsgLIo/4r8A bvo= +ceo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LrKEJCqgOcC0Dzkx7A6eMEk3lLdTjPyvjzP0iGKeOg3pvU6Ggnia1R8k ZHkjN4HLe5cQ+UPimNjTpzE5iMvGIp5h3OYDAd35EIPXodwOCZnOBwrU mEmj2ieyolLutqYDjm9fM0nVEXdfYxJ8dSUlWUiahj7+Lq8TVqzzTODu KZQ= +ceo. 86400 IN NSEC cf. NS DS RRSIG NSEC +ns1.dns.nic.ceo. 172800 IN A 156.154.144.37 +ns1.dns.nic.ceo. 172800 IN AAAA 2610:a1:1071::25 +ns2.dns.nic.ceo. 172800 IN A 156.154.145.37 +ns2.dns.nic.ceo. 172800 IN AAAA 2610:a1:1072::25 +ns3.dns.nic.ceo. 172800 IN A 156.154.159.37 +ns3.dns.nic.ceo. 172800 IN AAAA 2610:a1:1073::25 +ns4.dns.nic.ceo. 172800 IN A 156.154.156.37 +ns4.dns.nic.ceo. 172800 IN AAAA 2610:a1:1074::25 +ns5.dns.nic.ceo. 172800 IN A 156.154.157.37 +ns5.dns.nic.ceo. 172800 IN AAAA 2610:a1:1075::25 +ns6.dns.nic.ceo. 172800 IN A 156.154.158.37 +ns6.dns.nic.ceo. 172800 IN AAAA 2610:a1:1076::25 +ns7.dns.nic.ceo. 172800 IN A 207.34.5.10 +ns7.dns.nic.ceo. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +cf. 172800 IN NS a.ns.cf. +cf. 172800 IN NS b.ns.cf. +cf. 172800 IN NS c.ns.cf. +cf. 172800 IN NS d.ns.cf. +cf. 86400 IN NSEC cg. NS RRSIG NSEC +cf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CJHwNIgcSgW7MCCERUqUdrz7nUFwzeJNWPriJ1REwIL2WefT83t5g63D aIByt56alAgwnoE/elvEKxTOEyrnVsWWhy0VBrNGnDhva5baaO04U7V6 Tu62YPRBIEWyEr5pH0XfJiXPE4DN2X/HIhy7gWiA+ChueKf+uHs1LNmP WKc= +a.ns.cf. 172800 IN A 185.21.168.17 +a.ns.cf. 172800 IN AAAA 2a04:1b00:4::1 +b.ns.cf. 172800 IN A 185.21.169.17 +b.ns.cf. 172800 IN AAAA 2a04:1b00:5::1 +c.ns.cf. 172800 IN A 185.21.170.17 +c.ns.cf. 172800 IN AAAA 2a04:1b00:6::1 +d.ns.cf. 172800 IN A 185.21.171.17 +d.ns.cf. 172800 IN AAAA 2a04:1b00:7::1 +cg. 172800 IN NS dns.dnsafrica.net. +cg. 172800 IN NS dns.princeton.edu. +cg. 172800 IN NS sunic.sunet.se. +cg. 86400 IN NSEC ch. NS RRSIG NSEC +cg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ksb0dNmjMxPNmhFquT3Cpke18YGvkU0IhHB44GBQBfrs3+r+sljjvoqH WwWaBuHRxu0ETSvW5Pp2rCvP25y+q0JVYbbH+tAEdwEJFefrj3Tni/tF Jt9+b6CQLe5GHKYsVCPs3/KyBbE5UFh1Sr4NX35zdUr1htESQ4pahCfp HHg= +ch. 86400 IN NSEC cheap. NS DS RRSIG NSEC +ch. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Op8S+ELj3isxc8o/7EwxLTkIe3KL6FpNBzylMuUtZFcf/etYtzPp01DM bKDYYReBDhN/rVONxSb8x+aHvQJOIcpCGlZhAJFtRvtDx1DKs3TGP1yj ZoNsB37EMfDaESwTqe3RDj1CtAxwf/ukpOpVXV8cll71pbRskjbxKcxY +Jw= +ch. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UmQkAs5gsaQhREHjAjy+sB0c+CpafRHbLYJdipDTuXqsoPTu8jHog9hy dFWufEwmzfidwwKpqDkmTjTci+ZjC7J/AKd25EvU2ONA4RWcCi5HhNQk leyZFTxpE/TSa4gailBkZyMt+IKr5EhNlw0+jrzBqc7iGG325MXHfcTu qRw= +ch. 172800 IN NS a.nic.ch. +ch. 172800 IN NS b.nic.ch. +ch. 172800 IN NS c.nic.ch. +ch. 172800 IN NS d.nic.ch. +ch. 172800 IN NS e.nic.ch. +ch. 172800 IN NS f.nic.ch. +ch. 172800 IN NS h.nic.ch. +ch. 86400 IN DS 24859 8 2 9AFD21261EAF98AFD7E24E89BE6B25767F93EB401C6C3DF21342F40E E82DCCF0 +ns.itu.ch. 172800 IN A 156.106.192.121 +a.nic.ch. 172800 IN A 130.59.1.80 +a.nic.ch. 172800 IN AAAA 2001:620::4 +b.nic.ch. 172800 IN A 130.59.211.10 +b.nic.ch. 172800 IN AAAA 2001:620::5 +c.nic.ch. 172800 IN A 147.28.0.39 +c.nic.ch. 172800 IN AAAA 2001:418:1::39 +d.nic.ch. 172800 IN A 200.160.0.5 +d.nic.ch. 172800 IN AAAA 2001:12ff:0:a20::5 +e.nic.ch. 172800 IN A 194.0.17.1 +e.nic.ch. 172800 IN AAAA 2001:678:3::1 +f.nic.ch. 172800 IN A 194.146.106.10 +f.nic.ch. 172800 IN AAAA 2001:67c:1010:2::53 +h.nic.ch. 172800 IN A 194.42.48.120 +ns2.switch.ch. 172800 IN A 130.59.138.49 +ns2.switch.ch. 172800 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 +cheap. 172800 IN NS demand.beta.aridns.net.au. +cheap. 172800 IN NS demand.alpha.aridns.net.au. +cheap. 172800 IN NS demand.delta.aridns.net.au. +cheap. 172800 IN NS demand.gamma.aridns.net.au. +cheap. 86400 IN DS 37507 8 2 1F76AD552F924D9182B3D34973F8608A14458D8AE0C994C367FF3573 289DE494 +cheap. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . AAXAeUXos2eB0H7u5tDZ6PFJW1IYVu0mxoNmUZs4O85vur39eG0ypALn NYLAXneX9woBNfU8gnwHr81E2OKSAbIzeDT4YNIUokEK25OT8QHun0rU Xkt1yd8L6lwA6cEjLhOUtp0H8hQa7jcyT+GPrnue8c3WXebXvPP/1yzJ 95w= +cheap. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n+3N6uTET1EbzVDxKYnv1Lg5e2EAL88pVANOix8XJ6J+gIbyxvkn5Aci bAEwCLKKgVOYHW3FhjBvojPvJFWvo9zcyIooQao/DfMbryhdRKdbdKu/ hvYJeJCBpA/McxOE00CIkjmaz8V0UrWwF7TxkVubSwoplbkf+975YWDS 1Yw= +cheap. 86400 IN NSEC ci. NS DS RRSIG NSEC +ci. 172800 IN NS ci.cctld.authdns.ripe.net. +ci. 172800 IN NS ci.hosting.nic.fr. +ci. 172800 IN NS ns.nic.ci. +ci. 172800 IN NS ns1.ird.fr. +ci. 172800 IN NS ns1.nic.ci. +ci. 172800 IN NS ns-ci.afrinic.net. +ci. 172800 IN NS phloem.uoregon.edu. +ci. 86400 IN NSEC ck. NS RRSIG NSEC +ci. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i+Wwt3vm2JGYP8fDrOJ6r5RD/e4MNTghNqj7r/2mR0Agk00hTHOBw0J5 Sr8i1AiLoXWBfpc5C1BvF/OdTxUqumrenqFo9Q926iaAqyuprD+JWcRS tFvceoigsXXQVZWf2u5rfl6rl2/jbZv3w2hurhRoGKXvY2qAW9WJcXab QGg= +ns.nic.ci. 172800 IN A 213.136.100.81 +ns1.nic.ci. 172800 IN A 213.136.106.214 +ck. 172800 IN NS circa.mcs.vuw.ac.nz. +ck. 172800 IN NS parau.oyster.net.ck. +ck. 172800 IN NS poiparau.oyster.net.ck. +ck. 172800 IN NS downstage.mcs.vuw.ac.nz. +ck. 86400 IN NSEC cl. NS RRSIG NSEC +ck. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Exy566mOQ+PUiyQAt2/XvuFocd/Qekw+Q+f+PVz4Hrx4DKKbZypgrqGG U5mRVMgsv9yRgyZHf1o+lsbt/gUv6dxpUEOpOPYWWAbaQioLwHj3k9kI WAfJkSv5De/vVtNozu7WvAMCZ5dpQtallzCb4wWzq+I1ag4ayRxu/Iyi djk= +parau.oyster.net.ck. 172800 IN A 202.65.32.128 +poiparau.oyster.net.ck. 172800 IN A 202.65.32.127 +cl. 86400 IN NSEC clothing. NS DS RRSIG NSEC +cl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rwjADsGjlyaJgeJdNMiEwpxZ8f7H6IxjKHnmBfciTnLb4A8jqHzzc9DT GHrilnwhgAI/82TcLMGYu2c5L7U1UATPnXmHJzA51354UIO7BxQ/pPH4 9bfCnG3ZyyoevXNRp1M68ms9PNNXY/f9bTESrZwZyTRd7wI0IHQh40ms Z1o= +cl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XcVbK2nUj8PncasQVvRmuOGNT8/h87YQjIwizQ2YbGIsuHyThx0mZ6oH P1kmLMQ/XL+Y7exHjqxg3GubPQia7AkWkdwecz78sRRW8WqJrkKRpVUM J0Lx92KWFabCplUrOXMl/jPlskcUUqnVNjQeIRvQ7jBkZWR5XJH9XU+S BjM= +cl. 172800 IN NS a.nic.cl. +cl. 172800 IN NS b.nic.cl. +cl. 172800 IN NS c.nic.cl. +cl. 172800 IN NS cl1.dnsnode.net. +cl. 172800 IN NS cl-ns.anycast.pch.net. +cl. 172800 IN NS sns-pb.isc.org. +cl. 86400 IN DS 21199 8 2 7D756DFFAB6D3CD9C786FF5C659954C22944FAEF9433EEE26F1D84EB 5370B394 +a.nic.cl. 172800 IN A 200.1.121.10 +b.nic.cl. 172800 IN A 200.7.4.7 +b.nic.cl. 172800 IN AAAA 2001:1398:274:0:200:7:4:7 +c.nic.cl. 172800 IN A 200.16.112.16 +ns-ext.nic.cl. 172800 IN A 200.1.123.14 +clothing. 172800 IN NS demand.beta.aridns.net.au. +clothing. 172800 IN NS demand.alpha.aridns.net.au. +clothing. 172800 IN NS demand.delta.aridns.net.au. +clothing. 172800 IN NS demand.gamma.aridns.net.au. +clothing. 86400 IN DS 28024 8 2 A7E284ED01F675CFDB1161FC8B23680B2196CC78FF1D757120E45D28 EA02606E +clothing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cRqIw6MonQpGS1TfFaYEllha14yZul2C++cL7Q85gkCKnikYCbGbl3hd QLJHIbszX7C50OTHS2ICCMXmCkhJW82uwZdixuRHOL+aF2vvkPWGuqzw bmungJmwKEIaAeFTQLAVa+gRF4ZDfOWe2i2DDomaAgtBzTC9EwB4omMy CAo= +clothing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eUp+Gv+zKjIOLIeK4ZOzEJTtMc4P/4fUa22OufvM1RwSGaOFwPJJM0QJ MztS6Lq0ImfFW1tJ+s7Zcgjsk/V1PnmwX/EzQYQizkUUNJoWt71FHtKW AZdFl9ngKNJjFHTkdZt7VdakIu37iRbK+CsWVIlkYN6ljKQrFJ7XTuvY mis= +clothing. 86400 IN NSEC club. NS DS RRSIG NSEC +club. 172800 IN NS ns1.dns.nic.club. +club. 172800 IN NS ns2.dns.nic.club. +club. 172800 IN NS ns3.dns.nic.club. +club. 172800 IN NS ns4.dns.nic.club. +club. 172800 IN NS ns5.dns.nic.club. +club. 172800 IN NS ns6.dns.nic.club. +club. 172800 IN NS ns7.dns.nic.club. +club. 86400 IN DS 9346 8 1 3E247E0A6BC2660B58ABF34967A2EA60B7944568 +club. 86400 IN DS 9346 8 2 3668A7F42E8BDCE70C17B8A8DE9F4505F8E10D4C1E95BBD3FB0DE6A4 88450C47 +club. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iT7wP50RQ713/8A0FPGTj1RoNUY8XlAxnpayChXZAzwO7XYI4zV8ySp3 Zi129Jg5QxPwnB+J6xCr9CSDgc+wcFbE31qIvB6Fuw749+5728Ysb/48 jCZCnqirYht0+tZ2vdAlZOEoWHnAzXEXd6GfYrZm51D3naOyPPXB+gyn b0o= +club. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ta/7/CPL9BAKYWTz6qDHYASrP4MBOZlYd/ZJ+YuT3XhBj65U2AG9kB1k 4o9ufYeRy3UlbmgiE0IByd/gpcZRiTlekFNfH0jJira0jGhfT+opoivT dqlpjmmMQgc8Ndh0FpCZ976o4qX0JdLjRxd6A/mbjQSpKdSbVoblQNqZ rfE= +club. 86400 IN NSEC cm. NS DS RRSIG NSEC +ns1.dns.nic.club. 172800 IN A 156.154.144.215 +ns1.dns.nic.club. 172800 IN AAAA 2610:a1:1071::d7 +ns2.dns.nic.club. 172800 IN A 156.154.145.215 +ns2.dns.nic.club. 172800 IN AAAA 2610:a1:1072::d7 +ns3.dns.nic.club. 172800 IN A 156.154.159.215 +ns3.dns.nic.club. 172800 IN AAAA 2610:a1:1073::d7 +ns4.dns.nic.club. 172800 IN A 156.154.156.215 +ns4.dns.nic.club. 172800 IN AAAA 2610:a1:1074::d7 +ns5.dns.nic.club. 172800 IN A 156.154.157.215 +ns5.dns.nic.club. 172800 IN AAAA 2610:a1:1075::d7 +ns6.dns.nic.club. 172800 IN A 156.154.158.215 +ns6.dns.nic.club. 172800 IN AAAA 2610:a1:1076::d7 +ns7.dns.nic.club. 172800 IN A 207.34.5.10 +ns7.dns.nic.club. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +cm. 172800 IN NS cm.cctld.authdns.ripe.net. +cm. 172800 IN NS ns.itu.ch. +cm. 172800 IN NS kim.camnet.cm. +cm. 172800 IN NS lom.camnet.cm. +cm. 172800 IN NS auth02.ns.uu.net. +cm. 172800 IN NS sanaga.camnet.cm. +cm. 86400 IN NSEC cn. NS RRSIG NSEC +cm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lcTLjFcDFEoziDZUsTCcl0V5XJc9Tk4QxVbA9B3U4lwIuJdHfe6bpOis /9IQZ9459GXWKNE/Fb/SpZNYj3jvI1LsfPaHgKr07+e01SOXMIN8Fa+b lkVflTw1BDxR7LIKfNJG/2G5010l5fqPTg1sl0H5gcW1HozbzTRst3oJ kw4= +kim.camnet.cm. 172800 IN A 195.24.192.35 +lom.camnet.cm. 172800 IN A 195.24.192.34 +sanaga.camnet.cm. 172800 IN A 195.24.192.17 +cn. 86400 IN NSEC co. NS DS RRSIG NSEC +cn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qdNp9XKqnw8tBIXGMTf0NSmZxLzxQU0qL9EFiQyjUlNh88mxht5kFQwv AujUJ0BoGr02RHP+DouC+VaCPR/klf14rl6XlZqZdQZLsn/G0QqJvBuI ZzGkJRmTBhP6nHt25SDaSTCz+ifv+9FES3zwtYS8VPdZkyUDGfb1i9R+ aaA= +cn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . FBn+YlGHSuxX9SzLejfnkN6brRziCWEHvV5n39wLVOfgNVZ9jWtSFIG9 eZcBbclRv/131+O1mqOmLcqu0fBEcKBWGZOcWRXSyyCwYsJg8/krpd3O IDBEdYxry+OF7vsILMU3Eyh6PMKW9WVxp4hfdRbOCWZs3rScWLHuzBWe z/Y= +cn. 172800 IN NS a.dns.cn. +cn. 172800 IN NS b.dns.cn. +cn. 172800 IN NS c.dns.cn. +cn. 172800 IN NS d.dns.cn. +cn. 172800 IN NS e.dns.cn. +cn. 172800 IN NS ns.cernet.net. +cn. 86400 IN DS 54694 8 2 ED958DDCD959A23D3181CCC4610AE4B2166A072A057B95DDDCCD4232 56441C1A +ns1.conac.cn. 172800 IN A 111.235.161.1 +ns1.conac.cn. 172800 IN AAAA 2401:b400:1::1 +ns2.conac.cn. 172800 IN A 111.235.162.1 +ns2.conac.cn. 172800 IN AAAA 2401:b400:8::1 +ns3.conac.cn. 172800 IN A 111.235.163.1 +ns3.conac.cn. 172800 IN AAAA 2401:b400:9::1 +ns4.conac.cn. 172800 IN A 111.235.164.1 +ns5.conac.cn. 172800 IN A 111.235.165.1 +a.dns.cn. 172800 IN A 203.119.25.1 +a.dns.cn. 172800 IN AAAA 2001:dc7::1 +b.dns.cn. 172800 IN A 203.119.26.1 +c.dns.cn. 172800 IN A 203.119.27.1 +d.dns.cn. 172800 IN A 203.119.28.1 +d.dns.cn. 172800 IN AAAA 2001:dc7:1000::1 +e.dns.cn. 172800 IN A 203.119.29.1 +h.dns.cn. 172800 IN A 125.208.32.1 +h.dns.cn. 172800 IN AAAA 2001:dc7:fffe::1 +i.dns.cn. 172800 IN A 125.208.33.1 +i.dns.cn. 172800 IN AAAA 2001:dc7:ffff::1 +j.dns.cn. 172800 IN A 125.208.34.1 +k.dns.cn. 172800 IN A 125.208.35.1 +l.dns.cn. 172800 IN A 125.208.36.1 +a.ngtld.cn. 172800 IN A 125.208.40.1 +a.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc1::1 +b.ngtld.cn. 172800 IN A 125.208.41.1 +b.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc2::1 +c.ngtld.cn. 172800 IN A 125.208.42.1 +c.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc3::1 +d.ngtld.cn. 172800 IN A 125.208.43.1 +e.ngtld.cn. 172800 IN A 125.208.44.1 +co. 172800 IN NS ns1.cctld.co. +co. 172800 IN NS ns2.cctld.co. +co. 172800 IN NS ns3.cctld.co. +co. 172800 IN NS ns4.cctld.co. +co. 172800 IN NS ns5.cctld.co. +co. 172800 IN NS ns6.cctld.co. +co. 86400 IN DS 27859 8 1 63D2DAEB4D479BD4DFF4202D9BDC82B309C2CCD5 +co. 86400 IN DS 27859 8 2 EF8F5B56FA9A79EF29A82330DB625BA19CE3A5B140B24287855DDAAA 03EA369B +co. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . AIBcx78R5pAUv6abTw2fYZ9Kme/TepewdJ+yKcyHiLtZzuixE4WnsqsI L/BVhtklNe8Hqyu2JGV/7DEtLiMfijPUAMQOpoC81gbobIpH8a9eq04z DzpVjVvs4ufcwFp60K0eE/vTI+1IRL2BFzc2yZkX2nk+lrYIT6tSwU3Z lW8= +co. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YIPZ4OpeHexVnJ1ld988RGp+B9KLtPcc8gADXDEOgc7P9WWgKHJBFiPq uVB2ZOO0+uicxgVP16RuzxZX80BlNZnXyUqwNfspd0RzjfyM/gpegWwF MbVVMeixzuGb2PvQECuHpMivw3fI2Je92U3nEt1xlMy6AdpO+mHTCs0x w30= +co. 86400 IN NSEC codes. NS DS RRSIG NSEC +ns1.cctld.co. 172800 IN A 156.154.100.25 +ns1.cctld.co. 172800 IN AAAA 2001:502:2eda::21 +ns2.cctld.co. 172800 IN A 156.154.101.25 +ns2.cctld.co. 172800 IN AAAA 2001:502:ad09::21 +ns3.cctld.co. 172800 IN A 156.154.102.25 +ns3.cctld.co. 172800 IN AAAA 2610:a1:1009::21 +ns4.cctld.co. 172800 IN A 156.154.103.25 +ns4.cctld.co. 172800 IN AAAA 2610:a1:1010::21 +ns5.cctld.co. 172800 IN A 156.154.104.25 +ns5.cctld.co. 172800 IN AAAA 2610:a1:1011::21 +ns6.cctld.co. 172800 IN A 156.154.105.25 +ns6.cctld.co. 172800 IN AAAA 2610:a1:1012::21 +codes. 172800 IN NS demand.beta.aridns.net.au. +codes. 172800 IN NS demand.alpha.aridns.net.au. +codes. 172800 IN NS demand.delta.aridns.net.au. +codes. 172800 IN NS demand.gamma.aridns.net.au. +codes. 86400 IN DS 27250 8 2 FE5F7FDA8B08DB3EF8B4B05DD3ED27C9387DAE66543F9D5870E402D1 1D7B2DDF +codes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WpONRhJ0eEJRLGqmW8ly9eS+hgzPQ4cnHFafof2Z3bBW3IyBa8lmdFMv fq8XHtFN7BV3WOyiBz+ntEi6/YGkMi16uJ4mBK6CRinAgZaHjwCNcic3 QZ4+OpW0IdsT/txjUWKT3+6mMILCaoLjKu3HDdcNV18iYas7i0/Tk2Q0 9ZA= +codes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jZQPL1Dhhmx4TAGm0FvJx/X8bccKxCJzlZ+3OZCIB5CrERjkNPtTx+d8 4OVlysUiNRUJ9BBtbU2ECbJC2gt5LKsGy3ZLkjFlEe9GqbTNzc6Jsap2 877JV7t5lc94h2GcpHdXm12VEa2je0i2BiwnfApRt4PzmOY8znLAejVh cKc= +codes. 86400 IN NSEC coffee. NS DS RRSIG NSEC +coffee. 172800 IN NS demand.beta.aridns.net.au. +coffee. 172800 IN NS demand.alpha.aridns.net.au. +coffee. 172800 IN NS demand.delta.aridns.net.au. +coffee. 172800 IN NS demand.gamma.aridns.net.au. +coffee. 86400 IN DS 41122 8 2 6CCD81F37B53B3959B28C8BE299BD41FACBE306676E636FFF9556AEA A1948F2C +coffee. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . T9GPGPQ+HDahjoim90zh3wYYSuJnHTcYLpPMExnjU4uILCn4wB0pI/l5 S4hEO1Yfje/ysjNHotwjQQ1DY5QjZKec6DAEctDXD9Kum6Pz160VrS3M EK2MyOKXPTDAGygbEhg9vjzF46B97Shtnf0NPrqr9dviNMd63dzY0u8V oDs= +coffee. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MBWctDjLCRqMx6Hg3tBlpokb6vctSWmHm/XqCVWGx19elrgjt5d73J4x lAcoiyLAH0Y/Ug6fE2lLJCNIP0hBuU61DbVZW+822x0Dv5Mz/auAqG2w 3o/ksGbuVeCMFkRWA8SyNjXlxphpRApmEZBlq+KtSnyUHywL091c/tNC n00= +coffee. 86400 IN NSEC com. NS DS RRSIG NSEC +com. 86400 IN NSEC community. NS DS RRSIG NSEC +com. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Vbr/xatYqKwWnrziR5TqEG1/dcQAHADsjB3nX/qDWV+WkTnIfFKVMyEn mO+m6eAwjdAQAhc1ulXWZZUNYrJKUUazBrXIhRWMjyv6RaO9yjJBVNs0 NeleJi9UwqxrctZC0LVtmSURy1dtm8ew6/pLMS2j9flr8x/6FZ/Toen9 nRA= +com. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cYMUx01ATxj7aUmi3UcANxm4y5RUS2zCWnTZ47bCziUqRMNfJeywYf7W oPDl+EtjHI18x7hE+PspjQ0sWXp+HHIF61S3geRw3DPpk7mOE252zL9+ W5F+O7w3wgcv6rnkjIHKW9BXHoW7qhghIxeZf8RdzrKTLDNqHMCIbYzJ wvs= +com. 172800 IN NS a.gtld-servers.net. +com. 172800 IN NS b.gtld-servers.net. +com. 172800 IN NS c.gtld-servers.net. +com. 172800 IN NS d.gtld-servers.net. +com. 172800 IN NS e.gtld-servers.net. +com. 172800 IN NS f.gtld-servers.net. +com. 172800 IN NS g.gtld-servers.net. +com. 172800 IN NS h.gtld-servers.net. +com. 172800 IN NS i.gtld-servers.net. +com. 172800 IN NS j.gtld-servers.net. +com. 172800 IN NS k.gtld-servers.net. +com. 172800 IN NS l.gtld-servers.net. +com. 172800 IN NS m.gtld-servers.net. +com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766 +ns.amarshallinc.com. 172800 IN A 71.163.249.97 +ns.blacknightsolutions.com. 172800 IN A 217.114.173.6 +ns.blacknightsolutions.com. 172800 IN AAAA 2a01:a8:fe00::2 +ns2.blacknightsolutions.com. 172800 IN A 82.96.97.64 +ns2.blacknightsolutions.com. 172800 IN AAAA 2001:1bc0:ab:3::2 +ns-tld1.charlestonroadregistry.com. 172800 IN A 216.239.32.105 +ns-tld1.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:32::69 +ns-tld2.charlestonroadregistry.com. 172800 IN A 216.239.34.105 +ns-tld2.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:34::69 +ns-tld3.charlestonroadregistry.com. 172800 IN A 216.239.36.105 +ns-tld3.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:36::69 +ns-tld4.charlestonroadregistry.com. 172800 IN A 216.239.38.105 +ns-tld4.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:38::69 +ns-tld5.charlestonroadregistry.com. 172800 IN A 216.239.60.105 +ns-tld5.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4805::69 +uucp-gw-1.pa.dec.com. 172800 IN A 204.123.2.18 +uucp-gw-2.pa.dec.com. 172800 IN A 204.123.2.19 +dns3.dotukr.com. 172800 IN A 37.187.75.31 +dns3.dotukr.com. 172800 IN AAAA 2001:41d0:a:2b1f::1 +austin.gh.com. 172800 IN A 196.3.64.1 +mantse.gh.com. 172800 IN A 193.194.185.2 +ns1.iafrica.com. 172800 IN A 196.7.0.139 +hoppy.iom.com. 172800 IN A 217.23.163.140 +pebbles.iom.com. 172800 IN A 80.168.83.242 +tld.isc-sns.com. 172800 IN A 38.103.2.3 +ns-mg.malagasy.com. 172800 IN A 87.98.132.231 +ns1.neoip.com. 172800 IN A 62.90.247.118 +ns2.neoip.com. 172800 IN A 208.109.17.150 +ns5.nominum.com. 172800 IN A 74.121.127.35 +a5.nstld.com. 172800 IN A 192.5.6.34 +a6.nstld.com. 172800 IN A 192.5.6.35 +c5.nstld.com. 172800 IN A 192.26.92.34 +c6.nstld.com. 172800 IN A 192.26.92.35 +d5.nstld.com. 172800 IN A 192.31.80.34 +d6.nstld.com. 172800 IN A 192.31.80.35 +f5.nstld.com. 172800 IN A 192.35.51.34 +f5.nstld.com. 172800 IN AAAA 2001:503:d414::2:34 +f6.nstld.com. 172800 IN A 192.35.51.35 +f6.nstld.com. 172800 IN AAAA 2001:503:d414::2:35 +g5.nstld.com. 172800 IN A 192.42.93.34 +g6.nstld.com. 172800 IN A 192.42.93.35 +h5.nstld.com. 172800 IN A 192.54.112.34 +h5.nstld.com. 172800 IN AAAA 2001:502:8cc::2:34 +h6.nstld.com. 172800 IN A 192.54.112.35 +h6.nstld.com. 172800 IN AAAA 2001:502:8cc::2:35 +j6.nstld.com. 172800 IN A 192.48.79.35 +k6.nstld.com. 172800 IN A 192.52.178.35 +l5.nstld.com. 172800 IN A 192.41.162.34 +l6.nstld.com. 172800 IN A 192.41.162.35 +m6.nstld.com. 172800 IN A 192.55.83.35 +ns1.orangecaraibe.com. 172800 IN A 193.251.160.222 +ns1.pair.com. 172800 IN A 209.68.1.11 +kynse01.perimeterusa.com. 172800 IN A 216.54.168.26 +kynse02.perimeterusa.com. 172800 IN A 216.54.168.27 +kynse03.perimeterusa.com. 172800 IN A 216.54.168.28 +kynsw01.perimeterusa.com. 172800 IN A 165.212.160.15 +kynsw02.perimeterusa.com. 172800 IN A 165.212.160.16 +kynsw03.perimeterusa.com. 172800 IN A 165.212.160.17 +rain.psg.com. 172800 IN A 147.28.0.34 +rip.psg.com. 172800 IN A 147.28.0.39 +rip.psg.com. 172800 IN AAAA 2001:418:1::39 +ns1.net.reach.com. 172800 IN A 134.159.2.140 +ns2.tojikiston.com. 172800 IN A 193.111.11.4 +dns1.tld.tutby.com. 172800 IN A 178.124.133.53 +dns2.tld.tutby.com. 172800 IN A 93.125.30.44 +dns3.tld.tutby.com. 172800 IN A 195.137.160.10 +dns3.tld.tutby.com. 172800 IN AAAA 2a01:d8:2:1::2 +dns4.tld.tutby.com. 172800 IN A 62.212.73.101 +dns5.tld.tutby.com. 172800 IN A 46.165.217.94 +dns6.tld.tutby.com. 172800 IN A 108.59.8.66 +dns7.tld.tutby.com. 172800 IN A 103.23.93.36 +dns1.u-registry.com. 172800 IN A 184.22.82.74 +dns1.u-registry.com. 172800 IN AAAA 2607:f878:3:39c::2 +a.zdnscloud.com. 172800 IN A 1.8.240.1 +b.zdnscloud.com. 172800 IN A 1.8.241.1 +c.zdnscloud.com. 172800 IN A 1.8.242.1 +d.zdnscloud.com. 172800 IN A 1.8.243.1 +e.zdnscloud.com. 172800 IN A 119.167.248.154 +f.zdnscloud.com. 172800 IN A 182.131.23.22 +g.zdnscloud.com. 172800 IN A 111.12.148.111 +i.zdnscloud.com. 172800 IN AAAA 2401:8d00:1::1 +j.zdnscloud.com. 172800 IN AAAA 2401:8d00:2::1 +community. 172800 IN NS demand.beta.aridns.net.au. +community. 172800 IN NS demand.alpha.aridns.net.au. +community. 172800 IN NS demand.delta.aridns.net.au. +community. 172800 IN NS demand.gamma.aridns.net.au. +community. 86400 IN DS 53317 8 2 755228E2F18777FFC5DA203D2984565804E3236ABC72B3762E832171 E977C423 +community. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tdETGIAoBH+3wWIJaCfNqoSD4GH/BHuS55E/xOcFBq6JnP9vW+rzSygH kXhVSG/BRNWDpPC7IOiP/+BOQB///0SMoki0Cajl2U30tZFegIsjtqiP 3u+F1ln1dDjkspdM3pz8R9iy4iZnOe4LYDRnmF9uP3M7/uuPPasx9RTj YtI= +community. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hkCF4asNVJmjykCxomKXbo1zD8QpBlmeoim+vpL5d4yUdowY6B+fCSzg altlw9cZD5m8odVUqayUtG9o6M3rrTSWGVYO4YJrTigaMu5qQXPBB6a6 JTYqLiutRGo9cBTSAkashXzdKN3FExBszserN1XKXSLJVAdYBsXi/da/ VhY= +community. 86400 IN NSEC company. NS DS RRSIG NSEC +company. 172800 IN NS demand.beta.aridns.net.au. +company. 172800 IN NS demand.alpha.aridns.net.au. +company. 172800 IN NS demand.delta.aridns.net.au. +company. 172800 IN NS demand.gamma.aridns.net.au. +company. 86400 IN DS 1405 8 2 DD824CAD96C6CBC6A29CF7847CABAD991908ADC0F88EE9EA52763F41 C93A99CF +company. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jwLP49LyRs2nprSaawjfY03AVeJgL+1Ez+33HnnbrRBKcIG9DHOVavcw aZGAmlurExR4cEU2K8hAr2s55ZqAOAy5fhcZazqmsXSQdgeS5/xH4iZD 1yHzLT0XFP6JQLIiAB345Ahbn/8OaP12PFhVoHpXTPHCZ31WmVCJoxjI CwQ= +company. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bpmbivVQTpkH2yk0zF5iMpZvMdrZOfkDsEuvmb8Ko6sZ8nSIJXEYGmZA GGWsxOX2rx6LpWE4R6W7KZZKseTbQa0X83Ra2URT7Hec7m3DeHpiUTT5 ZbqdQ9T2mK9CcewF40Dl01Z/5zxC0bmEhi330FFdPva1Msv6YR3lBFTk U90= +company. 86400 IN NSEC computer. NS DS RRSIG NSEC +computer. 172800 IN NS demand.beta.aridns.net.au. +computer. 172800 IN NS demand.alpha.aridns.net.au. +computer. 172800 IN NS demand.delta.aridns.net.au. +computer. 172800 IN NS demand.gamma.aridns.net.au. +computer. 86400 IN DS 7609 8 2 9DE689F8D8A206CDC040867BED094D9095468046181CB2EF827964CA 4C1FBED5 +computer. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PSNw30QCJ/fS60g4bP+82VAUPcoGFU8xXu2Yue74I9PXlJ9ZHRY3v6N4 YGxjxS/ZdAlBhXJVAouPhWypIE38ezySaF5ork5i5/9U08R8EZE7M4MT Q/H4Ef2czjqo4d1XIbwCcTbzsxEwsOCfj+OJQ4YI4bigJvjqub0FeRhO CMs= +computer. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rwJMRwh3wOlN44ggx3lv5YvvCZp6ApTfo0hjK6LB3W9fEoF4lHGNlXhf 4icwtFO6puHL7FxY0Z4YuhI5H0h4exgiUsmlvswDRLz8mN9opqC1Dtrg k+8TiIjSo+O62J8SklBiCPdyeSzZLjFLoOZdFh33p6gYjOwtq+sJVzrT 2hM= +computer. 86400 IN NSEC construction. NS DS RRSIG NSEC +construction. 172800 IN NS demand.beta.aridns.net.au. +construction. 172800 IN NS demand.alpha.aridns.net.au. +construction. 172800 IN NS demand.delta.aridns.net.au. +construction. 172800 IN NS demand.gamma.aridns.net.au. +construction. 86400 IN DS 25387 8 2 0E55A903286DA4CCADC2AEDCB01AEC17D9C7DF3AA8199435C6384CD0 ACB1544C +construction. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MbRX8J+gro1NQeQNjt0WW7RBMNTQVlsWoc31G3yUZaAi0WY9+MojmY79 RYp8qe8KbWbwciTh6s4sAMOFnTE/3+nSBr51phX6XCwZnHfgdOIuqQxU lVvXRPit+QVsnPcPzIuG8uVwcLxb0/w854pg6gE2Q0hcMDxp3HMyhDtf 07g= +construction. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fbLRIW5Gbx3wf4r+U6Ki7NTZMbCRd2W53n4n7k5W6orex3KGXHBgy1zW G+3gyajKyGDdF+6nIjKH3Ovo7rE2YUWFTW2L3jCNTLRNrC4YY0Cvf8+R 0eAAdlxQHwHrK6ST66x34p67kI1/0ifbreaVjI2XX3NntxjRMU6xk0zK lmM= +construction. 86400 IN NSEC contractors. NS DS RRSIG NSEC +contractors. 172800 IN NS demand.beta.aridns.net.au. +contractors. 172800 IN NS demand.alpha.aridns.net.au. +contractors. 172800 IN NS demand.delta.aridns.net.au. +contractors. 172800 IN NS demand.gamma.aridns.net.au. +contractors. 86400 IN DS 41329 8 2 7CEAEF507AFD5AE73139D4D7E66A40C8B779B5360ABDDCFD7E420C50 3D51A34F +contractors. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PMKyvskJc2k48KaJMKaHj7krfjbMB2WRtdSOmrehQv6op0S2JWhIxh/S v1vtcBvQ7fFS4OWlwSS0hiR7WhQqVdhrZ9j/S12RTyzPKaSnLplTv/nU jSs1VKckyGN3uaBf7LxVtkPQip6bqGoTM57w1AEBE5jsqBhoXERHY1Qb 4EY= +contractors. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QFoIWqT7ZCZFsxBfSwGDD6USe4dQReKfuAA+6VewrmjfqSdCEkr0xwEJ xnQmWR9L1kGd7/n2+OQCNyXIe23hFK6sT7o0w3MAVPBZP2A2C+LjzLVk 9jB1a8ZXe6xwKItZko45AoX8DqP04qOTh/NHWcet2V08XMvncm5otPhl bf0= +contractors. 86400 IN NSEC cool. NS DS RRSIG NSEC +cool. 172800 IN NS demand.beta.aridns.net.au. +cool. 172800 IN NS demand.alpha.aridns.net.au. +cool. 172800 IN NS demand.delta.aridns.net.au. +cool. 172800 IN NS demand.gamma.aridns.net.au. +cool. 86400 IN DS 42496 8 2 A929B4028524A61985D70357680987D69D74444331A25A049A3FE950 F8F734A4 +cool. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IO7UyIUio6fQi5nDwHXcACbMcPCULQBSg4ewlCJpsCDjOB7fzmv5mrDd PISn6hnRUWSzWQXFnbZkWzHOY6JEzZ4N8M0v2wj2Lqx/JTLVghu5pi7P iI+t41z7oSraeD9wyrJEJCZHDNmyZMmekdahwybNPJgMGwX74EoPfmCN 3CY= +cool. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f1AXCI5fGJ5KdwcgvqWkVcWO2GyP9LiCf1PTh4EwwmPMg4UPNfVuIpVJ M15NAbvb/qbX4uQqIA3ktNsqJ5T4DStj01ljFCFWhT//USWNvoNqXNV5 OEfx8eFdmkoju95V3RyYFhYVDTDl5fb1+Gk28THUxmq6FMY2L3VbHZDA ir4= +cool. 86400 IN NSEC coop. NS DS RRSIG NSEC +coop. 172800 IN NS coop1.dyntld.net. +coop. 172800 IN NS coop2.dyntld.net. +coop. 172800 IN NS coop3.dyntld.net. +coop. 172800 IN NS coop4.dyntld.net. +coop. 86400 IN NSEC cr. NS RRSIG NSEC +coop. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LnHNIFXYvxUNGsEZUaDXD1TEkPQBKWVHKlKZr6BMTv4ZIchgvdQVv64h abx7MaJDbGq73wko11c66VZDtXDE4mdwimXxFLjxKZIq07u5S+OxnSvo sM8YDYHKlrHYI/tceePSSALdMuOU0BP3Y63SI+vZcazd1eS2NJikOCbH Hr8= +cr. 86400 IN NSEC cu. NS DS RRSIG NSEC +cr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X1fomCvtI8tU4pU6c3YXDiSTaJXuyBeSqDk9Bxb9RIsUzWQHkQxMo0g9 1xCL7FQDQMcap5BrDdCk9V28VwVc61n41IhRrJ2oS/93w06egzAhvyR0 fS5vM8Mr3S2icyuSM7xiHvGe9MFtomMcfZktrCMf4KgGy12FiV7dBoWn F/E= +cr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VaPUEbjhdfmhF2/yGnFeRCKOrEq4HXFbNh/Ju0kLdKI9ttyLPiyFak03 ROAaKfcgL2Bfk2rEbbBqeORT6cTMkAxab552c987Hw42cPsGg2asZU5s OOw93W6ob9b0v8Ra5EZkLqHImSDYKs+m2S2e9urWsp5Bys3baFR93Fdj 84o= +cr. 172800 IN NS a.ns.cr. +cr. 172800 IN NS b.ns.cr. +cr. 172800 IN NS c.ns.cr. +cr. 172800 IN NS d.ns.cr. +cr. 172800 IN NS e.ns.cr. +cr. 172800 IN NS f.ns.cr. +cr. 172800 IN NS ns3.nic.mx. +cr. 172800 IN NS ns-ext.nic.cl. +cr. 86400 IN DS 29890 8 2 0DD32D91CBBBA6890E1AF399519A7AD3646EDF238C7FBFB8C5B50016 5FBB9299 +ns.cr. 172800 IN A 163.178.8.2 +a.ns.cr. 172800 IN A 200.107.82.100 +a.ns.cr. 172800 IN AAAA 2001:13c7:7004:1::d100 +b.ns.cr. 172800 IN A 198.57.204.98 +c.ns.cr. 172800 IN A 193.0.9.69 +d.ns.cr. 172800 IN A 38.103.2.3 +e.ns.cr. 172800 IN A 72.52.71.3 +e.ns.cr. 172800 IN AAAA 2001:470:1a::3 +f.ns.cr. 172800 IN A 63.243.194.3 +f.ns.cr. 172800 IN AAAA 2001:5a0:10::3 +cu. 172800 IN NS cu.cctld.authdns.ripe.net. +cu. 172800 IN NS ns.dns.br. +cu. 172800 IN NS ns.ceniai.net.cu. +cu. 172800 IN NS ns2.gip.net. +cu. 172800 IN NS ns2.ceniai.net.cu. +cu. 172800 IN NS rip.psg.com. +cu. 86400 IN NSEC cv. NS RRSIG NSEC +cu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AevGvfSG/aCEwFCrVWloyjV0Sc81GFQtXTLPkpdUIhNojVbLTmErlYUG 2Hj4x/aaCLLUfakJMPuPkRgp3gayjo/2UkzwM4o5ealOI7R+HPLcb1rU A8fZzi3w1W1/lipz2s/KgfIZBE0/vfMheTen35v1R3ZR2QROz0eNxgSF 7ug= +ns.ceniai.net.cu. 172800 IN A 169.158.128.136 +ns.ceniai.net.cu. 172800 IN AAAA 2001:1340:1:128::136 +ns2.ceniai.net.cu. 172800 IN A 169.158.128.88 +cv. 172800 IN NS ns.dns.cv. +cv. 172800 IN NS ns01.fccn.pt. +cv. 172800 IN NS auth02.ns.uu.net. +cv. 172800 IN NS ns-ext.isc.org. +cv. 172800 IN NS phobos.fccn.pt. +cv. 172800 IN NS sns-pb.isc.org. +cv. 86400 IN NSEC cw. NS RRSIG NSEC +cv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ac6+hFWLtL5XD9rb/eoSsymcmOBAhIjErCVk4ADSpJ06T4AupsJ49yQG bQGLH4N+CFKwRa4HKzYYdQ1UmZYeFS0/cs4KZLQe+T2BjQ4lSWIWeUIG wpnIDOowl2/QrD93Wn+NBU2Bx6LrMNrhmmpaiFBIvQDmzl3Nhn2NAQvL 6OU= +ns.dns.cv. 172800 IN A 41.221.192.220 +cw. 172800 IN NS cw.cctld.authdns.ripe.net. +cw. 172800 IN NS ns0.ja.net. +cw. 172800 IN NS engine0.una.an. +cw. 172800 IN NS engine2.una.an. +cw. 172800 IN NS engine3.una.an. +cw. 172800 IN NS kadushi.curinfo.an. +cw. 172800 IN NS ns01-server.curinfo.an. +cw. 86400 IN NSEC cx. NS RRSIG NSEC +cw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . NaAxDfntRBcPgULhSLokGozO1kZMX5jyqcPoYK63JgySno0rZ5mNoArO msWwGBOykzQ/7TyCy9Add4X61lHV/72ua1GPNhm6Vm7ZSCJlAOJYj/8I jBeZE+XJ2XaoVzjWVLFEyKjiOlXrFmzjBwEG5DDNSV2TPuwRxAJPEq4I m9o= +cx. 172800 IN NS ns.anycast.nic.cx. +cx. 172800 IN NS cx1.dyntld.net. +cx. 172800 IN NS cx3.dyntld.net. +cx. 172800 IN NS sns-pb.isc.org. +cx. 86400 IN DS 6500 8 2 4854A102492CE0C50C714F366EBBD520CBA38BBEFC91CF295EEE8E6E F7D48CA5 +cx. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Sn1DKbkz+cS1RR4cXot0E3BUhODsCsETbPzoSPcYsMpK2qPX4MHTzeq5 t3RBFmrFcJqMbLjl5cYnN4txdx7EkE5KSZx9E6dkGNG5B1JcoxtNwQXf VGNnTroKbwCC7qGrc/Mze+lojMcU/Kk4OXJkB1J9vR8+LA1FAPuH2RRm TOw= +cx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vpeN4M9/PCDddMPfps7atl/M1Qzvn7Q1XcpPKmb4jIi4jw5vTo4cwo0u EWzStLb1r/bgZ6U9ubQtawqQtB1WtoLRneXmpOjKNvVqvW0xneU4IUtl 9/CINw9+/IB03w4SDf5OXoDdSLLJXixDQcHHnwF+AyBmyEL4JsRds1x4 U2M= +cx. 86400 IN NSEC cy. NS DS RRSIG NSEC +ns.anycast.nic.cx. 172800 IN A 204.61.216.16 +ns.anycast.nic.cx. 172800 IN AAAA 2001:500:14:6016:ad::1 +cy. 172800 IN NS ns1.ucy.ac.cy. +cy. 172800 IN NS ns2.ucy.ac.cy. +cy. 172800 IN NS ns02.savvis.net. +cy. 172800 IN NS sec3.apnic.net. +cy. 172800 IN NS cy-ns.anycast.pch.net. +cy. 172800 IN NS cynic.dns.cy. +cy. 172800 IN NS estia.ics.forth.gr. +cy. 86400 IN NSEC cz. NS RRSIG NSEC +cy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MAb7dey241JZeCeGdjRUM9OZ0vbwF0pD/8hZX7j39q1fy1o/A/dQhcut JhI4FHkCMk6JYGe4Y6PfAh+gq2WKK4D6iHEymQnXKNerO1L4Ks05MT1g BkpZgWHeXMZkY6dMzceYTW2zklVW6FMkwSe3MGmS0bg98nKAbUGNqx9F 12k= +ns1.ucy.ac.cy. 172800 IN A 194.42.1.50 +ns2.ucy.ac.cy. 172800 IN A 194.42.1.55 +cynic.dns.cy. 172800 IN A 194.42.29.1 +cz. 86400 IN NSEC dance. NS DS RRSIG NSEC +cz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . grrOMnbEKIDdrOaywcEKqEWpbOi5CfYmB6usTBdPa5DNsP7Rd+l6QAt3 5EFcw7oA772NDythSJkaFYd36K/flgl+brD8op2Z346hNWfR4BC36X1I 6ORiCV9P0/3RpaGcqQlV5HIZ8v0m/BprbSQCdI+psn89Zhuvojhthviq rCA= +cz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Y58nS0pqgxAX+7HZjgt3UaD7t6riuTpb/olxmktKDJkgJl/0ziurVQqM V0BoVuAzG09Pv+1Xqilw/WMrXNsVLghAVsRUTH06oTNd33KD4DuW9Ogr NNWavd5xLHowva5oVa05PzWUK3ODxDgIei6TBuenKzb3jt9KYOrpJrBa l9M= +cz. 172800 IN NS a.ns.nic.cz. +cz. 172800 IN NS b.ns.nic.cz. +cz. 172800 IN NS c.ns.nic.cz. +cz. 172800 IN NS d.ns.nic.cz. +cz. 86400 IN DS 54576 10 2 397E50C85EDE9CDE33F363A9E66FD1B216D788F8DD438A57A423A386 869C8F06 +d.ext.nic.cz. 172800 IN A 193.29.206.2 +d.ext.nic.cz. 172800 IN AAAA 2001:678:1::2 +a.ns.nic.cz. 172800 IN A 194.0.12.1 +a.ns.nic.cz. 172800 IN AAAA 2001:678:f::1 +b.ns.nic.cz. 172800 IN A 194.0.13.1 +b.ns.nic.cz. 172800 IN AAAA 2001:678:10::1 +c.ns.nic.cz. 172800 IN A 194.0.14.1 +c.ns.nic.cz. 172800 IN AAAA 2001:678:11::1 +d.ns.nic.cz. 172800 IN A 193.29.206.1 +d.ns.nic.cz. 172800 IN AAAA 2001:678:1::1 +dance. 172800 IN NS demand.beta.aridns.net.au. +dance. 172800 IN NS demand.alpha.aridns.net.au. +dance. 172800 IN NS demand.delta.aridns.net.au. +dance. 172800 IN NS demand.gamma.aridns.net.au. +dance. 86400 IN DS 9412 8 2 46C6FA36DEC09F2C90C528D30FD86378FAC1F11A1D90AF55C42DA92C 1EB19EFF +dance. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tp0IK622JLExv+1lq//1uCOL/HzJhrXrYUfkl7pnTy85uKvIFCCyoOv0 jhCKyuZndzX43JJeyZuSflkoLL365iMdRQB6BftDGVIoEfD/gNInlo4o 9SCxEd77M6ZWq2LiOPncPmcx+eRc30VHTqbezj3WCqjEF8nqADdG8QvH RIA= +dance. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cOwWQjOILZDmmosOEoJ5zButUFCSdOU+6D++lkO9qv3hytHh8Xfd63wc 4LIXaQl4SY+2XYYEmXfXZijyPFxtO5LbpfavLKABZXcLF+aXJwFQw2hN /BOy22Hb4N4M1yxujblFAY0CUWC9vKRvdPDHxO9pc5cVotvOs6NANKe8 TOo= +dance. 86400 IN NSEC dating. NS DS RRSIG NSEC +dating. 172800 IN NS demand.beta.aridns.net.au. +dating. 172800 IN NS demand.alpha.aridns.net.au. +dating. 172800 IN NS demand.delta.aridns.net.au. +dating. 172800 IN NS demand.gamma.aridns.net.au. +dating. 86400 IN DS 55639 8 2 40AE1E3A7DAB8C5285D43ACA37EEC730D5FC604F770AE3B40C4C282A 165B3555 +dating. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nagf9JZLm7swukfBBaYcO5FncbyRwd/kxvy5vbr+EnV6Rb/ZlQU5NvCB kGrscrIuL8au6T5XSXutZCAugicE03PLk8CkbGgSGNUyM38mcLyKsqnz +mhSpgEK06jOdgyDCcRpdYS6AlgFU/Wme/jlH3EdruCsN5bWJVGKLg2h FG4= +dating. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TJkR8C8fK4bHFCgqPmuTJXov5i/f6RA3/eBywWFkOaq6fQTcje9rBtmg Yw0SP8OrT4pbdz4m8dqg2y0zQUtOne6OU/TfPI0ohe3dJaYaQ+KRyqGt MosCflE4MwGpW4SpkeOdlMz4jRnZbOH5T8aGfbs0CyqgL6VTXjVUtLEr 7bo= +dating. 86400 IN NSEC de. NS DS RRSIG NSEC +de. 86400 IN NSEC democrat. NS DS RRSIG NSEC +de. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B8vaTNWZCkHR3MlYBSq3HL8i1QGx7zTwR/+TQBrwlFaroq8qL4yPLmX8 uc25cMmpmSuDnqud56npINY032AuWgcmmuMAIrcZzu+4TpTB1MHgk//E +RI4oSvxMAD1zAwpU5YDlfEnDa8xBDVgxE3kwap9dFJospXj19m06S0C 9kk= +de. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UPfjr2oDWCpJRqJT6Xor5qJOzXk0+blYqUcsDFGH6aiC0UfH7SOSHu2n JJ28j4YA64JhIro5oF+HRsUfF3kjqBEm7e2MhRZT7jwBBOqhGki7LADt MBNKyiYIu0z7ACklLJcAA8siVdI4+/3emS4Lh0pOJEiVMBjXgV55fFa7 JJQ= +de. 172800 IN NS a.nic.de. +de. 172800 IN NS f.nic.de. +de. 172800 IN NS l.de.net. +de. 172800 IN NS n.de.net. +de. 172800 IN NS s.de.net. +de. 172800 IN NS z.nic.de. +de. 86400 IN DS 24220 8 2 FFE926ACA67ED94089390250F1F294AC84A6D84F9121DF73A79E439F 42E820C2 +dns-ro.denic.de. 172800 IN A 81.91.161.99 +dns7.denic.de. 172800 IN A 81.91.161.68 +grdns-de.denic.de. 172800 IN A 81.91.161.80 +pr-dns.denic.de. 172800 IN A 81.91.161.82 +ns5.knipp.de. 172800 IN A 195.253.6.62 +ns5.knipp.de. 172800 IN AAAA 2a01:5b0:0:29::3e +a.nic.de. 172800 IN A 194.0.0.53 +a.nic.de. 172800 IN AAAA 2001:678:2::53 +f.nic.de. 172800 IN A 81.91.164.5 +f.nic.de. 172800 IN AAAA 2a02:568:0:2::53 +nsc.nic.de. 172800 IN A 81.91.161.84 +z.nic.de. 172800 IN A 194.246.96.1 +democrat. 172800 IN NS demand.beta.aridns.net.au. +democrat. 172800 IN NS demand.alpha.aridns.net.au. +democrat. 172800 IN NS demand.delta.aridns.net.au. +democrat. 172800 IN NS demand.gamma.aridns.net.au. +democrat. 86400 IN DS 31357 8 2 FFFEB75D5303AEA99EEDA8535BEDC3672FDF4C49329FF4A2FDCBFBFF A24D1A44 +democrat. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j9qVkty9eux/z3ewQeyQi/lXa9rGJnphFYzMaMpHIQ7Suimgg7ooasfW cmDnwpv5d2muk8cSVrhf1gbllij6P8KLl2ObIHUaYeYWO9REeWfPr1Cn H0q6oD3dYMlm7RsCkWSB9TjadEfMOHX7ilSO4ZcQ7iZUWJNI03nnhm4R fPg= +democrat. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . M/8ogc6iwIs9O8l0nYiv5+Bdlj8OVOUeLNZ2Sp1Tc7SSeDFFZiAnIxeQ u4RJj4FjZEkaykycKJjgHsMSsdKL48AYMlbxRn3hjg0PmRmWp6ShXk+K hPZizOLu575QYVQHof9m2MhrxKeA2lok/mfc/slfVEo8IMrBMs8Uzi7z DC0= +democrat. 86400 IN NSEC diamonds. NS DS RRSIG NSEC +diamonds. 172800 IN NS demand.beta.aridns.net.au. +diamonds. 172800 IN NS demand.alpha.aridns.net.au. +diamonds. 172800 IN NS demand.delta.aridns.net.au. +diamonds. 172800 IN NS demand.gamma.aridns.net.au. +diamonds. 86400 IN DS 23956 8 2 A3719C79222E217C7EA8CC55EED0BD23B7769820BDFCFB4A7C6DCFC2 F2837697 +diamonds. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UvN2MkS8bGWgadGFP/S9c3/oI7xom+tbkcwckXNWgAOFP59ALcrAvvKD fm6ADK3BgMgxMWqzXoClPtxndkaJJlBeUH3yjsU9ad59eF9J6+iN9Nhb +bVUPV7atWsTn5rln7qeowPhzyZGlyeNTSMOAYUIFYKhLzDPgjbsiSIh Evc= +diamonds. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lbHLTyycb7t7ut9URZA2xr8PTOkP9aTnxov3YUQGs1CIx9E3Qpa3V38u VHq+GzdkFbMWGIStyA2+8EnqqwWFNzP9miJ28LZidbPjDBcn+mJLJonj GZh9jQkkJHxIsxssexod6o47pMrq9bfUhY47tHNgO8703dZpcIxx7EkB ppQ= +diamonds. 86400 IN NSEC directory. NS DS RRSIG NSEC +directory. 172800 IN NS demand.beta.aridns.net.au. +directory. 172800 IN NS demand.alpha.aridns.net.au. +directory. 172800 IN NS demand.delta.aridns.net.au. +directory. 172800 IN NS demand.gamma.aridns.net.au. +directory. 86400 IN DS 24919 8 2 9B4A3B25AE80501486985390FB3D0004E86E9F67E7DF28659AF1316C 0D281DAE +directory. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s6kspDef0lCCrJGfxE0i+kH5Fr45plUO223VbEJIdt38NADJ+uQsSi+M i3yNpwaAUKqe5KoNvLxkxjcChs964ydkFVIBpXGxkbY58upSpt/K68mJ A6OLTWbVu/pha4kTsTd+oZWQYwZHPsU3zRPCGxw/i2gy9fnto7N2FXx5 ELM= +directory. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nx5ybqozkABPxxLNye2C6vItDoyIZUlHhqtTUhE4d8DNplaU4PNbX2qE L4DHHeK3Kj+vbTfQ631LiMqitrzgtQ2To4fMsgdHJBX0DWoeY97nDvYP 4tC9tIzd/+cvn7qzsd2aBmO7gA5tXeKW/Kl2t8jJzopQHQMmZx2utb8z YKE= +directory. 86400 IN NSEC dj. NS DS RRSIG NSEC +dj. 172800 IN NS bow.rain.fr. +dj. 172800 IN NS bow.intnet.dj. +dj. 86400 IN NSEC dk. NS RRSIG NSEC +dj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kiHikLjPY+s8/IUzdDnDZXkQkreQruf5LREi+88LhVaMfsFbrIp0tRyz 2TqyM8C1+lH45/wclVfOq9ve0GF+qm3CKfX+caRGCUmjw/1dRwRjwD84 6SAK70yxXvxMPT/PYoNz2eZodbBdTa/3D7ULhS3/CwgY3AM8WIF2WMNy Bng= +bow.intnet.dj. 172800 IN A 193.251.143.162 +dk. 172800 IN NS a.nic.dk. +dk. 172800 IN NS b.nic.dk. +dk. 172800 IN NS c.nic.dk. +dk. 172800 IN NS l.nic.dk. +dk. 172800 IN NS p.nic.dk. +dk. 172800 IN NS s.nic.dk. +dk. 86400 IN DS 26887 8 2 A1AB8546B80E438A7DFE0EC559A7088EC5AED3C4E0D26B1B60ED3735 F853DFD7 +dk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . I8QbCG5axeW7bbIaVn+02SRpZD+Ko74zeRnHLGRn3AKSyenaLWflwR38 q44Ci6DfGO3339OGTRM3NcIvQehdjV/E2i31zttMgqTx5IDWLoY8/7dX w6SBxQ6OUqIYVL9EZVzuxM3w57vFfaJGg6CqZmuBvW3jG60KMenxuhQ9 Z9o= +dk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bNquyIVG6W9TF1pJYkngsH+X2OO1BuI2xX0vmDokQyr6YwOKSsUCbF5z 3MZnJw1jVm0ZQAlHPjnILm6kSNosFG6fLAGzVhI830j5TcOxA/eFyfL9 Q3uUr9e9dSNznwdczsYPkgW2JXEfpHW8msMbLJ0wS2Ytd6JwCw9IL+qW /PQ= +dk. 86400 IN NSEC dm. NS DS RRSIG NSEC +a.nic.dk. 172800 IN A 212.88.78.122 +b.nic.dk. 172800 IN A 193.163.102.222 +b.nic.dk. 172800 IN AAAA 2a01:630:0:80::53 +c.nic.dk. 172800 IN A 208.76.168.244 +l.nic.dk. 172800 IN A 192.38.7.242 +l.nic.dk. 172800 IN AAAA 2001:7f8:1f::1835:242:0 +p.nic.dk. 172800 IN A 194.0.47.42 +p.nic.dk. 172800 IN AAAA 2001:678:78:42:ad::53 +s.nic.dk. 172800 IN A 77.72.229.252 +s.nic.dk. 172800 IN AAAA 2a01:3f0:0:303::53 +dm. 172800 IN NS ns.anycast.nic.dm. +dm. 172800 IN NS ns.blacknightsolutions.com. +dm. 172800 IN NS ns2.nic.dm. +dm. 172800 IN NS ns2.blacknightsolutions.com. +dm. 86400 IN NSEC do. NS RRSIG NSEC +dm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hBKtP2o3/w/zNItxnrCt259rpE8LlG8mPGaZtHV3VQMD2LhobgRBPmkf Vf9JLWFulERLTclp91MUCs9fVGPnUS65hxAOH6w1/iIT6HaCl0tifHcm V570ZPs98eFbB+eU/zBJ6uhoBJBCPObWWXn5iD5tLb/BBMG/KQxpMZD9 dNQ= +ns.anycast.nic.dm. 172800 IN A 204.61.216.18 +ns2.nic.dm. 172800 IN A 199.127.197.69 +do. 172800 IN NS ns.nic.do. +do. 172800 IN NS ns1.nic.do. +do. 172800 IN NS ns2.nic.do. +do. 172800 IN NS ns3.nic.do. +do. 172800 IN NS ns3.nic.mx. +do. 172800 IN NS do-dns.nic.pr. +do. 172800 IN NS phloem.uoregon.edu. +do. 172800 IN NS sns-pb.isc.org. +do. 86400 IN NSEC domains. NS RRSIG NSEC +do. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UrGWAVcm4ERkUGBKWgGGwCX62N0L5AHLIr/4OyWp2Zjzs2NGFQFusECl eyvgXk5vnDdtlcspHtw9LDBeAzufHAMjIJbEjEE6aGn5cx/Ieez9caNc ldgur2YKDxXggwjNNwlCsHjygIQBQZXpDHMBkW0tR87whZ8cQdFIPru5 iDg= +ns.nic.do. 172800 IN A 200.16.91.228 +ns.nic.do. 172800 IN AAAA 2001:13e0:85d0:101::228 +ns1.nic.do. 172800 IN A 200.16.91.226 +ns1.nic.do. 172800 IN AAAA 2001:13e0:85d0:101::226 +ns2.nic.do. 172800 IN A 200.16.90.162 +ns2.nic.do. 172800 IN AAAA 2001:13e0:5d0:101::162 +ns3.nic.do. 172800 IN A 149.20.61.87 +ns3.nic.do. 172800 IN AAAA 2001:4f8:3:3d:2e0:81ff:fe46:41f2 +domains. 172800 IN NS demand.beta.aridns.net.au. +domains. 172800 IN NS demand.alpha.aridns.net.au. +domains. 172800 IN NS demand.delta.aridns.net.au. +domains. 172800 IN NS demand.gamma.aridns.net.au. +domains. 86400 IN DS 28162 8 2 5712C07D52BDFB21F425E2DFCE866A42EE94B37D230876FF68A27FA6 4920C0B9 +domains. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . plHAoK2r6+ESZv0zcv/u2K0fXyBIoEnerameeEqd5RWrBTTyfJU6IZqO SxTxaUHXlTay8zRZNTAIqsAPO6SQSolFd+mgQWMbW6UAJRgdqsKfIZiY oCO6KEjbZV9/zr+9bL9pM9mqiATHuVx1Sy731fPfxjwcVD6kw9EY2JRG iqc= +domains. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CfLAZrUXS4YgAWGUI+Z0zR7+OTlJ09Qsgw/nggLF6W24KaJzalsgxUf7 J/e+oYsmtjGYtIOOjvbWSg3AB0SmTdLccLAfTvp7CKncwYcircMAWZgB p8GWCNkl2wCeGR/9MZdEe7cQOO3FNhH6eEQk7GH5m8yp5LbQQnCHjxu0 beQ= +domains. 86400 IN NSEC dz. NS DS RRSIG NSEC +dz. 86400 IN NSEC ec. NS RRSIG NSEC +dz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . p7qZ/f4XjWs7XlX3VGnRBQ+EdwBPDTloj7CSeixcws5tzUI/pHvJnk+f 4DKbcvOPJlMIjrsloAVgjeoV4FJwc5Fto+YVZvYcr/VEf5EfDPL5pPef WW1CqsYzspBV2GYasdm1HQ73U60Flq2sufI0YduoHmXm/NX8jNLBOVRj b0M= +dz. 172800 IN NS dz.cctld.authdns.ripe.net. +dz. 172800 IN NS ns1.nic.dz. +dz. 172800 IN NS ns2.nic.dz. +dz. 172800 IN NS ns3.nic.fr. +dz. 172800 IN NS ns-dz.afrinic.net. +idn1.nic.dz. 172800 IN A 193.194.64.243 +idn2.nic.dz. 172800 IN A 213.179.160.68 +ns1.nic.dz. 172800 IN A 193.194.64.242 +ns1.nic.dz. 172800 IN AAAA 2001:4340:1030:2::2 +ns2.nic.dz. 172800 IN A 213.179.160.66 +ec. 172800 IN NS n1.nic.ec. +ec. 172800 IN NS n2.nic.ec. +ec. 172800 IN NS n3.dns.ec. +ec. 172800 IN NS sns-pb.isc.org. +ec. 86400 IN NSEC edu. NS RRSIG NSEC +ec. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GcAAxpklDagnw0d34ajb/hxWAqK3GbO7W2pO74pAybKWQwx8e1baeZqW dPsEXOcsUQ+tUJCz/fpAhP36pcpmujwMnpcMei04hmJ5arx3ZxCxDqgX q1xg5EHiOSPiGfgvgrBZnWIvT11Jt+TCkcjfAfYYqojyfHEuF2t/tTRf xyY= +n3.dns.ec. 172800 IN A 204.61.216.39 +n3.dns.ec. 172800 IN AAAA 2001:500:14:6039:ad::1 +n1.nic.ec. 172800 IN A 200.12.198.1 +n1.nic.ec. 172800 IN AAAA 2801:0:61::1 +n2.nic.ec. 172800 IN A 200.12.199.1 +n2.nic.ec. 172800 IN AAAA 2801:0:60::1 +edu. 86400 IN NSEC education. NS DS RRSIG NSEC +edu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OgWC/UdVY+DHAMHaUluNv8T//mkhHeRbIkbDp1JRJFx8i/NfTiSOWAbR Z0cQQrGMpyKukGits0EG08b16KfJfw0Iecz6m6fafyUZIa5cPW/S9NJ+ u6j1hrT0ocepWhCPdzfQP1L4xUNFNquKHdW6C6N7Vijp7b8mnnoliU3T qhA= +edu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NDIPra+e/cLUJjQMo3FkxcqZQJ7QZkQwIOEJkgjix9XlAIR6uY0phSNS gV8ODjo1S/vD9A9EyaO18DzdhAWcDGRy7S5/MfyWxI4hhrtDCWpS/O4V od4Wk+unn/8g3SHigXnix6rkz6McIM+bcPAXalSz3MfT8iJ0rKSW+fpH 0rU= +edu. 172800 IN NS a.edu-servers.net. +edu. 172800 IN NS c.edu-servers.net. +edu. 172800 IN NS d.edu-servers.net. +edu. 172800 IN NS f.edu-servers.net. +edu. 172800 IN NS g.edu-servers.net. +edu. 172800 IN NS l.edu-servers.net. +edu. 86400 IN DS 28065 8 2 4172496CDE85534E51129040355BD04B1FCFEBAE996DFDDE652006F6 F8B2CE76 +adns1.berkeley.edu. 172800 IN A 128.32.136.3 +adns1.berkeley.edu. 172800 IN AAAA 2607:f140:ffff:fffe::3 +adns2.berkeley.edu. 172800 IN A 128.32.136.14 +upr1.upr.clu.edu. 172800 IN A 136.145.1.4 +dns.princeton.edu. 172800 IN A 128.112.129.15 +pendragon.cs.purdue.edu. 172800 IN A 128.10.2.5 +phloem.uoregon.edu. 172800 IN A 128.223.32.35 +phloem.uoregon.edu. 172800 IN AAAA 2001:468:d01:20::80df:2023 +education. 172800 IN NS demand.beta.aridns.net.au. +education. 172800 IN NS demand.alpha.aridns.net.au. +education. 172800 IN NS demand.delta.aridns.net.au. +education. 172800 IN NS demand.gamma.aridns.net.au. +education. 86400 IN DS 10039 8 2 B3147D88A4193F29D94867E05365EE734BFAD6C1BD480DBF024B974C B03CDDCF +education. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Exs6e6LRc4JanOk6w2nZ0oTU8lIcTT6NWyIV1iow+de/vqjCLoq2Sxo/ DoA+08qgIGJ3eomD2iIZE4ys5QUVvSBBRi0Ny+3Zys5HfRkgAxteUqPA Fkawe7F5JlF4fy5m3km4hKwrzfMNedfjRH3n2IhzH948ucL/ZbjwP9yj dOo= +education. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KY4NlXBG0a173x5+K7MC7S43Tuqcu97mbVZPVAgEWWs1UmmlQsraRx7L Y4K0omrlH+CI3O02lPLP80MIP6cmjodG46XlSg7NkCXyBjyphaH1eCCV fmmXp7qVBim35dO1R5eUam6xcTmor6KcoV9dpfzKl7QKw4qoKyFyJ69v V/A= +education. 86400 IN NSEC ee. NS DS RRSIG NSEC +ee. 172800 IN NS b.tld.ee. +ee. 172800 IN NS e.tld.ee. +ee. 172800 IN NS ee.aso.ee. +ee. 172800 IN NS ns.ut.ee. +ee. 172800 IN NS ns.tld.ee. +ee. 172800 IN NS ns.eenet.ee. +ee. 172800 IN NS sunic.sunet.se. +ee. 86400 IN DS 34382 8 2 000A3D89DC6CD4BA00EA8AFFEE3967D3A26DE7A545FBEFE16BA07518 FC8D54F6 +ee. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GpD+9Cz5eYuTaYS3J4hA49DqxrG4NtrvslZ1DJQO9HhwRcMg3jJozGYt aVTkT78YCo9EmCdLY3V514XgsuYouMiIrxQxReOgSk8NfGbrL3YN1LzI /5tqOXyHt1WKgSITS1Jkk3SDVwo08raRLk7S6Tzrw0/hinS2xhGjZ7GU Mqo= +ee. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S6ntQlciItMML5g7abSheSmGluR68xXlxesPpukZ8Xc09GDBc2ARiouk KAUObDcYS/FLU3wS0xMbEz1B2EG8Dodi4xcPwA1eyK8sL3bVcCRaQauX QfGrKHJsp6Xq7sdR1kF+RlYVonR5TKMw6ySLHa4PL6y4ywkWzzDR60z4 RZk= +ee. 86400 IN NSEC eg. NS DS RRSIG NSEC +ee.aso.ee. 172800 IN A 213.184.51.122 +ee.aso.ee. 172800 IN AAAA 2a02:88:0:21::2 +ns.eenet.ee. 172800 IN A 193.40.56.245 +ns.eenet.ee. 172800 IN AAAA 2001:bb8::1 +b.tld.ee. 172800 IN A 194.146.106.110 +b.tld.ee. 172800 IN AAAA 2001:67c:1010:28::53 +e.tld.ee. 172800 IN A 204.61.216.36 +e.tld.ee. 172800 IN AAAA 2001:678:94:53::53 +ns.tld.ee. 172800 IN A 195.43.87.10 +ns.ut.ee. 172800 IN A 193.40.5.99 +eg. 86400 IN NSEC email. NS RRSIG NSEC +eg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fX6N52gfx/gHBKrOKOQiYtHeIkQxEAoTU4PJpTyOjfsQ8oR8BoaEVjNw cKSW7BOcyZU4DMrv278GnY+omZLw5/Lcozx/tBjaGQKN0/a7k5gn/89Y BTXtQ7b6UImC8+LC8DYyJ/g3zFuLwK2pcP19X2salKPQiyCWR/FIRvcz L3Q= +eg. 172800 IN NS ns5.univie.ac.at. +eg. 172800 IN NS rip.psg.com. +eg. 172800 IN NS frcu.eun.eg. +ns1.dotmasr.eg. 172800 IN A 81.21.97.155 +ns2.dotmasr.eg. 172800 IN A 81.21.99.11 +ns3.dotmasr.eg. 172800 IN A 81.10.38.11 +frcu.eun.eg. 172800 IN A 193.227.1.1 +email. 172800 IN NS demand.beta.aridns.net.au. +email. 172800 IN NS demand.alpha.aridns.net.au. +email. 172800 IN NS demand.delta.aridns.net.au. +email. 172800 IN NS demand.gamma.aridns.net.au. +email. 86400 IN DS 51466 8 2 2F1D54E81A3F873361603A8985FB4F19823FA63B9399A9AA5A6A5845 6C66597F +email. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TgSdkoqIovGzmMzVYqQ6zYlTN09PSmC0gLFL15cmhF+WvhyVLDZYHuDm rG8s0WZNpLE8KeCBHHEIIDNXJc4LRpPu2BXeyH6lnxxIpcu08vy7hNvS ed/l96uvUv2PuIzF5WjpR9+epTOyNqxj+t3xVrSgz2DLSghG/QG0tUkk nh0= +email. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f1usgl1dfNJ10cm+Dlai81hFpwajM7c9bwWT7GMJ6T89r7CpwU4CGH5c ghkFqcDKJI9u7OCBKhfyQ4AxZh6nmfsKX/ETt7J7uo5iGIJz4pGDVtUL IYYjSqw+OzC4t+5UDvmLIIZXC/ft/AqQI1eVpPPPfsY2VCc0g0DtNq6B nBA= +email. 86400 IN NSEC enterprises. NS DS RRSIG NSEC +enterprises. 172800 IN NS demand.beta.aridns.net.au. +enterprises. 172800 IN NS demand.alpha.aridns.net.au. +enterprises. 172800 IN NS demand.delta.aridns.net.au. +enterprises. 172800 IN NS demand.gamma.aridns.net.au. +enterprises. 86400 IN DS 48424 8 2 7817DF3AD3DA83CDA3728126935F8B892EED5FF59F8809679CA7FB6A CA253137 +enterprises. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NZmFgZCbescN1HQjBPG988ikruzZp1EBjkyg1KYoVV9kJA7jT0lVkBAu diogA7kRtrMCt6b7MBT1N27GigDR7DdrG3YE2vcKwMKMlCokRtiJWaiB D0IBBxcS7JCC+pWirzKqe0hBZuTIPXdQoyzVROAQOBHXoPS9/3gDITLa WvE= +enterprises. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ez0a1R1HVEjiRBFwGWVFXcG0VWRh7bI0P5TjkRbzU2cpPAofDdvGc5Ae yrePfgrE+OxTDVNXFPs6Flmp829Nzd8qwOO+UuM7IA9xcb44WZ4jKe1T GE4jTBIgC0zzmIEd/sRkIsJzOYhZQ/63aQBVGfzpFJiJurmalyHPrA5K vxE= +enterprises. 86400 IN NSEC equipment. NS DS RRSIG NSEC +equipment. 172800 IN NS demand.beta.aridns.net.au. +equipment. 172800 IN NS demand.alpha.aridns.net.au. +equipment. 172800 IN NS demand.delta.aridns.net.au. +equipment. 172800 IN NS demand.gamma.aridns.net.au. +equipment. 86400 IN DS 22201 8 2 A164745D7DAB36BB4F998EFA7D2C375033562D6C9D262B3091E671B6 969344EB +equipment. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K7RDoLtXD9bgyu0fv5F3cByRCio/bi4opcTaZJhv1+P6Bvwz/Bds8xvx mvdbOJAlSd/m1QUojN5k4txcGQlvivAzEVFsKRvDF4/CiJHeewchT/BC PfrSAvy3WIzAc1GukhbR3g4C5x3CaGXhK8dTXHArF8VDvdAzOXAq9pvi TUo= +equipment. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bztFOrB3Y9qHxEQXWeknq4E5tUFHP15xASkpBW/MC9eSAonDMDYwQBOP itNFRj5ViFo04i/MjcYraqISLJUmmz6i87gOA2HBGPStqHOtzPgUtQQu MThc5lK9IyThrUFTxke2L6tObdu+3jL/3ZsXb2cx+OFX8L43GEjjtXEb rbg= +equipment. 86400 IN NSEC er. NS DS RRSIG NSEC +er. 172800 IN NS er.cctld.authdns.ripe.net. +er. 172800 IN NS sawanew.noc.net.er. +er. 172800 IN NS zaranew.noc.net.er. +er. 86400 IN NSEC es. NS RRSIG NSEC +er. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . t302Yr4/wdZTjJiNx+eB1VMAF6S3KSZWgmm1feNb/zJjkbj/84dXpPfA UfVTUUTLYcCD9tidplk/3corpRp+Tq0xqWr+4/c2Uq21rxhxrpwnPSkG XJugPvYIVidt+Revhki7PHCc0wzHEXLkt2MsrXiEnBBbdtwYvxYjwLZw c+Y= +sawanew.noc.net.er. 172800 IN A 196.200.96.1 +zaranew.noc.net.er. 172800 IN A 196.200.96.2 +es. 86400 IN NSEC estate. NS RRSIG NSEC +es. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ufgk+0/h8tHPCeDI89X79ctHQ4pwi0LlHyI4hm5UTWFT1QSbooIpnMrD hYJ0Pu1h0xUmXsPXqxSFG1CoEuOAtU3LXYomLwoTg11g4ZheJwvf+WIN MF8yt3ZxMr2nj0hd7WlK5kYA0AjZtWmxZqLu/kTg4MNq3YQIYhOupq61 orc= +es. 172800 IN NS a.nic.es. +es. 172800 IN NS f.nic.es. +es. 172800 IN NS ns1.cesca.es. +es. 172800 IN NS ns3.nic.fr. +es. 172800 IN NS ns15.communitydns.net. +es. 172800 IN NS ns-ext.nic.cl. +es. 172800 IN NS sns-pb.isc.org. +ns1.cesca.es. 172800 IN A 84.88.0.3 +a.nic.es. 172800 IN A 194.69.254.1 +a.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:41 +f.nic.es. 172800 IN A 130.206.1.2 +f.nic.es. 172800 IN AAAA 2001:720:418:caf1::2 +n3ns.nic.es. 172800 IN A 194.69.254.42 +n3ns.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:42 +ad.ns.nic.es. 172800 IN A 194.69.254.15 +ns1.nic.es. 172800 IN A 194.69.254.1 +ns1.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:41 +estate. 172800 IN NS demand.beta.aridns.net.au. +estate. 172800 IN NS demand.alpha.aridns.net.au. +estate. 172800 IN NS demand.delta.aridns.net.au. +estate. 172800 IN NS demand.gamma.aridns.net.au. +estate. 86400 IN DS 64357 8 2 1B99951833A83F4A59D027C8117A5597FF969F7A7E2C539ACAD9AA02 5245A7ED +estate. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PhtrQQL2vjIGiAk4pd6zL0A60buNakLelrS3mkvKKUXO4UEe2pCGQwzX DskJsi58q035as9z14QmREpOZ3zJIUEe7pvASEB8JnJQG9z1bUoxYI12 pjbtQJrT4hEy6k5J4ybZE2b4F8RLMSuZu5omwTMsfWW+c/cBXZbgf5IY N30= +estate. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . D/0SixREcwZS2qTyD02eIlPOJJudwdtyY6pOO0DKWzEqz9hz5gsl17qH +parpbd8uXhlBzL8t8AUYjF+l/lJTxcc7SlGMCghi21HsvOYXw/XpbBp xOkVSHpol2RWTvI3o9id5whB219J7vqQw6UD7jBL3/8GmbjDeAfUMzQB 03I= +estate. 86400 IN NSEC et. NS DS RRSIG NSEC +et. 172800 IN NS et.cctld.authdns.ripe.net. +et. 172800 IN NS ns1.telecom.net.et. +et. 172800 IN NS ns2.telecom.net.et. +et. 172800 IN NS phloem.uoregon.edu. +et. 86400 IN NSEC eu. NS RRSIG NSEC +et. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fVG6dhXgTZ0MCnmixhWXYWKzuS19RtQLMhuB1wO6hc9mPXkgoXPmM+Hm H0b7PbaxwduhEzyYUtlQZsDcRxR8IaXzfcNiV410ybEbAqId6n4xpC5P lJum5IZMrHt5jWXk9N2UojIRpGSpSPZiVe/eMVdTnlSu/P4M7n8DexC0 gkU= +ns1.telecom.net.et. 172800 IN A 213.55.64.36 +ns2.telecom.net.et. 172800 IN A 213.55.64.38 +eu. 86400 IN NSEC expert. NS DS RRSIG NSEC +eu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Dc81c/UOlyZjRLBZJk/zFJFg1ad63VeZpFgu7qauiXO1ke+elF5JsCsv YViCch+JIEwObBOaLVQVXVdBxN/Z0GcxdIV1ct379eZL9fm3BHi1faLT Cra6Ds84w3ev0zdWWLmTeFFbOUA8jYloz5bwAgP/zVTmNFpIPjr0zOQP ryg= +eu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GVNpQALDHKf6GZTXDXVQVgKKzkvEtjrkT13bP6u0smMMaO+gmaYCY3+N 34qLrTDlqQCrW65hy1PX1QVipRayzJ+UYRPvqxDtOHQJr4TRRnSkBbzH qkqnjuR5EQV0NUtiTl5eGxgeWMaAliXZqT4VdpjS6sWS3uM46KmP/tT3 5GI= +eu. 172800 IN NS x.dns.eu. +eu. 172800 IN NS y.dns.eu. +eu. 172800 IN NS cz.dns.eu. +eu. 172800 IN NS nl.dns.eu. +eu. 172800 IN NS si.dns.eu. +eu. 172800 IN NS uk.dns.eu. +eu. 86400 IN DS 61179 7 1 87E2B3544884B45F36A0DA72DADCB0239C4D73D4 +eu. 86400 IN DS 61179 7 2 3B526BCC354AE085AD9984C9BE73D271411023EFF421EF184BCE41AC E3DE9F8B +cz.dns.eu. 172800 IN A 93.190.128.138 +nl.dns.eu. 172800 IN A 91.200.16.100 +si.dns.eu. 172800 IN A 193.2.221.60 +si.dns.eu. 172800 IN AAAA 2001:1470:8000:100::1 +uk.dns.eu. 172800 IN A 195.66.241.178 +x.dns.eu. 172800 IN A 194.0.1.19 +x.dns.eu. 172800 IN AAAA 2001:678:4::13 +y.dns.eu. 172800 IN A 194.146.106.90 +y.dns.eu. 172800 IN AAAA 2001:67c:1010:23::53 +ns6.nominum.eu. 172800 IN A 81.200.69.35 +expert. 172800 IN NS demand.beta.aridns.net.au. +expert. 172800 IN NS demand.alpha.aridns.net.au. +expert. 172800 IN NS demand.delta.aridns.net.au. +expert. 172800 IN NS demand.gamma.aridns.net.au. +expert. 86400 IN DS 23641 8 2 69D4659BE016123C984DB12560A72D36F49104DC165E4CB9A76B5A32 0BA8A18F +expert. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Fh4UxiqcHY+/hAwBbqaEfEv4eebDoP8VASWXqGE5+SOc0qMObzQ2ng4P Lepgoa/bxXpTt5scembSaTr00dA+kT0mqGRzG5uY3M4kLrRT2/rYyKry JeQsYkZGP3ugnqygKMaq5iguAdd4eJFxkDAolMoNrPG6A7ItLfwk7ml3 iAI= +expert. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZGxs5F21AHmyR+vJ5EN1af8e58fDxM038UfhT5QQGkQtDx/MZhkiQoHV rQ9Ny78zL+I+xHyTIOmmKrgpSDW/JxUZ+ujhCHj+dxDLa6X80W2+l7t4 474mJWXlkg0qBu+U/xRju0J4iBrkV3dZ8MAJBj5AlGbHp1KWzXiq+HWF a9w= +expert. 86400 IN NSEC farm. NS DS RRSIG NSEC +farm. 172800 IN NS demand.beta.aridns.net.au. +farm. 172800 IN NS demand.alpha.aridns.net.au. +farm. 172800 IN NS demand.delta.aridns.net.au. +farm. 172800 IN NS demand.gamma.aridns.net.au. +farm. 86400 IN DS 50122 8 2 3782D7D15479D12AF978FD07490A34E80ED9254154FC92808ED393F0 F8A48604 +farm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IpMnYJ4zbVLPV/TaiZPCzwtzNRrxbMChvt+eNVhG9tRyBnoXtW0XwHVY xDYb/OXhO0qIjyjIm9itydKyAMdhPt/Fc7I/Uql0MALpRqGh7dBGI6wO eBMORbI1YVPE0KRNAh0C1Ro1XqL5qSwIDBkkTSPPmfvwVqjyypSvgmxz 3Eg= +farm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Q1NQpH6SCczWJ6tmHY4YAr/WgVp5+BbJs7CNM8WLnmOxSF1lXL3gjnEk vSU5SpA6aNMbpoi64IxJcRFqfUlmx67IAWKja1ujXKAbZZTixiah/b8W V1wzIGQTy6KjXHwgNahlVnxSueh9Zq0IjCr3SLdzE4f+ZfcGS+8nGhLm K+A= +farm. 86400 IN NSEC fi. NS DS RRSIG NSEC +fi. 172800 IN NS a.fi. +fi. 172800 IN NS b.fi. +fi. 172800 IN NS c.fi. +fi. 172800 IN NS d.fi. +fi. 172800 IN NS e.fi. +fi. 172800 IN NS f.fi. +fi. 172800 IN NS g.fi. +fi. 172800 IN NS h.fi. +fi. 172800 IN NS i.fi. +fi. 86400 IN DS 35422 8 2 7282CE618E87E06DF5A21956AA54D02A98B8ADA54253A592A88E6AB9 4D7C1B0C +fi. 86400 IN DS 37481 8 2 348035176474A7247E7593D2CED09873F42E72FBF823B27328980A12 36E75678 +fi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NRKadWWCav82HJ8u1jAoLLT9v+Apf11B2gszwOCHDDbA88huENxTXL32 OSYIgY4acSIrGA7/KivCm+bNZtDed5mZHoEwmjVeZTsWSrFmM4niRXDp OrSIVz2N/2agpFn7F+DxJ+jXfABlmI5QOQTqyAHEo3qpEr6ZJctwPin1 APc= +fi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ts74ktP6WBkLJ1shTGbPRcGuMuCldkbJTo5pf509gKSVnq9EOOqha7Wn Yywpqe8Gc1S99EmB5ZCRHqjEdzB6XiG4o8LR18o66WqZCV7jrNSylIQ3 SDs4t4AVasoiQbY6ObjnuTWGGzEBegQSktodYoxav/a3qNoDded5QUK+ usw= +fi. 86400 IN NSEC fj. NS DS RRSIG NSEC +a.fi. 172800 IN A 193.166.4.1 +a.fi. 172800 IN AAAA 2001:708:10:53::53 +b.fi. 172800 IN A 194.146.106.26 +b.fi. 172800 IN AAAA 2001:67c:1010:6::53 +c.fi. 172800 IN A 156.154.100.26 +c.fi. 172800 IN AAAA 2001:502:ad09::26 +d.fi. 172800 IN A 77.72.229.253 +d.fi. 172800 IN AAAA 2a01:3f0:0:302::53 +e.fi. 172800 IN A 194.0.1.14 +e.fi. 172800 IN AAAA 2001:678:4::e +f.fi. 172800 IN A 87.239.127.198 +f.fi. 172800 IN AAAA 2a00:13f0:0:3::aaaa +g.fi. 172800 IN A 156.154.101.26 +h.fi. 172800 IN A 156.154.102.26 +i.fi. 172800 IN A 156.154.103.26 +i.fi. 172800 IN AAAA 2001:502:2eda::26 +fj. 172800 IN NS rip.psg.com. +fj. 172800 IN NS manu.usp.ac.fj. +fj. 172800 IN NS teri.usp.ac.fj. +fj. 172800 IN NS adns1.berkeley.edu. +fj. 172800 IN NS adns2.berkeley.edu. +fj. 172800 IN NS auth00.ns.uu.net. +fj. 86400 IN NSEC fk. NS RRSIG NSEC +fj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s7klnS1KpnWzm2pQ3kwJ4I0idRuWQmR8LAnru/aMTSM9quXU1fGm8YAv Hp9LPunmnj7QGSC+1XxLuIZShnpg4bl6KXcKvYePA6oXkciUjpEO76/X QAfg0KyLmh4hDapR1UVQWBZRjtLeliD2XM1ll/4cUT6s0uXMhibs62Hs 8G8= +manu.usp.ac.fj. 172800 IN A 144.120.8.10 +teri.usp.ac.fj. 172800 IN A 144.120.8.1 +fk. 172800 IN NS ns.horizon.net.fk. +fk. 172800 IN NS euro-ns1.cw.net. +fk. 172800 IN NS euro-ns2.cw.net. +fk. 172800 IN NS euro-ns3.cw.net. +fk. 86400 IN NSEC florist. NS RRSIG NSEC +fk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LjX+/JSCLoGrAxWe/Scxmgy0YIWWX+rI/5HDpfh8uThRwETxGGg8O85Z vCFPRrONKVk+Y1IDRg8B6JWp4lqfYdMYTEbCJh6qz4zzTv9ZRB2r1xnN ufAb5WlpeWa3gU7rtdmJvjZ1wAxaCiz5pHlfQLaAUYEYKfSMCII3w72w 1hg= +ns.horizon.net.fk. 172800 IN A 195.248.193.250 +florist. 172800 IN NS demand.beta.aridns.net.au. +florist. 172800 IN NS demand.alpha.aridns.net.au. +florist. 172800 IN NS demand.delta.aridns.net.au. +florist. 172800 IN NS demand.gamma.aridns.net.au. +florist. 86400 IN DS 65482 8 2 E3ABDDF92C74C5A28B71A0A51245854F5D702EBCA2B70E535F51144F 77EAB6CA +florist. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bQqDmrDPkdHynfnU/Ja8K2lWkN69MaITTcMzt1EIvORgn50vF4mWOgPx zN+TNe6KvZ3G2hUEQuPfeJes4m6SJFYl1MKKycpL5/Wu9bPazgz+9Mn7 7WLL6Ai4mMab9FO1O+EXIXVYH/qOQgcu/dDjhD4rbp4/mytLHo0kG4Q2 c68= +florist. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dMNOld/owuKkqDCAStTY4HulbCqtjQC8vIM1f8NI93z7q17GHzP8vjA5 sz1pv8rldx4oGf4sfk9K2siUYfcs1zUJzS4zvYHCfT2+EVWm1eV/52qu tYPcPmH+cmLxIGGzxj2uTDLR/f5uz87e6QQrZeQEkZXolc54/7MQHWya lrA= +florist. 86400 IN NSEC fm. NS DS RRSIG NSEC +fm. 172800 IN NS tld1.ultradns.net. +fm. 172800 IN NS tld2.ultradns.net. +fm. 172800 IN NS tld3.ultradns.org. +fm. 172800 IN NS tld4.ultradns.org. +fm. 172800 IN NS tld5.ultradns.info. +fm. 172800 IN NS tld6.ultradns.co.uk. +fm. 86400 IN NSEC fo. NS RRSIG NSEC +fm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IxQvnKwo07PHUY/S1cxzNZm1vObffciWZUe/SA3xJFlHXWCy8XEQZ6hu k5C2TrytIURc+LFIHMz9TpERO7aLZl0UvfHVO3XhZctAPpVmxmu2b0xW MPjfh82booLIVeVdX9+L02d0ds9LceIjZJH0ZXSoEJRFqF2NydudelGU AoA= +fo. 172800 IN NS pch.nic.fo. +fo. 172800 IN NS arnhem.nic.fo. +fo. 172800 IN NS frankfurt.nic.fo. +fo. 172800 IN NS copenhagen.nic.fo. +fo. 86400 IN DS 41527 8 2 6E7925D8D6F243EF35381231B955528F25087DBF3E61CC5FCBCFE729 48D0470B +fo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bJ7rk+VgLPLlFPQEkHD5+nbINgE5tl9cKdKe3fR5yq/Gs1D7mixfeU40 vNsVQdfI7oPlOPh3cjEQLaedsUIFpJRG1uLQvD8mzwaKnct+wVKsc4t7 I//TGYk9xMwj+P7eqSjqHsfOotWCoLO2saRTkLfB/Wl2C611MzdDmH2i eXc= +fo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Skb/eq7J1NpNIGtKyq5HNw9JVbTBg0yYPtJ3Y7YJ4Bszhf9Sv4ur/f3B BufnPLKhkAey2hpP9Fm/AqJXLNjzwDgncxFXClCSSEpjY7t4H4k91ELJ OASbalvi13UxuPHNYKo2Ysjx9teMxnTO4ZRUvxakJrVy0P7lNhdPRsX+ Amw= +fo. 86400 IN NSEC fr. NS DS RRSIG NSEC +arnhem.nic.fo. 172800 IN A 193.176.144.24 +arnhem.nic.fo. 172800 IN AAAA 2a00:d78:0:102:193:176:144:24 +copenhagen.nic.fo. 172800 IN A 193.163.102.12 +copenhagen.nic.fo. 172800 IN AAAA 2a01:630:0:40::12 +frankfurt.nic.fo. 172800 IN A 81.91.161.88 +pch.nic.fo. 172800 IN A 204.61.216.65 +pch.nic.fo. 172800 IN AAAA 2001:500:14:6065:ad::1 +fr. 86400 IN NSEC ga. NS DS RRSIG NSEC +fr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ciw+OrW/XnXBfwgo+O3FPHOHWibvlMT3cz63RDbwvwZrdcpHtOm1vnce 2un5Ny8hI67GqERWI+kl5zk7oarlwQgOjxjAlbUppFv97WqB6aZO6ZIl r/CAdGU/fJdOnBQJ2i6TYegPbFoAcE9szo1nHuDLCFxsMZ13HpY+J6Lf W4I= +fr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . viGAqhszJUE+IZJMpko0E/uPY9a8RFlU1mMebZuva5dRD828uRczlVkn dCXO2ccRDvV9ALRP+aKnLQ3XzcuO71A0b1BrOjKAG3tKJzjvcqEEAACV zMf24vfGVs7udrHFR63Dw7O/9KRBlaRCGzzXXtwLjqHpAJaVOtNB+mRl Gps= +fr. 172800 IN NS d.ext.nic.fr. +fr. 172800 IN NS d.nic.fr. +fr. 172800 IN NS e.ext.nic.fr. +fr. 172800 IN NS f.ext.nic.fr. +fr. 172800 IN NS g.ext.nic.fr. +fr. 86400 IN DS 20122 8 2 A4208B55FFB352EDC816D9329283DD8BBDDE44C585395AF9AA7275AB E3CF6795 +fr. 86400 IN DS 35095 8 2 23C6CAADC9927EE98061F2B52C9B8DA6B53F3F648F814A4A86A0FAF9 843E2C4E +dns.inria.fr. 172800 IN A 193.51.208.13 +censvrns0001.ird.fr. 172800 IN A 91.203.32.147 +ns1.ird.fr. 172800 IN A 193.50.53.3 +d.nic.fr. 172800 IN A 194.0.9.1 +d.nic.fr. 172800 IN AAAA 2001:678:c::1 +d.ext.nic.fr. 172800 IN A 192.5.4.2 +d.ext.nic.fr. 172800 IN AAAA 2001:500:2e::2 +e.ext.nic.fr. 172800 IN A 193.176.144.22 +e.ext.nic.fr. 172800 IN AAAA 2a00:d78:0:102:193:176:144:22 +f.ext.nic.fr. 172800 IN A 194.146.106.46 +f.ext.nic.fr. 172800 IN AAAA 2001:67c:1010:11::53 +g.ext.nic.fr. 172800 IN A 194.0.36.1 +g.ext.nic.fr. 172800 IN AAAA 2001:678:4c::1 +ci.hosting.nic.fr. 172800 IN A 192.134.0.49 +ci.hosting.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +ns-ie.nic.fr. 172800 IN A 192.93.0.4 +ns-my.nic.fr. 172800 IN A 192.134.0.49 +ns-my.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +ns-nl.nic.fr. 172800 IN A 192.93.0.4 +ns-nl.nic.fr. 172800 IN AAAA 2001:660:3005:1::1:2 +ns-td.nic.fr. 172800 IN A 192.134.0.49 +ns-td.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +ns2.nic.fr. 172800 IN A 192.93.0.4 +ns2.nic.fr. 172800 IN AAAA 2001:660:3005:1::1:2 +ns3.nic.fr. 172800 IN A 192.134.0.49 +ns3.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +bow.rain.fr. 172800 IN A 194.51.3.49 +ga. 172800 IN NS a.ns.ga. +ga. 172800 IN NS b.ns.ga. +ga. 172800 IN NS c.ns.ga. +ga. 172800 IN NS d.ns.ga. +ga. 86400 IN NSEC gallery. NS RRSIG NSEC +ga. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . H9M2FbRpGF7XmZsyr+gx36FAwqqJyEuE4pCEKsoLuh9Yh1/FKwSm1KF+ rVc2j4lBiikgz/7R13lnjEZThIGD1/spidRPffMbYskOxqeSE257Sh+c WQt8YUhIGrZk70ER0tLmvzheeaK384u5M/Kc7Heem6ZhEfQZ1gDHEc7H To4= +a.ns.ga. 172800 IN A 185.21.168.49 +a.ns.ga. 172800 IN AAAA 2a04:1b00:c::1 +b.ns.ga. 172800 IN A 185.21.169.49 +b.ns.ga. 172800 IN AAAA 2a04:1b00:d::1 +c.ns.ga. 172800 IN A 185.21.170.49 +c.ns.ga. 172800 IN AAAA 2a04:1b00:e::1 +d.ns.ga. 172800 IN A 185.21.171.49 +d.ns.ga. 172800 IN AAAA 2a04:1b00:f::1 +gallery. 172800 IN NS demand.beta.aridns.net.au. +gallery. 172800 IN NS demand.alpha.aridns.net.au. +gallery. 172800 IN NS demand.delta.aridns.net.au. +gallery. 172800 IN NS demand.gamma.aridns.net.au. +gallery. 86400 IN DS 25852 8 2 ED90BC1757207B806B4FED800EFA19404E990D59BC1758369CA93A4F F5BB6361 +gallery. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZtHKbS9AzqG2WBLjfSGV9EnT1QtODPKwAvFtUN/qEFwrk53atezzVxKO vacqHu4+rgMr6zMvXuPYIJgs9fI6JtBRTM5mX6XvnEyrq5VevXIqI1dl c5r9r14kJqxxHd/qNVkk8kGlC7zju/a5VfJfp9xfWmRtgF3ut6p7end4 wEY= +gallery. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oSxAI0ul1EKwdqpONKf9ZuOCaeZM580VTsfYym+b6EUEuz2MfX4gqnD6 h4Npxa5Aw6ZG1RrUxEr0i+/65pRo8OE2z8zJXk6gc7oIH9uuMWUg11sQ 0OwhmrD9n5HvMltxkNc93xGh8a7t0Yvw5JiaTM6of8sdSQ4JDot3Te+Q 1dc= +gallery. 86400 IN NSEC gb. NS DS RRSIG NSEC +gb. 172800 IN NS ns.uu.net. +gb. 172800 IN NS ns0.ja.net. +gb. 172800 IN NS ns4.ja.net. +gb. 86400 IN NSEC gd. NS RRSIG NSEC +gb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . A3o/MaoentdRADqmu+mSVfDQClFYCLO9YJqzgbqHfMJD8y2RQ5fdyw80 b+lOgPuGoVFtJxQBuSuvUTvJc9IWWAUEjzttxff+z2g5cF9wVX2z0cOx zfRex2/2FjRYlfH7qrM4uSDmds+UWe5/Sq/JCGTxAAeDSJteuE2qE/uA wIk= +gd. 172800 IN NS gd.cctld.authdns.ripe.net. +gd. 172800 IN NS gd-ns.anycast.pch.net. +gd. 172800 IN NS gd-ns.ksregistry.net. +gd. 86400 IN NSEC ge. NS RRSIG NSEC +gd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iTsnBoihwwehDQL02V5cxcuoJJCKbAY2HTJq1VHLRvHHzlfoIe7dnPKk bfnWfrehXwHGsLS97wlezO1okyG5c+Y0jIddETTi/6YMNYk05LpW6isQ tLXo3Pz/0/4dqmRWOfW3QhBVeywLmhFhA2rrz1yg2kT8xJhrJr63XpIf i3k= +ge. 172800 IN NS ge.hostmaster.ua. +ge. 172800 IN NS ns.uu.net. +ge. 172800 IN NS ns.nic.ge. +ge. 172800 IN NS ns2.nic.fr. +ge. 86400 IN NSEC gf. NS RRSIG NSEC +ge. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ELVrjDheOwWuWz8F/yP+hRE+3mWH+npUQSH1ElynlKJUWnDS6yGsegyS U6fIORmL+ym4yTU0ENdz6Fi2KDAJPJv1APbdRFXfPQ/g9XtZkeV3AIMT xpA395hyxkyf6Q6tMVZnudWAXx7GT9nKi2OS0IeoClYv3S4/vIQKGfZL /oM= +ns.nic.ge. 172800 IN A 212.72.130.11 +gf. 172800 IN NS ns1-gp.mediaserv.net. +gf. 172800 IN NS ns1-mq.mediaserv.net. +gf. 86400 IN NSEC gg. NS RRSIG NSEC +gf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lOuv4oHawKQui8FyzKmcO5feQX1exp9GynKnIcF+I+Uh+9RUmZDdTM+e gDPhIB1phmPmb8zDk7k4vimjeDVSL4iTH20DQ6wCSE6CGKtxGSGDaOIO uwShqUYI6hiiPgctKzm6HtBa5StolMdko0GYnKQuhGFF+gBWlNMhGiux vNg= +gg. 172800 IN NS a.ci-servers.net. +gg. 172800 IN NS b.ci-servers.org. +gg. 172800 IN NS c.ci-servers.org. +gg. 172800 IN NS d.ci-servers.je. +gg. 172800 IN NS e.ci-servers.gg. +gg. 172800 IN NS ns0.ja.net. +gg. 172800 IN NS ns99.dns.net.nz. +gg. 86400 IN NSEC gh. NS RRSIG NSEC +gg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WEX6grh7tOBuu3Di6K0fHf2iETs0bVWxralKmw5aYiPspO2PEczZhzyL bVhm4kv74JGJ3ak9qhpONfyNz5NwN+fb9geDL0TqAKRKCrjBti9FCfrC F/sHUtfLxNXDdjthRCsgcGr1U3fT75Iif/vJNsk0W3xjGhuoJm2x1qvu Q1s= +e.ci-servers.gg. 172800 IN A 204.61.216.74 +e.ci-servers.gg. 172800 IN AAAA 2001:500:14:6074:ad::1 +gh. 172800 IN NS ns1.dns.aq. +gh. 172800 IN NS rip.psg.com. +gh. 172800 IN NS fork.sth.dnsnode.net. +gh. 172800 IN NS hippo.ru.ac.za. +gh. 172800 IN NS austin.gh.com. +gh. 172800 IN NS mantse.gh.com. +gh. 86400 IN NSEC gi. NS RRSIG NSEC +gh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u0LOkUM9uuLe/WQhW3YZAu0oNpSrIkCQX3NwgDcsloXCU3ychaiutSXh kNyG3RPYv7C+OlGk/c/zGMsGqwk6bUxpQJU9ceEOz21H+mVU1hhG+zZR nqWBbyFkwab42+Guf0VB3KkAJVibTcEkSilKgfYdcehL8IEgQdi5NiJ+ uX4= +gi. 172800 IN NS a0.cctld.afilias-nst.info. +gi. 172800 IN NS a2.cctld.afilias-nst.info. +gi. 172800 IN NS b0.cctld.afilias-nst.org. +gi. 172800 IN NS b2.cctld.afilias-nst.org. +gi. 172800 IN NS c0.cctld.afilias-nst.info. +gi. 172800 IN NS d0.cctld.afilias-nst.org. +gi. 86400 IN DS 40935 7 1 A6110BBAB0C51F4712CF1DF57F960CC73C7645F6 +gi. 86400 IN DS 40935 7 2 9F19CCCE0100976D6A4ED5D0AFA3D66E88C6974722D62EE6251F9D3D FA74A23F +gi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ULdoNH49B1wQZ/jFDJH03Mv1whoovKq2UzUH6GVP1e1BlmLGQAPEeqg+ rH3UWaD6O37W3Mep+SKH3K799LAdNoj7CLhicNHi0E/4ohduUyAzD/Tf njokjm22ayJA8pILH1f/pmBxNNrxzUAuulOiwMKrDFw6VADjzyOo2VOK xFg= +gi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VIr7DwxnRJ4DlK8xN3vDiaZPiGLsUw/YzHmQdDBxPovu64Da0c7ZIjT0 C95ljk+ti6T7fuHMFzNsaVkwnmSIUY6PQ+t2Zbtw37UB+Pk4zxo8E/QB MgeHX3itSmEwq8QwTZFE4tmtk8pQbV4RJg5/Y4fww/j1XOK5CWiZQWFd /0k= +gi. 86400 IN NSEC gift. NS DS RRSIG NSEC +gift. 172800 IN NS a.ns.uniregistry.net. +gift. 172800 IN NS tld.isc-sns.com. +gift. 172800 IN NS tld.isc-sns.net. +gift. 172800 IN NS tld.isc-sns.info. +gift. 86400 IN DS 42194 5 1 61379C5FD2BA15B4401F9E74D1CCDF613FA469E4 +gift. 86400 IN DS 42194 5 2 365F45C35B61F891A7111CF3BD587EF8A0088D6EB7286E791F1016B5 6EA01850 +gift. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . g7a595DsxtQ26pSEexz9CSirf6w4V4YputE+xquD4KlgXg4SEnQnCEtv J3ViTdE+ZgYsSwAN/+7J02jz0Q9E06LgNyIiOJk57gSi3o+ZNhIflWHd SW7iyC+sdJpbCsEOXR4LH6qB6kEpcNdDPPZNmBPhckA4NvjTYGFB7Y1N 0fU= +gift. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ceT+rNFA7i0uBLkkE90ZtAZcUpRXV95s+kY/Ivwpap2s8WV+D0cnsuaX +IMT/UTFb5cok8GP/Gynzqh6FGF4i4SBPoQwzje3b5BYyW616xSgaBgy /KyJkOUfoA2UaOXaa7FFnLjF9HLCM5p0Ffv22xgelgoa1gaUfVMBekAM KFg= +gift. 86400 IN NSEC gl. NS DS RRSIG NSEC +gl. 172800 IN NS a.nuuk.nic.gl. +gl. 172800 IN NS b.nic.gl. +gl. 172800 IN NS d.nic.gl. +gl. 172800 IN NS gl1.dyntld.net. +gl. 172800 IN NS gl2.dyntld.net. +gl. 172800 IN NS gl3.dyntld.net. +gl. 172800 IN NS gl4.dyntld.net. +gl. 86400 IN DS 11560 8 2 3D44DF84C78A82E0E9824440F3E82B402551341DBFF3BCE72CD78643 5D15F1AA +gl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iPEKAZHezHWt6QEUPro9YEW9WOktpFNkQE+ojCprReug4lC/EtttXas4 aZ7rcBqMhBEKIHO18uGZnF8VdlKEwnih7OobxIEzMSEVpjMeQFBnVbvO RBCG42CIdECj8OZsylLtSBuFgm3QC0SbV1wg59MIDcL75QAtonF+WxNV PrA= +gl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jJR3aQqIN3wKIspRyH27ejrzjfmI4ek1f/+oLYfDpXhZ3QDp6Z5nArMz UJF+9zK99tirIErabF/JodADrAJBkoYtMxWh4AeEh58nshA/nTChCfUB UBnLXviJNeeW3YplyJ4lFTEqFMRb743BjBviulpk/l+H2pEngLM6VcPh ycw= +gl. 86400 IN NSEC glass. NS DS RRSIG NSEC +b.nic.gl. 172800 IN A 91.221.196.228 +b.nic.gl. 172800 IN AAAA 2001:67c:3c0:112::10 +d.nic.gl. 172800 IN A 204.61.216.49 +d.nic.gl. 172800 IN AAAA 2001:500:14:6049:ad::1 +a.nuuk.nic.gl. 172800 IN A 194.177.224.13 +glass. 172800 IN NS demand.beta.aridns.net.au. +glass. 172800 IN NS demand.alpha.aridns.net.au. +glass. 172800 IN NS demand.delta.aridns.net.au. +glass. 172800 IN NS demand.gamma.aridns.net.au. +glass. 86400 IN DS 13816 8 2 B8CDEB1147512B2413992A08B6B28DDD6127E18F7E2969F7897D2F34 8A2C1AF7 +glass. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Bih0RxKgY7giFHb/5HPgVXZYuyFA6WwM20qBXvvaaGjNJ2mvkSCqeyx8 CFpwjARB5nWs14mGBXbYub70l8rfpNhU66JV812HdnrTKQTiXACoV8Kn ZPeF681VEEFWrEC27ZpilQSACh2PAtsdE3nU8vLkjCoubaRZg9ayRH/5 SF8= +glass. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FCsf/6CGdROB4tDwCfTTzbYUa/FcTT5M0S4pcJjFTgn5L6TUN1ds1vry +SvYyn8NEihu2GaFBLhJh39yIzmkJfvSXPsNCY0P5l4MBG9k1sofyQqp zFH8TAcQFJQqRQ3fbZ6qP+IDId+uMatSLPVIW6wGZv3nPPZBvpxPN3bg YyQ= +glass. 86400 IN NSEC gm. NS DS RRSIG NSEC +gm. 172800 IN NS ns1.nic.gm. +gm. 172800 IN NS ns2.nic.gm. +gm. 172800 IN NS ns-gm.afrinic.net. +gm. 86400 IN NSEC gn. NS RRSIG NSEC +gm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XkSlTnb2zhKHi4DzD1nhg6xBe0VxmF1RrrC/EfQVGOqV+UMzgH7yCFFt tuZtro2Xr7xj2grixyJ3e0RBj4BkIE4Qcnly77r2OxiimLrgbigcRV+e fnYZFVpgb/rbDIhIr2us8Wc7zzYYo/lVzWknypaHPuWu9JvuqpWZXYqz wxE= +ns1.nic.gm. 172800 IN A 194.63.250.217 +ns2.nic.gm. 172800 IN A 197.255.194.102 +gn. 172800 IN NS ns1.dns.aq. +gn. 172800 IN NS rip.psg.com. +gn. 172800 IN NS fork.sth.dnsnode.net. +gn. 172800 IN NS hippo.ru.ac.za. +gn. 86400 IN DS 31346 8 2 65E9984147AAF1940DF87B8DBB38190736999249DE0F39B88419147F A4AFD01A +gn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OhXyy2ciCu8NjyFJPBJWf8KO4/GrBS35wUr2VoQS8BuTCJMBQTyp0CJm MCTVn1H3Gge6WmCSYqmFCZkD9DV2iSMSDHHaS3l4bq4FdP03OO8FtLij 7Bxec9INe67rKC2UGh0krX+Ugsp7v2FM89ez2DUBjvhu9bF6WDotjkXY +HY= +gn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WVpa6+KTUO2JugkBbOIz/1PMXpVQqXjt+SqKtBQ+0BxNFmtmveD97Jq6 1un0PCxdeGP/r0zzmuZ3K0Yket6vYlEPqQv2r13uIvvb/1fPSESzkaTD oiif7maAh6bwCvnn7X8Fqy0zCJng9B3ZI7wmgAhzUYzYAx2XY+UCAWGl pIY= +gn. 86400 IN NSEC gov. NS DS RRSIG NSEC +gov. 172800 IN NS a.gov-servers.net. +gov. 172800 IN NS b.gov-servers.net. +gov. 86400 IN DS 7698 8 1 6F109B46A80CEA9613DC86D5A3E065520505AAFE +gov. 86400 IN DS 7698 8 2 6BC949E638442EAD0BDAF0935763C8D003760384FF15EBBD5CE86BB5 559561F0 +gov. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JSnEWtlHieVHXD+dGfeLHWWhf+6BVm+1xCjw7RmzWxhzfdPA5zHWMDvU U0kPRwxgQbdLthIlJ7bj7rRpqEtPuBvXRVWYOjxhPGBlvWKDlK0WzJHF BnfuVDjB8TmdZ7F2KmbTTX0ujkHdUJSw7UcKrpGRbu6TnC59mR7YxWiL 0YI= +gov. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HwyphStQFZ+VlK136Q/GBosCRWSvW1JArQic1i0bsKN3yhJHO5kilmT4 IkVZgZ71ZzZ2maZHhCXeWy3rBuYRGml16CYrFbXFSXrMvxJUxtE3rC5x vw8GudaWoLcHTglzdZF6m4CneGRGyO3Pgd/F7vteE3/NqX1aXhvyWrCZ gOQ= +gov. 86400 IN NSEC gp. NS DS RRSIG NSEC +gp. 172800 IN NS gp.cctld.authdns.ripe.net. +gp. 172800 IN NS ns1.nic.gp. +gp. 172800 IN NS ns1.orangecaraibe.com. +gp. 86400 IN NSEC gq. NS RRSIG NSEC +gp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eVHq0upqcfAzARAQdPX1Zccns8HsOlo4NkB5yHWyh953FlKJU9YeMSKi SIHKhpFMlWRGu2wCN4vjxD/TfZOeAMkc1f68MEP5JFB7CV9K6LMRrDXe AKIVWAHD11tVBG/AmmDO0xJJPqOMQWx6gSuOnJ+elVohmpQQlY8vJqW7 l0Y= +ns1.nic.gp. 172800 IN A 193.218.114.2 +gq. 172800 IN NS a.gq.globalanycastcloud.freenom.net. +gq. 172800 IN NS b.gq.globalanycastcloud.freenom.net. +gq. 172800 IN NS c.gq.globalanycastcloud.freenom.net. +gq. 172800 IN NS d.gq.globalanycastcloud.freenom.net. +gq. 172800 IN NS ns.ucad.sn. +gq. 172800 IN NS bow.intnet.gq. +gq. 172800 IN NS dns.intnet.gq. +gq. 172800 IN NS phloem.uoregon.edu. +gq. 86400 IN NSEC gr. NS RRSIG NSEC +gq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rnGd29GZTxEfIhoId6bhuSI2ii1hD7hmqNvmsUJDqXlBaeK+F2CcploA sRC/0Zs8HxYtpDt3W0N42IID8eqBhd/yeg0Id+qgmiHCT74ejZjvUOfi YT0bECI/g4f/e6tJllis04tm8+NiFwYyv2x4Q9hh4c6hwIuivyCk/wO3 UVo= +bow.intnet.gq. 172800 IN A 193.251.153.78 +dns.intnet.gq. 172800 IN A 193.251.153.67 +gr. 172800 IN NS gr-m.ics.forth.gr. +gr. 172800 IN NS estia.ics.forth.gr. +gr. 172800 IN NS gr-at.ics.forth.gr. +gr. 172800 IN NS gr-br.ics.forth.gr. +gr. 172800 IN NS gr-ix.ics.forth.gr. +gr. 172800 IN NS gr-us.ics.forth.gr. +gr. 172800 IN NS grdns.ics.forth.gr. +gr. 172800 IN NS grdns-de.denic.de. +gr. 86400 IN DS 57519 7 2 89AD46EAD256DA5010F004AEAE31E41FBA15FD91F5F0F85B2FD820C2 7EEB5CF3 +gr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cp0u4VlMqdEwXX3lopnsuMhEFoa+a5U27m05gQ/sZKmrICgyu4XSQenX WVqYODM4oRxo+DmHD+t4K2VgroBK4PkrCQhi+PV7vfrq8HfMMAlsOEyH 5thMpkzv2uyg4TrCoj9nxpVb80dQ/KXHrZf+UoaGjlJ1nFIcaYmBvWZ/ uHc= +gr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l43SiTvED4fXoDqm/IRanH7GnZXbmj9fRtMjW4CNM/1D7k3actjCzwF1 einfiy9sXscD1SJK4b/asDXknZVukVxvvrHGaJakZ/omjTrb/V1jAzj9 mr5hJj8f5zCs9NSia+aT41JW5JP1vy4HgxgbQFab3cb2MqZdD3UaCpFm mVg= +gr. 86400 IN NSEC graphics. NS DS RRSIG NSEC +estia.ics.forth.gr. 172800 IN A 139.91.191.3 +estia.ics.forth.gr. 172800 IN AAAA 2001:648:2c30::191:3 +gr-at.ics.forth.gr. 172800 IN A 78.104.145.227 +gr-br.ics.forth.gr. 172800 IN A 200.160.7.163 +gr-ix.ics.forth.gr. 172800 IN A 176.126.38.132 +gr-ix.ics.forth.gr. 172800 IN AAAA 2001:7f8:6e:1::132 +gr-m.ics.forth.gr. 172800 IN A 194.0.4.10 +gr-m.ics.forth.gr. 172800 IN AAAA 2001:678:7::4:10 +gr-us.ics.forth.gr. 172800 IN A 199.4.28.219 +gr-us.ics.forth.gr. 172800 IN AAAA 2620:0:22b0:4:221:9bff:fe97:dc44 +grdns.ics.forth.gr. 172800 IN A 139.91.1.1 +graphics. 172800 IN NS demand.beta.aridns.net.au. +graphics. 172800 IN NS demand.alpha.aridns.net.au. +graphics. 172800 IN NS demand.delta.aridns.net.au. +graphics. 172800 IN NS demand.gamma.aridns.net.au. +graphics. 86400 IN DS 53587 8 2 DD8B16BDEDCFBAB5244EB0C0FDC415D52D039D9B225ABCAF4D35B4BA CC241033 +graphics. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . sMhxG++NiwaclG0oEVNZjdVivopc/WsZlCp8eI1TljTmSypjOxsY9Lre NfrSdKS5xz5CHZVGl+pVjSAHIl6La8QamAbJzj0+WctNaBtgcZRK5wNt DlVAvswg2P/Y9o3KQzTVEB/ZcPO9Q8xFNntXiarg8c9Jo2IKMphFy7Oy M8Q= +graphics. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MJvN/vvg+tSzeJ6kxdSp4HIRGUVot50gp8KmLc8zsHUCvhMcKOfbkhDE hpkLXw7GzLYUIXO85x6I2rs6OqqiOL94PsWex0wYJy1NXzjKuHAqdjNZ EQ47M2MIytoummbZYEGQKmkaF1jreyiK3WFcPcRrABLXu8ZBtHAtDWpE +/k= +graphics. 86400 IN NSEC gs. NS DS RRSIG NSEC +gs. 172800 IN NS gs.cctld.authdns.ripe.net. +gs. 172800 IN NS ns.anycast.nic.gs. +gs. 172800 IN NS gs1.dyntld.net. +gs. 172800 IN NS gs3.dyntld.net. +gs. 86400 IN DS 23990 8 2 2CBC82DA27FDB16662BF359F59DF1B63FA0AB720BFC2120F17BA369A 3249FC5E +gs. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . mdnzGD+B9ujgPgs8vBbnZOMNTEtEcREXGqo2kcoqnfEghVpDj1U41cO4 Zs1bMl91X9VWCkkBm3wEhBns7BZHHkMTfv9ZWpAgg4zuC9I8zEyM68mk qosPEsJcl2o56I1/mk2ngb03ldFps/bVifcyLVMZv4lmJPBMf+IQr/R7 Hpw= +gs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . da/INQAnm/yYvzeeZ9ZWVskGWSwve6kYykYuv3wM5sFGiDk7UxnbDhbK regg1MitdNwFS9c+jc7PLZ7eBAcKgHmLCLr9DIxiJOXEx17Gl9Bf+zNV IeweRvzViWRtignzE/pBT6ufQYTk96RGoqwwQRGIE9JGIxV6Z9FAI1pr a3k= +gs. 86400 IN NSEC gt. NS DS RRSIG NSEC +ns.anycast.nic.gs. 172800 IN A 204.61.216.21 +ns.anycast.nic.gs. 172800 IN AAAA 2001:500:14:6021:ad::1 +gt. 172800 IN NS ns.dns.br. +gt. 172800 IN NS ns.uvg.edu.gt. +gt. 172800 IN NS ns3.nic.mx. +gt. 172800 IN NS osi2.gua.net. +gt. 172800 IN NS sns-pb.isc.org. +gt. 86400 IN NSEC gu. NS RRSIG NSEC +gt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . q0iwozSzw8nTjbI8zu59/Qr7wBNmqyhmB3qMFgI25YJDdu1f/mYqkE0g A07w0TJmqcplHJAZ9fHk9ciC/QitkGwEhFhhRJoWV0EwUe2XrCFWrdah dPfYuIFV3KArg8MkTJ9wPVvhmCMwXszwDR4rETXcTLHuJiUOzBrzzx54 BYE= +ns.uvg.edu.gt. 172800 IN A 168.234.68.2 +ns.uvg.edu.gt. 172800 IN A 200.9.74.2 +gu. 172800 IN NS gu.cctld.authdns.ripe.net. +gu. 172800 IN NS ns.gu. +gu. 172800 IN NS ns.edu.gu. +gu. 172800 IN NS nsuog.edu.gu. +gu. 86400 IN NSEC guitars. NS RRSIG NSEC +gu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XkOeYm21v0R6GJJlLVB2NKqEODZpvr1QKXLhJGXA+xKt6ocfUXvn15T/ f4JJK690MEYzji/ZzHxbUjLvDQ2a1YMHMBT36WKwzobS+VLVnu+rM1XF O75XTvWTuPxaQDTmV8Q9V/SD5RZsXDdQj9RBjFl+6GBIhtGNZW6Vri51 +uU= +ns.edu.gu. 172800 IN A 168.123.2.50 +nsuog.edu.gu. 172800 IN A 67.98.164.133 +ns.gu. 172800 IN A 168.123.4.10 +guitars. 172800 IN NS a.ns.uniregistry.net. +guitars. 172800 IN NS tld.isc-sns.com. +guitars. 172800 IN NS tld.isc-sns.net. +guitars. 172800 IN NS tld.isc-sns.info. +guitars. 86400 IN DS 62849 5 1 7AFB61D09960E51EF0B0337834B17BA533E26D3F +guitars. 86400 IN DS 62849 5 2 84B9ECF472CD56FF8EFDE4FBFEB45C2933369870062A0453E2D7F3A2 286F9A5E +guitars. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Iw//Opmd6XIzOX4SqfKCqB76uXQlkn4SM/D5tnh+rs/TLZpEUzFqPY7z fvhP/m/xsNCAZUGpWZRJiiINg7Lw+kCswqJoVOlxzbDHyB9BmeIuw8s+ hw/NM4AaU56pqcndgVzb+Smu5q6GOb8KUE/peDlQgCdhmZSzYvyFeB/T Lj8= +guitars. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S6CBeW+vVjg8Up95CnAvVujfXnacVyZNYnkNjYKXRMvGIhKe/QFhNTJS wKR6OCX9B2Rb4giVzlWtpvhNen/AImBr26nBcBCIRjn3JeVSkgohZ8+i okilg9a+6Skmoo+cq+n/WrL8NUtgv5Rfr0/0cD07fskHRcLcJg7WrBdI Rz0= +guitars. 86400 IN NSEC guru. NS DS RRSIG NSEC +guru. 172800 IN NS demand.beta.aridns.net.au. +guru. 172800 IN NS demand.alpha.aridns.net.au. +guru. 172800 IN NS demand.delta.aridns.net.au. +guru. 172800 IN NS demand.gamma.aridns.net.au. +guru. 86400 IN DS 61402 8 2 A5A658ABCC39ED42CDA94B7279375D690AFFB28B99A1F326CD20F417 B15AAE58 +guru. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OOCJOYP5SWJIs6hRRgqMG0QBXyYKfjxSuFLf/J7FSWba2w3DT3iPXPLg O+OtgCkmuAvIBPdpFjzMRsp9rR1HF+WDiodcXVXjqEQQrMBwYtUvFiYO fyNaIEDlCeJ0Pc/Y161UAuasuOxtsKh0zJ2hVewuB268sp5jBFR7GYXN 76g= +guru. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ikonXV/FiN7v8+IiI0xPp2MfWWtHZU3qxFP3R8xQ906bm8XthcmBYORm QOdwDxV7xQDAAdwYetuUr26uYaFwTP3w93Suxbc1MbDrU8cpMgTwBeGA zBWk22qAyasppBFgJEbu8y2wZza8qFDGeX+pg7rG49HevF4znrRQ9/Qh a2I= +guru. 86400 IN NSEC gw. NS DS RRSIG NSEC +gw. 172800 IN NS ns1.nic.gw. +gw. 172800 IN NS ns3.nic.gw. +gw. 86400 IN NSEC gy. NS RRSIG NSEC +gw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dQY5wNN96U5mQsmF9B59oWi6Ev5EC065jASPlQRI0YSilnWr93t2Qeui O73K5+tH8CEzhqJAqSbT8LAXiZeInAzdE6zG/9qv4T3lWW7ToRelidrj dnZnxNwKaYUzo5J+VdnN7IUgcc3rvrN5T7s7/f8wRyB1uTxBacBT8rdt 0SE= +ns1.nic.gw. 172800 IN A 81.91.170.10 +ns3.nic.gw. 172800 IN A 193.171.255.35 +gy. 172800 IN NS gy.cctld.authdns.ripe.net. +gy. 172800 IN NS ns1.gtt.co.gy. +gy. 172800 IN NS ns2.gtt.co.gy. +gy. 172800 IN NS gy-ns.anycast.pch.net. +gy. 172800 IN NS phloem.uoregon.edu. +gy. 172800 IN NS sns-pb.isc.org. +gy. 86400 IN NSEC hk. NS RRSIG NSEC +gy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oetyCAVA4GzxZbJ9iFzTKv90ecPDwgxgIDSnTuW38XzsF1PbynCvWhio 3QL1D2lcGth0dcaYWcgNdmD2bwGmsrAppVimCTcp7r+GTMF/ihYt9+VW L/slS7LUGfY3ZaYL5/ICHbkEoBjugVPg+uJnUfiBCTn6ci8T2gqU1GAi JSg= +ns1.gtt.co.gy. 172800 IN A 190.80.0.41 +ns2.gtt.co.gy. 172800 IN A 190.80.0.42 +hk. 86400 IN NSEC hm. NS RRSIG NSEC +hk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LDT7w0ASelDXIQWZOB1389uqYMDQtwUstq/1JQoVu5zDlissmd39I+b0 7We41loDeixsh/vhjxgpH1g9ck7AyVZkahy0pGvIzY3F7qMztzwoe987 s5rFTbR5EevvgZCwlrQ3lxF7hxvcR9OKqJJzLHiI1HC6bHiE85+FqPgg jYc= +hk. 172800 IN NS a.hkirc.net.hk. +hk. 172800 IN NS b.hkirc.net.hk. +hk. 172800 IN NS s.hkirc.net.hk. +hk. 172800 IN NS t.hkirc.net.hk. +hk. 172800 IN NS u.hkirc.net.hk. +hk. 172800 IN NS v.hkirc.net.hk. +hk. 172800 IN NS w.hkirc.net.hk. +hk. 172800 IN NS x.hkirc.net.hk. +hk. 172800 IN NS y.hkirc.net.hk. +hk. 172800 IN NS z.hkirc.net.hk. +ns2.cuhk.edu.hk. 172800 IN A 137.189.6.21 +ns2.cuhk.edu.hk. 172800 IN AAAA 2405:3000:3:6::15 +a.hkirc.net.hk. 172800 IN A 203.119.2.18 +b.hkirc.net.hk. 172800 IN A 203.119.87.19 +b.hkirc.net.hk. 172800 IN AAAA 2001:dca:1000::cb77:5713 +s.hkirc.net.hk. 172800 IN A 128.32.136.3 +s.hkirc.net.hk. 172800 IN AAAA 2607:f140:ffff:fffe::3 +t.hkirc.net.hk. 172800 IN A 128.32.136.14 +t.hkirc.net.hk. 172800 IN AAAA 2607:f140:ffff:fffe::e +u.hkirc.net.hk. 172800 IN A 210.201.138.58 +u.hkirc.net.hk. 172800 IN AAAA 2404:0:10a0::58 +v.hkirc.net.hk. 172800 IN A 204.61.216.46 +v.hkirc.net.hk. 172800 IN AAAA 2001:500:14:6046:ad::1 +w.hkirc.net.hk. 172800 IN A 202.12.28.140 +w.hkirc.net.hk. 172800 IN AAAA 2001:dc0:1:0:4777::140 +x.hkirc.net.hk. 172800 IN A 202.45.188.39 +x.hkirc.net.hk. 172800 IN AAAA 2405:3001:1:3a::27 +y.hkirc.net.hk. 172800 IN A 137.189.6.21 +y.hkirc.net.hk. 172800 IN AAAA 2405:3000:3:6::15 +z.hkirc.net.hk. 172800 IN A 194.146.106.70 +z.hkirc.net.hk. 172800 IN AAAA 2001:67c:1010:17::53 +hm. 172800 IN NS ns1.registry.hm. +hm. 172800 IN NS ns2.registry.hm. +hm. 172800 IN NS ns3.registry.hm. +hm. 86400 IN NSEC hn. NS RRSIG NSEC +hm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tX+OAMawOTD3e2uUHckULzBa4xDdHih9yc/5Rv9WeeZ50nXn6nMw7Mq8 52MJyotFTDpT5Q8/eRvmSIpaeFax7VIJAHk8hu9zdOcdMaQZ+gPocjzS lG1JW5oQJ4lY95//EvVH6LWtYxufg0gQKiZ2Zvr6koNT/GLD9MsX3N+i pqQ= +ns1.registry.hm. 172800 IN A 208.70.79.25 +ns2.registry.hm. 172800 IN A 208.70.79.24 +ns3.registry.hm. 172800 IN A 202.169.96.24 +hn. 172800 IN NS sns-pb.isc.org. +hn. 172800 IN NS pch-anycast.rds.org.hn. +hn. 172800 IN NS nicmx-anycast.rds.org.hn. +hn. 86400 IN DS 20599 8 2 B7CA2A70DEA7188CB7319A8049164EF9D0E3496D8FE4E3C135CBA845 2544BA72 +hn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aiAGUWxFjK/B0nZMVJfxd3b+osiEadNF/a6gnBe3i9E4ViWFlSCrqVaK cOWLaKi7fB3xge1+hN8d4V+nsbPTmhjtlcjoEBskInu9bZtCAjcskEDq QqEQtLEkTSTReIF5CDLTXme207AIgjD8iBV+ZPenqY6yECR3RIH+M5xi I7w= +hn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aKKvT857BTuV8ukbtReO4Xoq9Ckc8NoY86g1nkr0JEFctwUfMZzPkvKa jewc5gbBD5M9XKVIjRAcjKByT+FNll6NF0PqsbpIaEMo+kHYOPoL5GT7 wQqBC4TjfLH6xPWJ/3Qkgaa9UIYX0DXSyhl79NbOQmx+8jO7fZeJufvY SBE= +hn. 86400 IN NSEC holdings. NS DS RRSIG NSEC +nicmx-anycast.rds.org.hn. 172800 IN A 200.33.111.1 +pch-anycast.rds.org.hn. 172800 IN A 204.61.216.64 +pch-anycast.rds.org.hn. 172800 IN AAAA 2001:500:14:6064:ad::1 +holdings. 172800 IN NS demand.beta.aridns.net.au. +holdings. 172800 IN NS demand.alpha.aridns.net.au. +holdings. 172800 IN NS demand.delta.aridns.net.au. +holdings. 172800 IN NS demand.gamma.aridns.net.au. +holdings. 86400 IN DS 11149 8 2 CC43CE2E88871B831D3160979357A360F32D2CEF4FC6FC2B013921AC BD6D1BE0 +holdings. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . DfAuyZXrd95XdPpzSxt8Clert5aGrzsYbE2VuFmP0Q+uDBL9wwYf1Ml5 1/q4vkyvd3a+uZ/nc107o4dTlbWh9QuKvTJVhq1IyrpH24X7VCppznFF JcTIHLFFdT6t9nhtTx2yvlim1eEeV5Fu0uhM0UpqDYvApPAlamaE71Dv pH4= +holdings. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pQ73FMZUFfd2ugGa+U1Av2kOSLbT8NzBEEk0QRUIOp6VEkjDWa5xecpX un/KvLo2nfwva+aE8wxV3I6xWOIm8EFB7FyYWtqgPi6E83iD6l1biLRO FuItFLgPLDWahYxhkoFf1c6ivkQpwdWooV4g14JYgUkZnnCtz9XQ6Nwd CmA= +holdings. 86400 IN NSEC holiday. NS DS RRSIG NSEC +holiday. 172800 IN NS demand.beta.aridns.net.au. +holiday. 172800 IN NS demand.alpha.aridns.net.au. +holiday. 172800 IN NS demand.delta.aridns.net.au. +holiday. 172800 IN NS demand.gamma.aridns.net.au. +holiday. 86400 IN DS 35209 8 2 605926A35E2424BD2C7782F22B5E55157AFA1688AC643C0F45B3B6DE A435D47D +holiday. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dNoovKZLkQK19nsFzOp8xYm6zzsonS40I+p8PCa3yO1g+BBsiwKTlhsu uEIcqPDvGAIp+0yse8z7HkFNYH1SwPj2/3aFVEED6Tun7h5ZFwpiyn+a 3Up34E++pWmD5N/okO18m/jVRm/vVtsQl3mvdHLLEprXvs9bnfttX/6R VVw= +holiday. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dnJhTw3hXDlBABSdNlbFA//ikACBFpsQn+blp6n5st+SNhR5XAIk9tv5 LVUM0tJYCSFwQI9LF13EcR+6V1NNrRC4LP62XxjWp4sTqslF2XfnQYky QMtRdfNgWKN3HcjttB7u1/wnTUidfwji/3jkDx331ZEBagcXo1oWxWuY EbU= +holiday. 86400 IN NSEC house. NS DS RRSIG NSEC +house. 172800 IN NS demand.beta.aridns.net.au. +house. 172800 IN NS demand.alpha.aridns.net.au. +house. 172800 IN NS demand.delta.aridns.net.au. +house. 172800 IN NS demand.gamma.aridns.net.au. +house. 86400 IN DS 45637 8 2 FCE9DE111696A86214B6A3E1EA0FA42A193E1A7756C52187215099E9 9B7ACAE2 +house. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . H2A5ensuuOzfBWcD6n1yjbVdPLeAVVtItVPO0BPCNgyDIkz4ojQDk+ib uNZ9GHpP9xAAq+/suUZ5pvj01jpO0aFrfYsCzrYfDqcoQP/mJoaMnrsN rVjOeue7XE990qlJMaKogRoRqrKMMjPQbhih7HKuBrArmHJzACOP82bc 2PA= +house. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mqR0dWIMsjPSBzfSn3n1rhZdW2S6tEqTjt5KunQKlHKXGB4Ugi0YVc8N 3vdCT4HLDOD5j4cFur0PAr1p2RnuHCJ1N+JS7cDx9fECRftMpLiMzxvi nNMOc2q43T7xqMrJ7MQGp3sDg6awQd+uDFsPhnDGWKpdlO3gwwPQ2G/T x34= +house. 86400 IN NSEC hr. NS DS RRSIG NSEC +hr. 172800 IN NS ns5.univie.ac.at. +hr. 172800 IN NS n3ns.nic.es. +hr. 172800 IN NS sns-pb.isc.org. +hr. 172800 IN NS hr-ns-1.carnet.hr. +hr. 86400 IN NSEC ht. NS RRSIG NSEC +hr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CZWYwQ32kT4vRLiAzJfNbhkSHbeUvOs4NiFe0sJQpow4x/RwsUpbyxNZ lHzzEjhgd2/ld/o7RUPvtUi/cuu07Wkgmhcvx2tzEWpPUV30JQ9vPmuI iMk8jKjVAYVaWOkSa3AoveA9N/Bb5a227MDdRPOZ1xRvUafliHPn0E4C XNU= +hr-ns-1.carnet.hr. 172800 IN A 161.53.160.100 +hr-ns-1.carnet.hr. 172800 IN AAAA 2001:b68:ff:1::100 +ht. 172800 IN NS dns.princeton.edu. +ht. 172800 IN NS ns3.nic.fr. +ht. 172800 IN NS ht-ns.anycast.pch.net. +ht. 172800 IN NS charles.cdec.polymtl.ca. +ht. 86400 IN NSEC hu. NS RRSIG NSEC +ht. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TpNON3MHZpgDXx3KoJ2KQgg8zOekhJzCfXMmAqISel1HgXskWM9ySp+q KymBCIUcYoqQTsBzEacj7n+XW8UNyjRKl5ENwDeHLnc/9BeU1Aow7P7g A6u1kj1oEj96fW8/XrOhuoOozalA/uJWDgS4V+p/JILVcc7A2aTvN9o6 oa0= +hu. 172800 IN NS b.hu. +hu. 172800 IN NS c.hu. +hu. 172800 IN NS d.hu. +hu. 172800 IN NS e.hu. +hu. 172800 IN NS ns.nic.hu. +hu. 172800 IN NS ns2.nic.fr. +hu. 172800 IN NS ns-com.nic.hu. +hu. 86400 IN NSEC id. NS RRSIG NSEC +hu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QF0f7K8u+1Jb+remY+zu+JXKoLS0NaLQaLFPBf1USy3VczOQR38Tu/hN kAeIGyXUL+Wyh2SSOiVqGAs/qQjYpRpkusNw8VxdmNRDrmTjptkIm00G IgFkEHemb/W98MwTuMfSeK9hqP0Jgp2G+tlNq5/Q0Vku0/iJFNoJegMK a3o= +b.hu. 172800 IN A 193.239.149.161 +b.hu. 172800 IN AAAA 2001:738:4:4000::3 +c.hu. 172800 IN A 193.6.16.1 +d.hu. 172800 IN A 195.70.35.250 +e.hu. 172800 IN A 194.0.25.11 +e.hu. 172800 IN AAAA 2001:678:20::11 +ns.nic.hu. 172800 IN A 193.239.148.48 +ns.nic.hu. 172800 IN AAAA 2001:738:4:8000::48 +ns-com.nic.hu. 172800 IN A 194.0.1.12 +ns-com.nic.hu. 172800 IN AAAA 2001:678:4::c +id. 172800 IN NS g.dns.id. +id. 172800 IN NS ns1.id. +id. 172800 IN NS ns1.rad.net.id. +id. 172800 IN NS ns1.indo.net.id. +id. 172800 IN NS ns2.cbn.net.id. +id. 172800 IN NS sec3.apnic.net. +id. 86400 IN NSEC ie. NS RRSIG NSEC +id. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vExZg4LWa0N9xMbARv4JeuZ5Ily8x6Wj7xQLG7GyDB8pyl2on+2OVO0i NfgFTznmNdoFVVbiBwtdbsqjREjfpqZvHw20m8sUknAzArbv6MsZK9bq 8PXyUCd1FGmqPkE1wGh844Hq69+1p3qgrvaMJVQmVyR8S14BkINl7acI 1ts= +g.dns.id. 172800 IN A 203.119.112.84 +g.dns.id. 172800 IN AAAA 2001:dd8:1f:4::84 +ns2.cbn.net.id. 172800 IN A 202.158.40.1 +ns2.cbn.net.id. 172800 IN AAAA 2001:d10:a:53::53 +ns1.indo.net.id. 172800 IN A 202.159.32.2 +ns1.rad.net.id. 172800 IN A 202.154.1.2 +ns1.id. 172800 IN A 202.155.30.227 +ns1.id. 172800 IN AAAA 2001:e00:1800::2 +ie. 86400 IN NSEC il. NS RRSIG NSEC +ie. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QG/w1lj9aznpHMBXQbs08W9692hy2BKfDfOOtCndGL4SKUDEDJrRvfLn bsxfLC5KV3KtEJ6a9EAPBvOlHnbJYpDQCc/njrSMtzVnX0noqe+cKgUK DHn1XaAhLvrNBAUm/M/j0N4PGgshIBhHat6HU+wSweZNfCItcKPRcTwN zYM= +ie. 172800 IN NS a.iedr.ie. +ie. 172800 IN NS b.iedr.ie. +ie. 172800 IN NS c.iedr.ie. +ie. 172800 IN NS d.iedr.ie. +ie. 172800 IN NS ns3.ns.esat.net. +ie. 172800 IN NS gns1.domainregistry.ie. +ie. 172800 IN NS gns2.domainregistry.ie. +ie. 172800 IN NS ns-ie.nic.fr. +auth01.connect.ie. 172800 IN A 87.198.184.50 +gns1.domainregistry.ie. 172800 IN A 198.133.199.102 +gns2.domainregistry.ie. 172800 IN A 198.133.199.103 +a.iedr.ie. 172800 IN A 77.72.72.44 +a.iedr.ie. 172800 IN AAAA 2a01:4b0::3 +b.iedr.ie. 172800 IN A 77.72.72.34 +b.iedr.ie. 172800 IN AAAA 2a01:4b0::2 +c.iedr.ie. 172800 IN A 194.146.106.98 +d.iedr.ie. 172800 IN A 77.72.229.245 +il. 172800 IN NS nsa.ns.il. +il. 172800 IN NS nsb.ns.il. +il. 172800 IN NS nsd.ns.il. +il. 172800 IN NS nse.ns.il. +il. 172800 IN NS nsg.ns.il. +il. 172800 IN NS ildns.huji.ac.il. +il. 172800 IN NS lookup.iucc.ac.il. +il. 172800 IN NS sns-pb.isc.org. +il. 86400 IN NSEC im. NS RRSIG NSEC +il. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tP7XBi8ZnoiX2Vz9Deda45H2w+LlwjeOjJPDrju6oz/UJ4mgMRT2IRdb JYq/FtO+zNmjp+AOdjyJUu1QSn4odn0Iqi6XkT4jQuolN8iIENcw4wh2 1mc4ofDujgMhIdW1KymSbIqdP6vdmxSTMnBelBUNWob0qDc05e0q5/va Pr8= +ildns.huji.ac.il. 172800 IN A 128.139.6.66 +lookup.iucc.ac.il. 172800 IN A 128.139.34.240 +lookup.iucc.ac.il. 172800 IN AAAA 2001:bf8:900:6::808b:22f0 +nsa.ns.il. 172800 IN A 192.115.210.58 +nsb.ns.il. 172800 IN A 192.115.210.60 +nsd.ns.il. 172800 IN A 149.20.56.132 +nsd.ns.il. 172800 IN AAAA 2001:4f8:3:37::11 +nse.ns.il. 172800 IN A 192.115.141.253 +nsg.ns.il. 172800 IN A 81.91.161.212 +nsg.ns.il. 172800 IN AAAA 2a02:568:ffff:8::53 +im. 172800 IN NS ns4.ja.net. +im. 172800 IN NS hoppy.iom.com. +im. 172800 IN NS barney.advsys.co.uk. +im. 172800 IN NS pebbles.iom.com. +im. 86400 IN NSEC immobilien. NS RRSIG NSEC +im. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AfSUXkFdS6Z5lsy3oZNHU7ZFU7NJe2OlANnkZUdIFh5ye4JNFMOm73b+ L9u7D4F79XJPdPE1sKG/BfV9awFPVoAzrTYf6TWuu+b4Q7XGFe1Fpl7f O8Ngnp0zrql8xfIpPcAZHIJAAZUolKocERH4QujyB5LAUQJ4h/yLQrFA gLo= +immobilien. 172800 IN NS demand.beta.aridns.net.au. +immobilien. 172800 IN NS demand.alpha.aridns.net.au. +immobilien. 172800 IN NS demand.delta.aridns.net.au. +immobilien. 172800 IN NS demand.gamma.aridns.net.au. +immobilien. 86400 IN DS 60322 8 2 7BB72F07C2FE7F5BB0DF667556FBC9BF5CFB31D66121D4AB5BCFDD0D 29D39FCC +immobilien. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lrbZO9bbEmqgbAsGobGfTQEyAFnNJ69yPLXHtyEVz06nCOYt0HRCWh2G tRDL23kt8zseviMajmwLsvvEf+sWWQO0vVzirsA/W4gI5rw1C9Waj26I txiJfQZR95fPjbAZM/3CWrZk/nOGACVrBX5Srq32oKepNVoun6vOV1Bn nlU= +immobilien. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ql5LKqAhrTO0gAODJsmCk/odMzMubiCi+c0uU68onQx/VrTOwucVHsYz nvT5NugIYXfrC59UD3a3S3gufj2/xdj0kddmJ+DkFOPJtztypEEZflvW 8025z68+m8huHZ/X4IrufEwQQhjL/vzEhBzhxzNTw4YEr1unb4ReTVSD jx0= +immobilien. 86400 IN NSEC in. NS DS RRSIG NSEC +in. 172800 IN NS a0.in.afilias-nst.info. +in. 172800 IN NS a1.in.afilias-nst.in. +in. 172800 IN NS a2.in.afilias-nst.info. +in. 172800 IN NS b0.in.afilias-nst.org. +in. 172800 IN NS b1.in.afilias-nst.in. +in. 172800 IN NS b2.in.afilias-nst.org. +in. 172800 IN NS c0.in.afilias-nst.info. +in. 172800 IN NS ns7.cdns.net. +in. 86400 IN DS 64788 7 1 82E4E46622B646086C1051A6093DEB897BD1C022 +in. 86400 IN DS 64788 7 2 4021B67522D8935C8D8D7CE32900ACB382F55E3D1A8DE920233CBE70 A13DA85B +in. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z+tJGUt9hIPU2vqXKRcWHa8xtnuHx7XJ4g4akPC6XDxgdsE9Blby4NTQ Daq2ss+0DSLkRy+oY7r3GO9jT0OBono7hqe+dn6f17Vzi8zEzYKrTSUe DkLalNcZhtCFaUFhblJbDlkO8iwhX7hP+AakFSFiZVhZPUn68qNd4lk8 vec= +in. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . JjxR4BKPUDTaOjTrS28BdFtpOI1m1Mb2wp9paW+Uzcar72WLE/aOxo7N M+cKa1xbiRji7872XYqjrkRveH5/RKtLTTzxgSgZ5/qHrA4/Dr5QjltK JGwHUJCWej9NTYlNgiE/YFCNEGmcv6W9WokW9CwwevhFPiswRe8a19zK qVo= +in. 86400 IN NSEC info. NS DS RRSIG NSEC +a1.in.afilias-nst.in. 172800 IN A 115.249.164.142 +a1.in.afilias-nst.in. 172800 IN AAAA 2001:4528:fff:13::142 +b1.in.afilias-nst.in. 172800 IN A 125.19.40.90 +b1.in.afilias-nst.in. 172800 IN AAAA 2404:a800:2:1e::19:90 +info. 86400 IN NSEC institute. NS DS RRSIG NSEC +info. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bio9hJFP3xz6umHipL/QwssC2jUt2t9U0ppOrQ+wqLsX033IkE3mM96t xKclqHCxRGI20/85NKcNRYPCAdIp8cCFxSZjfh71iL04oB4QW22NL8X0 k+71cXcj0roHZ4/9uWygCffxTNlm+A8mT+mu1vyzeQ/1a+5WJ57h5sHP HQU= +info. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . E0S9Fo8IjX1c8u9tXpLmnpSo0Kl9RIyhi+aTrAV5l7Nwck6Fr5DtWdwi cFWySPYUwsnS0yvRKfz6r8GH4xtnGdpSrGNuy8xAhuYaz6bZdcpu7jIV +Tv0lYmjIUyVfJ0KrtXnPXuPdiucGX51QcDBOhgxemKLEHvigJCD37j3 cik= +info. 172800 IN NS a0.info.afilias-nst.info. +info. 172800 IN NS a2.info.afilias-nst.info. +info. 172800 IN NS b0.info.afilias-nst.org. +info. 172800 IN NS b2.info.afilias-nst.org. +info. 172800 IN NS c0.info.afilias-nst.info. +info. 172800 IN NS d0.info.afilias-nst.org. +info. 86400 IN DS 54531 7 1 93D30693C59CD11646CEAA77DCED10DA13BEEDE9 +info. 86400 IN DS 54531 7 2 E2D262469CB998642F772610A77AAEABB84A4F71CF40B9E30C03B9C9 E1F6409C +a0.aero.afilias-nst.info. 172800 IN A 199.254.51.1 +a0.aero.afilias-nst.info. 172800 IN AAAA 2001:500:1d::1 +a2.aero.afilias-nst.info. 172800 IN A 199.249.115.1 +a2.aero.afilias-nst.info. 172800 IN AAAA 2001:500:43::1 +c0.aero.afilias-nst.info. 172800 IN A 199.254.53.1 +c0.aero.afilias-nst.info. 172800 IN AAAA 2001:500:1f::1 +a0.asia.afilias-nst.info. 172800 IN A 199.19.55.1 +a0.asia.afilias-nst.info. 172800 IN AAAA 2001:500:d::1 +a2.asia.afilias-nst.info. 172800 IN A 199.249.114.1 +a2.asia.afilias-nst.info. 172800 IN AAAA 2001:500:42::1 +c0.asia.afilias-nst.info. 172800 IN A 199.254.29.1 +c0.asia.afilias-nst.info. 172800 IN AAAA 2001:500:17::1 +a0.cctld.afilias-nst.info. 172800 IN A 199.254.59.1 +a0.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:25::1 +a2.cctld.afilias-nst.info. 172800 IN A 199.249.116.1 +a2.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:44::1 +c0.cctld.afilias-nst.info. 172800 IN A 199.254.61.1 +c0.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:27::1 +a0.in.afilias-nst.info. 172800 IN A 199.7.87.1 +a0.in.afilias-nst.info. 172800 IN AAAA 2001:500:29::1 +a2.in.afilias-nst.info. 172800 IN A 199.249.117.1 +a2.in.afilias-nst.info. 172800 IN AAAA 2001:500:45::1 +c0.in.afilias-nst.info. 172800 IN A 199.253.57.1 +c0.in.afilias-nst.info. 172800 IN AAAA 2001:500:51::1 +a0.info.afilias-nst.info. 172800 IN A 199.254.31.1 +a0.info.afilias-nst.info. 172800 IN AAAA 2001:500:19::1 +a2.info.afilias-nst.info. 172800 IN A 199.249.113.1 +a2.info.afilias-nst.info. 172800 IN AAAA 2001:500:41::1 +c0.info.afilias-nst.info. 172800 IN A 199.254.49.1 +c0.info.afilias-nst.info. 172800 IN AAAA 2001:500:1b::1 +a2.me.afilias-nst.info. 172800 IN A 199.249.119.1 +a2.me.afilias-nst.info. 172800 IN AAAA 2001:500:47::1 +a0.mobi.afilias-nst.info. 172800 IN A 199.254.55.1 +a0.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:21::1 +a2.mobi.afilias-nst.info. 172800 IN A 199.249.118.1 +a2.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:46::1 +c0.mobi.afilias-nst.info. 172800 IN A 199.254.57.1 +c0.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:23::1 +a0.org.afilias-nst.info. 172800 IN A 199.19.56.1 +a0.org.afilias-nst.info. 172800 IN AAAA 2001:500:e::1 +a2.org.afilias-nst.info. 172800 IN A 199.249.112.1 +a2.org.afilias-nst.info. 172800 IN AAAA 2001:500:40::1 +c0.org.afilias-nst.info. 172800 IN A 199.19.53.1 +c0.org.afilias-nst.info. 172800 IN AAAA 2001:500:b::1 +a0.post.afilias-nst.info. 172800 IN A 65.22.0.1 +a0.post.afilias-nst.info. 172800 IN AAAA 2a01:8840::1 +a2.post.afilias-nst.info. 172800 IN A 65.22.4.1 +a2.post.afilias-nst.info. 172800 IN AAAA 2a01:8840:4::1 +c0.post.afilias-nst.info. 172800 IN A 65.22.2.1 +c0.post.afilias-nst.info. 172800 IN AAAA 2a01:8840:2::1 +a0.pro.afilias-nst.info. 172800 IN A 199.182.0.1 +a0.pro.afilias-nst.info. 172800 IN AAAA 2001:500:c0::1 +a2.pro.afilias-nst.info. 172800 IN A 199.182.32.1 +a2.pro.afilias-nst.info. 172800 IN AAAA 2001:500:e0::1 +c0.pro.afilias-nst.info. 172800 IN A 199.182.16.1 +c0.pro.afilias-nst.info. 172800 IN AAAA 2001:500:d0::1 +a0.xxx.afilias-nst.info. 172800 IN A 199.115.152.1 +a0.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a0::1 +a2.xxx.afilias-nst.info. 172800 IN A 199.115.156.1 +a2.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a4::1 +c0.xxx.afilias-nst.info. 172800 IN A 199.115.154.1 +c0.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a2::1 +tld.isc-sns.info. 172800 IN A 72.52.71.3 +tld.isc-sns.info. 172800 IN AAAA 2001:470:1a::3 +tld5.ultradns.info. 172800 IN A 192.100.59.11 +institute. 172800 IN NS demand.beta.aridns.net.au. +institute. 172800 IN NS demand.alpha.aridns.net.au. +institute. 172800 IN NS demand.delta.aridns.net.au. +institute. 172800 IN NS demand.gamma.aridns.net.au. +institute. 86400 IN DS 33412 8 2 049FCBEE91ADA923921C8A4204D7AAA3CEABE0ABC33021385EB491D6 CB865C15 +institute. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gnyw8q+gQ+FRV0peDbuPaoA9JSIBtI6e/cd7gmTyyw5vsfqb/DmCzybR M8wg7Bzql6QSz5eHOCCRF+7D6IFdE8MRA+GtzrHI3r92lbdbT4H2ibxC WgfV7tgO5y2xAuuWyPcO+tvYukIwMkwXOHcoq7M0LJ7hEjwL9sGz8LG7 mso= +institute. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rRDmLrPoRqMBVbDpFzA9DrjHxaLNrQe/M7dW/a+EkUWr3rlfWAIPz/gR 0LbU1vKrAV1KlXjoF+DO3Tu2ub4wQ8oLW2WohD7IcucNvEXeO8RuC8wZ 32QsFxskzP29Tk7nIXexS3S1b81dG38QzvRyyrPkAVXeo0YUPrg3xUgr J00= +institute. 86400 IN NSEC int. NS DS RRSIG NSEC +int. 172800 IN NS ns.uu.net. +int. 172800 IN NS ns.icann.org. +int. 172800 IN NS ns0.ja.net. +int. 172800 IN NS ns1.cs.ucl.ac.uk. +int. 172800 IN NS sec2.authdns.ripe.net. +int. 86400 IN NSEC international. NS RRSIG NSEC +int. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . W0vHInNZLUG2BhLiJOWcpKGCATt7xqsS562jrl7SC8jeG2CokJcKXNm6 FvA3af8h0wgSQoB1GzwwiT/uJElvqDHzubV6DT96nE3ArLc4SIDxcLVk 8fmmNJpdqcSYNx8K1SmSnoHKG8IR1D0bWrVX/ibErJLzXtCV6NfqpfPO T0M= +international. 172800 IN NS demand.beta.aridns.net.au. +international. 172800 IN NS demand.alpha.aridns.net.au. +international. 172800 IN NS demand.delta.aridns.net.au. +international. 172800 IN NS demand.gamma.aridns.net.au. +international. 86400 IN DS 11137 8 2 F09799F34E9A973DBCF4C647D03C6A2C2E41976D04218F41B82ED6F8 CCAFB2DC +international. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VhYXTlV+HhFtKmVUFBLHbdJM5fpyuHVGwofOpgneD/NnVlqL+kgFowjF HXTzNl69VDV9puv24yVQqYmjQQ/V9FDFOjknNR9B8R9dADhoh/oku3AF 3kdLC3hjE2889ID2wfYd97DglYIwkNtNEBqRNoC7n0cj3+eWANdI2Nlv fHI= +international. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . E4e7WVKdCWOMV+whV7H9pTX2Xih54CW84ihEKhGLXiVI8NTXA5w7CQyq homJqc6hYc9qNCf5dDcMBfrDH6NLPrjg1qOIlwhaY5nCihS35wek7Drd +BP9ug1QWUgVDK3KRdJIW1AnwMndhJz33S7xJ9dgxSpm0hRHtGVFFDey SIU= +international. 86400 IN NSEC io. NS DS RRSIG NSEC +io. 172800 IN NS a.nic.io. +io. 172800 IN NS a.ns13.net. +io. 172800 IN NS b.nic.ac. +io. 172800 IN NS b.nic.io. +io. 172800 IN NS b.ns13.net. +io. 172800 IN NS ns1.communitydns.net. +io. 172800 IN NS ns3.icb.co.uk. +io. 86400 IN DS 13395 7 1 C048489AEC2420E18F5F423192F132106C3691C1 +io. 86400 IN DS 13395 7 2 070BBE5BE5A4BE6271C543BDE99E9981E5D4191740E531AF2585C5D1 619C83F0 +io. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Lp2vSN1H5ymPw2rPQ93/VFkP+yiuzXvMjKK4YllX+gszW8mp4a28yWn7 YldcNY1Ax1MZ6LZ9VgpsU4Y3HEUmoxVQTj0eHM5GJr9l8bx5+Pd8d8Yd 17I9mAAY8lmt2c1Q1epAXv/i1nj3Vyy+25oM3Lm0jwU3LacJfnagFIpf qeI= +io. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kswBOY3ukIMDZqLKz96D4ZLk5WFAfLZ6NPdLeNRw1a+G/0k3KGKTc3if 9mHRA7xgKKwRW+4iUoNLUr/9FWL+Hq7fZzcWvD07KGALqXKwgV74ULud yfpMw/+2LM0oLlqIk3K58HMj8BGKSViOHCvFg6LkS6DYRU/dbX7iDcTt dwE= +io. 86400 IN NSEC iq. NS DS RRSIG NSEC +a.nic.io. 172800 IN A 64.251.31.179 +b.nic.io. 172800 IN A 194.0.2.1 +b.nic.io. 172800 IN AAAA 2001:678:5::1 +iq. 172800 IN NS iq.dns.cocca.org.nz. +iq. 172800 IN NS ns1.cmc.iq. +iq. 172800 IN NS sns-pb.isc.org. +iq. 172800 IN NS nsp-anycast.cmc.iq. +iq. 86400 IN NSEC ir. NS RRSIG NSEC +iq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HeEc1ObC4X43Qk/YaSBOh9tuF/JZczDurQU05H098GzvXiJwG1KJR7qs INrUhxJdP3DDmwuChC27TQPhs+++7al2dg3KYc6rJx7x1pbkl40rHcou 85robZsypelORhNOG15CZkdhyNS/ywh5ylKLOvyWgQrsXcMtv/eEJITj ES8= +ns1.cmc.iq. 172800 IN A 194.117.57.100 +nsp-anycast.cmc.iq. 172800 IN A 194.117.58.42 +nsp-anycast.cmc.iq. 172800 IN AAAA 2001:500:14:8001:ad::42 +ir. 172800 IN NS a.nic.ir. +ir. 172800 IN NS ns.irnic.ir. +ir. 172800 IN NS ns5.univie.ac.at. +ir. 86400 IN NSEC is. NS RRSIG NSEC +ir. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qFg0WhBWuq5XBDkZQJwc6Ij4XLD2zhosUNaqvY7nE1QmVSg6KZrpiL6+ Wv72U/+KmLHM6loulXCpPMTZ+hCECDJ1oyB7ZiDq59QBmaXY9TDc1hiz ZnmFhsV6RkY8VCStSREa0gmeKpq+Hg69DoBm9OaXhENHlOgJbEvTTMkH KA8= +ns.irnic.ir. 172800 IN A 193.189.122.83 +a.nic.ir. 172800 IN A 193.189.123.2 +is. 172800 IN NS is.cctld.authdns.ripe.net. +is. 172800 IN NS sab.isnic.is. +is. 172800 IN NS sunic.sunet.se. +is. 172800 IN NS durinn.rhnet.is. +is. 172800 IN NS isgate.is. +is. 172800 IN NS sns-pb.isc.org. +is. 86400 IN DS 26726 8 1 B2416A62E8732568826213019E7F09AF108183CE +is. 86400 IN DS 26726 8 2 6984FEF569CFDB2CE00AFC62B5763AD50306EB0D4816A7C6CF921BF6 6B12245A +is. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s/F2WR1c/ZrHKr4BEBIM9JfyXDxkb+8HX56HgmjDgYVpq92lsynJn9O3 cJppsStf3dRJ4eCXgE7lCC2zALo2jLhtRReT+VDzOyUnQ5C0nJWvtXAR UEgT8PBl+mdgDhmpVaokWPZ/QV8VnhhnagvmP8cRMsK0v0wD2tJUArUC +48= +is. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tjJsZbUUogDb7TfzyvgPFF8nF6tHtglb0jDk+ZXA6EZ0RO/aH0vtJ4Cz C9ygjfRR5qTFYEs5LIMxp/YLh8vZ867ox9p7kCYZr1hpV62Wdwx+VJtz 9dha2cD45nohli3Ix36+KI7MjGr9nGGqVdknb4OX4rKnZE7MO7bCdPdZ rnY= +is. 86400 IN NSEC it. NS DS RRSIG NSEC +isgate.is. 172800 IN A 193.4.58.51 +isgate.is. 172800 IN AAAA 2001:67c:6c:58::51 +sab.isnic.is. 172800 IN A 194.146.106.58 +sab.isnic.is. 172800 IN AAAA 2001:67c:1010:14::53 +durinn.rhnet.is. 172800 IN A 130.208.16.20 +it. 86400 IN NSEC je. NS RRSIG NSEC +it. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XaT1yZmmu53xa0lOf8OlAHP0WpotKT1kWTG0TkGE88iLEXUQNPHmlVz6 /QsZxlr3LRgfeNjqUhpdUYN25B+Jx2DB58NPNcrXfm5EvcETzhEEnJuz 6CudUUg0UpIL/hwp6JciuvMK8czaekpiKgZhYjgwNi0TsrPrZ8JHYnfp 1EQ= +it. 172800 IN NS a.dns.it. +it. 172800 IN NS c.dns.it. +it. 172800 IN NS m.dns.it. +it. 172800 IN NS r.dns.it. +it. 172800 IN NS dns.nic.it. +it. 172800 IN NS nameserver.cnr.it. +ns-al.isti.cnr.it. 172800 IN A 194.119.192.8 +nameserver.cnr.it. 172800 IN A 194.119.192.34 +nameserver.cnr.it. 172800 IN AAAA 2a00:1620:c0:220:194:119:192:34 +a.dns.it. 172800 IN A 194.0.16.215 +a.dns.it. 172800 IN AAAA 2001:678:12:0:194:0:16:215 +c.dns.it. 172800 IN A 194.0.1.22 +c.dns.it. 172800 IN AAAA 2001:678:4::16 +m.dns.it. 172800 IN A 217.29.76.4 +m.dns.it. 172800 IN AAAA 2001:1ac0:0:200:0:a5d1:6004:2 +r.dns.it. 172800 IN A 193.206.141.46 +r.dns.it. 172800 IN AAAA 2001:760:ffff:ffff::ca +osiris.namex.it. 172800 IN A 193.201.40.6 +osiris.namex.it. 172800 IN AAAA 2001:7f8:10:f00a::6 +seth.namex.it. 172800 IN A 193.201.40.7 +seth.namex.it. 172800 IN AAAA 2001:7f8:10:f00a::7 +dns.nic.it. 172800 IN A 192.12.192.5 +dns.nic.it. 172800 IN AAAA 2a00:d40:1:1::5 +je. 172800 IN NS a.ci-servers.net. +je. 172800 IN NS b.ci-servers.org. +je. 172800 IN NS c.ci-servers.org. +je. 172800 IN NS d.ci-servers.je. +je. 172800 IN NS e.ci-servers.gg. +je. 172800 IN NS ns0.ja.net. +je. 172800 IN NS ns99.dns.net.nz. +je. 86400 IN NSEC jm. NS RRSIG NSEC +je. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uox3mRSwz8Ev4vAascq9o/6guNDYQNULf9vCKCakXtEKYk0fHXIImtu+ Du1DnoCLKWgMTPRcABFrfaVSRW5Xz31rLlrJcuNRGBQIQkvm+6RM4yDW 0axkxtAetrA/EFJ6e/OJDqE9ppEHE2ab4VO+u6VGcazm8XM5UQIzeSpH sKk= +d.ci-servers.je. 172800 IN A 193.201.42.178 +jm. 172800 IN NS jm.cctld.authdns.ripe.net. +jm. 172800 IN NS ns.jm. +jm. 172800 IN NS ns.utechjamaica.edu.jm. +jm. 172800 IN NS ns3-jm.fsl.org.jm. +jm. 172800 IN NS phloem.uoregon.edu. +jm. 86400 IN NSEC jo. NS RRSIG NSEC +jm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . R0Kws8s96f0jN6qNjRj3G7H4yWhd3Z09fnRmW+lOq+ULaQbhPTNN+1CC CBiCmqHVmVr1zkIdYHNqyHs67R726vj/nahPZgYo7nnery7nobrEtITV G2jWVrIGB+4t/vpZzE/r1M/wHTUdM5L1p5KLJiMydKk7dt+2ZWq/18Sb cAE= +ns.utechjamaica.edu.jm. 172800 IN A 200.9.115.2 +ns.jm. 172800 IN A 196.2.1.6 +ns3-jm.fsl.org.jm. 172800 IN A 196.3.191.66 +jo. 172800 IN NS jo.cctld.authdns.ripe.net. +jo. 172800 IN NS rip.psg.com. +jo. 172800 IN NS amra.nic.gov.jo. +jo. 172800 IN NS petra.nic.gov.jo. +jo. 172800 IN NS jordan1st.nic.gov.jo. +jo. 86400 IN NSEC jobs. NS RRSIG NSEC +jo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kydDd6abAl2+KmZmdrXkbc73270mif67G1hWUt3xxBxByAhC4taaqiD2 7QSsdmHqh9I1ZFOqxzWo20WgiX7gX+7NAKbssdB9OHesqGJLYIadry3S UsVQleEIWRQ4nTSVaLfl4WofI+pGpRMToiJy2jOofrJ+G91tsORtT4+d LCs= +amra.nic.gov.jo. 172800 IN A 193.188.66.103 +jordan1st.nic.gov.jo. 172800 IN A 193.188.69.19 +petra.nic.gov.jo. 172800 IN A 193.188.66.2 +jobs. 172800 IN NS a5.nstld.com. +jobs. 172800 IN NS c5.nstld.com. +jobs. 172800 IN NS d5.nstld.com. +jobs. 172800 IN NS f5.nstld.com. +jobs. 172800 IN NS g5.nstld.com. +jobs. 172800 IN NS h5.nstld.com. +jobs. 172800 IN NS l5.nstld.com. +jobs. 86400 IN NSEC jp. NS RRSIG NSEC +jobs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GhLlYY5fAkdJ2+7jQdyao4bQTnF2r/52NaRCPIkFyD1JGmM5pPW+9XYW TvIEcA7EdibcKZOQRh0KgJmAOetJHGd3KKdbIPrNlOmuL7i18AfUfBK4 wzlVPw9o/WxPFHradX3StqkwT76Z6Z3pd/n/1bGdgznvwwT1Xgw0+wCQ ntc= +jp. 86400 IN NSEC kaufen. NS DS RRSIG NSEC +jp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iu8Zk968LAxWWnbciXbz4vvp8VRZDG1Ix+7NtLFW+3fIZrlPoHfQESeJ H3kZw8fMpCJNzxWmR99R6jrpjl3hiLXN3Nul/sKeoHQGx35veD7DOtur vRjCzX+5bv3BQjH8kvLK//sNLpT1LGrfGIZCYxhWNEQfQAA4ua6pwULY ZM0= +jp. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . rh2nEGj2lsOIFDt1l//VgP95fBsPvdwP+sm14tMJgZCJuMjKLXAgDSQz MMWscfwI2bkRjNFoE1jsNjQRU29gjoSF4ztBtzyxWH8r+YZhKn02kc5Z 4LpZkUNghGXYyEQIM+RmyC6P3KCdUpimKoOIam6Mk+Y5HxBS2tqadPa3 SPg= +jp. 172800 IN NS a.dns.jp. +jp. 172800 IN NS b.dns.jp. +jp. 172800 IN NS c.dns.jp. +jp. 172800 IN NS d.dns.jp. +jp. 172800 IN NS e.dns.jp. +jp. 172800 IN NS f.dns.jp. +jp. 172800 IN NS g.dns.jp. +jp. 86400 IN DS 60700 8 1 96591579EBE5582AF021571AB2359D274A20E62F +jp. 86400 IN DS 60700 8 2 FC26CDBBDB18FAB2D9D0DA6933DA77D7384BE4BBC2DAF75AF9CE3CC9 9797C086 +ns20.iij.ad.jp. 172800 IN A 202.232.2.161 +ns20.iij.ad.jp. 172800 IN AAAA 2001:240::161 +a.dns.jp. 172800 IN A 203.119.1.1 +a.dns.jp. 172800 IN AAAA 2001:dc4::1 +b.dns.jp. 172800 IN A 202.12.30.131 +b.dns.jp. 172800 IN AAAA 2001:dc2::1 +c.dns.jp. 172800 IN A 156.154.100.5 +c.dns.jp. 172800 IN AAAA 2001:502:ad09::5 +d.dns.jp. 172800 IN A 210.138.175.244 +d.dns.jp. 172800 IN AAAA 2001:240::53 +e.dns.jp. 172800 IN A 192.50.43.53 +e.dns.jp. 172800 IN AAAA 2001:200:c000::35 +f.dns.jp. 172800 IN A 150.100.6.8 +f.dns.jp. 172800 IN AAAA 2001:2f8:0:100::153 +g.dns.jp. 172800 IN A 203.119.40.1 +kaufen. 172800 IN NS demand.beta.aridns.net.au. +kaufen. 172800 IN NS demand.alpha.aridns.net.au. +kaufen. 172800 IN NS demand.delta.aridns.net.au. +kaufen. 172800 IN NS demand.gamma.aridns.net.au. +kaufen. 86400 IN DS 23962 8 2 EF294C18A9BB33EE9D090585EF1C0F1575AA3F7A59CB07DBDDDE9CEC 4D67BD93 +kaufen. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . DY/s7HIO0AAoXC6gtSwFHj/jRehr7Tc69XF8XFBsj+QgC0UqinHaereA 4wcXt4gm23XQCNpV83MdCmf9hImAXFovKqK357tFWiZ7s0iA7DSlBNZN 4QiMRJBXu93RJCEL5KzNfHXKuNeJZ/wNa0X+zIhfHUMRJ5hC4FSvSMYD hZI= +kaufen. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vS+xr8sRirPd/myh0bDeHy9zY5fPZhV20C7Yip4Ku3ZkquzlkDsf52u9 6UhjIOnfzUqkvZbs6rgOs+OnWh2SH7OX7HSaMq51wat/xBh+raPvjYVt duhHjWaIKI596Bqwei2YZDxJM0QEzFmcPhlhdnoEnkhUrQjp/02+OXpA mNw= +kaufen. 86400 IN NSEC ke. NS DS RRSIG NSEC +ke. 172800 IN NS ns.anycast.kenic.or.ke. +ke. 172800 IN NS ns1.coza.net.za. +ke. 172800 IN NS mzizi.kenic.or.ke. +ke. 172800 IN NS ns-ke.afrinic.net. +ke. 86400 IN NSEC kg. NS RRSIG NSEC +ke. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FPieUzHTjqCcMecVBfc3yGfgWHop6gEjEFsvOzTpcVaNBMIxh8KphYhC is9xWvOnB9IRyBpSWIZQtUHiU6bfhDM3B/fQmmQHUJSuW+1JQjPnww/b mJoVnCJ/jehRV5aJ1dMV7aMhvCwf+uMBOARt3EprU09sX1nClERVNjap PEg= +ns.anycast.kenic.or.ke. 172800 IN A 204.61.216.7 +ns.anycast.kenic.or.ke. 172800 IN AAAA 2001:500:14:6007:ad::1 +mzizi.kenic.or.ke. 172800 IN A 196.1.4.130 +mzizi.kenic.or.ke. 172800 IN A 198.32.67.9 +kg. 172800 IN NS kg.cctld.authdns.ripe.net. +kg. 172800 IN NS ns.kg. +kg. 86400 IN DS 49954 5 1 285C47CA00E9416E0C6BD6F7317BF57B0EE1CC7D +kg. 86400 IN DS 49954 5 2 9166CA43B29F27BC7CC8B758F7027724EA2B860DBE49CF08A2763EA0 E95E8754 +kg. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iTbL2jaucF2jFlH3aEXFaOCV6pRiovdj21mduFqd5lfRFM5OpRvvnD7u tdBliTd3ze6hBqXgWJ5UU0m8Eqp+QWHaBY4tCi9ALxnrK+hNdXMam0bz cylPgxum9W9ROKKmJ31/nk6dI1gVPuaOzg/lcw903OjFEmZrJdS/UNLl bgA= +kg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nK5XWFArufChHD2SlzLBuEN+z1WZI3JM7Q8QDBy0d1HHVUfLqX17e9qY /+0balFf38StIoUwJhqGGM9hoM2X0ywYTOw1pBCyPxf0LBTnwk4X6KXV +gih4G7OGun+CPqbL225mgA87LeeIGWP/tmACimmAd1hk/fZIFqGOUvE NBM= +kg. 86400 IN NSEC kh. NS DS RRSIG NSEC +ns.kg. 172800 IN A 195.38.160.36 +kh. 172800 IN NS ns.camnet.com.kh. +kh. 172800 IN NS ns.telesurf.com.kh. +kh. 172800 IN NS ns1.dns.net.kh. +kh. 172800 IN NS dns1.online.com.kh. +kh. 172800 IN NS sec3.apnic.net. +kh. 172800 IN NS ns-kh.ripe.net. +kh. 86400 IN NSEC ki. NS RRSIG NSEC +kh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . O8v7MW248Ys9pOff6tvvknYWfVtczdXLYyQRWiWHC9QyYxPsii+tTLqH iuRVwaa7Fzpqd0Rv6EUXNl2YuOsCpCud6r28ddBQ0z+KpEUMEtSREihC 3W6M1M40eZ3hrLbDDe4BUUHpjTsuQQZ12+qHNNwOaj5TEFaY1Czldrw0 RDI= +ns.camnet.com.kh. 172800 IN A 203.223.32.3 +dns1.online.com.kh. 172800 IN A 203.189.128.1 +ns.telesurf.com.kh. 172800 IN A 203.144.65.3 +ns1.dns.net.kh. 172800 IN A 203.223.32.21 +ki. 172800 IN NS ki1.dyntld.net. +ki. 172800 IN NS ki3.dyntld.net. +ki. 172800 IN NS pch.nic.ki. +ki. 172800 IN NS sns-pb.isc.org. +ki. 86400 IN DS 59540 8 2 FD3B27E5C171B883FE2815DDE7FBBE7F2E5AF826BFF47C33B5970F53 E2A855DE +ki. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GHf4kKWStVjCL8URxLbrdfYSHkpIYzN/VXuvXO8oYeX8JE5LljYuR7CZ nedTM0YNeEzCodbT6CNrhNipT+h4U/bm+glhQnBsNzadF+ZesmnCuE6/ ztxU8OhzHY21BNeF3snM1Hj/4kSJXavKpBrjHoFmQBUDJ/wTeK8U9uIl kAI= +ki. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K2VJGqy0vrvIxhXxh2QALtB0vjTRcmWLAB0xiZnhNp/yN7DsguPYKjjK HiDgzKLRfInFh+RWZ457RE/Xgj1+vK5B9FArwdmRs/IMdbsDl0AAqVRP 15+GHR1ApnYDPVr+D6IJwnkmbIYfmW3y/khc2SP/Egd8K9+p3OQaMnrm Yo0= +ki. 86400 IN NSEC kim. NS DS RRSIG NSEC +pch.nic.ki. 172800 IN A 204.61.216.26 +pch.nic.ki. 172800 IN AAAA 2001:500:14:6026:ad::1 +kim. 172800 IN NS a0.nic.kim. +kim. 172800 IN NS a2.nic.kim. +kim. 172800 IN NS b0.nic.kim. +kim. 172800 IN NS c0.nic.kim. +kim. 86400 IN DS 24474 7 1 2DD484EEF79401CBFCA231E6CBF4F1BB165CCE14 +kim. 86400 IN DS 24474 7 2 2384A0380782DA192D1C1F6DA55A106551EF4C5233CD479536101921 D35411E5 +kim. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HI1ZbqeMP0U8rKTxutIDLLPgrPHeqwQhbc6MZgdUs49a9FmGO4lnxZg7 IsUd9XZE1fxWymWW4FSvI+d8DtwGHB7lqKXA+xiaNf+jSqhgflK4QInA qridWg9ocoUPKz4yZIejmpPEPjZbtYA+PYvoS51I+AXzNfBMTRKENgNc nfA= +kim. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l4p6wSythAx8CVuq+qsHIY+cnzxcU88hO8Idpt/E4wP4M7yIJ4ANRhF9 T9HuKn7wZDHTwT7mhsl8Buh/QVhoOvoIXsrw/9MhkkrW4Jk8Y1CVQ7d7 kEKN3j4Y+EnQawOE6efLuQ22xBYf5GJ5Ud8ER6N1ckKSKaB1zqCsCBNE FWY= +kim. 86400 IN NSEC kitchen. NS DS RRSIG NSEC +a0.nic.kim. 172800 IN A 65.22.28.1 +a0.nic.kim. 172800 IN AAAA 2a01:8840:1e::1 +a2.nic.kim. 172800 IN A 65.22.31.1 +a2.nic.kim. 172800 IN AAAA 2a01:8840:21::1 +b0.nic.kim. 172800 IN A 65.22.29.1 +b0.nic.kim. 172800 IN AAAA 2a01:8840:1f::1 +c0.nic.kim. 172800 IN A 65.22.30.1 +c0.nic.kim. 172800 IN AAAA 2a01:8840:20::1 +kitchen. 172800 IN NS demand.beta.aridns.net.au. +kitchen. 172800 IN NS demand.alpha.aridns.net.au. +kitchen. 172800 IN NS demand.delta.aridns.net.au. +kitchen. 172800 IN NS demand.gamma.aridns.net.au. +kitchen. 86400 IN DS 64009 8 2 4B1DD622AF68E8DC6E5CBB00AFE42399B8A15591891203D4B745EF0F A03EA2C9 +kitchen. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qZyCSVTZ3XJGaYm2+la8fTo68yGXjjGEzPoZVe2GgKl1R8pW8bamUvwY cTI1RGPP1uKKqYF0wGTgi9b+OK9VzBmO/UaD4iCQ523/RTN1zet8OMW7 soF9rJzhjKy/rM16Qen5L7vYrOQl1cn+NtLyZOVBxSvSX6Zg9lJGBS6A KvM= +kitchen. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . m3YFQr1JKAOi1R+K/rw7FbQlF1XUoxspssON5Z7bXrBoqAqzGpZuTcf4 HvMCTBjhR/1ymsaukQCA4dZBasaV45n0V/r9RFpEUKVSMBDB1aGSE9uA HOzAvWCdFfUpZHqfidwgTjYoq7owcFKNPtIGJWA7glPTkeajWWTCa7HM bcM= +kitchen. 86400 IN NSEC kiwi. NS DS RRSIG NSEC +kiwi. 172800 IN NS a.ns.nic.kiwi. +kiwi. 172800 IN NS b.ns.nic.kiwi. +kiwi. 86400 IN DS 5786 8 2 ADFED621AFE74743D01AF9CD0F380F4F95EF756080321CD541A1D6B3 1B3FDD30 +kiwi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fjWjK7EXOL+p2eYLJwYtPf5iHirZyJBZcDmUMhSaz/w/2eDdtbIJyKxt pdl1Rj8vAdViPXpLITVwSGKqMOnV1uCHQO65eRMw7u/CuKpNtd/FFshC GjVQiNvlH/nlKt2OrvbbnTX4kwRsWK4t4jdlsxEkAw1MjoYJFEhD+L0b ipo= +kiwi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vOmCeHh0HTPAIzNqEt4yYHqGuFqkmZI4czgcU9XvPswUG6pctF2gcI23 WU1ADW0xcAsfrJTb4wurYT3x7XbY/xyOZ9UtHI2Fm3xMabBsJ3vwC8YY d8+DmNEctLiCU0BfvOB8a5dyThMmjudOL2XgFcYuNDAblzjjgzkaDCLq KjY= +kiwi. 86400 IN NSEC km. NS DS RRSIG NSEC +a.ns.nic.kiwi. 172800 IN A 72.0.50.4 +a.ns.nic.kiwi. 172800 IN AAAA 2620:171:a02:ad::4 +b.ns.nic.kiwi. 172800 IN A 72.42.114.4 +b.ns.nic.kiwi. 172800 IN AAAA 2620:171:d02:dc::4 +km. 172800 IN NS dns1.nic.km. +km. 172800 IN NS dns2.nic.km. +km. 172800 IN NS ns-km.afrinic.net. +km. 86400 IN NSEC kn. NS RRSIG NSEC +km. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OE7MQYNgf030FqWDGWkKadl1Oe72OZVM76cEO23txor6eittNjHnzfZS 3FQ7Je8tVNfoZwg5LodF14D9kNq9hWOf46TTkBS7mGi/C7uujvkBMDiS YoI9D39sxtnQ5Ex514X2SIj3SHD3gWuyP1XZaiQ4NEgA0LmVSXczRHzE jYk= +dns1.nic.km. 172800 IN A 197.255.224.18 +dns2.nic.km. 172800 IN A 197.255.224.66 +kn. 172800 IN NS a.dns.tw. +kn. 172800 IN NS b.dns.tw. +kn. 172800 IN NS c.dns.tw. +kn. 86400 IN NSEC kp. NS RRSIG NSEC +kn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OIORbHc4Ac+naUcDhWRJGw/DR2cZpsBPsdtF97SXW+OBxutmqSpnkRE5 kXlIWk7f1RM/Tju/8uTFMOh7UdEpKv8ZwVEExzyp0lMzEqjxG8saQf8e 8OrEBvZyDOIfrI1rjboQhpmJkK/otekZioWtp4vtM+vK0iAvzmoipE/J 0Ew= +kp. 172800 IN NS ns1.kptc.kp. +kp. 172800 IN NS ns2.kptc.kp. +kp. 86400 IN NSEC kr. NS RRSIG NSEC +kp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HnImiTn27+3cm4FWBMeOkyfrH0TEcWyKzhDIDXKV01ZlhVLsDZM507H0 brMg13WeNuSSA3vIvlSztwA/DWFB1K4qxK/2pUW/uqNob7tVZeTRlqYF SGfY0R+DbArbspiklYL3FlZEmJ+/F6AdkNF1zC6za2xxvVgcgQJLJVCA fUs= +ns1.kptc.kp. 172800 IN A 175.45.176.15 +ns2.kptc.kp. 172800 IN A 175.45.176.16 +kr. 172800 IN NS b.dns.kr. +kr. 172800 IN NS c.dns.kr. +kr. 172800 IN NS d.dns.kr. +kr. 172800 IN NS e.dns.kr. +kr. 172800 IN NS f.dns.kr. +kr. 172800 IN NS g.dns.kr. +kr. 86400 IN DS 10746 7 2 A626C147CF76351B03CD26C03EBCC78C0DE48D87DD81F09199958243 36236F96 +kr. 86400 IN DS 17625 7 2 FB939059F4B67BBA1E8AC37E35811E506488B2D8CFF807AF873B2116 B5676B5C +kr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jIOPf1Xdzv84hjSzPW+B24YjHLffaOy/dA5jzVqL/pS4Qjj8tmsccdIv QFY+vrWtXhXZSGfw0LGsw1eUKoPY3VHxNDvUpYtgMsRr1Nz2JmXQa1+w 7rUweR44C49oUMNrDtzWrikqxEsKCJADNn3qn/DQEt3snPNNOBo4xlmm T2A= +kr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IBq0qive0yAAsBdbb2uEOAit/QKaM1H+vWoaR9r/jZrbHa2Rp5YUuDf6 s9lcNakm0BITLtBz/kbnma0/dB0YN8ZAIcjzUNFBSqZ4rVIL2M+QXFSg WJBCzl59NqaWsRJSk6dr5kf0/Repx6AjI06D+nhTG7fa5sJCmgkKsYs4 coA= +kr. 86400 IN NSEC kw. NS DS RRSIG NSEC +b.dns.kr. 172800 IN A 61.74.75.1 +c.dns.kr. 172800 IN A 203.248.246.220 +d.dns.kr. 172800 IN A 203.83.159.1 +e.dns.kr. 172800 IN A 202.30.124.100 +e.dns.kr. 172800 IN AAAA 2001:dcc:5::100 +f.dns.kr. 172800 IN A 218.38.181.90 +g.dns.kr. 172800 IN A 202.31.190.1 +g.dns.kr. 172800 IN AAAA 2001:dc5:a::1 +kw. 172800 IN NS dns1.kw. +kw. 172800 IN NS dns2.kw. +kw. 172800 IN NS dns3.kw. +kw. 172800 IN NS kwns.kems.net. +kw. 172800 IN NS sec1.apnic.net. +kw. 172800 IN NS sns-pb.isc.org. +kw. 86400 IN NSEC ky. NS RRSIG NSEC +kw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Pg6fXqqatEixNHstuAaKqFWcupWuLRCSB6P/u4dAErStgZ+qv6lqB2gM ZK4jMx9MgiYs3JIuhzMXoiqbbKSpXb1oskqmAWa//t/1jWn5ujgXw0rN JZYX30GNLYf9BOZC570vRGPo8NAR25ELukJtcGXp/dsiehuMglQHdXyr M+k= +dns1.kw. 172800 IN A 161.252.48.140 +dns2.kw. 172800 IN A 161.252.48.150 +dns3.kw. 172800 IN A 161.252.48.145 +ky. 172800 IN NS kynse01.perimeterusa.com. +ky. 172800 IN NS kynse02.perimeterusa.com. +ky. 172800 IN NS kynse03.perimeterusa.com. +ky. 172800 IN NS kynsw01.perimeterusa.com. +ky. 172800 IN NS kynsw02.perimeterusa.com. +ky. 172800 IN NS kynsw03.perimeterusa.com. +ky. 86400 IN NSEC kz. NS RRSIG NSEC +ky. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FCaFzAeiLfLFCs1jRwIn0C7zzGGFf7YB3sSOLlPg8l2jrVX8f/ESQrx/ MaCyY1JMQ3X6RBJW8j/YHSP6isyYFl1u/8w0vhm6Is1eKpM7Gx/k8Tn2 kKjVZCzi/fmiIWOU3bkzEhkN94F+DGR18hnMoiI4QmuRj2QT2QDe5hkM stU= +kz. 172800 IN NS kz.cctld.authdns.ripe.net. +kz. 172800 IN NS ns.nic.kz. +kz. 86400 IN NSEC la. NS RRSIG NSEC +kz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P9Gy7GcXYuGoScbyUbS6aDc9akDhaU/7sWyzK4Z1bMJqYsQoTOBHco5P 1MNXFZ2mPS13e48+B/u8CHmnQI8/A/qwNMHHHIS0L9IwLumzIejP6HrK 00844O9j192M3et+mQJoue27AOxpdBuh40OtMBtiTy8H8oSE0Xe6THtC nus= +ns.nic.kz. 172800 IN A 194.0.21.5 +la. 172800 IN NS ns1.nic.la. +la. 172800 IN NS ns2.nic.la. +la. 172800 IN NS ns3.nic.la. +la. 172800 IN NS ns4.nic.la. +la. 172800 IN NS ns5.nic.la. +la. 86400 IN DS 54086 7 1 C468E20FD427F2EB5E4658B1E1D24840768DC8E1 +la. 86400 IN DS 54086 7 2 28339FCEDF2C52583595DD1460A6B07D9FA5692A5BA8E6E5F34EE306 35230541 +la. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ul9nAvt6zgmFvClpE+suoTpz4Z4hZq3FQd/WRg+VfRzhpnsDxJHpQ4Sv F80bj19ZJkskpF87m0KoNTdcWnAEiyLcpfM48SA3mmNSgVEYrvJUHktL CAxSneZQrwty45R8DKkjmkQnSlQtlRMsSwKOofmsY1juedIfw02l8Hjy d/M= +la. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UgsIymIjozmiPITPeGn39gmttEv5cjIU40AaUdn9r0d9+TboKCUTdrfX 1x88ZOH0ZbQPvXic8K8lqbI/WoEVQdiXrQ3nGFT6b8HgUnR3neW8WqnT +FpCeQlCBm4uSN54HL/Ucb/y6WdjPoMJfcNwXG8IyGAmG6hqBEDijkyR OgY= +la. 86400 IN NSEC land. NS DS RRSIG NSEC +ns1.nic.la. 172800 IN A 194.0.2.2 +ns1.nic.la. 172800 IN AAAA 2001:678:5::2 +ns2.nic.la. 172800 IN A 194.169.218.14 +ns2.nic.la. 172800 IN AAAA 2001:67c:13cc::1:14 +ns3.nic.la. 172800 IN A 185.24.64.14 +ns3.nic.la. 172800 IN AAAA 2a04:2b00:13cc::1:14 +ns4.nic.la. 172800 IN A 194.169.218.15 +ns4.nic.la. 172800 IN AAAA 2001:67c:13cc::1:15 +ns5.nic.la. 172800 IN A 185.24.64.15 +ns5.nic.la. 172800 IN AAAA 2a04:2b00:13cc::1:15 +land. 172800 IN NS demand.beta.aridns.net.au. +land. 172800 IN NS demand.alpha.aridns.net.au. +land. 172800 IN NS demand.delta.aridns.net.au. +land. 172800 IN NS demand.gamma.aridns.net.au. +land. 86400 IN DS 43702 8 2 DEEEE8025A8233F002FE834A728C3C218208D04BA7C5344510D6D1B5 78E0CB6B +land. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vL8muoTb8UQvidAFK4gmICCQ5kTtYVzcFbJq4KQBS+i7xivqx50ryn/0 VviyKuCxSBuk97qE8e6ogSZjpUQ84MXMcqHedHTaLk5epUVMLmuJkqvY Lyi2Zoy8+umTzbbgy0CW7NYk80PA6jXNvbnlBfs44YJKyKBwe5UI2UsH 0j8= +land. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EQoIumEDGqX5/hRpyvcgPI18GsQRZrUSoQ2cAfNE8KgWcuRSFskv7osY gUiElXwvPIAdg0Jih+5LyP1oEFUnUjw1FHdYiB91kXlD4xk1uPUhbEpS 4Il9+AZ6kyEztcmpx9lWr/1ce8xNn0LRnKWhM4zI85AKOgmoPh5YLHab QcE= +land. 86400 IN NSEC lb. NS DS RRSIG NSEC +lb. 172800 IN NS ns1.dns.aq. +lb. 172800 IN NS rip.psg.com. +lb. 172800 IN NS fork.sth.dnsnode.net. +lb. 172800 IN NS zeina.aub.edu.lb. +lb. 86400 IN DS 16682 8 2 40DD7553579354618AAC11783D0385CD6D6B0F31C7FCF6719609B04A 08C2F11B +lb. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CCKylaqYybOxJXKraz9SHoLeTCTyE5PprHQFRUaX5zm8X5q5qnSGdWUN +wiBbrq/SaBkTmfwwpOc6JaLG9/y13Z3YO23ZzO8J9Lr7jAvZkdc4JIW ii6zY0acLe7ynuFmsjmQlrmTS09LtEyM0nHgvli938/bGQ5wZZVY02BL y9o= +lb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K8vnsSfvo2m4YA4isKOXj0aXanTcli8NB4OHvOTxWIXsa9SyDB0U21Vv TDAF3YuJAq9y+Fwf2QlW9ALtTbX2TJlemOtX/3KODmZ9n6pZFkPgWM28 7GlSMw844cYyPeZ42ZAfHecxq4xIW34Vd8exvVDSVnfbnyl+Jqp61um5 8o4= +lb. 86400 IN NSEC lc. NS DS RRSIG NSEC +zeina.aub.edu.lb. 172800 IN A 193.188.128.14 +lc. 172800 IN NS a0.cctld.afilias-nst.info. +lc. 172800 IN NS a2.cctld.afilias-nst.info. +lc. 172800 IN NS b0.cctld.afilias-nst.org. +lc. 172800 IN NS b2.cctld.afilias-nst.org. +lc. 172800 IN NS c0.cctld.afilias-nst.info. +lc. 172800 IN NS d0.cctld.afilias-nst.org. +lc. 86400 IN DS 31275 7 1 8FFD793EA49828F8FAE71E6EAF8CD2A6A329361F +lc. 86400 IN DS 31275 7 2 611D7AF20FB91770B598BFFE4DFDAAFE29F106EFCDE36387F4963700 A77622EE +lc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OYPhUhMHq3UPu1CGS+ginwPYMnBNCyAhwtI24yhkzAqULreqFzugBdvu 3IuVfQHk0qhOLXd3p/B4FyNT6e2T4Pr8lan7X9x9bj8kxIPAsPC9CNq2 F4ir+UBlIFrkgM1CRG/no6e9PwIoz827l4fSATPD+Q76/QLHcArBXa/G 5xI= +lc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sUwsIWcspwfOrn14yxz/fhHve3adqm8dZNK4mpU4/aY4J0b29KPJkgGp cpy9M+X3kUFYajZk+bipUX+Z+upzhbA/Xck5v26AQ3q8ol7aluOu0om2 xAMboyQthiRBlk/iOB3PrgH4PP/OYsgJIN/W+FAfFk48SLyQBPHwC61r XZI= +lc. 86400 IN NSEC li. NS DS RRSIG NSEC +li. 172800 IN NS a.nic.li. +li. 172800 IN NS b.nic.li. +li. 172800 IN NS c.nic.li. +li. 172800 IN NS d.nic.li. +li. 172800 IN NS e.nic.li. +li. 172800 IN NS f.nic.li. +li. 172800 IN NS h.nic.li. +li. 86400 IN DS 28489 8 2 C534C12DE564E79C578E6419C57D97629D8BE76C794C026C944F3FC4 42B63B78 +li. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qtn7TkD0nK/FXYiatsuMpohStIIhyhmoLtVK4CnOULRokcQz6L8dVcHo l40rOqaggTGLrSFTd4a+APcg2VwvbMMCvecNQDg4IxPe0o1i1vz4uZqU 5/OHixRecB4eU5AeuAiRiI/BwYkL97Xo+NW19n/wQiyYpodrwvd10C8A fhs= +li. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TK5cvwAc5WB+MdUXo+Crg4/uUt2Mz4MS5Udv0ZHvPhZ9OJEGyWrSPmKG 2whFvrSg6pOZhm7GxA/X7q2BqRIsftejW86hdVOdWQwDwY3wQUp9TOeB xWAr36npFdvgtUIBh21Atf7zPegpY4AyyHiBvLwOHP6+fqh0y2b2XMP4 G/c= +li. 86400 IN NSEC lighting. NS DS RRSIG NSEC +a.nic.li. 172800 IN A 130.59.1.80 +a.nic.li. 172800 IN AAAA 2001:620::4 +b.nic.li. 172800 IN A 130.59.211.10 +b.nic.li. 172800 IN AAAA 2001:620::5 +c.nic.li. 172800 IN A 147.28.0.39 +c.nic.li. 172800 IN AAAA 2001:418:1::39 +d.nic.li. 172800 IN A 200.160.0.5 +d.nic.li. 172800 IN AAAA 2001:12ff:0:a20::5 +e.nic.li. 172800 IN A 194.0.17.1 +e.nic.li. 172800 IN AAAA 2001:678:3::1 +f.nic.li. 172800 IN A 194.146.106.14 +f.nic.li. 172800 IN AAAA 2001:67c:1010:3::53 +h.nic.li. 172800 IN A 194.42.48.120 +lighting. 172800 IN NS demand.beta.aridns.net.au. +lighting. 172800 IN NS demand.alpha.aridns.net.au. +lighting. 172800 IN NS demand.delta.aridns.net.au. +lighting. 172800 IN NS demand.gamma.aridns.net.au. +lighting. 86400 IN DS 1345 8 2 AFA5667D4D9B2FBDD72F0C364EE3A3AD3286BAE800DD959E3A28F2E3 EA6EFA08 +lighting. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . M26kE8xnf7oo1wTwveWML1mViTfqMunWKGlSo8ntAeJnmAGv1dKMdo11 wJ4WV27bhgCpMQWmZMeggBUV/s8sMWk8g2H1bIqok3Em45k372eP5WUX 6CZfyEHgpBh+IeOqxDUsXpEx8amMo7vAa7rNKNRbZ7n6XeTblCm51kMR Hpk= +lighting. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UZCanvFgdHEJZnFKIuQie2M7s4SHnGk05PnrsCGuIqSazlgZyyADWomj qVnTKKqaCFkD7b8sETlnIfngZzuzNEYG8fWQ1dF+faYm3U+sdht7O2hS Kl5CKiM2/CiaDS2YnIMbLIv/BUZgIQRGCwdI0/ZBTHttvxwLGqZDcrhq iBo= +lighting. 86400 IN NSEC limo. NS DS RRSIG NSEC +limo. 172800 IN NS demand.beta.aridns.net.au. +limo. 172800 IN NS demand.alpha.aridns.net.au. +limo. 172800 IN NS demand.delta.aridns.net.au. +limo. 172800 IN NS demand.gamma.aridns.net.au. +limo. 86400 IN DS 7285 8 2 5B4855A49D19A3D8A6BC6D32AAA778D5CC62A186E17303559766C664 6428BE0A +limo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . peF7eXd+ZqHj10gNxoRtuHlx4BJv758claCfK1vFHCtlibSifPp/bmkA SEL0u3y6I0M8c11bLjyUlaYyarwbJHhsy9GZJPs/4giNgCQaOAXukMUq 0Flbefx23LmnonYkTpOJL9Z95HCI7NJTNcBHIPyVbbABj7PBRVNHRqyq 6n0= +limo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dD1LvtLQjk2mAQmqDoQHO1gmIBIN1LXU2MVOC90evAQw+inhjrA0dmuJ na4xoSxWBxrelmv3Ou5eH5YootEJ1lYFjRr+mPYxrn3FUbEPGmtE0rNX Mta4tiaEO85TNtcxqG8pPF2LUAN0e2QYjtrKnc+M0+Cz826T1sjIVofl YMw= +limo. 86400 IN NSEC link. NS DS RRSIG NSEC +link. 172800 IN NS a.ns.uniregistry.net. +link. 172800 IN NS tld.isc-sns.com. +link. 172800 IN NS tld.isc-sns.net. +link. 172800 IN NS tld.isc-sns.info. +link. 86400 IN DS 16378 5 1 4BAC0A7FB788380C75B12257AF422CF2F32EE828 +link. 86400 IN DS 16378 5 2 22F61A68A2F1BFE7A3B8A71DE8DB12BAC9A51D98D8D1F44C1717396E 395C180B +link. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . O+Bitt9L/+DOl46v3uX694l+iFYNyWvX3ugSgMccftWa7BwUrr+o6NLX srldiac7ii67ZHoi/i4MzGwko8XFm1ZTj9fWghniQDQruhe9/K7TOzLJ F7FIhCISA9y5BvV1VRdb480JwpEMrtmGGq3+Ht2lb99dQn0ZuCo2p7Hu 6cI= +link. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pVcySIhs838h1IUrlileRubMKJoZacW0rJ5w7SwX4pZhfLuN9kTYbOV6 9mvS+Qky3jf4F/zRetR+9Fi367QqlVHBZxyRls/ga2ghBzDEJ7b2Rk+H d9obVquy3NHRUGmHytfZcQoCo6NrYPevedpw8PEtK5xFLUQM3SRA4dVS JpA= +link. 86400 IN NSEC lk. NS DS RRSIG NSEC +lk. 86400 IN NSEC lr. NS DS RRSIG NSEC +lk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZTZ8h8rgK4VKiI4GRRiSpJ/0YckSyYrm3rUQtBua7RFeDPfmzwLWqaZI 9e5pKyX1cWo3f/fRNVUl9TwH60r/426WY1xBkYruJgaN5XkR5rizJf30 7L9t8spA7wPYRicXpJCin7D7NU+3g2Uw8sgbrEKAP3dUPzBCEwJ3uiDl b0s= +lk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CqAB6ndFniintv/mpjfRecnlnwplNAMga6VxPxXcJXyY1u5eIpemcQdQ JqPz63Nhw05ZNqcyeF784TT6YMjlRScAguSipkmnZ+NiTODj2lW7Tpy6 h+Pbiz1JBc3krGlFlrF9t21D2rSMFJzvycU+EiVIVzDJ8xuUSobUUGFf Kkk= +lk. 172800 IN NS c.nic.lk. +lk. 172800 IN NS d.nic.lk. +lk. 172800 IN NS l.nic.lk. +lk. 172800 IN NS m.nic.lk. +lk. 172800 IN NS p.nic.lk. +lk. 172800 IN NS t.nic.lk. +lk. 172800 IN NS ns1.ac.lk. +lk. 172800 IN NS ripe.nic.lk. +lk. 172800 IN NS pendragon.cs.purdue.edu. +lk. 86400 IN DS 181 5 1 A1907F85D49081239389C216912B8937D0ECEB3D +lk. 86400 IN DS 181 5 2 87516D56B697CB3F7A7C3EB594EE0E16AE509D16A503089F4FBD4F34 7B336F93 +ns1.ac.lk. 172800 IN A 192.248.1.162 +ns1.ac.lk. 172800 IN AAAA 2401:dd00:1::162 +ns3.ac.lk. 172800 IN A 202.124.166.178 +c.nic.lk. 172800 IN A 203.143.29.3 +c.nic.lk. 172800 IN AAAA 2405:5400:3:1:203:143:29:3 +d.nic.lk. 172800 IN A 123.231.6.18 +l.nic.lk. 172800 IN A 192.248.8.17 +m.nic.lk. 172800 IN A 202.129.235.229 +ns-c.nic.lk. 172800 IN A 203.143.19.3 +ns-d.nic.lk. 172800 IN A 123.231.6.18 +ns-l.nic.lk. 172800 IN A 192.248.8.17 +ns-t.nic.lk. 172800 IN A 203.94.66.129 +p.nic.lk. 172800 IN A 204.61.216.27 +p.nic.lk. 172800 IN AAAA 2001:500:14:6027:ad::1 +ripe.nic.lk. 172800 IN A 193.0.9.88 +ripe.nic.lk. 172800 IN AAAA 2001:67c:e0::88 +t.nic.lk. 172800 IN A 203.94.66.129 +lr. 172800 IN NS rip.psg.com. +lr. 172800 IN NS fork.sth.dnsnode.net. +lr. 172800 IN NS hippo.ru.ac.za. +lr. 86400 IN NSEC ls. NS RRSIG NSEC +lr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tzwMV15lPdCYZlYbGLPY+YwyclrwAKlpruY0tfNhkX3FJ3DK1UXHBvGd KtlfqmkFb+yBpqnqMx2GuXJvsjB7y9NRRvZoFWy5WItNTBgH/ioZM38i EL0FNdRe5TZFxMNViFZQcB3wtDMKwnl1k87WbExNpAnbsYTuP9YURYtJ Oxk= +ls. 172800 IN NS rain.psg.com. +ls. 172800 IN NS hippo.ru.ac.za. +ls. 172800 IN NS ls-ns.anycast.pch.net. +ls. 172800 IN NS ns-ls.afrinic.net. +ls. 86400 IN NSEC lt. NS RRSIG NSEC +ls. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OuGGxJ42OmL9j744rkvlRLCgQqFn8NNx3GRm8StYBHbJQQK8coARIHY3 Ca297EDn3eBxs9Z+Eo4+cT0BVXN9/1ZldGf+y2gYBnqtn4YTvBzJsxwd kru8A11HykY/Ydeb/cHLf0K9r/FzWpDwk/rTNcJS7yveMIzpPjhuGYD5 /kU= +lt. 172800 IN NS a.tld.lt. +lt. 172800 IN NS b.tld.lt. +lt. 172800 IN NS c.tld.lt. +lt. 172800 IN NS d.tld.lt. +lt. 172800 IN NS e.tld.lt. +lt. 172800 IN NS f.tld.lt. +lt. 86400 IN DS 24556 8 1 A9D06FA34F1C9D57062899824F5702041188DE97 +lt. 86400 IN DS 24556 8 2 DEA1E077D98EA2DE8750281B40ACEBC14687AEB8FE49506333C903D5 01F6C620 +lt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QKuJEFXiZ9qowa/YnoYcv/bXuNXpbfTD+JkLnvI7rteCgFr6pGQs9YAM E/G+aewJ0X7O2H0BUfW1z9lKnmpHZVdULMY/E4Y8Q21hUk1JmZKakL6z n7RCuH6nXMOAZZTPb63xT3MAPRqPN648dB01UlxUF47cgc70y6Y7zRDD YlU= +lt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Gi8J7X4lzEuisnsV/z1YQfBmv5c1hEffu+EXQxI+fa/SXsPcf4yS2oCk lAmFJwzaBQCP8Vqk2w4Cu1yn5ceW7yxXvh54tBmA4FK8BWIRLO1cumcQ /8CaI2o2iil7znbB/mQALP4V5GIvjc10Zuij4FDHv9lyAjhYNpWJAYn3 Sk8= +lt. 86400 IN NSEC lu. NS DS RRSIG NSEC +a.tld.lt. 172800 IN A 195.8.218.131 +b.tld.lt. 172800 IN A 194.0.20.1 +b.tld.lt. 172800 IN AAAA 2001:678:19::1 +c.tld.lt. 172800 IN A 194.0.1.4 +c.tld.lt. 172800 IN AAAA 2001:678:4::4 +d.tld.lt. 172800 IN A 194.0.3.1 +d.tld.lt. 172800 IN AAAA 2001:678:6::1 +e.tld.lt. 172800 IN A 194.0.18.1 +f.tld.lt. 172800 IN A 194.0.19.1 +f.tld.lt. 172800 IN AAAA 2001:678:8c::1 +lu. 172800 IN NS g.dns.lu. +lu. 172800 IN NS i.dns.lu. +lu. 172800 IN NS j.dns.lu. +lu. 172800 IN NS k.dns.lu. +lu. 172800 IN NS p.dns.lu. +lu. 172800 IN NS ns1.dns.lu. +lu. 172800 IN NS ns5.dns.lu. +lu. 86400 IN DS 31 8 2 4B0AF8FA533D143C1E7AC4C8FA6DEF4509DE439C0D5403FDC1BAA786 0052882B +lu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ofdyn7Xs7DZYGyy2RK2weYnTLZSTx7JfU56Cm8Ualh99LwPqgwDi9e5s +phVuy/+6yezJtBkFycsl2iXgF6CYAFNirtnFQwyHlDvfDVdFRA9AOkX 4lYnsxJH1RPBvq+bZSTsSQIyc361M+sd8+k7lyCvVQ8HFAit7lhrQiWv uHk= +lu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uEKynPdsESrlWgNEt3mi5Z/IAva4Yx001YfPfLANHBsvD3W6LST8KjvL Hx4CrA59AGxMiGU/qnpgyTfhwJjm3NswhpczA1kHqeoj+vRBJ5/LF3tP yMv0KOpaJ5RCG/xAHBlSZmKbGp21K1qkXVKZK5LAHjuC/WcXgfMgP1Yq Tc8= +lu. 86400 IN NSEC luxury. NS DS RRSIG NSEC +g.dns.lu. 172800 IN A 194.0.23.5 +g.dns.lu. 172800 IN AAAA 2001:678:1b:5::5 +i.dns.lu. 172800 IN A 194.146.106.66 +i.dns.lu. 172800 IN AAAA 2001:67c:1010:16::53 +j.dns.lu. 172800 IN A 77.72.229.247 +j.dns.lu. 172800 IN AAAA 2a01:3f0:0:307::53 +k.dns.lu. 172800 IN A 194.0.1.13 +k.dns.lu. 172800 IN AAAA 2001:678:4::d +ns1.dns.lu. 172800 IN A 158.64.229.18 +ns1.dns.lu. 172800 IN AAAA 2001:a18:4:1::18 +ns5.dns.lu. 172800 IN A 81.91.161.100 +p.dns.lu. 172800 IN A 194.0.42.42 +p.dns.lu. 172800 IN AAAA 2001:678:60::42:42 +luxury. 172800 IN NS a.nic.luxury. +luxury. 172800 IN NS b.nic.luxury. +luxury. 172800 IN NS c.nic.luxury. +luxury. 172800 IN NS d.nic.luxury. +luxury. 86400 IN DS 3664 8 2 D602E8F4FD9729146D1FB1D249544DCEECE615E528EB2E4997FB1760 B004D67E +luxury. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eLS2FxIstBH7urMMPrVtFHBXVYHpV/rkq5ZP5JlYKeP5XdOsW/Ka7/2I 4SUONXO4za50+BUQt4vvuVJaN9VevBEOklMqwhy+w9+FMJb38+LJaJ7w uFjWCuwe117Vyk/PO9eqEZsfwNYqn1eZTlstOiBTkfGfwljIAfjkC9zd vhs= +luxury. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hLccAHvztAVyMAWEPkj70E9jhsZ5/UAdoSdUZn2tvUOGHu+8YBiEPplB F+onjVntjZxeYtWFRtA4zkHbC7gZHPHyZnMGd0zrwdCPEU8b1gkozhDx 1r0HkahNvXxELa+5GHZRgFKsore6lU5UTpKg+tGZd1Y6CY4QZkZh+p6Y DKo= +luxury. 86400 IN NSEC lv. NS DS RRSIG NSEC +a.nic.luxury. 172800 IN A 37.209.192.10 +a.nic.luxury. 172800 IN AAAA 2001:dcd:1::10 +b.nic.luxury. 172800 IN A 37.209.194.10 +b.nic.luxury. 172800 IN AAAA 2001:dcd:2::10 +c.nic.luxury. 172800 IN A 37.209.196.10 +c.nic.luxury. 172800 IN AAAA 2001:dcd:3::10 +d.nic.luxury. 172800 IN A 37.209.198.10 +d.nic.luxury. 172800 IN AAAA 2001:dcd:4::10 +lv. 172800 IN NS a.nic.lv. +lv. 172800 IN NS b.nic.lv. +lv. 172800 IN NS c.nic.lv. +lv. 172800 IN NS d.nic.lv. +lv. 172800 IN NS lv.cctld.authdns.ripe.net. +lv. 172800 IN NS sunic.sunet.se. +lv. 86400 IN DS 42018 8 2 7E932A4F9CF9B1CD047C277E3CD323A53D42347D47C7BF1DD6018FF4 B344FC1C +lv. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Iwl5O3CAh/Q5I+f2t9zL7jUnb4rWLJm0OQp2bSzMcKraXI6fpTHWzTNL 2XfNC1CHoHx4abm57IPYOW1udDkDtHa80roB1wnt7IqtxfJwZv8zZYn/ OZWd1t/R3c0eIzzdbZfA3H0rfzB1rVLMbMY57Ao+hZKJvnpIIJMtqoOv Nhg= +lv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aj89W4+daom/wcFNoannY4nJ2Z+FQx62qkXscwkw3fPClqRCS0g2KpPh waMcqpWKsnLE/teU3Occ2Jc2aAc7+xvZf4SdZZFp+gRksjrKokaqMX2p 0R7hg8kgev+3hpZm4QcLdQ6aifDX8+vbXNJDyFHMgVEF20uQr5/PdpEj TMo= +lv. 86400 IN NSEC ly. NS DS RRSIG NSEC +a.nic.lv. 172800 IN A 91.198.156.99 +a.nic.lv. 172800 IN AAAA 2a02:500:4400:700::4 +b.nic.lv. 172800 IN A 92.240.70.1 +c.nic.lv. 172800 IN A 194.0.1.24 +c.nic.lv. 172800 IN AAAA 2001:678:4::18 +d.nic.lv. 172800 IN A 194.0.8.1 +d.nic.lv. 172800 IN AAAA 2001:678:b:1::1 +ly. 172800 IN NS ly.cctld.authdns.ripe.net. +ly. 172800 IN NS dns.lttnet.net. +ly. 172800 IN NS dns1.lttnet.net. +ly. 172800 IN NS ns-ly.afrinic.net. +ly. 172800 IN NS phloem.uoregon.edu. +ly. 86400 IN NSEC ma. NS RRSIG NSEC +ly. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LzeMxXYDAx8CI7HIKDhP7npToOpT7RTw+zHt/yYlRbKgpM55NH7Vs9bv wiHs8pN4S+Wiv9he9IlKP/J7jyn04iY9p4HA5crBX/XWzv5HHkH2iXSa SjpJwOcO+bVtGjLaEkHcGE3dy11jUSTuXneUYVmCqw4rucMYgZzwjRAp x50= +ma. 86400 IN NSEC management. NS RRSIG NSEC +ma. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . h+SrBRP16Lw/rScZYG2Aa49iyRL/bQs0csRiFzfWgw1cUp81FzgNZK5Q v69Hmrm//KoiHg8ks2On5D2XP+ujg5VmvqjBztin3n5adzQJ8UH0zKpL dldGuQRbd3FA5UagIKBqgJF0c6wdIp39r+RIMAmXoinscwJxVE9qFDZV 0CU= +ma. 172800 IN NS ma.cctld.authdns.ripe.net. +ma. 172800 IN NS dns.inria.fr. +ma. 172800 IN NS ns1.iam.net.ma. +ma. 172800 IN NS ns2.iam.net.ma. +ma. 172800 IN NS ns2.nic.fr. +ma. 172800 IN NS ns3.iam.net.ma. +hariss.anrt.ma. 172800 IN A 194.204.241.140 +dns2.menara.ma. 172800 IN A 81.192.108.228 +dns3.menara.ma. 172800 IN A 81.192.108.164 +ns1.iam.net.ma. 172800 IN A 212.217.0.10 +ns2.iam.net.ma. 172800 IN A 81.192.53.23 +ns3.iam.net.ma. 172800 IN A 212.217.1.13 +management. 172800 IN NS demand.beta.aridns.net.au. +management. 172800 IN NS demand.alpha.aridns.net.au. +management. 172800 IN NS demand.delta.aridns.net.au. +management. 172800 IN NS demand.gamma.aridns.net.au. +management. 86400 IN DS 29419 8 2 DE87320C9CC67BFF04B718F11EF3B58F3DDE54CB615882F97D2EAB6C 295EE843 +management. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WwVDAwY3NK0nukRlXPqHiHRz0yeE4mH9IQ6inHSk2lGpkENBiS+k6I8h Z6ap9Q39CbMz3+iRaupfmfI/hegnrjC+JTmj1BvXH+nqzrm0exjiidaS DdbWQTjM+ZNLNZNcv3787mxS8d9Qa5kXyiVgXC7QE5NP7hC5gNxjy6Em /aA= +management. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cg+a2658W11om03ZyAxmrA+wuKPjciJy8Nn25Io9T1dK7APDkwVhpEBj 2yUvyeCwQCN0UqsgJmBc8a4VYQgufOkKVCmcp2s+uNzNPTMRHZ/uRNeU iJe6Gr8QtUnJNOB6qdfZvdgaKUbOh3W7L9m73GL76nmUh3tGkmSRKmNU 5ow= +management. 86400 IN NSEC marketing. NS DS RRSIG NSEC +marketing. 172800 IN NS demand.beta.aridns.net.au. +marketing. 172800 IN NS demand.alpha.aridns.net.au. +marketing. 172800 IN NS demand.delta.aridns.net.au. +marketing. 172800 IN NS demand.gamma.aridns.net.au. +marketing. 86400 IN DS 4267 8 2 64CC06CC6F4A935A5319A723AFE75D8BE89ACD73C4A766AB9BDF4E0C 02059869 +marketing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oF7+By44uzHw9r9ZZGhMkJt7TBLBHW5M3IsbFawx6f6s24rnnFy7MiKp g3gKyvPoEiuXJeRhLrxT8IcSw0OLGqcyCC9onn3gvNWFCbt216jzthtx BKFWpPoC204FDSsXR1jnoRILXeEUlvBUD3oVpE2tozmFFbnbfnTx1xl+ hmM= +marketing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oyjaC+DQwr4+eQmEMc8+Oih6kIq8+h9rHP/BBqRqPY5YXgkN9isfy9yD GsbNaJ9LtfwTBIfqE9/Iii6cnVjS/uJqhG/YyGKMgyFcdyRJP5MH0CQw UB72luPM0XUmlQ5869hcqM7iQBfqo7HilOuhCT5lJNmaml06tNMeLLLz nTU= +marketing. 86400 IN NSEC mc. NS DS RRSIG NSEC +mc. 172800 IN NS mc.cctld.authdns.ripe.net. +mc. 172800 IN NS ns1.nic.mc. +mc. 172800 IN NS ns2.nic.mc. +mc. 86400 IN NSEC md. NS RRSIG NSEC +mc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ucaeSGSJjITQOw486ihHPSxARf3obcOaMsYs12tfGoROxeIKhohf8Cdu 04nvaLKLDYyWSbZPP/sI/LJh2T6PH3ZVtstG+UCb6rmsW9PoLkmniTCd ryjMACZlOtv2IUdN8KBz/Uv1MpRBfI11M8ggd5jFYDf5d8fTWtwE4WRV Ryw= +ns1.nic.mc. 172800 IN A 195.78.19.216 +ns2.nic.mc. 172800 IN A 85.31.217.131 +md. 172800 IN NS md.cctld.authdns.ripe.net. +md. 172800 IN NS nsb.dns.md. +md. 172800 IN NS nsc.dns.md. +md. 172800 IN NS dns-md.rotld.ro. +md. 172800 IN NS ns-ext.isc.org. +md. 172800 IN NS ns-int.dns.md. +md. 86400 IN NSEC me. NS RRSIG NSEC +md. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . idTEVzbiBruZMePH2sSZwDl+FsfidJiAAczlvaNQrJwK73RI6qomsJXt hC3fiPLJBTvVl+RW/4fUY+9EnkfULGu+wRnqGsSeUQ7cDA2u+Faxz/KQ yJbHXB4W8WGyO3dRVDY/9I5skvhLy6TK+HkoSwxwYBfRqcpoVZGJv2A7 n3I= +ns-int.dns.md. 172800 IN A 217.26.144.5 +nsb.dns.md. 172800 IN A 217.26.144.15 +nsc.dns.md. 172800 IN A 95.65.9.3 +me. 172800 IN NS a0.cctld.afilias-nst.info. +me. 172800 IN NS a2.me.afilias-nst.info. +me. 172800 IN NS b0.cctld.afilias-nst.org. +me. 172800 IN NS b2.me.afilias-nst.org. +me. 172800 IN NS c0.cctld.afilias-nst.info. +me. 172800 IN NS d0.cctld.afilias-nst.org. +me. 172800 IN NS ns.nic.me. +me. 172800 IN NS ns2.nic.me. +me. 86400 IN DS 2569 7 1 09BA1EB4D20402620881FD9848994417800DB26A +me. 86400 IN DS 2569 7 2 94E798106F033500E67567B197AE9132C0E916764DC743C55A9ECA3C 7BF559E2 +me. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hYo5dFaEBw3JqG0HXnY8n0TmUX+4s47LT3a9IKzOvG/iNMA7UExujR7Q NdlE712sYgmQNFG+mqlgO3vv2z76vTGiIlymUVyNjateV4uaiPoRWm5H 6n4p3K/96xgFDRfg4mj99QgeydhPOKXRzMLo/M41AXBLkLe8nwMB7Ph0 5HA= +me. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XCGEtXFGxqgOgdbNQGgN8cX4/82dRK6ADKF1MbiMML7F+SQBHToaxqj3 eXc45Ku3mhrweq2EuuXDEQT0fh4e1oxUX+/GDx01Kxp1ZHp6MJNLsrzr vh5kiQ8NrCXkKjIZNV2TAY4T1bRA4sUCHgHSe3fxl05uNfveOUkW5/4/ Du0= +me. 86400 IN NSEC menu. NS DS RRSIG NSEC +ns.nic.me. 172800 IN A 89.188.44.44 +ns2.nic.me. 172800 IN A 89.188.44.88 +menu. 172800 IN NS a.nic.menu. +menu. 172800 IN NS b.nic.menu. +menu. 172800 IN NS c.nic.menu. +menu. 172800 IN NS d.nic.menu. +menu. 86400 IN DS 51916 8 2 AA3C98EE447CFA3BBF57D8A2899626324DE2097353FB5DBF031519A4 FE6964E6 +menu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VVeK3wuIM1zp49dhti1/okUZh+HcRbfHP69xamZ2/YxveZRwvKxvLWy3 EWGQUG0VcMaxWJ1nB9IVSyD/cNvJDgRrISq9Sdjzu7/0GclopMp7jtW3 Ke+Y+r7fTMv5O0+vaD8V/hmJC9H8jSQhFb8bKYGSxoG7E6YMpbmTrYVV 2kc= +menu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Im1YHeIJdDwwcmHN1SBhLFRUKewEq6sZk6tDqyiIMm4de7osn2axCPa5 wDSzO3IvVA8soWUfuf7PhrYiOMbpn32JDOqaHMvSzRkLS6EsTY2WJaND 1whXg6BO5eoUwmySsPiNdHquydyg7HQ/OAo8huiN/RNz8h2acDGK6Ybh EW0= +menu. 86400 IN NSEC mg. NS DS RRSIG NSEC +a.nic.menu. 172800 IN A 37.209.192.10 +a.nic.menu. 172800 IN AAAA 2001:dcd:1::10 +b.nic.menu. 172800 IN A 37.209.194.10 +b.nic.menu. 172800 IN AAAA 2001:dcd:2::10 +c.nic.menu. 172800 IN A 37.209.196.10 +c.nic.menu. 172800 IN AAAA 2001:dcd:3::10 +d.nic.menu. 172800 IN A 37.209.198.10 +d.nic.menu. 172800 IN AAAA 2001:dcd:4::10 +mg. 172800 IN NS mg.cctld.authdns.ripe.net. +mg. 172800 IN NS ns.dts.mg. +mg. 172800 IN NS ns.nic.mg. +mg. 172800 IN NS mg1.dyntld.net. +mg. 172800 IN NS mg2.dyntld.net. +mg. 172800 IN NS mg3.dyntld.net. +mg. 172800 IN NS mg4.dyntld.net. +mg. 172800 IN NS ns1.ird.fr. +mg. 172800 IN NS ns-mg.malagasy.com. +mg. 86400 IN NSEC mh. NS RRSIG NSEC +mg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SRdl0uKAa8qWF9yI8q3n4ov8B3h1HKUPOp1SQ+9dsjjaNIuUYB8VbACS 4NSs+VfRBSxn5IknegYERGoDbM5yiT6IlsFczldsL9wNDZ5Jp+BsEGE/ ssFD9UKfqKeUueQWWB27/4vH0RyaBWi93NmMLtWFl3BIkANNmkpmKA6q I5U= +ns.dts.mg. 172800 IN A 196.192.32.2 +ns.nic.mg. 172800 IN A 196.192.42.153 +mh. 172800 IN NS ns.ntamar.net. +mh. 172800 IN NS ns.amarshallinc.com. +mh. 86400 IN NSEC mil. NS RRSIG NSEC +mh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Z1v5UcbVCsgecLw1pSfKAKvM6UyDqocMDdrA6RtNRhVrYl5zY9Nqhbj5 9ftL2MzxrSACdhh0+tdIlzwf+PiC3Y6T8IJlXC7Jk96R7plmpqg51s+0 eRr03hlMoX5SVhlfQ4/UzF40Kc8p1Ajg7XlGPxSBTWMrBwl2ivooxV3Z zyU= +mil. 172800 IN NS con1.nipr.mil. +mil. 172800 IN NS con2.nipr.mil. +mil. 172800 IN NS eur1.nipr.mil. +mil. 172800 IN NS eur2.nipr.mil. +mil. 172800 IN NS pac1.nipr.mil. +mil. 172800 IN NS pac2.nipr.mil. +mil. 86400 IN DS 33001 8 1 02AE8EE2915FF47023EFD96A649D997069196C01 +mil. 86400 IN DS 33001 8 2 7BE472D58626F033479706F80DFBABBDFA3BE748C3E94B7D97E9DD53 31A5288E +mil. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZS9Uhi3X3JujJ918mqpQKRPpfiTyC/I7NDq+Cj4DLh1R6XTL1FGLbPmG kbq/YeTNNxJQnTB6oTjLUAfQRHc+ermAfHayKToDsiuCbFjNTZnD654z P1eP2a62SwLr1jlCNgd61p9jlFfmJeNfVskkPwJm7kPwL4xunJD85++I O14= +mil. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WsurIXocN+xgOyI88PxrvW244QDRrVDavefOAnU/9qj+TRBC27A9jZuZ ryxrQjIG/LTkN1BHXKLpIUsrCIY5VeCrO4eWF2CwRq81LTA6mDB0tXcj PWLaj8rAC74GYYsEehsn7H1c5t/yu+EOt8i5EJcHzywhAU/QPXT/OFmM 13o= +mil. 86400 IN NSEC mk. NS DS RRSIG NSEC +con1.nipr.mil. 172800 IN A 199.252.157.234 +con2.nipr.mil. 172800 IN A 199.252.162.234 +eur1.nipr.mil. 172800 IN A 199.252.154.234 +eur2.nipr.mil. 172800 IN A 199.252.143.234 +pac1.nipr.mil. 172800 IN A 199.252.180.234 +pac2.nipr.mil. 172800 IN A 199.252.155.234 +mk. 172800 IN NS ns2.arnes.si. +mk. 172800 IN NS ns5.univie.ac.at. +mk. 172800 IN NS rip.psg.com. +mk. 172800 IN NS kitka.marnet.net.mk. +mk. 86400 IN NSEC ml. NS RRSIG NSEC +mk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UlMZd3r3dOrd+VvufmF/HpWq8x3FssQmfRx+8Gzv2Mgw5/DCDMwEfM19 jjCmjxr23u3XNzO2qTSyuL0ivGMseqnTus9gYVPfiyAPnbEC+KpH5ZM9 buZfGVv2B3Ebu8Cz0bgA3l6sAqFHutuVy9x5siWsImRaATt1Q/2NQ18M UQQ= +kitka.marnet.net.mk. 172800 IN A 194.149.131.2 +kitka.marnet.net.mk. 172800 IN AAAA 2a02:e48:0:3::2 +ml. 172800 IN NS a.ns.ml. +ml. 172800 IN NS b.ns.ml. +ml. 172800 IN NS c.ns.ml. +ml. 172800 IN NS d.ns.ml. +ml. 86400 IN NSEC mm. NS RRSIG NSEC +ml. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ox7XMOA/bSXSRhjqxQDY47IsaZXSG8RcXEaGmaLK6YDvPn7BVyn1Co7V EDXdLKeiD52OgOkVi7eRh3So8Zsr4tLeXkIb0sMJTDuIo4nVn4Ch5XJc sYEEFIDQ4QZuZ58/2AP4IJFJV39N6wrdUNl8Ic5T88opUzaiqsLcGwdN MyA= +a.ns.ml. 172800 IN A 185.21.168.1 +a.ns.ml. 172800 IN AAAA 2a04:1b00::1 +b.ns.ml. 172800 IN A 185.21.169.1 +b.ns.ml. 172800 IN AAAA 2a04:1b00:1::1 +c.ns.ml. 172800 IN A 185.21.170.1 +c.ns.ml. 172800 IN AAAA 2a04:1b00:2::1 +d.ns.ml. 172800 IN A 185.21.171.1 +d.ns.ml. 172800 IN AAAA 2a04:1b00:3::1 +mm. 172800 IN NS mm.cctld.authdns.ripe.net. +mm. 172800 IN NS ns0.nic.net.mm. +mm. 172800 IN NS ns1.nic.net.mm. +mm. 172800 IN NS ns2.nic.net.mm. +mm. 86400 IN DS 14581 8 1 8B0ED592A997E801DAFADA2CD4CC31999BDA8782 +mm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PjRw/gKBb3i2B/1chPa53ImyG5vthnN6LbX479Jk7rfnhojSWOqvOY4F RYZiyRQMxVGbowSNPWwcy/M6Sz6563lzl8G2VoZ1TKE+OGd6LlH5/rwP Dp5+nGbqvQGWKZ9YfJ4JmqxS4o8rCVkd4q80e3O1cgQS4gP0PaI+qHDU j28= +mm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Wuk/cakei84ZClVP1iZgOHMJqG5c3RW0dLhTdbn8f8zq1pbrBnWVUPXJ A3BzA1tMcPnuXJvIZ1udUqT5nA51p5SXjoAGPzXJ32o9ETKdIDV2NvMY r/XdC2OSnLOTrT+IWUASVkUoI8o5M9+MMY5rmCtt5puAZ8gsNJJdWDT+ UTY= +mm. 86400 IN NSEC mn. NS DS RRSIG NSEC +ns0.nic.net.mm. 172800 IN A 203.81.64.20 +ns1.nic.net.mm. 172800 IN A 203.81.81.85 +ns2.nic.net.mm. 172800 IN A 203.81.92.10 +mn. 86400 IN NSEC mo. NS DS RRSIG NSEC +mn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OZz1JUUptZHnMVT7W7EXQkOiz5b2GzTgfq3HiGT2eTad8fZkhxWczn8l P1ku1THRNun68EPRp45Csa7P9/7qr5YYogUyoB8yomjuTnpColIhzS/B 9/KrYEGQi5QQ9CfpwO5yTzQUrNqvPxOdk2GdzBpUun8b6JtfYgPzxosB upU= +mn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QWisGBaza1lkLOJ4x5o7SnHV9+qJO779ndVJkc302p4ULS0iqQxTxUhL w9XzHhWdr5ouS57QDZVKGi8IjVWFoVIJx03Z0pUmvHbixTTMlG6ZrN07 6u/PbfdKmkIZSpof7/qAvkYeZ5lDRtTFcSc9artgsFfoXiJz05lyqnof ji0= +mn. 172800 IN NS a0.cctld.afilias-nst.info. +mn. 172800 IN NS a2.cctld.afilias-nst.info. +mn. 172800 IN NS b0.cctld.afilias-nst.org. +mn. 172800 IN NS b2.cctld.afilias-nst.org. +mn. 172800 IN NS c0.cctld.afilias-nst.info. +mn. 172800 IN NS d0.cctld.afilias-nst.org. +mn. 172800 IN NS ns1.magic.mn. +mn. 172800 IN NS ns2.magic.mn. +mn. 172800 IN NS ns3.magic.mn. +mn. 172800 IN NS ns4.magic.mn. +mn. 86400 IN DS 61299 7 1 7AED0B5BF96D4A045071FE60B6B1BE8F41A3D8A4 +mn. 86400 IN DS 61299 7 2 35AD84BA39FF62258FE6052F8E31E67C341D6CFA41D38A4698F9F35F B68E30B6 +ns1.idn.mn. 172800 IN A 202.170.80.40 +ns2.idn.mn. 172800 IN A 202.131.0.11 +ns3.idn.mn. 172800 IN A 202.180.216.18 +ns1.magic.mn. 172800 IN A 202.131.0.10 +ns2.magic.mn. 172800 IN A 202.72.241.5 +ns3.magic.mn. 172800 IN A 202.131.224.80 +ns4.magic.mn. 172800 IN A 218.100.84.26 +mo. 172800 IN NS a.monic.mo. +mo. 172800 IN NS b.monic.mo. +mo. 172800 IN NS c.monic.mo. +mo. 172800 IN NS d.monic.mo. +mo. 172800 IN NS e.monic.mo. +mo. 172800 IN NS ns2.cuhk.edu.hk. +mo. 172800 IN NS ns17.cdns.net. +mo. 86400 IN NSEC mobi. NS RRSIG NSEC +mo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . c7nYrzkHQZTzw3Eyg0Zyc1/Q2W36w2t0YUaM3Jjb795Q/hUww7Xm2vps KXSbeaJBc6fmVXPgnTa/6/XysEdOoSk+XjcSzjc3LFqjlpWh9O8flt+u +RPfj8VNYIsxOZlgJX8D30WgFkg4eTYFCgTizUJ9CwJQrTH+plAl+THK STA= +a.monic.mo. 172800 IN A 202.175.87.47 +b.monic.mo. 172800 IN A 202.175.87.48 +c.monic.mo. 172800 IN A 202.175.87.49 +d.monic.mo. 172800 IN A 202.175.51.115 +e.monic.mo. 172800 IN A 202.175.51.116 +mobi. 172800 IN NS a0.mobi.afilias-nst.info. +mobi. 172800 IN NS a2.mobi.afilias-nst.info. +mobi. 172800 IN NS b0.mobi.afilias-nst.org. +mobi. 172800 IN NS b2.mobi.afilias-nst.org. +mobi. 172800 IN NS c0.mobi.afilias-nst.info. +mobi. 172800 IN NS d0.mobi.afilias-nst.org. +mobi. 86400 IN NSEC moda. NS RRSIG NSEC +mobi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cTypvSfF5bhRbjawZZzJk6joHogVP6V0ZWmcPp3ivSli+Ha3Rdwt24/X MMRYZsBs/FkUdGQL1HJ16iKCjkDMvBowiOZjHC1Wiw6lKn4BrcTfOWOa eBae6yu3qhftmCQ0mejHMtJ9o/ZTSBU2BMIEGsMVdPHOp+uYR2a8TYyf KAI= +moda. 172800 IN NS demand.beta.aridns.net.au. +moda. 172800 IN NS demand.alpha.aridns.net.au. +moda. 172800 IN NS demand.delta.aridns.net.au. +moda. 172800 IN NS demand.gamma.aridns.net.au. +moda. 86400 IN DS 38596 8 2 63CCF0EB3E518D41F9E52DBE7DC0762567BB8A6CFF1162A3305A445F A42ACDFD +moda. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qjrDvGerH8dG0QzphNkVVwVpjlW3HZh3jTWgKaHxS8g/ccnqfFScmkZS gvImTVKHNBDLl54idbj6kDwEPW6sXjKhvkJatzNejEba6XT2poFgJ+eb b5Ar9I4aD2EW5t7SEsHsB304sBo0G8yDToBU/RJSW1UTFSxFwMUxQ0JL wys= +moda. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T0JfSJS4aSDQE20zU9Yiz5IGAT7ScVl1LYM+QunTPS6tMoUk7RCuui7d Y+C3t9hl1OM03t/TCwONx4n0EhPGL/GIqBfMBsOU1zVWrLEovdlQDig0 BNfM5xxcMjaiMC0utpPqPTNaUS+Ep2PGkoXj7nA4k/aOPEiA5TSjjVfT Dvw= +moda. 86400 IN NSEC monash. NS DS RRSIG NSEC +monash. 172800 IN NS a.nic.monash. +monash. 172800 IN NS b.nic.monash. +monash. 172800 IN NS c.nic.monash. +monash. 172800 IN NS d.nic.monash. +monash. 86400 IN DS 6355 8 2 BC8C82B3E65FC95A0610ED0F56190D4D0B78033F437EB48C2DD54F0E 0AEB3BBD +monash. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MNKlHDVWjyONvf3Mdt7TfruscnYLa+ZBHSi7YAKrkQY1YOcbKeiHBS9W 4HyH07v9HFsR2U7as9ZGQT8LZdptxhLdqHCglRHO9ek6P+T6DoaE0azV T/IiWb14K/xwUOxRcOmR48OzvThhtUvV4rJkP64qK4e1YjtzozTEADex Djw= +monash. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B3FsxN8H3QI7c3XnmKqfmRdFq/QjoHzkcpQ2H7541FRc8llpewKEhR01 9sY2d/P8olZy/qPMl12nTo8GdnlEmEpRHH5+2dwHBS+pUg8mcx6hlNpo cL91L+5AwCiuPShBqodHMkrvtmc+no08tDE4g+IVMReOceYdhz/vJxG7 8hg= +monash. 86400 IN NSEC mp. NS DS RRSIG NSEC +a.nic.monash. 172800 IN A 37.209.192.9 +a.nic.monash. 172800 IN AAAA 2001:dcd:1::9 +b.nic.monash. 172800 IN A 37.209.194.9 +b.nic.monash. 172800 IN AAAA 2001:dcd:2::9 +c.nic.monash. 172800 IN A 37.209.196.9 +c.nic.monash. 172800 IN AAAA 2001:dcd:3::9 +d.nic.monash. 172800 IN A 37.209.198.9 +d.nic.monash. 172800 IN AAAA 2001:dcd:4::9 +mp. 172800 IN NS ns1.nic.mp. +mp. 172800 IN NS ns2.nic.mp. +mp. 172800 IN NS ns3.nic.mp. +mp. 172800 IN NS ns4.nic.mp. +mp. 86400 IN NSEC mq. NS RRSIG NSEC +mp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DaJ6v/beMqW7Ua6eRe/TK05RslqKQoQh2ZC3ecLlZA9swlPI/R8zbdHe B9T6qB2rcFDSg1GDx72ArzO+B+pR9BBIxRQFrqhoIY4N6ltwXs8dYM2t KfV3IVbEKXHyk1GtGE8UFKgvcvQqu4K/nAEZZP7ynpnklm15i9y//MPP Mb0= +ns1.nic.mp. 172800 IN A 202.128.29.2 +ns2.nic.mp. 172800 IN A 202.128.29.135 +ns3.nic.mp. 172800 IN A 75.101.129.89 +ns4.nic.mp. 172800 IN A 75.101.133.101 +mq. 172800 IN NS ns1-fr.mediaserv.net. +mq. 172800 IN NS ns1-gp.mediaserv.net. +mq. 172800 IN NS ns1-mq.mediaserv.net. +mq. 86400 IN NSEC mr. NS RRSIG NSEC +mq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HRyIIMF7Av5viSRKqf6CgN+jJoFt6L1MwxciRozauiJuItSvb23hmtca +NqpitNDgC3bMWa4Ako6Vb1QeJDRdkhSDrjsQhIyDnybPNEkz8xbI7YQ TIdr0JB+qFUOaIYkT/XHkTFhRFzU0YC3lNQmZMpP15Vdqm89Y93V+GtY O34= +mr. 172800 IN NS ns.univ-nkc.mr. +mr. 172800 IN NS ns3.nic.fr. +mr. 172800 IN NS censvrns0001.ird.fr. +mr. 86400 IN NSEC ms. NS RRSIG NSEC +mr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P0XyahG6k/rjlDJblf3cqK8GoqIIe0ZgZrVgqeYKc0J/PsSki8hdyNtW Qa4fbdPZGZ6f95gxhO8JptqkhtWaHc+1FgaJ3ZmwBv9fhoQUH2DjMNg7 qGxQc+GwTxmuYAwC0aXofu2PUKv2dbynXU5uhwXBgspyXyjdylsm7d8O WIg= +ns.univ-nkc.mr. 172800 IN A 82.151.64.1 +ms. 172800 IN NS ms1.dyntld.net. +ms. 172800 IN NS ms2.dyntld.net. +ms. 172800 IN NS ms3.dyntld.net. +ms. 172800 IN NS ms4.dyntld.net. +ms. 172800 IN NS ms-ns.anycast.pch.net. +ms. 172800 IN NS phloem.uoregon.edu. +ms. 172800 IN NS mnidns1.mninet.ms. +ms. 86400 IN NSEC mt. NS RRSIG NSEC +ms. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UM+b/aNbqPhOhV7jBLDPvdfD7olfR+TUm3nag7theBGn59xzWT45xp5D 6uXyEeu82PUSSlPN0ChGkeTnXe/lnSvCr4ZD6TixPYVe3LcTfNeyUicR KRAoLGmSVxYO2t+bKwIlcyg564XHbtnGD/sgZkW1EYzc7BHB4XvvocdD IuI= +mnidns1.mninet.ms. 172800 IN A 199.7.90.2 +mt. 172800 IN NS f.ns.mt. +mt. 172800 IN NS i.ns.mt. +mt. 172800 IN NS p.ns.mt. +mt. 172800 IN NS r.ns.mt. +mt. 172800 IN NS ns.mt. +mt. 172800 IN NS ns1.mt. +mt. 86400 IN NSEC mu. NS RRSIG NSEC +mt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GodU0PsQqZRbMV+EXXVuuhcbUW0dK+Eo910BFBHwsCQfZTHKCZXqjg69 wLaLXEoIx7aEHFnygPBhjpDHNC4gCh+QP9Kr5zFMAKq/7kEIS5NW+E3T Am3/n2bKRMnaZ3WcdMOPGFttvfm6PUFdRRYBEcrL33ywMaFDAV5uLqW3 cxs= +ns.mt. 172800 IN A 193.188.47.252 +f.ns.mt. 172800 IN A 192.93.0.4 +f.ns.mt. 172800 IN AAAA 2001:660:3005:1::1:2 +i.ns.mt. 172800 IN A 192.5.4.1 +i.ns.mt. 172800 IN AAAA 2001:500:2e::1 +p.ns.mt. 172800 IN A 204.61.216.45 +r.ns.mt. 172800 IN A 193.0.9.97 +r.ns.mt. 172800 IN AAAA 2001:67c:e0::97 +ns1.mt. 172800 IN A 193.188.34.241 +mu. 86400 IN NSEC museum. NS RRSIG NSEC +mu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mEPAhRlgsgThkuVeIba/sLmGLST30PjURxoHmqk4oU7IO2F5wQEOy16H 59WG221hsO2CvKl2AkWEjCdOmJztgqzdCHvEiwPpINXP9OAZnPrRdMKv gUhgC1Bv7nZDHU5YLJd3Xl/te2OuP4wBAH6+eCpyd9am620PVXkAsgQq Xc0= +mu. 172800 IN NS fork.sth.dnsnode.net. +mu. 172800 IN NS udns1.tld.mu. +mu. 172800 IN NS udns2.tld.mu. +mu. 172800 IN NS anycast1.irondns.net. +cctld-vu.orange.mu. 172800 IN A 196.192.110.15 +udns1.tld.mu. 172800 IN A 204.61.216.10 +udns1.tld.mu. 172800 IN AAAA 2001:500:14:6010:ad::1 +udns2.tld.mu. 172800 IN A 193.0.9.98 +udns2.tld.mu. 172800 IN AAAA 2001:67c:e0::98 +museum. 172800 IN NS ns.icann.org. +museum. 172800 IN NS nic.museum. +museum. 172800 IN NS ns5.knipp.de. +museum. 172800 IN NS anyc1.irondns.net. +museum. 172800 IN NS sns-pb.isc.org. +museum. 86400 IN DS 17341 10 2 75E82017BAF68EB9BF64C4392B47489DB07317F8D9B522AF644586C2 64C1B231 +museum. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gtV8qU3HyGL9N89u2Ph/JJ4gtno0QWpfDZ5G4tHi+Ye4C+ztFfz+iql7 rFeVjTJ60xRxmPhJ/PX60tS4KFyuP5wLMB/n44tjrh7lJSvyovFWuzq0 XAOaf4CrLCP/wpjykX9GSgoLsvWc8gGk5Z6npaGZBFokl3jTe1Kc4ovC bWs= +museum. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f6Vfm+1WMO5rXBawk8S3/DCgG8NSpxWvPs026LStN5GKZ75eT147qHIZ htlAFvKYw3wg+s4xSYCuWk3gKdVT4oHOFTyHLYy4AsqZbWwEVVSeusv/ xlfJiItnecJAhg1E+eQMpxWkrhTKttjlEzNw7++xwjxPs5OY2fjmv4WN ODI= +museum. 86400 IN NSEC mv. NS DS RRSIG NSEC +nic.museum. 172800 IN A 130.242.24.5 +mv. 172800 IN NS ns.dhivehinet.net.mv. +mv. 172800 IN NS ns2.dhivehinet.net.mv. +mv. 172800 IN NS mv-ns.anycast.pch.net. +mv. 86400 IN NSEC mw. NS RRSIG NSEC +mv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ueIlYmWw5WtJ50MUh7VuH1qQNuSucB14FZnYVTz9fp8j+i3UFWza7/R0 cpSMx4zEgXw4WkKI8VfZtRaz5tXvGzOOrSa/qEWuQYkVzc6yjURadLs7 Ixwdol9Fq3vm86QsIYZhoSrdolQgX9vecgI42DV9+Rv+JC/iX9GOkrhW OfY= +ns.dhivehinet.net.mv. 172800 IN A 202.1.192.196 +ns2.dhivehinet.net.mv. 172800 IN A 202.1.201.201 +mw. 172800 IN NS mw.cctld.authdns.ripe.net. +mw. 172800 IN NS rip.psg.com. +mw. 172800 IN NS sec3.apnic.net. +mw. 172800 IN NS domwe.sdn.mw. +mw. 172800 IN NS chambo.sdnp.org.mw. +mw. 86400 IN NSEC mx. NS RRSIG NSEC +mw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rC2/JfGQB1LOz9kKRkTfYyp/ttYvEp/w8rZFjuiKzR+jHdIY4VBX+hlu riF2GL7+xJJuDob2nQ55RDpb8OEHoVO07gSfUdutPR2w6dLWrhDOOnR3 huDA2MKi9Be9G3uubRZCFSpohyHa/4h5miVUotcehxEIqwvOEaFj44GP TOk= +chambo.sdnp.org.mw. 172800 IN A 41.221.99.135 +chambo.sdnp.org.mw. 172800 IN A 196.45.188.5 +domwe.sdn.mw. 172800 IN A 41.221.99.149 +domwe.sdn.mw. 172800 IN A 196.45.190.9 +mx. 86400 IN NSEC my. NS RRSIG NSEC +mx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QJQSrwJt0rGIQzmzKp5UctPL3ttcrah/p2g+JoexxycWlc8YIudHBQVb hldLGti1Y5jxzbvFHz9YVv7hC8/+bB/XgCWlahToGOpbbE5mPBjWbPvW HiynP2WGXL0Mzdgu9lIP1r+iOOuHqTH92XXseo0iZqP3mkJqqFWo2cgs i1w= +mx. 172800 IN NS c.mx-ns.mx. +mx. 172800 IN NS e.mx-ns.mx. +mx. 172800 IN NS i.mx-ns.mx. +mx. 172800 IN NS m.mx-ns.mx. +mx. 172800 IN NS o.mx-ns.mx. +mx. 172800 IN NS x.mx-ns.mx. +c.mx-ns.mx. 172800 IN A 192.100.224.1 +c.mx-ns.mx. 172800 IN AAAA 2001:1258::1 +e.mx-ns.mx. 172800 IN A 189.201.244.1 +i.mx-ns.mx. 172800 IN A 207.248.68.1 +m.mx-ns.mx. 172800 IN A 200.94.176.1 +o.mx-ns.mx. 172800 IN A 200.23.1.1 +x.mx-ns.mx. 172800 IN A 201.131.252.1 +ns3.nic.mx. 172800 IN A 200.33.111.1 +my. 172800 IN NS dns.mynic.net.my. +my. 172800 IN NS ns2.cuhk.edu.hk. +my. 172800 IN NS ns5.jaring.my. +my. 172800 IN NS ns6.jaring.my. +my. 172800 IN NS dns2.mynic.net.my. +my. 172800 IN NS ns20.iij.ad.jp. +my. 172800 IN NS ns30.cdns.net. +my. 172800 IN NS ns-my.nic.fr. +my. 86400 IN DS 49551 8 1 486D0A0DAF13FCE34AEF9BE1B68075B016B84ECF +my. 86400 IN DS 49551 8 2 906FB28961CD5A3D1D90782507C471C9F80870E727B9504076BF5288 AE3B7DC9 +my. 86400 IN DS 56937 8 1 48A57004990714CA096B7D6FC9B58968C0BE37DB +my. 86400 IN DS 56937 8 2 885B9FAA1749CB502589E0DCF047849013ADA126ABF557D33C704F8C E97C9058 +my. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Aldjue2W8UGJqnzQwIuCs8FSG7KYlsQscER5fPa7gK05jdxnuwfRceFI Ly9q6iEB7OsaP/Nf9xiWHSNnPw1/l1pOkw/uK/3DmRnkcqlfe+VtWr1N mBPFnnp3bdx/j+SWejS3o2eEqKMpUzxeaAWymgvkvnm0pAXF9ELT6YWZ 0m4= +my. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IhN9PURxGQJ5f7ce6BVOWKI+BPiZhlY5b5KTZbSrZvn3bnxrBI9EWFpp vPcSvJWGxy6+pVO1+US/D6QUr/bIuHc9tZOPpjhmPRcMw13oYMSA33HI K65GCixqxWNwQpQPsN0Dwr+8t01lWiFgiyNUwjAK3r2BXrECe7lNwd/E IVM= +my. 86400 IN NSEC mz. NS DS RRSIG NSEC +ns5.jaring.my. 172800 IN A 61.6.38.139 +ns5.jaring.my. 172800 IN AAAA 2001:328:200:48::400 +ns6.jaring.my. 172800 IN A 192.228.128.16 +ns6.jaring.my. 172800 IN AAAA 2001:328:200:ab::600 +dns.mynic.net.my. 172800 IN A 192.228.180.5 +dns.mynic.net.my. 172800 IN AAAA 2001:328:1000:3::5 +dns2.mynic.net.my. 172800 IN A 202.75.39.36 +dns2.mynic.net.my. 172800 IN AAAA 2401:b000::36 +mz. 172800 IN NS anyns.uem.mz. +mz. 172800 IN NS dzowo.uem.mz. +mz. 172800 IN NS ns-mz.afrinic.net. +mz. 172800 IN NS zebra.uem.mz. +mz. 172800 IN NS oceano.uem.mz. +mz. 172800 IN NS phloem.uoregon.edu. +mz. 86400 IN NSEC na. NS RRSIG NSEC +mz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s0uVYV2mKHpmuUbnJ1QqipayiEEt7/NJRvqlLdQRRvYyN5sVlFfaJjzs vXNWg06NH1ctxnCcUxg3y0zyuO9dJs5ykOwnR5R/wN02jr4RW1nYHSG8 LtU3lZJjlcSKa2dDNRXXZL5bw1/76mLUUXO2TMX4fjUpRCfUCzyVtGli nYs= +anyns.uem.mz. 172800 IN A 204.61.216.14 +dzowo.uem.mz. 172800 IN A 196.3.96.66 +oceano.uem.mz. 172800 IN A 196.3.96.69 +zebra.uem.mz. 172800 IN A 196.3.96.67 +na. 172800 IN NS na1.dyntld.net. +na. 172800 IN NS na2.dyntld.net. +na. 172800 IN NS ns5.nominum.com. +na. 172800 IN NS ns6.nominum.eu. +na. 172800 IN NS anyc2.irondns.net. +na. 172800 IN NS na-ns.anycast.pch.net. +na. 172800 IN NS merlin.net.na. +na. 172800 IN NS sns-pb.isc.org. +na. 86400 IN DS 24484 5 1 EFC19D4685751FF8E11F96142A083DCB9C708912 +na. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ul/UWgjARe6uEWLkD7eHAVI6sLyNKogs0O139KAqtpJhLdESH19jTw4g qg0tHJLZbuFpbupUrRfpfjOa9dZPC9ItFs4aFIpbuXsQj1CRKjGrHoJH e2AGdCfWjH3cE843Y/xlDOxeF+8stg/rpNcuJjOrEhAWD/U9t+NSUraZ 5RI= +na. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dPdNd7zVko50U+dqiDpkFVo4h+G/rShhF1epjwGGQCgwE3JaSJz2GNzE GAnMqWwiSDV7wGdIXG4szaEt9JIEEQ+ew5ZnTakCAGjM9iSrwwMHdi0V E6SXYpjrw1kFNxPv4CXZq4J6TLesjaWV9amkU1qe/ozxq1uC/M9kWJ4V 7J8= +na. 86400 IN NSEC nagoya. NS DS RRSIG NSEC +merlin.net.na. 172800 IN A 204.152.184.96 +nagoya. 172800 IN NS a.gmoregistry.net. +nagoya. 172800 IN NS b.gmoregistry.net. +nagoya. 172800 IN NS c.gmoregistry.net. +nagoya. 172800 IN NS d.gmoregistry.net. +nagoya. 172800 IN NS e.gmoregistry.net. +nagoya. 86400 IN DS 23834 8 2 957222A7538919C4B3CCF76010594729E1F16EF36CF266F965F86CD2 C06889B4 +nagoya. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . E8smNsgPPaWMnR2ut++WSnlr9Y9sXx5hWHQb7++HV3rRr+AtA5WC+AuL xTe9Q/ztvBRMJlkS/yUBy6q9yqYavsxc+dNm3eiGmYt69FQAeHhwtDm4 gqbjUtKO6E161KAuxk5i6jasdfBiNtUQJWeyWY6E5ek9XsrNL8cdGFkH gOM= +nagoya. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cckVOJ0bjEb+R4mAvOMs9gb8bSboqUR/gyiskU1MMiT703rLfSxURyAr Mp3zhuqzTpe52qQtyzHARh0CGKahL5BQlCQ6/EyCerD+2tZxAd7z9iti IrvXkDDYh3WiUX5hjDDMdGLqOr2CRJ+UCNhDnixjOcZKzoo1tvCuDser 8lY= +nagoya. 86400 IN NSEC name. NS DS RRSIG NSEC +name. 172800 IN NS a6.nstld.com. +name. 172800 IN NS c6.nstld.com. +name. 172800 IN NS d6.nstld.com. +name. 172800 IN NS f6.nstld.com. +name. 172800 IN NS g6.nstld.com. +name. 172800 IN NS h6.nstld.com. +name. 172800 IN NS j6.nstld.com. +name. 172800 IN NS k6.nstld.com. +name. 172800 IN NS l6.nstld.com. +name. 172800 IN NS m6.nstld.com. +name. 86400 IN DS 52563 8 2 4E2671F0DBC3927D842053044C6A0CBF8B21E1E657DE8BBA99A48350 31A85A41 +name. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nFZmb2HQx19bPy0FjZ7DdGifTsGlZbR5NtJe1nzmj6qPeXPVXQI1vAMA UcMNDScwMhU9WCHSaMNc/gNCyiIclqpSZfsPbkSShpJifpiIDD+B/36K pDT/VNZP3THtORLar93nZiOVWDjQZP5MyxUy34KJhCxDvQJHxXMJoB5P vJE= +name. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . L3DlrxuCZclMQUEQAH9fYG8Szk2sUjget6kiR99VjUqdMRJ+SMEuFXPh pC+tGHX2f5/J499sVCl24lt6guU3v+VFK6YqHOJuYgRJhAyj9txKw5hq SFy8C8Df9Y17v+sfE/qeJAUyZJe9lHO+QDDx3Ec7zZapOrtKZgo0Q0pV m0Y= +name. 86400 IN NSEC nc. NS DS RRSIG NSEC +nc. 172800 IN NS nc.cctld.authdns.ripe.net. +nc. 172800 IN NS ns1.nc. +nc. 172800 IN NS ns2.nc. +nc. 172800 IN NS any-ns1.nc. +nc. 172800 IN NS censvrns0001.ird.fr. +nc. 86400 IN DS 49057 8 2 5957AB66CF4871C8C39EDEBC78DFAB2B6DCBB3EA5E97278EA2719053 9410B753 +nc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . kTRpetsOoZTGaktTklgtE1GOUM2oEycbBdCU3XRx1ZU6dXgelTiRiSNB 9i3mXykpc1HV/7kyHOlplW/cVl41t8vCT3g9aJBWlrHqUaCWWlRcFuiL MvtQEr7WeHk+Y9OLQRcU1Vntno67FjYB+J7xWGdA81+7iZwsM8QlrkVX nIM= +nc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . R1xebf1Ruhq+zZcR5A29Fsom67ClJd8qsHOJGsDlrYg5igcvy3WTQJ3n p99rmc3zV3c5i85RD9WmglJ18nI6D4ehvfeCXuhmLjPyMCr/EVg0Lv86 e0XcAXe9JGdvh/lAW81jFRqR43nRxKVXqhNdJ8Ds9ONgpXUpodHOy4Qs xsQ= +nc. 86400 IN NSEC ne. NS DS RRSIG NSEC +any-ns1.nc. 172800 IN A 114.69.222.1 +any-ns1.nc. 172800 IN AAAA 2001:500:14:8000:7245:de00:0:1 +ns1.nc. 172800 IN A 202.87.129.16 +ns2.nc. 172800 IN A 202.87.129.17 +ne. 172800 IN NS ne.cctld.authdns.ripe.net. +ne. 172800 IN NS ns.intnet.ne. +ne. 172800 IN NS bow.rain.fr. +ne. 172800 IN NS ns-ne.afrinic.net. +ne. 86400 IN NSEC net. NS RRSIG NSEC +ne. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aWfb+vWBBTErecvemUGSQwfCz6+ZtasGw3t5lrYhJsbqBTwoSuy3MFY0 7tQADVvrxphRUjLlP0xpyEUXGVxO3+T4AKWbXQ45sGHxTYsuMpH8CXBg j0nt/Al9ri+zbvbjsfJhjjPT0vQMWpdN6VKKlS3LO2OgceZ+eVPS8+RJ A10= +ns.intnet.ne. 172800 IN A 41.138.54.10 +net. 86400 IN NSEC nf. NS DS RRSIG NSEC +net. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FozsT30Dx7z2AlbU+t2eJ5k8cfXHKv8ueOhQ24o87o9qDgVtpWNooezO FsbE7EFZ4ST3jyVTf8t9xR1BaxFow1amnXPCrHCstnM4xucNsiV0zXCt 8TNjrSYM7fmuBhPYxxpeqnPfmfnis8COPIymElINEUWlx0bDmLtoGP4K iPE= +net. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . l6kvAPBv0sw/pihJdpJmemeRlCLpCCDDuDdyXN32l36jNouiG4LGIDaz m3eYCOuRU5s93EEWcAX7VJPVp+QFb5iTDdqkjmjD/4vmR3UfgWx/K15+ MgU0XdzsQCXs0MaoWeQz5eO4vWUfCsLQBtWziH1ETSVYb/z4/+lusaUf 0Rw= +net. 172800 IN NS a.gtld-servers.net. +net. 172800 IN NS b.gtld-servers.net. +net. 172800 IN NS c.gtld-servers.net. +net. 172800 IN NS d.gtld-servers.net. +net. 172800 IN NS e.gtld-servers.net. +net. 172800 IN NS f.gtld-servers.net. +net. 172800 IN NS g.gtld-servers.net. +net. 172800 IN NS h.gtld-servers.net. +net. 172800 IN NS i.gtld-servers.net. +net. 172800 IN NS j.gtld-servers.net. +net. 172800 IN NS k.gtld-servers.net. +net. 172800 IN NS l.gtld-servers.net. +net. 172800 IN NS m.gtld-servers.net. +net. 86400 IN DS 35886 8 2 7862B27F5F516EBE19680444D4CE5E762981931842C465F00236401D 8BD973EE +ns1.aalnet.net. 172800 IN A 194.112.0.1 +ns2.aalnet.net. 172800 IN A 194.112.0.5 +ns3.aalnet.net. 172800 IN A 82.199.186.130 +ns1.admin.net. 172800 IN A 198.73.186.1 +ns2.admin.net. 172800 IN A 198.71.89.236 +ns2.admin.net. 172800 IN AAAA 2605:f700:40:400::196b:8127 +ns3.admin.net. 172800 IN A 87.98.180.44 +ns3.admin.net. 172800 IN AAAA 2001:41d0:8:94e4::2 +ns4.admin.net. 172800 IN A 116.251.210.160 +ns4.admin.net. 172800 IN AAAA 2405:4200:202::923a:d47b +ns5.admin.net. 172800 IN A 188.165.33.42 +ns5.admin.net. 172800 IN AAAA 2001:41d0:8:5c79::3 +ns-bi.afrinic.net. 172800 IN A 196.216.168.23 +ns-bi.afrinic.net. 172800 IN AAAA 2001:43f8:120::23 +ns-bj.afrinic.net. 172800 IN A 196.216.168.33 +ns-bj.afrinic.net. 172800 IN AAAA 2001:43f8:120::33 +ns-bw.afrinic.net. 172800 IN A 196.216.168.72 +ns-bw.afrinic.net. 172800 IN AAAA 2001:43f8:120::72 +ns-ci.afrinic.net. 172800 IN A 196.216.168.30 +ns-ci.afrinic.net. 172800 IN AAAA 2001:43f8:120::30 +ns-dz.afrinic.net. 172800 IN A 196.216.168.36 +ns-dz.afrinic.net. 172800 IN AAAA 2001:43f8:120::36 +ns-gm.afrinic.net. 172800 IN A 196.216.168.29 +ns-gm.afrinic.net. 172800 IN AAAA 2001:43f8:120::29 +ns-ke.afrinic.net. 172800 IN A 196.216.168.22 +ns-km.afrinic.net. 172800 IN A 196.216.168.46 +ns-km.afrinic.net. 172800 IN AAAA 2001:43f8:120::46 +ns-ls.afrinic.net. 172800 IN A 196.216.168.70 +ns-ls.afrinic.net. 172800 IN AAAA 2001:43f8:120::70 +ns-ly.afrinic.net. 172800 IN A 196.216.168.24 +ns-ly.afrinic.net. 172800 IN AAAA 2001:43f8:120::24 +ns-mz.afrinic.net. 172800 IN A 196.216.168.40 +ns-mz.afrinic.net. 172800 IN AAAA 2001:43f8:120::40 +ns-ne.afrinic.net. 172800 IN A 196.216.168.45 +ns-ne.afrinic.net. 172800 IN AAAA 2001:43f8:120::45 +ns-rw.afrinic.net. 172800 IN A 196.216.168.28 +ns-rw.afrinic.net. 172800 IN AAAA 2001:43f8:120::28 +ns-sd.afrinic.net. 172800 IN A 196.216.168.26 +ns-sd.afrinic.net. 172800 IN AAAA 2001:43f8:120::26 +ns-td.afrinic.net. 172800 IN A 196.216.168.31 +ns-td.afrinic.net. 172800 IN AAAA 2001:43f8:120::31 +ns-tn.afrinic.net. 172800 IN A 196.216.168.25 +ns-tn.afrinic.net. 172800 IN AAAA 2001:43f8:120::25 +ns-tz.afrinic.net. 172800 IN A 196.216.168.20 +ns-tz.afrinic.net. 172800 IN AAAA 2001:43f8:120::20 +ns-ug.afrinic.net. 172800 IN A 196.216.168.42 +ns-ug.afrinic.net. 172800 IN AAAA 2001:43f8:120::42 +ns-zm.afrinic.net. 172800 IN A 196.216.168.44 +ns-zm.afrinic.net. 172800 IN AAAA 2001:43f8:120::44 +ns-cdn.amnic.net. 172800 IN A 194.0.1.26 +ns-cdn.amnic.net. 172800 IN AAAA 2001:678:4::1a +ns-pri.amnic.net. 172800 IN A 195.43.74.53 +ns-pri.amnic.net. 172800 IN AAAA 2001:67c:21c:53::1 +sec1.apnic.net. 172800 IN A 202.12.29.59 +sec1.apnic.net. 172800 IN AAAA 2001:dc0:2001:a:4608::59 +sec3.apnic.net. 172800 IN A 202.12.28.140 +sec3.apnic.net. 172800 IN AAAA 2001:dc0:1:0:4777::140 +sec4.apnic.net. 172800 IN A 202.12.31.141 +sec4.apnic.net. 172800 IN AAAA 2001:dc0:4001:1:0:1836:0:141 +ns1.as6453.net. 172800 IN A 66.198.145.55 +ns2.as6453.net. 172800 IN A 66.198.145.99 +dns-st.bahnhof.net. 172800 IN A 79.136.119.20 +ns1.bahnhof.net. 172800 IN A 195.178.160.2 +ns1.barbadosdomain.net. 172800 IN A 200.50.92.195 +ns2.barbadosdomain.net. 172800 IN A 204.212.242.113 +ns17.cdns.net. 172800 IN A 194.0.1.17 +ns17.cdns.net. 172800 IN AAAA 2001:678:4::11 +ns30.cdns.net. 172800 IN A 194.0.1.30 +ns30.cdns.net. 172800 IN AAAA 2001:678:4::1e +ns7.cdns.net. 172800 IN A 194.0.1.7 +ns7.cdns.net. 172800 IN AAAA 2001:678:4::7 +ns.cernet.net. 172800 IN A 202.112.0.44 +a.ci-servers.net. 172800 IN A 87.117.194.160 +root-b.cloud9global.net. 172800 IN A 50.22.82.251 +ns1.cobex.net. 172800 IN A 216.152.192.71 +ns2.cobex.net. 172800 IN A 216.152.192.72 +lk.communitydns.net. 172800 IN A 194.0.1.27 +ns1.communitydns.net. 172800 IN A 194.0.1.1 +ns1.communitydns.net. 172800 IN AAAA 2001:678:4::1 +ns15.communitydns.net. 172800 IN A 194.0.1.15 +ns15.communitydns.net. 172800 IN AAAA 2001:678:4::f +ph.communitydns.net. 172800 IN A 194.0.1.23 +euro-ns1.cw.net. 172800 IN A 141.1.27.248 +euro-ns2.cw.net. 172800 IN A 212.80.175.2 +euro-ns3.cw.net. 172800 IN A 141.1.27.251 +l.de.net. 172800 IN A 77.67.63.105 +l.de.net. 172800 IN AAAA 2001:668:1f:11::105 +n.de.net. 172800 IN A 194.146.107.6 +n.de.net. 172800 IN AAAA 2001:67c:1011:1::53 +s.de.net. 172800 IN A 195.243.137.26 +dns.dnsafrica.net. 172800 IN A 213.193.157.30 +cl1.dnsnode.net. 172800 IN A 194.146.106.34 +cl1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:8::53 +nl1.dnsnode.net. 172800 IN A 194.146.106.42 +nl1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:10::53 +pe1.dnsnode.net. 172800 IN A 194.146.106.82 +pe1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:20::53 +fork.sth.dnsnode.net. 172800 IN A 77.72.229.254 +fork.sth.dnsnode.net. 172800 IN AAAA 2a01:3f0:0:306::53 +za1.dnsnode.net. 172800 IN A 194.146.106.78 +za1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:19::53 +af1.dyntld.net. 172800 IN A 208.78.70.94 +af1.dyntld.net. 172800 IN AAAA 2001:500:90::94 +af3.dyntld.net. 172800 IN A 208.78.71.94 +af3.dyntld.net. 172800 IN AAAA 2001:500:94::94 +coop1.dyntld.net. 172800 IN A 208.78.70.80 +coop2.dyntld.net. 172800 IN A 204.13.250.80 +coop3.dyntld.net. 172800 IN A 208.78.71.80 +coop4.dyntld.net. 172800 IN A 204.13.251.80 +cx1.dyntld.net. 172800 IN A 208.78.70.77 +cx1.dyntld.net. 172800 IN AAAA 2001:500:90::77 +cx3.dyntld.net. 172800 IN A 208.78.71.77 +cx3.dyntld.net. 172800 IN AAAA 2001:500:94::77 +gl1.dyntld.net. 172800 IN A 208.78.70.97 +gl2.dyntld.net. 172800 IN A 204.13.250.97 +gl3.dyntld.net. 172800 IN A 208.78.71.97 +gl4.dyntld.net. 172800 IN A 204.13.251.97 +gs1.dyntld.net. 172800 IN A 208.78.70.86 +gs1.dyntld.net. 172800 IN AAAA 2001:500:90::86 +gs3.dyntld.net. 172800 IN A 208.78.71.86 +gs3.dyntld.net. 172800 IN AAAA 2001:500:94::86 +ki1.dyntld.net. 172800 IN A 208.78.70.87 +ki1.dyntld.net. 172800 IN AAAA 2001:500:90::87 +ki3.dyntld.net. 172800 IN A 208.78.71.87 +ki3.dyntld.net. 172800 IN AAAA 2001:500:94::87 +mg1.dyntld.net. 172800 IN A 208.78.70.96 +mg2.dyntld.net. 172800 IN A 204.13.250.96 +mg3.dyntld.net. 172800 IN A 208.78.71.96 +mg4.dyntld.net. 172800 IN A 204.13.251.96 +ms1.dyntld.net. 172800 IN A 208.78.70.84 +ms2.dyntld.net. 172800 IN A 204.13.250.84 +ms3.dyntld.net. 172800 IN A 208.78.71.84 +ms4.dyntld.net. 172800 IN A 204.13.251.84 +na1.dyntld.net. 172800 IN A 208.78.70.90 +na2.dyntld.net. 172800 IN A 204.13.250.90 +nf1.dyntld.net. 172800 IN A 208.78.70.88 +nf1.dyntld.net. 172800 IN AAAA 2001:500:90::88 +nf3.dyntld.net. 172800 IN A 208.78.71.88 +nf3.dyntld.net. 172800 IN AAAA 2001:500:94::88 +sb1.dyntld.net. 172800 IN A 208.78.70.83 +sb1.dyntld.net. 172800 IN AAAA 2001:500:90::83 +sb3.dyntld.net. 172800 IN A 208.78.71.83 +sb3.dyntld.net. 172800 IN AAAA 2001:500:94::83 +tl1.dyntld.net. 172800 IN A 208.78.70.78 +tl1.dyntld.net. 172800 IN AAAA 2001:500:90::78 +tl3.dyntld.net. 172800 IN A 208.78.71.78 +tl3.dyntld.net. 172800 IN AAAA 2001:500:94::78 +a.edu-servers.net. 172800 IN A 192.5.6.30 +c.edu-servers.net. 172800 IN A 192.26.92.30 +d.edu-servers.net. 172800 IN A 192.31.80.30 +f.edu-servers.net. 172800 IN A 192.35.51.30 +g.edu-servers.net. 172800 IN A 192.42.93.30 +g.edu-servers.net. 172800 IN AAAA 2001:503:cc2c::2:36 +l.edu-servers.net. 172800 IN A 192.41.162.30 +ns3.ns.esat.net. 172800 IN A 192.111.39.100 +ns3.ns.esat.net. 172800 IN AAAA 2001:7c8:2:a::64 +a.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.168.34 +a.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:8::2 +b.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.169.34 +b.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:9::2 +c.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.170.34 +c.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:a::2 +d.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.171.34 +d.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:b::2 +tld.gdns.net. 172800 IN A 68.178.129.149 +news-tokyo.gip.net. 172800 IN A 204.59.64.222 +ns2.gip.net. 172800 IN A 204.59.1.222 +a.gmoregistry.net. 172800 IN A 72.52.71.9 +a.gmoregistry.net. 172800 IN AAAA 2001:470:1a::9 +b.gmoregistry.net. 172800 IN A 38.103.2.9 +c.gmoregistry.net. 172800 IN A 63.243.194.9 +c.gmoregistry.net. 172800 IN AAAA 2001:5a0:10::9 +d.gmoregistry.net. 172800 IN A 120.29.252.11 +d.gmoregistry.net. 172800 IN AAAA 2001:dcd:5::11 +e.gmoregistry.net. 172800 IN A 120.29.254.11 +e.gmoregistry.net. 172800 IN AAAA 2001:dcd:6::11 +a.gov-servers.net. 172800 IN A 69.36.157.30 +a.gov-servers.net. 172800 IN AAAA 2001:500:4431::2:30 +b.gov-servers.net. 172800 IN A 209.112.123.30 +a.gtld-servers.net. 172800 IN A 192.5.6.30 +a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30 +b.gtld-servers.net. 172800 IN A 192.33.14.30 +b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30 +c.gtld-servers.net. 172800 IN A 192.26.92.30 +d.gtld-servers.net. 172800 IN A 192.31.80.30 +e.gtld-servers.net. 172800 IN A 192.12.94.30 +f.gtld-servers.net. 172800 IN A 192.35.51.30 +g.gtld-servers.net. 172800 IN A 192.42.93.30 +h.gtld-servers.net. 172800 IN A 192.54.112.30 +i.gtld-servers.net. 172800 IN A 192.43.172.30 +j.gtld-servers.net. 172800 IN A 192.48.79.30 +k.gtld-servers.net. 172800 IN A 192.52.178.30 +l.gtld-servers.net. 172800 IN A 192.41.162.30 +m.gtld-servers.net. 172800 IN A 192.55.83.30 +osi2.gua.net. 172800 IN A 205.161.188.3 +anyc1.irondns.net. 172800 IN A 195.253.64.4 +anyc1.irondns.net. 172800 IN AAAA 2a01:5b0:4::4 +anyc2.irondns.net. 172800 IN A 195.253.64.7 +anyc2.irondns.net. 172800 IN AAAA 2a01:5b0:4::7 +anycast1.irondns.net. 172800 IN A 195.253.64.5 +anycast1.irondns.net. 172800 IN AAAA 2a01:5b0:4::5 +anycast10.irondns.net. 172800 IN A 195.253.64.12 +anycast10.irondns.net. 172800 IN AAAA 2a01:5b0:4::c +anycast23.irondns.net. 172800 IN A 195.253.65.11 +anycast23.irondns.net. 172800 IN AAAA 2a01:5b0:5::b +anycast24.irondns.net. 172800 IN A 195.253.65.12 +anycast24.irondns.net. 172800 IN AAAA 2a01:5b0:5::c +anycast9.irondns.net. 172800 IN A 195.253.64.11 +anycast9.irondns.net. 172800 IN AAAA 2a01:5b0:4::b +tld.isc-sns.net. 172800 IN A 63.243.194.3 +tld.isc-sns.net. 172800 IN AAAA 2001:5a0:10::3 +ns0.ja.net. 172800 IN A 128.86.1.20 +ns0.ja.net. 172800 IN A 193.63.94.20 +ns0.ja.net. 172800 IN AAAA 2001:630:0:8::14 +ns0.ja.net. 172800 IN AAAA 2001:630:0:9::14 +ns4.ja.net. 172800 IN A 193.62.157.66 +ns4.ja.net. 172800 IN AAAA 2001:630:0:47::42 +kwns.kems.net. 172800 IN A 168.187.5.12 +ns1.krnic.net. 172800 IN A 202.30.50.51 +gd-ns.ksregistry.net. 172800 IN A 194.0.11.103 +gd-ns.ksregistry.net. 172800 IN AAAA 2001:678:e:103::53 +dns.lttnet.net. 172800 IN A 62.240.36.9 +dns1.lttnet.net. 172800 IN A 62.68.42.9 +ns1-fr.mediaserv.net. 172800 IN A 188.165.38.14 +ns1-gp.mediaserv.net. 172800 IN A 213.188.172.1 +ns1-mq.mediaserv.net. 172800 IN A 213.16.20.3 +server.nordu.net. 172800 IN A 193.10.252.19 +a.ns13.net. 172800 IN A 49.212.31.192 +b.ns13.net. 172800 IN A 49.212.51.85 +ns.ntamar.net. 172800 IN A 117.103.88.33 +cl-ns.anycast.pch.net. 172800 IN A 204.61.216.30 +cl-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6030:ad::1 +cy-ns.anycast.pch.net. 172800 IN A 204.61.216.44 +cy-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6044:ad::1 +gd-ns.anycast.pch.net. 172800 IN A 204.61.216.47 +gd-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6047:ad::1 +gy-ns.anycast.pch.net. 172800 IN A 204.61.216.34 +gy-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6034:ad::1 +ht-ns.anycast.pch.net. 172800 IN A 204.61.216.38 +ht-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6038:ad::1 +ls-ns.anycast.pch.net. 172800 IN A 204.61.216.28 +ls-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6028:ad::1 +ms-ns.anycast.pch.net. 172800 IN A 204.61.216.33 +mv-ns.anycast.pch.net. 172800 IN A 204.61.216.24 +na-ns.anycast.pch.net. 172800 IN A 204.61.216.35 +na-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6035:ad::1 +np-ns.anycast.pch.net. 172800 IN A 204.61.216.11 +np-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6011:ad::1 +pr-ns.anycast.pch.net. 172800 IN A 204.61.216.23 +pr-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6023:ad::1 +ps-ns.anycast.pch.net. 172800 IN A 204.61.216.29 +ps-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6029:ad::1 +sa-ns.anycast.pch.net. 172800 IN A 204.61.216.41 +sa-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6041:ad::1 +sg-ns.anycast.pch.net. 172800 IN A 204.61.216.57 +sg-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6057:ad::1 +za-ns.anycast.pch.net. 172800 IN A 204.61.216.55 +za-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6055:ad::1 +anyns.pch.net. 172800 IN A 204.61.216.4 +cat.pch.net. 172800 IN A 204.61.216.20 +cat.pch.net. 172800 IN AAAA 2001:500:14:6020:ad::1 +nic.lk-anycast.pch.net. 172800 IN A 204.61.216.27 +ad.cctld.authdns.ripe.net. 172800 IN A 193.0.9.53 +ad.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::53 +ae.cctld.authdns.ripe.net. 172800 IN A 193.0.9.54 +ae.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::54 +al.cctld.authdns.ripe.net. 172800 IN A 193.0.9.56 +al.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::56 +am.cctld.authdns.ripe.net. 172800 IN A 193.0.9.57 +am.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::57 +an.cctld.authdns.ripe.net. 172800 IN A 193.0.9.58 +an.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::58 +ar.cctld.authdns.ripe.net. 172800 IN A 193.0.9.59 +ar.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::59 +ba.cctld.authdns.ripe.net. 172800 IN A 193.0.9.60 +ba.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::60 +bg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.61 +bg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::61 +bi.cctld.authdns.ripe.net. 172800 IN A 193.0.9.62 +bi.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::62 +bj.cctld.authdns.ripe.net. 172800 IN A 193.0.9.63 +bj.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::63 +bt.cctld.authdns.ripe.net. 172800 IN A 193.0.9.65 +bt.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::65 +ci.cctld.authdns.ripe.net. 172800 IN A 193.0.9.67 +ci.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::67 +cm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.68 +cm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::68 +cu.cctld.authdns.ripe.net. 172800 IN A 193.0.9.70 +cu.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::70 +cw.cctld.authdns.ripe.net. 172800 IN A 193.0.9.86 +cw.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::86 +dz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.71 +dz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::71 +er.cctld.authdns.ripe.net. 172800 IN A 193.0.9.72 +er.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::72 +et.cctld.authdns.ripe.net. 172800 IN A 193.0.9.73 +et.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::73 +gd.cctld.authdns.ripe.net. 172800 IN A 193.0.9.75 +gd.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::75 +gp.cctld.authdns.ripe.net. 172800 IN A 193.0.9.76 +gp.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::76 +gs.cctld.authdns.ripe.net. 172800 IN A 193.0.9.77 +gs.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::77 +gu.cctld.authdns.ripe.net. 172800 IN A 193.0.9.78 +gu.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::78 +gy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.79 +gy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::79 +is.cctld.authdns.ripe.net. 172800 IN A 193.0.9.81 +is.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::81 +jm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.82 +jm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::82 +jo.cctld.authdns.ripe.net. 172800 IN A 193.0.9.83 +jo.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::83 +kg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.84 +kg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::84 +kz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.87 +kz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::87 +lv.cctld.authdns.ripe.net. 172800 IN A 193.0.9.89 +lv.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::89 +ly.cctld.authdns.ripe.net. 172800 IN A 193.0.9.90 +ly.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::90 +ma.cctld.authdns.ripe.net. 172800 IN A 193.0.9.91 +ma.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::91 +mc.cctld.authdns.ripe.net. 172800 IN A 193.0.9.92 +mc.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::92 +md.cctld.authdns.ripe.net. 172800 IN A 193.0.9.93 +md.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::93 +mg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.94 +mg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::94 +mm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.96 +mm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::96 +mw.cctld.authdns.ripe.net. 172800 IN A 193.0.9.99 +mw.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::99 +nc.cctld.authdns.ripe.net. 172800 IN A 193.0.9.100 +nc.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::100 +ne.cctld.authdns.ripe.net. 172800 IN A 193.0.9.101 +ne.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::101 +np.cctld.authdns.ripe.net. 172800 IN A 193.0.9.102 +np.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::102 +ph.cctld.authdns.ripe.net. 172800 IN A 193.0.9.104 +ph.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::104 +ps.cctld.authdns.ripe.net. 172800 IN A 193.0.9.105 +ps.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::105 +py.cctld.authdns.ripe.net. 172800 IN A 193.0.9.106 +py.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::106 +sa.cctld.authdns.ripe.net. 172800 IN A 193.0.9.108 +sa.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::108 +sd.cctld.authdns.ripe.net. 172800 IN A 193.0.9.109 +sd.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::109 +sm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.110 +sm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::110 +sn.cctld.authdns.ripe.net. 172800 IN A 193.0.9.111 +sn.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::111 +sv.cctld.authdns.ripe.net. 172800 IN A 193.0.9.112 +sv.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::112 +sy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.113 +sy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::113 +sz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.114 +sz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::114 +th.cctld.authdns.ripe.net. 172800 IN A 193.0.9.116 +th.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::116 +tj.cctld.authdns.ripe.net. 172800 IN A 193.0.9.117 +tj.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::117 +to.cctld.authdns.ripe.net. 172800 IN A 193.0.9.118 +to.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::118 +tp.cctld.authdns.ripe.net. 172800 IN A 193.0.9.119 +tp.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::119 +tr.cctld.authdns.ripe.net. 172800 IN A 193.0.9.120 +tr.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::120 +ug.cctld.authdns.ripe.net. 172800 IN A 193.0.9.52 +ug.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::52 +uy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.122 +uy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::122 +va.cctld.authdns.ripe.net. 172800 IN A 193.0.9.123 +va.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::123 +vg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.124 +vg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::124 +vn.cctld.authdns.ripe.net. 172800 IN A 193.0.9.126 +vn.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::126 +sec2.authdns.ripe.net. 172800 IN A 193.0.9.4 +sec2.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::4 +ns-bn.ripe.net. 172800 IN A 193.0.12.33 +ns-kh.ripe.net. 172800 IN A 193.0.12.37 +ns-zw.ripe.net. 172800 IN A 193.0.12.249 +a.dns.ripn.net. 172800 IN A 193.232.128.6 +a.dns.ripn.net. 172800 IN AAAA 2001:678:17:0:193:232:128:6 +b.dns.ripn.net. 172800 IN A 194.85.252.62 +b.dns.ripn.net. 172800 IN AAAA 2001:678:16:0:194:85:252:62 +d.dns.ripn.net. 172800 IN A 194.190.124.17 +d.dns.ripn.net. 172800 IN AAAA 2001:678:18:0:194:190:124:17 +e.dns.ripn.net. 172800 IN A 193.232.142.17 +e.dns.ripn.net. 172800 IN AAAA 2001:678:15:0:193:232:142:17 +f.dns.ripn.net. 172800 IN A 193.232.156.17 +f.dns.ripn.net. 172800 IN AAAA 2001:678:14:0:193:232:156:17 +a.root-servers.net. 518400 IN A 198.41.0.4 +a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 +b.root-servers.net. 518400 IN A 192.228.79.201 +c.root-servers.net. 518400 IN A 192.33.4.12 +d.root-servers.net. 518400 IN A 199.7.91.13 +d.root-servers.net. 518400 IN AAAA 2001:500:2d::d +e.root-servers.net. 518400 IN A 192.203.230.10 +f.root-servers.net. 518400 IN A 192.5.5.241 +f.root-servers.net. 518400 IN AAAA 2001:500:2f::f +g.root-servers.net. 518400 IN A 192.112.36.4 +h.root-servers.net. 518400 IN A 128.63.2.53 +h.root-servers.net. 518400 IN AAAA 2001:500:1::803f:235 +i.root-servers.net. 518400 IN A 192.36.148.17 +i.root-servers.net. 518400 IN AAAA 2001:7fe::53 +j.root-servers.net. 518400 IN A 192.58.128.30 +j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 +k.root-servers.net. 518400 IN A 193.0.14.129 +k.root-servers.net. 518400 IN AAAA 2001:7fd::1 +l.root-servers.net. 518400 IN A 199.7.83.42 +l.root-servers.net. 518400 IN AAAA 2001:500:3::42 +m.root-servers.net. 518400 IN A 202.12.27.33 +m.root-servers.net. 518400 IN AAAA 2001:dc3::35 +igubu.saix.net. 172800 IN A 196.25.1.1 +sabela.saix.net. 172800 IN A 196.43.1.9 +ns02.savvis.net. 172800 IN A 204.70.57.242 +ns1.sr.net. 172800 IN A 200.1.159.148 +ns2.sr.net. 172800 IN A 200.2.162.30 +ns.thnic.net. 172800 IN A 202.28.0.1 +ns.twnic.net. 172800 IN A 192.83.166.11 +ns.twnic.net. 172800 IN AAAA 2001:288:1:1006::11 +dns2.u-registry.net. 172800 IN A 195.123.1.7 +dns2.u-registry.net. 172800 IN AAAA 2a02:128:2::5 +nsi.uanic.net. 172800 IN A 212.1.66.247 +tld1.ultradns.net. 172800 IN A 204.74.112.1 +tld1.ultradns.net. 172800 IN AAAA 2001:502:d399::1 +tld2.ultradns.net. 172800 IN A 204.74.113.1 +a.ns.uniregistry.net. 172800 IN A 72.52.126.166 +a.ns.uniregistry.net. 172800 IN AAAA 2001:470:a4:10::166 +ns.uu.net. 172800 IN A 137.39.1.3 +auth00.ns.uu.net. 172800 IN A 198.6.1.65 +auth00.ns.uu.net. 172800 IN AAAA 2600:803:408:2::10 +auth02.ns.uu.net. 172800 IN A 198.6.1.82 +auth03.ns.uu.net. 172800 IN A 198.6.1.83 +auth100.ns.uu.net. 172800 IN A 198.6.1.202 +auth110.ns.uu.net. 172800 IN A 198.6.1.114 +auth200.ns.uu.net. 172800 IN A 195.129.12.82 +auth200.ns.uu.net. 172800 IN AAAA 2001:600:1c0:e000::35:2 +auth210.ns.uu.net. 172800 IN A 195.129.12.74 +auth210.ns.uu.net. 172800 IN AAAA 2001:600:1c0:e001::35:2 +auth61.ns.uu.net. 172800 IN A 198.6.1.182 +nf. 172800 IN NS ns.anycast.nic.nf. +nf. 172800 IN NS nf1.dyntld.net. +nf. 172800 IN NS nf3.dyntld.net. +nf. 172800 IN NS sns-pb.isc.org. +nf. 86400 IN DS 54236 8 2 DD87DD324E8360DEC8DAAF2DB771B8C52024D6CEFEB76F2B855E0FC3 B8FDB7D7 +nf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iQtkmXQ/kp3aVc1ECsWFIHRiA+TlNTVa0snRGRzH93cM1lYzshnQ1RLF e2OipuemCXAYXBprz7T3vXbk7D3XwkT4sKe50qJD3qtFl3QW7hGcauhz D9shuLtYXA9NCYDSa0nW3U2qqC3Sg8vv8tPuC03qe208aFzJvFjvD8i1 kk4= +nf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RjCq7/Wz/CELFA6jz7quBDzc3ov77sXs7yFEAQmBoX6jrBUxIk9f76ri fwBQZ8rqDF00HlSWZP6g+NYLHZLMLuGi+RQukBr+XurBB/uwYJJz+Sqk UNsSfgxpjsWEmHNkXUdxOkJgUJlquTkfP5norhj4Qr/mX25OsQaMezMw Dc0= +nf. 86400 IN NSEC ng. NS DS RRSIG NSEC +ns.anycast.nic.nf. 172800 IN A 204.61.216.51 +ns.anycast.nic.nf. 172800 IN AAAA 2001:500:14:6051:ad::1 +ng. 172800 IN NS ns1.nic.net.ng. +ng. 172800 IN NS ns2.nic.net.ng. +ng. 172800 IN NS ns3.nic.net.ng. +ng. 172800 IN NS ns4.nic.net.ng. +ng. 172800 IN NS nsa.nic.net.ng. +ng. 86400 IN NSEC ni. NS RRSIG NSEC +ng. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HM+wdkmco5NmKllmvFjyJis96qN2UzhtEgtMoU/hVAg1EEwVSsFYe4Ha S8Rge2s35etN78Pgx13e25Cj1NDicMZIrklmbdZk51KyjizIAPmRk43s tNtqnNjqA432If96FthGqA4PH4KR0lByhYxoYmEu3S4jQ1iyJwKlpgz5 65c= +ns1.nic.net.ng. 172800 IN A 194.0.1.29 +ns1.nic.net.ng. 172800 IN AAAA 2001:678:4::1d +ns2.nic.net.ng. 172800 IN A 204.61.216.40 +ns3.nic.net.ng. 172800 IN A 208.78.70.93 +ns4.nic.net.ng. 172800 IN A 204.13.250.93 +nsa.nic.net.ng. 172800 IN A 41.222.79.3 +ni. 172800 IN NS ns.cr. +ni. 172800 IN NS ns.ni. +ni. 172800 IN NS ns.uu.net. +ni. 172800 IN NS ns.ibw.com.ni. +ni. 172800 IN NS ns.tmx.com.ni. +ni. 172800 IN NS ns.ideay.net.ni. +ni. 172800 IN NS ns2.ni. +ni. 86400 IN NSEC ninja. NS RRSIG NSEC +ni. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jmt7MYFkNl2z8hvJJMj/UGRFhrC8WLwj8QFkFZwMPDBMEg3hJoy4jrE9 Jaf31o1OoVUJG3JH+rD/VoAkXMvsyPAn4euKfwFf3yMhn6PKBkQZZkRm gzPytgxkoAtvAYJ0jtlhhxdFzpbgSM7I7HBOQJT0oXLNDxFsQMvvQdyD 8z8= +ns.ibw.com.ni. 172800 IN A 200.85.160.2 +ns.tmx.com.ni. 172800 IN A 200.62.64.1 +ns.ideay.net.ni. 172800 IN A 200.9.190.130 +ns.ni. 172800 IN A 165.98.1.2 +ns2.ni. 172800 IN A 200.9.187.2 +ninja. 172800 IN NS demand.beta.aridns.net.au. +ninja. 172800 IN NS demand.alpha.aridns.net.au. +ninja. 172800 IN NS demand.delta.aridns.net.au. +ninja. 172800 IN NS demand.gamma.aridns.net.au. +ninja. 86400 IN DS 55045 8 2 5E37FAE7300F5183057D2FAAD662FCCBEC710849DFED3D31E066E362 32B1FE07 +ninja. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WGLXqOuBrwhgtXSMxMOD2lPxqI7fRRitanK2/7LHtMK4flg8bMjLTVP+ MRLyScugkazQOf6FwkTA2Bq8l7fxXcxs1RF/wJAnuGUa6y7c3wGa7+Pf z7xzccxQ5bCN//tV8BMw/ATWhz63FOQeF6VtTKJiEGWpawpePIuRqB0i kOw= +ninja. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GKt1PR34r/o3HsFY7eUCCbti1vlzvcMJoVMfJBrsEahcr7eOf+fP2CT5 U8memq2VxMN052ZUCqwn/hl5WgnWZK8/Iz7e7mONKIwPMz7iL5mc85CM KYe3k7GDAGw5XlA91oaLDo3hLrSlTiggrbIvZhGwdLdvWcW8RPDaHm/N IDY= +ninja. 86400 IN NSEC nl. NS DS RRSIG NSEC +nl. 86400 IN NSEC no. NS DS RRSIG NSEC +nl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nqSMwN6naWFjFsW5ffJVyV5OP8yMSNZOqf4f664lL5OxQgVktq9GqbQK kXZdDFhX9XGOEDOOP84A9evmdRpiBYckQja8Xl0WXIETEr4Cm2yi4DKy Nk7d/kmwDSqJHOZkZPRc3yLp9tYfKjUAiM4P/azzchdov2zNOo4mho3L Khk= +nl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oxwdC5y6IwurUq7mHOnIp7Re7f2zWtm8uNR1YTKwlKw0Q84Jfwi5Mao1 W5qWjeM/PFdqFmEjao3p52G9pEECqWaECGo5g6IViZUqnHjkhFyeW31A tMclRXSgFOl9GdDwrVlgDaTgvsONJzn+cFfvgY9QfKsJ/KHuKSywnluu fkA= +nl. 172800 IN NS nl1.dnsnode.net. +nl. 172800 IN NS ns1.dns.nl. +nl. 172800 IN NS ns2.dns.nl. +nl. 172800 IN NS ns3.dns.nl. +nl. 172800 IN NS ns4.dns.nl. +nl. 172800 IN NS ns5.dns.nl. +nl. 172800 IN NS ns-nl.nic.fr. +nl. 172800 IN NS sns-pb.isc.org. +nl. 86400 IN DS 21362 8 2 881D17ECCD7FD67F1086247611CCB7FB8646E82D0074AA91E980B016 FD3EDE98 +ns1.dns.nl. 172800 IN A 193.176.144.5 +ns1.dns.nl. 172800 IN AAAA 2a00:d78:0:102:193:176:144:5 +ns2.dns.nl. 172800 IN A 213.154.241.85 +ns2.dns.nl. 172800 IN AAAA 2001:7b8:606::85 +ns3.dns.nl. 172800 IN A 194.171.17.10 +ns3.dns.nl. 172800 IN AAAA 2001:610:0:800d::10 +ns4.dns.nl. 172800 IN A 95.142.99.212 +ns4.dns.nl. 172800 IN AAAA 2a00:1188:5::212 +ns5.dns.nl. 172800 IN A 194.0.28.53 +ns5.dns.nl. 172800 IN AAAA 2001:678:2c:0:194:0:28:53 +ns-pt.nlnetlabs.nl. 172800 IN A 213.154.224.141 +ns-pt.nlnetlabs.nl. 172800 IN AAAA 2001:7b8:206:1::4:141 +ns-aw-ext1.sidn.nl. 172800 IN A 193.176.144.23 +ns-aw-ext1.sidn.nl. 172800 IN AAAA 2a00:d78:0:102:193:176:144:23 +no. 86400 IN NSEC np. NS RRSIG NSEC +no. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tDEVTm1CKVNGnL5hWYxRKHtFX9+Xq7b8xss8ywXGpOm/kGQqxB4QEQSl Kq3TPDOC/Ds8mg3MX1jBlnrmdOzLTcpM22AGtAazl7Grwh+r6XC3B9WE 7MH5embhufXuSNkMKBO9z0gDnGaealUtOl4o62xMawipUM5V8hxNLlNq 9as= +no. 172800 IN NS i.nic.no. +no. 172800 IN NS x.nic.no. +no. 172800 IN NS y.nic.no. +no. 172800 IN NS z.nic.no. +no. 172800 IN NS not.norid.no. +no. 172800 IN NS njet.norid.no. +nac.no. 172800 IN A 128.39.2.22 +i.nic.no. 172800 IN A 194.146.106.6 +x.nic.no. 172800 IN A 128.39.8.40 +y.nic.no. 172800 IN A 193.75.4.22 +y.nic.no. 172800 IN AAAA 2001:8c0:8200:1::2 +z.nic.no. 172800 IN A 158.38.8.133 +z.nic.no. 172800 IN AAAA 2001:700:0:52d:158:38:8:133 +njet.norid.no. 172800 IN A 156.154.101.12 +not.norid.no. 172800 IN A 156.154.100.12 +not.norid.no. 172800 IN AAAA 2001:502:ad09::12 +nn.uninett.no. 172800 IN A 158.38.0.181 +np. 172800 IN NS np.cctld.authdns.ripe.net. +np. 172800 IN NS sec3.apnic.net. +np. 172800 IN NS np-ns.npix.net.np. +np. 172800 IN NS np-ns.anycast.pch.net. +np. 172800 IN NS ns-ext.isc.org. +np. 172800 IN NS shikhar.mos.com.np. +np. 172800 IN NS yarrina.connect.com.au. +np. 86400 IN NSEC nr. NS RRSIG NSEC +np. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X/su9FItzSqMWaKFAMxaH740MQyfGfGSHxvICfiiWAp1o3x9MGExf3nL 3xDiis1h+LYw2oxSX6n14FCvnrpXDCq58NIUfhddCOGo8woruvGDjB1z 2M1JvLPOSklYdvCRD3F5Ys1+vgdl7hKA014lHF+/dJ1dHxNF4dZND0l1 UXQ= +shikhar.mos.com.np. 172800 IN A 202.52.255.5 +np-ns.npix.net.np. 172800 IN A 198.32.126.50 +nr. 172800 IN NS ns1.net.reach.com. +nr. 172800 IN NS dns1.cenpac.net.nr. +nr. 172800 IN NS nrweb.cenpac.net.nr. +nr. 172800 IN NS sns-pb.isc.org. +nr. 86400 IN NSEC nu. NS RRSIG NSEC +nr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . j3fHmIF+3Xqh9oshdClAuTvB0YouImlTZfIHtk4RWez7hgqA4jLJmEkF 0txBBX5aoj8BjHqHyUI45hgtuDiSD54ZLXSJTYV6Edfp92ldhpm94mYv 4DgEA3gyPsJlrhqGPR9+jhJOOH1gDt07WbcL2tZi3lyDGpHmRf8/hJS7 pdw= +dns1.cenpac.net.nr. 172800 IN A 203.98.225.9 +nrweb.cenpac.net.nr. 172800 IN A 203.98.224.66 +nu. 172800 IN NS a.nic.nu. +nu. 172800 IN NS b.nic.nu. +nu. 172800 IN NS c.nic.nu. +nu. 86400 IN DS 3453 7 2 270AAD4FB6BC3AF95CB66B2F9C61F615D4510C5702B54899C26EE2E3 7DBCA6D8 +nu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . U0AVMZJXi4bHMx2bCBSyP9xCh3oiKJ5M3ncRwGmHzCsKiftYLh32y+7p +rldLzcV2dzw60InUNEDtcRSE1SD6Gmt2dmoV33+1lJYbMU8ve9IvUE+ n5F4v3OeEU708HzCUYN3OwhkQOdLE1o6zMeYcEttTXJ4bxmWirnB95AI Kmc= +nu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . a51L+Mnk6cdDy2GgJbbm0WLdmP/du4PzS4P152eG5n0gmBYSjplZJfj1 tdpnK18Jp47mtmi+s3q/u7mduZSfy+o/PwSesDEKvjbiA04/I8MtSljC RDXBMq+ZoxU8ItCRbQFtYduKSQKzbLTyd1r3Mj2YkUXliAR8TwdwzK1e tm0= +nu. 86400 IN NSEC nz. NS DS RRSIG NSEC +a.nic.nu. 172800 IN A 194.146.106.22 +a.nic.nu. 172800 IN AAAA 2001:67c:1010:5::53 +b.nic.nu. 172800 IN A 65.22.164.1 +b.nic.nu. 172800 IN AAAA 2a01:8840:10::1 +c.nic.nu. 172800 IN A 192.36.144.107 +c.nic.nu. 172800 IN AAAA 2a01:3f0:0:301::53 +nz. 86400 IN NSEC om. NS DS RRSIG NSEC +nz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . asyjZy1kwqlWMQG3eTfqsCZht28pd3HJ8M87mjBpzm6US/rmgMFBIitA 6MC9EQk7JqVz8fWQ/0O7gOmfHvJzFGTpxSlOHyACBbKIEKrwaD5fpIZs PUtyMYXq3SOx4J/NiXxRsjcBtUBEwtlKLRL9OWJGG3HlYbUNzBex8fJ+ GqM= +nz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gxs+qsgptY4P+sHqR4xIO453JN+vuDe8nH4KRVgAJErtFmEVf65/IPlU zbwrRrCoWfk9WDDtWZEkhQCVBWrvzxG8r9aBD1FxnZ6QUjrlTn4JhVKE R0wDp9cZp5XOHAWSm2ChsAyecio/Q1lCFysFouB4FzoaiqUqJEFh6DWe 0dE= +nz. 172800 IN NS ns1.dns.net.nz. +nz. 172800 IN NS ns2.dns.net.nz. +nz. 172800 IN NS ns3.dns.net.nz. +nz. 172800 IN NS ns4.dns.net.nz. +nz. 172800 IN NS ns5.dns.net.nz. +nz. 172800 IN NS ns6.dns.net.nz. +nz. 172800 IN NS ns7.dns.net.nz. +nz. 86400 IN DS 19889 8 1 A67187009210FC3432B2136FE22A82BE5B20CBC4 +nz. 86400 IN DS 19889 8 2 6B4593378969D7077FD31443235A86F0226D3780382143919CF0FF2D 62EB47D8 +circa.mcs.vuw.ac.nz. 172800 IN A 130.195.5.12 +downstage.mcs.vuw.ac.nz. 172800 IN A 130.195.6.10 +ns1.dns.net.nz. 172800 IN A 202.46.190.130 +ns1.dns.net.nz. 172800 IN AAAA 2001:dce:2000:2::130 +ns2.dns.net.nz. 172800 IN A 202.46.187.130 +ns2.dns.net.nz. 172800 IN AAAA 2001:dce:7000:2::130 +ns3.dns.net.nz. 172800 IN A 202.46.188.130 +ns4.dns.net.nz. 172800 IN A 202.46.189.130 +ns5.dns.net.nz. 172800 IN A 156.154.100.14 +ns5.dns.net.nz. 172800 IN AAAA 2001:502:ad09::14 +ns6.dns.net.nz. 172800 IN A 156.154.101.14 +ns6.dns.net.nz. 172800 IN AAAA 2001:502:2eda::14 +ns7.dns.net.nz. 172800 IN A 194.146.106.54 +ns7.dns.net.nz. 172800 IN AAAA 2001:67c:1010:13::53 +ns99.dns.net.nz. 172800 IN A 202.46.190.131 +ns99.dns.net.nz. 172800 IN AAAA 2001:dce:2000:2::131 +iq.dns.cocca.org.nz. 172800 IN A 203.119.84.235 +om. 172800 IN NS ns1.registry.om. +om. 172800 IN NS ns2.registry.om. +om. 172800 IN NS cctld.beta.aridns.net.au. +om. 172800 IN NS cctld.alpha.aridns.net.au. +om. 172800 IN NS cctld.delta.aridns.net.au. +om. 172800 IN NS cctld.gamma.aridns.net.au. +om. 86400 IN NSEC onl. NS RRSIG NSEC +om. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eV1UmMROoW9l4sF/LnXdQ3iZHU5yFOMh8BE2/uiYKdetPYgysDIPjarr /6tYSys3JEgQE8iWpmUSe760koz9GwMaqSUuXVrf0SB43/bi2NPKvGZg yIm7ZTOjCijS2XMG0uYrBfl9t52AQvcSOUhd5znIJe5aL2skto77v9F4 e/4= +ns1.registry.om. 172800 IN A 185.27.90.101 +ns2.registry.om. 172800 IN A 185.27.91.69 +onl. 172800 IN NS a0.nic.onl. +onl. 172800 IN NS a2.nic.onl. +onl. 172800 IN NS b0.nic.onl. +onl. 172800 IN NS c0.nic.onl. +onl. 86400 IN DS 28830 7 1 43C8D1479E0457EAD6020024017FDEC8CCE2260D +onl. 86400 IN DS 28830 7 2 18EB9FAA635692104783C62A7F6F51AA17365BB07689093A247183D3 9B88338D +onl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qBLo4E+nL6t0Wp6SmplF55sdsuUbNnodGL4G6QRut1Bw8eJmeUVTSVq8 nBpeLzxQ5nuVUXOll1vjNENSmB979r+5nkVSPoSRvbdujIta5SVLq8fC lcYKMbPOfClaoNORRXYSsQ72ugxxpqtFpomIMduRNR72YIQYcHWl8DJs DwM= +onl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VFaP3Z48obqQDIj/TFRk8gxUXyhK9RvdRDhdsW1CMHZ7y5AEghSfd2u3 KtVVgNoV4AqPM8YHzC7GEnp6AYu9dXwT60UofHhGFXdafwZ/cg0CSR9b 5CSvuj45YBCvdafvzjeJ1igvqVatCp4eUtk04UB34ogwKEAr+vr80Y/+ qww= +onl. 86400 IN NSEC org. NS DS RRSIG NSEC +a0.nic.onl. 172800 IN A 65.22.136.1 +a0.nic.onl. 172800 IN AAAA 2a01:8840:86::1 +a2.nic.onl. 172800 IN A 65.22.139.1 +a2.nic.onl. 172800 IN AAAA 2a01:8840:89::1 +b0.nic.onl. 172800 IN A 65.22.137.1 +b0.nic.onl. 172800 IN AAAA 2a01:8840:87::1 +c0.nic.onl. 172800 IN A 65.22.138.1 +c0.nic.onl. 172800 IN AAAA 2a01:8840:88::1 +org. 86400 IN NSEC pa. NS DS RRSIG NSEC +org. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CZHMdBATY9xtJVjDSntHxMijpLP2EhWPtJAMqpkl3P4b3BfK1FkAD4mC DmONL3eHJu+2gm0fbG2DRn8EO5GnEMpVrTD6NSbpEz+LxRnAqNfXCVXE 6f589A26+tP2wl5FAo+PFlPIEFCVV1I0RWEDePGuVkuwtCKgbmfBaYtj 6ks= +org. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . i7KeQgTQ6z1nJY63Du4U0O2gUYPiiTzSy74yWzP+XyJjC+FKwPI3teKP FcayvMp9G9eR0y9IfWBYTu1Iz7jSkKWULk5UTzUTGuU4NuApp8STi0FU VRVO0QH0PlSPu5boPt9Q5k+nOweB/l7TY+hkhxAzsbTrMihXfvnkztTE Z4Q= +org. 172800 IN NS a0.org.afilias-nst.info. +org. 172800 IN NS a2.org.afilias-nst.info. +org. 172800 IN NS b0.org.afilias-nst.org. +org. 172800 IN NS b2.org.afilias-nst.org. +org. 172800 IN NS c0.org.afilias-nst.info. +org. 172800 IN NS d0.org.afilias-nst.org. +org. 86400 IN DS 21366 7 1 E6C1716CFB6BDC84E84CE1AB5510DAC69173B5B2 +org. 86400 IN DS 21366 7 2 96EEB2FFD9B00CD4694E78278B5EFDAB0A80446567B69F634DA078F0 D90F01BA +b0.aero.afilias-nst.org. 172800 IN A 199.254.52.1 +b0.aero.afilias-nst.org. 172800 IN AAAA 2001:500:1e::1 +b2.aero.afilias-nst.org. 172800 IN A 199.249.123.1 +b2.aero.afilias-nst.org. 172800 IN AAAA 2001:500:4b::1 +d0.aero.afilias-nst.org. 172800 IN A 199.254.54.1 +d0.aero.afilias-nst.org. 172800 IN AAAA 2001:500:20::1 +b2.asia.afilias-nst.org. 172800 IN A 199.249.122.1 +b2.asia.afilias-nst.org. 172800 IN AAAA 2001:500:4a::1 +b0.cctld.afilias-nst.org. 172800 IN A 199.254.60.1 +b0.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:26::1 +b2.cctld.afilias-nst.org. 172800 IN A 199.249.124.1 +b2.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:4c::1 +d0.cctld.afilias-nst.org. 172800 IN A 199.254.62.1 +d0.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:28::1 +b0.in.afilias-nst.org. 172800 IN A 199.253.56.1 +b0.in.afilias-nst.org. 172800 IN AAAA 2001:500:50::1 +b2.in.afilias-nst.org. 172800 IN A 199.249.125.1 +b2.in.afilias-nst.org. 172800 IN AAAA 2001:500:4d::1 +b0.info.afilias-nst.org. 172800 IN A 199.254.48.1 +b0.info.afilias-nst.org. 172800 IN AAAA 2001:500:1a::1 +b2.info.afilias-nst.org. 172800 IN A 199.249.121.1 +b2.info.afilias-nst.org. 172800 IN AAAA 2001:500:49::1 +d0.info.afilias-nst.org. 172800 IN A 199.254.50.1 +d0.info.afilias-nst.org. 172800 IN AAAA 2001:500:1c::1 +b2.me.afilias-nst.org. 172800 IN A 199.249.127.1 +b2.me.afilias-nst.org. 172800 IN AAAA 2001:500:4f::1 +b0.mobi.afilias-nst.org. 172800 IN A 199.254.56.1 +b0.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:22::1 +b2.mobi.afilias-nst.org. 172800 IN A 199.249.126.1 +b2.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:4e::1 +d0.mobi.afilias-nst.org. 172800 IN A 199.254.58.1 +d0.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:24::1 +b0.org.afilias-nst.org. 172800 IN A 199.19.54.1 +b0.org.afilias-nst.org. 172800 IN AAAA 2001:500:c::1 +b2.org.afilias-nst.org. 172800 IN A 199.249.120.1 +b2.org.afilias-nst.org. 172800 IN AAAA 2001:500:48::1 +d0.org.afilias-nst.org. 172800 IN A 199.19.57.1 +d0.org.afilias-nst.org. 172800 IN AAAA 2001:500:f::1 +b0.post.afilias-nst.org. 172800 IN A 65.22.1.1 +b0.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:1::1 +b2.post.afilias-nst.org. 172800 IN A 65.22.5.1 +b2.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:5::1 +d0.post.afilias-nst.org. 172800 IN A 65.22.3.1 +d0.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:3::1 +b0.pro.afilias-nst.org. 172800 IN A 199.182.1.1 +b0.pro.afilias-nst.org. 172800 IN AAAA 2001:500:c1::1 +b2.pro.afilias-nst.org. 172800 IN A 199.182.40.1 +b2.pro.afilias-nst.org. 172800 IN AAAA 2001:500:e1::1 +d0.pro.afilias-nst.org. 172800 IN A 199.182.17.1 +d0.pro.afilias-nst.org. 172800 IN AAAA 2001:500:d1::1 +b0.xxx.afilias-nst.org. 172800 IN A 199.115.153.1 +b0.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a1::1 +b2.xxx.afilias-nst.org. 172800 IN A 199.115.157.1 +b2.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a5::1 +d0.xxx.afilias-nst.org. 172800 IN A 199.115.155.1 +d0.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a3::1 +b.ci-servers.org. 172800 IN A 82.103.139.220 +c.ci-servers.org. 172800 IN A 194.146.106.86 +c.ci-servers.org. 172800 IN AAAA 2001:67c:1010:22::53 +ns.icann.org. 172800 IN A 199.4.138.53 +ns.icann.org. 172800 IN AAAA 2001:500:89::53 +ns-ext.isc.org. 172800 IN A 204.152.184.64 +ns-ext.isc.org. 172800 IN AAAA 2001:4f8:0:2::13 +sns-pb.isc.org. 172800 IN A 192.5.4.1 +sns-pb.isc.org. 172800 IN AAAA 2001:500:2e::1 +ams.sns-pb.isc.org. 172800 IN A 199.6.1.30 +ams.sns-pb.isc.org. 172800 IN AAAA 2001:500:60::30 +sfba.sns-pb.isc.org. 172800 IN A 149.20.64.3 +sfba.sns-pb.isc.org. 172800 IN AAAA 2001:4f8:0:2::19 +tld3.ultradns.org. 172800 IN A 199.7.66.1 +tld4.ultradns.org. 172800 IN A 199.7.67.1 +tld4.ultradns.org. 172800 IN AAAA 2001:502:100e::1 +pa. 172800 IN NS ns.cr. +pa. 172800 IN NS ns.pa. +pa. 172800 IN NS ns.dns.br. +pa. 172800 IN NS ns.nic.pa. +pa. 172800 IN NS ns2.pa. +pa. 172800 IN NS ns-ext.nic.cl. +pa. 172800 IN NS sns-pb.isc.org. +pa. 86400 IN NSEC pe. NS RRSIG NSEC +pa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X59IkUGGsZYEk7XPR9+zlOWeTgxWJ+hK9F1iGvbEd4aqFjMuBoF65HVH ojHxEeaE+x2ihS032aOa7CCNEw0/QlP8mYFW7n6hyak/TVoSNFlc5+Md nzB3nXfEurfhq0rha8JufJshaeedycGQSP8hXkDzcTcbDNvWcpB8Lc55 k60= +ns.nic.pa. 172800 IN A 168.77.8.4 +ns.pa. 172800 IN A 168.77.8.2 +ns2.pa. 172800 IN A 168.77.8.7 +pe. 172800 IN NS pch.rcp.pe. +pe. 172800 IN NS pe1.dnsnode.net. +pe. 172800 IN NS quipu.rcp.net.pe. +pe. 172800 IN NS sns-pb.isc.org. +pe. 86400 IN DS 7981 8 2 7C4B12C0D916694718131C7B7607561393FB86E2A3159CE7A74EA9E2 9AFB26F3 +pe. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s9bH5aNW4PZnhsfWjJWTZ9FVV7DlOoH8FVi+fRt31fP7WBanJDv2h/2H dwo88CY02+vqnH+VJgsSaDnykAXnN21nj2dLupOnPzngsoJxz1xtieX9 YhvxSPbX0n7eR/crM55Fq0bxbGpK7bj9CnjO6CLvO7t4mJ5O067DdKWR nVM= +pe. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cMueciERAc7QoQyUDBN3A2Y8b5eleQEDTIasLmWZr0ao2Nw/sMh+QM5Q SvLOeKBeWnh7/+nuxzkttyLNNRHAy7kubqc4KxXioAm6I6NGzTl7Ensl +Ubq/4RbMbPyZApu+sr7+xlm2j9gsjpi6V0tp/z3ocwb2IFVGB2zI6Zq e9o= +pe. 86400 IN NSEC pf. NS DS RRSIG NSEC +quipu.rcp.net.pe. 172800 IN A 200.1.176.4 +pch.rcp.pe. 172800 IN A 204.61.216.85 +pch.rcp.pe. 172800 IN AAAA 2001:500:14:6085:ad::1 +pf. 172800 IN NS ns1.mana.pf. +pf. 172800 IN NS ns2.mana.pf. +pf. 86400 IN NSEC pg. NS RRSIG NSEC +pf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jutMcp+pp73Qeans2qoGOBLPLUlKns4qMfqtFGAlg7WmyhaSFWwub52E YpjunLoe9JrUqy2MYoh3oqySlFfUoMYydNLUXmnRbBX2+h8Mdq1mrZNH afxHxBZ3eLFj/o2LIDyzJ8+6KnhIjDWG77xma0C+fBI+x2cSmko4GCRK MNc= +ns1.mana.pf. 172800 IN A 202.3.225.10 +ns2.mana.pf. 172800 IN A 202.3.225.20 +pg. 172800 IN NS ns.uu.net. +pg. 172800 IN NS ns1.tiare.net.pg. +pg. 172800 IN NS ns1.unitech.ac.pg. +pg. 172800 IN NS ns2.tiare.net.pg. +pg. 172800 IN NS munnari.oz.au. +pg. 86400 IN NSEC ph. NS RRSIG NSEC +pg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HnwW2HmS+zGJ7xMVZQSaAJAvqUqTQk6Iaea0F0UO/X/rsMWWQiMaCkUa LN1PZwpP/d70jKMoTzi9PQldAAxKXh1npPdXgtNZiSOM6F4XNnHUgKti uzOAvnCsBrI91RoYw6na3btUaQC8wi0J5RpB+lDuJx671n/vsAKwJaR0 Eyo= +ns1.unitech.ac.pg. 172800 IN A 202.1.32.49 +ns1.tiare.net.pg. 172800 IN A 202.165.192.23 +ns2.tiare.net.pg. 172800 IN A 202.165.192.24 +ph. 172800 IN NS ph.cctld.authdns.ripe.net. +ph. 172800 IN NS ph.communitydns.net. +ph. 172800 IN NS ns2.cuhk.edu.hk. +ph. 172800 IN NS sec4.apnic.net. +ph. 172800 IN NS sns-pb.isc.org. +ph. 86400 IN NSEC photo. NS RRSIG NSEC +ph. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Xr2UrlKV8hATZYI28W+A7vGCxkEvME3VeK6LWa/3bJVWIZknp4F+nopC kQsl4zYPPY/idKvVB1a5lz+qyhQ54tFRQYVwUVrBQxy9ssdJwtSoYtlW EAGw+yME7v+bgeKwGPPGXxmdrTAmvLGDitTJOEjDOgSAAmIkP+EnImml /oM= +photo. 172800 IN NS a.ns.uniregistry.net. +photo. 172800 IN NS tld.isc-sns.com. +photo. 172800 IN NS tld.isc-sns.net. +photo. 172800 IN NS tld.isc-sns.info. +photo. 86400 IN DS 11884 5 1 5452469C278FB3EF65B9D47B709DBDDA025FD6DA +photo. 86400 IN DS 11884 5 2 80ADEC219929825CE490E0B9CAAC5CAD806FC8AD4C4E0D48017F62F5 408D6FF5 +photo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cPznTfMON80nSvRW/EtBd9wo/zgl4iWCz1WryAplw/fIER/+jQfyojOR w5tRv+GUwuOxzRqRwbo6CFeZnif/kFr4RqUiBk2dBuNOA2WzdViVaGqS Ir/3A7PSpMrTxW2qzCP5zZCYO29KYmjnGYXRpdO0rSn0QAzIzKE+ix2P 86A= +photo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i24O/bbxfdJ+wO0oND3ySNKhllXm/m+j9/pyvUlBSaGjxvYbqKD0tJUZ XGurr38T/HM107EEYoIApxxIGjlNIhgto5VWqM9m7yUHBEqjJxI+Jd24 Xj8DFW8WduBJjpi0FND0NAgYBAqUUKBm2tpOQV1y+d4RYxOUY2+hQ9YG MjU= +photo. 86400 IN NSEC photography. NS DS RRSIG NSEC +photography. 172800 IN NS demand.beta.aridns.net.au. +photography. 172800 IN NS demand.alpha.aridns.net.au. +photography. 172800 IN NS demand.delta.aridns.net.au. +photography. 172800 IN NS demand.gamma.aridns.net.au. +photography. 86400 IN DS 59776 8 2 D456A9A0648D15BA511E0CEC9AE8BE1B39E7F8443FB037E58E9313CE 9275F3CC +photography. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eeDIAOSM8AUeMeCB9hRUT6N5BsKFXHgXmO3q4cRvqL8u0dX0z8KjIGUX iJ664NpQ8TxhlVxHb4hv42RBCKZUPdbjT7vN6S/o0ZO8k8Ubat/Ze3Z0 9klIMbhXWSira/VAJCbeg5zs4f6sWSV/OEte7/0+mzFTq503Bzo9e+wp 0yg= +photography. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hsW6xmQtM2mdUJp+DF/7esNJRO1Gsq0ObLvlU3sP6XwAYtQ62wrOVP9C Uc3ElSzCGIWxh0dJBPcbStOkid+1tjSt40h1TfgckF7Y7QZUhzp/XtS6 AnyOM5rKXKa2zKIAqRmv6TZJeZZ22WHDuUyEJqLAIjUg/VW+p/XOXoq2 ScQ= +photography. 86400 IN NSEC photos. NS DS RRSIG NSEC +photos. 172800 IN NS demand.beta.aridns.net.au. +photos. 172800 IN NS demand.alpha.aridns.net.au. +photos. 172800 IN NS demand.delta.aridns.net.au. +photos. 172800 IN NS demand.gamma.aridns.net.au. +photos. 86400 IN DS 45481 8 2 19BD8DD90A5EC536C0474423CDD38E482628539FD8A4B95EBCE1C0B3 676F9A68 +photos. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZjmRP6ggbtDJrgwuKpo0oM6hU1Io4tap7spqdnKOcNQnUAofnhqpuCdN NPu0nIGyvND04QcBrwgRZHeKhov6QL5QivdegPSPks6pmnwte+YC1zT/ JiEUhq11Do0LT/I2eaDKPwCwy6LSv+W+mB7X2AJtdg2v4lNNZSV0DFPk hZ4= +photos. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RQBDquloOqtb89rcXjWK9g2Ve9KNylXky6hiznhF2RRS7o99f2wvXwAe Uzjb0f3Nfz3LcfrPkWUPe3gbjtVnrwcEwiDxbRvVo6woctLyv5Fs6ITh xo5nfEnz65bzFFFQC+VdcCeRcmt6m3op0voWDodpWALhCuCxUgXzpwmA +98= +photos. 86400 IN NSEC pics. NS DS RRSIG NSEC +pics. 172800 IN NS a.ns.uniregistry.net. +pics. 172800 IN NS tld.isc-sns.com. +pics. 172800 IN NS tld.isc-sns.net. +pics. 172800 IN NS tld.isc-sns.info. +pics. 86400 IN DS 22037 5 1 128E4D7B181F80FBEF51811B5396FFE83E6517BD +pics. 86400 IN DS 22037 5 2 FAA0D15E50168840E97AAA27E7D6F010ECE0C3BDCFD7F26827DA1B06 2AAD9291 +pics. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . EuTBhrn36pMIl05YEjvUqH1sp1NSn8vEITbJFZmz80LA964LLhMMSuKp Erf0s3TPDpktgw7pnGGd6Y2K/fGXXRzDi2lxGZIS3I66z3h5ebsd+Efl XfoK6HhDpoVkIMCYwj4ug4xNIx4eY5SDbdF0CGwenrxj8nFHk0mFu0hf /mI= +pics. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . c26+q0rGVDC3YR6oEyUwoDDYpDdNrzK5dgSDx4cMfD/doUwuCCtpRV+S o19huDLhNx1B1nXhmJnGOBtIAHBu8TJTBbkkoHcge+wa0pQyn9zqdcMD e2XPixpVDQ21jpqU5TaiRfdmTAhu4eOWnTYHppdvSVb67dZDNow2/8WV 8Ls= +pics. 86400 IN NSEC pink. NS DS RRSIG NSEC +pink. 172800 IN NS a0.nic.pink. +pink. 172800 IN NS a2.nic.pink. +pink. 172800 IN NS b0.nic.pink. +pink. 172800 IN NS c0.nic.pink. +pink. 86400 IN DS 45756 7 1 D4496FF46E35CC9A206DA310B24C36AF205A2BD1 +pink. 86400 IN DS 45756 7 2 71CDA61FCA2B38FD3C93B8A69B2300CD7BC91FF32C306F1F3F831BBA 7686A149 +pink. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qTvAg2gKWIYMHAADz9b284lFhp+3FsL5DjmW7hSoqHpbPoQ+OUPliSsW rmALjk05+95gSjjJ918M6aWWMD5991oI2wqAOzj84ZCGvMv4flHbaVlA F9Q0bgqi31I9h7znUxYLfp4mcUon0R4iySowz8LaBCWC6Qwd38t8Dp7O Zx4= +pink. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DC+p8MqeY58+bilojEPUg78MpdsVRGsF+2CA6rwQzgQNon9WjFCigG/i eUH3ibuAYCXMmO7Tt46G7OO1sTpJb+zkSrrwKJ7c5jaTHY6C3DOnZoTn SM4tUwVFjt9MbfHy84eVqsUO01erkznhyNZP745Jb6jRgmVCXq+NaXUz Ulc= +pink. 86400 IN NSEC pk. NS DS RRSIG NSEC +a0.nic.pink. 172800 IN A 65.22.28.17 +a0.nic.pink. 172800 IN AAAA 2a01:8840:1e::17 +a2.nic.pink. 172800 IN A 65.22.31.17 +a2.nic.pink. 172800 IN AAAA 2a01:8840:21::17 +b0.nic.pink. 172800 IN A 65.22.29.17 +b0.nic.pink. 172800 IN AAAA 2a01:8840:1f::17 +c0.nic.pink. 172800 IN A 65.22.30.17 +c0.nic.pink. 172800 IN AAAA 2a01:8840:20::17 +pk. 172800 IN NS root-b.cloud9global.net. +pk. 172800 IN NS root-p.pknic.pk. +pk. 172800 IN NS root-s.pknic.pk. +pk. 86400 IN NSEC pl. NS RRSIG NSEC +pk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . THHnMZ5hFGFV04Q1ShS6aPDNSCUn8q1MiZa8IV6/+QVB+lNVF5pi+Jt2 MBEg65O0oXb7shsSx4op3HSzRZ+ekFW74TQWwPPhARRg7qMKn1NA3igE mSUjJpcT3E4DssVOoOEYid5hjwNJ+vSaDj5SnnSLIGx2nDMWTiKoP40y 2P4= +root-p.pknic.pk. 172800 IN A 203.128.7.123 +root-s.pknic.pk. 172800 IN A 119.81.34.90 +pl. 172800 IN NS a-dns.pl. +pl. 172800 IN NS c-dns.pl. +pl. 172800 IN NS d-dns.pl. +pl. 172800 IN NS e-dns.pl. +pl. 172800 IN NS f-dns.pl. +pl. 172800 IN NS g-dns.pl. +pl. 172800 IN NS h-dns.pl. +pl. 172800 IN NS i-dns.pl. +pl. 86400 IN DS 27236 8 1 DC037E771F7C4CEA0C6BB65C6EDA62DAE18693A0 +pl. 86400 IN DS 27236 8 2 16E41465F64D6FE884E5079FD2781C3C3585E899D7EB495E47138CB1 D7DFC98C +pl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VgUtqoTAWv6OjqqAuEf+1ln8+s7574jGqDReqYyk+dD+WFlo4cpx1NO/ 9dGobBno+p0hX95uAi4/jNoALOee7ALN06Kp+3AhPNdylpFhlA9aSj1I Sgm81X6qTxoS3rYOhk/v8JtN7V/YKHufKwCbK8VUNrC8r6pxm5avg590 INY= +pl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zur+VSxE2Nk+L3ORZFHso+z00Yzlj6UkN2llva2f2G7M8ky++gJnvRWG 269iqk4h/IrC+74NnQ5V+bVac/lVtW9ctjtlbFlOVtQvZfyviAJ3RoiW ZDEGfG02cT6dp2HAnerElVoBsn0M2XMfPHlMkWzmGbc3ty8YDAQELIUO KKs= +pl. 86400 IN NSEC plumbing. NS DS RRSIG NSEC +a-dns.pl. 172800 IN A 195.187.245.44 +c-dns.pl. 172800 IN A 195.47.235.226 +d-dns.pl. 172800 IN A 213.172.174.70 +e-dns.pl. 172800 IN A 195.80.237.162 +f-dns.pl. 172800 IN A 217.17.46.189 +f-dns.pl. 172800 IN AAAA 2001:1a68:0:10::189 +g-dns.pl. 172800 IN A 149.156.1.6 +g-dns.pl. 172800 IN AAAA 2001:6d8:0:1::a:6 +h-dns.pl. 172800 IN A 194.0.1.2 +h-dns.pl. 172800 IN AAAA 2001:678:4::2 +i-dns.pl. 172800 IN A 156.154.100.15 +plumbing. 172800 IN NS demand.beta.aridns.net.au. +plumbing. 172800 IN NS demand.alpha.aridns.net.au. +plumbing. 172800 IN NS demand.delta.aridns.net.au. +plumbing. 172800 IN NS demand.gamma.aridns.net.au. +plumbing. 86400 IN DS 3256 8 2 BB346E545259EA75712223FFD494EABE12726A788828C02BD03B979E D7976BD7 +plumbing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eKmjJeNGPCgYPt3w22EwCzGQeggdz3rOXyEE+t6SLkXfBFmHE7NACoZ9 NoVLVUl6DOpmX+rcjxyVb9xc4U+c3423vT7aLVaupkFO6bBm3nM/8ykw HvePbKGZRIsH2I3gB70HKbhb1pGKDQFTDdzJJ6TV3pYsCUgJ9DnoAtFK p5c= +plumbing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MOU0LHRNU3t8CNS4Niy5xj4zsmmV5MKR9xt57Jqt7PRgnpTMB9zIPa79 XRswaiww/jocKDKUYUJlY1fyykg3uivLAbgb9G1JVUnr6THa64aPOjWW xa0c8hpSYQLQZO8ysJ3Y7ftg7hZVRVX7R61mdaSeTaOg/q+Fwr10VNCj Jvk= +plumbing. 86400 IN NSEC pm. NS DS RRSIG NSEC +pm. 172800 IN NS d.ext.nic.fr. +pm. 172800 IN NS d.nic.fr. +pm. 172800 IN NS e.ext.nic.fr. +pm. 172800 IN NS f.ext.nic.fr. +pm. 172800 IN NS g.ext.nic.fr. +pm. 86400 IN DS 35911 8 2 BCCB9BB0CAB68D8C3C64A4FF4ECF3309743D14C5366738F54D4C031E 74EA99F1 +pm. 86400 IN DS 56192 8 2 B49959AB8FFF95A45BF5F7130AB1A64C7EF1CEFB6F50CA1BE0032815 03325F67 +pm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z+XextKqTI8xzXcg3sy+vsJjKl0Pz4UQY3qjDREef7uoDz1DMsbYdrUN jn42NHUwqicmtqF9kECfnvQaSdIjQ+DAezTIBgxsHw223gPdLkkp6RRd /DKUmw91axZq0X0iBsWmJFe3ifEAiTtpQxtZdziq+BTB2Iao3tn1GuPW rh0= +pm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RvN5euxEgHiQmanx7CBLfUjN4ySTN+bfeOC6mqN0Yo4rJHJvAuDYhR7o F0m/B6/JVslGdeLGUlauF8LijoHGKY6MOvn3XB0jQL4OTqC2XaPDMrVR gJaZhTPjJ78ak/4Wk+mMBleAZFgINUREL85aA7RjnFQWYqbBYqW1zjDz xS4= +pm. 86400 IN NSEC pn. NS DS RRSIG NSEC +pn. 172800 IN NS ns0.pitcairn.net.pn. +pn. 172800 IN NS ns2.pitcairn.net.pn. +pn. 172800 IN NS fork.sth.dnsnode.net. +pn. 172800 IN NS sns-pb.isc.org. +pn. 86400 IN NSEC post. NS RRSIG NSEC +pn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ecz/QV3h/zMP8HEKnNxreVg3e8CJIlCH0pxHDQS5dQMiHkQe4E3imhMz Kp7OBQw6fsp5SqJrQetO84Qrwhy6dCwTfKM/KZqW19H8DhyKFoTEaSfd lPwWGaAkOzX9zMLQlp4x7vDUgMAmdcisw8Q5zT+3BC0vH/WqEw5uTcVB HzI= +ns0.pitcairn.net.pn. 172800 IN A 173.230.153.180 +ns2.pitcairn.net.pn. 172800 IN A 80.68.93.100 +post. 172800 IN NS a0.post.afilias-nst.info. +post. 172800 IN NS a2.post.afilias-nst.info. +post. 172800 IN NS b0.post.afilias-nst.org. +post. 172800 IN NS b2.post.afilias-nst.org. +post. 172800 IN NS c0.post.afilias-nst.info. +post. 172800 IN NS d0.post.afilias-nst.org. +post. 86400 IN DS 32869 7 1 6BDF7F6E05265E97B88E44C56D86E686FDB75AC7 +post. 86400 IN DS 32869 7 2 0333CB4618C912888F923F60E876BA9B160602CCED7B3B8BF35C5222 89C84DE7 +post. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HziTalmCgzAW6LLf0ja9tOyi//AqMWtKKGrKT/dNZIIDuxBa0Q9Slyjd 1dAnO58gKHzN2cSldjYOmebMDywSDXGgD+79eLYRsg9R+/FBnr3CuY3i cBgw31bQoBfshL2NhxIaeZwQ4bQyO7oaohvFy75ufqQAKHsGYfZFNqpI p3c= +post. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dkZFfuUR0kqR3WN5Q6nPjDth2PIrLmIPXO2gBb+aWrS5HsTnapGm4nPQ sA+R219YNGvVDXt2Br5iwqAKsmTS2rz62Xds1bAXn7vycn76JDN0WPBH YhbSh+iJ+x42rcdRQTR1UxCOwI59VW29dJPz4HNdxIrVwO7ptUiNR+vm C3w= +post. 86400 IN NSEC pr. NS DS RRSIG NSEC +pr. 86400 IN NSEC pro. NS DS RRSIG NSEC +pr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . I3Owa/VHX+K9e0ri4ukWoA5OonXCKzzPzvD0ZArV8JOX3CIXy7uB4mkx R7rmuzV3ogZ0pKgZOlsjBLYH7LHbgSsjG+YulZ4mcRnYOOl3Z17ZTcXy JgsQXnGdAxFnGMBRegGuV/dIG0uwL1Tkltbi8lfjMJfbnCDaexSNjuPj VQg= +pr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . N2YYlscNZSGSUBu6jg0XcTF5vOfrVNVA0ILE4HHQaLmLJuEsQ1IpHPYK M17t81PI6QSD08942aH/MoS/7aIODxlfkawJCbOI9DDU+EO39Zqaxd2D FYUG8oPL1grhr1K+2ajjXGR32q0ewsO80m+9bW/tVkziBIU+VJUYFbKe 7ns= +pr. 172800 IN NS pr-ns.anycast.pch.net. +pr. 172800 IN NS golomb.nic.pr. +pr. 172800 IN NS pascal.nic.pr. +pr. 172800 IN NS pr-dns.denic.de. +pr. 172800 IN NS descartes.nic.pr. +pr. 86400 IN DS 53986 5 1 C2B7576022FE56A3340409053A7AA5D6EED8EB09 +descartes.nic.pr. 172800 IN A 134.202.1.120 +do-dns.nic.pr. 172800 IN A 134.202.1.121 +golomb.nic.pr. 172800 IN A 134.202.6.100 +golomb.nic.pr. 172800 IN AAAA 2001:500:10::6:100 +pascal.nic.pr. 172800 IN A 134.202.0.120 +pascal.nic.pr. 172800 IN AAAA 2001:500:10::120 +pro. 172800 IN NS a0.pro.afilias-nst.info. +pro. 172800 IN NS a2.pro.afilias-nst.info. +pro. 172800 IN NS b0.pro.afilias-nst.org. +pro. 172800 IN NS b2.pro.afilias-nst.org. +pro. 172800 IN NS c0.pro.afilias-nst.info. +pro. 172800 IN NS d0.pro.afilias-nst.org. +pro. 86400 IN NSEC ps. NS RRSIG NSEC +pro. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P+NXU4Jjo6EbjwyYeYxpN+cOZduaxQsatni5XSy1e8urZyfa3Q9qRBFp 6VqvHQTvWpe/08J42emw3G/kY+3HS9hXLgpXehIwpECjxk61m/pwx5mS CX3n82mdogKs50bxuct77RliuXVGJAcB3YOAon8tY48l+OiOTqcm32JG +jE= +ps. 86400 IN NSEC pt. NS RRSIG NSEC +ps. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ddd/n0H5e5A/Nft5fcTa/bzsCpC1rBwpnw6IYvmFQuzaYvwRdBAK3LSt wJl8TPRBHRwCMhak/NqVf/FZQCZIXBa8cqgIYvvk6VprZttwbkCN/z1I XnJ9AnBKi/9nTjP08GKKdsmTcFHNn5/jjqLWIN4+Wy2/hI1nqFFr9K3X SbA= +ps. 172800 IN NS ps.cctld.authdns.ripe.net. +ps. 172800 IN NS ns1.pnina.ps. +ps. 172800 IN NS rip.psg.com. +ps. 172800 IN NS dns1.gov.ps. +ps. 172800 IN NS fork.sth.dnsnode.net. +ps. 172800 IN NS ps-ns.anycast.pch.net. +dns1.gov.ps. 172800 IN A 213.244.82.147 +dns3.gov.ps. 172800 IN A 212.14.253.242 +idn.pnina.ps. 172800 IN A 208.64.68.4 +ns1.pnina.ps. 172800 IN A 194.6.225.20 +pt. 86400 IN NSEC pw. NS DS RRSIG NSEC +pt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Tc+7boShiDTagjE+9df1kf1UKBAiCBDWQ2HBmRwi8k7A4uyOadbmAa4A HqboF02VIcVFfdDk4UN9z0tVSWd/FHYuu7ca8050YGuvv/+/1ZfUTEtC n8zFEKDleyj6Be73Dj99I+ZLab/xIZwK10BcjsgR0mQ3vofr1N/zzWKE dLU= +pt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZJXH8zJNe7x5tn7Pnj4d4vjn2lXZqhgh8c3zB2FXhE8hgjDviW7KydkS +nPICrJ+ELJrfTLLhGyGzT+2/MAFbqEQnHvI1GuOrSCQQpOvvVK5caBH iHME56xnJNtpIvQAUPbRxAxnhudkr1jdBEYMwnb4ViOdOIWE+NFcaov5 JsY= +pt. 172800 IN NS ns.dns.br. +pt. 172800 IN NS ns.dns.pt. +pt. 172800 IN NS ns2.dns.pt. +pt. 172800 IN NS ns2.nic.fr. +pt. 172800 IN NS ns-pt.nlnetlabs.nl. +pt. 172800 IN NS sns-pb.isc.org. +pt. 172800 IN NS auth200.ns.uu.net. +pt. 172800 IN NS auth210.ns.uu.net. +pt. 86400 IN DS 18303 7 1 D071D44BF9DDF70449C5A6C37CADEB3EB3683C74 +pt. 86400 IN DS 18303 7 2 B8174233B52988D1A3517C9EF970DF7DF4900B3B211BBF5A931C4FA0 6C907F6A +ns.dns.pt. 172800 IN A 193.136.0.1 +ns.dns.pt. 172800 IN AAAA 2001:690:a00:1016:905::1 +ns2.dns.pt. 172800 IN A 193.136.2.226 +ns2.dns.pt. 172800 IN AAAA 2001:690:a80:4001::100 +ns01.fccn.pt. 172800 IN A 193.136.192.40 +ns01.fccn.pt. 172800 IN AAAA 2001:690:a00:4001::200 +ns02.fccn.pt. 172800 IN A 193.136.2.228 +ns02.fccn.pt. 172800 IN AAAA 2001:690:a80:4001::200 +ns03.fccn.pt. 172800 IN A 138.246.255.249 +ns03.fccn.pt. 172800 IN AAAA 2001:4ca0:106:0:250:56ff:fea9:3fd +phobos.fccn.pt. 172800 IN A 193.136.7.17 +pw. 172800 IN NS ns1.nic.pw. +pw. 172800 IN NS ns2.nic.pw. +pw. 172800 IN NS ns3.nic.pw. +pw. 172800 IN NS ns4.nic.pw. +pw. 172800 IN NS ns5.nic.pw. +pw. 86400 IN DS 26645 7 1 58EE332D303E2A64B7449C43AB770DAA1CA74C40 +pw. 86400 IN DS 26645 7 2 7EF397EDF4D7CA228C0F5111F5E1696CDBF279C0B6AFA48FC7E71A12 E07E5880 +pw. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z4YkvyhcALVNg/GVltQJcvRS2kt5tuk1+6SNiSEBLaCXMmy4Nwl2p3SP d/dGSBgyMlnXrpfx62LPtvKzQ7EKDacozkgAA+FsJolXcfNNbjRkTVU1 X7HGJRX7O5VeFSJCLK/4HVmOxWhbiIWcrnNJV/QBoU5TQBGznN6nKuhY iPM= +pw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aphpVFVpHkAwBeAqgl6Nizyb3stxZcxzS+YFWnyVfaf5cnXzhKpYVLpp T+eKSjqCWpHgT604+M3arXWJ4Ejd8MpuWu5WOnZIj1iawWczjQMHIG2r I+2BG4HRM7MXOZ0SkNtWI5e99jni9MCvT8nFJu0FCF5Mn6CeEYmxE9bw NVk= +pw. 86400 IN NSEC py. NS DS RRSIG NSEC +ns1.nic.pw. 172800 IN A 194.169.218.12 +ns1.nic.pw. 172800 IN AAAA 2001:67c:13cc::1:12 +ns2.nic.pw. 172800 IN A 185.24.64.12 +ns2.nic.pw. 172800 IN AAAA 2a04:2b00:13cc::1:12 +ns3.nic.pw. 172800 IN A 194.169.218.13 +ns3.nic.pw. 172800 IN AAAA 2001:67c:13cc::1:13 +ns4.nic.pw. 172800 IN A 185.24.64.13 +ns4.nic.pw. 172800 IN AAAA 2a04:2b00:13cc::1:13 +ns5.nic.pw. 172800 IN A 194.0.2.2 +ns5.nic.pw. 172800 IN AAAA 2001:678:5::2 +py. 172800 IN NS ns.cnc.una.py. +py. 172800 IN NS ns.dns.br. +py. 172800 IN NS py.cctld.authdns.ripe.net. +py. 172800 IN NS ns2.switch.ch. +py. 172800 IN NS ns3.nic.mx. +py. 172800 IN NS sce.cnc.una.py. +py. 172800 IN NS auth00.ns.uu.net. +py. 86400 IN NSEC qa. NS RRSIG NSEC +py. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hn7AqgfTxgisgzQ8EP1h56FxSd0eixVq2U8ENRq2Q6qvWUKUWktWQOHS j4o1jHrpeUDFrCN29iqH4cO0PNnFyrQGpTy0qwdMLBPKGRXqKGLLyB0O DGDIFrjkn0UEKKcaCbNRQm7aaOrJBltjeXB1+itcXXMQyQKu/H7TDLt6 qRA= +ns.cnc.una.py. 172800 IN A 200.10.228.132 +sce.cnc.una.py. 172800 IN A 200.10.228.133 +qa. 172800 IN NS a.registry.qa. +qa. 172800 IN NS b.registry.qa. +qa. 172800 IN NS c.registry.qa. +qa. 172800 IN NS d.registry.qa. +qa. 172800 IN NS e.registry.qa. +qa. 172800 IN NS f.registry.qa. +qa. 172800 IN NS g.registry.qa. +qa. 172800 IN NS h.registry.qa. +qa. 172800 IN NS i.registry.qa. +qa. 172800 IN NS j.registry.qa. +qa. 172800 IN NS k.registry.qa. +qa. 86400 IN NSEC re. NS RRSIG NSEC +qa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IrvPjCJCrpsDgs6XnBwC9HVKCmODQJR+uXaFqhEFZb+mJBPY4XOGhSLk nAUGxqZm5rrOOfc+UpP46q10v5aX1x//33UmymOJD9CwPz1x/R90OmGe MxStHoGC20vcfgj3bwtKDsZV8NGDj8AoK0Z0aa/I3rmB7rBWAdPQEajl 2JU= +a.registry.qa. 172800 IN A 178.23.16.104 +b.registry.qa. 172800 IN A 178.23.17.104 +c.registry.qa. 172800 IN A 212.77.192.10 +d.registry.qa. 172800 IN A 212.77.192.13 +e.registry.qa. 172800 IN A 212.77.192.15 +f.registry.qa. 172800 IN A 37.209.192.6 +f.registry.qa. 172800 IN AAAA 2001:dcd:1::6 +g.registry.qa. 172800 IN A 37.209.194.6 +g.registry.qa. 172800 IN AAAA 2001:dcd:2::6 +h.registry.qa. 172800 IN A 193.0.9.51 +h.registry.qa. 172800 IN AAAA 2001:67c:e0::51 +i.registry.qa. 172800 IN A 204.61.216.62 +i.registry.qa. 172800 IN AAAA 2001:500:14:6062:ad::1 +j.registry.qa. 172800 IN A 38.103.2.3 +k.registry.qa. 172800 IN A 72.52.71.3 +k.registry.qa. 172800 IN AAAA 2001:470:1a::3 +re. 172800 IN NS d.ext.nic.fr. +re. 172800 IN NS d.nic.fr. +re. 172800 IN NS e.ext.nic.fr. +re. 172800 IN NS f.ext.nic.fr. +re. 172800 IN NS g.ext.nic.fr. +re. 86400 IN DS 18007 8 2 91325EB53782EB94B7B6EA3B6FD5F05F86A0247858B160883AF01866 7101AA1A +re. 86400 IN DS 27026 8 2 FC7F430D839FA81CE34FBBC3C687834184685E3312FA3284354B00AF F6C9F2D2 +re. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fVvLBn27fBia1aH4RB84Plqpl05ig3opakvlpFigq3CUFmhd100oQJL1 GbSgdZPqkKDjeATdxHFC3Du7e+ShIQA6bzMWQpe/nziKszwXM4aLcOas iP4+BQVdZ5D6fXZ0Roh5u+vMoc9TmN8xDfT7Ls8SJHw4OCtta3JdCvw1 c+g= +re. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cMxQSeK73Wb5sR30OHpe5JjxdgFL2BbG+3VavDNKp+eLBqbpEHHwjYGe TjZPthvxohLMjDy8Y5DJM7OaEjNd2Cg+AP177gJozrnzNvItduCqDy1d 4+eQt1l2/V0B9Adc/E4fy6Mr+H2LZnK9SDP4/LIteOWfhI1IDdx/VC8m ZUw= +re. 86400 IN NSEC recipes. NS DS RRSIG NSEC +recipes. 172800 IN NS demand.beta.aridns.net.au. +recipes. 172800 IN NS demand.alpha.aridns.net.au. +recipes. 172800 IN NS demand.delta.aridns.net.au. +recipes. 172800 IN NS demand.gamma.aridns.net.au. +recipes. 86400 IN DS 7912 8 2 BD8F8D2BA244B97C11C8D26B8C5BCDA19294C5E2A1B21BF01D029F84 9F130D3B +recipes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZhW6TIuaSA35AEol0mPC/zHBs1HuBAv+RI6lRykzjWmSnHec+DjBNe0+ 7COlMrSRxSjPKbLEqlpRHZ03rnCmyaJ12ZA9PPTnFoi6I3/rDl5mdrk8 DvOltgRnYOqYuiN63C3HahdAsu6eUgMSqeAH9XhKP/JeFjj+Utsi7rvo bFk= +recipes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ovcN8NsSi9fuaB8dlpdfyzFRnp20NEMYrQu+F6OWu4gq3VBUUKqyWSfj fqMNHeHjIx/bqqGsWCo/dxYkdObpSaozM9y9ZjftlyUxRGS+OkGwPrzk ZysCPIfIzCPNSJV3T9fPbz3eg29FhbJ4F2tBMYZQAJveftGVXKPYo7fI 9EY= +recipes. 86400 IN NSEC red. NS DS RRSIG NSEC +red. 172800 IN NS a0.nic.red. +red. 172800 IN NS a2.nic.red. +red. 172800 IN NS b0.nic.red. +red. 172800 IN NS c0.nic.red. +red. 86400 IN DS 20431 7 1 429A68CBBF8ACE08D911071D13FD47892B1EFEF7 +red. 86400 IN DS 20431 7 2 7ED8016E603F6E4B0AEBDA756B01AAE19AE9C65D9A8DA32C1FD1CC74 BCE999F4 +red. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dxgOMmfJ3E2nN6nigC297SKi2AIx9KeSC5AzOSV1e3djveHXbRswoW+D 5Q5FRsQHC2wAetqbQ60crjR++G/acO4qDr/SSAuEoFGq5dUMj02df8Sm MhlfnutqDbwMF3JXqSX3cdtwFcdyqPiAhWKlovKryeJhaImc3xbHqEzC XLY= +red. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ig/J5acz+TQItg6OQNgwNue/fSOfe2QDZK3BvnTCa1vIMh5i7vbMMRBj h5HRL9Wuym5a+QQrM7j7BpsN4a4MPiIbsWH8OA7Lep6h9CXSP9w4Z4cU KlkWT27hJewdv6zVfXAIATb0M26ONmelUPFBjzJBrdl727Xpksvb6SqM a8M= +red. 86400 IN NSEC repair. NS DS RRSIG NSEC +a0.nic.red. 172800 IN A 65.22.36.25 +a0.nic.red. 172800 IN AAAA 2a01:8840:26::25 +a2.nic.red. 172800 IN A 65.22.39.25 +a2.nic.red. 172800 IN AAAA 2a01:8840:29::25 +b0.nic.red. 172800 IN A 65.22.37.25 +b0.nic.red. 172800 IN AAAA 2a01:8840:27::25 +c0.nic.red. 172800 IN A 65.22.38.25 +c0.nic.red. 172800 IN AAAA 2a01:8840:28::25 +repair. 172800 IN NS demand.beta.aridns.net.au. +repair. 172800 IN NS demand.alpha.aridns.net.au. +repair. 172800 IN NS demand.delta.aridns.net.au. +repair. 172800 IN NS demand.gamma.aridns.net.au. +repair. 86400 IN DS 28645 8 2 67D9F251132F0B9866A5CFDD96CB41D39C5634150852B2B20C4B876C 88726BFD +repair. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vZ7xpyRxi7h91nk8W/jApIgLeDsetiChMcgiLFSSSg8Flt++wFNf4o0f HhbGsjHBXOBtJdkc1wxQvoZBdk8G5Xkjh4xzIX/xuoQst26L/QPWAf/W RWb4lWwLOG4NIsK4Sb6SXJtnSSwh7l23uMcdQWWQlUg45Tb0OxzczTBc ryM= +repair. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bIEnbaTIezEnXfNDD7e2n3YCPXBqxqE+zJbR419agEvwE056MoK7HEhB G4zDkG1NmGD40niCtroeXUFx9clRloPoPvj5MzDAQdB2FLrWklJ5vKGD t4EWURYwhH49xoQsqmTD+/YlMvR7smxJNUNgHVXL1gtknUPnbiA1I3xY vmQ= +repair. 86400 IN NSEC rich. NS DS RRSIG NSEC +rich. 172800 IN NS a0.nic.rich. +rich. 172800 IN NS a2.nic.rich. +rich. 172800 IN NS b0.nic.rich. +rich. 172800 IN NS c0.nic.rich. +rich. 86400 IN DS 49764 7 1 75DDCB6A3233AD81CD65DF3138D299592937DA35 +rich. 86400 IN DS 49764 7 2 AE19443051C6CBCBB411285F529394ECBAABCC764810B4D1117C76DB 6635F74B +rich. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hpfzZJJz7mR6r98Qc0c172H+ebevdjT/ogUpWsaJfc3gYy+NE7FX+KU5 DtQw2uc8oNjrLbNGSUmCksDDsYK71LAO6LEu380Dn7MYvILlJqKZSpqW /KpncezSUuK05auO/E/B6sI35R7S/t4P32JCsP8lo0TVtv/nGiht28BA ZC4= +rich. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P9Dc8b2yvmStIoHBTltlo1sMsOh9zNHMrgzcmIdhBa7zpPxFgJyf/nxG i6rkZ1a+YodPDGAIXDJHNnWvUH3nU9zgabgm04aK+u4j+ddlwPkbFVH9 I75hKfBfmdp28IVxEFssGjY3aVJTnisl6ZyS3clUwwsc7hScLJJ35EkZ WPg= +rich. 86400 IN NSEC ro. NS DS RRSIG NSEC +a0.nic.rich. 172800 IN A 65.22.136.17 +a0.nic.rich. 172800 IN AAAA 2a01:8840:86::17 +a2.nic.rich. 172800 IN A 65.22.139.17 +a2.nic.rich. 172800 IN AAAA 2a01:8840:89::17 +b0.nic.rich. 172800 IN A 65.22.137.17 +b0.nic.rich. 172800 IN AAAA 2a01:8840:87::17 +c0.nic.rich. 172800 IN A 65.22.138.17 +c0.nic.rich. 172800 IN AAAA 2a01:8840:88::17 +ro. 86400 IN NSEC rs. NS RRSIG NSEC +ro. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HBZzAE8DBuhPu4vpgV9xARyAcTmLnjI0G/Vx3lyvT4cvFLy3/MT9bvfw bikm9N7fXaUdWAsb7LyW3A2TLJ5KejhcGx4JhU3FBqn4ZKTLgh4IQX+3 LHBkjUhZlKq7TFgxhAjGjZp6ELTUArZBT4+38gkGPnQuGJH18Qa2wUhF v9o= +ro. 172800 IN NS dns-at.rotld.ro. +ro. 172800 IN NS dns-ro.denic.de. +ro. 172800 IN NS ns-ext.isc.org. +ro. 172800 IN NS primary.rotld.ro. +ro. 172800 IN NS sec-dns-a.rotld.ro. +ro. 172800 IN NS sec-dns-b.rotld.ro. +dns-at.rotld.ro. 172800 IN A 78.104.145.6 +dns-at.rotld.ro. 172800 IN AAAA 2001:628:453:bb::6 +dns-md.rotld.ro. 172800 IN A 192.162.16.19 +dns-md.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:19 +primary.rotld.ro. 172800 IN A 192.162.16.18 +primary.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:18 +sec-dns-a.rotld.ro. 172800 IN A 192.162.16.20 +sec-dns-a.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:20 +sec-dns-b.rotld.ro. 172800 IN A 193.230.31.230 +sec-dns-b.rotld.ro. 172800 IN AAAA 2a03:5e80:0:5:193:230:31:230 +rs. 172800 IN NS a.nic.rs. +rs. 172800 IN NS b.nic.rs. +rs. 172800 IN NS d.nic.rs. +rs. 172800 IN NS f.nic.rs. +rs. 172800 IN NS g.nic.rs. +rs. 172800 IN NS h.nic.rs. +rs. 172800 IN NS k.nic.rs. +rs. 172800 IN NS l.nic.rs. +rs. 86400 IN NSEC ru. NS RRSIG NSEC +rs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . JJnmgEJDLsE/GLx6EK7k+qreyUb+kbgYlQOb+E0q4AVULeVndZ31eHx0 nqVrvZ7wVwZkEI8FSyE9VydncBspZzEj3jxjNGATINF6zR4FGMcDyRsH naidZXiFqzcqGttcJU8NFBm4/Myncnk8QnTMMcaaXBSHnRoRnY/3UbsC GgE= +a.nic.rs. 172800 IN A 91.199.17.59 +b.nic.rs. 172800 IN A 195.178.32.2 +d.nic.rs. 172800 IN A 193.0.9.107 +d.nic.rs. 172800 IN AAAA 2001:67c:e0::107 +f.nic.rs. 172800 IN A 204.61.216.32 +f.nic.rs. 172800 IN AAAA 2001:500:14:6032:ad::1 +g.nic.rs. 172800 IN A 147.91.8.6 +h.nic.rs. 172800 IN A 91.199.17.60 +k.nic.rs. 172800 IN A 192.5.4.1 +k.nic.rs. 172800 IN AAAA 2001:500:2e::1 +l.nic.rs. 172800 IN A 194.146.106.114 +l.nic.rs. 172800 IN AAAA 2001:67c:1010:29::53 +ru. 172800 IN NS a.dns.ripn.net. +ru. 172800 IN NS b.dns.ripn.net. +ru. 172800 IN NS d.dns.ripn.net. +ru. 172800 IN NS e.dns.ripn.net. +ru. 172800 IN NS f.dns.ripn.net. +ru. 86400 IN DS 51272 8 2 13ECAF18251EEC90C6BC8F16E2730F1F597F6D7E406C4A8FF1D4FD7D 760D6EEE +ru. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . RzmMo5+w+hJdAkt1sUKLQlGDKSxFL1RyMsQh3t+eEBIV6ERAsT97mdGf yrdIB/j2E1I40PuEd9jTQ5lmNFZjn8W/6dGjf2JarIuFQqtarGrZZ/4i 7qv6PFDf02IpVJj8CHQXcP4+Z6iDbw4vAtIoW2/xVUd50GLCk9EQ43IX UbI= +ru. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nI934VZxT7/5sMcdHHT2X4Uav7UhW1FnMU6F1BoJxLUyt1YkTADwkusR K+lWU/zlddwDst71B4bIPyi7UoGcz6L8QKkIwQDMwcnhNfnsxSbM6IDU BlStftZg7OpRE2nZARQGpibfjvHwun4hRv0VhPJFFFz4MmNc/I5m9o7W f4I= +ru. 86400 IN NSEC ruhr. NS DS RRSIG NSEC +ruhr. 172800 IN NS anycast9.irondns.net. +ruhr. 172800 IN NS anycast10.irondns.net. +ruhr. 172800 IN NS anycast23.irondns.net. +ruhr. 172800 IN NS anycast24.irondns.net. +ruhr. 86400 IN DS 25131 10 2 EC453960C396742EFA2EF815FA9C9DBA146E838F86F11643704C1630 424F4E78 +ruhr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . funFkYtJkRcoZNBypV35MBnf5VbqGKkNsLzPqXz303T5BSRBIw7ASbdl 0z7NjqybUnGW2W4ZiGRKHZTZBGwvY33lYwwkcOVOGsER371j3mF/ibmQ ca3qrd3WQXLw52CFKj+lF1I0ziaewVNC6gFUP6ikKJrOem7pRmUF4H88 KNw= +ruhr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rTA+Nn7DTKiGNh6M27R+ldKkLb7g7ISXaqxYNfJqAAplwZ/JxTA6Wlr8 PbpD+3BvnuBtjZy0VKyeufzSmYTARb8da8GF0LNeet0mEywRQqAYqVPF kwte6FwvF5kW8vFlQ4imI+wVtiTvjxihP/UjXB+d6wfMvhpaJgtQSh8b YSM= +ruhr. 86400 IN NSEC rw. NS DS RRSIG NSEC +rw. 172800 IN NS ns1.ricta.org.rw. +rw. 172800 IN NS fork.sth.dnsnode.net. +rw. 172800 IN NS ns-rw.afrinic.net. +rw. 172800 IN NS sns-pb.isc.org. +rw. 86400 IN NSEC sa. NS RRSIG NSEC +rw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bP/U1XBogiJKhRHNjHcTL9YuL069ZOECO9WM1vb6wi/plOpbwBQS2rT1 EcjlOThFdeOhels2vQv4hgDGPIHJeD5BenBsKGTb7FxSsOrFd8c5wOX3 BseqEfk9FUcRtTk5QeqD6kgRTkglLiFuPBTETmJjfrRsv7M1nceH8EQg 98Y= +ns1.ricta.org.rw. 172800 IN A 41.74.173.250 +sa. 172800 IN NS sa.cctld.authdns.ripe.net. +sa. 172800 IN NS ns1.isu.net.sa. +sa. 172800 IN NS ns1.nic.net.sa. +sa. 172800 IN NS ns2.nic.net.sa. +sa. 172800 IN NS rip.psg.com. +sa. 172800 IN NS sa-ns.anycast.pch.net. +sa. 86400 IN NSEC sb. NS RRSIG NSEC +sa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ts5sSPtr/Q7Iyh+T4nZA24EDij/KqAAB0b7wJVQt8LGCMKKNWJZ3eYJZ Mqc2XbvgTJ4W3YSE2J3+Wuc5kYbfUwWFoQic4ccTU33nDu2zWvlr2OFb 3KgnBee4sIkMBKKhXAIPx7wA93VftCthX28yHMAxB3ZejSkgHZS7UHGD 6gw= +ns1.isu.net.sa. 172800 IN A 212.26.18.3 +ns1.isu.net.sa. 172800 IN AAAA 2001:1490:0:800::3 +ns1.nic.net.sa. 172800 IN A 86.111.192.9 +ns1.nic.net.sa. 172800 IN AAAA 2001:67c:130:410::9 +ns2.nic.net.sa. 172800 IN A 86.111.196.9 +ns2.nic.net.sa. 172800 IN AAAA 2001:67c:130:10::9 +sb. 172800 IN NS pch.nic.sb. +sb. 172800 IN NS sb1.dyntld.net. +sb. 172800 IN NS sb3.dyntld.net. +sb. 172800 IN NS sns-pb.isc.org. +sb. 86400 IN DS 17635 8 2 27F59686A15B09DC8293FAC9C31E5BE51ABF214E1E9CD5B21CBE50F0 F311C780 +sb. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vDvgsfo67nxrLHsbC3gIzBLW+UK3Ij9I+sss8OVuF0u/Ny5MYGiRnqyj vepY18xSpOmUJCY011UKwor0y1cN6gYctVC2l8jdoHkhH6lgu+wIEXO8 1XozUhFmQs/aDeKro2ioHByd5d/4ZGToYPxUVmJhGAy6aLWyxFQm3sCg RGo= +sb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . N4lHTFzrjDx7aSpxfYgY+xIJDwauE9B6jgwSc3nV6NY4AKBGpsjG5rj1 BvxTy1QAwPwvaTmG1rTtPU+g3xCg9U1ZCv3HkYmyERM3sNmuIxwweGzc VpnHWBiWrV7eBwEQ11O9ihuYQZnFqHOKUgYOWgpr6JXeiDZGjCpJJMBC FRs= +sb. 86400 IN NSEC sc. NS DS RRSIG NSEC +pch.nic.sb. 172800 IN A 204.61.216.31 +pch.nic.sb. 172800 IN AAAA 2001:500:14:6031:ad::1 +sc. 172800 IN NS a0.cctld.afilias-nst.info. +sc. 172800 IN NS a2.cctld.afilias-nst.info. +sc. 172800 IN NS b0.cctld.afilias-nst.org. +sc. 172800 IN NS b2.cctld.afilias-nst.org. +sc. 172800 IN NS c0.cctld.afilias-nst.info. +sc. 172800 IN NS d0.cctld.afilias-nst.org. +sc. 172800 IN NS ns1.nic.sc. +sc. 86400 IN DS 32953 7 1 2989C1B61462537A50928B77A85E2AD373C50B66 +sc. 86400 IN DS 32953 7 2 E85C14114B092BF9D0B21C804CA878618BEE750ED714092180D59A20 01C3708C +sc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . laT8WpRsyBG6aKF4zBqI+EWl4wLiX0ZmcrZoFeQ94EaAWFwSqEyE3Tde 4Udo1CNRloGReZzGFAJfERYSm8/dP3nOiOIx/riKrwBpEYCk/5IRGRt6 cq9jgN6eYi2xy1GURfercK3yH2xSjsYbbZwVAeEr9SQdn7VecMdZMTbR 47U= +sc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IyMdjeqzmAasVSlhUwx5KQcuQ53SdJVqv8JW5POI9avYqwuL+s0Ecr93 4yEtU+sSll9wTG6Z4UfBOJYftvs243dani/CIX+M0VD61LVvPXoBygK8 EfTNmkiLWmxmyI57teT8L2TVov7oCCaI+9M/cpaxAKeswm5zK4KoEyhY WSw= +sc. 86400 IN NSEC sd. NS DS RRSIG NSEC +ns1.nic.sc. 172800 IN A 41.191.121.129 +sd. 172800 IN NS sd.cctld.authdns.ripe.net. +sd. 172800 IN NS ns1.coza.net.za. +sd. 172800 IN NS ns1.uaenic.ae. +sd. 172800 IN NS ns2.uaenic.ae. +sd. 172800 IN NS ans1.sis.sd. +sd. 172800 IN NS ans1.canar.sd. +sd. 172800 IN NS ans2.canar.sd. +sd. 172800 IN NS ns-sd.afrinic.net. +sd. 86400 IN NSEC se. NS RRSIG NSEC +sd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WIYHoS2jU8WcRiNfECnnRrQKRNJFWOryV5mPH3KaTZOqprSVhkjUm6Rs GTaCtmlW9Z8nYmiMIS/z4m0ZGYTeHORYZEA8LQRPYGV2XCPsI4lP42UN ZvA8zqhJZzusC1Lq0BxAV47EWkRj6OaQUA+V/N5GL+NASPW9L3CveuxT ezk= +ans1.canar.sd. 172800 IN A 196.29.180.14 +ans2.canar.sd. 172800 IN A 196.29.164.14 +ans1.sis.sd. 172800 IN A 196.29.166.134 +se. 86400 IN NSEC sexy. NS DS RRSIG NSEC +se. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SIyfdL+Qn3X0l4YyrMWTopOtyyU7CjarXRmw21zaCIvSgs2JBZM/Cp5J d4NJRgiDJlYllMZlWuqOpGWPYLTINrXWECzvztkg01c3NDEKx6QfwXLz 2P6lTeVDmrRlRForkAGFaetAF6K+GLgEg3ghnef+HplPaUdDm4ZX2S8w LMY= +se. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vOxbhZ0xRPzXD87H1fp50Zq4bvDlOQhyoy4FCoYPt/1k+W2X6p4NuHWv WhdFl3yOqVWxRF6UX8oDYss3fJbUddrgh9GD05Js3NQQwmR1XLrQsoXO oovdlbRoJjWeGols3gpQHcnhbub+AZVyes5785hLvY1U7UytyUnkW54D PQs= +se. 172800 IN NS a.ns.se. +se. 172800 IN NS b.ns.se. +se. 172800 IN NS c.ns.se. +se. 172800 IN NS d.ns.se. +se. 172800 IN NS e.ns.se. +se. 172800 IN NS f.ns.se. +se. 172800 IN NS g.ns.se. +se. 172800 IN NS i.ns.se. +se. 172800 IN NS j.ns.se. +se. 86400 IN DS 59747 5 2 44388B3DE9A22CAFA8A12883F60A0F984472D0DFEF0F63ED59A29BE0 18658B28 +a.ns.se. 172800 IN A 192.36.144.107 +a.ns.se. 172800 IN AAAA 2a01:3f0:0:301::53 +b.ns.se. 172800 IN A 192.36.133.107 +b.ns.se. 172800 IN AAAA 2001:67c:254c:301::53 +c.ns.se. 172800 IN A 192.36.135.107 +c.ns.se. 172800 IN AAAA 2001:67c:2554:301::53 +d.ns.se. 172800 IN A 81.228.8.16 +e.ns.se. 172800 IN A 81.228.10.57 +f.ns.se. 172800 IN A 192.71.53.53 +f.ns.se. 172800 IN AAAA 2a01:3f0:0:305::53 +g.ns.se. 172800 IN A 130.239.5.114 +g.ns.se. 172800 IN AAAA 2001:6b0:e:3::1 +i.ns.se. 172800 IN A 194.146.106.22 +i.ns.se. 172800 IN AAAA 2001:67c:1010:5::53 +j.ns.se. 172800 IN A 199.254.63.1 +j.ns.se. 172800 IN AAAA 2001:500:2c::1 +sunic.sunet.se. 172800 IN A 192.36.125.2 +sunic.sunet.se. 172800 IN AAAA 2001:6b0:7::2 +sexy. 172800 IN NS a.ns.uniregistry.net. +sexy. 172800 IN NS tld.isc-sns.com. +sexy. 172800 IN NS tld.isc-sns.net. +sexy. 172800 IN NS tld.isc-sns.info. +sexy. 86400 IN DS 60556 5 1 4FF0D3A66811E7DB90CD072F2A042EA0C5F03730 +sexy. 86400 IN DS 60556 5 2 FD746B08B105315B2FE64FB8863BE05DAC75AEB0DFFA84567D1CFD2A 621657A4 +sexy. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . LyCImEGi0YZek7aRqO2d7AeaLTk573SeVsSEZgYEchs1vPaZ/Et5IFZv hGBMUt1/QjrzNGXtoZb2aspjHU813EoeBuWX61WCisB7tbBTvuvKcSSa 8y8LrmNHUO5ni3krE0tcmNvZn3Rg+x3Orl9eCQPkNzOwtwhl4YVfctrs Idk= +sexy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vrjDWKPVEPp/BxkxtTyDEEGKrFOf3j10rSd00GcXBS4XveCuBRKuei7u ks+nM2pyGtNSc3caRmi5ZzvXW27dUZgbNL5hf3eNMpahpIiIUjRKFXzc 5daAPyNuPwsCBYEWVToEwvqXJx8ecWBnaZ1XSDn7lh7eHD/YCbXNaSoY NnU= +sexy. 86400 IN NSEC sg. NS DS RRSIG NSEC +sg. 172800 IN NS ns2.cuhk.edu.hk. +sg. 172800 IN NS sec3.apnic.net. +sg. 172800 IN NS dsany.sgnic.sg. +sg. 172800 IN NS sg-ns.anycast.pch.net. +sg. 86400 IN NSEC sh. NS RRSIG NSEC +sg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zpy7bFBISqK7pQu43nwD6YpJZnCnhHw4tMvZ6S9S5qsatQFaGawXQmFy uGj7CFlzLXKrVyX1J2LgswN2A65mv78RVx8KB2ucOOVem1HRrlzsyqOL Y7o/vtRuL6hmJX75BGTZukqRUHT1o8i1ICBzdz2A3R1j9p586fSqKDqZ C88= +dsany.sgnic.sg. 172800 IN A 194.0.1.16 +dsany.sgnic.sg. 172800 IN AAAA 2001:678:4::10 +sh. 172800 IN NS a.nic.sh. +sh. 172800 IN NS a.ns13.net. +sh. 172800 IN NS b.nic.ac. +sh. 172800 IN NS b.nic.io. +sh. 172800 IN NS b.ns13.net. +sh. 172800 IN NS ns1.communitydns.net. +sh. 172800 IN NS ns3.icb.co.uk. +sh. 86400 IN DS 3846 7 1 8E142703EAEABD49F84213E72015350CD3D28DF5 +sh. 86400 IN DS 3846 7 2 493B17DB412EBBA011AF0E596F2424B25C9379A9960586FFC9A2FB77 4536DE66 +sh. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vti8aGHFVjdFH8TopQpeo8NWpGVg5nEARETmrGNMu0+VwYXiB/e6o2kQ m2MSXWF5JdXXgTXcG09YbZB0Z6C4aXkHZg7/+L3oxauTqhhJT9cpxZnr gGmViIaJeAiMQlIWf3rljvpnvxocijQ7GmiO8NedtdCvWwlpHpGZ20zC G7M= +sh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eqK1FGF/LCLyvQUPQQZi06012lVqjPpKoSnYYKCqw5M35o9T7QlRnyEk uUPRmM11llTMZjzIqpn8DS0wBIqXy5WfXZreXA1Xi0U0itRIWD+mSz3k k2FpYKHpfpPPBr1/zoHDQIe5po4ImmoQSkfw4h0fmKS6CBxMll8Yrizl x3I= +sh. 86400 IN NSEC shiksha. NS DS RRSIG NSEC +a.nic.sh. 172800 IN A 64.251.31.178 +shiksha. 172800 IN NS a0.nic.shiksha. +shiksha. 172800 IN NS a2.nic.shiksha. +shiksha. 172800 IN NS b0.nic.shiksha. +shiksha. 172800 IN NS c0.nic.shiksha. +shiksha. 86400 IN DS 19339 7 1 A8F93C5CA81D7F38880F12CAD5D43F8BC522747C +shiksha. 86400 IN DS 19339 7 2 CCDBBE400E7FCE7C2CAF32B1315D1CDF09289E69988ABD89A9E0A428 0D0752AD +shiksha. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . doIix2tTk6YCAzFFi8ixO0vYxNgKaRwvQ6f5LmczNfd2k2fDG8lm7vtU 8F7GyvpdMdJeAKtWM7XcNy7ay3S08XZ8DvTUL+GoctygR+9yGISsbOK3 q1ByoyWl5PnUh/dlVKUUK6hlhh3P83qgIDJk/9opE4g62hcQLLgH9euX Os8= +shiksha. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iuNTXaoZNtZTZ0yCUQy7qxGgwsbztUu56MxfeqdFdjEdhFOMYB+Um1gu BeVL7j9jsr3oYXdb4mGzFwWWhwvji7xiqiidMZXk4uDSx2962cjkHpua 4Q/jIoH0yeWyje6P2okS5kZFq71/fV6APnNdA1/mueX+DsgN/afwChqP RMI= +shiksha. 86400 IN NSEC shoes. NS DS RRSIG NSEC +a0.nic.shiksha. 172800 IN A 65.22.32.33 +a0.nic.shiksha. 172800 IN AAAA 2a01:8840:22::33 +a2.nic.shiksha. 172800 IN A 65.22.35.33 +a2.nic.shiksha. 172800 IN AAAA 2a01:8840:25::33 +b0.nic.shiksha. 172800 IN A 65.22.33.33 +b0.nic.shiksha. 172800 IN AAAA 2a01:8840:23::33 +c0.nic.shiksha. 172800 IN A 65.22.34.33 +c0.nic.shiksha. 172800 IN AAAA 2a01:8840:24::33 +shoes. 172800 IN NS demand.beta.aridns.net.au. +shoes. 172800 IN NS demand.alpha.aridns.net.au. +shoes. 172800 IN NS demand.delta.aridns.net.au. +shoes. 172800 IN NS demand.gamma.aridns.net.au. +shoes. 86400 IN DS 48574 8 2 FFCCEBC433B0B008AB8D3113A3B009D9F399CA666883CCA43D43699C 60AA7E61 +shoes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WyJbKGOtE7GsKybHqYPsb4OvQgFJ2743xQuMKtbWsKvyb7LY9zL1H8+L JIDSB0lnfsbcWUwFfOfggQtU9jiNWJ0NaUIMvvoLt6NPQQ/Xw5oJzIXK APwzlTYOb9lmATQKTEszGIVBEz54WjMCVrMSKEDPyiZ7EwWdBZDqrj5/ J30= +shoes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . afXXRy29svIUh34pSOlU/HDEYt34zlUAzG5CJfE6tHoo57i0NqzdTS/N 5XseYIxzb6AOQ8YbBX9qOhn0IB9CYyrrZ+uxB6QIoDXAzx0MIVMUxx1Q 2aDZy8819vSRpKIFuu8tTjuS3Hah+OA3VKOp+A8pIrgqFjdCEFlzWyhs FKs= +shoes. 86400 IN NSEC si. NS DS RRSIG NSEC +si. 86400 IN NSEC singles. NS DS RRSIG NSEC +si. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cL66vq9S2CUn9Cdztw1FoPeHEVg+tzu1bF7tK0jKSywmfNGAzadYYpjY Cqodj2qFixXyyw8zQ2gFa3So9iTh5qb1FMDGhMe/rMnhmpbItC5BaZTD fnRFjUymvFqyAk5cEqaN0WrzYkNrSIX0dw73T6P2ZdTAw9zNrRUxO9WY T+U= +si. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tVU/MtvkDOmlWx0R11d8CVaZ8oX1PsU4YISF7/IR6ggGp4CjOeu0Gsxe pzdF+4QsyiJbbnYhJD7uW3YuPhFWSXTKAPLNDgrJLCNwPZnVJGJxLqxh JCPYaPhTHRCIhYsKUSljulXvnvR48JpaQG0ASNIN/Ks+K97rQ9GGdDce fUI= +si. 172800 IN NS b.dns.si. +si. 172800 IN NS c.dns.si. +si. 172800 IN NS d.dns.si. +si. 172800 IN NS e.dns.si. +si. 172800 IN NS f.dns.si. +si. 172800 IN NS g.dns.si. +si. 172800 IN NS h.dns.si. +si. 172800 IN NS sss.dns.si. +si. 86400 IN DS 17770 8 1 7BF07EAD2EBA601C72225CD05C26A8F0A3B37600 +si. 86400 IN DS 17770 8 2 306AEC05741E1F03BD3B8DD5B4503F338EFF7F8A5F61D9F6EC19A7FB 9DE65FB2 +ns2.arnes.si. 172800 IN A 193.2.1.91 +ns2.arnes.si. 172800 IN AAAA 2001:1470:8000::91 +b.dns.si. 172800 IN A 193.2.1.91 +b.dns.si. 172800 IN AAAA 2001:1470:8000::91 +c.dns.si. 172800 IN A 192.93.0.4 +c.dns.si. 172800 IN AAAA 2001:660:3005:1::1:2 +d.dns.si. 172800 IN A 130.59.1.30 +d.dns.si. 172800 IN A 130.59.10.30 +d.dns.si. 172800 IN AAAA 2001:620::1 +e.dns.si. 172800 IN A 63.243.194.3 +e.dns.si. 172800 IN AAAA 2001:5a0:10::3 +f.dns.si. 172800 IN A 194.146.106.62 +f.dns.si. 172800 IN AAAA 2001:67c:1010:15::53 +g.dns.si. 172800 IN A 194.0.1.20 +g.dns.si. 172800 IN AAAA 2001:678:4::14 +h.dns.si. 172800 IN A 204.61.216.54 +h.dns.si. 172800 IN AAAA 2001:500:14:6054:ad::1 +sss.dns.si. 172800 IN A 81.91.161.101 +singles. 172800 IN NS demand.beta.aridns.net.au. +singles. 172800 IN NS demand.alpha.aridns.net.au. +singles. 172800 IN NS demand.delta.aridns.net.au. +singles. 172800 IN NS demand.gamma.aridns.net.au. +singles. 86400 IN DS 12355 8 2 639127B308DF1CA7A0F1CF1876BA0F72668A75E5816BEF29D256BF54 E47A3D8E +singles. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iU6PpNfWR8pDWNQqfFEVyDYpBzir89iUSfV8SEGukJUQTM0BpDqBUZ24 q8pEmWGjbnGYWBgMSMuuRjL5REohieERMwPSV5Xo7l1sF/tl8mACUrS8 6tivcAl9BId3N8wsjaJLLhsC9yB7D3+ZsIxmOKBToZ++SO6N9pxEVNH5 SL0= +singles. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Re8zF5TDD9RadP3OgDI/fEh0xJvcE78sQDpEUgAcZnlQZDP2UhbcTEIh vUp7me8asvMSzBrwuDlJvW7/IO9n9VYg5qOVJ2lC1gLpd0fvP8OknrDj qTxTIpGNEwaJ0dU9ppcXKzQz3HOCXHRKx3sviwWgOGQ+SXugcP1Q8Mv1 1nI= +singles. 86400 IN NSEC sj. NS DS RRSIG NSEC +sj. 172800 IN NS nn.uninett.no. +sj. 172800 IN NS nac.no. +sj. 172800 IN NS server.nordu.net. +sj. 86400 IN NSEC sk. NS RRSIG NSEC +sj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . McE2+LKa9rlSU+r030POm0jyBq+GMNvWW40p0QSnGaX+xoSOm2p+47PX t9A/s1nG7dAAv1OYv7VVddr62hq14ofuvHhi4P9MyM7Tca0wy4aUVxu5 iHxNOvSAXkKZLkPqXmbjsP4IULmBELwOByyFUeVSRnRMmlfSmqCCGpIm pRw= +sk. 172800 IN NS a.tld.sk. +sk. 172800 IN NS c.tld.sk. +sk. 172800 IN NS ns.eunet.sk. +sk. 172800 IN NS ns.sk-nic.sk. +sk. 172800 IN NS ns1.sk-nic.sk. +sk. 172800 IN NS ns3.sk-nic.sk. +sk. 172800 IN NS sns-pb.isc.org. +sk. 86400 IN NSEC sl. NS RRSIG NSEC +sk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . h2DeV4A8BZOW3IgdHPIiiqg25zxqjLw/APGU7ttU3cJm8MD0EutcafUc ACrn/YF3ZYefqiPJRa9frR/yo0u2XySJ9XsZtRYCX8U9+NQTAUl2Nwtv wiZXsvGjCUOuVD5RAOSG5G3S6n9B6lBuHi1+b9Js6/tLi4TLrBiqK2pt QLo= +ns.eunet.sk. 172800 IN A 217.75.73.242 +ns.sk-nic.sk. 172800 IN A 195.12.159.2 +ns1.sk-nic.sk. 172800 IN A 195.12.159.3 +ns3.sk-nic.sk. 172800 IN A 217.75.67.234 +a.tld.sk. 172800 IN A 194.0.45.1 +a.tld.sk. 172800 IN AAAA 2001:678:70::1 +c.tld.sk. 172800 IN A 217.75.72.157 +c.tld.sk. 172800 IN AAAA 2a02:770:100:100::101 +sl. 172800 IN NS ns1.neoip.com. +sl. 172800 IN NS ns2.neoip.com. +sl. 86400 IN NSEC sm. NS RRSIG NSEC +sl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Dtn4nx3+J72el/sBzYT/F9vCkhMe9vz9jW4tCygZxOFNM+Gm6jL/oCn8 L/qG0Nyk/DZo1WxarUtpVD4EnOs3xL1p/cPjygrv7/Ri32N/NDopg1fA A9PxYux096n/SKCeMB3AuvzDJyPfQEtShw8Sd4ft80rYo25cC8UPEd43 UDQ= +sm. 172800 IN NS sm.cctld.authdns.ripe.net. +sm. 172800 IN NS dns.omniway.sm. +sm. 172800 IN NS dns.intelcom.sm. +sm. 172800 IN NS ns3.telecomitalia.sm. +sm. 86400 IN NSEC sn. NS RRSIG NSEC +sm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Au9SNw0yYZ36jxc6NPeMNO78RyWISKqqEe4DwnMefuH8IEiP/7MDRGPO wWhQhRRpnNkHih2seecboTxEcM6p4/QMsSElPfTmBGaZ6VlJLeaxXeA8 cQwgsbAOf8kK05H26gkGLcz4760IHzWHF5F/rgw+SSGd1/ijn2N6M8jL GqA= +dns.intelcom.sm. 172800 IN A 194.183.64.11 +dns.omniway.sm. 172800 IN A 194.183.64.10 +ns3.telecomitalia.sm. 172800 IN A 194.0.27.12 +ns3.telecomitalia.sm. 172800 IN AAAA 2001:678:28:0:c2:b7:40:12 +sn. 172800 IN NS ns.ucad.sn. +sn. 172800 IN NS sn.cctld.authdns.ripe.net. +sn. 172800 IN NS ns1.ird.fr. +sn. 172800 IN NS ns1.sonatel.sn. +sn. 172800 IN NS ns3.nic.fr. +sn. 86400 IN NSEC so. NS RRSIG NSEC +sn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HQi+cs9sAPTZ3keDVDCXtyqkqH3yJxTydMLjb2TeT96JjtkYbI7gkokK n2Fo4X7vTIRKT+5exhCXjHOnDJu7f47peCDz6B/dnyGxinstZyCMm5di 11Unc7mzWoAU0+jZZjezcdwlJ8FVevFGPRJ7m94Q5GvI0H7uMXrzZkX8 BSM= +ns1.sonatel.sn. 172800 IN A 213.154.64.11 +ns.ucad.sn. 172800 IN A 196.1.95.1 +so. 172800 IN NS a.nic.so. +so. 172800 IN NS b.nic.so. +so. 172800 IN NS c.nic.so. +so. 86400 IN NSEC social. NS RRSIG NSEC +so. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tYHbZ2zVHTmPXBWVbQSrDCQn2H8myqk2go6tKzzHBtI1OC0osWQOc/ym 46x06GiUJWSd2T1kZ2RZKhv7fWK6pJhoiGUGopLcfNxjv2uarTatGE79 tr39XUJlCZ/t/z9Srf4BUqrDFF+vvNfiBxgXtqTDIoSiSKmsH7KbRYOK lD8= +a.nic.so. 172800 IN A 72.52.71.4 +a.nic.so. 172800 IN AAAA 2001:470:1a::4 +b.nic.so. 172800 IN A 38.103.2.4 +c.nic.so. 172800 IN A 63.243.194.4 +c.nic.so. 172800 IN AAAA 2001:5a0:10::4 +social. 172800 IN NS demand.beta.aridns.net.au. +social. 172800 IN NS demand.alpha.aridns.net.au. +social. 172800 IN NS demand.delta.aridns.net.au. +social. 172800 IN NS demand.gamma.aridns.net.au. +social. 86400 IN DS 1300 8 2 8A42E9D39037DF3605E4DD07BEEA497B9C181FF38AA148FB712DB03C 03BEA8AE +social. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . EFqZlOS9iDMkiz/mKIYtUiYY8933Z9l/NJnFjE8i0FmzzdoNfePQVR5O jz8RstVTKE1WA9lWZ1i9C2TETvBQ+Oir+ToZAfQvQpNqAkdO83u8RhI3 GR5HIeFD+qc5fl3UoP57gVgDm4CKqSCqb8B7vUmkgPI1thkvBV8mjlgu TCk= +social. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sD3oP0eUG6iOwiNdSrGgOfmlngT12dFYOaIvQC+t74Mdy0aJ2j2CDgYd hzYSB1aeNb/nD7MRd8pp49wo7PoOAoxRZT6FOaQQkNECNQ0GGG+DvAMw +Bg1dyW9JOc3oEuQV9bx5eZ6Obqc0NHKdq6ic15XImYaSElWK55QqYi4 SN4= +social. 86400 IN NSEC solar. NS DS RRSIG NSEC +solar. 172800 IN NS demand.beta.aridns.net.au. +solar. 172800 IN NS demand.alpha.aridns.net.au. +solar. 172800 IN NS demand.delta.aridns.net.au. +solar. 172800 IN NS demand.gamma.aridns.net.au. +solar. 86400 IN DS 6739 8 2 E72104FA55B919CFAC81D28277FE041BACA75957A0E530FC83827195 C5FF89DF +solar. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . C+fTvbseN7usfvIZjzshTxET9znUO7nQGODI2Se2I3kec/J2KsyQSDBo 5BQtgrHCrGqihLTB73fshNntETx8G/2RJB5ToeK3Vs0+oe/eoSKDit89 rQ24GFeK+KOW0e+nk2mqW6I5tMYldcLDWCKfRuUIF2cuagDn83kVOcco WFY= +solar. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cO3ybyZIwzNf/GZ7wcf+V+CN/sDB0FzkkrHmEKtxEmlzjZBuhDtxNH3S Yjx3rsnrH5UmbTkCArrOS5D/kVWHR+2G7XF293CY8T4yORJ/puLyzmHP 1ij1ZmFKQJu+79AGTLm6NoEIbPyX7JFn8Mm0JoaIgYpF2QRVXXSnh3as 3vw= +solar. 86400 IN NSEC solutions. NS DS RRSIG NSEC +solutions. 172800 IN NS demand.beta.aridns.net.au. +solutions. 172800 IN NS demand.alpha.aridns.net.au. +solutions. 172800 IN NS demand.delta.aridns.net.au. +solutions. 172800 IN NS demand.gamma.aridns.net.au. +solutions. 86400 IN DS 57742 8 2 6536350D40C0AA3DBF8A29604A2291F89966BFC74C363E99D7573388 5B8AAA49 +solutions. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Qyun+pVBXwPksUWo26ZON3ovDVnHr+Y/wPYSRi4gTFlgmfM9cNYd86RJ aF3O8ezpe6GIVwl+lmRE/4SlnHR3Pb00Eh3knmtKdsLCBab2u6u0Fys+ LHAbK3B8nPTPXf2XWFwpmsZ8vPfZC61g89k2Uojbi9EtJ9uyXOF2WW1L 2Po= +solutions. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K6uCDbMLb4youAa7oGNtp2eAxvJCB6e1NJdlFSaqpzS1rS6gRGdZ5m6o /4s5p+uxZSYaLyAGbA2D0+YsjRWEqYnvdqINQAwYWz+pMcFJptaeHNQR eLEFHiCQWWfS7kKbEyuChvbNsW/yJd/stf2yX7d3TvwfqwMLcjHSnw+b WU0= +solutions. 86400 IN NSEC sr. NS DS RRSIG NSEC +sr. 172800 IN NS ns1.sr.net. +sr. 172800 IN NS ns2.sr.net. +sr. 86400 IN NSEC st. NS RRSIG NSEC +sr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kVtF5gUudIBbAMH4dfS6zQH3GQD4wxIJKPdAnuTPQCD7Rs9uwYBasVjR rKFnmeX6YOR5zmS1Z1jbpvMcaqQOXc/pSNCFMSbCR7GoxVx95dTnxwyg 7D/nWOz64SQckq23/za7m6eiVBA4kRG8ieFCfOO1wGxfrNVsbpXQ2Nug fIA= +st. 172800 IN NS ns1.bahnhof.net. +st. 172800 IN NS dns-au.st. +st. 172800 IN NS dns-st.bahnhof.net. +st. 172800 IN NS dns-us.st. +st. 86400 IN NSEC su. NS RRSIG NSEC +st. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fM8kV/MCnUBM84yY1E0rRX5msf4bBwK3b4FH2MdMOIGUyc/BFriyLo7M BwwXcrTj+VzCE0feH97R9KU91rpCI69t/c/mHH0wL6RKV7za7Rs6U7f6 WQrgTlWU+6U1kIhyjHbsz1H6et+6+YEDTEtSzfgpaCna1Q3g0Z9QO2l7 IBI= +dns-au.st. 172800 IN A 119.252.188.97 +dns-us.st. 172800 IN A 198.105.223.67 +su. 86400 IN NSEC support. NS DS RRSIG NSEC +su. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Xapn3Yc93rgEbIF9n83DcIU0SvdJTMZNVnS98223UI+sKM1jO3J5pyzY mU5DdJn+KCU9vYZmLt7ou1c6X0/RoRUNR4pbDZDlHgc+68/Yy39wC6qv A6Ztst+qCeb6PszryB8QALWxpyDvsfQA0Ts3IeTXOiXbqXHcSMRcSNae oTk= +su. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oPVO6MG2MW+Mj91eDDVAy0hUwFbakOMpm/A/sBOnT2dDRqzTkVBhh9Ze /wiazem4ifQlW3X0TekNHtyVxKTFgmOik1CqxincGgDEfdVGek5HSRc1 fs22w3htpQGd87EO9+aGQFDH43VCsCAeC4mQnldVsVb4vcoojcNhsakt ugo= +su. 172800 IN NS a.dns.ripn.net. +su. 172800 IN NS b.dns.ripn.net. +su. 172800 IN NS d.dns.ripn.net. +su. 172800 IN NS e.dns.ripn.net. +su. 172800 IN NS f.dns.ripn.net. +su. 86400 IN DS 16101 7 2 951F84877CC34730CCF3DBDB0692BBCDE8E41529A88CD1BDBFEE41D5 E629B284 +ns.demos.su. 172800 IN A 194.87.0.8 +ns.demos.su. 172800 IN A 194.87.0.9 +support. 172800 IN NS demand.beta.aridns.net.au. +support. 172800 IN NS demand.alpha.aridns.net.au. +support. 172800 IN NS demand.delta.aridns.net.au. +support. 172800 IN NS demand.gamma.aridns.net.au. +support. 86400 IN DS 49741 8 2 07B35DA2B3CDC8457A2532E0893F20672414C797E96731377F7BB87B 3ED70AA5 +support. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . O+0oZggOWjx+UK3sDGM1DhBQ+OsFmucCwj3yeozAL7ty4wPdpchGC9Sk EXZL2n11/iWt40VU7CDm/eSRk4tjURjE5x0Q+m6j5ckXLOaLvFdDS1XP NQFsma337tRgpu+1rFtCrl6DSZEHvQP1NOLLvS53c4vmRmwkr/bCh1O5 g0E= +support. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gfISGgQch+25macLUY+SlATrGeWIl8JUmLSTBe0UWWMR13MZReBtRZKH 24bcb24ko0Ga10LDRi12MqlBcI2G15yKknPGON+Cvp4balYedd5J9s1e KYrDDntYhgn+L936w50PGHOI5GKfZVWP4qRRJT7ctjtaWZ7MWDT5dhEz lQk= +support. 86400 IN NSEC sv. NS DS RRSIG NSEC +sv. 172800 IN NS ns.cr. +sv. 172800 IN NS ns.uu.net. +sv. 172800 IN NS ns.dns.br. +sv. 172800 IN NS sv.cctld.authdns.ripe.net. +sv. 172800 IN NS cir.red.sv. +sv. 172800 IN NS auth02.ns.uu.net. +sv. 86400 IN NSEC sx. NS RRSIG NSEC +sv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vQW0by87MS9nDhkK+jpjBVKaDm6d+7K/XxQ9XQI1e5R8cb6QHf3NvS6j areBLtSOrZzkB9xIWV0ln6gSXKvAGNcCOJczyWc6NpPiAGIuhmNTrztc 7L/63RwFJ/BjH3BqS+CTCasmVBvyctG5puHQAjzbtNlr4/hc4Zp6W8gN BuU= +cir.red.sv. 172800 IN A 168.243.254.1 +sx. 172800 IN NS a.ns.sx. +sx. 172800 IN NS b.ns.sx. +sx. 172800 IN NS c.ns.sx. +sx. 86400 IN DS 59259 7 1 7D8C002AC87627953A66C8145C2EBBEB13B8AE64 +sx. 86400 IN DS 59259 7 2 81CE2B07704CD91951A7AD5A7E88B4426AE57952AE9511521169800F EA137869 +sx. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lav3zqUAWmBC3umWmvBnoYGOIdaasAF3+G/0G45JYWdFkhqqkJxrm/mi /3Y+k8IF+bXwxX2vU+GNRcDkMiUBB6cZ1a9BfRQ4tffwLIvgONXMO+17 G3h6aX2Fs+Uziym8IoBbniiswl9zXH4wGsoXP1Wid2J9csPZz3hs78Rj yDc= +sx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . U9W/A51eveH8UwCDFJ7VqtNncw0xzyF7Jyh4ZTReKaqrkOBFsMzyhwOs YNmFM3m1gH1g9pcfDsbV7hYoZwS59ZeWqwAB6VUEGhfnabb+fJTp5YkX Av3meCa6RcOzdar38wOpSil01UQTEFeO3cS/pUJ0hiAiXTooG1snXtBr nPI= +sx. 86400 IN NSEC sy. NS DS RRSIG NSEC +a.ns.sx. 172800 IN A 89.207.184.65 +a.ns.sx. 172800 IN AAAA 2a02:2790::600d:deed +b.ns.sx. 172800 IN A 80.92.90.160 +c.ns.sx. 172800 IN A 192.95.19.109 +sy. 172800 IN NS sy.cctld.authdns.ripe.net. +sy. 172800 IN NS ns1.tld.sy. +sy. 172800 IN NS ns2.tld.sy. +sy. 172800 IN NS pch.anycast.tld.sy. +sy. 86400 IN NSEC systems. NS RRSIG NSEC +sy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . I61mqyz7cR3CSgi8vP7P26KvbGD603F0nDFLby+pPyCwRFesmLDvWjRA 0M1fZDbLhww7Kfmkr5UgLjPvq6GfuFj4v1Vl4LRYUCyQX51eqFEGuIX8 p2mO5s1HciC/Ldn0tj/lPVysCBM3XWKKz6fLZO65CYHRePNlcecnBGV/ UZY= +pch.anycast.tld.sy. 172800 IN A 204.61.216.71 +pch.anycast.tld.sy. 172800 IN AAAA 2001:500:14:6071:ad::1 +ns1.tld.sy. 172800 IN A 82.137.200.85 +ns2.tld.sy. 172800 IN A 82.137.192.145 +systems. 172800 IN NS demand.beta.aridns.net.au. +systems. 172800 IN NS demand.alpha.aridns.net.au. +systems. 172800 IN NS demand.delta.aridns.net.au. +systems. 172800 IN NS demand.gamma.aridns.net.au. +systems. 86400 IN DS 25054 8 2 687ABBCE3773EEA70CF1434E34C2EEF2748BC0DD91A0F5C2416E7743 1F1C2651 +systems. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . SP8YG4M84Nggb9DD9Whv5r4mYEGRKUfzzhErOVHo7eFxTfdNRsH+O0Iy NGfQLK/rEllEIPKMTP+s9f+/5aUW2OK2NKuvYQJNss0O6UxV9upVPIlJ RLbGPpV8TUbEqQ7WYPn8MWPDMTXd+KvDA0DHotiZfvNDbv4E3XZ6eH67 Gos= +systems. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LMjZPvaHn5mG8lur4TkupObp1F6uWr6LeE+JvlKNE3CQa08xbaeyl1SY MVWdTzHDmpLdFpdWIZ1sjQMui9dIjNqkOUTNPwzNOuaFFkaWl01HmBbr NY3pnMtjpyCtJqcBqA/z/ZCRJwWXgb0nPCB7U4cG/p2Q/KKqt3WifuvK Bes= +systems. 86400 IN NSEC sz. NS DS RRSIG NSEC +sz. 172800 IN NS sz.cctld.authdns.ripe.net. +sz. 172800 IN NS ns1.sispa.org.sz. +sz. 172800 IN NS rip.psg.com. +sz. 86400 IN NSEC tattoo. NS RRSIG NSEC +sz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RGtYHskNhf3hGK/PCrnn736nIpQ7r2zrl+pZsjHB3/6CfHHBg7FPYjJe 7NS8BTsZqqJAeAM6JHcp7oUTmF4KIU1g4eJQZSs/+455cl/0u/qKeoz3 15YSOIsDeyCfKZWj0BH3Yuu+hH8qJDZvKAKV3mH8L6M/22oHm3Poi70N fFI= +ns1.sispa.org.sz. 172800 IN A 41.77.232.4 +tattoo. 172800 IN NS a.ns.uniregistry.net. +tattoo. 172800 IN NS tld.isc-sns.com. +tattoo. 172800 IN NS tld.isc-sns.net. +tattoo. 172800 IN NS tld.isc-sns.info. +tattoo. 86400 IN DS 5393 5 1 AC153D753067B73F852FD617D6D658B2C13EBBAC +tattoo. 86400 IN DS 5393 5 2 73BB10F1CEAA45E7896F1A38F8AF5DD7C08C26432BF52C7F47141364 F842ACD2 +tattoo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . V3u2meUZpib4HkpkJwhd6Uk3pNqt3skLRGNIk1aPt6CJdlZL+sFl9tDd niQiu80K3G39jrTMqe3KuMaQG4N3F/FeGH69mFh7tffnttRO43u4xX+w WtRnvm76wN6sAdemHNczx736JduuuZeYfgPtYH/LUcrpktBs+mGxBDqu yFk= +tattoo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ilXRmE3uolg6Ih8E/dPvDH6tarqqMHsIbpMejPnmvxcqL6t8vMHO0WNL e3v1HJ1MOMZG8wp7kJUyCvEXtZagU8biGDNpMjSfAmlKhIgX8DyJeZOH aDfHtncFsziAXSPgpSrv65lJ56pJ61U4pxsN6GxUwKvk5IKSJqtiprdU QDE= +tattoo. 86400 IN NSEC tc. NS DS RRSIG NSEC +tc. 172800 IN NS asia.zone.tc. +tc. 172800 IN NS asia.zone.vg. +tc. 172800 IN NS europe.zone.tc. +tc. 172800 IN NS europe.zone.vg. +tc. 172800 IN NS northamerica.zone.tc. +tc. 86400 IN NSEC td. NS RRSIG NSEC +tc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kOJrBQG1dGrgkpJyjBRNhBlz6Qp8BMq0fiwSuswoXYa2YvbkcKAq4kbh ph6CLp78j+hC/OmngvWL+N8rno1DiJ3VjnhYviU+33O8lIZu4dnEkqLj b33u7+HXjnhfsMmwNndzFqOH/8OpMgvT+tMI0MW7yFAo6+E9TfcFybjd fzg= +asia.zone.tc. 172800 IN A 31.169.81.225 +europe.zone.tc. 172800 IN A 77.79.104.225 +northamerica.zone.tc. 172800 IN A 166.78.254.145 +td. 172800 IN NS ns1.nic.td. +td. 172800 IN NS ns-td.nic.fr. +td. 172800 IN NS ns-td.afrinic.net. +td. 86400 IN NSEC technology. NS RRSIG NSEC +td. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WN1wX86jufXdB9h8+1X2Rt5bcla6mfwSWZ1A9mVAs3/ZNu6VQ1mJuz5i Ry6uKz6X5RQXyFPatoAMMk/jJcPHNrR9tP25i0MTMp2Yg3zapy7zn4gS 12AaiugG7hKoPMHEEQQ2/+YtvWk89E2a+izAntPEsav+JuYQym9kJbw6 TRk= +ns1.nic.td. 172800 IN A 41.74.44.43 +technology. 172800 IN NS demand.beta.aridns.net.au. +technology. 172800 IN NS demand.alpha.aridns.net.au. +technology. 172800 IN NS demand.delta.aridns.net.au. +technology. 172800 IN NS demand.gamma.aridns.net.au. +technology. 86400 IN DS 49744 8 2 C3BEEFBB8633323215C56E2B8401CAB71D335A8E146454099D394707 34D0630D +technology. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BDm8p2bCLObb+kA5VBL+fD0t1v4gooupmLRZbK4rPJzhiK5ARigQ/EmI paDdk0fAOpbGl4WO0OfJ4Efpr+QbKeA8Im6jgdipELO7KRr08K2+nh4D 5lzg0aLbA5kWFpH13j58m4wItdkzSXIRfIoyAUtCtqD8o7rh6+ZOeaks aK0= +technology. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZO2aTNGv3wYy3FoNqwelYPwNvmPq41j1cV3VrPJsIlx+1ejZ9W76M9jy dEjPyTRxP9KHwmmS9UM3QvFVpmSZJL6+Bmq/kaCS9yWQSUeqt9bJM5OX yPk364RFiguxW60lcwghyw9T402leHp5euBqhYVfyFusNPRLPDrHOWwj AT8= +technology. 86400 IN NSEC tel. NS DS RRSIG NSEC +tel. 172800 IN NS a.dns.nic.tel. +tel. 172800 IN NS b.dns.nic.tel. +tel. 172800 IN NS c.dns.nic.tel. +tel. 172800 IN NS d.dns.nic.tel. +tel. 172800 IN NS e.dns.nic.tel. +tel. 172800 IN NS f.dns.nic.tel. +tel. 172800 IN NS g.dns.nic.tel. +tel. 172800 IN NS h.dns.nic.tel. +tel. 86400 IN NSEC tf. NS RRSIG NSEC +tel. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GARhTZnA/3TxT4sXXQbAqwMa2qRqLitb1fKcV5hE+6zVJZV3TQSj9K6f B+5zo7zgd3EUd365RhVGq/b+bf+IA6JMYRnhGUQUi9T5PgC+GjOQHZ3q nhiZUThE0atMrfUykWI3UcJrG2JzlelcTNBAmNEjOeJ8PCaceigzsNTV VlQ= +a.dns.nic.tel. 172800 IN A 194.146.106.38 +b.dns.nic.tel. 172800 IN A 192.36.144.116 +c.dns.nic.tel. 172800 IN A 204.74.112.1 +c.dns.nic.tel. 172800 IN AAAA 2001:502:d399::1 +d.dns.nic.tel. 172800 IN A 204.74.113.1 +e.dns.nic.tel. 172800 IN A 199.7.66.1 +f.dns.nic.tel. 172800 IN A 199.7.67.1 +f.dns.nic.tel. 172800 IN AAAA 2001:502:100e::1 +g.dns.nic.tel. 172800 IN A 192.100.59.11 +h.dns.nic.tel. 172800 IN A 198.133.199.11 +tf. 172800 IN NS d.ext.nic.fr. +tf. 172800 IN NS d.nic.fr. +tf. 172800 IN NS e.ext.nic.fr. +tf. 172800 IN NS f.ext.nic.fr. +tf. 172800 IN NS g.ext.nic.fr. +tf. 86400 IN DS 13684 8 2 0D4413F0F5685FD9144C7B7D6FCF6A0CAE6A806A3380164A1EE14FC0 232652F8 +tf. 86400 IN DS 63746 8 2 C80A503F9A4594065684E1B4C6CD5C9AAACF855A9F3B4D9B4546970C 6C37C0E0 +tf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HuGh/FV+yROfKgMBRk9Ywg/aLXjp/j05d32BuJwwQVR/tj9rB8eb/tYx rr8Ry6+/4waH7T8L/xVt0B0O4UHebVbljDHIJaGwS8i9LLnji8pHGrIW ikPEfNU06HQJouOY52gyYdiIBA7D/b5QndUIz95DrIvU9IBd6UpFDagI GEQ= +tf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iTps/XFVVlH25BERHlqsysuIXSvFq+cMQPfipL+V03di6wWhBuOF3b1t qx1GMzjjG/JTisg5u5mJkFfYRa75bgE3ckl2Uh3sqCNwCmbAVKlA2n1r +MP/e6EJ2C0GilWardKWzjBTGjpRU49nGjO80oFlET3QbY3ZFVMa9qmy 3Zs= +tf. 86400 IN NSEC tg. NS DS RRSIG NSEC +tg. 172800 IN NS ns1.admin.net. +tg. 172800 IN NS ns2.admin.net. +tg. 172800 IN NS ns3.admin.net. +tg. 172800 IN NS ns4.admin.net. +tg. 172800 IN NS ns5.admin.net. +tg. 172800 IN NS tld.cafe.tg. +tg. 86400 IN NSEC th. NS RRSIG NSEC +tg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mA8KgvvGQnumv4YnBCO4BLypjgtfx3n+hX1urRh8M1gG7xuW47dGrUIy UjRHUIjQQw7SZsidGL5dYFGuQtBFj8S63rdqmXmyOqdo3BG7p1rvqETY Z4+WQIPAjAjSj58rPoQRX0y5U3VhFn+z+/ug0SU/ATzzuBhz064nx9oW sBU= +tld.cafe.tg. 172800 IN A 80.248.64.20 +th. 172800 IN NS ns.thnic.net. +th. 172800 IN NS th.cctld.authdns.ripe.net. +th. 172800 IN NS ams.sns-pb.isc.org. +th. 172800 IN NS dns1.thnic.co.th. +th. 172800 IN NS ns-a.thnic.co.th. +th. 172800 IN NS ns-e.thnic.co.th. +th. 172800 IN NS sfba.sns-pb.isc.org. +th. 86400 IN DS 37297 8 2 890C918B568A6E30BF3A54B88C6B5C1838B9137E849EB96581FF3683 8399C276 +th. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lL41U0FkRF/66lJGJvGji0Yy+zdgzl8ohNUDOHUTmPfuC6N9G5BQyo/Q ddE4VVlJYex/rH41JWLbr8zn/b9mH6FLpqWKeKJ9zAV6fZQzJiDLqhp4 CuhdiA0/kgpjlR4PJXWxNxlDahJauL52DCTWy+mNE0JTWnW/yZ9BiCub VGo= +th. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tKUPpdpPPsZ5QA0+6XkXXeg6d4p8x4yvIRjoopyhyYh0wCP+t/F05U81 35CMbQeW9ufHgq/mIR8kCDwVITRrqIimq4fUsObD8VMuSuppHVA8s1yl ved3Emll/jx6e0iQ/9H4Z7d/h+RBCBSHUBRW10vStBwlXFY9+5HPWUnx KfY= +th. 86400 IN NSEC tienda. NS DS RRSIG NSEC +dns1.thnic.co.th. 172800 IN A 202.28.1.22 +dns1.thnic.co.th. 172800 IN AAAA 2001:3c8:1209:1::22 +ns-a.thnic.co.th. 172800 IN A 61.19.242.38 +ns-e.thnic.co.th. 172800 IN A 194.0.1.28 +ns-e.thnic.co.th. 172800 IN AAAA 2001:678:4::1c +tienda. 172800 IN NS demand.beta.aridns.net.au. +tienda. 172800 IN NS demand.alpha.aridns.net.au. +tienda. 172800 IN NS demand.delta.aridns.net.au. +tienda. 172800 IN NS demand.gamma.aridns.net.au. +tienda. 86400 IN DS 58465 8 2 3609AECF68EF07474D2D9CFC9735DDA2365FBC3C6E4EBC01957E7903 E17467A2 +tienda. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . He5JEvNfzEbqbYNY7CkJwvzwf+V/tby/pKhtxuNEpBCJy8ZSNsdcYuxN NVyM966RORzL7J+t7uFd2230pEv21/E8iKq9t7vq14VzThFXxqAA85Tp pXUz71tO5sL0QU2GQMWfPvsI7huTZNVA5F29SIckykd+yXdB7bxNrqfo PQo= +tienda. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . avPW36rz86wzTFdcgM+zh3XwWw3a6LemrZZBMypQEKZHGr37Fe5NiQbW gc/32sr4+2daxIMDjd1nxj7wp1obHepdF2E/fMySmlx1EVLBIlTIrwd2 QGyAkzm55Z9pYz8i32uTfAOTzGEsrQAMCiDiePrCO+NqBtD7pKAOk8r9 QHI= +tienda. 86400 IN NSEC tips. NS DS RRSIG NSEC +tips. 172800 IN NS demand.beta.aridns.net.au. +tips. 172800 IN NS demand.alpha.aridns.net.au. +tips. 172800 IN NS demand.delta.aridns.net.au. +tips. 172800 IN NS demand.gamma.aridns.net.au. +tips. 86400 IN DS 55054 8 2 5083EDD4FF622CA53C15F91D62C83D08706912A093F49B6DAC85A7B5 11F545B5 +tips. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . n3YgLjX/Gg+6ngkXLu/+N+aI2Xfy2DJnaSmjJs/lLCcX6QTrw9r6pBND K5lTlGvO8jCxUthwtGDlNjX0EXHSSzQKrbp5XZ1sjU4qPsB5gPomeUa4 0KaKGr3p5OZuknJUPMCxx1+L4W1DEyRZd/b1hWUkX8vtY3JWfMlIGRJu fKw= +tips. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . d3H45NmjzXe7NjYihvwJdmmdQa63XxxlmyJIT5KEfiQxTxX+gbO8Pcac 3ds2/t9gbpUbpJbcn3u62b5gIxQ7kyWZnNf6RId0XCoShvQon2bGFa2o FwL/VCB2IGxi/GPLEQ23MG87H47z7JDEvvF13bx56vd56tHQqcFKiZDB v6E= +tips. 86400 IN NSEC tj. NS DS RRSIG NSEC +tj. 172800 IN NS tj.cctld.authdns.ripe.net. +tj. 172800 IN NS ns1.nic.tj. +tj. 172800 IN NS ns2.tojikiston.com. +tj. 172800 IN NS phloem.uoregon.edu. +tj. 86400 IN NSEC tk. NS RRSIG NSEC +tj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ANgyIbrxbH+R6OtdUY75I2+gsklIKf+Xj1cUWZSwcjHu6sOUHr20UXmG ExsOn1iA876FBp2KKoUs9JgRSSlKloJ8bIxqjybW2X/xzOpRXHgbvdNB W2os7C3WDHfD+dt09ragJ4t9V4fPvX4WUMqak0Sa3c02iLsfEsnd7DaG yV4= +ns1.nic.tj. 172800 IN A 91.218.160.197 +tk. 172800 IN NS a.ns.tk. +tk. 172800 IN NS b.ns.tk. +tk. 172800 IN NS c.ns.tk. +tk. 172800 IN NS d.ns.tk. +tk. 86400 IN NSEC tl. NS RRSIG NSEC +tk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VyVdc+VJXpA9RHD2XqFf8XVKj+/yEP6APkiP1FWWXqdo4329iM5JUT8u g9+fRupfQL/el4sia3/ePxJrLvnvIywODMV/lThf/TLthO5ikOvwvMk9 V0Yg3LgPlTv9Rk01NLyi8UYdPozn3holpcj7mQbTMDycSOsOQh2z4dta T+g= +a.ns.tk. 172800 IN A 194.0.38.1 +a.ns.tk. 172800 IN AAAA 2001:678:50::1 +b.ns.tk. 172800 IN A 194.0.39.1 +b.ns.tk. 172800 IN AAAA 2001:678:54::1 +c.ns.tk. 172800 IN A 194.0.40.1 +c.ns.tk. 172800 IN AAAA 2001:678:58::1 +d.ns.tk. 172800 IN A 194.0.41.1 +d.ns.tk. 172800 IN AAAA 2001:678:5c::1 +tl. 172800 IN NS ns.anycast.nic.tl. +tl. 172800 IN NS tl1.dyntld.net. +tl. 172800 IN NS tl3.dyntld.net. +tl. 86400 IN DS 25307 8 2 BC0412D59817424A34040676F1AE1205B1F33FC9510E7E3011471185 1FFCEDE4 +tl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GhFCKRG+aNISdSSwAxumB+do6Ims7rcCRXOPQ64fw7+Qwczu3WnrLs28 pDNT4QYj7a1IfGAf2+jGwsqJUN3IuBJ7pGOzjcTpaLmLr7V500aBMsBb /Td4FGC6E0R67yWNiP/7j0GBZaxej/R9CPXyAaa1hRKcn50c3EjluN/3 meI= +tl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WZhm/r2lPE2u0jJOh60wqBQXm08OhuR77bLQmDPeWweCWLKIbadEvpoq IcyaiVFM1cQw8aIJQ3stVAeT4LZyMbnW7P4C95mEjlZGnv6nOVA1YhEw D9Ukl3masKnbCp+W2J3VgJCl5OuflM+w4R6z1LVEsUmCFtPDVHDN83Wb DLY= +tl. 86400 IN NSEC tm. NS DS RRSIG NSEC +ns.anycast.nic.tl. 172800 IN A 204.61.216.19 +ns.anycast.nic.tl. 172800 IN AAAA 2001:500:14:6019:ad::1 +tm. 172800 IN NS a.nic.tm. +tm. 172800 IN NS a.ns13.net. +tm. 172800 IN NS b.nic.ac. +tm. 172800 IN NS b.nic.io. +tm. 172800 IN NS b.ns13.net. +tm. 172800 IN NS ns1.communitydns.net. +tm. 172800 IN NS ns3.icb.co.uk. +tm. 86400 IN DS 28935 7 1 C9660594EFA1DCCCCA1B6B7359262F2E11052403 +tm. 86400 IN DS 28935 7 2 0C30AA64DF5149B0237F0CAD8E6AB22825BDC8CADBD7CC108F6FFC74 AC428709 +tm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WJEd1krgV/Jm52pmdZ70ZM87a8FKFhKyPi0/b1yZ3MSrahoclN+V8gOj dzquk4p9lilmrzbPTPc8jtRpWUjsf8zLpuesHWqgf55a708KsfwFz3Of s2OTFqDlzy+O/2D/vZ5b+Y3v9p+1PixecvUDtoUDcLvmtNxBBRo21+55 L/U= +tm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S18v90w+RW+e2/zb+RxuSE6P4n1MdOn0M9YetgfWCaC9aHtRQiS2wmcP zAY6DzSvdganuaK/fXNvW/kSJ3eJSkDMHHwMu8LuFgSN1q05XwyrOqHC fZkSNsoUQGy3uKD6TyNviwrY4jKnBEr8cZI4W+Xj5NqvT8ii0OlNZEMZ TZs= +tm. 86400 IN NSEC tn. NS DS RRSIG NSEC +a.nic.tm. 172800 IN A 64.251.31.180 +tn. 172800 IN NS ns1.ati.tn. +tn. 172800 IN NS ns2.ati.tn. +tn. 172800 IN NS ns2.nic.fr. +tn. 172800 IN NS ns8.ati.tn. +tn. 172800 IN NS ns9.ati.tn. +tn. 172800 IN NS rip.psg.com. +tn. 172800 IN NS ns-tn.afrinic.net. +tn. 86400 IN NSEC to. NS RRSIG NSEC +tn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PK27IHTjpyKIyAuXrTpq3ggM1TDihgQKfMdPvDAKxoA2jzo075fX/fO0 0GgR+C5MAZ4dgLR3WEJ5udB+5yPtIo5Tn51a2aW+/bFGEh0225W81a0X Up5G/8YhnUD7lfvT0ax2iZsfO73ZI9Cbv/N9QgbxxbPGnZRK6zNLTTow BIA= +ns1.ati.tn. 172800 IN A 193.95.66.10 +ns1.ati.tn. 172800 IN AAAA 2001:4350:1:1::10 +ns2.ati.tn. 172800 IN A 193.95.67.22 +ns2.ati.tn. 172800 IN AAAA 2001:4350:2048:1::22 +ns8.ati.tn. 172800 IN A 193.95.66.6 +ns8.ati.tn. 172800 IN AAAA 2001:4350:1:1::6 +ns9.ati.tn. 172800 IN A 193.95.67.26 +ns9.ati.tn. 172800 IN AAAA 2001:4350:2048:1::26 +to. 172800 IN NS to.cctld.authdns.ripe.net. +to. 172800 IN NS ns1.iafrica.com. +to. 172800 IN NS colo.to. +to. 172800 IN NS tonic.to. +to. 172800 IN NS auth02.ns.uu.net. +to. 86400 IN NSEC today. NS RRSIG NSEC +to. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zo293xnGDBAW6QQj+oJuP7vbn/IDFQg4r5dAax9CBzb1tnnvjbnpIJA1 ClS+idFX5+oDVtA1KEuWfYjIkYfrVKsHYdXj4Oq9teFgLa5xNL+ZKA1t vCOPAMhSiPRTb8C8CuDr+izlKm3zhgp34AII6O4FYmmS3NeAjJL/8a/2 oeA= +colo.to. 172800 IN A 216.74.32.104 +tonic.to. 172800 IN A 216.74.32.100 +today. 172800 IN NS demand.beta.aridns.net.au. +today. 172800 IN NS demand.alpha.aridns.net.au. +today. 172800 IN NS demand.delta.aridns.net.au. +today. 172800 IN NS demand.gamma.aridns.net.au. +today. 86400 IN DS 13939 8 2 CFED9FB12BD6FF22FF6FC7A6098428062D58B41236279221011BC3FD CCB1F3FF +today. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TdOPMJseE3/tcj4sMlkItkn5v+72vXQFSzXH6LvHwHmVvDD7x/WJIT40 RteASgrU+MwQLYTTeT/+r4gjKmYlJ2w/RPSHA1PDx9pRXj5Es5szN5Xz 9XJqfWi0b8V4C3ahigUJvpslSLEDihXe0c+jmiBI9sa0dtU4alZgKUUo K+c= +today. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DYWqZirZkWV+j0E424gsKxYbUyS56fGCGQ11oFyFskZN1v/C4f1Eby5s aeY9AppP1CEQZgCQ/s8NVX4bUFX6owL9Vpke1NK+ogbsZD+NTyZgHlZQ ZQqMzHt4aVHJXUDaoI6iCctj4mHViHkZBIZvINhJW7q5wEcBlPoedBhl aUI= +today. 86400 IN NSEC tokyo. NS DS RRSIG NSEC +tokyo. 172800 IN NS a.gmoregistry.net. +tokyo. 172800 IN NS b.gmoregistry.net. +tokyo. 172800 IN NS c.gmoregistry.net. +tokyo. 172800 IN NS d.gmoregistry.net. +tokyo. 172800 IN NS e.gmoregistry.net. +tokyo. 86400 IN DS 32771 8 2 19E0438B0E13DE780175E4BCEBE46432C5287FDB9DFE2B4440FA4E3B FBB20BC6 +tokyo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . as0L8OvM+kwtYlq1PMltG9EDYJZgOsJ/g2pLgm0L9Bb5B8ipCx3ynEUi H6QIcOitCGNljJjF+VVqYKQvYwQA14qJTZbfYoF04qIErHADanEMukgn Er0uBLgg470CEfNCNNt95QSL/N3P5L/GCpx6Jv/8oSr//DMjgy3ce64R 8sA= +tokyo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dNenmwM6M4enYO/AWcsGGXY4/RIDwn1A9JU5nNxSj2vgF/jQxoWlLeJF q92BFyY+lZ3c+siikLG3fhjM+g1wbKM6tSEYXxWC+nNHvhZobwKjWaT9 XOkTza9fwwCZbBGVm0rAJswaW8Y1tJHsdTo7aXwi/RqwUHbEbuKDomjM UF4= +tokyo. 86400 IN NSEC tools. NS DS RRSIG NSEC +tools. 172800 IN NS demand.beta.aridns.net.au. +tools. 172800 IN NS demand.alpha.aridns.net.au. +tools. 172800 IN NS demand.delta.aridns.net.au. +tools. 172800 IN NS demand.gamma.aridns.net.au. +tools. 86400 IN DS 62176 8 2 9107EBABED1AE73F93CE28DA7931F52EE237911FB318E0F1BAE6F9AA C73631FE +tools. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jtKM38aHDnvWG3tpUS0qhudivNCQcHFvt9E3bxouDZdHIaj2AFaFlaNX nga2PuxfUmuCQ4wNJYnk+xYqS+dtMI8PToOBQ8ld/EI/mPpySRr/4woz F9q1CB/wM9oHPT5b12X4AGutZNKUm8XK6JCPNtsl5tfShayAC+H3D9z+ 6gg= +tools. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Sa2uc+TVyL0ZDkLSalcYk8KMMKFy9wPjtxXNN7dk6RL90LZNc3bNQRtr Be1SVIoJWYiNK8FHLP96B85/QYdf7bF2az527Ko4pMXtyigsnvxT2rIC qsXsV7z4K95F0WntS/PIWlK7c7vypLm4vIFiO+196wWQ92qUJ8Ayd4Be DVg= +tools. 86400 IN NSEC tp. NS DS RRSIG NSEC +tp. 172800 IN NS tp.cctld.authdns.ripe.net. +tp. 172800 IN NS ns3.ns.esat.net. +tp. 172800 IN NS auth01.connect.ie. +tp. 172800 IN NS auth02.ns.uu.net. +tp. 172800 IN NS uucp-gw-1.pa.dec.com. +tp. 172800 IN NS uucp-gw-2.pa.dec.com. +tp. 86400 IN NSEC tr. NS RRSIG NSEC +tp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fsfQuPHlo9h35qwoTbb0PDKVkI/MKN3ZC1DS0l+4wRl3xYeqYAOBAc6j LIUlqfsuWLAjFDLo5RoWG20yXvq1IcLwNC7Zgjide5EVvQEwr9j34bOz MUTX7X/ll4DeyOPlz0UuBcT+3g+WZq9p5GoHOfjINox7v1AyBj6DQCBz upc= +tr. 172800 IN NS tr.cctld.authdns.ripe.net. +tr. 172800 IN NS ns1.nic.tr. +tr. 172800 IN NS ns2.nic.tr. +tr. 172800 IN NS ns3.nic.tr. +tr. 172800 IN NS ns4.nic.tr. +tr. 172800 IN NS ns5.nic.tr. +tr. 86400 IN NSEC training. NS RRSIG NSEC +tr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kb5m8h7frLpVEBy73ZrpdJIGlg225AGZWD6s4KcLFahnuMn8375u2bB3 k1ndMRkGb+eWojVA14GBdowADU4tu2e6jMpDJPILiN9vaik8Vw6StwzT JUmQ4205mX19lCjBxnzduHJHZSIRAopAw+1mi6KrQHK3lsASfeyk4THi W2M= +ns1.nic.tr. 172800 IN A 144.122.95.51 +ns1.nic.tr. 172800 IN AAAA 2001:a98:30:ad::11 +ns2.nic.tr. 172800 IN A 144.122.95.52 +ns2.nic.tr. 172800 IN AAAA 2001:a98:30:ad::12 +ns3.nic.tr. 172800 IN A 213.248.162.131 +ns4.nic.tr. 172800 IN A 193.140.100.200 +ns5.nic.tr. 172800 IN A 178.251.42.18 +training. 172800 IN NS demand.beta.aridns.net.au. +training. 172800 IN NS demand.alpha.aridns.net.au. +training. 172800 IN NS demand.delta.aridns.net.au. +training. 172800 IN NS demand.gamma.aridns.net.au. +training. 86400 IN DS 47485 8 2 C8DE27AC32C7BFBFD8502763B6A472CD4A90F15F4BD1427C712139A2 3D2C24D0 +training. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dFSAoy1vusUZwx7cbB8vUylEeEHeTCz4R5+33fzYysO3/iaYYameh+Wm OVUxMpX17R2uKOts1Uo2UYdRsZ9UU+Iclyhb5HHJp+8hRJ7BYUaapKdE nUjXOF3gXosPFPpVWJKcnyUNgdBXipVRmLJlDJgzOMa+Uo8z/TCwnCpD cvk= +training. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MqogTyf9MiLCjonvTKjQC3Gs6OmwA9XB+M1OKhuYuK/yesH/KxLetaEg yeONoD8/gsf3Pnw0J3YVviVyL3x6j0qzMjr+QwIryKIsfk0c9c+NpGyB w8JeLDLf+01XOyXGqLFmlq1vRJxfBHXEtjaqvklrmiv4i6FdodilQ1hX 46U= +training. 86400 IN NSEC travel. NS DS RRSIG NSEC +travel. 172800 IN NS a.gtld.travel. +travel. 172800 IN NS b.gtld.travel. +travel. 172800 IN NS c.gtld.travel. +travel. 172800 IN NS d.gtld.travel. +travel. 172800 IN NS e.gtld.travel. +travel. 172800 IN NS f.gtld.travel. +travel. 86400 IN NSEC tt. NS RRSIG NSEC +travel. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l939NlhXP4d60XNvkelAEOYvkb3Jx9udPE74hmaJDMLg2m4gWgHeYfj3 SR5wg15ErWbLjVB26YGD6MByVfzIttDR3Dw8+VqQxp7ltStlPPZ3EnXu 3DdVuSvwkn3NCpFC25+drnH495zfrSB7oJ1wux7Np8vWn+oR9RQeHg96 LB0= +a.gtld.travel. 172800 IN A 156.154.100.1 +a.gtld.travel. 172800 IN AAAA 2001:502:ad09::1 +b.gtld.travel. 172800 IN A 156.154.101.1 +c.gtld.travel. 172800 IN A 156.154.102.1 +d.gtld.travel. 172800 IN A 156.154.103.1 +d.gtld.travel. 172800 IN AAAA 2001:502:2eda::1 +e.gtld.travel. 172800 IN A 156.154.104.1 +f.gtld.travel. 172800 IN A 156.154.105.1 +tt. 172800 IN NS ns3.nic.mx. +tt. 172800 IN NS pch.nic.tt. +tt. 172800 IN NS ripe.nic.tt. +tt. 172800 IN NS sns-pb.isc.org. +tt. 86400 IN DS 2539 8 2 B06DFA79674DF3EA8190E7616164414B01E9199B7C94EC1540378A39 5DAA401F +tt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fVKjk88o1sadP5q7OsG5HWL+HMBllrjr7idoKulCpQrcX+Nd+xGwxgnY 6Q7ylfvi+jVEy0kKSzZBFK3OZdjLwPiUs25hMMywknHc1eTMbnJOSPyV qe4CVi4tsUbXiMjw7cEJny5NlMaLJFmXxtedU27s+MnV9S2o76SlgWPU h7M= +tt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TT3iqQL9kUinYlqqLBls4rAxDQG4hQIJZLuV1DxFbhig7Q4sIRUzMqIV D9wwdrhlFbDdJ6L2xymBCUFG2d5umCLDlRGUBcR2FsLw2u+hr5jmMLBk W+WD3ljB76usHS1EFBHz/bak2GBBerRHvaQZGgKVZwxsLX5bb/Di5z84 1X0= +tt. 86400 IN NSEC tv. NS DS RRSIG NSEC +pch.nic.tt. 172800 IN A 204.61.216.63 +pch.nic.tt. 172800 IN AAAA 2001:500:14:6063:ad::1 +ripe.nic.tt. 172800 IN A 193.0.9.50 +ripe.nic.tt. 172800 IN AAAA 2001:67c:e0::50 +tv. 172800 IN NS a5.nstld.com. +tv. 172800 IN NS c5.nstld.com. +tv. 172800 IN NS d5.nstld.com. +tv. 172800 IN NS f5.nstld.com. +tv. 172800 IN NS g5.nstld.com. +tv. 172800 IN NS h5.nstld.com. +tv. 172800 IN NS l5.nstld.com. +tv. 86400 IN DS 44904 8 1 3E447F7145888B3137E9D83EEC9FB77671A8647D +tv. 86400 IN DS 44904 8 2 1CFE1309925B78F42C8B4862A670B0BAB9FC142ED8B4D41E24C65FE6 A0D9DFB4 +tv. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JN9fK+BFJfINT+HZBPYCcw2+ivKVD7tbbOTFNe03aX18avDv2WtHep2D 8Er7ZobGgptpn7XG3/LOEDKsSyZSEVfXQD0TTa8cyYQqoXGSXVldxJmB NtR1wVvCTyGNx7e+lxNWY2xErtNcD0zhxCxLNYQqroSpcJv8dTzEvFXx DEo= +tv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Kd+4PsrEJ7AhDeJaXCUCgmwAqEqAXjmgIKNuWi0RhGDqdGSlgrfzwJ20 3Lt9r4hT8ZCeMyqNIeHOwAUPKYizBvGUCT5x7xKfS06nCidWjz2WFKaQ buyv96pifXtO487oYeUP3jVa81BkaERFrebuHQ3rKAxedOhZyDesLFoZ k2U= +tv. 86400 IN NSEC tw. NS DS RRSIG NSEC +tw. 172800 IN NS a.dns.tw. +tw. 172800 IN NS b.dns.tw. +tw. 172800 IN NS c.dns.tw. +tw. 172800 IN NS d.dns.tw. +tw. 172800 IN NS e.dns.tw. +tw. 172800 IN NS f.dns.tw. +tw. 172800 IN NS g.dns.tw. +tw. 172800 IN NS h.dns.tw. +tw. 172800 IN NS ns.twnic.net. +tw. 172800 IN NS sec4.apnic.net. +tw. 86400 IN DS 19780 8 2 FB47A76AA51546976D0DFAED95529D072B607B276CAC090DEDF42629 FD271B40 +tw. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . pwPQNKoAeTUhEiw7Rc3Q1jXkh5OsijEMKGVSsU8Hiagh3rlJ0nKDx5R6 bbYg7IvF6zaY+P37IFTi6zmQIMH06xRnTrIDuZCK1SzVXPpHkZdiAp0F Tt6cL9JC2VDsxAMI07DyHWpwSJAxDh4yVUkkLDacp42mkPWMu1Dn8+Q8 B8c= +tw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hhDHFXaMkB9trgX7Bs8mkMoIoDS4UgA4frAFtMQ01nUJajZZd2uI4l8O OhuzjcyEKBZMK+Z870mF+7Y4ZPtsfaxpaN2CCO8Fb4pBp2wHbC7Gv0sT 1g8VPkHVoBAPo65LlkaNJwWO7sXZxmdo3ESlur+kWMEvQI6tkvlu5g0C 4fY= +tw. 86400 IN NSEC tz. NS DS RRSIG NSEC +a.dns.tw. 172800 IN A 203.73.24.8 +a.dns.tw. 172800 IN AAAA 2001:cd8:800::8 +b.dns.tw. 172800 IN A 210.201.138.58 +b.dns.tw. 172800 IN AAAA 2404:0:10a0::58 +c.dns.tw. 172800 IN A 61.220.48.1 +c.dns.tw. 172800 IN AAAA 2001:b020:0:77::1 +d.dns.tw. 172800 IN A 210.17.9.230 +d.dns.tw. 172800 IN AAAA 2001:c50:ffff:1::230 +e.dns.tw. 172800 IN A 211.20.231.11 +e.dns.tw. 172800 IN AAAA 2001:b000:1e0:c000::11 +f.dns.tw. 172800 IN A 163.28.1.10 +g.dns.tw. 172800 IN A 220.229.225.195 +g.dns.tw. 172800 IN AAAA 2001:cd8:400::195 +h.dns.tw. 172800 IN A 203.119.3.1 +h.dns.tw. 172800 IN AAAA 2405:7e00:1001::111 +tz. 172800 IN NS d.ext.nic.cz. +tz. 172800 IN NS ns.anycast.co.tz. +tz. 172800 IN NS ns2.tznic.or.tz. +tz. 172800 IN NS rip.psg.com. +tz. 172800 IN NS fork.sth.dnsnode.net. +tz. 172800 IN NS ns-tz.afrinic.net. +tz. 172800 IN NS sns-pb.isc.org. +tz. 86400 IN DS 19948 5 1 F8EECE7181F56EA0C796DF630E648698391F1D66 +tz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XFWRAJU9ocxm4GH9FvymO/8Ww2ng3o5sKBX0G6wv/9nWifYs3YeHanLi rFPhkM8f61oxIY0fcMgxyLqdihLLa0ka4h/n0CQsU2OfFEFwvT06SsP/ HHZCDEfLXM85I7QgdXkQoYVpiaMH9imMT2fBTy+m5vy7NQOY6gUzKRYQ IFU= +tz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T1fc/PquNl2YiIAwTdnIRzZ75G0C5fCz48R8JoD87AVhwBWA9EEfzQBo 37R4u9///lkBjy7bTLyozDLREFu6XdfKw18kYMevIYyG+0XpuSV/lfCt rKJk3QFq6m2Z9bQxm6tTClBp+NCjeip0JCNG0XIw4rLip2pMpWPJtfmz C34= +tz. 86400 IN NSEC ua. NS DS RRSIG NSEC +ns.anycast.co.tz. 172800 IN A 204.61.216.15 +ns.anycast.co.tz. 172800 IN AAAA 2001:500:14:6015:ad::1 +ns2.tznic.or.tz. 172800 IN A 196.216.162.67 +ns2.tznic.or.tz. 172800 IN AAAA 2001:43f8:e0:1::67 +ua. 86400 IN NSEC ug. NS DS RRSIG NSEC +ua. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mQYoXfhVT6RPsijyZtaZzb4WHLBV2IJzBXyaakX4u8lJYO1+zFkWYfuN dMR+0OZVECsNOxfNEEUIOpSFmy/qldH00ZDWKPFz1k5J8hNr/i5L7H9T YuRc/d7+ktiOiTZA4GIpnk/DmCZO0OVEsxRHKnMTioL7e2Gvs5BRl8/R tTg= +ua. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j8wVYuLs1FxBNzDHdR7WY0yMsByB73MFXW8rpl0oziPri9raaQ0IX54/ GSgFCgoGz0S39RBJNrejhJp/reA6L0+1j1a0IqS/0fn/49YbTSg/lVrZ uXiEyBiQeOaQ/zPjiSMk/4HPmk7KG+nVn42uybum6+0OQ64s8EDdB0/V xkQ= +ua. 172800 IN NS cd1.ns.ua. +ua. 172800 IN NS he1.ns.ua. +ua. 172800 IN NS ho1.ns.ua. +ua. 172800 IN NS pch.ns.ua. +ua. 172800 IN NS ripe.ns.ua. +ua. 172800 IN NS sns-pb.isc.org. +ua. 86400 IN DS 56514 10 2 BDD7A310534F76B2B6B25C94F816F9B9F260A2E35F526A9287E3307F B2CD16D8 +az.hostmaster.ua. 172800 IN A 195.47.253.13 +az.hostmaster.ua. 172800 IN AAAA 2001:67c:258::13 +ge.hostmaster.ua. 172800 IN A 195.47.253.18 +ge.hostmaster.ua. 172800 IN AAAA 2001:67c:258::18 +tier1.num.net.ua. 172800 IN A 193.110.163.134 +cd1.ns.ua. 172800 IN A 194.0.1.9 +cd1.ns.ua. 172800 IN AAAA 2001:678:4::9 +he1.ns.ua. 172800 IN A 216.218.215.27 +he1.ns.ua. 172800 IN AAAA 2001:470:2e:1::27 +ho1.ns.ua. 172800 IN A 195.47.253.1 +ho1.ns.ua. 172800 IN AAAA 2001:67c:258::1 +pch.ns.ua. 172800 IN A 204.61.216.12 +pch.ns.ua. 172800 IN AAAA 2001:500:14:6012:ad::1 +ripe.ns.ua. 172800 IN A 193.0.9.121 +ripe.ns.ua. 172800 IN AAAA 2001:67c:e0::121 +ug. 172800 IN NS ns.icann.org. +ug. 172800 IN NS ug.cctld.authdns.ripe.net. +ug. 172800 IN NS root.eahd.or.ug. +ug. 172800 IN NS ns-ug.afrinic.net. +ug. 172800 IN NS anycast.eahd.or.ug. +ug. 86400 IN DS 2767 8 2 4278D7C4B2B45738A39F310EAC36558411BD547812517BDF23F95FCB B4796B2E +ug. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MW3OzGd8NC1zGvGjS3t4s6Vd11uiOS6EB/1MNOilC8ZZ4PA3mYIn9Zhk TpS5w4KWXOmIdO4qQccqLI4vfwMgnb9MPpC9HjDV5Sq02JJzOM02EwDw 7CLYxNwGXDu7O3qSB42HFn2IyFsUfq/X6n8flqXeMgxWRvinExN2yL13 /nQ= +ug. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uhLUfrTG/dK+4edCXNhBJ7ocwsa+SzUteslbMmBhGNu+yycs6cFEjNVQ ZPMKHDTcd0Qn1jmZ28YfdC/Byahh0JxLiflwLFVDbZpXm2WwB85hNwYx gvQmgTymPz+iPUcgtU+er4CdIfrUF3YYYI1IQdBY/hB8nfq6jbnyOaz9 TKI= +ug. 86400 IN NSEC uk. NS DS RRSIG NSEC +anycast.eahd.or.ug. 172800 IN A 204.61.216.60 +anycast.eahd.or.ug. 172800 IN AAAA 2001:500:14:6060:ad::1 +root.eahd.or.ug. 172800 IN A 212.88.97.132 +uk. 86400 IN NSEC uno. NS DS RRSIG NSEC +uk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nbNW5v0Y01oCYDmutb56p3H3ENLKzQSs9gMp/DqL/Z4ysTXEIwGlIFTS hBMtDflkv4ptzsY2aXwubqttTFDObL3IRg7aV9cgpNeipoTeL1wj/mK+ cn5aqjkqkOSe3eDwaBT9gduTgw6NFDIujCijdVlmPiD5DXuXtd25J82D P6I= +uk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jyf5cfyHEKN07Lt8Xn0/DBd0IoAKkW5x/izVX5dgOnGk1NJ/UtoQbDSY c5diZlNlo8LLZCzmAEv4Qr8hufPjTarij7C0XJNEdfcuCcjBfU1pj46+ oHW4Summ9tmgCjmtnr5XDu+mcg1pJz5QiRrFgU8OzRrJeKTFmwcIWITb 1ic= +uk. 172800 IN NS ns1.nic.uk. +uk. 172800 IN NS ns2.nic.uk. +uk. 172800 IN NS ns3.nic.uk. +uk. 172800 IN NS ns4.nic.uk. +uk. 172800 IN NS ns5.nic.uk. +uk. 172800 IN NS ns6.nic.uk. +uk. 172800 IN NS ns7.nic.uk. +uk. 172800 IN NS nsa.nic.uk. +uk. 172800 IN NS nsb.nic.uk. +uk. 172800 IN NS nsc.nic.uk. +uk. 172800 IN NS nsd.nic.uk. +uk. 86400 IN DS 15191 8 2 A057C8553B1DC6CF158A87CD2D0BAA2CDC9C6A14FA03DE02B19AB0DA 62AF279E +ns1.cs.ucl.ac.uk. 172800 IN A 128.16.5.32 +barney.advsys.co.uk. 172800 IN A 217.23.160.50 +ns3.icb.co.uk. 172800 IN A 91.208.95.130 +tld6.ultradns.co.uk. 172800 IN A 198.133.199.11 +ns1.nic.uk. 172800 IN A 195.66.240.130 +ns1.nic.uk. 172800 IN AAAA 2a01:40:1001:35::2 +ns2.nic.uk. 172800 IN A 217.79.164.131 +ns3.nic.uk. 172800 IN A 213.219.13.131 +ns4.nic.uk. 172800 IN A 194.83.244.131 +ns4.nic.uk. 172800 IN AAAA 2001:630:181:35::83 +ns5.nic.uk. 172800 IN A 213.246.167.131 +ns6.nic.uk. 172800 IN A 213.248.254.130 +ns7.nic.uk. 172800 IN A 212.121.40.130 +nsa.nic.uk. 172800 IN A 156.154.100.3 +nsa.nic.uk. 172800 IN AAAA 2001:502:ad09::3 +nsb.nic.uk. 172800 IN A 156.154.101.3 +nsc.nic.uk. 172800 IN A 156.154.102.3 +nsd.nic.uk. 172800 IN A 156.154.103.3 +uno. 172800 IN NS ns1.dns.nic.uno. +uno. 172800 IN NS ns2.dns.nic.uno. +uno. 172800 IN NS ns3.dns.nic.uno. +uno. 172800 IN NS ns4.dns.nic.uno. +uno. 172800 IN NS ns5.dns.nic.uno. +uno. 172800 IN NS ns6.dns.nic.uno. +uno. 172800 IN NS ns7.dns.nic.uno. +uno. 86400 IN DS 57892 8 1 3B49FDC11DAEE5187A4170A5BADF77A917BCE481 +uno. 86400 IN DS 57892 8 2 C156DD21B3B96A50FA94BE322CDF6F0144E86C9597E4AA56D53E9B49 0C94A537 +uno. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hH2AHmBVG+BOWoZiN674PwZVwAANo+EZq1WIv+oqZTvZL5uKt8y2OjcM t/5dDwnv1alGxu18oVoAmfaU3Fl6Ctvmd1F7RAuoSyb+8XX0t9h/WDKO vbRIEA2RtGZwdcAIkhHwN3P5zkj0Lf8Omi7jkXsp9GWHiDCoPqPl7L0W aSA= +uno. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PrJJt8LI+vk1WM+9DhTiBLAHJyYgHicWtzTd7+PHCOlbbWjblarIGhn4 4IvBIHz8eBH1kyyjmN3q6539/sucfY7HwOUUulA/C94AF2LJiLdpOiEX bLA4hYZUMcU5NQ112ufoXXTGg0tEVGJxfWPqt4cgbN/W4LJR+0bmcSWF AZg= +uno. 86400 IN NSEC us. NS DS RRSIG NSEC +ns1.dns.nic.uno. 172800 IN A 156.154.144.173 +ns1.dns.nic.uno. 172800 IN AAAA 2610:a1:1071::ad +ns2.dns.nic.uno. 172800 IN A 156.154.145.173 +ns2.dns.nic.uno. 172800 IN AAAA 2610:a1:1072::ad +ns3.dns.nic.uno. 172800 IN A 156.154.159.173 +ns3.dns.nic.uno. 172800 IN AAAA 2610:a1:1073::ad +ns4.dns.nic.uno. 172800 IN A 156.154.156.173 +ns4.dns.nic.uno. 172800 IN AAAA 2610:a1:1074::ad +ns5.dns.nic.uno. 172800 IN A 156.154.157.173 +ns5.dns.nic.uno. 172800 IN AAAA 2610:a1:1075::ad +ns6.dns.nic.uno. 172800 IN A 156.154.158.173 +ns6.dns.nic.uno. 172800 IN AAAA 2610:a1:1076::ad +ns7.dns.nic.uno. 172800 IN A 207.34.5.10 +ns7.dns.nic.uno. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +us. 172800 IN NS a.cctld.us. +us. 172800 IN NS b.cctld.us. +us. 172800 IN NS c.cctld.us. +us. 172800 IN NS e.cctld.us. +us. 172800 IN NS f.cctld.us. +us. 172800 IN NS k.cctld.us. +us. 86400 IN DS 55408 5 1 A66648238215F3DD5865471DF37606675FDF85A5 +us. 86400 IN DS 55408 5 2 BC044879B104ECACAE7536A070FE3E9C282314A73331095FF267DA90 1957458B +us. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . b+t+rlPYP5v0A4Byby5iG860Jm3jnN6A/b4yOa7zlFbgPpVV0tUgClL7 RlKA/oGeIMkGTKRCKcxSQ/M5YCgyONARcketiKY5POh7bee0qBwBbF5P I9RY0Ot6Y4VJCmGKIJ8VRJztLHiagT03na/NRiVcd9WtO8bwMCEpinXz 0CI= +us. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MtbeYNXUhSwGkKxlfkl3trNYBG4RwTxU3esFmCIWo24AU7g0g9jUcRk8 yvBOfGb76dDr1aKSNWm4orm2RFhc7uEsC86qhijizt2m5RrF0GGnhlD2 XOtNJmWzevK/l4MiQ0kWP6r3VoHCDBICm+jrirvAb2a2fKihNPntYlCz HzY= +us. 86400 IN NSEC uy. NS DS RRSIG NSEC +a.cctld.us. 172800 IN A 156.154.124.70 +b.cctld.us. 172800 IN A 156.154.125.70 +b.cctld.us. 172800 IN AAAA 2001:503:d1ae:ffff:ffff:ffff:ffff:ff7e +c.cctld.us. 172800 IN A 156.154.127.70 +e.cctld.us. 172800 IN A 156.154.126.70 +f.cctld.us. 172800 IN A 209.173.58.70 +f.cctld.us. 172800 IN AAAA 2001:500:3682::11 +k.cctld.us. 172800 IN A 156.154.128.70 +k.cctld.us. 172800 IN AAAA 2001:503:e239::3:1 +uy. 172800 IN NS ns.dns.br. +uy. 172800 IN NS uy.cctld.authdns.ripe.net. +uy. 172800 IN NS ns3.nic.mx. +uy. 172800 IN NS seciu.edu.uy. +uy. 172800 IN NS ultra.seciu.uy. +uy. 172800 IN NS sns-pb.isc.org. +uy. 86400 IN NSEC uz. NS RRSIG NSEC +uy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QO0GT48RKCL6rfCXnJAA4cQ7xmXGQ39DNZD+AFHrT0bHYI31y39KH8uz GGPxqCLwAtMVXUMNY1l4BS4gcWl2PVE6cBbqLxDE1AA2eM1FUsBDh0lN msordIkXv1DGZWagiiXyT1n0zaeLVq8Pfk4DHt1LBM1IELhoH52F5GMm K8w= +seciu.edu.uy. 172800 IN A 164.73.128.5 +seciu.edu.uy. 172800 IN AAAA 2001:1328:6::5 +ultra.seciu.uy. 172800 IN A 164.73.128.70 +uz. 172800 IN NS ns.uz. +uz. 172800 IN NS ns2.uz. +uz. 172800 IN NS ns3.uz. +uz. 172800 IN NS ns4.uz. +uz. 172800 IN NS ns5.uz. +uz. 172800 IN NS ns6.uz. +uz. 172800 IN NS ns7.uz. +uz. 86400 IN NSEC va. NS RRSIG NSEC +uz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MI2K9E+pjtdu4lk0Mf0w8s0GKYNZ5bZFOMPctPQ/hg8ykSyi24CJ5/Zc KFPeccXbtu9BXXlFNMiQBJHPEGcjwhu3TNaOubYjRQhyrY/+Rj/gG92/ rF653dHRkVz0QjG7VT/U9Oha0WWQPsQwZT06FP4JUCHvEq26fej0uUKY axk= +ns.uz. 172800 IN A 91.212.89.8 +ns2.uz. 172800 IN A 81.95.224.158 +ns3.uz. 172800 IN A 195.158.1.22 +ns4.uz. 172800 IN A 87.139.105.60 +ns5.uz. 172800 IN A 217.12.81.129 +ns6.uz. 172800 IN A 83.69.129.4 +ns7.uz. 172800 IN A 54.200.69.96 +va. 172800 IN NS va.cctld.authdns.ripe.net. +va. 172800 IN NS dns.nic.it. +va. 172800 IN NS john.vatican.va. +va. 172800 IN NS seth.namex.it. +va. 172800 IN NS osiris.namex.it. +va. 172800 IN NS michael.vatican.va. +va. 86400 IN NSEC vc. NS RRSIG NSEC +va. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BrR2h3lJVDx0fznLpo6DqFM356YXbuELwEvxD3qUKmC+kcAYvZTbGnLM SsbeP0R9b8o2efIVctBx19+VkAy4T7rpUp1iU1wfa1Rde4IftTMZwIFM /2OZJqj8wribh5pPgAjfzxq96liK+h0GpEZbNam++z5c+xbavKbtjAIv XLg= +john.vatican.va. 172800 IN A 212.77.0.110 +john.vatican.va. 172800 IN AAAA 2a01:b8:0:1:212:77:0:110 +michael.vatican.va. 172800 IN A 212.77.0.2 +michael.vatican.va. 172800 IN AAAA 2a01:b8:0:1:212:77:0:2 +vc. 172800 IN NS a0.cctld.afilias-nst.info. +vc. 172800 IN NS a2.cctld.afilias-nst.info. +vc. 172800 IN NS b0.cctld.afilias-nst.org. +vc. 172800 IN NS b2.cctld.afilias-nst.org. +vc. 172800 IN NS c0.cctld.afilias-nst.info. +vc. 172800 IN NS d0.cctld.afilias-nst.org. +vc. 86400 IN NSEC ve. NS RRSIG NSEC +vc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YCfr8ZKH+dTUwcowmK39WvJrH6pzDlZQgyKolRfk/D+/OWAD5Se5QToE /qPZAZOUD9KoIbDsDf4WY1hhqrpQ9UmJ6q6IBUDmZy5L5kKgSFTN0jtJ pe+ENXncWA5s1i16nkNjAM3IOBpgYH+/wuAGepNu3Ny/htn3YvMEXIs4 x8I= +ve. 172800 IN NS ns1.nic.ve. +ve. 172800 IN NS ns2.nic.ve. +ve. 172800 IN NS ns3.nic.ve. +ve. 172800 IN NS ns-ext.isc.org. +ve. 172800 IN NS ns-ext.nic.cl. +ve. 172800 IN NS sns-pb.isc.org. +ve. 172800 IN NS azmodan.ula.ve. +ve. 86400 IN NSEC ventures. NS RRSIG NSEC +ve. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nfH9NP+0BKRNoCZBBoi15t/Lr/jwe2m38H5p4a2KPrhb2J+mzciUkKyG S7aA2ANjBlWCTLr9A7AV0wqnSnyeHMEVjsQtIGUtGg04LtCO+qhl/9+A 8zs1p1gQBm//Sikp+f9jQfGOM8tD8url7/9OsH8Z+CGVBgZ5YvPb3XW/ 770= +ns1.nic.ve. 172800 IN A 150.188.228.4 +ns1.nic.ve. 172800 IN AAAA 2001:1338::2 +ns2.nic.ve. 172800 IN A 150.188.228.5 +ns2.nic.ve. 172800 IN AAAA 2001:1338::3 +ns3.nic.ve. 172800 IN A 190.9.129.56 +azmodan.ula.ve. 172800 IN A 150.185.130.16 +ventures. 172800 IN NS demand.beta.aridns.net.au. +ventures. 172800 IN NS demand.alpha.aridns.net.au. +ventures. 172800 IN NS demand.delta.aridns.net.au. +ventures. 172800 IN NS demand.gamma.aridns.net.au. +ventures. 86400 IN DS 12352 8 2 91175878089CE3054D9CA53EA05D2B71D06813D35F25871FB566374C 66C213A2 +ventures. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XUxEniu9xWmfkVtgNYTTCtTY9fwtdkvysE8G60RcylAdavZtelIEuI71 +9uEsoych2NoPqtDtKJ4mh4NfZAZ6cF65QdtOrasppJOhsisjc2/0fXJ aAW6r7VzjIJuO4povPMhaso5ifHO5hvSduWAnqFfmxmhdoH0y3sXLBtd 47A= +ventures. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kqRO75vLV4ywniNFQsdkJxWoLgnPXMSqpm2z7ltp8KTEYlAtTpFGguei I3uSL2w/h6mV6yrFrMvf0SWr1XjT6cZ3c4wPcQ2AdCF2t9p4OzXUXc7M 7aNJcClMzuOEVj81z3Rhjig0EmTN37zuFwuV0E52UMh7Ew2Hf5ws6d9O o3Y= +ventures. 86400 IN NSEC vg. NS DS RRSIG NSEC +vg. 172800 IN NS vg.cctld.authdns.ripe.net. +vg. 172800 IN NS ns1.root-servers.vg. +vg. 172800 IN NS asia.zone.vg. +vg. 172800 IN NS europe.zone.vg. +vg. 86400 IN NSEC vi. NS RRSIG NSEC +vg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hCHUHZo7i2RRo7IqfLHBuzFcMYUIirK16hkJ/jAyH7bveZfpY0xM7i2W nnxi6qsMRCAyk05/51R09EjhD8/VtkhHP2DlTHj7cGNxuPWtlyHrVGyH 6wNZo0+TFM5/NlNWKhemIYoV/4k0Uc/YRZ2tlJxzBQqscUOX2yXrwYGI vsI= +ns1.root-servers.vg. 172800 IN A 194.0.11.102 +ns1.root-servers.vg. 172800 IN AAAA 2001:678:e:102::53 +asia.zone.vg. 172800 IN A 31.169.81.226 +europe.zone.vg. 172800 IN A 77.79.104.226 +vi. 172800 IN NS ns1.cobex.net. +vi. 172800 IN NS ns1.krnic.net. +vi. 172800 IN NS ns2.cobex.net. +vi. 172800 IN NS auth100.ns.uu.net. +vi. 172800 IN NS auth110.ns.uu.net. +vi. 86400 IN NSEC viajes. NS RRSIG NSEC +vi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aS1Z3DVXx/aJaFWx4ax6+CT0kMqK+ZlSuToVmBFCJffqCcPL2DLWeCoY E4AIVVuWWQqut0lp3KyH8Z6WabiXycYPtM6xEAJMC7GXpNotSc2ifGsP cE33dtMPIOiTvmWXGJVIUic/c0QIA2PivuMSs8oO1GSLXZwDkiUOryic fbE= +viajes. 172800 IN NS demand.beta.aridns.net.au. +viajes. 172800 IN NS demand.alpha.aridns.net.au. +viajes. 172800 IN NS demand.delta.aridns.net.au. +viajes. 172800 IN NS demand.gamma.aridns.net.au. +viajes. 86400 IN DS 57850 8 2 EA1ECA41F59D77BF61A09E8F01297DABB2852D0A4A31D558BFCDB7FF BA8B22D6 +viajes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aCDxHYSJ0CEcOhqTXpz1TH7CLM0+ZiQ3lv9sc1PZNgPzfOWXXe6ZHGCt +xvxAfF9pF+lKf0pfsi/1iZosS0FfeVFHVXJPKhE6Q18f517u1tjUeAX WOJIkyage7w7p3DaHS6TEjLnCnQ3QpsY06C1HOwUjHJr5qn95rwQHNw8 PyE= +viajes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K/obZOYu+NWuBx0NXCb94katyuUIeaqnSEgFU7rUk2A1K0Ng4DWmUOOC a2+2AxEJtNtCw7vOhqy4hOcQleYDZknXDQxh0W2oi8pBOAQzdPOniKrU S1cpuSaA+OkIPdtXdXr1rled2adFQzoqcUabh0W/jWGgQ6RHMhbzM/uF 9fw= +viajes. 86400 IN NSEC vn. NS DS RRSIG NSEC +vn. 172800 IN NS a.dns-servers.vn. +vn. 172800 IN NS b.dns-servers.vn. +vn. 172800 IN NS c.dns-servers.vn. +vn. 172800 IN NS d.dns-servers.vn. +vn. 172800 IN NS e.dns-servers.vn. +vn. 172800 IN NS f.dns-servers.vn. +vn. 172800 IN NS vn.cctld.authdns.ripe.net. +vn. 86400 IN NSEC voting. NS RRSIG NSEC +vn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WPNleRJJIKb5OVu3hc1e2KfGG0yxDBGUa34qBev3ToTeNFiothVjF2BO 7id7tQq7rONSULP5rMMeQk4s/qtd1/RDSHVOxJbJxz8X+ZDpfe3D4dJr YmrSCeE8DFXlZphAS7FyNgcRjgZVOaKmpLVwuTys6nWH4NQXTKbj54zj LqA= +a.dns-servers.vn. 172800 IN A 194.0.1.18 +a.dns-servers.vn. 172800 IN AAAA 2001:678:4::12 +b.dns-servers.vn. 172800 IN A 203.119.10.105 +b.dns-servers.vn. 172800 IN AAAA 2001:dc8:0:7::105 +c.dns-servers.vn. 172800 IN A 203.119.38.105 +d.dns-servers.vn. 172800 IN A 203.119.44.105 +e.dns-servers.vn. 172800 IN A 203.119.60.105 +f.dns-servers.vn. 172800 IN A 203.119.68.105 +voting. 172800 IN NS a.dns.nic.voting. +voting. 172800 IN NS b.dns.nic.voting. +voting. 172800 IN NS c.dns.nic.voting. +voting. 86400 IN DS 22301 8 1 916F42C6CE97C6CFF9D0545167E2203A179667C2 +voting. 86400 IN DS 22301 8 2 E505E22BD2DCA54354C9EA9B0F09D4972390C9DCC6F342D9438D47F3 47A03B7D +voting. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CU8KRK0PMiLk7TjBZtJsGgbYECaaTW0853etq5qcxlszaXkFlysi7rJX a5zIFjiiHyFzQgHQca1Cw1nu1OkC/MShd5tyUMaJPSALWe1+VwP8Gyzi aM6gCV7SD72Hj3DyC8cF844Z53E/F5LlbZecUX3uylSbUwxfPhG+9rn7 uVA= +voting. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . m8Q85f2dPsqs77z5yL8UAPivjF7UekxP0aKQT5n37COJGtZ2j5urY2QR pe/31swnMzAMw5vD7SS8CatWuVAGlqnKlE+zLR5TbUxxSUJsz52/w1Cq zmOiS3bhla+uhg8r9EFZ+jK76hii+//sedZX4111XPlqKTlu9odoN8Ox BMI= +voting. 86400 IN NSEC voyage. NS DS RRSIG NSEC +a.dns.nic.voting. 172800 IN A 194.0.25.17 +a.dns.nic.voting. 172800 IN AAAA 2001:678:20::17 +b.dns.nic.voting. 172800 IN A 193.170.61.6 +b.dns.nic.voting. 172800 IN AAAA 2001:62a:a:2000::6 +c.dns.nic.voting. 172800 IN A 193.170.187.6 +c.dns.nic.voting. 172800 IN AAAA 2001:62a:a:3000::6 +voyage. 172800 IN NS demand.beta.aridns.net.au. +voyage. 172800 IN NS demand.alpha.aridns.net.au. +voyage. 172800 IN NS demand.delta.aridns.net.au. +voyage. 172800 IN NS demand.gamma.aridns.net.au. +voyage. 86400 IN DS 32134 8 2 F610100634FDC228FF5E4C1846E51D99DC3B0C2B8089933FBBF6D33E D543A332 +voyage. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . H2calSFhX/F5W8J94XHdA+cd0OsvXCEnC5zV8JTGsPHUinh65YUrFB19 Rscsg7wJ98cSjsjmqSlo0xcxad/jCi2s+QIMQ4ql7Fn9Bczijxs0DMgf 6yUvrTJ/gnxrqu/mvh4lhfAHRrAHTMa/wqPHv7j2H7+zzPuGXI5Wxb4L Ayo= +voyage. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hY4l2N2dauD0wcAqCXrn1YZOe/VhIPCyLnIQv2pvJotfaNybcFF2XFFY 0r1hWPoK36Ojc13LeaqkmrxgYRPVc80Cb2mGSp2kj2qo5vBeAXNoJ33o zmK7CBBBm/NYYL9/F6mjsd7cGIw7csQQ68pLNiJImyKVSFpyK14N2hj+ f7g= +voyage. 86400 IN NSEC vu. NS DS RRSIG NSEC +vu. 172800 IN NS efate.vanuatu.com.vu. +vu. 172800 IN NS santo.vanuatu.com.vu. +vu. 172800 IN NS futuna.vanuatu.com.vu. +vu. 172800 IN NS cctld-vu.orange.mu. +vu. 86400 IN NSEC wang. NS RRSIG NSEC +vu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fEpRzeSPvDCBnWPVc/g8BITvky6IxVvJBfmY3vaAHHoIMPS7ab9ekaC0 rzI8kdR4o99Dmh1ZFkWwNB6O3K3i1iIiNnWUIeZHjdgi9rOclUqkAgW4 XYEHqOmr+iL3XvChhetJb8eLnIZzCQ5k1meqsKwJnGi2tyPH0FnEfqJG +sc= +efate.vanuatu.com.vu. 172800 IN A 202.80.32.5 +futuna.vanuatu.com.vu. 172800 IN A 202.80.32.3 +santo.vanuatu.com.vu. 172800 IN A 202.80.32.7 +wang. 172800 IN NS a.zdnscloud.com. +wang. 172800 IN NS b.zdnscloud.com. +wang. 172800 IN NS c.zdnscloud.com. +wang. 172800 IN NS d.zdnscloud.com. +wang. 172800 IN NS e.zdnscloud.com. +wang. 172800 IN NS f.zdnscloud.com. +wang. 172800 IN NS g.zdnscloud.com. +wang. 172800 IN NS i.zdnscloud.com. +wang. 172800 IN NS j.zdnscloud.com. +wang. 86400 IN DS 26809 8 2 A7FDCE2D689D6C3CDC4275348667E0FE258136B879787E69C89A1C12 5CF23F67 +wang. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K1NGdK/9MX1imEbHgMnO52cvEO7U0n0Iet89eh2FrpD8G01wG8+kOT1n pK4sc5f228wbXRmg6K28XeB7dmtuM1W7cTIbrN0+HMxcwpU77JuDsFfD zoYkaywgC3DPPG0QlvakgS7k0reZ710I7F1FJhnYhNRTW1SO77rT/6tF zxk= +wang. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XASuMFIx8rM52SP9bBsw3K7/Gs2LD+91ZVuT8fP101t8wTgXJMwK/7HM J7RtyNUX6gI24s4U69NWZwoYg2N1Nfu5jzu0+nmlYPHxMqUYfUUpocUB i6h4i7dCX+AnCBzPOCzbPGS4Dgdws7g7gup1V19zmgr6uiJdDz/TY6cd zIc= +wang. 86400 IN NSEC watch. NS DS RRSIG NSEC +watch. 172800 IN NS demand.beta.aridns.net.au. +watch. 172800 IN NS demand.alpha.aridns.net.au. +watch. 172800 IN NS demand.delta.aridns.net.au. +watch. 172800 IN NS demand.gamma.aridns.net.au. +watch. 86400 IN DS 28750 8 2 104A558919E526604A35B4C96D6832FDD499E5EF07313C628AB27F1E 715C39D9 +watch. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QezgVgFB3fTaQsHJfhCSM6XQa0fwoO9ghBL6ckWR/DO85lvP3I//jQ0l DawDzPFm8chIsQLOyW+f3sbTSJvpT92s+aDuiAJQ2FTvxOaYAKuPOo4S V+zCe8DiYF2nwk/zkoEsMON3QN/bzf77OHOn8Rc79AZWn4q3NQ8hJfou nj0= +watch. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . guThbhCIjbUAptB9xDvAYhkzMgbpFH51VmC7xcwTQrIExoziag9s8D0u fyxj9ncTH0EsKu7wTvXwvDaZiEbpnGJVe2Sv55wi8ULnBc1pI01yjuDf yynPPlwZXkHVuD7W2fG4VLhDu7w7//pau/2rP1IKBJ/rcB1jRfBc7AeV c3s= +watch. 86400 IN NSEC wed. NS DS RRSIG NSEC +wed. 172800 IN NS a.ns.nic.wed. +wed. 172800 IN NS b.ns.nic.wed. +wed. 172800 IN NS tld.isc-sns.com. +wed. 172800 IN NS tld.isc-sns.net. +wed. 172800 IN NS tld.isc-sns.info. +wed. 86400 IN DS 23807 8 2 A1453299115DB6CC44E33B102BDF276CB93A6A103F6502EA5EF1D4EC F2172640 +wed. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Bw1p+4epi4tSQzRxauuHzDgFt+jCIL312X+TSFvvmpKviTucYv5+wsqi L166uyxJJ9mCjBE44qD8d8CwWuAW3IQX7Q/RHlDitgn0Eex2mtynkmsm 50DwCrvVU06RuNKu+XyB2/81e+i4/UDw81fgTGBTPHSD+OmG225ebCLU M/8= +wed. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Lj/A0grV+vlJIXvApOa5MrKf1sawIezHpTgkkjaE1Ssro8il7evM/BWy EO4AxXNfCV17L2sXhTP5xYxiGnr4PYd2ArvMMX4rgqchqwlrcJIgQ3cY 5Jf9cUq9qe0XyIhd7X9RbRyl/N5sO99hXEzdhcBb9zpVfLwBMBrmJ9Zi o+Q= +wed. 86400 IN NSEC wf. NS DS RRSIG NSEC +a.ns.nic.wed. 172800 IN A 72.0.49.1 +a.ns.nic.wed. 172800 IN AAAA 2620:171:a01:ad::1 +b.ns.nic.wed. 172800 IN A 72.42.113.1 +b.ns.nic.wed. 172800 IN AAAA 2620:171:d01:dc::1 +wf. 172800 IN NS d.ext.nic.fr. +wf. 172800 IN NS d.nic.fr. +wf. 172800 IN NS e.ext.nic.fr. +wf. 172800 IN NS f.ext.nic.fr. +wf. 172800 IN NS g.ext.nic.fr. +wf. 86400 IN DS 14407 8 2 7DA5F1EBDA6DDCA8B41F753D9C30C36B8D7D21C362819883D0F402A0 484A6036 +wf. 86400 IN DS 33562 8 2 8FC2E75050231829A3468F447D14D28C3CB6A7A1DE814FDC6287180B 06D23111 +wf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aEtImJmeY37szR8CcrZgJI2qU+IqdHdnOaLNhcN+scE0rRK1mALKP8nz 1+s5PZwQi25334m57ZJliuFgmDA2nyR1pSL3eJm5xqvRR8CjZOisiYoN C2VGf37YD3OYtrNtjorI3BkBY3Ujm4AE4SDq29JjfaN7gWgUE3CevNaE scs= +wf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gl58UyMZMMdU4moh17qCMJZfeJvn93o9PQQbOG8vN8pBWnmNr85+O0ys HyMqB2FpPx8u3WfR7jgzzzGXR5NCco26hYqT1AEKkkxvuWKZnSAP/Egn qk9zl4hYDjVXVR9pJYXLsCIpSqStwZd+5Qh/mk9fGMiD8kX4mRkTSxTH aUE= +wf. 86400 IN NSEC wien. NS DS RRSIG NSEC +wien. 172800 IN NS a.dns.nic.wien. +wien. 172800 IN NS b.dns.nic.wien. +wien. 172800 IN NS c.dns.nic.wien. +wien. 86400 IN DS 14212 8 1 C13133146394C4D51F5821A57DF7714C7758B354 +wien. 86400 IN DS 14212 8 2 0C2459E744411A5077304E63B4E20E4E877B34F6E1FC3110FEA8133D D894BFBB +wien. 86400 IN DS 23090 8 1 955DD806C0A98C7D91296E8C75A1EC636B1A3DD7 +wien. 86400 IN DS 23090 8 2 6A4B8394B41753028F4D627E86CF80EF6DE63FD48447A92E3B46854B 9489798F +wien. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BPeNakbrXYeXszaY7ZuRIhD08pn5vMIefPCgdHPQezhi8vguMph7AIwt 5YxcY4pfj4Obfsh8FtF/qFjj9MqRPAQeeMzhuQxQf2C4kQ4qhxXfJS+E SNLwI0oeeAgBKx3+2gdEYicWpDRADPrvYc9Xh8rJSJzRgEeGDUJpHFEf 7xY= +wien. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oqBrTMOH+j38e1rnMsuS+swrpAZ+uSkxls4l4nOsL0rCUK/sQLKkd2c6 MUA3gN2ZdEHOlYtDTSsrz5X+L4YEy0pUixU6b9ELxSz25dnFz3+lYbc5 9I5wOwSvocPfm4KDtg5O00rSvsFWQ75SeagcuHh1QElRCIJSgjQh5OAg mbE= +wien. 86400 IN NSEC works. NS DS RRSIG NSEC +a.dns.nic.wien. 172800 IN A 194.0.25.15 +a.dns.nic.wien. 172800 IN AAAA 2001:678:20::15 +b.dns.nic.wien. 172800 IN A 193.170.61.4 +b.dns.nic.wien. 172800 IN AAAA 2001:62a:a:2000::4 +c.dns.nic.wien. 172800 IN A 193.170.187.4 +c.dns.nic.wien. 172800 IN AAAA 2001:62a:a:3000::4 +works. 172800 IN NS demand.beta.aridns.net.au. +works. 172800 IN NS demand.alpha.aridns.net.au. +works. 172800 IN NS demand.delta.aridns.net.au. +works. 172800 IN NS demand.gamma.aridns.net.au. +works. 86400 IN DS 16954 8 2 E60E67E7D2C27A10DD15E494009CF20208178D7E686EBA5C34AA60CF 6BB4157A +works. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . h+V+HqZ+YjX3GJx5eTcnCcNYNGhNbmJv37f/5LqT3X+qpI9E9/k87I0C hSMkuhZs2TaAJRLO/ISz/I3oPBZQGPq1XGMlDZJ4x1YL3Zud0Qz5nkDw 3cEV5Yzp58/58boGZVP+u80z1q6HlZPrhVSw3yV3VW/isJPo1cSYFydt 6ns= +works. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Yby3sz5j4VTA5v4aKMFa1n3axW9VFJc/L7xU8SN8LvK9xeXUVdhpzWvs 0GMiF7O0TgJL7hi6Pi1gSREam7sZ0CBDc/zLb/LS+BGyHRsqEtIgXxwV AM97bu8rRuVaq55xJvfOmgbrzYP8WpGGhfmSADIngnPeNjbM1HHfbM4j ob0= +works. 86400 IN NSEC ws. NS DS RRSIG NSEC +ws. 172800 IN NS ns2.dns.ws. +ws. 172800 IN NS ns3.dns.ws. +ws. 172800 IN NS ns4.dns.ws. +ws. 172800 IN NS ns5.dns.ws. +ws. 172800 IN NS ns6.dns.ws. +ws. 172800 IN NS ns7.dns.ws. +ws. 86400 IN NSEC 集团. NS RRSIG NSEC +ws. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dscR696LRma2D6vU5AK2aDXPBw7zqiOjuJBoB2ILcadvRBIPj3pNg7XA jhzdL1xd1d9Hdbfkmz+AOdXjekli2N2vF2PaUqJd2TEPVROkmdOWNFAi asjc+wQ5EiE4tdeg9UM3xWSgk+TBHBOJLqfTK6JnU23eXZ4tPCLs/V8a QV0= +ns2.dns.ws. 172800 IN A 64.70.19.80 +ns3.dns.ws. 172800 IN A 67.221.178.52 +ns4.dns.ws. 172800 IN A 67.221.178.53 +ns5.dns.ws. 172800 IN A 64.70.19.70 +ns6.dns.ws. 172800 IN A 77.92.65.172 +ns7.dns.ws. 172800 IN A 77.92.65.174 +集团. 172800 IN NS a.zdnscloud.com. +集团. 172800 IN NS b.zdnscloud.com. +集团. 172800 IN NS c.zdnscloud.com. +集团. 172800 IN NS d.zdnscloud.com. +集团. 172800 IN NS e.zdnscloud.com. +集团. 172800 IN NS f.zdnscloud.com. +集团. 172800 IN NS g.zdnscloud.com. +集团. 172800 IN NS i.zdnscloud.com. +集团. 172800 IN NS j.zdnscloud.com. +集团. 86400 IN DS 9059 8 2 E8079352130447DAA7F3E4809A9D5D208944FE4D99ED148D3BCC933C 05D4133E +集团. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PnBqYi9XRru4pVvSFanRxQGlvNgy1JhXw9Alk/rBchvhLom0iGHmwEhx nvzRj9H+nN/HNb9e1wTwv31H0ojQsxXHus6480O6JZZ1nHr4dzA+hCD8 JkCIMtECjS2hmqGO8zN2JkjNiG4zqVaAaMlYg/rDu5yhlXeGbd0AKeDy uCM= +集团. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u1d5FJHJuwrG3oeuMEqipf3guBHqCxB1SBJRI+Myko0PKW7sXgSq6ipe uJtwBw11R+CkQvchmALELBXo0EDDS7svdbYKLs4OJqqdpozv5qOuC4cw ZGJBlIiylW7fq3MYrtm9s3i+ZBTVdyl0RPSXr09ePuF4jQqvOxp4/hdu Pn4= +集团. 86400 IN NSEC 在线. NS DS RRSIG NSEC +在线. 172800 IN NS a0.nic.在线. +在线. 172800 IN NS a2.nic.在线. +在线. 172800 IN NS b0.nic.在线. +在线. 172800 IN NS c0.nic.在线. +在线. 86400 IN DS 16918 7 1 9A0C050DE2A06E4F656D4AF6E289B8AB76E524B0 +在线. 86400 IN DS 16918 7 2 5770C75D8F11887B7845A83A145DE52439BF7D86D3F71F07358112C8 7EA43B8B +在线. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . KrH/tLKzv72lOSsE2oXRk+tA9GwZJGeoYxotklRRawD5sPS0XRCH0Og0 CBnzK+0hdTqvq9sd2g9wZpgT+YjfD21ZJJh4BbcgzPZMzVdPPCWRmOAm g7dItHbyFEpBhYMOjZ4rcVHVWhTbqiDIU5IptIM1ZqAe3DHDPLDUZ2b0 rpk= +在线. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CLm/5Ba1YF8h3/2ZZIxh5XoINOKQzcYFyI9zermV5gTZsXaAnqmtq2Bs az7wc0oJpA6s9P7HCN9skc7iRP7OjAWvWIHMMvX1BiTR9OxsqBrmDP3J VgLQ0Yt9TiIMPg656Fn/djx7gB93cyAUyRSt5KAuJCoTbQTYL7021EXt KYY= +在线. 86400 IN NSEC 한국. NS DS RRSIG NSEC +a0.nic.在线. 172800 IN A 65.22.188.9 +a0.nic.在线. 172800 IN AAAA 2a01:8840:b6::9 +a2.nic.在线. 172800 IN A 65.22.191.9 +a2.nic.在线. 172800 IN AAAA 2a01:8840:b9::9 +b0.nic.在线. 172800 IN A 65.22.189.9 +b0.nic.在线. 172800 IN AAAA 2a01:8840:b7::9 +c0.nic.在线. 172800 IN A 65.22.190.9 +c0.nic.在线. 172800 IN AAAA 2a01:8840:b8::9 +한국. 172800 IN NS b.dns.kr. +한국. 172800 IN NS c.dns.kr. +한국. 172800 IN NS d.dns.kr. +한국. 172800 IN NS e.dns.kr. +한국. 172800 IN NS f.dns.kr. +한국. 172800 IN NS g.dns.kr. +한국. 86400 IN DS 27573 7 2 A1C0A1B101F2B31DA2DD995BD0994A6C1E9E34E325FA007E2EA8721D FC4C6CB4 +한국. 86400 IN DS 56335 7 2 ED307DC0902F1130ADBCB1B6FBA7C16F76927BD3E33D80FED23DAEFE FF2604C8 +한국. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Yu4hoEDcHZyoJLzOF2Uo8RJfSFEVUjP4eJtUwzspMko9vFWbiLofsMSQ r4FP1j0kJi2Wpq9ta0Kd5hm9fCamRZPsKCuhNleyYqQTMXB9dFc4+5ge i+miueof5q04MNBmGb32WvehCRi3TQcL2/TjgGpLS2hQLkOT4w6dQZIU KM0= +한국. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Mae3yC88AvKVdqABNbISNe7tlDJ7RW4FGHHVm28Ler3bz9z2hggRpBgT c5cpMx4KkAW554HV7ZJ0AQ5XdgfAtrlzk2I7rZS02t841Z6iJuWy4Sos 8JeWSiEKcPzhC+JiPwc7P42cLT+STi4uClyNZa23rq/ZOHm4YFrr0WFP wHY= +한국. 86400 IN NSEC ভারত. NS DS RRSIG NSEC +ভারত. 172800 IN NS a0.cctld.afilias-nst.info. +ভারত. 172800 IN NS a1.in.afilias-nst.in. +ভারত. 172800 IN NS a2.in.afilias-nst.info. +ভারত. 172800 IN NS b0.cctld.afilias-nst.org. +ভারত. 172800 IN NS b1.in.afilias-nst.in. +ভারত. 172800 IN NS b2.in.afilias-nst.org. +ভারত. 172800 IN NS c0.cctld.afilias-nst.info. +ভারত. 172800 IN NS d0.cctld.afilias-nst.org. +ভারত. 86400 IN NSEC 公益. NS RRSIG NSEC +ভারত. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DErDSYjA3sj1+V/vKK9Ed3PWZFzG8GH4QBAdcPIUVe9lCW5Q798ZA5iJ 2zQ+kEFqeKQiCM611EJOF7zK7eYAovTGAa+zxHLX/jpuxh0GM/LIn3Cd f9QyhNf6zms2QLwGF8gKuwzjFKpTqvXX9At2sch3JEsEVm4YomS8Vcm2 s+s= +公益. 172800 IN NS ns1.conac.cn. +公益. 172800 IN NS ns2.conac.cn. +公益. 172800 IN NS ns3.conac.cn. +公益. 172800 IN NS ns4.conac.cn. +公益. 172800 IN NS ns5.conac.cn. +公益. 86400 IN DS 48226 8 2 A16754C480E58C0D17126B3BAF93F32BAC39A916CF9D1F6F3A1F5C33 687BE80F +公益. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BSieRNuE6ERvMs+Di0O54pg7FLzcPYgCHQ60x744NyzGDoWaKeKY6W2v JQbQ587dGc4EKEkVp0ORxk6wVZYeLnDP35vBKNEfNwTd2kdnPCeGqre0 uMVTfh03UQMPFp9riD2rec1c/rHHcRL90Do/QABZuMeLEPV4S+keJhPk uO4= +公益. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PWLHn8l33mVeh81MOKdXXmurA0RWA6IvDCQTmySEk6PXbu2DK5OJxM50 W8u9wyt7i+UUN33okb7nBxKlt1xjzTfWu6XaX4icA3q2Os+vIL0gi6oh zqi6LwI6t4v9QwmwZKyFd3zgUWoEesQ5zyELaULa31DnePvfwp47c7vy tK0= +公益. 86400 IN NSEC å…¬å¸. NS DS RRSIG NSEC +å…¬å¸. 172800 IN NS a.ngtld.cn. +å…¬å¸. 172800 IN NS b.ngtld.cn. +å…¬å¸. 172800 IN NS c.ngtld.cn. +å…¬å¸. 172800 IN NS d.ngtld.cn. +å…¬å¸. 172800 IN NS e.ngtld.cn. +å…¬å¸. 86400 IN DS 47359 8 2 D8FE897CE8AC620CB7CB9F6F4E887FC7A14C3ED80CB973DA4E30A17C ECA1015B +å…¬å¸. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tTLEXp08ytjgLEzCBde3XOPSY80Y/sSxew1ff/qUqx+CuwIfduQje+b/ Ju0TZ5Y+M8sdLP+1+da93AYo8+8y0whLp+N8a6XylRO+/clLIisFNflb ntu88uKLpkOje47EgXyluN7Q4NTS0EKLoAzKcvqljKobgnFMoyNueW1V f6I= +å…¬å¸. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XO5g+9z0JuvN4ebZvwrTvUs+FEOfUNGZCTli95KccfNC/mR/fX6rjWLM UFph+2Gt295lvle5QcRSTUaSPaBHHORENuiFyXa/M3XU5J4s8eqJl+za pivY4VWM5seM8x3fk9BuV61xZFSbm1H9zeaI1PqPZx3rMMhHBLAWUpYh s0Y= +å…¬å¸. 86400 IN NSEC 我爱你. NS DS RRSIG NSEC +我爱你. 172800 IN NS a.zdnscloud.com. +我爱你. 172800 IN NS b.zdnscloud.com. +我爱你. 172800 IN NS c.zdnscloud.com. +我爱你. 172800 IN NS d.zdnscloud.com. +我爱你. 172800 IN NS e.zdnscloud.com. +我爱你. 172800 IN NS f.zdnscloud.com. +我爱你. 172800 IN NS g.zdnscloud.com. +我爱你. 172800 IN NS i.zdnscloud.com. +我爱你. 172800 IN NS j.zdnscloud.com. +我爱你. 86400 IN DS 37400 8 2 07C6728C4F51FFD6B1E829D5AFBDEE24A30E710EBEFC50C8D6AB7785 223A0A0C +我爱你. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Lq7nW6vqxS+8pdCB+6BGqzqGcvYG2jDKeo2NJtLeMMjw/vs77YBsZYo4 pwjan3pe22XU7+zEgLjU2P+bni1ybCnc/ZkK4Qa4+hTteFcuYlShMjOA fw+724MSzyVoqYFFSBw9tJOle7hzQeiju/JLzzWfWYry18+pPABRMlw2 LtU= +我爱你. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tstLRX83R4LsqJbAqW81sGiJaZ32hgu7/djf6Xem0CdDbLssY6mYKV8u suOficHsgZziuOUVCsSa64c7rMSd/uVtO2U9huUtcfeAVyW0yttlhF9D VhDwZ/rFvQxiKd3evOe/eR1uLPWJIMyvngzTSPLFdoWvubQUdsxe4zCr iq4= +我爱你. 86400 IN NSEC қаз. NS DS RRSIG NSEC +қаз. 172800 IN NS kz.cctld.authdns.ripe.net. +қаз. 172800 IN NS ns.nic.kz. +қаз. 86400 IN NSEC онлайн. NS RRSIG NSEC +қаз. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EfGwV3TdT8sdblMsuxgqgOpfG4nsFYuRz5cDOrTD0vRrqXFuxOtsoS2x w/1uRRWudWGIh7KdSUU7X2WrW1rk0gJE8mEvVbZPqO7L58Qr6TxgZyf4 GTzknLV7H7GXlELV8ISP8axNetc6Fu+cnLG2XuJSY8MYmh41bImB1Gz4 hgU= +онлайн. 172800 IN NS anycast9.irondns.net. +онлайн. 172800 IN NS anycast10.irondns.net. +онлайн. 172800 IN NS anycast23.irondns.net. +онлайн. 172800 IN NS anycast24.irondns.net. +онлайн. 86400 IN DS 54606 10 2 A1A13FCD0AFB413657352EBA09765C81E0BA0AF0B8452F03EB0D0E4C 9661241D +онлайн. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hpEgSy9KcTD62d/ww6+EGDiGm+eedrVv2sdvIq1iV9hXBbQWs3fwUwbu tvSF2PhrQwhPzKSpkALW7DQn+AMoEaeA6dOvHqsFeIbZIq7QsKJkw5kR e++PLJE+mBOXNPjfNk3j+b51bP+2QP1MV3VbIxb1CzcJ539HpXZIF/pQ tAw= +онлайн. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . r1WGjaX2jegvx1M/VvwIrghkBQZm0omuz3q7VMBc4VFYjU157PJLyFZq qxrrn4jGzYVoHsZNEUz4x0zIibuhV29Ahgr2AeN4JBWrOVG5B6a6rnmf FhUYN3v4Lyfm2O3XxeT33zJRGGMJQot0ovFDqjedOqtPamsieNpfiDv/ OAw= +онлайн. 86400 IN NSEC Ñайт. NS DS RRSIG NSEC +Ñайт. 172800 IN NS anycast9.irondns.net. +Ñайт. 172800 IN NS anycast10.irondns.net. +Ñайт. 172800 IN NS anycast23.irondns.net. +Ñайт. 172800 IN NS anycast24.irondns.net. +Ñайт. 86400 IN DS 61281 10 2 FD5803E5D6CA1B8B5B3345B8E6AEA0E640988D973AE153713A7BC890 A84E3400 +Ñайт. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ggh27DvmjjqH+ZLDGF1PiIZi76bYmLA23N6LJFGvESc2vD+kuQtqZTz1 byRL/iJJshM3G9hOOH3oIUli6k/8OBIna4Y0lYHXvN9on7HOZfbOu4cZ P4HAHpWlZdz4ym3M8PN67tJ6Snf3RGDrvjYW8PECpZZOrl7jepjO3mcO edY= +Ñайт. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Uf7ccRl3SVIBLsY9auXgfQMoIsBXa8j5O+KZWX6P49uJ3RpHiLHHCvgE zTrj6c4QLFcNwMPSgJxdsmQgxHzDqJ5x8WTGtd/VrtW8JqDcpi3qz+Fu 3vhw/nxI6iueQx32SgFOandu+XfwYhV+fjM5UnAx+nBNJe/jXZ+XAhct MjE= +Ñайт. 86400 IN NSEC Ñрб. NS DS RRSIG NSEC +Ñрб. 172800 IN NS a.nic.rs. +Ñрб. 172800 IN NS f.nic.rs. +Ñрб. 172800 IN NS g.nic.rs. +Ñрб. 172800 IN NS h.nic.rs. +Ñрб. 172800 IN NS k.nic.rs. +Ñрб. 172800 IN NS l.nic.rs. +Ñрб. 86400 IN NSEC சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. NS RRSIG NSEC +Ñрб. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i3/3MR8YnRFNg6mUozkmV/Ch6ZQgjQqYHIenqScQEuNtMFutbgucW9IN t51VQnRIcr9Y0LArLG/wUcEgQnZ5ntCVVrcuqOggWO0E/GpHpnAoInhW HIwTZv5EBXT3QDfZL5LJLbOEdXIhoTek+i6aW3m7GHwJg3+Rj42cGYxV Lc0= +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 172800 IN NS ns2.cuhk.edu.hk. +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 172800 IN NS sec3.apnic.net. +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 172800 IN NS dsany.sgnic.sg. +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 172800 IN NS sg-ns.anycast.pch.net. +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 86400 IN NSEC 中文网. NS RRSIG NSEC +சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bvtKksdhn/JFETDialnP6zxi4s8AoOrVptrKuSM4eGtuT15B7IDiOdnv as7JzEnaV7vtq5kDKu3jacMW+btzzCHtkQJnI0AJwGDdOF5a+YFdq9xF HvdJ9LFbR41Dpg1jNDs9nCeYQObc155n6FC7Ct3X0j6edvIj58ZFgWIA Wwg= +中文网. 172800 IN NS a0.nic.中文网. +中文网. 172800 IN NS a2.nic.中文网. +中文网. 172800 IN NS b0.nic.中文网. +中文网. 172800 IN NS c0.nic.中文网. +中文网. 86400 IN DS 39459 7 1 8CBCB513FF4387B8F6A006D414A50E1A5EA178CA +中文网. 86400 IN DS 39459 7 2 0CB316717E555D102A2E96D53D32EB0AB0AC73F10D3E66E2D225398C 6A30B816 +中文网. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . f3pqmbv42ZCBMrEmOv299SAdgscZdCudgf5HYmFBB70aLJnJI1XDK0bJ tBl19YElyo++Dl0ac4YiOox2XwOsIju0YfntfIatWc48gJu9GXrwpk5q M2wqgwMUEYSreSXbyu4QSmoWHU4n6a251ZqWIGxAKxd3+kBzwfjuw1Rz lfw= +中文网. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VBqkNXqXbSJGZEm3VLbA7Z3RnToxcgG99893oCYH7RUiJrVxEOdHdIUo KCWqSGMlCrHFERcUBecJHJUq0zu0gE1Sdxz71G2WTgK+Tj5kcEn2JW+O alNP+rUJaNhOsiOX2+Rn3ZhyL7paC/ldGsScGIom8iblLK15hsGCjD3k o/Q= +中文网. 86400 IN NSEC 中信. NS DS RRSIG NSEC +a0.nic.中文网. 172800 IN A 65.22.188.1 +a0.nic.中文网. 172800 IN AAAA 2a01:8840:b6::1 +a2.nic.中文网. 172800 IN A 65.22.191.1 +a2.nic.中文网. 172800 IN AAAA 2a01:8840:b9::1 +b0.nic.中文网. 172800 IN A 65.22.189.1 +b0.nic.中文网. 172800 IN AAAA 2a01:8840:b7::1 +c0.nic.中文网. 172800 IN A 65.22.190.1 +c0.nic.中文网. 172800 IN AAAA 2a01:8840:b8::1 +中信. 172800 IN NS a.zdnscloud.com. +中信. 172800 IN NS b.zdnscloud.com. +中信. 172800 IN NS c.zdnscloud.com. +中信. 172800 IN NS d.zdnscloud.com. +中信. 172800 IN NS e.zdnscloud.com. +中信. 172800 IN NS f.zdnscloud.com. +中信. 172800 IN NS g.zdnscloud.com. +中信. 172800 IN NS i.zdnscloud.com. +中信. 172800 IN NS j.zdnscloud.com. +中信. 86400 IN DS 50027 8 2 BABDE7E86DF1408E3AFB68043296A68DDC12ABBA6BFA341C7D06C764 E042BEE6 +中信. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . SfkPgiZNK6hH+2t2jntE0ceApfGNZJ8po7O94x8HWDPZCcS73r/13yVF Chz3xVi7vZ6pwdIlUxCvI/txI/qPu/YdphG3hk5XRjEoAco+6QzEgQU+ tYUHcVb5ovjmrF4xjzWiGNN3B0bW0m6qo5l6QMKIEcVsnEjltrE1xYtQ cEc= +中信. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hzGSyC70x0hxml4wsbTl9QV20EFGF9lOlmhxC5Pz17kMhWjitmFXo/5F cZH+PkhmkUiUEBtMQHrz74VUsIHB0Vx9DKHAUBEAQwcDf54yy4V3P11K KLUsQTZgwRkeOWXu2TH1lycmG1lW+dqVur5yOCw7BgPYdczc3LihguQJ Wws= +中信. 86400 IN NSEC 中国. NS DS RRSIG NSEC +中国. 172800 IN NS h.dns.cn. +中国. 172800 IN NS i.dns.cn. +中国. 172800 IN NS j.dns.cn. +中国. 172800 IN NS k.dns.cn. +中国. 172800 IN NS l.dns.cn. +中国. 86400 IN DS 32812 8 2 F190213A4E48C2832B144487130AAB1B782F9B7AF978056C1BA4FB46 302A1B4A +中国. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . id/Etk3p82Kacsy+UiVjKyH6S+gn6XnY+yYl1SaP8zyMWWJmdYgQpoD6 rdcj4gfFNLxb3IMSgvbXZKf3SRcb6xgNXPm7VeoGwi4TkfBBHnI5Tg5M j1EqONjaBEfULY21HbHVj6aKh5yDf7R8tWxaOYY6y4miy7lIt5fijO1W Ytw= +中国. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . H1sroLwSJSe7g/dbnSOlC/85JCALy0xzEhxEugpcCbD/NqDL8iwpIGSF TpOqcsAiKpu3ovJJvzHJysih+tojHF38vAON/Be0cn6iTDFekS2uLca1 XcAfCs0MkB4mbDCGHDa/2daOIb8WpmucsRcwkg0bBSdZZzMGXOo3XPGc Fm8= +中国. 86400 IN NSEC 中國. NS DS RRSIG NSEC +中國. 172800 IN NS h.dns.cn. +中國. 172800 IN NS i.dns.cn. +中國. 172800 IN NS j.dns.cn. +中國. 172800 IN NS k.dns.cn. +中國. 172800 IN NS l.dns.cn. +中國. 86400 IN DS 32812 8 2 BBC7202788555EE77A96BDB7F0B1C91FCA9AFA2982B7AD150F192920 103B932E +中國. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . g7ddnjbKVvUy6ZaseIHWo7sfItop4IfCcns7U/gPXf7HFTIW+pcfXkpa 0ph73fgJaykqENEGr4Men45JzvWz0wi9RoF3L1oKW5n4ItaoI2HR+fYP rv6maTYq0Ys7h/TuOWVoX3k22CoE7PXaKjq+6NLTZ/7kwZqLmRadsUS+ GC0= +中國. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ng4V8W7Abr4BVeRlJhihDI65RcPcPgRuAOFYB+dq3r3E6GWW2cw30sLt +w372glhf9neVH7kRq8DSw/yAh/gyoFenKBQnW8z9YWyYo/zd8JQgkeg WLToi0e8+V/Oly9vo2fLInWaNzP+v/xm644/929KojlIumYSmAcGOXDp Huc= +中國. 86400 IN NSEC భారతà±. NS DS RRSIG NSEC +భారతà±. 172800 IN NS a0.cctld.afilias-nst.info. +భారతà±. 172800 IN NS a1.in.afilias-nst.in. +భారతà±. 172800 IN NS a2.in.afilias-nst.info. +భారతà±. 172800 IN NS b0.cctld.afilias-nst.org. +భారతà±. 172800 IN NS b1.in.afilias-nst.in. +భారతà±. 172800 IN NS b2.in.afilias-nst.org. +భారతà±. 172800 IN NS c0.cctld.afilias-nst.info. +భారతà±. 172800 IN NS d0.cctld.afilias-nst.org. +భారతà±. 86400 IN NSEC ලංකà·. NS RRSIG NSEC +భారతà±. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qDGA366jk/ljN5AEghnbBSV5IWuwx7KqKEuLYmoIS/LZoXEbIcB6tIlR m+2vph1O6vPiGMzvFywkK7qBt1tsU82w1TymXIF3aKP4kztqX024mu90 lGWPoEc6HeubrNddpMNkuY7jje2B3HEgWj2aMPxJsT145iSTctjDoCqY 73o= +ලංකà·. 172800 IN NS lk.communitydns.net. +ලංකà·. 172800 IN NS nic.lk-anycast.pch.net. +ලංකà·. 172800 IN NS ns1.ac.lk. +ලංකà·. 172800 IN NS ns3.ac.lk. +ලංකà·. 172800 IN NS ns-c.nic.lk. +ලංකà·. 172800 IN NS ns-d.nic.lk. +ලංකà·. 172800 IN NS ns-l.nic.lk. +ලංකà·. 172800 IN NS ns-t.nic.lk. +ලංකà·. 86400 IN NSEC ભારત. NS RRSIG NSEC +ලංකà·. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rslFnvqMLs39EaqoIzzZnuN+W7GrV9vgoPkDH+bw0dzkrQjEyy3GcioU 2MJk4Nj6rPd+uUbMHtMWTY/kJerP+TyXwJyiJLl/Yvy8gciezaqMvBYi BbiN/+gYoXRn03jMTuTz9rdA/dJmWAAT2HItfMbFjD/X3jEwXRYlEMIK JLE= +ભારત. 172800 IN NS a0.cctld.afilias-nst.info. +ભારત. 172800 IN NS a1.in.afilias-nst.in. +ભારત. 172800 IN NS a2.in.afilias-nst.info. +ભારત. 172800 IN NS b0.cctld.afilias-nst.org. +ભારત. 172800 IN NS b1.in.afilias-nst.in. +ભારત. 172800 IN NS b2.in.afilias-nst.org. +ભારત. 172800 IN NS c0.cctld.afilias-nst.info. +ભારત. 172800 IN NS d0.cctld.afilias-nst.org. +ભારત. 86400 IN NSEC भारत. NS RRSIG NSEC +ભારત. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BmPygmWGXbtVa71yWIwCA3KUycxPhvM/OYDA+G1q0iL6hYIpIwYjOYJJ 2x/oKkBD3DRZxfHimpVDz7cm0ptht9a5W+Ehmv6I5NWKHrcLbhRJUerg F//l4+FbGQ1EEOH5SfuKr0VC6Zm9P/QHx32VJ6KQpWGH5OLUgH1cAy7j Kf0= +भारत. 172800 IN NS a0.cctld.afilias-nst.info. +भारत. 172800 IN NS a1.in.afilias-nst.in. +भारत. 172800 IN NS a2.in.afilias-nst.info. +भारत. 172800 IN NS b0.cctld.afilias-nst.org. +भारत. 172800 IN NS b1.in.afilias-nst.in. +भारत. 172800 IN NS b2.in.afilias-nst.org. +भारत. 172800 IN NS c0.cctld.afilias-nst.info. +भारत. 172800 IN NS d0.cctld.afilias-nst.org. +भारत. 86400 IN DS 18018 7 1 95E310B21C23FC8C6107A186D68C5FAEECA15A9F +भारत. 86400 IN DS 18018 7 2 582ACB8BCAACC3A0AF31597260B8C8650555AC94DEA17C12110AEA90 374559D4 +भारत. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TR5qql8nFvdnAcCMEp9pomW9uB2iGz77Bu+ZWkCCqcXX5LTuc1VME4k8 tdqC1je4GPqjSmI7bfePL0sOajET60A183+rG4sor9XuIcroZ1i7pdlK 8OEpd1dJefs/Cj/AkJc4FAmuiiqHEXzrbSxXWvRmsvuFAqUTbOexrbVw MMg= +भारत. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y3XbaMAF4baXtsvUd2OYih3sMvbIfNBGxSNRi7TS1ccKPl02Iw2wr4n3 MJAbHjLeoVcvKmvrPZ2OxmpmkE5gl6jr2HcDx606uSwbKkZbelgVgJjj FI42jpBsasb8uX7UHZsRvCrJ+jowl83pkBB0bv6Nfc2T365CucP/FroT ev0= +भारत. 86400 IN NSEC 网络. NS DS RRSIG NSEC +网络. 172800 IN NS a.ngtld.cn. +网络. 172800 IN NS b.ngtld.cn. +网络. 172800 IN NS c.ngtld.cn. +网络. 172800 IN NS d.ngtld.cn. +网络. 172800 IN NS e.ngtld.cn. +网络. 86400 IN DS 47359 8 2 426DB7D3FB8E6058BE42D379ECD7742B2EFAB5DD0A7A95494D351860 4B715B1E +网络. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . evqLS2QsEXy3KOmSB/i/PK3R5EAHlSGuXGxYNVP0uhJG9BlKkrSOZTam 7XnI4aTPGr2NekWlFuqcUOWPbnsqoJdNu1qjFM2g/XCfzZzvwb5PmUS/ xsihwyptAamFFndiAfzRTBv2pWSTpp5f5Bx7zvASzADRT1Lwvx6STUSo 30Q= +网络. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uVxbfnx57ARwC7e8/WbJWhpxW+gkXFVuFvJ5QWo3TUvHUzlOVyEagIDk Ci0NHJLQlhjxKwz0i0OJw4jz9Cb9HYeGWwd+8cVcphrA1NU5/StS4HkP bk9Q6wGb/S1TGgtDasNfxoZTkddQtoTwIpCQbBdCoxiDo+h0k6nj4x1S mCw= +网络. 86400 IN NSEC укр. NS DS RRSIG NSEC +укр. 172800 IN NS nsi.uanic.net. +укр. 172800 IN NS dns1.u-registry.com. +укр. 172800 IN NS dns2.u-registry.net. +укр. 172800 IN NS dns3.dotukr.com. +укр. 172800 IN NS tier1.num.net.ua. +укр. 86400 IN NSEC 香港. NS RRSIG NSEC +укр. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fiL71TokV1nKe938IsrD5hIWuWHDaMOmdsdsaMEss5s5Be4E0PhcnMR7 6AhwCRv/x8fWtwwBE/5pZ0HREP5GbP9fhdRu9RTsMhknTRTA/ZC2xvtQ AjQBwy5AshBb73k66B5R2WjfN1tyl+R76w+sLj9FylpigbssAb/fGsAf +WQ= +香港. 172800 IN NS a.hkirc.net.hk. +香港. 172800 IN NS b.hkirc.net.hk. +香港. 172800 IN NS s.hkirc.net.hk. +香港. 172800 IN NS t.hkirc.net.hk. +香港. 172800 IN NS u.hkirc.net.hk. +香港. 172800 IN NS v.hkirc.net.hk. +香港. 172800 IN NS w.hkirc.net.hk. +香港. 172800 IN NS x.hkirc.net.hk. +香港. 172800 IN NS y.hkirc.net.hk. +香港. 172800 IN NS z.hkirc.net.hk. +香港. 86400 IN NSEC å°æ¹¾. NS RRSIG NSEC +香港. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S+FLxqJwYITfqX/W3EzLNRx4EMeVFsPghPqScxIOLiedBGDTB1WLiEg8 GZByiJ/oBrW3lZ2ovuzNOAi7RLvMPwekCslBixK86nT0fIm0mOn7msL7 MMxCnc6H/sIzxzOTdYChlSgl+FjxY5/3xGYST57Kbth7EdZzkXI9qxNS npU= +å°æ¹¾. 172800 IN NS d.dns.tw. +å°æ¹¾. 172800 IN NS e.dns.tw. +å°æ¹¾. 172800 IN NS f.dns.tw. +å°æ¹¾. 172800 IN NS g.dns.tw. +å°æ¹¾. 172800 IN NS h.dns.tw. +å°æ¹¾. 172800 IN NS sec4.apnic.net. +å°æ¹¾. 86400 IN DS 9616 8 2 80D599F98E6304BD800DCA9EE0F73EB319414430413A2DFF5C010754 D137F1BD +å°æ¹¾. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K01GYjMBOk/ZRXp8vo87t63vDzYhOdK/bFyYzK1zcIEE1Zg9pGKaBaeM UpDGgQ1RZ8eNdfI4azEA6aQHeBnerxEA+dPNPEHaWnb9S95d8kzKvzS9 7HJSGBUC8b0YSWqD/sWp7+jqe1uRElUZEKzBt1eT0bSpsRDMvgEHre2o +MI= +å°æ¹¾. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YAh35lmGhs9k00Mz+xrsPFdUEKoQpChA8kyI4yk/Wo/R9ziLSiVjBMEA AhzKmxW2eVsNEr7wYG9ndewMCVcgrxFZLgYnL9U/fneHhkVTDt7MoH5e Z9yVBhrPH0a5lClbqGPTF0EHuNttm8yLcxF2h1xmC1nbXyxcuV9cPkdY 8VM= +å°æ¹¾. 86400 IN NSEC å°ç£. NS DS RRSIG NSEC +å°ç£. 172800 IN NS d.dns.tw. +å°ç£. 172800 IN NS e.dns.tw. +å°ç£. 172800 IN NS f.dns.tw. +å°ç£. 172800 IN NS g.dns.tw. +å°ç£. 172800 IN NS h.dns.tw. +å°ç£. 172800 IN NS sec4.apnic.net. +å°ç£. 86400 IN DS 57757 8 2 99EE3CDDCD2A85DB01D3A1E13D019821D30E3D4F6B49E4260B402FE7 D8A3E85A +å°ç£. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . pXPhfVu3gzDCx4zXaBJUybpujCfK9xO29s/nf1BHMGVn2fIyFVy8ip4U b7uj92BZo5yoMq54680Qsq7Ag4/Is/UNxRA0Oz/P4Lw4wcIbVc0EcLFs ZEtAHLjTBEmn2UvA/x+n9TVE1mqbvIt1xfS/kGjnGgk+2MMmqW4Eqd2+ DTg= +å°ç£. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . smMRiRcWtAaR9NTH4E7GbS25auj6z1OPTn2dpIx06ig7Dm0uUQbMz2tP g0Z6CWs5nmkCf+V968bQ3WSjarcULLZuPQ9asxVQUriYclj63vFXDyrf h9mLFzQ+8Al3sgns+P5XDxRJ3wehEOS8rL/E2W/JG8ydQR/GwNy004Y1 4/Y= +å°ç£. 86400 IN NSEC мон. NS DS RRSIG NSEC +мон. 172800 IN NS ns1.idn.mn. +мон. 172800 IN NS ns2.idn.mn. +мон. 172800 IN NS ns3.idn.mn. +мон. 86400 IN DS 29566 5 1 07D52F8F36FECED48212940E021C28E40274CFC6 +мон. 86400 IN DS 29566 5 2 6029C4759FF53E279A93E13C146DC52BD7017291FDFE799C220C17B5 EEE95ED6 +мон. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CjJWPQAx+ur7J6pIc+xV9h65kcEQjfV0rQ3ZUlpXvSzw07J0BPz7y9tu 3s7Z6ZPZJrjLcN6rHnZ1DyZxu+po1WHxMr1cMWAD0aosY9MNWPj9rEQY xQbE/+MTDO2SVAje6v9LdvLTUk7MMMKli70L53Xhem26UsqCuNA5pK6i REI= +мон. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RdS2eRw9Aul2TGHCC8NUPWpeRUdFvfyjAOFt3JCIbIDvrpEi/xbIHq5Z nXWPgrHIWOSmLvAXHi6gzms2+Dipd6PpeW/QnRsX1a8eas8nm6nfm99D Pok/0kUWPNlYPlMAdVsf/4yUHpQRyKgW3hMJ/a+nLDM3pjEUR3bPbYu4 noo= +мон. 86400 IN NSEC الجزائر. NS DS RRSIG NSEC +الجزائر. 172800 IN NS idn1.nic.dz. +الجزائر. 172800 IN NS idn2.nic.dz. +الجزائر. 86400 IN NSEC عمان. NS RRSIG NSEC +الجزائر. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sck7ihx1tQGVWPYWSskncfyLZEdEqBdaMnaM4ENr1CW2u0ZP2F0TtAfj rc8HvwyBcb0WZ1zuys9/t+6pcGJfe+LXzdZRc5W2g6D9oK1YOGa1oaHu IY/XimuUlEsXK268j57NQ96Pg5HAn63PbMqfse+MElh8FNKORsugN+Da CuI= +عمان. 172800 IN NS ns1.registry.om. +عمان. 172800 IN NS ns2.registry.om. +عمان. 172800 IN NS cctld.beta.aridns.net.au. +عمان. 172800 IN NS cctld.alpha.aridns.net.au. +عمان. 172800 IN NS cctld.delta.aridns.net.au. +عمان. 172800 IN NS cctld.gamma.aridns.net.au. +عمان. 86400 IN NSEC ایران. NS RRSIG NSEC +عمان. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kvjQcFgHF+cHFUTkPQZqaA6JnYSx3j9Yg/kMTl7o8cBBziUTuZWDJ8DI q51UHDjITOr/VkZ1DpHfmPzHaqratuL+/zblJEsLMMHyOAglfYYPd/9m /F5EPnoTu6MZ7X8DOJeva6N5IRR4dtQr1ICGmezge1++WKBvqLUe4fHu 1IA= +ایران. 172800 IN NS a.nic.ir. +ایران. 172800 IN NS ns.irnic.ir. +ایران. 86400 IN NSEC امارات. NS RRSIG NSEC +ایران. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pOY8Ge0aKk96qWkN2WzqstmEbisborUChTasZUZB50ePJOILArb9Qej6 Ocnk/FAriI93t0Wo4vbs10KHhfvArHxHLsSkSzD4uuyQWv0tVK+wsrFF ZuQ+U+7ff80DjgUw5X5dyFTUcD4fozBmTKWhJv61CRPIn/VRg+9qHfOi LsY= +امارات. 172800 IN NS ns1.aedns.ae. +امارات. 172800 IN NS ns2.aedns.ae. +امارات. 172800 IN NS sns-pb.isc.org. +امارات. 172800 IN NS nsext-pch.aedns.ae. +امارات. 86400 IN NSEC الاردن. NS RRSIG NSEC +امارات. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sHpT0pDcoMgyw55NEpZtfUtwacfRrM7Wxw4sz4UsynuxBniLuhJWRJxe 7IpalVh0QmrcP4v/93S8dK4o1Iz3l1EmbVSeAVJtTRp/Kp9UoGzpqEbs AIRzROwCNO6N+R1nCFgDER0PTSU9A9Upcegqyb0crAmA2AtIVOIamOwp vh0= +الاردن. 172800 IN NS jo.cctld.authdns.ripe.net. +الاردن. 172800 IN NS rip.psg.com. +الاردن. 172800 IN NS amra.nic.gov.jo. +الاردن. 172800 IN NS petra.nic.gov.jo. +الاردن. 172800 IN NS jordan1st.nic.gov.jo. +الاردن. 86400 IN NSEC بھارت. NS RRSIG NSEC +الاردن. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jaQYhZGd4pdjLMuhsESVkfV0D+NAz3J/SHTDrLWRCoeMMqW/X92kfFqp 5FOxp2KikZQeZfv9L2zNGexcaTe9E6OrevhIm34JIUap7liaEP6tEGkZ Yrltf3Z6QCYpRe9GJBPp22SAa8r9leibNFO/pHSv8Qtz9a7YZCXjt/HZ GEw= +بھارت. 172800 IN NS a0.cctld.afilias-nst.info. +بھارت. 172800 IN NS a1.in.afilias-nst.in. +بھارت. 172800 IN NS a2.in.afilias-nst.info. +بھارت. 172800 IN NS b0.cctld.afilias-nst.org. +بھارت. 172800 IN NS b1.in.afilias-nst.in. +بھارت. 172800 IN NS b2.in.afilias-nst.org. +بھارت. 172800 IN NS c0.cctld.afilias-nst.info. +بھارت. 172800 IN NS d0.cctld.afilias-nst.org. +بھارت. 86400 IN NSEC المغرب. NS RRSIG NSEC +بھارت. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cHxg1wpHnIC8FtHot5KcGv19W/+fq9PxOA+1PYXp8yG6U0Mqe/w+FW0D bhXS0RxEELcaWr8fVo1FWeRwO0a8Zpvu0G58JKu6j5qr3wx3LGBkb1zJ NJdI/eeXqwR25hisy3i+0thfaXNID6T5j7xJcxqYymOXSKSfmnRivXT9 RmQ= +المغرب. 172800 IN NS ns2.nic.fr. +المغرب. 172800 IN NS dns2.menara.ma. +المغرب. 172800 IN NS dns3.menara.ma. +المغرب. 172800 IN NS hariss.anrt.ma. +المغرب. 86400 IN NSEC السعودية. NS RRSIG NSEC +المغرب. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nwyiioNumkvNB7OtUB8PlQhM5AMtlQ7XNl6GaBskSlMyiXbyGXxNqqho ukLXv7aoC/BnqNX4pdZvuctZ+Ow1w3kR0FVI+Pxr95/JxfyE3HDfi9v+ ABGLjA3C0TzuXe0RogvCQJpOihv0oGs11B6Ojb0jm7j+UrryaEHochgF vpk= +السعودية. 172800 IN NS ns1.isu.net.sa. +السعودية. 172800 IN NS ns1.nic.net.sa. +السعودية. 172800 IN NS ns2.nic.net.sa. +السعودية. 172800 IN NS sa-ns.anycast.pch.net. +السعودية. 86400 IN NSEC مليسيا. NS RRSIG NSEC +السعودية. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MZSeq6PuwmL+Aedjtal8dZ6uIUt7o+wlqf2rovs1tdM+UCYQYrQJ7NVD 4m/k2C5y869LtLheqCeQtaS0NcoPDCh7PCgOLH2a73neK71B6xyWn/wj b1Ju0IsK7uOORAevR5uPHBdQU6J/mWOE72V6Gr51ybz/JDKgsqZQ6WZR 6nw= +مليسيا. 172800 IN NS dns.mynic.net.my. +مليسيا. 172800 IN NS ns2.cuhk.edu.hk. +مليسيا. 172800 IN NS ns5.jaring.my. +مليسيا. 172800 IN NS ns6.jaring.my. +مليسيا. 172800 IN NS dns2.mynic.net.my. +مليسيا. 172800 IN NS ns20.iij.ad.jp. +مليسيا. 172800 IN NS ns30.cdns.net. +مليسيا. 172800 IN NS ns-my.nic.fr. +مليسيا. 86400 IN DS 17106 8 1 95B6E1D09E818E13B8FBE777482C69109A614E4B +مليسيا. 86400 IN DS 17106 8 2 BDB33EA391E14E2535C4F2E3770408D2139A892A1DC8B5CF5EB9DF42 FFB6B1B4 +مليسيا. 86400 IN DS 21138 8 1 B7B8D9E0586759075371771EC5FE4547438192AA +مليسيا. 86400 IN DS 21138 8 2 CD5A25C027734679E3701C7C51413C525CBA12EDECD006549F93CE9A B1AC47C5 +مليسيا. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z257EIqLpeKZwLPIRNuVG3l+kCSbn+e4EAVhadiDkKIunQZt+4XG7/F8 vutZimuz32TMrlP9d8LAtSkB4YxQtC5VylS16sgfs300Qh8teVkRw8RV uwY66NV3ISMltXm8fX9ox/p4Ow+0uR8eGETDvjDcOzv/QLPL8LxgPkhg q6I= +مليسيا. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s3F96a1t+c+f1MrtjePOHMeeAMncYM14UX8FR8yi5j3QeEnucrxZbCvd Zik2Msyhbmgu8j7zxNqzQR74JjX8Uta8rbZwD54O74xc5F9l+L+QN8T9 UVl6kE8mHMR1TpTj+5VBNbBeKKwcVYyp3kDLoMSuf59kVVD/WQCxLZYp OmU= +مليسيا. 86400 IN NSEC شبكة. NS DS RRSIG NSEC +شبكة. 172800 IN NS a.nic.شبكة. +شبكة. 172800 IN NS b.nic.شبكة. +شبكة. 172800 IN NS c.nic.شبكة. +شبكة. 172800 IN NS d.nic.شبكة. +شبكة. 86400 IN DS 20736 8 1 0AC95C7D70A0A3CCB3E8351F6416663B941230DD +شبكة. 86400 IN DS 20736 8 2 851A2DD716C38C5325818FB56E53D8F2E340C098F8AE9DC531601F49 F4D8B943 +شبكة. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nM3g5Bdb4Eeflpf7AgcOlmFczh4nWFiV/AI+n0ABpfd2aMpSRiywr4Wr krbTWTYGInX1T5BzwT2Tg1WleoChEem6+aAlGJien3uwgNBSzbl46YHu jGChBJl2fYGXABdrIhOtJjPt/Rj2PY+5KS222HuH9X4QS3orPJxnCfS5 tkc= +شبكة. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WBVmMyKet7hlsXUTx0rgR/5Fd43BXW4ac0b6pIbQVDadzLSFqa9ag5Ma ZVsd7Y1G02GiDW9GCVaM0Zbd9Z4gj/hz7VTfk4B5yTXnVRg06SUiemVq QrULVF/tW3vIpbNFC6OSsdjstO9P42poHG+9QJQbRTwy3dCafTqa/QH5 I+k= +شبكة. 86400 IN NSEC ไทย. NS DS RRSIG NSEC +a.nic.شبكة. 172800 IN A 37.209.192.3 +a.nic.شبكة. 172800 IN AAAA 2001:dcd:1::3 +b.nic.شبكة. 172800 IN A 37.209.194.3 +b.nic.شبكة. 172800 IN AAAA 2001:dcd:2::3 +c.nic.شبكة. 172800 IN A 37.209.196.3 +c.nic.شبكة. 172800 IN AAAA 2001:dcd:3::3 +d.nic.شبكة. 172800 IN A 37.209.198.3 +d.nic.شبكة. 172800 IN AAAA 2001:dcd:4::3 +ไทย. 172800 IN NS ns.thnic.net. +ไทย. 172800 IN NS dns1.thnic.co.th. +ไทย. 172800 IN NS ns-a.thnic.co.th. +ไทย. 86400 IN DS 18280 8 2 1C51573C20577DCC978567C0F4F85056A0DDEFEF2DCF4919BAE35BB0 93EABA12 +ไทย. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ixc3a2S3aYpxlE7zP21exZc84ag7WWefq1AiAHju+sE5bRb12vRQ3yhe VUNbTQBEer1re8uKYZ7MBru+ZM4PfDTEK3vQkatRwAZbCBhJyhCH0wml xatYOUt6+0lP63RcpHPBgQdTwcAFsYv3tWWUI3w8hhWUJj5xhdRnTYDs Edk= +ไทย. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . W+NQGC1U9IqFAxChAt2w8Fd/uNvZ0qLtS35BIrijncizJHRepkr4MjLy is4DFEnNweKds75CMHQmBaZmnbmmSxs2rbk1Zg4WOEd5v1jDTeD8sYgt IW8DkaZykJP/hPgkE452pzgI6zSkJdsQlte4YVO9OEBpliDsJKViwPwd l5w= +ไทย. 86400 IN NSEC سورية. NS DS RRSIG NSEC +سورية. 172800 IN NS sy.cctld.authdns.ripe.net. +سورية. 172800 IN NS ns1.tld.sy. +سورية. 172800 IN NS ns2.tld.sy. +سورية. 172800 IN NS pch.anycast.tld.sy. +سورية. 86400 IN NSEC рф. NS RRSIG NSEC +سورية. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iCyIvVh+DM2hXhDE5M6jRDzClAP4+bzuxtkK/vcEV8Lsr61ALsgtvFZn adlO5cO00qxshVRPxMrhzE3lz27uGMB0krj3S7ve7KQoALoM0EMy772B OfY9Kie9pJlZkfA1Qyjvs8uyXSQyJOzAoKql325JUc7iSJwNAGslNeeO exY= +рф. 172800 IN NS a.dns.ripn.net. +рф. 172800 IN NS b.dns.ripn.net. +рф. 172800 IN NS d.dns.ripn.net. +рф. 172800 IN NS e.dns.ripn.net. +рф. 172800 IN NS f.dns.ripn.net. +рф. 86400 IN DS 60169 8 2 44F3965D9E0227ED99414740A1C7A7651A60ACBC6C80942C8AE9916F C323649F +рф. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Yr9ngyjsdX6SOrzd7BIYCByl9059/SLn3TTvL0GLOhyO48TEReeM1UUn UHqQdVpM1wrsgIe+ExuEJ8qy4SX52OR6Nrv4ZiBq5EgFpM1FTZfllSGE 8TTJT1HXc08/N6COBDbAO9lFOMEP01vAFOaN35R9cifxgvbg7vF5pqQq SIA= +рф. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UPctlLdKR4YMzt3zGOjuaIHVv/vkqTPv3/7/pb71BfTlZoCkWzTb5xZw x9OBdOAK6YVshTJSfeaNPyZVtksiwwn4i4ViGgFdVGJxO08MjwSH/7L3 KavO9Qqyx+5J/tAsGGcE9nXIVQIA5T8LPfH0VzQWsA2a9LWAp1TsFPqx 9KY= +рф. 86400 IN NSEC تونس. NS DS RRSIG NSEC +تونس. 172800 IN NS ns1.ati.tn. +تونس. 172800 IN NS ns2.ati.tn. +تونس. 172800 IN NS ns2.nic.fr. +تونس. 172800 IN NS ns8.ati.tn. +تونس. 172800 IN NS ns9.ati.tn. +تونس. 172800 IN NS ns-tn.afrinic.net. +تونس. 86400 IN NSEC ã¿ã‚“ãª. NS RRSIG NSEC +تونس. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CsQGy8PV1q6812nmBDtfVdzeC9Bh3H404uoZ5gvHjgX4TMGDcFnRGCjU wEjMKKNo3GBpAydnVvTav79KtUZX+al7zxs7JflGlJclvviqU7Y52ZdM 09Glgug9vkekdo7HtabSWedHPgiwlOkTdJMfT3n49FcNMdjEx2QoqrQf so8= +ã¿ã‚“ãª. 172800 IN NS ns-tld1.charlestonroadregistry.com. +ã¿ã‚“ãª. 172800 IN NS ns-tld2.charlestonroadregistry.com. +ã¿ã‚“ãª. 172800 IN NS ns-tld3.charlestonroadregistry.com. +ã¿ã‚“ãª. 172800 IN NS ns-tld4.charlestonroadregistry.com. +ã¿ã‚“ãª. 172800 IN NS ns-tld5.charlestonroadregistry.com. +ã¿ã‚“ãª. 86400 IN DS 20827 8 2 CFA6056748CB21C3CFE41EC0CDEE6D9FA1B78C0A76133B94393357BB 71BE7E02 +ã¿ã‚“ãª. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BF2L2cjQohhwsv5DBSlU3RRhawTYW0WlZ5O5vTQTR4FrvHSeBRfc9yDy Ab+0i/OymoW/wx66f/0HxbxIMMWX3XASFjcrKI85D7xhyjGILqsBRvO1 D2A+8Zbomlesydl5Y0TF/axuBoxZM1E2h/SF+kl7hDYOpk0m4W4qbtjl ytk= +ã¿ã‚“ãª. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qMLuXjCzZ0naVoX/eD8vxx8qu+jJiGm0Re9oXVC6ctiwlAPhpCgT/uqj WrpX7lSD8tuzIG0O6k5IhqcoR+F9Ud5vfK5sp+Uk6ArUhOsz/4jnc4su Hgqx233+ktdJWbTLUFtw06eEnJfS9S9q+xt4m0jrlwpmpeFwCoILBJAn g5U= +ã¿ã‚“ãª. 86400 IN NSEC ਭਾਰਤ. NS DS RRSIG NSEC +ਭਾਰਤ. 172800 IN NS a0.cctld.afilias-nst.info. +ਭਾਰਤ. 172800 IN NS a1.in.afilias-nst.in. +ਭਾਰਤ. 172800 IN NS a2.in.afilias-nst.info. +ਭਾਰਤ. 172800 IN NS b0.cctld.afilias-nst.org. +ਭਾਰਤ. 172800 IN NS b1.in.afilias-nst.in. +ਭਾਰਤ. 172800 IN NS b2.in.afilias-nst.org. +ਭਾਰਤ. 172800 IN NS c0.cctld.afilias-nst.info. +ਭਾਰਤ. 172800 IN NS d0.cctld.afilias-nst.org. +ਭਾਰਤ. 86400 IN NSEC 游æˆ. NS RRSIG NSEC +ਭਾਰਤ. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EflGVmrI6mHGeKjzrDh7A1rB4LznfeA6UotVclz/5EcaSsENRut6oMnk J1iYMDiHGnqU/LlINVTUqczqD+xmRjdgAdwg7hmTyKbA14hdpsAeJMRQ JK8+W5Jb6KwDhdUE8KPyCFCEHN91qXn0aS5SSmWDKVkJc4cP48abBmk+ IBM= +游æˆ. 172800 IN NS demand.beta.aridns.net.au. +游æˆ. 172800 IN NS demand.alpha.aridns.net.au. +游æˆ. 172800 IN NS demand.delta.aridns.net.au. +游æˆ. 172800 IN NS demand.gamma.aridns.net.au. +游æˆ. 86400 IN DS 27607 8 2 6C4C1CBD05BCA28A60B397ED8AC77783D7592EB50028FD3AE8A59BB5 758984D3 +游æˆ. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GaTkhnW3DS/3BU7vygwfMEgLinqlBWlGnYtqgcYWTEAOnNH1i3tV8ty3 UMsaA/X3aG0HzTbHS3Ak0FAg5Mv0Z3AJ6dphj7FLhTvitR4nLD20u+lb 7m+ZOtCoCud2bvUjfeEnRYln++R9sx1RjZnSfvB+r8HVkspb8ua6Mn1u hIE= +游æˆ. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ShDoyT5aJAO3mwnYDs4h2WNkVAMqZA1ah8xcRUGQdbvGcXMTFOvfRq3u nT/hqsSagzbxmXZm27kkM6/K4l3NuWrqkvNOoBVOEoIjdC3OAyq0TIpm wPd/w3IdTKZonjZ4AcZc0ogFi3GiBX0KQH/Wn9ZLthSIeG0iLmHdmtm6 vHU= +游æˆ. 86400 IN NSEC مصر. NS DS RRSIG NSEC +مصر. 172800 IN NS ns1.dotmasr.eg. +مصر. 172800 IN NS ns2.dotmasr.eg. +مصر. 172800 IN NS ns3.dotmasr.eg. +مصر. 86400 IN NSEC قطر. NS RRSIG NSEC +مصر. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SfFey5rW4yT3l5O5A+N46Z1XwYiAJuI+eu6uyBStkjmY8NKpuFFibOOg 7ojOBl1ukxZY3y6Fh0HYpAYhUOgoCTSc3H5BH8Cb5diOJ+SkyKU3etDQ e72krNtF8hE0WgnnUYgDfW8Wsz97QHDgvbLF9k+hnDG1PCg5ihANKKLG qYE= +قطر. 172800 IN NS a.registry.qa. +قطر. 172800 IN NS b.registry.qa. +قطر. 172800 IN NS c.registry.qa. +قطر. 172800 IN NS d.registry.qa. +قطر. 172800 IN NS e.registry.qa. +قطر. 172800 IN NS f.registry.qa. +قطر. 172800 IN NS g.registry.qa. +قطر. 172800 IN NS h.registry.qa. +قطر. 172800 IN NS i.registry.qa. +قطر. 172800 IN NS j.registry.qa. +قطر. 172800 IN NS k.registry.qa. +قطر. 86400 IN NSEC இலஙà¯à®•à¯ˆ. NS RRSIG NSEC +قطر. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uQS8giAbmhd25xcXeQvEBkKVv2UTyPrByXIAoSIJ4wolN0qwa1F4tJa1 m8sMeDvzc/o3ASi9naAXh5VlqYjQ2o56GFMJUGnxXMR1FklxLiE/ox7f z/wIRpkNzJhfNsy2VHHik5V0W/+9v24uSYNBx+MB0tU0/uDX349wWZHD RSk= +இலஙà¯à®•à¯ˆ. 172800 IN NS lk.communitydns.net. +இலஙà¯à®•à¯ˆ. 172800 IN NS nic.lk-anycast.pch.net. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns1.ac.lk. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns3.ac.lk. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns-c.nic.lk. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns-d.nic.lk. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns-l.nic.lk. +இலஙà¯à®•à¯ˆ. 172800 IN NS ns-t.nic.lk. +இலஙà¯à®•à¯ˆ. 86400 IN NSEC இநà¯à®¤à®¿à®¯à®¾. NS RRSIG NSEC +இலஙà¯à®•à¯ˆ. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OArTrLjPgP029wmBrcGnKQYCWfDIRQHgZjgPVvHsCPZK2o/QdTiuCMPP hGGbqu2BESpjrcylHE6PISgFqwYQjJcmivh6AyDKQTQPjgEwdznuxYPI hb4Vu02F5XAGWkfXLKH2BrbDrXDgSAb6mqE0cuoqEvxAYJ1ngmWqUMnF cdI= +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS a0.cctld.afilias-nst.info. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS a1.in.afilias-nst.in. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS a2.in.afilias-nst.info. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS b0.cctld.afilias-nst.org. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS b1.in.afilias-nst.in. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS b2.in.afilias-nst.org. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS c0.cctld.afilias-nst.info. +இநà¯à®¤à®¿à®¯à®¾. 172800 IN NS d0.cctld.afilias-nst.org. +இநà¯à®¤à®¿à®¯à®¾. 86400 IN NSEC 新加å¡. NS RRSIG NSEC +இநà¯à®¤à®¿à®¯à®¾. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y4iHMjNBt4TnhZDrCL4qvPMLPPvZwTv59J+Er194P87qNlJsWcSFUtYV +GFFxxI3aNOfpjBTCWuEgB/7OFyyF4/sbeS6nj8RkVo1Tz/ZQ7nHm2nB QCxRAGXD0crVK526zrkSG7NXi2N/L137XcfYC45tr/EY6hp4vjR+Vhxq NHE= +新加å¡. 172800 IN NS ns2.cuhk.edu.hk. +新加å¡. 172800 IN NS sec3.apnic.net. +新加å¡. 172800 IN NS dsany.sgnic.sg. +新加å¡. 172800 IN NS sg-ns.anycast.pch.net. +新加å¡. 86400 IN NSEC Ùلسطين. NS RRSIG NSEC +新加å¡. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Kdh9+6B3HGdqE8ckleBHPV5CTtkokRaaZz/MSKwavSy3txmF+cnX+szJ xLOWg7S9Kw3CO/9pyCSqAjTR+19QcM1flX5bHQ+967TfLo/B4S3epYVg 2oKBsapyUv5Iu+MmAImr2/FtNXTKZ0oRSA6i7fZtrZWpu4hBW5KQRvEh 0sk= +Ùلسطين. 172800 IN NS idn.pnina.ps. +Ùلسطين. 172800 IN NS ns1.pnina.ps. +Ùلسطين. 172800 IN NS dns1.gov.ps. +Ùلسطين. 172800 IN NS dns3.gov.ps. +Ùلسطين. 86400 IN NSEC 政务. NS RRSIG NSEC +Ùلسطين. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Fsje4oJkSMf1YrQf/JvMmwGtMWJYFyg3QkJuCZkon9vRCZk6urHilnF4 jw/FB3h9KzmjrJhZYOgqwo+8hSuz8m9apxMUM9cA79xtealRmn2EMahS HNMwVWdc5hhJaSYiypunkfrQCyj+PVfBfN8jRlgy06cddL8diP8emYxZ kmE= +政务. 172800 IN NS ns1.conac.cn. +政务. 172800 IN NS ns2.conac.cn. +政务. 172800 IN NS ns3.conac.cn. +政务. 172800 IN NS ns4.conac.cn. +政务. 172800 IN NS ns5.conac.cn. +政务. 86400 IN DS 51421 8 2 9D673623E84D7E10B2AA5B376A3F617665F8B38EF442E8A7E86F0F18 161C7801 +政务. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jLCqOxR7nljCcwWimMAs/YzhzKVSBOOk3xc/UUSOfXOjJKHh5i5bgpS4 d28njoXKIgeZz4Hu/i+bGP4P7vE2z3DJizwsqNVOV2fqmYWliI93xrpL IamwlHwmG/Qbz6FaNZrdGcbTgxF7LN4bbnel380fEC33mf5oAqfrKyjv YfQ= +政务. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ewXCISxP5H1zNNwKpJhgDjrx07VEziLwlVKLIC0daWt8cUc8zThLm/Rg bqcM9qQPFUp/nOyCjQiY31pd/fYMhvS+5VntBWeULQioHyOE3upCh1S2 sIVlvEiXV8LenFS13UPQgJ8ee+uPSVIMCBsVcHub5S4Q2batndvEDj76 9nQ= +政务. 86400 IN NSEC xxx. NS DS RRSIG NSEC +xxx. 172800 IN NS a0.xxx.afilias-nst.info. +xxx. 172800 IN NS a2.xxx.afilias-nst.info. +xxx. 172800 IN NS b0.xxx.afilias-nst.org. +xxx. 172800 IN NS b2.xxx.afilias-nst.org. +xxx. 172800 IN NS c0.xxx.afilias-nst.info. +xxx. 172800 IN NS d0.xxx.afilias-nst.org. +xxx. 86400 IN NSEC ye. NS RRSIG NSEC +xxx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n76kvl6WCEb2Eq15zfSjkjOUakeBAnv6fjh/sHxbKouEyTuNW/JHvAru 9coElmorxWaHVUEcmRfSAWNW9XGpWmP7NSjwM3YL7avBtF0uV9lRr99A DOGsWNrS1d6twxBsH3qgbWSAZTdWb9XTJw0y2/j/IFK3Ja4gSSXCn1Sf XSE= +ye. 172800 IN NS ns1.yemen.net.ye. +ye. 172800 IN NS ns2.yemen.net.ye. +ye. 172800 IN NS sah1.ye. +ye. 172800 IN NS sah2.ye. +ye. 86400 IN NSEC yt. NS RRSIG NSEC +ye. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . quaWbnEQgZKulPN0rUCnVdo+9HBSRJTVy1YkAo/E4aMIHKFDjGqF51Mw jhbuhhn3n1a+0J4slcvGXsJ2za8ZDciJx05KrFCpstLswwYARvQfhayh vEJlOqkf4CYBEdnYsFLtHHcW34wGd2EKGR9eOMKJ69uTINM7ruXm6XRL ViI= +ns1.yemen.net.ye. 172800 IN A 65.162.184.33 +ns2.yemen.net.ye. 172800 IN A 65.162.184.34 +sah1.ye. 172800 IN A 195.94.0.34 +sah2.ye. 172800 IN A 195.94.0.35 +yt. 172800 IN NS d.ext.nic.fr. +yt. 172800 IN NS d.nic.fr. +yt. 172800 IN NS e.ext.nic.fr. +yt. 172800 IN NS f.ext.nic.fr. +yt. 172800 IN NS g.ext.nic.fr. +yt. 86400 IN DS 18257 8 2 8109F3831FE1714980A8BD00AC12B56A8F7C2556C6F9FF6C02DAD278 5D25B23F +yt. 86400 IN DS 50602 8 2 32C66E2C3E3B541B84AB453F7E6E9F12603586422ABD2FAFE3053574 A417A403 +yt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . G2JFm1s1QFnEAfR4PyCsNlnRDsRhZv0zgYiPaBEdTcleo/wWUBka86hD mJU/lG4I/rOVeAN0UoNWHDrt4XTuwBSNifYPL/GE0R1a6prKKy1ieB4K SfqRAS80n+ZT9sFFb823dcEnQU9DCVenMUSG7p34HON6WFGp16OqgvEG Hms= +yt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zsz2E3IoXnJ/Yvh9cUpyYl8hXPDFOpeHu0njgvC6R5k2PaxpmqzxxKkh 54m5X98Nr5ykMoM2fcJAN0rZx70OiumzlPxykjA8XLSaJr2Jk7v+CjyZ ENwga0361ygHfsSFwPjMCjipb3PZO8C32NGUgWOn74xKxxUV6NH0MuzH QK8= +yt. 86400 IN NSEC za. NS DS RRSIG NSEC +za. 86400 IN NSEC zm. NS RRSIG NSEC +za. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y/gx+8z7554BKRrhoKaXvp7d6FNU6UaLrsL8s5/1rJx41oGLSGK2s6uE 35JThCCOaGXOeMtX5TbFZ4p1qG0ZXCy8q3lKLTJcDkU2cSs78gUpQj08 AgHIHPLGwm75Y43SP7f4GtqY2ckXLfW9dahK6RQic33+pLRgcZm+kMr1 QC0= +za. 172800 IN NS za1.dnsnode.net. +za. 172800 IN NS disa.tenet.ac.za. +za. 172800 IN NS nsza.is.co.za. +za. 172800 IN NS za-ns.anycast.pch.net. +za. 172800 IN NS sns-pb.isc.org. +hippo.ru.ac.za. 172800 IN A 146.231.128.1 +hippo.ru.ac.za. 172800 IN AAAA 2001:4200:1010::1 +disa.tenet.ac.za. 172800 IN A 196.21.79.50 +disa.tenet.ac.za. 172800 IN AAAA 2001:4200:ffff:a::1 +nsza.is.co.za. 172800 IN A 196.4.160.27 +ns1.coza.net.za. 172800 IN A 66.135.62.20 +zm. 172800 IN NS ns1.zamnet.zm. +zm. 172800 IN NS ns1.coppernet.zm. +zm. 172800 IN NS ns2.zamnet.zm. +zm. 172800 IN NS hippo.ru.ac.za. +zm. 172800 IN NS ns-zm.afrinic.net. +zm. 86400 IN NSEC zone. NS RRSIG NSEC +zm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fpY08Kn95Qm50Bfs/0pdphLAiT15niOA7m69zCORFuNEuZy6N1CCdiDj Sd+ZS37Y0XLdWmoiSroX40wfOAuiUYPlSAKdPk9tQR7MY2HMnlHIsZ4z kPMic9dN43HJtANRnLEChiWqKO4JwTuFYY5OilKqGkG9LoJCGd40QTZe tD0= +ns1.coppernet.zm. 172800 IN A 41.222.240.15 +ns1.zamnet.zm. 172800 IN A 196.46.192.26 +ns2.zamnet.zm. 172800 IN A 196.46.192.21 +zone. 172800 IN NS demand.beta.aridns.net.au. +zone. 172800 IN NS demand.alpha.aridns.net.au. +zone. 172800 IN NS demand.delta.aridns.net.au. +zone. 172800 IN NS demand.gamma.aridns.net.au. +zone. 86400 IN NSEC zw. NS DS RRSIG NSEC +zone. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VtGnvmRHXJOH1DsFpuINCk991ccpkmIzTqMltiDD5o3lPPChCH1Ohxmn WP0seBIpWUXA/BkwHu3dUQY59uHgJBzUaoWbTAyjX9BtjOeJ/Pc5Z7qw abz40Qv2+q8Le56U5C00QhgDcCegkKBmtJYI2+cgJLLlgKyMCGVB5cJN llw= +zone. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . LlC1DO76rh8gEgaXsh+/2+YJrkgl/qTPKP5uvQAMffZ46a8Jy20jK/xY BUHXuiYMOPWMKPP9+LrqMBPCiQtC2gPBiVjLfpyjvK1dU1jVXTNHOy+x FezusoHXUEyXWsCXtnowUStl7zpk60fMKlQBuLKql+P2WLbWOJsi/Czi fc8= +zone. 86400 IN DS 48385 8 2 118C38D7EAFE8361DBA4C1BF929EAE5DFE8F3D0DEF61369478458CD9 42E14B46 +zw. 172800 IN NS ns1.telone.co.zw. +zw. 172800 IN NS ns2.gip.net. +zw. 172800 IN NS ns2.telone.co.zw. +zw. 172800 IN NS ns-zw.ripe.net. +zw. 172800 IN NS news-tokyo.gip.net. +zw. 86400 IN NSEC . NS RRSIG NSEC +zw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Vuvdl4Rygv7ZmIhhm8oPmMFJAEmIPEHCEz4lVrIBjPLbO5QlDE3K9a87 ezhj95+AwoGs+b6UcSMks8XWJv6FXUCRRzFu/VD8scr0E3JTUA3ez7pv hyf5/LaVNbF4G56f8mASo7zL8xmJ69itTtA/s0r6P0E761spU2NS40bW 4fw= +ns1.telone.co.zw. 172800 IN A 194.133.122.47 +ns2.telone.co.zw. 172800 IN A 194.133.122.42 +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014013100 1800 900 604800 86400 +;; WHEN: Fri Jan 31 09:55:37 CET 2014 +;; XFR size: 5735 records (messages 14, bytes 223995) + diff --git a/external/unbound/testdata/test_ldnsrr.2 b/external/unbound/testdata/test_ldnsrr.2 new file mode 100644 index 0000000..8217d40 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.2 @@ -0,0 +1,1434 @@ +; nlnetlabs.nl AXFR +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2014012700 28800 7200 604800 3600 +nlnetlabs.nl. 10200 IN RRSIG SOA 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. z81z7PPit6pgaFcYldyq30nO5eYlnaENnlmqX/6U05b5bf09yGAGqS6j s1Ag3Iumw58jbrI7s6KkJQIPV6UcT4VqO/gWaU8X4IR2SdgUFdUUNIG4 EXXzGHCKkb99WZ3rR3otxJZgRTRugSkJQgTL9FJ84F9ha2FkLAvaqtEC Czw= +nlnetlabs.nl. 10200 IN RRSIG A 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. iceGgsBJjPFycXF8Fm+m6QDIn3UZsoPlbYJBxzU9ZEAxR3PQQjt3d79d pVWWzQMv7SMutXy49Klnzpw6j81eUIuZHJT2ApfioiX+Bvk7GdWonDFE sw+oNOTscWtBXXSSSy4r1e71lgLI1+MlH29eGq4MmyB9SLkKjiBWHsxa 5UA= +nlnetlabs.nl. 10200 IN RRSIG NS 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. KuuCYWp33WOv/Fg9LlYF6P3i/fL0bft5+7cmWCxBY0APHGpGuYKPIBLS YatFwaXaJgpLcS26QrvXYB9DZ83VisIh6VLG3mGb6swqCbYcFjrJxIYI QqyEcVYXyc9taQSQ+SNAGGQMI/QUNxqAV1puheQa8je5kMyWMQ9ocwB1 Fq4= +nlnetlabs.nl. 10200 IN RRSIG MX 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. lm9e4WQ9D8LhW5zztDidDojm/l1om2Js5zxbbYRNj8ahv3l/CL3D++G8 VPXClUcfgG7+1cMi0g/A4FqjdYhUfTs+xbKAwDzClP0Rf+zeWtmFfv9g r/pSYkNOjWbilc7dfRJE7Fvl44ZgHDGdN62jwOIj/PZf0gTJx8qBuuzF yi8= +nlnetlabs.nl. 10200 IN RRSIG TXT 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. a3jSnx9orDKthgWxChyHIDl7nKPDwYehUVprMs5FixDO5gfOcqGmEmP0 KtR5ZZiHD6x8nKvqc1v9ZCfylGRHZ/uYmYdwHOiQFBxq5hp9hZlqaXBZ t1uBHIFf94aMW3PGoM7d7HRvmyKtIGITV4pqGHci9j4zJAGxgiIwcDPo Z9A= +nlnetlabs.nl. 10200 IN RRSIG AAAA 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. nwt48vYDhpR5z40xzpcAslfxqYV39AufnwKU89rlzcn5nzwaCJJBuund fVgZqYiQHrXGWx4Y6Or2nqEEPHn9He3jU7djicaBRo6jwe5JeX0ewIx1 5/9h3+dPvev5THAtVzbCmGYVLu0LwI6CT6mMD1ZTjECCvCRWkRaEDzwV rVo= +nlnetlabs.nl. 600 IN RRSIG NAPTR 8 2 600 20140224111604 20140127111604 42393 nlnetlabs.nl. Ka/p8xBNKuIwexjOG1zlgWu6Rty9vsjDnPJb+0y3/Q4dx2bRu1aiNPFP aPojxnJlE8//owk8pRqDe+VKP4wK7h6av8ZcxKWiiwDn0ld6uAOFpMJI Y+QrrXpEGEMyng6QexFRslYNXQuiFFQgNtf55SBZI5FKVTD24FVdRSj0 6aA= +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 2 3600 20140224111604 20140127111604 50602 nlnetlabs.nl. rMW19mo8K8wnNZNa6D80mPUf+42EMkKOzS9FSqYRv/ETwXA4tjtQs+YL MHqqc2vGA2y2VLY+5ALysmok969JZ3II15fSXluwzZ0jwoolXIDc6P9F ubXc9DdJtiSRfkVKcWx0P48Z4XPGrb0yQ14OHXscSpfWQ7JTU+V65dyC Ot2mWarz2vE0+UE0VZlBHtU6UNtN2ly/ah20gKtaqPGQjj5oClLNzZab s4A8l+k6s6HjIxUHmcEbS3k0C+KQnCoh6WO8/EyaOf/OTQO4UptFLZj1 KxGsdqkRKJyi9Xy68FPvj8b7AOZHl7Cf/Momro5LqIa9tZpPB6HX7oA9 7QCRWw== +nlnetlabs.nl. 10200 IN RRSIG SPF 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. g44upu2vLUXZKlrWYNh7mRgzIm8gUzkdFGs/PY/aE0CIunTzDVHfmkIo Rdlzg887laCkNI0ywwQ5ZAv4mcLlyIP3GsQketlaIaNrOHXs/ZpL21DW ZMdfcZfTU8tIhkglSdWjdlrfMZ1sr3F5cKVQFjpx52AB8gHOhXAHtKW0 +fc= +nlnetlabs.nl. 3600 IN RRSIG NSEC 8 2 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. aKG729o3ZpkXv2+3o2MG2MOiRI1rG4NGUyOnMISdiKxqyBPqKCe5Vw7c YjvFRpDn6mnp7DGIwtBDCLezX6awNeOdqRrHQqpUw+B29wAqxgEZL+dg Mr/d2qi/htsXb8w56rGYC1iHPfrGTVVJysFKhW5ZghsJT8RIfSugjdV6 EMg= +nlnetlabs.nl. 10200 IN A 213.154.224.1 +nlnetlabs.nl. 10200 IN NS open.nlnetlabs.nl. +nlnetlabs.nl. 10200 IN NS mcvax.nlnet.nl. +nlnetlabs.nl. 10200 IN NS ns-ext1.sidn.nl. +nlnetlabs.nl. 10200 IN MX 50 open.nlnetlabs.nl. +nlnetlabs.nl. 10200 IN MX 90 mcvax.nlnet.nl. +nlnetlabs.nl. 10200 IN TXT "Stichting NLnet Labs zone" +nlnetlabs.nl. 10200 IN TXT "v=spf1 ip4:213.154.224.0/24 ip6:2001:7b8:206:1::0/64" +nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +nlnetlabs.nl. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.nlnetlabs.nl. +nlnetlabs.nl. 3600 IN DNSKEY 256 3 8 AwEAAdR7XR95OaAN9Rz7TbtPalQ9guQk7zfxTHYNKhsiwTZA9z+F16nD 0VeBlk7dNik3ETpT2GLAwr9sntG898JwurCDe353wHPvjZtMCdiTVp3c RCrjuCEvoFpmZNN82H0gaH/4v8mkv/QBDAkDSncYjz/FqHKAeYy3cMcj Y6RyVweh +nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbwL6LuXTLXtb23CsXhpkxxyGbEFUROh/L8BWA1EEF8LdQ4Rmsj4 D5D8uAnRFDkNhM6XiII9xcsavwBGNwHxzUaij4MZQu1vrzcfGIJLcC1Q paZmSH9WqIYFQci+T4s4UfDrrS96wO/H0nJvFmavWVX/7p1Q6dv0Arwz XMXaHGrRVdEgK2MDS3dFRngx5JC5fwD7YnwH08EAoFRjdAoXe+etOAeG aOT9IGjVM5LKkN2k6fIRvZ2l9eu5/o+h5L+kpDRcapW2QiL21hCcmwpW 50Llfx9Ovk+M7TBjp4iT7Tc8gLzRZr24LmXEyABb54WW3aoF5k8DZPot 9ogUjxVN/dM= +nlnetlabs.nl. 10200 IN SPF "v=spf1 ip4:213.154.224.0/24 ip6:2001:7b8:206:1::0/64" +nlnetlabs.nl. 3600 IN NSEC 6gate2.nlnetlabs.nl. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY SPF +6gate2.nlnetlabs.nl. 10200 IN A 213.154.224.51 +6gate2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. uNwxoQk9cdAKx7acXoEAXHxJN/7U7Bf94w95fCn2Q1ti5WIb9JEBZJD6 cT1uQqieISZgKOae1ZYutPwlpGg/nf9aHWh0pflthu32jI3YTHGqRP/w fGRPC9g9uqjtV7OytiZ7eqxpZjMNlh22hATMGVaQXCtA8ZcHbkJlM5W7 WAc= +6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. cvQXNLQm6XxspiNz1synVEsxmYtN7q+vc9Kgtdwwvh1x/1OJQR0QBwjT Ksj6/K5/17PWeF0wAtEMyAsTLHEu9Cn3xZEJTOqfhDGPUK1iRBUDlvRM ZGoKftGrqYXM6g8GiD4oCsmsJVnoA/BGgNEV5uvHTm0KXhTUWv0A5zMQ 93U= +6gate2.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. hn+aIqKcQOCm6dYXKGnaWYnbotB2mcb6kCAhfSJmw2F4o/CoWzULOAsv gEwkRj+P1QyKfhTwOVar7MvlCVeFL/h8JRmOgLO7c9CqCQVJIIthGJ/2 7vvOsMRRnKSha0utGUX5iyonNJ3HgngjVDWcF4xdRvDfIdS08IHsZso6 P1M= +6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. OmoMsW3m1w9HW0XM1cqwiGgp0y0uupOGC0YEdKWqExWVfnA6SMYjZFQZ 0oJA+ik2tTNcfwx4yWlj+8+Q1EEVBQAfsycKUqsqe58t7Qyf/pCz2eG0 KTIekJKJLtN08Q0ZSJkdMlw0QkRza3XK43zFMNys8R/1xfwLtjnA8At+ GCo= +6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::51 +6gate2.nlnetlabs.nl. 10200 IN SSHFP 1 1 E3397141AE97D1D685F2BD9130EC1A06434533FD +6gate2.nlnetlabs.nl. 10200 IN SSHFP 2 1 4FAA8F69C8CB5DFAA8BE9D1D197C01984DDED163 +6gate2.nlnetlabs.nl. 3600 IN NSEC bgp.6gate2.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +bgp.6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1::13 +bgp.6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. zMmJEfdPvv5aGzFrz7cRAro3LKBT+2+sO7ax6TgCVeEwtRMKORs1K35P zq9wH1MbyQbx+WT3en5zkIFitZo20MRKClLu6Kb9ShRckmrr0WYpwS8z 7zc89Xn7g8cXHuctXxRXGNXRmC5QpgmMjkNxRoj7kHKc6X1TrBJ5j6ch uYE= +bgp.6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. zR0cqysJA0rnVKKG7DHEFYt5iKeG5jO+hzKNm3rpCoBFwiUvQdACVF+I cKJZ2NvyrM5viO6NP53Gpk5Yy24/WYD2ZZGHw19O4nw16iYQb1rHOtz+ ja1SxVXRwhbwiU0QlDgP+MdD7GZw4jqBtk+n/6MkUG+xcb3vOLGWs0QM Jj8= +bgp.6gate2.nlnetlabs.nl. 3600 IN NSEC ring.6gate2.nlnetlabs.nl. AAAA RRSIG NSEC +ring.6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0::1 +ring.6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. MuY3USdFrwWic197i4mROuc81P4ZXDyO9pxOptURJXFOFKE9C8OfvRz5 lrATNdUPUzJLAcvTKWk+J2TDlTOzsQ9b5KskIIHz13yEyL+U8raJAVRx lVmpwOqq0VuT1RzxX+ScX2hxNsxsiXz6lEvPYLouaNNcS69Sbkk8cyuU G1A= +ring.6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. FyRiYBvIX0mxv6c696lTlGBlbD6AEHhsIEGjPqnrRJ99STI7PLbnIlYk cRNZW9AOFXW/ORYzTNwgpWUsG81FlsnXtBcIqlxEIiUxtIQkvfpU9OJs LjtEdWQtQXRrTyzaLV/jlyozW0BBrXPY2ejDu6B6aMy4udrZJOBjCL7r vSg= +ring.6gate2.nlnetlabs.nl. 3600 IN NSEC 6only.nlnetlabs.nl. AAAA RRSIG NSEC +6only.nlnetlabs.nl. 10200 IN MX 10 mail.6only.nlnetlabs.nl. +6only.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. 0+ZgvFJIGHSxxCTrmbXAO8CZ9UkC3LAQ93SlN3vgoDU2lPJngX0fVyKW A+D/e4rZbglpIiI0nmnUF3wPEFadPn75BjABBk6c+iFfeyF/TjxJvqKw 0Gg2n/68nj2gIZW8bhH619XGnpplC1n7hJpBe2gOScowOvk3cvA0vUad 418= +6only.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. IqdajykUQQeSGZN0FqN2cWWXqRsY7tLIyUC0e+lMeycdf9gO0Ri64lJP L12vXWn73yYPnSLx/NN/yVAywQ6bm7iTY9ujJmBbyvhTXahp1eubb/4V A7/U42FJXj5cGuz0HuasiOl8LdoPzW46H9yWL6zWf+Z7IPxy5xpCZLG0 trk= +6only.nlnetlabs.nl. 3600 IN NSEC mail.6only.nlnetlabs.nl. MX RRSIG NSEC +mail.6only.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +mail.6only.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. r+XJhCXz+4uiojObijxXTHs367JSmCqG2Ikje/l5MdQ501AOuu205z10 pq18bTO2OdTez6DfmwViUqeqovJsUXFN0OURAUPyVM4NH/LaniKncILW e0YnpzUYdjFKMJRJUzxleZmFyRDcdHGISd97qBPrSYv4HFEjkzU4Vt41 4/w= +mail.6only.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. ZpSkhWOTiME5cSkGNDahWpEZe42MgwPKlqsgF2GnaU4+wFgCqNA+mae6 jnFiTTKrT1pbgQ8XeKBdT8kcJWvJ21Pa8Qbm6LuonkV/6fz9W+IU90ba U8v3YrpIuVpQd1Bd+YwsXu88qFHh7GMl+S227ZqaGga+AkYvdxfXKViJ 6qw= +mail.6only.nlnetlabs.nl. 3600 IN NSEC 0.1.1._dane.nlnetlabs.nl. AAAA RRSIG NSEC +0.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 0 1 1 6F2851409D710504A35115ABCB9A6DD3F2577EC937C9EF1938926FA8 2FD6FF5D +0.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. AzCKaFiwAB8WF5RValBfgGFAIXTSCR0Gqn2rkc1j4QxvECSoSyTqvuNc f5wyp5QbpYtktWEt6DKAj8MkGMuJS8dbDSrbduTbXMhtzAvtmErIGKOo HvBVVKUuFaNoOlV2qq8wT2XjrFV/s0UnojWSyAf6AX3z8KLNJbCaBkT7 76M= +0.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. PgKqk0R9rAdCM6mXb2zrumcsPoqoVaTbghl6qzTYI2f9Kog4X2JOnZCW DA+CSzFLVEVfA9Hc+PRu+NxPumfThvVw0KFMtk40UekWUyk+vsSsjKaR Bns9BRuAiIBuQaUCkAUCD8vtjOMW++Gqi4W5D6p/t11T0heV3l08qzJJ eR0= +0.1.1._dane.nlnetlabs.nl. 3600 IN NSEC 1.1.1._dane.nlnetlabs.nl. RRSIG NSEC TLSA +1.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 1 1 1 0D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD 6B9305F6 +1.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. FVjFlfzMwPC9TIe2kkdHMYuND4fT51+nlu6kX24Vn3d4pQ1u36feI1Qx cuk1Td0Evsp22cqQgsXeBFmb/IzNvWGZqfvt9pU3uZjOr3o1Ri5n1ea/ ay0V527FjuI0mMTFa3Mu6bgumhGfBKGjZce3bbBuVcLbfvDQwp6PK7mz QC0= +1.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. vnubMK6Q4l60zgt+E9oB+6MpAHlEAoQLMNznCVPpXotuAfCsPkShqPzL wtENE0TQ6yddgjmPXMlxG6eeXDdFylxG7gIVkA0D5Ri5luJXjdqqcF1N CTFm8/Rx1GR20/LPbqyMtB2l3O4cFQ8SdK42MsfK2pYk1C8tuyvyUL1c Y4E= +1.1.1._dane.nlnetlabs.nl. 3600 IN NSEC 3.1.1._dane.nlnetlabs.nl. RRSIG NSEC TLSA +3.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 3 1 1 0D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD 6B9305F6 +3.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. FIXBkm3grEqjaQ2wKx+63Q1W+h03pvKhkpcgLXk1Xw+rs5MVLwMhmC18 kIOaYO+l7L88a4yVFwXSqBscWwcflz3XIfrfZ5pXF4CugHnao2Q8P7Xa 6XaTsWbtPQcUOyASbyvOFWp3Gq292S8GXc/tYQmP15PPSRfBz5FsBw1c 05I= +3.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. EDUU5j/Kqre/eBzSdI3mnS4f+1YUNdJeEBGG0jfev+Dsp/7A9J+lPk7f l1oqe8irJBQWu1+WNvueRK9RWoSgIYb6O5c8SyoxsP6X9Z3jFEbQSFaM KJR6LjUK+39vDuQIA0PKlsafP1mVna3OqkRkcgnwWHRK9G5P3foTWpEY wbo= +3.1.1._dane.nlnetlabs.nl. 3600 IN NSEC _dmarc.nlnetlabs.nl. RRSIG NSEC TLSA +_dmarc.nlnetlabs.nl. 10200 IN TXT "v=DMARC1\; p=none\; sp=none\; " "" "rua=mailto:dmarc-feedback@nlnetlabs.nl" +_dmarc.nlnetlabs.nl. 10200 IN RRSIG TXT 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. PjbppgbGt74xS2QkpBP+eHPK9J29LgGh67yBB1bfmvhEWnS74xYWLSl8 t8Uz1qNk2WvCOEuEXULFVOKcdNIA0C5vQS8tKSzVN776jiVr57oBTv8k EjLxG/X/iBmqXwo5Ad6ApgHeZ582AUbFmyR1a25uB+/9Qw9odwbWdeq1 g2I= +_dmarc.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. t3f/trMona073ogg+sLk7Q0UBguMe9umhQHa+8+z3wI8maZB2qUCxSP2 dH3/aVIXyF9UeqazAl/njf7vFewoORQjvKTdK5A6cU+G099cRjQeUjoL yO81s3GcuvtsrbeiHU8BedxzM//HSSYYdApiPdincI1E/JYZRV7fNgML fss= +_dmarc.nlnetlabs.nl. 3600 IN NSEC default._domainkey.nlnetlabs.nl. TXT RRSIG NSEC +default._domainkey.nlnetlabs.nl. 10200 IN TXT "v=DKIM1\; r=postmaster\; g=*\; k=rsa\; t=y\;" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOBxkIlNsk1fVhUO8fZs6qJV6/ZFEsltVIuTHDUn1dQXOSqo04SCOXiuRgsFzxKKAOqZKksjEdxzcGI7UIakfyzHEeoAeeJCrIQoY3NcTOm6Z4ak5X24X8dPIi2075YwFAHiwELthtgwtrvUpWr6U0KBmEeXtyQ4nk++HR2asJIQIDAQAB" +default._domainkey.nlnetlabs.nl. 10200 IN RRSIG TXT 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. nnh6FfDhwoEYAm5f9b5eVtHl14q8EBb+EGmiZxBBUQV49xLjIouSeFBj VTjJDu6ZvrhnxR6aTDR1GGOhKraER7dkTwdN6SGSQtMoERb2DRTGL97t oAlaWtYSl4yE1YCPMaj/tixDr32EKVtbiC8nzPrDIg3wd2ma/+LTCL5x s38= +default._domainkey.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. EM/ezGvvVPrjwNM4I3OECTqkG6KX34u9ZNKQtiCdDDCo6mjvGLEAYzla sSsEFxLy4tPBQNJ2J/iRTzItNKJbip5f7rvagfoKXJbcHVopH7eh9njB dLWvTrFqUpurPoyjU2jwCic57dZfSn0n/1P8bF8t5MeceXrKh65HEIXn BQI= +default._domainkey.nlnetlabs.nl. 3600 IN NSEC sleutel._domainkey.nlnetlabs.nl. TXT RRSIG NSEC +sleutel._domainkey.nlnetlabs.nl. 10200 IN TXT "v=DKIM1\; r=postmaster\; g=*\; k=rsa\; t=y\; " "" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCy" "" "elut8mTa/rChg/i3wKXtQeB/x75SeuW3enXBk9h2Fb" "" "bRSHqU5+MwKv+joaXNgVIKJOwHEM9awaF6+Iu7hvOc" "" "ZKBenZaYrjRALuvblS61qe8ciBC50Vq+Ns8XuA3gmM" "" "UsZAtHXTUwlDfGf4YQwCrgSLbJnzHFO0JHShoDyCB8" "" "RQIDAQAB" +sleutel._domainkey.nlnetlabs.nl. 10200 IN RRSIG TXT 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. zXL2UVNhhUWua7q+yXiZARUG5kkonsT3RkLpr0XwUt+bKs591Dvunpg9 Gzfl37i0l4fg5bxNOHANE01V2dxqnS/hNBA9aUWXVpV4kApTsErxDzUv RdzbJ8V058LwOg7punHHREbxxWJOiisf6akayZxkh5Fz7UbiY6js3980 BEc= +sleutel._domainkey.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. DYjgoV7QdQGW/rwbNKquyLbD56wP5a8XfuYNXrufZO7uvZQ9h6wIuA9/ AXQ+aBrUFvDixAEdbuBtYGCou37/FXLY567wa9r8JUcqZBPI0WPu61fC 6q24pK8vifqsdphwohHndN/zMGELuAmihQiDP4i0w65NY4w2MgQHcVl5 E6E= +sleutel._domainkey.nlnetlabs.nl. 3600 IN NSEC olaf._pka.nlnetlabs.nl. TXT RRSIG NSEC +olaf._pka.nlnetlabs.nl. 1500 IN TXT "v=pkal\;fpr=6FE7336E897BAD4826AA4260B4DFDC6B76092287\;uri=http://www.nlnetlabs.nl/~olaf/kolkman.pgp.pub.asc" +olaf._pka.nlnetlabs.nl. 1500 IN RRSIG TXT 8 4 1500 20140224111604 20140127111604 42393 nlnetlabs.nl. Dj25rAVc7JtVXwV6cSttKYzwlDV1L3csC1zi7kQ9igcaIZ9pDD0gKZ8J eeTw8ofQEU4GQqfYFmiEbAS+2Dv9WuYNbLkoggQFut0fzWNCgEnbYbAx B2uDuETQmHuB2osRuw7RG47TqPXr9y5hORSGuprtGCWkaYzccG8aAWV8 tkM= +olaf._pka.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. nK+bycdNp05zg1EdD6U/9Eby3T9D3/lHbDAGbEwLWqyMQqm2QeV7CXnA Dhp1XBMATMREasupxzStl8IefDgb78vxlhV5WBLNH9OCrFZE3/oeeshU dffVjj4YuIBvtMIXlFhUoHVIL0VxXL71m6Taxzp4u6SUsQUhZQWU5fxj YI8= +olaf._pka.nlnetlabs.nl. 3600 IN NSEC willem._pka.nlnetlabs.nl. TXT RRSIG NSEC +willem._pka.nlnetlabs.nl. 1500 IN TXT "v=pkal\;fpr=DC34EE5DB2417BCC151E5100E5F8F8212F77A498\;uri=http://www.nlnetlabs.nl/~willem/toorop.pgp.pub.asc" +willem._pka.nlnetlabs.nl. 1500 IN RRSIG TXT 8 4 1500 20140224111604 20140127111604 42393 nlnetlabs.nl. Nq+yESvizbiCL9cAPctT6VUPsry8F0CSe4i/Lumet2cotuDQFO3m8Yev YvCzFqV9BYspWH1jhq31YazFTTBSLHgNbS9idm6Wfa5jaOY1fnq3pfjH kLIMLTW6ucHFg2T3UsKzFqQTdkXc4J4aDonmd8joc3KPMPg6ek4j+SC6 LEk= +willem._pka.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. VQXttaNzBvaSsFZVhebwP7dumBY50hboUqonsJvRwdSNnkAvhCeh+hHw 10pY/2ptC8AXoPw+xoKTe3Nxs688Kwv9gp0XvAUplpwJ7GCnzb+cHTy7 k3TfJWq+sseszL39bVrN0QqTRNge+Jb94iJrvEWQdXYHA2dmcuL/QpOO y7I= +willem._pka.nlnetlabs.nl. 3600 IN NSEC _25._tcp.nlnetlabs.nl. TXT RRSIG NSEC +_25._tcp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_25._tcp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. B4+eMWzpPoJB+2l6sbmWEkveSSAwTU1l0qokjwo6UegZjoFLSF8x87T/ DYBrwZHlEos7NaJzCxKM7A3XfTirRfoBMy/jyKoDt/TrwD6m5xStqrjP lR4V13v3C9d8Lhw115YzSe07Fdxlk3xutMxXgW55jd7/EiLZjf8aHHud pPQ= +_25._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. SBxGMjv9lWi9S3nWqHbr7k6cuWuyVQ+e1YDo0m/FUGb9mzvoZ93ox2SN zPBPDwH51vBfW6iZVckIdyALd+eAHyfKbvzCh/e9K6160Na+j/gd37gc 7Z1Ds3xxXaLBNSi0hKt13SvKQ3y5dZvLiV3OlTpqo91cvU0gnhIslYlG TkA= +_25._tcp.nlnetlabs.nl. 3600 IN NSEC _443._tcp.nlnetlabs.nl. CNAME RRSIG NSEC +_443._tcp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. sLLZ0Lybzjj8qFznZG6crXdhWHPVPT3ydzWhnDM1F+QBroTe9FlE7jKg nE6eAM0tkpVcWTTXZ12p4pqApuVUXcnGI7iysCV5DCjxOcUoxNfjwpbI gL9YlzIBX2Uupzwz38BX96JUPc1VWcG2lTW9mcTIfQRWpDOuHRDkIe90 l94= +_443._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. V66uAr3ewOJJksnH0nKRkrYv4ljQP1hEu86BLIWWbNT4COuU1Ih4o3Yb YC9hsxpOQrSPrUjLsc5SPCOFxrgK71TSBrkiJwVMVhlwiYxoiSIVvP5J DloAdr9siMIpr0Q0vL+FXsXQC1Bt711y0Ll71UBcbqqbO4twTAY4Sxnz 6+s= +_443._tcp.nlnetlabs.nl. 3600 IN NSEC _caldav._tcp.nlnetlabs.nl. CNAME RRSIG NSEC +_caldav._tcp.nlnetlabs.nl. 10200 IN SRV 0 0 8008 ical.nlnetlabs.nl. +_caldav._tcp.nlnetlabs.nl. 10200 IN RRSIG SRV 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. OZ/lvd8G9pu8ft+DPki2jExy50DCJl2R8RHpPMCem2CIw8L4Ya/Ig2Mn GHbQMGjdhYLvMg8PfnuA9FmX/F3oFPS7mSY1+b0dirNaQjoyMpNkYGfp pfWwJZxs9n6Mu9C7Wvxju68yHD7TsnAMJscY1AgljEYK2l6izG6OC2Rt l6I= +_caldav._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. NiUTTSlKA2iZeDtLdGFH8JDBozTs3bT4zaFyvp4X+O8fkT3c4PxALN1b rtej6gLGeMfJc1lBpfQkIzSEbJvPIZLMWNIdXoHmTvgF7fwC8YLJelyW wLkYFpLA0fSpx+w295bduED1oPp1P8BJaUNVRHd0hQoZHG3hbY3pi2Nn v+s= +_caldav._tcp.nlnetlabs.nl. 3600 IN NSEC _caldavs._tcp.nlnetlabs.nl. SRV RRSIG NSEC +_caldavs._tcp.nlnetlabs.nl. 10200 IN SRV 0 0 8443 ical.nlnetlabs.nl. +_caldavs._tcp.nlnetlabs.nl. 10200 IN RRSIG SRV 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. lvh/iKbpOOVeYI2UhI80DHYuWMVwHWbLFuFtHzeEKOd7MBxY25q49mWF Yzj8RK10C46YGeHTszqXKQpOcHNr1eB6qYbu6JFVQCOa+dir0I6td+yh Db49l6/5Y53+KMLJfc1B1p1hMiJsAk3leOG4eHTZe209KRreSF9frweP HHI= +_caldavs._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. ZbPrNbNAs2nzNkKTjc6gjH3udbSgTSd1L27Sm2r4VgDySF4+Q9BMmJGv XjBb2mmjorynDD2mCg5q/Ej/MraHCO5pkQIxCTMwolt7p2SbLCkEjfvG sfbMCeE4b2Cfvv4QdMSvmEsnMOpg4glFADftTjn87ipBHHPkRscUp/6Z 9pg= +_caldavs._tcp.nlnetlabs.nl. 3600 IN NSEC _jabber._tcp.nlnetlabs.nl. SRV RRSIG NSEC +_jabber._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +_jabber._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. K7glashfD/4qaarHN4gbuE7CtML2u8qfz5OTvsz32Ge9a6MbF3+ulKks k517H1MCIC6jpIGFyaGbxIq6mWcPrjzZ+Z19iETlhohkhur5lPdPfWyT 4KnAglExKiDRGnrjttEuCzvsPp7/MW0MvV7sT1Gna4FqQDV586YAublL R6s= +_jabber._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. CFGpdsJ4QngxoyWl8BB8MjZKMe6ImHCdGO5pt8UAWPzx0K4I2ssU/Fih i4Mt1ghC3YPr/nVSzkOhxT63IVyXqHuJYynDpQoUvPEcTBa2IM55g0l5 qrTEr+2KaC9dczHt9xP/FzuyBgy78gV6t9mz4+orCu2DcZgaLifXY0iM gV0= +_jabber._tcp.nlnetlabs.nl. 3600 IN NSEC _xmpp-client._tcp.nlnetlabs.nl. SRV RRSIG NSEC +_xmpp-client._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5222 open.nlnetlabs.nl. +_xmpp-client._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. SZIDj24vcm7RmR15HsBAmRBkk0R3LRAhkgSHtLBe/aMBSWvE2OwA+z8E 15Ap5HnwnfezlvLa2PqJ0WZeih3GtXt/45SyKcrytsQo+w+ZnR4Girt2 FMoH8/BsT903mBI3gMBEF+BlOA+Wa8WnadhdXhoDiLMsEygvHSJvUWCa xvU= +_xmpp-client._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. yjZ2yamuUx5OJ4bnTQJ9SToxMUSYcq5oNuSAAJ/MQIWfby8DsLGgLz4O Uip58KcrJqSPObVXmivNTcFw5LI7ADSIPxvmLGex27Sv7JwaSxL+nb+Q tWHhNriur+f6B2VNIyncyTm0sWJ3kdt+mOzeP17fsLmm4Aj9kka5C1gh ZCM= +_xmpp-client._tcp.nlnetlabs.nl. 3600 IN NSEC _xmpp-server._tcp.nlnetlabs.nl. SRV RRSIG NSEC +_xmpp-server._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +_xmpp-server._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. ieSm+LDFgFaWQDR8bnXfO25/09vEQLfdNTCxTIUsnr+9JAV2WPtx/vt3 65A3kBdegN/QnPly6/7Js4nxHq2CEkxCO1TTz/Q892SVjj5EHJx1bt26 Gex0qmPVz+lAc9c6hBDZx6hlOnOg8GtWC46svhaQTLiUh92Vx+S47Wjn MZY= +_xmpp-server._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. DIwmEXmK4N3P3LX7x7ZVQJKiMy9O/QApYRwbv2Gk/aH2vboZYm0FLWL1 myWtUQA0E2m9pKLtJvX5sbfjjHqjgnxLrMkYLsFJZYT0Ed+7di6+iQFW haXBVcVLRCxvNDwJFXxLPXRCwpY9nZYUwj1OGZ4/oz1CQ/1IhfTDyrj9 F5g= +_xmpp-server._tcp.nlnetlabs.nl. 3600 IN NSEC _sip._udp.nlnetlabs.nl. SRV RRSIG NSEC +_sip._udp.nlnetlabs.nl. 600 IN SRV 0 0 5060 obelisk.nlnetlabs.nl. +_sip._udp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. TjdfpmCehoMhoxwdFmeMD2ROCmufh5IISxn0vosmJrwRoRICATE/U6fj Tej3B6joNriZFb6lKCfUIw+CF8jrXnevBXyQaAGYto/rEbpsN/bNOCqZ q4T+ilaSKtlxnCSdcRlEJ4twyZabmFjEsJmuhc7wjaqO6A6RYWkDG2rG pGg= +_sip._udp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. dHbUdcoIgC8BhxBmbX8rNp0B6qql/Nk8y+q+gk/0IlISmpPwW2KmgXIV Zw4yuBx9wGkUAEJpC4FeJHwDwxzK0whwFmhp5RMk3jFPfyB20YmVU6hK N24VhbieMwOwplWypwgEv/5wBgEEShZa0pN/Fv1CQNiE5GGgOhygFZtn hDA= +_sip._udp.nlnetlabs.nl. 3600 IN NSEC alcatraz.nlnetlabs.nl. SRV RRSIG NSEC +alcatraz.nlnetlabs.nl. 10200 IN A 213.154.224.25 +alcatraz.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. Y0yca0cmnNB2y4zz5RpramR7X/yumBZQ57sMdOMBgE5z4MU6UKzXefo1 vHkQ2TP5FEtchKyO5e/p7ahZcDV1PjyyE1ICydjZdkZ425zAYGmSBe5Z R87cMu1GD9ZJiM/Aa0vOWzZdsjFgqu2WlFDrM5+GY27zX+Zk/N+jhDzL 1wY= +alcatraz.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. cb7xdlB+D1oOegdxGqOiCt1s4+6mOAc0jOuYxfU6LNNZIo02VXUj/I2p yWNEKBtmmC3AKCbJQinCPMP4cgmEgESeOzlkju9yTC+aR4L9iJUPqFYj eNCXNrUQx5/0to9DR6CghIAsJ5ke2hGYYRqmTgJwK9MPGb7glTOMpH1F 1Vo= +alcatraz.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. N97ZgCNMIrjbVgT9l2kcy1cdNybLx38PvRx0wrUaWQxT8hid0td8atIQ GWHSDQdy+UJ3XhQHifN1l7nJ0m9JRQiTdqkmUw0KWw9c5ISsfTQXhld1 uwGZn68eJYcXtBOwZe1a4AOMlaEz1kLa3QLPikuen5cX5LGSfa98/ROq NyI= +alcatraz.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. JQLCeaiV2tutfuNGsfTpz44WTPTvCFF32II1+kB6pFIH1YqYYL6JgBx8 pZGMBGx4yOMoyXxue/gPFV0uNfGQNMmhetfEtwJlsNTNnbcg1gLKNqzn S+eQyvi4mXZ53n7hKvKP1rSKvYVgzxk4xvfcPa6Gp8UWSQGtvuw067tB XFY= +alcatraz.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21c:c0ff:fe3c:3d00 +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 1 1 B944A464623DFE578BE5351837E725E866671D47 +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 2 1 A0989A25D41E77D56E37FFC5DF1716CAB3B1A16B +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 3 1 C2511B00B3D725B8F2BCF27AF735C2946EAFD757 +alcatraz.nlnetlabs.nl. 3600 IN NSEC alexia.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +alexia.nlnetlabs.nl. 10200 IN A 213.154.224.210 +alexia.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. C7dGESr/jAOSVHFoguFl9uqWH6phi+GGyR9NO64LZhi9JPoPegVo6YHL YOUgCriJfPps0qnHfQlCXSLNFEOSgeB9P6VizBNmoedAQavc1SzknZGM txd8OmQyl4mngd9OazNu6HMh/X2oTEmr9fHZsPOBrxoXO2Nh9u/dgJbf s0A= +alexia.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. aLvU/0B9gvJeBUS66BMxKTph9h8MDERxHTKPIWQT7lmAF99Yy8Ok361y gWLQ4LWR9Py5Z/J8DXDQpmnjp74IQHisTxE2WsMQzH/ZBGxQWIsqv69U lbmoPTbuiMLMk2Nj+Ic7NFS2rD21r0Ktl05uqdiB4+rw1xz10P9/bEOy pAM= +alexia.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. LNP3jr9Kgqt4/FRuCNsK0fjBAvl2hNKiYrESNRcX9Rhteow7DKfQpKNm ogz3zABQEohh7N3fR8VBiX7kUwXLUaLJHkY0fKujYtVsuchTVyTD8U0g 6JaqzZ8VoVUrkFvnBq5y2JfnqtYX/JvRJY8J04bL0TyWpzEWgjshYswP EZk= +alexia.nlnetlabs.nl. 10200 IN SSHFP 1 1 B91A18FE2C6E91D6C36E49C76913601F71E8D458 +alexia.nlnetlabs.nl. 10200 IN SSHFP 1 2 58DD96744E805C4950B3C0817BBBE97A80AF42446EBD458B05F7F879 7FB8D806 +alexia.nlnetlabs.nl. 10200 IN SSHFP 2 1 A89C7B38263F4186D8520C6C85237C38578D5441 +alexia.nlnetlabs.nl. 10200 IN SSHFP 2 2 01907DB6FED4A633ED021B1A939D0387931C800BE4929887A4AA79FB E365E0AB +alexia.nlnetlabs.nl. 3600 IN NSEC alpha.nlnetlabs.nl. A SSHFP RRSIG NSEC +alpha.nlnetlabs.nl. 10200 IN A 213.154.224.59 +alpha.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. cl1kcl31/OMwRfnoIYBF3VPXYP+ZHHnya6ILm82bPWBJk72m2le+ozEg p03hRAOSM+42Lyu6KyrYcm1DUiDqxc3SrTZgkybsBzPRHogFwVty1ZCb bF2aHB+zTFN21adciq+GOrh5GbP7nGTJ4qZ4MCpHgIPiD5SesY4ftNA6 HKE= +alpha.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bxtLW7DZph7Ck69jJZq9UoKhn8Bk1OcjwW1qTxMVR+iTden1mTZm5Cef Qe+4T9NZkhR8NjTDso2MIPQNnxl1e5nbIvm/SPSA81u67ygsHmAOeEVh 2FcuCTkGREVtVm8BasrFV2KzNVGz0G4741eTKgPnB6ho0nTFfT1WZ29N BY4= +alpha.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VtBYdDbarNqSD/o0U/nOXPjAsoEN67024+0A+GYy4zLuvY4HCtiOSLxe vry0sYt5uF7qauQg4vuPSCh0niLzWwkK4zBkyX18PSwzKHR22hWxlglW TDclXeoT5bNPqmt31AW6m1HPdZxNBw0rhyHwVII5zjsTfux5+nfYyqGB VZo= +alpha.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T97o3q0OMy+j19ASHY/zxvq5LHhBJuTlHN2RMIaKXuGSuvUlbUWAdtZk 1hc1pWE1OtHai3dVXxTNvTJkBdSTzRyWuJb7tabf48mxs/A8pPs6Apsr nR0/BxIXPEzmciNtjAss/U5ntHyYPLkg7yqYrIuBzUZqfCjvAORIhTxE T4Y= +alpha.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::7 +alpha.nlnetlabs.nl. 10200 IN SSHFP 1 1 B64058566EF5987D784E3ECE10078FD47DFF77CB +alpha.nlnetlabs.nl. 10200 IN SSHFP 2 1 4E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +alpha.nlnetlabs.nl. 10200 IN SSHFP 3 1 3544B26A0618AF50938755BAFDB9418F46B63578 +alpha.nlnetlabs.nl. 3600 IN NSEC old.alpha.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +old.alpha.nlnetlabs.nl. 10200 IN A 213.154.224.142 +old.alpha.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Lk9LqwwHLedDI06ZeDcwc+/JQw+2aXJ+jguZo6LKqNDN8iFnRiPDcAlq 6BzH8kiiUylP8Y9hw0m4Y9APsug1uPDKTfoUwcBhM+VvsBfJzc0DHMFm qzrI5w77+AFfP3wH3CYPBq6PXjinF8KfQ1DDA0J3U0rSxbI56+N5nxQv afY= +old.alpha.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUDI27svh5H6vAjpGtqshRUckujAl5vhXZsLwLSl7YZs9l3xvY1nYaTA +J3h4DVmZ28sVeja2VDCxH7994DDRu3+x7Hr0tWU56abB+lBE9JXl3wn 2JV2DBWOqo+hImxcl5e1uUQlT6ZdnunZsl8TaWAbP3TxBNldtSBN8VYB 6ws= +old.alpha.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a8UgE6FOWFl216x3FtLdo86w7pX6ni6PUU9SKhF+UM6nImt507OXX+zp nfPF/KKl5uHesFQDYc6c+hFx8nBRUmgzcuME2mDPHcdTcwH2Lbhaa1QF F3Cgnj8mPXuJlxEjIQdWC4gauKATPK8UlUjx2cw6PU1JSOVB0Oy63N6M XUY= +old.alpha.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jVHI4lefnBrAyjuBR5H2YLi0L9ov2/+Qm4fK4tm6YKzHKhZnQQ2vnxAv AN+pNpyEfuCsLtvALRvKc3P0Phebbpa/ecAcVFSvItlFY7LquYSa7IjC NhTQvW+mPr8LEdHqNoyCTcvRnbQiScP9O1MMBoCDsddCDPeucd98TcNx JdY= +old.alpha.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:250:daff:fe3d:1d6 +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 1 1 B64058566EF5987D784E3ECE10078FD47DFF77CB +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 2 1 4E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 3 1 3544B26A0618AF50938755BAFDB9418F46B63578 +old.alpha.nlnetlabs.nl. 3600 IN NSEC amalia.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +amalia.nlnetlabs.nl. 10200 IN A 213.154.224.209 +amalia.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. osk1W0kK+dXG1J0EbDVBWvDeqDTsRF2QmbeyEICA9YWITflyzxVdiX6r y1V5pcgLc0j72Sf5pVswwW58fjW4oeke+/oMpMIgu4Haw+8xVrbdhaRd 11dHjlC79XVqM4bUnpctMFBLH8fcvnBReu5cqZy0OQd8pexeXnmERlaJ aZg= +amalia.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sc4Vc/L15BrGA+zSoEYcnMo4QBlUAv4l5yWHbUjuvMxZb/f73C2lYHeZ CL/+E5odinSIDaB8cmmnsHi3fBY8r57M1m11M4tbU1JVDWequmPkCZnF kpVkZzVnRTJXp/CSfKuSadfxNW8d8jgrhKL9iCl0BWAcBkp76Gk3yRfN 6pQ= +amalia.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JMWTCP45yxd+pJ3ai4LIEX1/CiY6qQuKvElKwdIMwHEZuhZTPz/2zRsZ ayJgJjZzhNTI9bswdKq+dUaJ5ziwAS8YsawO3arL/xKvCI9GDIqfD9sa lx+EFXNuA4BHw/+GhxKsqTOUo7VYkR3fwKv+8MxVQWBhlrNOG6JAYd9I FeQ= +amalia.nlnetlabs.nl. 10200 IN SSHFP 1 1 24526B0DB9CD858285E297732E47586D0F0A894D +amalia.nlnetlabs.nl. 10200 IN SSHFP 1 2 874F4343A9DAC9AEC8E17611B3424F08AE46274000D4AA03DECAF645 D0BF59D3 +amalia.nlnetlabs.nl. 10200 IN SSHFP 2 1 36F26D5F0887C93B1C76626083CC3826EA929711 +amalia.nlnetlabs.nl. 10200 IN SSHFP 2 2 A22D01A9B4920A8281F41D280B065B03DEDA6AFD268B6679D18F9D3E 40E27DF0 +amalia.nlnetlabs.nl. 3600 IN NSEC apexonly.nlnetlabs.nl. A SSHFP RRSIG NSEC +apexonly.nlnetlabs.nl. 10200 IN NS willemtoorop.friends.nlnetlabs.nl. +apexonly.nlnetlabs.nl. 10200 IN DS 33735 8 2 8FA16EC68A557AC5808941EE9E9563C526B42DAC09262DDF1A7C7A81 051101C7 +apexonly.nlnetlabs.nl. 10200 IN RRSIG DS 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hvczI3RkWQix2lpe6Ygb5d492DW0J6oLCb886DiRJhRlH+aONSq2o0Kz Uk/VL3xSwMjSV+wzWqT3OS5ym98WFUEnHEnqdfV5HoQDyciAzrotQeUE XqlqHm+jpINgg8buBE4jL6tMemRsHA3P52aZhMBwOV/a9alfNiwABCIb vco= +apexonly.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fOX9asNZ2NUSEX9JCrETYmFNqp95VKQPGfocmtHDIGXHACepfFbsUR+b LgBQeHaDuXktq0k8ydk92karLpO9NRRFLiYDEbW0zJBCh+GIPNz8PXK7 A7ddmFYEC+bKSH/rMWttdOCTi1zetpWSRSbfwm1Q+3+M2adXl8Rf3hOs 5b0= +apexonly.nlnetlabs.nl. 3600 IN NSEC area51.nlnetlabs.nl. NS DS RRSIG NSEC +area51.nlnetlabs.nl. 10200 IN A 213.154.224.107 +area51.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IYFvACLA5GdQPzIH3JRQQRpMie4C5WoGaIqnMC7InC6Kg/jCMXdFayXI NrD0TZr6STv3Upc7zlEtQ3JjzFV+JUhi6gDEAMIKDNC5dxvctbTG8csP RF1JEOqBSNM4VVvTyjYxJiUYDEB+gd/aiur0Iac2H+5Q1vngB6gn4s7V jSw= +area51.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ySw4SCTJOcXcb1kYtHamY/NKmRjK/oI65j9RNJegiQ50lkY17EGNslbh 8ofGzOn0GaMr0MZ+FPH+BoaSDJmWzGcZ1HPjfk/x38E/gMSx1r+th7N0 4pPeZ/7odkKgEPlf2JaER/2gutlUrXH48InD6QPDFoP3ubgE3oPMi1bo 2eo= +area51.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PxQIZc/JWvxxyS50DMezk+15mKSakNGXz8BgFx3KKGDiNAoG+nWyQbve A2gMIm/LRtkJ7l+hsZP0uZCUQXpgwdVgCRQL24lGBQd3sIF8FKWNris6 uEwKL5cVyewymvnDiZeTTNcEt0PF7lurJNByn5rnHoRxk4ZFuBiU9kAJ mDU= +area51.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T0CK87aof0oWmzaycggpkkX7jk3lHZhop5AtvgN5OnWvXNjp8Uh00y9n 5QjCKMP9vRxrbWSHIInbv2ywg3ximJe8qTAj6xZ/B2fOF2Y/bSOschde Ie8nCMbnlJ6GtUZSIBTDgE8Lf2Yg7cvwQNmlQabkd3truQvDt7Zd1Zq6 9TA= +area51.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:dad3:85ff:fee1:f7d0 +area51.nlnetlabs.nl. 10200 IN SSHFP 1 1 2979793C1D7AB8B8228C1FEF0F916E9E3AF33E2A +area51.nlnetlabs.nl. 10200 IN SSHFP 2 1 BDEB0D0A01B28A188EE1DB6F09942FF4F1A6B785 +area51.nlnetlabs.nl. 3600 IN NSEC ariane.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +ariane.nlnetlabs.nl. 10200 IN A 213.154.224.211 +ariane.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Dxk7a/d9FbrpHbdTlZQyECJaTr9UhmofBZ+sHyE62xpwumv4VmnBZk4J s7YGSSRaII/MoR1Wz3on+rYVrKivSajFsVZvMdEHrEUGFs2A32Qcxebg Q6Vb7Xnwkuyk/poqp9yALDbyyi/ZrSjVrbYhPqjQEbktAcVmaUi9B0F+ xfM= +ariane.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. p5a+ej9k4lcvTv1CqpL/hHilc6m8OwfcL4WqQCHoI94NLP7eVFl8SDCf WlxvR2VFHnR2sMvndrkai0sg5wbtHyvGd3IsEe4UG0I2L7HGt1zaEDV6 smDBtXibhi77cYJa6q5XDYXFaFxTqp4Q8Hapc/w6J3C4WCZbWxmj+IMr J9k= +ariane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kmI7KT7QxM8UETBfbpcUG+eMKeJmS4jUeRMMadZEV7onI/AobRpPLRf7 z44cPcnxqq3UdMurpiKLWsbqUuWOSmzQajINSOJ6Nrrx5AE/k3v+YZKM mL3jVhoZMjyTW6wRkPJ9AfCtxpTMvTs8tcSR3ou25sJCt8SN7Kpk3LUK S5E= +ariane.nlnetlabs.nl. 10200 IN SSHFP 1 1 248ECE56A3DDAA931DE2FD2F26EFA93031517740 +ariane.nlnetlabs.nl. 10200 IN SSHFP 1 2 62E3A3A5E75ACFF2DC2D42752FC2F7EB1BB83E8440BEA635AB4BCE94 3EFF7C0F +ariane.nlnetlabs.nl. 10200 IN SSHFP 2 1 22B076311F36A0CAF39733285CE7944B8716302E +ariane.nlnetlabs.nl. 10200 IN SSHFP 2 2 D1C0519EE0C52684683D87446F4AA4069F91830B4CEF3F85C3CF73E0 C9055665 +ariane.nlnetlabs.nl. 3600 IN NSEC atlas-probe.nlnetlabs.nl. A SSHFP RRSIG NSEC +atlas-probe.nlnetlabs.nl. 10200 IN A 213.154.224.43 +atlas-probe.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. DtI0k8M9R7UIZmYLahpfPSzXHEznECxcxrnV7f5xlPqNXNokRm5LtYYv +cQQ1xDqvYD/ID6X2T6hFQacsQX5DjYxu6praAMOXrPoEwLX+dWmlv0X 4BgvKY19tNzz+bMRassKnRaoSnJYlJqd+zW3egzBy4b1YBkdlxRUHL6z qPM= +atlas-probe.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 06NqO/QENUAaDRBZMF/zg3vYv9s3AocuUjN9uvbzQJ87qBgcHHYgakIH y9Mq9HxKAZFfxfaM571Yl3sVqQ0/8DlwUg+4mYb26t7yWnDbpGwq4Ybz ZidwsfLESbUNWgqH/5N+QxetAWueHuXUJ6huYLbsLEF7pNocW2dRQoZl MeY= +atlas-probe.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Y9ZYh2YyvkiUF/U+Nixw+ghHPQkvWqEjEOvWPES/RwsZ1OUeV+LhqHX2 fLE/ve99vmqNjWsudgfrvMnRMjTj34ye+hPSBDk0lk631mqr+5wyh8kS eDjGBrdAUM+VK6HqFaqEje2SkMFWGIe37QzZ7ebtLck18WVofK2Kr5l3 N7M= +atlas-probe.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:220:4aff:fec8:2538 +atlas-probe.nlnetlabs.nl. 3600 IN NSEC axiom.nlnetlabs.nl. A AAAA RRSIG NSEC +axiom.nlnetlabs.nl. 10200 IN A 213.154.224.44 +axiom.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Bh6kbGjOKTYe4JKxVA61YScMPWPrZDWNjpJXhiftHzYvEI/blDSuv75D g4kfOz0ohG39FrhZthaL6D4JuYuDq8cp/IBSCtOR1sgguoqC3Axnnl9b ZQoHe03WvZkbuOp6qdgAtWE3oDyhrrDGsTCvGPd3XNOu1As3sEnhdhlh 5C0= +axiom.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iQq9NyAhWJKFF2QVVR+PjkLwVsHnLsIrPtXVzHpmgz0Np3Kiw5aEFwMx dZN/63yDvqoFCNPu+MTCa6ukw0RFwewR8EnHRIhh7QDP+APRFrbD6SFy 9eOh3eQpqGkHBT85I1yPx5GXVYgmXLOxtIY12Buj/g2Pvu0cPIdlKZKS L9k= +axiom.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. U+DOSypM2E3BiSjHxwigWZzYU9XssgLBoBO55PneB088emVL1qjE0luC pQBDWVmt6tpkJ5FhSUx3umY1d1ztfn9i4pHKjaOw1iT0aB2Ae5u460BF td+fuK6jTo6ciCaJrmEZmLbyKqFM9QindvMu9+1i88HXCd1p89C60BZB ng4= +axiom.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. hWJM1lWq3TFk+QPPBffU68aCHzODB9V81teKbN0asSG7GC/zV9HlmFUF 7cZ18Z+NRL5P0/5cgFiL82VLFSLddr2Cw1ncPYxAmqDEQi6RM6Srwajs 8tudUsIFqXN6grD7Oi06LoF9/RZYrFKwiPEbBcUPLBMUi05FcL+Ahr+I OKg= +axiom.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:222:4dff:fe55:4d46 +axiom.nlnetlabs.nl. 10200 IN SSHFP 1 1 604CC3A8A6795466E88EEE22ABCD9DCFE6BA7F9C +axiom.nlnetlabs.nl. 10200 IN SSHFP 2 1 6D199FF75CDC453D376591031FE2C6257E4C5F49 +axiom.nlnetlabs.nl. 3600 IN NSEC azkaban.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +azkaban.nlnetlabs.nl. 10200 IN A 213.154.224.31 +azkaban.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CLJfuUD6Uif7U4j1BYgIqzcWzyaa4Pw+qUeR1VHiRi9ClVjrSRpWvs5g uBZ4Ui+N2CjBAzMYjN1baFpbfIpmJDo3eUqevqi/AUv6cz3hXckrVVte Pcw+5rJi8fObUk3w2Dcuk1X2wBA8hqqdEPOqgJHGxZwjnV+CaU9WeUWQ ckM= +azkaban.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yNk0y/JwViW2wcQMAl5kOqM+vmm97Sk6K9bN0JKZXHNtWAi1OYHKY9EY sT77CXDtGo1dx8dDJCbF5dc16RrgbfadAbtld/BK8aYQkBnSvkFHEJGT 3vhqN0asORVtM/Kao6gGM7Hycyvl/MDvdKmfpHcDC3XCV5G3cuIVUNVF 4HY= +azkaban.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. srXtN+1qRW67bF+RuQhTg1tWMcaOk4vMVC7DNORT4tb9K9/DFcNuMdJr ibX+iUfVnrfxzr4mFA3dHqAsbwjbgglTkH3iI2wviynh8H5iJz1OGZK9 vOGzCShGqt1AbWn1Wii+SxKNdcR/O4QBGTEKQQwxrywUpLnSetNqrEEX 8Ec= +azkaban.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SarQi+Ius0bw+MQc5mMnolRNwNGYzLDPOldLOG7GoN7oMJywNNleRww8 ItGFI2wqmQxfQsmB00izadQj6boqZI5teXVQ1hqRB0tEwvxe9xcNz20M pCmO4dh6QX/7MrbRSYMLq/IBTGkxp6fZlHVvmaBGMF3y83rmSa8e6sMR tZs= +azkaban.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1f +azkaban.nlnetlabs.nl. 10200 IN SSHFP 1 1 6243EC2D53E6F6F0C34368C65A44182205C5B0D4 +azkaban.nlnetlabs.nl. 10200 IN SSHFP 2 1 9B6E52735388C32C62A6CE38000809897C922DA9 +azkaban.nlnetlabs.nl. 10200 IN SSHFP 3 1 120D6B12587D5520FA736D6485FB52210B5584C2 +azkaban.nlnetlabs.nl. 3600 IN NSEC backup-store.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +backup-store.nlnetlabs.nl. 10200 IN CNAME gorilla.nlnetlabs.nl. +backup-store.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WScwuGjQqOKpsyG9FZjcKeujzsYVKBURgGsUvmGMRM3+yJTLRkt9pj29 STMYwYVcbyD4wiRdCyMQNFAQmWMhjgl1gc65o3UA1LMDERs+HxxPGeSk ixdIy6/YQtLpixVwITjr3ASszOuF/9ZeTPPJyjnF+LLDmYN1MpMJDvnl oEc= +backup-store.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YaSUfwEvD+Bttf8rFIa4S0Aj7tdrN6C294Y/U0GHY++CFP+UnhOSWgLW SsqznOTfj17Woixoz+MY7SiHSZld6h31tyLvf0NNeAq4nKQnzGob83J6 JoCTaENdMY/29B4JR/pfEnlT4aLRnnrQ15yoxMxvFv8QPX1o6DRPkwW0 N6c= +backup-store.nlnetlabs.nl. 3600 IN NSEC balou.nlnetlabs.nl. CNAME RRSIG NSEC +balou.nlnetlabs.nl. 10200 IN A 213.154.224.106 +balou.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. S2AUBJB2iOkqooCQiAfxXVAoAq/Z4tyTNA0+kKHSMY+noKdYCv8N8JQI 2uFCh6fEKdJ4Nv73/j2YQwtbJ4H8JuuIr0SD1dhQe+BnNiGaY8+oIYT/ tRCrjzIU8njiTeD1CPs/QZFil8fMg4TiztT/oIPickycv7AS+gnq4+26 Cow= +balou.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jxxnqktALVy7Ah1xWOIwCl1a+OxuLQxWmfUKVGLW3yNbhbvuxnk7EMmG eeHyr8oOSa1+iHGlj+p3M9PkpJUIAycRfOqrNNSNU4Tc0LhsQ+QbM91E ha3xEFHNuOvUwwEG5lOuxF6GOn9ZCAMryQwrDHdK3LXZ6papvLHyDwg3 Z9k= +balou.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T0DKCDnirwQeQop1ZadFVcwJsqGiyq8WFHJUP7zsg4rvYwN6AWXoxB2W zmEprhwOKEGea8uMJDQ8e3LMC6JGTIKx+VEzXFdNn86nLgQYdNwe1Wzg hJUay2q1atetXCB6Gp5vnID5ZKqe9lDBWTteMfhtJ5LPJBnx1wrKO6CW 6zA= +balou.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. K7nYILGnV2gvrHKquNcjnQSDgh8uM77fTpqxz0YENJITCcq9e2vO2UNP rICq2ymaRx3McZBaUOb/qgQ7cMoLJe4arKVZROyrczGwULapwKJ8JCMB PDIy29iKOYqvt/WGgHt1u35MMW1Biz7uxlnKZ9VpJIN2zNSozGkFp8SI ffc= +balou.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:214:22ff:fe13:a1e9 +balou.nlnetlabs.nl. 10200 IN SSHFP 1 1 3B6531DEA06624D1C9ECC9A91D2A077EE5BD8AA9 +balou.nlnetlabs.nl. 10200 IN SSHFP 2 1 12D68C712D4D33B453059DF239853113C88AA26F +balou.nlnetlabs.nl. 3600 IN NSEC bartok.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +bartok.nlnetlabs.nl. 10200 IN A 213.154.224.50 +bartok.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. DKrdTq9Ce2wVWqCA1g0X9xw0QypjyCnWUSd9VHU6dQTSxWIZgd98jEHZ dZQvie6LAgU4/fNCcz+gygTMcglMe64dY5vpPT6/SNLFfeqWSLPepGmY fHVmHlXcdpL0OfdePpaOD6gSlJ5KanTNqxABfejBmts4nKlxNU7PPIxj Q/U= +bartok.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0xQdRMFEHZoZWhwSsbasAd5/0usI6KgfcGkUA7UtieuzMQFcmlghaUkb UZve82xmnz+80M/PV4SPCTz9AUY7yKg1XeLIJVt9ej3VxIqSLIUUHIst JobKPMCQ7CIWWx6DcfilyJcZDvxxYfLvsWZBK4Vugtk9p7NtQvavltDR Ffg= +bartok.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ET2O1/Zpr8jXV/IcFq4mfftHZ7OSXnbsTxhwDvIbJj5M0u9FbSRoGs9w 0kd6+G0mVsnb8DeF8VTkvXWXorjzsyZqOw+YuCLyfcieGToJbB5rfpMu Iiyv4bey4Wmc8jt5ta6G+RIzaboylARGrQGUjWcz0Jg0Y7cdfGDVXnTH nmQ= +bartok.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HBAXNjNQCYPvAhG3429jo0pRgvMVVKT7P92/D2d0cnmt7SBfb1hTYyHg YrZMBXxKLottGQU64UJjEEzK23ofyvg7LCaRnvfdEgIGa3UZp2uVmtPQ FmhuCnmIcUlalUkYikHQneKPNT4/nC8y9ux7oDT7jOdbzRc/8sz7sQBS /04= +bartok.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:216:76ff:feb8:3c02 +bartok.nlnetlabs.nl. 10200 IN SSHFP 1 1 A8B153B03F64A09B6FC214B5BCE75CF19E0D2865 +bartok.nlnetlabs.nl. 10200 IN SSHFP 2 1 7070C07AAA3ABC4670865AC7CAAC4038EBECF8AF +bartok.nlnetlabs.nl. 10200 IN SSHFP 3 1 F1F3BAF7D59C68D98151C913B440F6C1D8FB622E +bartok.nlnetlabs.nl. 3600 IN NSEC behemoth.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +behemoth.nlnetlabs.nl. 10200 IN CNAME behemoth.overeinder.net. +behemoth.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. J02gDVWMvlOd0LLz3rnuWb46aNmNZ4tLlh3c+LkLhdtTVZLFUYm8MX4x vfuvz2+84UWOyRq0NDyftiXUrWBBYhUXLBqtCOuxNbF8MFa1JggQ+YGT hHJ2OLtKFYC1JuP41ln4MPovIjaxBzziZzhYSPJYH9EL2j6adefKFMdL /hI= +behemoth.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wmrYwTUWotmbYxBz18GrjbSS8dy6Lf6MEGeMuXTXDfCHX3F6qIK4la6R R0vElLmeDkyY3qHLm/Xea5vNL8TGCrEAKKvbxvLttmalfJNxflV86B75 bUVE2LbYtxaoPQuRuapClJCgoybmZ9cfPTGtK6+8yGcJ/EVjiuxfRFnY mY4= +behemoth.nlnetlabs.nl. 3600 IN NSEC bela.nlnetlabs.nl. CNAME RRSIG NSEC +bela.nlnetlabs.nl. 10200 IN A 213.154.224.22 +bela.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HFSqPqJtQZzS2RW1VjmQaB097Ob6Lu9Ig3qThSpSr/0T0giQrT68OXTe rpV9MvWymVmyFI3CJol330mmtyHzMdK8Xd5JQYAzy0ptdgIGPQmGZZZ7 cUyFa78yrBQxKVvxRO+O9hq5NLcerkm5/TWkXy19uWDDl4pd34zW5an/ fyU= +bela.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RZLeycQfklRy55zTt5K6G1pfk5C+w5GCamOBcBKkxMC0VEUAPAt35jTq G2KzvPMFl2LF7/LIbPIy7LiOwiKfS8vDpePpuc7PlbrdBSG3J726zYc8 f24xbvxy9MjmIaD2fVEyW0idcTIynamGKsIqDsH3m8BPdamIMC0KZ0jL rYI= +bela.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUxbwA6HQ9Az28pgC33e0fU7HA4c56hmn4YckNBTGF/bRhEi+MHJHoM6 3L/OzMrgaGVdA1VI5Mn4ePWd55gsnAYoXx5JdNoGFqcPIO/DCqUlHOAi SSD3Sls/Usl4ec3HKT38sajNEF04Opx3shnR4Noouq7BLw4Pw4/mXFQ2 nT4= +bela.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DAFlcGi6e8KLBRLHlzb8Yll8GOqN49Tm7o+NvlKDImKxHa7gUQFQpw9M JVBf+j3GaLT05vkhKapsOTdmnBW7ylSuTcyYQRkn7CTobK76m51KJ0iS EOq4JdFhlMiEEoeWWjvhRpeMqEOP77DEwBtpjxPPC5IZdpOhQg4c+iKg OG0= +bela.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:222:4dff:fe55:4ccb +bela.nlnetlabs.nl. 10200 IN SSHFP 1 1 CB43092FDF932BECE7FDAE60412D47BFD4837E32 +bela.nlnetlabs.nl. 10200 IN SSHFP 2 1 B85F5AFD56896ECB66B8F11194BEA1B43C32CA2D +bela.nlnetlabs.nl. 10200 IN SSHFP 3 1 D8DA794FCF4ABF727025AAD3C54E41D348C17E1C +bela.nlnetlabs.nl. 3600 IN NSEC blogs.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +blogs.nlnetlabs.nl. 10200 IN A 213.154.224.135 +blogs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iPQEpGUi/5B6yh0vf0oOwJHhR877COTLGn/TyBJX6Q1hJ1NJaoqbp4OW YdYrHbncAsbgnJREdhv9oQLg66631aX2AqKtZb/IsjBVYELI4dEmCCop uD1WEfWEfgHfEiNv9YSIWX0itXaS191XpPd4JjOW2L9NkVuVPFhUz0SD Mr0= +blogs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HODlVAKKe73PzBiYhpaLascNGjmBYoj+o0LhQxStY0yUpR7pfHSltbbb mDrsNmRTJLPkavzSPmBDwLe1tisMBJN0swvfjp28wZ+iiU2ZDnwShwcm 3EuNHhZiDSjYfSifVdvPhGm6w6SnAChMglZphwY6NctvieRElWFk+Ehj Uc0= +blogs.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TCkc7nRZZYEFxJclJPlCDFTNxmh3j8jIYRT57rcTJAHvhryCQr3tsXtz wOXzHU30jyiE1j1MDUdZzardPwXN1ZQEu7bKdxyNy+m7snBNoapZe5bA Vb+c8S4qy0JWO61oExWFgOIHlpfEolF/klQSvLG9HF6GLI2Rc0UZndNn uSk= +blogs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. TJN+zi9NeqNuo5DL/7pEjB02+iy2j7RKtjWL6T5ZWLBgSWgH8Y7yhgWs G+TJMDyOhSWbBDKbfhKPG/YyqiunIoT0t/XDT2R+KY3R7Y/uupHk4J3X uuf1V+0TtDOwtbXkIN0k1MVeApjR2IqxV1/jQT6oR03JMKCpSpmNjc6h gqo= +blogs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:9:: +blogs.nlnetlabs.nl. 10200 IN SSHFP 1 1 C0C1D59D9219402303D4ADE4CEAB40193D3CE55A +blogs.nlnetlabs.nl. 10200 IN SSHFP 2 1 154A0526AFCF080F205490DBADFB75220383B787 +blogs.nlnetlabs.nl. 3600 IN NSEC *.blogs.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +*.blogs.nlnetlabs.nl. 10200 IN A 213.154.224.135 +*.blogs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fZh+0iW6o5TuQmotSAC+8qIAxsM6kyXJ8R3EuyOwvTuvo/DwsIm7g2ys o37BmY6tKFT8AsgtBdeti71mXSj4DaWFZg/8u58WQhHcCK5LCaXAD5gq Ln2cn+C+nyG8QGpxWLsD7jxFf4vJR9xmA1yhMB0ND6NKI4De3CjHzjEA Lf4= +*.blogs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CVWRZc2CRnZ4MiBMkkN7DSlRAVcM4bRlTXvYRYUnN8ofBifGxueHajPy 9KZtdERNvQ5dsv3lLXtfh1cAwHP2Kf0d+aJMe2LOGI4+wDyn7DDbOcom DCs0FoLBereWUn7pvTWh7o2XKynpLubYqZLxiiZdmljPOy+3wM8Ic01U DT8= +*.blogs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. h3LiiRBp0IBUhfm6kVpAWdPMDnxrDc/qaWdwJRc+otY8/LpNCxeBpf/Q vxcg/iLhwbQoT9OrOXF2mRJFMpkxUu11gX+3UtpRColxUOJX5cBLfd6m eei40fVnWtTAWEAJchFSULAmqLPV6c/v4qg3NtWDpKAKgiMoo01uuqA8 zrQ= +*.blogs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:9:: +*.blogs.nlnetlabs.nl. 3600 IN NSEC bogus.nlnetlabs.nl. A AAAA RRSIG NSEC +bogus.nlnetlabs.nl. 10 IN TXT "will be Bogus" +bogus.nlnetlabs.nl. 10 IN RRSIG TXT 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. Qe+izd9dOvY4ZVghBLuaDJYS9Lycl6JTIY3VT8WFbz3QbJEtnTTr/feb TdHxhuOV6/P5vRfFO7fDRrH3KD0ecM201pZqKPfltr9uOG14uBlDkIV0 HpfKZ9+Du9L4tuUTYQDRQu8Jd4ITJ2ymU1ubM+eSWdI1w4gIog9wTmdv eSo= +bogus.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. glPJsi3+99LTHFVIhXaQCrpNyUP29bMeyix1YreX887i0e8MU0HCaxqK /pUH6v6OsJkv/Q43r2GjkyZePXpLedgPppfClRFKeB+CamGe5mrTk81m vYKJWtMau7+8R9foV+xs0GyyXzc5aFMSPIcHHNvQr8vijY1DDNyhDqUD chI= +bogus.nlnetlabs.nl. 3600 IN NSEC broer.nlnetlabs.nl. TXT RRSIG NSEC +broer.nlnetlabs.nl. 10200 IN A 213.154.224.3 +broer.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. snmeevVCnhJ99EpepkNjQveNKZz5VBe0KXalgBBMLqoF6F5zVR0OHrmH tTWLMrWOX0qyEiM0ZeLKKp6GKDxeBSRBQMJG1ts79p7I25fi16vVBwW/ 9xpuc6AAP5kR/lW47w+nL/bd0GS8xgvties2dfKi8iE3LgyXV+xphcBS sJ4= +broer.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TsRRJ4B9PbxAHKnvbU16pYIaF+rmGfTsfo4uG7XWiW4GG2MLqzSz/NkF UyjEtnHXSgjMNiVDaahgRHMnOGK+MSTXz89vF8vilTfkD4SzmLBmUxIX nZ6y48E7LVfnlHpwWjY5VGeWaNM4bYi3SDmROH8hjr4femZjYTBTQHlh nNY= +broer.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. L76iAX0THAWJ+Gus6Rh+dgikBVc+p0Fzgmk3b/lBlr3ylLtwWfrrP2cB W+0AgrDjSH+cm0svLWW50P0aIfKfmmf3drXSATDxDDssCg57+ASsymNn BeKocAgDfo1Yck2TWUfEDhBcJUmPDj0/aO5ysnw2v1Ua6xnGfH5fscaV rBc= +broer.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PKNocDJI46bA0W2CiMwu7ZQZQF7eie+sSJFnlFS5E1tEumgMzToFspkw gFJhoiuD2QKk0duij4a4xdJ2JtJtAt3s9LLTsX648VnOkX92YtEdiz56 ZY79j3eFdw6hPoHSinEJZkqgY4Q8TAuS7FtAABv0+NnK8mupWJuTkcRv MrM= +broer.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:bb:: +broer.nlnetlabs.nl. 10200 IN SSHFP 1 1 8290EB11D74E7147221920FB92990ABDE012244D +broer.nlnetlabs.nl. 10200 IN SSHFP 2 1 46D8DC5C57933CD04F6F9E459B0D07BA2CABA21C +broer.nlnetlabs.nl. 3600 IN NSEC ceres.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +ceres.nlnetlabs.nl. 10200 IN CNAME sixgate.nlnetlabs.nl. +ceres.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CFpxdyaB9ZXDF06TzUKTAZsc5KyrF2Sgi/bxRRtmBY7tOu4onzv5uX7i lkvIexuxrbiG7Ox85lyhnnEdJbTp47l2SkHQWhnKtYA+NRD7SOeVxI6V 3b4tfZv4AUGOAaeLorRHJYHgWMPkAimsjeDx/RDSMQ5ObBoFdEWEYyQM d50= +ceres.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IOw4Xbw363lzgN3WBJJOW0y2QDz+XpbvqRk5zQUlMJ+VZ22Cosqra3h2 MIQOjVpt4CZvR3w4+Nbh5Uml5BHyhTO1M8NINlnBCUA5uIR/kcTMPQkv MXUPmaKlogQq4a6B2ZmFy6oH6+u9C8Hw3wmIJ0KDBLkp6bPd+xTI1paA Vc0= +ceres.nlnetlabs.nl. 3600 IN NSEC conch.nlnetlabs.nl. CNAME RRSIG NSEC +conch.nlnetlabs.nl. 10200 IN A 213.154.224.16 +conch.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YBWfa8EPTsFHDx5pSI8O8UhdQgg0+b+DrGk0DmFUemKoKuEIkN69C3sw FWIIIBLZp27nmYFm4qtGTTVOvCDGT8Nfpf3v2seo7mHLlBESb7IQUlLF 9RTqNsHtdGBCJSTni6TwzbgXv29VXqCpXUcUUaY+L/kBwB3+BrgmbWFv dMM= +conch.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BvQyV5kh9FlX/t8IbWfidnM0mXyloIyJuCEyy7zXwLwwwzC4OnekGT04 K1ZugP40IQ69rxKetRVuJ70oSDSkXq0F2sj7y1cP1dEberKE48Ik/6eF iVejGOXJ/+PBL4mjDKlChfel3zuucMgx4rE8x4HfM0MDt2e1OnKVbAyj xXA= +conch.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JeoK7whT9GS5YVcPUtn/9pjk05KRXo8zFnwtaYmYZUf9sylt6k1KCk0f kcpWuIWoTlwfSJ7bsQXz80gOr0R0ge9fm0+xNTj6toBS9rjNJ03dLBDs 38gd7toTMwYlUN2gGuvDISJ7vChvZvcBnOvnV6kqUMFXQBEN04nWrCM3 PKI= +conch.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fea5:1267 +conch.nlnetlabs.nl. 3600 IN NSEC conference.nlnetlabs.nl. A AAAA RRSIG NSEC +conference.nlnetlabs.nl. 10 IN CNAME open.nlnetlabs.nl. +conference.nlnetlabs.nl. 10 IN RRSIG CNAME 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. qXFvgENYE6a/uqmvAfOQ1Rav/0AuMNWNvDkeGtIKLZcpPetC3rvr0aen Kmj94K99OU1tI2MN3XLg0MCh7xQWtCvora0pk0Nx7RJXAZ7O0R155sxO vvmu0xeUdWYpq66agaNFfdwRhOczMSqJui8PQ4Kggb+EVoxexbw8VP9R fN4= +conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kRyKGcp93AToiWK/sCyS82HaYe/Li/WBmxyxVlguZFyeVE3wuOyN+GQN YPOMuzvj05S1bhGMyt1Adq9n9cUOU2R1dhe2eYHr70gl2XX+RB/4tmy/ Y8+t7qDGx5J1F5PRasQaGjHFDaVX2QLo3Y79BevK2QxOxkB+kIYmAEVW 6MY= +conference.nlnetlabs.nl. 3600 IN NSEC _xmpp-client._tcp.conference.nlnetlabs.nl. CNAME RRSIG NSEC +_xmpp-client._tcp.conference.nlnetlabs.nl. 600 IN SRV 5 0 5222 open.nlnetlabs.nl. +_xmpp-client._tcp.conference.nlnetlabs.nl. 600 IN RRSIG SRV 8 5 600 20140224111605 20140127111605 42393 nlnetlabs.nl. d4FcPuwHho31ypmmQomQFUrhM9UFytrDbski8+5Y/QgZWl2btrXi6Ay9 DaRowULmsEEcAQzoVVjH2xBOy5xMtGIPrPvf/g43tqczjY1xmkF2eClm PzHutCTx+Of/v19893Q2ky1p9qW77V8zgm/VvIBrSFa6sAJ8GbkbsYGp 16c= +_xmpp-client._tcp.conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. t2Hz2hQnhTWZSpvKqWvGVymD/UJi/WQ0xMBPpAJIi8Olk2rKZ5uHhnKr FZ7xXyZOn58+vCVnWUaytyJJv3insgYIvbNbJkxpjJZFdy/deIa5i0k2 hwaEKZKe3aqBnYIOWfIT6t42790r7sHB1hkzazlISIWpCzTBKoxq8bTn Ljo= +_xmpp-client._tcp.conference.nlnetlabs.nl. 3600 IN NSEC _xmpp-server._tcp.conference.nlnetlabs.nl. SRV RRSIG NSEC +_xmpp-server._tcp.conference.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +_xmpp-server._tcp.conference.nlnetlabs.nl. 600 IN RRSIG SRV 8 5 600 20140224111605 20140127111605 42393 nlnetlabs.nl. fWheQO+h7zolMxgqBQjUfmYmaOGFcY4L0O780kKwT8HiIVztdUf99Hsd ZodNKc610S7iS2FHJl+9hXPAWJcZFHd2BNPcxu9QfhA4gYc5Y9nrZqAV l0cPzdmluFzfRsxKxdlsDsb+Kcc9VuccuLVzc4EMyIl7hBJTPJzQ2tQA 0Dc= +_xmpp-server._tcp.conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SFXPwNY5cXOyCySdJ6qMY8Ydqmv8YXpEJkw6ac0KGAxNRkGaYz2K5FpY lq4oZqaGBaOa7NFgtzIG9VVrLrrrP5CJptB9GFF5u+IfpcN/3wWWcqqY hQqsrahd6gdI7S8acpI5sj8h3ZPFK1gjE998KSi0+xkisLz8lye4OPTA /Cs= +_xmpp-server._tcp.conference.nlnetlabs.nl. 3600 IN NSEC dhcp-100.nlnetlabs.nl. SRV RRSIG NSEC +dhcp-100.nlnetlabs.nl. 10200 IN A 213.154.224.100 +dhcp-100.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. OzZkv98sCVeraJwlS68wFsNpwqeGXtdOVtq2jeurcAbVTNKr7BJNTFg4 GB8P6zaKChCaMJ4Av3QMX0q53YatL0ahVmIpvXJYWx/sve0DvUpE4C6w 0U29GhikC20JjlZWNiWwf3/ZnfegO2CA/P2j62Eyg9EFA7HLwY/hIk4j qyg= +dhcp-100.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mSTUM9UIuRvCHpw7Klbv9907v+OSOzYtMQitGFUE5k4nG2nLawLDOQai sVRpFRH559D1ggHAn2SVnyf/Pk0GOswQ9ea5B1RZzZOpgziEAMwLVuJv foSDgZThXvr9bXtiS08LzyoHU5MfjzGCtrpAc28P5feWY8ukucf/3UA2 qd0= +dhcp-100.nlnetlabs.nl. 3600 IN NSEC dhcp-101.nlnetlabs.nl. A RRSIG NSEC +dhcp-101.nlnetlabs.nl. 10200 IN A 213.154.224.101 +dhcp-101.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. R9OZoLytf5ayiEbav9TdGupRi0SFVt3Hcr4XH3IUgkXrqMAkuZum8kTU gvFbJfMYOnfkj3+8Xs/H724Qk5Jc+KoCL2urjJKpvjgyIvJNsfIQuaG9 eE0ZR1pMjNcqHzpWxnzV406haWrTHfx8HIBRqEaw5mk6JxBsPQ9A6oq+ dJ8= +dhcp-101.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Q1wZR9q2brvOqI6Uq3O2oP0FJQQQrggBDL6TFpVGQ0xdNIdVvIHW80uT Zm5HT4rXmWRizeoIQWfEuHbz6SqfaYQimEWIAdXdlX9YEq4EXAiYH+kD AVhrkQz35t2BwvtJJqAB4y8koAqf9Fdw52qYEWvbWUXfLHmgtJEJ/rn8 9NA= +dhcp-101.nlnetlabs.nl. 3600 IN NSEC dhcp-160.nlnetlabs.nl. A RRSIG NSEC +dhcp-160.nlnetlabs.nl. 10200 IN A 213.154.224.160 +dhcp-160.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. riDjBz79iudE/fcPGn2ymd3T+wTbhfeZVYfqQM5Tn7/s+Jdtkrmrxmvj CNrLPKJW0xSNcmDs9eXA6C+rReQr4SNT2rcAjiMq8obgssgaaAK4WqPa CfVFgeUdGXz5hZPu7hfz91q2x+jtXfywLfdFnjiVUE5Ec0/AFSUpaKJ8 vFU= +dhcp-160.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VOm3cBZNSziblAcC7nVUMwglBg67sx1GEMr9a3Yw5KJNBy1vDll8P23W fn7ewl8zB5cxCs042ZK1Nf3e78Wk0+AQkwnKbFsuX5ct0IpvziJCdVmt M+BpgJ8hFvHRJr41UpEXFY7pM3csdrPe8tQYGJnyqnHdRmvbU9dKQrs5 xSU= +dhcp-160.nlnetlabs.nl. 3600 IN NSEC dhcp-161.nlnetlabs.nl. A RRSIG NSEC +dhcp-161.nlnetlabs.nl. 10200 IN A 213.154.224.161 +dhcp-161.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ltZr8dQdBaDrTL4Gs+RZep8qxIhq59/GxruD4xU7i4QNQytkxFdKulJU VVusCXQn4MUH4Ctw4kdxslyd3SF72rhQYF74pU/QP9fqWGXYAbiJG46A DLV3MelGWt6+2pgWoBfa3fHUCX8L0xJe+E6+bUS1M8xd4YaDxHoqoFyq B3U= +dhcp-161.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wbJ8du4eQBhwRiKDdXfJ2Bzc9dUEsiHxZm5qMPcN2d/v6kAny6k2rMHd ybOPg6Bn2ElyXHnEDcUdb0l4HR4qUQ9eDmAP2IE8s11DHYD1aDyIn1jg kibUjAqnAqRpUW2S8SyfAfaHiYti2L5/th8LhrrsoEQ4yoVRfxN9qP0l zDQ= +dhcp-161.nlnetlabs.nl. 3600 IN NSEC dhcp-162.nlnetlabs.nl. A RRSIG NSEC +dhcp-162.nlnetlabs.nl. 10200 IN A 213.154.224.162 +dhcp-162.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jBPryv2C1BHLZbrlxvfoxdu/GV2EFi2HqCKmFEVxJKZ0cyykTGGykngK 2pq2gPSUIEWiMjIPPalD/r1PJIm2b9AlEhoyBENz2syq2eWQEEzQ1ukY IGjDfp/jIOSusK5q9JrapBPT7ILV5iE4sF2SmKfYKNeRW8oF+c2VdTvB C38= +dhcp-162.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Hb3NbgxaSFxC8gcwkcYYBedycDr9kfXMKFW3prJUH+6wmN9EIWymvn57 8Ggj84UmIehsG29R6rjnEnl3c5WNvi68NrNuU0nGFibdILKG72sGFQGb LyFjxKG7Hisayu69YcqKGeEcRN4rsGy1fMgx7DecFvKQEOJS5q88iH1z QTU= +dhcp-162.nlnetlabs.nl. 3600 IN NSEC dhcp-163.nlnetlabs.nl. A RRSIG NSEC +dhcp-163.nlnetlabs.nl. 10200 IN A 213.154.224.163 +dhcp-163.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0T5nrzKDHu47uyog2CYeanfE1v4remzD87Pgq3KgXL/yNSmGg0rZ4H55 DIcqwugidGb3LB0ZoZ8vNe5roN5A3gmlDMv1ZuxgwjFCCytkti8NmEl8 qWupKkvz9J88uv9X46uExKPrsojIA+s39G1a/YHYJ9Tq7xfuVlnhz9wM wFY= +dhcp-163.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DnzUrvzoFwjLrvvGFeMiuk9jGmxCw4mavxHnj+Ffe07Bx0LvP3/DFqbU D8DqkmD41bJlYIw2L7TKw7nia6opGHdKlem+MVaiOr/WXQUQfPnf/x5e YFH0PmQ9059QY75sP4B7tYgUV0TQETXSHZ/vIuMi45+LCxlMlnVDdts+ Jgs= +dhcp-163.nlnetlabs.nl. 3600 IN NSEC dhcp-164.nlnetlabs.nl. A RRSIG NSEC +dhcp-164.nlnetlabs.nl. 10200 IN A 213.154.224.164 +dhcp-164.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ggXpfnCRcVdWSC/Bj8NBcLKocfHiTOgQDvdkNOVCVwLmHgeMwZgj1/Rj /tRV/mwbIX0zOJR07Qg+xSifPNsJQO7bQdQZUnrEnZKlTsuyot5NDliK g4Wlpt7qvkVI5CqJevJ21crSQcEjzQO/9hHjxiz2SV4BvTMv/JpYXFM+ p/Y= +dhcp-164.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ks1uQz90ameWBQG8RQaetJLTZCziujO5D7fyhIS+UuUj5QLu8p3GV4yk VPu9g89ikOE3PwqgentrG8kzEZ8vcADUAWSI52Xugpg+J7HjEOVbyJLU h/8i2tB3O73vhGdWKkqKP4XWu88DbeZlDR6koSlv6EI6Ekya/eZ4QF6O hjE= +dhcp-164.nlnetlabs.nl. 3600 IN NSEC dhcp-165.nlnetlabs.nl. A RRSIG NSEC +dhcp-165.nlnetlabs.nl. 10200 IN A 213.154.224.165 +dhcp-165.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. zyB6TBwH9f7Yngvvi0zE3Ry5dew9jG+YatrSYK50jrmS2bmIbMGH0WrX MWKSWBjVpCJsmpUmneOYKRZ4naekfZ2EOJlSgW7eXvU+e2AqfWb+t5Ii sFiHAEwi1dZZcVE9DV7WbFHhf9ZERiwzkN2ZnNjl3QxQK3ZQ63UD9+Yf 64s= +dhcp-165.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. b46OWlw7aaCgoz3yYrYe1PzlH9D97dLKhzyfYx3+uoAB25zz7ay4rRbY yxbKjIaQfv24v4lyBzP4ARTEF90WwNOu44VpRGO9jQcGUWuFQ3C5X02r tP06wNyYPDf0w5VotRqRYOa5v1Lx60Udoairig9pV0Cu6IhguN6z833n 8uY= +dhcp-165.nlnetlabs.nl. 3600 IN NSEC dhcp-166.nlnetlabs.nl. A RRSIG NSEC +dhcp-166.nlnetlabs.nl. 10200 IN A 213.154.224.166 +dhcp-166.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iZFxPPGze6/ETnodnG8xeCNcVew/nfu9IbwU/phznkHZGvKc512xDneF gr0jSe8EYpZ0WmRSZ7dJSXCY62kKF033WBbHJBxUdCQFP1lOpTprf6jL zcrDt/9OXlzDbaf/SSXGSZ9B6VYaIz09o9yVnjMnHT8ULvR77alSWr45 s20= +dhcp-166.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0vVkwFIoV7xP1MUbCskKaNfvyXyJuRXar2gKoSMs53XrPFo1dsIi8kAa +Mkvue0mWhlhnqQ8/fGsR+952+EyZuljoBTCOP6u68ZabeHfnLEg5Mi3 rcxPyZbbJgjwQg6xacmCeWFqWtkT+cztV/jFcCZOO53b57GO0uSbiydw DRs= +dhcp-166.nlnetlabs.nl. 3600 IN NSEC dhcp-167.nlnetlabs.nl. A RRSIG NSEC +dhcp-167.nlnetlabs.nl. 10200 IN A 213.154.224.167 +dhcp-167.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RlpXJgMbq3Wj7hX+l8sfdluaQTFPM56n6W1xgVFqKeuIODS5EMVkSsFk 08CdtQHqwF0uNYofvTgQsbWM0v0ntxKX+33nhixkDoSIUrHuFPWeCta4 +xt6qxKz5quq2B7w9GAT/fbf6IV7y0kbSyiDNZXOmSnwGDoiCd9sQYuy 0bg= +dhcp-167.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. spAATkD4uZiw39ATTvowkifNIzHPX84Mk0jcOwXU6qzYSPjD4vxUB4QU hILtd6T6FfEZYMZGMSCpV3Oj91z1hdSqN+waf84+V2sf6kZruhCqDR4q h7vDVzLZ5USe21w4ExTaJXIWueD6V6LgUGExBr6NnPZMAo8Gu3hHKV9S Su8= +dhcp-167.nlnetlabs.nl. 3600 IN NSEC dhcp-168.nlnetlabs.nl. A RRSIG NSEC +dhcp-168.nlnetlabs.nl. 10200 IN A 213.154.224.168 +dhcp-168.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T7GE4/KxpyhmJMoCjWbR/b8FnUGFLtK0RBMezw6LPdz/HvRXG+tXtp2h HT7eDtbWg+9j9jjljPc6e6gWfP1ObfSmOdOfKT1j+i5VQY1FIMMGST0o EFe9HBZm1GtuyBiwKzdMT9aiqWS6y4VwZe+nyA2PfxuTIVKZMmdn3FQt tOw= +dhcp-168.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. bXyUPVNmP8DHpMPxrUsXYb8PGM50kDK3Na1iM1zAZ4Qd5ls6alPAVcym tzrkwBBKtqMtpQepfjdnejaP1oc4b2wGaqQnGFQNE6JthcXzPcBHhMsG PWiNYQIBuQReHo7JKBVN6Dt/VNOWlKVmwY0F/7PkDYAo6rpd1MlMtfG9 peE= +dhcp-168.nlnetlabs.nl. 3600 IN NSEC dhcp-169.nlnetlabs.nl. A RRSIG NSEC +dhcp-169.nlnetlabs.nl. 10200 IN A 213.154.224.169 +dhcp-169.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. LsvzCwcpB/uIf/dudgvmAWSW8Xdu/EaClvy1IaXLU+xxdjhWQsgZtsAg erNs2erP1qZ4/AFxIYwpbRhyxa027pYTzEn31/vuQmXQ5OBWDczX6Wz3 lhO9mnEADbBuDYLLdbyxqZLer7rJvzQBPY/Z7zvjXvCYOykD/KqJdf8U oUw= +dhcp-169.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ltym3vL+M/cgZj1V6YucfA4tM5Ly8+AZMeVtIG2Rv3CBWG28KtDKPIjv 3jqxL5bFAT8jvfjgeuYYhZt9X/YYYgW31C6IOF6Jlk+bjPvMpDGwW4ug LOYgIx0AHylIjG/3mfl2Gvys0dMiL/LFtdrCzCyM5TDavgmXkQy8ToPd ZwA= +dhcp-169.nlnetlabs.nl. 3600 IN NSEC dhcp-170.nlnetlabs.nl. A RRSIG NSEC +dhcp-170.nlnetlabs.nl. 10200 IN A 213.154.224.170 +dhcp-170.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. OiJpyhdtIxUE61Q+EddH+gKCJwRSF7Q8qmeIQ+pE28ufLzNVPo7rUDPK mlrrG57y2rTXv/27I4acHJLUyeLkqjKVFl0NWGNEwtIiz1EgnED4vHbd mkZLeK2ADR6ClE7GluUgLEZEFn7q3p+zDoDT5HzQiEwekDdG4tMsXDu1 hPI= +dhcp-170.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uVDFeSosT+pkK4Be03z6p3SvrHzsYdB75romRjwgGpYqX8tkGebV1jxo iBudtVajWOwfqBiY1TEYcny+VP6+xRKnicjv3K04ve+p+6pJIzkVT6ws sLrwPkpNihZ7qLvJHBcOFq5/VF8fgrLuHhq0lb5tEGna9oHAZ1ugRt+e oGQ= +dhcp-170.nlnetlabs.nl. 3600 IN NSEC dhcp-171.nlnetlabs.nl. A RRSIG NSEC +dhcp-171.nlnetlabs.nl. 10200 IN A 213.154.224.171 +dhcp-171.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t3YQ8Pl5Zrctr89a8wUJ67q2HkFNJ9KDgprwC09U3F1AEDoTzhY/YtQK vgLCIjSJxZWKEqoa8Uj6LDnV3DaOs/01ubtRUnM8SD9DHegZxQx+vyUZ Nyd0vmsZ059PFr+DAUXW/f3Wt5gIZcOrBKYC85GYEJ/tTDqgvi6k2a/U m6I= +dhcp-171.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DhalC6BCtI9xs+NEVTnnJbaICI/lKvQv51rqAsnQHyktDTdu7gpNClAH ttc1Gf6SLnhJZiMuM3qPfuOy2WmjjKzKTt5d35QOqoqikSeWF1AkkpT8 B1nL/Sh7LD+G76OuyZomtZhDvNXNeyQTTm/aFar0q+pgA30RBvnyYm5H pDY= +dhcp-171.nlnetlabs.nl. 3600 IN NSEC dhcp-172.nlnetlabs.nl. A RRSIG NSEC +dhcp-172.nlnetlabs.nl. 10200 IN A 213.154.224.172 +dhcp-172.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UXcwJDXTvZjoc7ss9wELcUf+g/jWh7ENvd5syaLVr6xDmM2NBLnzc5Ga deh0OJAJm47AimPgn9IIT0Qdyf8JCdZUT01iSGsAuaZgDIqrclYWeVZy jOycP0b74Cq3BLU2ZWNTyy3jg9zaB/mUucy3kNl21WLbQtbQS1o2s94W mTA= +dhcp-172.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BhKykUzr/u58rB9uRo97rjHxqDjkpN7ZKzRJkCnZ+Ib7fF+tV3W+CuU8 u5qTGAtKyA8qWHuvBeEaqjgpDKOE0QiUygrc7WhRejfZRREZngsZpR0S 7xsfp8PPsB0oHdvu7iNiq1VL/XpTlYyAvgrNBjafhtQw9vdRAZ/6Gvfy XZ8= +dhcp-172.nlnetlabs.nl. 3600 IN NSEC dhcp-173.nlnetlabs.nl. A RRSIG NSEC +dhcp-173.nlnetlabs.nl. 10200 IN A 213.154.224.173 +dhcp-173.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. H8f/ku28K5F8JO2EUbf/YiB7BqG0eKbcKXticXM2DrpI13yQ8WUie3dB y37Ae+vUr7tMO8ybsBljluPvCHgPEiXXJcWqpyfQd7hhHFwuOTbaPrj7 xk/RQY8BkZpYR9QivVktMXZAwuvDHF7F8VvzwPTU504okyw9VlgrVZPN 8ho= +dhcp-173.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Q0AG7N0etyPH+SmooggjBUqbwofNvuMNVUXwWOIgk4nMrX0pgU+qm+/5 RCHlbXYza7Et5Y1SloMyom+jMkMM4YxZ2b44RK13VYPvW/PxPzb9G1oP tGrgf5N3q4QF0q1tjyiX2Nwuu7B1YgMtVG+W5DDYvNZERU/rDlAlCTtF NwE= +dhcp-173.nlnetlabs.nl. 3600 IN NSEC dhcp-174.nlnetlabs.nl. A RRSIG NSEC +dhcp-174.nlnetlabs.nl. 10200 IN A 213.154.224.174 +dhcp-174.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q2DllCUm9DNqDEuIT0KhP8oIvGuH6gwMlWFaM9nsRv3Ue6E8HxzMvPD+ mD5m7UWEMVYyOAgq6lM2fes6EXXFs9fW3NPQEplqIP5JQcl4C5XNTUns uA/tSENxqNSDYxvmWjKQFsNpvDGNLt61PpHkcxzwdz/GWmCr/01dAdiH EUs= +dhcp-174.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. d8Q1Tm98vMteUz4ybXOe8GTg7kkBogVuwU8EMntAl7OKwTgBuXY13Fg2 b0uqrzp4TEi8JFcdt0HO5NyoHzqBmboCEJD3xKuhKYU0XPbqbXbuoCaz zMekvDaqtEydiCB7u3dD2yATTMf5vdUwB/Rk8OCX34GZReqvqHbQQFPc +9U= +dhcp-174.nlnetlabs.nl. 3600 IN NSEC dhcp-175.nlnetlabs.nl. A RRSIG NSEC +dhcp-175.nlnetlabs.nl. 10200 IN A 213.154.224.175 +dhcp-175.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. om10HusTy/Latm7h+37fLLgMOzbF4oDmaH2225Ry8cXUwKMI+Uvpu2wm lXBmu+OZxS1s6bNRY2DMsqiLupSSX137jX4aritTQIFnIOGtoLdUqCIO aucxVdSmy8xnEuqJ2QvLLZxAiJ3kEH1kJXM+G5BTzOS1Wc7CHDrJTitr bEc= +dhcp-175.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kv1ElNhbYRO4tdej434Axx0gOJwmJLAaRdDZcxaHqpQRXtzdQOkp5dGb DD1UJZqHzYRu5jec/Ok73dX9KSb3Eu5jmzKYYEAvgzcbX1mPvLkk+L0q +W5qm1in0u9wfnQvLdcFfJtcOlSpb8L6z7eKB4+H3IkQGB+NnpSg/mBz 8W4= +dhcp-175.nlnetlabs.nl. 3600 IN NSEC dhcp-64.nlnetlabs.nl. A RRSIG NSEC +dhcp-64.nlnetlabs.nl. 10200 IN A 213.154.224.64 +dhcp-64.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0B31eU4J3BpuwwMv+P5SNMHbRU5pMdcZtdplwOZnmlXqxuc2Io4x3R/+ vtefwOjz7x5hs1JagWth/Z03PLCIps35xZ3ITlkIfKki3Nsgozy6vTtX MpO6Un3mwHe0VOqCIabGfn5goNSNXd7zMWZZvTdJdxUdB+UW4icVsm/d n/A= +dhcp-64.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. q4/iLmxErJaW8zZz2J2qK9DPztZt0xSGlMLmOgBFASi2Q8rlvbLrYFgs wq9sfMtcgV4spDn6NDtBe7+AfIyu1AqvEbAhw0aL/ZIUj+y+MbmIvyG7 U2GodguhyIxiiUxGsW68vYWi+jOjfCqDpHJlBoR0C/4NhaXHyIKWmXxU PzI= +dhcp-64.nlnetlabs.nl. 3600 IN NSEC dhcp-65.nlnetlabs.nl. A RRSIG NSEC +dhcp-65.nlnetlabs.nl. 10200 IN A 213.154.224.65 +dhcp-65.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bLe8RVrjObnxoC2snRbgxxdFvHNdDr26OlQRixBzlf8O0X7Re3DqLnkX jaQsu7MooW+X3qTw5QCzH97Caedl/Brlb+zwMJsW5bt2f2Yi+qv02dDB vzHScVv+jSXRPeFMHkhQKhUDi/y8I5/kSSypUD5GIc3QHzZbXDineplV 53w= +dhcp-65.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WEJ8K/tBIAQoj524ApeAQ9iquDYghdXJ4NNag3zwFYYzhMLI5UeKoPdn dMskw0if+g1J1ySpmNVA9Ru0qTxWyCyg2kwV1XDhzRKf9u0b3jR+BNfH gKB1x5d8wP8Lt+MwNXuoePoqQ/eQ5Z0RkHYkbFGzSfm+SbTheP4KX4pn GAQ= +dhcp-65.nlnetlabs.nl. 3600 IN NSEC dhcp-66.nlnetlabs.nl. A RRSIG NSEC +dhcp-66.nlnetlabs.nl. 10200 IN A 213.154.224.66 +dhcp-66.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. idzgzl0fyanWjZI9kjgcnqPq56FkEALbnyg+Mxq25Gqu2AAXiww8Pq9b 0AOwwgT4SnBhVdZ+KOtdhLfwyLb7KtBzniyy7El+NR4ZTorZZu+I8L7J OfqSAY/4pTJzknMzEr/sOouSyBTdqNJikXKAK31PDyOaiLMMkfZyALBR YZU= +dhcp-66.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FFTB5Hh8c+YfQiNcP7B59HDS6hF6iVAh3hq0dDRbolPC/YQ5OnXPivnQ mZuCrKjk4bdgYeTWyG3E4IkxRc9zB0TsEcf4eXPAn06jWLmAbIethOUE Pu6MEvuJjcRakyAP9l2eJivT0di1ac7AjXZjFghUsCgpbySr0zYsu7l7 +m8= +dhcp-66.nlnetlabs.nl. 3600 IN NSEC dhcp-67.nlnetlabs.nl. A RRSIG NSEC +dhcp-67.nlnetlabs.nl. 10200 IN A 213.154.224.67 +dhcp-67.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ikB0DH7pzElWwn4SFFu07cc/BYi3lmeQTS7ej5xQYWaFHh7L6jRnaY08 6dlwt+bmpuo7vgEm0wuNKrGJjJOm2swPbp45Gduddh37B7erDRoReVC6 6Cph5KfU0F6I8652sD/Ai+ZIxnvDAFcwryOlQF/pZBVx8Yabx6fSUlGA h3g= +dhcp-67.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DN3nLi7WySsv0nqz5ntyjHMG3MCz2tA96klIxmQXPgyQbnM6pJfDhajK U3MYu0m5szjJbSGYckzX8aclsN2fe90DmYwzY7AFg12pT7fzKIa0w0SY LDfNM+ncLPpEzokNeXOYEfJCo7ooy4V8+SFyODZlz3LaDZWhgSIELwNI m5s= +dhcp-67.nlnetlabs.nl. 3600 IN NSEC dhcp-68.nlnetlabs.nl. A RRSIG NSEC +dhcp-68.nlnetlabs.nl. 10200 IN A 213.154.224.68 +dhcp-68.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. o3WfUNnAZlrX4SYHwBJqp4ji5f6tbXKASZktiTfk/nOAlBqy+w9HE+9D 2CJv97mClT/g1AQ590VUcn4tIrjmqaiO1FKqWsxfuoSJsS8B/1p0t4fR JfTHrxutSO6xRulaNwcMN09nDKQZY5vhSDgr06xt2kKNsEghGe2ERJU8 9Mw= +dhcp-68.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. I1AaAiH+62Hgfx+K7zw4Y5vZPyYJK1v1p2t6IT3jo53aiqM8v0drmA4y 6E/M7GbsXqVMNbdQz0ybYHe9kW9mEYvP5MB1ONugyhbMy6E/QjGyXMTH Pg3ufzPaXE1oOz2efpY/PzX2n8bLWMGUriJ/RihRJG4kaBfHSQxd6ovV pDA= +dhcp-68.nlnetlabs.nl. 3600 IN NSEC dhcp-69.nlnetlabs.nl. A RRSIG NSEC +dhcp-69.nlnetlabs.nl. 10200 IN A 213.154.224.69 +dhcp-69.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 05caDVKf6WmY1+9LQkxHjzauCMo6//JhNr5T6Hs2R9qCBwr9Fs1zy3x2 p1m8uNroWhXwgW3S+qrZkLyq71RRsdRQ0eZd07hUN3zXqq35Ec5stSl1 +pWReXx54/Squ03xTK3bF5uusJJXPBN5pCeREu9jR32X7ptCagPcFaGC JfM= +dhcp-69.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. oypiNaPaUerWJs1kZMnGkER7GC0SrLXz1grcHJH7ZplmxuONd4hyVe8h Yepw5h6IfZV8TkdM9EqwM/5my98DZ9O7lUfYFyy5d159WGBEbwmnO5NK RCR206MjJCkketVbmwAnbZpzerQlSwpSCpY5/gsUVVCMrRRmrbTROfxg 3cg= +dhcp-69.nlnetlabs.nl. 3600 IN NSEC dhcp-70.nlnetlabs.nl. A RRSIG NSEC +dhcp-70.nlnetlabs.nl. 10200 IN A 213.154.224.70 +dhcp-70.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QRt12C97MsFYyb8d1J8/gArOUC/l6SmFEmnGLIhoC9I8bVdXhnuWQj5d ybogYVQjnWZnbAK9DgRGGrX0FsOPIagzl/Gzl6BzVQhYPuI1pmxnA3Ff TtWePz3kj1LloJEE6LommsSLhI2GVn/mVHBUgqzVgBcanz8oU8fmlR17 feE= +dhcp-70.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. AQ/stCAap6vCD7H99YwhydCktUnk1v9iKkZOZUZpzX6rLAgj+GLy27yq fuORkc27B38+aNaAAZTpbVuf+b6JLUX2M2s7BRLQ8kRQmxeegdSLhynp tDSjt2+eWZX3vE3FQmiccJwa+CzcHSkiz850sL0HZKGG0OjmwOWVJQ4W xBU= +dhcp-70.nlnetlabs.nl. 3600 IN NSEC dhcp-71.nlnetlabs.nl. A RRSIG NSEC +dhcp-71.nlnetlabs.nl. 10200 IN A 213.154.224.71 +dhcp-71.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QasoDQdxVIdippoOSpNZPkyQ++y5UOgurN2ZXJEbIH2D2YsKK8oVyg6+ 4blk5QFQWnP9tA0a/eye7j7n/isGGLFqO7F40Yowp1JzmLLSwdTrn1UJ i0rcd/tDmHLivLTX4dm9YoxTc+9GmGqqsB+eWCIYlUllItYLc4H3/Go9 2hU= +dhcp-71.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HmfYhWN8QpmxogwP5mb+J2tXFNkqn/03wDMmo0yU7Jx2dg52YcRqEble 3A+CTQYZQimAXS18sDaoOJdU/i5iYl1QEijhnqL+xrgPbsrdKIQmZLM3 4DzAYBxn4RUUSuYzYQDXynrbWeRqxn6nmsAh+43USS3sQDSQAGWZQNQ9 5Ps= +dhcp-71.nlnetlabs.nl. 3600 IN NSEC dhcp-72.nlnetlabs.nl. A RRSIG NSEC +dhcp-72.nlnetlabs.nl. 10200 IN A 213.154.224.72 +dhcp-72.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nlJgNtVAx4nADM1mVg9HOH4q48eznkCdbHpoe2hoAIrAPKZMnD1qV3yi tbvlxLbsukUXWLjXbYCRmm9BbrnxuSVWtMgcicY2kFCEbw4Bqz9ENZh6 afxpu5DwRes9dfU3M2ToS+xwRr7DbfGfHz31SBXPWvQ7uOS2XOHl3FQo 6WU= +dhcp-72.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. lwm7Meg1JJdq2VCzZKC4aD/WLguj2nGCkMwrdA3WvMEWj8a2RpxrKIx3 U9YPfXaaeJJpzGCLpbpATtBPAe6KW0A4eUGnHIRDO5VH5+ZnBP/Hgo1X TFInH7AJ5TFepz0XZDMRyuUUjCw8UrdmQscz0fhc2gnNS6/f9DkVTA0f a1M= +dhcp-72.nlnetlabs.nl. 3600 IN NSEC dhcp-73.nlnetlabs.nl. A RRSIG NSEC +dhcp-73.nlnetlabs.nl. 10200 IN A 213.154.224.73 +dhcp-73.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qKigOcust3LHYsIYJS73HwA51zxYuyCOxmUMOEo9XUt4E1ycU89a//mY YPUawASO17ZgRsWJh1NDgR/tFX8OtyUKpuZp7bO0A49+wfICGBrY5SSf PwT7peF5iMVhD+ACUTrOwDhv0lnBTpGuWOW/yHYyBHFkZVKJ4idH71ig C0I= +dhcp-73.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uwTVAzFaDJuphWJb6choMyugXjyKYm6rXfguC24V+nvlAHeh3BIxLe/0 49QD2tGU84w95SphQ8CJESvzT8QLCsUY72Qe/mltlEUyU2he4UVOhfT+ uALAuHHsuVK1BYMEei8M9lbzIKxEuQlkvvipmVntsJKuQzk/MEEvOeCg H1E= +dhcp-73.nlnetlabs.nl. 3600 IN NSEC dhcp-74.nlnetlabs.nl. A RRSIG NSEC +dhcp-74.nlnetlabs.nl. 10200 IN A 213.154.224.74 +dhcp-74.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. AWgqbjTIgPF1ri/f4Pyr1zL3yoJQqc/0bxnJ4bzsgndlFozR4+vmzYd5 CRFq3cn9DRgym9FWoBQetpu7El7XMkUZiaTjvTdqWApT6drDj5oy/Y4K 9V311LgB2bJZa6lqtHGpAZBxRVNv3LA23LZbh2jf7aEGPGHIRLoVd0RK hHg= +dhcp-74.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0l7FMVD7a+Bzs945ACYI1ZGROGGR1jAky+gQVVIg4Pq6ZhsvGeaNQf02 wXaVVWuFPBjEx+x4Of7eEODJCf+iJVul3xOqqhC/BFfyx7iJw/OlJxHE 8KqRTv7gl55ALe0uNKQiDJVBbU64MdYbVVP+qG2sq9oQfEcjZCvdWK1R 2Ms= +dhcp-74.nlnetlabs.nl. 3600 IN NSEC dhcp-75.nlnetlabs.nl. A RRSIG NSEC +dhcp-75.nlnetlabs.nl. 10200 IN A 213.154.224.75 +dhcp-75.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qS0cWJF9i3B0L4iQaxc/YNQmVr9K2UUss+Tem2gVsAnv036QaUPJ+OEC 9UQfacA7Irz1IIjqy+cLvFzhcQz8zF2BpbMzLtqMDxdKFMjFjFK8zHXO 6suktds/aOnJozjY8dkoGzRjwNIEONDD9GssdA2n5URuz0ajrVUUdzim 2/M= +dhcp-75.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g/P+ct9lukoI7aLgMf0L+g0c2cDkiz2mdBV4mrXyd/oWw7nNa6FmESSg 3hzClw8nMdrT7iP8VFOnUKj02MMmuorpU5qqa9VbCBqKyRmfcamg7cGT Z6Pl2vGT1X1nMTpV0+4Qdq2b4AsH7zbmbI82/Zc+2rXVUF0EUZTCTp1Z Vog= +dhcp-75.nlnetlabs.nl. 3600 IN NSEC dhcp-76.nlnetlabs.nl. A RRSIG NSEC +dhcp-76.nlnetlabs.nl. 10200 IN A 213.154.224.76 +dhcp-76.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. H2b+Ow0kP+Fay8l5UOwH7cpHjojilvrx6EnsbkM1xLpefldTXQ4aOAgv 7bcuwC8eHyn2dk8bhQHZkHM35uz1Rp0Iy8lM9a8PfS3JeWDYWWUuvnQF mkA7eXyXPbEm1bAgjw16+V3h54H5GifykZRqvugcO8IlBRxbVMFiBY7n 67Y= +dhcp-76.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kc3laYt8WstgiTpm+C3tWOMd+APZDgTT/m1WuRt8RUBEjyTGleoQ1mFc JtM4PQBl5iQRywwCYTmPB+2xqoU/+KE7te19dAFGDUVP9dXFgqonrfTt kf2FaOErgkZRffqXzA2UPVuUm0F8ifku5Vu566bnMFjewID8VCGKas5A 6r8= +dhcp-76.nlnetlabs.nl. 3600 IN NSEC dhcp-77.nlnetlabs.nl. A RRSIG NSEC +dhcp-77.nlnetlabs.nl. 10200 IN A 213.154.224.77 +dhcp-77.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZA83XwDYYPyGxwn2iKBFi2hB6FoZB7l08yGkeoMKEVEHnKfKiK2fzqs4 MUKzmmdR9JFzLZr6iC8ht2wtk45aVn3VZvY7E4RAK8npjzCpCrHNuJ1i BlxI4HkeC5eeXWSJ6w4osMIxxl1XT/vDOSGar+NUVFVnQEDGKw0ELpXX 6ao= +dhcp-77.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JdRoIL8BKa+XxzG/PtxTsvxLcHwJGTmDvucK9TD7PSuUnb6UtFdbfDL8 +aeKmgGKuzwhj8Z1kOvEC1quP9daRFq6uGlrWYk44A4/c8rzctxZ6f3W c7lQwom/07PFaMN3Qu4WAhUqnv4DpHsqBRbfe9Dd9MPHq5sSwRU0warJ 0YA= +dhcp-77.nlnetlabs.nl. 3600 IN NSEC dhcp-78.nlnetlabs.nl. A RRSIG NSEC +dhcp-78.nlnetlabs.nl. 10200 IN A 213.154.224.78 +dhcp-78.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NPN9M8Xd1cdN98NXpuO+4ahrgKZPfnuuRua9PmL3bxNm+3pgvN1cBx8t SHFyIwF53ixmAdb2FH8uvVA8ul4k4GbeYsrLfEtTx+lWL4H3x7cpc/qy 7lZeC2QwZycp6V0QW79npvxJ6wihWskJ6TtzAXPon3jBWbQAlMGKeeza tYw= +dhcp-78.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. w4a48Iyt/pbEKMuWlyZN8H1/uh45tWAoi4zxMouz2ci/1TRXWcCLlPAm SXp+hoQfQahXgrTQCRMuzJ7AHmbmW3gh6l2Jz5csTEi26ewhca4ATDtv ANHlGtVATEjWRbizWQO/R8rRfP/6Avi09ry7ktNcEhrSHWUDOKmdlCnQ X8Y= +dhcp-78.nlnetlabs.nl. 3600 IN NSEC dhcp-79.nlnetlabs.nl. A RRSIG NSEC +dhcp-79.nlnetlabs.nl. 10200 IN A 213.154.224.79 +dhcp-79.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GzLz1jNAIO2AiXQ6vlkndvMsPN545TAcS8LOaNPz65ftrzXcUuOqM0BV bVoMetflI1TMMlqOTKw9UUsar6DhrqS1sL036pVXdvWKljeACwQ5oHKt KDreHedGuVvBKv7+vIDQRT4VGmGuX/O74hcNM688UOiyKgWo9TgTPf1G 5Wg= +dhcp-79.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IVkCPUYFPZLLGYGWghlwupdQ14iJHcQZ2m+Ny4ia3BywaAc5f3cGzNpe dFBp1I8q7LMcm2P25biuM1clF709xYTWRLm3sIfwNaXAVaobN7Ion+kY YE221qI0Mv+O3RUpgN5hHXPErb6/TOCYArvZ50mSJIf1lA48cfHFw9HJ diE= +dhcp-79.nlnetlabs.nl. 3600 IN NSEC dhcp-80.nlnetlabs.nl. A RRSIG NSEC +dhcp-80.nlnetlabs.nl. 10200 IN A 213.154.224.80 +dhcp-80.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZCRRQVYXypW40w9F+hfsAc6rF7E7xMDU8SESXUs6dQgdmPuOjZrKfvvX WCI9QxpejQLy5sEjfwA6/Hdmk8Hjv9qCFqEjjbnfD3W8MIKq8lPvtEgO VxIO/2emNJYMyu4dPDHQXcIeUsJPjP7eOlxyLZ0ewpVp+LQNDzPeL7Q6 yZY= +dhcp-80.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ASaYT44VFzmz4/sL5KvE4jrJDsHjdFoZjnSYEBGNqNDjv26gGSNdi0x/ axd+CQgJp78VbKlGZpu0/hRIk0hSaz+ObuvraX8BREKHTiVcEAh4NMBh 7Gc+45m6Etn9csoLYYo115Jl9ayg5HrotSyGPqWCN7BPsczDfX7bRe9n ADE= +dhcp-80.nlnetlabs.nl. 3600 IN NSEC dhcp-81.nlnetlabs.nl. A RRSIG NSEC +dhcp-81.nlnetlabs.nl. 10200 IN A 213.154.224.81 +dhcp-81.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. M8w7UUEexw+pHp1ctLbZEBa2NnVYwo1lMH2dKCmUFmZxAG5XzujJqFZ9 s/i6/iHkxNRfJg4GULrwHAPIHnfnTxQv7+bnmXXURo4wLzDh6ZHl5OEZ nWCr+XcWqfrH+8+QpObg/8zGIeUm2VuQShKzJE/ZHtOW4ouc9xSbkWp9 fXE= +dhcp-81.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ICQa7ZO/BjspwDGBtfurUVCzbmNj9nUw5K+tFclQTfPAmjNd25eCkWWI NDY4Vck/os7uVqj682icTlWOHhYSxbsHWMq7e0uP9HGPV+2g4LpA6IRx ub6jff8EKVoJpNvvahPDY/CO/MVTmAeZSlLM6/lHKrwkYea7o7kjdft+ 9vU= +dhcp-81.nlnetlabs.nl. 3600 IN NSEC dhcp-82.nlnetlabs.nl. A RRSIG NSEC +dhcp-82.nlnetlabs.nl. 10200 IN A 213.154.224.82 +dhcp-82.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vXjzMWB/m5cXI6uQBz+elLFCares8gn0NIVA3E98ZXHgGiXoLdRbj1Z8 jIwgayoSYFSbGq0lcPAmfKt1X8UyYxXGGh1/YMI7Q/9VWsOzyzJqL0t1 PpRTb6V9F+hn93Mb8RJvdrLifllp5hl9WBGMXyWmlQf2aCpEHSq+FF7+ uEE= +dhcp-82.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eKeRiBD/B0qM1LojbBp09CLGet5t0eYObVtoWLGaFAiwsSADHWA3gIpw j/8UGmB1oIK6UMZb5zG0+TqX7iVdYq8Ea3ajdx8JiuxM6FFlcDGeBTl2 cJyzVrWU+H0rwrgQZ6hMhom6kBYwEc+hnOkh5qw0mEqu5t4S6LLiOlEj dzA= +dhcp-82.nlnetlabs.nl. 3600 IN NSEC dhcp-83.nlnetlabs.nl. A RRSIG NSEC +dhcp-83.nlnetlabs.nl. 10200 IN A 213.154.224.83 +dhcp-83.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q+CzNbwmtha9HTg1IgAzH1aGihD2MyyDOhyBAzOdeLeb11tj/bf7y6B2 DelTamBRsy67ATKMQTbP/gae2UM78HLI/yjRPDRKRflo0wMe/GtSDCB2 16WXv1jq/XcoUEGLQPgGV+CqUNItX2D2qcTeHTNa3WF10nxBV/vxU5Kq 2D0= +dhcp-83.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. elF/Z6gta8Fp1jY9WbeAseOaFRWN8RszOLs+FNJE8v7nG7gPFgf057tK PE6RqiQSO1BXg59mWvlNVBDJsBLVnVaAnhD3INgiXSUxiaq6Edu4ck6B VM5lf6eR9NlN4VtV16vqBtM8TwuKhuuZvjrRSW2cKICoN7VSNiwa6iAZ 3mU= +dhcp-83.nlnetlabs.nl. 3600 IN NSEC dhcp-84.nlnetlabs.nl. A RRSIG NSEC +dhcp-84.nlnetlabs.nl. 10200 IN A 213.154.224.84 +dhcp-84.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZGdiBofIRViyL4ycx+BMKuwP6tZGJMFjvC6dZhJq8M++oQ0CSyiY5LEp cbXOb5K+h1INY3zNT6CskrGpmFs4fyeIBpPf1wc/k2DeZcisnA9dCSLW WLvjgG0TEei4y9xfntjo1YkRnXs4ecCn80mAKHlZNbTDgq+V82IXqLHb tIE= +dhcp-84.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Cl48z7IK3FPUjZrmWhv8AXgJPw9nhNPM5uIVwKnmzKNcXeGpAzHNFPDf G3GZE6As7aqOhpzlfnjy8m60MFj8QmYxHHpjMcWFTTezQs5tYSUWAzFT g7GPtqL2XvQTZzwrfUUaRY8zfDgYvGDQ14Sx3CQ83NkFyFG5aIX2oIAD TlI= +dhcp-84.nlnetlabs.nl. 3600 IN NSEC dhcp-85.nlnetlabs.nl. A RRSIG NSEC +dhcp-85.nlnetlabs.nl. 10200 IN A 213.154.224.85 +dhcp-85.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. SG9wAx5uBszJ803s1GiPWhB1undPB5mJl3oqahsA/Gahrxs9VhCGBkc/ ESJ14ZIVUMpHySTIFJ0t8mnHPCXlh+93g1UQXC2xr9g9RE78tUgwZc0s A7Poa21zMP66pRs/OJ9u3m6KO8dsl/9bjx3cdNdi5qdPlm3ryF9x1BAN JIU= +dhcp-85.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. EbftONeFDkuJFXZOuTL9j9OMLKFsY5KNRz2VFN1XR8xZDDU+xaYJ/CkY XevAWpz9WZ4ni3WyJkjCv8xFAdcUuy64+yB8HLXfiTOivrYMpOmzld3p zpaDkwPwK+viVi49RlhaUwxOoM3omTSEQh+uxEkaBCeJVK2Msa6MYXLq QMY= +dhcp-85.nlnetlabs.nl. 3600 IN NSEC dhcp-86.nlnetlabs.nl. A RRSIG NSEC +dhcp-86.nlnetlabs.nl. 10200 IN A 213.154.224.86 +dhcp-86.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BLfZZDbFwLsfUDFaezlBXAWOMehy1RUbh4cpUPuyU1qYvDzFS9mg5nP6 /20HE4gG2sWGl3LgxE4znuVUgRnq9+5XJuACc6k5QnCrskK7EUCPaZzy sp3ozGciDwACRl46fpac+9Yh10oBqtiO4nlciTrW0FaKsC7dubBP6xuA BB0= +dhcp-86.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IXFyXivhyT7VHHtk1AnDBBv9s3t8OBdIG7pvBlASsL3hqSQxkXHdqqTc 3AhhxhmzFNa4CIrH1usX/FHB129s5LWk40xYY9RIg2yR1WUx79iS+Sbc SWreO0UEUXrhv6xGq8ZWGVB75VFwBAVsMuJbElDnftDk+/EsJ4MOGY1E BA4= +dhcp-86.nlnetlabs.nl. 3600 IN NSEC dhcp-87.nlnetlabs.nl. A RRSIG NSEC +dhcp-87.nlnetlabs.nl. 10200 IN A 213.154.224.87 +dhcp-87.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. gOeTc+6oFsRc0G2AcvOKmU04YgyC/WCs0gUI9/VwvrsFf3VDV4Bpxl9a ZD1jWH+Kdba3p5ORS90aZei31keJrznYdPZdcVhpQTqhMfiOB0bODtbY Z7dX0hXtq5yog+7/ygljQ2cDo74qGyvVMx1Sca0xbWvGY3RHnxX+dsNl xt0= +dhcp-87.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yOQQ6WBjTVwNEGEfwb7dZKr19ftGvwr3uoSJJIgxvZSfkyiW3KkfqFbw Db49Y90k2Oor7YUAKUSmDOMQ4LpnX0Mv9tPBBtUQscwF3kbyY6H1SYqk joaf/9RmDlwyyd2YOUONrGGbOocaGNxv7+Pqrks6lzZTGn4KnnApxCn6 aUI= +dhcp-87.nlnetlabs.nl. 3600 IN NSEC dhcp-88.nlnetlabs.nl. A RRSIG NSEC +dhcp-88.nlnetlabs.nl. 10200 IN A 213.154.224.88 +dhcp-88.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lIHnuKf1EEIskdzlR4kuYYwkAzssyeAZtsF+szX7zI8+0mFEn8pxlHmq NnWz8ROE6UmnDQoNK5Nc3TTNJ6pvFboEnddTvrgg6HB0puJMHwUt4u1N 7CTMeUGQgN5p3ZPVxY6pZ1MsKY1hvw6ofTsEtKIO+81t92gozqP4vUJv kgE= +dhcp-88.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ptBWx6CxdGRvSchZLV2D0IF7aDy0eWCo5A/KUGE/m2FRHaOHQRlmR0x7 AfLrOjdDSK/3K6qUQw2nhFi+p2gIeVxP+Nk/pF7RHLIg2PxT04QUG3M2 oHSlDSYqg8fzDY6TM73gBHl0BaI+ZWa1/m7h43LUePtkGjV5S1WqrJr/ pUw= +dhcp-88.nlnetlabs.nl. 3600 IN NSEC dhcp-89.nlnetlabs.nl. A RRSIG NSEC +dhcp-89.nlnetlabs.nl. 10200 IN A 213.154.224.89 +dhcp-89.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. AoswLa98YtvjQTD8YwU1JgoMz7ecEkp3/q/JYhUZmRHPsbOun+QbHK8Y uhOq36oU9MhV29KhyP7Nu9iELKgdGKPz+PcnGFq09AIbDK66TvIh8Dmi iDfVZcmjo11Fmi/qX+uXBjoqpnVHsrNQPXzCIkNj3r9gevTLRfIjNivU cFA= +dhcp-89.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Sb4zQ9crmTNvkSZl1UnfViVLjmTgG92fB1SqIgm9zGLhQdQAKLnOV6OR f+Tr9/Vv6BOgQhdn1oRCmalqTZkSCiP8zBXs8PQIa5LLzqynCmZL3SqD Oj3JEm6ATJFx1PJjD6+Um/1plUsZB077+j3gqGFysMzTtlDpkFXXklm4 Qhs= +dhcp-89.nlnetlabs.nl. 3600 IN NSEC dhcp-90.nlnetlabs.nl. A RRSIG NSEC +dhcp-90.nlnetlabs.nl. 10200 IN A 213.154.224.90 +dhcp-90.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m4wKKGT4ia7rffslLxF485pu/sHrtMTRDsSeJPOmIpb5uddjdVwH7wcx mstIhIh6pMX7UV0BaoIE5UMkP/qffaGsW7hoC7XKzoB81RFvtGrkVH/e H3ibvyynnlpE3e8/pNbIczNj8XODx3c/P5cS4croSnUVHREMvlB1uAFB yP8= +dhcp-90.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. MEqAa805aeIe9g8RBg5zwmqkb+MdxI6FdRC93tm47TOPrw7wR466Gxus ylkeK48qtVMdXlU+728bf2gtbFibBge/oQGiHVv/7ZB623R6E4TV1gUp GGWq35JFf/NkE78TSbghMEvV4y+VrB66KKQD0ii1HZojJ72sog2JEz/r Xi0= +dhcp-90.nlnetlabs.nl. 3600 IN NSEC dhcp-91.nlnetlabs.nl. A RRSIG NSEC +dhcp-91.nlnetlabs.nl. 10200 IN A 213.154.224.91 +dhcp-91.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EeQa3PniFe7NbN5azEk1SIOJLibyH1MQIRkzYQDq6u6hqnX3Wp6E5wn3 xppV9R9Pzq14bqJHof5qoEZLgqQMUYcue9o6KQWmd0QAQFdA05CZHvxb 8MGqkKfRgAY7qyFPWKjfLMAVbrevUZENiLQRYB3ytfXjeQ5s3VZFY8+p TiQ= +dhcp-91.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YE3hyNR1oyQ3aDk3gQ/G2rL2711uOy31McHQlSr8qjgtJqSs93P5gHbU XxEuwTrcv7TsAYNycDmF0xs1IxlWUqYEr9JNnnrIV7LH7QmecXmBApWl d0gLjvPy4Iwc6CcJwngHFS5QnTUoDuPL0z6jKT3C271IDFhNAtmi+GnA wy8= +dhcp-91.nlnetlabs.nl. 3600 IN NSEC dhcp-92.nlnetlabs.nl. A RRSIG NSEC +dhcp-92.nlnetlabs.nl. 10200 IN A 213.154.224.92 +dhcp-92.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. odb1aRYAudeWLxXgzxyjnbEeWZX6xANmVHJSu41JPc2C6NtYkOcCDGob cveFeKWGRLoLGuvzziyy25R5tKd0oPgTApgvdgipPMysvi65anMsJ1JX UT4RNYTbWhg/AnNUqzOBMNCtXFvhrujeBEXeEo5qPU6l+m7tq8797qbs Cww= +dhcp-92.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. J8/VtPwfYRT1u40hS+teAfOAAAPlLh1Uhyix97RFZxbStrv+RKpa9xi0 yAnNn0O8Uve7ljMXbTvho0g/8+My/+z6dUl9OoNldAQT+mSkC198GaLg 5eDnPQ21d+44/l3RFZSpT2GXG8EVDXeIKreiifzV3zfYlpN8ZBMBdQbt 7WY= +dhcp-92.nlnetlabs.nl. 3600 IN NSEC dhcp-93.nlnetlabs.nl. A RRSIG NSEC +dhcp-93.nlnetlabs.nl. 10200 IN A 213.154.224.93 +dhcp-93.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GokQ6hXf1AvLsTxa7ZJNj7dwX5iQcdBChQW/Z7eKxC6q82vxVw/cIb1B hlCzwX0JHPd5EOkB5aP0bqDQSlYh5p3V1GYMaS0ybwr2YD/Ym4k3vmt3 DN5pd7mUSvIwVUu60HMMN3s17vUP7Gx+bIERRmTRHu8v2UN/g+QKAnKk jnk= +dhcp-93.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZbQ04z7vrmOVCThvngK0C1jitxVknhCSh8sf9g+cG1tlNO2hmrivPirf BLyo4qxRk2Zr1QrK/9MgYNgM5eyKMMLFxPFbvXboFlH1dS2UawmSbw7C QoRdfF/t8TRJIE4FxYRYln7nFFPsIRuEvu73NCPRPg4z2XsBrmAL4guo a2M= +dhcp-93.nlnetlabs.nl. 3600 IN NSEC dhcp-94.nlnetlabs.nl. A RRSIG NSEC +dhcp-94.nlnetlabs.nl. 10200 IN A 213.154.224.94 +dhcp-94.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vOM4fWRgZS58MXYWfslqeRJtvqmWpelReWjYaUQ7GAEycOxHQauC+VAs QjYHH94yWRzFvwYs3mHN64ug9ZbJ932auPjJxEM3m23ST9x8jEEaoC27 zny8h+soh4aweFKPNBUCcBkZT4l5helz3PHATapM5avFaBa+pLqkH0id SPI= +dhcp-94.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YkGcm1D35WWU9priB4HlIxcZTg/u4WM5jZwGZSob8PRdG0dl7GhWr7nu /l2FFDcNsLQVLN6zbAl4SO8GzTKlWZjMS8nnDqq72xq3RNt9nnIuAnul E0BvlMP0fIujcoVL3c92IoDCsVKfgPR0UaKFrI9Wvz4VylH6IRkHAGLs zPY= +dhcp-94.nlnetlabs.nl. 3600 IN NSEC dhcp-95.nlnetlabs.nl. A RRSIG NSEC +dhcp-95.nlnetlabs.nl. 10200 IN A 213.154.224.95 +dhcp-95.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fACDbTKIeKkFF3C0IrjUjycwHlFw/cAUEmKYwMm2RMvooXGy7jX8ty+0 fVlJWemK2jgU6qgSOV8uSs5k6ZNke0li4vWjQNqqqyTaqLGB1ieCJIZb /NAv+G//cjUbl5t7+1DpKcBftM0slh5OfvNcf+Rk1v8H1bvjV5cpBMbp ec8= +dhcp-95.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pOTdop6MfoIUo32cQfgSDjuePRNHgElz3la/q3tz4d5f9mp/QBJR13jr ZMDZrMM4aNTW2jBRxQLtrjVNusQebiewUYfepR8Md0kff6odIE1bHqgg TmgWm/4Z8AqyuGQ2QKMCvpEefFjM6QJKRT/bZdSNRNhszp0Y6cW01Xia xWE= +dhcp-95.nlnetlabs.nl. 3600 IN NSEC dhcp-96.nlnetlabs.nl. A RRSIG NSEC +dhcp-96.nlnetlabs.nl. 10200 IN A 213.154.224.96 +dhcp-96.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hBZIoNwKx4Rmd2lW5QNmMb9XD4WUMeV3NFRwYWJnec2j4aJgcs6yIv9K vHNMfwDMHm+L7Ls76zrUxihKXWjAv7M1RQ8uMgDZu9pX9UdMZ94FaQN7 tkFwnWIHhsVp78N4M3V5dQOePik6xSB7VpHj8RCEGa9qrwmfjkgZM1FM IGA= +dhcp-96.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SUBVfNt1GsOtIG2Ciu8tOESaTaeZY35iOJzUrpLplU69ETAkeo+5gMwy KOI91pJc5eE7fPjxtEUSx8Hz4/umYP2IxQwwxgAwfF3d4X78som1QV82 At9Z/YUSBZFHssOBdQPRN6+raNv62e/JdSiQuwZoEmOp3p0vzm6cbpck Na4= +dhcp-96.nlnetlabs.nl. 3600 IN NSEC dhcp-97.nlnetlabs.nl. A RRSIG NSEC +dhcp-97.nlnetlabs.nl. 10200 IN A 213.154.224.97 +dhcp-97.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RUJnYkDObSu9v0+sgucGwxtqvQhnfoS1rblAsFJmhDVsWLmurkgb4bhA 3Z3P1DCxXzQcNduywgpxje1YzoLfel4Efcq4vCkSJI10GYMIAz8WamiR C3BXSuV2aGXI3ysEyQ552UQRx6VPegIoDthEw/rndE5cmpKEQbOEq51E ACI= +dhcp-97.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HNbj329P0QDyKkhj9pq+p0Bn3caI5/B2r31VuAsa+Bg9f3cooj9DywGl GPf0MqmjNGxLs+D+1L9nlGD1Z640FVxQomOhUHtoCoITa5MHC0Taf6v0 7EozUOZG3LR/xxl6jiRwdkcCGeg5edMM4ONaf6ZG9lhLhPY8x1KhMsaf 4Ko= +dhcp-97.nlnetlabs.nl. 3600 IN NSEC dhcp-98.nlnetlabs.nl. A RRSIG NSEC +dhcp-98.nlnetlabs.nl. 10200 IN A 213.154.224.98 +dhcp-98.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a6IqeJfZZ6zgooMeVKiniD2Ib05Q5BBC2a2LOZNBxFfx2KMQHPLTT1g7 73Trq4WB2iLfXuWvPOC98LWQo8UdljRd9sL8IW6xngSJmbDBd94xOp0h BGtoqOhr0V9Q+roPLnT1/iXjpNwY177yKhi+cOrU0jJaOdlkKyOrjAJx yx8= +dhcp-98.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mxLkQ3hbVv6pkUshPfEVwXXBiFF/3phMrTRKQW2zlLJG8Cqg/zeJid0E tsexQuDyhujfRlA2ikjpCiKygPSl3xa+duDs7k+y2h9XBMW8a61ffNhd 8q84YMVIM76aP60ys2Qib2f7Oniz/d4MrgHeRcZ+d/thlSrarWK0bQTg QwU= +dhcp-98.nlnetlabs.nl. 3600 IN NSEC dhcp-99.nlnetlabs.nl. A RRSIG NSEC +dhcp-99.nlnetlabs.nl. 10200 IN A 213.154.224.99 +dhcp-99.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WWMnYGUPrjrxTtK+t/p7L3BmBI7adrcS3HeB/i0iIb094eSnTkQxJE+B zbH3gyqUoW5G6ptOflJjFw3Thq0LnGOICjcOhJBreSCLKm7Q/coKvCt6 B3RM3K8M33sXvbxCrSK5Sqv2L1UZRgwtFPQPIeiqBFsOnvqB+bYc8Dgi ZyQ= +dhcp-99.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ffNktmNK2e1/XwPpJUfZKRihKWw2EuDRa021iwM12s9s68VD27xuYJc+ EEuSaHXdpojj4rhHT7FwYidQ9anj9YmHWWjpDDrC1W3xfnGZCRJ9+rUq VvNPIRXPTlegM1Cp7P0iAaO/PKrtNZeAatZY2yfRTAuXMeiZxJcyzAso 0yg= +dhcp-99.nlnetlabs.nl. 3600 IN NSEC dicht.nlnetlabs.nl. A RRSIG NSEC +dicht.nlnetlabs.nl. 10200 IN A 213.154.224.250 +dicht.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. n8bJy0Bkmmq9GF2zpJKe+n6V9S1B9EPERA5n+zDmJwMhvMpePn6qRLGg fF2emqBFfJvNLlncew7PyYKzzxu++RymWHyH4IX43YShoss7wBT3G/A/ OeT3jJ+zW0aXtgmS2tdrjzP3JSgJiFaXmVCINovTs5DyLCG8kBQj4Z+k XJE= +dicht.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. TAlMvsabV3ZWeRSoeetSIzdFn/mN+sLGlB+pGzH4k0pk0qXN/rcXfaEj h2/vA0T3lt5CNweycTD7XYmBXuheGPty5VXzK+UREtPgD7XM7Z5IGLmv OpyOY+l0eOqkipcSisSWKIGuDP14/H7YQ37Sc/cJC9sZAlz7RirUJoQk IsM= +dicht.nlnetlabs.nl. 3600 IN NSEC dns-lg.nlnetlabs.nl. A RRSIG NSEC +dns-lg.nlnetlabs.nl. 10200 IN CNAME bert.secret-wg.org. +dns-lg.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hIIL8UumgIknySm5rI4ORn+Aqese+Na6xnVcUL4NQy2ujSkB6opZm9Ow X2mTZm+LJoI4kl01wOOLVZhpItXzKlpJQ/iV0/Qd5CEbwyu1QiGvcSpR vsaJuFYh/XfUw6HCJsbhcGYxVgz9Gwiy6Ni8y71qpGluUf9twtvlYmT5 T0A= +dns-lg.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PU0Z/3EbG4ipN0F+iNTtjZIMoUj+dnBDr5ahVrzlhE1nm207+2GKabWb X+q2VTJKGzSR2D6HUAW7m1qgBc6xBADGCKnNL4tCIODk8HytE1Y2y4B/ GNE6Z/tq8GwrS03WRZoh7a9qIhspeYXGUoE/HPFhYpoNGKn0WEsSR8kG 1Ic= +dns-lg.nlnetlabs.nl. 3600 IN NSEC osx.test.dnssec-trigger.nlnetlabs.nl. CNAME RRSIG NSEC +osx.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.12rc40" "ce58e1380de2d3d265f53a102166856dcffe45bc4ede4b623ce6ce0a16adf1ec" +osx.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. w5ULN6uEWRHypv38w+LsCCogK4zYc4iZ8mrPB0kqs00JJirfkYRbQYio YKTM7nbl4WLg34YDyDUPEaTV9Zf8/8QKK6+liu2WYSTK1/KPpf0Y+jUt dtP+Pl5dbW4v7B9Jnx8Zp0yuoJm1E/vum1/Jo6Lo0sDzvpZSxNlt18LW FtI= +osx.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ddKu7DDQC6Buchh7MjDR5xb+s3JyDcH7R26HYl5mphf2Wlk7OvYbdhoE KjgZ14ppGMHoaayvGhkS8n7GjIFOgU6b9IAQs9CRHMORJq/WAkNSOJkQ IMffnsThsL8hJIQP0OIeQu8SWiFgh2KMpfa6UwmOV0/KrpskpSrvH03O x8g= +osx.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC src.test.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +src.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.11.99rc30" "f77e343d753499309905bf1be4ea15fc0f319c2aea20b3e501e0e4e556605f65" +src.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. TPmpfD3VJ1doWZfKab70GPuPkiXtRliQgPi+8C3tPp+lnGvxU8OrdNJZ MEbj4MueAHWuve5QRaShjs83F64117Uch9FZNCzOKtcdmflk4uALxNIa ClaemyvDW8rSALan17Kn+K9xgqljwPWwO6RZFJkIoRoJl+kRpQNVaYiX PX8= +src.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. z5R5GN4OXqVN/f5LCTuwyjtmaR6s0VGHj+8afOwguTCiHByjmy/P9tbw RdtpKD9lUoAcLYnLmJGy8WYjtLcXWFwF2UxFPz5dPO3cvsXdB/6ctVUd 6tZJhHgJoFXZ4q/8TuaLWFqJ+CHzBj20/AJ6CXEKL4mC3QMMGFGKvATW hL4= +src.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC win.test.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +win.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.11rc47" "634bc594b013b4dc2a0e2fb959fc7ca6fa152b8a8a100e074e1062beda7bd9dd" +win.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. TmRzAT73ihQ5sp8RUoLLM1mG6wQ+b6nqgid7UsYVddq6+2dj/6igItxJ 8j/fYjnuvPALTe8Ic6GeTHPl3R5jFVbF+WOORvttcOsneNZKbl1MaU/1 3DSLZw1uGISWRZ5mwQi38gtHylDNXBYroPiL7QnW55DsRKljzZaqFtp2 7n8= +win.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zcvRkafKtjLxjVc/6eABvJ6qmZr/ZHtWGiwPJtYEA/8Zye6U1CA2Xuj1 10XOmTHpkmwxPkNDsF6Le6Mz7uzzzP55rhia7JLe1VKkhvY4Q76o6ddv 4MQQVDoLNg+aE+jQvsz+OI1sqbXOXgV8Gu9FgqqJLqn9es6lyIxOGjk/ Re8= +win.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC osx.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +osx.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "77565ef4a25f07383c57ae4d96cd3bd5fcfe089301f2054ccf20fc636c76e710" +osx.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fyop3FKPArhWi3ZXSmUNbQItnOzxSkolK7Fzt6wUie/tfmHLaAOoBkC/ cbHwU0MaMkA8lVqdb+fnXd/qlPcCrVBodIysOtThzLNzemAEsOdIIPB3 KoqdUSRgp1+w9JuxRauD5VOQfJVriLDUyn8YI2jLwV1fyAZpTiNX9cMQ 2CA= +osx.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. le0I4Ws8ic5JVy3Ta0LTgUh3mwyS0JS6US71LBlF/7D4uvYlKhwdIBIw O5HbENTXAOIDy4bfNEGf0IFerLWL1XfyBpCgdgT+V3Cw03kCJysqsEN0 W+kFHl3k5QYAikYkLG5MzHSsrLRE4PGWXAawXOQ/QKfu2ae+egb7lE/r PDA= +osx.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC src.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +src.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "c22cff6a51f0ae8e07393ab7935d44faaabfe3d8341ba8bb85189391dcdfd9fb" +src.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bK6Bg3Pj8BK21dYdt/RhtqHXzwj+DwyDD8aNPeqhhaEUmzD3sFOk+5M+ BJdNt98mv+H5qiy0Uuno5RYX1j2ltPzcRh0eUB1BBa/0GpREWKoyhlnH 9PsmCrON7eVvi/VVM3xg/NH27tiULuMhe+oK11cHobtRJ5ICP8UfFC00 g1s= +src.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. sLAIguOrVz9g6YSqI5oeQV3TiHaFyax9E+v7DBzkHmPQxLJqZYLdY91p xWX3KXkAZt0y+u0DtbyzfVxeNQoiJCQqC6U3GnoHe3rfVB3gWeKwC+B4 EboPUZAF9yJ1hXGbLUu7Zrsypc0hotnIGYKOtsN6rRYT6JR4D1wwWwuZ gUs= +src.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC win.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +win.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "3fbdece3828852f040ec23886efd10a5d2a4286f47aafbd718a36077dfd9e10d" +win.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Nzh+wt1Ha/sFk5Ut/zCguW2Aa+mbnBjlz6DC5NaxyMisU9rUGhRdwHNJ QJuOdLTysioq4pjeRClmwdwjUXtBEfY3xJPN5oacZYFHKCQsSc0RsL7n zUT5+WPI4YU9WfQnEpvcTS1YKcPPGws36hKRzO+gdNio5nZcna51+OTx pN8= +win.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xMqs80ul6cWNsa7ErEkkO6giaAj1l1TJB/v4uAU3ySM+PxTCt30asx/A UIrCyxksxXKw4Wtwt1uC28em60E1IIT7p+YKrZO42idOJwNRBzbyDu1B jSac4zyNvojahBLO1AS3afxmfrtqAFudgxZjE1aQ1YHmayj6PI5VTVmO E8g= +win.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC dolguldur.nlnetlabs.nl. TXT RRSIG NSEC +dolguldur.nlnetlabs.nl. 10200 IN A 213.154.224.13 +dolguldur.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eRpykwVedfDa/9vB1TARqQX8L0X0k/0vY+FToQBalciGARnbUryoAa4W g/EBx41siCHDTS80rzgxgy14kBRzj0Olzvuhk+k68ePMnPO2D3XgUsQn G4cWVZh2MecqloRh9gCPXWDPwHAkqEcTr3M60MUUSUGY542bs9qN5m1s eWM= +dolguldur.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. obwAow1p6jiSTdPaoammLwaksxPxlyuumuqEzHTBautVjgRaNDP2V80w D8PeCUU/lo1MEsj5vT8mkmhVGzC75uHyE/WWWADG6tFCrHSWJO1PoMHN kdvbMVj3EjNOMTfuNA3sAtXwq9fUZVU+XAWrC6Oqt74rnIlTKL2Jfmw1 KCk= +dolguldur.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kLjOhTZGedE61rhZJrnYbQNjGKNRQEFWAcdFi3zkp80JiJ0yn18P820r eahWfv9pYY7OG1zBCnsF/nTw88vOWsU/TuH/1iTCpuf/hWVTMBscrCj9 2rE0MsBH97shmnFQbYD1sjIi4vIJ8U5FtRocDMi3jyv2TjuQ7HksdTgr Ltk= +dolguldur.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Fqz9aGLeJisB4o0Fha1DH7nnOCk4okgtdzJC76VtTyxKDrS8hX/4p71v PTc67JuQIjg6djXaMChFXn5V6eS/GG5Z22GF8XLSG7aAuilFQGwSG+uG YNELeoCif/DIOWZt2ZtlO48w521p+5H5uybt/K8wqHkkT17ENRShKr4S lEs= +dolguldur.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21d:9ff:fe6a:aa56 +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 1 1 ADB23C8980AF34D9A637E93EF6B19A8F44B61F9C +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 2 1 F591E1602245E501B55DE0B69358DE79282299B8 +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 3 1 AFDF808CA232EC012605F59746850E71F2A9B584 +dolguldur.nlnetlabs.nl. 3600 IN NSEC dolguldur-bce1.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +dolguldur-bce1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21d:9ff:fe6a:aa54 +dolguldur-bce1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Q55vfla9/tDCXXN8InSHRmiAmW+mexbZjUxAh7NWL2Qx4wueI50UNPzS TTlwv6J+qwTtrt9+15slQ7EtmuvF72eHRiJFWhTDTrt/gihN4NbJ+KLe fgfClM2/YCGFdo1hMPKFoQufyR8dMB94VMPgqOhiiMZvFahjgWiwDn6m o1U= +dolguldur-bce1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uLeyCwymqhDE9VZl7ZhsRQ2zRJ1bpWNwsTKYpBhkDYJD6xrnz/fH/cE9 XRmoqrzEJdkiJwzhJItejlSSURvL5CFkZstjPOuPSQpjG7kp7+Aiwe91 Br6MKjm/CRa3ORD5Gh1x02obKu3to6zWA7Lz0m98meA81B2GLR6E3zlg CYM= +dolguldur-bce1.nlnetlabs.nl. 3600 IN NSEC dromedary.nlnetlabs.nl. AAAA RRSIG NSEC +dromedary.nlnetlabs.nl. 10200 IN A 213.154.224.136 +dromedary.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. h6I6BbrWZYxjhWrzclpbsxgYzwfXFedgAanvNkvEv9266HOlOmbJAmd8 LrAugBc9+Q08StyniA06WRjZnxeQkaMVNNEFIhJWTNmCSsTJpLcVMCvi Mt5utlOCm9bzCMnZ/QA55OCMYwTDoj7ZcaxS8pe4DtCuuRC3Jd0GWA4Y hfs= +dromedary.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. KVFcBPD88xOL+Q3XoiqdXpXlKkDO5Rj8xv0VtUxg8JB5wdbEtnBu+jPc 58mlpJ5IzqgwzF1D80MTB2YKqDZmbhOb0jEtIsT8jSbgtfMcAyRcAfvb +sVAjpw47bmi9RRU9G54GrcXV3wAEEZIMVvmH7TuYbiOaSQvjuFCuwEJ FRM= +dromedary.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wiJWqjEUvM+LVNqAicF1R8TIe05h9FB65eH2nXkmxCt9MGpRYQ8f2chb kVdj6obJ8OEPOkjyD3CCKsFQt0DOmej7UbzZm0iFCfouxeKsWW1RVeet V/4f+n6MeabIjwNHmuiqod7mgfueQK9/EWH9jY1bKUtvkorf1PDXRXLD 0HE= +dromedary.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. smuP2ZshHeQJd6/I45Nwur0VuJScdSlBG3izYioUuyPBJA7pYsLpsgoZ ejiOzwiL0K1f21X99J7MWPBvFTPuSFSIBeqgtx2GkWaxRH9XxjgbT16N GzeQ4KSvs2cGOKWJl8XYckiqFn4ISdX7D777IQBU3C9JT1j2q1d6UGtK jA0= +dromedary.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:10:: +dromedary.nlnetlabs.nl. 10200 IN SSHFP 1 1 B41C41F78C3A773CDA1C14346EBCE0D0AC1B7804 +dromedary.nlnetlabs.nl. 10200 IN SSHFP 2 1 B82DAE815E4CE0727498B61FA108D72FD65167EE +dromedary.nlnetlabs.nl. 10200 IN SSHFP 3 1 1B2EBB6699E0AA530538F5F9A6BBECC59114DD17 +dromedary.nlnetlabs.nl. 3600 IN NSEC ds10.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +ds10.nlnetlabs.nl. 10200 IN A 213.154.224.159 +ds10.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. j9BY+5cA4UtCH9eUHD3dy86Q3j/cKlFZ2gfMGhqPvu6PrIkcCAyykDYf hTjkeTSU9IxwR8hfcbffc+YpmMrdpdeXboheRvKsd2NCk1JOmi1vU70E 4qNb7xsGi7bqtLZqLZoL9+VWk/FJ4Knjw4clCGZjPcyU5tYibgcuueCB TjE= +ds10.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZA+Z9tpWwam6yP0aAFoja3FVR9NbzLBxQ4cP8my8qCMPBS+/D3Hw1RPs bChxQOIJwCCmV1CtS6/kJALA03dcWJJx4Si+0FgdNA06J9RBRfYZKYQg UJuZbf7nUEegGnZ45LA+5UQd1F19PwFobzWMAqKlYuXw9PuHohZub4Kj RhE= +ds10.nlnetlabs.nl. 3600 IN NSEC e1.experiments.nlnetlabs.nl. A RRSIG NSEC +e1.experiments.nlnetlabs.nl. 10200 IN NS ns.e1.experiments.nlnetlabs.nl. +e1.experiments.nlnetlabs.nl. 3600 IN NSEC e2.experiments.nlnetlabs.nl. NS RRSIG NSEC +e1.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cjF3TBowgNyNfRPTmWMigLGjrWBhade1A95W/xIQ8AVYwwRehUjbL3kp asnah7BMUMhZQHoSYH2Qp2W/0LXjyIReslQ7IQEJWFuBbUz04BVVCgdR /IMOZGRUzqAgsJ9rw6bG85R3qcobsB0pEFHWXIJRs/05AeZuANKLp+Oa zkk= +ns.e1.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::11 +e2.experiments.nlnetlabs.nl. 10200 IN NS ns.e2.experiments.nlnetlabs.nl. +e2.experiments.nlnetlabs.nl. 3600 IN NSEC e3.experiments.nlnetlabs.nl. NS RRSIG NSEC +e2.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. u1Prv+SlOZS6yPM6899yECHNa4nXKTyD7e9K8B/EwD7J4VYPWzvzRo39 VwGkdEn01v97KlcEf3g4mmcAnzPcdEGZT/iYdMYVCrYpXV1GhDqePtK9 XnkCRjeeWiFNOtgJxJ8I5FPqk0EKWZ5gUMvgSIz1QYmMPFOYd8uMDEBa 76c= +ns.e2.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::12 +e3.experiments.nlnetlabs.nl. 10200 IN NS ns.e3.experiments.nlnetlabs.nl. +e3.experiments.nlnetlabs.nl. 3600 IN NSEC e4.experiments.nlnetlabs.nl. NS RRSIG NSEC +e3.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jb87bloDlNbLHoxHYR8XwUA7m5KsH6wI7H2nqR45vVu9Ei+reQ5oeqc9 +FCsJHcN6U2UQzgAicLvEwGkuGpY/U5ZjEt2TAVuSc90A5LAY0eclaet O3+G6kTPaREBL7HCq3Gcm2v+reF2K/VVSbayiNw3YpXt34zLMLxdjZK1 35M= +ns.e3.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::13 +e4.experiments.nlnetlabs.nl. 10200 IN NS ns.e4.experiments.nlnetlabs.nl. +e4.experiments.nlnetlabs.nl. 3600 IN NSEC e5.experiments.nlnetlabs.nl. NS RRSIG NSEC +e4.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wmDfe7qYWsh/58khG5aRFboXIs1Md67TW+vx+xGRHDjYXIUIje27IR4C UWLj54ARjIaeBx6cd2Ag0keK+9h6owixP9Gi2iVxMk4F4UQ6zQrFYQZl dtOYeJS9MjknOiOnDtMLPNSfAoCKiL7hlPVuaHe9sKfO2pWK7c0mpWP9 CTM= +ns.e4.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::14 +e5.experiments.nlnetlabs.nl. 10200 IN NS ns.e5.experiments.nlnetlabs.nl. +e5.experiments.nlnetlabs.nl. 3600 IN NSEC e6.experiments.nlnetlabs.nl. NS RRSIG NSEC +e5.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IbLu3Yl5W+GByjR+rwU/ucBoVdGdrcWy4RjKLlLxZGysSHyENA0lD3Ai kV/E2Hlp8GuyrR8GYIIL/F0HDiI+RPwh6uxMNmAzlPbuPqOnIt801Ca+ yWzYl5gVNk+SD9CtKMXILQ7oL5Kv+qNvLeLtWyIMDUnd1BbQzDzYffnH iBk= +ns.e5.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::15 +e6.experiments.nlnetlabs.nl. 10200 IN NS ns.e6.experiments.nlnetlabs.nl. +e6.experiments.nlnetlabs.nl. 3600 IN NSEC e7.experiments.nlnetlabs.nl. NS RRSIG NSEC +e6.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. oMnlAH+0zruiTyycXmVXT5c3Gw6PJZLIm+W6tw5UNrBUL33SsUdZ3USX PxTNFUCHClQt28GQU4wxcEAJswAqWdhp/PJDwapzlgrK7Fzf7GoD6krn XyQGOikJBDa8XcSWPy+0p1vOtEImeoz2RXdm/JS451xRpy0ZQg0ol8vU txs= +ns.e6.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::16 +e7.experiments.nlnetlabs.nl. 10200 IN NS ns.e7.experiments.nlnetlabs.nl. +e7.experiments.nlnetlabs.nl. 3600 IN NSEC e8.experiments.nlnetlabs.nl. NS RRSIG NSEC +e7.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xydphjv8yVFBLC0mxA3dioNWnRvuKJ9hrAHYVxRRGvJHAi8t7bfNFr9N cm3ACxluOJbkfrS71V/tpqnNKkLvlguE1L5tGibfiheLkNsb/ICt04Vu lSY4zqW2l34zMwswhvNHLq4LAnVcBDgHloMPaCGagIy1v2HS4qCYSIXg 2YM= +ns.e7.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::17 +e8.experiments.nlnetlabs.nl. 10200 IN NS ns.e8.experiments.nlnetlabs.nl. +e8.experiments.nlnetlabs.nl. 3600 IN NSEC e9.experiments.nlnetlabs.nl. NS RRSIG NSEC +e8.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. qf/mWvZd+og40MMCrx4BvA+I1opJ7iwvm1TH4zaAuX4PWU7Z1f1L6adG 6akaKZ4YPn6sPmzVJ3QxvA/wNRAZtZYtPVxMjsJNobAlDaHl9bGfBeV7 34e5mzRldSMFAYzkSGBfMMfeVi2ZYUaOV5MCtsDxsvVDFwKsbPFBKWix Nww= +ns.e8.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::18 +e9.experiments.nlnetlabs.nl. 10200 IN NS ns.e9.experiments.nlnetlabs.nl. +e9.experiments.nlnetlabs.nl. 3600 IN NSEC ea.experiments.nlnetlabs.nl. NS RRSIG NSEC +e9.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fOBvJPP4Ahe3UEpWPXrYkOva6Eb7nWsS3QDhKBiGhydbTBDZh2TqdYCN MucZaoTYpGhedAD922FvsXeiu1xiX19H7XWEuyiP0oCbyU+DzbA7xukS gW2gwV87ePKY+MkHYAlnUdKUtm5wowtcdabk75AYCS7/D+SWi0X1sLAc zcQ= +ns.e9.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::19 +ea.experiments.nlnetlabs.nl. 10200 IN NS ns.ea.experiments.nlnetlabs.nl. +ea.experiments.nlnetlabs.nl. 3600 IN NSEC eb.experiments.nlnetlabs.nl. NS RRSIG NSEC +ea.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. sM4PaF/rNoKNjICL/leDFWnYn46/Aa6LwGqlfCZeG7Sj6tAoUtib0CPi dwvjJt4giheWColcIO1JJ+FtOHP+HuBBV7m2blt4HXjz5fVlqbzTSo/Y 1iQB0ahyilwczJ4lVk9Erflq3RiHewu3QLtXAN88TMe/tgfqwNZRuEzo d0s= +ns.ea.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1a +eb.experiments.nlnetlabs.nl. 10200 IN NS ns.eb.experiments.nlnetlabs.nl. +eb.experiments.nlnetlabs.nl. 3600 IN NSEC ec.experiments.nlnetlabs.nl. NS RRSIG NSEC +eb.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jpJa3MLL8+fyzPQWDQZbB9iN6m0Jmk0yXenx616aex3nXzzvWzKzfEva Ydl8aF56DiUugZ/32JTrRhFD3jQZlrkTnu2pp7RGOfHOkRZI8nu0bvUi ohCqyw1IOkc/zSzcb1YjarScdNGLc9Wd0e0BgkgHGL78yATntpyt/rbg VVk= +ns.eb.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1b +ec.experiments.nlnetlabs.nl. 10200 IN NS ns.ec.experiments.nlnetlabs.nl. +ec.experiments.nlnetlabs.nl. 3600 IN NSEC ed.experiments.nlnetlabs.nl. NS RRSIG NSEC +ec.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. KISwcdp2oX1dK1wF+fcMxF1u4GvPF2Z7rgpipSTxPyrsHKd9x4QsYvKr t2ndwdF2eAOF/iuTIJ77zeEeafZyFVw1xtW5aY2z/uQIsJzo7wgK9agH Kua4VWhU16HVroJcRUIwY11uvdj0oRdOeaEfhYl6ACuF2b2u2X0kqOVY ECY= +ns.ec.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1c +ed.experiments.nlnetlabs.nl. 10200 IN NS ns.ed.experiments.nlnetlabs.nl. +ed.experiments.nlnetlabs.nl. 3600 IN NSEC ee.experiments.nlnetlabs.nl. NS RRSIG NSEC +ed.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Cjv3UG5q21Kx+eoGLgJQVUqwNuR6wk6bjsFmLrOiKuc5cbI9/nPY6BYD 4NZuKX84K12tO2FHFKlyXCshwPXvMirHb7G4Cygw0+n5ChV3nMU95H/z T3T8BGwo1DFQY+weEoeEGsDFlP5t6sw5CiWbIlD1G7gshufYAXmN/0j5 1K4= +ns.ed.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1d +ee.experiments.nlnetlabs.nl. 10200 IN NS ns.ee.experiments.nlnetlabs.nl. +ee.experiments.nlnetlabs.nl. 3600 IN NSEC ef.experiments.nlnetlabs.nl. NS RRSIG NSEC +ee.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IH5TFGoIwBbyl2fzvXD3ARiDoere27/pbpkO1NMHjndzgSyhI2hk4ofu i6fd/tfjwgTzLsoQ5T6qbOD2BPZH2MXOk6oXRU3qmVDICak03nJKxbx4 suYGntnhWXsbcbxlHNOSCXb2qBvsVvGSWG8WL09hi0neNEdNAUKqsMB9 MIQ= +ns.ee.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1e +ef.experiments.nlnetlabs.nl. 10200 IN NS ns.ef.experiments.nlnetlabs.nl. +ef.experiments.nlnetlabs.nl. 3600 IN NSEC fluffy.nlnetlabs.nl. NS RRSIG NSEC +ef.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. LzxY7YVZ7YBsRnVnaeIin82nMpSsQsFnDPzXdvTTvcqy48h4Cx9oawgl oOk2wzhJ+LV6FdrUzWKoHUP1GYbCskUGnlvgQOhfNuWQw8WkSImNt4NO CIe36OuiBL5gRLlkwwj+GY4UNUcFgD4d5NhxLkcXOaOJnMAr6iRRUWoV qjg= +ns.ef.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1f +fluffy.nlnetlabs.nl. 10200 IN A 213.154.224.42 +fluffy.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IRyhfDdDLh0mzAmCl+F8grYmJixOiOTIoKWuq+Fr4IIy5oQxANCwg7e1 vY927OEshaH38yk5c33fyr0MwvyG7ECG5x8r/PZJrnZFxYn51MdkIy+D HpcvVs2D/F666fWJvMwv/xMc8eaiOajoXlgoqja1HR1qeN3H+3inJav2 dtw= +fluffy.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wnkOcVN2F9Cs8oX/12UUSKZMGbT1+B5xVcFU9aWflNUMWGgB4rnlzB2x 0Of0B4yGANIEno509TT2WU+MT7eS5SHRLy6FCpAr5Quy76F5BA/iViAz cX2qrr24KPZlffXq1ciPsqOKo69/GC2JouM9OvtoCWIaIT768zKyId3C 6+M= +fluffy.nlnetlabs.nl. 3600 IN NSEC bartsmith.friends.nlnetlabs.nl. A RRSIG NSEC +bartsmith.friends.nlnetlabs.nl. 10200 IN A 213.154.224.242 +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. y0uaW9lgs7xabKiRAFsuHeDM64XnN+Q5NLixz01WQwpK4CbS4GckFtGw CCJYtsZLm8TdR+EeDGU5u9Ol2b/F2l+p0Um4a7TtOKlCC/HYoSYr0qlZ ip6gAqs1SywKd5644nbOGmT2WnomEmEMnvuGFTCaNffOwAI5tsfvgcTo RWU= +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jp8J1MQlslLIKwLSYapNcYB6VkLCst7mekOnDf0q5piOWy13ZGHi3ABe SF0oxjxHQVWfL3pru+yCkdk7mFV1A12HcaPMuK3fF0snxqnZ/SpqtgsH O1ioEpSMuwCl8P6xa1BV1PLcrm5FM1dJ1CP8DcoirtPk1EpZ4TGMa0Yg cgk= +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ylu5paMbdbgRmMx9vEJKZjw6whjZINZ2PvHiLMN0krKGcd4kuwEDRYO8 gIzjVpBdGjZQ0bC1ccvA6dnoSG/d4jm8NfTrZ1HoFonVhchulBMA0Z4m N6/43xU7cwMf7yYmUd9HEviY6wupL4brCQ5Z4gdzvHu/w9pTnIHKvwJ6 fcs= +bartsmith.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jFPEvGswjTixTV4d9KAMBEV3g9smXNi3S2qsAk8nR16eCW0eE7UD80bo BK2y/3CTJ4gakIZz1mhBnZm8n/DEuHgd64G+/3euMW46X0HxA6UXtZCa dPyWCJD93ZVMm7+mN/eR8OZz1UtLsmQRsFJHZ+JSy5W3klN+P82nwqJg ANY= +bartsmith.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:7:: +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 5C5754E45839891C9CBB30538D5745321E135CDA +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 3FD8568AA33165AC9FFD2E63C43F124C9E341FB6 +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 032577474762D0CEC79654FB7B1E3DBB9104E4B9 +bartsmith.friends.nlnetlabs.nl. 3600 IN NSEC klaaswierenga.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +klaaswierenga.friends.nlnetlabs.nl. 10200 IN A 213.154.224.245 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. opCfqWW4CqzdocV3SsQ5iq9zCQc1uJFFodtAAxSbaG8RJt92HtfcD2qJ 9BtO8ZWYsNDB1P4Tewe5H179RRzc/sjUCPElg4psqR1VJ25vaSGL0Eer h7ZEQlHCeheY9qNbB+1eMISxfIDwp05konM7ZezeKaGng47mvFdSnpGA USA= +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ieE7FSITJ3MKt0XmKzP4XmxvTTI6uPblGOzcE5WmOfL805J45DHhc7Lj VQ07ZdHGsZgRXfFzMlnWnnuL/8AQosrxfhwJdgUO7kTPao3T8brdumUu Og43T81NqMay5Nfb8INeroRa6FegbEjB2jk9DkKkgH5Wa3lra3Wl2SbV LKY= +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. f9aL3bOnxDRZIlR/rb6o9E4IVyvE3XHmgyjPQLBSTwbCWw45mGfem2nL vekv+pvhdb93GvAyMhY9Dfe+WcpeGw9RTrhH8twl04gWzwgqHcBLB26r TGQie7dO66fn+9dsp47djf9no0JsrKP/s0GAL0FMzdBvA3A2+WwQp4uP cxQ= +klaaswierenga.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yGdul1K9QK2XS++AMWrs08Piogy7aU2Iw3rFNiqqvAFTBpaRpva24aqn Fvb52ZuIGvK3VT+NJQo5sb2c1QtZLsUbQBKKYVVnI17EgJnnp6dPN8s3 8qvAsZDbhM1yZEF3KAZtM3Gdznb1Qs6p9er9LrpMWUVyBzzosHmF9/Z8 pC0= +klaaswierenga.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:15:: +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 FD05DEBFC4A849DDE4263F021DC1CDDDCFA76579 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 FF77160242E18D4C06F09929367760CEE3F193AE +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 7EBFCC9B2B4D9B70196676E2CEF071CEE0183199 +klaaswierenga.friends.nlnetlabs.nl. 3600 IN NSEC sebastiankippe.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +sebastiankippe.friends.nlnetlabs.nl. 10200 IN A 213.154.224.244 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yI8GEJgWV5ukLJI+OsI1yD++lMNZly0usAdnnI29tIs3Oarxf6+byLdI 0mPlvHHXSPyulN1uN9lLwf9PqNT2lxLVSNW9GXwHl7VU+M2iZT9zKzfY E2qpp2+0mj1guaJY2zM1nVqvpgKM+zp+lda6q9lUXMY1v580c364XzQP AqE= +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UFjlIQT79ZIM5HseDdtPHOkmZzfv/kMl3pdnYCvKrK2oobTOVjLJB5zF jHGt3972DUFthjwyW9uYOHGaYlGAVCiB0386wV+YqF+dyb3+lHGp32Pp taMGzdYSTWHTYb5z9IuNEQXaEFEJ/exImvTvY7EqGbvAcvWyOWdsYOzw CQs= +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Y9VtyEYNQi+r90PNZ/4HSqNemPosGIeC3AycSpFB24wjoYvSja6K2HpR BlOrQD5esMceMDCIZvh0XBhR3+gfmpBROiXv8Cx4cwwaWeKq41sMxV2x Jr0LTK0OuZweZbW20Vkcl3884GYW4hZQX5rk3r6G+gGCxi6qTFnZmF4w P9k= +sebastiankippe.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pHlg7f08QpfvJ/bC3LHKcCEuDErse63ul0kFySu1LGUdW7g7QMG0/8L6 jV976Dz6hCdnYcFOqRwxRKGlnuy7pRYca+EgEB8kOITz/iRX5LNCNO71 V63UlQCWWkBlwDl1lrf4pFvMzuNpPofODg0QRoWCB4Zkw2J93jMEchFV pLg= +sebastiankippe.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:11:: +sebastiankippe.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 4CCB30371C21EAD3FAA25E8FC13FAC565FD7212E +sebastiankippe.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 A7FBFC0DAA906AFC71693B27CB427EDED2A50FD4 +sebastiankippe.friends.nlnetlabs.nl. 3600 IN NSEC willemtoorop.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +willemtoorop.friends.nlnetlabs.nl. 10200 IN A 213.154.224.243 +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ivgSU3GyiYLN3yNfDJtFpgH8+rT/8CCnJkRKAOEghEjKg4Se9piITwhW P/cdWYVlLZLO9dmBtl7VmwA7mFpWjg9s7WIxIz7vHMlM0KbDc4PUjHtf B7HKhsm8i0U/4RtI08LTwsJwXkV8qJv8tCDCv27Z1I4g4r3gdJPBI9i8 mOw= +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xUiPHtpL+DKaYeI/v0dmtrCvMJ8213r33hMCyUz+SZEKhBy3A3cb7aBE 8iutOqhehJ1CzvPYZCIBDeeifJp8TdHgkWzNkSiO08IBJLxk3nDwdvun p5a41f3PuFUHizFVjCouwur33mWV8KfJK6KVeDI9smyFssXrcUUmzB99 f6k= +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bmiTVTf5//rnVxDAM63dbAHtCHi0dZvsW7NWjbbV2Mt7+QGwWZeb43OL i0qZ2y7Xrb4+mDY1eLnagVlAVOvIsu2JAkleadOr6ddEdqZgyRzQY+g8 V9CkkPPxp0lp/ueR9fu4/0PrSeBFRVmaJQOkGUpBTWYwOaNFdBEqBX38 ieo= +willemtoorop.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. vP1GQ0OtOfRdeTukC8dmJe4iI53O/q18A+nU8wy4gi7AG2FXGF1tlSAZ kOO+f42F8qbYkEDquRVxrSH2ic2TNDMPVn0kjoOG7Ys3vEsahsGmpXk5 UJcXOkLq+GBCCXHjHeaPJXc3KVC8aniaQMSbjR22Ysdr7Q9TDTqJrUsd 45A= +willemtoorop.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:8:: +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 E19C781CF4239B0E9EBBF9391AB805E1D29E7F10 +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 1F0BE2F173A3287201549251B176C23047FFCDD6 +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 4E2DDCE23B238E1E65951DFC5EC0B1E88970AFBB +willemtoorop.friends.nlnetlabs.nl. 3600 IN NSEC gary.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +gary.nlnetlabs.nl. 10200 IN A 213.154.224.58 +gary.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MEtaHnXMFqFJgkaZ38QgRl6s65F8ci37vkiOKwE9eCOfPbTZdFOGD/G3 OMlLV2xY59jGLpkKJCw8488KRoDHYAzN1YdjyniKkYNZIFhBNZQsnM7Y uOO0mtIaUYHnCHQNJgU0xmYaq8KNwFpIll8r+lARd8CNbuRVK/noou5G p4k= +gary.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YXPBa77gG/lIeqOFrFWvxjU2VvREE9Cv7xBNTOAf/9Sc+cQjuEVTMRw+ uTcjM7ynLySHQPUJkARUFJrw0MPLR51K5CbG704uSmvTGP89a+QIz8RF 8roXUCfzvH1w7fG4W7uZHm4XPbOrvfFsB+3eM76BxzeBkBcgMrk4xmqZ 8T0= +gary.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. r/CEzbcYyZJcHHBUPdtFlZumokYlZ0jOXjJVYzrC9wGbdSKz5hHn1NoR wUlYj+cC9xVbrN909l9DTk/eXKnWxkWtI+RU0BMGLHtvtmwtDktwy+pV 4iGbdbHAia9ZXBKv/sU064jpHPrv5E9Mx1UgDXRX+4yfuCsNLcy6ynIR Pmo= +gary.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. o38m4GvSc9Kpqe7AB+6aRrbfLtryYvmRBuwSeEN7aKELE28ID4mL7LYc 1GJMhGCXrA65qi1AuEEOgZegd5xAt6fGH7OIMvsdZaitj/5mlq4jnd0g 763XCM0HorTnMefwhRqZ0IdB1S49ZkKK9M39hIBah6cBQ7k904v0oj3d Tcg= +gary.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:216:76ff:feb8:1853 +gary.nlnetlabs.nl. 10200 IN SSHFP 1 1 ED3C7439869AD75F0EC2BD4B4509865E5E1E4288 +gary.nlnetlabs.nl. 10200 IN SSHFP 2 1 941AFEC19E19564A8D146AF0ED61232850D783CB +gary.nlnetlabs.nl. 3600 IN NSEC git.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +git.nlnetlabs.nl. 10200 IN CNAME gitlab.nlnetlabs.nl. +git.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. swiYOOw++hltWrFALlxZdzoxJyATKfbjSqKq5/VcIsZnj6l7KB04u2Qg 8ECkOx4ExvUDwBhMUVjP2z0zSM6e1oZUIOZDKigphCIVAhYKQNCz6PMS JkcVI7/vA3N2kPNVUIK4tRawI4531nM8WTqAIdkCNviHUT4/N2HG8BCE lWg= +git.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Tttnw4mJSCzEGZA5u34Z3Us1+jwbjYYuURaQC4ZB8FW9Pg9mF3tMTkJR f16DyF5l1VIh2bXa9j4pQ1BMdQdO4mH3LdcMPJP5wp48joQHMsAaCkUr pIogvDFeJvpMLy6hn2/bqeu3g5x8YiEuct8Ekx6H/o8+7YGKKAVnmq1m YY0= +git.nlnetlabs.nl. 3600 IN NSEC _443._tcp.git.nlnetlabs.nl. CNAME RRSIG NSEC +_443._tcp.git.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.git.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fH+9kn3zc1Rp+wMVCz/pmBKj37ZbhlFLRbOv4aX35MmmMwaaej8F0J7P zB1z2SeyXlHiEus1g0yE6uJ7R4JujR3QcbOwBk4FQKtORvRqyH5YEz+f oW9BTmvCoeHZ33GLkz6CjYruTMqlGPGaqJnL2UzsIUZOKBKgw89R6sHH Kpw= +_443._tcp.git.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ch66mid8On8HPi6hadZkDQ7v0f2HnRuywzA9SoeOW4W08+fbSZjigJbN +2bZJDF+B0NXVjgZI7AmXDkOiHPTsCjxkEzr4lp8LBZj6chYWUW1yn62 QXgTpJZdbpYkKLQenEtnOHOwEWuslVfzvk9BuxTi/RuomN8p2QTo5trh I8Y= +_443._tcp.git.nlnetlabs.nl. 3600 IN NSEC gitlab.nlnetlabs.nl. CNAME RRSIG NSEC +gitlab.nlnetlabs.nl. 10200 IN A 213.154.224.137 +gitlab.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pa41m6rS2eb4SmTuMNhVzDuWSE4lyh7yTT9/FEEZt2eRaHyM91jBkzH3 ltWapC9f4VZX38LGIva6Sh5anrOA6rvh6ghJ+NWZHE8101jjuPGl3anu hQR+7VmLWEpBMwEJK1WcTKaRtpvuL+NI7rncF3mXADgHgG47MSsaiQy3 eK4= +gitlab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dNNEBA9wUI7GusQel/pK8L/x2D5hCdAff4DkIJJWru4zGJE6s/cx1Dyq wCyePW1dNRnBvAOjnZO6ya9cFHqIMVhwlA9vbdF3qfH+l4MIHNiOMv3n W1EkCujxTrhTVRR/0+Y+FvH8r6EOEjbjnQ+2k9Wbo9JAbvaakSqiuXdd 9PQ= +gitlab.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YkoQZqzR6CfQTkXGBYCf15tY5RwH3qgPnx8TxixA4/xUW/UocnfGvqKz Md8cpc964Imx/p5lOrMeVzZbWAeZMP5czF7pZE4IEa2Q78v57CckShzP pXFS5PO2/ddbNkLz4dFkA/d/BiSMTNv+BrxuuV9mub/YRmUVuSkpzQ+o Uk0= +gitlab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. iTVRm01J/Oa5m97CXeEmKhqzEcpbuM9y3369kN9KrofjHNlnYFFsB0BV 6c1ywfp00h+pxSMybs3vv1RDPb/DSThHm6WIJRRhwdLxHjeOSWKrFlcm bR4vuX3qhTVSlZ7ir8ixZD+LRKTfWQJaEeQvVo87MNZSXFdLjcpfr2Q0 xoE= +gitlab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:17:: +gitlab.nlnetlabs.nl. 10200 IN SSHFP 1 1 CA58E26C1F97DFB9F98264A02306DCDBB9C4E7AF +gitlab.nlnetlabs.nl. 10200 IN SSHFP 2 1 F4A1BEFC4CDAF0056CAD2BF7E86444FD7090FA2E +gitlab.nlnetlabs.nl. 10200 IN SSHFP 3 1 ADC8B9E5B9C0D9DE26DF01AAB16B6CEACF18BEAA +gitlab.nlnetlabs.nl. 3600 IN NSEC _443._tcp.gitlab.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +_443._tcp.gitlab.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.gitlab.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FuNI5GU7dHTGJ/P9tzyFfO+5J/iywPwJjYRgrAAjRhsVoWZTrJZw6Sdb kUAiyUnYODT/7HNjUz8A3VpVCv2XZpVOGoHmC/gFSMFVnc2MYr99BZfX 5MmOiTS7FU3rJpkp8Tc9OBtphbCp7r2BBpKxKv9UZx/lUCJl+vnhwQzH mb0= +_443._tcp.gitlab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FmLxmn4RYUAgEFWm77KCG54b2MOXb73/ZAFNB9fmmaZKoSzdFQVOCvvi Jer5k4x9wR8hsSB9AwvLDOg6GCi7xHnoeAAcWN2eOMBDLR55WbciPqST 5+2xhGhxByeFLBpoX/Nmbsido2/99kLfT91CNq1uQZeuE/1cXBr60dk1 3as= +_443._tcp.gitlab.nlnetlabs.nl. 3600 IN NSEC gitlab-ci.nlnetlabs.nl. CNAME RRSIG NSEC +gitlab-ci.nlnetlabs.nl. 10200 IN CNAME gitlab.nlnetlabs.nl. +gitlab-ci.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kxHpqkdFCof4doD2L846h+yMzGh4BNJi+ViJABALzr1vGhy4aUA1BJkV 6qZQlg9bCFO21IdcqtAJ2zSaDcTSAlWHEBVg/5AjL46HDC5pv8nTMMJm /mzBLYjjBkMLRf/ZuXgIf79GOCgMQ/Al4aaLc2WFr1IOFowBR15byy71 hGE= +gitlab-ci.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. bo2WtnH1Vzl9Od7qH5aHeYe3OpyLKvqH5SOGmHSs6d4SZLMXdMCm2i6D mz6F4Aq1zFyjsyqPur4vPcodiVEEb0IpubuljzdgUwjbp7izEqJOawQ7 6lQBUpM1/fbscrUT/ElKdA0vEm+6bp4+0RA/xRmrhSIpi+k8y2SniUXA V20= +gitlab-ci.nlnetlabs.nl. 3600 IN NSEC _443._tcp.gitlab-ci.nlnetlabs.nl. CNAME RRSIG NSEC +_443._tcp.gitlab-ci.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.gitlab-ci.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. tRzF+/ZfwETaP9JIW+BjqQA6h3DtsvbmLCwz+F0HqIloQNesUZUf25MP 0iEydoA7APFOzr8fdgKkmHFEl3thBX/x4pPNwckPX0KsZssXTeapJkxJ htAbSmWC63YR+TskB8eyrK6Qid+ujRVbaGldEDzAwRgW0iPfJ0pVkrpM 3J4= +_443._tcp.gitlab-ci.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uhJsgXVPXMf28/ID6biDWL+PYsIYGH7Zo9ac4t4hvIK7onAsCUnKUqNP kshwXkePGSabH3g5rQbs1KdqEQO9pgqbXfBtRxNCnDvL8mDC09K9ViDX 7pFek8RRaFQbh9jpQLDQ3/PUxbzIBxRrA+lPICvLZAigM8cDyXutzwNU RGU= +_443._tcp.gitlab-ci.nlnetlabs.nl. 3600 IN NSEC gloom.nlnetlabs.nl. CNAME RRSIG NSEC +gloom.nlnetlabs.nl. 10200 IN A 213.154.224.40 +gloom.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ckealkcASa2/4uY/Cb0rPPtp1P9PC9OqbrDYh0xfvUQx9uAp+mxZIQtj 7rGVrXYpCBR/NF+WTeoMp8AwPmBCqMMjMQ67FDvU/gXzE9GmtPj48aRS Ki8Z/260vx39yaE5PmibypHSIQUHK70Tjh40I+kAYKBYWcCXS5PkqN7n eq8= +gloom.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rnpo0U5Rbx4dHv2CZZhy0iD+JApmABDgP6NEnoKHX7EzANfymW/gs+DJ SYjHtq3cvX9RKuB3gSnzyq7+CtjPk7pHHM6SIqpZRZ61OhwWzPz+IwzJ pzC6YY+vzHpbRm2ijaq36AzreHoPpEHoczVs3hjylsssgc8DwbIq7wDd biE= +gloom.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. uOtA8zsOxkBiiI/un22zphEnR0kCdbL+HbX8+Lz4N44cIbFq7FQGFPY1 mpMLew5776zshImj4qG7kek6j9xGqlRMUaYOEm7zMeaMV+hX/bQumZA7 HsCrX5cENd4T4AMxu87IWNDM2wKiUM3I1XhjVQ+A2GpeR/VrifncBuR7 9Wo= +gloom.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. nuCwYoVrG7b8KmKsIR1mlHEEtkToFqnYIp6jiGslmy01FXjZ9PziwVzj Ezms5Joc7aTGyYcAR8nH99W3zmsRtTh8BvvleysbBqpV5L5Xc3iTREt3 Z3iE9tC7angqCNACbTxPA1V6+Y+Omay1pgMl0OIvFnqiUqYyj2Ka/W3O nPk= +gloom.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe05:2e3e +gloom.nlnetlabs.nl. 10200 IN SSHFP 1 1 55D8297F7C8015C4661182EE82287C3AB94D2107 +gloom.nlnetlabs.nl. 3600 IN NSEC gorilla.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +gorilla.nlnetlabs.nl. 10200 IN A 213.154.224.60 +gorilla.nlnetlabs.nl. 10200 IN NS gorilla.nlnetlabs.nl. +gorilla.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::60 +gorilla.nlnetlabs.nl. 3600 IN NSEC hathi.nlnetlabs.nl. NS RRSIG NSEC +gorilla.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. CYIq5ObldvL47XJEkG9/YefvzpA1U66nJpT+4+L/mz3lqoFj4yq27H2b 5PfovOkrA1ULGMAd0RR4hsjxfrH1NhJhTkNa24a0rZaobbKZ6UlFf8ix CKH67O/ujc+oYobmy3oKRqP1Q9HYUAEolMkbdifc1D54YDe5r7BRm8fq yHk= +hathi.nlnetlabs.nl. 10200 IN A 213.154.224.108 +hathi.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. E03rEDOsEE9npv563mVQmzIcFsoAwxx/77haa1eB8gAB3R3DuBcSA8tQ z7f/nxcSYftEs1h3ApUUJxKRzckT+b0+b9PI0FFqdvbxOSbmK6sX9YLg 8paKDmpEDpIpz+YxTHvZeT4m37RIzHxZ6tzCX6FAFhhNvE0l2Bt+P4Eg 1bs= +hathi.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xg0rSjLcQO4hN1ijdgedAa1+zi6iUVp9vblb8gcKgjw5BG9C+LVjkbyA qFchgX15niuuESMSDsz4xJfA6H/82oP7B4DV2pM7twe1XcZLMLvpYW6/ Llr5A5/Vu0HgQu7fhQQO60ZBF9VtR9AIX79FqyJsjzFsnmj7O3Oz/UH2 F+Y= +hathi.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. R2ckF8in1z3Hld9Fc70Y/Dz0JuLtDSgCNSx19t5KTNpU61qzbhbLy72E c9TR77e2rBFS0W44Yw1tarsDQ5GUEEZaBWCR2PInP/3WUxRwkmslBPqI AMHNDCldl0vdGzRJsH1rmrGDffwbp6XBpEPOhMvPIiv7mXRUYKnMFczu SJo= +hathi.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. REXIVrwMJH4oe0X1qGAYT4v6MsKX04oj5hVb7iquU2FFPB3zSC8cFlnu pdhnz3IMAUgB/zsIhVIJCQeNejsX2DvrRvPzE6ae0+QU0dY0FiV37cqJ AFYi7KrPwqym9EZf5YAKK8sVxy5ZcSq833g0mG62eIvT41cV6sSTb5nW 2GQ= +hathi.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:211:43ff:fedd:6238 +hathi.nlnetlabs.nl. 10200 IN SSHFP 1 1 957658025F4A10217CC50CAD487E7D08C3897F28 +hathi.nlnetlabs.nl. 10200 IN SSHFP 2 1 A4BCB1F8909C7A9F93AFAD1048F96DA9279F1F60 +hathi.nlnetlabs.nl. 3600 IN NSEC hotspot.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +hotspot.nlnetlabs.nl. 10200 IN CNAME fluffy.nlnetlabs.nl. +hotspot.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O/UnQ26YRzZxbWzkyVaYwpmHqx9Bh4vURc6KMoiCuF2bLQcbI+CqMw4t rnGSo7T4V75f2eUYjhtDlzRoT20F7OjuaBQYzmqCATBiwAu5la7hNQQN DgArrVUeKK6QdGpt55AfMFVSEahImmR4TbeEtbfsjHhneoR1vBWEX1QP iMg= +hotspot.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m5B3ERHY8DuowU9ToHiH6RS2xS2Yg8Q4dfjOFxEBw4oeEV1bVnD0gx3p ouPseLgS93vmUPhDS0ZIOqjq0pdabZriqSjgg/r5W5r1eNyceBpLrwkV c/bnmh7tCW+7bOFFQaxeWeXvyKxCNeLzNWSoE2gibSWCnhk+Td0+Zaqd wL4= +hotspot.nlnetlabs.nl. 3600 IN NSEC hp2055dn.nlnetlabs.nl. CNAME RRSIG NSEC +hp2055dn.nlnetlabs.nl. 10200 IN A 213.154.224.36 +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lgC7hVyYrL1pxGEDdtAuAUI/SgEuQcd3DlWGddq1n//vXrCj2w8vikNQ PzlNb6EO1rJ7Lyv33htWVmzwpFJP7U0pPDYzqwpmXa8AHLIOVCoNEF4T U9d1lVn57V1LmUP7D1KO9fbPybYPxRktfktjt0ibCUONZn948gb+ocuV uEo= +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG TXT 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pw/3BEd8Nju/cCHnFWkGRyYK/apwljCPKGxpjqhoB8XSyOZG17qthayF cne9z8hYyPAVIfd0eNdzIngz/HVcPLHOoSaPWx/EoVPsRigrbdlN32mQ HqJaB3eQhJKbg/JU9P3Eh171pcmoi81KXOMVnJMm+yPYaHYCLCFwuWwy WV4= +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QiLcivyNM6/U8J07o0qKZLFtqeWfdsU8K6pA0HHZj3cL9ew2RmVvG3q+ ZdgJ6tqY+QV56+GwWG9XdF9wSQ0ADUxZqFHDzpzZ2mfidvHsswy57bHU +MV7wLd/wZWYGYMCZsL9d/Kw6MrR0ztgmLM8JEJy7DKlS7uqRskw9aDh wGU= +hp2055dn.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ohhGGK5qyJlsO/GkLMBbP8RoCZUc8x9yY03lft4ftWPR7LefS4QPKqkP 7mPj8XbXQY5jJi0wYyk1LlrlYo2slyFu6dvXBFQBgtBDYOu+8VtjW8bA HfZV9daU9qHhvd/3bi6Me8WnGznE4Tumufjc4O5RdfDk2xwylraXqAX3 8Go= +hp2055dn.nlnetlabs.nl. 10200 IN TXT "HP LaserJet P2055dn" +hp2055dn.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:1ec1:deff:fe81:fe6f +hp2055dn.nlnetlabs.nl. 3600 IN NSEC iab.nlnetlabs.nl. A TXT AAAA RRSIG NSEC +iab.nlnetlabs.nl. 10200 IN A 213.154.224.1 +iab.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BTo205W5Gfvg1lCwDZ09Qieiu6SQwvZvRL/u9h/YK4ElQt/qTO7TN8Xv jb9T3RexQkYNv4JXjk95U6wDP+6Ikc/AHHOnbcMo3b63dqD55QRgQIoj Uz+rppSCvO++RxRi8nHrqAhXs+afFXNxDx49iX56CRZMd3VISGieiySx 72E= +iab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lZ/3JvqEDId+x4xl/SugHQhBHuhSXP/xaqcNyWqjlzvzCokeIfns9LfQ ShpC7wWAF7BB68ZDeWSwoV5+88GRSThW9G+kKu1XY2+JV/6aqYshsRvK l9OH/Rew2WJAqtFWGI/zXMTM7mIUvbqOJgSfC/m9On47RhWoD0Vv2isU 5SY= +iab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SPo4uJtGRChrT1UUuZkMcXqyYGIpHLhuXAHUCA+hTNogRNWGWKuDRVNO 0kZdxizNHEA3LQFnerFCHbSqTHEFwA1KstX56yiPe3W/ucXOJ4zxwMlT KIhHIEsViz87JxRQhtsFQ1VPWcFSFJsdmwq6U/C2V+XcvzlQkKYUfLuJ JsA= +iab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +iab.nlnetlabs.nl. 3600 IN NSEC www.iab.nlnetlabs.nl. A AAAA RRSIG NSEC +www.iab.nlnetlabs.nl. 10200 IN A 213.154.224.1 +www.iab.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wel3ncwoAoksRV+1EIl3EzeOdqT4t7C/x3Ms7JLMHV5bBQkzxA2FqogM 1JL1gCErMY9xHPcUu1HIYAOxDHmekbpfzCjm91wErVfh62BZk+g1/45k /ZRsM7glqoeCTO/wbwu+StbER767hhCeaVHSfVfz1w80HcdddJzTsFWr fAE= +www.iab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QMjp8EFyZWk6eas+S1xeEM/sGJTCo4OFL5KVbtE98tGzpDapIQRqSewl LdJykOdkmcgOt7iqaS/iUX32uqUQwSsci5ttX5SDTlFjQ1iYKQJSMrJS lRToKjeKxXCsgtALOFTvDyhAzn7hvEYqrmudbc02JXhNU4zZLIcvJtDm zh0= +www.iab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IbFf7uBYAtwBeV14uul32DjA/e41th2SjC87VCR5qMX8SWjTxLE66GOJ un5IclIc0HbAKrJHs73xdO/wcM8N1AX9OijHQP2ppleMAgFQFQsQJlT4 F0DkXl8an/RFvzXs1NTVaBjO80DMc9DRn4iMbGmpocbaYOnuvkihl8RU wuc= +www.iab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +www.iab.nlnetlabs.nl. 3600 IN NSEC iana.nlnetlabs.nl. A AAAA RRSIG NSEC +iana.nlnetlabs.nl. 10200 IN A 213.154.224.128 +iana.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YkC0WJe4B/xXgIEFOzG/Sk9d/VMdJtINRydDMVpcQ5X2WI5QcA3cCni2 aSHskra4BSJPSnSWPI8VBQ8eEDgdFsSDmU0loOn5dJUKygqZab763ddt 7oTAKmoO9ePji9SFwld/eAN51cy8AccuhtM3QaUmhUuc2wDTCOrnvlgY CA0= +iana.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vCrwHK09WsV+iIVXjWms5ZjCxOHkN1yXvuU0cu5TmvQ7c0dxujXg6xQz /OxJsr9dYPqiMaRz8qTf4OLz3iCYssYFdhBp42d/+jizjpv3qsRdGEpr vKsPQ9+FRnijSGobzaybjSfJN6mV9EcS0JKS2dX/yhpDTIwzqYAsj+hJ cNk= +iana.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wcexRUPWxtotqk5o9wAFJlrnYHohV8k/BpNyEJub8ssImb2jikt8Ycr/ f7wOZsz06cFHKNvFk/vLzfOQ8wSVBfIo8PTXNfrA00AtFSaQBde+XSCs q695RcycvDlUIiHoNhz+envOQokpXV6smdwA/KId8IONwQx6glhKOGzA Pfs= +iana.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yq/QUSAvrum9G6b5pm2GSteOVweCYGU0kMn1XMbPQpzIPdX0JWj94mvz EItfp5v1JL2ysqspILRHxD3v8nptcSXohaRuwIit4BBlwlEoN9Yunk1t BZ6QhajdKhLl5b+PSE1VnfFtH+MbZiEagRQ/9xip2eg9NvFMgEPWYcym FcM= +iana.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::128 +iana.nlnetlabs.nl. 10200 IN SSHFP 1 1 91DB62C36C051F0E6414FA1F5BF9678E6C554DBF +iana.nlnetlabs.nl. 10200 IN SSHFP 2 1 138764C92D6A727F6EAD120826333A43788217E4 +iana.nlnetlabs.nl. 3600 IN NSEC ical.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +ical.nlnetlabs.nl. 10200 IN A 213.154.224.30 +ical.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XdkBjD6i1wdgkljpJPiCwOTZCQwlIxb43bqscRLKHO+aoBUTXt95txhe sRwifHyn/gJZcEtjGu/tc2CZl1bcDBhWxwJWrr3vXJ8Onf4+uj6QxtMT vsEtID7ChM8fUlRIZa+15Jj2gveij3GhFF5XND/ALvmtmSGDBQ6vZvFq +zA= +ical.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. n4DvOPdeTeMeiE8llV02X/d+CnR5SF+C+hquNI5KmIEG869IGc2lA6f/ OL9kavuwheEWf+ERByKpc0oXV3nbKtCsIuggzEX66NzwnSW+38uLqKKJ /zCE8ugqkTGNZWG4HZkkdxoZuYN8fSh47Nm/Wf4MqkUUBgWIJrHX2TNz B9M= +ical.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g0ipW4Xqb13T3vvHA0oxaoo/vQ2VIQ+SFb6xbwu6ICi/qbBfZtn0KBVq N4NDJ9NuIN0o59RI1455M4OVj8BtlOhldyP9fedzQGd8BZXlZtLQ7XTg 9/2RsWTdYiLH+xgDCrmlaujgw51csWVN+SrT24zBnX/EGAqLSPSxl7/E Zn4= +ical.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21e:52ff:fef3:9000 +ical.nlnetlabs.nl. 3600 IN NSEC iii.nlnetlabs.nl. A AAAA RRSIG NSEC +iii.nlnetlabs.nl. 10200 IN A 213.154.224.144 +iii.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mkZAUMIT8JXS+fnRWgT99Tl/fiyGsUMlPr8x2c9BVb3k6vaSqYSTrSnL NTK8yJXgAXgB2yHu3E39LfpMl3X/LM8rDbPHLAyL52CyBB1RBCv5jB14 WCwWnnRXd34g0GK35EJRfjYPZeaaR23UaiR1eWZw7XbJeAMLKQ+neTfl DQo= +iii.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WZ5ctUNO6s9z+IcP1W0rcMYc78S8hCGj2j/hO1QtKQx+ZXwcV6Y1NVud j12m97fEOUCzL4Q0l3/7c1tD9nUHjpuJHYIAdWIqsHviYFSGIFZj3npn rfNBNzwOXNygRiJNPRtlu6cr4W4PqYRZAn2HxSnvlJuzEN/+wIgXgduL xU0= +iii.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HlflHHQLd7NYxBNL68cXiIeAFzYmjFTRf2zABQLcSqh6pes1v7Vs30nH v9TgUGCk37b7m6VBk+ELWs9clcXxwVbzVW4QjO1NGp6VU/Y96GheyR1j yrhGRLLbqg58uAfx28w/+Nlo3Il3gzsTwe1eFUe/IzY4u7nLtV1RH9Kk w/4= +iii.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Qc7C4qq+45/A7MaAEkoPi2655cWhOu9PLDDwiK/U9tW1Vsi5090kNlnh yxEHfIlO0tdrl1Nj9+uUwKq4z+Su6BpJEwl2S0cr1zI9WvbZK3y+yDO1 fNN0nHfAEhV+WteCQG94akGEdWqDPy7RnpSiRMbbtOW4Oi90GOqjuG6f egw= +iii.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:26:: +iii.nlnetlabs.nl. 10200 IN SSHFP 1 1 F378328FC941C9113DB75669A5A42F6C3CF577D3 +iii.nlnetlabs.nl. 10200 IN SSHFP 2 1 9B85990B00B395A4DF5E5FA0E29E262BDDD7A148 +iii.nlnetlabs.nl. 10200 IN SSHFP 3 1 512D31550546D1DB31D6467D4E67D87207939981 +iii.nlnetlabs.nl. 3600 IN NSEC _443._tcp.iii.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +_443._tcp.iii.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.iii.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CBXy6lf3RNxWLw05xSuwH+qAhM/ljWaqIXzkhwh7kwy/3/YQjVktGnmX MP9IaCN+ichYPMFwOcKZs8EVXNldOfhKl/a5aXtDxSHe1XHsJ+KmeQLz U/IIINbjiQ5nkIPblQRr86xQ/U/8JSozoDucApW1lD8UTFNzg0zdUnrj d6M= +_443._tcp.iii.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. NMz6NaQLl8Vkv55/uWur22I5xkdtr0BlAUzBbMraGMiWKkh1gQORnoo+ IAVWU3Mf/v8WAsc8yfLUPyQ4h4m2OcT6c2Mn3jhcPHHDhRN56sBLTnXd hCVqEj47+92CJWucTetzMHJTic76hgDNCjCvJ9Fs7dy+HaCNjEtdnfZD YV8= +_443._tcp.iii.nlnetlabs.nl. 3600 IN NSEC imap.nlnetlabs.nl. CNAME RRSIG NSEC +imap.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +imap.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. miBfNrT/n007ntwnCxkSp0LOcEkpoo5UzvE24TTSxWsZxR0cEqq1s6n4 2kMcejkDqMc/wy6mjqZLF3g16X8bfh/lQKLlaThkcZ5/L67ChH6oOzzx /HbB3kidoWWXZ2CdBhoLuMiby/h378mkNYbmbl1cxJuw/NPllIGm/jbm +9M= +imap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. XEnQ8aWyRJws1e8GlT8ZC7dOjf5voX2mebZs/dheGgKxT5ZB0NsBMDOz hQlYiG8Ua1H2a2kEZQgX4nYJQcRmykjGdD7ILBsfJ7zzLQO64KnWKv90 Ae5NGKpDSAVOI10LgVzsn9q375Q2A3VeoXwE+1qYIUxpZjTQ1dY4KtmK FXI= +imap.nlnetlabs.nl. 3600 IN NSEC _993._tcp.imap.nlnetlabs.nl. CNAME RRSIG NSEC +_993._tcp.imap.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_993._tcp.imap.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iTV6ltPPp7sVmnp5U++3RqIANVsG8fd47sEFCuWdDQgIAvniiCdDw9T6 v3ThwlY+WlzdVWm1sG/9DU+XXFqldgqFQrl45k5ZfuPlcoNL/UIePJHX gT5+NC+74WwIq0y1NeyUBPzVkEujHLTEE3SdIc9DqrOyywdS8ui4LFu2 8Ks= +_993._tcp.imap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. aThyH+AwPVYRr2wH+oxa5WK96Gyu3bY+uThi78u4/YdJ1oL/EOQ9oY4D i4v12STGrrY00TTXbZ5Lx39SutKuTiKIWIOBvM7RfL4W6sXxFg8gNTT+ W1Yg5n/z0AWrim2895goZCV6NaWxZ8Vc/4jOup6lKDoa1syjaY69Q/PI 00w= +_993._tcp.imap.nlnetlabs.nl. 3600 IN NSEC ipdns.nlnetlabs.nl. CNAME RRSIG NSEC +ipdns.nlnetlabs.nl. 10200 IN NS mermaid.nlnetlabs.nl. +ipdns.nlnetlabs.nl. 3600 IN NSEC _5222._tcp.jabber.nlnetlabs.nl. NS RRSIG NSEC +ipdns.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Qy9KC5vj99BYveAvbmo1McOMsTMNbFnZBKm1tvQg79/HV5mjS0d09qD0 m5Aj03Zb6SVkVLIFPvOgzshQ+MZWEMjYW7yIx/DsE83TvqJQeu/uvLhs TCADyXAI9b4fETwChwvVZ/YTgW4vYCzyXChC5/RJoigTRNmYHAwLrbQK Nzk= +_5222._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_5222._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nttSaagT9bxm4ZF5TLctCjVY52RQlENf2SFrjT25maN33x2jfUTBAYgq jWLJQ/gV6Uw+mfJfLZQykFUeO9JOrwjBUagYcAa85Vcw/gmjNWW0YiQj GwAGeQhuSH+VAUdb37Di0/6JXtaqFgPj2OR0RvirfB16O+OYNep+YuZY DoQ= +_5222._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. QsRz4CB+nT6PwsMNuaa9YlwGepp1mBgdQejdIXIiDAYas69EJzjmF9dI zCbMg2xjtCj0D+NFAdgXNlcVOHEs0a/aSBcmPBV5NJYUGfEFMejg4oZn t1pofh/dmF+Pr5y2sQiDWyJ90TTWLtEwGibZAEdCGZAWx4/tbakd675f f4s= +_5222._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5223._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +_5223._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_5223._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fc2JSnY06vJSW+6i/bFNCNe+VrDQFwp5BLEywlaNxE3EBWusjcvTUjW2 6DQ2dfZN7R3cb21Vg6BUi26tcVf6NJTzAan04P+0t4EdfyAMQlE92qYM eISSyFtuYgZm3MIlVG7HR9Jy0XOgsZkqQScNP9uJTFJeji2yMZZytNBd ejE= +_5223._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IzTaEvt3f6jAbM8nqHXsYHSpHsHkm9xyhlVHJKOfyRh+HOtgrQuQxGJ/ ByJ4jUofrGodjDp7N2tA8hs27wMhXaYPTPgtbUQ2NriWq6waEwcaP+T4 hCpXwY6H5ZAhevMWERUdM2Jov8bx2u1EEDdjengdvD1rTzZEoOe8b5Hw Y04= +_5223._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5269._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +_5269._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_5269._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. N/fwXMT/lgHGhNUo55DgWDukImBHDxdqBKCatRrSUagAlm1QyS2YCmYv xjINNCPnqGI/n9Pkmo6cKlr2h4PS52BpaLurwMbQtqqBuUAu0XQbjRSV cto/6LKv7VYXKy564HPEpCrtVIF8UJiSCBk+Euat9v1E4VZBf4kpgcEq Dss= +_5269._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. r8YxETSCf9pBlBtdT8C0lTugl75dlJUP3LOzzVeBMBIIUX5dc7Gu6O1Q BV8O1GNOHG3iSMXuBeUq8PGDP+QZavAlTPUHGeH/m2JzTtCC9FCA59b8 8xU1I/wR85PXaPwIvmc6BRv9WFefY05SDt8qNVq97YuGnEOi8kKFhJG6 oV0= +_5269._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5270._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +_5270._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_5270._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VDLXaWrtvBxvMt3SMrEpAch5ZuyM5FRjtnuz0NRV2dy2p7wxpOvgF6Eu 78Xkif4SAuP2y/tbNs5lYYCWK2XlliZVMvAMZ46yp5zUsYHjEHgeJS3q XNYfxsIS5Df6mApE9Jg/YrZ7tYcLo+zN2s54cmyOGbn97Ec1QOXfMryT JoQ= +_5270._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VM17U76vZmHlgItXmbILQ8EBW10jlL7NwBTAinNIotzSecq8DcxQxj1+ pCSz3VNjYZgvWxHKCf3s1+eqI7VPFS0ERgrZEPOxz4opeMKQj0PJkuT/ oAfChkvyDXHQnsM+mnXGhTdCd00F/Lx20k9GhS/u3kLXV2ytAprTM7OT a4M= +_5270._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC kameel.nlnetlabs.nl. CNAME RRSIG NSEC +kameel.nlnetlabs.nl. 10200 IN A 213.154.224.143 +kameel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m23LW2cvE8kgsjtNGTFmGI0FP2aaooLumlkKb0m/XEHoQahJuiM7Q6jt lvtkeTQJw5L4QMXPG5u58fomfNMd/Z4Ql9jcoYblNeiCN4nhunBdAdKS xtjxSOuXhXCMQ654TjvK4DD8PkFn/98zBQXrf0fw5cncRLIQ/v4cJtKo X1E= +kameel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a4f/gUK0OORTuzSaqixp+2hEZKGsSna+WQN1t+0x2i2hj0sZ4ND4H4lY yhum9+iywI+ETfNsallmctl4t29JdyBNio4U/XtO4NxrKOH7aGpQhS4D h6IILJc3uSEHj8dkAZ5f3r5pIfmzdy997voHErlBJZccpNdMxMEB7IFB Klg= +kameel.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O3KP5qc1prXKlgI/BvrhfQxMM906rOZso8mJP67toO+Tlw7T6uPAL0ml zSHZGCGSGUKBVlCfRakhs/RZE5e0uAgpcuNpuIKZwgWA2gs51vJcw3bx iFdQibN6RYawACI7KhZzbdVveCExy4kHILJiAg/Utuf8xhOXQCh+qy+A KrQ= +kameel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m9cYOW2Hz1kJ8cKO7RWFHH3FfTsxxjLmqUEOMv2JlugIKz54LfeSHehh Y3MRKI2Q07TulyuPWmusSIGN/X4SVoz1aC9QhXqPpcA+awZgNloUr/TO 7s0xhAx9IsWutrs2kZd5KhY3xI+yrfq9RLonW4DVYE0Us9cjYasftFCW wYg= +kameel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:25:: +kameel.nlnetlabs.nl. 10200 IN SSHFP 1 1 A5322E0D8C10AD454A33C132FA158EFCBE9F2C49 +kameel.nlnetlabs.nl. 10200 IN SSHFP 2 1 7D2CBE4FCEE2724816E33311313EE64410D1A6E2 +kameel.nlnetlabs.nl. 10200 IN SSHFP 3 1 0F3CD2F5583C838A02EA88DA659F57C9A5C6CE34 +kameel.nlnetlabs.nl. 3600 IN NSEC kern.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +kern.nlnetlabs.nl. 10200 IN A 213.154.224.30 +kern.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wK4k+3UlJCqeG2NUd3wNPFLfIsvUdDm93ZCZwJcO+0y5X9+dnwTeBs1T bC641sbvX1rSK44wnQ8FphFgoAyBRaxr0z71/3gP0GLUzmmInK1pbTRP Fmt6M9CuPqJ5wEtwJJO8hfy0j645+EXWUNInpdT7xu8a2b6XTPVNDS/9 KIM= +kern.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HIHufbp0DeLsp6DdeFo93c0b513hQg9oM8ONbf/spQZAM/+IWccwRxFx Uz+v2T4Y1n9P7npN+uz2/2BvxAG30Q4QjkAZ7EGv5loCrg8E2/D1L6yv EO0Yecri9ThjbDYfQJ4QWKG/W0nY4yQnwQfOXkONtD1ZUG2o6bskcCXh mBc= +kern.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uhtSwJRi92J44aicDhTz6Y4yC2JZLe3o7K/mrlsM1oD3zlTh2FMZpceV 4mBO3bg8ChGL1gtEffrTKMMjqJhmcXy0fS9UKRelGHo9BMM8FoeLcJW3 hii/RKD5TF2LGbor21NUR8pBXnsL2szxN6i0SBnJawaPKjNT+Z250E/q QMs= +kern.nlnetlabs.nl. 10200 IN SSHFP 1 1 507A065F7173879238F947D09904D50F30F5E864 +kern.nlnetlabs.nl. 10200 IN SSHFP 2 1 85F482729396EEF58401030BFC128A5BE8225146 +kern.nlnetlabs.nl. 3600 IN NSEC kiwi.nlnetlabs.nl. A SSHFP RRSIG NSEC +kiwi.nlnetlabs.nl. 10200 IN A 213.154.224.26 +kiwi.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qAsBoSBgD5ObUOGG9Q6n7Lj6sql18bPoBrHu8B85yhXSTbG9jCVlMSuI D81r/0QZ8tDVMiLQSnlQKqlB5BjBNK3PgVkc9jtqQcCbC21Hg5ulb9h2 rQpe/lzPLBWKnYwBgAmY3/ERLwgmQ73RulnA6tDlRY9K6Obb2MORwNHh gdo= +kiwi.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fLutL67/JU8CO5j/AaMtcDOZBe93KUi40AySC6f+MxYfLTiR+ChzYVbB tTqCjz6JNXKDbyt8QrnTgg1nyDk9L1UkrlGWxknmxlZz/N4p+zDIpt/M 2dFY40WwJFGclHb0grpE/esgXCogGH8MgJwrM/QwaLfSbQ+lJ8KW+/s8 OpY= +kiwi.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ayjYPQCaGAxAMOF/yF4UGcNVFjTH8E30fpI8kKP2fK8y6X7PGj/vMdjd 4EMnl5Fl1ckmvDM6ID2c8RSIMvQ/BSOCnd+JfiPKK2ebJDStBQtyXXNL zBQtP+IOpapW92GsSELFptEKvAfTTooEUnQ+4GoYz904wdZyooyShKNi Gcc= +kiwi.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PvfCgismKsqpPHVjIK6CrC8CrsYRJ1JHIDSVI8o3B8ADlSfkfhhozam/ HRxX+6C9laKDfh4pBz7cN/elWRVaCBbJIuvxAzCajpQutVlQWW3LO5ac X7th62t0Mo43/U5ogvyVp+0XlR47luYBONz8ZoH6/hj0lId0Uh1eXFPw 5L8= +kiwi.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:204:23ff:fe5e:33e0 +kiwi.nlnetlabs.nl. 10200 IN SSHFP 1 1 BEA78730A01455690B08C58A05F401CB8C6AE160 +kiwi.nlnetlabs.nl. 10200 IN SSHFP 2 1 582E0A63857B1C98C62C1378C760FF821E98877D +kiwi.nlnetlabs.nl. 3600 IN NSEC labsap.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +labsap.nlnetlabs.nl. 10200 IN A 213.154.224.63 +labsap.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. w71kPEYNmBoP60QrdTTvw8eKGmsgLQ2uNAvwtfmiQ9oeWJukzwNA8amj krdtfAUys0tgJPyc6hMnkTi7d29Um+na3SYVSqwZ0HCGqhAsoUPOS8pi sYX1Gw38MwhbVjTcR/eLMFXMxmd/VQuMo/ofBSJPXoA8MCVFWrkGX2XV s+E= +labsap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Xcwy/RETAoiKQjs0qd5F4qHVkvfNoqWtoGNOrSgjvq5pqgMSL6p3fIQX 1MoAYaW2zHGvKifcp6ooCEeu0SNWEal1/1a4bPY8wvrp7LvaGaLfGXDR Es2/uem4uypWiUvOvmMJIiH0gqevwFoBde8pjK4ySPh3SiA/+H2+ZSzW tUQ= +labsap.nlnetlabs.nl. 3600 IN NSEC leviathan.nlnetlabs.nl. A RRSIG NSEC +leviathan.nlnetlabs.nl. 10200 IN A 213.154.224.21 +leviathan.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EZWvsQLLm/fV1dK+yR45BhP5inGkk43JzhdTp8jF8NMsFPPkJFNcSpf3 /v2oZogWOQhnR6gA81+bvf4lo1xUqy/RGwTEjQAWyuHBPUF/48xjCr2V 2HrjEiVkuAecvbivMdqcjNGsX3cDQ5dE7jJCXrnB8wfwF85Zcodo+3+Z rBM= +leviathan.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m7tpuw+tQ9Jf4b12x20p3mN2+AlYbOXiOPQdjU0pRRgv5u5TqLKO6TNV G7vQnxJGy03icn6HiElzQlIaxtf7D91z/DIxBQpe9sQhsqDqGUtguzNz W36q+AhvkV98Khl+Pjol1/2oKNbbByA+F1BNUnD6pg7UTLqILNU2CE05 lu0= +leviathan.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. vAFyjtEcOUP6pl//nPyxOWxWQRBagGv4GHmmLQap9KpmOTY06g7kfph7 Bj4+XSsgo1LVXZCv0wAT3yIYHSCXoQ8ics/fyc93EqjWJSYJXUbkEKs4 PhCkFbTFblh4UiBinYpKeFuthMf098ReyVF2AdeBVEl+600NuxMK1jrm nMo= +leviathan.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fed2:4db +leviathan.nlnetlabs.nl. 3600 IN NSEC localhost.nlnetlabs.nl. A AAAA RRSIG NSEC +localhost.nlnetlabs.nl. 10200 IN A 127.0.0.1 +localhost.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t5C1K6eIYaMjLNyL7AMEPz4nyOHI2PxVc6ZUjwaaQXedBGjN3XkoAmTU 8LA+OFTzXMbcVkTGs55iY2cKczj1yFg5Y8FRe16HyHJAmsls1/bE2XiX ejs/vjfbBhhjxnQx0jJG0FmDhD8FPubXeTZPtYv5Ffmvi0aL+LIf4oK0 3PY= +localhost.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Z4nLnz36xZ6QH3VcJ8UE9B2ilC1Ec0ySQlDw7a9VYIMD+smyxTil8rrI 4QYczO++htOf+fCestLewef/HjTc/SbBsRruLonaZ2NzIoPbvzw0tp0M mNCPuWsEPhMGEHRqK2P5rQ11zR/o0nx+1hdG9Kh23P9A1K587MV91A+0 AFQ= +localhost.nlnetlabs.nl. 3600 IN NSEC loghost.nlnetlabs.nl. A RRSIG NSEC +loghost.nlnetlabs.nl. 10200 IN A 213.154.224.1 +loghost.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GQKsS7qA93Bt7VTvbYaAArJhNyNXjgIMdCIZdTI67ffY3TLeJvDoS2VG A934Rbv2KceJwYGo6s7/KUE3It3BGtph3QRJ8SvVjJuAcb5DJAXkjkjX jtoqjsL4ZZt9vUURYb8ounPmvDdeeMUQcfO8qXPqXHySauDDabVrKNE6 paA= +loghost.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xnY9WfAcW/FmZgGJiZavBCg4w3BN8zllzqjaPtG7BJQ/bOJMSb7pjt7Z JHPlfpdusQ6EzCpcspXcNGsmo+E7mm/Lse7EA6K4Ih282emIwFsc8HUM HDBDm1iDAgfoW2dOZ19UKyeSPL0zzTIV8/4QT0uVgfAGzih87ko/lULt wLc= +loghost.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. af9ctsqbZhL+ozI4eC9ViLQ4nJb3LaFChSU+gV6nU9jlNj1Q7yXPqlIx S9BJCBVy7/JmNsesQnGi5sFRIYpVYe+XnUKZpgz0jL8t4Jn/rXrBWmu9 o5O7q69vfTJya9mf+BXMYqOogwlVDg9tjdY1CDDaXn7cSu1AH1HZHGfO Iwk= +loghost.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +loghost.nlnetlabs.nl. 3600 IN NSEC lummel.nlnetlabs.nl. A AAAA RRSIG NSEC +lummel.nlnetlabs.nl. 10200 IN A 213.154.224.33 +lummel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Pi2NlIWZUc4gPanjcV6gb37V8nN1nE4hkOdX8wBd2/Vkefy0sBZ30oWi iTsBCvkg5ABz9HY9J6s79ptkv4Xssw4Nin9JCRqFLcnwFbnVNlvicXkq cZsFUcRx8L3D/AuiCyg66dBZ8as9U/ovn8DxRXaomZN9UpC77UiQN7FS EhQ= +lummel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VG9/i1INijHh3YG2dxNr/QnDa4y2VoN/tEZW/V+PylCqzHcsKjjkmDew SCUWcfD32zrgPBm3ScjjkKmQAULLBBrjkPjaK7GOqiBc6LEetFEtUZER 02KGonXJXyp3Y7kMMlMDlUL219xeKZj5S3WmtlzkjWoHtn8dU6J7CqQL ab4= +lummel.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lfY13CXm4z7UJaFUsbD+bXDG6OaFcxrCOqneRtf8rB3n8oRiDRqrqTX6 5viMilhL2LsPyJxZ11BUV68NTzHZZNf9mDK6NMWDC+BB2nFfr08/NUAt r9BhdbDkKfePqrz1tQ4AkEKPN9fRMOaNdeRd3+wHxM7rW0bGFJKXQSo4 cdg= +lummel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. qp9ZlklVudYMWAyrUej07TFao/0XU08zOl22pmSFXInPMPqn89F36nlh JVJCQGSK/ck6cAWAN986snvJZN/hxRDbTStMd4I7QskKswg8IG+SjYqF bbWDq8YDNdTfKARYBZYbW9ItlNbpp7uLY7WcC3nHENBMhBRhbkgg8XjY PoU= +lummel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:213:72ff:fefb:2434 +lummel.nlnetlabs.nl. 10200 IN SSHFP 1 1 714D9E0C26DC8A36D6BC9329DF9FBA734C80E059 +lummel.nlnetlabs.nl. 10200 IN SSHFP 2 1 16A961CD6C8603459C1916C0A5A7A0318485AB69 +lummel.nlnetlabs.nl. 10200 IN SSHFP 3 1 43707AEE3D74D8B8D292CD8556B32FEE2D43C805 +lummel.nlnetlabs.nl. 3600 IN NSEC lustra.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +lustra.nlnetlabs.nl. 10200 IN A 213.154.224.52 +lustra.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sc8OTOBeD7qHy4LQ0+9FKiewEhEvrUa9EXd6LyMkeKzomee+545x+NEI PcWP245feCB2mf4kCIzPisd/DIK5jIWQy8c+CQR/7bpIhInaiPAL+P57 ru0MEeiH8TSvvg6rkmv7URoxp0P9sCLPwv1GjnvXs0LZpW7s2kNKKL3h BHc= +lustra.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NKtQaVJMZfUSfENZ/9VdBE/nfPzsWgygLx4k2fJH+swmMmqc1qrhU5HM SYBZZx0G4xy4EB2/PZfxdi4PQuPknWL/a68SYUWW6tOKp1BCHfCb9vKf h7139jq6r0hAJB+mrkocm4VCoitE7Lr78gnCIQXn9hj1XThAGau2GzVi TEg= +lustra.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. w4A1xE0fHWNynO5wXeoUbRInwBu+74CY85Zd7gMLCwEfdunpRaiTTlF0 UE9G/NrNMBbOhRfYrcIQHdo64dVjqIoxsMhoT9ZhMb1oBwJHVaa9OPEX IyOgcNMHAu9OFJG+FccIanez2sgEjSX4hTjbtq36qp4HxFqlt2nO2OB/ ZjA= +lustra.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fec6:5984 +lustra.nlnetlabs.nl. 3600 IN NSEC magnesium.nlnetlabs.nl. A AAAA RRSIG NSEC +magnesium.nlnetlabs.nl. 10200 IN A 213.154.224.29 +magnesium.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Hu7ti5A8FKKnuYtITcL1HeLZs02XhpuSy8sGQzfwqNn2EJS/RJf/fhkW ln9kWsVce1s6QrxW4Y44gVs7F5O3K9edJ7D+8gVlplDgSYVyfJOIcw74 qSU2uqd5qmvl3OT6FG7KM4fQjoDXmAtusninqXCXKW5cyWx5AmQ6JHwi XOU= +magnesium.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NgLlGFemonFOZaepSP+whiWmmBjR7UFVXhbk32Qy87IcoGH69caFSd/p 5TXDlCamQ5jylh9wtj0cKwl/2Lj8VMbPRDszMD+dQreO9R88NEXi0k4F 6AH7KmM1SeWtScLnM+dDpBY3M+1k5gKAG6OvSCRKgNaoiqarB3/dxNfD SZ8= +magnesium.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. A+cehflHGgMrsAFX/6C9dJ2H5j3jKgJxvc9oW+j9qRKq24DWyTpst5av J/2ELF7fmMo4aObzAsYFuj+0HL1FL/3ER0zmr7BRdlJpEF3FgoehSJC2 pO1Ba+5Sr1xwpq6dn5QuMi6ZyCCXciHHrIaXdn/MPojhMgThM0EHNeF7 zmM= +magnesium.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:225:bcff:fee7:c3a8 +magnesium.nlnetlabs.nl. 3600 IN NSEC man.nlnetlabs.nl. A AAAA RRSIG NSEC +man.nlnetlabs.nl. 10200 IN A 213.154.224.55 +man.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. le3ZV3IAOGqt29SB438uZgraNdVjsL+czFwqsMdlrmZ3CJ8fxDtnjHqb G7bTcEZvdFB/DiThopl7jB8pNNRPFr6CM3Vg7GYdReJgXc/DWboS1wlj fVY9epr3Ix+GsDfruuclQjdnxDlIEehZUUnEgu3xheuXL67bMkl5fWyV ck0= +man.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fkuEhUbJAb64QZ10t0pzgEs3ExMPOtsvhHTpInw9GGnSGhUewSdyR8LN mjubuqCOldUbE+6dPdcNuwhrfvaJyZTldu42MINhtRCeKo9NAUwkxVF9 BrT4TC7Nz+VORaPJPD5+J8RgctjE4kU6jQTZvzCMkrxxzMFACZRF75QH v3g= +man.nlnetlabs.nl. 3600 IN NSEC maxima.nlnetlabs.nl. A RRSIG NSEC +maxima.nlnetlabs.nl. 10200 IN A 213.154.224.208 +maxima.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VoWRakLC+StzLtTeUdS9BqGsbuGaXPytOsyROgkLfx5YwfZQ9S+IbO9C Tr8MaTPbh0QCcQx9xk03S8uebxRYcuYtOED6RlKzCgcSyyYebtHgpFsr l4vd2JQiGyo6Di3xvnYiNUTMgDhW1fOXblwUaJsbnyJC7eWmoavX7aJI i1o= +maxima.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mqpbPmOS9G17bYSQ9OG4LRf5hRQ9VCeAUamOkajYmZevbYEj0FDShP4h 8usMKK5+UHzRVo4EtrXy10bSUGrdkJGFMPgc6EIq/0//hSYAhpzPmde7 65zyw5q5jZFyhK8YMttpNtdOUcLW0LJW5OnDC2PKINnag73+IQgT+Li0 AUo= +maxima.nlnetlabs.nl. 3600 IN NSEC mcvax.nlnetlabs.nl. A RRSIG NSEC +mcvax.nlnetlabs.nl. 10200 IN A 192.16.197.229 +mcvax.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CUC0XymCQ7YfFQ1qkjL731oPc4/80S+9AIKCDIpOcD+/KGirLCNhXoUz 73U/7Ibsm0ZjOfZ1HtFKceRnjOl/uGY0007Wxbas/O7twGMPeg6Hp4dR 9E968uU51+6Pqu67kPqrXeRZFObH/bCpGSq1JAjaPrnScGLa4WriDiv0 /OY= +mcvax.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. W7D8uLNC2Nl0XVGFATuHmAxI8xAjeGKc3WtlfNFJggcTlsLrURWPg6ir YcfdzFqMpprKbunEQFZ7Ol+A7fCbJe9HMw12dSA4fQ2/PPvyOHeB80++ x6Djd/+w9lYD559E9XtJj4dRLZR5PAU2dY3xDXPI+rdIRyqfnGnNSbAa 3aE= +mcvax.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. y8XxonD25ER6WpNF73VfLFfiUXePVLuwvfFyV+jotG2N6HK8mdBFaQX+ ej39Qo0UxWkf1Eh7bEZSYCeR7TXd2fp9CBismqnNTykji7vBNIorzt8g sntiYldaLDCZtg0ds3EexBSbfOh+m98TQMGEOiAWNGn1zrROXyI3i3rD F+o= +mcvax.nlnetlabs.nl. 10200 IN SSHFP 1 1 51C86252CB0488653C798766A266CB8142AE2333 +mcvax.nlnetlabs.nl. 10200 IN SSHFP 2 1 9E3B089D4B8A9B360C88D44C9D07C13146C87219 +mcvax.nlnetlabs.nl. 3600 IN NSEC mermaid.nlnetlabs.nl. A SSHFP RRSIG NSEC +mermaid.nlnetlabs.nl. 10200 IN A 213.154.224.45 +mermaid.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rHmFJSkyNzptUBIuQaaKr2zb2U5H1EivOxjEFxIAvZCsGH2XffWRPGOW Hji4L43u2yIV+wtAZFezjRDkFZregwQACi3++/jrwVhGf55kwl62HLqu LajrRHZnrfI4VeTeu304IheQC4ac2b+VmPEahOP82Tzs2sJA1tQYrB1U 5kA= +mermaid.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. AonqqIy1OONOjM2tskxUMBJnW8YbWMmPQdCh+quLt3JvQ0wKXiqLhmPB YVdIfD9+Y5qK1I5zlgVBFawgYobZYZNWsoPE+Th3TPikHvzkim2jm72D kxvvO1wPGNmEHfVJIYMf89E4Tafg2T0dfTfj3H8iKrh+oRwbt0ASJUPL 0jU= +mermaid.nlnetlabs.nl. 3600 IN NSEC mine.nlnetlabs.nl. A RRSIG NSEC +mine.nlnetlabs.nl. 10200 IN A 213.154.224.146 +mine.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QuILOT8ouhGuy9+rzR+BXua5ln9WcYSbe3f3Y96w6yBwo9wlUF8aaYEC P7VlMzpmL5bWp2F6D5ceE6YnufLOdCXVAF9bSD9LsGTUoHTlpz5AcGTY sGG7hlPQuXuEgdkYTXnSpZsIJ4OauQTZkz2C2XQLa7cAEl2ITo2xHguo eVc= +mine.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FF8j0F6CHRgyani6OfSiuEajaHkzFIHbadxhWYD5aoxnh9UdUV3vPpnk yP75sl/x+eLsHnzRIzgACxN/3CgR2g3cEEXsAJ50wqqQVr5H3O7IEwwJ s/je8GgSjC0BQXpK7PfFZSHSsTR7HqNcpoyxXlppDBTAKsl/CdSkzy+o 3pg= +mine.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TvhuMYLbzZ+WL02eHnLoq+YFwiNUMmu7oHcwpGPoXEp/WYRILOjwFtXZ EGJHLxSIShk+dzZ/l6zN/M3cw1jYdlXdR/ZGC9bwAZFIj5leJy9KWzTq pynue7whJ8J4oW6tcLU8PbDaW4mUn9RvQBEzcGUmcwLbZPpewa9jWPKQ ktU= +mine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ptgxugAkoqtx++3LcGJ86LF/Sz+99hddcjbfAfDLCw9lnzeTq/izbYHv aq8BLtOvBuTqUpRaRj+0+NkKvu79VHX+qiMdkw0MSQKYOistetnqFOZQ i6zDs+eeIZRpI51/rlA708ziFfjtitcMp2duoQwcf56vegZe+R8BfM2n 8aI= +mine.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:28:: +mine.nlnetlabs.nl. 10200 IN SSHFP 1 1 5598148ABD16CA46A5F1978D0566D253375A5F27 +mine.nlnetlabs.nl. 10200 IN SSHFP 2 1 C0535C157EB97B21B2E52CC66AA933A8ABD7BCB8 +mine.nlnetlabs.nl. 10200 IN SSHFP 3 1 10B764904D485D2BA9F55231D1BFEF01E15CF249 +mine.nlnetlabs.nl. 3600 IN NSEC mirre.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +mirre.nlnetlabs.nl. 10200 IN CNAME rpki.surfnet.nl. +mirre.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T4bZrYZZu+kwbYQiB/hrYZtywNBLXhfIdrteROPUGa6uYKTBiQayLBjb H7QNOeen5ux6JZSeHuYCRGm7YVKKdCw2fJ6RZ1YLiQMJsxRu9KOnxwvv l480mbv0jMARW348Lt/G+IbmkYQNe1pppwJe9vMGzG6I5yagsOEe+zGW ep8= +mirre.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eeqMxjUtbdtDdufJunheC9AktaUc63dF1vAmOiRM+zRvl4fA1JD8/Iho 4iKhcizOrhkW+M4BjUOGbffDYrkKGWyz4tQJnjR0v3FRKU/vGzBg6kaS du387En5FWhIz2a6BWjq1f9rcQz6sJOBD0ngEPa6ZWa6SSqAwuaxC6wQ S+8= +mirre.nlnetlabs.nl. 3600 IN NSEC moby-dick.nlnetlabs.nl. CNAME RRSIG NSEC +moby-dick.nlnetlabs.nl. 10200 IN A 213.154.224.28 +moby-dick.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rjaW/SjPZQR9opeowD9Cf2EsLMSIEMVRWaZvu17jy0s6e5Mo4HWhvzdg iCyDusXA7oNcFUjYIR6/UdOE9fw+CZai9KLX4/S8VOfmlFUZJ8G04O0c 329+ae6+n87bGre5GJOUnqOx8LcjPizJc0BOINAf2NsCF42rcEsV+ibF J+Y= +moby-dick.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. SUVyUfbpQWRdn59Gq0grxZl0EWy2T5HhiyA5fT4fvfuaTADR2QeaH6IX 5GpJ60VKA5eOoC9OBTZiSsxtd1Az+nM8gHgpjTcVcNvCE2oxSAS6oNVz +zesAB9inMZB7Gi/pnB4gjvi4cd8+UMB43Ig8yoolOdyt04TnHF3rHUs JQ0= +moby-dick.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. seL0XTC2yixKJYfCmy7jeodFdXU2q5VPMZ8MMl8PPR+QIMMEFSWymQhJ EvwVwt3S3F5PQGp7X4+m03Ngtw9zS8GS6bQK83cpuSP4c663B+n1pyHu ktdHR01oK48qv2B8eFWv+QOeUnI6Wpt2UhEI1xs313cDSXiqFQCu3wjp ejc= +moby-dick.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fee9:1c9f +moby-dick.nlnetlabs.nl. 3600 IN NSEC monitor.nlnetlabs.nl. A AAAA RRSIG NSEC +monitor.nlnetlabs.nl. 10200 IN CNAME nagios.nlnetlabs.nl. +monitor.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yze38XmcH23/GK67TV4bXmOapjgBESP4+tbrCdfYFoGwCVtgHtdO4j0u Jh5GDaB2v4+OBAmKgrXBB/xOTlZu3R/c3AyJndbd2g1iHqASmIqfYXkb LxiQhU9QVeIwFaClVLh6nxTC1+JkG/O6UudE8PZfSUlY5A7gBdaXZgbs rNw= +monitor.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. OG0LutiGlU8L387omjPDECL6Mh8w+xcCI1Sp4U9fsTYjAtu0pRUB9yR+ elBRHxCW38NxrHpLxEKTBKuCT51hCuHAWKEBGFO9GO4/QV+HgcGwrDJn j+PEP2nYZIqIHvZ/cfKSNnpIpN7c+5NoPIJYoU6rMaGhGc46+Dt2+3WJ iMM= +monitor.nlnetlabs.nl. 3600 IN NSEC motel.nlnetlabs.nl. CNAME RRSIG NSEC +motel.nlnetlabs.nl. 10200 IN A 213.154.224.7 +motel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. S+P/gbnSQdL+9mnkl5NdYf6+/SsGK9l+ppaKPFBfC163QKhX4f//EvU7 4Ij0SkQ7p1oAjx4DTTDeA/4N/Ac+F+hveL+FJOE4GwT/A7q/1HJS04nh rR+a70FHTeT515CUT7gzG7DQRo/OjS5DmVsZdB0JRK8tGQ7ZgPtW2PL9 XHY= +motel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0FVbMO6M/uo4OqjweVJ/3m4J/FPU6mdmsGIvjt8hlSp77RosJn1MZrqs bHoK+ArYJ2Z32QZuhAJnLm+RU/bbzizps+admsymmZJ8sm20+x/FAlML ClyG/FGDqCNHkZ4+t/zDN9cEyAnDLcnCXRJEeTdBgNyT9Yk9e3DMi4wj TLE= +motel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZGCdLU2VD/3LGAfdcNHub0OO7L6ytEv+IKqoaCxB9xw4wNhFijKZinlk YlawC+ylOS08WoIV3h8ZVqEX8dce/UDma76TvZsF1SDbZUZM9akkU6Po /oOmeE8FnCh+OuDC2dx0IE69ePSSS6q1XOE3gAFBOmSWg/H2M/+iGqP3 z7c= +motel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::7 +motel.nlnetlabs.nl. 3600 IN NSEC muis.nlnetlabs.nl. A AAAA RRSIG NSEC +muis.nlnetlabs.nl. 10200 IN A 213.154.224.56 +muis.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wza4I4gA9H46HW5fU7K9rwNzvOYZVIDmPYJjohMZbO+x7s9ja9c3m3Nt TG/SZdTXGCWjh8jh6marIGfiLBMyzv4i2egV3UBpqGx0As/oCSqWjJaj 1ZhHWtDDbnT7H3SfTt6pvZzT3H3z/btj89hc8XpFJxysOTazfQSOdC62 T4c= +muis.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. rrcpuS72u8zuhFnhIzt1mqWwuRxaWQyL14J65yCOQo+iHMcg8d1xFfya n/HFboVrNFmWpsVkULiyquUqRQbuALuxE8+SkSwtsjFQJxemW7A+DLh8 xLrMg7yxRKl5BTUjJeKNK2KAUJRmwuPHjgm/Ws7ZpvjhoVZIWuXBMms/ 0NI= +muis.nlnetlabs.nl. 3600 IN NSEC mysql.nlnetlabs.nl. A RRSIG NSEC +mysql.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +mysql.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CNrX8SLsxsKTF+c5iS/+YW9TsRnMu8EkEEhMnt9T6zt6Vo/B0ZaGBHpA 1wb0CvF2sClbF8R7FKiVKvFSYDqCww3/yCdYvI9dWSTB+IOt/SSRXPxc zn21crH6dDnf3D5/JmSH1CXZHJlK0v94krR5atbD4jwVtStQecglO3FX 8dY= +mysql.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. k/zVwY5uWnHN/P1rLlD2q685e5m0O8p5kcPQB5s0eiy7lgtsQGv0cksu LtQU9BXxEzMfbD+ZXnxA7GF7ijmxJaWQ6mxO2AvBVuEscpcHhyvpJJKd fBA3BaWmfX3wyhdfla26UseimbRTigCuAVUBYgIRdpltJFeMQKn15OZw ZNc= +mysql.nlnetlabs.nl. 3600 IN NSEC nagios.nlnetlabs.nl. CNAME RRSIG NSEC +nagios.nlnetlabs.nl. 10200 IN A 213.154.224.134 +nagios.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Pz5xCIRK4xtpercGB5uHI9E8V2PQQl1Nn7TB4bJoh1bwExwJAyOKQA3u s45zVNRtm0RH6nnBEEl2f1somZGTWCx65hSNfRVP7CnuvyaDuh+FGML+ WGh+/gBsPHsjfeC6pPM1f+QaavgWu7P5ifkWEvrUlkF8dx9g0LmkXubW 2Tw= +nagios.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GgWKcGZdL7L/G+cruxqVHEyi3/oZYMh6EdlR/Xv2+3bKFCRiCdbn9oWP CUi13G2QzpC7LUr15zd9XgYR6F9aQaQFMQgtt+f3MVZMlZHRwsQ5/WgH R28rwJwTH05twRnegGu027s6gf9dClBbUaIDy6V0GmRRucgf0mdbm6RJ EQc= +nagios.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WPtwgfR8q74wPyDbvLeiLM9rgsnhB8s2SsQtQQOCPrAiOWsH8MfCrsch DPKIpx8NbvQtjMKPg2yJ4SrqlIqtyBKhcGVqQL4bx1SJJulzeBFiFquQ YSA4mV8EZCSgSmwaOYvBUR1Gjt4ELtuleuDrV07W5XMZZWuyhyJ5nmKS ptE= +nagios.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nXN9hSWLziW1/kj0liJynk+jwRDdgJYzOh1EVIxcEEIfDxUd03gTAIZS N/X7V3KR8KhNi/v8oG+5hyfGIwYAPumKfSIVKjd1ZxJYdZDSrrQYOLqa gabCuP9WeXb1Qrcz2XrITTUcAFaO8FYTDv/bJjJLpNQ7cAkjOqzhggV/ EJ8= +nagios.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FPV9ykHq0Pg1jJvK1APbDnlt0e0K6GcGxovuStcis0IqWV9uRqW47E3l 6bqVMYkCJHStlXMpF1PzG8zTZ2nG6DqlnIIVspJY1PbVC8ae8sa3/iS3 98E61Kr+8ZXBvdAswe52cMtUbI0J/kZNi8/wob+IiezOA7b5NzsUkMRE TqY= +nagios.nlnetlabs.nl. 10200 IN MX 10 mail.6only.nlnetlabs.nl. +nagios.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:4:: +nagios.nlnetlabs.nl. 10200 IN SSHFP 1 1 0E1A0600D0A7F2511C8D57410422D9A99618F201 +nagios.nlnetlabs.nl. 10200 IN SSHFP 2 1 4EF80FEA0025691257FF34B992118BD9360257F2 +nagios.nlnetlabs.nl. 10200 IN SSHFP 3 1 AF21A784B933B4B2F28967845B41E0119F91D3BF +nagios.nlnetlabs.nl. 3600 IN NSEC new.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +new.nlnetlabs.nl. 10200 IN A 213.154.224.1 +new.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. c4R5mlLsWCohgvAKH1LU37LWlERnEvmhcT8UGmWndsoUAqmvktCUF8i5 o2TbZt2B00Pu9UEMLgRR3Aty5ThdkdVxM/NXOjTbtYif9POk8EXPLT9V jMmgx+NJq7U/r3sYEs8Za5lmtD7QQbqsAwVTWO76fT51Zn20mZ1N450q 6R8= +new.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wgyXvJ6iOsZBBvrgKnSYFEjpFjbju+7fsYjCrNW0w6u+JbvPiOVN+7Lh AG7xSpK0fCzuAmRITLMLt6WeFz4bK8dIo9mfgFh/Hk1IOqi8SsBO2sK7 k3YGH75U0o42EKbwT9WArZhThw9IAxgPUPGfb69OPvK4/IgOG1cszyie icw= +new.nlnetlabs.nl. 3600 IN NSEC NLnetLabs-bit-gw.nlnetlabs.nl. A RRSIG NSEC +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN A 213.136.31.102 +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. oDdsx25DwqkOrfhNaq8egtntauRZXRr9J8c6VkyrwtSdyxfGyv9OIjg0 v3VzZL4Zz9HnLD4zrEkaVdapZcYVb3ML3zx37V0tS8m2v0KSIhffqcMn FKadP2qzh8GBKwOxfOobcQUlhzpWzNczVr7IQ4pnMJvneiWCBSvl40S4 qZ8= +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MN6oRYRJKO9zE0rZAAFKavva/bWP/a/NZuptQJCbc3t/wIHxMsHl8iko v13joBs3oS4bjT5vWQwjhcsuLm8AD5bGQLUbnSyR7D2ptTxr+LcNeYIm Ddo0aZTEck91+5bWxUqIVyA50qDBusX2iXvQzVKIqXxeqpCyNcfsb+FC v8M= +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0oHN1xPXC7LX3UtrguFmM4hl9SKp5d+FD6kToSzZHbrvi/z00VbyOjuy Qqg7MXnY4o00S4YC0DKU3o7mnWM+Xq8ICwGWySbV/X95F1olRT8VYh4c W/CCewJcT09jBVHU3LayT6Z1FzsgTqltxhPHWuWXCTnSAHhOxhlaxH6w itU= +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1::3 +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN NSEC ns-ext.nlnetlabs.nl. A AAAA RRSIG NSEC +ns-ext.nlnetlabs.nl. 10200 IN A 213.154.224.4 +ns-ext.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PYR8Xmf312d0RE3cD0U5efOPvFSm1poaTKTnQx4DL+1YyuuDC5fejs4N FpIRtb3Ns/UUK28ixBDLCG11nkKBLwVoY6LF+uyHP/VVSVI064ovFKsE zuPBks0EHtvVH3KSgUIf03zISnVa6DSG9wJI0J6ZV4h/J9XOjJHZoX1m 7DQ= +ns-ext.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q6sKasoaqWNx9OuPoeY73bA94lzavp1xYGeYkPz7jZKe6hSNlK1nTwY6 VCAQMzZ0swNR833H8FF64lX9eNB2jjiyep2S1iljMr8iNOKTqQqC7Jsl 1swCeCedl5EIdMX4Afb6KNa/ZAAykHNHfygBzU+WllObBA7ACbMygEiB knw= +ns-ext.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T3i8HFKONpCKoVMl2QgNLmZzQwIb2Z+gp0khgwEg2mIhlUeCl/qROfPF 2Xs+Qc99hUA1c8HCLOtmdEUOkfK6MYd6sXvlEZX9b7ooC7XTLO2wlRBI ltGqM2Oi7nyWEVYIhT73CB3YjcCICCEYMADVLsk+Ri3MCH23NDy/GIZ/ fyM= +ns-ext.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::4:53 +ns-ext.nlnetlabs.nl. 3600 IN NSEC ns-pt.nlnetlabs.nl. A AAAA RRSIG NSEC +ns-pt.nlnetlabs.nl. 10200 IN A 213.154.224.141 +ns-pt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hoCIOtbQRXSS86J/RpsCpSrBv/XH+yv7xA07gFxfowyOf5nqm/bnphqL WM/wl5ZM/+lxB7kRtADiupSd9Gex3u4d9q85DW2zTjNHK+tM6k0ERzus OqOCsDtbpfDG0G2PMNcc3Tz8s97moW5cRzPmFSxDCC1OVwc0kvNQZGmS sxA= +ns-pt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. I469Bj2hh4aZmWczXVp8OVTeQGKGVZf8IR29OuSQtCKts/T54GReP7aa tYWWCu2KT5d9tcUlzqzm96l5lwQwW4ae0SKMU1iyNBnnaY5tgWUusFWy oGfTZRsXRFk/aJ65E+MSunonCWCIWtRCl3pqkQw22mN7IsraUxKULbj8 Sq0= +ns-pt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VV4BzULEKgyPxoRlHNfjxMPVl59gVn5pKPJhOJWbpFOOcbHb2Y+THaI2 CNxYEybVVV1zDVq0Qftjo3sNuq0Pq2KxrWjpwFzGvZq9ensQUJuQHMVz wUBEQ5l3o0xiPuSDtksKj7vklbA4z+eQYZnpsNvUsPHNny0BOYrH8d1i Bcg= +ns-pt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::4:141 +ns-pt.nlnetlabs.nl. 3600 IN NSEC ns1.nlnetlabs.nl. A AAAA RRSIG NSEC +ns1.nlnetlabs.nl. 10200 IN A 213.154.224.1 +ns1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUS2T/kEzTCQ4gT9zlTX0Y+wES1YaF9NYfJL0YaYGAjyFqXJS7ORv7zk LkytMwdik9MAsjHZAxywPBib8UCIEvE0qIhTe/zdBc9y1UwuIPuz+5be OswtkGyr6Y5ln71FUsEXZ76QgHJ8eiaPRyBse9EcvukjHtFiaGFC4zjJ K9Y= +ns1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iUpUQMHie91GDiWaZp/z89RBWgYCmMleQe901garsWydjNCslI6JWO1S s9NYGqYEv61XED9aPDbpDl0ayHXyVvN9twZSQxU/Jnn110wnh/+2JOxN 8h0ZaFM/6lblMzfqDx2h01K1ywcbwtqXcSvP9tcCeM6ZIYD9EsAQSvvm eCE= +ns1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fj0abC9ioRjgDWAH5GNaHI+5bWT1+8EN4YVzR3+BcjZjnhIhRNsUd5JM N5urgZfHHQXsXGvKOMZqc6c2uiXrgowOokusuNU75Bj/QUhGvqj5erQu 5NOu+qltQMGpmR9ZK/qMwAUW4IHzUs1WqjVJaBWcv0BxKM60DuEOg4VY wfc= +ns1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +ns1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +ns1.nlnetlabs.nl. 3600 IN NSEC nsd-xfr.nlnetlabs.nl. A AAAA RRSIG NSEC +nsd-xfr.nlnetlabs.nl. 10200 IN A 213.154.224.49 +nsd-xfr.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a5Nt/daUo3vYxQ+ZQOlByGmQHwQx1YK41rBVt16snLhY6udndXmKBPBR GY6hIn61QwDtIdQQlJrG+y4MVz7VK6Ze54C8FruNJ0NrpnNC2tNapySA 4Twb0tvQoQbdg0mcIs4kTo8/MoINfv17ONq46SArrq9cnRsvEGBpcQnr 0hM= +nsd-xfr.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. p5CD6u/KGV9psgwpQLGTe7cTLcrpzqonPOluVI7mOAi/wAQyI5OVlJNi fqC0Pwf7x5w2MxfX1oIrUfZ6B1f9mfY7Wrrv88Sk8V/H460aupP/zYJh pPNpzzOB9urfodGaQrBLDh55smeGx0PLC1RTqSYymiq904kTRKFX0rMq Fyo= +nsd-xfr.nlnetlabs.nl. 3600 IN NSEC nsec3.nlnetlabs.nl. A RRSIG NSEC +nsec3.nlnetlabs.nl. 10200 IN A 213.154.224.21 +nsec3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. aznMjPMBXNxIWu+DRnoCWDBHPOO3adIOKcKdT/9DJdW1Qi6s//DO1Ylb 9kkh1uDQiswhBcLn3E5/+xlx+zhXLcuFhIYEGQvBTgnUbDjWrDfxyeMf 0J9eztjn2v2K6oGl9ru2zxox04nnyS7fG1TUzIYxMPAHAlFhaaB2ieGk 0ZQ= +nsec3.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HydNTpvGJ3tBKHbFH2sFnXJoiYpCG2He5OxLNdnQnmFcxnbgkSkrFgWE jbaypj7Crnoo8RHACcHR6XjXkb8nNMiHscHOSWhr9s+azxy1ZyV67j1j XZMosoPZsVhRSK+aBuE6kwl/jJTW3j5q5ZuiCO18QAJimMSPth3UIW3k u0A= +nsec3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uLxqAz9flQLp+KF0qgr9pE5p1+YaZhZzB7AqWrgIMsOKBuBkkYCDssc3 d18A+rGdwQN/Byl9dkBb9q29qYEMiDfjZenJJvuI/RW84Nx3VOaaJACy MRm6bwhlpbev5OrAnWXRmuVghdX9PlC1/b3LMXR9bMfnLeVX1Uow6yuU lxY= +nsec3.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fed2:4db +nsec3.nlnetlabs.nl. 3600 IN NSEC obelisk.nlnetlabs.nl. A AAAA RRSIG NSEC +obelisk.nlnetlabs.nl. 10200 IN A 213.154.224.126 +obelisk.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. K7fvlL4xnfvE2lJuP/lhaWrBkwBFklhBSxejbs3g/yhEfih77hAxa/M7 4pzKC3Y2NpAxupCQe6ALPvq2OQ3fdci3UfVMFsuMdiSMKU5Hf39iJAED xaTD82VasELWTgz8Ll8Rexybt6z7wHeJQaOSXGv4QmVGqpjO70x3ndri BcA= +obelisk.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0zAWY4P9BOQlMQpGKBPXO8WAsFjsa36IvS1xrALPaORLK9XCcBGSsH+h Z6sE5OMppFZZsqYzwT67Cb3vLfoI/EXp400xX2Sb3nzHk5gOcogx1WhC /CnYDYAFMLB/egrkO2oFn94XXpIKbmISd34z8aAhbiPVt7bZpJJXxG6l 3Gs= +obelisk.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DtxjkepitPmix9t+nyzQ6bUPp5J7MoQyqTft5xZHkFqowd/l1Gq17NMK ADtqmqCZ7vDLtbLcfP2gOVuN418PeotKVd02dgOZckN53c9Lk8x1qr5Y Cf+pyz0llOp/opad7GnT8JTFgZ5/fSZ64va1fwz3wSC/mVnEaEsIKRis 6bE= +obelisk.nlnetlabs.nl. 10200 IN SSHFP 1 1 0257F12A5FF223048FBE7424227A5F5736F1D556 +obelisk.nlnetlabs.nl. 10200 IN SSHFP 2 1 00FA2CC6497D6DDDEDD499437A518393BEBAC127 +obelisk.nlnetlabs.nl. 3600 IN NSEC ods.nlnetlabs.nl. A SSHFP RRSIG NSEC +ods.nlnetlabs.nl. 10200 IN A 213.154.224.130 +ods.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Kkc3QVZov1l+YScH4TbdcB0Y1v3xhO3yR3YmvNnZpGb8iVEtlZ8HpCek J4g4HlPZLinMMS1uw11kFTkgJyNp5+jHyxg8EYAmiFfF5mOCKKfgf/uQ aOmpwUwsg8h3XXd4teGDGmyppiZueYXkbq08e6JLpTBuaJOIvfm42Muj jRA= +ods.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HEGgHlgqo/uwmHIZARqsasGpp5f/NLxHQ0SmGGtcBZZkww1+1JSVaxpq kahnJ5eqEdFAuMdwMe+72vlzKgXkanXM6C505IFNPbduJjstiEPwB/mw hF++l5Om6APm9okHuo8hECdfD6AopEEt7MkixIcLFZDFcMTQ7g0TkPq+ Ces= +ods.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pQTOlueUEqzMJX2b2Qsj17AYuVZY9OlR5rBXF/sA5+btNqV8hngNVQho hxxdRlJHeXM9qUF2MCJYSdBQdD0ppoumkVWXlYMgiftJFli6KNQr4oBg u37Su5OcRSlZsdHWi6GENX6QnGLGk6TiAwNGG3FIyGUUymsbBBhVdb82 xlk= +ods.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. L/wNfAF2NufmUckSFGqSYT/soSI5Pz5KnCut/JyyvmlLa5bfmdAIwJJ/ 1WMvvqd9+CTBSPMlJM3fP4/CfjQZeJFrHnF7c0FJO5pAfKEgK+vDQmkd z6KTf+W92VKAhWcgt5i8DboqHxVjEOsdsMwuD6GIM7y117iszDWRt9oG 3yY= +ods.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::130 +ods.nlnetlabs.nl. 10200 IN SSHFP 1 1 9C78228717D1AEBDB4E5C6156CE4559E50A562A1 +ods.nlnetlabs.nl. 10200 IN SSHFP 2 1 35BB7D1F0250EF1B9177EB36D26FD01EBEB633C4 +ods.nlnetlabs.nl. 3600 IN NSEC omval.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +omval.nlnetlabs.nl. 10200 IN CNAME sanne.nlnetlabs.nl. +omval.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xxvlJ+XJ4uTiIxNB9hctRhRVEtISgnyR0nkeLR3gbfsbSNVb8yukZkkH L3Z8JK3vkmH9aYsr7lQqYQcth9dSuPq+Am/YxWRI1iQg+aJduCNJV/r3 p6mStNpptnF+hEbIVoB2KAhWAlsWO3ItwyL7RyGgZ3d+tnmIXffV/xbL KIQ= +omval.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. O3ab5lNkoebREUXh9ESS10OQhzQSPej7t08QqGQlhDVEI8wjCWcylyyZ ClcQt27PDCPDDBPLIpBIQ0gDPPSmAWZAqof0Xes6G7jRiuCdbwZskoK1 xjD8vHkVSndApG3bwirUkeYVnIOSDcUN3dJa2xot5fdJeNiHpNb3fyVy p+Y= +omval.nlnetlabs.nl. 3600 IN NSEC onyx.nlnetlabs.nl. CNAME RRSIG NSEC +onyx.nlnetlabs.nl. 10200 IN A 213.154.224.32 +onyx.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nqtQxmyQDHmRNe1Ljao+iX0KocnJIvsZO7IoReIoAEGPu+2MP+cy33W/ tlRUO7OtMoGPFqoWPlb4rNKwEy9Hrgxb9eZAsyTA6oFI1sUvsz9hliWk Vmrz5RFJ0KSjP8vDtVDvxjoL1GAmNW81LnMTVNZqXvxdyCUJiiGAY9a2 EJg= +onyx.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yL7usZT31vahrspm//ZYcWcw0uw6vkrMdfDXDPkdKIWPoinC/KQwHtaS YhptXnW8/wdz61PWLeyn+6GnjEDBW7uO9lyY5B291C26lJeBNeTpD8NC crl/+ev0OcDjr5PjzIQeJVg6ShxmlonVHQr8F4BXqMqmNurJGTTWIoVT VQs= +onyx.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WuM8VwMCm9I0KB4Pr/emPtehKjCicvSGNELY9WxAm7I2Lh5IiqEMfC/I qj0vhzeJbeqUZobsmakrh+8muybhVJGFmXBRsuszeYSNz146JxBjkY2+ 3IeI1nc9+74sjEf1gnlAqr/EJH40w1Dp2hCl1Ui/Uz07lVlFTO2946sZ qjk= +onyx.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. naYfa4VaKNxbvMPsY5y9CrjDI7UgEZjJmfga1AoGdg5kbIJP+y3VPpLE VfnHSwg5OIL5u1SviOgqetJC2viST6fD9++kQgzhmMyjR9Ka4zWP/ctS u8DCOR5TMh308QOBfNbf0hGVTSYhX2WX8qvKHcnjoV1k4fUGHYbeNc/E X/c= +onyx.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe05:2d9e +onyx.nlnetlabs.nl. 10200 IN SSHFP 1 1 1A752CEF2B1E785A91E27D16CF3E1A3F5F335DDE +onyx.nlnetlabs.nl. 10200 IN SSHFP 2 1 784DDE0A38C94250445CABF91342F7230368E2C1 +onyx.nlnetlabs.nl. 3600 IN NSEC open.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +open.nlnetlabs.nl. 10200 IN A 213.154.224.1 +open.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GzvaI0ZE708suIFGV3nqq3FubpTZp4N8dRbRWNHC0pAGC/s6cfL27w7D KOO9jvobfs74rwOtooLCqmTERFonBbamk3fMPrunhDC5SVwJYovoWpbj Fr8MxFGvyIccaz9E/Lp7YiWNwr3PBHcNCJ1yRKxWFHDUUEQjBcNtelGm Qao= +open.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 09M/QEQP0S8m7rv6O7frsbBQiQOaNwAMvxwWmLb1uVQi4FvLmNSyNFhV rWLP7iWkFKPK4Mi+j86DrlKqIpfm+ZLCwKxO9O1D85vE21lKwS1ZzjDt 8Ki26E/WBufq5sABomG//lse6Qd3eWtQ/MQHeAzrS/+wmlma4/7q7Bjw toc= +open.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. b2xrDPr4HMl3pBBedK37kjkw9nFbGCnCUsLraB6xgEDfdpmub7fKDtAA iQg5DbeMnlBWkWKb38rTVsD3Qxr7QOUfgltDRBg2w6FNyrqmyvvJ0jpX vcBG8nogDJr6TCBBN2/HMcKn2RVoNvVc5cyrmKLQC/7IaSHTuaz+jPkd Z0A= +open.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XJzH99bT5IDKe5XIzNVG3DWKaAmm+s0YspwJzz+UZKtkPFYGMUltNwQL hHauouX73sXsysUeupVxZLBfbUqnIii/BiJz/wLxjJ7Q0ce69KBeNxPQ 5KvB9DZISQED5gZmFgwx9gUvIgBdzUZcIy7k4jL21jS1ogbtbnPXaS98 DHA= +open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. UZgjLcD3FbOCPghUZg4mZ5pzFzvtxi6mFotB0be9LmiCOypEsUr/hMjX MG8f/xTW84JhMB2qukI0oGn0LuQ5GKnk8uNKH1/aQ9mnFEDYQ4Frr77R 5IQ3QKL99IAEPsQSwwZy/pMh4HPNovTfD6aewDbl/wfpCByIHLjQ5qp4 Kzw= +open.nlnetlabs.nl. 10200 IN MX 50 open.nlnetlabs.nl. +open.nlnetlabs.nl. 10200 IN MX 100 omval.tednet.nl. +open.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +open.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +open.nlnetlabs.nl. 10200 IN SSHFP 1 1 74CF48095EAF33D2097E750A79715908CB16D7C7 +open.nlnetlabs.nl. 10200 IN SSHFP 2 1 CA0D875F829DA13EEAC25C580C495590C12583A2 +open.nlnetlabs.nl. 3600 IN NSEC _25._tcp.open.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +_25._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_25._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HDPoXNe8zXGuS7McrMIn7rZvSlUg8/s0EiMeFOcooS9I0315ueALSOSk aF8kCQH82Rvy/8NL2vIhQCDI4/0mat8isvS0vNZMhdWkJlcYfZQQ+rc2 Wi9zJbRaXH3q5Ud0QrjIutzq5XfCOJm+icyIhx65/I3n43uN42sGuCla V3I= +_25._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zPk51n9I9geIVTaM62BWRVp1xAsfUPue7DQpnmZoqA1LwhqxmxT22WWh uXmyvtd9vI5ajw1kr7QhKA3iSQP6DScEXYtkf2P352mU5ZqAWJ/MLiiF d3ZUVsAaKuocs+UwM3/8+xaDXxsiUJSNTyODtA+9ETbM7DkrTiNmXjK2 z/A= +_25._tcp.open.nlnetlabs.nl. 3600 IN NSEC _465._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +_465._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_465._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sPls7RfgXWf75e6WzIKKLm6cgRYSQYY8jMfEhkYbI4tjiPTWkFl8+bvW 0r4OmHX4VNKvbWNwl9jSTwtCghSCI7MSCIFplXSmq0Y59jn/6Zwax3K7 8FnSSAb52JJgJs1F7y8xJwNv0vF72iSutDB2eauYbH2yDhYIxQb8oDHK Mlo= +_465._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. hQnuRFT2XIOdKMneYMwAk5v2immQmXT+8VA6xq3Bo+ZFrjOsew14J5l1 HiQ7fwVE3kuRy1XgfcOjxlmKBLPUugrHJiB9EcC75U+GYDmoCulx2Ajz i3OrjSlLTqPA4DHUHrLw/7vdH0HkFT5uLM+/R5l3p8UgxhgnhFsPuMgb wzg= +_465._tcp.open.nlnetlabs.nl. 3600 IN NSEC _587._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +_587._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_587._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. goQclScpZ7pyVwV/6ba30UzXIYSLCFHYiDZoexujzec5UyyldnSHKPyA 40RO/mBfBsPuFX95kKf9/Q0rEAvbkabFrDALF6q+E+tjm+euShG5ptLl 0LffMAWwAstO7GbWEVyUSeHbUepCriySkX7EOyF/pzogbYJszcPyi0Gx yKY= +_587._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Yi48gewLlpJRjqG6fpZWmkv0Kxk7Pg/Qbj2oB5qnhFGfsIwA8D6QsXOP 8MiAk9xpOqde4XClqMBgHHLfhNvV8M+BWYYkL8bogTJ06qy8Zapruovr Lj8b9r+blv10Lq3Tjw7Qds9vEHaj+09Tcj/cw/167b/DbLZS3+za8Iwy SdY= +_587._tcp.open.nlnetlabs.nl. 3600 IN NSEC _993._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +_993._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_993._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MvccHaWe3+AM6rL4cPL2s99ZDzlDMU0VXlXUpaDCF0IUH2dsf82cGQCJ c/kBUP9UEl56tA2u2vrgLXbh9NT43BhyFX1kCWu99qk2qEnynkHLVUzi 5guEfQPWCCTqeZe8VPUpWJWCde/A7VGgwO5TWLVd20eJhhJTfZamOp7+ 1TM= +_993._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ihehMQChNgix5cY/bmRayJfQQR7hnI2hQggMDrBxULz1STnGp0GdG54G /manhHVa4XOZ6i5VM36SG5tH8IVGR4b/Y1tFs8UWUL6MWsK33B1N6pFJ 1wkjQpPy2DY8E86CfPoHk+KbUa7DKeSTWpVfyDYZ9UbZQqCTg0eXzz1w kL4= +_993._tcp.open.nlnetlabs.nl. 3600 IN NSEC open-6.nlnetlabs.nl. CNAME RRSIG NSEC +open-6.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +open-6.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +open-6.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Oyq2exHMspmfO4i41PeNrHKe4ah66TkDYqetQFWrqMs/k59vU5Gf+AU0 sLdb6glLxiK/KvoDtOF7M8ykNbJ5Kct81jggSQ8dxIxu/t0IxUDfv9cI gghaOBVv+jDY1jN4h5NcmBkSCNvK+R+NMcKXjMzapYQ1DfA1Febs0Nal lRQ= +open-6.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Am3Y/raCbJqpkK5zmeoMnN1pFY4pY8HTMILzwftn4DVjtwH99yhWMHtn mp+Imy64CzByEtbBrsOplQT3HZ7yV5gq399l28SlZVRPCSokxmhmiuYY S5TjdbLrXN2s880wRDJ6jixFKPc5NshJm7/N3wHDN6zBtLoPuL+WQJQS CIY= +open-6.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. KmXVsqN9xXvj+2BC0EjmkIYp7kn/zkn80rHPH3gEL5sICJtjtxURjBPr IDV+t8aJ+GHmNx3lLm/nuOZ7xit1v1hqAw+6n+xJ5YIqI/uk9tk1WId9 WY58/zgXgb9ZpS7cHzHbhsVN6vmwLnSLZMqTF41rL5GM3c4nDoa8lua+ pnc= +open-6.nlnetlabs.nl. 10200 IN SSHFP 1 1 74CF48095EAF33D2097E750A79715908CB16D7C7 +open-6.nlnetlabs.nl. 10200 IN SSHFP 2 1 CA0D875F829DA13EEAC25C580C495590C12583A2 +open-6.nlnetlabs.nl. 3600 IN NSEC overview.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +overview.nlnetlabs.nl. 10200 IN CNAME nagios.nlnetlabs.nl. +overview.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. llVmg4S+84ooK7vBJitlPJBnf85dwYSBf+BTuIuaBsOKljIbva3vSz/i XPxeHjrcKZCskyc9FoBVaZ+mErMxEeWVyO0XLzd1clztujp2M/p4OuzV +oEV8MQqzUOIN3YmrB6keSWG1jQdW5C8q0F+XFX9Sz4UfvD3kqwXwofz +Fw= +overview.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mQyHHlYkTF5KHfmWMJzRmSQi3BofhZmT/BPNbKTrvJvrFg66uTFc31pO dw6CKLE28O+uSxD9ofBMj7tEPfzk/shRpJM/GNBPW2RlX4dMHpQOhczU 7m8SJUY0KCh+CrubjySCLkuVrGJw5w1VgccLfRLaelyvXcV7kgVP4qiB gtU= +overview.nlnetlabs.nl. 3600 IN NSEC pan.nlnetlabs.nl. CNAME RRSIG NSEC +pan.nlnetlabs.nl. 10200 IN A 213.154.224.38 +pan.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qcO14iakQhiWIU7euttrks9lzl0UXqyDU6nJKZzKJwtC1FPfvgjR+Lvu cEERLj1bIBEHYANQ4gA5c/k5elUA6y7V0L4UItr5WVNrpWYpqSVqHlmg FQCm0M9ZfrmEDNBUxbjgxJI4kn+JB1/Oz27QvRLCjepgpYe6Mv42+afo xHs= +pan.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dt3fEtwZ5BILJYZlCXeLkB2ihYHUSOui0vH7PjEE231XDn7+fXbOPrLm DcHVthO3jKbD8+F78rwSjU2r849c4b2GuQdj9bUsKvH/LnHI00iKqeSL d4AUQv8KhotGmSj6d4dfuoq6cFYxvI/ZiMtiHqO5bUA+UzndzwmJVivs KJo= +pan.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. N8xJgXmWq0/VhVwJ7WJR/GmqaWVw2xzGrQakfQqkqEO92w/fhL9zjFI/ Lr27vb+y6Lse9Q+5H5CkNGZCHjzlHek+VPHYW5KyPt0NYF4df6y4vLEQ IKEiN01Wwuu90ymgfN5g5oaBseI9eRwSvminUx5m2bsnOZyUqsL1EWdW LOk= +pan.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21c:c0ff:fe11:b9b8 +pan.nlnetlabs.nl. 3600 IN NSEC parrot.nlnetlabs.nl. A AAAA RRSIG NSEC +parrot.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0:0:213:72ff:fefb:12d1 +parrot.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0TdkHgNMIcDA9FDweQ2Te7gMcwXhFhz+fxQoMVeJh0yQU76XDfZZ4xir KUoVAQCDcYxCqZqUUt6vhewhnLuMfodmpzoaiMwjs9Zgtg12N1UZ6ger JidO8y85l7oqyGsBWak8UTnmYw5oFFvmKCN2k+v1m0jmlzkRCjCISZip 0sw= +parrot.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. POCqtFA8gUzRqxaXcEOBHZn1yry2mxIpy0om10sMJk3EcdAzvF4Dtf+o HN3So0+ADzR0GQpg05hoVhObDBEfw9REDQcMYepnSOdWwhu5RRaQO+3h fYNxEryu8luvSkLMNZXoOO+/l2nb96NoTvFwXRbIEQLwszchfuC+Xv7r 5Lk= +parrot.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. l1oBqeTCopzMHtx9ODkGAEbpAyovWJcLNz9smvQ+fbMi+zmakDQs5xtF i9QOwgM4GHY5Fo94/7QyD+nZwqrORCRdTI+d/VKdRnc68qHZPIhbQTv2 NFpHlwOlXjoDH3kO5ZIoSpdIMgX/Bv6monOog4zf+0J65bnYGiejt7uK zAE= +parrot.nlnetlabs.nl. 10200 IN SSHFP 1 1 236402543271F5A0B9812DE20FC4C2C6A67133B8 +parrot.nlnetlabs.nl. 10200 IN SSHFP 2 1 C6DC2F86740D2647D38F29C23176A470C5ECC99F +parrot.nlnetlabs.nl. 10200 IN SSHFP 3 1 BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +parrot.nlnetlabs.nl. 3600 IN NSEC parrot-eth1.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +parrot-eth1.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0:0:213:72ff:fefb:12d3 +parrot-eth1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sfBEjmSCdWdozdVIniFnRSCKTHhEbmBjN8V0n19HhXa6bEbgemeACWb0 vthlt3ZVl7KLXo9XYFXCRZ87UJZDK0u+ID3gMlPnhWeMkKtI92EiBc50 f2IbMsHFOz5/tiXRxeNoypJStgp3QrTajebDOA9LG7bEkZ48QKu5zw3I vY0= +parrot-eth1.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0Fd5GLl87/JcvwqvV1BSt/144PuqI56bT6Gnn6JdI59zGRfxyL7GjkPV EOkVLtkVC5w08/vfamPcPJNYvqWemFnhPqfRYm90ODajuBN0XlioMFv3 JvUgW20ZcwU1u194h5gqh+BoIKlUp1BWTCLLOD+giZNLXF6j19ZGlQzJ gW0= +parrot-eth1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. NUr+xC4hWfWQhVOPBZK9y5fK9VHJwdo1+JMLsq+RACGsg/jR36fvgo5y 1BeRDxYaANDzsnl0F5g2En4VdspS1ih6biLx+OGoTu/UC/9EXin3aEbH THjpgHlZIG08ccjNIvD/Z23zEjWWlR4w5A87fnSpQkNd6fdJ8VhCIimG IDk= +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 1 1 236402543271F5A0B9812DE20FC4C2C6A67133B8 +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 2 1 C6DC2F86740D2647D38F29C23176A470C5ECC99F +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 3 1 BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +parrot-eth1.nlnetlabs.nl. 3600 IN NSEC phobos.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +phobos.nlnetlabs.nl. 10200 IN A 213.154.224.103 +phobos.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. LS7vn/C4lWw6mOu4qfiw1a61r8vZA8dK42CKE8h9OF37Yw7cH97tKuWf k3DvQzv88KGYYv6FK6byf6WHVD9e8fMiKrG8uKLjtOP5zICuonn3EstG QPT477LEs7Zuc7QAEoutycyCfuOQXoy0riSejJk9tPcSmHEtivRWC9wc F4Q= +phobos.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jvWIJnF2Elk+FIBDyQo7mE4yiFtn0NtxNNlV39hgBISHjw5F6QyaeW9R mgtvYzLXtzjN7fDbQrPhwkqrdQVaKJnmFOGdIOwQwhtKZQ2Fdbupxu4l A7x0abTJHk4H5pXx4AMIfVhOdQhZ49Qk20gq6te54t+/D8BXcjcOng5b hBI= +phobos.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mdbv9U91f8wXQlvdy5yAEgKxBpdlpFSFKLvdKmZ6rOr682YKQk+1YTTu o3Sg70X3dlw6YX4imC/a6SsMSf94RFbWRm58hROyVJ9/rXfq737A8cBE 9BoPGEI+cTFs6mqPp1hMaJ6aZDF16UUuZrSeUdd8eqMYA4OHcHEroNhn pQc= +phobos.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. omYI8kzjf3MMy9Mt4Rtti+Tihloq3NnW3iU3ET5SStPytmd6WRcdHtKt dTHNQ4dExbNqo2l7Y9zyyqQRI8bCmjAJUU6YRTIdDMNb6yhJfrta4oCs s5e4I4DT4BFAjAT6HPe/0k01d2g6kRhZ6MWQhrS6ZoMs+/7zUg2TVJel 0rs= +phobos.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:20f:1fff:fe68:f6b7 +phobos.nlnetlabs.nl. 10200 IN SSHFP 1 1 CF3E74EBEBF9DE88D1A14BCFC387C00607E682ED +phobos.nlnetlabs.nl. 10200 IN SSHFP 2 1 241A96919F7837B20DB540C7B1E0A0A7F45C8A07 +phobos.nlnetlabs.nl. 3600 IN NSEC pluisje.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +pluisje.nlnetlabs.nl. 10200 IN CNAME fluffy.nlnetlabs.nl. +pluisje.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wvrYn2ddfuuz+F25+djaF4fMqngq7KQEkFc+JvRMxgvBFAzt0ZIhN+C5 6jm/S6g/6JJnGlTpEnV12LC6elFNfwGqosHbtvLtzlQMCSrhN2uL40gw bRqiXZlk/oiPvnKmFcbj5lqsfPodMb2n3wY1TH8LYgyNhTa0r0DfUTi8 PM4= +pluisje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kEQmdT/z5qLTCK/gEraX4rrw2Ej0yeU8Q+rS8DTHiEdgwOPBFB+N56vj ctdaJ0a7noy/BHv7Om3/IDByF2l98a3iyoeE5ajeX48/suEfhmO5UXAJ rTzMnFNAYBwRAslxSzZjyZzQk5Exr/Y7aAJFM6tSzoF+JBGPN64f85p0 v7g= +pluisje.nlnetlabs.nl. 3600 IN NSEC r2mine.nlnetlabs.nl. CNAME RRSIG NSEC +r2mine.nlnetlabs.nl. 10200 IN CNAME mine.nlnetlabs.nl. +r2mine.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kBw5IuIr5ttC4RhFKGLEOR0SSfhIdX3j7Z+kg7ggCow9yExYbwkuz/Y1 tnggNZ4AvKLOUZ5UQS0V/xH88EU/wCx0BTpJlr71spWCQBdxMDhrkpUX ePu+scyidecO7AXXSWvDx15vDOf0S5BeA8EHs127LInqzoSGg7J7R8+9 dA0= +r2mine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FpvUXQc9IneKRoNkCurtZxWanQWYBqaTg/czpoRz3sQlWXzoHaT1UF7Y FG9OKPpdwIJYE+nV8PyA3Wd7xPX1MDwt+8U8iPUNiEINxO5qpkTGpahn 5R2UknhNklFJGdiQlTRA7Qzsur5vb+t3ICf3jrWItgb4xjeSIi6+q8Nx urE= +r2mine.nlnetlabs.nl. 3600 IN NSEC radius.nlnetlabs.nl. CNAME RRSIG NSEC +radius.nlnetlabs.nl. 10200 IN A 213.154.224.147 +radius.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fJBTy4JsvhdLo1qHE1hp4WaATNb0djQA6CfAheURONSXXSevffm8YSQR OnAvLpnV6A6NyYBg016PntBlwVcX9cs64toruC8RjC2wlFezwNOu38o5 GHlmNBDw4npXxnfut2U0T0YpizAng3CWhBbPuxSAyoPNEV6kGkGBbHG7 m40= +radius.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0hdwIH2wWkuAJ5Hd+2MjtpuNLNRWOYxgVcBiGdQk5erqew/IHOHBgwc1 SC8nX7kQDxXiv/+IN41kMyBfYkfV731jl3YmMFitUvqeJlcHv4NzansP lffhH7hP88ncnGohMOVQHBNHxyPk3GOqmncDlHBmHqEGMrf1GQUzVXtA Hm0= +radius.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GvwldMcwKdCNY+qaCE3BrhG92MyiVvmhGDMeFf3PDtl1Qz9655QU3c+G 3XmBXRg9PvAjujQgKKK5y0rvuaTwWm1P4ROHzKuvJXRn/FVSGZGkSL8+ Q2RnpQJ2HrLk5wB62MxUVFthGyvlLU9L0Er9w3PYpl0e1riY3IK4f8Io 7dw= +radius.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Hl21MfrpPL38hrJAL4rh1MbjPEaIMQ/CZ8mfo5OUQdu+ob5/xHLVwnQI WhokTJxUE2DMb4FaTMKfZwHKpSB2bd8+URfbzmCq3pKkEO41vHb7/aL5 o2qLl7tptX0Bq/8aSvURorHp+UB5NRMusB6934ZtgEOBr02cWB64807u fNY= +radius.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:29:: +radius.nlnetlabs.nl. 10200 IN SSHFP 1 1 5E43419E9239E5FA11E9FD62E43D7D2DD68B8E8D +radius.nlnetlabs.nl. 10200 IN SSHFP 2 1 7204FD27ED4E7C8606AF3BF29EB4932BEDDBD3C1 +radius.nlnetlabs.nl. 10200 IN SSHFP 3 1 2AAA7EEBA4B08802488E1AF6551C091025C7536A +radius.nlnetlabs.nl. 3600 IN NSEC redmine.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +redmine.nlnetlabs.nl. 10200 IN CNAME bela.nlnetlabs.nl. +redmine.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t7CJUbPwpB/azKMmWXH3V3GG65MN7OotXeMEPUruzODk6GEIXqjeN5qP GVYWjeKvMT1YUJo5pXO7Vi8iFpIIGFSH+qNkdubLJTRv2HdVPosLeoaM NLxn6TxHNzGiGZZXfkCnp9HWlV3cjriQUhSTIlJyTtCD35iMxUP2j2FB e/A= +redmine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kx8YirhrH9dA6Q2hPs19DXAGhSd5nkku7jM9RF1UkaEJCvHabz0uMhQm SLvPoDNrd+//NIUMxt8feQAlazcCpH7AqYbPZLJaEgvxrH/IqvVulvCG 8d1ATMPWt73X1Viri6iRZ19YvYZmDSznSPi/Prr20h1FqSBtdcF5pjkl +l0= +redmine.nlnetlabs.nl. 3600 IN NSEC bind.resolver.nlnetlabs.nl. CNAME RRSIG NSEC +bind.resolver.nlnetlabs.nl. 10200 IN A 213.154.224.24 +bind.resolver.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yG5Ntd/LzsxGgAYQwdn6ou50nLynsluEGdX5E46nTUWnWlqbgRlTplGp INfIvHf3+lw/8h+5rrbMTrjlFxM9d5vndtHQopu/+8X5tDQ4r+MvYDnt tc7VeaVF+pVMHCQqREglPNgQqj+FI1syT4jrn0WoHXqnSqeVrCAuM4WA uCY= +bind.resolver.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZtKBU2Qm45WOuyS129N4jD5T7FFOVLnycFh8Gh30y0VvfsegUB/r7CB/ WYQbneAZybpQHKVxCD1eeb1Ph8DL6NZPOE8RovJKgZyu+kr6WOgC8XJI tWh3eHyTrYr1X9gZrb652541ru6p+xD0RNCCscWGjh0tCjpDnzyMvBI4 CL0= +bind.resolver.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. L1lECC1PpQAjr9URo9tkKk5wn9OtDTgGKw9pOQDRhaYDONz2SF4IKDvS mZ/0TtvnJN0hDkAE527sQnUmT8YSLJQ47rGM4THuQ+2oYGSsg+6jN36d P5Y/T92/xDHmTm8HXUYgp8cqj3JxeotVh6IGxOvYOeDY4e6h160v5REh IUk= +bind.resolver.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::24 +bind.resolver.nlnetlabs.nl. 3600 IN NSEC unbound.resolver.nlnetlabs.nl. A AAAA RRSIG NSEC +unbound.resolver.nlnetlabs.nl. 10200 IN A 213.154.224.23 +unbound.resolver.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RrMF+z/2cgJWIoYquPGunx7ZZGuNuQ6iVAOlv7kROIO6KEi4ODdX4w7K o1Z07Fj+MjHZoiC06gvKw0KeYBEBKolQVfSIYQKuLF79CragWo6kM7jp gdeuO3NO8/vyDL1VNVQMu3nG3WkNMzDVcgdqnF7ik17cKvKEonT+tjS0 7EY= +unbound.resolver.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jAwyJKZ/3mRdr4ow4uLpGogNQCgyfW6m1vdn4+GRBiA66obnURbvU1X4 M0XXahIxiUyDg4ADnPCcojTDL5gy0NCFA+90traVmrTjrUapNI1FGtTr BFIReMDsWIQFoBHEn3VASmPKSwkKJF99fX/3OA35YP5c3dC7hho5IUVA Yns= +unbound.resolver.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eTCj4a3CoycO0sZgtdar2x+kNG2Myiqz2z/F9zssqzvSQgO4IagGBdiL QHPG7c3J5HhrmaBYLSRwVhcwuZuXJP808NcTIS2HIBInWPXwvXpzxcwZ 6/Y+jfklUkF5O6sylq70PAAoxlLuhNbvo8rb9yCoeUduLjAZF9Rxu3SJ a/s= +unbound.resolver.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::23 +unbound.resolver.nlnetlabs.nl. 3600 IN NSEC ripe67.nlnetlabs.nl. A AAAA RRSIG NSEC +ripe67.nlnetlabs.nl. 10200 IN NS ns.ripe67.nlnetlabs.nl. +ripe67.nlnetlabs.nl. 3600 IN NSEC roto.nlnetlabs.nl. NS RRSIG NSEC +ripe67.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kbD8LJqwGS4qPnHCb2N6FdmLzwWAOnFNkIoUx5jOBkW+BTUhAgp8gQ+Y cX8xyfg4woDstGvUjOWEGVkdS8MhadJrl2ucQzL0kb1jNiiafafcD57V N0CsvzVC3ruxxh/A8eccGkv0yEbKxFQRb45nsvSRGJRcS4tMPhblFQGt I3c= +ns.ripe67.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::2 +roto.nlnetlabs.nl. 10200 IN A 213.154.224.153 +roto.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. y1kiF83qjlxd1oljrYYOQrc7jJMI0ZZ0rN6/fWSd21KuO8/T+ooSru8K VBMxpNJKl73QTok2jA50ltDmDMKfnRheJkPmKZvRt+vLLDonydaICZoh lY8uvom9ltzVMjrYP3iXGWU1XOWXr7JLLoQ9mZMvJWVGXWjp5iXSOGWX NYo= +roto.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dzQrenpuaTpKlTQmSd15Dff2cda0iYdPD6KpqgFF8GeGuemDoEwoXz9B VRLDrgJ+ZWYLmz8W91/YEYT4VP9RO3Yi1BzxgYU7EGFEWPMR6Vzf7rEk 7hzrWecNeqaL4oFvI/wilLk62i8QD8bKcxCt0rPaGfJxoDPfY05qPdMO m1Q= +roto.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. CdL8BtJW9Wqe029pY+TltXiUQ4d8uqTWS3CoNY4zydtgVCFEtp44AxHd RS54SL02KQycdl3gKjKPIieamHlZLhbp/McPNbo7tY+IztrtaC4SsnPu JNbrBZIfD0XQI7rD3offcXP+ohGA9TFFgShLU+Qm/bq38dc/PWV7mLsg 9qs= +roto.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::153 +roto.nlnetlabs.nl. 3600 IN NSEC rpki.nlnetlabs.nl. A AAAA RRSIG NSEC +rpki.nlnetlabs.nl. 10200 IN A 213.154.224.9 +rpki.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GRIyLlIuavadjmxNRkBG4ppYlTQd+RQIdzy3PQsaJWJVYv0z5OFMhrRH mpX8jBw9RJgtjlG+J6xt8JW7ntEDkrdtBz7h6DaBak/1pjHcu8M0hlQk T7A6wCAHLZcX2aEDfAjlnNO78t//q/CEFbPBJZK9KapHXHI0pE0Nw7OX HHE= +rpki.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. uJGHGPjxkX4b+cMYcqM8Fez1MagGI5w+OIJMZZC3U7l8idvDY044K/TY I24aKFzpwVm2YVblSc1aVQE8cH/bS+wsAPnEXLDhIDb8bk2Sc3xj1yWY 0e1EXcsmIZ07c0mQ3QooSINAMovOxPZKYw3MFHfDCDFUMpq/ckmjMGKK 17c= +rpki.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IUJjV6hFMOBLVIe/+GbCMryMe8nt+8JB+zm73uSxuejOc1rXfHv8a2UX 2V2/ryIGRFy4wtY4RD8FMrDbbjGHA0Ko7A3g2LfQoOLTIy+K6OQXpucy QjtPny4XLxabnFE2E6ENJlLM4y0O7e7+SQ41ChwGKDwXt7b6oSQ+7BN2 nLk= +rpki.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m1DNlx8bpTFC8oSif19erJCdXn/SXJGIITcn4e8z5NSWF+/9rX/kfL75 naESKWI0fe0vcSXSoDYpsYfVeXagrvzRF64jD+UPRDn7hYQFZNPbEDTQ q0ziUoqmwsMLQ0RFJeOcHn3xc7d+x80hKIH1X2sNox9QhUklsdCrPjUM r2o= +rpki.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:bac:3:: +rpki.nlnetlabs.nl. 10200 IN SSHFP 1 1 B4A8A3D4666C1D78F12E7EC01A8CDA045D263B74 +rpki.nlnetlabs.nl. 10200 IN SSHFP 2 1 0C494EEF742E482001BD6FFCC8AEC370D1A8FE3B +rpki.nlnetlabs.nl. 3600 IN NSEC rt.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +rt.nlnetlabs.nl. 10200 IN A 213.154.224.1 +rt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yxJ0Ay+cLPvOE5GDCHDjnfnBCFt1qVey+UPxnT/E7uCvRI4utYw6RSNc khZuw1LTW/xD9DICk0ZbHKKGCAkvek9PZ45hsK44htY3JIhGCltkYCdb Ka/mMn6k9bXeXv57GTRssxZTDwT/bKgTjiy1zoPafZOtzH6EoT9mBLrO fGM= +rt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kbUHtoR8Z1G3WvKZp4xFIVJaBohRW+TwTu7ZfbOWBRpKeNqXDgQj6cXr keBZffvDMIwA4mnWGdQs4StVL41MWVbaUWBTJJ04V4SzUYQ5A+SkTCDF J73KYxI700qkrdinE14MVruIhVeJ2UKKCUPJnwz5qPy5OTMDA1NYwnV5 xq4= +rt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T8AW563ChcUQ1mfcupyLYlBHuPG3cB8rsbFDVtgx+W+1hmje8VpsZ86+ l8UEwn4RV8cFNP6guysaILhbkmD7FE3ddHYB5HvJ+HOlcOggw4qUxg5m 93zaPHs+RH6ZUNODlX4F0R0df3iRIF1NtqIqAQPeY64RzJ5arT97Lo+D KYE= +rt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +rt.nlnetlabs.nl. 3600 IN NSEC salt.nlnetlabs.nl. A AAAA RRSIG NSEC +salt.nlnetlabs.nl. 10200 IN A 213.154.224.145 +salt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. f9TXqGtRacLqlbsraYaGGVwlQn2ROfJVlFBxKHy2NheytNBSkyZkDk2j WpHd+r3LqXLgmXvaJqsaNJSFQy+gLk+UsstxO6+hKPLjWUzHw1DfNrV4 Yxj3yEV962TpymutVrriFJ9mOCXs6axeZu5yKfFNgExLYlFb9EKVrE9j qAE= +salt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jpIAMdn+yE5u+DrGPgLjjRRAsDMj7g5WW+dxPHrwhftRAHzSbDcK04EX xXCe0FEGB0+adaUe7EJWXNn6y9ynU/leoaJh3pyQRYhGuh4dTP3Ukiz6 1+6zgwjmcHylZQ+AWkgmThvcIQNESWKHffLwhpzBmAKssSa+sq+Sz2c0 X2c= +salt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ltSpG8ueYMcCSOqbikFyvtAvocp+vhIzw8ZfgX7cu/e/lQqa5qgrg+RH RpKwmGsAQIhcXO/Zb/WW0Rt92M/ESCFugF5tgKpDZaJSsuaa9dNpO19L q1G6hEaYyDCrHtf9ZBdimSnynUCsU1+qnjlxwMxJ/3NEatutfW4KG+Bt x2s= +salt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:27:: +salt.nlnetlabs.nl. 3600 IN NSEC sane.nlnetlabs.nl. A AAAA RRSIG NSEC +sane.nlnetlabs.nl. 10200 IN A 213.154.224.6 +sane.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O7ig1OuI9UYW/DjmVh2/pSqVHQwt9ohL1yxzrPWAlbxmALTGcNHUXdG5 kkvRw/6HeA83QdLa2D10k6EsTruTokBWE8vYQniGzDjQLmKBCYJg1OlP kyJLdu3jfGI1ia7nwvi8xuB3X+ZMskKohJiNOBy9WXhxnSzh8I07o/pl Kfo= +sane.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UBHGS9aDr3+y6bBpm4B4Kc2ab+MNk48THfkDnDtXovlaoGF4oRryffBk bv8Ajcm7qCDfGck9kxMU4UqCQFE1GlQofXjrpFEt8oipSXy8K3UqSE2u RcrnuQ7fhWs0bFC6OzMrRsIBXIXimWdxvyHWDkoSG/wQgG9haUcrtoSC nd4= +sane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. C3SE5g8NfjlWNWpVqQIfb3i0MuhSJYpDB6jlgjcaq0UNHKeSFeZkYj/C 8bBfaDxkglgzuGth05WX+T60Hi5mJ6JlfxOWONvhcoaumifM30KDTs9Y yWO0HLseMjsQ4sN37y07ETfw32W/wMvMhps4CEOoryKlbxCDmCub9+1r vtE= +sane.nlnetlabs.nl. 10200 IN SSHFP 1 1 F899FD53D7C64116C900636BA15638CCD243AC64 +sane.nlnetlabs.nl. 10200 IN SSHFP 2 1 49B299B7BE787B5D789D2AC9A9532A02224CC59E +sane.nlnetlabs.nl. 3600 IN NSEC sanne.nlnetlabs.nl. A SSHFP RRSIG NSEC +sanne.nlnetlabs.nl. 10200 IN A 213.154.224.39 +sanne.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fadzGqTonVd4jPT7LZvPIKDCxgwWV4Vg6gOHBUuQkDNZEvvnuKylu4Gp 9TIbuU6EVey3HgDNk/7EWdNOALYkphedqtpld+tXMNogMGw1UM9fRNTX CdlSAHEAgUxYIzHV1yKtc6msLuTfMoovARyiBkAasROtuYrXqsqJkugr Vyg= +sanne.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. meDGeRhWyWkTRdFmEqO0C9BNXGqWBrCWQdiV2o5pz+jSB/4mCNP1p3Kf mWYjXE5LwHw53IOX+1XDt2lDYcI8mL8Mt8C/J741AOYiqSMbDEeCtVGH 3S+akKpASjNRx+d4j2t5Q+XUUAq+n2vxkkF6n3/+fvP3B7mjOthquQK1 qCw= +sanne.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NjmbH/jAxQnhDBTAIxrQalH1Lns7IDq2MbdvQS4WPgcle9E0MHc+QsKF k7NwPCjRG+LeRK0k3BtlLZ7V3+i/vBLZfrTRY6oDCJG4bDx5tI7FEGlH tksHxqwl1+/M6Uuq5RmySgI3IYudkZx71o++sptVk9P51xwqQ2K573ya M1k= +sanne.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. suJIyytubaP9S9EFEw2APJbrdQe6Qmjm2nBNz+/mikPGOhr4DMS6pavq KT+0LmW/OIXwZAC11CtpmR/XTicPvS28knY0lg97pLbKctfpzfHfx412 QVvbUpECFZis24bFLTPa3miJQ9MxSL8r+4eVI4iVwIMb3ok7oHOkHdEP 3gU= +sanne.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pAGaxpjCR2F5GoM2+QdSzdh1nxVC1RZuXdKcfTDfPERpvFnuxsK+djAf OqeagKG+VieR8DM6TJGiLkgNyX0OcsBM+QaVdK1YiNZdoFQGyYLgVnNF LZO265ASuZ6czkUCBo9EV7N1B2ICpC4x9gi4ATXTezXDwuR/RyCDsJlQ QsU= +sanne.nlnetlabs.nl. 10200 IN MX 50 sanne.nlnetlabs.nl. +sanne.nlnetlabs.nl. 10200 IN MX 75 open.nlnetlabs.nl. +sanne.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::17 +sanne.nlnetlabs.nl. 10200 IN SSHFP 1 1 F66C63214C667F9C6E7FE0CD3279E5AD373A5F08 +sanne.nlnetlabs.nl. 10200 IN SSHFP 2 1 3BD2D7189B791521CC000AD9A35AE3CE98926C93 +sanne.nlnetlabs.nl. 10200 IN SSHFP 3 1 692BDF4A4777F7FB0E4673F832D552A56FD3C532 +sanne.nlnetlabs.nl. 3600 IN NSEC se-dns-probe.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +se-dns-probe.nlnetlabs.nl. 10200 IN A 213.154.224.5 +se-dns-probe.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hGmQp8vgHhNGswmM+XczXL77WmzXFeCmIJkpkXvAFH/70/M+HzhGBzL9 2Rq66eFAbLh3QU8pm8tGO1vIXslBfsWhODAT+b9GG51BJd5OIEmAwdfh iaS/isugBpKWP2bXieVIoBOY02cxFcxykP03hLJttC673MVnBxvmBXKD fs0= +se-dns-probe.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ABNzrucGQneFir+fsfLHkbLK3APBPb6C35Ra96Z9zRD8YCuFplpDugd6 n9eGuKx3RA5EHLU0NGptsbHY7cw/kg1KI0nid0irYx3hTUgFwuVYIgR+ EbPQS2CmCtYLjG243vi6r3YT3ZYJELyboZq06TYJOOOGKWjjPmfNmCUn I0o= +se-dns-probe.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mSc9rnSbd4W3bFxECQXHS6oMuX1xSjsBPFVOoDF4mMAJAKyXRQqJH6qG GWCcLnj0FhKL6uI/bDeEI8Frbl9OsPYDpdIpfuekhX18OYYj/4u8PxVX B6ff1nYMOMkHeV6ETk3EpPlHGDUuwbQnFNrftgfaMG3wO6Zof1Imxpkl sw8= +se-dns-probe.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::5 +se-dns-probe.nlnetlabs.nl. 3600 IN NSEC sidnlabs.nlnetlabs.nl. A AAAA RRSIG NSEC +sidnlabs.nlnetlabs.nl. 10200 IN A 213.154.224.142 +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. aBg4AmnxgMXCrPNkujYPmPja06WS1YKkyUcl/laFxSMvsOAkhOVYieBM I4dx3pVVZL2Mer/1bsHzY4O4blsYP251eM6tOnsBk/J6qEM82vpFvTzo hXcGyyo/a9GqI4uLdyfZrqcWsCk0wtsrkorFdvJNkOo2pmVC1dP4/5DV gRk= +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fw4HbF1K21v4HpUwDrqXRd4DANDJdmVAgo9B/F9njZeJmwoIwI9vBcMy yZyMDJDJrew8B+wrb9NWcjA7OxwknoFT4Q46t5/iDf18TWMvWksULzl4 WmH9YAJClB1erTL2J/wF+UwgXe/3eWK7s5X82m6oD1rBfTyTuDTfBb5u 5Fc= +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PWWgbRhFOd6saSKSIUSAPHBo0+ELGeDZFOVGL0scgQ+AzFSjp5foCHh6 SbDPnJwtID9puRpzz4awce8o7SBsBLXR6nTMBPCoit+ss4PW06FLgGRN +wP9X/amEa35K4HTsjg2Ei/UOBDHlPYlZ/lZjVzpXszSxvZV/wxPP0IM zxE= +sidnlabs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ymhmp3h4uNxMcxoedoaw+DjJV0Q6dSCuaHt60QrH+VDMxlJrGblEaZI7 HqKMN7qbHcAliK2jHpLVByXUoqACQ7Z9DhfHpWA6ZONu3BxHlWGEUyAi Hx9kkft2enz5kZk3ar7UUm0lhLmyOSkdTH4rkLl2/qlZodG4OcA9wQs3 xfI= +sidnlabs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:24:: +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 1 1 2E0AFA0551B9C86CD1D885F459E189A8EF93701B +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 2 1 C1301EF4F4820AD7723DD382A0B04AE3F03AD13F +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 3 1 5811302F8A3EF03BC32BB1ABE3C747DD7D9ABB8B +sidnlabs.nlnetlabs.nl. 3600 IN NSEC sip.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +sip.nlnetlabs.nl. 10 IN CNAME obelisk.nlnetlabs.nl. +sip.nlnetlabs.nl. 10 IN RRSIG CNAME 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. k+E7pjjYulbrzA3VmWHtOBNkR3aZX7FO1DL+/MkkxVSIfxFlvOLIUw0B IZH7EE3K1tUks37g56YNKP1MWlKNX9b3pK0aPWdoBCYEPwYjmXjZvEzQ cQ7G4A5C1VTnzoE5KCspWgNKN6rZs2PaGCyhTmrqzTBy95ehshT/JIjT mAw= +sip.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ujMthN324h55Zv1MigdBXV1S97zKNoudfu8AjpKU7kemksM6nVqM8NPY jFWctpHHNkqeKiQrlv+Ve+0z/WVy/PV2hrpEkDYJcEuORGDs3ke6wqmZ BYJauSyKJzlFTKXcVp4cS15sitz7uL/cc3psCfezhq2L4F+0ncVte9ke pUg= +sip.nlnetlabs.nl. 3600 IN NSEC sixgate.nlnetlabs.nl. CNAME RRSIG NSEC +sixgate.nlnetlabs.nl. 10200 IN A 213.154.224.41 +sixgate.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ob0TinB+qsbzvQi1kk8EmldSN1kY4g8PdEEK4+3aNnZwylUr1xZDHVIP n7vm5ugV2PdkaLkjt9l7dEyEcq8r1TeB9316XDHRfv4ZAF4BZal0OUSF WoR4Q0rGH17BJLXHIRKfcI73gux4YJjBIr5BNHh0gKkK5k9Bvt8zsENZ 8+0= +sixgate.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pXy6I4FoUVw3xGIUkpz5zhLsRRrJ85HqMMn92Row/euQRYEG7K0T3gqn CyjS8JoR6xO4NSI4WVYS2vis6w6rc+UJ+TBLOcaWTm1+v1z6CUoNHXhc jR0PJT0Ax+PW7cMlcBq1BjjYzWzvGWOpZRgeeJYAKykBTOXcXFqDvEIb kSU= +sixgate.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. K1y9fQ+W5hRkdu1ISPpV20vBhTzIbJsHEmSJB9+Di8vsUBDXxmvpEXw2 IhoVuz7CLg2O2pWsDUHq2X/UYJ4fHIrWe6yY7BPXxLxPGi7XTaZ5la9+ YBxT/nUM8//XATDV0xKOAjO9ycAYvXl1cfXP7ykg/dFeCVOszt61mGzS /CY= +sixgate.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zfXBSa1wNC+Cot0/oWacZzRjZdyJ8/N4UpahcQUaLJ1HVPZge2R+a81B EUGelJItHrwPM/kQdWSGE++V8PbZqLXf4Dsvq0ExLHQz7T2A8B1gOHyx Hoz6RCjBKVe8obA2RoxU0H09TL4o6uuhVbCx/iLr3CuJuqfv1k1g/EF/ 9d8= +sixgate.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:250:bfff:fe5e:33e0 +sixgate.nlnetlabs.nl. 10200 IN SSHFP 1 1 7EE7E899A067F1CBFF755FE212B4EFAD9797CDAE +sixgate.nlnetlabs.nl. 10200 IN SSHFP 2 1 03A80B4632B239DE059B86975D660768786066ED +sixgate.nlnetlabs.nl. 10200 IN SSHFP 3 1 96AC54D0FB9C42878DC1DD0AE0EE1FFA51936AE3 +sixgate.nlnetlabs.nl. 3600 IN NSEC smtp.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +smtp.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rRHrvP9bGHfAX0CvHiCsjcXWJpPPwgjrXNSWXBuVgSqrLHdGNfW6+wqg 8qrDSEWhJ/wTnxksy/DYfn0DhPNqQXtnQPNfeYaR/K7CWs3AAlrNWwcb /Ety1yXLXjpWLLe6oSL0OAIqFumEJz08lfJ+YDuw1WQWpl7RgQ7ww3rm 4vU= +smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. glhAN45idGsA5QH2rQ7u3MwZmL0+7vALqsiWMIqldxImOoM8CbP3OIIP 46ciKnHQpLfo1sb4gBrIIBiY7eLHSBUzgZ7vi5sJiJmQhXKnECEYBhkZ InTv6upbTyd2W83NIYWCXy5QsW87DK6rC6/SfboAhkm39Cqk9U+sKYGA 15M= +smtp.nlnetlabs.nl. 3600 IN NSEC _25._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +_25._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_25._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EuIqHOQq9OrA2ukygnNfxK7MEm1fXZR4B0KYOSN9f5hk1U869G37ZGJa YN+ouXF0FKWH/1JX1KCNeOUhd2JRFOzfxBs+fwU2NyOlxWyB0q05PT7W sXKLdqdCo5aAtHBtk0tkW70qp+oWohYV8NnCbkTDonmo4ZFwxT3+kUkN QMg= +_25._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. iEPj3e2nL3oLn+uWREdiO9ClqDqEDNPLAJd7sf3+eNeS/HtmlZURwSI0 KFCSUk8F66vwKzlhWCGuIj0Xzz5wWH1lfwnMgz8cyq9QwfF6P2kOU912 OOcvDbQr8Cxwk0svSkFuwI88VrqNIVBeyt1kvrczuPZZaumjCwNw5m4Z YeE= +_25._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC _465._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +_465._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_465._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZY6vE0++SHJ1xTJ67qCzp3UiydoTroTFcFBv1zkDJ99PrNBGBJQ5CaqB o45d5c24m5leMT8wpqDBLKQxfOb3C4c98NrgNWxg07a/+KwCmqpq5Osh TfdVURlUFLmFAyQteUGS+XB80rNZoO/teyFSP95WZuSb2JxT6ZQuJJD0 DK4= +_465._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. V9WkAYvW0Yp4cyXCsfRYqH49L3ZjAIfqH1eTjiacdQb+QiDUnXisVHwb NKfuxycdN34Hbhs+KJM5z9PGI0O6BjOXDazDf9xviEHiWJIMCtqE86h3 IHHbA/MyGiZORI4mHBSslAk1CBzm4Hc+ApBtVGQjdJAMlhG13slxBs+s Dcw= +_465._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC _587._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +_587._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_587._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ucD67wjRuXWz3b3W/8upEplI4jgEsHYZSjk3ssE2KPRPpx68PvK0Wa89 NSLfLd6KdAfo2h+3dbYcKq3IvkNj3geBBCYl5Z8BSc4Iw8h/441wAh/d F6uLeNEQGbo/3jlgdfHJN2Nm4927mgKjcc3iRL7V2dff+Z1815MgOwvM 5co= +_587._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. nnyxVRm35FWQgHUHmAlmSkLVF+Kb7HOR6yKJArW9gEuGeDfn0lFkvxah rldxR5q/BLQJe29UaHG/ySYk7qe/DneYtEkkbgvSRf0m5U6KcjyEbZRX PS+WNpy3/c+zE46N5ki2I7M2F2bU/sA/luIuOUaUuycRdBVYLdQcpQ2b fuA= +_587._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC snom0.nlnetlabs.nl. CNAME RRSIG NSEC +snom0.nlnetlabs.nl. 10200 IN A 213.154.224.200 +snom0.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. p6tnvXWmJIFvKJvlqqZmg7QuY4L2SlJ5y+9tN4LPrrMsVoe16QCOOVEV Wnk3Mee5KnoldkDsuXd2AVFWguEAd3O7r7EJM514Q6q2SO4HcZCFyuCH OGBLyf3hrfsMJMrPU+AGL4o05Jc/831lR2542AdiuPFcIlyWy5VqQpeO nFo= +snom0.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g4g+BnxoTyGBghnjvjkLazQiGOpYrrJoeo5AABOPzWLxzt4jZ7VsE2Ys pCxno3BocOlaroErahJo/B5m4YvoyscxFJdCny1pjpRxqEvP8hd/9ECv yGVjrIm/G9E5DtkAgGHoyMMrJP1aS7KpjQMfaGzNEMuhleTmI1BEh68I /QE= +snom0.nlnetlabs.nl. 3600 IN NSEC snom1.nlnetlabs.nl. A RRSIG NSEC +snom1.nlnetlabs.nl. 10200 IN A 213.154.224.201 +snom1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Qs72TTR3lszgtCc4LG+ImuiJhPABShucGlAUzkKknDsTbKEz0iZUJkSI 57vzdlfxf9vEv+FU5pwyj3j9C/JRHLz/0Az0QY/xcpmg9It2JXgeVcU1 KubZVbuEdUhexCpfLpwq9xVN4FcWb1/U/Lv/6fWpNegoILM+EobwF4CO FnM= +snom1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BrPy0ASUe0a3zz7eXCXB24dz6EPdomlObBIr7H6eTqhAdCArP7C4SMqG Au7lUgGz9FUaUR0SBhts0UZgGUUz3d6oYPzeRhPf2y1dMHE0+0X8v3Vs GCaxaFKtaRqeWMCWTNcQuwNKjq3nts3Ft5atX1R6nJEmISTvu828r2Uf 9Tg= +snom1.nlnetlabs.nl. 3600 IN NSEC snom2.nlnetlabs.nl. A RRSIG NSEC +snom2.nlnetlabs.nl. 10200 IN A 213.154.224.202 +snom2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xEJyHu2bLfF+opztY1JSHjkh8eU1Ui3ukVfR2WNaZvDJx5cz37XDH+AE nT1/8f88N2xFN7SPH0wtbrknOHFFHt40BGTp6rO+5oM1smTXR7HxV6QO Oh3ocwm61M7vVac58bEV3pGaVLC9fqEqLabVJgfG1QE5UzI3PJc05Q7e 06w= +snom2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. GQfH5liaXmwNfE6O1CwicoNvSQ1SDAoZt1iw11E3cb8336klUnC/mMsa OwRCuKnXavB+hUQRk/Y+D8bWQ5SXVekhMP+4waEwZre7Z7hdYdAFYX2R tPikAfGrJNnVi8PNbEnKFQAIC+OTaEfz3oBorWaN29B1fgYi6rP6Ai23 6oI= +snom2.nlnetlabs.nl. 3600 IN NSEC snom3.nlnetlabs.nl. A RRSIG NSEC +snom3.nlnetlabs.nl. 10200 IN A 213.154.224.203 +snom3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jdM0Lbikaa2FjDMX+APHMpE08S1D6CLnydAl+wyODMXM3cGwwWWZpSjr pEAakZCmCjaAkkXUAezZejDaTQBc9gm814KbMHHANsVQtrFoRBDN4R/B PZ5RGHDThrg9LZlDW/benRZg8XrAY8hZNtbU5WKM1KpOODGpNSCE2vcc 42s= +snom3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xuAUXy5dX0Ny9Rg3l7DzOXdQSWMFT97gwzCYI+CXBsqfGt7glxg1tM7I qn4qvhwOFbZ+8DV6fmVYIr7i0/cNOOYDE1jHMotfRdsCgHoddhWXYuI7 q9LURbNUwOOGogcbfIeeldUbCxjfV2JSJMqJRwx0D0IgG49X7j9whZQs cRI= +snom3.nlnetlabs.nl. 3600 IN NSEC something.nlnetlabs.nl. A RRSIG NSEC +something.nlnetlabs.nl. 10 IN TXT "nothing" +something.nlnetlabs.nl. 10 IN RRSIG TXT 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. LPUaKKder0WwDyjdwWv0ani+R8Pha3PLiDnTVbY2y4CYcwWYJqi6ewv0 7lFe9EMcl3dxAuAC2yV5jXL7LSkE0j2ERFYKeSioI/LkdjWo5Um08Kje 5ImYO8pmM9K3A6u+uKsf3+eFj2GiMXWnWKk0hnja7fteVLah/7ZFso66 c6k= +something.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. v3eQ4Nb8Pw0z1nuewImqsef84MCo8vdgRP9RVFof8mU6Nm2Qa0uHGxxi ieqg5OW2ZhNFwialsyJHmuy3t4Yt1nN5NabVimS6/pDf9VL981o8TxlB jqPrq+wLmWERVxjqyeR62ZT+jZFh4iiW8NJvX6IIjNW1Aue33qBX9wC5 cNw= +something.nlnetlabs.nl. 3600 IN NSEC sparc5.nlnetlabs.nl. TXT RRSIG NSEC +sparc5.nlnetlabs.nl. 10200 IN A 213.154.224.47 +sparc5.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eVlNWwz3r9+ySqO3Oc+k6jQeA89i/Afm0h7JmWy4H6JJY2X70oa7pWur rPpl3a1PKPEU7klxD7JQV1ehG5z2qwZe+jZsv912pu4bDyqYu6mmICyO rjh6Wdi8JXmqdIlZEN1lNHqNLndSBzdOP0Tmn+zjGpw4G4OLA8iMaIs+ whM= +sparc5.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Si11EpZcH0w2GUjcnU63FNATndEjWVWEzpaZ57S5IMAW93u6ioCCzCeU Y4KyqclQ84f9lBnZipXboelRkdoXn8OXUHgN+nnByvZ+Rl70VBMo5clu 9u+z2l5DF9vnJWn3WefaZXkRodFr1DKZUYF91gp550gY446b2ynu7xCs QsE= +sparc5.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SBkYB/Yx2Yy/1vz0ZXye14uy2/nALMg1EH1m5CfDS/ozCdXlH0H1fFZ9 SrTTxhELDvoUP/c+WY6jJ192GyVjpO1H6F/Md7cq0PE7vV/N7TuMwqlX D7WyE73Dvmf2eCU/Udkl0DeisdkY0N/dPmAJ5IaYVLeKsMOCTZzXBoHC 72A= +sparc5.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fea7:8f78 +sparc5.nlnetlabs.nl. 3600 IN NSEC spider.nlnetlabs.nl. A AAAA RRSIG NSEC +spider.nlnetlabs.nl. 10200 IN A 213.154.224.125 +spider.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RXpyOMwRZhApiRQ+0ctSd5+RKA2PSuFWilreZkf53GVl54LwP/0Vwj1a 0lETzp3j7+HTA6Ubev08WxuO8I3my1hSM9z4Sylg+xofuNPQmSLvjZTP d4eytatK/f07Rcofv0ED9l8Z4BOjleyPlkA9gljFyxwzqQNJNruNe9N5 yK0= +spider.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Hv5jnhbf0+2k+oq178J4nIzPBNTMxQWRXzOkXRsud40H7CpHbC3XYSKJ XV2EkEaTky2A71v63aWk+VoGEYIgZ7LprQHQEe4BuEpc0IXgfDjgKPUn kYhW9r4DwPoBhUhmdipJGIel6tmSUX0t5xO2LgxAbOJedT2R1wEj9Q05 vOM= +spider.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. MSu1nNUfVe42zNpIbgvvD/iFwTRgOCUEaQhS2R1xTFIRvSD75HyaSA+U Xl2ZsjJshIAEdh0hOQimYeFa5hB8Xz+ZPj3wz8FWQ83NBYbi87yjCRux FZKEbTqkAygcOb4fY9268/Ov07VwqZO4eYfCxC+0TyfNFwtdx0pdMnd8 YsY= +spider.nlnetlabs.nl. 10200 IN SSHFP 1 1 63B9074714CC78736BAFFA1E6776975C2EB082F3 +spider.nlnetlabs.nl. 10200 IN SSHFP 2 1 E7A277786CFCF0CB1A4167A680DDAE27A59407D5 +spider.nlnetlabs.nl. 3600 IN NSEC ster.nlnetlabs.nl. A SSHFP RRSIG NSEC +ster.nlnetlabs.nl. 10200 IN A 213.154.224.1 +ster.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yNhuJpbql/LWyHr3IW5muEM00Z2BaoqxQlfAf++3bsex9FsSJVTyWvY/ KYq3HILyL3N97BZO21+x9Rq+eq5SsBDmPJ53061ybaQuq/5Gw7yFxxSo Q1Rkore0/DF8EeMoWPNjJayWYSPqbbVngJ3zMr954a8lNS+v88PDBEKx mTQ= +ster.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mFnpxvq/pYpDHJljsmYJR9IC6kGnVFpQiRUzOHAIQszuJK9S0xTV5BBo PnrPV/AtdBjVus0p67qRpq2m2SEOnRh07ilT2kS/UkFMWxWcHVBW75BV E8/ofZvI/eMBZbza0apbm11Z/MTHvbMII3t5nAtl45Jxx845Qwm8L48H EM8= +ster.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jGt4xszEWt+A+gcA0TDg7qlp94dLxlgUuOE8rvhgL6GPWK+O65mVq6V3 CW7lRORXgNqa0+Z2ECq7rUt0rn7BN+oBh0qASTNxvGkQPS8zj5Lpcvgr 4oA7hxXvXxPz2uRTQp2vrCh6wvg+wG/g5gRLAgcj5qv40A389mNQe6Lk /BI= +ster.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +ster.nlnetlabs.nl. 3600 IN NSEC stun1.nlnetlabs.nl. A AAAA RRSIG NSEC +stun1.nlnetlabs.nl. 10200 IN A 213.154.224.46 +stun1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Nn2ue6PRSCb0c+ZsTm8vYFd1JeiYFf6aiXI2LMYvCqsd2GTiVYZlTVH3 crzoe2O0irpY23+B7cX6cuAIHBeZfr+xqOzZr9bdJcBJ7qmC9hdZyACG 2gd49WmMp8xwfhg5iogaU9bNoqp4VZ/8o7wZzxwwBoxaQYHUKwFAkIXh cDg= +stun1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. UzLNxhakjp0Z6veEB4R344snmqfkRRHtL4gbsifmdE4H0cG/3pn5iop8 AqNcMdLwIxXA2/L0mhB3ekDNHnC3c9FpI+EqJJDLQkNFQQVwHJ497MpH UjVX7Bi01Sn5ym8/Xol3ryVFUcH+DzStFOgPoJWVa+N+Pg5z9qzEhFeH IoQ= +stun1.nlnetlabs.nl. 3600 IN NSEC stun2.nlnetlabs.nl. A RRSIG NSEC +stun2.nlnetlabs.nl. 10200 IN A 213.154.224.48 +stun2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GLCCaQsbL0ziW1H1eF15oDxQqjVAaBafW+xzdV4j8+B6GAOrqcVctnyI KfV0SIojOrxeew32TXb/RyA9sbRMFcg7iJ/r0gqaPCmchAjG0bVh/UaL VhJmdCIKQoAjcGx5zITNnjJ5+anmFCA/dQ4zmuhWlB4rBCgp3UOqnUlX ImM= +stun2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SzytbVsrHX4Tr58nwINQ1INkKAhHXtjhb0SBwTXMXSCRQ8uzYPgw1Oaa kLv/oOg9rrP9zkrnhe6iR9Yn8AVus/Y0z4s6Dl5zOVx+rt+OA7dZ4JYl NuH3A3B+RHq6XiBgyCLnm9z5XozCLuDNCvffeuImAp3kEAWw01/fk5AR eVA= +stun2.nlnetlabs.nl. 3600 IN NSEC switch1.nlnetlabs.nl. A RRSIG NSEC +switch1.nlnetlabs.nl. 10200 IN A 213.154.224.111 +switch1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. N0oPPgtwCtlbCkTRSLcjUHDfJ85Sek7wRxaJRDuLew6JfBNsVS/ofJj8 4pTbtOOcZ1EgIWkArir5JqaIdRFYs+csh34uVcdaOJvwftyRKk0ItJss 57f37Brecp0CNiFu7wXv3BINI7Zn5vrZVZS9zxljBGYHRyUYhiRLjlHQ G8I= +switch1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. lo5rrdUegUBJZ7QZ0zJ5zeAMxRg8P+D/MNTLkHX/cDnD5GuX77MOYbm3 eRF3rBXlmYlzbF0gtCP4ccM6L1niR39Z3BudwHYQc92gv/gH6x2gl0Uh m9EaWRWL6DuPnfvti8AWTi+Nt9IQis5uB7nacuZZX9KrVLlXFaR2Lnyv XIU= +switch1.nlnetlabs.nl. 3600 IN NSEC switch2.nlnetlabs.nl. A RRSIG NSEC +switch2.nlnetlabs.nl. 10200 IN A 213.154.224.112 +switch2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QkjyHR8ekBxetrgRTSdjEoMwovo0Cb79MlzRdqf9RrRscd+Ph5sIP1Vl /cLQRwyyocgeJ1vLUrRBlxGnmFXFX71vUzOmUnaWeQS34fNqlJ/26TYg 49ruQ1wvNZxKffYhuQ/sjrFI/uiG9wDUYwNCkYu6jpu1wNFdZZFYFqvL gfo= +switch2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. F4CQ1WRmw0N58gYpf8x2cp6ZVTGpGQMYY8A3dPcxIMkIX0UL7X/QaHKt ll+DK8TYkxYu1klkYUNs9G3yq9R+UKu5uzDgu4m1orPd6ytX/8lILhru r6MFTFfPTgoH9o5Q1uotJ5ZlNWxkM/RX8Irq2HzXXZbt71DTxLoC+CUJ cRM= +switch2.nlnetlabs.nl. 3600 IN NSEC switch3.nlnetlabs.nl. A RRSIG NSEC +switch3.nlnetlabs.nl. 10200 IN A 213.154.224.113 +switch3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qcmDGHF/KNC4XNnGW1CkcGgEuVEgfDIkms/qsZUuse2kB0gJ84o44f2G oFTgSuUHqrE3Uhrup1uM7pMk9vEVQQ8rAIJq/EbROS8MQjoUQuqu1g71 XfAUDQMltKw+GrWu4HxtlepfoxWfwMSR9gZDop9TE4zK2bbzmFJniu9P XPs= +switch3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ld9ogqO2PHcP2XHQEfTYjqHJJBqdfSPq5yeg0pfq4/Ue84AenpN4Zg36 0hSme693wvfSXLU+f0ewL4+MdFhDDfheq1c7x5Z+1Md7/BWxQzuQAguw PhRMn2TSt7dTLuR9tD5hn8VtfnRXLOQEjiqnYXATyvORYbD0DgjoB+1A Fgs= +switch3.nlnetlabs.nl. 3600 IN NSEC switch4.nlnetlabs.nl. A RRSIG NSEC +switch4.nlnetlabs.nl. 10200 IN A 213.154.224.114 +switch4.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. KpXz1qOM7cjy+ri77MtmFoPiFauZNWyNKxUULkiMkdZLpPa3bu2KJH5N s3m9EmsuRtp4Y9S300fTqm3j1QtVmtN4uAbb3Oa31EF6NMZig1Y0d0F/ LMKHvd2dsltrJNZXAckAZOoVVIO7CTz9SMgcFKGcHaLHUy7AkhPV4D1v yug= +switch4.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WlpWdH/oVVwSFL/5k9a4JQBRbe33EKJ8En2gbjVU7pp3MiIAvSpLTF9D 6yjyjfiRZuujL8FzmcJa6oloW/XxwW+MMfibkDGLHJUo0pd0RNedwhGQ YIdrOtZobyLnR2+PURIWYxmLQCsFkkRbJs8WyTUvvDP3350sZDrp0c02 sFY= +switch4.nlnetlabs.nl. 3600 IN NSEC switch5.nlnetlabs.nl. A RRSIG NSEC +switch5.nlnetlabs.nl. 10200 IN A 213.154.224.115 +switch5.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. F3PaeVx42gnH3MwuOgjnM5flPL9eWw14pDkMFZJ+P2AkGrwsNH1zCaig ujk/O4tyqSqPOtqP6uzHiGXdI6GbKB3IdLkfTl38S+kSkyeBrg/fNy02 pJ40QTevdUpuThwx/wDVF8MTFZwOux+u4z21oDhcOxDGg1c1QoAiYAZb 7Ek= +switch5.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WmzKyp2bTCjwYq0Sn1uAANHFw/CxA2QO+EIX9k3p9rzmUm21IDcS/0h3 E2JE7XYJiCK2S7MyHixDDsoi4bxDKHpAd9K5MZ7EtWUXH82lvd+ey2AV +Kx17OWYWHG1EuI9m04QGQD5d0NnsrIj/cbpSK+CUE3rR/VyjVjB9gFl zvo= +switch5.nlnetlabs.nl. 3600 IN NSEC switch6.nlnetlabs.nl. A RRSIG NSEC +switch6.nlnetlabs.nl. 10200 IN A 213.154.224.116 +switch6.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jaV/NYRghPjPEBApQxEJBEXnzUAP3TYofcsmZQ1Jl05olY02uNsOkCm8 bhgQJVjAJ9w1YzhuKw0MIIcHaxyZJNzV3yx04/TNIocmc7x5cfZE09jY odO3D2xfYXMuhadtZuhRM4CFv2A9V5dQ1VoXsUWE13EmE57mdH6fLxWD kZk= +switch6.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BtqQL6SQWSLuAmwznmClSvQZUxr//x/C/GVnq2gR9LuRlf0aFjVNQkAr LoE2dHZGgGUgYMa5vAzkyS+kWPzGpPh37FXtJpir8KNEHznunPKydiuy jgNH1TSyhV3yXgoq1eV6D0TytkjiWOSLXZ+ryZG3r2EX2Wi0HNsHTHaY NG0= +switch6.nlnetlabs.nl. 3600 IN NSEC switch7.nlnetlabs.nl. A RRSIG NSEC +switch7.nlnetlabs.nl. 10200 IN A 213.154.224.117 +switch7.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. JkvhyIXgWrhsRbfHztqnq0Sek00/2hYnk3gMki4ayA/mgpJfm5DDHMW3 LhDjVgIkHXDjZbjirp1xjrN1wssG3RhJpFB+BzFMh8jbgvbf5JSIlv7L xJe2cgTdqtbw8OvGwN2049G6q+lJyOSAFnAeJhEUFHKUxg4l7y7xrGL6 7To= +switch7.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. d8Gsvftb6pI2O520nhKH5ki+BXqG0vw58MH23DEF9rsIz1eJmLv44j5d 4tUJqlXw/zNj161f2KT4uykHMATJPNEak1mTJy7IRRfzPVprYKwKyjOB TrqolRaUYoa2G98ks9ayg/uBk/ypVtD4Kbqcck7/AeH2gdtLWlAz2tzY Kx4= +switch7.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cdO72AbyDBRI+shQrsjYw/7ed1sIMphZJ/6Qg5S1z3d1KsiSEbX06fZt KynrLO+zl5gXXj77BbCzoUDqHIZgqxB+TSOpdgUk2eZKPGiraBRYuNxS a4Dsun9/2ltdSY1lZCl5kifFpQE7IZbSiTSISmA11YNUp9si6ufw/H3o YJ4= +switch7.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:212:f2ff:feec:d040 +switch7.nlnetlabs.nl. 3600 IN NSEC switch8.nlnetlabs.nl. A AAAA RRSIG NSEC +switch8.nlnetlabs.nl. 10200 IN A 213.154.224.118 +switch8.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rMqTm6XnspU4KF1B7q8hjz0QIwfta8+r5m+Lo1L193TW3eV8qe0rD0VC PCrKpAtocc0jUG484b//dg5SB/1zTs/BWJGGwMGjLc3ERJO5eTCb8dhJ 5b7SfqXNU3uIO9VL6S4cE7u4TOJDewRyX4zoijwIVnkhngfkOTM0IVTt vFc= +switch8.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. c3yY/dBpZCYAtzg/XobVHhwAdQQx68zGJR5v1qeyA5PoBchIYNTMVYyZ GuoWybZnpdVTXZEeDyJ2+RE7SVvC5iA+Obp+cFOr/yPt34d9QjwBhC2S dRghhC52EdeaFJld7oux0aS0XJ1u2wJNllYv7qujTAwmIyMb95O0Vk+w nq0= +switch8.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HlG7+76k7oB38GGbKWB4zETReznO2MgTVHHQ8BVUXN6I7djoSlmjUM/v f1tq1aDpo3f9oim1d46FuF3wIoZLVsF+1Y8LlPAptAByvNJ+jj2RkhRL vFW9W6o8EplN0EpDMwuWuyBqNnZFQn7gn5Nyr9p5Jw47xrv9xEIN2Mj9 5vw= +switch8.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:212:f2ff:feee:6380 +switch8.nlnetlabs.nl. 3600 IN NSEC test-www.nlnetlabs.nl. A AAAA RRSIG NSEC +test-www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +test-www.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. E2QhVhUUfphUYzppDkr249o/o5cqtu5KLsN5JSTTYQrktynis8xXuSK3 sau7dzSOr+3igodvpW0nprUmyAY/kd8pU3Vn2T+z96CY58pOO4Yoo5hL rfCvkgU4dzfPeSTkw1w0GgR5z9iZQ/GlvVbEqid60mekwSar6N4unlPx EFc= +test-www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Ynb6Lyq2e6tugvYMgXsD1kIBy61noEM+lfLDrBXlLh6ECcoqaJ/8fk9p w9NJZ2lwQpk4fyjxP80dTp01Kzb5CdKTPIdEZLezA6A78RYVRYINMI27 FFDAJR/VhdOJP06oicya/tc9Sh6DUtfmPlDGfJ/F1lGf/lHLEY08KXnf cPU= +test-www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fXwJqqXm2LQErC/Q0vBGN+AXEZ0Sm1Cu0Cv1WDMa640KDDxLeovM83N1 8zZWO97R4+639eTBmY4LVrzehydUOBWoo1YMoqyvJ5EyXAy7tu42THjU aqpJpZzL9A+tNXWg6IaxiMqWWr1MRPiIvGc+X7JYgUj/pbUQw3Dj3XUa SJY= +test-www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +test-www.nlnetlabs.nl. 3600 IN NSEC umbra.nlnetlabs.nl. A AAAA RRSIG NSEC +umbra.nlnetlabs.nl. 10200 IN A 213.154.224.37 +umbra.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XbSCHE9g7JQmVYk9JXF/WZdqj1tkS/MJ3XnkdTB+h6uQ9hivlGS30mbQ 4lo8OZXg2EvAd7wsfYty4ObDgtVckH2K9YmlJPtWN4Jv4UIDVNWtQtBV sqOF1eK8jDI8YtYBNU+YdwFTd5s4dSfREroEl7AfeDbEYLj1l202Y57P 2kc= +umbra.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IfUS7VWZ5BCQfyHmpAD36mvjntxlN6g+JbESxdIwGXaZ2tEXUjT3aaKO oWHFrOcgrytSGOTx5FyQrjJnfrAMFjQgh2Q1mpaTvgbgrcjb3mNVvaca XoOWi4g5Yoxc7BjxDsDqkk380G5z6E0874rHjsAHpEbQ5xlvqcPyYxnZ H5A= +umbra.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FP8oNmVUkicuQZq+sede5dBflrvmBONAyaWzPyTjCCJtUO5AL93byCYp tQDqgmI1UJLul/etaScI5S8jVICicpntH7nPD4DTpVEp6DK7dz+LS4HY ZxhRObOFoQc3LbM2hhcBYLVu2v/j0UR4S8VdCUNM7jWLyJwkVT2fjoQu 8Ww= +umbra.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. aX92eFBNJ2+Mvn889/2cTL+60o0kyTuNr5+dsdIfvgBm7XQyao11xfl+ KCgxKYPyhEbQusMDXarJnzqvPS1I4XJVyhxQnEmQoDrrncs8VejlTpQ3 CwohfHZbW1GrVlE8BFqTpgQivhaAZd3WOifOgdxMyQGwLZYPwYCxHhUg vAM= +umbra.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe06:2060 +umbra.nlnetlabs.nl. 10200 IN SSHFP 1 1 E898476127D38FC18600E77421A7E44F1CB3B266 +umbra.nlnetlabs.nl. 10200 IN SSHFP 2 1 164C09BCEAE3466B3F2AEE99C0AEDD91E106F7CA +umbra.nlnetlabs.nl. 3600 IN NSEC unbound.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +unbound.nlnetlabs.nl. 10200 IN A 213.154.224.1 +unbound.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QSZ3PTyAGlZpEoK/mKN/sY5QR1ym74FQRq4lU+YsoH2HKwuxukF49L7v dq+3cKA95Hy5iQNYWLTNt88s0vmPHwtwD0mpbtEyfn4sJoVS7lHQLr8N 0HzGcVMyD1edSyCxrcB4B930hgDIfEfLM7AvqQJcGfUYcGltNi1/M/C2 Lcs= +unbound.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. INtEjQXKFxgb7ODo7VWHiux4UUYkvg2e2KdjaZZtvmq1/uPzNBl8moSB PmJseNCOMqIUv3lEs/06n4kbBC9k2n2LyjMsknFNRbWKte0HQPaFsl63 R6mP+2dHlQpNxGoZLHTy9r2VlzUNhelJhonx7rn+bKA6/rZzJ2LXuL7h FeE= +unbound.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yoTIa+IITRhVXZvqhPxZ/D4OinWy6RCOyqobH72OzWWE/Pkg85BzjCya jEWJ0kFqNdak/oc3ON93xrpL01wpTlayHuvDNiW1QgmCB/Qhg3T2n4fh KI9MVsHMcvTvhcfy7ndZTgH+nwtlqO5qFjpBlmimfNYXK+x1WEqqGB/b uKM= +unbound.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kG43QD3KHjcuxHH70giPGezIhcg+yFl6I4JSZcZa4L+u+2nZ/S2Y4lkl iSwVJCJx7lkd6J23ze94n/DtNYiav3fDV30UDWPfN9TeEdKw1vWmjlVH hgfXgKGY1PR/bE/32zc0ssGYzD6ypj+aoq7wjZnpqWE8LIeR+wBnEwbr 7U8= +unbound.nlnetlabs.nl. 10200 IN MX 10 open.nlnetlabs.nl. +unbound.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +unbound.nlnetlabs.nl. 3600 IN NSEC uren.nlnetlabs.nl. A MX AAAA RRSIG NSEC +uren.nlnetlabs.nl. 10200 IN CNAME willemtoorop.friends.nlnetlabs.nl. +uren.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eXqvy/T2HBTjT4FWj3NSNY9CivUcGDv1Xklxrcj4RrIrE2veXBN/4OnQ 7sOlBKE0DiWdBO3TW4raO/aFpFuBjFQV+nv4Y2NDJYIfgGfv6Mad1tzc iPgig5TgbGaRiFE4iVfppIs0b1vIfDDGeBgO8SXo4tt80q2QV09Pv9Z+ zUc= +uren.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cr9BJcZk2T/kUgqpCf/Ih/ippQ8A0Cyt0L5q4JkXfZ2joNIvfRQTFRzd R43MrcCWXQ9HdImV7VV1/+/3KgoFKVjlaY+uLBVvq9NpZq/Y5QrtriYA x60g1DU7F/rzxKF4XgOdnkMNMz7g2xOcbpiNdem82jXq4CXMA+rj6mOE vz0= +uren.nlnetlabs.nl. 3600 IN NSEC viertje.nlnetlabs.nl. CNAME RRSIG NSEC +viertje.nlnetlabs.nl. 10200 IN A 213.154.224.62 +viertje.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TUkoNpmR0j0zyTjNjjx+o1xVZ+LOHcfz2UegdZMMnAB48NgvXWoPC7jE CxIMTG5LQkIFZwrdXli/9rb4pj3hk7kKJ9oF5XLhMjU1XDILhU4p+n0i uT+2PY46njekCbhujJZjIot4aNMrS69maAm1UrJVbMoWXc1FWBSlDaIE lvg= +viertje.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FTCpa9ueWJmfUErf/g2uBKIyMo/GmqzUU/8A/HFsScO2GiG6zBP3HBQh lug1cP1eh5AIi+Fa/Y2a6EeGalGlOc7HOU5b4E35bQeWmUD6r3Q+tr6q NK/NJSMdy7FBXkNYAHPE1xRE8dm1lv4HJnea5RJF6U15FXoMuE+KwHrV Qz8= +viertje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wtMuZwjTXmU0q7rG4r8l6M2sKZw8p6sPMSj38Z89NZcy+UPEjIaBt9zn ae6u3Y7fIVNBkYhkUaG769s8H14usY681bzczo/05JdLeEPnT6zXmyb5 Bqc6vEJGMwRnIsaPjh+5QoVD7xvpff+2/Lip3muT1wmxZJD3quQge8m6 BZ4= +viertje.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:93ff:feea:3086 +viertje.nlnetlabs.nl. 3600 IN NSEC vijfje.nlnetlabs.nl. A AAAA RRSIG NSEC +vijfje.nlnetlabs.nl. 10200 IN A 213.154.224.14 +vijfje.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kjPG3kJKmAgL8XW9HFDR+XVGH5WTRgxsmPkOpFzshzkRB/HVDNrUSmu2 chNepMRPy0U6n2ipjkZDqrfma5pMCz3b/uvb35XtXcoG426Q61j2TmuI fivbezjsPAHTGsjBgvCJ603KNOMhN8/F+Rv56C6CMLL8xmbj+6QM5KCY tC4= +vijfje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. FpTKOEqqjGdKOsMufZK9fl7vt7vqn2J8s2BZiSpHRyXCkUHtgPtGxIt5 BFkiZ/vnTab8JQa0n4Duwm7RDZzdnedFVZ/jwusQJUPLZjCbLm9+pizW /MPTN1ljTLXOFNTql0PQuhLfvW0TQ5/qxjQUZQa1F8esz7q2hhofM2Jx Sqk= +vijfje.nlnetlabs.nl. 3600 IN NSEC vijfje-cable.nlnetlabs.nl. A RRSIG NSEC +vijfje-cable.nlnetlabs.nl. 10200 IN A 213.154.224.15 +vijfje-cable.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. XvaUqVxQtIlCQakPTr10reF3I8U5QG/P5h0OGFb9JnYPoC8/bClHRz9d pb6/jDl8fdkLyUgVSLO+qyVTNovOaAqJKZd2ai3Qs9IcYIDNBRBE5Hxh 7E+BjnoD6xgMT+AkBOQKQxGcW22rUDcHB44nSVRqZMAzknvAR8MIEn1g YcM= +vijfje-cable.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. WzfbQo6Z2hUAad6jI2Irwzn61rr8rgZuORTYyEX0ckxo+HvVdy0KnFkO a4lnQSkiYvu/zor/4ge5O2KbatgXdegx2ODNtCVmYYxK7ppSLzxFGYRM 2s9EVcm/EewNRYMww4r10kLEn34wO+CyT0pdwppm0/VHnlq02RQNVdtk imc= +vijfje-cable.nlnetlabs.nl. 3600 IN NSEC vpn-179.nlnetlabs.nl. A RRSIG NSEC +vpn-179.nlnetlabs.nl. 10200 IN A 213.154.224.179 +vpn-179.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. szm0gV60ZC89477SDuTJ/27QTVzPK22Ey51Gq0THaBj247DnLe/G8hto fmncjxUZ24cvpj+ZqghAbpCj3lSmHFVonq0hkuYRqJupZsDVA8pOM9Ps 1tApDlaoJdlIMAV324z4XlDukQtLwkG+ZQ0tYB/WIqRtnZW0L5hNQzFf H78= +vpn-179.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. iViowlAyQQRNApxVf+3ctvT+x554pAg5f8kLypKC9cgU2jxvn3u+GdyA VOb8Dcebyn1BTs8tAEtGBEu/umOQKr5XEr3rAYvCJbAnft5QJ6EC2C9F 9N7XSl9R7zmNCeaE7h6E55WeesPqn4seyUuFGwRaJBgdkWavkuobTVUN Z98= +vpn-179.nlnetlabs.nl. 3600 IN NSEC vpn-180.nlnetlabs.nl. A RRSIG NSEC +vpn-180.nlnetlabs.nl. 10200 IN A 213.154.224.180 +vpn-180.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. oApBOEV3T3fWWe31OREDwDBANnhLYubk2x425KzBHqUfeBqjatyyvgEe +ce/NdNK2TnoU38Og1JsDjF/iaVbJfGOGipQCtOVOCfL5EhgyqgAEsjf Z3iUFqCMndD+J0+3f65w+wH82jqnkg4Uly0egGj1ZaTviFx0U4CXLq0G gbg= +vpn-180.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. CpB19uWGY1V1u20N+dC2h/lJA3NtqzGolAd1o8KiJvVh4IhlLD9Nc8iI 4ycc4+bit9xY9ubLxRuFIkL8XJ7508d7R4s3xZpIBDuSJ5Z+OOLDsCXO sVT1BZd4zIQSK9JuFyhnsbNHDMaG+2NOYqi0HK8Rk/ClTh6++xsAc7Rc AeQ= +vpn-180.nlnetlabs.nl. 3600 IN NSEC vpn-181.nlnetlabs.nl. A RRSIG NSEC +vpn-181.nlnetlabs.nl. 10200 IN A 213.154.224.181 +vpn-181.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. h7xAYfPEcsF5Gg2Q3xam23WBpinnEIgvgPExy5w5gqodBvZQGOMyIwGT zWh3kwxUFtCpS04QT6z1BukqabFRVSj6PSd87vRwnuIXeN3S7QQdlIMx lOGgFexeiWx9b9UV5XIlOna0OnevuUln6Hqy8+lWVcCKvLGZPKYWF4+O m1M= +vpn-181.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. 0c+pwkNQc0g1tD76GBujwxDtzOs7aMnSFtNWXW5Yp/RNTRgV5FXOLEu1 UWftXpgGCaxXZ/tKfAObAsxDt57Bz188FZsp+Xb4PirqxByZXIemDykI /ZATVmv+wWsBEcwUJ3NX9D6voa7jsL1n6BCuYZMrjvqS2YvgRqXKO8N/ Aog= +vpn-181.nlnetlabs.nl. 3600 IN NSEC vpn-182.nlnetlabs.nl. A RRSIG NSEC +vpn-182.nlnetlabs.nl. 10200 IN A 213.154.224.182 +vpn-182.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. NfG/vMrKKuGNO3PmeiaX5kfOtkYxLr6Cc+HnfCgGHt2QLrMWOIRQakuF fsxCZJPJzi3iSOg0efrNY72JaPnVqCIKLDRRmOdmV7kf/JCMyXRn0Ux7 emsxAHAST2eiJhh/XMP+4jCC4UqyhpY5ZEWuqksj7eDC1/Lnp5ALbtGK D5g= +vpn-182.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. t3lk5lineyl5HMrjB6PSMxWEraefYXLuZtJ2M3R1U0p9zyeP8jvmDaT2 fSD0zANXei9gORehvN42I+h8WiHrYMxIfMV+TvkvluKSAuSWMg/9II7z dP8EUf+Y0YzeJnB3WkYDPoedO8MoPc+3L+9aslSJvhteTuhAIt8hCvlR bY0= +vpn-182.nlnetlabs.nl. 3600 IN NSEC vpn-jaap.nlnetlabs.nl. A RRSIG NSEC +vpn-jaap.nlnetlabs.nl. 10200 IN A 213.154.224.178 +vpn-jaap.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. ZIJsBBz2x/b//a7mTUOtQ+5hsWn/jMZXwU+HkXAxdeozWtHMz4H4FpwF 1qhY01WNKoY3zpHkp0BfsI/trgsNyczw5itR+1IYTnx9T6SQGbXZp+4U U6yuyXIcqdSw9EKgadBFhI7WehiDyb70GbwuHotmTUBxqSWkmD8lWdxo R/c= +vpn-jaap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. fWqHl0Lwn4PV1YpEZhFIi5ygTLLkFJUQZ5fPh/mRAVuX3+8vYDx/V3Gt xrzYUjT/c7UNlQzMGk8zrjg9WgAsp0a7tktWSQrhwXO+cJ3XwrQN5ijb C4mBd0kzjv7th51wvksyN7lkn69sRHwhXfTwkrjzNM2fBQsRq026t4ld lIg= +vpn-jaap.nlnetlabs.nl. 3600 IN NSEC vpn-olaf.nlnetlabs.nl. A RRSIG NSEC +vpn-olaf.nlnetlabs.nl. 10200 IN A 213.154.224.176 +vpn-olaf.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. ckedKKiFyYdJ6IVzdonipa+lWmgmKeOX47g6TUYvYi86YW79BknVcHsi 5i+7dD6MGaH03ygTr5+WMQBsLDD6ohQiV5ACrhu98ilnINGg5dLPODw5 PgapAAyc9oguiuY+ZKQqv/L/wwSixU+89ogFQNxERQcO0EmYLdMyfVxO wtE= +vpn-olaf.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. tpqpU9Abk4u7WuLtZ5NZy+Mx185X4gNrx2p2OzWAKwHa/d5HqCm83/UL 1Ss81DECnO1odnqn0lsxTy7uNtkD4STYhcH2eUrXtXPrp4zpGmQLUjhn wQ3WegTGES2t+dzymDRdFwfVDnd+9M0yMxlXkwxjGbKeBJt9BaEj30Jt nGA= +vpn-olaf.nlnetlabs.nl. 3600 IN NSEC vpn-olaf2.nlnetlabs.nl. A RRSIG NSEC +vpn-olaf2.nlnetlabs.nl. 10200 IN A 213.154.224.177 +vpn-olaf2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. TmLw392p7riLHdtlG3wCT/uDd0zJwo120NlxlCFeIlgBRCPmCypeX56O XjjO1IAIo2BsadwJF9hH8CZtukM00ONkugtfasd6DK2OapDvyhsWoAGp ovIS2vrX+7U9mdtM23dDpOrraIUwOZ0B1OAICityeuxZR0eExkLZwYL9 6dY= +vpn-olaf2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. xtHl+flSlgcok/G5uc+cTTTlHbeybArUoEcj9i4waHnKqVn+KMoMr+NP H71tJExGCaCqrvk75G5KPIwkfcQRRwLUNj+ZYF4QAgw9APyGK+u+jZbJ 9SpZb/9CkrZbzZuLnQzEX/3P/QtcPTdv2X4rKOCKxlPfmbyP6AbhbwfY Yzg= +vpn-olaf2.nlnetlabs.nl. 3600 IN NSEC www.nlnetlabs.nl. A RRSIG NSEC +www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +www.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. Owb00zLVFYCLv5w5kUwq3GarEf4xsos0I+ci996zdgy+W0Mxo02F3JCm VZ7dug0HrVuz/ydd6j6e/qbCkYhN8jbbOVouf/EQ1pnhpHNr7uhZjR1c GIiX+mQfw8sUf6WAsV8BPoBv5hh2nO3sra4br9FsZatb0IauQ48nkczB v2s= +www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. r+VN19mgim1AKdG4onzcNfGwfpbkWVjh7RP+WAA7ku9w3XK2jdHiF3b1 QE49oiAbss43UrQlp+08m/6ZtxGNksCxQA1QAj4D9yQqapRfCbJ2iMbr yY1aCpT4i9CAF3oONw6xrJZF/fxVPvy9JruqKfsZDl2ZHoXCtA/eeCK1 hhE= +www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. Mn9tqdCH8prMYU4W90/hpNDQNNSuIQ1jn+m9ocnCFWKM8jXGuGnmhjZt tPSw/sh6A8Va59bSuRgSyIg2ugxD1FQoF9sb77OAkyq0fxgSeDOx6abd 4SeLWNbvqTM8EpeXSabzB8Ez4y+cCfVIOtg18QcU8LZHYhcaoNQKqlq6 +pw= +www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +www.nlnetlabs.nl. 3600 IN NSEC _443._tcp.www.nlnetlabs.nl. A AAAA RRSIG NSEC +_443._tcp.www.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +_443._tcp.www.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. qrfY6HcYTFFP3OkvVzJwkmJWLTTbq06jwpfbnUXbnISU92uXAQuPuyOz xyf0OQwy6Q8pQlIwjqbmcDUkWIfBBhvxP6FHWm0XrI6HKOoqxq5Fz1IK shs5n7jRZ8IfodMrK+ORt2FIwJUwxhCLrX/0OMmfAZPe/sAR3DOHOSBR XJQ= +_443._tcp.www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. NdXOGpjS6HggeOF/lc6ie2GE+/EAC8bzIJ9H1fxojglScn9wv/+f9aA4 MGT1S2zgSQQ+NL6bjDMAL+FgNMV4Q1/5Tqzp+q7A/k9/zn8VXCky+gTz sm7WQzKnizbp3fxN8eHIDSq6jZnKK6ZJSuOfPuB6ECZtPpih1sBNXCAk WtU= +_443._tcp.www.nlnetlabs.nl. 3600 IN NSEC wip.www.nlnetlabs.nl. CNAME RRSIG NSEC +wip.www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +wip.www.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. m9YpLhlPfovr8dwj81nCCiPLfeUR3+UUHXeWLuW4MtbNBHk7cOcHL9iQ 2KMSmPMOkZ+uIEdnNHssZkrBN2tdtY+0IES8SIA1aN98UuGjMje/rlEo tQ+NEW+WX4QBf0CX63iiWuM6IAUoAmemBzUnzv87cmyGtE9OcS55M5BC 8DI= +wip.www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. n17wEA8VKLnI2EJC7SLpy6jJr6sWNnbSyn5rI0LP/jW0P+gv+0oWK5P4 99FYIfjM0i+h0JhYHRwLcKL3CeZk/2VNN5QglBsjsEBszmtobrpJeJNv meO8JTJZ0MkvzLLWd3MShlWsstfLwqC30uNUgZF3KAIUy44LZDb+VT0E Uio= +wip.www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. NQ2HH6aWtsfFoSeORbU2EaLjNX5xypvr4S3R8YT9tmyV/1zQeZd5tkbh tDec5IchLM/d8oAhKkA6Insgf56Ur1Ls2aPy5Pv2lsOoaQe2xZRaDUZ5 ffgbW1hZU4eZAGyNj1htRDutUndFeI76xgwZXIGFcXXAXlytuZFQFMp9 BNY= +wip.www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +wip.www.nlnetlabs.nl. 3600 IN NSEC xmpp.nlnetlabs.nl. A AAAA RRSIG NSEC +xmpp.nlnetlabs.nl. 10200 IN A 213.154.224.148 +xmpp.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. p+wzJmkft96vTw1bk1vKh5c2OAcQh4TkPPwpnfWgYsi2ehC7eo015Cwy 8zoqtGgR+2U9WgSTAweIWKqyna4ycPzgns2GEFwBlsv/g2MFHYR6zcZL navcKrgrEzuBO51td7wCPnFB8hQQoWxg+cbRJgOYwkjtVPHS7guYG0LI g0w= +xmpp.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. y9h86dHL8KDClGtcL20k70YUIB5blnY6bbZCo+UFbnoCFwxJV388dQR+ O/Qkm3HcN/eqqqitHr9rOPbsJUuDdJ4TiBzjYX71cRAvGcEl/cTmJJ2h zjKDYUDI1kzn38lY2MjhyRajiAblXi6CyItUoZY4qQza3cZ69v+jCmdm eMk= +xmpp.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. TGJFSHqt5TWsGPRgmEeVlcPexXy1C04Knf1W/Pq7uQkCErhn1Ruk15fz eBhEz0wTX4b0/ZlyJrDzZiMQXnsmU74PjB062y0rXF2rbU8zl5lK1bBW daLrAZ80Gkj61xdbmZK11La67U8tHaw+Dz/sw6Ex/fHCG2YzxRekonlp UYc= +xmpp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. Xmu+ZzOkG0V3uO/J49BMnOdjEWRlnYTPJx8sW3/ey98mAibJT1ia+tS8 of1myDEe1p9rug5pSLYtNSFV51D++xyia411clKCsuOcFeag+fsK+y1p b4ly2RyOzMZxRTx6JoWTtA3RJISW9Bux9vE19V3UYz7jMKfqcPqjbiRL EEY= +xmpp.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:30:: +xmpp.nlnetlabs.nl. 10200 IN SSHFP 1 1 44278B2B38155946ACAA742191D802592FE5D974 +xmpp.nlnetlabs.nl. 10200 IN SSHFP 2 1 64C62234F12768515F5EA1312FA04AEEF2C21B5E +xmpp.nlnetlabs.nl. 10200 IN SSHFP 3 1 FDE976561F905F1DA58E8C8CA8D7F6884D115A67 +xmpp.nlnetlabs.nl. 3600 IN NSEC yobro.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +yobro.nlnetlabs.nl. 10200 IN A 213.154.224.53 +yobro.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. w4mpke6CIR55xaQqMbNA/FNEFs1lCle7ci7SEZjHRapvWTVGGnO37tAD 4ygUHcd/LFQLJaVbA6yipPCgIjomwgHUdDaUlsJJmHnkGDBbGbOZWK0x 0uPh3O+jSP0a+dGxatDa6J14ht2TlDhdsVXCBcspxLGucQSrM9noE4wt qNw= +yobro.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. lnrWiDhyGXqSJD2KI4ccrcsjA/IPRwoJB0sEDkjFQgpzr+cV4ly/Zk+W VP7NWiQtGWYnOoQo6nVns+Qa3V2BAdbjiUzh2c5A8dPxGvn3/TXLQdaU D6u/ksTPUFBTosYNVxkzJhfCeV6AQJhy6M1mMPGuCzPA41idiQiBwTUH Vso= +yobro.nlnetlabs.nl. 3600 IN NSEC zaria.nlnetlabs.nl. A RRSIG NSEC +zaria.nlnetlabs.nl. 10200 IN A 213.154.224.212 +zaria.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. AJiW4d3BFd82L7pYHz14CgWdEqt8hP5vNJC1AuUL8Z3GcYOuSUF8qKJe IY4v1eoJErgO74JROAPYa/KLQLJ1nEM8JVgr9HB2D+CCSGmwD79vz7YF BeGexjoKc9neyCCy++FamwI5WbCXz2S6Icdh0+1z+q0mUBVablSs5ou9 w/U= +zaria.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. AfXZMcTku6xjlMUY22IFJTcZJ8GNE3Awg//s+ndt0XwCLQzcpviXnOuh ya6gVprpFow6XdB1Zaa8gvO1A9DXFP2mz4A/+wp3U88uS5U0SXbjWufW MK9JrEZKUyS/qYX/pLfXIY1e4jM+dlWl3/GWbWwVifGbO/gGj7jz+JfW qWQ= +zaria.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. twVQFMZk9SynU1bp0A/pIzIupS5m1Ms9WVKkUdVc8NoWTOQq8uyGAbA1 hG6eP5wA8sQKGUv1fVNeTpTzrikLXRDA6Taof+6uU/JPQWSuAr0YkHTl raue6eSOPFdKKlzqYQeu/3MB/zCwsXa9U/8ewj66RYCA5eMEFf2pJ5Cy FHU= +zaria.nlnetlabs.nl. 10200 IN SSHFP 1 1 A440F57393E55A79BD3EB97D71CBA914C15F9DC2 +zaria.nlnetlabs.nl. 10200 IN SSHFP 2 1 A5D6C312388F9CDABC3D550084D41C1471C1ECF2 +zaria.nlnetlabs.nl. 3600 IN NSEC ziz.nlnetlabs.nl. A SSHFP RRSIG NSEC +ziz.nlnetlabs.nl. 10200 IN A 213.154.224.27 +ziz.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. maYa6PCA+2uaz3QIS1hYUfjW+WzNdwi6f4ittb611PmPnO9VTl5TRVvM gc9Y8fEKPNTPK/im/qjcAhXVSEI8oGR0Ww6mooolY9l6eBdO5D3Nobnv 98iZqpWTuaBObTiCfsJKmSPUj5rYn+x4Ol/N54Y4xfPuQqH8uCxY6PO0 aHI= +ziz.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. FiYtWKhcySJmPf/PVd/UYKJeAcfrVDkRVq2xBxNr5/AGEIDuhwlisTid U9o37TzbphBlG6xWN2vKj+cemJKbMDVzjUxhjtnJrxIsg3edd5ZOpkEf WmBzIA9h6BhWWnFgV129IFt1ojKV5w3UA3WtdeJJC+wwmeTUBTlyA46K BoY= +ziz.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. yK1kaPZnS2dNtPFFie+vL8m0zw0F27chDsUQMtGDii6IK/m9AyNGigz/ morb5u0i2tjM/ePCxT2LPXOMQvYo8tWNysIGRVPpc4DwevSVfCOzxpVf QBOvoWots48U1PkeTDNLNmnuRIMacaRyyQVm+z35nLz0cWhUayZll1Qt P3c= +ziz.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. xfUJbS0OfqRS9EsnXVGWE+5G9x3vokpcSTAqI5ZW5wJNrhCrKnF73uWj MUxYs0ac/bR3JSoCmytXg7hhJH6GLkwoR8YvL3lGsqyebXqYq8j5ZVEZ WknhM9tq7W0h53FMVl/z0r+Nz8oQoaaYB9mjOp7SJQplk94ZtFRGtdnu WGk= +ziz.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:214:4fff:fe3b:655f +ziz.nlnetlabs.nl. 10200 IN SSHFP 1 1 0C7080A7A7E931F4B22FB937E10FB8BFFF42F49B +ziz.nlnetlabs.nl. 10200 IN SSHFP 2 1 79A780A6DBD2F1217CCE21B02A35CAF0E0481C55 +ziz.nlnetlabs.nl. 3600 IN NSEC zoidberg.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +zoidberg.nlnetlabs.nl. 10200 IN A 213.154.224.18 +zoidberg.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. P69+KJ/51LzKSOM3dIa6sVQ/mf7c0ADFzjc7j5AxHSb9zylbVDd/eRXp wl1dkRXRM8lDzgL3Du+0T231qrxSNmt9Kk+Hg9fHhrmyE1+7c0zcPptL vRNjObZflUU7H/rHhHnS/qDRO7XMN5ekdj5/pispch5L9hIMWEZY9muB /Tk= +zoidberg.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. QdHCZ91vD+GMBElWwHlJNI9wr7Z7isXRhcQkcjBB1msSlrCNP7dMi1Yv IK+3ThKzvzFXwknjmsH01jEXhfDTPjUsAk1cFzMcv4C84RFyQkdz+BMc u1V3lyvpF8ipnfzi1cgOKNHdHVthmx6JCJO4wdofblWkN4fnDUFidrfV G44= +zoidberg.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. IkYDDKoDhvdWMqUBCPqH30sKoSFh3K1s6H3QuUxr3kHIZIdndcobCq+t hfrGaV/KvVtlOFRZsMHojJeIQ7RAhn+yxDvrGrxgiBOvUwow5zNwc3I6 MUWV6oGWDThUObe/dHryumHgngEVB7zevBZwslXpG+nsoxYbwPTTTott 2Xw= +zoidberg.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:219:d1ff:feb1:85e8 +zoidberg.nlnetlabs.nl. 3600 IN NSEC nlnetlabs.nl. A AAAA RRSIG NSEC +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2014012700 28800 7200 604800 3600 +;; WHEN: Fri Jan 31 10:50:28 CET 2014 +;; XFR size: 1430 records (messages 9, bytes 140058) + diff --git a/external/unbound/testdata/test_ldnsrr.3 b/external/unbound/testdata/test_ldnsrr.3 new file mode 100644 index 0000000..70ca222 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.3 @@ -0,0 +1,574 @@ +types-signed.wb.sidnlabs.nl. 86400 IN SOA nsd.sidnlabs.nl. hostmaster.sidnlabs.nl. 2013090401 3600 600 1814400 3600 +types-signed.wb.sidnlabs.nl. 86400 IN RRSIG SOA 8 4 86400 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FS5/2Besj3v0zLSGbsSztLL48+efFgpVADvLURzd5DC1Mz3W9x5yIDvDmmJs8o/9E8f0CKFfCAsP7dByfjSTsNXp83HSC4gB3OJgBGKFcvCdBjqG4lNeZlvX2510z5Wt4I9Ap+4xrpdb7Gx+nLfysZUozoPXZTtnXRQr/fUIlSM= +types-signed.wb.sidnlabs.nl. 60 IN NS nsd.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN NS knot.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN NS nsd4.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN NS bind9.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN NS bind10.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN NS powerdns.sidnlabs.nl. +types-signed.wb.sidnlabs.nl. 60 IN RRSIG NS 8 4 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uj2mFDdXuXJI+ahHJWdFqpDenLh3P2skezM933C+FpaLLc14JhHITjL5CoAhnaJGIuDJAc/PocCLgl+fFsEgRFSvK/svqzLCkzTA+1w04D7JdoKj4NFkkUe5ryWdDnaUPvp4b2yk5Ian6JMXkYNjZ1PwIEWpE1P3qc8PMOFqXDo= +types-signed.wb.sidnlabs.nl. 86400 IN DNSKEY 256 3 8 AwEAAde1PJyYjnR2R0RmzDuiYKRh/ldkv0znVOYwfjsHZNLg0ahLI+UsvghBmimoUSGa9d6Ckd3dodbHYxUpjFYsJfdeq+qimYFjrG8bUA2BD2uJMag1/QG7DTUp3jHaV0Q13r/829QEl0sjrLIBxC7wSlqu0ydfYz5VX7X0A8i1vDm9 ;{id = 62298 (zsk), size = 1024b} +types-signed.wb.sidnlabs.nl. 86400 IN RRSIG DNSKEY 8 4 86400 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KBS/LNj/KwAK/7Qozeyq/dM9rnRZBfAeJECC7tdYvKG793yLeWah1uS3yYulHTXN+jyPZ7agfbir7vRxnXc5o9NiJKumT5/Ke0ZBRDGlSWyA/AqMfkbiwkLWnUA448wNHbD+3acxd+ahs7XTz1qnEvYLhA8gkbW7PfVCmaN6qqQ= +types-signed.wb.sidnlabs.nl. 3600 IN NSEC a.types-signed.wb.sidnlabs.nl. NS SOA RRSIG NSEC DNSKEY +types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tV3HzeRPSp1JvGuWkzW5WiRQlH1MVcIddFPT6P1FXHfzKHvA6/kEBxH0qRraxqx++Sj7PX7SmR7qHoa2IUVAYwVXiwMf7Vm1iR9ReqylMDOSYnCCIrTj/H1rkM2ohSabn4ONmmuxmeHgm4IjKHbIuKPyOY12HcNPV0j7dwM6Xo0= +a.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +a.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xVnnWCWW7jRgCpshnZWWxTa7so+1sSlTvYSCdTIWbXp8+FdF88NND23Evevwf0cBjiKvk5hzowCIHo4d201EtQcAUGsBue1SMg6Dg6vXrsB9XOt+eAwXUsF3diIptDB0A+jJ6bzxs+DOZGI7eFpAw/eCnIvOMOunQrTs8qNUt08= +a.types-signed.wb.sidnlabs.nl. 3600 IN NSEC a01.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +a.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. yMJ9D23OqKPeGLqE2GQ2Heu5K9le1ToIfO7fQ1Zwla6rwIvXixvBm/s220nrIGDE0ULRC9FL6Esh/YGee10eEOebCpaDmSyCR9+Ea3j1CZpJIZLYFDEu98rlavFSx3g9FPpFnQiVDI+e6Fm4bU9g7GyivVh7wyeu9pAB1SsxyDw= +a01.types-signed.wb.sidnlabs.nl. 60 IN A 0.0.0.0 +a01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xvYiYdW0OQt6XXt7vgGZztSW0hFXBp7GxQzOeF9mozvNbFefTu2XVZMJYYxOhNo6HvYbdPilVs7ZCv7wlzT6x2SOP+eHt+bZBIoYG2nc8se/uh9K0jwgPp6U4pgIFC/Eawp7mMzZR7bcJ0vlZSe3vjkxCdhoC3a0peHmiOLFpF0= +a01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC a02.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +a01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. c9gz6OkVfusvO1G9Hfb75OrFaqz6QzRUhD+PyqYYl3KRv4eAv9q7310svKXKHVlB+FLNCGMsMjBlBueCF0mY/np92c8uvxbqOErGkf1vU1SAD/PA79Gdemc/9+q9bmfHSaW0/4eHOGhnUy2R4akcxC7t8Um5+z6WYIoJkWjQBLY= +a02.types-signed.wb.sidnlabs.nl. 60 IN A 255.255.255.255 +a02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eqp/zC5jc9ypeNCsmct7DNXIyKPEDQWxBt0G42OWUOmmBh3lVRngG71RL83VHFboMlxsAUBjKRbw9kDKM1vwoxcDtOOF0ZbYTnj+C6TAPDIeiAVCfA7k1kvFtwlhBDVVWMKOeVlMd+rr8tQsGKtNE9IJHmS4VNz+GH79W1zHikk= +a02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC aaaa.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +a02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. w+df+olnBx6YLSnE+sawqz98esH8PTS6reePfg6tU9qUt+L+9GlZ8AnmOJlxb/issPcaD4VvBprCQxLSGH0jJ77IsHh85KZNeY3LFcl7OWks5wEPNi5JaCqDjmMosE5Lrb//QS2cR0gYWlhBtcbhvQIkRzOPI17sDlT+flFULoo= +aaaa.types-signed.wb.sidnlabs.nl. 60 IN AAAA 2001:7b8:c05::80:4 +aaaa.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AAAA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. NCF4gq2gb82K5xxmGqSE4jeo3tCyhPkEK3hQmIZpuGHLaRkV5XWKENKl6ExhNUy2WUAYMqa6FtL5f2tEymKeYmHLwBAPSJpDlcXiHmeMyY9tQZiFhpg48wtUbgyvbAgqvbNU6kf8YU/YaQSoMu/HDPjtMIbIY9L+CpphD49BgyU= +aaaa.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb.types-signed.wb.sidnlabs.nl. AAAA RRSIG NSEC +aaaa.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gRNkK0ecH2/TbQryyKOvsu1QnKT4cHgRcUfZYa0U+V5532ggDwl9QxtyPKK7BbuAPSucLncSKv/h+Wy+wGHVTZkXdgSEe1QeEAbFTo+HBuWTvvKIkd8KTnwFRT2efuTtC+r6V/Njwb54ZzVkRxxvo6SCsnKKgMvHzjOsGzwDbt4= +afsdb.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 12345 afsnode.types-signed.wb.sidnlabs.nl. +afsdb.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0zcmBgLAXX2OaJ+38g4JN5oDwsXloVQcP3MHsSXAi8mWUc2pYYxl58IFPaNhqm9Q6rSnng27VwFxBw2lP1SyGmsgiMtgbXV6z0uMP9TS43CMiQHFt27cMnL9nkM8BJBTorKHiSHD4CjsAH81i0VpcxMtSjO1/rohzCyp5ATqxFI= +afsdb.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb01.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +afsdb.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OfBOAZzfR6bpQ10LUN/tK8xlGnQvs7sCPlE4nXaLzel8EdOLyDYj6oaez+c8TxIlL/3XRsM9wmkUuUJ0nwu5mluPwx+W0wR5r8BF4px22k5YEP+FYbtz/HXkrCUCVFG3Rn4hsLX0SJ4FqRvsszxanzWLDGE4Hhma4QpNgVhlz0k= +afsdb01.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 0 hostname.types-signed.wb.sidnlabs.nl. +afsdb01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. QzI29ze2x0L5UTSkMKB9i1HxKGz2SxHMR/Llf9VBu5PcfdPw6/7b43zSLrp9DZCL2WBTS/9aPWX9P/Q17JmDU811G+Mdy1okjVyoT04FFKRVFEemU6T5CEycaIKTzVqQBdM+v87bknyB+eugm3oH0A8rWOWtZ/mg5MvvBQwlnCg= +afsdb01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb02.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +afsdb01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HO9r5sk1ZCMZ3vuZA++PD+H5ZHJjGE8YoAPmRZ7wyN7ODcCecx/MU1HxDLKLDJhpk9YgQDSm3yxcggDSz/13objsyIZlnzCBQrMDSvU0ykqz21msfJkYe/kA5vds+fMHSPlB9MGYEaJ01f5EzkSmF+9D81e4uVLlNTU3hfYma/Q= +afsdb02.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 65535 . +afsdb02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. WRwlGYPHleWaFOrFiXHNNtllsBrUav1Nh84KD7dBxpFQgswCqfq1I9MwLEJjM6O5x4kJgTJs8Aool0sFbOY7IhiLwcrAKGQTPaKWnj9uAGuypyHDiAzKmbmwYZEgr/BCgQWorHCVynwbmctR4LnYuBb/mpKtlRfkQi02bTMPZhM= +afsdb02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cds.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +afsdb02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eGFG3E2Smm216j3GQcObHdgM2vwysnHdDSlckN5JxKMQ9Pnmhl3AWN3LRwpgVpdObGYLinJaRkb/feWUlgaemJIeFTaZzd3ZX5QG/egeaOoi4Q0pD7uwdeeWpcbepltGr3aD4qg7WkBUAxBseKnAS9jrvbC3iF7z0XzfN2rCSGU= +cds.types-signed.wb.sidnlabs.nl. 60 IN TYPE59 \# 36 fc b2 08 02 86 63 2f 83 49 4b 1d 70 37 e7 29 49 fd 6c d8 68 9c 5d aa f4 df 1e 5d 7e 6e f3 ba 28 ec e1 e3 c8 +; RRSIG: +cds.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 3b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 7b ac 8d 49 e1 6c 37 44 de 3c 9e f1 98 c0 54 80 f5 23 8c 49 62 01 2d 61 91 2c e5 32 c4 15 09 c7 70 a8 9f 55 62 43 52 bd 7f 31 d7 72 d4 cf 76 d4 e0 20 41 d6 58 90 4e d3 f4 f3 a8 5b a3 4f 37 24 44 d3 36 bc 8c d7 fb ee 80 8b 5d 37 15 71 b4 b4 c1 41 9e 47 23 09 19 39 d3 47 52 79 c0 31 c5 ba db 9d d2 24 92 77 55 30 9a e0 5a 18 93 65 3a 63 a9 f2 1c e5 24 9a 72 1a c6 41 5b ee 68 30 99 a8 +; NSEC: +cds.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 44 04 63 65 72 74 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 10 +cds.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OXca6RcZ3vAaA9Z7UI+E0cUdmKmcrdpNChJaVPUZWqKs/cN1hvCB4P0MfsMWsO5q4VlIOgyHfSUsIz1HGFeNDeK9jndjYxUtE7HvRHPrl+PggrVjkILQHfAs0n18707bKXptKhtCFIRlzenERdP+z83Sk15AoNBejKUgvlFiOiE= +cert.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +cert.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. J0QSoNK/D7jFxrpEpIXtbBX8GvdvWPBUH20H12om4Kai5NUeJCv8MN8ehHsy9UCZjg0+S+BynRBsvwajJiOTMr1C7pKs077Ju/XjMa0umoYltDbBx26Q36rwnNN5O9zb/dyXDxBksK/twZViNZrRCq90L+cEkwXDMtjiqXA8Zag= +cert.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cert01.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +cert.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Y+0rG4IrW5psyw9O0B2PFZ/CFGpnr+M19dUP9+el6BbjjYpkgyF/n4t5SNYBYRy7Uqgw/qEIIGOImwlJyxPX19Dvl5Ci4T8RjbFkcYQWb7DGPLfSaDerpsd4LzDMAc1aqheHFXSnRYFY3xeTkLGrZnOq/wE/89oV/ZvnYSGiE4M= +cert01.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +cert01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. mpC3G7ND9TK2gCNHTrde4bNNzP/jRi+USwQzEMUOKo+rAiOAAJXz/3OxGFBjLEIPwg5d8DzZhf1EcV66HqNHxaW1gk6NQwCbdTgvgAeUMJ3GzNyDnrmpaS3CIqURPOo/1T2MoC+DvoQuxO5M5EuQDsh4Uz617HzUE5M476TaqRc= +cert01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +cert01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nTaATn7wtzeCtOVpPMH50gE+C32M7YPLbXIZPd9TaFVWN21k/yE1f///BmdGh34hwteLuXTgg47Z0rxHotvYvOy7IkyqPQ13/RYDkf1W//aTRaCUbVpfyNIZ7Zjq5DYxC4iKyMzYJ0aRMn+KMjMHGZuvdZsHCp19QdMvhV/RsHo= +cname.types-signed.wb.sidnlabs.nl. 60 IN CNAME www.types-signed.wb.sidnlabs.nl. +cname.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iulgjDFHWOpB2RnVMFAu3Nx0AQQ0bq0AXnUOQFma3xQt2ZZXUoXjLebDZQSE6a6afCG9IXgg5Oka6Qzp1N/idRnsKINjpJi6IqdAOIqVxhG0Y9X+DS0HbR8wiikWrBVuBbk6AZsH98SePYh0u6IhoHb3KZqFcsgb37PkpvFYg2s= +cname.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname01.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +cname.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Vljy+6YhzNQBz+Hp8v+B3+G1Q3kc/asrxgncrWYJ031ix7d5n5yzjib5FMDCRCGxOw39PRcBsumSSzgmr9EpQewfPHQD0ZI48GTqhcxu2Nu6WqFN3OLjhGleECn56WwK9pU0sgRA+CpoGuPlczhNvcAURBlyjzdS089sNANQVoo= +cname01.types-signed.wb.sidnlabs.nl. 60 IN CNAME cname-target. +cname01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BHDEK8+lOpSCfSTSOlOa+c/6UfsI91fTvPGjmgTVixHRJCwBRn9n4hwRscc9OFbOaa/DSN5pRJ9TggNssP2O1Yz6T8PckZnvkAExT10uexIuhY5lIx/+JRAIwkR0r/cObb9bh6QdQfh4+/9ijntpUM7b259L4z0nkc2WQw/mxTw= +cname01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname02.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +cname01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uvbfLhiUEvNUY+3HoaQNOeOB3dCP57THn7HuU9fr6fVGOWkf01AgTigzpk6X/RyB0LKti8hiV3Vn4JimcxljZEOOxUOKwOX1qxIkbrbE4DEviWm2aO6jmskUD9JnAfIJzUDxeFmvZmDJvrcupVMBusRRx+bD12qXuNv77eENlGQ= +cname02.types-signed.wb.sidnlabs.nl. 60 IN CNAME cname-target.types-signed.wb.sidnlabs.nl. +cname02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fI3V1bTtCRmVTGOjuEbF4ue4vsxJzTpLvoNDdaPtrsquSR6pEUAQaUllBnctAD9QNqaiocBkbvI+YqmWe+ALkWjjB2RDDmacHn907sNHUwpDi64akqHSPYpPX7KBLmFXis8SlVgMtrsfqTAPEVhwbm3HmJbIUUhd8xgrYlTQV/Q= +cname02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dhcid.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +cname02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MHiiGZ7/3x080HQiQrVwWvU8Zx3OyNLtxYJgr10QZeQ8PDAq7uiTNuP8d3xZ+Sw3vG/RKWzKB1Mdf/cyCuoRS97xtppRynG3KOSk3HTY/FPn5qSe9NNbU4yZvDX7yr+tdHOxEBe5su1hKq+t37GIf2AzBugF2ErRl6UxBrXqUEs= +dhcid.types-signed.wb.sidnlabs.nl. 60 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA= +dhcid.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DHCID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. r5KE7Pt7WWGRgDOh88tQUp5OezvqrIH1Ut4L8zcyL8n+XifOy9tpntknKjTtZsZMnzhnCjwYwAfpOjE0WD1zJ+fLTNu+y324u1ugsZSVpl/Xb1BgbUe6M1/22612EqGcGTweut98HlJHz6liAlWmo1yAYke0ujL1c6TBnXQ0nbU= +dhcid.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname.types-signed.wb.sidnlabs.nl. RRSIG NSEC DHCID +dhcid.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R2POgfAcSLuNo8BFu0tVIhki2RDzQu+5bfwbvcVLplsKRffr+By24zm6JYMxBzO22s19NpJvWTi6eO/grI2viXpGvGJJT+cb1g0WDAFmQpjh03iNVhnOsp/Dim2dgxKPmS4bf4TvMAnZXEPg4pfzuTNsWfrfb3preoz7gAgz7cY= +dname.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +dname.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OPF3jGt9zmdf7SKcW2yJD+lT8T0JVZBl29tQyvJBwbi44ExZY/QBh1YbOfJmPJbq/G5vE6SKBM07kl8OungKC7pU5JsI4osx5DbadBink0hDFdiEqsR9k4BndcbgMVjG3DI3lpR5dtdwR/x7GTe7Jc5GE12mP9baA1QC7uBAHW4= +dname.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname01.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +dname.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R+Cv9M1IaW6O2XD7hYgJ45HGGPooNcwE+K1Da7VuvwAwyWyK0Ip3B4nfzdrO2F9PF51uPebKrzPA41X62AxjC1Zj3c/PzSQqOwLONmkdLBzKacT0glV6yzuJcB5XR6XIATl+A3vgGJzj1mhcF6wjV5F1bE8v4b4ysq9lDCy/cC8= +dname01.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +dname01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HhXaLVh2lDAPxE6XJ/uqUGvpK3vyoPoY2bspICKjlJNosepMbBs95GPmnoXY387L/o20gRF7lrs945enAAuD9HVyBTjUnuIgBT2UIKpOq8p79mLjYYEglSmDRM5h4896PTtRBK3aGKci/GPyD4tDiTzuBMXBhYBI7jPk09v4+u0= +dname01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname02.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +dname01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0Rgi/IRR2bIasPGK/cM3rxzf9FixNdv5c7AztYAkWZusIPjnM18wke3FwIfpMCvmHumXiv6TqvbViUMJMnh7maA/mzbROKXHU41brPZ2y+ypM46ChGE5H7I7mldiJg+UdbnIvMjwCmZ5hwr38ylrdygk+BvICSZOKfJutmJm8/c= +dname02.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target.types-signed.wb.sidnlabs.nl. +dname02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. h7CPniH+xF30ZlWqmtN+LfUcqMma5vp363VtAiIBV4qLhsKm8SjicBGMzvHNTSqXuefDzZbKt8QJr4ChNuIlAkVqzLSq6F2fLq/142nS8Zz2m5uzYy7j7qm39laZ55iIkYM87NO2t8MyUWNukzfDD5vJpPP8YkIZi28aZZo4iF8= +dname02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname03.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +dname02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. W0X6NkFSq040mfnwqoIvMP/hGgd5zXlVJYhAM33glde5IT2XXuJYJ7qW127XrVM1jhBMWsTEk3pdJejq1O2FzvMVVIhRPIOoholiVvNq4GXBxLpJlN+aQohqfTi8hA718pqOJFdf8fAsfTW7TCThc5TwyCB2SHf0/7gA/bM9JBU= +dname03.types-signed.wb.sidnlabs.nl. 60 IN DNAME . +dname03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. q06U1uZ3VYwAj60QGUJRAzLB2yFEqZwDUqPUZnHysbszl7S5GDkt4aAjsL1fWpvXpwpGPqkEv0yxX/wue2AxfRVRE3yO+Thsn7TIinAoUrPmnFgoMxZcKow2m3WDoptAL3YU+OSADE2pCuYlWeE+EoksB193c4NNMP6GEsnWH44= +dname03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC gpos.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +dname03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. z85oCM5AXMcwFvloXnXBYb6qWGnSpsm1hPTCK9DP4ZnETy+MaLx87vZNrqREp4ybt4JxxIfNOnaIX3V+XZjOwLNdFz/iEEBFOqWcNKYVUZmp4dj6zGejZkYCEpjS+cruMeLgIqsVK/MpgXldeW/FUy8Begkf15KJlroeXvLmZdw= +gpos.types-signed.wb.sidnlabs.nl. 60 IN TYPE27 \# 18 05 32 33 2e 36 37 05 32 33 2e 36 37 05 32 33 2e 36 37 +; RRSIG: +gpos.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 1b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 49 cb ab ee d1 b9 08 96 95 c5 52 48 92 94 37 86 69 ae 1b 93 4a 81 07 6f 36 4e 3d 3e 68 f2 39 e3 4a c1 06 d4 55 4f 00 9a 39 a7 81 3b 1c 8e 02 07 6b 0a 07 37 da ce 4c cc 7b f3 cd 20 f4 df f9 c1 99 34 da ad 81 f2 3f b7 43 c8 9c a9 41 38 7c fc 6b 15 06 52 56 34 20 6d 49 18 fa 9c be 97 07 a8 8b 25 b0 f6 ff 10 e2 95 55 1e 46 43 48 8e a8 7f e7 e0 51 bd 9e 6d 8a ef 42 f0 15 74 bb 56 be e4 +; NSEC: +gpos.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 43 05 68 69 6e 66 6f 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 06 00 00 00 10 00 03 +gpos.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. N7ZrGEGx8VWu4rwUQl/MFmpb2CKCWSdyYJblfqycr0EDZrf8O3Pxa1LQ6kAsgErtevsA+Jv5iqpWdYyVq0vGYKt1mXPVUD/cSNy718ACNd+828zPoj0JQlFCt+MUMChQD+pIX5aUAei4X0Topcbc6yNoaF8fSgtpnoknO5RQOc0= +hinfo.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "MyOS" +hinfo.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. s4fnRSRBplDkwpDLvSy5BcsqyI34GPAyzc5oF8ImJEK9NFnCXUvXoDOuBw2Ku7LThIlK+qdhjKm8ytRNbE4iU9ycns4toTNYkHkig4k9/k3ZODgRfZBoXbtYrBS0IddPpzrCSWdpGWSkNWSRlhu5BPQ8OpE0pfu52APdYHCByt8= +hinfo.types-signed.wb.sidnlabs.nl. 3600 IN NSEC hinfo01.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +hinfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vHgEKVeYRKSlwRn+ThJJTS/37QxlGVbPul2q2tRuCrZwC8CRr7UmRZw4zPXjfrshp/CH+p9nTXWkmn04v0ur70e6eZuHd+iojLmYoPJKnhFA/Rzo2MPu/p29uYI6M35stWTePAZUaoZIvD/7o+y36gSspYRARXO4vZdQx+zdffU= +hinfo01.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "NetBSD-1.4" +hinfo01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LRlHYaYxa+jtlO4TqP85UeB3qLLHWl+TIJr4EYFQJEBhK/Rsgh6z+0W6QOL8MwVqVgJrr6bcOI1/yZYHMoWUS1bjzCGa1kDP529TAfJb3kBQoBxUHS+Lguw7VLV5GWWHo/0SPOFjaRXdKN+E7u0KYWXByGq6LJ0Le02nlyuq6Xo= +hinfo01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC hinfo02.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +hinfo01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xSacPtyhS47YjOtWm1JldmlF4Y/rFbJBwGlDmajlSHSzymSBcr2yMr3YiiFDItd4BM/ANjiYKx0nkATbFvN/V9toSOEuuwwyvBQN4hQZk2UGQ3GOWdhIq7oEPIKvNxxNbNT0thIUnGt9rN6u8KRB+2kWJHWf0soS8zd4oqHyRjQ= +hinfo02.types-signed.wb.sidnlabs.nl. 60 IN HINFO "PC" "NetBSD" +hinfo02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. UPJ8+rMZzLWgdtwklca9G4kG5mY/d70CRtXIKZxwgd4IuxcSRPf+K0d7/SEkPj9qT1NKtFKMUhvLAeBCck0Z67HIJ49Ke1a0Zl5ONJTSb+deCVjSaI2c45/p3D1yLt2zwqf7G16GlpKd4sqGkZtP5Jrh3z98Ei/hwiAqqqufgYM= +hinfo02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +hinfo02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Qv+RbcYA/0GeSwan8b4npM1t8Mh+pkkhzzYftAwIpECDNeUZIrfli4QCiqnK0EDzXpTGZ8kSyvVTOpC0P69MM1gs0KoxX78iMD1nDb/wnEMF6ij8Y/wsPaVJR1x5uUp7Tt9gfTAcIqkUQusUMiizM9+YCkp12oFyU5rxavZvCzE= +isdn.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +isdn.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Ya2+U1GFFqTjqc4Mk/VaPV9P/3DXmBlX/08C7HwUoXE854OHi5zpqTom64PYRdW8AyvJDUVDE+Jng0V6aEQzLTMq6gnijXYNGFjIUHv0TrowD6NS/gOjrNNK7UdxBVfgqQQu6jzPU0V+4djHGrjk8vTjXnhqTYnMCDEO0I8Sgec= +isdn.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn01.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +isdn.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. M/nT2HKbweJ/u2P3JyZTAWa7mEzjl4TyGI6JsBiksdj3BJtwp61eu2QbvDxlfPuP8Y3eHVwGjlrEimfajq4PZI2zTD91GeAmCAK/Wvc9g2L19pZgyw8Eg5v1u2jvmSkydEfdCOOazit05QX/RAa9EeBxIuqgYpkMpcPVjVcGR5I= +isdn01.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" +isdn01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. JWYfAKWrIqN0vKHoFIjdHEdJc7zJoyE1shbyGmNxzYYIgWECshehRnslifsTW/bjhshy24Y+ANEpLWuu1lMYTZ9iLqoZaj3vOFrUxAf0JHasrDNxr111eVUK3CHYKccTs1tU7q4ev0Twm7BOTvIN92TiiOBqveGdmYhJHNUk9/E= +isdn01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn02.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +isdn01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YgHAIvmlEr4HNgiyKNUQ90UAQu2ckPWMziTwPcBKalAXPaDRXBvu1nNgXsiRhRzRU5zQaArOM4/aGiZNAX+5flzpAaPYTRrUhLY3GLiqm/a8b1DVqztVr7M896ZEPYBNaoCvOJmfuw1NaRIjEDs8x9INLqnsKNrcRaINAYb6euk= +isdn02.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +isdn02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vn/vUij8ORct9C7+pc912ZuASlySgSYLs2OQ0MyewuFmt2fa6FRr4bP780ukPPy7iMGYNkH0hqabm0rBPm27CYVOMwoOU75EsnPVY/tGqn1dyTkNJ28iEUKevU1cgRogm+hPB2slKNXOzYAIUYU5ioXEFKVKgvSmmNDuKKoBAgI= +isdn02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn03.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +isdn02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. W3DS27jdcoFpLGrPIrcowj5zGnWZwLJDql9ida90maIs1c2XwJjXur+msUf6ciD3T7vcExCENyjcuRIfXrvK/qCuWDpPK0pHw2SGQ8oX4Cw/ghgRj/IeK+MDjmM2ZoJ1Q2yWNKFntgPzEBws7cqjpBLOAz45e7WavsY2Nd0QmwY= +isdn03.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" +isdn03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uRRicG1FyQSOXmWEO+3hITRQyn8uOdPISJrDhPRWAJQaFD9lvnG4zuu0lOPQsHQ/S1YLsacOQ/vfbOMlNe3ConSvpKw4tE2tDcBxWvkjt46KZ/krin725vuTI2T6kGy2H/JS719XQ6pY7WgcHHrgUIXL93tcqKqBEkIQpp+5w70= +isdn03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn04.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +isdn03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ooa/OYBcsOClpGsBMkwvXx9NASD3sS0wMWcHUZPq/ciGxHiDGwVrxKUSyqDgFhflqwJs7MFzyuiTAp68f2G3llor3hkk7ihidpmgAWu5oWuaveaL/jd2Jc841jCVoOv2dlFnzZwsdovgQE93lmkyTWwLR8QIsexrWXBEGFA9wh8= +isdn04.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +isdn04.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. veWeKnFf5xQodnjyRVtwExhXcf3XL6oyf6QE9l8UYIfZcsrrdy5FMaq74lPArdw4aq+I+wt9LKvboWBlC/QreT8yAEBG+OHiYLr3qn2D9KUIFnUrvhU28lnITRaKlknoky1RFZBLQCey+BjN+Av3Q2i7RrP5R+puOqSf7FE4qwM= +isdn04.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +isdn04.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. P1bsQZuUm42v2ZnxLoowWRLofzBSKOE4+fjHmwB/lvj0VQcDaMKQdZfTZhVN4sEF9SDX8gMx0r2y6ERGQKbP+6u78Uin24Ncal6AUdWXCIb1oXP2+rfjkrpSO3ArdD/P3IcgDpfHAErg7aq+jlbTYuW/b2Aw7OnpnWk/E7rLLdU= +kx.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kx.types-signed.wb.sidnlabs.nl. +kx.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HTnnoQj+kXnXGAhrMevDjMltI7QOmsK7DRrtwfJShuiZFf/fQ5wdDKe2vaYHQ7AsTN5GvPVtIvi/anHGn4ktt5ONnkSOHSBIjRu0IIDYIaF5v7kKpnzc9Jim3933ZEyNa3TEXkWUc0AUw9bYPytPZqjgF61g8CGls0Q8x5rH5B4= +kx.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx01.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +kx.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. STlc0nU1R32UIhYyrWQPo08rZ9ZIiRrKKzBbxvZo9bTz2uVWNPwEJnpzmmK2vqyXfbk5HaT3tG+enEkO3yAct4yOBDaW6EncRmdCFqbK2fmx9hO+P+pw9ToqYk/68YPKLiNrGMXqxl8RfmpX+QVJdAwuI7LG1NPT24eTffH34d4= +kx01.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kdc.types-signed.wb.sidnlabs.nl. +kx01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lJvhWraGMDMIOkYtcTpS5Degg1H2H4qRBS8qERQp0pBEldKalxUBMqV/Z6ePQM552KUXRlF+pRtzGcLvXs1eX/kv4sz5+2gEpO42u8g+DU4X/VK9cbESVc/RWQsGCnhyT4qzizzIIkCFa5WA/xhoBPmK2wmYwzJPoDvNZgSQD88= +kx01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx02.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +kx01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. cErg21bBzRZBpzfoJN6hODhwokb54ZFleUvOAq1EoifmHVci+vAu5L0lPU2BAbMPjsQ9/QQmOyJI8TZfbxWvHtHiRcZI0wm5QoKxMXgRq1AggrlTnKgBtfkAhPiuJFNyhvsDzYV8fV8eIf0Uaxuk85GhciuE/MqpJJPTzUqXP/8= +kx02.types-signed.wb.sidnlabs.nl. 60 IN KX 10 . +kx02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m8pFgj3dgvmkH/AhwBI+w1y8w67Fp0NVwAkCXaOyTSh8HZbLPmapky7TCzWBsc6rIeu/yNEqChhEqH3FTdhXtGiC8cuKy7Ta7yIP0IjqARXXDdSvKZqHboFv91wOjRH6zvkGwQGzoJukimqELUIuZVLpbWMoDPGhy3sT4Hi3AeA= +kx02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC l32.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +kx02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZnxdA0mzm7eb40IM8R4zZAZtGiaPK/leV2y+F8sSIlVpLizLW6VZHH3EaizKnQXUgqUbxWa+SqOgIvVGOlez3ygByKHJTiBAKy4NanSecWmm0vQ1N35GvqcbGuzNECtktD8LB9L5C7Ao40PmDP1lQvgxeAqD74aZ1nNZmvIkdMI= +l32.types-signed.wb.sidnlabs.nl. 60 IN TYPE105 \# 6 00 0a c0 00 02 01 +; RRSIG: +l32.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 69 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 c3 2b 9c 1f f9 dc ba 10 0f a5 f9 33 65 8b 71 c8 ba 93 52 c4 33 f9 59 f1 f9 d1 35 91 77 9e f5 c6 1d 0d 46 b1 7d c5 45 67 2e 8b 71 16 66 76 04 44 8e f6 d7 8b 28 46 b1 51 40 45 3b 47 af f4 40 55 81 7c 91 c8 ec cb cf b8 2e c8 e7 84 45 27 56 4d d6 47 df d3 0a 81 7d 2b 15 c7 b2 d3 cd 40 52 5a d3 49 f4 2a 0d 9d 5a f7 ea 3f 72 14 cc 8a 54 de be 70 dd fa 2a 45 87 c0 60 b5 0f 8d 5a 1d 64 fc +; NSEC: +l32.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 49 03 6c 36 34 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 40 +l32.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Nhgme9mLX+ff1Etmoxr7EAawHXMCpGCtb7RMwi/2d8J/YKo1BXK75teXCjJeSIlG/5JXqk1M1qw8QSkx+aWoKCUSBr8bmQt1qYKs6RUK0LoT1fXfBWblAQY7p7t2rEt8VJvhd7blpB3/ZCkuzg7TZn96zMwH6mXBYRKCMv4JKyU= +l64.types-signed.wb.sidnlabs.nl. 60 IN TYPE106 \# 10 00 0a 2a 00 0d 78 00 04 05 03 +; RRSIG: +l64.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 6a 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 14 be 0d f8 8d 72 5b 50 49 36 1f 50 8d 8a f7 42 0d 22 6d 96 c9 f5 20 cc 62 af 7d ba 10 bc ee 7b 5d cf 85 fa 31 72 e5 1d bc 25 bf 58 4d 62 3c d3 15 b1 4e 92 cb a3 0a bc f3 03 d9 ea 20 a7 cf d5 5f e3 ac 76 b0 31 bb ce 45 22 3d 82 a4 2c 06 f7 fc 3c c9 d2 ba 11 e3 06 08 57 32 aa aa 84 80 34 0c fa 8f ae 1c 75 b2 0d 92 32 f7 81 46 86 0b c6 e3 5c 96 80 71 24 8f c8 bf e3 de 9a e3 b2 e1 27 +; NSEC: +l64.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 49 03 6c 6f 63 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 20 +l64.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MCOIhgOHf97DPKlkrsmKSRxlxXBXC8iDaWxh55LCSfKU4gZ5kXjzCYSiclN21xOHVsfTzNfrQoM+couCSMdaC8W2LAl7+SMyqYisbbyR130rIx/QVnokhPP4XIyaSqDVWWzpSlRX14LjWFubF14Z+NU9uXlnF/iAMTT83ftHC9E= +loc.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 0.000 N 24 39 0.000 E 10m 20m 2000m 20m +loc.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gXMPjxoDL7d3ClMJFvXf8eVrU+cry/+vPE3SxC5Ko/K9mYNH7m1ccJWqt9U/0/L8gJS88TLfrBTXOfyouhwpe5Qc7WQuY/tnG+YWjPmvAOfQoPfn4jv8ywy/KbUsAb1QBs9thQh6y72KGXqJuq17Yuw4jyzwEMhKMf390JsnYKU= +loc.types-signed.wb.sidnlabs.nl. 3600 IN NSEC loc01.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +loc.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Lah8vFamyU/NJNRBjF1lsdkgiDYY0x5T6RNGsXbDMHGRIOxyHu1f6DDKUE692xMTF/BB0tLG0jwO4FV9UAttUhcY8EOwFeGZrIXrPYw4bCSmn55Rn1D2IESSZ+82oI0bA+FUtRuNCyJM/Nhzgdv8osx7l3OLFr6yH9cEvvYrv9k= +loc01.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 0.000 N 24 39 0.000 E 10m 20m 2000m 20m +loc01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Eo1Rb4zpQlQO56DbVX3HsETJqQw2em+Hx4JqK6sLlVzhP/7bg2lpUyrKFJJlHmHt576b+ey+l9NjGBF90zf7gvJJjXJQgFUYMe2dFen5+npCHhaEguZIPzkSS/L4xkJ/s0f7vxxlH14FNT9bX43JnCcmim7SfRx9zjFKkc2JgNg= +loc01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC loc02.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +loc01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DpDdQRa41+5XRGMShk9LVCVO/2x0xU/KciUQVwD9CSyOv6+ghnoSav9uJwSCigJgpMK8CnFfi15Pff4l2OqJl6fYWmQXmDrkUmO/m0QCC1o/320FTKd6xw4ZTJVCOC5cuX605AGvEIWQUroOO5jO0v0jDG7m3s72K2oSiV2WbDM= +loc02.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 0.000 N 24 39 0.000 E 10m 20m 0.00m 10m +loc02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. U9UFLxo290G76h9YkwWT+A9lcPGsmWP2uWC+gJEupYZcI3LezmxSh3hFHI2HG6AbICHaept69insEIc4QQroMN8t72IrNaHrNo55aJf1KF5ksQ9/dHeW0AnL7oLh2KjaCXBklEPjtTY1eaycTmqv18dzKHVbi4oBqc9z2+SxYGg= +loc02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC lp.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +loc02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. snf3YYNIR7zeeOrtHFwGPg+0sLS7qlRLpUQK0oZLlssr1xzqhOd09V3ux9YMYwzKQhWlRDrVMvrc60ZGPvTWAOlvZUFhCC0hksKsa1grZfcHtJt2d2ya5WrYxxy0RDP9IBeOowrzGBwx3UsExU08XpZKOeE8DAeYSwTWGj61QiE= +lp.types-signed.wb.sidnlabs.nl. 60 IN TYPE107 \# 27 00 0a 0b 6c 36 34 2d 73 75 62 6e 65 74 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 +; RRSIG: +lp.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 6b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 8f db 63 e2 b7 06 29 ad 5a f5 de 90 7d d3 30 c7 03 f4 a3 59 98 d4 4f b7 31 74 0a 16 3a d0 91 86 59 35 3f bb 0d 6d cf bb 1a 6b 02 53 15 99 2d d9 a4 57 21 50 7d 4f 83 53 6f da 02 03 94 72 02 10 b0 3e 35 89 4c 9d 87 66 ce de 5e 49 fc 5d 52 f4 60 68 4d 43 30 13 44 be a0 c6 2e f3 c6 e6 39 2a 41 2a 3d e5 79 5a a6 54 3d 1d 41 0d 40 f8 01 76 60 fa 47 a0 ae 7e 89 fb 23 f7 c8 3a 9d d3 cf e2 +; NSEC: +lp.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 48 02 6d 62 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 10 +lp.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Bzmbk9uCG7BpMNPbWBIjnrLjcJ3EJvxPW+/o+TqWlN8daV6+N7+oWc1K8DupoGB1TCQXykXLR8LBRTcl0DW4DitEIZk+pQxl++L1LN8JJiGFvvtTo93FVxbHuomjR1fnLg36scdo3GlIAG9da/NV5AA7a8r1uhDZ9CirDvvdTfo= +mb.types-signed.wb.sidnlabs.nl. 60 IN MB mailbox.types-signed.wb.sidnlabs.nl. +mb.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HMNktjuSFKEOSRKJQOU5nMsnvadPX6j+MeJKh9WbSvg9Z7SHpakBeqDTSMKRvtKJPT3fH32NgMjlFOV8TSas59bJBpzHbfnfBMWBjVb4jZzswytfKmdhXLoeSRrVjUweQLRE3OIG0qvKE/wSeF0c0fMJVH6eEce+axqV0JANENY= +mb.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mb01.types-signed.wb.sidnlabs.nl. MB RRSIG NSEC +mb.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m8JzyH2RCi/mAQ9L8nnuIsDjr4X/SEZzGZ/LK7lbRQ305I0oOTCxgmAJnCLi4n29oqCcP1gaymKJoa0CSpXa2lie2pjNuWA1vTtcQiM3Qm4pycwFlNUnZjpxABmUtiyszehtb3iaJtpfuXAKFUsK2TL5yJZoQvt4w5Cg9HS+JNk= +mb01.types-signed.wb.sidnlabs.nl. 60 IN MG madname.types-signed.wb.sidnlabs.nl. +mb01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. TP64cHsuwgGaD2Xxsr94jPnnF2ml6r/sfh6NX10EQ9f4f0wzdRreBJ3rv+76EJX+vZmiT70vZFq9jnYPxF6nN7zYSPuXLJqoXG9qdQGA10yis1mWt5ILB0fDUtzSnt1BR+RapBfHjExe/4W/6XYBu3gZwyQSRXCOFxRy04VOGP8= +mb01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mb02.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +mb01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lAka0baev8L6taxaF/+uz1mSZ1+gHmf8ggsfahOfSz0mGA0OMfx3P30JWpgaqeEjVnzmxaTcp9Slqse6/SCL0XHh9sxceTKp8BmvGgWd+HljVZRgU1ddas1ffGDS0icrLch2oncH0EEQIJozcE/utB5XjgY8lKAEvP8K+DQd0QA= +mb02.types-signed.wb.sidnlabs.nl. 60 IN MG . +mb02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R9PVgTAt/htcXxCpJ+k7RKpNFXAsiLq6OYFLZa2/6E5o//vd81zZfethLtmChMDLgBEtfaDAPOOr8L0NWJZGvAKcTR7fQ109hqdqo97ViznGjlv3eBk6C61lmI7W8D7RbaMlYtFFtOjHmreipCd+9z1Gj+f/HdPKM2uwVqhAMjE= +mb02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC md.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +mb02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. giBNbaCTfWM8dHdPxJLRe1fURwlBwdZvZNAyHcX0Qt9tutJPX3CBbtnQHa6UwpiNvnH73V/C78TvLBcG6/IsUaceHlD4uKMRCopi84OWoERtpDoNxg/x38pk4RYC1btf7zyLCq8O+eyfdWrErJtCnWL9TsWXjkqiB0NyzD0WS0o= +md.types-signed.wb.sidnlabs.nl. 60 IN MD maildestination.types-signed.wb.sidnlabs.nl. +md.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MD 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. V8sbjl3GHJcTlnPMrFyJSsgWiQ1nU3zdxySSogbZCGRJoUXTGN3S8CQg4UnYxI0eFRLYd31ijDR1CEIf0ib4ciLQxx8fhjsyB2HUARtaq8GFAzbRGFAk+XjKX3x/d6GUfrRdq605cSy6bgffQtjok1i+NH2LwC8tSYD8cg7VyS0= +md.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mf.types-signed.wb.sidnlabs.nl. MD RRSIG NSEC +md.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Vw8utApHpFTuE2q7GYnmFh5IYkjs21xuE54ctThXxsNQBwaxArIbQkWWH4ViYjTI3C3mXzLgdHYAm9JsP7bRzorZ6ZEfvP/Jb4lzUvxsHBlCa0DKZOcCXKROO8Nq6su9wsd1zJ8v4OyhTNBmfbthspz+Qlr0lsGyrAWqdayOeRE= +mf.types-signed.wb.sidnlabs.nl. 60 IN MF mailforwarder.types-signed.wb.sidnlabs.nl. +mf.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Gmj86rMvB8g89wprKF9CBeG69kuu217awp1pCzvRDuDl5ApRYM7q9l6oyHfbsC+SXnee0yAC/I4j5xms2IRRtD7kudm0Ds7offyQS4ZciUYKoPemsZWcBa5iPP+NQuO/jPN4QUYmQubz3Y5BhPCROCysd3qgNCSk/ZhmViDWTjc= +mf.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg.types-signed.wb.sidnlabs.nl. MF RRSIG NSEC +mf.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. aJHxeM2RQnWe6xLfH75EYGvEpuo4tQe6cLhhKApigSGv8ss8ppbPe17qSvFxPJFIpp+vyjrAtu89Avc7cP4UPuXbRKeE3XV+qoH73UTJ6Fs+i1p3dCuXeWnpXNm/r1nGok7tq+BCistIOFvsEiRTN0hsUPH71eBdU7Ic4lV6Bno= +mg.types-signed.wb.sidnlabs.nl. 60 IN MG mailgroupmember.types-signed.wb.sidnlabs.nl. +mg.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. G8YqwCpeBiejn3ifwnGfhIazjZJgzDUY/p9tqd0rPG4uwBvMpCJrx6mkb8TWPAXmTf+NWHly5ti5eOgVFblsfV2sHl7scK5zANsICFmL05gfLToWPCdbpFJ3curv5PHWKvlAYOZt82s0HWc3FLMoHo5OaNN0hGrvgK3QeXXHECs= +mg.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg01.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +mg.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Zm3LeNdwOVNR+rQs8IIYqTSxGDFBfrRsqBormYF/rxVXcIyS+tA8r7VI4BmBthwfMobYs3FoA6abH78BK1RMsfCR62kH9ETnDM9sTv3tbtFQodyAbiKhVfV0LJZ3LxMqniTHlBH808bOS8sJJtouhpnjwY+lTrMZwJkxVzEIJnY= +mg01.types-signed.wb.sidnlabs.nl. 60 IN MG mgmname.types-signed.wb.sidnlabs.nl. +mg01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. V1hOjXAhf3r1pmyle+XrUWjYc1yPCcvOw25XDbypI1l5SDZ8E+MbjMtTHkwpUhsyHyJwveHnhA7zVbo06eTFWrA4ZPYOyTWCryNAiEUCcJkg6tM+OjQQ42bVsEHR3dzS+6kz/I0r9NIaNpp4ZxTFlFEUKCREMvpzkvI0AStFfEg= +mg01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg02.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +mg01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ll6lWw1vorF2zwzcHIdjvXZmjO6ftjkXLIq+sRxhvHQs+MnORWX9mnCOUbwhTYEszYN3QGiMo0QZFPUTRwtz4487oARZA3b8f4XX7DM4cPHKcQtQdN6kfAccHMe+Z+QWCTw+i8JEFE5r/cIlRbMNXVrBteCuHTxXTUnA1EEsut8= +mg02.types-signed.wb.sidnlabs.nl. 60 IN MG . +mg02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gUpI7J4FYHcTdWDRrM8GAdFjII8EeMuJVO2dKszrEv8q7b9Dps9KnE0gZ1jWOpd76dVy0Vwdk+JZe/72QWXbH3m/LtkxhjAK20LaXyxs6i8Qo++1Eut90dHQK55SUHL6VLlmaH8y7Boq2/8NQ7dfGucz3uNsY1VWjWumLcrT2YA= +mg02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC minfo.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +mg02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OTrr31G9kOqBYaKiDcjumg7n838pOBdV/LF7w6mavw2FUJ8y4C0GOvGQSGj12Oh4Ic1fBzfs4Ep0C6b5Vj58dWesLJJBi3GqOHxyv9bPaLtpjDvICN2Bq0T02QZiZum7XMdHQh9P5rIpFek6ATigRAPD+kLXekYGE8qL0fQ+8xQ= +minfo.types-signed.wb.sidnlabs.nl. 60 IN MINFO boxmaster.foo.bar. mailbox.there. +minfo.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZA/nHCIx0GbCokFbPHO2hMvaPJesIv3gCOgVmjluzGrO5gJMyyerNLYmwVswiTdIf4sl+wi9421yPJhM5whVZI+Nw3ixBjvwg39X5qYG4SP62UIB2QuUGBJcN+XVrjhoGmljgdNcbK3u4HbqVsZGl4TrhF3O52Pu3L9tRC99jgc= +minfo.types-signed.wb.sidnlabs.nl. 3600 IN NSEC minfo01.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +minfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. cVs2MX9wIlFDmc+00+hEaatpp0kjCtkUzqJAjGAQKRDvh9oQOWFBOm9vEzsxrULBOzgLNEpkWLvzcc+ikw5pm93066Wt8k5waLmbDqILAy1kwpuR8IFVTqjFrG3q0TVyDrqAj7aJBz2s06w99kbE2vSilgrDZQtg3PjBvN+NJbc= +minfo01.types-signed.wb.sidnlabs.nl. 60 IN MINFO . . +minfo01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PLMeHJChWBNO2LWbWxsuIoHbovpS3BJgEIqrPg0uhO38VMzQjnlXR2Jx2VByBBtB1pev4LhurUsSzdYxl5dctcWV/45Q/MnJSohOw9CExJhklwf/R9VU0lFFYLl13vHW8TblRo6hO/tGe9IxVs7fvQ0cWz20EknFUSv0wOSilHg= +minfo01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +minfo01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ugyG4yrAPppd13/GFyutEBSK897eRAkO1ywUWghr450UJLlbETLYLIWA6sR4B+qS3HIuPmr+5XCGrSpqDA2AFwzbJt2QUfySDyycMLpTVk4PVSUlbQYzWTEUXlQa1rqLY6ZTNo1SqXLH6gotUQPLGkF6bupYESgzNe+g5UbsKJ0= +mr.types-signed.wb.sidnlabs.nl. 60 IN MR mailrename.types-signed.wb.sidnlabs.nl. +mr.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bBDlF97SWIz/mwfbaD7r0LykjewEai/QJTrFSkY1lU8kiBGS49VvnQFtd5r0Vtd6lJPMesFmoS+CRffdueZtRhcMqw+hMaijQlQnIcS6Ffnru/rWCvKKafPUX/R41RHY0OziHOKxkEJ+f4PRzbaHgMzssd44NMV4nKciOJhXl8k= +mr.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr01.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +mr.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. d2WMzaFC5ZvUfGM8hXpjr8ycMv/1yzfBxWvy+W8tCi6hmUt9bKzzsDxO029nioa8oQZnJVt7g+fnlaDPFHKEbNYr3hSl0mA9jtkUZEeHwEUd4ya0/Kz38ydEfS+iH90WDZXdmrdJCXgTaLeSJfomFYX18d1t6jYBEOhvg4C4seI= +mr01.types-signed.wb.sidnlabs.nl. 60 IN MR mrname.types-signed.wb.sidnlabs.nl. +mr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Nhm0i9TBN9GN99QLaPO0NWj0YkkgKpjwrrvhJOB5k8pPM8wX0E+/x0tZTyA9jOK2cQpW0WAhxDpvMvTADQoGAqPyYxkX7txXKxHhrb05dePKfJdROIGcLO1ebQo4HPagzzNF6pp0RNccLaayGEkeCvCvCjYCfTZwQlbjPJnORSE= +mr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr02.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +mr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R4Y31APDI987gB48QLvaGNngKr+T6FDsfukNB2khuDjgC6ZoyCn/zH03/cuOJzf7Ovgkm5Bmp6XR89tiKjB5F6X5+SgyHyGlflvSU03ffP9azBXuJA3DtDxnBMra40OcmNF6cIvjFtG/s48u1iyGceDYsJUtgWvSJ30zxfdZLiY= +mr02.types-signed.wb.sidnlabs.nl. 60 IN MR . +mr02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HItNXDRa7Jp8Q91E9m4r7WxCrJhXiR4Hvi1knnVLO98rTuLukNtgCSeHs2cN1iuIpaXLadd8haAZBeK+O5Zo9M7baF+QH0OkcFw0waaKixYnsEAD/AZgfoK30qaOlliZYj9tU+UdiIUMxIxbyNrUDff6S9YrKYY4azVnbwhRl+E= +mr02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mx.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +mr02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LHduN8uh/6N8VCorW8d/xQN5xZzXpOm316N4odBrstJZ7Q9OD0ZIvGc6+EVUNdLnnoM7h83vZMW7C0KDms4cZWXio/WC8zoBRE1nzmRyAgc3DIeyaaHpOwvf5Jlcs657GD5Uw39zF+JJtnJbJ1ZK+Qvj1VXkn+J0Fi/4xGIeLNc= +mx.types-signed.wb.sidnlabs.nl. 60 IN MX 10 maildoesntwork.types-signed.wb.sidnlabs.nl. +mx.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DoOq5zYUjD5cCADGc/YXurDLGiXIQ7saqju7LSU18cn2/TXqFLBEokqA7vJxYNvvzU8vUsaUOfW0prN+JHKKHWTVncgoiCkZlK5DAtWN3OTtr5naHB/XGHQkPA5iTorbgvyUFchufHk2rvJ+Z6wmKGn+9ZmJQU60+0M33LER2/g= +mx.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mx01.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +mx.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nRD8njAlg2bdarp0pVpcjfIEtCmmGRsZG9BY5S6L7pIIGwkZMzuS+9J98XdqhE+Q4sN52zkVoCU5ILbV5RsOS7uFj63+l4Kk6UrF+/3CAYgYvex58QniUj+iR8NYmDwPMBIm21jK0pyO5inhNq7abik+b0V5PZuQWcPfnSxjVR8= +mx01.types-signed.wb.sidnlabs.nl. 60 IN MX 10 mail.types-signed.wb.sidnlabs.nl. +mx01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. qGwRMqUKhMORO3WZb8jEzRQvfiuRbZGAttDIEAHGxbSwIf8/ag8gY3zfFQnag0e/XcqhbijZuAgGu8qPszetgZNdwaEQ/MzDQtb7YquvmJpX2LAE0Q20Jfulqg6n1ubIOqNDsL9f+nidQj4dAeffmicW5oC+g+/ATGSusNcZinc= +mx01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +mx01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PDzM7fk7l1BqmEfvTHf6Q0PuIVNAklnvGYQPWw92ZYleqyauoh3phEfYCklheuGZVftInrAWlTYAESkXRuGPfloRMUDgELuJo//0MIw1mJBR89xNxBIss10ZWwtpjSKtixmb5TXVjrJlNtFjPI/iXrkNQsaYAT8xnHY96UlAqS4= +naptr.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 100 100 "s" "http+l@r" "" naptr.replacement.types-signed.wb.sidnlabs.nl. +naptr.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fXCfkYMFOGwVmZmVt9nIUJGHeGQhUqGuzbDtJuYhHTKmwWDpQEt0PB9yIOyvJcjCGtaTcrEc2z6xH4n+gRb57aN8xByFNqk1QisrGChOalhubXbV77RwRm01IaPT6BJXgSVONBNvNBn3Hq2ASPx2EPltE9EVviOmT8EESIYC8+M= +naptr.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr01.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +naptr.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. j3Lr01oO7jbo30NLkn/l9wGOVTSk2+nfxWUNw7csd8RcUoR9lrkLYahP7kVDMwIL8sGsTxsU/dVrAE+Eu7NXwml06uXo+rhs+f9khhRWbb6Gv4E9clJTJbjlaKiwuKulGAiax/Yt49apI2rFnyfROcQjWePT4PhhmYWSA7c59J0= +naptr01.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 0 0 "" "" "" . +naptr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. pgFTFWJdxj2oZanic0sG4CFRdiPKY12gJbpnivQoAclhulCFY2eaTH3C4RvVA7riJ5M899cCCEZkrAD0hnfFqQBkYSqdzTgXHp6Qc4me6T6VWJ+4dXZwD6KR5t+KsjTBGZFLswukfvSicyENwwUp9wWnrxiZIqOVbX9P1/xa55g= +naptr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr02.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +naptr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ueV806APghV9pDNzvFrL8z6JobK0zxFL4z8Qg6oOcNQEusBiQ4V+BxkedUYQhSn8iPZmX7MZHMRFCCHT2aj/WMSwnb9jLZSi0bGC6lK72vF2NJpKgsRZejcBHvE0biVv1sKtqRnRyO9ro/aPVnDvrSf9lJFIiZ+w/1eo3bvjuFs= +naptr02.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo. +naptr02.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo. +naptr02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OoAzH1lHAzjHTHvDyH7y+oZR4cs1cZkV9rF/MBsAF9m2oDjSsAgxxVpOxFxK93Frs6rcZ5GpKN7Wo8Lo8q3YVRb1hXSRz8FfUYxuL9ODXJZOcMBil68opwCt/Oc6ukGFHdQ1brlEyZOQhL6oytdsa5wzp56XrCpRdqtuXzR0OzM= +naptr02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC nid.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +naptr02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dxIxqn17d/wwt/I4Yht+cHZ9t7Iz9hqmKNWDsALvIEuMPe3CmdQ6X/ngC4LCRn86f9skAHHrKc6VzIk+YOHGZI96xCyrlhWG8NWt01bRLdw1l+y/teFYeGDwVWDBDA1UDmdM3rnlLBpZVCEy3h5SvXOc17ncjI42CvnflhLJsm8= +nid.types-signed.wb.sidnlabs.nl. 60 IN TYPE104 \# 10 00 0a 00 94 01 98 01 52 01 69 +; RRSIG: +nid.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 68 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 25 62 7d 85 8d 06 c3 bd 42 ee 06 2f 18 a5 1a 03 b1 8e 71 47 0c df bc 08 0f a8 55 76 fd ea c4 67 91 d4 f2 aa 6c fa 3c 8b 6a db 1b 42 f4 49 d7 a0 85 c4 71 1c 99 0a 00 1c 7d a3 b5 c4 15 ee b5 d5 e7 b9 1c 4f 00 12 ef f7 bb 96 39 c1 d4 9c d5 f7 46 11 98 5b 6a 11 ee d2 f1 f9 ad c8 73 21 98 4a 78 48 fc cc 0a 9e 0e 84 69 eb a6 e1 68 47 3a 54 e0 7c 64 44 da 39 b1 60 fd 6c 32 39 87 66 b0 81 +; NSEC: +nid.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 51 05 6e 69 6e 66 6f 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 80 +nid.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. I1WXGFms2rtmsAvfOgSMGZonUhWbDOhIO7m0h+oakKqNTbs0JluvzF+sJrzlJGnmYdxZ3D7qP5GDaMDjy0cHMg96BBKwmRcMFJfGDfaJNvEzi/yNYZdbwSlY00+XiLWfSa3/OkBIyxx6tvwGwjkCMTmHJXAdhRSHX6Nt7dGj6F0= +ninfo.types-signed.wb.sidnlabs.nl. 60 IN TYPE56 \# 27 1a 54 68 69 73 20 7a 6f 6e 65 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e +; RRSIG: +ninfo.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 38 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 10 dd a8 f8 bd b9 54 1f 90 5c 47 fa b7 58 66 7c 4c 95 2b c6 68 71 91 fb 39 ec 8b 85 cd 76 aa 77 29 8a 46 a6 df d3 aa df 05 f4 56 8c 14 20 54 a2 11 a3 18 86 10 b9 a7 56 bb de 9d a4 e3 0e e1 ab b6 15 bc 7d 10 ff b8 2d f5 00 3e e3 71 0e 66 a3 65 5e 2b 44 73 0f 02 4d b4 16 ab a1 db eb a2 c3 f4 14 49 b3 82 22 44 a9 f5 f0 73 43 5b 3a 75 d2 48 e4 14 a3 b2 f6 1b 2d bc 56 03 dc 7c 19 45 d2 +; NSEC: +ninfo.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 44 04 6e 73 61 70 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 80 +ninfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tmkTQZgqatcb4Xf3mmDhFkwTU1W5g4rm9jwADG9C2BIM2XnsWrbdth6bTyh6tx8nROmg/htYr+9JBu4kCB0CA5BkTkW2M2yaJBsgRR1G04OcSHjmuhoiuCiwSo3EztvaRa211cBokesCR0fWS/Hzw1WMaxnd+Bde5ZjtWW7l1Lg= +nsap.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x012345 +nsap.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. T32X7IOd23hPga4aptqtSSaOInhPUtPrQuZ0K70XhLeRHALQG65cFA9BseiHrm2f0joGK1Op5+041rKUBEFIVyCjwzz3GBHoHSDiROnNulbUpQGnknBb1zx3Qz37VGzI2NJc1jqRdh3pqZU6wBvzZ6HfDEyvSkyh4hAFJx9a5ZY= +nsap.types-signed.wb.sidnlabs.nl. 3600 IN NSEC nsap01.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +nsap.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tXFIUj2W+5T9R9QgGdbjMN+PrucIkBDA+YFbIq+IGSmh1aDH5fuzxb+a4YT2eckP+mHtqsdux6XYzIbApQGLbCbAA8I1jgkKerLR5dW4qjgCkHyiooscVVeugh7DUDbLgxYWRUSldIxQN8w0fTjfT92GwQdJjp+CePXgveu43d4= +nsap01.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x47000580005a0000000001e133ffffff00016100 +nsap01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. EVzsHVnSnBAv2QHT7htoYvH27Jxt2NYNfAjNdcEfnIxnx4qWlSM91aTpUGqBz86y7y87a5CnH+Lq7m5f7vU3c24LrTGMzsu0csMsvgFMzh6IcJz2Py2a22VvhtFwwC2pjKwjtdwYUXFbQu4FAELf6o5NYaBisHb5Ki+jlGmdqq4= +nsap01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC ptr01.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +nsap01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. mHWHng+TuTMf9gyA5t8dXrG5ryKOiul3e4woEf5PiT4xR7YIlXoV5pdTcCVdIOIKJ6OPZW+e1Bfep7PMFP6WtQjWfdJIq5PazLdjmekpYsTUOnlnc28i9QFluwaezeoL1OxfF1EWyRr/GotqJWqa3zAtlX8fThZZECUtFH7ul+4= +ptr01.types-signed.wb.sidnlabs.nl. 60 IN PTR types-signed.wb.sidnlabs.nl. +ptr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. IhLfaiETx5XMz8fbnbb2/RH8X93K2Z/jv48uZf44+maB8vXXLxTU7Sddnc7tzqsCEu4mA/vbh/XYsHZVCRS2oEYK04HRXTb/fdHTy60WBOFNxx0Qx2AkUsQGwAGDOe5XAQ6kssnTvqmv/tMj6+AmUD0jcg1mc+noOIbRc4T0zDk= +ptr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC px.types-signed.wb.sidnlabs.nl. PTR RRSIG NSEC +ptr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dz8beP7pH6wwG+M0VXOrZM0PQ/61rQ8qKUlHYUMHEPy0HIpxPlQhcVnlgdAwrBg2tE/2/vpEZPEXFPW9+wo+IQfL48sAPeh7Y0XFo/20ieaowlGScJae6bj8bd6k7yXBLzXPJviy79BK5KuSQaz/nWotk6dQj+kI3hwL8cWM8mw= +px.types-signed.wb.sidnlabs.nl. 60 IN PX 10 map822.types-signed.wb.sidnlabs.nl. mapx400.types-signed.wb.sidnlabs.nl. +px.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rZr/yjK6TJojDsIJ81JI48nVYGIBTEL+CrxFc+ViSeld4abjS7JXPbBy+qWnb9LKqQtUTUnes9NOsJV1seKuj3fy5dkYGbEva/m1IZxHBaM9dCvvzCO3SvzI+yO4GzsbVoQYBtx9lYevWGFnSurwq+1fe7w56nergvNMlAIHfaI= +px.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rkey.types-signed.wb.sidnlabs.nl. PX RRSIG NSEC +px.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l19VV3z5EoSCo1QSStGBqxjEqHljzUyYRut9SIyfzQZ2N1e/ww+D79aQp1QZL0eM3ArmjxKxCH6eK70y9jRd3sZ8yl9PyDQhcqjdgtGdPJy9uOxm9FRcBJHTtbRgm/hsWQjuIbtNuaIXFfMrnsKZ7Smz7NCVLXGtDEaTxu/H+qo= +rkey.types-signed.wb.sidnlabs.nl. 60 IN TYPE57 \# 136 00 00 01 08 03 01 00 01 d7 b5 3c 9c 98 8e 74 76 47 44 66 cc 3b a2 60 a4 61 fe 57 64 bf 4c e7 54 e6 30 7e 3b 07 64 d2 e0 d1 a8 4b 23 e5 2c be 08 41 9a 29 a8 51 21 9a f5 de 82 91 dd dd a1 d6 c7 63 15 29 8c 56 2c 25 f7 5e ab ea a2 99 81 63 ac 6f 1b 50 0d 81 0f 6b 89 31 a8 35 fd 01 bb 0d 35 29 de 31 da 57 44 35 de bf fc db d4 04 97 4b 23 ac b2 01 c4 2e f0 4a 5a ae d3 27 5f 63 3e 55 5f b5 f4 03 c8 b5 bc 39 bd +; RRSIG: +rkey.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 39 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 72 c9 b6 3b 54 b7 e5 9c 17 5d 2b 9c d6 6d 9f 24 2b c6 b5 01 f6 02 ef 4a 07 03 5c ec 49 22 27 f3 6c 67 58 48 60 52 00 d5 ce bc 94 0c e9 c3 33 ba 2d 5e ca 10 ad 9a 92 d3 d0 a4 e7 61 05 85 e0 93 d4 07 20 08 73 11 d3 b9 e5 04 0f 89 0e 6e 1d 34 c4 22 58 30 86 e6 89 3a 82 fb 9a c2 67 0a d4 96 26 21 51 55 80 45 91 8e be 8d bd b7 bd 0d 03 65 ea bc 99 dc 89 e6 5f 36 65 2f 14 3e 0c bd 89 81 +; NSEC: +rkey.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 42 02 72 70 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 40 +rkey.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. w5CH8sOk1Y2//7DcyCTM7af9NvhRJuQOTfgmv9Xu0phZAgdIFcYlT90h+AebA7DARpT85DluiHKin1C8lkS0aTzn3GHUXpX0CvdxlVGxzIeNymWrKHIje+eZWf1Wuy9IrsBlMSAG2/IhNoPWs5mUiZNGF2HXJ9wLyOqFOJyuyD4= +rp.types-signed.wb.sidnlabs.nl. 60 IN RP . txt.types-signed.wb.sidnlabs.nl. +rp.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0mAUUhQsCbCuApI0N900sR93wBOmONzG/mU+9ORtMfrDdgQRFU3x0SWH6/3asX/Rh60vWgXJquOD8HDXyQhtwymf/xD8+jsRcLPkpU4Zn+FX7CxtirpchFrPBb57wgk3oXeA1eDkdXylfx4rfG+DCF4PtLrgqlnZjWo91FaIFYY= +rp.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rp01.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +rp.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MWydUezsqOyG61ddYPbIHKq7nHuEyGE/KAfCHhbExHcObv4x1JJLeXhsPeZV9phuvcA/RDFeQkeqNcqbw/tt0kfNNJCMjwFwcDAQOQnbZp7lyCBV/5rgBAENxK4Obx8ANz9X8amTmyy7FmTxYi0Wk59zS/TTzpFC8jnMWxVbY2Y= +rp01.types-signed.wb.sidnlabs.nl. 60 IN RP mbox-dname.types-signed.wb.sidnlabs.nl. txt-dname.types-signed.wb.sidnlabs.nl. +rp01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Df0cttpbhUbrQiU6xPlEd7W8ofQIbfKJPMbq457vQdmBSsiioajhYaMcX3xtm8+9GvugqwMe4iDpKbDsN5Tagt+tquy9yxyhHjTlrS8dg8rPLuxvJMC8GV9pYJEedKmRoLoiqRQFb1290Slg/e9cugVK76b6L36Hcr0zS86arV8= +rp01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rp02.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +rp01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. O7SzsWJOuqxFLSGcQb0nXKP85ibz8bGgWGZE9k0n419JaHxVFQfcRqczErU0MiSHfqKnA5iEWRAfj0MDmg1vAxJdKWe/ColElgq146Ux4LXQZIdDYGwFFJSloE4BtWIZBNKB5jwk2P01ULbfYLVECC9c+nhkUxbkgszSIMJn/8k= +rp02.types-signed.wb.sidnlabs.nl. 60 IN RP . . +rp02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. zLfI6S2WjQN53zKfNZhzzVRd5UQtOTbPNXukI8XC6XiOHiXdmYzFmy5f3/IrANjxX89a3ocgDCLwqJwe+oGzDjxEMtwxEnAFYxS6kfxADe5r0vX9OzbHSVYLrl0V0K7gttG4fziWzj2ol36HQXwfr9xx0+bfx5GMNYPYWQWhfrc= +rp02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +rp02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Z9ZWhfDbLJWMkbgRfpzPARYrWQqk7NDBMNiFZsvoJftbxI6hs9+ex36L1Mr0kSfpnxpZsq9dfwcyQqnKvx6NYpeqr8uLM5NoyQZRcl12w9UQpKyJLK+EVIP4dlvcjypuDqtrld553BPdJHevb6kok2M/RKdZOzTojPi0T88s9bM= +rt.types-signed.wb.sidnlabs.nl. 60 IN RT 10 rthost.types-signed.wb.sidnlabs.nl. +rt.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m0arLlFFWg3EuJ8MLcFNCFnT9SZTfxze9mI/5eC6KFIs4o1rQqXTvnR1P669fCbVi3dIcxUUlD2Wmhu76iz52LeQrN/Bz/LoQDFXeHXkdOpk/kgnQ5W+90SEP1le7WbqDOnnQsNi+k0s63HD94QmjzV4UXyxfM/+y/Un/IT4Jhw= +rt.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt01.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +rt.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 072w+49hnO2m1T2CppTxSv77oqqljSRBfx17Zqv9hl+466twAvPq5F/kUGGNiQW3Bj//J4WkHimaKInaPDMLF0v8Ex/0RojyT6IGLB/lbSYLeXTFaIL+Bh6+K4C9lhDQpOLPjXlAbffrCgOzPkhtQheZieXPByUfdXwHlzO5Pn8= +rt01.types-signed.wb.sidnlabs.nl. 60 IN RT 0 intermediate-host.types-signed.wb.sidnlabs.nl. +rt01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OdPeXvgrmEcF0NT4cUxOu/IQRsRNx2gb6rrRCl9hvH9JwpjazNGL2IIKB+XvBLfTtiL4JUiAXfYj1p2z1IaTr3yVbRZwwr167v/D1tBnZFmBh8N3pxbSOidEo2CDGXPuJtYjXAT8KJpaQraTjwXyYqXLWkHrey0ITeGuK6CswAk= +rt01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt02.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +rt01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. x92ge9/GRfWjAuSJx6BuhZsuROWwJnzZ8CtRSSJYAfz9TUXMpRxI4WMgC/6bzR4i1Tyu9/o9rv6hxr5Etv/Opd5zW8cX+/9RCwP99VwQo8HgXwbfvLOY6eKjBaabzwt9rxbJSL3anliHCs9fuBh7BtxEG7d+9/i7QhzkhtuZ1Y8= +rt02.types-signed.wb.sidnlabs.nl. 60 IN RT 65535 . +rt02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. zzjiOmoQFT1gGKcMXm77E+Cn2aGPdoYBjkq2MI2DmV2YHAiqRrEgBjxNvvVzRf3CaKj3d2D/hOkF/pdN/SZ1WBqk59JJfBkKE/wjr5NgGkUK2gebMMSJbCMRfPmJZ0vCTErtvQ9p9wNnXWr5rdfncuv4yqTGEmN4XnEv7EWuQRs= +rt02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC spf.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +rt02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0HXIKijySXvj7ahspOm5Nq+BjvnVyi/TG/N4RsRSMQlOVHdtlgBb3lwKA10lWcHDEE10VujUR+jD4w8Tg63MV2HqL5wioBPmW1reExqe9cTmOrHV0KhvyhmOAAcAdeoFLGdImJQfM53EvJyOR43KYUt8Lgxvbgv6yWwk8aINHcU= +spf.types-signed.wb.sidnlabs.nl. 60 IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +spf.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SPF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. RWEBwX+MfCQuAZ57zvRjBPEOErW9vTzIqeopOnkxT5T7pLWjrWUAtzptTHxmZ48BTwIThJiTKftnGs6xqhFqw1AoBO+yCpxPSFvgGx1WL6nDmoF/2Udtq8cKaEkhyRQb3lbEo/auRPLLdwPLh2yX0hoG/MDtDOBeyqe2uErDM7g= +spf.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv.types-signed.wb.sidnlabs.nl. RRSIG NSEC SPF +spf.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. K45ej1Ej54yZckICAMiufO0kM2VWOH7Em+jhICVjiLRZlQGcRTOJ7EGBGK9L6Y5nWwzleo8QpujBD10ejx1coMX+zC2fHN9WJUeV1VDeCXthOl+AOVpdwOGwYJuBsVJItVWA3okHdjL5jfX1a+oZlKyRqSxoIyBQJwlkL/yEc+Y= +srv.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +srv.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. CFCGzq2DZSkrscbgtEs4TY1F+RsF8FOKGjC1TDY9zH7JUnxCJyl7OB6k9dt3H4Mj9rki8W4eY//ezo/uOnqHc51WIPBiW7ruPAkJTnSPQ68PtgHO4Yo0ydV+8CqKZdDwSNo4UP4079qUpqsY5Xdla/6yf0AdGYiLMuKbFPyzlAE= +srv.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv01.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +srv.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iVY5lYVVBExo9mSF6auHJUA2Cle788n4wrk2kuKhivPsxg9S2b6O4BnRdVyAfsve9wKE6ZsixzuevjMm8b08pNRN8P36Nt1mM6vifgX2J7Iz09koXiFW8QChGaK9KrvcoXiZ5J9qrYNQzO3uHZHqFrYhpfQx9PU2EqDgh8XtLiM= +srv01.types-signed.wb.sidnlabs.nl. 60 IN SRV 0 0 0 foo. +srv01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LNTVSV8wXJzhwqf6LQ18ft1znTi7vhc20ltDpSfqrDBZC231CSKdfDS9NxkLhycaU7NzAD2RCbwE/cYD5F3cn1XIW21IpAVkzSBvUXOceaWmSMqcfnvgtMuj7+gafSYrKRp047vTzzPl0btHqdYJN158ZdJp+I8TvectIUEzsp0= +srv01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv02.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +srv01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rj9iFGq3JE4Z2sIHLoD54uuvXEz7z2wNJceJT7RdKQpVyn3FiUth+aaB/wZUu6rwQUXWoUEWCJjVrr0y3A+ISxwuKMX8aoMJfMwZe8qpw1vhfGP/kBce6q1tt52gTyGP5aP3qyvFXgDO6y6FFWDxySjGoJVboBxYQ9hDsIJAHsY= +srv02.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +srv02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LqyxdT6Swu9dZOROcRbapALe6Hj2kFSfi04jMMOlgP2uSUlY9vsfh/rmeHqoX/bqiStjJGzFvTcn/MMQK+ybuYRD+XDpJJ8oLErbj1SO5S6KKdAB6WsMyZ+v5zCQFrxh/ugUAL2ba8xGEuE2AGUgoaPvJRQa7hXue4d2bMLDr3g= +srv02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC talink.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +srv02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eN+805hRa+K97AhX6qzIcAaaocIasWR/WZA84wNEAXY0Sei88uN5kt2QhCZvRsXhofiK7wpKkY38EfA/3z9HJNBsOsDmbo5qYlJEax17tAtDDkG37E80CBauCBHGuRARe1k6w66W3w0MI7qgdlYFzguB69zvIbbYUEFSKVtdSFI= +talink.types-signed.wb.sidnlabs.nl. 60 IN TYPE58 \# 32 02 68 30 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 02 68 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 +; RRSIG: +talink.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 3a 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 04 60 66 44 13 f0 5e c3 a1 bb d5 70 bf 9b 17 97 5f d4 4c e4 cd c4 ad dc a5 66 02 f1 6a 1e 4d 65 3a b5 5b b0 2f 0c 2b c9 e5 75 fa 28 4a e1 f6 58 4a 46 cc 20 c5 41 76 4b 2a 96 13 38 5b b0 e2 6a 9a ed d2 3b ff 21 99 af 78 59 ff 45 bb ab 1c c6 9a c7 9a 06 99 01 f5 1c 3b fb a0 8f 94 d6 15 6a b3 ac 11 11 e0 ce 2c ad 3e f6 9e 3a 01 4a d1 c1 b3 cc 75 2c 2d 3c eb 64 ad 2e 9a d2 ff df 9f a4 +; NSEC: +talink.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 44 04 74 6c 73 61 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 20 +talink.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YOHwBGJM07n8PtGr3e6gMwHz+OxWU3nzGlq9nuERIKuLiJH+iQ+5RSqSLqWHoWT0TAZUK4cfVlACqmLjfmTBu8YKjbWPkhh5kS/ktDnVlYxBQDdsamReGntKQ7zZujFKvl1AJcBFG7nyL2+uuDXVaSdcongJeIskJoo9/qAAp34= +tlsa.types-signed.wb.sidnlabs.nl. 60 IN TYPE52 \# 67 01 01 02 92 00 3b a3 49 42 dc 74 15 2e 2f 2c 40 8d 29 ec a5 a5 20 e7 f2 e0 6b b9 44 f4 dc a3 46 ba f6 3c 1b 17 76 15 d4 66 f6 c4 b7 1c 21 6a 50 29 2b d5 8c 9e bd d2 f7 4e 38 fe 51 ff d4 8c 43 32 6c bc +; RRSIG: +tlsa.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 34 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 cd f2 d6 6c 5a 72 33 72 75 09 dc f1 53 3b d3 b8 81 20 1a 38 b5 56 98 c0 61 d3 cb 19 8f 0f d1 9c d1 5d 61 8e 1f c1 a7 1f e2 22 9c f6 71 15 b8 65 85 f5 e2 9b 77 fa 5d 51 e6 34 da d1 2a a8 da 48 18 63 39 56 af ef 28 05 55 5c fe f4 c5 c9 7e 8e 9e c5 c2 37 04 bc 6f 6c 67 07 7d 72 bc 7f 53 d4 2e cf 5e e5 0c 89 62 bb e3 64 c1 d4 d7 b0 b7 7c bc 89 86 6d 1a 05 82 f1 2e 7e 6f 06 ce 06 c9 d2 +; NSEC: +tlsa.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 42 03 74 78 74 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 07 00 00 00 00 00 03 08 +tlsa.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l/UvixSoKpysCjWjBsqemPNauLqY2CS+FKgjXLvpPMo6V2wOg9NquVHwjrKYy1L9MD5NjWeQdiAzzEoDbLi7sImP5TAwU9Xk3f+9cZ/B1d0oCgjpMVwwTaiIP38+EOnmkQGF9GaHjsV8YOxQNeK44HRINBTlAHm0WPm6NuTFeJ8= +txt.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"Just" "some\"" "\"" "text\"" +txt.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. i9VqoaVA7boMToyJIF/Md9FCVRIQYghp2ojDPGU3hQW5BVRkCW+vyo9mAnL++YmOyf/mkHipMo+JWMigtD/mkErRJOHAz9Al5UOdDFbp3ouspxA5SE/NmcH6wcnwiCRiJ64FpEqJiQHxRgBrZuqLZJ8JZfyuacEgQRqNLvQG4kE= +txt.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt01.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eJVOacx52Mjuu/NL8+/2Vl1muVh0N/WyFdkUgvxNsDEXaVBCEc+VKMCqqBwY/hsLW93fNb4x5ZWZ5bRQx5hYqyMpWVPBBE1fC7K59f6AhI8i4qni5/uCpwF7X5qbpu367pNAB7GXhW1EEQLPuT6SGML0cjD+iDGDgp3JlkZSmDA= +txt01.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" +txt01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uvSFJBtawDQH0yhEyp+9aTcuHPyncUcj/EzdwZfwDb6G4086kc1WGNcuNTKzHratimCj12m6qnH8owLxnIN6MDnLaGpa01RNLAfOyBrlq9hQz2rXk6ZSWVioE3VPAUxzaRZSUwZpVG16dGqYnEZho1ZFH10tbiFHmkwpr78NmAA= +txt01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt02.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PPMkIjsjEqTQaNdED1qmhWxHR1rGrXZXn38dwzwQVOaV+wfjYhDSUGxO2nfefPO2EGfyzp2wgJrTJ/PpbaeDlGmShPd7IVCymYnFq2QYJtbRPUJmo4Aqj6z7qIOenRHSudrnVtyBE4J+9UZLTjJiupgmqbA8+pp/zrcEqcgN0JE= +txt02.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" "bar" +txt02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. thiAv/6Y+2zhNwoCP061OFBgAm0OGIqirjeZ1sE0o8MGR+6atBBFoe0AOJDiGYOkNU7/3etXJgjOex+NVNTxcYtVqNEoKKSbhw9iDNogu4dcjAH5aomevmCw9cxI8EcJuVbf+/d5JnrUGWJhGX/nuFj8sZ4CdnlXmsIRsVlpBww= +txt02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt03.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. aRkAdrtlshrkfwlLCPvo0emZVjDBz5PnEC7N5R0LmCx3WWnve3VFeB1E9rwr3u/FxottCZ7Ww56dYo8ZG5jS/gcnj6f4sO4pFv7ZyI9RLwaCe26E/phLscllycey3rEGvfKp6F6rkZTos2W+Asn+5j6aG8ChVgqYwbM8DKoxoEk= +txt03.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" +txt03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. WkuggOSq7v26ktw+27typCnQ2PLZ0USkQyoqnbTHTKr4vF1bDZa+CMX4GCansn8WgqL0rxRIXrKSWCMLreuorg8RrTk4gCbQynSAbWfqyd7DpUW7fXc1uQlRhFln3kcUCL98Avjx+v16qkKKGZZp9GwaapYG+yD1zDTO/WZFhRM= +txt03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt04.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ndaw/rVPl1RzebFE9fMvaoJT/EVNDbybcMCJlUMMGKaWQN2hAv5MBvF5w5UpdscVv+pLpienQUxbBkiglbj+A/S/J5plovs0I48DFaxw1jam66Ezrj9mCDJLq9FxIRmk7G+A9EgDeWuqSlpo7Nq6ASKEpcYBcHSxQbYZXWYeH8Q= +txt04.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" "bar" +txt04.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DIbsDF3lLrnDI16sX0Pd2vXFS6IpQqr7MEqSalHnC0Ohe9ZmSOh9b1LfU2zZSMjGvQ5QGzvbqsAphEYf/HM08MN1X2FjCdXxzMhi5LzUsysnRV+7D1CcJmoNIng94LYFOshuLDnp028TDE7eLmAjpjGpQA3fkK1NsWnGgY1KeGk= +txt04.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt05.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt04.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tek1XWbn4R4RDIH0wnPfyAUmE0HF5TkUyA/W2d7/tj/PSyHSVOM1gEc1mFo4re9yzAKUWoacReHVsoJJMSfLRCmEFexBQBXmMZg8Uywo8HzP7YlwjR34Wk3PlCAm6FbvnzVEkCSWa+6DG99zsx+GzqRusLa+nsRO3uGJamMxzEQ= +txt05.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +txt05.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LD7LbI+S4o+MOhiTS0uo5NWFzlIMuJfp3S8wInTKSKhZLOaRG+S+XvyC1rMCO8WgwVxtGHjkinlKWFMpEIX13u1nvNxVtLnkVX6xI42y80q4Ws8Zl/WovwyKJ7LdnkzrM/udpXQcAk0XMik1zBdkJE6LbKHoIc7eg1TF8l9UWQg= +txt05.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt06.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt05.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BJA1+XqJ52wCdVBMMUOowPRoxJeF/TmU0uMMQILMhV5X7ENdRDU5gUhELJq94HzFTdZsQzqehH0R0nlFeOQ7eL+hu7ey1OlyNkNxW5pQfcAqvEiWXrQu41scyRqCs1PcDM8QxfXQ79F8sa9+JHgkOWkLiGeCgk2JuVtiHPu5AWc= +txt06.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +txt06.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FpPj4l3OBTcHrHjbGD/cfZfO/L69Pbua8+sXPRUMtCGrP3JCOGmR+iwJBVPlcqozLzO4jaPgK4Hgn0WjAKDpeNoAsp13ALjQ7kdHVYlz+9rMYOfxdm581mpZ1NRjtxVRulWyNpL0NOnQe/TEHDEgAiZ3uGvHE0JvmVywHga3Fmg= +txt06.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt07.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt06.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hc0I0kjwttcA79ptubiaJZEhXcHg/B3FOocEMBEeQiaB+vZIXNj2XmfhMHmpprEpzF63QgWmcCsVvQgWe+ZY5SG0C2PZXWhx9K0rQUTCaXcD9ThwvoBdbUvSTWNDbfoCdtTGn2rINYLn8BO0DPb4FTjGYuWhTv/RIv6jkIv2Ses= +txt07.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +txt07.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Wx8QVHIDnslD7UaSyGYed9vITLPmndgYbBFjVMuP4ktADSozN7ST/aRdQ6H8t61EFfAvKlWLDX79+OpIWQ8RuEOA5rUQNVrTQiYNLCNvGudIJ6LFAa5bTpV9nl6B/tCLKGIET0BwDNpq6s8sgpgIh655E4Mq7UvKv5VotqAQrGQ= +txt07.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt08.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt07.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. o1Cy5dPDOjK8Cdk8F6FKHNiPIj8t19/0HNqsC4v4sxhExyOeuhWjIFepYqqYkPldgw4fXFsOKJE9yUZlF9xtKYIjy9uqJrn+qvsS5oDy6v4NQv1XKgC9MV4+lJEV1xJuKvrh+pxup/heLAW+8/8xlmU3pLwslg3IJBGCrkCOrws= +txt08.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo\010bar" +txt08.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fq9Q1ePTr8Nny1Hx9PAj+EYQswqtSc1lgpOCItd6Nvt8oQt452FYQF6u0VCeZuH+TWHIuYd0Vdx65zlCZ85xCJKPhbhfqzMkDkXBwjY/i+5y+OpLdTbrFa3Vfw92nfjBvTkWT9LHUnjzLo7XoaiIHAeZKZi9gqvqrXOUJs1n7Yw= +txt08.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt09.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt08.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BFqeBpF0NWxjnz5Jb4LqRknBrH03jB9W48Ei5YESINDc4ca7ITfevsq2HGgkKqbN7HfRbge+nwkZp+Bh29SCXK7+lkaiVeoVuQK1Tr5twrm2R554eCqV7EksDjA4oQqTnfXbogLWIh8QzP4rB1ccLUF4TLaabXJyEe/lM8+fIGA= +txt09.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo\010bar" +txt09.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BJMfjXpaxfOFph2Au7RYCpBuz19dvJp4C21Fu03bEN60/p6Sc59Wz1EMdgKlwiZWMj9okhXa0awoCTv/2PGkWIiQvVCK2kJwXR9kYc6FN5xPSI02hOhcJK2Yl0qAgo5nkauIfjL3QTIYHBDASil6v+UhRK/p4TzNF+tLY5GF0J4= +txt09.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt10.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt09.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. guQatBfPYqEIh5w5NQi6oF0RBFluak0XyztRAzsprkFHjKpOj/uINudJ5fWez11qvaD+ygkVrrkIwfWVFbTTv9M6B1RCCMpYrpfsLNhtcmsLlXQDX2Ff4YmGMfeDtfyiSbcnUlbAhpbkcHPt3NITQc3Z44My97IOwzObJSkMzS4= +txt10.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +txt10.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B5q/ZfSwr1MtQ9j3yH21jqlee8O9jsH234nbHl1d2P8re1ZIF6OvpSHnypj2hZm3zEd9fnZpV9LAx2lzE9pgMuSfppDpJj2HF17up/yGMQaHRQ0FI2TSaOxdKuKmmTYq+3WBdlSbmHadY6fWH3ZJczeXtVxDd1VnFJnVtCkDuEI= +txt10.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt11.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt10.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. CbuQ55lP5fTw8z7XiMMWFQkrWUNZumRc5MdbCU/qR6PqPt4vlj7RdYJqbCGTyAF64sYzEacJnASMubX6rBsfJkDwFK/0XrKBoX/x4WsgCGF4/xJSURcZHvOW9cJo/4L2v1iFww56r9TgMkkMZ2QxD962nP7zQNOuTwfqyZdROOU= +txt11.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"foo\"" +txt11.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. kgGMZgnzc6lesGru1wWGULgOofEejJFdEqXoR4drNG1xEx7MIANz55fgonpZ5KxyU6pbSb+y3iVjCH8vS47gJl6w/irQmUxEBFqUMStMkTPeeA0cqGE67RHsauD72nEQT99yHLnoG7SveAYa3lk0s9FdHGnjxEEJOfwEywe5npk= +txt11.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt12.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt11.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BaNYZYbxreo9do4V4sojKRYCScOA+ARpDoHV6lU8jSi2uNezzLfsIsxtzdJ4a0AKQVqPYnq3XkghZmH9GUk0fGdKSQ0Q7ZjHjsx3mGNlNKmGR1mIsLusieVBXAkfP3M6XYJAn9RvE2uEzMh0INouBOPIdUyJMydh5PvCcXPA670= +txt12.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"foo\"" +txt12.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VBrMLwVo/AFQBbpATVMC5FmI1up/mKY8IDFWmWbyNPiyolMFhEmPnTWd3qn9+WgEE8GBjRuj8S9YerzuHO5xgZeYqxk6Cxqrhxa209Jo59KQESjT0ZepE+E/KssrkBUD7iiknfx4GDe8RxQQSMZk+QfO5RLK3MNFSHRxUfOp+DM= +txt12.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type1.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +txt12.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. sBorSaUpB6wdVK3UL9kRGxzwh+RpDl4KzGrLUlPrUAjAMIi/FuMvRpGxMvkIv0oo2YWu/kt8ydGYkGmI7wEr/sqc8VNKoCnXdmrS6Y3micp71o/MUjbgQSaIqp1EVN4rtHboAoWNpF9WREkwCNlE+U60JXxX3fT9HT8MB4y+is4= +type1.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +type1.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HnLYtItbkUrCWYQi0/5M+59DlrFei9s8YQJdZr7zvf/P4y/b9z8738G+Whgmr/+RiQDkQTz53yANcPquSTqPX/KXoZyUCylNVfq5N0/58hzU2glmzkWhl/woXCSX6wDjlz7s06ITXV2r3XNngUJdM9e+Fc4xLes9yWtmm4V7mUA= +type1.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type104.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +type1.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. S+A9rV801zsly7G6nQTdRUTbyIcAA6hpD3tidPJPc1JaWnFcvlS3/gWxhp59AUA9462r5qRPd8mqe1w+qp16Dliqpd28Kc1hmFxDFyBhvj3CxVHdU9TXJwwzhMJunJjYNaFrioHHwwz4NWQ27iZWJCHXnRfq78HqnHG+UY7L02Y= +type104.types-signed.wb.sidnlabs.nl. 60 IN TYPE104 \# 10 00 0a 00 94 01 98 01 52 01 69 +; RRSIG: +type104.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 68 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 d5 66 53 2a f6 41 9b 03 8f d5 c8 65 2b de 32 7c 00 08 88 9d b8 4c 48 0b ca 50 8f 22 a9 a5 1a d2 14 5d e2 1c 0a d1 d4 4f 1a b4 0c 74 43 3e 78 07 e1 b4 d5 fd 23 74 8b 11 f3 99 fb a1 56 cf 50 67 75 95 3a e4 bf cd 76 c8 8f 14 d5 db 62 93 6a 29 1c 08 2a ba 77 a0 b3 ab 77 bf 30 eb 85 a3 99 67 d9 53 72 c2 11 7d f5 1e 9f ff cf 8f 5c 2b 22 81 65 6e b7 7a 04 d7 bc 88 30 d3 cb a8 ab 66 67 c3 +; NSEC: +type104.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 53 07 74 79 70 65 31 30 35 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 80 +type104.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. syWqtiuLSBEf52SoqxXblLLG5IB67kPDYm4xiuuM8WhNZOTZf0lRsJSaJt8nrv9oTbHi+LePa8wHHt4EHeXiEQO/gF4gTcIRMT5UmCHTngkYzWZ5iWGcRwXiW5HnlipDLMCbqv3R05xKNoRugBfPtYGbgDbe05U+d71OUNMS0AY= +type105.types-signed.wb.sidnlabs.nl. 60 IN TYPE105 \# 6 00 0a c0 00 02 01 +; RRSIG: +type105.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 69 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 18 53 9c 6e 19 dd da 7e 8a 3f 64 c2 09 f0 27 a5 69 94 90 ac 0a 4a 94 e8 e9 1a fa 63 81 64 92 48 e3 5a dc 21 14 d8 6f 1c a0 4b 87 30 52 15 de 26 49 32 72 48 25 37 59 94 00 68 00 5a 7c ae d1 eb a6 21 7e 7a 49 3b c1 84 98 ae 90 99 5a 9e 85 50 e9 3c 08 f9 06 d2 0f 99 40 8c a8 d1 8b 1a a2 06 27 de 51 39 b1 6a 82 66 41 6b 9f e9 e1 d2 f1 0b a9 7a f0 b2 18 18 56 a8 0d 33 8a ed 8a 32 3d 38 +; NSEC: +type105.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 53 07 74 79 70 65 31 30 36 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 40 +type105.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FhaSb/03UXeId1hF7a0xOstlhuNGDWwKPGedQfVEm41fDyzb0/O2ahhQF8vOEHBrCoIwbbE6rZzwXXhamHudSirW1r0JzsFr+hzP4/rzMYFGaxnx5J1g7QSfRkzgTk/yqypMUNCwfMHcyLTDrKQqH0+MPqgsQo1wXB7xzmaC7eo= +type106.types-signed.wb.sidnlabs.nl. 60 IN TYPE106 \# 10 00 0a 2a 00 0d 78 00 04 05 03 +; RRSIG: +type106.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 6a 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 ae f7 6e b3 b8 86 e8 c7 28 75 8a fb 25 8a 15 f1 22 a3 d6 23 9c bb 85 9a 2b a3 3d 19 e8 39 a5 b7 8d bc a9 95 3e 52 ba 34 2b 00 e8 38 7d fa ee 76 34 25 af 6e 28 53 89 9e 90 57 81 93 ba d0 80 a1 7c d6 eb f6 cf ab 03 be 1e 4b 67 7b cd b2 6b 5f b7 bd 15 ae 8f b7 a3 8b be 26 a0 bc 03 f1 cf 1c 1a 6f 04 4c ed c7 d8 c1 2f d6 2e 31 46 7c 3d 3e 60 76 31 a8 87 6c f2 89 e7 a4 b6 7e 8b a8 bb 93 +; NSEC: +type106.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 53 07 74 79 70 65 31 30 37 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 20 +type106.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hQdrfnE0mB+zBqnnridrtRm/hhIYAAvCtdXeq/un3loZhUkGTnOgwTl3aWFP03j+3aSihFfQ1sa5Cj4J1sGLPFT5p1+eoGYzWx3MPOt9vWj3qqDhwXt36dAQg8gPunxMpTUmbkS9VcYPsD+7sdRnKjbgF2UuUjTiYmFuYx1eHSE= +type107.types-signed.wb.sidnlabs.nl. 60 IN TYPE107 \# 27 00 0a 0b 6c 36 34 2d 73 75 62 6e 65 74 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 +; RRSIG: +type107.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 6b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 6a 9b cd 96 15 96 9b c5 45 13 73 a1 a8 06 86 ba f4 99 4d 7f 73 e9 d0 4f 97 7e 56 83 db df 93 5f 6c 69 e3 c1 9e 44 7b 27 17 b7 0e 9c f4 f0 01 6f ad 4f dd 71 b9 bd c0 d7 0e 77 a8 e5 2a e7 48 57 39 83 fc 9d 3a 57 90 48 f2 5a d9 bc 41 f5 ed d0 ea e8 86 13 b6 6f 28 64 28 76 e1 8c 2b d4 44 ae af cd 4c 3e 42 df a8 c1 32 8b 02 c0 7a b8 99 cb bf 60 aa 67 6e ae 2c 77 99 11 06 6b b3 fe 77 f9 +; NSEC: +type107.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 52 06 74 79 70 65 31 31 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 0e 00 00 00 00 00 03 00 00 00 00 00 00 00 10 +type107.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Wmyz4qv6QnUgca3D1z2D3xwsnjyXgHc1eX+srLi4bP7wraGU5eBDO5miUB3ankeMauH9sYD8Y5Vu2UXq0H2BolzdkM+OVIatsAEErQoYFTUHhv30WvlxgyndCRcTLuIPIstYeprBP8QNWCvZ7r6K7qZ5Zlg0HCTQLohrRGLuRdE= +type11.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +type11.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bNn/EeYJu7Vr1g0K69DiC3kK250ZJrXaLgdwtxclCzGl0cj6lieBJcPRJOMDnt3wTQZftdEB27P6e5tDN9OOVHdzcZrVMZz9hlpqkweyfSUS8DJXKcdc8i1Z2WgtUR2FZbpxVxIKXj41k07y+ifvMzFChUtbnuR/yskGJTWgwTc= +type11.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type12.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +type11.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uM88+sv5qkrcMjbHKBj0GTgKeDODbb1wsrsBYrIE523uIWf6uunseDDzuhaas2aY8kB0Et1GARV2ee+Lmswkbdhb10qhjRDlOba9g8u3ng7D/XDCIVfrKag3lptGpqJay0ATB7pQsz3nXHJJAxUoWVAwkHxtacW7EoAKLEno5XA= +type12.types-signed.wb.sidnlabs.nl. 60 IN PTR types-signed.wb.sidnlabs.nl. +type12.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. x512lckf+y/0s5hqvjhPTblRMN0Z4E6hjKwAJL5Pytvgu6Q15DYKxiXlUPmNiTq99xXcRPMB35kF6yo0DohVmkImfI51N2pbCyyWCX4Kg6maDHK92dKThWRKdqv1l4JE1Wdk3J8l2yaBMzBeXDwNihpGW240yESfkY7Yg5keSXc= +type12.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type13.types-signed.wb.sidnlabs.nl. PTR RRSIG NSEC +type12.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0xoOvyZ4vFyZXZo/zwZENvU2XJd4yLQ3cVgrn/M4DOTA/wxbLI7xnAXpTxUii7w5diVmfkDzS7rGURDoLgmOGM/QiuQr1/majMILkUCNhy0WFElFvp0JHxHZbZO5wzudXemr5/N4jzcoeq4cLNDraq6rWx3uQw5ViwD+A6KetlY= +type13.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "MyOS" +type13.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BNGqwyT2klcwR8U1/TCJuoMnKoSe04O36mgJB5nYqlzDSvhFI6fXhwAJJnfv3pQIbuKmZUvIE1DXlYKK25rtii1Kh7iRQ+n0WGfwOmIcVJFzijD33HxajRp+WPxinzlaZ9zJKwM+dWAVaLe9nhgFCZvw4dCngFTuYX1jn76rchI= +type13.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type14.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +type13.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. wecVOxVaP2xCtBYDRDDSuOmM/mGlloko4w9PqpLKxbwfm1jAe8ypmRFTCf6Nn0mXHkEpDksHYod7HPNY3G+Kt63MumELy5nQbkzOQG4v+/OvGMICOVgnO9nuQ926a4WwNpAguBOwcOVhbmdYmsnh4tKt6N2pT3vt8hV7O33zCfY= +type14.types-signed.wb.sidnlabs.nl. 60 IN MINFO boxmaster.foo.bar. mailbox.there. +type14.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hFwPVnIWC6+qKWSIfsK/pw1SXwQdGZ6E50Xa7MtUGxMSuqzJRoW4gk/RCVaPDMHDA8UWJe5vuM2/QFj9T4NZq2vEY4Cge5gs7yfzaxl0Pfytts6OuVABlNNwHZyXwIWxzuIu3jONLIo3Rc13b6Yvb0B0HziX6L2KWEF/d+fhHcI= +type14.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type15.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +type14.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MX/rO3D90ad3K9e4eJu2kWj7f086sVmwVp8KGp2ODtBp3nzf2OaZz4BNBM7BJOoBXJtz5d8gfWY5q9EUXZkhB4b0UAwpMKzVrXonEe9mPPjr37yn/yX0as+H/OEYX7tpVhef2Ga/eco9XgTU1QkhJo/0EhXXQLDSToeImSV1v6E= +type15.types-signed.wb.sidnlabs.nl. 60 IN MX 10 maildoesntwork.types-signed.wb.sidnlabs.nl. +type15.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. alCyc8uO3iqxURffoFxYCKeH9+nIbEt5u+ONQpRU5x8jch7wOe1F706vJi7rvWFlatp7VMzVdWbL+cfF54WxBYzxke02UZKJbVSNbZ9fjz+yu7KlAZjNCRG7+G2oOOs4CUtf9Xs7EBaN3/BTkSezzoU0fUQOpCEuGhPz4E5T0SI= +type15.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type16.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +type15.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VdqDe4+ggzVpK4w6QoMNt6yqkylqO/4HXgr6FrhYwdnPsBmGbvWuuFigIopaLAabesYBgmNxOinjxK3GRyHZOCHVD+69gQJ7CpKJ0VI7bRXb/EoIF+hb3ojnwYFT4lK/qQDGwAMNmXww4D4W2LvszolgOLtDuvgx/O4+HfL5p10= +type16.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"Just" "some\"" "\"" "text\"" +type16.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. e2NElZfsIoa8NxaMCcBQXWMzooDXo8TbX9e23bVIuaEOe5YytzLgoxeKoJ5BxXzd+cSVtoM+gkC29f2GhT8tWrd/CVZOVbsxA/qoHt96qx+LuHKuiNpBErJLVGm4ZJ4FaPAcSHZ1kXek7poDJbTiezew6omr+ZET9H8sa7sVMyc= +type16.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type17.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +type16.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Iq9UgeppXP5xa4NYfqEHa/oyMZVyHcWhoW5lxGjDYhytOVylDyUN24E2CxfIQZxc3fVPU848oMNMl6hDYV01wbvBpPHsKq10zpHyEJUrGdwDFLIHI+hSWwFXmHnh83b3yzcq40hL6ZW8dAkelUTgpBkSWzLEf7IhHS6u9+/HK1k= +type17.types-signed.wb.sidnlabs.nl. 60 IN RP . txt.types-signed.wb.sidnlabs.nl. +type17.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. NqlDVM5HHDHsOsN4O6QYfW3MYUoNx4VE0zxvtBlwt+ydhnxlbiv7G8pAciUVrtK6fsxma6tnHnq0RXUBuU0DU0go9j9Abjd9btjQmGNtRn3xzJKp0x5ZAUdmCYFl1Dmz25siGiQHgzDX3tbmbScRg73p/kxt7/B7/JrzTeIDD+0= +type17.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type18.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +type17.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VZNsecxi0bBubeRPVsrtTJXR8bOIFC7TZfUpUmiuaJIzgi7miXPxcNqQAluXDgsSz/URQlgsYss50wemo1DEJiFSLLz9/dnMVeu9rj8J1183F1fxuPQQT1S1ZLkrl+0S+4cBacROq0wbJv7w2DMmMOB94Dh3PHKOWOBzzDlv7/s= +type18.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 12345 afsnode.types-signed.wb.sidnlabs.nl. +type18.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YQz6/e0GojsmeDD07Im2bQe24QL+VbPjgh5SCrbnLVFLHAYPxNtaJ/ErHDT0Di2ZpXq451R2gq8cVi0Oa2on59gzgNdp5tEJ+9fzmOjda7atu0V7kG1DnuMoqbiJ3hRD20kF8qp8Bqsm27QsMAeiKiqBje9k9AEjIt8JkxvjFWw= +type18.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type19.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +type18.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. naKTTAV7517qYBYZLPiDdAIaRXVjOmmuh796SV3LO+xtI8F2lj63a+31kH4sJ/MXpm5gObeJpv6Mzjqg68njy4BSBytUmfn3WSOhyKQ1SOws6g3F2sJ7jr1HinXt2WBaLyub6scAuOTDQpXLPXvN1JzuNGUEgS8fl6yVfnST+Ak= +type19.types-signed.wb.sidnlabs.nl. 60 IN X25 "3033033033" +type19.types-signed.wb.sidnlabs.nl. 60 IN RRSIG X25 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. yxQ18T2jmpGM3u4bqcW9FeukAkNN8KE2Og3cbPb8DgRqXlDOM0yNygmaGHKpMt3PHlX/br8zNixrZfahHXPDB+IK3+PwWgMkeJdtkUbPAbHinCiwnOuOhTxunSmVwuGAKN+YJ14yfcmYRxYNe8gZteP/PqclTIrDM6r2niA5mcU= +type19.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type20.types-signed.wb.sidnlabs.nl. X25 RRSIG NSEC +type19.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MNMK6p/DURHn0TT7DbSOw+ba7vIBmwN0IBGt4QxZLCy5jOHuhpIfcYtXeD+s+yeRdgpkqp4QLaI/eqXwlaMTxS8yc/QYmoV9lKGArnI1u2/954YxmcKfZkrRtaBDWh1mfBFO/hmNzXNdUyKpYnAhltd2bvKf/fs5TEpaarSM3ZE= +type20.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +type20.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Pof2TR2skrnegyKNzd4f/gqJx0a7OQbbF2ihvcvGym8pAQ04S/0u1+TNnkcMS7/lO7XcYsSEtWTMYB94fcqQ7LaiKU9xKOk2iZxtMGj4N46eBTC2EBs4lkfO1FC1Zj3LXMLSwoxeyJkOWJXzIgqlDHlpoiO3FvS/DVs/rmmu95I= +type20.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type21.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +type20.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KVwZsEsv7GT5dA0MjaSMrgCnr2FQJIb+wDhPH4LGJlqa2gwUYvdCl2Q/EFZCtxV3Q6mTCGsAX46Gk2ydV9cG4rpS2vD8alxC/xm0W2C6zj+eECP4CXOHKGAM1C90ZN0p9fHzzPCKD8cHWLKPi47CXOJ/hkQNQwZEzUQiG59mJrA= +type21.types-signed.wb.sidnlabs.nl. 60 IN RT 10 rthost.types-signed.wb.sidnlabs.nl. +type21.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Um5c+Zahp1yifMbo42CMTs6vlhVAEiV/4vjd41SVJSg9wdafLFxZPFxNROc2qmqGPR1DU+RNcf7u47AG1jld6PKBNPVSEr/RDrb5GCToMdPPPMgwp5eZ9tU9WtuIf6L+kiEdzSf7I917GySLYPnvCyHIqfFIl3nwnSSkvuLDuGU= +type21.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type22.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +type21.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fZlgo/6e2JBkB7LwXDAMgFzkyDoudOhjriNOShROayENOyK7lJSE1z3I0KTHlZVSaRzzQVKTOamVqXTDHzfKiFfxLjhNH99Pz1XRMLhPA6b01Xy7MRJrDCLi6KoCsiE1rOaKSc5YfWQRQ4pBABeuyTRrLnyzzWw8niByFiDniyM= +type22.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x47000580005a0000000001e133ffffff00016100 +type22.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. XvZudSKX39GYPjVDYy7DR+mDuGyz/HWwQ2w8uwndB+RiObS8ktH6dDeYTTvKcwAKEct/0ttEfJgGBCeiejIG1PKuq5LWE2k06D0whNkVe38eGBj6dqmzoiAFVKwDhBBvPKDzWAxcWnPauc7S9DNk7Vjx8lWAUQ7r90QzY1EJG4Y= +type22.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type26.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +type22.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Pvy2G9XMdRiiEclL+ZMPZlzY5Su3ba1VHNnYSpgVmJlT8GD5GSBSCWUy214i4Cpj8vgjOrQj2OpdU4RF4IWS0N+I9qBFLYQNORTupPIXgafhPN/GIutMXPA3vlfwLWuFjmYGyfej6RYpCr0kmJgzfFln2g7zZJhDaacd/5yF444= +type26.types-signed.wb.sidnlabs.nl. 60 IN PX 10 map822.types-signed.wb.sidnlabs.nl. mapx400.types-signed.wb.sidnlabs.nl. +type26.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B7x+bFjM5eFr9M+ib0d810gERF+EiDvhBVQjW6a5SQChSVfEO/j7MD7XETF0vGnLYHC6UBixVnpwfvPp1c4FYOm91tiGL6sHBxfG+fYPiwQ//cIoaABh28FppfSHFlV41+sXjcoKw2dcIzcCGSYJl4mhvXLfb++sqB59lznHmr8= +type26.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type27.types-signed.wb.sidnlabs.nl. PX RRSIG NSEC +type26.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. s38cK3O7HWpe5KU+Lp6PiT8KTiD9Yrx8HFbSpA1ZrHzSUVdVX8Z3u53Kp2w/B3ELOB27Ye7yqIlqZ/GvQBB9/FvXS2JZOs/75AfeoBXhLXIpRyW9x7ghj9xemRpWdsybrFm4otdD86OkeSJhZ9VJc8fa4yJn0q1t6HPMir3PoH4= +type27.types-signed.wb.sidnlabs.nl. 60 IN TYPE27 \# 18 05 32 33 2e 36 37 05 32 33 2e 36 37 05 32 33 2e 36 37 +; RRSIG: +type27.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 1b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 13 bf 8c a0 c4 6c ab e2 34 d3 a0 d5 5a 9d 4d 2a 30 44 9e 21 a2 5e 88 9d ba e3 49 9a 2c 56 7b 8f 65 2c 2c b2 f6 7a 83 76 7d 6b 59 63 20 5f 7f bf 83 a7 93 18 e7 02 c5 58 e3 06 88 50 7e 06 20 29 fc f4 eb d2 ec 5d ee 7d fe b6 c3 c2 f3 26 13 19 20 40 1a 05 44 4a aa 32 6c c9 d1 18 13 9c 43 a4 a0 dc 83 4e ce 3e cf 88 3d ac 78 b0 30 31 f1 54 32 a5 ac d4 33 15 87 f4 3b 22 17 6c ba 0a 6e 14 +; NSEC: +type27.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 44 06 74 79 70 65 32 38 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 06 00 00 00 10 00 03 +type27.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. X6h589HJ0wrKtIeFOr0yaULPb6woH2Ka5bZdr1CVgk4cOu5tNo/80KuRJUDgegjA8ALJFnHJENJbB+robgW+MMjHdrdxYj36kmI6VNrUIV5f7MaqVAnEPFwanmH1I8IsMrYCtoWyHSrRwNsb2gQ3+sliqM9uTXs4rsxLcJJVkkw= +type28.types-signed.wb.sidnlabs.nl. 60 IN AAAA 2001:7b8:c05::80:4 +type28.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AAAA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. qi/CKoXG8391j+KLMEFTKPIsI5KGyXdm7iTlbzZaVFP+8HDAZrpjn9E+a9ZfrodExC2sD7szNEkaOkbhTAEGLVmUEW2OajQcZLehWsWUiLexvhpDgKfWfdh5AJUKtQd+fF9kk+NYfqgc2p0QVT7tGBhmSxM6CnvuUKYH/EaZA1o= +type28.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type29.types-signed.wb.sidnlabs.nl. AAAA RRSIG NSEC +type28.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. RLaxe7Vcggc9xU0pFjIIG2SGxadDEY0IfcAS6WIDP/VJKkExBrRS6x8Gh6F0+pXiUfiNbPF3/MxLa5nKc2RpeLUm3hLK/6FLgHj881TACaheathNx8W71PC6vUO0h/KCy57E0VfEdzw3c4i+hAwMDZMzCODjCqc3e7etSI0iv6k= +type29.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 0.000 N 24 39 0.000 E 10m 20m 2000m 20m +type29.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dzeX7l5t/spRtZ4pd4wqKYhS0MQ+z0iB9mnD1omRZ9y8qWWyze6CfIo/1WuLFaGLZn/e6fJndvH/oyWHwHB3B/2PJ/A11PlBFOrYAqNWVOfi8wD3+h2eybdpPP32ZVvLPHDW+ywZzE1Pp9wq2XUxygMPjxjxOTJoog51gUYbh/4= +type29.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type3.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +type29.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vbV8xEkjhjT1eYZ8vRmpPuX1pUcEUpZD2euFX45xN3Vieo5krZFn0OTa0WmtVyYpbBwWJwBDEL0fbf1XHBnBeCwrFDRK7wdAfKyFBJR4u/dV5i/ARO1/gXToyplTS3JIdpXRmb+J7UZzHVCvF+sVorqJ8ZNe2Br/b0qD5vEi/lE= +type3.types-signed.wb.sidnlabs.nl. 60 IN MD maildestination.types-signed.wb.sidnlabs.nl. +type3.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MD 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dMBfaQ9FCoBRcGbPixCycIAcRsbhaY3Mdzd7u8LeQZcyVgjZLwoet7lHwXZmMwbxmf2kXYANptuBcATuK1z4UcjfdD8f9woALqVzZlfqqbuW/3UAr6m2/3LdEfoQ7zgp8NMWd6ndz3eeds0Ez5UJpLtyUyxVLhAy+1ukhxzZB1Q= +type3.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type33.types-signed.wb.sidnlabs.nl. MD RRSIG NSEC +type3.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vVpRL+15MWzDMlidMWoehtIPf78zkXCSlkdE58Md/fWrhIv0P90uKnecN9Vc8gt+G/0zYZq0J2lq43eRXxK9F3icnNPnKq5cH79xwUjUYA44RJyp+JoA6n2aSRUtmVDaoqgEpeVKyHaaduo0Ewx2zdnKRQizHa5hGNLQwx6I1Lo= +type33.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +type33.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VL8gJoEx/2MR+T7aS1L65WRCgGWenOF69A6TwP2nacr7DueyuiQOKY+3xM9fu+B42NDbszHQwicl3G+NwES0izpp54y6HR8vw/fgEDW00QJjCMMox5u/B5GKfiCg7/CRqQIJCeSj75dimmmTg/brKZtvjIpczbSLd8iJwXbyTFM= +type33.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type35.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +type33.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. M6OFYbCiqZSBBagSGx7tEaeWot+ILnQwNKUSH8morMAsZ9yckpOyq7oY2X7T02JDSS/0ZHyQR0UukH7BD72Z4dgMIzJ8nm0hoau/sSAjRpWRZ5Vokf9YEzXEKvRdwqc6q+LjT8KuWVeKMK9w+uBP6wgYS5Ao+HqV0hgtbNnjYRo= +type35.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 100 100 "s" "http+l@r" "" naptr.replacement.types-signed.wb.sidnlabs.nl. +type35.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nBnu2lhatErGRmjTeV/igqR5Rlf5uuoHExMMdKAWJONBBihQHm+JamS+hhZDYKULsehqz2RhXHAJk3n5PgNECDDfw8huDOHPzNWYQU0Y3Y3/orBj5zUWMPkrs3FR8xKPoi0QNUeISTtPBtnZJjUdWUxgL4kG0sXQZCHSwZvRyQ4= +type35.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type36.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +type35.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ppd/JXq9CShfmZsDvKW2/Ys5UkrF44UYZyWKo0jxGlYJDRMOHWmJPKYj/UXoMbek4f/fp6iz9ovpeqo63bN9KKPNc4GGdxqoFI6uxlWJ9m2L6VcRXOnhKeKLTRFpAMn7mBdHBVgYZYkX8u0VZnyxL2zfDqaFiC4VaF0yycdnezQ= +type36.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kx.types-signed.wb.sidnlabs.nl. +type36.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. L5jL15c2aSkZK2BWyi2767MbGKp0RQja/EoKIEcwC9Sk3oEvIXSfh7wFsTnumjy4wtrTRN84MpOZgPaHH7niRyTzwXvsF52w4E7CVGVi3XoOrvdqxnpLJB52Doha3REfUXvU2feFxnh0RTNA99QM8G7TtG5fTht5kMx3/GAs2rc= +type36.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type37.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +type36.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. d6YAVe/r2WfbPRXOl6up1VWp0XUDRH+Trti6ioBX0y+csWPw4jDlIFcGrOoECoYPpf9gUybcSQtkbN9o1afWPExDkOMJJ7d/JVxoAXECIyqhgNv5W0bnPJCnBKSw2H+xYfrIHAqR5LNzcX3b2P3lINDy5JmXr+TDyVfokHCkCx8= +type37.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +type37.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. SlCOl2LPMWklV5mmMC4Z9LzEy9GIhZPm+dVXhp7LFc0CmxR94zAp6NrNQmo/5LAMCcqWaXZtBhsyDgQhcZFg919JVkmK7yiJ9bzqIg8RQUNOtMh4pI9TtYgg7FRXM3MkPu+yTy7HYv/rFhuAM3X9IgITodeeVeSArSYx9hiOAhA= +type37.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type39.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +type37.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. o/U1lTNjKe/yQjunuVgr7PAH9su7HATW80F+/H2H+R+Apa6ktdP4mZFVTdUaxSnD3KzV6H2Y4l8SZJ2YoqmukADyngrfwcqz0Xy0HTl/Eo9BrnZGqUZ4zyDBsZK3uvkM3sLODGRQNYhBSmEUn0MUOARXecJH6BufBP3csvUIHZ4= +type39.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +type39.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZmECqkLy7Qw4nGo8F4DcKps5SeAjFa7p/nCxpF8zGZH9LQCwzxOmwlNCld6omDnYscx3OgFHG+GJ+3rMRjW+ZyAc9U1Y92bDpEjDz7UKdWmUpTUT7rJ0Cur08GV4dWPhCPjOHqNnicmZnG5lXZCzSssFE9tjuLsvzZrIR8rUxG8= +type39.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type4.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +type39.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KbbOeByeCe2YefjKI5U1SPUYiwOCk1twYKb6h5mm+NL0xEDiYiT+qdSp8sR0ste1VWh6grikJwZ8E/aaFZlEsbfKREMdT0Nx2aWJOEcE41P7y6z5vijvIl8MsB80LzcCwC0PyOg/2EYHZOTtzigiTaAz9gp63ITDrCXrycoobwU= +type4.types-signed.wb.sidnlabs.nl. 60 IN MF mailforwarder.types-signed.wb.sidnlabs.nl. +type4.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eV+t41KAgyw/SNfAFRdDxX0rRahvBbVJIGT6q9gZfX25CEK1R29pDwX7rG17bVK6MdsKVFOZZewKGvjoHUQ+mxHO52F1/I7RTLyVye0z+oqiwTHK6TIdR4nrtEGJewwNc/P3xsRl8Y/hXpbCYXBBSeDsrIxmBlHWbKIkxQctHtQ= +type4.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type49.types-signed.wb.sidnlabs.nl. MF RRSIG NSEC +type4.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ArjC3guyoU/kicVZN6aQHPIX60JmGFW3TlwapId7wpWRy7etmciUKPR3+9qx0/xbZ8wuPto8KsE+083P2Fnd2gwk56devOIKlfxJh5LD/vDhOCdKv9fZ38skLxzXtRX2Yzr1h8PhO0MzldjB2HNLornyph+PXGb3oAUhajg3b7c= +type49.types-signed.wb.sidnlabs.nl. 60 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA= +type49.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DHCID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. TyUCNkjU1cH1SL7CdZklnUrng5jhWYOQkXV+lRbr/g2lJ3hbInyZ0jGp4hqye9jN7drTD5XaBtzesxzkyEE6KoACEgWpvCYi0yb67URORLbSnfk9V65UWjTQTWh9UQkr8Dt1PVKQ18w0ukiXCHsP0sbAKyk4mSyFNpsFCLK46Ls= +type49.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type5.types-signed.wb.sidnlabs.nl. RRSIG NSEC DHCID +type49.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rU4xWncTlzMdgTLJVz3Wb05ZpWgMRSuAyuiJNm+n0+tDn4S5q5oRwk2W8MZzMyuKx9iLJhE0xU5H4DxeIBzyetWKVjaHaXt6+hb0IttrBeW/PHVE/hPbS6r5Ozon5ZTU6DzgxYSnMhWuilWLHrUhs1zaR6Bf6RDJwyGc9WK76eU= +type5.types-signed.wb.sidnlabs.nl. 60 IN CNAME www.types-signed.wb.sidnlabs.nl. +type5.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0ntnbJbTyh00XP95sXfExiYrWqN4V668japhRVXKuzMyViuYQv5XqXvOc37BNe/A1w7vBBeIbdLtjNAnFaER5WPzFdlK4nrTLLgEakzZ5Owt3KudHkf1aMpRWHBMXuk7JfekCkWw/MMh5Wprb4Im3u2A80xHVU69RyhSn2t68l4= +type5.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type52.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +type5.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lWtXPElNPR2D7+zmAPI0ktLKRM+OipgRWrTjQPFY16pyfSa3nXwu4OT43fWl2fBD5hfN3UZzZIzeN1Mwtr85aDiiA7Trqba4idNp7robO41j1jUWO1cKqaOcp/LBv8qKnjiCbk522BeeZ7nJe1ABzzL86mOdvL4QEPJvjLjVWTU= +type52.types-signed.wb.sidnlabs.nl. 60 IN TYPE52 \# 67 01 01 02 92 00 3b a3 49 42 dc 74 15 2e 2f 2c 40 8d 29 ec a5 a5 20 e7 f2 e0 6b b9 44 f4 dc a3 46 ba f6 3c 1b 17 76 15 d4 66 f6 c4 b7 1c 21 6a 50 29 2b d5 8c 9e bd d2 f7 4e 38 fe 51 ff d4 8c 43 32 6c bc +; RRSIG: +type52.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 34 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 7c 3a 75 6d 26 5a 46 89 8d c4 95 a9 4d 7e 93 3f 19 72 dd 81 24 33 54 4b b1 39 90 08 c5 9e b6 b9 16 93 14 84 33 8f d3 ea 05 21 9f 5a a8 36 52 65 e7 ac fa 2b 99 5c 19 17 c4 b8 53 81 cf 5d 6d 1c ee ac e9 73 54 a1 02 17 72 a5 81 13 c6 b9 c5 38 d2 ed 51 1f 9c 58 1d f0 a0 2e 75 42 f1 21 3e 16 85 27 f9 e7 22 01 96 36 28 a9 c4 be 5b d1 90 8c 49 3b 7e ce 94 91 8b 74 0e e0 d2 ff 4a 41 98 ba +; NSEC: +type52.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 45 06 74 79 70 65 35 36 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 07 00 00 00 00 00 03 08 +type52.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ax+MxUC07rKTnOwSrlHJpF59yAHhhT9o0zg6a9kYrLZVaHb7svDMN9qqFa4LeF9rE3uD/LtBqYJzLJPhVqcI9aua+vH/uBEbM5fg8FHql/jTE9DtkGPbzlV6TGtNv9MTOjObXNkhuwDR7xREOm65nZ1VTgaW5bYx1X9yeZiWWgA= +type56.types-signed.wb.sidnlabs.nl. 60 IN TYPE56 \# 27 1a 54 68 69 73 20 7a 6f 6e 65 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e +; RRSIG: +type56.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 38 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 b1 2e 7f ab a9 1d 6b 5d e3 55 1b 72 01 51 5c 94 c6 1d cf b9 36 dc 67 94 66 ed 2b bf ab 1a 29 5b 19 91 f4 fd eb 59 38 88 ee 8a c2 f8 f9 e2 d2 7c cf c5 08 0e 72 d4 c0 ff 8e 40 c0 20 e3 41 d0 d1 44 4e fc dc 7c b1 a6 f6 ea c0 64 2e be f6 6a 26 16 13 f2 ee 4f d0 a9 45 ac 8c f2 22 d6 1c 63 20 12 2c 48 98 99 a2 a2 2a 47 a1 e2 cd db c3 5c b8 cd 6c be 6b cb 50 e7 03 52 57 87 1d ca 71 3e 6b +; NSEC: +type56.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 46 06 74 79 70 65 35 37 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 80 +type56.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. oEgJi1LXQnhjuvcrWU+CYQ4DgVdasmV7JXVPQyzdV4ORRNoDMDMpBA2ei6vF6NpGm5dcLrSKFLFpfqJBO4+quuCbmM2RAXEFZ8cZpZLNkA11rMxJfwXG4IEDywh1TslthcYL1ukoy1sG6wEQPgadcetfEP5Fk7sMH4P32bwJY0s= +type57.types-signed.wb.sidnlabs.nl. 60 IN TYPE57 \# 136 00 00 01 08 03 01 00 01 d7 b5 3c 9c 98 8e 74 76 47 44 66 cc 3b a2 60 a4 61 fe 57 64 bf 4c e7 54 e6 30 7e 3b 07 64 d2 e0 d1 a8 4b 23 e5 2c be 08 41 9a 29 a8 51 21 9a f5 de 82 91 dd dd a1 d6 c7 63 15 29 8c 56 2c 25 f7 5e ab ea a2 99 81 63 ac 6f 1b 50 0d 81 0f 6b 89 31 a8 35 fd 01 bb 0d 35 29 de 31 da 57 44 35 de bf fc db d4 04 97 4b 23 ac b2 01 c4 2e f0 4a 5a ae d3 27 5f 63 3e 55 5f b5 f4 03 c8 b5 bc 39 bd +; RRSIG: +type57.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 39 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 b8 86 c4 44 a3 b0 56 0a 1f cb 3c d1 24 56 7d 86 b6 df 79 4f d3 1e 0f 16 de c9 f8 f0 c6 d7 53 91 31 9e bd 94 e2 ff 46 38 cf 5c 49 be 69 f2 4b 50 f0 1c 77 de e2 98 3f e5 3f 29 48 88 bf 0a 3a c4 bf a8 d2 f6 bc 38 e0 a4 02 1d b7 6f ef c7 b5 fb 17 bc 65 ce 8c b5 09 ac 14 c3 a5 98 e5 f8 32 7b 27 8e 07 33 d1 b0 9d 1e 03 86 0b 06 2e c9 40 bf c6 b8 dc 08 b2 e9 28 51 44 f9 91 e7 69 22 2d 4f +; NSEC: +type57.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 46 06 74 79 70 65 35 38 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 40 +type57.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. EK1Nf9XdaS55J7SIWhfi7Fs0yO6FSiza+84oSDeDr+eoHT6gzrhOI/7QgvmB1fbze9Ju9u/C9Mgh0G5RFqqSep0JGl/XtEEThIuPMi9uXfkuz+Pxl2kOVG9kWbo4n6vI08Enfgey+t9oHN4QfAc2UIH1mgHrYSZfJk0eLcVQNIc= +type58.types-signed.wb.sidnlabs.nl. 60 IN TYPE58 \# 32 02 68 30 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 02 68 31 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 +; RRSIG: +type58.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 3a 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 c9 c4 1f b3 9c 61 74 77 b0 86 4a 42 8b 90 b6 7d 37 dd 40 11 da 80 bb a5 dd 17 e9 d9 55 3c 40 8b 9a db 2b c5 20 c3 8e 31 17 ae a7 52 36 20 84 fe 89 ba 88 3d fb 59 ea 6f fa 9b eb 63 56 bb 99 3d 26 8a a0 97 01 3d 48 7b a0 41 ab 63 6d cc b2 35 11 d9 bc 45 12 26 df df 7e ed 64 2c ef d1 ef 26 bc 69 eb ee 09 7a f5 89 df c9 c9 63 bf 69 62 81 6c 7c 0c df 43 12 a3 8d 88 4e 66 98 fb 6a 90 fd +; NSEC: +type58.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 46 06 74 79 70 65 35 39 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 20 +type58.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DtEdLwbHmM4IEJVYDlPbQNMAM6z2ksWMtbYX5InIuJ28sRKaAo7hyNdCMayBI4UgPAYmKd/nESh0qX6i3SADERNnPVreufJkP1GdP3au59qV+C6IDG8CkM5/N1nFRRid4T+gzpoqWxolKu3VflghEUeTkPem5e10KVBFPt1qang= +type59.types-signed.wb.sidnlabs.nl. 60 IN TYPE59 \# 36 fc b2 08 02 86 63 2f 83 49 4b 1d 70 37 e7 29 49 fd 6c d8 68 9c 5d aa f4 df 1e 5d 7e 6e f3 ba 28 ec e1 e3 c8 +; RRSIG: +type59.types-signed.wb.sidnlabs.nl. 60 IN TYPE46 \# 175 00 3b 08 05 00 00 00 3c 52 ec 39 00 52 49 63 dc f3 5a 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 73 99 7b f3 3e 9e ec bc aa a6 d0 7c 08 02 4a d8 35 8c c2 69 74 16 7b cd 43 28 02 fb 68 e6 cd 1c 36 15 39 d0 98 fc c5 7d 43 b8 d1 04 d2 7a ad 32 07 0b eb fc 60 f0 02 e5 d9 98 b6 15 e7 65 80 ee fb 74 f2 e8 b0 e1 55 c0 d5 78 2c 9e 15 d8 9d a0 36 b7 70 c2 ac ba d2 1e e3 45 3d 00 70 c3 86 bd 2a 15 4e c7 f6 48 1c f6 9b 22 6e 2e 12 87 3d e0 f7 53 b1 6f 7b 52 20 cd dd 13 a9 3c 92 40 f8 e2 +; NSEC: +type59.types-signed.wb.sidnlabs.nl. 3600 IN TYPE47 \# 45 05 74 79 70 65 37 0c 74 79 70 65 73 2d 73 69 67 6e 65 64 02 77 62 08 73 69 64 6e 6c 61 62 73 02 6e 6c 00 00 08 00 00 00 00 00 03 00 10 +type59.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B2a5QOr/ETGnhpsHVOxzTw3RXUhRCf54WL8q1iR7kTU2/Vv/cu1HaeopC/BH7RQ7D7Z1H+ULW/pBaPPv2MeowijBevwxxAT8bWtWl8p4U/mwB6kQm6uJGt0ydek8t2KQl85LBOsqyvfvnDK9ckg1vPjLNPY6RL7Ex0c0e2lMFTc= +type7.types-signed.wb.sidnlabs.nl. 60 IN MB mailbox.types-signed.wb.sidnlabs.nl. +type7.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bW4lc0urxx/J19/33qgQJD1Ex9+nIWOMFIwQNJ7nbzmLAwROa7qXFxH6MpJwU9Lspj3pXSOLaam9HRG1iAguE4MtF7C8x9762EQYRTBfW/nPWQGibMTxq7nJ3Ap6+ONomla7JeItoILQWxezHL+LzdDMQa9kGZcPZgacJdpeiSA= +type7.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type8.types-signed.wb.sidnlabs.nl. MB RRSIG NSEC +type7.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZkTkPjgl2AlrOgIgMVHJ7evwrGXWchFnSnCQqy6feX7bHVeQBScUoK/wORgmU2YaLD7MHmlvcgFqxngYtkeH03T4PpJfL9jsht9lZGuDaw8AhOKVp1XnF5Z69RoQ1el7JYWifzn8Q7C3CgKH+L7oEPFcDct7g3ArAJQaIsZuShE= +type8.types-signed.wb.sidnlabs.nl. 60 IN MG mailgroupmember.types-signed.wb.sidnlabs.nl. +type8.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iczcF6KmRy86DDbYTXrKs6xV1LAHwmeojk8L++Rkn9IwkDlTES6/xakvg3d+WZAPp4r4Rt3jV9YW7MgXTjuu3zeWKHIlf0kxrYYkXGh1KEzfg2/ABMtXamYTzBLwUToQxmTQJA/l9Mk/UoT34RQZbh4q7sslelk4dcHfcFZloRw= +type8.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type9.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +type8.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HKuc8BPEYgyG0t82ynr1XmvoGpNVPdqNahD+pjOlIVIv40vBnufGZ8lm65R1JlKrfPEh72myT2DNmOFi9BekvHJD5+BP8cFLHQdmonyqoBr0PberXzYt5fvB/gVEk2u2rtj/ZR9+x6ccWdudhIXqjl3ELDcjwHpow1cwbo6Nj6A= +type9.types-signed.wb.sidnlabs.nl. 60 IN MR mailrename.types-signed.wb.sidnlabs.nl. +type9.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fpzO5uIZkfjwUdJ/IFBiYGVBStXUYsjZkOcBanSSbOJNSuFWm/5vddo95RdQIOOg3++cdYhH9B15vbqetC4kdvn0qkHxE/U0vHCgmJUWwlq1Af38Ts9/WsJ+OtQeUS6i5gtIQ8sMtSedd4T3d/OsZNgWdWjgL+5JdXQyV02jsjU= +type9.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type99.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +type9.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rK80Qfay6gazrF6/2T+DjyfK3ec84MAr8W1Kyst0fNbW2eF9XBXQREYJyYNDVZ1mhE9lEdC977ety4bzC8LF41ttm0Dyj4lkcW3y68aBn5zFi388vm8oSX8KHVXQMLmGyED1+bqSyJz4dsjYcyjW0nvXN2/L87aPg0AndiueqUk= +type99.types-signed.wb.sidnlabs.nl. 60 IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +type99.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SPF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. e+gPKZzvKt4QLeeZUnezhyUrEkw8KwYoZOQnp0OErRYrWQfSG0+pIWPqmQmjctv2KuruWoH8RDLYm94yMDzA+wuPxCCjmPsto63NXCzXHGuJUIQhq1DYbWhXQwa313Ms2Oquj84APx+fiB3hAulPJltF68b3XFspMUGIFRMABWY= +type99.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks.types-signed.wb.sidnlabs.nl. RRSIG NSEC SPF +type99.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. C/Fzy7gdFS2UMjugX5zQx/INNv2lnBIqQqe3LCTUyiRQuzB3B0QSM71OR/uo+jIi9SSXjgbc0spxniS2x3a2jTRUJPu+MrP9NCpMwCMzgc8lRXaYIKFzKTBU0gej5BC6p7HQb6ng6Fs0sfypD1LxstExN9pR1Li4aPh5Hr9U1Qc= +wks.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +wks.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. n3AdmQ1HEwQOmmhSfXZwY2jqwJea25psB/CJQOf+srO2vJd64mgEpA0IekSx8ajKktilHqOVM7E/HqqNZDVyMKCOVrVhjSZuI7e2uNj3mCWmtUMsmEsEV3BLLkw0Nvz4MXOl+gdPECSDqLdcc56pthoiRS35wvG2lHXUxjUiGQY= +wks.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks01.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +wks.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Rka/Lc6o1z/mCLl7/Rmkugv9oGhqyQcht/sMI4IB02XpTVYyRppTntWESusKXQ2cRqN06Iqxn9Rhk0DVYKgRJqNjewEWZG7tA/u36SuyXCeStHmgbkoW962ZWM1QDc8j+BYHS1pTKkx6x+5Ehb0y+SyMZyy6229WJfSZLU54CL4= +wks01.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +wks01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l7HYfzjcIhIQDZ2zIJl0gD5jsYdzh/1qQRQLFXGbjQlXerEaw/YBJPXzRPFm1caU8xz2rbkqMXVyoIZnDt6pH+y/MfFNlQhjswWG0q3WGUfpUlyfJCpSE0Fddfoh7362m42mLTgbfornJguxbgdYLQ/NfLinrFeBfNEk4ZFCU20= +wks01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks02.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +wks01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0BABoZLuZnFIltEVzP5AImbPmT9xHUVrcbG6sNCX8wI+P2gv4tRNsKfneQaIyKePMn9103C1l+7OF7SfVRbUOMYZ52pBti0yBl0ECCrf4jXWBZZ3e0vcXNA0Bpn9fLxeYyHLawhHllPCy29v1ns4zpWjvIphxG3X9fnEBVZzRI4= +wks02.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 udp 0 1 2 domain +wks02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. P+p1gcQbO4I/sBQUZktrz4Q1osWIFIFGlK8o+SzIXMjxmdNy36vjwW6Sfy97CycbLRFIQ2grPv/cPaXtoMb+usHCoDtl5sSvLTJFmg9hpQ+xm12GvunZvAYAGx9fZic+QvLahSg+cjqX1M0oR9B68gcx+duMdLzawlUcIqX8gmA= +wks02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC www.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +wks02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. E0NeTdwBvfouI0vv1fom9Ivvio9nvAZMCosKLnSL8tV6nV4HIOBx8GmeXsctyLSm/AdABtKe5Ll2emblpjLHuAItO2VCINXfGebodDzf5xY2UbAThpfwGx5pXBr9d+DXWxHJej5Ub9eOWztgxB1k2G1u+AxpQEBY8ywiDop7z4k= +www.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +www.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. sP6X9RSL6zDJ762WZLgs2wG3fDkmPacs0eT5qgjHZBBxTZkvop5fAPtaKq14tP+pfN1+pa1mjrWPpOwuvcpC25Sa8x64ISfm+pg8RRDmElM2NgOu7a4jxtOOzjAcQS5Fpf4zPHbo2jETocTcv7XOGinqe33SxAlzit2yfkZNkJk= +www.types-signed.wb.sidnlabs.nl. 3600 IN NSEC x25.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +www.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. j2lNsX7mxldTSmwnTQoT6aKzY2QpzRqjR9aRBSpjVU/FnT8zc1/nz9y3+h6trvb4BmbsSftnEMJKQwtciNGO5KNcDayZJNQ74fiEYwd9CEvwEYQYnURDUTHOsZ/s27t2fb5y4+bI+9hUTMidWsz3sYH/3h43qyP8rd6dv3v/EcI= +x25.types-signed.wb.sidnlabs.nl. 60 IN X25 "3033033033" +x25.types-signed.wb.sidnlabs.nl. 60 IN RRSIG X25 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fYqiHPDKREmQ28cv2kmFS6kP4nZYN7+hZsjkoQ983VSGbP8zmPAfPnfVsuwZz+LHnUfLQcCZrLzK2K4rCBHsuKbSLkZwYQa9VLd5U3PY9Krj9Sj+2ACtxG2KX285RLnR6ZVyyAHK92udqUfJUU5LoROuuz37TeRMY/DvSpz/uik= +x25.types-signed.wb.sidnlabs.nl. 3600 IN NSEC types-signed.wb.sidnlabs.nl. X25 RRSIG NSEC +x25.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. AqLeezQyBdjXXEe5vNtSzOrOPQLKvl3jAF6V3hIFtZdsbAExrjLXXrxeoR37tPxtOqF95/HtXYFaDmuVQtlEdiDozIHNCtBS3KtVrIVld00VLd3xQLNak7X9WhMYNIl5cJ5gdLFVc/tVKcL2craDyXMsjXDA0o2NxnpVZatkP7c= diff --git a/external/unbound/testdata/test_ldnsrr.4 b/external/unbound/testdata/test_ldnsrr.4 new file mode 100644 index 0000000..07c9960 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.4 @@ -0,0 +1,79 @@ +; opendnssec all.rr.org file +@ IN SOA ns1 postmaster.all.rr.org. ( 1 3600 600 86400 3600 ) ; min TTL [1h] +ns1.all.rr.org. IN A 10.1.0.52 +all.rr.org. IN NS ns1.example.com. +; MD +; MF +foo.all.rr.org. IN CNAME ns1.all.rr.org. +all.rr.org. IN MB mb-madname.example.com. +all.rr.org. IN MG mg-mgmname.example.com. +all.rr.org. IN MR mr-newname.example.com. +; NULL +; WKS +bar.all.rr.org. IN PTR ns1.all.rr.org. +all.rr.org. IN HINFO SUN4/110 UNIX +helium IN HINFO "Shuttle-ST61G4 Intel PIV3000" "FreeBSD 7.0-STABLE" +all.rr.org. IN MINFO minfo-rmailbx.example.com. minfo-emailbx.example.com. +all.rr.org. IN MX 10 VENERA.all.rr.org. +selector._domainkey.all.rr.org. IN TXT "v=DKIM1; n=Use=20DKIM; p=AwEAAZfbYw8SffZwsbrCLbC+JLErREIF6Yfe9aqsa1Pz6tpGWiLxm9rSL6/YoBvNP3UWX91YDF0JMo6lhu3UIZjITvIwDhx+RJYko9vLzaaJKXGf3ygy6z+deWoZJAV1lTY0Ltx9genboe88CSCHw9aSLkh0obN9Ck8R6zAMYR19ciM/; t=s" +all.rr.org. IN RP rp-mbox.example.com. rp-txtdname.example.com. +all.rr.org. IN AFSDB 1 afsdb-hostname.example.com. +all.rr.org. IN X25 311061700956 +all.rr.org. IN ISDN 150862028003217 004 +all.rr.org. IN RT 10 NET.Prime.COM. +all.rr.org. IN NSAP 0x47.0005.80.005a00.0000.0001.e133.ffffff000161.00 +; NSAP-PTR +; SIG +; KEY +all.rr.org. IN PX 10 net2.it. PRMD-net2.ADMD-p400.C-it. +; GPOS +all.rr.org. IN AAAA 2001:db8::3 +all.rr.org. IN LOC 42 21 54.5 N 71 06 18.3 W -24m 30m +; too lenient LOC record +all.rr.org. IN LOC 42N 71 06 18.3W -24m 30m +; NXT +; EID +; NIMLOC +_http._tcp.all.rr.org. IN SRV 0 5 80 ns1.example.com. +; ATMA +all.rr.org. IN NAPTR 100 10 "" "" "!^urn:cid:.+@([^\\.]+\\.)(.*)$!\\2!i" . +all.rr.org. IN KX 2 rt1.example.com. +all.rr.org. IN CERT 6 0 0 FFsAyW1dVK7hIGuvhN56r26UwJx/ +; A6 +frobozz.all.rr.org. IN DNAME frobozz-division.acme.example. +; SINK +; OPT +; APL +sub.all.rr.org. IN DS 12345 3 1 123456789abcdef67890123456789abcdef67890 +all.rr.org. IN SSHFP 2 1 123456789abcdef67890123456789abcdef67890 +all.rr.org. IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== +all.rr.org. IN RRSIG A 5 3 86400 20030322173103 ( 20030220173103 2642 example.com. oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTr PYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6o B9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3t GNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkG J5D6fwFm8nN+6pBzeDQfsS3Ap3o= ) +all.rr.org. IN NSEC host.example.com. A MX RRSIG NSEC +all.rr.org. IN DNSKEY 256 3 5 ( AQPSKmynfzW4kyBv015MUG2DeIQ3 Cbl+BBZH4b/0PY1kxkmvHjcZc8no kfzj31GajIQKY+5CptLr3buXA10h WqTkF7H6RfoRqXQeogmMHfpftf6z Mv1LyBUgia7za6ZEzOJBOztyvhjL 742iU/TpPSEDhm2SNKLijfUppn1U aNvv4w== ) +all.rr.org. IN DHCID ( AAIBY2/AuCccgoJbsaxcQc9TUapptP69l OjxfNuVAA2kjEA= ) +ee19kl3631qol646kjjrh6lh96pduqii.all.rr.org. IN NSEC3 1 0 5 6467b16f6f36ba4d 13k9b8dv58kcn28us3fc0lqa60jeadp0 A RRSIG +all.rr.org. IN NSEC3PARAM 1 0 5 6467b16f6f36ba4d +; 52-54 +all.rr.org. IN HIP ( 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com. ) +; NINFO +; RKEY +; 58-98 +all.rr.org. IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +; UINFO +; UID +; GID +; UNSPEC +; 104-248 +; TKEY +; TSIG +; IXFR +; AXFR +; MAILB +; MAILA +; ANY +; 256-32767 +; TA +all.rr.org. IN DLV 12345 3 1 123456789abcdef67890123456789abcdef67890 +; 32770-65279 +; 65280-65534 +; 65535 diff --git a/external/unbound/testdata/test_ldnsrr.5 b/external/unbound/testdata/test_ldnsrr.5 new file mode 100644 index 0000000..d5f4650 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.5 @@ -0,0 +1,153 @@ +@ IN SOA elektron.atoom.net. miekg.atoom.net. ( 2002120700 21600 7200 604800 3600 ) +@ IN A 192.168.1.2 +@ IN NS elektron.atoom.net. +@ IN MD md.atoom.net. +@ IN MF mf.atoom.net. +@ IN MB mb.atoom.net. +@ IN MG mg.atoom.net. +@ IN MR mr.atoom.net. +@ IN WKS 192.168.1.2 tcp domain 25 22 123 +@ IN WKS 192.168.1.2 udp domain +@ IN PTR ptr.atoom.net. +@ IN HINFO "host" "info" +@ IN MINFO machine.atoom.net. info.atoom.net. +@ IN MX 10 elektron.atoom.net. +@ IN TXT "text description of domain" +@ IN RP miekg.atoom.net. net. +@ IN AFSDB 12 atoom.net. +@ IN X25 "x25 address in text format" +@ IN ISDN "isdn address" +@ IN ISDN "isdn address" "subaddress" +@ IN RT 0 rt-host +@ IN NSAP 0x47.0005.80.005a00.0000.0001.e133.ffffff000161.00 +@ IN PX 2 map822 mapx400 + +@ IN NAPTR 100 10 "" "" "/urn:cid:.+@([^\\.]+\\.)(.*)$/\\2/i" . +@ IN NAPTR 100 50 "s" "http+I2L+I2C+I2R" "" _http._tcp.gatech.edu. + +@ IN KX 10 kx-host ; requires additional section processing + +@ IN CERT PKIX 65535 1 ( AQOppkQvFlPFLiWZc0NXX5/QY44jphv3vfX0dscHNmTh Ntfx0TUgfBb1YQKJX6MNrzu/vvtV3xpLcCJ+tIP8ADDi MaUYT5Gh6kmn22V7FgHPlCHRJ+AcudQbeYgw1KCYS9D4 6oEvBR8mQ4HFTEkdWg+PETATQk77P1CmmURdogcmzZqZ Ier+VAs6uusIdxrmWeP8j2aYRvozdjvgzmHXSabDDxrn uIbnL4r4qAoc6Q9DAybYA7Ya52gtH06dFOkaQr1dvHu1 iJES16H0SL/OlhsOVrZmM1RFcwDGXcnxiKZ4TdtFeXQ/ 6VN3JegLR5t2FyKzoKYb4klpdZM8JVuVtc/n) + +@ IN APL + +; RFC 1101-like announcement of address ranges for foo.example +@ IN APL 1:192.168.32.0/21 !1:192.168.38.0/28 + +; CIDR blocks covered by classless delegation +@ IN APL ( 1:192.168.42.0/26 1:192.168.42.64/26 1:192.168.42.128/25 ) + +; Zone transfer restriction +@ IN APL 1:127.0.0.1/32 1:172.16.64.0/22 + +; List of address ranges for multicast +@ IN APL 1:224.0.0.0/4 2:FF00:0:0:0:0:0:0:0/8 + + +;; network LOC RR derived from ZIP data. note use of precision defaults +@ IN LOC 42 21 54 N 71 06 18 W -24m 30m +;; higher-precision host LOC RR. note use of vertical precision default +@ IN LOC 42 21 43.952 N 71 5 6.344 W -24.5m 1m 200m +@ IN LOC 52 14 05 N 00 08 50 E 10.33m +@ IN LOC 32 7 19 S 116 2 25.999 E 10m +@ IN LOC 42 21 28.764 N 71 00 51.617 W -44.99m 2000m + +;$ORIGIN blaat.nl. + +dotted\.label IN MX 10 "foo bar.nl" + +low.low.low IN DNAME rt-host + +redir IN CNAME cname.toom.net. + +highbit-\200\210\201a IN A 127.0.0.1 + +rt-host IN A 127.0.0.1 + IN AAAA ::1 + IN X25 "x25 address in text format" + IN ISDN "isdn address" +kx-host IN A 127.0.0.1 +kx-host IN AAAA ::1 + IN X25 "x25 address in text format" + +;; NXT from rfc 2535 +prev-nxt IN A 127.0.0.1 + IN AAAA ::1 +; IN NXT bigger-nxt. A AAAA NXT + IN NSEC bigger-nxt. A AAAA NXT + +;; Insanely long TXT record + IN TXT "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vestibulum faucibus consequat ipsum," "vel pellentesque orci sodales sit amet." "Donec consectetur," "orci ut varius pulvinar," "mauris ante bibendum est," "vel pretium turpis massa auctor sem." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Morbi urna tellus," "ornare nec accumsan vitae," "rutrum id tortor." "Pellentesque non risus eu libero tempus consequat." "Suspendisse a mi elit." "Sed ultrices elit ut sem suscipit malesuada." "Cras sagittis nunc sed risus volutpat fermentum." "Aenean vitae magna lacus." "Etiam eu ligula purus." "Suspendisse eu dui sed ligula sagittis iaculis." "Suspendisse ut sodales orci." "Nunc sit amet sapien justo." "Sed molestie lectus vel lectus gravida bibendum." "In at enim quis lacus pretium tincidunt." "Sed eleifend," "lacus sed porttitor mattis," "erat nibh tincidunt lorem," "quis feugiat nibh dui ac erat." "Curabitur quis felis urna." "Nullam rhoncus," "arcu sed tincidunt posuere," "justo enim adipiscing arcu," "et suscipit tellus leo vitae elit." "Mauris gravida odio non quam tincidunt vel lobortis ligula faucibus." "Mauris vitae dolor at tortor congue imperdiet non id leo." "Proin in diam eu orci laoreet bibendum sed nec justo." "In nec ligula eu sapien suscipit vestibulum." "Etiam eleifend," "nibh vitae semper ultricies," "justo eros semper justo," "eget dictum nisi mauris et ligula." "Donec faucibus dapibus urna," "in ultricies lacus facilisis nec." "Pellentesque dapibus augue in sem pharetra accumsan." "Ut id ullamcorper elit." "Aliquam tellus orci," "lobortis nec molestie sit amet," "imperdiet quis lacus." "Praesent non congue nunc." "Quisque pretium pretium nunc," "nec convallis magna auctor nec." "Etiam accumsan eros sollicitudin augue posuere laoreet id sit amet orci." "Curabitur ut magna velit," "id adipiscing dui." "Morbi viverra vulputate vulputate." "Proin pulvinar justo sed tortor tincidunt id porttitor ipsum posuere." "Curabitur augue leo," "ultrices eget cursus sit amet," "fringilla non nisl." "Morbi et ante est," "non adipiscing mi." "Ut rutrum egestas scelerisque." "Pellentesque quis nisi orci." "In hac habitasse platea dictumst." "Donec sed tincidunt libero." "Proin porttitor placerat risus," "nec blandit sapien pharetra nec." "Phasellus eu risus quis mauris suscipit sollicitudin ut eu neque." "Duis odio lacus," "egestas in molestie adipiscing," "vulputate ut eros." "Nunc molestie orci sed turpis viverra volutpat aliquet mi vestibulum." "Sed interdum consectetur orci at consequat." "Curabitur molestie aliquam tellus," "id dignissim nibh porta sed." "Cras vestibulum orci hendrerit quam ornare condimentum." "Vivamus ultrices lacus ut lorem scelerisque vitae semper elit vulputate." "Aenean sit amet odio massa," "sed rutrum quam." "Ut lacinia enim nec orci rutrum dictum." "Curabitur id auctor ligula." "Nam nibh nulla," "interdum vitae suscipit eu," "porta quis ligula." "Proin lacinia sapien nec dolor viverra at suscipit orci tempus." "Phasellus scelerisque lobortis quam," "sit amet sagittis nibh ornare nec." "Donec sit amet tellus ac ipsum pharetra interdum." "Sed egestas velit et felis iaculis et dignissim est faucibus." "Suspendisse convallis scelerisque dapibus." "Nullam luctus lacinia nisl quis tristique." "Vivamus tincidunt vehicula sem sit amet ultrices." "Nulla arcu lectus," "vestibulum eu molestie in," "eleifend rutrum tortor." "Etiam ligula diam," "ultrices id malesuada vel," "varius ac dolor." "In sit amet sapien justo," "nec dignissim mi." "Vivamus vitae aliquam elit." "Vestibulum suscipit malesuada ipsum id dapibus." "Morbi ullamcorper pharetra velit," "in tempor mauris consequat non." "Praesent malesuada mattis nunc," "at auctor libero viverra id." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Vivamus convallis varius vulputate." "Donec eget tortor neque." "Nunc tempor mi quis enim euismod tincidunt." "Pellentesque et nibh magna," "id cursus enim." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Nunc nunc sapien," "semper in tempor in," "cursus iaculis sapien." "Nunc vitae mattis elit." "Aliquam ut nisl vel lorem porttitor ullamcorper at sed quam." "Mauris a turpis erat." "Pellentesque viverra ligula vel tellus pretium ac auctor nisi imperdiet." "Proin faucibus sagittis odio," "quis semper massa pellentesque ac." "Morbi condimentum nisi vitae libero convallis blandit." "Proin sodales odio arcu." "Suspendisse non venenatis diam." "Sed vitae adipiscing lorem." "Nullam augue felis," "gravida quis commodo ut," "dignissim vel quam." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Pellentesque fermentum nulla at dolor molestie semper." "Sed metus sapien," "mollis a commodo ac," "commodo sed sem." "Suspendisse feugiat elementum lacus," "vel euismod nisl aliquam non." "Curabitur vel auctor neque." "Phasellus et libero vel tortor vestibulum consequat ac in magna." "Nullam congue vestibulum massa," "quis suscipit turpis adipiscing id." "Nullam ullamcorper eros id ipsum vestibulum at pretium augue convallis." "Cras nec purus ac lectus iaculis commodo sit amet eget lacus." "Curabitur blandit molestie est at fringilla." "Praesent at dictum turpis." "Sed laoreet dapibus tellus et gravida." "Fusce vitae ante ut arcu laoreet sollicitudin." "Nulla mollis commodo orci sed mollis." "Ut eleifend aliquet tellus," "vel ultricies lorem luctus vitae." "Donec commodo ullamcorper massa," "at pretium magna fermentum vitae." "Nam rutrum aliquet suscipit." "Aliquam a massa vel odio vehicula semper a in tortor." "Pellentesque aliquam suscipit iaculis." "Donec sodales pretium massa sed tempus." "Phasellus velit urna," "commodo sit amet tristique id," "congue quis eros." "Ut vulputate magna aliquet leo porta id tempus nunc auctor." "Ut condimentum magna sit amet quam ultricies iaculis." "Aenean imperdiet facilisis tellus nec ornare." "Cras nec vulputate sapien." "Morbi ut dui ut magna sodales commodo eget id erat." "Duis erat nisi," "lacinia vitae imperdiet non," "egestas nec purus." "Pellentesque tempor," "erat ut eleifend condimentum," "ipsum lacus ultrices turpis," "a fringilla purus lectus semper nulla." "Proin id nulla mi." "Suspendisse vel sem lacus." "Ut rutrum eros id massa ultricies commodo." "Nulla eget adipiscing ante." "Nunc quis enim a justo pharetra commodo." "Nullam tortor tortor," "volutpat at commodo at," "consectetur sit amet erat." "Quisque pharetra turpis nec libero viverra quis rutrum nunc mattis." "Aenean sed lacus lectus." "Duis et odio tortor." "Aenean ullamcorper ultricies turpis sed volutpat." "Ut et est sem," "et ultrices turpis." "Pellentesque nisi felis," "dictum non tempor lobortis," "iaculis at enim." "Aliquam tellus elit," "volutpat ut tristique sed," "fringilla ac libero." "Duis rutrum quam magna," "ut ultrices ipsum." "Morbi id orci lectus." "Maecenas quis nunc at diam mollis congue." "Aliquam neque lorem," "lobortis sit amet commodo id," "feugiat mattis dolor." "Cras aliquam convallis adipiscing." "Vestibulum varius commodo pulvinar." "Suspendisse eleifend dictum lectus," "vel commodo nibh varius quis." "Phasellus sit amet nisi libero." "In aliquam purus ut mi mattis quis iaculis lacus porta." "Sed ultrices vehicula mauris sed ornare." "Maecenas gravida tincidunt sagittis." "Mauris id hendrerit eros." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Curabitur pharetra diam augue," "sit amet congue felis." "Praesent dignissim eleifend vulputate." "Sed nec vestibulum tellus." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum laoreet," "eros vitae rhoncus aliquet," "ligula turpis congue purus," "non convallis mi nibh eu purus." "Vivamus euismod facilisis lacus tincidunt rutrum." "Vivamus suscipit," "nisi sed semper iaculis," "libero sem pulvinar enim," "a aliquet purus urna ut nulla." "Donec ultrices luctus mauris," "in porttitor enim ullamcorper sit amet." "Morbi pellentesque auctor velit et egestas." "Fusce ac tincidunt massa." "Morbi a velit eget diam tincidunt eleifend." "Curabitur ornare lectus a quam blandit vel fermentum lacus dictum." "Donec vel turpis odio," "ac suscipit orci." "Nulla posuere convallis lacus venenatis feugiat." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Suspendisse potenti." "Suspendisse mollis neque ut neque gravida ut viverra mi ultrices." "Vestibulum at tempor sem." "Mauris vel leo libero." "Aliquam augue justo," "ultricies vel feugiat a," "vulputate sed erat." "Aliquam in ultrices quam." "Phasellus aliquam vestibulum odio at auctor." "Sed dapibus," "felis ac ornare dapibus," "magna dolor bibendum nisl," "eget luctus lacus magna et mauris." "Nulla ipsum augue," "tempor quis consectetur in," "iaculis non dolor." "Suspendisse consectetur felis ac nulla sodales rhoncus." "Maecenas velit ante," "lacinia at convallis quis," "iaculis quis tellus." "Suspendisse imperdiet aliquet dui," "posuere dictum justo fermentum sit amet." "Etiam ac ante diam." "Suspendisse quis dolor dui," "at mollis neque." "Aenean eu nisi lorem," "et ultrices mauris." "Nulla in augue libero," "non suscipit elit." "Cras rhoncus," "est ac fringilla varius," "erat ipsum gravida nisl," "at ornare dui nisi id mauris." "Nullam nec dictum leo." "Phasellus magna sapien," "sagittis quis suscipit quis," "bibendum in odio." "Cras sed ligula tellus," "sit amet fermentum felis." "Pellentesque suscipit feugiat enim," "vitae feugiat eros mattis pretium." "Cras nisi tellus," "placerat nec dapibus eget," "faucibus ac felis." "Proin tempus feugiat sapien," "nec mattis leo pharetra vel." "Maecenas dapibus mi dignissim ligula commodo et facilisis quam tristique." "Praesent varius lacus eu enim pellentesque gravida." "Nam rhoncus mauris pharetra eros vulputate at tincidunt massa fringilla." "Pellentesque in erat nec massa consequat ultrices." "Donec varius elementum leo," "non hendrerit justo tincidunt sit amet." "Donec ac libero augue." "Sed mattis turpis a sem ultricies consequat." "Aenean nunc dui," "commodo eget vestibulum ut," "rutrum in nisl." "Nam augue lorem," "tempor in porta at," "commodo ut ipsum." "Quisque adipiscing aliquet tincidunt." "Suspendisse potenti." "Pellentesque porttitor elit at leo hendrerit pretium nec eu turpis." "Curabitur in elit metus." "Aliquam risus erat," "posuere id adipiscing consequat," "dapibus vel eros." "Maecenas semper felis sed felis tristique varius." "Mauris tempus tortor et metus euismod pellentesque." "Pellentesque dui massa," "euismod non tincidunt id," "aliquet in elit." "Aenean vulputate sem elit." "Pellentesque at tempus magna." "Aenean elementum nisl id ante commodo placerat." "Nam sed mauris tellus." "Pellentesque nec orci nibh," "nec vulputate enim." "Aliquam erat volutpat." "Etiam dignissim justo a orci egestas mattis." "Vivamus ultrices sapien ac turpis venenatis tempor." "Suspendisse consequat volutpat fermentum." "Duis eu orci velit." "Sed placerat," "nisi sed aliquet tincidunt," "risus odio mattis nulla," "non sodales nunc nulla vitae mi." "Nunc consequat pharetra dolor at fringilla." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Vestibulum ultrices tellus quis nisl dignissim rhoncus eget et justo." "Maecenas vitae purus quis leo vehicula venenatis vel ut lectus." "Curabitur nec molestie nisl." "Vestibulum ullamcorper nulla non orci dictum quis lacinia est interdum." "Fusce eget sem risus," "sed volutpat augue." "Suspendisse potenti." "Sed luctus molestie augue," "a varius quam congue in." "Aliquam aliquet orci eget mi euismod consequat." "Ut et vestibulum ante." "Sed vitae metus elit." "Mauris lacus eros," "pellentesque eu vehicula semper," "dapibus consequat nulla." "Sed volutpat erat suscipit sem facilisis at adipiscing orci vehicula." "Pellentesque nisi nulla," "faucibus in rhoncus ut," "rhoncus eleifend turpis." "Aenean odio tortor," "ullamcorper id tincidunt nec," "rhoncus non mi." "Praesent interdum varius orci," "ut venenatis nibh mollis nec." "Ut placerat," "erat nec tincidunt pharetra," "metus lacus venenatis nunc," "et laoreet augue sapien vel lorem." "Sed sit amet viverra est." "Etiam rutrum," "purus ut ultrices aliquet," "neque magna luctus risus," "vel consectetur eros lorem ut odio." "Integer turpis elit," "consectetur ut suscipit sed," "gravida at lorem." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Morbi placerat accumsan malesuada." "Mauris porta," "lacus eget iaculis sagittis," "arcu sem lobortis nulla," "et tempus velit massa quis libero." "Fusce dolor nibh," "bibendum et adipiscing non," "eleifend et odio." "Duis elit eros," "hendrerit at porttitor vitae," "gravida nec arcu." "Praesent malesuada sapien a urna accumsan at hendrerit ipsum porttitor." "Mauris pharetra sagittis urna eu tempor." "Vestibulum purus leo," "pharetra quis ultrices ac," "semper nec erat." "Sed nec massa arcu," "sed tempus dolor." "Fusce vitae dictum eros." "Aenean vestibulum semper turpis," "iaculis auctor dolor vehicula ac." "In fermentum auctor pharetra." "Integer nec eros diam," "eget posuere leo." "Nam tristique," "nibh nec malesuada ornare," "urna odio porta mauris," "accumsan aliquet nunc lectus sit amet mauris." "Vestibulum nulla massa," "semper sit amet blandit sit amet," "venenatis eget sapien." "Vestibulum ultrices congue rhoncus." "Nunc lacinia dapibus imperdiet." "Nunc a eros sed urna pellentesque egestas non sit amet elit." "Integer dolor diam," "vulputate at tristique non," "venenatis in risus." "Sed lacinia luctus ipsum," "ac sagittis arcu molestie quis." "Phasellus pretium nulla quis quam placerat vitae commodo mi congue." "Praesent tristique laoreet elementum." "Praesent venenatis pretium dolor," "eu volutpat est scelerisque sit amet." "Praesent eleifend dictum vehicula." "Donec ullamcorper adipiscing ante ac elementum." "Integer dui nunc," "viverra at rutrum ut," "tincidunt vitae mi." "Donec nec risus id arcu porttitor placerat pulvinar at lacus." "Morbi ac velit sapien," "lacinia egestas nulla." "Mauris elementum dui ac libero ultricies consequat." "Nam non justo at tellus hendrerit rhoncus ultrices molestie augue." "Aenean elit purus," "tempor quis vehicula quis," "lobortis a odio." "Aliquam rhoncus varius lorem," "eu aliquet turpis rutrum a." "Nulla gravida gravida dui," "ac molestie arcu adipiscing vitae." "Cras diam mauris," "cursus vitae congue dictum," "adipiscing id erat." "Suspendisse ornare porta elit id hendrerit." "Praesent nec metus massa," "a egestas risus." "Donec pellentesque viverra diam sit amet pharetra." "Suspendisse lorem mi," "viverra eu auctor non," "volutpat et felis." "Proin id fermentum purus." "Nam eget mattis arcu." "Morbi bibendum rutrum euismod." "Donec aliquet hendrerit tincidunt." "Aenean eu sapien ut nunc dictum feugiat nec at lacus." "Duis commodo nisi nec tortor volutpat quis condimentum turpis aliquam." "Vivamus sollicitudin," "nulla rhoncus consequat posuere," "nisi nibh adipiscing felis," "aliquet porta arcu magna nec sapien." "Ut luctus interdum diam quis sollicitudin." "Ut semper magna sed neque hendrerit mattis." "Nullam turpis dui," "porttitor eget interdum id," "porttitor eu dui." "Ut accumsan," "tellus in eleifend imperdiet," "elit massa facilisis magna," "vitae feugiat tellus lectus eget tellus." "Mauris ac neque ac nibh ultricies imperdiet." "Ut urna lorem," "aliquet et mattis id," "suscipit a lectus." "Nam vehicula porttitor erat sit amet imperdiet." "Sed eu nunc id mauris mollis rutrum." "Pellentesque dui orci," "ullamcorper at fringilla eget," "sollicitudin eget nunc." "Quisque vel metus et enim placerat eleifend sed a leo." "Praesent pharetra hendrerit nibh scelerisque aliquam." "Duis tincidunt vestibulum congue." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vestibulum non libero ligula." "Ut cursus mauris sed odio imperdiet vehicula." "In fermentum vehicula arcu," "ac commodo augue posuere sed." "Vivamus ultricies," "magna in aliquam suscipit," "tortor leo vestibulum dolor," "ut luctus odio diam nec lacus." "Phasellus et diam metus." "Cras fringilla nibh quis ante tincidunt in euismod leo luctus." "Nulla tincidunt erat sit amet erat viverra eleifend accumsan ligula luctus." "Quisque et risus enim." "Praesent vitae neque ut leo semper malesuada eu sed justo." "Duis pretium vehicula orci sed dignissim." "Cras nec magna in nulla laoreet vulputate quis at enim." "Nulla eget odio tellus." "In placerat massa et purus eleifend non fringilla neque fringilla." "Donec imperdiet ullamcorper nisl," "vel rutrum sapien rutrum a." "Duis luctus," "ante eu tristique commodo," "ipsum libero sollicitudin purus," "quis tempor nibh felis ac quam." "Nullam sodales vehicula elit," "eget egestas neque blandit in." "Mauris egestas faucibus elit," "id pellentesque nibh tincidunt id." "Nam vitae felis magna." "Donec tellus quam," "scelerisque vitae sollicitudin at," "gravida vel est." "Ut sodales velit nec dui sollicitudin a porta mi ullamcorper." "Cras sollicitudin egestas consequat." "Donec id tortor est," "eget tempor diam." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut ullamcorper gravida pharetra." "Proin diam nunc," "feugiat id interdum vel," "porttitor a nisl." "Aliquam aliquet orci sed metus egestas porttitor." "Morbi sollicitudin pulvinar enim." "Etiam tincidunt augue ut quam mollis ac imperdiet odio egestas." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Nunc at enim diam." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Aliquam lorem lectus," "suscipit at vestibulum ac," "scelerisque quis augue." "Morbi felis tellus," "porttitor quis pellentesque ut," "dictum ac nisi." "Integer sit amet massa vel augue lacinia dapibus non vulputate tortor." "Aenean ullamcorper sodales justo," "at fermentum libero sodales et." "Fusce vitae enim ut ligula volutpat placerat." "Pellentesque et mauris nibh," "non lacinia ipsum." "Phasellus ac nibh sit amet nibh vulputate rutrum." "Maecenas id nulla quam." "Maecenas euismod dolor in magna condimentum adipiscing." "Morbi elementum tincidunt mauris in mollis." "Pellentesque sagittis turpis id nunc tempor a eleifend turpis fermentum." "Sed faucibus interdum arcu," "at varius sem aliquet id." "Pellentesque vestibulum iaculis risus," "id dictum lorem gravida ac." "Quisque sagittis arcu vitae eros dapibus vitae convallis nulla mattis." "Nam id dui neque," "ut molestie velit." "Pellentesque pulvinar porta erat eu interdum." "Nunc metus massa," "vestibulum vitae egestas a," "fringilla et odio." "Quisque quis diam lorem," "quis pellentesque velit." "Mauris sapien risus," "suscipit nec vestibulum nec," "rutrum a risus." "Curabitur lobortis condimentum ultricies." "Duis quis dapibus turpis." "Nunc lectus elit," "facilisis at bibendum et," "vestibulum in arcu." "Morbi odio nibh," "feugiat quis tempor ut," "scelerisque ultrices nisi." "Curabitur a accumsan augue." "Integer aliquet porttitor nibh," "nec placerat est pharetra in." "Donec feugiat nisi et odio commodo interdum." "Vestibulum ullamcorper bibendum fermentum." "Fusce eu lacus eget metus malesuada feugiat eu vel erat." "Sed et erat tortor." "Morbi malesuada varius mollis." "Nam accumsan dignissim odio," "quis consectetur mi molestie eget." "Etiam iaculis," "enim eu placerat vehicula," "elit massa pulvinar tellus," "in cursus magna mi non quam." "Vivamus varius tempor semper." "Nulla adipiscing feugiat sollicitudin." "Etiam lacinia placerat dui nec varius." "In vitae metus mauris." "Vestibulum sed magna quis nibh ornare rhoncus ut vitae ipsum." "Duis ligula nunc," "fermentum sed suscipit non," "molestie vel purus." "Suspendisse potenti." "Proin arcu leo," "adipiscing at vehicula ac," "ullamcorper nec diam." "Proin pretium porta urna," "quis fermentum nisl pretium et." "Suspendisse a elit eu nisi molestie lacinia." "Cras at condimentum arcu." "Suspendisse potenti." "Sed ullamcorper ante sit amet urna aliquet ultrices accumsan neque ullamcorper." "Nam sit amet velit vel urna gravida suscipit sit amet non mauris." "Ut non neque arcu." "Praesent gravida sodales lorem," "vitae hendrerit purus bibendum non." "Nulla facilisi." "Mauris ornare," "sem eget tristique vestibulum," "augue metus luctus neque," "sit amet pretium lectus dui et augue." "Curabitur eu convallis turpis." "Ut est est," "vulputate auctor laoreet et," "iaculis eget massa." "Vestibulum ornare porta rhoncus." "Phasellus sagittis orci et orci blandit facilisis viverra leo consectetur." "Curabitur molestie nibh vitae nisi condimentum eget tempor nulla consectetur." "Ut arcu nunc," "mollis nec consectetur nec," "elementum tempus enim." "Nullam vel arcu massa." "In quis accumsan nibh." "Nullam id tristique neque." "Phasellus mattis interdum nisi quis viverra." "Morbi sollicitudin," "leo vel faucibus consequat," "ante est blandit nibh," "id sodales risus nunc ac ligula." "Nullam pellentesque diam nec urna fringilla malesuada." "Maecenas nisi lorem," "bibendum a condimentum in," "commodo vel tellus." "Proin at odio in ante lacinia sodales vel eget elit." "Curabitur eu fermentum est." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Praesent rutrum lectus ac velit consequat hendrerit." "In faucibus dictum mattis." "Sed a justo mi," "eu convallis nibh." "Integer commodo sollicitudin suscipit." "Curabitur vel leo vitae quam ultricies interdum et eget justo." "Proin ultrices lacus et metus vulputate ultrices eu non ligula." "Proin at velit in nisi malesuada lobortis." "Fusce est urna," "pulvinar ac venenatis non," "hendrerit non neque." "Donec id augue ac magna consequat porta." "Donec sed erat vitae velit vehicula rutrum." "Aenean pulvinar dui nec augue pharetra iaculis." "Quisque pretium risus vitae arcu feugiat ac posuere risus sagittis." "Nam diam erat," "rutrum ut interdum non," "laoreet at sem." "Sed enim elit," "tempor eget volutpat ac," "aliquet at sem." "Nunc in urna eu ipsum tempor pharetra eget vitae est." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Nulla ultricies," "ligula quis consequat posuere," "ante risus gravida est," "in pretium elit ipsum nec eros." "Mauris ac leo sit amet nisl rutrum mattis." "Donec facilisis enim eget mauris gravida lacinia." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Vivamus eleifend lacus non erat eleifend lacinia." "Nam vehicula vehicula ipsum ac ultrices." "Aliquam ut massa purus." "Aenean vel est vitae nulla tincidunt malesuada." "Aliquam eleifend," "arcu non tristique tempor," "dui ligula malesuada sem," "iaculis scelerisque magna massa quis quam." "Pellentesque libero mauris," "vulputate sed tincidunt vitae," "vehicula ac ipsum." "Mauris pharetra," "turpis eu tincidunt rhoncus," "quam tortor viverra est," "at pellentesque augue nibh ac nibh." "In ipsum dui," "ullamcorper vel semper quis," "semper id massa." "Phasellus non sem dolor," "at scelerisque tellus." "Curabitur velit augue," "pulvinar in aliquam id," "aliquet vel leo." "Fusce fermentum blandit nunc," "vitae tincidunt leo molestie condimentum." "Suspendisse ut gravida ipsum." "Curabitur vulputate," "mauris sit amet pulvinar sagittis," "ipsum enim feugiat enim," "et porta risus neque eget ante." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Donec eros dolor," "vehicula quis aliquam eget," "ornare id lorem." "Ut dolor lacus," "aliquet ut tempor et," "varius et nunc." "Cras consectetur massa vitae velit mattis a ultrices urna venenatis." "Praesent lacus mi," "bibendum a aliquet quis," "vestibulum non velit." "Proin sit amet elit felis," "eu malesuada justo." "Maecenas auctor urna metus." "Phasellus convallis velit id justo blandit venenatis." "Suspendisse convallis rhoncus orci," "a tincidunt quam varius a." "Fusce scelerisque aliquam odio ac sodales." "Aliquam in lectus arcu." "In vestibulum," "nisi et sagittis dignissim," "purus est feugiat risus," "ac accumsan ante purus in turpis." "Maecenas bibendum condimentum nibh," "quis fringilla quam imperdiet sed." "Nulla ullamcorper suscipit sem euismod rhoncus." "Curabitur lectus justo," "consectetur vitae viverra sed," "fringilla at nunc." "Aliquam justo tortor," "ornare vel rhoncus non," "eleifend sed purus." "Nullam posuere gravida magna," "egestas convallis tellus venenatis quis." "Mauris feugiat," "lectus nec rutrum placerat," "tellus augue convallis velit," "in mattis odio neque in urna." "Quisque quis urna at diam pretium iaculis ut sed dui." "Morbi nibh enim," "accumsan eu convallis et," "bibendum sed dui." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Etiam interdum turpis eu dui adipiscing sagittis." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "In hac habitasse platea dictumst." "Suspendisse sed libero enim," "et dapibus justo." "Aliquam commodo," "turpis sit amet venenatis facilisis," "nibh diam porttitor neque," "nec gravida massa odio a sem." "Morbi quis velit ligula." "Mauris interdum risus nec quam rhoncus eu bibendum mauris pulvinar." "Nunc id orci nec turpis lobortis luctus." "Praesent laoreet lectus vel leo malesuada interdum." "Quisque a mi ac eros mattis pharetra in a quam." "Sed scelerisque ligula vel tellus pulvinar suscipit sollicitudin odio vehicula." "In porta odio auctor justo commodo lobortis." "Nullam porttitor volutpat blandit." "In ut varius nisl." "Nunc pharetra porta luctus." "Mauris in mattis est." "In hac habitasse platea dictumst." "Maecenas sed convallis tellus." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut vehicula metus vitae ipsum hendrerit rutrum." "Nunc dolor nisl," "interdum quis ornare et," "tempor quis dui." "Donec tincidunt varius turpis non cursus." "Nulla lobortis," "lacus eget pellentesque sagittis," "urna elit rhoncus erat," "ac convallis ipsum sapien non lacus." "Morbi pellentesque ligula et velit tempus sagittis." "Morbi tincidunt interdum nunc non suscipit." "Cras faucibus interdum velit accumsan posuere." "Donec a augue risus." "Etiam viverra," "lectus sed mattis lobortis," "erat risus aliquet lorem," "eu semper libero nunc ac erat." "Donec at dui nisi." "Fusce dui tortor," "consequat eget egestas vel," "lobortis elementum mi." "Suspendisse blandit molestie urna vel mollis." "Nam aliquam volutpat bibendum." "Nulla id erat a lectus facilisis vestibulum." "Nunc dictum laoreet magna eu venenatis." "Duis facilisis justo nec enim vehicula nec rutrum purus vulputate." "Sed sollicitudin dui nec purus porttitor lacinia." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nisl lacus," "rutrum ac congue eu," "scelerisque dictum ligula." "Fusce neque massa," "viverra sed suscipit sit amet," "posuere at ipsum." "Praesent scelerisque libero in nibh gravida sed consectetur turpis vehicula." "Fusce sapien velit," "vestibulum a aliquam in," "bibendum vel mauris." "Phasellus id porta eros." "Aenean nec ligula turpis," "ut tincidunt velit." "Cras commodo congue dui," "id gravida felis iaculis eget." "Nunc varius diam a purus elementum eleifend." "Sed viverra velit sit amet ante ultrices nec varius tellus aliquam." "Suspendisse ante nunc," "suscipit nec sodales ut," "rhoncus a ante." "Nulla risus neque," "fermentum in pharetra nec," "commodo rhoncus nulla." "Aenean fermentum," "ligula nec suscipit ultrices," "ligula neque rhoncus purus," "a mollis sem purus ut nunc." "Nunc aliquam ullamcorper lacinia." "Duis id velit lacus." "Cras convallis sodales vehicula." "Proin nibh nulla," "bibendum sed pellentesque vitae," "blandit vitae quam." "Curabitur et eros velit," "non vehicula sapien." "Suspendisse eu mi nec metus pellentesque egestas." "Curabitur a tellus purus," "ac dictum nisi." "Donec diam ligula," "tincidunt ut posuere vitae," "consequat at nisi." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Nulla auctor nisi sed metus tincidunt blandit." "Nulla facilisi." "Proin volutpat mi sagittis risus fringilla feugiat." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vivamus sagittis," "metus et sagittis sodales," "massa leo elementum sapien," "id suscipit lectus ligula ac orci." "Nulla dignissim tristique justo," "vel volutpat turpis rutrum convallis." "Sed diam lorem," "ultricies a ultricies eu," "tristique vitae turpis." "Donec pellentesque consectetur tellus non sodales." "Nam id dolor arcu." "Pellentesque nisl eros," "gravida non aliquam auctor," "elementum et felis." "Quisque in pellentesque metus." "Morbi sed lorem non magna fringilla egestas vitae ut nulla." "Aenean vel ante id nibh tincidunt feugiat." "Ut diam lorem," "semper vel elementum ac," "faucibus suscipit nunc." "Ut ultrices pharetra pellentesque." "Sed malesuada," "nulla vitae luctus suscipit," "est ipsum viverra libero," "quis ultrices augue ante eget velit." "Aenean nibh libero," "elementum eget lacinia non," "faucibus ut arcu." "Suspendisse potenti." "Phasellus nisl ante," "faucibus sed aliquam non," "pellentesque vel orci." "Nulla facilisi." "Sed et mauris sit amet enim malesuada congue." "In hac habitasse platea dictumst." "Cras vitae velit a enim sollicitudin elementum interdum a diam." "Nulla purus lectus," "mattis facilisis pretium et," "consectetur ut tellus." "Cras posuere odio eget nibh lacinia ullamcorper." "Aliquam a enim purus." "Donec pharetra tristique magna," "sit amet varius erat facilisis et." "Nullam molestie nisi euismod orci ultrices in mollis tellus accumsan." "Ut placerat hendrerit porttitor." "Nulla sit amet quam risus." "Nunc diam dui," "adipiscing non cursus et," "pharetra sed mi." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Cras eget hendrerit mi." "Donec sagittis tincidunt nisi venenatis egestas." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Suspendisse ac felis erat," "ut placerat nisi." "Curabitur laoreet pellentesque erat sed porttitor." "Sed vel metus leo," "nec congue enim." "Vivamus elit orci," "ultricies ac sagittis nec," "porta a lorem." "Suspendisse volutpat facilisis turpis," "non dapibus mi scelerisque sed." "Ut id libero a lorem rhoncus sollicitudin non non lorem." "Integer erat purus," "laoreet eu pulvinar eget," "condimentum in tellus." "Nam et placerat purus." "Praesent convallis," "nisi id sodales pharetra," "nibh augue tincidunt elit," "sit amet tempor justo orci quis sapien." "Cras imperdiet ligula ultricies lacus vestibulum molestie." "Fusce non suscipit felis." "Aenean sed nisl quis mi dapibus auctor et eget sem." "Vestibulum luctus egestas diam nec aliquet." "Nunc suscipit," "risus non facilisis sagittis," "libero enim rutrum mauris," "at ullamcorper tortor nibh vel turpis." "Morbi sed nisl purus." "In hac habitasse platea dictumst." "Nulla orci dui," "consectetur id laoreet quis," "mollis in nunc." "Phasellus faucibus posuere magna eu semper." "Cras sem turpis," "mattis non pretium at," "feugiat eget lorem." "Mauris in orci nulla," "sed consectetur diam." "Pellentesque dignissim," "erat dictum gravida viverra," "est erat laoreet massa," "at porta sem mi a quam." "Mauris ultricies viverra velit in posuere." "Vestibulum et ligula eros." "Pellentesque eu orci nulla." "Proin lectus enim," "molestie a sagittis id," "elementum quis tortor." "Mauris et ligula ut ligula egestas porttitor nec quis sapien." "Duis nibh dolor," "pharetra eu mollis sit amet," "tempus ut tortor." "Pellentesque tristique mattis nisl sed commodo." "Praesent ut mauris mi." "Donec lectus arcu," "vestibulum tempus convallis in," "vestibulum eget risus." "Cras sit amet tristique metus." "Fusce sodales velit et purus imperdiet semper." "Donec a nibh tellus," "ut pharetra odio." "Proin tellus nulla," "malesuada vitae aliquet bibendum," "congue ut turpis." "Vestibulum vel purus elit," "sit amet tempus purus." "Praesent mi erat," "imperdiet at volutpat eget," "laoreet a purus." "Curabitur ultricies ultricies nisi," "et varius nisi auctor in." "Curabitur vehicula elit et erat imperdiet vitae euismod diam convallis." "Morbi mollis semper risus," "ac varius turpis faucibus et." "Nulla commodo ligula nec nulla blandit ut rhoncus quam semper." "Mauris arcu ligula," "dapibus vel blandit id," "ornare quis arcu." "Proin urna ligula," "dictum aliquet venenatis nec," "pharetra et est." "Donec libero lectus," "scelerisque eget pharetra nec," "scelerisque ut quam." "Integer mi tortor," "mattis a luctus sit amet," "consequat quis mi." "Praesent in orci a nibh cursus malesuada eu a magna." "Nam at ligula purus," "consequat eleifend dui." "Donec tristique velit id turpis ultricies fermentum." "In ut sem eu quam volutpat consequat ut eget augue." "Nam posuere nisl at lectus laoreet scelerisque." "Vivamus nec odio tempus nulla egestas iaculis." "Sed sollicitudin posuere sapien ac interdum." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Quisque aliquam," "massa ut vehicula placerat," "dui dui feugiat sem," "sed blandit sem augue non sapien." "Nulla sit amet justo diam." "Aliquam eget justo vitae lorem condimentum imperdiet a eget nisi." "Etiam quam nulla," "volutpat ac consequat quis," "volutpat ac orci." "Nam fermentum hendrerit pulvinar." "Aliquam erat volutpat." "Mauris sit amet viverra justo." "Cras eget sollicitudin turpis." "Donec congue pretium suscipit." "Nunc tempus tempor augue vitae mattis." "Aenean vel lectus a neque feugiat pretium." "Proin ac purus a nisi tincidunt auctor non eget justo." "Donec et bibendum ipsum." "Nulla facilisi." "Nam pellentesque lacinia fermentum." "Nulla eu ligula turpis," "a cursus dui." "Nullam porttitor molestie bibendum." "Aenean iaculis mi ultrices lorem viverra gravida." "Proin tortor mauris," "fermentum vitae pretium ac," "posuere quis augue." "Cras sodales," "felis sit amet sollicitudin euismod," "lorem dui fermentum nisl," "et vehicula quam enim et est." "Etiam ac dolor sed augue dictum ullamcorper non molestie leo." "Morbi tellus arcu," "imperdiet eget condimentum sit amet," "convallis sodales massa." "Ut id urna eu quam facilisis rhoncus." "Curabitur euismod," "augue ut fringilla congue," "odio risus vestibulum enim," "ac porta augue lacus quis dolor." "Sed dui orci," "rutrum commodo dapibus sed," "fermentum in libero." "Aenean id purus sapien," "in feugiat odio." "Nullam interdum suscipit odio eget vehicula." "Praesent interdum," "sapien vitae consectetur pulvinar," "mauris felis iaculis nisi," "vitae sagittis sapien velit ac neque." "Morbi a purus vel velit vestibulum ullamcorper a vel diam." "Nam nec dui non tellus tincidunt molestie." "Nam lacinia iaculis orci eget pulvinar." "Etiam ac facilisis massa." "Nulla sit amet luctus odio." "Aenean eget turpis turpis," "eget fermentum neque." "Phasellus id lectus nisi." "Suspendisse tristique scelerisque suscipit." "Integer vel nibh elit." "Duis sem justo," "bibendum vel hendrerit vel," "cursus non turpis." "In hac habitasse platea dictumst." "Vestibulum nec quam a dolor consequat fermentum vel in leo." "Donec vel lorem risus," "quis blandit felis." "Sed mollis ornare turpis," "vitae mattis risus mollis eget." "Praesent eleifend iaculis mauris." "Maecenas porta tincidunt egestas." "Quisque at sem leo." "Donec non enim vel risus suscipit vulputate." "Nam a diam placerat dui feugiat commodo at a tortor." "Fusce elit augue," "congue sit amet imperdiet id," "sagittis at quam." "Integer vestibulum felis vel nunc consequat bibendum." "Curabitur rhoncus lacinia risus," "sit amet semper urna elementum vehicula." "Nulla vel ante libero." "Maecenas sed orci non eros venenatis dapibus nec non nibh." "Aliquam erat volutpat." "Quisque aliquet auctor nulla at semper." "Aenean congue pellentesque ipsum." "Aliquam id ante vel eros facilisis consectetur." "Aenean a mi in orci bibendum mattis euismod eget elit." "In sed enim et quam tincidunt semper in quis augue." "Proin sed sapien id magna cursus tristique." "Nunc ac sapien augue." "Aliquam tempus leo ultricies magna interdum tincidunt." "Nulla porttitor gravida ligula in aliquet." "Duis mattis dui non sem vestibulum ac sagittis enim molestie." "Quisque sed dui ligula." "Nullam euismod aliquet enim id tristique." "Curabitur nec lectus consectetur nisi cursus vehicula." "Nulla fringilla vestibulum rutrum." "Quisque malesuada nibh vitae quam feugiat nec placerat eros ultrices." "Pellentesque id dui id nisl eleifend iaculis posuere ut tortor." "Integer eget dui risus," "eu auctor quam." "Aliquam sit amet orci placerat nunc blandit dictum." "Vestibulum nec interdum nisi." "Proin purus nisi," "viverra ultricies accumsan ac," "dignissim nec nulla." "Donec sit amet dolor nisl," "a scelerisque elit." "Phasellus ut arcu lectus." "Sed semper dapibus pellentesque." "Nam vitae urna nulla," "vel auctor orci." "Sed vel magna nibh." "Curabitur pretium imperdiet orci eu ultrices." "Vivamus quis metus pharetra nunc euismod rutrum." "Fusce massa nibh," "venenatis sed ornare at," "posuere sed mauris." "Sed tortor est," "tempor vel fermentum sit amet," "laoreet at nulla." "Proin eu dictum lacus." "Proin nec mattis lectus." "Aliquam semper semper tellus," "ac eleifend orci accumsan non." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Phasellus vitae tortor mauris," "quis blandit nisi." "Donec quis viverra lacus." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Maecenas imperdiet," "leo eu tincidunt gravida," "eros sem lacinia risus," "vitae viverra massa augue eget ante." "Suspendisse ullamcorper lacus ut est bibendum condimentum." "In eget semper mi." "Praesent tellus turpis," "mollis sit amet feugiat at," "gravida eget augue." "Sed ac lacinia massa." "Sed vitae malesuada lorem." "Vivamus pellentesque urna eget sem vehicula pharetra." "Curabitur tristique tortor eget mauris adipiscing semper." "Sed eu nisi vulputate arcu elementum imperdiet." "Morbi gravida est non ante accumsan bibendum." "Cras et lectus augue," "sed congue leo." "Praesent semper," "urna nec pharetra aliquet," "augue purus tristique neque," "eget convallis libero turpis sed mi." "Sed tortor tellus," "tempus ac ullamcorper tempus," "consectetur in dui." "Cras aliquam dapibus turpis," "ut ultrices ligula vulputate a." "Donec molestie porttitor mi," "placerat rutrum neque sodales id." "Fusce quis justo lacus." "Duis eget sem nisi," "ac consectetur augue." "Vestibulum luctus erat non lacus commodo vel tristique dui consectetur." "Mauris tellus nisl," "molestie eget porta vitae," "sagittis sed dolor." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Pellentesque vel odio eget sem aliquet scelerisque eget vitae nunc." "Fusce adipiscing sagittis libero," "quis placerat dui pulvinar eget." "Cras condimentum," "arcu tempor facilisis condimentum," "eros leo ullamcorper urna," "vel tincidunt velit enim eget eros." "Mauris et semper nulla." "Proin mollis sapien nec enim egestas aliquam vestibulum consectetur tellus." "Aenean ut nisl ut sapien iaculis auctor." "Pellentesque dolor tellus," "sodales eu elementum ut," "ullamcorper at nunc." "Vestibulum convallis ornare leo," "ac luctus eros dignissim commodo." "Suspendisse at elit sit amet urna placerat lobortis." "Donec fermentum libero lacus," "in placerat risus." "Nullam ut enim sapien," "nec blandit libero." "Donec in nibh fermentum lacus dapibus bibendum vel ac turpis." "Morbi rhoncus," "purus pharetra sagittis mollis," "lectus ante imperdiet magna," "in vestibulum urna nulla ac erat." "Duis dictum euismod vulputate." "Morbi odio augue," "ultrices a gravida sed," "elementum quis felis." "Nam scelerisque urna id justo dignissim placerat." "Sed convallis lobortis orci vel egestas." "Vestibulum ultricies felis in libero iaculis varius." "Aliquam erat volutpat." "Phasellus ac purus non elit malesuada auctor." "Donec ut sem id enim volutpat posuere." "Donec malesuada est sed odio ornare dignissim." "Cras vitae urna massa," "ut facilisis lorem." "In rutrum interdum lectus," "nec scelerisque tellus consequat pellentesque." "Proin eu molestie neque." "Integer sed enim lectus," "ac aliquet urna." "Phasellus sodales sollicitudin consequat." "Praesent vitae augue ante." "Sed id pellentesque leo." "Integer vehicula enim quis dui aliquet congue." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Curabitur gravida," "quam sed elementum eleifend," "velit nulla dictum est," "ut malesuada augue ligula id dui." "Maecenas bibendum tristique ipsum," "eu gravida elit commodo sed." "Fusce metus tortor," "accumsan ac feugiat id," "volutpat sed tortor." "Vivamus tincidunt mi non purus volutpat ultrices." "Praesent eget metus eu sem tempus pellentesque." "Etiam faucibus sollicitudin dapibus." "Donec tempor massa sit amet mi posuere ullamcorper." "Vestibulum ac dolor ut urna ultrices volutpat." "Integer ipsum urna," "congue tempus vehicula eu," "sodales sit amet velit." "Proin adipiscing urna ut eros sodales vulputate." "Nam faucibus auctor justo non luctus." "Suspendisse ac augue sed augue viverra congue." "Nam ligula erat," "eleifend eu semper eget," "pharetra laoreet nunc." "Phasellus tempor eros a ante tincidunt ultricies." "Fusce sit amet est tristique lacus pharetra tristique." "Pellentesque orci est," "tristique quis tristique id," "imperdiet at neque." "Vivamus ut rutrum mauris." "Nullam sit amet quam turpis," "ut fringilla enim." "Duis sagittis accumsan risus." "In eget risus vel mauris pharetra laoreet nec id arcu." "Cras mollis," "mauris et sagittis laoreet," "est dui hendrerit urna," "at tempor nulla mauris sed odio." "Cras sed hendrerit orci." "Curabitur eros sem," "pretium vel iaculis vel," "accumsan in enim." "Proin mattis," "ligula tincidunt sagittis rutrum," "mauris dui consectetur erat," "ac hendrerit quam risus at purus." "Cras ac ante id libero congue semper at id tortor." "Cras non risus sit amet erat porta dictum sit amet in justo." "Phasellus vel justo odio." "Donec scelerisque varius ligula id bibendum." "Nullam turpis ligula," "fringilla ac semper a," "iaculis a sapien." "Vestibulum in est venenatis metus malesuada lacinia quis id justo." "Vivamus faucibus luctus semper." "Etiam mattis ullamcorper magna," "sit amet faucibus est malesuada euismod." "Duis libero nisl," "molestie a iaculis in," "convallis eu nunc." "Nullam sit amet lorem at purus ullamcorper rutrum sit amet eu orci." "In vel nulla in elit convallis varius nec a lacus." "Nunc ac nunc nisl," "quis condimentum risus." "Donec tempus facilisis odio ac rutrum." "Etiam sed mollis tortor." "Sed ac lorem at urna lacinia porta." "Curabitur vestibulum metus eu augue viverra et accumsan augue ornare." "Phasellus mollis mauris erat," "ut vestibulum arcu." "Praesent pretium condimentum nisl," "id rutrum quam mattis ac." "Nunc vitae arcu leo," "sit amet pretium dui." "Mauris vehicula velit sem," "lobortis cursus tellus." "Ut eleifend dapibus tellus," "in euismod ipsum dapibus at." "Nulla convallis blandit nunc quis lobortis." "Praesent placerat mattis mauris," "sed luctus nisi ultricies vel." "In tristique laoreet tortor sed porta." "Aenean hendrerit orci non est viverra sit amet blandit lorem scelerisque." "Nulla in nulla lacus." "Pellentesque ac enim quam," "id aliquet justo." "Suspendisse diam metus," "placerat eu volutpat ut," "euismod non erat." "Phasellus luctus odio vel orci dapibus sed varius lacus aliquam." "Sed tincidunt feugiat diam vel ornare." "Fusce quis volutpat magna." "Cras malesuada elit at leo fringilla imperdiet et sed libero." "Morbi sit amet tincidunt ligula." "Ut id tempus tellus." "Vestibulum id rhoncus risus." "Ut non magna a lorem semper hendrerit." "Cras vulputate cursus eros," "sit amet tincidunt ligula rutrum fringilla." "Cras mauris nisl," "fringilla sed egestas vel," "accumsan non mauris." "Integer commodo," "tellus consequat mollis pulvinar," "dui elit faucibus arcu," "in lacinia nisi mi eget ligula." "Nulla malesuada semper tortor eu lacinia." "Vestibulum at varius sem." "Vivamus posuere ligula ac tellus faucibus lobortis." "Maecenas sagittis arcu in odio sodales aliquam." "Mauris at felis augue." "Donec venenatis interdum cursus." "Vivamus ante mauris," "dignissim sit amet laoreet vel," "vehicula vel arcu." "Sed facilisis nulla sit amet massa posuere faucibus." "Aliquam elementum elementum felis lacinia vehicula." "Maecenas metus justo," "viverra et pulvinar ut," "venenatis a mauris." "Duis eu ultricies elit." "Donec gravida condimentum magna," "sodales eleifend risus fermentum eget." "Nunc elit urna," "elementum in adipiscing sit amet," "cursus in dui." "Cras at risus non ligula scelerisque scelerisque dictum sed lorem." "Sed semper lorem id magna consequat ut ultricies nunc consectetur." "Suspendisse vehicula," "erat sit amet tempor auctor," "augue risus interdum nunc," "eu adipiscing tortor nisi tempus sem." "Etiam malesuada ipsum ut lectus ultrices faucibus." "Curabitur tellus tellus," "pretium vel accumsan nec," "eleifend nec elit." "Cras semper fermentum ipsum," "sit amet gravida lectus hendrerit non." "Nullam pretium velit vel dolor suscipit in blandit nisi scelerisque." "Curabitur viverra ipsum vitae odio placerat pulvinar." "In cursus elit id turpis aliquam ornare." "Donec consequat turpis feugiat elit tempor sed lobortis arcu aliquam." "Curabitur sit amet sagittis purus." "Curabitur tincidunt arcu sed odio suscipit elementum." "Sed ut nibh a ante adipiscing auctor eleifend a nisi." "Proin sollicitudin sollicitudin blandit." "Ut commodo auctor imperdiet." "Fusce eleifend," "neque non ullamcorper elementum," "felis ipsum cursus libero," "et bibendum augue mi sed ligula." "Curabitur sodales euismod diam vitae dictum." "Maecenas vestibulum," "mi non commodo sollicitudin," "massa quam iaculis odio," "vel tristique tellus nibh vitae tortor." "Vestibulum ut odio eget nisi ultricies auctor ac vitae lorem." "Sed eu lorem elit." "Aliquam erat volutpat." "Suspendisse fermentum nulla lorem." "Morbi eleifend dolor a ligula feugiat vulputate." "Curabitur laoreet auctor quam," "at tincidunt metus cursus in." "Nam aliquam volutpat porttitor." "Aenean id cursus eros." "Vestibulum vel neque diam," "non posuere quam." "Quisque leo sapien," "fermentum quis congue vel," "fringilla vitae arcu." "Mauris semper turpis ac libero volutpat dapibus." "Duis nisi enim," "faucibus eget tempus at," "ultricies nec tellus." "Cras id lectus nisl," "id cursus orci." "Etiam sapien nisl," "mollis sit amet volutpat vel," "volutpat nec nisi." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Nunc ac purus nec leo vestibulum porttitor a blandit arcu." "Proin nec rhoncus neque." "Pellentesque vestibulum pharetra vestibulum." "Sed molestie elit eu dui mollis varius." "Etiam porttitor dictum mi." "Maecenas suscipit sagittis nunc nec porta." "Sed et arcu sit amet sapien convallis vestibulum." "Cras egestas accumsan accumsan." "Quisque accumsan tortor et erat mattis sollicitudin." "Sed molestie turpis eget sem tincidunt nec convallis mi congue." "Etiam ac egestas lorem." "Proin sollicitudin est nec sem vehicula tincidunt." "Proin quis purus ut nisl dapibus euismod." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Nunc lacus ante," "rutrum sed lacinia ut," "fermentum id purus." "Nulla facilisi." "Suspendisse sed lectus nec libero lacinia aliquam." "Sed id ipsum sapien," "id varius ipsum." "Vestibulum at nulla mi," "eget accumsan nibh." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Donec lobortis ultrices iaculis." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec placerat eros ac arcu pellentesque laoreet." "Praesent sagittis pellentesque dictum." "Nulla in metus eget metus vulputate tempus." "Mauris dictum elementum commodo." "Donec tellus est," "suscipit iaculis venenatis ut," "pulvinar sit amet turpis." "Mauris et elit non magna consectetur bibendum." "Mauris pellentesque dui eu libero consectetur fringilla." "Aenean vel ipsum urna." "Maecenas pulvinar sollicitudin magna molestie interdum." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Mauris viverra pretium tortor eget gravida." "Integer commodo molestie turpis quis elementum." "Aenean placerat," "purus eu rhoncus ornare," "ligula nulla consequat dui," "vitae scelerisque augue massa pulvinar quam." "Suspendisse ultricies ultricies neque sit amet luctus." "Ut bibendum leo a lectus blandit eget hendrerit ligula consequat." "In hac habitasse platea dictumst." "Cras tempor," "eros non posuere pulvinar," "magna nisi consectetur lacus," "in ullamcorper ante lectus non justo." "Sed porttitor libero vel nisl bibendum dapibus." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Fusce vitae faucibus mi." "Etiam in libero lobortis nisl lobortis lobortis blandit ut dolor." "Morbi auctor iaculis nulla at venenatis." "Morbi augue nibh," "lobortis ut bibendum id," "pretium nec felis." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Maecenas molestie," "ante nec porttitor bibendum," "tortor tortor aliquet arcu," "sit amet tempus ligula diam sit amet felis." "Phasellus semper posuere augue id rhoncus." "Cras dolor tellus," "posuere id varius in," "hendrerit eu tellus." "Proin vitae turpis non nulla ullamcorper tristique." "In hac habitasse platea dictumst." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce sed justo quis diam lacinia imperdiet nec eu tortor." "Nullam at quam non metus pretium luctus in ac dui." "Vivamus libero nibh," "adipiscing et tristique non," "accumsan quis sem." "Aliquam condimentum ligula eu lorem sodales fermentum." "Suspendisse ac urna vitae est pharetra vulputate at vel lacus." "Sed vel lorem consequat sapien tristique dignissim." "Praesent sodales fermentum est id iaculis." "Sed sollicitudin ullamcorper suscipit." "Morbi felis massa," "ultricies ac ultrices in," "malesuada volutpat sapien." "Vestibulum vitae egestas arcu." "Suspendisse ac facilisis dui." "Sed lobortis eros ac est adipiscing laoreet." "Nullam urna arcu," "dapibus quis commodo vulputate," "dictum aliquet mi." "Morbi sit amet erat sit amet velit pellentesque aliquam." "Sed eu arcu turpis," "ut vulputate quam." "Nullam ultrices condimentum tortor quis scelerisque." "Morbi lacinia lacinia metus," "vel elementum ante pharetra at." "Fusce mollis magna vel nisi gravida ut fringilla tortor rhoncus." "Aenean aliquam feugiat sapien ac euismod." "Nullam non est tortor." "Pellentesque vestibulum porta lorem ut adipiscing." "Nunc eget enim et dui pellentesque egestas." "Suspendisse ornare mollis odio," "tincidunt tincidunt sapien egestas non." "Cras vulputate," "nisi sit amet vehicula facilisis," "sapien neque adipiscing nisi," "at volutpat est nibh euismod ipsum." "Maecenas scelerisque elementum leo," "eget semper libero auctor a." "Proin vel odio sit amet tortor adipiscing facilisis non vel elit." "Aliquam eget leo libero," "sit amet vulputate est." "Maecenas ut turpis nec est tincidunt rutrum." "Nam laoreet," "justo in dictum tincidunt," "nisi est porttitor diam," "eget pretium libero est dictum odio." "Fusce justo felis," "tempor vitae mattis sit amet," "pretium sagittis sem." "Mauris risus erat," "volutpat sit amet aliquam cursus," "ultricies a nulla." "Aliquam at erat felis." "In imperdiet lacinia purus at luctus." "Suspendisse rutrum lacinia ullamcorper." "Vestibulum tincidunt sodales sollicitudin." "Aliquam sit amet velit purus," "in venenatis nisl." "Vivamus vitae magna quis nisi varius imperdiet ut quis tortor." "Ut pulvinar," "mi a volutpat blandit," "justo tellus tincidunt massa," "id vulputate elit nunc at risus." "Integer venenatis rhoncus enim." "In pretium adipiscing justo," "sed scelerisque urna fringilla sit amet." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam placerat," "est nec ornare convallis," "ante lacus vestibulum quam," "sit amet interdum magna purus ac eros." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam at adipiscing turpis." "Curabitur lobortis velit ut ligula commodo lacinia." "Nullam pellentesque," "velit in convallis consequat," "ipsum massa malesuada lacus," "sit amet sodales odio enim vitae mauris." "Integer eget risus quam." "Maecenas quis risus sit amet risus egestas pulvinar." "Proin nec consectetur est." "Praesent ultricies felis a nisi aliquet pulvinar." "Quisque nec elit at lorem porta malesuada." "Phasellus ac nulla eros," "eget egestas lectus." "Proin a lacus orci," "ornare vehicula posuere." + +;; RFC 6742 + +host1.blaat.nl. IN NID 10 0014:4fff:ff20:ee64 +host1.blaat.nl. IN L32 10 10.1.2.0 +host1.blaat.nl. IN L64 10 2001:0DB8:1140:1000 +host1.blaat.nl. IN LP 10 l64-subnet1.blaat.nl. + +;error1 IN NID 1 00fg:4fff:ff20:ee64 +;error2 IN NID 1 00ff:4fff:ff20 +;error3 IN NID 1 00f0 +;error4 IN NID 1 00ff:4fff:ff20:ee64:67 +;error5 IN NID 1 00ff:ff2056:ee64:67 +;error6 IN NID 1 :::1 + +;; RFC 6844: CAA +caa IN CAA 0 issue "ca.example.net" +caa IN CAA 0 iodef "mailto:security@example.com" +caa IN CAA 0 iodef "http://iodef.example.com/" +caa IN CAA 0 issue "ca.example.net; account=230123" +caa IN CAA 0 issue "ca.example.net; policy=ev" +caa IN CAA 128 tbs "Unknown" +caa IN TYPE257 \# 70 020461757468303E3039060A2B06010401D679020301060960864801 65030402010420614829C81B958911F81164D40DCDBFD49D66CEB3B3 442FF6C9C3A912F9497566020100 + +;; RFC 7043: EUI48 and EUI64 +eui48 IN EUI48 00-00-5e-90-01-2a +eui64 IN EUI64 00-00-5e-ef-00-00-00-2a + +;error.eui48 IN EUI48 00-00-5e ; too short +;error.eui48 IN EUI48 00-00-5e-90-01-2a-ef ; too long +;error.eui48 IN EUI48 00-00-5e-9r-01-2a ; non-hex +;error.eui64 IN EUI64 00-00-5e-ef-00-00-2a ; too short +;error.eui64 IN EUI64 00-00-5e-ef-00-00-00-2a-ef ; too long +;error.eui64 IN EUI64 00-00-5e-ef-r0-00-00-2a ; non-hex + +; Tests for Unbound +; the text strings should be identical, with () and without (), parse test. +txt1 TXT "a" "bb" "ccc" +txt2 TXT ( "a" "bb" "ccc" ) +txt3 TXT "a b" "bb" " cc c " " " +txt4 TXT ( "a b" "bb" " cc c " " " ) + +; LOC tests +abbey.example.com. 3600 IN LOC 40 32 24.716 N 105 4 25.770 W 1208.00m 600000m 2000m 1m +abram.example.com. 3600 IN LOC 40 32 24.716 N 105 4 25.770 W 42849672.91m 1000m 500000m 2000m +addie.example.com. 3600 IN LOC 90 0 0.000 S 180 0 0.000 E 42849672.91m 9000000m 9000000m 9000000m +addie.example.com. 3600 IN LOC 90 0 0.000 S 180 0 0.000 E 42849672.91m 90000000m 90000000m 80000000m +alfrac.example.com. 3600 IN LOC 40 0 0.000 N 105 0 0.000 W 1208.64m 1m 10000m 1m +allspec.example.com. 3600 IN LOC 40 32 24.716 N 105 4 25.770 W 1208.00m 600000m 2000m 20m +curtin.edu.au.example.com. 3600 IN LOC 32 7 19.000 S 116 2 25.000 E 10.00m 1m 10000m 1m +rwy04l.logan-airport.boston.example.com. 3600 IN LOC 42 21 28.764 N 71 0 51.617 W -44.00m 2000m 10000m 1m +cambridge-net.kei.com.example.com. 3600 IN LOC 42 21 54.000 N 71 6 18.000 W -24.00m 30m 10000m 1m +loiosh.kei.com.example.com. 3600 IN LOC 42 21 43.952 N 71 5 6.344 W -24.00m 1m 200m 1m +morefrac.example.com. 3600 IN LOC 40 0 0.000 N 105 0 0.000 W 1208.64m 0.30m 5m 4m +negative.example.com. 3600 IN LOC 40 0 0.000 S 105 0 0.000 E -9978.85m 1m 10000m 1m +pipex.net.example.com. 3600 IN LOC 52 14 5.000 N 0 8 50.000 E 10.00m 1m 10000m 1m +nohpvp.example.com. 3600 IN LOC 40 32 24.716 N 105 4 25.770 W 1208.00m 600000m 10000m 1m +nominnosec.example.com. 3600 IN LOC 40 0 0.000 N 105 0 0.000 W 1208.00m 1m 10000m 1m +nosec.example.com. 3600 IN LOC 40 32 0.000 N 105 4 0.000 W 1208.00m 1m 10000m 1m +noszhpvp.example.com. 3600 IN LOC 40 32 24.716 N 105 4 25.770 W 1208.00m 1m 10000m 1m + +; Tests for TXT quotes and parenthesis +txt5 TXT Test-String"Test-String" +txt6 IN TXT ("v=DKIM1; k=rsa; g=*; s=email; h=sha1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC33ewKxBZARSAPbT96IpW/k3DgdNuFEb896eIf80HcVxWw+w2G+1sQcUjxWUSGp6yTTMEls6n7tthixidyRiE/aWOy3ic/K+927PuCy0M1ZX2QY8gVmOHJbYT3qBQ8toQrvGIer8fQqqJIzO/ATVbHxX8B/z0PsmGI2xxqCyXkOw""IDAQAB;") + +example.com. 3600 IN CSYNC 66 3 A NS AAAA +9fe6cbb9e933ad0b8b4fa94066474e091ee8be696c224b1c1678fcec._openpgpkey 3600 IN OPENPGPKEY \# 2221 ( 99020d044d6cf351011000ae2731a071cae66040331dcfffbc1abaea01fba2b3 341ad29f4191e1e2e47514cc595e5d3b59ebd460db81cb04e98a753dae963543 74b8c3a420364960a6c6875e66cea7216327c16996557c4d13e25e236b3714e9 32795be889e8b33a295faf6d9015474cfe9c2643603f1e91e01334011a841909 8e2fc9807285b2195cdbb1a9ae1916a26b9e33b3f91cde2f728aa133464a1099 fc2beecaf8f67ee03a999aa97be89ce4a252f804ce27a9efb7a631ca956bfa99 c51d6beca52af39a93353aac43097671074a4bb5b039eb86e99209989d5b6a4a e22b32c1605e712072926095b4640db4b4d16b54a8139048e25ef0098781e524 4222df9b6a6bf2335942527356a29e1063c5bc1297c051ab969a3e0c01fb15e2 0ea63a06b416d6c96f9794c5d80e97afb249d2b907dc46605f1001019dd62774 4bc2ad73f239cd623f945bf9922ec6ceb607ce8818455173199de1ef555bf3e8 5e9702dcab7a30e5e6c0f6827ce6d550df2ba4fa6ef2ed47bceb916aded25a72 7039a09942a0684897cdf2efc13f5169693c19da94d861be40e8b07fe853d297 8389eba876332be7db146f1ec6a957bfe39ac90514b1f870a5d899bb4e1d97af 49294ad09dede6d5a04abdc29332bbe74cf70393b626c0f4fdfef6ee2b01d8a6 a40750c446e159b44d0a783611585385ba912b771364b6eda8a69680026a6bf2 105692fd6f9a6cf19e09550011010001b42357696c6c656d20546f6f726f7020 3c77696c6c656d406e6c6e65746c6162732e6e6c3e89023e0413010200280502 4d6cf351021b23050909660180060b090807030206150802090a0b0416020301 021e01021780000a0910e5f8f8212f77a4985d5b0ffe289b97f7d8e4e5abc537 8b7d6db7c395f98c3d787e3fb598638c41e889aea40cbe5b3001d947c7184c92 9efe6ad1e32ae9acb0802823870bb149c3a7bdfbb591601d8c099b3bdd3b3ddc cb03b4d611dc741d9c49c3b5b87654a21dfb618cfe6087f172b3dc663a9f4c0d ad81476ebe5b6fd966164383bc39303a66272a3fe6a0b9a813d4e249c6b9dacf 748a49a979b3fa24036e47099e1d24ed3310cc04341e0bf3afd4e365a04cd075 b7d1dff607a3b8738abf885a7dc959251785ca626b8c9b476f44439653615437 c715b1a586236132e1f89b0e4a9d2d84e403e6733c90a96ec041d14994b19ec0 d23153bb94d9059851901353ddb60b9c42edf715af6ee4ef111e5afd56092a1f 7662a72af80f8768425324a8a7335c805a49b1c4d3dc279b69114a5c592638ff 22a963bd34d2d4bcc319972b99c197fa31c21b89e627f36ce811297ff707f53e 6c258dab407b7d618ec296317a565c2c8b740a39244d8f82095842f6f84448dc e29bb292c7e15072b00c04f2a0f4cd700f2e7348b703f74bcb8d5f4235fbd282 4f515852ea9be06255f88d81a5046d1f730e9bf103b3335f5f03d74ac2ec6581 4dd920e985b57a3b4e0c699f3103ab033ccf36a5b037b3668365484b58a4462d 79414d27170c9db4285bec72d24a9654354b996d13c14b2994f6725e36fb766d 57a79ed721c3ca248221390d7d6fa65f867fa6fa1369b9020d044d6cf3510110 00a4ece215b3f782bae8fb6c1e3fdc06d1e6242271f41b073fc7a85237788814 7b7168134e0b753c608d07308f188b9489af34f1dab1bb52fc3968d0a705c30a 35ea0226e7d2608931138d56ccf124a9236276462863a8f1c83b3a640167211d eaaadfc557ff7701cbb1d413259cf3f5b18ec6e615000bb4ab73c75b980615cf a9a7778de3bab318cc448eca044e3fdc95ac63aa2b28846d77fe190fe8fbc3a0 3ece39d38675040ff1be064410faad9fc5a8c2efe02f34cc39f3087d6b2e9346 42995fd5a9f2d3a59302c0cbe1fea01002c7eb64c8c4e5f853b5b17aebc7c722 97380b8df9ec7f32f1766b3d76e186dc582eedd5da955b7cacdb4cca69e99e9b 25d22b157a68c9f828170917709d335a000590f2be22fd7a5ed0ff2432969642 e84978428c1a3c8380bb339d21ce9cb8ce8f4d6bc102b70a56042159f26c85f7 8599f931a73fe159cf4ae34c828e66fe84f648af745b5d2b1022d514901a8e48 c1cdae82205fe21a58cab77bbc8c1dd32a94aaf4954e7695f05b7c40a395e07f 34ee0add218904fcd380bb737be2ec5b148942840c58abfa212c10ad6debb265 23aa040dad2191397deb472f0dbeeceb6afb386b7166754a47216c3629f63633 a02c5fd1c116e46c8a682a163426e556ea5c0ecdb472429c0d51bea5e583f889 e70f831251e8b31c231d2f946de8c31a6550f884ea961dfdf75a2c3e366ad48c b5001101000189022404180102000f05024d6cf351021b0c050909660180000a 0910e5f8f8212f77a498ed740ff8e1cd5baa631d75dff18a2aa27def9c416118 d178092a1c327c3cc641fd74bc976f3a1b5da52b95cfea68618b31f2aaee6f82 f30ed934eb98de0105878a4814fc811139ed4b3aa356e3c962c422f0be4d3d59 f8e9e64913964287282a6519cd0b1f3f03615aea223b276efcbc5cd4921787c1 7f70b0967aefdcc5462344399b4180efd75c1185a83d6b691e660f8210e76624 f1a87d988baf9367d26b84dcb5df8c7303c2947c4c238734addccb7970f6c192 f3f5dd5f75127e289f26b2fda0562b44a032ed45ae1fc855dca67d54125ccd36 c16f207e4389b0f4e5ff45fe60328a53b322534868ff0d3d8aca0bb0781ee1fe 62f2c0e6fc468f57ccf795ced9f2b27e3cb6d16fc417bd4ca969a364dc649ea5 c57f0325205eaa77fd9df84431c3be5329773828d0e32c0011cbb885e7131b44 b1fc5267b0b3ff125e7255c233239fc6e8c8844d613dab76833e49a7d947fae6 b3ceb35b2ddce2a0f71f384f74fecda521ae07ce3332e5eb2c79d100ad8f9ace 2a0067c1b590f61dd18ab021d66605aa745b5944d830de4c9f61dcc889354b1a 6203d918a5c2317b6d5f188d8d0cf6dab11c9578f6f41d3089871bbb2963b114 59ab0b4c4220ddafb14c20ecbacab1cec60a522ecc883bd1d539ca61cdd4933c 412fafd631d03eff23b23a4164729e32236947f622fe79a17493154e9a30b257 e3fdf97f0b2e1b8c65fc85bd98) + +test.add.1. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480584899 300 16 lkEJsjwBeAdfv9RGs6zZrg== 15355 NOERROR 0 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585012 300 16 k9mSMs2t5vq5FV2DvQvR6g== 59231 NOERROR 0 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480523776 300 16 sBfx00GRs+tfRTm4uRCjyQ== 25791 0 0 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585449 300 0 59692 BADSIG 0 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585462 300 16 6wvlG82sEVHyqsTtBLvRQw== 26044 NOERROR 0 diff --git a/external/unbound/testdata/test_ldnsrr.c1 b/external/unbound/testdata/test_ldnsrr.c1 new file mode 100644 index 0000000..439acc8 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.c1 @@ -0,0 +1,11470 @@ +000006000100015180004001610C726F6F742D73657276657273036E657400056E73746C640C766572697369676E2D67727303636F6D00780B66AC000007080000038400093A8000015180 +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014013100 1800 900 604800 86400 +00002E0001000151800093000608000001518052F4220052EAD970837700478E8A50AA07BA6A9D0F14B41EEA65CC4B2AC9131BEF3E451FCF6B663134D7CEE925EEE2D1129727E3E7B6D430CFCC562340EF36306FA985B3DEA91AF6A92EE7A9D96DCE333AB647ED7F6C1DC61B0B2ACADD3ABBCD97695539ECC3163DD81A2552F117FEE63A908F2EAB844D47B5CFC96F83816C0EAADA35970B2F91AC5E9557 +. 86400 IN RRSIG SOA 8 0 86400 20140207000000 20140130230000 33655 . R46KUKoHumqdDxS0HuplzEsqyRMb7z5FH89rZjE0187pJe7i0RKXJ+PnttQwz8xWI0DvNjBvqYWz3qka9qku56nZbc4zOrZH7X9sHcYbCyrK3Tq7zZdpVTnswxY92BolUvEX/uY6kI8uq4RNR7XPyW+DgWwOqto1lwsvkaxelVc= ;{id = 33655} +00002E00010007E9000093000208000007E90052F4220052EAD97083770008D9E7FDDF630E8DA8E4ACAF8F6248129175F2BD1993D6C23F264C459478DA8EF4451ED6F33833ACDBD778762C7C7BD51893E0330827BDACC52D79B9749F9765908F500BF11ED76CBA951BDF90A1003B7FC9C53A923DA88D5F101A1558B1F2299A4D5189A87539056973A34FEFB51FC33CBE949487EB6F0C2DE12F8023C13A33 +. 518400 IN RRSIG NS 8 0 518400 20140207000000 20140130230000 33655 . CNnn/d9jDo2o5Kyvj2JIEpF18r0Zk9bCPyZMRZR42o70RR7W8zgzrNvXeHYsfHvVGJPgMwgnvazFLXm5dJ+XZZCPUAvxHtdsupUb35ChADt/ycU6kj2ojV8QGhVYsfIpmk1Riah1OQVpc6NP77Ufwzy+lJSH628MLeEvgCPBOjM= ;{id = 33655} +00002E00010002A3000113003008000002A30052FEADFF52EAE7804A5C0009ED79DF2809D3A558F25A02E0D5DDC819EE65E04C9B923D021F6CE483599E31E4969BCCD471EB076C11C4CB79D6B07E22FFB895F123CA0A1200029B4064C0EA7DE630AB7A5A87DA3D9C127957A03808C74894CE5B6C31F16E5FC00DD1642394139C6D8354C1AE633FBD78A9DA8E6E648EDA737319BCA0A84DF6388784A2DDAA116B9538EEDA457C547B950B52B64592FED11E2BFC8058AB35B76495FB5DADA641BC2117ED93C14739EAC32007A7A4967C293129E5982DEC37246218BB7925E31FE0DDF52F13735E20F7723ED1AD7E05CA55CD8365E08287279BE4B940A3E9619374510586A42E7761DAC457074769EAD77806E7875B65D073E5F8EB478AE9AD +. 172800 IN RRSIG DNSKEY 8 0 172800 20140214235959 20140131000000 19036 . Ce153ygJ06VY8loC4NXdyBnuZeBMm5I9Ah9s5INZnjHklpvM1HHrB2wRxMt51rB+Iv+4lfEjygoSAAKbQGTA6n3mMKt6WofaPZwSeVegOAjHSJTOW2wx8W5fwA3RZCOUE5xtg1TBrmM/vXip2o5uZI7ac3MZvKCoTfY4h4Si3aoRa5U47tpFfFR7lQtStkWS/tEeK/yAWKs1t2SV+12tpkG8IRftk8FHOerDIAenpJZ8KTEp5Zgt7DckYhi7eSXjH+Dd9S8Tc14g93I+0a1+BcpVzYNl4IKHJ5vkuUCj6WGTdFEFhqQud2HaxFcHR2nq13gG54dbZdBz5fjrR4rprQ== ;{id = 19036} +00002E0001000151800093002F08000001518052F4220052EAD97083770092D2FF7C7CC0D41E1C07729F6B58E5DB8FC9DA8D385FA84172693969C16E2D723CED40F1BBA513F4079EEA1324899D61CF2F01DFB568C288FF632F639A4905A353420AB993D0DE5BB010962ADE567E5C0C487F3F91B72A143BAD8A0DE54E966490D33CF08595CB1287A185E3660AEC728AF6274E7EE8475FA4892732C317FE70 +. 86400 IN RRSIG NSEC 8 0 86400 20140207000000 20140130230000 33655 . ktL/fHzA1B4cB3Kfa1jl24/J2o04X6hBcmk5acFuLXI87UDxu6UT9Aee6hMkiZ1hzy8B37Vowoj/Yy9jmkkFo1NCCrmT0N5bsBCWKt5WflwMSH8/kbcqFDutig3lTpZkkNM88IWVyxKHoYXjZgrscor2J05+6EdfpIknMsMX/nA= ;{id = 33655} +00000200010007E900001401610C726F6F742D73657276657273036E657400 +. 518400 IN NS a.root-servers.net. +00000200010007E900001401620C726F6F742D73657276657273036E657400 +. 518400 IN NS b.root-servers.net. +00000200010007E900001401630C726F6F742D73657276657273036E657400 +. 518400 IN NS c.root-servers.net. +00000200010007E900001401640C726F6F742D73657276657273036E657400 +. 518400 IN NS d.root-servers.net. +00000200010007E900001401650C726F6F742D73657276657273036E657400 +. 518400 IN NS e.root-servers.net. +00000200010007E900001401660C726F6F742D73657276657273036E657400 +. 518400 IN NS f.root-servers.net. +00000200010007E900001401670C726F6F742D73657276657273036E657400 +. 518400 IN NS g.root-servers.net. +00000200010007E900001401680C726F6F742D73657276657273036E657400 +. 518400 IN NS h.root-servers.net. +00000200010007E900001401690C726F6F742D73657276657273036E657400 +. 518400 IN NS i.root-servers.net. +00000200010007E9000014016A0C726F6F742D73657276657273036E657400 +. 518400 IN NS j.root-servers.net. +00000200010007E9000014016B0C726F6F742D73657276657273036E657400 +. 518400 IN NS k.root-servers.net. +00000200010007E9000014016C0C726F6F742D73657276657273036E657400 +. 518400 IN NS l.root-servers.net. +00000200010007E9000014016D0C726F6F742D73657276657273036E657400 +. 518400 IN NS m.root-servers.net. +00003000010002A30000880100030803010001BF2C53AA5B60C5916E446712E119C3D3528ABEF4ED390E705F942F55E22B834324EBD74725F5F79026E5D43B6D19E7BB2499DDD69FDFBBEF8D4521B88594010E2CB61B7C9C97D8C554170D88D2A461F923A1DFFF409912834FE9C36FAD0EC01662A49AFD34C561312908DBBE744F2386EAA4CC2D1D5CE7E96C9B059EA4BAA103 +. 172800 IN DNSKEY 256 3 8 AwEAAb8sU6pbYMWRbkRnEuEZw9NSir707TkOcF+UL1XiK4NDJOvXRyX195Am5dQ7bRnnuySZ3daf37vvjUUhuIWUAQ4stht8nJfYxVQXDYjSpGH5I6Hf/0CZEoNP6cNvrQ7AFmKkmv00xWExKQjbvnRPI4bqpMwtHVzn6WybBZ6kuqED ;{id = 33655 (zsk), size = 1024b} +00003000010002A30001080101030803010001A80020A95566BA42E886BB804CDA84E47EF56DBD7AEC612615552CEC906D2116D0EF207028C51554144DFEAFE7C7CB8F005DD18234133AC0710A81182CE1FD14AD2283BC83435F9DF2F6313251931A176DF0DA51E54F42E604860DFB359580250F559CC543C4FFD51CBE3DE8CFD06719237F9FC47EE729DA06835FA452E825E9A18EBC2ECBCF563474652C33CF56A9033BCDF5D973121797EC8089041B6E03A1B72D0A735B984E03687309332324F27C2DBA85E9DB15E83A0143382E974B0621C18E625ECEC907577D9E7BADE95241A81EBBE8A901D4D3276E40B114C0A2E6FC38D19C2E6AAB02644B2813F575FC21601E0DEE49CD9EE96A43103E524D62873D +. 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= ;{id = 19036 (ksk), size = 2048b} +00002F000100015180000D02616300000722000000000380 +. 86400 IN NSEC ac. NS SOA RRSIG NSEC DNSKEY +02616300000200010002A300000A0161036E696302616300 +ac. 172800 IN NS a.nic.ac. +02616300000200010002A300000C0161046E733133036E657400 +ac. 172800 IN NS a.ns13.net. +02616300000200010002A300000A0162036E696302616300 +ac. 172800 IN NS b.nic.ac. +02616300000200010002A300000A0162036E696302696F00 +ac. 172800 IN NS b.nic.io. +02616300000200010002A300000C0162046E733133036E657400 +ac. 172800 IN NS b.ns13.net. +02616300000200010002A3000016036E73310C636F6D6D756E697479646E73036E657400 +ac. 172800 IN NS ns1.communitydns.net. +02616300000200010002A300000F036E73330369636202636F02756B00 +ac. 172800 IN NS ns3.icb.co.uk. +02616300002B0001000151800018384307013884DE2E920F38E01B659CC5F37B6749BB0DC818 +ac. 86400 IN DS 14403 7 1 3884DE2E920F38E01B659CC5F37B6749BB0DC818 +02616300002B000100015180002438430702584BCEE9B917FC92AFBDD0FC8AF12AB31B3A7B0754894688DA3C57F5CA7D8E56 +ac. 86400 IN DS 14403 7 2 584BCEE9B917FC92AFBDD0FC8AF12AB31B3A7B0754894688DA3C57F5CA7D8E56 +02616300002E0001000151800093002B08010001518052F4220052EAD9708377009CC1F49D46439997EAB609D6138AF96D636CA5DDFE6535CB1115533DE83EF60480A05E755D73A2385D37F74B0DF894F3AF9BD7F9119585542E5E0A5FAC4F15ED7D3648F45C673707FD0D9A3F830442274E0FB70C5089F78317D49EF7F4322F8E1CACE15816985D4BED848DF419A8134D524D0B1A80D49D714E45FF13315CE002 +ac. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nMH0nUZDmZfqtgnWE4r5bWNspd3+ZTXLERVTPeg+9gSAoF51XXOiOF0390sN+JTzr5vX+RGVhVQuXgpfrE8V7X02SPRcZzcH/Q2aP4MEQidOD7cMUIn3gxfUnvf0Mi+OHKzhWBaYXUvthI30GagTTVJNCxqA1J1xTkX/EzFc4AI= ;{id = 33655} +02616300002E0001000151800093002F08010001518052F4220052EAD9708377008841DEC1E224B319C4C2123BA7B5892989C00283E3A64499D1FC434E3BD92298931F896AAC8D01AC0DE82C954946A8DDB66EAB25FA19883322AFD9E177C101ACB6C3D4CFBB106950BA8BB921C7448C14B2EDA5D651CC5778A8E4E8B396053D661519575679735E042EFF36262A7F1E4AE2471C4A2127DD494C9150D9B4222785 +ac. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iEHeweIksxnEwhI7p7WJKYnAAoPjpkSZ0fxDTjvZIpiTH4lqrI0BrA3oLJVJRqjdtm6rJfoZiDMir9nhd8EBrLbD1M+7EGlQuou5IcdEjBSy7aXWUcxXeKjk6LOWBT1mFRlXVnlzXgQu/zYmKn8eSuJHHEohJ91JTJFQ2bQiJ4U= ;{id = 33655} +02616300002F00010001518000110761636164656D79000006200000000013 +ac. 86400 IN NSEC academy. NS DS RRSIG NSEC +0161036E696302616300000100010002A300000440FB1FB1 +a.nic.ac. 172800 IN A 64.251.31.177 +0162036E696302616300000100010002A30000044E689125 +b.nic.ac. 172800 IN A 78.104.145.37 +0761636164656D7900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +academy. 172800 IN NS demand.beta.aridns.net.au. +0761636164656D7900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +academy. 172800 IN NS demand.alpha.aridns.net.au. +0761636164656D7900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +academy. 172800 IN NS demand.delta.aridns.net.au. +0761636164656D7900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +academy. 172800 IN NS demand.gamma.aridns.net.au. +0761636164656D7900002B0001000151800024B7B80802E2A2DAE3CC55E8CE27E9AEA6217BDA4A835BF2270C40749AD278E9A9B4ABA132 +academy. 86400 IN DS 47032 8 2 E2A2DAE3CC55E8CE27E9AEA6217BDA4A835BF2270C40749AD278E9A9B4ABA132 +0761636164656D7900002E0001000151800093002B08010001518052F4220052EAD970837700437ED23B0126821535C21598FEB507EE0F3B80ADC38BCCC8DA7F3BA8C35A95A9CFBA92EADD0F9B4CC0456FFC853C22122BF4E2FD2C24497EE9467B23FC9B094D6F0F252B5B02704459A05C1E9900C19C7ECFC6046248298CD39BB478643816C2605FDE884346763EA690F045B875481CD8C326F7455974C8797BF3A8FE312F7B +academy. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Q37SOwEmghU1whWY/rUH7g87gK3Di8zI2n87qMNalanPupLq3Q+bTMBFb/yFPCISK/Ti/SwkSX7pRnsj/JsJTW8PJStbAnBEWaBcHpkAwZx+z8YEYkgpjNObtHhkOBbCYF/eiENGdj6mkPBFuHVIHNjDJvdFWXTIeXvzqP4xL3s= ;{id = 33655} +0761636164656D7900002E0001000151800093002F08010001518052F4220052EAD9708377008D91FC4ACFA37EC9F4314F59FCB7136F637AA83F15C2D5621412F9CEAAD77C0EC045D47BD1475C18456F400022BCB5032CD594D5D8DC26B03B44751E87177695D605609CF2C26E706B01490CACA37A331B5362E0B840AC75783EF21B0D51194B144531852908B4F17A222A3470F54ACA829911D67DB2BF9B78FC1FA63936CE86 +academy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jZH8Ss+jfsn0MU9Z/LcTb2N6qD8VwtViFBL5zqrXfA7ARdR70UdcGEVvQAAivLUDLNWU1djcJrA7RHUehxd2ldYFYJzywm5wawFJDKyjejMbU2LguECsdXg+8hsNURlLFEUxhSkItPF6Iio0cPVKyoKZEdZ9sr+bePwfpjk2zoY= ;{id = 33655} +0761636164656D7900002F000100015180000C026164000006200000000013 +academy. 86400 IN NSEC ad. NS DS RRSIG NSEC +02616400000200010002A300000E026164026E73036E696302657300 +ad. 172800 IN NS ad.ns.nic.es. +02616400000200010002A300001B026164056363746C640761757468646E730472697065036E657400 +ad. 172800 IN NS ad.cctld.authdns.ripe.net. +02616400000200010002A300000C036E7333036E696302667200 +ad. 172800 IN NS ns3.nic.fr. +02616400000200010002A300000904646E736302616400 +ad. 172800 IN NS dnsc.ad. +02616400000200010002A300000904646E736D02616400 +ad. 172800 IN NS dnsm.ad. +02616400000200010002A3000010066E732D65787403697363036F726700 +ad. 172800 IN NS ns-ext.isc.org. +02616400002F000100015180000C026165000006200000000003 +ad. 86400 IN NSEC ae. NS RRSIG NSEC +02616400002E0001000151800093002F08010001518052F4220052EAD970837700893E1459747DB65F26E38A69E1A1DE4A6ECF3BF59C6A044B0BCCB483199FFD04CAD4B3608551DE023D2AD57579310D8AA7F035DE677C290E26E0BCF09CCC84B5AF5DA1400CCCB8D97B5EC6C77749683565660CF55E1310E5F10590248D262F6D6609E96083608C3C5500F47241EB9F2C5BDD84BEA2B1610D5119CA3136CE98FC +ad. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iT4UWXR9tl8m44pp4aHeSm7PO/WcagRLC8y0gxmf/QTK1LNghVHeAj0q1XV5MQ2Kp/A13md8KQ4m4LzwnMyEta9doUAMzLjZe17Gx3dJaDVlZgz1XhMQ5fEFkCSNJi9tZgnpYINgjDxVAPRyQeufLFvdhL6isWENURnKMTbOmPw= ;{id = 33655} +04646E736302616400000100010002A3000004C29E4A0A +dnsc.ad. 172800 IN A 194.158.74.10 +04646E736302616400001C00010002A30000102A02806032FA0000000000000000000B +dnsc.ad. 172800 IN AAAA 2a02:8060:32fa::b +04646E736D02616400000100010002A3000004C29E4A09 +dnsm.ad. 172800 IN A 194.158.74.9 +04646E736D02616400001C00010002A30000102A02806032FA0000000000000000000A +dnsm.ad. 172800 IN AAAA 2a02:8060:32fa::a +02616500002F000100015180000E046165726F000006200000000003 +ae. 86400 IN NSEC aero. NS RRSIG NSEC +02616500002E0001000151800093002F08010001518052F4220052EAD9708377000A4E3C90785A2678AB155CFB827F477826B2652F9B6C7F5C2397B07414677D3BA7B04812A17BA0B0474AC10C4CEB303E15D8ED601F62B617512574252E67A41D1ACFAF37E40EC73B48A86D773D252A8EA9188A2677B1ECBEFF9956A8A1E206D8B6F61EDF95C88CDD987AFBCCD4A10C04D7DB271E685EA6603FD6C3E3D4F52245 +ae. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ck48kHhaJnirFVz7gn9HeCayZS+bbH9cI5ewdBRnfTunsEgSoXugsEdKwQxM6zA+FdjtYB9ithdRJXQlLmekHRrPrzfkDsc7SKhtdz0lKo6pGIomd7Hsvv+ZVqih4gbYtvYe35XIjN2YevvM1KEMBNfbJx5oXqZgP9bD49T1IkU= ;{id = 33655} +02616500000200010002A300001B026165056363746C640761757468646E730472697065036E657400 +ae. 172800 IN NS ae.cctld.authdns.ripe.net. +02616500000200010002A300000E036E7331056165646E7302616500 +ae. 172800 IN NS ns1.aedns.ae. +02616500000200010002A300000E036E7332056165646E7302616500 +ae. 172800 IN NS ns2.aedns.ae. +02616500000200010002A300001004736563330561706E6963036E657400 +ae. 172800 IN NS sec3.apnic.net. +02616500000200010002A300001006736E732D706203697363036F726700 +ae. 172800 IN NS sns-pb.isc.org. +02616500000200010002A3000014096E736578742D706368056165646E7302616500 +ae. 172800 IN NS nsext-pch.aedns.ae. +036E7331056165646E7302616500000100010002A30000044F627849 +ns1.aedns.ae. 172800 IN A 79.98.120.73 +036E7332056165646E7302616500000100010002A30000044F627949 +ns2.aedns.ae. 172800 IN A 79.98.121.73 +096E736578742D706368056165646E7302616500000100010002A3000004C7048901 +nsext-pch.aedns.ae. 172800 IN A 199.4.137.1 +096E736578742D706368056165646E7302616500001C00010002A300001020010500007D00000000000000000001 +nsext-pch.aedns.ae. 172800 IN AAAA 2001:500:7d::1 +036E7331067561656E696302616500000100010002A3000004D52A00E2 +ns1.uaenic.ae. 172800 IN A 213.42.0.226 +036E7332067561656E696302616500000100010002A3000004C3E500BA +ns2.uaenic.ae. 172800 IN A 195.229.0.186 +046165726F00000200010002A300001A026130046165726F0B6166696C6961732D6E737404696E666F00 +aero. 172800 IN NS a0.aero.afilias-nst.info. +046165726F00000200010002A300001A026132046165726F0B6166696C6961732D6E737404696E666F00 +aero. 172800 IN NS a2.aero.afilias-nst.info. +046165726F00000200010002A3000019026230046165726F0B6166696C6961732D6E7374036F726700 +aero. 172800 IN NS b0.aero.afilias-nst.org. +046165726F00000200010002A3000019026232046165726F0B6166696C6961732D6E7374036F726700 +aero. 172800 IN NS b2.aero.afilias-nst.org. +046165726F00000200010002A300001A026330046165726F0B6166696C6961732D6E737404696E666F00 +aero. 172800 IN NS c0.aero.afilias-nst.info. +046165726F00000200010002A3000019026430046165726F0B6166696C6961732D6E7374036F726700 +aero. 172800 IN NS d0.aero.afilias-nst.org. +046165726F00000200010002A300000F036E73320673776974636802636800 +aero. 172800 IN NS ns2.switch.ch. +046165726F00000200010002A300000E036E7335056B6E69707002646500 +aero. 172800 IN NS ns5.knipp.de. +046165726F00000200010002A300000F04646E73370564656E696302646500 +aero. 172800 IN NS dns7.denic.de. +046165726F00002F000100015180000C026166000006200000000003 +aero. 86400 IN NSEC af. NS RRSIG NSEC +046165726F00002E0001000151800093002F08010001518052F4220052EAD9708377004B4FF04EA00E778A54ABBC0CEDEAF604CFE2A08F8AFCE94AC8E6F1B2952B8D005CDB6B3B7E8B83AFA2D1A80BA379835DAC58E841EFD8C74C017E46C45FF2A6CD67D210080D05285FEC0DF7F7108B1B9E8071984770C7A6A3E930779C18D2B4803822E944C5231F4442ED8CF0F115F99B52369BC13039F7DDB4DC5F753FEEEFA7 +aero. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S0/wTqAOd4pUq7wM7er2BM/ioI+K/OlKyObxspUrjQBc22s7fouDr6LRqAujeYNdrFjoQe/Yx0wBfkbEX/KmzWfSEAgNBShf7A339xCLG56AcZhHcMemo+kwd5wY0rSAOCLpRMUjH0RC7Yzw8RX5m1I2m8EwOffdtNxfdT/u76c= ;{id = 33655} +02616600000200010002A3000013026E7307616E7963617374036E696302616600 +af. 172800 IN NS ns.anycast.nic.af. +02616600000200010002A3000010036166310664796E746C64036E657400 +af. 172800 IN NS af1.dyntld.net. +02616600000200010002A3000010036166330664796E746C64036E657400 +af. 172800 IN NS af3.dyntld.net. +02616600002B00010001518000240E6B080256C77864A2CD726F252634C8804A2AF33EA2CE70C49091E08C223BD2BB33CF5C +af. 86400 IN DS 3691 8 2 56C77864A2CD726F252634C8804A2AF33EA2CE70C49091E08C223BD2BB33CF5C +02616600002E0001000151800093002B08010001518052F4220052EAD9708377007673372BC1FFC5E66FE5089628CB457A6CF4235F07C2165F7690ABFF8DCF4B1B0F0E59B585A0C60B357956BF7316A6D6E065924A71566C0E9289F4B3B2AF6B797740C8907B622836CBC5FEF13EE91273F3208BA33A3C4F56004C98E465D325CF3DA6B1BE3F59CA283EBF45F8F7AB6CA4E23A42D8FBA18FE948568133F85AB440 +af. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dnM3K8H/xeZv5QiWKMtFemz0I18HwhZfdpCr/43PSxsPDlm1haDGCzV5Vr9zFqbW4GWSSnFWbA6SifSzsq9reXdAyJB7Yig2y8X+8T7pEnPzIIujOjxPVgBMmORl0yXPPaaxvj9Zyig+v0X496tspOI6Qtj7oY/pSFaBM/hatEA= ;{id = 33655} +02616600002E0001000151800093002F08010001518052F4220052EAD97083770081FAD8263AF7AA686482A10F49AC042EAC03531134EA84DEA85D59AD251BF733FCCE0A34C68C07C5A18925D2225DD2D1649A3EBE4C16AFBFC4C916AE487575CAF3A47B781AA2038397D4F47D9C88941A9F944E30321F3BE67E05C9F0A9DCFAE46530638D42BC522FAEF331DFEBFA7BCA12399D65B037F4E37E680B17CA9A3031 +af. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gfrYJjr3qmhkgqEPSawELqwDUxE06oTeqF1ZrSUb9zP8zgo0xowHxaGJJdIiXdLRZJo+vkwWr7/EyRauSHV1yvOke3gaogODl9T0fZyIlBqflE4wMh875n4FyfCp3PrkZTBjjUK8Ui+u8zHf6/p7yhI5nWWwN/TjfmgLF8qaMDE= ;{id = 33655} +02616600002F000100015180000C026167000006200000000013 +af. 86400 IN NSEC ag. NS DS RRSIG NSEC +026E7307616E7963617374036E696302616600000100010002A3000004CC3DD80D +ns.anycast.nic.af. 172800 IN A 204.61.216.13 +026E7307616E7963617374036E696302616600001C00010002A3000010200105000014601300AD000000000001 +ns.anycast.nic.af. 172800 IN AAAA 2001:500:14:6013:ad::1 +02616700000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +ag. 172800 IN NS a0.cctld.afilias-nst.info. +02616700000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +ag. 172800 IN NS a2.cctld.afilias-nst.info. +02616700000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +ag. 172800 IN NS b0.cctld.afilias-nst.org. +02616700000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +ag. 172800 IN NS b2.cctld.afilias-nst.org. +02616700000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +ag. 172800 IN NS c0.cctld.afilias-nst.info. +02616700000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +ag. 172800 IN NS d0.cctld.afilias-nst.org. +02616700002B0001000151800018D968070157F9FF89CE3A02AE33EC017A7C83ED54D925AA13 +ag. 86400 IN DS 55656 7 1 57F9FF89CE3A02AE33EC017A7C83ED54D925AA13 +02616700002B0001000151800024D9680702B8DC00C070D5BFC5C1C3BA08E5205A1E7F15EABFBFD6359D11E0E62D2FFFA57F +ag. 86400 IN DS 55656 7 2 B8DC00C070D5BFC5C1C3BA08E5205A1E7F15EABFBFD6359D11E0E62D2FFFA57F +02616700002E0001000151800093002B08010001518052F4220052EAD970837700323A6C24A2D5E94126A6E20C61DE39E5C680ABACB6AE0ABCB10830AEAA01244AAB65DC02009B52EF8FA5BCE15EB16D908448E67B3FCB53E328D04F3CEC815117E42C12FC30BD76F6395C968D666E9C793104592F0F4ED8BE06264C1A5040CF23455895051CA9D4ADACBD88DFFD40CC7B4CB943002048E934879CF078FEB522DE +ag. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MjpsJKLV6UEmpuIMYd455caAq6y2rgq8sQgwrqoBJEqrZdwCAJtS74+lvOFesW2QhEjmez/LU+Mo0E887IFRF+QsEvwwvXb2OVyWjWZunHkxBFkvD07YvgYmTBpQQM8jRViVBRyp1K2svYjf/UDMe0y5QwAgSOk0h5zweP61It4= ;{id = 33655} +02616700002E0001000151800093002F08010001518052F4220052EAD970837700AF14A7A7EA92F4F7571D45B7AEB399343225BC30027D8663315BD95183328670AE78FEEDB365F45048CBCE0CE7E82F287E0B4C5136AAA43D5067534DACED3251074801584B37E6AD86D5E7A5C6A908CC9AE73610A996C866889586572CBD98F36AC494BCA467BEA35BD5426CFAEF4CC62CE2084B34CEEA3CDFADD2799EA52233 +ag. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rxSnp+qS9PdXHUW3rrOZNDIlvDACfYZjMVvZUYMyhnCueP7ts2X0UEjLzgzn6C8ofgtMUTaqpD1QZ1NNrO0yUQdIAVhLN+athtXnpcapCMya5zYQqZbIZoiVhlcsvZjzasSUvKRnvqNb1UJs+u9MxiziCEs0zuo8363SeZ6lIjM= ;{id = 33655} +02616700002F0001000151800010066167656E6379000006200000000013 +ag. 86400 IN NSEC agency. NS DS RRSIG NSEC +066167656E637900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +agency. 172800 IN NS demand.beta.aridns.net.au. +066167656E637900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +agency. 172800 IN NS demand.alpha.aridns.net.au. +066167656E637900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +agency. 172800 IN NS demand.delta.aridns.net.au. +066167656E637900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +agency. 172800 IN NS demand.gamma.aridns.net.au. +066167656E637900002B0001000151800024AA3E080250CC5CB5EC1AFFF1E70ED524F6DDD4F7978D15B4041FA7C5E5F854343967DDCF +agency. 86400 IN DS 43582 8 2 50CC5CB5EC1AFFF1E70ED524F6DDD4F7978D15B4041FA7C5E5F854343967DDCF +066167656E637900002E0001000151800093002B08010001518052F4220052EAD970837700ABD7480D6E79FAE74EEBE85C30990B7B23239BB9E25023D86ECB542ED1DBBFF69C8E25793F6697AFFF20A1C71F494A808CFA7FD47E85EABC08D4EF6595AF70D9A19E62F2E97F12BB311086319CF5652BFBAA2CF03FD388D5313B3A050DFA0CD64D9A32A17DAE1300526D72C543C332AA5C1A20CAEBA5ECEF19D264ABED583F66 +agency. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . q9dIDW55+udO6+hcMJkLeyMjm7niUCPYbstULtHbv/acjiV5P2aXr/8goccfSUqAjPp/1H6F6rwI1O9lla9w2aGeYvLpfxK7MRCGMZz1ZSv7qizwP9OI1TE7OgUN+gzWTZoyoX2uEwBSbXLFQ8MyqlwaIMrrpezvGdJkq+1YP2Y= ;{id = 33655} +066167656E637900002E0001000151800093002F08010001518052F4220052EAD970837700B07C442D2A508FAB45EADA734C69E5CB1F85A56245A2FA4A9B14089AF656964D6BE849A7FF67DDD0374B88B76DB1338874C8BBBC56C7D720E33006779A5EE208431DE6CF3F473FA6BAE739C1D9589439FDC9A114044511CC7A5D6D01056126C133B83EAD9B99A30B35FDF4B8FE05CE526151CD9D52CEF6F4B7BA60061179E6E9 +agency. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sHxELSpQj6tF6tpzTGnlyx+FpWJFovpKmxQImvZWlk1r6Emn/2fd0DdLiLdtsTOIdMi7vFbH1yDjMAZ3ml7iCEMd5s8/Rz+muuc5wdlYlDn9yaEUBEURzHpdbQEFYSbBM7g+rZuZows1/fS4/gXOUmFRzZ1Szvb0t7pgBhF55uk= ;{id = 33655} +066167656E637900002F000100015180000C026169000006200000000013 +agency. 86400 IN NSEC ai. NS DS RRSIG NSEC +02616900000200010002A300000E036E7331047061697203636F6D00 +ai. 172800 IN NS ns1.pair.com. +02616900000200010002A3000011036E7332086F666673686F726502616900 +ai. 172800 IN NS ns2.offshore.ai. +02616900000200010002A300000A0577686F697302616900 +ai. 172800 IN NS whois.ai. +02616900002F000100015180000C02616C000006200000000003 +ai. 86400 IN NSEC al. NS RRSIG NSEC +02616900002E0001000151800093002F08010001518052F4220052EAD97083770054E669C23DB965B7642D82C911C622975CD0087071881E7A1FFC34B2E1A0AAB5DB5F1AC443BD0374C1C7CF041D5DEE39552B6AB452399592D69B34BC433BDDC198FE7D35CD611B87CA3471DE55EF1293CA31DD459272EAD7193FFB846AE12490A64E879358AFA7C6C35B26144647155CF5AAED5A0F22DAB4149956D536DB67E2 +ai. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VOZpwj25ZbdkLYLJEcYil1zQCHBxiB56H/w0suGgqrXbXxrEQ70DdMHHzwQdXe45VStqtFI5lZLWmzS8QzvdwZj+fTXNYRuHyjRx3lXvEpPKMd1FknLq1xk/+4Rq4SSQpk6Hk1ivp8bDWyYURkcVXPWq7VoPItq0FJlW1TbbZ+I= ;{id = 33655} +036E7332086F666673686F726502616900000100010002A30000046CA671F5 +ns2.offshore.ai. 172800 IN A 108.166.113.245 +0577686F697302616900000100010002A3000004D13B7701 +whois.ai. 172800 IN A 209.59.119.1 +02616C00000200010002A300001B02616C056363746C640761757468646E730472697065036E657400 +al. 172800 IN NS al.cctld.authdns.ripe.net. +02616C00000200010002A300000C036E7331036E696302616C00 +al. 172800 IN NS ns1.nic.al. +02616C00000200010002A300000D037269700370736703636F6D00 +al. 172800 IN NS rip.psg.com. +02616C00000200010002A3000013056E732D616C046973746903636E7202697400 +al. 172800 IN NS ns-al.isti.cnr.it. +02616C00000200010002A300000F076D756E6E617269026F7A02617500 +al. 172800 IN NS munnari.oz.au. +02616C00002F000100015180000C02616D000006200000000003 +al. 86400 IN NSEC am. NS RRSIG NSEC +02616C00002E0001000151800093002F08010001518052F4220052EAD970837700AE04A6639508A80C1FB2C5643338D3D7250964DA7AD73923341C871996F825559D50AFE08CA2C3718348930F28FED4961E14FB6174C560F8D681DADBDB7414FF10285EC1C6E9DD061A33B6351451BAA19375F61591175E5308726B7765F1B87931ECA20E05EF8803E57A5D61C96E74513165A211AD5362E9989A0AA410ED010E +al. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rgSmY5UIqAwfssVkMzjT1yUJZNp61zkjNByHGZb4JVWdUK/gjKLDcYNIkw8o/tSWHhT7YXTFYPjWgdrb23QU/xAoXsHG6d0GGjO2NRRRuqGTdfYVkRdeUwhya3dl8bh5MeyiDgXviAPlel1hyW50UTFlohGtU2LpmJoKpBDtAQ4= ;{id = 33655} +036E7331036E696302616C00000100010002A3000004C20195E6 +ns1.nic.al. 172800 IN A 194.1.149.230 +02616D00000200010002A300001B02616D056363746C640761757468646E730472697065036E657400 +am. 172800 IN NS am.cctld.authdns.ripe.net. +02616D00000200010002A300000D037269700370736703636F6D00 +am. 172800 IN NS rip.psg.com. +02616D00000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +am. 172800 IN NS fork.sth.dnsnode.net. +02616D00000200010002A3000012066E732D63646E05616D6E6963036E657400 +am. 172800 IN NS ns-cdn.amnic.net. +02616D00000200010002A3000012066E732D70726905616D6E6963036E657400 +am. 172800 IN NS ns-pri.amnic.net. +02616D00000200010002A300001006736E732D706203697363036F726700 +am. 172800 IN NS sns-pb.isc.org. +02616D00002B0001000151800024C7C50702F14D6ACFC410DE94D18F63A7EDC2779DE70C1D5E9AF0E0EFB4687CC3522E7F4F +am. 86400 IN DS 51141 7 2 F14D6ACFC410DE94D18F63A7EDC2779DE70C1D5E9AF0E0EFB4687CC3522E7F4F +02616D00002E0001000151800093002B08010001518052F4220052EAD97083770017C337A9C5FED702F8AECBC86783133A443EBB8CF50B88E7FCC3AC71442119EB152596FF34AD914BC0C47CBC0F54B165297D9C7FC80D3DC7F50A7663AF434CD1E5BB9B8E64DEF1810D7AE861381EBC020E631D365184FB222606B6CD026A00B4EB031F30BEFC4AFDA832FB2CA3D7FADF982ACDA066D2EDAE0031AA51CCE3778E +am. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . F8M3qcX+1wL4rsvIZ4MTOkQ+u4z1C4jn/MOscUQhGesVJZb/NK2RS8DEfLwPVLFlKX2cf8gNPcf1CnZjr0NM0eW7m45k3vGBDXroYTgevAIOYx02UYT7IiYGts0CagC06wMfML78Sv2oMvsso9f635gqzaBm0u2uADGqUczjd44= ;{id = 33655} +02616D00002E0001000151800093002F08010001518052F4220052EAD970837700AB79A7CDD13A573928405B394139391B5F0FF190FE7A8B9958AFE862AE2C29207579F5B81664C584CE7C820A0FF19F8255885A5B46D050891B99C2C5C37127C846F221A90946504AF102C72002624A4B5369644466ECA67AB1D8779664474BA280D98E7F59F04A769BA546036301F22175AAE98A9CB40846515D978A5B32DB87 +am. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . q3mnzdE6VzkoQFs5QTk5G18P8ZD+eouZWK/oYq4sKSB1efW4FmTFhM58ggoP8Z+CVYhaW0bQUIkbmcLFw3EnyEbyIakJRlBK8QLHIAJiSktTaWREZuymerHYd5ZkR0uigNmOf1nwSnabpUYDYwHyIXWq6YqctAhGUV2Xilsy24c= ;{id = 33655} +02616D00002F000100015180000C02616E000006200000000013 +am. 86400 IN NSEC an. NS DS RRSIG NSEC +02616E00000200010002A300001B02616E056363746C640761757468646E730472697065036E657400 +an. 172800 IN NS an.cctld.authdns.ripe.net. +02616E00000200010002A300000C036E7330026A61036E657400 +an. 172800 IN NS ns0.ja.net. +02616E00000200010002A300001007656E67696E653003756E6102616E00 +an. 172800 IN NS engine0.una.an. +02616E00000200010002A300001007656E67696E653203756E6102616E00 +an. 172800 IN NS engine2.una.an. +02616E00000200010002A300001007656E67696E653303756E6102616E00 +an. 172800 IN NS engine3.una.an. +02616E00000200010002A3000014076B61647573686907637572696E666F02616E00 +an. 172800 IN NS kadushi.curinfo.an. +02616E00000200010002A30000180B6E7330312D73657276657207637572696E666F02616E00 +an. 172800 IN NS ns01-server.curinfo.an. +02616E00002F000100015180000C02616F000006200000000003 +an. 86400 IN NSEC ao. NS RRSIG NSEC +02616E00002E0001000151800093002F08010001518052F4220052EAD97083770014D2D6C1C0593553C3B0BFBBD6FAAC3BD334FD52130AB0D7AD05C56AE220A9AC94F9EE911152F826BCC6C419F34A0C1928EA83ACA547E9CD33E4E47F8C3073B85E9B01EBDAC3757604C033335315B58F40A7A56C6093FABEB7A0A2F5DE3A7CC49F13028D08C6E28AA17D21D7A4909E4FCF9D216975E4D1414550EC058BC9CD99 +an. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FNLWwcBZNVPDsL+71vqsO9M0/VITCrDXrQXFauIgqayU+e6REVL4JrzGxBnzSgwZKOqDrKVH6c0z5OR/jDBzuF6bAevaw3V2BMAzM1MVtY9Ap6VsYJP6vregovXeOnzEnxMCjQjG4oqhfSHXpJCeT8+dIWl15NFBRVDsBYvJzZk= ;{id = 33655} +076B61647573686907637572696E666F02616E00000100010002A300000441D07A3F +kadushi.curinfo.an. 172800 IN A 65.208.122.63 +0B6E7330312D73657276657207637572696E666F02616E00000100010002A300000441D07A24 +ns01-server.curinfo.an. 172800 IN A 65.208.122.36 +07656E67696E653003756E6102616E00000100010002A3000004C81AC763 +engine0.una.an. 172800 IN A 200.26.199.99 +07656E67696E653203756E6102616E00000100010002A300000441AEEE64 +engine2.una.an. 172800 IN A 65.174.238.100 +07656E67696E653303756E6102616E00000100010002A3000004C81AC766 +engine3.una.an. 172800 IN A 200.26.199.102 +02616F00000200010002A300000D046E73303203646E7302616F00 +ao. 172800 IN NS ns02.dns.ao. +02616F00000200010002A300000E046E733032046663636E02707400 +ao. 172800 IN NS ns02.fccn.pt. +02616F00000200010002A300000E046E733033046663636E02707400 +ao. 172800 IN NS ns03.fccn.pt. +02616F00000200010002A300001206617574683032026E73027575036E657400 +ao. 172800 IN NS auth02.ns.uu.net. +02616F00000200010002A3000010066E732D65787403697363036F726700 +ao. 172800 IN NS ns-ext.isc.org. +02616F00000200010002A30000100670686F626F73046663636E02707400 +ao. 172800 IN NS phobos.fccn.pt. +02616F00002F000100015180000C026171000006200000000003 +ao. 86400 IN NSEC aq. NS RRSIG NSEC +02616F00002E0001000151800093002F08010001518052F4220052EAD97083770056685624B0EA7F36ED793E34286E4FE27CA70573C1B0511A81437E33549429F080F460ABAA19F56D3BF24DD2E08B994EC4959041D5321B7EAB406A0D2435C7DF031D401FD634DD6E5C4E0A08D7B6D70E4BEC4A6C5241757D0F1E2B4C7F74456B42B365F6CA382C5586D8756C5DD60DCE1F30CDD9CC1895DF63E4A1A2870F4063 +ao. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VmhWJLDqfzbteT40KG5P4nynBXPBsFEagUN+M1SUKfCA9GCrqhn1bTvyTdLgi5lOxJWQQdUyG36rQGoNJDXH3wMdQB/WNN1uXE4KCNe21w5L7EpsUkF1fQ8eK0x/dEVrQrNl9so4LFWG2HVsXdYNzh8wzdnMGJXfY+ShoocPQGM= ;{id = 33655} +046E73303203646E7302616F00000100010002A3000004C595950B +ns02.dns.ao. 172800 IN A 197.149.149.11 +046E73303203646E7302616F00001C00010002A30000102C0FF82800020000000000000000000B +ns02.dns.ao. 172800 IN AAAA 2c0f:f828:2::b +02617100000200010002A300000C036E733103646E7302617100 +aq. 172800 IN NS ns1.dns.aq. +02617100000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +aq. 172800 IN NS fork.sth.dnsnode.net. +02617100000200010002A3000011046E73393903646E73036E6574026E7A00 +aq. 172800 IN NS ns99.dns.net.nz. +02617100000200010002A300001006736E732D706203697363036F726700 +aq. 172800 IN NS sns-pb.isc.org. +02617100002F000100015180000C026172000006200000000003 +aq. 86400 IN NSEC ar. NS RRSIG NSEC +02617100002E0001000151800093002F08010001518052F4220052EAD97083770058CC1223590D0B5CF538C61BD8EBBD91E579624FDA414D0BAF2ADE9D65F0905A5856DB196E6696B27586DCC0A25C214430663EB2FA3192EDBAF47A054638EE0F47B46E96A7577CD81CB882457A012B82A9D2E2261146A4BD1557AFC261BC16EF8537B707711819C9C35F0B74A00FF801CFF15C7F8DA38E00521B651DCB818E20 +aq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WMwSI1kNC1z1OMYb2Ou9keV5Yk/aQU0LryrenWXwkFpYVtsZbmaWsnWG3MCiXCFEMGY+svoxku269HoFRjjuD0e0bpanV3zYHLiCRXoBK4Kp0uImEUakvRVXr8JhvBbvhTe3B3EYGcnDXwt0oA/4Ac/xXH+No44AUhtlHcuBjiA= ;{id = 33655} +036E733103646E7302617100000100010002A3000004CB773884 +ns1.dns.aq. 172800 IN A 203.119.56.132 +02617200000200010002A300000A016103646E7302617200 +ar. 172800 IN NS a.dns.ar. +02617200000200010002A300001B026172056363746C640761757468646E730472697065036E657400 +ar. 172800 IN NS ar.cctld.authdns.ripe.net. +02617200000200010002A300000F036E73320673776974636802636800 +ar. 172800 IN NS ns2.switch.ch. +02617200000200010002A300000A05617468656102617200 +ar. 172800 IN NS athea.ar. +02617200000200010002A300000A056374696E6102617200 +ar. 172800 IN NS ctina.ar. +02617200000200010002A30000150672656C617931056D65636F6E03676F7602617200 +ar. 172800 IN NS relay1.mecon.gov.ar. +02617200002F000100015180000E0461727061000006200000000003 +ar. 86400 IN NSEC arpa. NS RRSIG NSEC +02617200002E0001000151800093002F08010001518052F4220052EAD9708377009322567D53A3FE1916E7CA62100C04E51BD18913A378F277EAED1E0170454AEE9F8B5D35C89E04AF1185591441426C9F92ED1514F8CC4D1433B5AA52CD7FE8E28C249A3490247C0D0AFD8F1878EDB8CF9F076DD9E25B9E24A63C62435788465440FE7806B1B4974167146686EF20E014A034FFC674F6053DBC32021D54E68E7B +ar. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kyJWfVOj/hkW58piEAwE5RvRiROjePJ36u0eAXBFSu6fi101yJ4ErxGFWRRBQmyfku0VFPjMTRQztapSzX/o4owkmjSQJHwNCv2PGHjtuM+fB23Z4lueJKY8YkNXiEZUQP54BrG0l0FnFGaG7yDgFKA0/8Z09gU9vDICHVTmjns= ;{id = 33655} +05617468656102617200000100010002A3000004C8106202 +athea.ar. 172800 IN A 200.16.98.2 +056374696E6102617200000100010002A3000004C8106111 +ctina.ar. 172800 IN A 200.16.97.17 +016103646E7302617200000100010002A3000004C86C9132 +a.dns.ar. 172800 IN A 200.108.145.50 +016103646E7302617200001C00010002A300001028010140000000000000000000000010 +a.dns.ar. 172800 IN AAAA 2801:140::10 +0672656C617931056D65636F6E03676F7602617200000100010002A3000004A865100A +relay1.mecon.gov.ar. 172800 IN A 168.101.16.10 +046172706100000200010002A300001401610C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS a.root-servers.net. +046172706100000200010002A300001401620C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS b.root-servers.net. +046172706100000200010002A300001401630C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS c.root-servers.net. +046172706100000200010002A300001401640C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS d.root-servers.net. +046172706100000200010002A300001401650C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS e.root-servers.net. +046172706100000200010002A300001401660C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS f.root-servers.net. +046172706100000200010002A300001401670C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS g.root-servers.net. +046172706100000200010002A300001401680C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS h.root-servers.net. +046172706100000200010002A300001401690C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS i.root-servers.net. +046172706100000200010002A3000014016B0C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS k.root-servers.net. +046172706100000200010002A3000014016C0C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS l.root-servers.net. +046172706100000200010002A3000014016D0C726F6F742D73657276657273036E657400 +arpa. 172800 IN NS m.root-servers.net. +046172706100002B0001000151800018A6550801778606D9623F843F156E7D11ACBF815EB67AB516 +arpa. 86400 IN DS 42581 8 1 778606D9623F843F156E7D11ACBF815EB67AB516 +046172706100002B0001000151800024A6550802F28391C1ED4DC0F151EDD251A3103DCE0B9A5A251ACF6E24073771D71F3C40F9 +arpa. 86400 IN DS 42581 8 2 F28391C1ED4DC0F151EDD251A3103DCE0B9A5A251ACF6E24073771D71F3C40F9 +046172706100002E0001000151800093002B08010001518052F4220052EAD970837700962E8225624EB7CD47C1921E575C4C193E8EF52939D0FA6E616EC55724A72452B5EB421D9F5F9E44D2300B78BE966CE399410BD2350901218B785E06C9C838CB3D3ED23DC1F552984B4655C8047ED5DBBCCEC3DF8FB23390526155304696B801DA12C0E1B6D00EFA87ACE3F6F2B4ACE8FE91D205BC7626E4DB69258620B0C12F +arpa. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . li6CJWJOt81HwZIeV1xMGT6O9Sk50PpuYW7FVySnJFK160Idn1+eRNIwC3i+lmzjmUEL0jUJASGLeF4Gycg4yz0+0j3B9VKYS0ZVyAR+1du8zsPfj7IzkFJhVTBGlrgB2hLA4bbQDvqHrOP28rSs6P6R0gW8dibk22klhiCwwS8= ;{id = 33655} +046172706100002E0001000151800093002F08010001518052F4220052EAD970837700838BB5FD433020E923E05D7FC777EFB4DE396C74EECFA820FDF695DA2412C778F8DAC9B37780B058C3F109BF09FE8CDE68DB30A172C231526288A8890E61EF743EBB1F75AE6018EF5335B3C018E352D3A3DCD8390BAD39114554A9AF8AA314BD247AAD2780601D894E775EB93A42887484263C2394B0FB2908548B68C7A61824 +arpa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . g4u1/UMwIOkj4F1/x3fvtN45bHTuz6gg/faV2iQSx3j42smzd4CwWMPxCb8J/ozeaNswoXLCMVJiiKiJDmHvdD67H3WuYBjvUzWzwBjjUtOj3Ng5C605EUVUqa+KoxS9JHqtJ4BgHYlOd165OkKIdIQmPCOUsPspCFSLaMemGCQ= ;{id = 33655} +046172706100002F000100015180000C026173000006200000000013 +arpa. 86400 IN NSEC as. NS DS RRSIG NSEC +02617300000200010002A300000E03746C640467646E73036E657400 +as. 172800 IN NS tld.gdns.net. +02617300000200010002A300001304746C643108756C747261646E73036E657400 +as. 172800 IN NS tld1.ultradns.net. +02617300000200010002A300001304746C643208756C747261646E73036E657400 +as. 172800 IN NS tld2.ultradns.net. +02617300000200010002A300001304746C643308756C747261646E73036F726700 +as. 172800 IN NS tld3.ultradns.org. +02617300000200010002A300001304746C643408756C747261646E73036F726700 +as. 172800 IN NS tld4.ultradns.org. +02617300000200010002A300001404746C643508756C747261646E7304696E666F00 +as. 172800 IN NS tld5.ultradns.info. +02617300000200010002A300001504746C643608756C747261646E7302636F02756B00 +as. 172800 IN NS tld6.ultradns.co.uk. +02617300002F000100015180000E0461736961000006200000000003 +as. 86400 IN NSEC asia. NS RRSIG NSEC +02617300002E0001000151800093002F08010001518052F4220052EAD9708377007F24879943A2DE5C15F2385AFFFF5348757DDFBF70338B7C06BB207BF5F388624F9A8757199EE5D8F695E2310A27005AA35EE110BDB90359E08DE51C479404551ED9B9DF83959CF3A355992D2ABB9ED43CAA929A5F147AEBADD2569CB62740ABA7FC48A1E8CF5C6E3955E76CA0EBD9290B58520C49DEE35747A0B51C399D31C2 +as. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fySHmUOi3lwV8jha//9TSHV9379wM4t8Brsge/XziGJPmodXGZ7l2PaV4jEKJwBao17hEL25A1ngjeUcR5QEVR7Zud+DlZzzo1WZLSq7ntQ8qpKaXxR6663SVpy2J0Crp/xIoejPXG45VedsoOvZKQtYUgxJ3uNXR6C1HDmdMcI= ;{id = 33655} +046173696100000200010002A300001A02613004617369610B6166696C6961732D6E737404696E666F00 +asia. 172800 IN NS a0.asia.afilias-nst.info. +046173696100000200010002A300001A02613204617369610B6166696C6961732D6E737404696E666F00 +asia. 172800 IN NS a2.asia.afilias-nst.info. +046173696100000200010002A300001A02623004617369610B6166696C6961732D6E7374046173696100 +asia. 172800 IN NS b0.asia.afilias-nst.asia. +046173696100000200010002A300001902623204617369610B6166696C6961732D6E7374036F726700 +asia. 172800 IN NS b2.asia.afilias-nst.org. +046173696100000200010002A300001A02633004617369610B6166696C6961732D6E737404696E666F00 +asia. 172800 IN NS c0.asia.afilias-nst.info. +046173696100000200010002A300001A02643004617369610B6166696C6961732D6E7374046173696100 +asia. 172800 IN NS d0.asia.afilias-nst.asia. +046173696100002B000100015180001836420701A33A41F9B31E945CB3379FC36663887038927577 +asia. 86400 IN DS 13890 7 1 A33A41F9B31E945CB3379FC36663887038927577 +046173696100002B000100015180002436420702F7F1B03479CE200A0680158258D1B7925B0A5F273E54E6BDE742D13214DD99CB +asia. 86400 IN DS 13890 7 2 F7F1B03479CE200A0680158258D1B7925B0A5F273E54E6BDE742D13214DD99CB +046173696100002E0001000151800093002B08010001518052F4220052EAD97083770026FC2C4418A6CA8F5F1FEBC1831FFDF545F0FE1355A64F9234A52DA31CB8621A4F2D5C708DD588017CF358B97FE9C69D2B5C5EAE6E973880D35C3CF0F872DB856158CBA64B752DF7CD06AF66B18641EF8D3ECDF8EADB053D3E5581ED3A2E6419EC81C6E0F1DEC4C9DA09B8679D18255098ABBF8B0F203F34E156CAE5A2404B35 +asia. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JvwsRBimyo9fH+vBgx/99UXw/hNVpk+SNKUtoxy4YhpPLVxwjdWIAXzzWLl/6cadK1xerm6XOIDTXDzw+HLbhWFYy6ZLdS33zQavZrGGQe+NPs346tsFPT5Vge06LmQZ7IHG4PHexMnaCbhnnRglUJirv4sPID804VbK5aJASzU= ;{id = 33655} +046173696100002E0001000151800093002F08010001518052F4220052EAD97083770091832B683632E60743277E5E9CF360C3B15362273E792B5568DB7FD25F8200795A1C55CC2CCB55ED03EA62B4587227D332B0DD9AAB58A32664EDBDC1815A58E66B5B75AB0AA36ACB6D12FE91BC3322D76E435544F4792A872CC2152A91739DA0E9F6B8CF40508E8BA3489C55D8B6233CBE40E29A833DCC488417CE19C6B83025 +asia. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kYMraDYy5gdDJ35enPNgw7FTYic+eStVaNt/0l+CAHlaHFXMLMtV7QPqYrRYcifTMrDdmqtYoyZk7b3BgVpY5mtbdasKo2rLbRL+kbwzItduQ1VE9HkqhyzCFSqRc52g6fa4z0BQjoujSJxV2LYjPL5A4pqDPcxIhBfOGca4MCU= ;{id = 33655} +046173696100002F000100015180000C026174000006200000000013 +asia. 86400 IN NSEC at. NS DS RRSIG NSEC +02623004617369610B6166696C6961732D6E7374046173696100000100010002A3000004C7FE1C01 +b0.asia.afilias-nst.asia. 172800 IN A 199.254.28.1 +02623004617369610B6166696C6961732D6E7374046173696100001C00010002A300001020010500001600000000000000000001 +b0.asia.afilias-nst.asia. 172800 IN AAAA 2001:500:16::1 +02643004617369610B6166696C6961732D6E7374046173696100000100010002A3000004C7FE1E01 +d0.asia.afilias-nst.asia. 172800 IN A 199.254.30.1 +02643004617369610B6166696C6961732D6E7374046173696100001C00010002A300001020010500001800000000000000000001 +d0.asia.afilias-nst.asia. 172800 IN AAAA 2001:500:18::1 +02617400002F000100015180000C026175000006200000000013 +at. 86400 IN NSEC au. NS DS RRSIG NSEC +02617400002E0001000151800093002F08010001518052F4220052EAD97083770071D02A20905CA09297D59A4ED91B9B1172FDC14FAA57158C0E1089BBC8BEBDE8F0B29015188F08DA27F25DC168A92F869D75867EE9B1133B50AE1C4269AD79FE0F74FC054D2AAEB5D7FE136E44CCF1821DC3EA05A4CD4475564E2D44ECF55F4D91AA9AD501432B1113D03035C6874E8896376EE34D1EE1ECC2461AE54DA7BF56 +at. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cdAqIJBcoJKX1ZpO2RubEXL9wU+qVxWMDhCJu8i+vejwspAVGI8I2ifyXcFoqS+GnXWGfumxEztQrhxCaa15/g90/AVNKq611/4TbkTM8YIdw+oFpM1EdVZOLUTs9V9Nkaqa1QFDKxET0DA1xodOiJY3buNNHuHswkYa5U2nv1Y= ;{id = 33655} +02617400002E0001000151800093002B08010001518052F4220052EAD97083770035DEC08B444280D0D6EBD4DADEEA15E61C2A32DFCDC7B00222E44CFC3E30DE8D294CAF8CD71FBEEC7891127B5F6682919438BC273B119D86EEEA8F61421FEADA1F3494F01ED6AF801690B1866D3DC51C5BE7882168E9AF365F277777FD9BBBBC60F1AA35F06538F3C17B16158124019A5188975E628571B59CB234F53F043562 +at. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Nd7Ai0RCgNDW69Ta3uoV5hwqMt/Nx7ACIuRM/D4w3o0pTK+M1x++7HiREntfZoKRlDi8JzsRnYbu6o9hQh/q2h80lPAe1q+AFpCxhm09xRxb54ghaOmvNl8nd3f9m7u8YPGqNfBlOPPBexYVgSQBmlGIl15ihXG1nLI09T8ENWI= ;{id = 33655} +02617400000200010002A30000090164026E7302617400 +at. 172800 IN NS d.ns.at. +02617400000200010002A3000009016A026E7302617400 +at. 172800 IN NS j.ns.at. +02617400000200010002A3000009016E026E7302617400 +at. 172800 IN NS n.ns.at. +02617400000200010002A30000090172026E7302617400 +at. 172800 IN NS r.ns.at. +02617400000200010002A30000090175026E7302617400 +at. 172800 IN NS u.ns.at. +02617400000200010002A3000012036E733106756E6976696502616302617400 +at. 172800 IN NS ns1.univie.ac.at. +02617400000200010002A3000012036E733206756E6976696502616302617400 +at. 172800 IN NS ns2.univie.ac.at. +02617400000200010002A3000012036E733906756E6976696502616302617400 +at. 172800 IN NS ns9.univie.ac.at. +02617400002B0001000151800024DCA908022E48D4AAE2F5D5022F156516846803A58F3B2F8A854AAD238EC766DE6AD98AF2 +at. 86400 IN DS 56489 8 2 2E48D4AAE2F5D5022F156516846803A58F3B2F8A854AAD238EC766DE6AD98AF2 +02617400002B0001000151800024EDA408026BB14AC9AB00B37AFE0BB5570048DFD13B16C8BF3512846C627CE560F026CE39 +at. 86400 IN DS 60836 8 2 6BB14AC9AB00B37AFE0BB5570048DFD13B16C8BF3512846C627CE560F026CE39 +036E733106756E6976696502616302617400000100010002A30000044E689002 +ns1.univie.ac.at. 172800 IN A 78.104.144.2 +036E733106756E6976696502616302617400001C00010002A300001020010628203043010000000000000002 +ns1.univie.ac.at. 172800 IN AAAA 2001:628:2030:4301::2 +036E733206756E6976696502616302617400000100010002A3000004C05C7D02 +ns2.univie.ac.at. 172800 IN A 192.92.125.2 +036E733206756E6976696502616302617400001C00010002A300001020010678001C00000000000000000002 +ns2.univie.ac.at. 172800 IN AAAA 2001:678:1c::2 +036E733506756E6976696502616302617400000100010002A3000004C1ABFF4D +ns5.univie.ac.at. 172800 IN A 193.171.255.77 +036E733506756E6976696502616302617400001C00010002A300001020010628045343050000000000000053 +ns5.univie.ac.at. 172800 IN AAAA 2001:628:453:4305::53 +036E733906756E6976696502616302617400000100010002A3000004C2000A64 +ns9.univie.ac.at. 172800 IN A 194.0.10.100 +036E733906756E6976696502616302617400001C00010002A300001020010678000D0000000000000000CAFE +ns9.univie.ac.at. 172800 IN AAAA 2001:678:d::cafe +0164026E7302617400000100010002A3000004515BA162 +d.ns.at. 172800 IN A 81.91.161.98 +0164026E7302617400001C00010002A30000102A02056800200001000000000000000D +d.ns.at. 172800 IN AAAA 2a02:568:20:1::d +016A026E7302617400000100010002A3000004C2926A32 +j.ns.at. 172800 IN A 194.146.106.50 +016A026E7302617400001C00010002A30000102001067C101000120000000000000053 +j.ns.at. 172800 IN AAAA 2001:67c:1010:12::53 +016E026E7302617400000100010002A3000004515BAD82 +n.ns.at. 172800 IN A 81.91.173.130 +0172026E7302617400000100010002A3000004C200190A +r.ns.at. 172800 IN A 194.0.25.10 +0172026E7302617400001C00010002A300001020010678002000000000000000000010 +r.ns.at. 172800 IN AAAA 2001:678:20::10 +0175026E7302617400000100010002A3000004C342F152 +u.ns.at. 172800 IN A 195.66.241.82 +02617500002F000100015180000C026177000006200000000003 +au. 86400 IN NSEC aw. NS RRSIG NSEC +02617500002E0001000151800093002F08010001518052F4220052EAD9708377006D61315111C3E31FB10CECB64B477BEB5CFBF040CF34369A5B2465C7A817941E502A44BF1C83A51CEB9273CF8D35B9BCA9BC331709B17C56FC9FC984565CDA8AD44225AFC1871F23EBBED577CB0859D95CDCF102F32295FF82377ECB3D99FF19E75E8E946DBE2E95F6E9D5A9C1726B9C34AA204B31394F0070955B85B68F3BAD +au. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bWExURHD4x+xDOy2S0d761z78EDPNDaaWyRlx6gXlB5QKkS/HIOlHOuSc8+NNbm8qbwzFwmxfFb8n8mEVlzaitRCJa/Bhx8j677Vd8sIWdlc3PEC8yKV/4I3fss9mf8Z516OlG2+LpX26dWpwXJrnDSqIEsxOU8AcJVbhbaPO60= ;{id = 33655} +02617500000200010002A3000006016102617500 +au. 172800 IN NS a.au. +02617500000200010002A3000006016202617500 +au. 172800 IN NS b.au. +02617500000200010002A3000006017202617500 +au. 172800 IN NS r.au. +02617500000200010002A3000006017302617500 +au. 172800 IN NS s.au. +02617500000200010002A3000006017502617500 +au. 172800 IN NS u.au. +02617500000200010002A3000006017602617500 +au. 172800 IN NS v.au. +02617500000200010002A3000006017702617500 +au. 172800 IN NS w.au. +02617500000200010002A3000006017802617500 +au. 172800 IN NS x.au. +02617500000200010002A3000006017902617500 +au. 172800 IN NS y.au. +02617500000200010002A3000006017A02617500 +au. 172800 IN NS z.au. +016102617500000100010002A30000043A41FE49 +a.au. 172800 IN A 58.65.254.73 +016102617500001C00010002A300001024076E00025403060000000000000073 +a.au. 172800 IN AAAA 2407:6e00:254:306::73 +016202617500000100010002A30000043A41FD49 +b.au. 172800 IN A 58.65.253.73 +016202617500001C00010002A300001024076E00025303060000000000000073 +b.au. 172800 IN AAAA 2407:6e00:253:306::73 +0779617272696E6107636F6E6E65637403636F6D02617500000100010002A3000004C0BD3611 +yarrina.connect.com.au. 172800 IN A 192.189.54.17 +056363746C6405616C70686106617269646E73036E657402617500000100010002A300000425D1C006 +cctld.alpha.aridns.net.au. 172800 IN A 37.209.192.6 +056363746C6405616C70686106617269646E73036E657402617500001C00010002A300001020010DCD000100000000000000000006 +cctld.alpha.aridns.net.au. 172800 IN AAAA 2001:dcd:1::6 +0664656D616E6405616C70686106617269646E73036E657402617500000100010002A300000425D1C007 +demand.alpha.aridns.net.au. 172800 IN A 37.209.192.7 +0664656D616E6405616C70686106617269646E73036E657402617500001C00010002A300001020010DCD000100000000000000000007 +demand.alpha.aridns.net.au. 172800 IN AAAA 2001:dcd:1::7 +056363746C64046265746106617269646E73036E657402617500000100010002A300000425D1C206 +cctld.beta.aridns.net.au. 172800 IN A 37.209.194.6 +056363746C64046265746106617269646E73036E657402617500001C00010002A300001020010DCD000200000000000000000006 +cctld.beta.aridns.net.au. 172800 IN AAAA 2001:dcd:2::6 +0664656D616E64046265746106617269646E73036E657402617500000100010002A300000425D1C207 +demand.beta.aridns.net.au. 172800 IN A 37.209.194.7 +0664656D616E64046265746106617269646E73036E657402617500001C00010002A300001020010DCD000200000000000000000007 +demand.beta.aridns.net.au. 172800 IN AAAA 2001:dcd:2::7 +056363746C640564656C746106617269646E73036E657402617500000100010002A300000425D1C606 +cctld.delta.aridns.net.au. 172800 IN A 37.209.198.6 +056363746C640564656C746106617269646E73036E657402617500001C00010002A300001020010DCD000400000000000000000006 +cctld.delta.aridns.net.au. 172800 IN AAAA 2001:dcd:4::6 +0664656D616E640564656C746106617269646E73036E657402617500000100010002A300000425D1C607 +demand.delta.aridns.net.au. 172800 IN A 37.209.198.7 +0664656D616E640564656C746106617269646E73036E657402617500001C00010002A300001020010DCD000400000000000000000007 +demand.delta.aridns.net.au. 172800 IN AAAA 2001:dcd:4::7 +056363746C640567616D6D6106617269646E73036E657402617500000100010002A300000425D1C406 +cctld.gamma.aridns.net.au. 172800 IN A 37.209.196.6 +056363746C640567616D6D6106617269646E73036E657402617500001C00010002A300001020010DCD000300000000000000000006 +cctld.gamma.aridns.net.au. 172800 IN AAAA 2001:dcd:3::6 +0664656D616E640567616D6D6106617269646E73036E657402617500000100010002A300000425D1C407 +demand.gamma.aridns.net.au. 172800 IN A 37.209.196.7 +0664656D616E640567616D6D6106617269646E73036E657402617500001C00010002A300001020010DCD000300000000000000000007 +demand.gamma.aridns.net.au. 172800 IN AAAA 2001:dcd:3::7 +076D756E6E617269026F7A02617500000100010002A3000004CA1D9703 +munnari.oz.au. 172800 IN A 202.29.151.3 +076D756E6E617269026F7A02617500001C00010002A3000010200103C8900700010000000000000021 +munnari.oz.au. 172800 IN AAAA 2001:3c8:9007:1::21 +076D756E6E617269026F7A02617500001C00010002A3000010200103C8900901810000000000000002 +munnari.oz.au. 172800 IN AAAA 2001:3c8:9009:181::2 +017202617500000100010002A300000480208803 +r.au. 172800 IN A 128.32.136.3 +017202617500001C00010002A30000102607F140FFFFFFFE0000000000000003 +r.au. 172800 IN AAAA 2607:f140:ffff:fffe::3 +017302617500000100010002A30000048020880E +s.au. 172800 IN A 128.32.136.14 +017302617500001C00010002A30000102607F140FFFFFFFE000000000000000E +s.au. 172800 IN AAAA 2607:f140:ffff:fffe::e +017502617500000100010002A3000004D31D8520 +u.au. 172800 IN A 211.29.133.32 +017602617500000100010002A3000004CA0C1F8D +v.au. 172800 IN A 202.12.31.141 +017602617500001C00010002A300001020010DC0400100010000183600000141 +v.au. 172800 IN AAAA 2001:dc0:4001:1:0:1836:0:141 +017702617500000100010002A300000425D1C005 +w.au. 172800 IN A 37.209.192.5 +017702617500001C00010002A300001020010DCD000100000000000000000005 +w.au. 172800 IN AAAA 2001:dcd:1::5 +017802617500000100010002A300000425D1C205 +x.au. 172800 IN A 37.209.194.5 +017802617500001C00010002A300001020010DCD000200000000000000000005 +x.au. 172800 IN AAAA 2001:dcd:2::5 +017902617500000100010002A300000425D1C405 +y.au. 172800 IN A 37.209.196.5 +017902617500001C00010002A300001020010DCD000300000000000000000005 +y.au. 172800 IN AAAA 2001:dcd:3::5 +017A02617500000100010002A300000425D1C605 +z.au. 172800 IN A 37.209.198.5 +017A02617500001C00010002A300001020010DCD000400000000000000000005 +z.au. 172800 IN AAAA 2001:dcd:4::5 +02617700000200010002A3000011036E73310873657461726E657402617700 +aw. 172800 IN NS ns1.setarnet.aw. +02617700000200010002A3000011036E73320873657461726E657402617700 +aw. 172800 IN NS ns2.setarnet.aw. +02617700000200010002A30000140A6E732D61772D65787431047369646E026E6C00 +aw. 172800 IN NS ns-aw-ext1.sidn.nl. +02617700002F000100015180000C026178000006200000000003 +aw. 86400 IN NSEC ax. NS RRSIG NSEC +02617700002E0001000151800093002F08010001518052F4220052EAD9708377002E366B1BC318F12D72DB967ED8202C7AE5FAE4DEF7574326C75CC44E2AD3DEA8395D2D43F2659824964873B7665C6A8742C33B8646DFADAE1DAF080D321EA7AAB16C975BF362A072DF76077BE2F0DB597E2C659206178321A0BEC6425FC028DBAE0F626722C6ACF011EC200C7B4ABD8286B95B4F4E19B58D6E763958295D9F2A +aw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LjZrG8MY8S1y25Z+2CAseuX65N73V0Mmx1zETirT3qg5XS1D8mWYJJZIc7dmXGqHQsM7hkbfra4drwgNMh6nqrFsl1vzYqBy33YHe+Lw21l+LGWSBheDIaC+xkJfwCjbrg9iZyLGrPAR7CAMe0q9goa5W09OGbWNbnY5WCldnyo= ;{id = 33655} +036E73310873657461726E657402617700000100010002A3000004D1588019 +ns1.setarnet.aw. 172800 IN A 209.88.128.25 +036E73320873657461726E657402617700000100010002A3000004D158801A +ns2.setarnet.aw. 172800 IN A 209.88.128.26 +02617800000200010002A3000010036E73310661616C6E6574036E657400 +ax. 172800 IN NS ns1.aalnet.net. +02617800000200010002A3000010036E73320661616C6E6574036E657400 +ax. 172800 IN NS ns2.aalnet.net. +02617800000200010002A3000010036E73330661616C6E6574036E657400 +ax. 172800 IN NS ns3.aalnet.net. +02617800002F000100015180000C02617A000006200000000003 +ax. 86400 IN NSEC az. NS RRSIG NSEC +02617800002E0001000151800093002F08010001518052F4220052EAD9708377009D94C2403FA9574730484E969565E31850C16D531F85EBF07A21F6F933175116BA98945FB3C3F926190E0E7E1DE144E212DDDD044303355F42A7C29FD898A419E37856E213FD943CB4422568E26C04144997775BBDF25EB02E95B29A75183B809642BCA2AB27169C8A52DE2D1FA4D859F79974E8EE939314006FE9E34B2BB9F5 +ax. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nZTCQD+pV0cwSE6WlWXjGFDBbVMfhevweiH2+TMXURa6mJRfs8P5JhkODn4d4UTiEt3dBEMDNV9Cp8Kf2JikGeN4VuIT/ZQ8tEIlaOJsBBRJl3dbvfJesC6Vspp1GDuAlkK8oqsnFpyKUt4tH6TYWfeZdOjuk5MUAG/p40srufU= ;{id = 33655} +02617A00000200010002A300001202617A0A686F73746D617374657202756100 +az. 172800 IN NS az.hostmaster.ua. +02617A00000200010002A300000D026E730564656D6F7302737500 +az. 172800 IN NS ns.demos.su. +02617A00000200010002A300000D037269700370736703636F6D00 +az. 172800 IN NS rip.psg.com. +02617A00002F000100015180000C026261000006200000000003 +az. 86400 IN NSEC ba. NS RRSIG NSEC +02617A00002E0001000151800093002F08010001518052F4220052EAD9708377001D0A289AEE33DC6DA22F56EDB1DF6AE12D8E945DA86B352BAE7DF5204E3BB46FF8DF941F695C49B47B092DAF66028C6DDF8F7BEE1FCB445710D63255D80274817BC507C1B756B024739033427E160A8063A96C84CC47499E346CCB77C95DB2F796DCE7B0BAD06AB86CD9D8AD2F43282BDA1F030C08C22BC778BC94FEE36075EB +az. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HQoomu4z3G2iL1btsd9q4S2OlF2oazUrrn31IE47tG/435QfaVxJtHsJLa9mAoxt34977h/LRFcQ1jJV2AJ0gXvFB8G3VrAkc5AzQn4WCoBjqWyEzEdJnjRsy3fJXbL3ltznsLrQarhs2ditL0MoK9ofAwwIwivHeLyU/uNgdes= ;{id = 33655} +02626100000200010002A300001B026261056363746C640761757468646E730472697065036E657400 +ba. 172800 IN NS ba.cctld.authdns.ripe.net. +02626100000200010002A3000007026E7302626100 +ba. 172800 IN NS ns.ba. +02626100000200010002A300001204736176610475746963036E657402626100 +ba. 172800 IN NS sava.utic.net.ba. +02626100000200010002A300001206617574683033026E73027575036E657400 +ba. 172800 IN NS auth03.ns.uu.net. +02626100000200010002A300000F076D756E6E617269026F7A02617500 +ba. 172800 IN NS munnari.oz.au. +02626100002F0001000151800012086261726761696E73000006200000000003 +ba. 86400 IN NSEC bargains. NS RRSIG NSEC +02626100002E0001000151800093002F08010001518052F4220052EAD970837700544B506472DD8E817113E5959868D90ACB0FB15183A4D7193DD75914ABF77164A30CAD154180E71D8B3B29D8B1E4D5470A32DF43EBEF91886D637421F6F2018E60D9D3E9F1255EEAC29E714C9886006FE2ABB79283DFABC2908EEDD8780B01F73E81DCAFEEE27722E7B2886718F2B6A81CF48D68CD28BCBC1956ADDD45E2B87B +ba. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VEtQZHLdjoFxE+WVmGjZCssPsVGDpNcZPddZFKv3cWSjDK0VQYDnHYs7Kdix5NVHCjLfQ+vvkYhtY3Qh9vIBjmDZ0+nxJV7qwp5xTJiGAG/iq7eSg9+rwpCO7dh4CwH3PoHcr+7idyLnsohnGPK2qBz0jWjNKLy8GVat3UXiuHs= ;{id = 33655} +04736176610475746963036E657402626100000100010002A3000004C3822303 +sava.utic.net.ba. 172800 IN A 195.130.35.3 +026E7302626100000100010002A3000004C3822305 +ns.ba. 172800 IN A 195.130.35.5 +086261726761696E7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +bargains. 172800 IN NS demand.beta.aridns.net.au. +086261726761696E7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +bargains. 172800 IN NS demand.alpha.aridns.net.au. +086261726761696E7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +bargains. 172800 IN NS demand.delta.aridns.net.au. +086261726761696E7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +bargains. 172800 IN NS demand.gamma.aridns.net.au. +086261726761696E7300002B0001000151800024FC460802B5B3BD40B9913CE466F392BE4F1E72316690BE19FD9E1E850CA3380DF1BCF7A2 +bargains. 86400 IN DS 64582 8 2 B5B3BD40B9913CE466F392BE4F1E72316690BE19FD9E1E850CA3380DF1BCF7A2 +086261726761696E7300002E0001000151800093002B08010001518052F4220052EAD9708377004EEFDEA97A81B556483795FC4B93E33A171664317C949F82D6E198DF5551996F8D9DB278C62D1CD4F1370BB835179FF3E335917A921DBB13BF8C142827C45112725283689C26F89D91D7580645EF72EFE9A8F8C1C73ED399BD9870255EE94ABDE24020E4238A506F92ED4FB1BB6E3A5BEB05B3C5433B82C8F21846E99AF9A894 +bargains. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Tu/eqXqBtVZIN5X8S5PjOhcWZDF8lJ+C1uGY31VRmW+NnbJ4xi0c1PE3C7g1F5/z4zWRepIduxO/jBQoJ8RREnJSg2icJvidkddYBkXvcu/pqPjBxz7Tmb2YcCVe6Uq94kAg5COKUG+S7U+xu246W+sFs8VDO4LI8hhG6Zr5qJQ= ;{id = 33655} +086261726761696E7300002E0001000151800093002F08010001518052F4220052EAD9708377004A8A627DE36845D2D415D95B47A93E64867AA0B8A11F61179E6A0932F3D9D70BEDD49B71DDF60CB799584D7EC145DEB208AA597622FE52C808FFC302CDD5C811C7E65C4484E4C6127ADBB6CDFD5CC06E7CBE765F5F478C52CF8DB06BBBEB06346CABE6CCD41B20A8FAC5DE678463F40AEC2705A1EAE5D1B9D2C8D7392CAB0ED4 +bargains. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SopifeNoRdLUFdlbR6k+ZIZ6oLihH2EXnmoJMvPZ1wvt1Jtx3fYMt5lYTX7BRd6yCKpZdiL+UsgI/8MCzdXIEcfmXESE5MYSetu2zf1cwG58vnZfX0eMUs+NsGu76wY0bKvmzNQbIKj6xd5nhGP0CuwnBaHq5dG50sjXOSyrDtQ= ;{id = 33655} +086261726761696E7300002F000100015180000C026262000006200000000013 +bargains. 86400 IN NSEC bb. NS DS RRSIG NSEC +02626200000200010002A3000018036E73310E6261726261646F73646F6D61696E036E657400 +bb. 172800 IN NS ns1.barbadosdomain.net. +02626200000200010002A3000018036E73320E6261726261646F73646F6D61696E036E657400 +bb. 172800 IN NS ns2.barbadosdomain.net. +02626200002F000100015180000C026264000006200000000003 +bb. 86400 IN NSEC bd. NS RRSIG NSEC +02626200002E0001000151800093002F08010001518052F4220052EAD9708377008F53EEB344A050CEC35AF3F6B5639F84E8FD6545FD66A212B5483EAE49D348E67DDF530C4141B17E5925DE242FA3A3C340AF0D66A6793EBEEFAC334009D9FAFAC9FF93C055FF9F5DB5937CF22719F4D63DB0C2A7B0E15F97734743A648720F92AFE5386B092F1F2856837FCFFF2E512702AD09354FDDE3BE9D2AB220AF4A8918 +bb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . j1Pus0SgUM7DWvP2tWOfhOj9ZUX9ZqIStUg+rknTSOZ931MMQUGxflkl3iQvo6PDQK8NZqZ5Pr7vrDNACdn6+sn/k8BV/59dtZN88icZ9NY9sMKnsOFfl3NHQ6ZIcg+Sr+U4awkvHyhWg3/P/y5RJwKtCTVP3eO+nSqyIK9KiRg= ;{id = 33655} +02626400000200010002A300000803646E7302626400 +bd. 172800 IN NS dns.bd. +02626400000200010002A3000013057375726D61046274636C036E657402626400 +bd. 172800 IN NS surma.btcl.net.bd. +02626400000200010002A3000014066A616D756E61046274636C036E657402626400 +bd. 172800 IN NS jamuna.btcl.net.bd. +02626400002F000100015180000C026265000006200000000003 +bd. 86400 IN NSEC be. NS RRSIG NSEC +02626400002E0001000151800093002F08010001518052F4220052EAD97083770059C8E4193CC0D9C66CC2DF1503C4C76AFD91EB2CE93BAE48E5DE263522CCCE7D96A312D26290F8F39DDC12D73EDC8FDA7AFC71F5D61DBD06980B90FD7E2167F4A731B03A96748290C03AFE805C8CE190EDDF72F022B8D9BB7B655DA83E5C36B73D08BB3E704032D836BEF5AE60DC6BF631896BB4683BA331AD25697F88851AB3 +bd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WcjkGTzA2cZswt8VA8THav2R6yzpO65I5d4mNSLMzn2WoxLSYpD4853cEtc+3I/aevxx9dYdvQaYC5D9fiFn9KcxsDqWdIKQwDr+gFyM4ZDt33LwIrjZu3tlXag+XDa3PQi7PnBAMtg2vvWuYNxr9jGJa7RoO6MxrSVpf4iFGrM= ;{id = 33655} +03646E7302626400000100010002A3000004D13A1803 +dns.bd. 172800 IN A 209.58.24.3 +066A616D756E61046274636C036E657402626400000100010002A3000004CB70C2E7 +jamuna.btcl.net.bd. 172800 IN A 203.112.194.231 +057375726D61046274636C036E657402626400000100010002A3000004CB70C2E8 +surma.btcl.net.bd. 172800 IN A 203.112.194.232 +02626500000200010002A300000D0161026E7303646E7302626500 +be. 172800 IN NS a.ns.dns.be. +02626500000200010002A300000D0162026E7303646E7302626500 +be. 172800 IN NS b.ns.dns.be. +02626500000200010002A300000D0163026E7303646E7302626500 +be. 172800 IN NS c.ns.dns.be. +02626500000200010002A300000D0164026E7303646E7302626500 +be. 172800 IN NS d.ns.dns.be. +02626500000200010002A300000D0178026E7303646E7302626500 +be. 172800 IN NS x.ns.dns.be. +02626500000200010002A300000D0179026E7303646E7302626500 +be. 172800 IN NS y.ns.dns.be. +02626500002B00010001518000183178080159462E9CB5520A36DD248D9DDC4EAA44672A5ED1 +be. 86400 IN DS 12664 8 1 59462E9CB5520A36DD248D9DDC4EAA44672A5ED1 +02626500002B00010001518000243178080275141E9B1188A95A7A855BF47E278A742A5E3F2DDEED8E995D749D48F2F0E72D +be. 86400 IN DS 12664 8 2 75141E9B1188A95A7A855BF47E278A742A5E3F2DDEED8E995D749D48F2F0E72D +02626500002B0001000151800018412C08018BD0806315E077B56D3D0E235727F31D8CB9BF3C +be. 86400 IN DS 16684 8 1 8BD0806315E077B56D3D0E235727F31D8CB9BF3C +02626500002B0001000151800024412C08027EF0A483A7A96FCECF3D9067828BAF7F3DF22C3276671C2E88AA4636FD259F34 +be. 86400 IN DS 16684 8 2 7EF0A483A7A96FCECF3D9067828BAF7F3DF22C3276671C2E88AA4636FD259F34 +02626500002E0001000151800093002B08010001518052F4220052EAD970837700BD77E92C6B5BB8D00EF9FD24CB111A0E1629094927B715F6FADADD840003B99F50DCEC8AE5448C4E67E46C81E45FCAD2A7E244D231945296A4A3DADEE1FCA32D42C96B9C63CEBA0B52CCA16D6C63105E0F2F1632E753E5AF9338C21E8DD701FAFD0F31AFB0D36872232712477B81055FFB80299ED687113F672985EFAE9C688A +be. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vXfpLGtbuNAO+f0kyxEaDhYpCUkntxX2+trdhAADuZ9Q3OyK5USMTmfkbIHkX8rSp+JE0jGUUpako9re4fyjLULJa5xjzroLUsyhbWxjEF4PLxYy51Plr5M4wh6N1wH6/Q8xr7DTaHIjJxJHe4EFX/uAKZ7WhxE/ZymF766caIo= ;{id = 33655} +02626500002E0001000151800093002F08010001518052F4220052EAD9708377004981773FC1FE94D0E19812A056A410FCCF52A0FE75B6D0DE3F363F6E37CE13DCE5C301AB2965741E417F3311E6D34756CBD5AFB370116AB8AAB252F0E259F47950EEBA3327E3EACE0A93FBA48BA8FA9BC14E819EE28A2DD4D49A37E6985C2EFB7DDCF7D2DCCC2B1BC88559159A401CE66D0E5A6555F39D283E87D416B1A630CA +be. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SYF3P8H+lNDhmBKgVqQQ/M9SoP51ttDePzY/bjfOE9zlwwGrKWV0HkF/MxHm00dWy9Wvs3ARariqslLw4ln0eVDuujMn4+rOCpP7pIuo+pvBToGe4oot1NSaN+aYXC77fdz30tzMKxvIhVkVmkAc5m0OWmVV850oPofUFrGmMMo= ;{id = 33655} +02626500002F0001000151800010066265726C696E000006200000000013 +be. 86400 IN NSEC berlin. NS DS RRSIG NSEC +0161026E7303646E7302626500000100010002A3000004C2000601 +a.ns.dns.be. 172800 IN A 194.0.6.1 +0161026E7303646E7302626500001C00010002A300001020010678000900000000000000000001 +a.ns.dns.be. 172800 IN AAAA 2001:678:9::1 +0162026E7303646E7302626500000100010002A3000004C2002501 +b.ns.dns.be. 172800 IN A 194.0.37.1 +0162026E7303646E7302626500001C00010002A300001020010678006400000000000000000001 +b.ns.dns.be. 172800 IN AAAA 2001:678:64::1 +0163026E7303646E7302626500000100010002A3000004C2002B01 +c.ns.dns.be. 172800 IN A 194.0.43.1 +0163026E7303646E7302626500001C00010002A300001020010678006800000000000000000001 +c.ns.dns.be. 172800 IN AAAA 2001:678:68::1 +0164026E7303646E7302626500000100010002A3000004C2002C01 +d.ns.dns.be. 172800 IN A 194.0.44.1 +0164026E7303646E7302626500001C00010002A300001020010678006C00000000000000000001 +d.ns.dns.be. 172800 IN AAAA 2001:678:6c::1 +0178026E7303646E7302626500000100010002A3000004C200010A +x.ns.dns.be. 172800 IN A 194.0.1.10 +0178026E7303646E7302626500001C00010002A30000102001067800040000000000000000000A +x.ns.dns.be. 172800 IN AAAA 2001:678:4::a +0179026E7303646E7302626500000100010002A3000004781DFD08 +y.ns.dns.be. 172800 IN A 120.29.253.8 +0179026E7303646E7302626500001C00010002A300001020010DCD000700000000000000000008 +y.ns.dns.be. 172800 IN AAAA 2001:dcd:7::8 +066265726C696E00000200010002A3000012016103646E73036E6963066265726C696E00 +berlin. 172800 IN NS a.dns.nic.berlin. +066265726C696E00000200010002A3000012016203646E73036E6963066265726C696E00 +berlin. 172800 IN NS b.dns.nic.berlin. +066265726C696E00000200010002A3000012016303646E73036E6963066265726C696E00 +berlin. 172800 IN NS c.dns.nic.berlin. +066265726C696E00002B0001000151800018289A080141B409894CD48EBBD0877427D5320C92ED2879DD +berlin. 86400 IN DS 10394 8 1 41B409894CD48EBBD0877427D5320C92ED2879DD +066265726C696E00002B0001000151800024289A0802B0D792359CB13AB1093CFA9D3754EC6933CAE2B2335A257017BDF63BCB682564 +berlin. 86400 IN DS 10394 8 2 B0D792359CB13AB1093CFA9D3754EC6933CAE2B2335A257017BDF63BCB682564 +066265726C696E00002B00010001518000183B9B080177F489BD4EA570DF28EA5AE752798AACC900C547 +berlin. 86400 IN DS 15259 8 1 77F489BD4EA570DF28EA5AE752798AACC900C547 +066265726C696E00002B00010001518000243B9B0802D7B794C41E4F2FFB19B22E307B7D5314C8665A0C77464A471305AC32FC0BDAF3 +berlin. 86400 IN DS 15259 8 2 D7B794C41E4F2FFB19B22E307B7D5314C8665A0C77464A471305AC32FC0BDAF3 +066265726C696E00002E0001000151800093002B08010001518052F4220052EAD97083770020CBD47BE3B2543F1C85A8434DF16F0ACA7F6974970BEE87F156E8556FC0D44DBB45B6B23EFEE6AB9242AD72AD95582768F7BF7984A2FE6951434C2EE43A426EB077484920B0BD7EC14E738318481E8DC10445F05A66497BD3964139FEAE1C5DF46639F8F2E8F2677F671C98EA040CEF3470D04BC052DD96CC1860DDEF0F50AD +berlin. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IMvUe+OyVD8chahDTfFvCsp/aXSXC+6H8VboVW/A1E27RbayPv7mq5JCrXKtlVgnaPe/eYSi/mlRQ0wu5DpCbrB3SEkgsL1+wU5zgxhIHo3BBEXwWmZJe9OWQTn+rhxd9GY5+PLo8md/ZxyY6gQM7zRw0EvAUt2WzBhg3e8PUK0= ;{id = 33655} +066265726C696E00002E0001000151800093002F08010001518052F4220052EAD9708377009FBBFD741BA793E07404B33C546F2CC14F076FE7B56ED7C19E464A67C79C70AC57BC51077B2812AB9A73C092769B52D56FFFE7CB692ADEAB33D10B35BC611868519CC4E884444F388A4391F793AD3A5163B97EBF278EF658C52E492B3D170E0F942189F13BCBF8EA610F74B281FE9AE382BE3C077205949AF1EAA3E380D2AC8E +berlin. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n7v9dBunk+B0BLM8VG8swU8Hb+e1btfBnkZKZ8eccKxXvFEHeygSq5pzwJJ2m1LVb//ny2kq3qsz0Qs1vGEYaFGcxOiERE84ikOR95OtOlFjuX6/J472WMUuSSs9Fw4PlCGJ8TvL+OphD3Sygf6a44K+PAdyBZSa8eqj44DSrI4= ;{id = 33655} +066265726C696E00002F000100015180000C026266000006200000000013 +berlin. 86400 IN NSEC bf. NS DS RRSIG NSEC +016103646E73036E6963066265726C696E00000100010002A3000004C2001910 +a.dns.nic.berlin. 172800 IN A 194.0.25.16 +016103646E73036E6963066265726C696E00001C00010002A300001020010678002000000000000000000016 +a.dns.nic.berlin. 172800 IN AAAA 2001:678:20::16 +016203646E73036E6963066265726C696E00000100010002A3000004C1AA3D05 +b.dns.nic.berlin. 172800 IN A 193.170.61.5 +016203646E73036E6963066265726C696E00001C00010002A30000102001062A000A20000000000000000005 +b.dns.nic.berlin. 172800 IN AAAA 2001:62a:a:2000::5 +016303646E73036E6963066265726C696E00000100010002A3000004C1AABB05 +c.dns.nic.berlin. 172800 IN A 193.170.187.5 +016303646E73036E6963066265726C696E00001C00010002A30000102001062A000A30000000000000000005 +c.dns.nic.berlin. 172800 IN AAAA 2001:62a:a:3000::5 +02626600000200010002A300000C036E73310369726402667200 +bf. 172800 IN NS ns1.ird.fr. +02626600000200010002A3000010036E733106617336343533036E657400 +bf. 172800 IN NS ns1.as6453.net. +02626600000200010002A3000010036E733206617336343533036E657400 +bf. 172800 IN NS ns2.as6453.net. +02626600000200010002A3000013076E61686F757269066F6E6174656C02626600 +bf. 172800 IN NS nahouri.onatel.bf. +02626600002F000100015180000C026267000006200000000003 +bf. 86400 IN NSEC bg. NS RRSIG NSEC +02626600002E0001000151800093002F08010001518052F4220052EAD970837700ADE929415E15179FA0A602F27265B4ED955B6BF882E38D62AFD285B1A0B3CBA06D51AF0DF7444C09DC937085976B95407EBB7FF7F703633336F0068E1AA40F70CF602C7C336CCBF9095668F3D054BA3C0FFB021FBFD236080A5B59691074D1EBA51965DC41A307CEE78AF3BAF655D443792A541EFFC86EA4124F50A70BBC5430 +bf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rekpQV4VF5+gpgLycmW07ZVba/iC441ir9KFsaCzy6BtUa8N90RMCdyTcIWXa5VAfrt/9/cDYzM28AaOGqQPcM9gLHwzbMv5CVZo89BUujwP+wIfv9I2CApbWWkQdNHrpRll3EGjB87nivO69lXUQ3kqVB7/yG6kEk9Qpwu8VDA= ;{id = 33655} +076E61686F757269066F6E6174656C02626600000100010002A3000004CE5282C4 +nahouri.onatel.bf. 172800 IN A 206.82.130.196 +02626700000200010002A300001B026267056363746C640761757468646E730472697065036E657400 +bg. 172800 IN NS bg.cctld.authdns.ripe.net. +02626700000200010002A3000010026E7308726567697374657202626700 +bg. 172800 IN NS ns.register.bg. +02626700000200010002A3000011036E733208726567697374657202626700 +bg. 172800 IN NS ns2.register.bg. +02626700000200010002A3000011036E733308726567697374657202626700 +bg. 172800 IN NS ns3.register.bg. +02626700000200010002A3000011036E733408726567697374657202626700 +bg. 172800 IN NS ns4.register.bg. +02626700000200010002A3000010066E732D65787403697363036F726700 +bg. 172800 IN NS ns-ext.isc.org. +02626700000200010002A300001006736E732D706203697363036F726700 +bg. 172800 IN NS sns-pb.isc.org. +02626700002B0001000151800018B6FE05011D83F503CCED4A4B6F7F8DB1CF43D38F9133A3EA +bg. 86400 IN DS 46846 5 1 1D83F503CCED4A4B6F7F8DB1CF43D38F9133A3EA +02626700002B0001000151800024B6FE050226811E459C850F50A85D1EAF589E30DC14D09D1A6E6262E8D36B6BFFC605334C +bg. 86400 IN DS 46846 5 2 26811E459C850F50A85D1EAF589E30DC14D09D1A6E6262E8D36B6BFFC605334C +02626700002E0001000151800093002B08010001518052F4220052EAD9708377005044CC62CDA08786B74CFCA0FAB18068A50E47151C9EEE825B2F2795D6B0B0E384589E0D486C3DD3EE057BD86AEDCFFEE4FAFD28F798B01E0CAA0DABA13017247E4FB9074E8DE89C600CCA72B13AF7581E009BA96A431FD9142AFD37AFBB1EC7F8A0D9ECB8137A83D61A7C4A9397E8703E3B88D37ED48BA5213224E4CE658483 +bg. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UETMYs2gh4a3TPyg+rGAaKUORxUcnu6CWy8nldawsOOEWJ4NSGw90+4Fe9hq7c/+5Pr9KPeYsB4Mqg2roTAXJH5PuQdOjeicYAzKcrE691geAJupakMf2RQq/Tevux7H+KDZ7LgTeoPWGnxKk5focD47iNN+1IulITIk5M5lhIM= ;{id = 33655} +02626700002E0001000151800093002F08010001518052F4220052EAD9708377005F0918B0D2BD9FEF70DFD9FFB5168A079F864399A0976B7380288928C3AF1CDC994E03FD1EAD831D3C52BDBBC04821AB5977E2740EEB5F4739382EA5B5F803CE99449DFE993A22276DDB3AA677844F0FAD5E1B68BB23C8FCBFFC2CB42C6B55D19E9108A4F3CA02FEA0EB65CEB90058D76FDB2679CB12F53C4ED6D0A88EB2EA15 +bg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XwkYsNK9n+9w39n/tRaKB5+GQ5mgl2tzgCiJKMOvHNyZTgP9Hq2DHTxSvbvASCGrWXfidA7rX0c5OC6ltfgDzplEnf6ZOiInbds6pneETw+tXhtouyPI/L/8LLQsa1XRnpEIpPPKAv6g62XOuQBY12/bJnnLEvU8TtbQqI6y6hU= ;{id = 33655} +02626700002F000100015180000C026268000006200000000013 +bg. 86400 IN NSEC bh. NS DS RRSIG NSEC +026E7308726567697374657202626700000100010002A3000004C05C8163 +ns.register.bg. 172800 IN A 192.92.129.99 +026E7308726567697374657202626700001C00010002A30000102A026A80000000000192009201290099 +ns.register.bg. 172800 IN AAAA 2a02:6a80::192:92:129:99 +036E733208726567697374657202626700000100010002A3000004C14403E8 +ns2.register.bg. 172800 IN A 193.68.3.232 +036E733208726567697374657202626700001C00010002A30000102A026A80000000000193006800030232 +ns2.register.bg. 172800 IN AAAA 2a02:6a80::193:68:3:232 +036E733308726567697374657202626700000100010002A3000004C1446363 +ns3.register.bg. 172800 IN A 193.68.99.99 +036E733308726567697374657202626700001C00010002A30000102A026A80000000000193006800990099 +ns3.register.bg. 172800 IN AAAA 2a02:6a80::193:68:99:99 +036E733408726567697374657202626700000100010002A3000004C2002001 +ns4.register.bg. 172800 IN A 194.0.32.1 +036E733408726567697374657202626700001C00010002A300001020010678003C00000000000000000001 +ns4.register.bg. 172800 IN AAAA 2001:678:3c::1 +02626800000200010002A3000013026E7307626174656C636F03636F6D02626800 +bh. 172800 IN NS ns.batelco.com.bh. +02626800000200010002A3000014036E733207626174656C636F03636F6D02626800 +bh. 172800 IN NS ns2.batelco.com.bh. +02626800000200010002A3000014036E733307626174656C636F03636F6D02626800 +bh. 172800 IN NS ns3.batelco.com.bh. +02626800000200010002A3000014036E733407626174656C636F03636F6D02626800 +bh. 172800 IN NS ns4.batelco.com.bh. +02626800002F000100015180000C026269000006200000000003 +bh. 86400 IN NSEC bi. NS RRSIG NSEC +02626800002E0001000151800093002F08010001518052F4220052EAD97083770028B6BBC9EDDF2225753E52533DA483398145EAABDA606C25342A50D40AB2946F212086A0B50263976391698E0E7DAFB2D4799F780ABC42FE10B964F150D827D316C2157EFDFA4EE3CF39D1F280AD16BCE3B154D6C67A89D62C09389B05F83B2BF073B4FEF5E99A013A734CA0D7DFA97B1164B2D28702B1C130AC5F7C11EB906E +bh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KLa7ye3fIiV1PlJTPaSDOYFF6qvaYGwlNCpQ1AqylG8hIIagtQJjl2ORaY4Ofa+y1HmfeAq8Qv4QuWTxUNgn0xbCFX79+k7jzznR8oCtFrzjsVTWxnqJ1iwJOJsF+Dsr8HO0/vXpmgE6c0yg19+pexFkstKHArHBMKxffBHrkG4= ;{id = 33655} +026E7307626174656C636F03636F6D02626800000100010002A3000004C1BC61C5 +ns.batelco.com.bh. 172800 IN A 193.188.97.197 +036E733207626174656C636F03636F6D02626800000100010002A3000004C1BC61D4 +ns2.batelco.com.bh. 172800 IN A 193.188.97.212 +036E733307626174656C636F03636F6D02626800000100010002A3000004C1BC61C1 +ns3.batelco.com.bh. 172800 IN A 193.188.97.193 +036E733407626174656C636F03636F6D02626800000100010002A3000004C1BC61D1 +ns4.batelco.com.bh. 172800 IN A 193.188.97.209 +02626900000200010002A300001B026269056363746C640761757468646E730472697065036E657400 +bi. 172800 IN NS bi.cctld.authdns.ripe.net. +02626900000200010002A300000B026E73036E696302626900 +bi. 172800 IN NS ns.nic.bi. +02626900000200010002A300001303646E73097072696E6365746F6E0365647500 +bi. 172800 IN NS dns.princeton.edu. +02626900000200010002A300000C036E7331036E696302626900 +bi. 172800 IN NS ns1.nic.bi. +02626900000200010002A300000E05616E796E73036E696302626900 +bi. 172800 IN NS anyns.nic.bi. +02626900000200010002A3000013056E732D626907616672696E6963036E657400 +bi. 172800 IN NS ns-bi.afrinic.net. +02626900002F000100015180000E0462696B65000006200000000003 +bi. 86400 IN NSEC bike. NS RRSIG NSEC +02626900002E0001000151800093002F08010001518052F4220052EAD9708377004FB37B52ADD647E3D2FD15CBB421864E6A38A1538456C7010DDB531E6DE66723116AC7DCF5005BC30B00621DE07F669A44BDC632512CF36410D8FA93C2A84EA6EEC853F31F64895B96FB0E761DFF68A0063A819B64E2922E7DE7F6094F6F90469F76CCF7F71C68BD60E5C8A7BB3C1C240501E904ACD9687F6DD13BB66A6D41FC +bi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T7N7Uq3WR+PS/RXLtCGGTmo4oVOEVscBDdtTHm3mZyMRasfc9QBbwwsAYh3gf2aaRL3GMlEs82QQ2PqTwqhOpu7IU/MfZIlblvsOdh3/aKAGOoGbZOKSLn3n9glPb5BGn3bM9/ccaL1g5cinuzwcJAUB6QSs2Wh/bdE7tmptQfw= ;{id = 33655} +05616E796E73036E696302626900000100010002A3000004CC3DD83D +anyns.nic.bi. 172800 IN A 204.61.216.61 +05616E796E73036E696302626900001C00010002A3000010200105000014606100AD000000000001 +anyns.nic.bi. 172800 IN AAAA 2001:500:14:6061:ad::1 +026E73036E696302626900000100010002A3000004C40208CD +ns.nic.bi. 172800 IN A 196.2.8.205 +036E7331036E696302626900000100010002A3000004C4020CCD +ns1.nic.bi. 172800 IN A 196.2.12.205 +0462696B6500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +bike. 172800 IN NS demand.beta.aridns.net.au. +0462696B6500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +bike. 172800 IN NS demand.alpha.aridns.net.au. +0462696B6500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +bike. 172800 IN NS demand.delta.aridns.net.au. +0462696B6500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +bike. 172800 IN NS demand.gamma.aridns.net.au. +0462696B6500002B0001000151800024D3120802747E5D74063A31D2957E308218CFABAB23194B4FB6292FC5168F7B9E5031AFAF +bike. 86400 IN DS 54034 8 2 747E5D74063A31D2957E308218CFABAB23194B4FB6292FC5168F7B9E5031AFAF +0462696B6500002E0001000151800093002B08010001518052F4220052EAD97083770085E98E5B30D0E9C029F5C5F4186549D0241B1503DF6DEFCF13A73FA4DE45CC9918F1AFB9A52AC038A093A03F57858F72B0AE1D48DCA7F915526347F45E9BD33C30EB39A6BB246A457A71D430698FFE2ABB33994470740D23A4F40068747CF9A115436E1CA4B48D97AF41B77DFE937DB8F2FB387A197D1FDDCB389F432033E4E7 +bike. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hemOWzDQ6cAp9cX0GGVJ0CQbFQPfbe/PE6c/pN5FzJkY8a+5pSrAOKCToD9XhY9ysK4dSNyn+RVSY0f0XpvTPDDrOaa7JGpFenHUMGmP/iq7M5lEcHQNI6T0AGh0fPmhFUNuHKS0jZevQbd9/pN9uPL7OHoZfR/dyzifQyAz5Oc= ;{id = 33655} +0462696B6500002E0001000151800093002F08010001518052F4220052EAD97083770017674A9D823554D367718FEBF2EFE948EE5CA3F78BCB54533A7C895800B46CC13D06A086E0EE0C3B0FF76999B3D93198645408C907926ED799379FCBBCD7366DECF22D1DCF4A50475D487C678A1C81F3DF02FCE987466FC8F3D944FCCE24F5158B6717B3608C80D5B88BBFE6DE9D84F0C77803E8BD253819A7E907CDC7727BF6 +bike. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . F2dKnYI1VNNncY/r8u/pSO5co/eLy1RTOnyJWAC0bME9BqCG4O4MOw/3aZmz2TGYZFQIyQeSbteZN5/LvNc2bezyLR3PSlBHXUh8Z4ocgfPfAvzph0ZvyPPZRPzOJPUVi2cXs2CMgNW4i7/m3p2E8Md4A+i9JTgZp+kHzcdye/Y= ;{id = 33655} +0462696B6500002F000100015180000D0362697A000006200000000013 +bike. 86400 IN NSEC biz. NS DS RRSIG NSEC +0362697A00000200010002A300000C01610467746C640362697A00 +biz. 172800 IN NS a.gtld.biz. +0362697A00000200010002A300000C01620467746C640362697A00 +biz. 172800 IN NS b.gtld.biz. +0362697A00000200010002A300000C01630467746C640362697A00 +biz. 172800 IN NS c.gtld.biz. +0362697A00000200010002A300000C01650467746C640362697A00 +biz. 172800 IN NS e.gtld.biz. +0362697A00000200010002A300000C01660467746C640362697A00 +biz. 172800 IN NS f.gtld.biz. +0362697A00000200010002A300000C016B0467746C640362697A00 +biz. 172800 IN NS k.gtld.biz. +0362697A00002B0001000151800018559608015EAA597F7A5D92ECB6DB62B04423B5315CC807AB +biz. 86400 IN DS 21910 8 1 5EAA597F7A5D92ECB6DB62B04423B5315CC807AB +0362697A00002B0001000151800024559608027C3B5FF5E65827A3D7CE2394B67891477779DCF28AF01BF12422E9EA1A455D73 +biz. 86400 IN DS 21910 8 2 7C3B5FF5E65827A3D7CE2394B67891477779DCF28AF01BF12422E9EA1A455D73 +0362697A00002E0001000151800093002B08010001518052F4220052EAD970837700A0144A20A135B60D377A75A67684CFF5231A69C5CC9C364C00E125CCAEB2D16DDFB9A9C66CAA593D1F651209D9BFDE15621720BEE8EB4702450C9D49D1079C5B6BE01FE1A47EC1168663BD64112EBFE683A71AB3CD05127A823F5B19419621F8F00082C6E770488DB6AFBFB7B916BB4E94AD27B037B989F84F8A0879899AEBA0 +biz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oBRKIKE1tg03enWmdoTP9SMaacXMnDZMAOElzK6y0W3fuanGbKpZPR9lEgnZv94VYhcgvujrRwJFDJ1J0QecW2vgH+GkfsEWhmO9ZBEuv+aDpxqzzQUSeoI/WxlBliH48ACCxudwSI22r7+3uRa7TpStJ7A3uYn4T4oIeYma66A= ;{id = 33655} +0362697A00002E0001000151800093002F08010001518052F4220052EAD9708377002BA4CBDBB37BF0E72DD04793648DC0765C08EE11FE4EED801FFB8B508FB5E2C865A015B718C08766790A798BB3C5361D9AD3BC0069E70C5BF9D0CB95ECB62970B74BDA0C8DA401B8688554E207EFF20C16AB1FCB7344C15A7A1778DA43C3D6F85CFCAD9DFEF6D37D2AA9B4FC9351CC97ACF68922DED210ECD226846B79387B26 +biz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K6TL27N78Oct0EeTZI3AdlwI7hH+Tu2AH/uLUI+14shloBW3GMCHZnkKeYuzxTYdmtO8AGnnDFv50MuV7LYpcLdL2gyNpAG4aIVU4gfv8gwWqx/Lc0TBWnoXeNpDw9b4XPytnf72030qqbT8k1HMl6z2iSLe0hDs0iaEa3k4eyY= ;{id = 33655} +0362697A00002F000100015180000C02626A000006200000000013 +biz. 86400 IN NSEC bj. NS DS RRSIG NSEC +01610467746C640362697A00000100010002A30000049C9A7C41 +a.gtld.biz. 172800 IN A 156.154.124.65 +01610467746C640362697A00001C00010002A3000010200105037BBBFFFFFFFFFFFFFFFFFF7E +a.gtld.biz. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +01620467746C640362697A00000100010002A30000049C9A7D41 +b.gtld.biz. 172800 IN A 156.154.125.65 +01630467746C640362697A00000100010002A30000049C9A7F41 +c.gtld.biz. 172800 IN A 156.154.127.65 +01650467746C640362697A00000100010002A30000049C9A7E41 +e.gtld.biz. 172800 IN A 156.154.126.65 +01660467746C640362697A00000100010002A3000004D1AD3A42 +f.gtld.biz. 172800 IN A 209.173.58.66 +01660467746C640362697A00001C00010002A300001020010500368200000000000000000012 +f.gtld.biz. 172800 IN AAAA 2001:500:3682::12 +016B0467746C640362697A00000100010002A30000049C9A8041 +k.gtld.biz. 172800 IN A 156.154.128.65 +016B0467746C640362697A00001C00010002A300001020010503E23900000000000000030002 +k.gtld.biz. 172800 IN AAAA 2001:503:e239::3:2 +02626A00000200010002A300001B02626A056363746C640761757468646E730472697065036E657400 +bj. 172800 IN NS bj.cctld.authdns.ripe.net. +02626A00000200010002A300000D03626F77047261696E02667200 +bj. 172800 IN NS bow.rain.fr. +02626A00000200010002A300000F036E733106696E746E657402626A00 +bj. 172800 IN NS ns1.intnet.bj. +02626A00000200010002A3000013056E732D626A07616672696E6963036E657400 +bj. 172800 IN NS ns-bj.afrinic.net. +02626A00000200010002A3000012066E616B61796F066C656C616E6402626A00 +bj. 172800 IN NS nakayo.leland.bj. +02626A00002F000100015180000C02626D000006200000000003 +bj. 86400 IN NSEC bm. NS RRSIG NSEC +02626A00002E0001000151800093002F08010001518052F4220052EAD97083770037C6C7124A36236D0F4AFE3FAF993F16E28761E0FFA060B08DC199320C08BE45ADE456196538E703862017288A0C82B2DFCCA287F113BA81AC26F7DCA503C87DCBB24C70E67BF7A36A62DD529C4FF41B4EFB83A27ED899CE57F186C26DBE3AED230ACE0484C4C47BE1C2529E22E3B22283FA37DCD68417659FFCB1792DC408AB +bj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . N8bHEko2I20PSv4/r5k/FuKHYeD/oGCwjcGZMgwIvkWt5FYZZTjnA4YgFyiKDIKy38yih/ETuoGsJvfcpQPIfcuyTHDme/ejamLdUpxP9BtO+4OiftiZzlfxhsJtvjrtIwrOBITExHvhwlKeIuOyIoP6N9zWhBdln/yxeS3ECKs= ;{id = 33655} +036E733106696E746E657402626A00000100010002A3000004515BE112 +ns1.intnet.bj. 172800 IN A 81.91.225.18 +066E616B61796F066C656C616E6402626A00000100010002A3000004515BE101 +nakayo.leland.bj. 172800 IN A 81.91.225.1 +02626D00000200010002A300000B026E73027575036E657400 +bm. 172800 IN NS ns.uu.net. +02626D00000200010002A3000008036E733102626D00 +bm. 172800 IN NS ns1.bm. +02626D00000200010002A300000C036E73310369626C02626D00 +bm. 172800 IN NS ns1.ibl.bm. +02626D00000200010002A3000008036E733202626D00 +bm. 172800 IN NS ns2.bm. +02626D00000200010002A300000C036E73320369626C02626D00 +bm. 172800 IN NS ns2.ibl.bm. +02626D00000200010002A3000008036E733302626D00 +bm. 172800 IN NS ns3.bm. +02626D00000200010002A30000100573756E69630573756E657402736500 +bm. 172800 IN NS sunic.sunet.se. +02626D00000200010002A300001206617574683032026E73027575036E657400 +bm. 172800 IN NS auth02.ns.uu.net. +02626D00002F000100015180000C02626E000006200000000003 +bm. 86400 IN NSEC bn. NS RRSIG NSEC +02626D00002E0001000151800093002F08010001518052F4220052EAD9708377009875B6EB182E3C86F61B803ACC5C2E046D88198C58915C4146AC6C4DE231E33F097E2DA497C865EF47CAE2A185363D6CFC5659AA3A18BD66BCE80795693F040639D8BEB3CAD44EB86CB24DD9AE18B1F7E931EE9E1B02A2053CA462DA5D1346671EAC504F465B5FCF1B886E5C1A7D71F7165DF686D8F207B8D460D74D50A346AE +bm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mHW26xguPIb2G4A6zFwuBG2IGYxYkVxBRqxsTeIx4z8Jfi2kl8hl70fK4qGFNj1s/FZZqjoYvWa86AeVaT8EBjnYvrPK1E64bLJN2a4YsffpMe6eGwKiBTykYtpdE0ZnHqxQT0ZbX88biG5cGn1x9xZd9obY8ge41GDXTVCjRq4= ;{id = 33655} +036E73310369626C02626D00000100010002A3000004C6CF1732 +ns1.ibl.bm. 172800 IN A 198.207.23.50 +036E73320369626C02626D00000100010002A3000004C7ACC002 +ns2.ibl.bm. 172800 IN A 199.172.192.2 +036E733102626D00000100010002A3000004CE35BECA +ns1.bm. 172800 IN A 206.53.190.202 +036E733202626D00000100010002A30000044511C201 +ns2.bm. 172800 IN A 69.17.194.1 +036E733302626D00000100010002A3000004CFE4860A +ns3.bm. 172800 IN A 207.228.134.10 +02626E00000200010002A300000F036A7462066272756E657402626E00 +bn. 172800 IN NS jtb.brunet.bn. +02626E00000200010002A300000F036E7332066272756E657402626E00 +bn. 172800 IN NS ns2.brunet.bn. +02626E00000200010002A3000010056E732D626E0472697065036E657400 +bn. 172800 IN NS ns-bn.ripe.net. +02626E00000200010002A300001307646E73312D746C066272756E657402626E00 +bn. 172800 IN NS dns1-tl.brunet.bn. +02626E00000200010002A300001307646E73322D746C066272756E657402626E00 +bn. 172800 IN NS dns2-tl.brunet.bn. +02626E00002F000100015180000C02626F000006200000000003 +bn. 86400 IN NSEC bo. NS RRSIG NSEC +02626E00002E0001000151800093002F08010001518052F4220052EAD97083770001E6983F9156B5113CE243DDE81563EC961BEA801D57B47AA1C4B084C80B63852AAEE81AF55D6A2B939DD34545CBEEC29C3FD7DE4FA6441B0152579386423055B27904E2B5A7F73ACFCF208CC3C0066B89A066928902B0A4978BEEBBC3D18319E8011761F8228197412634B6F1CE53C77D67393E283D894CF975B0B34FFAEA97 +bn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AeaYP5FWtRE84kPd6BVj7JYb6oAdV7R6ocSwhMgLY4Uqruga9V1qK5Od00VFy+7CnD/X3k+mRBsBUleThkIwVbJ5BOK1p/c6z88gjMPABmuJoGaSiQKwpJeL7rvD0YMZ6AEXYfgigZdBJjS28c5Tx31nOT4oPYlM+XWws0/66pc= ;{id = 33655} +07646E73312D746C066272756E657402626E00000100010002A3000004CAA00909 +dns1-tl.brunet.bn. 172800 IN A 202.160.9.9 +07646E73322D746C066272756E657402626E00000100010002A3000004CAA0090A +dns2-tl.brunet.bn. 172800 IN A 202.160.9.10 +036A7462066272756E657402626E00000100010002A3000004CAA00802 +jtb.brunet.bn. 172800 IN A 202.160.8.2 +036E7332066272756E657402626E00000100010002A3000004CAA00814 +ns2.brunet.bn. 172800 IN A 202.160.8.20 +02626F00000200010002A300000B026E7303646E7302627200 +bo. 172800 IN NS ns.dns.br. +02626F00000200010002A3000011057574616D6106626F6C6E657402626F00 +bo. 172800 IN NS utama.bolnet.bo. +02626F00000200010002A300001307616E7963617374026E73036E696302626F00 +bo. 172800 IN NS anycast.ns.nic.bo. +02626F00002F000100015180001208626F757469717565000006200000000003 +bo. 86400 IN NSEC boutique. NS RRSIG NSEC +02626F00002E0001000151800093002F08010001518052F4220052EAD9708377007C3B2CD0213C0F9931316A2F2C3B6A5096EC0EBBBCF4624AE2165733E811F0365FE2D334CACF703DCD85A6B16B32AE0C0E24B1285092B20077634DC463E84284F096F4F5C8A77F454FA72EC2ECF187EA6ADF332DD12E6AAB0229F25194C4DA8964C8E842959F8CE3DE036E1A2F9D5C0D7B84706646E600D595C2C5A99950276B +bo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fDss0CE8D5kxMWovLDtqUJbsDru89GJK4hZXM+gR8DZf4tM0ys9wPc2FprFrMq4MDiSxKFCSsgB3Y03EY+hChPCW9PXIp39FT6cuwuzxh+pq3zMt0S5qqwIp8lGUxNqJZMjoQpWfjOPeA24aL51cDXuEcGZG5gDVlcLFqZlQJ2s= ;{id = 33655} +057574616D6106626F6C6E657402626F00000100010002A3000004A6720128 +utama.bolnet.bo. 172800 IN A 166.114.1.40 +07616E7963617374026E73036E696302626F00000100010002A3000004CC3DD830 +anycast.ns.nic.bo. 172800 IN A 204.61.216.48 +07616E7963617374026E73036E696302626F00001C00010002A3000010200105000014604800AD000000000001 +anycast.ns.nic.bo. 172800 IN AAAA 2001:500:14:6048:ad::1 +08626F75746971756500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +boutique. 172800 IN NS demand.beta.aridns.net.au. +08626F75746971756500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +boutique. 172800 IN NS demand.alpha.aridns.net.au. +08626F75746971756500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +boutique. 172800 IN NS demand.delta.aridns.net.au. +08626F75746971756500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +boutique. 172800 IN NS demand.gamma.aridns.net.au. +08626F75746971756500002B0001000151800024BBFF08023400E946A0A57CB11A176DEAC77AB42934513EFE0A8B5BE0203921AB1888EE81 +boutique. 86400 IN DS 48127 8 2 3400E946A0A57CB11A176DEAC77AB42934513EFE0A8B5BE0203921AB1888EE81 +08626F75746971756500002E0001000151800093002B08010001518052F4220052EAD9708377006CE5CC02F5C809FA28C407FFFAA5E62D857A47DD642F30719E1307FD7B276717BFF3F5B606DA58C6A387890B55472967B5FEA9DBCC509CD4352840C77068016D319EC92D1AB4B08CAE0CE9F6824CDE15941653995D82A1B22F87A80EE8DC744EA49B07D1849CD2F981197393E53BD376EF705B4AC35BF64B49ED75DE4ECFFE09 +boutique. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bOXMAvXICfooxAf/+qXmLYV6R91kLzBxnhMH/XsnZxe/8/W2BtpYxqOHiQtVRylntf6p28xQnNQ1KEDHcGgBbTGeyS0atLCMrgzp9oJM3hWUFlOZXYKhsi+HqA7o3HROpJsH0YSc0vmBGXOT5TvTdu9wW0rDW/ZLSe113k7P/gk= ;{id = 33655} +08626F75746971756500002E0001000151800093002F08010001518052F4220052EAD970837700BD04E42F72116BDCEE24335A4E05C6F631050533164B3C7C9D191873A3F6E759F6B37FA2F1F395DA6FFAFB35D7B002314E9C76D6B007C3344AA891938AD101FC290E16CB40D6BFB39CFA5CD4339FC6FDDC368E54DBDE9665E38D8438096AAF8B551D8F7F5EF4B90DF697A09F09053A40828ECCDF3AE08692CBF3A9D21FCE84C8 +boutique. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vQTkL3IRa9zuJDNaTgXG9jEFBTMWSzx8nRkYc6P251n2s3+i8fOV2m/6+zXXsAIxTpx21rAHwzRKqJGTitEB/CkOFstA1r+znPpc1DOfxv3cNo5U296WZeONhDgJaq+LVR2Pf170uQ32l6CfCQU6QIKOzN864IaSy/Op0h/OhMg= ;{id = 33655} +08626F75746971756500002F000100015180000C026272000006200000000013 +boutique. 86400 IN NSEC br. NS DS RRSIG NSEC +02627200002F000100015180000C026273000006200000000013 +br. 86400 IN NSEC bs. NS DS RRSIG NSEC +02627200002E0001000151800093002F08010001518052F4220052EAD9708377006454605A7B4C0A8E9F651006E88261FCC3F9D53D7E654E137B2409EF7FADBC03B5E8ADE7E05AAA055C116E0844554E61FB946CF13625A7015D921EE1CEAF79F8F4B57D99484E6F82F881559823EA10183C5C3C574D2CEF480F02177D3C956ECDCA414A287CF1801ED9E7EFAC6C1432F5D029AFC169080C48F2250F1A837157A7 +br. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZFRgWntMCo6fZRAG6IJh/MP51T1+ZU4TeyQJ73+tvAO16K3n4FqqBVwRbghEVU5h+5Rs8TYlpwFdkh7hzq95+PS1fZlITm+C+IFVmCPqEBg8XDxXTSzvSA8CF308lW7NykFKKHzxgB7Z5++sbBQy9dApr8FpCAxI8iUPGoNxV6c= ;{id = 33655} +02627200002E0001000151800093002B08010001518052F4220052EAD9708377006846DEE74AB9BFD03B1E1FAB3B4B29732EA37E9F2188F3CD1666A01448E2AF73F19BC126D7E6D6FB6BF56641C90859BA8FC3A1AE0E07FD03FE390121DD5AFE4BD76D371CAD53A49F0A64E76EFEC1130354A6D05A22549B4877C07B6E4B8EDBC473843E5145C853CAB5194154ED56F06059DF707A91E45B095E90D26E655ACF50 +br. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aEbe50q5v9A7Hh+rO0spcy6jfp8hiPPNFmagFEjir3Pxm8Em1+bW+2v1ZkHJCFm6j8Ohrg4H/QP+OQEh3Vr+S9dtNxytU6SfCmTnbv7BEwNUptBaIlSbSHfAe25LjtvEc4Q+UUXIU8q1GUFU7VbwYFnfcHqR5FsJXpDSbmVaz1A= ;{id = 33655} +02627200000200010002A300000A016103646E7302627200 +br. 172800 IN NS a.dns.br. +02627200000200010002A300000A016203646E7302627200 +br. 172800 IN NS b.dns.br. +02627200000200010002A300000A016303646E7302627200 +br. 172800 IN NS c.dns.br. +02627200000200010002A300000A016403646E7302627200 +br. 172800 IN NS d.dns.br. +02627200000200010002A300000A016503646E7302627200 +br. 172800 IN NS e.dns.br. +02627200000200010002A300000A016603646E7302627200 +br. 172800 IN NS f.dns.br. +02627200002B0001000151800018A2CA0501EAA0978F38879DB70A53F9FF1ACF21D046A98B5C +br. 86400 IN DS 41674 5 1 EAA0978F38879DB70A53F9FF1ACF21D046A98B5C +016103646E7302627200000100010002A3000004C8A0000A +a.dns.br. 172800 IN A 200.160.0.10 +016103646E7302627200001C00010002A3000010200112FF000000000000000000000010 +a.dns.br. 172800 IN AAAA 2001:12ff::10 +016203646E7302627200000100010002A3000004C8BD290A +b.dns.br. 172800 IN A 200.189.41.10 +016303646E7302627200000100010002A3000004C8C0E90A +c.dns.br. 172800 IN A 200.192.233.10 +016403646E7302627200000100010002A3000004C8DB9A0A +d.dns.br. 172800 IN A 200.219.154.10 +016403646E7302627200001C00010002A3000010200112F8000400000000000000000010 +d.dns.br. 172800 IN AAAA 2001:12f8:4::10 +016503646E7302627200000100010002A3000004C8E5F80A +e.dns.br. 172800 IN A 200.229.248.10 +016503646E7302627200001C00010002A3000010200112F8000100000000000000000010 +e.dns.br. 172800 IN AAAA 2001:12f8:1::10 +016603646E7302627200000100010002A3000004C8DB9F0A +f.dns.br. 172800 IN A 200.219.159.10 +026E7303646E7302627200000100010002A3000004C8A00005 +ns.dns.br. 172800 IN A 200.160.0.5 +026E7303646E7302627200001C00010002A3000010200112FF00000A200000000000000005 +ns.dns.br. 172800 IN AAAA 2001:12ff:0:a20::5 +02627300000200010002A300000C03646E73036E696302627300 +bs. 172800 IN NS dns.nic.bs. +02627300000200010002A300001204757072310375707203636C750365647500 +bs. 172800 IN NS upr1.upr.clu.edu. +02627300000200010002A300000F05616E796E7303706368036E657400 +bs. 172800 IN NS anyns.pch.net. +02627300002F000100015180000C026274000006200000000003 +bs. 86400 IN NSEC bt. NS RRSIG NSEC +02627300002E0001000151800093002F08010001518052F4220052EAD970837700BB8B3C17EB6C4A5B648C192C3DC7291D8433BADE2DC15C4385B6A91F02163A6813D1428E3341F3A60CFD155504CE49EB741C921426B622F8DFC596883E77E8CC6A61A113828CCD4696C3E20400AA9ED49DC9370AC77696EE724D7D76F7682DCF57EB6BEA1BD2202751FCCA6169A1EA89BA43044CCB1577AFA07D9A07B4202C09 +bs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u4s8F+tsSltkjBksPccpHYQzut4twVxDhbapHwIWOmgT0UKOM0Hzpgz9FVUEzknrdBySFCa2IvjfxZaIPnfozGphoROCjM1GlsPiBACqntSdyTcKx3aW7nJNfXb3aC3PV+tr6hvSICdR/MphaaHqibpDBEzLFXevoH2aB7QgLAk= ;{id = 33655} +03646E73036E696302627300000100010002A3000004CE3003A8 +dns.nic.bs. 172800 IN A 206.48.3.168 +02627400000200010002A300001B026274056363746C640761757468646E730472697065036E657400 +bt. 172800 IN NS bt.cctld.authdns.ripe.net. +02627400000200010002A300000B026E730369747502636800 +bt. 172800 IN NS ns.itu.ch. +02627400000200010002A3000010036E7331076472756B6E657402627400 +bt. 172800 IN NS ns1.druknet.bt. +02627400000200010002A3000010036E7332076472756B6E657402627400 +bt. 172800 IN NS ns2.druknet.bt. +02627400000200010002A3000010036E7333076472756B6E657402627400 +bt. 172800 IN NS ns3.druknet.bt. +02627400000200010002A300001206617574683030026E73027575036E657400 +bt. 172800 IN NS auth00.ns.uu.net. +02627400000200010002A300001206617574683631026E73027575036E657400 +bt. 172800 IN NS auth61.ns.uu.net. +02627400002F000100015180000F056275696C64000006200000000003 +bt. 86400 IN NSEC build. NS RRSIG NSEC +02627400002E0001000151800093002F08010001518052F4220052EAD9708377006592927A77C6FF07D2823E82A0A6CDA502F37E98636A5F2CD48A8E11948B573C9EA55D7FA5A08C5F7E363E5B8401A096EE1CED8EA8D3C6D6985B512F9CD4DBCCDB4774CF6F600407F4FD3E18AEE8B919A09B3DC0F79B70E9CE67D6DAC5907456A4F1F22ADDFA4FA8662EF0048E7868F6580D1E1745070CD083439DCB3F6C575E +bt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZZKSenfG/wfSgj6CoKbNpQLzfphjal8s1IqOEZSLVzyepV1/paCMX342PluEAaCW7hztjqjTxtaYW1EvnNTbzNtHdM9vYAQH9P0+GK7ouRmgmz3A95tw6c5n1trFkHRWpPHyKt36T6hmLvAEjnho9lgNHhdFBwzQg0Odyz9sV14= ;{id = 33655} +036E7331076472756B6E657402627400000100010002A3000004CA9080C8 +ns1.druknet.bt. 172800 IN A 202.144.128.200 +036E7331076472756B6E657402627400001C00010002A30000102405D000000001000000000000000200 +ns1.druknet.bt. 172800 IN AAAA 2405:d000:0:100::200 +036E7332076472756B6E657402627400000100010002A3000004CA9080D2 +ns2.druknet.bt. 172800 IN A 202.144.128.210 +036E7332076472756B6E657402627400001C00010002A30000102405D000000001000000000000000210 +ns2.druknet.bt. 172800 IN AAAA 2405:d000:0:100::210 +036E7333076472756B6E657402627400000100010002A3000004CC3DD811 +ns3.druknet.bt. 172800 IN A 204.61.216.17 +036E7333076472756B6E657402627400001C00010002A3000010200105000014601700AD000000000001 +ns3.druknet.bt. 172800 IN AAAA 2001:500:14:6017:ad::1 +056275696C6400000200010002A300000D0161036E6963056275696C6400 +build. 172800 IN NS a.nic.build. +056275696C6400000200010002A300000D0162036E6963056275696C6400 +build. 172800 IN NS b.nic.build. +056275696C6400000200010002A300000D0163036E6963056275696C6400 +build. 172800 IN NS c.nic.build. +056275696C6400000200010002A300000D0164036E6963056275696C6400 +build. 172800 IN NS d.nic.build. +056275696C6400002B000100015180002448CA080297A275D8F2C987FB681D6E7C650FEFBF8EAE8ED9743822A3D9767F0DC3502938 +build. 86400 IN DS 18634 8 2 97A275D8F2C987FB681D6E7C650FEFBF8EAE8ED9743822A3D9767F0DC3502938 +056275696C6400002E0001000151800093002B08010001518052F4220052EAD9708377005BA01A0780D6D92B2E1127CEA70BEAA8C2C7D4210EF96DDF575491A0A20A820275CF6CECAF630862A2CFE20FA19CA16DC8A2219995BF25B0270D7850209527DDD6BCEDC91F997D22A45D71B9B678F4496ECEBF2B3F47FD41275FDFB9EA700C5F09752013B1511D0DB613C50903ACCD719F1893D70DFB340C8BC3DD0F2F07B85E +build. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . W6AaB4DW2SsuESfOpwvqqMLH1CEO+W3fV1SRoKIKggJ1z2zsr2MIYqLP4g+hnKFtyKIhmZW/JbAnDXhQIJUn3da87ckfmX0ipF1xubZ49Eluzr8rP0f9QSdf37nqcAxfCXUgE7FRHQ22E8UJA6zNcZ8Yk9cN+zQMi8PdDy8HuF4= ;{id = 33655} +056275696C6400002E0001000151800093002F08010001518052F4220052EAD97083770043863EDA8F5A2168155B4E3CCDC635BAF3CBA7D1FA2D90D40D52B6410638D7363619CB07545C40680DE93EB2792E7AD388A937A73E065AD884739A9FC53D5B070AADCB09BBA917B0C4CE7E7025B07614A82E64BB283E454FB35DE85C96CE9E61041ACA4E335276FC17052FAF5F2FD9FB032564978B6A5F8F320BAE82DD9504F4 +build. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Q4Y+2o9aIWgVW048zcY1uvPLp9H6LZDUDVK2QQY41zY2GcsHVFxAaA3pPrJ5LnrTiKk3pz4GWtiEc5qfxT1bBwqtywm7qRewxM5+cCWwdhSoLmS7KD5FT7Nd6FyWzp5hBBrKTjNSdvwXBS+vXy/Z+wMlZJeLal+PMguugt2VBPQ= ;{id = 33655} +056275696C6400002F0001000151800012086275696C64657273000006200000000013 +build. 86400 IN NSEC builders. NS DS RRSIG NSEC +0161036E6963056275696C6400000100010002A300000425D1C00A +a.nic.build. 172800 IN A 37.209.192.10 +0161036E6963056275696C6400001C00010002A300001020010DCD000100000000000000000010 +a.nic.build. 172800 IN AAAA 2001:dcd:1::10 +0162036E6963056275696C6400000100010002A300000425D1C20A +b.nic.build. 172800 IN A 37.209.194.10 +0162036E6963056275696C6400001C00010002A300001020010DCD000200000000000000000010 +b.nic.build. 172800 IN AAAA 2001:dcd:2::10 +0163036E6963056275696C6400000100010002A300000425D1C40A +c.nic.build. 172800 IN A 37.209.196.10 +0163036E6963056275696C6400001C00010002A300001020010DCD000300000000000000000010 +c.nic.build. 172800 IN AAAA 2001:dcd:3::10 +0164036E6963056275696C6400000100010002A300000425D1C60A +d.nic.build. 172800 IN A 37.209.198.10 +0164036E6963056275696C6400001C00010002A300001020010DCD000400000000000000000010 +d.nic.build. 172800 IN AAAA 2001:dcd:4::10 +086275696C6465727300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +builders. 172800 IN NS demand.beta.aridns.net.au. +086275696C6465727300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +builders. 172800 IN NS demand.alpha.aridns.net.au. +086275696C6465727300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +builders. 172800 IN NS demand.delta.aridns.net.au. +086275696C6465727300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +builders. 172800 IN NS demand.gamma.aridns.net.au. +086275696C6465727300002B0001000151800024E587080237BDBEAC742E662C91717356028143903ECD1DE08FA2D8CAA5367790A94D3110 +builders. 86400 IN DS 58759 8 2 37BDBEAC742E662C91717356028143903ECD1DE08FA2D8CAA5367790A94D3110 +086275696C6465727300002E0001000151800093002B08010001518052F4220052EAD9708377003AE62AD5728252FB39429B8512C746708CE5B6ECAA1CA2514AFD31B2283F521290DAB4039B7A019033EBD888CD6595F64579DA0CD72AC107A72BA4446A9C237112EA34C2FA95AD17693E8D2CCFEEBEC106A416F57E802D9721DEF271F18493D0E1EF78FF2675296D7BE31298A1546A93AE6C648C7CC34010FE4FC912EB408867 +builders. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OuYq1XKCUvs5QpuFEsdGcIzltuyqHKJRSv0xsig/UhKQ2rQDm3oBkDPr2IjNZZX2RXnaDNcqwQenK6REapwjcRLqNML6la0XaT6NLM/uvsEGpBb1foAtlyHe8nHxhJPQ4e94/yZ1KW174xKYoVRqk65sZIx8w0AQ/k/JEutAiGc= ;{id = 33655} +086275696C6465727300002E0001000151800093002F08010001518052F4220052EAD97083770068DBF53368C5849CCC4CA270BAE751F05F40E03142BE86CEC37B0429D9DEAA1FC28237FD43B7DF07D040DD7CE5F9E2BDBB90CB14593F78AE4940616A018962E6D7D886322F067E5618BD741DD3006F8DAFEC77A82E68C0FB310E4E7F662A8A7B54E46FDECDF799C369C68B04352AC9B95A55136259E0057A0170BCF3CB2CE3D2 +builders. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aNv1M2jFhJzMTKJwuudR8F9A4DFCvobOw3sEKdneqh/Cgjf9Q7ffB9BA3Xzl+eK9u5DLFFk/eK5JQGFqAYli5tfYhjIvBn5WGL10HdMAb42v7HeoLmjA+zEOTn9mKop7VORv3s33mcNpxosENSrJuVpVE2JZ4AV6AXC888ss49I= ;{id = 33655} +086275696C6465727300002F000100015180000E0462757A7A000006200000000013 +builders. 86400 IN NSEC buzz. NS DS RRSIG NSEC +0462757A7A00000200010002A3000012036E733103646E73036E69630462757A7A00 +buzz. 172800 IN NS ns1.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733203646E73036E69630462757A7A00 +buzz. 172800 IN NS ns2.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733303646E73036E69630462757A7A00 +buzz. 172800 IN NS ns3.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733403646E73036E69630462757A7A00 +buzz. 172800 IN NS ns4.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733503646E73036E69630462757A7A00 +buzz. 172800 IN NS ns5.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733603646E73036E69630462757A7A00 +buzz. 172800 IN NS ns6.dns.nic.buzz. +0462757A7A00000200010002A3000012036E733703646E73036E69630462757A7A00 +buzz. 172800 IN NS ns7.dns.nic.buzz. +0462757A7A00002B0001000151800018BAF80801455F2C4738D8D597E70EE16AD30C249839C13EC9 +buzz. 86400 IN DS 47864 8 1 455F2C4738D8D597E70EE16AD30C249839C13EC9 +0462757A7A00002B0001000151800024BAF80802A7178B083CB8C38492BBA8B7BF71F2D86B892CD851FECB81EE2FFFB55097F78A +buzz. 86400 IN DS 47864 8 2 A7178B083CB8C38492BBA8B7BF71F2D86B892CD851FECB81EE2FFFB55097F78A +0462757A7A00002E0001000151800093002B08010001518052F4220052EAD9708377006BB20A3D9E90F4E94CFE9A61B5545F2EEF1BFD22B43AE542D8FA31E0011D31221B868D22BDA07812DC8DFD4801CBC0959760023BC6EE1F9C34CC6470C19874A6135037F45E5CDA7D1EA943B5C4D2A491789C8F15948AF72AD2499D82AC65E4303744AC919066DBCBC13F76AEFD6B2C92B873446FE01D616E5194148F4F105AC2 +buzz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . a7IKPZ6Q9OlM/pphtVRfLu8b/SK0OuVC2Pox4AEdMSIbho0ivaB4EtyN/UgBy8CVl2ACO8buH5w0zGRwwZh0phNQN/ReXNp9HqlDtcTSpJF4nI8VlIr3KtJJnYKsZeQwN0SskZBm28vBP3au/WsskrhzRG/gHWFuUZQUj08QWsI= ;{id = 33655} +0462757A7A00002E0001000151800093002F08010001518052F4220052EAD970837700587A3AE42FDCCDB9D589B31558A0FA904745381380F3F47C2BDE6CE60573E7E1AD4D95938A5BEAB50556E91959A9CE3798AAED94D47D42C09F80D21F779704D419746559AAFEB3F75864EB3EB8808D9E0D8A6324CF061A0734E556132DA7BBC09D93836D4C2C0327FF04AF3C1ED3148C2D264F860668C7367355D55E3FC04E7D +buzz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WHo65C/czbnVibMVWKD6kEdFOBOA8/R8K95s5gVz5+GtTZWTilvqtQVW6RlZqc43mKrtlNR9QsCfgNIfd5cE1Bl0ZVmq/rP3WGTrPriAjZ4NimMkzwYaBzTlVhMtp7vAnZODbUwsAyf/BK88HtMUjC0mT4YGaMc2c1XVXj/ATn0= ;{id = 33655} +0462757A7A00002F000100015180000C026276000006200000000013 +buzz. 86400 IN NSEC bv. NS DS RRSIG NSEC +036E733103646E73036E69630462757A7A00000100010002A30000049C9A901D +ns1.dns.nic.buzz. 172800 IN A 156.154.144.29 +036E733103646E73036E69630462757A7A00001C00010002A3000010261000A110710000000000000000001D +ns1.dns.nic.buzz. 172800 IN AAAA 2610:a1:1071::1d +036E733203646E73036E69630462757A7A00000100010002A30000049C9A911D +ns2.dns.nic.buzz. 172800 IN A 156.154.145.29 +036E733203646E73036E69630462757A7A00001C00010002A3000010261000A110720000000000000000001D +ns2.dns.nic.buzz. 172800 IN AAAA 2610:a1:1072::1d +036E733303646E73036E69630462757A7A00000100010002A30000049C9A9F1D +ns3.dns.nic.buzz. 172800 IN A 156.154.159.29 +036E733303646E73036E69630462757A7A00001C00010002A3000010261000A110730000000000000000001D +ns3.dns.nic.buzz. 172800 IN AAAA 2610:a1:1073::1d +036E733403646E73036E69630462757A7A00000100010002A30000049C9A9C1D +ns4.dns.nic.buzz. 172800 IN A 156.154.156.29 +036E733403646E73036E69630462757A7A00001C00010002A3000010261000A110740000000000000000001D +ns4.dns.nic.buzz. 172800 IN AAAA 2610:a1:1074::1d +036E733503646E73036E69630462757A7A00000100010002A30000049C9A9D1D +ns5.dns.nic.buzz. 172800 IN A 156.154.157.29 +036E733503646E73036E69630462757A7A00001C00010002A3000010261000A110750000000000000000001D +ns5.dns.nic.buzz. 172800 IN AAAA 2610:a1:1075::1d +036E733603646E73036E69630462757A7A00000100010002A30000049C9A9E1D +ns6.dns.nic.buzz. 172800 IN A 156.154.158.29 +036E733603646E73036E69630462757A7A00001C00010002A3000010261000A110760000000000000000001D +ns6.dns.nic.buzz. 172800 IN AAAA 2610:a1:1076::1d +036E733703646E73036E69630462757A7A00000100010002A3000004CF22050A +ns7.dns.nic.buzz. 172800 IN A 207.34.5.10 +036E733703646E73036E69630462757A7A00001C00010002A3000010200105037BBBFFFFFFFFFFFFFFFFFF7E +ns7.dns.nic.buzz. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +02627600000200010002A300000F026E6E07756E696E657474026E6F00 +bv. 172800 IN NS nn.uninett.no. +02627600000200010002A3000008036E6163026E6F00 +bv. 172800 IN NS nac.no. +02627600000200010002A300001206736572766572056E6F726475036E657400 +bv. 172800 IN NS server.nordu.net. +02627600002F000100015180000C026277000006200000000003 +bv. 86400 IN NSEC bw. NS RRSIG NSEC +02627600002E0001000151800093002F08010001518052F4220052EAD970837700308CE96A1A19E25F767BAF6D0A704CEA5FCB670BA153FD7C24A987CBF66F9BC6E8DC591F9E3EC9D7FA2DEC07C417F09C527823C8007A1E378BFD77C81EFC9456E0B60507DFB9E77441AEC8D4B1AFC86802FD30BFC92C06031C37E5E70EC18E6FA7E8C1C60117D3F184310AF9D6260A52CBD815FF546A5F85B371BF862C005A11 +bv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MIzpahoZ4l92e69tCnBM6l/LZwuhU/18JKmHy/Zvm8bo3Fkfnj7J1/ot7AfEF/CcUngjyAB6HjeL/XfIHvyUVuC2BQffued0Qa7I1LGvyGgC/TC/ySwGAxw35ecOwY5vp+jBxgEX0/GEMQr51iYKUsvYFf9Ual+Fs3G/hiwAWhE= ;{id = 33655} +02627700000200010002A300000C036E73310362746302627700 +bw. 172800 IN NS ns1.btc.bw. +02627700000200010002A300001003706368036E6963036E657402627700 +bw. 172800 IN NS pch.nic.net.bw. +02627700000200010002A300001104646E7331036E6963036E657402627700 +bw. 172800 IN NS dns1.nic.net.bw. +02627700000200010002A300001104646E7332036E6963036E657402627700 +bw. 172800 IN NS dns2.nic.net.bw. +02627700000200010002A3000013056E732D627707616672696E6963036E657400 +bw. 172800 IN NS ns-bw.afrinic.net. +02627700002F000100015180000C026279000006200000000003 +bw. 86400 IN NSEC by. NS RRSIG NSEC +02627700002E0001000151800093002F08010001518052F4220052EAD97083770057C274850D0F122B501E478B0EB143DDA0A0309242993423EBC67839E253FC62975AF0D5319C7D51AACE1F273FACE3ECE5D6F3C330172CCE770E8762836BAA14D5FBA4A00C6F3F6F5E070173C71C50A9C592D43FACB36243CAC4569297D4566CAAE3923BE0964AAB9FDF6495C05B086A31086AA108C932D44ED4744A482B6C03 +bw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . V8J0hQ0PEitQHkeLDrFD3aCgMJJCmTQj68Z4OeJT/GKXWvDVMZx9UarOHyc/rOPs5dbzwzAXLM53Dodig2uqFNX7pKAMbz9vXgcBc8ccUKnFktQ/rLNiQ8rEVpKX1FZsquOSO+CWSquf32SVwFsIajEIaqEIyTLUTtR0SkgrbAM= ;{id = 33655} +036E73310362746302627700000100010002A3000004A8A7A822 +ns1.btc.bw. 172800 IN A 168.167.168.34 +04646E7331036E6963036E657402627700000100010002A3000004A8A762E2 +dns1.nic.net.bw. 172800 IN A 168.167.98.226 +04646E7332036E6963036E657402627700000100010002A3000004A8A762DA +dns2.nic.net.bw. 172800 IN A 168.167.98.218 +03706368036E6963036E657402627700000100010002A3000004CC3DD846 +pch.nic.net.bw. 172800 IN A 204.61.216.70 +02627900000200010002A300001404646E733103746C6405747574627903636F6D00 +by. 172800 IN NS dns1.tld.tutby.com. +02627900000200010002A300001404646E733203746C6405747574627903636F6D00 +by. 172800 IN NS dns2.tld.tutby.com. +02627900000200010002A300001404646E733303746C6405747574627903636F6D00 +by. 172800 IN NS dns3.tld.tutby.com. +02627900000200010002A300001404646E733403746C6405747574627903636F6D00 +by. 172800 IN NS dns4.tld.tutby.com. +02627900000200010002A300001404646E733503746C6405747574627903636F6D00 +by. 172800 IN NS dns5.tld.tutby.com. +02627900000200010002A300001404646E733603746C6405747574627903636F6D00 +by. 172800 IN NS dns6.tld.tutby.com. +02627900000200010002A300001404646E733703746C6405747574627903636F6D00 +by. 172800 IN NS dns7.tld.tutby.com. +02627900002B0001000151800018AB630701B5667014733F0FD07D096B2FA2AD175186ADF48C +by. 86400 IN DS 43875 7 1 B5667014733F0FD07D096B2FA2AD175186ADF48C +02627900002B0001000151800024AB63070227A33067E54A8C4CEE091DB22156EF02A79A76CCC1E48D6D195DFEF6D520C48E +by. 86400 IN DS 43875 7 2 27A33067E54A8C4CEE091DB22156EF02A79A76CCC1E48D6D195DFEF6D520C48E +02627900002E0001000151800093002B08010001518052F4220052EAD9708377003E1EBA3627267B788CCBA03DB03DE9B122E0A1726E7CA9E218FD828D0298E5E74C334B7A7AFC16A317CC51BFB588274FAA58016C19A10BC9738CF7FBAAFC8BBCCFE73DC3BDADFF628329764C4D84020CBFC4401BDA4BE67B2A85BEF19D7D1ABDD38B5D5264FD63AFFC573CAA4BB71F595771093D25C95E6C3D0CD81D1FBEEE39 +by. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ph66Nicme3iMy6A9sD3psSLgoXJufKniGP2CjQKY5edMM0t6evwWoxfMUb+1iCdPqlgBbBmhC8lzjPf7qvyLvM/nPcO9rf9igyl2TE2EAgy/xEAb2kvmeyqFvvGdfRq904tdUmT9Y6/8VzyqS7cfWVdxCT0lyV5sPQzYHR++7jk= ;{id = 33655} +02627900002E0001000151800093002F08010001518052F4220052EAD9708377000DD508934BEDBC667D2DE39EE26807EB4A32B7343C084FAE54353BDC019411ABED4A1296DEFFC5DA2961ABDD004E20BC2F06D8D6AE3BD388634AE590B8CF81C015A15B09EDF78FD2B9CD206BAEBDE369E62AF6415802BEDD37D5DF11E4BDC78D8723C1CD6457D724178D1C202ECB78C6B6C7FBF92C790CC940BD1DE5966AB12B +by. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DdUIk0vtvGZ9LeOe4mgH60oytzQ8CE+uVDU73AGUEavtShKW3v/F2ilhq90ATiC8LwbY1q4704hjSuWQuM+BwBWhWwnt94/Suc0ga66942nmKvZBWAK+3TfV3xHkvceNhyPBzWRX1yQXjRwgLst4xrbH+/kseQzJQL0d5ZZqsSs= ;{id = 33655} +02627900002F000100015180000C02627A000006200000000013 +by. 86400 IN NSEC bz. NS DS RRSIG NSEC +02627A00000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +bz. 172800 IN NS a0.cctld.afilias-nst.info. +02627A00000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +bz. 172800 IN NS a2.cctld.afilias-nst.info. +02627A00000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +bz. 172800 IN NS b0.cctld.afilias-nst.org. +02627A00000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +bz. 172800 IN NS b2.cctld.afilias-nst.org. +02627A00000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +bz. 172800 IN NS c0.cctld.afilias-nst.info. +02627A00000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +bz. 172800 IN NS d0.cctld.afilias-nst.org. +02627A00002B000100015180001840470701409AA5CD776352AEAB7A46B64EE7BA8061CB9374 +bz. 86400 IN DS 16455 7 1 409AA5CD776352AEAB7A46B64EE7BA8061CB9374 +02627A00002B000100015180002440470702457C64669C357AF4AABDEB16A6A119B22D3FCB339BBF3C1701AA84CBC3E105F3 +bz. 86400 IN DS 16455 7 2 457C64669C357AF4AABDEB16A6A119B22D3FCB339BBF3C1701AA84CBC3E105F3 +02627A00002E0001000151800093002B08010001518052F4220052EAD970837700A9980F8BB3D4BF044A8077C9B7CC0A338C8C5F30924614233ED754CE183ACF800509261E408A6524308ADFBBBF36662D14C08B847462FA23CFAE6A962DDD9B2ECA22DF2E5D30CE84AC239EC07EF1E95F246CEAC9E02C10BE88A2FAEC6A8CCA2E3C1AB26093079A900B17B0D11C2DEED4851D45658C555840039EAAEF9A16518E +bz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qZgPi7PUvwRKgHfJt8wKM4yMXzCSRhQjPtdUzhg6z4AFCSYeQIplJDCK37u/NmYtFMCLhHRi+iPPrmqWLd2bLsoi3y5dMM6ErCOewH7x6V8kbOrJ4CwQvoii+uxqjMouPBqyYJMHmpALF7DRHC3u1IUdRWWMVVhAA56q75oWUY4= ;{id = 33655} +02627A00002E0001000151800093002F08010001518052F4220052EAD97083770072BEAD02BE1FFC922302567AAE18566EA742DE49F3730111BF6D14F524BBE55BB1C021009B1997917E5117371605CD3E758CAE95816DFE8C34E41D81D2F5AB6D1BEC2EBB89FF4FF552655D84152F0B47CA1751FE79C5C1E27112208DA6F598882A55D9733C7EBA9E76286A562DAF257200F63911091580CF5E978F06F667DF37 +bz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cr6tAr4f/JIjAlZ6rhhWbqdC3knzcwERv20U9SS75VuxwCEAmxmXkX5RFzcWBc0+dYyulYFt/ow05B2B0vWrbRvsLruJ/0/1UmVdhBUvC0fKF1H+ecXB4nESII2m9ZiIKlXZczx+up52KGpWLa8lcgD2OREJFYDPXpePBvZn3zc= ;{id = 33655} +02627A00002F000100015180000C026361000006200000000013 +bz. 86400 IN NSEC ca. NS DS RRSIG NSEC +02636100002F000100015180000D03636162000006200000000013 +ca. 86400 IN NSEC cab. NS DS RRSIG NSEC +02636100002E0001000151800093002F08010001518052F4220052EAD97083770010BA51D4E5F8859320EC5F3F091987EC8F1FBB46FC376E9174D1D875F39B7C21CAAE62C833B198FBBE33331FD1215022F6A20A1C9DE09B8076716943EF07C93B179E28319CE2F936D75EA7B4660F3BB05FA120BAC5A4AB1B5F1F13F58AFA7D828DD17C9AD809554C3285AECE2D558018C81729C081FDDA8742BD07359866C855 +ca. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ELpR1OX4hZMg7F8/CRmH7I8fu0b8N26RdNHYdfObfCHKrmLIM7GY+74zMx/RIVAi9qIKHJ3gm4B2cWlD7wfJOxeeKDGc4vk2116ntGYPO7BfoSC6xaSrG18fE/WK+n2CjdF8mtgJVUwyha7OLVWAGMgXKcCB/dqHQr0HNZhmyFU= ;{id = 33655} +02636100002E0001000151800093002B08010001518052F4220052EAD9708377006CD3BB9B2C5B48DA7F336ACFE127707EDCA5BF3A3DD718FE80D964900999E471EF92F587EB49638FDBF74DD8686D59FBCF7A9FA2788A27AD2AC4FD3BECC6972A5337B6D2ED4FD01B3C91EABA524C012ECA9749253690F4B3370060DDE916AC6B7370505168417950B0B6D8625DEB098E4B5EC06D620F6575596E1EDFFB1DB360 +ca. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bNO7myxbSNp/M2rP4Sdwftylvzo91xj+gNlkkAmZ5HHvkvWH60ljj9v3TdhobVn7z3qfoniKJ60qxP077MaXKlM3ttLtT9AbPJHqulJMAS7Kl0klNpD0szcAYN3pFqxrc3BQUWhBeVCwtthiXesJjktewG1iD2V1WW4e3/sds2A= ;{id = 33655} +02636100000200010002A300001101630A63612D7365727665727302636100 +ca. 172800 IN NS c.ca-servers.ca. +02636100000200010002A300001101650A63612D7365727665727302636100 +ca. 172800 IN NS e.ca-servers.ca. +02636100000200010002A3000011016A0A63612D7365727665727302636100 +ca. 172800 IN NS j.ca-servers.ca. +02636100000200010002A3000011016B0A63612D7365727665727302636100 +ca. 172800 IN NS k.ca-servers.ca. +02636100000200010002A3000011016C0A63612D7365727665727302636100 +ca. 172800 IN NS l.ca-servers.ca. +02636100000200010002A3000011017A0A63612D7365727665727302636100 +ca. 172800 IN NS z.ca-servers.ca. +02636100000200010002A300001303616E790A63612D7365727665727302636100 +ca. 172800 IN NS any.ca-servers.ca. +02636100000200010002A300001103746C64076973632D736E73036E657400 +ca. 172800 IN NS tld.isc-sns.net. +02636100000200010002A300001006736E732D706203697363036F726700 +ca. 172800 IN NS sns-pb.isc.org. +02636100002B000100015180002427DF08027187A87B74FFF32A8549A05BE7E12F1D8BEDD0DEA9C3D864095D83BF7C542A8F +ca. 86400 IN DS 10207 8 2 7187A87B74FFF32A8549A05BE7E12F1D8BEDD0DEA9C3D864095D83BF7C542A8F +03616E790A63612D7365727665727302636100000100010002A3000004C7049002 +any.ca-servers.ca. 172800 IN A 199.4.144.2 +03616E790A63612D7365727665727302636100001C00010002A30000102001050000A700000000000000000002 +any.ca-servers.ca. 172800 IN AAAA 2001:500:a7::2 +01630A63612D7365727665727302636100000100010002A3000004C0E41C09 +c.ca-servers.ca. 172800 IN A 192.228.28.9 +01650A63612D7365727665727302636100000100010002A3000004C0E41E09 +e.ca-servers.ca. 172800 IN A 192.228.30.9 +016A0A63612D7365727665727302636100000100010002A3000004C6B6A701 +j.ca-servers.ca. 172800 IN A 198.182.167.1 +016A0A63612D7365727665727302636100001C00010002A300001020010500008300000000000000000001 +j.ca-servers.ca. 172800 IN AAAA 2001:500:83::1 +016B0A63612D7365727665727302636100000100010002A30000049C9A6404 +k.ca-servers.ca. 172800 IN A 156.154.100.4 +016C0A63612D7365727665727302636100000100010002A30000049C9A6504 +l.ca-servers.ca. 172800 IN A 156.154.101.4 +017A0A63612D7365727665727302636100000100010002A3000004C0E41942 +z.ca-servers.ca. 172800 IN A 192.228.25.66 +07636861726C6573046364656307706F6C796D746C02636100000100010002A300000484CF9002 +charles.cdec.polymtl.ca. 172800 IN A 132.207.144.2 +0363616200000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +cab. 172800 IN NS demand.beta.aridns.net.au. +0363616200000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +cab. 172800 IN NS demand.alpha.aridns.net.au. +0363616200000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +cab. 172800 IN NS demand.delta.aridns.net.au. +0363616200000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +cab. 172800 IN NS demand.gamma.aridns.net.au. +0363616200002B00010001518000244F0F0802E03C2DF189D39BD14C37695B586DA73C58C89B39050DC9E618A97886B3A757BD +cab. 86400 IN DS 20239 8 2 E03C2DF189D39BD14C37695B586DA73C58C89B39050DC9E618A97886B3A757BD +0363616200002E0001000151800093002B08010001518052F4220052EAD970837700791FBC898E17EAEBD92384A5483D3CC2A60C3CCD308D81294BA974922FBFBBCBED2B004CDC93CB1343E55C7078E426AFB75A89D89FE5FB4425ACF2FA9D8C07672085FF96052B1F321AF6BD21E0416CB97492793C8A6258F3991B95A9A2ACE5ED173472E68E133304EB004CB6152FEEDD133F9D11CAFA8E732D5B3EDD86ADDFF9 +cab. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eR+8iY4X6uvZI4SlSD08wqYMPM0wjYEpS6l0ki+/u8vtKwBM3JPLE0PlXHB45Cavt1qJ2J/l+0QlrPL6nYwHZyCF/5YFKx8yGva9IeBBbLl0knk8imJY85kblamirOXtFzRy5o4TMwTrAEy2FS/u3RM/nRHK+o5zLVs+3Yat3/k= ;{id = 33655} +0363616200002E0001000151800093002F08010001518052F4220052EAD97083770007606FA23F5BAD2FF7FFEF29CCBC27B461024C8602B5B106F2206F8DA9D6DD51001D645B9AABC7C1742FB196AE461BE62E7AA15F43B40A357A2DFEE480F9A1E0766D44FE3FD177AF9AFBB4B85C9A8DDAEF6860C38C5DA37E490922D303EF99C90A92F271DBC49E9339ECE714B53D16EE56D07B0C1CB47A8D6CA4D49184144F49 +cab. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B2Bvoj9brS/3/+8pzLwntGECTIYCtbEG8iBvjanW3VEAHWRbmqvHwXQvsZauRhvmLnqhX0O0CjV6Lf7kgPmh4HZtRP4/0Xevmvu0uFyajdrvaGDDjF2jfkkJItMD75nJCpLycdvEnpM57OcUtT0W7lbQewwctHqNbKTUkYQUT0k= ;{id = 33655} +0363616200002F00010001518000100663616D657261000006200000000013 +cab. 86400 IN NSEC camera. NS DS RRSIG NSEC +0663616D65726100000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +camera. 172800 IN NS demand.beta.aridns.net.au. +0663616D65726100000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +camera. 172800 IN NS demand.alpha.aridns.net.au. +0663616D65726100000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +camera. 172800 IN NS demand.delta.aridns.net.au. +0663616D65726100000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +camera. 172800 IN NS demand.gamma.aridns.net.au. +0663616D65726100002B0001000151800024D4710802DDD1231F35667A209FEAF0749906B8DBDA96CF1F9ED224C519B74FEB22F4888F +camera. 86400 IN DS 54385 8 2 DDD1231F35667A209FEAF0749906B8DBDA96CF1F9ED224C519B74FEB22F4888F +0663616D65726100002E0001000151800093002B08010001518052F4220052EAD9708377000BFA8E55C6386036196B0A519287C1FC1468FF599AD4922D5653FB6B6C2B7A536ED7A66F9F48ACC8F4C1528EA0F67DF6FFEB1F7FCB87A1B91EA2BAD336D6B2903D9EB6968A5AA907892F7A3A93BEB5FF5C77C70BA8631BDC62C13ADFF3B3742ED165C8DD7BB5EBC9B1A7F891AFB880E09974191F2E5FDDF57ACD25238C0D6899 +camera. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . C/qOVcY4YDYZawpRkofB/BRo/1ma1JItVlP7a2wrelNu16Zvn0isyPTBUo6g9n32/+sff8uHobkeorrTNtaykD2etpaKWqkHiS96OpO+tf9cd8cLqGMb3GLBOt/zs3Qu0WXI3Xu168mxp/iRr7iA4Jl0GR8uX931es0lI4wNaJk= ;{id = 33655} +0663616D65726100002E0001000151800093002F08010001518052F4220052EAD9708377002F17499045E384BFABC8FC45B2E418A1773EB8027D1E64D5722C8D4DD2F1806E746A17B10D189861E80DEBBD26B0F0E3A5ADC42CC68995C8ACD8AB93EC6614FBD5A79E3FB5C0B2A0E6A67BD7EFF5D227A1A0DA206467DC686EEE6DA8C5D07F57A6641007A03DD271DFBAF38D27A831528782B9F8660C9F540F894BD2B883DB10 +camera. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LxdJkEXjhL+ryPxFsuQYoXc+uAJ9HmTVciyNTdLxgG50ahexDRiYYegN670msPDjpa3ELMaJlcis2KuT7GYU+9Wnnj+1wLKg5qZ71+/10iehoNogZGfcaG7ubajF0H9XpmQQB6A90nHfuvONJ6gxUoeCufhmDJ9UD4lL0riD2xA= ;{id = 33655} +0663616D65726100002F000100015180000E0463616D70000006200000000013 +camera. 86400 IN NSEC camp. NS DS RRSIG NSEC +0463616D7000000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +camp. 172800 IN NS demand.beta.aridns.net.au. +0463616D7000000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +camp. 172800 IN NS demand.alpha.aridns.net.au. +0463616D7000000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +camp. 172800 IN NS demand.delta.aridns.net.au. +0463616D7000000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +camp. 172800 IN NS demand.gamma.aridns.net.au. +0463616D7000002B0001000151800024FB8C0802D2EDC9BFB5D3C98A155ACE7F93957C54EA8938F4E7AEDF32444A8D9E57AE69ED +camp. 86400 IN DS 64396 8 2 D2EDC9BFB5D3C98A155ACE7F93957C54EA8938F4E7AEDF32444A8D9E57AE69ED +0463616D7000002E0001000151800093002B08010001518052F4220052EAD9708377007BFA39053FBD90EF69305258AED090F12E985D4CD98285F8339A00691F3C40CA2BE1D7CDEEEDC1674CC12965415524AC45A9608A11073CFDE4628A629ABADCA8217F362BDEEF23B291280F49B8DA9E53D8163310F244833C4D40B2D84C9B3852B78CBE28432C85710EC3326A23460DE34BE478F89AEA452A5D0B91EA7A2A1CFC +camp. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . e/o5BT+9kO9pMFJYrtCQ8S6YXUzZgoX4M5oAaR88QMor4dfN7u3BZ0zBKWVBVSSsRalgihEHPP3kYopimrrcqCF/Nive7yOykSgPSbjanlPYFjMQ8kSDPE1AsthMmzhSt4y+KEMshXEOwzJqI0YN40vkePia6kUqXQuR6noqHPw= ;{id = 33655} +0463616D7000002E0001000151800093002F08010001518052F4220052EAD9708377000623398BF403A4C2CC22C9E9CE6DD579CD199F1A88D642CA9B79461F76F14EE1295B0502DA7C3B9970D628BD1A7F7A781013F4CCAF08BE57C5F8332EF2F1E05D2BA63ACF22610930685691658E70E81E85296D608D40CC081089F3A0BF4AB3E72197D8F2342EE5ECBC177E17594D1702A4A9910228FB1E5340406A94EF299767 +camp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BiM5i/QDpMLMIsnpzm3Vec0ZnxqI1kLKm3lGH3bxTuEpWwUC2nw7mXDWKL0af3p4EBP0zK8IvlfF+DMu8vHgXSumOs8iYQkwaFaRZY5w6B6FKW1gjUDMCBCJ86C/SrPnIZfY8jQu5ey8F34XWU0XAqSpkQIo+x5TQEBqlO8pl2c= ;{id = 33655} +0463616D7000002F00010001518000110763617265657273000006200000000013 +camp. 86400 IN NSEC careers. NS DS RRSIG NSEC +076361726565727300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +careers. 172800 IN NS demand.beta.aridns.net.au. +076361726565727300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +careers. 172800 IN NS demand.alpha.aridns.net.au. +076361726565727300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +careers. 172800 IN NS demand.delta.aridns.net.au. +076361726565727300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +careers. 172800 IN NS demand.gamma.aridns.net.au. +076361726565727300002B00010001518000245D8808027EE0E65346C011F8EECC3A94C8668EA463CCA44CB8159F0E30D436FE920F0DA7 +careers. 86400 IN DS 23944 8 2 7EE0E65346C011F8EECC3A94C8668EA463CCA44CB8159F0E30D436FE920F0DA7 +076361726565727300002E0001000151800093002B08010001518052F4220052EAD970837700BCCA757EAEAFD7A56CC3D604F8BF72076500DA140E465102F9EEC8AFD74420916672B995CB51038388A185FF028DC9BE2C1B82B96B0A887F0F7517D1D7D287CF814E6ABDED1E2E1263848DAD5DC1375CEE3299EE0A2E675336D13208A019C10462B308BB706F3B298D25A65FD779DB02FCBF5F9E1ABFA12262A2F9AA8C9106DB +careers. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vMp1fq6v16Vsw9YE+L9yB2UA2hQORlEC+e7Ir9dEIJFmcrmVy1EDg4ihhf8Cjcm+LBuCuWsKiH8PdRfR19KHz4FOar3tHi4SY4SNrV3BN1zuMpnuCi5nUzbRMgigGcEEYrMIu3BvOymNJaZf13nbAvy/X54av6EiYqL5qoyRBts= ;{id = 33655} +076361726565727300002E0001000151800093002F08010001518052F4220052EAD9708377002A1219371FB098EC1685DF78B3DC051C58027FC2E1FD7297096C83932FCD713D1B20E9DF792539FD20FFE4423E1B7D8FCD2D57A9FA2A691075F66055792FCFA2D28B74E45B7C0548FD5B8A62221FA6001589EAC3AA670814F6032C1BE9B07181F560C0F99989E8234E4718874EAFEB5049C8C8966C1A6196148D25A3B232BBF6 +careers. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KhIZNx+wmOwWhd94s9wFHFgCf8Lh/XKXCWyDky/NcT0bIOnfeSU5/SD/5EI+G32PzS1XqfoqaRB19mBVeS/PotKLdORbfAVI/VuKYiIfpgAVierDqmcIFPYDLBvpsHGB9WDA+ZmJ6CNORxiHTq/rUEnIyJZsGmGWFI0lo7Iyu/Y= ;{id = 33655} +076361726565727300002F000100015180000D03636174000006200000000013 +careers. 86400 IN NSEC cat. NS DS RRSIG NSEC +0363617400000200010002A300000C026E73036E69630363617400 +cat. 172800 IN NS ns.nic.cat. +0363617400000200010002A300000D0363617403706368036E657400 +cat. 172800 IN NS cat.pch.net. +0363617400000200010002A300000C036E7331036E696302657300 +cat. 172800 IN NS ns1.nic.es. +0363617400000200010002A300000C036E7363036E696302646500 +cat. 172800 IN NS nsc.nic.de. +0363617400000200010002A300000904646E736302616400 +cat. 172800 IN NS dnsc.ad. +0363617400000200010002A300001305616E7963310769726F6E646E73036E657400 +cat. 172800 IN NS anyc1.irondns.net. +0363617400000200010002A300001006736E732D706203697363036F726700 +cat. 172800 IN NS sns-pb.isc.org. +0363617400000200010002A300001006737769746368036E69630363617400 +cat. 172800 IN NS switch.nic.cat. +0363617400002B0001000151800024829C0A02E1A0FC89B87F5E7F6B354D364CF704855A2E9A52B7F39BBE4E2BEA443B81B18E +cat. 86400 IN DS 33436 10 2 E1A0FC89B87F5E7F6B354D364CF704855A2E9A52B7F39BBE4E2BEA443B81B18E +0363617400002E0001000151800093002B08010001518052F4220052EAD97083770007815B2CAF88A7568D3CA903016DBBCE12C347A788E1963B9C786768CBBE3F8B79C135DA76F78A767766746963ABD790F568778683F6B2F185C23EED08A943EA9142F35A7F4C2222210C679BEF488A5AA7DA060E96E9CA84943FD936ACE3206E7C53569E73122F10C4B41EB8CF93AF662EAC0269DF7E012B876F907F3EF9CC20 +cat. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . B4FbLK+Ip1aNPKkDAW27zhLDR6eI4ZY7nHhnaMu+P4t5wTXadveKdndmdGljq9eQ9Wh3hoP2svGFwj7tCKlD6pFC81p/TCIiIQxnm+9Iilqn2gYOlunKhJQ/2Tas4yBufFNWnnMSLxDEtB64z5OvZi6sAmnffgErh2+Qfz75zCA= ;{id = 33655} +0363617400002E0001000151800093002F08010001518052F4220052EAD97083770042E6107CAD936400633547F0318191A72182A0FEED237FA23194AC33B8CA4B4630621C59CB1A619CF90EA37D74BA7D544B69553F1FDA83971776D19B71FE8E61BCB90F7FAC145F4640FCA150F4837F0635EBFFE283130B5638EFBCA0A5419B377D827FA1CE75DF9F5676C0E7787E15D8AF4679A4EB4ADF40044923E7091222D4 +cat. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QuYQfK2TZABjNUfwMYGRpyGCoP7tI3+iMZSsM7jKS0YwYhxZyxphnPkOo310un1US2lVPx/ag5cXdtGbcf6OYby5D3+sFF9GQPyhUPSDfwY16//igxMLVjjvvKClQZs3fYJ/oc51359WdsDneH4V2K9GeaTrSt9ABEkj5wkSItQ= ;{id = 33655} +0363617400002F000100015180000C026363000006200000000013 +cat. 86400 IN NSEC cc. NS DS RRSIG NSEC +026E73036E69630363617400000100010002A3000004545800A2 +ns.nic.cat. 172800 IN A 84.88.0.162 +026E73036E69630363617400001C00010002A3000010200140B0000100030000000000000002 +ns.nic.cat. 172800 IN AAAA 2001:40b0:1:3::2 +06737769746368036E69630363617400000100010002A3000004823B8A31 +switch.nic.cat. 172800 IN A 130.59.138.49 +06737769746368036E69630363617400001C00010002A3000010200106200000001B505400FFFE748780 +switch.nic.cat. 172800 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 +02636300000200010002A300000E026135056E73746C6403636F6D00 +cc. 172800 IN NS a5.nstld.com. +02636300000200010002A300000E026335056E73746C6403636F6D00 +cc. 172800 IN NS c5.nstld.com. +02636300000200010002A300000E026435056E73746C6403636F6D00 +cc. 172800 IN NS d5.nstld.com. +02636300000200010002A300000E026635056E73746C6403636F6D00 +cc. 172800 IN NS f5.nstld.com. +02636300000200010002A300000E026735056E73746C6403636F6D00 +cc. 172800 IN NS g5.nstld.com. +02636300000200010002A300000E026835056E73746C6403636F6D00 +cc. 172800 IN NS h5.nstld.com. +02636300000200010002A300000E026C35056E73746C6403636F6D00 +cc. 172800 IN NS l5.nstld.com. +02636300002B0001000151800018020708017285EF05E1B4E679D4F072EEA9B00953E01F3AE2 +cc. 86400 IN DS 519 8 1 7285EF05E1B4E679D4F072EEA9B00953E01F3AE2 +02636300002B000100015180002402070802E1EC6495ABD34562E6F433DEE201E6C6A52CB10AF69C04D675DA692D2D566897 +cc. 86400 IN DS 519 8 2 E1EC6495ABD34562E6F433DEE201E6C6A52CB10AF69C04D675DA692D2D566897 +02636300002E0001000151800093002B08010001518052F4220052EAD9708377008F5AD1724C4645C2B7EBF48ED9EFC82AFB1BD56B4733F2F38F0981555A271DC5DB26EC7A00B7BE7D2A40D942034195EAF81CFB723DE334CDADC57AAD3727748556921F8F01A76C1C45BBEB1798377CF9ECDAE94A7F7D22A4CD4C1AFD22E3BAEBED2A0DBD54A21AA74587DE2313FE93762BA14864D0E21279416101B0CF255B5E +cc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j1rRckxGRcK36/SO2e/IKvsb1WtHM/LzjwmBVVonHcXbJux6ALe+fSpA2UIDQZXq+Bz7cj3jNM2txXqtNyd0hVaSH48Bp2wcRbvrF5g3fPns2ulKf30ipM1MGv0i47rr7SoNvVSiGqdFh94jE/6TdiuhSGTQ4hJ5QWEBsM8lW14= ;{id = 33655} +02636300002E0001000151800093002F08010001518052F4220052EAD970837700BA0ABCEEA48382A40E0598A70823E77A064212BF38B390F7A012ACCD91B24444DD27F49B59FB7DB77DA636593ED0C953AACF7551B336CCC00E16CCA68F51BF2A73F468B4615A1FB96AA70137EA7EAAC947959B0F6F2C772D5F06306D98967F72D3AE9A143656A09A8238C9B9294FF729B084919F6BD8AB24F00D50B05561BE9F +cc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ugq87qSDgqQOBZinCCPnegZCEr84s5D3oBKszZGyRETdJ/SbWft9t32mNlk+0MlTqs91UbM2zMAOFsymj1G/KnP0aLRhWh+5aqcBN+p+qslHlZsPbyx3LV8GMG2Yln9y066aFDZWoJqCOMm5KU/3KbCEkZ9r2Ksk8A1QsFVhvp8= ;{id = 33655} +02636300002F000100015180000C026364000006200000000013 +cc. 86400 IN NSEC cd. NS DS RRSIG NSEC +02636400000200010002A300001303646E73097072696E6365746F6E0365647500 +cd. 172800 IN NS dns.princeton.edu. +02636400000200010002A3000010036E733103706368036E696302636400 +cd. 172800 IN NS ns1.pch.nic.cd. +02636400000200010002A30000100569677562750473616978036E657400 +cd. 172800 IN NS igubu.saix.net. +02636400000200010002A300001106736162656C610473616978036E657400 +cd. 172800 IN NS sabela.saix.net. +02636400002F00010001518000100663656E746572000006200000000003 +cd. 86400 IN NSEC center. NS RRSIG NSEC +02636400002E0001000151800093002F08010001518052F4220052EAD9708377004477776738E7D7511A13B54FBD70057800A9D4DBEC59AFB9266758598D4541F33D05A79AB225D1F2E46260AAEAB8AA3A94459FF1EC4CFAB673566044B713DE54238DF4EB256F9F11BA908C6629E64448D389417787EC45AB3C2E293C04F06C4E57F618E0C72784041863503E665DD0D790B7F6EC1FCEEEF39301A5E58A2F2C11 +cd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RHd3Zzjn11EaE7VPvXAFeACp1NvsWa+5JmdYWY1FQfM9BaeasiXR8uRiYKrquKo6lEWf8exM+rZzVmBEtxPeVCON9Oslb58RupCMZinmREjTiUF3h+xFqzwuKTwE8GxOV/YY4McnhAQYY1A+Zl3Q15C39uwfzu7zkwGl5YovLBE= ;{id = 33655} +036E733103706368036E696302636400000100010002A3000004CC3DD842 +ns1.pch.nic.cd. 172800 IN A 204.61.216.66 +036E733103706368036E696302636400001C00010002A3000010200105000014606600AD000000000001 +ns1.pch.nic.cd. 172800 IN AAAA 2001:500:14:6066:ad::1 +0663656E74657200000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +center. 172800 IN NS demand.beta.aridns.net.au. +0663656E74657200000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +center. 172800 IN NS demand.alpha.aridns.net.au. +0663656E74657200000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +center. 172800 IN NS demand.delta.aridns.net.au. +0663656E74657200000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +center. 172800 IN NS demand.gamma.aridns.net.au. +0663656E74657200002B0001000151800024EE840802F7B5230B71155E51F6E9EBE8467338CA2644DC34B08722E33105D498A9226ACD +center. 86400 IN DS 61060 8 2 F7B5230B71155E51F6E9EBE8467338CA2644DC34B08722E33105D498A9226ACD +0663656E74657200002E0001000151800093002B08010001518052F4220052EAD9708377009AF478BFE06F1D78657336BAD10EB03F1F3F283CAF962D52739C16DFAB15CD0EB5D6E95614D84D2B45E91EE75AAEFB4D65C729F5E143B32D60E249B3EFF7816779F2146523B2FC213DB886F49430BC8F7807DF22A5978E1DBF7641F0504AD0C0D7B24D5B945D69E6648AE0BF93A8FF7ACA20DDF85C73D104D2D35B7AF8E529C9 +center. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . mvR4v+BvHXhlcza60Q6wPx8/KDyvli1Sc5wW36sVzQ611ulWFNhNK0XpHudarvtNZccp9eFDsy1g4kmz7/eBZ3nyFGUjsvwhPbiG9JQwvI94B98ipZeOHb92QfBQStDA17JNW5RdaeZkiuC/k6j/esog3fhcc9EE0tNbevjlKck= ;{id = 33655} +0663656E74657200002E0001000151800093002F08010001518052F4220052EAD9708377007986FA080B7186D44CFC739624603AF49F6AA9EF301AB16740D04091BD449E4958C0818B3BEDD374E577F2D4D2C65D45F113924090D1981A566C35B56D48146A8398A7A8BC7995824E99E3BE13CB16202988F3EC7F27E12A8015AB6153E280EDE6F66126AC33702DC6F32BC681A3FE5A3C7DE0A7F7CA49F1A74D5C3B5BCA0622 +center. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eYb6CAtxhtRM/HOWJGA69J9qqe8wGrFnQNBAkb1EnklYwIGLO+3TdOV38tTSxl1F8ROSQJDRmBpWbDW1bUgUaoOYp6i8eZWCTpnjvhPLFiApiPPsfyfhKoAVq2FT4oDt5vZhJqwzcC3G8yvGgaP+Wjx94Kf3yknxp01cO1vKBiI= ;{id = 33655} +0663656E74657200002F000100015180000D0363656F000006200000000013 +center. 86400 IN NSEC ceo. NS DS RRSIG NSEC +0363656F00000200010002A3000011036E733103646E73036E69630363656F00 +ceo. 172800 IN NS ns1.dns.nic.ceo. +0363656F00000200010002A3000011036E733203646E73036E69630363656F00 +ceo. 172800 IN NS ns2.dns.nic.ceo. +0363656F00000200010002A3000011036E733303646E73036E69630363656F00 +ceo. 172800 IN NS ns3.dns.nic.ceo. +0363656F00000200010002A3000011036E733403646E73036E69630363656F00 +ceo. 172800 IN NS ns4.dns.nic.ceo. +0363656F00000200010002A3000011036E733503646E73036E69630363656F00 +ceo. 172800 IN NS ns5.dns.nic.ceo. +0363656F00000200010002A3000011036E733603646E73036E69630363656F00 +ceo. 172800 IN NS ns6.dns.nic.ceo. +0363656F00000200010002A3000011036E733703646E73036E69630363656F00 +ceo. 172800 IN NS ns7.dns.nic.ceo. +0363656F00002B0001000151800018F8C90801DB7A8F6AADCEE147D241A9778857E94707234D4E +ceo. 86400 IN DS 63689 8 1 DB7A8F6AADCEE147D241A9778857E94707234D4E +0363656F00002B0001000151800024F8C90802F2AB788C2802C3F219D53F37E7E1687ECF2E453E04BC5ABCC0B444FC0E35B1EE +ceo. 86400 IN DS 63689 8 2 F2AB788C2802C3F219D53F37E7E1687ECF2E453E04BC5ABCC0B444FC0E35B1EE +0363656F00002E0001000151800093002B08010001518052F4220052EAD9708377003E28A883B44983AEFF935E2AE1ADF4355DB45E7A09A7EB78DA99866D5180758CE87EB3FC61E2CA33AF608457A0E0FEACF0FD069545D9218F6E3C80A31FE5BAF6EB6BBE6C5103FAFA2DFD5E7DE7647DC867FEA4FBA9DE28E13B64BF8861AED9AEE3C5B128932D0B8E86DC775D1E7A6C369D8C8A238AF91B202C8A3FE2BF006EFA +ceo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Piiog7RJg67/k14q4a30NV20XnoJp+t42pmGbVGAdYzofrP8YeLKM69ghFeg4P6s8P0GlUXZIY9uPICjH+W69utrvmxRA/r6Lf1efedkfchn/qT7qd4o4Ttkv4hhrtmu48WxKJMtC46G3HddHnpsNp2MiiOK+RsgLIo/4r8Abvo= ;{id = 33655} +0363656F00002E0001000151800093002F08010001518052F4220052EAD9708377002EB284242AA039C0B40F3931EC0E9E30493794B7538CFCAF8F33F488629E3A0DE9BD4E8682789AD51F246479233781CB7B9710F943E298D8D3A7313988CBC6229E61DCE60301DDF91083D7A1DC0E0999CE070AD49849A3DA27B2A252EEB6A6038E6F5F3349D511775F63127C75252559489A863EFE2EAF1356ACF34CE0EE2994 +ceo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LrKEJCqgOcC0Dzkx7A6eMEk3lLdTjPyvjzP0iGKeOg3pvU6Ggnia1R8kZHkjN4HLe5cQ+UPimNjTpzE5iMvGIp5h3OYDAd35EIPXodwOCZnOBwrUmEmj2ieyolLutqYDjm9fM0nVEXdfYxJ8dSUlWUiahj7+Lq8TVqzzTODuKZQ= ;{id = 33655} +0363656F00002F000100015180000C026366000006200000000013 +ceo. 86400 IN NSEC cf. NS DS RRSIG NSEC +036E733103646E73036E69630363656F00000100010002A30000049C9A9025 +ns1.dns.nic.ceo. 172800 IN A 156.154.144.37 +036E733103646E73036E69630363656F00001C00010002A3000010261000A1107100000000000000000025 +ns1.dns.nic.ceo. 172800 IN AAAA 2610:a1:1071::25 +036E733203646E73036E69630363656F00000100010002A30000049C9A9125 +ns2.dns.nic.ceo. 172800 IN A 156.154.145.37 +036E733203646E73036E69630363656F00001C00010002A3000010261000A1107200000000000000000025 +ns2.dns.nic.ceo. 172800 IN AAAA 2610:a1:1072::25 +036E733303646E73036E69630363656F00000100010002A30000049C9A9F25 +ns3.dns.nic.ceo. 172800 IN A 156.154.159.37 +036E733303646E73036E69630363656F00001C00010002A3000010261000A1107300000000000000000025 +ns3.dns.nic.ceo. 172800 IN AAAA 2610:a1:1073::25 +036E733403646E73036E69630363656F00000100010002A30000049C9A9C25 +ns4.dns.nic.ceo. 172800 IN A 156.154.156.37 +036E733403646E73036E69630363656F00001C00010002A3000010261000A1107400000000000000000025 +ns4.dns.nic.ceo. 172800 IN AAAA 2610:a1:1074::25 +036E733503646E73036E69630363656F00000100010002A30000049C9A9D25 +ns5.dns.nic.ceo. 172800 IN A 156.154.157.37 +036E733503646E73036E69630363656F00001C00010002A3000010261000A1107500000000000000000025 +ns5.dns.nic.ceo. 172800 IN AAAA 2610:a1:1075::25 +036E733603646E73036E69630363656F00000100010002A30000049C9A9E25 +ns6.dns.nic.ceo. 172800 IN A 156.154.158.37 +036E733603646E73036E69630363656F00001C00010002A3000010261000A1107600000000000000000025 +ns6.dns.nic.ceo. 172800 IN AAAA 2610:a1:1076::25 +036E733703646E73036E69630363656F00000100010002A3000004CF22050A +ns7.dns.nic.ceo. 172800 IN A 207.34.5.10 +036E733703646E73036E69630363656F00001C00010002A3000010200105037BBBFFFFFFFFFFFFFFFFFF7E +ns7.dns.nic.ceo. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +02636600000200010002A30000090161026E7302636600 +cf. 172800 IN NS a.ns.cf. +02636600000200010002A30000090162026E7302636600 +cf. 172800 IN NS b.ns.cf. +02636600000200010002A30000090163026E7302636600 +cf. 172800 IN NS c.ns.cf. +02636600000200010002A30000090164026E7302636600 +cf. 172800 IN NS d.ns.cf. +02636600002F000100015180000C026367000006200000000003 +cf. 86400 IN NSEC cg. NS RRSIG NSEC +02636600002E0001000151800093002F08010001518052F4220052EAD9708377000891F034881C4A05BB302084454A9476BCFB9D4170CDE24D58FAE2275444C082F659E7D3F37B7983ADC3688072B79E9A9408309E813F7A5BC42B14CE132AE756C596872D1506B3469C386F6B96DA68ED3853B57A4EEEB660F4412045B212BE691F45DF2625CF1380CDD97FC7221CBB816880F8286E78A7FEB87B352CD98F58A7 +cf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CJHwNIgcSgW7MCCERUqUdrz7nUFwzeJNWPriJ1REwIL2WefT83t5g63DaIByt56alAgwnoE/elvEKxTOEyrnVsWWhy0VBrNGnDhva5baaO04U7V6Tu62YPRBIEWyEr5pH0XfJiXPE4DN2X/HIhy7gWiA+ChueKf+uHs1LNmPWKc= ;{id = 33655} +0161026E7302636600000100010002A3000004B915A811 +a.ns.cf. 172800 IN A 185.21.168.17 +0161026E7302636600001C00010002A30000102A041B00000400000000000000000001 +a.ns.cf. 172800 IN AAAA 2a04:1b00:4::1 +0162026E7302636600000100010002A3000004B915A911 +b.ns.cf. 172800 IN A 185.21.169.17 +0162026E7302636600001C00010002A30000102A041B00000500000000000000000001 +b.ns.cf. 172800 IN AAAA 2a04:1b00:5::1 +0163026E7302636600000100010002A3000004B915AA11 +c.ns.cf. 172800 IN A 185.21.170.17 +0163026E7302636600001C00010002A30000102A041B00000600000000000000000001 +c.ns.cf. 172800 IN AAAA 2a04:1b00:6::1 +0164026E7302636600000100010002A3000004B915AB11 +d.ns.cf. 172800 IN A 185.21.171.17 +0164026E7302636600001C00010002A30000102A041B00000700000000000000000001 +d.ns.cf. 172800 IN AAAA 2a04:1b00:7::1 +02636700000200010002A300001303646E7309646E73616672696361036E657400 +cg. 172800 IN NS dns.dnsafrica.net. +02636700000200010002A300001303646E73097072696E6365746F6E0365647500 +cg. 172800 IN NS dns.princeton.edu. +02636700000200010002A30000100573756E69630573756E657402736500 +cg. 172800 IN NS sunic.sunet.se. +02636700002F000100015180000C026368000006200000000003 +cg. 86400 IN NSEC ch. NS RRSIG NSEC +02636700002E0001000151800093002F08010001518052F4220052EAD9708377002AC6F474D9A33313CD9A116AB93DC2A647B5F181AF914D08847078E0605005FAECDFEAFEB258E3BE8A875B059A06E1D1C6ED044D2BD6E4FA76AC2BCFDB9CBEAB425561B6C7FAD00477010915E7EB8F74E78BFB4526DF7E6FA0902DEE461CA62C5423ECDFF2B205B1395058754ABE0D5F7E73754AF586D112438A5A8427E91C78 +cg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ksb0dNmjMxPNmhFquT3Cpke18YGvkU0IhHB44GBQBfrs3+r+sljjvoqHWwWaBuHRxu0ETSvW5Pp2rCvP25y+q0JVYbbH+tAEdwEJFefrj3Tni/tFJt9+b6CQLe5GHKYsVCPs3/KyBbE5UFh1Sr4NX35zdUr1htESQ4pahCfpHHg= ;{id = 33655} +02636800002F000100015180000F056368656170000006200000000013 +ch. 86400 IN NSEC cheap. NS DS RRSIG NSEC +02636800002E0001000151800093002F08010001518052F4220052EAD9708377003A9F12F842E3DE2B3173CA3FEC4C312D39087B728BE85A4D073CA532E52D64571FFDEB58B733E9D350CC6CA0D86117810E137FAD538DC526FCC7E687BD024E21CA421A566100916D46FB43C750CAB374C63F5CA366836C077EC431F0DA112C13A9EDD10E3D42B40C707FFBA4A4EA555D5F1C965EF5A5B46C9236F129CC58F89C +ch. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Op8S+ELj3isxc8o/7EwxLTkIe3KL6FpNBzylMuUtZFcf/etYtzPp01DMbKDYYReBDhN/rVONxSb8x+aHvQJOIcpCGlZhAJFtRvtDx1DKs3TGP1yjZoNsB37EMfDaESwTqe3RDj1CtAxwf/ukpOpVXV8cll71pbRskjbxKcxY+Jw= ;{id = 33655} +02636800002E0001000151800093002B08010001518052F4220052EAD97083770052642402CE60B1A4214441E3023CBEB01D1CF82A5A7D11DB2D825D8A90D3B97AACA0F4EEF231E883D8727455AE7C4C26CDF89DC302A9A839264E34DC8BE6630BB27F00A776E44BD4D8E340E1159C0A2E4784D42495EC99153C6913F4D26B881A8A506467232DF882ABE4484D970D3E8EBCC1A9CEE2186DF6E4C5C77DC4EEA91C +ch. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UmQkAs5gsaQhREHjAjy+sB0c+CpafRHbLYJdipDTuXqsoPTu8jHog9hydFWufEwmzfidwwKpqDkmTjTci+ZjC7J/AKd25EvU2ONA4RWcCi5HhNQkleyZFTxpE/TSa4gailBkZyMt+IKr5EhNlw0+jrzBqc7iGG325MXHfcTuqRw= ;{id = 33655} +02636800000200010002A300000A0161036E696302636800 +ch. 172800 IN NS a.nic.ch. +02636800000200010002A300000A0162036E696302636800 +ch. 172800 IN NS b.nic.ch. +02636800000200010002A300000A0163036E696302636800 +ch. 172800 IN NS c.nic.ch. +02636800000200010002A300000A0164036E696302636800 +ch. 172800 IN NS d.nic.ch. +02636800000200010002A300000A0165036E696302636800 +ch. 172800 IN NS e.nic.ch. +02636800000200010002A300000A0166036E696302636800 +ch. 172800 IN NS f.nic.ch. +02636800000200010002A300000A0168036E696302636800 +ch. 172800 IN NS h.nic.ch. +02636800002B0001000151800024611B08029AFD21261EAF98AFD7E24E89BE6B25767F93EB401C6C3DF21342F40EE82DCCF0 +ch. 86400 IN DS 24859 8 2 9AFD21261EAF98AFD7E24E89BE6B25767F93EB401C6C3DF21342F40EE82DCCF0 +026E730369747502636800000100010002A30000049C6AC079 +ns.itu.ch. 172800 IN A 156.106.192.121 +0161036E696302636800000100010002A3000004823B0150 +a.nic.ch. 172800 IN A 130.59.1.80 +0161036E696302636800001C00010002A300001020010620000000000000000000000004 +a.nic.ch. 172800 IN AAAA 2001:620::4 +0162036E696302636800000100010002A3000004823BD30A +b.nic.ch. 172800 IN A 130.59.211.10 +0162036E696302636800001C00010002A300001020010620000000000000000000000005 +b.nic.ch. 172800 IN AAAA 2001:620::5 +0163036E696302636800000100010002A3000004931C0027 +c.nic.ch. 172800 IN A 147.28.0.39 +0163036E696302636800001C00010002A300001020010418000100000000000000000039 +c.nic.ch. 172800 IN AAAA 2001:418:1::39 +0164036E696302636800000100010002A3000004C8A00005 +d.nic.ch. 172800 IN A 200.160.0.5 +0164036E696302636800001C00010002A3000010200112FF00000A200000000000000005 +d.nic.ch. 172800 IN AAAA 2001:12ff:0:a20::5 +0165036E696302636800000100010002A3000004C2001101 +e.nic.ch. 172800 IN A 194.0.17.1 +0165036E696302636800001C00010002A300001020010678000300000000000000000001 +e.nic.ch. 172800 IN AAAA 2001:678:3::1 +0166036E696302636800000100010002A3000004C2926A0A +f.nic.ch. 172800 IN A 194.146.106.10 +0166036E696302636800001C00010002A30000102001067C101000020000000000000053 +f.nic.ch. 172800 IN AAAA 2001:67c:1010:2::53 +0168036E696302636800000100010002A3000004C22A3078 +h.nic.ch. 172800 IN A 194.42.48.120 +036E73320673776974636802636800000100010002A3000004823B8A31 +ns2.switch.ch. 172800 IN A 130.59.138.49 +036E73320673776974636802636800001C00010002A3000010200106200000001B505400FFFE748780 +ns2.switch.ch. 172800 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 +05636865617000000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +cheap. 172800 IN NS demand.beta.aridns.net.au. +05636865617000000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +cheap. 172800 IN NS demand.alpha.aridns.net.au. +05636865617000000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +cheap. 172800 IN NS demand.delta.aridns.net.au. +05636865617000000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +cheap. 172800 IN NS demand.gamma.aridns.net.au. +05636865617000002B0001000151800024928308021F76AD552F924D9182B3D34973F8608A14458D8AE0C994C367FF3573289DE494 +cheap. 86400 IN DS 37507 8 2 1F76AD552F924D9182B3D34973F8608A14458D8AE0C994C367FF3573289DE494 +05636865617000002E0001000151800093002B08010001518052F4220052EAD9708377000005C07945E8B36781D07EEEE6D0D9E8F1495B521856ED26C68366519B383BCE6FBABDFD786D32A402E73582C05E7797F70A0135F53C827C07AFCD44D8E29201B2337834F860D214A2410ADB9393F101EE9F4AD45E4B75C9DF0BEA5C00E9C1232E1394B69D07F2141AEE37324FE18FAE7B9EF1CDD65DE6D7BCF3FFD72CC9F79C +cheap. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . AAXAeUXos2eB0H7u5tDZ6PFJW1IYVu0mxoNmUZs4O85vur39eG0ypALnNYLAXneX9woBNfU8gnwHr81E2OKSAbIzeDT4YNIUokEK25OT8QHun0rUXkt1yd8L6lwA6cEjLhOUtp0H8hQa7jcyT+GPrnue8c3WXebXvPP/1yzJ95w= ;{id = 33655} +05636865617000002E0001000151800093002F08010001518052F4220052EAD9708377009FEDCDEAE4C44F511BCD50F12989EFD4B8397B61002FCF2954034E8B1F1727A27E8086F2C6F927E407226C013008B28A8153981D6DC586306FA233EF2455AFA3DCDCC88A2841AA3F0DF31BAF285D44A75B74ABBF86F609789081A40FCC731384D3408892399ACFC57452B5B017B4F1915B9B4B0A2995B91FFBDEF96160D2D58C +cheap. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n+3N6uTET1EbzVDxKYnv1Lg5e2EAL88pVANOix8XJ6J+gIbyxvkn5AcibAEwCLKKgVOYHW3FhjBvojPvJFWvo9zcyIooQao/DfMbryhdRKdbdKu/hvYJeJCBpA/McxOE00CIkjmaz8V0UrWwF7TxkVubSwoplbkf+975YWDS1Yw= ;{id = 33655} +05636865617000002F000100015180000C026369000006200000000013 +cheap. 86400 IN NSEC ci. NS DS RRSIG NSEC +02636900000200010002A300001B026369056363746C640761757468646E730472697065036E657400 +ci. 172800 IN NS ci.cctld.authdns.ripe.net. +02636900000200010002A300001302636907686F7374696E67036E696302667200 +ci. 172800 IN NS ci.hosting.nic.fr. +02636900000200010002A300000B026E73036E696302636900 +ci. 172800 IN NS ns.nic.ci. +02636900000200010002A300000C036E73310369726402667200 +ci. 172800 IN NS ns1.ird.fr. +02636900000200010002A300000C036E7331036E696302636900 +ci. 172800 IN NS ns1.nic.ci. +02636900000200010002A3000013056E732D636907616672696E6963036E657400 +ci. 172800 IN NS ns-ci.afrinic.net. +02636900000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +ci. 172800 IN NS phloem.uoregon.edu. +02636900002F000100015180000C02636B000006200000000003 +ci. 86400 IN NSEC ck. NS RRSIG NSEC +02636900002E0001000151800093002F08010001518052F4220052EAD9708377008BE5B0B77BE6D891983FC7C3ACE27AAF9443FDEE0C35382136A8FBAFFDA6474020934D214C7381C342794ABF22D4088BA175817E97390B506F17F39D4F152ABA6ADE9EA168F50F76EA2680AB2BA9AC3F8959C452B45BDC7A88A0B175D055959FDAEE6B7E5EAB976FE36D9BF7C3686EAE146818A5EF636A805BD58971769B4068 +ci. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i+Wwt3vm2JGYP8fDrOJ6r5RD/e4MNTghNqj7r/2mR0Agk00hTHOBw0J5Sr8i1AiLoXWBfpc5C1BvF/OdTxUqumrenqFo9Q926iaAqyuprD+JWcRStFvceoigsXXQVZWf2u5rfl6rl2/jbZv3w2hurhRoGKXvY2qAW9WJcXabQGg= ;{id = 33655} +026E73036E696302636900000100010002A3000004D5886451 +ns.nic.ci. 172800 IN A 213.136.100.81 +036E7331036E696302636900000100010002A3000004D5886AD6 +ns1.nic.ci. 172800 IN A 213.136.106.214 +02636B00000200010002A3000015056369726361036D637303767577026163026E7A00 +ck. 172800 IN NS circa.mcs.vuw.ac.nz. +02636B00000200010002A3000015057061726175066F7973746572036E657402636B00 +ck. 172800 IN NS parau.oyster.net.ck. +02636B00000200010002A300001808706F697061726175066F7973746572036E657402636B00 +ck. 172800 IN NS poiparau.oyster.net.ck. +02636B00000200010002A300001909646F776E7374616765036D637303767577026163026E7A00 +ck. 172800 IN NS downstage.mcs.vuw.ac.nz. +02636B00002F000100015180000C02636C000006200000000003 +ck. 86400 IN NSEC cl. NS RRSIG NSEC +02636B00002E0001000151800093002F08010001518052F4220052EAD970837700131CB9EBA98E43E3D48B2400B76FD7BEE16871DFD07A4C3E43E7FE3D5CF81EBC780CA29B672A60AEA18653999154C82CBFDC918326477F5A3E96C6EDFE052FE9DC695043A938F6165806DA422A0BC078F793D9085807C9912BF90DEFEF56D368CEEED6BC030267976942D6A597309BE305B3ABE2356A0E1AC91C6EFC8CA27639 +ck. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Exy566mOQ+PUiyQAt2/XvuFocd/Qekw+Q+f+PVz4Hrx4DKKbZypgrqGGU5mRVMgsv9yRgyZHf1o+lsbt/gUv6dxpUEOpOPYWWAbaQioLwHj3k9kIWAfJkSv5De/vVtNozu7WvAMCZ5dpQtallzCb4wWzq+I1ag4ayRxu/Iyidjk= ;{id = 33655} +057061726175066F7973746572036E657402636B00000100010002A3000004CA412080 +parau.oyster.net.ck. 172800 IN A 202.65.32.128 +08706F697061726175066F7973746572036E657402636B00000100010002A3000004CA41207F +poiparau.oyster.net.ck. 172800 IN A 202.65.32.127 +02636C00002F000100015180001208636C6F7468696E67000006200000000013 +cl. 86400 IN NSEC clothing. NS DS RRSIG NSEC +02636C00002E0001000151800093002F08010001518052F4220052EAD970837700AF08C00EC1A397268981E25D34C884C29C59F1FEC7E88C632879E605F7224E72DBE00F23A87CF373D0D3187AE2967C2180023FF364DC2CC198BB67392FB5355004CF9D7987273039D77E785083BB07143FA4F1F8F5B7C29C6DD9CB2A1EBD7351A7533AF26B3D3CD35763F7FD6D3112AD9C19C9345DEF0234207421E349AC675A +cl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rwjADsGjlyaJgeJdNMiEwpxZ8f7H6IxjKHnmBfciTnLb4A8jqHzzc9DTGHrilnwhgAI/82TcLMGYu2c5L7U1UATPnXmHJzA51354UIO7BxQ/pPH49bfCnG3ZyyoevXNRp1M68ms9PNNXY/f9bTESrZwZyTRd7wI0IHQh40msZ1o= ;{id = 33655} +02636C00002E0001000151800093002B08010001518052F4220052EAD9708377005DC55B2B69D48FC3E771AB1056F466B8E18D4FCFE1F3B6108C8C22CD0D986C622CB87C93871D2667AA073F59262CC43F5CBF98EDEC478EAC60DC6B9B3D089AEC091691DC1E733EFCB11456F16A89AE4291A5550C2742F1F7629615A6C2A6552B397325FE33E5B2471452A9D536341E211BD0EE30646564795C91FD5D4F920633 +cl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XcVbK2nUj8PncasQVvRmuOGNT8/h87YQjIwizQ2YbGIsuHyThx0mZ6oHP1kmLMQ/XL+Y7exHjqxg3GubPQia7AkWkdwecz78sRRW8WqJrkKRpVUMJ0Lx92KWFabCplUrOXMl/jPlskcUUqnVNjQeIRvQ7jBkZWR5XJH9XU+SBjM= ;{id = 33655} +02636C00000200010002A300000A0161036E696302636C00 +cl. 172800 IN NS a.nic.cl. +02636C00000200010002A300000A0162036E696302636C00 +cl. 172800 IN NS b.nic.cl. +02636C00000200010002A300000A0163036E696302636C00 +cl. 172800 IN NS c.nic.cl. +02636C00000200010002A300001103636C3107646E736E6F6465036E657400 +cl. 172800 IN NS cl1.dnsnode.net. +02636C00000200010002A300001705636C2D6E7307616E796361737403706368036E657400 +cl. 172800 IN NS cl-ns.anycast.pch.net. +02636C00000200010002A300001006736E732D706203697363036F726700 +cl. 172800 IN NS sns-pb.isc.org. +02636C00002B000100015180002452CF08027D756DFFAB6D3CD9C786FF5C659954C22944FAEF9433EEE26F1D84EB5370B394 +cl. 86400 IN DS 21199 8 2 7D756DFFAB6D3CD9C786FF5C659954C22944FAEF9433EEE26F1D84EB5370B394 +0161036E696302636C00000100010002A3000004C801790A +a.nic.cl. 172800 IN A 200.1.121.10 +0162036E696302636C00000100010002A3000004C8070407 +b.nic.cl. 172800 IN A 200.7.4.7 +0162036E696302636C00001C00010002A300001020011398027400000200000700040007 +b.nic.cl. 172800 IN AAAA 2001:1398:274:0:200:7:4:7 +0163036E696302636C00000100010002A3000004C8107010 +c.nic.cl. 172800 IN A 200.16.112.16 +066E732D657874036E696302636C00000100010002A3000004C8017B0E +ns-ext.nic.cl. 172800 IN A 200.1.123.14 +08636C6F7468696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +clothing. 172800 IN NS demand.beta.aridns.net.au. +08636C6F7468696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +clothing. 172800 IN NS demand.alpha.aridns.net.au. +08636C6F7468696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +clothing. 172800 IN NS demand.delta.aridns.net.au. +08636C6F7468696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +clothing. 172800 IN NS demand.gamma.aridns.net.au. +08636C6F7468696E6700002B00010001518000246D780802A7E284ED01F675CFDB1161FC8B23680B2196CC78FF1D757120E45D28EA02606E +clothing. 86400 IN DS 28024 8 2 A7E284ED01F675CFDB1161FC8B23680B2196CC78FF1D757120E45D28EA02606E +08636C6F7468696E6700002E0001000151800093002B08010001518052F4220052EAD970837700711A88C3A3289D0A464B54DF15A60496585AD78C99BA5D82FBE70BED0F3982408A9E291809B19B97785D40B24721BB335FB0B9D0E4C74B620208C5E60A48495BCDAEC19762C6E44738BF9A176BEF90F586BAACF06E6BA78099B028421A01E15340B0156BE8111786437CE59EDA2D830E899A020B41CD30BD130078A26332080A +clothing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cRqIw6MonQpGS1TfFaYEllha14yZul2C++cL7Q85gkCKnikYCbGbl3hdQLJHIbszX7C50OTHS2ICCMXmCkhJW82uwZdixuRHOL+aF2vvkPWGuqzwbmungJmwKEIaAeFTQLAVa+gRF4ZDfOWe2i2DDomaAgtBzTC9EwB4omMyCAo= ;{id = 33655} +08636C6F7468696E6700002E0001000151800093002F08010001518052F4220052EAD970837700794A7E1AFFB32A320E2C878AE193B31094ED31CE0FFF87D46B6D8EB9FBCCD51C1219A385C0F249334409333B52E8BAB42267C55B5B49FACED97208EC93F5753E79B05FF133418422CE4514349A16B7BD451ED29601974597D9E028D2631474E4759B7B55D6A422EDFB8916CAF82B1654896460DEA58CA42B149ED74EEBD89A2B +clothing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eUp+Gv+zKjIOLIeK4ZOzEJTtMc4P/4fUa22OufvM1RwSGaOFwPJJM0QJMztS6Lq0ImfFW1tJ+s7Zcgjsk/V1PnmwX/EzQYQizkUUNJoWt71FHtKWAZdFl9ngKNJjFHTkdZt7VdakIu37iRbK+CsWVIlkYN6ljKQrFJ7XTuvYmis= ;{id = 33655} +08636C6F7468696E6700002F000100015180000E04636C7562000006200000000013 +clothing. 86400 IN NSEC club. NS DS RRSIG NSEC +04636C756200000200010002A3000012036E733103646E73036E696304636C756200 +club. 172800 IN NS ns1.dns.nic.club. +04636C756200000200010002A3000012036E733203646E73036E696304636C756200 +club. 172800 IN NS ns2.dns.nic.club. +04636C756200000200010002A3000012036E733303646E73036E696304636C756200 +club. 172800 IN NS ns3.dns.nic.club. +04636C756200000200010002A3000012036E733403646E73036E696304636C756200 +club. 172800 IN NS ns4.dns.nic.club. +04636C756200000200010002A3000012036E733503646E73036E696304636C756200 +club. 172800 IN NS ns5.dns.nic.club. +04636C756200000200010002A3000012036E733603646E73036E696304636C756200 +club. 172800 IN NS ns6.dns.nic.club. +04636C756200000200010002A3000012036E733703646E73036E696304636C756200 +club. 172800 IN NS ns7.dns.nic.club. +04636C756200002B0001000151800018248208013E247E0A6BC2660B58ABF34967A2EA60B7944568 +club. 86400 IN DS 9346 8 1 3E247E0A6BC2660B58ABF34967A2EA60B7944568 +04636C756200002B0001000151800024248208023668A7F42E8BDCE70C17B8A8DE9F4505F8E10D4C1E95BBD3FB0DE6A488450C47 +club. 86400 IN DS 9346 8 2 3668A7F42E8BDCE70C17B8A8DE9F4505F8E10D4C1E95BBD3FB0DE6A488450C47 +04636C756200002E0001000151800093002B08010001518052F4220052EAD970837700893EF03F9D1143BD77FFC03414F1938F546835463C5E50319E96B20A15D9033C0EED7608E3357CC92A77662D76F498394313F09C1F89EB10ABF4248381CFB07056C4DF5A88BC1E85BB0EF8F7EE7BDBC62C6FFE3C8C26429EA8AB621B74FAD676BDD02564E1285879C0CD711777A19F62B666E750F79DA3B23CF5C1FA0CA76F4A +club. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iT7wP50RQ713/8A0FPGTj1RoNUY8XlAxnpayChXZAzwO7XYI4zV8ySp3Zi129Jg5QxPwnB+J6xCr9CSDgc+wcFbE31qIvB6Fuw749+5728Ysb/48jCZCnqirYht0+tZ2vdAlZOEoWHnAzXEXd6GfYrZm51D3naOyPPXB+gynb0o= ;{id = 33655} +04636C756200002E0001000151800093002F08010001518052F4220052EAD970837700B5AFFBFC23CBF4100A6164F3EAA0C76004AB3F830139995877F649F98B93DD78418FAE54D801BD901D64E28F6E7D8791CB75256E6822134201C9DFE0A5C65189395E90535F1F48C98AB6B48C685F4FEA29A22BD376A9698E698C42073C35D874169099F7BEA8E2A5F425D2E347177A03F99B8D04A929D49B5686E540DA99ADF1 +club. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ta/7/CPL9BAKYWTz6qDHYASrP4MBOZlYd/ZJ+YuT3XhBj65U2AG9kB1k4o9ufYeRy3UlbmgiE0IByd/gpcZRiTlekFNfH0jJira0jGhfT+opoivTdqlpjmmMQgc8Ndh0FpCZ976o4qX0JdLjRxd6A/mbjQSpKdSbVoblQNqZrfE= ;{id = 33655} +04636C756200002F000100015180000C02636D000006200000000013 +club. 86400 IN NSEC cm. NS DS RRSIG NSEC +036E733103646E73036E696304636C756200000100010002A30000049C9A90D7 +ns1.dns.nic.club. 172800 IN A 156.154.144.215 +036E733103646E73036E696304636C756200001C00010002A3000010261000A11071000000000000000000D7 +ns1.dns.nic.club. 172800 IN AAAA 2610:a1:1071::d7 +036E733203646E73036E696304636C756200000100010002A30000049C9A91D7 +ns2.dns.nic.club. 172800 IN A 156.154.145.215 +036E733203646E73036E696304636C756200001C00010002A3000010261000A11072000000000000000000D7 +ns2.dns.nic.club. 172800 IN AAAA 2610:a1:1072::d7 +036E733303646E73036E696304636C756200000100010002A30000049C9A9FD7 +ns3.dns.nic.club. 172800 IN A 156.154.159.215 +036E733303646E73036E696304636C756200001C00010002A3000010261000A11073000000000000000000D7 +ns3.dns.nic.club. 172800 IN AAAA 2610:a1:1073::d7 +036E733403646E73036E696304636C756200000100010002A30000049C9A9CD7 +ns4.dns.nic.club. 172800 IN A 156.154.156.215 +036E733403646E73036E696304636C756200001C00010002A3000010261000A11074000000000000000000D7 +ns4.dns.nic.club. 172800 IN AAAA 2610:a1:1074::d7 +036E733503646E73036E696304636C756200000100010002A30000049C9A9DD7 +ns5.dns.nic.club. 172800 IN A 156.154.157.215 +036E733503646E73036E696304636C756200001C00010002A3000010261000A11075000000000000000000D7 +ns5.dns.nic.club. 172800 IN AAAA 2610:a1:1075::d7 +036E733603646E73036E696304636C756200000100010002A30000049C9A9ED7 +ns6.dns.nic.club. 172800 IN A 156.154.158.215 +036E733603646E73036E696304636C756200001C00010002A3000010261000A11076000000000000000000D7 +ns6.dns.nic.club. 172800 IN AAAA 2610:a1:1076::d7 +036E733703646E73036E696304636C756200000100010002A3000004CF22050A +ns7.dns.nic.club. 172800 IN A 207.34.5.10 +036E733703646E73036E696304636C756200001C00010002A3000010200105037BBBFFFFFFFFFFFFFFFFFF7E +ns7.dns.nic.club. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +02636D00000200010002A300001B02636D056363746C640761757468646E730472697065036E657400 +cm. 172800 IN NS cm.cctld.authdns.ripe.net. +02636D00000200010002A300000B026E730369747502636800 +cm. 172800 IN NS ns.itu.ch. +02636D00000200010002A300000F036B696D0663616D6E657402636D00 +cm. 172800 IN NS kim.camnet.cm. +02636D00000200010002A300000F036C6F6D0663616D6E657402636D00 +cm. 172800 IN NS lom.camnet.cm. +02636D00000200010002A300001206617574683032026E73027575036E657400 +cm. 172800 IN NS auth02.ns.uu.net. +02636D00000200010002A30000120673616E6167610663616D6E657402636D00 +cm. 172800 IN NS sanaga.camnet.cm. +02636D00002F000100015180000C02636E000006200000000003 +cm. 86400 IN NSEC cn. NS RRSIG NSEC +02636D00002E0001000151800093002F08010001518052F4220052EAD97083770095C4CB8C5703144A33883654B1309C9745795C973D4E4E10C556C0F41DD4E25C08B897477DEE9BA4E8ACFFD21067DE39F465D628D13F15BFD2A593588F78EF2352EC7CF68780AAF4EFE7B4D5239730837C15AF9B96455F953C35043C51ECB20A7CD246FF61B9D35D25E5FA8F4E0D6C9741F981C5B51E8CDBCD346CB77A09930E +cm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lcTLjFcDFEoziDZUsTCcl0V5XJc9Tk4QxVbA9B3U4lwIuJdHfe6bpOis/9IQZ9459GXWKNE/Fb/SpZNYj3jvI1LsfPaHgKr07+e01SOXMIN8Fa+blkVflTw1BDxR7LIKfNJG/2G5010l5fqPTg1sl0H5gcW1HozbzTRst3oJkw4= ;{id = 33655} +036B696D0663616D6E657402636D00000100010002A3000004C318C023 +kim.camnet.cm. 172800 IN A 195.24.192.35 +036C6F6D0663616D6E657402636D00000100010002A3000004C318C022 +lom.camnet.cm. 172800 IN A 195.24.192.34 +0673616E6167610663616D6E657402636D00000100010002A3000004C318C011 +sanaga.camnet.cm. 172800 IN A 195.24.192.17 +02636E00002F000100015180000C02636F000006200000000013 +cn. 86400 IN NSEC co. NS DS RRSIG NSEC +02636E00002E0001000151800093002F08010001518052F4220052EAD970837700A9D369F572AA9F0F2D0485C63137F4352999C4BCF1414D2A2FD105890CA3525361F3C9B186DE64150C2F02E8D42740681ABD364473FE0E8B82F956823D1FE495FD78AE5E97959A9975064BB27FC6D10A89BC1B886731A42519930613FA9C7B76E520DA4930B3FA27EFFBD1444B7CF0B584BC54F75993250319F6F58BD47E69A0 +cn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qdNp9XKqnw8tBIXGMTf0NSmZxLzxQU0qL9EFiQyjUlNh88mxht5kFQwvAujUJ0BoGr02RHP+DouC+VaCPR/klf14rl6XlZqZdQZLsn/G0QqJvBuIZzGkJRmTBhP6nHt25SDaSTCz+ifv+9FES3zwtYS8VPdZkyUDGfb1i9R+aaA= ;{id = 33655} +02636E00002E0001000151800093002B08010001518052F4220052EAD9708377001419FE6251874AEC57F52CCB7A37E790DE9BAD1CE2096107BD5E67DFDC0B54E7E035567D8D6B521481BD7997016DC951BFFD77D7E3B59AA3A62DCAAED1F04470A05619939C5915D2CB20B062C260F3F92BA5DDCE203044758C6BCBE385EEFB082CC53713287A3CC296F56571A7885F7516CE09666CDEB49C58B1EECC159ECFF6 +cn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . FBn+YlGHSuxX9SzLejfnkN6brRziCWEHvV5n39wLVOfgNVZ9jWtSFIG9eZcBbclRv/131+O1mqOmLcqu0fBEcKBWGZOcWRXSyyCwYsJg8/krpd3OIDBEdYxry+OF7vsILMU3Eyh6PMKW9WVxp4hfdRbOCWZs3rScWLHuzBWez/Y= ;{id = 33655} +02636E00000200010002A300000A016103646E7302636E00 +cn. 172800 IN NS a.dns.cn. +02636E00000200010002A300000A016203646E7302636E00 +cn. 172800 IN NS b.dns.cn. +02636E00000200010002A300000A016303646E7302636E00 +cn. 172800 IN NS c.dns.cn. +02636E00000200010002A300000A016403646E7302636E00 +cn. 172800 IN NS d.dns.cn. +02636E00000200010002A300000A016503646E7302636E00 +cn. 172800 IN NS e.dns.cn. +02636E00000200010002A300000F026E73066365726E6574036E657400 +cn. 172800 IN NS ns.cernet.net. +02636E00002B0001000151800024D5A60802ED958DDCD959A23D3181CCC4610AE4B2166A072A057B95DDDCCD423256441C1A +cn. 86400 IN DS 54694 8 2 ED958DDCD959A23D3181CCC4610AE4B2166A072A057B95DDDCCD423256441C1A +036E733105636F6E616302636E00000100010002A30000046FEBA101 +ns1.conac.cn. 172800 IN A 111.235.161.1 +036E733105636F6E616302636E00001C00010002A30000102401B400000100000000000000000001 +ns1.conac.cn. 172800 IN AAAA 2401:b400:1::1 +036E733205636F6E616302636E00000100010002A30000046FEBA201 +ns2.conac.cn. 172800 IN A 111.235.162.1 +036E733205636F6E616302636E00001C00010002A30000102401B400000800000000000000000001 +ns2.conac.cn. 172800 IN AAAA 2401:b400:8::1 +036E733305636F6E616302636E00000100010002A30000046FEBA301 +ns3.conac.cn. 172800 IN A 111.235.163.1 +036E733305636F6E616302636E00001C00010002A30000102401B400000900000000000000000001 +ns3.conac.cn. 172800 IN AAAA 2401:b400:9::1 +036E733405636F6E616302636E00000100010002A30000046FEBA401 +ns4.conac.cn. 172800 IN A 111.235.164.1 +036E733505636F6E616302636E00000100010002A30000046FEBA501 +ns5.conac.cn. 172800 IN A 111.235.165.1 +016103646E7302636E00000100010002A3000004CB771901 +a.dns.cn. 172800 IN A 203.119.25.1 +016103646E7302636E00001C00010002A300001020010DC7000000000000000000000001 +a.dns.cn. 172800 IN AAAA 2001:dc7::1 +016203646E7302636E00000100010002A3000004CB771A01 +b.dns.cn. 172800 IN A 203.119.26.1 +016303646E7302636E00000100010002A3000004CB771B01 +c.dns.cn. 172800 IN A 203.119.27.1 +016403646E7302636E00000100010002A3000004CB771C01 +d.dns.cn. 172800 IN A 203.119.28.1 +016403646E7302636E00001C00010002A300001020010DC7100000000000000000000001 +d.dns.cn. 172800 IN AAAA 2001:dc7:1000::1 +016503646E7302636E00000100010002A3000004CB771D01 +e.dns.cn. 172800 IN A 203.119.29.1 +016803646E7302636E00000100010002A30000047DD02001 +h.dns.cn. 172800 IN A 125.208.32.1 +016803646E7302636E00001C00010002A300001020010DC7FFFE00000000000000000001 +h.dns.cn. 172800 IN AAAA 2001:dc7:fffe::1 +016903646E7302636E00000100010002A30000047DD02101 +i.dns.cn. 172800 IN A 125.208.33.1 +016903646E7302636E00001C00010002A300001020010DC7FFFF00000000000000000001 +i.dns.cn. 172800 IN AAAA 2001:dc7:ffff::1 +016A03646E7302636E00000100010002A30000047DD02201 +j.dns.cn. 172800 IN A 125.208.34.1 +016B03646E7302636E00000100010002A30000047DD02301 +k.dns.cn. 172800 IN A 125.208.35.1 +016C03646E7302636E00000100010002A30000047DD02401 +l.dns.cn. 172800 IN A 125.208.36.1 +0161056E67746C6402636E00000100010002A30000047DD02801 +a.ngtld.cn. 172800 IN A 125.208.40.1 +0161056E67746C6402636E00001C00010002A300001020010DC7FFC100000000000000000001 +a.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc1::1 +0162056E67746C6402636E00000100010002A30000047DD02901 +b.ngtld.cn. 172800 IN A 125.208.41.1 +0162056E67746C6402636E00001C00010002A300001020010DC7FFC200000000000000000001 +b.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc2::1 +0163056E67746C6402636E00000100010002A30000047DD02A01 +c.ngtld.cn. 172800 IN A 125.208.42.1 +0163056E67746C6402636E00001C00010002A300001020010DC7FFC300000000000000000001 +c.ngtld.cn. 172800 IN AAAA 2001:dc7:ffc3::1 +0164056E67746C6402636E00000100010002A30000047DD02B01 +d.ngtld.cn. 172800 IN A 125.208.43.1 +0165056E67746C6402636E00000100010002A30000047DD02C01 +e.ngtld.cn. 172800 IN A 125.208.44.1 +02636F00000200010002A300000E036E7331056363746C6402636F00 +co. 172800 IN NS ns1.cctld.co. +02636F00000200010002A300000E036E7332056363746C6402636F00 +co. 172800 IN NS ns2.cctld.co. +02636F00000200010002A300000E036E7333056363746C6402636F00 +co. 172800 IN NS ns3.cctld.co. +02636F00000200010002A300000E036E7334056363746C6402636F00 +co. 172800 IN NS ns4.cctld.co. +02636F00000200010002A300000E036E7335056363746C6402636F00 +co. 172800 IN NS ns5.cctld.co. +02636F00000200010002A300000E036E7336056363746C6402636F00 +co. 172800 IN NS ns6.cctld.co. +02636F00002B00010001518000186CD3080163D2DAEB4D479BD4DFF4202D9BDC82B309C2CCD5 +co. 86400 IN DS 27859 8 1 63D2DAEB4D479BD4DFF4202D9BDC82B309C2CCD5 +02636F00002B00010001518000246CD30802EF8F5B56FA9A79EF29A82330DB625BA19CE3A5B140B24287855DDAAA03EA369B +co. 86400 IN DS 27859 8 2 EF8F5B56FA9A79EF29A82330DB625BA19CE3A5B140B24287855DDAAA03EA369B +02636F00002E0001000151800093002B08010001518052F4220052EAD97083770000805CC7BF11E69014BFA69B4F0D9F619F4A99EFD37A97B0749FB229CC8788BB59CEE8B11385A7B2AB082FF05586D92535EF07AB2BB624657FEC312D2E231F8A33D400C40EA680BCD606E86C8A47F1AF5EAB4E330F3A558D5BECE2E7DCC05A7AD0AD1E13FBD323ED4844BD81173736C99917DA793E96B6084FAB52C14DD9956F +co. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . AIBcx78R5pAUv6abTw2fYZ9Kme/TepewdJ+yKcyHiLtZzuixE4WnsqsIL/BVhtklNe8Hqyu2JGV/7DEtLiMfijPUAMQOpoC81gbobIpH8a9eq04zDzpVjVvs4ufcwFp60K0eE/vTI+1IRL2BFzc2yZkX2nk+lrYIT6tSwU3ZlW8= ;{id = 33655} +02636F00002E0001000151800093002F08010001518052F4220052EAD9708377006083D9E0EA5E1DEC559C9D6577DF3C446A7E07D28BB4F71CF200035C310E81CECFF565A02872411623EAB9507664E3B4FAE89CC6054FD7A46ECF1657F340653599D7C94AB035FB297744738DFC8CFE0A5E816C0531B55531E8B1CEE19BD8FBD0102B87A4C8AFC377C8D897BDD94DE712DD7194CCBA01DA4EFA61D30ACD31C37D +co. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YIPZ4OpeHexVnJ1ld988RGp+B9KLtPcc8gADXDEOgc7P9WWgKHJBFiPquVB2ZOO0+uicxgVP16RuzxZX80BlNZnXyUqwNfspd0RzjfyM/gpegWwFMbVVMeixzuGb2PvQECuHpMivw3fI2Je92U3nEt1xlMy6AdpO+mHTCs0xw30= ;{id = 33655} +02636F00002F000100015180000F05636F646573000006200000000013 +co. 86400 IN NSEC codes. NS DS RRSIG NSEC +036E7331056363746C6402636F00000100010002A30000049C9A6419 +ns1.cctld.co. 172800 IN A 156.154.100.25 +036E7331056363746C6402636F00001C00010002A3000010200105022EDA00000000000000000021 +ns1.cctld.co. 172800 IN AAAA 2001:502:2eda::21 +036E7332056363746C6402636F00000100010002A30000049C9A6519 +ns2.cctld.co. 172800 IN A 156.154.101.25 +036E7332056363746C6402636F00001C00010002A300001020010502AD0900000000000000000021 +ns2.cctld.co. 172800 IN AAAA 2001:502:ad09::21 +036E7333056363746C6402636F00000100010002A30000049C9A6619 +ns3.cctld.co. 172800 IN A 156.154.102.25 +036E7333056363746C6402636F00001C00010002A3000010261000A1100900000000000000000021 +ns3.cctld.co. 172800 IN AAAA 2610:a1:1009::21 +036E7334056363746C6402636F00000100010002A30000049C9A6719 +ns4.cctld.co. 172800 IN A 156.154.103.25 +036E7334056363746C6402636F00001C00010002A3000010261000A1101000000000000000000021 +ns4.cctld.co. 172800 IN AAAA 2610:a1:1010::21 +036E7335056363746C6402636F00000100010002A30000049C9A6819 +ns5.cctld.co. 172800 IN A 156.154.104.25 +036E7335056363746C6402636F00001C00010002A3000010261000A1101100000000000000000021 +ns5.cctld.co. 172800 IN AAAA 2610:a1:1011::21 +036E7336056363746C6402636F00000100010002A30000049C9A6919 +ns6.cctld.co. 172800 IN A 156.154.105.25 +036E7336056363746C6402636F00001C00010002A3000010261000A1101200000000000000000021 +ns6.cctld.co. 172800 IN AAAA 2610:a1:1012::21 +05636F64657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +codes. 172800 IN NS demand.beta.aridns.net.au. +05636F64657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +codes. 172800 IN NS demand.alpha.aridns.net.au. +05636F64657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +codes. 172800 IN NS demand.delta.aridns.net.au. +05636F64657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +codes. 172800 IN NS demand.gamma.aridns.net.au. +05636F64657300002B00010001518000246A720802FE5F7FDA8B08DB3EF8B4B05DD3ED27C9387DAE66543F9D5870E402D11D7B2DDF +codes. 86400 IN DS 27250 8 2 FE5F7FDA8B08DB3EF8B4B05DD3ED27C9387DAE66543F9D5870E402D11D7B2DDF +05636F64657300002E0001000151800093002B08010001518052F4220052EAD9708377005A938D4612747842512C6AA65BC972F5E4BE860CCF4387271C569FA1FD99DDB056DC8C816BC96674532F7EAF171ED14DEC157758ECA2073FA7B448BAFD81A4322D7AB89E2604AE824629C08196878F008D722737419E3E3A95B421DB13FEDC63516293DFEEA63082C26A82E32AEDC70DD70D575F2261AB3B8B4FD3936434F590 +codes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WpONRhJ0eEJRLGqmW8ly9eS+hgzPQ4cnHFafof2Z3bBW3IyBa8lmdFMvfq8XHtFN7BV3WOyiBz+ntEi6/YGkMi16uJ4mBK6CRinAgZaHjwCNcic3QZ4+OpW0IdsT/txjUWKT3+6mMILCaoLjKu3HDdcNV18iYas7i0/Tk2Q09ZA= ;{id = 33655} +05636F64657300002E0001000151800093002F08010001518052F4220052EAD9708377008D940F2F50E1866C784C01A6D05BC9C7F5FC6DC70AC42273959FB73990880790AB1118E434FB53C7E77CE0E565CAC522351509F4106D6D4D8409B242DA0B792CAB06CB764B92316511EF46A9B4CDCDCE89B1AA76F3BEC957BB7995CF7887619CA477579B5D9511ADA37B48B6062C277C0A51B783F398E63CCE72C07A356170A7 +codes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jZQPL1Dhhmx4TAGm0FvJx/X8bccKxCJzlZ+3OZCIB5CrERjkNPtTx+d84OVlysUiNRUJ9BBtbU2ECbJC2gt5LKsGy3ZLkjFlEe9GqbTNzc6Jsap2877JV7t5lc94h2GcpHdXm12VEa2je0i2BiwnfApRt4PzmOY8znLAejVhcKc= ;{id = 33655} +05636F64657300002F000100015180001006636F66666565000006200000000013 +codes. 86400 IN NSEC coffee. NS DS RRSIG NSEC +06636F6666656500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +coffee. 172800 IN NS demand.beta.aridns.net.au. +06636F6666656500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +coffee. 172800 IN NS demand.alpha.aridns.net.au. +06636F6666656500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +coffee. 172800 IN NS demand.delta.aridns.net.au. +06636F6666656500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +coffee. 172800 IN NS demand.gamma.aridns.net.au. +06636F6666656500002B0001000151800024A0A208026CCD81F37B53B3959B28C8BE299BD41FACBE306676E636FFF9556AEAA1948F2C +coffee. 86400 IN DS 41122 8 2 6CCD81F37B53B3959B28C8BE299BD41FACBE306676E636FFF9556AEAA1948F2C +06636F6666656500002E0001000151800093002B08010001518052F4220052EAD9708377004FD18F18F43E1C36A18E88A6F74CE1DF06184AE2671D37182E93CC1319E3538B882C29F8C01D2923F9794B88443B561F8DEFF2B23347A2DC23410D4363942364A79CE8300472D0D70FD2AE9BA3F3D7AD15AD2DCC10AD8CC8E2973D30C01B281B12183DBE3CC5E3A07DED286D9DFD0D3EBAABF5DBE234C77ADDDCD8D2EF15A03B +coffee. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . T9GPGPQ+HDahjoim90zh3wYYSuJnHTcYLpPMExnjU4uILCn4wB0pI/l5S4hEO1Yfje/ysjNHotwjQQ1DY5QjZKec6DAEctDXD9Kum6Pz160VrS3MEK2MyOKXPTDAGygbEhg9vjzF46B97Shtnf0NPrqr9dviNMd63dzY0u8VoDs= ;{id = 33655} +06636F6666656500002E0001000151800093002F08010001518052F4220052EAD97083770030159CB438CB091A8CC7A1E0DED065A6891BEAF72D4969879BF5EA095586C75F5E96B823B7977BDC9E319407288B22C01F463F520E9F13694B2423483F4841B94EB50DB5595BEF36DB1D03BF9333FDAB80A86DB0DE8FE4B066EE55E08C16445603C4B23635E5C69869440A66119065ABE2AD4A7C941F2C0BD3DD5CFED3429F4D +coffee. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MBWctDjLCRqMx6Hg3tBlpokb6vctSWmHm/XqCVWGx19elrgjt5d73J4xlAcoiyLAH0Y/Ug6fE2lLJCNIP0hBuU61DbVZW+822x0Dv5Mz/auAqG2w3o/ksGbuVeCMFkRWA8SyNjXlxphpRApmEZBlq+KtSnyUHywL091c/tNCn00= ;{id = 33655} +06636F6666656500002F000100015180000D03636F6D000006200000000013 +coffee. 86400 IN NSEC com. NS DS RRSIG NSEC +03636F6D00002F000100015180001309636F6D6D756E697479000006200000000013 +com. 86400 IN NSEC community. NS DS RRSIG NSEC +03636F6D00002E0001000151800093002F08010001518052F4220052EAD97083770055BAFFC5AB58A8AC169EBCE24794EA106D7F75C4001C00EC8C1DE75FFA83595F969139C87C529533212798EFA6E9E0308DD010021735BA55D665950D62B24A5146B306B5C885158C8F2BFA45A3BDCA324154DB3435E95E262F54C2AC6B72D642D0B56D992511CB576D9BC7B0EBFA4B312DA3F5F96BF31FFA159FD3A1E9FD9D10 +com. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Vbr/xatYqKwWnrziR5TqEG1/dcQAHADsjB3nX/qDWV+WkTnIfFKVMyEnmO+m6eAwjdAQAhc1ulXWZZUNYrJKUUazBrXIhRWMjyv6RaO9yjJBVNs0NeleJi9UwqxrctZC0LVtmSURy1dtm8ew6/pLMS2j9flr8x/6FZ/Toen9nRA= ;{id = 33655} +03636F6D00002E0001000151800093002B08010001518052F4220052EAD970837700718314C74D404F18FB6949A2DD47003719B8CB94544B6CC25A74D9E3B6C2CE252A44C35F25ECB061FED6A0F0E5F84B631C8D7CC7B844F8FB298D0D2C597A7E1C7205EB54B781E470DC33E993B98E136E76CCBF7E5B917E3BBC37C2072FEAB9E48C81CA5BD0571E85BBAA18212317997FC45DCEB2932C336A1CC0886D8CC9C2FB +com. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cYMUx01ATxj7aUmi3UcANxm4y5RUS2zCWnTZ47bCziUqRMNfJeywYf7WoPDl+EtjHI18x7hE+PspjQ0sWXp+HHIF61S3geRw3DPpk7mOE252zL9+W5F+O7w3wgcv6rnkjIHKW9BXHoW7qhghIxeZf8RdzrKTLDNqHMCIbYzJwvs= ;{id = 33655} +03636F6D00000200010002A300001401610C67746C642D73657276657273036E657400 +com. 172800 IN NS a.gtld-servers.net. +03636F6D00000200010002A300001401620C67746C642D73657276657273036E657400 +com. 172800 IN NS b.gtld-servers.net. +03636F6D00000200010002A300001401630C67746C642D73657276657273036E657400 +com. 172800 IN NS c.gtld-servers.net. +03636F6D00000200010002A300001401640C67746C642D73657276657273036E657400 +com. 172800 IN NS d.gtld-servers.net. +03636F6D00000200010002A300001401650C67746C642D73657276657273036E657400 +com. 172800 IN NS e.gtld-servers.net. +03636F6D00000200010002A300001401660C67746C642D73657276657273036E657400 +com. 172800 IN NS f.gtld-servers.net. +03636F6D00000200010002A300001401670C67746C642D73657276657273036E657400 +com. 172800 IN NS g.gtld-servers.net. +03636F6D00000200010002A300001401680C67746C642D73657276657273036E657400 +com. 172800 IN NS h.gtld-servers.net. +03636F6D00000200010002A300001401690C67746C642D73657276657273036E657400 +com. 172800 IN NS i.gtld-servers.net. +03636F6D00000200010002A3000014016A0C67746C642D73657276657273036E657400 +com. 172800 IN NS j.gtld-servers.net. +03636F6D00000200010002A3000014016B0C67746C642D73657276657273036E657400 +com. 172800 IN NS k.gtld-servers.net. +03636F6D00000200010002A3000014016C0C67746C642D73657276657273036E657400 +com. 172800 IN NS l.gtld-servers.net. +03636F6D00000200010002A3000014016D0C67746C642D73657276657273036E657400 +com. 172800 IN NS m.gtld-servers.net. +03636F6D00002B000100015180002478BD0802E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CFC41A5766 +com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CFC41A5766 +026E730C616D61727368616C6C696E6303636F6D00000100010002A300000447A3F961 +ns.amarshallinc.com. 172800 IN A 71.163.249.97 +026E7313626C61636B6E69676874736F6C7574696F6E7303636F6D00000100010002A3000004D972AD06 +ns.blacknightsolutions.com. 172800 IN A 217.114.173.6 +026E7313626C61636B6E69676874736F6C7574696F6E7303636F6D00001C00010002A30000102A0100A8FE0000000000000000000002 +ns.blacknightsolutions.com. 172800 IN AAAA 2a01:a8:fe00::2 +036E733213626C61636B6E69676874736F6C7574696F6E7303636F6D00000100010002A300000452606140 +ns2.blacknightsolutions.com. 172800 IN A 82.96.97.64 +036E733213626C61636B6E69676874736F6C7574696F6E7303636F6D00001C00010002A300001020011BC000AB00030000000000000002 +ns2.blacknightsolutions.com. 172800 IN AAAA 2001:1bc0:ab:3::2 +076E732D746C643116636861726C6573746F6E726F6164726567697374727903636F6D00000100010002A3000004D8EF2069 +ns-tld1.charlestonroadregistry.com. 172800 IN A 216.239.32.105 +076E732D746C643116636861726C6573746F6E726F6164726567697374727903636F6D00001C00010002A300001020014860480200320000000000000069 +ns-tld1.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:32::69 +076E732D746C643216636861726C6573746F6E726F6164726567697374727903636F6D00000100010002A3000004D8EF2269 +ns-tld2.charlestonroadregistry.com. 172800 IN A 216.239.34.105 +076E732D746C643216636861726C6573746F6E726F6164726567697374727903636F6D00001C00010002A300001020014860480200340000000000000069 +ns-tld2.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:34::69 +076E732D746C643316636861726C6573746F6E726F6164726567697374727903636F6D00000100010002A3000004D8EF2469 +ns-tld3.charlestonroadregistry.com. 172800 IN A 216.239.36.105 +076E732D746C643316636861726C6573746F6E726F6164726567697374727903636F6D00001C00010002A300001020014860480200360000000000000069 +ns-tld3.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:36::69 +076E732D746C643416636861726C6573746F6E726F6164726567697374727903636F6D00000100010002A3000004D8EF2669 +ns-tld4.charlestonroadregistry.com. 172800 IN A 216.239.38.105 +076E732D746C643416636861726C6573746F6E726F6164726567697374727903636F6D00001C00010002A300001020014860480200380000000000000069 +ns-tld4.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4802:38::69 +076E732D746C643516636861726C6573746F6E726F6164726567697374727903636F6D00000100010002A3000004D8EF3C69 +ns-tld5.charlestonroadregistry.com. 172800 IN A 216.239.60.105 +076E732D746C643516636861726C6573746F6E726F6164726567697374727903636F6D00001C00010002A300001020014860480500000000000000000069 +ns-tld5.charlestonroadregistry.com. 172800 IN AAAA 2001:4860:4805::69 +09757563702D67772D310270610364656303636F6D00000100010002A3000004CC7B0212 +uucp-gw-1.pa.dec.com. 172800 IN A 204.123.2.18 +09757563702D67772D320270610364656303636F6D00000100010002A3000004CC7B0213 +uucp-gw-2.pa.dec.com. 172800 IN A 204.123.2.19 +04646E733306646F74756B7203636F6D00000100010002A300000425BB4B1F +dns3.dotukr.com. 172800 IN A 37.187.75.31 +04646E733306646F74756B7203636F6D00001C00010002A3000010200141D0000A2B1F0000000000000001 +dns3.dotukr.com. 172800 IN AAAA 2001:41d0:a:2b1f::1 +0661757374696E02676803636F6D00000100010002A3000004C4034001 +austin.gh.com. 172800 IN A 196.3.64.1 +066D616E74736502676803636F6D00000100010002A3000004C1C2B902 +mantse.gh.com. 172800 IN A 193.194.185.2 +036E7331076961667269636103636F6D00000100010002A3000004C407008B +ns1.iafrica.com. 172800 IN A 196.7.0.139 +05686F70707903696F6D03636F6D00000100010002A3000004D917A38C +hoppy.iom.com. 172800 IN A 217.23.163.140 +07706562626C657303696F6D03636F6D00000100010002A300000450A853F2 +pebbles.iom.com. 172800 IN A 80.168.83.242 +03746C64076973632D736E7303636F6D00000100010002A300000426670203 +tld.isc-sns.com. 172800 IN A 38.103.2.3 +056E732D6D67086D616C616761737903636F6D00000100010002A3000004576284E7 +ns-mg.malagasy.com. 172800 IN A 87.98.132.231 +036E7331056E656F697003636F6D00000100010002A30000043E5AF776 +ns1.neoip.com. 172800 IN A 62.90.247.118 +036E7332056E656F697003636F6D00000100010002A3000004D06D1196 +ns2.neoip.com. 172800 IN A 208.109.17.150 +036E7335076E6F6D696E756D03636F6D00000100010002A30000044A797F23 +ns5.nominum.com. 172800 IN A 74.121.127.35 +026135056E73746C6403636F6D00000100010002A3000004C0050622 +a5.nstld.com. 172800 IN A 192.5.6.34 +026136056E73746C6403636F6D00000100010002A3000004C0050623 +a6.nstld.com. 172800 IN A 192.5.6.35 +026335056E73746C6403636F6D00000100010002A3000004C01A5C22 +c5.nstld.com. 172800 IN A 192.26.92.34 +026336056E73746C6403636F6D00000100010002A3000004C01A5C23 +c6.nstld.com. 172800 IN A 192.26.92.35 +026435056E73746C6403636F6D00000100010002A3000004C01F5022 +d5.nstld.com. 172800 IN A 192.31.80.34 +026436056E73746C6403636F6D00000100010002A3000004C01F5023 +d6.nstld.com. 172800 IN A 192.31.80.35 +026635056E73746C6403636F6D00000100010002A3000004C0233322 +f5.nstld.com. 172800 IN A 192.35.51.34 +026635056E73746C6403636F6D00001C00010002A300001020010503D41400000000000000020034 +f5.nstld.com. 172800 IN AAAA 2001:503:d414::2:34 +026636056E73746C6403636F6D00000100010002A3000004C0233323 +f6.nstld.com. 172800 IN A 192.35.51.35 +026636056E73746C6403636F6D00001C00010002A300001020010503D41400000000000000020035 +f6.nstld.com. 172800 IN AAAA 2001:503:d414::2:35 +026735056E73746C6403636F6D00000100010002A3000004C02A5D22 +g5.nstld.com. 172800 IN A 192.42.93.34 +026736056E73746C6403636F6D00000100010002A3000004C02A5D23 +g6.nstld.com. 172800 IN A 192.42.93.35 +026835056E73746C6403636F6D00000100010002A3000004C0367022 +h5.nstld.com. 172800 IN A 192.54.112.34 +026835056E73746C6403636F6D00001C00010002A30000102001050208CC00000000000000020034 +h5.nstld.com. 172800 IN AAAA 2001:502:8cc::2:34 +026836056E73746C6403636F6D00000100010002A3000004C0367023 +h6.nstld.com. 172800 IN A 192.54.112.35 +026836056E73746C6403636F6D00001C00010002A30000102001050208CC00000000000000020035 +h6.nstld.com. 172800 IN AAAA 2001:502:8cc::2:35 +026A36056E73746C6403636F6D00000100010002A3000004C0304F23 +j6.nstld.com. 172800 IN A 192.48.79.35 +026B36056E73746C6403636F6D00000100010002A3000004C034B223 +k6.nstld.com. 172800 IN A 192.52.178.35 +026C35056E73746C6403636F6D00000100010002A3000004C029A222 +l5.nstld.com. 172800 IN A 192.41.162.34 +026C36056E73746C6403636F6D00000100010002A3000004C029A223 +l6.nstld.com. 172800 IN A 192.41.162.35 +026D36056E73746C6403636F6D00000100010002A3000004C0375323 +m6.nstld.com. 172800 IN A 192.55.83.35 +036E73310D6F72616E67656361726169626503636F6D00000100010002A3000004C1FBA0DE +ns1.orangecaraibe.com. 172800 IN A 193.251.160.222 +036E7331047061697203636F6D00000100010002A3000004D144010B +ns1.pair.com. 172800 IN A 209.68.1.11 +076B796E736530310C706572696D6574657275736103636F6D00000100010002A3000004D836A81A +kynse01.perimeterusa.com. 172800 IN A 216.54.168.26 +076B796E736530320C706572696D6574657275736103636F6D00000100010002A3000004D836A81B +kynse02.perimeterusa.com. 172800 IN A 216.54.168.27 +076B796E736530330C706572696D6574657275736103636F6D00000100010002A3000004D836A81C +kynse03.perimeterusa.com. 172800 IN A 216.54.168.28 +076B796E737730310C706572696D6574657275736103636F6D00000100010002A3000004A5D4A00F +kynsw01.perimeterusa.com. 172800 IN A 165.212.160.15 +076B796E737730320C706572696D6574657275736103636F6D00000100010002A3000004A5D4A010 +kynsw02.perimeterusa.com. 172800 IN A 165.212.160.16 +076B796E737730330C706572696D6574657275736103636F6D00000100010002A3000004A5D4A011 +kynsw03.perimeterusa.com. 172800 IN A 165.212.160.17 +047261696E0370736703636F6D00000100010002A3000004931C0022 +rain.psg.com. 172800 IN A 147.28.0.34 +037269700370736703636F6D00000100010002A3000004931C0027 +rip.psg.com. 172800 IN A 147.28.0.39 +037269700370736703636F6D00001C00010002A300001020010418000100000000000000000039 +rip.psg.com. 172800 IN AAAA 2001:418:1::39 +036E7331036E657405726561636803636F6D00000100010002A3000004869F028C +ns1.net.reach.com. 172800 IN A 134.159.2.140 +036E73320A746F6A696B6973746F6E03636F6D00000100010002A3000004C16F0B04 +ns2.tojikiston.com. 172800 IN A 193.111.11.4 +04646E733103746C6405747574627903636F6D00000100010002A3000004B27C8535 +dns1.tld.tutby.com. 172800 IN A 178.124.133.53 +04646E733203746C6405747574627903636F6D00000100010002A30000045D7D1E2C +dns2.tld.tutby.com. 172800 IN A 93.125.30.44 +04646E733303746C6405747574627903636F6D00000100010002A3000004C389A00A +dns3.tld.tutby.com. 172800 IN A 195.137.160.10 +04646E733303746C6405747574627903636F6D00001C00010002A30000102A0100D8000200010000000000000002 +dns3.tld.tutby.com. 172800 IN AAAA 2a01:d8:2:1::2 +04646E733403746C6405747574627903636F6D00000100010002A30000043ED44965 +dns4.tld.tutby.com. 172800 IN A 62.212.73.101 +04646E733503746C6405747574627903636F6D00000100010002A30000042EA5D95E +dns5.tld.tutby.com. 172800 IN A 46.165.217.94 +04646E733603746C6405747574627903636F6D00000100010002A30000046C3B0842 +dns6.tld.tutby.com. 172800 IN A 108.59.8.66 +04646E733703746C6405747574627903636F6D00000100010002A300000467175D24 +dns7.tld.tutby.com. 172800 IN A 103.23.93.36 +04646E73310A752D726567697374727903636F6D00000100010002A3000004B816524A +dns1.u-registry.com. 172800 IN A 184.22.82.74 +04646E73310A752D726567697374727903636F6D00001C00010002A30000102607F8780003039C0000000000000002 +dns1.u-registry.com. 172800 IN AAAA 2607:f878:3:39c::2 +0161097A646E73636C6F756403636F6D00000100010002A30000040108F001 +a.zdnscloud.com. 172800 IN A 1.8.240.1 +0162097A646E73636C6F756403636F6D00000100010002A30000040108F101 +b.zdnscloud.com. 172800 IN A 1.8.241.1 +0163097A646E73636C6F756403636F6D00000100010002A30000040108F201 +c.zdnscloud.com. 172800 IN A 1.8.242.1 +0164097A646E73636C6F756403636F6D00000100010002A30000040108F301 +d.zdnscloud.com. 172800 IN A 1.8.243.1 +0165097A646E73636C6F756403636F6D00000100010002A300000477A7F89A +e.zdnscloud.com. 172800 IN A 119.167.248.154 +0166097A646E73636C6F756403636F6D00000100010002A3000004B6831716 +f.zdnscloud.com. 172800 IN A 182.131.23.22 +0167097A646E73636C6F756403636F6D00000100010002A30000046F0C946F +g.zdnscloud.com. 172800 IN A 111.12.148.111 +0169097A646E73636C6F756403636F6D00001C00010002A300001024018D00000100000000000000000001 +i.zdnscloud.com. 172800 IN AAAA 2401:8d00:1::1 +016A097A646E73636C6F756403636F6D00001C00010002A300001024018D00000200000000000000000001 +j.zdnscloud.com. 172800 IN AAAA 2401:8d00:2::1 +09636F6D6D756E69747900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +community. 172800 IN NS demand.beta.aridns.net.au. +09636F6D6D756E69747900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +community. 172800 IN NS demand.alpha.aridns.net.au. +09636F6D6D756E69747900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +community. 172800 IN NS demand.delta.aridns.net.au. +09636F6D6D756E69747900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +community. 172800 IN NS demand.gamma.aridns.net.au. +09636F6D6D756E69747900002B0001000151800024D0450802755228E2F18777FFC5DA203D2984565804E3236ABC72B3762E832171E977C423 +community. 86400 IN DS 53317 8 2 755228E2F18777FFC5DA203D2984565804E3236ABC72B3762E832171E977C423 +09636F6D6D756E69747900002E0001000151800093002B08010001518052F4220052EAD970837700B5D113188028047FB7C162096827CDAA8483E061FF047B92E7913FC4E70506AE899CFF6F5BEAF34B2807917855486FC144D583A4F0BB20E88FFFE04E401FFFFF448CA248B409A8E5D94DF4B5915E808B23B6A88FDEEF85D659F57438E4B2974CDE9CFC47D8B2E2266739EE0B603467985F6E3F733BFEEB8F3DAB31F514E362D2 +community. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tdETGIAoBH+3wWIJaCfNqoSD4GH/BHuS55E/xOcFBq6JnP9vW+rzSygHkXhVSG/BRNWDpPC7IOiP/+BOQB///0SMoki0Cajl2U30tZFegIsjtqiP3u+F1ln1dDjkspdM3pz8R9iy4iZnOe4LYDRnmF9uP3M7/uuPPasx9RTjYtI= ;{id = 33655} +09636F6D6D756E69747900002E0001000151800093002F08010001518052F4220052EAD970837700864085E1AB0D5499A3CA40B1A262976E8D730FC42906599EA229BEBE92F9778C94768C18E81F9F092CE06A5B65C3D7190F99BCA1D554A9AC94B46F68E8CDEBAD349619560EE1826B4E281A32EE6A4173C107A6BA25362A2E2BAD446A3D7014D20246AC857CDD28DDC513106CCEC7AB3755CA5D22C954075806C5E2FDD6BF5616 +community. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hkCF4asNVJmjykCxomKXbo1zD8QpBlmeoim+vpL5d4yUdowY6B+fCSzgaltlw9cZD5m8odVUqayUtG9o6M3rrTSWGVYO4YJrTigaMu5qQXPBB6a6JTYqLiutRGo9cBTSAkashXzdKN3FExBszserN1XKXSLJVAdYBsXi/da/VhY= ;{id = 33655} +09636F6D6D756E69747900002F000100015180001107636F6D70616E79000006200000000013 +community. 86400 IN NSEC company. NS DS RRSIG NSEC +07636F6D70616E7900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +company. 172800 IN NS demand.beta.aridns.net.au. +07636F6D70616E7900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +company. 172800 IN NS demand.alpha.aridns.net.au. +07636F6D70616E7900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +company. 172800 IN NS demand.delta.aridns.net.au. +07636F6D70616E7900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +company. 172800 IN NS demand.gamma.aridns.net.au. +07636F6D70616E7900002B0001000151800024057D0802DD824CAD96C6CBC6A29CF7847CABAD991908ADC0F88EE9EA52763F41C93A99CF +company. 86400 IN DS 1405 8 2 DD824CAD96C6CBC6A29CF7847CABAD991908ADC0F88EE9EA52763F41C93A99CF +07636F6D70616E7900002E0001000151800093002B08010001518052F4220052EAD9708377008F02CFE3D2F246CDA7A6B49A6B08DF634DC055E2602FED44CFEDF71E79DBAD104A7081BD0C73956AF7306991809A5BAB1314787045362BC840AF6B39E59A80380CB97E17196B3AA6B17490760792E7FC47E22643D721F32D3D1714FE8940B222001DF8E4085B9FFF0E68FD763C5855A07A574CF1C2677D56995089A318C80B04 +company. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jwLP49LyRs2nprSaawjfY03AVeJgL+1Ez+33HnnbrRBKcIG9DHOVavcwaZGAmlurExR4cEU2K8hAr2s55ZqAOAy5fhcZazqmsXSQdgeS5/xH4iZD1yHzLT0XFP6JQLIiAB345Ahbn/8OaP12PFhVoHpXTPHCZ31WmVCJoxjICwQ= ;{id = 33655} +07636F6D70616E7900002E0001000151800093002F08010001518052F4220052EAD9708377006E999B8AF5504E9907DB2934CC5E6232966F31DAD939F903B04BAF99BF0AA3AB19F274882571181A66401865ACC4E5F6AF1E8BA5613847A5BB29964AB1E4DB41AD17F3745AD94453EC779CEE6DC3787A625134F965BA9D43D4F698AF4271EC05E340E5D3567FE73C42D1B984862DF7D0515D3EF6B532CBFA611DE50454E453DD +company. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bpmbivVQTpkH2yk0zF5iMpZvMdrZOfkDsEuvmb8Ko6sZ8nSIJXEYGmZAGGWsxOX2rx6LpWE4R6W7KZZKseTbQa0X83Ra2URT7Hec7m3DeHpiUTT5ZbqdQ9T2mK9CcewF40Dl01Z/5zxC0bmEhi330FFdPva1Msv6YR3lBFTkU90= ;{id = 33655} +07636F6D70616E7900002F000100015180001208636F6D7075746572000006200000000013 +company. 86400 IN NSEC computer. NS DS RRSIG NSEC +08636F6D707574657200000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +computer. 172800 IN NS demand.beta.aridns.net.au. +08636F6D707574657200000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +computer. 172800 IN NS demand.alpha.aridns.net.au. +08636F6D707574657200000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +computer. 172800 IN NS demand.delta.aridns.net.au. +08636F6D707574657200000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +computer. 172800 IN NS demand.gamma.aridns.net.au. +08636F6D707574657200002B00010001518000241DB908029DE689F8D8A206CDC040867BED094D9095468046181CB2EF827964CA4C1FBED5 +computer. 86400 IN DS 7609 8 2 9DE689F8D8A206CDC040867BED094D9095468046181CB2EF827964CA4C1FBED5 +08636F6D707574657200002E0001000151800093002B08010001518052F4220052EAD9708377003D2370DF440227F7D2EB48386CFFBCD950143DCA06154F315EED98B9EEF823D3D7949F591D1637BFA378606C63C52FD9740941857255028B8F856CA9204DFC7B3C92685E68AE4E62E7FF54D3C47C11913B33831343F1F811FD9CCE3AA8E1DD5721BC027136F3B31130B0E09F8FE389438608E1B8A026F8EAB9BD0579184E08CB +computer. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PSNw30QCJ/fS60g4bP+82VAUPcoGFU8xXu2Yue74I9PXlJ9ZHRY3v6N4YGxjxS/ZdAlBhXJVAouPhWypIE38ezySaF5ork5i5/9U08R8EZE7M4MTQ/H4Ef2czjqo4d1XIbwCcTbzsxEwsOCfj+OJQ4YI4bigJvjqub0FeRhOCMs= ;{id = 33655} +08636F6D707574657200002E0001000151800093002F08010001518052F4220052EAD970837700AF024C470877C0E94DE38820C7796FE58BEF099A7A0294DFA348632BA2C1DD6F5F12817894718D95785FE22730B453BAA6E1CBEC5C58D19E18BA12391F48787B182252C9A5BECC0344BCFC98DF68A6A0B50EDAE093EF138888D2A3E3BAD89F1292506208F772792CD92E314BA0E65D161DF7A7A8188CEC2DABEB09573AD3DA13 +computer. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rwJMRwh3wOlN44ggx3lv5YvvCZp6ApTfo0hjK6LB3W9fEoF4lHGNlXhf4icwtFO6puHL7FxY0Z4YuhI5H0h4exgiUsmlvswDRLz8mN9opqC1Dtrgk+8TiIjSo+O62J8SklBiCPdyeSzZLjFLoOZdFh33p6gYjOwtq+sJVzrT2hM= ;{id = 33655} +08636F6D707574657200002F00010001518000160C636F6E737472756374696F6E000006200000000013 +computer. 86400 IN NSEC construction. NS DS RRSIG NSEC +0C636F6E737472756374696F6E00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +construction. 172800 IN NS demand.beta.aridns.net.au. +0C636F6E737472756374696F6E00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +construction. 172800 IN NS demand.alpha.aridns.net.au. +0C636F6E737472756374696F6E00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +construction. 172800 IN NS demand.delta.aridns.net.au. +0C636F6E737472756374696F6E00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +construction. 172800 IN NS demand.gamma.aridns.net.au. +0C636F6E737472756374696F6E00002B0001000151800024632B08020E55A903286DA4CCADC2AEDCB01AEC17D9C7DF3AA8199435C6384CD0ACB1544C +construction. 86400 IN DS 25387 8 2 0E55A903286DA4CCADC2AEDCB01AEC17D9C7DF3AA8199435C6384CD0ACB1544C +0C636F6E737472756374696F6E00002E0001000151800093002B08010001518052F4220052EAD97083770031B457F09FA0AE8D4D41E40D8EDD165BB44130D4D0565B16A1CDF51B7C9465A022D1663DF8CA23998EFD458A7CA9EF0A6D66F07224E1EACE2C00C3859D313FDFE9D206BE75A615FA5C2C199C77E074E22EA90C54955BD744F8ADF9056C9CF70FCC8B86F2E57070BC5BD3FC3CE78A60EA013643485C303C69DC7332843B5FD3B8 +construction. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MbRX8J+gro1NQeQNjt0WW7RBMNTQVlsWoc31G3yUZaAi0WY9+MojmY79RYp8qe8KbWbwciTh6s4sAMOFnTE/3+nSBr51phX6XCwZnHfgdOIuqQxUlVvXRPit+QVsnPcPzIuG8uVwcLxb0/w854pg6gE2Q0hcMDxp3HMyhDtf07g= ;{id = 33655} +0C636F6E737472756374696F6E00002E0001000151800093002F08010001518052F4220052EAD9708377007DB2D1216E466F1DF07F8AFE53A2A2ECD4D931B0917765B9DE7E27EE4E56EA8ADEC772865C7060CB5CD61BEDE0C9A8CAC860DD17EEA7223287DCEBE8EEB1366145854D6D8BDE308D4CB44DAC2E186340AF7FCF91D1E000765C501F01EB2BA493EBAC77E29EBB908D7FD227DBADE6958C8D975F7367B718D1314EB1934CCA9663 +construction. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fbLRIW5Gbx3wf4r+U6Ki7NTZMbCRd2W53n4n7k5W6orex3KGXHBgy1zWG+3gyajKyGDdF+6nIjKH3Ovo7rE2YUWFTW2L3jCNTLRNrC4YY0Cvf8+R0eAAdlxQHwHrK6ST66x34p67kI1/0ifbreaVjI2XX3NntxjRMU6xk0zKlmM= ;{id = 33655} +0C636F6E737472756374696F6E00002F00010001518000150B636F6E74726163746F7273000006200000000013 +construction. 86400 IN NSEC contractors. NS DS RRSIG NSEC +0B636F6E74726163746F727300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +contractors. 172800 IN NS demand.beta.aridns.net.au. +0B636F6E74726163746F727300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +contractors. 172800 IN NS demand.alpha.aridns.net.au. +0B636F6E74726163746F727300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +contractors. 172800 IN NS demand.delta.aridns.net.au. +0B636F6E74726163746F727300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +contractors. 172800 IN NS demand.gamma.aridns.net.au. +0B636F6E74726163746F727300002B0001000151800024A17108027CEAEF507AFD5AE73139D4D7E66A40C8B779B5360ABDDCFD7E420C503D51A34F +contractors. 86400 IN DS 41329 8 2 7CEAEF507AFD5AE73139D4D7E66A40C8B779B5360ABDDCFD7E420C503D51A34F +0B636F6E74726163746F727300002E0001000151800093002B08010001518052F4220052EAD9708377003CC2B2BEC909736938F0A68930A6878FB92B7E36CC076591B5D48E9AB7A142FEA8A744B6256848C61FD2BF5BED701BD0EDF152E0E5A5C124B486247B5A142A55D86B67D8FF4B5D914F2CCF29A4A72E9953BFF9D48D2B3554A724C86377B9A05FECBC55B643D08A9E9BA86A13339EF0D401011398ECA818685C444763541BE046 +contractors. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PMKyvskJc2k48KaJMKaHj7krfjbMB2WRtdSOmrehQv6op0S2JWhIxh/Sv1vtcBvQ7fFS4OWlwSS0hiR7WhQqVdhrZ9j/S12RTyzPKaSnLplTv/nUjSs1VKckyGN3uaBf7LxVtkPQip6bqGoTM57w1AEBE5jsqBhoXERHY1Qb4EY= ;{id = 33655} +0B636F6E74726163746F727300002E0001000151800093002F08010001518052F4220052EAD970837700405A085AA4FB642645B3105F4B01830FA5127B875045E29FB8003EE957B0AE68DFA92742124AF4C70109C67426591F4BD6419DEFF9F6F8E4023725C87B6DE114AEAC4FBA34C3730054F0593F60360BE2E3CCB564F630756BC6577BAC70288B59928E390285FC0EA3F4E2A39387F34759C7ADD95D3C5CCBE7726E68B4F8656DFD +contractors. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QFoIWqT7ZCZFsxBfSwGDD6USe4dQReKfuAA+6VewrmjfqSdCEkr0xwEJxnQmWR9L1kGd7/n2+OQCNyXIe23hFK6sT7o0w3MAVPBZP2A2C+LjzLVk9jB1a8ZXe6xwKItZko45AoX8DqP04qOTh/NHWcet2V08XMvncm5otPhlbf0= ;{id = 33655} +0B636F6E74726163746F727300002F000100015180000E04636F6F6C000006200000000013 +contractors. 86400 IN NSEC cool. NS DS RRSIG NSEC +04636F6F6C00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +cool. 172800 IN NS demand.beta.aridns.net.au. +04636F6F6C00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +cool. 172800 IN NS demand.alpha.aridns.net.au. +04636F6F6C00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +cool. 172800 IN NS demand.delta.aridns.net.au. +04636F6F6C00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +cool. 172800 IN NS demand.gamma.aridns.net.au. +04636F6F6C00002B0001000151800024A6000802A929B4028524A61985D70357680987D69D74444331A25A049A3FE950F8F734A4 +cool. 86400 IN DS 42496 8 2 A929B4028524A61985D70357680987D69D74444331A25A049A3FE950F8F734A4 +04636F6F6C00002E0001000151800093002B08010001518052F4220052EAD97083770020EED4C88522A3A7D08B99C3C075DC0026CC70F0942D00528387B0942269B020E3381EDFCE6BF99AB0DD3C84A7EA19D15164B35905C59DB6645B31CE63A244CD9E0DF0CD2FDB08F62EAC7F2532D5821BB9A62ECF888FADE35CFBA12ADA783F70CAB2442426470CD9B264C99E91D6A1C326CD3C980C1B05FBE04A0F7E608DDC26 +cool. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IO7UyIUio6fQi5nDwHXcACbMcPCULQBSg4ewlCJpsCDjOB7fzmv5mrDdPISn6hnRUWSzWQXFnbZkWzHOY6JEzZ4N8M0v2wj2Lqx/JTLVghu5pi7PiI+t41z7oSraeD9wyrJEJCZHDNmyZMmekdahwybNPJgMGwX74EoPfmCN3CY= ;{id = 33655} +04636F6F6C00002E0001000151800093002F08010001518052F4220052EAD9708377007F5017088E5F189E4A770720BEA5A455C58ED86C8FF4B8827F53D3878130C263CC83850F35F56E229549335E4D01BBDBFEA6D7E2E42A200DE4B4DB2A2794F80D2B63D35963142156853FFF51258DBE836A5CD5793847F1F1E15D9A4A23BBDE55DD1C981616150D30E5E5F6F5F86936F131D4C66ABA14C6362F755B1D90C08ABE +cool. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f1AXCI5fGJ5KdwcgvqWkVcWO2GyP9LiCf1PTh4EwwmPMg4UPNfVuIpVJM15NAbvb/qbX4uQqIA3ktNsqJ5T4DStj01ljFCFWhT//USWNvoNqXNV5OEfx8eFdmkoju95V3RyYFhYVDTDl5fb1+Gk28THUxmq6FMY2L3VbHZDAir4= ;{id = 33655} +04636F6F6C00002F000100015180000E04636F6F70000006200000000013 +cool. 86400 IN NSEC coop. NS DS RRSIG NSEC +04636F6F7000000200010002A300001205636F6F70310664796E746C64036E657400 +coop. 172800 IN NS coop1.dyntld.net. +04636F6F7000000200010002A300001205636F6F70320664796E746C64036E657400 +coop. 172800 IN NS coop2.dyntld.net. +04636F6F7000000200010002A300001205636F6F70330664796E746C64036E657400 +coop. 172800 IN NS coop3.dyntld.net. +04636F6F7000000200010002A300001205636F6F70340664796E746C64036E657400 +coop. 172800 IN NS coop4.dyntld.net. +04636F6F7000002F000100015180000C026372000006200000000003 +coop. 86400 IN NSEC cr. NS RRSIG NSEC +04636F6F7000002E0001000151800093002F08010001518052F4220052EAD9708377002E71CD2055D8BF150D1AC11951A0D70F54C490F4012965472A5299AFA04C4EFE1921C860BDD415BFAE2169BC7B31A2436C6ABBDF0928D7573AE95643B570C4E267708A65F114B8F129922AD3BBB94BE3B19D2BE8B0CF180D81CA96B1D823FB5C79E3D24802DD32E394D013F763ADD223EBD971ACDDD5E4B63498A43826C71EBF +coop. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LnHNIFXYvxUNGsEZUaDXD1TEkPQBKWVHKlKZr6BMTv4ZIchgvdQVv64habx7MaJDbGq73wko11c66VZDtXDE4mdwimXxFLjxKZIq07u5S+OxnSvosM8YDYHKlrHYI/tceePSSALdMuOU0BP3Y63SI+vZcazd1eS2NJikOCbHHr8= ;{id = 33655} +02637200002F000100015180000C026375000006200000000013 +cr. 86400 IN NSEC cu. NS DS RRSIG NSEC +02637200002E0001000151800093002F08010001518052F4220052EAD9708377005F57E8982BED23CB54E2953A7376170E24936895EEC81792A8393D0716FD448B14CD6407910C4CA3483DD7108BEC540340C71AA7906B0DD0A4F55DBC57055CEB59F8D48851AC9DA84BFF77C34E9E833021BF24747D2E6F33C32BDD2DA2732B9233BC621EF19EF4C16DA2631C7D992DAC231FE0A806CB5D85895EDD0685A717F1 +cr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X1fomCvtI8tU4pU6c3YXDiSTaJXuyBeSqDk9Bxb9RIsUzWQHkQxMo0g91xCL7FQDQMcap5BrDdCk9V28VwVc61n41IhRrJ2oS/93w06egzAhvyR0fS5vM8Mr3S2icyuSM7xiHvGe9MFtomMcfZktrCMf4KgGy12FiV7dBoWnF/E= ;{id = 33655} +02637200002E0001000151800093002B08010001518052F4220052EAD97083770055A3D411B8E175F9A1176FF21A715E44228EAC4AB81D715B361FC9BB490B74A23DB6DC8B3E2C856A4D3744E01A29F7202F605F936AC46DB06A78E453E9C4CC900C5A6F9E7673DF3B1F0E3670FB068366AC654E6C38EC3DDD6EA86FD6F4BFC45AE446642EA1C89920D82ACFA6D92D9EF6EAD6B29E41CACDDB68547DDC5763F38A +cr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VaPUEbjhdfmhF2/yGnFeRCKOrEq4HXFbNh/Ju0kLdKI9ttyLPiyFak03ROAaKfcgL2Bfk2rEbbBqeORT6cTMkAxab552c987Hw42cPsGg2asZU5sOOw93W6ob9b0v8Ra5EZkLqHImSDYKs+m2S2e9urWsp5Bys3baFR93Fdj84o= ;{id = 33655} +02637200000200010002A30000090161026E7302637200 +cr. 172800 IN NS a.ns.cr. +02637200000200010002A30000090162026E7302637200 +cr. 172800 IN NS b.ns.cr. +02637200000200010002A30000090163026E7302637200 +cr. 172800 IN NS c.ns.cr. +02637200000200010002A30000090164026E7302637200 +cr. 172800 IN NS d.ns.cr. +02637200000200010002A30000090165026E7302637200 +cr. 172800 IN NS e.ns.cr. +02637200000200010002A30000090166026E7302637200 +cr. 172800 IN NS f.ns.cr. +02637200000200010002A300000C036E7333036E6963026D7800 +cr. 172800 IN NS ns3.nic.mx. +02637200000200010002A300000F066E732D657874036E696302636C00 +cr. 172800 IN NS ns-ext.nic.cl. +02637200002B000100015180002474C208020DD32D91CBBBA6890E1AF399519A7AD3646EDF238C7FBFB8C5B500165FBB9299 +cr. 86400 IN DS 29890 8 2 0DD32D91CBBBA6890E1AF399519A7AD3646EDF238C7FBFB8C5B500165FBB9299 +026E7302637200000100010002A3000004A3B20802 +ns.cr. 172800 IN A 163.178.8.2 +0161026E7302637200000100010002A3000004C86B5264 +a.ns.cr. 172800 IN A 200.107.82.100 +0161026E7302637200001C00010002A3000010200113C770040001000000000000D100 +a.ns.cr. 172800 IN AAAA 2001:13c7:7004:1::d100 +0162026E7302637200000100010002A3000004C639CC62 +b.ns.cr. 172800 IN A 198.57.204.98 +0163026E7302637200000100010002A3000004C1000945 +c.ns.cr. 172800 IN A 193.0.9.69 +0164026E7302637200000100010002A300000426670203 +d.ns.cr. 172800 IN A 38.103.2.3 +0165026E7302637200000100010002A300000448344703 +e.ns.cr. 172800 IN A 72.52.71.3 +0165026E7302637200001C00010002A300001020010470001A00000000000000000003 +e.ns.cr. 172800 IN AAAA 2001:470:1a::3 +0166026E7302637200000100010002A30000043FF3C203 +f.ns.cr. 172800 IN A 63.243.194.3 +0166026E7302637200001C00010002A3000010200105A0001000000000000000000003 +f.ns.cr. 172800 IN AAAA 2001:5a0:10::3 +02637500000200010002A300001B026375056363746C640761757468646E730472697065036E657400 +cu. 172800 IN NS cu.cctld.authdns.ripe.net. +02637500000200010002A300000B026E7303646E7302627200 +cu. 172800 IN NS ns.dns.br. +02637500000200010002A3000012026E730663656E696169036E657402637500 +cu. 172800 IN NS ns.ceniai.net.cu. +02637500000200010002A300000D036E733203676970036E657400 +cu. 172800 IN NS ns2.gip.net. +02637500000200010002A3000013036E73320663656E696169036E657402637500 +cu. 172800 IN NS ns2.ceniai.net.cu. +02637500000200010002A300000D037269700370736703636F6D00 +cu. 172800 IN NS rip.psg.com. +02637500002F000100015180000C026376000006200000000003 +cu. 86400 IN NSEC cv. NS RRSIG NSEC +02637500002E0001000151800093002F08010001518052F4220052EAD97083770001EBC6BDF486FDA084C050AB556968CA357449CF3518542D5D32CF9297542213688D56CB4E612B958506D878F8C7F69A08B2D47DA90930FB8F911829DE06B28E8FF6524CF0338A3979A94E23B47E1CF2DC6F5AD403C7D9CE2DF0D56D7F962A73DACFCA81F219044D3FBDF3217937A7DF9BF5477651D9044ECF478DC60485EEE8 +cu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AevGvfSG/aCEwFCrVWloyjV0Sc81GFQtXTLPkpdUIhNojVbLTmErlYUG2Hj4x/aaCLLUfakJMPuPkRgp3gayjo/2UkzwM4o5ealOI7R+HPLcb1rUA8fZzi3w1W1/lipz2s/KgfIZBE0/vfMheTen35v1R3ZR2QROz0eNxgSF7ug= ;{id = 33655} +026E730663656E696169036E657402637500000100010002A3000004A99E8088 +ns.ceniai.net.cu. 172800 IN A 169.158.128.136 +026E730663656E696169036E657402637500001C00010002A300001020011340000101280000000000000136 +ns.ceniai.net.cu. 172800 IN AAAA 2001:1340:1:128::136 +036E73320663656E696169036E657402637500000100010002A3000004A99E8058 +ns2.ceniai.net.cu. 172800 IN A 169.158.128.88 +02637600000200010002A300000B026E7303646E7302637600 +cv. 172800 IN NS ns.dns.cv. +02637600000200010002A300000E046E733031046663636E02707400 +cv. 172800 IN NS ns01.fccn.pt. +02637600000200010002A300001206617574683032026E73027575036E657400 +cv. 172800 IN NS auth02.ns.uu.net. +02637600000200010002A3000010066E732D65787403697363036F726700 +cv. 172800 IN NS ns-ext.isc.org. +02637600000200010002A30000100670686F626F73046663636E02707400 +cv. 172800 IN NS phobos.fccn.pt. +02637600000200010002A300001006736E732D706203697363036F726700 +cv. 172800 IN NS sns-pb.isc.org. +02637600002F000100015180000C026377000006200000000003 +cv. 86400 IN NSEC cw. NS RRSIG NSEC +02637600002E0001000151800093002F08010001518052F4220052EAD97083770069CEBE84558BB4BE570FDADBFDEA12B3299C98E0408488C4AC2564E000D2A49D3A4F802EA6C278F724066D018B1F837E0852B045AE072B3618750D5499961E152D3F72CE0A64B41EF93D818D0E25496216794206C299C80CEA30976FD0AC3F775A7F8D054D81C7A2EB30DAE19A6A5A885048BD00E6CE5DCD867D8D010BCBE8E5 +cv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ac6+hFWLtL5XD9rb/eoSsymcmOBAhIjErCVk4ADSpJ06T4AupsJ49yQGbQGLH4N+CFKwRa4HKzYYdQ1UmZYeFS0/cs4KZLQe+T2BjQ4lSWIWeUIGwpnIDOowl2/QrD93Wn+NBU2Bx6LrMNrhmmpaiFBIvQDmzl3Nhn2NAQvL6OU= ;{id = 33655} +026E7303646E7302637600000100010002A300000429DDC0DC +ns.dns.cv. 172800 IN A 41.221.192.220 +02637700000200010002A300001B026377056363746C640761757468646E730472697065036E657400 +cw. 172800 IN NS cw.cctld.authdns.ripe.net. +02637700000200010002A300000C036E7330026A61036E657400 +cw. 172800 IN NS ns0.ja.net. +02637700000200010002A300001007656E67696E653003756E6102616E00 +cw. 172800 IN NS engine0.una.an. +02637700000200010002A300001007656E67696E653203756E6102616E00 +cw. 172800 IN NS engine2.una.an. +02637700000200010002A300001007656E67696E653303756E6102616E00 +cw. 172800 IN NS engine3.una.an. +02637700000200010002A3000014076B61647573686907637572696E666F02616E00 +cw. 172800 IN NS kadushi.curinfo.an. +02637700000200010002A30000180B6E7330312D73657276657207637572696E666F02616E00 +cw. 172800 IN NS ns01-server.curinfo.an. +02637700002F000100015180000C026378000006200000000003 +cw. 86400 IN NSEC cx. NS RRSIG NSEC +02637700002E0001000151800093002F08010001518052F4220052EAD97083770035A0310DF9ED44170F8142E148BA241A8CCED6464C5F98F2A9C3E860AEB7260C929E8D2B67998DA00ACE9AC5B01813B293343FED3C82CBD01D7785FAD651D5FFBDAE6B518F3619BA566ED948226500E2588FFF088C179913E5C9D976A85738D654B144C8A8E23A55EB166CE3070106E430CD495D933EEC11C4024F12AE089BDA +cw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . NaAxDfntRBcPgULhSLokGozO1kZMX5jyqcPoYK63JgySno0rZ5mNoArOmsWwGBOykzQ/7TyCy9Add4X61lHV/72ua1GPNhm6Vm7ZSCJlAOJYj/8IjBeZE+XJ2XaoVzjWVLFEyKjiOlXrFmzjBwEG5DDNSV2TPuwRxAJPEq4Im9o= ;{id = 33655} +02637800000200010002A3000013026E7307616E7963617374036E696302637800 +cx. 172800 IN NS ns.anycast.nic.cx. +02637800000200010002A3000010036378310664796E746C64036E657400 +cx. 172800 IN NS cx1.dyntld.net. +02637800000200010002A3000010036378330664796E746C64036E657400 +cx. 172800 IN NS cx3.dyntld.net. +02637800000200010002A300001006736E732D706203697363036F726700 +cx. 172800 IN NS sns-pb.isc.org. +02637800002B0001000151800024196408024854A102492CE0C50C714F366EBBD520CBA38BBEFC91CF295EEE8E6EF7D48CA5 +cx. 86400 IN DS 6500 8 2 4854A102492CE0C50C714F366EBBD520CBA38BBEFC91CF295EEE8E6EF7D48CA5 +02637800002E0001000151800093002B08010001518052F4220052EAD9708377004A7D4329B933F9C4B5451E1C5E8B7413705484E0EC0AC1136CFCE848F718B0CA4ADAA3D7E0C1D3CDEAB9B77441166AC5709A8C6CB8E5E5C627378B71771EC4904E4A499C7D13A76418D1B907525CA31B4DC105DF5463674EBA0A6F0082EEA1AB73F3337BE9688CC714FCA93839726407527DBD1F3E2C0D4500FB87D914664CEC +cx. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Sn1DKbkz+cS1RR4cXot0E3BUhODsCsETbPzoSPcYsMpK2qPX4MHTzeq5t3RBFmrFcJqMbLjl5cYnN4txdx7EkE5KSZx9E6dkGNG5B1JcoxtNwQXfVGNnTroKbwCC7qGrc/Mze+lojMcU/Kk4OXJkB1J9vR8+LA1FAPuH2RRmTOw= ;{id = 33655} +02637800002E0001000151800093002F08010001518052F4220052EAD970837700BE978DE0CF7F3C20DD74C3DFA6CEDAB65FCCD50CEF9FB4355DCA4F2A66F88C88B88F0E6F4E8E1CC28D2E116CD2B4B6F5AFF6E067A53DB9B42D6B0A90B41D56B682D19DE5E6A4E8CA36F56ABD6D319DE538214B65F7F088370F7EFC8074DF0E120DFE4E5E80DD48B2C95E2C4341C1C79F017E032066C842F826C45DB35C785363 +cx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vpeN4M9/PCDddMPfps7atl/M1Qzvn7Q1XcpPKmb4jIi4jw5vTo4cwo0uEWzStLb1r/bgZ6U9ubQtawqQtB1WtoLRneXmpOjKNvVqvW0xneU4IUtl9/CINw9+/IB03w4SDf5OXoDdSLLJXixDQcHHnwF+AyBmyEL4JsRds1x4U2M= ;{id = 33655} +02637800002F000100015180000C026379000006200000000013 +cx. 86400 IN NSEC cy. NS DS RRSIG NSEC +026E7307616E7963617374036E696302637800000100010002A3000004CC3DD810 +ns.anycast.nic.cx. 172800 IN A 204.61.216.16 +026E7307616E7963617374036E696302637800001C00010002A3000010200105000014601600AD000000000001 +ns.anycast.nic.cx. 172800 IN AAAA 2001:500:14:6016:ad::1 +02637900000200010002A300000F036E73310375637902616302637900 +cy. 172800 IN NS ns1.ucy.ac.cy. +02637900000200010002A300000F036E73320375637902616302637900 +cy. 172800 IN NS ns2.ucy.ac.cy. +02637900000200010002A3000011046E73303206736176766973036E657400 +cy. 172800 IN NS ns02.savvis.net. +02637900000200010002A300001004736563330561706E6963036E657400 +cy. 172800 IN NS sec3.apnic.net. +02637900000200010002A30000170563792D6E7307616E796361737403706368036E657400 +cy. 172800 IN NS cy-ns.anycast.pch.net. +02637900000200010002A300000E0563796E696303646E7302637900 +cy. 172800 IN NS cynic.dns.cy. +02637900000200010002A30000140565737469610369637305666F72746802677200 +cy. 172800 IN NS estia.ics.forth.gr. +02637900002F000100015180000C02637A000006200000000003 +cy. 86400 IN NSEC cz. NS RRSIG NSEC +02637900002E0001000151800093002F08010001518052F4220052EAD9708377003006FB75ECB6E3525978278676345433D399D2F6F0174A43FFC8595FB8F7F6AD5FCB5A3F03F75085CBAD261238147902324E896067B863A3DF021FA0AB658A2B80FA8871329909D728D7AB3B52F82ACD39313D60064A598161DE5CC66463A74CCDC7984D6DB3925556E85324C127B7306992D1B83DF272806D418DAB1F45D769 +cy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MAb7dey241JZeCeGdjRUM9OZ0vbwF0pD/8hZX7j39q1fy1o/A/dQhcutJhI4FHkCMk6JYGe4Y6PfAh+gq2WKK4D6iHEymQnXKNerO1L4Ks05MT1gBkpZgWHeXMZkY6dMzceYTW2zklVW6FMkwSe3MGmS0bg98nKAbUGNqx9F12k= ;{id = 33655} +036E73310375637902616302637900000100010002A3000004C22A0132 +ns1.ucy.ac.cy. 172800 IN A 194.42.1.50 +036E73320375637902616302637900000100010002A3000004C22A0137 +ns2.ucy.ac.cy. 172800 IN A 194.42.1.55 +0563796E696303646E7302637900000100010002A3000004C22A1D01 +cynic.dns.cy. 172800 IN A 194.42.29.1 +02637A00002F000100015180000F0564616E6365000006200000000013 +cz. 86400 IN NSEC dance. NS DS RRSIG NSEC +02637A00002E0001000151800093002F08010001518052F4220052EAD97083770082BACE3276C42880DDACE6B2C1C10AA845A96CE8B909F62607ABAC4C174F6B90CDB0FED177E97A400B77E4415CC3BA00EFBD8D0F2B6148991A158777E8AFDF96097E6EB0FCA29D99DF8EA13567D1E010B7E97D48E8E462095F4FD3FDD1A5A19CA90955E47219F2FD26FC1A6B6D2402748FA9B27F3D661BAFA2386D86F8AAAC20 +cz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . grrOMnbEKIDdrOaywcEKqEWpbOi5CfYmB6usTBdPa5DNsP7Rd+l6QAt35EFcw7oA772NDythSJkaFYd36K/flgl+brD8op2Z346hNWfR4BC36X1I6ORiCV9P0/3RpaGcqQlV5HIZ8v0m/BprbSQCdI+psn89ZhuvojhthviqrCA= ;{id = 33655} +02637A00002E0001000151800093002B08010001518052F4220052EAD970837700639F274B4A6A831017FBB1D98E0B7751A0FBB7AAE2B93A5BFE89719A4B4A0C9920265FF4CE2BAB550A8C57406856E0331B4F4FBFED57AA2970FD632B5CDB152E084056C4544C7D3AA1335DDF7283E03B96F4E82B34D59ABDDE712C7A30BDAE6855AD393F35942B7383C438087A2E9306E7A72B36F78EDF4A60EAE926B05A97D3 +cz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Y58nS0pqgxAX+7HZjgt3UaD7t6riuTpb/olxmktKDJkgJl/0ziurVQqMV0BoVuAzG09Pv+1Xqilw/WMrXNsVLghAVsRUTH06oTNd33KD4DuW9OgrNNWavd5xLHowva5oVa05PzWUK3ODxDgIei6TBuenKzb3jt9KYOrpJrBal9M= ;{id = 33655} +02637A00000200010002A300000D0161026E73036E696302637A00 +cz. 172800 IN NS a.ns.nic.cz. +02637A00000200010002A300000D0162026E73036E696302637A00 +cz. 172800 IN NS b.ns.nic.cz. +02637A00000200010002A300000D0163026E73036E696302637A00 +cz. 172800 IN NS c.ns.nic.cz. +02637A00000200010002A300000D0164026E73036E696302637A00 +cz. 172800 IN NS d.ns.nic.cz. +02637A00002B0001000151800024D5300A02397E50C85EDE9CDE33F363A9E66FD1B216D788F8DD438A57A423A386869C8F06 +cz. 86400 IN DS 54576 10 2 397E50C85EDE9CDE33F363A9E66FD1B216D788F8DD438A57A423A386869C8F06 +016403657874036E696302637A00000100010002A3000004C11DCE02 +d.ext.nic.cz. 172800 IN A 193.29.206.2 +016403657874036E696302637A00001C00010002A300001020010678000100000000000000000002 +d.ext.nic.cz. 172800 IN AAAA 2001:678:1::2 +0161026E73036E696302637A00000100010002A3000004C2000C01 +a.ns.nic.cz. 172800 IN A 194.0.12.1 +0161026E73036E696302637A00001C00010002A300001020010678000F00000000000000000001 +a.ns.nic.cz. 172800 IN AAAA 2001:678:f::1 +0162026E73036E696302637A00000100010002A3000004C2000D01 +b.ns.nic.cz. 172800 IN A 194.0.13.1 +0162026E73036E696302637A00001C00010002A300001020010678001000000000000000000001 +b.ns.nic.cz. 172800 IN AAAA 2001:678:10::1 +0163026E73036E696302637A00000100010002A3000004C2000E01 +c.ns.nic.cz. 172800 IN A 194.0.14.1 +0163026E73036E696302637A00001C00010002A300001020010678001100000000000000000001 +c.ns.nic.cz. 172800 IN AAAA 2001:678:11::1 +0164026E73036E696302637A00000100010002A3000004C11DCE01 +d.ns.nic.cz. 172800 IN A 193.29.206.1 +0164026E73036E696302637A00001C00010002A300001020010678000100000000000000000001 +d.ns.nic.cz. 172800 IN AAAA 2001:678:1::1 +0564616E636500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +dance. 172800 IN NS demand.beta.aridns.net.au. +0564616E636500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +dance. 172800 IN NS demand.alpha.aridns.net.au. +0564616E636500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +dance. 172800 IN NS demand.delta.aridns.net.au. +0564616E636500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +dance. 172800 IN NS demand.gamma.aridns.net.au. +0564616E636500002B000100015180002424C4080246C6FA36DEC09F2C90C528D30FD86378FAC1F11A1D90AF55C42DA92C1EB19EFF +dance. 86400 IN DS 9412 8 2 46C6FA36DEC09F2C90C528D30FD86378FAC1F11A1D90AF55C42DA92C1EB19EFF +0564616E636500002E0001000151800093002B08010001518052F4220052EAD970837700B69D082BADB624B131BFED65ABFFF5B8238BFC7CC986B5EB6147E497BA674F2F39B8ABC81420B2A0EBF48E108ACAE6677735F8DC925EC99B927E59282CBDFAE6231D45007A05FB4319522811F0FF80D227968E28F520B111DEFB33A656AB62E238F9DC3E6731F9E45CDF45474EA6DECE3DD60AA8C417C9EA003746F10BC74480 +dance. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tp0IK622JLExv+1lq//1uCOL/HzJhrXrYUfkl7pnTy85uKvIFCCyoOv0jhCKyuZndzX43JJeyZuSflkoLL365iMdRQB6BftDGVIoEfD/gNInlo4o9SCxEd77M6ZWq2LiOPncPmcx+eRc30VHTqbezj3WCqjEF8nqADdG8QvHRIA= ;{id = 33655} +0564616E636500002E0001000151800093002F08010001518052F4220052EAD97083770070EC164233882D90E69A8B0E128279CC1BAD50509274E53EE83FBE9643BDAAFDE1CAD1E1F177DDEB7C1CE0B217690978498FB65D86049977D76628F23C5C6D3B92DBA5F6AF2CA00165770B17E697270150C3684DFC13B2DB61DBE0DE0CD72C6E8DB945018D025160BDBCA46F74F0C7C4EF69739715A2DBCEB3A34034A7BC4CEA +dance. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cOwWQjOILZDmmosOEoJ5zButUFCSdOU+6D++lkO9qv3hytHh8Xfd63wc4LIXaQl4SY+2XYYEmXfXZijyPFxtO5LbpfavLKABZXcLF+aXJwFQw2hN/BOy22Hb4N4M1yxujblFAY0CUWC9vKRvdPDHxO9pc5cVotvOs6NANKe8TOo= ;{id = 33655} +0564616E636500002F000100015180001006646174696E67000006200000000013 +dance. 86400 IN NSEC dating. NS DS RRSIG NSEC +06646174696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +dating. 172800 IN NS demand.beta.aridns.net.au. +06646174696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +dating. 172800 IN NS demand.alpha.aridns.net.au. +06646174696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +dating. 172800 IN NS demand.delta.aridns.net.au. +06646174696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +dating. 172800 IN NS demand.gamma.aridns.net.au. +06646174696E6700002B0001000151800024D957080240AE1E3A7DAB8C5285D43ACA37EEC730D5FC604F770AE3B40C4C282A165B3555 +dating. 86400 IN DS 55639 8 2 40AE1E3A7DAB8C5285D43ACA37EEC730D5FC604F770AE3B40C4C282A165B3555 +06646174696E6700002E0001000151800093002B08010001518052F4220052EAD9708377009DA81FF4964B9BBB30BA47C105A61C3B916771BC91C1DFE4C6FCB9BDBAFE12757A45BFD995053936F081906AEC72B22E2FC6AEE93E57497BAD64202E822704D373CB93C0A46C681218D532337F2670BC8AB2A9F3FA6852A6010AD3A8CE760C8309C4697584BA02580553F5A67BF8E51F711DAEE0AC3796D625518A2E0DA1146E +dating. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nagf9JZLm7swukfBBaYcO5FncbyRwd/kxvy5vbr+EnV6Rb/ZlQU5NvCBkGrscrIuL8au6T5XSXutZCAugicE03PLk8CkbGgSGNUyM38mcLyKsqnz+mhSpgEK06jOdgyDCcRpdYS6AlgFU/Wme/jlH3EdruCsN5bWJVGKLg2hFG4= ;{id = 33655} +06646174696E6700002E0001000151800093002F08010001518052F4220052EAD9708377004C9911F02F1F2B86C714282A3E6B93257A2FE62FDFE91037FDE072C1616439AABA7D04DC8DEF6B06D9A0630D123FC3AB4F8A5B773E26F1DAA0DB2D33414B4E9DEE8E53F4DF3C8D2885EDDD25A61A43E291CAA1AD328B027E51383301A95B84A991E39D94CCF88D19D96CE1F94FC6867DBB340B2AA02FA5535E3554B4B12BEDBA +dating. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TJkR8C8fK4bHFCgqPmuTJXov5i/f6RA3/eBywWFkOaq6fQTcje9rBtmgYw0SP8OrT4pbdz4m8dqg2y0zQUtOne6OU/TfPI0ohe3dJaYaQ+KRyqGtMosCflE4MwGpW4SpkeOdlMz4jRnZbOH5T8aGfbs0CyqgL6VTXjVUtLEr7bo= ;{id = 33655} +06646174696E6700002F000100015180000C026465000006200000000013 +dating. 86400 IN NSEC de. NS DS RRSIG NSEC +02646500002F00010001518000120864656D6F63726174000006200000000013 +de. 86400 IN NSEC democrat. NS DS RRSIG NSEC +02646500002E0001000151800093002F08010001518052F4220052EAD97083770007CBDA4CD5990A41D1DCC958052AB71CBF22D501B1EF34F047FF93401AF09456ABA2AF2A2F8C8F2E65FCB9CDB970C9A9992B839EAB9DE7A9E920D634DF602E5A07269AE30022B719CEEFB84E94C1D4C1E093FFC4F91238A12BF13000F5CC0C2953960395F1270DAF31043560C44DE4C1AA7D745268B295E3D7D9B4E92D02F649 +de. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B8vaTNWZCkHR3MlYBSq3HL8i1QGx7zTwR/+TQBrwlFaroq8qL4yPLmX8uc25cMmpmSuDnqud56npINY032AuWgcmmuMAIrcZzu+4TpTB1MHgk//E+RI4oSvxMAD1zAwpU5YDlfEnDa8xBDVgxE3kwap9dFJospXj19m06S0C9kk= ;{id = 33655} +02646500002E0001000151800093002B08010001518052F4220052EAD97083770050F7E3AF6A03582A4946A253E97A2BE6A24ECD7934F9B958A9472C0C5187E9A882D147C7ED23921EEDA7249DBC8F8600EB826122BA39A05F8746C51F177923A81126EDED8C851653EE3C0104EAA11A48BB2C00ED30134ACA2608BB4CFB0029252C970003CB2255D238FBFDDE992E0B874A4E2448953018D7815E797C56BB2494 +de. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UPfjr2oDWCpJRqJT6Xor5qJOzXk0+blYqUcsDFGH6aiC0UfH7SOSHu2nJJ28j4YA64JhIro5oF+HRsUfF3kjqBEm7e2MhRZT7jwBBOqhGki7LADtMBNKyiYIu0z7ACklLJcAA8siVdI4+/3emS4Lh0pOJEiVMBjXgV55fFa7JJQ= ;{id = 33655} +02646500000200010002A300000A0161036E696302646500 +de. 172800 IN NS a.nic.de. +02646500000200010002A300000A0166036E696302646500 +de. 172800 IN NS f.nic.de. +02646500000200010002A300000A016C026465036E657400 +de. 172800 IN NS l.de.net. +02646500000200010002A300000A016E026465036E657400 +de. 172800 IN NS n.de.net. +02646500000200010002A300000A0173026465036E657400 +de. 172800 IN NS s.de.net. +02646500000200010002A300000A017A036E696302646500 +de. 172800 IN NS z.nic.de. +02646500002B00010001518000245E9C0802FFE926ACA67ED94089390250F1F294AC84A6D84F9121DF73A79E439F42E820C2 +de. 86400 IN DS 24220 8 2 FFE926ACA67ED94089390250F1F294AC84A6D84F9121DF73A79E439F42E820C2 +06646E732D726F0564656E696302646500000100010002A3000004515BA163 +dns-ro.denic.de. 172800 IN A 81.91.161.99 +04646E73370564656E696302646500000100010002A3000004515BA144 +dns7.denic.de. 172800 IN A 81.91.161.68 +086772646E732D64650564656E696302646500000100010002A3000004515BA150 +grdns-de.denic.de. 172800 IN A 81.91.161.80 +0670722D646E730564656E696302646500000100010002A3000004515BA152 +pr-dns.denic.de. 172800 IN A 81.91.161.82 +036E7335056B6E69707002646500000100010002A3000004C3FD063E +ns5.knipp.de. 172800 IN A 195.253.6.62 +036E7335056B6E69707002646500001C00010002A30000102A0105B000000029000000000000003E +ns5.knipp.de. 172800 IN AAAA 2a01:5b0:0:29::3e +0161036E696302646500000100010002A3000004C2000035 +a.nic.de. 172800 IN A 194.0.0.53 +0161036E696302646500001C00010002A300001020010678000200000000000000000053 +a.nic.de. 172800 IN AAAA 2001:678:2::53 +0166036E696302646500000100010002A3000004515BA405 +f.nic.de. 172800 IN A 81.91.164.5 +0166036E696302646500001C00010002A30000102A020568000000020000000000000053 +f.nic.de. 172800 IN AAAA 2a02:568:0:2::53 +036E7363036E696302646500000100010002A3000004515BA154 +nsc.nic.de. 172800 IN A 81.91.161.84 +017A036E696302646500000100010002A3000004C2F66001 +z.nic.de. 172800 IN A 194.246.96.1 +0864656D6F6372617400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +democrat. 172800 IN NS demand.beta.aridns.net.au. +0864656D6F6372617400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +democrat. 172800 IN NS demand.alpha.aridns.net.au. +0864656D6F6372617400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +democrat. 172800 IN NS demand.delta.aridns.net.au. +0864656D6F6372617400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +democrat. 172800 IN NS demand.gamma.aridns.net.au. +0864656D6F6372617400002B00010001518000247A7D0802FFFEB75D5303AEA99EEDA8535BEDC3672FDF4C49329FF4A2FDCBFBFFA24D1A44 +democrat. 86400 IN DS 31357 8 2 FFFEB75D5303AEA99EEDA8535BEDC3672FDF4C49329FF4A2FDCBFBFFA24D1A44 +0864656D6F6372617400002E0001000151800093002B08010001518052F4220052EAD9708377008FDA9592DCBD7AEC7FCF77B041EC908BF9576BDAC6267A61158CCC68CA47210ED2BA29A083BA286AC7D67260E7C29BF97769AE93C71256B85FD606E59628FA3FC28B97639B20751A61E6163BD4447967CFAF50A71F4ABAA03DDD60C966ED1B02916481F538DA7447CC3875FB8A548EE19710EE2654589348D379E7866E117CF8 +democrat. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j9qVkty9eux/z3ewQeyQi/lXa9rGJnphFYzMaMpHIQ7Suimgg7ooasfWcmDnwpv5d2muk8cSVrhf1gbllij6P8KLl2ObIHUaYeYWO9REeWfPr1CnH0q6oD3dYMlm7RsCkWSB9TjadEfMOHX7ilSO4ZcQ7iZUWJNI03nnhm4RfPg= ;{id = 33655} +0864656D6F6372617400002E0001000151800093002F08010001518052F4220052EAD97083770033FF2881CEA2C08B3D3BC9749D88AFE7E05D963F0E54E51E2CD6764A9D5373B492783145662027231790BB84498F816364491ACA4C9C2898E01EC312B1D28BE3C0183256F1467DE18E0D0F991996A7A4A15E4F8A84F662CCE2EEE7BE50615407A1FF66D8C86BC4A780DA5A24FE67DCFEC95F544A3C20CAC132CF14CE2EF30C2D +democrat. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . M/8ogc6iwIs9O8l0nYiv5+Bdlj8OVOUeLNZ2Sp1Tc7SSeDFFZiAnIxeQu4RJj4FjZEkaykycKJjgHsMSsdKL48AYMlbxRn3hjg0PmRmWp6ShXk+KhPZizOLu575QYVQHof9m2MhrxKeA2lok/mfc/slfVEo8IMrBMs8Uzi7zDC0= ;{id = 33655} +0864656D6F6372617400002F0001000151800012086469616D6F6E6473000006200000000013 +democrat. 86400 IN NSEC diamonds. NS DS RRSIG NSEC +086469616D6F6E647300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +diamonds. 172800 IN NS demand.beta.aridns.net.au. +086469616D6F6E647300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +diamonds. 172800 IN NS demand.alpha.aridns.net.au. +086469616D6F6E647300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +diamonds. 172800 IN NS demand.delta.aridns.net.au. +086469616D6F6E647300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +diamonds. 172800 IN NS demand.gamma.aridns.net.au. +086469616D6F6E647300002B00010001518000245D940802A3719C79222E217C7EA8CC55EED0BD23B7769820BDFCFB4A7C6DCFC2F2837697 +diamonds. 86400 IN DS 23956 8 2 A3719C79222E217C7EA8CC55EED0BD23B7769820BDFCFB4A7C6DCFC2F2837697 +086469616D6F6E647300002E0001000151800093002B08010001518052F4220052EAD97083770052F3763244BC6C65A069D1853FF4BD737FE823BC689BEB5B91CC1C9173568003853F9F402DCAC0BEF2837E6E800CADC180C831316AB35E80A53EDC6776468926505E507DF28EC53D69DE7D785F49EBE88DF4D85BF9B5543D5EDAB56B139F9AE59FBA9EA303E1CF264697278D4D230E0185081582A12F30CF8236EC89222112F7 +diamonds. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . UvN2MkS8bGWgadGFP/S9c3/oI7xom+tbkcwckXNWgAOFP59ALcrAvvKDfm6ADK3BgMgxMWqzXoClPtxndkaJJlBeUH3yjsU9ad59eF9J6+iN9Nhb+bVUPV7atWsTn5rln7qeowPhzyZGlyeNTSMOAYUIFYKhLzDPgjbsiSIhEvc= ;{id = 33655} +086469616D6F6E647300002E0001000151800093002F08010001518052F4220052EAD97083770095B1CB4F2C9C6FBB7BBADF54459036C6BF0F4CE90FF5A4E7C68BF7614406B35088C7D1374296B7577F2E547ABE1B376415B3161884ADC80DBEF049EAAB05853733FD9A2276F0B66275B3E30C1727FA624B2689E319987D8D0924247C48B31B2C7B1A1DEA8E3BA4CAEAF5B7D4858E3BB473603BCEF4DDD669708C71EC4901A694 +diamonds. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lbHLTyycb7t7ut9URZA2xr8PTOkP9aTnxov3YUQGs1CIx9E3Qpa3V38uVHq+GzdkFbMWGIStyA2+8EnqqwWFNzP9miJ28LZidbPjDBcn+mJLJonjGZh9jQkkJHxIsxssexod6o47pMrq9bfUhY47tHNgO8703dZpcIxx7EkBppQ= ;{id = 33655} +086469616D6F6E647300002F0001000151800013096469726563746F7279000006200000000013 +diamonds. 86400 IN NSEC directory. NS DS RRSIG NSEC +096469726563746F727900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +directory. 172800 IN NS demand.beta.aridns.net.au. +096469726563746F727900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +directory. 172800 IN NS demand.alpha.aridns.net.au. +096469726563746F727900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +directory. 172800 IN NS demand.delta.aridns.net.au. +096469726563746F727900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +directory. 172800 IN NS demand.gamma.aridns.net.au. +096469726563746F727900002B0001000151800024615708029B4A3B25AE80501486985390FB3D0004E86E9F67E7DF28659AF1316C0D281DAE +directory. 86400 IN DS 24919 8 2 9B4A3B25AE80501486985390FB3D0004E86E9F67E7DF28659AF1316C0D281DAE +096469726563746F727900002E0001000151800093002B08010001518052F4220052EAD970837700B3A92CA4379FD25082AC919FC44D22FA41F916BE39A6550EDB6DD56C424876DDFC3400C9FAE42C4A2F8C8B7C8DA7068050AA9EE4AA0DBCBC64C6370286CF7AE32764155201A571B191B639F2EA52A6DFCAEBC98903A38B4D66D5BBFA616B8913B1377EA195906306473EC537CD13C21B1C3F8B6832F5F9EDA3B376157C7910B3 +directory. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s6kspDef0lCCrJGfxE0i+kH5Fr45plUO223VbEJIdt38NADJ+uQsSi+Mi3yNpwaAUKqe5KoNvLxkxjcChs964ydkFVIBpXGxkbY58upSpt/K68mJA6OLTWbVu/pha4kTsTd+oZWQYwZHPsU3zRPCGxw/i2gy9fnto7N2FXx5ELM= ;{id = 33655} +096469726563746F727900002E0001000151800093002F08010001518052F4220052EAD9708377009F1E726EAA3390004FC712CDC9ED82EAF22D0E8C8865494786AB5352113877C0CDA65694E0F35B5F6A842F80C71DE2B72A3FAF6D37D0EB7D4B88CAA2B6BCE0B50D93A387CCB207472415F40D6A1E63DEE70EF60FE2D0BDB48CDDFFE72F9FBAB3B1DD9A0663BB800E6D5DE296FCA976B7C8C9CE8A501D0326671DAEB5BF3360A1 +directory. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nx5ybqozkABPxxLNye2C6vItDoyIZUlHhqtTUhE4d8DNplaU4PNbX2qEL4DHHeK3Kj+vbTfQ631LiMqitrzgtQ2To4fMsgdHJBX0DWoeY97nDvYP4tC9tIzd/+cvn7qzsd2aBmO7gA5tXeKW/Kl2t8jJzopQHQMmZx2utb8zYKE= ;{id = 33655} +096469726563746F727900002F000100015180000C02646A000006200000000013 +directory. 86400 IN NSEC dj. NS DS RRSIG NSEC +02646A00000200010002A300000D03626F77047261696E02667200 +dj. 172800 IN NS bow.rain.fr. +02646A00000200010002A300000F03626F7706696E746E657402646A00 +dj. 172800 IN NS bow.intnet.dj. +02646A00002F000100015180000C02646B000006200000000003 +dj. 86400 IN NSEC dk. NS RRSIG NSEC +02646A00002E0001000151800093002F08010001518052F4220052EAD9708377009221E290B8CF63EB3CFC85337439C365791092B790AEE7F92D1122FBCF0B85568C7EC15BAC8A74B51CB3D93AB233C0B5FA51F8E7FC1C9557CEABDBDED0617EAA6DC229F5FE71A4460949A3C3FD5D470463C03F38E9200AEF4CB15EFC4C3D3FCF628373D9E66875B05D4DAFF70FB50B852DFF0B0818DC033C58817658C3720678 +dj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kiHikLjPY+s8/IUzdDnDZXkQkreQruf5LREi+88LhVaMfsFbrIp0tRyz2TqyM8C1+lH45/wclVfOq9ve0GF+qm3CKfX+caRGCUmjw/1dRwRjwD846SAK70yxXvxMPT/PYoNz2eZodbBdTa/3D7ULhS3/CwgY3AM8WIF2WMNyBng= ;{id = 33655} +03626F7706696E746E657402646A00000100010002A3000004C1FB8FA2 +bow.intnet.dj. 172800 IN A 193.251.143.162 +02646B00000200010002A300000A0161036E696302646B00 +dk. 172800 IN NS a.nic.dk. +02646B00000200010002A300000A0162036E696302646B00 +dk. 172800 IN NS b.nic.dk. +02646B00000200010002A300000A0163036E696302646B00 +dk. 172800 IN NS c.nic.dk. +02646B00000200010002A300000A016C036E696302646B00 +dk. 172800 IN NS l.nic.dk. +02646B00000200010002A300000A0170036E696302646B00 +dk. 172800 IN NS p.nic.dk. +02646B00000200010002A300000A0173036E696302646B00 +dk. 172800 IN NS s.nic.dk. +02646B00002B000100015180002469070802A1AB8546B80E438A7DFE0EC559A7088EC5AED3C4E0D26B1B60ED3735F853DFD7 +dk. 86400 IN DS 26887 8 2 A1AB8546B80E438A7DFE0EC559A7088EC5AED3C4E0D26B1B60ED3735F853DFD7 +02646B00002E0001000151800093002B08010001518052F4220052EAD97083770023C41B086E5AC5E5BB6DB21A567FB4D92469643F8AA3BE337919C72C6467DC0292C9E9DA2D67E5C11DFCAB8E028BA0DF18EDF7DFD3864D133735C22F41E85D8D5FC4DA2DF5CEDB4C82A4F1E480D62E863CFFB757C3A481C50E8E52A21854BF44655CEEC4CDF0E7BBC57DA24683A0AA666B81BD6DE31BAD0A31E9F1BA143D67DA +dk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . I8QbCG5axeW7bbIaVn+02SRpZD+Ko74zeRnHLGRn3AKSyenaLWflwR38q44Ci6DfGO3339OGTRM3NcIvQehdjV/E2i31zttMgqTx5IDWLoY8/7dXw6SBxQ6OUqIYVL9EZVzuxM3w57vFfaJGg6CqZmuBvW3jG60KMenxuhQ9Z9o= ;{id = 33655} +02646B00002E0001000151800093002F08010001518052F4220052EAD9708377006CDAAEC88546E96F53175A496249E0B07F97D8E3B506E236C57D2F983A24432AFA63038A4AC5026C5E73DCC667270D63566D194009473E39C82E6EA448DA2C146E9F2C01B356123CDF48F94DC3B103F785C9F2FD437B94AFD7BD7523739F075CCEC60F9205B625711FA475BC9AC31B2C9D304B662D77A2700B0F482FEA96FCF4 +dk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bNquyIVG6W9TF1pJYkngsH+X2OO1BuI2xX0vmDokQyr6YwOKSsUCbF5z3MZnJw1jVm0ZQAlHPjnILm6kSNosFG6fLAGzVhI830j5TcOxA/eFyfL9Q3uUr9e9dSNznwdczsYPkgW2JXEfpHW8msMbLJ0wS2Ytd6JwCw9IL+qW/PQ= ;{id = 33655} +02646B00002F000100015180000C02646D000006200000000013 +dk. 86400 IN NSEC dm. NS DS RRSIG NSEC +0161036E696302646B00000100010002A3000004D4584E7A +a.nic.dk. 172800 IN A 212.88.78.122 +0162036E696302646B00000100010002A3000004C1A366DE +b.nic.dk. 172800 IN A 193.163.102.222 +0162036E696302646B00001C00010002A30000102A010630000000800000000000000053 +b.nic.dk. 172800 IN AAAA 2a01:630:0:80::53 +0163036E696302646B00000100010002A3000004D04CA8F4 +c.nic.dk. 172800 IN A 208.76.168.244 +016C036E696302646B00000100010002A3000004C02607F2 +l.nic.dk. 172800 IN A 192.38.7.242 +016C036E696302646B00001C00010002A3000010200107F8001F00000000183502420000 +l.nic.dk. 172800 IN AAAA 2001:7f8:1f::1835:242:0 +0170036E696302646B00000100010002A3000004C2002F2A +p.nic.dk. 172800 IN A 194.0.47.42 +0170036E696302646B00001C00010002A3000010200106780078004200AD000000000053 +p.nic.dk. 172800 IN AAAA 2001:678:78:42:ad::53 +0173036E696302646B00000100010002A30000044D48E5FC +s.nic.dk. 172800 IN A 77.72.229.252 +0173036E696302646B00001C00010002A30000102A0103F0000003030000000000000053 +s.nic.dk. 172800 IN AAAA 2a01:3f0:0:303::53 +02646D00000200010002A3000013026E7307616E7963617374036E696302646D00 +dm. 172800 IN NS ns.anycast.nic.dm. +02646D00000200010002A300001C026E7313626C61636B6E69676874736F6C7574696F6E7303636F6D00 +dm. 172800 IN NS ns.blacknightsolutions.com. +02646D00000200010002A300000C036E7332036E696302646D00 +dm. 172800 IN NS ns2.nic.dm. +02646D00000200010002A300001D036E733213626C61636B6E69676874736F6C7574696F6E7303636F6D00 +dm. 172800 IN NS ns2.blacknightsolutions.com. +02646D00002F000100015180000C02646F000006200000000003 +dm. 86400 IN NSEC do. NS RRSIG NSEC +02646D00002E0001000151800093002F08010001518052F4220052EAD9708377008412AD3F6A37FF0FF3348B719EB0ADDB9F6BA44F0B946F263C6699B47577550303D8B8686E04413E691F55FF492D616E94444B4DC969F753140ACF5F5463E7512EB987100E1FAC35FE2213E87682974B627C7726579EF464FB3DF1E15B07E794FF3049EAE8680490423CE6D65979F9883E6D2DBFC104C1BF290C693190FD74D4 +dm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hBKtP2o3/w/zNItxnrCt259rpE8LlG8mPGaZtHV3VQMD2LhobgRBPmkfVf9JLWFulERLTclp91MUCs9fVGPnUS65hxAOH6w1/iIT6HaCl0tifHcmV570ZPs98eFbB+eU/zBJ6uhoBJBCPObWWXn5iD5tLb/BBMG/KQxpMZD9dNQ= ;{id = 33655} +026E7307616E7963617374036E696302646D00000100010002A3000004CC3DD812 +ns.anycast.nic.dm. 172800 IN A 204.61.216.18 +036E7332036E696302646D00000100010002A3000004C77FC545 +ns2.nic.dm. 172800 IN A 199.127.197.69 +02646F00000200010002A300000B026E73036E696302646F00 +do. 172800 IN NS ns.nic.do. +02646F00000200010002A300000C036E7331036E696302646F00 +do. 172800 IN NS ns1.nic.do. +02646F00000200010002A300000C036E7332036E696302646F00 +do. 172800 IN NS ns2.nic.do. +02646F00000200010002A300000C036E7333036E696302646F00 +do. 172800 IN NS ns3.nic.do. +02646F00000200010002A300000C036E7333036E6963026D7800 +do. 172800 IN NS ns3.nic.mx. +02646F00000200010002A300000F06646F2D646E73036E696302707200 +do. 172800 IN NS do-dns.nic.pr. +02646F00000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +do. 172800 IN NS phloem.uoregon.edu. +02646F00000200010002A300001006736E732D706203697363036F726700 +do. 172800 IN NS sns-pb.isc.org. +02646F00002F000100015180001107646F6D61696E73000006200000000003 +do. 86400 IN NSEC domains. NS RRSIG NSEC +02646F00002E0001000151800093002F08010001518052F4220052EAD97083770052B196015726E0446450604A5A0186C025FAD8DD0BE401CB22BFF83B25A9D998F3B3634615016EB040A57B2BE05E4E6F9C376D95CB291EDC3D2C305E033B9F1C03232096C48C413A6869F9731FC879ECFD71A35C95D82EAF660A0F15E08308CD370942B078F28084014195E90C7301916D2D47CEF0859F1C41D1483EBBB98838 +do. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UrGWAVcm4ERkUGBKWgGGwCX62N0L5AHLIr/4OyWp2Zjzs2NGFQFusECleyvgXk5vnDdtlcspHtw9LDBeAzufHAMjIJbEjEE6aGn5cx/Ieez9caNcldgur2YKDxXggwjNNwlCsHjygIQBQZXpDHMBkW0tR87whZ8cQdFIPru5iDg= ;{id = 33655} +026E73036E696302646F00000100010002A3000004C8105BE4 +ns.nic.do. 172800 IN A 200.16.91.228 +026E73036E696302646F00001C00010002A3000010200113E085D001010000000000000228 +ns.nic.do. 172800 IN AAAA 2001:13e0:85d0:101::228 +036E7331036E696302646F00000100010002A3000004C8105BE2 +ns1.nic.do. 172800 IN A 200.16.91.226 +036E7331036E696302646F00001C00010002A3000010200113E085D001010000000000000226 +ns1.nic.do. 172800 IN AAAA 2001:13e0:85d0:101::226 +036E7332036E696302646F00000100010002A3000004C8105AA2 +ns2.nic.do. 172800 IN A 200.16.90.162 +036E7332036E696302646F00001C00010002A3000010200113E005D001010000000000000162 +ns2.nic.do. 172800 IN AAAA 2001:13e0:5d0:101::162 +036E7333036E696302646F00000100010002A300000495143D57 +ns3.nic.do. 172800 IN A 149.20.61.87 +036E7333036E696302646F00001C00010002A3000010200104F80003003D02E081FFFE4641F2 +ns3.nic.do. 172800 IN AAAA 2001:4f8:3:3d:2e0:81ff:fe46:41f2 +07646F6D61696E7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +domains. 172800 IN NS demand.beta.aridns.net.au. +07646F6D61696E7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +domains. 172800 IN NS demand.alpha.aridns.net.au. +07646F6D61696E7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +domains. 172800 IN NS demand.delta.aridns.net.au. +07646F6D61696E7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +domains. 172800 IN NS demand.gamma.aridns.net.au. +07646F6D61696E7300002B00010001518000246E0208025712C07D52BDFB21F425E2DFCE866A42EE94B37D230876FF68A27FA64920C0B9 +domains. 86400 IN DS 28162 8 2 5712C07D52BDFB21F425E2DFCE866A42EE94B37D230876FF68A27FA64920C0B9 +07646F6D61696E7300002E0001000151800093002B08010001518052F4220052EAD970837700A651C0A0ADABEBE11266FD3372FFEED8AD1F5F2048A049DEADA99E784A9DE515AB0534F27C953A219A8E4B14F16941D79536B2F33459353008AAC00F3BA4904A894577E9A041631B5BA50025181DAAC29F219898A023BA2848DB655F7FCEBFBD6CBF6933D9AA8804C7B95C754B2EF7D5F3DFC63C1C543EA4C3D118D894468AA7 +domains. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . plHAoK2r6+ESZv0zcv/u2K0fXyBIoEnerameeEqd5RWrBTTyfJU6IZqOSxTxaUHXlTay8zRZNTAIqsAPO6SQSolFd+mgQWMbW6UAJRgdqsKfIZiYoCO6KEjbZV9/zr+9bL9pM9mqiATHuVx1Sy731fPfxjwcVD6kw9EY2JRGiqc= ;{id = 33655} +07646F6D61696E7300002E0001000151800093002F08010001518052F4220052EAD97083770009F2C066B5174B862001619423E674CD1EFE393949D3D42C830FE78202C5E96DB829A2736A5B20C547FB27F7BEA18B26B63198B4838E8EF6D64A0DC00744A64DD2DC70B01F4EFA7B08A9DCC18722ADC300599801A7C19608D925DB009E191FFD3197447BB71038EDC53611FA784424EC61F99BCCA9E4B6D04270878F1BB46DE4 +domains. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CfLAZrUXS4YgAWGUI+Z0zR7+OTlJ09Qsgw/nggLF6W24KaJzalsgxUf7J/e+oYsmtjGYtIOOjvbWSg3AB0SmTdLccLAfTvp7CKncwYcircMAWZgBp8GWCNkl2wCeGR/9MZdEe7cQOO3FNhH6eEQk7GH5m8yp5LbQQnCHjxu0beQ= ;{id = 33655} +07646F6D61696E7300002F000100015180000C02647A000006200000000013 +domains. 86400 IN NSEC dz. NS DS RRSIG NSEC +02647A00002F000100015180000C026563000006200000000003 +dz. 86400 IN NSEC ec. NS RRSIG NSEC +02647A00002E0001000151800093002F08010001518052F4220052EAD970837700A7BA99FDFE178D6B3B5E55F75469D1050F8477004F0D39688FB0927A2C5CC2CE6DCD423FA47BC99E4F9FE0329B72F38F2653088EBB25A005608DEA15E0527073916DA3E61566F61CAFF5447F911F0CF2F9A4F79F596D42AAC633B29055D8661AB1D9B51D0EF753AD0596ADACB9F23461DBA81E65E6FCD5FC8CD2C13954636F43 +dz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . p7qZ/f4XjWs7XlX3VGnRBQ+EdwBPDTloj7CSeixcws5tzUI/pHvJnk+f4DKbcvOPJlMIjrsloAVgjeoV4FJwc5Fto+YVZvYcr/VEf5EfDPL5pPefWW1CqsYzspBV2GYasdm1HQ73U60Flq2sufI0YduoHmXm/NX8jNLBOVRjb0M= ;{id = 33655} +02647A00000200010002A300001B02647A056363746C640761757468646E730472697065036E657400 +dz. 172800 IN NS dz.cctld.authdns.ripe.net. +02647A00000200010002A300000C036E7331036E696302647A00 +dz. 172800 IN NS ns1.nic.dz. +02647A00000200010002A300000C036E7332036E696302647A00 +dz. 172800 IN NS ns2.nic.dz. +02647A00000200010002A300000C036E7333036E696302667200 +dz. 172800 IN NS ns3.nic.fr. +02647A00000200010002A3000013056E732D647A07616672696E6963036E657400 +dz. 172800 IN NS ns-dz.afrinic.net. +0469646E31036E696302647A00000100010002A3000004C1C240F3 +idn1.nic.dz. 172800 IN A 193.194.64.243 +0469646E32036E696302647A00000100010002A3000004D5B3A044 +idn2.nic.dz. 172800 IN A 213.179.160.68 +036E7331036E696302647A00000100010002A3000004C1C240F2 +ns1.nic.dz. 172800 IN A 193.194.64.242 +036E7331036E696302647A00001C00010002A300001020014340103000020000000000000002 +ns1.nic.dz. 172800 IN AAAA 2001:4340:1030:2::2 +036E7332036E696302647A00000100010002A3000004D5B3A042 +ns2.nic.dz. 172800 IN A 213.179.160.66 +02656300000200010002A300000B026E31036E696302656300 +ec. 172800 IN NS n1.nic.ec. +02656300000200010002A300000B026E32036E696302656300 +ec. 172800 IN NS n2.nic.ec. +02656300000200010002A300000B026E3303646E7302656300 +ec. 172800 IN NS n3.dns.ec. +02656300000200010002A300001006736E732D706203697363036F726700 +ec. 172800 IN NS sns-pb.isc.org. +02656300002F000100015180000D03656475000006200000000003 +ec. 86400 IN NSEC edu. NS RRSIG NSEC +02656300002E0001000151800093002F08010001518052F4220052EAD97083770019C000C699250DA827C34777E1A8DBFE1C5602A2B719B3BB5B6A4EEF8A40C9B296430C7C7B56DA799A9674FB045CE72C510FAD5090B3FDFA4084FDFAA5CA66BA3C0C9E970C7A2D388662796ABC776710B10EA817AB5C60E441E23923E219F82F82B0599D622F4F5D49B7E4C291C8DF01F618AA88F27C712E176B7FB5345FC726 +ec. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GcAAxpklDagnw0d34ajb/hxWAqK3GbO7W2pO74pAybKWQwx8e1baeZqWdPsEXOcsUQ+tUJCz/fpAhP36pcpmujwMnpcMei04hmJ5arx3ZxCxDqgXq1xg5EHiOSPiGfgvgrBZnWIvT11Jt+TCkcjfAfYYqojyfHEuF2t/tTRfxyY= ;{id = 33655} +026E3303646E7302656300000100010002A3000004CC3DD827 +n3.dns.ec. 172800 IN A 204.61.216.39 +026E3303646E7302656300001C00010002A3000010200105000014603900AD000000000001 +n3.dns.ec. 172800 IN AAAA 2001:500:14:6039:ad::1 +026E31036E696302656300000100010002A3000004C80CC601 +n1.nic.ec. 172800 IN A 200.12.198.1 +026E31036E696302656300001C00010002A300001028010000006100000000000000000001 +n1.nic.ec. 172800 IN AAAA 2801:0:61::1 +026E32036E696302656300000100010002A3000004C80CC701 +n2.nic.ec. 172800 IN A 200.12.199.1 +026E32036E696302656300001C00010002A300001028010000006000000000000000000001 +n2.nic.ec. 172800 IN AAAA 2801:0:60::1 +0365647500002F000100015180001309656475636174696F6E000006200000000013 +edu. 86400 IN NSEC education. NS DS RRSIG NSEC +0365647500002E0001000151800093002F08010001518052F4220052EAD9708377003A0582FD475563E0C700C1DA525B8DBFC4FFFE69211DE45B2246C3A75251245C7C8BF35F4E248E5806D167471042B18CA722AE9068ADB34106D3C6F5E8A7C97F0D0879CCFA9BA7DA7F251921AE5C3D6FD2F4D27EBBA8F586B4F4A1C7A95A108F7737D03F52F8C5434536AB8A1DD5BA0BA37B5628E9EDBF269E7A25894DD3AA10 +edu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OgWC/UdVY+DHAMHaUluNv8T//mkhHeRbIkbDp1JRJFx8i/NfTiSOWAbRZ0cQQrGMpyKukGits0EG08b16KfJfw0Iecz6m6fafyUZIa5cPW/S9NJ+u6j1hrT0ocepWhCPdzfQP1L4xUNFNquKHdW6C6N7Vijp7b8mnnoliU3TqhA= ;{id = 33655} +0365647500002E0001000151800093002B08010001518052F4220052EAD97083770034320FADAF9EFDC2D426340CA37164C5CA99409ED066443020E1099208E2C7D5E500847AB98D29852352815F0E0E3A354BFBC3F40F44C9A3B5F03CDD84059C0C6472ED2E7F31FC96C48E2186BB43096A52FCEE15A1DE1693EBA79FFF20DD21E28179E2C7AAE4CFA31C20CF9B70F0176A54B3DCC7D3F22274ACA496F9FA47D2B5 +edu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NDIPra+e/cLUJjQMo3FkxcqZQJ7QZkQwIOEJkgjix9XlAIR6uY0phSNSgV8ODjo1S/vD9A9EyaO18DzdhAWcDGRy7S5/MfyWxI4hhrtDCWpS/O4Vod4Wk+unn/8g3SHigXnix6rkz6McIM+bcPAXalSz3MfT8iJ0rKSW+fpH0rU= ;{id = 33655} +0365647500000200010002A300001301610B6564752D73657276657273036E657400 +edu. 172800 IN NS a.edu-servers.net. +0365647500000200010002A300001301630B6564752D73657276657273036E657400 +edu. 172800 IN NS c.edu-servers.net. +0365647500000200010002A300001301640B6564752D73657276657273036E657400 +edu. 172800 IN NS d.edu-servers.net. +0365647500000200010002A300001301660B6564752D73657276657273036E657400 +edu. 172800 IN NS f.edu-servers.net. +0365647500000200010002A300001301670B6564752D73657276657273036E657400 +edu. 172800 IN NS g.edu-servers.net. +0365647500000200010002A3000013016C0B6564752D73657276657273036E657400 +edu. 172800 IN NS l.edu-servers.net. +0365647500002B00010001518000246DA108024172496CDE85534E51129040355BD04B1FCFEBAE996DFDDE652006F6F8B2CE76 +edu. 86400 IN DS 28065 8 2 4172496CDE85534E51129040355BD04B1FCFEBAE996DFDDE652006F6F8B2CE76 +0561646E7331086265726B656C65790365647500000100010002A300000480208803 +adns1.berkeley.edu. 172800 IN A 128.32.136.3 +0561646E7331086265726B656C65790365647500001C00010002A30000102607F140FFFFFFFE0000000000000003 +adns1.berkeley.edu. 172800 IN AAAA 2607:f140:ffff:fffe::3 +0561646E7332086265726B656C65790365647500000100010002A30000048020880E +adns2.berkeley.edu. 172800 IN A 128.32.136.14 +04757072310375707203636C750365647500000100010002A300000488910104 +upr1.upr.clu.edu. 172800 IN A 136.145.1.4 +03646E73097072696E6365746F6E0365647500000100010002A30000048070810F +dns.princeton.edu. 172800 IN A 128.112.129.15 +0970656E647261676F6E026373067075726475650365647500000100010002A3000004800A0205 +pendragon.cs.purdue.edu. 172800 IN A 128.10.2.5 +0670686C6F656D07756F7265676F6E0365647500000100010002A300000480DF2023 +phloem.uoregon.edu. 172800 IN A 128.223.32.35 +0670686C6F656D07756F7265676F6E0365647500001C00010002A3000010200104680D0100200000000080DF2023 +phloem.uoregon.edu. 172800 IN AAAA 2001:468:d01:20::80df:2023 +09656475636174696F6E00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +education. 172800 IN NS demand.beta.aridns.net.au. +09656475636174696F6E00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +education. 172800 IN NS demand.alpha.aridns.net.au. +09656475636174696F6E00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +education. 172800 IN NS demand.delta.aridns.net.au. +09656475636174696F6E00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +education. 172800 IN NS demand.gamma.aridns.net.au. +09656475636174696F6E00002B000100015180002427370802B3147D88A4193F29D94867E05365EE734BFAD6C1BD480DBF024B974CB03CDDCF +education. 86400 IN DS 10039 8 2 B3147D88A4193F29D94867E05365EE734BFAD6C1BD480DBF024B974CB03CDDCF +09656475636174696F6E00002E0001000151800093002B08010001518052F4220052EAD970837700131B3A7BA2D173825A9CE93AC369D9D284D4F2521C4D3E8D5B2215D62A30F9D7BFBEA8C22E8AB64B1A3F0E803ED3CAA02062777A8983DA2219138CACE50515BD2041462D0DCBEDD9CACE477D1920031B5E52A3C01646B07BB1792651787F2E66DE49B884AC2BCDF30D79D7E3447DE7D888731FDE3CB9C2FF65B8F03FDCA374EA +education. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Exs6e6LRc4JanOk6w2nZ0oTU8lIcTT6NWyIV1iow+de/vqjCLoq2Sxo/DoA+08qgIGJ3eomD2iIZE4ys5QUVvSBBRi0Ny+3Zys5HfRkgAxteUqPAFkawe7F5JlF4fy5m3km4hKwrzfMNedfjRH3n2IhzH948ucL/ZbjwP9yjdOo= ;{id = 33655} +09656475636174696F6E00002E0001000151800093002F08010001518052F4220052EAD970837700298E0D957046D1AD7BDF1E7E2BB302ED2E374EEA9CBBDEE66D564F540804596B355269A542CADA471ECB6382B4A26AE51FE088DCED3694F2CFF343083FA7268E8746E3A5E54A0ECD9025F2063CA985A1F57820957E6997A7BA950629B7E5D3B54797946A6EB17139A8AFA29CA15F5DA5FCCA97B40AC38AA82B217227AF6F57F0 +education. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . KY4NlXBG0a173x5+K7MC7S43Tuqcu97mbVZPVAgEWWs1UmmlQsraRx7LY4K0omrlH+CI3O02lPLP80MIP6cmjodG46XlSg7NkCXyBjyphaH1eCCVfmmXp7qVBim35dO1R5eUam6xcTmor6KcoV9dpfzKl7QKw4qoKyFyJ69vV/A= ;{id = 33655} +09656475636174696F6E00002F000100015180000C026565000006200000000013 +education. 86400 IN NSEC ee. NS DS RRSIG NSEC +02656500000200010002A300000A016203746C6402656500 +ee. 172800 IN NS b.tld.ee. +02656500000200010002A300000A016503746C6402656500 +ee. 172800 IN NS e.tld.ee. +02656500000200010002A300000B0265650361736F02656500 +ee. 172800 IN NS ee.aso.ee. +02656500000200010002A300000A026E7302757402656500 +ee. 172800 IN NS ns.ut.ee. +02656500000200010002A300000B026E7303746C6402656500 +ee. 172800 IN NS ns.tld.ee. +02656500000200010002A300000D026E730565656E657402656500 +ee. 172800 IN NS ns.eenet.ee. +02656500000200010002A30000100573756E69630573756E657402736500 +ee. 172800 IN NS sunic.sunet.se. +02656500002B0001000151800024864E0802000A3D89DC6CD4BA00EA8AFFEE3967D3A26DE7A545FBEFE16BA07518FC8D54F6 +ee. 86400 IN DS 34382 8 2 000A3D89DC6CD4BA00EA8AFFEE3967D3A26DE7A545FBEFE16BA07518FC8D54F6 +02656500002E0001000151800093002B08010001518052F4220052EAD9708377001A90FEF42CF9798B936984B7278840E3D0EAC6B1B836DAEFB256750C940EF4787045C320DE3268CC662D6954E44FBF180A8F4498274B637579D785E0B2E628B8C888AF143145E3A04A4F0D7C66EB2F760DD4BCC8FF9B6A397C87B7558A8122134B5264937483570A34F2B6912E4ED2E93CEBC34FE18A74B6C611A367B19432AA +ee. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GpD+9Cz5eYuTaYS3J4hA49DqxrG4NtrvslZ1DJQO9HhwRcMg3jJozGYtaVTkT78YCo9EmCdLY3V514XgsuYouMiIrxQxReOgSk8NfGbrL3YN1LzI/5tqOXyHt1WKgSITS1Jkk3SDVwo08raRLk7S6Tzrw0/hinS2xhGjZ7GUMqo= ;{id = 33655} +02656500002E0001000151800093002F08010001518052F4220052EAD9708377004BA9ED42572222D30C2F983B69B4A179298696E47AF315E5C5EB0FA6E919F17734F460C17360118A8BA428050E6C37184BF14B537C12D3131B133D41D841BC0E8762E3170FC00D5EC8AF2C2F76D570245A41AB9741F1AB28726CA7A5EAEEC751D6417E465615A274794CA330EB248B1DAE0F2FACB8CB0916CF30D1EB4CF84599 +ee. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S6ntQlciItMML5g7abSheSmGluR68xXlxesPpukZ8Xc09GDBc2ARioukKAUObDcYS/FLU3wS0xMbEz1B2EG8Dodi4xcPwA1eyK8sL3bVcCRaQauXQfGrKHJsp6Xq7sdR1kF+RlYVonR5TKMw6ySLHa4PL6y4ywkWzzDR60z4RZk= ;{id = 33655} +02656500002F000100015180000C026567000006200000000013 +ee. 86400 IN NSEC eg. NS DS RRSIG NSEC +0265650361736F02656500000100010002A3000004D5B8337A +ee.aso.ee. 172800 IN A 213.184.51.122 +0265650361736F02656500001C00010002A30000102A020088000000210000000000000002 +ee.aso.ee. 172800 IN AAAA 2a02:88:0:21::2 +026E730565656E657402656500000100010002A3000004C12838F5 +ns.eenet.ee. 172800 IN A 193.40.56.245 +026E730565656E657402656500001C00010002A300001020010BB8000000000000000000000001 +ns.eenet.ee. 172800 IN AAAA 2001:bb8::1 +016203746C6402656500000100010002A3000004C2926A6E +b.tld.ee. 172800 IN A 194.146.106.110 +016203746C6402656500001C00010002A30000102001067C101000280000000000000053 +b.tld.ee. 172800 IN AAAA 2001:67c:1010:28::53 +016503746C6402656500000100010002A3000004CC3DD824 +e.tld.ee. 172800 IN A 204.61.216.36 +016503746C6402656500001C00010002A300001020010678009400530000000000000053 +e.tld.ee. 172800 IN AAAA 2001:678:94:53::53 +026E7303746C6402656500000100010002A3000004C32B570A +ns.tld.ee. 172800 IN A 195.43.87.10 +026E7302757402656500000100010002A3000004C1280563 +ns.ut.ee. 172800 IN A 193.40.5.99 +02656700002F000100015180000F05656D61696C000006200000000003 +eg. 86400 IN NSEC email. NS RRSIG NSEC +02656700002E0001000151800093002F08010001518052F4220052EAD9708377007D7E8DE7681FC7F80704AACE28E42262D1DE224431100A135383C9A53C8E8DFB10F2847C06868456337070A496EC139CC995380CCAEFDBBF069D8FA89992F0E7F2DCA33C7FB418DA19028DD3F6BB939827FFCF580535ED43B6FA508982F3E2C2F0363227F837CC5B8BC0ADA970FD7D5F6B1A94A3D08B209647F14846F7332F74 +eg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fX6N52gfx/gHBKrOKOQiYtHeIkQxEAoTU4PJpTyOjfsQ8oR8BoaEVjNwcKSW7BOcyZU4DMrv278GnY+omZLw5/Lcozx/tBjaGQKN0/a7k5gn/89YBTXtQ7b6UImC8+LC8DYyJ/g3zFuLwK2pcP19X2salKPQiyCWR/FIRvczL3Q= ;{id = 33655} +02656700000200010002A3000012036E733506756E6976696502616302617400 +eg. 172800 IN NS ns5.univie.ac.at. +02656700000200010002A300000D037269700370736703636F6D00 +eg. 172800 IN NS rip.psg.com. +02656700000200010002A300000D04667263750365756E02656700 +eg. 172800 IN NS frcu.eun.eg. +036E733107646F746D61737202656700000100010002A30000045115619B +ns1.dotmasr.eg. 172800 IN A 81.21.97.155 +036E733207646F746D61737202656700000100010002A30000045115630B +ns2.dotmasr.eg. 172800 IN A 81.21.99.11 +036E733307646F746D61737202656700000100010002A3000004510A260B +ns3.dotmasr.eg. 172800 IN A 81.10.38.11 +04667263750365756E02656700000100010002A3000004C1E30101 +frcu.eun.eg. 172800 IN A 193.227.1.1 +05656D61696C00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +email. 172800 IN NS demand.beta.aridns.net.au. +05656D61696C00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +email. 172800 IN NS demand.alpha.aridns.net.au. +05656D61696C00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +email. 172800 IN NS demand.delta.aridns.net.au. +05656D61696C00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +email. 172800 IN NS demand.gamma.aridns.net.au. +05656D61696C00002B0001000151800024C90A08022F1D54E81A3F873361603A8985FB4F19823FA63B9399A9AA5A6A58456C66597F +email. 86400 IN DS 51466 8 2 2F1D54E81A3F873361603A8985FB4F19823FA63B9399A9AA5A6A58456C66597F +05656D61696C00002E0001000151800093002B08010001518052F4220052EAD9708377004E049D928A88A2F1B398CCD562A43ACD8953374F4F4A60B480B14BD79726845F96BE1C952C36581EE0E6AC6F2CD1664DA4B13C29E0811C710820335725CE0B4693EED815DEC87EA59F1C48A5CBB4F2FCBB84DBD279DFE5F7ABAF52FD8FB88CC5E568E947DF9EA533B236AC63FADDF156B4A0CF60CB4A0846FD01B4B549249E1D +email. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TgSdkoqIovGzmMzVYqQ6zYlTN09PSmC0gLFL15cmhF+WvhyVLDZYHuDmrG8s0WZNpLE8KeCBHHEIIDNXJc4LRpPu2BXeyH6lnxxIpcu08vy7hNvSed/l96uvUv2PuIzF5WjpR9+epTOyNqxj+t3xVrSgz2DLSghG/QG0tUkknh0= ;{id = 33655} +05656D61696C00002E0001000151800093002F08010001518052F4220052EAD9708377007F5BAC825D5D7CD275D1C9BE0E56A2F35845A706A333B73D6F0593EC6309E93F3DAFB0A9C14E02187E5C821905A9C0CA248F6EECE0812A17F2438031661EA799FB0A5FF113B7B27BBA8E62188273E2918356D50B2186234AAC3E3B30B8B7EE540EF98B2086570BF7EDFC0A90235795A4F3CF7EC6365427348340ED36AE819C10 +email. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f1usgl1dfNJ10cm+Dlai81hFpwajM7c9bwWT7GMJ6T89r7CpwU4CGH5cghkFqcDKJI9u7OCBKhfyQ4AxZh6nmfsKX/ETt7J7uo5iGIJz4pGDVtULIYYjSqw+OzC4t+5UDvmLIIZXC/ft/AqQI1eVpPPPfsY2VCc0g0DtNq6BnBA= ;{id = 33655} +05656D61696C00002F00010001518000150B656E746572707269736573000006200000000013 +email. 86400 IN NSEC enterprises. NS DS RRSIG NSEC +0B656E74657270726973657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +enterprises. 172800 IN NS demand.beta.aridns.net.au. +0B656E74657270726973657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +enterprises. 172800 IN NS demand.alpha.aridns.net.au. +0B656E74657270726973657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +enterprises. 172800 IN NS demand.delta.aridns.net.au. +0B656E74657270726973657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +enterprises. 172800 IN NS demand.gamma.aridns.net.au. +0B656E74657270726973657300002B0001000151800024BD2808027817DF3AD3DA83CDA3728126935F8B892EED5FF59F8809679CA7FB6ACA253137 +enterprises. 86400 IN DS 48424 8 2 7817DF3AD3DA83CDA3728126935F8B892EED5FF59F8809679CA7FB6ACA253137 +0B656E74657270726973657300002E0001000151800093002B08010001518052F4220052EAD97083770035998581909B7AC70DD4742304F1BDF3C8A4AEECD9A751018E4CA0D4A628555F64240EE34F495590102E762A2003B911B6B302B7A6FB3014F5376EC68A00D1EC376B1B7604DAF70AC0C28C942A2446D88959A8810F4201071712EC9082FA95A2AF32AA7B484166E4C83D7750A32CD544E0103811D7A0F4BDFF78032132DA5AF1 +enterprises. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NZmFgZCbescN1HQjBPG988ikruzZp1EBjkyg1KYoVV9kJA7jT0lVkBAudiogA7kRtrMCt6b7MBT1N27GigDR7DdrG3YE2vcKwMKMlCokRtiJWaiBD0IBBxcS7JCC+pWirzKqe0hBZuTIPXdQoyzVROAQOBHXoPS9/3gDITLaWvE= ;{id = 33655} +0B656E74657270726973657300002E0001000151800093002F08010001518052F4220052EAD9708377007B3D1AD51D475448E24411701965455DC1B4556461EDB2343F94E39116F35367293C0A1F0DDBC673901ECAB78F7E0AC4F8EC530D535714FB3A1659A9F36F4DCDDF2AC0E3BE52E33B200F7171BE38599E2329ED53184E234C12200B4CF398811DFEC46422C27339885943FEB769005519FCE9149889BAB99A9721CFAC0E4ABF11 +enterprises. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ez0a1R1HVEjiRBFwGWVFXcG0VWRh7bI0P5TjkRbzU2cpPAofDdvGc5AeyrePfgrE+OxTDVNXFPs6Flmp829Nzd8qwOO+UuM7IA9xcb44WZ4jKe1TGE4jTBIgC0zzmIEd/sRkIsJzOYhZQ/63aQBVGfzpFJiJurmalyHPrA5KvxE= ;{id = 33655} +0B656E74657270726973657300002F00010001518000130965717569706D656E74000006200000000013 +enterprises. 86400 IN NSEC equipment. NS DS RRSIG NSEC +0965717569706D656E7400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +equipment. 172800 IN NS demand.beta.aridns.net.au. +0965717569706D656E7400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +equipment. 172800 IN NS demand.alpha.aridns.net.au. +0965717569706D656E7400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +equipment. 172800 IN NS demand.delta.aridns.net.au. +0965717569706D656E7400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +equipment. 172800 IN NS demand.gamma.aridns.net.au. +0965717569706D656E7400002B000100015180002456B90802A164745D7DAB36BB4F998EFA7D2C375033562D6C9D262B3091E671B6969344EB +equipment. 86400 IN DS 22201 8 2 A164745D7DAB36BB4F998EFA7D2C375033562D6C9D262B3091E671B6969344EB +0965717569706D656E7400002E0001000151800093002B08010001518052F4220052EAD9708377002BB443A0BB570FD6E0CAED1FBF9177701C910A2A3F6E2E28A5C4DA64986FD7E3FA06FC33FC176CF31BF19AF75B38902549DFE6D505288CDE64E2DC5C19096F8AF03311516C291BC3178FC28891DE7B07214FF0423DFAD202FCB7588CC07351AE9216D1DE0E02E71DC26865E12BC7535C702B17C543BDD03339702AF69BE24D4A +equipment. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K7RDoLtXD9bgyu0fv5F3cByRCio/bi4opcTaZJhv1+P6Bvwz/Bds8xvxmvdbOJAlSd/m1QUojN5k4txcGQlvivAzEVFsKRvDF4/CiJHeewchT/BCPfrSAvy3WIzAc1GukhbR3g4C5x3CaGXhK8dTXHArF8VDvdAzOXAq9pviTUo= ;{id = 33655} +0965717569706D656E7400002E0001000151800093002F08010001518052F4220052EAD9708377006F3B453AB07763DA87C4441759E927AB8139B541473F5E71012929056FCC0BD7920289C330363040138F8AD345463E55885A34E22FCC8DC62B6AA2122C95269B3EA2F3B80E0361C118F4ADA873ADCCF814B5042E31385CE652BD2324E1AD4153C647B62FAB4E6DDBBEDE32FFDD9B176F6731F8E157F0BE371848E3B5711BADB8 +equipment. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bztFOrB3Y9qHxEQXWeknq4E5tUFHP15xASkpBW/MC9eSAonDMDYwQBOPitNFRj5ViFo04i/MjcYraqISLJUmmz6i87gOA2HBGPStqHOtzPgUtQQuMThc5lK9IyThrUFTxke2L6tObdu+3jL/3ZsXb2cx+OFX8L43GEjjtXEbrbg= ;{id = 33655} +0965717569706D656E7400002F000100015180000C026572000006200000000013 +equipment. 86400 IN NSEC er. NS DS RRSIG NSEC +02657200000200010002A300001B026572056363746C640761757468646E730472697065036E657400 +er. 172800 IN NS er.cctld.authdns.ripe.net. +02657200000200010002A300001407736177616E6577036E6F63036E657402657200 +er. 172800 IN NS sawanew.noc.net.er. +02657200000200010002A3000014077A6172616E6577036E6F63036E657402657200 +er. 172800 IN NS zaranew.noc.net.er. +02657200002F000100015180000C026573000006200000000003 +er. 86400 IN NSEC es. NS RRSIG NSEC +02657200002E0001000151800093002F08010001518052F4220052EAD970837700B77D3662BE3FC1D6538C988DC7E781D5530017A4B72926568269B57DE35BFF326391B8FFF38757A4F7C051F5535144CB61C083F6D89DA6593FDDCA2BA51A7E4EAD31A96AFEE3F73652ADB5AF1871AE9C273D29065C9BA03EF60856276DF917AF8648BB3C709CD30CC71172E4B7632CAD78849C105B76DC18BF1623C0B67073E6 +er. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . t302Yr4/wdZTjJiNx+eB1VMAF6S3KSZWgmm1feNb/zJjkbj/84dXpPfAUfVTUUTLYcCD9tidplk/3corpRp+Tq0xqWr+4/c2Uq21rxhxrpwnPSkGXJugPvYIVidt+Revhki7PHCc0wzHEXLkt2MsrXiEnBBbdtwYvxYjwLZwc+Y= ;{id = 33655} +07736177616E6577036E6F63036E657402657200000100010002A3000004C4C86001 +sawanew.noc.net.er. 172800 IN A 196.200.96.1 +077A6172616E6577036E6F63036E657402657200000100010002A3000004C4C86002 +zaranew.noc.net.er. 172800 IN A 196.200.96.2 +02657300002F000100015180001006657374617465000006200000000003 +es. 86400 IN NSEC estate. NS RRSIG NSEC +02657300002E0001000151800093002F08010001518052F4220052EAD970837700B9F824FB4FE1F2D1CF09E0C8F3D5FBF5CB47438A708B42E51F2238866E544D6153D5049BA282299CCAC38582743EED61D315265EC3D7AB14851B50A812E380B54DCB5D8A262F0A13835D60E1985E270BDFF9620D305F32B7767132BDA78F485DED694AE64600D008D9B569B166A2EEFE44E0E0C36ADD84086213AEA6AEB5A2B7 +es. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ufgk+0/h8tHPCeDI89X79ctHQ4pwi0LlHyI4hm5UTWFT1QSbooIpnMrDhYJ0Pu1h0xUmXsPXqxSFG1CoEuOAtU3LXYomLwoTg11g4ZheJwvf+WINMF8yt3ZxMr2nj0hd7WlK5kYA0AjZtWmxZqLu/kTg4MNq3YQIYhOupq61orc= ;{id = 33655} +02657300000200010002A300000A0161036E696302657300 +es. 172800 IN NS a.nic.es. +02657300000200010002A300000A0166036E696302657300 +es. 172800 IN NS f.nic.es. +02657300000200010002A300000E036E733105636573636102657300 +es. 172800 IN NS ns1.cesca.es. +02657300000200010002A300000C036E7333036E696302667200 +es. 172800 IN NS ns3.nic.fr. +02657300000200010002A3000017046E7331350C636F6D6D756E697479646E73036E657400 +es. 172800 IN NS ns15.communitydns.net. +02657300000200010002A300000F066E732D657874036E696302636C00 +es. 172800 IN NS ns-ext.nic.cl. +02657300000200010002A300001006736E732D706203697363036F726700 +es. 172800 IN NS sns-pb.isc.org. +036E733105636573636102657300000100010002A300000454580003 +ns1.cesca.es. 172800 IN A 84.88.0.3 +0161036E696302657300000100010002A3000004C245FE01 +a.nic.es. 172800 IN A 194.69.254.1 +0161036E696302657300001C00010002A30000102001067C21CC20000000000000640041 +a.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:41 +0166036E696302657300000100010002A300000482CE0102 +f.nic.es. 172800 IN A 130.206.1.2 +0166036E696302657300001C00010002A3000010200107200418CAF10000000000000002 +f.nic.es. 172800 IN AAAA 2001:720:418:caf1::2 +046E336E73036E696302657300000100010002A3000004C245FE2A +n3ns.nic.es. 172800 IN A 194.69.254.42 +046E336E73036E696302657300001C00010002A30000102001067C21CC20000000000000640042 +n3ns.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:42 +026164026E73036E696302657300000100010002A3000004C245FE0F +ad.ns.nic.es. 172800 IN A 194.69.254.15 +036E7331036E696302657300000100010002A3000004C245FE01 +ns1.nic.es. 172800 IN A 194.69.254.1 +036E7331036E696302657300001C00010002A30000102001067C21CC20000000000000640041 +ns1.nic.es. 172800 IN AAAA 2001:67c:21cc:2000::64:41 +0665737461746500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +estate. 172800 IN NS demand.beta.aridns.net.au. +0665737461746500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +estate. 172800 IN NS demand.alpha.aridns.net.au. +0665737461746500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +estate. 172800 IN NS demand.delta.aridns.net.au. +0665737461746500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +estate. 172800 IN NS demand.gamma.aridns.net.au. +0665737461746500002B0001000151800024FB6508021B99951833A83F4A59D027C8117A5597FF969F7A7E2C539ACAD9AA025245A7ED +estate. 86400 IN DS 64357 8 2 1B99951833A83F4A59D027C8117A5597FF969F7A7E2C539ACAD9AA025245A7ED +0665737461746500002E0001000151800093002B08010001518052F4220052EAD9708377003E1B6B4102F6BE3206880938A5DEB32F403AD1BB8D6A42DE96B4B79A4BCA2945CEE1411EDA9086430CD70EC909B22E7CAB4DF96ACF73D78426444A4E677CC921411EEE9BC048407C2672501BDCF56D4A31608D76A636ED409AD3E21132EA4E49E326D91366F817C44B312B99BB9A26C1332C7D65BE73F7015D96E07F9218377D +estate. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PhtrQQL2vjIGiAk4pd6zL0A60buNakLelrS3mkvKKUXO4UEe2pCGQwzXDskJsi58q035as9z14QmREpOZ3zJIUEe7pvASEB8JnJQG9z1bUoxYI12pjbtQJrT4hEy6k5J4ybZE2b4F8RLMSuZu5omwTMsfWW+c/cBXZbgf5IYN30= ;{id = 33655} +0665737461746500002E0001000151800093002F08010001518052F4220052EAD9708377000FFD128B1444730652DAA4F20F4D9E2253CE249B9DC1DB7263AA4E3B40CA5B312ACFD873E60B25D7BA87FA96ABA5B77CB978650732FCB7C01462317E97F9494F171CED29463028218B6D47B2F3985F0FD7A5B069C4E915487A689764564EF237A3D89DE70841DB5F49EEFA90C3A503EE304BDFFF0699B8C37807D4333401D372 +estate. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . D/0SixREcwZS2qTyD02eIlPOJJudwdtyY6pOO0DKWzEqz9hz5gsl17qH+parpbd8uXhlBzL8t8AUYjF+l/lJTxcc7SlGMCghi21HsvOYXw/XpbBpxOkVSHpol2RWTvI3o9id5whB219J7vqQw6UD7jBL3/8GmbjDeAfUMzQB03I= ;{id = 33655} +0665737461746500002F000100015180000C026574000006200000000013 +estate. 86400 IN NSEC et. NS DS RRSIG NSEC +02657400000200010002A300001B026574056363746C640761757468646E730472697065036E657400 +et. 172800 IN NS et.cctld.authdns.ripe.net. +02657400000200010002A3000014036E73310774656C65636F6D036E657402657400 +et. 172800 IN NS ns1.telecom.net.et. +02657400000200010002A3000014036E73320774656C65636F6D036E657402657400 +et. 172800 IN NS ns2.telecom.net.et. +02657400000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +et. 172800 IN NS phloem.uoregon.edu. +02657400002F000100015180000C026575000006200000000003 +et. 86400 IN NSEC eu. NS RRSIG NSEC +02657400002E0001000151800093002F08010001518052F4220052EAD9708377007D51BA7615E04D9D0C0A79A2C615976162B3B92D7D46D40B321B81D703BA85CF663D7920A173E633E1E61F46FB3DB6B1C1DBA1133C9852D95066C0DC47147C21A5F37DC362578D74C9B11B02A21DEA7E31A42E4F949BA6E4864CAC7B798D65E4F4DD94A23211A464A948F66255EFDE3157539E54AEFCFE0CEE7F037B10B48245 +et. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fVG6dhXgTZ0MCnmixhWXYWKzuS19RtQLMhuB1wO6hc9mPXkgoXPmM+HmH0b7PbaxwduhEzyYUtlQZsDcRxR8IaXzfcNiV410ybEbAqId6n4xpC5PlJum5IZMrHt5jWXk9N2UojIRpGSpSPZiVe/eMVdTnlSu/P4M7n8DexC0gkU= ;{id = 33655} +036E73310774656C65636F6D036E657402657400000100010002A3000004D5374024 +ns1.telecom.net.et. 172800 IN A 213.55.64.36 +036E73320774656C65636F6D036E657402657400000100010002A3000004D5374026 +ns2.telecom.net.et. 172800 IN A 213.55.64.38 +02657500002F000100015180001006657870657274000006200000000013 +eu. 86400 IN NSEC expert. NS DS RRSIG NSEC +02657500002E0001000151800093002F08010001518052F4220052EAD9708377000DCF3573F50E97266344B059264FF3149160D5A77ADD5799A4582EEEA6AE8973B591EF9E945E49B02B2F615882721F89204C0E6C139A2D54155D5741C4DFD9D0673174857572DDFBF5E64BF5F9B70478B57DA2D30AB6BA0ECF38C377AFD3375658B99378515B39403C8D8968CF96F00203FFCD54E6345A483E3AF4CCE40FAF28 +eu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Dc81c/UOlyZjRLBZJk/zFJFg1ad63VeZpFgu7qauiXO1ke+elF5JsCsvYViCch+JIEwObBOaLVQVXVdBxN/Z0GcxdIV1ct379eZL9fm3BHi1faLTCra6Ds84w3ev0zdWWLmTeFFbOUA8jYloz5bwAgP/zVTmNFpIPjr0zOQPryg= ;{id = 33655} +02657500002E0001000151800093002B08010001518052F4220052EAD9708377001953694002C31CA7FA1994D70D755056028ACE4BC4B63AE44F5DDB3FABB4B2630C68EFA099A602637F8DDF8A8BAD30E5A900AB5BAE61CB53D7D50562A516B2CC9F946113EFAB10ED387409AF84D14674A405BCC7AA4AA78EE479110574354B624E5E5E1B181E58C6809625D9A93E157698D2EAC592DEE338E8A98FFED4F7E462 +eu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GVNpQALDHKf6GZTXDXVQVgKKzkvEtjrkT13bP6u0smMMaO+gmaYCY3+N34qLrTDlqQCrW65hy1PX1QVipRayzJ+UYRPvqxDtOHQJr4TRRnSkBbzHqkqnjuR5EQV0NUtiTl5eGxgeWMaAliXZqT4VdpjS6sWS3uM46KmP/tT35GI= ;{id = 33655} +02657500000200010002A300000A017803646E7302657500 +eu. 172800 IN NS x.dns.eu. +02657500000200010002A300000A017903646E7302657500 +eu. 172800 IN NS y.dns.eu. +02657500000200010002A300000B02637A03646E7302657500 +eu. 172800 IN NS cz.dns.eu. +02657500000200010002A300000B026E6C03646E7302657500 +eu. 172800 IN NS nl.dns.eu. +02657500000200010002A300000B02736903646E7302657500 +eu. 172800 IN NS si.dns.eu. +02657500000200010002A300000B02756B03646E7302657500 +eu. 172800 IN NS uk.dns.eu. +02657500002B0001000151800018EEFB070187E2B3544884B45F36A0DA72DADCB0239C4D73D4 +eu. 86400 IN DS 61179 7 1 87E2B3544884B45F36A0DA72DADCB0239C4D73D4 +02657500002B0001000151800024EEFB07023B526BCC354AE085AD9984C9BE73D271411023EFF421EF184BCE41ACE3DE9F8B +eu. 86400 IN DS 61179 7 2 3B526BCC354AE085AD9984C9BE73D271411023EFF421EF184BCE41ACE3DE9F8B +02637A03646E7302657500000100010002A30000045DBE808A +cz.dns.eu. 172800 IN A 93.190.128.138 +026E6C03646E7302657500000100010002A30000045BC81064 +nl.dns.eu. 172800 IN A 91.200.16.100 +02736903646E7302657500000100010002A3000004C102DD3C +si.dns.eu. 172800 IN A 193.2.221.60 +02736903646E7302657500001C00010002A300001020011470800001000000000000000001 +si.dns.eu. 172800 IN AAAA 2001:1470:8000:100::1 +02756B03646E7302657500000100010002A3000004C342F1B2 +uk.dns.eu. 172800 IN A 195.66.241.178 +017803646E7302657500000100010002A3000004C2000113 +x.dns.eu. 172800 IN A 194.0.1.19 +017803646E7302657500001C00010002A300001020010678000400000000000000000013 +x.dns.eu. 172800 IN AAAA 2001:678:4::13 +017903646E7302657500000100010002A3000004C2926A5A +y.dns.eu. 172800 IN A 194.146.106.90 +017903646E7302657500001C00010002A30000102001067C101000230000000000000053 +y.dns.eu. 172800 IN AAAA 2001:67c:1010:23::53 +036E7336076E6F6D696E756D02657500000100010002A300000451C84523 +ns6.nominum.eu. 172800 IN A 81.200.69.35 +0665787065727400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +expert. 172800 IN NS demand.beta.aridns.net.au. +0665787065727400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +expert. 172800 IN NS demand.alpha.aridns.net.au. +0665787065727400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +expert. 172800 IN NS demand.delta.aridns.net.au. +0665787065727400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +expert. 172800 IN NS demand.gamma.aridns.net.au. +0665787065727400002B00010001518000245C59080269D4659BE016123C984DB12560A72D36F49104DC165E4CB9A76B5A320BA8A18F +expert. 86400 IN DS 23641 8 2 69D4659BE016123C984DB12560A72D36F49104DC165E4CB9A76B5A320BA8A18F +0665787065727400002E0001000151800093002B08010001518052F4220052EAD970837700161E14C62A9C1D8FBF840C016EA6847C4BF879E6C3A0FF15012597A86139F9239CD2A30E6F34369E0E0F2DEA60A1AFDBC57A53B79B1C7A66D2693AF4D1D03E913D26A864731B9B98DCCE242EB453DBFAD8C8AAF225E42C6246463F7BA09EACA028C6AAE6282E01D77878917190302894CA0DACF1BA03B22D2DFC24EE69778802 +expert. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Fh4UxiqcHY+/hAwBbqaEfEv4eebDoP8VASWXqGE5+SOc0qMObzQ2ng4PLepgoa/bxXpTt5scembSaTr00dA+kT0mqGRzG5uY3M4kLrRT2/rYyKryJeQsYkZGP3ugnqygKMaq5iguAdd4eJFxkDAolMoNrPG6A7ItLfwk7ml3iAI= ;{id = 33655} +0665787065727400002E0001000151800093002F08010001518052F4220052EAD970837700646C6CE45DB50079B247EBC9E4437569FF1EE7C7C3C4CD37F147E14F94101A442D0F1FCC6619224281D5AD0F4DCBBF332FE23EC47C9320E9A62AB8294835BF271519FAE8E10878FE7710CB6BA5FCD16DBE97BB78E3BE262565E5920D2A06EF94FF1463BB4278881AE4577759F0C009063E409466C7A75296CD78AAF875856BDC +expert. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZGxs5F21AHmyR+vJ5EN1af8e58fDxM038UfhT5QQGkQtDx/MZhkiQoHVrQ9Ny78zL+I+xHyTIOmmKrgpSDW/JxUZ+ujhCHj+dxDLa6X80W2+l7t4474mJWXlkg0qBu+U/xRju0J4iBrkV3dZ8MAJBj5AlGbHp1KWzXiq+HWFa9w= ;{id = 33655} +0665787065727400002F000100015180000E046661726D000006200000000013 +expert. 86400 IN NSEC farm. NS DS RRSIG NSEC +046661726D00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +farm. 172800 IN NS demand.beta.aridns.net.au. +046661726D00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +farm. 172800 IN NS demand.alpha.aridns.net.au. +046661726D00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +farm. 172800 IN NS demand.delta.aridns.net.au. +046661726D00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +farm. 172800 IN NS demand.gamma.aridns.net.au. +046661726D00002B0001000151800024C3CA08023782D7D15479D12AF978FD07490A34E80ED9254154FC92808ED393F0F8A48604 +farm. 86400 IN DS 50122 8 2 3782D7D15479D12AF978FD07490A34E80ED9254154FC92808ED393F0F8A48604 +046661726D00002E0001000151800093002B08010001518052F4220052EAD970837700229327609E336D52CF57F4DA8993C2CF0B73351AF16CC0A1BEDF9E355846F6D472067A17B56D17C07558C4361BFCE5E13B4A888F28C89BD8ADC9D2B200C7613EDFC573B23F52A9743002E946A1A1EDD04623AC0E78130E45B2356153C4D0A44D021D02D51A355EA2F9A92C080C19244D23CF99FBF056A8F2CA94AF826C73DC48 +farm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . IpMnYJ4zbVLPV/TaiZPCzwtzNRrxbMChvt+eNVhG9tRyBnoXtW0XwHVYxDYb/OXhO0qIjyjIm9itydKyAMdhPt/Fc7I/Uql0MALpRqGh7dBGI6wOeBMORbI1YVPE0KRNAh0C1Ro1XqL5qSwIDBkkTSPPmfvwVqjyypSvgmxz3Eg= ;{id = 33655} +046661726D00002E0001000151800093002F08010001518052F4220052EAD970837700435350A47E9209CCD627AB661D8E1802BFD6815A79F816C9B3B08D33C58B9E63B1485D655CBDE08E7124BD25394A903A68D31BA688BAE08C4971116A7D4966C7AEC80162A36B5BA35CA01B6594E2C626A1FDBF16575C33206413CBA2A35C7C2035A865567C52B9E87D66AD088C2AF748B7731387FE65F7064BEF271A12E62BE0 +farm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Q1NQpH6SCczWJ6tmHY4YAr/WgVp5+BbJs7CNM8WLnmOxSF1lXL3gjnEkvSU5SpA6aNMbpoi64IxJcRFqfUlmx67IAWKja1ujXKAbZZTixiah/b8WV1wzIGQTy6KjXHwgNahlVnxSueh9Zq0IjCr3SLdzE4f+ZfcGS+8nGhLmK+A= ;{id = 33655} +046661726D00002F000100015180000C026669000006200000000013 +farm. 86400 IN NSEC fi. NS DS RRSIG NSEC +02666900000200010002A3000006016102666900 +fi. 172800 IN NS a.fi. +02666900000200010002A3000006016202666900 +fi. 172800 IN NS b.fi. +02666900000200010002A3000006016302666900 +fi. 172800 IN NS c.fi. +02666900000200010002A3000006016402666900 +fi. 172800 IN NS d.fi. +02666900000200010002A3000006016502666900 +fi. 172800 IN NS e.fi. +02666900000200010002A3000006016602666900 +fi. 172800 IN NS f.fi. +02666900000200010002A3000006016702666900 +fi. 172800 IN NS g.fi. +02666900000200010002A3000006016802666900 +fi. 172800 IN NS h.fi. +02666900000200010002A3000006016902666900 +fi. 172800 IN NS i.fi. +02666900002B00010001518000248A5E08027282CE618E87E06DF5A21956AA54D02A98B8ADA54253A592A88E6AB94D7C1B0C +fi. 86400 IN DS 35422 8 2 7282CE618E87E06DF5A21956AA54D02A98B8ADA54253A592A88E6AB94D7C1B0C +02666900002B000100015180002492690802348035176474A7247E7593D2CED09873F42E72FBF823B27328980A1236E75678 +fi. 86400 IN DS 37481 8 2 348035176474A7247E7593D2CED09873F42E72FBF823B27328980A1236E75678 +02666900002E0001000151800093002B08010001518052F4220052EAD97083770035129A7565826AFF361C9F2ED630282CB4FDBFE0297F5D41DA0B33C0E0870C36C0F3C86E10DC535CBDF6392608818E1A71222B180EFF2A2BC29BE6CD66D0DE7799991E81309A355E653B164AB1663389E24570E93AB488573D8DFF66A0A459FB17E0F127E8D77C0065988E503904EAC801C4A37AA912BE9925CB703E29F500F7 +fi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . NRKadWWCav82HJ8u1jAoLLT9v+Apf11B2gszwOCHDDbA88huENxTXL32OSYIgY4acSIrGA7/KivCm+bNZtDed5mZHoEwmjVeZTsWSrFmM4niRXDpOrSIVz2N/2agpFn7F+DxJ+jXfABlmI5QOQTqyAHEo3qpEr6ZJctwPin1APc= ;{id = 33655} +02666900002E0001000151800093002F08010001518052F4220052EAD970837700B6CEF892D3FA58190B275B214C66CF45C1AE32E0A57646C94E8E697F9D3D80A4959EAF4438EAA16BB5A7632C29A9EF067354BDF44981E590911EA8C477307A5E21B8A3C2D1D7CA3AE96A99095EE3ACD4B2948437483B38B780156ACA2241B63A39B8E7B935861B31017A041292DA1D628C5ABFF6B7A8DA0375E7794142BEBACC +fi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ts74ktP6WBkLJ1shTGbPRcGuMuCldkbJTo5pf509gKSVnq9EOOqha7WnYywpqe8Gc1S99EmB5ZCRHqjEdzB6XiG4o8LR18o66WqZCV7jrNSylIQ3SDs4t4AVasoiQbY6ObjnuTWGGzEBegQSktodYoxav/a3qNoDded5QUK+usw= ;{id = 33655} +02666900002F000100015180000C02666A000006200000000013 +fi. 86400 IN NSEC fj. NS DS RRSIG NSEC +016102666900000100010002A3000004C1A60401 +a.fi. 172800 IN A 193.166.4.1 +016102666900001C00010002A300001020010708001000530000000000000053 +a.fi. 172800 IN AAAA 2001:708:10:53::53 +016202666900000100010002A3000004C2926A1A +b.fi. 172800 IN A 194.146.106.26 +016202666900001C00010002A30000102001067C101000060000000000000053 +b.fi. 172800 IN AAAA 2001:67c:1010:6::53 +016302666900000100010002A30000049C9A641A +c.fi. 172800 IN A 156.154.100.26 +016302666900001C00010002A300001020010502AD0900000000000000000026 +c.fi. 172800 IN AAAA 2001:502:ad09::26 +016402666900000100010002A30000044D48E5FD +d.fi. 172800 IN A 77.72.229.253 +016402666900001C00010002A30000102A0103F0000003020000000000000053 +d.fi. 172800 IN AAAA 2a01:3f0:0:302::53 +016502666900000100010002A3000004C200010E +e.fi. 172800 IN A 194.0.1.14 +016502666900001C00010002A30000102001067800040000000000000000000E +e.fi. 172800 IN AAAA 2001:678:4::e +016602666900000100010002A300000457EF7FC6 +f.fi. 172800 IN A 87.239.127.198 +016602666900001C00010002A30000102A0013F000000003000000000000AAAA +f.fi. 172800 IN AAAA 2a00:13f0:0:3::aaaa +016702666900000100010002A30000049C9A651A +g.fi. 172800 IN A 156.154.101.26 +016802666900000100010002A30000049C9A661A +h.fi. 172800 IN A 156.154.102.26 +016902666900000100010002A30000049C9A671A +i.fi. 172800 IN A 156.154.103.26 +016902666900001C00010002A3000010200105022EDA00000000000000000026 +i.fi. 172800 IN AAAA 2001:502:2eda::26 +02666A00000200010002A300000D037269700370736703636F6D00 +fj. 172800 IN NS rip.psg.com. +02666A00000200010002A3000010046D616E750375737002616302666A00 +fj. 172800 IN NS manu.usp.ac.fj. +02666A00000200010002A300001004746572690375737002616302666A00 +fj. 172800 IN NS teri.usp.ac.fj. +02666A00000200010002A30000140561646E7331086265726B656C65790365647500 +fj. 172800 IN NS adns1.berkeley.edu. +02666A00000200010002A30000140561646E7332086265726B656C65790365647500 +fj. 172800 IN NS adns2.berkeley.edu. +02666A00000200010002A300001206617574683030026E73027575036E657400 +fj. 172800 IN NS auth00.ns.uu.net. +02666A00002F000100015180000C02666B000006200000000003 +fj. 86400 IN NSEC fk. NS RRSIG NSEC +02666A00002E0001000151800093002F08010001518052F4220052EAD970837700B3B9259D2D4AA675B39B6A50DE4C09E08D22751B9642647C2C09EBBBF68C4D233DAAE5D4D5F1A6F1802F1E9F4B3EE9E69E3ED01920BED57C4BB88652867A60E1B97A29770ABD878F03AA1791C8948E910EEFAFD74007E0D0AC8B9A1E210DAA51D545505816518ED2DE9620F65CCD6597FE1C513EACD2E5CC8626ECEB61ECF06F +fj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s7klnS1KpnWzm2pQ3kwJ4I0idRuWQmR8LAnru/aMTSM9quXU1fGm8YAvHp9LPunmnj7QGSC+1XxLuIZShnpg4bl6KXcKvYePA6oXkciUjpEO76/XQAfg0KyLmh4hDapR1UVQWBZRjtLeliD2XM1ll/4cUT6s0uXMhibs62Hs8G8= ;{id = 33655} +046D616E750375737002616302666A00000100010002A30000049078080A +manu.usp.ac.fj. 172800 IN A 144.120.8.10 +04746572690375737002616302666A00000100010002A300000490780801 +teri.usp.ac.fj. 172800 IN A 144.120.8.1 +02666B00000200010002A3000013026E7307686F72697A6F6E036E657402666B00 +fk. 172800 IN NS ns.horizon.net.fk. +02666B00000200010002A3000011086575726F2D6E7331026377036E657400 +fk. 172800 IN NS euro-ns1.cw.net. +02666B00000200010002A3000011086575726F2D6E7332026377036E657400 +fk. 172800 IN NS euro-ns2.cw.net. +02666B00000200010002A3000011086575726F2D6E7333026377036E657400 +fk. 172800 IN NS euro-ns3.cw.net. +02666B00002F000100015180001107666C6F72697374000006200000000003 +fk. 86400 IN NSEC florist. NS RRSIG NSEC +02666B00002E0001000151800093002F08010001518052F4220052EAD9708377002E35FEFC94822E81AB03159EFD27319A0CB46085965FEAC8FF91C3A5F87CB93851C044F118683C3BCE59BC214F46B38D29593E635203460F01E895A9E25A9F61D3184C46C2261EAACF8CF34EFF59441DABD719CDB9F01BE569697966B7814EEBB5D989BE3675C00C5A0A2CF9A4795F40B68051811829F48C088237C3BDB0D618 +fk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LjX+/JSCLoGrAxWe/Scxmgy0YIWWX+rI/5HDpfh8uThRwETxGGg8O85ZvCFPRrONKVk+Y1IDRg8B6JWp4lqfYdMYTEbCJh6qz4zzTv9ZRB2r1xnNufAb5WlpeWa3gU7rtdmJvjZ1wAxaCiz5pHlfQLaAUYEYKfSMCII3w72w1hg= ;{id = 33655} +026E7307686F72697A6F6E036E657402666B00000100010002A3000004C3F8C1FA +ns.horizon.net.fk. 172800 IN A 195.248.193.250 +07666C6F7269737400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +florist. 172800 IN NS demand.beta.aridns.net.au. +07666C6F7269737400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +florist. 172800 IN NS demand.alpha.aridns.net.au. +07666C6F7269737400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +florist. 172800 IN NS demand.delta.aridns.net.au. +07666C6F7269737400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +florist. 172800 IN NS demand.gamma.aridns.net.au. +07666C6F7269737400002B0001000151800024FFCA0802E3ABDDF92C74C5A28B71A0A51245854F5D702EBCA2B70E535F51144F77EAB6CA +florist. 86400 IN DS 65482 8 2 E3ABDDF92C74C5A28B71A0A51245854F5D702EBCA2B70E535F51144F77EAB6CA +07666C6F7269737400002E0001000151800093002B08010001518052F4220052EAD9708377006D0A839AB0CF91D1F29DF9D4FC96BC2B695690DEBD31A2134DC333B75108BCE4609F9D2F1789963A03F1CCDF9335EE8ABD9DC6DA150442E3DF7897ACE26E92245625D4C28AC9CA4BE7F5AEF5B3DACE0CFEF4C9FBED62CBE808B898C69BF453B53BE1172175581FFA8E42072EFDD0E3843E2B6E9E3F9B2B4B1E8D241B843673AF +florist. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bQqDmrDPkdHynfnU/Ja8K2lWkN69MaITTcMzt1EIvORgn50vF4mWOgPxzN+TNe6KvZ3G2hUEQuPfeJes4m6SJFYl1MKKycpL5/Wu9bPazgz+9Mn77WLL6Ai4mMab9FO1O+EXIXVYH/qOQgcu/dDjhD4rbp4/mytLHo0kG4Q2c68= ;{id = 33655} +07666C6F7269737400002E0001000151800093002F08010001518052F4220052EAD97083770074C34E95DFE8C2E2A4A830804AD4D8E07BA56C2AAD8D00BCBC83357FC348F77CFBAB5EC61F33FCBE3039B33D69BFCAE5771E2819FE2C7E4F4ADAC89461F72CD73509CD2E33BD81C27D3DBE1155A6D5E57FE76AAEB583DC3E61FE7262F12061B3C63DAE4C32D1FDFE6ECFCEDEE9042B65E4049195E895CE78FFB3101D6C9A96B0 +florist. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dMNOld/owuKkqDCAStTY4HulbCqtjQC8vIM1f8NI93z7q17GHzP8vjA5sz1pv8rldx4oGf4sfk9K2siUYfcs1zUJzS4zvYHCfT2+EVWm1eV/52qutYPcPmH+cmLxIGGzxj2uTDLR/f5uz87e6QQrZeQEkZXolc54/7MQHWyalrA= ;{id = 33655} +07666C6F7269737400002F000100015180000C02666D000006200000000013 +florist. 86400 IN NSEC fm. NS DS RRSIG NSEC +02666D00000200010002A300001304746C643108756C747261646E73036E657400 +fm. 172800 IN NS tld1.ultradns.net. +02666D00000200010002A300001304746C643208756C747261646E73036E657400 +fm. 172800 IN NS tld2.ultradns.net. +02666D00000200010002A300001304746C643308756C747261646E73036F726700 +fm. 172800 IN NS tld3.ultradns.org. +02666D00000200010002A300001304746C643408756C747261646E73036F726700 +fm. 172800 IN NS tld4.ultradns.org. +02666D00000200010002A300001404746C643508756C747261646E7304696E666F00 +fm. 172800 IN NS tld5.ultradns.info. +02666D00000200010002A300001504746C643608756C747261646E7302636F02756B00 +fm. 172800 IN NS tld6.ultradns.co.uk. +02666D00002F000100015180000C02666F000006200000000003 +fm. 86400 IN NSEC fo. NS RRSIG NSEC +02666D00002E0001000151800093002F08010001518052F4220052EAD97083770023142F9CAC28D3B3C7518FD2D5CC733599B5BCE6DF7DC8966547BF480DF12459475D60B2F1711067A86E9390B64EBCAD21445CF8B1481CCCFD4E91113BB68B665D14BDF1D53B75E165CB403E9566C66BB66F4C5630F8DF87CD9BA282C855E55D5FDF8BD3677476CF4B71E2236491F46574A8109445A85D8DC9DB9D7A51940280 +fm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IxQvnKwo07PHUY/S1cxzNZm1vObffciWZUe/SA3xJFlHXWCy8XEQZ6huk5C2TrytIURc+LFIHMz9TpERO7aLZl0UvfHVO3XhZctAPpVmxmu2b0xWMPjfh82booLIVeVdX9+L02d0ds9LceIjZJH0ZXSoEJRFqF2NydudelGUAoA= ;{id = 33655} +02666F00000200010002A300000C03706368036E696302666F00 +fo. 172800 IN NS pch.nic.fo. +02666F00000200010002A300000F0661726E68656D036E696302666F00 +fo. 172800 IN NS arnhem.nic.fo. +02666F00000200010002A3000012096672616E6B66757274036E696302666F00 +fo. 172800 IN NS frankfurt.nic.fo. +02666F00000200010002A30000130A636F70656E686167656E036E696302666F00 +fo. 172800 IN NS copenhagen.nic.fo. +02666F00002B0001000151800024A23708026E7925D8D6F243EF35381231B955528F25087DBF3E61CC5FCBCFE72948D0470B +fo. 86400 IN DS 41527 8 2 6E7925D8D6F243EF35381231B955528F25087DBF3E61CC5FCBCFE72948D0470B +02666F00002E0001000151800093002B08010001518052F4220052EAD9708377006C9EEB93E5602CF2E514F4049070F9FA76C8360139B65F5C29D29EDDF479CAAFC6B350FB9A2C5F794E34BCDB1541D7C8EE83E538F8777231102DA79DB14205A49446D6E2D0BC3F26CF068A9DCB7EC152AC738B7B23FFD319893DC4CC23F8FEDEA928EA1EC7CEA2D582A0B3B6B1A45390B7C1FD69760BAD75333743987DA27977 +fo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . bJ7rk+VgLPLlFPQEkHD5+nbINgE5tl9cKdKe3fR5yq/Gs1D7mixfeU40vNsVQdfI7oPlOPh3cjEQLaedsUIFpJRG1uLQvD8mzwaKnct+wVKsc4t7I//TGYk9xMwj+P7eqSjqHsfOotWCoLO2saRTkLfB/Wl2C611MzdDmH2ieXc= ;{id = 33655} +02666F00002E0001000151800093002F08010001518052F4220052EAD9708377004A46FF7AAEC9D4DA4D206B4ACAAE47370F4955B4C1834C983ED27763B609E01B3385FF52BF8BABFDFDC106E7E73CB2A19007B2DA1A4FF459BF02A2572CD8F3C038277311570A5092484A6363BB781F893DD442C938049B6A5BE2D77531B8F1CD60AA3662C8F1F6D78CC674CEE19454BF16A426B572D0FEE536174F46C5FE026C +fo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Skb/eq7J1NpNIGtKyq5HNw9JVbTBg0yYPtJ3Y7YJ4Bszhf9Sv4ur/f3BBufnPLKhkAey2hpP9Fm/AqJXLNjzwDgncxFXClCSSEpjY7t4H4k91ELJOASbalvi13UxuPHNYKo2Ysjx9teMxnTO4ZRUvxakJrVy0P7lNhdPRsX+Amw= ;{id = 33655} +02666F00002F000100015180000C026672000006200000000013 +fo. 86400 IN NSEC fr. NS DS RRSIG NSEC +0661726E68656D036E696302666F00000100010002A3000004C1B09018 +arnhem.nic.fo. 172800 IN A 193.176.144.24 +0661726E68656D036E696302666F00001C00010002A30000102A000D78000001020193017601440024 +arnhem.nic.fo. 172800 IN AAAA 2a00:d78:0:102:193:176:144:24 +0A636F70656E686167656E036E696302666F00000100010002A3000004C1A3660C +copenhagen.nic.fo. 172800 IN A 193.163.102.12 +0A636F70656E686167656E036E696302666F00001C00010002A30000102A010630000000400000000000000012 +copenhagen.nic.fo. 172800 IN AAAA 2a01:630:0:40::12 +096672616E6B66757274036E696302666F00000100010002A3000004515BA158 +frankfurt.nic.fo. 172800 IN A 81.91.161.88 +03706368036E696302666F00000100010002A3000004CC3DD841 +pch.nic.fo. 172800 IN A 204.61.216.65 +03706368036E696302666F00001C00010002A3000010200105000014606500AD000000000001 +pch.nic.fo. 172800 IN AAAA 2001:500:14:6065:ad::1 +02667200002F000100015180000C026761000006200000000013 +fr. 86400 IN NSEC ga. NS DS RRSIG NSEC +02667200002E0001000151800093002F08010001518052F4220052EAD970837700722C3E3AB5BF5E75C17F0828F8EDC53C73875A26EF94C4F7733EB74436F0BF066B75CA47B4E9B5BE771EDAE9F9372F2123AEC6A8445623E925E7393BA1AAE5C1080E8F18C095B529A45BFDED6A81E9A64EE99225AFF08074653F7C974E9C1409DA2E9361E80F6C5A00704F6CCE8D671EE0CB085C6C319D771E963E27A2DF5B82 +fr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ciw+OrW/XnXBfwgo+O3FPHOHWibvlMT3cz63RDbwvwZrdcpHtOm1vnce2un5Ny8hI67GqERWI+kl5zk7oarlwQgOjxjAlbUppFv97WqB6aZO6ZIlr/CAdGU/fJdOnBQJ2i6TYegPbFoAcE9szo1nHuDLCFxsMZ13HpY+J6LfW4I= ;{id = 33655} +02667200002E0001000151800093002B08010001518052F4220052EAD970837700BE2180AA1B3325413E21924CA64A3413FB8F63D6BC445954D6631E6D9BAF6B97510FCDBCB917339559277425CED9C7110EF57D00B44FF9A2A72D0DD7CDCB8EEF50346F506B3A32801B7B4A2738EF72A104000095CCC7F6E2F7C656CEEE76B1C547ADC3C3B3BFF4A44195A4421B3CD75EDC0B8EA1E90096953AD341FA64651A9B +fr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . viGAqhszJUE+IZJMpko0E/uPY9a8RFlU1mMebZuva5dRD828uRczlVkndCXO2ccRDvV9ALRP+aKnLQ3XzcuO71A0b1BrOjKAG3tKJzjvcqEEAACVzMf24vfGVs7udrHFR63Dw7O/9KRBlaRCGzzXXtwLjqHpAJaVOtNB+mRlGps= ;{id = 33655} +02667200000200010002A300000E016403657874036E696302667200 +fr. 172800 IN NS d.ext.nic.fr. +02667200000200010002A300000A0164036E696302667200 +fr. 172800 IN NS d.nic.fr. +02667200000200010002A300000E016503657874036E696302667200 +fr. 172800 IN NS e.ext.nic.fr. +02667200000200010002A300000E016603657874036E696302667200 +fr. 172800 IN NS f.ext.nic.fr. +02667200000200010002A300000E016703657874036E696302667200 +fr. 172800 IN NS g.ext.nic.fr. +02667200002B00010001518000244E9A0802A4208B55FFB352EDC816D9329283DD8BBDDE44C585395AF9AA7275ABE3CF6795 +fr. 86400 IN DS 20122 8 2 A4208B55FFB352EDC816D9329283DD8BBDDE44C585395AF9AA7275ABE3CF6795 +02667200002B00010001518000248917080223C6CAADC9927EE98061F2B52C9B8DA6B53F3F648F814A4A86A0FAF9843E2C4E +fr. 86400 IN DS 35095 8 2 23C6CAADC9927EE98061F2B52C9B8DA6B53F3F648F814A4A86A0FAF9843E2C4E +03646E7305696E72696102667200000100010002A3000004C133D00D +dns.inria.fr. 172800 IN A 193.51.208.13 +0C63656E7376726E73303030310369726402667200000100010002A30000045BCB2093 +censvrns0001.ird.fr. 172800 IN A 91.203.32.147 +036E73310369726402667200000100010002A3000004C1323503 +ns1.ird.fr. 172800 IN A 193.50.53.3 +0164036E696302667200000100010002A3000004C2000901 +d.nic.fr. 172800 IN A 194.0.9.1 +0164036E696302667200001C00010002A300001020010678000C00000000000000000001 +d.nic.fr. 172800 IN AAAA 2001:678:c::1 +016403657874036E696302667200000100010002A3000004C0050402 +d.ext.nic.fr. 172800 IN A 192.5.4.2 +016403657874036E696302667200001C00010002A300001020010500002E00000000000000000002 +d.ext.nic.fr. 172800 IN AAAA 2001:500:2e::2 +016503657874036E696302667200000100010002A3000004C1B09016 +e.ext.nic.fr. 172800 IN A 193.176.144.22 +016503657874036E696302667200001C00010002A30000102A000D78000001020193017601440022 +e.ext.nic.fr. 172800 IN AAAA 2a00:d78:0:102:193:176:144:22 +016603657874036E696302667200000100010002A3000004C2926A2E +f.ext.nic.fr. 172800 IN A 194.146.106.46 +016603657874036E696302667200001C00010002A30000102001067C101000110000000000000053 +f.ext.nic.fr. 172800 IN AAAA 2001:67c:1010:11::53 +016703657874036E696302667200000100010002A3000004C2002401 +g.ext.nic.fr. 172800 IN A 194.0.36.1 +016703657874036E696302667200001C00010002A300001020010678004C00000000000000000001 +g.ext.nic.fr. 172800 IN AAAA 2001:678:4c::1 +02636907686F7374696E67036E696302667200000100010002A3000004C0860031 +ci.hosting.nic.fr. 172800 IN A 192.134.0.49 +02636907686F7374696E67036E696302667200001C00010002A300001020010660300600010000000000010001 +ci.hosting.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +056E732D6965036E696302667200000100010002A3000004C05D0004 +ns-ie.nic.fr. 172800 IN A 192.93.0.4 +056E732D6D79036E696302667200000100010002A3000004C0860031 +ns-my.nic.fr. 172800 IN A 192.134.0.49 +056E732D6D79036E696302667200001C00010002A300001020010660300600010000000000010001 +ns-my.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +056E732D6E6C036E696302667200000100010002A3000004C05D0004 +ns-nl.nic.fr. 172800 IN A 192.93.0.4 +056E732D6E6C036E696302667200001C00010002A300001020010660300500010000000000010002 +ns-nl.nic.fr. 172800 IN AAAA 2001:660:3005:1::1:2 +056E732D7464036E696302667200000100010002A3000004C0860031 +ns-td.nic.fr. 172800 IN A 192.134.0.49 +056E732D7464036E696302667200001C00010002A300001020010660300600010000000000010001 +ns-td.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +036E7332036E696302667200000100010002A3000004C05D0004 +ns2.nic.fr. 172800 IN A 192.93.0.4 +036E7332036E696302667200001C00010002A300001020010660300500010000000000010002 +ns2.nic.fr. 172800 IN AAAA 2001:660:3005:1::1:2 +036E7333036E696302667200000100010002A3000004C0860031 +ns3.nic.fr. 172800 IN A 192.134.0.49 +036E7333036E696302667200001C00010002A300001020010660300600010000000000010001 +ns3.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 +03626F77047261696E02667200000100010002A3000004C2330331 +bow.rain.fr. 172800 IN A 194.51.3.49 +02676100000200010002A30000090161026E7302676100 +ga. 172800 IN NS a.ns.ga. +02676100000200010002A30000090162026E7302676100 +ga. 172800 IN NS b.ns.ga. +02676100000200010002A30000090163026E7302676100 +ga. 172800 IN NS c.ns.ga. +02676100000200010002A30000090164026E7302676100 +ga. 172800 IN NS d.ns.ga. +02676100002F00010001518000110767616C6C657279000006200000000003 +ga. 86400 IN NSEC gallery. NS RRSIG NSEC +02676100002E0001000151800093002F08010001518052F4220052EAD9708377001FD33615B469185ED7999B32AFE831DFA140C2AA89C84B84E290842ACA0BBA1F58875FC52B04A6D4A17EAD57368F89418A2920CFFED1D779678C4653848183D7FB2989D44F7DF31B62C90EC6A792136E7B4A1F9C590B7C6148481AB664EF4111D2D2E6BF385E79A2B7F38BB933F29CEC779E9BA66111F419D600C711CEC74E8E +ga. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . H9M2FbRpGF7XmZsyr+gx36FAwqqJyEuE4pCEKsoLuh9Yh1/FKwSm1KF+rVc2j4lBiikgz/7R13lnjEZThIGD1/spidRPffMbYskOxqeSE257Sh+cWQt8YUhIGrZk70ER0tLmvzheeaK384u5M/Kc7Heem6ZhEfQZ1gDHEc7HTo4= ;{id = 33655} +0161026E7302676100000100010002A3000004B915A831 +a.ns.ga. 172800 IN A 185.21.168.49 +0161026E7302676100001C00010002A30000102A041B00000C00000000000000000001 +a.ns.ga. 172800 IN AAAA 2a04:1b00:c::1 +0162026E7302676100000100010002A3000004B915A931 +b.ns.ga. 172800 IN A 185.21.169.49 +0162026E7302676100001C00010002A30000102A041B00000D00000000000000000001 +b.ns.ga. 172800 IN AAAA 2a04:1b00:d::1 +0163026E7302676100000100010002A3000004B915AA31 +c.ns.ga. 172800 IN A 185.21.170.49 +0163026E7302676100001C00010002A30000102A041B00000E00000000000000000001 +c.ns.ga. 172800 IN AAAA 2a04:1b00:e::1 +0164026E7302676100000100010002A3000004B915AB31 +d.ns.ga. 172800 IN A 185.21.171.49 +0164026E7302676100001C00010002A30000102A041B00000F00000000000000000001 +d.ns.ga. 172800 IN AAAA 2a04:1b00:f::1 +0767616C6C65727900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +gallery. 172800 IN NS demand.beta.aridns.net.au. +0767616C6C65727900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +gallery. 172800 IN NS demand.alpha.aridns.net.au. +0767616C6C65727900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +gallery. 172800 IN NS demand.delta.aridns.net.au. +0767616C6C65727900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +gallery. 172800 IN NS demand.gamma.aridns.net.au. +0767616C6C65727900002B000100015180002464FC0802ED90BC1757207B806B4FED800EFA19404E990D59BC1758369CA93A4FF5BB6361 +gallery. 86400 IN DS 25852 8 2 ED90BC1757207B806B4FED800EFA19404E990D59BC1758369CA93A4FF5BB6361 +0767616C6C65727900002E0001000151800093002B08010001518052F4220052EAD97083770066D1CA6D2F40CEA1B65812E37D2195F449D3D50B4E0CF2B002F16D50DFEA105C2B939DDAB5ECF357128EBDA72A1EEE3EAE032BEB332F5EE3D820982CF5F23A26D0514CCE665FA5EF9C4CABAB955EBD722A235765739AFDAF5E2426AC711DDFEA355924F241A50BBCE3BBF6B955F25FA7DC5F5A646D805DEEB7AA7B7A7778C046 +gallery. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZtHKbS9AzqG2WBLjfSGV9EnT1QtODPKwAvFtUN/qEFwrk53atezzVxKOvacqHu4+rgMr6zMvXuPYIJgs9fI6JtBRTM5mX6XvnEyrq5VevXIqI1dlc5r9r14kJqxxHd/qNVkk8kGlC7zju/a5VfJfp9xfWmRtgF3ut6p7end4wEY= ;{id = 33655} +0767616C6C65727900002E0001000151800093002F08010001518052F4220052EAD970837700A12C40234BA5D442B076AA4E34A7FD66E38269E64CE7CD154EC7D8CA6F9BE84504BB3D8C7D7E20AA70FA878369C5AE40C3A646D51AD4C44AF48BEFFAE69468F0E136CFCCC95E4EA073BA081FDBAE316520D75B10D0EC219AB0FD9F91EF325B7190D73DDF11A1F1AEEDD18BF0E4989A4CCEA87FCB1D490E090E8B774DEF90D5D7 +gallery. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oSxAI0ul1EKwdqpONKf9ZuOCaeZM580VTsfYym+b6EUEuz2MfX4gqnD6h4Npxa5Aw6ZG1RrUxEr0i+/65pRo8OE2z8zJXk6gc7oIH9uuMWUg11sQ0OwhmrD9n5HvMltxkNc93xGh8a7t0Yvw5JiaTM6of8sdSQ4JDot3Te+Q1dc= ;{id = 33655} +0767616C6C65727900002F000100015180000C026762000006200000000013 +gallery. 86400 IN NSEC gb. NS DS RRSIG NSEC +02676200000200010002A300000B026E73027575036E657400 +gb. 172800 IN NS ns.uu.net. +02676200000200010002A300000C036E7330026A61036E657400 +gb. 172800 IN NS ns0.ja.net. +02676200000200010002A300000C036E7334026A61036E657400 +gb. 172800 IN NS ns4.ja.net. +02676200002F000100015180000C026764000006200000000003 +gb. 86400 IN NSEC gd. NS RRSIG NSEC +02676200002E0001000151800093002F08010001518052F4220052EAD970837700037A3F31AA1E9ED751003AA6BBE99255F0D00A515808B3BD609AB381BA877CC243F32D914397DDCB0F346FE94E80FB86A1516D271401B92BAF513BC973D2165805048F3B6DC5F7FECF6839705F70557DB3D1C3B1CDF45EC76FF616345895F1FBAAB338B920E676CF9459EE7F4AAFC90864F1000783489B5EB84DAA13FB80C089 +gb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . A3o/MaoentdRADqmu+mSVfDQClFYCLO9YJqzgbqHfMJD8y2RQ5fdyw80b+lOgPuGoVFtJxQBuSuvUTvJc9IWWAUEjzttxff+z2g5cF9wVX2z0cOxzfRex2/2FjRYlfH7qrM4uSDmds+UWe5/Sq/JCGTxAAeDSJteuE2qE/uAwIk= ;{id = 33655} +02676400000200010002A300001B026764056363746C640761757468646E730472697065036E657400 +gd. 172800 IN NS gd.cctld.authdns.ripe.net. +02676400000200010002A30000170567642D6E7307616E796361737403706368036E657400 +gd. 172800 IN NS gd-ns.anycast.pch.net. +02676400000200010002A30000160567642D6E730A6B737265676973747279036E657400 +gd. 172800 IN NS gd-ns.ksregistry.net. +02676400002F000100015180000C026765000006200000000003 +gd. 86400 IN NSEC ge. NS RRSIG NSEC +02676400002E0001000151800093002F08010001518052F4220052EAD970837700893B270688A1C307A10D02F4D95E5CC5CBA824908A6C06361D326AD551CB46F1C7CE57E821EEDD9CF2A46DF9D67EB7A15F01C6B0B4BDEF095ECCED689321B973E6348C875D1134E2FFA60C358934E4BA56EA2B10B4B5E8DCFCFFD3FE1DAA645639F5B74210557B2C0B9A1161036AEBCF5CA0DA44FCC4986B26BEB75E921F8B79 +gd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iTsnBoihwwehDQL02V5cxcuoJJCKbAY2HTJq1VHLRvHHzlfoIe7dnPKkbfnWfrehXwHGsLS97wlezO1okyG5c+Y0jIddETTi/6YMNYk05LpW6isQtLXo3Pz/0/4dqmRWOfW3QhBVeywLmhFhA2rrz1yg2kT8xJhrJr63XpIfi3k= ;{id = 33655} +02676500000200010002A30000120267650A686F73746D617374657202756100 +ge. 172800 IN NS ge.hostmaster.ua. +02676500000200010002A300000B026E73027575036E657400 +ge. 172800 IN NS ns.uu.net. +02676500000200010002A300000B026E73036E696302676500 +ge. 172800 IN NS ns.nic.ge. +02676500000200010002A300000C036E7332036E696302667200 +ge. 172800 IN NS ns2.nic.fr. +02676500002F000100015180000C026766000006200000000003 +ge. 86400 IN NSEC gf. NS RRSIG NSEC +02676500002E0001000151800093002F08010001518052F4220052EAD97083770010B56B8C385E3B05AE5B3F05FF23FE85113EDE6587FA7A544121F5125CA794A2545A70D2EB21AC7A0C9253A7C839198BFB29B8C9353410D773E858B62830093C9BF500F6DD4455DF3D0FE0F57B5991E577008313C69037F79872C64C9FE90EAD315667B9D5805F1EC64FD9CA8B6392D087A80A562FDD2E3FBC840A19F64BFE83 +ge. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ELVrjDheOwWuWz8F/yP+hRE+3mWH+npUQSH1ElynlKJUWnDS6yGsegySU6fIORmL+ym4yTU0ENdz6Fi2KDAJPJv1APbdRFXfPQ/g9XtZkeV3AIMTxpA395hyxkyf6Q6tMVZnudWAXx7GT9nKi2OS0IeoClYv3S4/vIQKGfZL/oM= ;{id = 33655} +026E73036E696302676500000100010002A3000004D448820B +ns.nic.ge. 172800 IN A 212.72.130.11 +02676600000200010002A3000016066E73312D6770096D6564696173657276036E657400 +gf. 172800 IN NS ns1-gp.mediaserv.net. +02676600000200010002A3000016066E73312D6D71096D6564696173657276036E657400 +gf. 172800 IN NS ns1-mq.mediaserv.net. +02676600002F000100015180000C026767000006200000000003 +gf. 86400 IN NSEC gg. NS RRSIG NSEC +02676600002E0001000151800093002F08010001518052F4220052EAD97083770094EBAFE281DAC0A42E8BC172CCA99C3B97DE417D5EC69F46CA72A721C17E23E521FBD4549990DD4CCF9E8033E1201D698663E66FCCC393B938BE29A37835522F88931F6D0343AC02484E8218AB7119218368E20EBB04A1A94608EA18A23E072D2B39BA1ED05AE52B6894C764A341989CA42E846145FA005694D3211A2BB1BCD8 +gf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . lOuv4oHawKQui8FyzKmcO5feQX1exp9GynKnIcF+I+Uh+9RUmZDdTM+egDPhIB1phmPmb8zDk7k4vimjeDVSL4iTH20DQ6wCSE6CGKtxGSGDaOIOuwShqUYI6hiiPgctKzm6HtBa5StolMdko0GYnKQuhGFF+gBWlNMhGiuxvNg= ;{id = 33655} +02676700000200010002A300001201610A63692D73657276657273036E657400 +gg. 172800 IN NS a.ci-servers.net. +02676700000200010002A300001201620A63692D73657276657273036F726700 +gg. 172800 IN NS b.ci-servers.org. +02676700000200010002A300001201630A63692D73657276657273036F726700 +gg. 172800 IN NS c.ci-servers.org. +02676700000200010002A300001101640A63692D73657276657273026A6500 +gg. 172800 IN NS d.ci-servers.je. +02676700000200010002A300001101650A63692D7365727665727302676700 +gg. 172800 IN NS e.ci-servers.gg. +02676700000200010002A300000C036E7330026A61036E657400 +gg. 172800 IN NS ns0.ja.net. +02676700000200010002A3000011046E73393903646E73036E6574026E7A00 +gg. 172800 IN NS ns99.dns.net.nz. +02676700002F000100015180000C026768000006200000000003 +gg. 86400 IN NSEC gh. NS RRSIG NSEC +02676700002E0001000151800093002F08010001518052F4220052EAD9708377005845FA82B87BB4E06EBB70E2E8AD1F1DFDA2113B346D55B1ADA94A9B0E5A6223ECA4ED8F11CCD9873C8B6D5866E24BFBE09189DDA93DAA1A4E35FC8DCF937037E7DBF607832F44EA00A44A0AB8C1B62F4509FAC217FB0752D7CBC4D5C3763B61442B20706AF55377D3EF92227FFBC936C9345B7C631A1BA8266DB1D6ABEE435B +gg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WEX6grh7tOBuu3Di6K0fHf2iETs0bVWxralKmw5aYiPspO2PEczZhzyLbVhm4kv74JGJ3ak9qhpONfyNz5NwN+fb9geDL0TqAKRKCrjBti9FCfrCF/sHUtfLxNXDdjthRCsgcGr1U3fT75Iif/vJNsk0W3xjGhuoJm2x1qvuQ1s= ;{id = 33655} +01650A63692D7365727665727302676700000100010002A3000004CC3DD84A +e.ci-servers.gg. 172800 IN A 204.61.216.74 +01650A63692D7365727665727302676700001C00010002A3000010200105000014607400AD000000000001 +e.ci-servers.gg. 172800 IN AAAA 2001:500:14:6074:ad::1 +02676800000200010002A300000C036E733103646E7302617100 +gh. 172800 IN NS ns1.dns.aq. +02676800000200010002A300000D037269700370736703636F6D00 +gh. 172800 IN NS rip.psg.com. +02676800000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +gh. 172800 IN NS fork.sth.dnsnode.net. +02676800000200010002A300001005686970706F027275026163027A6100 +gh. 172800 IN NS hippo.ru.ac.za. +02676800000200010002A300000F0661757374696E02676803636F6D00 +gh. 172800 IN NS austin.gh.com. +02676800000200010002A300000F066D616E74736502676803636F6D00 +gh. 172800 IN NS mantse.gh.com. +02676800002F000100015180000C026769000006200000000003 +gh. 86400 IN NSEC gi. NS RRSIG NSEC +02676800002E0001000151800093002F08010001518052F4220052EAD970837700BB42CE91433DBAE2DEFD64215B761902ED283694AB2240905F737080372C9685C2537C9C85A8AEB525E190DC86DD13D8BFB0BE3A51A4FDCFF318CB06AB093A6D4C6940953D71E10ECF6D47FA6554D61846FB36519EA5816F2164C1A6F8DBE1AE7F4541DCA90025589B4DC1244A294A81F61D71E84BF0812041D8B936227EB97E +gh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u0LOkUM9uuLe/WQhW3YZAu0oNpSrIkCQX3NwgDcsloXCU3ychaiutSXhkNyG3RPYv7C+OlGk/c/zGMsGqwk6bUxpQJU9ceEOz21H+mVU1hhG+zZRnqWBbyFkwab42+Guf0VB3KkAJVibTcEkSilKgfYdcehL8IEgQdi5NiJ+uX4= ;{id = 33655} +02676900000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +gi. 172800 IN NS a0.cctld.afilias-nst.info. +02676900000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +gi. 172800 IN NS a2.cctld.afilias-nst.info. +02676900000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +gi. 172800 IN NS b0.cctld.afilias-nst.org. +02676900000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +gi. 172800 IN NS b2.cctld.afilias-nst.org. +02676900000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +gi. 172800 IN NS c0.cctld.afilias-nst.info. +02676900000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +gi. 172800 IN NS d0.cctld.afilias-nst.org. +02676900002B00010001518000189FE70701A6110BBAB0C51F4712CF1DF57F960CC73C7645F6 +gi. 86400 IN DS 40935 7 1 A6110BBAB0C51F4712CF1DF57F960CC73C7645F6 +02676900002B00010001518000249FE707029F19CCCE0100976D6A4ED5D0AFA3D66E88C6974722D62EE6251F9D3DFA74A23F +gi. 86400 IN DS 40935 7 2 9F19CCCE0100976D6A4ED5D0AFA3D66E88C6974722D62EE6251F9D3DFA74A23F +02676900002E0001000151800093002B08010001518052F4220052EAD97083770050B768347E3D075C1067F8C50C91F4DCCBF5C21A28BCAAB6533507E8654FD5ED419662C64003C47AA83EAC7DD459A0FA3B7ED6DCC7A9F92287DCAEFDF4B01D3688FB08B86270D1E2D04FF8A2176E5320330FF4DF9E3A248E6DB66B2240F2920B1F57FFA6607134DAF1CD402EBA53A2C0C2AB0C5C3A5400E3CF23A8D9538AC458 +gi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ULdoNH49B1wQZ/jFDJH03Mv1whoovKq2UzUH6GVP1e1BlmLGQAPEeqg+rH3UWaD6O37W3Mep+SKH3K799LAdNoj7CLhicNHi0E/4ohduUyAzD/Tfnjokjm22ayJA8pILH1f/pmBxNNrxzUAuulOiwMKrDFw6VADjzyOo2VOKxFg= ;{id = 33655} +02676900002E0001000151800093002F08010001518052F4220052EAD970837700548AFB0F0C67449E0394AF31377BC389A64F8862EC530FD8CC79907430713E8BEEEB80DAD1CED92234F40BDE658E4FAD8BA4FB7EE1CC17336C6959309E6488518E8F43EB7665BB70DFB501F8F938CF1A3C13F4013207875F78AD4A6130ABC4304D9144E2D9AD93CA506D5E11260E7F6387F0C3F8F55CE2B909689941615DFF49 +gi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VIr7DwxnRJ4DlK8xN3vDiaZPiGLsUw/YzHmQdDBxPovu64Da0c7ZIjT0C95ljk+ti6T7fuHMFzNsaVkwnmSIUY6PQ+t2Zbtw37UB+Pk4zxo8E/QBMgeHX3itSmEwq8QwTZFE4tmtk8pQbV4RJg5/Y4fww/j1XOK5CWiZQWFd/0k= ;{id = 33655} +02676900002F000100015180000E0467696674000006200000000013 +gi. 86400 IN NSEC gift. NS DS RRSIG NSEC +046769667400000200010002A30000160161026E730B756E697265676973747279036E657400 +gift. 172800 IN NS a.ns.uniregistry.net. +046769667400000200010002A300001103746C64076973632D736E7303636F6D00 +gift. 172800 IN NS tld.isc-sns.com. +046769667400000200010002A300001103746C64076973632D736E73036E657400 +gift. 172800 IN NS tld.isc-sns.net. +046769667400000200010002A300001203746C64076973632D736E7304696E666F00 +gift. 172800 IN NS tld.isc-sns.info. +046769667400002B0001000151800018A4D2050161379C5FD2BA15B4401F9E74D1CCDF613FA469E4 +gift. 86400 IN DS 42194 5 1 61379C5FD2BA15B4401F9E74D1CCDF613FA469E4 +046769667400002B0001000151800024A4D20502365F45C35B61F891A7111CF3BD587EF8A0088D6EB7286E791F1016B56EA01850 +gift. 86400 IN DS 42194 5 2 365F45C35B61F891A7111CF3BD587EF8A0088D6EB7286E791F1016B56EA01850 +046769667400002E0001000151800093002B08010001518052F4220052EAD97083770083B6B9F790ECC6D436EA94847B1CFD0928AB7FAC38578629BAD13EC6AB83E0A9605E0E12127427084B6F2775624DD13E66062C4B000DFFEEC9D368F3D10F44D3A2E0372222389939EE04A2DE8F9936121F9561DD496EE2C82FAC749A5B0AC10E5D1E0B1FAA81EA412970D7433CF64D9813E172403836F8D3606141ED8D4DD1F5 +gift. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . g7a595DsxtQ26pSEexz9CSirf6w4V4YputE+xquD4KlgXg4SEnQnCEtvJ3ViTdE+ZgYsSwAN/+7J02jz0Q9E06LgNyIiOJk57gSi3o+ZNhIflWHdSW7iyC+sdJpbCsEOXR4LH6qB6kEpcNdDPPZNmBPhckA4NvjTYGFB7Y1N0fU= ;{id = 33655} +046769667400002E0001000151800093002F08010001518052F4220052EAD97083770071E4FEACD140EE2D2E04B92413DD19B4065C52945757DE6CFA463F22FC296A9DACF1657E0F4727B2E697F88313FD44C56F972893C18FFC6CA7CEA87A1461788B84813E8430CE37B76F9058C96EB5EB14A0681832FCAC8990E51FA00D9468E5DA6BB1459CB8C5F472C2339A7415FBF6DB181E960A1AD606947D53017A400C2858 +gift. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ceT+rNFA7i0uBLkkE90ZtAZcUpRXV95s+kY/Ivwpap2s8WV+D0cnsuaX+IMT/UTFb5cok8GP/Gynzqh6FGF4i4SBPoQwzje3b5BYyW616xSgaBgy/KyJkOUfoA2UaOXaa7FFnLjF9HLCM5p0Ffv22xgelgoa1gaUfVMBekAMKFg= ;{id = 33655} +046769667400002F000100015180000C02676C000006200000000013 +gift. 86400 IN NSEC gl. NS DS RRSIG NSEC +02676C00000200010002A300000F0161046E75756B036E696302676C00 +gl. 172800 IN NS a.nuuk.nic.gl. +02676C00000200010002A300000A0162036E696302676C00 +gl. 172800 IN NS b.nic.gl. +02676C00000200010002A300000A0164036E696302676C00 +gl. 172800 IN NS d.nic.gl. +02676C00000200010002A300001003676C310664796E746C64036E657400 +gl. 172800 IN NS gl1.dyntld.net. +02676C00000200010002A300001003676C320664796E746C64036E657400 +gl. 172800 IN NS gl2.dyntld.net. +02676C00000200010002A300001003676C330664796E746C64036E657400 +gl. 172800 IN NS gl3.dyntld.net. +02676C00000200010002A300001003676C340664796E746C64036E657400 +gl. 172800 IN NS gl4.dyntld.net. +02676C00002B00010001518000242D2808023D44DF84C78A82E0E9824440F3E82B402551341DBFF3BCE72CD786435D15F1AA +gl. 86400 IN DS 11560 8 2 3D44DF84C78A82E0E9824440F3E82B402551341DBFF3BCE72CD786435D15F1AA +02676C00002E0001000151800093002B08010001518052F4220052EAD97083770088F10A0191DECC75ADE901143EBA3D6045BD58E92DA45364404FA88C2A6B45EBA0E250BF12DB6D5DAB38699EEB701A8C84110A2073B5F2E1999C5F15765284C278A1ECEA1BC48133312115A6331E40506755BBCE441086E360887440A3F0E66CCA52ED481B85826DD00B449B575C20E7D3080DC2FBE5002DA2717E5B13553EB0 +gl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iPEKAZHezHWt6QEUPro9YEW9WOktpFNkQE+ojCprReug4lC/EtttXas4aZ7rcBqMhBEKIHO18uGZnF8VdlKEwnih7OobxIEzMSEVpjMeQFBnVbvORBCG42CIdECj8OZsylLtSBuFgm3QC0SbV1wg59MIDcL75QAtonF+WxNVPrA= ;{id = 33655} +02676C00002E0001000151800093002F08010001518052F4220052EAD9708377008C9477690A88377C0A22CA51C87DBB7A3AF38DF988E1E9357FFFA82D87C3A57859DD00E9E99E6702B33350917EF732BDF6D8AB204ADA6C5FC9A1D003AC024192862D3315A1E00784879F27B2103F9D30A109F5015019CB5EF88935E796DD8A65C89E2515312A14C45BEF8DC18C1BE2BA5A64FE5F87DA912780B33A55C3E1C9CC +gl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jJR3aQqIN3wKIspRyH27ejrzjfmI4ek1f/+oLYfDpXhZ3QDp6Z5nArMzUJF+9zK99tirIErabF/JodADrAJBkoYtMxWh4AeEh58nshA/nTChCfUBUBnLXviJNeeW3YplyJ4lFTEqFMRb743BjBviulpk/l+H2pEngLM6VcPhycw= ;{id = 33655} +02676C00002F000100015180000F05676C617373000006200000000013 +gl. 86400 IN NSEC glass. NS DS RRSIG NSEC +0162036E696302676C00000100010002A30000045BDDC4E4 +b.nic.gl. 172800 IN A 91.221.196.228 +0162036E696302676C00001C00010002A30000102001067C03C001120000000000000010 +b.nic.gl. 172800 IN AAAA 2001:67c:3c0:112::10 +0164036E696302676C00000100010002A3000004CC3DD831 +d.nic.gl. 172800 IN A 204.61.216.49 +0164036E696302676C00001C00010002A3000010200105000014604900AD000000000001 +d.nic.gl. 172800 IN AAAA 2001:500:14:6049:ad::1 +0161046E75756B036E696302676C00000100010002A3000004C2B1E00D +a.nuuk.nic.gl. 172800 IN A 194.177.224.13 +05676C61737300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +glass. 172800 IN NS demand.beta.aridns.net.au. +05676C61737300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +glass. 172800 IN NS demand.alpha.aridns.net.au. +05676C61737300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +glass. 172800 IN NS demand.delta.aridns.net.au. +05676C61737300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +glass. 172800 IN NS demand.gamma.aridns.net.au. +05676C61737300002B000100015180002435F80802B8CDEB1147512B2413992A08B6B28DDD6127E18F7E2969F7897D2F348A2C1AF7 +glass. 86400 IN DS 13816 8 2 B8CDEB1147512B2413992A08B6B28DDD6127E18F7E2969F7897D2F348A2C1AF7 +05676C61737300002E0001000151800093002B08010001518052F4220052EAD9708377000628744712A063B8221476FFE473E0557658BB2140E96C0CDB4A815EFBDA6868CD2769AF9120AA7B2C7C085A708C0441E675ACD789860576D8B9BEF497CADFA4D854EBA255F35D87767AD32904E25C00A857C2A764F785EBCD55104156AC40B6ED9A629504800A1D8F02DB1D1379D4F2F2E48C2A2E6DA45983D6B2447FF9485F +glass. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Bih0RxKgY7giFHb/5HPgVXZYuyFA6WwM20qBXvvaaGjNJ2mvkSCqeyx8CFpwjARB5nWs14mGBXbYub70l8rfpNhU66JV812HdnrTKQTiXACoV8KnZPeF681VEEFWrEC27ZpilQSACh2PAtsdE3nU8vLkjCoubaRZg9ayRH/5SF8= ;{id = 33655} +05676C61737300002E0001000151800093002F08010001518052F4220052EAD970837700142B1FFFA086751381E2D0F009F4D3CDB6146BF15C4D3E4CD12E297098C54E09F92FA4D437576CD6FAF2F92BD8CA7F0D12286ED8668504B849877F722339A425FBD25CFB0D098D0FE65E0C046F64D6CA1FC90AA9CC51FC4C071014942A450DDF6D9EAA3FE20321DFAE31AB522CF5485BAC0666FDE73CF641BE9C4F3776E06324 +glass. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FCsf/6CGdROB4tDwCfTTzbYUa/FcTT5M0S4pcJjFTgn5L6TUN1ds1vry+SvYyn8NEihu2GaFBLhJh39yIzmkJfvSXPsNCY0P5l4MBG9k1sofyQqpzFH8TAcQFJQqRQ3fbZ6qP+IDId+uMatSLPVIW6wGZv3nPPZBvpxPN3bgYyQ= ;{id = 33655} +05676C61737300002F000100015180000C02676D000006200000000013 +glass. 86400 IN NSEC gm. NS DS RRSIG NSEC +02676D00000200010002A300000C036E7331036E696302676D00 +gm. 172800 IN NS ns1.nic.gm. +02676D00000200010002A300000C036E7332036E696302676D00 +gm. 172800 IN NS ns2.nic.gm. +02676D00000200010002A3000013056E732D676D07616672696E6963036E657400 +gm. 172800 IN NS ns-gm.afrinic.net. +02676D00002F000100015180000C02676E000006200000000003 +gm. 86400 IN NSEC gn. NS RRSIG NSEC +02676D00002E0001000151800093002F08010001518052F4220052EAD9708377005E44A54E76F6CE12878B80F30F59E183AC417B4571985D51AEB0BF11F41518EA95F94333807EF208516DB6E66DAE8D97AFBC63DA0AE2C722777B44418F8064204E10727972EFBAF63B18A298BAE06E281C455F9E7E7619155A606FFADB0C8848AF6BACF1673BCF3618A3F955CD6927CA96873EE5AEF49BEEAA95995D8AB3C311 +gm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XkSlTnb2zhKHi4DzD1nhg6xBe0VxmF1RrrC/EfQVGOqV+UMzgH7yCFFttuZtro2Xr7xj2grixyJ3e0RBj4BkIE4Qcnly77r2OxiimLrgbigcRV+efnYZFVpgb/rbDIhIr2us8Wc7zzYYo/lVzWknypaHPuWu9JvuqpWZXYqzwxE= ;{id = 33655} +036E7331036E696302676D00000100010002A3000004C23FFAD9 +ns1.nic.gm. 172800 IN A 194.63.250.217 +036E7332036E696302676D00000100010002A3000004C5FFC266 +ns2.nic.gm. 172800 IN A 197.255.194.102 +02676E00000200010002A300000C036E733103646E7302617100 +gn. 172800 IN NS ns1.dns.aq. +02676E00000200010002A300000D037269700370736703636F6D00 +gn. 172800 IN NS rip.psg.com. +02676E00000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +gn. 172800 IN NS fork.sth.dnsnode.net. +02676E00000200010002A300001005686970706F027275026163027A6100 +gn. 172800 IN NS hippo.ru.ac.za. +02676E00002B00010001518000247A72080265E9984147AAF1940DF87B8DBB38190736999249DE0F39B88419147FA4AFD01A +gn. 86400 IN DS 31346 8 2 65E9984147AAF1940DF87B8DBB38190736999249DE0F39B88419147FA4AFD01A +02676E00002E0001000151800093002B08010001518052F4220052EAD9708377003A15F2CB67220AEF0D8F21493C12567FC28EE3F1AB052DF9C14AF6568412F01B93089301413CA9D022663024D59F51F71A07BA5A609262A985099903F435768923120C71DA4B79786EAE0574FD3738EF05B4B8A3EC1C5E73D20D7BAEEB282D941A1D24AD7F9482CA7BBF614CF3D7B3D835018EF86EF5B17A583A2D8E45D8F876 +gn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OhXyy2ciCu8NjyFJPBJWf8KO4/GrBS35wUr2VoQS8BuTCJMBQTyp0CJmMCTVn1H3Gge6WmCSYqmFCZkD9DV2iSMSDHHaS3l4bq4FdP03OO8FtLij7Bxec9INe67rKC2UGh0krX+Ugsp7v2FM89ez2DUBjvhu9bF6WDotjkXY+HY= ;{id = 33655} +02676E00002E0001000151800093002F08010001518052F4220052EAD970837700595A5AEBE29350ED89BA09016CE233FF53CC5E9550A978EDF92A8AB4143ED01C4D166B66BDE0FDEC9ABAD6E9F43C2C5D7863FFAF4CF39AE6772B46247ADEAF62510FA90BF6AF5DEE22FBDBFF57CF4844B391A4C3A2289FEE668087A6F00AF9E7ED7F05AB2D330899E0F41DD923BC26800873518CD8031D9763E5020161A5A486 +gn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WVpa6+KTUO2JugkBbOIz/1PMXpVQqXjt+SqKtBQ+0BxNFmtmveD97Jq61un0PCxdeGP/r0zzmuZ3K0Yket6vYlEPqQv2r13uIvvb/1fPSESzkaTDoiif7maAh6bwCvnn7X8Fqy0zCJng9B3ZI7wmgAhzUYzYAx2XY+UCAWGlpIY= ;{id = 33655} +02676E00002F000100015180000D03676F76000006200000000013 +gn. 86400 IN NSEC gov. NS DS RRSIG NSEC +03676F7600000200010002A300001301610B676F762D73657276657273036E657400 +gov. 172800 IN NS a.gov-servers.net. +03676F7600000200010002A300001301620B676F762D73657276657273036E657400 +gov. 172800 IN NS b.gov-servers.net. +03676F7600002B00010001518000181E1208016F109B46A80CEA9613DC86D5A3E065520505AAFE +gov. 86400 IN DS 7698 8 1 6F109B46A80CEA9613DC86D5A3E065520505AAFE +03676F7600002B00010001518000241E1208026BC949E638442EAD0BDAF0935763C8D003760384FF15EBBD5CE86BB5559561F0 +gov. 86400 IN DS 7698 8 2 6BC949E638442EAD0BDAF0935763C8D003760384FF15EBBD5CE86BB5559561F0 +03676F7600002E0001000151800093002B08010001518052F4220052EAD9708377002529C45AD94789E5475C3F9D19F78B1D65A17FEE81566FB5C428F0ED19B35B18737DD3C0E731D6303BD453490F470C6041B74BB6122527B6E3EEB469A84B4FB81BD74555983A3C613C6065BD628394AD16CC91C50677EE5438C1F1399D67B1762A66D34D7D2E8E41DD5094B0ED470AAE91916EEE939C2E7D991ED8C5688BD182 +gov. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JSnEWtlHieVHXD+dGfeLHWWhf+6BVm+1xCjw7RmzWxhzfdPA5zHWMDvUU0kPRwxgQbdLthIlJ7bj7rRpqEtPuBvXRVWYOjxhPGBlvWKDlK0WzJHFBnfuVDjB8TmdZ7F2KmbTTX0ujkHdUJSw7UcKrpGRbu6TnC59mR7YxWiL0YI= ;{id = 33655} +03676F7600002E0001000151800093002F08010001518052F4220052EAD9708377001F0CA9852B50159F9594AD77E90FC6068B024564AF5B5240AD089CD62D1BB0A377CA12473B99229664F8224559819EF567367699A6478425DE5B2DEB06E6111A6975E8262B15B5C5497ACCBF1254C6D137AC2E71BF0F06B9D696A0B7074E097375917A9B80A7786446C8EDCF81DFC5EEFB5E137FCDA97D5A5E1BF25AB09980E4 +gov. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HwyphStQFZ+VlK136Q/GBosCRWSvW1JArQic1i0bsKN3yhJHO5kilmT4IkVZgZ71ZzZ2maZHhCXeWy3rBuYRGml16CYrFbXFSXrMvxJUxtE3rC5xvw8GudaWoLcHTglzdZF6m4CneGRGyO3Pgd/F7vteE3/NqX1aXhvyWrCZgOQ= ;{id = 33655} +03676F7600002F000100015180000C026770000006200000000013 +gov. 86400 IN NSEC gp. NS DS RRSIG NSEC +02677000000200010002A300001B026770056363746C640761757468646E730472697065036E657400 +gp. 172800 IN NS gp.cctld.authdns.ripe.net. +02677000000200010002A300000C036E7331036E696302677000 +gp. 172800 IN NS ns1.nic.gp. +02677000000200010002A3000017036E73310D6F72616E67656361726169626503636F6D00 +gp. 172800 IN NS ns1.orangecaraibe.com. +02677000002F000100015180000C026771000006200000000003 +gp. 86400 IN NSEC gq. NS RRSIG NSEC +02677000002E0001000151800093002F08010001518052F4220052EAD9708377007951EAD2EA6A71F03301101074F5F565C727B3C1EC3A5A38364079C875B287DE7716528953D61E3122A24881CA86914C956446BB6C02378BE3C43FD37D939E00C91CD5FEBC3043F924507B095F4AE8B311AC35DE00A2155801C3D75B55046FC09A60CED312493EA38C416C7A812B8E9C9F9E955A219A9410958F2F26A5BB9746 +gp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eVHq0upqcfAzARAQdPX1Zccns8HsOlo4NkB5yHWyh953FlKJU9YeMSKiSIHKhpFMlWRGu2wCN4vjxD/TfZOeAMkc1f68MEP5JFB7CV9K6LMRrDXeAKIVWAHD11tVBG/AmmDO0xJJPqOMQWx6gSuOnJ+elVohmpQQlY8vJqW7l0Y= ;{id = 33655} +036E7331036E696302677000000100010002A3000004C1DA7202 +ns1.nic.gp. 172800 IN A 193.218.114.2 +02677100000200010002A3000025016102677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400 +gq. 172800 IN NS a.gq.globalanycastcloud.freenom.net. +02677100000200010002A3000025016202677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400 +gq. 172800 IN NS b.gq.globalanycastcloud.freenom.net. +02677100000200010002A3000025016302677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400 +gq. 172800 IN NS c.gq.globalanycastcloud.freenom.net. +02677100000200010002A3000025016402677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400 +gq. 172800 IN NS d.gq.globalanycastcloud.freenom.net. +02677100000200010002A300000C026E73047563616402736E00 +gq. 172800 IN NS ns.ucad.sn. +02677100000200010002A300000F03626F7706696E746E657402677100 +gq. 172800 IN NS bow.intnet.gq. +02677100000200010002A300000F03646E7306696E746E657402677100 +gq. 172800 IN NS dns.intnet.gq. +02677100000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +gq. 172800 IN NS phloem.uoregon.edu. +02677100002F000100015180000C026772000006200000000003 +gq. 86400 IN NSEC gr. NS RRSIG NSEC +02677100002E0001000151800093002F08010001518052F4220052EAD970837700AE719DDBD1994F111F221A0877A6E1B922368A2D610FB866A8DBE6B14243A9794169E2BE17609CA65A00B110BFD19B3C1F162DA43B775B4378D88203F1EA8185DFF27A0D0877EAA09A21C24FBE1E8D98EF50E7E2613D1B10223F8387FF7BAB499658ACD38B66F3E362170632BF6C7843D861E1CEA1C08BA2BF20A4FF03B7515A +gq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rnGd29GZTxEfIhoId6bhuSI2ii1hD7hmqNvmsUJDqXlBaeK+F2CcploAsRC/0Zs8HxYtpDt3W0N42IID8eqBhd/yeg0Id+qgmiHCT74ejZjvUOfiYT0bECI/g4f/e6tJllis04tm8+NiFwYyv2x4Q9hh4c6hwIuivyCk/wO3UVo= ;{id = 33655} +03626F7706696E746E657402677100000100010002A3000004C1FB994E +bow.intnet.gq. 172800 IN A 193.251.153.78 +03646E7306696E746E657402677100000100010002A3000004C1FB9943 +dns.intnet.gq. 172800 IN A 193.251.153.67 +02677200000200010002A30000130467722D6D0369637305666F72746802677200 +gr. 172800 IN NS gr-m.ics.forth.gr. +02677200000200010002A30000140565737469610369637305666F72746802677200 +gr. 172800 IN NS estia.ics.forth.gr. +02677200000200010002A30000140567722D61740369637305666F72746802677200 +gr. 172800 IN NS gr-at.ics.forth.gr. +02677200000200010002A30000140567722D62720369637305666F72746802677200 +gr. 172800 IN NS gr-br.ics.forth.gr. +02677200000200010002A30000140567722D69780369637305666F72746802677200 +gr. 172800 IN NS gr-ix.ics.forth.gr. +02677200000200010002A30000140567722D75730369637305666F72746802677200 +gr. 172800 IN NS gr-us.ics.forth.gr. +02677200000200010002A3000014056772646E730369637305666F72746802677200 +gr. 172800 IN NS grdns.ics.forth.gr. +02677200000200010002A3000013086772646E732D64650564656E696302646500 +gr. 172800 IN NS grdns-de.denic.de. +02677200002B0001000151800024E0AF070289AD46EAD256DA5010F004AEAE31E41FBA15FD91F5F0F85B2FD820C27EEB5CF3 +gr. 86400 IN DS 57519 7 2 89AD46EAD256DA5010F004AEAE31E41FBA15FD91F5F0F85B2FD820C27EEB5CF3 +02677200002E0001000151800093002B08010001518052F4220052EAD970837700729D2EE1594CA9D1305D7DE5A299ECB8C8441686BE6B9536EE6D39810FEC64A9AB202832BB85D241E9D7595A98383338A11C68F839870FEB782B6560AE804AE0F92B090862F8F57BBDFAEAF077CC30096C384C87E6D84CA64CEFDAECA0E13AC2A23F67C6955BF34750FCA5C7AD97FE5286868E52759C521C698981BD667FB877 +gr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cp0u4VlMqdEwXX3lopnsuMhEFoa+a5U27m05gQ/sZKmrICgyu4XSQenXWVqYODM4oRxo+DmHD+t4K2VgroBK4PkrCQhi+PV7vfrq8HfMMAlsOEyH5thMpkzv2uyg4TrCoj9nxpVb80dQ/KXHrZf+UoaGjlJ1nFIcaYmBvWZ/uHc= ;{id = 33655} +02677200002E0001000151800093002F08010001518052F4220052EAD970837700978DD2893BC40F87D7A03AA6FC845A9C7EC69D95DB9A3F5F46D3235B808D33FD43EE4DDA72D8C2CF01757A29DF8B2F6C5EC703D5224AE1BFDAB035E49D956E915C6FBEB1C66896A467FA268D3ADBFD5D630338FD9ABE61263F1FE730ACF4D4A26BE693E35256E493F5BF2E0783181B40569BDDC6F632A65D0F751A0A91669958 +gr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l43SiTvED4fXoDqm/IRanH7GnZXbmj9fRtMjW4CNM/1D7k3actjCzwF1einfiy9sXscD1SJK4b/asDXknZVukVxvvrHGaJakZ/omjTrb/V1jAzj9mr5hJj8f5zCs9NSia+aT41JW5JP1vy4HgxgbQFab3cb2MqZdD3UaCpFmmVg= ;{id = 33655} +02677200002F0001000151800012086772617068696373000006200000000013 +gr. 86400 IN NSEC graphics. NS DS RRSIG NSEC +0565737469610369637305666F72746802677200000100010002A30000048B5BBF03 +estia.ics.forth.gr. 172800 IN A 139.91.191.3 +0565737469610369637305666F72746802677200001C00010002A3000010200106482C3000000000000001910003 +estia.ics.forth.gr. 172800 IN AAAA 2001:648:2c30::191:3 +0567722D61740369637305666F72746802677200000100010002A30000044E6891E3 +gr-at.ics.forth.gr. 172800 IN A 78.104.145.227 +0567722D62720369637305666F72746802677200000100010002A3000004C8A007A3 +gr-br.ics.forth.gr. 172800 IN A 200.160.7.163 +0567722D69780369637305666F72746802677200000100010002A3000004B07E2684 +gr-ix.ics.forth.gr. 172800 IN A 176.126.38.132 +0567722D69780369637305666F72746802677200001C00010002A3000010200107F8006E00010000000000000132 +gr-ix.ics.forth.gr. 172800 IN AAAA 2001:7f8:6e:1::132 +0467722D6D0369637305666F72746802677200000100010002A3000004C200040A +gr-m.ics.forth.gr. 172800 IN A 194.0.4.10 +0467722D6D0369637305666F72746802677200001C00010002A300001020010678000700000000000000040010 +gr-m.ics.forth.gr. 172800 IN AAAA 2001:678:7::4:10 +0567722D75730369637305666F72746802677200000100010002A3000004C7041CDB +gr-us.ics.forth.gr. 172800 IN A 199.4.28.219 +0567722D75730369637305666F72746802677200001C00010002A30000102620000022B0000402219BFFFE97DC44 +gr-us.ics.forth.gr. 172800 IN AAAA 2620:0:22b0:4:221:9bff:fe97:dc44 +056772646E730369637305666F72746802677200000100010002A30000048B5B0101 +grdns.ics.forth.gr. 172800 IN A 139.91.1.1 +08677261706869637300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +graphics. 172800 IN NS demand.beta.aridns.net.au. +08677261706869637300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +graphics. 172800 IN NS demand.alpha.aridns.net.au. +08677261706869637300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +graphics. 172800 IN NS demand.delta.aridns.net.au. +08677261706869637300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +graphics. 172800 IN NS demand.gamma.aridns.net.au. +08677261706869637300002B0001000151800024D1530802DD8B16BDEDCFBAB5244EB0C0FDC415D52D039D9B225ABCAF4D35B4BACC241033 +graphics. 86400 IN DS 53587 8 2 DD8B16BDEDCFBAB5244EB0C0FDC415D52D039D9B225ABCAF4D35B4BACC241033 +08677261706869637300002E0001000151800093002B08010001518052F4220052EAD970837700B0C8711BEF8D8B069C946D281153598DD562BE8A5CFD6B19942A7C788D539634E64B2A633B1B18F4BADE35FAD274A4B9C73E421D954697EA558D2007225E8B6BC41A9806C9CE3D3E59CB4D681B6071944AE7036D0E5540BECC20D8FFD8F68DCA4334D5101FD970F3BD43CC45367B5789AAE0F1CF49A3620A329845CBB3B233C4 +graphics. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . sMhxG++NiwaclG0oEVNZjdVivopc/WsZlCp8eI1TljTmSypjOxsY9LreNfrSdKS5xz5CHZVGl+pVjSAHIl6La8QamAbJzj0+WctNaBtgcZRK5wNtDlVAvswg2P/Y9o3KQzTVEB/ZcPO9Q8xFNntXiarg8c9Jo2IKMphFy7OyM8Q= ;{id = 33655} +08677261706869637300002E0001000151800093002F08010001518052F4220052EAD970837700309BCDFEFBE0FAD4B3789EA4C5D4A9E07211194568B79D20A7C2A62DCF33B07502BE131C28E7DB9210C486990B5F0EC6CCB6142173BCE71E88DABB3A3AAAA238BF783EC59EC74C18272D4D5F38CAB8702A763359110E3B336308CADA2E9A66D96041902A691A1758EB7B288ADD615C3DC46B0012D7BBC641B4702D0D6A44FBF9 +graphics. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MJvN/vvg+tSzeJ6kxdSp4HIRGUVot50gp8KmLc8zsHUCvhMcKOfbkhDEhpkLXw7GzLYUIXO85x6I2rs6OqqiOL94PsWex0wYJy1NXzjKuHAqdjNZEQ47M2MIytoummbZYEGQKmkaF1jreyiK3WFcPcRrABLXu8ZBtHAtDWpE+/k= ;{id = 33655} +08677261706869637300002F000100015180000C026773000006200000000013 +graphics. 86400 IN NSEC gs. NS DS RRSIG NSEC +02677300000200010002A300001B026773056363746C640761757468646E730472697065036E657400 +gs. 172800 IN NS gs.cctld.authdns.ripe.net. +02677300000200010002A3000013026E7307616E7963617374036E696302677300 +gs. 172800 IN NS ns.anycast.nic.gs. +02677300000200010002A3000010036773310664796E746C64036E657400 +gs. 172800 IN NS gs1.dyntld.net. +02677300000200010002A3000010036773330664796E746C64036E657400 +gs. 172800 IN NS gs3.dyntld.net. +02677300002B00010001518000245DB608022CBC82DA27FDB16662BF359F59DF1B63FA0AB720BFC2120F17BA369A3249FC5E +gs. 86400 IN DS 23990 8 2 2CBC82DA27FDB16662BF359F59DF1B63FA0AB720BFC2120F17BA369A3249FC5E +02677300002E0001000151800093002B08010001518052F4220052EAD97083770099D9F3183F81F6E8E03E0B3CBC16E764E30D4C4B447111171AAA3691CA2A9DF120855A438F5538D5C3B866CD5B325F755FD5560A49019B7C048419ECEC16471E43137EFF595A9020838CEE0BD23CCC4C8CEBC9A4AA8B0F12C25C976A39E88D7F9A4DA781BD3795D169B3F6D589F7322D5319BF896624F04C7FE210AFF47B1E9C +gs. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . mdnzGD+B9ujgPgs8vBbnZOMNTEtEcREXGqo2kcoqnfEghVpDj1U41cO4Zs1bMl91X9VWCkkBm3wEhBns7BZHHkMTfv9ZWpAgg4zuC9I8zEyM68mkqosPEsJcl2o56I1/mk2ngb03ldFps/bVifcyLVMZv4lmJPBMf+IQr/R7Hpw= ;{id = 33655} +02677300002E0001000151800093002F08010001518052F4220052EAD97083770075AFC83500279BFC98BF379E67D65656C906592C2F7BA918CA462EBF7C0CE6C14688393B5319DB0E16CAADE820D4C8AD74DC054BD73E8DCECF2D9EDE04070A80798B08BAFD0C8C6224E5C4C75EC697D05FFB335521EC1E46FCD589646D8A09F313FA414FAB9F4184E4F7A446A2AC3041118813D24623157A67D140235A6B6B79 +gs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . da/INQAnm/yYvzeeZ9ZWVskGWSwve6kYykYuv3wM5sFGiDk7UxnbDhbKregg1MitdNwFS9c+jc7PLZ7eBAcKgHmLCLr9DIxiJOXEx17Gl9Bf+zNVIeweRvzViWRtignzE/pBT6ufQYTk96RGoqwwQRGIE9JGIxV6Z9FAI1pra3k= ;{id = 33655} +02677300002F000100015180000C026774000006200000000013 +gs. 86400 IN NSEC gt. NS DS RRSIG NSEC +026E7307616E7963617374036E696302677300000100010002A3000004CC3DD815 +ns.anycast.nic.gs. 172800 IN A 204.61.216.21 +026E7307616E7963617374036E696302677300001C00010002A3000010200105000014602100AD000000000001 +ns.anycast.nic.gs. 172800 IN AAAA 2001:500:14:6021:ad::1 +02677400000200010002A300000B026E7303646E7302627200 +gt. 172800 IN NS ns.dns.br. +02677400000200010002A300000F026E73037576670365647502677400 +gt. 172800 IN NS ns.uvg.edu.gt. +02677400000200010002A300000C036E7333036E6963026D7800 +gt. 172800 IN NS ns3.nic.mx. +02677400000200010002A300000E046F73693203677561036E657400 +gt. 172800 IN NS osi2.gua.net. +02677400000200010002A300001006736E732D706203697363036F726700 +gt. 172800 IN NS sns-pb.isc.org. +02677400002F000100015180000C026775000006200000000003 +gt. 86400 IN NSEC gu. NS RRSIG NSEC +02677400002E0001000151800093002F08010001518052F4220052EAD970837700AB48B0A334B3C3C9D38DB23CCEEE7DFD0AFBC01366AB2866077A8C160236E5824376ED5FFE662A904D20034EF0D13266A9CA651C9019F5F1E4F5C882FD08AD906C04845861449A1657413051ED97AC2156ADD6A174F7D8B88155DCA02B83C3244C9F703D5BE19823305ECCF00D1E2B1135DC4CB1EE26250ECC1AF3CF1E780581 +gt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . q0iwozSzw8nTjbI8zu59/Qr7wBNmqyhmB3qMFgI25YJDdu1f/mYqkE0gA07w0TJmqcplHJAZ9fHk9ciC/QitkGwEhFhhRJoWV0EwUe2XrCFWrdahdPfYuIFV3KArg8MkTJ9wPVvhmCMwXszwDR4rETXcTLHuJiUOzBrzzx54BYE= ;{id = 33655} +026E73037576670365647502677400000100010002A3000004A8EA4402 +ns.uvg.edu.gt. 172800 IN A 168.234.68.2 +026E73037576670365647502677400000100010002A3000004C8094A02 +ns.uvg.edu.gt. 172800 IN A 200.9.74.2 +02677500000200010002A300001B026775056363746C640761757468646E730472697065036E657400 +gu. 172800 IN NS gu.cctld.authdns.ripe.net. +02677500000200010002A3000007026E7302677500 +gu. 172800 IN NS ns.gu. +02677500000200010002A300000B026E730365647502677500 +gu. 172800 IN NS ns.edu.gu. +02677500000200010002A300000E056E73756F670365647502677500 +gu. 172800 IN NS nsuog.edu.gu. +02677500002F00010001518000110767756974617273000006200000000003 +gu. 86400 IN NSEC guitars. NS RRSIG NSEC +02677500002E0001000151800093002F08010001518052F4220052EAD9708377005E439E626DB5BF447A1892652D507634AA84383669BEBD502972E12465C0FB12ADEA871F517BE7D794FF7F82492BAF743046338E2FD9CC7C5B5232EF0D0D9AD583073014F7E962B0CE86D2F952D59EEFAB3355C53BBE574EF593B8FC5A4034E657C43D57F483E5166C5C37508FD4418C597EE8604886D18D656E95AE2E75FAE5 +gu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XkOeYm21v0R6GJJlLVB2NKqEODZpvr1QKXLhJGXA+xKt6ocfUXvn15T/f4JJK690MEYzji/ZzHxbUjLvDQ2a1YMHMBT36WKwzobS+VLVnu+rM1XFO75XTvWTuPxaQDTmV8Q9V/SD5RZsXDdQj9RBjFl+6GBIhtGNZW6Vri51+uU= ;{id = 33655} +026E730365647502677500000100010002A3000004A87B0232 +ns.edu.gu. 172800 IN A 168.123.2.50 +056E73756F670365647502677500000100010002A30000044362A485 +nsuog.edu.gu. 172800 IN A 67.98.164.133 +026E7302677500000100010002A3000004A87B040A +ns.gu. 172800 IN A 168.123.4.10 +076775697461727300000200010002A30000160161026E730B756E697265676973747279036E657400 +guitars. 172800 IN NS a.ns.uniregistry.net. +076775697461727300000200010002A300001103746C64076973632D736E7303636F6D00 +guitars. 172800 IN NS tld.isc-sns.com. +076775697461727300000200010002A300001103746C64076973632D736E73036E657400 +guitars. 172800 IN NS tld.isc-sns.net. +076775697461727300000200010002A300001203746C64076973632D736E7304696E666F00 +guitars. 172800 IN NS tld.isc-sns.info. +076775697461727300002B0001000151800018F58105017AFB61D09960E51EF0B0337834B17BA533E26D3F +guitars. 86400 IN DS 62849 5 1 7AFB61D09960E51EF0B0337834B17BA533E26D3F +076775697461727300002B0001000151800024F581050284B9ECF472CD56FF8EFDE4FBFEB45C2933369870062A0453E2D7F3A2286F9A5E +guitars. 86400 IN DS 62849 5 2 84B9ECF472CD56FF8EFDE4FBFEB45C2933369870062A0453E2D7F3A2286F9A5E +076775697461727300002E0001000151800093002B08010001518052F4220052EAD970837700230FFF3A999DE97233397E12A9F282A81EFAB97425927E1233F0F9B6787EAECFD32D9A4453316A3D8EF37EF84FFE6FF1B0D0806541A95994498A220D83B2F0FA40ACC2A26854E971CDB0C7C81F4199E22EC3CB3E870FCD33801A539EA9A9C9DD815CDBF929AEE6AE8639BF0A504FE97839508027619994B362FC85781FD32E3F +guitars. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Iw//Opmd6XIzOX4SqfKCqB76uXQlkn4SM/D5tnh+rs/TLZpEUzFqPY7zfvhP/m/xsNCAZUGpWZRJiiINg7Lw+kCswqJoVOlxzbDHyB9BmeIuw8s+hw/NM4AaU56pqcndgVzb+Smu5q6GOb8KUE/peDlQgCdhmZSzYvyFeB/TLj8= ;{id = 33655} +076775697461727300002E0001000151800093002F08010001518052F4220052EAD9708377004BA081796FAF56383C529F790A702F56E8DF5E769C57264D62790D8D829744CBC622129EFD0161353252C0A47A3825FD07645BE20895CE55ADA6F84D7A7FC022606BDBA9C17010884639F725E552920A2167CFA2A248A583D6BEE92926A28F9CABE9FF5AB2FC354B60BF945FAF4FF4703D3B7EC90745C2DC260ED6AC1748473D +guitars. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S6CBeW+vVjg8Up95CnAvVujfXnacVyZNYnkNjYKXRMvGIhKe/QFhNTJSwKR6OCX9B2Rb4giVzlWtpvhNen/AImBr26nBcBCIRjn3JeVSkgohZ8+iokilg9a+6Skmoo+cq+n/WrL8NUtgv5Rfr0/0cD07fskHRcLcJg7WrBdIRz0= ;{id = 33655} +076775697461727300002F000100015180000E0467757275000006200000000013 +guitars. 86400 IN NSEC guru. NS DS RRSIG NSEC +046775727500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +guru. 172800 IN NS demand.beta.aridns.net.au. +046775727500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +guru. 172800 IN NS demand.alpha.aridns.net.au. +046775727500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +guru. 172800 IN NS demand.delta.aridns.net.au. +046775727500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +guru. 172800 IN NS demand.gamma.aridns.net.au. +046775727500002B0001000151800024EFDA0802A5A658ABCC39ED42CDA94B7279375D690AFFB28B99A1F326CD20F417B15AAE58 +guru. 86400 IN DS 61402 8 2 A5A658ABCC39ED42CDA94B7279375D690AFFB28B99A1F326CD20F417B15AAE58 +046775727500002E0001000151800093002B08010001518052F4220052EAD97083770038E0893983F9496248B3A851460A8C1B44015F260A7E3C52B852DFFC9EC54966DADB0DC34F788F5CF2E03BE3AD802926B80BC804F769163CCC46CA7DAD1D4717E5838A875C5D55E3A84410ACC07062D52F16260E7F235A2040E509E2743DCFD8D7AD5402E6ACB8EC6DB0A874CC9DA155EC2E076EBCB29E6304547B1985CDEFA8 +guru. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OOCJOYP5SWJIs6hRRgqMG0QBXyYKfjxSuFLf/J7FSWba2w3DT3iPXPLgO+OtgCkmuAvIBPdpFjzMRsp9rR1HF+WDiodcXVXjqEQQrMBwYtUvFiYOfyNaIEDlCeJ0Pc/Y161UAuasuOxtsKh0zJ2hVewuB268sp5jBFR7GYXN76g= ;{id = 33655} +046775727500002E0001000151800093002F08010001518052F4220052EAD9708377008A4A275D5FC588DEEFF3E222234C4FA7631F596B47654DEAC453F747CC50F74E9B9BC5ED85C98160E46640E7700F157BC500C001DC187ADB94AF6EAE61A1704CFDF0F774AEC5B73531B0EB53C7293204F005E180CC15A4DB6A80C9AB29A411602446EEF32DB06736BCA850C6797FA983BAC6E3D1DEBC5E339EB450F7F4216B62 +guru. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ikonXV/FiN7v8+IiI0xPp2MfWWtHZU3qxFP3R8xQ906bm8XthcmBYORmQOdwDxV7xQDAAdwYetuUr26uYaFwTP3w93Suxbc1MbDrU8cpMgTwBeGAzBWk22qAyasppBFgJEbu8y2wZza8qFDGeX+pg7rG49HevF4znrRQ9/Qha2I= ;{id = 33655} +046775727500002F000100015180000C026777000006200000000013 +guru. 86400 IN NSEC gw. NS DS RRSIG NSEC +02677700000200010002A300000C036E7331036E696302677700 +gw. 172800 IN NS ns1.nic.gw. +02677700000200010002A300000C036E7333036E696302677700 +gw. 172800 IN NS ns3.nic.gw. +02677700002F000100015180000C026779000006200000000003 +gw. 86400 IN NSEC gy. NS RRSIG NSEC +02677700002E0001000151800093002F08010001518052F4220052EAD970837700750639C0D37DE94E6642C985F41E7DA168BA12FE440B4EB98C048F950448D184A29675ABF77B7641EBA23BBDCAE7EB47F0213386A240A926D3F0B0178997889C0CDD13ACC6FFDAAFE13DE5596ED3A117A589DAE3767667C4DC0A698533A3927E55D9CDEC852071CDEBBEB3794FBB3BFDFF30472075B93C4169C053F2B76DD121 +gw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dQY5wNN96U5mQsmF9B59oWi6Ev5EC065jASPlQRI0YSilnWr93t2QeuiO73K5+tH8CEzhqJAqSbT8LAXiZeInAzdE6zG/9qv4T3lWW7ToRelidrjdnZnxNwKaYUzo5J+VdnN7IUgcc3rvrN5T7s7/f8wRyB1uTxBacBT8rdt0SE= ;{id = 33655} +036E7331036E696302677700000100010002A3000004515BAA0A +ns1.nic.gw. 172800 IN A 81.91.170.10 +036E7333036E696302677700000100010002A3000004C1ABFF23 +ns3.nic.gw. 172800 IN A 193.171.255.35 +02677900000200010002A300001B026779056363746C640761757468646E730472697065036E657400 +gy. 172800 IN NS gy.cctld.authdns.ripe.net. +02677900000200010002A300000F036E73310367747402636F02677900 +gy. 172800 IN NS ns1.gtt.co.gy. +02677900000200010002A300000F036E73320367747402636F02677900 +gy. 172800 IN NS ns2.gtt.co.gy. +02677900000200010002A30000170567792D6E7307616E796361737403706368036E657400 +gy. 172800 IN NS gy-ns.anycast.pch.net. +02677900000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +gy. 172800 IN NS phloem.uoregon.edu. +02677900000200010002A300001006736E732D706203697363036F726700 +gy. 172800 IN NS sns-pb.isc.org. +02677900002F000100015180000C02686B000006200000000003 +gy. 86400 IN NSEC hk. NS RRSIG NSEC +02677900002E0001000151800093002F08010001518052F4220052EAD970837700A1EB72080540E06CF165B27D885CD32AFF7479C3C3C20C602034A74EE5B7F17CEC1753DBCA70AF5A18A8DD02F50F695C1AD87475C69859C80D7660F66F01A6B2B029A558A6093729EEBF864CC17F8A162DF7E5562FFB254BB2D419F63765A60BE7F2021DB904A018EE8153E0FAE26751F8810939FA722F13DA0A94D460222528 +gy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oetyCAVA4GzxZbJ9iFzTKv90ecPDwgxgIDSnTuW38XzsF1PbynCvWhio3QL1D2lcGth0dcaYWcgNdmD2bwGmsrAppVimCTcp7r+GTMF/ihYt9+VWL/slS7LUGfY3ZaYL5/ICHbkEoBjugVPg+uJnUfiBCTn6ci8T2gqU1GAiJSg= ;{id = 33655} +036E73310367747402636F02677900000100010002A3000004BE500029 +ns1.gtt.co.gy. 172800 IN A 190.80.0.41 +036E73320367747402636F02677900000100010002A3000004BE50002A +ns2.gtt.co.gy. 172800 IN A 190.80.0.42 +02686B00002F000100015180000C02686D000006200000000003 +hk. 86400 IN NSEC hm. NS RRSIG NSEC +02686B00002E0001000151800093002F08010001518052F4220052EAD9708377002C34FBC340127A50D7210599381D77F3DBAA60C0D0B7052CB6AFF5250A15BB9CC3962B2C99DDFD23E6F4ED67B8D65A037A2C6C87FBE18F18291F583D724EC0C956646A1CB4A46BC8CD8DC5EEA333B73C287BDF3BB39AC54DB47911EBEF8190B096B43797117B871BDC47D38AA892732C7888D470BA6C7884F39F85A8F8208D87 +hk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LDT7w0ASelDXIQWZOB1389uqYMDQtwUstq/1JQoVu5zDlissmd39I+b07We41loDeixsh/vhjxgpH1g9ck7AyVZkahy0pGvIzY3F7qMztzwoe987s5rFTbR5EevvgZCwlrQ3lxF7hxvcR9OKqJJzLHiI1HC6bHiE85+FqPggjYc= ;{id = 33655} +02686B00000200010002A3000010016105686B697263036E657402686B00 +hk. 172800 IN NS a.hkirc.net.hk. +02686B00000200010002A3000010016205686B697263036E657402686B00 +hk. 172800 IN NS b.hkirc.net.hk. +02686B00000200010002A3000010017305686B697263036E657402686B00 +hk. 172800 IN NS s.hkirc.net.hk. +02686B00000200010002A3000010017405686B697263036E657402686B00 +hk. 172800 IN NS t.hkirc.net.hk. +02686B00000200010002A3000010017505686B697263036E657402686B00 +hk. 172800 IN NS u.hkirc.net.hk. +02686B00000200010002A3000010017605686B697263036E657402686B00 +hk. 172800 IN NS v.hkirc.net.hk. +02686B00000200010002A3000010017705686B697263036E657402686B00 +hk. 172800 IN NS w.hkirc.net.hk. +02686B00000200010002A3000010017805686B697263036E657402686B00 +hk. 172800 IN NS x.hkirc.net.hk. +02686B00000200010002A3000010017905686B697263036E657402686B00 +hk. 172800 IN NS y.hkirc.net.hk. +02686B00000200010002A3000010017A05686B697263036E657402686B00 +hk. 172800 IN NS z.hkirc.net.hk. +036E7332046375686B0365647502686B00000100010002A300000489BD0615 +ns2.cuhk.edu.hk. 172800 IN A 137.189.6.21 +036E7332046375686B0365647502686B00001C00010002A300001024053000000300060000000000000015 +ns2.cuhk.edu.hk. 172800 IN AAAA 2405:3000:3:6::15 +016105686B697263036E657402686B00000100010002A3000004CB770212 +a.hkirc.net.hk. 172800 IN A 203.119.2.18 +016205686B697263036E657402686B00000100010002A3000004CB775713 +b.hkirc.net.hk. 172800 IN A 203.119.87.19 +016205686B697263036E657402686B00001C00010002A300001020010DCA1000000000000000CB775713 +b.hkirc.net.hk. 172800 IN AAAA 2001:dca:1000::cb77:5713 +017305686B697263036E657402686B00000100010002A300000480208803 +s.hkirc.net.hk. 172800 IN A 128.32.136.3 +017305686B697263036E657402686B00001C00010002A30000102607F140FFFFFFFE0000000000000003 +s.hkirc.net.hk. 172800 IN AAAA 2607:f140:ffff:fffe::3 +017405686B697263036E657402686B00000100010002A30000048020880E +t.hkirc.net.hk. 172800 IN A 128.32.136.14 +017405686B697263036E657402686B00001C00010002A30000102607F140FFFFFFFE000000000000000E +t.hkirc.net.hk. 172800 IN AAAA 2607:f140:ffff:fffe::e +017505686B697263036E657402686B00000100010002A3000004D2C98A3A +u.hkirc.net.hk. 172800 IN A 210.201.138.58 +017505686B697263036E657402686B00001C00010002A30000102404000010A000000000000000000058 +u.hkirc.net.hk. 172800 IN AAAA 2404:0:10a0::58 +017605686B697263036E657402686B00000100010002A3000004CC3DD82E +v.hkirc.net.hk. 172800 IN A 204.61.216.46 +017605686B697263036E657402686B00001C00010002A3000010200105000014604600AD000000000001 +v.hkirc.net.hk. 172800 IN AAAA 2001:500:14:6046:ad::1 +017705686B697263036E657402686B00000100010002A3000004CA0C1C8C +w.hkirc.net.hk. 172800 IN A 202.12.28.140 +017705686B697263036E657402686B00001C00010002A300001020010DC0000100004777000000000140 +w.hkirc.net.hk. 172800 IN AAAA 2001:dc0:1:0:4777::140 +017805686B697263036E657402686B00000100010002A3000004CA2DBC27 +x.hkirc.net.hk. 172800 IN A 202.45.188.39 +017805686B697263036E657402686B00001C00010002A3000010240530010001003A0000000000000027 +x.hkirc.net.hk. 172800 IN AAAA 2405:3001:1:3a::27 +017905686B697263036E657402686B00000100010002A300000489BD0615 +y.hkirc.net.hk. 172800 IN A 137.189.6.21 +017905686B697263036E657402686B00001C00010002A300001024053000000300060000000000000015 +y.hkirc.net.hk. 172800 IN AAAA 2405:3000:3:6::15 +017A05686B697263036E657402686B00000100010002A3000004C2926A46 +z.hkirc.net.hk. 172800 IN A 194.146.106.70 +017A05686B697263036E657402686B00001C00010002A30000102001067C101000170000000000000053 +z.hkirc.net.hk. 172800 IN AAAA 2001:67c:1010:17::53 +02686D00000200010002A3000011036E733108726567697374727902686D00 +hm. 172800 IN NS ns1.registry.hm. +02686D00000200010002A3000011036E733208726567697374727902686D00 +hm. 172800 IN NS ns2.registry.hm. +02686D00000200010002A3000011036E733308726567697374727902686D00 +hm. 172800 IN NS ns3.registry.hm. +02686D00002F000100015180000C02686E000006200000000003 +hm. 86400 IN NSEC hn. NS RRSIG NSEC +02686D00002E0001000151800093002F08010001518052F4220052EAD970837700B57F8E00C6B03930F77B6B941DC9142F305AE310DD1E287DC9CFF946FF5679E679D275E7EA7330ECCABCE76309CA8B454C3A53E50F3F791BE6488A5A7856B1ED520900793C86EF7374E71D31A419FA03E8723CD2946D495B9A10278958F79FFF12F547E8B5AD631B9F8348102A267666FAFA928353FC62C3F4CB17DCDFA2A6A4 +hm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tX+OAMawOTD3e2uUHckULzBa4xDdHih9yc/5Rv9WeeZ50nXn6nMw7Mq852MJyotFTDpT5Q8/eRvmSIpaeFax7VIJAHk8hu9zdOcdMaQZ+gPocjzSlG1JW5oQJ4lY95//EvVH6LWtYxufg0gQKiZ2Zvr6koNT/GLD9MsX3N+ipqQ= ;{id = 33655} +036E733108726567697374727902686D00000100010002A3000004D0464F19 +ns1.registry.hm. 172800 IN A 208.70.79.25 +036E733208726567697374727902686D00000100010002A3000004D0464F18 +ns2.registry.hm. 172800 IN A 208.70.79.24 +036E733308726567697374727902686D00000100010002A3000004CAA96018 +ns3.registry.hm. 172800 IN A 202.169.96.24 +02686E00000200010002A300001006736E732D706203697363036F726700 +hn. 172800 IN NS sns-pb.isc.org. +02686E00000200010002A30000180B7063682D616E796361737403726473036F726702686E00 +hn. 172800 IN NS pch-anycast.rds.org.hn. +02686E00000200010002A300001A0D6E69636D782D616E796361737403726473036F726702686E00 +hn. 172800 IN NS nicmx-anycast.rds.org.hn. +02686E00002B000100015180002450770802B7CA2A70DEA7188CB7319A8049164EF9D0E3496D8FE4E3C135CBA8452544BA72 +hn. 86400 IN DS 20599 8 2 B7CA2A70DEA7188CB7319A8049164EF9D0E3496D8FE4E3C135CBA8452544BA72 +02686E00002E0001000151800093002B08010001518052F4220052EAD9708377006A2006516C458CAFC1D2764C5497F17776FEA2C88469D345FDAEA09C17B78BD1385625859520ABA9568A70E58B68A8BB7C1DF181ED7E84DF1DE15FA7B1B3D39A18ED95C8E8101B24227BBD6D9B4202372C9040EA42A110B4B1244D24D17881790832D35E67B6D3B0088230FC88157E64F7A7A98EB21024774481FE339C6223BC +hn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aiAGUWxFjK/B0nZMVJfxd3b+osiEadNF/a6gnBe3i9E4ViWFlSCrqVaKcOWLaKi7fB3xge1+hN8d4V+nsbPTmhjtlcjoEBskInu9bZtCAjcskEDqQqEQtLEkTSTReIF5CDLTXme207AIgjD8iBV+ZPenqY6yECR3RIH+M5xiI7w= ;{id = 33655} +02686E00002E0001000151800093002F08010001518052F4220052EAD97083770068A2AF4FCE7B053B95F2E91BB5178EE17A2AF4291CF0DA18F3A8359E4AF424415CB7051F319CCF92F29A8DEC1CE606C10F933D5CA5488D101C8CA0724FE14D965E8D1743EAB1BA48684328FA41D838FA0BE464FBC10A810B84E37CB1FAC4F589FF742481A6BD508617D035D2CA197BF4D6CE426C7EF233BB7D9789B9FBD84811 +hn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aKKvT857BTuV8ukbtReO4Xoq9Ckc8NoY86g1nkr0JEFctwUfMZzPkvKajewc5gbBD5M9XKVIjRAcjKByT+FNll6NF0PqsbpIaEMo+kHYOPoL5GT7wQqBC4TjfLH6xPWJ/3Qkgaa9UIYX0DXSyhl79NbOQmx+8jO7fZeJufvYSBE= ;{id = 33655} +02686E00002F000100015180001208686F6C64696E6773000006200000000013 +hn. 86400 IN NSEC holdings. NS DS RRSIG NSEC +0D6E69636D782D616E796361737403726473036F726702686E00000100010002A3000004C8216F01 +nicmx-anycast.rds.org.hn. 172800 IN A 200.33.111.1 +0B7063682D616E796361737403726473036F726702686E00000100010002A3000004CC3DD840 +pch-anycast.rds.org.hn. 172800 IN A 204.61.216.64 +0B7063682D616E796361737403726473036F726702686E00001C00010002A3000010200105000014606400AD000000000001 +pch-anycast.rds.org.hn. 172800 IN AAAA 2001:500:14:6064:ad::1 +08686F6C64696E677300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +holdings. 172800 IN NS demand.beta.aridns.net.au. +08686F6C64696E677300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +holdings. 172800 IN NS demand.alpha.aridns.net.au. +08686F6C64696E677300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +holdings. 172800 IN NS demand.delta.aridns.net.au. +08686F6C64696E677300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +holdings. 172800 IN NS demand.gamma.aridns.net.au. +08686F6C64696E677300002B00010001518000242B8D0802CC43CE2E88871B831D3160979357A360F32D2CEF4FC6FC2B013921ACBD6D1BE0 +holdings. 86400 IN DS 11149 8 2 CC43CE2E88871B831D3160979357A360F32D2CEF4FC6FC2B013921ACBD6D1BE0 +08686F6C64696E677300002E0001000151800093002B08010001518052F4220052EAD9708377000DF02EC995EB77DE5774FA734B1B7C0A57ABB79686AF3B186C4D95B8598FD10FAE0C12FDC3061FD4C979D7FAB8BE4CAF7776BEB99FE7735D3BA3875395B5A1F50B8ABD325586AD48CABA47DB85FB542A69CE714525C4C81CB145753EADF6786D4F1DB2BE58A6D5E11E57916ED2E84CD14A6A0D8BC0A4F0256A6684EF50EFA47E +holdings. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . DfAuyZXrd95XdPpzSxt8Clert5aGrzsYbE2VuFmP0Q+uDBL9wwYf1Ml51/q4vkyvd3a+uZ/nc107o4dTlbWh9QuKvTJVhq1IyrpH24X7VCppznFFJcTIHLFFdT6t9nhtTx2yvlim1eEeV5Fu0uhM0UpqDYvApPAlamaE71DvpH4= ;{id = 33655} +08686F6C64696E677300002E0001000151800093002F08010001518052F4220052EAD970837700A50EF714C65415F776BA019AF94D40BF690E48B6D3F0DCC11049344115083A9E951248C359AE7179CA57BA7FCABCBA369DFC2F6BE684F30C55DC8EB158E226F04141EC5C985ADAA03E2E84F37883EA5D5B88B44E16E22D14B80F2C359A858C6192815FD5CEA2BE4429C1D5A8A15E20D782588149199E70ADCFD5D0E8DC1D0A60 +holdings. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pQ73FMZUFfd2ugGa+U1Av2kOSLbT8NzBEEk0QRUIOp6VEkjDWa5xecpXun/KvLo2nfwva+aE8wxV3I6xWOIm8EFB7FyYWtqgPi6E83iD6l1biLROFuItFLgPLDWahYxhkoFf1c6ivkQpwdWooV4g14JYgUkZnnCtz9XQ6NwdCmA= ;{id = 33655} +08686F6C64696E677300002F000100015180001107686F6C69646179000006200000000013 +holdings. 86400 IN NSEC holiday. NS DS RRSIG NSEC +07686F6C6964617900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +holiday. 172800 IN NS demand.beta.aridns.net.au. +07686F6C6964617900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +holiday. 172800 IN NS demand.alpha.aridns.net.au. +07686F6C6964617900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +holiday. 172800 IN NS demand.delta.aridns.net.au. +07686F6C6964617900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +holiday. 172800 IN NS demand.gamma.aridns.net.au. +07686F6C6964617900002B000100015180002489890802605926A35E2424BD2C7782F22B5E55157AFA1688AC643C0F45B3B6DEA435D47D +holiday. 86400 IN DS 35209 8 2 605926A35E2424BD2C7782F22B5E55157AFA1688AC643C0F45B3B6DEA435D47D +07686F6C6964617900002E0001000151800093002B08010001518052F4220052EAD97083770074DA28BCA64B9102B5F67B05CCEA7CC589BACF3B289D2E3423EA7C3C26B7C8ED60F8106C8B0293961B2EB8421CA8F0EF180229FB4CAC7BCCFB1E414D607D52C0F8F6FF7685544103E93BA7EE1E59170A62CA7F9ADD4A77E04FBEA56983E4DFE890ED7C9BF8D5466FEF56DB109779AF7472CB129AD7BECF5B9DFB6D5FFE91555C +holiday. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dNoovKZLkQK19nsFzOp8xYm6zzsonS40I+p8PCa3yO1g+BBsiwKTlhsuuEIcqPDvGAIp+0yse8z7HkFNYH1SwPj2/3aFVEED6Tun7h5ZFwpiyn+a3Up34E++pWmD5N/okO18m/jVRm/vVtsQl3mvdHLLEprXvs9bnfttX/6RVVw= ;{id = 33655} +07686F6C6964617900002E0001000151800093002F08010001518052F4220052EAD9708377007672614F0DE15C394100149D3656C503FFE2900081169B109FE6E5A7A9F9B2DF923614795C0224F6DBF92D550CD2D258092170408F4B175DC4711FBA57534DAD10B82CFEB65F18D6A78B13AAC945D977E741893240CB5175F36058A3771DC8EDB41EEED7FC274D489D7F08E2FF78E40F1DF7D591016A0717A35A16C56B9811B5 +holiday. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dnJhTw3hXDlBABSdNlbFA//ikACBFpsQn+blp6n5st+SNhR5XAIk9tv5LVUM0tJYCSFwQI9LF13EcR+6V1NNrRC4LP62XxjWp4sTqslF2XfnQYkyQMtRdfNgWKN3HcjttB7u1/wnTUidfwji/3jkDx331ZEBagcXo1oWxWuYEbU= ;{id = 33655} +07686F6C6964617900002F000100015180000F05686F757365000006200000000013 +holiday. 86400 IN NSEC house. NS DS RRSIG NSEC +05686F75736500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +house. 172800 IN NS demand.beta.aridns.net.au. +05686F75736500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +house. 172800 IN NS demand.alpha.aridns.net.au. +05686F75736500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +house. 172800 IN NS demand.delta.aridns.net.au. +05686F75736500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +house. 172800 IN NS demand.gamma.aridns.net.au. +05686F75736500002B0001000151800024B2450802FCE9DE111696A86214B6A3E1EA0FA42A193E1A7756C52187215099E99B7ACAE2 +house. 86400 IN DS 45637 8 2 FCE9DE111696A86214B6A3E1EA0FA42A193E1A7756C52187215099E99B7ACAE2 +05686F75736500002E0001000151800093002B08010001518052F4220052EAD9708377001F60397A7B2EB8ECDF056703EA7D728DB55D3CB780555B48B553CED013C2360C83224CF8A2340393E89BB8D67D187A4FF71000ABEFECB94679A6F8F4D63A4ED1A16B7D8B02CEB61F0EA72840FFE626868C9EBB0DAD58CE7AE7BB5C4F7DD2A94931A2A8811A11AAB28C3233D06E18A1EC72AE06B02B98727300238FF366DCD8F0 +house. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . H2A5ensuuOzfBWcD6n1yjbVdPLeAVVtItVPO0BPCNgyDIkz4ojQDk+ibuNZ9GHpP9xAAq+/suUZ5pvj01jpO0aFrfYsCzrYfDqcoQP/mJoaMnrsNrVjOeue7XE990qlJMaKogRoRqrKMMjPQbhih7HKuBrArmHJzACOP82bc2PA= ;{id = 33655} +05686F75736500002E0001000151800093002F08010001518052F4220052EAD9708377009AA47475620CB233D20737D29F79F5AE165D5B64BAB44A938EDE4ABA740A947297181E14822D1855CF0DDEF7424F81CB0CE0F98F8705BABD0F02BD69D919EE1C227537E252EDC0F1F5F10245FB4CA4B88CCF1BE29CD30E736AB8DD3EF1A8CAC9ECC406A77B0383A6B041DFAE0C5B0F8670C658AA5D94EDE0C303D0D86FD3C77E +house. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mqR0dWIMsjPSBzfSn3n1rhZdW2S6tEqTjt5KunQKlHKXGB4Ugi0YVc8N3vdCT4HLDOD5j4cFur0PAr1p2RnuHCJ1N+JS7cDx9fECRftMpLiMzxvinNMOc2q43T7xqMrJ7MQGp3sDg6awQd+uDFsPhnDGWKpdlO3gwwPQ2G/Tx34= ;{id = 33655} +05686F75736500002F000100015180000C026872000006200000000013 +house. 86400 IN NSEC hr. NS DS RRSIG NSEC +02687200000200010002A3000012036E733506756E6976696502616302617400 +hr. 172800 IN NS ns5.univie.ac.at. +02687200000200010002A300000D046E336E73036E696302657300 +hr. 172800 IN NS n3ns.nic.es. +02687200000200010002A300001006736E732D706203697363036F726700 +hr. 172800 IN NS sns-pb.isc.org. +02687200000200010002A30000130768722D6E732D31066361726E657402687200 +hr. 172800 IN NS hr-ns-1.carnet.hr. +02687200002F000100015180000C026874000006200000000003 +hr. 86400 IN NSEC ht. NS RRSIG NSEC +02687200002E0001000151800093002F08010001518052F4220052EAD970837700099598C10DF6913E2F44B880CC97CD6E19121DB794BCEB3836215ED2C250A68C38C7F470B14A5BCB1359947CF3123860776FE577FA3B4543EFB548BF72EBB4ED69209A172FC76B73116A4F515DF4250F6F3E6B8888C93C8CA8D501855A58E9126B7028BDE03D37F05BE5ADB6ECC0DD44F399D7146F51A7E58873E7D04E025CD5 +hr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CZWYwQ32kT4vRLiAzJfNbhkSHbeUvOs4NiFe0sJQpow4x/RwsUpbyxNZlHzzEjhgd2/ld/o7RUPvtUi/cuu07Wkgmhcvx2tzEWpPUV30JQ9vPmuIiMk8jKjVAYVaWOkSa3AoveA9N/Bb5a227MDdRPOZ1xRvUafliHPn0E4CXNU= ;{id = 33655} +0768722D6E732D31066361726E657402687200000100010002A3000004A135A064 +hr-ns-1.carnet.hr. 172800 IN A 161.53.160.100 +0768722D6E732D31066361726E657402687200001C00010002A300001020010B6800FF00010000000000000100 +hr-ns-1.carnet.hr. 172800 IN AAAA 2001:b68:ff:1::100 +02687400000200010002A300001303646E73097072696E6365746F6E0365647500 +ht. 172800 IN NS dns.princeton.edu. +02687400000200010002A300000C036E7333036E696302667200 +ht. 172800 IN NS ns3.nic.fr. +02687400000200010002A30000170568742D6E7307616E796361737403706368036E657400 +ht. 172800 IN NS ht-ns.anycast.pch.net. +02687400000200010002A300001907636861726C6573046364656307706F6C796D746C02636100 +ht. 172800 IN NS charles.cdec.polymtl.ca. +02687400002F000100015180000C026875000006200000000003 +ht. 86400 IN NSEC hu. NS RRSIG NSEC +02687400002E0001000151800093002F08010001518052F4220052EAD9708377004E934E3773076698035F1DCAA09D8A42083CCCE7A4849CC27D732602A2127A5D47817B2458CF724A9FAA2B298108851C628A904EC07311A723EE7F975BC50DCA344A97910DC037872E773FF41794D40A30ECFEE003ABB5923D68123F7A7D6F3F5EB3A1BA83A8CDA940FEE2560E04B857EA7F2482D571CEC0D9A4EF37DA3AA1AD +ht. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TpNON3MHZpgDXx3KoJ2KQgg8zOekhJzCfXMmAqISel1HgXskWM9ySp+qKymBCIUcYoqQTsBzEacj7n+XW8UNyjRKl5ENwDeHLnc/9BeU1Aow7P7gA6u1kj1oEj96fW8/XrOhuoOozalA/uJWDgS4V+p/JILVcc7A2aTvN9o6oa0= ;{id = 33655} +02687500000200010002A3000006016202687500 +hu. 172800 IN NS b.hu. +02687500000200010002A3000006016302687500 +hu. 172800 IN NS c.hu. +02687500000200010002A3000006016402687500 +hu. 172800 IN NS d.hu. +02687500000200010002A3000006016502687500 +hu. 172800 IN NS e.hu. +02687500000200010002A300000B026E73036E696302687500 +hu. 172800 IN NS ns.nic.hu. +02687500000200010002A300000C036E7332036E696302667200 +hu. 172800 IN NS ns2.nic.fr. +02687500000200010002A300000F066E732D636F6D036E696302687500 +hu. 172800 IN NS ns-com.nic.hu. +02687500002F000100015180000C026964000006200000000003 +hu. 86400 IN NSEC id. NS RRSIG NSEC +02687500002E0001000151800093002F08010001518052F4220052EAD970837700405D1FECAF2EFB525BFAB7A663ECEEF895CAA0B4B435A2D068B14F05FD544B2DD5733390477F13BBF84D9007881B25D42FE5B28764923A256A180B3FA908D8A51A64BAC370F15C5D98D443AE64E3A6D9089B4D062201641077A66FF5BDF0CC13B8C7D278AF61A8FD09829D86FAD94DAB9FD0D1592ED3F88914DA097A030A6B7A +hu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QF0f7K8u+1Jb+remY+zu+JXKoLS0NaLQaLFPBf1USy3VczOQR38Tu/hNkAeIGyXUL+Wyh2SSOiVqGAs/qQjYpRpkusNw8VxdmNRDrmTjptkIm00GIgFkEHemb/W98MwTuMfSeK9hqP0Jgp2G+tlNq5/Q0Vku0/iJFNoJegMKa3o= ;{id = 33655} +016202687500000100010002A3000004C1EF95A1 +b.hu. 172800 IN A 193.239.149.161 +016202687500001C00010002A300001020010738000440000000000000000003 +b.hu. 172800 IN AAAA 2001:738:4:4000::3 +016302687500000100010002A3000004C1061001 +c.hu. 172800 IN A 193.6.16.1 +016402687500000100010002A3000004C34623FA +d.hu. 172800 IN A 195.70.35.250 +016502687500000100010002A3000004C200190B +e.hu. 172800 IN A 194.0.25.11 +016502687500001C00010002A300001020010678002000000000000000000011 +e.hu. 172800 IN AAAA 2001:678:20::11 +026E73036E696302687500000100010002A3000004C1EF9430 +ns.nic.hu. 172800 IN A 193.239.148.48 +026E73036E696302687500001C00010002A300001020010738000480000000000000000048 +ns.nic.hu. 172800 IN AAAA 2001:738:4:8000::48 +066E732D636F6D036E696302687500000100010002A3000004C200010C +ns-com.nic.hu. 172800 IN A 194.0.1.12 +066E732D636F6D036E696302687500001C00010002A30000102001067800040000000000000000000C +ns-com.nic.hu. 172800 IN AAAA 2001:678:4::c +02696400000200010002A300000A016703646E7302696400 +id. 172800 IN NS g.dns.id. +02696400000200010002A3000008036E733102696400 +id. 172800 IN NS ns1.id. +02696400000200010002A3000010036E733103726164036E657402696400 +id. 172800 IN NS ns1.rad.net.id. +02696400000200010002A3000011036E733104696E646F036E657402696400 +id. 172800 IN NS ns1.indo.net.id. +02696400000200010002A3000010036E73320363626E036E657402696400 +id. 172800 IN NS ns2.cbn.net.id. +02696400000200010002A300001004736563330561706E6963036E657400 +id. 172800 IN NS sec3.apnic.net. +02696400002F000100015180000C026965000006200000000003 +id. 86400 IN NSEC ie. NS RRSIG NSEC +02696400002E0001000151800093002F08010001518052F4220052EAD970837700BC4C598382D66B437DC4C6C046FE097AE679225CBCC7A5A3EF140B1BB1B20C1F29CA5DA89FED8E54ED2235F8054F39E635DA055556E2070B5D6ECAA34448DFA6A66F1F0DB49BCB1492703302B6EFE8CB192BD6EAF0F5F25027751469AA3E4135C0687CE381EAEBDFB5A77AA0AEF68C25542657247C4B5E01908365EDA708D6DB +id. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vExZg4LWa0N9xMbARv4JeuZ5Ily8x6Wj7xQLG7GyDB8pyl2on+2OVO0iNfgFTznmNdoFVVbiBwtdbsqjREjfpqZvHw20m8sUknAzArbv6MsZK9bq8PXyUCd1FGmqPkE1wGh844Hq69+1p3qgrvaMJVQmVyR8S14BkINl7acI1ts= ;{id = 33655} +016703646E7302696400000100010002A3000004CB777054 +g.dns.id. 172800 IN A 203.119.112.84 +016703646E7302696400001C00010002A300001020010DD8001F00040000000000000084 +g.dns.id. 172800 IN AAAA 2001:dd8:1f:4::84 +036E73320363626E036E657402696400000100010002A3000004CA9E2801 +ns2.cbn.net.id. 172800 IN A 202.158.40.1 +036E73320363626E036E657402696400001C00010002A300001020010D10000A00530000000000000053 +ns2.cbn.net.id. 172800 IN AAAA 2001:d10:a:53::53 +036E733104696E646F036E657402696400000100010002A3000004CA9F2002 +ns1.indo.net.id. 172800 IN A 202.159.32.2 +036E733103726164036E657402696400000100010002A3000004CA9A0102 +ns1.rad.net.id. 172800 IN A 202.154.1.2 +036E733102696400000100010002A3000004CA9B1EE3 +ns1.id. 172800 IN A 202.155.30.227 +036E733102696400001C00010002A300001020010E00180000000000000000000002 +ns1.id. 172800 IN AAAA 2001:e00:1800::2 +02696500002F000100015180000C02696C000006200000000003 +ie. 86400 IN NSEC il. NS RRSIG NSEC +02696500002E0001000151800093002F08010001518052F4220052EAD970837700406FF0D658FD6B39E91CC05741BB34F16F7AF76872D8129F0DF38EB429DD18BE122940C40C9AD1BDF2E76ECC5F2C2E4A5772AD109E9AF4400F06F3A51E76C96290D009CFE78EB48CB735675F49E8A9EF9C2A050A0C79F55DA0212EFACD040526FCCFE3D0DE0F1A0B212018476ADE8753EC12C1E64D7C222D70A3D1713C0DCD83 +ie. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QG/w1lj9aznpHMBXQbs08W9692hy2BKfDfOOtCndGL4SKUDEDJrRvfLnbsxfLC5KV3KtEJ6a9EAPBvOlHnbJYpDQCc/njrSMtzVnX0noqe+cKgUKDHn1XaAhLvrNBAUm/M/j0N4PGgshIBhHat6HU+wSweZNfCItcKPRcTwNzYM= ;{id = 33655} +02696500000200010002A300000B0161046965647202696500 +ie. 172800 IN NS a.iedr.ie. +02696500000200010002A300000B0162046965647202696500 +ie. 172800 IN NS b.iedr.ie. +02696500000200010002A300000B0163046965647202696500 +ie. 172800 IN NS c.iedr.ie. +02696500000200010002A300000B0164046965647202696500 +ie. 172800 IN NS d.iedr.ie. +02696500000200010002A3000011036E7333026E730465736174036E657400 +ie. 172800 IN NS ns3.ns.esat.net. +02696500000200010002A300001804676E73310E646F6D61696E726567697374727902696500 +ie. 172800 IN NS gns1.domainregistry.ie. +02696500000200010002A300001804676E73320E646F6D61696E726567697374727902696500 +ie. 172800 IN NS gns2.domainregistry.ie. +02696500000200010002A300000E056E732D6965036E696302667200 +ie. 172800 IN NS ns-ie.nic.fr. +0661757468303107636F6E6E65637402696500000100010002A300000457C6B832 +auth01.connect.ie. 172800 IN A 87.198.184.50 +04676E73310E646F6D61696E726567697374727902696500000100010002A3000004C685C766 +gns1.domainregistry.ie. 172800 IN A 198.133.199.102 +04676E73320E646F6D61696E726567697374727902696500000100010002A3000004C685C767 +gns2.domainregistry.ie. 172800 IN A 198.133.199.103 +0161046965647202696500000100010002A30000044D48482C +a.iedr.ie. 172800 IN A 77.72.72.44 +0161046965647202696500001C00010002A30000102A0104B0000000000000000000000003 +a.iedr.ie. 172800 IN AAAA 2a01:4b0::3 +0162046965647202696500000100010002A30000044D484822 +b.iedr.ie. 172800 IN A 77.72.72.34 +0162046965647202696500001C00010002A30000102A0104B0000000000000000000000002 +b.iedr.ie. 172800 IN AAAA 2a01:4b0::2 +0163046965647202696500000100010002A3000004C2926A62 +c.iedr.ie. 172800 IN A 194.146.106.98 +0164046965647202696500000100010002A30000044D48E5F5 +d.iedr.ie. 172800 IN A 77.72.229.245 +02696C00000200010002A300000B036E7361026E7302696C00 +il. 172800 IN NS nsa.ns.il. +02696C00000200010002A300000B036E7362026E7302696C00 +il. 172800 IN NS nsb.ns.il. +02696C00000200010002A300000B036E7364026E7302696C00 +il. 172800 IN NS nsd.ns.il. +02696C00000200010002A300000B036E7365026E7302696C00 +il. 172800 IN NS nse.ns.il. +02696C00000200010002A300000B036E7367026E7302696C00 +il. 172800 IN NS nsg.ns.il. +02696C00000200010002A300001205696C646E730468756A6902616302696C00 +il. 172800 IN NS ildns.huji.ac.il. +02696C00000200010002A3000013066C6F6F6B7570046975636302616302696C00 +il. 172800 IN NS lookup.iucc.ac.il. +02696C00000200010002A300001006736E732D706203697363036F726700 +il. 172800 IN NS sns-pb.isc.org. +02696C00002F000100015180000C02696D000006200000000003 +il. 86400 IN NSEC im. NS RRSIG NSEC +02696C00002E0001000151800093002F08010001518052F4220052EAD970837700B4FED7062F199E8897D95CFD0DE75AE391F6C3E2E5C2378E8C93C3AE3BBAA33FD42789A03114F621175B258ABF16D3BECCD9A3A7E00E763C8952ED504A7E28767D08AA2E97913E2342EA2537C88810D730E30876D66738A1F0EE8E032121D5B52B29926C8A9D3FABDD9B149332705E94150D5A86F4A83734E5ED2AE7FBDA3EBF +il. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tP7XBi8ZnoiX2Vz9Deda45H2w+LlwjeOjJPDrju6oz/UJ4mgMRT2IRdbJYq/FtO+zNmjp+AOdjyJUu1QSn4odn0Iqi6XkT4jQuolN8iIENcw4wh21mc4ofDujgMhIdW1KymSbIqdP6vdmxSTMnBelBUNWob0qDc05e0q5/vaPr8= ;{id = 33655} +05696C646E730468756A6902616302696C00000100010002A3000004808B0642 +ildns.huji.ac.il. 172800 IN A 128.139.6.66 +066C6F6F6B7570046975636302616302696C00000100010002A3000004808B22F0 +lookup.iucc.ac.il. 172800 IN A 128.139.34.240 +066C6F6F6B7570046975636302616302696C00001C00010002A300001020010BF80900000600000000808B22F0 +lookup.iucc.ac.il. 172800 IN AAAA 2001:bf8:900:6::808b:22f0 +036E7361026E7302696C00000100010002A3000004C073D23A +nsa.ns.il. 172800 IN A 192.115.210.58 +036E7362026E7302696C00000100010002A3000004C073D23C +nsb.ns.il. 172800 IN A 192.115.210.60 +036E7364026E7302696C00000100010002A300000495143884 +nsd.ns.il. 172800 IN A 149.20.56.132 +036E7364026E7302696C00001C00010002A3000010200104F8000300370000000000000011 +nsd.ns.il. 172800 IN AAAA 2001:4f8:3:37::11 +036E7365026E7302696C00000100010002A3000004C0738DFD +nse.ns.il. 172800 IN A 192.115.141.253 +036E7367026E7302696C00000100010002A3000004515BA1D4 +nsg.ns.il. 172800 IN A 81.91.161.212 +036E7367026E7302696C00001C00010002A30000102A020568FFFF00080000000000000053 +nsg.ns.il. 172800 IN AAAA 2a02:568:ffff:8::53 +02696D00000200010002A300000C036E7334026A61036E657400 +im. 172800 IN NS ns4.ja.net. +02696D00000200010002A300000F05686F70707903696F6D03636F6D00 +im. 172800 IN NS hoppy.iom.com. +02696D00000200010002A3000015066261726E65790661647673797302636F02756B00 +im. 172800 IN NS barney.advsys.co.uk. +02696D00000200010002A300001107706562626C657303696F6D03636F6D00 +im. 172800 IN NS pebbles.iom.com. +02696D00002F00010001518000140A696D6D6F62696C69656E000006200000000003 +im. 86400 IN NSEC immobilien. NS RRSIG NSEC +02696D00002E0001000151800093002F08010001518052F4220052EAD97083770001F4945E415D4BA67996CCB7A1934753B64553B3497B63A500D9E4654748161E727B824D14C3A6EF76FE2FDBBB0F817BF5724F74F135B0A1BF05F57D6B014F568033AD361FE935AEBBE6F843B5C615ED45A65EDF3BC3609E9D33AEA97CC5F2293DC0191C824001952894AA1C1111F842E8F20792C051027887FC8B42B14080BA +im. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . AfSUXkFdS6Z5lsy3oZNHU7ZFU7NJe2OlANnkZUdIFh5ye4JNFMOm73b+L9u7D4F79XJPdPE1sKG/BfV9awFPVoAzrTYf6TWuu+b4Q7XGFe1Fpl7fO8Ngnp0zrql8xfIpPcAZHIJAAZUolKocERH4QujyB5LAUQJ4h/yLQrFAgLo= ;{id = 33655} +0A696D6D6F62696C69656E00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +immobilien. 172800 IN NS demand.beta.aridns.net.au. +0A696D6D6F62696C69656E00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +immobilien. 172800 IN NS demand.alpha.aridns.net.au. +0A696D6D6F62696C69656E00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +immobilien. 172800 IN NS demand.delta.aridns.net.au. +0A696D6D6F62696C69656E00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +immobilien. 172800 IN NS demand.gamma.aridns.net.au. +0A696D6D6F62696C69656E00002B0001000151800024EBA208027BB72F07C2FE7F5BB0DF667556FBC9BF5CFB31D66121D4AB5BCFDD0D29D39FCC +immobilien. 86400 IN DS 60322 8 2 7BB72F07C2FE7F5BB0DF667556FBC9BF5CFB31D66121D4AB5BCFDD0D29D39FCC +0A696D6D6F62696C69656E00002E0001000151800093002B08010001518052F4220052EAD97083770096B6D93BD6DB126AA06C0B06A1B19F4D01320059CD27AF723CB5C7B72115CF4EA708E62DD074425A1D86B510CBDB792DF33B1EBE231A8E6C0BB2FBC47FEB165903B4BD5CE2AEC03F5B8808E6BC350BD59A8F6E88B718897D0651F797CF8DB01933FDC25AB664FE738600256B057E52AEADF6A0A7A9355A2E9FABCE5750679E55 +immobilien. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lrbZO9bbEmqgbAsGobGfTQEyAFnNJ69yPLXHtyEVz06nCOYt0HRCWh2GtRDL23kt8zseviMajmwLsvvEf+sWWQO0vVzirsA/W4gI5rw1C9Waj26ItxiJfQZR95fPjbAZM/3CWrZk/nOGACVrBX5Srq32oKepNVoun6vOV1BnnlU= ;{id = 33655} +0A696D6D6F62696C69656E00002E0001000151800093002F08010001518052F4220052EAD970837700AA5E4B2AA021AD33B480038326C98293FA1D33332E6E20A2F9CD2E53AF289D0C7F56B4CEC2E7151EC6339EF4F936E8086177EB0B9F540F76B74B782E7E3DBFC5D8F491D76627E0E414E3C9B73B72A441197E5BD6F34DB9CFAF3E9BC86E1D9FD7E08AEE7C4C104218CBFEFCC4841CE1C73353C38604AF5BA76F845E4D54838F1D +immobilien. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ql5LKqAhrTO0gAODJsmCk/odMzMubiCi+c0uU68onQx/VrTOwucVHsYznvT5NugIYXfrC59UD3a3S3gufj2/xdj0kddmJ+DkFOPJtztypEEZflvW8025z68+m8huHZ/X4IrufEwQQhjL/vzEhBzhxzNTw4YEr1unb4ReTVSDjx0= ;{id = 33655} +0A696D6D6F62696C69656E00002F000100015180000C02696E000006200000000013 +immobilien. 86400 IN NSEC in. NS DS RRSIG NSEC +02696E00000200010002A300001802613002696E0B6166696C6961732D6E737404696E666F00 +in. 172800 IN NS a0.in.afilias-nst.info. +02696E00000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +in. 172800 IN NS a1.in.afilias-nst.in. +02696E00000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +in. 172800 IN NS a2.in.afilias-nst.info. +02696E00000200010002A300001702623002696E0B6166696C6961732D6E7374036F726700 +in. 172800 IN NS b0.in.afilias-nst.org. +02696E00000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +in. 172800 IN NS b1.in.afilias-nst.in. +02696E00000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +in. 172800 IN NS b2.in.afilias-nst.org. +02696E00000200010002A300001802633002696E0B6166696C6961732D6E737404696E666F00 +in. 172800 IN NS c0.in.afilias-nst.info. +02696E00000200010002A300000E036E73370463646E73036E657400 +in. 172800 IN NS ns7.cdns.net. +02696E00002B0001000151800018FD14070182E4E46622B646086C1051A6093DEB897BD1C022 +in. 86400 IN DS 64788 7 1 82E4E46622B646086C1051A6093DEB897BD1C022 +02696E00002B0001000151800024FD1407024021B67522D8935C8D8D7CE32900ACB382F55E3D1A8DE920233CBE70A13DA85B +in. 86400 IN DS 64788 7 2 4021B67522D8935C8D8D7CE32900ACB382F55E3D1A8DE920233CBE70A13DA85B +02696E00002E0001000151800093002B08010001518052F4220052EAD97083770067EB49194B7D8483D4DAFA972917161DAF31B67B87C7B5C9E20E1A90F0BA5C3C6076C13D0656F2E0D4D00DAAB6B2CFB40D22E4472FA863BAF718EF634F4381A27A3B86A7BE767E9FD7B5738BCCC4CD82AB4D251E0E42DA94D71986D0856941616E525B0E590EF22C215FB84FF806A41521626558593D49FAF2A35DE2593CBDE7 +in. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z+tJGUt9hIPU2vqXKRcWHa8xtnuHx7XJ4g4akPC6XDxgdsE9Blby4NTQDaq2ss+0DSLkRy+oY7r3GO9jT0OBono7hqe+dn6f17Vzi8zEzYKrTSUeDkLalNcZhtCFaUFhblJbDlkO8iwhX7hP+AakFSFiZVhZPUn68qNd4lk8vec= ;{id = 33655} +02696E00002E0001000151800093002F08010001518052F4220052EAD970837700263C51E0128F5034DA3A34EB4B6F01745B69388D66D4C6F6C29F69696F94CDC6ABEF658B13F68EC68ECD33E70A6B5C5B8918E2EFCEF65D8AA3AE446F787E7F44AB4B4D3CF1812819E7FA87AC0E3F0EBE508E5B4A246C075090967A3F4D4D894D82213F60508D10699CBFA5BD5A8916F42C307AF8453E2B3045EF1AD7DCCAA95A +in. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . JjxR4BKPUDTaOjTrS28BdFtpOI1m1Mb2wp9paW+Uzcar72WLE/aOxo7NM+cKa1xbiRji7872XYqjrkRveH5/RKtLTTzxgSgZ5/qHrA4/Dr5QjltKJGwHUJCWej9NTYlNgiE/YFCNEGmcv6W9WokW9CwwevhFPiswRe8a19zKqVo= ;{id = 33655} +02696E00002F000100015180000E04696E666F000006200000000013 +in. 86400 IN NSEC info. NS DS RRSIG NSEC +02613102696E0B6166696C6961732D6E737402696E00000100010002A300000473F9A48E +a1.in.afilias-nst.in. 172800 IN A 115.249.164.142 +02613102696E0B6166696C6961732D6E737402696E00001C00010002A3000010200145280FFF00130000000000000142 +a1.in.afilias-nst.in. 172800 IN AAAA 2001:4528:fff:13::142 +02623102696E0B6166696C6961732D6E737402696E00000100010002A30000047D13285A +b1.in.afilias-nst.in. 172800 IN A 125.19.40.90 +02623102696E0B6166696C6961732D6E737402696E00001C00010002A30000102404A8000002001E0000000000190090 +b1.in.afilias-nst.in. 172800 IN AAAA 2404:a800:2:1e::19:90 +04696E666F00002F000100015180001309696E73746974757465000006200000000013 +info. 86400 IN NSEC institute. NS DS RRSIG NSEC +04696E666F00002E0001000151800093002F08010001518052F4220052EAD9708377006E2A3D84914FDF1CFABA61E2A4BFD0C2CB02DA352DDADF54D29A4EAD0FB0A8BB17D37DC8904DE633DEADC4A725A870B1446236D3FF3934A70D4583C201D229F1C085C526637E1EF588BD38A01E105B6D8D2FC5F493EEF5717723D2BA07678FFDB96CA009F7F14CD966F80F264FE9AED6FCB3790FF56BEE56279EE1E6C1CF1D05 +info. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bio9hJFP3xz6umHipL/QwssC2jUt2t9U0ppOrQ+wqLsX033IkE3mM96txKclqHCxRGI20/85NKcNRYPCAdIp8cCFxSZjfh71iL04oB4QW22NL8X0k+71cXcj0roHZ4/9uWygCffxTNlm+A8mT+mu1vyzeQ/1a+5WJ57h5sHPHQU= ;{id = 33655} +04696E666F00002E0001000151800093002B08010001518052F4220052EAD9708377001344BD168F088D7D5CF2EF6D5E92E69E94A8D0A97D448CA18BE693AC057997B370724E85AF90ED59DC227055B248F614C2C9D2D32BD129FCFAAFC187E31B6719DA52AC636ECBCC4086E61ACFA6D975CA6EEE3215F93BF49589A3214C957C9D0AAED5E73D7B8F762B9C197E7541C0C13A18317A628B107BE2809083DFB8F77229 +info. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . E0S9Fo8IjX1c8u9tXpLmnpSo0Kl9RIyhi+aTrAV5l7Nwck6Fr5DtWdwicFWySPYUwsnS0yvRKfz6r8GH4xtnGdpSrGNuy8xAhuYaz6bZdcpu7jIV+Tv0lYmjIUyVfJ0KrtXnPXuPdiucGX51QcDBOhgxemKLEHvigJCD37j3cik= ;{id = 33655} +04696E666F00000200010002A300001A02613004696E666F0B6166696C6961732D6E737404696E666F00 +info. 172800 IN NS a0.info.afilias-nst.info. +04696E666F00000200010002A300001A02613204696E666F0B6166696C6961732D6E737404696E666F00 +info. 172800 IN NS a2.info.afilias-nst.info. +04696E666F00000200010002A300001902623004696E666F0B6166696C6961732D6E7374036F726700 +info. 172800 IN NS b0.info.afilias-nst.org. +04696E666F00000200010002A300001902623204696E666F0B6166696C6961732D6E7374036F726700 +info. 172800 IN NS b2.info.afilias-nst.org. +04696E666F00000200010002A300001A02633004696E666F0B6166696C6961732D6E737404696E666F00 +info. 172800 IN NS c0.info.afilias-nst.info. +04696E666F00000200010002A300001902643004696E666F0B6166696C6961732D6E7374036F726700 +info. 172800 IN NS d0.info.afilias-nst.org. +04696E666F00002B0001000151800018D503070193D30693C59CD11646CEAA77DCED10DA13BEEDE9 +info. 86400 IN DS 54531 7 1 93D30693C59CD11646CEAA77DCED10DA13BEEDE9 +04696E666F00002B0001000151800024D5030702E2D262469CB998642F772610A77AAEABB84A4F71CF40B9E30C03B9C9E1F6409C +info. 86400 IN DS 54531 7 2 E2D262469CB998642F772610A77AAEABB84A4F71CF40B9E30C03B9C9E1F6409C +026130046165726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3301 +a0.aero.afilias-nst.info. 172800 IN A 199.254.51.1 +026130046165726F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500001D00000000000000000001 +a0.aero.afilias-nst.info. 172800 IN AAAA 2001:500:1d::1 +026132046165726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97301 +a2.aero.afilias-nst.info. 172800 IN A 199.249.115.1 +026132046165726F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004300000000000000000001 +a2.aero.afilias-nst.info. 172800 IN AAAA 2001:500:43::1 +026330046165726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3501 +c0.aero.afilias-nst.info. 172800 IN A 199.254.53.1 +026330046165726F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500001F00000000000000000001 +c0.aero.afilias-nst.info. 172800 IN AAAA 2001:500:1f::1 +02613004617369610B6166696C6961732D6E737404696E666F00000100010002A3000004C7133701 +a0.asia.afilias-nst.info. 172800 IN A 199.19.55.1 +02613004617369610B6166696C6961732D6E737404696E666F00001C00010002A300001020010500000D00000000000000000001 +a0.asia.afilias-nst.info. 172800 IN AAAA 2001:500:d::1 +02613204617369610B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97201 +a2.asia.afilias-nst.info. 172800 IN A 199.249.114.1 +02613204617369610B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004200000000000000000001 +a2.asia.afilias-nst.info. 172800 IN AAAA 2001:500:42::1 +02633004617369610B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE1D01 +c0.asia.afilias-nst.info. 172800 IN A 199.254.29.1 +02633004617369610B6166696C6961732D6E737404696E666F00001C00010002A300001020010500001700000000000000000001 +c0.asia.afilias-nst.info. 172800 IN AAAA 2001:500:17::1 +026130056363746C640B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3B01 +a0.cctld.afilias-nst.info. 172800 IN A 199.254.59.1 +026130056363746C640B6166696C6961732D6E737404696E666F00001C00010002A300001020010500002500000000000000000001 +a0.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:25::1 +026132056363746C640B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97401 +a2.cctld.afilias-nst.info. 172800 IN A 199.249.116.1 +026132056363746C640B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004400000000000000000001 +a2.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:44::1 +026330056363746C640B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3D01 +c0.cctld.afilias-nst.info. 172800 IN A 199.254.61.1 +026330056363746C640B6166696C6961732D6E737404696E666F00001C00010002A300001020010500002700000000000000000001 +c0.cctld.afilias-nst.info. 172800 IN AAAA 2001:500:27::1 +02613002696E0B6166696C6961732D6E737404696E666F00000100010002A3000004C7075701 +a0.in.afilias-nst.info. 172800 IN A 199.7.87.1 +02613002696E0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500002900000000000000000001 +a0.in.afilias-nst.info. 172800 IN AAAA 2001:500:29::1 +02613202696E0B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97501 +a2.in.afilias-nst.info. 172800 IN A 199.249.117.1 +02613202696E0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004500000000000000000001 +a2.in.afilias-nst.info. 172800 IN AAAA 2001:500:45::1 +02633002696E0B6166696C6961732D6E737404696E666F00000100010002A3000004C7FD3901 +c0.in.afilias-nst.info. 172800 IN A 199.253.57.1 +02633002696E0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500005100000000000000000001 +c0.in.afilias-nst.info. 172800 IN AAAA 2001:500:51::1 +02613004696E666F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE1F01 +a0.info.afilias-nst.info. 172800 IN A 199.254.31.1 +02613004696E666F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500001900000000000000000001 +a0.info.afilias-nst.info. 172800 IN AAAA 2001:500:19::1 +02613204696E666F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97101 +a2.info.afilias-nst.info. 172800 IN A 199.249.113.1 +02613204696E666F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004100000000000000000001 +a2.info.afilias-nst.info. 172800 IN AAAA 2001:500:41::1 +02633004696E666F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3101 +c0.info.afilias-nst.info. 172800 IN A 199.254.49.1 +02633004696E666F0B6166696C6961732D6E737404696E666F00001C00010002A300001020010500001B00000000000000000001 +c0.info.afilias-nst.info. 172800 IN AAAA 2001:500:1b::1 +026132026D650B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97701 +a2.me.afilias-nst.info. 172800 IN A 199.249.119.1 +026132026D650B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004700000000000000000001 +a2.me.afilias-nst.info. 172800 IN AAAA 2001:500:47::1 +026130046D6F62690B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3701 +a0.mobi.afilias-nst.info. 172800 IN A 199.254.55.1 +026130046D6F62690B6166696C6961732D6E737404696E666F00001C00010002A300001020010500002100000000000000000001 +a0.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:21::1 +026132046D6F62690B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97601 +a2.mobi.afilias-nst.info. 172800 IN A 199.249.118.1 +026132046D6F62690B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004600000000000000000001 +a2.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:46::1 +026330046D6F62690B6166696C6961732D6E737404696E666F00000100010002A3000004C7FE3901 +c0.mobi.afilias-nst.info. 172800 IN A 199.254.57.1 +026330046D6F62690B6166696C6961732D6E737404696E666F00001C00010002A300001020010500002300000000000000000001 +c0.mobi.afilias-nst.info. 172800 IN AAAA 2001:500:23::1 +026130036F72670B6166696C6961732D6E737404696E666F00000100010002A3000004C7133801 +a0.org.afilias-nst.info. 172800 IN A 199.19.56.1 +026130036F72670B6166696C6961732D6E737404696E666F00001C00010002A300001020010500000E00000000000000000001 +a0.org.afilias-nst.info. 172800 IN AAAA 2001:500:e::1 +026132036F72670B6166696C6961732D6E737404696E666F00000100010002A3000004C7F97001 +a2.org.afilias-nst.info. 172800 IN A 199.249.112.1 +026132036F72670B6166696C6961732D6E737404696E666F00001C00010002A300001020010500004000000000000000000001 +a2.org.afilias-nst.info. 172800 IN AAAA 2001:500:40::1 +026330036F72670B6166696C6961732D6E737404696E666F00000100010002A3000004C7133501 +c0.org.afilias-nst.info. 172800 IN A 199.19.53.1 +026330036F72670B6166696C6961732D6E737404696E666F00001C00010002A300001020010500000B00000000000000000001 +c0.org.afilias-nst.info. 172800 IN AAAA 2001:500:b::1 +02613004706F73740B6166696C6961732D6E737404696E666F00000100010002A300000441160001 +a0.post.afilias-nst.info. 172800 IN A 65.22.0.1 +02613004706F73740B6166696C6961732D6E737404696E666F00001C00010002A30000102A018840000000000000000000000001 +a0.post.afilias-nst.info. 172800 IN AAAA 2a01:8840::1 +02613204706F73740B6166696C6961732D6E737404696E666F00000100010002A300000441160401 +a2.post.afilias-nst.info. 172800 IN A 65.22.4.1 +02613204706F73740B6166696C6961732D6E737404696E666F00001C00010002A30000102A018840000400000000000000000001 +a2.post.afilias-nst.info. 172800 IN AAAA 2a01:8840:4::1 +02633004706F73740B6166696C6961732D6E737404696E666F00000100010002A300000441160201 +c0.post.afilias-nst.info. 172800 IN A 65.22.2.1 +02633004706F73740B6166696C6961732D6E737404696E666F00001C00010002A30000102A018840000200000000000000000001 +c0.post.afilias-nst.info. 172800 IN AAAA 2a01:8840:2::1 +0261300370726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7B60001 +a0.pro.afilias-nst.info. 172800 IN A 199.182.0.1 +0261300370726F0B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000C000000000000000000001 +a0.pro.afilias-nst.info. 172800 IN AAAA 2001:500:c0::1 +0261320370726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7B62001 +a2.pro.afilias-nst.info. 172800 IN A 199.182.32.1 +0261320370726F0B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000E000000000000000000001 +a2.pro.afilias-nst.info. 172800 IN AAAA 2001:500:e0::1 +0263300370726F0B6166696C6961732D6E737404696E666F00000100010002A3000004C7B61001 +c0.pro.afilias-nst.info. 172800 IN A 199.182.16.1 +0263300370726F0B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000D000000000000000000001 +c0.pro.afilias-nst.info. 172800 IN AAAA 2001:500:d0::1 +026130037878780B6166696C6961732D6E737404696E666F00000100010002A3000004C7739801 +a0.xxx.afilias-nst.info. 172800 IN A 199.115.152.1 +026130037878780B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000A000000000000000000001 +a0.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a0::1 +026132037878780B6166696C6961732D6E737404696E666F00000100010002A3000004C7739C01 +a2.xxx.afilias-nst.info. 172800 IN A 199.115.156.1 +026132037878780B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000A400000000000000000001 +a2.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a4::1 +026330037878780B6166696C6961732D6E737404696E666F00000100010002A3000004C7739A01 +c0.xxx.afilias-nst.info. 172800 IN A 199.115.154.1 +026330037878780B6166696C6961732D6E737404696E666F00001C00010002A30000102001050000A200000000000000000001 +c0.xxx.afilias-nst.info. 172800 IN AAAA 2001:500:a2::1 +03746C64076973632D736E7304696E666F00000100010002A300000448344703 +tld.isc-sns.info. 172800 IN A 72.52.71.3 +03746C64076973632D736E7304696E666F00001C00010002A300001020010470001A00000000000000000003 +tld.isc-sns.info. 172800 IN AAAA 2001:470:1a::3 +04746C643508756C747261646E7304696E666F00000100010002A3000004C0643B0B +tld5.ultradns.info. 172800 IN A 192.100.59.11 +09696E7374697475746500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +institute. 172800 IN NS demand.beta.aridns.net.au. +09696E7374697475746500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +institute. 172800 IN NS demand.alpha.aridns.net.au. +09696E7374697475746500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +institute. 172800 IN NS demand.delta.aridns.net.au. +09696E7374697475746500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +institute. 172800 IN NS demand.gamma.aridns.net.au. +09696E7374697475746500002B000100015180002482840802049FCBEE91ADA923921C8A4204D7AAA3CEABE0ABC33021385EB491D6CB865C15 +institute. 86400 IN DS 33412 8 2 049FCBEE91ADA923921C8A4204D7AAA3CEABE0ABC33021385EB491D6CB865C15 +09696E7374697475746500002E0001000151800093002B08010001518052F4220052EAD970837700827CB0F2AFA043E151574A5E0DBB8F6A803D252201B48E9EFDC77B8264F2CB0E6FB1FA9BFC3982CF26D133CC20EC1CEA97A412CF978738209117EEC3E8815D13C31103E1ADCEB1C8DEBF7695B75B4F81F689BC425A07D5EED80EE72DB102EB96C8F70EFADBD8BA4230324C17387728ABB3342C9EE1123C0BF6C1B3F0B1BB9ACA +institute. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gnyw8q+gQ+FRV0peDbuPaoA9JSIBtI6e/cd7gmTyyw5vsfqb/DmCzybRM8wg7Bzql6QSz5eHOCCRF+7D6IFdE8MRA+GtzrHI3r92lbdbT4H2ibxCWgfV7tgO5y2xAuuWyPcO+tvYukIwMkwXOHcoq7M0LJ7hEjwL9sGz8LG7mso= ;{id = 33655} +09696E7374697475746500002E0001000151800093002F08010001518052F4220052EAD970837700AD10E62EB3E846A30155B0E917303D0EB8C7C5A2CDAD07BF33B756FDAF849145ABDEB95F58020FCFF811D0B6D4D6F2AB015D4A9578E817E0CEDD3BB6B9BE3043CA0B5B65A8843EC872E70DBC45DE3BC46E0BCC19DF642C171B24CCFDBD4E4EE72177B14B74B56FCD5D1B7F10CEF472CAB3E40155DEA346143EB837C5482B274D +institute. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rRDmLrPoRqMBVbDpFzA9DrjHxaLNrQe/M7dW/a+EkUWr3rlfWAIPz/gR0LbU1vKrAV1KlXjoF+DO3Tu2ub4wQ8oLW2WohD7IcucNvEXeO8RuC8wZ32QsFxskzP29Tk7nIXexS3S1b81dG38QzvRyyrPkAVXeo0YUPrg3xUgrJ00= ;{id = 33655} +09696E7374697475746500002F000100015180000D03696E74000006200000000013 +institute. 86400 IN NSEC int. NS DS RRSIG NSEC +03696E7400000200010002A300000B026E73027575036E657400 +int. 172800 IN NS ns.uu.net. +03696E7400000200010002A300000E026E73056963616E6E036F726700 +int. 172800 IN NS ns.icann.org. +03696E7400000200010002A300000C036E7330026A61036E657400 +int. 172800 IN NS ns0.ja.net. +03696E7400000200010002A3000012036E73310263730375636C02616302756B00 +int. 172800 IN NS ns1.cs.ucl.ac.uk. +03696E7400000200010002A300001704736563320761757468646E730472697065036E657400 +int. 172800 IN NS sec2.authdns.ripe.net. +03696E7400002F00010001518000170D696E7465726E6174696F6E616C000006200000000003 +int. 86400 IN NSEC international. NS RRSIG NSEC +03696E7400002E0001000151800093002F08010001518052F4220052EAD9708377005B4BC72273592D41B60612E224E59CA4A182013B7BC6AB12E7ADA3AE5ED20BC8DE1B60A890970A5CD9BA16F03769FF21D308124280751B3C30893FEE24496FA831F3B9B57A0D3F7A9C4DC0ACB7384880F170B564F1F9A6349A5DA9C498371F0AD529929E81CA1BC211D43D1B5AB557FE26C4AC92F35ED095E8D7EAA5F3CE4F43 +int. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . W0vHInNZLUG2BhLiJOWcpKGCATt7xqsS562jrl7SC8jeG2CokJcKXNm6FvA3af8h0wgSQoB1GzwwiT/uJElvqDHzubV6DT96nE3ArLc4SIDxcLVk8fmmNJpdqcSYNx8K1SmSnoHKG8IR1D0bWrVX/ibErJLzXtCV6NfqpfPOT0M= ;{id = 33655} +0D696E7465726E6174696F6E616C00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +international. 172800 IN NS demand.beta.aridns.net.au. +0D696E7465726E6174696F6E616C00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +international. 172800 IN NS demand.alpha.aridns.net.au. +0D696E7465726E6174696F6E616C00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +international. 172800 IN NS demand.delta.aridns.net.au. +0D696E7465726E6174696F6E616C00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +international. 172800 IN NS demand.gamma.aridns.net.au. +0D696E7465726E6174696F6E616C00002B00010001518000242B810802F09799F34E9A973DBCF4C647D03C6A2C2E41976D04218F41B82ED6F8CCAFB2DC +international. 86400 IN DS 11137 8 2 F09799F34E9A973DBCF4C647D03C6A2C2E41976D04218F41B82ED6F8CCAFB2DC +0D696E7465726E6174696F6E616C00002E0001000151800093002B08010001518052F4220052EAD9708377005616174E557E1E116D2A65541412C76DD24CE5FA72B87546C287CEA609DE0FF367565A8BFA4805A308C51D74F3365EBD54357DA6EBF6E32550A989A3410FD5F450C53A3927351F41F11F5D00386887FA24BB7005DE474B0B7863136F3CF480F6C1F61DF7B0E095823090DB4D101A913680BB9F4723DFE79600D748D8D96F7C72 +international. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VhYXTlV+HhFtKmVUFBLHbdJM5fpyuHVGwofOpgneD/NnVlqL+kgFowjFHXTzNl69VDV9puv24yVQqYmjQQ/V9FDFOjknNR9B8R9dADhoh/oku3AF3kdLC3hjE2889ID2wfYd97DglYIwkNtNEBqRNoC7n0cj3+eWANdI2NlvfHI= ;{id = 33655} +0D696E7465726E6174696F6E616C00002E0001000151800093002F08010001518052F4220052EAD9708377001387BB59529D09638C57EC2157B1FDA535F65E2879E025BCE228442A118B5E2548F0D4D7039C3B090CAA868989A9CEA161CF6A3427F974370C05FAC31FA34B3EB8E0D6A38897085A6399C28A14B7E707A4EC3ADDF813FDBA0D505948150CADCA45D2485B5027C0C9DD849CF7DD2EF127D760C52A66D21447B465451437B24885 +international. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . E4e7WVKdCWOMV+whV7H9pTX2Xih54CW84ihEKhGLXiVI8NTXA5w7CQyqhomJqc6hYc9qNCf5dDcMBfrDH6NLPrjg1qOIlwhaY5nCihS35wek7Drd+BP9ug1QWUgVDK3KRdJIW1AnwMndhJz33S7xJ9dgxSpm0hRHtGVFFDeySIU= ;{id = 33655} +0D696E7465726E6174696F6E616C00002F000100015180000C02696F000006200000000013 +international. 86400 IN NSEC io. NS DS RRSIG NSEC +02696F00000200010002A300000A0161036E696302696F00 +io. 172800 IN NS a.nic.io. +02696F00000200010002A300000C0161046E733133036E657400 +io. 172800 IN NS a.ns13.net. +02696F00000200010002A300000A0162036E696302616300 +io. 172800 IN NS b.nic.ac. +02696F00000200010002A300000A0162036E696302696F00 +io. 172800 IN NS b.nic.io. +02696F00000200010002A300000C0162046E733133036E657400 +io. 172800 IN NS b.ns13.net. +02696F00000200010002A3000016036E73310C636F6D6D756E697479646E73036E657400 +io. 172800 IN NS ns1.communitydns.net. +02696F00000200010002A300000F036E73330369636202636F02756B00 +io. 172800 IN NS ns3.icb.co.uk. +02696F00002B000100015180001834530701C048489AEC2420E18F5F423192F132106C3691C1 +io. 86400 IN DS 13395 7 1 C048489AEC2420E18F5F423192F132106C3691C1 +02696F00002B000100015180002434530702070BBE5BE5A4BE6271C543BDE99E9981E5D4191740E531AF2585C5D1619C83F0 +io. 86400 IN DS 13395 7 2 070BBE5BE5A4BE6271C543BDE99E9981E5D4191740E531AF2585C5D1619C83F0 +02696F00002E0001000151800093002B08010001518052F4220052EAD9708377002E9DAF48DD47E7298FC36ACF43DDFF54590FFB28AECD7BCC8CA2B8625957FA0B335BC9A9E1ADBCC969FB62575C358D40C75319E8B67D560A6C5386371C4526A315504E3D1E1CCE4626BF65F1BC79F8F77C77C61DD7B23D980018F259ADD9CD50D5EA405EFFE2D678F7572CBEDB9A0CDCB9B48F05372DA7097E76A0148A5FA9E2 +io. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Lp2vSN1H5ymPw2rPQ93/VFkP+yiuzXvMjKK4YllX+gszW8mp4a28yWn7YldcNY1Ax1MZ6LZ9VgpsU4Y3HEUmoxVQTj0eHM5GJr9l8bx5+Pd8d8Yd17I9mAAY8lmt2c1Q1epAXv/i1nj3Vyy+25oM3Lm0jwU3LacJfnagFIpfqeI= ;{id = 33655} +02696F00002E0001000151800093002F08010001518052F4220052EAD97083770092CC01398DEE90830366A2CACFDE83E192E4E561407CB67A34F74B78D470D5AF86FF493728629373789FF661D103BC6028AC115BEE2252834B52BFFD1562FE1EAEDF673716BC3D3B28600BA972B0815EF850BB9DC9FA4CC3FFB62CCD282E5A889372B9F07323F0118A49588E1C2BC583A2E44BA0D8454FDD6D7EE20DC4ED7701 +io. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kswBOY3ukIMDZqLKz96D4ZLk5WFAfLZ6NPdLeNRw1a+G/0k3KGKTc3if9mHRA7xgKKwRW+4iUoNLUr/9FWL+Hq7fZzcWvD07KGALqXKwgV74ULudyfpMw/+2LM0oLlqIk3K58HMj8BGKSViOHCvFg6LkS6DYRU/dbX7iDcTtdwE= ;{id = 33655} +02696F00002F000100015180000C026971000006200000000013 +io. 86400 IN NSEC iq. NS DS RRSIG NSEC +0161036E696302696F00000100010002A300000440FB1FB3 +a.nic.io. 172800 IN A 64.251.31.179 +0162036E696302696F00000100010002A3000004C2000201 +b.nic.io. 172800 IN A 194.0.2.1 +0162036E696302696F00001C00010002A300001020010678000500000000000000000001 +b.nic.io. 172800 IN AAAA 2001:678:5::1 +02697100000200010002A300001502697103646E7305636F636361036F7267026E7A00 +iq. 172800 IN NS iq.dns.cocca.org.nz. +02697100000200010002A300000C036E733103636D6302697100 +iq. 172800 IN NS ns1.cmc.iq. +02697100000200010002A300001006736E732D706203697363036F726700 +iq. 172800 IN NS sns-pb.isc.org. +02697100000200010002A30000140B6E73702D616E796361737403636D6302697100 +iq. 172800 IN NS nsp-anycast.cmc.iq. +02697100002F000100015180000C026972000006200000000003 +iq. 86400 IN NSEC ir. NS RRSIG NSEC +02697100002E0001000151800093002F08010001518052F4220052EAD9708377001DE11CD4E6C2E17E37424FD869204E87DB6E17F2597330EEAD0534E47D3DF06CEF5E22701B528947BAAC20DAD487125D3F70C39B0B82842DBB4D03E1B3EFBEEDA976760DCA61CEAB271EF1D696E4978D2B1DCA2EF39AE86D9B32A5E94E46134E1B5E42664761C8D4BFCB0879CA528B3AFC96810AEC5DC32DBFF7842484E3112F +iq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HeEc1ObC4X43Qk/YaSBOh9tuF/JZczDurQU05H098GzvXiJwG1KJR7qsINrUhxJdP3DDmwuChC27TQPhs+++7al2dg3KYc6rJx7x1pbkl40rHcou85robZsypelORhNOG15CZkdhyNS/ywh5ylKLOvyWgQrsXcMtv/eEJITjES8= ;{id = 33655} +036E733103636D6302697100000100010002A3000004C2753964 +ns1.cmc.iq. 172800 IN A 194.117.57.100 +0B6E73702D616E796361737403636D6302697100000100010002A3000004C2753A2A +nsp-anycast.cmc.iq. 172800 IN A 194.117.58.42 +0B6E73702D616E796361737403636D6302697100001C00010002A3000010200105000014800100AD000000000042 +nsp-anycast.cmc.iq. 172800 IN AAAA 2001:500:14:8001:ad::42 +02697200000200010002A300000A0161036E696302697200 +ir. 172800 IN NS a.nic.ir. +02697200000200010002A300000D026E730569726E696302697200 +ir. 172800 IN NS ns.irnic.ir. +02697200000200010002A3000012036E733506756E6976696502616302617400 +ir. 172800 IN NS ns5.univie.ac.at. +02697200002F000100015180000C026973000006200000000003 +ir. 86400 IN NSEC is. NS RRSIG NSEC +02697200002E0001000151800093002F08010001518052F4220052EAD970837700A858345A1056BAAE57043919409C1CE888F85CB0F6CE1A2C50D6AABD8EE713542655283A299AE988BEBE5AFEF653FF8A98B1CCEA5A2E9570A93CC4D9FA1084083275A3207B6620EAE7D40199A5D8F530DCD618B366798586C57A46463C5424AD49111AD2099E2A9ABE1E0EBD0E8066F4E69784434794E8096C4BD34CC907280F +ir. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qFg0WhBWuq5XBDkZQJwc6Ij4XLD2zhosUNaqvY7nE1QmVSg6KZrpiL6+Wv72U/+KmLHM6loulXCpPMTZ+hCECDJ1oyB7ZiDq59QBmaXY9TDc1hizZnmFhsV6RkY8VCStSREa0gmeKpq+Hg69DoBm9OaXhENHlOgJbEvTTMkHKA8= ;{id = 33655} +026E730569726E696302697200000100010002A3000004C1BD7A53 +ns.irnic.ir. 172800 IN A 193.189.122.83 +0161036E696302697200000100010002A3000004C1BD7B02 +a.nic.ir. 172800 IN A 193.189.123.2 +02697300000200010002A300001B026973056363746C640761757468646E730472697065036E657400 +is. 172800 IN NS is.cctld.authdns.ripe.net. +02697300000200010002A300000E037361620569736E696302697300 +is. 172800 IN NS sab.isnic.is. +02697300000200010002A30000100573756E69630573756E657402736500 +is. 172800 IN NS sunic.sunet.se. +02697300000200010002A300001106647572696E6E0572686E657402697300 +is. 172800 IN NS durinn.rhnet.is. +02697300000200010002A300000B0669736761746502697300 +is. 172800 IN NS isgate.is. +02697300000200010002A300001006736E732D706203697363036F726700 +is. 172800 IN NS sns-pb.isc.org. +02697300002B000100015180001868660801B2416A62E8732568826213019E7F09AF108183CE +is. 86400 IN DS 26726 8 1 B2416A62E8732568826213019E7F09AF108183CE +02697300002B0001000151800024686608026984FEF569CFDB2CE00AFC62B5763AD50306EB0D4816A7C6CF921BF66B12245A +is. 86400 IN DS 26726 8 2 6984FEF569CFDB2CE00AFC62B5763AD50306EB0D4816A7C6CF921BF66B12245A +02697300002E0001000151800093002B08010001518052F4220052EAD970837700B3F176591D5CFD9AC72ABE0110120CF497F25C3C646FEF075F9E878268C3818569ABDDA5B329C99FD3B7709A69B12B5FDDD449E1E097804EE5082DB300BA368CB86D451793F950F33B25274390B49C95AFB57011504813F0F065FA67600E19A955AA2458F67F415F159E18676A0BE63FC71132C2B4BF4C03DAD25402B502FB8F +is. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s/F2WR1c/ZrHKr4BEBIM9JfyXDxkb+8HX56HgmjDgYVpq92lsynJn9O3cJppsStf3dRJ4eCXgE7lCC2zALo2jLhtRReT+VDzOyUnQ5C0nJWvtXARUEgT8PBl+mdgDhmpVaokWPZ/QV8VnhhnagvmP8cRMsK0v0wD2tJUArUC+48= ;{id = 33655} +02697300002E0001000151800093002F08010001518052F4220052EAD970837700B6326C65B514A200DBED37F3CAF80F145F2717AB47B6095BD230E4F995C0E8467444EFDA1F4BED2780B30BDCA08DF451E6A4C5604B392C8331A7F60B87CBD9F3AEE8C7DA7B902619AF586957AD96770C7E549B73F5D85AD9C0F8E67A21962DC8C77EBE288ECC8C6AFD9C61AA55D9276F8397E2B2A7644ECC3BB6C274F759AE76 +is. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tjJsZbUUogDb7TfzyvgPFF8nF6tHtglb0jDk+ZXA6EZ0RO/aH0vtJ4CzC9ygjfRR5qTFYEs5LIMxp/YLh8vZ867ox9p7kCYZr1hpV62Wdwx+VJtz9dha2cD45nohli3Ix36+KI7MjGr9nGGqVdknb4OX4rKnZE7MO7bCdPdZrnY= ;{id = 33655} +02697300002F000100015180000C026974000006200000000013 +is. 86400 IN NSEC it. NS DS RRSIG NSEC +0669736761746502697300000100010002A3000004C1043A33 +isgate.is. 172800 IN A 193.4.58.51 +0669736761746502697300001C00010002A30000102001067C006C00580000000000000051 +isgate.is. 172800 IN AAAA 2001:67c:6c:58::51 +037361620569736E696302697300000100010002A3000004C2926A3A +sab.isnic.is. 172800 IN A 194.146.106.58 +037361620569736E696302697300001C00010002A30000102001067C101000140000000000000053 +sab.isnic.is. 172800 IN AAAA 2001:67c:1010:14::53 +06647572696E6E0572686E657402697300000100010002A300000482D01014 +durinn.rhnet.is. 172800 IN A 130.208.16.20 +02697400002F000100015180000C026A65000006200000000003 +it. 86400 IN NSEC je. NS RRSIG NSEC +02697400002E0001000151800093002F08010001518052F4220052EAD9708377005DA4F5C999A6BB9DF16B494E7FC3A50073F45A9A2D293D645931B44E4184F3C88B11751034F1E6955CFAFD0B19C65AF72D181F78D8EA521A5D518376E41F89C760C1E7C34F35CAD77E6E44BDC113CE11049C9BB3E82B9D51483452920BFE1C29E89722BAF30AF1CCDA7A4A622A0661623830362D13B2B3EB67C2476277E9D444 +it. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XaT1yZmmu53xa0lOf8OlAHP0WpotKT1kWTG0TkGE88iLEXUQNPHmlVz6/QsZxlr3LRgfeNjqUhpdUYN25B+Jx2DB58NPNcrXfm5EvcETzhEEnJuz6CudUUg0UpIL/hwp6JciuvMK8czaekpiKgZhYjgwNi0TsrPrZ8JHYnfp1EQ= ;{id = 33655} +02697400000200010002A300000A016103646E7302697400 +it. 172800 IN NS a.dns.it. +02697400000200010002A300000A016303646E7302697400 +it. 172800 IN NS c.dns.it. +02697400000200010002A300000A016D03646E7302697400 +it. 172800 IN NS m.dns.it. +02697400000200010002A300000A017203646E7302697400 +it. 172800 IN NS r.dns.it. +02697400000200010002A300000C03646E73036E696302697400 +it. 172800 IN NS dns.nic.it. +02697400000200010002A30000130A6E616D6573657276657203636E7202697400 +it. 172800 IN NS nameserver.cnr.it. +056E732D616C046973746903636E7202697400000100010002A3000004C277C008 +ns-al.isti.cnr.it. 172800 IN A 194.119.192.8 +0A6E616D6573657276657203636E7202697400000100010002A3000004C277C022 +nameserver.cnr.it. 172800 IN A 194.119.192.34 +0A6E616D6573657276657203636E7202697400001C00010002A30000102A00162000C002200194011901920034 +nameserver.cnr.it. 172800 IN AAAA 2a00:1620:c0:220:194:119:192:34 +016103646E7302697400000100010002A3000004C20010D7 +a.dns.it. 172800 IN A 194.0.16.215 +016103646E7302697400001C00010002A300001020010678001200000194000000160215 +a.dns.it. 172800 IN AAAA 2001:678:12:0:194:0:16:215 +016303646E7302697400000100010002A3000004C2000116 +c.dns.it. 172800 IN A 194.0.1.22 +016303646E7302697400001C00010002A300001020010678000400000000000000000016 +c.dns.it. 172800 IN AAAA 2001:678:4::16 +016D03646E7302697400000100010002A3000004D91D4C04 +m.dns.it. 172800 IN A 217.29.76.4 +016D03646E7302697400001C00010002A300001020011AC0000002000000A5D160040002 +m.dns.it. 172800 IN AAAA 2001:1ac0:0:200:0:a5d1:6004:2 +017203646E7302697400000100010002A3000004C1CE8D2E +r.dns.it. 172800 IN A 193.206.141.46 +017203646E7302697400001C00010002A300001020010760FFFFFFFF00000000000000CA +r.dns.it. 172800 IN AAAA 2001:760:ffff:ffff::ca +066F7369726973056E616D657802697400000100010002A3000004C1C92806 +osiris.namex.it. 172800 IN A 193.201.40.6 +066F7369726973056E616D657802697400001C00010002A3000010200107F80010F00A0000000000000006 +osiris.namex.it. 172800 IN AAAA 2001:7f8:10:f00a::6 +0473657468056E616D657802697400000100010002A3000004C1C92807 +seth.namex.it. 172800 IN A 193.201.40.7 +0473657468056E616D657802697400001C00010002A3000010200107F80010F00A0000000000000007 +seth.namex.it. 172800 IN AAAA 2001:7f8:10:f00a::7 +03646E73036E696302697400000100010002A3000004C00CC005 +dns.nic.it. 172800 IN A 192.12.192.5 +03646E73036E696302697400001C00010002A30000102A000D40000100010000000000000005 +dns.nic.it. 172800 IN AAAA 2a00:d40:1:1::5 +026A6500000200010002A300001201610A63692D73657276657273036E657400 +je. 172800 IN NS a.ci-servers.net. +026A6500000200010002A300001201620A63692D73657276657273036F726700 +je. 172800 IN NS b.ci-servers.org. +026A6500000200010002A300001201630A63692D73657276657273036F726700 +je. 172800 IN NS c.ci-servers.org. +026A6500000200010002A300001101640A63692D73657276657273026A6500 +je. 172800 IN NS d.ci-servers.je. +026A6500000200010002A300001101650A63692D7365727665727302676700 +je. 172800 IN NS e.ci-servers.gg. +026A6500000200010002A300000C036E7330026A61036E657400 +je. 172800 IN NS ns0.ja.net. +026A6500000200010002A3000011046E73393903646E73036E6574026E7A00 +je. 172800 IN NS ns99.dns.net.nz. +026A6500002F000100015180000C026A6D000006200000000003 +je. 86400 IN NSEC jm. NS RRSIG NSEC +026A6500002E0001000151800093002F08010001518052F4220052EAD970837700BA8C779914B0CFC12FE2F01AB1CABDA3FEA0B8D0D840D50B7FDBC22826A45ED10A624D1F1D72089ADBBE0EED439E808B29680C4CF45C00116B7DA552456E57CF7D6B2E5AC972E351181408424BE6FBA44CE320D6D1AC64C6D01EB6B03F10527A7BF3890EA13DA6910713669BE153BEBBA54671ACE6F17339510233792A47B0A9 +je. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uox3mRSwz8Ev4vAascq9o/6guNDYQNULf9vCKCakXtEKYk0fHXIImtu+Du1DnoCLKWgMTPRcABFrfaVSRW5Xz31rLlrJcuNRGBQIQkvm+6RM4yDW0axkxtAetrA/EFJ6e/OJDqE9ppEHE2ab4VO+u6VGcazm8XM5UQIzeSpHsKk= ;{id = 33655} +01640A63692D73657276657273026A6500000100010002A3000004C1C92AB2 +d.ci-servers.je. 172800 IN A 193.201.42.178 +026A6D00000200010002A300001B026A6D056363746C640761757468646E730472697065036E657400 +jm. 172800 IN NS jm.cctld.authdns.ripe.net. +026A6D00000200010002A3000007026E73026A6D00 +jm. 172800 IN NS ns.jm. +026A6D00000200010002A3000018026E730C75746563686A616D6169636103656475026A6D00 +jm. 172800 IN NS ns.utechjamaica.edu.jm. +026A6D00000200010002A3000013066E73332D6A6D0366736C036F7267026A6D00 +jm. 172800 IN NS ns3-jm.fsl.org.jm. +026A6D00000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +jm. 172800 IN NS phloem.uoregon.edu. +026A6D00002F000100015180000C026A6F000006200000000003 +jm. 86400 IN NSEC jo. NS RRSIG NSEC +026A6D00002E0001000151800093002F08010001518052F4220052EAD9708377004742B0B3CB3DE9FD2337AA8D8D18F71BB1F8C9685DDD9D3D7E74665BE94EABE50B6906E13D334DFB50820818829AA1D5995AF5CE421D60736AC87B3AED1EF6EAF8FF9DA84F660628EE79DEAF2EE7A1BAC4B484D51B68D656B20607EE2DFEFA59CC4FEBD4CFF01D351D3392F5A7928B26233274A93B76DFB6656ABFD7C49B7001 +jm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . R0Kws8s96f0jN6qNjRj3G7H4yWhd3Z09fnRmW+lOq+ULaQbhPTNN+1CCCBiCmqHVmVr1zkIdYHNqyHs67R726vj/nahPZgYo7nnery7nobrEtITVG2jWVrIGB+4t/vpZzE/r1M/wHTUdM5L1p5KLJiMydKk7dt+2ZWq/18SbcAE= ;{id = 33655} +026E730C75746563686A616D6169636103656475026A6D00000100010002A3000004C8097302 +ns.utechjamaica.edu.jm. 172800 IN A 200.9.115.2 +026E73026A6D00000100010002A3000004C4020106 +ns.jm. 172800 IN A 196.2.1.6 +066E73332D6A6D0366736C036F7267026A6D00000100010002A3000004C403BF42 +ns3-jm.fsl.org.jm. 172800 IN A 196.3.191.66 +026A6F00000200010002A300001B026A6F056363746C640761757468646E730472697065036E657400 +jo. 172800 IN NS jo.cctld.authdns.ripe.net. +026A6F00000200010002A300000D037269700370736703636F6D00 +jo. 172800 IN NS rip.psg.com. +026A6F00000200010002A300001104616D7261036E696303676F76026A6F00 +jo. 172800 IN NS amra.nic.gov.jo. +026A6F00000200010002A3000012057065747261036E696303676F76026A6F00 +jo. 172800 IN NS petra.nic.gov.jo. +026A6F00000200010002A3000016096A6F7264616E317374036E696303676F76026A6F00 +jo. 172800 IN NS jordan1st.nic.gov.jo. +026A6F00002F000100015180000E046A6F6273000006200000000003 +jo. 86400 IN NSEC jobs. NS RRSIG NSEC +026A6F00002E0001000151800093002F08010001518052F4220052EAD97083770093274377A69B025DBE2A666676B5E46DCEF7DBBD2689FEBB1B585652DDF1C41C41C80842E2D69AAA20F6ED04AC7661EA87D2356453AAC735A8DB45A0897EE05FEECD00A6ECB1D07D3877ACA8624B60869DAF2DD252C55095E1085914389D349568B7E5E16A1F23EA46A51313A22272DA33A87EB27E1BDD6DB0E46D4F8F9D2C2B +jo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kydDd6abAl2+KmZmdrXkbc73270mif67G1hWUt3xxBxByAhC4taaqiD27QSsdmHqh9I1ZFOqxzWo20WgiX7gX+7NAKbssdB9OHesqGJLYIadry3SUsVQleEIWRQ4nTSVaLfl4WofI+pGpRMToiJy2jOofrJ+G91tsORtT4+dLCs= ;{id = 33655} +04616D7261036E696303676F76026A6F00000100010002A3000004C1BC4267 +amra.nic.gov.jo. 172800 IN A 193.188.66.103 +096A6F7264616E317374036E696303676F76026A6F00000100010002A3000004C1BC4513 +jordan1st.nic.gov.jo. 172800 IN A 193.188.69.19 +057065747261036E696303676F76026A6F00000100010002A3000004C1BC4202 +petra.nic.gov.jo. 172800 IN A 193.188.66.2 +046A6F627300000200010002A300000E026135056E73746C6403636F6D00 +jobs. 172800 IN NS a5.nstld.com. +046A6F627300000200010002A300000E026335056E73746C6403636F6D00 +jobs. 172800 IN NS c5.nstld.com. +046A6F627300000200010002A300000E026435056E73746C6403636F6D00 +jobs. 172800 IN NS d5.nstld.com. +046A6F627300000200010002A300000E026635056E73746C6403636F6D00 +jobs. 172800 IN NS f5.nstld.com. +046A6F627300000200010002A300000E026735056E73746C6403636F6D00 +jobs. 172800 IN NS g5.nstld.com. +046A6F627300000200010002A300000E026835056E73746C6403636F6D00 +jobs. 172800 IN NS h5.nstld.com. +046A6F627300000200010002A300000E026C35056E73746C6403636F6D00 +jobs. 172800 IN NS l5.nstld.com. +046A6F627300002F000100015180000C026A70000006200000000003 +jobs. 86400 IN NSEC jp. NS RRSIG NSEC +046A6F627300002E0001000151800093002F08010001518052F4220052EAD9708377001A12E5618E5F024749DBEEE341DC9AA386D04E7176AFFE7635A4423C8905C83D491A6339A4F5BEF576164EF204700EC47626DC299390461D0A80998039EB491C677728A75B20FACD94E9AE2FB8B5F007D47C12B8C339553F0F68FD6C4F147ADA757DD2B6A9304FBE99E99DE977F9FFD5B19D8339EFC304F55E0C34FB00909ED7 +jobs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GhLlYY5fAkdJ2+7jQdyao4bQTnF2r/52NaRCPIkFyD1JGmM5pPW+9XYWTvIEcA7EdibcKZOQRh0KgJmAOetJHGd3KKdbIPrNlOmuL7i18AfUfBK4wzlVPw9o/WxPFHradX3StqkwT76Z6Z3pd/n/1bGdgznvwwT1Xgw0+wCQntc= ;{id = 33655} +026A7000002F0001000151800010066B617566656E000006200000000013 +jp. 86400 IN NSEC kaufen. NS DS RRSIG NSEC +026A7000002E0001000151800093002F08010001518052F4220052EAD9708377008AEF1993DEBC2C0C565A76DC8976F3E2FBE9F154590C6D48C7EECDB4B156FB77C866B94FA077D01127891F7919C3C7CCA4224DCF15A647DF51EA3AE98E5DE188B5CDDCDBA5FEC29EA07406C77E6F783EC33ADBABBD18C2CD7FB96EFDC14231FC92F2CAFFFB0D2E94F52C6ADF18864263185634441F400038B9AEA9C142D864CD +jp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iu8Zk968LAxWWnbciXbz4vvp8VRZDG1Ix+7NtLFW+3fIZrlPoHfQESeJH3kZw8fMpCJNzxWmR99R6jrpjl3hiLXN3Nul/sKeoHQGx35veD7DOturvRjCzX+5bv3BQjH8kvLK//sNLpT1LGrfGIZCYxhWNEQfQAA4ua6pwULYZM0= ;{id = 33655} +026A7000002E0001000151800093002B08010001518052F4220052EAD970837700AE1DA71068F696C388143B7597FFD580FF797C1B0FBDDC0FFAC9B5E2D309819089B8C8CA2D70200D243330C5AC71FC08D9B9118CD1681358EC363411536F608E8485E33B41B73CB1587F2BF986612A7D3691CE59E0BA599143608465D8C8440833E466C82E8FDCA09D5298A62A83886A6E8C93E6391F1052DADA9A74F6B748F8 +jp. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . rh2nEGj2lsOIFDt1l//VgP95fBsPvdwP+sm14tMJgZCJuMjKLXAgDSQzMMWscfwI2bkRjNFoE1jsNjQRU29gjoSF4ztBtzyxWH8r+YZhKn02kc5Z4LpZkUNghGXYyEQIM+RmyC6P3KCdUpimKoOIam6Mk+Y5HxBS2tqadPa3SPg= ;{id = 33655} +026A7000000200010002A300000A016103646E73026A7000 +jp. 172800 IN NS a.dns.jp. +026A7000000200010002A300000A016203646E73026A7000 +jp. 172800 IN NS b.dns.jp. +026A7000000200010002A300000A016303646E73026A7000 +jp. 172800 IN NS c.dns.jp. +026A7000000200010002A300000A016403646E73026A7000 +jp. 172800 IN NS d.dns.jp. +026A7000000200010002A300000A016503646E73026A7000 +jp. 172800 IN NS e.dns.jp. +026A7000000200010002A300000A016603646E73026A7000 +jp. 172800 IN NS f.dns.jp. +026A7000000200010002A300000A016703646E73026A7000 +jp. 172800 IN NS g.dns.jp. +026A7000002B0001000151800018ED1C080196591579EBE5582AF021571AB2359D274A20E62F +jp. 86400 IN DS 60700 8 1 96591579EBE5582AF021571AB2359D274A20E62F +026A7000002B0001000151800024ED1C0802FC26CDBBDB18FAB2D9D0DA6933DA77D7384BE4BBC2DAF75AF9CE3CC99797C086 +jp. 86400 IN DS 60700 8 2 FC26CDBBDB18FAB2D9D0DA6933DA77D7384BE4BBC2DAF75AF9CE3CC99797C086 +046E7332300369696A026164026A7000000100010002A3000004CAE802A1 +ns20.iij.ad.jp. 172800 IN A 202.232.2.161 +046E7332300369696A026164026A7000001C00010002A300001020010240000000000000000000000161 +ns20.iij.ad.jp. 172800 IN AAAA 2001:240::161 +016103646E73026A7000000100010002A3000004CB770101 +a.dns.jp. 172800 IN A 203.119.1.1 +016103646E73026A7000001C00010002A300001020010DC4000000000000000000000001 +a.dns.jp. 172800 IN AAAA 2001:dc4::1 +016203646E73026A7000000100010002A3000004CA0C1E83 +b.dns.jp. 172800 IN A 202.12.30.131 +016203646E73026A7000001C00010002A300001020010DC2000000000000000000000001 +b.dns.jp. 172800 IN AAAA 2001:dc2::1 +016303646E73026A7000000100010002A30000049C9A6405 +c.dns.jp. 172800 IN A 156.154.100.5 +016303646E73026A7000001C00010002A300001020010502AD0900000000000000000005 +c.dns.jp. 172800 IN AAAA 2001:502:ad09::5 +016403646E73026A7000000100010002A3000004D28AAFF4 +d.dns.jp. 172800 IN A 210.138.175.244 +016403646E73026A7000001C00010002A300001020010240000000000000000000000053 +d.dns.jp. 172800 IN AAAA 2001:240::53 +016503646E73026A7000000100010002A3000004C0322B35 +e.dns.jp. 172800 IN A 192.50.43.53 +016503646E73026A7000001C00010002A300001020010200C00000000000000000000035 +e.dns.jp. 172800 IN AAAA 2001:200:c000::35 +016603646E73026A7000000100010002A300000496640608 +f.dns.jp. 172800 IN A 150.100.6.8 +016603646E73026A7000001C00010002A3000010200102F8000001000000000000000153 +f.dns.jp. 172800 IN AAAA 2001:2f8:0:100::153 +016703646E73026A7000000100010002A3000004CB772801 +g.dns.jp. 172800 IN A 203.119.40.1 +066B617566656E00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +kaufen. 172800 IN NS demand.beta.aridns.net.au. +066B617566656E00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +kaufen. 172800 IN NS demand.alpha.aridns.net.au. +066B617566656E00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +kaufen. 172800 IN NS demand.delta.aridns.net.au. +066B617566656E00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +kaufen. 172800 IN NS demand.gamma.aridns.net.au. +066B617566656E00002B00010001518000245D9A0802EF294C18A9BB33EE9D090585EF1C0F1575AA3F7A59CB07DBDDDE9CEC4D67BD93 +kaufen. 86400 IN DS 23962 8 2 EF294C18A9BB33EE9D090585EF1C0F1575AA3F7A59CB07DBDDDE9CEC4D67BD93 +066B617566656E00002E0001000151800093002B08010001518052F4220052EAD9708377000D8FECEC720ED000285C2EA0B52C051E3FE345E86BED373AF5717C5C506C8FE4200B452A8A71DA7AB780E30717B78826DB75D008DA55F3731D0A67FD8489805C5A2F2AA2B7E7BB455A267BB34880EC34A504D64DE1088C449057BBDDD124210BE4ACCD7C75CAB8D78967FC0D6B45FECC885F1D4311279842E054AF48C6038592 +kaufen. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . DY/s7HIO0AAoXC6gtSwFHj/jRehr7Tc69XF8XFBsj+QgC0UqinHaereA4wcXt4gm23XQCNpV83MdCmf9hImAXFovKqK357tFWiZ7s0iA7DSlBNZN4QiMRJBXu93RJCEL5KzNfHXKuNeJZ/wNa0X+zIhfHUMRJ5hC4FSvSMYDhZI= ;{id = 33655} +066B617566656E00002E0001000151800093002F08010001518052F4220052EAD970837700BD2FB1AFCB118AB3DDFE6CA1D1B0DE1F2F736397CF661576D02ED88A9E0ABB7664AAECE5903B1FE76BBDE9486320E9DFCD4AA4BD96ECEAB80EB3E3A75A1D921FB397EC749A32AE75C1AB7FC4187EADA3EF8D856D76E8478D6688288E7DE81AB07A2D98643C49334404CC599C3E1961767A049E4854AD08E9FF4DBE397A4098DC +kaufen. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vS+xr8sRirPd/myh0bDeHy9zY5fPZhV20C7Yip4Ku3ZkquzlkDsf52u96UhjIOnfzUqkvZbs6rgOs+OnWh2SH7OX7HSaMq51wat/xBh+raPvjYVtduhHjWaIKI596Bqwei2YZDxJM0QEzFmcPhlhdnoEnkhUrQjp/02+OXpAmNw= ;{id = 33655} +066B617566656E00002F000100015180000C026B65000006200000000013 +kaufen. 86400 IN NSEC ke. NS DS RRSIG NSEC +026B6500000200010002A3000018026E7307616E7963617374056B656E6963026F72026B6500 +ke. 172800 IN NS ns.anycast.kenic.or.ke. +026B6500000200010002A3000011036E733104636F7A61036E6574027A6100 +ke. 172800 IN NS ns1.coza.net.za. +026B6500000200010002A3000013056D7A697A69056B656E6963026F72026B6500 +ke. 172800 IN NS mzizi.kenic.or.ke. +026B6500000200010002A3000013056E732D6B6507616672696E6963036E657400 +ke. 172800 IN NS ns-ke.afrinic.net. +026B6500002F000100015180000C026B67000006200000000003 +ke. 86400 IN NSEC kg. NS RRSIG NSEC +026B6500002E0001000151800093002F08010001518052F4220052EAD97083770014F89E5331D38EA09C31E71505F737C867E0587A29EA0123105B2F3B34E971568D04C23187C2A98588428ACF715AF3A707D211C81A52588650B541E253A6DF84333707F7D09A64075094AE5BED494233E7C30FDB989A159C227F8DE851579689D5D315EDA321BC2C1FFAE30138046DDC4A6B534F6C5F59C29444553636A93C48 +ke. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FPieUzHTjqCcMecVBfc3yGfgWHop6gEjEFsvOzTpcVaNBMIxh8KphYhCis9xWvOnB9IRyBpSWIZQtUHiU6bfhDM3B/fQmmQHUJSuW+1JQjPnww/bmJoVnCJ/jehRV5aJ1dMV7aMhvCwf+uMBOARt3EprU09sX1nClERVNjapPEg= ;{id = 33655} +026E7307616E7963617374056B656E6963026F72026B6500000100010002A3000004CC3DD807 +ns.anycast.kenic.or.ke. 172800 IN A 204.61.216.7 +026E7307616E7963617374056B656E6963026F72026B6500001C00010002A3000010200105000014600700AD000000000001 +ns.anycast.kenic.or.ke. 172800 IN AAAA 2001:500:14:6007:ad::1 +056D7A697A69056B656E6963026F72026B6500000100010002A3000004C4010482 +mzizi.kenic.or.ke. 172800 IN A 196.1.4.130 +056D7A697A69056B656E6963026F72026B6500000100010002A3000004C6204309 +mzizi.kenic.or.ke. 172800 IN A 198.32.67.9 +026B6700000200010002A300001B026B67056363746C640761757468646E730472697065036E657400 +kg. 172800 IN NS kg.cctld.authdns.ripe.net. +026B6700000200010002A3000007026E73026B6700 +kg. 172800 IN NS ns.kg. +026B6700002B0001000151800018C3220501285C47CA00E9416E0C6BD6F7317BF57B0EE1CC7D +kg. 86400 IN DS 49954 5 1 285C47CA00E9416E0C6BD6F7317BF57B0EE1CC7D +026B6700002B0001000151800024C32205029166CA43B29F27BC7CC8B758F7027724EA2B860DBE49CF08A2763EA0E95E8754 +kg. 86400 IN DS 49954 5 2 9166CA43B29F27BC7CC8B758F7027724EA2B860DBE49CF08A2763EA0E95E8754 +026B6700002E0001000151800093002B08010001518052F4220052EAD9708377008936CBDA36AE705DA31651F76845C568E095EA9462A2F763DB599DB85A9DE657D114CE4EA51BEF9C3EEEB5D065893777CDEEA106A5E0589E545349BC12AA7E4161DA058E2D0A2F402F19EB2BE84D75731A9B46F373294F831BA6F56F5138A2A6277D7F9E4E9D2358153EE68ECE0FE5730F74DCE8C512666B25D4BF50D2E56E00 +kg. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iTbL2jaucF2jFlH3aEXFaOCV6pRiovdj21mduFqd5lfRFM5OpRvvnD7utdBliTd3ze6hBqXgWJ5UU0m8Eqp+QWHaBY4tCi9ALxnrK+hNdXMam0bzcylPgxum9W9ROKKmJ31/nk6dI1gVPuaOzg/lcw903OjFEmZrJdS/UNLlbgA= ;{id = 33655} +026B6700002E0001000151800093002F08010001518052F4220052EAD9708377009CAE5758502BB9F0A11C3D929732C1B8437ECF559923724CED0F100C1CB47751C75547CBA97D7B7BDA98FFED1B6A515FDFC4AD228530261A8618CF61A0CD97D32C184CEC35A410B23F17F42C14E7C24E17E8A5D5FA08A1E06ECE1AE9FE08FA9B2F6DB99A003CECB79E20658FFED9800A29A601DD6193F7D9205A86394BC43413 +kg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nK5XWFArufChHD2SlzLBuEN+z1WZI3JM7Q8QDBy0d1HHVUfLqX17e9qY/+0balFf38StIoUwJhqGGM9hoM2X0ywYTOw1pBCyPxf0LBTnwk4X6KXV+gih4G7OGun+CPqbL225mgA87LeeIGWP/tmACimmAd1hk/fZIFqGOUvENBM= ;{id = 33655} +026B6700002F000100015180000C026B68000006200000000013 +kg. 86400 IN NSEC kh. NS DS RRSIG NSEC +026E73026B6700000100010002A3000004C326A024 +ns.kg. 172800 IN A 195.38.160.36 +026B6800000200010002A3000012026E730663616D6E657403636F6D026B6800 +kh. 172800 IN NS ns.camnet.com.kh. +026B6800000200010002A3000014026E730874656C657375726603636F6D026B6800 +kh. 172800 IN NS ns.telesurf.com.kh. +026B6800000200010002A3000010036E733103646E73036E6574026B6800 +kh. 172800 IN NS ns1.dns.net.kh. +026B6800000200010002A300001404646E7331066F6E6C696E6503636F6D026B6800 +kh. 172800 IN NS dns1.online.com.kh. +026B6800000200010002A300001004736563330561706E6963036E657400 +kh. 172800 IN NS sec3.apnic.net. +026B6800000200010002A3000010056E732D6B680472697065036E657400 +kh. 172800 IN NS ns-kh.ripe.net. +026B6800002F000100015180000C026B69000006200000000003 +kh. 86400 IN NSEC ki. NS RRSIG NSEC +026B6800002E0001000151800093002F08010001518052F4220052EAD9708377003BCBFB316DB8F18B3DA4E7DFEADBEF9276167D5B5CCDD5CB6324115A25870BD4326313EC8A2FAD4CBA878AE455C1A6BB173A6A77446FE84517365D98B8EB02A42B9DEABDBC75D050D33F8AA4450C12D491122842DD6E8CD4CE34799DE1ACB6C30DEE015141E98D3B2E410675DBEA8734DC0E6A3E53105698D42CE576BC344432 +kh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . O8v7MW248Ys9pOff6tvvknYWfVtczdXLYyQRWiWHC9QyYxPsii+tTLqHiuRVwaa7Fzpqd0Rv6EUXNl2YuOsCpCud6r28ddBQ0z+KpEUMEtSREihC3W6M1M40eZ3hrLbDDe4BUUHpjTsuQQZ12+qHNNwOaj5TEFaY1Czldrw0RDI= ;{id = 33655} +026E730663616D6E657403636F6D026B6800000100010002A3000004CBDF2003 +ns.camnet.com.kh. 172800 IN A 203.223.32.3 +04646E7331066F6E6C696E6503636F6D026B6800000100010002A3000004CBBD8001 +dns1.online.com.kh. 172800 IN A 203.189.128.1 +026E730874656C657375726603636F6D026B6800000100010002A3000004CB904103 +ns.telesurf.com.kh. 172800 IN A 203.144.65.3 +036E733103646E73036E6574026B6800000100010002A3000004CBDF2015 +ns1.dns.net.kh. 172800 IN A 203.223.32.21 +026B6900000200010002A3000010036B69310664796E746C64036E657400 +ki. 172800 IN NS ki1.dyntld.net. +026B6900000200010002A3000010036B69330664796E746C64036E657400 +ki. 172800 IN NS ki3.dyntld.net. +026B6900000200010002A300000C03706368036E6963026B6900 +ki. 172800 IN NS pch.nic.ki. +026B6900000200010002A300001006736E732D706203697363036F726700 +ki. 172800 IN NS sns-pb.isc.org. +026B6900002B0001000151800024E8940802FD3B27E5C171B883FE2815DDE7FBBE7F2E5AF826BFF47C33B5970F53E2A855DE +ki. 86400 IN DS 59540 8 2 FD3B27E5C171B883FE2815DDE7FBBE7F2E5AF826BFF47C33B5970F53E2A855DE +026B6900002E0001000151800093002B08010001518052F4220052EAD9708377001877F890A592B558C22FC511C4B6EB75F6121E4A4863337F557BAF5CEF2861E5FC244E4B96362E47B0999DE75333460D784CC2A1D6D3E8236B84D8A94FE87853F6E6FA096142706C37369D17E65EB269C2B84EBFCEDC54F0E8731D8DB504D785DEC9CCD478FFE244895DABCAA41AE31E816640150327FC1378AF14F6E2259002 +ki. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GHf4kKWStVjCL8URxLbrdfYSHkpIYzN/VXuvXO8oYeX8JE5LljYuR7CZnedTM0YNeEzCodbT6CNrhNipT+h4U/bm+glhQnBsNzadF+ZesmnCuE6/ztxU8OhzHY21BNeF3snM1Hj/4kSJXavKpBrjHoFmQBUDJ/wTeK8U9uIlkAI= ;{id = 33655} +026B6900002E0001000151800093002F08010001518052F4220052EAD9708377002B65491AACB4BEBBC8C615F18764002ED074BE34D172658B001D318999E1369FF237B0EC82E3D82A38CA1E20E0CCA2D17C89C587E456678E7B444FD7823D7EBCAE41F4502BC1D991B3F20C75BB03974000A9544FD79F861D1D40A676033D5AFE0FA209C279266C861F996DF2FE485CD923FF12077C2BDFA9DCE41A327AE6628D +ki. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K2VJGqy0vrvIxhXxh2QALtB0vjTRcmWLAB0xiZnhNp/yN7DsguPYKjjKHiDgzKLRfInFh+RWZ457RE/Xgj1+vK5B9FArwdmRs/IMdbsDl0AAqVRP15+GHR1ApnYDPVr+D6IJwnkmbIYfmW3y/khc2SP/Egd8K9+p3OQaMnrmYo0= ;{id = 33655} +026B6900002F000100015180000D036B696D000006200000000013 +ki. 86400 IN NSEC kim. NS DS RRSIG NSEC +03706368036E6963026B6900000100010002A3000004CC3DD81A +pch.nic.ki. 172800 IN A 204.61.216.26 +03706368036E6963026B6900001C00010002A3000010200105000014602600AD000000000001 +pch.nic.ki. 172800 IN AAAA 2001:500:14:6026:ad::1 +036B696D00000200010002A300000C026130036E6963036B696D00 +kim. 172800 IN NS a0.nic.kim. +036B696D00000200010002A300000C026132036E6963036B696D00 +kim. 172800 IN NS a2.nic.kim. +036B696D00000200010002A300000C026230036E6963036B696D00 +kim. 172800 IN NS b0.nic.kim. +036B696D00000200010002A300000C026330036E6963036B696D00 +kim. 172800 IN NS c0.nic.kim. +036B696D00002B00010001518000185F9A07012DD484EEF79401CBFCA231E6CBF4F1BB165CCE14 +kim. 86400 IN DS 24474 7 1 2DD484EEF79401CBFCA231E6CBF4F1BB165CCE14 +036B696D00002B00010001518000245F9A07022384A0380782DA192D1C1F6DA55A106551EF4C5233CD479536101921D35411E5 +kim. 86400 IN DS 24474 7 2 2384A0380782DA192D1C1F6DA55A106551EF4C5233CD479536101921D35411E5 +036B696D00002E0001000151800093002B08010001518052F4220052EAD9708377001C8D596EA78C3F453CACA4F1BAD2032CB3E0ACF1DEAB04216DCE8C660754B38F5AF459863B8967C5983B22C51DF57644D5FC56CA6596E054AF23E77C0EDC061C1EE5A8A5C0FB189A35FFA34AA8607E52B84089C0AAB89D5A0F6872850F2B3E326487A39A93C43E365BB5803E3D8BE84B9D48F805F335F04C4D128436035C9DF0 +kim. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HI1ZbqeMP0U8rKTxutIDLLPgrPHeqwQhbc6MZgdUs49a9FmGO4lnxZg7IsUd9XZE1fxWymWW4FSvI+d8DtwGHB7lqKXA+xiaNf+jSqhgflK4QInAqridWg9ocoUPKz4yZIejmpPEPjZbtYA+PYvoS51I+AXzNfBMTRKENgNcnfA= ;{id = 33655} +036B696D00002E0001000151800093002F08010001518052F4220052EAD970837700978A7AC12CAD840C7C095BAAFAAB07218F9C9F3C5C53CF213BC21DA6DFC4E303F833BC8827800D46117D4FD1EE2A7EF06431D3C13EE686C97C06E87F4158683AFA085ECAF0FFD321924AD6E0993C63509543B77B90428DDE3E18F849D06B0384E9E7CBB90DB6C4161FE4627951DF0447A37572429229A075CEA0AC0813441566 +kim. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l4p6wSythAx8CVuq+qsHIY+cnzxcU88hO8Idpt/E4wP4M7yIJ4ANRhF9T9HuKn7wZDHTwT7mhsl8Buh/QVhoOvoIXsrw/9MhkkrW4Jk8Y1CVQ7d7kEKN3j4Y+EnQawOE6efLuQ22xBYf5GJ5Ud8ER6N1ckKSKaB1zqCsCBNEFWY= ;{id = 33655} +036B696D00002F0001000151800011076B69746368656E000006200000000013 +kim. 86400 IN NSEC kitchen. NS DS RRSIG NSEC +026130036E6963036B696D00000100010002A300000441161C01 +a0.nic.kim. 172800 IN A 65.22.28.1 +026130036E6963036B696D00001C00010002A30000102A018840001E00000000000000000001 +a0.nic.kim. 172800 IN AAAA 2a01:8840:1e::1 +026132036E6963036B696D00000100010002A300000441161F01 +a2.nic.kim. 172800 IN A 65.22.31.1 +026132036E6963036B696D00001C00010002A30000102A018840002100000000000000000001 +a2.nic.kim. 172800 IN AAAA 2a01:8840:21::1 +026230036E6963036B696D00000100010002A300000441161D01 +b0.nic.kim. 172800 IN A 65.22.29.1 +026230036E6963036B696D00001C00010002A30000102A018840001F00000000000000000001 +b0.nic.kim. 172800 IN AAAA 2a01:8840:1f::1 +026330036E6963036B696D00000100010002A300000441161E01 +c0.nic.kim. 172800 IN A 65.22.30.1 +026330036E6963036B696D00001C00010002A30000102A018840002000000000000000000001 +c0.nic.kim. 172800 IN AAAA 2a01:8840:20::1 +076B69746368656E00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +kitchen. 172800 IN NS demand.beta.aridns.net.au. +076B69746368656E00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +kitchen. 172800 IN NS demand.alpha.aridns.net.au. +076B69746368656E00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +kitchen. 172800 IN NS demand.delta.aridns.net.au. +076B69746368656E00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +kitchen. 172800 IN NS demand.gamma.aridns.net.au. +076B69746368656E00002B0001000151800024FA0908024B1DD622AF68E8DC6E5CBB00AFE42399B8A15591891203D4B745EF0FA03EA2C9 +kitchen. 86400 IN DS 64009 8 2 4B1DD622AF68E8DC6E5CBB00AFE42399B8A15591891203D4B745EF0FA03EA2C9 +076B69746368656E00002E0001000151800093002B08010001518052F4220052EAD970837700A99C824954D9DD72466989B6FA56BC7D3A3AF321978E3184CCFA1955ED8680A97547CA56F1B6A652FC187132354463CFD6E28AA98174C064E08BD6FE38AF55CC198EFD4683E22090E76DFF453375CDEB7C38C5BBB2817DAC9CE18CACBFACCD7A41E9F92FBBD8ACE425D5C9FE36D2F264E541C52BD25FA660F65246052E802AF3 +kitchen. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qZyCSVTZ3XJGaYm2+la8fTo68yGXjjGEzPoZVe2GgKl1R8pW8bamUvwYcTI1RGPP1uKKqYF0wGTgi9b+OK9VzBmO/UaD4iCQ523/RTN1zet8OMW7soF9rJzhjKy/rM16Qen5L7vYrOQl1cn+NtLyZOVBxSvSX6Zg9lJGBS6AKvM= ;{id = 33655} +076B69746368656E00002E0001000151800093002F08010001518052F4220052EAD9708377009B760542BD492803A2D51F8AFEBC3B15B4251755D4A31B29B2C38DE59EDB5EB068A80AB31A966E4DC7F81EF3024C18E147FD729AC6AE910080E1D6416AC695E399F457FAFD445A4450A5523010C1D5A19213DB801CECC0BD609D15F529647A9F89DC204E3628ABBA3070528D3ED20625603B8253D391E6A35964C26BB1CC6DC3 +kitchen. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . m3YFQr1JKAOi1R+K/rw7FbQlF1XUoxspssON5Z7bXrBoqAqzGpZuTcf4HvMCTBjhR/1ymsaukQCA4dZBasaV45n0V/r9RFpEUKVSMBDB1aGSE9uAHOzAvWCdFfUpZHqfidwgTjYoq7owcFKNPtIGJWA7glPTkeajWWTCa7HMbcM= ;{id = 33655} +076B69746368656E00002F000100015180000E046B697769000006200000000013 +kitchen. 86400 IN NSEC kiwi. NS DS RRSIG NSEC +046B69776900000200010002A300000F0161026E73036E6963046B69776900 +kiwi. 172800 IN NS a.ns.nic.kiwi. +046B69776900000200010002A300000F0162026E73036E6963046B69776900 +kiwi. 172800 IN NS b.ns.nic.kiwi. +046B69776900002B0001000151800024169A0802ADFED621AFE74743D01AF9CD0F380F4F95EF756080321CD541A1D6B31B3FDD30 +kiwi. 86400 IN DS 5786 8 2 ADFED621AFE74743D01AF9CD0F380F4F95EF756080321CD541A1D6B31B3FDD30 +046B69776900002E0001000151800093002B08010001518052F4220052EAD9708377007E35A32BB11738BFA9D9E60B27062D3DFE621E2AD9C8905970399432149ACFFC3FD9E0DDB5B209C8AC6DA5D975463F2F01D5623D7A4B2135704862AA30E9D5D6E08740EEB9791330EEEFC2B8AA4DB5DFC516C8421A355088DBE51FF9E52ADD8EAEF6DB9D35F893046C58AE2DE23765B31124030D4C8E8609144843F8BD1B8A9A +kiwi. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fjWjK7EXOL+p2eYLJwYtPf5iHirZyJBZcDmUMhSaz/w/2eDdtbIJyKxtpdl1Rj8vAdViPXpLITVwSGKqMOnV1uCHQO65eRMw7u/CuKpNtd/FFshCGjVQiNvlH/nlKt2OrvbbnTX4kwRsWK4t4jdlsxEkAw1MjoYJFEhD+L0bipo= ;{id = 33655} +046B69776900002E0001000151800093002F08010001518052F4220052EAD970837700BCE9827878741D33C023336A12DE32607A86B85AA499923873381C53D5EF3ECC141BAA5CB45DA0708DB7594D400D6D31700B1FAC94DBE30BAB613DF1ED76D8FF1C8E67D52D1C8D859B7C4C69B06C277BF00BC61877CF8398D11CB4B88253405FBCE07C6B97724E13268EE74E2F65E015C62E34301B9738E383391A0C22EA2A36 +kiwi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vOmCeHh0HTPAIzNqEt4yYHqGuFqkmZI4czgcU9XvPswUG6pctF2gcI23WU1ADW0xcAsfrJTb4wurYT3x7XbY/xyOZ9UtHI2Fm3xMabBsJ3vwC8YYd8+DmNEctLiCU0BfvOB8a5dyThMmjudOL2XgFcYuNDAblzjjgzkaDCLqKjY= ;{id = 33655} +046B69776900002F000100015180000C026B6D000006200000000013 +kiwi. 86400 IN NSEC km. NS DS RRSIG NSEC +0161026E73036E6963046B69776900000100010002A300000448003204 +a.ns.nic.kiwi. 172800 IN A 72.0.50.4 +0161026E73036E6963046B69776900001C00010002A3000010262001710A0200AD0000000000000004 +a.ns.nic.kiwi. 172800 IN AAAA 2620:171:a02:ad::4 +0162026E73036E6963046B69776900000100010002A3000004482A7204 +b.ns.nic.kiwi. 172800 IN A 72.42.114.4 +0162026E73036E6963046B69776900001C00010002A3000010262001710D0200DC0000000000000004 +b.ns.nic.kiwi. 172800 IN AAAA 2620:171:d02:dc::4 +026B6D00000200010002A300000D04646E7331036E6963026B6D00 +km. 172800 IN NS dns1.nic.km. +026B6D00000200010002A300000D04646E7332036E6963026B6D00 +km. 172800 IN NS dns2.nic.km. +026B6D00000200010002A3000013056E732D6B6D07616672696E6963036E657400 +km. 172800 IN NS ns-km.afrinic.net. +026B6D00002F000100015180000C026B6E000006200000000003 +km. 86400 IN NSEC kn. NS RRSIG NSEC +026B6D00002E0001000151800093002F08010001518052F4220052EAD970837700384ECC4183607F4DF416A58319690A69D97539EEF639954CEFA7043B6DEDC68AFA7A2B6D3631E7CDF652DC543B25EF2D54D7E86708392E8745D780FD90DABD85639FE3A4D39014BB9868BF0BBBAE8EF90130389262823D0F7F6CC6D9D0E44C79D785F64888F74870F7816BB23F55D96A2438344800D0B995497733447CC48D89 +km. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OE7MQYNgf030FqWDGWkKadl1Oe72OZVM76cEO23txor6eittNjHnzfZS3FQ7Je8tVNfoZwg5LodF14D9kNq9hWOf46TTkBS7mGi/C7uujvkBMDiSYoI9D39sxtnQ5Ex514X2SIj3SHD3gWuyP1XZaiQ4NEgA0LmVSXczRHzEjYk= ;{id = 33655} +04646E7331036E6963026B6D00000100010002A3000004C5FFE012 +dns1.nic.km. 172800 IN A 197.255.224.18 +04646E7332036E6963026B6D00000100010002A3000004C5FFE042 +dns2.nic.km. 172800 IN A 197.255.224.66 +026B6E00000200010002A300000A016103646E7302747700 +kn. 172800 IN NS a.dns.tw. +026B6E00000200010002A300000A016203646E7302747700 +kn. 172800 IN NS b.dns.tw. +026B6E00000200010002A300000A016303646E7302747700 +kn. 172800 IN NS c.dns.tw. +026B6E00002F000100015180000C026B70000006200000000003 +kn. 86400 IN NSEC kp. NS RRSIG NSEC +026B6E00002E0001000151800093002F08010001518052F4220052EAD9708377003883916C773801CFA76947038564491B0FC3476719A6C04FB1DB45F7B4975BE381C6EB66A92A679111399179485A4EDFD5133F4E3BBFF2E4C530E87B51D1292AFF19C15104C73CA9D2533312A8F11BCB1A41FF1EF0EAC406F6720CE21FAC8D6B8DBA1086998990AFE8B5E9198A85ADA78BED33EBCAD2202FCE6A22A44FC9D04C +kn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OIORbHc4Ac+naUcDhWRJGw/DR2cZpsBPsdtF97SXW+OBxutmqSpnkRE5kXlIWk7f1RM/Tju/8uTFMOh7UdEpKv8ZwVEExzyp0lMzEqjxG8saQf8e8OrEBvZyDOIfrI1rjboQhpmJkK/otekZioWtp4vtM+vK0iAvzmoipE/J0Ew= ;{id = 33655} +026B7000000200010002A300000D036E7331046B707463026B7000 +kp. 172800 IN NS ns1.kptc.kp. +026B7000000200010002A300000D036E7332046B707463026B7000 +kp. 172800 IN NS ns2.kptc.kp. +026B7000002F000100015180000C026B72000006200000000003 +kp. 86400 IN NSEC kr. NS RRSIG NSEC +026B7000002E0001000151800093002F08010001518052F4220052EAD9708377001E72268939F6EFEDDC9B815604C78E9327EB1F44C4716C8ACE10C80D7295D356658552EC0D9339D3B1F46EB320D7759E36E492037BC8BE54B3B7003F0D6141D4AE2AC4AFF6A545BFBAA3686FBB5565E4D196A6054867D8D11F836C0ADBB298A49582F7165644989FBF17A01D90D175CC2EB36B6C71BD581C81024B2550807D4B +kp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HnImiTn27+3cm4FWBMeOkyfrH0TEcWyKzhDIDXKV01ZlhVLsDZM507H0brMg13WeNuSSA3vIvlSztwA/DWFB1K4qxK/2pUW/uqNob7tVZeTRlqYFSGfY0R+DbArbspiklYL3FlZEmJ+/F6AdkNF1zC6za2xxvVgcgQJLJVCAfUs= ;{id = 33655} +036E7331046B707463026B7000000100010002A3000004AF2DB00F +ns1.kptc.kp. 172800 IN A 175.45.176.15 +036E7332046B707463026B7000000100010002A3000004AF2DB010 +ns2.kptc.kp. 172800 IN A 175.45.176.16 +026B7200000200010002A300000A016203646E73026B7200 +kr. 172800 IN NS b.dns.kr. +026B7200000200010002A300000A016303646E73026B7200 +kr. 172800 IN NS c.dns.kr. +026B7200000200010002A300000A016403646E73026B7200 +kr. 172800 IN NS d.dns.kr. +026B7200000200010002A300000A016503646E73026B7200 +kr. 172800 IN NS e.dns.kr. +026B7200000200010002A300000A016603646E73026B7200 +kr. 172800 IN NS f.dns.kr. +026B7200000200010002A300000A016703646E73026B7200 +kr. 172800 IN NS g.dns.kr. +026B7200002B000100015180002429FA0702A626C147CF76351B03CD26C03EBCC78C0DE48D87DD81F0919995824336236F96 +kr. 86400 IN DS 10746 7 2 A626C147CF76351B03CD26C03EBCC78C0DE48D87DD81F0919995824336236F96 +026B7200002B000100015180002444D90702FB939059F4B67BBA1E8AC37E35811E506488B2D8CFF807AF873B2116B5676B5C +kr. 86400 IN DS 17625 7 2 FB939059F4B67BBA1E8AC37E35811E506488B2D8CFF807AF873B2116B5676B5C +026B7200002E0001000151800093002B08010001518052F4220052EAD9708377008C838F7F55DDCEFF388634B33D6F81DB86231CB7DF68ECBF740E63CD5A8BFE94B84238FCB66B1C71D22F40563EBEB5AD5E15D94867F0D0B1ACC357942A83D8DD51F1343BD4A58B6032C46BD4DCF62665D06B5FB0EEB530791E380B8F6850C36B0EDCD6AE292AC44B0A089003367DEA9FF0D012DDEC9CF34D381A38C659A64F60 +kr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jIOPf1Xdzv84hjSzPW+B24YjHLffaOy/dA5jzVqL/pS4Qjj8tmsccdIvQFY+vrWtXhXZSGfw0LGsw1eUKoPY3VHxNDvUpYtgMsRr1Nz2JmXQa1+w7rUweR44C49oUMNrDtzWrikqxEsKCJADNn3qn/DQEt3snPNNOBo4xlmmT2A= ;{id = 33655} +026B7200002E0001000151800093002F08010001518052F4220052EAD970837700201AB4AA2BDED32000B0175B6F6B843808ADFD029A3351FEBD6A1A47DAFF8D9ADB1DAD91A79614B837FAB3D95C35A926D012132ED073FE46E799AD3F741D1837C64021C8F350D1414AA678AD520BD8CF905C54A0589042CE5E7D36A696B1125293A76BE647F4FD17A9C7A023234E83FA78531BB7DAE6C2429A090AB18B387280 +kr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IBq0qive0yAAsBdbb2uEOAit/QKaM1H+vWoaR9r/jZrbHa2Rp5YUuDf6s9lcNakm0BITLtBz/kbnma0/dB0YN8ZAIcjzUNFBSqZ4rVIL2M+QXFSgWJBCzl59NqaWsRJSk6dr5kf0/Repx6AjI06D+nhTG7fa5sJCmgkKsYs4coA= ;{id = 33655} +026B7200002F000100015180000C026B77000006200000000013 +kr. 86400 IN NSEC kw. NS DS RRSIG NSEC +016203646E73026B7200000100010002A30000043D4A4B01 +b.dns.kr. 172800 IN A 61.74.75.1 +016303646E73026B7200000100010002A3000004CBF8F6DC +c.dns.kr. 172800 IN A 203.248.246.220 +016403646E73026B7200000100010002A3000004CB539F01 +d.dns.kr. 172800 IN A 203.83.159.1 +016503646E73026B7200000100010002A3000004CA1E7C64 +e.dns.kr. 172800 IN A 202.30.124.100 +016503646E73026B7200001C00010002A300001020010DCC000500000000000000000100 +e.dns.kr. 172800 IN AAAA 2001:dcc:5::100 +016603646E73026B7200000100010002A3000004DA26B55A +f.dns.kr. 172800 IN A 218.38.181.90 +016703646E73026B7200000100010002A3000004CA1FBE01 +g.dns.kr. 172800 IN A 202.31.190.1 +016703646E73026B7200001C00010002A300001020010DC5000A00000000000000000001 +g.dns.kr. 172800 IN AAAA 2001:dc5:a::1 +026B7700000200010002A300000904646E7331026B7700 +kw. 172800 IN NS dns1.kw. +026B7700000200010002A300000904646E7332026B7700 +kw. 172800 IN NS dns2.kw. +026B7700000200010002A300000904646E7333026B7700 +kw. 172800 IN NS dns3.kw. +026B7700000200010002A300000F046B776E73046B656D73036E657400 +kw. 172800 IN NS kwns.kems.net. +026B7700000200010002A300001004736563310561706E6963036E657400 +kw. 172800 IN NS sec1.apnic.net. +026B7700000200010002A300001006736E732D706203697363036F726700 +kw. 172800 IN NS sns-pb.isc.org. +026B7700002F000100015180000C026B79000006200000000003 +kw. 86400 IN NSEC ky. NS RRSIG NSEC +026B7700002E0001000151800093002F08010001518052F4220052EAD9708377003E0E9F5EAA9AB448B1347B2DB8068AA8559CBA95AE2D109207A3FFBB874012B4AD819FAABFA96A07680C64AE23331F4C82262CDC922E873317A22A9B6CA4A95DBD68B24AA60166BFFEDFF58D69F9BA3817C34ACD259617DF418D2D87FD04E642E7BD2F4463E8F0D011DB910BBA426D7065E9FDDB227A1B8C825407757CAB33E9 +kw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Pg6fXqqatEixNHstuAaKqFWcupWuLRCSB6P/u4dAErStgZ+qv6lqB2gMZK4jMx9MgiYs3JIuhzMXoiqbbKSpXb1oskqmAWa//t/1jWn5ujgXw0rNJZYX30GNLYf9BOZC570vRGPo8NAR25ELukJtcGXp/dsiehuMglQHdXyrM+k= ;{id = 33655} +04646E7331026B7700000100010002A3000004A1FC308C +dns1.kw. 172800 IN A 161.252.48.140 +04646E7332026B7700000100010002A3000004A1FC3096 +dns2.kw. 172800 IN A 161.252.48.150 +04646E7333026B7700000100010002A3000004A1FC3091 +dns3.kw. 172800 IN A 161.252.48.145 +026B7900000200010002A300001A076B796E736530310C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynse01.perimeterusa.com. +026B7900000200010002A300001A076B796E736530320C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynse02.perimeterusa.com. +026B7900000200010002A300001A076B796E736530330C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynse03.perimeterusa.com. +026B7900000200010002A300001A076B796E737730310C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynsw01.perimeterusa.com. +026B7900000200010002A300001A076B796E737730320C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynsw02.perimeterusa.com. +026B7900000200010002A300001A076B796E737730330C706572696D6574657275736103636F6D00 +ky. 172800 IN NS kynsw03.perimeterusa.com. +026B7900002F000100015180000C026B7A000006200000000003 +ky. 86400 IN NSEC kz. NS RRSIG NSEC +026B7900002E0001000151800093002F08010001518052F4220052EAD970837700142685CC07A22DF2C50ACD63470227D02EF3CC61857FB601DEC48E2E53E0F25DA3AD55FC7FF11242BC7F31A0B263524C4375FA441256F23FD81D23FA8ACC98165D6EFFCC34BE19BA22CD5E2A933B1B1FE4F139F690A8D5642CE2FDF9A2216394DDB93312190DF7817E0C6475F219CCA22238426B918F6413D900DEE6190CB2D5 +ky. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FCaFzAeiLfLFCs1jRwIn0C7zzGGFf7YB3sSOLlPg8l2jrVX8f/ESQrx/MaCyY1JMQ3X6RBJW8j/YHSP6isyYFl1u/8w0vhm6Is1eKpM7Gx/k8Tn2kKjVZCzi/fmiIWOU3bkzEhkN94F+DGR18hnMoiI4QmuRj2QT2QDe5hkMstU= ;{id = 33655} +026B7A00000200010002A300001B026B7A056363746C640761757468646E730472697065036E657400 +kz. 172800 IN NS kz.cctld.authdns.ripe.net. +026B7A00000200010002A300000B026E73036E6963026B7A00 +kz. 172800 IN NS ns.nic.kz. +026B7A00002F000100015180000C026C61000006200000000003 +kz. 86400 IN NSEC la. NS RRSIG NSEC +026B7A00002E0001000151800093002F08010001518052F4220052EAD9708377003FD1B2EC671762E1A849C6F251B4BA68373D6A40E1694FFBB16CB32B86756CC26A62C4284CE047728E4FD4C357159DA63D2D777B8F3E07FBBC0879A7408F3F03FAB034C1C71C84B42FD2302EE9B321E8CFE87ACAD34F38E0EF63D7DD8CDDEB7E990268B9EDBB00EC69741BA1E343AD301B624F2F07F28484D177BA4C7B429EEB +kz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P9Gy7GcXYuGoScbyUbS6aDc9akDhaU/7sWyzK4Z1bMJqYsQoTOBHco5P1MNXFZ2mPS13e48+B/u8CHmnQI8/A/qwNMHHHIS0L9IwLumzIejP6HrK00844O9j192M3et+mQJoue27AOxpdBuh40OtMBtiTy8H8oSE0Xe6THtCnus= ;{id = 33655} +026E73036E6963026B7A00000100010002A3000004C2001505 +ns.nic.kz. 172800 IN A 194.0.21.5 +026C6100000200010002A300000C036E7331036E6963026C6100 +la. 172800 IN NS ns1.nic.la. +026C6100000200010002A300000C036E7332036E6963026C6100 +la. 172800 IN NS ns2.nic.la. +026C6100000200010002A300000C036E7333036E6963026C6100 +la. 172800 IN NS ns3.nic.la. +026C6100000200010002A300000C036E7334036E6963026C6100 +la. 172800 IN NS ns4.nic.la. +026C6100000200010002A300000C036E7335036E6963026C6100 +la. 172800 IN NS ns5.nic.la. +026C6100002B0001000151800018D3460701C468E20FD427F2EB5E4658B1E1D24840768DC8E1 +la. 86400 IN DS 54086 7 1 C468E20FD427F2EB5E4658B1E1D24840768DC8E1 +026C6100002B0001000151800024D346070228339FCEDF2C52583595DD1460A6B07D9FA5692A5BA8E6E5F34EE30635230541 +la. 86400 IN DS 54086 7 2 28339FCEDF2C52583595DD1460A6B07D9FA5692A5BA8E6E5F34EE30635230541 +026C6100002E0001000151800093002B08010001518052F4220052EAD970837700BA5F6702FB7ACE0985BC296913EB2EA13A73E19E2166ADC541DFD6460F957D1CE1A67B03C491E94384AF17CD1B8F5F59264B24A45F3B9B42A835375C5A70048B22DCA5F338F120379A6352815118AEF2541E4B4B080C529DE650AF0B72E3947C0CA9239A44274A542D95132C4B028EA1F9AC6358EE79D21FC34DA5F078F277F3 +la. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ul9nAvt6zgmFvClpE+suoTpz4Z4hZq3FQd/WRg+VfRzhpnsDxJHpQ4SvF80bj19ZJkskpF87m0KoNTdcWnAEiyLcpfM48SA3mmNSgVEYrvJUHktLCAxSneZQrwty45R8DKkjmkQnSlQtlRMsSwKOofmsY1juedIfw02l8Hjyd/M= ;{id = 33655} +026C6100002E0001000151800093002F08010001518052F4220052EAD970837700520B08CA6223A339A23C84CF7869F7F609ADB44BF9723214E3401A51D9FDAF477DF936E828251376B7D7D71F3C64E1F465B40FBD789CF0AF25A9B23F5A811541D897AD0DE71854FA6FC1E05274779DE5BC5AA9D3F85A42790942066E2E48DE781CBFD471BFF2E967633E83097DC3705C6F08C860261BA86A0440E28E4C913A06 +la. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UgsIymIjozmiPITPeGn39gmttEv5cjIU40AaUdn9r0d9+TboKCUTdrfX1x88ZOH0ZbQPvXic8K8lqbI/WoEVQdiXrQ3nGFT6b8HgUnR3neW8WqnT+FpCeQlCBm4uSN54HL/Ucb/y6WdjPoMJfcNwXG8IyGAmG6hqBEDijkyROgY= ;{id = 33655} +026C6100002F000100015180000E046C616E64000006200000000013 +la. 86400 IN NSEC land. NS DS RRSIG NSEC +036E7331036E6963026C6100000100010002A3000004C2000202 +ns1.nic.la. 172800 IN A 194.0.2.2 +036E7331036E6963026C6100001C00010002A300001020010678000500000000000000000002 +ns1.nic.la. 172800 IN AAAA 2001:678:5::2 +036E7332036E6963026C6100000100010002A3000004C2A9DA0E +ns2.nic.la. 172800 IN A 194.169.218.14 +036E7332036E6963026C6100001C00010002A30000102001067C13CC00000000000000010014 +ns2.nic.la. 172800 IN AAAA 2001:67c:13cc::1:14 +036E7333036E6963026C6100000100010002A3000004B918400E +ns3.nic.la. 172800 IN A 185.24.64.14 +036E7333036E6963026C6100001C00010002A30000102A042B0013CC00000000000000010014 +ns3.nic.la. 172800 IN AAAA 2a04:2b00:13cc::1:14 +036E7334036E6963026C6100000100010002A3000004C2A9DA0F +ns4.nic.la. 172800 IN A 194.169.218.15 +036E7334036E6963026C6100001C00010002A30000102001067C13CC00000000000000010015 +ns4.nic.la. 172800 IN AAAA 2001:67c:13cc::1:15 +036E7335036E6963026C6100000100010002A3000004B918400F +ns5.nic.la. 172800 IN A 185.24.64.15 +036E7335036E6963026C6100001C00010002A30000102A042B0013CC00000000000000010015 +ns5.nic.la. 172800 IN AAAA 2a04:2b00:13cc::1:15 +046C616E6400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +land. 172800 IN NS demand.beta.aridns.net.au. +046C616E6400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +land. 172800 IN NS demand.alpha.aridns.net.au. +046C616E6400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +land. 172800 IN NS demand.delta.aridns.net.au. +046C616E6400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +land. 172800 IN NS demand.gamma.aridns.net.au. +046C616E6400002B0001000151800024AAB60802DEEEE8025A8233F002FE834A728C3C218208D04BA7C5344510D6D1B578E0CB6B +land. 86400 IN DS 43702 8 2 DEEEE8025A8233F002FE834A728C3C218208D04BA7C5344510D6D1B578E0CB6B +046C616E6400002E0001000151800093002B08010001518052F4220052EAD970837700BCBF26BA84DBF1442F89D0052B8826202090E644ED615CDC15B26AE0A4014BE8BBC62BEAC79D2BCA7FF456F8B22AE0B1481BA4F7BA84F1EEA8812663A5443CE0C5CC72A1DE7474DA2E4E5EA5454C2E6B8992ABD82F28B6668CBCFAE993CDB6E0CB4096ECD624F343C0EA35CDBDB9E505FB38E1824AC8A0707B9508D94B07D23F +land. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vL8muoTb8UQvidAFK4gmICCQ5kTtYVzcFbJq4KQBS+i7xivqx50ryn/0VviyKuCxSBuk97qE8e6ogSZjpUQ84MXMcqHedHTaLk5epUVMLmuJkqvYLyi2Zoy8+umTzbbgy0CW7NYk80PA6jXNvbnlBfs44YJKyKBwe5UI2UsH0j8= ;{id = 33655} +046C616E6400002E0001000151800093002F08010001518052F4220052EAD970837700110A08BA61031AA5F9FE1469CAF7203C8D7C1AC41166B512A10D9C01F344F0A81672E45216C92FEE8B18814884957C2F3C801D83426287EE4BC8FD68105527523C35147758881F75917943E31935B8F5216C4A52E0897DF8067A932133B5C9A9C7D956AFFD5C7BCC4D9F42D19CA5A1338CC8F3900A3A09A83E1E582C769B41C1 +land. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EQoIumEDGqX5/hRpyvcgPI18GsQRZrUSoQ2cAfNE8KgWcuRSFskv7osYgUiElXwvPIAdg0Jih+5LyP1oEFUnUjw1FHdYiB91kXlD4xk1uPUhbEpS4Il9+AZ6kyEztcmpx9lWr/1ce8xNn0LRnKWhM4zI85AKOgmoPh5YLHabQcE= ;{id = 33655} +046C616E6400002F000100015180000C026C62000006200000000013 +land. 86400 IN NSEC lb. NS DS RRSIG NSEC +026C6200000200010002A300000C036E733103646E7302617100 +lb. 172800 IN NS ns1.dns.aq. +026C6200000200010002A300000D037269700370736703636F6D00 +lb. 172800 IN NS rip.psg.com. +026C6200000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +lb. 172800 IN NS fork.sth.dnsnode.net. +026C6200000200010002A3000012057A65696E610361756203656475026C6200 +lb. 172800 IN NS zeina.aub.edu.lb. +026C6200002B0001000151800024412A080240DD7553579354618AAC11783D0385CD6D6B0F31C7FCF6719609B04A08C2F11B +lb. 86400 IN DS 16682 8 2 40DD7553579354618AAC11783D0385CD6D6B0F31C7FCF6719609B04A08C2F11B +026C6200002E0001000151800093002B08010001518052F4220052EAD9708377000822B295AA98C9B3B12572AB6B3F521E82DE4C24F21393E9AC7405454697E739BC5F9AB9AA748675650DFB08816EBABF49A0644E67F0C2939CE8968B1BDFF2D7767760EDB76733BC27D2EBEE302F66475CE092168A2EB363469C2DEEF29EE166B2399096B9934B4F4BB44C8CD271E0BE58BDDFCFDB190E70659558D3604BCBDA +lb. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CCKylaqYybOxJXKraz9SHoLeTCTyE5PprHQFRUaX5zm8X5q5qnSGdWUN+wiBbrq/SaBkTmfwwpOc6JaLG9/y13Z3YO23ZzO8J9Lr7jAvZkdc4JIWii6zY0acLe7ynuFmsjmQlrmTS09LtEyM0nHgvli938/bGQ5wZZVY02BLy9o= ;{id = 33655} +026C6200002E0001000151800093002F08010001518052F4220052EAD9708377002BCBE7B127EFA369B8600E22B0A3978F46976A74DC962F0D078387BCE4F15885EC6BD4B20C1D14DB556F4C3005DD8B8902AF72F85C1FD90956F402ED4DB5F64C995E98EB57FF728E0E667D9FAA591643E058CDBCEC6952330F38E1C6323DE678D9901F1DE731AB8C485B7E1577C7B1BD50D25677DB9F297E26AA7AD6E9B9F28E +lb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K8vnsSfvo2m4YA4isKOXj0aXanTcli8NB4OHvOTxWIXsa9SyDB0U21VvTDAF3YuJAq9y+Fwf2QlW9ALtTbX2TJlemOtX/3KODmZ9n6pZFkPgWM287GlSMw844cYyPeZ42ZAfHecxq4xIW34Vd8exvVDSVnfbnyl+Jqp61um58o4= ;{id = 33655} +026C6200002F000100015180000C026C63000006200000000013 +lb. 86400 IN NSEC lc. NS DS RRSIG NSEC +057A65696E610361756203656475026C6200000100010002A3000004C1BC800E +zeina.aub.edu.lb. 172800 IN A 193.188.128.14 +026C6300000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +lc. 172800 IN NS a0.cctld.afilias-nst.info. +026C6300000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +lc. 172800 IN NS a2.cctld.afilias-nst.info. +026C6300000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +lc. 172800 IN NS b0.cctld.afilias-nst.org. +026C6300000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +lc. 172800 IN NS b2.cctld.afilias-nst.org. +026C6300000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +lc. 172800 IN NS c0.cctld.afilias-nst.info. +026C6300000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +lc. 172800 IN NS d0.cctld.afilias-nst.org. +026C6300002B00010001518000187A2B07018FFD793EA49828F8FAE71E6EAF8CD2A6A329361F +lc. 86400 IN DS 31275 7 1 8FFD793EA49828F8FAE71E6EAF8CD2A6A329361F +026C6300002B00010001518000247A2B0702611D7AF20FB91770B598BFFE4DFDAAFE29F106EFCDE36387F4963700A77622EE +lc. 86400 IN DS 31275 7 2 611D7AF20FB91770B598BFFE4DFDAAFE29F106EFCDE36387F4963700A77622EE +026C6300002E0001000151800093002B08010001518052F4220052EAD9708377003983E1521307AB750FBB50864BE8229F03D832704D0B2021C2D236E32864CC0A942EB7AA173BA005DBEEDC8B957D01E4D2A84E2D7777A7F078172353E9ED93E0FAFC95A9FB5FDC7D6E3F24C483C0B0F0BD08DAB61788ABF94065205AE480CD42446FE7A3A7BD3F0228CFCDBB9787D20133C3F90EFAFD02C7700AC15DAFC6E712 +lc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . OYPhUhMHq3UPu1CGS+ginwPYMnBNCyAhwtI24yhkzAqULreqFzugBdvu3IuVfQHk0qhOLXd3p/B4FyNT6e2T4Pr8lan7X9x9bj8kxIPAsPC9CNq2F4ir+UBlIFrkgM1CRG/no6e9PwIoz827l4fSATPD+Q76/QLHcArBXa/G5xI= ;{id = 33655} +026C6300002E0001000151800093002F08010001518052F4220052EAD970837700B14C2C21672CA707CEAE7D78CB1CFF7E11EF7B769DAA6F1D64D2B89A9538FDA6382746F6F4A3C99201A9729CBD33E5F79141586A3664F9B8A9517F99FAEA7385B03F5DC939BF6E80437ABCA25EDA96E3AED289B6C4031BA3242D862441964FE2381DCFAE01F83CFFCE62C80920DFD6F8501F164E3C48BC9004F1F00BAD6B5D92 +lc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sUwsIWcspwfOrn14yxz/fhHve3adqm8dZNK4mpU4/aY4J0b29KPJkgGpcpy9M+X3kUFYajZk+bipUX+Z+upzhbA/Xck5v26AQ3q8ol7aluOu0om2xAMboyQthiRBlk/iOB3PrgH4PP/OYsgJIN/W+FAfFk48SLyQBPHwC61rXZI= ;{id = 33655} +026C6300002F000100015180000C026C69000006200000000013 +lc. 86400 IN NSEC li. NS DS RRSIG NSEC +026C6900000200010002A300000A0161036E6963026C6900 +li. 172800 IN NS a.nic.li. +026C6900000200010002A300000A0162036E6963026C6900 +li. 172800 IN NS b.nic.li. +026C6900000200010002A300000A0163036E6963026C6900 +li. 172800 IN NS c.nic.li. +026C6900000200010002A300000A0164036E6963026C6900 +li. 172800 IN NS d.nic.li. +026C6900000200010002A300000A0165036E6963026C6900 +li. 172800 IN NS e.nic.li. +026C6900000200010002A300000A0166036E6963026C6900 +li. 172800 IN NS f.nic.li. +026C6900000200010002A300000A0168036E6963026C6900 +li. 172800 IN NS h.nic.li. +026C6900002B00010001518000246F490802C534C12DE564E79C578E6419C57D97629D8BE76C794C026C944F3FC442B63B78 +li. 86400 IN DS 28489 8 2 C534C12DE564E79C578E6419C57D97629D8BE76C794C026C944F3FC442B63B78 +026C6900002E0001000151800093002B08010001518052F4220052EAD970837700AAD9FB4E40F49CAFC55D889AB6CB8CA68852B48221CA19A82ED54AE029CE50B46891C433E8BF1D55C1E8978D2B3AA6A081318BAD21537786BE00F720D95C2F6CC302BDE70D4038382313DED28D62D6FCF8B99A94E7F3878B145E701E1E53901EB80891888FC1C1890BF7B5E8F8D5B5F67FF0422C98A6876BC2F775D02F007E1B +li. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qtn7TkD0nK/FXYiatsuMpohStIIhyhmoLtVK4CnOULRokcQz6L8dVcHol40rOqaggTGLrSFTd4a+APcg2VwvbMMCvecNQDg4IxPe0o1i1vz4uZqU5/OHixRecB4eU5AeuAiRiI/BwYkL97Xo+NW19n/wQiyYpodrwvd10C8Afhs= ;{id = 33655} +026C6900002E0001000151800093002F08010001518052F4220052EAD9708377004CAE5CBF001CE5607E31D517A3E0AB838FEE52DD8CCF8312E5476FD191EF3E167D389106C96AD23E6286DB0845BEB4A0EA9399866EC6C40FD7EEAD81A9122C7ED7A35BCEA175539D590C03C18DF0414A7D4CE781C5602BDFA9E915DBE0B54201876D40B5FEF33DE829638032C87881BCBC0E1CFEBE7EA874CB66F65CC3F81BF7 +li. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TK5cvwAc5WB+MdUXo+Crg4/uUt2Mz4MS5Udv0ZHvPhZ9OJEGyWrSPmKG2whFvrSg6pOZhm7GxA/X7q2BqRIsftejW86hdVOdWQwDwY3wQUp9TOeBxWAr36npFdvgtUIBh21Atf7zPegpY4AyyHiBvLwOHP6+fqh0y2b2XMP4G/c= ;{id = 33655} +026C6900002F0001000151800012086C69676874696E67000006200000000013 +li. 86400 IN NSEC lighting. NS DS RRSIG NSEC +0161036E6963026C6900000100010002A3000004823B0150 +a.nic.li. 172800 IN A 130.59.1.80 +0161036E6963026C6900001C00010002A300001020010620000000000000000000000004 +a.nic.li. 172800 IN AAAA 2001:620::4 +0162036E6963026C6900000100010002A3000004823BD30A +b.nic.li. 172800 IN A 130.59.211.10 +0162036E6963026C6900001C00010002A300001020010620000000000000000000000005 +b.nic.li. 172800 IN AAAA 2001:620::5 +0163036E6963026C6900000100010002A3000004931C0027 +c.nic.li. 172800 IN A 147.28.0.39 +0163036E6963026C6900001C00010002A300001020010418000100000000000000000039 +c.nic.li. 172800 IN AAAA 2001:418:1::39 +0164036E6963026C6900000100010002A3000004C8A00005 +d.nic.li. 172800 IN A 200.160.0.5 +0164036E6963026C6900001C00010002A3000010200112FF00000A200000000000000005 +d.nic.li. 172800 IN AAAA 2001:12ff:0:a20::5 +0165036E6963026C6900000100010002A3000004C2001101 +e.nic.li. 172800 IN A 194.0.17.1 +0165036E6963026C6900001C00010002A300001020010678000300000000000000000001 +e.nic.li. 172800 IN AAAA 2001:678:3::1 +0166036E6963026C6900000100010002A3000004C2926A0E +f.nic.li. 172800 IN A 194.146.106.14 +0166036E6963026C6900001C00010002A30000102001067C101000030000000000000053 +f.nic.li. 172800 IN AAAA 2001:67c:1010:3::53 +0168036E6963026C6900000100010002A3000004C22A3078 +h.nic.li. 172800 IN A 194.42.48.120 +086C69676874696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +lighting. 172800 IN NS demand.beta.aridns.net.au. +086C69676874696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +lighting. 172800 IN NS demand.alpha.aridns.net.au. +086C69676874696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +lighting. 172800 IN NS demand.delta.aridns.net.au. +086C69676874696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +lighting. 172800 IN NS demand.gamma.aridns.net.au. +086C69676874696E6700002B000100015180002405410802AFA5667D4D9B2FBDD72F0C364EE3A3AD3286BAE800DD959E3A28F2E3EA6EFA08 +lighting. 86400 IN DS 1345 8 2 AFA5667D4D9B2FBDD72F0C364EE3A3AD3286BAE800DD959E3A28F2E3EA6EFA08 +086C69676874696E6700002E0001000151800093002B08010001518052F4220052EAD970837700336EA413CC677FBA28D704F0BDE58C2F59958937EA32E9D6286952A3C9ED01E2679801AFD5D28C768D75C09E16576EDB8600A93105A664C7A0801515FECF2C31693C8361F56C8AA8937126E39937EF678FE56517E8265FC841E0A4187E21E3AAC4352C5E9131F1A98CA3BBC06BBACD28D45B67B9FA5DE4DB9429B9D643111E99 +lighting. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . M26kE8xnf7oo1wTwveWML1mViTfqMunWKGlSo8ntAeJnmAGv1dKMdo11wJ4WV27bhgCpMQWmZMeggBUV/s8sMWk8g2H1bIqok3Em45k372eP5WUX6CZfyEHgpBh+IeOqxDUsXpEx8amMo7vAa7rNKNRbZ7n6XeTblCm51kMRHpk= ;{id = 33655} +086C69676874696E6700002E0001000151800093002F08010001518052F4220052EAD97083770051909A9EF16074710966714A22E4227B633BB384879C6934E4F9EBB021AE22A49ACE5819CB20035A89A3A959D328AA9A085903EDBF2C11396721F9E0673BB3344606F1F590D5D17E7DA626DD4FAC761B7B3B68522A5E422A2336FC289A0D2D989C831B2C8BFF0546602104460B0748D3F6414C7B6DBF1C0B1AA64372B86A881A +lighting. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UZCanvFgdHEJZnFKIuQie2M7s4SHnGk05PnrsCGuIqSazlgZyyADWomjqVnTKKqaCFkD7b8sETlnIfngZzuzNEYG8fWQ1dF+faYm3U+sdht7O2hSKl5CKiM2/CiaDS2YnIMbLIv/BUZgIQRGCwdI0/ZBTHttvxwLGqZDcrhqiBo= ;{id = 33655} +086C69676874696E6700002F000100015180000E046C696D6F000006200000000013 +lighting. 86400 IN NSEC limo. NS DS RRSIG NSEC +046C696D6F00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +limo. 172800 IN NS demand.beta.aridns.net.au. +046C696D6F00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +limo. 172800 IN NS demand.alpha.aridns.net.au. +046C696D6F00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +limo. 172800 IN NS demand.delta.aridns.net.au. +046C696D6F00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +limo. 172800 IN NS demand.gamma.aridns.net.au. +046C696D6F00002B00010001518000241C7508025B4855A49D19A3D8A6BC6D32AAA778D5CC62A186E17303559766C6646428BE0A +limo. 86400 IN DS 7285 8 2 5B4855A49D19A3D8A6BC6D32AAA778D5CC62A186E17303559766C6646428BE0A +046C696D6F00002E0001000151800093002B08010001518052F4220052EAD970837700A5E17B79777E66A1E3D7480DC6846DB87971E0126FEF9F1C95A09F2B5BC51C2B6589B4A27CFA7F6E69004842F4BB7CBA23433C735D5B2E3C9495A6326ABC1B24786CCBD19924FB3FE2088D80241A3805EE90C52AD0595B79FC76DCB9A7A276244E93892FD67DE47088ECD25335C04720FC956DB0018FB3C145534746ACAAEA7D +limo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . peF7eXd+ZqHj10gNxoRtuHlx4BJv758claCfK1vFHCtlibSifPp/bmkASEL0u3y6I0M8c11bLjyUlaYyarwbJHhsy9GZJPs/4giNgCQaOAXukMUq0Flbefx23LmnonYkTpOJL9Z95HCI7NJTNcBHIPyVbbABj7PBRVNHRqyq6n0= ;{id = 33655} +046C696D6F00002E0001000151800093002F08010001518052F4220052EAD970837700743D4BBED2D08E4DA60109AA0E84073B582620120DD4B5D4D8C54E0BDD1EBC0430FA29E18EB034766B899DAE31A12C56071ADE966BF73AEE5E1F9628A2D109D656058D1AFE98F631AE7DC551B10F1A6B44D2B35732D6B8B626843BCE5336D731A86F293C5D8B5003747B64188EDACA9DCF8CD3E0B3F36E93D6C8C85687E560CC +limo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dD1LvtLQjk2mAQmqDoQHO1gmIBIN1LXU2MVOC90evAQw+inhjrA0dmuJna4xoSxWBxrelmv3Ou5eH5YootEJ1lYFjRr+mPYxrn3FUbEPGmtE0rNXMta4tiaEO85TNtcxqG8pPF2LUAN0e2QYjtrKnc+M0+Cz826T1sjIVoflYMw= ;{id = 33655} +046C696D6F00002F000100015180000E046C696E6B000006200000000013 +limo. 86400 IN NSEC link. NS DS RRSIG NSEC +046C696E6B00000200010002A30000160161026E730B756E697265676973747279036E657400 +link. 172800 IN NS a.ns.uniregistry.net. +046C696E6B00000200010002A300001103746C64076973632D736E7303636F6D00 +link. 172800 IN NS tld.isc-sns.com. +046C696E6B00000200010002A300001103746C64076973632D736E73036E657400 +link. 172800 IN NS tld.isc-sns.net. +046C696E6B00000200010002A300001203746C64076973632D736E7304696E666F00 +link. 172800 IN NS tld.isc-sns.info. +046C696E6B00002B00010001518000183FFA05014BAC0A7FB788380C75B12257AF422CF2F32EE828 +link. 86400 IN DS 16378 5 1 4BAC0A7FB788380C75B12257AF422CF2F32EE828 +046C696E6B00002B00010001518000243FFA050222F61A68A2F1BFE7A3B8A71DE8DB12BAC9A51D98D8D1F44C1717396E395C180B +link. 86400 IN DS 16378 5 2 22F61A68A2F1BFE7A3B8A71DE8DB12BAC9A51D98D8D1F44C1717396E395C180B +046C696E6B00002E0001000151800093002B08010001518052F4220052EAD9708377003BE062B6DF4BFFE0CE978EAFDEE5FAF7897E88560DC96BD7DEE81280C71C7ED59AEC1C14AEBFA8E8D2D7B2B95D89A73B8A2EBB647A22FE2E0CCC6C24A3C5C59B56538FD7D68219E240342BBA17BDFCAED33B32C917B14884221203DCB906F57555175BE3CD09C2910CAED9861AADFE1EDDA56FDF5D427D19B82A36A7B1EEE9C2 +link. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . O+Bitt9L/+DOl46v3uX694l+iFYNyWvX3ugSgMccftWa7BwUrr+o6NLXsrldiac7ii67ZHoi/i4MzGwko8XFm1ZTj9fWghniQDQruhe9/K7TOzLJF7FIhCISA9y5BvV1VRdb480JwpEMrtmGGq3+Ht2lb99dQn0ZuCo2p7Hu6cI= ;{id = 33655} +046C696E6B00002E0001000151800093002F08010001518052F4220052EAD970837700A5573248886CF37F21D4852B96295E46E6CC289A1969C5B4AC9E70ED2C17E296617CBB8DF644D86CE57AF66BD2F90932DE37F817FCD17AD47EF458B7EBB42A9551C1671C9196CFE06B68210730C427B6F6464F8777DA1B56ABB2DCD1D1506987CAD7D9710A02A3A36B60F7AF79DA70F0F12D2B9C452D440CDD2440E1D5522690 +link. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pVcySIhs838h1IUrlileRubMKJoZacW0rJ5w7SwX4pZhfLuN9kTYbOV69mvS+Qky3jf4F/zRetR+9Fi367QqlVHBZxyRls/ga2ghBzDEJ7b2Rk+Hd9obVquy3NHRUGmHytfZcQoCo6NrYPevedpw8PEtK5xFLUQM3SRA4dVSJpA= ;{id = 33655} +046C696E6B00002F000100015180000C026C6B000006200000000013 +link. 86400 IN NSEC lk. NS DS RRSIG NSEC +026C6B00002F000100015180000C026C72000006200000000013 +lk. 86400 IN NSEC lr. NS DS RRSIG NSEC +026C6B00002E0001000151800093002F08010001518052F4220052EAD97083770065367C87CAE02B854A888E06451892A49FF461C912C98AE6DEB510B41B9AED115E0CF7E6CF02D6A9A648F5EE692B25F5716A377FF7D1355525F53C07EB4AFFE36E96635C41918AEE26068DE57911E6B8B325FDF4ECBF6DF2CA40EF03D8462717A490A29FB0FB354FB7836530F2C81BAC42803F77543F3042130277BA20E56F4B +lk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZTZ8h8rgK4VKiI4GRRiSpJ/0YckSyYrm3rUQtBua7RFeDPfmzwLWqaZI9e5pKyX1cWo3f/fRNVUl9TwH60r/426WY1xBkYruJgaN5XkR5rizJf307L9t8spA7wPYRicXpJCin7D7NU+3g2Uw8sgbrEKAP3dUPzBCEwJ3uiDlb0s= ;{id = 33655} +026C6B00002E0001000151800093002B08010001518052F4220052EAD9708377000AA001EA77459E28A7B6FFE6A637D179C9E59F0A653403206BA5713F15DC257C98D6EE5E2297A671075026A3F3EB7361C34E5936A732785EFCE134FA60C8E545270082E4A2A649A767E3624CE0E3DA55BB4E9CBA87E3DB8B3D4905CDE4AC694596B17DB76D43DAB48C149CEFC9C53E1225485730C9F31B944A86D450615F2A49 +lk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CqAB6ndFniintv/mpjfRecnlnwplNAMga6VxPxXcJXyY1u5eIpemcQdQJqPz63Nhw05ZNqcyeF784TT6YMjlRScAguSipkmnZ+NiTODj2lW7Tpy6h+Pbiz1JBc3krGlFlrF9t21D2rSMFJzvycU+EiVIVzDJ8xuUSobUUGFfKkk= ;{id = 33655} +026C6B00000200010002A300000A0163036E6963026C6B00 +lk. 172800 IN NS c.nic.lk. +026C6B00000200010002A300000A0164036E6963026C6B00 +lk. 172800 IN NS d.nic.lk. +026C6B00000200010002A300000A016C036E6963026C6B00 +lk. 172800 IN NS l.nic.lk. +026C6B00000200010002A300000A016D036E6963026C6B00 +lk. 172800 IN NS m.nic.lk. +026C6B00000200010002A300000A0170036E6963026C6B00 +lk. 172800 IN NS p.nic.lk. +026C6B00000200010002A300000A0174036E6963026C6B00 +lk. 172800 IN NS t.nic.lk. +026C6B00000200010002A300000B036E7331026163026C6B00 +lk. 172800 IN NS ns1.ac.lk. +026C6B00000200010002A300000D0472697065036E6963026C6B00 +lk. 172800 IN NS ripe.nic.lk. +026C6B00000200010002A30000190970656E647261676F6E026373067075726475650365647500 +lk. 172800 IN NS pendragon.cs.purdue.edu. +026C6B00002B000100015180001800B50501A1907F85D49081239389C216912B8937D0ECEB3D +lk. 86400 IN DS 181 5 1 A1907F85D49081239389C216912B8937D0ECEB3D +026C6B00002B000100015180002400B5050287516D56B697CB3F7A7C3EB594EE0E16AE509D16A503089F4FBD4F347B336F93 +lk. 86400 IN DS 181 5 2 87516D56B697CB3F7A7C3EB594EE0E16AE509D16A503089F4FBD4F347B336F93 +036E7331026163026C6B00000100010002A3000004C0F801A2 +ns1.ac.lk. 172800 IN A 192.248.1.162 +036E7331026163026C6B00001C00010002A30000102401DD00000100000000000000000162 +ns1.ac.lk. 172800 IN AAAA 2401:dd00:1::162 +036E7333026163026C6B00000100010002A3000004CA7CA6B2 +ns3.ac.lk. 172800 IN A 202.124.166.178 +0163036E6963026C6B00000100010002A3000004CB8F1D03 +c.nic.lk. 172800 IN A 203.143.29.3 +0163036E6963026C6B00001C00010002A300001024055400000300010203014300290003 +c.nic.lk. 172800 IN AAAA 2405:5400:3:1:203:143:29:3 +0164036E6963026C6B00000100010002A30000047BE70612 +d.nic.lk. 172800 IN A 123.231.6.18 +016C036E6963026C6B00000100010002A3000004C0F80811 +l.nic.lk. 172800 IN A 192.248.8.17 +016D036E6963026C6B00000100010002A3000004CA81EBE5 +m.nic.lk. 172800 IN A 202.129.235.229 +046E732D63036E6963026C6B00000100010002A3000004CB8F1303 +ns-c.nic.lk. 172800 IN A 203.143.19.3 +046E732D64036E6963026C6B00000100010002A30000047BE70612 +ns-d.nic.lk. 172800 IN A 123.231.6.18 +046E732D6C036E6963026C6B00000100010002A3000004C0F80811 +ns-l.nic.lk. 172800 IN A 192.248.8.17 +046E732D74036E6963026C6B00000100010002A3000004CB5E4281 +ns-t.nic.lk. 172800 IN A 203.94.66.129 +0170036E6963026C6B00000100010002A3000004CC3DD81B +p.nic.lk. 172800 IN A 204.61.216.27 +0170036E6963026C6B00001C00010002A3000010200105000014602700AD000000000001 +p.nic.lk. 172800 IN AAAA 2001:500:14:6027:ad::1 +0472697065036E6963026C6B00000100010002A3000004C1000958 +ripe.nic.lk. 172800 IN A 193.0.9.88 +0472697065036E6963026C6B00001C00010002A30000102001067C00E000000000000000000088 +ripe.nic.lk. 172800 IN AAAA 2001:67c:e0::88 +0174036E6963026C6B00000100010002A3000004CB5E4281 +t.nic.lk. 172800 IN A 203.94.66.129 +026C7200000200010002A300000D037269700370736703636F6D00 +lr. 172800 IN NS rip.psg.com. +026C7200000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +lr. 172800 IN NS fork.sth.dnsnode.net. +026C7200000200010002A300001005686970706F027275026163027A6100 +lr. 172800 IN NS hippo.ru.ac.za. +026C7200002F000100015180000C026C73000006200000000003 +lr. 86400 IN NSEC ls. NS RRSIG NSEC +026C7200002E0001000151800093002F08010001518052F4220052EAD970837700B73C0C575E653DD09866561B18B3D8F98C32725AF000A969AEE634B5F361917DC52770CAD545C706F19D2AD95FAA69056FEC81A6A9EA331D86B9726FB2307BCBD35146F668156CB9588B4D4C1807FE2A19337F2210BD0535D45EE53645C4C355885650701DF0B4330AC2797593CED66C4C4DA409DBB184EE3FD614458B493B19 +lr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tzwMV15lPdCYZlYbGLPY+YwyclrwAKlpruY0tfNhkX3FJ3DK1UXHBvGdKtlfqmkFb+yBpqnqMx2GuXJvsjB7y9NRRvZoFWy5WItNTBgH/ioZM38iEL0FNdRe5TZFxMNViFZQcB3wtDMKwnl1k87WbExNpAnbsYTuP9YURYtJOxk= ;{id = 33655} +026C7300000200010002A300000E047261696E0370736703636F6D00 +ls. 172800 IN NS rain.psg.com. +026C7300000200010002A300001005686970706F027275026163027A6100 +ls. 172800 IN NS hippo.ru.ac.za. +026C7300000200010002A3000017056C732D6E7307616E796361737403706368036E657400 +ls. 172800 IN NS ls-ns.anycast.pch.net. +026C7300000200010002A3000013056E732D6C7307616672696E6963036E657400 +ls. 172800 IN NS ns-ls.afrinic.net. +026C7300002F000100015180000C026C74000006200000000003 +ls. 86400 IN NSEC lt. NS RRSIG NSEC +026C7300002E0001000151800093002F08010001518052F4220052EAD9708377003AE186C49E363A62FD8FBE38AE4BE544B0A042A167F0D371DC6466F12B580476C94102BC72801120763709ADBDEC40E7DDE071B3D67E128E3E713D0155737DFF56657467FECB6818067AAD9F8613BC1CC9B31C1D92BBBC035D47CA463F61D79BFDC1CB7F42BDAFF1735A90F093FAD335C252EF2BDE308CE93E386E1980F9FE45 +ls. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OuGGxJ42OmL9j744rkvlRLCgQqFn8NNx3GRm8StYBHbJQQK8coARIHY3Ca297EDn3eBxs9Z+Eo4+cT0BVXN9/1ZldGf+y2gYBnqtn4YTvBzJsxwdkru8A11HykY/Ydeb/cHLf0K9r/FzWpDwk/rTNcJS7yveMIzpPjhuGYD5/kU= ;{id = 33655} +026C7400000200010002A300000A016103746C64026C7400 +lt. 172800 IN NS a.tld.lt. +026C7400000200010002A300000A016203746C64026C7400 +lt. 172800 IN NS b.tld.lt. +026C7400000200010002A300000A016303746C64026C7400 +lt. 172800 IN NS c.tld.lt. +026C7400000200010002A300000A016403746C64026C7400 +lt. 172800 IN NS d.tld.lt. +026C7400000200010002A300000A016503746C64026C7400 +lt. 172800 IN NS e.tld.lt. +026C7400000200010002A300000A016603746C64026C7400 +lt. 172800 IN NS f.tld.lt. +026C7400002B00010001518000185FEC0801A9D06FA34F1C9D57062899824F5702041188DE97 +lt. 86400 IN DS 24556 8 1 A9D06FA34F1C9D57062899824F5702041188DE97 +026C7400002B00010001518000245FEC0802DEA1E077D98EA2DE8750281B40ACEBC14687AEB8FE49506333C903D501F6C620 +lt. 86400 IN DS 24556 8 2 DEA1E077D98EA2DE8750281B40ACEBC14687AEB8FE49506333C903D501F6C620 +026C7400002E0001000151800093002B08010001518052F4220052EAD97083770040AB891055E267DAA8C1AFD89E861CBFF6D7B8D5E96DF4C3F8990B9EF23BAED782805AFAA4642CF5800C13F1BE69EC09D17ECED87D0151F5B5CFD94A9E6A476557542CC63F13863C436D61524D4999929A90BEB39FB442B87EA75CC3806594CF6FADF14F73003D1A8F37AE3C741D35525C54178EDC81CEF4CBA63BCD10C36255 +lt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QKuJEFXiZ9qowa/YnoYcv/bXuNXpbfTD+JkLnvI7rteCgFr6pGQs9YAME/G+aewJ0X7O2H0BUfW1z9lKnmpHZVdULMY/E4Y8Q21hUk1JmZKakL6zn7RCuH6nXMOAZZTPb63xT3MAPRqPN648dB01UlxUF47cgc70y6Y7zRDDYlU= ;{id = 33655} +026C7400002E0001000151800093002F08010001518052F4220052EAD9708377001A2F09ED7E25CC4BA2B27B15FF3D5841F066BF97358447DFBBE11743123E7DAFD25EC3DC7F8C92DA80A4940985270CDA05008FF15AA4DB0E02BB5CA7E5C796EF2C57BE1E78B41980E052BC0562112CED5CBA6710FFC09A236A368A297BCE76C1FE64002CFE15E4622F8DCD7466E8A3E050C7BFD9720238583695890189F74A4F +lt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Gi8J7X4lzEuisnsV/z1YQfBmv5c1hEffu+EXQxI+fa/SXsPcf4yS2oCklAmFJwzaBQCP8Vqk2w4Cu1yn5ceW7yxXvh54tBmA4FK8BWIRLO1cumcQ/8CaI2o2iil7znbB/mQALP4V5GIvjc10Zuij4FDHv9lyAjhYNpWJAYn3Sk8= ;{id = 33655} +026C7400002F000100015180000C026C75000006200000000013 +lt. 86400 IN NSEC lu. NS DS RRSIG NSEC +016103746C64026C7400000100010002A3000004C308DA83 +a.tld.lt. 172800 IN A 195.8.218.131 +016203746C64026C7400000100010002A3000004C2001401 +b.tld.lt. 172800 IN A 194.0.20.1 +016203746C64026C7400001C00010002A300001020010678001900000000000000000001 +b.tld.lt. 172800 IN AAAA 2001:678:19::1 +016303746C64026C7400000100010002A3000004C2000104 +c.tld.lt. 172800 IN A 194.0.1.4 +016303746C64026C7400001C00010002A300001020010678000400000000000000000004 +c.tld.lt. 172800 IN AAAA 2001:678:4::4 +016403746C64026C7400000100010002A3000004C2000301 +d.tld.lt. 172800 IN A 194.0.3.1 +016403746C64026C7400001C00010002A300001020010678000600000000000000000001 +d.tld.lt. 172800 IN AAAA 2001:678:6::1 +016503746C64026C7400000100010002A3000004C2001201 +e.tld.lt. 172800 IN A 194.0.18.1 +016603746C64026C7400000100010002A3000004C2001301 +f.tld.lt. 172800 IN A 194.0.19.1 +016603746C64026C7400001C00010002A300001020010678008C00000000000000000001 +f.tld.lt. 172800 IN AAAA 2001:678:8c::1 +026C7500000200010002A300000A016703646E73026C7500 +lu. 172800 IN NS g.dns.lu. +026C7500000200010002A300000A016903646E73026C7500 +lu. 172800 IN NS i.dns.lu. +026C7500000200010002A300000A016A03646E73026C7500 +lu. 172800 IN NS j.dns.lu. +026C7500000200010002A300000A016B03646E73026C7500 +lu. 172800 IN NS k.dns.lu. +026C7500000200010002A300000A017003646E73026C7500 +lu. 172800 IN NS p.dns.lu. +026C7500000200010002A300000C036E733103646E73026C7500 +lu. 172800 IN NS ns1.dns.lu. +026C7500000200010002A300000C036E733503646E73026C7500 +lu. 172800 IN NS ns5.dns.lu. +026C7500002B0001000151800024001F08024B0AF8FA533D143C1E7AC4C8FA6DEF4509DE439C0D5403FDC1BAA7860052882B +lu. 86400 IN DS 31 8 2 4B0AF8FA533D143C1E7AC4C8FA6DEF4509DE439C0D5403FDC1BAA7860052882B +026C7500002E0001000151800093002B08010001518052F4220052EAD97083770039F7729FB5ECEC36581B2CB644ADB07989D32D9493C7B25F539E829BC51A961F7D2F03EA8300E2F5EE6CFA9855BB2FFEEB27B326D06417272C976897805E8260014D8ABB67150C321E50EF7C355D15103D00E917E25627B31247D513C1BEAF9B6524EC490232737EB533EB1DF3E93B9720AF550F071408ADEE586B4225AFB879 +lu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ofdyn7Xs7DZYGyy2RK2weYnTLZSTx7JfU56Cm8Ualh99LwPqgwDi9e5s+phVuy/+6yezJtBkFycsl2iXgF6CYAFNirtnFQwyHlDvfDVdFRA9AOkX4lYnsxJH1RPBvq+bZSTsSQIyc361M+sd8+k7lyCvVQ8HFAit7lhrQiWvuHk= ;{id = 33655} +026C7500002E0001000151800093002F08010001518052F4220052EAD970837700B842B29CF76C112AE55A0344B779A2E59FC802F6B8631D34D587CF7CB00D1C1B2F0F75BA2D24FC2A3BCB1F1E02AC0E7D006C4C88653FAA7A60C937E1C098E6DCDB30869733035907A9EA23FAF441279FCB177B4FC8CBF428EA5A2794421BFC401C195266629B1A9DB52B5AA45D52992B92C01E3B82FD671781F3203F562A4DCF +lu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uEKynPdsESrlWgNEt3mi5Z/IAva4Yx001YfPfLANHBsvD3W6LST8KjvLHx4CrA59AGxMiGU/qnpgyTfhwJjm3NswhpczA1kHqeoj+vRBJ5/LF3tPyMv0KOpaJ5RCG/xAHBlSZmKbGp21K1qkXVKZK5LAHjuC/WcXgfMgP1YqTc8= ;{id = 33655} +026C7500002F0001000151800010066C7578757279000006200000000013 +lu. 86400 IN NSEC luxury. NS DS RRSIG NSEC +016703646E73026C7500000100010002A3000004C2001705 +g.dns.lu. 172800 IN A 194.0.23.5 +016703646E73026C7500001C00010002A300001020010678001B00050000000000000005 +g.dns.lu. 172800 IN AAAA 2001:678:1b:5::5 +016903646E73026C7500000100010002A3000004C2926A42 +i.dns.lu. 172800 IN A 194.146.106.66 +016903646E73026C7500001C00010002A30000102001067C101000160000000000000053 +i.dns.lu. 172800 IN AAAA 2001:67c:1010:16::53 +016A03646E73026C7500000100010002A30000044D48E5F7 +j.dns.lu. 172800 IN A 77.72.229.247 +016A03646E73026C7500001C00010002A30000102A0103F0000003070000000000000053 +j.dns.lu. 172800 IN AAAA 2a01:3f0:0:307::53 +016B03646E73026C7500000100010002A3000004C200010D +k.dns.lu. 172800 IN A 194.0.1.13 +016B03646E73026C7500001C00010002A30000102001067800040000000000000000000D +k.dns.lu. 172800 IN AAAA 2001:678:4::d +036E733103646E73026C7500000100010002A30000049E40E512 +ns1.dns.lu. 172800 IN A 158.64.229.18 +036E733103646E73026C7500001C00010002A300001020010A18000400010000000000000018 +ns1.dns.lu. 172800 IN AAAA 2001:a18:4:1::18 +036E733503646E73026C7500000100010002A3000004515BA164 +ns5.dns.lu. 172800 IN A 81.91.161.100 +017003646E73026C7500000100010002A3000004C2002A2A +p.dns.lu. 172800 IN A 194.0.42.42 +017003646E73026C7500001C00010002A300001020010678006000000000000000420042 +p.dns.lu. 172800 IN AAAA 2001:678:60::42:42 +066C757875727900000200010002A300000E0161036E6963066C757875727900 +luxury. 172800 IN NS a.nic.luxury. +066C757875727900000200010002A300000E0162036E6963066C757875727900 +luxury. 172800 IN NS b.nic.luxury. +066C757875727900000200010002A300000E0163036E6963066C757875727900 +luxury. 172800 IN NS c.nic.luxury. +066C757875727900000200010002A300000E0164036E6963066C757875727900 +luxury. 172800 IN NS d.nic.luxury. +066C757875727900002B00010001518000240E500802D602E8F4FD9729146D1FB1D249544DCEECE615E528EB2E4997FB1760B004D67E +luxury. 86400 IN DS 3664 8 2 D602E8F4FD9729146D1FB1D249544DCEECE615E528EB2E4997FB1760B004D67E +066C757875727900002E0001000151800093002B08010001518052F4220052EAD97083770078B4B617122CB411FBBAB30C3EB56D1470575581E957FAE4AB964FE4995829E3F95DD3AC5BF29AEFFD88E1250E3573B8CDAE74F81510B78BEFB9525A37D55EBC110E92532AC21CBEC3DF853096F7F3E2C9689EF0B858D60AEC1ED75ED5CA4FCF3BD7AA119B1FC0D62A9F57994E5B2D3A205391F19FC258C801F8E40BDCDDBE1B +luxury. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eLS2FxIstBH7urMMPrVtFHBXVYHpV/rkq5ZP5JlYKeP5XdOsW/Ka7/2I4SUONXO4za50+BUQt4vvuVJaN9VevBEOklMqwhy+w9+FMJb38+LJaJ7wuFjWCuwe117Vyk/PO9eqEZsfwNYqn1eZTlstOiBTkfGfwljIAfjkC9zdvhs= ;{id = 33655} +066C757875727900002E0001000151800093002F08010001518052F4220052EAD97083770084B71C007BF3B405723005843E48FBD04F6386C679FD401DA12754667DADBD43861EEFBC6018843E994117EA278D59ED8D9C5E62D58546D038CE41DB0BB8191CF1F2667306774CEBC1D08F114F1BD60928CE10F1D6BD0791A84DBD7C442DAFB91876518052ACA2B7BA954E544E92A0FAD19977563A098E10664661FA9E980CAA +luxury. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hLccAHvztAVyMAWEPkj70E9jhsZ5/UAdoSdUZn2tvUOGHu+8YBiEPplBF+onjVntjZxeYtWFRtA4zkHbC7gZHPHyZnMGd0zrwdCPEU8b1gkozhDx1r0HkahNvXxELa+5GHZRgFKsore6lU5UTpKg+tGZd1Y6CY4QZkZh+p6YDKo= ;{id = 33655} +066C757875727900002F000100015180000C026C76000006200000000013 +luxury. 86400 IN NSEC lv. NS DS RRSIG NSEC +0161036E6963066C757875727900000100010002A300000425D1C00A +a.nic.luxury. 172800 IN A 37.209.192.10 +0161036E6963066C757875727900001C00010002A300001020010DCD000100000000000000000010 +a.nic.luxury. 172800 IN AAAA 2001:dcd:1::10 +0162036E6963066C757875727900000100010002A300000425D1C20A +b.nic.luxury. 172800 IN A 37.209.194.10 +0162036E6963066C757875727900001C00010002A300001020010DCD000200000000000000000010 +b.nic.luxury. 172800 IN AAAA 2001:dcd:2::10 +0163036E6963066C757875727900000100010002A300000425D1C40A +c.nic.luxury. 172800 IN A 37.209.196.10 +0163036E6963066C757875727900001C00010002A300001020010DCD000300000000000000000010 +c.nic.luxury. 172800 IN AAAA 2001:dcd:3::10 +0164036E6963066C757875727900000100010002A300000425D1C60A +d.nic.luxury. 172800 IN A 37.209.198.10 +0164036E6963066C757875727900001C00010002A300001020010DCD000400000000000000000010 +d.nic.luxury. 172800 IN AAAA 2001:dcd:4::10 +026C7600000200010002A300000A0161036E6963026C7600 +lv. 172800 IN NS a.nic.lv. +026C7600000200010002A300000A0162036E6963026C7600 +lv. 172800 IN NS b.nic.lv. +026C7600000200010002A300000A0163036E6963026C7600 +lv. 172800 IN NS c.nic.lv. +026C7600000200010002A300000A0164036E6963026C7600 +lv. 172800 IN NS d.nic.lv. +026C7600000200010002A300001B026C76056363746C640761757468646E730472697065036E657400 +lv. 172800 IN NS lv.cctld.authdns.ripe.net. +026C7600000200010002A30000100573756E69630573756E657402736500 +lv. 172800 IN NS sunic.sunet.se. +026C7600002B0001000151800024A42208027E932A4F9CF9B1CD047C277E3CD323A53D42347D47C7BF1DD6018FF4B344FC1C +lv. 86400 IN DS 42018 8 2 7E932A4F9CF9B1CD047C277E3CD323A53D42347D47C7BF1DD6018FF4B344FC1C +026C7600002E0001000151800093002B08010001518052F4220052EAD9708377002309793B708087F43923E7F6B7DCCBEE35276F8AD62C99B4390A766D2CCC70AADA5C8E9FA531D6CD334BD977CD0B5087A07C7869B9B9EC83D8396D6E743903B476BCD2BA01D709EDEC8AADC5F27066FF336589FF39959DD6DFD1DDCD1E233CDD6D97C0DC7D2B7F3075AD52CC6CC639EC0A3E859289BE7A4820932DAA83AF3618 +lv. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Iwl5O3CAh/Q5I+f2t9zL7jUnb4rWLJm0OQp2bSzMcKraXI6fpTHWzTNL2XfNC1CHoHx4abm57IPYOW1udDkDtHa80roB1wnt7IqtxfJwZv8zZYn/OZWd1t/R3c0eIzzdbZfA3H0rfzB1rVLMbMY57Ao+hZKJvnpIIJMtqoOvNhg= ;{id = 33655} +026C7600002E0001000151800093002F08010001518052F4220052EAD9708377006A3F3D5B8F9D6A89BFC1C14DA1A9E76389C9D99F85431EB6AA45EC730930DDF3C296A4424B48362A93E1C1A31CAA958AB272C4FED794DCE71CD8973668073BFB1BD97F849D659169FA0464B23ACAA246AA317DA9D11EE183C9207AFFB7869666E1070B750E9A89F0D7F3EBDB5CD243C851CC815105DB4B90AF9FCF7691234CCA +lv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aj89W4+daom/wcFNoannY4nJ2Z+FQx62qkXscwkw3fPClqRCS0g2KpPhwaMcqpWKsnLE/teU3Occ2Jc2aAc7+xvZf4SdZZFp+gRksjrKokaqMX2p0R7hg8kgev+3hpZm4QcLdQ6aifDX8+vbXNJDyFHMgVEF20uQr5/PdpEjTMo= ;{id = 33655} +026C7600002F000100015180000C026C79000006200000000013 +lv. 86400 IN NSEC ly. NS DS RRSIG NSEC +0161036E6963026C7600000100010002A30000045BC69C63 +a.nic.lv. 172800 IN A 91.198.156.99 +0161036E6963026C7600001C00010002A30000102A020500440007000000000000000004 +a.nic.lv. 172800 IN AAAA 2a02:500:4400:700::4 +0162036E6963026C7600000100010002A30000045CF04601 +b.nic.lv. 172800 IN A 92.240.70.1 +0163036E6963026C7600000100010002A3000004C2000118 +c.nic.lv. 172800 IN A 194.0.1.24 +0163036E6963026C7600001C00010002A300001020010678000400000000000000000018 +c.nic.lv. 172800 IN AAAA 2001:678:4::18 +0164036E6963026C7600000100010002A3000004C2000801 +d.nic.lv. 172800 IN A 194.0.8.1 +0164036E6963026C7600001C00010002A300001020010678000B00010000000000000001 +d.nic.lv. 172800 IN AAAA 2001:678:b:1::1 +026C7900000200010002A300001B026C79056363746C640761757468646E730472697065036E657400 +ly. 172800 IN NS ly.cctld.authdns.ripe.net. +026C7900000200010002A300001003646E73066C74746E6574036E657400 +ly. 172800 IN NS dns.lttnet.net. +026C7900000200010002A300001104646E7331066C74746E6574036E657400 +ly. 172800 IN NS dns1.lttnet.net. +026C7900000200010002A3000013056E732D6C7907616672696E6963036E657400 +ly. 172800 IN NS ns-ly.afrinic.net. +026C7900000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +ly. 172800 IN NS phloem.uoregon.edu. +026C7900002F000100015180000C026D61000006200000000003 +ly. 86400 IN NSEC ma. NS RRSIG NSEC +026C7900002E0001000151800093002F08010001518052F4220052EAD9708377002F378CC57603031F0223B1C828384FEE7A53A0EA53ED14F0FB31EDFF262545B2A0A4CE79347ED5B3D6EFC221ECF293784BE5A2BFD85EF4894A3FF27B8F29F4E2263DA781C0E5CAC15FF5D6CEFE471E41F689749A4A3A49C0E70EF9B56D1A32DA1241DC184DDDCB5D635124EE5E7794615982AB0E2BB9C318819CF08D1029C79D +ly. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LzeMxXYDAx8CI7HIKDhP7npToOpT7RTw+zHt/yYlRbKgpM55NH7Vs9bvwiHs8pN4S+Wiv9he9IlKP/J7jyn04iY9p4HA5crBX/XWzv5HHkH2iXSaSjpJwOcO+bVtGjLaEkHcGE3dy11jUSTuXneUYVmCqw4rucMYgZzwjRApx50= ;{id = 33655} +026D6100002F00010001518000140A6D616E6167656D656E74000006200000000003 +ma. 86400 IN NSEC management. NS RRSIG NSEC +026D6100002E0001000151800093002F08010001518052F4220052EAD97083770087E4AB0513F5E8BC3FAD2719606D806B8F62C912FF6D0B3472C4621737D6830D5C529F3517380D64AE50BFAF479AB9BFFCAA221E0F24B363A7E43D973FEBA3839566BEA8C1CED8A7DE7E5A773409F141F4CCAA4B765746B9045B777140E546A020A06A80917473AC1D229DFDAFE448300997A229EC730271544F6A143655D025 +ma. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . h+SrBRP16Lw/rScZYG2Aa49iyRL/bQs0csRiFzfWgw1cUp81FzgNZK5Qv69Hmrm//KoiHg8ks2On5D2XP+ujg5VmvqjBztin3n5adzQJ8UH0zKpLdldGuQRbd3FA5UagIKBqgJF0c6wdIp39r+RIMAmXoinscwJxVE9qFDZV0CU= ;{id = 33655} +026D6100000200010002A300001B026D61056363746C640761757468646E730472697065036E657400 +ma. 172800 IN NS ma.cctld.authdns.ripe.net. +026D6100000200010002A300000E03646E7305696E72696102667200 +ma. 172800 IN NS dns.inria.fr. +026D6100000200010002A3000010036E73310369616D036E6574026D6100 +ma. 172800 IN NS ns1.iam.net.ma. +026D6100000200010002A3000010036E73320369616D036E6574026D6100 +ma. 172800 IN NS ns2.iam.net.ma. +026D6100000200010002A300000C036E7332036E696302667200 +ma. 172800 IN NS ns2.nic.fr. +026D6100000200010002A3000010036E73330369616D036E6574026D6100 +ma. 172800 IN NS ns3.iam.net.ma. +0668617269737304616E7274026D6100000100010002A3000004C2CCF18C +hariss.anrt.ma. 172800 IN A 194.204.241.140 +04646E7332066D656E617261026D6100000100010002A300000451C06CE4 +dns2.menara.ma. 172800 IN A 81.192.108.228 +04646E7333066D656E617261026D6100000100010002A300000451C06CA4 +dns3.menara.ma. 172800 IN A 81.192.108.164 +036E73310369616D036E6574026D6100000100010002A3000004D4D9000A +ns1.iam.net.ma. 172800 IN A 212.217.0.10 +036E73320369616D036E6574026D6100000100010002A300000451C03517 +ns2.iam.net.ma. 172800 IN A 81.192.53.23 +036E73330369616D036E6574026D6100000100010002A3000004D4D9010D +ns3.iam.net.ma. 172800 IN A 212.217.1.13 +0A6D616E6167656D656E7400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +management. 172800 IN NS demand.beta.aridns.net.au. +0A6D616E6167656D656E7400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +management. 172800 IN NS demand.alpha.aridns.net.au. +0A6D616E6167656D656E7400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +management. 172800 IN NS demand.delta.aridns.net.au. +0A6D616E6167656D656E7400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +management. 172800 IN NS demand.gamma.aridns.net.au. +0A6D616E6167656D656E7400002B000100015180002472EB0802DE87320C9CC67BFF04B718F11EF3B58F3DDE54CB615882F97D2EAB6C295EE843 +management. 86400 IN DS 29419 8 2 DE87320C9CC67BFF04B718F11EF3B58F3DDE54CB615882F97D2EAB6C295EE843 +0A6D616E6167656D656E7400002E0001000151800093002B08010001518052F4220052EAD9708377005B054303063734AD27BA44655CFA87887473D32784E261FD210EA29C74A4DA51A9904341892FA4E88F2167A6A9F50DFD09B333DFE8916AEA5F99F23F85E827AE30BE2539A3D41BD71FE9EACEB9B47B18E289D6920DD6D64138CCF9934B35935CBF7EFCEE6C52F1DF506B9917CA25605C2ED013934FEE10B980DC63CBA126FDA0 +management. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WwVDAwY3NK0nukRlXPqHiHRz0yeE4mH9IQ6inHSk2lGpkENBiS+k6I8hZ6ap9Q39CbMz3+iRaupfmfI/hegnrjC+JTmj1BvXH+nqzrm0exjiidaSDdbWQTjM+ZNLNZNcv3787mxS8d9Qa5kXyiVgXC7QE5NP7hC5gNxjy6Em/aA= ;{id = 33655} +0A6D616E6167656D656E7400002E0001000151800093002F08010001518052F4220052EAD970837700720F9ADBAE7C5B5D689B4DD9C80C66AC0FB0B8A3E3722272F0D9F6E48A3D4F574AEC03C3930561A44063DB252FC9E0B040237452AB2026605CF1AE1561082E7CE90A54299CA76B3EB8DCCD3D33111D9FEE44D7948897BA1ABF10B549C934E07AA9D7D9BDD81A2946CE8775BB2FD9BBDC62FBEA7994877B469264912A6354E68C +management. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cg+a2658W11om03ZyAxmrA+wuKPjciJy8Nn25Io9T1dK7APDkwVhpEBj2yUvyeCwQCN0UqsgJmBc8a4VYQgufOkKVCmcp2s+uNzNPTMRHZ/uRNeUiJe6Gr8QtUnJNOB6qdfZvdgaKUbOh3W7L9m73GL76nmUh3tGkmSRKmNU5ow= ;{id = 33655} +0A6D616E6167656D656E7400002F0001000151800013096D61726B6574696E67000006200000000013 +management. 86400 IN NSEC marketing. NS DS RRSIG NSEC +096D61726B6574696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +marketing. 172800 IN NS demand.beta.aridns.net.au. +096D61726B6574696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +marketing. 172800 IN NS demand.alpha.aridns.net.au. +096D61726B6574696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +marketing. 172800 IN NS demand.delta.aridns.net.au. +096D61726B6574696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +marketing. 172800 IN NS demand.gamma.aridns.net.au. +096D61726B6574696E6700002B000100015180002410AB080264CC06CC6F4A935A5319A723AFE75D8BE89ACD73C4A766AB9BDF4E0C02059869 +marketing. 86400 IN DS 4267 8 2 64CC06CC6F4A935A5319A723AFE75D8BE89ACD73C4A766AB9BDF4E0C02059869 +096D61726B6574696E6700002E0001000151800093002B08010001518052F4220052EAD970837700A05EFE072E38BB31F0F6BF5964684C909B7B4C12C11D6E4CDC8B1B15AC31E9FEACDB8AE79C5CBB3222A983780ACAF3E8122B9725E4612EBC53F08712C3438B1AA732082F689E7DE0BCD58509BB76D7A8F3B61B7104A156A4FA02DB4E050D2B174758E7A1120B5DE11496F0540F7A15A44DADA3398515B9DB7E74F1D7197E8663 +marketing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oF7+By44uzHw9r9ZZGhMkJt7TBLBHW5M3IsbFawx6f6s24rnnFy7MiKpg3gKyvPoEiuXJeRhLrxT8IcSw0OLGqcyCC9onn3gvNWFCbt216jzthtxBKFWpPoC204FDSsXR1jnoRILXeEUlvBUD3oVpE2tozmFFbnbfnTx1xl+hmM= ;{id = 33655} +096D61726B6574696E6700002E0001000151800093002F08010001518052F4220052EAD970837700A328DA0BE0D0C2BE3E79098431CF3E3A287A908ABCFA1F6B1CFFC106A46A3D8E585E090DF62B1FCBDC831AC6CD689F4BB5FC130487EA13DFC88A2E9C9D58D2FEE26A846FD8C8628C83215C7724493F9307D02430501EF696E3CCD17526950E7CEBD85CA8CEE24017EAA3B1E294EBA1093E6524D99A9A5D3AB4D31E2CB2F39D35 +marketing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oyjaC+DQwr4+eQmEMc8+Oih6kIq8+h9rHP/BBqRqPY5YXgkN9isfy9yDGsbNaJ9LtfwTBIfqE9/Iii6cnVjS/uJqhG/YyGKMgyFcdyRJP5MH0CQwUB72luPM0XUmlQ5869hcqM7iQBfqo7HilOuhCT5lJNmaml06tNMeLLLznTU= ;{id = 33655} +096D61726B6574696E6700002F000100015180000C026D63000006200000000013 +marketing. 86400 IN NSEC mc. NS DS RRSIG NSEC +026D6300000200010002A300001B026D63056363746C640761757468646E730472697065036E657400 +mc. 172800 IN NS mc.cctld.authdns.ripe.net. +026D6300000200010002A300000C036E7331036E6963026D6300 +mc. 172800 IN NS ns1.nic.mc. +026D6300000200010002A300000C036E7332036E6963026D6300 +mc. 172800 IN NS ns2.nic.mc. +026D6300002F000100015180000C026D64000006200000000003 +mc. 86400 IN NSEC md. NS RRSIG NSEC +026D6300002E0001000151800093002F08010001518052F4220052EAD970837700B9C69E4864898C84D03B0E3CEA28473D2C4045FDE86DC39A32C62CD76B5F1A844EC5E20A86885FF0276ED389EF68B28B0D8C9649B64F3FFB08FCB261D93E8F1F7655B6CB46F9409BEAB9AC5BD3E82E49A789309DAF28CC0026653ADBF621474DF0A073FD4BF53294417C8D7533C8207798C56037F977C7D35ADC04E16455472C +mc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ucaeSGSJjITQOw486ihHPSxARf3obcOaMsYs12tfGoROxeIKhohf8Cdu04nvaLKLDYyWSbZPP/sI/LJh2T6PH3ZVtstG+UCb6rmsW9PoLkmniTCdryjMACZlOtv2IUdN8KBz/Uv1MpRBfI11M8ggd5jFYDf5d8fTWtwE4WRVRyw= ;{id = 33655} +036E7331036E6963026D6300000100010002A3000004C34E13D8 +ns1.nic.mc. 172800 IN A 195.78.19.216 +036E7332036E6963026D6300000100010002A3000004551FD983 +ns2.nic.mc. 172800 IN A 85.31.217.131 +026D6400000200010002A300001B026D64056363746C640761757468646E730472697065036E657400 +md. 172800 IN NS md.cctld.authdns.ripe.net. +026D6400000200010002A300000C036E736203646E73026D6400 +md. 172800 IN NS nsb.dns.md. +026D6400000200010002A300000C036E736303646E73026D6400 +md. 172800 IN NS nsc.dns.md. +026D6400000200010002A300001106646E732D6D6405726F746C6402726F00 +md. 172800 IN NS dns-md.rotld.ro. +026D6400000200010002A3000010066E732D65787403697363036F726700 +md. 172800 IN NS ns-ext.isc.org. +026D6400000200010002A300000F066E732D696E7403646E73026D6400 +md. 172800 IN NS ns-int.dns.md. +026D6400002F000100015180000C026D65000006200000000003 +md. 86400 IN NSEC me. NS RRSIG NSEC +026D6400002E0001000151800093002F08010001518052F4220052EAD97083770089D4C45736E206BB9931E3C7DAC499C0397E16C7E274988001CCE5BDA350AC9C0AEF7448EAAA26B095ED842DDF88F2C9053BD597E456FF87D463EF449E47D42C6BBEC119EA1AC49E510EDC0C0DAEF856B1CFF290C896C75C1E16F161B23B775154363FF48E6C92F84BCBA4CAF879284B0C706017D1A9CA68559189BF603B9F72 +md. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . idTEVzbiBruZMePH2sSZwDl+FsfidJiAAczlvaNQrJwK73RI6qomsJXthC3fiPLJBTvVl+RW/4fUY+9EnkfULGu+wRnqGsSeUQ7cDA2u+Faxz/KQyJbHXB4W8WGyO3dRVDY/9I5skvhLy6TK+HkoSwxwYBfRqcpoVZGJv2A7n3I= ;{id = 33655} +066E732D696E7403646E73026D6400000100010002A3000004D91A9005 +ns-int.dns.md. 172800 IN A 217.26.144.5 +036E736203646E73026D6400000100010002A3000004D91A900F +nsb.dns.md. 172800 IN A 217.26.144.15 +036E736303646E73026D6400000100010002A30000045F410903 +nsc.dns.md. 172800 IN A 95.65.9.3 +026D6500000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +me. 172800 IN NS a0.cctld.afilias-nst.info. +026D6500000200010002A3000018026132026D650B6166696C6961732D6E737404696E666F00 +me. 172800 IN NS a2.me.afilias-nst.info. +026D6500000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +me. 172800 IN NS b0.cctld.afilias-nst.org. +026D6500000200010002A3000017026232026D650B6166696C6961732D6E7374036F726700 +me. 172800 IN NS b2.me.afilias-nst.org. +026D6500000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +me. 172800 IN NS c0.cctld.afilias-nst.info. +026D6500000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +me. 172800 IN NS d0.cctld.afilias-nst.org. +026D6500000200010002A300000B026E73036E6963026D6500 +me. 172800 IN NS ns.nic.me. +026D6500000200010002A300000C036E7332036E6963026D6500 +me. 172800 IN NS ns2.nic.me. +026D6500002B00010001518000180A09070109BA1EB4D20402620881FD9848994417800DB26A +me. 86400 IN DS 2569 7 1 09BA1EB4D20402620881FD9848994417800DB26A +026D6500002B00010001518000240A09070294E798106F033500E67567B197AE9132C0E916764DC743C55A9ECA3C7BF559E2 +me. 86400 IN DS 2569 7 2 94E798106F033500E67567B197AE9132C0E916764DC743C55A9ECA3C7BF559E2 +026D6500002E0001000151800093002B08010001518052F4220052EAD970837700858A39745684070DC9A86D075E763C9F44E6517FB8B38ECB4F76BD20ACCEBC6FE234C03B504C6E8D1ED035D944EF5DAC6209903451BE9AA9603B7BEFDB3EFABD31A2225CA6515C8D8DAB5E578B9A88FA115A6E47EA7E29DCAFFDEB18050D17E0E268FDF5081EC9D84F38A5D1CCC2E8FCCE3501704B90B7BC9F0301ECF874E470 +me. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hYo5dFaEBw3JqG0HXnY8n0TmUX+4s47LT3a9IKzOvG/iNMA7UExujR7QNdlE712sYgmQNFG+mqlgO3vv2z76vTGiIlymUVyNjateV4uaiPoRWm5H6n4p3K/96xgFDRfg4mj99QgeydhPOKXRzMLo/M41AXBLkLe8nwMB7Ph05HA= ;{id = 33655} +026D6500002E0001000151800093002F08010001518052F4220052EAD9708377005C2184B57146C6A80E81D6CD40680DF1C5F8FFCD9D44AE800CA17531B88C30BEC5F924011D3A1AC6A8F7797738E4ABB79A1AF07AAD84BAE5C31104F47E1E1ED68C545FEFC60F1D352B1A75647A7A30934BB2BCEBBE1E64890F0DAC25E42A3219355D93018E13D5B440E2C5021E01D27B77F1974E6E35FBDE394916E7FE3F0EED +me. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XCGEtXFGxqgOgdbNQGgN8cX4/82dRK6ADKF1MbiMML7F+SQBHToaxqj3eXc45Ku3mhrweq2EuuXDEQT0fh4e1oxUX+/GDx01Kxp1ZHp6MJNLsrzrvh5kiQ8NrCXkKjIZNV2TAY4T1bRA4sUCHgHSe3fxl05uNfveOUkW5/4/Du0= ;{id = 33655} +026D6500002F000100015180000E046D656E75000006200000000013 +me. 86400 IN NSEC menu. NS DS RRSIG NSEC +026E73036E6963026D6500000100010002A300000459BC2C2C +ns.nic.me. 172800 IN A 89.188.44.44 +036E7332036E6963026D6500000100010002A300000459BC2C58 +ns2.nic.me. 172800 IN A 89.188.44.88 +046D656E7500000200010002A300000C0161036E6963046D656E7500 +menu. 172800 IN NS a.nic.menu. +046D656E7500000200010002A300000C0162036E6963046D656E7500 +menu. 172800 IN NS b.nic.menu. +046D656E7500000200010002A300000C0163036E6963046D656E7500 +menu. 172800 IN NS c.nic.menu. +046D656E7500000200010002A300000C0164036E6963046D656E7500 +menu. 172800 IN NS d.nic.menu. +046D656E7500002B0001000151800024CACC0802AA3C98EE447CFA3BBF57D8A2899626324DE2097353FB5DBF031519A4FE6964E6 +menu. 86400 IN DS 51916 8 2 AA3C98EE447CFA3BBF57D8A2899626324DE2097353FB5DBF031519A4FE6964E6 +046D656E7500002E0001000151800093002B08010001518052F4220052EAD97083770055578ADF0B88335CE9E3D761B62D7FA2451987E1DC45B7C73FAF716A6676FD8C6F799470BCAC6F2D6CB7116190506D1570C6B1589D6707D2154B20FF70DBC90E046B212ABD49D8F3BBBFF419C968A4CA7B8ED5B729EF98FABEDF4CCBF93B4FAF683F15FE19890BD1FC8D242115BF1B298192C681BB13A60CA5B993AD8555DA47 +menu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VVeK3wuIM1zp49dhti1/okUZh+HcRbfHP69xamZ2/YxveZRwvKxvLWy3EWGQUG0VcMaxWJ1nB9IVSyD/cNvJDgRrISq9Sdjzu7/0GclopMp7jtW3Ke+Y+r7fTMv5O0+vaD8V/hmJC9H8jSQhFb8bKYGSxoG7E6YMpbmTrYVV2kc= ;{id = 33655} +046D656E7500002E0001000151800093002F08010001518052F4220052EAD970837700226D581DE209743C307261CDD520612C545429EC04ABAB1993AB43AB2888326E1D7BBA2C9F66B108F6B9C034B33B722F540F2CA1651FB9FECF86B62238C6E99F7D890CEA9A1CCBD2CD190B4BA12C4D8D9625A343D7085783A04EE5EA14C26C92B0F88D747AAEC9DCA0EC743F380A3C86E88DFD1373F21D9A70318AE986E1116D +menu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Im1YHeIJdDwwcmHN1SBhLFRUKewEq6sZk6tDqyiIMm4de7osn2axCPa5wDSzO3IvVA8soWUfuf7PhrYiOMbpn32JDOqaHMvSzRkLS6EsTY2WJaND1whXg6BO5eoUwmySsPiNdHquydyg7HQ/OAo8huiN/RNz8h2acDGK6YbhEW0= ;{id = 33655} +046D656E7500002F000100015180000C026D67000006200000000013 +menu. 86400 IN NSEC mg. NS DS RRSIG NSEC +0161036E6963046D656E7500000100010002A300000425D1C00A +a.nic.menu. 172800 IN A 37.209.192.10 +0161036E6963046D656E7500001C00010002A300001020010DCD000100000000000000000010 +a.nic.menu. 172800 IN AAAA 2001:dcd:1::10 +0162036E6963046D656E7500000100010002A300000425D1C20A +b.nic.menu. 172800 IN A 37.209.194.10 +0162036E6963046D656E7500001C00010002A300001020010DCD000200000000000000000010 +b.nic.menu. 172800 IN AAAA 2001:dcd:2::10 +0163036E6963046D656E7500000100010002A300000425D1C40A +c.nic.menu. 172800 IN A 37.209.196.10 +0163036E6963046D656E7500001C00010002A300001020010DCD000300000000000000000010 +c.nic.menu. 172800 IN AAAA 2001:dcd:3::10 +0164036E6963046D656E7500000100010002A300000425D1C60A +d.nic.menu. 172800 IN A 37.209.198.10 +0164036E6963046D656E7500001C00010002A300001020010DCD000400000000000000000010 +d.nic.menu. 172800 IN AAAA 2001:dcd:4::10 +026D6700000200010002A300001B026D67056363746C640761757468646E730472697065036E657400 +mg. 172800 IN NS mg.cctld.authdns.ripe.net. +026D6700000200010002A300000B026E7303647473026D6700 +mg. 172800 IN NS ns.dts.mg. +026D6700000200010002A300000B026E73036E6963026D6700 +mg. 172800 IN NS ns.nic.mg. +026D6700000200010002A3000010036D67310664796E746C64036E657400 +mg. 172800 IN NS mg1.dyntld.net. +026D6700000200010002A3000010036D67320664796E746C64036E657400 +mg. 172800 IN NS mg2.dyntld.net. +026D6700000200010002A3000010036D67330664796E746C64036E657400 +mg. 172800 IN NS mg3.dyntld.net. +026D6700000200010002A3000010036D67340664796E746C64036E657400 +mg. 172800 IN NS mg4.dyntld.net. +026D6700000200010002A300000C036E73310369726402667200 +mg. 172800 IN NS ns1.ird.fr. +026D6700000200010002A3000014056E732D6D67086D616C616761737903636F6D00 +mg. 172800 IN NS ns-mg.malagasy.com. +026D6700002F000100015180000C026D68000006200000000003 +mg. 86400 IN NSEC mh. NS RRSIG NSEC +026D6700002E0001000151800093002F08010001518052F4220052EAD970837700491765D2E2806BCA9617DC88F2ADE7E28BFC0778751CA50F3A9D5243EF5DB238DA348B94601F156C0092E0D4ACF957D1052C67E489277A0604446A036CCE72893E8896C15CCE576C2FDC0D0D9E49A7E06C10613FB2C143F5429FA8A794B9E416581DBBFF8BC7D11C9A0568BDDCD98C2ED58597704890034D9A4A66280EAA2395 +mg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SRdl0uKAa8qWF9yI8q3n4ov8B3h1HKUPOp1SQ+9dsjjaNIuUYB8VbACS4NSs+VfRBSxn5IknegYERGoDbM5yiT6IlsFczldsL9wNDZ5Jp+BsEGE/ssFD9UKfqKeUueQWWB27/4vH0RyaBWi93NmMLtWFl3BIkANNmkpmKA6qI5U= ;{id = 33655} +026E7303647473026D6700000100010002A3000004C4C02002 +ns.dts.mg. 172800 IN A 196.192.32.2 +026E73036E6963026D6700000100010002A3000004C4C02A99 +ns.nic.mg. 172800 IN A 196.192.42.153 +026D6800000200010002A300000F026E73066E74616D6172036E657400 +mh. 172800 IN NS ns.ntamar.net. +026D6800000200010002A3000015026E730C616D61727368616C6C696E6303636F6D00 +mh. 172800 IN NS ns.amarshallinc.com. +026D6800002F000100015180000D036D696C000006200000000003 +mh. 86400 IN NSEC mil. NS RRSIG NSEC +026D6800002E0001000151800093002F08010001518052F4220052EAD970837700675BF951C6D50AC81E70BC35A527CA00ABCCE94C83AA870C0DDAC0E91B4D46156B625E7363D36A85B8F9F5FB4BD8CCF1AD2002761874FAD748973C1FF8F882DD8E93F082655C2EC993DE91EE9966A6A839D6CFB4791AF4DE194CA17E5256195F438FD4CC5E3429CF29D408E0ED79463F14814D632B0709768AFA28C55DD9CF25 +mh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Z1v5UcbVCsgecLw1pSfKAKvM6UyDqocMDdrA6RtNRhVrYl5zY9Nqhbj59ftL2MzxrSACdhh0+tdIlzwf+PiC3Y6T8IJlXC7Jk96R7plmpqg51s+0eRr03hlMoX5SVhlfQ4/UzF40Kc8p1Ajg7XlGPxSBTWMrBwl2ivooxV3ZzyU= ;{id = 33655} +036D696C00000200010002A300000F04636F6E31046E697072036D696C00 +mil. 172800 IN NS con1.nipr.mil. +036D696C00000200010002A300000F04636F6E32046E697072036D696C00 +mil. 172800 IN NS con2.nipr.mil. +036D696C00000200010002A300000F0465757231046E697072036D696C00 +mil. 172800 IN NS eur1.nipr.mil. +036D696C00000200010002A300000F0465757232046E697072036D696C00 +mil. 172800 IN NS eur2.nipr.mil. +036D696C00000200010002A300000F0470616331046E697072036D696C00 +mil. 172800 IN NS pac1.nipr.mil. +036D696C00000200010002A300000F0470616332046E697072036D696C00 +mil. 172800 IN NS pac2.nipr.mil. +036D696C00002B000100015180001880E9080102AE8EE2915FF47023EFD96A649D997069196C01 +mil. 86400 IN DS 33001 8 1 02AE8EE2915FF47023EFD96A649D997069196C01 +036D696C00002B000100015180002480E908027BE472D58626F033479706F80DFBABBDFA3BE748C3E94B7D97E9DD5331A5288E +mil. 86400 IN DS 33001 8 2 7BE472D58626F033479706F80DFBABBDFA3BE748C3E94B7D97E9DD5331A5288E +036D696C00002E0001000151800093002B08010001518052F4220052EAD970837700652F54862DD7DC9BA327DD7C9AAA502913E97E24F20BF23B343ABE0A3E032E1D51E974CBD4518B6CF98691BABF61E4CD3712509D307AA138CB5007D044773E7AB9807C76B2293A03B22B826C58CD4D99C3EB9E333F578FD9AEB64B02EBD6394236077AD69F639457E625E35F56C9243F0266EE43F02F8C6E9C90FCE7EF883B5E +mil. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZS9Uhi3X3JujJ918mqpQKRPpfiTyC/I7NDq+Cj4DLh1R6XTL1FGLbPmGkbq/YeTNNxJQnTB6oTjLUAfQRHc+ermAfHayKToDsiuCbFjNTZnD654zP1eP2a62SwLr1jlCNgd61p9jlFfmJeNfVskkPwJm7kPwL4xunJD85++IO14= ;{id = 33655} +036D696C00002E0001000151800093002F08010001518052F4220052EAD9708377005ACBAB217A1C37EC603B223CF0FC6BBD6DB8E100D1AD50DABDE7CE02753FF6A8FE4D1042DBB03D8D9B99AF2C6B423206FCB4E43750475CA2E9214B2B08863955E0AB3B87961760B046AF352D303A983074B577233D62DA8FCAC00BBE06618B047A1B27EC7D5CE6DFF2BBE10EB7C8B9109707CF2C21014FD03D74FF38598CD77A +mil. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WsurIXocN+xgOyI88PxrvW244QDRrVDavefOAnU/9qj+TRBC27A9jZuZryxrQjIG/LTkN1BHXKLpIUsrCIY5VeCrO4eWF2CwRq81LTA6mDB0tXcjPWLaj8rAC74GYYsEehsn7H1c5t/yu+EOt8i5EJcHzywhAU/QPXT/OFmM13o= ;{id = 33655} +036D696C00002F000100015180000C026D6B000006200000000013 +mil. 86400 IN NSEC mk. NS DS RRSIG NSEC +04636F6E31046E697072036D696C00000100010002A3000004C7FC9DEA +con1.nipr.mil. 172800 IN A 199.252.157.234 +04636F6E32046E697072036D696C00000100010002A3000004C7FCA2EA +con2.nipr.mil. 172800 IN A 199.252.162.234 +0465757231046E697072036D696C00000100010002A3000004C7FC9AEA +eur1.nipr.mil. 172800 IN A 199.252.154.234 +0465757232046E697072036D696C00000100010002A3000004C7FC8FEA +eur2.nipr.mil. 172800 IN A 199.252.143.234 +0470616331046E697072036D696C00000100010002A3000004C7FCB4EA +pac1.nipr.mil. 172800 IN A 199.252.180.234 +0470616332046E697072036D696C00000100010002A3000004C7FC9BEA +pac2.nipr.mil. 172800 IN A 199.252.155.234 +026D6B00000200010002A300000E036E73320561726E657302736900 +mk. 172800 IN NS ns2.arnes.si. +026D6B00000200010002A3000012036E733506756E6976696502616302617400 +mk. 172800 IN NS ns5.univie.ac.at. +026D6B00000200010002A300000D037269700370736703636F6D00 +mk. 172800 IN NS rip.psg.com. +026D6B00000200010002A3000015056B69746B61066D61726E6574036E6574026D6B00 +mk. 172800 IN NS kitka.marnet.net.mk. +026D6B00002F000100015180000C026D6C000006200000000003 +mk. 86400 IN NSEC ml. NS RRSIG NSEC +026D6B00002E0001000151800093002F08010001518052F4220052EAD970837700525319777AF774EADDF95BEE7E617F1E95AAF31DC5B2C4267D1C7EF06CEFD8C830E7F0C20CCC047CCD7D8E30A68F1AF6DEEDD73733B6A934B2B8BD22BC632C7AA9D3BACF606153DF8B200F9DB102F8AA47E5933D6EE65F195BF607711BBBC0B3D1B800DE5EAC02A147BADB95CBDC79B225AC22645A013B7543FD8D435F0C5104 +mk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UlMZd3r3dOrd+VvufmF/HpWq8x3FssQmfRx+8Gzv2Mgw5/DCDMwEfM19jjCmjxr23u3XNzO2qTSyuL0ivGMseqnTus9gYVPfiyAPnbEC+KpH5ZM9buZfGVv2B3Ebu8Cz0bgA3l6sAqFHutuVy9x5siWsImRaATt1Q/2NQ18MUQQ= ;{id = 33655} +056B69746B61066D61726E6574036E6574026D6B00000100010002A3000004C2958302 +kitka.marnet.net.mk. 172800 IN A 194.149.131.2 +056B69746B61066D61726E6574036E6574026D6B00001C00010002A30000102A020E48000000030000000000000002 +kitka.marnet.net.mk. 172800 IN AAAA 2a02:e48:0:3::2 +026D6C00000200010002A30000090161026E73026D6C00 +ml. 172800 IN NS a.ns.ml. +026D6C00000200010002A30000090162026E73026D6C00 +ml. 172800 IN NS b.ns.ml. +026D6C00000200010002A30000090163026E73026D6C00 +ml. 172800 IN NS c.ns.ml. +026D6C00000200010002A30000090164026E73026D6C00 +ml. 172800 IN NS d.ns.ml. +026D6C00002F000100015180000C026D6D000006200000000003 +ml. 86400 IN NSEC mm. NS RRSIG NSEC +026D6C00002E0001000151800093002F08010001518052F4220052EAD9708377003B1ED730E03F6D25D24618EAC500D8E3B22C6995D21BC45C5C468699A2CAE980EF3E7EC15729F50A8ED51035DD2CA7A20F9D8E80E9158BB7918774A8F19B2BE2D2DE5E421BD2C3094C3B88A389D59F80A1E5725CB181041480D0E1066E679F3FD803F8209149577F4DEB0ADD50D97C21CE53F3CA295336A2AAC2DC1B074D3320 +ml. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ox7XMOA/bSXSRhjqxQDY47IsaZXSG8RcXEaGmaLK6YDvPn7BVyn1Co7VEDXdLKeiD52OgOkVi7eRh3So8Zsr4tLeXkIb0sMJTDuIo4nVn4Ch5XJcsYEEFIDQ4QZuZ58/2AP4IJFJV39N6wrdUNl8Ic5T88opUzaiqsLcGwdNMyA= ;{id = 33655} +0161026E73026D6C00000100010002A3000004B915A801 +a.ns.ml. 172800 IN A 185.21.168.1 +0161026E73026D6C00001C00010002A30000102A041B00000000000000000000000001 +a.ns.ml. 172800 IN AAAA 2a04:1b00::1 +0162026E73026D6C00000100010002A3000004B915A901 +b.ns.ml. 172800 IN A 185.21.169.1 +0162026E73026D6C00001C00010002A30000102A041B00000100000000000000000001 +b.ns.ml. 172800 IN AAAA 2a04:1b00:1::1 +0163026E73026D6C00000100010002A3000004B915AA01 +c.ns.ml. 172800 IN A 185.21.170.1 +0163026E73026D6C00001C00010002A30000102A041B00000200000000000000000001 +c.ns.ml. 172800 IN AAAA 2a04:1b00:2::1 +0164026E73026D6C00000100010002A3000004B915AB01 +d.ns.ml. 172800 IN A 185.21.171.1 +0164026E73026D6C00001C00010002A30000102A041B00000300000000000000000001 +d.ns.ml. 172800 IN AAAA 2a04:1b00:3::1 +026D6D00000200010002A300001B026D6D056363746C640761757468646E730472697065036E657400 +mm. 172800 IN NS mm.cctld.authdns.ripe.net. +026D6D00000200010002A3000010036E7330036E6963036E6574026D6D00 +mm. 172800 IN NS ns0.nic.net.mm. +026D6D00000200010002A3000010036E7331036E6963036E6574026D6D00 +mm. 172800 IN NS ns1.nic.net.mm. +026D6D00000200010002A3000010036E7332036E6963036E6574026D6D00 +mm. 172800 IN NS ns2.nic.net.mm. +026D6D00002B000100015180001838F508018B0ED592A997E801DAFADA2CD4CC31999BDA8782 +mm. 86400 IN DS 14581 8 1 8B0ED592A997E801DAFADA2CD4CC31999BDA8782 +026D6D00002E0001000151800093002B08010001518052F4220052EAD9708377003E3470FE02816F78B607FD5C84F6B9DC89B21B9BED86737A2DB5F8EFD264EEB7E78688D258EAAF398E05458662C9140CC5519BA3048D3D6C1CCBF33A4B3EB9EB797397C1B65686754CA13E38677A2E51F9FEBC0F0E9E7E9C66EABD0196299F587C9E099AAC52E28F2B09591DE2AF347B73B5720412E203F43DA23EA870D48F6F +mm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PjRw/gKBb3i2B/1chPa53ImyG5vthnN6LbX479Jk7rfnhojSWOqvOY4FRYZiyRQMxVGbowSNPWwcy/M6Sz6563lzl8G2VoZ1TKE+OGd6LlH5/rwPDp5+nGbqvQGWKZ9YfJ4JmqxS4o8rCVkd4q80e3O1cgQS4gP0PaI+qHDUj28= ;{id = 33655} +026D6D00002E0001000151800093002F08010001518052F4220052EAD9708377005AE93F71A91E8BCE190A554FD62660387309A86E5CDD15B474B85375B9FC7FCCEAD696EB06759550F5C9037073035B4C70F9EE5C9BC8675B9D52A4F99C0E75A794978E80063F35C9DF6A3D11329D20357636F318AFF5DD0B63929CB393AD3F8859401256452823CA3933DF8C318E6B982B6DE69B8067C82C34925D5834FE5136 +mm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Wuk/cakei84ZClVP1iZgOHMJqG5c3RW0dLhTdbn8f8zq1pbrBnWVUPXJA3BzA1tMcPnuXJvIZ1udUqT5nA51p5SXjoAGPzXJ32o9ETKdIDV2NvMYr/XdC2OSnLOTrT+IWUASVkUoI8o5M9+MMY5rmCtt5puAZ8gsNJJdWDT+UTY= ;{id = 33655} +026D6D00002F000100015180000C026D6E000006200000000013 +mm. 86400 IN NSEC mn. NS DS RRSIG NSEC +036E7330036E6963036E6574026D6D00000100010002A3000004CB514014 +ns0.nic.net.mm. 172800 IN A 203.81.64.20 +036E7331036E6963036E6574026D6D00000100010002A3000004CB515155 +ns1.nic.net.mm. 172800 IN A 203.81.81.85 +036E7332036E6963036E6574026D6D00000100010002A3000004CB515C0A +ns2.nic.net.mm. 172800 IN A 203.81.92.10 +026D6E00002F000100015180000C026D6F000006200000000013 +mn. 86400 IN NSEC mo. NS DS RRSIG NSEC +026D6E00002E0001000151800093002F08010001518052F4220052EAD970837700399CF5254529B591E73154FB5BB1174243A2CF96F61B34E07EADC78864F679369DF1F66487159CCE7F253F592ED531D136E9FAF043D1A78E42B1AECFF7FEEAAF9618A20532A01F32A268EE4E7A42A25221CD2FC1F7F2AB6041908B9410F427E9C0EE724F3414ACDAAF3F139D93619DCC1A54BA7F1BE89B5F6203F3C68B01BA95 +mn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OZz1JUUptZHnMVT7W7EXQkOiz5b2GzTgfq3HiGT2eTad8fZkhxWczn8lP1ku1THRNun68EPRp45Csa7P9/7qr5YYogUyoB8yomjuTnpColIhzS/B9/KrYEGQi5QQ9CfpwO5yTzQUrNqvPxOdk2GdzBpUun8b6JtfYgPzxosBupU= ;{id = 33655} +026D6E00002E0001000151800093002B08010001518052F4220052EAD9708377004168AC1816B36B59642CE278C79A3B4A71D5F7EA893BBEFD9DD54991CDF4DA9E142D2D22A90C53C5484BC3D5F31E159DAF9A2E4B9ED00D954A1A2F088D5585A15209C74DD9D29526BC76E2C534CC946E99ACDD3BEAEFCF6DF74A9A42194A9A1FEFFA80BE461E67994346D4C571273D6ABB60B057E85E2273D39972AA7A1F8E2D +mn. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QWisGBaza1lkLOJ4x5o7SnHV9+qJO779ndVJkc302p4ULS0iqQxTxUhLw9XzHhWdr5ouS57QDZVKGi8IjVWFoVIJx03Z0pUmvHbixTTMlG6ZrN076u/PbfdKmkIZSpof7/qAvkYeZ5lDRtTFcSc9artgsFfoXiJz05lyqnofji0= ;{id = 33655} +026D6E00000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +mn. 172800 IN NS a0.cctld.afilias-nst.info. +026D6E00000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +mn. 172800 IN NS a2.cctld.afilias-nst.info. +026D6E00000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +mn. 172800 IN NS b0.cctld.afilias-nst.org. +026D6E00000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +mn. 172800 IN NS b2.cctld.afilias-nst.org. +026D6E00000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +mn. 172800 IN NS c0.cctld.afilias-nst.info. +026D6E00000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +mn. 172800 IN NS d0.cctld.afilias-nst.org. +026D6E00000200010002A300000E036E7331056D61676963026D6E00 +mn. 172800 IN NS ns1.magic.mn. +026D6E00000200010002A300000E036E7332056D61676963026D6E00 +mn. 172800 IN NS ns2.magic.mn. +026D6E00000200010002A300000E036E7333056D61676963026D6E00 +mn. 172800 IN NS ns3.magic.mn. +026D6E00000200010002A300000E036E7334056D61676963026D6E00 +mn. 172800 IN NS ns4.magic.mn. +026D6E00002B0001000151800018EF7307017AED0B5BF96D4A045071FE60B6B1BE8F41A3D8A4 +mn. 86400 IN DS 61299 7 1 7AED0B5BF96D4A045071FE60B6B1BE8F41A3D8A4 +026D6E00002B0001000151800024EF73070235AD84BA39FF62258FE6052F8E31E67C341D6CFA41D38A4698F9F35FB68E30B6 +mn. 86400 IN DS 61299 7 2 35AD84BA39FF62258FE6052F8E31E67C341D6CFA41D38A4698F9F35FB68E30B6 +036E73310369646E026D6E00000100010002A3000004CAAA5028 +ns1.idn.mn. 172800 IN A 202.170.80.40 +036E73320369646E026D6E00000100010002A3000004CA83000B +ns2.idn.mn. 172800 IN A 202.131.0.11 +036E73330369646E026D6E00000100010002A3000004CAB4D812 +ns3.idn.mn. 172800 IN A 202.180.216.18 +036E7331056D61676963026D6E00000100010002A3000004CA83000A +ns1.magic.mn. 172800 IN A 202.131.0.10 +036E7332056D61676963026D6E00000100010002A3000004CA48F105 +ns2.magic.mn. 172800 IN A 202.72.241.5 +036E7333056D61676963026D6E00000100010002A3000004CA83E050 +ns3.magic.mn. 172800 IN A 202.131.224.80 +036E7334056D61676963026D6E00000100010002A3000004DA64541A +ns4.magic.mn. 172800 IN A 218.100.84.26 +026D6F00000200010002A300000C0161056D6F6E6963026D6F00 +mo. 172800 IN NS a.monic.mo. +026D6F00000200010002A300000C0162056D6F6E6963026D6F00 +mo. 172800 IN NS b.monic.mo. +026D6F00000200010002A300000C0163056D6F6E6963026D6F00 +mo. 172800 IN NS c.monic.mo. +026D6F00000200010002A300000C0164056D6F6E6963026D6F00 +mo. 172800 IN NS d.monic.mo. +026D6F00000200010002A300000C0165056D6F6E6963026D6F00 +mo. 172800 IN NS e.monic.mo. +026D6F00000200010002A3000011036E7332046375686B0365647502686B00 +mo. 172800 IN NS ns2.cuhk.edu.hk. +026D6F00000200010002A300000F046E7331370463646E73036E657400 +mo. 172800 IN NS ns17.cdns.net. +026D6F00002F000100015180000E046D6F6269000006200000000003 +mo. 86400 IN NSEC mobi. NS RRSIG NSEC +026D6F00002E0001000151800093002F08010001518052F4220052EAD97083770073B9D8AF39074194F3C37132834672735FD0D96DFAC36B7461468CDC98DBEFDE50FE1530C3B5E6DAFA6C29749B79A24173A7E65573E09D36BFEBF5F2B0474EA1293E5E3712CE37372C5AA39695A1F4EF1F96DFAEF913DF8FC54D608B31399960257F03DF45A01648387936050A04E2CD427D0B0250AD31FEA65025F931CA4930 +mo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . c7nYrzkHQZTzw3Eyg0Zyc1/Q2W36w2t0YUaM3Jjb795Q/hUww7Xm2vpsKXSbeaJBc6fmVXPgnTa/6/XysEdOoSk+XjcSzjc3LFqjlpWh9O8flt+u+RPfj8VNYIsxOZlgJX8D30WgFkg4eTYFCgTizUJ9CwJQrTH+plAl+THKSTA= ;{id = 33655} +0161056D6F6E6963026D6F00000100010002A3000004CAAF572F +a.monic.mo. 172800 IN A 202.175.87.47 +0162056D6F6E6963026D6F00000100010002A3000004CAAF5730 +b.monic.mo. 172800 IN A 202.175.87.48 +0163056D6F6E6963026D6F00000100010002A3000004CAAF5731 +c.monic.mo. 172800 IN A 202.175.87.49 +0164056D6F6E6963026D6F00000100010002A3000004CAAF3373 +d.monic.mo. 172800 IN A 202.175.51.115 +0165056D6F6E6963026D6F00000100010002A3000004CAAF3374 +e.monic.mo. 172800 IN A 202.175.51.116 +046D6F626900000200010002A300001A026130046D6F62690B6166696C6961732D6E737404696E666F00 +mobi. 172800 IN NS a0.mobi.afilias-nst.info. +046D6F626900000200010002A300001A026132046D6F62690B6166696C6961732D6E737404696E666F00 +mobi. 172800 IN NS a2.mobi.afilias-nst.info. +046D6F626900000200010002A3000019026230046D6F62690B6166696C6961732D6E7374036F726700 +mobi. 172800 IN NS b0.mobi.afilias-nst.org. +046D6F626900000200010002A3000019026232046D6F62690B6166696C6961732D6E7374036F726700 +mobi. 172800 IN NS b2.mobi.afilias-nst.org. +046D6F626900000200010002A300001A026330046D6F62690B6166696C6961732D6E737404696E666F00 +mobi. 172800 IN NS c0.mobi.afilias-nst.info. +046D6F626900000200010002A3000019026430046D6F62690B6166696C6961732D6E7374036F726700 +mobi. 172800 IN NS d0.mobi.afilias-nst.org. +046D6F626900002F000100015180000E046D6F6461000006200000000003 +mobi. 86400 IN NSEC moda. NS RRSIG NSEC +046D6F626900002E0001000151800093002F08010001518052F4220052EAD970837700713CA9BD27C5E5B8516E36B0659CC993A8E81E88153FA57465699C3E9DE2BD2962F876B745DC2DDB8FD730C45866C06CFC591474640BD47275EA22828E40CCBC1A3088E6631C2D568B0EA52A7E01ADC4DF39639A78169EEB2BB7AA17ED98243499E8C732D27DA3F65348153604C2041AC31574F1CEA7EB984766BC4D8C9F2802 +mobi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cTypvSfF5bhRbjawZZzJk6joHogVP6V0ZWmcPp3ivSli+Ha3Rdwt24/XMMRYZsBs/FkUdGQL1HJ16iKCjkDMvBowiOZjHC1Wiw6lKn4BrcTfOWOaeBae6yu3qhftmCQ0mejHMtJ9o/ZTSBU2BMIEGsMVdPHOp+uYR2a8TYyfKAI= ;{id = 33655} +046D6F646100000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +moda. 172800 IN NS demand.beta.aridns.net.au. +046D6F646100000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +moda. 172800 IN NS demand.alpha.aridns.net.au. +046D6F646100000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +moda. 172800 IN NS demand.delta.aridns.net.au. +046D6F646100000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +moda. 172800 IN NS demand.gamma.aridns.net.au. +046D6F646100002B000100015180002496C4080263CCF0EB3E518D41F9E52DBE7DC0762567BB8A6CFF1162A3305A445FA42ACDFD +moda. 86400 IN DS 38596 8 2 63CCF0EB3E518D41F9E52DBE7DC0762567BB8A6CFF1162A3305A445FA42ACDFD +046D6F646100002E0001000151800093002B08010001518052F4220052EAD970837700AA3AC3BC67AB1FC746D10CE984D9155705698E55B71D98778D35A029A1F14BC83F71C9EA7C549C9A465282F2264D52873410CB979E2275B8FA903C043D6EAC5E32A1BE425AB7335E8C46DAE974F6A6816027E79B6F902BF48E1A0F6116E6DED212C1EC077D38B01A341BCC834E8054FD12525B5513152C45C0C53143424BC32B +moda. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qjrDvGerH8dG0QzphNkVVwVpjlW3HZh3jTWgKaHxS8g/ccnqfFScmkZSgvImTVKHNBDLl54idbj6kDwEPW6sXjKhvkJatzNejEba6XT2poFgJ+ebb5Ar9I4aD2EW5t7SEsHsB304sBo0G8yDToBU/RJSW1UTFSxFwMUxQ0JLwys= ;{id = 33655} +046D6F646100002E0001000151800093002F08010001518052F4220052EAD9708377004F425F4894B86920D0136D3353D622CF9206013ED27159752D833E42E9D33D2EAD328524ED10AEBA2EDD63E0B7B7D865D4E334DEDFD30B038DC789F41213C62FF188A817CC06C394D73556ACB128BDD9500E283404D7CCE71C5C3236A2302D2EB693EA3D335A512F84A763C69285E3EE703893F68E3C4880E534A38D57D30EFC +moda. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T0JfSJS4aSDQE20zU9Yiz5IGAT7ScVl1LYM+QunTPS6tMoUk7RCuui7dY+C3t9hl1OM03t/TCwONx4n0EhPGL/GIqBfMBsOU1zVWrLEovdlQDig0BNfM5xxcMjaiMC0utpPqPTNaUS+Ep2PGkoXj7nA4k/aOPEiA5TSjjVfTDvw= ;{id = 33655} +046D6F646100002F0001000151800010066D6F6E617368000006200000000013 +moda. 86400 IN NSEC monash. NS DS RRSIG NSEC +066D6F6E61736800000200010002A300000E0161036E6963066D6F6E61736800 +monash. 172800 IN NS a.nic.monash. +066D6F6E61736800000200010002A300000E0162036E6963066D6F6E61736800 +monash. 172800 IN NS b.nic.monash. +066D6F6E61736800000200010002A300000E0163036E6963066D6F6E61736800 +monash. 172800 IN NS c.nic.monash. +066D6F6E61736800000200010002A300000E0164036E6963066D6F6E61736800 +monash. 172800 IN NS d.nic.monash. +066D6F6E61736800002B000100015180002418D30802BC8C82B3E65FC95A0610ED0F56190D4D0B78033F437EB48C2DD54F0E0AEB3BBD +monash. 86400 IN DS 6355 8 2 BC8C82B3E65FC95A0610ED0F56190D4D0B78033F437EB48C2DD54F0E0AEB3BBD +066D6F6E61736800002E0001000151800093002B08010001518052F4220052EAD97083770030D2A51C35568F238DBDFDCC76DED37EBBAC72760B6BE6411D28BB6002AB91063560E71B29E887052F56E07C87D3BBFD1C5B11D94EDAB3D646413F0B65DA6DC612DDA870A09511CEF5E93A3FE4FA0E8684D1ACD54FF22259BD782BFC7050EC5170E991E3C3B3BD3861B54BD5E2B2643FAE2A2B87B5623B73A334C40037B10E3C +monash. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MNKlHDVWjyONvf3Mdt7TfruscnYLa+ZBHSi7YAKrkQY1YOcbKeiHBS9W4HyH07v9HFsR2U7as9ZGQT8LZdptxhLdqHCglRHO9ek6P+T6DoaE0azVT/IiWb14K/xwUOxRcOmR48OzvThhtUvV4rJkP64qK4e1YjtzozTEADexDjw= ;{id = 33655} +066D6F6E61736800002E0001000151800093002F08010001518052F4220052EAD97083770007716CC4DF07DD023B7375E798AA9F991745ABF423A07CE47294361FBE78D4545CF259697B0284851D35F6C63677F3FCA25672FEA3CC975DA74E8F06767944984A511C7E7ED9DC07052FA9520F26731EA194DA6870BF752FEE40C028AE3D2841AA8747324AEFB6673E9E8D3CB4313883E21531178E71E61D873FEF2711BBF218 +monash. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . B3FsxN8H3QI7c3XnmKqfmRdFq/QjoHzkcpQ2H7541FRc8llpewKEhR019sY2d/P8olZy/qPMl12nTo8GdnlEmEpRHH5+2dwHBS+pUg8mcx6hlNpocL91L+5AwCiuPShBqodHMkrvtmc+no08tDE4g+IVMReOceYdhz/vJxG78hg= ;{id = 33655} +066D6F6E61736800002F000100015180000C026D70000006200000000013 +monash. 86400 IN NSEC mp. NS DS RRSIG NSEC +0161036E6963066D6F6E61736800000100010002A300000425D1C009 +a.nic.monash. 172800 IN A 37.209.192.9 +0161036E6963066D6F6E61736800001C00010002A300001020010DCD000100000000000000000009 +a.nic.monash. 172800 IN AAAA 2001:dcd:1::9 +0162036E6963066D6F6E61736800000100010002A300000425D1C209 +b.nic.monash. 172800 IN A 37.209.194.9 +0162036E6963066D6F6E61736800001C00010002A300001020010DCD000200000000000000000009 +b.nic.monash. 172800 IN AAAA 2001:dcd:2::9 +0163036E6963066D6F6E61736800000100010002A300000425D1C409 +c.nic.monash. 172800 IN A 37.209.196.9 +0163036E6963066D6F6E61736800001C00010002A300001020010DCD000300000000000000000009 +c.nic.monash. 172800 IN AAAA 2001:dcd:3::9 +0164036E6963066D6F6E61736800000100010002A300000425D1C609 +d.nic.monash. 172800 IN A 37.209.198.9 +0164036E6963066D6F6E61736800001C00010002A300001020010DCD000400000000000000000009 +d.nic.monash. 172800 IN AAAA 2001:dcd:4::9 +026D7000000200010002A300000C036E7331036E6963026D7000 +mp. 172800 IN NS ns1.nic.mp. +026D7000000200010002A300000C036E7332036E6963026D7000 +mp. 172800 IN NS ns2.nic.mp. +026D7000000200010002A300000C036E7333036E6963026D7000 +mp. 172800 IN NS ns3.nic.mp. +026D7000000200010002A300000C036E7334036E6963026D7000 +mp. 172800 IN NS ns4.nic.mp. +026D7000002F000100015180000C026D71000006200000000003 +mp. 86400 IN NSEC mq. NS RRSIG NSEC +026D7000002E0001000151800093002F08010001518052F4220052EAD9708377000DA27ABFF6DE32A5BB51AE9E45EFD32B4E51B25A8A428421D990B779C2E5640F6CC253C8FD1F336DD1DE07D4FAA81DAB7050D2835183C7BD80AF33BE07EA51F41048C51405AEA868218E0DEA5B705ECF1D60CDAD29F5772156C42971F29351AD184F1414A82F72F42ABB82BF9C011964FEF29E99E4966D798BDCBFFCC3CF31BD +mp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DaJ6v/beMqW7Ua6eRe/TK05RslqKQoQh2ZC3ecLlZA9swlPI/R8zbdHeB9T6qB2rcFDSg1GDx72ArzO+B+pR9BBIxRQFrqhoIY4N6ltwXs8dYM2tKfV3IVbEKXHyk1GtGE8UFKgvcvQqu4K/nAEZZP7ynpnklm15i9y//MPPMb0= ;{id = 33655} +036E7331036E6963026D7000000100010002A3000004CA801D02 +ns1.nic.mp. 172800 IN A 202.128.29.2 +036E7332036E6963026D7000000100010002A3000004CA801D87 +ns2.nic.mp. 172800 IN A 202.128.29.135 +036E7333036E6963026D7000000100010002A30000044B658159 +ns3.nic.mp. 172800 IN A 75.101.129.89 +036E7334036E6963026D7000000100010002A30000044B658565 +ns4.nic.mp. 172800 IN A 75.101.133.101 +026D7100000200010002A3000016066E73312D6672096D6564696173657276036E657400 +mq. 172800 IN NS ns1-fr.mediaserv.net. +026D7100000200010002A3000016066E73312D6770096D6564696173657276036E657400 +mq. 172800 IN NS ns1-gp.mediaserv.net. +026D7100000200010002A3000016066E73312D6D71096D6564696173657276036E657400 +mq. 172800 IN NS ns1-mq.mediaserv.net. +026D7100002F000100015180000C026D72000006200000000003 +mq. 86400 IN NSEC mr. NS RRSIG NSEC +026D7100002E0001000151800093002F08010001518052F4220052EAD9708377001D1C8820C17B02FE6F89244AA9FE8280DFA326816DE8BD4CC31722468CDABA226E22D4AF6F6DE19AD71AF8DAA98AD343802DDB3166B8024A3A55BD507890D17648520EB8EC4212320E7C9B3CD124CFCC5B23B6104C876BD0907EA8550E6886244FF5C7913161445CD4D180B794D42664CA4FD7955DAA6F3D63DDD5F86B583B7E +mq. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HRyIIMF7Av5viSRKqf6CgN+jJoFt6L1MwxciRozauiJuItSvb23hmtca+NqpitNDgC3bMWa4Ako6Vb1QeJDRdkhSDrjsQhIyDnybPNEkz8xbI7YQTIdr0JB+qFUOaIYkT/XHkTFhRFzU0YC3lNQmZMpP15Vdqm89Y93V+GtYO34= ;{id = 33655} +026D7200000200010002A3000010026E7308756E69762D6E6B63026D7200 +mr. 172800 IN NS ns.univ-nkc.mr. +026D7200000200010002A300000C036E7333036E696302667200 +mr. 172800 IN NS ns3.nic.fr. +026D7200000200010002A30000150C63656E7376726E73303030310369726402667200 +mr. 172800 IN NS censvrns0001.ird.fr. +026D7200002F000100015180000C026D73000006200000000003 +mr. 86400 IN NSEC ms. NS RRSIG NSEC +026D7200002E0001000151800093002F08010001518052F4220052EAD9708377003F45F26A11BA93FAE394325B95FDDCA8AF06A2A2087B466066B560A9E60A73427F3EC4A48BC85DC8DB5641AE1F6DD3D9199E9FF7983184EF09A6DAA486D59A1DCFB5160689DD99B006FF5F8684141F60E330D83BA86C5073E1B04F19AE600C02D1A5E87EED8F50ABF675BCA75D4E6E8705C182CA725F28DDCA5B26EDDF0E5888 +mr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P0XyahG6k/rjlDJblf3cqK8GoqIIe0ZgZrVgqeYKc0J/PsSki8hdyNtWQa4fbdPZGZ6f95gxhO8JptqkhtWaHc+1FgaJ3ZmwBv9fhoQUH2DjMNg7qGxQc+GwTxmuYAwC0aXofu2PUKv2dbynXU5uhwXBgspyXyjdylsm7d8OWIg= ;{id = 33655} +026E7308756E69762D6E6B63026D7200000100010002A300000452974001 +ns.univ-nkc.mr. 172800 IN A 82.151.64.1 +026D7300000200010002A3000010036D73310664796E746C64036E657400 +ms. 172800 IN NS ms1.dyntld.net. +026D7300000200010002A3000010036D73320664796E746C64036E657400 +ms. 172800 IN NS ms2.dyntld.net. +026D7300000200010002A3000010036D73330664796E746C64036E657400 +ms. 172800 IN NS ms3.dyntld.net. +026D7300000200010002A3000010036D73340664796E746C64036E657400 +ms. 172800 IN NS ms4.dyntld.net. +026D7300000200010002A3000017056D732D6E7307616E796361737403706368036E657400 +ms. 172800 IN NS ms-ns.anycast.pch.net. +026D7300000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +ms. 172800 IN NS phloem.uoregon.edu. +026D7300000200010002A3000013076D6E69646E7331066D6E696E6574026D7300 +ms. 172800 IN NS mnidns1.mninet.ms. +026D7300002F000100015180000C026D74000006200000000003 +ms. 86400 IN NSEC mt. NS RRSIG NSEC +026D7300002E0001000151800093002F08010001518052F4220052EAD97083770050CF9BFDA35BA8F84E855EE304B0CFBDD7C3EE895F47E4D49B79DA83BB617811A7E7DC73593E39C69E43EAE5F211EBBCD8F5124A53CDD0284691E4E75DEFE59D2BC2AF8643E938B13D855EDCB7137CD7B25227112910282C699257160EDADF9B2B0225732839EB85C76ED9C60FFB206645B5118CDCEC11C1E17BEFA1C74322E2 +ms. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UM+b/aNbqPhOhV7jBLDPvdfD7olfR+TUm3nag7theBGn59xzWT45xp5D6uXyEeu82PUSSlPN0ChGkeTnXe/lnSvCr4ZD6TixPYVe3LcTfNeyUicRKRAoLGmSVxYO2t+bKwIlcyg564XHbtnGD/sgZkW1EYzc7BHB4XvvocdDIuI= ;{id = 33655} +076D6E69646E7331066D6E696E6574026D7300000100010002A3000004C7075A02 +mnidns1.mninet.ms. 172800 IN A 199.7.90.2 +026D7400000200010002A30000090166026E73026D7400 +mt. 172800 IN NS f.ns.mt. +026D7400000200010002A30000090169026E73026D7400 +mt. 172800 IN NS i.ns.mt. +026D7400000200010002A30000090170026E73026D7400 +mt. 172800 IN NS p.ns.mt. +026D7400000200010002A30000090172026E73026D7400 +mt. 172800 IN NS r.ns.mt. +026D7400000200010002A3000007026E73026D7400 +mt. 172800 IN NS ns.mt. +026D7400000200010002A3000008036E7331026D7400 +mt. 172800 IN NS ns1.mt. +026D7400002F000100015180000C026D75000006200000000003 +mt. 86400 IN NSEC mu. NS RRSIG NSEC +026D7400002E0001000151800093002F08010001518052F4220052EAD9708377001A8754D0FB10A9945B315F845D756EBA171B516D1D2BE128F75D011411F0B0241F6531CA0995EA8E0EBDC0B68B5C4A08C7B6841C59F280F0618E90C7342E200A1F903FD2ABE7314C00AABFEE41084B9356F84DD3026DFF9F66CA44C9DA67759C74C38F185B6DBDF9BA3D415D45160111CACBDF7CB031A143015E6E2EA5B7731B +mt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GodU0PsQqZRbMV+EXXVuuhcbUW0dK+Eo910BFBHwsCQfZTHKCZXqjg69wLaLXEoIx7aEHFnygPBhjpDHNC4gCh+QP9Kr5zFMAKq/7kEIS5NW+E3TAm3/n2bKRMnaZ3WcdMOPGFttvfm6PUFdRRYBEcrL33ywMaFDAV5uLqW3cxs= ;{id = 33655} +026E73026D7400000100010002A3000004C1BC2FFC +ns.mt. 172800 IN A 193.188.47.252 +0166026E73026D7400000100010002A3000004C05D0004 +f.ns.mt. 172800 IN A 192.93.0.4 +0166026E73026D7400001C00010002A300001020010660300500010000000000010002 +f.ns.mt. 172800 IN AAAA 2001:660:3005:1::1:2 +0169026E73026D7400000100010002A3000004C0050401 +i.ns.mt. 172800 IN A 192.5.4.1 +0169026E73026D7400001C00010002A300001020010500002E00000000000000000001 +i.ns.mt. 172800 IN AAAA 2001:500:2e::1 +0170026E73026D7400000100010002A3000004CC3DD82D +p.ns.mt. 172800 IN A 204.61.216.45 +0172026E73026D7400000100010002A3000004C1000961 +r.ns.mt. 172800 IN A 193.0.9.97 +0172026E73026D7400001C00010002A30000102001067C00E000000000000000000097 +r.ns.mt. 172800 IN AAAA 2001:67c:e0::97 +036E7331026D7400000100010002A3000004C1BC22F1 +ns1.mt. 172800 IN A 193.188.34.241 +026D7500002F0001000151800010066D757365756D000006200000000003 +mu. 86400 IN NSEC museum. NS RRSIG NSEC +026D7500002E0001000151800093002F08010001518052F4220052EAD9708377009843C0851960B204E192E55E21B6BFB0B9862D24F7D0F8D4471A079AA938A14EC83B6179C1010ECB5E87E7D586DB6D61B0ED82BCA9760245848C274E989CED82ACDD087BC48B03E920D5CFF4E0199CFAD174C2AF8148600B506FEE76431D4E582C97775E5FED7B63AE3F8C01007EBE782A7277D6A6EB6D0F557900B2042A5DCD +mu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mEPAhRlgsgThkuVeIba/sLmGLST30PjURxoHmqk4oU7IO2F5wQEOy16H59WG221hsO2CvKl2AkWEjCdOmJztgqzdCHvEiwPpINXP9OAZnPrRdMKvgUhgC1Bv7nZDHU5YLJd3Xl/te2OuP4wBAH6+eCpyd9am620PVXkAsgQqXc0= ;{id = 33655} +026D7500000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +mu. 172800 IN NS fork.sth.dnsnode.net. +026D7500000200010002A300000E0575646E733103746C64026D7500 +mu. 172800 IN NS udns1.tld.mu. +026D7500000200010002A300000E0575646E733203746C64026D7500 +mu. 172800 IN NS udns2.tld.mu. +026D7500000200010002A300001608616E7963617374310769726F6E646E73036E657400 +mu. 172800 IN NS anycast1.irondns.net. +086363746C642D7675066F72616E6765026D7500000100010002A3000004C4C06E0F +cctld-vu.orange.mu. 172800 IN A 196.192.110.15 +0575646E733103746C64026D7500000100010002A3000004CC3DD80A +udns1.tld.mu. 172800 IN A 204.61.216.10 +0575646E733103746C64026D7500001C00010002A3000010200105000014601000AD000000000001 +udns1.tld.mu. 172800 IN AAAA 2001:500:14:6010:ad::1 +0575646E733203746C64026D7500000100010002A3000004C1000962 +udns2.tld.mu. 172800 IN A 193.0.9.98 +0575646E733203746C64026D7500001C00010002A30000102001067C00E000000000000000000098 +udns2.tld.mu. 172800 IN AAAA 2001:67c:e0::98 +066D757365756D00000200010002A300000E026E73056963616E6E036F726700 +museum. 172800 IN NS ns.icann.org. +066D757365756D00000200010002A300000C036E6963066D757365756D00 +museum. 172800 IN NS nic.museum. +066D757365756D00000200010002A300000E036E7335056B6E69707002646500 +museum. 172800 IN NS ns5.knipp.de. +066D757365756D00000200010002A300001305616E7963310769726F6E646E73036E657400 +museum. 172800 IN NS anyc1.irondns.net. +066D757365756D00000200010002A300001006736E732D706203697363036F726700 +museum. 172800 IN NS sns-pb.isc.org. +066D757365756D00002B000100015180002443BD0A0275E82017BAF68EB9BF64C4392B47489DB07317F8D9B522AF644586C264C1B231 +museum. 86400 IN DS 17341 10 2 75E82017BAF68EB9BF64C4392B47489DB07317F8D9B522AF644586C264C1B231 +066D757365756D00002E0001000151800093002B08010001518052F4220052EAD97083770082D57CA94DC7C862FD37CF6ED8F87F249E20B67A34416A5F0D9E46E2D1E2F987B80BECED15FCFE8AA97BAC57958D327AD3147198F849FCF5FAD2D4B8285CAE3F9C0B301FE7E38B63AE1EE5252BF2A2F156BB3AB45C039A7F80AB2C23FFC298F2917F464A0A0BB2F59CF201A4E59EA7A5A199045A249778D37B529CE28BC26D6B +museum. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gtV8qU3HyGL9N89u2Ph/JJ4gtno0QWpfDZ5G4tHi+Ye4C+ztFfz+iql7rFeVjTJ60xRxmPhJ/PX60tS4KFyuP5wLMB/n44tjrh7lJSvyovFWuzq0XAOaf4CrLCP/wpjykX9GSgoLsvWc8gGk5Z6npaGZBFokl3jTe1Kc4ovCbWs= ;{id = 33655} +066D757365756D00002E0001000151800093002F08010001518052F4220052EAD9708377007FA55F9BED5630EE6B5C16B093C4B7FC30A01BC352A715AF3ECD36E8B4AD37918A67BE5E4F5E3BA8721986D94016F298C37C20FACE314980AE5A4DE029D553E281CE153C872D8CB802CA996D6C0455549EBACBFFC657C9888B6779C240860D44F9E40CA715A4AE14CAB6D8E5133370EFEFB1C23C4FB39398D9F8E6BF858D3832 +museum. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . f6Vfm+1WMO5rXBawk8S3/DCgG8NSpxWvPs026LStN5GKZ75eT147qHIZhtlAFvKYw3wg+s4xSYCuWk3gKdVT4oHOFTyHLYy4AsqZbWwEVVSeusv/xlfJiItnecJAhg1E+eQMpxWkrhTKttjlEzNw7++xwjxPs5OY2fjmv4WNODI= ;{id = 33655} +066D757365756D00002F000100015180000C026D76000006200000000013 +museum. 86400 IN NSEC mv. NS DS RRSIG NSEC +036E6963066D757365756D00000100010002A300000482F21805 +nic.museum. 172800 IN A 130.242.24.5 +026D7600000200010002A3000016026E730A646869766568696E6574036E6574026D7600 +mv. 172800 IN NS ns.dhivehinet.net.mv. +026D7600000200010002A3000017036E73320A646869766568696E6574036E6574026D7600 +mv. 172800 IN NS ns2.dhivehinet.net.mv. +026D7600000200010002A3000017056D762D6E7307616E796361737403706368036E657400 +mv. 172800 IN NS mv-ns.anycast.pch.net. +026D7600002F000100015180000C026D77000006200000000003 +mv. 86400 IN NSEC mw. NS RRSIG NSEC +026D7600002E0001000151800093002F08010001518052F4220052EAD970837700B9E2256265B0E56B49E7431487B56E1F5A9036E4AE701D781599D8553CFD7E9F23FA2DD4156CDAEFF47472948CC78CC4817C385A4288F157D9B516B3E6D5EF1B338EAD26BFA845AE418915CDCEB28D445A74BB3B231C1DA25F45AB7BE6F3A42C218661A12ADDA254205FDBDE720238D8357DF91BFE242FE25FD18E92B85639F6 +mv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ueIlYmWw5WtJ50MUh7VuH1qQNuSucB14FZnYVTz9fp8j+i3UFWza7/R0cpSMx4zEgXw4WkKI8VfZtRaz5tXvGzOOrSa/qEWuQYkVzc6yjURadLs7Ixwdol9Fq3vm86QsIYZhoSrdolQgX9vecgI42DV9+Rv+JC/iX9GOkrhWOfY= ;{id = 33655} +026E730A646869766568696E6574036E6574026D7600000100010002A3000004CA01C0C4 +ns.dhivehinet.net.mv. 172800 IN A 202.1.192.196 +036E73320A646869766568696E6574036E6574026D7600000100010002A3000004CA01C9C9 +ns2.dhivehinet.net.mv. 172800 IN A 202.1.201.201 +026D7700000200010002A300001B026D77056363746C640761757468646E730472697065036E657400 +mw. 172800 IN NS mw.cctld.authdns.ripe.net. +026D7700000200010002A300000D037269700370736703636F6D00 +mw. 172800 IN NS rip.psg.com. +026D7700000200010002A300001004736563330561706E6963036E657400 +mw. 172800 IN NS sec3.apnic.net. +026D7700000200010002A300000E05646F6D77650373646E026D7700 +mw. 172800 IN NS domwe.sdn.mw. +026D7700000200010002A3000014066368616D626F0473646E70036F7267026D7700 +mw. 172800 IN NS chambo.sdnp.org.mw. +026D7700002F000100015180000C026D78000006200000000003 +mw. 86400 IN NSEC mx. NS RRSIG NSEC +026D7700002E0001000151800093002F08010001518052F4220052EAD970837700AC2DBF25F1900752CECFD90A4644DF632A7FB6D62F129FF0F2B6458EE88ACD1FA31DD218E15057FA196EAE217618BEFEC4926E0E86F69D0E79443A5BF0E107A153B4EE049F51DBAD3D1DB0E9D2D6AE10CE3A747786E0C0D8C2A2F417BD1B7BAE6D1642152A688721DAFF88799A2554A2D71E871108AB0BCE11A163E3818F4CE9 +mw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rC2/JfGQB1LOz9kKRkTfYyp/ttYvEp/w8rZFjuiKzR+jHdIY4VBX+hluriF2GL7+xJJuDob2nQ55RDpb8OEHoVO07gSfUdutPR2w6dLWrhDOOnR3huDA2MKi9Be9G3uubRZCFSpohyHa/4h5miVUotcehxEIqwvOEaFj44GPTOk= ;{id = 33655} +066368616D626F0473646E70036F7267026D7700000100010002A300000429DD6387 +chambo.sdnp.org.mw. 172800 IN A 41.221.99.135 +066368616D626F0473646E70036F7267026D7700000100010002A3000004C42DBC05 +chambo.sdnp.org.mw. 172800 IN A 196.45.188.5 +05646F6D77650373646E026D7700000100010002A300000429DD6395 +domwe.sdn.mw. 172800 IN A 41.221.99.149 +05646F6D77650373646E026D7700000100010002A3000004C42DBE09 +domwe.sdn.mw. 172800 IN A 196.45.190.9 +026D7800002F000100015180000C026D79000006200000000003 +mx. 86400 IN NSEC my. NS RRSIG NSEC +026D7800002E0001000151800093002F08010001518052F4220052EAD970837700409412AF026DD2B1884339B32A9E5472D3CBDEDB5CADA87FA7683E2687B1C7271695CF1822E74705055B86574B1AD8B56398F1CDBBC51F3F5856FEE10BCFFE6C1FD78025A56A14E818EA5B6C4E663C18D66CFBD61E2CA73F65865CBD0CCDD82EF6520FD6BFA238EB87A931FDD975EC7A8D2266A3F79A426AA855A8D9C82C8B5C +mx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QJQSrwJt0rGIQzmzKp5UctPL3ttcrah/p2g+JoexxycWlc8YIudHBQVbhldLGti1Y5jxzbvFHz9YVv7hC8/+bB/XgCWlahToGOpbbE5mPBjWbPvWHiynP2WGXL0Mzdgu9lIP1r+iOOuHqTH92XXseo0iZqP3mkJqqFWo2cgsi1w= ;{id = 33655} +026D7800000200010002A300000C0163056D782D6E73026D7800 +mx. 172800 IN NS c.mx-ns.mx. +026D7800000200010002A300000C0165056D782D6E73026D7800 +mx. 172800 IN NS e.mx-ns.mx. +026D7800000200010002A300000C0169056D782D6E73026D7800 +mx. 172800 IN NS i.mx-ns.mx. +026D7800000200010002A300000C016D056D782D6E73026D7800 +mx. 172800 IN NS m.mx-ns.mx. +026D7800000200010002A300000C016F056D782D6E73026D7800 +mx. 172800 IN NS o.mx-ns.mx. +026D7800000200010002A300000C0178056D782D6E73026D7800 +mx. 172800 IN NS x.mx-ns.mx. +0163056D782D6E73026D7800000100010002A3000004C064E001 +c.mx-ns.mx. 172800 IN A 192.100.224.1 +0163056D782D6E73026D7800001C00010002A300001020011258000000000000000000000001 +c.mx-ns.mx. 172800 IN AAAA 2001:1258::1 +0165056D782D6E73026D7800000100010002A3000004BDC9F401 +e.mx-ns.mx. 172800 IN A 189.201.244.1 +0169056D782D6E73026D7800000100010002A3000004CFF84401 +i.mx-ns.mx. 172800 IN A 207.248.68.1 +016D056D782D6E73026D7800000100010002A3000004C85EB001 +m.mx-ns.mx. 172800 IN A 200.94.176.1 +016F056D782D6E73026D7800000100010002A3000004C8170101 +o.mx-ns.mx. 172800 IN A 200.23.1.1 +0178056D782D6E73026D7800000100010002A3000004C983FC01 +x.mx-ns.mx. 172800 IN A 201.131.252.1 +036E7333036E6963026D7800000100010002A3000004C8216F01 +ns3.nic.mx. 172800 IN A 200.33.111.1 +026D7900000200010002A300001203646E73056D796E6963036E6574026D7900 +my. 172800 IN NS dns.mynic.net.my. +026D7900000200010002A3000011036E7332046375686B0365647502686B00 +my. 172800 IN NS ns2.cuhk.edu.hk. +026D7900000200010002A300000F036E7335066A6172696E67026D7900 +my. 172800 IN NS ns5.jaring.my. +026D7900000200010002A300000F036E7336066A6172696E67026D7900 +my. 172800 IN NS ns6.jaring.my. +026D7900000200010002A300001304646E7332056D796E6963036E6574026D7900 +my. 172800 IN NS dns2.mynic.net.my. +026D7900000200010002A3000010046E7332300369696A026164026A7000 +my. 172800 IN NS ns20.iij.ad.jp. +026D7900000200010002A300000F046E7333300463646E73036E657400 +my. 172800 IN NS ns30.cdns.net. +026D7900000200010002A300000E056E732D6D79036E696302667200 +my. 172800 IN NS ns-my.nic.fr. +026D7900002B0001000151800018C18F0801486D0A0DAF13FCE34AEF9BE1B68075B016B84ECF +my. 86400 IN DS 49551 8 1 486D0A0DAF13FCE34AEF9BE1B68075B016B84ECF +026D7900002B0001000151800024C18F0802906FB28961CD5A3D1D90782507C471C9F80870E727B9504076BF5288AE3B7DC9 +my. 86400 IN DS 49551 8 2 906FB28961CD5A3D1D90782507C471C9F80870E727B9504076BF5288AE3B7DC9 +026D7900002B0001000151800018DE69080148A57004990714CA096B7D6FC9B58968C0BE37DB +my. 86400 IN DS 56937 8 1 48A57004990714CA096B7D6FC9B58968C0BE37DB +026D7900002B0001000151800024DE690802885B9FAA1749CB502589E0DCF047849013ADA126ABF557D33C704F8CE97C9058 +my. 86400 IN DS 56937 8 2 885B9FAA1749CB502589E0DCF047849013ADA126ABF557D33C704F8CE97C9058 +026D7900002E0001000151800093002B08010001518052F4220052EAD970837700025763B9ED96F14189AA7CD0C08B82B3C1521BB29896C42C7044797CF6BB80AD398DDC67BB07D171E1482F2F6AEA2101ECEB1A3FF35FF718961D23673F0D7F975A4E930FEE2BFDC39919E472A95F7BE56D5ABD4D9813C59E7A776DDC7F8FE4967A34B7A36784A8A329533C5E6805B29A0BE4BE79B4A405C5F442D3E98599D26E +my. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Aldjue2W8UGJqnzQwIuCs8FSG7KYlsQscER5fPa7gK05jdxnuwfRceFILy9q6iEB7OsaP/Nf9xiWHSNnPw1/l1pOkw/uK/3DmRnkcqlfe+VtWr1NmBPFnnp3bdx/j+SWejS3o2eEqKMpUzxeaAWymgvkvnm0pAXF9ELT6YWZ0m4= ;{id = 33655} +026D7900002E0001000151800093002F08010001518052F4220052EAD97083770022137D3D44711902797FB71EE8154E58A23E04F8998656396F929365B4AB66F9F76E7C6B048F44585A69BCF712BC9586C72EBEA553B5F944BF0FA414AFF6C8B8773DB5938FA638663D170CC35DE860C480DF71C82BAE460A2C6AC5637042940FB0DD03C2BFBCB74D655A21608B2354C2300ADEBD815EB1027BB94DC1DFC42153 +my. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IhN9PURxGQJ5f7ce6BVOWKI+BPiZhlY5b5KTZbSrZvn3bnxrBI9EWFppvPcSvJWGxy6+pVO1+US/D6QUr/bIuHc9tZOPpjhmPRcMw13oYMSA33HIK65GCixqxWNwQpQPsN0Dwr+8t01lWiFgiyNUwjAK3r2BXrECe7lNwd/EIVM= ;{id = 33655} +026D7900002F000100015180000C026D7A000006200000000013 +my. 86400 IN NSEC mz. NS DS RRSIG NSEC +036E7335066A6172696E67026D7900000100010002A30000043D06268B +ns5.jaring.my. 172800 IN A 61.6.38.139 +036E7335066A6172696E67026D7900001C00010002A300001020010328020000480000000000000400 +ns5.jaring.my. 172800 IN AAAA 2001:328:200:48::400 +036E7336066A6172696E67026D7900000100010002A3000004C0E48010 +ns6.jaring.my. 172800 IN A 192.228.128.16 +036E7336066A6172696E67026D7900001C00010002A300001020010328020000AB0000000000000600 +ns6.jaring.my. 172800 IN AAAA 2001:328:200:ab::600 +03646E73056D796E6963036E6574026D7900000100010002A3000004C0E4B405 +dns.mynic.net.my. 172800 IN A 192.228.180.5 +03646E73056D796E6963036E6574026D7900001C00010002A300001020010328100000030000000000000005 +dns.mynic.net.my. 172800 IN AAAA 2001:328:1000:3::5 +04646E7332056D796E6963036E6574026D7900000100010002A3000004CA4B2724 +dns2.mynic.net.my. 172800 IN A 202.75.39.36 +04646E7332056D796E6963036E6574026D7900001C00010002A30000102401B000000000000000000000000036 +dns2.mynic.net.my. 172800 IN AAAA 2401:b000::36 +026D7A00000200010002A300000E05616E796E730375656D026D7A00 +mz. 172800 IN NS anyns.uem.mz. +026D7A00000200010002A300000E05647A6F776F0375656D026D7A00 +mz. 172800 IN NS dzowo.uem.mz. +026D7A00000200010002A3000013056E732D6D7A07616672696E6963036E657400 +mz. 172800 IN NS ns-mz.afrinic.net. +026D7A00000200010002A300000E057A656272610375656D026D7A00 +mz. 172800 IN NS zebra.uem.mz. +026D7A00000200010002A300000F066F6365616E6F0375656D026D7A00 +mz. 172800 IN NS oceano.uem.mz. +026D7A00000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +mz. 172800 IN NS phloem.uoregon.edu. +026D7A00002F000100015180000C026E61000006200000000003 +mz. 86400 IN NSEC na. NS RRSIG NSEC +026D7A00002E0001000151800093002F08010001518052F4220052EAD970837700B34B95615DA6287A66B946E727542A8A96B288412DEFF34946FAA52DD41146F632379B159457DA263CECBD7356834E8D1F572DC6709C531837CB4CF2B8EF5D26CE7290EC2747947FC0DD368EBE115B59D81D21BC2ED53795926395C48A6B67433515D764BE5BC35FFBEA62D45173B64CC5F87E35294427D40B3C95B469629D8B +mz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s0uVYV2mKHpmuUbnJ1QqipayiEEt7/NJRvqlLdQRRvYyN5sVlFfaJjzsvXNWg06NH1ctxnCcUxg3y0zyuO9dJs5ykOwnR5R/wN02jr4RW1nYHSG8LtU3lZJjlcSKa2dDNRXXZL5bw1/76mLUUXO2TMX4fjUpRCfUCzyVtGlinYs= ;{id = 33655} +05616E796E730375656D026D7A00000100010002A3000004CC3DD80E +anyns.uem.mz. 172800 IN A 204.61.216.14 +05647A6F776F0375656D026D7A00000100010002A3000004C4036042 +dzowo.uem.mz. 172800 IN A 196.3.96.66 +066F6365616E6F0375656D026D7A00000100010002A3000004C4036045 +oceano.uem.mz. 172800 IN A 196.3.96.69 +057A656272610375656D026D7A00000100010002A3000004C4036043 +zebra.uem.mz. 172800 IN A 196.3.96.67 +026E6100000200010002A3000010036E61310664796E746C64036E657400 +na. 172800 IN NS na1.dyntld.net. +026E6100000200010002A3000010036E61320664796E746C64036E657400 +na. 172800 IN NS na2.dyntld.net. +026E6100000200010002A3000011036E7335076E6F6D696E756D03636F6D00 +na. 172800 IN NS ns5.nominum.com. +026E6100000200010002A3000010036E7336076E6F6D696E756D02657500 +na. 172800 IN NS ns6.nominum.eu. +026E6100000200010002A300001305616E7963320769726F6E646E73036E657400 +na. 172800 IN NS anyc2.irondns.net. +026E6100000200010002A3000017056E612D6E7307616E796361737403706368036E657400 +na. 172800 IN NS na-ns.anycast.pch.net. +026E6100000200010002A300000F066D65726C696E036E6574026E6100 +na. 172800 IN NS merlin.net.na. +026E6100000200010002A300001006736E732D706203697363036F726700 +na. 172800 IN NS sns-pb.isc.org. +026E6100002B00010001518000185FA40501EFC19D4685751FF8E11F96142A083DCB9C708912 +na. 86400 IN DS 24484 5 1 EFC19D4685751FF8E11F96142A083DCB9C708912 +026E6100002E0001000151800093002B08010001518052F4220052EAD970837700525FD45A08C045EEAE1162E40FB78701523AB0BC8D2A882CD0ED77F4A02AB692612DD1121F5F634F0E20AA0D2D1C92D96EE1696EEA54AD17E97E339AF5D64F0BD22D16CE1A148A5BB97B108F50912A31AB1E82477B60067427D68C7DDC13CE3763FC650CEC5E17EF2CB60FEBA4D72E2633AB1210160FF53DB7E35252B699E512 +na. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Ul/UWgjARe6uEWLkD7eHAVI6sLyNKogs0O139KAqtpJhLdESH19jTw4gqg0tHJLZbuFpbupUrRfpfjOa9dZPC9ItFs4aFIpbuXsQj1CRKjGrHoJHe2AGdCfWjH3cE843Y/xlDOxeF+8stg/rpNcuJjOrEhAWD/U9t+NSUraZ5RI= ;{id = 33655} +026E6100002E0001000151800093002F08010001518052F4220052EAD97083770074F74D77BCD5928E7453E76A883A64155A3887E1BFAD28611757A98F018640283013725A489CF618DCC41809CCA96C2248357BC067485C6E2CCDA12DF49204110F9EC396674DA9020068CCF624ABC30307762D1513A4976298EBC359053713EFE025D9AB827A4CB7AC8DA595F5A9A4535A9EFE8CF1AB5B82FCCF64589E15EC9F +na. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dPdNd7zVko50U+dqiDpkFVo4h+G/rShhF1epjwGGQCgwE3JaSJz2GNzEGAnMqWwiSDV7wGdIXG4szaEt9JIEEQ+ew5ZnTakCAGjM9iSrwwMHdi0VE6SXYpjrw1kFNxPv4CXZq4J6TLesjaWV9amkU1qe/ozxq1uC/M9kWJ4V7J8= ;{id = 33655} +026E6100002F0001000151800010066E61676F7961000006200000000013 +na. 86400 IN NSEC nagoya. NS DS RRSIG NSEC +066D65726C696E036E6574026E6100000100010002A3000004CC98B860 +merlin.net.na. 172800 IN A 204.152.184.96 +066E61676F796100000200010002A300001301610B676D6F7265676973747279036E657400 +nagoya. 172800 IN NS a.gmoregistry.net. +066E61676F796100000200010002A300001301620B676D6F7265676973747279036E657400 +nagoya. 172800 IN NS b.gmoregistry.net. +066E61676F796100000200010002A300001301630B676D6F7265676973747279036E657400 +nagoya. 172800 IN NS c.gmoregistry.net. +066E61676F796100000200010002A300001301640B676D6F7265676973747279036E657400 +nagoya. 172800 IN NS d.gmoregistry.net. +066E61676F796100000200010002A300001301650B676D6F7265676973747279036E657400 +nagoya. 172800 IN NS e.gmoregistry.net. +066E61676F796100002B00010001518000245D1A0802957222A7538919C4B3CCF76010594729E1F16EF36CF266F965F86CD2C06889B4 +nagoya. 86400 IN DS 23834 8 2 957222A7538919C4B3CCF76010594729E1F16EF36CF266F965F86CD2C06889B4 +066E61676F796100002E0001000151800093002B08010001518052F4220052EAD97083770013CB2636C80F3DA58C9D1DAEB7EF964A796BF58F6C5F1E6158741BEFEF87577AD1AFE02D039582F80B8BC537BD43FCEDBC144C265912FF2501CBAABDCAA61ABECC5CF9D366DDE886998B7AF45400787870B439B882A6E352D28EE84D7AD4A02EC64E62EA36AC75F06236D5102567B2598E84E5E93D5ECACD2FC71D18590780E3 +nagoya. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . E8smNsgPPaWMnR2ut++WSnlr9Y9sXx5hWHQb7++HV3rRr+AtA5WC+AuLxTe9Q/ztvBRMJlkS/yUBy6q9yqYavsxc+dNm3eiGmYt69FQAeHhwtDm4gqbjUtKO6E161KAuxk5i6jasdfBiNtUQJWeyWY6E5ek9XsrNL8cdGFkHgOM= ;{id = 33655} +066E61676F796100002E0001000151800093002F08010001518052F4220052EAD97083770071C915389D1B8C46FE478980BCE32CF606FC6D26E8A9447F8328AC914D4C3224FBD37ACB7D2C5447202B329DF386EAB34E97B9DAA42DCB31C0461D0218A6A12F905094243AFC4C827AB0FEDAD67101DEF3F62B6222BBD79030D88775A2517E618C30CC7462EA3ABD82449F9408D8439E2C6339C64ACE8A35B6F0AE0EC7ABF256 +nagoya. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cckVOJ0bjEb+R4mAvOMs9gb8bSboqUR/gyiskU1MMiT703rLfSxURyArMp3zhuqzTpe52qQtyzHARh0CGKahL5BQlCQ6/EyCerD+2tZxAd7z9itiIrvXkDDYh3WiUX5hjDDMdGLqOr2CRJ+UCNhDnixjOcZKzoo1tvCuDser8lY= ;{id = 33655} +066E61676F796100002F000100015180000E046E616D65000006200000000013 +nagoya. 86400 IN NSEC name. NS DS RRSIG NSEC +046E616D6500000200010002A300000E026136056E73746C6403636F6D00 +name. 172800 IN NS a6.nstld.com. +046E616D6500000200010002A300000E026336056E73746C6403636F6D00 +name. 172800 IN NS c6.nstld.com. +046E616D6500000200010002A300000E026436056E73746C6403636F6D00 +name. 172800 IN NS d6.nstld.com. +046E616D6500000200010002A300000E026636056E73746C6403636F6D00 +name. 172800 IN NS f6.nstld.com. +046E616D6500000200010002A300000E026736056E73746C6403636F6D00 +name. 172800 IN NS g6.nstld.com. +046E616D6500000200010002A300000E026836056E73746C6403636F6D00 +name. 172800 IN NS h6.nstld.com. +046E616D6500000200010002A300000E026A36056E73746C6403636F6D00 +name. 172800 IN NS j6.nstld.com. +046E616D6500000200010002A300000E026B36056E73746C6403636F6D00 +name. 172800 IN NS k6.nstld.com. +046E616D6500000200010002A300000E026C36056E73746C6403636F6D00 +name. 172800 IN NS l6.nstld.com. +046E616D6500000200010002A300000E026D36056E73746C6403636F6D00 +name. 172800 IN NS m6.nstld.com. +046E616D6500002B0001000151800024CD5308024E2671F0DBC3927D842053044C6A0CBF8B21E1E657DE8BBA99A4835031A85A41 +name. 86400 IN DS 52563 8 2 4E2671F0DBC3927D842053044C6A0CBF8B21E1E657DE8BBA99A4835031A85A41 +046E616D6500002E0001000151800093002B08010001518052F4220052EAD9708377009C56666F61D0C75F5B3F2D058D9EC374689F4EC1A565B47936D25ED67CE68FAA8F7973D55D0235BC030051C30D0D273032153D5821D268C35CFE0342CA221C96AA5265FB0F6E44928692627E98880C3F81FF7E8AA434FF54D64FDD31ED3912DAAFDDE76623955838D064FE4CCB1532DF8289842C43BD0247C57309A01E4FBC91 +name. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nFZmb2HQx19bPy0FjZ7DdGifTsGlZbR5NtJe1nzmj6qPeXPVXQI1vAMAUcMNDScwMhU9WCHSaMNc/gNCyiIclqpSZfsPbkSShpJifpiIDD+B/36KpDT/VNZP3THtORLar93nZiOVWDjQZP5MyxUy34KJhCxDvQJHxXMJoB5PvJE= ;{id = 33655} +046E616D6500002E0001000151800093002F08010001518052F4220052EAD9708377002F70E5AF1B8265C94C414110007F5F606F12CE4DAC52381EB7A92247DF558D4A9D31127E48C12E1573E1A42FAD1875F67F9FC9E3DF6C542976E25B7A82E537BFE5452BA62A1CE26E620449840CA3F6DC4AC3986A485CBC0BC0DFF58D7BBFEB1F13FA9E2405326497BD9473BE4030F1DC473BCD96A93ABB4A660A34434A559B46 +name. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . L3DlrxuCZclMQUEQAH9fYG8Szk2sUjget6kiR99VjUqdMRJ+SMEuFXPhpC+tGHX2f5/J499sVCl24lt6guU3v+VFK6YqHOJuYgRJhAyj9txKw5hqSFy8C8Df9Y17v+sfE/qeJAUyZJe9lHO+QDDx3Ec7zZapOrtKZgo0Q0pVm0Y= ;{id = 33655} +046E616D6500002F000100015180000C026E63000006200000000013 +name. 86400 IN NSEC nc. NS DS RRSIG NSEC +026E6300000200010002A300001B026E63056363746C640761757468646E730472697065036E657400 +nc. 172800 IN NS nc.cctld.authdns.ripe.net. +026E6300000200010002A3000008036E7331026E6300 +nc. 172800 IN NS ns1.nc. +026E6300000200010002A3000008036E7332026E6300 +nc. 172800 IN NS ns2.nc. +026E6300000200010002A300000C07616E792D6E7331026E6300 +nc. 172800 IN NS any-ns1.nc. +026E6300000200010002A30000150C63656E7376726E73303030310369726402667200 +nc. 172800 IN NS censvrns0001.ird.fr. +026E6300002B0001000151800024BFA108025957AB66CF4871C8C39EDEBC78DFAB2B6DCBB3EA5E97278EA27190539410B753 +nc. 86400 IN DS 49057 8 2 5957AB66CF4871C8C39EDEBC78DFAB2B6DCBB3EA5E97278EA27190539410B753 +026E6300002E0001000151800093002B08010001518052F4220052EAD9708377009134697ADB0EA194C66A4B5392582D13518E50CDA813271B05D094DD7471D5953A75781E953891892341F62DE65F29297351D5FFB9321CE969956FDC565E35B7CBC24F783D68905696B1EA51A0965A545C16E88B32FB5012BED678793E63D38B411714D559ED9E8EBB163601F89EF1586740F35FBB899C2C33C425AE45579C83 +nc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . kTRpetsOoZTGaktTklgtE1GOUM2oEycbBdCU3XRx1ZU6dXgelTiRiSNB9i3mXykpc1HV/7kyHOlplW/cVl41t8vCT3g9aJBWlrHqUaCWWlRcFuiLMvtQEr7WeHk+Y9OLQRcU1Vntno67FjYB+J7xWGdA81+7iZwsM8QlrkVXnIM= ;{id = 33655} +026E6300002E0001000151800093002F08010001518052F4220052EAD970837700475C5E6DFD51BA1ABECD9711E40DBD16CA26EBB0A525DF2AB073891AC0E5AD88398A072FCB7593409DE7A7DF6B99CDF35777398BCE510FD5A6825275F2723A0F87A1BDF7825EE8662E33F2302AFF1158342EFF3A7B45DC0177BD24676F87F9405BCD63151A91E379D1C4A557AA135D27C0ECF4E360A57529A1D1CECB842CC6C4 +nc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . R1xebf1Ruhq+zZcR5A29Fsom67ClJd8qsHOJGsDlrYg5igcvy3WTQJ3np99rmc3zV3c5i85RD9WmglJ18nI6D4ehvfeCXuhmLjPyMCr/EVg0Lv86e0XcAXe9JGdvh/lAW81jFRqR43nRxKVXqhNdJ8Ds9ONgpXUpodHOy4QsxsQ= ;{id = 33655} +026E6300002F000100015180000C026E65000006200000000013 +nc. 86400 IN NSEC ne. NS DS RRSIG NSEC +07616E792D6E7331026E6300000100010002A30000047245DE01 +any-ns1.nc. 172800 IN A 114.69.222.1 +07616E792D6E7331026E6300001C00010002A300001020010500001480007245DE0000000001 +any-ns1.nc. 172800 IN AAAA 2001:500:14:8000:7245:de00:0:1 +036E7331026E6300000100010002A3000004CA578110 +ns1.nc. 172800 IN A 202.87.129.16 +036E7332026E6300000100010002A3000004CA578111 +ns2.nc. 172800 IN A 202.87.129.17 +026E6500000200010002A300001B026E65056363746C640761757468646E730472697065036E657400 +ne. 172800 IN NS ne.cctld.authdns.ripe.net. +026E6500000200010002A300000E026E7306696E746E6574026E6500 +ne. 172800 IN NS ns.intnet.ne. +026E6500000200010002A300000D03626F77047261696E02667200 +ne. 172800 IN NS bow.rain.fr. +026E6500000200010002A3000013056E732D6E6507616672696E6963036E657400 +ne. 172800 IN NS ns-ne.afrinic.net. +026E6500002F000100015180000D036E6574000006200000000003 +ne. 86400 IN NSEC net. NS RRSIG NSEC +026E6500002E0001000151800093002F08010001518052F4220052EAD9708377006967DBFAF58105312B79CBDE9941924307C2CFAF99B5AB06C37B7996B62126C6EA053C284AECB7305634EED4000D5BEBC698515232E53F4C69C84517195C4EDFE4F800A59B5D0E39B061F14D8B2E3291FC0970608F49EDFC097DAE2FB36EF6E3B1F2618E33D3D2F40C5A974DE9528A952DCB3B63A071E67E7953D2F3E449035D +ne. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aWfb+vWBBTErecvemUGSQwfCz6+ZtasGw3t5lrYhJsbqBTwoSuy3MFY07tQADVvrxphRUjLlP0xpyEUXGVxO3+T4AKWbXQ45sGHxTYsuMpH8CXBgj0nt/Al9ri+zbvbjsfJhjjPT0vQMWpdN6VKKlS3LO2OgceZ+eVPS8+RJA10= ;{id = 33655} +026E7306696E746E6574026E6500000100010002A3000004298A360A +ns.intnet.ne. 172800 IN A 41.138.54.10 +036E657400002F000100015180000C026E66000006200000000013 +net. 86400 IN NSEC nf. NS DS RRSIG NSEC +036E657400002E0001000151800093002F08010001518052F4220052EAD970837700168CEC4F7D03C7BCF60256D4FADD9E27993C71F5C72AFF2E78E850DB8A3CEE8F6A0E056DA56368A1ECCE16C6C4EC4159E124F78F25537FCB7DC51D416B1168C356A69D73C2AC70ACB67338C6E70DB22574CD70ADF13363AD260CEDF9AE0613D8C71A5EAA73DF99F9E2B3C08E3C8CA612520D1145A5C746C398BB6818FE0A88F1 +net. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . FozsT30Dx7z2AlbU+t2eJ5k8cfXHKv8ueOhQ24o87o9qDgVtpWNooezOFsbE7EFZ4ST3jyVTf8t9xR1BaxFow1amnXPCrHCstnM4xucNsiV0zXCt8TNjrSYM7fmuBhPYxxpeqnPfmfnis8COPIymElINEUWlx0bDmLtoGP4KiPE= ;{id = 33655} +036E657400002E0001000151800093002B08010001518052F4220052EAD97083770097A92F00F06FD2CC3FA628497692667A67919422E90820C3B837725CDDF6977EA3368BA21B82C62036B39B779808EB91539B3DDC41167005FB5493D5A7E4056F98930DDAA48E68C3FF8BE647751F816C7F2B5E7E3205345DDCEC4025ECD0C6A859E433E5E3B8BD651F0AC2D006D5B3887D444D25586FFCF8FFE96EB1A51FD11C +net. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . l6kvAPBv0sw/pihJdpJmemeRlCLpCCDDuDdyXN32l36jNouiG4LGIDazm3eYCOuRU5s93EEWcAX7VJPVp+QFb5iTDdqkjmjD/4vmR3UfgWx/K15+MgU0XdzsQCXs0MaoWeQz5eO4vWUfCsLQBtWziH1ETSVYb/z4/+lusaUf0Rw= ;{id = 33655} +036E657400000200010002A300001401610C67746C642D73657276657273036E657400 +net. 172800 IN NS a.gtld-servers.net. +036E657400000200010002A300001401620C67746C642D73657276657273036E657400 +net. 172800 IN NS b.gtld-servers.net. +036E657400000200010002A300001401630C67746C642D73657276657273036E657400 +net. 172800 IN NS c.gtld-servers.net. +036E657400000200010002A300001401640C67746C642D73657276657273036E657400 +net. 172800 IN NS d.gtld-servers.net. +036E657400000200010002A300001401650C67746C642D73657276657273036E657400 +net. 172800 IN NS e.gtld-servers.net. +036E657400000200010002A300001401660C67746C642D73657276657273036E657400 +net. 172800 IN NS f.gtld-servers.net. +036E657400000200010002A300001401670C67746C642D73657276657273036E657400 +net. 172800 IN NS g.gtld-servers.net. +036E657400000200010002A300001401680C67746C642D73657276657273036E657400 +net. 172800 IN NS h.gtld-servers.net. +036E657400000200010002A300001401690C67746C642D73657276657273036E657400 +net. 172800 IN NS i.gtld-servers.net. +036E657400000200010002A3000014016A0C67746C642D73657276657273036E657400 +net. 172800 IN NS j.gtld-servers.net. +036E657400000200010002A3000014016B0C67746C642D73657276657273036E657400 +net. 172800 IN NS k.gtld-servers.net. +036E657400000200010002A3000014016C0C67746C642D73657276657273036E657400 +net. 172800 IN NS l.gtld-servers.net. +036E657400000200010002A3000014016D0C67746C642D73657276657273036E657400 +net. 172800 IN NS m.gtld-servers.net. +036E657400002B00010001518000248C2E08027862B27F5F516EBE19680444D4CE5E762981931842C465F00236401D8BD973EE +net. 86400 IN DS 35886 8 2 7862B27F5F516EBE19680444D4CE5E762981931842C465F00236401D8BD973EE +036E73310661616C6E6574036E657400000100010002A3000004C2700001 +ns1.aalnet.net. 172800 IN A 194.112.0.1 +036E73320661616C6E6574036E657400000100010002A3000004C2700005 +ns2.aalnet.net. 172800 IN A 194.112.0.5 +036E73330661616C6E6574036E657400000100010002A300000452C7BA82 +ns3.aalnet.net. 172800 IN A 82.199.186.130 +036E73310561646D696E036E657400000100010002A3000004C649BA01 +ns1.admin.net. 172800 IN A 198.73.186.1 +036E73320561646D696E036E657400000100010002A3000004C64759EC +ns2.admin.net. 172800 IN A 198.71.89.236 +036E73320561646D696E036E657400001C00010002A30000102605F7000040040000000000196B8127 +ns2.admin.net. 172800 IN AAAA 2605:f700:40:400::196b:8127 +036E73330561646D696E036E657400000100010002A30000045762B42C +ns3.admin.net. 172800 IN A 87.98.180.44 +036E73330561646D696E036E657400001C00010002A3000010200141D0000894E40000000000000002 +ns3.admin.net. 172800 IN AAAA 2001:41d0:8:94e4::2 +036E73340561646D696E036E657400000100010002A300000474FBD2A0 +ns4.admin.net. 172800 IN A 116.251.210.160 +036E73340561646D696E036E657400001C00010002A3000010240542000202000000000000923AD47B +ns4.admin.net. 172800 IN AAAA 2405:4200:202::923a:d47b +036E73350561646D696E036E657400000100010002A3000004BCA5212A +ns5.admin.net. 172800 IN A 188.165.33.42 +036E73350561646D696E036E657400001C00010002A3000010200141D000085C790000000000000003 +ns5.admin.net. 172800 IN AAAA 2001:41d0:8:5c79::3 +056E732D626907616672696E6963036E657400000100010002A3000004C4D8A817 +ns-bi.afrinic.net. 172800 IN A 196.216.168.23 +056E732D626907616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000023 +ns-bi.afrinic.net. 172800 IN AAAA 2001:43f8:120::23 +056E732D626A07616672696E6963036E657400000100010002A3000004C4D8A821 +ns-bj.afrinic.net. 172800 IN A 196.216.168.33 +056E732D626A07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000033 +ns-bj.afrinic.net. 172800 IN AAAA 2001:43f8:120::33 +056E732D627707616672696E6963036E657400000100010002A3000004C4D8A848 +ns-bw.afrinic.net. 172800 IN A 196.216.168.72 +056E732D627707616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000072 +ns-bw.afrinic.net. 172800 IN AAAA 2001:43f8:120::72 +056E732D636907616672696E6963036E657400000100010002A3000004C4D8A81E +ns-ci.afrinic.net. 172800 IN A 196.216.168.30 +056E732D636907616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000030 +ns-ci.afrinic.net. 172800 IN AAAA 2001:43f8:120::30 +056E732D647A07616672696E6963036E657400000100010002A3000004C4D8A824 +ns-dz.afrinic.net. 172800 IN A 196.216.168.36 +056E732D647A07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000036 +ns-dz.afrinic.net. 172800 IN AAAA 2001:43f8:120::36 +056E732D676D07616672696E6963036E657400000100010002A3000004C4D8A81D +ns-gm.afrinic.net. 172800 IN A 196.216.168.29 +056E732D676D07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000029 +ns-gm.afrinic.net. 172800 IN AAAA 2001:43f8:120::29 +056E732D6B6507616672696E6963036E657400000100010002A3000004C4D8A816 +ns-ke.afrinic.net. 172800 IN A 196.216.168.22 +056E732D6B6D07616672696E6963036E657400000100010002A3000004C4D8A82E +ns-km.afrinic.net. 172800 IN A 196.216.168.46 +056E732D6B6D07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000046 +ns-km.afrinic.net. 172800 IN AAAA 2001:43f8:120::46 +056E732D6C7307616672696E6963036E657400000100010002A3000004C4D8A846 +ns-ls.afrinic.net. 172800 IN A 196.216.168.70 +056E732D6C7307616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000070 +ns-ls.afrinic.net. 172800 IN AAAA 2001:43f8:120::70 +056E732D6C7907616672696E6963036E657400000100010002A3000004C4D8A818 +ns-ly.afrinic.net. 172800 IN A 196.216.168.24 +056E732D6C7907616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000024 +ns-ly.afrinic.net. 172800 IN AAAA 2001:43f8:120::24 +056E732D6D7A07616672696E6963036E657400000100010002A3000004C4D8A828 +ns-mz.afrinic.net. 172800 IN A 196.216.168.40 +056E732D6D7A07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000040 +ns-mz.afrinic.net. 172800 IN AAAA 2001:43f8:120::40 +056E732D6E6507616672696E6963036E657400000100010002A3000004C4D8A82D +ns-ne.afrinic.net. 172800 IN A 196.216.168.45 +056E732D6E6507616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000045 +ns-ne.afrinic.net. 172800 IN AAAA 2001:43f8:120::45 +056E732D727707616672696E6963036E657400000100010002A3000004C4D8A81C +ns-rw.afrinic.net. 172800 IN A 196.216.168.28 +056E732D727707616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000028 +ns-rw.afrinic.net. 172800 IN AAAA 2001:43f8:120::28 +056E732D736407616672696E6963036E657400000100010002A3000004C4D8A81A +ns-sd.afrinic.net. 172800 IN A 196.216.168.26 +056E732D736407616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000026 +ns-sd.afrinic.net. 172800 IN AAAA 2001:43f8:120::26 +056E732D746407616672696E6963036E657400000100010002A3000004C4D8A81F +ns-td.afrinic.net. 172800 IN A 196.216.168.31 +056E732D746407616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000031 +ns-td.afrinic.net. 172800 IN AAAA 2001:43f8:120::31 +056E732D746E07616672696E6963036E657400000100010002A3000004C4D8A819 +ns-tn.afrinic.net. 172800 IN A 196.216.168.25 +056E732D746E07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000025 +ns-tn.afrinic.net. 172800 IN AAAA 2001:43f8:120::25 +056E732D747A07616672696E6963036E657400000100010002A3000004C4D8A814 +ns-tz.afrinic.net. 172800 IN A 196.216.168.20 +056E732D747A07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000020 +ns-tz.afrinic.net. 172800 IN AAAA 2001:43f8:120::20 +056E732D756707616672696E6963036E657400000100010002A3000004C4D8A82A +ns-ug.afrinic.net. 172800 IN A 196.216.168.42 +056E732D756707616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000042 +ns-ug.afrinic.net. 172800 IN AAAA 2001:43f8:120::42 +056E732D7A6D07616672696E6963036E657400000100010002A3000004C4D8A82C +ns-zm.afrinic.net. 172800 IN A 196.216.168.44 +056E732D7A6D07616672696E6963036E657400001C00010002A3000010200143F8012000000000000000000044 +ns-zm.afrinic.net. 172800 IN AAAA 2001:43f8:120::44 +066E732D63646E05616D6E6963036E657400000100010002A3000004C200011A +ns-cdn.amnic.net. 172800 IN A 194.0.1.26 +066E732D63646E05616D6E6963036E657400001C00010002A30000102001067800040000000000000000001A +ns-cdn.amnic.net. 172800 IN AAAA 2001:678:4::1a +066E732D70726905616D6E6963036E657400000100010002A3000004C32B4A35 +ns-pri.amnic.net. 172800 IN A 195.43.74.53 +066E732D70726905616D6E6963036E657400001C00010002A30000102001067C021C00530000000000000001 +ns-pri.amnic.net. 172800 IN AAAA 2001:67c:21c:53::1 +04736563310561706E6963036E657400000100010002A3000004CA0C1D3B +sec1.apnic.net. 172800 IN A 202.12.29.59 +04736563310561706E6963036E657400001C00010002A300001020010DC02001000A4608000000000059 +sec1.apnic.net. 172800 IN AAAA 2001:dc0:2001:a:4608::59 +04736563330561706E6963036E657400000100010002A3000004CA0C1C8C +sec3.apnic.net. 172800 IN A 202.12.28.140 +04736563330561706E6963036E657400001C00010002A300001020010DC0000100004777000000000140 +sec3.apnic.net. 172800 IN AAAA 2001:dc0:1:0:4777::140 +04736563340561706E6963036E657400000100010002A3000004CA0C1F8D +sec4.apnic.net. 172800 IN A 202.12.31.141 +04736563340561706E6963036E657400001C00010002A300001020010DC0400100010000183600000141 +sec4.apnic.net. 172800 IN AAAA 2001:dc0:4001:1:0:1836:0:141 +036E733106617336343533036E657400000100010002A300000442C69137 +ns1.as6453.net. 172800 IN A 66.198.145.55 +036E733206617336343533036E657400000100010002A300000442C69163 +ns2.as6453.net. 172800 IN A 66.198.145.99 +06646E732D7374076261686E686F66036E657400000100010002A30000044F887714 +dns-st.bahnhof.net. 172800 IN A 79.136.119.20 +036E7331076261686E686F66036E657400000100010002A3000004C3B2A002 +ns1.bahnhof.net. 172800 IN A 195.178.160.2 +036E73310E6261726261646F73646F6D61696E036E657400000100010002A3000004C8325CC3 +ns1.barbadosdomain.net. 172800 IN A 200.50.92.195 +036E73320E6261726261646F73646F6D61696E036E657400000100010002A3000004CCD4F271 +ns2.barbadosdomain.net. 172800 IN A 204.212.242.113 +046E7331370463646E73036E657400000100010002A3000004C2000111 +ns17.cdns.net. 172800 IN A 194.0.1.17 +046E7331370463646E73036E657400001C00010002A300001020010678000400000000000000000011 +ns17.cdns.net. 172800 IN AAAA 2001:678:4::11 +046E7333300463646E73036E657400000100010002A3000004C200011E +ns30.cdns.net. 172800 IN A 194.0.1.30 +046E7333300463646E73036E657400001C00010002A30000102001067800040000000000000000001E +ns30.cdns.net. 172800 IN AAAA 2001:678:4::1e +036E73370463646E73036E657400000100010002A3000004C2000107 +ns7.cdns.net. 172800 IN A 194.0.1.7 +036E73370463646E73036E657400001C00010002A300001020010678000400000000000000000007 +ns7.cdns.net. 172800 IN AAAA 2001:678:4::7 +026E73066365726E6574036E657400000100010002A3000004CA70002C +ns.cernet.net. 172800 IN A 202.112.0.44 +01610A63692D73657276657273036E657400000100010002A30000045775C2A0 +a.ci-servers.net. 172800 IN A 87.117.194.160 +06726F6F742D620C636C6F756439676C6F62616C036E657400000100010002A3000004321652FB +root-b.cloud9global.net. 172800 IN A 50.22.82.251 +036E733105636F626578036E657400000100010002A3000004D898C047 +ns1.cobex.net. 172800 IN A 216.152.192.71 +036E733205636F626578036E657400000100010002A3000004D898C048 +ns2.cobex.net. 172800 IN A 216.152.192.72 +026C6B0C636F6D6D756E697479646E73036E657400000100010002A3000004C200011B +lk.communitydns.net. 172800 IN A 194.0.1.27 +036E73310C636F6D6D756E697479646E73036E657400000100010002A3000004C2000101 +ns1.communitydns.net. 172800 IN A 194.0.1.1 +036E73310C636F6D6D756E697479646E73036E657400001C00010002A300001020010678000400000000000000000001 +ns1.communitydns.net. 172800 IN AAAA 2001:678:4::1 +046E7331350C636F6D6D756E697479646E73036E657400000100010002A3000004C200010F +ns15.communitydns.net. 172800 IN A 194.0.1.15 +046E7331350C636F6D6D756E697479646E73036E657400001C00010002A30000102001067800040000000000000000000F +ns15.communitydns.net. 172800 IN AAAA 2001:678:4::f +0270680C636F6D6D756E697479646E73036E657400000100010002A3000004C2000117 +ph.communitydns.net. 172800 IN A 194.0.1.23 +086575726F2D6E7331026377036E657400000100010002A30000048D011BF8 +euro-ns1.cw.net. 172800 IN A 141.1.27.248 +086575726F2D6E7332026377036E657400000100010002A3000004D450AF02 +euro-ns2.cw.net. 172800 IN A 212.80.175.2 +086575726F2D6E7333026377036E657400000100010002A30000048D011BFB +euro-ns3.cw.net. 172800 IN A 141.1.27.251 +016C026465036E657400000100010002A30000044D433F69 +l.de.net. 172800 IN A 77.67.63.105 +016C026465036E657400001C00010002A300001020010668001F00110000000000000105 +l.de.net. 172800 IN AAAA 2001:668:1f:11::105 +016E026465036E657400000100010002A3000004C2926B06 +n.de.net. 172800 IN A 194.146.107.6 +016E026465036E657400001C00010002A30000102001067C101100010000000000000053 +n.de.net. 172800 IN AAAA 2001:67c:1011:1::53 +0173026465036E657400000100010002A3000004C3F3891A +s.de.net. 172800 IN A 195.243.137.26 +03646E7309646E73616672696361036E657400000100010002A3000004D5C19D1E +dns.dnsafrica.net. 172800 IN A 213.193.157.30 +03636C3107646E736E6F6465036E657400000100010002A3000004C2926A22 +cl1.dnsnode.net. 172800 IN A 194.146.106.34 +03636C3107646E736E6F6465036E657400001C00010002A30000102001067C101000080000000000000053 +cl1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:8::53 +036E6C3107646E736E6F6465036E657400000100010002A3000004C2926A2A +nl1.dnsnode.net. 172800 IN A 194.146.106.42 +036E6C3107646E736E6F6465036E657400001C00010002A30000102001067C101000100000000000000053 +nl1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:10::53 +0370653107646E736E6F6465036E657400000100010002A3000004C2926A52 +pe1.dnsnode.net. 172800 IN A 194.146.106.82 +0370653107646E736E6F6465036E657400001C00010002A30000102001067C101000200000000000000053 +pe1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:20::53 +04666F726B0373746807646E736E6F6465036E657400000100010002A30000044D48E5FE +fork.sth.dnsnode.net. 172800 IN A 77.72.229.254 +04666F726B0373746807646E736E6F6465036E657400001C00010002A30000102A0103F0000003060000000000000053 +fork.sth.dnsnode.net. 172800 IN AAAA 2a01:3f0:0:306::53 +037A613107646E736E6F6465036E657400000100010002A3000004C2926A4E +za1.dnsnode.net. 172800 IN A 194.146.106.78 +037A613107646E736E6F6465036E657400001C00010002A30000102001067C101000190000000000000053 +za1.dnsnode.net. 172800 IN AAAA 2001:67c:1010:19::53 +036166310664796E746C64036E657400000100010002A3000004D04E465E +af1.dyntld.net. 172800 IN A 208.78.70.94 +036166310664796E746C64036E657400001C00010002A300001020010500009000000000000000000094 +af1.dyntld.net. 172800 IN AAAA 2001:500:90::94 +036166330664796E746C64036E657400000100010002A3000004D04E475E +af3.dyntld.net. 172800 IN A 208.78.71.94 +036166330664796E746C64036E657400001C00010002A300001020010500009400000000000000000094 +af3.dyntld.net. 172800 IN AAAA 2001:500:94::94 +05636F6F70310664796E746C64036E657400000100010002A3000004D04E4650 +coop1.dyntld.net. 172800 IN A 208.78.70.80 +05636F6F70320664796E746C64036E657400000100010002A3000004CC0DFA50 +coop2.dyntld.net. 172800 IN A 204.13.250.80 +05636F6F70330664796E746C64036E657400000100010002A3000004D04E4750 +coop3.dyntld.net. 172800 IN A 208.78.71.80 +05636F6F70340664796E746C64036E657400000100010002A3000004CC0DFB50 +coop4.dyntld.net. 172800 IN A 204.13.251.80 +036378310664796E746C64036E657400000100010002A3000004D04E464D +cx1.dyntld.net. 172800 IN A 208.78.70.77 +036378310664796E746C64036E657400001C00010002A300001020010500009000000000000000000077 +cx1.dyntld.net. 172800 IN AAAA 2001:500:90::77 +036378330664796E746C64036E657400000100010002A3000004D04E474D +cx3.dyntld.net. 172800 IN A 208.78.71.77 +036378330664796E746C64036E657400001C00010002A300001020010500009400000000000000000077 +cx3.dyntld.net. 172800 IN AAAA 2001:500:94::77 +03676C310664796E746C64036E657400000100010002A3000004D04E4661 +gl1.dyntld.net. 172800 IN A 208.78.70.97 +03676C320664796E746C64036E657400000100010002A3000004CC0DFA61 +gl2.dyntld.net. 172800 IN A 204.13.250.97 +03676C330664796E746C64036E657400000100010002A3000004D04E4761 +gl3.dyntld.net. 172800 IN A 208.78.71.97 +03676C340664796E746C64036E657400000100010002A3000004CC0DFB61 +gl4.dyntld.net. 172800 IN A 204.13.251.97 +036773310664796E746C64036E657400000100010002A3000004D04E4656 +gs1.dyntld.net. 172800 IN A 208.78.70.86 +036773310664796E746C64036E657400001C00010002A300001020010500009000000000000000000086 +gs1.dyntld.net. 172800 IN AAAA 2001:500:90::86 +036773330664796E746C64036E657400000100010002A3000004D04E4756 +gs3.dyntld.net. 172800 IN A 208.78.71.86 +036773330664796E746C64036E657400001C00010002A300001020010500009400000000000000000086 +gs3.dyntld.net. 172800 IN AAAA 2001:500:94::86 +036B69310664796E746C64036E657400000100010002A3000004D04E4657 +ki1.dyntld.net. 172800 IN A 208.78.70.87 +036B69310664796E746C64036E657400001C00010002A300001020010500009000000000000000000087 +ki1.dyntld.net. 172800 IN AAAA 2001:500:90::87 +036B69330664796E746C64036E657400000100010002A3000004D04E4757 +ki3.dyntld.net. 172800 IN A 208.78.71.87 +036B69330664796E746C64036E657400001C00010002A300001020010500009400000000000000000087 +ki3.dyntld.net. 172800 IN AAAA 2001:500:94::87 +036D67310664796E746C64036E657400000100010002A3000004D04E4660 +mg1.dyntld.net. 172800 IN A 208.78.70.96 +036D67320664796E746C64036E657400000100010002A3000004CC0DFA60 +mg2.dyntld.net. 172800 IN A 204.13.250.96 +036D67330664796E746C64036E657400000100010002A3000004D04E4760 +mg3.dyntld.net. 172800 IN A 208.78.71.96 +036D67340664796E746C64036E657400000100010002A3000004CC0DFB60 +mg4.dyntld.net. 172800 IN A 204.13.251.96 +036D73310664796E746C64036E657400000100010002A3000004D04E4654 +ms1.dyntld.net. 172800 IN A 208.78.70.84 +036D73320664796E746C64036E657400000100010002A3000004CC0DFA54 +ms2.dyntld.net. 172800 IN A 204.13.250.84 +036D73330664796E746C64036E657400000100010002A3000004D04E4754 +ms3.dyntld.net. 172800 IN A 208.78.71.84 +036D73340664796E746C64036E657400000100010002A3000004CC0DFB54 +ms4.dyntld.net. 172800 IN A 204.13.251.84 +036E61310664796E746C64036E657400000100010002A3000004D04E465A +na1.dyntld.net. 172800 IN A 208.78.70.90 +036E61320664796E746C64036E657400000100010002A3000004CC0DFA5A +na2.dyntld.net. 172800 IN A 204.13.250.90 +036E66310664796E746C64036E657400000100010002A3000004D04E4658 +nf1.dyntld.net. 172800 IN A 208.78.70.88 +036E66310664796E746C64036E657400001C00010002A300001020010500009000000000000000000088 +nf1.dyntld.net. 172800 IN AAAA 2001:500:90::88 +036E66330664796E746C64036E657400000100010002A3000004D04E4758 +nf3.dyntld.net. 172800 IN A 208.78.71.88 +036E66330664796E746C64036E657400001C00010002A300001020010500009400000000000000000088 +nf3.dyntld.net. 172800 IN AAAA 2001:500:94::88 +037362310664796E746C64036E657400000100010002A3000004D04E4653 +sb1.dyntld.net. 172800 IN A 208.78.70.83 +037362310664796E746C64036E657400001C00010002A300001020010500009000000000000000000083 +sb1.dyntld.net. 172800 IN AAAA 2001:500:90::83 +037362330664796E746C64036E657400000100010002A3000004D04E4753 +sb3.dyntld.net. 172800 IN A 208.78.71.83 +037362330664796E746C64036E657400001C00010002A300001020010500009400000000000000000083 +sb3.dyntld.net. 172800 IN AAAA 2001:500:94::83 +03746C310664796E746C64036E657400000100010002A3000004D04E464E +tl1.dyntld.net. 172800 IN A 208.78.70.78 +03746C310664796E746C64036E657400001C00010002A300001020010500009000000000000000000078 +tl1.dyntld.net. 172800 IN AAAA 2001:500:90::78 +03746C330664796E746C64036E657400000100010002A3000004D04E474E +tl3.dyntld.net. 172800 IN A 208.78.71.78 +03746C330664796E746C64036E657400001C00010002A300001020010500009400000000000000000078 +tl3.dyntld.net. 172800 IN AAAA 2001:500:94::78 +01610B6564752D73657276657273036E657400000100010002A3000004C005061E +a.edu-servers.net. 172800 IN A 192.5.6.30 +01630B6564752D73657276657273036E657400000100010002A3000004C01A5C1E +c.edu-servers.net. 172800 IN A 192.26.92.30 +01640B6564752D73657276657273036E657400000100010002A3000004C01F501E +d.edu-servers.net. 172800 IN A 192.31.80.30 +01660B6564752D73657276657273036E657400000100010002A3000004C023331E +f.edu-servers.net. 172800 IN A 192.35.51.30 +01670B6564752D73657276657273036E657400000100010002A3000004C02A5D1E +g.edu-servers.net. 172800 IN A 192.42.93.30 +01670B6564752D73657276657273036E657400001C00010002A300001020010503CC2C00000000000000020036 +g.edu-servers.net. 172800 IN AAAA 2001:503:cc2c::2:36 +016C0B6564752D73657276657273036E657400000100010002A3000004C029A21E +l.edu-servers.net. 172800 IN A 192.41.162.30 +036E7333026E730465736174036E657400000100010002A3000004C06F2764 +ns3.ns.esat.net. 172800 IN A 192.111.39.100 +036E7333026E730465736174036E657400001C00010002A3000010200107C80002000A0000000000000064 +ns3.ns.esat.net. 172800 IN AAAA 2001:7c8:2:a::64 +016102677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400000100010002A3000004B915A822 +a.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.168.34 +016102677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400001C00010002A30000102A041B00000800000000000000000002 +a.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:8::2 +016202677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400000100010002A3000004B915A922 +b.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.169.34 +016202677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400001C00010002A30000102A041B00000900000000000000000002 +b.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:9::2 +016302677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400000100010002A3000004B915AA22 +c.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.170.34 +016302677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400001C00010002A30000102A041B00000A00000000000000000002 +c.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:a::2 +016402677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400000100010002A3000004B915AB22 +d.gq.globalanycastcloud.freenom.net. 172800 IN A 185.21.171.34 +016402677112676C6F62616C616E7963617374636C6F756407667265656E6F6D036E657400001C00010002A30000102A041B00000B00000000000000000002 +d.gq.globalanycastcloud.freenom.net. 172800 IN AAAA 2a04:1b00:b::2 +03746C640467646E73036E657400000100010002A300000444B28195 +tld.gdns.net. 172800 IN A 68.178.129.149 +0A6E6577732D746F6B796F03676970036E657400000100010002A3000004CC3B40DE +news-tokyo.gip.net. 172800 IN A 204.59.64.222 +036E733203676970036E657400000100010002A3000004CC3B01DE +ns2.gip.net. 172800 IN A 204.59.1.222 +01610B676D6F7265676973747279036E657400000100010002A300000448344709 +a.gmoregistry.net. 172800 IN A 72.52.71.9 +01610B676D6F7265676973747279036E657400001C00010002A300001020010470001A00000000000000000009 +a.gmoregistry.net. 172800 IN AAAA 2001:470:1a::9 +01620B676D6F7265676973747279036E657400000100010002A300000426670209 +b.gmoregistry.net. 172800 IN A 38.103.2.9 +01630B676D6F7265676973747279036E657400000100010002A30000043FF3C209 +c.gmoregistry.net. 172800 IN A 63.243.194.9 +01630B676D6F7265676973747279036E657400001C00010002A3000010200105A0001000000000000000000009 +c.gmoregistry.net. 172800 IN AAAA 2001:5a0:10::9 +01640B676D6F7265676973747279036E657400000100010002A3000004781DFC0B +d.gmoregistry.net. 172800 IN A 120.29.252.11 +01640B676D6F7265676973747279036E657400001C00010002A300001020010DCD000500000000000000000011 +d.gmoregistry.net. 172800 IN AAAA 2001:dcd:5::11 +01650B676D6F7265676973747279036E657400000100010002A3000004781DFE0B +e.gmoregistry.net. 172800 IN A 120.29.254.11 +01650B676D6F7265676973747279036E657400001C00010002A300001020010DCD000600000000000000000011 +e.gmoregistry.net. 172800 IN AAAA 2001:dcd:6::11 +01610B676F762D73657276657273036E657400000100010002A300000445249D1E +a.gov-servers.net. 172800 IN A 69.36.157.30 +01610B676F762D73657276657273036E657400001C00010002A300001020010500443100000000000000020030 +a.gov-servers.net. 172800 IN AAAA 2001:500:4431::2:30 +01620B676F762D73657276657273036E657400000100010002A3000004D1707B1E +b.gov-servers.net. 172800 IN A 209.112.123.30 +01610C67746C642D73657276657273036E657400000100010002A3000004C005061E +a.gtld-servers.net. 172800 IN A 192.5.6.30 +01610C67746C642D73657276657273036E657400001C00010002A300001020010503A83E00000000000000020030 +a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30 +01620C67746C642D73657276657273036E657400000100010002A3000004C0210E1E +b.gtld-servers.net. 172800 IN A 192.33.14.30 +01620C67746C642D73657276657273036E657400001C00010002A300001020010503231D00000000000000020030 +b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30 +01630C67746C642D73657276657273036E657400000100010002A3000004C01A5C1E +c.gtld-servers.net. 172800 IN A 192.26.92.30 +01640C67746C642D73657276657273036E657400000100010002A3000004C01F501E +d.gtld-servers.net. 172800 IN A 192.31.80.30 +01650C67746C642D73657276657273036E657400000100010002A3000004C00C5E1E +e.gtld-servers.net. 172800 IN A 192.12.94.30 +01660C67746C642D73657276657273036E657400000100010002A3000004C023331E +f.gtld-servers.net. 172800 IN A 192.35.51.30 +01670C67746C642D73657276657273036E657400000100010002A3000004C02A5D1E +g.gtld-servers.net. 172800 IN A 192.42.93.30 +01680C67746C642D73657276657273036E657400000100010002A3000004C036701E +h.gtld-servers.net. 172800 IN A 192.54.112.30 +01690C67746C642D73657276657273036E657400000100010002A3000004C02BAC1E +i.gtld-servers.net. 172800 IN A 192.43.172.30 +016A0C67746C642D73657276657273036E657400000100010002A3000004C0304F1E +j.gtld-servers.net. 172800 IN A 192.48.79.30 +016B0C67746C642D73657276657273036E657400000100010002A3000004C034B21E +k.gtld-servers.net. 172800 IN A 192.52.178.30 +016C0C67746C642D73657276657273036E657400000100010002A3000004C029A21E +l.gtld-servers.net. 172800 IN A 192.41.162.30 +016D0C67746C642D73657276657273036E657400000100010002A3000004C037531E +m.gtld-servers.net. 172800 IN A 192.55.83.30 +046F73693203677561036E657400000100010002A3000004CDA1BC03 +osi2.gua.net. 172800 IN A 205.161.188.3 +05616E7963310769726F6E646E73036E657400000100010002A3000004C3FD4004 +anyc1.irondns.net. 172800 IN A 195.253.64.4 +05616E7963310769726F6E646E73036E657400001C00010002A30000102A0105B0000400000000000000000004 +anyc1.irondns.net. 172800 IN AAAA 2a01:5b0:4::4 +05616E7963320769726F6E646E73036E657400000100010002A3000004C3FD4007 +anyc2.irondns.net. 172800 IN A 195.253.64.7 +05616E7963320769726F6E646E73036E657400001C00010002A30000102A0105B0000400000000000000000007 +anyc2.irondns.net. 172800 IN AAAA 2a01:5b0:4::7 +08616E7963617374310769726F6E646E73036E657400000100010002A3000004C3FD4005 +anycast1.irondns.net. 172800 IN A 195.253.64.5 +08616E7963617374310769726F6E646E73036E657400001C00010002A30000102A0105B0000400000000000000000005 +anycast1.irondns.net. 172800 IN AAAA 2a01:5b0:4::5 +09616E796361737431300769726F6E646E73036E657400000100010002A3000004C3FD400C +anycast10.irondns.net. 172800 IN A 195.253.64.12 +09616E796361737431300769726F6E646E73036E657400001C00010002A30000102A0105B000040000000000000000000C +anycast10.irondns.net. 172800 IN AAAA 2a01:5b0:4::c +09616E796361737432330769726F6E646E73036E657400000100010002A3000004C3FD410B +anycast23.irondns.net. 172800 IN A 195.253.65.11 +09616E796361737432330769726F6E646E73036E657400001C00010002A30000102A0105B000050000000000000000000B +anycast23.irondns.net. 172800 IN AAAA 2a01:5b0:5::b +09616E796361737432340769726F6E646E73036E657400000100010002A3000004C3FD410C +anycast24.irondns.net. 172800 IN A 195.253.65.12 +09616E796361737432340769726F6E646E73036E657400001C00010002A30000102A0105B000050000000000000000000C +anycast24.irondns.net. 172800 IN AAAA 2a01:5b0:5::c +08616E7963617374390769726F6E646E73036E657400000100010002A3000004C3FD400B +anycast9.irondns.net. 172800 IN A 195.253.64.11 +08616E7963617374390769726F6E646E73036E657400001C00010002A30000102A0105B000040000000000000000000B +anycast9.irondns.net. 172800 IN AAAA 2a01:5b0:4::b +03746C64076973632D736E73036E657400000100010002A30000043FF3C203 +tld.isc-sns.net. 172800 IN A 63.243.194.3 +03746C64076973632D736E73036E657400001C00010002A3000010200105A0001000000000000000000003 +tld.isc-sns.net. 172800 IN AAAA 2001:5a0:10::3 +036E7330026A61036E657400000100010002A300000480560114 +ns0.ja.net. 172800 IN A 128.86.1.20 +036E7330026A61036E657400000100010002A3000004C13F5E14 +ns0.ja.net. 172800 IN A 193.63.94.20 +036E7330026A61036E657400001C00010002A300001020010630000000080000000000000014 +ns0.ja.net. 172800 IN AAAA 2001:630:0:8::14 +036E7330026A61036E657400001C00010002A300001020010630000000090000000000000014 +ns0.ja.net. 172800 IN AAAA 2001:630:0:9::14 +036E7334026A61036E657400000100010002A3000004C13E9D42 +ns4.ja.net. 172800 IN A 193.62.157.66 +036E7334026A61036E657400001C00010002A300001020010630000000470000000000000042 +ns4.ja.net. 172800 IN AAAA 2001:630:0:47::42 +046B776E73046B656D73036E657400000100010002A3000004A8BB050C +kwns.kems.net. 172800 IN A 168.187.5.12 +036E7331056B726E6963036E657400000100010002A3000004CA1E3233 +ns1.krnic.net. 172800 IN A 202.30.50.51 +0567642D6E730A6B737265676973747279036E657400000100010002A3000004C2000B67 +gd-ns.ksregistry.net. 172800 IN A 194.0.11.103 +0567642D6E730A6B737265676973747279036E657400001C00010002A300001020010678000E01030000000000000053 +gd-ns.ksregistry.net. 172800 IN AAAA 2001:678:e:103::53 +03646E73066C74746E6574036E657400000100010002A30000043EF02409 +dns.lttnet.net. 172800 IN A 62.240.36.9 +04646E7331066C74746E6574036E657400000100010002A30000043E442A09 +dns1.lttnet.net. 172800 IN A 62.68.42.9 +066E73312D6672096D6564696173657276036E657400000100010002A3000004BCA5260E +ns1-fr.mediaserv.net. 172800 IN A 188.165.38.14 +066E73312D6770096D6564696173657276036E657400000100010002A3000004D5BCAC01 +ns1-gp.mediaserv.net. 172800 IN A 213.188.172.1 +066E73312D6D71096D6564696173657276036E657400000100010002A3000004D5101403 +ns1-mq.mediaserv.net. 172800 IN A 213.16.20.3 +06736572766572056E6F726475036E657400000100010002A3000004C10AFC13 +server.nordu.net. 172800 IN A 193.10.252.19 +0161046E733133036E657400000100010002A300000431D41FC0 +a.ns13.net. 172800 IN A 49.212.31.192 +0162046E733133036E657400000100010002A300000431D43355 +b.ns13.net. 172800 IN A 49.212.51.85 +026E73066E74616D6172036E657400000100010002A300000475675821 +ns.ntamar.net. 172800 IN A 117.103.88.33 +05636C2D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD81E +cl-ns.anycast.pch.net. 172800 IN A 204.61.216.30 +05636C2D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014603000AD000000000001 +cl-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6030:ad::1 +0563792D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD82C +cy-ns.anycast.pch.net. 172800 IN A 204.61.216.44 +0563792D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014604400AD000000000001 +cy-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6044:ad::1 +0567642D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD82F +gd-ns.anycast.pch.net. 172800 IN A 204.61.216.47 +0567642D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014604700AD000000000001 +gd-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6047:ad::1 +0567792D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD822 +gy-ns.anycast.pch.net. 172800 IN A 204.61.216.34 +0567792D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014603400AD000000000001 +gy-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6034:ad::1 +0568742D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD826 +ht-ns.anycast.pch.net. 172800 IN A 204.61.216.38 +0568742D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014603800AD000000000001 +ht-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6038:ad::1 +056C732D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD81C +ls-ns.anycast.pch.net. 172800 IN A 204.61.216.28 +056C732D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014602800AD000000000001 +ls-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6028:ad::1 +056D732D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD821 +ms-ns.anycast.pch.net. 172800 IN A 204.61.216.33 +056D762D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD818 +mv-ns.anycast.pch.net. 172800 IN A 204.61.216.24 +056E612D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD823 +na-ns.anycast.pch.net. 172800 IN A 204.61.216.35 +056E612D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014603500AD000000000001 +na-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6035:ad::1 +056E702D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD80B +np-ns.anycast.pch.net. 172800 IN A 204.61.216.11 +056E702D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014601100AD000000000001 +np-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6011:ad::1 +0570722D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD817 +pr-ns.anycast.pch.net. 172800 IN A 204.61.216.23 +0570722D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014602300AD000000000001 +pr-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6023:ad::1 +0570732D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD81D +ps-ns.anycast.pch.net. 172800 IN A 204.61.216.29 +0570732D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014602900AD000000000001 +ps-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6029:ad::1 +0573612D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD829 +sa-ns.anycast.pch.net. 172800 IN A 204.61.216.41 +0573612D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014604100AD000000000001 +sa-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6041:ad::1 +0573672D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD839 +sg-ns.anycast.pch.net. 172800 IN A 204.61.216.57 +0573672D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014605700AD000000000001 +sg-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6057:ad::1 +057A612D6E7307616E796361737403706368036E657400000100010002A3000004CC3DD837 +za-ns.anycast.pch.net. 172800 IN A 204.61.216.55 +057A612D6E7307616E796361737403706368036E657400001C00010002A3000010200105000014605500AD000000000001 +za-ns.anycast.pch.net. 172800 IN AAAA 2001:500:14:6055:ad::1 +05616E796E7303706368036E657400000100010002A3000004CC3DD804 +anyns.pch.net. 172800 IN A 204.61.216.4 +0363617403706368036E657400000100010002A3000004CC3DD814 +cat.pch.net. 172800 IN A 204.61.216.20 +0363617403706368036E657400001C00010002A3000010200105000014602000AD000000000001 +cat.pch.net. 172800 IN AAAA 2001:500:14:6020:ad::1 +036E69630A6C6B2D616E796361737403706368036E657400000100010002A3000004CC3DD81B +nic.lk-anycast.pch.net. 172800 IN A 204.61.216.27 +026164056363746C640761757468646E730472697065036E657400000100010002A3000004C1000935 +ad.cctld.authdns.ripe.net. 172800 IN A 193.0.9.53 +026164056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000053 +ad.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::53 +026165056363746C640761757468646E730472697065036E657400000100010002A3000004C1000936 +ae.cctld.authdns.ripe.net. 172800 IN A 193.0.9.54 +026165056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000054 +ae.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::54 +02616C056363746C640761757468646E730472697065036E657400000100010002A3000004C1000938 +al.cctld.authdns.ripe.net. 172800 IN A 193.0.9.56 +02616C056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000056 +al.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::56 +02616D056363746C640761757468646E730472697065036E657400000100010002A3000004C1000939 +am.cctld.authdns.ripe.net. 172800 IN A 193.0.9.57 +02616D056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000057 +am.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::57 +02616E056363746C640761757468646E730472697065036E657400000100010002A3000004C100093A +an.cctld.authdns.ripe.net. 172800 IN A 193.0.9.58 +02616E056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000058 +an.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::58 +026172056363746C640761757468646E730472697065036E657400000100010002A3000004C100093B +ar.cctld.authdns.ripe.net. 172800 IN A 193.0.9.59 +026172056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000059 +ar.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::59 +026261056363746C640761757468646E730472697065036E657400000100010002A3000004C100093C +ba.cctld.authdns.ripe.net. 172800 IN A 193.0.9.60 +026261056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000060 +ba.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::60 +026267056363746C640761757468646E730472697065036E657400000100010002A3000004C100093D +bg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.61 +026267056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000061 +bg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::61 +026269056363746C640761757468646E730472697065036E657400000100010002A3000004C100093E +bi.cctld.authdns.ripe.net. 172800 IN A 193.0.9.62 +026269056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000062 +bi.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::62 +02626A056363746C640761757468646E730472697065036E657400000100010002A3000004C100093F +bj.cctld.authdns.ripe.net. 172800 IN A 193.0.9.63 +02626A056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000063 +bj.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::63 +026274056363746C640761757468646E730472697065036E657400000100010002A3000004C1000941 +bt.cctld.authdns.ripe.net. 172800 IN A 193.0.9.65 +026274056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000065 +bt.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::65 +026369056363746C640761757468646E730472697065036E657400000100010002A3000004C1000943 +ci.cctld.authdns.ripe.net. 172800 IN A 193.0.9.67 +026369056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000067 +ci.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::67 +02636D056363746C640761757468646E730472697065036E657400000100010002A3000004C1000944 +cm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.68 +02636D056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000068 +cm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::68 +026375056363746C640761757468646E730472697065036E657400000100010002A3000004C1000946 +cu.cctld.authdns.ripe.net. 172800 IN A 193.0.9.70 +026375056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000070 +cu.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::70 +026377056363746C640761757468646E730472697065036E657400000100010002A3000004C1000956 +cw.cctld.authdns.ripe.net. 172800 IN A 193.0.9.86 +026377056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000086 +cw.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::86 +02647A056363746C640761757468646E730472697065036E657400000100010002A3000004C1000947 +dz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.71 +02647A056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000071 +dz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::71 +026572056363746C640761757468646E730472697065036E657400000100010002A3000004C1000948 +er.cctld.authdns.ripe.net. 172800 IN A 193.0.9.72 +026572056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000072 +er.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::72 +026574056363746C640761757468646E730472697065036E657400000100010002A3000004C1000949 +et.cctld.authdns.ripe.net. 172800 IN A 193.0.9.73 +026574056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000073 +et.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::73 +026764056363746C640761757468646E730472697065036E657400000100010002A3000004C100094B +gd.cctld.authdns.ripe.net. 172800 IN A 193.0.9.75 +026764056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000075 +gd.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::75 +026770056363746C640761757468646E730472697065036E657400000100010002A3000004C100094C +gp.cctld.authdns.ripe.net. 172800 IN A 193.0.9.76 +026770056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000076 +gp.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::76 +026773056363746C640761757468646E730472697065036E657400000100010002A3000004C100094D +gs.cctld.authdns.ripe.net. 172800 IN A 193.0.9.77 +026773056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000077 +gs.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::77 +026775056363746C640761757468646E730472697065036E657400000100010002A3000004C100094E +gu.cctld.authdns.ripe.net. 172800 IN A 193.0.9.78 +026775056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000078 +gu.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::78 +026779056363746C640761757468646E730472697065036E657400000100010002A3000004C100094F +gy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.79 +026779056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000079 +gy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::79 +026973056363746C640761757468646E730472697065036E657400000100010002A3000004C1000951 +is.cctld.authdns.ripe.net. 172800 IN A 193.0.9.81 +026973056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000081 +is.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::81 +026A6D056363746C640761757468646E730472697065036E657400000100010002A3000004C1000952 +jm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.82 +026A6D056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000082 +jm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::82 +026A6F056363746C640761757468646E730472697065036E657400000100010002A3000004C1000953 +jo.cctld.authdns.ripe.net. 172800 IN A 193.0.9.83 +026A6F056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000083 +jo.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::83 +026B67056363746C640761757468646E730472697065036E657400000100010002A3000004C1000954 +kg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.84 +026B67056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000084 +kg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::84 +026B7A056363746C640761757468646E730472697065036E657400000100010002A3000004C1000957 +kz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.87 +026B7A056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000087 +kz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::87 +026C76056363746C640761757468646E730472697065036E657400000100010002A3000004C1000959 +lv.cctld.authdns.ripe.net. 172800 IN A 193.0.9.89 +026C76056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000089 +lv.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::89 +026C79056363746C640761757468646E730472697065036E657400000100010002A3000004C100095A +ly.cctld.authdns.ripe.net. 172800 IN A 193.0.9.90 +026C79056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000090 +ly.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::90 +026D61056363746C640761757468646E730472697065036E657400000100010002A3000004C100095B +ma.cctld.authdns.ripe.net. 172800 IN A 193.0.9.91 +026D61056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000091 +ma.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::91 +026D63056363746C640761757468646E730472697065036E657400000100010002A3000004C100095C +mc.cctld.authdns.ripe.net. 172800 IN A 193.0.9.92 +026D63056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000092 +mc.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::92 +026D64056363746C640761757468646E730472697065036E657400000100010002A3000004C100095D +md.cctld.authdns.ripe.net. 172800 IN A 193.0.9.93 +026D64056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000093 +md.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::93 +026D67056363746C640761757468646E730472697065036E657400000100010002A3000004C100095E +mg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.94 +026D67056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000094 +mg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::94 +026D6D056363746C640761757468646E730472697065036E657400000100010002A3000004C1000960 +mm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.96 +026D6D056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000096 +mm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::96 +026D77056363746C640761757468646E730472697065036E657400000100010002A3000004C1000963 +mw.cctld.authdns.ripe.net. 172800 IN A 193.0.9.99 +026D77056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000099 +mw.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::99 +026E63056363746C640761757468646E730472697065036E657400000100010002A3000004C1000964 +nc.cctld.authdns.ripe.net. 172800 IN A 193.0.9.100 +026E63056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000100 +nc.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::100 +026E65056363746C640761757468646E730472697065036E657400000100010002A3000004C1000965 +ne.cctld.authdns.ripe.net. 172800 IN A 193.0.9.101 +026E65056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000101 +ne.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::101 +026E70056363746C640761757468646E730472697065036E657400000100010002A3000004C1000966 +np.cctld.authdns.ripe.net. 172800 IN A 193.0.9.102 +026E70056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000102 +np.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::102 +027068056363746C640761757468646E730472697065036E657400000100010002A3000004C1000968 +ph.cctld.authdns.ripe.net. 172800 IN A 193.0.9.104 +027068056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000104 +ph.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::104 +027073056363746C640761757468646E730472697065036E657400000100010002A3000004C1000969 +ps.cctld.authdns.ripe.net. 172800 IN A 193.0.9.105 +027073056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000105 +ps.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::105 +027079056363746C640761757468646E730472697065036E657400000100010002A3000004C100096A +py.cctld.authdns.ripe.net. 172800 IN A 193.0.9.106 +027079056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000106 +py.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::106 +027361056363746C640761757468646E730472697065036E657400000100010002A3000004C100096C +sa.cctld.authdns.ripe.net. 172800 IN A 193.0.9.108 +027361056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000108 +sa.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::108 +027364056363746C640761757468646E730472697065036E657400000100010002A3000004C100096D +sd.cctld.authdns.ripe.net. 172800 IN A 193.0.9.109 +027364056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000109 +sd.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::109 +02736D056363746C640761757468646E730472697065036E657400000100010002A3000004C100096E +sm.cctld.authdns.ripe.net. 172800 IN A 193.0.9.110 +02736D056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000110 +sm.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::110 +02736E056363746C640761757468646E730472697065036E657400000100010002A3000004C100096F +sn.cctld.authdns.ripe.net. 172800 IN A 193.0.9.111 +02736E056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000111 +sn.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::111 +027376056363746C640761757468646E730472697065036E657400000100010002A3000004C1000970 +sv.cctld.authdns.ripe.net. 172800 IN A 193.0.9.112 +027376056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000112 +sv.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::112 +027379056363746C640761757468646E730472697065036E657400000100010002A3000004C1000971 +sy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.113 +027379056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000113 +sy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::113 +02737A056363746C640761757468646E730472697065036E657400000100010002A3000004C1000972 +sz.cctld.authdns.ripe.net. 172800 IN A 193.0.9.114 +02737A056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000114 +sz.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::114 +027468056363746C640761757468646E730472697065036E657400000100010002A3000004C1000974 +th.cctld.authdns.ripe.net. 172800 IN A 193.0.9.116 +027468056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000116 +th.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::116 +02746A056363746C640761757468646E730472697065036E657400000100010002A3000004C1000975 +tj.cctld.authdns.ripe.net. 172800 IN A 193.0.9.117 +02746A056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000117 +tj.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::117 +02746F056363746C640761757468646E730472697065036E657400000100010002A3000004C1000976 +to.cctld.authdns.ripe.net. 172800 IN A 193.0.9.118 +02746F056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000118 +to.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::118 +027470056363746C640761757468646E730472697065036E657400000100010002A3000004C1000977 +tp.cctld.authdns.ripe.net. 172800 IN A 193.0.9.119 +027470056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000119 +tp.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::119 +027472056363746C640761757468646E730472697065036E657400000100010002A3000004C1000978 +tr.cctld.authdns.ripe.net. 172800 IN A 193.0.9.120 +027472056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000120 +tr.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::120 +027567056363746C640761757468646E730472697065036E657400000100010002A3000004C1000934 +ug.cctld.authdns.ripe.net. 172800 IN A 193.0.9.52 +027567056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000052 +ug.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::52 +027579056363746C640761757468646E730472697065036E657400000100010002A3000004C100097A +uy.cctld.authdns.ripe.net. 172800 IN A 193.0.9.122 +027579056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000122 +uy.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::122 +027661056363746C640761757468646E730472697065036E657400000100010002A3000004C100097B +va.cctld.authdns.ripe.net. 172800 IN A 193.0.9.123 +027661056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000123 +va.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::123 +027667056363746C640761757468646E730472697065036E657400000100010002A3000004C100097C +vg.cctld.authdns.ripe.net. 172800 IN A 193.0.9.124 +027667056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000124 +vg.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::124 +02766E056363746C640761757468646E730472697065036E657400000100010002A3000004C100097E +vn.cctld.authdns.ripe.net. 172800 IN A 193.0.9.126 +02766E056363746C640761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000126 +vn.cctld.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::126 +04736563320761757468646E730472697065036E657400000100010002A3000004C1000904 +sec2.authdns.ripe.net. 172800 IN A 193.0.9.4 +04736563320761757468646E730472697065036E657400001C00010002A30000102001067C00E000000000000000000004 +sec2.authdns.ripe.net. 172800 IN AAAA 2001:67c:e0::4 +056E732D626E0472697065036E657400000100010002A3000004C1000C21 +ns-bn.ripe.net. 172800 IN A 193.0.12.33 +056E732D6B680472697065036E657400000100010002A3000004C1000C25 +ns-kh.ripe.net. 172800 IN A 193.0.12.37 +056E732D7A770472697065036E657400000100010002A3000004C1000CF9 +ns-zw.ripe.net. 172800 IN A 193.0.12.249 +016103646E73047269706E036E657400000100010002A3000004C1E88006 +a.dns.ripn.net. 172800 IN A 193.232.128.6 +016103646E73047269706E036E657400001C00010002A300001020010678001700000193023201280006 +a.dns.ripn.net. 172800 IN AAAA 2001:678:17:0:193:232:128:6 +016203646E73047269706E036E657400000100010002A3000004C255FC3E +b.dns.ripn.net. 172800 IN A 194.85.252.62 +016203646E73047269706E036E657400001C00010002A300001020010678001600000194008502520062 +b.dns.ripn.net. 172800 IN AAAA 2001:678:16:0:194:85:252:62 +016403646E73047269706E036E657400000100010002A3000004C2BE7C11 +d.dns.ripn.net. 172800 IN A 194.190.124.17 +016403646E73047269706E036E657400001C00010002A300001020010678001800000194019001240017 +d.dns.ripn.net. 172800 IN AAAA 2001:678:18:0:194:190:124:17 +016503646E73047269706E036E657400000100010002A3000004C1E88E11 +e.dns.ripn.net. 172800 IN A 193.232.142.17 +016503646E73047269706E036E657400001C00010002A300001020010678001500000193023201420017 +e.dns.ripn.net. 172800 IN AAAA 2001:678:15:0:193:232:142:17 +016603646E73047269706E036E657400000100010002A3000004C1E89C11 +f.dns.ripn.net. 172800 IN A 193.232.156.17 +016603646E73047269706E036E657400001C00010002A300001020010678001400000193023201560017 +f.dns.ripn.net. 172800 IN AAAA 2001:678:14:0:193:232:156:17 +01610C726F6F742D73657276657273036E657400000100010007E9000004C6290004 +a.root-servers.net. 518400 IN A 198.41.0.4 +01610C726F6F742D73657276657273036E657400001C00010007E900001020010503BA3E00000000000000020030 +a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 +01620C726F6F742D73657276657273036E657400000100010007E9000004C0E44FC9 +b.root-servers.net. 518400 IN A 192.228.79.201 +01630C726F6F742D73657276657273036E657400000100010007E9000004C021040C +c.root-servers.net. 518400 IN A 192.33.4.12 +01640C726F6F742D73657276657273036E657400000100010007E9000004C7075B0D +d.root-servers.net. 518400 IN A 199.7.91.13 +01640C726F6F742D73657276657273036E657400001C00010007E900001020010500002D0000000000000000000D +d.root-servers.net. 518400 IN AAAA 2001:500:2d::d +01650C726F6F742D73657276657273036E657400000100010007E9000004C0CBE60A +e.root-servers.net. 518400 IN A 192.203.230.10 +01660C726F6F742D73657276657273036E657400000100010007E9000004C00505F1 +f.root-servers.net. 518400 IN A 192.5.5.241 +01660C726F6F742D73657276657273036E657400001C00010007E900001020010500002F0000000000000000000F +f.root-servers.net. 518400 IN AAAA 2001:500:2f::f +01670C726F6F742D73657276657273036E657400000100010007E9000004C0702404 +g.root-servers.net. 518400 IN A 192.112.36.4 +01680C726F6F742D73657276657273036E657400000100010007E9000004803F0235 +h.root-servers.net. 518400 IN A 128.63.2.53 +01680C726F6F742D73657276657273036E657400001C00010007E9000010200105000001000000000000803F0235 +h.root-servers.net. 518400 IN AAAA 2001:500:1::803f:235 +01690C726F6F742D73657276657273036E657400000100010007E9000004C0249411 +i.root-servers.net. 518400 IN A 192.36.148.17 +01690C726F6F742D73657276657273036E657400001C00010007E9000010200107FE000000000000000000000053 +i.root-servers.net. 518400 IN AAAA 2001:7fe::53 +016A0C726F6F742D73657276657273036E657400000100010007E9000004C03A801E +j.root-servers.net. 518400 IN A 192.58.128.30 +016A0C726F6F742D73657276657273036E657400001C00010007E9000010200105030C2700000000000000020030 +j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 +016B0C726F6F742D73657276657273036E657400000100010007E9000004C1000E81 +k.root-servers.net. 518400 IN A 193.0.14.129 +016B0C726F6F742D73657276657273036E657400001C00010007E9000010200107FD000000000000000000000001 +k.root-servers.net. 518400 IN AAAA 2001:7fd::1 +016C0C726F6F742D73657276657273036E657400000100010007E9000004C707532A +l.root-servers.net. 518400 IN A 199.7.83.42 +016C0C726F6F742D73657276657273036E657400001C00010007E900001020010500000300000000000000000042 +l.root-servers.net. 518400 IN AAAA 2001:500:3::42 +016D0C726F6F742D73657276657273036E657400000100010007E9000004CA0C1B21 +m.root-servers.net. 518400 IN A 202.12.27.33 +016D0C726F6F742D73657276657273036E657400001C00010007E900001020010DC3000000000000000000000035 +m.root-servers.net. 518400 IN AAAA 2001:dc3::35 +0569677562750473616978036E657400000100010002A3000004C4190101 +igubu.saix.net. 172800 IN A 196.25.1.1 +06736162656C610473616978036E657400000100010002A3000004C42B0109 +sabela.saix.net. 172800 IN A 196.43.1.9 +046E73303206736176766973036E657400000100010002A3000004CC4639F2 +ns02.savvis.net. 172800 IN A 204.70.57.242 +036E7331027372036E657400000100010002A3000004C8019F94 +ns1.sr.net. 172800 IN A 200.1.159.148 +036E7332027372036E657400000100010002A3000004C802A21E +ns2.sr.net. 172800 IN A 200.2.162.30 +026E730574686E6963036E657400000100010002A3000004CA1C0001 +ns.thnic.net. 172800 IN A 202.28.0.1 +026E730574776E6963036E657400000100010002A3000004C053A60B +ns.twnic.net. 172800 IN A 192.83.166.11 +026E730574776E6963036E657400001C00010002A300001020010288000110060000000000000011 +ns.twnic.net. 172800 IN AAAA 2001:288:1:1006::11 +04646E73320A752D7265676973747279036E657400000100010002A3000004C37B0107 +dns2.u-registry.net. 172800 IN A 195.123.1.7 +04646E73320A752D7265676973747279036E657400001C00010002A30000102A020128000200000000000000000005 +dns2.u-registry.net. 172800 IN AAAA 2a02:128:2::5 +036E73690575616E6963036E657400000100010002A3000004D40142F7 +nsi.uanic.net. 172800 IN A 212.1.66.247 +04746C643108756C747261646E73036E657400000100010002A3000004CC4A7001 +tld1.ultradns.net. 172800 IN A 204.74.112.1 +04746C643108756C747261646E73036E657400001C00010002A300001020010502D39900000000000000000001 +tld1.ultradns.net. 172800 IN AAAA 2001:502:d399::1 +04746C643208756C747261646E73036E657400000100010002A3000004CC4A7101 +tld2.ultradns.net. 172800 IN A 204.74.113.1 +0161026E730B756E697265676973747279036E657400000100010002A300000448347EA6 +a.ns.uniregistry.net. 172800 IN A 72.52.126.166 +0161026E730B756E697265676973747279036E657400001C00010002A30000102001047000A400100000000000000166 +a.ns.uniregistry.net. 172800 IN AAAA 2001:470:a4:10::166 +026E73027575036E657400000100010002A300000489270103 +ns.uu.net. 172800 IN A 137.39.1.3 +06617574683030026E73027575036E657400000100010002A3000004C6060141 +auth00.ns.uu.net. 172800 IN A 198.6.1.65 +06617574683030026E73027575036E657400001C00010002A300001026000803040800020000000000000010 +auth00.ns.uu.net. 172800 IN AAAA 2600:803:408:2::10 +06617574683032026E73027575036E657400000100010002A3000004C6060152 +auth02.ns.uu.net. 172800 IN A 198.6.1.82 +06617574683033026E73027575036E657400000100010002A3000004C6060153 +auth03.ns.uu.net. 172800 IN A 198.6.1.83 +0761757468313030026E73027575036E657400000100010002A3000004C60601CA +auth100.ns.uu.net. 172800 IN A 198.6.1.202 +0761757468313130026E73027575036E657400000100010002A3000004C6060172 +auth110.ns.uu.net. 172800 IN A 198.6.1.114 +0761757468323030026E73027575036E657400000100010002A3000004C3810C52 +auth200.ns.uu.net. 172800 IN A 195.129.12.82 +0761757468323030026E73027575036E657400001C00010002A30000102001060001C0E0000000000000350002 +auth200.ns.uu.net. 172800 IN AAAA 2001:600:1c0:e000::35:2 +0761757468323130026E73027575036E657400000100010002A3000004C3810C4A +auth210.ns.uu.net. 172800 IN A 195.129.12.74 +0761757468323130026E73027575036E657400001C00010002A30000102001060001C0E0010000000000350002 +auth210.ns.uu.net. 172800 IN AAAA 2001:600:1c0:e001::35:2 +06617574683631026E73027575036E657400000100010002A3000004C60601B6 +auth61.ns.uu.net. 172800 IN A 198.6.1.182 +026E6600000200010002A3000013026E7307616E7963617374036E6963026E6600 +nf. 172800 IN NS ns.anycast.nic.nf. +026E6600000200010002A3000010036E66310664796E746C64036E657400 +nf. 172800 IN NS nf1.dyntld.net. +026E6600000200010002A3000010036E66330664796E746C64036E657400 +nf. 172800 IN NS nf3.dyntld.net. +026E6600000200010002A300001006736E732D706203697363036F726700 +nf. 172800 IN NS sns-pb.isc.org. +026E6600002B0001000151800024D3DC0802DD87DD324E8360DEC8DAAF2DB771B8C52024D6CEFEB76F2B855E0FC3B8FDB7D7 +nf. 86400 IN DS 54236 8 2 DD87DD324E8360DEC8DAAF2DB771B8C52024D6CEFEB76F2B855E0FC3B8FDB7D7 +026E6600002E0001000151800093002B08010001518052F4220052EAD970837700890B6499743F929DDA55CD440AC58520746203E4E535355AD2C9D1191CC7F7770CD65633B219D0D512C57B63A2A6E7A60970185C1A6BCFB4F7BD76E4EC3DD7C244F8B0A7B9D2A243DEAB45977416EE119C6AE8730FDB21B8BB585C0F4D0980D26B49D6DD4DAAA82DD283CBEFF2D3EE0B4DEA7B6D3C685CC9BC58EF0FC8B5924E +nf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iQtkmXQ/kp3aVc1ECsWFIHRiA+TlNTVa0snRGRzH93cM1lYzshnQ1RLFe2OipuemCXAYXBprz7T3vXbk7D3XwkT4sKe50qJD3qtFl3QW7hGcauhzD9shuLtYXA9NCYDSa0nW3U2qqC3Sg8vv8tPuC03qe208aFzJvFjvD8i1kk4= ;{id = 33655} +026E6600002E0001000151800093002F08010001518052F4220052EAD9708377004630AAEFF5B3FC210B140EA3CFBAAE043CDCDE8BFBEEC5ECEF2144010981A17EA3AC1531224F5FEFAAE27F005067CAEA0C5D341E549664FEA0F8D60B1D92CC2EE1A2F9142E901AFE5EEAC107FBB0609273F92AA450DB127E0C698EC5849873645D47713A426050996AB9391F3F99E8AE18F842BFE65F6E4EB1068C7B33300DCD +nf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RjCq7/Wz/CELFA6jz7quBDzc3ov77sXs7yFEAQmBoX6jrBUxIk9f76rifwBQZ8rqDF00HlSWZP6g+NYLHZLMLuGi+RQukBr+XurBB/uwYJJz+SqkUNsSfgxpjsWEmHNkXUdxOkJgUJlquTkfP5norhj4Qr/mX25OsQaMezMwDc0= ;{id = 33655} +026E6600002F000100015180000C026E67000006200000000013 +nf. 86400 IN NSEC ng. NS DS RRSIG NSEC +026E7307616E7963617374036E6963026E6600000100010002A3000004CC3DD833 +ns.anycast.nic.nf. 172800 IN A 204.61.216.51 +026E7307616E7963617374036E6963026E6600001C00010002A3000010200105000014605100AD000000000001 +ns.anycast.nic.nf. 172800 IN AAAA 2001:500:14:6051:ad::1 +026E6700000200010002A3000010036E7331036E6963036E6574026E6700 +ng. 172800 IN NS ns1.nic.net.ng. +026E6700000200010002A3000010036E7332036E6963036E6574026E6700 +ng. 172800 IN NS ns2.nic.net.ng. +026E6700000200010002A3000010036E7333036E6963036E6574026E6700 +ng. 172800 IN NS ns3.nic.net.ng. +026E6700000200010002A3000010036E7334036E6963036E6574026E6700 +ng. 172800 IN NS ns4.nic.net.ng. +026E6700000200010002A3000010036E7361036E6963036E6574026E6700 +ng. 172800 IN NS nsa.nic.net.ng. +026E6700002F000100015180000C026E69000006200000000003 +ng. 86400 IN NSEC ni. NS RRSIG NSEC +026E6700002E0001000151800093002F08010001518052F4220052EAD9708377001CCFB076499CA393662A5966BC58F2262B3DEAA37653386D120B4CA14FE1540835104C154AC1587B81DA4BC4607B6B37E5EB4DEFC3E0C75DDEDB90A3D4D0E270C648AE49666DD664E752B28E2CC800F991938DECB4DB6A9CD8EA038DF621FF7A16D846A80E0F1F8291D25072858C6862612EDD2E234358B22702A5A60CF9EB97 +ng. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HM+wdkmco5NmKllmvFjyJis96qN2UzhtEgtMoU/hVAg1EEwVSsFYe4HaS8Rge2s35etN78Pgx13e25Cj1NDicMZIrklmbdZk51KyjizIAPmRk43stNtqnNjqA432If96FthGqA4PH4KR0lByhYxoYmEu3S4jQ1iyJwKlpgz565c= ;{id = 33655} +036E7331036E6963036E6574026E6700000100010002A3000004C200011D +ns1.nic.net.ng. 172800 IN A 194.0.1.29 +036E7331036E6963036E6574026E6700001C00010002A30000102001067800040000000000000000001D +ns1.nic.net.ng. 172800 IN AAAA 2001:678:4::1d +036E7332036E6963036E6574026E6700000100010002A3000004CC3DD828 +ns2.nic.net.ng. 172800 IN A 204.61.216.40 +036E7333036E6963036E6574026E6700000100010002A3000004D04E465D +ns3.nic.net.ng. 172800 IN A 208.78.70.93 +036E7334036E6963036E6574026E6700000100010002A3000004CC0DFA5D +ns4.nic.net.ng. 172800 IN A 204.13.250.93 +036E7361036E6963036E6574026E6700000100010002A300000429DE4F03 +nsa.nic.net.ng. 172800 IN A 41.222.79.3 +026E6900000200010002A3000007026E7302637200 +ni. 172800 IN NS ns.cr. +026E6900000200010002A3000007026E73026E6900 +ni. 172800 IN NS ns.ni. +026E6900000200010002A300000B026E73027575036E657400 +ni. 172800 IN NS ns.uu.net. +026E6900000200010002A300000F026E730369627703636F6D026E6900 +ni. 172800 IN NS ns.ibw.com.ni. +026E6900000200010002A300000F026E7303746D7803636F6D026E6900 +ni. 172800 IN NS ns.tmx.com.ni. +026E6900000200010002A3000011026E73056964656179036E6574026E6900 +ni. 172800 IN NS ns.ideay.net.ni. +026E6900000200010002A3000008036E7332026E6900 +ni. 172800 IN NS ns2.ni. +026E6900002F000100015180000F056E696E6A61000006200000000003 +ni. 86400 IN NSEC ninja. NS RRSIG NSEC +026E6900002E0001000151800093002F08010001518052F4220052EAD9708377008E6B7B318164365DB3F21BC924C8FF50644586B0BC58BC23F10164159C0C3C304C120DE1268CB88EB13D25A7F7D68D4EA155091B7247FAB0FF5680245CCBECC8F027E1EB8A7F015FDF23219FA3CA0644196644668333F2B60C64A00B6F0182748ED961871745CE96E048CEC8EC704E4094F4A172CD0F116C40CBEF41DC83F33F +ni. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jmt7MYFkNl2z8hvJJMj/UGRFhrC8WLwj8QFkFZwMPDBMEg3hJoy4jrE9Jaf31o1OoVUJG3JH+rD/VoAkXMvsyPAn4euKfwFf3yMhn6PKBkQZZkRmgzPytgxkoAtvAYJ0jtlhhxdFzpbgSM7I7HBOQJT0oXLNDxFsQMvvQdyD8z8= ;{id = 33655} +026E730369627703636F6D026E6900000100010002A3000004C855A002 +ns.ibw.com.ni. 172800 IN A 200.85.160.2 +026E7303746D7803636F6D026E6900000100010002A3000004C83E4001 +ns.tmx.com.ni. 172800 IN A 200.62.64.1 +026E73056964656179036E6574026E6900000100010002A3000004C809BE82 +ns.ideay.net.ni. 172800 IN A 200.9.190.130 +026E73026E6900000100010002A3000004A5620102 +ns.ni. 172800 IN A 165.98.1.2 +036E7332026E6900000100010002A3000004C809BB02 +ns2.ni. 172800 IN A 200.9.187.2 +056E696E6A6100000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +ninja. 172800 IN NS demand.beta.aridns.net.au. +056E696E6A6100000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +ninja. 172800 IN NS demand.alpha.aridns.net.au. +056E696E6A6100000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +ninja. 172800 IN NS demand.delta.aridns.net.au. +056E696E6A6100000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +ninja. 172800 IN NS demand.gamma.aridns.net.au. +056E696E6A6100002B0001000151800024D70508025E37FAE7300F5183057D2FAAD662FCCBEC710849DFED3D31E066E36232B1FE07 +ninja. 86400 IN DS 55045 8 2 5E37FAE7300F5183057D2FAAD662FCCBEC710849DFED3D31E066E36232B1FE07 +056E696E6A6100002E0001000151800093002B08010001518052F4220052EAD9708377005862D7A8EB81AF0860B5748CC4C383DA53F1A88EDF4518AD6A72B6FFB2C7B4C2B87E583C6CC8CB4D53FE3112F249CBA091ACD039FE85C244C0D81ABC97B7F15DCC6CD5117FC09027B8651AEB2EDCDF019AEFE3DFCFBC7371CC50E5B08DFFFB55F01330FC04D6873EB714E41E17A56D4CA2621065A96B0A5E3C8B91A81D2290EC +ninja. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WGLXqOuBrwhgtXSMxMOD2lPxqI7fRRitanK2/7LHtMK4flg8bMjLTVP+MRLyScugkazQOf6FwkTA2Bq8l7fxXcxs1RF/wJAnuGUa6y7c3wGa7+Pfz7xzccxQ5bCN//tV8BMw/ATWhz63FOQeF6VtTKJiEGWpawpePIuRqB0ikOw= ;{id = 33655} +056E696E6A6100002E0001000151800093002F08010001518052F4220052EAD97083770018AB753D1DF8AFFA371EC158EDE50209BB62D6F973BDC309A1531F241AEC11A85CAFB78E7FE7CFD824F953C99E9AAD95C4C374E766540AAC27FE19795A09D664AF3F233EDEEE638D288C0F333EE22F999CF3908C2987B793B183006C395E503DD6868B0E8DE12EB4A54E2820ADB22F6611B074B76F59C5BC44F0DA1E6FCD2036 +ninja. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GKt1PR34r/o3HsFY7eUCCbti1vlzvcMJoVMfJBrsEahcr7eOf+fP2CT5U8memq2VxMN052ZUCqwn/hl5WgnWZK8/Iz7e7mONKIwPMz7iL5mc85CMKYe3k7GDAGw5XlA91oaLDo3hLrSlTiggrbIvZhGwdLdvWcW8RPDaHm/NIDY= ;{id = 33655} +056E696E6A6100002F000100015180000C026E6C000006200000000013 +ninja. 86400 IN NSEC nl. NS DS RRSIG NSEC +026E6C00002F000100015180000C026E6F000006200000000013 +nl. 86400 IN NSEC no. NS DS RRSIG NSEC +026E6C00002E0001000151800093002F08010001518052F4220052EAD9708377009EA48CC0DEA769616316C5B97DF255C95E4E3FCC8C48D64EA9FE1FEBAE252F93B1420564B6AF46A9B40A91765D0C5857F5718E10338E3FCE00F5EBE6751A620587244236BC5E5D165C811312BE029B6CA2E032B2364EDDFE49B00D2A891CE66464F45CDF22E9F6D61F2A350088CE0FFDACF3721768BF6CCD3A8E26868DCB2A19 +nl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nqSMwN6naWFjFsW5ffJVyV5OP8yMSNZOqf4f664lL5OxQgVktq9GqbQKkXZdDFhX9XGOEDOOP84A9evmdRpiBYckQja8Xl0WXIETEr4Cm2yi4DKyNk7d/kmwDSqJHOZkZPRc3yLp9tYfKjUAiM4P/azzchdov2zNOo4mho3LKhk= ;{id = 33655} +026E6C00002E0001000151800093002B08010001518052F4220052EAD970837700A31C1D0B9CBA230BAB52AEE61CE9C8A7B45EEDFDB35AD9BCB8D4756132B094AC3443CE097F08B931AA355B9A968DE33F3C576A1661236A8DE9E761BDA44102A96684086A3983A21589952A9C78E4845C9E5B7D40B4C7254574A014E97D19D0F0AD59600DA4E0BEC38D2739FE7057EF818F507CAB09FCA1EE292CB09E5BAE7E40 +nl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oxwdC5y6IwurUq7mHOnIp7Re7f2zWtm8uNR1YTKwlKw0Q84Jfwi5Mao1W5qWjeM/PFdqFmEjao3p52G9pEECqWaECGo5g6IViZUqnHjkhFyeW31AtMclRXSgFOl9GdDwrVlgDaTgvsONJzn+cFfvgY9QfKsJ/KHuKSywnluufkA= ;{id = 33655} +026E6C00000200010002A3000011036E6C3107646E736E6F6465036E657400 +nl. 172800 IN NS nl1.dnsnode.net. +026E6C00000200010002A300000C036E733103646E73026E6C00 +nl. 172800 IN NS ns1.dns.nl. +026E6C00000200010002A300000C036E733203646E73026E6C00 +nl. 172800 IN NS ns2.dns.nl. +026E6C00000200010002A300000C036E733303646E73026E6C00 +nl. 172800 IN NS ns3.dns.nl. +026E6C00000200010002A300000C036E733403646E73026E6C00 +nl. 172800 IN NS ns4.dns.nl. +026E6C00000200010002A300000C036E733503646E73026E6C00 +nl. 172800 IN NS ns5.dns.nl. +026E6C00000200010002A300000E056E732D6E6C036E696302667200 +nl. 172800 IN NS ns-nl.nic.fr. +026E6C00000200010002A300001006736E732D706203697363036F726700 +nl. 172800 IN NS sns-pb.isc.org. +026E6C00002B000100015180002453720802881D17ECCD7FD67F1086247611CCB7FB8646E82D0074AA91E980B016FD3EDE98 +nl. 86400 IN DS 21362 8 2 881D17ECCD7FD67F1086247611CCB7FB8646E82D0074AA91E980B016FD3EDE98 +036E733103646E73026E6C00000100010002A3000004C1B09005 +ns1.dns.nl. 172800 IN A 193.176.144.5 +036E733103646E73026E6C00001C00010002A30000102A000D78000001020193017601440005 +ns1.dns.nl. 172800 IN AAAA 2a00:d78:0:102:193:176:144:5 +036E733203646E73026E6C00000100010002A3000004D59AF155 +ns2.dns.nl. 172800 IN A 213.154.241.85 +036E733203646E73026E6C00001C00010002A3000010200107B8060600000000000000000085 +ns2.dns.nl. 172800 IN AAAA 2001:7b8:606::85 +036E733303646E73026E6C00000100010002A3000004C2AB110A +ns3.dns.nl. 172800 IN A 194.171.17.10 +036E733303646E73026E6C00001C00010002A3000010200106100000800D0000000000000010 +ns3.dns.nl. 172800 IN AAAA 2001:610:0:800d::10 +036E733403646E73026E6C00000100010002A30000045F8E63D4 +ns4.dns.nl. 172800 IN A 95.142.99.212 +036E733403646E73026E6C00001C00010002A30000102A001188000500000000000000000212 +ns4.dns.nl. 172800 IN AAAA 2a00:1188:5::212 +036E733503646E73026E6C00000100010002A3000004C2001C35 +ns5.dns.nl. 172800 IN A 194.0.28.53 +036E733503646E73026E6C00001C00010002A300001020010678002C00000194000000280053 +ns5.dns.nl. 172800 IN AAAA 2001:678:2c:0:194:0:28:53 +056E732D7074096E6C6E65746C616273026E6C00000100010002A3000004D59AE08D +ns-pt.nlnetlabs.nl. 172800 IN A 213.154.224.141 +056E732D7074096E6C6E65746C616273026E6C00001C00010002A3000010200107B8020600010000000000040141 +ns-pt.nlnetlabs.nl. 172800 IN AAAA 2001:7b8:206:1::4:141 +0A6E732D61772D65787431047369646E026E6C00000100010002A3000004C1B09017 +ns-aw-ext1.sidn.nl. 172800 IN A 193.176.144.23 +0A6E732D61772D65787431047369646E026E6C00001C00010002A30000102A000D78000001020193017601440023 +ns-aw-ext1.sidn.nl. 172800 IN AAAA 2a00:d78:0:102:193:176:144:23 +026E6F00002F000100015180000C026E70000006200000000003 +no. 86400 IN NSEC np. NS RRSIG NSEC +026E6F00002E0001000151800093002F08010001518052F4220052EAD970837700B431154E6D422953469CBE61598C51287B455FDF97ABB6FCC6CB3CCB05C6A4E9BF90642AC41E101104A52AADD33C3382FC3B3C9A0DCC5F58C1967AE674ECCB4DCA4CDB6006B406B397B1ABC21FABE970B707D584ECC1F97A66E1B9F5EE48D90C2813BDCF48039C669E6A552D3A5E28EB6C4C6B08A950CE55F21C4D2E536AF5AB +no. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tDEVTm1CKVNGnL5hWYxRKHtFX9+Xq7b8xss8ywXGpOm/kGQqxB4QEQSlKq3TPDOC/Ds8mg3MX1jBlnrmdOzLTcpM22AGtAazl7Grwh+r6XC3B9WE7MH5embhufXuSNkMKBO9z0gDnGaealUtOl4o62xMawipUM5V8hxNLlNq9as= ;{id = 33655} +026E6F00000200010002A300000A0169036E6963026E6F00 +no. 172800 IN NS i.nic.no. +026E6F00000200010002A300000A0178036E6963026E6F00 +no. 172800 IN NS x.nic.no. +026E6F00000200010002A300000A0179036E6963026E6F00 +no. 172800 IN NS y.nic.no. +026E6F00000200010002A300000A017A036E6963026E6F00 +no. 172800 IN NS z.nic.no. +026E6F00000200010002A300000E036E6F74056E6F726964026E6F00 +no. 172800 IN NS not.norid.no. +026E6F00000200010002A300000F046E6A6574056E6F726964026E6F00 +no. 172800 IN NS njet.norid.no. +036E6163026E6F00000100010002A300000480270216 +nac.no. 172800 IN A 128.39.2.22 +0169036E6963026E6F00000100010002A3000004C2926A06 +i.nic.no. 172800 IN A 194.146.106.6 +0178036E6963026E6F00000100010002A300000480270828 +x.nic.no. 172800 IN A 128.39.8.40 +0179036E6963026E6F00000100010002A3000004C14B0416 +y.nic.no. 172800 IN A 193.75.4.22 +0179036E6963026E6F00001C00010002A3000010200108C0820000010000000000000002 +y.nic.no. 172800 IN AAAA 2001:8c0:8200:1::2 +017A036E6963026E6F00000100010002A30000049E260885 +z.nic.no. 172800 IN A 158.38.8.133 +017A036E6963026E6F00001C00010002A3000010200107000000052D0158003800080133 +z.nic.no. 172800 IN AAAA 2001:700:0:52d:158:38:8:133 +046E6A6574056E6F726964026E6F00000100010002A30000049C9A650C +njet.norid.no. 172800 IN A 156.154.101.12 +036E6F74056E6F726964026E6F00000100010002A30000049C9A640C +not.norid.no. 172800 IN A 156.154.100.12 +036E6F74056E6F726964026E6F00001C00010002A300001020010502AD0900000000000000000012 +not.norid.no. 172800 IN AAAA 2001:502:ad09::12 +026E6E07756E696E657474026E6F00000100010002A30000049E2600B5 +nn.uninett.no. 172800 IN A 158.38.0.181 +026E7000000200010002A300001B026E70056363746C640761757468646E730472697065036E657400 +np. 172800 IN NS np.cctld.authdns.ripe.net. +026E7000000200010002A300001004736563330561706E6963036E657400 +np. 172800 IN NS sec3.apnic.net. +026E7000000200010002A3000013056E702D6E73046E706978036E6574026E7000 +np. 172800 IN NS np-ns.npix.net.np. +026E7000000200010002A3000017056E702D6E7307616E796361737403706368036E657400 +np. 172800 IN NS np-ns.anycast.pch.net. +026E7000000200010002A3000010066E732D65787403697363036F726700 +np. 172800 IN NS ns-ext.isc.org. +026E7000000200010002A3000014077368696B686172036D6F7303636F6D026E7000 +np. 172800 IN NS shikhar.mos.com.np. +026E7000000200010002A30000180779617272696E6107636F6E6E65637403636F6D02617500 +np. 172800 IN NS yarrina.connect.com.au. +026E7000002F000100015180000C026E72000006200000000003 +np. 86400 IN NSEC nr. NS RRSIG NSEC +026E7000002E0001000151800093002F08010001518052F4220052EAD9708377005FFB2EF4522DCD2A8C59A28500CC5A1FBE34310C9F19F1921F1BC809F8A2580A75A37C7D3061317F79CBDF10E28ACD61F8B630DA8C525FA9F5E050AF9EBA570C2AB9F0D2147E175D08E1A8F30A2BBAF1838C1D73D8CD49BCB3CE4A495876F0910F717962CD7EBE0765EE1280D35E251C5FBF749D5D1F1345E1D64D0F49755174 +np. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X/su9FItzSqMWaKFAMxaH740MQyfGfGSHxvICfiiWAp1o3x9MGExf3nL3xDiis1h+LYw2oxSX6n14FCvnrpXDCq58NIUfhddCOGo8woruvGDjB1z2M1JvLPOSklYdvCRD3F5Ys1+vgdl7hKA014lHF+/dJ1dHxNF4dZND0l1UXQ= ;{id = 33655} +077368696B686172036D6F7303636F6D026E7000000100010002A3000004CA34FF05 +shikhar.mos.com.np. 172800 IN A 202.52.255.5 +056E702D6E73046E706978036E6574026E7000000100010002A3000004C6207E32 +np-ns.npix.net.np. 172800 IN A 198.32.126.50 +026E7200000200010002A3000013036E7331036E657405726561636803636F6D00 +nr. 172800 IN NS ns1.net.reach.com. +026E7200000200010002A300001404646E73310663656E706163036E6574026E7200 +nr. 172800 IN NS dns1.cenpac.net.nr. +026E7200000200010002A3000015056E727765620663656E706163036E6574026E7200 +nr. 172800 IN NS nrweb.cenpac.net.nr. +026E7200000200010002A300001006736E732D706203697363036F726700 +nr. 172800 IN NS sns-pb.isc.org. +026E7200002F000100015180000C026E75000006200000000003 +nr. 86400 IN NSEC nu. NS RRSIG NSEC +026E7200002E0001000151800093002F08010001518052F4220052EAD9708377008F77C798817EDD7AA1F68B21742940B93BC1D18A2E22695365F207B64E1159ECFB860A80E232C9984905D2DC41057E5AA23F018C7A87C94238E6182DB838920F9E192D74894D857A11D7E9F7695D8699BDE2662FE038040378323EC265AE1A863D1F7E8E124E387D600EDD3B59B70BDAD662DE5C831A91E645FF3F8494BBA5DC +nr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . j3fHmIF+3Xqh9oshdClAuTvB0YouImlTZfIHtk4RWez7hgqA4jLJmEkF0txBBX5aoj8BjHqHyUI45hgtuDiSD54ZLXSJTYV6Edfp92ldhpm94mYv4DgEA3gyPsJlrhqGPR9+jhJOOH1gDt07WbcL2tZi3lyDGpHmRf8/hJS7pdw= ;{id = 33655} +04646E73310663656E706163036E6574026E7200000100010002A3000004CB62E109 +dns1.cenpac.net.nr. 172800 IN A 203.98.225.9 +056E727765620663656E706163036E6574026E7200000100010002A3000004CB62E042 +nrweb.cenpac.net.nr. 172800 IN A 203.98.224.66 +026E7500000200010002A300000A0161036E6963026E7500 +nu. 172800 IN NS a.nic.nu. +026E7500000200010002A300000A0162036E6963026E7500 +nu. 172800 IN NS b.nic.nu. +026E7500000200010002A300000A0163036E6963026E7500 +nu. 172800 IN NS c.nic.nu. +026E7500002B00010001518000240D7D0702270AAD4FB6BC3AF95CB66B2F9C61F615D4510C5702B54899C26EE2E37DBCA6D8 +nu. 86400 IN DS 3453 7 2 270AAD4FB6BC3AF95CB66B2F9C61F615D4510C5702B54899C26EE2E37DBCA6D8 +026E7500002E0001000151800093002B08010001518052F4220052EAD9708377005340153192578B86C7331D9B0814B23FDC42877A22289E4CDE7711C06987CC2B0A89FB582E1DF6CBEEE9FAB95D2F3715D9DCF0EB422750D103B5C452135483E869ADD9D9A8577DFED652586CC53CBDEF48BD413E9F9178BF739E114EF4F07CC25183773B086440E74B135A3ACCC798704B6D4D72786F19968AB9C1F790082A67 +nu. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . U0AVMZJXi4bHMx2bCBSyP9xCh3oiKJ5M3ncRwGmHzCsKiftYLh32y+7p+rldLzcV2dzw60InUNEDtcRSE1SD6Gmt2dmoV33+1lJYbMU8ve9IvUE+n5F4v3OeEU708HzCUYN3OwhkQOdLE1o6zMeYcEttTXJ4bxmWirnB95AIKmc= ;{id = 33655} +026E7500002E0001000151800093002F08010001518052F4220052EAD9708377006B9D4BF8C9E4E9C743CB61A025B6E6D162DD98FFDDBB83F34B83F5E76786E67D209816128E995925F8F5B5DA672B5F09A78EE6B668BEB37ABFBBB99DB9949FCBEA3F3F049EB0310ABE36E2034E3F23C32D4A58C24435C132AF99A3153C22D0916D016D61DB8A4902B36CB4F2775AF7323D989145E588047C4F0770CCAD5EB66D +nu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . a51L+Mnk6cdDy2GgJbbm0WLdmP/du4PzS4P152eG5n0gmBYSjplZJfj1tdpnK18Jp47mtmi+s3q/u7mduZSfy+o/PwSesDEKvjbiA04/I8MtSljCRDXBMq+ZoxU8ItCRbQFtYduKSQKzbLTyd1r3Mj2YkUXliAR8TwdwzK1etm0= ;{id = 33655} +026E7500002F000100015180000C026E7A000006200000000013 +nu. 86400 IN NSEC nz. NS DS RRSIG NSEC +0161036E6963026E7500000100010002A3000004C2926A16 +a.nic.nu. 172800 IN A 194.146.106.22 +0161036E6963026E7500001C00010002A30000102001067C101000050000000000000053 +a.nic.nu. 172800 IN AAAA 2001:67c:1010:5::53 +0162036E6963026E7500000100010002A30000044116A401 +b.nic.nu. 172800 IN A 65.22.164.1 +0162036E6963026E7500001C00010002A30000102A018840001000000000000000000001 +b.nic.nu. 172800 IN AAAA 2a01:8840:10::1 +0163036E6963026E7500000100010002A3000004C024906B +c.nic.nu. 172800 IN A 192.36.144.107 +0163036E6963026E7500001C00010002A30000102A0103F0000003010000000000000053 +c.nic.nu. 172800 IN AAAA 2a01:3f0:0:301::53 +026E7A00002F000100015180000C026F6D000006200000000013 +nz. 86400 IN NSEC om. NS DS RRSIG NSEC +026E7A00002E0001000151800093002F08010001518052F4220052EAD9708377006ACCA3672D64C2A9563101B77937EAB02661B76F297771C9F0CF3B9A3069CE6E944BFAE680C141222B40E8C0BD11093B26A573F1F590FF43BB80E99F1EF2731464E9C5294E1F200205B28810AAF0683E5FA4866C3D4B723185EADD23B1E09FCD897C51B23701B54044C2D94A2D12FD3962461B71E561B50DCC17B1F1F27E1AA3 +nz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . asyjZy1kwqlWMQG3eTfqsCZht28pd3HJ8M87mjBpzm6US/rmgMFBIitA6MC9EQk7JqVz8fWQ/0O7gOmfHvJzFGTpxSlOHyACBbKIEKrwaD5fpIZsPUtyMYXq3SOx4J/NiXxRsjcBtUBEwtlKLRL9OWJGG3HlYbUNzBex8fJ+GqM= ;{id = 33655} +026E7A00002E0001000151800093002B08010001518052F4220052EAD970837700831B3EAAC829B58E0FFAC1EA478C483B8E7724DFAFB837BC9C7E0A455800244AED1661157FAE7F20F954CDBC2B46B0A859F93D5830ED599124850095056AEFCF11BCAFD6810F51719D9E90523AE54E7E09855284474C03A7D719A795CE1C05929B60A1B00C9E722A3F435942172B05A2E078173A1A8AA52A244161E8359ED1D1 +nz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . gxs+qsgptY4P+sHqR4xIO453JN+vuDe8nH4KRVgAJErtFmEVf65/IPlUzbwrRrCoWfk9WDDtWZEkhQCVBWrvzxG8r9aBD1FxnZ6QUjrlTn4JhVKER0wDp9cZp5XOHAWSm2ChsAyecio/Q1lCFysFouB4FzoaiqUqJEFh6DWe0dE= ;{id = 33655} +026E7A00000200010002A3000010036E733103646E73036E6574026E7A00 +nz. 172800 IN NS ns1.dns.net.nz. +026E7A00000200010002A3000010036E733203646E73036E6574026E7A00 +nz. 172800 IN NS ns2.dns.net.nz. +026E7A00000200010002A3000010036E733303646E73036E6574026E7A00 +nz. 172800 IN NS ns3.dns.net.nz. +026E7A00000200010002A3000010036E733403646E73036E6574026E7A00 +nz. 172800 IN NS ns4.dns.net.nz. +026E7A00000200010002A3000010036E733503646E73036E6574026E7A00 +nz. 172800 IN NS ns5.dns.net.nz. +026E7A00000200010002A3000010036E733603646E73036E6574026E7A00 +nz. 172800 IN NS ns6.dns.net.nz. +026E7A00000200010002A3000010036E733703646E73036E6574026E7A00 +nz. 172800 IN NS ns7.dns.net.nz. +026E7A00002B00010001518000184DB10801A67187009210FC3432B2136FE22A82BE5B20CBC4 +nz. 86400 IN DS 19889 8 1 A67187009210FC3432B2136FE22A82BE5B20CBC4 +026E7A00002B00010001518000244DB108026B4593378969D7077FD31443235A86F0226D3780382143919CF0FF2D62EB47D8 +nz. 86400 IN DS 19889 8 2 6B4593378969D7077FD31443235A86F0226D3780382143919CF0FF2D62EB47D8 +056369726361036D637303767577026163026E7A00000100010002A300000482C3050C +circa.mcs.vuw.ac.nz. 172800 IN A 130.195.5.12 +09646F776E7374616765036D637303767577026163026E7A00000100010002A300000482C3060A +downstage.mcs.vuw.ac.nz. 172800 IN A 130.195.6.10 +036E733103646E73036E6574026E7A00000100010002A3000004CA2EBE82 +ns1.dns.net.nz. 172800 IN A 202.46.190.130 +036E733103646E73036E6574026E7A00001C00010002A300001020010DCE200000020000000000000130 +ns1.dns.net.nz. 172800 IN AAAA 2001:dce:2000:2::130 +036E733203646E73036E6574026E7A00000100010002A3000004CA2EBB82 +ns2.dns.net.nz. 172800 IN A 202.46.187.130 +036E733203646E73036E6574026E7A00001C00010002A300001020010DCE700000020000000000000130 +ns2.dns.net.nz. 172800 IN AAAA 2001:dce:7000:2::130 +036E733303646E73036E6574026E7A00000100010002A3000004CA2EBC82 +ns3.dns.net.nz. 172800 IN A 202.46.188.130 +036E733403646E73036E6574026E7A00000100010002A3000004CA2EBD82 +ns4.dns.net.nz. 172800 IN A 202.46.189.130 +036E733503646E73036E6574026E7A00000100010002A30000049C9A640E +ns5.dns.net.nz. 172800 IN A 156.154.100.14 +036E733503646E73036E6574026E7A00001C00010002A300001020010502AD0900000000000000000014 +ns5.dns.net.nz. 172800 IN AAAA 2001:502:ad09::14 +036E733603646E73036E6574026E7A00000100010002A30000049C9A650E +ns6.dns.net.nz. 172800 IN A 156.154.101.14 +036E733603646E73036E6574026E7A00001C00010002A3000010200105022EDA00000000000000000014 +ns6.dns.net.nz. 172800 IN AAAA 2001:502:2eda::14 +036E733703646E73036E6574026E7A00000100010002A3000004C2926A36 +ns7.dns.net.nz. 172800 IN A 194.146.106.54 +036E733703646E73036E6574026E7A00001C00010002A30000102001067C101000130000000000000053 +ns7.dns.net.nz. 172800 IN AAAA 2001:67c:1010:13::53 +046E73393903646E73036E6574026E7A00000100010002A3000004CA2EBE83 +ns99.dns.net.nz. 172800 IN A 202.46.190.131 +046E73393903646E73036E6574026E7A00001C00010002A300001020010DCE200000020000000000000131 +ns99.dns.net.nz. 172800 IN AAAA 2001:dce:2000:2::131 +02697103646E7305636F636361036F7267026E7A00000100010002A3000004CB7754EB +iq.dns.cocca.org.nz. 172800 IN A 203.119.84.235 +026F6D00000200010002A3000011036E7331087265676973747279026F6D00 +om. 172800 IN NS ns1.registry.om. +026F6D00000200010002A3000011036E7332087265676973747279026F6D00 +om. 172800 IN NS ns2.registry.om. +026F6D00000200010002A300001A056363746C64046265746106617269646E73036E657402617500 +om. 172800 IN NS cctld.beta.aridns.net.au. +026F6D00000200010002A300001B056363746C6405616C70686106617269646E73036E657402617500 +om. 172800 IN NS cctld.alpha.aridns.net.au. +026F6D00000200010002A300001B056363746C640564656C746106617269646E73036E657402617500 +om. 172800 IN NS cctld.delta.aridns.net.au. +026F6D00000200010002A300001B056363746C640567616D6D6106617269646E73036E657402617500 +om. 172800 IN NS cctld.gamma.aridns.net.au. +026F6D00002F000100015180000D036F6E6C000006200000000003 +om. 86400 IN NSEC onl. NS RRSIG NSEC +026F6D00002E0001000151800093002F08010001518052F4220052EAD970837700795D5498C44EA16F65E2C17F2E75DD4378991D4E7214E321F01136FEE89829D7AD3D8832B0320F8DAAEBFFAB584B2B3724481013C896A665127BBEB4928CFD1B031AA9252E5D5ADFD12078DFF6E2D8D3CABC6660C889BB6533A30A28D2D97306D2E62B05F97DB79D8042F71239485DE739C825EE5A2F6B24B68EFBBFD1787BFE +om. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eV1UmMROoW9l4sF/LnXdQ3iZHU5yFOMh8BE2/uiYKdetPYgysDIPjarr/6tYSys3JEgQE8iWpmUSe760koz9GwMaqSUuXVrf0SB43/bi2NPKvGZgyIm7ZTOjCijS2XMG0uYrBfl9t52AQvcSOUhd5znIJe5aL2skto77v9F4e/4= ;{id = 33655} +036E7331087265676973747279026F6D00000100010002A3000004B91B5A65 +ns1.registry.om. 172800 IN A 185.27.90.101 +036E7332087265676973747279026F6D00000100010002A3000004B91B5B45 +ns2.registry.om. 172800 IN A 185.27.91.69 +036F6E6C00000200010002A300000C026130036E6963036F6E6C00 +onl. 172800 IN NS a0.nic.onl. +036F6E6C00000200010002A300000C026132036E6963036F6E6C00 +onl. 172800 IN NS a2.nic.onl. +036F6E6C00000200010002A300000C026230036E6963036F6E6C00 +onl. 172800 IN NS b0.nic.onl. +036F6E6C00000200010002A300000C026330036E6963036F6E6C00 +onl. 172800 IN NS c0.nic.onl. +036F6E6C00002B0001000151800018709E070143C8D1479E0457EAD6020024017FDEC8CCE2260D +onl. 86400 IN DS 28830 7 1 43C8D1479E0457EAD6020024017FDEC8CCE2260D +036F6E6C00002B0001000151800024709E070218EB9FAA635692104783C62A7F6F51AA17365BB07689093A247183D39B88338D +onl. 86400 IN DS 28830 7 2 18EB9FAA635692104783C62A7F6F51AA17365BB07689093A247183D39B88338D +036F6E6C00002E0001000151800093002B08010001518052F4220052EAD970837700A812E8E04FA72FAB745A9E929A9945E79B1DB2E51B367A1D18BE06E9046EB75070F1E266794553495ABC9C1A5E2F3C50E67B955173A5975BE3344352981F7BF6BFB99E45523E8491BDB76E8C8B5AE5254BABC7C295C60A31B3CE7C295AA0D391457612B10EF6BA0C71A6AB45A6898831DB91351EF66084187075A5F0326C0F03 +onl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qBLo4E+nL6t0Wp6SmplF55sdsuUbNnodGL4G6QRut1Bw8eJmeUVTSVq8nBpeLzxQ5nuVUXOll1vjNENSmB979r+5nkVSPoSRvbdujIta5SVLq8fClcYKMbPOfClaoNORRXYSsQ72ugxxpqtFpomIMduRNR72YIQYcHWl8DJsDwM= ;{id = 33655} +036F6E6C00002E0001000151800093002F08010001518052F4220052EAD97083770054568FDD9E3CA1BA900C88FF4C5464F20C545F284AF51BDD44385DB16D4230767BCB900482149F776BB72AD55580DA15E00A8F33C607CC2EC6127A7A018BBD757C13EB45287C784615775A7F067F720D02491F5BE424AFBA3E396010AF75A7EFCE3789D6282FA956AD0A9E1E52D934E14077E2883028402BFAFAFCD18FFEAB0C +onl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VFaP3Z48obqQDIj/TFRk8gxUXyhK9RvdRDhdsW1CMHZ7y5AEghSfd2u3KtVVgNoV4AqPM8YHzC7GEnp6AYu9dXwT60UofHhGFXdafwZ/cg0CSR9b5CSvuj45YBCvdafvzjeJ1igvqVatCp4eUtk04UB34ogwKEAr+vr80Y/+qww= ;{id = 33655} +036F6E6C00002F000100015180000D036F7267000006200000000013 +onl. 86400 IN NSEC org. NS DS RRSIG NSEC +026130036E6963036F6E6C00000100010002A300000441168801 +a0.nic.onl. 172800 IN A 65.22.136.1 +026130036E6963036F6E6C00001C00010002A30000102A018840008600000000000000000001 +a0.nic.onl. 172800 IN AAAA 2a01:8840:86::1 +026132036E6963036F6E6C00000100010002A300000441168B01 +a2.nic.onl. 172800 IN A 65.22.139.1 +026132036E6963036F6E6C00001C00010002A30000102A018840008900000000000000000001 +a2.nic.onl. 172800 IN AAAA 2a01:8840:89::1 +026230036E6963036F6E6C00000100010002A300000441168901 +b0.nic.onl. 172800 IN A 65.22.137.1 +026230036E6963036F6E6C00001C00010002A30000102A018840008700000000000000000001 +b0.nic.onl. 172800 IN AAAA 2a01:8840:87::1 +026330036E6963036F6E6C00000100010002A300000441168A01 +c0.nic.onl. 172800 IN A 65.22.138.1 +026330036E6963036F6E6C00001C00010002A30000102A018840008800000000000000000001 +c0.nic.onl. 172800 IN AAAA 2a01:8840:88::1 +036F726700002F000100015180000C027061000006200000000013 +org. 86400 IN NSEC pa. NS DS RRSIG NSEC +036F726700002E0001000151800093002F08010001518052F4220052EAD9708377000991CC74101363DC6D2558C34A7B47C4C8A3A4B3F612158FB4900CAA9925DCFE1BDC17CAD459000F89820E638D2F778726EFB6826D1F6C6D83467F043B91A710CA55AD30FA3526E9133F8BC519C0A8D7D70955C4E9FE7CF40DBAFAD3F6C25E45028F8F1653C810509557523445610378F1AE564BB0B422A06E67C1698B63EA4B +org. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CZHMdBATY9xtJVjDSntHxMijpLP2EhWPtJAMqpkl3P4b3BfK1FkAD4mCDmONL3eHJu+2gm0fbG2DRn8EO5GnEMpVrTD6NSbpEz+LxRnAqNfXCVXE6f589A26+tP2wl5FAo+PFlPIEFCVV1I0RWEDePGuVkuwtCKgbmfBaYtj6ks= ;{id = 33655} +036F726700002E0001000151800093002B08010001518052F4220052EAD9708377008BB29E4204D0EB3D67258EB70EEE14D0EDA05183E2893CD2CBBE325B33FE5F22630BE14AC0F237B5E28F15C6B2BCCA7D1BD791D32F487D60584EED48CFB8D290A5942E4E544F35131AE53836E029A7C4938B415455154ED101F43E548FBB96E83EDF50E64FA73B0781FE5ED363E864871033B1B4EB3228577EF9E4CED4C46784 +org. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . i7KeQgTQ6z1nJY63Du4U0O2gUYPiiTzSy74yWzP+XyJjC+FKwPI3teKPFcayvMp9G9eR0y9IfWBYTu1Iz7jSkKWULk5UTzUTGuU4NuApp8STi0FUVRVO0QH0PlSPu5boPt9Q5k+nOweB/l7TY+hkhxAzsbTrMihXfvnkztTEZ4Q= ;{id = 33655} +036F726700000200010002A3000019026130036F72670B6166696C6961732D6E737404696E666F00 +org. 172800 IN NS a0.org.afilias-nst.info. +036F726700000200010002A3000019026132036F72670B6166696C6961732D6E737404696E666F00 +org. 172800 IN NS a2.org.afilias-nst.info. +036F726700000200010002A3000018026230036F72670B6166696C6961732D6E7374036F726700 +org. 172800 IN NS b0.org.afilias-nst.org. +036F726700000200010002A3000018026232036F72670B6166696C6961732D6E7374036F726700 +org. 172800 IN NS b2.org.afilias-nst.org. +036F726700000200010002A3000019026330036F72670B6166696C6961732D6E737404696E666F00 +org. 172800 IN NS c0.org.afilias-nst.info. +036F726700000200010002A3000018026430036F72670B6166696C6961732D6E7374036F726700 +org. 172800 IN NS d0.org.afilias-nst.org. +036F726700002B000100015180001853760701E6C1716CFB6BDC84E84CE1AB5510DAC69173B5B2 +org. 86400 IN DS 21366 7 1 E6C1716CFB6BDC84E84CE1AB5510DAC69173B5B2 +036F726700002B00010001518000245376070296EEB2FFD9B00CD4694E78278B5EFDAB0A80446567B69F634DA078F0D90F01BA +org. 86400 IN DS 21366 7 2 96EEB2FFD9B00CD4694E78278B5EFDAB0A80446567B69F634DA078F0D90F01BA +026230046165726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3401 +b0.aero.afilias-nst.org. 172800 IN A 199.254.52.1 +026230046165726F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500001E00000000000000000001 +b0.aero.afilias-nst.org. 172800 IN AAAA 2001:500:1e::1 +026232046165726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7F97B01 +b2.aero.afilias-nst.org. 172800 IN A 199.249.123.1 +026232046165726F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500004B00000000000000000001 +b2.aero.afilias-nst.org. 172800 IN AAAA 2001:500:4b::1 +026430046165726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3601 +d0.aero.afilias-nst.org. 172800 IN A 199.254.54.1 +026430046165726F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500002000000000000000000001 +d0.aero.afilias-nst.org. 172800 IN AAAA 2001:500:20::1 +02623204617369610B6166696C6961732D6E7374036F726700000100010002A3000004C7F97A01 +b2.asia.afilias-nst.org. 172800 IN A 199.249.122.1 +02623204617369610B6166696C6961732D6E7374036F726700001C00010002A300001020010500004A00000000000000000001 +b2.asia.afilias-nst.org. 172800 IN AAAA 2001:500:4a::1 +026230056363746C640B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3C01 +b0.cctld.afilias-nst.org. 172800 IN A 199.254.60.1 +026230056363746C640B6166696C6961732D6E7374036F726700001C00010002A300001020010500002600000000000000000001 +b0.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:26::1 +026232056363746C640B6166696C6961732D6E7374036F726700000100010002A3000004C7F97C01 +b2.cctld.afilias-nst.org. 172800 IN A 199.249.124.1 +026232056363746C640B6166696C6961732D6E7374036F726700001C00010002A300001020010500004C00000000000000000001 +b2.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:4c::1 +026430056363746C640B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3E01 +d0.cctld.afilias-nst.org. 172800 IN A 199.254.62.1 +026430056363746C640B6166696C6961732D6E7374036F726700001C00010002A300001020010500002800000000000000000001 +d0.cctld.afilias-nst.org. 172800 IN AAAA 2001:500:28::1 +02623002696E0B6166696C6961732D6E7374036F726700000100010002A3000004C7FD3801 +b0.in.afilias-nst.org. 172800 IN A 199.253.56.1 +02623002696E0B6166696C6961732D6E7374036F726700001C00010002A300001020010500005000000000000000000001 +b0.in.afilias-nst.org. 172800 IN AAAA 2001:500:50::1 +02623202696E0B6166696C6961732D6E7374036F726700000100010002A3000004C7F97D01 +b2.in.afilias-nst.org. 172800 IN A 199.249.125.1 +02623202696E0B6166696C6961732D6E7374036F726700001C00010002A300001020010500004D00000000000000000001 +b2.in.afilias-nst.org. 172800 IN AAAA 2001:500:4d::1 +02623004696E666F0B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3001 +b0.info.afilias-nst.org. 172800 IN A 199.254.48.1 +02623004696E666F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500001A00000000000000000001 +b0.info.afilias-nst.org. 172800 IN AAAA 2001:500:1a::1 +02623204696E666F0B6166696C6961732D6E7374036F726700000100010002A3000004C7F97901 +b2.info.afilias-nst.org. 172800 IN A 199.249.121.1 +02623204696E666F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500004900000000000000000001 +b2.info.afilias-nst.org. 172800 IN AAAA 2001:500:49::1 +02643004696E666F0B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3201 +d0.info.afilias-nst.org. 172800 IN A 199.254.50.1 +02643004696E666F0B6166696C6961732D6E7374036F726700001C00010002A300001020010500001C00000000000000000001 +d0.info.afilias-nst.org. 172800 IN AAAA 2001:500:1c::1 +026232026D650B6166696C6961732D6E7374036F726700000100010002A3000004C7F97F01 +b2.me.afilias-nst.org. 172800 IN A 199.249.127.1 +026232026D650B6166696C6961732D6E7374036F726700001C00010002A300001020010500004F00000000000000000001 +b2.me.afilias-nst.org. 172800 IN AAAA 2001:500:4f::1 +026230046D6F62690B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3801 +b0.mobi.afilias-nst.org. 172800 IN A 199.254.56.1 +026230046D6F62690B6166696C6961732D6E7374036F726700001C00010002A300001020010500002200000000000000000001 +b0.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:22::1 +026232046D6F62690B6166696C6961732D6E7374036F726700000100010002A3000004C7F97E01 +b2.mobi.afilias-nst.org. 172800 IN A 199.249.126.1 +026232046D6F62690B6166696C6961732D6E7374036F726700001C00010002A300001020010500004E00000000000000000001 +b2.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:4e::1 +026430046D6F62690B6166696C6961732D6E7374036F726700000100010002A3000004C7FE3A01 +d0.mobi.afilias-nst.org. 172800 IN A 199.254.58.1 +026430046D6F62690B6166696C6961732D6E7374036F726700001C00010002A300001020010500002400000000000000000001 +d0.mobi.afilias-nst.org. 172800 IN AAAA 2001:500:24::1 +026230036F72670B6166696C6961732D6E7374036F726700000100010002A3000004C7133601 +b0.org.afilias-nst.org. 172800 IN A 199.19.54.1 +026230036F72670B6166696C6961732D6E7374036F726700001C00010002A300001020010500000C00000000000000000001 +b0.org.afilias-nst.org. 172800 IN AAAA 2001:500:c::1 +026232036F72670B6166696C6961732D6E7374036F726700000100010002A3000004C7F97801 +b2.org.afilias-nst.org. 172800 IN A 199.249.120.1 +026232036F72670B6166696C6961732D6E7374036F726700001C00010002A300001020010500004800000000000000000001 +b2.org.afilias-nst.org. 172800 IN AAAA 2001:500:48::1 +026430036F72670B6166696C6961732D6E7374036F726700000100010002A3000004C7133901 +d0.org.afilias-nst.org. 172800 IN A 199.19.57.1 +026430036F72670B6166696C6961732D6E7374036F726700001C00010002A300001020010500000F00000000000000000001 +d0.org.afilias-nst.org. 172800 IN AAAA 2001:500:f::1 +02623004706F73740B6166696C6961732D6E7374036F726700000100010002A300000441160101 +b0.post.afilias-nst.org. 172800 IN A 65.22.1.1 +02623004706F73740B6166696C6961732D6E7374036F726700001C00010002A30000102A018840000100000000000000000001 +b0.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:1::1 +02623204706F73740B6166696C6961732D6E7374036F726700000100010002A300000441160501 +b2.post.afilias-nst.org. 172800 IN A 65.22.5.1 +02623204706F73740B6166696C6961732D6E7374036F726700001C00010002A30000102A018840000500000000000000000001 +b2.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:5::1 +02643004706F73740B6166696C6961732D6E7374036F726700000100010002A300000441160301 +d0.post.afilias-nst.org. 172800 IN A 65.22.3.1 +02643004706F73740B6166696C6961732D6E7374036F726700001C00010002A30000102A018840000300000000000000000001 +d0.post.afilias-nst.org. 172800 IN AAAA 2a01:8840:3::1 +0262300370726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7B60101 +b0.pro.afilias-nst.org. 172800 IN A 199.182.1.1 +0262300370726F0B6166696C6961732D6E7374036F726700001C00010002A30000102001050000C100000000000000000001 +b0.pro.afilias-nst.org. 172800 IN AAAA 2001:500:c1::1 +0262320370726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7B62801 +b2.pro.afilias-nst.org. 172800 IN A 199.182.40.1 +0262320370726F0B6166696C6961732D6E7374036F726700001C00010002A30000102001050000E100000000000000000001 +b2.pro.afilias-nst.org. 172800 IN AAAA 2001:500:e1::1 +0264300370726F0B6166696C6961732D6E7374036F726700000100010002A3000004C7B61101 +d0.pro.afilias-nst.org. 172800 IN A 199.182.17.1 +0264300370726F0B6166696C6961732D6E7374036F726700001C00010002A30000102001050000D100000000000000000001 +d0.pro.afilias-nst.org. 172800 IN AAAA 2001:500:d1::1 +026230037878780B6166696C6961732D6E7374036F726700000100010002A3000004C7739901 +b0.xxx.afilias-nst.org. 172800 IN A 199.115.153.1 +026230037878780B6166696C6961732D6E7374036F726700001C00010002A30000102001050000A100000000000000000001 +b0.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a1::1 +026232037878780B6166696C6961732D6E7374036F726700000100010002A3000004C7739D01 +b2.xxx.afilias-nst.org. 172800 IN A 199.115.157.1 +026232037878780B6166696C6961732D6E7374036F726700001C00010002A30000102001050000A500000000000000000001 +b2.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a5::1 +026430037878780B6166696C6961732D6E7374036F726700000100010002A3000004C7739B01 +d0.xxx.afilias-nst.org. 172800 IN A 199.115.155.1 +026430037878780B6166696C6961732D6E7374036F726700001C00010002A30000102001050000A300000000000000000001 +d0.xxx.afilias-nst.org. 172800 IN AAAA 2001:500:a3::1 +01620A63692D73657276657273036F726700000100010002A300000452678BDC +b.ci-servers.org. 172800 IN A 82.103.139.220 +01630A63692D73657276657273036F726700000100010002A3000004C2926A56 +c.ci-servers.org. 172800 IN A 194.146.106.86 +01630A63692D73657276657273036F726700001C00010002A30000102001067C101000220000000000000053 +c.ci-servers.org. 172800 IN AAAA 2001:67c:1010:22::53 +026E73056963616E6E036F726700000100010002A3000004C7048A35 +ns.icann.org. 172800 IN A 199.4.138.53 +026E73056963616E6E036F726700001C00010002A300001020010500008900000000000000000053 +ns.icann.org. 172800 IN AAAA 2001:500:89::53 +066E732D65787403697363036F726700000100010002A3000004CC98B840 +ns-ext.isc.org. 172800 IN A 204.152.184.64 +066E732D65787403697363036F726700001C00010002A3000010200104F8000000020000000000000013 +ns-ext.isc.org. 172800 IN AAAA 2001:4f8:0:2::13 +06736E732D706203697363036F726700000100010002A3000004C0050401 +sns-pb.isc.org. 172800 IN A 192.5.4.1 +06736E732D706203697363036F726700001C00010002A300001020010500002E00000000000000000001 +sns-pb.isc.org. 172800 IN AAAA 2001:500:2e::1 +03616D7306736E732D706203697363036F726700000100010002A3000004C706011E +ams.sns-pb.isc.org. 172800 IN A 199.6.1.30 +03616D7306736E732D706203697363036F726700001C00010002A300001020010500006000000000000000000030 +ams.sns-pb.isc.org. 172800 IN AAAA 2001:500:60::30 +047366626106736E732D706203697363036F726700000100010002A300000495144003 +sfba.sns-pb.isc.org. 172800 IN A 149.20.64.3 +047366626106736E732D706203697363036F726700001C00010002A3000010200104F8000000020000000000000019 +sfba.sns-pb.isc.org. 172800 IN AAAA 2001:4f8:0:2::19 +04746C643308756C747261646E73036F726700000100010002A3000004C7074201 +tld3.ultradns.org. 172800 IN A 199.7.66.1 +04746C643408756C747261646E73036F726700000100010002A3000004C7074301 +tld4.ultradns.org. 172800 IN A 199.7.67.1 +04746C643408756C747261646E73036F726700001C00010002A300001020010502100E00000000000000000001 +tld4.ultradns.org. 172800 IN AAAA 2001:502:100e::1 +02706100000200010002A3000007026E7302637200 +pa. 172800 IN NS ns.cr. +02706100000200010002A3000007026E7302706100 +pa. 172800 IN NS ns.pa. +02706100000200010002A300000B026E7303646E7302627200 +pa. 172800 IN NS ns.dns.br. +02706100000200010002A300000B026E73036E696302706100 +pa. 172800 IN NS ns.nic.pa. +02706100000200010002A3000008036E733202706100 +pa. 172800 IN NS ns2.pa. +02706100000200010002A300000F066E732D657874036E696302636C00 +pa. 172800 IN NS ns-ext.nic.cl. +02706100000200010002A300001006736E732D706203697363036F726700 +pa. 172800 IN NS sns-pb.isc.org. +02706100002F000100015180000C027065000006200000000003 +pa. 86400 IN NSEC pe. NS RRSIG NSEC +02706100002E0001000151800093002F08010001518052F4220052EAD9708377005F9F48914186B1960493B5CF47DFB394E59E4E0C5627E84AF45D621AF6C47786AA16332E06817AE47547A231F111E684FB1DA2852D37D9A39AEC208D130D3F4253FC998156EE7EA1C9A93F4D5A1234595CE7E31D9F30779D77C4BAB7E1AB4AE16BC26E7C9B2169E79DC9C19048FF215E40F371371B0CDBD672907C2DCE7993AD +pa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . X59IkUGGsZYEk7XPR9+zlOWeTgxWJ+hK9F1iGvbEd4aqFjMuBoF65HVHojHxEeaE+x2ihS032aOa7CCNEw0/QlP8mYFW7n6hyak/TVoSNFlc5+MdnzB3nXfEurfhq0rha8JufJshaeedycGQSP8hXkDzcTcbDNvWcpB8Lc55k60= ;{id = 33655} +026E73036E696302706100000100010002A3000004A84D0804 +ns.nic.pa. 172800 IN A 168.77.8.4 +026E7302706100000100010002A3000004A84D0802 +ns.pa. 172800 IN A 168.77.8.2 +036E733202706100000100010002A3000004A84D0807 +ns2.pa. 172800 IN A 168.77.8.7 +02706500000200010002A300000C037063680372637002706500 +pe. 172800 IN NS pch.rcp.pe. +02706500000200010002A30000110370653107646E736E6F6465036E657400 +pe. 172800 IN NS pe1.dnsnode.net. +02706500000200010002A300001205717569707503726370036E657402706500 +pe. 172800 IN NS quipu.rcp.net.pe. +02706500000200010002A300001006736E732D706203697363036F726700 +pe. 172800 IN NS sns-pb.isc.org. +02706500002B00010001518000241F2D08027C4B12C0D916694718131C7B7607561393FB86E2A3159CE7A74EA9E29AFB26F3 +pe. 86400 IN DS 7981 8 2 7C4B12C0D916694718131C7B7607561393FB86E2A3159CE7A74EA9E29AFB26F3 +02706500002E0001000151800093002B08010001518052F4220052EAD970837700B3D6C7E5A356E0F66786C7D68C959367D15557B0E53A81FC1558BE7D1B77D5F3FB5816A7243BF687FD87770A3CF02634DBEBEA9C7F95260B126839F29005E7376D678F674BBA93A73F39E0B28271CF5C6D89E5FD621BF148F6D7D27EDE47F72B339E45AB46F16C6A4AEDB8FD0A78CEE822EF3BBB78989E4ED3AEC374A5919D53 +pe. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . s9bH5aNW4PZnhsfWjJWTZ9FVV7DlOoH8FVi+fRt31fP7WBanJDv2h/2Hdwo88CY02+vqnH+VJgsSaDnykAXnN21nj2dLupOnPzngsoJxz1xtieX9YhvxSPbX0n7eR/crM55Fq0bxbGpK7bj9CnjO6CLvO7t4mJ5O067DdKWRnVM= ;{id = 33655} +02706500002E0001000151800093002F08010001518052F4220052EAD97083770070CB9E72211101CED0A10C940C137703663C6F97A57901034C86AC2E6599AF46A8D8DC3FB0C87E40CE504AF2CE78A05E5A787BFFE9EEC7392DB722CD3511C0CBB92E6EA7382B15E2A009BA23A346CD397B127B25F946EAFF845B31B3F2640A6EFACAFBFB1966DA3F60B23A62E95D2DA7FCF7A1CC1BD88155181DB323A66A7BDA +pe. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cMueciERAc7QoQyUDBN3A2Y8b5eleQEDTIasLmWZr0ao2Nw/sMh+QM5QSvLOeKBeWnh7/+nuxzkttyLNNRHAy7kubqc4KxXioAm6I6NGzTl7Ensl+Ubq/4RbMbPyZApu+sr7+xlm2j9gsjpi6V0tp/z3ocwb2IFVGB2zI6Zqe9o= ;{id = 33655} +02706500002F000100015180000C027066000006200000000013 +pe. 86400 IN NSEC pf. NS DS RRSIG NSEC +05717569707503726370036E657402706500000100010002A3000004C801B004 +quipu.rcp.net.pe. 172800 IN A 200.1.176.4 +037063680372637002706500000100010002A3000004CC3DD855 +pch.rcp.pe. 172800 IN A 204.61.216.85 +037063680372637002706500001C00010002A3000010200105000014608500AD000000000001 +pch.rcp.pe. 172800 IN AAAA 2001:500:14:6085:ad::1 +02706600000200010002A300000D036E7331046D616E6102706600 +pf. 172800 IN NS ns1.mana.pf. +02706600000200010002A300000D036E7332046D616E6102706600 +pf. 172800 IN NS ns2.mana.pf. +02706600002F000100015180000C027067000006200000000003 +pf. 86400 IN NSEC pg. NS RRSIG NSEC +02706600002E0001000151800093002F08010001518052F4220052EAD9708377008EEB4C729FA9A7BDD079A9ECDAAA063812CF2D494A9ECE2A31FAAD14602583B5A6CA1692156C2E6F9D846298EE9CBA1EF49AD4AB2D8C628877A2AC929457D4A0C63274D2D45E69D16C15F6FA1F0C76AD66AD934769FC47C4167778B163FE8D8B203CB327CFBA2A78488C3586EFBC666B40BE7C123EC767129A4A3818244A30D7 +pf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jutMcp+pp73Qeans2qoGOBLPLUlKns4qMfqtFGAlg7WmyhaSFWwub52EYpjunLoe9JrUqy2MYoh3oqySlFfUoMYydNLUXmnRbBX2+h8Mdq1mrZNHafxHxBZ3eLFj/o2LIDyzJ8+6KnhIjDWG77xma0C+fBI+x2cSmko4GCRKMNc= ;{id = 33655} +036E7331046D616E6102706600000100010002A3000004CA03E10A +ns1.mana.pf. 172800 IN A 202.3.225.10 +036E7332046D616E6102706600000100010002A3000004CA03E114 +ns2.mana.pf. 172800 IN A 202.3.225.20 +02706700000200010002A300000B026E73027575036E657400 +pg. 172800 IN NS ns.uu.net. +02706700000200010002A3000012036E7331057469617265036E657402706700 +pg. 172800 IN NS ns1.tiare.net.pg. +02706700000200010002A3000013036E733107756E697465636802616302706700 +pg. 172800 IN NS ns1.unitech.ac.pg. +02706700000200010002A3000012036E7332057469617265036E657402706700 +pg. 172800 IN NS ns2.tiare.net.pg. +02706700000200010002A300000F076D756E6E617269026F7A02617500 +pg. 172800 IN NS munnari.oz.au. +02706700002F000100015180000C027068000006200000000003 +pg. 86400 IN NSEC ph. NS RRSIG NSEC +02706700002E0001000151800093002F08010001518052F4220052EAD9708377001E7C16D87992FB3189EF131565049A00902FA94A93424E8869E6B417450EFD7FEBB0C59642231A0A451A2CDD4F670A4FFDDEF48CA3284F38BD3D095D000C4A5E1D67A4F75782D35989238CE85E173671D480AB62BB3380BE70AC06B23DD51A18C3A9DADDBB546900BCC22D09E51A41FA50EE271EBBD67FEFB002B025A474132A +pg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HnwW2HmS+zGJ7xMVZQSaAJAvqUqTQk6Iaea0F0UO/X/rsMWWQiMaCkUaLN1PZwpP/d70jKMoTzi9PQldAAxKXh1npPdXgtNZiSOM6F4XNnHUgKtiuzOAvnCsBrI91RoYw6na3btUaQC8wi0J5RpB+lDuJx671n/vsAKwJaR0Eyo= ;{id = 33655} +036E733107756E697465636802616302706700000100010002A3000004CA012031 +ns1.unitech.ac.pg. 172800 IN A 202.1.32.49 +036E7331057469617265036E657402706700000100010002A3000004CAA5C017 +ns1.tiare.net.pg. 172800 IN A 202.165.192.23 +036E7332057469617265036E657402706700000100010002A3000004CAA5C018 +ns2.tiare.net.pg. 172800 IN A 202.165.192.24 +02706800000200010002A300001B027068056363746C640761757468646E730472697065036E657400 +ph. 172800 IN NS ph.cctld.authdns.ripe.net. +02706800000200010002A30000150270680C636F6D6D756E697479646E73036E657400 +ph. 172800 IN NS ph.communitydns.net. +02706800000200010002A3000011036E7332046375686B0365647502686B00 +ph. 172800 IN NS ns2.cuhk.edu.hk. +02706800000200010002A300001004736563340561706E6963036E657400 +ph. 172800 IN NS sec4.apnic.net. +02706800000200010002A300001006736E732D706203697363036F726700 +ph. 172800 IN NS sns-pb.isc.org. +02706800002F000100015180000F0570686F746F000006200000000003 +ph. 86400 IN NSEC photo. NS RRSIG NSEC +02706800002E0001000151800093002F08010001518052F4220052EAD9708377005EBD94AE5295F21013658236F16F80EEF182C6412F304DD578AE8B59AFF76C9556219927A7817E9E8A42910B25E3360F3D8FE274ABD50756B9973FAACA1439E2D151418570515AC1431CBDB2C749C2D4A862D9561001B0FB2304EEFF9B81E2B018F3C65F199DAD3026BCB1838AD4C93848C33A04800262243FE1272269A5FE83 +ph. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Xr2UrlKV8hATZYI28W+A7vGCxkEvME3VeK6LWa/3bJVWIZknp4F+nopCkQsl4zYPPY/idKvVB1a5lz+qyhQ54tFRQYVwUVrBQxy9ssdJwtSoYtlWEAGw+yME7v+bgeKwGPPGXxmdrTAmvLGDitTJOEjDOgSAAmIkP+EnImml/oM= ;{id = 33655} +0570686F746F00000200010002A30000160161026E730B756E697265676973747279036E657400 +photo. 172800 IN NS a.ns.uniregistry.net. +0570686F746F00000200010002A300001103746C64076973632D736E7303636F6D00 +photo. 172800 IN NS tld.isc-sns.com. +0570686F746F00000200010002A300001103746C64076973632D736E73036E657400 +photo. 172800 IN NS tld.isc-sns.net. +0570686F746F00000200010002A300001203746C64076973632D736E7304696E666F00 +photo. 172800 IN NS tld.isc-sns.info. +0570686F746F00002B00010001518000182E6C05015452469C278FB3EF65B9D47B709DBDDA025FD6DA +photo. 86400 IN DS 11884 5 1 5452469C278FB3EF65B9D47B709DBDDA025FD6DA +0570686F746F00002B00010001518000242E6C050280ADEC219929825CE490E0B9CAAC5CAD806FC8AD4C4E0D48017F62F5408D6FF5 +photo. 86400 IN DS 11884 5 2 80ADEC219929825CE490E0B9CAAC5CAD806FC8AD4C4E0D48017F62F5408D6FF5 +0570686F746F00002E0001000151800093002B08010001518052F4220052EAD97083770070FCE74DF30E37CD274AF456FC4B4177DC28FF3825E22582CF55ABC80A65C3F7C8111FFE8D07F2A23391C39B51BFE194C2E3B1CD1A91C1BA3A0857999E27FF905AF846A522064D9D06E34E0365B3755895686A9222BFF703B3D2A4CAD3C56DAACC23F9CD90983B6F4A6268E71985D1A5D3B4AD29F4400CC8CCA13E8B1D8FF3A0 +photo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . cPznTfMON80nSvRW/EtBd9wo/zgl4iWCz1WryAplw/fIER/+jQfyojORw5tRv+GUwuOxzRqRwbo6CFeZnif/kFr4RqUiBk2dBuNOA2WzdViVaGqSIr/3A7PSpMrTxW2qzCP5zZCYO29KYmjnGYXRpdO0rSn0QAzIzKE+ix2P86A= ;{id = 33655} +0570686F746F00002E0001000151800093002F08010001518052F4220052EAD9708377008B6E0EFDB6F17DD27EC0ED28343DF248D2A19655E6FE6FA3F7FA72BD494149A1A3C6F61BA8A0F4B495195C6BABAF7F13FC7335D3B104628200A71C481A394D22182DA39556A8CF66EF2507044AA327123E25DDB85E3F03156F1676E0498E98B414D0F4340818040A9450A066DADA4E415D72F9DE11631394636FA143D6063235 +photo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i24O/bbxfdJ+wO0oND3ySNKhllXm/m+j9/pyvUlBSaGjxvYbqKD0tJUZXGurr38T/HM107EEYoIApxxIGjlNIhgto5VWqM9m7yUHBEqjJxI+Jd24Xj8DFW8WduBJjpi0FND0NAgYBAqUUKBm2tpOQV1y+d4RYxOUY2+hQ9YGMjU= ;{id = 33655} +0570686F746F00002F00010001518000150B70686F746F677261706879000006200000000013 +photo. 86400 IN NSEC photography. NS DS RRSIG NSEC +0B70686F746F67726170687900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +photography. 172800 IN NS demand.beta.aridns.net.au. +0B70686F746F67726170687900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +photography. 172800 IN NS demand.alpha.aridns.net.au. +0B70686F746F67726170687900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +photography. 172800 IN NS demand.delta.aridns.net.au. +0B70686F746F67726170687900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +photography. 172800 IN NS demand.gamma.aridns.net.au. +0B70686F746F67726170687900002B0001000151800024E9800802D456A9A0648D15BA511E0CEC9AE8BE1B39E7F8443FB037E58E9313CE9275F3CC +photography. 86400 IN DS 59776 8 2 D456A9A0648D15BA511E0CEC9AE8BE1B39E7F8443FB037E58E9313CE9275F3CC +0B70686F746F67726170687900002E0001000151800093002B08010001518052F4220052EAD97083770079E0C800E48CF0051E31E081F614544FA37906C2855C781798EDEAE1C46FA8BF2ED1D5F4CFC2A3206517889EBAE0DA50F13C61955C476F886FE3644108A6543DD6E34FBBCDE92FE8D193BC93C51B6ADFD97B7674F6494831B8575928AB6BF5402426DE839CECE1FEAC59257F384B5EEFFD3E9B3153AB9D37073A3D7BEC29D328 +photography. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eeDIAOSM8AUeMeCB9hRUT6N5BsKFXHgXmO3q4cRvqL8u0dX0z8KjIGUXiJ664NpQ8TxhlVxHb4hv42RBCKZUPdbjT7vN6S/o0ZO8k8Ubat/Ze3Z09klIMbhXWSira/VAJCbeg5zs4f6sWSV/OEte7/0+mzFTq503Bzo9e+wp0yg= ;{id = 33655} +0B70686F746F67726170687900002E0001000151800093002F08010001518052F4220052EAD97083770086C5BAC6642D33699D509A7E0C5FFB7AC34944ED46B2AD0E6CBBE5537B0FE97C0062D43ADB0ACE54FF4251CDC4952CC21885B187474904F71B4AD3A489DFB5B634ADE348754DF81C905ED8ED0654873A7F5ED4BA027C8E339ACA5CA6B6CCA200A919AFE93649799676D961C3B94C8426A2C0223520FD55BEA7F5CE5E8AB649C4 +photography. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hsW6xmQtM2mdUJp+DF/7esNJRO1Gsq0ObLvlU3sP6XwAYtQ62wrOVP9CUc3ElSzCGIWxh0dJBPcbStOkid+1tjSt40h1TfgckF7Y7QZUhzp/XtS6AnyOM5rKXKa2zKIAqRmv6TZJeZZ22WHDuUyEJqLAIjUg/VW+p/XOXoq2ScQ= ;{id = 33655} +0B70686F746F67726170687900002F00010001518000100670686F746F73000006200000000013 +photography. 86400 IN NSEC photos. NS DS RRSIG NSEC +0670686F746F7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +photos. 172800 IN NS demand.beta.aridns.net.au. +0670686F746F7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +photos. 172800 IN NS demand.alpha.aridns.net.au. +0670686F746F7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +photos. 172800 IN NS demand.delta.aridns.net.au. +0670686F746F7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +photos. 172800 IN NS demand.gamma.aridns.net.au. +0670686F746F7300002B0001000151800024B1A9080219BD8DD90A5EC536C0474423CDD38E482628539FD8A4B95EBCE1C0B3676F9A68 +photos. 86400 IN DS 45481 8 2 19BD8DD90A5EC536C0474423CDD38E482628539FD8A4B95EBCE1C0B3676F9A68 +0670686F746F7300002E0001000151800093002B08010001518052F4220052EAD9708377006639913FA8206ED0C9AE0C2E2A9A34A0CEA1535228E2D6A9EECA6A76728E70D427500A1F9E1AA9B8274D34FBB49C81B2BCD0F4E10701AF081164778A868BFA40BE508AF75E80F48F92CEA99A7C2D7BE602D734FF26211486AD750E8D0B4FF23679A0CA3F00B0CBA2D2BFE5BE981ED7D8026D760DAFE2534D6525740C53E4859E +photos. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZjmRP6ggbtDJrgwuKpo0oM6hU1Io4tap7spqdnKOcNQnUAofnhqpuCdNNPu0nIGyvND04QcBrwgRZHeKhov6QL5QivdegPSPks6pmnwte+YC1zT/JiEUhq11Do0LT/I2eaDKPwCwy6LSv+W+mB7X2AJtdg2v4lNNZSV0DFPkhZ4= ;{id = 33655} +0670686F746F7300002E0001000151800093002F08010001518052F4220052EAD970837700450043AAE9683AAB5BF3DADC5E358AF60D957BD28DCA55E4CBA862CE7845D91452EE8F7D7F6C2F5F001E5338DBD1FDCD7F3DCB71FACF91650F7B781B8ED567AF0704C220F16D1BD5A3AC2872D2F2BF916CE884E1C68E677C49F3EB96F31451500BE55D702791726B7A9B7A29D2FA160E87695802E10AE0B15205F3A70980FBDF +photos. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RQBDquloOqtb89rcXjWK9g2Ve9KNylXky6hiznhF2RRS7o99f2wvXwAeUzjb0f3Nfz3LcfrPkWUPe3gbjtVnrwcEwiDxbRvVo6woctLyv5Fs6IThxo5nfEnz65bzFFFQC+VdcCeRcmt6m3op0voWDodpWALhCuCxUgXzpwmA+98= ;{id = 33655} +0670686F746F7300002F000100015180000E0470696373000006200000000013 +photos. 86400 IN NSEC pics. NS DS RRSIG NSEC +047069637300000200010002A30000160161026E730B756E697265676973747279036E657400 +pics. 172800 IN NS a.ns.uniregistry.net. +047069637300000200010002A300001103746C64076973632D736E7303636F6D00 +pics. 172800 IN NS tld.isc-sns.com. +047069637300000200010002A300001103746C64076973632D736E73036E657400 +pics. 172800 IN NS tld.isc-sns.net. +047069637300000200010002A300001203746C64076973632D736E7304696E666F00 +pics. 172800 IN NS tld.isc-sns.info. +047069637300002B000100015180001856150501128E4D7B181F80FBEF51811B5396FFE83E6517BD +pics. 86400 IN DS 22037 5 1 128E4D7B181F80FBEF51811B5396FFE83E6517BD +047069637300002B000100015180002456150502FAA0D15E50168840E97AAA27E7D6F010ECE0C3BDCFD7F26827DA1B062AAD9291 +pics. 86400 IN DS 22037 5 2 FAA0D15E50168840E97AAA27E7D6F010ECE0C3BDCFD7F26827DA1B062AAD9291 +047069637300002E0001000151800093002B08010001518052F4220052EAD97083770012E4C186B9F7EA9308974E58123BD4A87D6CA753529FCBC42136C91599B3F342C0F7AE0B2E130C4AE2A912B7F4B374CF0E992D830EE99C619DE98D8AFDF1975D1CC38B6971199212DC8EBACF787979BB1DF847E55DFA0AE87843A6856420C098C23E2E838C4D231E1E6394836DD174086C1E9EBC63F27147934985BB485FFE62 +pics. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . EuTBhrn36pMIl05YEjvUqH1sp1NSn8vEITbJFZmz80LA964LLhMMSuKpErf0s3TPDpktgw7pnGGd6Y2K/fGXXRzDi2lxGZIS3I66z3h5ebsd+EflXfoK6HhDpoVkIMCYwj4ug4xNIx4eY5SDbdF0CGwenrxj8nFHk0mFu0hf/mI= ;{id = 33655} +047069637300002E0001000151800093002F08010001518052F4220052EAD970837700736EBEAB4AC65430B7611EA8132530A030D8A4374DAF32B9760483C7870C7C3FDDA14C2E082B69455F92A35F61B832E1371D41D675E19899C6381B4800706EF1325305B924A077207BEC1AD294329FDCEA75C3037B65CF8B1A550D0DB58E9A94E536A245F7664C086EE1E3969D3607A6976F4956FAEDD643368C36FFC595F0BB +pics. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . c26+q0rGVDC3YR6oEyUwoDDYpDdNrzK5dgSDx4cMfD/doUwuCCtpRV+So19huDLhNx1B1nXhmJnGOBtIAHBu8TJTBbkkoHcge+wa0pQyn9zqdcMDe2XPixpVDQ21jpqU5TaiRfdmTAhu4eOWnTYHppdvSVb67dZDNow2/8WV8Ls= ;{id = 33655} +047069637300002F000100015180000E0470696E6B000006200000000013 +pics. 86400 IN NSEC pink. NS DS RRSIG NSEC +0470696E6B00000200010002A300000D026130036E69630470696E6B00 +pink. 172800 IN NS a0.nic.pink. +0470696E6B00000200010002A300000D026132036E69630470696E6B00 +pink. 172800 IN NS a2.nic.pink. +0470696E6B00000200010002A300000D026230036E69630470696E6B00 +pink. 172800 IN NS b0.nic.pink. +0470696E6B00000200010002A300000D026330036E69630470696E6B00 +pink. 172800 IN NS c0.nic.pink. +0470696E6B00002B0001000151800018B2BC0701D4496FF46E35CC9A206DA310B24C36AF205A2BD1 +pink. 86400 IN DS 45756 7 1 D4496FF46E35CC9A206DA310B24C36AF205A2BD1 +0470696E6B00002B0001000151800024B2BC070271CDA61FCA2B38FD3C93B8A69B2300CD7BC91FF32C306F1F3F831BBA7686A149 +pink. 86400 IN DS 45756 7 2 71CDA61FCA2B38FD3C93B8A69B2300CD7BC91FF32C306F1F3F831BBA7686A149 +0470696E6B00002E0001000151800093002B08010001518052F4220052EAD970837700A93BC083680A58860C1C0003CFD6F6F38945869FB716C2F90E3996EE14A8A87A5B3E843E3943E5892B16AE600B8E4D39FBDE604A38C9F75F0CE9A596303E7DF75A08DB0A803B38FCE19086BCCBF87E51DB69594017D4346E0AA2DF523D87BCE753160B7E9E26714A27D11E22C92A30CFC2DA042582E90C1DDFCB7C0E9ECE671E +pink. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . qTvAg2gKWIYMHAADz9b284lFhp+3FsL5DjmW7hSoqHpbPoQ+OUPliSsWrmALjk05+95gSjjJ918M6aWWMD5991oI2wqAOzj84ZCGvMv4flHbaVlAF9Q0bgqi31I9h7znUxYLfp4mcUon0R4iySowz8LaBCWC6Qwd38t8Dp7OZx4= ;{id = 33655} +0470696E6B00002E0001000151800093002F08010001518052F4220052EAD9708377000C2FA9F0CA9E639F3E6E29688C43D483BF0CA5DB15446B05FB6080EABC10CE040DA27F568C50A2806FE27941F789BB806025CC98EED3B78E86ECE3B5B13A496FECE44ABAF0289EDCE636931D8E82DC33A76684E748CE2D5305458EDF4C6DF1F2F38795AAC50ED357AB9339E1C8D64FEF8E496FA8D18265425EAF8D6975335257 +pink. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DC+p8MqeY58+bilojEPUg78MpdsVRGsF+2CA6rwQzgQNon9WjFCigG/ieUH3ibuAYCXMmO7Tt46G7OO1sTpJb+zkSrrwKJ7c5jaTHY6C3DOnZoTnSM4tUwVFjt9MbfHy84eVqsUO01erkznhyNZP745Jb6jRgmVCXq+NaXUzUlc= ;{id = 33655} +0470696E6B00002F000100015180000C02706B000006200000000013 +pink. 86400 IN NSEC pk. NS DS RRSIG NSEC +026130036E69630470696E6B00000100010002A300000441161C11 +a0.nic.pink. 172800 IN A 65.22.28.17 +026130036E69630470696E6B00001C00010002A30000102A018840001E00000000000000000017 +a0.nic.pink. 172800 IN AAAA 2a01:8840:1e::17 +026132036E69630470696E6B00000100010002A300000441161F11 +a2.nic.pink. 172800 IN A 65.22.31.17 +026132036E69630470696E6B00001C00010002A30000102A018840002100000000000000000017 +a2.nic.pink. 172800 IN AAAA 2a01:8840:21::17 +026230036E69630470696E6B00000100010002A300000441161D11 +b0.nic.pink. 172800 IN A 65.22.29.17 +026230036E69630470696E6B00001C00010002A30000102A018840001F00000000000000000017 +b0.nic.pink. 172800 IN AAAA 2a01:8840:1f::17 +026330036E69630470696E6B00000100010002A300000441161E11 +c0.nic.pink. 172800 IN A 65.22.30.17 +026330036E69630470696E6B00001C00010002A30000102A018840002000000000000000000017 +c0.nic.pink. 172800 IN AAAA 2a01:8840:20::17 +02706B00000200010002A300001906726F6F742D620C636C6F756439676C6F62616C036E657400 +pk. 172800 IN NS root-b.cloud9global.net. +02706B00000200010002A300001106726F6F742D7005706B6E696302706B00 +pk. 172800 IN NS root-p.pknic.pk. +02706B00000200010002A300001106726F6F742D7305706B6E696302706B00 +pk. 172800 IN NS root-s.pknic.pk. +02706B00002F000100015180000C02706C000006200000000003 +pk. 86400 IN NSEC pl. NS RRSIG NSEC +02706B00002E0001000151800093002F08010001518052F4220052EAD9708377004C71E7319E61146155D384354A14BA68F0CD482527F2AD4C8996BC215EBFF90541FA5355179A62F89B76301120EB93B4A176FBB21B12C78A29DC74B3459F9E9055BBE13416C0F3E1011460EEA30A9F5340DE2804992523269713DC4E03B2C54EA0E11889DE618F0349FAF49A0E3E529E748B206C769C33164E22A83F8D32D8FE +pk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . THHnMZ5hFGFV04Q1ShS6aPDNSCUn8q1MiZa8IV6/+QVB+lNVF5pi+Jt2MBEg65O0oXb7shsSx4op3HSzRZ+ekFW74TQWwPPhARRg7qMKn1NA3igEmSUjJpcT3E4DssVOoOEYid5hjwNJ+vSaDj5SnnSLIGx2nDMWTiKoP40y2P4= ;{id = 33655} +06726F6F742D7005706B6E696302706B00000100010002A3000004CB80077B +root-p.pknic.pk. 172800 IN A 203.128.7.123 +06726F6F742D7305706B6E696302706B00000100010002A30000047751225A +root-s.pknic.pk. 172800 IN A 119.81.34.90 +02706C00000200010002A300000A05612D646E7302706C00 +pl. 172800 IN NS a-dns.pl. +02706C00000200010002A300000A05632D646E7302706C00 +pl. 172800 IN NS c-dns.pl. +02706C00000200010002A300000A05642D646E7302706C00 +pl. 172800 IN NS d-dns.pl. +02706C00000200010002A300000A05652D646E7302706C00 +pl. 172800 IN NS e-dns.pl. +02706C00000200010002A300000A05662D646E7302706C00 +pl. 172800 IN NS f-dns.pl. +02706C00000200010002A300000A05672D646E7302706C00 +pl. 172800 IN NS g-dns.pl. +02706C00000200010002A300000A05682D646E7302706C00 +pl. 172800 IN NS h-dns.pl. +02706C00000200010002A300000A05692D646E7302706C00 +pl. 172800 IN NS i-dns.pl. +02706C00002B00010001518000186A640801DC037E771F7C4CEA0C6BB65C6EDA62DAE18693A0 +pl. 86400 IN DS 27236 8 1 DC037E771F7C4CEA0C6BB65C6EDA62DAE18693A0 +02706C00002B00010001518000246A64080216E41465F64D6FE884E5079FD2781C3C3585E899D7EB495E47138CB1D7DFC98C +pl. 86400 IN DS 27236 8 2 16E41465F64D6FE884E5079FD2781C3C3585E899D7EB495E47138CB1D7DFC98C +02706C00002E0001000151800093002B08010001518052F4220052EAD97083770056052DAA84C05AFE8E8EAA80B847FED659FCFACEF9EF88C6A8345EA98CA4F9D0FE585968E1CA71D4D3BFF5D1A86C19E8FA9D215FDE6E022E3F8CDA002CE79EEC02CDD3A2A9FB70213CD772969161940F5A4A3D484A09BCD57EAA4F1A12DEB60E864FEFF09B4DED5FD8287B9F2B009B2BC55436B0BCAFAA719B96AF839F7420D6 +pl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . VgUtqoTAWv6OjqqAuEf+1ln8+s7574jGqDReqYyk+dD+WFlo4cpx1NO/9dGobBno+p0hX95uAi4/jNoALOee7ALN06Kp+3AhPNdylpFhlA9aSj1ISgm81X6qTxoS3rYOhk/v8JtN7V/YKHufKwCbK8VUNrC8r6pxm5avg590INY= ;{id = 33655} +02706C00002E0001000151800093002F08010001518052F4220052EAD97083770066EAFE552C44D8D93E2F73916451ECA3ECF4D18CE58FA524376965BDAD9FD86ECCF24CBEFA0267BD1586DBAF62AA4E21FC8AC2FBBE0D9D0E55F9B55A73F955B56F5CB63B656C594E56D42F65FCAF8802774688966431067C6D36713E9DA761C09DEAC4955A01B27D0CD9731F3C794C916CE619B737B72F180C04042C850E28AB +pl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zur+VSxE2Nk+L3ORZFHso+z00Yzlj6UkN2llva2f2G7M8ky++gJnvRWG269iqk4h/IrC+74NnQ5V+bVac/lVtW9ctjtlbFlOVtQvZfyviAJ3RoiWZDEGfG02cT6dp2HAnerElVoBsn0M2XMfPHlMkWzmGbc3ty8YDAQELIUOKKs= ;{id = 33655} +02706C00002F000100015180001208706C756D62696E67000006200000000013 +pl. 86400 IN NSEC plumbing. NS DS RRSIG NSEC +05612D646E7302706C00000100010002A3000004C3BBF52C +a-dns.pl. 172800 IN A 195.187.245.44 +05632D646E7302706C00000100010002A3000004C32FEBE2 +c-dns.pl. 172800 IN A 195.47.235.226 +05642D646E7302706C00000100010002A3000004D5ACAE46 +d-dns.pl. 172800 IN A 213.172.174.70 +05652D646E7302706C00000100010002A3000004C350EDA2 +e-dns.pl. 172800 IN A 195.80.237.162 +05662D646E7302706C00000100010002A3000004D9112EBD +f-dns.pl. 172800 IN A 217.17.46.189 +05662D646E7302706C00001C00010002A300001020011A68000000100000000000000189 +f-dns.pl. 172800 IN AAAA 2001:1a68:0:10::189 +05672D646E7302706C00000100010002A3000004959C0106 +g-dns.pl. 172800 IN A 149.156.1.6 +05672D646E7302706C00001C00010002A3000010200106D80000000100000000000A0006 +g-dns.pl. 172800 IN AAAA 2001:6d8:0:1::a:6 +05682D646E7302706C00000100010002A3000004C2000102 +h-dns.pl. 172800 IN A 194.0.1.2 +05682D646E7302706C00001C00010002A300001020010678000400000000000000000002 +h-dns.pl. 172800 IN AAAA 2001:678:4::2 +05692D646E7302706C00000100010002A30000049C9A640F +i-dns.pl. 172800 IN A 156.154.100.15 +08706C756D62696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +plumbing. 172800 IN NS demand.beta.aridns.net.au. +08706C756D62696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +plumbing. 172800 IN NS demand.alpha.aridns.net.au. +08706C756D62696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +plumbing. 172800 IN NS demand.delta.aridns.net.au. +08706C756D62696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +plumbing. 172800 IN NS demand.gamma.aridns.net.au. +08706C756D62696E6700002B00010001518000240CB80802BB346E545259EA75712223FFD494EABE12726A788828C02BD03B979ED7976BD7 +plumbing. 86400 IN DS 3256 8 2 BB346E545259EA75712223FFD494EABE12726A788828C02BD03B979ED7976BD7 +08706C756D62696E6700002E0001000151800093002B08010001518052F4220052EAD97083770078A9A325E3463C28183EDDF0DB61300B31907A081DCF7ACE5F2104FADE922E45DF04598713B3400A867D36854B55497A0CEA665FEADC8F1C956FDC5CE14F9CDF8DB7BD3EDA2D56AEA6414EE9B066DE733FF329301EF78F6CA199448B07D88DE007BD0729B85BD6918A0D01530DDCC927A4D5DE962C094809F439E802D14AA797 +plumbing. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . eKmjJeNGPCgYPt3w22EwCzGQeggdz3rOXyEE+t6SLkXfBFmHE7NACoZ9NoVLVUl6DOpmX+rcjxyVb9xc4U+c3423vT7aLVaupkFO6bBm3nM/8ykwHvePbKGZRIsH2I3gB70HKbhb1pGKDQFTDdzJJ6TV3pYsCUgJ9DnoAtFKp5c= ;{id = 33655} +08706C756D62696E6700002E0001000151800093002F08010001518052F4220052EAD97083770030E5342C744D537B7C08D4B8362CB9C63E33B26995E4C291F71B79EC9AADECF4609E94CC07DCC83DAEFD5D1B306A2C30FE3A1C2832946142656357F2CA4837BA2BCB01B81BF46D495549EBE931DAEB868F3A3596C5AD1CF21A526102D064EF32B09DD8EDFB60EE16554555FB47AD6675A49E4DA3A0FEAF85C2BD7454D0A326F9 +plumbing. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MOU0LHRNU3t8CNS4Niy5xj4zsmmV5MKR9xt57Jqt7PRgnpTMB9zIPa79XRswaiww/jocKDKUYUJlY1fyykg3uivLAbgb9G1JVUnr6THa64aPOjWWxa0c8hpSYQLQZO8ysJ3Y7ftg7hZVRVX7R61mdaSeTaOg/q+Fwr10VNCjJvk= ;{id = 33655} +08706C756D62696E6700002F000100015180000C02706D000006200000000013 +plumbing. 86400 IN NSEC pm. NS DS RRSIG NSEC +02706D00000200010002A300000E016403657874036E696302667200 +pm. 172800 IN NS d.ext.nic.fr. +02706D00000200010002A300000A0164036E696302667200 +pm. 172800 IN NS d.nic.fr. +02706D00000200010002A300000E016503657874036E696302667200 +pm. 172800 IN NS e.ext.nic.fr. +02706D00000200010002A300000E016603657874036E696302667200 +pm. 172800 IN NS f.ext.nic.fr. +02706D00000200010002A300000E016703657874036E696302667200 +pm. 172800 IN NS g.ext.nic.fr. +02706D00002B00010001518000248C470802BCCB9BB0CAB68D8C3C64A4FF4ECF3309743D14C5366738F54D4C031E74EA99F1 +pm. 86400 IN DS 35911 8 2 BCCB9BB0CAB68D8C3C64A4FF4ECF3309743D14C5366738F54D4C031E74EA99F1 +02706D00002B0001000151800024DB800802B49959AB8FFF95A45BF5F7130AB1A64C7EF1CEFB6F50CA1BE003281503325F67 +pm. 86400 IN DS 56192 8 2 B49959AB8FFF95A45BF5F7130AB1A64C7EF1CEFB6F50CA1BE003281503325F67 +02706D00002E0001000151800093002B08010001518052F4220052EAD97083770067E5DEC6D2AA4C8F31CD7720DECCBEBEC2632A5D0FCF8510637AA30D111E7FBBA80F3D4332C6D876B50D8E7E36347530AA2726B6A17D90409F9EF41A49D22343E0C07B34C8060C6C1F0DB6DE03DD2E4929E9145DFC32949B0F756B166AD17D2206C5A62457B789F100893B69431B597738AAF814C1D886A8DED9F51AE3D6AE1D +pm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z+XextKqTI8xzXcg3sy+vsJjKl0Pz4UQY3qjDREef7uoDz1DMsbYdrUNjn42NHUwqicmtqF9kECfnvQaSdIjQ+DAezTIBgxsHw223gPdLkkp6RRd/DKUmw91axZq0X0iBsWmJFe3ifEAiTtpQxtZdziq+BTB2Iao3tn1GuPWrh0= ;{id = 33655} +02706D00002E0001000151800093002F08010001518052F4220052EAD97083770046F3797AEC4480789099A9F1EC204B7D48CDE3249337E6DF78E0BA9AA374628E2B24726F02E0D8851EE81749BF07AFC956C94675E2C65256AE17C2E28E81C6298E8C3AF9F75C1D2340BE0E4EA0B65DA3C332B5518096998533E327BF1A93FE1693E98C0657806458083544442FCE5A03B4639C541662A6C162A5B5CE30F3C52E +pm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RvN5euxEgHiQmanx7CBLfUjN4ySTN+bfeOC6mqN0Yo4rJHJvAuDYhR7oF0m/B6/JVslGdeLGUlauF8LijoHGKY6MOvn3XB0jQL4OTqC2XaPDMrVRgJaZhTPjJ78ak/4Wk+mMBleAZFgINUREL85aA7RjnFQWYqbBYqW1zjDzxS4= ;{id = 33655} +02706D00002F000100015180000C02706E000006200000000013 +pm. 86400 IN NSEC pn. NS DS RRSIG NSEC +02706E00000200010002A3000015036E733008706974636169726E036E657402706E00 +pn. 172800 IN NS ns0.pitcairn.net.pn. +02706E00000200010002A3000015036E733208706974636169726E036E657402706E00 +pn. 172800 IN NS ns2.pitcairn.net.pn. +02706E00000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +pn. 172800 IN NS fork.sth.dnsnode.net. +02706E00000200010002A300001006736E732D706203697363036F726700 +pn. 172800 IN NS sns-pb.isc.org. +02706E00002F000100015180000E04706F7374000006200000000003 +pn. 86400 IN NSEC post. NS RRSIG NSEC +02706E00002E0001000151800093002F08010001518052F4220052EAD97083770079CCFF415DE1FF330FF0710A9CDC6B7958377BC089225087D29C470D04B97503221E441EE04DE29A13332A9ECE050C3A7ECA794AA26B41EB4EF3842BC21CBA742C137CA33F299A96D7D1FC0E1C8A1684C46927DD94FC1619A0243B35FDCCC2D0969E31EEF0D480C02675C8ACC3C439CD3FB7042D2F1FF5AA130E6E4DC5411F32 +pn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ecz/QV3h/zMP8HEKnNxreVg3e8CJIlCH0pxHDQS5dQMiHkQe4E3imhMzKp7OBQw6fsp5SqJrQetO84Qrwhy6dCwTfKM/KZqW19H8DhyKFoTEaSfdlPwWGaAkOzX9zMLQlp4x7vDUgMAmdcisw8Q5zT+3BC0vH/WqEw5uTcVBHzI= ;{id = 33655} +036E733008706974636169726E036E657402706E00000100010002A3000004ADE699B4 +ns0.pitcairn.net.pn. 172800 IN A 173.230.153.180 +036E733208706974636169726E036E657402706E00000100010002A300000450445D64 +ns2.pitcairn.net.pn. 172800 IN A 80.68.93.100 +04706F737400000200010002A300001A02613004706F73740B6166696C6961732D6E737404696E666F00 +post. 172800 IN NS a0.post.afilias-nst.info. +04706F737400000200010002A300001A02613204706F73740B6166696C6961732D6E737404696E666F00 +post. 172800 IN NS a2.post.afilias-nst.info. +04706F737400000200010002A300001902623004706F73740B6166696C6961732D6E7374036F726700 +post. 172800 IN NS b0.post.afilias-nst.org. +04706F737400000200010002A300001902623204706F73740B6166696C6961732D6E7374036F726700 +post. 172800 IN NS b2.post.afilias-nst.org. +04706F737400000200010002A300001A02633004706F73740B6166696C6961732D6E737404696E666F00 +post. 172800 IN NS c0.post.afilias-nst.info. +04706F737400000200010002A300001902643004706F73740B6166696C6961732D6E7374036F726700 +post. 172800 IN NS d0.post.afilias-nst.org. +04706F737400002B0001000151800018806507016BDF7F6E05265E97B88E44C56D86E686FDB75AC7 +post. 86400 IN DS 32869 7 1 6BDF7F6E05265E97B88E44C56D86E686FDB75AC7 +04706F737400002B0001000151800024806507020333CB4618C912888F923F60E876BA9B160602CCED7B3B8BF35C522289C84DE7 +post. 86400 IN DS 32869 7 2 0333CB4618C912888F923F60E876BA9B160602CCED7B3B8BF35C522289C84DE7 +04706F737400002E0001000151800093002B08010001518052F4220052EAD9708377001F38936A5982833016E8B2DFD236BDB4ECA2FFF02A316B4A286ACA4FF74D648203BB105AD10F529728DDD5D0273B9F20287CCDD9C4A576360E99E6CC0F2C120D71A00FEEFD78B611B20F51FBF1419EBDC2B98DE2701830DF56D0A017EC84BD8D87121A799C10E1B4323BBA1AA21BC5CBBE6E7EA400287B0661F64536AA48A777 +post. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HziTalmCgzAW6LLf0ja9tOyi//AqMWtKKGrKT/dNZIIDuxBa0Q9Slyjd1dAnO58gKHzN2cSldjYOmebMDywSDXGgD+79eLYRsg9R+/FBnr3CuY3icBgw31bQoBfshL2NhxIaeZwQ4bQyO7oaohvFy75ufqQAKHsGYfZFNqpIp3c= ;{id = 33655} +04706F737400002E0001000151800093002F08010001518052F4220052EAD9708377007646457EE511D24A91DD637943A9CF8C3B61D8F22B2E620F5CEDA005BF9A5AB4B91EC4E76A91A6E273D0B00F91DB5F58346BD50D7B7606BE62C2A00AB264D2DABCFAD9776CD5B0179FBBF2727EFA24337458F0476216D287E889FB1E36ADC75141347553108EC08E7D556DBD7493F3E0735DC48AD5C0EEE9B5488D47EBE60B7C +post. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dkZFfuUR0kqR3WN5Q6nPjDth2PIrLmIPXO2gBb+aWrS5HsTnapGm4nPQsA+R219YNGvVDXt2Br5iwqAKsmTS2rz62Xds1bAXn7vycn76JDN0WPBHYhbSh+iJ+x42rcdRQTR1UxCOwI59VW29dJPz4HNdxIrVwO7ptUiNR+vmC3w= ;{id = 33655} +04706F737400002F000100015180000C027072000006200000000013 +post. 86400 IN NSEC pr. NS DS RRSIG NSEC +02707200002F000100015180000D0370726F000006200000000013 +pr. 86400 IN NSEC pro. NS DS RRSIG NSEC +02707200002E0001000151800093002F08010001518052F4220052EAD9708377002373B06BF5475FE2BD7B4AE2E2E916A00E4EA275C22B3CCFCEF0F4640AD5F09397DC2217CBBB81E2693147BAE6BB3577A20674A4A8193A5B2304B607ECB1DB812B231BE62E959E267119D838E977675ED94DC5F2260B105E719D03116718C0517A01AE57F7481B4BB02F54E496D6E2F257E33097DB9C20DA7B148D8EE3E35508 +pr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . I3Owa/VHX+K9e0ri4ukWoA5OonXCKzzPzvD0ZArV8JOX3CIXy7uB4mkxR7rmuzV3ogZ0pKgZOlsjBLYH7LHbgSsjG+YulZ4mcRnYOOl3Z17ZTcXyJgsQXnGdAxFnGMBRegGuV/dIG0uwL1Tkltbi8lfjMJfbnCDaexSNjuPjVQg= ;{id = 33655} +02707200002E0001000151800093002B08010001518052F4220052EAD97083770037661896C70D652192501BBA8E0D17713179BCE7EB54D540D082C4E071D068B98B26E12C4352291CF60A335EEDF353C8E90483D3CF78D9A1FF3284BFEDA20E0F195F91AC0909B388F430D4F843B7F59A9AC5DD83158506F283CBD60AE1AF52BED9A8E35C6477DAAD1EC2C3BCD26FBD6D6FED564CE204853E54951815B29EEE7B +pr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . N2YYlscNZSGSUBu6jg0XcTF5vOfrVNVA0ILE4HHQaLmLJuEsQ1IpHPYKM17t81PI6QSD08942aH/MoS/7aIODxlfkawJCbOI9DDU+EO39Zqaxd2DFYUG8oPL1grhr1K+2ajjXGR32q0ewsO80m+9bW/tVkziBIU+VJUYFbKe7ns= ;{id = 33655} +02707200000200010002A30000170570722D6E7307616E796361737403706368036E657400 +pr. 172800 IN NS pr-ns.anycast.pch.net. +02707200000200010002A300000F06676F6C6F6D62036E696302707200 +pr. 172800 IN NS golomb.nic.pr. +02707200000200010002A300000F0670617363616C036E696302707200 +pr. 172800 IN NS pascal.nic.pr. +02707200000200010002A30000110670722D646E730564656E696302646500 +pr. 172800 IN NS pr-dns.denic.de. +02707200000200010002A300001209646573636172746573036E696302707200 +pr. 172800 IN NS descartes.nic.pr. +02707200002B0001000151800018D2E20501C2B7576022FE56A3340409053A7AA5D6EED8EB09 +pr. 86400 IN DS 53986 5 1 C2B7576022FE56A3340409053A7AA5D6EED8EB09 +09646573636172746573036E696302707200000100010002A300000486CA0178 +descartes.nic.pr. 172800 IN A 134.202.1.120 +06646F2D646E73036E696302707200000100010002A300000486CA0179 +do-dns.nic.pr. 172800 IN A 134.202.1.121 +06676F6C6F6D62036E696302707200000100010002A300000486CA0664 +golomb.nic.pr. 172800 IN A 134.202.6.100 +06676F6C6F6D62036E696302707200001C00010002A300001020010500001000000000000000060100 +golomb.nic.pr. 172800 IN AAAA 2001:500:10::6:100 +0670617363616C036E696302707200000100010002A300000486CA0078 +pascal.nic.pr. 172800 IN A 134.202.0.120 +0670617363616C036E696302707200001C00010002A300001020010500001000000000000000000120 +pascal.nic.pr. 172800 IN AAAA 2001:500:10::120 +0370726F00000200010002A30000190261300370726F0B6166696C6961732D6E737404696E666F00 +pro. 172800 IN NS a0.pro.afilias-nst.info. +0370726F00000200010002A30000190261320370726F0B6166696C6961732D6E737404696E666F00 +pro. 172800 IN NS a2.pro.afilias-nst.info. +0370726F00000200010002A30000180262300370726F0B6166696C6961732D6E7374036F726700 +pro. 172800 IN NS b0.pro.afilias-nst.org. +0370726F00000200010002A30000180262320370726F0B6166696C6961732D6E7374036F726700 +pro. 172800 IN NS b2.pro.afilias-nst.org. +0370726F00000200010002A30000190263300370726F0B6166696C6961732D6E737404696E666F00 +pro. 172800 IN NS c0.pro.afilias-nst.info. +0370726F00000200010002A30000180264300370726F0B6166696C6961732D6E7374036F726700 +pro. 172800 IN NS d0.pro.afilias-nst.org. +0370726F00002F000100015180000C027073000006200000000003 +pro. 86400 IN NSEC ps. NS RRSIG NSEC +0370726F00002E0001000151800093002F08010001518052F4220052EAD9708377003FE357538263A3A11B8F0C98798C6937E70E65DB9AC50B1AB678B95D2CB57BCBAB6727DADD0F6A441169E95AAF1D04EF5A97BFD3C278D9E9B0DC6FE463EDC74BD8572E0A577A1230A440A3C64EB59BFA70C79992097DE7F3699DA202ACE746F1B9CB7BED1962B97546240701DD8380A27F2D638F25F8E88E4EA726DF6246FA31 +pro. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P+NXU4Jjo6EbjwyYeYxpN+cOZduaxQsatni5XSy1e8urZyfa3Q9qRBFp6VqvHQTvWpe/08J42emw3G/kY+3HS9hXLgpXehIwpECjxk61m/pwx5mSCX3n82mdogKs50bxuct77RliuXVGJAcB3YOAon8tY48l+OiOTqcm32JG+jE= ;{id = 33655} +02707300002F000100015180000C027074000006200000000003 +ps. 86400 IN NSEC pt. NS RRSIG NSEC +02707300002E0001000151800093002F08010001518052F4220052EAD9708377000DD77F9F41F97B903F35FB797DC4DAFDBCEC0A90B5AC1C299F0E8862F98542ECDA62FC1174100ADCB4ADC0997C4CF4411D1C023216A4FCDA957FF1594026485C16BC72A80862FBE4E95A6B66DB706E408DFF3D485E727D02704A8BFF674E33F4F0628A76C9937051CD9F9FE38EA2D620DE3E5B2DBF848D67A8516BF4ADD749B0 +ps. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ddd/n0H5e5A/Nft5fcTa/bzsCpC1rBwpnw6IYvmFQuzaYvwRdBAK3LStwJl8TPRBHRwCMhak/NqVf/FZQCZIXBa8cqgIYvvk6VprZttwbkCN/z1IXnJ9AnBKi/9nTjP08GKKdsmTcFHNn5/jjqLWIN4+Wy2/hI1nqFFr9K3XSbA= ;{id = 33655} +02707300000200010002A300001B027073056363746C640761757468646E730472697065036E657400 +ps. 172800 IN NS ps.cctld.authdns.ripe.net. +02707300000200010002A300000E036E733105706E696E6102707300 +ps. 172800 IN NS ns1.pnina.ps. +02707300000200010002A300000D037269700370736703636F6D00 +ps. 172800 IN NS rip.psg.com. +02707300000200010002A300000D04646E733103676F7602707300 +ps. 172800 IN NS dns1.gov.ps. +02707300000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +ps. 172800 IN NS fork.sth.dnsnode.net. +02707300000200010002A30000170570732D6E7307616E796361737403706368036E657400 +ps. 172800 IN NS ps-ns.anycast.pch.net. +04646E733103676F7602707300000100010002A3000004D5F45293 +dns1.gov.ps. 172800 IN A 213.244.82.147 +04646E733303676F7602707300000100010002A3000004D40EFDF2 +dns3.gov.ps. 172800 IN A 212.14.253.242 +0369646E05706E696E6102707300000100010002A3000004D0404404 +idn.pnina.ps. 172800 IN A 208.64.68.4 +036E733105706E696E6102707300000100010002A3000004C206E114 +ns1.pnina.ps. 172800 IN A 194.6.225.20 +02707400002F000100015180000C027077000006200000000013 +pt. 86400 IN NSEC pw. NS DS RRSIG NSEC +02707400002E0001000151800093002F08010001518052F4220052EAD9708377004DCFBB6E84A18834DA82313EF5D7F591FD542810220810D64361C1991C22F24EC0E2EC8E69D6E601AE001EA6E8174D9521C5457DD0E4E1437DCF4B5549677F14762EBBB71AF34E74606BAFBFFFBFD597D44C4B429FCCC510A0E57B28FA05EEF70E3F7D23E64B69BFF1219C0AD7405C8EC811D26437BE87EBD4DFF3CD628474B5 +pt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Tc+7boShiDTagjE+9df1kf1UKBAiCBDWQ2HBmRwi8k7A4uyOadbmAa4AHqboF02VIcVFfdDk4UN9z0tVSWd/FHYuu7ca8050YGuvv/+/1ZfUTEtCn8zFEKDleyj6Be73Dj99I+ZLab/xIZwK10BcjsgR0mQ3vofr1N/zzWKEdLU= ;{id = 33655} +02707400002E0001000151800093002B08010001518052F4220052EAD9708377006495C7F3324D7BBC79B67ECF9E3E1DE2F8E7DA55D9AA1821F1CDF3076157844F218230EF896ECAC9D912FA73C80AB27E10B26B7D32CB846C86CD3FB6FCC0056EA1109C7BC8D46B8EAD20904293AFBD52B971A047887304E7AC6724DB6922F40050F6D1C40C6786E764AF58DD04460CC276F856239D388584F8D15C6A8BF926C6 +pt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZJXH8zJNe7x5tn7Pnj4d4vjn2lXZqhgh8c3zB2FXhE8hgjDviW7KydkS+nPICrJ+ELJrfTLLhGyGzT+2/MAFbqEQnHvI1GuOrSCQQpOvvVK5caBHiHME56xnJNtpIvQAUPbRxAxnhudkr1jdBEYMwnb4ViOdOIWE+NFcaov5JsY= ;{id = 33655} +02707400000200010002A300000B026E7303646E7302627200 +pt. 172800 IN NS ns.dns.br. +02707400000200010002A300000B026E7303646E7302707400 +pt. 172800 IN NS ns.dns.pt. +02707400000200010002A300000C036E733203646E7302707400 +pt. 172800 IN NS ns2.dns.pt. +02707400000200010002A300000C036E7332036E696302667200 +pt. 172800 IN NS ns2.nic.fr. +02707400000200010002A3000014056E732D7074096E6C6E65746C616273026E6C00 +pt. 172800 IN NS ns-pt.nlnetlabs.nl. +02707400000200010002A300001006736E732D706203697363036F726700 +pt. 172800 IN NS sns-pb.isc.org. +02707400000200010002A30000130761757468323030026E73027575036E657400 +pt. 172800 IN NS auth200.ns.uu.net. +02707400000200010002A30000130761757468323130026E73027575036E657400 +pt. 172800 IN NS auth210.ns.uu.net. +02707400002B0001000151800018477F0701D071D44BF9DDF70449C5A6C37CADEB3EB3683C74 +pt. 86400 IN DS 18303 7 1 D071D44BF9DDF70449C5A6C37CADEB3EB3683C74 +02707400002B0001000151800024477F0702B8174233B52988D1A3517C9EF970DF7DF4900B3B211BBF5A931C4FA06C907F6A +pt. 86400 IN DS 18303 7 2 B8174233B52988D1A3517C9EF970DF7DF4900B3B211BBF5A931C4FA06C907F6A +026E7303646E7302707400000100010002A3000004C1880001 +ns.dns.pt. 172800 IN A 193.136.0.1 +026E7303646E7302707400001C00010002A3000010200106900A0010160905000000000001 +ns.dns.pt. 172800 IN AAAA 2001:690:a00:1016:905::1 +036E733203646E7302707400000100010002A3000004C18802E2 +ns2.dns.pt. 172800 IN A 193.136.2.226 +036E733203646E7302707400001C00010002A3000010200106900A8040010000000000000100 +ns2.dns.pt. 172800 IN AAAA 2001:690:a80:4001::100 +046E733031046663636E02707400000100010002A3000004C188C028 +ns01.fccn.pt. 172800 IN A 193.136.192.40 +046E733031046663636E02707400001C00010002A3000010200106900A0040010000000000000200 +ns01.fccn.pt. 172800 IN AAAA 2001:690:a00:4001::200 +046E733032046663636E02707400000100010002A3000004C18802E4 +ns02.fccn.pt. 172800 IN A 193.136.2.228 +046E733032046663636E02707400001C00010002A3000010200106900A8040010000000000000200 +ns02.fccn.pt. 172800 IN AAAA 2001:690:a80:4001::200 +046E733033046663636E02707400000100010002A30000048AF6FFF9 +ns03.fccn.pt. 172800 IN A 138.246.255.249 +046E733033046663636E02707400001C00010002A300001020014CA001060000025056FFFEA903FD +ns03.fccn.pt. 172800 IN AAAA 2001:4ca0:106:0:250:56ff:fea9:3fd +0670686F626F73046663636E02707400000100010002A3000004C1880711 +phobos.fccn.pt. 172800 IN A 193.136.7.17 +02707700000200010002A300000C036E7331036E696302707700 +pw. 172800 IN NS ns1.nic.pw. +02707700000200010002A300000C036E7332036E696302707700 +pw. 172800 IN NS ns2.nic.pw. +02707700000200010002A300000C036E7333036E696302707700 +pw. 172800 IN NS ns3.nic.pw. +02707700000200010002A300000C036E7334036E696302707700 +pw. 172800 IN NS ns4.nic.pw. +02707700000200010002A300000C036E7335036E696302707700 +pw. 172800 IN NS ns5.nic.pw. +02707700002B00010001518000186815070158EE332D303E2A64B7449C43AB770DAA1CA74C40 +pw. 86400 IN DS 26645 7 1 58EE332D303E2A64B7449C43AB770DAA1CA74C40 +02707700002B0001000151800024681507027EF397EDF4D7CA228C0F5111F5E1696CDBF279C0B6AFA48FC7E71A12E07E5880 +pw. 86400 IN DS 26645 7 2 7EF397EDF4D7CA228C0F5111F5E1696CDBF279C0B6AFA48FC7E71A12E07E5880 +02707700002E0001000151800093002B08010001518052F4220052EAD970837700678624BF285C00B54D83F19596D40972F452DA4B79B6E935FBA48D8921012DA097326CB8370976A7748F77F7464818323259D7AE97F1EB62CFB6F2B343B10A0DA728CE480003E16C26895771F34D6E34644D55355FB1C62515FB3B955E1522422CAFF81D598EC5685B88859CAE734957F401A14E534011B39CDEA72AE85888F3 +pw. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z4YkvyhcALVNg/GVltQJcvRS2kt5tuk1+6SNiSEBLaCXMmy4Nwl2p3SPd/dGSBgyMlnXrpfx62LPtvKzQ7EKDacozkgAA+FsJolXcfNNbjRkTVU1X7HGJRX7O5VeFSJCLK/4HVmOxWhbiIWcrnNJV/QBoU5TQBGznN6nKuhYiPM= ;{id = 33655} +02707700002E0001000151800093002F08010001518052F4220052EAD9708377006A98695455691E403005E02A825E8D8B3C9BDECB7165CC734BE6055A7C957DA7F97275F384AA5854BA694FE78A4A3A825A91E04FAD38F8CDDAAD7589E048DDF0CA6E5AEE563A76488F589AC167338D0307206DAB23ED811B81D133B317399D1290DB562397BDF639E2F4C0AF4FC9C526ED05085E4C9FA09E1189B113D6F03559 +pw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aphpVFVpHkAwBeAqgl6Nizyb3stxZcxzS+YFWnyVfaf5cnXzhKpYVLppT+eKSjqCWpHgT604+M3arXWJ4Ejd8MpuWu5WOnZIj1iawWczjQMHIG2rI+2BG4HRM7MXOZ0SkNtWI5e99jni9MCvT8nFJu0FCF5Mn6CeEYmxE9bwNVk= ;{id = 33655} +02707700002F000100015180000C027079000006200000000013 +pw. 86400 IN NSEC py. NS DS RRSIG NSEC +036E7331036E696302707700000100010002A3000004C2A9DA0C +ns1.nic.pw. 172800 IN A 194.169.218.12 +036E7331036E696302707700001C00010002A30000102001067C13CC00000000000000010012 +ns1.nic.pw. 172800 IN AAAA 2001:67c:13cc::1:12 +036E7332036E696302707700000100010002A3000004B918400C +ns2.nic.pw. 172800 IN A 185.24.64.12 +036E7332036E696302707700001C00010002A30000102A042B0013CC00000000000000010012 +ns2.nic.pw. 172800 IN AAAA 2a04:2b00:13cc::1:12 +036E7333036E696302707700000100010002A3000004C2A9DA0D +ns3.nic.pw. 172800 IN A 194.169.218.13 +036E7333036E696302707700001C00010002A30000102001067C13CC00000000000000010013 +ns3.nic.pw. 172800 IN AAAA 2001:67c:13cc::1:13 +036E7334036E696302707700000100010002A3000004B918400D +ns4.nic.pw. 172800 IN A 185.24.64.13 +036E7334036E696302707700001C00010002A30000102A042B0013CC00000000000000010013 +ns4.nic.pw. 172800 IN AAAA 2a04:2b00:13cc::1:13 +036E7335036E696302707700000100010002A3000004C2000202 +ns5.nic.pw. 172800 IN A 194.0.2.2 +036E7335036E696302707700001C00010002A300001020010678000500000000000000000002 +ns5.nic.pw. 172800 IN AAAA 2001:678:5::2 +02707900000200010002A300000F026E7303636E6303756E6102707900 +py. 172800 IN NS ns.cnc.una.py. +02707900000200010002A300000B026E7303646E7302627200 +py. 172800 IN NS ns.dns.br. +02707900000200010002A300001B027079056363746C640761757468646E730472697065036E657400 +py. 172800 IN NS py.cctld.authdns.ripe.net. +02707900000200010002A300000F036E73320673776974636802636800 +py. 172800 IN NS ns2.switch.ch. +02707900000200010002A300000C036E7333036E6963026D7800 +py. 172800 IN NS ns3.nic.mx. +02707900000200010002A30000100373636503636E6303756E6102707900 +py. 172800 IN NS sce.cnc.una.py. +02707900000200010002A300001206617574683030026E73027575036E657400 +py. 172800 IN NS auth00.ns.uu.net. +02707900002F000100015180000C027161000006200000000003 +py. 86400 IN NSEC qa. NS RRSIG NSEC +02707900002E0001000151800093002F08010001518052F4220052EAD970837700867EC0AA07D3C608AC83343C10FD61E7A17149DD1E8B156AD94F04351AB643AAAF5942945A4B5640E1D28F8A358C7AE97940C5AC2376F62A87E1C3B43CD9C5CAB406A53CB4AB074C2C13CA1915EA2862CBC81D0E0C60C816B8E49F450428A71A09B351426EDA68EAC9065B63797075FA2B5C5D7310C902AEFC7ED30CBB7AA910 +py. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hn7AqgfTxgisgzQ8EP1h56FxSd0eixVq2U8ENRq2Q6qvWUKUWktWQOHSj4o1jHrpeUDFrCN29iqH4cO0PNnFyrQGpTy0qwdMLBPKGRXqKGLLyB0ODGDIFrjkn0UEKKcaCbNRQm7aaOrJBltjeXB1+itcXXMQyQKu/H7TDLt6qRA= ;{id = 33655} +026E7303636E6303756E6102707900000100010002A3000004C80AE484 +ns.cnc.una.py. 172800 IN A 200.10.228.132 +0373636503636E6303756E6102707900000100010002A3000004C80AE485 +sce.cnc.una.py. 172800 IN A 200.10.228.133 +02716100000200010002A300000F016108726567697374727902716100 +qa. 172800 IN NS a.registry.qa. +02716100000200010002A300000F016208726567697374727902716100 +qa. 172800 IN NS b.registry.qa. +02716100000200010002A300000F016308726567697374727902716100 +qa. 172800 IN NS c.registry.qa. +02716100000200010002A300000F016408726567697374727902716100 +qa. 172800 IN NS d.registry.qa. +02716100000200010002A300000F016508726567697374727902716100 +qa. 172800 IN NS e.registry.qa. +02716100000200010002A300000F016608726567697374727902716100 +qa. 172800 IN NS f.registry.qa. +02716100000200010002A300000F016708726567697374727902716100 +qa. 172800 IN NS g.registry.qa. +02716100000200010002A300000F016808726567697374727902716100 +qa. 172800 IN NS h.registry.qa. +02716100000200010002A300000F016908726567697374727902716100 +qa. 172800 IN NS i.registry.qa. +02716100000200010002A300000F016A08726567697374727902716100 +qa. 172800 IN NS j.registry.qa. +02716100000200010002A300000F016B08726567697374727902716100 +qa. 172800 IN NS k.registry.qa. +02716100002F000100015180000C027265000006200000000003 +qa. 86400 IN NSEC re. NS RRSIG NSEC +02716100002E0001000151800093002F08010001518052F4220052EAD97083770022BBCF8C2242AE9B0382CE979C1C02F4754A0A638340947EB97685AA110565BFA62413D8E173868522E49C0506C6A666E6BACE39F73E5293F8EAAD74BF9697D71FFFDF7526CA63890FD0B03F3D71FD1F743A619E3314AD1E8182DB4BDC7E08F76F0B4A0EC655F0D1838FC0282B467469AFC8DEB981EEB05601D3D011A8E5D895 +qa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IrvPjCJCrpsDgs6XnBwC9HVKCmODQJR+uXaFqhEFZb+mJBPY4XOGhSLknAUGxqZm5rrOOfc+UpP46q10v5aX1x//33UmymOJD9CwPz1x/R90OmGeMxStHoGC20vcfgj3bwtKDsZV8NGDj8AoK0Z0aa/I3rmB7rBWAdPQEajl2JU= ;{id = 33655} +016108726567697374727902716100000100010002A3000004B2171068 +a.registry.qa. 172800 IN A 178.23.16.104 +016208726567697374727902716100000100010002A3000004B2171168 +b.registry.qa. 172800 IN A 178.23.17.104 +016308726567697374727902716100000100010002A3000004D44DC00A +c.registry.qa. 172800 IN A 212.77.192.10 +016408726567697374727902716100000100010002A3000004D44DC00D +d.registry.qa. 172800 IN A 212.77.192.13 +016508726567697374727902716100000100010002A3000004D44DC00F +e.registry.qa. 172800 IN A 212.77.192.15 +016608726567697374727902716100000100010002A300000425D1C006 +f.registry.qa. 172800 IN A 37.209.192.6 +016608726567697374727902716100001C00010002A300001020010DCD000100000000000000000006 +f.registry.qa. 172800 IN AAAA 2001:dcd:1::6 +016708726567697374727902716100000100010002A300000425D1C206 +g.registry.qa. 172800 IN A 37.209.194.6 +016708726567697374727902716100001C00010002A300001020010DCD000200000000000000000006 +g.registry.qa. 172800 IN AAAA 2001:dcd:2::6 +016808726567697374727902716100000100010002A3000004C1000933 +h.registry.qa. 172800 IN A 193.0.9.51 +016808726567697374727902716100001C00010002A30000102001067C00E000000000000000000051 +h.registry.qa. 172800 IN AAAA 2001:67c:e0::51 +016908726567697374727902716100000100010002A3000004CC3DD83E +i.registry.qa. 172800 IN A 204.61.216.62 +016908726567697374727902716100001C00010002A3000010200105000014606200AD000000000001 +i.registry.qa. 172800 IN AAAA 2001:500:14:6062:ad::1 +016A08726567697374727902716100000100010002A300000426670203 +j.registry.qa. 172800 IN A 38.103.2.3 +016B08726567697374727902716100000100010002A300000448344703 +k.registry.qa. 172800 IN A 72.52.71.3 +016B08726567697374727902716100001C00010002A300001020010470001A00000000000000000003 +k.registry.qa. 172800 IN AAAA 2001:470:1a::3 +02726500000200010002A300000E016403657874036E696302667200 +re. 172800 IN NS d.ext.nic.fr. +02726500000200010002A300000A0164036E696302667200 +re. 172800 IN NS d.nic.fr. +02726500000200010002A300000E016503657874036E696302667200 +re. 172800 IN NS e.ext.nic.fr. +02726500000200010002A300000E016603657874036E696302667200 +re. 172800 IN NS f.ext.nic.fr. +02726500000200010002A300000E016703657874036E696302667200 +re. 172800 IN NS g.ext.nic.fr. +02726500002B00010001518000244657080291325EB53782EB94B7B6EA3B6FD5F05F86A0247858B160883AF018667101AA1A +re. 86400 IN DS 18007 8 2 91325EB53782EB94B7B6EA3B6FD5F05F86A0247858B160883AF018667101AA1A +02726500002B000100015180002469920802FC7F430D839FA81CE34FBBC3C687834184685E3312FA3284354B00AFF6C9F2D2 +re. 86400 IN DS 27026 8 2 FC7F430D839FA81CE34FBBC3C687834184685E3312FA3284354B00AFF6C9F2D2 +02726500002E0001000151800093002B08010001518052F4220052EAD9708377007D5BCB067DBB7C189AD5A1F8441F383E5AA9974E62837A296A4BE5A458A0AB709416685DD74D284092F519B4A07593EA90A0E37804DDC47142DC3BBB7BE4A121003A6F33164297BF9F388AB33C1733868B70E6AC88FE3E05055D6790FA7D7674468879BBEBCCA1CF5398DF310DF4FB2ECF12247C38382B6D6B725D0AFC3573E8 +re. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fVvLBn27fBia1aH4RB84Plqpl05ig3opakvlpFigq3CUFmhd100oQJL1GbSgdZPqkKDjeATdxHFC3Du7e+ShIQA6bzMWQpe/nziKszwXM4aLcOasiP4+BQVdZ5D6fXZ0Roh5u+vMoc9TmN8xDfT7Ls8SJHw4OCtta3JdCvw1c+g= ;{id = 33655} +02726500002E0001000151800093002F08010001518052F4220052EAD97083770070CC5049E2BBDD66F9B11DF4387A5EE498F176014BD816C6FB755ABC334AA7E78B06A6E91071F08D819E4E364FB61BF1A212CC8C3CBC6390C933B39A12335DD8283E00FD7BEE0268CEB9F336F22D76E0AA0F2D5DE3E790B75976FD5D01F4075CFC4E1FCBA32BF87D8B6672BD4833F8FCB22D78E59F848D480DDC7F542F26654C +re. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cMxQSeK73Wb5sR30OHpe5JjxdgFL2BbG+3VavDNKp+eLBqbpEHHwjYGeTjZPthvxohLMjDy8Y5DJM7OaEjNd2Cg+AP177gJozrnzNvItduCqDy1d4+eQt1l2/V0B9Adc/E4fy6Mr+H2LZnK9SDP4/LIteOWfhI1IDdx/VC8mZUw= ;{id = 33655} +02726500002F00010001518000110772656369706573000006200000000013 +re. 86400 IN NSEC recipes. NS DS RRSIG NSEC +077265636970657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +recipes. 172800 IN NS demand.beta.aridns.net.au. +077265636970657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +recipes. 172800 IN NS demand.alpha.aridns.net.au. +077265636970657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +recipes. 172800 IN NS demand.delta.aridns.net.au. +077265636970657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +recipes. 172800 IN NS demand.gamma.aridns.net.au. +077265636970657300002B00010001518000241EE80802BD8F8D2BA244B97C11C8D26B8C5BCDA19294C5E2A1B21BF01D029F849F130D3B +recipes. 86400 IN DS 7912 8 2 BD8F8D2BA244B97C11C8D26B8C5BCDA19294C5E2A1B21BF01D029F849F130D3B +077265636970657300002E0001000151800093002B08010001518052F4220052EAD9708377006615BA4C8B9A480DF9004A25D263C2FF31C1B351EE040BFE448EA54729338D69929C779CF838C135ED3EEC23A532B491C528CF29B2C4AA5A511D9D37AE70A6C9A275D9903D3CF4E71688BA237FEB0E5E6676B93C0EF3A5B6046760EA98BA237ADC2DC76A1740B2EE9E520312A9E007F5784A3FF25E1638FE52DB22EEBBE86C59 +recipes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ZhW6TIuaSA35AEol0mPC/zHBs1HuBAv+RI6lRykzjWmSnHec+DjBNe0+7COlMrSRxSjPKbLEqlpRHZ03rnCmyaJ12ZA9PPTnFoi6I3/rDl5mdrk8DvOltgRnYOqYuiN63C3HahdAsu6eUgMSqeAH9XhKP/JeFjj+Utsi7rvobFk= ;{id = 33655} +077265636970657300002E0001000151800093002F08010001518052F4220052EAD970837700A2F70DF0DB128BD7EE681F1D96975FCB31519E9DB4344318AD0BBE17A396BB882ADD505450AAB25927E37EA30D1DE1E3231FDBAAA1AC582A3F77162474E6E949AA3333DCBD6637ED9725314464BE3A41B03EBCE4672B023C87C8CC23CD4895774FD7CF6F3DDE836F4585B278176B41318650009BDE7ED1955CA3D8A3B7C8F446 +recipes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ovcN8NsSi9fuaB8dlpdfyzFRnp20NEMYrQu+F6OWu4gq3VBUUKqyWSfjfqMNHeHjIx/bqqGsWCo/dxYkdObpSaozM9y9ZjftlyUxRGS+OkGwPrzkZysCPIfIzCPNSJV3T9fPbz3eg29FhbJ4F2tBMYZQAJveftGVXKPYo7fI9EY= ;{id = 33655} +077265636970657300002F000100015180000D03726564000006200000000013 +recipes. 86400 IN NSEC red. NS DS RRSIG NSEC +0372656400000200010002A300000C026130036E69630372656400 +red. 172800 IN NS a0.nic.red. +0372656400000200010002A300000C026132036E69630372656400 +red. 172800 IN NS a2.nic.red. +0372656400000200010002A300000C026230036E69630372656400 +red. 172800 IN NS b0.nic.red. +0372656400000200010002A300000C026330036E69630372656400 +red. 172800 IN NS c0.nic.red. +0372656400002B00010001518000184FCF0701429A68CBBF8ACE08D911071D13FD47892B1EFEF7 +red. 86400 IN DS 20431 7 1 429A68CBBF8ACE08D911071D13FD47892B1EFEF7 +0372656400002B00010001518000244FCF07027ED8016E603F6E4B0AEBDA756B01AAE19AE9C65D9A8DA32C1FD1CC74BCE999F4 +red. 86400 IN DS 20431 7 2 7ED8016E603F6E4B0AEBDA756B01AAE19AE9C65D9A8DA32C1FD1CC74BCE999F4 +0372656400002E0001000151800093002B08010001518052F4220052EAD97083770077180E3267C9DC4DA737A9E2802DBDED22A2D80231F4A7920B90333925757B7763BDE1D76D1B30A16F83E50E4546C4070B6C007ADA9B43AD1CAE347EF86FDA70EE2A0EBFD2480B84A051AAE5D50C8F4D9D7FC4A632195F9EEB6A0DBC0C177257A925F771DB7015C772A8F8808562A5A2F2ABC9E26168899CDF16C7A84CC25CB6 +red. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dxgOMmfJ3E2nN6nigC297SKi2AIx9KeSC5AzOSV1e3djveHXbRswoW+D5Q5FRsQHC2wAetqbQ60crjR++G/acO4qDr/SSAuEoFGq5dUMj02df8SmMhlfnutqDbwMF3JXqSX3cdtwFcdyqPiAhWKlovKryeJhaImc3xbHqEzCXLY= ;{id = 33655} +0372656400002E0001000151800093002F08010001518052F4220052EAD9708377008A0FC9E5A733F93408B60E8E40D83036E7BF7D239F7B640364ADC1BE74C26B5BC8321E62EEF6CC3110638791D12FD5AECA6E5AF9042B33B8FB069B0DE1AE0C3E221BB161FC380ECB7A9EA1F425D23FDC386787142A59164F6EE125EC1DBFACD57D70080136F4336E8E3667A550F1418F3241ADD97BDBB5E992CBDBE92A8C6BC3 +red. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ig/J5acz+TQItg6OQNgwNue/fSOfe2QDZK3BvnTCa1vIMh5i7vbMMRBjh5HRL9Wuym5a+QQrM7j7BpsN4a4MPiIbsWH8OA7Lep6h9CXSP9w4Z4cUKlkWT27hJewdv6zVfXAIATb0M26ONmelUPFBjzJBrdl727Xpksvb6SqMa8M= ;{id = 33655} +0372656400002F000100015180001006726570616972000006200000000013 +red. 86400 IN NSEC repair. NS DS RRSIG NSEC +026130036E69630372656400000100010002A300000441162419 +a0.nic.red. 172800 IN A 65.22.36.25 +026130036E69630372656400001C00010002A30000102A018840002600000000000000000025 +a0.nic.red. 172800 IN AAAA 2a01:8840:26::25 +026132036E69630372656400000100010002A300000441162719 +a2.nic.red. 172800 IN A 65.22.39.25 +026132036E69630372656400001C00010002A30000102A018840002900000000000000000025 +a2.nic.red. 172800 IN AAAA 2a01:8840:29::25 +026230036E69630372656400000100010002A300000441162519 +b0.nic.red. 172800 IN A 65.22.37.25 +026230036E69630372656400001C00010002A30000102A018840002700000000000000000025 +b0.nic.red. 172800 IN AAAA 2a01:8840:27::25 +026330036E69630372656400000100010002A300000441162619 +c0.nic.red. 172800 IN A 65.22.38.25 +026330036E69630372656400001C00010002A30000102A018840002800000000000000000025 +c0.nic.red. 172800 IN AAAA 2a01:8840:28::25 +0672657061697200000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +repair. 172800 IN NS demand.beta.aridns.net.au. +0672657061697200000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +repair. 172800 IN NS demand.alpha.aridns.net.au. +0672657061697200000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +repair. 172800 IN NS demand.delta.aridns.net.au. +0672657061697200000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +repair. 172800 IN NS demand.gamma.aridns.net.au. +0672657061697200002B00010001518000246FE5080267D9F251132F0B9866A5CFDD96CB41D39C5634150852B2B20C4B876C88726BFD +repair. 86400 IN DS 28645 8 2 67D9F251132F0B9866A5CFDD96CB41D39C5634150852B2B20C4B876C88726BFD +0672657061697200002E0001000151800093002B08010001518052F4220052EAD970837700BD9EF1A724718BB87DD6793C5BF8C0A4880B783B1EB620A131C8222C54924A0F0596DFBEC0535FE28D1F1E16C6B231C15CE06D25D91CD70C50BE8641764F06E57923878C73217FF1BA842CB76E8BFD03D601FFD64566F8956C0B386E0D22C2B849BE925C9B67492C21EE5DB7B8C71D416590954838E536F43B1CDCCD305CAF23 +repair. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vZ7xpyRxi7h91nk8W/jApIgLeDsetiChMcgiLFSSSg8Flt++wFNf4o0fHhbGsjHBXOBtJdkc1wxQvoZBdk8G5Xkjh4xzIX/xuoQst26L/QPWAf/WRWb4lWwLOG4NIsK4Sb6SXJtnSSwh7l23uMcdQWWQlUg45Tb0OxzczTBcryM= ;{id = 33655} +0672657061697200002E0001000151800093002F08010001518052F4220052EAD9708377006C81276DA4C87B31275DF3430FB7B69F76023D706AC6A13ECC96D1E35F5A804BF0134E7A3282BB1C48411B8CC3906D4D9860F8D27882B6BA1E5D4171F5C9519683E83EF8F93330C041D07614BAD6925279BCA183B78116511630847E3DC6842CAA64C3FBF62532F47BB26C493543601D55CBD60B649D43E76E2035237C58BE64 +repair. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bIEnbaTIezEnXfNDD7e2n3YCPXBqxqE+zJbR419agEvwE056MoK7HEhBG4zDkG1NmGD40niCtroeXUFx9clRloPoPvj5MzDAQdB2FLrWklJ5vKGDt4EWURYwhH49xoQsqmTD+/YlMvR7smxJNUNgHVXL1gtknUPnbiA1I3xYvmQ= ;{id = 33655} +0672657061697200002F000100015180000E0472696368000006200000000013 +repair. 86400 IN NSEC rich. NS DS RRSIG NSEC +047269636800000200010002A300000D026130036E6963047269636800 +rich. 172800 IN NS a0.nic.rich. +047269636800000200010002A300000D026132036E6963047269636800 +rich. 172800 IN NS a2.nic.rich. +047269636800000200010002A300000D026230036E6963047269636800 +rich. 172800 IN NS b0.nic.rich. +047269636800000200010002A300000D026330036E6963047269636800 +rich. 172800 IN NS c0.nic.rich. +047269636800002B0001000151800018C264070175DDCB6A3233AD81CD65DF3138D299592937DA35 +rich. 86400 IN DS 49764 7 1 75DDCB6A3233AD81CD65DF3138D299592937DA35 +047269636800002B0001000151800024C2640702AE19443051C6CBCBB411285F529394ECBAABCC764810B4D1117C76DB6635F74B +rich. 86400 IN DS 49764 7 2 AE19443051C6CBCBB411285F529394ECBAABCC764810B4D1117C76DB6635F74B +047269636800002E0001000151800093002B08010001518052F4220052EAD9708377008697F3649273EE647AAFDF10734735EF61FE79B7AF7634FFA205295AC6897DCDE0632F8D13B157F8A5390ED430DAE73CA0D8EB2DB34649498292C0C3B182BBD4B00EE8B12EDFCD039FB318BC82E526A2994A9A96FCAA6771ECD252E2B4E5AB8EFC4FC1EAC237E51ED2FEDE0FDF6242B0FF25A344D5B6FFE71A286DDBC040642E +rich. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hpfzZJJz7mR6r98Qc0c172H+ebevdjT/ogUpWsaJfc3gYy+NE7FX+KU5DtQw2uc8oNjrLbNGSUmCksDDsYK71LAO6LEu380Dn7MYvILlJqKZSpqW/KpncezSUuK05auO/E/B6sI35R7S/t4P32JCsP8lo0TVtv/nGiht28BAZC4= ;{id = 33655} +047269636800002E0001000151800093002F08010001518052F4220052EAD9708377003FD0DCF1BDB2BE64AD2281C14E5B65A35B0CB0E87DCCD1CCAE0CDC98876105AEF3A4FC45809C9FFE7C468BAAE46756BE62874F0C60085C32473675AF507DE753DCE069B826D3868AFAEE23F9D765C0F91B1551FD23BE6129F05F99DA76F08571105B2C1A36376952539E2B25E99C92DDC954C30B1CEE149C2C9277E4491958F8 +rich. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . P9Dc8b2yvmStIoHBTltlo1sMsOh9zNHMrgzcmIdhBa7zpPxFgJyf/nxGi6rkZ1a+YodPDGAIXDJHNnWvUH3nU9zgabgm04aK+u4j+ddlwPkbFVH9I75hKfBfmdp28IVxEFssGjY3aVJTnisl6ZyS3clUwwsc7hScLJJ35EkZWPg= ;{id = 33655} +047269636800002F000100015180000C02726F000006200000000013 +rich. 86400 IN NSEC ro. NS DS RRSIG NSEC +026130036E6963047269636800000100010002A300000441168811 +a0.nic.rich. 172800 IN A 65.22.136.17 +026130036E6963047269636800001C00010002A30000102A018840008600000000000000000017 +a0.nic.rich. 172800 IN AAAA 2a01:8840:86::17 +026132036E6963047269636800000100010002A300000441168B11 +a2.nic.rich. 172800 IN A 65.22.139.17 +026132036E6963047269636800001C00010002A30000102A018840008900000000000000000017 +a2.nic.rich. 172800 IN AAAA 2a01:8840:89::17 +026230036E6963047269636800000100010002A300000441168911 +b0.nic.rich. 172800 IN A 65.22.137.17 +026230036E6963047269636800001C00010002A30000102A018840008700000000000000000017 +b0.nic.rich. 172800 IN AAAA 2a01:8840:87::17 +026330036E6963047269636800000100010002A300000441168A11 +c0.nic.rich. 172800 IN A 65.22.138.17 +026330036E6963047269636800001C00010002A30000102A018840008800000000000000000017 +c0.nic.rich. 172800 IN AAAA 2a01:8840:88::17 +02726F00002F000100015180000C027273000006200000000003 +ro. 86400 IN NSEC rs. NS RRSIG NSEC +02726F00002E0001000151800093002F08010001518052F4220052EAD9708377001C1673004F0306E84FBB8BE9815F71011C8071398B9E32341BF571DE5CAF4F872F14BCB7FCC4FD6EF7F06E2926F4DEDF5DA51D580B1BECBC96DC0D932C9E4A7A385C1B1E09854DC506A9F864A4CB821E08417FB72C70648D485994AABB4C58318408C68D9A7A10B4D402B6414F8FB7F209063E742E1891F5F106B6C14845BFDA +ro. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HBZzAE8DBuhPu4vpgV9xARyAcTmLnjI0G/Vx3lyvT4cvFLy3/MT9bvfwbikm9N7fXaUdWAsb7LyW3A2TLJ5KejhcGx4JhU3FBqn4ZKTLgh4IQX+3LHBkjUhZlKq7TFgxhAjGjZp6ELTUArZBT4+38gkGPnQuGJH18Qa2wUhFv9o= ;{id = 33655} +02726F00000200010002A300001106646E732D617405726F746C6402726F00 +ro. 172800 IN NS dns-at.rotld.ro. +02726F00000200010002A300001106646E732D726F0564656E696302646500 +ro. 172800 IN NS dns-ro.denic.de. +02726F00000200010002A3000010066E732D65787403697363036F726700 +ro. 172800 IN NS ns-ext.isc.org. +02726F00000200010002A3000012077072696D61727905726F746C6402726F00 +ro. 172800 IN NS primary.rotld.ro. +02726F00000200010002A3000014097365632D646E732D6105726F746C6402726F00 +ro. 172800 IN NS sec-dns-a.rotld.ro. +02726F00000200010002A3000014097365632D646E732D6205726F746C6402726F00 +ro. 172800 IN NS sec-dns-b.rotld.ro. +06646E732D617405726F746C6402726F00000100010002A30000044E689106 +dns-at.rotld.ro. 172800 IN A 78.104.145.6 +06646E732D617405726F746C6402726F00001C00010002A300001020010628045300BB0000000000000006 +dns-at.rotld.ro. 172800 IN AAAA 2001:628:453:bb::6 +06646E732D6D6405726F746C6402726F00000100010002A3000004C0A21013 +dns-md.rotld.ro. 172800 IN A 192.162.16.19 +06646E732D6D6405726F746C6402726F00001C00010002A30000102A035E80000000040192016200160019 +dns-md.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:19 +077072696D61727905726F746C6402726F00000100010002A3000004C0A21012 +primary.rotld.ro. 172800 IN A 192.162.16.18 +077072696D61727905726F746C6402726F00001C00010002A30000102A035E80000000040192016200160018 +primary.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:18 +097365632D646E732D6105726F746C6402726F00000100010002A3000004C0A21014 +sec-dns-a.rotld.ro. 172800 IN A 192.162.16.20 +097365632D646E732D6105726F746C6402726F00001C00010002A30000102A035E80000000040192016200160020 +sec-dns-a.rotld.ro. 172800 IN AAAA 2a03:5e80:0:4:192:162:16:20 +097365632D646E732D6205726F746C6402726F00000100010002A3000004C1E61FE6 +sec-dns-b.rotld.ro. 172800 IN A 193.230.31.230 +097365632D646E732D6205726F746C6402726F00001C00010002A30000102A035E80000000050193023000310230 +sec-dns-b.rotld.ro. 172800 IN AAAA 2a03:5e80:0:5:193:230:31:230 +02727300000200010002A300000A0161036E696302727300 +rs. 172800 IN NS a.nic.rs. +02727300000200010002A300000A0162036E696302727300 +rs. 172800 IN NS b.nic.rs. +02727300000200010002A300000A0164036E696302727300 +rs. 172800 IN NS d.nic.rs. +02727300000200010002A300000A0166036E696302727300 +rs. 172800 IN NS f.nic.rs. +02727300000200010002A300000A0167036E696302727300 +rs. 172800 IN NS g.nic.rs. +02727300000200010002A300000A0168036E696302727300 +rs. 172800 IN NS h.nic.rs. +02727300000200010002A300000A016B036E696302727300 +rs. 172800 IN NS k.nic.rs. +02727300000200010002A300000A016C036E696302727300 +rs. 172800 IN NS l.nic.rs. +02727300002F000100015180000C027275000006200000000003 +rs. 86400 IN NSEC ru. NS RRSIG NSEC +02727300002E0001000151800093002F08010001518052F4220052EAD9708377002499E68042432EC13F18BC7A10AEE4FAAADEC946FE91B81895039BF84D2AE005542DE567759DF5787C749EA56BBD9EF0570664108F054B213D572767701B29673123DE3C6334601320D17ACD1E0518C703C91B079DA89D657885AB372A1ADB5C254F0D1419B8FCCCA772793C4274CC31C69A5C14879D1A119D8FF751BB021A01 +rs. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . JJnmgEJDLsE/GLx6EK7k+qreyUb+kbgYlQOb+E0q4AVULeVndZ31eHx0nqVrvZ7wVwZkEI8FSyE9VydncBspZzEj3jxjNGATINF6zR4FGMcDyRsHnaidZXiFqzcqGttcJU8NFBm4/Myncnk8QnTMMcaaXBSHnRoRnY/3UbsCGgE= ;{id = 33655} +0161036E696302727300000100010002A30000045BC7113B +a.nic.rs. 172800 IN A 91.199.17.59 +0162036E696302727300000100010002A3000004C3B22002 +b.nic.rs. 172800 IN A 195.178.32.2 +0164036E696302727300000100010002A3000004C100096B +d.nic.rs. 172800 IN A 193.0.9.107 +0164036E696302727300001C00010002A30000102001067C00E000000000000000000107 +d.nic.rs. 172800 IN AAAA 2001:67c:e0::107 +0166036E696302727300000100010002A3000004CC3DD820 +f.nic.rs. 172800 IN A 204.61.216.32 +0166036E696302727300001C00010002A3000010200105000014603200AD000000000001 +f.nic.rs. 172800 IN AAAA 2001:500:14:6032:ad::1 +0167036E696302727300000100010002A3000004935B0806 +g.nic.rs. 172800 IN A 147.91.8.6 +0168036E696302727300000100010002A30000045BC7113C +h.nic.rs. 172800 IN A 91.199.17.60 +016B036E696302727300000100010002A3000004C0050401 +k.nic.rs. 172800 IN A 192.5.4.1 +016B036E696302727300001C00010002A300001020010500002E00000000000000000001 +k.nic.rs. 172800 IN AAAA 2001:500:2e::1 +016C036E696302727300000100010002A3000004C2926A72 +l.nic.rs. 172800 IN A 194.146.106.114 +016C036E696302727300001C00010002A30000102001067C101000290000000000000053 +l.nic.rs. 172800 IN AAAA 2001:67c:1010:29::53 +02727500000200010002A3000010016103646E73047269706E036E657400 +ru. 172800 IN NS a.dns.ripn.net. +02727500000200010002A3000010016203646E73047269706E036E657400 +ru. 172800 IN NS b.dns.ripn.net. +02727500000200010002A3000010016403646E73047269706E036E657400 +ru. 172800 IN NS d.dns.ripn.net. +02727500000200010002A3000010016503646E73047269706E036E657400 +ru. 172800 IN NS e.dns.ripn.net. +02727500000200010002A3000010016603646E73047269706E036E657400 +ru. 172800 IN NS f.dns.ripn.net. +02727500002B0001000151800024C848080213ECAF18251EEC90C6BC8F16E2730F1F597F6D7E406C4A8FF1D4FD7D760D6EEE +ru. 86400 IN DS 51272 8 2 13ECAF18251EEC90C6BC8F16E2730F1F597F6D7E406C4A8FF1D4FD7D760D6EEE +02727500002E0001000151800093002B08010001518052F4220052EAD97083770047398CA39FB0FA125D024B75B1428B425183292C452F547232C421DEDF9E101215E84440B13F7B99D19FCAB74807F8F6135238D0FB8477D8D34399663456639FC5BFE9D1A37F625AAC8B8542AB5AAC6AD967FE22EEABFA3C50DFD362295498FC08741770FE3E67A8836F0E2F02D2285B6FF1554779D062C293D110E3721751B2 +ru. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . RzmMo5+w+hJdAkt1sUKLQlGDKSxFL1RyMsQh3t+eEBIV6ERAsT97mdGfyrdIB/j2E1I40PuEd9jTQ5lmNFZjn8W/6dGjf2JarIuFQqtarGrZZ/4i7qv6PFDf02IpVJj8CHQXcP4+Z6iDbw4vAtIoW2/xVUd50GLCk9EQ43IXUbI= ;{id = 33655} +02727500002E0001000151800093002F08010001518052F4220052EAD9708377009C8F77E156714FBFF9B0C71D1C74F65F851ABFB5215B5167314E85D41A09C4B532B756244C00F092EB112BE95653FCE575DC03B2DEF50786C83F28BB52819CCFA2FC40A908C100CCC1C9E135F9ECC526CCE880D40654AD7ED660ECEA511369D9011406A626DF8EF1F0BA7E2146FD1584F245145CF832635CFC8E66F68ED67F82 +ru. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nI934VZxT7/5sMcdHHT2X4Uav7UhW1FnMU6F1BoJxLUyt1YkTADwkusRK+lWU/zlddwDst71B4bIPyi7UoGcz6L8QKkIwQDMwcnhNfnsxSbM6IDUBlStftZg7OpRE2nZARQGpibfjvHwun4hRv0VhPJFFFz4MmNc/I5m9o7Wf4I= ;{id = 33655} +02727500002F000100015180000E0472756872000006200000000013 +ru. 86400 IN NSEC ruhr. NS DS RRSIG NSEC +047275687200000200010002A300001608616E7963617374390769726F6E646E73036E657400 +ruhr. 172800 IN NS anycast9.irondns.net. +047275687200000200010002A300001709616E796361737431300769726F6E646E73036E657400 +ruhr. 172800 IN NS anycast10.irondns.net. +047275687200000200010002A300001709616E796361737432330769726F6E646E73036E657400 +ruhr. 172800 IN NS anycast23.irondns.net. +047275687200000200010002A300001709616E796361737432340769726F6E646E73036E657400 +ruhr. 172800 IN NS anycast24.irondns.net. +047275687200002B0001000151800024622B0A02EC453960C396742EFA2EF815FA9C9DBA146E838F86F11643704C1630424F4E78 +ruhr. 86400 IN DS 25131 10 2 EC453960C396742EFA2EF815FA9C9DBA146E838F86F11643704C1630424F4E78 +047275687200002E0001000151800093002B08010001518052F4220052EAD9708377007EE9C5918B4991172864D072A55DF93019DFE556EA18A90DB0BCCFA97CF7D374F9052441230EC049B765D33ECD8EAC9B527196D96E1988644A1D94D9046C2F637DE5630C2470E54E1AC111DFBD63DE617F89B99071ADEAADDDD64172F0E760852A3FA5175234CE269EC15342EA01543FA8A4289ACE7A6EE9466505E07F3C28DC +ruhr. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . funFkYtJkRcoZNBypV35MBnf5VbqGKkNsLzPqXz303T5BSRBIw7ASbdl0z7NjqybUnGW2W4ZiGRKHZTZBGwvY33lYwwkcOVOGsER371j3mF/ibmQca3qrd3WQXLw52CFKj+lF1I0ziaewVNC6gFUP6ikKJrOem7pRmUF4H88KNw= ;{id = 33655} +047275687200002E0001000151800093002F08010001518052F4220052EAD970837700AD303E367EC34CA886361E8CDBB47E95D2A42DBEE0EC84976AAC5835F26A000A65C19FC9C5303A5A5AFC3DBA43FB706F9EE06D8D9CB454AC9EB9FCD29984C045BF1D6BC185D0B35E7ADD26132C1142A018A953C5930B5EE85C2F179916F2F1654388A623EC15B624EF8F18A13FF5235C1F9DEB07CCBE1A5A260B504A1F1B6123 +ruhr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rTA+Nn7DTKiGNh6M27R+ldKkLb7g7ISXaqxYNfJqAAplwZ/JxTA6Wlr8PbpD+3BvnuBtjZy0VKyeufzSmYTARb8da8GF0LNeet0mEywRQqAYqVPFkwte6FwvF5kW8vFlQ4imI+wVtiTvjxihP/UjXB+d6wfMvhpaJgtQSh8bYSM= ;{id = 33655} +047275687200002F000100015180000C027277000006200000000013 +ruhr. 86400 IN NSEC rw. NS DS RRSIG NSEC +02727700000200010002A3000012036E7331057269637461036F726702727700 +rw. 172800 IN NS ns1.ricta.org.rw. +02727700000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +rw. 172800 IN NS fork.sth.dnsnode.net. +02727700000200010002A3000013056E732D727707616672696E6963036E657400 +rw. 172800 IN NS ns-rw.afrinic.net. +02727700000200010002A300001006736E732D706203697363036F726700 +rw. 172800 IN NS sns-pb.isc.org. +02727700002F000100015180000C027361000006200000000003 +rw. 86400 IN NSEC sa. NS RRSIG NSEC +02727700002E0001000151800093002F08010001518052F4220052EAD9708377006CFFD4D5706882224A8511CD8C77132FD62E2F4EBD64E1023BD58CD6F6FAC22FE994EA5BC01412DAB4F511C8E539384575E3A17A5B36BD0BF88600C63C81C9783E417A706C2864DBEC5C52B0EAC577C739C0E5F706C7AA11F93D154711B5393941EA83EA48114E48252E216E3C14C44E62637EB46CBFB3359DC787F04420F7C6 +rw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bP/U1XBogiJKhRHNjHcTL9YuL069ZOECO9WM1vb6wi/plOpbwBQS2rT1EcjlOThFdeOhels2vQv4hgDGPIHJeD5BenBsKGTb7FxSsOrFd8c5wOX3BseqEfk9FUcRtTk5QeqD6kgRTkglLiFuPBTETmJjfrRsv7M1nceH8EQg98Y= ;{id = 33655} +036E7331057269637461036F726702727700000100010002A3000004294AADFA +ns1.ricta.org.rw. 172800 IN A 41.74.173.250 +02736100000200010002A300001B027361056363746C640761757468646E730472697065036E657400 +sa. 172800 IN NS sa.cctld.authdns.ripe.net. +02736100000200010002A3000010036E733103697375036E657402736100 +sa. 172800 IN NS ns1.isu.net.sa. +02736100000200010002A3000010036E7331036E6963036E657402736100 +sa. 172800 IN NS ns1.nic.net.sa. +02736100000200010002A3000010036E7332036E6963036E657402736100 +sa. 172800 IN NS ns2.nic.net.sa. +02736100000200010002A300000D037269700370736703636F6D00 +sa. 172800 IN NS rip.psg.com. +02736100000200010002A30000170573612D6E7307616E796361737403706368036E657400 +sa. 172800 IN NS sa-ns.anycast.pch.net. +02736100002F000100015180000C027362000006200000000003 +sa. 86400 IN NSEC sb. NS RRSIG NSEC +02736100002E0001000151800093002F08010001518052F4220052EAD970837700B6CE6C48FB6BFD0EC8CA1F93E27640DB81038A3FCAA80001D1BEF025542DF0B18230A28D58967779825932A7365DBBE04C9E16DD8484D89DFE5AE7399186DF530585A1089CE1C713537DE70EEDB35AF96BD8E15BDCA82705E7B8B0890C04A2A15C020FC7BC00F7755FB42B615F6F321CC03107765E8D29201D94BB507183EA0C +sa. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ts5sSPtr/Q7Iyh+T4nZA24EDij/KqAAB0b7wJVQt8LGCMKKNWJZ3eYJZMqc2XbvgTJ4W3YSE2J3+Wuc5kYbfUwWFoQic4ccTU33nDu2zWvlr2OFb3KgnBee4sIkMBKKhXAIPx7wA93VftCthX28yHMAxB3ZejSkgHZS7UHGD6gw= ;{id = 33655} +036E733103697375036E657402736100000100010002A3000004D41A1203 +ns1.isu.net.sa. 172800 IN A 212.26.18.3 +036E733103697375036E657402736100001C00010002A300001020011490000008000000000000000003 +ns1.isu.net.sa. 172800 IN AAAA 2001:1490:0:800::3 +036E7331036E6963036E657402736100000100010002A3000004566FC009 +ns1.nic.net.sa. 172800 IN A 86.111.192.9 +036E7331036E6963036E657402736100001C00010002A30000102001067C013004100000000000000009 +ns1.nic.net.sa. 172800 IN AAAA 2001:67c:130:410::9 +036E7332036E6963036E657402736100000100010002A3000004566FC409 +ns2.nic.net.sa. 172800 IN A 86.111.196.9 +036E7332036E6963036E657402736100001C00010002A30000102001067C013000100000000000000009 +ns2.nic.net.sa. 172800 IN AAAA 2001:67c:130:10::9 +02736200000200010002A300000C03706368036E696302736200 +sb. 172800 IN NS pch.nic.sb. +02736200000200010002A3000010037362310664796E746C64036E657400 +sb. 172800 IN NS sb1.dyntld.net. +02736200000200010002A3000010037362330664796E746C64036E657400 +sb. 172800 IN NS sb3.dyntld.net. +02736200000200010002A300001006736E732D706203697363036F726700 +sb. 172800 IN NS sns-pb.isc.org. +02736200002B000100015180002444E3080227F59686A15B09DC8293FAC9C31E5BE51ABF214E1E9CD5B21CBE50F0F311C780 +sb. 86400 IN DS 17635 8 2 27F59686A15B09DC8293FAC9C31E5BE51ABF214E1E9CD5B21CBE50F0F311C780 +02736200002E0001000151800093002B08010001518052F4220052EAD970837700BC3BE0B1FA3AEE7C6B2C7B1B0B7808CC12D6F942B7223F48FACB2CF0E56E174BBF372E4C6068919EACA3BDEA58D7CC52A4E994242634D7550AC28AF4CB570DEA061CB550B697C8DDA079211FA960BBEC081173BCD57A3352116642CFDA0DE2ABA368A81C1C9DE5DFF86464E860FC54566261180CBA68B5B2C45426DEC0A0446A +sb. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vDvgsfo67nxrLHsbC3gIzBLW+UK3Ij9I+sss8OVuF0u/Ny5MYGiRnqyjvepY18xSpOmUJCY011UKwor0y1cN6gYctVC2l8jdoHkhH6lgu+wIEXO81XozUhFmQs/aDeKro2ioHByd5d/4ZGToYPxUVmJhGAy6aLWyxFQm3sCgRGo= ;{id = 33655} +02736200002E0001000151800093002F08010001518052F4220052EAD9708377003789474C5CEB8C3C7B692A717D8818FB12090F06AE13D07A8E0C127379D5E8D63800A046A6C8C6E6B8F506FC53CB5400C0FC2F693986D6B4ED3D4FA0DF10A0F54D590AFDC79189B2111337B0D9AE231C30786CDC5699C7581896AD5EDE070110D753BD8A1B984199C5A8738A52060E5A0A6BE895DE8836468C2A4924C042151B +sb. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . N4lHTFzrjDx7aSpxfYgY+xIJDwauE9B6jgwSc3nV6NY4AKBGpsjG5rj1BvxTy1QAwPwvaTmG1rTtPU+g3xCg9U1ZCv3HkYmyERM3sNmuIxwweGzcVpnHWBiWrV7eBwEQ11O9ihuYQZnFqHOKUgYOWgpr6JXeiDZGjCpJJMBCFRs= ;{id = 33655} +02736200002F000100015180000C027363000006200000000013 +sb. 86400 IN NSEC sc. NS DS RRSIG NSEC +03706368036E696302736200000100010002A3000004CC3DD81F +pch.nic.sb. 172800 IN A 204.61.216.31 +03706368036E696302736200001C00010002A3000010200105000014603100AD000000000001 +pch.nic.sb. 172800 IN AAAA 2001:500:14:6031:ad::1 +02736300000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +sc. 172800 IN NS a0.cctld.afilias-nst.info. +02736300000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +sc. 172800 IN NS a2.cctld.afilias-nst.info. +02736300000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +sc. 172800 IN NS b0.cctld.afilias-nst.org. +02736300000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +sc. 172800 IN NS b2.cctld.afilias-nst.org. +02736300000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +sc. 172800 IN NS c0.cctld.afilias-nst.info. +02736300000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +sc. 172800 IN NS d0.cctld.afilias-nst.org. +02736300000200010002A300000C036E7331036E696302736300 +sc. 172800 IN NS ns1.nic.sc. +02736300002B000100015180001880B907012989C1B61462537A50928B77A85E2AD373C50B66 +sc. 86400 IN DS 32953 7 1 2989C1B61462537A50928B77A85E2AD373C50B66 +02736300002B000100015180002480B90702E85C14114B092BF9D0B21C804CA878618BEE750ED714092180D59A2001C3708C +sc. 86400 IN DS 32953 7 2 E85C14114B092BF9D0B21C804CA878618BEE750ED714092180D59A2001C3708C +02736300002E0001000151800093002B08010001518052F4220052EAD97083770095A4FC5A946CC811BA68A178CC1A88F845A5E302E25F466672B66815E43DE04680585C12A84C84DD375EE14768D42351968191799CC614025F1116129BCFDD3F79CE88E231FEB88AAF00691180A4FF9211191B7A72AF6380DE9E622DB1CB519445F7AB70ADF21F6C528EC61B6D9C1501E12BF5241D9FB55E70C7593136D1E3B5 +sc. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . laT8WpRsyBG6aKF4zBqI+EWl4wLiX0ZmcrZoFeQ94EaAWFwSqEyE3Tde4Udo1CNRloGReZzGFAJfERYSm8/dP3nOiOIx/riKrwBpEYCk/5IRGRt6cq9jgN6eYi2xy1GURfercK3yH2xSjsYbbZwVAeEr9SQdn7VecMdZMTbR47U= ;{id = 33655} +02736300002E0001000151800093002F08010001518052F4220052EAD97083770023231D8DEAB39806AC552961530C7929072E439DD274956ABFC256E4F388F5ABD8AB0B8BFACD0472BF77E3212D53EB12965F704C6E99E147C138961FB6FB36E3775A9E2FC2217F8CD150FAD4B56F3D7A01CA02BC11F4CD9A488B5A6C66C88E7BB5E4FC2F64D5A2FEE8082688FBD33F7296B100A7ACC26E732B82A8132858592C +sc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . IyMdjeqzmAasVSlhUwx5KQcuQ53SdJVqv8JW5POI9avYqwuL+s0Ecr934yEtU+sSll9wTG6Z4UfBOJYftvs243dani/CIX+M0VD61LVvPXoBygK8EfTNmkiLWmxmyI57teT8L2TVov7oCCaI+9M/cpaxAKeswm5zK4KoEyhYWSw= ;{id = 33655} +02736300002F000100015180000C027364000006200000000013 +sc. 86400 IN NSEC sd. NS DS RRSIG NSEC +036E7331036E696302736300000100010002A300000429BF7981 +ns1.nic.sc. 172800 IN A 41.191.121.129 +02736400000200010002A300001B027364056363746C640761757468646E730472697065036E657400 +sd. 172800 IN NS sd.cctld.authdns.ripe.net. +02736400000200010002A3000011036E733104636F7A61036E6574027A6100 +sd. 172800 IN NS ns1.coza.net.za. +02736400000200010002A300000F036E7331067561656E696302616500 +sd. 172800 IN NS ns1.uaenic.ae. +02736400000200010002A300000F036E7332067561656E696302616500 +sd. 172800 IN NS ns2.uaenic.ae. +02736400000200010002A300000D04616E73310373697302736400 +sd. 172800 IN NS ans1.sis.sd. +02736400000200010002A300000F04616E73310563616E617202736400 +sd. 172800 IN NS ans1.canar.sd. +02736400000200010002A300000F04616E73320563616E617202736400 +sd. 172800 IN NS ans2.canar.sd. +02736400000200010002A3000013056E732D736407616672696E6963036E657400 +sd. 172800 IN NS ns-sd.afrinic.net. +02736400002F000100015180000C027365000006200000000003 +sd. 86400 IN NSEC se. NS RRSIG NSEC +02736400002E0001000151800093002F08010001518052F4220052EAD970837700588607A12DA353C59C46235F1029E746B40A44D24558EAF257998F1F729A4D93AAA6B4958648D49BA46C193682B66956F59F2762688C212FF3E26D191984DE1CE45864403C2D044F6065765C23EC23894FE3650D66F03CCEA849673BAC0B52EAD01C40578EC45A4463E8E690500F95FCDE462FE34048F5BD2F70AF7AEC537B39 +sd. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WIYHoS2jU8WcRiNfECnnRrQKRNJFWOryV5mPH3KaTZOqprSVhkjUm6RsGTaCtmlW9Z8nYmiMIS/z4m0ZGYTeHORYZEA8LQRPYGV2XCPsI4lP42UNZvA8zqhJZzusC1Lq0BxAV47EWkRj6OaQUA+V/N5GL+NASPW9L3CveuxTezk= ;{id = 33655} +04616E73310563616E617202736400000100010002A3000004C41DB40E +ans1.canar.sd. 172800 IN A 196.29.180.14 +04616E73320563616E617202736400000100010002A3000004C41DA40E +ans2.canar.sd. 172800 IN A 196.29.164.14 +04616E73310373697302736400000100010002A3000004C41DA686 +ans1.sis.sd. 172800 IN A 196.29.166.134 +02736500002F000100015180000E0473657879000006200000000013 +se. 86400 IN NSEC sexy. NS DS RRSIG NSEC +02736500002E0001000151800093002F08010001518052F4220052EAD970837700488C9F74BF909F75F4978632ACC593A293ADCB253B0A36AB5D19B0DB5CDA088BD282CD8905933F0A9E4977834946088326562594C6655AEA8EA4658F60B4C836B5D6102CEFCED920D3573734310AC7A41FC172F3D8FEA54DE5439AB465445A2B90018569EB4017A2BE18B8048378219DE7FE1E994F6947439B8657D92F302CC6 +se. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SIyfdL+Qn3X0l4YyrMWTopOtyyU7CjarXRmw21zaCIvSgs2JBZM/Cp5Jd4NJRgiDJlYllMZlWuqOpGWPYLTINrXWECzvztkg01c3NDEKx6QfwXLz2P6lTeVDmrRlRForkAGFaetAF6K+GLgEg3ghnef+HplPaUdDm4ZX2S8wLMY= ;{id = 33655} +02736500002E0001000151800093002B08010001518052F4220052EAD970837700BCEC5B859D3144FCD70FCEC7D5FA79D19AB86EF0E5390872A32E050A860FB7FD64F96D97EA9E0DB875AF5A1745977C8EA955B1445E945FCA0362CB377C96D475DAE087D183D3926CDCD410C264755CBAD0B285CEA28BDD95B46826359E1A896CDE0A501DC9E16EE6FE0195727ACE7BF3984BBD8D54ED4CADC949E45B9E033D0B +se. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vOxbhZ0xRPzXD87H1fp50Zq4bvDlOQhyoy4FCoYPt/1k+W2X6p4NuHWvWhdFl3yOqVWxRF6UX8oDYss3fJbUddrgh9GD05Js3NQQwmR1XLrQsoXOoovdlbRoJjWeGols3gpQHcnhbub+AZVyes5785hLvY1U7UytyUnkW54DPQs= ;{id = 33655} +02736500000200010002A30000090161026E7302736500 +se. 172800 IN NS a.ns.se. +02736500000200010002A30000090162026E7302736500 +se. 172800 IN NS b.ns.se. +02736500000200010002A30000090163026E7302736500 +se. 172800 IN NS c.ns.se. +02736500000200010002A30000090164026E7302736500 +se. 172800 IN NS d.ns.se. +02736500000200010002A30000090165026E7302736500 +se. 172800 IN NS e.ns.se. +02736500000200010002A30000090166026E7302736500 +se. 172800 IN NS f.ns.se. +02736500000200010002A30000090167026E7302736500 +se. 172800 IN NS g.ns.se. +02736500000200010002A30000090169026E7302736500 +se. 172800 IN NS i.ns.se. +02736500000200010002A3000009016A026E7302736500 +se. 172800 IN NS j.ns.se. +02736500002B0001000151800024E963050244388B3DE9A22CAFA8A12883F60A0F984472D0DFEF0F63ED59A29BE018658B28 +se. 86400 IN DS 59747 5 2 44388B3DE9A22CAFA8A12883F60A0F984472D0DFEF0F63ED59A29BE018658B28 +0161026E7302736500000100010002A3000004C024906B +a.ns.se. 172800 IN A 192.36.144.107 +0161026E7302736500001C00010002A30000102A0103F0000003010000000000000053 +a.ns.se. 172800 IN AAAA 2a01:3f0:0:301::53 +0162026E7302736500000100010002A3000004C024856B +b.ns.se. 172800 IN A 192.36.133.107 +0162026E7302736500001C00010002A30000102001067C254C03010000000000000053 +b.ns.se. 172800 IN AAAA 2001:67c:254c:301::53 +0163026E7302736500000100010002A3000004C024876B +c.ns.se. 172800 IN A 192.36.135.107 +0163026E7302736500001C00010002A30000102001067C255403010000000000000053 +c.ns.se. 172800 IN AAAA 2001:67c:2554:301::53 +0164026E7302736500000100010002A300000451E40810 +d.ns.se. 172800 IN A 81.228.8.16 +0165026E7302736500000100010002A300000451E40A39 +e.ns.se. 172800 IN A 81.228.10.57 +0166026E7302736500000100010002A3000004C0473535 +f.ns.se. 172800 IN A 192.71.53.53 +0166026E7302736500001C00010002A30000102A0103F0000003050000000000000053 +f.ns.se. 172800 IN AAAA 2a01:3f0:0:305::53 +0167026E7302736500000100010002A300000482EF0572 +g.ns.se. 172800 IN A 130.239.5.114 +0167026E7302736500001C00010002A3000010200106B0000E00030000000000000001 +g.ns.se. 172800 IN AAAA 2001:6b0:e:3::1 +0169026E7302736500000100010002A3000004C2926A16 +i.ns.se. 172800 IN A 194.146.106.22 +0169026E7302736500001C00010002A30000102001067C101000050000000000000053 +i.ns.se. 172800 IN AAAA 2001:67c:1010:5::53 +016A026E7302736500000100010002A3000004C7FE3F01 +j.ns.se. 172800 IN A 199.254.63.1 +016A026E7302736500001C00010002A300001020010500002C00000000000000000001 +j.ns.se. 172800 IN AAAA 2001:500:2c::1 +0573756E69630573756E657402736500000100010002A3000004C0247D02 +sunic.sunet.se. 172800 IN A 192.36.125.2 +0573756E69630573756E657402736500001C00010002A3000010200106B0000700000000000000000002 +sunic.sunet.se. 172800 IN AAAA 2001:6b0:7::2 +047365787900000200010002A30000160161026E730B756E697265676973747279036E657400 +sexy. 172800 IN NS a.ns.uniregistry.net. +047365787900000200010002A300001103746C64076973632D736E7303636F6D00 +sexy. 172800 IN NS tld.isc-sns.com. +047365787900000200010002A300001103746C64076973632D736E73036E657400 +sexy. 172800 IN NS tld.isc-sns.net. +047365787900000200010002A300001203746C64076973632D736E7304696E666F00 +sexy. 172800 IN NS tld.isc-sns.info. +047365787900002B0001000151800018EC8C05014FF0D3A66811E7DB90CD072F2A042EA0C5F03730 +sexy. 86400 IN DS 60556 5 1 4FF0D3A66811E7DB90CD072F2A042EA0C5F03730 +047365787900002B0001000151800024EC8C0502FD746B08B105315B2FE64FB8863BE05DAC75AEB0DFFA84567D1CFD2A621657A4 +sexy. 86400 IN DS 60556 5 2 FD746B08B105315B2FE64FB8863BE05DAC75AEB0DFFA84567D1CFD2A621657A4 +047365787900002E0001000151800093002B08010001518052F4220052EAD9708377002F20889841A2D1865E93B691A8ED9DEC079A2D3939EF749E56C484660604721B35BCF699FC4B7920566F84604C52DD7F423AF33465EDA196F66ACA631D4F35DC4A1E06E597EB55828AC07BB5B053BEEBCA71249AF32F0BAE634750EE678B792B134B5C98DBD99F7460FB1DCEAE5F5E0903E43733B0B70865E1855F72DAEC21D9 +sexy. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . LyCImEGi0YZek7aRqO2d7AeaLTk573SeVsSEZgYEchs1vPaZ/Et5IFZvhGBMUt1/QjrzNGXtoZb2aspjHU813EoeBuWX61WCisB7tbBTvuvKcSSa8y8LrmNHUO5ni3krE0tcmNvZn3Rg+x3Orl9eCQPkNzOwtwhl4YVfctrsIdk= ;{id = 33655} +047365787900002E0001000151800093002F08010001518052F4220052EAD970837700BEB8C358A3D510FA7F071931B53C8310418AAC539FDE3D74AD2774D06717052E17BDE0AE0512AE7A2EEE92CFA7336A721AD35273771A4668B9673BD75B6EDD51981B34BE617F778D3296A1A4888852344A157CDCE5D6803F236E3F0B02058116553A04C2FA97271F1E716067699D574839FB961EDE1C3FD809B5CD692A183675 +sexy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vrjDWKPVEPp/BxkxtTyDEEGKrFOf3j10rSd00GcXBS4XveCuBRKuei7uks+nM2pyGtNSc3caRmi5ZzvXW27dUZgbNL5hf3eNMpahpIiIUjRKFXzc5daAPyNuPwsCBYEWVToEwvqXJx8ecWBnaZ1XSDn7lh7eHD/YCbXNaSoYNnU= ;{id = 33655} +047365787900002F000100015180000C027367000006200000000013 +sexy. 86400 IN NSEC sg. NS DS RRSIG NSEC +02736700000200010002A3000011036E7332046375686B0365647502686B00 +sg. 172800 IN NS ns2.cuhk.edu.hk. +02736700000200010002A300001004736563330561706E6963036E657400 +sg. 172800 IN NS sec3.apnic.net. +02736700000200010002A3000010056473616E790573676E696302736700 +sg. 172800 IN NS dsany.sgnic.sg. +02736700000200010002A30000170573672D6E7307616E796361737403706368036E657400 +sg. 172800 IN NS sg-ns.anycast.pch.net. +02736700002F000100015180000C027368000006200000000003 +sg. 86400 IN NSEC sh. NS RRSIG NSEC +02736700002E0001000151800093002F08010001518052F4220052EAD970837700669CBB6C50484AA2BBA50BB8DE7C03E98A496670A7847C38B4CBD9E92F52E6AB1AB5015A19AC17426172B868FB0859732D72AB5725F52762E0B3037603AE66BFBF11571F0A076B9C38E55E9B51D1AE5CECCAA38B63BA3FBED46E2FA866257EF90464D9BA4A915074F5A3C8B5202073773D80DD1D63F69E7CE9F4AA283A990BCF +sg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zpy7bFBISqK7pQu43nwD6YpJZnCnhHw4tMvZ6S9S5qsatQFaGawXQmFyuGj7CFlzLXKrVyX1J2LgswN2A65mv78RVx8KB2ucOOVem1HRrlzsyqOLY7o/vtRuL6hmJX75BGTZukqRUHT1o8i1ICBzdz2A3R1j9p586fSqKDqZC88= ;{id = 33655} +056473616E790573676E696302736700000100010002A3000004C2000110 +dsany.sgnic.sg. 172800 IN A 194.0.1.16 +056473616E790573676E696302736700001C00010002A300001020010678000400000000000000000010 +dsany.sgnic.sg. 172800 IN AAAA 2001:678:4::10 +02736800000200010002A300000A0161036E696302736800 +sh. 172800 IN NS a.nic.sh. +02736800000200010002A300000C0161046E733133036E657400 +sh. 172800 IN NS a.ns13.net. +02736800000200010002A300000A0162036E696302616300 +sh. 172800 IN NS b.nic.ac. +02736800000200010002A300000A0162036E696302696F00 +sh. 172800 IN NS b.nic.io. +02736800000200010002A300000C0162046E733133036E657400 +sh. 172800 IN NS b.ns13.net. +02736800000200010002A3000016036E73310C636F6D6D756E697479646E73036E657400 +sh. 172800 IN NS ns1.communitydns.net. +02736800000200010002A300000F036E73330369636202636F02756B00 +sh. 172800 IN NS ns3.icb.co.uk. +02736800002B00010001518000180F0607018E142703EAEABD49F84213E72015350CD3D28DF5 +sh. 86400 IN DS 3846 7 1 8E142703EAEABD49F84213E72015350CD3D28DF5 +02736800002B00010001518000240F060702493B17DB412EBBA011AF0E596F2424B25C9379A9960586FFC9A2FB774536DE66 +sh. 86400 IN DS 3846 7 2 493B17DB412EBBA011AF0E596F2424B25C9379A9960586FFC9A2FB774536DE66 +02736800002E0001000151800093002B08010001518052F4220052EAD970837700BED8BC6861C55637451FC4E8A50A5EA3C356A46560E671004444E6AC634CBB4F95C185E207F7BAA369109B63125D617925D5D78135DC1B4F586D907467A0B8697907660EFFF8BDE8C5AB93AA18494FD729C599EB80699588868978088C4252167F7AE58EFA67BF1A1C8A343B1A688EF0D79DB5D0AF5B09691E9199DB4CC21BB3 +sh. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . vti8aGHFVjdFH8TopQpeo8NWpGVg5nEARETmrGNMu0+VwYXiB/e6o2kQm2MSXWF5JdXXgTXcG09YbZB0Z6C4aXkHZg7/+L3oxauTqhhJT9cpxZnrgGmViIaJeAiMQlIWf3rljvpnvxocijQ7GmiO8NedtdCvWwlpHpGZ20zCG7M= ;{id = 33655} +02736800002E0001000151800093002F08010001518052F4220052EAD9708377007AA2B514617F2C22F2BD050F410662D3AD35DA556A8CFA4AA129D860A0AAC39337E68F53ED09519F2124B943D198CD759654CC663CC8AA99FC0D2D30048A97CB959F5D9ADE5C0D578B45348AD448583FA64B3DE493616960A1E97E93CF06BD7FCE81C34087B9A68E089A6A104A47F0E21D1F98A4BA081C4C965F18AE2CE5C772 +sh. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . eqK1FGF/LCLyvQUPQQZi06012lVqjPpKoSnYYKCqw5M35o9T7QlRnyEkuUPRmM11llTMZjzIqpn8DS0wBIqXy5WfXZreXA1Xi0U0itRIWD+mSz3kk2FpYKHpfpPPBr1/zoHDQIe5po4ImmoQSkfw4h0fmKS6CBxMll8Yrizlx3I= ;{id = 33655} +02736800002F0001000151800011077368696B736861000006200000000013 +sh. 86400 IN NSEC shiksha. NS DS RRSIG NSEC +0161036E696302736800000100010002A300000440FB1FB2 +a.nic.sh. 172800 IN A 64.251.31.178 +077368696B73686100000200010002A3000010026130036E6963077368696B73686100 +shiksha. 172800 IN NS a0.nic.shiksha. +077368696B73686100000200010002A3000010026132036E6963077368696B73686100 +shiksha. 172800 IN NS a2.nic.shiksha. +077368696B73686100000200010002A3000010026230036E6963077368696B73686100 +shiksha. 172800 IN NS b0.nic.shiksha. +077368696B73686100000200010002A3000010026330036E6963077368696B73686100 +shiksha. 172800 IN NS c0.nic.shiksha. +077368696B73686100002B00010001518000184B8B0701A8F93C5CA81D7F38880F12CAD5D43F8BC522747C +shiksha. 86400 IN DS 19339 7 1 A8F93C5CA81D7F38880F12CAD5D43F8BC522747C +077368696B73686100002B00010001518000244B8B0702CCDBBE400E7FCE7C2CAF32B1315D1CDF09289E69988ABD89A9E0A4280D0752AD +shiksha. 86400 IN DS 19339 7 2 CCDBBE400E7FCE7C2CAF32B1315D1CDF09289E69988ABD89A9E0A4280D0752AD +077368696B73686100002E0001000151800093002B08010001518052F4220052EAD970837700768222C76B5393A6020331458BC8B13B4BD8C4D80A691C2F43A7F92E673335F7769367C31BC966EEFB54F05EC6CAFA5D31D25E00AB5633B5DC372EDACB74B4F1767C0EF4D42FE1A872DCA047EF721884AC6CE2B7AB5072A325A5E4F9D487F76554A5142BA865861DCFF37AA0203264FFDA2913883ADA17102CB807F5EB973ACF +shiksha. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . doIix2tTk6YCAzFFi8ixO0vYxNgKaRwvQ6f5LmczNfd2k2fDG8lm7vtU8F7GyvpdMdJeAKtWM7XcNy7ay3S08XZ8DvTUL+GoctygR+9yGISsbOK3q1ByoyWl5PnUh/dlVKUUK6hlhh3P83qgIDJk/9opE4g62hcQLLgH9euXOs8= ;{id = 33655} +077368696B73686100002E0001000151800093002F08010001518052F4220052EAD9708377008AE3535DAA1936D653674C82510CBBAB11A0C2C6F3B54BB9E8CC5F7AA74576311D84538C601F949B582E05E54BEE3F63B2BDE861775BE261B3170596870BE38BBC62AA289D3195E4E2E0D2C76F7AD9C8E41E9B9AE10FE32281F4C9E5B28DEE8FDA8912E64645ABBD7F7D5E803E735D035FE6B9E5FE0EC80DFDA7F00A1A8F44C2 +shiksha. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iuNTXaoZNtZTZ0yCUQy7qxGgwsbztUu56MxfeqdFdjEdhFOMYB+Um1guBeVL7j9jsr3oYXdb4mGzFwWWhwvji7xiqiidMZXk4uDSx2962cjkHpua4Q/jIoH0yeWyje6P2okS5kZFq71/fV6APnNdA1/mueX+DsgN/afwChqPRMI= ;{id = 33655} +077368696B73686100002F000100015180000F0573686F6573000006200000000013 +shiksha. 86400 IN NSEC shoes. NS DS RRSIG NSEC +026130036E6963077368696B73686100000100010002A300000441162021 +a0.nic.shiksha. 172800 IN A 65.22.32.33 +026130036E6963077368696B73686100001C00010002A30000102A018840002200000000000000000033 +a0.nic.shiksha. 172800 IN AAAA 2a01:8840:22::33 +026132036E6963077368696B73686100000100010002A300000441162321 +a2.nic.shiksha. 172800 IN A 65.22.35.33 +026132036E6963077368696B73686100001C00010002A30000102A018840002500000000000000000033 +a2.nic.shiksha. 172800 IN AAAA 2a01:8840:25::33 +026230036E6963077368696B73686100000100010002A300000441162121 +b0.nic.shiksha. 172800 IN A 65.22.33.33 +026230036E6963077368696B73686100001C00010002A30000102A018840002300000000000000000033 +b0.nic.shiksha. 172800 IN AAAA 2a01:8840:23::33 +026330036E6963077368696B73686100000100010002A300000441162221 +c0.nic.shiksha. 172800 IN A 65.22.34.33 +026330036E6963077368696B73686100001C00010002A30000102A018840002400000000000000000033 +c0.nic.shiksha. 172800 IN AAAA 2a01:8840:24::33 +0573686F657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +shoes. 172800 IN NS demand.beta.aridns.net.au. +0573686F657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +shoes. 172800 IN NS demand.alpha.aridns.net.au. +0573686F657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +shoes. 172800 IN NS demand.delta.aridns.net.au. +0573686F657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +shoes. 172800 IN NS demand.gamma.aridns.net.au. +0573686F657300002B0001000151800024BDBE0802FFCCEBC433B0B008AB8D3113A3B009D9F399CA666883CCA43D43699C60AA7E61 +shoes. 86400 IN DS 48574 8 2 FFCCEBC433B0B008AB8D3113A3B009D9F399CA666883CCA43D43699C60AA7E61 +0573686F657300002E0001000151800093002B08010001518052F4220052EAD9708377005B225B2863AD13B1AC2B26C7A983EC6F83AF420149DBBE37C50B8C2AD6D6B0ABF26FB2D8F732F51FCF8B2480D20749677EC6DC594C057CE7E0810B54F6388D589D0D69420CBEFA0BB7A34F410FD7C39A09CC85CA00FC3395360E6FD96601340A4C4B33188541133E785A330256B3122840CFCA267B13059D0590EAAE3E7F277D +shoes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WyJbKGOtE7GsKybHqYPsb4OvQgFJ2743xQuMKtbWsKvyb7LY9zL1H8+LJIDSB0lnfsbcWUwFfOfggQtU9jiNWJ0NaUIMvvoLt6NPQQ/Xw5oJzIXKAPwzlTYOb9lmATQKTEszGIVBEz54WjMCVrMSKEDPyiZ7EwWdBZDqrj5/J30= ;{id = 33655} +0573686F657300002E0001000151800093002F08010001518052F4220052EAD97083770069F5D7472DBDB2F214877E2948E954FC70C462DDF8CE5500CC6E4225F13AB47A28E7B8B436ACDD4D2FCDE57B1E608C736FA00E43C61B057F6A3A19F4201F42632AEB67EBB107A408A035C0CF1D0C215314C71D50D9A0D9CBCF35F6F491A4A205BAEF2D4E3B92DC76A1F8E03754A3A9F80F2922B82A1637421059735B286C14AB +shoes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . afXXRy29svIUh34pSOlU/HDEYt34zlUAzG5CJfE6tHoo57i0NqzdTS/N5XseYIxzb6AOQ8YbBX9qOhn0IB9CYyrrZ+uxB6QIoDXAzx0MIVMUxx1Q2aDZy8819vSRpKIFuu8tTjuS3Hah+OA3VKOp+A8pIrgqFjdCEFlzWyhsFKs= ;{id = 33655} +0573686F657300002F000100015180000C027369000006200000000013 +shoes. 86400 IN NSEC si. NS DS RRSIG NSEC +02736900002F00010001518000110773696E676C6573000006200000000013 +si. 86400 IN NSEC singles. NS DS RRSIG NSEC +02736900002E0001000151800093002F08010001518052F4220052EAD97083770070BEBABEAF52D82527F42773B70D45A0F78711583EB73BB56C5EED2B48CA4B2C267CD180CDA7586298D80AAA1D8F6A858B15F2CB0F334368056B74A8F624E1E6A6F514C0C684C7BFACC9E19A96C8B42E416994C37E74458D4CA6BC5AB2024E5C12A68DD16AF362436B4885F4770EF74FA3F665D4C0C3DCCDAD15313BD5984FE5 +si. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cL66vq9S2CUn9Cdztw1FoPeHEVg+tzu1bF7tK0jKSywmfNGAzadYYpjYCqodj2qFixXyyw8zQ2gFa3So9iTh5qb1FMDGhMe/rMnhmpbItC5BaZTDfnRFjUymvFqyAk5cEqaN0WrzYkNrSIX0dw73T6P2ZdTAw9zNrRUxO9WYT+U= ;{id = 33655} +02736900002E0001000151800093002B08010001518052F4220052EAD970837700B5553F32DBE40CE9A55B1D11D7577C095699F285F53EC538608485EFF211EA0806A780A339EBB41ACC5EA73745FB842CCA225B6E7621243EEE5B762E3E11564974CA00F2CD0E0AC92C23703D99D52462712EAC612423D868F8531D1088858B0A512963BA55EF9EF478F09A5A406D0048D20DFCAB3E2BDEEB43D18674371E7D42 +si. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tVU/MtvkDOmlWx0R11d8CVaZ8oX1PsU4YISF7/IR6ggGp4CjOeu0GsxepzdF+4QsyiJbbnYhJD7uW3YuPhFWSXTKAPLNDgrJLCNwPZnVJGJxLqxhJCPYaPhTHRCIhYsKUSljulXvnvR48JpaQG0ASNIN/Ks+K97rQ9GGdDcefUI= ;{id = 33655} +02736900000200010002A300000A016203646E7302736900 +si. 172800 IN NS b.dns.si. +02736900000200010002A300000A016303646E7302736900 +si. 172800 IN NS c.dns.si. +02736900000200010002A300000A016403646E7302736900 +si. 172800 IN NS d.dns.si. +02736900000200010002A300000A016503646E7302736900 +si. 172800 IN NS e.dns.si. +02736900000200010002A300000A016603646E7302736900 +si. 172800 IN NS f.dns.si. +02736900000200010002A300000A016703646E7302736900 +si. 172800 IN NS g.dns.si. +02736900000200010002A300000A016803646E7302736900 +si. 172800 IN NS h.dns.si. +02736900000200010002A300000C0373737303646E7302736900 +si. 172800 IN NS sss.dns.si. +02736900002B0001000151800018456A08017BF07EAD2EBA601C72225CD05C26A8F0A3B37600 +si. 86400 IN DS 17770 8 1 7BF07EAD2EBA601C72225CD05C26A8F0A3B37600 +02736900002B0001000151800024456A0802306AEC05741E1F03BD3B8DD5B4503F338EFF7F8A5F61D9F6EC19A7FB9DE65FB2 +si. 86400 IN DS 17770 8 2 306AEC05741E1F03BD3B8DD5B4503F338EFF7F8A5F61D9F6EC19A7FB9DE65FB2 +036E73320561726E657302736900000100010002A3000004C102015B +ns2.arnes.si. 172800 IN A 193.2.1.91 +036E73320561726E657302736900001C00010002A300001020011470800000000000000000000091 +ns2.arnes.si. 172800 IN AAAA 2001:1470:8000::91 +016203646E7302736900000100010002A3000004C102015B +b.dns.si. 172800 IN A 193.2.1.91 +016203646E7302736900001C00010002A300001020011470800000000000000000000091 +b.dns.si. 172800 IN AAAA 2001:1470:8000::91 +016303646E7302736900000100010002A3000004C05D0004 +c.dns.si. 172800 IN A 192.93.0.4 +016303646E7302736900001C00010002A300001020010660300500010000000000010002 +c.dns.si. 172800 IN AAAA 2001:660:3005:1::1:2 +016403646E7302736900000100010002A3000004823B011E +d.dns.si. 172800 IN A 130.59.1.30 +016403646E7302736900000100010002A3000004823B0A1E +d.dns.si. 172800 IN A 130.59.10.30 +016403646E7302736900001C00010002A300001020010620000000000000000000000001 +d.dns.si. 172800 IN AAAA 2001:620::1 +016503646E7302736900000100010002A30000043FF3C203 +e.dns.si. 172800 IN A 63.243.194.3 +016503646E7302736900001C00010002A3000010200105A0001000000000000000000003 +e.dns.si. 172800 IN AAAA 2001:5a0:10::3 +016603646E7302736900000100010002A3000004C2926A3E +f.dns.si. 172800 IN A 194.146.106.62 +016603646E7302736900001C00010002A30000102001067C101000150000000000000053 +f.dns.si. 172800 IN AAAA 2001:67c:1010:15::53 +016703646E7302736900000100010002A3000004C2000114 +g.dns.si. 172800 IN A 194.0.1.20 +016703646E7302736900001C00010002A300001020010678000400000000000000000014 +g.dns.si. 172800 IN AAAA 2001:678:4::14 +016803646E7302736900000100010002A3000004CC3DD836 +h.dns.si. 172800 IN A 204.61.216.54 +016803646E7302736900001C00010002A3000010200105000014605400AD000000000001 +h.dns.si. 172800 IN AAAA 2001:500:14:6054:ad::1 +0373737303646E7302736900000100010002A3000004515BA165 +sss.dns.si. 172800 IN A 81.91.161.101 +0773696E676C657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +singles. 172800 IN NS demand.beta.aridns.net.au. +0773696E676C657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +singles. 172800 IN NS demand.alpha.aridns.net.au. +0773696E676C657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +singles. 172800 IN NS demand.delta.aridns.net.au. +0773696E676C657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +singles. 172800 IN NS demand.gamma.aridns.net.au. +0773696E676C657300002B000100015180002430430802639127B308DF1CA7A0F1CF1876BA0F72668A75E5816BEF29D256BF54E47A3D8E +singles. 86400 IN DS 12355 8 2 639127B308DF1CA7A0F1CF1876BA0F72668A75E5816BEF29D256BF54E47A3D8E +0773696E676C657300002E0001000151800093002B08010001518052F4220052EAD970837700894E8FA4D7D647CA4358D42A7C5115C836290738ABF3D89449F57C4841AE9095104CCD01A43A81519DB8ABCA449961A36E719858180C48CBAE4632F9444A2189E1113303D25795E8EE5D6C17FB65F2600252B4BCEAD8AF70097D04877737CC2C8DA24B2E1B02F7207B0F7F99B08C6638A053A19FBE48EE8DF69C4454D1F948BD +singles. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . iU6PpNfWR8pDWNQqfFEVyDYpBzir89iUSfV8SEGukJUQTM0BpDqBUZ24q8pEmWGjbnGYWBgMSMuuRjL5REohieERMwPSV5Xo7l1sF/tl8mACUrS86tivcAl9BId3N8wsjaJLLhsC9yB7D3+ZsIxmOKBToZ++SO6N9pxEVNH5SL0= ;{id = 33655} +0773696E676C657300002E0001000151800093002F08010001518052F4220052EAD97083770045EF331794C30FD45A74FDCE80323F7C4874C49BDC13BF2C403A4452001C6679506433F65216DC4C4221BD4A7B99EF1AB2F312CC1AF0B83949BD6EFF20EF67F55620E6A395276942D602E97747EF3FC3A49EB0E3A93C5322918D130689D1D53DA697172B3433DC73825C744AC77B2F8B05A038643E497BA070FD50F0CBF5D672 +singles. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Re8zF5TDD9RadP3OgDI/fEh0xJvcE78sQDpEUgAcZnlQZDP2UhbcTEIhvUp7me8asvMSzBrwuDlJvW7/IO9n9VYg5qOVJ2lC1gLpd0fvP8OknrDjqTxTIpGNEwaJ0dU9ppcXKzQz3HOCXHRKx3sviwWgOGQ+SXugcP1Q8Mv11nI= ;{id = 33655} +0773696E676C657300002F000100015180000C02736A000006200000000013 +singles. 86400 IN NSEC sj. NS DS RRSIG NSEC +02736A00000200010002A300000F026E6E07756E696E657474026E6F00 +sj. 172800 IN NS nn.uninett.no. +02736A00000200010002A3000008036E6163026E6F00 +sj. 172800 IN NS nac.no. +02736A00000200010002A300001206736572766572056E6F726475036E657400 +sj. 172800 IN NS server.nordu.net. +02736A00002F000100015180000C02736B000006200000000003 +sj. 86400 IN NSEC sk. NS RRSIG NSEC +02736A00002E0001000151800093002F08010001518052F4220052EAD97083770031C136F8B29AF6B95253EAF4DF43CE9B48F206AF8630DBD65B8D29D104A719A5FEC6848E9B6A7EE3B3D7B7D03FB359C6EDD000BF5398BFB55575DAFADA1AB5E287EEBC7862E0FF4CC8CED371AD30CB8694571BB9887C4D3AF4805E42992E43EA5E66E3B0FE0850B98110BC0E072C8551E55246744C9A57D29AA0821A9226A51C +sj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . McE2+LKa9rlSU+r030POm0jyBq+GMNvWW40p0QSnGaX+xoSOm2p+47PXt9A/s1nG7dAAv1OYv7VVddr62hq14ofuvHhi4P9MyM7Tca0wy4aUVxu5iHxNOvSAXkKZLkPqXmbjsP4IULmBELwOByyFUeVSRnRMmlfSmqCCGpImpRw= ;{id = 33655} +02736B00000200010002A300000A016103746C6402736B00 +sk. 172800 IN NS a.tld.sk. +02736B00000200010002A300000A016303746C6402736B00 +sk. 172800 IN NS c.tld.sk. +02736B00000200010002A300000D026E730565756E657402736B00 +sk. 172800 IN NS ns.eunet.sk. +02736B00000200010002A300000E026E7306736B2D6E696302736B00 +sk. 172800 IN NS ns.sk-nic.sk. +02736B00000200010002A300000F036E733106736B2D6E696302736B00 +sk. 172800 IN NS ns1.sk-nic.sk. +02736B00000200010002A300000F036E733306736B2D6E696302736B00 +sk. 172800 IN NS ns3.sk-nic.sk. +02736B00000200010002A300001006736E732D706203697363036F726700 +sk. 172800 IN NS sns-pb.isc.org. +02736B00002F000100015180000C02736C000006200000000003 +sk. 86400 IN NSEC sl. NS RRSIG NSEC +02736B00002E0001000151800093002F08010001518052F4220052EAD9708377008760DE57803C059396DC881D1CF2228AA836E73C6A8CBC3F00F194EEDB54DDC266F0C0F412EB5C69F51C002AE7FD817765879FAA23C945AF5FAD1FF2A34BB65F2489F57B19B516025FC53DF8D413014976370B6FC22657B2F1A30943AE543E5100E486E46DD2EA7F41EA506E1E2D7E6FD26CEBFB4B8B84CBAC18AA2B6A6D40BA +sk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . h2DeV4A8BZOW3IgdHPIiiqg25zxqjLw/APGU7ttU3cJm8MD0EutcafUcACrn/YF3ZYefqiPJRa9frR/yo0u2XySJ9XsZtRYCX8U9+NQTAUl2NwtvwiZXsvGjCUOuVD5RAOSG5G3S6n9B6lBuHi1+b9Js6/tLi4TLrBiqK2ptQLo= ;{id = 33655} +026E730565756E657402736B00000100010002A3000004D94B49F2 +ns.eunet.sk. 172800 IN A 217.75.73.242 +026E7306736B2D6E696302736B00000100010002A3000004C30C9F02 +ns.sk-nic.sk. 172800 IN A 195.12.159.2 +036E733106736B2D6E696302736B00000100010002A3000004C30C9F03 +ns1.sk-nic.sk. 172800 IN A 195.12.159.3 +036E733306736B2D6E696302736B00000100010002A3000004D94B43EA +ns3.sk-nic.sk. 172800 IN A 217.75.67.234 +016103746C6402736B00000100010002A3000004C2002D01 +a.tld.sk. 172800 IN A 194.0.45.1 +016103746C6402736B00001C00010002A300001020010678007000000000000000000001 +a.tld.sk. 172800 IN AAAA 2001:678:70::1 +016303746C6402736B00000100010002A3000004D94B489D +c.tld.sk. 172800 IN A 217.75.72.157 +016303746C6402736B00001C00010002A30000102A020770010001000000000000000101 +c.tld.sk. 172800 IN AAAA 2a02:770:100:100::101 +02736C00000200010002A300000F036E7331056E656F697003636F6D00 +sl. 172800 IN NS ns1.neoip.com. +02736C00000200010002A300000F036E7332056E656F697003636F6D00 +sl. 172800 IN NS ns2.neoip.com. +02736C00002F000100015180000C02736D000006200000000003 +sl. 86400 IN NSEC sm. NS RRSIG NSEC +02736C00002E0001000151800093002F08010001518052F4220052EAD9708377000ED9F89F1DFE27BD9E97FB01CD84FF17DBC292131EF6FCFD8D6E2D0B2819C4E14D33E1A6EA32FFA029FC2FFA86D0DCA4FC3668D56C5AAD4B69543E049CEB37C4BD69FDC3E3CA0AEFEFF462DF637F343A298357C003D3F162EC74F7A9FF48A09E301DC0BAFCC32723DF404B52870F127787EDF34AD8A36E5C0BC50F11DE375034 +sl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Dtn4nx3+J72el/sBzYT/F9vCkhMe9vz9jW4tCygZxOFNM+Gm6jL/oCn8L/qG0Nyk/DZo1WxarUtpVD4EnOs3xL1p/cPjygrv7/Ri32N/NDopg1fAA9PxYux096n/SKCeMB3AuvzDJyPfQEtShw8Sd4ft80rYo25cC8UPEd43UDQ= ;{id = 33655} +02736D00000200010002A300001B02736D056363746C640761757468646E730472697065036E657400 +sm. 172800 IN NS sm.cctld.authdns.ripe.net. +02736D00000200010002A300001003646E73076F6D6E6977617902736D00 +sm. 172800 IN NS dns.omniway.sm. +02736D00000200010002A300001103646E7308696E74656C636F6D02736D00 +sm. 172800 IN NS dns.intelcom.sm. +02736D00000200010002A3000016036E73330D74656C65636F6D6974616C696102736D00 +sm. 172800 IN NS ns3.telecomitalia.sm. +02736D00002F000100015180000C02736E000006200000000003 +sm. 86400 IN NSEC sn. NS RRSIG NSEC +02736D00002E0001000151800093002F08010001518052F4220052EAD97083770002EF52370D32619DFA8F173A34F78C34EEFC47258848AAAA11EE03C2731E7EE1FC20488FFFB3034463CEC168508514699CD9078A1DAC79E71BA13C4470CEA9E3F40CB121253DF4E6046699E959492DE6B15DE03C710C20B1B00E7FC90AD391F6EA09062DCCF8EFAD081F358717917FAE0C3E49219DD7F8A39F637A33C8CB1AA0 +sm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Au9SNw0yYZ36jxc6NPeMNO78RyWISKqqEe4DwnMefuH8IEiP/7MDRGPOwWhQhRRpnNkHih2seecboTxEcM6p4/QMsSElPfTmBGaZ6VlJLeaxXeA8cQwgsbAOf8kK05H26gkGLcz4760IHzWHF5F/rgw+SSGd1/ijn2N6M8jLGqA= ;{id = 33655} +03646E7308696E74656C636F6D02736D00000100010002A3000004C2B7400B +dns.intelcom.sm. 172800 IN A 194.183.64.11 +03646E73076F6D6E6977617902736D00000100010002A3000004C2B7400A +dns.omniway.sm. 172800 IN A 194.183.64.10 +036E73330D74656C65636F6D6974616C696102736D00000100010002A3000004C2001B0C +ns3.telecomitalia.sm. 172800 IN A 194.0.27.12 +036E73330D74656C65636F6D6974616C696102736D00001C00010002A3000010200106780028000000C200B700400012 +ns3.telecomitalia.sm. 172800 IN AAAA 2001:678:28:0:c2:b7:40:12 +02736E00000200010002A300000C026E73047563616402736E00 +sn. 172800 IN NS ns.ucad.sn. +02736E00000200010002A300001B02736E056363746C640761757468646E730472697065036E657400 +sn. 172800 IN NS sn.cctld.authdns.ripe.net. +02736E00000200010002A300000C036E73310369726402667200 +sn. 172800 IN NS ns1.ird.fr. +02736E00000200010002A3000010036E733107736F6E6174656C02736E00 +sn. 172800 IN NS ns1.sonatel.sn. +02736E00000200010002A300000C036E7333036E696302667200 +sn. 172800 IN NS ns3.nic.fr. +02736E00002F000100015180000C02736F000006200000000003 +sn. 86400 IN NSEC so. NS RRSIG NSEC +02736E00002E0001000151800093002F08010001518052F4220052EAD9708377001D08BE72CF6C00F4D9DE4783543097B72AA4A87DF22714F274C2E36F64DE4FDE898ED9186C8EE092890A9F6168E17EEF4C844A4FEE5EC610978C73A70C9BBB7F8EE97820F3E81FDD9F21B18A7B2D67208C9B9762D7552773B9B35A8014D3E8D96637B371DC2527C1557AF1463D127B9BDE10E46BC8D07EEE317AF36645FC0523 +sn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . HQi+cs9sAPTZ3keDVDCXtyqkqH3yJxTydMLjb2TeT96JjtkYbI7gkokKn2Fo4X7vTIRKT+5exhCXjHOnDJu7f47peCDz6B/dnyGxinstZyCMm5di11Unc7mzWoAU0+jZZjezcdwlJ8FVevFGPRJ7m94Q5GvI0H7uMXrzZkX8BSM= ;{id = 33655} +036E733107736F6E6174656C02736E00000100010002A3000004D59A400B +ns1.sonatel.sn. 172800 IN A 213.154.64.11 +026E73047563616402736E00000100010002A3000004C4015F01 +ns.ucad.sn. 172800 IN A 196.1.95.1 +02736F00000200010002A300000A0161036E696302736F00 +so. 172800 IN NS a.nic.so. +02736F00000200010002A300000A0162036E696302736F00 +so. 172800 IN NS b.nic.so. +02736F00000200010002A300000A0163036E696302736F00 +so. 172800 IN NS c.nic.so. +02736F00002F000100015180001006736F6369616C000006200000000003 +so. 86400 IN NSEC social. NS RRSIG NSEC +02736F00002E0001000151800093002F08010001518052F4220052EAD970837700B581DB676CD51D398F5C15956D04AB0C2427D87F26CAA936828EAD2B3CC706D235382D28B1640E73FCA6E3AC74E8689425649DD93D646764592A1BFB7D62BAA49868886506A292DC7CDC63BF6B9AAD36AD184EFDB6BDFD5D4265099FEDFF3F52ADFE0152AAC3145FAFBCD7E2071817B6A4C32284A248A9AC1FB29B45838A943F +so. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tYHbZ2zVHTmPXBWVbQSrDCQn2H8myqk2go6tKzzHBtI1OC0osWQOc/ym46x06GiUJWSd2T1kZ2RZKhv7fWK6pJhoiGUGopLcfNxjv2uarTatGE79tr39XUJlCZ/t/z9Srf4BUqrDFF+vvNfiBxgXtqTDIoSiSKmsH7KbRYOKlD8= ;{id = 33655} +0161036E696302736F00000100010002A300000448344704 +a.nic.so. 172800 IN A 72.52.71.4 +0161036E696302736F00001C00010002A300001020010470001A00000000000000000004 +a.nic.so. 172800 IN AAAA 2001:470:1a::4 +0162036E696302736F00000100010002A300000426670204 +b.nic.so. 172800 IN A 38.103.2.4 +0163036E696302736F00000100010002A30000043FF3C204 +c.nic.so. 172800 IN A 63.243.194.4 +0163036E696302736F00001C00010002A3000010200105A0001000000000000000000004 +c.nic.so. 172800 IN AAAA 2001:5a0:10::4 +06736F6369616C00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +social. 172800 IN NS demand.beta.aridns.net.au. +06736F6369616C00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +social. 172800 IN NS demand.alpha.aridns.net.au. +06736F6369616C00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +social. 172800 IN NS demand.delta.aridns.net.au. +06736F6369616C00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +social. 172800 IN NS demand.gamma.aridns.net.au. +06736F6369616C00002B0001000151800024051408028A42E9D39037DF3605E4DD07BEEA497B9C181FF38AA148FB712DB03C03BEA8AE +social. 86400 IN DS 1300 8 2 8A42E9D39037DF3605E4DD07BEEA497B9C181FF38AA148FB712DB03C03BEA8AE +06736F6369616C00002E0001000151800093002B08010001518052F4220052EAD970837700105A9994E4BD8833248B3FE628862D522618F3DDF767D97F3499C58C4F22D059B3CDDA0D7DE3D0551E4E8F3F11B2D553284D5603D9566758BD0B64C44EF050F8E8ABF93A1901F42F42936A02474EF37BBC461237191E4721E143FAA7397E5DD4A0FE7B8158039B808AA920AA6FC07BBD49A480F235B6192F055F268E582E4C29 +social. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . EFqZlOS9iDMkiz/mKIYtUiYY8933Z9l/NJnFjE8i0FmzzdoNfePQVR5Ojz8RstVTKE1WA9lWZ1i9C2TETvBQ+Oir+ToZAfQvQpNqAkdO83u8RhI3GR5HIeFD+qc5fl3UoP57gVgDm4CKqSCqb8B7vUmkgPI1thkvBV8mjlguTCk= ;{id = 33655} +06736F6369616C00002E0001000151800093002F08010001518052F4220052EAD970837700B03DE83F47941BA88EC2235D4AB1A039F9A59E04F5D9D15839A22F402FADEF831DCB4689DA3D820E061D87361207569E35BFE70FB31177CA69E3DC28ECFA0E028C51653E8539A41090D102350D06186F83BC0330F818357725BD24E737A04B9057D6F1E5E67A39BA9CD0D1CA76AEA2735E5722661A4849562B9E50A988B848DE +social. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sD3oP0eUG6iOwiNdSrGgOfmlngT12dFYOaIvQC+t74Mdy0aJ2j2CDgYdhzYSB1aeNb/nD7MRd8pp49wo7PoOAoxRZT6FOaQQkNECNQ0GGG+DvAMw+Bg1dyW9JOc3oEuQV9bx5eZ6Obqc0NHKdq6ic15XImYaSElWK55QqYi4SN4= ;{id = 33655} +06736F6369616C00002F000100015180000F05736F6C6172000006200000000013 +social. 86400 IN NSEC solar. NS DS RRSIG NSEC +05736F6C617200000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +solar. 172800 IN NS demand.beta.aridns.net.au. +05736F6C617200000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +solar. 172800 IN NS demand.alpha.aridns.net.au. +05736F6C617200000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +solar. 172800 IN NS demand.delta.aridns.net.au. +05736F6C617200000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +solar. 172800 IN NS demand.gamma.aridns.net.au. +05736F6C617200002B00010001518000241A530802E72104FA55B919CFAC81D28277FE041BACA75957A0E530FC83827195C5FF89DF +solar. 86400 IN DS 6739 8 2 E72104FA55B919CFAC81D28277FE041BACA75957A0E530FC83827195C5FF89DF +05736F6C617200002E0001000151800093002B08010001518052F4220052EAD9708377000BE7D3BDBB1E37BBAC7EF2198F3B214F1113F739D43BB9D018E0C8D927B623791E73F2762ACC90483068E4142D82B1C2AC6AA284B4C1EF77EC84D9ED113C7C1BFD91241E53A1E2B756CD3EA1EFDEA122838ADF3DAD0DB818578AF8A396D1EFA79369AA5BA239B4C62575C2C358229F46E50817672E6A00E7F3791539C7285856 +solar. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . C+fTvbseN7usfvIZjzshTxET9znUO7nQGODI2Se2I3kec/J2KsyQSDBo5BQtgrHCrGqihLTB73fshNntETx8G/2RJB5ToeK3Vs0+oe/eoSKDit89rQ24GFeK+KOW0e+nk2mqW6I5tMYldcLDWCKfRuUIF2cuagDn83kVOccoWFY= ;{id = 33655} +05736F6C617200002E0001000151800093002F08010001518052F4220052EAD97083770070EDF26F2648C3335FFC667BC1C7FE57E08DFEC0C1D05CE492B1E610AB711269738D906E843B71347DD2623C77AEC9EB1F95266D390202BACE4B90FF91558747ED86ED7176F77098F13E3239127FA6E2F2CE61CFD628F566614A409BBEEFD0064CB9BA3681086CFC97EC9167F0C9B4268688818A45D904555D74A78776ACDEFC +solar. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cO3ybyZIwzNf/GZ7wcf+V+CN/sDB0FzkkrHmEKtxEmlzjZBuhDtxNH3SYjx3rsnrH5UmbTkCArrOS5D/kVWHR+2G7XF293CY8T4yORJ/puLyzmHP1ij1ZmFKQJu+79AGTLm6NoEIbPyX7JFn8Mm0JoaIgYpF2QRVXXSnh3as3vw= ;{id = 33655} +05736F6C617200002F000100015180001309736F6C7574696F6E73000006200000000013 +solar. 86400 IN NSEC solutions. NS DS RRSIG NSEC +09736F6C7574696F6E7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +solutions. 172800 IN NS demand.beta.aridns.net.au. +09736F6C7574696F6E7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +solutions. 172800 IN NS demand.alpha.aridns.net.au. +09736F6C7574696F6E7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +solutions. 172800 IN NS demand.delta.aridns.net.au. +09736F6C7574696F6E7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +solutions. 172800 IN NS demand.gamma.aridns.net.au. +09736F6C7574696F6E7300002B0001000151800024E18E08026536350D40C0AA3DBF8A29604A2291F89966BFC74C363E99D75733885B8AAA49 +solutions. 86400 IN DS 57742 8 2 6536350D40C0AA3DBF8A29604A2291F89966BFC74C363E99D75733885B8AAA49 +09736F6C7574696F6E7300002E0001000151800093002B08010001518052F4220052EAD970837700432BA7FA95415F03E4B145A8DBA64E377A2F0D59C7AFE63FC0F612462E204C596099F33D70D61DF3A449685DCEF1ECE97BA18857097E966444FF84A59C74773DBD34121DE49E6B4A76C2C205A6F6BBABB4172B3E2C701B2B707C9CF4CF5DFD97585C299AC67CBCF7D90BAD60F3D9365288DB8BD12D27DBB25CE176596D4BD8FA +solutions. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Qyun+pVBXwPksUWo26ZON3ovDVnHr+Y/wPYSRi4gTFlgmfM9cNYd86RJaF3O8ezpe6GIVwl+lmRE/4SlnHR3Pb00Eh3knmtKdsLCBab2u6u0Fys+LHAbK3B8nPTPXf2XWFwpmsZ8vPfZC61g89k2Uojbi9EtJ9uyXOF2WW1L2Po= ;{id = 33655} +09736F6C7574696F6E7300002E0001000151800093002F08010001518052F4220052EAD9708377002BAB820DB30B6F8CA8B806BBA0636DA76780C6F24207A7B53497651526AAA734B5AD2EA0446759E66EA8FF8B39A7EBB165261A2F20066C0D83D3E62C8D1584A989EF76A20D400C185B3FA931C149A6D69E1CD41178B1051E20905967D2EE429B132B8286F6CDB16FF225DFECB5FDB25FB7774EFC1FAB030B7231D29F0F9B594D +solutions. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K6uCDbMLb4youAa7oGNtp2eAxvJCB6e1NJdlFSaqpzS1rS6gRGdZ5m6o/4s5p+uxZSYaLyAGbA2D0+YsjRWEqYnvdqINQAwYWz+pMcFJptaeHNQReLEFHiCQWWfS7kKbEyuChvbNsW/yJd/stf2yX7d3TvwfqwMLcjHSnw+bWU0= ;{id = 33655} +09736F6C7574696F6E7300002F000100015180000C027372000006200000000013 +solutions. 86400 IN NSEC sr. NS DS RRSIG NSEC +02737200000200010002A300000C036E7331027372036E657400 +sr. 172800 IN NS ns1.sr.net. +02737200000200010002A300000C036E7332027372036E657400 +sr. 172800 IN NS ns2.sr.net. +02737200002F000100015180000C027374000006200000000003 +sr. 86400 IN NSEC st. NS RRSIG NSEC +02737200002E0001000151800093002F08010001518052F4220052EAD970837700915B45E6052E74805B00C1F875F4BACD01F71900F8C3120928F7409EE4CF4020FB46CF6EC1805AB158D1ACA16799E5FA60E479CE64B56758DBA6F31C6AA40E5DCFE948D0853126C247B1A8C55C7DE5D4E7C70CA0EC3FE758ECFAE1241C92ADB7FF36BB9BA7A25410389111BC89E1427CE3B5C06C5FACD56C6E95D0D8DBA07C80 +sr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kVtF5gUudIBbAMH4dfS6zQH3GQD4wxIJKPdAnuTPQCD7Rs9uwYBasVjRrKFnmeX6YOR5zmS1Z1jbpvMcaqQOXc/pSNCFMSbCR7GoxVx95dTnxwyg7D/nWOz64SQckq23/za7m6eiVBA4kRG8ieFCfOO1wGxfrNVsbpXQ2NugfIA= ;{id = 33655} +02737400000200010002A3000011036E7331076261686E686F66036E657400 +st. 172800 IN NS ns1.bahnhof.net. +02737400000200010002A300000B06646E732D617502737400 +st. 172800 IN NS dns-au.st. +02737400000200010002A300001406646E732D7374076261686E686F66036E657400 +st. 172800 IN NS dns-st.bahnhof.net. +02737400000200010002A300000B06646E732D757302737400 +st. 172800 IN NS dns-us.st. +02737400002F000100015180000C027375000006200000000003 +st. 86400 IN NSEC su. NS RRSIG NSEC +02737400002E0001000151800093002F08010001518052F4220052EAD9708377007CCF2457F3029D404CF38C98D44D2B457E66B1FE1B0702B76F8147D8C74C388194C9CFC116B8B22E8ECC070C1772B4E3F95CC21347DE1FDED1F4A53DD6BA4223AF6DFDCFE61C7D302FA44A57BCDAED1B3A53B7FA590AE04E5594FBA5359088728C76ECCF51FA7ADFBAF981034C4B52CDF8296829DAD50DE0D19F503B697B2012 +st. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fM8kV/MCnUBM84yY1E0rRX5msf4bBwK3b4FH2MdMOIGUyc/BFriyLo7MBwwXcrTj+VzCE0feH97R9KU91rpCI69t/c/mHH0wL6RKV7za7Rs6U7f6WQrgTlWU+6U1kIhyjHbsz1H6et+6+YEDTEtSzfgpaCna1Q3g0Z9QO2l7IBI= ;{id = 33655} +06646E732D617502737400000100010002A300000477FCBC61 +dns-au.st. 172800 IN A 119.252.188.97 +06646E732D757302737400000100010002A3000004C669DF43 +dns-us.st. 172800 IN A 198.105.223.67 +02737500002F000100015180001107737570706F7274000006200000000013 +su. 86400 IN NSEC support. NS DS RRSIG NSEC +02737500002E0001000151800093002F08010001518052F4220052EAD9708377005DAA67DD873DDEB8046C817D9FCDC37085344AF7494CC64D5674BDF36DB7508FAC28CD633B7279A72CD8994E437499FE28253DBD86662EDEE8BB573A5F4FD1A1150D478A5B0D90E51E073EEBCFD8CB7F700BAAAF03A66DB2DFAA09E6FA3ECCEBC81F1000B5B1A720EFB1F400D13B3721E4D73A25DBA971DC48C45C48D69EA139 +su. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Xapn3Yc93rgEbIF9n83DcIU0SvdJTMZNVnS98223UI+sKM1jO3J5pyzYmU5DdJn+KCU9vYZmLt7ou1c6X0/RoRUNR4pbDZDlHgc+68/Yy39wC6qvA6Ztst+qCeb6PszryB8QALWxpyDvsfQA0Ts3IeTXOiXbqXHcSMRcSNaeoTk= ;{id = 33655} +02737500002E0001000151800093002B08010001518052F4220052EAD970837700A0F54EE8C1B6316F8C8FDD5E0C3540CB4854C056DA90E3299BF03FB013A74F674346ACD391506187D65EFF089ACDE9B889F4255B75F44DE90D1EDC95C4A4C58263A29350AAC629DC1A00C47DD5467A4E474917357ECDB6C3786DA5019DF3B10EF7E6864050C7E37542B0201E0B89909E5755B156F8BDCA288DC361B1A92DBA0A +su. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . oPVO6MG2MW+Mj91eDDVAy0hUwFbakOMpm/A/sBOnT2dDRqzTkVBhh9Ze/wiazem4ifQlW3X0TekNHtyVxKTFgmOik1CqxincGgDEfdVGek5HSRc1fs22w3htpQGd87EO9+aGQFDH43VCsCAeC4mQnldVsVb4vcoojcNhsaktugo= ;{id = 33655} +02737500000200010002A3000010016103646E73047269706E036E657400 +su. 172800 IN NS a.dns.ripn.net. +02737500000200010002A3000010016203646E73047269706E036E657400 +su. 172800 IN NS b.dns.ripn.net. +02737500000200010002A3000010016403646E73047269706E036E657400 +su. 172800 IN NS d.dns.ripn.net. +02737500000200010002A3000010016503646E73047269706E036E657400 +su. 172800 IN NS e.dns.ripn.net. +02737500000200010002A3000010016603646E73047269706E036E657400 +su. 172800 IN NS f.dns.ripn.net. +02737500002B00010001518000243EE50702951F84877CC34730CCF3DBDB0692BBCDE8E41529A88CD1BDBFEE41D5E629B284 +su. 86400 IN DS 16101 7 2 951F84877CC34730CCF3DBDB0692BBCDE8E41529A88CD1BDBFEE41D5E629B284 +026E730564656D6F7302737500000100010002A3000004C2570008 +ns.demos.su. 172800 IN A 194.87.0.8 +026E730564656D6F7302737500000100010002A3000004C2570009 +ns.demos.su. 172800 IN A 194.87.0.9 +07737570706F727400000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +support. 172800 IN NS demand.beta.aridns.net.au. +07737570706F727400000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +support. 172800 IN NS demand.alpha.aridns.net.au. +07737570706F727400000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +support. 172800 IN NS demand.delta.aridns.net.au. +07737570706F727400000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +support. 172800 IN NS demand.gamma.aridns.net.au. +07737570706F727400002B0001000151800024C24D080207B35DA2B3CDC8457A2532E0893F20672414C797E96731377F7BB87B3ED70AA5 +support. 86400 IN DS 49741 8 2 07B35DA2B3CDC8457A2532E0893F20672414C797E96731377F7BB87B3ED70AA5 +07737570706F727400002E0001000151800093002B08010001518052F4220052EAD9708377003BED2866080E5A3C7E50ADEC0C63350E1050F8EB059AE702C23DF27A8CC02FBB72E303DDA5C8460BD4A411764BDA7D75FE25ADE34554EC20E6FDE491938B635118C4E71D10FA6EA3E5C9172CE68BBC57434B55CF35016C99ADF7EED460A6EFB5AC5B42AE5E83499107BD03F534E2CBBD2E77738BE6466C24AFF6C28753B98341 +support. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . O+0oZggOWjx+UK3sDGM1DhBQ+OsFmucCwj3yeozAL7ty4wPdpchGC9SkEXZL2n11/iWt40VU7CDm/eSRk4tjURjE5x0Q+m6j5ckXLOaLvFdDS1XPNQFsma337tRgpu+1rFtCrl6DSZEHvQP1NOLLvS53c4vmRmwkr/bCh1O5g0E= ;{id = 33655} +07737570706F727400002E0001000151800093002F08010001518052F4220052EAD97083770081F2121A041C87EDB999A70B518F929404EB19E58897C25498B49305ED14596311D7731945E06D459287DB86DC6F6E24A3419AD742C3462D7632A941708D86D79C8A9273C638DF82BE9E1B6A561E75DE49F6CD5E298AC30E7B588609FE2FDDFAC39D0F187388E4629F65558FE2A451253EDCB63B5A599ECC5834F97611339509 +support. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gfISGgQch+25macLUY+SlATrGeWIl8JUmLSTBe0UWWMR13MZReBtRZKH24bcb24ko0Ga10LDRi12MqlBcI2G15yKknPGON+Cvp4balYedd5J9s1eKYrDDntYhgn+L936w50PGHOI5GKfZVWP4qRRJT7ctjtaWZ7MWDT5dhEzlQk= ;{id = 33655} +07737570706F727400002F000100015180000C027376000006200000000013 +support. 86400 IN NSEC sv. NS DS RRSIG NSEC +02737600000200010002A3000007026E7302637200 +sv. 172800 IN NS ns.cr. +02737600000200010002A300000B026E73027575036E657400 +sv. 172800 IN NS ns.uu.net. +02737600000200010002A300000B026E7303646E7302627200 +sv. 172800 IN NS ns.dns.br. +02737600000200010002A300001B027376056363746C640761757468646E730472697065036E657400 +sv. 172800 IN NS sv.cctld.authdns.ripe.net. +02737600000200010002A300000C036369720372656402737600 +sv. 172800 IN NS cir.red.sv. +02737600000200010002A300001206617574683032026E73027575036E657400 +sv. 172800 IN NS auth02.ns.uu.net. +02737600002F000100015180000C027378000006200000000003 +sv. 86400 IN NSEC sx. NS RRSIG NSEC +02737600002E0001000151800093002F08010001518052F4220052EAD970837700BD05B46F2F3B312F670E190AFA3A6305529A0E6E9DFBB2BF5F143D5D02357B947C71BE901DFDCDBD2EA36AB7812ED48EAD9CE407DC48595D259FA8125CABC018D702389733C9673A3693E200622E866353AF3B5CECBFFADD1C0527F0631F706A4BE09309AB26541BF272D1B9A6E1D0023CDBB4D96BE3F85CE19A7A5BC80D06E5 +sv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . vQW0by87MS9nDhkK+jpjBVKaDm6d+7K/XxQ9XQI1e5R8cb6QHf3NvS6jareBLtSOrZzkB9xIWV0ln6gSXKvAGNcCOJczyWc6NpPiAGIuhmNTrztc7L/63RwFJ/BjH3BqS+CTCasmVBvyctG5puHQAjzbtNlr4/hc4Zp6W8gNBuU= ;{id = 33655} +036369720372656402737600000100010002A3000004A8F3FE01 +cir.red.sv. 172800 IN A 168.243.254.1 +02737800000200010002A30000090161026E7302737800 +sx. 172800 IN NS a.ns.sx. +02737800000200010002A30000090162026E7302737800 +sx. 172800 IN NS b.ns.sx. +02737800000200010002A30000090163026E7302737800 +sx. 172800 IN NS c.ns.sx. +02737800002B0001000151800018E77B07017D8C002AC87627953A66C8145C2EBBEB13B8AE64 +sx. 86400 IN DS 59259 7 1 7D8C002AC87627953A66C8145C2EBBEB13B8AE64 +02737800002B0001000151800024E77B070281CE2B07704CD91951A7AD5A7E88B4426AE57952AE9511521169800FEA137869 +sx. 86400 IN DS 59259 7 2 81CE2B07704CD91951A7AD5A7E88B4426AE57952AE9511521169800FEA137869 +02737800002E0001000151800093002B08010001518052F4220052EAD97083770095ABF7CEA5005A6042DEE9969AF067A1818E21D69AB00177F86FF41B8E49616745921AAA909C6B9BF9A2FF763E93C205F9B5F0C57DAF53E18D45C0E432250107A719D5AF417D1438B5F7F02C8BE038D5CC3BED7B1B787A697D85B3E5338B29BC22805B9E28ACC25F735C7E301ACA173F55A277627D72C3D9CF786CEFC463C837 +sx. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lav3zqUAWmBC3umWmvBnoYGOIdaasAF3+G/0G45JYWdFkhqqkJxrm/mi/3Y+k8IF+bXwxX2vU+GNRcDkMiUBB6cZ1a9BfRQ4tffwLIvgONXMO+17G3h6aX2Fs+Uziym8IoBbniiswl9zXH4wGsoXP1Wid2J9csPZz3hs78RjyDc= ;{id = 33655} +02737800002E0001000151800093002F08010001518052F4220052EAD97083770053D5BF039D5EBDE1FC530083149ED5AAD367730D31CF217B27287865345E29AAAB90E045B0CCF28703AC60D9853379B5807D60F6971F0EC6D5EE16286704B9F59796AB0001E955041A17E769B6FE7C94E9E5891702FDE67826BA45C3B375AAF7F303A94A2974D5441310578EDDC4BFA542748620225D3A281B5B275ED06B9CF2 +sx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . U9W/A51eveH8UwCDFJ7VqtNncw0xzyF7Jyh4ZTReKaqrkOBFsMzyhwOsYNmFM3m1gH1g9pcfDsbV7hYoZwS59ZeWqwAB6VUEGhfnabb+fJTp5YkXAv3meCa6RcOzdar38wOpSil01UQTEFeO3cS/pUJ0hiAiXTooG1snXtBrnPI= ;{id = 33655} +02737800002F000100015180000C027379000006200000000013 +sx. 86400 IN NSEC sy. NS DS RRSIG NSEC +0161026E7302737800000100010002A300000459CFB841 +a.ns.sx. 172800 IN A 89.207.184.65 +0161026E7302737800001C00010002A30000102A0227900000000000000000600DDEED +a.ns.sx. 172800 IN AAAA 2a02:2790::600d:deed +0162026E7302737800000100010002A3000004505C5AA0 +b.ns.sx. 172800 IN A 80.92.90.160 +0163026E7302737800000100010002A3000004C05F136D +c.ns.sx. 172800 IN A 192.95.19.109 +02737900000200010002A300001B027379056363746C640761757468646E730472697065036E657400 +sy. 172800 IN NS sy.cctld.authdns.ripe.net. +02737900000200010002A300000C036E733103746C6402737900 +sy. 172800 IN NS ns1.tld.sy. +02737900000200010002A300000C036E733203746C6402737900 +sy. 172800 IN NS ns2.tld.sy. +02737900000200010002A30000140370636807616E796361737403746C6402737900 +sy. 172800 IN NS pch.anycast.tld.sy. +02737900002F00010001518000110773797374656D73000006200000000003 +sy. 86400 IN NSEC systems. NS RRSIG NSEC +02737900002E0001000151800093002F08010001518052F4220052EAD97083770023AD66AB2CFB711DC24A08BCBCFECFDBA2AF6C60FAD371749C314B6F2FA93F20B04457AC98B0EF5A3440D0CD5F6436CB870C3B29F9A4AF95202E33EFABA19FB858F8BF5565E0B458502C905F9D5EA85106B885FCA7698EE6CD477220BF2DD9F4B63FE53D5CAC0813375D628ACFA7CB64EEB90981D178F36571E72704657F5196 +sy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . I61mqyz7cR3CSgi8vP7P26KvbGD603F0nDFLby+pPyCwRFesmLDvWjRA0M1fZDbLhww7Kfmkr5UgLjPvq6GfuFj4v1Vl4LRYUCyQX51eqFEGuIX8p2mO5s1HciC/Ldn0tj/lPVysCBM3XWKKz6fLZO65CYHRePNlcecnBGV/UZY= ;{id = 33655} +0370636807616E796361737403746C6402737900000100010002A3000004CC3DD847 +pch.anycast.tld.sy. 172800 IN A 204.61.216.71 +0370636807616E796361737403746C6402737900001C00010002A3000010200105000014607100AD000000000001 +pch.anycast.tld.sy. 172800 IN AAAA 2001:500:14:6071:ad::1 +036E733103746C6402737900000100010002A30000045289C855 +ns1.tld.sy. 172800 IN A 82.137.200.85 +036E733203746C6402737900000100010002A30000045289C091 +ns2.tld.sy. 172800 IN A 82.137.192.145 +0773797374656D7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +systems. 172800 IN NS demand.beta.aridns.net.au. +0773797374656D7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +systems. 172800 IN NS demand.alpha.aridns.net.au. +0773797374656D7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +systems. 172800 IN NS demand.delta.aridns.net.au. +0773797374656D7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +systems. 172800 IN NS demand.gamma.aridns.net.au. +0773797374656D7300002B000100015180002461DE0802687ABBCE3773EEA70CF1434E34C2EEF2748BC0DD91A0F5C2416E77431F1C2651 +systems. 86400 IN DS 25054 8 2 687ABBCE3773EEA70CF1434E34C2EEF2748BC0DD91A0F5C2416E77431F1C2651 +0773797374656D7300002E0001000151800093002B08010001518052F4220052EAD97083770048FF181B833CE0D8206FD0C3F5686FE6BE266041912947F3CE112B3951E8EDE1714DF74D46C1FE3B42323467D02CAFEB12594420F28C4CFFACF5FFBFE5A516D8E2B634ABAF61024DB2CD0EE94C55F6EA553C894944B6C63E957C4D46C4A90ED660F9FC3163C33135DDF8ABC30340C7A2D8997EF3436EFE04DD767A787EBB1A8B +systems. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . SP8YG4M84Nggb9DD9Whv5r4mYEGRKUfzzhErOVHo7eFxTfdNRsH+O0IyNGfQLK/rEllEIPKMTP+s9f+/5aUW2OK2NKuvYQJNss0O6UxV9upVPIlJRLbGPpV8TUbEqQ7WYPn8MWPDMTXd+KvDA0DHotiZfvNDbv4E3XZ6eH67Gos= ;{id = 33655} +0773797374656D7300002E0001000151800093002F08010001518052F4220052EAD9708377002CC8D93EF6879F9986F25BABE1392EA4E6E9D45EAE5ABE8B784F89BE528D1370906B4F316DA7B297549831559D4F31C39A92DD169756219D6C8D032E8BD7488CDAA43944CD3F0CCD3AE685164696974D479816EB358DE99CCB63A720AD26A701A80FF3FD909127059781BD273C207B538706FE9D90FCA2AAB775A27EEBCA05EB +systems. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . LMjZPvaHn5mG8lur4TkupObp1F6uWr6LeE+JvlKNE3CQa08xbaeyl1SYMVWdTzHDmpLdFpdWIZ1sjQMui9dIjNqkOUTNPwzNOuaFFkaWl01HmBbrNY3pnMtjpyCtJqcBqA/z/ZCRJwWXgb0nPCB7U4cG/p2Q/KKqt3WifuvKBes= ;{id = 33655} +0773797374656D7300002F000100015180000C02737A000006200000000013 +systems. 86400 IN NSEC sz. NS DS RRSIG NSEC +02737A00000200010002A300001B02737A056363746C640761757468646E730472697065036E657400 +sz. 172800 IN NS sz.cctld.authdns.ripe.net. +02737A00000200010002A3000012036E7331057369737061036F726702737A00 +sz. 172800 IN NS ns1.sispa.org.sz. +02737A00000200010002A300000D037269700370736703636F6D00 +sz. 172800 IN NS rip.psg.com. +02737A00002F000100015180001006746174746F6F000006200000000003 +sz. 86400 IN NSEC tattoo. NS RRSIG NSEC +02737A00002E0001000151800093002F08010001518052F4220052EAD970837700446B581EC90D85FDE118AFCF0AB9E7EF7EA722943BAF6CEB97EA59B231C1DFFE827C71C183B14F62325EECD4BC053B19AAA24078033A247729EE8513985E0A214D60E1E250652B3FFB8E79725FF4BBFA8A7A8CF7D79612388B037B209F2995A3D011F762EBBE847F2A24366F280295DE61FC2FA33FDB6A079B73E88BBD0D7C52 +sz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RGtYHskNhf3hGK/PCrnn736nIpQ7r2zrl+pZsjHB3/6CfHHBg7FPYjJe7NS8BTsZqqJAeAM6JHcp7oUTmF4KIU1g4eJQZSs/+455cl/0u/qKeoz315YSOIsDeyCfKZWj0BH3Yuu+hH8qJDZvKAKV3mH8L6M/22oHm3Poi70NfFI= ;{id = 33655} +036E7331057369737061036F726702737A00000100010002A3000004294DE804 +ns1.sispa.org.sz. 172800 IN A 41.77.232.4 +06746174746F6F00000200010002A30000160161026E730B756E697265676973747279036E657400 +tattoo. 172800 IN NS a.ns.uniregistry.net. +06746174746F6F00000200010002A300001103746C64076973632D736E7303636F6D00 +tattoo. 172800 IN NS tld.isc-sns.com. +06746174746F6F00000200010002A300001103746C64076973632D736E73036E657400 +tattoo. 172800 IN NS tld.isc-sns.net. +06746174746F6F00000200010002A300001203746C64076973632D736E7304696E666F00 +tattoo. 172800 IN NS tld.isc-sns.info. +06746174746F6F00002B000100015180001815110501AC153D753067B73F852FD617D6D658B2C13EBBAC +tattoo. 86400 IN DS 5393 5 1 AC153D753067B73F852FD617D6D658B2C13EBBAC +06746174746F6F00002B00010001518000241511050273BB10F1CEAA45E7896F1A38F8AF5DD7C08C26432BF52C7F47141364F842ACD2 +tattoo. 86400 IN DS 5393 5 2 73BB10F1CEAA45E7896F1A38F8AF5DD7C08C26432BF52C7F47141364F842ACD2 +06746174746F6F00002E0001000151800093002B08010001518052F4220052EAD970837700577BB699E519A626F81E4A6427085DE94937A4DAADDEC90B44634893568FB7A08976564BFAC165F6D0DD9E2422BBCD0ADC6DFD8EB4CCA9EDCAB8C6901B837717F15E187EBD98587BB5F7E7B6D44EE37BB8C57FB05AD467BE6EFAC0DEAC01D7A61CD733C7BDFA25DBAEB997987E03ED607FCB51CAE992D06CFA61B1043AAEC859 +tattoo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . V3u2meUZpib4HkpkJwhd6Uk3pNqt3skLRGNIk1aPt6CJdlZL+sFl9tDdniQiu80K3G39jrTMqe3KuMaQG4N3F/FeGH69mFh7tffnttRO43u4xX+wWtRnvm76wN6sAdemHNczx736JduuuZeYfgPtYH/LUcrpktBs+mGxBDquyFk= ;{id = 33655} +06746174746F6F00002E0001000151800093002F08010001518052F4220052EAD9708377008A55D1984DEEA2583A221F04FDD3EF0C7EAD6ABAAA307B086E931E8CF9E6BF172A2FAB7CBCC1CED1634B7B7BF51C9D4C38C646F30A7B9095320AF117B596A053C6E218336932349F02694A848817F03C897993876837C7B67705B338805D23E0A52AEFEB9949E7AA49EB5538A71B0DE86C54C0ABE4E4829226AB62A6B7544031 +tattoo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ilXRmE3uolg6Ih8E/dPvDH6tarqqMHsIbpMejPnmvxcqL6t8vMHO0WNLe3v1HJ1MOMZG8wp7kJUyCvEXtZagU8biGDNpMjSfAmlKhIgX8DyJeZOHaDfHtncFsziAXSPgpSrv65lJ56pJ61U4pxsN6GxUwKvk5IKSJqtiprdUQDE= ;{id = 33655} +06746174746F6F00002F000100015180000C027463000006200000000013 +tattoo. 86400 IN NSEC tc. NS DS RRSIG NSEC +02746300000200010002A300000E0461736961047A6F6E6502746300 +tc. 172800 IN NS asia.zone.tc. +02746300000200010002A300000E0461736961047A6F6E6502766700 +tc. 172800 IN NS asia.zone.vg. +02746300000200010002A3000010066575726F7065047A6F6E6502746300 +tc. 172800 IN NS europe.zone.tc. +02746300000200010002A3000010066575726F7065047A6F6E6502766700 +tc. 172800 IN NS europe.zone.vg. +02746300000200010002A30000160C6E6F727468616D6572696361047A6F6E6502746300 +tc. 172800 IN NS northamerica.zone.tc. +02746300002F000100015180000C027464000006200000000003 +tc. 86400 IN NSEC td. NS RRSIG NSEC +02746300002E0001000151800093002F08010001518052F4220052EAD97083770090E26B0501B5746AE09292728C144D841973E90A7C04CAB47E2C12BACC285D86B662F6E470A02AE246E1A61E822E9EFC8FE842FCE9A782F58BF8DF2B9E8D43889DD58E7858BE253EDF73BC94866EE1D9C492A2E36F7DEEEFE1D78E785FB0C9B036777316A387FFC3A9320BD3FAD308D0C5BBC85028EBE13D4DF705C9B8DD7F38 +tc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kOJrBQG1dGrgkpJyjBRNhBlz6Qp8BMq0fiwSuswoXYa2YvbkcKAq4kbhph6CLp78j+hC/OmngvWL+N8rno1DiJ3VjnhYviU+33O8lIZu4dnEkqLjb33u7+HXjnhfsMmwNndzFqOH/8OpMgvT+tMI0MW7yFAo6+E9TfcFybjdfzg= ;{id = 33655} +0461736961047A6F6E6502746300000100010002A30000041FA951E1 +asia.zone.tc. 172800 IN A 31.169.81.225 +066575726F7065047A6F6E6502746300000100010002A30000044D4F68E1 +europe.zone.tc. 172800 IN A 77.79.104.225 +0C6E6F727468616D6572696361047A6F6E6502746300000100010002A3000004A64EFE91 +northamerica.zone.tc. 172800 IN A 166.78.254.145 +02746400000200010002A300000C036E7331036E696302746400 +td. 172800 IN NS ns1.nic.td. +02746400000200010002A300000E056E732D7464036E696302667200 +td. 172800 IN NS ns-td.nic.fr. +02746400000200010002A3000013056E732D746407616672696E6963036E657400 +td. 172800 IN NS ns-td.afrinic.net. +02746400002F00010001518000140A746563686E6F6C6F6779000006200000000003 +td. 86400 IN NSEC technology. NS RRSIG NSEC +02746400002E0001000151800093002F08010001518052F4220052EAD97083770058DD705FCEA3B9F5DD07D87CFB55F646DE5B7256BA99FC12599D40F66540B37FD936EE95435989BB3E62472EAE2B3E97E51417C853DAB6800C324FE325C3C736B47DB4FDB98B4313329D98837CDAA72EF39F8812D7601A8AE806EE12A83CC1C4110436FFE62DBD693CF44D9AFA2CC09ED3C4B1ABFE26E610CA6F6425BC3A4D19 +td. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WN1wX86jufXdB9h8+1X2Rt5bcla6mfwSWZ1A9mVAs3/ZNu6VQ1mJuz5iRy6uKz6X5RQXyFPatoAMMk/jJcPHNrR9tP25i0MTMp2Yg3zapy7zn4gS12AaiugG7hKoPMHEEQQ2/+YtvWk89E2a+izAntPEsav+JuYQym9kJbw6TRk= ;{id = 33655} +036E7331036E696302746400000100010002A3000004294A2C2B +ns1.nic.td. 172800 IN A 41.74.44.43 +0A746563686E6F6C6F677900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +technology. 172800 IN NS demand.beta.aridns.net.au. +0A746563686E6F6C6F677900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +technology. 172800 IN NS demand.alpha.aridns.net.au. +0A746563686E6F6C6F677900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +technology. 172800 IN NS demand.delta.aridns.net.au. +0A746563686E6F6C6F677900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +technology. 172800 IN NS demand.gamma.aridns.net.au. +0A746563686E6F6C6F677900002B0001000151800024C2500802C3BEEFBB8633323215C56E2B8401CAB71D335A8E146454099D39470734D0630D +technology. 86400 IN DS 49744 8 2 C3BEEFBB8633323215C56E2B8401CAB71D335A8E146454099D39470734D0630D +0A746563686E6F6C6F677900002E0001000151800093002B08010001518052F4220052EAD9708377000439BCA766C22CE6DBFA40395412FE7C3D2DD6FE20A28BA998B4596CAE2B3C9CE188AE40462810FC4988A5A0DD9347C03A96C697858ED0E7C9E047E9AFE41B29E03C226EA381D8A910B3BB291AF4F0ADBE9E1E03E65CE0D1A2DB0399161691F5DE3E7C9B8C08B5D9334972117C8A32014B42B6A0FCA3BAE1EBE64E79A92C68AD +technology. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BDm8p2bCLObb+kA5VBL+fD0t1v4gooupmLRZbK4rPJzhiK5ARigQ/EmIpaDdk0fAOpbGl4WO0OfJ4Efpr+QbKeA8Im6jgdipELO7KRr08K2+nh4D5lzg0aLbA5kWFpH13j58m4wItdkzSXIRfIoyAUtCtqD8o7rh6+ZOeaksaK0= ;{id = 33655} +0A746563686E6F6C6F677900002E0001000151800093002F08010001518052F4220052EAD97083770064ED9A4CD1AFDF0632DC5A0DAB07A560FC0DBE63EAE358F5715DD5ACF26C225C7ED5E8D9F56EFA33D8F27448CFC934713FD287C26992F5433742F155A6649924BEBE066ABF91A092F725904947AAB7D6C9339397C8F937EB84458A0BB15BAD25730821CB0F53E34DA5787A797AE06A85855FC85BAC34F44B3C3AC7396C23013F +technology. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ZO2aTNGv3wYy3FoNqwelYPwNvmPq41j1cV3VrPJsIlx+1ejZ9W76M9jydEjPyTRxP9KHwmmS9UM3QvFVpmSZJL6+Bmq/kaCS9yWQSUeqt9bJM5OXyPk364RFiguxW60lcwghyw9T402leHp5euBqhYVfyFusNPRLPDrHOWwjAT8= ;{id = 33655} +0A746563686E6F6C6F677900002F000100015180000D0374656C000006200000000013 +technology. 86400 IN NSEC tel. NS DS RRSIG NSEC +0374656C00000200010002A300000F016103646E73036E69630374656C00 +tel. 172800 IN NS a.dns.nic.tel. +0374656C00000200010002A300000F016203646E73036E69630374656C00 +tel. 172800 IN NS b.dns.nic.tel. +0374656C00000200010002A300000F016303646E73036E69630374656C00 +tel. 172800 IN NS c.dns.nic.tel. +0374656C00000200010002A300000F016403646E73036E69630374656C00 +tel. 172800 IN NS d.dns.nic.tel. +0374656C00000200010002A300000F016503646E73036E69630374656C00 +tel. 172800 IN NS e.dns.nic.tel. +0374656C00000200010002A300000F016603646E73036E69630374656C00 +tel. 172800 IN NS f.dns.nic.tel. +0374656C00000200010002A300000F016703646E73036E69630374656C00 +tel. 172800 IN NS g.dns.nic.tel. +0374656C00000200010002A300000F016803646E73036E69630374656C00 +tel. 172800 IN NS h.dns.nic.tel. +0374656C00002F000100015180000C027466000006200000000003 +tel. 86400 IN NSEC tf. NS RRSIG NSEC +0374656C00002E0001000151800093002F08010001518052F4220052EAD9708377001804614D99C0FF74F14F8B175D06C0AB031ADAA46A2E2B5BD5F29C579844FBACD52595774D04A3F4AE9F07EE73A3BCE0777114777EB9461546ABF6FE6DFF8803A24C6119E11944148BD4F93E00BE1A33901D9DEA9E1899513844D1AB4CADF53291623751C26B1B627395E95C4CD04098D12339E27C3C269C7A2833B0D4D55654 +tel. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . GARhTZnA/3TxT4sXXQbAqwMa2qRqLitb1fKcV5hE+6zVJZV3TQSj9K6fB+5zo7zgd3EUd365RhVGq/b+bf+IA6JMYRnhGUQUi9T5PgC+GjOQHZ3qnhiZUThE0atMrfUykWI3UcJrG2JzlelcTNBAmNEjOeJ8PCaceigzsNTVVlQ= ;{id = 33655} +016103646E73036E69630374656C00000100010002A3000004C2926A26 +a.dns.nic.tel. 172800 IN A 194.146.106.38 +016203646E73036E69630374656C00000100010002A3000004C0249074 +b.dns.nic.tel. 172800 IN A 192.36.144.116 +016303646E73036E69630374656C00000100010002A3000004CC4A7001 +c.dns.nic.tel. 172800 IN A 204.74.112.1 +016303646E73036E69630374656C00001C00010002A300001020010502D39900000000000000000001 +c.dns.nic.tel. 172800 IN AAAA 2001:502:d399::1 +016403646E73036E69630374656C00000100010002A3000004CC4A7101 +d.dns.nic.tel. 172800 IN A 204.74.113.1 +016503646E73036E69630374656C00000100010002A3000004C7074201 +e.dns.nic.tel. 172800 IN A 199.7.66.1 +016603646E73036E69630374656C00000100010002A3000004C7074301 +f.dns.nic.tel. 172800 IN A 199.7.67.1 +016603646E73036E69630374656C00001C00010002A300001020010502100E00000000000000000001 +f.dns.nic.tel. 172800 IN AAAA 2001:502:100e::1 +016703646E73036E69630374656C00000100010002A3000004C0643B0B +g.dns.nic.tel. 172800 IN A 192.100.59.11 +016803646E73036E69630374656C00000100010002A3000004C685C70B +h.dns.nic.tel. 172800 IN A 198.133.199.11 +02746600000200010002A300000E016403657874036E696302667200 +tf. 172800 IN NS d.ext.nic.fr. +02746600000200010002A300000A0164036E696302667200 +tf. 172800 IN NS d.nic.fr. +02746600000200010002A300000E016503657874036E696302667200 +tf. 172800 IN NS e.ext.nic.fr. +02746600000200010002A300000E016603657874036E696302667200 +tf. 172800 IN NS f.ext.nic.fr. +02746600000200010002A300000E016703657874036E696302667200 +tf. 172800 IN NS g.ext.nic.fr. +02746600002B0001000151800024357408020D4413F0F5685FD9144C7B7D6FCF6A0CAE6A806A3380164A1EE14FC0232652F8 +tf. 86400 IN DS 13684 8 2 0D4413F0F5685FD9144C7B7D6FCF6A0CAE6A806A3380164A1EE14FC0232652F8 +02746600002B0001000151800024F9020802C80A503F9A4594065684E1B4C6CD5C9AAACF855A9F3B4D9B4546970C6C37C0E0 +tf. 86400 IN DS 63746 8 2 C80A503F9A4594065684E1B4C6CD5C9AAACF855A9F3B4D9B4546970C6C37C0E0 +02746600002E0001000151800093002B08010001518052F4220052EAD9708377001EE1A1FC557EC9139F2A0301464F58C20FDA2D78E9FE3D39777D81B89C3041547FB63F6B07C79BFED631AEBF11CBAFBFE30687ED3F0BFF156DD01D0EE141DE6D56E58C31C825A1B04BC8BD2CB9E38BCA471AB2168A43C47CD534E87409A2E398E7683261D888040EC3FDBE509DD508CFDE43AC8BD4F4805DE94A450DA8081844 +tf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . HuGh/FV+yROfKgMBRk9Ywg/aLXjp/j05d32BuJwwQVR/tj9rB8eb/tYxrr8Ry6+/4waH7T8L/xVt0B0O4UHebVbljDHIJaGwS8i9LLnji8pHGrIWikPEfNU06HQJouOY52gyYdiIBA7D/b5QndUIz95DrIvU9IBd6UpFDagIGEQ= ;{id = 33655} +02746600002E0001000151800093002F08010001518052F4220052EAD970837700893A6CFD71555651F6E411111E5AACCACB885D2BC5ABE70C40F7E2A4BF95D37762EB05A106E385DDBD6DAB1D463338E31BF2538AC839BB99899057D845AEF96E0137724976521DECA823700A66C054A940DA7D6BF8C3FF7BA109D82D068A559AADD296CE30531A3A51538F671A33BCD28165113DD06D8DD915531AF6A9B2DD9B +tf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iTps/XFVVlH25BERHlqsysuIXSvFq+cMQPfipL+V03di6wWhBuOF3b1tqx1GMzjjG/JTisg5u5mJkFfYRa75bgE3ckl2Uh3sqCNwCmbAVKlA2n1r+MP/e6EJ2C0GilWardKWzjBTGjpRU49nGjO80oFlET3QbY3ZFVMa9qmy3Zs= ;{id = 33655} +02746600002F000100015180000C027467000006200000000013 +tf. 86400 IN NSEC tg. NS DS RRSIG NSEC +02746700000200010002A300000F036E73310561646D696E036E657400 +tg. 172800 IN NS ns1.admin.net. +02746700000200010002A300000F036E73320561646D696E036E657400 +tg. 172800 IN NS ns2.admin.net. +02746700000200010002A300000F036E73330561646D696E036E657400 +tg. 172800 IN NS ns3.admin.net. +02746700000200010002A300000F036E73340561646D696E036E657400 +tg. 172800 IN NS ns4.admin.net. +02746700000200010002A300000F036E73350561646D696E036E657400 +tg. 172800 IN NS ns5.admin.net. +02746700000200010002A300000D03746C64046361666502746700 +tg. 172800 IN NS tld.cafe.tg. +02746700002F000100015180000C027468000006200000000003 +tg. 86400 IN NSEC th. NS RRSIG NSEC +02746700002E0001000151800093002F08010001518052F4220052EAD970837700980F0A82FBC6427BA6BF86270423B804BCA98E0B5FC779FE857D6EAD187C335806EF1B96E3B746AD42325234475088D0430ED266C89D18BE5D6051AE42D0458FC4BADEB76A9979B23AA768DC11BBA75AEFA844D8678F964083C08C08D28F9F2B3E84115F4CB9537561167FB3FBFBA0D1253F013CF3B81873D3AE27C7DA16B015 +tg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mA8KgvvGQnumv4YnBCO4BLypjgtfx3n+hX1urRh8M1gG7xuW47dGrUIyUjRHUIjQQw7SZsidGL5dYFGuQtBFj8S63rdqmXmyOqdo3BG7p1rvqETYZ4+WQIPAjAjSj58rPoQRX0y5U3VhFn+z+/ug0SU/ATzzuBhz064nx9oWsBU= ;{id = 33655} +03746C64046361666502746700000100010002A300000450F84014 +tld.cafe.tg. 172800 IN A 80.248.64.20 +02746800000200010002A300000E026E730574686E6963036E657400 +th. 172800 IN NS ns.thnic.net. +02746800000200010002A300001B027468056363746C640761757468646E730472697065036E657400 +th. 172800 IN NS th.cctld.authdns.ripe.net. +02746800000200010002A300001403616D7306736E732D706203697363036F726700 +th. 172800 IN NS ams.sns-pb.isc.org. +02746800000200010002A300001204646E73310574686E696302636F02746800 +th. 172800 IN NS dns1.thnic.co.th. +02746800000200010002A3000012046E732D610574686E696302636F02746800 +th. 172800 IN NS ns-a.thnic.co.th. +02746800000200010002A3000012046E732D650574686E696302636F02746800 +th. 172800 IN NS ns-e.thnic.co.th. +02746800000200010002A3000015047366626106736E732D706203697363036F726700 +th. 172800 IN NS sfba.sns-pb.isc.org. +02746800002B000100015180002491B10802890C918B568A6E30BF3A54B88C6B5C1838B9137E849EB96581FF36838399C276 +th. 86400 IN DS 37297 8 2 890C918B568A6E30BF3A54B88C6B5C1838B9137E849EB96581FF36838399C276 +02746800002E0001000151800093002B08010001518052F4220052EAD97083770094BE35534164445FFAEA524626F1A38B4632FB3760CE5F2884D50338751398F7EE0BA37D1B9050CA8FD075D13855594961EC7FAC7E352562DBAFCCE7FDBF661FA14BA6A58A78A27DCC057A7D94332620CBAA1A780AE85D880D3F920A63951E0F2575B13719436A125AB8BE760C24D6CBE98D1342535A75BFC99F41882B9B546A +th. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . lL41U0FkRF/66lJGJvGji0Yy+zdgzl8ohNUDOHUTmPfuC6N9G5BQyo/QddE4VVlJYex/rH41JWLbr8zn/b9mH6FLpqWKeKJ9zAV6fZQzJiDLqhp4CuhdiA0/kgpjlR4PJXWxNxlDahJauL52DCTWy+mNE0JTWnW/yZ9BiCubVGo= ;{id = 33655} +02746800002E0001000151800093002F08010001518052F4220052EAD970837700B4A50FA5DA4F3EC679400D3EE979175DE83A778A7CC78CAF2118E8A29CA1C98874C023FEB7F174E54F35DF908C6D0796F6E7C782AFE6211F24083C1521346BA888A6AB87D4B0E6C3F1532E4AEA691D503CB35CA5BDE777126965FE3C7A7B4890FFD1F867B77F87E441081487501456D74BD2B41C255C563DFB91CF5949F129F6 +th. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tKUPpdpPPsZ5QA0+6XkXXeg6d4p8x4yvIRjoopyhyYh0wCP+t/F05U8135CMbQeW9ufHgq/mIR8kCDwVITRrqIimq4fUsObD8VMuSuppHVA8s1ylved3Emll/jx6e0iQ/9H4Z7d/h+RBCBSHUBRW10vStBwlXFY9+5HPWUnxKfY= ;{id = 33655} +02746800002F0001000151800010067469656E6461000006200000000013 +th. 86400 IN NSEC tienda. NS DS RRSIG NSEC +04646E73310574686E696302636F02746800000100010002A3000004CA1C0116 +dns1.thnic.co.th. 172800 IN A 202.28.1.22 +04646E73310574686E696302636F02746800001C00010002A3000010200103C8120900010000000000000022 +dns1.thnic.co.th. 172800 IN AAAA 2001:3c8:1209:1::22 +046E732D610574686E696302636F02746800000100010002A30000043D13F226 +ns-a.thnic.co.th. 172800 IN A 61.19.242.38 +046E732D650574686E696302636F02746800000100010002A3000004C200011C +ns-e.thnic.co.th. 172800 IN A 194.0.1.28 +046E732D650574686E696302636F02746800001C00010002A30000102001067800040000000000000000001C +ns-e.thnic.co.th. 172800 IN AAAA 2001:678:4::1c +067469656E646100000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +tienda. 172800 IN NS demand.beta.aridns.net.au. +067469656E646100000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +tienda. 172800 IN NS demand.alpha.aridns.net.au. +067469656E646100000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +tienda. 172800 IN NS demand.delta.aridns.net.au. +067469656E646100000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +tienda. 172800 IN NS demand.gamma.aridns.net.au. +067469656E646100002B0001000151800024E46108023609AECF68EF07474D2D9CFC9735DDA2365FBC3C6E4EBC01957E7903E17467A2 +tienda. 86400 IN DS 58465 8 2 3609AECF68EF07474D2D9CFC9735DDA2365FBC3C6E4EBC01957E7903E17467A2 +067469656E646100002E0001000151800093002B08010001518052F4220052EAD9708377001DEE4912F35FCC46EA6D8358EC2909C2FCF07FE57FB5BCBFA4A86DC6E344A41089CBC65236C75C62EC4D355C8CF7AE91391CCBEC9FADEEE15DDB6DF4A44BF6D7F13C88AABDB7BBEAD785734E1157C6A000F394E9A57533EF5B4EE6C2F4414D8640C59F3EFB08EE1B9364D540E45DBD488724CA477EC97741EDBC4DAEA7E83D0A +tienda. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . He5JEvNfzEbqbYNY7CkJwvzwf+V/tby/pKhtxuNEpBCJy8ZSNsdcYuxNNVyM966RORzL7J+t7uFd2230pEv21/E8iKq9t7vq14VzThFXxqAA85TppXUz71tO5sL0QU2GQMWfPvsI7huTZNVA5F29SIckykd+yXdB7bxNrqfoPQo= ;{id = 33655} +067469656E646100002E0001000151800093002F08010001518052F4220052EAD9708377006AF3D6DFAAF3F3AC334C575C80CFB38775F05B0DDAE8B7A6AD9641332A5010A6471ABDFB15EE4D8906D681CFF7DACAF8FB675AC483038DDD67C63EF0A75A1B1DEA5D17613F7CCC929A5C751152C12254C8AF0776406C809339B9E59F69633F22DF6B937C0393CC612CAD000C0A20E278FAC23BE36A06D0FBA4A00E93CAFD4072 +tienda. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . avPW36rz86wzTFdcgM+zh3XwWw3a6LemrZZBMypQEKZHGr37Fe5NiQbWgc/32sr4+2daxIMDjd1nxj7wp1obHepdF2E/fMySmlx1EVLBIlTIrwd2QGyAkzm55Z9pYz8i32uTfAOTzGEsrQAMCiDiePrCO+NqBtD7pKAOk8r9QHI= ;{id = 33655} +067469656E646100002F000100015180000E0474697073000006200000000013 +tienda. 86400 IN NSEC tips. NS DS RRSIG NSEC +047469707300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +tips. 172800 IN NS demand.beta.aridns.net.au. +047469707300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +tips. 172800 IN NS demand.alpha.aridns.net.au. +047469707300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +tips. 172800 IN NS demand.delta.aridns.net.au. +047469707300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +tips. 172800 IN NS demand.gamma.aridns.net.au. +047469707300002B0001000151800024D70E08025083EDD4FF622CA53C15F91D62C83D08706912A093F49B6DAC85A7B511F545B5 +tips. 86400 IN DS 55054 8 2 5083EDD4FF622CA53C15F91D62C83D08706912A093F49B6DAC85A7B511F545B5 +047469707300002E0001000151800093002B08010001518052F4220052EAD9708377009F76202E35FF1A0FBA9E09172EEFFE37E688D977F2D832676929A326CFE52C2717E904EBC3DAFAA413432B9953946BCEF230B152D870B460E53635F41171D24B340AADBA795D9D6C8D4E2A3EC07980FA267946B8D0A68A1ABDE9E4E66E9272543CC0B1C75F8BE16D4313245977F6F58565245FCBED6372567CC94819126E7CAC +tips. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . n3YgLjX/Gg+6ngkXLu/+N+aI2Xfy2DJnaSmjJs/lLCcX6QTrw9r6pBNDK5lTlGvO8jCxUthwtGDlNjX0EXHSSzQKrbp5XZ1sjU4qPsB5gPomeUa40KaKGr3p5OZuknJUPMCxx1+L4W1DEyRZd/b1hWUkX8vtY3JWfMlIGRJufKw= ;{id = 33655} +047469707300002E0001000151800093002F08010001518052F4220052EAD9708377007771F8E4D9A3CD77BB36362286FC0976699D41AEB75F1C659B22484F92847E24314F15FE81B3BC3DC69CDDDB36FEDF606E951BA496DC9F7BBAD9BE6023143B9325999CD7FA4487745C2A1286F4289F66C615ADA81702FF542076206C62FC63CB110DB7306F3B1F8EF3EC90C4BEF175DDBC79EAF779EAD1D0A9C14A8990C1BFA1 +tips. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . d3H45NmjzXe7NjYihvwJdmmdQa63XxxlmyJIT5KEfiQxTxX+gbO8Pcac3ds2/t9gbpUbpJbcn3u62b5gIxQ7kyWZnNf6RId0XCoShvQon2bGFa2oFwL/VCB2IGxi/GPLEQ23MG87H47z7JDEvvF13bx56vd56tHQqcFKiZDBv6E= ;{id = 33655} +047469707300002F000100015180000C02746A000006200000000013 +tips. 86400 IN NSEC tj. NS DS RRSIG NSEC +02746A00000200010002A300001B02746A056363746C640761757468646E730472697065036E657400 +tj. 172800 IN NS tj.cctld.authdns.ripe.net. +02746A00000200010002A300000C036E7331036E696302746A00 +tj. 172800 IN NS ns1.nic.tj. +02746A00000200010002A3000014036E73320A746F6A696B6973746F6E03636F6D00 +tj. 172800 IN NS ns2.tojikiston.com. +02746A00000200010002A30000140670686C6F656D07756F7265676F6E0365647500 +tj. 172800 IN NS phloem.uoregon.edu. +02746A00002F000100015180000C02746B000006200000000003 +tj. 86400 IN NSEC tk. NS RRSIG NSEC +02746A00002E0001000151800093002F08010001518052F4220052EAD97083770000D83221BAF16C7F91E8EB5D518EF9236FA0B2494829FF978F57145994B07231EEEAC3941EBDB4517986131B0E9F5880F3BE85069D8A2A852CF4981149294A96827C6C8C6A8F26D6D97FF1CCEA515C781BBDD3415B6A2CEC2DD60C77C3F9DB74F6B6A0278B7D5787CFBD7E1650CA9A93449ADDCD3688BB1F12C9DDEC3686C95E +tj. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ANgyIbrxbH+R6OtdUY75I2+gsklIKf+Xj1cUWZSwcjHu6sOUHr20UXmGExsOn1iA876FBp2KKoUs9JgRSSlKloJ8bIxqjybW2X/xzOpRXHgbvdNBW2os7C3WDHfD+dt09ragJ4t9V4fPvX4WUMqak0Sa3c02iLsfEsnd7DaGyV4= ;{id = 33655} +036E7331036E696302746A00000100010002A30000045BDAA0C5 +ns1.nic.tj. 172800 IN A 91.218.160.197 +02746B00000200010002A30000090161026E7302746B00 +tk. 172800 IN NS a.ns.tk. +02746B00000200010002A30000090162026E7302746B00 +tk. 172800 IN NS b.ns.tk. +02746B00000200010002A30000090163026E7302746B00 +tk. 172800 IN NS c.ns.tk. +02746B00000200010002A30000090164026E7302746B00 +tk. 172800 IN NS d.ns.tk. +02746B00002F000100015180000C02746C000006200000000003 +tk. 86400 IN NSEC tl. NS RRSIG NSEC +02746B00002E0001000151800093002F08010001518052F4220052EAD97083770057255D73E5495E903D4470F65EA15FF1754A8FEFF210FE803E488FD455965EA768E37DBD88CE49513F2E83DF9F46EA5F40BFDE978B226B7FDE3F126B2EF9EF232C0E0CC57F95385FFD32ED84EE6290EBF0BCC93D574620DCB80F953BFD464D3534BCA2F1461D3E8CE7DE1A25A5C8FB9906D3303C9C48EB0E421DB3E1DB5A4FE8 +tk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VyVdc+VJXpA9RHD2XqFf8XVKj+/yEP6APkiP1FWWXqdo4329iM5JUT8ug9+fRupfQL/el4sia3/ePxJrLvnvIywODMV/lThf/TLthO5ikOvwvMk9V0Yg3LgPlTv9Rk01NLyi8UYdPozn3holpcj7mQbTMDycSOsOQh2z4dtaT+g= ;{id = 33655} +0161026E7302746B00000100010002A3000004C2002601 +a.ns.tk. 172800 IN A 194.0.38.1 +0161026E7302746B00001C00010002A300001020010678005000000000000000000001 +a.ns.tk. 172800 IN AAAA 2001:678:50::1 +0162026E7302746B00000100010002A3000004C2002701 +b.ns.tk. 172800 IN A 194.0.39.1 +0162026E7302746B00001C00010002A300001020010678005400000000000000000001 +b.ns.tk. 172800 IN AAAA 2001:678:54::1 +0163026E7302746B00000100010002A3000004C2002801 +c.ns.tk. 172800 IN A 194.0.40.1 +0163026E7302746B00001C00010002A300001020010678005800000000000000000001 +c.ns.tk. 172800 IN AAAA 2001:678:58::1 +0164026E7302746B00000100010002A3000004C2002901 +d.ns.tk. 172800 IN A 194.0.41.1 +0164026E7302746B00001C00010002A300001020010678005C00000000000000000001 +d.ns.tk. 172800 IN AAAA 2001:678:5c::1 +02746C00000200010002A3000013026E7307616E7963617374036E696302746C00 +tl. 172800 IN NS ns.anycast.nic.tl. +02746C00000200010002A300001003746C310664796E746C64036E657400 +tl. 172800 IN NS tl1.dyntld.net. +02746C00000200010002A300001003746C330664796E746C64036E657400 +tl. 172800 IN NS tl3.dyntld.net. +02746C00002B000100015180002462DB0802BC0412D59817424A34040676F1AE1205B1F33FC9510E7E30114711851FFCEDE4 +tl. 86400 IN DS 25307 8 2 BC0412D59817424A34040676F1AE1205B1F33FC9510E7E30114711851FFCEDE4 +02746C00002E0001000151800093002B08010001518052F4220052EAD9708377001A11422911BE68D2127524B0031BA607E768E889ACEEB70245738F43AE1FC3BF90C1CCEEDD69EB2ECDBCA43353E10623EDAD487C601FDBE8C6C2CA8950DDC8B8127BA463B38DC4E968B98BAFB579D3468132C05BFD37781460BA13447AEF258D88FFFB8F418165AC5E8FF47D08F5F201A6B585129C9F9D1CDC48E5B8DFF799E2 +tl. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GhFCKRG+aNISdSSwAxumB+do6Ims7rcCRXOPQ64fw7+Qwczu3WnrLs28pDNT4QYj7a1IfGAf2+jGwsqJUN3IuBJ7pGOzjcTpaLmLr7V500aBMsBb/Td4FGC6E0R67yWNiP/7j0GBZaxej/R9CPXyAaa1hRKcn50c3EjluN/3meI= ;{id = 33655} +02746C00002E0001000151800093002F08010001518052F4220052EAD970837700599866FEBDA53C4DAED2324E87AD30A814179B4F0E86E47BEDB2D09833DE5B078258B2886DA744BE9A2A21CC9A89514CD5C430F1A209437B2D540793E0B67231B9D6ECFE02F799848E56469EFEA73950356211300FD52497799AB0A9DB0A9F96D89DD58090A5E4EB9F94CFB0E11EB3D4B544B1498216D3C35470CDF3759B0CB6 +tl. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WZhm/r2lPE2u0jJOh60wqBQXm08OhuR77bLQmDPeWweCWLKIbadEvpoqIcyaiVFM1cQw8aIJQ3stVAeT4LZyMbnW7P4C95mEjlZGnv6nOVA1YhEwD9Ukl3masKnbCp+W2J3VgJCl5OuflM+w4R6z1LVEsUmCFtPDVHDN83WbDLY= ;{id = 33655} +02746C00002F000100015180000C02746D000006200000000013 +tl. 86400 IN NSEC tm. NS DS RRSIG NSEC +026E7307616E7963617374036E696302746C00000100010002A3000004CC3DD813 +ns.anycast.nic.tl. 172800 IN A 204.61.216.19 +026E7307616E7963617374036E696302746C00001C00010002A3000010200105000014601900AD000000000001 +ns.anycast.nic.tl. 172800 IN AAAA 2001:500:14:6019:ad::1 +02746D00000200010002A300000A0161036E696302746D00 +tm. 172800 IN NS a.nic.tm. +02746D00000200010002A300000C0161046E733133036E657400 +tm. 172800 IN NS a.ns13.net. +02746D00000200010002A300000A0162036E696302616300 +tm. 172800 IN NS b.nic.ac. +02746D00000200010002A300000A0162036E696302696F00 +tm. 172800 IN NS b.nic.io. +02746D00000200010002A300000C0162046E733133036E657400 +tm. 172800 IN NS b.ns13.net. +02746D00000200010002A3000016036E73310C636F6D6D756E697479646E73036E657400 +tm. 172800 IN NS ns1.communitydns.net. +02746D00000200010002A300000F036E73330369636202636F02756B00 +tm. 172800 IN NS ns3.icb.co.uk. +02746D00002B000100015180001871070701C9660594EFA1DCCCCA1B6B7359262F2E11052403 +tm. 86400 IN DS 28935 7 1 C9660594EFA1DCCCCA1B6B7359262F2E11052403 +02746D00002B0001000151800024710707020C30AA64DF5149B0237F0CAD8E6AB22825BDC8CADBD7CC108F6FFC74AC428709 +tm. 86400 IN DS 28935 7 2 0C30AA64DF5149B0237F0CAD8E6AB22825BDC8CADBD7CC108F6FFC74AC428709 +02746D00002E0001000151800093002B08010001518052F4220052EAD97083770058911DD64AE057F266E76A66759EF464CF3B6BC14A1612B23E2D3F6F5C99DCC4AB6A1A1C94DF95F203A3773AAE938A7D962966AF36CF4CF73C8ED4695948EC7FCCCBA6E7AC1D6AA07F9E5AEF4F0AB1FC05CF739FB3639316A0E5CF2F8EFF60FFBD9E5BF98DEFF69FB53E2C5E72F503B6850370BBE6B4DC41051A36D7EE792FF5 +tm. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . WJEd1krgV/Jm52pmdZ70ZM87a8FKFhKyPi0/b1yZ3MSrahoclN+V8gOjdzquk4p9lilmrzbPTPc8jtRpWUjsf8zLpuesHWqgf55a708KsfwFz3Ofs2OTFqDlzy+O/2D/vZ5b+Y3v9p+1PixecvUDtoUDcLvmtNxBBRo21+55L/U= ;{id = 33655} +02746D00002E0001000151800093002F08010001518052F4220052EAD9708377004B5F2FF74C3E456F9EDBFCDBF91C6E484E8FE27D4C74E9F433D61EB607D609A0BD687B514224B6C2670FCC063A0F34AF7606A7B9A2BF7D736F5BF9122777894A40CC1C7C0CBBC2EE16048DD6AD395F0CAB3AA1C27D991236CA14406CB7B8A0FA4F236F8B0AD8E232A7044AFC7192385BE5E3E4DAAF4FC8A2D0E94D6443194D9B +tm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S18v90w+RW+e2/zb+RxuSE6P4n1MdOn0M9YetgfWCaC9aHtRQiS2wmcPzAY6DzSvdganuaK/fXNvW/kSJ3eJSkDMHHwMu8LuFgSN1q05XwyrOqHCfZkSNsoUQGy3uKD6TyNviwrY4jKnBEr8cZI4W+Xj5NqvT8ii0OlNZEMZTZs= ;{id = 33655} +02746D00002F000100015180000C02746E000006200000000013 +tm. 86400 IN NSEC tn. NS DS RRSIG NSEC +0161036E696302746D00000100010002A300000440FB1FB4 +a.nic.tm. 172800 IN A 64.251.31.180 +02746E00000200010002A300000C036E73310361746902746E00 +tn. 172800 IN NS ns1.ati.tn. +02746E00000200010002A300000C036E73320361746902746E00 +tn. 172800 IN NS ns2.ati.tn. +02746E00000200010002A300000C036E7332036E696302667200 +tn. 172800 IN NS ns2.nic.fr. +02746E00000200010002A300000C036E73380361746902746E00 +tn. 172800 IN NS ns8.ati.tn. +02746E00000200010002A300000C036E73390361746902746E00 +tn. 172800 IN NS ns9.ati.tn. +02746E00000200010002A300000D037269700370736703636F6D00 +tn. 172800 IN NS rip.psg.com. +02746E00000200010002A3000013056E732D746E07616672696E6963036E657400 +tn. 172800 IN NS ns-tn.afrinic.net. +02746E00002F000100015180000C02746F000006200000000003 +tn. 86400 IN NSEC to. NS RRSIG NSEC +02746E00002E0001000151800093002F08010001518052F4220052EAD9708377003CADBB2074E3A72288C80B97AD3A6ADE080CD530E286040A7CC74FBC300AC680368F3A34EF97D7FDF3B4D06811F82E4C019E1D80B477584279B9D07EE723ED228E539F9D5AD9A5BEFDB146121D36DB95BCD5AD17529E46FFC6219D40FB95FBD3D1AC76899B1F3BBDD923D09BBFF37D4206F1C5B3C69D944AEB334B4D3A300480 +tn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PK27IHTjpyKIyAuXrTpq3ggM1TDihgQKfMdPvDAKxoA2jzo075fX/fO00GgR+C5MAZ4dgLR3WEJ5udB+5yPtIo5Tn51a2aW+/bFGEh0225W81a0XUp5G/8YhnUD7lfvT0ax2iZsfO73ZI9Cbv/N9QgbxxbPGnZRK6zNLTTowBIA= ;{id = 33655} +036E73310361746902746E00000100010002A3000004C15F420A +ns1.ati.tn. 172800 IN A 193.95.66.10 +036E73310361746902746E00001C00010002A300001020014350000100010000000000000010 +ns1.ati.tn. 172800 IN AAAA 2001:4350:1:1::10 +036E73320361746902746E00000100010002A3000004C15F4316 +ns2.ati.tn. 172800 IN A 193.95.67.22 +036E73320361746902746E00001C00010002A300001020014350204800010000000000000022 +ns2.ati.tn. 172800 IN AAAA 2001:4350:2048:1::22 +036E73380361746902746E00000100010002A3000004C15F4206 +ns8.ati.tn. 172800 IN A 193.95.66.6 +036E73380361746902746E00001C00010002A300001020014350000100010000000000000006 +ns8.ati.tn. 172800 IN AAAA 2001:4350:1:1::6 +036E73390361746902746E00000100010002A3000004C15F431A +ns9.ati.tn. 172800 IN A 193.95.67.26 +036E73390361746902746E00001C00010002A300001020014350204800010000000000000026 +ns9.ati.tn. 172800 IN AAAA 2001:4350:2048:1::26 +02746F00000200010002A300001B02746F056363746C640761757468646E730472697065036E657400 +to. 172800 IN NS to.cctld.authdns.ripe.net. +02746F00000200010002A3000011036E7331076961667269636103636F6D00 +to. 172800 IN NS ns1.iafrica.com. +02746F00000200010002A300000904636F6C6F02746F00 +to. 172800 IN NS colo.to. +02746F00000200010002A300000A05746F6E696302746F00 +to. 172800 IN NS tonic.to. +02746F00000200010002A300001206617574683032026E73027575036E657400 +to. 172800 IN NS auth02.ns.uu.net. +02746F00002F000100015180000F05746F646179000006200000000003 +to. 86400 IN NSEC today. NS RRSIG NSEC +02746F00002E0001000151800093002F08010001518052F4220052EAD970837700668DBDDF19C60C1016E90423FA826E3FBBDB9FF203150838AF97406B1F420736F5B679EF8DB9E92090350A54BE89D157E7EA0356D035284B967D88C89187EB54AB0761D5E3E0EABDB5E1602DAE7134BF99280D6DBC238F00C85288F4536FC0BC0AE0EBFA2CE52A6DF3860A77E00208E8EE05626992DCD7808C92FFF1AFF6A1E0 +to. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zo293xnGDBAW6QQj+oJuP7vbn/IDFQg4r5dAax9CBzb1tnnvjbnpIJA1ClS+idFX5+oDVtA1KEuWfYjIkYfrVKsHYdXj4Oq9teFgLa5xNL+ZKA1tvCOPAMhSiPRTb8C8CuDr+izlKm3zhgp34AII6O4FYmmS3NeAjJL/8a/2oeA= ;{id = 33655} +04636F6C6F02746F00000100010002A3000004D84A2068 +colo.to. 172800 IN A 216.74.32.104 +05746F6E696302746F00000100010002A3000004D84A2064 +tonic.to. 172800 IN A 216.74.32.100 +05746F64617900000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +today. 172800 IN NS demand.beta.aridns.net.au. +05746F64617900000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +today. 172800 IN NS demand.alpha.aridns.net.au. +05746F64617900000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +today. 172800 IN NS demand.delta.aridns.net.au. +05746F64617900000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +today. 172800 IN NS demand.gamma.aridns.net.au. +05746F64617900002B000100015180002436730802CFED9FB12BD6FF22FF6FC7A6098428062D58B41236279221011BC3FDCCB1F3FF +today. 86400 IN DS 13939 8 2 CFED9FB12BD6FF22FF6FC7A6098428062D58B41236279221011BC3FDCCB1F3FF +05746F64617900002E0001000151800093002B08010001518052F4220052EAD9708377004DD38F309B1E137FED723E2C325908B649F9BFEEF6BD74054B35C7E8BBC7C07995BC30FBC7F589213E3446D7804A0AD4F8CC102D84D3793FFEAF88232A6625276C3F44F4870353C3C7DA515E3E44B39B333795F3F5726A7D68B46FC5780B76A18A0509BE9B2548B1038A15DED1CFA39A2048F6C6B476D5386A56602945282BE7 +today. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TdOPMJseE3/tcj4sMlkItkn5v+72vXQFSzXH6LvHwHmVvDD7x/WJIT40RteASgrU+MwQLYTTeT/+r4gjKmYlJ2w/RPSHA1PDx9pRXj5Es5szN5Xz9XJqfWi0b8V4C3ahigUJvpslSLEDihXe0c+jmiBI9sa0dtU4alZgKUUoK+c= ;{id = 33655} +05746F64617900002E0001000151800093002F08010001518052F4220052EAD9708377000D85AA662AD991657E8F4138DB882C2B161B5324B9E9F182190D75A05C85B2464DD6FFC2E1FD446F2E6C69E63D029A4FD42110660090FECF0D557E1B5055FAA302FD56991ED4D2BEA206EC643F8D4F26601E5650650A8CCC7B786951C95D40DAA08EA209CB63E261D588791904866F20D8495BBAB9C0470194FA1E7418656942 +today. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DYWqZirZkWV+j0E424gsKxYbUyS56fGCGQ11oFyFskZN1v/C4f1Eby5saeY9AppP1CEQZgCQ/s8NVX4bUFX6owL9Vpke1NK+ogbsZD+NTyZgHlZQZQqMzHt4aVHJXUDaoI6iCctj4mHViHkZBIZvINhJW7q5wEcBlPoedBhlaUI= ;{id = 33655} +05746F64617900002F000100015180000F05746F6B796F000006200000000013 +today. 86400 IN NSEC tokyo. NS DS RRSIG NSEC +05746F6B796F00000200010002A300001301610B676D6F7265676973747279036E657400 +tokyo. 172800 IN NS a.gmoregistry.net. +05746F6B796F00000200010002A300001301620B676D6F7265676973747279036E657400 +tokyo. 172800 IN NS b.gmoregistry.net. +05746F6B796F00000200010002A300001301630B676D6F7265676973747279036E657400 +tokyo. 172800 IN NS c.gmoregistry.net. +05746F6B796F00000200010002A300001301640B676D6F7265676973747279036E657400 +tokyo. 172800 IN NS d.gmoregistry.net. +05746F6B796F00000200010002A300001301650B676D6F7265676973747279036E657400 +tokyo. 172800 IN NS e.gmoregistry.net. +05746F6B796F00002B00010001518000248003080219E0438B0E13DE780175E4BCEBE46432C5287FDB9DFE2B4440FA4E3BFBB20BC6 +tokyo. 86400 IN DS 32771 8 2 19E0438B0E13DE780175E4BCEBE46432C5287FDB9DFE2B4440FA4E3BFBB20BC6 +05746F6B796F00002E0001000151800093002B08010001518052F4220052EAD9708377006ACD0BF0EBCCFA4C2D625AB53CC96D1BD1036096603AC27F836A4B826D0BF416F907C8A90B1DF29C45221FA40870E8AD0863658C98C5F9556A60A42F630400D78A894D96DF628174E2A204AC70036A710CBA482712BD2E04B820E3BD0211F34234DB7DE5048BFCDDCFE4BFC60A9C7A26FFFCA12AFFFC3323832DDC7BAE11F2C0 +tokyo. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . as0L8OvM+kwtYlq1PMltG9EDYJZgOsJ/g2pLgm0L9Bb5B8ipCx3ynEUiH6QIcOitCGNljJjF+VVqYKQvYwQA14qJTZbfYoF04qIErHADanEMukgnEr0uBLgg470CEfNCNNt95QSL/N3P5L/GCpx6Jv/8oSr//DMjgy3ce64R8sA= ;{id = 33655} +05746F6B796F00002E0001000151800093002F08010001518052F4220052EAD97083770074D7A79B033A3387A760EFC059CB06197638FD1203C27D40F495399CDC528F6BE017F8D0C685A52DE245ABDD8117263E959DDCFAC8A290B1B77E18CCFA0D706CA33AB521185F1582FA7347BE16686F02A359A4FD5CE913CDAF5FC300996C11959B4AC026CC1A5BC635B491EC753A3B697C22FD1AB05076C46EE283A268CC505E +tokyo. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dNenmwM6M4enYO/AWcsGGXY4/RIDwn1A9JU5nNxSj2vgF/jQxoWlLeJFq92BFyY+lZ3c+siikLG3fhjM+g1wbKM6tSEYXxWC+nNHvhZobwKjWaT9XOkTza9fwwCZbBGVm0rAJswaW8Y1tJHsdTo7aXwi/RqwUHbEbuKDomjMUF4= ;{id = 33655} +05746F6B796F00002F000100015180000F05746F6F6C73000006200000000013 +tokyo. 86400 IN NSEC tools. NS DS RRSIG NSEC +05746F6F6C7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +tools. 172800 IN NS demand.beta.aridns.net.au. +05746F6F6C7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +tools. 172800 IN NS demand.alpha.aridns.net.au. +05746F6F6C7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +tools. 172800 IN NS demand.delta.aridns.net.au. +05746F6F6C7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +tools. 172800 IN NS demand.gamma.aridns.net.au. +05746F6F6C7300002B0001000151800024F2E008029107EBABED1AE73F93CE28DA7931F52EE237911FB318E0F1BAE6F9AAC73631FE +tools. 86400 IN DS 62176 8 2 9107EBABED1AE73F93CE28DA7931F52EE237911FB318E0F1BAE6F9AAC73631FE +05746F6F6C7300002E0001000151800093002B08010001518052F4220052EAD9708377008ED28CDFC6870E7BD61B7B69512D2A86E762BCD09070716FB7D1376F1A2E0D974721A8F600568595A3579E06B63EEC5F526B82438C0D2589E4FB162A4BE76D308F0F4E838143C95DFC423F98FA72491AFFE30A3317DAB5081FF033DA073D3E5BD765F8006BAD64D2949BC5CAE8908F36DB25E6D7D285AC800BE1F70FDCFEEA08 +tools. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jtKM38aHDnvWG3tpUS0qhudivNCQcHFvt9E3bxouDZdHIaj2AFaFlaNXnga2PuxfUmuCQ4wNJYnk+xYqS+dtMI8PToOBQ8ld/EI/mPpySRr/4wozF9q1CB/wM9oHPT5b12X4AGutZNKUm8XK6JCPNtsl5tfShayAC+H3D9z+6gg= ;{id = 33655} +05746F6F6C7300002E0001000151800093002F08010001518052F4220052EAD97083770049ADAE73E4D5C8BD190E42D26A571893C28C30A172F703E3B715CD37B764E912FDD0B64D7376CD411B6B05ED52548A0959888D2BC1472CFF7A07CE7F41875FEDB1766B3E76ECAA38A4C5EDCA282C9EFC53DAB202AAC5EC57BCF82BDE45D169ED4BF3C85A52BB73BBF2A4B9B8BC81623BED7DEB0590F76A9427C03277805E0D58 +tools. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Sa2uc+TVyL0ZDkLSalcYk8KMMKFy9wPjtxXNN7dk6RL90LZNc3bNQRtrBe1SVIoJWYiNK8FHLP96B85/QYdf7bF2az527Ko4pMXtyigsnvxT2rICqsXsV7z4K95F0WntS/PIWlK7c7vypLm4vIFiO+196wWQ92qUJ8Ayd4BeDVg= ;{id = 33655} +05746F6F6C7300002F000100015180000C027470000006200000000013 +tools. 86400 IN NSEC tp. NS DS RRSIG NSEC +02747000000200010002A300001B027470056363746C640761757468646E730472697065036E657400 +tp. 172800 IN NS tp.cctld.authdns.ripe.net. +02747000000200010002A3000011036E7333026E730465736174036E657400 +tp. 172800 IN NS ns3.ns.esat.net. +02747000000200010002A30000130661757468303107636F6E6E65637402696500 +tp. 172800 IN NS auth01.connect.ie. +02747000000200010002A300001206617574683032026E73027575036E657400 +tp. 172800 IN NS auth02.ns.uu.net. +02747000000200010002A300001609757563702D67772D310270610364656303636F6D00 +tp. 172800 IN NS uucp-gw-1.pa.dec.com. +02747000000200010002A300001609757563702D67772D320270610364656303636F6D00 +tp. 172800 IN NS uucp-gw-2.pa.dec.com. +02747000002F000100015180000C027472000006200000000003 +tp. 86400 IN NSEC tr. NS RRSIG NSEC +02747000002E0001000151800093002F08010001518052F4220052EAD9708377007EC7D0B8F1E5A3D877E6AC284DB6F43C3295908FCC28DDD90B50D2D25FB8C11977C587AA60038101CEA32C8525A9FB2E58B0231432E8E51A161B6D325EFAB521C2F0342ED982389D7B9115BD0130AFD8F7E1B3B33144D7ED7FE59780DEC8E3E5CF452E05C4FEDE0F9666AF69E46A0739F8C8368C7BBF5032063E83402073BA97 +tp. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fsfQuPHlo9h35qwoTbb0PDKVkI/MKN3ZC1DS0l+4wRl3xYeqYAOBAc6jLIUlqfsuWLAjFDLo5RoWG20yXvq1IcLwNC7Zgjide5EVvQEwr9j34bOzMUTX7X/ll4DeyOPlz0UuBcT+3g+WZq9p5GoHOfjINox7v1AyBj6DQCBzupc= ;{id = 33655} +02747200000200010002A300001B027472056363746C640761757468646E730472697065036E657400 +tr. 172800 IN NS tr.cctld.authdns.ripe.net. +02747200000200010002A300000C036E7331036E696302747200 +tr. 172800 IN NS ns1.nic.tr. +02747200000200010002A300000C036E7332036E696302747200 +tr. 172800 IN NS ns2.nic.tr. +02747200000200010002A300000C036E7333036E696302747200 +tr. 172800 IN NS ns3.nic.tr. +02747200000200010002A300000C036E7334036E696302747200 +tr. 172800 IN NS ns4.nic.tr. +02747200000200010002A300000C036E7335036E696302747200 +tr. 172800 IN NS ns5.nic.tr. +02747200002F000100015180001208747261696E696E67000006200000000003 +tr. 86400 IN NSEC training. NS RRSIG NSEC +02747200002E0001000151800093002F08010001518052F4220052EAD97083770091BE66F21EDFACBA55101CBBDD9AE9749206960DB6E40199583EACE0A70B15A867B8C9FCDFBE6ED9B0779359DD3119066FE796A23540D78181768C000D4E2DBB67BA8CCA4324F20B88DF6F6A293C570E92B70CD3254990E36D39997D7D9428C1C67CDDB87247652211028A40C3ED668BA2AB4072B796C0127DECA4E131E25B63 +tr. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kb5m8h7frLpVEBy73ZrpdJIGlg225AGZWD6s4KcLFahnuMn8375u2bB3k1ndMRkGb+eWojVA14GBdowADU4tu2e6jMpDJPILiN9vaik8Vw6StwzTJUmQ4205mX19lCjBxnzduHJHZSIRAopAw+1mi6KrQHK3lsASfeyk4THiW2M= ;{id = 33655} +036E7331036E696302747200000100010002A3000004907A5F33 +ns1.nic.tr. 172800 IN A 144.122.95.51 +036E7331036E696302747200001C00010002A300001020010A98003000AD0000000000000011 +ns1.nic.tr. 172800 IN AAAA 2001:a98:30:ad::11 +036E7332036E696302747200000100010002A3000004907A5F34 +ns2.nic.tr. 172800 IN A 144.122.95.52 +036E7332036E696302747200001C00010002A300001020010A98003000AD0000000000000012 +ns2.nic.tr. 172800 IN AAAA 2001:a98:30:ad::12 +036E7333036E696302747200000100010002A3000004D5F8A283 +ns3.nic.tr. 172800 IN A 213.248.162.131 +036E7334036E696302747200000100010002A3000004C18C64C8 +ns4.nic.tr. 172800 IN A 193.140.100.200 +036E7335036E696302747200000100010002A3000004B2FB2A12 +ns5.nic.tr. 172800 IN A 178.251.42.18 +08747261696E696E6700000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +training. 172800 IN NS demand.beta.aridns.net.au. +08747261696E696E6700000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +training. 172800 IN NS demand.alpha.aridns.net.au. +08747261696E696E6700000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +training. 172800 IN NS demand.delta.aridns.net.au. +08747261696E696E6700000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +training. 172800 IN NS demand.gamma.aridns.net.au. +08747261696E696E6700002B0001000151800024B97D0802C8DE27AC32C7BFBFD8502763B6A472CD4A90F15F4BD1427C712139A23D2C24D0 +training. 86400 IN DS 47485 8 2 C8DE27AC32C7BFBFD8502763B6A472CD4A90F15F4BD1427C712139A23D2C24D0 +08747261696E696E6700002E0001000151800093002B08010001518052F4220052EAD970837700745480A32D6FBAC519C31EDC6C1F2F5329447841DE4C2CF8479FB7DDFCD8CAC3B7FE269861A99E87E5A63955313295F5ED1DAE28EB6CD54A36518751B19F5453E21C97285BE471C9A7EF21449EC161469AA4A7449D48D7385DE05E8B0F14FA5558929C9F250D81D0578A955198B2650C983338C6BE528F33FD30B09C2A4372F9 +training. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . dFSAoy1vusUZwx7cbB8vUylEeEHeTCz4R5+33fzYysO3/iaYYameh+WmOVUxMpX17R2uKOts1Uo2UYdRsZ9UU+Iclyhb5HHJp+8hRJ7BYUaapKdEnUjXOF3gXosPFPpVWJKcnyUNgdBXipVRmLJlDJgzOMa+Uo8z/TCwnCpDcvk= ;{id = 33655} +08747261696E696E6700002E0001000151800093002F08010001518052F4220052EAD97083770032AA204F27FD3222C28E89EF4CA8D00B71ACE8E9B003D5C1F8CD4E2A1B98B8AFF27AC1FF2B12DEB5A120C9E38DA03F3F82C7F73E7C34277615BE25722F7C7A8F4AB3323AFE43022BC8A22C7E4D1CF5CF8DA46C81C3C25E2C32DFFB4D573B25C6A8B16696AD6F449C5F0475C4B636AABE496B9A2BF88BA15DA1D8A5435857E3A5 +training. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MqogTyf9MiLCjonvTKjQC3Gs6OmwA9XB+M1OKhuYuK/yesH/KxLetaEgyeONoD8/gsf3Pnw0J3YVviVyL3x6j0qzMjr+QwIryKIsfk0c9c+NpGyBw8JeLDLf+01XOyXGqLFmlq1vRJxfBHXEtjaqvklrmiv4i6FdodilQ1hX46U= ;{id = 33655} +08747261696E696E6700002F00010001518000100674726176656C000006200000000013 +training. 86400 IN NSEC travel. NS DS RRSIG NSEC +0674726176656C00000200010002A300000F01610467746C640674726176656C00 +travel. 172800 IN NS a.gtld.travel. +0674726176656C00000200010002A300000F01620467746C640674726176656C00 +travel. 172800 IN NS b.gtld.travel. +0674726176656C00000200010002A300000F01630467746C640674726176656C00 +travel. 172800 IN NS c.gtld.travel. +0674726176656C00000200010002A300000F01640467746C640674726176656C00 +travel. 172800 IN NS d.gtld.travel. +0674726176656C00000200010002A300000F01650467746C640674726176656C00 +travel. 172800 IN NS e.gtld.travel. +0674726176656C00000200010002A300000F01660467746C640674726176656C00 +travel. 172800 IN NS f.gtld.travel. +0674726176656C00002F000100015180000C027474000006200000000003 +travel. 86400 IN NSEC tt. NS RRSIG NSEC +0674726176656C00002E0001000151800093002F08010001518052F4220052EAD97083770097DDFD3658573F877AD1736F91E94010E62F91BDC9C7DB9D3C4EF88666890CC2E0DA6E205A01DE61F8F7491E70835E44AD66CB8D5076E98183E8C07255FCC8B6D0D1DC3C3CF95A90C69EE5B52B653CF6771275EEDC3755B92BF0927DCD0A9142DB9F9DAE71F8F79CDFAD207BA09D70BB1ECDA7CBD69FEA11F5141E1E0F7A2C1D +travel. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . l939NlhXP4d60XNvkelAEOYvkb3Jx9udPE74hmaJDMLg2m4gWgHeYfj3SR5wg15ErWbLjVB26YGD6MByVfzIttDR3Dw8+VqQxp7ltStlPPZ3EnXu3DdVuSvwkn3NCpFC25+drnH495zfrSB7oJ1wux7Np8vWn+oR9RQeHg96LB0= ;{id = 33655} +01610467746C640674726176656C00000100010002A30000049C9A6401 +a.gtld.travel. 172800 IN A 156.154.100.1 +01610467746C640674726176656C00001C00010002A300001020010502AD0900000000000000000001 +a.gtld.travel. 172800 IN AAAA 2001:502:ad09::1 +01620467746C640674726176656C00000100010002A30000049C9A6501 +b.gtld.travel. 172800 IN A 156.154.101.1 +01630467746C640674726176656C00000100010002A30000049C9A6601 +c.gtld.travel. 172800 IN A 156.154.102.1 +01640467746C640674726176656C00000100010002A30000049C9A6701 +d.gtld.travel. 172800 IN A 156.154.103.1 +01640467746C640674726176656C00001C00010002A3000010200105022EDA00000000000000000001 +d.gtld.travel. 172800 IN AAAA 2001:502:2eda::1 +01650467746C640674726176656C00000100010002A30000049C9A6801 +e.gtld.travel. 172800 IN A 156.154.104.1 +01660467746C640674726176656C00000100010002A30000049C9A6901 +f.gtld.travel. 172800 IN A 156.154.105.1 +02747400000200010002A300000C036E7333036E6963026D7800 +tt. 172800 IN NS ns3.nic.mx. +02747400000200010002A300000C03706368036E696302747400 +tt. 172800 IN NS pch.nic.tt. +02747400000200010002A300000D0472697065036E696302747400 +tt. 172800 IN NS ripe.nic.tt. +02747400000200010002A300001006736E732D706203697363036F726700 +tt. 172800 IN NS sns-pb.isc.org. +02747400002B000100015180002409EB0802B06DFA79674DF3EA8190E7616164414B01E9199B7C94EC1540378A395DAA401F +tt. 86400 IN DS 2539 8 2 B06DFA79674DF3EA8190E7616164414B01E9199B7C94EC1540378A395DAA401F +02747400002E0001000151800093002B08010001518052F4220052EAD9708377007D52A393CF28D6C69D3F9ABB3AC1B91D62FE1CC06596B8EBEE27682AE942A50ADC5FE35DFB11B0C609D8E90EF295FBE2FA3544CB490A4B364114ADCE65D8CBC0F894B36E6130CCB09271DCD5E4CC6E724E48FC95A9EE02562E2DB146D788C8F0EDC1099F2E4D94C68B245997C6D79D536EECF8C9D5F52DA8EFA4A58163D487B3 +tt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . fVKjk88o1sadP5q7OsG5HWL+HMBllrjr7idoKulCpQrcX+Nd+xGwxgnY6Q7ylfvi+jVEy0kKSzZBFK3OZdjLwPiUs25hMMywknHc1eTMbnJOSPyVqe4CVi4tsUbXiMjw7cEJny5NlMaLJFmXxtedU27s+MnV9S2o76SlgWPUh7M= ;{id = 33655} +02747400002E0001000151800093002F08010001518052F4220052EAD9708377004D3DE2A902FD9148A7625AAA2C196CE2B0310D01B885020964BB95D43C456E18A0ED0E2C21153332A2150FDC3076B86515B0DD27A2F6C72981094146D9DE6E9822C395119405C47616C2F0DAEFA1AF98E630B0645BE583DE58C1EFABAC1D2D441411F3FDB6A4D860417AB447BDA4191A0295670C6C2D7E5B6FF0E2E73F38D57D +tt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . TT3iqQL9kUinYlqqLBls4rAxDQG4hQIJZLuV1DxFbhig7Q4sIRUzMqIVD9wwdrhlFbDdJ6L2xymBCUFG2d5umCLDlRGUBcR2FsLw2u+hr5jmMLBkW+WD3ljB76usHS1EFBHz/bak2GBBerRHvaQZGgKVZwxsLX5bb/Di5z841X0= ;{id = 33655} +02747400002F000100015180000C027476000006200000000013 +tt. 86400 IN NSEC tv. NS DS RRSIG NSEC +03706368036E696302747400000100010002A3000004CC3DD83F +pch.nic.tt. 172800 IN A 204.61.216.63 +03706368036E696302747400001C00010002A3000010200105000014606300AD000000000001 +pch.nic.tt. 172800 IN AAAA 2001:500:14:6063:ad::1 +0472697065036E696302747400000100010002A3000004C1000932 +ripe.nic.tt. 172800 IN A 193.0.9.50 +0472697065036E696302747400001C00010002A30000102001067C00E000000000000000000050 +ripe.nic.tt. 172800 IN AAAA 2001:67c:e0::50 +02747600000200010002A300000E026135056E73746C6403636F6D00 +tv. 172800 IN NS a5.nstld.com. +02747600000200010002A300000E026335056E73746C6403636F6D00 +tv. 172800 IN NS c5.nstld.com. +02747600000200010002A300000E026435056E73746C6403636F6D00 +tv. 172800 IN NS d5.nstld.com. +02747600000200010002A300000E026635056E73746C6403636F6D00 +tv. 172800 IN NS f5.nstld.com. +02747600000200010002A300000E026735056E73746C6403636F6D00 +tv. 172800 IN NS g5.nstld.com. +02747600000200010002A300000E026835056E73746C6403636F6D00 +tv. 172800 IN NS h5.nstld.com. +02747600000200010002A300000E026C35056E73746C6403636F6D00 +tv. 172800 IN NS l5.nstld.com. +02747600002B0001000151800018AF6808013E447F7145888B3137E9D83EEC9FB77671A8647D +tv. 86400 IN DS 44904 8 1 3E447F7145888B3137E9D83EEC9FB77671A8647D +02747600002B0001000151800024AF6808021CFE1309925B78F42C8B4862A670B0BAB9FC142ED8B4D41E24C65FE6A0D9DFB4 +tv. 86400 IN DS 44904 8 2 1CFE1309925B78F42C8B4862A670B0BAB9FC142ED8B4D41E24C65FE6A0D9DFB4 +02747600002E0001000151800093002B08010001518052F4220052EAD97083770024DF5F2BE04525F20D4FE1D904F602730DBE8AF2950FBB5B6CE4C535ED37697D7C6AF0EFD96B477A9D83F04AFB6686C6829B699FB5C6DFF2CE1032AC4B26521157D7403D134DAF1CC9842AA171925D595DC4998136D475C15BC24F218DC7B7BE971356636C44AED35C0F4CE1C42C4B35842AAE84A9709BFC753CC4BC55F10C4A +tv. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . JN9fK+BFJfINT+HZBPYCcw2+ivKVD7tbbOTFNe03aX18avDv2WtHep2D8Er7ZobGgptpn7XG3/LOEDKsSyZSEVfXQD0TTa8cyYQqoXGSXVldxJmBNtR1wVvCTyGNx7e+lxNWY2xErtNcD0zhxCxLNYQqroSpcJv8dTzEvFXxDEo= ;{id = 33655} +02747600002E0001000151800093002F08010001518052F4220052EAD97083770029DFB83ECAC427B0210DE25A5C2502826C00A84A805E39A020A36E5A2D118460EA7464A582B7F3C09DB4DCBB7DAF8853F1909E332A8D21E1CEC0050F2988B306F194093E71EF129F4B4EA70A27568F3D9614A6906EECAFF7AA627D7B4EE3CEE861E50FDE355AF35064684445ADE6EE1D0DEB280C5E74E859C837AC2C5A199365 +tv. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Kd+4PsrEJ7AhDeJaXCUCgmwAqEqAXjmgIKNuWi0RhGDqdGSlgrfzwJ203Lt9r4hT8ZCeMyqNIeHOwAUPKYizBvGUCT5x7xKfS06nCidWjz2WFKaQbuyv96pifXtO487oYeUP3jVa81BkaERFrebuHQ3rKAxedOhZyDesLFoZk2U= ;{id = 33655} +02747600002F000100015180000C027477000006200000000013 +tv. 86400 IN NSEC tw. NS DS RRSIG NSEC +02747700000200010002A300000A016103646E7302747700 +tw. 172800 IN NS a.dns.tw. +02747700000200010002A300000A016203646E7302747700 +tw. 172800 IN NS b.dns.tw. +02747700000200010002A300000A016303646E7302747700 +tw. 172800 IN NS c.dns.tw. +02747700000200010002A300000A016403646E7302747700 +tw. 172800 IN NS d.dns.tw. +02747700000200010002A300000A016503646E7302747700 +tw. 172800 IN NS e.dns.tw. +02747700000200010002A300000A016603646E7302747700 +tw. 172800 IN NS f.dns.tw. +02747700000200010002A300000A016703646E7302747700 +tw. 172800 IN NS g.dns.tw. +02747700000200010002A300000A016803646E7302747700 +tw. 172800 IN NS h.dns.tw. +02747700000200010002A300000E026E730574776E6963036E657400 +tw. 172800 IN NS ns.twnic.net. +02747700000200010002A300001004736563340561706E6963036E657400 +tw. 172800 IN NS sec4.apnic.net. +02747700002B00010001518000244D440802FB47A76AA51546976D0DFAED95529D072B607B276CAC090DEDF42629FD271B40 +tw. 86400 IN DS 19780 8 2 FB47A76AA51546976D0DFAED95529D072B607B276CAC090DEDF42629FD271B40 +02747700002E0001000151800093002B08010001518052F4220052EAD970837700A703D034AA00793521122C3B45CDD0D635E48793AC8A310C286552B14F0789A821DEB949D27283C7947A6DB620EC8BC5EB3698F8FDFB2054E2EB399020C1F4EB14674EB203B9908AD52CD55CFA47919762029D054EDE9C2FD242D950ECC40308D3B0F21D6A704890310E1E325549242C369CA78DA690F58CBB50E7F3E43C07C7 +tw. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . pwPQNKoAeTUhEiw7Rc3Q1jXkh5OsijEMKGVSsU8Hiagh3rlJ0nKDx5R6bbYg7IvF6zaY+P37IFTi6zmQIMH06xRnTrIDuZCK1SzVXPpHkZdiAp0FTt6cL9JC2VDsxAMI07DyHWpwSJAxDh4yVUkkLDacp42mkPWMu1Dn8+Q8B8c= ;{id = 33655} +02747700002E0001000151800093002F08010001518052F4220052EAD9708377008610C715768C901F6DAE05FB06CF2690CA08A034B85200387EB005B4C434D675096A3659776B88E25F0E3A1BB38DCC8428164C2BE67CEF4985FBB63864FB6C7DAC6968DD8208EF056F8A41A76C076C2EC6BF4B13D60F153E41D5A0100FA3AE4B96468D27058EEEC5D9C66768DC44A5BABFA458C12F408EAD92F96EE60D02E1F6 +tw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hhDHFXaMkB9trgX7Bs8mkMoIoDS4UgA4frAFtMQ01nUJajZZd2uI4l8OOhuzjcyEKBZMK+Z870mF+7Y4ZPtsfaxpaN2CCO8Fb4pBp2wHbC7Gv0sT1g8VPkHVoBAPo65LlkaNJwWO7sXZxmdo3ESlur+kWMEvQI6tkvlu5g0C4fY= ;{id = 33655} +02747700002F000100015180000C02747A000006200000000013 +tw. 86400 IN NSEC tz. NS DS RRSIG NSEC +016103646E7302747700000100010002A3000004CB491808 +a.dns.tw. 172800 IN A 203.73.24.8 +016103646E7302747700001C00010002A300001020010CD8080000000000000000000008 +a.dns.tw. 172800 IN AAAA 2001:cd8:800::8 +016203646E7302747700000100010002A3000004D2C98A3A +b.dns.tw. 172800 IN A 210.201.138.58 +016203646E7302747700001C00010002A30000102404000010A000000000000000000058 +b.dns.tw. 172800 IN AAAA 2404:0:10a0::58 +016303646E7302747700000100010002A30000043DDC3001 +c.dns.tw. 172800 IN A 61.220.48.1 +016303646E7302747700001C00010002A30000102001B020000000770000000000000001 +c.dns.tw. 172800 IN AAAA 2001:b020:0:77::1 +016403646E7302747700000100010002A3000004D21109E6 +d.dns.tw. 172800 IN A 210.17.9.230 +016403646E7302747700001C00010002A300001020010C50FFFF00010000000000000230 +d.dns.tw. 172800 IN AAAA 2001:c50:ffff:1::230 +016503646E7302747700000100010002A3000004D314E70B +e.dns.tw. 172800 IN A 211.20.231.11 +016503646E7302747700001C00010002A30000102001B00001E0C0000000000000000011 +e.dns.tw. 172800 IN AAAA 2001:b000:1e0:c000::11 +016603646E7302747700000100010002A3000004A31C010A +f.dns.tw. 172800 IN A 163.28.1.10 +016703646E7302747700000100010002A3000004DCE5E1C3 +g.dns.tw. 172800 IN A 220.229.225.195 +016703646E7302747700001C00010002A300001020010CD8040000000000000000000195 +g.dns.tw. 172800 IN AAAA 2001:cd8:400::195 +016803646E7302747700000100010002A3000004CB770301 +h.dns.tw. 172800 IN A 203.119.3.1 +016803646E7302747700001C00010002A300001024057E00100100000000000000000111 +h.dns.tw. 172800 IN AAAA 2405:7e00:1001::111 +02747A00000200010002A300000E016403657874036E696302637A00 +tz. 172800 IN NS d.ext.nic.cz. +02747A00000200010002A3000012026E7307616E796361737402636F02747A00 +tz. 172800 IN NS ns.anycast.co.tz. +02747A00000200010002A3000011036E733205747A6E6963026F7202747A00 +tz. 172800 IN NS ns2.tznic.or.tz. +02747A00000200010002A300000D037269700370736703636F6D00 +tz. 172800 IN NS rip.psg.com. +02747A00000200010002A300001604666F726B0373746807646E736E6F6465036E657400 +tz. 172800 IN NS fork.sth.dnsnode.net. +02747A00000200010002A3000013056E732D747A07616672696E6963036E657400 +tz. 172800 IN NS ns-tz.afrinic.net. +02747A00000200010002A300001006736E732D706203697363036F726700 +tz. 172800 IN NS sns-pb.isc.org. +02747A00002B00010001518000184DEC0501F8EECE7181F56EA0C796DF630E648698391F1D66 +tz. 86400 IN DS 19948 5 1 F8EECE7181F56EA0C796DF630E648698391F1D66 +02747A00002E0001000151800093002B08010001518052F4220052EAD9708377005C559100953DA1CC66E061FD16FCA63BFF16C369E0DE8E6C2815F41BAC2FFFD9D689F62CDD87876A72E2AC53E190CF1FEB5A31218D1F70C831C8BA9D8A12CB6B491AE21FE7D0242C53639F144170BD3D3A4AC3FF1C76420C47CB5CCF3923B420757910A1856989A307F6298C4F67C14F2FA6E6FCBB350398EA05332916102055 +tz. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XFWRAJU9ocxm4GH9FvymO/8Ww2ng3o5sKBX0G6wv/9nWifYs3YeHanLirFPhkM8f61oxIY0fcMgxyLqdihLLa0ka4h/n0CQsU2OfFEFwvT06SsP/HHZCDEfLXM85I7QgdXkQoYVpiaMH9imMT2fBTy+m5vy7NQOY6gUzKRYQIFU= ;{id = 33655} +02747A00002E0001000151800093002F08010001518052F4220052EAD9708377004F57DCFCFAAE365D988880304DD9C847367BE46D02E5F0B3E3C47C2680FCEC0561C01580F4411FCD0068DFB478BBDFFFFE59018F2EDB4CBCA8CC32D1105BBA5DD7CAC35F2460C7AF218C86FB45E9B9257F95F0ADACA264DD016AEA6D99F5B4319BAB530A5069F8D0A37A2A74242346D17230E2B2E2A76A4CA563C9B5F9B30B7E +tz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . T1fc/PquNl2YiIAwTdnIRzZ75G0C5fCz48R8JoD87AVhwBWA9EEfzQBo37R4u9///lkBjy7bTLyozDLREFu6XdfKw18kYMevIYyG+0XpuSV/lfCtrKJk3QFq6m2Z9bQxm6tTClBp+NCjeip0JCNG0XIw4rLip2pMpWPJtfmzC34= ;{id = 33655} +02747A00002F000100015180000C027561000006200000000013 +tz. 86400 IN NSEC ua. NS DS RRSIG NSEC +026E7307616E796361737402636F02747A00000100010002A3000004CC3DD80F +ns.anycast.co.tz. 172800 IN A 204.61.216.15 +026E7307616E796361737402636F02747A00001C00010002A3000010200105000014601500AD000000000001 +ns.anycast.co.tz. 172800 IN AAAA 2001:500:14:6015:ad::1 +036E733205747A6E6963026F7202747A00000100010002A3000004C4D8A243 +ns2.tznic.or.tz. 172800 IN A 196.216.162.67 +036E733205747A6E6963026F7202747A00001C00010002A3000010200143F800E000010000000000000067 +ns2.tznic.or.tz. 172800 IN AAAA 2001:43f8:e0:1::67 +02756100002F000100015180000C027567000006200000000013 +ua. 86400 IN NSEC ug. NS DS RRSIG NSEC +02756100002E0001000151800093002F08010001518052F4220052EAD9708377009906285DF8554FA44FB228F266D699CDBE161CB055D88273057C9A6A45F8BBC94960ED7ECC591661FB8D74C47ED0E655102B0D3B17CD1045083A94859B2FEA95D1F4D190D628F173D64E49F2136BFE2E4BEC7F5362E45CFDDEFE92D88E893640E062299E4FC398264ED0E544B314472A73138A82FB7B61AFB3905197CFD1B538 +ua. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . mQYoXfhVT6RPsijyZtaZzb4WHLBV2IJzBXyaakX4u8lJYO1+zFkWYfuNdMR+0OZVECsNOxfNEEUIOpSFmy/qldH00ZDWKPFz1k5J8hNr/i5L7H9TYuRc/d7+ktiOiTZA4GIpnk/DmCZO0OVEsxRHKnMTioL7e2Gvs5BRl8/RtTg= ;{id = 33655} +02756100002E0001000151800093002B08010001518052F4220052EAD9708377008FCC1562E2ECD45C413730C7751ED6634C8CB01C81EF73055D6F2BA65D28CE23EB8BDADA690D085F9E3F1928050A0A06CF44B7F5104936B7A3849A7FADE03A2F4FB58F56B422A4BFD1F9FFE3D61B4D283F955AD9B97884C8189078E690FF33E3892324FF81CF9A4ECA1BE9D59F8DAEC9BBA6EBED0E43AE2CF040DD074FD5C644 +ua. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . j8wVYuLs1FxBNzDHdR7WY0yMsByB73MFXW8rpl0oziPri9raaQ0IX54/GSgFCgoGz0S39RBJNrejhJp/reA6L0+1j1a0IqS/0fn/49YbTSg/lVrZuXiEyBiQeOaQ/zPjiSMk/4HPmk7KG+nVn42uybum6+0OQ64s8EDdB0/VxkQ= ;{id = 33655} +02756100000200010002A300000B03636431026E7302756100 +ua. 172800 IN NS cd1.ns.ua. +02756100000200010002A300000B03686531026E7302756100 +ua. 172800 IN NS he1.ns.ua. +02756100000200010002A300000B03686F31026E7302756100 +ua. 172800 IN NS ho1.ns.ua. +02756100000200010002A300000B03706368026E7302756100 +ua. 172800 IN NS pch.ns.ua. +02756100000200010002A300000C0472697065026E7302756100 +ua. 172800 IN NS ripe.ns.ua. +02756100000200010002A300001006736E732D706203697363036F726700 +ua. 172800 IN NS sns-pb.isc.org. +02756100002B0001000151800024DCC20A02BDD7A310534F76B2B6B25C94F816F9B9F260A2E35F526A9287E3307FB2CD16D8 +ua. 86400 IN DS 56514 10 2 BDD7A310534F76B2B6B25C94F816F9B9F260A2E35F526A9287E3307FB2CD16D8 +02617A0A686F73746D617374657202756100000100010002A3000004C32FFD0D +az.hostmaster.ua. 172800 IN A 195.47.253.13 +02617A0A686F73746D617374657202756100001C00010002A30000102001067C025800000000000000000013 +az.hostmaster.ua. 172800 IN AAAA 2001:67c:258::13 +0267650A686F73746D617374657202756100000100010002A3000004C32FFD12 +ge.hostmaster.ua. 172800 IN A 195.47.253.18 +0267650A686F73746D617374657202756100001C00010002A30000102001067C025800000000000000000018 +ge.hostmaster.ua. 172800 IN AAAA 2001:67c:258::18 +057469657231036E756D036E657402756100000100010002A3000004C16EA386 +tier1.num.net.ua. 172800 IN A 193.110.163.134 +03636431026E7302756100000100010002A3000004C2000109 +cd1.ns.ua. 172800 IN A 194.0.1.9 +03636431026E7302756100001C00010002A300001020010678000400000000000000000009 +cd1.ns.ua. 172800 IN AAAA 2001:678:4::9 +03686531026E7302756100000100010002A3000004D8DAD71B +he1.ns.ua. 172800 IN A 216.218.215.27 +03686531026E7302756100001C00010002A300001020010470002E00010000000000000027 +he1.ns.ua. 172800 IN AAAA 2001:470:2e:1::27 +03686F31026E7302756100000100010002A3000004C32FFD01 +ho1.ns.ua. 172800 IN A 195.47.253.1 +03686F31026E7302756100001C00010002A30000102001067C025800000000000000000001 +ho1.ns.ua. 172800 IN AAAA 2001:67c:258::1 +03706368026E7302756100000100010002A3000004CC3DD80C +pch.ns.ua. 172800 IN A 204.61.216.12 +03706368026E7302756100001C00010002A3000010200105000014601200AD000000000001 +pch.ns.ua. 172800 IN AAAA 2001:500:14:6012:ad::1 +0472697065026E7302756100000100010002A3000004C1000979 +ripe.ns.ua. 172800 IN A 193.0.9.121 +0472697065026E7302756100001C00010002A30000102001067C00E000000000000000000121 +ripe.ns.ua. 172800 IN AAAA 2001:67c:e0::121 +02756700000200010002A300000E026E73056963616E6E036F726700 +ug. 172800 IN NS ns.icann.org. +02756700000200010002A300001B027567056363746C640761757468646E730472697065036E657400 +ug. 172800 IN NS ug.cctld.authdns.ripe.net. +02756700000200010002A300001104726F6F740465616864026F7202756700 +ug. 172800 IN NS root.eahd.or.ug. +02756700000200010002A3000013056E732D756707616672696E6963036E657400 +ug. 172800 IN NS ns-ug.afrinic.net. +02756700000200010002A300001407616E79636173740465616864026F7202756700 +ug. 172800 IN NS anycast.eahd.or.ug. +02756700002B00010001518000240ACF08024278D7C4B2B45738A39F310EAC36558411BD547812517BDF23F95FCBB4796B2E +ug. 86400 IN DS 2767 8 2 4278D7C4B2B45738A39F310EAC36558411BD547812517BDF23F95FCBB4796B2E +02756700002E0001000151800093002B08010001518052F4220052EAD970837700316DCECC677C342D731AF1A34B7B78B3A55DD75BA2392E8407FD4C34E8A50BC659E0F037998227F598644E94B9C382965CE98874EE2A41C72A2C8E2F7F03209DBF4C3E90BD1E30D5E52AB4D8927338CD361300F0EC22D8C4DC065C3BBB3B7A92078D87167D88C85B147EAFD7EA7F1F96A5DE320C5646F8A7131376C8BD77FE74 +ug. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . MW3OzGd8NC1zGvGjS3t4s6Vd11uiOS6EB/1MNOilC8ZZ4PA3mYIn9ZhkTpS5w4KWXOmIdO4qQccqLI4vfwMgnb9MPpC9HjDV5Sq02JJzOM02EwDw7CLYxNwGXDu7O3qSB42HFn2IyFsUfq/X6n8flqXeMgxWRvinExN2yL13/nQ= ;{id = 33655} +02756700002E0001000151800093002F08010001518052F4220052EAD970837700BA12D47EB4C6FDD2BEE1E7425CD84127BA1CC2C6BE4B352D7AC95B32606118DBBECB272CE9C1448CD55064F30A1C34DC774427D63999DBC61F742FC1C9A861D09C4B89F9702C55436D9A579B65B007CE6137063182F426813CA63F3FA23D4720B54F9EAF809D21FAD4177618608D4841D058FE107C9DFABA8DB9F239ACFD4CA2 +ug. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uhLUfrTG/dK+4edCXNhBJ7ocwsa+SzUteslbMmBhGNu+yycs6cFEjNVQZPMKHDTcd0Qn1jmZ28YfdC/Byahh0JxLiflwLFVDbZpXm2WwB85hNwYxgvQmgTymPz+iPUcgtU+er4CdIfrUF3YYYI1IQdBY/hB8nfq6jbnyOaz9TKI= ;{id = 33655} +02756700002F000100015180000C02756B000006200000000013 +ug. 86400 IN NSEC uk. NS DS RRSIG NSEC +07616E79636173740465616864026F7202756700000100010002A3000004CC3DD83C +anycast.eahd.or.ug. 172800 IN A 204.61.216.60 +07616E79636173740465616864026F7202756700001C00010002A3000010200105000014606000AD000000000001 +anycast.eahd.or.ug. 172800 IN AAAA 2001:500:14:6060:ad::1 +04726F6F740465616864026F7202756700000100010002A3000004D4586184 +root.eahd.or.ug. 172800 IN A 212.88.97.132 +02756B00002F000100015180000D03756E6F000006200000000013 +uk. 86400 IN NSEC uno. NS DS RRSIG NSEC +02756B00002E0001000151800093002F08010001518052F4220052EAD9708377009DB356E6FD18D35A026039AEB5BE7AA771F710D2CACD04ACF60329FC3A8BFD9E32B135C42301A52054D284132D0DF964BF8A6DCEC636697C2E6EAB6D4C50CE6CBDC8460EDA57D720A4D7A2A684DE2F5C23FE62BE727E5AAA392A90E49EDDE0F06814FD81DB93830E8D14322E8C28A37559663E20F90D7B97B5DDB927CD833FA2 +uk. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nbNW5v0Y01oCYDmutb56p3H3ENLKzQSs9gMp/DqL/Z4ysTXEIwGlIFTShBMtDflkv4ptzsY2aXwubqttTFDObL3IRg7aV9cgpNeipoTeL1wj/mK+cn5aqjkqkOSe3eDwaBT9gduTgw6NFDIujCijdVlmPiD5DXuXtd25J82DP6I= ;{id = 33655} +02756B00002E0001000151800093002B08010001518052F4220052EAD9708377008F27F971FC8710A374ECBB7C5E7D3F0C177422800A916E71FE2CD55F97603A71A4D4D27F52DA106C3498739762665365A3C2CB642CE6004BF842BF21B9F3E34DAAE28FB0B45C934475F72E09C8C17D4D698F8EBEA075B84AE9A6F6D9A00A39AD9EBE570EEFA6720D69273E50891AC5814F0ECD1AC978A4C59B07085884DBD627 +uk. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jyf5cfyHEKN07Lt8Xn0/DBd0IoAKkW5x/izVX5dgOnGk1NJ/UtoQbDSYc5diZlNlo8LLZCzmAEv4Qr8hufPjTarij7C0XJNEdfcuCcjBfU1pj46+oHW4Summ9tmgCjmtnr5XDu+mcg1pJz5QiRrFgU8OzRrJeKTFmwcIWITb1ic= ;{id = 33655} +02756B00000200010002A300000C036E7331036E696302756B00 +uk. 172800 IN NS ns1.nic.uk. +02756B00000200010002A300000C036E7332036E696302756B00 +uk. 172800 IN NS ns2.nic.uk. +02756B00000200010002A300000C036E7333036E696302756B00 +uk. 172800 IN NS ns3.nic.uk. +02756B00000200010002A300000C036E7334036E696302756B00 +uk. 172800 IN NS ns4.nic.uk. +02756B00000200010002A300000C036E7335036E696302756B00 +uk. 172800 IN NS ns5.nic.uk. +02756B00000200010002A300000C036E7336036E696302756B00 +uk. 172800 IN NS ns6.nic.uk. +02756B00000200010002A300000C036E7337036E696302756B00 +uk. 172800 IN NS ns7.nic.uk. +02756B00000200010002A300000C036E7361036E696302756B00 +uk. 172800 IN NS nsa.nic.uk. +02756B00000200010002A300000C036E7362036E696302756B00 +uk. 172800 IN NS nsb.nic.uk. +02756B00000200010002A300000C036E7363036E696302756B00 +uk. 172800 IN NS nsc.nic.uk. +02756B00000200010002A300000C036E7364036E696302756B00 +uk. 172800 IN NS nsd.nic.uk. +02756B00002B00010001518000243B570802A057C8553B1DC6CF158A87CD2D0BAA2CDC9C6A14FA03DE02B19AB0DA62AF279E +uk. 86400 IN DS 15191 8 2 A057C8553B1DC6CF158A87CD2D0BAA2CDC9C6A14FA03DE02B19AB0DA62AF279E +036E73310263730375636C02616302756B00000100010002A300000480100520 +ns1.cs.ucl.ac.uk. 172800 IN A 128.16.5.32 +066261726E65790661647673797302636F02756B00000100010002A3000004D917A032 +barney.advsys.co.uk. 172800 IN A 217.23.160.50 +036E73330369636202636F02756B00000100010002A30000045BD05F82 +ns3.icb.co.uk. 172800 IN A 91.208.95.130 +04746C643608756C747261646E7302636F02756B00000100010002A3000004C685C70B +tld6.ultradns.co.uk. 172800 IN A 198.133.199.11 +036E7331036E696302756B00000100010002A3000004C342F082 +ns1.nic.uk. 172800 IN A 195.66.240.130 +036E7331036E696302756B00001C00010002A30000102A010040100100350000000000000002 +ns1.nic.uk. 172800 IN AAAA 2a01:40:1001:35::2 +036E7332036E696302756B00000100010002A3000004D94FA483 +ns2.nic.uk. 172800 IN A 217.79.164.131 +036E7333036E696302756B00000100010002A3000004D5DB0D83 +ns3.nic.uk. 172800 IN A 213.219.13.131 +036E7334036E696302756B00000100010002A3000004C253F483 +ns4.nic.uk. 172800 IN A 194.83.244.131 +036E7334036E696302756B00001C00010002A300001020010630018100350000000000000083 +ns4.nic.uk. 172800 IN AAAA 2001:630:181:35::83 +036E7335036E696302756B00000100010002A3000004D5F6A783 +ns5.nic.uk. 172800 IN A 213.246.167.131 +036E7336036E696302756B00000100010002A3000004D5F8FE82 +ns6.nic.uk. 172800 IN A 213.248.254.130 +036E7337036E696302756B00000100010002A3000004D4792882 +ns7.nic.uk. 172800 IN A 212.121.40.130 +036E7361036E696302756B00000100010002A30000049C9A6403 +nsa.nic.uk. 172800 IN A 156.154.100.3 +036E7361036E696302756B00001C00010002A300001020010502AD0900000000000000000003 +nsa.nic.uk. 172800 IN AAAA 2001:502:ad09::3 +036E7362036E696302756B00000100010002A30000049C9A6503 +nsb.nic.uk. 172800 IN A 156.154.101.3 +036E7363036E696302756B00000100010002A30000049C9A6603 +nsc.nic.uk. 172800 IN A 156.154.102.3 +036E7364036E696302756B00000100010002A30000049C9A6703 +nsd.nic.uk. 172800 IN A 156.154.103.3 +03756E6F00000200010002A3000011036E733103646E73036E696303756E6F00 +uno. 172800 IN NS ns1.dns.nic.uno. +03756E6F00000200010002A3000011036E733203646E73036E696303756E6F00 +uno. 172800 IN NS ns2.dns.nic.uno. +03756E6F00000200010002A3000011036E733303646E73036E696303756E6F00 +uno. 172800 IN NS ns3.dns.nic.uno. +03756E6F00000200010002A3000011036E733403646E73036E696303756E6F00 +uno. 172800 IN NS ns4.dns.nic.uno. +03756E6F00000200010002A3000011036E733503646E73036E696303756E6F00 +uno. 172800 IN NS ns5.dns.nic.uno. +03756E6F00000200010002A3000011036E733603646E73036E696303756E6F00 +uno. 172800 IN NS ns6.dns.nic.uno. +03756E6F00000200010002A3000011036E733703646E73036E696303756E6F00 +uno. 172800 IN NS ns7.dns.nic.uno. +03756E6F00002B0001000151800018E22408013B49FDC11DAEE5187A4170A5BADF77A917BCE481 +uno. 86400 IN DS 57892 8 1 3B49FDC11DAEE5187A4170A5BADF77A917BCE481 +03756E6F00002B0001000151800024E2240802C156DD21B3B96A50FA94BE322CDF6F0144E86C9597E4AA56D53E9B490C94A537 +uno. 86400 IN DS 57892 8 2 C156DD21B3B96A50FA94BE322CDF6F0144E86C9597E4AA56D53E9B490C94A537 +03756E6F00002E0001000151800093002B08010001518052F4220052EAD970837700847D801E60551BE04E5A866237AEF83F0655C0000DA3E119AB5588BFEA2A653BD92F9B8AB7CCB63A370CB7FE5D0F09EFD5A946C6ED7CA15A0099F694DC597A0ADBE677517B440BA84B26FEF175F4B7D87F58328EBDB448100D91B4667075C0089211F03773F9CE48F42DFF0E9A2EE3917B29F465878830A83EA3E5ECBD166920 +uno. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hH2AHmBVG+BOWoZiN674PwZVwAANo+EZq1WIv+oqZTvZL5uKt8y2OjcMt/5dDwnv1alGxu18oVoAmfaU3Fl6Ctvmd1F7RAuoSyb+8XX0t9h/WDKOvbRIEA2RtGZwdcAIkhHwN3P5zkj0Lf8Omi7jkXsp9GWHiDCoPqPl7L0WaSA= ;{id = 33655} +03756E6F00002E0001000151800093002F08010001518052F4220052EAD9708377003EB249B7C2C8FAF93558CFBD0E14E204B0072726201E2716B734DDEFE3C708E95B6D68DB95AAC81A19F8E08BC1207CFC7811F5932CA398DDEAEB9DFDFECB9C7D8EC7C0E514BA503F0BDE001762C988B7693A21176CB03885865431C539350D75DAE7E85D74C6834B445462717D63EAB787206CDFD6E0B251FB46E67125850198 +uno. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PrJJt8LI+vk1WM+9DhTiBLAHJyYgHicWtzTd7+PHCOlbbWjblarIGhn44IvBIHz8eBH1kyyjmN3q6539/sucfY7HwOUUulA/C94AF2LJiLdpOiEXbLA4hYZUMcU5NQ112ufoXXTGg0tEVGJxfWPqt4cgbN/W4LJR+0bmcSWFAZg= ;{id = 33655} +03756E6F00002F000100015180000C027573000006200000000013 +uno. 86400 IN NSEC us. NS DS RRSIG NSEC +036E733103646E73036E696303756E6F00000100010002A30000049C9A90AD +ns1.dns.nic.uno. 172800 IN A 156.154.144.173 +036E733103646E73036E696303756E6F00001C00010002A3000010261000A11071000000000000000000AD +ns1.dns.nic.uno. 172800 IN AAAA 2610:a1:1071::ad +036E733203646E73036E696303756E6F00000100010002A30000049C9A91AD +ns2.dns.nic.uno. 172800 IN A 156.154.145.173 +036E733203646E73036E696303756E6F00001C00010002A3000010261000A11072000000000000000000AD +ns2.dns.nic.uno. 172800 IN AAAA 2610:a1:1072::ad +036E733303646E73036E696303756E6F00000100010002A30000049C9A9FAD +ns3.dns.nic.uno. 172800 IN A 156.154.159.173 +036E733303646E73036E696303756E6F00001C00010002A3000010261000A11073000000000000000000AD +ns3.dns.nic.uno. 172800 IN AAAA 2610:a1:1073::ad +036E733403646E73036E696303756E6F00000100010002A30000049C9A9CAD +ns4.dns.nic.uno. 172800 IN A 156.154.156.173 +036E733403646E73036E696303756E6F00001C00010002A3000010261000A11074000000000000000000AD +ns4.dns.nic.uno. 172800 IN AAAA 2610:a1:1074::ad +036E733503646E73036E696303756E6F00000100010002A30000049C9A9DAD +ns5.dns.nic.uno. 172800 IN A 156.154.157.173 +036E733503646E73036E696303756E6F00001C00010002A3000010261000A11075000000000000000000AD +ns5.dns.nic.uno. 172800 IN AAAA 2610:a1:1075::ad +036E733603646E73036E696303756E6F00000100010002A30000049C9A9EAD +ns6.dns.nic.uno. 172800 IN A 156.154.158.173 +036E733603646E73036E696303756E6F00001C00010002A3000010261000A11076000000000000000000AD +ns6.dns.nic.uno. 172800 IN AAAA 2610:a1:1076::ad +036E733703646E73036E696303756E6F00000100010002A3000004CF22050A +ns7.dns.nic.uno. 172800 IN A 207.34.5.10 +036E733703646E73036E696303756E6F00001C00010002A3000010200105037BBBFFFFFFFFFFFFFFFFFF7E +ns7.dns.nic.uno. 172800 IN AAAA 2001:503:7bbb:ffff:ffff:ffff:ffff:ff7e +02757300000200010002A300000C0161056363746C6402757300 +us. 172800 IN NS a.cctld.us. +02757300000200010002A300000C0162056363746C6402757300 +us. 172800 IN NS b.cctld.us. +02757300000200010002A300000C0163056363746C6402757300 +us. 172800 IN NS c.cctld.us. +02757300000200010002A300000C0165056363746C6402757300 +us. 172800 IN NS e.cctld.us. +02757300000200010002A300000C0166056363746C6402757300 +us. 172800 IN NS f.cctld.us. +02757300000200010002A300000C016B056363746C6402757300 +us. 172800 IN NS k.cctld.us. +02757300002B0001000151800018D8700501A66648238215F3DD5865471DF37606675FDF85A5 +us. 86400 IN DS 55408 5 1 A66648238215F3DD5865471DF37606675FDF85A5 +02757300002B0001000151800024D8700502BC044879B104ECACAE7536A070FE3E9C282314A73331095FF267DA901957458B +us. 86400 IN DS 55408 5 2 BC044879B104ECACAE7536A070FE3E9C282314A73331095FF267DA901957458B +02757300002E0001000151800093002B08010001518052F4220052EAD9708377006FEB7EAE53D83F9BF40380726F2E621BCEB4266DE39CDE80FDBE3239AEF39456E03E9555D2D5200A52FB465280FE819E20C9064CA44229CC5243F33960283238D0117247AD88A6393CE87B6DE7B4A81C016C5E4F23D458D0EB7A6385490A618A209F15449CED2C789A813D379DAFCD46255C77D5AD3BC6F03021298A75F3D022 +us. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . b+t+rlPYP5v0A4Byby5iG860Jm3jnN6A/b4yOa7zlFbgPpVV0tUgClL7RlKA/oGeIMkGTKRCKcxSQ/M5YCgyONARcketiKY5POh7bee0qBwBbF5PI9RY0Ot6Y4VJCmGKIJ8VRJztLHiagT03na/NRiVcd9WtO8bwMCEpinXz0CI= ;{id = 33655} +02757300002E0001000151800093002F08010001518052F4220052EAD97083770032D6DE60D5D4852C0690AC657E4977B6B358046E11C13C54DDEB05982216A36E0053B83483D8D471193CCAF04E7C66FBE9D0EBD5A2923569B8A2B9B644585CEEE12C0BCEAA8628E2CEDDA6E51AC5D061A78650F65CEB4D2665B37AF2BF9783224349163FAAF75681C20C12029BE8EB8ABBC06F66B67CA8A134F9ED6250B31F36 +us. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MtbeYNXUhSwGkKxlfkl3trNYBG4RwTxU3esFmCIWo24AU7g0g9jUcRk8yvBOfGb76dDr1aKSNWm4orm2RFhc7uEsC86qhijizt2m5RrF0GGnhlD2XOtNJmWzevK/l4MiQ0kWP6r3VoHCDBICm+jrirvAb2a2fKihNPntYlCzHzY= ;{id = 33655} +02757300002F000100015180000C027579000006200000000013 +us. 86400 IN NSEC uy. NS DS RRSIG NSEC +0161056363746C6402757300000100010002A30000049C9A7C46 +a.cctld.us. 172800 IN A 156.154.124.70 +0162056363746C6402757300000100010002A30000049C9A7D46 +b.cctld.us. 172800 IN A 156.154.125.70 +0162056363746C6402757300001C00010002A300001020010503D1AEFFFFFFFFFFFFFFFFFF7E +b.cctld.us. 172800 IN AAAA 2001:503:d1ae:ffff:ffff:ffff:ffff:ff7e +0163056363746C6402757300000100010002A30000049C9A7F46 +c.cctld.us. 172800 IN A 156.154.127.70 +0165056363746C6402757300000100010002A30000049C9A7E46 +e.cctld.us. 172800 IN A 156.154.126.70 +0166056363746C6402757300000100010002A3000004D1AD3A46 +f.cctld.us. 172800 IN A 209.173.58.70 +0166056363746C6402757300001C00010002A300001020010500368200000000000000000011 +f.cctld.us. 172800 IN AAAA 2001:500:3682::11 +016B056363746C6402757300000100010002A30000049C9A8046 +k.cctld.us. 172800 IN A 156.154.128.70 +016B056363746C6402757300001C00010002A300001020010503E23900000000000000030001 +k.cctld.us. 172800 IN AAAA 2001:503:e239::3:1 +02757900000200010002A300000B026E7303646E7302627200 +uy. 172800 IN NS ns.dns.br. +02757900000200010002A300001B027579056363746C640761757468646E730472697065036E657400 +uy. 172800 IN NS uy.cctld.authdns.ripe.net. +02757900000200010002A300000C036E7333036E6963026D7800 +uy. 172800 IN NS ns3.nic.mx. +02757900000200010002A300000E0573656369750365647502757900 +uy. 172800 IN NS seciu.edu.uy. +02757900000200010002A300001005756C74726105736563697502757900 +uy. 172800 IN NS ultra.seciu.uy. +02757900000200010002A300001006736E732D706203697363036F726700 +uy. 172800 IN NS sns-pb.isc.org. +02757900002F000100015180000C02757A000006200000000003 +uy. 86400 IN NSEC uz. NS RRSIG NSEC +02757900002E0001000151800093002F08010001518052F4220052EAD97083770040ED064F8F112822FAADF0979C9000E1C43BC665C6437F433590FE0051EB4F46C7608DF5CB7F4A1FCBB31863F1A822F002D3155D430D635978052E207169763D513A7016EA2F10C4D4003678CD4552C04387494D9ACA2B748917BF50C66566A08A25F24F59F4CDA78B56AF0F7E4E031EDD4B04CD4810B8681F9D85E463262BCC +uy. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . QO0GT48RKCL6rfCXnJAA4cQ7xmXGQ39DNZD+AFHrT0bHYI31y39KH8uzGGPxqCLwAtMVXUMNY1l4BS4gcWl2PVE6cBbqLxDE1AA2eM1FUsBDh0lNmsordIkXv1DGZWagiiXyT1n0zaeLVq8Pfk4DHt1LBM1IELhoH52F5GMmK8w= ;{id = 33655} +0573656369750365647502757900000100010002A3000004A4498005 +seciu.edu.uy. 172800 IN A 164.73.128.5 +0573656369750365647502757900001C00010002A300001020011328000600000000000000000005 +seciu.edu.uy. 172800 IN AAAA 2001:1328:6::5 +05756C74726105736563697502757900000100010002A3000004A4498046 +ultra.seciu.uy. 172800 IN A 164.73.128.70 +02757A00000200010002A3000007026E7302757A00 +uz. 172800 IN NS ns.uz. +02757A00000200010002A3000008036E733202757A00 +uz. 172800 IN NS ns2.uz. +02757A00000200010002A3000008036E733302757A00 +uz. 172800 IN NS ns3.uz. +02757A00000200010002A3000008036E733402757A00 +uz. 172800 IN NS ns4.uz. +02757A00000200010002A3000008036E733502757A00 +uz. 172800 IN NS ns5.uz. +02757A00000200010002A3000008036E733602757A00 +uz. 172800 IN NS ns6.uz. +02757A00000200010002A3000008036E733702757A00 +uz. 172800 IN NS ns7.uz. +02757A00002F000100015180000C027661000006200000000003 +uz. 86400 IN NSEC va. NS RRSIG NSEC +02757A00002E0001000151800093002F08010001518052F4220052EAD970837700308D8AF44FA98ED76EE2593431FD30F2CD06298359E5B64538C3DCB4F43F860F32912CA2DB8089E7F65C2853DE71C5DBB6EF415D794534C8900491CF106723C21BB74CD68EB9B623450872AD8FFE463FE01BDDBFAC5EB9DDD1D1915CF44231BB553FD4F4E85AD165903EC430653D3A14FE095021EF12ADBA7DE8F4B942986B19 +uz. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MI2K9E+pjtdu4lk0Mf0w8s0GKYNZ5bZFOMPctPQ/hg8ykSyi24CJ5/ZcKFPeccXbtu9BXXlFNMiQBJHPEGcjwhu3TNaOubYjRQhyrY/+Rj/gG92/rF653dHRkVz0QjG7VT/U9Oha0WWQPsQwZT06FP4JUCHvEq26fej0uUKYaxk= ;{id = 33655} +026E7302757A00000100010002A30000045BD45908 +ns.uz. 172800 IN A 91.212.89.8 +036E733202757A00000100010002A3000004515FE09E +ns2.uz. 172800 IN A 81.95.224.158 +036E733302757A00000100010002A3000004C39E0116 +ns3.uz. 172800 IN A 195.158.1.22 +036E733402757A00000100010002A3000004578B693C +ns4.uz. 172800 IN A 87.139.105.60 +036E733502757A00000100010002A3000004D90C5181 +ns5.uz. 172800 IN A 217.12.81.129 +036E733602757A00000100010002A300000453458104 +ns6.uz. 172800 IN A 83.69.129.4 +036E733702757A00000100010002A300000436C84560 +ns7.uz. 172800 IN A 54.200.69.96 +02766100000200010002A300001B027661056363746C640761757468646E730472697065036E657400 +va. 172800 IN NS va.cctld.authdns.ripe.net. +02766100000200010002A300000C03646E73036E696302697400 +va. 172800 IN NS dns.nic.it. +02766100000200010002A3000011046A6F686E077661746963616E02766100 +va. 172800 IN NS john.vatican.va. +02766100000200010002A300000F0473657468056E616D657802697400 +va. 172800 IN NS seth.namex.it. +02766100000200010002A3000011066F7369726973056E616D657802697400 +va. 172800 IN NS osiris.namex.it. +02766100000200010002A3000014076D69636861656C077661746963616E02766100 +va. 172800 IN NS michael.vatican.va. +02766100002F000100015180000C027663000006200000000003 +va. 86400 IN NSEC vc. NS RRSIG NSEC +02766100002E0001000151800093002F08010001518052F4220052EAD97083770006B476877949543C747F39CBA68E83A85337E7A6176EE10BC04BF10F7A942A60BE91C018BD94DB1A72CC4AC6DE3F447D6FCA3679F21572D071D7DF95900CB84FBAE9529D62535C1F6B545D7B821FB53319C0814CFF639926A8FCC2B89B879A4F8008DFCF1ABDEA588AFA1D06A4465B35A9BEFB3E5CFB16DABCA6ED8C022F5CB8 +va. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BrR2h3lJVDx0fznLpo6DqFM356YXbuELwEvxD3qUKmC+kcAYvZTbGnLMSsbeP0R9b8o2efIVctBx19+VkAy4T7rpUp1iU1wfa1Rde4IftTMZwIFM/2OZJqj8wribh5pPgAjfzxq96liK+h0GpEZbNam++z5c+xbavKbtjAIvXLg= ;{id = 33655} +046A6F686E077661746963616E02766100000100010002A3000004D44D006E +john.vatican.va. 172800 IN A 212.77.0.110 +046A6F686E077661746963616E02766100001C00010002A30000102A0100B8000000010212007700000110 +john.vatican.va. 172800 IN AAAA 2a01:b8:0:1:212:77:0:110 +076D69636861656C077661746963616E02766100000100010002A3000004D44D0002 +michael.vatican.va. 172800 IN A 212.77.0.2 +076D69636861656C077661746963616E02766100001C00010002A30000102A0100B8000000010212007700000002 +michael.vatican.va. 172800 IN AAAA 2a01:b8:0:1:212:77:0:2 +02766300000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +vc. 172800 IN NS a0.cctld.afilias-nst.info. +02766300000200010002A300001B026132056363746C640B6166696C6961732D6E737404696E666F00 +vc. 172800 IN NS a2.cctld.afilias-nst.info. +02766300000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +vc. 172800 IN NS b0.cctld.afilias-nst.org. +02766300000200010002A300001A026232056363746C640B6166696C6961732D6E7374036F726700 +vc. 172800 IN NS b2.cctld.afilias-nst.org. +02766300000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +vc. 172800 IN NS c0.cctld.afilias-nst.info. +02766300000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +vc. 172800 IN NS d0.cctld.afilias-nst.org. +02766300002F000100015180000C027665000006200000000003 +vc. 86400 IN NSEC ve. NS RRSIG NSEC +02766300002E0001000151800093002F08010001518052F4220052EAD9708377006027EBF19287F9D4D4C1CA3098ADFD5AF26B1FAA730E56508322A89517E4FC3FBF396003E527B9413A04FEA3D90193940FD2A821B0EC0DFE16635861AABA50F54989EAAE880540E6672E4BE642A04854CDD23B49A5EF843579DC580E6CD62D7A9E436300CDC8381A60607FBFC2E0067A936EDCDCBF86D9F762F3045C8B38C7C2 +vc. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YCfr8ZKH+dTUwcowmK39WvJrH6pzDlZQgyKolRfk/D+/OWAD5Se5QToE/qPZAZOUD9KoIbDsDf4WY1hhqrpQ9UmJ6q6IBUDmZy5L5kKgSFTN0jtJpe+ENXncWA5s1i16nkNjAM3IOBpgYH+/wuAGepNu3Ny/htn3YvMEXIs4x8I= ;{id = 33655} +02766500000200010002A300000C036E7331036E696302766500 +ve. 172800 IN NS ns1.nic.ve. +02766500000200010002A300000C036E7332036E696302766500 +ve. 172800 IN NS ns2.nic.ve. +02766500000200010002A300000C036E7333036E696302766500 +ve. 172800 IN NS ns3.nic.ve. +02766500000200010002A3000010066E732D65787403697363036F726700 +ve. 172800 IN NS ns-ext.isc.org. +02766500000200010002A300000F066E732D657874036E696302636C00 +ve. 172800 IN NS ns-ext.nic.cl. +02766500000200010002A300001006736E732D706203697363036F726700 +ve. 172800 IN NS sns-pb.isc.org. +02766500000200010002A300001007617A6D6F64616E03756C6102766500 +ve. 172800 IN NS azmodan.ula.ve. +02766500002F00010001518000120876656E7475726573000006200000000003 +ve. 86400 IN NSEC ventures. NS RRSIG NSEC +02766500002E0001000151800093002F08010001518052F4220052EAD9708377009DF1FD34FFB404A44DA026410688B5E6DFCBAFF8F07B69B7F07E69E1AD8A3EB85BD89FA6CDC89490AC864BB680D803630655824CBAFD03B015D30AA74A7C9E1CC1158EC42D20652D1A0D382ED08EFAA865FFDF80F33B35A75810066FFF4A2929F9FF6341F18E33CB43F2EAE5EFFF4EB07F19F8219506067962F3DBDD75BFEFBD +ve. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nfH9NP+0BKRNoCZBBoi15t/Lr/jwe2m38H5p4a2KPrhb2J+mzciUkKyGS7aA2ANjBlWCTLr9A7AV0wqnSnyeHMEVjsQtIGUtGg04LtCO+qhl/9+A8zs1p1gQBm//Sikp+f9jQfGOM8tD8url7/9OsH8Z+CGVBgZ5YvPb3XW/770= ;{id = 33655} +036E7331036E696302766500000100010002A300000496BCE404 +ns1.nic.ve. 172800 IN A 150.188.228.4 +036E7331036E696302766500001C00010002A300001020011338000000000000000000000002 +ns1.nic.ve. 172800 IN AAAA 2001:1338::2 +036E7332036E696302766500000100010002A300000496BCE405 +ns2.nic.ve. 172800 IN A 150.188.228.5 +036E7332036E696302766500001C00010002A300001020011338000000000000000000000003 +ns2.nic.ve. 172800 IN AAAA 2001:1338::3 +036E7333036E696302766500000100010002A3000004BE098138 +ns3.nic.ve. 172800 IN A 190.9.129.56 +07617A6D6F64616E03756C6102766500000100010002A300000496B98210 +azmodan.ula.ve. 172800 IN A 150.185.130.16 +0876656E747572657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +ventures. 172800 IN NS demand.beta.aridns.net.au. +0876656E747572657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +ventures. 172800 IN NS demand.alpha.aridns.net.au. +0876656E747572657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +ventures. 172800 IN NS demand.delta.aridns.net.au. +0876656E747572657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +ventures. 172800 IN NS demand.gamma.aridns.net.au. +0876656E747572657300002B00010001518000243040080291175878089CE3054D9CA53EA05D2B71D06813D35F25871FB566374C66C213A2 +ventures. 86400 IN DS 12352 8 2 91175878089CE3054D9CA53EA05D2B71D06813D35F25871FB566374C66C213A2 +0876656E747572657300002E0001000151800093002B08010001518052F4220052EAD9708377005D4C449E2BBDC5699F915B603584D30AD4D8F5FC2D764BF2B04F06EB445CCA501D6AF66D7A5204B88EF5FBDB84B28C9C8763683EAB43B4A2789A1E0D7D9019E9C17AE5076D3AB6ACA6924E86C8AC8DCDBFD1F5C96805BAAFB5738C826E3B8A68BCF3216ACA3989F1CEE61BD276E5809EA15F9B19A17681F4CB7B172C1B5DE3B0 +ventures. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . XUxEniu9xWmfkVtgNYTTCtTY9fwtdkvysE8G60RcylAdavZtelIEuI71+9uEsoych2NoPqtDtKJ4mh4NfZAZ6cF65QdtOrasppJOhsisjc2/0fXJaAW6r7VzjIJuO4povPMhaso5ifHO5hvSduWAnqFfmxmhdoH0y3sXLBtd47A= ;{id = 33655} +0876656E747572657300002E0001000151800093002F08010001518052F4220052EAD97083770092A44EEF9BCB578CB09E234542C7642715A82E09CF5CC4AAA66DB3EE5B69F0A4C462502D4E914682E7A2237B922F6C3F87A995EB2AC5ACCBDFD125ABD578D3E9C677738C0F710D80742176B7DA783B35D45DCECCEDA34970294CCEE384563F35CF74618E28341264CDDFBCEE170B95D04E7650C87B130D877F9C2CE9DF4EA376 +ventures. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kqRO75vLV4ywniNFQsdkJxWoLgnPXMSqpm2z7ltp8KTEYlAtTpFGgueiI3uSL2w/h6mV6yrFrMvf0SWr1XjT6cZ3c4wPcQ2AdCF2t9p4OzXUXc7M7aNJcClMzuOEVj81z3Rhjig0EmTN37zuFwuV0E52UMh7Ew2Hf5ws6d9Oo3Y= ;{id = 33655} +0876656E747572657300002F000100015180000C027667000006200000000013 +ventures. 86400 IN NSEC vg. NS DS RRSIG NSEC +02766700000200010002A300001B027667056363746C640761757468646E730472697065036E657400 +vg. 172800 IN NS vg.cctld.authdns.ripe.net. +02766700000200010002A3000015036E73310C726F6F742D7365727665727302766700 +vg. 172800 IN NS ns1.root-servers.vg. +02766700000200010002A300000E0461736961047A6F6E6502766700 +vg. 172800 IN NS asia.zone.vg. +02766700000200010002A3000010066575726F7065047A6F6E6502766700 +vg. 172800 IN NS europe.zone.vg. +02766700002F000100015180000C027669000006200000000003 +vg. 86400 IN NSEC vi. NS RRSIG NSEC +02766700002E0001000151800093002F08010001518052F4220052EAD9708377008421D41D9A3B8B6451A3B22A7CB1C1BB315C3185088AB2B5EA1909FE30321FB6EF7997E9634C4CEE2D969E7C62EAAB0C442032934E7FE75474F448E10FCFD5B648473F60E54C78FB706371B8F5AD9721EB546C87EB0359A34F9314CE7F3653562A17A6218A15FF893451CFD8459DAD949C73050AAC714397DB25EBC18188BEC2 +vg. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hCHUHZo7i2RRo7IqfLHBuzFcMYUIirK16hkJ/jAyH7bveZfpY0xM7i2Wnnxi6qsMRCAyk05/51R09EjhD8/VtkhHP2DlTHj7cGNxuPWtlyHrVGyH6wNZo0+TFM5/NlNWKhemIYoV/4k0Uc/YRZ2tlJxzBQqscUOX2yXrwYGIvsI= ;{id = 33655} +036E73310C726F6F742D7365727665727302766700000100010002A3000004C2000B66 +ns1.root-servers.vg. 172800 IN A 194.0.11.102 +036E73310C726F6F742D7365727665727302766700001C00010002A300001020010678000E01020000000000000053 +ns1.root-servers.vg. 172800 IN AAAA 2001:678:e:102::53 +0461736961047A6F6E6502766700000100010002A30000041FA951E2 +asia.zone.vg. 172800 IN A 31.169.81.226 +066575726F7065047A6F6E6502766700000100010002A30000044D4F68E2 +europe.zone.vg. 172800 IN A 77.79.104.226 +02766900000200010002A300000F036E733105636F626578036E657400 +vi. 172800 IN NS ns1.cobex.net. +02766900000200010002A300000F036E7331056B726E6963036E657400 +vi. 172800 IN NS ns1.krnic.net. +02766900000200010002A300000F036E733205636F626578036E657400 +vi. 172800 IN NS ns2.cobex.net. +02766900000200010002A30000130761757468313030026E73027575036E657400 +vi. 172800 IN NS auth100.ns.uu.net. +02766900000200010002A30000130761757468313130026E73027575036E657400 +vi. 172800 IN NS auth110.ns.uu.net. +02766900002F0001000151800010067669616A6573000006200000000003 +vi. 86400 IN NSEC viajes. NS RRSIG NSEC +02766900002E0001000151800093002F08010001518052F4220052EAD970837700692D59DC3557C7F6896855B1E1AC7AF824F490CA8AF99952B93A1598114225F7EA09C3CBD832D6782A18138008555B96590AAEB74969DCAC87F19E9669B897C9C60FB4CEB110024C0BB197A4DA2D49CDA27C6B0F704DF776D30F20E893BE659718954852273F7344080363E2BEE312B3CA0ED4648B5D9C0392250EAF289C7DB1 +vi. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . aS1Z3DVXx/aJaFWx4ax6+CT0kMqK+ZlSuToVmBFCJffqCcPL2DLWeCoYE4AIVVuWWQqut0lp3KyH8Z6WabiXycYPtM6xEAJMC7GXpNotSc2ifGsPcE33dtMPIOiTvmWXGJVIUic/c0QIA2PivuMSs8oO1GSLXZwDkiUOryicfbE= ;{id = 33655} +067669616A657300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +viajes. 172800 IN NS demand.beta.aridns.net.au. +067669616A657300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +viajes. 172800 IN NS demand.alpha.aridns.net.au. +067669616A657300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +viajes. 172800 IN NS demand.delta.aridns.net.au. +067669616A657300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +viajes. 172800 IN NS demand.gamma.aridns.net.au. +067669616A657300002B0001000151800024E1FA0802EA1ECA41F59D77BF61A09E8F01297DABB2852D0A4A31D558BFCDB7FFBA8B22D6 +viajes. 86400 IN DS 57850 8 2 EA1ECA41F59D77BF61A09E8F01297DABB2852D0A4A31D558BFCDB7FFBA8B22D6 +067669616A657300002E0001000151800093002B08010001518052F4220052EAD9708377006820F11D8489D0211C3A1A935E9CF54C7EC22CCD3E66243796FF6C7353D93603F37CE5975DEE991C60ADFB1BF101F17DA45FA529FD297EC8BFD62668B12D057DE5451D55C93CA844E90D7C7F9D7BBB5B6351E01758E2489326A07BBC3BA770DA1D2E931232E70A7437429B18D3A0B51CEC148C726BE6A9FDE6BC101CDC3C3F21 +viajes. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aCDxHYSJ0CEcOhqTXpz1TH7CLM0+ZiQ3lv9sc1PZNgPzfOWXXe6ZHGCt+xvxAfF9pF+lKf0pfsi/1iZosS0FfeVFHVXJPKhE6Q18f517u1tjUeAXWOJIkyage7w7p3DaHS6TEjLnCnQ3QpsY06C1HOwUjHJr5qn95rwQHNw8PyE= ;{id = 33655} +067669616A657300002E0001000151800093002F08010001518052F4220052EAD9708377002BFA1B64E62EF8D5AE071D0D5C26FDE246ADCAE50879AAA748480553BAD49360352B4360E035A650E3826B6FB6031109B4DB42C3BBCE86ACB884E71095E6036649D70D0C61D16DA88BCA4138043374F3A788AAD44B5729B92680F8E9083DDB57757AF5AE579DD9A745433A2A71469B8745BF8D61A043A4473216F333FB85F5FC +viajes. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . K/obZOYu+NWuBx0NXCb94katyuUIeaqnSEgFU7rUk2A1K0Ng4DWmUOOCa2+2AxEJtNtCw7vOhqy4hOcQleYDZknXDQxh0W2oi8pBOAQzdPOniKrUS1cpuSaA+OkIPdtXdXr1rled2adFQzoqcUabh0W/jWGgQ6RHMhbzM/uF9fw= ;{id = 33655} +067669616A657300002F000100015180000C02766E000006200000000013 +viajes. 86400 IN NSEC vn. NS DS RRSIG NSEC +02766E00000200010002A300001201610B646E732D7365727665727302766E00 +vn. 172800 IN NS a.dns-servers.vn. +02766E00000200010002A300001201620B646E732D7365727665727302766E00 +vn. 172800 IN NS b.dns-servers.vn. +02766E00000200010002A300001201630B646E732D7365727665727302766E00 +vn. 172800 IN NS c.dns-servers.vn. +02766E00000200010002A300001201640B646E732D7365727665727302766E00 +vn. 172800 IN NS d.dns-servers.vn. +02766E00000200010002A300001201650B646E732D7365727665727302766E00 +vn. 172800 IN NS e.dns-servers.vn. +02766E00000200010002A300001201660B646E732D7365727665727302766E00 +vn. 172800 IN NS f.dns-servers.vn. +02766E00000200010002A300001B02766E056363746C640761757468646E730472697065036E657400 +vn. 172800 IN NS vn.cctld.authdns.ripe.net. +02766E00002F000100015180001006766F74696E67000006200000000003 +vn. 86400 IN NSEC voting. NS RRSIG NSEC +02766E00002E0001000151800093002F08010001518052F4220052EAD97083770058F36579124920A6F9395BB785CD5ED8A7C61B4CB10C11946B7E2A05EBF74E84DE3458A8B6156317604EEE277BB50ABBACE35250B3F9ACC31E424E2CFEAB5DD7F44348754EC496C9C73F17F990E97DEDC3E1D26B626AD209E13C0C55E56698404BB1723607118E065539A2A6A4B570B93CACEA7587E0D4174CA6E3E78CE32EA0 +vn. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WPNleRJJIKb5OVu3hc1e2KfGG0yxDBGUa34qBev3ToTeNFiothVjF2BO7id7tQq7rONSULP5rMMeQk4s/qtd1/RDSHVOxJbJxz8X+ZDpfe3D4dJrYmrSCeE8DFXlZphAS7FyNgcRjgZVOaKmpLVwuTys6nWH4NQXTKbj54zjLqA= ;{id = 33655} +01610B646E732D7365727665727302766E00000100010002A3000004C2000112 +a.dns-servers.vn. 172800 IN A 194.0.1.18 +01610B646E732D7365727665727302766E00001C00010002A300001020010678000400000000000000000012 +a.dns-servers.vn. 172800 IN AAAA 2001:678:4::12 +01620B646E732D7365727665727302766E00000100010002A3000004CB770A69 +b.dns-servers.vn. 172800 IN A 203.119.10.105 +01620B646E732D7365727665727302766E00001C00010002A300001020010DC8000000070000000000000105 +b.dns-servers.vn. 172800 IN AAAA 2001:dc8:0:7::105 +01630B646E732D7365727665727302766E00000100010002A3000004CB772669 +c.dns-servers.vn. 172800 IN A 203.119.38.105 +01640B646E732D7365727665727302766E00000100010002A3000004CB772C69 +d.dns-servers.vn. 172800 IN A 203.119.44.105 +01650B646E732D7365727665727302766E00000100010002A3000004CB773C69 +e.dns-servers.vn. 172800 IN A 203.119.60.105 +01660B646E732D7365727665727302766E00000100010002A3000004CB774469 +f.dns-servers.vn. 172800 IN A 203.119.68.105 +06766F74696E6700000200010002A3000012016103646E73036E696306766F74696E6700 +voting. 172800 IN NS a.dns.nic.voting. +06766F74696E6700000200010002A3000012016203646E73036E696306766F74696E6700 +voting. 172800 IN NS b.dns.nic.voting. +06766F74696E6700000200010002A3000012016303646E73036E696306766F74696E6700 +voting. 172800 IN NS c.dns.nic.voting. +06766F74696E6700002B0001000151800018571D0801916F42C6CE97C6CFF9D0545167E2203A179667C2 +voting. 86400 IN DS 22301 8 1 916F42C6CE97C6CFF9D0545167E2203A179667C2 +06766F74696E6700002B0001000151800024571D0802E505E22BD2DCA54354C9EA9B0F09D4972390C9DCC6F342D9438D47F347A03B7D +voting. 86400 IN DS 22301 8 2 E505E22BD2DCA54354C9EA9B0F09D4972390C9DCC6F342D9438D47F347A03B7D +06766F74696E6700002E0001000151800093002B08010001518052F4220052EAD970837700094F0A44AD0F3222E4ED38C166D26C1A06D810269A4D6D3CE777ADAB9A9CC65B33697905972B22EEB2576B9CC81638A21F21734201D071AD42C359EED4E902FCC4A1779B7250C6893D200B59ED7E5703FC1B2CE268CEA0095ED20FBD878F70F20BC705F38E19E7713F1792E56D979C517DEECA549B530C5F3E11BEF6B9FBB950 +voting. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CU8KRK0PMiLk7TjBZtJsGgbYECaaTW0853etq5qcxlszaXkFlysi7rJXa5zIFjiiHyFzQgHQca1Cw1nu1OkC/MShd5tyUMaJPSALWe1+VwP8GyziaM6gCV7SD72Hj3DyC8cF844Z53E/F5LlbZecUX3uylSbUwxfPhG+9rn7uVA= ;{id = 33655} +06766F74696E6700002E0001000151800093002F08010001518052F4220052EAD9708377009BC43CE5FD9D3ECAACEFBCF9C8BF1400F8AF8C5ED47A4C4FD1A2904F99F7EC23891AD6768F9BAB636411A5EFF7D6CC2733300CC39BC3ED24BC09AB56B9500696A9CA944FB32D1E536D4C7149426CCF9DBFC350AACE63A24B76E195AFAE860F2BF44159FA32BBEA18A2FBFFEC79D657E35D755CF96A29396EF6876837C3B104C2 +voting. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . m8Q85f2dPsqs77z5yL8UAPivjF7UekxP0aKQT5n37COJGtZ2j5urY2QRpe/31swnMzAMw5vD7SS8CatWuVAGlqnKlE+zLR5TbUxxSUJsz52/w1CqzmOiS3bhla+uhg8r9EFZ+jK76hii+//sedZX4111XPlqKTlu9odoN8OxBMI= ;{id = 33655} +06766F74696E6700002F000100015180001006766F79616765000006200000000013 +voting. 86400 IN NSEC voyage. NS DS RRSIG NSEC +016103646E73036E696306766F74696E6700000100010002A3000004C2001911 +a.dns.nic.voting. 172800 IN A 194.0.25.17 +016103646E73036E696306766F74696E6700001C00010002A300001020010678002000000000000000000017 +a.dns.nic.voting. 172800 IN AAAA 2001:678:20::17 +016203646E73036E696306766F74696E6700000100010002A3000004C1AA3D06 +b.dns.nic.voting. 172800 IN A 193.170.61.6 +016203646E73036E696306766F74696E6700001C00010002A30000102001062A000A20000000000000000006 +b.dns.nic.voting. 172800 IN AAAA 2001:62a:a:2000::6 +016303646E73036E696306766F74696E6700000100010002A3000004C1AABB06 +c.dns.nic.voting. 172800 IN A 193.170.187.6 +016303646E73036E696306766F74696E6700001C00010002A30000102001062A000A30000000000000000006 +c.dns.nic.voting. 172800 IN AAAA 2001:62a:a:3000::6 +06766F7961676500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +voyage. 172800 IN NS demand.beta.aridns.net.au. +06766F7961676500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +voyage. 172800 IN NS demand.alpha.aridns.net.au. +06766F7961676500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +voyage. 172800 IN NS demand.delta.aridns.net.au. +06766F7961676500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +voyage. 172800 IN NS demand.gamma.aridns.net.au. +06766F7961676500002B00010001518000247D860802F610100634FDC228FF5E4C1846E51D99DC3B0C2B8089933FBBF6D33ED543A332 +voyage. 86400 IN DS 32134 8 2 F610100634FDC228FF5E4C1846E51D99DC3B0C2B8089933FBBF6D33ED543A332 +06766F7961676500002E0001000151800093002B08010001518052F4220052EAD9708377001F671A9521615FF1795BC27DE171DD03E71DD0EB2F5C21270B9CD5F094C6B0F1D48A787AE5852B141D7D46C72C83BC09F7C7128EC8E6A92968D3173169DFE30A2DACF9020C438AA5EC59FD05CCE28F1B340CC81FEB252FAD327F827C6BAAEFE6BE1E2585F00746B0074CC6BFC2A3C7BFB8F61FBFB3CCFB865C8E56C5BE0B032A +voyage. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . H2calSFhX/F5W8J94XHdA+cd0OsvXCEnC5zV8JTGsPHUinh65YUrFB19Rscsg7wJ98cSjsjmqSlo0xcxad/jCi2s+QIMQ4ql7Fn9Bczijxs0DMgf6yUvrTJ/gnxrqu/mvh4lhfAHRrAHTMa/wqPHv7j2H7+zzPuGXI5Wxb4LAyo= ;{id = 33655} +06766F7961676500002E0001000151800093002F08010001518052F4220052EAD970837700858E25D8DD9D6AE0F4C1C02A097AE7D5864E7BF56120F0B22E7210BF6A6F268B5F68DC9B7051765C5158D2BD6158FA0ADFA3A3735DCB79AAA49ABC606113D573CD026F69864A9DA48F6AA8E6F05E017368277DE8CE62BB0810419BF35860BF7F17A9A3B1DEDC188C3B72C410EBCA4B3622489B2295485A722B5E0DDA18FE7FB8 +voyage. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hY4l2N2dauD0wcAqCXrn1YZOe/VhIPCyLnIQv2pvJotfaNybcFF2XFFY0r1hWPoK36Ojc13LeaqkmrxgYRPVc80Cb2mGSp2kj2qo5vBeAXNoJ33ozmK7CBBBm/NYYL9/F6mjsd7cGIw7csQQ68pLNiJImyKVSFpyK14N2hj+f7g= ;{id = 33655} +06766F7961676500002F000100015180000C027675000006200000000013 +voyage. 86400 IN NSEC vu. NS DS RRSIG NSEC +02767500000200010002A30000160565666174650776616E7561747503636F6D02767500 +vu. 172800 IN NS efate.vanuatu.com.vu. +02767500000200010002A30000160573616E746F0776616E7561747503636F6D02767500 +vu. 172800 IN NS santo.vanuatu.com.vu. +02767500000200010002A300001706667574756E610776616E7561747503636F6D02767500 +vu. 172800 IN NS futuna.vanuatu.com.vu. +02767500000200010002A3000014086363746C642D7675066F72616E6765026D7500 +vu. 172800 IN NS cctld-vu.orange.mu. +02767500002F000100015180000E0477616E67000006200000000003 +vu. 86400 IN NSEC wang. NS RRSIG NSEC +02767500002E0001000151800093002F08010001518052F4220052EAD9708377007C4A51CDE48FBC30819D63D573F83C0484EF932E88C55BC905F998DEF6801C7A0830F4BB69BF5E91A0B4AF323C91D478A3DF439A1D591645B0341E8EDCADE2D6222236759421E6478DD822F6B39C954AA40205B85D8107A8E9ABFA22F75EF0A185EB496FC78B9C8673090E64D667AAB0AC099C68B6B723C7D059C47EA246FAC7 +vu. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fEpRzeSPvDCBnWPVc/g8BITvky6IxVvJBfmY3vaAHHoIMPS7ab9ekaC0rzI8kdR4o99Dmh1ZFkWwNB6O3K3i1iIiNnWUIeZHjdgi9rOclUqkAgW4XYEHqOmr+iL3XvChhetJb8eLnIZzCQ5k1meqsKwJnGi2tyPH0FnEfqJG+sc= ;{id = 33655} +0565666174650776616E7561747503636F6D02767500000100010002A3000004CA502005 +efate.vanuatu.com.vu. 172800 IN A 202.80.32.5 +06667574756E610776616E7561747503636F6D02767500000100010002A3000004CA502003 +futuna.vanuatu.com.vu. 172800 IN A 202.80.32.3 +0573616E746F0776616E7561747503636F6D02767500000100010002A3000004CA502007 +santo.vanuatu.com.vu. 172800 IN A 202.80.32.7 +0477616E6700000200010002A30000110161097A646E73636C6F756403636F6D00 +wang. 172800 IN NS a.zdnscloud.com. +0477616E6700000200010002A30000110162097A646E73636C6F756403636F6D00 +wang. 172800 IN NS b.zdnscloud.com. +0477616E6700000200010002A30000110163097A646E73636C6F756403636F6D00 +wang. 172800 IN NS c.zdnscloud.com. +0477616E6700000200010002A30000110164097A646E73636C6F756403636F6D00 +wang. 172800 IN NS d.zdnscloud.com. +0477616E6700000200010002A30000110165097A646E73636C6F756403636F6D00 +wang. 172800 IN NS e.zdnscloud.com. +0477616E6700000200010002A30000110166097A646E73636C6F756403636F6D00 +wang. 172800 IN NS f.zdnscloud.com. +0477616E6700000200010002A30000110167097A646E73636C6F756403636F6D00 +wang. 172800 IN NS g.zdnscloud.com. +0477616E6700000200010002A30000110169097A646E73636C6F756403636F6D00 +wang. 172800 IN NS i.zdnscloud.com. +0477616E6700000200010002A3000011016A097A646E73636C6F756403636F6D00 +wang. 172800 IN NS j.zdnscloud.com. +0477616E6700002B000100015180002468B90802A7FDCE2D689D6C3CDC4275348667E0FE258136B879787E69C89A1C125CF23F67 +wang. 86400 IN DS 26809 8 2 A7FDCE2D689D6C3CDC4275348667E0FE258136B879787E69C89A1C125CF23F67 +0477616E6700002E0001000151800093002B08010001518052F4220052EAD9708377002B534674AFFD317D629846C780C9CEE7672F10EED4D27D087ADF3D7A1D85AE90FC1B4D701BCFA4393D67A4AE2C7397F6DBCC1B5D19A0E8ADBC5DE07B766B6E3355BB71321BACDD3E1CCC5CC2953BEC9B83B057C3CE86246B2C200B70CF3C6D1096F6A4812EE4D2B799EF5D08EC5D452619D884D4535B548EEFBAD3FFAB45CF19 +wang. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K1NGdK/9MX1imEbHgMnO52cvEO7U0n0Iet89eh2FrpD8G01wG8+kOT1npK4sc5f228wbXRmg6K28XeB7dmtuM1W7cTIbrN0+HMxcwpU77JuDsFfDzoYkaywgC3DPPG0QlvakgS7k0reZ710I7F1FJhnYhNRTW1SO77rT/6tFzxk= ;{id = 33655} +0477616E6700002E0001000151800093002F08010001518052F4220052EAD9708377005C04AE305231F2B339D923FD6C1B30DCAEFF1ACD8B0FEF75655B93F1F3F5D35B7CC1381724CC0AFFB1CC27B46DC8D517EA0236E2CE14EBD356670A1883637535FBB98F3BB4FA79A560F1F132A5187D4529A1C5018BA8788BB7425FE027081CCF382CDB3C64B80E0770B3B83B82EA75575F739A0AFABA225D0F3FD363A71DCC87 +wang. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XASuMFIx8rM52SP9bBsw3K7/Gs2LD+91ZVuT8fP101t8wTgXJMwK/7HMJ7RtyNUX6gI24s4U69NWZwoYg2N1Nfu5jzu0+nmlYPHxMqUYfUUpocUBi6h4i7dCX+AnCBzPOCzbPGS4Dgdws7g7gup1V19zmgr6uiJdDz/TY6cdzIc= ;{id = 33655} +0477616E6700002F000100015180000F057761746368000006200000000013 +wang. 86400 IN NSEC watch. NS DS RRSIG NSEC +05776174636800000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +watch. 172800 IN NS demand.beta.aridns.net.au. +05776174636800000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +watch. 172800 IN NS demand.alpha.aridns.net.au. +05776174636800000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +watch. 172800 IN NS demand.delta.aridns.net.au. +05776174636800000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +watch. 172800 IN NS demand.gamma.aridns.net.au. +05776174636800002B0001000151800024704E0802104A558919E526604A35B4C96D6832FDD499E5EF07313C628AB27F1E715C39D9 +watch. 86400 IN DS 28750 8 2 104A558919E526604A35B4C96D6832FDD499E5EF07313C628AB27F1E715C39D9 +05776174636800002E0001000151800093002B08010001518052F4220052EAD97083770041ECE0560141DDF4DA42C1C97E109233A5D06B47F0A0EF608412FA724591FC33BCE65BCFDC8FFF8D0D250DAC03CCF166F1C848B102CEC96F9FDEC6D3489BE94FDDACF9A0EE880250D854EFC4E69800AB8F3A8E1257ECC27BC0E2605DA7C24FF392812C30E37740DFDBCDFEFB3873A7F1173BF406569F8AB7350F2125FA2E9E3D +watch. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . QezgVgFB3fTaQsHJfhCSM6XQa0fwoO9ghBL6ckWR/DO85lvP3I//jQ0lDawDzPFm8chIsQLOyW+f3sbTSJvpT92s+aDuiAJQ2FTvxOaYAKuPOo4SV+zCe8DiYF2nwk/zkoEsMON3QN/bzf77OHOn8Rc79AZWn4q3NQ8hJfounj0= ;{id = 33655} +05776174636800002E0001000151800093002F08010001518052F4220052EAD97083770082E4E16E10888DB500A6D07DC43BC06219333206E9147E755660BBC5CC1342B204C68CE26A0F6CF03D2E7F2C63F677131F412C2AEEF04EF5F0BC36998846E99C62557B64AFE79C22F142E705CD69234D728EE0DFCB29CF3E5C195E41D5B83ED6D9F1B854B843BBBC3BFFFA5ABBFDAB3F520A049FEB701D6345F05CEC0795737B +watch. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . guThbhCIjbUAptB9xDvAYhkzMgbpFH51VmC7xcwTQrIExoziag9s8D0ufyxj9ncTH0EsKu7wTvXwvDaZiEbpnGJVe2Sv55wi8ULnBc1pI01yjuDfyynPPlwZXkHVuD7W2fG4VLhDu7w7//pau/2rP1IKBJ/rcB1jRfBc7AeVc3s= ;{id = 33655} +05776174636800002F000100015180000D03776564000006200000000013 +watch. 86400 IN NSEC wed. NS DS RRSIG NSEC +0377656400000200010002A300000E0161026E73036E69630377656400 +wed. 172800 IN NS a.ns.nic.wed. +0377656400000200010002A300000E0162026E73036E69630377656400 +wed. 172800 IN NS b.ns.nic.wed. +0377656400000200010002A300001103746C64076973632D736E7303636F6D00 +wed. 172800 IN NS tld.isc-sns.com. +0377656400000200010002A300001103746C64076973632D736E73036E657400 +wed. 172800 IN NS tld.isc-sns.net. +0377656400000200010002A300001203746C64076973632D736E7304696E666F00 +wed. 172800 IN NS tld.isc-sns.info. +0377656400002B00010001518000245CFF0802A1453299115DB6CC44E33B102BDF276CB93A6A103F6502EA5EF1D4ECF2172640 +wed. 86400 IN DS 23807 8 2 A1453299115DB6CC44E33B102BDF276CB93A6A103F6502EA5EF1D4ECF2172640 +0377656400002E0001000151800093002B08010001518052F4220052EAD970837700070D69FB87A98B8B524334716AEB87CC3805B7E8C220BDF5D97F93485BEF9A92AF893B9C62FE7EC2CAA22F5EBABB2C4927D9828C1138E2A0FC77C0B05AE016DC8417ED0FD11E50E2B609F411EC769ADCA7926B26E740F00ABBD5534E91B8D2AEF97C81DBFF357BE8B8FD40F0F357E04C60533C7483F8E986DB6E5E6C22D433FF +wed. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Bw1p+4epi4tSQzRxauuHzDgFt+jCIL312X+TSFvvmpKviTucYv5+wsqiL166uyxJJ9mCjBE44qD8d8CwWuAW3IQX7Q/RHlDitgn0Eex2mtynkmsm50DwCrvVU06RuNKu+XyB2/81e+i4/UDw81fgTGBTPHSD+OmG225ebCLUM/8= ;{id = 33655} +0377656400002E0001000151800093002F08010001518052F4220052EAD9708377002E3FC0D20AD5FAF949217BC0A4E6B932B29FD6C6B021ECC7A53824923684D52B2BA3C8A5EDEBCCFC15B210EE00C5735F095D7B2F6B178533F9C58C621A7AF83D877602BBCC317E2B82A721AB096B709220437718E497FD714ABDA9ED17C8885DED7F516D1CA5FCDE6C3BDF615C4CDD85C05BF73A557CBC01301AE627D662A3E4 +wed. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Lj/A0grV+vlJIXvApOa5MrKf1sawIezHpTgkkjaE1Ssro8il7evM/BWyEO4AxXNfCV17L2sXhTP5xYxiGnr4PYd2ArvMMX4rgqchqwlrcJIgQ3cY5Jf9cUq9qe0XyIhd7X9RbRyl/N5sO99hXEzdhcBb9zpVfLwBMBrmJ9Zio+Q= ;{id = 33655} +0377656400002F000100015180000C027766000006200000000013 +wed. 86400 IN NSEC wf. NS DS RRSIG NSEC +0161026E73036E69630377656400000100010002A300000448003101 +a.ns.nic.wed. 172800 IN A 72.0.49.1 +0161026E73036E69630377656400001C00010002A3000010262001710A0100AD0000000000000001 +a.ns.nic.wed. 172800 IN AAAA 2620:171:a01:ad::1 +0162026E73036E69630377656400000100010002A3000004482A7101 +b.ns.nic.wed. 172800 IN A 72.42.113.1 +0162026E73036E69630377656400001C00010002A3000010262001710D0100DC0000000000000001 +b.ns.nic.wed. 172800 IN AAAA 2620:171:d01:dc::1 +02776600000200010002A300000E016403657874036E696302667200 +wf. 172800 IN NS d.ext.nic.fr. +02776600000200010002A300000A0164036E696302667200 +wf. 172800 IN NS d.nic.fr. +02776600000200010002A300000E016503657874036E696302667200 +wf. 172800 IN NS e.ext.nic.fr. +02776600000200010002A300000E016603657874036E696302667200 +wf. 172800 IN NS f.ext.nic.fr. +02776600000200010002A300000E016703657874036E696302667200 +wf. 172800 IN NS g.ext.nic.fr. +02776600002B0001000151800024384708027DA5F1EBDA6DDCA8B41F753D9C30C36B8D7D21C362819883D0F402A0484A6036 +wf. 86400 IN DS 14407 8 2 7DA5F1EBDA6DDCA8B41F753D9C30C36B8D7D21C362819883D0F402A0484A6036 +02776600002B0001000151800024831A08028FC2E75050231829A3468F447D14D28C3CB6A7A1DE814FDC6287180B06D23111 +wf. 86400 IN DS 33562 8 2 8FC2E75050231829A3468F447D14D28C3CB6A7A1DE814FDC6287180B06D23111 +02776600002E0001000151800093002B08010001518052F4220052EAD970837700684B4898999E637EECCD1F0272B660248DAA53E22A74776739A2CD85C37EB1C134AD12B59802CA3FC9F3D7EB393D9C108B6E77DF89B9ED92658AE1609830369F2475A522F77899B9C6ABD147C0A364E8AC898A0D0B65467F7ED80F7398B6B36D8E8AC8DC19016375239B8004E120EADBD2637DA37B81681413709EBCD684B1CB +wf. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . aEtImJmeY37szR8CcrZgJI2qU+IqdHdnOaLNhcN+scE0rRK1mALKP8nz1+s5PZwQi25334m57ZJliuFgmDA2nyR1pSL3eJm5xqvRR8CjZOisiYoNC2VGf37YD3OYtrNtjorI3BkBY3Ujm4AE4SDq29JjfaN7gWgUE3CevNaEscs= ;{id = 33655} +02776600002E0001000151800093002F08010001518052F4220052EAD970837700825E7C53231930C754E26A21D7BA8230965F789BE7F77A3D3D041B386F2F37CA415A798DAFCE7E3B4CAC1F232A0761693F1F2EDD67D1EE3833CF3197479342728DBA858A93D4010A924C6FB962999D200FFC4827AA4F739788580E3557551F692585CBB022294AA4ADC1977EE5087F9A4F5F18C883F245F89919134B14C76941 +wf. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . gl58UyMZMMdU4moh17qCMJZfeJvn93o9PQQbOG8vN8pBWnmNr85+O0ysHyMqB2FpPx8u3WfR7jgzzzGXR5NCco26hYqT1AEKkkxvuWKZnSAP/Egnqk9zl4hYDjVXVR9pJYXLsCIpSqStwZd+5Qh/mk9fGMiD8kX4mRkTSxTHaUE= ;{id = 33655} +02776600002F000100015180000E047769656E000006200000000013 +wf. 86400 IN NSEC wien. NS DS RRSIG NSEC +047769656E00000200010002A3000010016103646E73036E6963047769656E00 +wien. 172800 IN NS a.dns.nic.wien. +047769656E00000200010002A3000010016203646E73036E6963047769656E00 +wien. 172800 IN NS b.dns.nic.wien. +047769656E00000200010002A3000010016303646E73036E6963047769656E00 +wien. 172800 IN NS c.dns.nic.wien. +047769656E00002B000100015180001837840801C13133146394C4D51F5821A57DF7714C7758B354 +wien. 86400 IN DS 14212 8 1 C13133146394C4D51F5821A57DF7714C7758B354 +047769656E00002B0001000151800024378408020C2459E744411A5077304E63B4E20E4E877B34F6E1FC3110FEA8133DD894BFBB +wien. 86400 IN DS 14212 8 2 0C2459E744411A5077304E63B4E20E4E877B34F6E1FC3110FEA8133DD894BFBB +047769656E00002B00010001518000185A320801955DD806C0A98C7D91296E8C75A1EC636B1A3DD7 +wien. 86400 IN DS 23090 8 1 955DD806C0A98C7D91296E8C75A1EC636B1A3DD7 +047769656E00002B00010001518000245A3208026A4B8394B41753028F4D627E86CF80EF6DE63FD48447A92E3B46854B9489798F +wien. 86400 IN DS 23090 8 2 6A4B8394B41753028F4D627E86CF80EF6DE63FD48447A92E3B46854B9489798F +047769656E00002E0001000151800093002B08010001518052F4220052EAD97083770004F78D6A46EB5D8797B33698ED9B912210F4F299F9BCC21E7CF0A07473D07B3862F2F82E32987B008C2DE58C5C638A5F8F839B7EC87C16D17FA858E3F4CA913C041E78CCE1B90C507F60B8910E2A8715DF252F8448D2F0234A1E7808012B1DFEDA0744622716A434400CFAEF61CF5787CAC9489CD18047860D42691C511FEF16 +wien. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BPeNakbrXYeXszaY7ZuRIhD08pn5vMIefPCgdHPQezhi8vguMph7AIwt5YxcY4pfj4Obfsh8FtF/qFjj9MqRPAQeeMzhuQxQf2C4kQ4qhxXfJS+ESNLwI0oeeAgBKx3+2gdEYicWpDRADPrvYc9Xh8rJSJzRgEeGDUJpHFEf7xY= ;{id = 33655} +047769656E00002E0001000151800093002F08010001518052F4220052EAD970837700A2A06B4CC387FA3DFC7B5AE732CB92FACC2BA4067EB9293196CE25E273AC2F4AC250AFEC40B2A477673A31403780DD997441CE958B434D2B2BCF95FE2F8604CB4A548B153A6FD10BC52CF6E5D9C5CF7FA561B739F48E703B04AFA1C3DF9B8283B60E4ED34AD2BEC15643BE5279A81CB87875404951088252823421E4E02099B1 +wien. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . oqBrTMOH+j38e1rnMsuS+swrpAZ+uSkxls4l4nOsL0rCUK/sQLKkd2c6MUA3gN2ZdEHOlYtDTSsrz5X+L4YEy0pUixU6b9ELxSz25dnFz3+lYbc59I5wOwSvocPfm4KDtg5O00rSvsFWQ75SeagcuHh1QElRCIJSgjQh5OAgmbE= ;{id = 33655} +047769656E00002F000100015180000F05776F726B73000006200000000013 +wien. 86400 IN NSEC works. NS DS RRSIG NSEC +016103646E73036E6963047769656E00000100010002A3000004C200190F +a.dns.nic.wien. 172800 IN A 194.0.25.15 +016103646E73036E6963047769656E00001C00010002A300001020010678002000000000000000000015 +a.dns.nic.wien. 172800 IN AAAA 2001:678:20::15 +016203646E73036E6963047769656E00000100010002A3000004C1AA3D04 +b.dns.nic.wien. 172800 IN A 193.170.61.4 +016203646E73036E6963047769656E00001C00010002A30000102001062A000A20000000000000000004 +b.dns.nic.wien. 172800 IN AAAA 2001:62a:a:2000::4 +016303646E73036E6963047769656E00000100010002A3000004C1AABB04 +c.dns.nic.wien. 172800 IN A 193.170.187.4 +016303646E73036E6963047769656E00001C00010002A30000102001062A000A30000000000000000004 +c.dns.nic.wien. 172800 IN AAAA 2001:62a:a:3000::4 +05776F726B7300000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +works. 172800 IN NS demand.beta.aridns.net.au. +05776F726B7300000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +works. 172800 IN NS demand.alpha.aridns.net.au. +05776F726B7300000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +works. 172800 IN NS demand.delta.aridns.net.au. +05776F726B7300000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +works. 172800 IN NS demand.gamma.aridns.net.au. +05776F726B7300002B0001000151800024423A0802E60E67E7D2C27A10DD15E494009CF20208178D7E686EBA5C34AA60CF6BB4157A +works. 86400 IN DS 16954 8 2 E60E67E7D2C27A10DD15E494009CF20208178D7E686EBA5C34AA60CF6BB4157A +05776F726B7300002E0001000151800093002B08010001518052F4220052EAD97083770087E57E1EA67E6235F7189C7979372709C35834684D6E626FDFB7FFE4BA93DD7FAAA48F44F7F93CEC8D02852324BA166CD936802512CEFC84B3FC8DE83C165018FAB55C63250D9278C7560BDD9B9DD10CF99E40F0DDC115E58CE9E7CFF9F1BA066553FEBBCD33D6AE879593EB8554B0DF2577556FE2B093E8D5C49817276DEA7B +works. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . h+V+HqZ+YjX3GJx5eTcnCcNYNGhNbmJv37f/5LqT3X+qpI9E9/k87I0ChSMkuhZs2TaAJRLO/ISz/I3oPBZQGPq1XGMlDZJ4x1YL3Zud0Qz5nkDw3cEV5Yzp58/58boGZVP+u80z1q6HlZPrhVSw3yV3VW/isJPo1cSYFydt6ns= ;{id = 33655} +05776F726B7300002E0001000151800093002F08010001518052F4220052EAD97083770061BCB7B33E63E154C0E6FE1A28C15AD67DDAC56F5514973F2FBC54F1237C2EF2BDC5E5D455D869CD6BECD0632217B3B44E024BEE18BA3E2D6049111A9BBB19D0204373FCCB6FF2D2F811B21D1B2A12D2205F1C1500CF7B6EEF2B46E55AAB9E7126F7CE9A06EBCD83FC5A918685F9920032278273DE3636CCD471DF6CCE23A1BD +works. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Yby3sz5j4VTA5v4aKMFa1n3axW9VFJc/L7xU8SN8LvK9xeXUVdhpzWvs0GMiF7O0TgJL7hi6Pi1gSREam7sZ0CBDc/zLb/LS+BGyHRsqEtIgXxwVAM97bu8rRuVaq55xJvfOmgbrzYP8WpGGhfmSADIngnPeNjbM1HHfbM4job0= ;{id = 33655} +05776F726B7300002F000100015180000C027773000006200000000013 +works. 86400 IN NSEC ws. NS DS RRSIG NSEC +02777300000200010002A300000C036E733203646E7302777300 +ws. 172800 IN NS ns2.dns.ws. +02777300000200010002A300000C036E733303646E7302777300 +ws. 172800 IN NS ns3.dns.ws. +02777300000200010002A300000C036E733403646E7302777300 +ws. 172800 IN NS ns4.dns.ws. +02777300000200010002A300000C036E733503646E7302777300 +ws. 172800 IN NS ns5.dns.ws. +02777300000200010002A300000C036E733603646E7302777300 +ws. 172800 IN NS ns6.dns.ws. +02777300000200010002A300000C036E733703646E7302777300 +ws. 172800 IN NS ns7.dns.ws. +02777300002F000100015180001006E99B86E59BA2000006200000000003 +ws. 86400 IN NSEC \233\155\134\229\155\162. NS RRSIG NSEC +02777300002E0001000151800093002F08010001518052F4220052EAD97083770076C711EBDE8B4666B60FABD4E402B66835CF070EF3AA23A3B8906807620B71A76F44120F8F7A4D83B5C08E1CDD2F5C5DD5DF4775B7E49B3F8039D5E37A4962D8DDAF1763DA52A25DD9310F5513A499D3963450226AC8DCFB0439122138B5D7A0F54337C564A093E4C11C13892EA7D32BA267536DDE5D9E2D3C22ECFD5F1A415D +ws. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . dscR696LRma2D6vU5AK2aDXPBw7zqiOjuJBoB2ILcadvRBIPj3pNg7XAjhzdL1xd1d9Hdbfkmz+AOdXjekli2N2vF2PaUqJd2TEPVROkmdOWNFAiasjc+wQ5EiE4tdeg9UM3xWSgk+TBHBOJLqfTK6JnU23eXZ4tPCLs/V8aQV0= ;{id = 33655} +036E733203646E7302777300000100010002A300000440461350 +ns2.dns.ws. 172800 IN A 64.70.19.80 +036E733303646E7302777300000100010002A300000443DDB234 +ns3.dns.ws. 172800 IN A 67.221.178.52 +036E733403646E7302777300000100010002A300000443DDB235 +ns4.dns.ws. 172800 IN A 67.221.178.53 +036E733503646E7302777300000100010002A300000440461346 +ns5.dns.ws. 172800 IN A 64.70.19.70 +036E733603646E7302777300000100010002A30000044D5C41AC +ns6.dns.ws. 172800 IN A 77.92.65.172 +036E733703646E7302777300000100010002A30000044D5C41AE +ns7.dns.ws. 172800 IN A 77.92.65.174 +06E99B86E59BA200000200010002A30000110161097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS a.zdnscloud.com. +06E99B86E59BA200000200010002A30000110162097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS b.zdnscloud.com. +06E99B86E59BA200000200010002A30000110163097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS c.zdnscloud.com. +06E99B86E59BA200000200010002A30000110164097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS d.zdnscloud.com. +06E99B86E59BA200000200010002A30000110165097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS e.zdnscloud.com. +06E99B86E59BA200000200010002A30000110166097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS f.zdnscloud.com. +06E99B86E59BA200000200010002A30000110167097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS g.zdnscloud.com. +06E99B86E59BA200000200010002A30000110169097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS i.zdnscloud.com. +06E99B86E59BA200000200010002A3000011016A097A646E73636C6F756403636F6D00 +\233\155\134\229\155\162. 172800 IN NS j.zdnscloud.com. +06E99B86E59BA200002B000100015180002423630802E8079352130447DAA7F3E4809A9D5D208944FE4D99ED148D3BCC933C05D4133E +\233\155\134\229\155\162. 86400 IN DS 9059 8 2 E8079352130447DAA7F3E4809A9D5D208944FE4D99ED148D3BCC933C05D4133E +06E99B86E59BA200002E0001000151800093002B08010001518052F4220052EAD9708377003E706A622F5746BBB8A55BD215A9D1C501A5BCD832D49857C3D02593FAC1721BE12E89B48861E6C048719EFCD18FD1FE9CDFC735BF5ED704F0BF7D47D288D0B315C7BACEB8F343BA2596759C7AF877303E8420FC26408832D1028D2DA19AA18EF333762648CD886E33A9568068C95883FAC3BB9CA19577866DDD0029E0F2B823 +\233\155\134\229\155\162. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . PnBqYi9XRru4pVvSFanRxQGlvNgy1JhXw9Alk/rBchvhLom0iGHmwEhxnvzRj9H+nN/HNb9e1wTwv31H0ojQsxXHus6480O6JZZ1nHr4dzA+hCD8JkCIMtECjS2hmqGO8zN2JkjNiG4zqVaAaMlYg/rDu5yhlXeGbd0AKeDyuCM= ;{id = 33655} +06E99B86E59BA200002E0001000151800093002F08010001518052F4220052EAD970837700BB57791491C9BB0AC6DE87AE304AA2A5FDE0B811EA0B107548125123E332928D0F296EEC5E04AAEA2A5EB89B70070D7547E0A442F7219802C42C15E8D040C34BBB2F75B60A2ECE0E26AA9DA68CEFE6A3AE0B87306462419488B2956EDFAB7318AED9BDB378BE6414D577297444F497AF4F5E3EE1788D0AAF3B1A78FE176E3E7E +\233\155\134\229\155\162. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . u1d5FJHJuwrG3oeuMEqipf3guBHqCxB1SBJRI+Myko0PKW7sXgSq6ipeuJtwBw11R+CkQvchmALELBXo0EDDS7svdbYKLs4OJqqdpozv5qOuC4cwZGJBlIiylW7fq3MYrtm9s3i+ZBTVdyl0RPSXr09ePuF4jQqvOxp4/hduPn4= ;{id = 33655} +06E99B86E59BA200002F000100015180001006E59CA8E7BABF000006200000000013 +\233\155\134\229\155\162. 86400 IN NSEC \229\156\168\231\186\191. NS DS RRSIG NSEC +06E59CA8E7BABF00000200010002A300000F026130036E696306E59CA8E7BABF00 +\229\156\168\231\186\191. 172800 IN NS a0.nic.\229\156\168\231\186\191. +06E59CA8E7BABF00000200010002A300000F026132036E696306E59CA8E7BABF00 +\229\156\168\231\186\191. 172800 IN NS a2.nic.\229\156\168\231\186\191. +06E59CA8E7BABF00000200010002A300000F026230036E696306E59CA8E7BABF00 +\229\156\168\231\186\191. 172800 IN NS b0.nic.\229\156\168\231\186\191. +06E59CA8E7BABF00000200010002A300000F026330036E696306E59CA8E7BABF00 +\229\156\168\231\186\191. 172800 IN NS c0.nic.\229\156\168\231\186\191. +06E59CA8E7BABF00002B0001000151800018421607019A0C050DE2A06E4F656D4AF6E289B8AB76E524B0 +\229\156\168\231\186\191. 86400 IN DS 16918 7 1 9A0C050DE2A06E4F656D4AF6E289B8AB76E524B0 +06E59CA8E7BABF00002B0001000151800024421607025770C75D8F11887B7845A83A145DE52439BF7D86D3F71F07358112C87EA43B8B +\229\156\168\231\186\191. 86400 IN DS 16918 7 2 5770C75D8F11887B7845A83A145DE52439BF7D86D3F71F07358112C87EA43B8B +06E59CA8E7BABF00002E0001000151800093002B08010001518052F4220052EAD9708377002AB1FFB4B2B3BFBDA5392B04DA85D193EB40F46C192467A8631A2D9254516B00F9B0F4B45D1087D0E8340819F32BED21753AAFABDB1DDA0F70669813F988DF0F6D5924987805B720CCF64CCD574F3C259198E02683B748B476F2144A4185830E8D9E2B7151D55A14DBAA20C8539229B4833566A01EDC31C33CB0D46766F4AE99 +\229\156\168\231\186\191. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . KrH/tLKzv72lOSsE2oXRk+tA9GwZJGeoYxotklRRawD5sPS0XRCH0Og0CBnzK+0hdTqvq9sd2g9wZpgT+YjfD21ZJJh4BbcgzPZMzVdPPCWRmOAmg7dItHbyFEpBhYMOjZ4rcVHVWhTbqiDIU5IptIM1ZqAe3DHDPLDUZ2b0rpk= ;{id = 33655} +06E59CA8E7BABF00002E0001000151800093002F08010001518052F4220052EAD97083770008B9BFE416B5605F21DFFD99648C61E57A0834E290CDC605C88F737AB995E604D9B176809EA9ADAB606C6B3EF0734A09A40EACF4FEC708DF6C91CEE244FECE8C05AF5881CC32F5F50624D1F4EC6CA81AE60CFDC95602D0D18B7D4E220C3E0EB9E859FF763C7B801F77732014C914ADE4A02E242A136D04D82FBD36D445ED2986 +\229\156\168\231\186\191. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CLm/5Ba1YF8h3/2ZZIxh5XoINOKQzcYFyI9zermV5gTZsXaAnqmtq2Bsaz7wc0oJpA6s9P7HCN9skc7iRP7OjAWvWIHMMvX1BiTR9OxsqBrmDP3JVgLQ0Yt9TiIMPg656Fn/djx7gB93cyAUyRSt5KAuJCoTbQTYL7021EXtKYY= ;{id = 33655} +06E59CA8E7BABF00002F000100015180001006ED959CEAB5AD000006200000000013 +\229\156\168\231\186\191. 86400 IN NSEC \237\149\156\234\181\173. NS DS RRSIG NSEC +026130036E696306E59CA8E7BABF00000100010002A30000044116BC09 +a0.nic.\229\156\168\231\186\191. 172800 IN A 65.22.188.9 +026130036E696306E59CA8E7BABF00001C00010002A30000102A01884000B600000000000000000009 +a0.nic.\229\156\168\231\186\191. 172800 IN AAAA 2a01:8840:b6::9 +026132036E696306E59CA8E7BABF00000100010002A30000044116BF09 +a2.nic.\229\156\168\231\186\191. 172800 IN A 65.22.191.9 +026132036E696306E59CA8E7BABF00001C00010002A30000102A01884000B900000000000000000009 +a2.nic.\229\156\168\231\186\191. 172800 IN AAAA 2a01:8840:b9::9 +026230036E696306E59CA8E7BABF00000100010002A30000044116BD09 +b0.nic.\229\156\168\231\186\191. 172800 IN A 65.22.189.9 +026230036E696306E59CA8E7BABF00001C00010002A30000102A01884000B700000000000000000009 +b0.nic.\229\156\168\231\186\191. 172800 IN AAAA 2a01:8840:b7::9 +026330036E696306E59CA8E7BABF00000100010002A30000044116BE09 +c0.nic.\229\156\168\231\186\191. 172800 IN A 65.22.190.9 +026330036E696306E59CA8E7BABF00001C00010002A30000102A01884000B800000000000000000009 +c0.nic.\229\156\168\231\186\191. 172800 IN AAAA 2a01:8840:b8::9 +06ED959CEAB5AD00000200010002A300000A016203646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS b.dns.kr. +06ED959CEAB5AD00000200010002A300000A016303646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS c.dns.kr. +06ED959CEAB5AD00000200010002A300000A016403646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS d.dns.kr. +06ED959CEAB5AD00000200010002A300000A016503646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS e.dns.kr. +06ED959CEAB5AD00000200010002A300000A016603646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS f.dns.kr. +06ED959CEAB5AD00000200010002A300000A016703646E73026B7200 +\237\149\156\234\181\173. 172800 IN NS g.dns.kr. +06ED959CEAB5AD00002B00010001518000246BB50702A1C0A1B101F2B31DA2DD995BD0994A6C1E9E34E325FA007E2EA8721DFC4C6CB4 +\237\149\156\234\181\173. 86400 IN DS 27573 7 2 A1C0A1B101F2B31DA2DD995BD0994A6C1E9E34E325FA007E2EA8721DFC4C6CB4 +06ED959CEAB5AD00002B0001000151800024DC0F0702ED307DC0902F1130ADBCB1B6FBA7C16F76927BD3E33D80FED23DAEFEFF2604C8 +\237\149\156\234\181\173. 86400 IN DS 56335 7 2 ED307DC0902F1130ADBCB1B6FBA7C16F76927BD3E33D80FED23DAEFEFF2604C8 +06ED959CEAB5AD00002E0001000151800093002B08010001518052F4220052EAD97083770062EE21A040DC1D9CA824BCCE176528F1125F4851155233F8789B54C33B29324A3DBC559B88BA1FB0C490AF814FD63D24262D96A6AF6D6B429DE619BD7C26A64593EC282BA13657B262A41331707D745738FB981E8BE9A2B9EA1FE6AD3830D06619BDF65AF7A10918B74D070BDBF4E3806A4B4B68502E4393E30E9D41921428CD +\237\149\156\234\181\173. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Yu4hoEDcHZyoJLzOF2Uo8RJfSFEVUjP4eJtUwzspMko9vFWbiLofsMSQr4FP1j0kJi2Wpq9ta0Kd5hm9fCamRZPsKCuhNleyYqQTMXB9dFc4+5gei+miueof5q04MNBmGb32WvehCRi3TQcL2/TjgGpLS2hQLkOT4w6dQZIUKM0= ;{id = 33655} +06ED959CEAB5AD00002E0001000151800093002F08010001518052F4220052EAD97083770031A7B7C82F3C02F29576A00135B21235EEED94327B456E051871D59B6F0B7ABDDBCFDCF6860811A41813739729331E0A9005B9E781D5ED9274010E577607C0B6B97393623BAD94B4DADF38D59EA226E5B2E12A2CF097964A210A70FCE10BE2623F073B3F8D9C2D3F924E2E2E0A5C8D65ADB7AEAFD93879B8605AEBD1614FC076 +\237\149\156\234\181\173. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Mae3yC88AvKVdqABNbISNe7tlDJ7RW4FGHHVm28Ler3bz9z2hggRpBgTc5cpMx4KkAW554HV7ZJ0AQ5XdgfAtrlzk2I7rZS02t841Z6iJuWy4Sos8JeWSiEKcPzhC+JiPwc7P42cLT+STi4uClyNZa23rq/ZOHm4YFrr0WFPwHY= ;{id = 33655} +06ED959CEAB5AD00002F00010001518000160CE0A6ADE0A6BEE0A6B0E0A6A4000006200000000013 +\237\149\156\234\181\173. 86400 IN NSEC \224\166\173\224\166\190\224\166\176\224\166\164. NS DS RRSIG NSEC +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS a0.cctld.afilias-nst.info. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS a1.in.afilias-nst.in. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS a2.in.afilias-nst.info. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS b0.cctld.afilias-nst.org. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS b1.in.afilias-nst.in. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS b2.in.afilias-nst.org. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS c0.cctld.afilias-nst.info. +0CE0A6ADE0A6BEE0A6B0E0A6A400000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\166\173\224\166\190\224\166\176\224\166\164. 172800 IN NS d0.cctld.afilias-nst.org. +0CE0A6ADE0A6BEE0A6B0E0A6A400002F000100015180001006E585ACE79B8A000006200000000003 +\224\166\173\224\166\190\224\166\176\224\166\164. 86400 IN NSEC \229\133\172\231\155\138. NS RRSIG NSEC +0CE0A6ADE0A6BEE0A6B0E0A6A400002E0001000151800093002F08010001518052F4220052EAD9708377000C4AC34988C0DEC8F5F95FEF28AF447773D6645CC6F061F840101D70F21455EF65096E50EFDF19039889DB343E90416A78A42208CEB5D4424E17BCCAEDE600A2F4C601AFB3C472D7FE3A6EC61D0633F2C89F709D7FD43284D7FACE6B3640BC0617C80ABB0CE314AA53AAF5D7F40B76B1C877244B04566E18A264BC55C9B6B3EB +\224\166\173\224\166\190\224\166\176\224\166\164. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . DErDSYjA3sj1+V/vKK9Ed3PWZFzG8GH4QBAdcPIUVe9lCW5Q798ZA5iJ2zQ+kEFqeKQiCM611EJOF7zK7eYAovTGAa+zxHLX/jpuxh0GM/LIn3Cdf9QyhNf6zms2QLwGF8gKuwzjFKpTqvXX9At2sch3JEsEVm4YomS8Vcm2s+s= ;{id = 33655} +06E585ACE79B8A00000200010002A300000E036E733105636F6E616302636E00 +\229\133\172\231\155\138. 172800 IN NS ns1.conac.cn. +06E585ACE79B8A00000200010002A300000E036E733205636F6E616302636E00 +\229\133\172\231\155\138. 172800 IN NS ns2.conac.cn. +06E585ACE79B8A00000200010002A300000E036E733305636F6E616302636E00 +\229\133\172\231\155\138. 172800 IN NS ns3.conac.cn. +06E585ACE79B8A00000200010002A300000E036E733405636F6E616302636E00 +\229\133\172\231\155\138. 172800 IN NS ns4.conac.cn. +06E585ACE79B8A00000200010002A300000E036E733505636F6E616302636E00 +\229\133\172\231\155\138. 172800 IN NS ns5.conac.cn. +06E585ACE79B8A00002B0001000151800024BC620802A16754C480E58C0D17126B3BAF93F32BAC39A916CF9D1F6F3A1F5C33687BE80F +\229\133\172\231\155\138. 86400 IN DS 48226 8 2 A16754C480E58C0D17126B3BAF93F32BAC39A916CF9D1F6F3A1F5C33687BE80F +06E585ACE79B8A00002E0001000151800093002B08010001518052F4220052EAD97083770005289E44DB84E8446F32CF838B43B9E2983B14BCDC3D88021D0EB4C7BE38372CC60E859A29E298E96DAF2506D0E7CEDD19CE04284915A74391C64EB055961E2E70CFDF9BC128D11F3704DDDA47673C2786AAB7B4B8C5537E1D3751030F169F6B883DAB79CD5CFEB1C77112FDD03A3F400059B8C78B10F5784BE91E2613E4B8EE +\229\133\172\231\155\138. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BSieRNuE6ERvMs+Di0O54pg7FLzcPYgCHQ60x744NyzGDoWaKeKY6W2vJQbQ587dGc4EKEkVp0ORxk6wVZYeLnDP35vBKNEfNwTd2kdnPCeGqre0uMVTfh03UQMPFp9riD2rec1c/rHHcRL90Do/QABZuMeLEPV4S+keJhPkuO4= ;{id = 33655} +06E585ACE79B8A00002E0001000151800093002F08010001518052F4220052EAD9708377003D62C79FC977DE655E87CD4C38A7575E6BAB03445603A22F0C24139B248493A3D76EED832B9389C4CE745BCBBDC32B7B8BE514377DE891BEE70712A5B75C63CD37D6BBA5DA5F889C037AB63ACFAF20BD208BAA21CEA8BA2F023AB78BFD4309B064AC85777CE0516A047AC439CF210B6942DADF50E778FBDFC29E3B73BBF2B4AD +\229\133\172\231\155\138. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . PWLHn8l33mVeh81MOKdXXmurA0RWA6IvDCQTmySEk6PXbu2DK5OJxM50W8u9wyt7i+UUN33okb7nBxKlt1xjzTfWu6XaX4icA3q2Os+vIL0gi6ohzqi6LwI6t4v9QwmwZKyFd3zgUWoEesQ5zyELaULa31DnePvfwp47c7vytK0= ;{id = 33655} +06E585ACE79B8A00002F000100015180001006E585ACE58FB8000006200000000013 +\229\133\172\231\155\138. 86400 IN NSEC \229\133\172\229\143\184. NS DS RRSIG NSEC +06E585ACE58FB800000200010002A300000C0161056E67746C6402636E00 +\229\133\172\229\143\184. 172800 IN NS a.ngtld.cn. +06E585ACE58FB800000200010002A300000C0162056E67746C6402636E00 +\229\133\172\229\143\184. 172800 IN NS b.ngtld.cn. +06E585ACE58FB800000200010002A300000C0163056E67746C6402636E00 +\229\133\172\229\143\184. 172800 IN NS c.ngtld.cn. +06E585ACE58FB800000200010002A300000C0164056E67746C6402636E00 +\229\133\172\229\143\184. 172800 IN NS d.ngtld.cn. +06E585ACE58FB800000200010002A300000C0165056E67746C6402636E00 +\229\133\172\229\143\184. 172800 IN NS e.ngtld.cn. +06E585ACE58FB800002B0001000151800024B8FF0802D8FE897CE8AC620CB7CB9F6F4E887FC7A14C3ED80CB973DA4E30A17CECA1015B +\229\133\172\229\143\184. 86400 IN DS 47359 8 2 D8FE897CE8AC620CB7CB9F6F4E887FC7A14C3ED80CB973DA4E30A17CECA1015B +06E585ACE58FB800002E0001000151800093002B08010001518052F4220052EAD970837700B532C45E9D3CCAD8E02C4CC205D7B75CE3D263CD18FEC4B17B0D5F7FFA94AB1F82BB021F76E4237BE6FF26ED1367963E33CB1D2CFFB5F9D6BDDC0628F3EF32D3084BA7E37C6BA5F29513BEFDC94B222B0535F95B9EDBBCF2E28BA643A37B8EC4817CA5B8DED0E0D4D2D0428BA00CCA72FAA58CAA1B82714CA3236E796D557FA2 +\229\133\172\229\143\184. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . tTLEXp08ytjgLEzCBde3XOPSY80Y/sSxew1ff/qUqx+CuwIfduQje+b/Ju0TZ5Y+M8sdLP+1+da93AYo8+8y0whLp+N8a6XylRO+/clLIisFNflbntu88uKLpkOje47EgXyluN7Q4NTS0EKLoAzKcvqljKobgnFMoyNueW1Vf6I= ;{id = 33655} +06E585ACE58FB800002E0001000151800093002F08010001518052F4220052EAD9708377005CEE60FBDCF426EBCDE1E6D9BF0AD3BD4B3E14439F50D199093962F7929C71F342FE647F7D7EAB8D62CC505A61FB61ADDBDE65BE57B941C4524D46923DA0471CE44436E885C976BF3375D4E49E2CF1EA8997ECDAA62BD8E1558CE6C78CF31DDF93D06E57AD7164549B9B51FDCDE688D4FA8F671DEB30C84704B016529621B346 +\229\133\172\229\143\184. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . XO5g+9z0JuvN4ebZvwrTvUs+FEOfUNGZCTli95KccfNC/mR/fX6rjWLMUFph+2Gt295lvle5QcRSTUaSPaBHHORENuiFyXa/M3XU5J4s8eqJl+zapivY4VWM5seM8x3fk9BuV61xZFSbm1H9zeaI1PqPZx3rMMhHBLAWUpYhs0Y= ;{id = 33655} +06E585ACE58FB800002F000100015180001309E68891E788B1E4BDA0000006200000000013 +\229\133\172\229\143\184. 86400 IN NSEC \230\136\145\231\136\177\228\189\160. NS DS RRSIG NSEC +09E68891E788B1E4BDA000000200010002A30000110161097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS a.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110162097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS b.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110163097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS c.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110164097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS d.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110165097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS e.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110166097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS f.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110167097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS g.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A30000110169097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS i.zdnscloud.com. +09E68891E788B1E4BDA000000200010002A3000011016A097A646E73636C6F756403636F6D00 +\230\136\145\231\136\177\228\189\160. 172800 IN NS j.zdnscloud.com. +09E68891E788B1E4BDA000002B00010001518000249218080207C6728C4F51FFD6B1E829D5AFBDEE24A30E710EBEFC50C8D6AB7785223A0A0C +\230\136\145\231\136\177\228\189\160. 86400 IN DS 37400 8 2 07C6728C4F51FFD6B1E829D5AFBDEE24A30E710EBEFC50C8D6AB7785223A0A0C +09E68891E788B1E4BDA000002E0001000151800093002B08010001518052F4220052EAD9708377002EAEE75BABEAC52FBCA5D081FBA046AB3A8672F606DA30CA7A8D8D26D2DE30C8F0FEFB3BED806C658A38A708DA9F7A5EDB65D4EFECC480B8D4D8FF9B9E2D726C29DCFD990AE106B8FA14ED78572E6254A13233807F0FBBDB8312CF2568A98145481C3DB493A57BB87341E8A3BBF24BCF359F598AF2D7CFA93C0051325C362ED5 +\230\136\145\231\136\177\228\189\160. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Lq7nW6vqxS+8pdCB+6BGqzqGcvYG2jDKeo2NJtLeMMjw/vs77YBsZYo4pwjan3pe22XU7+zEgLjU2P+bni1ybCnc/ZkK4Qa4+hTteFcuYlShMjOAfw+724MSzyVoqYFFSBw9tJOle7hzQeiju/JLzzWfWYry18+pPABRMlw2LtU= ;{id = 33655} +09E68891E788B1E4BDA000002E0001000151800093002F08010001518052F4220052EAD970837700B6CB4B457F374782ECA896C0A96F35B06889699DF6860BBBFDD8DFE977A6D027436CBB2C63A998295F2EB2E39F89C1EC819CE2B8E5150AC49AEB873BACC49DFEE56D3B653D86E52D71F7805725B4CADB65845F435610F067FAC5BD0C6229DDDEBCE7BF791D6E2CF58920CCAF9E0CD348F2C57685AFB9B41476CC5EE330AB8AAE +\230\136\145\231\136\177\228\189\160. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . tstLRX83R4LsqJbAqW81sGiJaZ32hgu7/djf6Xem0CdDbLssY6mYKV8usuOficHsgZziuOUVCsSa64c7rMSd/uVtO2U9huUtcfeAVyW0yttlhF9DVhDwZ/rFvQxiKd3evOe/eR1uLPWJIMyvngzTSPLFdoWvubQUdsxe4zCriq4= ;{id = 33655} +09E68891E788B1E4BDA000002F000100015180001006D29BD0B0D0B7000006200000000013 +\230\136\145\231\136\177\228\189\160. 86400 IN NSEC \210\155\208\176\208\183. NS DS RRSIG NSEC +06D29BD0B0D0B700000200010002A300001B026B7A056363746C640761757468646E730472697065036E657400 +\210\155\208\176\208\183. 172800 IN NS kz.cctld.authdns.ripe.net. +06D29BD0B0D0B700000200010002A300000B026E73036E6963026B7A00 +\210\155\208\176\208\183. 172800 IN NS ns.nic.kz. +06D29BD0B0D0B700002F00010001518000160CD0BED0BDD0BBD0B0D0B9D0BD000006200000000003 +\210\155\208\176\208\183. 86400 IN NSEC \208\190\208\189\208\187\208\176\208\185\208\189. NS RRSIG NSEC +06D29BD0B0D0B700002E0001000151800093002F08010001518052F4220052EAD97083770011F1B05774DD4FCB1D6E532CBB182A80EA5F1B89EC158B91CF97033AB4C3D2F46BA9716EC4EB6CA12DB1C3FD6E4515AE75618887B29D49453B5F65AB5B5AE4D20244F2612F55B64FA8EECBE7C42BE93C606727F8193CE49CB57B1FB1979442D5F0848FF1AC4D7AD73A16EF9C9CB1B65EE25263C3189A1E356C8981D46CF88605 +\210\155\208\176\208\183. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EfGwV3TdT8sdblMsuxgqgOpfG4nsFYuRz5cDOrTD0vRrqXFuxOtsoS2xw/1uRRWudWGIh7KdSUU7X2WrW1rk0gJE8mEvVbZPqO7L58Qr6TxgZyf4GTzknLV7H7GXlELV8ISP8axNetc6Fu+cnLG2XuJSY8MYmh41bImB1Gz4hgU= ;{id = 33655} +0CD0BED0BDD0BBD0B0D0B9D0BD00000200010002A300001608616E7963617374390769726F6E646E73036E657400 +\208\190\208\189\208\187\208\176\208\185\208\189. 172800 IN NS anycast9.irondns.net. +0CD0BED0BDD0BBD0B0D0B9D0BD00000200010002A300001709616E796361737431300769726F6E646E73036E657400 +\208\190\208\189\208\187\208\176\208\185\208\189. 172800 IN NS anycast10.irondns.net. +0CD0BED0BDD0BBD0B0D0B9D0BD00000200010002A300001709616E796361737432330769726F6E646E73036E657400 +\208\190\208\189\208\187\208\176\208\185\208\189. 172800 IN NS anycast23.irondns.net. +0CD0BED0BDD0BBD0B0D0B9D0BD00000200010002A300001709616E796361737432340769726F6E646E73036E657400 +\208\190\208\189\208\187\208\176\208\185\208\189. 172800 IN NS anycast24.irondns.net. +0CD0BED0BDD0BBD0B0D0B9D0BD00002B0001000151800024D54E0A02A1A13FCD0AFB413657352EBA09765C81E0BA0AF0B8452F03EB0D0E4C9661241D +\208\190\208\189\208\187\208\176\208\185\208\189. 86400 IN DS 54606 10 2 A1A13FCD0AFB413657352EBA09765C81E0BA0AF0B8452F03EB0D0E4C9661241D +0CD0BED0BDD0BBD0B0D0B9D0BD00002E0001000151800093002B08010001518052F4220052EAD9708377008691204B2F4A7130FAD9DFF0C3AF841838869BE79E76B56FDAC76F22AD6257D85705B416B377F05306EEB6F485D8F86B43084FCCA4A99002D6EC3427F8032811A780E9D3AF1EAB057886D922AED0B0A264C399117BEF8F2C913E98139734F8DF364DE3F9BE756CFFB640FD4C57755B2316F50B3709E77F47A5764817FA50B40C +\208\190\208\189\208\187\208\176\208\185\208\189. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . hpEgSy9KcTD62d/ww6+EGDiGm+eedrVv2sdvIq1iV9hXBbQWs3fwUwbutvSF2PhrQwhPzKSpkALW7DQn+AMoEaeA6dOvHqsFeIbZIq7QsKJkw5kRe++PLJE+mBOXNPjfNk3j+b51bP+2QP1MV3VbIxb1CzcJ539HpXZIF/pQtAw= ;{id = 33655} +0CD0BED0BDD0BBD0B0D0B9D0BD00002E0001000151800093002F08010001518052F4220052EAD970837700AF55868DA5F68DE82FC7533F56FC08AE0864050666D289AECF7ABB54C05CE151588D4D79ECF24BC8566AAB1AEB9F88C6CD85681EC64D114CF8C74CC889BBA1576F40860AF601E3782415AB3951B907A6BAAE799F161518377BF82F27E6D8EDD7C5E4F7DF3251186309428B74A2F143AA379D3AAB4F6A6B2278DA5F883BFF380C +\208\190\208\189\208\187\208\176\208\185\208\189. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . r1WGjaX2jegvx1M/VvwIrghkBQZm0omuz3q7VMBc4VFYjU157PJLyFZqqxrrn4jGzYVoHsZNEUz4x0zIibuhV29Ahgr2AeN4JBWrOVG5B6a6rnmfFhUYN3v4Lyfm2O3XxeT33zJRGGMJQot0ovFDqjedOqtPamsieNpfiDv/OAw= ;{id = 33655} +0CD0BED0BDD0BBD0B0D0B9D0BD00002F000100015180001208D181D0B0D0B9D182000006200000000013 +\208\190\208\189\208\187\208\176\208\185\208\189. 86400 IN NSEC \209\129\208\176\208\185\209\130. NS DS RRSIG NSEC +08D181D0B0D0B9D18200000200010002A300001608616E7963617374390769726F6E646E73036E657400 +\209\129\208\176\208\185\209\130. 172800 IN NS anycast9.irondns.net. +08D181D0B0D0B9D18200000200010002A300001709616E796361737431300769726F6E646E73036E657400 +\209\129\208\176\208\185\209\130. 172800 IN NS anycast10.irondns.net. +08D181D0B0D0B9D18200000200010002A300001709616E796361737432330769726F6E646E73036E657400 +\209\129\208\176\208\185\209\130. 172800 IN NS anycast23.irondns.net. +08D181D0B0D0B9D18200000200010002A300001709616E796361737432340769726F6E646E73036E657400 +\209\129\208\176\208\185\209\130. 172800 IN NS anycast24.irondns.net. +08D181D0B0D0B9D18200002B0001000151800024EF610A02FD5803E5D6CA1B8B5B3345B8E6AEA0E640988D973AE153713A7BC890A84E3400 +\209\129\208\176\208\185\209\130. 86400 IN DS 61281 10 2 FD5803E5D6CA1B8B5B3345B8E6AEA0E640988D973AE153713A7BC890A84E3400 +08D181D0B0D0B9D18200002E0001000151800093002B08010001518052F4220052EAD970837700820876EC3BE68E3A87F992C3185D4F888662EFA6D898B036DCDE8B2451AF112736BC3FA4B90B6A653CF56F244BFE2249B213371BD84E387DE8214962EA4FFC3812276B86349581D7BCDF689FB1CE65F6CEBB87193F81C01E95A565DCF8CA6DCCF0F37AEED27A4A77F74460EBBE3616F0F102A5964EAE5EE37A98CEDE670E79D6 +\209\129\208\176\208\185\209\130. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ggh27DvmjjqH+ZLDGF1PiIZi76bYmLA23N6LJFGvESc2vD+kuQtqZTz1byRL/iJJshM3G9hOOH3oIUli6k/8OBIna4Y0lYHXvN9on7HOZfbOu4cZP4HAHpWlZdz4ym3M8PN67tJ6Snf3RGDrvjYW8PECpZZOrl7jepjO3mcOedY= ;{id = 33655} +08D181D0B0D0B9D18200002E0001000151800093002F08010001518052F4220052EAD97083770051FEDC7119774952012EC63D6AE5E07D032822C0576BC8F93BE299597E8FE3DB89DD1A4788B1C70AF804CD3AE3E9CE102C570DC0C3D2809C5DB26420C47CC3A89E71F164C6B5DFD5AED5BC26A0DCA62DEACFE16EDEF870FE7C48EA2B9E431DF64A014E6A776EF977F062157E7E3339527031FA704D25EFE35D9F9702172D3231 +\209\129\208\176\208\185\209\130. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Uf7ccRl3SVIBLsY9auXgfQMoIsBXa8j5O+KZWX6P49uJ3RpHiLHHCvgEzTrj6c4QLFcNwMPSgJxdsmQgxHzDqJ5x8WTGtd/VrtW8JqDcpi3qz+Fu3vhw/nxI6iueQx32SgFOandu+XfwYhV+fjM5UnAx+nBNJe/jXZ+XAhctMjE= ;{id = 33655} +08D181D0B0D0B9D18200002F000100015180001006D181D180D0B1000006200000000013 +\209\129\208\176\208\185\209\130. 86400 IN NSEC \209\129\209\128\208\177. NS DS RRSIG NSEC +06D181D180D0B100000200010002A300000A0161036E696302727300 +\209\129\209\128\208\177. 172800 IN NS a.nic.rs. +06D181D180D0B100000200010002A300000A0166036E696302727300 +\209\129\209\128\208\177. 172800 IN NS f.nic.rs. +06D181D180D0B100000200010002A300000A0167036E696302727300 +\209\129\209\128\208\177. 172800 IN NS g.nic.rs. +06D181D180D0B100000200010002A300000A0168036E696302727300 +\209\129\209\128\208\177. 172800 IN NS h.nic.rs. +06D181D180D0B100000200010002A300000A016B036E696302727300 +\209\129\209\128\208\177. 172800 IN NS k.nic.rs. +06D181D180D0B100000200010002A300000A016C036E696302727300 +\209\129\209\128\208\177. 172800 IN NS l.nic.rs. +06D181D180D0B100002F000100015180002B21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D000006200000000003 +\209\129\209\128\208\177. 86400 IN NSEC \224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. NS RRSIG NSEC +06D181D180D0B100002E0001000151800093002F08010001518052F4220052EAD9708377008B7FF7311F189D114D83A994A3392657F0A1E994208D0A981C87A7A9271012E36D305BAD6E0B9C5BD20DB79D5542744872BF58D0B02B2C6FF051C1204276799ED09556B72EA8E82058ED04FC6A47A670282278561C8C1366FE440574F74037D92F92C92DB384757221A137A4FA2E9A5B79BB187C09837F918F8D9C198C552DCD +\209\129\209\128\208\177. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . i3/3MR8YnRFNg6mUozkmV/Ch6ZQgjQqYHIenqScQEuNtMFutbgucW9INt51VQnRIcr9Y0LArLG/wUcEgQnZ5ntCVVrcuqOggWO0E/GpHpnAoInhWHIwTZv5EBXT3QDfZL5LJLbOEdXIhoTek+i6aW3m7GHwJg3+Rj42cGYxVLc0= ;{id = 33655} +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00000200010002A3000011036E7332046375686B0365647502686B00 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 172800 IN NS ns2.cuhk.edu.hk. +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00000200010002A300001004736563330561706E6963036E657400 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 172800 IN NS sec3.apnic.net. +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00000200010002A3000010056473616E790573676E696302736700 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 172800 IN NS dsany.sgnic.sg. +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00000200010002A30000170573672D6E7307616E796361737403706368036E657400 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 172800 IN NS sg-ns.anycast.pch.net. +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00002F000100015180001309E4B8ADE69687E7BD91000006200000000003 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 86400 IN NSEC \228\184\173\230\150\135\231\189\145. NS RRSIG NSEC +21E0AE9AE0AEBFE0AE99E0AF8DE0AE95E0AEAAE0AF8DE0AEAAE0AF82E0AEB0E0AF8D00002E0001000151800093002F08010001518052F4220052EAD9708377006EFB4A92C7619FF2451130E26A59CFEB3C62E2CF00A0EAD5A6DACAB92338786B6E4F5E41EC80E239D9EF6ACEC9CC49DA57BBEDAB99032AEDE369C316F9BB73CC21ED910267234009C060DD385E5AF9815DABDC451EF749F4B15B478D43A60D63343B3D9C279840E6DCD79E67E850BB0ADDD7D23E9E76F223E7C6458162005B08 +\224\174\154\224\174\191\224\174\153\224\175\141\224\174\149\224\174\170\224\175\141\224\174\170\224\175\130\224\174\176\224\175\141. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . bvtKksdhn/JFETDialnP6zxi4s8AoOrVptrKuSM4eGtuT15B7IDiOdnvas7JzEnaV7vtq5kDKu3jacMW+btzzCHtkQJnI0AJwGDdOF5a+YFdq9xFHvdJ9LFbR41Dpg1jNDs9nCeYQObc155n6FC7Ct3X0j6edvIj58ZFgWIAWwg= ;{id = 33655} +09E4B8ADE69687E7BD9100000200010002A3000012026130036E696309E4B8ADE69687E7BD9100 +\228\184\173\230\150\135\231\189\145. 172800 IN NS a0.nic.\228\184\173\230\150\135\231\189\145. +09E4B8ADE69687E7BD9100000200010002A3000012026132036E696309E4B8ADE69687E7BD9100 +\228\184\173\230\150\135\231\189\145. 172800 IN NS a2.nic.\228\184\173\230\150\135\231\189\145. +09E4B8ADE69687E7BD9100000200010002A3000012026230036E696309E4B8ADE69687E7BD9100 +\228\184\173\230\150\135\231\189\145. 172800 IN NS b0.nic.\228\184\173\230\150\135\231\189\145. +09E4B8ADE69687E7BD9100000200010002A3000012026330036E696309E4B8ADE69687E7BD9100 +\228\184\173\230\150\135\231\189\145. 172800 IN NS c0.nic.\228\184\173\230\150\135\231\189\145. +09E4B8ADE69687E7BD9100002B00010001518000189A2307018CBCB513FF4387B8F6A006D414A50E1A5EA178CA +\228\184\173\230\150\135\231\189\145. 86400 IN DS 39459 7 1 8CBCB513FF4387B8F6A006D414A50E1A5EA178CA +09E4B8ADE69687E7BD9100002B00010001518000249A2307020CB316717E555D102A2E96D53D32EB0AB0AC73F10D3E66E2D225398C6A30B816 +\228\184\173\230\150\135\231\189\145. 86400 IN DS 39459 7 2 0CB316717E555D102A2E96D53D32EB0AB0AC73F10D3E66E2D225398C6A30B816 +09E4B8ADE69687E7BD9100002E0001000151800093002B08010001518052F4220052EAD9708377007F7A6A99BBF8D9908132B1263AFDBDF5201D82C719742B9D81FE4762614107BD1A2C99C92355C32B46C9B41975F58125CA8FBE0E5D1A7386223A8C765F03AC223BB461F9ED7C86AD59CE3C809BBD197AF0A64E6A336C2A8303141184AB7925DBCAEE104A6A161D4E27E9ADB9D59A96206C402B1777FA4073C1F8EEC3547395FC +\228\184\173\230\150\135\231\189\145. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . f3pqmbv42ZCBMrEmOv299SAdgscZdCudgf5HYmFBB70aLJnJI1XDK0bJtBl19YElyo++Dl0ac4YiOox2XwOsIju0YfntfIatWc48gJu9GXrwpk5qM2wqgwMUEYSreSXbyu4QSmoWHU4n6a251ZqWIGxAKxd3+kBzwfjuw1Rzlfw= ;{id = 33655} +09E4B8ADE69687E7BD9100002E0001000151800093002F08010001518052F4220052EAD970837700541AA4357A976D22466449B754B6C0ED9DD19D3A317201BDF7CF77A02607ED152226B57110E7477485282825AA4863250AB1C511171405E7091C952AD33BB4804D52771CFBD46D964E02BE4E3E647049F6256F8E6A534FFAB50968D84EB22397DBE467DD98722FBA5A0BF95D1AC49C188A26F226E52CAD7986C1828C3DE4A3F4 +\228\184\173\230\150\135\231\189\145. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VBqkNXqXbSJGZEm3VLbA7Z3RnToxcgG99893oCYH7RUiJrVxEOdHdIUoKCWqSGMlCrHFERcUBecJHJUq0zu0gE1Sdxz71G2WTgK+Tj5kcEn2JW+OalNP+rUJaNhOsiOX2+Rn3ZhyL7paC/ldGsScGIom8iblLK15hsGCjD3ko/Q= ;{id = 33655} +09E4B8ADE69687E7BD9100002F000100015180001006E4B8ADE4BFA1000006200000000013 +\228\184\173\230\150\135\231\189\145. 86400 IN NSEC \228\184\173\228\191\161. NS DS RRSIG NSEC +026130036E696309E4B8ADE69687E7BD9100000100010002A30000044116BC01 +a0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN A 65.22.188.1 +026130036E696309E4B8ADE69687E7BD9100001C00010002A30000102A01884000B600000000000000000001 +a0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN AAAA 2a01:8840:b6::1 +026132036E696309E4B8ADE69687E7BD9100000100010002A30000044116BF01 +a2.nic.\228\184\173\230\150\135\231\189\145. 172800 IN A 65.22.191.1 +026132036E696309E4B8ADE69687E7BD9100001C00010002A30000102A01884000B900000000000000000001 +a2.nic.\228\184\173\230\150\135\231\189\145. 172800 IN AAAA 2a01:8840:b9::1 +026230036E696309E4B8ADE69687E7BD9100000100010002A30000044116BD01 +b0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN A 65.22.189.1 +026230036E696309E4B8ADE69687E7BD9100001C00010002A30000102A01884000B700000000000000000001 +b0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN AAAA 2a01:8840:b7::1 +026330036E696309E4B8ADE69687E7BD9100000100010002A30000044116BE01 +c0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN A 65.22.190.1 +026330036E696309E4B8ADE69687E7BD9100001C00010002A30000102A01884000B800000000000000000001 +c0.nic.\228\184\173\230\150\135\231\189\145. 172800 IN AAAA 2a01:8840:b8::1 +06E4B8ADE4BFA100000200010002A30000110161097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS a.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110162097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS b.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110163097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS c.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110164097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS d.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110165097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS e.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110166097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS f.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110167097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS g.zdnscloud.com. +06E4B8ADE4BFA100000200010002A30000110169097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS i.zdnscloud.com. +06E4B8ADE4BFA100000200010002A3000011016A097A646E73636C6F756403636F6D00 +\228\184\173\228\191\161. 172800 IN NS j.zdnscloud.com. +06E4B8ADE4BFA100002B0001000151800024C36B0802BABDE7E86DF1408E3AFB68043296A68DDC12ABBA6BFA341C7D06C764E042BEE6 +\228\184\173\228\191\161. 86400 IN DS 50027 8 2 BABDE7E86DF1408E3AFB68043296A68DDC12ABBA6BFA341C7D06C764E042BEE6 +06E4B8ADE4BFA100002E0001000151800093002B08010001518052F4220052EAD97083770049F90F82264D2BA847FB6B768E7B44D1C780A5F18D649F29A3B3BDE31F075833D909C4BBDEBFF5DF25450A1CF7C558BBBD9EA9C1D2255310AF23FB7123FA8FBBF61DA611B7864E5746312801CA3EE90CC481053EB585077156F9A2F8E6AC5E318F35A218D3770746D6D26EAAA3997A40C28811C56C9C48E5B6B135C58B507047 +\228\184\173\228\191\161. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . SfkPgiZNK6hH+2t2jntE0ceApfGNZJ8po7O94x8HWDPZCcS73r/13yVFChz3xVi7vZ6pwdIlUxCvI/txI/qPu/YdphG3hk5XRjEoAco+6QzEgQU+tYUHcVb5ovjmrF4xjzWiGNN3B0bW0m6qo5l6QMKIEcVsnEjltrE1xYtQcEc= ;{id = 33655} +06E4B8ADE4BFA100002E0001000151800093002F08010001518052F4220052EAD970837700873192C82EF4C748719A5E30B1B4E5F50576D0414617D94E9668710B93F3D7B90C8568E2B66157A3FE457191FE3E4866914894101B4C407AF3EF8554B081C1D15C7D0CA1C05011004307037F9E32CB85773F5D4A28B52C413660C1191E3965EED931F59727261B5956F9DA95BABE72382C3B0603D875CCDCDCB8A182E4095B0B +\228\184\173\228\191\161. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . hzGSyC70x0hxml4wsbTl9QV20EFGF9lOlmhxC5Pz17kMhWjitmFXo/5FcZH+PkhmkUiUEBtMQHrz74VUsIHB0Vx9DKHAUBEAQwcDf54yy4V3P11KKLUsQTZgwRkeOWXu2TH1lycmG1lW+dqVur5yOCw7BgPYdczc3LihguQJWws= ;{id = 33655} +06E4B8ADE4BFA100002F000100015180001006E4B8ADE59BBD000006200000000013 +\228\184\173\228\191\161. 86400 IN NSEC \228\184\173\229\155\189. NS DS RRSIG NSEC +06E4B8ADE59BBD00000200010002A300000A016803646E7302636E00 +\228\184\173\229\155\189. 172800 IN NS h.dns.cn. +06E4B8ADE59BBD00000200010002A300000A016903646E7302636E00 +\228\184\173\229\155\189. 172800 IN NS i.dns.cn. +06E4B8ADE59BBD00000200010002A300000A016A03646E7302636E00 +\228\184\173\229\155\189. 172800 IN NS j.dns.cn. +06E4B8ADE59BBD00000200010002A300000A016B03646E7302636E00 +\228\184\173\229\155\189. 172800 IN NS k.dns.cn. +06E4B8ADE59BBD00000200010002A300000A016C03646E7302636E00 +\228\184\173\229\155\189. 172800 IN NS l.dns.cn. +06E4B8ADE59BBD00002B0001000151800024802C0802F190213A4E48C2832B144487130AAB1B782F9B7AF978056C1BA4FB46302A1B4A +\228\184\173\229\155\189. 86400 IN DS 32812 8 2 F190213A4E48C2832B144487130AAB1B782F9B7AF978056C1BA4FB46302A1B4A +06E4B8ADE59BBD00002E0001000151800093002B08010001518052F4220052EAD97083770089DFC4B64DE9F3629A72CCBE5225632B21FA4BE827E979D8FB2625D5268FF33C8C596266758810A680FAADD723E207C534BC5BDC831282F6D764A7F749171BEB180D5CF9BB55EA06C22E1391F0411E72394E0E4C8F512A38D8DA0447D42D8DB51DB1D58FA68A879C837FB47CB56C5A39863ACB89A2CBB948B797E28CED5662DC +\228\184\173\229\155\189. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . id/Etk3p82Kacsy+UiVjKyH6S+gn6XnY+yYl1SaP8zyMWWJmdYgQpoD6rdcj4gfFNLxb3IMSgvbXZKf3SRcb6xgNXPm7VeoGwi4TkfBBHnI5Tg5Mj1EqONjaBEfULY21HbHVj6aKh5yDf7R8tWxaOYY6y4miy7lIt5fijO1WYtw= ;{id = 33655} +06E4B8ADE59BBD00002E0001000151800093002F08010001518052F4220052EAD9708377001F5B2BA0BC122527BB83F75B9D23A50BFF3924200BCB4C73121C44BA0A5C09B0FF36A0CBF22C292064854E93AA72C0222A9BB7A2F249BF31C9CAC8A1FADA231C5DFCBC038DFC17B4727EA24C315E912DAE2DC6B55DC01F0ACD0C901E266C30861C36BFD9D68E21BF16A66B9CB11730920D1B0527596733065CEA375CF19C166F +\228\184\173\229\155\189. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . H1sroLwSJSe7g/dbnSOlC/85JCALy0xzEhxEugpcCbD/NqDL8iwpIGSFTpOqcsAiKpu3ovJJvzHJysih+tojHF38vAON/Be0cn6iTDFekS2uLca1XcAfCs0MkB4mbDCGHDa/2daOIb8WpmucsRcwkg0bBSdZZzMGXOo3XPGcFm8= ;{id = 33655} +06E4B8ADE59BBD00002F000100015180001006E4B8ADE59C8B000006200000000013 +\228\184\173\229\155\189. 86400 IN NSEC \228\184\173\229\156\139. NS DS RRSIG NSEC +06E4B8ADE59C8B00000200010002A300000A016803646E7302636E00 +\228\184\173\229\156\139. 172800 IN NS h.dns.cn. +06E4B8ADE59C8B00000200010002A300000A016903646E7302636E00 +\228\184\173\229\156\139. 172800 IN NS i.dns.cn. +06E4B8ADE59C8B00000200010002A300000A016A03646E7302636E00 +\228\184\173\229\156\139. 172800 IN NS j.dns.cn. +06E4B8ADE59C8B00000200010002A300000A016B03646E7302636E00 +\228\184\173\229\156\139. 172800 IN NS k.dns.cn. +06E4B8ADE59C8B00000200010002A300000A016C03646E7302636E00 +\228\184\173\229\156\139. 172800 IN NS l.dns.cn. +06E4B8ADE59C8B00002B0001000151800024802C0802BBC7202788555EE77A96BDB7F0B1C91FCA9AFA2982B7AD150F192920103B932E +\228\184\173\229\156\139. 86400 IN DS 32812 8 2 BBC7202788555EE77A96BDB7F0B1C91FCA9AFA2982B7AD150F192920103B932E +06E4B8ADE59C8B00002E0001000151800093002B08010001518052F4220052EAD97083770083B75D9E36CA56F532E996AC7881D6A3BB1F22DA29E087C2727B3B53F80F5DFEC7153216FA971F5E4A5AD2987BDDF8096B292A10D106AF831E9F8E49CEF5B3D308BD4681772F5A0A5B99F822D6A82361D1F9F60FAEFEA669362AD18B3B87F4EE3965685F7936D82A04ECF5DA2A3ABEE8D2D367FEE4C19A8B99169DB144BE182D +\228\184\173\229\156\139. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . g7ddnjbKVvUy6ZaseIHWo7sfItop4IfCcns7U/gPXf7HFTIW+pcfXkpa0ph73fgJaykqENEGr4Men45JzvWz0wi9RoF3L1oKW5n4ItaoI2HR+fYPrv6maTYq0Ys7h/TuOWVoX3k22CoE7PXaKjq+6NLTZ/7kwZqLmRadsUS+GC0= ;{id = 33655} +06E4B8ADE59C8B00002E0001000151800093002F08010001518052F4220052EAD970837700360E15F16EC06EBE0155E4652618A10C8EB945C3DC3E046E00E15807E76ADEBDC4E86596D9CC37D2C2EDFB0DFBDA09617FD9DE547EE446AF034B0FF2021FE0CA815E9CA0509D6F33F585B2628FF377C2508247A058B4E88B47BCF95FCE972F6FA367CB22759A3733FEBFFC66EB8E3FF76F4AA23948BA66129807063970E91EE7 +\228\184\173\229\156\139. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Ng4V8W7Abr4BVeRlJhihDI65RcPcPgRuAOFYB+dq3r3E6GWW2cw30sLt+w372glhf9neVH7kRq8DSw/yAh/gyoFenKBQnW8z9YWyYo/zd8JQgkegWLToi0e8+V/Oly9vo2fLInWaNzP+v/xm644/929KojlIumYSmAcGOXDpHuc= ;{id = 33655} +06E4B8ADE59C8B00002F00010001518000190FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D000006200000000013 +\228\184\173\229\156\139. 86400 IN NSEC \224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. NS DS RRSIG NSEC +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS a0.cctld.afilias-nst.info. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS a1.in.afilias-nst.in. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS a2.in.afilias-nst.info. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS b0.cctld.afilias-nst.org. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS b1.in.afilias-nst.in. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS b2.in.afilias-nst.org. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS c0.cctld.afilias-nst.info. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 172800 IN NS d0.cctld.afilias-nst.org. +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00002F00010001518000160CE0B6BDE0B682E0B69AE0B78F000006200000000003 +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 86400 IN NSEC \224\182\189\224\182\130\224\182\154\224\183\143. NS RRSIG NSEC +0FE0B0ADE0B0BEE0B0B0E0B0A4E0B18D00002E0001000151800093002F08010001518052F4220052EAD970837700A83180DFAEA393F9633790048219DB052579216BB0C7B2AA284B8B626A084BF2D9A1711B21C07AB489519BEDAFA61D4EEAF3E218CCEF172C242BBA81B75B6C53CDB0D53CA65C817768A3F8933B6A5F4DB89AEF7494658FA0473A1DEB9BACD75DA4C364B98EE38DED81DC71205A3D9A30FC49B13D78E6249372D8C3A02A98EF7A +\224\176\173\224\176\190\224\176\176\224\176\164\224\177\141. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qDGA366jk/ljN5AEghnbBSV5IWuwx7KqKEuLYmoIS/LZoXEbIcB6tIlRm+2vph1O6vPiGMzvFywkK7qBt1tsU82w1TymXIF3aKP4kztqX024mu90lGWPoEc6HeubrNddpMNkuY7jje2B3HEgWj2aMPxJsT145iSTctjDoCqY73o= ;{id = 33655} +0CE0B6BDE0B682E0B69AE0B78F00000200010002A3000015026C6B0C636F6D6D756E697479646E73036E657400 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS lk.communitydns.net. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A3000018036E69630A6C6B2D616E796361737403706368036E657400 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS nic.lk-anycast.pch.net. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000B036E7331026163026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns1.ac.lk. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000B036E7333026163026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns3.ac.lk. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000D046E732D63036E6963026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns-c.nic.lk. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000D046E732D64036E6963026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns-d.nic.lk. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000D046E732D6C036E6963026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns-l.nic.lk. +0CE0B6BDE0B682E0B69AE0B78F00000200010002A300000D046E732D74036E6963026C6B00 +\224\182\189\224\182\130\224\182\154\224\183\143. 172800 IN NS ns-t.nic.lk. +0CE0B6BDE0B682E0B69AE0B78F00002F00010001518000160CE0AAADE0AABEE0AAB0E0AAA4000006200000000003 +\224\182\189\224\182\130\224\182\154\224\183\143. 86400 IN NSEC \224\170\173\224\170\190\224\170\176\224\170\164. NS RRSIG NSEC +0CE0B6BDE0B682E0B69AE0B78F00002E0001000151800093002F08010001518052F4220052EAD970837700AEC9459EFA8C2ECDFD11AAA8233CD99EE37E5BB1AB57DBE0A0F9031FE6F0D1DCE4AD08C4CB2DC6722A14D8C264E0D8FAACF77EB946CC1ED3164D8FE425EACFF93C97C09CA224B97F62FCBC81C89ECDAA8CBC162205B88DFFE818A17467D378CC4EE4F3F6B740FDD266580013D8722D7CC6C58C3FD7DE31305D162510C20A24B1 +\224\182\189\224\182\130\224\182\154\224\183\143. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . rslFnvqMLs39EaqoIzzZnuN+W7GrV9vgoPkDH+bw0dzkrQjEyy3GcioU2MJk4Nj6rPd+uUbMHtMWTY/kJerP+TyXwJyiJLl/Yvy8gciezaqMvBYiBbiN/+gYoXRn03jMTuTz9rdA/dJmWAAT2HItfMbFjD/X3jEwXRYlEMIKJLE= ;{id = 33655} +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS a0.cctld.afilias-nst.info. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS a1.in.afilias-nst.in. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS a2.in.afilias-nst.info. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS b0.cctld.afilias-nst.org. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS b1.in.afilias-nst.in. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS b2.in.afilias-nst.org. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS c0.cctld.afilias-nst.info. +0CE0AAADE0AABEE0AAB0E0AAA400000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\170\173\224\170\190\224\170\176\224\170\164. 172800 IN NS d0.cctld.afilias-nst.org. +0CE0AAADE0AABEE0AAB0E0AAA400002F00010001518000160CE0A4ADE0A4BEE0A4B0E0A4A4000006200000000003 +\224\170\173\224\170\190\224\170\176\224\170\164. 86400 IN NSEC \224\164\173\224\164\190\224\164\176\224\164\164. NS RRSIG NSEC +0CE0AAADE0AABEE0AAB0E0AAA400002E0001000151800093002F08010001518052F4220052EAD9708377000663F28265865DBB556BBD72588C02037294C9CC4F86F33F3980C0F86D6AD222FA858229230623398249DB1FE82A4043DC3459C5F1E29A9543CFB726D29B61B7D6B95BE1219AFE88E4D58A1EB70B6E144951EAE017FFE5E3E15B190D4410E1F949FB8AAF4542E999BD3FF407C77D9527A290A56187E4E2D4807D5C032EE329FD +\224\170\173\224\170\190\224\170\176\224\170\164. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . BmPygmWGXbtVa71yWIwCA3KUycxPhvM/OYDA+G1q0iL6hYIpIwYjOYJJ2x/oKkBD3DRZxfHimpVDz7cm0ptht9a5W+Ehmv6I5NWKHrcLbhRJUergF//l4+FbGQ1EEOH5SfuKr0VC6Zm9P/QHx32VJ6KQpWGH5OLUgH1cAy7jKf0= ;{id = 33655} +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS a0.cctld.afilias-nst.info. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS a1.in.afilias-nst.in. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS a2.in.afilias-nst.info. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS b0.cctld.afilias-nst.org. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS b1.in.afilias-nst.in. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS b2.in.afilias-nst.org. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS c0.cctld.afilias-nst.info. +0CE0A4ADE0A4BEE0A4B0E0A4A400000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\164\173\224\164\190\224\164\176\224\164\164. 172800 IN NS d0.cctld.afilias-nst.org. +0CE0A4ADE0A4BEE0A4B0E0A4A400002B00010001518000184662070195E310B21C23FC8C6107A186D68C5FAEECA15A9F +\224\164\173\224\164\190\224\164\176\224\164\164. 86400 IN DS 18018 7 1 95E310B21C23FC8C6107A186D68C5FAEECA15A9F +0CE0A4ADE0A4BEE0A4B0E0A4A400002B000100015180002446620702582ACB8BCAACC3A0AF31597260B8C8650555AC94DEA17C12110AEA90374559D4 +\224\164\173\224\164\190\224\164\176\224\164\164. 86400 IN DS 18018 7 2 582ACB8BCAACC3A0AF31597260B8C8650555AC94DEA17C12110AEA90374559D4 +0CE0A4ADE0A4BEE0A4B0E0A4A400002E0001000151800093002B08010001518052F4220052EAD9708377004D1E6AAA5F2716F76701C08C129F69A265BDB81DA21B3EFB06EF995A4082A9C5D7E4B4EE73554C13893CB5DA82D637B818FAA34A623B6DF78F2F4B0E6A3113EB4035F37FAB1B8B28AFD5EE21CAE86758BBA5D94AF0E12977574979FB3F0A3FC09097381409AE8A2A87117CEB6D2C575AF466B2FB8502A5136CE7B1ADB57030C8 +\224\164\173\224\164\190\224\164\176\224\164\164. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . TR5qql8nFvdnAcCMEp9pomW9uB2iGz77Bu+ZWkCCqcXX5LTuc1VME4k8tdqC1je4GPqjSmI7bfePL0sOajET60A183+rG4sor9XuIcroZ1i7pdlK8OEpd1dJefs/Cj/AkJc4FAmuiiqHEXzrbSxXWvRmsvuFAqUTbOexrbVwMMg= ;{id = 33655} +0CE0A4ADE0A4BEE0A4B0E0A4A400002E0001000151800093002F08010001518052F4220052EAD9708377006375DB68C005E1B697B6CBD47763988A1DEC32F6C87CD046C523518BB4D2D5C70A3E5D36230DB0AF89F730901B1E32DEA1572F2A6BEB3D9D8EC66A66904E6097A8EBD87703C7AD3AB92C1B2A465B7A58158098E3148E368E906C6AC6FCB97ED41D9B11BC2AC9FA3A3097CDE99010746EFE8D7DCD93DFAE42B9C3FF16BA137AFD +\224\164\173\224\164\190\224\164\176\224\164\164. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y3XbaMAF4baXtsvUd2OYih3sMvbIfNBGxSNRi7TS1ccKPl02Iw2wr4n3MJAbHjLeoVcvKmvrPZ2OxmpmkE5gl6jr2HcDx606uSwbKkZbelgVgJjjFI42jpBsasb8uX7UHZsRvCrJ+jowl83pkBB0bv6Nfc2T365CucP/FroTev0= ;{id = 33655} +0CE0A4ADE0A4BEE0A4B0E0A4A400002F000100015180001006E7BD91E7BB9C000006200000000013 +\224\164\173\224\164\190\224\164\176\224\164\164. 86400 IN NSEC \231\189\145\231\187\156. NS DS RRSIG NSEC +06E7BD91E7BB9C00000200010002A300000C0161056E67746C6402636E00 +\231\189\145\231\187\156. 172800 IN NS a.ngtld.cn. +06E7BD91E7BB9C00000200010002A300000C0162056E67746C6402636E00 +\231\189\145\231\187\156. 172800 IN NS b.ngtld.cn. +06E7BD91E7BB9C00000200010002A300000C0163056E67746C6402636E00 +\231\189\145\231\187\156. 172800 IN NS c.ngtld.cn. +06E7BD91E7BB9C00000200010002A300000C0164056E67746C6402636E00 +\231\189\145\231\187\156. 172800 IN NS d.ngtld.cn. +06E7BD91E7BB9C00000200010002A300000C0165056E67746C6402636E00 +\231\189\145\231\187\156. 172800 IN NS e.ngtld.cn. +06E7BD91E7BB9C00002B0001000151800024B8FF0802426DB7D3FB8E6058BE42D379ECD7742B2EFAB5DD0A7A95494D3518604B715B1E +\231\189\145\231\187\156. 86400 IN DS 47359 8 2 426DB7D3FB8E6058BE42D379ECD7742B2EFAB5DD0A7A95494D3518604B715B1E +06E7BD91E7BB9C00002E0001000151800093002B08010001518052F4220052EAD9708377007AFA8B4B642C117CB728E99207F8BF3CADD1E440079521AE5C6C583553F4BA1246F4194A92B48E6536A6ED79C8E1A4CF1ABD8D7A45A516EA9C50E58F6E7B2AA0974DBB5AA314CDA0FD709FCD9CEFC1BE4F9944BFC6C8A1C32A6D01A98516776201FCD14C1BF6A56493A69E5FE41C7BCEF012CC00D14F52F0BF1E924D44A8DF44 +\231\189\145\231\187\156. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . evqLS2QsEXy3KOmSB/i/PK3R5EAHlSGuXGxYNVP0uhJG9BlKkrSOZTam7XnI4aTPGr2NekWlFuqcUOWPbnsqoJdNu1qjFM2g/XCfzZzvwb5PmUS/xsihwyptAamFFndiAfzRTBv2pWSTpp5f5Bx7zvASzADRT1Lwvx6STUSo30Q= ;{id = 33655} +06E7BD91E7BB9C00002E0001000151800093002F08010001518052F4220052EAD970837700B95C5B7E7C79EC04700BB7BCFD66C95A1A715BE8245C556E16F279416A374D4BC753394E57211A8080E40A2D0D1C92D09618F12B0CF48B4389C388F3F426FD1D87865B077EF1C55CA61AC0D4D539FD2B52E0790F6E4F50EB019BFD2D531A0B436AC35FC6865391D750B684F02290906C1742A31883A3E87493A9E3E31D52982C +\231\189\145\231\187\156. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uVxbfnx57ARwC7e8/WbJWhpxW+gkXFVuFvJ5QWo3TUvHUzlOVyEagIDkCi0NHJLQlhjxKwz0i0OJw4jz9Cb9HYeGWwd+8cVcphrA1NU5/StS4HkPbk9Q6wGb/S1TGgtDasNfxoZTkddQtoTwIpCQbBdCoxiDo+h0k6nj4x1SmCw= ;{id = 33655} +06E7BD91E7BB9C00002F000100015180001006D183D0BAD180000006200000000013 +\231\189\145\231\187\156. 86400 IN NSEC \209\131\208\186\209\128. NS DS RRSIG NSEC +06D183D0BAD18000000200010002A300000F036E73690575616E6963036E657400 +\209\131\208\186\209\128. 172800 IN NS nsi.uanic.net. +06D183D0BAD18000000200010002A300001504646E73310A752D726567697374727903636F6D00 +\209\131\208\186\209\128. 172800 IN NS dns1.u-registry.com. +06D183D0BAD18000000200010002A300001504646E73320A752D7265676973747279036E657400 +\209\131\208\186\209\128. 172800 IN NS dns2.u-registry.net. +06D183D0BAD18000000200010002A300001104646E733306646F74756B7203636F6D00 +\209\131\208\186\209\128. 172800 IN NS dns3.dotukr.com. +06D183D0BAD18000000200010002A3000012057469657231036E756D036E657402756100 +\209\131\208\186\209\128. 172800 IN NS tier1.num.net.ua. +06D183D0BAD18000002F000100015180001006E9A699E6B8AF000006200000000003 +\209\131\208\186\209\128. 86400 IN NSEC \233\166\153\230\184\175. NS RRSIG NSEC +06D183D0BAD18000002E0001000151800093002F08010001518052F4220052EAD9708377007E22FBD53A245759CA7BDDFC22CAC3E61216B961C368C3A676C76C68C12CB39B3905EE04D0F85C9CC47BE80870091BFFC7C7D6B70C0113FE696741D110FE466CFF5F85D46EF514EC3219274D14C0FD90B6C6FB50023401C32E40B2105BEF793AE81E51D968DF375B7297E47BEB0FAC2E3F45CA5A6281BB2C01BFDF1AC01FF964 +\209\131\208\186\209\128. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fiL71TokV1nKe938IsrD5hIWuWHDaMOmdsdsaMEss5s5Be4E0PhcnMR76AhwCRv/x8fWtwwBE/5pZ0HREP5GbP9fhdRu9RTsMhknTRTA/ZC2xvtQAjQBwy5AshBb73k66B5R2WjfN1tyl+R76w+sLj9FylpigbssAb/fGsAf+WQ= ;{id = 33655} +06E9A699E6B8AF00000200010002A3000010016105686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS a.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010016205686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS b.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017305686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS s.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017405686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS t.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017505686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS u.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017605686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS v.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017705686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS w.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017805686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS x.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017905686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS y.hkirc.net.hk. +06E9A699E6B8AF00000200010002A3000010017A05686B697263036E657402686B00 +\233\166\153\230\184\175. 172800 IN NS z.hkirc.net.hk. +06E9A699E6B8AF00002F000100015180001006E58FB0E6B9BE000006200000000003 +\233\166\153\230\184\175. 86400 IN NSEC \229\143\176\230\185\190. NS RRSIG NSEC +06E9A699E6B8AF00002E0001000151800093002F08010001518052F4220052EAD9708377004BE14BC6A2706084DFA97FD6DC4CCB351C7810C79516C3E084FA9273120E2E279D0460D307558B88483C199072889FE806B5B7959DA8BEECCD3808BB44BBCC3F07A40AC9418B12BCEA74F47C89B498E9FB9AC2FB30CC429DCE87FEC233C733937580A1952825F858F1639FF7C466124F9ECA6ED87B11D67391723DAB13529E95 +\233\166\153\230\184\175. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . S+FLxqJwYITfqX/W3EzLNRx4EMeVFsPghPqScxIOLiedBGDTB1WLiEg8GZByiJ/oBrW3lZ2ovuzNOAi7RLvMPwekCslBixK86nT0fIm0mOn7msL7MMxCnc6H/sIzxzOTdYChlSgl+FjxY5/3xGYST57Kbth7EdZzkXI9qxNSnpU= ;{id = 33655} +06E58FB0E6B9BE00000200010002A300000A016403646E7302747700 +\229\143\176\230\185\190. 172800 IN NS d.dns.tw. +06E58FB0E6B9BE00000200010002A300000A016503646E7302747700 +\229\143\176\230\185\190. 172800 IN NS e.dns.tw. +06E58FB0E6B9BE00000200010002A300000A016603646E7302747700 +\229\143\176\230\185\190. 172800 IN NS f.dns.tw. +06E58FB0E6B9BE00000200010002A300000A016703646E7302747700 +\229\143\176\230\185\190. 172800 IN NS g.dns.tw. +06E58FB0E6B9BE00000200010002A300000A016803646E7302747700 +\229\143\176\230\185\190. 172800 IN NS h.dns.tw. +06E58FB0E6B9BE00000200010002A300001004736563340561706E6963036E657400 +\229\143\176\230\185\190. 172800 IN NS sec4.apnic.net. +06E58FB0E6B9BE00002B00010001518000242590080280D599F98E6304BD800DCA9EE0F73EB319414430413A2DFF5C010754D137F1BD +\229\143\176\230\185\190. 86400 IN DS 9616 8 2 80D599F98E6304BD800DCA9EE0F73EB319414430413A2DFF5C010754D137F1BD +06E58FB0E6B9BE00002E0001000151800093002B08010001518052F4220052EAD9708377002B4D466233013A4FD9457A7CBE8F3BB7ADEF0F362139D2BF6C5C98CCAD73708104D5983DA4629A05A78C5290C6810D5167C78D75F2386B3100E9A4077819DEAF1100F9D3CD3C41DA5A76FD4BDE5DF24CCABF34BDEC7252181502F1BD18496A83FEC5A9EFE8EA7B5B9112551910ACC1B75793D1B4A9B110CCBE0107ADEDA8F8C2 +\229\143\176\230\185\190. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . K01GYjMBOk/ZRXp8vo87t63vDzYhOdK/bFyYzK1zcIEE1Zg9pGKaBaeMUpDGgQ1RZ8eNdfI4azEA6aQHeBnerxEA+dPNPEHaWnb9S95d8kzKvzS97HJSGBUC8b0YSWqD/sWp7+jqe1uRElUZEKzBt1eT0bSpsRDMvgEHre2o+MI= ;{id = 33655} +06E58FB0E6B9BE00002E0001000151800093002F08010001518052F4220052EAD970837700600877E6598686CF64D34333FB1AEC3C575410AA10A42840F24C88E3293F5A8FD1F7388B4A256304C100021CCA9B15B6795B0D12BEF0606F6775EC0C095720AF11592E06272FD53F7E77878645530EDECCA07E5E67DC95061ACF1F46B994295BA863D3174107B8DB6D9BCC8B731176875C660B59DB5F2C5CB95F5C3E4758F153 +\229\143\176\230\185\190. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . YAh35lmGhs9k00Mz+xrsPFdUEKoQpChA8kyI4yk/Wo/R9ziLSiVjBMEAAhzKmxW2eVsNEr7wYG9ndewMCVcgrxFZLgYnL9U/fneHhkVTDt7MoH5eZ9yVBhrPH0a5lClbqGPTF0EHuNttm8yLcxF2h1xmC1nbXyxcuV9cPkdY8VM= ;{id = 33655} +06E58FB0E6B9BE00002F000100015180001006E58FB0E781A3000006200000000013 +\229\143\176\230\185\190. 86400 IN NSEC \229\143\176\231\129\163. NS DS RRSIG NSEC +06E58FB0E781A300000200010002A300000A016403646E7302747700 +\229\143\176\231\129\163. 172800 IN NS d.dns.tw. +06E58FB0E781A300000200010002A300000A016503646E7302747700 +\229\143\176\231\129\163. 172800 IN NS e.dns.tw. +06E58FB0E781A300000200010002A300000A016603646E7302747700 +\229\143\176\231\129\163. 172800 IN NS f.dns.tw. +06E58FB0E781A300000200010002A300000A016703646E7302747700 +\229\143\176\231\129\163. 172800 IN NS g.dns.tw. +06E58FB0E781A300000200010002A300000A016803646E7302747700 +\229\143\176\231\129\163. 172800 IN NS h.dns.tw. +06E58FB0E781A300000200010002A300001004736563340561706E6963036E657400 +\229\143\176\231\129\163. 172800 IN NS sec4.apnic.net. +06E58FB0E781A300002B0001000151800024E19D080299EE3CDDCD2A85DB01D3A1E13D019821D30E3D4F6B49E4260B402FE7D8A3E85A +\229\143\176\231\129\163. 86400 IN DS 57757 8 2 99EE3CDDCD2A85DB01D3A1E13D019821D30E3D4F6B49E4260B402FE7D8A3E85A +06E58FB0E781A300002E0001000151800093002B08010001518052F4220052EAD970837700A573E17D5BB78330C2C78CD7681254C9BA6E8C27CAF713B6F6CFE77F5047306567D9F232155CBC8A9E146FBBA3F76059A39CA832AE78EBCD10B2AEC0838FC8B3F50DC510343B3FCFE0BC38C1C21B55CD0470B16C644B401CB8D30449A7D94BC0FF1FA7F53544D66A9BBC8B75C5F4BF9068E71A093ED8C326A96E04A9DDBE0D38 +\229\143\176\231\129\163. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . pXPhfVu3gzDCx4zXaBJUybpujCfK9xO29s/nf1BHMGVn2fIyFVy8ip4Ub7uj92BZo5yoMq54680Qsq7Ag4/Is/UNxRA0Oz/P4Lw4wcIbVc0EcLFsZEtAHLjTBEmn2UvA/x+n9TVE1mqbvIt1xfS/kGjnGgk+2MMmqW4Eqd2+DTg= ;{id = 33655} +06E58FB0E781A300002E0001000151800093002F08010001518052F4220052EAD970837700B26311891716B40691F4D4C7E04EC66D2DB96AE8FACF538F4E7D9DA48C74EA283B0E6D2E5106CCCF6B4F83467A096B399E69027FE57DEBC6D0DD64A36AB7142CB66E3D0F5AB3155052B8987258FADEF1570F2ADF87D98B17343EF00977B209ECF8FE570F1449DF07A110E4BCACBFC4D96FC91BCC9D411FC6C0DCB4D38635E3F6 +\229\143\176\231\129\163. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . smMRiRcWtAaR9NTH4E7GbS25auj6z1OPTn2dpIx06ig7Dm0uUQbMz2tPg0Z6CWs5nmkCf+V968bQ3WSjarcULLZuPQ9asxVQUriYclj63vFXDyrfh9mLFzQ+8Al3sgns+P5XDxRJ3wehEOS8rL/E2W/JG8ydQR/GwNy004Y14/Y= ;{id = 33655} +06E58FB0E781A300002F000100015180001006D0BCD0BED0BD000006200000000013 +\229\143\176\231\129\163. 86400 IN NSEC \208\188\208\190\208\189. NS DS RRSIG NSEC +06D0BCD0BED0BD00000200010002A300000C036E73310369646E026D6E00 +\208\188\208\190\208\189. 172800 IN NS ns1.idn.mn. +06D0BCD0BED0BD00000200010002A300000C036E73320369646E026D6E00 +\208\188\208\190\208\189. 172800 IN NS ns2.idn.mn. +06D0BCD0BED0BD00000200010002A300000C036E73330369646E026D6E00 +\208\188\208\190\208\189. 172800 IN NS ns3.idn.mn. +06D0BCD0BED0BD00002B0001000151800018737E050107D52F8F36FECED48212940E021C28E40274CFC6 +\208\188\208\190\208\189. 86400 IN DS 29566 5 1 07D52F8F36FECED48212940E021C28E40274CFC6 +06D0BCD0BED0BD00002B0001000151800024737E05026029C4759FF53E279A93E13C146DC52BD7017291FDFE799C220C17B5EEE95ED6 +\208\188\208\190\208\189. 86400 IN DS 29566 5 2 6029C4759FF53E279A93E13C146DC52BD7017291FDFE799C220C17B5EEE95ED6 +06D0BCD0BED0BD00002E0001000151800093002B08010001518052F4220052EAD9708377000A32563D0031FAEAFB27AA4873EC55F61EB991C1108DF574AD0DD9525A57BD2CF0D3B27404FCFBCBDB6EDECED9E993D926B8CB70DEAB1E76750F2671BBEA68D561F132BD5C316003D1AA2C63D30D58F8FDAC4418C506C4FFE3130CED925408DEEAFF4B76F2D3524ECC30C2A58BBD0BE775E17A6DBA52CA82B8D039A4AEA24442 +\208\188\208\190\208\189. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . CjJWPQAx+ur7J6pIc+xV9h65kcEQjfV0rQ3ZUlpXvSzw07J0BPz7y9tu3s7Z6ZPZJrjLcN6rHnZ1DyZxu+po1WHxMr1cMWAD0aosY9MNWPj9rEQYxQbE/+MTDO2SVAje6v9LdvLTUk7MMMKli70L53Xhem26UsqCuNA5pK6iREI= ;{id = 33655} +06D0BCD0BED0BD00002E0001000151800093002F08010001518052F4220052EAD97083770045D4B6791C3D02E9764C61C20BC3543D6A5E454745BDFCA300E16DDC90886C80EFAE9122FF16C81EAE599D758F82B1C858E4A62EF0171E2EA0CE6B36F838A977A3E9796FD09D1B17D5AF1E6ACF279BA9DF9BDF433E893FD245163CD9583E5300755B1FFF8C941E9411C8A816DE1309FDAFA72C3337A631144776CF6D8BB89E8A +\208\188\208\190\208\189. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . RdS2eRw9Aul2TGHCC8NUPWpeRUdFvfyjAOFt3JCIbIDvrpEi/xbIHq5ZnXWPgrHIWOSmLvAXHi6gzms2+Dipd6PpeW/QnRsX1a8eas8nm6nfm99DPok/0kUWPNlYPlMAdVsf/4yUHpQRyKgW3hMJ/a+nLDM3pjEUR3bPbYu4noo= ;{id = 33655} +06D0BCD0BED0BD00002F00010001518000180ED8A7D984D8ACD8B2D8A7D8A6D8B1000006200000000013 +\208\188\208\190\208\189. 86400 IN NSEC \216\167\217\132\216\172\216\178\216\167\216\166\216\177. NS DS RRSIG NSEC +0ED8A7D984D8ACD8B2D8A7D8A6D8B100000200010002A300000D0469646E31036E696302647A00 +\216\167\217\132\216\172\216\178\216\167\216\166\216\177. 172800 IN NS idn1.nic.dz. +0ED8A7D984D8ACD8B2D8A7D8A6D8B100000200010002A300000D0469646E32036E696302647A00 +\216\167\217\132\216\172\216\178\216\167\216\166\216\177. 172800 IN NS idn2.nic.dz. +0ED8A7D984D8ACD8B2D8A7D8A6D8B100002F000100015180001208D8B9D985D8A7D986000006200000000003 +\216\167\217\132\216\172\216\178\216\167\216\166\216\177. 86400 IN NSEC \216\185\217\133\216\167\217\134. NS RRSIG NSEC +0ED8A7D984D8ACD8B2D8A7D8A6D8B100002E0001000151800093002F08010001518052F4220052EAD970837700B1C93B8A1C75B5019558F6164AC92771FC8B644744A8175A32768CE0436BD425B6BB464FD85D13B407E3ADCF07BF0C8171BD16675CEECACF7FB7EEA970625F7BE2D7CDD6517395B683A0FDA0AD583866B5A1A1EE218FD78A6B94944B172B6EBC8F9ECD43DE8F8391C09FADCF6CCA9FB1EF8C12587C14D28E46CBA037E0DA0AE2 +\216\167\217\132\216\172\216\178\216\167\216\166\216\177. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sck7ihx1tQGVWPYWSskncfyLZEdEqBdaMnaM4ENr1CW2u0ZP2F0TtAfjrc8HvwyBcb0WZ1zuys9/t+6pcGJfe+LXzdZRc5W2g6D9oK1YOGa1oaHuIY/XimuUlEsXK268j57NQ96Pg5HAn63PbMqfse+MElh8FNKORsugN+DaCuI= ;{id = 33655} +08D8B9D985D8A7D98600000200010002A3000011036E7331087265676973747279026F6D00 +\216\185\217\133\216\167\217\134. 172800 IN NS ns1.registry.om. +08D8B9D985D8A7D98600000200010002A3000011036E7332087265676973747279026F6D00 +\216\185\217\133\216\167\217\134. 172800 IN NS ns2.registry.om. +08D8B9D985D8A7D98600000200010002A300001A056363746C64046265746106617269646E73036E657402617500 +\216\185\217\133\216\167\217\134. 172800 IN NS cctld.beta.aridns.net.au. +08D8B9D985D8A7D98600000200010002A300001B056363746C6405616C70686106617269646E73036E657402617500 +\216\185\217\133\216\167\217\134. 172800 IN NS cctld.alpha.aridns.net.au. +08D8B9D985D8A7D98600000200010002A300001B056363746C640564656C746106617269646E73036E657402617500 +\216\185\217\133\216\167\217\134. 172800 IN NS cctld.delta.aridns.net.au. +08D8B9D985D8A7D98600000200010002A300001B056363746C640567616D6D6106617269646E73036E657402617500 +\216\185\217\133\216\167\217\134. 172800 IN NS cctld.gamma.aridns.net.au. +08D8B9D985D8A7D98600002F00010001518000140AD8A7DB8CD8B1D8A7D986000006200000000003 +\216\185\217\133\216\167\217\134. 86400 IN NSEC \216\167\219\140\216\177\216\167\217\134. NS RRSIG NSEC +08D8B9D985D8A7D98600002E0001000151800093002F08010001518052F4220052EAD97083770092F8D070580717E7071544E43D066A680E899D84B1DE3F5883F90C4E5EE8F1C041CE2513B9958327C0C8AB9D541C38C84CEAFF5646750E91DF98FCC76AAADAB6E2FEFF36E5244B0B30C1F23808257D860F77FF66FC5E443E7A13BBA319ED7F033897AF6BA37921147876D42BD4808699ECE07B5FBE58A06FA8B51EE1F1EED480 +\216\185\217\133\216\167\217\134. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . kvjQcFgHF+cHFUTkPQZqaA6JnYSx3j9Yg/kMTl7o8cBBziUTuZWDJ8DIq51UHDjITOr/VkZ1DpHfmPzHaqratuL+/zblJEsLMMHyOAglfYYPd/9m/F5EPnoTu6MZ7X8DOJeva6N5IRR4dtQr1ICGmezge1++WKBvqLUe4fHu1IA= ;{id = 33655} +0AD8A7DB8CD8B1D8A7D98600000200010002A300000A0161036E696302697200 +\216\167\219\140\216\177\216\167\217\134. 172800 IN NS a.nic.ir. +0AD8A7DB8CD8B1D8A7D98600000200010002A300000D026E730569726E696302697200 +\216\167\219\140\216\177\216\167\217\134. 172800 IN NS ns.irnic.ir. +0AD8A7DB8CD8B1D8A7D98600002F00010001518000160CD8A7D985D8A7D8B1D8A7D8AA000006200000000003 +\216\167\219\140\216\177\216\167\217\134. 86400 IN NSEC \216\167\217\133\216\167\216\177\216\167\216\170. NS RRSIG NSEC +0AD8A7DB8CD8B1D8A7D98600002E0001000151800093002F08010001518052F4220052EAD970837700A4E63C19ED1A2A4F7AA9690DD96CEAB2D9846E2B1BA2B5028536AC654641E7478F24E20B02B6FD41E8FA39C9E4FC502B888F77B745A8E2F6ECD7428785FBC0AC7C472EC4A44B30F8BAEC905AFD2D54AFB0B2B14566E43E53EEDF7FCD038E0530E57E5DC854D4703E1FA330664CA5A126FEB50913C89FF55183EF6A1DF3A22EC6 +\216\167\219\140\216\177\216\167\217\134. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . pOY8Ge0aKk96qWkN2WzqstmEbisborUChTasZUZB50ePJOILArb9Qej6Ocnk/FAriI93t0Wo4vbs10KHhfvArHxHLsSkSzD4uuyQWv0tVK+wsrFFZuQ+U+7ff80DjgUw5X5dyFTUcD4fozBmTKWhJv61CRPIn/VRg+9qHfOiLsY= ;{id = 33655} +0CD8A7D985D8A7D8B1D8A7D8AA00000200010002A300000E036E7331056165646E7302616500 +\216\167\217\133\216\167\216\177\216\167\216\170. 172800 IN NS ns1.aedns.ae. +0CD8A7D985D8A7D8B1D8A7D8AA00000200010002A300000E036E7332056165646E7302616500 +\216\167\217\133\216\167\216\177\216\167\216\170. 172800 IN NS ns2.aedns.ae. +0CD8A7D985D8A7D8B1D8A7D8AA00000200010002A300001006736E732D706203697363036F726700 +\216\167\217\133\216\167\216\177\216\167\216\170. 172800 IN NS sns-pb.isc.org. +0CD8A7D985D8A7D8B1D8A7D8AA00000200010002A3000014096E736578742D706368056165646E7302616500 +\216\167\217\133\216\167\216\177\216\167\216\170. 172800 IN NS nsext-pch.aedns.ae. +0CD8A7D985D8A7D8B1D8A7D8AA00002F00010001518000160CD8A7D984D8A7D8B1D8AFD986000006200000000003 +\216\167\217\133\216\167\216\177\216\167\216\170. 86400 IN NSEC \216\167\217\132\216\167\216\177\216\175\217\134. NS RRSIG NSEC +0CD8A7D985D8A7D8B1D8A7D8AA00002E0001000151800093002F08010001518052F4220052EAD970837700B07A53D290DCA0C832C39E4D12966D7D4B7069C7D1ACCED6C70E2CCF852CCA7BB106788BBA1256449C5EEC8A5A955874426ADC3F8BFFF774BC74AE28D48CF79751266D549E01526D4D1A7F2A9F54A06CE9A846EC00847344EC0234EE8DF91D67085803111D0F4D253D03D52971E82AC9BD1CAC0980D80B4854E21A98EC29BE1D +\216\167\217\133\216\167\216\177\216\167\216\170. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . sHpT0pDcoMgyw55NEpZtfUtwacfRrM7Wxw4sz4UsynuxBniLuhJWRJxe7IpalVh0QmrcP4v/93S8dK4o1Iz3l1EmbVSeAVJtTRp/Kp9UoGzpqEbsAIRzROwCNO6N+R1nCFgDER0PTSU9A9Upcegqyb0crAmA2AtIVOIamOwpvh0= ;{id = 33655} +0CD8A7D984D8A7D8B1D8AFD98600000200010002A300001B026A6F056363746C640761757468646E730472697065036E657400 +\216\167\217\132\216\167\216\177\216\175\217\134. 172800 IN NS jo.cctld.authdns.ripe.net. +0CD8A7D984D8A7D8B1D8AFD98600000200010002A300000D037269700370736703636F6D00 +\216\167\217\132\216\167\216\177\216\175\217\134. 172800 IN NS rip.psg.com. +0CD8A7D984D8A7D8B1D8AFD98600000200010002A300001104616D7261036E696303676F76026A6F00 +\216\167\217\132\216\167\216\177\216\175\217\134. 172800 IN NS amra.nic.gov.jo. +0CD8A7D984D8A7D8B1D8AFD98600000200010002A3000012057065747261036E696303676F76026A6F00 +\216\167\217\132\216\167\216\177\216\175\217\134. 172800 IN NS petra.nic.gov.jo. +0CD8A7D984D8A7D8B1D8AFD98600000200010002A3000016096A6F7264616E317374036E696303676F76026A6F00 +\216\167\217\132\216\167\216\177\216\175\217\134. 172800 IN NS jordan1st.nic.gov.jo. +0CD8A7D984D8A7D8B1D8AFD98600002F00010001518000140AD8A8DABED8A7D8B1D8AA000006200000000003 +\216\167\217\132\216\167\216\177\216\175\217\134. 86400 IN NSEC \216\168\218\190\216\167\216\177\216\170. NS RRSIG NSEC +0CD8A7D984D8A7D8B1D8AFD98600002E0001000151800093002F08010001518052F4220052EAD9708377008DA41885919DE297632CCBA1B0449591F5740FE340CF727F4874C3ACB5910A878C32A5BF5FDDA47C5AA9E453B1A762A291941E65FBFD2F6CCD19EC5C6937BD13A3AB7AF8489B7E092146A9EE589A10FEAD10691962B96D7F767A40262945EF462413E9DB64806BCAFD95E89B3453BFA474AFF10B73F5AED86425E3B7F1D9184C +\216\167\217\132\216\167\216\177\216\175\217\134. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . jaQYhZGd4pdjLMuhsESVkfV0D+NAz3J/SHTDrLWRCoeMMqW/X92kfFqp5FOxp2KikZQeZfv9L2zNGexcaTe9E6OrevhIm34JIUap7liaEP6tEGkZYrltf3Z6QCYpRe9GJBPp22SAa8r9leibNFO/pHSv8Qtz9a7YZCXjt/HZGEw= ;{id = 33655} +0AD8A8DABED8A7D8B1D8AA00000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS a0.cctld.afilias-nst.info. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS a1.in.afilias-nst.in. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS a2.in.afilias-nst.info. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS b0.cctld.afilias-nst.org. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS b1.in.afilias-nst.in. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS b2.in.afilias-nst.org. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS c0.cctld.afilias-nst.info. +0AD8A8DABED8A7D8B1D8AA00000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\216\168\218\190\216\167\216\177\216\170. 172800 IN NS d0.cctld.afilias-nst.org. +0AD8A8DABED8A7D8B1D8AA00002F00010001518000160CD8A7D984D985D8BAD8B1D8A8000006200000000003 +\216\168\218\190\216\167\216\177\216\170. 86400 IN NSEC \216\167\217\132\217\133\216\186\216\177\216\168. NS RRSIG NSEC +0AD8A8DABED8A7D8B1D8AA00002E0001000151800093002F08010001518052F4220052EAD970837700707C60D70A479C80BC16D1E8B7929C1AFD7D5BFF9FABD3F1380FB53D85E9F321BA53432A7BFC3E156D036E15D2D11C4410B71A5ABF1F568D4559E4703B46BC669BEED06E7C24ABBA8F9AABDF0C772C60646F5CC9349748FDE797AB0476E618ACCB78BED2D85F6973480FA4F98FBC49731A98CA639748A49F9A7462BD74FD4664 +\216\168\218\190\216\167\216\177\216\170. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . cHxg1wpHnIC8FtHot5KcGv19W/+fq9PxOA+1PYXp8yG6U0Mqe/w+FW0DbhXS0RxEELcaWr8fVo1FWeRwO0a8Zpvu0G58JKu6j5qr3wx3LGBkb1zJNJdI/eeXqwR25hisy3i+0thfaXNID6T5j7xJcxqYymOXSKSfmnRivXT9RmQ= ;{id = 33655} +0CD8A7D984D985D8BAD8B1D8A800000200010002A300000C036E7332036E696302667200 +\216\167\217\132\217\133\216\186\216\177\216\168. 172800 IN NS ns2.nic.fr. +0CD8A7D984D985D8BAD8B1D8A800000200010002A300001004646E7332066D656E617261026D6100 +\216\167\217\132\217\133\216\186\216\177\216\168. 172800 IN NS dns2.menara.ma. +0CD8A7D984D985D8BAD8B1D8A800000200010002A300001004646E7333066D656E617261026D6100 +\216\167\217\132\217\133\216\186\216\177\216\168. 172800 IN NS dns3.menara.ma. +0CD8A7D984D985D8BAD8B1D8A800000200010002A30000100668617269737304616E7274026D6100 +\216\167\217\132\217\133\216\186\216\177\216\168. 172800 IN NS hariss.anrt.ma. +0CD8A7D984D985D8BAD8B1D8A800002F000100015180001A10D8A7D984D8B3D8B9D988D8AFD98AD8A9000006200000000003 +\216\167\217\132\217\133\216\186\216\177\216\168. 86400 IN NSEC \216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. NS RRSIG NSEC +0CD8A7D984D985D8BAD8B1D8A800002E0001000151800093002F08010001518052F4220052EAD9708377009F0CA28A836E9A4BCD07B3AD501F0F95084CE4032D950ED7365E86681B244A53328976F2197C4DAAA868BA42D7BFB6A80BF067A8D5F8A5D66FB9CB59F8EC35C37911D05548F8FC6BF79FC9C5FC84DC70DF8BDBFE00118B8C0DC2D13CEE5DED11A20BC2409A4E8A1BF4A06B35D41E8E8DBD239BB8FE52BAF26841E8721805BE99 +\216\167\217\132\217\133\216\186\216\177\216\168. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . nwyiioNumkvNB7OtUB8PlQhM5AMtlQ7XNl6GaBskSlMyiXbyGXxNqqhoukLXv7aoC/BnqNX4pdZvuctZ+Ow1w3kR0FVI+Pxr95/JxfyE3HDfi9v+ABGLjA3C0TzuXe0RogvCQJpOihv0oGs11B6Ojb0jm7j+UrryaEHochgFvpk= ;{id = 33655} +10D8A7D984D8B3D8B9D988D8AFD98AD8A900000200010002A3000010036E733103697375036E657402736100 +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 172800 IN NS ns1.isu.net.sa. +10D8A7D984D8B3D8B9D988D8AFD98AD8A900000200010002A3000010036E7331036E6963036E657402736100 +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 172800 IN NS ns1.nic.net.sa. +10D8A7D984D8B3D8B9D988D8AFD98AD8A900000200010002A3000010036E7332036E6963036E657402736100 +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 172800 IN NS ns2.nic.net.sa. +10D8A7D984D8B3D8B9D988D8AFD98AD8A900000200010002A30000170573612D6E7307616E796361737403706368036E657400 +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 172800 IN NS sa-ns.anycast.pch.net. +10D8A7D984D8B3D8B9D988D8AFD98AD8A900002F00010001518000160CD985D984D98AD8B3D98AD8A7000006200000000003 +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 86400 IN NSEC \217\133\217\132\217\138\216\179\217\138\216\167. NS RRSIG NSEC +10D8A7D984D8B3D8B9D988D8AFD98AD8A900002E0001000151800093002F08010001518052F4220052EAD97083770031949EABA3EEC262FE01E763B5A97C759EAE214B7BA3EC25A9FDABA2FB35B5D33E50261062B409ECD543E26FE4D82E72F3AF4BB4B85EA82790B5A4B435CA0F0C287B3C280E2C7D9AEF79DE2BBD41EB1C969FFC236F526ED08B0AEEE38E4407AF479B8F1C175053A27F996384EF657A1ABE75C9BCFF2432A0B2A650E96651EA7C +\216\167\217\132\216\179\216\185\217\136\216\175\217\138\216\169. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . MZSeq6PuwmL+Aedjtal8dZ6uIUt7o+wlqf2rovs1tdM+UCYQYrQJ7NVD4m/k2C5y869LtLheqCeQtaS0NcoPDCh7PCgOLH2a73neK71B6xyWn/wjb1Ju0IsK7uOORAevR5uPHBdQU6J/mWOE72V6Gr51ybz/JDKgsqZQ6WZR6nw= ;{id = 33655} +0CD985D984D98AD8B3D98AD8A700000200010002A300001203646E73056D796E6963036E6574026D7900 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS dns.mynic.net.my. +0CD985D984D98AD8B3D98AD8A700000200010002A3000011036E7332046375686B0365647502686B00 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns2.cuhk.edu.hk. +0CD985D984D98AD8B3D98AD8A700000200010002A300000F036E7335066A6172696E67026D7900 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns5.jaring.my. +0CD985D984D98AD8B3D98AD8A700000200010002A300000F036E7336066A6172696E67026D7900 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns6.jaring.my. +0CD985D984D98AD8B3D98AD8A700000200010002A300001304646E7332056D796E6963036E6574026D7900 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS dns2.mynic.net.my. +0CD985D984D98AD8B3D98AD8A700000200010002A3000010046E7332300369696A026164026A7000 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns20.iij.ad.jp. +0CD985D984D98AD8B3D98AD8A700000200010002A300000F046E7333300463646E73036E657400 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns30.cdns.net. +0CD985D984D98AD8B3D98AD8A700000200010002A300000E056E732D6D79036E696302667200 +\217\133\217\132\217\138\216\179\217\138\216\167. 172800 IN NS ns-my.nic.fr. +0CD985D984D98AD8B3D98AD8A700002B000100015180001842D2080195B6E1D09E818E13B8FBE777482C69109A614E4B +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN DS 17106 8 1 95B6E1D09E818E13B8FBE777482C69109A614E4B +0CD985D984D98AD8B3D98AD8A700002B000100015180002442D20802BDB33EA391E14E2535C4F2E3770408D2139A892A1DC8B5CF5EB9DF42FFB6B1B4 +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN DS 17106 8 2 BDB33EA391E14E2535C4F2E3770408D2139A892A1DC8B5CF5EB9DF42FFB6B1B4 +0CD985D984D98AD8B3D98AD8A700002B000100015180001852920801B7B8D9E0586759075371771EC5FE4547438192AA +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN DS 21138 8 1 B7B8D9E0586759075371771EC5FE4547438192AA +0CD985D984D98AD8B3D98AD8A700002B000100015180002452920802CD5A25C027734679E3701C7C51413C525CBA12EDECD006549F93CE9AB1AC47C5 +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN DS 21138 8 2 CD5A25C027734679E3701C7C51413C525CBA12EDECD006549F93CE9AB1AC47C5 +0CD985D984D98AD8B3D98AD8A700002E0001000151800093002B08010001518052F4220052EAD970837700676E7B108A8BA5E299C0B3C844DB951B797E90249B9FE7B810056169D88390A22E9D066DFB85C6EFF17CBEEB598A6BB3DF64CCAE53FD77C2C0B52901E18C50B42E55CA54B5EAC81FB37D34421F2D795911C3C455BB063AE8D577212325B579BC7D7F68C7FA783B0FB4B91F1E1844C3BE30DC3B3BFF40B3CBF0BC603E4860ABA2 +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Z257EIqLpeKZwLPIRNuVG3l+kCSbn+e4EAVhadiDkKIunQZt+4XG7/F8vutZimuz32TMrlP9d8LAtSkB4YxQtC5VylS16sgfs300Qh8teVkRw8RVuwY66NV3ISMltXm8fX9ox/p4Ow+0uR8eGETDvjDcOzv/QLPL8LxgPkhgq6I= ;{id = 33655} +0CD985D984D98AD8B3D98AD8A700002E0001000151800093002F08010001518052F4220052EAD970837700B3717DE9AD6DF9CF9FD4CAED8DE3CE1CC79E00C9DC60CD78517F0547CCA2E63DD07849EE72BC596C2BDD66293632CCA16E682EF23EF3C4DAB3411EF82635FC52D6BCADB6700F9E0EEF8C5CE45F65F8BF9037C4FD51597A904F261CC4754E94E3FB954135B05E28AC1C558CA9DE40CBA0C4AE7F9F645550FF5900B12D96293A65 +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . s3F96a1t+c+f1MrtjePOHMeeAMncYM14UX8FR8yi5j3QeEnucrxZbCvdZik2Msyhbmgu8j7zxNqzQR74JjX8Uta8rbZwD54O74xc5F9l+L+QN8T9UVl6kE8mHMR1TpTj+5VBNbBeKKwcVYyp3kDLoMSuf59kVVD/WQCxLZYpOmU= ;{id = 33655} +0CD985D984D98AD8B3D98AD8A700002F000100015180001208D8B4D8A8D983D8A9000006200000000013 +\217\133\217\132\217\138\216\179\217\138\216\167. 86400 IN NSEC \216\180\216\168\217\131\216\169. NS DS RRSIG NSEC +08D8B4D8A8D983D8A900000200010002A30000100161036E696308D8B4D8A8D983D8A900 +\216\180\216\168\217\131\216\169. 172800 IN NS a.nic.\216\180\216\168\217\131\216\169. +08D8B4D8A8D983D8A900000200010002A30000100162036E696308D8B4D8A8D983D8A900 +\216\180\216\168\217\131\216\169. 172800 IN NS b.nic.\216\180\216\168\217\131\216\169. +08D8B4D8A8D983D8A900000200010002A30000100163036E696308D8B4D8A8D983D8A900 +\216\180\216\168\217\131\216\169. 172800 IN NS c.nic.\216\180\216\168\217\131\216\169. +08D8B4D8A8D983D8A900000200010002A30000100164036E696308D8B4D8A8D983D8A900 +\216\180\216\168\217\131\216\169. 172800 IN NS d.nic.\216\180\216\168\217\131\216\169. +08D8B4D8A8D983D8A900002B0001000151800018510008010AC95C7D70A0A3CCB3E8351F6416663B941230DD +\216\180\216\168\217\131\216\169. 86400 IN DS 20736 8 1 0AC95C7D70A0A3CCB3E8351F6416663B941230DD +08D8B4D8A8D983D8A900002B000100015180002451000802851A2DD716C38C5325818FB56E53D8F2E340C098F8AE9DC531601F49F4D8B943 +\216\180\216\168\217\131\216\169. 86400 IN DS 20736 8 2 851A2DD716C38C5325818FB56E53D8F2E340C098F8AE9DC531601F49F4D8B943 +08D8B4D8A8D983D8A900002E0001000151800093002B08010001518052F4220052EAD9708377009CCDE0E4175BE0479F9697FB02070E96615CCE1E27585895FC023E9F4001A5F77668CA52462CB0AF85AB92B6D35936062275F54F9073C13D938355A57A80A111E9BAF9A02518989E9F7BB080D052CDB978E981EE8C60A10499767D819700176B2213AD2633EDFD18F63D8FB9292DB6D87B87F57E104B7A2B3C9C6709F4B9B647 +\216\180\216\168\217\131\216\169. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . nM3g5Bdb4Eeflpf7AgcOlmFczh4nWFiV/AI+n0ABpfd2aMpSRiywr4WrkrbTWTYGInX1T5BzwT2Tg1WleoChEem6+aAlGJien3uwgNBSzbl46YHujGChBJl2fYGXABdrIhOtJjPt/Rj2PY+5KS222HuH9X4QS3orPJxnCfS5tkc= ;{id = 33655} +08D8B4D8A8D983D8A900002E0001000151800093002F08010001518052F4220052EAD97083770058156633229EB7B865B17513C74AE047FE45778DC15D6E1A7346FAA486D054369DCCB485A9AF5A83931A655B1DED8D46D361A20D6F4609568CD196DDF59E208FF873ED54DF938079C935E7551834E925227A656A42B50B545FED5B7BC8A5B3450BA392B1D8ECB4EF4FE36A681C6FBD40941B453C32DDD09A7D3A9AFD01F923E9 +\216\180\216\168\217\131\216\169. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . WBVmMyKet7hlsXUTx0rgR/5Fd43BXW4ac0b6pIbQVDadzLSFqa9ag5MaZVsd7Y1G02GiDW9GCVaM0Zbd9Z4gj/hz7VTfk4B5yTXnVRg06SUiemVqQrULVF/tW3vIpbNFC6OSsdjstO9P42poHG+9QJQbRTwy3dCafTqa/QH5I+k= ;{id = 33655} +08D8B4D8A8D983D8A900002F000100015180001309E0B984E0B897E0B8A2000006200000000013 +\216\180\216\168\217\131\216\169. 86400 IN NSEC \224\185\132\224\184\151\224\184\162. NS DS RRSIG NSEC +0161036E696308D8B4D8A8D983D8A900000100010002A300000425D1C003 +a.nic.\216\180\216\168\217\131\216\169. 172800 IN A 37.209.192.3 +0161036E696308D8B4D8A8D983D8A900001C00010002A300001020010DCD000100000000000000000003 +a.nic.\216\180\216\168\217\131\216\169. 172800 IN AAAA 2001:dcd:1::3 +0162036E696308D8B4D8A8D983D8A900000100010002A300000425D1C203 +b.nic.\216\180\216\168\217\131\216\169. 172800 IN A 37.209.194.3 +0162036E696308D8B4D8A8D983D8A900001C00010002A300001020010DCD000200000000000000000003 +b.nic.\216\180\216\168\217\131\216\169. 172800 IN AAAA 2001:dcd:2::3 +0163036E696308D8B4D8A8D983D8A900000100010002A300000425D1C403 +c.nic.\216\180\216\168\217\131\216\169. 172800 IN A 37.209.196.3 +0163036E696308D8B4D8A8D983D8A900001C00010002A300001020010DCD000300000000000000000003 +c.nic.\216\180\216\168\217\131\216\169. 172800 IN AAAA 2001:dcd:3::3 +0164036E696308D8B4D8A8D983D8A900000100010002A300000425D1C603 +d.nic.\216\180\216\168\217\131\216\169. 172800 IN A 37.209.198.3 +0164036E696308D8B4D8A8D983D8A900001C00010002A300001020010DCD000400000000000000000003 +d.nic.\216\180\216\168\217\131\216\169. 172800 IN AAAA 2001:dcd:4::3 +09E0B984E0B897E0B8A200000200010002A300000E026E730574686E6963036E657400 +\224\185\132\224\184\151\224\184\162. 172800 IN NS ns.thnic.net. +09E0B984E0B897E0B8A200000200010002A300001204646E73310574686E696302636F02746800 +\224\185\132\224\184\151\224\184\162. 172800 IN NS dns1.thnic.co.th. +09E0B984E0B897E0B8A200000200010002A3000012046E732D610574686E696302636F02746800 +\224\185\132\224\184\151\224\184\162. 172800 IN NS ns-a.thnic.co.th. +09E0B984E0B897E0B8A200002B0001000151800024476808021C51573C20577DCC978567C0F4F85056A0DDEFEF2DCF4919BAE35BB093EABA12 +\224\185\132\224\184\151\224\184\162. 86400 IN DS 18280 8 2 1C51573C20577DCC978567C0F4F85056A0DDEFEF2DCF4919BAE35BB093EABA12 +09E0B984E0B897E0B8A200002E0001000151800093002B08010001518052F4220052EAD9708377008B17376B64B7698A71944EF33F6D5EC5973CE1A83B59679FAB50220078EEFAC1396D16F5DAF450DF285E55435B4D00447ABD6B7BCB8A619ECC06BBBE64CE0F7C34C42B7BD091AB51C0065B081849CA1087D309A5C5AB58394B7AFB494FEB745CA473C1810753C1C005B18BF7B56594237C3C861594263E7185D4674D80EC11D9 +\224\185\132\224\184\151\224\184\162. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . ixc3a2S3aYpxlE7zP21exZc84ag7WWefq1AiAHju+sE5bRb12vRQ3yheVUNbTQBEer1re8uKYZ7MBru+ZM4PfDTEK3vQkatRwAZbCBhJyhCH0wmlxatYOUt6+0lP63RcpHPBgQdTwcAFsYv3tWWUI3w8hhWUJj5xhdRnTYDsEdk= ;{id = 33655} +09E0B984E0B897E0B8A200002E0001000151800093002F08010001518052F4220052EAD9708377005BE350182D54F48A850310A102DDB0F0577FB8DBD9D2A2ED4B7E4122B8A39DC8B324745EA64AF83232F28ACE031449CDC1E29DB3BE4230742605A6669DB9A64B1B36ADB935660E16384779BF58C34DE0FCB1882D216F0391A6729093FF84F824138E76A73808EB34A425DB1096D7B86153BD3840699620EC24A562C0FC1D979C +\224\185\132\224\184\151\224\184\162. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . W+NQGC1U9IqFAxChAt2w8Fd/uNvZ0qLtS35BIrijncizJHRepkr4MjLyis4DFEnNweKds75CMHQmBaZmnbmmSxs2rbk1Zg4WOEd5v1jDTeD8sYgtIW8DkaZykJP/hPgkE452pzgI6zSkJdsQlte4YVO9OEBpliDsJKViwPwdl5w= ;{id = 33655} +09E0B984E0B897E0B8A200002F00010001518000140AD8B3D988D8B1D98AD8A9000006200000000013 +\224\185\132\224\184\151\224\184\162. 86400 IN NSEC \216\179\217\136\216\177\217\138\216\169. NS DS RRSIG NSEC +0AD8B3D988D8B1D98AD8A900000200010002A300001B027379056363746C640761757468646E730472697065036E657400 +\216\179\217\136\216\177\217\138\216\169. 172800 IN NS sy.cctld.authdns.ripe.net. +0AD8B3D988D8B1D98AD8A900000200010002A300000C036E733103746C6402737900 +\216\179\217\136\216\177\217\138\216\169. 172800 IN NS ns1.tld.sy. +0AD8B3D988D8B1D98AD8A900000200010002A300000C036E733203746C6402737900 +\216\179\217\136\216\177\217\138\216\169. 172800 IN NS ns2.tld.sy. +0AD8B3D988D8B1D98AD8A900000200010002A30000140370636807616E796361737403746C6402737900 +\216\179\217\136\216\177\217\138\216\169. 172800 IN NS pch.anycast.tld.sy. +0AD8B3D988D8B1D98AD8A900002F000100015180000E04D180D184000006200000000003 +\216\179\217\136\216\177\217\138\216\169. 86400 IN NSEC \209\128\209\132. NS RRSIG NSEC +0AD8B3D988D8B1D98AD8A900002E0001000151800093002F08010001518052F4220052EAD970837700882C88BD587E0CCDA15E10C4E4CEA3443CC29403F8F9BCEEC6D90AFEF70457C2ECAFAD402EC82DBC566769D94EE5C3B4D2AC6C85544FC4CAE1CC4DE5CF6EEE18C07492B8F74BBBDEECA42800BA0CD04332EFBD8139F63D2A27BDA4995991F0354328EFB3CBB25D243224ECC0A0AAA5DF6E4951CEE2489C0D006B2535E78E7B16 +\216\179\217\136\216\177\217\138\216\169. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . iCyIvVh+DM2hXhDE5M6jRDzClAP4+bzuxtkK/vcEV8Lsr61ALsgtvFZnadlO5cO00qxshVRPxMrhzE3lz27uGMB0krj3S7ve7KQoALoM0EMy772BOfY9Kie9pJlZkfA1Qyjvs8uyXSQyJOzAoKql325JUc7iSJwNAGslNeeOexY= ;{id = 33655} +04D180D18400000200010002A3000010016103646E73047269706E036E657400 +\209\128\209\132. 172800 IN NS a.dns.ripn.net. +04D180D18400000200010002A3000010016203646E73047269706E036E657400 +\209\128\209\132. 172800 IN NS b.dns.ripn.net. +04D180D18400000200010002A3000010016403646E73047269706E036E657400 +\209\128\209\132. 172800 IN NS d.dns.ripn.net. +04D180D18400000200010002A3000010016503646E73047269706E036E657400 +\209\128\209\132. 172800 IN NS e.dns.ripn.net. +04D180D18400000200010002A3000010016603646E73047269706E036E657400 +\209\128\209\132. 172800 IN NS f.dns.ripn.net. +04D180D18400002B0001000151800024EB09080244F3965D9E0227ED99414740A1C7A7651A60ACBC6C80942C8AE9916FC323649F +\209\128\209\132. 86400 IN DS 60169 8 2 44F3965D9E0227ED99414740A1C7A7651A60ACBC6C80942C8AE9916FC323649F +04D180D18400002E0001000151800093002B08010001518052F4220052EAD97083770062BF678328EC757E923ABCDDEC1218081CA5F74E7DFD22E7DD34EF2F418B3A1C8EE3C4C445E78CD54527507A90755A4CD70AEC8087BE131B8427CAB2E125F9D8E47A36BBF866206AE44805A4CD454D97E5952184F134C94F51D7734F3F37A08E0436C03BD94538C10FD35BC014E68DDF947D7227F182F6E0EEF179A6A42A4880 +\209\128\209\132. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . Yr9ngyjsdX6SOrzd7BIYCByl9059/SLn3TTvL0GLOhyO48TEReeM1UUnUHqQdVpM1wrsgIe+ExuEJ8qy4SX52OR6Nrv4ZiBq5EgFpM1FTZfllSGE8TTJT1HXc08/N6COBDbAO9lFOMEP01vAFOaN35R9cifxgvbg7vF5pqQqSIA= ;{id = 33655} +04D180D18400002E0001000151800093002F08010001518052F4220052EAD97083770050F72D94B74A47860CCEDDF318E8EE6881D5BFFBE4A933EFDFFEFFA5BEF505F4E56680A45B34DBE71670C7D38174E00AE9856C8532527DE68D3F2655B64B22C309F88B85621A015D5462713B4F0C8F0487FFB2F729ABCEF50AB2C7EE49FED02C186704F675C8550200E53F0B3DF1F4573416B00D9AF4B580A754EC14FAB1F4A6 +\209\128\209\132. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . UPctlLdKR4YMzt3zGOjuaIHVv/vkqTPv3/7/pb71BfTlZoCkWzTb5xZwx9OBdOAK6YVshTJSfeaNPyZVtksiwwn4i4ViGgFdVGJxO08MjwSH/7L3KavO9Qqyx+5J/tAsGGcE9nXIVQIA5T8LPfH0VzQWsA2a9LWAp1TsFPqx9KY= ;{id = 33655} +04D180D18400002F000100015180001208D8AAD988D986D8B3000006200000000013 +\209\128\209\132. 86400 IN NSEC \216\170\217\136\217\134\216\179. NS DS RRSIG NSEC +08D8AAD988D986D8B300000200010002A300000C036E73310361746902746E00 +\216\170\217\136\217\134\216\179. 172800 IN NS ns1.ati.tn. +08D8AAD988D986D8B300000200010002A300000C036E73320361746902746E00 +\216\170\217\136\217\134\216\179. 172800 IN NS ns2.ati.tn. +08D8AAD988D986D8B300000200010002A300000C036E7332036E696302667200 +\216\170\217\136\217\134\216\179. 172800 IN NS ns2.nic.fr. +08D8AAD988D986D8B300000200010002A300000C036E73380361746902746E00 +\216\170\217\136\217\134\216\179. 172800 IN NS ns8.ati.tn. +08D8AAD988D986D8B300000200010002A300000C036E73390361746902746E00 +\216\170\217\136\217\134\216\179. 172800 IN NS ns9.ati.tn. +08D8AAD988D986D8B300000200010002A3000013056E732D746E07616672696E6963036E657400 +\216\170\217\136\217\134\216\179. 172800 IN NS ns-tn.afrinic.net. +08D8AAD988D986D8B300002F000100015180001309E381BFE38293E381AA000006200000000003 +\216\170\217\136\217\134\216\179. 86400 IN NSEC \227\129\191\227\130\147\227\129\170. NS RRSIG NSEC +08D8AAD988D986D8B300002E0001000151800093002F08010001518052F4220052EAD9708377000AC406CBC3D5D6AEBCD769E6043B5F55DCDE0BD061DC7E34E2EA19E60BC78E05F84CC1837059D11828D4C048CC28A368DC606903276756F4DABFBF4AB54657F9A97BCF1B3B25F946949725BEF8AA53B639D9974CD3D1A582E83DBE47A4768EC7B5A6D259E7473E08B094E91374931F4F79F8F4570D31D8C4C76428AAB41FB28F +\216\170\217\136\217\134\216\179. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . CsQGy8PV1q6812nmBDtfVdzeC9Bh3H404uoZ5gvHjgX4TMGDcFnRGCjUwEjMKKNo3GBpAydnVvTav79KtUZX+al7zxs7JflGlJclvviqU7Y52ZdM09Glgug9vkekdo7HtabSWedHPgiwlOkTdJMfT3n49FcNMdjEx2QoqrQfso8= ;{id = 33655} +09E381BFE38293E381AA00000200010002A3000024076E732D746C643116636861726C6573746F6E726F6164726567697374727903636F6D00 +\227\129\191\227\130\147\227\129\170. 172800 IN NS ns-tld1.charlestonroadregistry.com. +09E381BFE38293E381AA00000200010002A3000024076E732D746C643216636861726C6573746F6E726F6164726567697374727903636F6D00 +\227\129\191\227\130\147\227\129\170. 172800 IN NS ns-tld2.charlestonroadregistry.com. +09E381BFE38293E381AA00000200010002A3000024076E732D746C643316636861726C6573746F6E726F6164726567697374727903636F6D00 +\227\129\191\227\130\147\227\129\170. 172800 IN NS ns-tld3.charlestonroadregistry.com. +09E381BFE38293E381AA00000200010002A3000024076E732D746C643416636861726C6573746F6E726F6164726567697374727903636F6D00 +\227\129\191\227\130\147\227\129\170. 172800 IN NS ns-tld4.charlestonroadregistry.com. +09E381BFE38293E381AA00000200010002A3000024076E732D746C643516636861726C6573746F6E726F6164726567697374727903636F6D00 +\227\129\191\227\130\147\227\129\170. 172800 IN NS ns-tld5.charlestonroadregistry.com. +09E381BFE38293E381AA00002B0001000151800024515B0802CFA6056748CB21C3CFE41EC0CDEE6D9FA1B78C0A76133B94393357BB71BE7E02 +\227\129\191\227\130\147\227\129\170. 86400 IN DS 20827 8 2 CFA6056748CB21C3CFE41EC0CDEE6D9FA1B78C0A76133B94393357BB71BE7E02 +09E381BFE38293E381AA00002E0001000151800093002B08010001518052F4220052EAD970837700045D8BD9C8D0A21870B2FE43052954DD14616B04D85B45A56793B9BD341347816BBC749E0517DCF720F201BFB48BF3B29A85BFC31EBA7FFD07C5BC4830C597DD701216372B288F390FBC61CA31882EAB0146F3B50F603EF196E89A57ACC9D9796344C5FDAC6E068C5933513687F485FA497B84360EA64D26E16E2A6ED8E5CAD9 +\227\129\191\227\130\147\227\129\170. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . BF2L2cjQohhwsv5DBSlU3RRhawTYW0WlZ5O5vTQTR4FrvHSeBRfc9yDyAb+0i/OymoW/wx66f/0HxbxIMMWX3XASFjcrKI85D7xhyjGILqsBRvO1D2A+8Zbomlesydl5Y0TF/axuBoxZM1E2h/SF+kl7hDYOpk0m4W4qbtjlytk= ;{id = 33655} +09E381BFE38293E381AA00002E0001000151800093002F08010001518052F4220052EAD970837700A8C2EE5E30B36749DA5685FF783F2FC71F2ABBE8C98869B445EF685D50BA72D8B09403E1A42813FEEAA35ABA57EE5483F2DBB3206D0EEA4E4886A72847E17D51DE6F7CAE6CA7E524E80AD484EB33FF88E7738B2E1E0AB1DB7DFE92D74959B4CB505B70D3A7849C97D2F52F6AFB1B789B48EB970A66A5E1700A820B0490278395 +\227\129\191\227\130\147\227\129\170. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . qMLuXjCzZ0naVoX/eD8vxx8qu+jJiGm0Re9oXVC6ctiwlAPhpCgT/uqjWrpX7lSD8tuzIG0O6k5IhqcoR+F9Ud5vfK5sp+Uk6ArUhOsz/4jnc4suHgqx233+ktdJWbTLUFtw06eEnJfS9S9q+xt4m0jrlwpmpeFwCoILBJAng5U= ;{id = 33655} +09E381BFE38293E381AA00002F00010001518000160CE0A8ADE0A8BEE0A8B0E0A8A4000006200000000013 +\227\129\191\227\130\147\227\129\170. 86400 IN NSEC \224\168\173\224\168\190\224\168\176\224\168\164. NS DS RRSIG NSEC +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS a0.cctld.afilias-nst.info. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS a1.in.afilias-nst.in. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS a2.in.afilias-nst.info. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS b0.cctld.afilias-nst.org. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS b1.in.afilias-nst.in. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS b2.in.afilias-nst.org. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS c0.cctld.afilias-nst.info. +0CE0A8ADE0A8BEE0A8B0E0A8A400000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\168\173\224\168\190\224\168\176\224\168\164. 172800 IN NS d0.cctld.afilias-nst.org. +0CE0A8ADE0A8BEE0A8B0E0A8A400002F000100015180001006E6B8B8E6888F000006200000000003 +\224\168\173\224\168\190\224\168\176\224\168\164. 86400 IN NSEC \230\184\184\230\136\143. NS RRSIG NSEC +0CE0A8ADE0A8BEE0A8B0E0A8A400002E0001000151800093002F08010001518052F4220052EAD97083770011F946566AC8EA61C678A8F3AC387B035AC1E0BCE77DE03A528B55725CFFE4471A4AC10D46EB7AA0C9E42758983038871A7A94FCB9483554D4A9CCEA0FEC6646376001DC20EE1993C8A6C0D7885DA6C01E24C45024AF3E5B925BE8AC0385D504F0A3F20850841CDF75A979F4692E524A658329590973870FE3C69B06693E2013 +\224\168\173\224\168\190\224\168\176\224\168\164. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . EflGVmrI6mHGeKjzrDh7A1rB4LznfeA6UotVclz/5EcaSsENRut6oMnkJ1iYMDiHGnqU/LlINVTUqczqD+xmRjdgAdwg7hmTyKbA14hdpsAeJMRQJK8+W5Jb6KwDhdUE8KPyCFCEHN91qXn0aS5SSmWDKVkJc4cP48abBmk+IBM= ;{id = 33655} +06E6B8B8E6888F00000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +\230\184\184\230\136\143. 172800 IN NS demand.beta.aridns.net.au. +06E6B8B8E6888F00000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +\230\184\184\230\136\143. 172800 IN NS demand.alpha.aridns.net.au. +06E6B8B8E6888F00000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +\230\184\184\230\136\143. 172800 IN NS demand.delta.aridns.net.au. +06E6B8B8E6888F00000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +\230\184\184\230\136\143. 172800 IN NS demand.gamma.aridns.net.au. +06E6B8B8E6888F00002B00010001518000246BD708026C4C1CBD05BCA28A60B397ED8AC77783D7592EB50028FD3AE8A59BB5758984D3 +\230\184\184\230\136\143. 86400 IN DS 27607 8 2 6C4C1CBD05BCA28A60B397ED8AC77783D7592EB50028FD3AE8A59BB5758984D3 +06E6B8B8E6888F00002E0001000151800093002B08010001518052F4220052EAD97083770019A4E48675B70D2FF7054EEFCA0C1F30480B8A7AA50569469D8B6A81C6164C400E9CD1F58B7B55F2DCB750CB1A03F5F7686D07CD36C74B7024D05020E4CBF4677009E9DA618FB14B853BE2B51E272C3DB4BBE95BEE6F993AD0A80AE7766EF5237DE127458967FBE47DB31D518D99D27EF07EAFC1D592CA5BF2E6BA327D6E8481 +\230\184\184\230\136\143. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . GaTkhnW3DS/3BU7vygwfMEgLinqlBWlGnYtqgcYWTEAOnNH1i3tV8ty3UMsaA/X3aG0HzTbHS3Ak0FAg5Mv0Z3AJ6dphj7FLhTvitR4nLD20u+lb7m+ZOtCoCud2bvUjfeEnRYln++R9sx1RjZnSfvB+r8HVkspb8ua6Mn1uhIE= ;{id = 33655} +06E6B8B8E6888F00002E0001000151800093002F08010001518052F4220052EAD9708377004A10E8C93E5A2403B79B09D80ECE21D9636454032A640D5A87CC5C45419075BBC671731314EBDF46ADEE9D3FE1AAC49A8336F1997666DBB92433AFCAE25DCDB96AEA92F34EA0154E128223742DCE032AB44C8A66C0F77FC3721D4CA6689E367801C65CD288058B71A2057D0A407FD69FD64BB61488786D222E61DD9AD9BABC75 +\230\184\184\230\136\143. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ShDoyT5aJAO3mwnYDs4h2WNkVAMqZA1ah8xcRUGQdbvGcXMTFOvfRq3unT/hqsSagzbxmXZm27kkM6/K4l3NuWrqkvNOoBVOEoIjdC3OAyq0TIpmwPd/w3IdTKZonjZ4AcZc0ogFi3GiBX0KQH/Wn9ZLthSIeG0iLmHdmtm6vHU= ;{id = 33655} +06E6B8B8E6888F00002F000100015180001006D985D8B5D8B1000006200000000013 +\230\184\184\230\136\143. 86400 IN NSEC \217\133\216\181\216\177. NS DS RRSIG NSEC +06D985D8B5D8B100000200010002A3000010036E733107646F746D61737202656700 +\217\133\216\181\216\177. 172800 IN NS ns1.dotmasr.eg. +06D985D8B5D8B100000200010002A3000010036E733207646F746D61737202656700 +\217\133\216\181\216\177. 172800 IN NS ns2.dotmasr.eg. +06D985D8B5D8B100000200010002A3000010036E733307646F746D61737202656700 +\217\133\216\181\216\177. 172800 IN NS ns3.dotmasr.eg. +06D985D8B5D8B100002F000100015180001006D982D8B7D8B1000006200000000003 +\217\133\216\181\216\177. 86400 IN NSEC \217\130\216\183\216\177. NS RRSIG NSEC +06D985D8B5D8B100002E0001000151800093002F08010001518052F4220052EAD97083770049F15ECB9AD6E324F79793B903E378E99D57C1888026E23E7AEEAEC814AD923998F0D2A9B851626CE3A0EE88CE065D6E931658DF2E858741D8A4062150E82809349CDC7E411FC09BE5D88E27E4A4C8A5377AD0D07BBDA4ACDB45F211345A09E75188037D6F16B33F7B4070E0BDB2C5F64FA19C31B53C28398A100D28A2C6A981 +\217\133\216\181\216\177. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . SfFey5rW4yT3l5O5A+N46Z1XwYiAJuI+eu6uyBStkjmY8NKpuFFibOOg7ojOBl1ukxZY3y6Fh0HYpAYhUOgoCTSc3H5BH8Cb5diOJ+SkyKU3etDQe72krNtF8hE0WgnnUYgDfW8Wsz97QHDgvbLF9k+hnDG1PCg5ihANKKLGqYE= ;{id = 33655} +06D982D8B7D8B100000200010002A300000F016108726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS a.registry.qa. +06D982D8B7D8B100000200010002A300000F016208726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS b.registry.qa. +06D982D8B7D8B100000200010002A300000F016308726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS c.registry.qa. +06D982D8B7D8B100000200010002A300000F016408726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS d.registry.qa. +06D982D8B7D8B100000200010002A300000F016508726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS e.registry.qa. +06D982D8B7D8B100000200010002A300000F016608726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS f.registry.qa. +06D982D8B7D8B100000200010002A300000F016708726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS g.registry.qa. +06D982D8B7D8B100000200010002A300000F016808726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS h.registry.qa. +06D982D8B7D8B100000200010002A300000F016908726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS i.registry.qa. +06D982D8B7D8B100000200010002A300000F016A08726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS j.registry.qa. +06D982D8B7D8B100000200010002A300000F016B08726567697374727902716100 +\217\130\216\183\216\177. 172800 IN NS k.registry.qa. +06D982D8B7D8B100002F000100015180001C12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF88000006200000000003 +\217\130\216\183\216\177. 86400 IN NSEC \224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. NS RRSIG NSEC +06D982D8B7D8B100002E0001000151800093002F08010001518052F4220052EAD970837700B904BC82201B9A1776E71717790BC4064295BF6513C8FAC1C97200A12209E30A25374AB06B5178B496B59BCB0C783BF373FA370128BD9DA017879565A988D0DA8E7A1853095069F15CC4751649712E213FA31EDFCFFC0846990DCC985F36CCB65471E29395745BFFBDBF6E2E498341C7E301D2D534FEE0D7DF8F705991C34529 +\217\130\216\183\216\177. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . uQS8giAbmhd25xcXeQvEBkKVv2UTyPrByXIAoSIJ4wolN0qwa1F4tJa1m8sMeDvzc/o3ASi9naAXh5VlqYjQ2o56GFMJUGnxXMR1FklxLiE/ox7fz/wIRpkNzJhfNsy2VHHik5V0W/+9v24uSYNBx+MB0tU0/uDX349wWZHDRSk= ;{id = 33655} +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A3000015026C6B0C636F6D6D756E697479646E73036E657400 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS lk.communitydns.net. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A3000018036E69630A6C6B2D616E796361737403706368036E657400 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS nic.lk-anycast.pch.net. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000B036E7331026163026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns1.ac.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000B036E7333026163026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns3.ac.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000D046E732D63036E6963026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns-c.nic.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000D046E732D64036E6963026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns-d.nic.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000D046E732D6C036E6963026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns-l.nic.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800000200010002A300000D046E732D74036E6963026C6B00 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 172800 IN NS ns-t.nic.lk. +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800002F000100015180001F15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE000006200000000003 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 86400 IN NSEC \224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. NS RRSIG NSEC +12E0AE87E0AEB2E0AE99E0AF8DE0AE95E0AF8800002E0001000151800093002F08010001518052F4220052EAD970837700380AD3ACB8CF80FD36F70981ADC1A729060259F0C84501E066380F56F1EC08F64ADA8FD07538AE08C3CF84619BAAED81112A63ADCCA51C4E8F212805AB06108C97268AF87A0320CA41340F8E01307739EEC583C885BE15BB4D85E570065A47D72CA1F606B6C3AD70E04806FA9AA13472EA2A12FC40609D678265AA50C9C571D2 +\224\174\135\224\174\178\224\174\153\224\175\141\224\174\149\224\175\136. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . OArTrLjPgP029wmBrcGnKQYCWfDIRQHgZjgPVvHsCPZK2o/QdTiuCMPPhGGbqu2BESpjrcylHE6PISgFqwYQjJcmivh6AyDKQTQPjgEwdznuxYPIhb4Vu02F5XAGWkfXLKH2BrbDrXDgSAb6mqE0cuoqEvxAYJ1ngmWqUMnFcdI= ;{id = 33655} +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001B026130056363746C640B6166696C6961732D6E737404696E666F00 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS a0.cctld.afilias-nst.info. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001602613102696E0B6166696C6961732D6E737402696E00 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS a1.in.afilias-nst.in. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001802613202696E0B6166696C6961732D6E737404696E666F00 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS a2.in.afilias-nst.info. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001A026230056363746C640B6166696C6961732D6E7374036F726700 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS b0.cctld.afilias-nst.org. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001602623102696E0B6166696C6961732D6E737402696E00 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS b1.in.afilias-nst.in. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001702623202696E0B6166696C6961732D6E7374036F726700 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS b2.in.afilias-nst.org. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001B026330056363746C640B6166696C6961732D6E737404696E666F00 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS c0.cctld.afilias-nst.info. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00000200010002A300001A026430056363746C640B6166696C6961732D6E7374036F726700 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 172800 IN NS d0.cctld.afilias-nst.org. +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00002F000100015180001309E696B0E58AA0E59DA1000006200000000003 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 86400 IN NSEC \230\150\176\229\138\160\229\157\161. NS RRSIG NSEC +15E0AE87E0AEA8E0AF8DE0AEA4E0AEBFE0AEAFE0AEBE00002E0001000151800093002F08010001518052F4220052EAD970837700638887323341B784E78590EB08BE2ABCF30B3CFBD9C13BF9F49F84AF5F783FCEEA36526C59C48552D615F86145C7123768D39FA63053096B84801FFB385CB2178FEC6DE4BA9E3F11915A354F3FD943B9C79B69C1402C510065C3D1CAD52B9DBACEB9121BB3578B637F2F5DFB5DC7D80B8E6DAFF118EA1A78BE347E561C6A3471 +\224\174\135\224\174\168\224\175\141\224\174\164\224\174\191\224\174\175\224\174\190. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y4iHMjNBt4TnhZDrCL4qvPMLPPvZwTv59J+Er194P87qNlJsWcSFUtYV+GFFxxI3aNOfpjBTCWuEgB/7OFyyF4/sbeS6nj8RkVo1Tz/ZQ7nHm2nBQCxRAGXD0crVK526zrkSG7NXi2N/L137XcfYC45tr/EY6hp4vjR+VhxqNHE= ;{id = 33655} +09E696B0E58AA0E59DA100000200010002A3000011036E7332046375686B0365647502686B00 +\230\150\176\229\138\160\229\157\161. 172800 IN NS ns2.cuhk.edu.hk. +09E696B0E58AA0E59DA100000200010002A300001004736563330561706E6963036E657400 +\230\150\176\229\138\160\229\157\161. 172800 IN NS sec3.apnic.net. +09E696B0E58AA0E59DA100000200010002A3000010056473616E790573676E696302736700 +\230\150\176\229\138\160\229\157\161. 172800 IN NS dsany.sgnic.sg. +09E696B0E58AA0E59DA100000200010002A30000170573672D6E7307616E796361737403706368036E657400 +\230\150\176\229\138\160\229\157\161. 172800 IN NS sg-ns.anycast.pch.net. +09E696B0E58AA0E59DA100002F00010001518000160CD981D984D8B3D8B7D98AD986000006200000000003 +\230\150\176\229\138\160\229\157\161. 86400 IN NSEC \217\129\217\132\216\179\216\183\217\138\217\134. NS RRSIG NSEC +09E696B0E58AA0E59DA100002E0001000151800093002F08010001518052F4220052EAD97083770029D87DFBA0771C676A13C72495E0473D5E424ED92891169A673FCC48AC1ABD2CB7B71985F9C9D7FACCC9C4B39683B4BD2B0DC23BFF69C824AA0234D1FB5F5070CD5F957E5B1D0FBDEBB4DF2E8FC1E12DDEA58560DA8281B1AA7252FE48BBE3260089ABDBF16D3574CA674A11480EA2EDF66DAD95A9BB88415B929046F121D2C9 +\230\150\176\229\138\160\229\157\161. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Kdh9+6B3HGdqE8ckleBHPV5CTtkokRaaZz/MSKwavSy3txmF+cnX+szJxLOWg7S9Kw3CO/9pyCSqAjTR+19QcM1flX5bHQ+967TfLo/B4S3epYVg2oKBsapyUv5Iu+MmAImr2/FtNXTKZ0oRSA6i7fZtrZWpu4hBW5KQRvEh0sk= ;{id = 33655} +0CD981D984D8B3D8B7D98AD98600000200010002A300000E0369646E05706E696E6102707300 +\217\129\217\132\216\179\216\183\217\138\217\134. 172800 IN NS idn.pnina.ps. +0CD981D984D8B3D8B7D98AD98600000200010002A300000E036E733105706E696E6102707300 +\217\129\217\132\216\179\216\183\217\138\217\134. 172800 IN NS ns1.pnina.ps. +0CD981D984D8B3D8B7D98AD98600000200010002A300000D04646E733103676F7602707300 +\217\129\217\132\216\179\216\183\217\138\217\134. 172800 IN NS dns1.gov.ps. +0CD981D984D8B3D8B7D98AD98600000200010002A300000D04646E733303676F7602707300 +\217\129\217\132\216\179\216\183\217\138\217\134. 172800 IN NS dns3.gov.ps. +0CD981D984D8B3D8B7D98AD98600002F000100015180001006E694BFE58AA1000006200000000003 +\217\129\217\132\216\179\216\183\217\138\217\134. 86400 IN NSEC \230\148\191\229\138\161. NS RRSIG NSEC +0CD981D984D8B3D8B7D98AD98600002E0001000151800093002F08010001518052F4220052EAD97083770016C8DEE2826448C7F562B41FFC9BCC9B01AD31625817283742426E0999289FDBD109993ABAB1E29671788F0FC507787D2B39A3AC985960E82AC28FBC852BB3F26F5AA7131433D700EFDC6D79A9519A7D8431A8521CD33055675CE61849692622CA9BA791FAD00B28FE3D57C17CDF23465832D3A71D74BF1D88FF1E998C599261 +\217\129\217\132\216\179\216\183\217\138\217\134. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Fsje4oJkSMf1YrQf/JvMmwGtMWJYFyg3QkJuCZkon9vRCZk6urHilnF4jw/FB3h9KzmjrJhZYOgqwo+8hSuz8m9apxMUM9cA79xtealRmn2EMahSHNMwVWdc5hhJaSYiypunkfrQCyj+PVfBfN8jRlgy06cddL8diP8emYxZkmE= ;{id = 33655} +06E694BFE58AA100000200010002A300000E036E733105636F6E616302636E00 +\230\148\191\229\138\161. 172800 IN NS ns1.conac.cn. +06E694BFE58AA100000200010002A300000E036E733205636F6E616302636E00 +\230\148\191\229\138\161. 172800 IN NS ns2.conac.cn. +06E694BFE58AA100000200010002A300000E036E733305636F6E616302636E00 +\230\148\191\229\138\161. 172800 IN NS ns3.conac.cn. +06E694BFE58AA100000200010002A300000E036E733405636F6E616302636E00 +\230\148\191\229\138\161. 172800 IN NS ns4.conac.cn. +06E694BFE58AA100000200010002A300000E036E733505636F6E616302636E00 +\230\148\191\229\138\161. 172800 IN NS ns5.conac.cn. +06E694BFE58AA100002B0001000151800024C8DD08029D673623E84D7E10B2AA5B376A3F617665F8B38EF442E8A7E86F0F18161C7801 +\230\148\191\229\138\161. 86400 IN DS 51421 8 2 9D673623E84D7E10B2AA5B376A3F617665F8B38EF442E8A7E86F0F18161C7801 +06E694BFE58AA100002E0001000151800093002B08010001518052F4220052EAD9708377008CB0AA3B147B9E58C27305A298C02CFD8CE1CCA55204E3A4DF173F51448E7D73A324A1E1E62E5B8294B8776F278E85CA220799CF81EEFE2F9B18FE0FEEF136CF70C98B3C2CA8D54E5767EA9985A5888F77C6BA4B21A9B0947C261BF41BCFA15A359ADD19C6D383117B2CDE1B6E77A5DFCD1F102DF799FE6802A7EB2B28EF61F4 +\230\148\191\229\138\161. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . jLCqOxR7nljCcwWimMAs/YzhzKVSBOOk3xc/UUSOfXOjJKHh5i5bgpS4d28njoXKIgeZz4Hu/i+bGP4P7vE2z3DJizwsqNVOV2fqmYWliI93xrpLIamwlHwmG/Qbz6FaNZrdGcbTgxF7LN4bbnel380fEC33mf5oAqfrKyjvYfQ= ;{id = 33655} +06E694BFE58AA100002E0001000151800093002F08010001518052F4220052EAD9708377007B05C2212C4FE47D7334DC0AA498600E3AF1D3B544CE22F095528B202D1D696B7C71473CCD384B9BF4606EA70CF6A40F154A7F9CEC828D0898DF5A5DFDF60C86F4BEE559ED0567942D08A81F2384DEEA428754B6B08565BC489757C2DE9C54B5DD43D0809F1E7BEB8F49520C081B15707B9BE52E10D9B6AD9DDBC40E3EFAF674 +\230\148\191\229\138\161. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . ewXCISxP5H1zNNwKpJhgDjrx07VEziLwlVKLIC0daWt8cUc8zThLm/RgbqcM9qQPFUp/nOyCjQiY31pd/fYMhvS+5VntBWeULQioHyOE3upCh1S2sIVlvEiXV8LenFS13UPQgJ8ee+uPSVIMCBsVcHub5S4Q2batndvEDj769nQ= ;{id = 33655} +06E694BFE58AA100002F000100015180000D03787878000006200000000013 +\230\148\191\229\138\161. 86400 IN NSEC xxx. NS DS RRSIG NSEC +0378787800000200010002A3000019026130037878780B6166696C6961732D6E737404696E666F00 +xxx. 172800 IN NS a0.xxx.afilias-nst.info. +0378787800000200010002A3000019026132037878780B6166696C6961732D6E737404696E666F00 +xxx. 172800 IN NS a2.xxx.afilias-nst.info. +0378787800000200010002A3000018026230037878780B6166696C6961732D6E7374036F726700 +xxx. 172800 IN NS b0.xxx.afilias-nst.org. +0378787800000200010002A3000018026232037878780B6166696C6961732D6E7374036F726700 +xxx. 172800 IN NS b2.xxx.afilias-nst.org. +0378787800000200010002A3000019026330037878780B6166696C6961732D6E737404696E666F00 +xxx. 172800 IN NS c0.xxx.afilias-nst.info. +0378787800000200010002A3000018026430037878780B6166696C6961732D6E7374036F726700 +xxx. 172800 IN NS d0.xxx.afilias-nst.org. +0378787800002F000100015180000C027965000006200000000003 +xxx. 86400 IN NSEC ye. NS RRSIG NSEC +0378787800002E0001000151800093002F08010001518052F4220052EAD9708377009FBEA4BE5E960846F612AD79CDF4A39233946A4781027BFA7E387FB07C5B2A8B84C93B8D5BF247BC0AEEF5CA04966A2BC5668755411C9917D2016356F571A95A63FB3528F033760BEDABC1B45D2E57D951AFDF400CE1AC58DAD2D5DEADC3106C1F7AA06D64806537566FD5D3270D32DBF8FF2052B725AE204925C29F549F5D21 +xxx. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . n76kvl6WCEb2Eq15zfSjkjOUakeBAnv6fjh/sHxbKouEyTuNW/JHvAru9coElmorxWaHVUEcmRfSAWNW9XGpWmP7NSjwM3YL7avBtF0uV9lRr99ADOGsWNrS1d6twxBsH3qgbWSAZTdWb9XTJw0y2/j/IFK3Ja4gSSXCn1SfXSE= ;{id = 33655} +02796500000200010002A3000012036E73310579656D656E036E657402796500 +ye. 172800 IN NS ns1.yemen.net.ye. +02796500000200010002A3000012036E73320579656D656E036E657402796500 +ye. 172800 IN NS ns2.yemen.net.ye. +02796500000200010002A3000009047361683102796500 +ye. 172800 IN NS sah1.ye. +02796500000200010002A3000009047361683202796500 +ye. 172800 IN NS sah2.ye. +02796500002F000100015180000C027974000006200000000003 +ye. 86400 IN NSEC yt. NS RRSIG NSEC +02796500002E0001000151800093002F08010001518052F4220052EAD970837700AAE6966E71108192AE94F374AD40A755DA3EF470524494D5CB5624028FC4E1A3081CA1438C6A85E753308E16EE8619F79F56BED09E2C95CBC65EC276CDAF190DC889C74E4AAC50A9B2D2ECC3060046F41F85ACA1BC42653AA91FE0260111D9D8B052ED1C7716DF8C0677610A191F5E38C289EBDB9320D33BAEE5E6E9744B5622 +ye. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . quaWbnEQgZKulPN0rUCnVdo+9HBSRJTVy1YkAo/E4aMIHKFDjGqF51Mwjhbuhhn3n1a+0J4slcvGXsJ2za8ZDciJx05KrFCpstLswwYARvQfhayhvEJlOqkf4CYBEdnYsFLtHHcW34wGd2EKGR9eOMKJ69uTINM7ruXm6XRLViI= ;{id = 33655} +036E73310579656D656E036E657402796500000100010002A300000441A2B821 +ns1.yemen.net.ye. 172800 IN A 65.162.184.33 +036E73320579656D656E036E657402796500000100010002A300000441A2B822 +ns2.yemen.net.ye. 172800 IN A 65.162.184.34 +047361683102796500000100010002A3000004C35E0022 +sah1.ye. 172800 IN A 195.94.0.34 +047361683202796500000100010002A3000004C35E0023 +sah2.ye. 172800 IN A 195.94.0.35 +02797400000200010002A300000E016403657874036E696302667200 +yt. 172800 IN NS d.ext.nic.fr. +02797400000200010002A300000A0164036E696302667200 +yt. 172800 IN NS d.nic.fr. +02797400000200010002A300000E016503657874036E696302667200 +yt. 172800 IN NS e.ext.nic.fr. +02797400000200010002A300000E016603657874036E696302667200 +yt. 172800 IN NS f.ext.nic.fr. +02797400000200010002A300000E016703657874036E696302667200 +yt. 172800 IN NS g.ext.nic.fr. +02797400002B0001000151800024475108028109F3831FE1714980A8BD00AC12B56A8F7C2556C6F9FF6C02DAD2785D25B23F +yt. 86400 IN DS 18257 8 2 8109F3831FE1714980A8BD00AC12B56A8F7C2556C6F9FF6C02DAD2785D25B23F +02797400002B0001000151800024C5AA080232C66E2C3E3B541B84AB453F7E6E9F12603586422ABD2FAFE3053574A417A403 +yt. 86400 IN DS 50602 8 2 32C66E2C3E3B541B84AB453F7E6E9F12603586422ABD2FAFE3053574A417A403 +02797400002E0001000151800093002B08010001518052F4220052EAD9708377001B62459B5B354059C401F4783F20AC3659D10EC46166FD3381888F68111D4DC95EA3FC1650191AF3A84398953F946E08FEB3957803745283561C3AEDE174EEC0148D89F60F2FF184D11D5AEA9ACA2B2D62781E0A49FA91012F349FE653F6C1456FCDB775C127414F430957A7314486EE9DF81CE37A5851A9D7A3AA82F1061E6B +yt. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . G2JFm1s1QFnEAfR4PyCsNlnRDsRhZv0zgYiPaBEdTcleo/wWUBka86hDmJU/lG4I/rOVeAN0UoNWHDrt4XTuwBSNifYPL/GE0R1a6prKKy1ieB4KSfqRAS80n+ZT9sFFb823dcEnQU9DCVenMUSG7p34HON6WFGp16OqgvEGHms= ;{id = 33655} +02797400002E0001000151800093002F08010001518052F4220052EAD97083770066CCF61372285E727F62F87D714A72625F215CF0C53A9787BB49E382F0BA4799363DAC699AACF1C4A921E789B95FDF0DAF9CA43283367DC240374AD9C7BD0E8AE9B394FC7292303C5CB49A26BD8993BBFE0A3C9910DC206B4DFAD728077EC485C0F8CC0A38A96F73D93BC0B7D8D1948163A7EF8C4AC71515E8D1F432ECC740AF +yt. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Zsz2E3IoXnJ/Yvh9cUpyYl8hXPDFOpeHu0njgvC6R5k2PaxpmqzxxKkh54m5X98Nr5ykMoM2fcJAN0rZx70OiumzlPxykjA8XLSaJr2Jk7v+CjyZENwga0361ygHfsSFwPjMCjipb3PZO8C32NGUgWOn74xKxxUV6NH0MuzHQK8= ;{id = 33655} +02797400002F000100015180000C027A61000006200000000013 +yt. 86400 IN NSEC za. NS DS RRSIG NSEC +027A6100002F000100015180000C027A6D000006200000000003 +za. 86400 IN NSEC zm. NS RRSIG NSEC +027A6100002E0001000151800093002F08010001518052F4220052EAD97083770063F831FBCCFBE79E01291AE1A0A697BE9EDDE85354E9468BAEC2FCB39FF5AC9C78D6818B4862B6B3AB84DF925384208E6865CE78CB57E536C5678A75A86D195C2CBCAB794A2D325C0E4536712B3BF20529423D3C0201C81CF2C6C26EF9638DD23FB7F81ADA98D9C9172DF5BD75A84AE91422737DFEA4B4607199BE90CAF5402D +za. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Y/gx+8z7554BKRrhoKaXvp7d6FNU6UaLrsL8s5/1rJx41oGLSGK2s6uE35JThCCOaGXOeMtX5TbFZ4p1qG0ZXCy8q3lKLTJcDkU2cSs78gUpQj08AgHIHPLGwm75Y43SP7f4GtqY2ckXLfW9dahK6RQic33+pLRgcZm+kMr1QC0= ;{id = 33655} +027A6100000200010002A3000011037A613107646E736E6F6465036E657400 +za. 172800 IN NS za1.dnsnode.net. +027A6100000200010002A300001204646973610574656E6574026163027A6100 +za. 172800 IN NS disa.tenet.ac.za. +027A6100000200010002A300000F046E737A6102697302636F027A6100 +za. 172800 IN NS nsza.is.co.za. +027A6100000200010002A3000017057A612D6E7307616E796361737403706368036E657400 +za. 172800 IN NS za-ns.anycast.pch.net. +027A6100000200010002A300001006736E732D706203697363036F726700 +za. 172800 IN NS sns-pb.isc.org. +05686970706F027275026163027A6100000100010002A300000492E78001 +hippo.ru.ac.za. 172800 IN A 146.231.128.1 +05686970706F027275026163027A6100001C00010002A300001020014200101000000000000000000001 +hippo.ru.ac.za. 172800 IN AAAA 2001:4200:1010::1 +04646973610574656E6574026163027A6100000100010002A3000004C4154F32 +disa.tenet.ac.za. 172800 IN A 196.21.79.50 +04646973610574656E6574026163027A6100001C00010002A300001020014200FFFF000A0000000000000001 +disa.tenet.ac.za. 172800 IN AAAA 2001:4200:ffff:a::1 +046E737A6102697302636F027A6100000100010002A3000004C404A01B +nsza.is.co.za. 172800 IN A 196.4.160.27 +036E733104636F7A61036E6574027A6100000100010002A300000442873E14 +ns1.coza.net.za. 172800 IN A 66.135.62.20 +027A6D00000200010002A300000F036E7331067A616D6E6574027A6D00 +zm. 172800 IN NS ns1.zamnet.zm. +027A6D00000200010002A3000012036E733109636F707065726E6574027A6D00 +zm. 172800 IN NS ns1.coppernet.zm. +027A6D00000200010002A300000F036E7332067A616D6E6574027A6D00 +zm. 172800 IN NS ns2.zamnet.zm. +027A6D00000200010002A300001005686970706F027275026163027A6100 +zm. 172800 IN NS hippo.ru.ac.za. +027A6D00000200010002A3000013056E732D7A6D07616672696E6963036E657400 +zm. 172800 IN NS ns-zm.afrinic.net. +027A6D00002F000100015180000E047A6F6E65000006200000000003 +zm. 86400 IN NSEC zone. NS RRSIG NSEC +027A6D00002E0001000151800093002F08010001518052F4220052EAD9708377007E9634F0A9FDE509B9D017ECFF4A5DA612C0893D799E2380EE6EBDCC239116E344B99CBA3750827620E349DF994B7ED8D172DD5A6A224ABA17E34C1F380BA25183E548029D3E4F6D411ECC6361CC9E51C8B19E3390F32273D74DE371C9B403519CB1028625AA28EE09C13B85618E4E8A52AA1A41BD2E824219DE3441365EB43D +zm. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . fpY08Kn95Qm50Bfs/0pdphLAiT15niOA7m69zCORFuNEuZy6N1CCdiDjSd+ZS37Y0XLdWmoiSroX40wfOAuiUYPlSAKdPk9tQR7MY2HMnlHIsZ4zkPMic9dN43HJtANRnLEChiWqKO4JwTuFYY5OilKqGkG9LoJCGd40QTZetD0= ;{id = 33655} +036E733109636F707065726E6574027A6D00000100010002A300000429DEF00F +ns1.coppernet.zm. 172800 IN A 41.222.240.15 +036E7331067A616D6E6574027A6D00000100010002A3000004C42EC01A +ns1.zamnet.zm. 172800 IN A 196.46.192.26 +036E7332067A616D6E6574027A6D00000100010002A3000004C42EC015 +ns2.zamnet.zm. 172800 IN A 196.46.192.21 +047A6F6E6500000200010002A300001B0664656D616E64046265746106617269646E73036E657402617500 +zone. 172800 IN NS demand.beta.aridns.net.au. +047A6F6E6500000200010002A300001C0664656D616E6405616C70686106617269646E73036E657402617500 +zone. 172800 IN NS demand.alpha.aridns.net.au. +047A6F6E6500000200010002A300001C0664656D616E640564656C746106617269646E73036E657402617500 +zone. 172800 IN NS demand.delta.aridns.net.au. +047A6F6E6500000200010002A300001C0664656D616E640567616D6D6106617269646E73036E657402617500 +zone. 172800 IN NS demand.gamma.aridns.net.au. +047A6F6E6500002F000100015180000C027A77000006200000000013 +zone. 86400 IN NSEC zw. NS DS RRSIG NSEC +047A6F6E6500002E0001000151800093002F08010001518052F4220052EAD97083770056D1A7BE64475C9387D43B05A6E20D0A4F7DD5C7299262334EA325B620C3E68DE53CF0A1087D4E8719A758FD2C7812295945C0FC19301EEDDD510639F6E1E0241CD46A859B4C0CA35FD06D8CE789FCF73967BAB069BCF8D10BF6FAAF0B7B9E94E42D344218037027A090A066B49608DBE72024B2E580AC8C086541E5C24D965C +zone. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . VtGnvmRHXJOH1DsFpuINCk991ccpkmIzTqMltiDD5o3lPPChCH1OhxmnWP0seBIpWUXA/BkwHu3dUQY59uHgJBzUaoWbTAyjX9BtjOeJ/Pc5Z7qwabz40Qv2+q8Le56U5C00QhgDcCegkKBmtJYI2+cgJLLlgKyMCGVB5cJNllw= ;{id = 33655} +047A6F6E6500002E0001000151800093002B08010001518052F4220052EAD9708377002E50B50CEEFAAE1F20120697B21FBFDBE609AE4825FEA4CF28FE6EBD000C7DF678E9AF09CB6D232BFC580541D7BA260C38F58C28F3FDF8BAEA3013C2890B42DA03C18958CB7E9CA3BCAD5D5358D55D33473B2FB115ECEEB281D7504C975AC097B67A30512B65EF3A64EB47CC2A5401B8B2AA97E3F658B6D6389B22FC2CE27DCF +zone. 86400 IN RRSIG DS 8 1 86400 20140207000000 20140130230000 33655 . LlC1DO76rh8gEgaXsh+/2+YJrkgl/qTPKP5uvQAMffZ46a8Jy20jK/xYBUHXuiYMOPWMKPP9+LrqMBPCiQtC2gPBiVjLfpyjvK1dU1jVXTNHOy+xFezusoHXUEyXWsCXtnowUStl7zpk60fMKlQBuLKql+P2WLbWOJsi/Czifc8= ;{id = 33655} +047A6F6E6500002B0001000151800024BD010802118C38D7EAFE8361DBA4C1BF929EAE5DFE8F3D0DEF61369478458CD942E14B46 +zone. 86400 IN DS 48385 8 2 118C38D7EAFE8361DBA4C1BF929EAE5DFE8F3D0DEF61369478458CD942E14B46 +027A7700000200010002A3000012036E73310674656C6F6E6502636F027A7700 +zw. 172800 IN NS ns1.telone.co.zw. +027A7700000200010002A300000D036E733203676970036E657400 +zw. 172800 IN NS ns2.gip.net. +027A7700000200010002A3000012036E73320674656C6F6E6502636F027A7700 +zw. 172800 IN NS ns2.telone.co.zw. +027A7700000200010002A3000010056E732D7A770472697065036E657400 +zw. 172800 IN NS ns-zw.ripe.net. +027A7700000200010002A30000140A6E6577732D746F6B796F03676970036E657400 +zw. 172800 IN NS news-tokyo.gip.net. +027A7700002F0001000151800009000006200000000003 +zw. 86400 IN NSEC . NS RRSIG NSEC +027A7700002E0001000151800093002F08010001518052F4220052EAD97083770056EBDD97847282FED99888619BCA0F98C1490049883C41C2133E2556B2018CF2DB3B94250C4DCAF5AF3B7B3863F79F80C281ACF9BE94712324B3C5D626FE855D409147316EFD50FCB1CAF4137253500DDECFBA6F8727F9FCB69535B1781B9E9FF26012A3BCCBF31989EBD8AD4ED03FB34AFA3F413BEB5B29536352E346D6E1FC +zw. 86400 IN RRSIG NSEC 8 1 86400 20140207000000 20140130230000 33655 . Vuvdl4Rygv7ZmIhhm8oPmMFJAEmIPEHCEz4lVrIBjPLbO5QlDE3K9a87ezhj95+AwoGs+b6UcSMks8XWJv6FXUCRRzFu/VD8scr0E3JTUA3ez7pvhyf5/LaVNbF4G56f8mASo7zL8xmJ69itTtA/s0r6P0E761spU2NS40bW4fw= ;{id = 33655} +036E73310674656C6F6E6502636F027A7700000100010002A3000004C2857A2F +ns1.telone.co.zw. 172800 IN A 194.133.122.47 +036E73320674656C6F6E6502636F027A7700000100010002A3000004C2857A2A +ns2.telone.co.zw. 172800 IN A 194.133.122.42 +000006000100015180004001610C726F6F742D73657276657273036E657400056E73746C640C766572697369676E2D67727303636F6D00780B66AC000007080000038400093A8000015180 +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014013100 1800 900 604800 86400 diff --git a/external/unbound/testdata/test_ldnsrr.c2 b/external/unbound/testdata/test_ldnsrr.c2 new file mode 100644 index 0000000..787f2d2 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.c2 @@ -0,0 +1,2860 @@ +096E6C6E65746C616273026E6C0000060001000027D80040046F70656E096E6C6E65746C616273026E6C000A686F73746D6173746572096E6C6E65746C616273026E6C00780B651C0000708000001C2000093A8000000E10 +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2014012700 28800 7200 604800 3600 +096E6C6E65746C616273026E6C00002E0001000027D800A000060802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00CFCD73ECF3E2B7AA6068571895DCAADF49CEE5E6259DA10D9E59AA5FFE94D396F96DFD3DC86006A92EA3B35020DC8BA6C39F236EB23BB3A2A425020F57A51C4F856A3BF816694F17E0847649D81415D5143481B81175F318708A91BF7D599DEB477A2DC4966045346E8129094204CBF4527CE05F616B61642C0BDAAAD1020B3C +nlnetlabs.nl. 10200 IN RRSIG SOA 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. z81z7PPit6pgaFcYldyq30nO5eYlnaENnlmqX/6U05b5bf09yGAGqS6js1Ag3Iumw58jbrI7s6KkJQIPV6UcT4VqO/gWaU8X4IR2SdgUFdUUNIG4EXXzGHCKkb99WZ3rR3otxJZgRTRugSkJQgTL9FJ84F9ha2FkLAvaqtECCzw= ;{id = 42393} +096E6C6E65746C616273026E6C00002E0001000027D800A000010802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0089C78682C0498CF17271717C166FA6E900C89F7519B283E56D8241C7353D6440314773D0423B7777BF5DA55596CD032FED232EB57CB8F4A967CE9C3A8FCD5E508B991C94F60297E2A225FE06F93B19D5A89C3144B30FA834E4EC716B415D74924B2E2BD5EEF59602C8D7E3251F6F5E1AAE0C9B207D48B90A8E20561ECC5AE540 +nlnetlabs.nl. 10200 IN RRSIG A 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. iceGgsBJjPFycXF8Fm+m6QDIn3UZsoPlbYJBxzU9ZEAxR3PQQjt3d79dpVWWzQMv7SMutXy49Klnzpw6j81eUIuZHJT2ApfioiX+Bvk7GdWonDFEsw+oNOTscWtBXXSSSy4r1e71lgLI1+MlH29eGq4MmyB9SLkKjiBWHsxa5UA= ;{id = 42393} +096E6C6E65746C616273026E6C00002E0001000027D800A000020802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C002AEB82616A77DD63AFFC583D2E5605E8FDE2FDF2F46DFB79FBB726582C4163400F1C6A46B9828F2012D261AB45C1A5DA260A4B712DBA42BBD7601F4367CDD58AC221E952C6DE619BEACC2A09B61C163AC9C4860842AC84715617C9CF6D690490F9234018640C23F414371A80575A6E85E41AF237B990CC96310F6873007516AE +nlnetlabs.nl. 10200 IN RRSIG NS 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. KuuCYWp33WOv/Fg9LlYF6P3i/fL0bft5+7cmWCxBY0APHGpGuYKPIBLSYatFwaXaJgpLcS26QrvXYB9DZ83VisIh6VLG3mGb6swqCbYcFjrJxIYIQqyEcVYXyc9taQSQ+SNAGGQMI/QUNxqAV1puheQa8je5kMyWMQ9ocwB1Fq4= ;{id = 42393} +096E6C6E65746C616273026E6C00002E0001000027D800A0000F0802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00966F5EE1643D0FC2E15B9CF3B4389D0E88E6FE5D689B626CE73C5B6D844D8FC6A1BF797F08BDC3FBE1BC54F5C295471F806EFED5C322D20FC0E05AA37588547D3B3EC5B280C03CC294FD117FECDE5AD9857EFF60AFFA5262434E8D66E295CEDD7D1244EC5BE5E386601C319D37ADA3C0E223FCF65FD204C9C7CA81BAECC5CA2F +nlnetlabs.nl. 10200 IN RRSIG MX 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. lm9e4WQ9D8LhW5zztDidDojm/l1om2Js5zxbbYRNj8ahv3l/CL3D++G8VPXClUcfgG7+1cMi0g/A4FqjdYhUfTs+xbKAwDzClP0Rf+zeWtmFfv9gr/pSYkNOjWbilc7dfRJE7Fvl44ZgHDGdN62jwOIj/PZf0gTJx8qBuuzFyi8= ;{id = 42393} +096E6C6E65746C616273026E6C00002E0001000027D800A000100802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C006B78D29F1F68AC32AD8605B10A1C8720397B9CA3C3C187A1515A6B32CE458B10CEE607CE72A1A61263F42AD4796598870FAC7C9CABEA735BFD6427F294644767FB989987701CE890141C6AE61A7D85996A697059B75B811C815FF7868C5B73C6A0CEDDEC746F9B22AD206213578A6A187722F63E332401B18222307033E867D0 +nlnetlabs.nl. 10200 IN RRSIG TXT 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. a3jSnx9orDKthgWxChyHIDl7nKPDwYehUVprMs5FixDO5gfOcqGmEmP0KtR5ZZiHD6x8nKvqc1v9ZCfylGRHZ/uYmYdwHOiQFBxq5hp9hZlqaXBZt1uBHIFf94aMW3PGoM7d7HRvmyKtIGITV4pqGHci9j4zJAGxgiIwcDPoZ9A= ;{id = 42393} +096E6C6E65746C616273026E6C00002E0001000027D800A0001C0802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C009F0B78F2F603869479CF8D31CE9700B257F1A98577F40B9F9F0294F3DAE5CDC9F99F3C1A089241BAE9DD7D5819A988901EB5C65B1E18E8EAF69EA1043C79FD1DEDE353B76389C681468EA3C1EE49797D1EC08C75E7FF61DFE74FBDEBF94C702D5736C29866152EED0BC08E824FA98C0F56538C4082BC24569116840F3C15AD5A +nlnetlabs.nl. 10200 IN RRSIG AAAA 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. nwt48vYDhpR5z40xzpcAslfxqYV39AufnwKU89rlzcn5nzwaCJJBuundfVgZqYiQHrXGWx4Y6Or2nqEEPHn9He3jU7djicaBRo6jwe5JeX0ewIx15/9h3+dPvev5THAtVzbCmGYVLu0LwI6CT6mMD1ZTjECCvCRWkRaEDzwVrVo= ;{id = 42393} +096E6C6E65746C616273026E6C00002E00010000025800A00023080200000258530B29F452E63FF4A599096E6C6E65746C616273026E6C0029AFE9F3104D2AE2307B18CE1B5CE5816BBA46DCBDBEC8C39CF25BFB4CB7FD0E1DC766D1BB56A234F14F68FA23C6726513CFFFA3093CA51A837BE54A3F8C0AEE1E9ABFC65CC4A5A28B00E7D2577AB80385A4C24863E42BAD7A441843329E0E907B1151B2560D5D0BA214542036D7F9E5205923914A5530F6E0555D4528F4E9A0 +nlnetlabs.nl. 600 IN RRSIG NAPTR 8 2 600 20140224111604 20140127111604 42393 nlnetlabs.nl. Ka/p8xBNKuIwexjOG1zlgWu6Rty9vsjDnPJb+0y3/Q4dx2bRu1aiNPFPaPojxnJlE8//owk8pRqDe+VKP4wK7h6av8ZcxKWiiwDn0ld6uAOFpMJIY+QrrXpEGEMyng6QexFRslYNXQuiFFQgNtf55SBZI5FKVTD24FVdRSj06aA= ;{id = 42393} +096E6C6E65746C616273026E6C00002E000100000E1001200030080200000E10530B29F452E63FF4C5AA096E6C6E65746C616273026E6C00ACC5B5F66A3C2BCC2735935AE83F3498F51FFB8D8432428ECD2F454AA611BFF113C17038B63B50B3E60B307AAA736BC6036CB654B63EE402F2B26A24F7AF49677208D797D25E5BB0CD9D23C28A255C80DCE8FF45B9B5DCF43749B624917E454A716C743F8F19E173C6ADBD32435E0E1D7B1C4A97D643B25353E57AE5DC823ADDA659AAF3DAF134F941345599411ED53A50DB4DDA5CBF6A1DB480AB5AA8F1908E3E680A52CDCD969BB3803C97E93AB3A1E323150799C11B4B79340BE2909C2A21E963BCFC4C9A39FFCE4D03B8529B452D98F52B11AC76A911289CA2F57CBAF053EF8FC6FB00E64797B09FFCCA26AE8E4BA886BDB59A4F07A1D7EE803DED00915B +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 2 3600 20140224111604 20140127111604 50602 nlnetlabs.nl. rMW19mo8K8wnNZNa6D80mPUf+42EMkKOzS9FSqYRv/ETwXA4tjtQs+YLMHqqc2vGA2y2VLY+5ALysmok969JZ3II15fSXluwzZ0jwoolXIDc6P9FubXc9DdJtiSRfkVKcWx0P48Z4XPGrb0yQ14OHXscSpfWQ7JTU+V65dyCOt2mWarz2vE0+UE0VZlBHtU6UNtN2ly/ah20gKtaqPGQjj5oClLNzZabs4A8l+k6s6HjIxUHmcEbS3k0C+KQnCoh6WO8/EyaOf/OTQO4UptFLZj1KxGsdqkRKJyi9Xy68FPvj8b7AOZHl7Cf/Momro5LqIa9tZpPB6HX7oA97QCRWw== ;{id = 50602} +096E6C6E65746C616273026E6C00002E0001000027D800A000630802000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00838E2EA6EDAF2D45D92A5AD660D87B991833226F2053391D146B3F3D8FDA134088BA74F30D51DF9A422845D97383CF3B95A0A4348D32C30439640BF899C2E5C883F71AC4247AD95A21A36B3875ECFD9A4BDB50D664C75F7197D353CB4886482549D5A3765ADF319D6CAF717970A550163A71E76001F201CE857007B4A5B4F9F7 +nlnetlabs.nl. 10200 IN RRSIG SPF 8 2 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. g44upu2vLUXZKlrWYNh7mRgzIm8gUzkdFGs/PY/aE0CIunTzDVHfmkIoRdlzg887laCkNI0ywwQ5ZAv4mcLlyIP3GsQketlaIaNrOHXs/ZpL21DWZMdfcZfTU8tIhkglSdWjdlrfMZ1sr3F5cKVQFjpx52AB8gHOhXAHtKW0+fc= ;{id = 42393} +096E6C6E65746C616273026E6C00002E000100000E1000A0002F080200000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C0068A1BBDBDA37669917BF6FB7A36306D8C3A2448D6B1B83465323A730849D88AC6AC813EA2827B9570EDC623BC54690E7EA69E9EC3188C2D04308B7B35FA6B035E39DA91AC742AA54C3E076F7002AC601192FE76032BFDDDAA8BF86DB176FCC39EAB1980B58873DFAC64D5549CAC14A856E59821B094FC4487D2BA08DD57A10C8 +nlnetlabs.nl. 3600 IN RRSIG NSEC 8 2 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. aKG729o3ZpkXv2+3o2MG2MOiRI1rG4NGUyOnMISdiKxqyBPqKCe5Vw7cYjvFRpDn6mnp7DGIwtBDCLezX6awNeOdqRrHQqpUw+B29wAqxgEZL+dgMr/d2qi/htsXb8w56rGYC1iHPfrGTVVJysFKhW5ZghsJT8RIfSugjdV6EMg= ;{id = 42393} +096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +nlnetlabs.nl. 10200 IN A 213.154.224.1 +096E6C6E65746C616273026E6C0000020001000027D80013046F70656E096E6C6E65746C616273026E6C00 +nlnetlabs.nl. 10200 IN NS open.nlnetlabs.nl. +096E6C6E65746C616273026E6C0000020001000027D80010056D63766178056E6C6E6574026E6C00 +nlnetlabs.nl. 10200 IN NS mcvax.nlnet.nl. +096E6C6E65746C616273026E6C0000020001000027D80011076E732D65787431047369646E026E6C00 +nlnetlabs.nl. 10200 IN NS ns-ext1.sidn.nl. +096E6C6E65746C616273026E6C00000F0001000027D800150032046F70656E096E6C6E65746C616273026E6C00 +nlnetlabs.nl. 10200 IN MX 50 open.nlnetlabs.nl. +096E6C6E65746C616273026E6C00000F0001000027D80012005A056D63766178056E6C6E6574026E6C00 +nlnetlabs.nl. 10200 IN MX 90 mcvax.nlnet.nl. +096E6C6E65746C616273026E6C0000100001000027D8001A19537469636874696E67204E4C6E6574204C616273207A6F6E65 +nlnetlabs.nl. 10200 IN TXT "Stichting NLnet Labs zone" +096E6C6E65746C616273026E6C0000100001000027D8003534763D73706631206970343A3231332E3135342E3232342E302F3234206970363A323030313A3762383A3230363A313A3A302F3634 +nlnetlabs.nl. 10200 IN TXT "v=spf1 ip4:213.154.224.0/24 ip6:2001:7b8:206:1::0/64" +096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +096E6C6E65746C616273026E6C0000230001000002580027001400000173075349502B44325500045F736970045F756470096E6C6E65746C616273026E6C00 +nlnetlabs.nl. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.nlnetlabs.nl. +096E6C6E65746C616273026E6C000030000100000E1000880100030803010001D47B5D1F7939A00DF51CFB4DBB4F6A543D82E424EF37F14C760D2A1B22C13640F73F85D7A9C3D15781964EDD362937113A53D862C0C2BF6C9ED1BCF7C270BAB0837B7E77C073EF8D9B4C09D893569DDC442AE3B8212FA05A6664D37CD87D20687FF8BFC9A4BFF4010C09034A77188F3FC5A87280798CB770C72363A4725707A1 +nlnetlabs.nl. 3600 IN DNSKEY 256 3 8 AwEAAdR7XR95OaAN9Rz7TbtPalQ9guQk7zfxTHYNKhsiwTZA9z+F16nD0VeBlk7dNik3ETpT2GLAwr9sntG898JwurCDe353wHPvjZtMCdiTVp3cRCrjuCEvoFpmZNN82H0gaH/4v8mkv/QBDAkDSncYjz/FqHKAeYy3cMcjY6RyVweh ;{id = 42393 (zsk), size = 1024b} +096E6C6E65746C616273026E6C000030000100000E1001080101030803010001BC0BE8BB974CB5ED6F6DC2B17869931C7219B1055113A1FCBF01580D44105F0B750E119AC8F80F90FCB809D114390D84CE9788823DC5CB1ABF00463701F1CD46A28F831942ED6FAF371F18824B702D50A5A666487F56A8860541C8BE4F8B3851F0EBAD2F7AC0EFC7D2726F1666AF5955FFEE9D50E9DBF402BC335CC5DA1C6AD155D1202B63034B7745467831E490B97F00FB627C07D3C100A05463740A177BE7AD38078668E4FD2068D53392CA90DDA4E9F211BD9DA5F5EBB9FE8FA1E4BFA4A4345C6A95B64222F6D6109C9B0A56E742E57F1F4EBE4F8CED3063A78893ED373C80BCD166BDB82E65C4C8005BE78596DDAA05E64F0364FA2DF688148F154DFDD3 +nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbwL6LuXTLXtb23CsXhpkxxyGbEFUROh/L8BWA1EEF8LdQ4Rmsj4D5D8uAnRFDkNhM6XiII9xcsavwBGNwHxzUaij4MZQu1vrzcfGIJLcC1QpaZmSH9WqIYFQci+T4s4UfDrrS96wO/H0nJvFmavWVX/7p1Q6dv0ArwzXMXaHGrRVdEgK2MDS3dFRngx5JC5fwD7YnwH08EAoFRjdAoXe+etOAeGaOT9IGjVM5LKkN2k6fIRvZ2l9eu5/o+h5L+kpDRcapW2QiL21hCcmwpW50Llfx9Ovk+M7TBjp4iT7Tc8gLzRZr24LmXEyABb54WW3aoF5k8DZPot9ogUjxVN/dM= ;{id = 50602 (ksk), size = 2048b} +096E6C6E65746C616273026E6C0000630001000027D8003534763D73706631206970343A3231332E3135342E3232342E302F3234206970363A323030313A3762383A3230363A313A3A302F3634 +nlnetlabs.nl. 10200 IN SPF "v=spf1 ip4:213.154.224.0/24 ip6:2001:7b8:206:1::0/64" +096E6C6E65746C616273026E6C00002F000100000E10002406366761746532096E6C6E65746C616273026E6C00000D62018008100380000000000010 +nlnetlabs.nl. 3600 IN NSEC 6gate2.nlnetlabs.nl. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY SPF +06366761746532096E6C6E65746C616273026E6C0000010001000027D80004D59AE033 +6gate2.nlnetlabs.nl. 10200 IN A 213.154.224.51 +06366761746532096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00B8DC31A1093D71D00AC7B69C5E81005C7C4937FED4EC17FDE30F797C29F6435B62E5621BF491016490FA713D6E42A89E21266028E69ED5962EB4FC25A4683F9DFF5A1D6874A5F96D86EDF68C8DD84C71AA44FFF07C644F0BD83DBAA8ED57B3B2B6267B7AAC6966330D961DB68404CC1956905C2B40F197076E42653395BB5807 +6gate2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. uNwxoQk9cdAKx7acXoEAXHxJN/7U7Bf94w95fCn2Q1ti5WIb9JEBZJD6cT1uQqieISZgKOae1ZYutPwlpGg/nf9aHWh0pflthu32jI3YTHGqRP/wfGRPC9g9uqjtV7OytiZ7eqxpZjMNlh22hATMGVaQXCtA8ZcHbkJlM5W7WAc= ;{id = 42393} +06366761746532096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0072F41734B426E97C6CA62373D6CCA7544B31998B4DEEAFAF73D2A0B5DC30BE1D71FF5389411D100708D32AC8FAFCAE7FD7B3D6785D3002D10CC80B132C712EF429F7C591094CEA9F84318F50AD6244150396F44C646A0A7ED1ABA985CCEA0F06883E280AC9AC2559E803F04680D115E6EBC74E6D0A5E14D45AFD00E73310F775 +6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. cvQXNLQm6XxspiNz1synVEsxmYtN7q+vc9Kgtdwwvh1x/1OJQR0QBwjTKsj6/K5/17PWeF0wAtEMyAsTLHEu9Cn3xZEJTOqfhDGPUK1iRBUDlvRMZGoKftGrqYXM6g8GiD4oCsmsJVnoA/BGgNEV5uvHTm0KXhTUWv0A5zMQ93U= ;{id = 42393} +06366761746532096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00867F9A22A29C40E0A6E9D6172869DA5989DBA2D07699C6FA9020217D2266C36178A3F0A85B350B380B2F804C24463F8FD50C8A7E14F03956ABECCBE50957852FF87C25198E80B3BB73D0AA090549208B61189FF6EEFBCEB0C4519CA4A16B4BAD1945F98B2A27349DC782782354359C178C5D46F0DF21D4B4F081EC66CA3A3F53 +6gate2.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. hn+aIqKcQOCm6dYXKGnaWYnbotB2mcb6kCAhfSJmw2F4o/CoWzULOAsvgEwkRj+P1QyKfhTwOVar7MvlCVeFL/h8JRmOgLO7c9CqCQVJIIthGJ/27vvOsMRRnKSha0utGUX5iyonNJ3HgngjVDWcF4xdRvDfIdS08IHsZso6P1M= ;{id = 42393} +06366761746532096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C003A6A0CB16DE6D70F475B45CCD5CAB0886829D32D2EBA93860B460474A5AA1315957E703A48C623645419D28240FA2936B5335C7F0C78C96963FBCF90D4411505001FB3270A52AB2A7B9F2DED0C9FFE90B3D9E1B429321E9092892ED374F10D1948991D325C344244736B75CAE37CC530DCACF11FF5C5FC0BB639C0F00B7E182A +6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. OmoMsW3m1w9HW0XM1cqwiGgp0y0uupOGC0YEdKWqExWVfnA6SMYjZFQZ0oJA+ik2tTNcfwx4yWlj+8+Q1EEVBQAfsycKUqsqe58t7Qyf/pCz2eG0KTIekJKJLtN08Q0ZSJkdMlw0QkRza3XK43zFMNys8R/1xfwLtjnA8At+GCo= ;{id = 42393} +06366761746532096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000051 +6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::51 +06366761746532096E6C6E65746C616273026E6C00002C0001000027D800160101E3397141AE97D1D685F2BD9130EC1A06434533FD +6gate2.nlnetlabs.nl. 10200 IN SSHFP 1 1 E3397141AE97D1D685F2BD9130EC1A06434533FD +06366761746532096E6C6E65746C616273026E6C00002C0001000027D8001602014FAA8F69C8CB5DFAA8BE9D1D197C01984DDED163 +6gate2.nlnetlabs.nl. 10200 IN SSHFP 2 1 4FAA8F69C8CB5DFAA8BE9D1D197C01984DDED163 +06366761746532096E6C6E65746C616273026E6C00002F000100000E1000210362677006366761746532096E6C6E65746C616273026E6C00000640000008000B +6gate2.nlnetlabs.nl. 3600 IN NSEC bgp.6gate2.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0362677006366761746532096E6C6E65746C616273026E6C00001C0001000027D80010200107B8004000010000000000000013 +bgp.6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1::13 +0362677006366761746532096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00CCC98911F74FBEFE5A1B316BCFB71102BA372CA053FB6FAC3BB6B1E9380255E130B5130A391B352B7E4FCEAF701F531BC906F1F964F77A7E73908162B59A36D0C44A0A52EEE8A6FD4A145C926AEBD16629C12F33EF373CF579FB83C7171EE72D5F145718D5D1982E50A6098C8E43714688FB90729CE97D53AC12798FA721B981 +bgp.6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. zMmJEfdPvv5aGzFrz7cRAro3LKBT+2+sO7ax6TgCVeEwtRMKORs1K35Pzq9wH1MbyQbx+WT3en5zkIFitZo20MRKClLu6Kb9ShRckmrr0WYpwS8z7zc89Xn7g8cXHuctXxRXGNXRmC5QpgmMjkNxRoj7kHKc6X1TrBJ5j6chuYE= ;{id = 42393} +0362677006366761746532096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00CD1D1CAB2B09034AE754A286EC31C4158B7988A786E633BE87328D9B7AE90A8045C2252F41D002545F8870A259D8DBF2ACCE6F88EE8D3F9DC6A64E58CB6E3F5980F6659187C35F4EE27C35EA26106F5AC73ADCFE8DAD52C555D1C216F0894D1094380FF8C743EC6670E23A81B64FA7FFA324506FB171BDEF38B196B3440C263F +bgp.6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. zR0cqysJA0rnVKKG7DHEFYt5iKeG5jO+hzKNm3rpCoBFwiUvQdACVF+IcKJZ2NvyrM5viO6NP53Gpk5Yy24/WYD2ZZGHw19O4nw16iYQb1rHOtz+ja1SxVXRwhbwiU0QlDgP+MdD7GZw4jqBtk+n/6MkUG+xcb3vOLGWs0QMJj8= ;{id = 42393} +0362677006366761746532096E6C6E65746C616273026E6C00002F000100000E1000220472696E6706366761746532096E6C6E65746C616273026E6C000006000000080003 +bgp.6gate2.nlnetlabs.nl. 3600 IN NSEC ring.6gate2.nlnetlabs.nl. AAAA RRSIG NSEC +0472696E6706366761746532096E6C6E65746C616273026E6C00001C0001000027D800102001067C14C000000000000000000001 +ring.6gate2.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0::1 +0472696E6706366761746532096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0032E637512745AF05A2735F7B8B89913AE73CD4FE195C3C8EF69C4EA6D51125714E14A13D0BC39FBD1CF996B01335D50F53324B01CBD329693E2764C39533B3B10F5BE4AB242081F3D77C84C8BF94F2B6890154719559A9C0EAAAD15B93D51CF15FE49C5F687136CC6C897CFA944BCF60BA2E68D35C4BAF526E493C732B941B50 +ring.6gate2.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. MuY3USdFrwWic197i4mROuc81P4ZXDyO9pxOptURJXFOFKE9C8OfvRz5lrATNdUPUzJLAcvTKWk+J2TDlTOzsQ9b5KskIIHz13yEyL+U8raJAVRxlVmpwOqq0VuT1RzxX+ScX2hxNsxsiXz6lEvPYLouaNNcS69Sbkk8cyuUG1A= ;{id = 42393} +0472696E6706366761746532096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00172462601BC85F49B1BFA73AF7A9539460656C3E8010786C2041A33EA9EB449F7D49323B3CB6E72256247113595BD00E1575BF3916334CDC20A5652C1BCD4596C9D7B41708AA5C44222531B48424BDFA54F4E26C2E3B4475642D41746B4F2CDA2D5FE3972A335B4041AD73D8D9E8C3BBA07A68CCB8B9DAD924E06308BEEBBD28 +ring.6gate2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. FyRiYBvIX0mxv6c696lTlGBlbD6AEHhsIEGjPqnrRJ99STI7PLbnIlYkcRNZW9AOFXW/ORYzTNwgpWUsG81FlsnXtBcIqlxEIiUxtIQkvfpU9OJsLjtEdWQtQXRrTyzaLV/jlyozW0BBrXPY2ejDu6B6aMy4udrZJOBjCL7rvSg= ;{id = 42393} +0472696E6706366761746532096E6C6E65746C616273026E6C00002F000100000E10001C05366F6E6C79096E6C6E65746C616273026E6C000006000000080003 +ring.6gate2.nlnetlabs.nl. 3600 IN NSEC 6only.nlnetlabs.nl. AAAA RRSIG NSEC +05366F6E6C79096E6C6E65746C616273026E6C00000F0001000027D8001B000A046D61696C05366F6E6C79096E6C6E65746C616273026E6C00 +6only.nlnetlabs.nl. 10200 IN MX 10 mail.6only.nlnetlabs.nl. +05366F6E6C79096E6C6E65746C616273026E6C00002E0001000027D800A0000F0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00D3E660BC52481874B1C424EB99B5C03BC099F54902DCB010F774A5377BE0A0353694F267817D1F57229603E0FF7B8AD96E09692222349E69D4177C0F10569D3E7EF9063001064E9CFA215F7B217F4E3C49BEA2B0D068369FFEBC9E3DA02195BC6E11FAD7D5C69E9A650B59FB849A417B680E49CA303AF93772F034BD469DE35F +6only.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. 0+ZgvFJIGHSxxCTrmbXAO8CZ9UkC3LAQ93SlN3vgoDU2lPJngX0fVyKWA+D/e4rZbglpIiI0nmnUF3wPEFadPn75BjABBk6c+iFfeyF/TjxJvqKw0Gg2n/68nj2gIZW8bhH619XGnpplC1n7hJpBe2gOScowOvk3cvA0vUad418= ;{id = 42393} +05366F6E6C79096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C0022A75A8F291441079219937416A376716597A91B18EED2C8C940B47BE94C7B271D7FD80ED118BAE2524F2F5DAF5D69FBDF260F9D22F1FCD37FC95032C10E9B9BB89363DBA326605BCAF8535DA869D5EB9B6FFE1503BFD4E361495E3E5C1AECF41EE6AC88E97C2DDA0FCD6E3A1FDC962FACD67FE67B20FC72E71A4264B1B4B6B9 +6only.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. IqdajykUQQeSGZN0FqN2cWWXqRsY7tLIyUC0e+lMeycdf9gO0Ri64lJPL12vXWn73yYPnSLx/NN/yVAywQ6bm7iTY9ujJmBbyvhTXahp1eubb/4VA7/U42FJXj5cGuz0HuasiOl8LdoPzW46H9yWL6zWf+Z7IPxy5xpCZLG0trk= ;{id = 42393} +05366F6E6C79096E6C6E65746C616273026E6C00002F000100000E100021046D61696C05366F6E6C79096E6C6E65746C616273026E6C000006000100000003 +6only.nlnetlabs.nl. 3600 IN NSEC mail.6only.nlnetlabs.nl. MX RRSIG NSEC +046D61696C05366F6E6C79096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +mail.6only.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +046D61696C05366F6E6C79096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00AFE5C98425F3FB8BA2A2339B8A3C574C7B37EBB252982A86D889237BF97931D439D3500EBAEDB4E73D74A6AD7C6D33B639D4DECFA0DF9B056252A7AAA2F26C51714DD0E5110143F254CE0D1FF2DA9E22A77082D67B4627A7351876314A309449533C65799985C910DC74718849DF7BA813EB498BF81C512393353856DE35E3FC +mail.6only.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. r+XJhCXz+4uiojObijxXTHs367JSmCqG2Ikje/l5MdQ501AOuu205z10pq18bTO2OdTez6DfmwViUqeqovJsUXFN0OURAUPyVM4NH/LaniKncILWe0YnpzUYdjFKMJRJUzxleZmFyRDcdHGISd97qBPrSYv4HFEjkzU4Vt414/w= ;{id = 42393} +046D61696C05366F6E6C79096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C006694A485639388C1397129063436A15A91197B8D8C8303CA96AB201761A7694E3EC05802A8D03E99A7BA8E71624D32AB4F5A5B810F1778A05D4FC91C256BC9DB53DAF106E6E8BBA89E457FE9FCFD5BE214F746DA53CBF762BA48B95A5077505DF98C2C5EEF3CA851E1EC6325F92DB6ED9A9A1A06BE02462F7717D7295889EAAC +mail.6only.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. ZpSkhWOTiME5cSkGNDahWpEZe42MgwPKlqsgF2GnaU4+wFgCqNA+mae6jnFiTTKrT1pbgQ8XeKBdT8kcJWvJ21Pa8Qbm6LuonkV/6fz9W+IU90baU8v3YrpIuVpQd1Bd+YwsXu88qFHh7GMl+S227ZqaGga+AkYvdxfXKViJ6qw= ;{id = 42393} +046D61696C05366F6E6C79096E6C6E65746C616273026E6C00002F000100000E100022013001310131055F64616E65096E6C6E65746C616273026E6C000006000000080003 +mail.6only.nlnetlabs.nl. 3600 IN NSEC 0.1.1._dane.nlnetlabs.nl. AAAA RRSIG NSEC +013001310131055F64616E65096E6C6E65746C616273026E6C0000340001000027D800230001016F2851409D710504A35115ABCB9A6DD3F2577EC937C9EF1938926FA82FD6FF5D +0.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 0 1 1 6F2851409D710504A35115ABCB9A6DD3F2577EC937C9EF1938926FA82FD6FF5D +013001310131055F64616E65096E6C6E65746C616273026E6C00002E0001000027D800A000340806000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0003308A6858B0001F161794556A505F8061402174D2091D06AA7DAB91CD63E10C6F1024A84B24EABEE35C7F9C32A7941BA58B64B5612DE832808FC32418CB894BC75B0D2ADB76E4DB5CC86DCC0BED984AC818A3A81EF05554A52E15A3683A5576AAAF304F65E3AC557FB34527A23592C807FA017DF3F0A2CD25B09A0644FBEFA3 +0.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. AzCKaFiwAB8WF5RValBfgGFAIXTSCR0Gqn2rkc1j4QxvECSoSyTqvuNcf5wyp5QbpYtktWEt6DKAj8MkGMuJS8dbDSrbduTbXMhtzAvtmErIGKOoHvBVVKUuFaNoOlV2qq8wT2XjrFV/s0UnojWSyAf6AX3z8KLNJbCaBkT776M= ;{id = 42393} +013001310131055F64616E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080600000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C003E02AA93447DAC074233A9976F6CEBBA672C3E8AA855A4DB82197AAB34D82367FD2A88385F624E9D90960C0F824B314B54455F03D1DCF8F46EF8DC4FBA67D386F570D0A14CB64E3451E91653293EBEC4AC8CA691067B3D051B8088806E41A5029005020FCBED8CE316FBE1AA8B85B90FAA7FB75D53D21795DE5D3CAB3249791D +0.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. PgKqk0R9rAdCM6mXb2zrumcsPoqoVaTbghl6qzTYI2f9Kog4X2JOnZCWDA+CSzFLVEVfA9Hc+PRu+NxPumfThvVw0KFMtk40UekWUyk+vsSsjKaRBns9BRuAiIBuQaUCkAUCD8vtjOMW++Gqi4W5D6p/t11T0heV3l08qzJJeR0= ;{id = 42393} +013001310131055F64616E65096E6C6E65746C616273026E6C00002F000100000E100023013101310131055F64616E65096E6C6E65746C616273026E6C00000700000000000308 +0.1.1._dane.nlnetlabs.nl. 3600 IN NSEC 1.1.1._dane.nlnetlabs.nl. RRSIG NSEC TLSA +013101310131055F64616E65096E6C6E65746C616273026E6C0000340001000027D800230101010D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD6B9305F6 +1.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 1 1 1 0D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD6B9305F6 +013101310131055F64616E65096E6C6E65746C616273026E6C00002E0001000027D800A000340806000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C001558C595FCCCC0F0BD4C87B6924747318B8D0F87D3E75FA796EEA45F6E159F7778A50D6EDFA7DE23543172E9354DDD04BECA76D9CA9082C5DE04599BFC8CCDBD6199A9FBEDF69537B998CEAF7A35462E67D5E6BF6B2D15E76EC58EE23498C4C56B732EE9B82E9A119F04A1A365C7B76DB06E55C2DB7EF0D0C29E8F2BB9B3402D +1.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. FVjFlfzMwPC9TIe2kkdHMYuND4fT51+nlu6kX24Vn3d4pQ1u36feI1Qxcuk1Td0Evsp22cqQgsXeBFmb/IzNvWGZqfvt9pU3uZjOr3o1Ri5n1ea/ay0V527FjuI0mMTFa3Mu6bgumhGfBKGjZce3bbBuVcLbfvDQwp6PK7mzQC0= ;{id = 42393} +013101310131055F64616E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080600000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00BE7B9B30AE90E25EB4CE0B7E13DA01FBA32900794402840B30DCE70953E95E8B6E01F0AC3E44A1A8FCCBC2D10D1344D0EB275D82398F5CC9711BA79E5C3745CA5C46EE0215900D03E518B996E2578DDAAA705D4D093166F3F471D46476D3F2CF6EAC8CB41DA5DCEE1C150F1274AE3632C7CADA9624D42F2DBB2BF250BD5C6381 +1.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. vnubMK6Q4l60zgt+E9oB+6MpAHlEAoQLMNznCVPpXotuAfCsPkShqPzLwtENE0TQ6yddgjmPXMlxG6eeXDdFylxG7gIVkA0D5Ri5luJXjdqqcF1NCTFm8/Rx1GR20/LPbqyMtB2l3O4cFQ8SdK42MsfK2pYk1C8tuyvyUL1cY4E= ;{id = 42393} +013101310131055F64616E65096E6C6E65746C616273026E6C00002F000100000E100023013301310131055F64616E65096E6C6E65746C616273026E6C00000700000000000308 +1.1.1._dane.nlnetlabs.nl. 3600 IN NSEC 3.1.1._dane.nlnetlabs.nl. RRSIG NSEC TLSA +013301310131055F64616E65096E6C6E65746C616273026E6C0000340001000027D800230301010D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD6B9305F6 +3.1.1._dane.nlnetlabs.nl. 10200 IN TLSA 3 1 1 0D1FCBD71686199607A132744A4918FC209565C91FA8E9FFEEA0AAFD6B9305F6 +013301310131055F64616E65096E6C6E65746C616273026E6C00002E0001000027D800A000340806000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C001485C1926DE0AC4AA3690DB02B1FBADD0D56FA1D37A6F2A19297202D79355F0FABB393152F0321982D7C90839A60EFA5ECBF3C6B8C951705D2A81B1C5B071F973DD721FADF679A571780AE8079DAA3643C3FB5DAE97693B166ED3D07143B20126F2BCE156A771AADBDD92F065DCFED61098FD793CF4917C1CF916C070D5CD392 +3.1.1._dane.nlnetlabs.nl. 10200 IN RRSIG TLSA 8 6 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. FIXBkm3grEqjaQ2wKx+63Q1W+h03pvKhkpcgLXk1Xw+rs5MVLwMhmC18kIOaYO+l7L88a4yVFwXSqBscWwcflz3XIfrfZ5pXF4CugHnao2Q8P7Xa6XaTsWbtPQcUOyASbyvOFWp3Gq292S8GXc/tYQmP15PPSRfBz5FsBw1c05I= ;{id = 42393} +013301310131055F64616E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080600000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00103514E63FCAAAB7BF781CD2748DE69D2E1FFB561435D25E101186D237DEBFE0ECA7FEC0F49FA53E4EDF975A2A7BC8AB241416BB5F9636FB9E44AF515A84A02186FA3B973C4B2A31B0FE97F59DE31446D048568C28947A2E350AFB7F6F0EE4080343CA96C69F3F59959DADCEAA44647209F058744AF46E4FDDFA135A9118C1BA +3.1.1._dane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 6 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. EDUU5j/Kqre/eBzSdI3mnS4f+1YUNdJeEBGG0jfev+Dsp/7A9J+lPk7fl1oqe8irJBQWu1+WNvueRK9RWoSgIYb6O5c8SyoxsP6X9Z3jFEbQSFaMKJR6LjUK+39vDuQIA0PKlsafP1mVna3OqkRkcgnwWHRK9G5P3foTWpEYwbo= ;{id = 42393} +013301310131055F64616E65096E6C6E65746C616273026E6C00002F000100000E10001E065F646D617263096E6C6E65746C616273026E6C00000700000000000308 +3.1.1._dane.nlnetlabs.nl. 3600 IN NSEC _dmarc.nlnetlabs.nl. RRSIG NSEC TLSA +065F646D617263096E6C6E65746C616273026E6C0000100001000027D800441B763D444D415243313B20703D6E6F6E653B2073703D6E6F6E653B2000267275613D6D61696C746F3A646D6172632D666565646261636B406E6C6E65746C6162732E6E6C +_dmarc.nlnetlabs.nl. 10200 IN TXT "v=DMARC1; p=none; sp=none; " "" "rua=mailto:dmarc-feedback@nlnetlabs.nl" +065F646D617263096E6C6E65746C616273026E6C00002E0001000027D800A000100803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C003E36E9A606C6B7BE314B6424A413FE7873CAF49DBD2E01A1EBBC810756DF9AF8445A74BBE316162D297CB7C533D6A364D96BC2384B845D42C554E29C74D200D02E6F412F2D292CD537BEFA8E256BE7BA014EFF241232F11BF5FF8819AA5F0A3901DE80A601DE679F360146C59B24756B6E6E07EFFD430F687706D675EAB58362 +_dmarc.nlnetlabs.nl. 10200 IN RRSIG TXT 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. PjbppgbGt74xS2QkpBP+eHPK9J29LgGh67yBB1bfmvhEWnS74xYWLSl8t8Uz1qNk2WvCOEuEXULFVOKcdNIA0C5vQS8tKSzVN776jiVr57oBTv8kEjLxG/X/iBmqXwo5Ad6ApgHeZ582AUbFmyR1a25uB+/9Qw9odwbWdeq1g2I= ;{id = 42393} +065F646D617263096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00B777FFB6B3289DAD3BDE8820FAC2E4ED0D14060B8C7BDBA68501DAFBCFB3DF023C99A641DAA502C523F6747DFF695217C85F547AA6B3025FE78DFEEF15EC28391423BCA4DD2B903A714F86D3DF5C46341E523A0BC8EF35B3719CBAFB6CADB7A21D4F0179DC7333FFC7492618740A623DD8A7708D44FC9619455EDF36030B7ECB +_dmarc.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. t3f/trMona073ogg+sLk7Q0UBguMe9umhQHa+8+z3wI8maZB2qUCxSP2dH3/aVIXyF9UeqazAl/njf7vFewoORQjvKTdK5A6cU+G099cRjQeUjoLyO81s3GcuvtsrbeiHU8BedxzM//HSSYYdApiPdincI1E/JYZRV7fNgMLfss= ;{id = 42393} +065F646D617263096E6C6E65746C616273026E6C00002F000100000E1000290764656661756C740A5F646F6D61696E6B6579096E6C6E65746C616273026E6C000006000080000003 +_dmarc.nlnetlabs.nl. 3600 IN NSEC default._domainkey.nlnetlabs.nl. TXT RRSIG NSEC +0764656661756C740A5F646F6D61696E6B6579096E6C6E65746C616273026E6C0000100001000027D8010327763D444B494D313B20723D706F73746D61737465723B20673D2A3B206B3D7273613B20743D793BDA703D4D4947664D413047435371475349623344514542415155414134474E4144434269514B426751444F42786B496C4E736B31665668554F38665A7336714A56362F5A4645736C74564975544844556E316451584F53716F303453434F586975526773467A784B4B414F715A4B6B736A4564787A634749375549616B66797A4845656F4165654A437249516F59334E63544F6D365A34616B355832345838645049693230373559774641486977454C7468746777747276557057723655304B426D456558747951346E6B2B2B48523261734A4951494441514142 +default._domainkey.nlnetlabs.nl. 10200 IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; t=y;" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOBxkIlNsk1fVhUO8fZs6qJV6/ZFEsltVIuTHDUn1dQXOSqo04SCOXiuRgsFzxKKAOqZKksjEdxzcGI7UIakfyzHEeoAeeJCrIQoY3NcTOm6Z4ak5X24X8dPIi2075YwFAHiwELthtgwtrvUpWr6U0KBmEeXtyQ4nk++HR2asJIQIDAQAB" +0764656661756C740A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002E0001000027D800A000100804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C009E787A15F0E1C28118026E5FF5BE5E56D1E5D78ABC1016FE1069A2671041510578F712E3228B927850635538C90EEE99BEB867C51E9A4C34751863A12AB68447B7644F074DE9219242D3281116F60D14C62FDEEDA0095A5AD612978C84D5808F31A8FFB62C43AF7D84295B5B882F27CCFAC3220DF077699AFFE2D308BE71B37F +default._domainkey.nlnetlabs.nl. 10200 IN RRSIG TXT 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. nnh6FfDhwoEYAm5f9b5eVtHl14q8EBb+EGmiZxBBUQV49xLjIouSeFBjVTjJDu6ZvrhnxR6aTDR1GGOhKraER7dkTwdN6SGSQtMoERb2DRTGL97toAlaWtYSl4yE1YCPMaj/tixDr32EKVtbiC8nzPrDIg3wd2ma/+LTCL5xs38= ;{id = 42393} +0764656661756C740A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C0010CFDECC6BEF54FAE3C0D338237384093AA41BA297DF8BBD64D290B6209D0C30A8EA68EF18B10063395AB12B041712F2E2D3C140D27627F8914F322D34A25B8A9E5FEEBBDA81FA0A5C96DC1D5A291FB7A1F678C174B5AF4EB16A529BAB3E8CA35368F00A2739EDD65F4A7D27FF53FC6C5F2DE4C79C797ACA87AE471085E70502 +default._domainkey.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. EM/ezGvvVPrjwNM4I3OECTqkG6KX34u9ZNKQtiCdDDCo6mjvGLEAYzlasSsEFxLy4tPBQNJ2J/iRTzItNKJbip5f7rvagfoKXJbcHVopH7eh9njBdLWvTrFqUpurPoyjU2jwCic57dZfSn0n/1P8bF8t5MeceXrKh65HEIXnBQI= ;{id = 42393} +0764656661756C740A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002F000100000E10002907736C657574656C0A5F646F6D61696E6B6579096E6C6E65746C616273026E6C000006000080000003 +default._domainkey.nlnetlabs.nl. 3600 IN NSEC sleutel._domainkey.nlnetlabs.nl. TXT RRSIG NSEC +07736C657574656C0A5F646F6D61696E6B6579096E6C6E65746C616273026E6C0000100001000027D8010F28763D444B494D313B20723D706F73746D61737465723B20673D2A3B206B3D7273613B20743D793B20002A703D4D4947664D413047435371475349623344514542415155414134474E4144434269514B4267514379002A656C7574386D54612F724368672F6933774B58745165422F7837355365755733656E58426B3968324662002A625253487155352B4D774B762B6A6F61584E6756494B4A4F7748454D3961776146362B49753768764F63002A5A4B42656E5A6159726A52414C7576626C53363171653863694243353056712B4E733858754133676D4D002A55735A417448585455776C4466476634595177437267534C624A6E7A48464F304A4853686F447943423800085251494441514142 +sleutel._domainkey.nlnetlabs.nl. 10200 IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; t=y; " "" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCy" "" "elut8mTa/rChg/i3wKXtQeB/x75SeuW3enXBk9h2Fb" "" "bRSHqU5+MwKv+joaXNgVIKJOwHEM9awaF6+Iu7hvOc" "" "ZKBenZaYrjRALuvblS61qe8ciBC50Vq+Ns8XuA3gmM" "" "UsZAtHXTUwlDfGf4YQwCrgSLbJnzHFO0JHShoDyCB8" "" "RQIDAQAB" +07736C657574656C0A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002E0001000027D800A000100804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00CD72F65153618545AE6BBABEC97899011506E649289EC4F74642E9AF45F052DF9B2ACE7DD43BEE9E983D1B37E5DFB8B49787E0E5BC4D38700D134D55D9DC6A9D2FE134103D694597569578900A53B04AF10F352F45DCDB27C574E7C2F03A0EE9BA71C74446F1C5624E8A2B1FE9A91AC99C64879173ED46E263A8ECDFDF340447 +sleutel._domainkey.nlnetlabs.nl. 10200 IN RRSIG TXT 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. zXL2UVNhhUWua7q+yXiZARUG5kkonsT3RkLpr0XwUt+bKs591Dvunpg9Gzfl37i0l4fg5bxNOHANE01V2dxqnS/hNBA9aUWXVpV4kApTsErxDzUvRdzbJ8V058LwOg7punHHREbxxWJOiisf6akayZxkh5Fz7UbiY6js3980BEc= ;{id = 42393} +07736C657574656C0A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C000D88E0A15ED0750196FEBC1B34AAAEC8B6C3E7AC0FE5AF177EE60D5EBB9F64EEEEBD943D87AC08B80F7F01743E681AD416F0E2C4011D6EE06D6060A8BB7EFF1572D8E7AEF06BDAFC25472A6413C8D163EEEB57C2EAADB8A4AF2F89FAAC769870A211E774DFF330610BB809A28508833F88B4C3AE4D638C3632040771597913A1 +sleutel._domainkey.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. DYjgoV7QdQGW/rwbNKquyLbD56wP5a8XfuYNXrufZO7uvZQ9h6wIuA9/AXQ+aBrUFvDixAEdbuBtYGCou37/FXLY567wa9r8JUcqZBPI0WPu61fC6q24pK8vifqsdphwohHndN/zMGELuAmihQiDP4i0w65NY4w2MgQHcVl5E6E= ;{id = 42393} +07736C657574656C0A5F646F6D61696E6B6579096E6C6E65746C616273026E6C00002F000100000E100020046F6C6166045F706B61096E6C6E65746C616273026E6C000006000080000003 +sleutel._domainkey.nlnetlabs.nl. 3600 IN NSEC olaf._pka.nlnetlabs.nl. TXT RRSIG NSEC +046F6C6166045F706B61096E6C6E65746C616273026E6C0000100001000005DC006A69763D706B616C3B6670723D364645373333364538393742414434383236414134323630423444464443364237363039323238373B7572693D687474703A2F2F7777772E6E6C6E65746C6162732E6E6C2F7E6F6C61662F6B6F6C6B6D616E2E7067702E7075622E617363 +olaf._pka.nlnetlabs.nl. 1500 IN TXT "v=pkal;fpr=6FE7336E897BAD4826AA4260B4DFDC6B76092287;uri=http://www.nlnetlabs.nl/~olaf/kolkman.pgp.pub.asc" +046F6C6166045F706B61096E6C6E65746C616273026E6C00002E0001000005DC00A000100804000005DC530B29F452E63FF4A599096E6C6E65746C616273026E6C000E3DB9AC055CEC9B555F057A712B6D298CF09435752F772C0B5CE2EE443D8A071A219F690C3D20299F0979E4F0F287D0114E0642A7D81668846C04BED83BFD5AE60D6CB928820405BADD1FCD63428049DB61B031076B83B844D0987B81DA8B11BB0ED11B8ED3A8F5EBF72E61391486BA9AED1825A4698CDC706F1A01657CB643 +olaf._pka.nlnetlabs.nl. 1500 IN RRSIG TXT 8 4 1500 20140224111604 20140127111604 42393 nlnetlabs.nl. Dj25rAVc7JtVXwV6cSttKYzwlDV1L3csC1zi7kQ9igcaIZ9pDD0gKZ8JeeTw8ofQEU4GQqfYFmiEbAS+2Dv9WuYNbLkoggQFut0fzWNCgEnbYbAxB2uDuETQmHuB2osRuw7RG47TqPXr9y5hORSGuprtGCWkaYzccG8aAWV8tkM= ;{id = 42393} +046F6C6166045F706B61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C009CAF9BC9C74DA74E7383511D0FA53FF446F2DD3F43DFF9476C30066C4C0B5AAC8C42A9B641E57B0979C00E1A755C13004CC4446ACBA9C734AD97C21E7C381BEFCBF19615795812CD1FD382AC5644DFFA1E7AC85475F7D58E3E18B8806FB4C217945854A075482F45715CBEF59BA4DAC73A78BBA494B10521650594E5FC63608F +olaf._pka.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. nK+bycdNp05zg1EdD6U/9Eby3T9D3/lHbDAGbEwLWqyMQqm2QeV7CXnADhp1XBMATMREasupxzStl8IefDgb78vxlhV5WBLNH9OCrFZE3/oeeshUdffVjj4YuIBvtMIXlFhUoHVIL0VxXL71m6Taxzp4u6SUsQUhZQWU5fxjYI8= ;{id = 42393} +046F6C6166045F706B61096E6C6E65746C616273026E6C00002F000100000E1000220677696C6C656D045F706B61096E6C6E65746C616273026E6C000006000080000003 +olaf._pka.nlnetlabs.nl. 3600 IN NSEC willem._pka.nlnetlabs.nl. TXT RRSIG NSEC +0677696C6C656D045F706B61096E6C6E65746C616273026E6C0000100001000005DC006B6A763D706B616C3B6670723D444333344545354442323431374243433135314535313030453546384638323132463737413439383B7572693D687474703A2F2F7777772E6E6C6E65746C6162732E6E6C2F7E77696C6C656D2F746F6F726F702E7067702E7075622E617363 +willem._pka.nlnetlabs.nl. 1500 IN TXT "v=pkal;fpr=DC34EE5DB2417BCC151E5100E5F8F8212F77A498;uri=http://www.nlnetlabs.nl/~willem/toorop.pgp.pub.asc" +0677696C6C656D045F706B61096E6C6E65746C616273026E6C00002E0001000005DC00A000100804000005DC530B29F452E63FF4A599096E6C6E65746C616273026E6C0036AFB2112BE2CDB8822FD7003DCB53E9550FB2BCBC1740927B88BF2EE99EB76728B6E0D014EDE6F187AF62F0B316A57D058B29587D6386ADF561ACC54D30522C780D6D2F62766E967DAE6368E6357E7AB7A5F8C790B20C2D35BAB9C1C58364F752C2B316A4137645DCE09E1A0E89E677C8E873728F30F83A7A4E23F920BA2C49 +willem._pka.nlnetlabs.nl. 1500 IN RRSIG TXT 8 4 1500 20140224111604 20140127111604 42393 nlnetlabs.nl. Nq+yESvizbiCL9cAPctT6VUPsry8F0CSe4i/Lumet2cotuDQFO3m8YevYvCzFqV9BYspWH1jhq31YazFTTBSLHgNbS9idm6Wfa5jaOY1fnq3pfjHkLIMLTW6ucHFg2T3UsKzFqQTdkXc4J4aDonmd8joc3KPMPg6ek4j+SC6LEk= ;{id = 42393} +0677696C6C656D045F706B61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C005505EDB5A37306F692B0565585E6F03FB76E981639D216E852AA27B09BD1C1D48D9E402F8427A1FA11F0D74A58FF6A6D0BC017A0FC3EC682937B7371B3AF3C2B0BFD829D17BC0529969C09EC60A7CDBF9C1D3CBB9374DF256ABEB2C7ACCCBDFD6D5ACDD10A9344D81EF896FDE2226BBC459075760703676672E2FF42938ECBB2 +willem._pka.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. VQXttaNzBvaSsFZVhebwP7dumBY50hboUqonsJvRwdSNnkAvhCeh+hHw10pY/2ptC8AXoPw+xoKTe3Nxs688Kwv9gp0XvAUplpwJ7GCnzb+cHTy7k3TfJWq+sseszL39bVrN0QqTRNge+Jb94iJrvEWQdXYHA2dmcuL/QpOOy7I= ;{id = 42393} +0677696C6C656D045F706B61096E6C6E65746C616273026E6C00002F000100000E10001F035F3235045F746370096E6C6E65746C616273026E6C000006000080000003 +willem._pka.nlnetlabs.nl. 3600 IN NSEC _25._tcp.nlnetlabs.nl. TXT RRSIG NSEC +035F3235045F746370096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_25._tcp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +035F3235045F746370096E6C6E65746C616273026E6C00002E0001000027D800A000050804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00078F9E316CE93E8241FB697AB1B996124BDE4920304D4D65D2AA248F0A3A51E8198E814B485F31F3B4FF0D806BC191E5128B3B35A2730B128CEC0DD77D38AB45FA01332FE3C8AA03B7F4EBC03EA6E714ADAAB8CF951E15D77BF70BD77C2E1C35D7963349ED3B15DC65937C6EB4CC57816E798DDEFF1222D98DFF1A1C7B9DA4F4 +_25._tcp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. B4+eMWzpPoJB+2l6sbmWEkveSSAwTU1l0qokjwo6UegZjoFLSF8x87T/DYBrwZHlEos7NaJzCxKM7A3XfTirRfoBMy/jyKoDt/TrwD6m5xStqrjPlR4V13v3C9d8Lhw115YzSe07Fdxlk3xutMxXgW55jd7/EiLZjf8aHHudpPQ= ;{id = 42393} +035F3235045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00481C46323BFD9568BD4B79D6A876EBEE4E9CB96BB2550F9ED580E8D26FC55066FD9B3BE867DDE8C7648DCCF04F0F01F9D6F05F5BA89955C90877200B77E7801F27CA6EFCC287F7BD2BAD7AD0D6BE8FF81DDFB81CED9D43B37C715DA2C13528B484AB75DD2BCA437CB9759BCB895DCE953A6AA3DD5CBD4D209E122C9589464E40 +_25._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. SBxGMjv9lWi9S3nWqHbr7k6cuWuyVQ+e1YDo0m/FUGb9mzvoZ93ox2SNzPBPDwH51vBfW6iZVckIdyALd+eAHyfKbvzCh/e9K6160Na+j/gd37gc7Z1Ds3xxXaLBNSi0hKt13SvKQ3y5dZvLiV3OlTpqo91cvU0gnhIslYlGTkA= ;{id = 42393} +035F3235045F746370096E6C6E65746C616273026E6C00002F000100000E100020045F343433045F746370096E6C6E65746C616273026E6C000006040000000003 +_25._tcp.nlnetlabs.nl. 3600 IN NSEC _443._tcp.nlnetlabs.nl. CNAME RRSIG NSEC +045F343433045F746370096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F746370096E6C6E65746C616273026E6C00002E0001000027D800A000050804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00B0B2D9D0BC9BCE38FCA85CE7646E9CAD77615873D53D3DF27735A19C333517E401AE84DEF45944EE32A09C4E9E00CD2D92955C5934D7675DA9E29A80A6E5545DC9C623B8B2B025790C28F139C528C4D7E3C296C880BF589732015F652EA73C33DFC057F7A2543DCD5559C1B69535BD99C4C87D0456A433AE1D10E421EF7497DE +_443._tcp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. sLLZ0Lybzjj8qFznZG6crXdhWHPVPT3ydzWhnDM1F+QBroTe9FlE7jKgnE6eAM0tkpVcWTTXZ12p4pqApuVUXcnGI7iysCV5DCjxOcUoxNfjwpbIgL9YlzIBX2Uupzwz38BX96JUPc1VWcG2lTW9mcTIfQRWpDOuHRDkIe90l94= ;{id = 42393} +045F343433045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C0057AEAE02BDDEC0E24992C9C7D2729192B62FE258D03F5844BBCE812C85966CD4F808EB94D48878A3761B602F61B31A4E42B48FAD48CBB1CE523C2385C6B80AEF54D206B92227054C561970898C68892215BCFE490E5A0076BF6C88C229AF4434BCBF855EC5D00B506DEF5D72D0B97BD5405C6EAA9B3B8B704C06384B19F3EBEB +_443._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. V66uAr3ewOJJksnH0nKRkrYv4ljQP1hEu86BLIWWbNT4COuU1Ih4o3YbYC9hsxpOQrSPrUjLsc5SPCOFxrgK71TSBrkiJwVMVhlwiYxoiSIVvP5JDloAdr9siMIpr0Q0vL+FXsXQC1Bt711y0Ll71UBcbqqbO4twTAY4Sxnz6+s= ;{id = 42393} +045F343433045F746370096E6C6E65746C616273026E6C00002F000100000E100023075F63616C646176045F746370096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.nlnetlabs.nl. 3600 IN NSEC _caldav._tcp.nlnetlabs.nl. CNAME RRSIG NSEC +075F63616C646176045F746370096E6C6E65746C616273026E6C0000210001000027D80019000000001F48046963616C096E6C6E65746C616273026E6C00 +_caldav._tcp.nlnetlabs.nl. 10200 IN SRV 0 0 8008 ical.nlnetlabs.nl. +075F63616C646176045F746370096E6C6E65746C616273026E6C00002E0001000027D800A000210804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00399FE5BDDF06F69BBC7EDF833E48B68C4C72E740C2265D91F111E93CC09E9B6088C3C2F861AFC88363271876D03068DD8582EF320F0F7E7B80F45997FC5DE814F4BB992635F9BD1D8AB35A423A323293646067E9A5F5B0259C6CF67E8CBBD0BB5AFC63BBAF321C3ED3B2700C26C718D408258C460ADA5EA2CC6E8E0B646D97A2 +_caldav._tcp.nlnetlabs.nl. 10200 IN RRSIG SRV 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. OZ/lvd8G9pu8ft+DPki2jExy50DCJl2R8RHpPMCem2CIw8L4Ya/Ig2MnGHbQMGjdhYLvMg8PfnuA9FmX/F3oFPS7mSY1+b0dirNaQjoyMpNkYGfppfWwJZxs9n6Mu9C7Wvxju68yHD7TsnAMJscY1AgljEYK2l6izG6OC2Rtl6I= ;{id = 42393} +075F63616C646176045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C003625134D294A036899783B4B746147F090C1A334ECDDB4F8CDA172BE9E17F8EF1F913DDCE0FC402CDD5BAED7A3EA02C678C7C9735941A5F4242334846C9BCF2192CC58D21D5E81E64EF805EDFC02F182C97A5C96C0B9181692C0D1F4A9C7EC36F796DDB840F5A0FA753FC049694355447774850A191C6DE16D8DE98B6367BFEB +_caldav._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. NiUTTSlKA2iZeDtLdGFH8JDBozTs3bT4zaFyvp4X+O8fkT3c4PxALN1brtej6gLGeMfJc1lBpfQkIzSEbJvPIZLMWNIdXoHmTvgF7fwC8YLJelyWwLkYFpLA0fSpx+w295bduED1oPp1P8BJaUNVRHd0hQoZHG3hbY3pi2Nnv+s= ;{id = 42393} +075F63616C646176045F746370096E6C6E65746C616273026E6C00002F000100000E100024085F63616C64617673045F746370096E6C6E65746C616273026E6C000006000000004003 +_caldav._tcp.nlnetlabs.nl. 3600 IN NSEC _caldavs._tcp.nlnetlabs.nl. SRV RRSIG NSEC +085F63616C64617673045F746370096E6C6E65746C616273026E6C0000210001000027D800190000000020FB046963616C096E6C6E65746C616273026E6C00 +_caldavs._tcp.nlnetlabs.nl. 10200 IN SRV 0 0 8443 ical.nlnetlabs.nl. +085F63616C64617673045F746370096E6C6E65746C616273026E6C00002E0001000027D800A000210804000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0096F87F88A6E938E55E608D94848F340C762E58C5701D66CB16E16D1F378428E77B301C58DB9AB8F665856338FC44AD740B8E9819E1D3B33A97290A4E70736BD5E07AA986EEE8915540239AF9D8ABD08EAD77ECA10DBE3D97AFF9639DFE28C2C97DCD41D69D6132226C024DE578E1B87874D97B6D3D291ADE485F5FAF078F1C72 +_caldavs._tcp.nlnetlabs.nl. 10200 IN RRSIG SRV 8 4 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. lvh/iKbpOOVeYI2UhI80DHYuWMVwHWbLFuFtHzeEKOd7MBxY25q49mWFYzj8RK10C46YGeHTszqXKQpOcHNr1eB6qYbu6JFVQCOa+dir0I6td+yhDb49l6/5Y53+KMLJfc1B1p1hMiJsAk3leOG4eHTZe209KRreSF9frwePHHI= ;{id = 42393} +085F63616C64617673045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C0065B3EB35B340B369F33642938DCEA08C7DEE75B4A04D27752F6ED29B6AF85600F2485E3E43D04C9891AF5E305BDA69A3A2BCA70C3DA60A0E6AFC48FF32B68708EE69910231093330A25B7BA7649B2C29048DFBC6B1F6CC09E1386F609FBEFE1074C4AF984B2730EA60E209450037ED4E39FCEE2A411C73E446C714A7FE99F698 +_caldavs._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. ZbPrNbNAs2nzNkKTjc6gjH3udbSgTSd1L27Sm2r4VgDySF4+Q9BMmJGvXjBb2mmjorynDD2mCg5q/Ej/MraHCO5pkQIxCTMwolt7p2SbLCkEjfvGsfbMCeE4b2Cfvv4QdMSvmEsnMOpg4glFADftTjn87ipBHHPkRscUp/6Z9pg= ;{id = 42393} +085F63616C64617673045F746370096E6C6E65746C616273026E6C00002F000100000E100023075F6A6162626572045F746370096E6C6E65746C616273026E6C000006000000004003 +_caldavs._tcp.nlnetlabs.nl. 3600 IN NSEC _jabber._tcp.nlnetlabs.nl. SRV RRSIG NSEC +075F6A6162626572045F746370096E6C6E65746C616273026E6C0000210001000002580019000500001495046F70656E096E6C6E65746C616273026E6C00 +_jabber._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +075F6A6162626572045F746370096E6C6E65746C616273026E6C00002E00010000025800A00021080400000258530B29F452E63FF4A599096E6C6E65746C616273026E6C002BB8256AC85F0FFE2A69AAC737881BB84EC2B4C2F6BBCA9FCF9393BECCF7D867BD6BA31B177FAE94A92C939D7B1F5302202EA3A48185C9A19BC48ABA99670FAE3CD9F99D7D8844E586886486EAF994F74F7D6C93E0A9C08251312A20D11A7AE3B6D12E0B3BEC3E9EFF316D0CBD5EEC4F51A76B816A403579F3A600B9B94B47AB +_jabber._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. K7glashfD/4qaarHN4gbuE7CtML2u8qfz5OTvsz32Ge9a6MbF3+ulKksk517H1MCIC6jpIGFyaGbxIq6mWcPrjzZ+Z19iETlhohkhur5lPdPfWyT4KnAglExKiDRGnrjttEuCzvsPp7/MW0MvV7sT1Gna4FqQDV586YAublLR6s= ;{id = 42393} +075F6A6162626572045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C000851A976C278427831A325A5F0107C32364A31EE8898709D18EE69B7C50058FCF1D0AE08DACB14FC58A18B832DD60842DD83EBFE7552CE43A1C53EB7215C97A87B896329C3A50A14BCF11C4C16B620CE79834979AAB4C4AFED8A682F5D7331EDF713FF173BB2060CBBF2057AB7D9B3E3EA2B0AED8371981A2E27D763488C815D +_jabber._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. CFGpdsJ4QngxoyWl8BB8MjZKMe6ImHCdGO5pt8UAWPzx0K4I2ssU/Fihi4Mt1ghC3YPr/nVSzkOhxT63IVyXqHuJYynDpQoUvPEcTBa2IM55g0l5qrTEr+2KaC9dczHt9xP/FzuyBgy78gV6t9mz4+orCu2DcZgaLifXY0iMgV0= ;{id = 42393} +075F6A6162626572045F746370096E6C6E65746C616273026E6C00002F000100000E1000280C5F786D70702D636C69656E74045F746370096E6C6E65746C616273026E6C000006000000004003 +_jabber._tcp.nlnetlabs.nl. 3600 IN NSEC _xmpp-client._tcp.nlnetlabs.nl. SRV RRSIG NSEC +0C5F786D70702D636C69656E74045F746370096E6C6E65746C616273026E6C0000210001000002580019000500001466046F70656E096E6C6E65746C616273026E6C00 +_xmpp-client._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5222 open.nlnetlabs.nl. +0C5F786D70702D636C69656E74045F746370096E6C6E65746C616273026E6C00002E00010000025800A00021080400000258530B29F452E63FF4A599096E6C6E65746C616273026E6C004992038F6E2F726ED1991D791EC0409910649344772D1021920487B4B05EFDA301496BC4D8EC00FB3F04D79029E479F09DF7B396F2DAD8FA89D1665E8A1DC6B57B7FE394B229CAF2B6C428FB0F999D1E068ABB7614CA07F3F06C4FDD3798123780C04417E065380F966BC5A769D85D5E1A0388B32C13282F1D226F51609AC6F5 +_xmpp-client._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. SZIDj24vcm7RmR15HsBAmRBkk0R3LRAhkgSHtLBe/aMBSWvE2OwA+z8E15Ap5HnwnfezlvLa2PqJ0WZeih3GtXt/45SyKcrytsQo+w+ZnR4Girt2FMoH8/BsT903mBI3gMBEF+BlOA+Wa8WnadhdXhoDiLMsEygvHSJvUWCaxvU= ;{id = 42393} +0C5F786D70702D636C69656E74045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C00CA3676C9A9AE531E4E2786E74D027D493A3131449872AE6836E480009FCC40859F6F2F03B0B1A02F3E0E522A79F0A72B26A48F39B5579A2BCD4DC170E4B23B0034883F1BE62C67B1DBB4AFEC9C1A4B12FE9DBF90B561E136B8AEAFE7FA07654D2329DCC939B4B1627791DB7E98ECDE3F5EDFB0B9A6E008FD9246B90B58216423 +_xmpp-client._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. yjZ2yamuUx5OJ4bnTQJ9SToxMUSYcq5oNuSAAJ/MQIWfby8DsLGgLz4OUip58KcrJqSPObVXmivNTcFw5LI7ADSIPxvmLGex27Sv7JwaSxL+nb+QtWHhNriur+f6B2VNIyncyTm0sWJ3kdt+mOzeP17fsLmm4Aj9kka5C1ghZCM= ;{id = 42393} +0C5F786D70702D636C69656E74045F746370096E6C6E65746C616273026E6C00002F000100000E1000280C5F786D70702D736572766572045F746370096E6C6E65746C616273026E6C000006000000004003 +_xmpp-client._tcp.nlnetlabs.nl. 3600 IN NSEC _xmpp-server._tcp.nlnetlabs.nl. SRV RRSIG NSEC +0C5F786D70702D736572766572045F746370096E6C6E65746C616273026E6C0000210001000002580019000500001495046F70656E096E6C6E65746C616273026E6C00 +_xmpp-server._tcp.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +0C5F786D70702D736572766572045F746370096E6C6E65746C616273026E6C00002E00010000025800A00021080400000258530B29F452E63FF4A599096E6C6E65746C616273026E6C0089E4A6F8B0C580569640347C6E75DF3B6E7FD3DBC440B7DD3530B14C852C9EBFBD24057658FB71FEFB77EB903790175E80DFD09CF972EBFEC9B389F11EAD82124C423B54D3CFF43CF764958E3E441C9C756EDDBA19EC74AA63D5CFE94073D73A8410D9C7A8653A73A0F06B560B8EACBE16904CB89487DD95C7E4B8ED68E73196 +_xmpp-server._tcp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. ieSm+LDFgFaWQDR8bnXfO25/09vEQLfdNTCxTIUsnr+9JAV2WPtx/vt365A3kBdegN/QnPly6/7Js4nxHq2CEkxCO1TTz/Q892SVjj5EHJx1bt26Gex0qmPVz+lAc9c6hBDZx6hlOnOg8GtWC46svhaQTLiUh92Vx+S47WjnMZY= ;{id = 42393} +0C5F786D70702D736572766572045F746370096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C000C8C2611798AE0DDCFDCB5FBC7B6554092A2332F4EFD0029611C1BBF61A4FDA1F6BDBA19626D052D62F59B25AD5100341369BDA4A2ED26F5F9B1B7E38C7AA3827C4BACC9182EC1496584F411DFBB762EBE89015685A5C155C54B442C6F343C09157C4B3D7442C2963D9D9614C23D4E199E3FA33D4243FD4885F4C3CAB8FD1798 +_xmpp-server._tcp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. DIwmEXmK4N3P3LX7x7ZVQJKiMy9O/QApYRwbv2Gk/aH2vboZYm0FLWL1myWtUQA0E2m9pKLtJvX5sbfjjHqjgnxLrMkYLsFJZYT0Ed+7di6+iQFWhaXBVcVLRCxvNDwJFXxLPXRCwpY9nZYUwj1OGZ4/oz1CQ/1IhfTDyrj9F5g= ;{id = 42393} +0C5F786D70702D736572766572045F746370096E6C6E65746C616273026E6C00002F000100000E100020045F736970045F756470096E6C6E65746C616273026E6C000006000000004003 +_xmpp-server._tcp.nlnetlabs.nl. 3600 IN NSEC _sip._udp.nlnetlabs.nl. SRV RRSIG NSEC +045F736970045F756470096E6C6E65746C616273026E6C000021000100000258001C0000000013C4076F62656C69736B096E6C6E65746C616273026E6C00 +_sip._udp.nlnetlabs.nl. 600 IN SRV 0 0 5060 obelisk.nlnetlabs.nl. +045F736970045F756470096E6C6E65746C616273026E6C00002E00010000025800A00021080400000258530B29F452E63FF4A599096E6C6E65746C616273026E6C004E375FA6609E868321A31C1D16678C0F644E0A6B9F8792084B19F4BE8B2626BC11A1120201313F53A7E34DE8F707A8E836B89915BEA52827D4230F8217C8EB5E77AF057C90680198B68FEB11BA6C37F6CD382A99AB84FE8A56922AD9719C249D711944278B70C9969B9858C4B099AE85CEF08DAA8EE80E916169031B6AC6A468 +_sip._udp.nlnetlabs.nl. 600 IN RRSIG SRV 8 4 600 20140224111604 20140127111604 42393 nlnetlabs.nl. TjdfpmCehoMhoxwdFmeMD2ROCmufh5IISxn0vosmJrwRoRICATE/U6fjTej3B6joNriZFb6lKCfUIw+CF8jrXnevBXyQaAGYto/rEbpsN/bNOCqZq4T+ilaSKtlxnCSdcRlEJ4twyZabmFjEsJmuhc7wjaqO6A6RYWkDG2rGpGg= ;{id = 42393} +045F736970045F756470096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C007476D475CA08802F018710666D7F2B369D01EAAAA5FCD93CCBEABE824FF42252129A93F05B62A6817215670E32B81C7DC069140042690B815E247C03C31CCAD30870166869E51324DE314F7F2076D1899553A84A376E1585B89E3303B0A655B2A70804BFFE700601044A165AD2937F16FD4240D884E461A03A1CA0159B678430 +_sip._udp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. dHbUdcoIgC8BhxBmbX8rNp0B6qql/Nk8y+q+gk/0IlISmpPwW2KmgXIVZw4yuBx9wGkUAEJpC4FeJHwDwxzK0whwFmhp5RMk3jFPfyB20YmVU6hKN24VhbieMwOwplWypwgEv/5wBgEEShZa0pN/Fv1CQNiE5GGgOhygFZtnhDA= ;{id = 42393} +045F736970045F756470096E6C6E65746C616273026E6C00002F000100000E10001F08616C63617472617A096E6C6E65746C616273026E6C000006000000004003 +_sip._udp.nlnetlabs.nl. 3600 IN NSEC alcatraz.nlnetlabs.nl. SRV RRSIG NSEC +08616C63617472617A096E6C6E65746C616273026E6C0000010001000027D80004D59AE019 +alcatraz.nlnetlabs.nl. 10200 IN A 213.154.224.25 +08616C63617472617A096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C00634C9C6B47269CD076CB8CF3E51A6B6A647B5FFCAE981650E7BB0C74E301804E73E0C53A50ACD779FA35BC7910D933F9144B5C84AC8EE5EFE9EDA8597035753E3CB2135202C9D8D9764678DB9CC060699205EE5947CEDC32ED460FD64988CFC06B4BCE5B365DB23160AAED969450EB339F86636EF35FE664FCDFA3843CCBD706 +alcatraz.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. Y0yca0cmnNB2y4zz5RpramR7X/yumBZQ57sMdOMBgE5z4MU6UKzXefo1vHkQ2TP5FEtchKyO5e/p7ahZcDV1PjyyE1ICydjZdkZ425zAYGmSBe5ZR87cMu1GD9ZJiM/Aa0vOWzZdsjFgqu2WlFDrM5+GY27zX+Zk/N+jhDzL1wY= ;{id = 42393} +08616C63617472617A096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0071BEF176507E0F5A0E7A07711AA3A20ADD6CE3EEA63807348CEB98C5F53A2CD359228D36557523FC8DA9C96344281B66982DC02826C94229C23CC3F872098480449E3B39648EEF724C2F9A4782FD88950FA8562378D09736B510C79FF4B68F4347A0A084802C27991EDA1198611AA64E02702BD30F19BEE095338CA47D45D55A +alcatraz.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. cb7xdlB+D1oOegdxGqOiCt1s4+6mOAc0jOuYxfU6LNNZIo02VXUj/I2pyWNEKBtmmC3AKCbJQinCPMP4cgmEgESeOzlkju9yTC+aR4L9iJUPqFYjeNCXNrUQx5/0to9DR6CghIAsJ5ke2hGYYRqmTgJwK9MPGb7glTOMpH1F1Vo= ;{id = 42393} +08616C63617472617A096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0037DED980234C22B8DB5604FD97691CCB571D3726CBC77F0FBD1C74C2B51A590C53F2189DD2D77C6AD2101961D20D0772F942775E140789F37597B9C9D26F4945089376A926530D0A5B0F5CE484AC7D3417865775BB01999FAF1E258717B413B065ED5AE0038C95A133D642DADD02CF8A4B9E9F9717E4B1927DAF7CFD13AA3722 +alcatraz.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. N97ZgCNMIrjbVgT9l2kcy1cdNybLx38PvRx0wrUaWQxT8hid0td8atIQGWHSDQdy+UJ3XhQHifN1l7nJ0m9JRQiTdqkmUw0KWw9c5ISsfTQXhld1uwGZn68eJYcXtBOwZe1a4AOMlaEz1kLa3QLPikuen5cX5LGSfa98/ROqNyI= ;{id = 42393} +08616C63617472617A096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C002502C279A895DADBAD7EE346B1F4E9CF8E164CF4EF085177D88235FA407AA45207D58A9860BE89801C7CA5918C046C78C8E328C97C6E7BF80F155D2E35F19034C9A17AD7C4B70265B0D4CD9DB720D602CA36ACE74BE790CAF8B8997679DE7EE12AF28FD6B48ABD8560CF1938C6F7DC3DAE86A7C5164901ADBEEC34EBBB415C56 +alcatraz.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. JQLCeaiV2tutfuNGsfTpz44WTPTvCFF32II1+kB6pFIH1YqYYL6JgBx8pZGMBGx4yOMoyXxue/gPFV0uNfGQNMmhetfEtwJlsNTNnbcg1gLKNqznS+eQyvi4mXZ53n7hKvKP1rSKvYVgzxk4xvfcPa6Gp8UWSQGtvuw067tBXFY= ;{id = 42393} +08616C63617472617A096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021CC0FFFE3C3D00 +alcatraz.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21c:c0ff:fe3c:3d00 +08616C63617472617A096E6C6E65746C616273026E6C00002C0001000027D800160101B944A464623DFE578BE5351837E725E866671D47 +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 1 1 B944A464623DFE578BE5351837E725E866671D47 +08616C63617472617A096E6C6E65746C616273026E6C00002C0001000027D800160201A0989A25D41E77D56E37FFC5DF1716CAB3B1A16B +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 2 1 A0989A25D41E77D56E37FFC5DF1716CAB3B1A16B +08616C63617472617A096E6C6E65746C616273026E6C00002C0001000027D800160301C2511B00B3D725B8F2BCF27AF735C2946EAFD757 +alcatraz.nlnetlabs.nl. 10200 IN SSHFP 3 1 C2511B00B3D725B8F2BCF27AF735C2946EAFD757 +08616C63617472617A096E6C6E65746C616273026E6C00002F000100000E10001D06616C65786961096E6C6E65746C616273026E6C00000640000008000B +alcatraz.nlnetlabs.nl. 3600 IN NSEC alexia.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +06616C65786961096E6C6E65746C616273026E6C0000010001000027D80004D59AE0D2 +alexia.nlnetlabs.nl. 10200 IN A 213.154.224.210 +06616C65786961096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C000BB746112AFF8C039254716882E165F6EA961FAA618BE186C91F4D3BAE0B6618BD24FA0F7A0568E981CB60E5200AB8897CFA6CD2A9C77D09425D22CD14439281E07D3FA562CC1366A1E74041ABDCD52CE49D918CB7177C3A64329789A781DF4E6B336EE87321FD7DA84C49ABF5F1D9B0F381AF1A173B6361F6EFDD8096DFB340 +alexia.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. C7dGESr/jAOSVHFoguFl9uqWH6phi+GGyR9NO64LZhi9JPoPegVo6YHLYOUgCriJfPps0qnHfQlCXSLNFEOSgeB9P6VizBNmoedAQavc1SzknZGMtxd8OmQyl4mngd9OazNu6HMh/X2oTEmr9fHZsPOBrxoXO2Nh9u/dgJbfs0A= ;{id = 42393} +06616C65786961096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F452E63FF4A599096E6C6E65746C616273026E6C0068BBD4FF407D82F25E0544BAE81331293A61F61F0C0C44711D328F216413EE598017DF58CBC3A4DFAD728162D0E0B591F4FCB967F27C0D70D0A669E3A7BE084078AC4F11365AC310CC7FD9046C50588B2ABFAF5495B9A83D36EE88C2CC936363F8873B3454B6AC3DB5AF42AD974E6EA9D881E3EAF0D71CF5D0FF7F6C43B2A403 +alexia.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111604 20140127111604 42393 nlnetlabs.nl. aLvU/0B9gvJeBUS66BMxKTph9h8MDERxHTKPIWQT7lmAF99Yy8Ok361ygWLQ4LWR9Py5Z/J8DXDQpmnjp74IQHisTxE2WsMQzH/ZBGxQWIsqv69UlbmoPTbuiMLMk2Nj+Ic7NFS2rD21r0Ktl05uqdiB4+rw1xz10P9/bEOypAM= ;{id = 42393} +06616C65786961096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F452E63FF4A599096E6C6E65746C616273026E6C002CD3F78EBF4A82AB78FC546E08DB0AD1F8C102F97684D2A262B112351717F5186D7A8C3B0CA7D0A4A366A20CF7CC0050128861ECDDDF47C541897EE45305CB51A2C91E46347CABA362D56CB9C8535724C3F14D20E896AACD9F15A1552B905BE706AE72D897E7AAD617FC9BD1258F09D386CBD13C96A73116823B2162CC0F1199 +alexia.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111604 20140127111604 42393 nlnetlabs.nl. LNP3jr9Kgqt4/FRuCNsK0fjBAvl2hNKiYrESNRcX9Rhteow7DKfQpKNmogz3zABQEohh7N3fR8VBiX7kUwXLUaLJHkY0fKujYtVsuchTVyTD8U0g6JaqzZ8VoVUrkFvnBq5y2JfnqtYX/JvRJY8J04bL0TyWpzEWgjshYswPEZk= ;{id = 42393} +06616C65786961096E6C6E65746C616273026E6C00002C0001000027D800160101B91A18FE2C6E91D6C36E49C76913601F71E8D458 +alexia.nlnetlabs.nl. 10200 IN SSHFP 1 1 B91A18FE2C6E91D6C36E49C76913601F71E8D458 +06616C65786961096E6C6E65746C616273026E6C00002C0001000027D80022010258DD96744E805C4950B3C0817BBBE97A80AF42446EBD458B05F7F8797FB8D806 +alexia.nlnetlabs.nl. 10200 IN SSHFP 1 2 58DD96744E805C4950B3C0817BBBE97A80AF42446EBD458B05F7F8797FB8D806 +06616C65786961096E6C6E65746C616273026E6C00002C0001000027D800160201A89C7B38263F4186D8520C6C85237C38578D5441 +alexia.nlnetlabs.nl. 10200 IN SSHFP 2 1 A89C7B38263F4186D8520C6C85237C38578D5441 +06616C65786961096E6C6E65746C616273026E6C00002C0001000027D80022020201907DB6FED4A633ED021B1A939D0387931C800BE4929887A4AA79FBE365E0AB +alexia.nlnetlabs.nl. 10200 IN SSHFP 2 2 01907DB6FED4A633ED021B1A939D0387931C800BE4929887A4AA79FBE365E0AB +06616C65786961096E6C6E65746C616273026E6C00002F000100000E10001C05616C706861096E6C6E65746C616273026E6C00000640000000000B +alexia.nlnetlabs.nl. 3600 IN NSEC alpha.nlnetlabs.nl. A SSHFP RRSIG NSEC +05616C706861096E6C6E65746C616273026E6C0000010001000027D80004D59AE03B +alpha.nlnetlabs.nl. 10200 IN A 213.154.224.59 +05616C706861096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00725D64725DF5FCE33045F9E8218045DD53D760FF991C79F26BA20B9BCD9B3D604993BDA6DA57BEA33120A74DE144039233EE362F2BBA2B2AD8726D435220EAC5CDD2AD36609326EC0733D11E8805C15B72D5909B6C5D9A1C1FB34C5376D5A75C8AAF863AB87919B3FB9C64C9E2A678302A478083E20F949EB18E1FB4D03A1CA1 +alpha.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. cl1kcl31/OMwRfnoIYBF3VPXYP+ZHHnya6ILm82bPWBJk72m2le+ozEgp03hRAOSM+42Lyu6KyrYcm1DUiDqxc3SrTZgkybsBzPRHogFwVty1ZCbbF2aHB+zTFN21adciq+GOrh5GbP7nGTJ4qZ4MCpHgIPiD5SesY4ftNA6HKE= ;{id = 42393} +05616C706861096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006F1B4B5BB0D9A61EC293AF63259ABD5282A19FC064D4E723C16D6A4F131547E89375E9F5993666E4279F41EFB84FD35992147C3634C3B28D8C20F40D9F19757B99DB22F9BF48F480F35BBAEF282C1E600E784561D8572E09390644456D566F016ACAC55762B33551B3D06E3BE357932A03E707A868D274C57D3D56676F4D058E +alpha.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bxtLW7DZph7Ck69jJZq9UoKhn8Bk1OcjwW1qTxMVR+iTden1mTZm5CefQe+4T9NZkhR8NjTDso2MIPQNnxl1e5nbIvm/SPSA81u67ygsHmAOeEVh2FcuCTkGREVtVm8BasrFV2KzNVGz0G4741eTKgPnB6ho0nTFfT1WZ29NBY4= ;{id = 42393} +05616C706861096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0056D0587436DAACDA920FFA3453F9CE5CF8C0B2810DEBBD36E3ED00F86632E332EEBD8E070AD88E48BC5EBEBCB4B18B79B85EEA6AE420E2FB8F4828749E22F35B090AE33064C97D7C3D2C33287476DA15B19609564C37255DEA13E5B34FAA6B77D405BA9B51CF759C4D070D2B8721F0548239CE3B137EEC79FA77D8CAA181559A +alpha.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VtBYdDbarNqSD/o0U/nOXPjAsoEN67024+0A+GYy4zLuvY4HCtiOSLxevry0sYt5uF7qauQg4vuPSCh0niLzWwkK4zBkyX18PSwzKHR22hWxlglWTDclXeoT5bNPqmt31AW6m1HPdZxNBw0rhyHwVII5zjsTfux5+nfYyqGBVZo= ;{id = 42393} +05616C706861096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004FDEE8DEAD0E332FA3D7D0121D8FF3C6FAB92C784126E4E51CDD9130868A5EE192BAF5256D458076D664D61735A561353AD1DA8B77555F14CDBD326405D493CD1C96B896FBB5A6DFE3C9B1B3F03CA4FB3A029B2B9D1D3F0712173C4CE672236D8C0B2CFD4E67B47C983CB920EF2A98AC8B81CD466A7C28EF00E448853C444F86 +alpha.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T97o3q0OMy+j19ASHY/zxvq5LHhBJuTlHN2RMIaKXuGSuvUlbUWAdtZk1hc1pWE1OtHai3dVXxTNvTJkBdSTzRyWuJb7tabf48mxs/A8pPs6ApsrnR0/BxIXPEzmciNtjAss/U5ntHyYPLkg7yqYrIuBzUZqfCjvAORIhTxET4Y= ;{id = 42393} +05616C706861096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000007 +alpha.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::7 +05616C706861096E6C6E65746C616273026E6C00002C0001000027D800160101B64058566EF5987D784E3ECE10078FD47DFF77CB +alpha.nlnetlabs.nl. 10200 IN SSHFP 1 1 B64058566EF5987D784E3ECE10078FD47DFF77CB +05616C706861096E6C6E65746C616273026E6C00002C0001000027D8001602014E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +alpha.nlnetlabs.nl. 10200 IN SSHFP 2 1 4E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +05616C706861096E6C6E65746C616273026E6C00002C0001000027D8001603013544B26A0618AF50938755BAFDB9418F46B63578 +alpha.nlnetlabs.nl. 10200 IN SSHFP 3 1 3544B26A0618AF50938755BAFDB9418F46B63578 +05616C706861096E6C6E65746C616273026E6C00002F000100000E100020036F6C6405616C706861096E6C6E65746C616273026E6C00000640000008000B +alpha.nlnetlabs.nl. 3600 IN NSEC old.alpha.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +036F6C6405616C706861096E6C6E65746C616273026E6C0000010001000027D80004D59AE08E +old.alpha.nlnetlabs.nl. 10200 IN A 213.154.224.142 +036F6C6405616C706861096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002E4F4BAB0C072DE743234E9978373073EFC9430FB669727E8E0B99A3A2CAA8D0CDF221674623C370096AE81CC7F248A253294FF18F61C349B863D00FB2E835B8F0CA4DFA14C1C06133E56FB017C9CDCD031CC166AB3AC8E70EFBF8015F3F7C07DC260F06AE8F5E38A717C29F4350C3034277534AD2C5B239EBE3799F142F69F6 +old.alpha.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Lk9LqwwHLedDI06ZeDcwc+/JQw+2aXJ+jguZo6LKqNDN8iFnRiPDcAlq6BzH8kiiUylP8Y9hw0m4Y9APsug1uPDKTfoUwcBhM+VvsBfJzc0DHMFmqzrI5w77+AFfP3wH3CYPBq6PXjinF8KfQ1DDA0J3U0rSxbI56+N5nxQvafY= ;{id = 42393} +036F6C6405616C706861096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001540C8DBBB2F8791FABC08E91ADAAC85151C92E8C0979BE15D9B0BC0B4A5ED866CF65DF1BD8D6761A4C0F89DE1E03566676F2C55E8DAD950C2C47EFDF780C346EDFEC7B1EBD2D594E7A69B07E94113D257977C27D895760C158EAA8FA1226C5C9797B5B944254FA65D9EE9D9B25F1369601B3F74F104D95DB5204DF15601EB0B +old.alpha.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUDI27svh5H6vAjpGtqshRUckujAl5vhXZsLwLSl7YZs9l3xvY1nYaTA+J3h4DVmZ28sVeja2VDCxH7994DDRu3+x7Hr0tWU56abB+lBE9JXl3wn2JV2DBWOqo+hImxcl5e1uUQlT6ZdnunZsl8TaWAbP3TxBNldtSBN8VYB6ws= ;{id = 42393} +036F6C6405616C706861096E6C6E65746C616273026E6C00002E0001000027D800A0002C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006BC52013A14E585976D7AC7716D2DDA3CEB0EE95FA9E2E8F514F522A117E50CEA7226B79D3B3975FECE99DF3C5FCA2A5E6E1DEB0540361CE9CFA1171F2705152683372E304DA60CF1DC7537301F62DB85A6B54051770A09E3F263D7B899711232107560B881AB8A0133CAF149548F1D9CC3A3D4D4948E541D0ECBADCDE8C5D46 +old.alpha.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a8UgE6FOWFl216x3FtLdo86w7pX6ni6PUU9SKhF+UM6nImt507OXX+zpnfPF/KKl5uHesFQDYc6c+hFx8nBRUmgzcuME2mDPHcdTcwH2Lbhaa1QFF3Cgnj8mPXuJlxEjIQdWC4gauKATPK8UlUjx2cw6PU1JSOVB0Oy63N6MXUY= ;{id = 42393} +036F6C6405616C706861096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008D51C8E2579F9C1AC0CA3B814791F660B8B42FDA2FDBFF909B87CAE2D9BA60ACC72A1667410DAF9F102F00DFA9369C847EE0AC2EDBC02D1BCA7373F43E179B6E96BF79C01C5454AF22D94563B2EAB9849AEC88C23614D0BD6FA63EBF0B11D1EA368C824DCBD19DB42249C3FD3B530C068083B1D7420CF7AE71DF7C4DC37125D6 +old.alpha.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jVHI4lefnBrAyjuBR5H2YLi0L9ov2/+Qm4fK4tm6YKzHKhZnQQ2vnxAvAN+pNpyEfuCsLtvALRvKc3P0Phebbpa/ecAcVFSvItlFY7LquYSa7IjCNhTQvW+mPr8LEdHqNoyCTcvRnbQiScP9O1MMBoCDsddCDPeucd98TcNxJdY= ;{id = 42393} +036F6C6405616C706861096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010250DAFFFE3D01D6 +old.alpha.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:250:daff:fe3d:1d6 +036F6C6405616C706861096E6C6E65746C616273026E6C00002C0001000027D800160101B64058566EF5987D784E3ECE10078FD47DFF77CB +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 1 1 B64058566EF5987D784E3ECE10078FD47DFF77CB +036F6C6405616C706861096E6C6E65746C616273026E6C00002C0001000027D8001602014E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 2 1 4E8F99D5B341DBEBA0C8D620ED463C14A8026EDF +036F6C6405616C706861096E6C6E65746C616273026E6C00002C0001000027D8001603013544B26A0618AF50938755BAFDB9418F46B63578 +old.alpha.nlnetlabs.nl. 10200 IN SSHFP 3 1 3544B26A0618AF50938755BAFDB9418F46B63578 +036F6C6405616C706861096E6C6E65746C616273026E6C00002F000100000E10001D06616D616C6961096E6C6E65746C616273026E6C00000640000008000B +old.alpha.nlnetlabs.nl. 3600 IN NSEC amalia.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +06616D616C6961096E6C6E65746C616273026E6C0000010001000027D80004D59AE0D1 +amalia.nlnetlabs.nl. 10200 IN A 213.154.224.209 +06616D616C6961096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A2C9355B490AF9D5C6D49D046C35415AF0DEA834EC445D9099B7B2108080F585884DF972CF155D897EABCB5579A5C80B7348FBD927F9A55B30C16E7C7E35B8A1E91EFBFA0CA4C220BB81DAC3EF3156B6DD85A45DD757478E50BBF5756A3386D49E972D30504B1FC7DCBE70517AEE5CA99CB439077CA5EC5E5E79844656896998 +amalia.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. osk1W0kK+dXG1J0EbDVBWvDeqDTsRF2QmbeyEICA9YWITflyzxVdiX6ry1V5pcgLc0j72Sf5pVswwW58fjW4oeke+/oMpMIgu4Haw+8xVrbdhaRd11dHjlC79XVqM4bUnpctMFBLH8fcvnBReu5cqZy0OQd8pexeXnmERlaJaZg= ;{id = 42393} +06616D616C6961096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B1CE1573F2F5E41AC603ECD2A0461C9CCA3840195402FE25E725876D48EEBCCC596FF7FBDC2DA560779908BFFE139A1D8A74880DA07C7269A7B078B77C163CAF9ECCD66D75338B5B5352550D67AABA63E40999C5929564673567453257A7F0927CAB9269D7F1356F1DF2382B84A2FD88297405601C064A7BE86937C917CDEA94 +amalia.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sc4Vc/L15BrGA+zSoEYcnMo4QBlUAv4l5yWHbUjuvMxZb/f73C2lYHeZCL/+E5odinSIDaB8cmmnsHi3fBY8r57M1m11M4tbU1JVDWequmPkCZnFkpVkZzVnRTJXp/CSfKuSadfxNW8d8jgrhKL9iCl0BWAcBkp76Gk3yRfN6pQ= ;{id = 42393} +06616D616C6961096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0024C59308FE39CB177EA49DDA8B82C8117D7F0A263AA90B8ABC494AC1D20CC07119BA16533F3FF6CD1B196B226026367384D4C8F5BB3074AABE754689E738B0012F18B1AC0EDDAACBFF12AF088F460C8A9F0FDB1A971F8415736E038047C3FF868712ACA93394A3B558911DDFC0ABFEF0CC5541606196B34E1BA24061DF4815E4 +amalia.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JMWTCP45yxd+pJ3ai4LIEX1/CiY6qQuKvElKwdIMwHEZuhZTPz/2zRsZayJgJjZzhNTI9bswdKq+dUaJ5ziwAS8YsawO3arL/xKvCI9GDIqfD9salx+EFXNuA4BHw/+GhxKsqTOUo7VYkR3fwKv+8MxVQWBhlrNOG6JAYd9IFeQ= ;{id = 42393} +06616D616C6961096E6C6E65746C616273026E6C00002C0001000027D80016010124526B0DB9CD858285E297732E47586D0F0A894D +amalia.nlnetlabs.nl. 10200 IN SSHFP 1 1 24526B0DB9CD858285E297732E47586D0F0A894D +06616D616C6961096E6C6E65746C616273026E6C00002C0001000027D800220102874F4343A9DAC9AEC8E17611B3424F08AE46274000D4AA03DECAF645D0BF59D3 +amalia.nlnetlabs.nl. 10200 IN SSHFP 1 2 874F4343A9DAC9AEC8E17611B3424F08AE46274000D4AA03DECAF645D0BF59D3 +06616D616C6961096E6C6E65746C616273026E6C00002C0001000027D80016020136F26D5F0887C93B1C76626083CC3826EA929711 +amalia.nlnetlabs.nl. 10200 IN SSHFP 2 1 36F26D5F0887C93B1C76626083CC3826EA929711 +06616D616C6961096E6C6E65746C616273026E6C00002C0001000027D800220202A22D01A9B4920A8281F41D280B065B03DEDA6AFD268B6679D18F9D3E40E27DF0 +amalia.nlnetlabs.nl. 10200 IN SSHFP 2 2 A22D01A9B4920A8281F41D280B065B03DEDA6AFD268B6679D18F9D3E40E27DF0 +06616D616C6961096E6C6E65746C616273026E6C00002F000100000E10001F08617065786F6E6C79096E6C6E65746C616273026E6C00000640000000000B +amalia.nlnetlabs.nl. 3600 IN NSEC apexonly.nlnetlabs.nl. A SSHFP RRSIG NSEC +08617065786F6E6C79096E6C6E65746C616273026E6C0000020001000027D800230C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00 +apexonly.nlnetlabs.nl. 10200 IN NS willemtoorop.friends.nlnetlabs.nl. +08617065786F6E6C79096E6C6E65746C616273026E6C00002B0001000027D8002483C708028FA16EC68A557AC5808941EE9E9563C526B42DAC09262DDF1A7C7A81051101C7 +apexonly.nlnetlabs.nl. 10200 IN DS 33735 8 2 8FA16EC68A557AC5808941EE9E9563C526B42DAC09262DDF1A7C7A81051101C7 +08617065786F6E6C79096E6C6E65746C616273026E6C00002E0001000027D800A0002B0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0086F7332374645908B1DA5A5EE9881BE5DE3DD835B427AA0B09BF3CE838912614651FE68E352AB6A342B3524FD52F7C52C0C8D257EC335AA4F7392E729BDF161541271C49EA75F5791E8403C9C880CEBA2D41E5045EA96A1E6FA3A4836083C6EE044E232FAB4C7A646C1C0DCFE7669984C070395FDAF5A95F362C0004221BBDCA +apexonly.nlnetlabs.nl. 10200 IN RRSIG DS 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hvczI3RkWQix2lpe6Ygb5d492DW0J6oLCb886DiRJhRlH+aONSq2o0KzUk/VL3xSwMjSV+wzWqT3OS5ym98WFUEnHEnqdfV5HoQDyciAzrotQeUEXqlqHm+jpINgg8buBE4jL6tMemRsHA3P52aZhMBwOV/a9alfNiwABCIbvco= ;{id = 42393} +08617065786F6E6C79096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007CE5FD6AC359D8D512117F490AB11362614DAA9F7954A40F19FA1C9AD1C32065C70027A97C56EC511F9B2E0050787683B9792DAB493CC9D93DDA46AB2E93BD3514452E260311B5B4CC904287E1883CDCFC3D72BB03B75D9856040BE6CA487FEB316B6D74E0938B5CDEB695924526DFC26D50FB7F8CD9A75797C45FDE13ACE5BD +apexonly.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fOX9asNZ2NUSEX9JCrETYmFNqp95VKQPGfocmtHDIGXHACepfFbsUR+bLgBQeHaDuXktq0k8ydk92karLpO9NRRFLiYDEbW0zJBCh+GIPNz8PXK7A7ddmFYEC+bKSH/rMWttdOCTi1zetpWSRSbfwm1Q+3+M2adXl8Rf3hOs5b0= ;{id = 42393} +08617065786F6E6C79096E6C6E65746C616273026E6C00002F000100000E10001D06617265613531096E6C6E65746C616273026E6C000006200000000013 +apexonly.nlnetlabs.nl. 3600 IN NSEC area51.nlnetlabs.nl. NS DS RRSIG NSEC +06617265613531096E6C6E65746C616273026E6C0000010001000027D80004D59AE06B +area51.nlnetlabs.nl. 10200 IN A 213.154.224.107 +06617265613531096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0021816F0022C0E467503F3207DC9450411A4C89EE02E56A06688AA7302EC89C2E8A83F8C23177456B25C836B0F44D9AFA493BF752973BCE512D437263CC557E254862EA00C400C20A0CD0B9771BDCB5B4C6F1CB0F445D4910EA8148D338555BD3CA36312625180C407E81DFDA8AEAF421A7361FEE50D6F9E007A827E2CED58D2C +area51.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IYFvACLA5GdQPzIH3JRQQRpMie4C5WoGaIqnMC7InC6Kg/jCMXdFayXINrD0TZr6STv3Upc7zlEtQ3JjzFV+JUhi6gDEAMIKDNC5dxvctbTG8csPRF1JEOqBSNM4VVvTyjYxJiUYDEB+gd/aiur0Iac2H+5Q1vngB6gn4s7VjSw= ;{id = 42393} +06617265613531096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C92C384824C939C5DC6F5918B476A663F34A9918CAFE823AE63F513497A0890E74964635EC418DB256E1F287C6CCE9F419A32BD0C67E14F1FE0686920C9996CC6719D473E37E4FF1DFC13F80C4B1D6BFAD87B374E293DE67FEE87642A010F95FD8968447FDA0BAD954AD71F8F089C3E903C31683F7B9B804DE83CC8B56E8D9EA +area51.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ySw4SCTJOcXcb1kYtHamY/NKmRjK/oI65j9RNJegiQ50lkY17EGNslbh8ofGzOn0GaMr0MZ+FPH+BoaSDJmWzGcZ1HPjfk/x38E/gMSx1r+th7N04pPeZ/7odkKgEPlf2JaER/2gutlUrXH48InD6QPDFoP3ubgE3oPMi1bo2eo= ;{id = 42393} +06617265613531096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003F140865CFC95AFC71C92E740CC7B393ED7998A49A90D197CFC060171DCA2860E2340A06FA75B241BBDE03680C226FCB46D909EE5FA1B193F4B99094417A60C1D56009140BDB8946050777B0817C14A58DAE2B3AB84C0A2F9715C9EC329AF9C38997934CD704B743C5EE5BAB24D0729F9AE71E8471938645B81894F640099835 +area51.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PxQIZc/JWvxxyS50DMezk+15mKSakNGXz8BgFx3KKGDiNAoG+nWyQbveA2gMIm/LRtkJ7l+hsZP0uZCUQXpgwdVgCRQL24lGBQd3sIF8FKWNris6uEwKL5cVyewymvnDiZeTTNcEt0PF7lurJNByn5rnHoRxk4ZFuBiU9kAJmDU= ;{id = 42393} +06617265613531096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004F408AF3B6A87F4A169B36B27208299245FB8E4DE51D9868A7902DBE03793A75AF5CD8E9F14874D32F67E508C228C3FDBD1C6B6D64872089DBBF6CB0837C629897BCA93023EB167F0767CE17663F6D23AC72175E21EF2708C6E7949E86B546522014C3804F0B7F6620EDCBF040D9A541A6E4777B6BB90BC3B7B65DD59ABAF530 +area51.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T0CK87aof0oWmzaycggpkkX7jk3lHZhop5AtvgN5OnWvXNjp8Uh00y9n5QjCKMP9vRxrbWSHIInbv2ywg3ximJe8qTAj6xZ/B2fOF2Y/bSOschdeIe8nCMbnlJ6GtUZSIBTDgE8Lf2Yg7cvwQNmlQabkd3truQvDt7Zd1Zq69TA= ;{id = 42393} +06617265613531096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001DAD385FFFEE1F7D0 +area51.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:dad3:85ff:fee1:f7d0 +06617265613531096E6C6E65746C616273026E6C00002C0001000027D8001601012979793C1D7AB8B8228C1FEF0F916E9E3AF33E2A +area51.nlnetlabs.nl. 10200 IN SSHFP 1 1 2979793C1D7AB8B8228C1FEF0F916E9E3AF33E2A +06617265613531096E6C6E65746C616273026E6C00002C0001000027D800160201BDEB0D0A01B28A188EE1DB6F09942FF4F1A6B785 +area51.nlnetlabs.nl. 10200 IN SSHFP 2 1 BDEB0D0A01B28A188EE1DB6F09942FF4F1A6B785 +06617265613531096E6C6E65746C616273026E6C00002F000100000E10001D06617269616E65096E6C6E65746C616273026E6C00000640000008000B +area51.nlnetlabs.nl. 3600 IN NSEC ariane.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +06617269616E65096E6C6E65746C616273026E6C0000010001000027D80004D59AE0D3 +ariane.nlnetlabs.nl. 10200 IN A 213.154.224.211 +06617269616E65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C000F193B6BF77D15BAE91DB75395943210225A4EBF54866A1F059FAC1F213ADB1A70BA6BF85669C1664E09B3B60649245A208FCCA11D56CF7A27FAB615ACA8AF49A8C5B1566F31D107AC450616CD80DF641CC5E6E043A55BED79F092ECA4FE9A2AA7DC802C36F2CA2FD9AD28D5ADB6213EA8D011B92D01C5666948BD07417EC5F3 +ariane.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Dxk7a/d9FbrpHbdTlZQyECJaTr9UhmofBZ+sHyE62xpwumv4VmnBZk4Js7YGSSRaII/MoR1Wz3on+rYVrKivSajFsVZvMdEHrEUGFs2A32QcxebgQ6Vb7Xnwkuyk/poqp9yALDbyyi/ZrSjVrbYhPqjQEbktAcVmaUi9B0F+xfM= ;{id = 42393} +06617269616E65096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A796BE7A3F64E2572F4EFD42AA92FF8478A573A9BC3B07DC2F85AA4021E823DE0D2CFEDE54597C48309F5A5C6F4765451E7476B0CBE776B91A8B4B20E706ED1F2BC677722C11EE141B42362FB1C6B75CDA10357AB260C1B5789B862EFB71825AEAAE570D85C5685C53AA9E10F076A973FC3A2770B858265B5B19A3F8832B27D9 +ariane.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. p5a+ej9k4lcvTv1CqpL/hHilc6m8OwfcL4WqQCHoI94NLP7eVFl8SDCfWlxvR2VFHnR2sMvndrkai0sg5wbtHyvGd3IsEe4UG0I2L7HGt1zaEDV6smDBtXibhi77cYJa6q5XDYXFaFxTqp4Q8Hapc/w6J3C4WCZbWxmj+IMrJ9k= ;{id = 42393} +06617269616E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0092623B293ED0C4CF1411305F6E97141BE78C29E2664B88D479130C69D64457BA2723F0286D1A4F2D17FBCF8E1C3DC9F1AAADD474CBABA6228B5AC6EA52E58E4A6CD06A320D48E27A36BAF1E4013F937BFE61928C98BDE3561A19323C935BAC1190F27D01F0ADC694CCBD3B3CB5C491DE8BB6E6C242B7C48DECAA64DCB50A4B91 +ariane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kmI7KT7QxM8UETBfbpcUG+eMKeJmS4jUeRMMadZEV7onI/AobRpPLRf7z44cPcnxqq3UdMurpiKLWsbqUuWOSmzQajINSOJ6Nrrx5AE/k3v+YZKMmL3jVhoZMjyTW6wRkPJ9AfCtxpTMvTs8tcSR3ou25sJCt8SN7Kpk3LUKS5E= ;{id = 42393} +06617269616E65096E6C6E65746C616273026E6C00002C0001000027D800160101248ECE56A3DDAA931DE2FD2F26EFA93031517740 +ariane.nlnetlabs.nl. 10200 IN SSHFP 1 1 248ECE56A3DDAA931DE2FD2F26EFA93031517740 +06617269616E65096E6C6E65746C616273026E6C00002C0001000027D80022010262E3A3A5E75ACFF2DC2D42752FC2F7EB1BB83E8440BEA635AB4BCE943EFF7C0F +ariane.nlnetlabs.nl. 10200 IN SSHFP 1 2 62E3A3A5E75ACFF2DC2D42752FC2F7EB1BB83E8440BEA635AB4BCE943EFF7C0F +06617269616E65096E6C6E65746C616273026E6C00002C0001000027D80016020122B076311F36A0CAF39733285CE7944B8716302E +ariane.nlnetlabs.nl. 10200 IN SSHFP 2 1 22B076311F36A0CAF39733285CE7944B8716302E +06617269616E65096E6C6E65746C616273026E6C00002C0001000027D800220202D1C0519EE0C52684683D87446F4AA4069F91830B4CEF3F85C3CF73E0C9055665 +ariane.nlnetlabs.nl. 10200 IN SSHFP 2 2 D1C0519EE0C52684683D87446F4AA4069F91830B4CEF3F85C3CF73E0C9055665 +06617269616E65096E6C6E65746C616273026E6C00002F000100000E1000220B61746C61732D70726F6265096E6C6E65746C616273026E6C00000640000000000B +ariane.nlnetlabs.nl. 3600 IN NSEC atlas-probe.nlnetlabs.nl. A SSHFP RRSIG NSEC +0B61746C61732D70726F6265096E6C6E65746C616273026E6C0000010001000027D80004D59AE02B +atlas-probe.nlnetlabs.nl. 10200 IN A 213.154.224.43 +0B61746C61732D70726F6265096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C000ED23493C33D47B50866660B6A1A5F3D2CD71C4CE7102C5CC6B9D5EDFE7194FA8D5CDA24466E4BB5862FF9C410D710EABD80FF203E97D93EA115069CB105F90E3631BBAA6B68030E5EB3E81302D7F9D5A696FD17E0182F298D7DB4DCF3F9B3116ACB0A9D16A84A7258949A9DFB35B77A0CC1CB86F560191D9714541CBEB3A8F3 +atlas-probe.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. DtI0k8M9R7UIZmYLahpfPSzXHEznECxcxrnV7f5xlPqNXNokRm5LtYYv+cQQ1xDqvYD/ID6X2T6hFQacsQX5DjYxu6praAMOXrPoEwLX+dWmlv0X4BgvKY19tNzz+bMRassKnRaoSnJYlJqd+zW3egzBy4b1YBkdlxRUHL6zqPM= ;{id = 42393} +0B61746C61732D70726F6265096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D3A36A3BF40435401A0D1059305FF3837BD8BFDB3702872E52337DBAF6F3409F3BA8181C1C76206A4207CBD32AF47C4A01915FC5F68CE7BD58977B15A90D3FF03970520FB89986F6EADEF25A70DBA46C2AE186F3662770B1F2C449B50D5A0A87FF937E4317AD016B9E1EE5D427A86E60B6EC2C417BA4DA1C5B675142866531E6 +atlas-probe.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 06NqO/QENUAaDRBZMF/zg3vYv9s3AocuUjN9uvbzQJ87qBgcHHYgakIHy9Mq9HxKAZFfxfaM571Yl3sVqQ0/8DlwUg+4mYb26t7yWnDbpGwq4YbzZidwsfLESbUNWgqH/5N+QxetAWueHuXUJ6huYLbsLEF7pNocW2dRQoZlMeY= ;{id = 42393} +0B61746C61732D70726F6265096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0063D658876632BE489417F53E362C70FA08473D092F5AA12310EBD63C44BF470B19D4E51E57E2E1A875F67CB13FBDEF7DBE6A8D8D6B2E7607EBBCC9D13234E3DF8C9EFA13D2043934964EB7D66AABFB9C3287C9127838C606B74050CF952BA1EA15AA848DED9290C1561887B7ED0CD9EDE6ED2DC935F165687CAD8AAF997737B3 +atlas-probe.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Y9ZYh2YyvkiUF/U+Nixw+ghHPQkvWqEjEOvWPES/RwsZ1OUeV+LhqHX2fLE/ve99vmqNjWsudgfrvMnRMjTj34ye+hPSBDk0lk631mqr+5wyh8kSeDjGBrdAUM+VK6HqFaqEje2SkMFWGIe37QzZ7ebtLck18WVofK2Kr5l3N7M= ;{id = 42393} +0B61746C61732D70726F6265096E6C6E65746C616273026E6C00001C0001000027D80010200107B80206000102204AFFFEC82538 +atlas-probe.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:220:4aff:fec8:2538 +0B61746C61732D70726F6265096E6C6E65746C616273026E6C00002F000100000E10001C056178696F6D096E6C6E65746C616273026E6C000006400000080003 +atlas-probe.nlnetlabs.nl. 3600 IN NSEC axiom.nlnetlabs.nl. A AAAA RRSIG NSEC +056178696F6D096E6C6E65746C616273026E6C0000010001000027D80004D59AE02C +axiom.nlnetlabs.nl. 10200 IN A 213.154.224.44 +056178696F6D096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00061EA46C68CE29361EE092B1540EB561270C3D63EB64358D8E92578627ED1F362F108FDB9434AEBFBE4383891F3B3D28846DFD16B859B6168BE83E09B98B83ABC729FC80520AD391D6C820BA8A82DC0C679E5F5B650A077B4DD6BD991BB8EA7AA9D800B56137A03CA1AEB0C6B130AF18F7775CD3AED40B37B049E1761961E42D +axiom.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Bh6kbGjOKTYe4JKxVA61YScMPWPrZDWNjpJXhiftHzYvEI/blDSuv75Dg4kfOz0ohG39FrhZthaL6D4JuYuDq8cp/IBSCtOR1sgguoqC3Axnnl9bZQoHe03WvZkbuOp6qdgAtWE3oDyhrrDGsTCvGPd3XNOu1As3sEnhdhlh5C0= ;{id = 42393} +056178696F6D096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00890ABD372021589285176415551F8F8E42F056C1E72EC22B3ED5D5CC7A66833D0DA772A2C3968417033175937FEB7C83BEAA0508D3EEF8C4C26BABA4C34445C1EC11F049C7448861ED00CFF803D116B6C3E92172F5E3A1DDE429A86907053F39235C8FC791975588265CB3B1B48635D81BA3FE0D8FBEED1C3C87652992922FD9 +axiom.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iQq9NyAhWJKFF2QVVR+PjkLwVsHnLsIrPtXVzHpmgz0Np3Kiw5aEFwMxdZN/63yDvqoFCNPu+MTCa6ukw0RFwewR8EnHRIhh7QDP+APRFrbD6SFy9eOh3eQpqGkHBT85I1yPx5GXVYgmXLOxtIY12Buj/g2Pvu0cPIdlKZKSL9k= ;{id = 42393} +056178696F6D096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0053E0CE4B2A4CD84DC18928C7C708A0599CD853D5ECB202C1A013B9E4F9DE074F3C7A654BD6A8C4D25B82A500435959ADEADA64279161494C77BA6635775CED7E7F62E291CA8DA3B0D624F4681D807B9BB8EB4045B5DF9FB8AEA34E8E9C882689AE611998B6F22AA14CF508A776F32EF7ED62F3C1D709DD69F3D0BAD016419E0E +axiom.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. U+DOSypM2E3BiSjHxwigWZzYU9XssgLBoBO55PneB088emVL1qjE0luCpQBDWVmt6tpkJ5FhSUx3umY1d1ztfn9i4pHKjaOw1iT0aB2Ae5u460BFtd+fuK6jTo6ciCaJrmEZmLbyKqFM9QindvMu9+1i88HXCd1p89C60BZBng4= ;{id = 42393} +056178696F6D096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0085624CD655AADD3164F903CF05F7D4EBC6821F338307D57CD6D78A6CDD1AB121BB182FF357D1E5985505EDC675F19F8D44BE4FD3FE5C80588BF3654B1522DD76BD82C359DC3D8C409AA0C4422E9133A4ABC1A8ECF2DB9D52C205A9737A82B0FB3A2D3A2E817DFD1658AC52B088F11B05C50F2C13148B4E4570BF8086BF8838A8 +axiom.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. hWJM1lWq3TFk+QPPBffU68aCHzODB9V81teKbN0asSG7GC/zV9HlmFUF7cZ18Z+NRL5P0/5cgFiL82VLFSLddr2Cw1ncPYxAmqDEQi6RM6Srwajs8tudUsIFqXN6grD7Oi06LoF9/RZYrFKwiPEbBcUPLBMUi05FcL+Ahr+IOKg= ;{id = 42393} +056178696F6D096E6C6E65746C616273026E6C00001C0001000027D80010200107B80206000102224DFFFE554D46 +axiom.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:222:4dff:fe55:4d46 +056178696F6D096E6C6E65746C616273026E6C00002C0001000027D800160101604CC3A8A6795466E88EEE22ABCD9DCFE6BA7F9C +axiom.nlnetlabs.nl. 10200 IN SSHFP 1 1 604CC3A8A6795466E88EEE22ABCD9DCFE6BA7F9C +056178696F6D096E6C6E65746C616273026E6C00002C0001000027D8001602016D199FF75CDC453D376591031FE2C6257E4C5F49 +axiom.nlnetlabs.nl. 10200 IN SSHFP 2 1 6D199FF75CDC453D376591031FE2C6257E4C5F49 +056178696F6D096E6C6E65746C616273026E6C00002F000100000E10001E07617A6B6162616E096E6C6E65746C616273026E6C00000640000008000B +axiom.nlnetlabs.nl. 3600 IN NSEC azkaban.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +07617A6B6162616E096E6C6E65746C616273026E6C0000010001000027D80004D59AE01F +azkaban.nlnetlabs.nl. 10200 IN A 213.154.224.31 +07617A6B6162616E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0008B25FB940FA5227FB5388F5058808AB3716CF269AE0FC3EA94791D551E2462F429558EB491A56BECE60B81678522F8DD828C10333188CDD5B685A5B7C8A66243A37794A9EBEA8BF014BFA733DE15DC92B555B5E3DCC3EE6B262F1F39B524DF0D8372E9355F6C0103C86AA9D10F3AA8091C6C59C239D5F82694F567945907243 +azkaban.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CLJfuUD6Uif7U4j1BYgIqzcWzyaa4Pw+qUeR1VHiRi9ClVjrSRpWvs5guBZ4Ui+N2CjBAzMYjN1baFpbfIpmJDo3eUqevqi/AUv6cz3hXckrVVtePcw+5rJi8fObUk3w2Dcuk1X2wBA8hqqdEPOqgJHGxZwjnV+CaU9WeUWQckM= ;{id = 42393} +07617A6B6162616E096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C8D934CBF2705625B6C1C40C025E643AA33EBE69BDED293A2BD6CDD092995C736D5808B53981CA63D118B13EFB0970ED1A8D5DC7C7432426C5E5D735E91AE06DF69D01BB6577F04AF1A6109019D2BE4147109193DEF86A3746AC39156D33F29AA3A80633B1F2732BE5FCC0EF74A99FA477030B75C25791B772E21550D545E076 +azkaban.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yNk0y/JwViW2wcQMAl5kOqM+vmm97Sk6K9bN0JKZXHNtWAi1OYHKY9EYsT77CXDtGo1dx8dDJCbF5dc16RrgbfadAbtld/BK8aYQkBnSvkFHEJGT3vhqN0asORVtM/Kao6gGM7Hycyvl/MDvdKmfpHcDC3XCV5G3cuIVUNVF4HY= ;{id = 42393} +07617A6B6162616E096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B2B5ED37ED6A456EBB6C5F91B90853835B5631C68E938BCC542EC334E453E2D6FD2BDFC315C36E31D26B89B5FE8947D59EB7F1CEBE26140DDD1EA02C6F08DB820953907DE2236C2F8B29E1F07E62273D4E1992BDBCE1B3092846AADD406D69F55A28BE4B128D75C47F3B840119310A410C31AF2C14A4B9D27AD36AAC4117F047 +azkaban.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. srXtN+1qRW67bF+RuQhTg1tWMcaOk4vMVC7DNORT4tb9K9/DFcNuMdJribX+iUfVnrfxzr4mFA3dHqAsbwjbgglTkH3iI2wviynh8H5iJz1OGZK9vOGzCShGqt1AbWn1Wii+SxKNdcR/O4QBGTEKQQwxrywUpLnSetNqrEEX8Ec= ;{id = 42393} +07617A6B6162616E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0049AAD08BE22EB346F0F8C41CE66327A2544DC0D198CCB0CF3A574B386EC6A0DEE8309CB034D95E470C3C22D185236C2A990C5F42C981D348B369D423E9BA2A648E6D797550D61A91074B44C2FC5EF7170DCF6D0CA4298EE1D87A417FFB32B6D149830BABF2014C6931A7A7D994756F99A046305DF2F37AE649AF1EEAC311B59B +azkaban.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SarQi+Ius0bw+MQc5mMnolRNwNGYzLDPOldLOG7GoN7oMJywNNleRww8ItGFI2wqmQxfQsmB00izadQj6boqZI5teXVQ1hqRB0tEwvxe9xcNz20MpCmO4dh6QX/7MrbRSYMLq/IBTGkxp6fZlHVvmaBGMF3y83rmSa8e6sMRtZs= ;{id = 42393} +07617A6B6162616E096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001000000000000001F +azkaban.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1f +07617A6B6162616E096E6C6E65746C616273026E6C00002C0001000027D8001601016243EC2D53E6F6F0C34368C65A44182205C5B0D4 +azkaban.nlnetlabs.nl. 10200 IN SSHFP 1 1 6243EC2D53E6F6F0C34368C65A44182205C5B0D4 +07617A6B6162616E096E6C6E65746C616273026E6C00002C0001000027D8001602019B6E52735388C32C62A6CE38000809897C922DA9 +azkaban.nlnetlabs.nl. 10200 IN SSHFP 2 1 9B6E52735388C32C62A6CE38000809897C922DA9 +07617A6B6162616E096E6C6E65746C616273026E6C00002C0001000027D800160301120D6B12587D5520FA736D6485FB52210B5584C2 +azkaban.nlnetlabs.nl. 10200 IN SSHFP 3 1 120D6B12587D5520FA736D6485FB52210B5584C2 +07617A6B6162616E096E6C6E65746C616273026E6C00002F000100000E1000230C6261636B75702D73746F7265096E6C6E65746C616273026E6C00000640000008000B +azkaban.nlnetlabs.nl. 3600 IN NSEC backup-store.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0C6261636B75702D73746F7265096E6C6E65746C616273026E6C0000050001000027D8001607676F72696C6C61096E6C6E65746C616273026E6C00 +backup-store.nlnetlabs.nl. 10200 IN CNAME gorilla.nlnetlabs.nl. +0C6261636B75702D73746F7265096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00592730B868D0A8E2A9B321BD1598DC29EBA3CEC615281511806B14BE618C44CDFEC894CB464B7DA63DBD493318C1855C6F20F8C2245D0B23103450109963218E097581CEB9A37500D4B303111B3E1F1C4F19E4A48B1748CBAFD842D2E98B15702138EBDC04ACCCEB85FFD65E4CF3C9CA39C5F8B2C39983753293090EF9E5A047 +backup-store.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WScwuGjQqOKpsyG9FZjcKeujzsYVKBURgGsUvmGMRM3+yJTLRkt9pj29STMYwYVcbyD4wiRdCyMQNFAQmWMhjgl1gc65o3UA1LMDERs+HxxPGeSkixdIy6/YQtLpixVwITjr3ASszOuF/9ZeTPPJyjnF+LLDmYN1MpMJDvnloEc= ;{id = 42393} +0C6261636B75702D73746F7265096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0061A4947F012F0FE06DB5FF2B1486B84B4023EED76B37A0B6F7863F53418763EF8214FF949E13925A02D64ACAB39CE4DF8F5ED6A22C68CFE318ED288749995DEA1DF5B722EF7F434D780AB89CA427CC6A1BF3727A26809368435D318FF6F41E0947FA5F127953E1A2D19E7AD0D79CA8C4CC6F16FF103D7D68E8344F9305B437A7 +backup-store.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YaSUfwEvD+Bttf8rFIa4S0Aj7tdrN6C294Y/U0GHY++CFP+UnhOSWgLWSsqznOTfj17Woixoz+MY7SiHSZld6h31tyLvf0NNeAq4nKQnzGob83J6JoCTaENdMY/29B4JR/pfEnlT4aLRnnrQ15yoxMxvFv8QPX1o6DRPkwW0N6c= ;{id = 42393} +0C6261636B75702D73746F7265096E6C6E65746C616273026E6C00002F000100000E10001C0562616C6F75096E6C6E65746C616273026E6C000006040000000003 +backup-store.nlnetlabs.nl. 3600 IN NSEC balou.nlnetlabs.nl. CNAME RRSIG NSEC +0562616C6F75096E6C6E65746C616273026E6C0000010001000027D80004D59AE06A +balou.nlnetlabs.nl. 10200 IN A 213.154.224.106 +0562616C6F75096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004B601404907688E92AA280908807F15D502802AFD9E2DC93340D3E90A1D2318FA7A0A7580AFF0DF09408DAE14287A7C429D27836FEF7FE3D98430B5B2781FC26EB88AF4483D5D8507BE06736219A63CFA82184FFB510AB8F3214F278E24DE0F508FB3F41916297C7CC8384E2CED4FFA083E2724C9CBFB012FA09EAE3EDBA0A8C +balou.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. S2AUBJB2iOkqooCQiAfxXVAoAq/Z4tyTNA0+kKHSMY+noKdYCv8N8JQI2uFCh6fEKdJ4Nv73/j2YQwtbJ4H8JuuIr0SD1dhQe+BnNiGaY8+oIYT/tRCrjzIU8njiTeD1CPs/QZFil8fMg4TiztT/oIPickycv7AS+gnq4+26Cow= ;{id = 42393} +0562616C6F75096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008F1C67AA4B402D5CBB021D7158E2300A5D5AF8EC6E2D0C5699F50A5462D6DF235B85BBEEC6793B10C98679E1F2AFCA0E49AD7E8871A58FEA7733D3E4A495080327117CEAAB34D48D5384DCD0B86C43E41B33DD4485ADF11051CDB8EBD4C30106E653AEC45E863A7F5908032BC90C2B0C774ADCB5D9EA96A9BCB1F20F083767D9 +balou.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jxxnqktALVy7Ah1xWOIwCl1a+OxuLQxWmfUKVGLW3yNbhbvuxnk7EMmGeeHyr8oOSa1+iHGlj+p3M9PkpJUIAycRfOqrNNSNU4Tc0LhsQ+QbM91Eha3xEFHNuOvUwwEG5lOuxF6GOn9ZCAMryQwrDHdK3LXZ6papvLHyDwg3Z9k= ;{id = 42393} +0562616C6F75096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004F40CA0839E2AF041E428A7565A74555CC09B2A1A2CAAF161472543FBCEC838AEF63037A0165E8C41D96CE6129AE1C0E28419E6BCB8C24343C7B72CC0BA2464C82B1F951335C574D9FCEA72E041874DC1ED56CE084951ACB6AB56AD7AD5C207A1A9E6F9C80F964AA9EF650C1593B5E31F86D2792CF2419F1D70ACA3BA096EB30 +balou.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T0DKCDnirwQeQop1ZadFVcwJsqGiyq8WFHJUP7zsg4rvYwN6AWXoxB2WzmEprhwOKEGea8uMJDQ8e3LMC6JGTIKx+VEzXFdNn86nLgQYdNwe1WzghJUay2q1atetXCB6Gp5vnID5ZKqe9lDBWTteMfhtJ5LPJBnx1wrKO6CW6zA= ;{id = 42393} +0562616C6F75096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002BB9D820B1A757682FAC72AAB8D7239D0483821F2E33BEDF4E9AB1CF460434921309CABD7B6BCED9434FAC80AADB299A471DCC71905A50E6FFAA043B70CA0B25EE1AACA55944ECAB7331B050B6A9C0A27C2423013C3232DBD88A398AAFB7F586807B75BB7E4C316D418B3EEEC659CA67D569248376CCD4A8CC6905A7C4887DF7 +balou.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. K7nYILGnV2gvrHKquNcjnQSDgh8uM77fTpqxz0YENJITCcq9e2vO2UNPrICq2ymaRx3McZBaUOb/qgQ7cMoLJe4arKVZROyrczGwULapwKJ8JCMBPDIy29iKOYqvt/WGgHt1u35MMW1Biz7uxlnKZ9VpJIN2zNSozGkFp8SIffc= ;{id = 42393} +0562616C6F75096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021422FFFE13A1E9 +balou.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:214:22ff:fe13:a1e9 +0562616C6F75096E6C6E65746C616273026E6C00002C0001000027D8001601013B6531DEA06624D1C9ECC9A91D2A077EE5BD8AA9 +balou.nlnetlabs.nl. 10200 IN SSHFP 1 1 3B6531DEA06624D1C9ECC9A91D2A077EE5BD8AA9 +0562616C6F75096E6C6E65746C616273026E6C00002C0001000027D80016020112D68C712D4D33B453059DF239853113C88AA26F +balou.nlnetlabs.nl. 10200 IN SSHFP 2 1 12D68C712D4D33B453059DF239853113C88AA26F +0562616C6F75096E6C6E65746C616273026E6C00002F000100000E10001D06626172746F6B096E6C6E65746C616273026E6C00000640000008000B +balou.nlnetlabs.nl. 3600 IN NSEC bartok.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +06626172746F6B096E6C6E65746C616273026E6C0000010001000027D80004D59AE032 +bartok.nlnetlabs.nl. 10200 IN A 213.154.224.50 +06626172746F6B096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C000CAADD4EAF427B6C155AA080D60D17F71C34432A63C829D651277D54753A7504D2C5621981DF7C8C41D975942F89EE8B020538FDF342733FA0CA04CC72094C7BAE1D639BE93D3EBF48D2C57DEA9648B3DEA469987C75661E55DC7692F439F75E3E968E0FA812949E4A6A74CDAB10017DE8C19ADB389CA971354ECF3C8C6343F5 +bartok.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. DKrdTq9Ce2wVWqCA1g0X9xw0QypjyCnWUSd9VHU6dQTSxWIZgd98jEHZdZQvie6LAgU4/fNCcz+gygTMcglMe64dY5vpPT6/SNLFfeqWSLPepGmYfHVmHlXcdpL0OfdePpaOD6gSlJ5KanTNqxABfejBmts4nKlxNU7PPIxjQ/U= ;{id = 42393} +06626172746F6B096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D3141D44C1441D9A195A1C12B1B6AC01DE7FD2EB08E8A81F70691403B52D89EBB331015C9A582169491B519BDEF36C669F3FBCD0CFCF57848F093CFD01463BC8A8355DE2C8255B7D7A3DD5C48A922C85141C8B2D2686CA3CC090EC22165B1E8371F8A5C897190EFC7161F2EFB166412B856E82D93DA7B36D42F6AF96D0D115F8 +bartok.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0xQdRMFEHZoZWhwSsbasAd5/0usI6KgfcGkUA7UtieuzMQFcmlghaUkbUZve82xmnz+80M/PV4SPCTz9AUY7yKg1XeLIJVt9ej3VxIqSLIUUHIstJobKPMCQ7CIWWx6DcfilyJcZDvxxYfLvsWZBK4Vugtk9p7NtQvavltDRFfg= ;{id = 42393} +06626172746F6B096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00113D8ED7F669AFC8D757F21C16AE267DFB4767B3925E76EC4F18700EF21B263E4CD2EF456D24681ACF70D2477AF86D2656C9DBF03785F154E4BD7597A2B8F3B3266A3B0F98B822F27DC89E193A096C1E6B7E932E222CAFE1B7B2E1699CF23B79B5AE86F9123369BA32940446AD01948D6733D0983463B71D7C60D55E74C79E64 +bartok.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ET2O1/Zpr8jXV/IcFq4mfftHZ7OSXnbsTxhwDvIbJj5M0u9FbSRoGs9w0kd6+G0mVsnb8DeF8VTkvXWXorjzsyZqOw+YuCLyfcieGToJbB5rfpMuIiyv4bey4Wmc8jt5ta6G+RIzaboylARGrQGUjWcz0Jg0Y7cdfGDVXnTHnmQ= ;{id = 42393} +06626172746F6B096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001C10173633500983EF0211B7E36F63A34A5182F31554A4FB3FDDBF0F67747279ADED205F6F58536321E062B64C057C4A2E8B6D19053AE14263104CCADB7A1FCAF83B2C26919EF7DD1202066B7519A76B959AD3D016686E0A798871495A9549188A41D09DE28F353E3F9C2F32F6EC7BA034FB8CE75BCD173FF2CCFBB10052FF4E +bartok.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HBAXNjNQCYPvAhG3429jo0pRgvMVVKT7P92/D2d0cnmt7SBfb1hTYyHgYrZMBXxKLottGQU64UJjEEzK23ofyvg7LCaRnvfdEgIGa3UZp2uVmtPQFmhuCnmIcUlalUkYikHQneKPNT4/nC8y9ux7oDT7jOdbzRc/8sz7sQBS/04= ;{id = 42393} +06626172746F6B096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021676FFFEB83C02 +bartok.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:216:76ff:feb8:3c02 +06626172746F6B096E6C6E65746C616273026E6C00002C0001000027D800160101A8B153B03F64A09B6FC214B5BCE75CF19E0D2865 +bartok.nlnetlabs.nl. 10200 IN SSHFP 1 1 A8B153B03F64A09B6FC214B5BCE75CF19E0D2865 +06626172746F6B096E6C6E65746C616273026E6C00002C0001000027D8001602017070C07AAA3ABC4670865AC7CAAC4038EBECF8AF +bartok.nlnetlabs.nl. 10200 IN SSHFP 2 1 7070C07AAA3ABC4670865AC7CAAC4038EBECF8AF +06626172746F6B096E6C6E65746C616273026E6C00002C0001000027D800160301F1F3BAF7D59C68D98151C913B440F6C1D8FB622E +bartok.nlnetlabs.nl. 10200 IN SSHFP 3 1 F1F3BAF7D59C68D98151C913B440F6C1D8FB622E +06626172746F6B096E6C6E65746C616273026E6C00002F000100000E10001F08626568656D6F7468096E6C6E65746C616273026E6C00000640000008000B +bartok.nlnetlabs.nl. 3600 IN NSEC behemoth.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +08626568656D6F7468096E6C6E65746C616273026E6C0000050001000027D8001908626568656D6F74680A6F76657265696E646572036E657400 +behemoth.nlnetlabs.nl. 10200 IN CNAME behemoth.overeinder.net. +08626568656D6F7468096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00274DA00D558CBE539DD0B2F3DEB9EE59BE3A68D98D678B4B961DDCF8B90B85DB535592C55189BC317E31BDFBAFCF6FBCE1458EC91AB4343C9FB625D4AD60416215172C1AAD08EBB135B17C3056B5260810F9819384727638BB4A1580B526E3F8D659F830FA2F2236B1073CE267385848F2581FD10BDA3E9A75E7CA14C74BFE12 +behemoth.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. J02gDVWMvlOd0LLz3rnuWb46aNmNZ4tLlh3c+LkLhdtTVZLFUYm8MX4xvfuvz2+84UWOyRq0NDyftiXUrWBBYhUXLBqtCOuxNbF8MFa1JggQ+YGThHJ2OLtKFYC1JuP41ln4MPovIjaxBzziZzhYSPJYH9EL2j6adefKFMdL/hI= ;{id = 42393} +08626568656D6F7468096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C26AD8C13516A2D99B631073D7C1AB8DB492F1DCBA2DFE8C10678CB974D70DF0875F717AA882B895AE91474BC494B99E0E4C98DEA1CB9BF5DE6B9BCD2FC4C60AB10028ABDBC6F2EDB666A57C93717E557CE81EF96D4544D8B6D8B716A83D0B91B9AA429490A0A326E667D71F3D31AD2BAFBCC86709FC45638AEC5F4459D8998E +behemoth.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wmrYwTUWotmbYxBz18GrjbSS8dy6Lf6MEGeMuXTXDfCHX3F6qIK4la6RR0vElLmeDkyY3qHLm/Xea5vNL8TGCrEAKKvbxvLttmalfJNxflV86B75bUVE2LbYtxaoPQuRuapClJCgoybmZ9cfPTGtK6+8yGcJ/EVjiuxfRFnYmY4= ;{id = 42393} +08626568656D6F7468096E6C6E65746C616273026E6C00002F000100000E10001B0462656C61096E6C6E65746C616273026E6C000006040000000003 +behemoth.nlnetlabs.nl. 3600 IN NSEC bela.nlnetlabs.nl. CNAME RRSIG NSEC +0462656C61096E6C6E65746C616273026E6C0000010001000027D80004D59AE016 +bela.nlnetlabs.nl. 10200 IN A 213.154.224.22 +0462656C61096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001C54AA3EA26D419CD2D915B5563990681D3DECE6FA2EEF48837A93852A52AFFD13D20890AD3EBC3974DEAE957D32F5B29959B2148DC2268977DF49A6B721F331D2BC5DDE49418033CB4A6D7602063D098665967B714C856BBF32AC1431295BF144EF8EF61AB934B71EAE49B9FD35A45F2D7DB960C3978A5DDF8CD6E5A9FF7F25 +bela.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HFSqPqJtQZzS2RW1VjmQaB097Ob6Lu9Ig3qThSpSr/0T0giQrT68OXTerpV9MvWymVmyFI3CJol330mmtyHzMdK8Xd5JQYAzy0ptdgIGPQmGZZZ7cUyFa78yrBQxKVvxRO+O9hq5NLcerkm5/TWkXy19uWDDl4pd34zW5an/fyU= ;{id = 42393} +0462656C61096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004592DEC9C41F925472E79CD3B792BA1B5A5F9390BEC391826A63817012A4C4C0B45445003C0B77E634EA1B62B3BCF3059762C5EFF2C86CF232ECB88EC2229F4BCBC3A5E3E9B9CECF95BADD0521B727BDBACD873C7F6E316EFC72F4C8E621A0F67D51325B489D7132329DA9862AC22A0EC1F79BC04F75A988302D0A6748CBAD82 +bela.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RZLeycQfklRy55zTt5K6G1pfk5C+w5GCamOBcBKkxMC0VEUAPAt35jTqG2KzvPMFl2LF7/LIbPIy7LiOwiKfS8vDpePpuc7PlbrdBSG3J726zYc8f24xbvxy9MjmIaD2fVEyW0idcTIynamGKsIqDsH3m8BPdamIMC0KZ0jLrYI= ;{id = 42393} +0462656C61096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00154C5BC00E8743D033DBCA600B7DDED1F53B1C0E1CE7A8669F861C90D053185FDB461122F8C1C91E833ADCBFCECCCAE068655D035548E4C9F878F59DE7982C9C06285F1E4974DA0616A70F20EFC30AA5251CE0224920F74A5B3F52C97879CDC7293DFCB1A8CD105D383A9C77B219D1E0DA28BAAEC12F0E0FC38FE65C54369D3E +bela.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUxbwA6HQ9Az28pgC33e0fU7HA4c56hmn4YckNBTGF/bRhEi+MHJHoM63L/OzMrgaGVdA1VI5Mn4ePWd55gsnAYoXx5JdNoGFqcPIO/DCqUlHOAiSSD3Sls/Usl4ec3HKT38sajNEF04Opx3shnR4Noouq7BLw4Pw4/mXFQ2nT4= ;{id = 42393} +0462656C61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000C01657068BA7BC28B0512C79736FC62597C18EA8DE3D4E6EE8F8DBE52832262B11DAEE0510150A70F4C25505FFA3DC668B4F4E6F92129AA6C3937669C15BBCA54AE4DCC98411927EC24E86CAEFA9B9D4A27489210EAB825D16194C8841287965A3BE146978CA8438FEFB0C4C01B698F13CF0B92197693A1420E1CFA22A0386D +bela.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DAFlcGi6e8KLBRLHlzb8Yll8GOqN49Tm7o+NvlKDImKxHa7gUQFQpw9MJVBf+j3GaLT05vkhKapsOTdmnBW7ylSuTcyYQRkn7CTobK76m51KJ0iSEOq4JdFhlMiEEoeWWjvhRpeMqEOP77DEwBtpjxPPC5IZdpOhQg4c+iKgOG0= ;{id = 42393} +0462656C61096E6C6E65746C616273026E6C00001C0001000027D80010200107B80206000102224DFFFE554CCB +bela.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:222:4dff:fe55:4ccb +0462656C61096E6C6E65746C616273026E6C00002C0001000027D800160101CB43092FDF932BECE7FDAE60412D47BFD4837E32 +bela.nlnetlabs.nl. 10200 IN SSHFP 1 1 CB43092FDF932BECE7FDAE60412D47BFD4837E32 +0462656C61096E6C6E65746C616273026E6C00002C0001000027D800160201B85F5AFD56896ECB66B8F11194BEA1B43C32CA2D +bela.nlnetlabs.nl. 10200 IN SSHFP 2 1 B85F5AFD56896ECB66B8F11194BEA1B43C32CA2D +0462656C61096E6C6E65746C616273026E6C00002C0001000027D800160301D8DA794FCF4ABF727025AAD3C54E41D348C17E1C +bela.nlnetlabs.nl. 10200 IN SSHFP 3 1 D8DA794FCF4ABF727025AAD3C54E41D348C17E1C +0462656C61096E6C6E65746C616273026E6C00002F000100000E10001C05626C6F6773096E6C6E65746C616273026E6C00000640000008000B +bela.nlnetlabs.nl. 3600 IN NSEC blogs.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +05626C6F6773096E6C6E65746C616273026E6C0000010001000027D80004D59AE087 +blogs.nlnetlabs.nl. 10200 IN A 213.154.224.135 +05626C6F6773096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0088F404A46522FF907ACA1D2F7F4A0EC091E147CEFB08E4CB1A7FD3C81257E90D612753496A8A9BA7839661D62B1DB9DC02C6E09C9444761BFDA102E0EBAEB7D5A5F602A2AD65BFC8B230556042C8E1D126082A29B83D5611F5847E01DF12236FF58488597D22B57692D7DD57A4F778263396D8BF4D915B953C5854CF448332BD +blogs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iPQEpGUi/5B6yh0vf0oOwJHhR877COTLGn/TyBJX6Q1hJ1NJaoqbp4OWYdYrHbncAsbgnJREdhv9oQLg66631aX2AqKtZb/IsjBVYELI4dEmCCopuD1WEfWEfgHfEiNv9YSIWX0itXaS191XpPd4JjOW2L9NkVuVPFhUz0SDMr0= ;{id = 42393} +05626C6F6773096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001CE0E554028A7BBDCFCC189886968B6AC70D1A39816288FEA342E14314AD634C94A51EE97C74A5B5B6DB983AEC36645324B3E46AFCD23E6043C0B7B5B62B0C049374B30BDF8E9DBCC19FA2894D990E7C12870726DC4B8D1E16620D28D87D289F55DBCF8469BAC3A4A700284C82566987063A35CB6F89E444956164F8486351CD +blogs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HODlVAKKe73PzBiYhpaLascNGjmBYoj+o0LhQxStY0yUpR7pfHSltbbbmDrsNmRTJLPkavzSPmBDwLe1tisMBJN0swvfjp28wZ+iiU2ZDnwShwcm3EuNHhZiDSjYfSifVdvPhGm6w6SnAChMglZphwY6NctvieRElWFk+EhjUc0= ;{id = 42393} +05626C6F6773096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004C291CEE7459658105C4972524F9420C54CDC668778FC8C86114F9EEB7132401EF86BC8242BDEDB17B73C0E5F31D4DF48F2884D63D4C0D4759CDAADD3F05CDD59404BBB6CA771C8DCBE9BBB2704DA1AA597B96C055BF9CF12E2ACB42563BAD6813158580E2079697C4A2517F925412BCB1BD1C5E862C8D917345199DD367B929 +blogs.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TCkc7nRZZYEFxJclJPlCDFTNxmh3j8jIYRT57rcTJAHvhryCQr3tsXtzwOXzHU30jyiE1j1MDUdZzardPwXN1ZQEu7bKdxyNy+m7snBNoapZe5bAVb+c8S4qy0JWO61oExWFgOIHlpfEolF/klQSvLG9HF6GLI2Rc0UZndNnuSk= ;{id = 42393} +05626C6F6773096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004C937ECE2F4D7AA36EA390CBFFBA448C1D36FA2CB68FB44AB6358BE93E5958B060496807F18EF28605AC1BE4C9303C8E85259B04329B7E128F1BF632AA2BA72284F4B7F5C34F647E298DD1ED8FEEBA91E4E09DD7BAE7F557ED13B433B0B5B5E420DD24D4C55E0298D1D88AB1575FE3413EA8474DC930A0A94A998D8DCEA182AA +blogs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. TJN+zi9NeqNuo5DL/7pEjB02+iy2j7RKtjWL6T5ZWLBgSWgH8Y7yhgWsG+TJMDyOhSWbBDKbfhKPG/YyqiunIoT0t/XDT2R+KY3R7Y/uupHk4J3Xuuf1V+0TtDOwtbXkIN0k1MVeApjR2IqxV1/jQT6oR03JMKCpSpmNjc6hgqo= ;{id = 42393} +05626C6F6773096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF000900000000 +blogs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:9:: +05626C6F6773096E6C6E65746C616273026E6C00002C0001000027D800160101C0C1D59D9219402303D4ADE4CEAB40193D3CE55A +blogs.nlnetlabs.nl. 10200 IN SSHFP 1 1 C0C1D59D9219402303D4ADE4CEAB40193D3CE55A +05626C6F6773096E6C6E65746C616273026E6C00002C0001000027D800160201154A0526AFCF080F205490DBADFB75220383B787 +blogs.nlnetlabs.nl. 10200 IN SSHFP 2 1 154A0526AFCF080F205490DBADFB75220383B787 +05626C6F6773096E6C6E65746C616273026E6C00002F000100000E10001E012A05626C6F6773096E6C6E65746C616273026E6C00000640000008000B +blogs.nlnetlabs.nl. 3600 IN NSEC *.blogs.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +012A05626C6F6773096E6C6E65746C616273026E6C0000010001000027D80004D59AE087 +*.blogs.nlnetlabs.nl. 10200 IN A 213.154.224.135 +012A05626C6F6773096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007D987ED225BAA394EE426A2D4800BEF2A200C6C33A9325C9F11DC4BB23B0BD3BAFA3F0F0B089BB836CACA37EC1998EAD2854FC02C82D05D7AD8BBD665D28F80DA585660FFCBB9F164211DC08AE4B09A5C00F982A2E7D9C9FE0BE9F21BC406A7158BB03EE3C457F8BC947DC66035CA1301D0D0FA34A2380DEDC28C7CE31002DFE +*.blogs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fZh+0iW6o5TuQmotSAC+8qIAxsM6kyXJ8R3EuyOwvTuvo/DwsIm7g2yso37BmY6tKFT8AsgtBdeti71mXSj4DaWFZg/8u58WQhHcCK5LCaXAD5gqLn2cn+C+nyG8QGpxWLsD7jxFf4vJR9xmA1yhMB0ND6NKI4De3CjHzjEALf4= ;{id = 42393} +012A05626C6F6773096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0009559165CD8246767832204C92437B0D295101570CE1B4654D7BD845852737CA1F0627C6C6E7876A33F2F4A66D74444DBD0E5DB2FDE52D7B5F875700C073F629FD1DF9A24C7B62CE188E3EC03CA7EC30DB39CA260C2B341682C17AB796527EE9BD35A1EE8D972B29E92EE6D8A992F18A265D9A58CF3B2FB7C0CF08734D540D3F +*.blogs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CVWRZc2CRnZ4MiBMkkN7DSlRAVcM4bRlTXvYRYUnN8ofBifGxueHajPy9KZtdERNvQ5dsv3lLXtfh1cAwHP2Kf0d+aJMe2LOGI4+wDyn7DDbOcomDCs0FoLBereWUn7pvTWh7o2XKynpLubYqZLxiiZdmljPOy+3wM8Ic01UDT8= ;{id = 42393} +012A05626C6F6773096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008772E2891069D0805485F9BA915A4059D3CC0E7C6B0DCFEA69677025173EA2D63CFCBA4D0B1781A5FFD0BF1720FE22E1C1B4284FD3AB39717699124532993152ED75817FB752DA510A897150E257E5C04B7DDEA679E8B8D1F5675AD4C058400972115250B026A8B3D5E9CFEFE2A83736D583A4A00A822328A34D6EBAA03CCEB4 +*.blogs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. h3LiiRBp0IBUhfm6kVpAWdPMDnxrDc/qaWdwJRc+otY8/LpNCxeBpf/Qvxcg/iLhwbQoT9OrOXF2mRJFMpkxUu11gX+3UtpRColxUOJX5cBLfd6meei40fVnWtTAWEAJchFSULAmqLPV6c/v4qg3NtWDpKAKgiMoo01uuqA8zrQ= ;{id = 42393} +012A05626C6F6773096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF000900000000 +*.blogs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:9:: +012A05626C6F6773096E6C6E65746C616273026E6C00002F000100000E10001C05626F677573096E6C6E65746C616273026E6C000006400000080003 +*.blogs.nlnetlabs.nl. 3600 IN NSEC bogus.nlnetlabs.nl. A AAAA RRSIG NSEC +05626F677573096E6C6E65746C616273026E6C00001000010000000A000E0D77696C6C20626520426F677573 +bogus.nlnetlabs.nl. 10 IN TXT "will be Bogus" +05626F677573096E6C6E65746C616273026E6C00002E00010000000A00A0001008030000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C0041EFA2CDDF5D3AF63865582104BB9A0C9612F4BC9C97A253218DD54FC5856F3DD06C912D9D34EBFDF79B4DD1F186E395EBF3F9BD17C53BB7C346B1F7283D1E70CDB4D6966A28F7E5B6BF6E386D78B819439085741E97CA67DF83BBD2F8B6E5136100D142EF09778213276CA6535B9B33E79259D235C38808A20F704E676F792A +bogus.nlnetlabs.nl. 10 IN RRSIG TXT 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. Qe+izd9dOvY4ZVghBLuaDJYS9Lycl6JTIY3VT8WFbz3QbJEtnTTr/febTdHxhuOV6/P5vRfFO7fDRrH3KD0ecM201pZqKPfltr9uOG14uBlDkIV0HpfKZ9+Du9L4tuUTYQDRQu8Jd4ITJ2ymU1ubM+eSWdI1w4gIog9wTmdveSo= ;{id = 42393} +05626F677573096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008253C9B22DFEF7D2D31C55488576900ABA4DC943F6F5B31ECA2C7562B797F3CEE2D1EF0C5341C26B1A8AFE9507EAFE8EB0992FFD0E37AF61A393265E3D7A4B79D80FA697C295114A781F826A619EE66AD393CD66BD82895AD31ABBBFBC47D7E857EC6CD06CB25F37396853123C87071CDBD0AFCBE28D8D430CDCA10EA5037212 +bogus.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. glPJsi3+99LTHFVIhXaQCrpNyUP29bMeyix1YreX887i0e8MU0HCaxqK/pUH6v6OsJkv/Q43r2GjkyZePXpLedgPppfClRFKeB+CamGe5mrTk81mvYKJWtMau7+8R9foV+xs0GyyXzc5aFMSPIcHHNvQr8vijY1DDNyhDqUDchI= ;{id = 42393} +05626F677573096E6C6E65746C616273026E6C00002F000100000E10001C0562726F6572096E6C6E65746C616273026E6C000006000080000003 +bogus.nlnetlabs.nl. 3600 IN NSEC broer.nlnetlabs.nl. TXT RRSIG NSEC +0562726F6572096E6C6E65746C616273026E6C0000010001000027D80004D59AE003 +broer.nlnetlabs.nl. 10200 IN A 213.154.224.3 +0562726F6572096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B2799E7AF5429E127DF44A5EA6436342F78D299CF95417B42976A580104C2EAA05E85E73551D0E1EB987B5358B32B58E5F4AB212233465E2CA2A9E86283C5E05244140C246D6DB3BF69EC8DB97E2D7ABD50705BFF71A6E73A0003F9911FE55B8EF0FA72FF6DDD064BCC60BED89EB3675F2A2F221372E0C9757EC6985C052B09E +broer.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. snmeevVCnhJ99EpepkNjQveNKZz5VBe0KXalgBBMLqoF6F5zVR0OHrmHtTWLMrWOX0qyEiM0ZeLKKp6GKDxeBSRBQMJG1ts79p7I25fi16vVBwW/9xpuc6AAP5kR/lW47w+nL/bd0GS8xgvties2dfKi8iE3LgyXV+xphcBSsJ4= ;{id = 42393} +0562726F6572096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004EC45127807D3DBC401CA9EF6D4D7AA5821A17EAE619F4EC7E8E2E1BB5D6896E061B630BAB34B3FCD9055328C4B671D74A08CC36254369A8604473273862BE3124D7CFCF6F17CBE29537E40F84B398B0665312179D9EB2E3C13B2D57E7947A705A363954679668D3386D88B7483991387F218EBE1F7A66636130534079619CD6 +broer.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TsRRJ4B9PbxAHKnvbU16pYIaF+rmGfTsfo4uG7XWiW4GG2MLqzSz/NkFUyjEtnHXSgjMNiVDaahgRHMnOGK+MSTXz89vF8vilTfkD4SzmLBmUxIXnZ6y48E7LVfnlHpwWjY5VGeWaNM4bYi3SDmROH8hjr4femZjYTBTQHlhnNY= ;{id = 42393} +0562726F6572096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002FBEA2017D131C0589F86BACE9187E7608A405573EA741738269376FF94196BDF294BB7059FAEB3F67015BED0082B0E3487F9C9B4B2F2D65B9D0FD1A21F29F9A67F776B5D20130F10C3B2C0A0E7BF804ACCA636705E2A87008037E8D58724D935947C40E105C25498F0E3D3F68EE72B27C36BF551AEB19C67C7E5FB1C695AC17 +broer.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. L76iAX0THAWJ+Gus6Rh+dgikBVc+p0Fzgmk3b/lBlr3ylLtwWfrrP2cBW+0AgrDjSH+cm0svLWW50P0aIfKfmmf3drXSATDxDDssCg57+ASsymNnBeKocAgDfo1Yck2TWUfEDhBcJUmPDj0/aO5ysnw2v1Ua6xnGfH5fscaVrBc= ;{id = 42393} +0562726F6572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C003CA368703248E3A6C0D16D8288CC2EED9419405EDE89EFAC4891679454B9135B44BA680CCD3A05B29930805261A22B83D902A4D1DBA28F86B8C5D27626D26D02DDECF4B2D3B17EB8F159CE917F7662D11D8B3E7A658EFD8F7785770EA13E81D28A7109664AA063843C4C0B92EC5B40001BF4F8D9CAF26BA9589B9391C46F32B3 +broer.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PKNocDJI46bA0W2CiMwu7ZQZQF7eie+sSJFnlFS5E1tEumgMzToFspkwgFJhoiuD2QKk0duij4a4xdJ2JtJtAt3s9LLTsX648VnOkX92YtEdiz56ZY79j3eFdw6hPoHSinEJZkqgY4Q8TAuS7FtAABv0+NnK8mupWJuTkcRvMrM= ;{id = 42393} +0562726F6572096E6C6E65746C616273026E6C00001C0001000027D80010200107B80206000100BB000000000000 +broer.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:bb:: +0562726F6572096E6C6E65746C616273026E6C00002C0001000027D8001601018290EB11D74E7147221920FB92990ABDE012244D +broer.nlnetlabs.nl. 10200 IN SSHFP 1 1 8290EB11D74E7147221920FB92990ABDE012244D +0562726F6572096E6C6E65746C616273026E6C00002C0001000027D80016020146D8DC5C57933CD04F6F9E459B0D07BA2CABA21C +broer.nlnetlabs.nl. 10200 IN SSHFP 2 1 46D8DC5C57933CD04F6F9E459B0D07BA2CABA21C +0562726F6572096E6C6E65746C616273026E6C00002F000100000E10001C056365726573096E6C6E65746C616273026E6C00000640000008000B +broer.nlnetlabs.nl. 3600 IN NSEC ceres.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +056365726573096E6C6E65746C616273026E6C0000050001000027D800160773697867617465096E6C6E65746C616273026E6C00 +ceres.nlnetlabs.nl. 10200 IN CNAME sixgate.nlnetlabs.nl. +056365726573096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00085A71772681F595C3174E93CD4293019B1CE4ACAB1764A08BF6F1451B66058EED3AEE289F3BF9B97EE2964BC87B1BB1ADB886ECEC7CE65CA19E711D25B4E9E3B9764A41D05A19CAB5803E3510FB48E795C48E95DDBE2D7D9BF801418E01A78BA2B4472581E058C3E40229AC8DE0F1FD10D2310E4E6C1A0574458463240C779D +ceres.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CFpxdyaB9ZXDF06TzUKTAZsc5KyrF2Sgi/bxRRtmBY7tOu4onzv5uX7ilkvIexuxrbiG7Ox85lyhnnEdJbTp47l2SkHQWhnKtYA+NRD7SOeVxI6V3b4tfZv4AUGOAaeLorRHJYHgWMPkAimsjeDx/RDSMQ5ObBoFdEWEYyQMd50= ;{id = 42393} +056365726573096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0020EC385DBC37EB797380DDD604924E5B4CB6403CFE5E96EFA91939CD0525309F95676D82A2CAAB6B787630840E8D5A6DE0266F477C38F8D6E1E549A5E411F28533B533C3483659C1094039B8847F91C4CC3D092F31750F99A2A5A2042AE1AE81D99985CBAA07EBEBBD0BC1F0DF098827428304B929E9B3DDFB14C8D6968055CD +ceres.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IOw4Xbw363lzgN3WBJJOW0y2QDz+XpbvqRk5zQUlMJ+VZ22Cosqra3h2MIQOjVpt4CZvR3w4+Nbh5Uml5BHyhTO1M8NINlnBCUA5uIR/kcTMPQkvMXUPmaKlogQq4a6B2ZmFy6oH6+u9C8Hw3wmIJ0KDBLkp6bPd+xTI1paAVc0= ;{id = 42393} +056365726573096E6C6E65746C616273026E6C00002F000100000E10001C05636F6E6368096E6C6E65746C616273026E6C000006040000000003 +ceres.nlnetlabs.nl. 3600 IN NSEC conch.nlnetlabs.nl. CNAME RRSIG NSEC +05636F6E6368096E6C6E65746C616273026E6C0000010001000027D80004D59AE010 +conch.nlnetlabs.nl. 10200 IN A 213.154.224.16 +05636F6E6368096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0060159F6BC10F4EC1470F1E69488F0EF1485D420834F9BF83AC69340E61547A62A82AE10890DEBD0B7B301562082012D9A76EE7998166E2AB464D354EBC20C64FC35FA5FDEFDAC7A8EE61CB9411126FB2105252C5F514EA36C1ED7460422524E78BA4F0CDB817BF6F555EA0A95D471451A63E2FF901C01DFE06B8266D616F74C3 +conch.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YBWfa8EPTsFHDx5pSI8O8UhdQgg0+b+DrGk0DmFUemKoKuEIkN69C3swFWIIIBLZp27nmYFm4qtGTTVOvCDGT8Nfpf3v2seo7mHLlBESb7IQUlLF9RTqNsHtdGBCJSTni6TwzbgXv29VXqCpXUcUUaY+L/kBwB3+BrgmbWFvdMM= ;{id = 42393} +05636F6E6368096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0006F432579921F45957FEDF086D67E2767334997CA5A08C89B82132CBBCD7C0BC30C330B83A77A4193D382B566E80FE34210EBDAF129EB5156E27BD284834A45EAD05DAC8FBCB570FD5D11B7AB284E3C224FFA7858957A318E5C9FFE3C12F89A30CA94285F7A5DF3BAE70C831E2B13CC781DF334303B767B53A72956C0CA3C570 +conch.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BvQyV5kh9FlX/t8IbWfidnM0mXyloIyJuCEyy7zXwLwwwzC4OnekGT04K1ZugP40IQ69rxKetRVuJ70oSDSkXq0F2sj7y1cP1dEberKE48Ik/6eFiVejGOXJ/+PBL4mjDKlChfel3zuucMgx4rE8x4HfM0MDt2e1OnKVbAyjxXA= ;{id = 42393} +05636F6E6368096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0025EA0AEF0853F464B961570F52D9FFF698E4D392915E8F33167C2D6989986547FDB3296DEA4D4A0A4D1F91CA56B885A84E5C1F489EDBB105F3F3480EAF447481EF5F9B4FB13538FAB68052F6B8CD274DDD2C10ECDFC81DEEDA1333062550DDA01AEBC321227BBC286F66F7019CEBE757A92A50C15740110DD389D6AC23373CA2 +conch.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JeoK7whT9GS5YVcPUtn/9pjk05KRXo8zFnwtaYmYZUf9sylt6k1KCk0fkcpWuIWoTlwfSJ7bsQXz80gOr0R0ge9fm0+xNTj6toBS9rjNJ03dLBDs38gd7toTMwYlUN2gGuvDISJ7vChvZvcBnOvnV6kqUMFXQBEN04nWrCM3PKI= ;{id = 42393} +05636F6E6368096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFEA51267 +conch.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fea5:1267 +05636F6E6368096E6C6E65746C616273026E6C00002F000100000E1000210A636F6E666572656E6365096E6C6E65746C616273026E6C000006400000080003 +conch.nlnetlabs.nl. 3600 IN NSEC conference.nlnetlabs.nl. A AAAA RRSIG NSEC +0A636F6E666572656E6365096E6C6E65746C616273026E6C00000500010000000A0013046F70656E096E6C6E65746C616273026E6C00 +conference.nlnetlabs.nl. 10 IN CNAME open.nlnetlabs.nl. +0A636F6E666572656E6365096E6C6E65746C616273026E6C00002E00010000000A00A0000508030000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C00A9716F80435813A6BFBAA9AF01F390D516AFFF402E30D58DBC391E1AD20A2D97293DEB42DEBBEBD1A7A72A68FDE0AF7D394D6D23630DDD72E0D0C0A1EF1416B42BE8ADAD29934371ED1257019ECED11D79E6CC4EBEF9AED31794756629ABAE9A81A3457DDC1184E733312A89BA2F0F4382A081BF84568C5EC5BC3C54FF517CDE +conference.nlnetlabs.nl. 10 IN RRSIG CNAME 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. qXFvgENYE6a/uqmvAfOQ1Rav/0AuMNWNvDkeGtIKLZcpPetC3rvr0aenKmj94K99OU1tI2MN3XLg0MCh7xQWtCvora0pk0Nx7RJXAZ7O0R155sxOvvmu0xeUdWYpq66agaNFfdwRhOczMSqJui8PQ4Kggb+EVoxexbw8VP9RfN4= ;{id = 42393} +0A636F6E666572656E6365096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00911C8A19CA7DDC04E88962BFB02C92F361DA61EFCB8BF5819B1CB156582E645C9E544DF0B8EC8DF8640D60F38CBB3BE3D394B56E118CCADD4076AF67F5C50E5364757617B67981EBEF4825D975FE441FF8B66CBF63CFADEEA0C6C792751793D16AC41A1A31C50DA557D902E8DD8EFD05EBCAD90C4EC6407E908626004556E8C6 +conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kRyKGcp93AToiWK/sCyS82HaYe/Li/WBmxyxVlguZFyeVE3wuOyN+GQNYPOMuzvj05S1bhGMyt1Adq9n9cUOU2R1dhe2eYHr70gl2XX+RB/4tmy/Y8+t7qDGx5J1F5PRasQaGjHFDaVX2QLo3Y79BevK2QxOxkB+kIYmAEVW6MY= ;{id = 42393} +0A636F6E666572656E6365096E6C6E65746C616273026E6C00002F000100000E1000330C5F786D70702D636C69656E74045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C000006040000000003 +conference.nlnetlabs.nl. 3600 IN NSEC _xmpp-client._tcp.conference.nlnetlabs.nl. CNAME RRSIG NSEC +0C5F786D70702D636C69656E74045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C0000210001000002580019000500001466046F70656E096E6C6E65746C616273026E6C00 +_xmpp-client._tcp.conference.nlnetlabs.nl. 600 IN SRV 5 0 5222 open.nlnetlabs.nl. +0C5F786D70702D636C69656E74045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002E00010000025800A00021080500000258530B29F552E63FF5A599096E6C6E65746C616273026E6C0077815C3EEC07868DF5CA99A6428990154AE133D505CADAC36EC922F3EE58FD08195A5D9BB6B5E2E80CBD0DA468C142E6B0411C010CE85558C7DB104ECB9C4CB4620FACFBDFFE0E37B6A7338D8D719A41767829663F31EEB424F1F8E7FFBF5F7CF77436932D69F6A5BBED5F33826FD5BC806B4856BAB0027C19B91BB181A9D7A7 +_xmpp-client._tcp.conference.nlnetlabs.nl. 600 IN RRSIG SRV 8 5 600 20140224111605 20140127111605 42393 nlnetlabs.nl. d4FcPuwHho31ypmmQomQFUrhM9UFytrDbski8+5Y/QgZWl2btrXi6Ay9DaRowULmsEEcAQzoVVjH2xBOy5xMtGIPrPvf/g43tqczjY1xmkF2eClmPzHutCTx+Of/v19893Q2ky1p9qW77V8zgm/VvIBrSFa6sAJ8GbkbsYGp16c= ;{id = 42393} +0C5F786D70702D636C69656E74045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B761F3DA14278535994A9BCAA96BC6572983FD4262FD6434C4C04FA402488BC3A5936ACA679B878672AB159EF15F264E9F9F3EBC25675946B2B72249BF78A7B20608BDB35B264C698C9645772FDD7886B98B493687068429929EDDAA819D820E59F213EADE36EFDD2BEEC1C1D619336B39484885A90B34C12A8C6AF1B4E72E3A +_xmpp-client._tcp.conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. t2Hz2hQnhTWZSpvKqWvGVymD/UJi/WQ0xMBPpAJIi8Olk2rKZ5uHhnKrFZ7xXyZOn58+vCVnWUaytyJJv3insgYIvbNbJkxpjJZFdy/deIa5i0k2hwaEKZKe3aqBnYIOWfIT6t42790r7sHB1hkzazlISIWpCzTBKoxq8bTnLjo= ;{id = 42393} +0C5F786D70702D636C69656E74045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002F000100000E1000330C5F786D70702D736572766572045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C000006000000004003 +_xmpp-client._tcp.conference.nlnetlabs.nl. 3600 IN NSEC _xmpp-server._tcp.conference.nlnetlabs.nl. SRV RRSIG NSEC +0C5F786D70702D736572766572045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C0000210001000002580019000500001495046F70656E096E6C6E65746C616273026E6C00 +_xmpp-server._tcp.conference.nlnetlabs.nl. 600 IN SRV 5 0 5269 open.nlnetlabs.nl. +0C5F786D70702D736572766572045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002E00010000025800A00021080500000258530B29F552E63FF5A599096E6C6E65746C616273026E6C007D685E40EFA1EF3A2533182A0508D47E662668E185718E0BD0EEFCD242B04FC1E2215CED7547FDF47B1D66874D29CEB5D12EE24B6147265FBD8573C058971914777604D3DCC6EF507E103881873963D9EB66A01597470FCDD9A5B85CDF46CC4AC5D96C0EC6FE29C73D56E71CB8B57373810CC8897B8412533C9CD0DAD400D037 +_xmpp-server._tcp.conference.nlnetlabs.nl. 600 IN RRSIG SRV 8 5 600 20140224111605 20140127111605 42393 nlnetlabs.nl. fWheQO+h7zolMxgqBQjUfmYmaOGFcY4L0O780kKwT8HiIVztdUf99HsdZodNKc610S7iS2FHJl+9hXPAWJcZFHd2BNPcxu9QfhA4gYc5Y9nrZqAVl0cPzdmluFzfRsxKxdlsDsb+Kcc9VuccuLVzc4EMyIl7hBJTPJzQ2tQA0Dc= ;{id = 42393} +0C5F786D70702D736572766572045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004855CFC0D6397173B20B249D27AA8C63C61DAA6BFC617A44264C3A69CD0A180C4D46419A633D8AE45A5896AE2866A68605A39AECD160B73206F5556B2EBAEB3F9089A6D07D185179BBE21FA5C37FDF059672AA98850AACADA85DEA0748ED2F1A729239B23F21DD93C52B582313DF7C2928B4FB1922B0BCFC9727B838F4C0FC2B +_xmpp-server._tcp.conference.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SFXPwNY5cXOyCySdJ6qMY8Ydqmv8YXpEJkw6ac0KGAxNRkGaYz2K5FpYlq4oZqaGBaOa7NFgtzIG9VVrLrrrP5CJptB9GFF5u+IfpcN/3wWWcqqYhQqsrahd6gdI7S8acpI5sj8h3ZPFK1gjE998KSi0+xkisLz8lye4OPTA/Cs= ;{id = 42393} +0C5F786D70702D736572766572045F7463700A636F6E666572656E6365096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313030096E6C6E65746C616273026E6C000006000000004003 +_xmpp-server._tcp.conference.nlnetlabs.nl. 3600 IN NSEC dhcp-100.nlnetlabs.nl. SRV RRSIG NSEC +08646863702D313030096E6C6E65746C616273026E6C0000010001000027D80004D59AE064 +dhcp-100.nlnetlabs.nl. 10200 IN A 213.154.224.100 +08646863702D313030096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003B3664BFDF2C0957AB689C254BAF3016C369C2A7865ED74E56DAB68DEBAB7006D54CD2ABEC124D4C5838181F0FEB368A0A109A309E00BF740C5F4AB9DD86AD2F46A1566229BD72585B1FECBDED03BD4A44E02EB0D14DBD1A18A40B6D098E56563625B07F7FD99DF7A03B6080FCFDA3EB613283D10503B1CBC18FE1224E23AB28 +dhcp-100.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. OzZkv98sCVeraJwlS68wFsNpwqeGXtdOVtq2jeurcAbVTNKr7BJNTFg4GB8P6zaKChCaMJ4Av3QMX0q53YatL0ahVmIpvXJYWx/sve0DvUpE4C6w0U29GhikC20JjlZWNiWwf3/ZnfegO2CA/P2j62Eyg9EFA7HLwY/hIk4jqyg= ;{id = 42393} +08646863702D313030096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009924D433D508B91BC21E9C3B2A56EFF7DD3BBFE3923B362D3108AD185504E64E271B69CB6B02C33906A2B154691511F9E7D0F58201C09F64959F27FF3E4D063ACC10F5E6B9075459CD93A983388400CC0B56E26F7E84838194E15EFAFD6D7B624B4F0BCF2A0753931F8F3182B6BA40736F0FE5F79663CBA4B9C7FFDD4036A9DD +dhcp-100.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mSTUM9UIuRvCHpw7Klbv9907v+OSOzYtMQitGFUE5k4nG2nLawLDOQaisVRpFRH559D1ggHAn2SVnyf/Pk0GOswQ9ea5B1RZzZOpgziEAMwLVuJvfoSDgZThXvr9bXtiS08LzyoHU5MfjzGCtrpAc28P5feWY8ukucf/3UA2qd0= ;{id = 42393} +08646863702D313030096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313031096E6C6E65746C616273026E6C000006400000000003 +dhcp-100.nlnetlabs.nl. 3600 IN NSEC dhcp-101.nlnetlabs.nl. A RRSIG NSEC +08646863702D313031096E6C6E65746C616273026E6C0000010001000027D80004D59AE065 +dhcp-101.nlnetlabs.nl. 10200 IN A 213.154.224.101 +08646863702D313031096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0047D399A0BCAD7F96B28846DABFD4DD1AEA518B448556DDC772BE171F72148245EBA8C024B99BA6F244D482F15B25F3183A77E48F7FBC5ECFC7EF6E1093925CF8AA022F6BAB8C92A9BE383222F24DB1F210B9A1BD784D19475A4C8CD72A1F3A56C67CD5E34EA1696AD31DFC7C1C8051A846B0E6693A27106C3D0F40EA8ABE749F +dhcp-101.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. R9OZoLytf5ayiEbav9TdGupRi0SFVt3Hcr4XH3IUgkXrqMAkuZum8kTUgvFbJfMYOnfkj3+8Xs/H724Qk5Jc+KoCL2urjJKpvjgyIvJNsfIQuaG9eE0ZR1pMjNcqHzpWxnzV406haWrTHfx8HIBRqEaw5mk6JxBsPQ9A6oq+dJ8= ;{id = 42393} +08646863702D313031096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00435C1947DAB66EBBCEA88E94AB73B6A0FD05250410AE08010CBE93169546434C5D348755BC81D6F34B93666E474F8AD7996462CDEA084167C4B876F3E92A9F69842298458801D5DD957F5812AE045C08981FE90301586B910CF7E6DD81C2FB4926A001E32F24A00A9FF45770E76A98116BDB5945DF2C79A0B49109FEB9FCF4D0 +dhcp-101.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Q1wZR9q2brvOqI6Uq3O2oP0FJQQQrggBDL6TFpVGQ0xdNIdVvIHW80uTZm5HT4rXmWRizeoIQWfEuHbz6SqfaYQimEWIAdXdlX9YEq4EXAiYH+kDAVhrkQz35t2BwvtJJqAB4y8koAqf9Fdw52qYEWvbWUXfLHmgtJEJ/rn89NA= ;{id = 42393} +08646863702D313031096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313630096E6C6E65746C616273026E6C000006400000000003 +dhcp-101.nlnetlabs.nl. 3600 IN NSEC dhcp-160.nlnetlabs.nl. A RRSIG NSEC +08646863702D313630096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A0 +dhcp-160.nlnetlabs.nl. 10200 IN A 213.154.224.160 +08646863702D313630096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AE20E3073EFD8AE744FDF70F1A7DB299DDD3FB04DB85F7995587EA40CE539FBFECF8976D92B9ABC66BE308DACB3CA256D3148D7260ECF5E5C0E82FAB45E42BE12353DAB7008E232AF286E0B2C81A6802B85AA3DA09F54581E51D197CF98593EEEE17F3F75AB6C7E8ED5DFCB02DF7459E3895504E44734FC015252968A27CBC55 +dhcp-160.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. riDjBz79iudE/fcPGn2ymd3T+wTbhfeZVYfqQM5Tn7/s+JdtkrmrxmvjCNrLPKJW0xSNcmDs9eXA6C+rReQr4SNT2rcAjiMq8obgssgaaAK4WqPaCfVFgeUdGXz5hZPu7hfz91q2x+jtXfywLfdFnjiVUE5Ec0/AFSUpaKJ8vFU= ;{id = 42393} +08646863702D313630096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0054E9B770164D4B389B940702EE7554330825060EBBB31D4610CAFD6B7630E4A24D072D6F0E597C3F6DD67E7EDEC25F330797310ACD38D992B535FDDEEFC5A4D3E0109309CA6C5B2E5F972DD08A6FCE22427559AD33E069809F2116F1D126BE35529117158EE933772C76B3DEF2D4181899F2AA71DD466BDB53D74A42BB39C525 +dhcp-160.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VOm3cBZNSziblAcC7nVUMwglBg67sx1GEMr9a3Yw5KJNBy1vDll8P23Wfn7ewl8zB5cxCs042ZK1Nf3e78Wk0+AQkwnKbFsuX5ct0IpvziJCdVmtM+BpgJ8hFvHRJr41UpEXFY7pM3csdrPe8tQYGJnyqnHdRmvbU9dKQrs5xSU= ;{id = 42393} +08646863702D313630096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313631096E6C6E65746C616273026E6C000006400000000003 +dhcp-160.nlnetlabs.nl. 3600 IN NSEC dhcp-161.nlnetlabs.nl. A RRSIG NSEC +08646863702D313631096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A1 +dhcp-161.nlnetlabs.nl. 10200 IN A 213.154.224.161 +08646863702D313631096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0096D66BF1D41D05A0EB4CBE06B3E4597A9F2AC4886AE7DFC6C6BB83E3153B8B840D432B64C4574ABA5254555BAC097427E0C507E02B70E24771B25C9DDD217BDAB850605EF8A54FD03FD7EA5865D801B8891B8E800CB57731E9465ADEBEDA9816A017DADDF1D4097F0BD3125EF84EBE6D44B533CC5DE18683C47A2AA05CAA0775 +dhcp-161.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ltZr8dQdBaDrTL4Gs+RZep8qxIhq59/GxruD4xU7i4QNQytkxFdKulJUVVusCXQn4MUH4Ctw4kdxslyd3SF72rhQYF74pU/QP9fqWGXYAbiJG46ADLV3MelGWt6+2pgWoBfa3fHUCX8L0xJe+E6+bUS1M8xd4YaDxHoqoFyqB3U= ;{id = 42393} +08646863702D313631096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C1B27C76EE1E4018704622837577C9D81CDCF5D504B221F1666E6A30F70DD9DFEFEA4027CBA936ACC1DDC9B38F83A067D849725C79C40DC51D6F49781D1E2A510F5E0E600FD8813CB35D431D80F5683C889F58E09226D48C0AA702A469516D92F12C9F01F687898B62D8BE7FB61F0B86BAECA04438CA85517F137DA8FD25CC34 +dhcp-161.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wbJ8du4eQBhwRiKDdXfJ2Bzc9dUEsiHxZm5qMPcN2d/v6kAny6k2rMHdybOPg6Bn2ElyXHnEDcUdb0l4HR4qUQ9eDmAP2IE8s11DHYD1aDyIn1jgkibUjAqnAqRpUW2S8SyfAfaHiYti2L5/th8LhrrsoEQ4yoVRfxN9qP0lzDQ= ;{id = 42393} +08646863702D313631096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313632096E6C6E65746C616273026E6C000006400000000003 +dhcp-161.nlnetlabs.nl. 3600 IN NSEC dhcp-162.nlnetlabs.nl. A RRSIG NSEC +08646863702D313632096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A2 +dhcp-162.nlnetlabs.nl. 10200 IN A 213.154.224.162 +08646863702D313632096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008C13EBCAFD82D411CB65BAE5C6F7E8C5DBBF195D84162D87A822A614457124A674732CA44C61B292780ADA9AB680F4942045A232320F3DA943FEBD4F2489B66FD025121A32044373DACCAAD9E590104CD0D6E9182068C37E9FE320E4AEB0AE6AF49ADAA413D3EC82D5E62138B05D9298A7D828D7915BCA05F9CD95753BC10B7F +dhcp-162.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jBPryv2C1BHLZbrlxvfoxdu/GV2EFi2HqCKmFEVxJKZ0cyykTGGykngK2pq2gPSUIEWiMjIPPalD/r1PJIm2b9AlEhoyBENz2syq2eWQEEzQ1ukYIGjDfp/jIOSusK5q9JrapBPT7ILV5iE4sF2SmKfYKNeRW8oF+c2VdTvBC38= ;{id = 42393} +08646863702D313632096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001DBDCD6E0C5A485C42F2073091C61805E772703AFD91F5CC2855B7A6B2541FEEB098DF44216CA6BE7E7BF06823F3852621E86C1B6F51EAB8E712797773958DBE2EBC36B36E5349C61626DD20B286EF6B0615019B2F2163C4A1BB1E2B1ACAEEBD61CA8A19E11C44DE2BB06CB57CC831EC379C16F29010E252E6AF3C887D734135 +dhcp-162.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Hb3NbgxaSFxC8gcwkcYYBedycDr9kfXMKFW3prJUH+6wmN9EIWymvn578Ggj84UmIehsG29R6rjnEnl3c5WNvi68NrNuU0nGFibdILKG72sGFQGbLyFjxKG7Hisayu69YcqKGeEcRN4rsGy1fMgx7DecFvKQEOJS5q88iH1zQTU= ;{id = 42393} +08646863702D313632096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313633096E6C6E65746C616273026E6C000006400000000003 +dhcp-162.nlnetlabs.nl. 3600 IN NSEC dhcp-163.nlnetlabs.nl. A RRSIG NSEC +08646863702D313633096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A3 +dhcp-163.nlnetlabs.nl. 10200 IN A 213.154.224.163 +08646863702D313633096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D13E67AF32831EEE3BBB2A20D8261E6A77C4D6FE2B7A6CC3F3B3E0AB72A05CBFF2352986834AD9E07E790C872AC2E8227466F72C1D19A19F2F35EE6BA0DE40DE09A50CCBF566EC60C231420B2B64B62F0D98497CA96BA92A4BF3F49F3CBAFF57E3AB84C4A3EBB288C803EB37F46D5AFD81D827D4EAEF17EE5659E1CFDC0CC056 +dhcp-163.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0T5nrzKDHu47uyog2CYeanfE1v4remzD87Pgq3KgXL/yNSmGg0rZ4H55DIcqwugidGb3LB0ZoZ8vNe5roN5A3gmlDMv1ZuxgwjFCCytkti8NmEl8qWupKkvz9J88uv9X46uExKPrsojIA+s39G1a/YHYJ9Tq7xfuVlnhz9wMwFY= ;{id = 42393} +08646863702D313633096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000E7CD4AEFCE81708CBAEFBC615E322BA4F631A6C42C3899ABF11E78FE15F7B4EC1C742EF3F7FC316A6D40FC0EA9260F8D5B265608C362FB4CAC3B9E26BAA2918774A95E9BE3156A23ABFD65D05107CF9DFFF1E5E6051F43E643DD39F5063BE6C3F807BB588145744D01135D21D9FEF22E322E39F8B0B194C96754376DB3E260B +dhcp-163.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DnzUrvzoFwjLrvvGFeMiuk9jGmxCw4mavxHnj+Ffe07Bx0LvP3/DFqbUD8DqkmD41bJlYIw2L7TKw7nia6opGHdKlem+MVaiOr/WXQUQfPnf/x5eYFH0PmQ9059QY75sP4B7tYgUV0TQETXSHZ/vIuMi45+LCxlMlnVDdts+Jgs= ;{id = 42393} +08646863702D313633096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313634096E6C6E65746C616273026E6C000006400000000003 +dhcp-163.nlnetlabs.nl. 3600 IN NSEC dhcp-164.nlnetlabs.nl. A RRSIG NSEC +08646863702D313634096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A4 +dhcp-164.nlnetlabs.nl. 10200 IN A 213.154.224.164 +08646863702D313634096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008205E97E7091715756482FC18FC34170B2A871F1E24CE8100EF76434E5425702E61E078CC19823D7F463FED455FE6C1B217D33389474ED083EC5289F3CDB0940EEDB41D419527AC49D92A54ECBB2A2DE4D0E588A8385A5A6DEEABE4548E42A897AF276D5CAD241C123CD03BFF611E3C62CF6495E01BD332FFC9A585C533EA7F6 +dhcp-164.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ggXpfnCRcVdWSC/Bj8NBcLKocfHiTOgQDvdkNOVCVwLmHgeMwZgj1/Rj/tRV/mwbIX0zOJR07Qg+xSifPNsJQO7bQdQZUnrEnZKlTsuyot5NDliKg4Wlpt7qvkVI5CqJevJ21crSQcEjzQO/9hHjxiz2SV4BvTMv/JpYXFM+p/Y= ;{id = 42393} +08646863702D313634096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002ACD6E433F746A67960501BC45069EB492D3642CE2BA33B90FB7F28484BE52E523E502EEF29DC6578CA454FBBD83CF6290E1373F0AA07A7B6B1BC933119F2F7000D4016488E765EE82983E27B1E310E55BC892D487FF22DAD0773BBDEF8467562A4A8A3F85D6BBCF036DE6650D1EA4A1296FE8423A124C9AFDE678405E8E8631 +dhcp-164.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ks1uQz90ameWBQG8RQaetJLTZCziujO5D7fyhIS+UuUj5QLu8p3GV4ykVPu9g89ikOE3PwqgentrG8kzEZ8vcADUAWSI52Xugpg+J7HjEOVbyJLUh/8i2tB3O73vhGdWKkqKP4XWu88DbeZlDR6koSlv6EI6Ekya/eZ4QF6OhjE= ;{id = 42393} +08646863702D313634096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313635096E6C6E65746C616273026E6C000006400000000003 +dhcp-164.nlnetlabs.nl. 3600 IN NSEC dhcp-165.nlnetlabs.nl. A RRSIG NSEC +08646863702D313635096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A5 +dhcp-165.nlnetlabs.nl. 10200 IN A 213.154.224.165 +08646863702D313635096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CF207A4C1C07F5FED89E0BEF8B4CC4DD1CB975EC3D8C6F986ADAD260AE748EB992D9B9886CC187D16AD73162925818D5A4226C9A95269DE3982916789DA7A47D9D84389952816EDE5EF53E7B602A7D66FEB79222B05887004C22D5D65971513D0D5ED66C51E17FD644462C3390DD999CD8E5DD0C502B7650EB7503F7E61FEB8B +dhcp-165.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. zyB6TBwH9f7Yngvvi0zE3Ry5dew9jG+YatrSYK50jrmS2bmIbMGH0WrXMWKSWBjVpCJsmpUmneOYKRZ4naekfZ2EOJlSgW7eXvU+e2AqfWb+t5IisFiHAEwi1dZZcVE9DV7WbFHhf9ZERiwzkN2ZnNjl3QxQK3ZQ63UD9+Yf64s= ;{id = 42393} +08646863702D313635096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C006F8E8E5A5C3B69A0A0A33DF262B61ED4FCE51FD0FDEDD2CA873C9F631DFEBA8001DB9CF3EDACB8AD16D8CB16CA8C86907EFDB8BF89720733F80114C417DD16C0D3AEE385694463BD8D0706516B854370B95F4DABB4FD3AC0DC983C37F4C39568B51A9160E6B9BF52F1EB451DA1A8AB8A0F695740AEE88860B8DEB3F37DE7F2E6 +dhcp-165.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. b46OWlw7aaCgoz3yYrYe1PzlH9D97dLKhzyfYx3+uoAB25zz7ay4rRbYyxbKjIaQfv24v4lyBzP4ARTEF90WwNOu44VpRGO9jQcGUWuFQ3C5X02rtP06wNyYPDf0w5VotRqRYOa5v1Lx60Udoairig9pV0Cu6IhguN6z833n8uY= ;{id = 42393} +08646863702D313635096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313636096E6C6E65746C616273026E6C000006400000000003 +dhcp-165.nlnetlabs.nl. 3600 IN NSEC dhcp-166.nlnetlabs.nl. A RRSIG NSEC +08646863702D313636096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A6 +dhcp-166.nlnetlabs.nl. 10200 IN A 213.154.224.166 +08646863702D313636096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008991713CF1B37BAFC44E7A1D9C6F3178235C55EC3F9DFBBD21BC14FE98739E41D91AF29CE75DB10E778582BD2349EF046296745A645267B749497098EB690A174DF75816C7241C547424053F594EA53A6B7FA8CBCDCAC3B7FF4E5E5CC36DA7FF4925C6499F41E9561A233D3DA3DC959E33271D3F142EF47BEDA9525ABE39B36D +dhcp-166.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iZFxPPGze6/ETnodnG8xeCNcVew/nfu9IbwU/phznkHZGvKc512xDneFgr0jSe8EYpZ0WmRSZ7dJSXCY62kKF033WBbHJBxUdCQFP1lOpTprf6jLzcrDt/9OXlzDbaf/SSXGSZ9B6VYaIz09o9yVnjMnHT8ULvR77alSWr45s20= ;{id = 42393} +08646863702D313636096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00D2F564C0522857BC4FD4C51B0AC90A68D7EFC97C89B915DAAF680AA1232CE775EB3C5A3576C222F2401AF8C92FB9ED265A19619EA43CFDF1AC47EF79DBE13266E963A014C238FEAEEBC65A6DE1DF9CB120E4C8B7ADCC4FC996DB2608F0420EB169C98279616A5AD913F9CCED57F8C570264E3B9DDBE7B18ED2E49B8B27700D1B +dhcp-166.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0vVkwFIoV7xP1MUbCskKaNfvyXyJuRXar2gKoSMs53XrPFo1dsIi8kAa+Mkvue0mWhlhnqQ8/fGsR+952+EyZuljoBTCOP6u68ZabeHfnLEg5Mi3rcxPyZbbJgjwQg6xacmCeWFqWtkT+cztV/jFcCZOO53b57GO0uSbiydwDRs= ;{id = 42393} +08646863702D313636096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313637096E6C6E65746C616273026E6C000006400000000003 +dhcp-166.nlnetlabs.nl. 3600 IN NSEC dhcp-167.nlnetlabs.nl. A RRSIG NSEC +08646863702D313637096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A7 +dhcp-167.nlnetlabs.nl. 10200 IN A 213.154.224.167 +08646863702D313637096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00465A5726031BAB75A3EE15FE97CB1F765B9A41314F339EA7E96D7181516A29EB883834B910C5644AC164D3C09DB501EAC05D2E358A1FBD3810B1B58CD2FD27B71297FB7DE7862C640E848852B1EE14F59E0AD6B8FB1B7AAB12B3E6ABAAD81EF0F46013FDF6DFE8857BCB491B4B28833595CE9929F0183A2209DF6C418BB2D1B8 +dhcp-167.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RlpXJgMbq3Wj7hX+l8sfdluaQTFPM56n6W1xgVFqKeuIODS5EMVkSsFk08CdtQHqwF0uNYofvTgQsbWM0v0ntxKX+33nhixkDoSIUrHuFPWeCta4+xt6qxKz5quq2B7w9GAT/fbf6IV7y0kbSyiDNZXOmSnwGDoiCd9sQYuy0bg= ;{id = 42393} +08646863702D313637096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B290004E40F8B998B0DFD0134EFA309227CD2331CF5FCE0C9348DC3B05D4EAACD848F8C3E2FC540784148482ED77A4FA15F11960C6463120A95773A3F75CF585D4AA37EC1A7FCE3E576B1FEA466BBA10AA0D1E2A87BBC35732D9E5449EDB5C381314DA257216B9E0FA57A2E050613106BE8D9CF64C028F06BB7847295F524AEF +dhcp-167.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. spAATkD4uZiw39ATTvowkifNIzHPX84Mk0jcOwXU6qzYSPjD4vxUB4QUhILtd6T6FfEZYMZGMSCpV3Oj91z1hdSqN+waf84+V2sf6kZruhCqDR4qh7vDVzLZ5USe21w4ExTaJXIWueD6V6LgUGExBr6NnPZMAo8Gu3hHKV9SSu8= ;{id = 42393} +08646863702D313637096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313638096E6C6E65746C616273026E6C000006400000000003 +dhcp-167.nlnetlabs.nl. 3600 IN NSEC dhcp-168.nlnetlabs.nl. A RRSIG NSEC +08646863702D313638096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A8 +dhcp-168.nlnetlabs.nl. 10200 IN A 213.154.224.168 +08646863702D313638096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004FB184E3F2B1A7286624CA028D66D1FDBF059D41852ED2B444131ECF0E8B3DDCFF1EF4571BEB57B69DA11D3EDE0ED6D683EF63F638E58CF73A7BA8167CFD4E6DF4A639D39F293D63FA2E55418D4520C306493D281057BD1C1666D46B6EC818B02B374C4FD6A2A964BACB857065EFA7C80D8F7F1B93215299326767DC542DB4EC +dhcp-168.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T7GE4/KxpyhmJMoCjWbR/b8FnUGFLtK0RBMezw6LPdz/HvRXG+tXtp2hHT7eDtbWg+9j9jjljPc6e6gWfP1ObfSmOdOfKT1j+i5VQY1FIMMGST0oEFe9HBZm1GtuyBiwKzdMT9aiqWS6y4VwZe+nyA2PfxuTIVKZMmdn3FQttOw= ;{id = 42393} +08646863702D313638096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C006D7C943D53663FC0C7A4C3F1AD4B1761BF0F18CE749032B735AD62335CC067841DE65B3A6A53C055CCA6B73AE4C0104AB6A32DA507A97E37677A368FD687386F6C066AA42718540D13A26D85C5F33DC04784CB063D688D610201B9045E1E8EC928154DE83B7F54D39694A566C18D05FFB3E40D8028EABA5DD4C94CB5F1BDA5E1 +dhcp-168.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. bXyUPVNmP8DHpMPxrUsXYb8PGM50kDK3Na1iM1zAZ4Qd5ls6alPAVcymtzrkwBBKtqMtpQepfjdnejaP1oc4b2wGaqQnGFQNE6JthcXzPcBHhMsGPWiNYQIBuQReHo7JKBVN6Dt/VNOWlKVmwY0F/7PkDYAo6rpd1MlMtfG9peE= ;{id = 42393} +08646863702D313638096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313639096E6C6E65746C616273026E6C000006400000000003 +dhcp-168.nlnetlabs.nl. 3600 IN NSEC dhcp-169.nlnetlabs.nl. A RRSIG NSEC +08646863702D313639096E6C6E65746C616273026E6C0000010001000027D80004D59AE0A9 +dhcp-169.nlnetlabs.nl. 10200 IN A 213.154.224.169 +08646863702D313639096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002ECBF30B072907FB887FF76E760BE6016496F1776EFC468296FCB521A5CB53EC7176385642C819B6C0207AB36CD9EACFD6A678FC0171218C296D1872C5AD36EE9613CC49F7D7FBEE4265D0E4E0560DCCD7E96CF79613BD9A71000DB06E0D82CB75BCB1A992DEAFBAC9BF34013D8FD9EF3BE35EF0983B2903FCAA8975FF14A14C +dhcp-169.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. LsvzCwcpB/uIf/dudgvmAWSW8Xdu/EaClvy1IaXLU+xxdjhWQsgZtsAgerNs2erP1qZ4/AFxIYwpbRhyxa027pYTzEn31/vuQmXQ5OBWDczX6Wz3lhO9mnEADbBuDYLLdbyxqZLer7rJvzQBPY/Z7zvjXvCYOykD/KqJdf8UoUw= ;{id = 42393} +08646863702D313639096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002EDCA6DEF2FE33F720663D55E98B9C7C0E2D3392F2F3E01931E56D206D91BF7081586DBC2AD0CA3C88EFDE3AB12F96C5013F23BDF8E07AE618859B7D5FF6186205B7D42E88385E89964F9B8CFBCCA431B05B8BA02CE620231D001F29488C6FF799F9761AFCACD1D3222FF2C5B5DAC2CC2C8CE530DABE0997910CBC4E83DD6700 +dhcp-169.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ltym3vL+M/cgZj1V6YucfA4tM5Ly8+AZMeVtIG2Rv3CBWG28KtDKPIjv3jqxL5bFAT8jvfjgeuYYhZt9X/YYYgW31C6IOF6Jlk+bjPvMpDGwW4ugLOYgIx0AHylIjG/3mfl2Gvys0dMiL/LFtdrCzCyM5TDavgmXkQy8ToPdZwA= ;{id = 42393} +08646863702D313639096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313730096E6C6E65746C616273026E6C000006400000000003 +dhcp-169.nlnetlabs.nl. 3600 IN NSEC dhcp-170.nlnetlabs.nl. A RRSIG NSEC +08646863702D313730096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AA +dhcp-170.nlnetlabs.nl. 10200 IN A 213.154.224.170 +08646863702D313730096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003A2269CA176D231504EB543E11D747FA028227045217B43CAA678843EA44DBCB9F2F33553E8EEB5033CA9A5AEB1B9EF2DAB4D7BFFDBB23869C1C92D4C9E2E4AA3295165D0D586344C2D222CF51209C40F8BC76DD9A464B78AD800D1E82944EC696E5202C4644167EEADE9FB30E80D3E47CD0884C1E903746E2D32C5C3BB584F2 +dhcp-170.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. OiJpyhdtIxUE61Q+EddH+gKCJwRSF7Q8qmeIQ+pE28ufLzNVPo7rUDPKmlrrG57y2rTXv/27I4acHJLUyeLkqjKVFl0NWGNEwtIiz1EgnED4vHbdmkZLeK2ADR6ClE7GluUgLEZEFn7q3p+zDoDT5HzQiEwekDdG4tMsXDu1hPI= ;{id = 42393} +08646863702D313730096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B950C5792A2C4FEA642B805ED37CFAA774AFAC7CEC61D07BE6BA26463C201A962A5FCB6419E6D5D63C68881B9DB556A358EC1FA81898D53118727CBE54FEBEC512A789C8EFDCAD38BDEFA9FBAA492339154FAC2CB0BAF03E4A4D8A167BA8BBC91C170E16AE7F545F1F82B2EE1E1AB495BE6D1069DAF681C0675BA046DF9EA064 +dhcp-170.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uVDFeSosT+pkK4Be03z6p3SvrHzsYdB75romRjwgGpYqX8tkGebV1jxoiBudtVajWOwfqBiY1TEYcny+VP6+xRKnicjv3K04ve+p+6pJIzkVT6wssLrwPkpNihZ7qLvJHBcOFq5/VF8fgrLuHhq0lb5tEGna9oHAZ1ugRt+eoGQ= ;{id = 42393} +08646863702D313730096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313731096E6C6E65746C616273026E6C000006400000000003 +dhcp-170.nlnetlabs.nl. 3600 IN NSEC dhcp-171.nlnetlabs.nl. A RRSIG NSEC +08646863702D313731096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AB +dhcp-171.nlnetlabs.nl. 10200 IN A 213.154.224.171 +08646863702D313731096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B77610F0F97966B72DAFCF5AF30509EBBAB61E414D27D283829AF00B4F54DC5D40103A13CE163F62D40ABE02C2223489C5958A12AA1AF148FA2C39D5DC368EB3FD35B9BB5152733C483F431DE819C50C7EBF2519372774BE6B19D39F4F16BF830145D6FDFDD6B7980865C3AB04A602F39198109FED4C3AA0BE2EA4D9AFD49BA2 +dhcp-171.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t3YQ8Pl5Zrctr89a8wUJ67q2HkFNJ9KDgprwC09U3F1AEDoTzhY/YtQKvgLCIjSJxZWKEqoa8Uj6LDnV3DaOs/01ubtRUnM8SD9DHegZxQx+vyUZNyd0vmsZ059PFr+DAUXW/f3Wt5gIZcOrBKYC85GYEJ/tTDqgvi6k2a/Um6I= ;{id = 42393} +08646863702D313731096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000E16A50BA042B48F71B3E3445539E725B688088FE52AF42FE75AEA02C9D01F292D0D376EEE0A4D0A5007B6D73519FE922E784966232E337A8F7EE3B2D969A38CACCA4EDE5DDF940EAA8AA29127961750249294FC0759CBFD287B2C3F86EFA3AEC99A26B59843BCD5CD7B24134E6FDA15AAF4ABEA60037D1106F9F2626E47A436 +dhcp-171.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DhalC6BCtI9xs+NEVTnnJbaICI/lKvQv51rqAsnQHyktDTdu7gpNClAHttc1Gf6SLnhJZiMuM3qPfuOy2WmjjKzKTt5d35QOqoqikSeWF1AkkpT8B1nL/Sh7LD+G76OuyZomtZhDvNXNeyQTTm/aFar0q+pgA30RBvnyYm5HpDY= ;{id = 42393} +08646863702D313731096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313732096E6C6E65746C616273026E6C000006400000000003 +dhcp-171.nlnetlabs.nl. 3600 IN NSEC dhcp-172.nlnetlabs.nl. A RRSIG NSEC +08646863702D313732096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AC +dhcp-172.nlnetlabs.nl. 10200 IN A 213.154.224.172 +08646863702D313732096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005177302435D3BD98E873BB2CF7010B7147FE83F8D687B10DBDDE6CC9A2D5AFAC4398CD8D04B9F373919A75E8743890099B8EC08A63E09FD2084F441DC9FF0909D6544F4D62486B00B9A6600C8AAB7256167956728CEC9C3F46FBE02AB704B536656353CB2DE383DCDA07F994B9CCB790D976D562DB42D6D04B5A36B3DE169930 +dhcp-172.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UXcwJDXTvZjoc7ss9wELcUf+g/jWh7ENvd5syaLVr6xDmM2NBLnzc5Gadeh0OJAJm47AimPgn9IIT0Qdyf8JCdZUT01iSGsAuaZgDIqrclYWeVZyjOycP0b74Cq3BLU2ZWNTyy3jg9zaB/mUucy3kNl21WLbQtbQS1o2s94WmTA= ;{id = 42393} +08646863702D313732096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000612B2914CEBFEEE7CAC1F6E468F7BAE31F1A838E4A4DED92B34499029D9F886FB7C5FAD5775BE0AE53CBB9A93180B4AC80F2A587BAF05E11AAA38290CA384D10894CA0ADCED68517A37D94511199E0B19A51D12EF1B1FA7C3CFB01D281DDBEEEE2362AB554BFD7A53958C80BE0ACD06369F86D430F6F751019FFA1AF7F25D9F +dhcp-172.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BhKykUzr/u58rB9uRo97rjHxqDjkpN7ZKzRJkCnZ+Ib7fF+tV3W+CuU8u5qTGAtKyA8qWHuvBeEaqjgpDKOE0QiUygrc7WhRejfZRREZngsZpR0S7xsfp8PPsB0oHdvu7iNiq1VL/XpTlYyAvgrNBjafhtQw9vdRAZ/6GvfyXZ8= ;{id = 42393} +08646863702D313732096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313733096E6C6E65746C616273026E6C000006400000000003 +dhcp-172.nlnetlabs.nl. 3600 IN NSEC dhcp-173.nlnetlabs.nl. A RRSIG NSEC +08646863702D313733096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AD +dhcp-173.nlnetlabs.nl. 10200 IN A 213.154.224.173 +08646863702D313733096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001FC7FF92EDBC2B917C24ED8451B7FF62207B06A1B478A6DC297B627173360EBA48D77C90F165227B7741CB7EC07BEBD4AFBB4C3BCC9BB0196396E3EF08780F1225D725C5AAA727D077B8611C5C2E3936DA3EB8FBC64FD1418F01919A5847D422BD592D317640C2EBC31C5EC5F15BF3C0F4D4E74E28932C3D56582B5593CDF21A +dhcp-173.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. H8f/ku28K5F8JO2EUbf/YiB7BqG0eKbcKXticXM2DrpI13yQ8WUie3dBy37Ae+vUr7tMO8ybsBljluPvCHgPEiXXJcWqpyfQd7hhHFwuOTbaPrj7xk/RQY8BkZpYR9QivVktMXZAwuvDHF7F8VvzwPTU504okyw9VlgrVZPN8ho= ;{id = 42393} +08646863702D313733096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00434006ECDD1EB723C7F929A8A20823054A9BC287CDBEE30D5545F058E2209389CCAD7D29814FAA9BEFF94421E56D76336BB12DE58D52968332A26FA332430CE18C59D9BE3844AD775583EF5BF3F13F36FD1B5A0FB46AE07F9377AB8405D2AD6D8F2897D8DC2EBBB07562032D546F96E430D8BCD644454FEB0E5025093B453701 +dhcp-173.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Q0AG7N0etyPH+SmooggjBUqbwofNvuMNVUXwWOIgk4nMrX0pgU+qm+/5RCHlbXYza7Et5Y1SloMyom+jMkMM4YxZ2b44RK13VYPvW/PxPzb9G1oPtGrgf5N3q4QF0q1tjyiX2Nwuu7B1YgMtVG+W5DDYvNZERU/rDlAlCTtFNwE= ;{id = 42393} +08646863702D313733096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313734096E6C6E65746C616273026E6C000006400000000003 +dhcp-173.nlnetlabs.nl. 3600 IN NSEC dhcp-174.nlnetlabs.nl. A RRSIG NSEC +08646863702D313734096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AE +dhcp-174.nlnetlabs.nl. 10200 IN A 213.154.224.174 +08646863702D313734096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AB60E5942526F4336A0C4B884F42A13FCA08BC6B87EA0C0C95615A33D9EC46FDD47BA13C1F1CCCBCF0FE983E66ED458431563238082AEA53367DEB3A1175C5B3D7D6DCD3D012996A20FE4941C9780B95CD4D49ECB80FED484371A8D483631BE65A329016C369BC318D2EDEB53E91E4731CF0773FC65A60ABFF4D5D01D887114B +dhcp-174.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q2DllCUm9DNqDEuIT0KhP8oIvGuH6gwMlWFaM9nsRv3Ue6E8HxzMvPD+mD5m7UWEMVYyOAgq6lM2fes6EXXFs9fW3NPQEplqIP5JQcl4C5XNTUnsuA/tSENxqNSDYxvmWjKQFsNpvDGNLt61PpHkcxzwdz/GWmCr/01dAdiHEUs= ;{id = 42393} +08646863702D313734096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0077C4354E6F7CBCCB5E533E326D739EF064E0EE4901A2056EC14F04327B4097B38AC13801B97635DC58366F4BAAAF3A784C48BC24571DB741CEE4DCA81F3A8199BA021090F7C4ABA12985345CF6EA6D76EEA026B3CCC7A4BC36AAB44C9D88207BBB7743DB20134CC7F9BDD53007F464F0E097DF819945EAAFA876D04053DCFBD5 +dhcp-174.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. d8Q1Tm98vMteUz4ybXOe8GTg7kkBogVuwU8EMntAl7OKwTgBuXY13Fg2b0uqrzp4TEi8JFcdt0HO5NyoHzqBmboCEJD3xKuhKYU0XPbqbXbuoCazzMekvDaqtEydiCB7u3dD2yATTMf5vdUwB/Rk8OCX34GZReqvqHbQQFPc+9U= ;{id = 42393} +08646863702D313734096E6C6E65746C616273026E6C00002F000100000E10001F08646863702D313735096E6C6E65746C616273026E6C000006400000000003 +dhcp-174.nlnetlabs.nl. 3600 IN NSEC dhcp-175.nlnetlabs.nl. A RRSIG NSEC +08646863702D313735096E6C6E65746C616273026E6C0000010001000027D80004D59AE0AF +dhcp-175.nlnetlabs.nl. 10200 IN A 213.154.224.175 +08646863702D313735096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A26D741EEB13CBF2DAB66EE1FB7EDF2CB80C3B36C5E280E6687DB6DB9472F1C5D4C0A308F94BE9BB6C26957066BBE399C52D6CE9B3516360CCB2A88BBA94925F5DFB8D7E1AAE2B5340816720E1ADA0B754A8220E6AE73155D4A6CBCC6712EA89D90BCB2D9C40889DE4107D6425733E1B9053CCE4B559CEC21C3AC94E2B6B6C47 +dhcp-175.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. om10HusTy/Latm7h+37fLLgMOzbF4oDmaH2225Ry8cXUwKMI+Uvpu2wmlXBmu+OZxS1s6bNRY2DMsqiLupSSX137jX4aritTQIFnIOGtoLdUqCIOaucxVdSmy8xnEuqJ2QvLLZxAiJ3kEH1kJXM+G5BTzOS1Wc7CHDrJTitrbEc= ;{id = 42393} +08646863702D313735096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002AFD4494D85B6113B8B5D7A3E37E00C71D20389C2624B01A45D0D9731687AA94115EDCDD40E929E5D19B0C3D54259A87CD846EE6379CFCE93BDDD5FD2926F712EE639B329860402F83371B5F598FBCB924F8BD2AF96E6A9B58A7D2EF707E742F2DD7057C9B5C3A54A96FC2FACFB78A078F87DC8910181F8D9E94A0FE6073F16E +dhcp-175.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kv1ElNhbYRO4tdej434Axx0gOJwmJLAaRdDZcxaHqpQRXtzdQOkp5dGbDD1UJZqHzYRu5jec/Ok73dX9KSb3Eu5jmzKYYEAvgzcbX1mPvLkk+L0q+W5qm1in0u9wfnQvLdcFfJtcOlSpb8L6z7eKB4+H3IkQGB+NnpSg/mBz8W4= ;{id = 42393} +08646863702D313735096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3634096E6C6E65746C616273026E6C000006400000000003 +dhcp-175.nlnetlabs.nl. 3600 IN NSEC dhcp-64.nlnetlabs.nl. A RRSIG NSEC +07646863702D3634096E6C6E65746C616273026E6C0000010001000027D80004D59AE040 +dhcp-64.nlnetlabs.nl. 10200 IN A 213.154.224.64 +07646863702D3634096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D01DF5794E09DC1A6EC3032FF8FE5234C1DB454E6931D719B5DA65C0E6679A55EAC6E736228E31DD1FFEBED79FC0E8F3EF1E61B3525A816B61FD9D373CB088A6CDF9C59DC84E59087CA922DCDB20A33CBABD3B573293BA527DE6C077B454EA8221A6C67E7E60A0D48D5DDEF3316659BD374977151D07E516E22715B26FDD9FF0 +dhcp-64.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0B31eU4J3BpuwwMv+P5SNMHbRU5pMdcZtdplwOZnmlXqxuc2Io4x3R/+vtefwOjz7x5hs1JagWth/Z03PLCIps35xZ3ITlkIfKki3Nsgozy6vTtXMpO6Un3mwHe0VOqCIabGfn5goNSNXd7zMWZZvTdJdxUdB+UW4icVsm/dn/A= ;{id = 42393} +07646863702D3634096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00AB8FE22E6C44AC9696F33673D89DAA2BD0CFCED66DD3148694C2E63A00450128B643CAE5BDB2EB60582CC2AF6C7CCB5C815E2CA439FA343B417BBF807C8CAED40AAF11B021C3468BFD92148FECBE31B988BF21BB5361A8760BA1C88C62894C46B16EBCBD85A2FA33A37C2A83A472650684740BFE0D85A5C7C88296997C543F32 +dhcp-64.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. q4/iLmxErJaW8zZz2J2qK9DPztZt0xSGlMLmOgBFASi2Q8rlvbLrYFgswq9sfMtcgV4spDn6NDtBe7+AfIyu1AqvEbAhw0aL/ZIUj+y+MbmIvyG7U2GodguhyIxiiUxGsW68vYWi+jOjfCqDpHJlBoR0C/4NhaXHyIKWmXxUPzI= ;{id = 42393} +07646863702D3634096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3635096E6C6E65746C616273026E6C000006400000000003 +dhcp-64.nlnetlabs.nl. 3600 IN NSEC dhcp-65.nlnetlabs.nl. A RRSIG NSEC +07646863702D3635096E6C6E65746C616273026E6C0000010001000027D80004D59AE041 +dhcp-65.nlnetlabs.nl. 10200 IN A 213.154.224.65 +07646863702D3635096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006CB7BC455AE339B9F1A02DAC9D16E0C71745BC735D0EBDBA3A54118B107395FF0ED17ED17B70EA2E79178DA42CBBB328A16F97DEA4F0E500B31FDEC269E765FC1AE56FECF0309B16E5BB767F6622FAABF4D9D0C1BF31D2715BFE8D25D13DE14C1E48502A15038BFCBC239FE4492CA9503E4621CDD01F365B5C38A77A9955E77C +dhcp-65.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bLe8RVrjObnxoC2snRbgxxdFvHNdDr26OlQRixBzlf8O0X7Re3DqLnkXjaQsu7MooW+X3qTw5QCzH97Caedl/Brlb+zwMJsW5bt2f2Yi+qv02dDBvzHScVv+jSXRPeFMHkhQKhUDi/y8I5/kSSypUD5GIc3QHzZbXDineplV53w= ;{id = 42393} +07646863702D3635096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0058427C2BFB412004288F9DB802978043D8AAB8362085D5C9E0D35A837CF015863384C2C8E5478AA0F76774CB24C3489FFA0D49D724A998D540F51BB4A93C56C82CA0DA4C15D570E1CD129FF6ED1BDE347E04D7C780A075C7977CC0FF0BB7E330357BA878FA2A43F790E59D119076246C51B349F9BE49B4E178FE0A5F8A671804 +dhcp-65.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WEJ8K/tBIAQoj524ApeAQ9iquDYghdXJ4NNag3zwFYYzhMLI5UeKoPdndMskw0if+g1J1ySpmNVA9Ru0qTxWyCyg2kwV1XDhzRKf9u0b3jR+BNfHgKB1x5d8wP8Lt+MwNXuoePoqQ/eQ5Z0RkHYkbFGzSfm+SbTheP4KX4pnGAQ= ;{id = 42393} +07646863702D3635096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3636096E6C6E65746C616273026E6C000006400000000003 +dhcp-65.nlnetlabs.nl. 3600 IN NSEC dhcp-66.nlnetlabs.nl. A RRSIG NSEC +07646863702D3636096E6C6E65746C616273026E6C0000010001000027D80004D59AE042 +dhcp-66.nlnetlabs.nl. 10200 IN A 213.154.224.66 +07646863702D3636096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0089DCE0CE5D1FC9A9D68D923D92381C9EA3EAE7A1641002DB9F283E331AB6E46AAED800178B0C3C3EAF5BD003B0C204F84A706155D67E28EB5D84B7F0C8B6FB2AD0739E2CB2EC497E351E194E8AD966EF88F0BEC939FA92018FF8A5327392733312BFEC3A8B92C814DDA8D2629172802B7D4F0F239A88B30C91F67200B0516195 +dhcp-66.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. idzgzl0fyanWjZI9kjgcnqPq56FkEALbnyg+Mxq25Gqu2AAXiww8Pq9b0AOwwgT4SnBhVdZ+KOtdhLfwyLb7KtBzniyy7El+NR4ZTorZZu+I8L7JOfqSAY/4pTJzknMzEr/sOouSyBTdqNJikXKAK31PDyOaiLMMkfZyALBRYZU= ;{id = 42393} +07646863702D3636096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001454C1E4787C73E61F42235C3FB079F470D2EA117A895021DE1AB474345BA253C2FD84393A75CF8AF9D0999B82ACA8E4E1B76061E4D6C86DC4E0893145CF730744EC11C7F87973C09F4EA358B9806C87AD84E5043EEE8C12FB898DC45A93200FF65D9E262BD3D1D8B569CEC08D7663160854B028296F24ABD3362CBBB97BFA6F +dhcp-66.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FFTB5Hh8c+YfQiNcP7B59HDS6hF6iVAh3hq0dDRbolPC/YQ5OnXPivnQmZuCrKjk4bdgYeTWyG3E4IkxRc9zB0TsEcf4eXPAn06jWLmAbIethOUEPu6MEvuJjcRakyAP9l2eJivT0di1ac7AjXZjFghUsCgpbySr0zYsu7l7+m8= ;{id = 42393} +07646863702D3636096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3637096E6C6E65746C616273026E6C000006400000000003 +dhcp-66.nlnetlabs.nl. 3600 IN NSEC dhcp-67.nlnetlabs.nl. A RRSIG NSEC +07646863702D3637096E6C6E65746C616273026E6C0000010001000027D80004D59AE043 +dhcp-67.nlnetlabs.nl. 10200 IN A 213.154.224.67 +07646863702D3637096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008A40740C7EE9CC4956C27E12145BB4EDC73F0588B79667904D2EDE8F9C506166851E1ECBEA3467698D3CE9D970B7E6E6A6EA3BBE0126D30B8D2AB1898C93A6DACC0F6E9E3919DB9D761DFB07B7AB0D1A117950BAE82A61E4A7D4D05E88F3AE76B03FC08BE648C67BC3005730AF23A5405FE9641571F1869BC7A7D25251808778 +dhcp-67.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ikB0DH7pzElWwn4SFFu07cc/BYi3lmeQTS7ej5xQYWaFHh7L6jRnaY086dlwt+bmpuo7vgEm0wuNKrGJjJOm2swPbp45Gduddh37B7erDRoReVC66Cph5KfU0F6I8652sD/Ai+ZIxnvDAFcwryOlQF/pZBVx8Yabx6fSUlGAh3g= ;{id = 42393} +07646863702D3637096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000CDDE72E2ED6C92B2FD27AB3E67B728C7306DCC0B3DAD03DEA4948C664173E0C906E733AA497C385A8CA537318BB49B9B338C96D2198724CD7F1A725B0DD9F7BDD03998C3363B005835DA94FB7F32886B4C344982C37CD33E9DC2CFA44CE890D79739811F242A3BA28CB857CF92172383665CF72DA0D95A18122042F03489B9B +dhcp-67.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DN3nLi7WySsv0nqz5ntyjHMG3MCz2tA96klIxmQXPgyQbnM6pJfDhajKU3MYu0m5szjJbSGYckzX8aclsN2fe90DmYwzY7AFg12pT7fzKIa0w0SYLDfNM+ncLPpEzokNeXOYEfJCo7ooy4V8+SFyODZlz3LaDZWhgSIELwNIm5s= ;{id = 42393} +07646863702D3637096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3638096E6C6E65746C616273026E6C000006400000000003 +dhcp-67.nlnetlabs.nl. 3600 IN NSEC dhcp-68.nlnetlabs.nl. A RRSIG NSEC +07646863702D3638096E6C6E65746C616273026E6C0000010001000027D80004D59AE044 +dhcp-68.nlnetlabs.nl. 10200 IN A 213.154.224.68 +07646863702D3638096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A3759F50D9C0665AD7E12607C0126AA788E2E5FEAD6D728049992D8937E4FE7380941AB2FB0F4713EF43D8226FF7B982953FE0D40439F74554727E2D22B8E6A9A88ED452AA5ACC5FBA8489B12F01FF5A74B787D125F4C7AF1BAD48EEB146E95A37070C374F670CA419639BE148382BD3AC6DDA428DB0482119ED8444953CF4CC +dhcp-68.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. o3WfUNnAZlrX4SYHwBJqp4ji5f6tbXKASZktiTfk/nOAlBqy+w9HE+9D2CJv97mClT/g1AQ590VUcn4tIrjmqaiO1FKqWsxfuoSJsS8B/1p0t4fRJfTHrxutSO6xRulaNwcMN09nDKQZY5vhSDgr06xt2kKNsEghGe2ERJU89Mw= ;{id = 42393} +07646863702D3638096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0023501A0221FEEB61E07F1F8AEF3C38639BD93F26092B5BF5A76B7A213DE3A39DDA8AA33CBF476B980E32E84FCCEC66EC5EA54C35B750CF4C9B6077BD916F66118BCFE4C07538DBA0CA16CCCBA13F4231B25CC4C73E0DEE7F33DA5C4D683B3D9E7E963F3F35F69FC6CB58C194AE227F462851246E246817C7490C5DEA8BD5A430 +dhcp-68.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. I1AaAiH+62Hgfx+K7zw4Y5vZPyYJK1v1p2t6IT3jo53aiqM8v0drmA4y6E/M7GbsXqVMNbdQz0ybYHe9kW9mEYvP5MB1ONugyhbMy6E/QjGyXMTHPg3ufzPaXE1oOz2efpY/PzX2n8bLWMGUriJ/RihRJG4kaBfHSQxd6ovVpDA= ;{id = 42393} +07646863702D3638096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3639096E6C6E65746C616273026E6C000006400000000003 +dhcp-68.nlnetlabs.nl. 3600 IN NSEC dhcp-69.nlnetlabs.nl. A RRSIG NSEC +07646863702D3639096E6C6E65746C616273026E6C0000010001000027D80004D59AE045 +dhcp-69.nlnetlabs.nl. 10200 IN A 213.154.224.69 +07646863702D3639096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D3971A0D529FE96998D7EF4B424C478F36AE08CA3AFFF26136BE53E87B3647DA82070AFD16CD73CB7C76A759BCB8DAE85A15F0816DD2FAAAD990BCAAEF5451B1D450D1E65DD3B854377CD7AAADF911CE6CB52975FA9591797C79E3F4AABB4DF14CADDB179BAEB092573C1379A4279112EF63477D97EE9B426A03DC15A18225F3 +dhcp-69.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 05caDVKf6WmY1+9LQkxHjzauCMo6//JhNr5T6Hs2R9qCBwr9Fs1zy3x2p1m8uNroWhXwgW3S+qrZkLyq71RRsdRQ0eZd07hUN3zXqq35Ec5stSl1+pWReXx54/Squ03xTK3bF5uusJJXPBN5pCeREu9jR32X7ptCagPcFaGCJfM= ;{id = 42393} +07646863702D3639096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A32A6235A3DA51EAD626CD6464C9C690447B182D12ACB5F3D60ADC1C91FB669966C6E38D77887255EF2161EA70E61E887D957C4E474CF44AB033FE66CBDF0367D3BB9547D8172CB9775E7D5860446F09A73B934A442476D3A3232429247AD55B9B00276D9A737AB4254B0A520A9639FE0B1455508CAD1466ADB4D139FC60DDC8 +dhcp-69.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. oypiNaPaUerWJs1kZMnGkER7GC0SrLXz1grcHJH7ZplmxuONd4hyVe8hYepw5h6IfZV8TkdM9EqwM/5my98DZ9O7lUfYFyy5d159WGBEbwmnO5NKRCR206MjJCkketVbmwAnbZpzerQlSwpSCpY5/gsUVVCMrRRmrbTROfxg3cg= ;{id = 42393} +07646863702D3639096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3730096E6C6E65746C616273026E6C000006400000000003 +dhcp-69.nlnetlabs.nl. 3600 IN NSEC dhcp-70.nlnetlabs.nl. A RRSIG NSEC +07646863702D3730096E6C6E65746C616273026E6C0000010001000027D80004D59AE046 +dhcp-70.nlnetlabs.nl. 10200 IN A 213.154.224.70 +07646863702D3730096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00411B75D82F7B32C158C9BF1DD49F3F800ACE502FE5E929851269C62C88680BD23C6D5757867B96423E5DC9BA206154239D66676C02BD0E04461AB5F416C38F21A83397F1B397A0735508583EE235A66C6703715F4ED59E3F3DE48F52E5A09104E8BA269AC48B848D86567FE654705482ACD580171A9F3F2853C7E6951D7B7DE1 +dhcp-70.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QRt12C97MsFYyb8d1J8/gArOUC/l6SmFEmnGLIhoC9I8bVdXhnuWQj5dybogYVQjnWZnbAK9DgRGGrX0FsOPIagzl/Gzl6BzVQhYPuI1pmxnA3FfTtWePz3kj1LloJEE6LommsSLhI2GVn/mVHBUgqzVgBcanz8oU8fmlR17feE= ;{id = 42393} +07646863702D3730096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00010FECB4201AA7ABC20FB1FDF58C21C9D0A4B549E4D6FF622A464E654669CD7EAB2C0823F862F2DBBCAA7EE39191CDBB077F3E68D6800194E96D5B9FF9BE892D45F6336B3B0512D0F244509B179E81D48B8729E9B434A3B76F9E5995F7BC4DC542689C709C1AF82CDC1D2922CFCE74B0BD0764A186D0E8E6C0E595250E16C415 +dhcp-70.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. AQ/stCAap6vCD7H99YwhydCktUnk1v9iKkZOZUZpzX6rLAgj+GLy27yqfuORkc27B38+aNaAAZTpbVuf+b6JLUX2M2s7BRLQ8kRQmxeegdSLhynptDSjt2+eWZX3vE3FQmiccJwa+CzcHSkiz850sL0HZKGG0OjmwOWVJQ4WxBU= ;{id = 42393} +07646863702D3730096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3731096E6C6E65746C616273026E6C000006400000000003 +dhcp-70.nlnetlabs.nl. 3600 IN NSEC dhcp-71.nlnetlabs.nl. A RRSIG NSEC +07646863702D3731096E6C6E65746C616273026E6C0000010001000027D80004D59AE047 +dhcp-71.nlnetlabs.nl. 10200 IN A 213.154.224.71 +07646863702D3731096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0041AB280D0771548762A69A0E4A93593E4C90FBECB950E82EACDD995C911B207D83D98B0A2BCA15CA0EBEE1B964E501505A73FDB40D1AFDEC9EEE3EE7FE2B0618B16A3BB178D18A30A7527398B2D2C1D4EB9F55098B4ADC77FB439872E2BCB4D7E1D9BD628C5373EF46986AAAB01F9E58221895496522D60B7381F7FC6A3DDA15 +dhcp-71.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QasoDQdxVIdippoOSpNZPkyQ++y5UOgurN2ZXJEbIH2D2YsKK8oVyg6+4blk5QFQWnP9tA0a/eye7j7n/isGGLFqO7F40Yowp1JzmLLSwdTrn1UJi0rcd/tDmHLivLTX4dm9YoxTc+9GmGqqsB+eWCIYlUllItYLc4H3/Go92hU= ;{id = 42393} +07646863702D3731096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001E67D885637C4299B1A20C0FE666FE276B5714D92A9FFD37C03326A34C94EC9C76760E7661C46A11B95EDC0F824D06194229805D2D7CB036A8389754FE2E62625D501228E19EA2FEC6B80F6ECADD28842664B337E03CC0601C67E115144AE6336100D7CA7ADB59E46AC67EA79AC021FB8DD4492DEC40349000659940D43DE4FB +dhcp-71.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HmfYhWN8QpmxogwP5mb+J2tXFNkqn/03wDMmo0yU7Jx2dg52YcRqEble3A+CTQYZQimAXS18sDaoOJdU/i5iYl1QEijhnqL+xrgPbsrdKIQmZLM34DzAYBxn4RUUSuYzYQDXynrbWeRqxn6nmsAh+43USS3sQDSQAGWZQNQ95Ps= ;{id = 42393} +07646863702D3731096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3732096E6C6E65746C616273026E6C000006400000000003 +dhcp-71.nlnetlabs.nl. 3600 IN NSEC dhcp-72.nlnetlabs.nl. A RRSIG NSEC +07646863702D3732096E6C6E65746C616273026E6C0000010001000027D80004D59AE048 +dhcp-72.nlnetlabs.nl. 10200 IN A 213.154.224.72 +07646863702D3732096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009E526036D540C789C00CCD66560F47387E2AE3C7B39E409D6C7A687B6868008AC03CA64C9C3D6A577CA2B5BBE5C4B6ECBA451758B8D76D80919A6F416EB9F1B92556B4C81C89C6369050846F0E01AB3F4435987A69FC69BB90F045EB3D75F5373364E84BEC7046BEC36DF19F1F3DF54815CF5AF43BB8E4B65CE1E5DC5428E965 +dhcp-72.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nlJgNtVAx4nADM1mVg9HOH4q48eznkCdbHpoe2hoAIrAPKZMnD1qV3yitbvlxLbsukUXWLjXbYCRmm9BbrnxuSVWtMgcicY2kFCEbw4Bqz9ENZh6afxpu5DwRes9dfU3M2ToS+xwRr7DbfGfHz31SBXPWvQ7uOS2XOHl3FQo6WU= ;{id = 42393} +07646863702D3732096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009709BB31E83524976AD950B364A0B8683FD62E0BA3DA718290CC2B740DD6BCC1168FC6B6469C6B288C7753D60F7D769A789269CC608BA5BA404ED04F01EE8A5B40387941A71C84433B9547E7E66704FFC7828D574C52271FB009E5315EA73D17643311CAE5148C2C3C52B76642C733D1F85CDA09CD4BAFDFF439154C0D1F6B53 +dhcp-72.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. lwm7Meg1JJdq2VCzZKC4aD/WLguj2nGCkMwrdA3WvMEWj8a2RpxrKIx3U9YPfXaaeJJpzGCLpbpATtBPAe6KW0A4eUGnHIRDO5VH5+ZnBP/Hgo1XTFInH7AJ5TFepz0XZDMRyuUUjCw8UrdmQscz0fhc2gnNS6/f9DkVTA0fa1M= ;{id = 42393} +07646863702D3732096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3733096E6C6E65746C616273026E6C000006400000000003 +dhcp-72.nlnetlabs.nl. 3600 IN NSEC dhcp-73.nlnetlabs.nl. A RRSIG NSEC +07646863702D3733096E6C6E65746C616273026E6C0000010001000027D80004D59AE049 +dhcp-73.nlnetlabs.nl. 10200 IN A 213.154.224.73 +07646863702D3733096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A8A8A039CBACB772C762C218252EF71F0039D73C58BB208EC6650C384A3D5D4B78135C9C53CF5AFFF99860F51AC0048ED7B66046C589875343811FED157F0EB7250AA6E669EDB3B4038F7EC1F202181AD8E5249F3F04FBA5E17988C5610FE002513ACEC0386FD259C14E91AE58E5BFC87632047164655289E22747EF58A00B42 +dhcp-73.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qKigOcust3LHYsIYJS73HwA51zxYuyCOxmUMOEo9XUt4E1ycU89a//mYYPUawASO17ZgRsWJh1NDgR/tFX8OtyUKpuZp7bO0A49+wfICGBrY5SSfPwT7peF5iMVhD+ACUTrOwDhv0lnBTpGuWOW/yHYyBHFkZVKJ4idH71igC0I= ;{id = 42393} +07646863702D3733096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BB04D503315A0C9BA985625BE9C868332BA05E3C8A626EAB5DF82E0B6E15FA7BE50077A1DC12312DEFF4E3D403DAD194F38C3DE52A6143C089112BF34FC40B0AC518EF641EFE696D94453253685EE1454E85F4FEB802C0B871ECB952B50583047A2F0CF656F320AC44B90964BEF8A99959EDB092AE43393F30412F39E0A01F51 +dhcp-73.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uwTVAzFaDJuphWJb6choMyugXjyKYm6rXfguC24V+nvlAHeh3BIxLe/049QD2tGU84w95SphQ8CJESvzT8QLCsUY72Qe/mltlEUyU2he4UVOhfT+uALAuHHsuVK1BYMEei8M9lbzIKxEuQlkvvipmVntsJKuQzk/MEEvOeCgH1E= ;{id = 42393} +07646863702D3733096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3734096E6C6E65746C616273026E6C000006400000000003 +dhcp-73.nlnetlabs.nl. 3600 IN NSEC dhcp-74.nlnetlabs.nl. A RRSIG NSEC +07646863702D3734096E6C6E65746C616273026E6C0000010001000027D80004D59AE04A +dhcp-74.nlnetlabs.nl. 10200 IN A 213.154.224.74 +07646863702D3734096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0001682A6E34C880F175AE2FDFE0FCABD732F7CA8250A9CFF46F19C9E1BCEC827765168CD1E3EBE6CD877909116ADDC9FD0D18329BD156A0141EB69BBB125ED732451989A4E3BD376A580A53E9DAC38F9A32FD8E0AF55DF5D4B801D9B2596BA96AB471A901907145536FDCB036DCB65B8768DFEDA1063C61C844BA1577444A8478 +dhcp-74.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. AWgqbjTIgPF1ri/f4Pyr1zL3yoJQqc/0bxnJ4bzsgndlFozR4+vmzYd5CRFq3cn9DRgym9FWoBQetpu7El7XMkUZiaTjvTdqWApT6drDj5oy/Y4K9V311LgB2bJZa6lqtHGpAZBxRVNv3LA23LZbh2jf7aEGPGHIRLoVd0RKhHg= ;{id = 42393} +07646863702D3734096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00D25EC53150FB6BE073B3DE39002608D59191386191D63024CBE810555220E0FABA661B2F19E68D41FD36C17695556B853C18C4C7EC7839FEDE10E0C909FFA2255BA5DF13AAAA10BF0457F2C7B889C3F3A52711C4F0AA914EFEE0979E402DED2E34A4220C95416D4EB831D61B5553FEA86DACABDA107C4723642BDD58AD51D8CB +dhcp-74.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0l7FMVD7a+Bzs945ACYI1ZGROGGR1jAky+gQVVIg4Pq6ZhsvGeaNQf02wXaVVWuFPBjEx+x4Of7eEODJCf+iJVul3xOqqhC/BFfyx7iJw/OlJxHE8KqRTv7gl55ALe0uNKQiDJVBbU64MdYbVVP+qG2sq9oQfEcjZCvdWK1R2Ms= ;{id = 42393} +07646863702D3734096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3735096E6C6E65746C616273026E6C000006400000000003 +dhcp-74.nlnetlabs.nl. 3600 IN NSEC dhcp-75.nlnetlabs.nl. A RRSIG NSEC +07646863702D3735096E6C6E65746C616273026E6C0000010001000027D80004D59AE04B +dhcp-75.nlnetlabs.nl. 10200 IN A 213.154.224.75 +07646863702D3735096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A92D1C58917D8B70742F88906B173F60D42656BF4AD9452CB3E4DE9B6815B009EFD37E906943C9F8E102F5441F69C03B22BCF52088EACBE70BBC5CE1710CFCCC5D81A5B3332EDA8C0F174A14C8C58C52BCCC75CEEACBA4B5DB3F68E9C9A338D8F1D9281B3463C0D20438D0C3F46B2C740DA7E5446ECF46A3AD55147738A6DBF3 +dhcp-75.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qS0cWJF9i3B0L4iQaxc/YNQmVr9K2UUss+Tem2gVsAnv036QaUPJ+OEC9UQfacA7Irz1IIjqy+cLvFzhcQz8zF2BpbMzLtqMDxdKFMjFjFK8zHXO6suktds/aOnJozjY8dkoGzRjwNIEONDD9GssdA2n5URuz0ajrVUUdzim2/M= ;{id = 42393} +07646863702D3735096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0083F3FE72DF65BA4A08EDA2E031FD0BFA0D1CD9C0E48B3DA67415789AB5F277FA16C3B9CD6BA1661124A0DE1CC2970F2731DAD3EE23FC5453A750A8F4D8C326BA8AE9539AAA6BD55B081A8AC9199F71A9A0EDC19367A3E5DAF193D57D67313A55D3EE1076AD9BE00B07EF36E66C8F36FD973EDAB5D5505D045194C24E9D595688 +dhcp-75.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g/P+ct9lukoI7aLgMf0L+g0c2cDkiz2mdBV4mrXyd/oWw7nNa6FmESSg3hzClw8nMdrT7iP8VFOnUKj02MMmuorpU5qqa9VbCBqKyRmfcamg7cGTZ6Pl2vGT1X1nMTpV0+4Qdq2b4AsH7zbmbI82/Zc+2rXVUF0EUZTCTp1ZVog= ;{id = 42393} +07646863702D3735096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3736096E6C6E65746C616273026E6C000006400000000003 +dhcp-75.nlnetlabs.nl. 3600 IN NSEC dhcp-76.nlnetlabs.nl. A RRSIG NSEC +07646863702D3736096E6C6E65746C616273026E6C0000010001000027D80004D59AE04C +dhcp-76.nlnetlabs.nl. 10200 IN A 213.154.224.76 +07646863702D3736096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001F66FE3B0D243FE15ACBC97950EC07EDCA478E88E296FAF1E849EC6E4335C4BA5E7E57535D0E1A38082FEDB72EC02F1E1F29F6764F1B8501D9907337E6ECF5469D08CBC94CF5AF0F7D2DC97960D859652EBE74059A403B797C973DB126D5B0208F0D7AF95DE1E781F91A27F291946ABEE81C3BC225051C5B54C162058EE7EBB6 +dhcp-76.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. H2b+Ow0kP+Fay8l5UOwH7cpHjojilvrx6EnsbkM1xLpefldTXQ4aOAgv7bcuwC8eHyn2dk8bhQHZkHM35uz1Rp0Iy8lM9a8PfS3JeWDYWWUuvnQFmkA7eXyXPbEm1bAgjw16+V3h54H5GifykZRqvugcO8IlBRxbVMFiBY7n67Y= ;{id = 42393} +07646863702D3736096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0029CDE5698B7C5ACB60893A66F82DED58E31DF803D90E04D3FE6D56B91B7C4540448F24C695EA10D6615C26D3383D0065E62411CB0C0261398F07EDB1AA853FF8A13BB5ED7D7401460D454FF5D5C582AA27ADF4ED91FD8568E12B8246517DFA97CC0D943D5B949B417C89F92EE55BB9EBA6E73058DEC080FC54218A6ACE40EABF +dhcp-76.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kc3laYt8WstgiTpm+C3tWOMd+APZDgTT/m1WuRt8RUBEjyTGleoQ1mFcJtM4PQBl5iQRywwCYTmPB+2xqoU/+KE7te19dAFGDUVP9dXFgqonrfTtkf2FaOErgkZRffqXzA2UPVuUm0F8ifku5Vu566bnMFjewID8VCGKas5A6r8= ;{id = 42393} +07646863702D3736096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3737096E6C6E65746C616273026E6C000006400000000003 +dhcp-76.nlnetlabs.nl. 3600 IN NSEC dhcp-77.nlnetlabs.nl. A RRSIG NSEC +07646863702D3737096E6C6E65746C616273026E6C0000010001000027D80004D59AE04D +dhcp-77.nlnetlabs.nl. 10200 IN A 213.154.224.77 +07646863702D3737096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00640F375F00D860FC86C709F688A0458B6841E85A1907B974F321A47A830A1151079CA7CA88AD9FCEAB383142B39A6751F491732D9AFA882F21B76C2D938E5A567DD566F63B1384402BC9E98F30A90AB1CDB89D62065C48E0791E0B979E5D6489EB0E28B0C231C65D574FFBC339219AAFE3545455674040C62B0D042E95D7E9AA +dhcp-77.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZA83XwDYYPyGxwn2iKBFi2hB6FoZB7l08yGkeoMKEVEHnKfKiK2fzqs4MUKzmmdR9JFzLZr6iC8ht2wtk45aVn3VZvY7E4RAK8npjzCpCrHNuJ1iBlxI4HkeC5eeXWSJ6w4osMIxxl1XT/vDOSGar+NUVFVnQEDGKw0ELpXX6ao= ;{id = 42393} +07646863702D3737096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0025D46820BF0129AF97C731BF3EDC53B2FC4B707C09193983BEE70AF530FB3D2B949DBE94B4575B7C32FCF9A78A9A018ABB3C218FC67590EBC40B5AAE3FD75A445ABAB8696B598938E00E3F73CAF372DC59E9FDD673B950C289BFD3B3C568C37742EE1602152A9EFE03A47B2A0516DF7BD0DDF4C3C7AB9B12C11534C1AAC9D180 +dhcp-77.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. JdRoIL8BKa+XxzG/PtxTsvxLcHwJGTmDvucK9TD7PSuUnb6UtFdbfDL8+aeKmgGKuzwhj8Z1kOvEC1quP9daRFq6uGlrWYk44A4/c8rzctxZ6f3Wc7lQwom/07PFaMN3Qu4WAhUqnv4DpHsqBRbfe9Dd9MPHq5sSwRU0warJ0YA= ;{id = 42393} +07646863702D3737096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3738096E6C6E65746C616273026E6C000006400000000003 +dhcp-77.nlnetlabs.nl. 3600 IN NSEC dhcp-78.nlnetlabs.nl. A RRSIG NSEC +07646863702D3738096E6C6E65746C616273026E6C0000010001000027D80004D59AE04E +dhcp-78.nlnetlabs.nl. 10200 IN A 213.154.224.78 +07646863702D3738096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0034F37D33C5DDD5C74DF7C357A6E3BEE1A86B80A64F7E7BAE46E6BD3E62F76F1366FB7A60BCDD5C071F2D487172230179DE2C6601D6F6147F2EBD503CBA5E24E066DE62CACB7C4B53C7E9562F81F7C7B72973FAB2EE565E0B6430672729E95D105BBF67A6FC49EB08A15AC909E93B730173E89F78C159B40094C18A79ECDAB58C +dhcp-78.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NPN9M8Xd1cdN98NXpuO+4ahrgKZPfnuuRua9PmL3bxNm+3pgvN1cBx8tSHFyIwF53ixmAdb2FH8uvVA8ul4k4GbeYsrLfEtTx+lWL4H3x7cpc/qy7lZeC2QwZycp6V0QW79npvxJ6wihWskJ6TtzAXPon3jBWbQAlMGKeezatYw= ;{id = 42393} +07646863702D3738096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C386B8F08CADFE96C428CB9697264DF07D7FBA1E39B560288B8CF1328BB3D9C8BFD5345759C08B94F026497A7E86841F41A85782B4D009132ECC9EC01E66E65B7821EA5D89CF972C4C48B6E9EC2171AE004C3B6F00D1E51AD5404C48D645B8B35903BF47CAD17CFFFA02F8B4F6BCBB92D35C121AD21D650338A99D9429D05FC6 +dhcp-78.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. w4a48Iyt/pbEKMuWlyZN8H1/uh45tWAoi4zxMouz2ci/1TRXWcCLlPAmSXp+hoQfQahXgrTQCRMuzJ7AHmbmW3gh6l2Jz5csTEi26ewhca4ATDtvANHlGtVATEjWRbizWQO/R8rRfP/6Avi09ry7ktNcEhrSHWUDOKmdlCnQX8Y= ;{id = 42393} +07646863702D3738096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3739096E6C6E65746C616273026E6C000006400000000003 +dhcp-78.nlnetlabs.nl. 3600 IN NSEC dhcp-79.nlnetlabs.nl. A RRSIG NSEC +07646863702D3739096E6C6E65746C616273026E6C0000010001000027D80004D59AE04F +dhcp-79.nlnetlabs.nl. 10200 IN A 213.154.224.79 +07646863702D3739096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001B32F3D6334020ED8089743ABE592776F32C3CDE78E5301C4BC2CE68D3F3EB97EDAF35DC52E3AA3340556D5A0C7AD7E52354CC325A8E4CAC3D514B1AAFA0E1AEA4B5B0BD37EA955776F58A9637800B0439A072AD283ADE1DE746B95BC12AFEFEBC80D0453E151A61AE5FF3BBE2170D33AF3C50E8B22A05A8F538133DFD46E568 +dhcp-79.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GzLz1jNAIO2AiXQ6vlkndvMsPN545TAcS8LOaNPz65ftrzXcUuOqM0BVbVoMetflI1TMMlqOTKw9UUsar6DhrqS1sL036pVXdvWKljeACwQ5oHKtKDreHedGuVvBKv7+vIDQRT4VGmGuX/O74hcNM688UOiyKgWo9TgTPf1G5Wg= ;{id = 42393} +07646863702D3739096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002159023D46053D92CB198196821970BA9750D788891DC419DA6F8DCB889ADC1CB06807397F7706CCDA5E745069D48F2AECB31C9B63F6E5B8AE33572517BD3DC584D644B9B7B087F035A5C055AA1B37B2289FE918604DB6D6A23432FF8EDD152980DE611D73C4ADBEBF4CE09802BBD9E749922487F5940E3C71F1C5C3D1C97621 +dhcp-79.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IVkCPUYFPZLLGYGWghlwupdQ14iJHcQZ2m+Ny4ia3BywaAc5f3cGzNpedFBp1I8q7LMcm2P25biuM1clF709xYTWRLm3sIfwNaXAVaobN7Ion+kYYE221qI0Mv+O3RUpgN5hHXPErb6/TOCYArvZ50mSJIf1lA48cfHFw9HJdiE= ;{id = 42393} +07646863702D3739096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3830096E6C6E65746C616273026E6C000006400000000003 +dhcp-79.nlnetlabs.nl. 3600 IN NSEC dhcp-80.nlnetlabs.nl. A RRSIG NSEC +07646863702D3830096E6C6E65746C616273026E6C0000010001000027D80004D59AE050 +dhcp-80.nlnetlabs.nl. 10200 IN A 213.154.224.80 +07646863702D3830096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00642451415617CA95B8D30F45FA17EC01CEAB17B13BC4C0D4F121125D4B3A75081D98FB8E8D9ACA7EFBD758223D431A5E8D02F2E6C1237F003AFC776693C1E3BFDA8216A1238DB9DF0F75BC3082AAF253EFB4480E57120EFF67A634960CCAEE1D3C31D05DC21E52C24F8CFEDE3A5C722D9D1EC29569F8B40D0F33DE2FB43AC996 +dhcp-80.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZCRRQVYXypW40w9F+hfsAc6rF7E7xMDU8SESXUs6dQgdmPuOjZrKfvvXWCI9QxpejQLy5sEjfwA6/Hdmk8Hjv9qCFqEjjbnfD3W8MIKq8lPvtEgOVxIO/2emNJYMyu4dPDHQXcIeUsJPjP7eOlxyLZ0ewpVp+LQNDzPeL7Q6yZY= ;{id = 42393} +07646863702D3830096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000126984F8E151739B3E3FB0BE4ABC4E23AC90EC1E3745A198E749810118DA8D0E3BF6EA019235D8B4C7F6B177E090809A7BF156CA946669BB4FE14489348526B3F8E6EEBEB697F014442874E255C10087834C061EC673EE399BA12D9FD72CA0B618A35D79265F5ACA0E47AE8B52C863EA58237B04FB1CCC37D7EDB45EF670031 +dhcp-80.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ASaYT44VFzmz4/sL5KvE4jrJDsHjdFoZjnSYEBGNqNDjv26gGSNdi0x/axd+CQgJp78VbKlGZpu0/hRIk0hSaz+ObuvraX8BREKHTiVcEAh4NMBh7Gc+45m6Etn9csoLYYo115Jl9ayg5HrotSyGPqWCN7BPsczDfX7bRe9nADE= ;{id = 42393} +07646863702D3830096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3831096E6C6E65746C616273026E6C000006400000000003 +dhcp-80.nlnetlabs.nl. 3600 IN NSEC dhcp-81.nlnetlabs.nl. A RRSIG NSEC +07646863702D3831096E6C6E65746C616273026E6C0000010001000027D80004D59AE051 +dhcp-81.nlnetlabs.nl. 10200 IN A 213.154.224.81 +07646863702D3831096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0033CC3B51411EC70FA91E9D5CB4B6D91016B6367558C28D65307D9D282994166671006E57CEE8C9A8567DB3F8BAFE21E4C4D45F260E0650BAF01C03C81E77E74F142FEFE6E79975D4468E302F30E1E991E5E4E1199D60ABF97716A9FAC7FBCF90A4E6E0FFCCC621E526D95B904A12B3244FD91ED396E28B9CF7149B916A7D7D71 +dhcp-81.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. M8w7UUEexw+pHp1ctLbZEBa2NnVYwo1lMH2dKCmUFmZxAG5XzujJqFZ9s/i6/iHkxNRfJg4GULrwHAPIHnfnTxQv7+bnmXXURo4wLzDh6ZHl5OEZnWCr+XcWqfrH+8+QpObg/8zGIeUm2VuQShKzJE/ZHtOW4ouc9xSbkWp9fXE= ;{id = 42393} +07646863702D3831096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0020241AED93BF063B29C03181B5FBAB5150B36E6363F67530E4AFAD15C9504DF3C09A335DDB978291658834363855C93FA2CEEE56A8FAF3689C4E558E1E1612C5BB0758CABB7B4B8FF4718F57EDA0E0BA40E88471B9BEA37DFF04295A09A4DBEF6A13C363F08EFCC5539807994A52CCEBF9472ABC2461E6BBA3B92375FB7EF6F5 +dhcp-81.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ICQa7ZO/BjspwDGBtfurUVCzbmNj9nUw5K+tFclQTfPAmjNd25eCkWWINDY4Vck/os7uVqj682icTlWOHhYSxbsHWMq7e0uP9HGPV+2g4LpA6IRxub6jff8EKVoJpNvvahPDY/CO/MVTmAeZSlLM6/lHKrwkYea7o7kjdft+9vU= ;{id = 42393} +07646863702D3831096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3832096E6C6E65746C616273026E6C000006400000000003 +dhcp-81.nlnetlabs.nl. 3600 IN NSEC dhcp-82.nlnetlabs.nl. A RRSIG NSEC +07646863702D3832096E6C6E65746C616273026E6C0000010001000027D80004D59AE052 +dhcp-82.nlnetlabs.nl. 10200 IN A 213.154.224.82 +07646863702D3832096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00BD78F331607F9B971723AB90073F9E94B1426AB7ACF209F4348540DC4F7C6571E01A25E82DD45B8F567C8C8C206B2A1260549B1AAD2570F0267CAB755FC5326315C61A1D7F60C23B43FF555AC3B3CB326A2F4B753E94536FA57D17E867F7731BF1126F76B2E27E5969E6197D58118C5F25A69507F6682A441D2ABE145EFEB841 +dhcp-82.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vXjzMWB/m5cXI6uQBz+elLFCares8gn0NIVA3E98ZXHgGiXoLdRbj1Z8jIwgayoSYFSbGq0lcPAmfKt1X8UyYxXGGh1/YMI7Q/9VWsOzyzJqL0t1PpRTb6V9F+hn93Mb8RJvdrLifllp5hl9WBGMXyWmlQf2aCpEHSq+FF7+uEE= ;{id = 42393} +07646863702D3832096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0078A7918810FF074A8CD4BA236C1A74F422C67ADE6DD1E60E6D5B6858B19A1408B0B120031D6037808A708FFF141A6075A082BA50C65BE731B4F93A97EE255D62AF046B76A3771F098AEC4CE8516570319E053976709CB356B594F87D2BC2B81067A84C8689BA90163011CFA19CE921E6AC34984AAEE6DE12E8B2E23A51237730 +dhcp-82.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eKeRiBD/B0qM1LojbBp09CLGet5t0eYObVtoWLGaFAiwsSADHWA3gIpwj/8UGmB1oIK6UMZb5zG0+TqX7iVdYq8Ea3ajdx8JiuxM6FFlcDGeBTl2cJyzVrWU+H0rwrgQZ6hMhom6kBYwEc+hnOkh5qw0mEqu5t4S6LLiOlEjdzA= ;{id = 42393} +07646863702D3832096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3833096E6C6E65746C616273026E6C000006400000000003 +dhcp-82.nlnetlabs.nl. 3600 IN NSEC dhcp-83.nlnetlabs.nl. A RRSIG NSEC +07646863702D3833096E6C6E65746C616273026E6C0000010001000027D80004D59AE053 +dhcp-83.nlnetlabs.nl. 10200 IN A 213.154.224.83 +07646863702D3833096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00ABE0B335BC26B616BD1D38352200331F56868A10F6332C833A1C8103339D78B79BD75B63FDB7FBCBA0760DE9536A6051B32EBB01328C4136CFFE069ED9433BF072C8FF28D13C344A45F968D3031EFC6B520C2076D7A597BF58EAFD772850418B40F80657E0AA50D22D5F60F6A9C4DE1D335ADD6175D27C4157FBF15392AAD83D +dhcp-83.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q+CzNbwmtha9HTg1IgAzH1aGihD2MyyDOhyBAzOdeLeb11tj/bf7y6B2DelTamBRsy67ATKMQTbP/gae2UM78HLI/yjRPDRKRflo0wMe/GtSDCB216WXv1jq/XcoUEGLQPgGV+CqUNItX2D2qcTeHTNa3WF10nxBV/vxU5Kq2D0= ;{id = 42393} +07646863702D3833096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007A517F67A82D6BC169D6363D59B780B1E39A15158DF11B3338BB3E14D244F2FEE71BB80F1607F4E7BB4A3C4E91AA24123B5057839F665AF94D5410C9B012D59D56809E10F720D8225D253189AABA11DBB8724E8154CE657FA791F4D94DE15B55D7ABEA06D33C4F0B8A86EB99BE3AD1496D9C2880A837B552362C1AEA2019DE65 +dhcp-83.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. elF/Z6gta8Fp1jY9WbeAseOaFRWN8RszOLs+FNJE8v7nG7gPFgf057tKPE6RqiQSO1BXg59mWvlNVBDJsBLVnVaAnhD3INgiXSUxiaq6Edu4ck6BVM5lf6eR9NlN4VtV16vqBtM8TwuKhuuZvjrRSW2cKICoN7VSNiwa6iAZ3mU= ;{id = 42393} +07646863702D3833096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3834096E6C6E65746C616273026E6C000006400000000003 +dhcp-83.nlnetlabs.nl. 3600 IN NSEC dhcp-84.nlnetlabs.nl. A RRSIG NSEC +07646863702D3834096E6C6E65746C616273026E6C0000010001000027D80004D59AE054 +dhcp-84.nlnetlabs.nl. 10200 IN A 213.154.224.84 +07646863702D3834096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006467620687C84558B22F8C9CC7E04C2AEC0FEAD64624C163BC2E9D66126AF0CFBEA10D024B2898E4B12971B5CE6F92BE87520D637CCD4FA0AC92B1A9985B387F27880693DFD7073F9360DE65C8AC9C0F5D0922D658BBE3806D1311E8B8CBDC5F9ED8E8D589119D7B3879C0A7F3498028795935B4C382AF95F36217A8B1DBB481 +dhcp-84.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZGdiBofIRViyL4ycx+BMKuwP6tZGJMFjvC6dZhJq8M++oQ0CSyiY5LEpcbXOb5K+h1INY3zNT6CskrGpmFs4fyeIBpPf1wc/k2DeZcisnA9dCSLWWLvjgG0TEei4y9xfntjo1YkRnXs4ecCn80mAKHlZNbTDgq+V82IXqLHbtIE= ;{id = 42393} +07646863702D3834096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000A5E3CCFB20ADC53D48D9AE65A1BFC0178093F0F6784D3CCE6E215C0A9E6CCA35C5DE1A90331CD14F0DF1B719913A02CEDAA8E869CE57E78F2F26EB43058FC4266311C7A6331C5854D37B342CE6D61251603315383B18FB6A2F65EF413673C2B7D451A458F337C3818BC60D0D784B1DC243CDCD905C851B96885F6A080034E52 +dhcp-84.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Cl48z7IK3FPUjZrmWhv8AXgJPw9nhNPM5uIVwKnmzKNcXeGpAzHNFPDfG3GZE6As7aqOhpzlfnjy8m60MFj8QmYxHHpjMcWFTTezQs5tYSUWAzFTg7GPtqL2XvQTZzwrfUUaRY8zfDgYvGDQ14Sx3CQ83NkFyFG5aIX2oIADTlI= ;{id = 42393} +07646863702D3834096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3835096E6C6E65746C616273026E6C000006400000000003 +dhcp-84.nlnetlabs.nl. 3600 IN NSEC dhcp-85.nlnetlabs.nl. A RRSIG NSEC +07646863702D3835096E6C6E65746C616273026E6C0000010001000027D80004D59AE055 +dhcp-85.nlnetlabs.nl. 10200 IN A 213.154.224.85 +07646863702D3835096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00486F70031E6E06CCC9F34DECD4688F5A1075BA774F079989977A2A6A1B00FC66A1AF1B3D56108606473F112275E1921550CA47C924C8149D2DF269C73C25E587EF778355105C2DB1AFD83D444EFCB5483065CD2C03B3E86B6D7330FEBAA51B3F389F6EDE6E8A3BC76C97FF5B8F1DDC74D762E6A74F966DEBC85F71D4100D2485 +dhcp-85.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. SG9wAx5uBszJ803s1GiPWhB1undPB5mJl3oqahsA/Gahrxs9VhCGBkc/ESJ14ZIVUMpHySTIFJ0t8mnHPCXlh+93g1UQXC2xr9g9RE78tUgwZc0sA7Poa21zMP66pRs/OJ9u3m6KO8dsl/9bjx3cdNdi5qdPlm3ryF9x1BANJIU= ;{id = 42393} +07646863702D3835096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0011B7ED38D7850E4B8915764EB932FD8FD38C2CA16C63928D473D9514DD5747CC590C353EC5A609FC29185DEBC05A9CFD599E278B75B22648C2BFCC4501D714BB2EB8FB207C1CB5DF8933A2BEB60CA4E9B395DDE9CE96839303F02BEBE2562E3D46585A530C4EA0CDE8993484421FAEC4491A04278954AD8CB1AE8C6172EA40C6 +dhcp-85.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. EbftONeFDkuJFXZOuTL9j9OMLKFsY5KNRz2VFN1XR8xZDDU+xaYJ/CkYXevAWpz9WZ4ni3WyJkjCv8xFAdcUuy64+yB8HLXfiTOivrYMpOmzld3pzpaDkwPwK+viVi49RlhaUwxOoM3omTSEQh+uxEkaBCeJVK2Msa6MYXLqQMY= ;{id = 42393} +07646863702D3835096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3836096E6C6E65746C616273026E6C000006400000000003 +dhcp-85.nlnetlabs.nl. 3600 IN NSEC dhcp-86.nlnetlabs.nl. A RRSIG NSEC +07646863702D3836096E6C6E65746C616273026E6C0000010001000027D80004D59AE056 +dhcp-86.nlnetlabs.nl. 10200 IN A 213.154.224.86 +07646863702D3836096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0004B7D96436C5C0BB1F50315A7B39415C058E31E872D5151B87872950FBB2535A98BC3CC54BD9A0E673FAFF6D07138806DAC5869772E0C44E339EE5548119EAF7EE5726E00273A9394270ABB242BB11408F699CF2B29DE8CC67220F0002465E3A7E969CFBD621D74A01AAD88EE2795C893AD6D0568AB02EDDB9B04FEB1B80041D +dhcp-86.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BLfZZDbFwLsfUDFaezlBXAWOMehy1RUbh4cpUPuyU1qYvDzFS9mg5nP6/20HE4gG2sWGl3LgxE4znuVUgRnq9+5XJuACc6k5QnCrskK7EUCPaZzysp3ozGciDwACRl46fpac+9Yh10oBqtiO4nlciTrW0FaKsC7dubBP6xuABB0= ;{id = 42393} +07646863702D3836096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002171725E2BE1C93ED51C7B64D409C3041BFDB37B7C3817481BBA6F065012B0BDE1A924319171DDAAA4DCDC0861C619B314D6B8088AC7D6EB17FC51C1D76F6CE4B5A4E34C5863D448836C91D56531EFD892F926DC496ADE3B4504517AE1BFAC46ABC65619507BE5517004056C32E25B1250E77ED0E4FBF12C27830E198D44040E +dhcp-86.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IXFyXivhyT7VHHtk1AnDBBv9s3t8OBdIG7pvBlASsL3hqSQxkXHdqqTc3AhhxhmzFNa4CIrH1usX/FHB129s5LWk40xYY9RIg2yR1WUx79iS+SbcSWreO0UEUXrhv6xGq8ZWGVB75VFwBAVsMuJbElDnftDk+/EsJ4MOGY1EBA4= ;{id = 42393} +07646863702D3836096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3837096E6C6E65746C616273026E6C000006400000000003 +dhcp-86.nlnetlabs.nl. 3600 IN NSEC dhcp-87.nlnetlabs.nl. A RRSIG NSEC +07646863702D3837096E6C6E65746C616273026E6C0000010001000027D80004D59AE057 +dhcp-87.nlnetlabs.nl. 10200 IN A 213.154.224.87 +07646863702D3837096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0080E79373EEA816C45CD06D8072F38A994D38620C82FD60ACD20508F7F570BEBB057F7543578069C65F5A643D63587F8A75B6B7A793914BDD1A65E8B7D64789AF39D874F65D715869413AA131F88E0746CE0ED6D867B757D215EDAB9CA883EEFFCA0963436703A3BE2A1B2BD5331D5271AD316D6BC66374479F15FE76C365C6DD +dhcp-87.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. gOeTc+6oFsRc0G2AcvOKmU04YgyC/WCs0gUI9/VwvrsFf3VDV4Bpxl9aZD1jWH+Kdba3p5ORS90aZei31keJrznYdPZdcVhpQTqhMfiOB0bODtbYZ7dX0hXtq5yog+7/ygljQ2cDo74qGyvVMx1Sca0xbWvGY3RHnxX+dsNlxt0= ;{id = 42393} +07646863702D3837096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C8E410E960634D5C0D10611FC1BEDD64AAF5F5FB46BF0AF7BA8489248831BD949F932896DCA91FA856F00DBE3D63DD24D8EA2BED85002944A60CE310E0BA675F432FF6D3C106D510B1CC05DE46F263A1F5498AA48E869FFFD4660E5C32C9DD9839438DAC619B3A871A18DC6FEFE3EAAE4B3A9736531A7E0A9E7029C429FA6942 +dhcp-87.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yOQQ6WBjTVwNEGEfwb7dZKr19ftGvwr3uoSJJIgxvZSfkyiW3KkfqFbwDb49Y90k2Oor7YUAKUSmDOMQ4LpnX0Mv9tPBBtUQscwF3kbyY6H1SYqkjoaf/9RmDlwyyd2YOUONrGGbOocaGNxv7+Pqrks6lzZTGn4KnnApxCn6aUI= ;{id = 42393} +07646863702D3837096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3838096E6C6E65746C616273026E6C000006400000000003 +dhcp-87.nlnetlabs.nl. 3600 IN NSEC dhcp-88.nlnetlabs.nl. A RRSIG NSEC +07646863702D3838096E6C6E65746C616273026E6C0000010001000027D80004D59AE058 +dhcp-88.nlnetlabs.nl. 10200 IN A 213.154.224.88 +07646863702D3838096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009481E7B8A7F510422C91DCE547892E618C24033B2CC9E019B6C17EB335FBCC8F3ED261449FCA719479AA3675B3F11384E949A70D0A0D2B935CDD34CD27AA6F15BA049DD753BEB820E87074A6E24C1F052DE2ED4DEC24CC79419080DE69DD93D5C58EA967532C298D61BF0EA87D3B04B4A20EFBCD6DF76828CEA3F8BD426F9201 +dhcp-88.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lIHnuKf1EEIskdzlR4kuYYwkAzssyeAZtsF+szX7zI8+0mFEn8pxlHmqNnWz8ROE6UmnDQoNK5Nc3TTNJ6pvFboEnddTvrgg6HB0puJMHwUt4u1N7CTMeUGQgN5p3ZPVxY6pZ1MsKY1hvw6ofTsEtKIO+81t92gozqP4vUJvkgE= ;{id = 42393} +07646863702D3838096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A6D056C7A0B174646F49C8592D5D83D0817B683CB47960A8E40FCA50613F9B61511DA387411966474C7B01F2EB3A374348AFF72BAA94430DA78458BEA76808795C4FF8D93FA45ED11CB220D8FC53D384141B7336A074A50D262A83C7F30D8E9333BDE004797405A23E6566B5FE6EE1E372D478FB641A35794B55AAAC9AFFA54C +dhcp-88.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ptBWx6CxdGRvSchZLV2D0IF7aDy0eWCo5A/KUGE/m2FRHaOHQRlmR0x7AfLrOjdDSK/3K6qUQw2nhFi+p2gIeVxP+Nk/pF7RHLIg2PxT04QUG3M2oHSlDSYqg8fzDY6TM73gBHl0BaI+ZWa1/m7h43LUePtkGjV5S1WqrJr/pUw= ;{id = 42393} +07646863702D3838096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3839096E6C6E65746C616273026E6C000006400000000003 +dhcp-88.nlnetlabs.nl. 3600 IN NSEC dhcp-89.nlnetlabs.nl. A RRSIG NSEC +07646863702D3839096E6C6E65746C616273026E6C0000010001000027D80004D59AE059 +dhcp-89.nlnetlabs.nl. 10200 IN A 213.154.224.89 +07646863702D3839096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00028B302DAF7C62DBE34130FC630535260A0CCFB79C124A77FEAFC96215199911CFB1B3AE9FE41B1CAF18BA13AADFAA14F4C855DBD2A1C8FECDBBD8842CA81D18A3F3F8F727185AB4F4021B0CAEBA4EF221F039A28837D565C9A3A35D459A2FEA5FEB97063A2AA67547B2B3503D7CC2224363DEBF607AF4CB45F223362BD47050 +dhcp-89.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. AoswLa98YtvjQTD8YwU1JgoMz7ecEkp3/q/JYhUZmRHPsbOun+QbHK8YuhOq36oU9MhV29KhyP7Nu9iELKgdGKPz+PcnGFq09AIbDK66TvIh8DmiiDfVZcmjo11Fmi/qX+uXBjoqpnVHsrNQPXzCIkNj3r9gevTLRfIjNivUcFA= ;{id = 42393} +07646863702D3839096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0049BE3343D72B99336F912665D549DF56254B8E64E01BDD9F0754AA2209BDCC62E141D40028B9CE57A3917FE4EBF7F56FE813A0421767D6844299A96A4D99120A23FCCC15ECF0F4086B92CBCEACA70A664BDD2A833A3DC9126E804C9171D4F2630FAF949BFD69954B19074EFBFA3DE0A86172B0CCD3B650E99055D79259B8421B +dhcp-89.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Sb4zQ9crmTNvkSZl1UnfViVLjmTgG92fB1SqIgm9zGLhQdQAKLnOV6ORf+Tr9/Vv6BOgQhdn1oRCmalqTZkSCiP8zBXs8PQIa5LLzqynCmZL3SqDOj3JEm6ATJFx1PJjD6+Um/1plUsZB077+j3gqGFysMzTtlDpkFXXklm4Qhs= ;{id = 42393} +07646863702D3839096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3930096E6C6E65746C616273026E6C000006400000000003 +dhcp-89.nlnetlabs.nl. 3600 IN NSEC dhcp-90.nlnetlabs.nl. A RRSIG NSEC +07646863702D3930096E6C6E65746C616273026E6C0000010001000027D80004D59AE05A +dhcp-90.nlnetlabs.nl. 10200 IN A 213.154.224.90 +07646863702D3930096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009B8C0A2864F889AEEB7DFB252F1178F39A6EFEC1EBB4C4D10EC49E24F3A62296F9B9D763755C07EF07319ACB4884887AA4C5FB515D016A8204E543243FFA9F7DA1AC5BB8680BB5CACE807CD5116FB46AE4547FDE1F789BBF2CA79E5A44DDEF3FA4D6C8733363F17383C7773F3F9712E1CAE84A75151D110CBE5075B80141C8FF +dhcp-90.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m4wKKGT4ia7rffslLxF485pu/sHrtMTRDsSeJPOmIpb5uddjdVwH7wcxmstIhIh6pMX7UV0BaoIE5UMkP/qffaGsW7hoC7XKzoB81RFvtGrkVH/eH3ibvyynnlpE3e8/pNbIczNj8XODx3c/P5cS4croSnUVHREMvlB1uAFByP8= ;{id = 42393} +07646863702D3930096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00304A806BCD3969E21EF60F11060E73C26AA46FE31DC48E857510BDDED9B8ED338FAF0EF0478EBA1B1BACCA591E2B8F2AB5531D5E553EEF6F1B7F682D6C589B0607BFA101A21D5BFFED907ADB747A1384D5D605291865AADF92457FF36413BF1349B821304BD5E32F95AC1EBA28A403D228B51D9A2327BDACA20D89133FEB5E2D +dhcp-90.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. MEqAa805aeIe9g8RBg5zwmqkb+MdxI6FdRC93tm47TOPrw7wR466GxusylkeK48qtVMdXlU+728bf2gtbFibBge/oQGiHVv/7ZB623R6E4TV1gUpGGWq35JFf/NkE78TSbghMEvV4y+VrB66KKQD0ii1HZojJ72sog2JEz/rXi0= ;{id = 42393} +07646863702D3930096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3931096E6C6E65746C616273026E6C000006400000000003 +dhcp-90.nlnetlabs.nl. 3600 IN NSEC dhcp-91.nlnetlabs.nl. A RRSIG NSEC +07646863702D3931096E6C6E65746C616273026E6C0000010001000027D80004D59AE05B +dhcp-91.nlnetlabs.nl. 10200 IN A 213.154.224.91 +07646863702D3931096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0011E41ADCF9E215EECD6CDE5ACC49354883892E26F21F53102119336100EAEAEEA1AA75F75A9E84E709F7C69A55F51F4FCEAD786EA247A1FE6AA0464B82A40C51872E7BDA3A2905A6774400405740D390991EFC5BF0C1AA90A7D180063BAB214F58A8DF2CC0156EB7AF51910D88B411601DF2B5F5E3790E6CDD564563CFA94E24 +dhcp-91.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EeQa3PniFe7NbN5azEk1SIOJLibyH1MQIRkzYQDq6u6hqnX3Wp6E5wn3xppV9R9Pzq14bqJHof5qoEZLgqQMUYcue9o6KQWmd0QAQFdA05CZHvxb8MGqkKfRgAY7qyFPWKjfLMAVbrevUZENiLQRYB3ytfXjeQ5s3VZFY8+pTiQ= ;{id = 42393} +07646863702D3931096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00604DE1C8D475A32437683937810FC6DAB2F6EF5D6E3B2DF531C1D0952AFCAA382D26A4ACF773F98076D45F112EC13ADCBFB4EC018372703985D31B3523195652A604AFD24D9E7AC857B2C7ED099E7179810295A577480B8EF3F2E08C1CE82709C27807152E509D35280EE3CBD33EA3293DC2DBBD480C584D02D9A2F869C0C32F +dhcp-91.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YE3hyNR1oyQ3aDk3gQ/G2rL2711uOy31McHQlSr8qjgtJqSs93P5gHbUXxEuwTrcv7TsAYNycDmF0xs1IxlWUqYEr9JNnnrIV7LH7QmecXmBApWld0gLjvPy4Iwc6CcJwngHFS5QnTUoDuPL0z6jKT3C271IDFhNAtmi+GnAwy8= ;{id = 42393} +07646863702D3931096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3932096E6C6E65746C616273026E6C000006400000000003 +dhcp-91.nlnetlabs.nl. 3600 IN NSEC dhcp-92.nlnetlabs.nl. A RRSIG NSEC +07646863702D3932096E6C6E65746C616273026E6C0000010001000027D80004D59AE05C +dhcp-92.nlnetlabs.nl. 10200 IN A 213.154.224.92 +07646863702D3932096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A1D6F5691600B9D7962F15E0CF1CA39DB11E5995FAC40366547252BB8D493DCD82E8DB5890E7020C6A1B72F78578A58644BA0B1AEBF3CE2CB2DB9479B4A774A0F81302982F7608A93CCCACBE2EB96A732C275257513E113584DB5A183F027354AB338130D0AD5C5BE1AEE8DE0445DE128E6A3D4EA5FA6EEDABCEFDEEA6EC0B0C +dhcp-92.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. odb1aRYAudeWLxXgzxyjnbEeWZX6xANmVHJSu41JPc2C6NtYkOcCDGobcveFeKWGRLoLGuvzziyy25R5tKd0oPgTApgvdgipPMysvi65anMsJ1JXUT4RNYTbWhg/AnNUqzOBMNCtXFvhrujeBEXeEo5qPU6l+m7tq8797qbsCww= ;{id = 42393} +07646863702D3932096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0027CFD5B4FC1F6114F5BB8D214BEB5E01F3800003E52E1D548728B1F7B4456716D2B6BBFE44AA5AF718B4C809CD9F43BC52F7BB9633176D3BE1A3483FF3E332FFECFA75497D3A8365740413FA64A40B5F7C19A2E0E5E0E73D0DB577EE38FE5DD11594A94F61971BC1150D77882AB7A289FCD5DF37D896937C6413017506EDED66 +dhcp-92.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. J8/VtPwfYRT1u40hS+teAfOAAAPlLh1Uhyix97RFZxbStrv+RKpa9xi0yAnNn0O8Uve7ljMXbTvho0g/8+My/+z6dUl9OoNldAQT+mSkC198GaLg5eDnPQ21d+44/l3RFZSpT2GXG8EVDXeIKreiifzV3zfYlpN8ZBMBdQbt7WY= ;{id = 42393} +07646863702D3932096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3933096E6C6E65746C616273026E6C000006400000000003 +dhcp-92.nlnetlabs.nl. 3600 IN NSEC dhcp-93.nlnetlabs.nl. A RRSIG NSEC +07646863702D3933096E6C6E65746C616273026E6C0000010001000027D80004D59AE05D +dhcp-93.nlnetlabs.nl. 10200 IN A 213.154.224.93 +07646863702D3933096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001A8910EA15DFD40BCBB13C5AED924D8FB7705F989071D0428505BF67B78AC42EAAF36BF1570FDC21BD418650B3C17D091CF77910E901E5A3F46EA0D04A5621E69DD5D4660C692D326F0AF6603FD89B8937BE6B770CDE6977B9944AF230554BBAD0730C377B35EEF50FEC6C7E6C81114664D11EEF2FD9437F83E40A0272A48E79 +dhcp-93.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GokQ6hXf1AvLsTxa7ZJNj7dwX5iQcdBChQW/Z7eKxC6q82vxVw/cIb1BhlCzwX0JHPd5EOkB5aP0bqDQSlYh5p3V1GYMaS0ybwr2YD/Ym4k3vmt3DN5pd7mUSvIwVUu60HMMN3s17vUP7Gx+bIERRmTRHu8v2UN/g+QKAnKkjnk= ;{id = 42393} +07646863702D3933096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0065B434E33EEFAE639509386F9E02B40B58E2B715649E109287CB1FF60F9C1B5B6534EDA19AB8AF3E2ADF04BCA8E2AC5193666BD50ACAFFD32060D80CE5EC8A30C2C5C4F15BBD76E81651F5752D946B09926F0EC242845D7C5FEDF13449204E05C58458967EE71453EC211B84BEEEF73423D13E0E33D97B01AE600BE20BA86B63 +dhcp-93.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZbQ04z7vrmOVCThvngK0C1jitxVknhCSh8sf9g+cG1tlNO2hmrivPirfBLyo4qxRk2Zr1QrK/9MgYNgM5eyKMMLFxPFbvXboFlH1dS2UawmSbw7CQoRdfF/t8TRJIE4FxYRYln7nFFPsIRuEvu73NCPRPg4z2XsBrmAL4guoa2M= ;{id = 42393} +07646863702D3933096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3934096E6C6E65746C616273026E6C000006400000000003 +dhcp-93.nlnetlabs.nl. 3600 IN NSEC dhcp-94.nlnetlabs.nl. A RRSIG NSEC +07646863702D3934096E6C6E65746C616273026E6C0000010001000027D80004D59AE05E +dhcp-94.nlnetlabs.nl. 10200 IN A 213.154.224.94 +07646863702D3934096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00BCE3387D6460652E7C3176167EC96A79126DBEA996A5E9517968D869443B18013270EC4741AB82F9502C4236071FDE32591CC5BF062CDE61CDEB8BA0F596C9F77D9AB8F8C9C443379B6DD24FDC7C8C411AA02DBBCE7CBC87EB288786B078528F3415027019194F897985E973DCF1C04DAA4CE5ABC56816BEA4BAA41F489D48F2 +dhcp-94.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vOM4fWRgZS58MXYWfslqeRJtvqmWpelReWjYaUQ7GAEycOxHQauC+VAsQjYHH94yWRzFvwYs3mHN64ug9ZbJ932auPjJxEM3m23ST9x8jEEaoC27zny8h+soh4aweFKPNBUCcBkZT4l5helz3PHATapM5avFaBa+pLqkH0idSPI= ;{id = 42393} +07646863702D3934096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0062419C9B50F7E56594F69AE20781E52317194E0FEEE163398D9C06652A1BF0F45D1B4765EC6856AFB9EEFE5D8514370DB0B4152CDEB36C097848EF06CD32A55998CC4BC9E70EAABBDB1AB744DB7D9E722E027BA513406F94C3F47C8BA372854BDDCF762280C2B1529F80F47451A285AC8F56BF3E15CA51FA2119070062ECCCF6 +dhcp-94.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. YkGcm1D35WWU9priB4HlIxcZTg/u4WM5jZwGZSob8PRdG0dl7GhWr7nu/l2FFDcNsLQVLN6zbAl4SO8GzTKlWZjMS8nnDqq72xq3RNt9nnIuAnulE0BvlMP0fIujcoVL3c92IoDCsVKfgPR0UaKFrI9Wvz4VylH6IRkHAGLszPY= ;{id = 42393} +07646863702D3934096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3935096E6C6E65746C616273026E6C000006400000000003 +dhcp-94.nlnetlabs.nl. 3600 IN NSEC dhcp-95.nlnetlabs.nl. A RRSIG NSEC +07646863702D3935096E6C6E65746C616273026E6C0000010001000027D80004D59AE05F +dhcp-95.nlnetlabs.nl. 10200 IN A 213.154.224.95 +07646863702D3935096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007C00836D328878A9051770B422B8D48F27301E5170FDC014126298C0C9B644CBE8A171B2EE35FCB72FB47D594959E98ADA3814EAA812395F2E4ACE64E993647B4962E2F5A340DAAAAB24DAA8B181D6278224865BFCD02FF86FFF72351B979B7BFB50E929C05FB4CD2C961E4E7EF35C7FE464D6FF07D5BBE357972904C6E979CF +dhcp-95.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fACDbTKIeKkFF3C0IrjUjycwHlFw/cAUEmKYwMm2RMvooXGy7jX8ty+0fVlJWemK2jgU6qgSOV8uSs5k6ZNke0li4vWjQNqqqyTaqLGB1ieCJIZb/NAv+G//cjUbl5t7+1DpKcBftM0slh5OfvNcf+Rk1v8H1bvjV5cpBMbpec8= ;{id = 42393} +07646863702D3935096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A4E4DDA29E8C7E8214A37D9C41F8120E3B9E3D1347804973DE56BFAB7B73E1DE5FF66A7F401251D778EB64C0D9ACC33868D4D6DA3051C502EDAE354DBAC41E6E27B05187DEA51F0C77491F7FAA1D204D5B1EA8204E68169BFE19F00AB2B8643640A302BE911E7C58CCE9024A453FDB65D48D44D86CCE9D18E9C5B4D5789AC561 +dhcp-95.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pOTdop6MfoIUo32cQfgSDjuePRNHgElz3la/q3tz4d5f9mp/QBJR13jrZMDZrMM4aNTW2jBRxQLtrjVNusQebiewUYfepR8Md0kff6odIE1bHqggTmgWm/4Z8AqyuGQ2QKMCvpEefFjM6QJKRT/bZdSNRNhszp0Y6cW01XiaxWE= ;{id = 42393} +07646863702D3935096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3936096E6C6E65746C616273026E6C000006400000000003 +dhcp-95.nlnetlabs.nl. 3600 IN NSEC dhcp-96.nlnetlabs.nl. A RRSIG NSEC +07646863702D3936096E6C6E65746C616273026E6C0000010001000027D80004D59AE060 +dhcp-96.nlnetlabs.nl. 10200 IN A 213.154.224.96 +07646863702D3936096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00841648A0DC0AC78466776956E5036631BF570F859431E57734547061626779CDA3E1A26072CEB222FF4ABC734C7F00CC1E6F8BECBB3BEB3AD4C6284A5D68C0BFB335450F2E3200D9BBDA57F5474C67DE0569037BB641709D620786C569EFC37833757975039E3E293AC5207B5691E3F1108419AF6AAF099F8E481933514C2060 +dhcp-96.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hBZIoNwKx4Rmd2lW5QNmMb9XD4WUMeV3NFRwYWJnec2j4aJgcs6yIv9KvHNMfwDMHm+L7Ls76zrUxihKXWjAv7M1RQ8uMgDZu9pX9UdMZ94FaQN7tkFwnWIHhsVp78N4M3V5dQOePik6xSB7VpHj8RCEGa9qrwmfjkgZM1FMIGA= ;{id = 42393} +07646863702D3936096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004940557CDB751AC3AD206D828AEF2D38449A4DA799637E62389CD4AE92E9954EBD1130247A8FB980CC3228E23DD6925CE5E13B7CF8F1B44512C7C1F3E3FBA660FD88C50C30C600307C5DDDE17EFCB289B5415F3602DF59FD8512059147B2C3817503D137AFAB68DBFAD9EFC9752890BB06681263A9DE9D2FCE6E9C6E972435AE +dhcp-96.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SUBVfNt1GsOtIG2Ciu8tOESaTaeZY35iOJzUrpLplU69ETAkeo+5gMwyKOI91pJc5eE7fPjxtEUSx8Hz4/umYP2IxQwwxgAwfF3d4X78som1QV82At9Z/YUSBZFHssOBdQPRN6+raNv62e/JdSiQuwZoEmOp3p0vzm6cbpckNa4= ;{id = 42393} +07646863702D3936096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3937096E6C6E65746C616273026E6C000006400000000003 +dhcp-96.nlnetlabs.nl. 3600 IN NSEC dhcp-97.nlnetlabs.nl. A RRSIG NSEC +07646863702D3937096E6C6E65746C616273026E6C0000010001000027D80004D59AE061 +dhcp-97.nlnetlabs.nl. 10200 IN A 213.154.224.97 +07646863702D3937096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004542676240CE6D2BBDBF4FAC82E706C31B6ABD08677E84B5ADB940B0526684356C58B9AEAE481BE1B840DD9DCFD430B15F341C35DBB2C20A718DED58CE82DF7A5E047DCAB8BC2912248D74198308033F166A68910B70574AE5766865C8DF2B04C90E79D94411C7A54F7A02280ED844C3FAE7744E5C9A928441B384AB9D440022 +dhcp-97.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RUJnYkDObSu9v0+sgucGwxtqvQhnfoS1rblAsFJmhDVsWLmurkgb4bhA3Z3P1DCxXzQcNduywgpxje1YzoLfel4Efcq4vCkSJI10GYMIAz8WamiRC3BXSuV2aGXI3ysEyQ552UQRx6VPegIoDthEw/rndE5cmpKEQbOEq51EACI= ;{id = 42393} +07646863702D3937096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001CD6E3DF6F4FD100F22A4863F69ABEA74067DDC688E7F076AF7D55B80B1AF8183D7F7728A23F43CB01A518F7F432A9A3346C4BB3E0FED4BF679460F567AE34155C50A263A1507B680A82136B93070B44DA7FABF4EC4A3350E646DCB47FC7197A8E247076470219E83979D30CE0E35A7FA646F6584B84F63CC752A132C69FE0AA +dhcp-97.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HNbj329P0QDyKkhj9pq+p0Bn3caI5/B2r31VuAsa+Bg9f3cooj9DywGlGPf0MqmjNGxLs+D+1L9nlGD1Z640FVxQomOhUHtoCoITa5MHC0Taf6v07EozUOZG3LR/xxl6jiRwdkcCGeg5edMM4ONaf6ZG9lhLhPY8x1KhMsaf4Ko= ;{id = 42393} +07646863702D3937096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3938096E6C6E65746C616273026E6C000006400000000003 +dhcp-97.nlnetlabs.nl. 3600 IN NSEC dhcp-98.nlnetlabs.nl. A RRSIG NSEC +07646863702D3938096E6C6E65746C616273026E6C0000010001000027D80004D59AE062 +dhcp-98.nlnetlabs.nl. 10200 IN A 213.154.224.98 +07646863702D3938096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006BA22A7897D967ACE0A2831E54A8A7883D886F4E50E41042D9AD8B399341C457F1D8A3101CF2D34F583BEF74EBAB8581DA22DF5EE5AF3CE0BDF0B590A3C51D96345DF6C2FC216EB19E048999B0C177DE313A9D21046B68A8E86BD15F50FABA0F2E74F5FE25E3A4DC18D7BEF22A18BE70EAD4D2325A39D9642B23AB8C0271CB1F +dhcp-98.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a6IqeJfZZ6zgooMeVKiniD2Ib05Q5BBC2a2LOZNBxFfx2KMQHPLTT1g773Trq4WB2iLfXuWvPOC98LWQo8UdljRd9sL8IW6xngSJmbDBd94xOp0hBGtoqOhr0V9Q+roPLnT1/iXjpNwY177yKhi+cOrU0jJaOdlkKyOrjAJxyx8= ;{id = 42393} +07646863702D3938096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009B12E443785B56FEA9914B213DF115C175C188517FDE984CAD344A416DB394B246F02AA0FF378989DD04B6C7B142E0F286E8DF4650368A48E90A22B280F4A5DF16BE76E0ECEE4FB2DA1F5704C5BC6BAD5F7CD85DF2AF3860C54833BE9A3FAD32B364226F67FB3A78B3FDDE0CAE01DE45C67E77FB61952ADAAD62B46D04E04305 +dhcp-98.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mxLkQ3hbVv6pkUshPfEVwXXBiFF/3phMrTRKQW2zlLJG8Cqg/zeJid0EtsexQuDyhujfRlA2ikjpCiKygPSl3xa+duDs7k+y2h9XBMW8a61ffNhd8q84YMVIM76aP60ys2Qib2f7Oniz/d4MrgHeRcZ+d/thlSrarWK0bQTgQwU= ;{id = 42393} +07646863702D3938096E6C6E65746C616273026E6C00002F000100000E10001E07646863702D3939096E6C6E65746C616273026E6C000006400000000003 +dhcp-98.nlnetlabs.nl. 3600 IN NSEC dhcp-99.nlnetlabs.nl. A RRSIG NSEC +07646863702D3939096E6C6E65746C616273026E6C0000010001000027D80004D59AE063 +dhcp-99.nlnetlabs.nl. 10200 IN A 213.154.224.99 +07646863702D3939096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0059632760650FAE3AF14ED2BEB7FA7B2F7066048EDA76B712DC7781FE2D2221BD3DE1E4A74E4431244F81CDB1F7832A94A16E46EA9B4E7E5263170DD386AD0B9C63880A370E84906B79208B2A6ED0FDCA0ABC2B7A07744CDCAF0CDF7B17BDBC42AD22B94AABF62F5519460C2D14F40F21E8AA045B0E9EFA81F9B61CF038226724 +dhcp-99.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WWMnYGUPrjrxTtK+t/p7L3BmBI7adrcS3HeB/i0iIb094eSnTkQxJE+BzbH3gyqUoW5G6ptOflJjFw3Thq0LnGOICjcOhJBreSCLKm7Q/coKvCt6B3RM3K8M33sXvbxCrSK5Sqv2L1UZRgwtFPQPIeiqBFsOnvqB+bYc8DgiZyQ= ;{id = 42393} +07646863702D3939096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007DF364B6634AD9ED7F5F03E92547D92918A1296C3612E0D16B4DB58B0335DACF6CEBC543DBBC6E60973E104B926875DDA688E3E2B8474FB170622750F5A9E3F589875968E90C3AC2D56DF17E719909127DFAB52A56F34F2115CF4E57A03350A9ECFD2201A3BF3CAAED3597806AD658DB27D14C0B9731E899C49732CC0B28D328 +dhcp-99.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ffNktmNK2e1/XwPpJUfZKRihKWw2EuDRa021iwM12s9s68VD27xuYJc+EEuSaHXdpojj4rhHT7FwYidQ9anj9YmHWWjpDDrC1W3xfnGZCRJ9+rUqVvNPIRXPTlegM1Cp7P0iAaO/PKrtNZeAatZY2yfRTAuXMeiZxJcyzAso0yg= ;{id = 42393} +07646863702D3939096E6C6E65746C616273026E6C00002F000100000E10001C056469636874096E6C6E65746C616273026E6C000006400000000003 +dhcp-99.nlnetlabs.nl. 3600 IN NSEC dicht.nlnetlabs.nl. A RRSIG NSEC +056469636874096E6C6E65746C616273026E6C0000010001000027D80004D59AE0FA +dicht.nlnetlabs.nl. 10200 IN A 213.154.224.250 +056469636874096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009FC6C9CB40649A6ABD185DB3A4929EFA7E95F52D41F443C4440E67FB30E6270321BCCA5E3E7EAA44B1A07C5D9E9AA0457C9BCD2E59DC7B0ECFC982B3CF1BBEF91CA6587C87E085F8DD84A1A2CB3BC014F71BF03F39E4F78C9FB35B4697B60992DAD76B8F33F7252809885697995088368BD3B390F22C21BC901423E19FA45C91 +dicht.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. n8bJy0Bkmmq9GF2zpJKe+n6V9S1B9EPERA5n+zDmJwMhvMpePn6qRLGgfF2emqBFfJvNLlncew7PyYKzzxu++RymWHyH4IX43YShoss7wBT3G/A/OeT3jJ+zW0aXtgmS2tdrjzP3JSgJiFaXmVCINovTs5DyLCG8kBQj4Z+kXJE= ;{id = 42393} +056469636874096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004C094CBEC69B5776567914A879EB522337459FF98DFAC2C6941FA91B31F8934A64D2A5CDFEB7177DA123876FEF0344F796DE423707B27130FB5D89815EE85E18FB72E555F32BE51112D3E00FB5CCED9E4818B9AF3A9C8E63E97478EAA48A97128AC4962881AE0CFD78FC7ED8437ED273F7090BDB19025CFB462AD426842422C3 +dicht.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. TAlMvsabV3ZWeRSoeetSIzdFn/mN+sLGlB+pGzH4k0pk0qXN/rcXfaEjh2/vA0T3lt5CNweycTD7XYmBXuheGPty5VXzK+UREtPgD7XM7Z5IGLmvOpyOY+l0eOqkipcSisSWKIGuDP14/H7YQ37Sc/cJC9sZAlz7RirUJoQkIsM= ;{id = 42393} +056469636874096E6C6E65746C616273026E6C00002F000100000E10001D06646E732D6C67096E6C6E65746C616273026E6C000006400000000003 +dicht.nlnetlabs.nl. 3600 IN NSEC dns-lg.nlnetlabs.nl. A RRSIG NSEC +06646E732D6C67096E6C6E65746C616273026E6C0000050001000027D800140462657274097365637265742D7767036F726700 +dns-lg.nlnetlabs.nl. 10200 IN CNAME bert.secret-wg.org. +06646E732D6C67096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0084820BF14BA6808927C929B9AC8E0E467F80A9EB1EF8D6BAC6755C50BE0D432DAE8D2901EA8A599BD3B05F6993666F8B268238925D35C0E38B55986922D5F32A5A4943F895D3F41DE4211BC32BB54221AF712A51BEC689B85621FD77D4C3A1C226C6E1706631560CFD1B08B2E8D8BCCBBD6AA4696E51FF6DC2DBE56264F94F40 +dns-lg.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hIIL8UumgIknySm5rI4ORn+Aqese+Na6xnVcUL4NQy2ujSkB6opZm9OwX2mTZm+LJoI4kl01wOOLVZhpItXzKlpJQ/iV0/Qd5CEbwyu1QiGvcSpRvsaJuFYh/XfUw6HCJsbhcGYxVgz9Gwiy6Ni8y71qpGluUf9twtvlYmT5T0A= ;{id = 42393} +06646E732D6C67096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C003D4D19FF711B1B88A937417E88D4ED8D920CA148FE767043AF96A156BCE5844D679B6D3BFB618A69B59B5FEAB655324A1B3491D83E875005BB9B5AA005CEB10400C608A9CD2F8B4220E0E4F07CAD135636CB807F18D13A67FB6AF06C2B4B4DD6459A21EDAF6A221B297985C652813F1CF161629A0D18A9F4584B1247C906D487 +dns-lg.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PU0Z/3EbG4ipN0F+iNTtjZIMoUj+dnBDr5ahVrzlhE1nm207+2GKabWbX+q2VTJKGzSR2D6HUAW7m1qgBc6xBADGCKnNL4tCIODk8HytE1Y2y4B/GNE6Z/tq8GwrS03WRZoh7a9qIhspeYXGUoE/HPFhYpoNGKn0WEsSR8kG1Ic= ;{id = 42393} +06646E732D6C67096E6C6E65746C616273026E6C00002F000100000E10002E036F737804746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C000006040000000003 +dns-lg.nlnetlabs.nl. 3600 IN NSEC osx.test.dnssec-trigger.nlnetlabs.nl. CNAME RRSIG NSEC +036F737804746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00001000010000000A004A08302E3132726334304063653538653133383064653264336432363566353361313032313636383536646366666534356263346564653462363233636536636530613136616466316563 +osx.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.12rc40" "ce58e1380de2d3d265f53a102166856dcffe45bc4ede4b623ce6ce0a16adf1ec" +036F737804746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E00010000000A00A0001008050000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C00C3950B37AB845911F2A6FDFCC3E2EC082A202B8CD8738899F26ACF07492AB34D09262ADF91845B4188A860A4CCEE76E5E162E0DF8603C8350F11A4D5F597FCFFC40A2BAFA58AED966124CAD7F28FA5FD18FA352D76D3FE3E5E5D6D6E2FEC1F499F1F19A74CAEA099B513FBEE9B5FC9A3A2E8D2C0F3BE9652C4D96DD7C2D616D2 +osx.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. w5ULN6uEWRHypv38w+LsCCogK4zYc4iZ8mrPB0kqs00JJirfkYRbQYioYKTM7nbl4WLg34YDyDUPEaTV9Zf8/8QKK6+liu2WYSTK1/KPpf0Y+jUtdtP+Pl5dbW4v7B9Jnx8Zp0yuoJm1E/vum1/Jo6Lo0sDzvpZSxNlt18LWFtI= ;{id = 42393} +036F737804746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0075D2AEEC30D00BA06E72187B3230D1E716FEB372720DC1FB476E87625E66A617F65A593B3AF61B761A042A3819D78A6918C1E869ACAF1A1912F27EC68C814E814E9BF48010B3D0911CC39126AFD602435238991020C7DF9EC4E1B0BF2124840FD0E21E42EF125A216087628CA5F6BA53098E574FCAAE9B24A52AEF1F4DCEC7C8 +osx.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ddKu7DDQC6Buchh7MjDR5xb+s3JyDcH7R26HYl5mphf2Wlk7OvYbdhoEKjgZ14ppGMHoaayvGhkS8n7GjIFOgU6b9IAQs9CRHMORJq/WAkNSOJkQIMffnsThsL8hJIQP0OIeQu8SWiFgh2KMpfa6UwmOV0/KrpskpSrvH03Ox8g= ;{id = 42393} +036F737804746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E10002E0373726304746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C000006000080000003 +osx.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC src.test.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +0373726304746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00001000010000000A004D0B302E31312E3939726333304066373765333433643735333439393330393930356266316265346561313566633066333139633261656132306233653530316530653465353536363035663635 +src.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.11.99rc30" "f77e343d753499309905bf1be4ea15fc0f319c2aea20b3e501e0e4e556605f65" +0373726304746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E00010000000A00A0001008050000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C004CF9A97C3DD52757685997CA69BEF418FB8F9225ED46589080F8BEF02DED3E9FA59C6BF153C3AB74D2593046E3E0CB9E0075AEBDEE5045A4A18ECF3717AE35D7B51C87D159342CCE2AD71D99F964E2E00BC4D21A0A569E9B2BC35BCAD200B6A7D7B2A7F8AF7182A963C0F5B03BA459149908A11A0997E911A503556988973D7F +src.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. TPmpfD3VJ1doWZfKab70GPuPkiXtRliQgPi+8C3tPp+lnGvxU8OrdNJZMEbj4MueAHWuve5QRaShjs83F64117Uch9FZNCzOKtcdmflk4uALxNIaClaemyvDW8rSALan17Kn+K9xgqljwPWwO6RZFJkIoRoJl+kRpQNVaYiXPX8= ;{id = 42393} +0373726304746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CF947918DE0E5EA54DFDFE4B093BB0CA3B66691EACD151878FEF1A7CEC20B930A21C1CA39B2FCFF6D6F045DB69283F6552801C2D89CB9891B2F16623B4B717585C05D94C453F3E5D3CEDDCBEC5DD07FE9CB5551DEAD649847809A055D9E2AFFC4EE68B585A89F821F3063DB4FC027A09710A2F8982DD030C18518ABC04D684BE +src.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. z5R5GN4OXqVN/f5LCTuwyjtmaR6s0VGHj+8afOwguTCiHByjmy/P9tbwRdtpKD9lUoAcLYnLmJGy8WYjtLcXWFwF2UxFPz5dPO3cvsXdB/6ctVUd6tZJhHgJoFXZ4q/8TuaLWFqJ+CHzBj20/AJ6CXEKL4mC3QMMGFGKvATWhL4= ;{id = 42393} +0373726304746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E10002E0377696E04746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C000006000080000003 +src.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC win.test.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +0377696E04746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00001000010000000A004A08302E3131726334374036333462633539346230313362346463326130653266623935396663376361366661313532623861386131303065303734653130363262656461376264396464 +win.test.dnssec-trigger.nlnetlabs.nl. 10 IN TXT "0.11rc47" "634bc594b013b4dc2a0e2fb959fc7ca6fa152b8a8a100e074e1062beda7bd9dd" +0377696E04746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E00010000000A00A0001008050000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C004E6473013EF78A1439B29F115282CB335986EB043E6FA9EA82277B52C61575DABAFB6763FFA8A022DC49F23FDF6239EEBCF00B4DEF0873A19E4C73E5DD1E631556C5F9638E46FB6D70EB2778D64A6E5D4C694FF5DC348B670D6E188496459E66C108B7F20B47CA50CD5C162BA0F88BED09D6E790EC44A963CD96AA16DA76EE7F +win.test.dnssec-trigger.nlnetlabs.nl. 10 IN RRSIG TXT 8 5 10 20140224111605 20140127111605 42393 nlnetlabs.nl. TmRzAT73ihQ5sp8RUoLLM1mG6wQ+b6nqgid7UsYVddq6+2dj/6igItxJ8j/fYjnuvPALTe8Ic6GeTHPl3R5jFVbF+WOORvttcOsneNZKbl1MaU/13DSLZw1uGISWRZ5mwQi38gtHylDNXBYroPiL7QnW55DsRKljzZaqFtp27n8= ;{id = 42393} +0377696E04746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CDCBD191A7CAB632F18D573FE9E001BC9EAA999AFF647B561A2C0F26D60403FF19C9EE94D420365EE8F5D745CE9931E9926C313E4343B05E8B7BA333EEECF3CCFE79AE189AEC92DED552A486F63843BEA8E9D76FE0C410543A0B360F9A13E8D0BECCFE388D6CA9B5CE5E057C1AEF4582AA892EA9FD7ACEA5C88C4E1A393F45EF +win.test.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zcvRkafKtjLxjVc/6eABvJ6qmZr/ZHtWGiwPJtYEA/8Zye6U1CA2Xuj110XOmTHpkmwxPkNDsF6Le6Mz7uzzzP55rhia7JLe1VKkhvY4Q76o6ddv4MQQVDoLNg+aE+jQvsz+OI1sqbXOXgV8Gu9FgqqJLqn9es6lyIxOGjk/Re8= ;{id = 42393} +0377696E04746573740E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E100031036F73780776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C000006000080000003 +win.test.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC osx.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +036F73780776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C0000100001000027D8004604302E31314037373536356566346132356630373338336335376165346439366364336264356663666530383933303166323035346363663230666336333663373665373130 +osx.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "77565ef4a25f07383c57ae4d96cd3bd5fcfe089301f2054ccf20fc636c76e710" +036F73780776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E0001000027D800A000100805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00172A29DC528F02B8568B76574A650D6D022D9CECF14A4A252BB173B7AC1489EFED7E61CB6803A80640BF71B1F053431A32403C955A9D6FE7E75DDFEA94F702AD5068748CAC3AD4E1CCB3737A6004B0E74820F0772A8A9D512460A75FB0F49BB145AB83E553907C956B88B0D4CA7F182368CBC15D5FC806694E2357F5C310D820 +osx.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fyop3FKPArhWi3ZXSmUNbQItnOzxSkolK7Fzt6wUie/tfmHLaAOoBkC/cbHwU0MaMkA8lVqdb+fnXd/qlPcCrVBodIysOtThzLNzemAEsOdIIPB3KoqdUSRgp1+w9JuxRauD5VOQfJVriLDUyn8YI2jLwV1fyAZpTiNX9cMQ2CA= ;{id = 42393} +036F73780776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0095ED08E16B3C89CE49572DD36B42D38148779B0C92D094BA512EF52C1945FFB0F8BAF6252A1C1D2012303B91DB10D4D700E203CB86DF34419FD0815EACB58BD577F20690A07604FE5770B0D37902272B2AB043745BE9051E5DE4E506008A46242C6E4CCC74ACACB444E0F1965C06B05CE43F40A7EED9A7BE7A06FB944FEB3C30 +osx.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. le0I4Ws8ic5JVy3Ta0LTgUh3mwyS0JS6US71LBlF/7D4uvYlKhwdIBIwO5HbENTXAOIDy4bfNEGf0IFerLWL1XfyBpCgdgT+V3Cw03kCJysqsEN0W+kFHl3k5QYAikYkLG5MzHSsrLRE4PGWXAawXOQ/QKfu2ae+egb7lE/rPDA= ;{id = 42393} +036F73780776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E100031037372630776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C000006000080000003 +osx.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC src.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +037372630776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C0000100001000027D8004604302E31314063323263666636613531663061653865303733393361623739333564343466616161626665336438333431626138626238353138393339316463646664396662 +src.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "c22cff6a51f0ae8e07393ab7935d44faaabfe3d8341ba8bb85189391dcdfd9fb" +037372630776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E0001000027D800A000100805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006CAE818373E3F012B6D5D61DB7F461B6A1D7CF08FE0F0C830FC68D3DEAA185A1149B30F7B053A4FB933E04974DB7DF26BFE1F9AA2CB452E9E8E51617D63DA5B4FCDC461D1E501D4105AFF41A944458AA328659C7F4FB260AB38DEDE56F8BF555337C60FCD1F6EED8942EE3217BEA0AD75707A1BB512792023FC51F142D34835B +src.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bK6Bg3Pj8BK21dYdt/RhtqHXzwj+DwyDD8aNPeqhhaEUmzD3sFOk+5M+BJdNt98mv+H5qiy0Uuno5RYX1j2ltPzcRh0eUB1BBa/0GpREWKoyhlnH9PsmCrON7eVvi/VVM3xg/NH27tiULuMhe+oK11cHobtRJ5ICP8UfFC00g1s= ;{id = 42393} +037372630776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B0B00882E3AB573F60E984AA239A1E415DD3887685C9AC7D13EBFB0C1CE41E63D0C4B26A6582DD63DD69C565F729790066DD32FAED03B5BCB37D5C5E350A2224242A0BA5371A7A077B7ADF541DE059E2B00BE07811BA0F519005F7227585719B2D4BBB66BB32A5CD21A2D9C819828EB6C37AAD1613E894780F5C305B0B99814B +src.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. sLAIguOrVz9g6YSqI5oeQV3TiHaFyax9E+v7DBzkHmPQxLJqZYLdY91pxWX3KXkAZt0y+u0DtbyzfVxeNQoiJCQqC6U3GnoHe3rfVB3gWeKwC+B4EboPUZAF9yJ1hXGbLUu7Zrsypc0hotnIGYKOtsN6rRYT6JR4D1wwWwuZgUs= ;{id = 42393} +037372630776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E1000310377696E0776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C000006000080000003 +src.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC win.version.dnssec-trigger.nlnetlabs.nl. TXT RRSIG NSEC +0377696E0776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C0000100001000027D8004604302E31314033666264656365333832383835326630343065633233383836656664313061356432613432383666343761616662643731386133363037376466643965313064 +win.version.dnssec-trigger.nlnetlabs.nl. 10200 IN TXT "0.11" "3fbdece3828852f040ec23886efd10a5d2a4286f47aafbd718a36077dfd9e10d" +0377696E0776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E0001000027D800A000100805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0037387EC2DD476BFB0593952DFF30A0B96D806BE99B9C18E5CFA0C2E4D6B1C8C8AC53DAD41A145DC07349409B8E74B4F2B22A2AE298DE442966C1DC23517B4111F637C493CDE6869C65814728242C49CD11B0BEE7CD44F9F963C8E1853D59F427129BDC4D2D5829C3CF1B0B37EA1291CCEFA074D8A8E6765C9DAE75F8E4F1A4DF +win.version.dnssec-trigger.nlnetlabs.nl. 10200 IN RRSIG TXT 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Nzh+wt1Ha/sFk5Ut/zCguW2Aa+mbnBjlz6DC5NaxyMisU9rUGhRdwHNJQJuOdLTysioq4pjeRClmwdwjUXtBEfY3xJPN5oacZYFHKCQsSc0RsL7nzUT5+WPI4YU9WfQnEpvcTS1YKcPPGws36hKRzO+gdNio5nZcna51+OTxpN8= ;{id = 42393} +0377696E0776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C4CAACF34BA5E9C58DB1AEC4AC49243BA8226808F59754C907FBF8B80537C9233E3F14C2B77D1AB31FC0508AC2CB192CC572B0E16B70B75B82DBC7A6EB41352084FBA7E60AAD93B8DA274E2703510736F20EED418D269CE33C8DBE88DA8412CED404B769FC667EBB6A005B9D831663135690D581E66B28FA3C8E554D598E13C8 +win.version.dnssec-trigger.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xMqs80ul6cWNsa7ErEkkO6giaAj1l1TJB/v4uAU3ySM+PxTCt30asx/AUIrCyxksxXKw4Wtwt1uC28em60E1IIT7p+YKrZO42idOJwNRBzbyDu1BjSac4zyNvojahBLO1AS3afxmfrtqAFudgxZjE1aQ1YHmayj6PI5VTVmOE8g= ;{id = 42393} +0377696E0776657273696F6E0E646E737365632D74726967676572096E6C6E65746C616273026E6C00002F000100000E10002009646F6C67756C647572096E6C6E65746C616273026E6C000006000080000003 +win.version.dnssec-trigger.nlnetlabs.nl. 3600 IN NSEC dolguldur.nlnetlabs.nl. TXT RRSIG NSEC +09646F6C67756C647572096E6C6E65746C616273026E6C0000010001000027D80004D59AE00D +dolguldur.nlnetlabs.nl. 10200 IN A 213.154.224.13 +09646F6C67756C647572096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00791A7293055E75F0DAFFDBC1D53011A905FC2F45F493FD2F63E153A1005A95C8860119DB52BCA801AE1683F101C78D6C8821C34D2F34AF3831832D789014738F43A5CEFBA193E93AF1E3CC9CF3B60F75E052C4271B871655987631E72A968461F6008F5D60CFC07024A84713AF733AD0C514494198E78D9BB3DA8DE66D6C7963 +dolguldur.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eRpykwVedfDa/9vB1TARqQX8L0X0k/0vY+FToQBalciGARnbUryoAa4Wg/EBx41siCHDTS80rzgxgy14kBRzj0Olzvuhk+k68ePMnPO2D3XgUsQnG4cWVZh2MecqloRh9gCPXWDPwHAkqEcTr3M60MUUSUGY542bs9qN5m1seWM= ;{id = 42393} +09646F6C67756C647572096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A1BC00A30D69EA38924DD3DAA1A9A62F06A4B313F1972BAE9AEA84CC74C16AEB558E045A3433F657CD300FC3DE09453F968D4C12C8F9BD3F269268551B30BBE6E1F213F5965800C6EAD142AC749624ED4FA0C1CD91DBDB3158F712334E3137EE340DEC02D5F0ABD7D465553E5C05AB0BA3AAB7BE2B9C895328BD897E6C352829 +dolguldur.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. obwAow1p6jiSTdPaoammLwaksxPxlyuumuqEzHTBautVjgRaNDP2V80wD8PeCUU/lo1MEsj5vT8mkmhVGzC75uHyE/WWWADG6tFCrHSWJO1PoMHNkdvbMVj3EjNOMTfuNA3sAtXwq9fUZVU+XAWrC6Oqt74rnIlTKL2Jfmw1KCk= ;{id = 42393} +09646F6C67756C647572096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0090B8CE85364679D13AD6B85926B9D86D036318A35140415601C7458B7CE4A7CD09889D329F5F0FF36D2B79A8567EFF69618ECE1B5CC10A7B05FE74F0F3CBCE5AC53F4EE1FFD624C2A6E7FF856553301B1CAC28FDDAB13432C047F7BB219A71506D80F5B23222E2F209F14E45B51A1C0CC8B78F2BF64E3B90EC792C75382B2ED9 +dolguldur.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kLjOhTZGedE61rhZJrnYbQNjGKNRQEFWAcdFi3zkp80JiJ0yn18P820reahWfv9pYY7OG1zBCnsF/nTw88vOWsU/TuH/1iTCpuf/hWVTMBscrCj92rE0MsBH97shmnFQbYD1sjIi4vIJ8U5FtRocDMi3jyv2TjuQ7HksdTgrLtk= ;{id = 42393} +09646F6C67756C647572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0016ACFD6862DE262B01E28D0585AD431FB9E7382938A2482D773242EFA56D4F2C4A0EB4BC857FF8A7BD6F3D373AEC9B9022383A7635DA3028455E7E55E9E4BF186E59DB6185F172D21BB680BA2945406C121BEB8660D10B7A80A27FF0C839666DD99B653B8F30E76D69FB91F9BB26EDFCAF30A879244F5EC43514A12ABE12944B +dolguldur.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Fqz9aGLeJisB4o0Fha1DH7nnOCk4okgtdzJC76VtTyxKDrS8hX/4p71vPTc67JuQIjg6djXaMChFXn5V6eS/GG5Z22GF8XLSG7aAuilFQGwSG+uGYNELeoCif/DIOWZt2ZtlO48w521p+5H5uybt/K8wqHkkT17ENRShKr4SlEs= ;{id = 42393} +09646F6C67756C647572096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021D09FFFE6AAA56 +dolguldur.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21d:9ff:fe6a:aa56 +09646F6C67756C647572096E6C6E65746C616273026E6C00002C0001000027D800160101ADB23C8980AF34D9A637E93EF6B19A8F44B61F9C +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 1 1 ADB23C8980AF34D9A637E93EF6B19A8F44B61F9C +09646F6C67756C647572096E6C6E65746C616273026E6C00002C0001000027D800160201F591E1602245E501B55DE0B69358DE79282299B8 +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 2 1 F591E1602245E501B55DE0B69358DE79282299B8 +09646F6C67756C647572096E6C6E65746C616273026E6C00002C0001000027D800160301AFDF808CA232EC012605F59746850E71F2A9B584 +dolguldur.nlnetlabs.nl. 10200 IN SSHFP 3 1 AFDF808CA232EC012605F59746850E71F2A9B584 +09646F6C67756C647572096E6C6E65746C616273026E6C00002F000100000E1000250E646F6C67756C6475722D62636531096E6C6E65746C616273026E6C00000640000008000B +dolguldur.nlnetlabs.nl. 3600 IN NSEC dolguldur-bce1.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0E646F6C67756C6475722D62636531096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021D09FFFE6AAA54 +dolguldur-bce1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21d:9ff:fe6a:aa54 +0E646F6C67756C6475722D62636531096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00439E6F7E56BDFED0C25D737C227487466880996FA67B16D98D4C4087B3562F6431E30B9E239D1434FCD24D3970BFA27EAB04EDAEDF7ED79B2543B12D9AEBC5EF67874622455A14C34EBB7F82284DE0D6C9F8A2DE7E07C294CDBF602185768D6130F285A10B9FC91F1D301F7854C3E0A8E86288C66F15A8638168B00E7EA6A355 +dolguldur-bce1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Q55vfla9/tDCXXN8InSHRmiAmW+mexbZjUxAh7NWL2Qx4wueI50UNPzSTTlwv6J+qwTtrt9+15slQ7EtmuvF72eHRiJFWhTDTrt/gihN4NbJ+KLefgfClM2/YCGFdo1hMPKFoQufyR8dMB94VMPgqOhiiMZvFahjgWiwDn6mo1U= ;{id = 42393} +0E646F6C67756C6475722D62636531096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B8B7B20B0CA6AA10C4F55665ED986C450DB3449D5BA56370B13298A418640D8243EB1AE7CFF7C7FDC13D5D19A8AABCC425D922270CE1248B5E8E5492511BCBE4216466CB633CEB8F490A631BB929EFE022C1EF7506BE8C2A39BF0916B73910F91A1D71D36A1B2AEDEDA3ACD603B2F3D26F7C99E03CD41D862D1E84DF39600983 +dolguldur-bce1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uLeyCwymqhDE9VZl7ZhsRQ2zRJ1bpWNwsTKYpBhkDYJD6xrnz/fH/cE9XRmoqrzEJdkiJwzhJItejlSSURvL5CFkZstjPOuPSQpjG7kp7+Aiwe91Br6MKjm/CRa3ORD5Gh1x02obKu3to6zWA7Lz0m98meA81B2GLR6E3zlgCYM= ;{id = 42393} +0E646F6C67756C6475722D62636531096E6C6E65746C616273026E6C00002F000100000E1000200964726F6D6564617279096E6C6E65746C616273026E6C000006000000080003 +dolguldur-bce1.nlnetlabs.nl. 3600 IN NSEC dromedary.nlnetlabs.nl. AAAA RRSIG NSEC +0964726F6D6564617279096E6C6E65746C616273026E6C0000010001000027D80004D59AE088 +dromedary.nlnetlabs.nl. 10200 IN A 213.154.224.136 +0964726F6D6564617279096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0087A23A05BAD6658C63856AF3725A5BB31818CF07D715E76001A9EF364BC4BFDDBAE873A53A66C902677C2EB02E80173DF90D3C4ADCA7880D3A5918D99F179091A31534D1052212564CD9824AC4C9A4B715302BE232DE6EB653829BD6F308C9D9FD0039E4E08C6304C3A23ED971AC52F297B80ED0AEB910B725DD06580E1885FB +dromedary.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. h6I6BbrWZYxjhWrzclpbsxgYzwfXFedgAanvNkvEv9266HOlOmbJAmd8LrAugBc9+Q08StyniA06WRjZnxeQkaMVNNEFIhJWTNmCSsTJpLcVMCviMt5utlOCm9bzCMnZ/QA55OCMYwTDoj7ZcaxS8pe4DtCuuRC3Jd0GWA4Yhfs= ;{id = 42393} +0964726F6D6564617279096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0029515C04F0FCF3138BF90DD7A22A9D5E95E52A40CEE518FCC6FD15B54C60F09079C1D6C4B6706EFA33DCE7C9A5A49E48CEA830CC5D43F3431307660AA836666E139BD2312D22C4FC8D26E0B5F31C03245C01FBDBFAC5408E9C38EDB9A2F51454F46E781AB717577C00104648315BE61FB4EE61B88E69242F8EE142BB01091513 +dromedary.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. KVFcBPD88xOL+Q3XoiqdXpXlKkDO5Rj8xv0VtUxg8JB5wdbEtnBu+jPc58mlpJ5IzqgwzF1D80MTB2YKqDZmbhOb0jEtIsT8jSbgtfMcAyRcAfvb+sVAjpw47bmi9RRU9G54GrcXV3wAEEZIMVvmH7TuYbiOaSQvjuFCuwEJFRM= ;{id = 42393} +0964726F6D6564617279096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C22256AA3114BCCF8B54DA8089C17547C4C87B4E61F4507AE5E1F69D7926C42B7D306A51610F1FD9C85B915763EA86C9F0E10F3A48F20F70822AC150B740CE99E8FB51BCD99B488509FA2EC5E2AC596D5155E7AD57FE1FFA7E8C79A6C88F03479AE8AAA1DEE681FB9E40AF7F1161FD8D8D5B294B6F928ADFD4F0D74572C3D071 +dromedary.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wiJWqjEUvM+LVNqAicF1R8TIe05h9FB65eH2nXkmxCt9MGpRYQ8f2chbkVdj6obJ8OEPOkjyD3CCKsFQt0DOmej7UbzZm0iFCfouxeKsWW1RVeetV/4f+n6MeabIjwNHmuiqod7mgfueQK9/EWH9jY1bKUtvkorf1PDXRXLD0HE= ;{id = 42393} +0964726F6D6564617279096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B26B8FD99B211DE40977AFC8E39370BABD15B8949C7529411B78B3622A14BB23C1240EE962C2E9B20A197A388ECF088BD0AD5FDB55FDF49ECC58F06F1533EE48548805EAA0B71D869166B1447F57C6381B4F5E8D1B3790E0A4AFB3670638A58997C5D87248AA167E0849D5FB0FBEFB210054DC2F494F58F6AB577A506B4A8C0D +dromedary.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. smuP2ZshHeQJd6/I45Nwur0VuJScdSlBG3izYioUuyPBJA7pYsLpsgoZejiOzwiL0K1f21X99J7MWPBvFTPuSFSIBeqgtx2GkWaxRH9XxjgbT16NGzeQ4KSvs2cGOKWJl8XYckiqFn4ISdX7D777IQBU3C9JT1j2q1d6UGtKjA0= ;{id = 42393} +0964726F6D6564617279096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF001000000000 +dromedary.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:10:: +0964726F6D6564617279096E6C6E65746C616273026E6C00002C0001000027D800160101B41C41F78C3A773CDA1C14346EBCE0D0AC1B7804 +dromedary.nlnetlabs.nl. 10200 IN SSHFP 1 1 B41C41F78C3A773CDA1C14346EBCE0D0AC1B7804 +0964726F6D6564617279096E6C6E65746C616273026E6C00002C0001000027D800160201B82DAE815E4CE0727498B61FA108D72FD65167EE +dromedary.nlnetlabs.nl. 10200 IN SSHFP 2 1 B82DAE815E4CE0727498B61FA108D72FD65167EE +0964726F6D6564617279096E6C6E65746C616273026E6C00002C0001000027D8001603011B2EBB6699E0AA530538F5F9A6BBECC59114DD17 +dromedary.nlnetlabs.nl. 10200 IN SSHFP 3 1 1B2EBB6699E0AA530538F5F9A6BBECC59114DD17 +0964726F6D6564617279096E6C6E65746C616273026E6C00002F000100000E10001B0464733130096E6C6E65746C616273026E6C00000640000008000B +dromedary.nlnetlabs.nl. 3600 IN NSEC ds10.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0464733130096E6C6E65746C616273026E6C0000010001000027D80004D59AE09F +ds10.nlnetlabs.nl. 10200 IN A 213.154.224.159 +0464733130096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008FD058FB9700E14B421FD7941C3DDDCBCE90DE3FDC2A5159DA07CC1A1A8FBEEE8FAC891C080CB290361F8538E4793494F48C7047C85F71B7DF73E62998CADDA5D7976E885E46F2AC77634293524E9A2D6F53BD04E2A35BEF1B068BB6EAB4B66A2D9A0BF7E55693F149E0A9E3C387250866633DCC94E6D6226E072EB9E0814E31 +ds10.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. j9BY+5cA4UtCH9eUHD3dy86Q3j/cKlFZ2gfMGhqPvu6PrIkcCAyykDYfhTjkeTSU9IxwR8hfcbffc+YpmMrdpdeXboheRvKsd2NCk1JOmi1vU70E4qNb7xsGi7bqtLZqLZoL9+VWk/FJ4Knjw4clCGZjPcyU5tYibgcuueCBTjE= ;{id = 42393} +0464733130096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00640F99F6DA56C1A9BAC8FD1A005A236B715547D35BCCB07143870FF26CBCA8230F052FBF0F71F0D513EC6C287140E209C020A65750AD4BAFE42402C0D3775C589271E128BED0581D340D3A27D44145F619298420509B996DFEE75047A01A7678E4B03EE5441DD45D7D3F01686F358C02A2A562E5F0F4FB87A2166E6F82A34611 +ds10.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZA+Z9tpWwam6yP0aAFoja3FVR9NbzLBxQ4cP8my8qCMPBS+/D3Hw1RPsbChxQOIJwCCmV1CtS6/kJALA03dcWJJx4Si+0FgdNA06J9RBRfYZKYQgUJuZbf7nUEegGnZ45LA+5UQd1F19PwFobzWMAqKlYuXw9PuHohZub4KjRhE= ;{id = 42393} +0464733130096E6C6E65746C616273026E6C00002F000100000E1000250265310B6578706572696D656E7473096E6C6E65746C616273026E6C000006400000000003 +ds10.nlnetlabs.nl. 3600 IN NSEC e1.experiments.nlnetlabs.nl. A RRSIG NSEC +0265310B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265310B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e1.experiments.nlnetlabs.nl. 10200 IN NS ns.e1.experiments.nlnetlabs.nl. +0265310B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265320B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e1.experiments.nlnetlabs.nl. 3600 IN NSEC e2.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265310B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007231774C1A3080DC8D7D13D399632280B1A3AD606169D7B503DE56FF1210F00558C3045E8548DB2F79296AC9DA87B04C50C859407A12607D90A765BFD0B5E3C8845EB2543B210109585B816D4CF4E015550A0751FC830E646454CEA020B09F6BC3A6C6F39477A9CA1BB01D291051D65C8251B3FD3901E66E00D28BA7E39ACE49 +e1.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cjF3TBowgNyNfRPTmWMigLGjrWBhade1A95W/xIQ8AVYwwRehUjbL3kpasnah7BMUMhZQHoSYH2Qp2W/0LXjyIReslQ7IQEJWFuBbUz04BVVCgdR/IMOZGRUzqAgsJ9rw6bG85R3qcobsB0pEFHWXIJRs/05AeZuANKLp+Oazkk= ;{id = 42393} +026E730265310B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000011 +ns.e1.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::11 +0265320B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265320B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e2.experiments.nlnetlabs.nl. 10200 IN NS ns.e2.experiments.nlnetlabs.nl. +0265320B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265330B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e2.experiments.nlnetlabs.nl. 3600 IN NSEC e3.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265320B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BB53EBBFE4A53994BAC8F33AF3DF721021CD6B89D7293C83EDEF4AF01FC4C03EC9E1560F5B3BF3468DFD5701A47449F4D6FF7B2A57047F78389A67009F33DC7441994FF89874C6150AB6295D5D46843A9E3ED2BD5E790246379E5A214D3AD809C49F08E453EA93410A599E6050CBE0488CF541898C3C539877CB8C0C405AEFA7 +e2.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. u1Prv+SlOZS6yPM6899yECHNa4nXKTyD7e9K8B/EwD7J4VYPWzvzRo39VwGkdEn01v97KlcEf3g4mmcAnzPcdEGZT/iYdMYVCrYpXV1GhDqePtK9XnkCRjeeWiFNOtgJxJ8I5FPqk0EKWZ5gUMvgSIz1QYmMPFOYd8uMDEBa76c= ;{id = 42393} +026E730265320B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000012 +ns.e2.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::12 +0265330B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265330B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e3.experiments.nlnetlabs.nl. 10200 IN NS ns.e3.experiments.nlnetlabs.nl. +0265330B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265340B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e3.experiments.nlnetlabs.nl. 3600 IN NSEC e4.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265330B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008DBF3B6E5A0394D6CB1E8C47611F17C1403B9B92AC1FAC08EC7DA7A91E39BD5BBD122FAB790E687AA73DF850AC24770DE94D9443380089C2EF1301A4B86A58FD4E598C4B764C056E49CF740392C063479C95A7AD3B7F86EA44CF6911012FB1C2AB719C9B6BFEADE1762BF55549B6B288DC376295EDDF8CCB30BC5D8D92B5DF93 +e3.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jb87bloDlNbLHoxHYR8XwUA7m5KsH6wI7H2nqR45vVu9Ei+reQ5oeqc9+FCsJHcN6U2UQzgAicLvEwGkuGpY/U5ZjEt2TAVuSc90A5LAY0eclaetO3+G6kTPaREBL7HCq3Gcm2v+reF2K/VVSbayiNw3YpXt34zLMLxdjZK135M= ;{id = 42393} +026E730265330B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000013 +ns.e3.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::13 +0265340B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265340B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e4.experiments.nlnetlabs.nl. 10200 IN NS ns.e4.experiments.nlnetlabs.nl. +0265340B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265350B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e4.experiments.nlnetlabs.nl. 3600 IN NSEC e5.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265340B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C260DF7BBA985AC87FE7C9211B969115BA1722CD4C77AED35BEBF1FB11911C38D85C85088DEDBB211E025162E3E780118C869E071E9C776020D2478AFBD87AA308B13FD1A2DA2571324E05E1443ACD0AC561066576D3987894BD3239273A23A70ED30B3CD49F02808A88BEE194F56E6877BDB0A7CEDA958AEDCD26A563FD0933 +e4.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wmDfe7qYWsh/58khG5aRFboXIs1Md67TW+vx+xGRHDjYXIUIje27IR4CUWLj54ARjIaeBx6cd2Ag0keK+9h6owixP9Gi2iVxMk4F4UQ6zQrFYQZldtOYeJS9MjknOiOnDtMLPNSfAoCKiL7hlPVuaHe9sKfO2pWK7c0mpWP9CTM= ;{id = 42393} +026E730265340B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000014 +ns.e4.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::14 +0265350B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265350B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e5.experiments.nlnetlabs.nl. 10200 IN NS ns.e5.experiments.nlnetlabs.nl. +0265350B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265360B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e5.experiments.nlnetlabs.nl. 3600 IN NSEC e6.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265350B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0021B2EEDD89795BE181CA347EAF053FB9C06855D19DADC5B2E118CA2E52F1646CAC487C84340D250F7022915FC4D87969F06BB2AD1F0660820BFC5D070E223E44FC21EAEC4C36603394F6EE3EA3A722DF34D426BEC96CD8979815364F920FD0AD28C5C82D0EE82F92AFFAA36F2DE2ED5B220C0D49DDD416D0CC3CD87DF9C78819 +e5.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IbLu3Yl5W+GByjR+rwU/ucBoVdGdrcWy4RjKLlLxZGysSHyENA0lD3AikV/E2Hlp8GuyrR8GYIIL/F0HDiI+RPwh6uxMNmAzlPbuPqOnIt801Ca+yWzYl5gVNk+SD9CtKMXILQ7oL5Kv+qNvLeLtWyIMDUnd1BbQzDzYffnHiBk= ;{id = 42393} +026E730265350B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000015 +ns.e5.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::15 +0265360B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265360B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e6.experiments.nlnetlabs.nl. 10200 IN NS ns.e6.experiments.nlnetlabs.nl. +0265360B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265370B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e6.experiments.nlnetlabs.nl. 3600 IN NSEC e7.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265360B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A0C9E5007FB4CEBBA24F2C9C5E65574F97371B0E8F2592C89BE5BAB70E5436B0542F7DD2B14759DD44973F14CD1540870A542DDBC190538C31704009B3002A59D869FCF243C1AA73960ACAEC5CDFEC6A03EA4AE75F24063A29090436BC5DC4963F2FB4A75BCEB442267A8CF6457766FC94B8E75C51A72D19420D2897CBD4B71B +e6.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. oMnlAH+0zruiTyycXmVXT5c3Gw6PJZLIm+W6tw5UNrBUL33SsUdZ3USXPxTNFUCHClQt28GQU4wxcEAJswAqWdhp/PJDwapzlgrK7Fzf7GoD6krnXyQGOikJBDa8XcSWPy+0p1vOtEImeoz2RXdm/JS451xRpy0ZQg0ol8vUtxs= ;{id = 42393} +026E730265360B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000016 +ns.e6.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::16 +0265370B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265370B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e7.experiments.nlnetlabs.nl. 10200 IN NS ns.e7.experiments.nlnetlabs.nl. +0265370B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265380B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e7.experiments.nlnetlabs.nl. 3600 IN NSEC e8.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265370B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C72769863BFCC951412C2D26C40DDD8A83569D1BEE289F61AC01D85714511AF247022F2DEDB7CD16BF4D726DC00B196E3896E47EB4BBD55FEDA6A9CD2A42EF960B84D4BE6D1A26DF8A178B90DB1BFC80ADD3856E952638CEA5B6977E33330B3086F3472EAE0B02755C04380796830F68219A808CB5BF61D2E2A0984885E0D983 +e7.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xydphjv8yVFBLC0mxA3dioNWnRvuKJ9hrAHYVxRRGvJHAi8t7bfNFr9Ncm3ACxluOJbkfrS71V/tpqnNKkLvlguE1L5tGibfiheLkNsb/ICt04VulSY4zqW2l34zMwswhvNHLq4LAnVcBDgHloMPaCGagIy1v2HS4qCYSIXg2YM= ;{id = 42393} +026E730265370B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000017 +ns.e7.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::17 +0265380B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265380B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e8.experiments.nlnetlabs.nl. 10200 IN NS ns.e8.experiments.nlnetlabs.nl. +0265380B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265390B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e8.experiments.nlnetlabs.nl. 3600 IN NSEC e9.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265380B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A9FFE65AF65DFA8838D0C302AF1E01BC0F88D68A49EE2C2F9B54C7E33680B97E0F594ED9D5FD4BE9A746E9A91A299E183E7EAC3E6CD5277431BC0FF0351019B5962D3D5C4C8EC24DA1B0250DA1E5F5B19F05E57BDF87B99B3465752305018CE448605F30C7DE562D9961468E579302B6C0F1B2F5431702AC6CF1412968B1370C +e8.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. qf/mWvZd+og40MMCrx4BvA+I1opJ7iwvm1TH4zaAuX4PWU7Z1f1L6adG6akaKZ4YPn6sPmzVJ3QxvA/wNRAZtZYtPVxMjsJNobAlDaHl9bGfBeV734e5mzRldSMFAYzkSGBfMMfeVi2ZYUaOV5MCtsDxsvVDFwKsbPFBKWixNww= ;{id = 42393} +026E730265380B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000018 +ns.e8.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::18 +0265390B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265390B6578706572696D656E7473096E6C6E65746C616273026E6C00 +e9.experiments.nlnetlabs.nl. 10200 IN NS ns.e9.experiments.nlnetlabs.nl. +0265390B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265610B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +e9.experiments.nlnetlabs.nl. 3600 IN NSEC ea.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265390B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007CE06F24F3F80217B7504A563D7AD890EBDAE846FB9D6B12DD00E128188687275B4C10D98764EA75808D32E7196A84D8A4685E7400FDDB616FB177A2BB5C625F5F47ED7584BB288FD2809BC94F83CDB03BC6E912816DA0C15F3B78F298F8C90760096751D294B66E70A30B5C75A6E4EF9018092EFF0FE4968B45F5B0B01CCDC4 +e9.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fOBvJPP4Ahe3UEpWPXrYkOva6Eb7nWsS3QDhKBiGhydbTBDZh2TqdYCNMucZaoTYpGhedAD922FvsXeiu1xiX19H7XWEuyiP0oCbyU+DzbA7xukSgW2gwV87ePKY+MkHYAlnUdKUtm5wowtcdabk75AYCS7/D+SWi0X1sLAczcQ= ;{id = 42393} +026E730265390B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000019 +ns.e9.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::19 +0265610B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265610B6578706572696D656E7473096E6C6E65746C616273026E6C00 +ea.experiments.nlnetlabs.nl. 10200 IN NS ns.ea.experiments.nlnetlabs.nl. +0265610B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265620B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +ea.experiments.nlnetlabs.nl. 3600 IN NSEC eb.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265610B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B0CE0F685FEB36828D8C808BFE57831569D89F8EBF01AE8BC06AA57C265E1BB4A3EAD02852D89BD023E2770BE326DE208A17960A895C20ED4927E16D3873FE1EE04157B9B66E5B781D78F3E5F565A9BCD34A8FD8D62401D1A8728A5C1CCC9E25564F44ADF96ADD18877B0BB740BB5700DF3C4CC7BFB607EAC0D651B84CE8774B +ea.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. sM4PaF/rNoKNjICL/leDFWnYn46/Aa6LwGqlfCZeG7Sj6tAoUtib0CPidwvjJt4giheWColcIO1JJ+FtOHP+HuBBV7m2blt4HXjz5fVlqbzTSo/Y1iQB0ahyilwczJ4lVk9Erflq3RiHewu3QLtXAN88TMe/tgfqwNZRuEzod0s= ;{id = 42393} +026E730265610B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001A +ns.ea.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1a +0265620B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265620B6578706572696D656E7473096E6C6E65746C616273026E6C00 +eb.experiments.nlnetlabs.nl. 10200 IN NS ns.eb.experiments.nlnetlabs.nl. +0265620B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265630B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +eb.experiments.nlnetlabs.nl. 3600 IN NSEC ec.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265620B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008E925ADCC2CBF3E7F2CCF4160D065B07D88DEA6D099A4D325DE9F1EB5E9A7B1DE75F3CEF5B32B37C4BDA61D97C685E7A0E252E819FF7D894EB461143DE341996B9139EEDA9A7B44639F1CE911648F27BB46EF522A210AACB0D483A473FCD2CDC6F56236AB49C74D18B73D59DD1ED0182480718BEFCC804E7B69CADFEB6E05559 +eb.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jpJa3MLL8+fyzPQWDQZbB9iN6m0Jmk0yXenx616aex3nXzzvWzKzfEvaYdl8aF56DiUugZ/32JTrRhFD3jQZlrkTnu2pp7RGOfHOkRZI8nu0bvUiohCqyw1IOkc/zSzcb1YjarScdNGLc9Wd0e0BgkgHGL78yATntpyt/rbgVVk= ;{id = 42393} +026E730265620B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001B +ns.eb.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1b +0265630B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265630B6578706572696D656E7473096E6C6E65746C616273026E6C00 +ec.experiments.nlnetlabs.nl. 10200 IN NS ns.ec.experiments.nlnetlabs.nl. +0265630B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265640B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +ec.experiments.nlnetlabs.nl. 3600 IN NSEC ed.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265630B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002884B071DA76A17D5D2B5C05F9F70CC45D6EE06BCF17667BAE0A62A524F13F2AEC1CA77DC7842C62F2ABB769DDC1D176780385FE2B93209EFBCDE11E69F672155C35C6D5B9698DB3FEE408B09CE8EF080AF5A8072AE6B8556854D7A1D5AE825C454230635D6EBDD8F4A1174E79A11F85897A002B85D9BDAED97D24A8E5581026 +ec.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. KISwcdp2oX1dK1wF+fcMxF1u4GvPF2Z7rgpipSTxPyrsHKd9x4QsYvKrt2ndwdF2eAOF/iuTIJ77zeEeafZyFVw1xtW5aY2z/uQIsJzo7wgK9agHKua4VWhU16HVroJcRUIwY11uvdj0oRdOeaEfhYl6ACuF2b2u2X0kqOVYECY= ;{id = 42393} +026E730265630B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001C +ns.ec.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1c +0265640B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265640B6578706572696D656E7473096E6C6E65746C616273026E6C00 +ed.experiments.nlnetlabs.nl. 10200 IN NS ns.ed.experiments.nlnetlabs.nl. +0265640B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265650B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +ed.experiments.nlnetlabs.nl. 3600 IN NSEC ee.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265640B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000A3BF7506E6ADB52B1F9EA062E0250554AB036E47AC24E9B8EC1662EB3A22AE73971B23DFE73D8E81603E0D66E297F382B5DAD3B614714A9725C2B21C0F5EF322AC76FB1B80B2830D3E9F90A15779CC53DE47FF34F74FC046C28D4315063EC1E1287841AC0C594FE6DEACC390A259B2250F51BB82C86E7D801798DFF48F9D4AE +ed.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Cjv3UG5q21Kx+eoGLgJQVUqwNuR6wk6bjsFmLrOiKuc5cbI9/nPY6BYD4NZuKX84K12tO2FHFKlyXCshwPXvMirHb7G4Cygw0+n5ChV3nMU95H/zT3T8BGwo1DFQY+weEoeEGsDFlP5t6sw5CiWbIlD1G7gshufYAXmN/0j51K4= ;{id = 42393} +026E730265640B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001D +ns.ed.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1d +0265650B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265650B6578706572696D656E7473096E6C6E65746C616273026E6C00 +ee.experiments.nlnetlabs.nl. 10200 IN NS ns.ee.experiments.nlnetlabs.nl. +0265650B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E1000250265660B6578706572696D656E7473096E6C6E65746C616273026E6C000006200000000003 +ee.experiments.nlnetlabs.nl. 3600 IN NSEC ef.experiments.nlnetlabs.nl. NS RRSIG NSEC +0265650B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00207E53146A08C016F29767F3BD70F7011883A1EADEDBBFE96E990ED4D3078E7773812CA1236864E287EE8BA7DDFED7E3C204F32ECA10E53EAA6CE0F604F647D8C5CE93AA17454DEA9950C809A934DE724AC5BC78B2E6069ED9E1597B1B71BC651CD3920976F6A81BEC56F192586F162F4F618B49DE34474D0142AAB0C07D3084 +ee.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IH5TFGoIwBbyl2fzvXD3ARiDoere27/pbpkO1NMHjndzgSyhI2hk4ofui6fd/tfjwgTzLsoQ5T6qbOD2BPZH2MXOk6oXRU3qmVDICak03nJKxbx4suYGntnhWXsbcbxlHNOSCXb2qBvsVvGSWG8WL09hi0neNEdNAUKqsMB9MIQ= ;{id = 42393} +026E730265650B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001E +ns.ee.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1e +0265660B6578706572696D656E7473096E6C6E65746C616273026E6C0000020001000027D80020026E730265660B6578706572696D656E7473096E6C6E65746C616273026E6C00 +ef.experiments.nlnetlabs.nl. 10200 IN NS ns.ef.experiments.nlnetlabs.nl. +0265660B6578706572696D656E7473096E6C6E65746C616273026E6C00002F000100000E10001D06666C75666679096E6C6E65746C616273026E6C000006200000000003 +ef.experiments.nlnetlabs.nl. 3600 IN NSEC fluffy.nlnetlabs.nl. NS RRSIG NSEC +0265660B6578706572696D656E7473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002F3C58ED8559ED806C46756769E2229FCDA73294AC42C1670CFCD776F4D3BDCAB2E3C8780B1F686B0825A0E936C33849F8B57A15DAD4CD62A81D43F51986C2B245069E5BE040E85F36E590C3C5A448898DB7834E0887B7E8EBA204BE6044B964C308FE198E14354705803E1DE4D8712E471739A3899CC02BEA2451516A15AA38 +ef.experiments.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. LzxY7YVZ7YBsRnVnaeIin82nMpSsQsFnDPzXdvTTvcqy48h4Cx9oawgloOk2wzhJ+LV6FdrUzWKoHUP1GYbCskUGnlvgQOhfNuWQw8WkSImNt4NOCIe36OuiBL5gRLlkwwj+GY4UNUcFgD4d5NhxLkcXOaOJnMAr6iRRUWoVqjg= ;{id = 42393} +026E730265660B6578706572696D656E7473096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E100000000001F +ns.ef.experiments.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::1f +06666C75666679096E6C6E65746C616273026E6C0000010001000027D80004D59AE02A +fluffy.nlnetlabs.nl. 10200 IN A 213.154.224.42 +06666C75666679096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00211CA17C37432E1D26CC098297E17C82B626262C4E88E4C8A0A5AEABE16BE08232E6843100D0B083B7B5BD8F76ECE12C85A1F7F32939737DDFCABD0CC2FC86EC4086E71F2BFCF649AE7645C589F9D4C764232F831E972F56CD83FC5EBAE9F589BCCC2FFF131CF1E6A239A8E85E5828AA36B51D1D6A78DDC7FB78A725ABF676DC +fluffy.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IRyhfDdDLh0mzAmCl+F8grYmJixOiOTIoKWuq+Fr4IIy5oQxANCwg7e1vY927OEshaH38yk5c33fyr0MwvyG7ECG5x8r/PZJrnZFxYn51MdkIy+DHpcvVs2D/F666fWJvMwv/xMc8eaiOajoXlgoqja1HR1qeN3H+3inJav2dtw= ;{id = 42393} +06666C75666679096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C2790E71537617D0ACF285FFD7651448A64C19B4F5F81E7155C154F5A59F94D50C586801E2B9E5CC1DB1D0E7F4078C8600D2049E8E74F534F6594F8C4FB792E521D12F2E850A902BE50BB2EFA179040FE2562033717DAAAEBDB828F6657DF5EAD5C88FB2A38AA3AF7F182D89A2E33D3AFB6809621A213EFAF332B221DDC2EBE3 +fluffy.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wnkOcVN2F9Cs8oX/12UUSKZMGbT1+B5xVcFU9aWflNUMWGgB4rnlzB2x0Of0B4yGANIEno509TT2WU+MT7eS5SHRLy6FCpAr5Quy76F5BA/iViAzcX2qrr24KPZlffXq1ciPsqOKo69/GC2JouM9OvtoCWIaIT768zKyId3C6+M= ;{id = 42393} +06666C75666679096E6C6E65746C616273026E6C00002F000100000E1000280962617274736D69746807667269656E6473096E6C6E65746C616273026E6C000006400000000003 +fluffy.nlnetlabs.nl. 3600 IN NSEC bartsmith.friends.nlnetlabs.nl. A RRSIG NSEC +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C0000010001000027D80004D59AE0F2 +bartsmith.friends.nlnetlabs.nl. 10200 IN A 213.154.224.242 +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CB4B9A5BD960B3BC5A6CA891005B2E1DE0CCEB85E737E43934B8B1CF4D56430A4AE026D2E0672416D1B0082258B6C64B9BC4DD47E11E0C6539BBD3A5D9BFC5DA5FA9D149B86BB4ED38A9420BF1D8A1262BD2A9598A9EA002AB354B2C0A779EB8E276CE1A64F65A7A2612610C9EFB8615309A35F7CEC00239B6C7EF81C4E84565 +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. y0uaW9lgs7xabKiRAFsuHeDM64XnN+Q5NLixz01WQwpK4CbS4GckFtGwCCJYtsZLm8TdR+EeDGU5u9Ol2b/F2l+p0Um4a7TtOKlCC/HYoSYr0qlZip6gAqs1SywKd5644nbOGmT2WnomEmEMnvuGFTCaNffOwAI5tsfvgcToRWU= ;{id = 42393} +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008E9F09D4C425B252C82B02D261AA4D71807A5642C2B2DEE67A43A70DFD2AE6988E5B2D776461E2DC005E485D28C63C4741559F2F7A6BBBEC8291D93B985575035D8771A3CCB8ADDF174B27C6A9D9FD2A6AB60B073B58A812948CBB00A5F0FEB16B5055D4F2DCAE6E45335749D423FC0DCA22AED3E4D44A59E1318C6B46207209 +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jp8J1MQlslLIKwLSYapNcYB6VkLCst7mekOnDf0q5piOWy13ZGHi3ABeSF0oxjxHQVWfL3pru+yCkdk7mFV1A12HcaPMuK3fF0snxqnZ/SpqtgsHO1ioEpSMuwCl8P6xa1BV1PLcrm5FM1dJ1CP8DcoirtPk1EpZ4TGMa0Ygcgk= ;{id = 42393} +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0002C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CA5BB9A5A31B75B81198CC7DBC424A663C3AC218D920D6763EF1E22CC37492B28671DE24BB01034583BC808CE356905D1A3650D1B0B571CBC0E9D9E8486FDDE239BC35F4EB6751E81689D585C86E941300D19E2637AFF8DF153B73031FEF262651DF4712F898EB0BA92F86EB090E59E20773BC7BBFC3DA539C81CABF027A7DCB +bartsmith.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ylu5paMbdbgRmMx9vEJKZjw6whjZINZ2PvHiLMN0krKGcd4kuwEDRYO8gIzjVpBdGjZQ0bC1ccvA6dnoSG/d4jm8NfTrZ1HoFonVhchulBMA0Z4mN6/43xU7cwMf7yYmUd9HEviY6wupL4brCQ5Z4gdzvHu/w9pTnIHKvwJ6fcs= ;{id = 42393} +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008C53C4BC6B308D38B14D5E1DF4A00C04457783DB265CD8B74B6AAC024F27475E9E096D1E13B503F346E804ADB2FF709327881A908673D668419D99BC9FF0C4B8781DEB81BEFF77AE316E3A5F41F103A517B5909A74FC960890FDDD954C9BBFA637F791F0E673D54B4BB26411B0524767E252CB95B792537E3FCDA7C2A26000D6 +bartsmith.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jFPEvGswjTixTV4d9KAMBEV3g9smXNi3S2qsAk8nR16eCW0eE7UD80boBK2y/3CTJ4gakIZz1mhBnZm8n/DEuHgd64G+/3euMW46X0HxA6UXtZCadPyWCJD93ZVMm7+mN/eR8OZz1UtLsmQRsFJHZ+JSy5W3klN+P82nwqJgANY= ;{id = 42393} +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF000700000000 +bartsmith.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:7:: +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001601015C5754E45839891C9CBB30538D5745321E135CDA +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 5C5754E45839891C9CBB30538D5745321E135CDA +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001602013FD8568AA33165AC9FFD2E63C43F124C9E341FB6 +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 3FD8568AA33165AC9FFD2E63C43F124C9E341FB6 +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002C0001000027D800160301032577474762D0CEC79654FB7B1E3DBB9104E4B9 +bartsmith.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 032577474762D0CEC79654FB7B1E3DBB9104E4B9 +0962617274736D69746807667269656E6473096E6C6E65746C616273026E6C00002F000100000E10002C0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00000640000008000B +bartsmith.friends.nlnetlabs.nl. 3600 IN NSEC klaaswierenga.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C0000010001000027D80004D59AE0F5 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN A 213.154.224.245 +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A2909FA965B80AACDDA1C5774AC4398AAF73090735B89145A1DB4003149B686F1126DF761ED7DC0F6A89F41B4EF19598B0D0C1D4FE137B07B91F5EFD451CDCFEC8D408F125838A6CA91D55276E6F69218BD047AB87B6444251C27A1798F6A35B07ED5E3084B17C80F0A74E64A2733B65ECDE29A1A7838EE6BC57529E91805120 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. opCfqWW4CqzdocV3SsQ5iq9zCQc1uJFFodtAAxSbaG8RJt92HtfcD2qJ9BtO8ZWYsNDB1P4Tewe5H179RRzc/sjUCPElg4psqR1VJ25vaSGL0Eerh7ZEQlHCeheY9qNbB+1eMISxfIDwp05konM7ZezeKaGng47mvFdSnpGAUSA= ;{id = 42393} +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0089E13B15221327730AB745E62B33F85E6C6F4D323AB8F6E518ECDC1395A639F2FCD39278E431E173B2E3550D3B65D1C6B198115DF1733259D69E7B8BFFC010A2CAF17E1C0976050EEE44CF6A8DD3F1BADDBA652E3A0E374FCD4DA8C6B2E4D7DBF0835EAE845AE857A06C48C1DA393D0E42A4807E566B796B6B75A5D926D52CA6 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ieE7FSITJ3MKt0XmKzP4XmxvTTI6uPblGOzcE5WmOfL805J45DHhc7LjVQ07ZdHGsZgRXfFzMlnWnnuL/8AQosrxfhwJdgUO7kTPao3T8brdumUuOg43T81NqMay5Nfb8INeroRa6FegbEjB2jk9DkKkgH5Wa3lra3Wl2SbVLKY= ;{id = 42393} +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0002C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007FD68BDDB3A7C4345922547FADBEA8F44E08572BC4DD71E68328CF40B0524F06C25B0E399867DE9B69CBBDE92FFA9BE175BF771AF03232163D0DF7BE59CA5E1B0F514EB847F2DC25D38816CF082A1DC04B076EAB4C64227BB74EEBA7E7FBD76CA78EDD8DFF67A3426CACA3FFB341802F414CCDD06F037036F96C10A78B8F7314 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. f9aL3bOnxDRZIlR/rb6o9E4IVyvE3XHmgyjPQLBSTwbCWw45mGfem2nLvekv+pvhdb93GvAyMhY9Dfe+WcpeGw9RTrhH8twl04gWzwgqHcBLB26rTGQie7dO66fn+9dsp47djf9no0JsrKP/s0GAL0FMzdBvA3A2+WwQp4uPcxQ= ;{id = 42393} +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C8676E9752BD40AD974BEF80316AECD3C3E2A20CBB694D88C37AC5362AAABC0153069691A6F6B6E1AAA716F6F9D99B881AF2B7553F8D250A39B1BD9CD50B592EC51B40128A615567235EC48099E7A7A74F37CB37F2ABC0B190DB84CD7264417728066D33719DCE76F542CEA9F5EAFD2EBA4C594572073CE8B07985F7F67CA42D +klaaswierenga.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yGdul1K9QK2XS++AMWrs08Piogy7aU2Iw3rFNiqqvAFTBpaRpva24aqnFvb52ZuIGvK3VT+NJQo5sb2c1QtZLsUbQBKKYVVnI17EgJnnp6dPN8s38qvAsZDbhM1yZEF3KAZtM3Gdznb1Qs6p9er9LrpMWUVyBzzosHmF9/Z8pC0= ;{id = 42393} +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF001500000000 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:15:: +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002C0001000027D800160101FD05DEBFC4A849DDE4263F021DC1CDDDCFA76579 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 FD05DEBFC4A849DDE4263F021DC1CDDDCFA76579 +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002C0001000027D800160201FF77160242E18D4C06F09929367760CEE3F193AE +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 FF77160242E18D4C06F09929367760CEE3F193AE +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001603017EBFCC9B2B4D9B70196676E2CEF071CEE0183199 +klaaswierenga.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 7EBFCC9B2B4D9B70196676E2CEF071CEE0183199 +0D6B6C61617377696572656E676107667269656E6473096E6C6E65746C616273026E6C00002F000100000E10002D0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00000640000008000B +klaaswierenga.friends.nlnetlabs.nl. 3600 IN NSEC sebastiankippe.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C0000010001000027D80004D59AE0F4 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN A 213.154.224.244 +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C88F06109816579BA42C923E3AC235C83FBE94C359972D2EB007679C8DBDB48B3739AAF17FAF9BC8B748D263E5BC71D748FCAE94DD6E37D94BC1FF4FA8D4F69712D548D5BD197C0797B554F8CDA2653F732B37D8136AA9A76FB49A3D60B9A258DB33359D5AAFA6028CFB3A7E95D6BAABD9545CC635BF9F34737EB85F340F02A1 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yI8GEJgWV5ukLJI+OsI1yD++lMNZly0usAdnnI29tIs3Oarxf6+byLdI0mPlvHHXSPyulN1uN9lLwf9PqNT2lxLVSNW9GXwHl7VU+M2iZT9zKzfYE2qpp2+0mj1guaJY2zM1nVqvpgKM+zp+lda6q9lUXMY1v580c364XzQPAqE= ;{id = 42393} +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005058E52104FBF5920CE47B1E0DDB4F1CE9266737EFFE4325DE9767602BCAACADA8A1B4CE5632C9079CC58C71ADDFDEF60D416D863C325BDB9838719A625180542881D37F3AC15F98A85F9DC9BDFE9471A9DF63E9B5A306CDD6124D61D361BE73F48B8D1105DA105109FDEC489AF4EF63B12A19BBC072F5B239676C60ECF0090B +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UFjlIQT79ZIM5HseDdtPHOkmZzfv/kMl3pdnYCvKrK2oobTOVjLJB5zFjHGt3972DUFthjwyW9uYOHGaYlGAVCiB0386wV+YqF+dyb3+lHGp32PptaMGzdYSTWHTYb5z9IuNEQXaEFEJ/exImvTvY7EqGbvAcvWyOWdsYOzwCQs= ;{id = 42393} +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0002C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0063D56DC8460D422FABF743CD67FE074AA35E98FA2C188782DC0C9C4A9141DB8C23A18BD28DAE8AD87A510653AB403E5EB0C71E30308866F8745C1851DFE81F9A90513A25EFF02C78730C1A59E2AAE35B0CC55DB126BD0B4CAD0EB99C1E65B5B6D1591C977F3CE06616E216505F9AE4DEBE86FA0182C62EAA4C59D9985E303FD9 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Y9VtyEYNQi+r90PNZ/4HSqNemPosGIeC3AycSpFB24wjoYvSja6K2HpRBlOrQD5esMceMDCIZvh0XBhR3+gfmpBROiXv8Cx4cwwaWeKq41sMxV2xJr0LTK0OuZweZbW20Vkcl3884GYW4hZQX5rk3r6G+gGCxi6qTFnZmF4wP9k= ;{id = 42393} +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A47960EDFD3C4297EF27F6C2DCB1CA70212E0C4AEC7BADEE974905C92BB52C651D5BB83B40C1B4FFC2FA8D5F7BE83CFA84276761C14EA91C3144A1A59EECBBA5161C6BE120101F243884F3FE2457E4B34234EEF557ADD49500965A4065C0397596B7F8A45BCCCEE3693E87CE0E0D10468582078664C3627DDE3304721155A4B8 +sebastiankippe.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pHlg7f08QpfvJ/bC3LHKcCEuDErse63ul0kFySu1LGUdW7g7QMG0/8L6jV976Dz6hCdnYcFOqRwxRKGlnuy7pRYca+EgEB8kOITz/iRX5LNCNO71V63UlQCWWkBlwDl1lrf4pFvMzuNpPofODg0QRoWCB4Zkw2J93jMEchFVpLg= ;{id = 42393} +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF001100000000 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:11:: +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001601014CCB30371C21EAD3FAA25E8FC13FAC565FD7212E +sebastiankippe.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 4CCB30371C21EAD3FAA25E8FC13FAC565FD7212E +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002C0001000027D800160201A7FBFC0DAA906AFC71693B27CB427EDED2A50FD4 +sebastiankippe.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 A7FBFC0DAA906AFC71693B27CB427EDED2A50FD4 +0E73656261737469616E6B6970706507667269656E6473096E6C6E65746C616273026E6C00002F000100000E10002B0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00000640000008000B +sebastiankippe.friends.nlnetlabs.nl. 3600 IN NSEC willemtoorop.friends.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C0000010001000027D80004D59AE0F3 +willemtoorop.friends.nlnetlabs.nl. 10200 IN A 213.154.224.243 +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008AF8125371B28982CDDF235F0C9B45A601FCFAB4FFF020A726444A00E1208448CA83849EF698884F08563FF71D5985652D92CEF5D981B65ED59B003B985A568E0F6CED6231233EEF1CC94CD0A6C37383D48C7B5F07B1CA86C9BC8B453FE11B48D3C2D3C2C2705E457CA89BFCB420C2BF6ED9D48E20E2BDE07493C123D8BC98EC +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ivgSU3GyiYLN3yNfDJtFpgH8+rT/8CCnJkRKAOEghEjKg4Se9piITwhWP/cdWYVlLZLO9dmBtl7VmwA7mFpWjg9s7WIxIz7vHMlM0KbDc4PUjHtfB7HKhsm8i0U/4RtI08LTwsJwXkV8qJv8tCDCv27Z1I4g4r3gdJPBI9i8mOw= ;{id = 42393} +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C5488F1EDA4BF8329A61E23FBF4766B6B0AF309F36D77AF7DE1302C94CFE49910A841CB703771BEDA044F22BAD3AA85E849D42CEF3D86422010DE7A27C9A7C4DD1E0916CCD91288ED3C20124BC64DE70F076FBA7A796B8D5FDCFB855078B31558C2A2EC2EAF7DE6595F0A7C92BA29578323DB26C85B2C5EB714526CC1F7D7FA9 +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xUiPHtpL+DKaYeI/v0dmtrCvMJ8213r33hMCyUz+SZEKhBy3A3cb7aBE8iutOqhehJ1CzvPYZCIBDeeifJp8TdHgkWzNkSiO08IBJLxk3nDwdvunp5a41f3PuFUHizFVjCouwur33mWV8KfJK6KVeDI9smyFssXrcUUmzB99f6k= ;{id = 42393} +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002E0001000027D800A0002C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006E68935537F9FFFAE75710C033ADDD6C01ED0878B4759BEC5BB3568DB6D5D8CB7BF901B059979BE3738B8B4A99DB2ED7ADBE3E98363578B9DA81594054EBC8B2ED8902495E69D3ABE9D74476A660C91CD063E83C57D0A490F3F1A74969FEE791F5FBB8FF43EB49E04545599A2503A4194A414D663039A34574112A057DFC89EA +willemtoorop.friends.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. bmiTVTf5//rnVxDAM63dbAHtCHi0dZvsW7NWjbbV2Mt7+QGwWZeb43OLi0qZ2y7Xrb4+mDY1eLnagVlAVOvIsu2JAkleadOr6ddEdqZgyRzQY+g8V9CkkPPxp0lp/ueR9fu4/0PrSeBFRVmaJQOkGUpBTWYwOaNFdBEqBX38ieo= ;{id = 42393} +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BCFD464343AD39F45D793BA40BC76625EE22239DCEFEAD7C03E9D4F30CB8822EC01B6157185D6D95201990E3BE7F8D85F2A6D89040EAB91571AD21F689CD9334330F567D248E8386ED8B37BC4B1A86C1A6A579395097173A42EAF860420971E31DE68F2577372950BC6A789A40C49B8D1DB662C76BED0F530D3A89AD4B1DE390 +willemtoorop.friends.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. vP1GQ0OtOfRdeTukC8dmJe4iI53O/q18A+nU8wy4gi7AG2FXGF1tlSAZkOO+f42F8qbYkEDquRVxrSH2ic2TNDMPVn0kjoOG7Ys3vEsahsGmpXk5UJcXOkLq+GBCCXHjHeaPJXc3KVC8aniaQMSbjR22Ysdr7Q9TDTqJrUsd45A= ;{id = 42393} +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF000800000000 +willemtoorop.friends.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:8:: +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002C0001000027D800160101E19C781CF4239B0E9EBBF9391AB805E1D29E7F10 +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 1 1 E19C781CF4239B0E9EBBF9391AB805E1D29E7F10 +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001602011F0BE2F173A3287201549251B176C23047FFCDD6 +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 2 1 1F0BE2F173A3287201549251B176C23047FFCDD6 +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002C0001000027D8001603014E2DDCE23B238E1E65951DFC5EC0B1E88970AFBB +willemtoorop.friends.nlnetlabs.nl. 10200 IN SSHFP 3 1 4E2DDCE23B238E1E65951DFC5EC0B1E88970AFBB +0C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00002F000100000E10001B0467617279096E6C6E65746C616273026E6C00000640000008000B +willemtoorop.friends.nlnetlabs.nl. 3600 IN NSEC gary.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +0467617279096E6C6E65746C616273026E6C0000010001000027D80004D59AE03A +gary.nlnetlabs.nl. 10200 IN A 213.154.224.58 +0467617279096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00304B5A1E75CC16A149824699DFC420465EACEB917C722DFBBE488E2B013D78239F3DB4D97453860FF1B738C94B576C58E7D8C62E990A242C3CE3CF0A4680C7600CCDD58763CA788A91835920584135942C9CCED8B8E3B49AD21A5181E708740D260534C6661AABC28DC05A48965F2BFA501177C08D6EE4552BF9E8A2EE46A789 +gary.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MEtaHnXMFqFJgkaZ38QgRl6s65F8ci37vkiOKwE9eCOfPbTZdFOGD/G3OMlLV2xY59jGLpkKJCw8488KRoDHYAzN1YdjyniKkYNZIFhBNZQsnM7YuOO0mtIaUYHnCHQNJgU0xmYaq8KNwFpIll8r+lARd8CNbuRVK/noou5Gp4k= ;{id = 42393} +0467617279096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006173C16BBEE01BF9487AA385AC55AFC6353656F44413D0AFEF104D4CE01FFFD49CF9C423B84553311C3EB9372333BCA72F248740F509900454149AF0D0C3CB479D4AE426C6EF4E2E4A6BD318FF3D6BE408CFC445F2BA175027F3BC7D70EDF1B85BBB991E6E173DB3ABBDF16C07EDDE33BE81C7378190172032B938C66A99F13D +gary.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YXPBa77gG/lIeqOFrFWvxjU2VvREE9Cv7xBNTOAf/9Sc+cQjuEVTMRw+uTcjM7ynLySHQPUJkARUFJrw0MPLR51K5CbG704uSmvTGP89a+QIz8RF8roXUCfzvH1w7fG4W7uZHm4XPbOrvfFsB+3eM76BxzeBkBcgMrk4xmqZ8T0= ;{id = 42393} +0467617279096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AFF084CDB718C9925C1C70543DDB45959BA6A246256748CE5E3255633AC2F7019B7522B3E611E7D4DA11C149588FE702F7155BACDF74F65F434E4FDE5CA9D6C645AD23E454D013062C7B6FB66C2D0E4B70CBEA55E2219B75B1C089AF595C12AFFEC534EB88E91CFAEFE44F4CC755200D7457FB8C9FB82B0D2DCCBACA72113E6A +gary.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. r/CEzbcYyZJcHHBUPdtFlZumokYlZ0jOXjJVYzrC9wGbdSKz5hHn1NoRwUlYj+cC9xVbrN909l9DTk/eXKnWxkWtI+RU0BMGLHtvtmwtDktwy+pV4iGbdbHAia9ZXBKv/sU064jpHPrv5E9Mx1UgDXRX+4yfuCsNLcy6ynIRPmo= ;{id = 42393} +0467617279096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A37F26E06BD273D2A9A9EEC007EE9A46B6DF2EDAF262F99106EC1278437B68A10B136F080F898BECB61CD4624C846097AC0EB9AA2D40B8410E8197A0779C40B7A7C61FB38832FB1D65A8AD8FFE6696AE239DDD20EFADD708CD07A2B4E731E7F0851A99D08741D52E3D66428AF4CDFD84805A87A70143B93DD38BF4A23DDD4DC8 +gary.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. o38m4GvSc9Kpqe7AB+6aRrbfLtryYvmRBuwSeEN7aKELE28ID4mL7LYc1GJMhGCXrA65qi1AuEEOgZegd5xAt6fGH7OIMvsdZaitj/5mlq4jnd0g763XCM0HorTnMefwhRqZ0IdB1S49ZkKK9M39hIBah6cBQ7k904v0oj3dTcg= ;{id = 42393} +0467617279096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021676FFFEB81853 +gary.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:216:76ff:feb8:1853 +0467617279096E6C6E65746C616273026E6C00002C0001000027D800160101ED3C7439869AD75F0EC2BD4B4509865E5E1E4288 +gary.nlnetlabs.nl. 10200 IN SSHFP 1 1 ED3C7439869AD75F0EC2BD4B4509865E5E1E4288 +0467617279096E6C6E65746C616273026E6C00002C0001000027D800160201941AFEC19E19564A8D146AF0ED61232850D783CB +gary.nlnetlabs.nl. 10200 IN SSHFP 2 1 941AFEC19E19564A8D146AF0ED61232850D783CB +0467617279096E6C6E65746C616273026E6C00002F000100000E10001A03676974096E6C6E65746C616273026E6C00000640000008000B +gary.nlnetlabs.nl. 3600 IN NSEC git.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +03676974096E6C6E65746C616273026E6C0000050001000027D80015066769746C6162096E6C6E65746C616273026E6C00 +git.nlnetlabs.nl. 10200 IN CNAME gitlab.nlnetlabs.nl. +03676974096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B3089838EC3EFA196D5AB1402E5C59773A3127201329F6E34AA2AAE7F55C22C6678FA97B281D38BB6420F040A43B1E04C6F503C0184C5158CFDB3D3348CE9ED6865420E6432A282984221502160A40D0B3E8F31226471523BFEF03737690F3555082B8B516B0238E77D6733C593A8021D90236F887513E3F3761C6F010849568 +git.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. swiYOOw++hltWrFALlxZdzoxJyATKfbjSqKq5/VcIsZnj6l7KB04u2Qg8ECkOx4ExvUDwBhMUVjP2z0zSM6e1oZUIOZDKigphCIVAhYKQNCz6PMSJkcVI7/vA3N2kPNVUIK4tRawI4531nM8WTqAIdkCNviHUT4/N2HG8BCElWg= ;{id = 42393} +03676974096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004EDB67C38989482CC4199039BB7E19DD4B35FA3C1B8D862E5116900B8641F055BD3E0F66177B4C4E42517F5E83C85E65D55221D9B5DAF63E2943504C75074EE261F72DD70C3C93F9C29E3C8E840732C01A0A452BA48A20BC315E26FA4C2F2EA19F6FDBA9EBB7839C7C62212E72DF04931E87FE8F3EED818A2805679AAD66618D +git.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Tttnw4mJSCzEGZA5u34Z3Us1+jwbjYYuURaQC4ZB8FW9Pg9mF3tMTkJRf16DyF5l1VIh2bXa9j4pQ1BMdQdO4mH3LdcMPJP5wp48joQHMsAaCkUrpIogvDFeJvpMLy6hn2/bqeu3g5x8YiEuct8Ekx6H/o8+7YGKKAVnmq1mYY0= ;{id = 42393} +03676974096E6C6E65746C616273026E6C00002F000100000E100024045F343433045F74637003676974096E6C6E65746C616273026E6C000006040000000003 +git.nlnetlabs.nl. 3600 IN NSEC _443._tcp.git.nlnetlabs.nl. CNAME RRSIG NSEC +045F343433045F74637003676974096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.git.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F74637003676974096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007C7FBD927DF3735469FB03150B3FE99812A3DFB65B86514B45B3AFE1A5F7E4C9A633069A7A3F05D09ECFCC1D73D927B25E51E212EB35834C84EAE27B47826E8D1DD071B3B0064E0540AB4E46F46AC87E58133F9FA16F414E6BC2A1E1D9DF718B933E828D8AEE4CCAA518F19AA899CBD94CEC21464E2812A0C3CF51EAC1C72A9C +_443._tcp.git.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fH+9kn3zc1Rp+wMVCz/pmBKj37ZbhlFLRbOv4aX35MmmMwaaej8F0J7PzB1z2SeyXlHiEus1g0yE6uJ7R4JujR3QcbOwBk4FQKtORvRqyH5YEz+foW9BTmvCoeHZ33GLkz6CjYruTMqlGPGaqJnL2UzsIUZOKBKgw89R6sHHKpw= ;{id = 42393} +045F343433045F74637003676974096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000A1EBA9A277C3A7F073E2EA169D6640D0EEFD1FD879D1BB2C3303D4A878E5B85B4F3E7DB4998E28096CDFB66D924317E07435756381923B0265C390E8873D3B028F1904CEBE25A7C2C1663E9C8585945B5CA7EB6417813A4965D6E962428B41E9C4B673873B0116BAC9557F3BE4F41BB14E2FD1BA898DF29D904E8E6DAE123C6 +_443._tcp.git.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ch66mid8On8HPi6hadZkDQ7v0f2HnRuywzA9SoeOW4W08+fbSZjigJbN+2bZJDF+B0NXVjgZI7AmXDkOiHPTsCjxkEzr4lp8LBZj6chYWUW1yn62QXgTpJZdbpYkKLQenEtnOHOwEWuslVfzvk9BuxTi/RuomN8p2QTo5trhI8Y= ;{id = 42393} +045F343433045F74637003676974096E6C6E65746C616273026E6C00002F000100000E10001D066769746C6162096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.git.nlnetlabs.nl. 3600 IN NSEC gitlab.nlnetlabs.nl. CNAME RRSIG NSEC +066769746C6162096E6C6E65746C616273026E6C0000010001000027D80004D59AE089 +gitlab.nlnetlabs.nl. 10200 IN A 213.154.224.137 +066769746C6162096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A5AE359BAAD2D9E6F84A64EE30D855CC3B96484E25CA1EF24D3F7F144119B76791687C8CF758C19331F796D59AA42F5FE15657DFC2C622F6BA4A1E5A9EB380EABBE1EA0849F8D5991C4F35D358E3B8F1A5DDA9EE85047EED598B584A413301092B559C4CA691B69BEE2FE348EEB9DC177997003807806E3B312B1A890CB778AE +gitlab.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pa41m6rS2eb4SmTuMNhVzDuWSE4lyh7yTT9/FEEZt2eRaHyM91jBkzH3ltWapC9f4VZX38LGIva6Sh5anrOA6rvh6ghJ+NWZHE8101jjuPGl3anuhQR+7VmLWEpBMwEJK1WcTKaRtpvuL+NI7rncF3mXADgHgG47MSsaiQy3eK4= ;{id = 42393} +066769746C6162096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0074D344040F70508EC6BAC41E97FA4AF0BFF1D83E6109D01F7F80E4209256AEEE3318913AB3F731D43CAAC02C9E3D6D5D3519C1BC03A39D93BAC9AF5C147A88315870940F6F6DD177A9F1FE9783081CD88E32FDE75B51240AE8F14EB85355147FD3E63E16F1FCAFA10E1236E39D0FB693D59BA3D2406EF69A912AA2B9775DF4F4 +gitlab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dNNEBA9wUI7GusQel/pK8L/x2D5hCdAff4DkIJJWru4zGJE6s/cx1DyqwCyePW1dNRnBvAOjnZO6ya9cFHqIMVhwlA9vbdF3qfH+l4MIHNiOMv3nW1EkCujxTrhTVRR/0+Y+FvH8r6EOEjbjnQ+2k9Wbo9JAbvaakSqiuXdd9PQ= ;{id = 42393} +066769746C6162096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00624A1066ACD1E827D04E45C605809FD79B58E51C07DEA80F9F1F13C62C40E3FC545BF5287277C6BEA2B331DF1CA5CF7AE089B1FE9E653AB31E57365B58079930FE5CCC5EE9644E0811AD90EFCBF9EC27244A1CCFA57152E4F3B6FDD75B3642F3E1D16403F77F06248C4CDBFE06BC6EB95F66B9BFD8466515B92929CD0FA8524D +gitlab.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YkoQZqzR6CfQTkXGBYCf15tY5RwH3qgPnx8TxixA4/xUW/UocnfGvqKzMd8cpc964Imx/p5lOrMeVzZbWAeZMP5czF7pZE4IEa2Q78v57CckShzPpXFS5PO2/ddbNkLz4dFkA/d/BiSMTNv+BrxuuV9mub/YRmUVuSkpzQ+oUk0= ;{id = 42393} +066769746C6162096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008935519B4D49FCE6B99BDEC25DE1262A1AB311CA5BB8CF72DF7EBD90DF4AAE87E31CD96760516C074055E9CD72C1FA74D21FA9C523326ECDEFBF54433DBFC34938479BA588251461C1D2F11E378E4962AB1657266D1E2FB97DEA853552959EE2AFC8B1643F8B44A4DF59025A11E42F568F3B30D6525C574B8DCA5FAF6434C681 +gitlab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. iTVRm01J/Oa5m97CXeEmKhqzEcpbuM9y3369kN9KrofjHNlnYFFsB0BV6c1ywfp00h+pxSMybs3vv1RDPb/DSThHm6WIJRRhwdLxHjeOSWKrFlcmbR4vuX3qhTVSlZ7ir8ixZD+LRKTfWQJaEeQvVo87MNZSXFdLjcpfr2Q0xoE= ;{id = 42393} +066769746C6162096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF001700000000 +gitlab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:17:: +066769746C6162096E6C6E65746C616273026E6C00002C0001000027D800160101CA58E26C1F97DFB9F98264A02306DCDBB9C4E7AF +gitlab.nlnetlabs.nl. 10200 IN SSHFP 1 1 CA58E26C1F97DFB9F98264A02306DCDBB9C4E7AF +066769746C6162096E6C6E65746C616273026E6C00002C0001000027D800160201F4A1BEFC4CDAF0056CAD2BF7E86444FD7090FA2E +gitlab.nlnetlabs.nl. 10200 IN SSHFP 2 1 F4A1BEFC4CDAF0056CAD2BF7E86444FD7090FA2E +066769746C6162096E6C6E65746C616273026E6C00002C0001000027D800160301ADC8B9E5B9C0D9DE26DF01AAB16B6CEACF18BEAA +gitlab.nlnetlabs.nl. 10200 IN SSHFP 3 1 ADC8B9E5B9C0D9DE26DF01AAB16B6CEACF18BEAA +066769746C6162096E6C6E65746C616273026E6C00002F000100000E100027045F343433045F746370066769746C6162096E6C6E65746C616273026E6C00000640000008000B +gitlab.nlnetlabs.nl. 3600 IN NSEC _443._tcp.gitlab.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +045F343433045F746370066769746C6162096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.gitlab.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F746370066769746C6162096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0016E348E4653B7474C627F3FDB73C857CEFB927F8B2C0FC098D8460AC0023461B15A16653AC9670E9275B914022C949D83834FFEC7363533F00DD5A550AFD9766954E1A81E60BF80548C1559DCD8C62BF7D0597D7E4C98E8934BB154DEB269929F1373D381B6985B0A9EEBD810692B12AFF54671FE5502265FAF9E1C10CC799BD +_443._tcp.gitlab.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FuNI5GU7dHTGJ/P9tzyFfO+5J/iywPwJjYRgrAAjRhsVoWZTrJZw6SdbkUAiyUnYODT/7HNjUz8A3VpVCv2XZpVOGoHmC/gFSMFVnc2MYr99BZfX5MmOiTS7FU3rJpkp8Tc9OBtphbCp7r2BBpKxKv9UZx/lUCJl+vnhwQzHmb0= ;{id = 42393} +045F343433045F746370066769746C6162096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001662F19A7E116140201055A6EFB2821B9E1BD8C3976FBDFF64014D07D7E699A64AA12CDD15054E0AFBE225EAF9938C7DC11F21B1207D030BCB0CE83A1828BBC479E878001C58DD9E38C0432D1E7959B7223EA493E7EDB18468710727852C1A685FF3666EC89DA36FFDF642DF4FDD4236AD6E4197AE13FD5C5C1AFAD1D935DDAB +_443._tcp.gitlab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FmLxmn4RYUAgEFWm77KCG54b2MOXb73/ZAFNB9fmmaZKoSzdFQVOCvviJer5k4x9wR8hsSB9AwvLDOg6GCi7xHnoeAAcWN2eOMBDLR55WbciPqST5+2xhGhxByeFLBpoX/Nmbsido2/99kLfT91CNq1uQZeuE/1cXBr60dk13as= ;{id = 42393} +045F343433045F746370066769746C6162096E6C6E65746C616273026E6C00002F000100000E100020096769746C61622D6369096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.gitlab.nlnetlabs.nl. 3600 IN NSEC gitlab-ci.nlnetlabs.nl. CNAME RRSIG NSEC +096769746C61622D6369096E6C6E65746C616273026E6C0000050001000027D80015066769746C6162096E6C6E65746C616273026E6C00 +gitlab-ci.nlnetlabs.nl. 10200 IN CNAME gitlab.nlnetlabs.nl. +096769746C61622D6369096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009311E9AA47450A87F87680F62FCE3A87EC8CCC687804D262F9588900100BCEBD6F1A1CB8694035049915EAA650960F5B0853B6D4875CAAD009DB349A0DC4D2025587101560FF90232F8E870C2E69BFC9D330C266FE6CC12D88E306430B45FFD9B978087FBF4638280C43F025E1A68B736585AF520E168C01475E5BCB2EF58461 +gitlab-ci.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kxHpqkdFCof4doD2L846h+yMzGh4BNJi+ViJABALzr1vGhy4aUA1BJkV6qZQlg9bCFO21IdcqtAJ2zSaDcTSAlWHEBVg/5AjL46HDC5pv8nTMMJm/mzBLYjjBkMLRf/ZuXgIf79GOCgMQ/Al4aaLc2WFr1IOFowBR15byy71hGE= ;{id = 42393} +096769746C61622D6369096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C006E8D96B671F557397D39DEEA1F96877987B73A9C8B2AFA87E523869874ACE9DE1264B31774C0A6DA2E839B3E85E00AB5CC5CA3B32A8FBABE2F3DCA1D8951046F4229B9BBA58F37605308DBA7B8B312A24E6B043BEA5401529335FDF6EC72B513FC494A740D2F126FBA6E9E3ED1103FC519AB8522298BE93CCB64A78945C0576D +gitlab-ci.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. bo2WtnH1Vzl9Od7qH5aHeYe3OpyLKvqH5SOGmHSs6d4SZLMXdMCm2i6Dmz6F4Aq1zFyjsyqPur4vPcodiVEEb0IpubuljzdgUwjbp7izEqJOawQ76lQBUpM1/fbscrUT/ElKdA0vEm+6bp4+0RA/xRmrhSIpi+k8y2SniUXAV20= ;{id = 42393} +096769746C61622D6369096E6C6E65746C616273026E6C00002F000100000E10002A045F343433045F746370096769746C61622D6369096E6C6E65746C616273026E6C000006040000000003 +gitlab-ci.nlnetlabs.nl. 3600 IN NSEC _443._tcp.gitlab-ci.nlnetlabs.nl. CNAME RRSIG NSEC +045F343433045F746370096769746C61622D6369096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.gitlab-ci.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F746370096769746C61622D6369096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B51CC5FBF65FC044DA3FD2485BE063A9003A8770EDB2F6E62C2C33F85D07A8896840D7AC51951FDB930FD2213276803B00F14ECEBF1F7602A4987144977B61057FF1E293CDC1C90F5F42AC66CB174DE6A9264C4986D01B4A6582EB7611F93B2407C7B2ACAE9089DFAE8D155B68695D103CC0C11816D223DF274A5592BA4CDC9E +_443._tcp.gitlab-ci.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. tRzF+/ZfwETaP9JIW+BjqQA6h3DtsvbmLCwz+F0HqIloQNesUZUf25MP0iEydoA7APFOzr8fdgKkmHFEl3thBX/x4pPNwckPX0KsZssXTeapJkxJhtAbSmWC63YR+TskB8eyrK6Qid+ujRVbaGldEDzAwRgW0iPfJ0pVkrpM3J4= ;{id = 42393} +045F343433045F746370096769746C61622D6369096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BA126C81754F5CC7F6F3F203E9B88358BF8F62C218187ED9A3D69CE2DE21BC82BBA2702C0949CA52A34F92C8705E478F19269B1F7839AD06ECD4A76A1103BDA60A9B5DF06D4713429C3BCBF260C2D3D2BD5620D7EE915E93C45168541B87D8E940B0D0DFF3D4C5BCC807146B03E94F202BCB6408A033C703C97BADCF03544465 +_443._tcp.gitlab-ci.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uhJsgXVPXMf28/ID6biDWL+PYsIYGH7Zo9ac4t4hvIK7onAsCUnKUqNPkshwXkePGSabH3g5rQbs1KdqEQO9pgqbXfBtRxNCnDvL8mDC09K9ViDX7pFek8RRaFQbh9jpQLDQ3/PUxbzIBxRrA+lPICvLZAigM8cDyXutzwNURGU= ;{id = 42393} +045F343433045F746370096769746C61622D6369096E6C6E65746C616273026E6C00002F000100000E10001C05676C6F6F6D096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.gitlab-ci.nlnetlabs.nl. 3600 IN NSEC gloom.nlnetlabs.nl. CNAME RRSIG NSEC +05676C6F6F6D096E6C6E65746C616273026E6C0000010001000027D80004D59AE028 +gloom.nlnetlabs.nl. 10200 IN A 213.154.224.40 +05676C6F6F6D096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0072479A96470049ADBFE2E63F09BD2B3CFB69D4FF4F0BD3AA6EB0D8874C5FBD4431F6E029FA6C59210B63EEB195AD762908147F345F964DEA0CA7C0303E6042A8C323310EBB143BD4FE05F313D1A6B4F8F8F1A4522A2F19FF6EB4BF1DFDC9A1393E689BCA91D22105072BBD138E1E3423E90060A05859C0974B93E4A8DEE77AAF +gloom.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ckealkcASa2/4uY/Cb0rPPtp1P9PC9OqbrDYh0xfvUQx9uAp+mxZIQtj7rGVrXYpCBR/NF+WTeoMp8AwPmBCqMMjMQ67FDvU/gXzE9GmtPj48aRSKi8Z/260vx39yaE5PmibypHSIQUHK70Tjh40I+kAYKBYWcCXS5PkqN7neq8= ;{id = 42393} +05676C6F6F6D096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AE7A68D14E516F1E1D1EFD82659872D220FE240A660010E03FA3449E82875FB13300D7F2996FE0B3E0C94988C7B6ADDCBD7F512AE0778129F3CAAEFE0AD8CF93BA471CCE9222AA59459EB53A1C16CCFCFE230CC9A730BA618FAFCC7A5B466DA28DAAB7E80CEB787A0FA441E873356CDE18F296CB2C81CF03C1B22AEF00DD6E21 +gloom.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rnpo0U5Rbx4dHv2CZZhy0iD+JApmABDgP6NEnoKHX7EzANfymW/gs+DJSYjHtq3cvX9RKuB3gSnzyq7+CtjPk7pHHM6SIqpZRZ61OhwWzPz+IwzJpzC6YY+vzHpbRm2ijaq36AzreHoPpEHoczVs3hjylsssgc8DwbIq7wDdbiE= ;{id = 42393} +05676C6F6F6D096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B8EB40F33B0EC64062888FEE9F6DB3A6112747490275B2FE1DB5FCF8BCF8378E1C21B16AEC540614F6359A930B7B0E7BEFACEC8489A3E2A1BB91E93A8FDC46AA544C51A60E126EF331E68C57E857FDB42E99903B1EC0AB5F970435DE13E00331BBCEC858D0CCDB02A250CDC8D57863550F80D86A5E47F56B89F9DC06E47BF56A +gloom.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. uOtA8zsOxkBiiI/un22zphEnR0kCdbL+HbX8+Lz4N44cIbFq7FQGFPY1mpMLew5776zshImj4qG7kek6j9xGqlRMUaYOEm7zMeaMV+hX/bQumZA7HsCrX5cENd4T4AMxu87IWNDM2wKiUM3I1XhjVQ+A2GpeR/VrifncBuR79Wo= ;{id = 42393} +05676C6F6F6D096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009EE0B062856B1BB6FC2A62AC211D66947104B644E816A9D8229EA3886B259B2D351578D9F4FCE2C15CE31339ACE49A1CEDA4C6C9870047C9C7F7D5B7CE6B11B5387C06FBE57B2B1B06AA55E4BE57737893444B77677884F6D0BB6A782A08D0026D3C4F03557AF98F8E99ACB5A60325D0E22F167AA252A6328F629AFD6DCE9CF9 +gloom.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. nuCwYoVrG7b8KmKsIR1mlHEEtkToFqnYIp6jiGslmy01FXjZ9PziwVzjEzms5Joc7aTGyYcAR8nH99W3zmsRtTh8BvvleysbBqpV5L5Xc3iTREt3Z3iE9tC7angqCNACbTxPA1V6+Y+Omay1pgMl0OIvFnqiUqYyj2Ka/W3OnPk= ;{id = 42393} +05676C6F6F6D096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010203BAFFFE052E3E +gloom.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe05:2e3e +05676C6F6F6D096E6C6E65746C616273026E6C00002C0001000027D80016010155D8297F7C8015C4661182EE82287C3AB94D2107 +gloom.nlnetlabs.nl. 10200 IN SSHFP 1 1 55D8297F7C8015C4661182EE82287C3AB94D2107 +05676C6F6F6D096E6C6E65746C616273026E6C00002F000100000E10001E07676F72696C6C61096E6C6E65746C616273026E6C00000640000008000B +gloom.nlnetlabs.nl. 3600 IN NSEC gorilla.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +07676F72696C6C61096E6C6E65746C616273026E6C0000010001000027D80004D59AE03C +gorilla.nlnetlabs.nl. 10200 IN A 213.154.224.60 +07676F72696C6C61096E6C6E65746C616273026E6C0000020001000027D8001607676F72696C6C61096E6C6E65746C616273026E6C00 +gorilla.nlnetlabs.nl. 10200 IN NS gorilla.nlnetlabs.nl. +07676F72696C6C61096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000060 +gorilla.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::60 +07676F72696C6C61096E6C6E65746C616273026E6C00002F000100000E10001C056861746869096E6C6E65746C616273026E6C000006200000000003 +gorilla.nlnetlabs.nl. 3600 IN NSEC hathi.nlnetlabs.nl. NS RRSIG NSEC +07676F72696C6C61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0009822AE4E6E576F2F8ED7244906F7F61E7EFCE903553AEA72694FEE3E2FF9B3DE5AA8163E32AB6EC7D9BE4F7E8BCE92B03550B18C01DD1147886C8F17EB1F53612614E435ADB86B4AD96A86DB299E949457FC8B108A1FAECEFEE8DCFA86286E6CB7A0A46A3F543D1D850012894C91B7627DCD43E786037B9AFB0519BC7EAC879 +gorilla.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. CYIq5ObldvL47XJEkG9/YefvzpA1U66nJpT+4+L/mz3lqoFj4yq27H2b5PfovOkrA1ULGMAd0RR4hsjxfrH1NhJhTkNa24a0rZaobbKZ6UlFf8ixCKH67O/ujc+oYobmy3oKRqP1Q9HYUAEolMkbdifc1D54YDe5r7BRm8fqyHk= ;{id = 42393} +056861746869096E6C6E65746C616273026E6C0000010001000027D80004D59AE06C +hathi.nlnetlabs.nl. 10200 IN A 213.154.224.108 +056861746869096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00134DEB1033AC104F67A6FE7ADE65509B321C16CA00C31C7FEFB85A6B5781F20001DD1DC3B8171203CB50CFB7FF9F171261FB44B35877029514271291CDC913F9BD3E6FD3C8D0516A76F6F13926E62BAB17F582E0F2968A0E6A440E9229CFE6314C7BD9793E26DFB448CC7C59EADCC25FA14016184DBC4D25D81B7E3F8120D5BB +hathi.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. E03rEDOsEE9npv563mVQmzIcFsoAwxx/77haa1eB8gAB3R3DuBcSA8tQz7f/nxcSYftEs1h3ApUUJxKRzckT+b0+b9PI0FFqdvbxOSbmK6sX9YLg8paKDmpEDpIpz+YxTHvZeT4m37RIzHxZ6tzCX6FAFhhNvE0l2Bt+P4Eg1bs= ;{id = 42393} +056861746869096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C60D2B4A32DC40EE213758A376079D01AD7ECE2EA2515A7DBDB95BF2070A823C39046F42F8B56391BC80A85721817D799E2BAE1123120ECCF8C497C0E87FFCDA83FB0780D5DA933BB707B55DC64B30BBE9616EBF2E5AF9039FD5BB41E042EEDF85040EEB464117D56D47D0085FBF45AB226C8F316C9E68FB3B73B3FD41F617E6 +hathi.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xg0rSjLcQO4hN1ijdgedAa1+zi6iUVp9vblb8gcKgjw5BG9C+LVjkbyAqFchgX15niuuESMSDsz4xJfA6H/82oP7B4DV2pM7twe1XcZLMLvpYW6/Llr5A5/Vu0HgQu7fhQQO60ZBF9VtR9AIX79FqyJsjzFsnmj7O3Oz/UH2F+Y= ;{id = 42393} +056861746869096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0047672417C8A7D73DC795DF4573BD18FC3CF426E2ED0D2802352C75F6DE4A4CDA54EB5AB36E16CBCBBD8473D4D1EFB7B6AC1152D16E38630D6D6ABB0343919410465A056091D8F2273FFDD6531470926B2504FA8800C1CD0C295D974BDD1B3449B07D6B9AB1837DFC1BA7A5C1A443CE84CBCF222BFB99745460A9CC15CCEE489A +hathi.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. R2ckF8in1z3Hld9Fc70Y/Dz0JuLtDSgCNSx19t5KTNpU61qzbhbLy72Ec9TR77e2rBFS0W44Yw1tarsDQ5GUEEZaBWCR2PInP/3WUxRwkmslBPqIAMHNDCldl0vdGzRJsH1rmrGDffwbp6XBpEPOhMvPIiv7mXRUYKnMFczuSJo= ;{id = 42393} +056861746869096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004445C856BC0C247E287B45F5A860184F8BFA32C297D38A23E6155BEE2AAE5361453C1DF3482F1C1659EEA5D867CF720C014801FF3B0885520909078D7A3B17D83BEB46F3F313A69ED3E414D1D634162577EDCA89005622ECAACFC2ACA6F4465FE5800A2BCB15C72E59712ABCDF7834986EB6788BD3E35715EAC4936F99D6D864 +hathi.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. REXIVrwMJH4oe0X1qGAYT4v6MsKX04oj5hVb7iquU2FFPB3zSC8cFlnupdhnz3IMAUgB/zsIhVIJCQeNejsX2DvrRvPzE6ae0+QU0dY0FiV37cqJAFYi7KrPwqym9EZf5YAKK8sVxy5ZcSq833g0mG62eIvT41cV6sSTb5nW2GQ= ;{id = 42393} +056861746869096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021143FFFEDD6238 +hathi.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:211:43ff:fedd:6238 +056861746869096E6C6E65746C616273026E6C00002C0001000027D800160101957658025F4A10217CC50CAD487E7D08C3897F28 +hathi.nlnetlabs.nl. 10200 IN SSHFP 1 1 957658025F4A10217CC50CAD487E7D08C3897F28 +056861746869096E6C6E65746C616273026E6C00002C0001000027D800160201A4BCB1F8909C7A9F93AFAD1048F96DA9279F1F60 +hathi.nlnetlabs.nl. 10200 IN SSHFP 2 1 A4BCB1F8909C7A9F93AFAD1048F96DA9279F1F60 +056861746869096E6C6E65746C616273026E6C00002F000100000E10001E07686F7473706F74096E6C6E65746C616273026E6C00000640000008000B +hathi.nlnetlabs.nl. 3600 IN NSEC hotspot.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +07686F7473706F74096E6C6E65746C616273026E6C0000050001000027D8001506666C75666679096E6C6E65746C616273026E6C00 +hotspot.nlnetlabs.nl. 10200 IN CNAME fluffy.nlnetlabs.nl. +07686F7473706F74096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003BF527436E984736716D6CE4C95698C29987AB1F41878BD445CE8A328882B85D9B2D071B23E0AA330E2DAE7192A3B4F857BE5FD9E5188E1B439734684F6D05ECE8EE681418CE6A82013062C00BB995AEE135040D0E002BAD551E28AE90746A6DE7901F30555211A8489A64784DB784B5B7EC8C78677A8475BC15845F540F88C8 +hotspot.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O/UnQ26YRzZxbWzkyVaYwpmHqx9Bh4vURc6KMoiCuF2bLQcbI+CqMw4trnGSo7T4V75f2eUYjhtDlzRoT20F7OjuaBQYzmqCATBiwAu5la7hNQQNDgArrVUeKK6QdGpt55AfMFVSEahImmR4TbeEtbfsjHhneoR1vBWEX1QPiMg= ;{id = 42393} +07686F7473706F74096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009B90771111D8F03BA8C14F53A07887E914B6C52D9883C43875F8CE171101C38A1E115D5B5670F4831DE9A2E3EC78B812F77BE650F8434B46483AA8EAD2975A6D9AE2A928E083FAF95B9AF578DC9C781A4BAF091573F6E79A1EED096FBB6CE14541AC5E59E5EFC8AC4235E2F33564A81368226D25829E193E4DDD3E65AA9DC0BE +hotspot.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m5B3ERHY8DuowU9ToHiH6RS2xS2Yg8Q4dfjOFxEBw4oeEV1bVnD0gx3pouPseLgS93vmUPhDS0ZIOqjq0pdabZriqSjgg/r5W5r1eNyceBpLrwkVc/bnmh7tCW+7bOFFQaxeWeXvyKxCNeLzNWSoE2gibSWCnhk+Td0+ZaqdwL4= ;{id = 42393} +07686F7473706F74096E6C6E65746C616273026E6C00002F000100000E10001F08687032303535646E096E6C6E65746C616273026E6C000006040000000003 +hotspot.nlnetlabs.nl. 3600 IN NSEC hp2055dn.nlnetlabs.nl. CNAME RRSIG NSEC +08687032303535646E096E6C6E65746C616273026E6C0000010001000027D80004D59AE024 +hp2055dn.nlnetlabs.nl. 10200 IN A 213.154.224.36 +08687032303535646E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009600BB855C98ACBD69C4610376D02E01423F4A012E41C7770E558675DAB59FFFEF5EB0A3DB0F2F8A43503F394D6FA10ED6B27B2F2BF7DE1B56566CF0A4524FED4D293C3633AB0A665DAF001CB20E542A0D105E1353D7759559F9ED5D4B9943FB0F528EF5F6CFC9B60FC5192D7E4B63B7489B09438D667F78F206FEA1CB95B84A +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lgC7hVyYrL1pxGEDdtAuAUI/SgEuQcd3DlWGddq1n//vXrCj2w8vikNQPzlNb6EO1rJ7Lyv33htWVmzwpFJP7U0pPDYzqwpmXa8AHLIOVCoNEF4TU9d1lVn57V1LmUP7D1KO9fbPybYPxRktfktjt0ibCUONZn948gb+ocuVuEo= ;{id = 42393} +08687032303535646E096E6C6E65746C616273026E6C00002E0001000027D800A000100803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A70FF704477C363BBF7021E715690647260AFDAA7096308F286C698EA86807C5D2C8E646D7BAAD85AC857277BDCFC858C8F01521F77478D773227833FC755C3CB1CEA1268F5B1FC4A153EC46282B6DD94DDF69901EA25A07779084929B83F254F4FDC4875EF5A5C9A88BCD4A5CE3159C9326FB23D86876022C2170B96C32595E +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG TXT 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pw/3BEd8Nju/cCHnFWkGRyYK/apwljCPKGxpjqhoB8XSyOZG17qthayFcne9z8hYyPAVIfd0eNdzIngz/HVcPLHOoSaPWx/EoVPsRigrbdlN32mQHqJaB3eQhJKbg/JU9P3Eh171pcmoi81KXOMVnJMm+yPYaHYCLCFwuWwyWV4= ;{id = 42393} +08687032303535646E096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004222DC8AFC8D33AFD4F09D3BA34A8A64B16DA9E59F76C53C2BAA40D071D98F770BF5EC3646656F1B7ABE65D809EADA98F90579EBE1B0586F57745F70490D000D4C59A851C3CE9CD9DA67E276F1ECB30CB9EDB1D4F8C57BC0B77FC1959819830266C2FD77F2B0E8CAD1D33B6098B33C244272EC32A54BBBAA46C930F5A0E1C065 +hp2055dn.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QiLcivyNM6/U8J07o0qKZLFtqeWfdsU8K6pA0HHZj3cL9ew2RmVvG3q+ZdgJ6tqY+QV56+GwWG9XdF9wSQ0ADUxZqFHDzpzZ2mfidvHsswy57bHU+MV7wLd/wZWYGYMCZsL9d/Kw6MrR0ztgmLM8JEJy7DKlS7uqRskw9aDhwGU= ;{id = 42393} +08687032303535646E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A2184618AE6AC8996C3BF1A42CC05B3FC46809951CF31F72634DE57EDE1FB563D1ECB79F4B840F2AA90FEE63E3F176D7418E63262D306329352E5AE5628DAC97216EE9DBD704540182D04360EBBEF15B635BC6C01DF655F5D694F6A1E1BDDFF76E2E8C7BC5A71B39C4E13BA6B9F8DCE0EE5175F0E4DB1C3296B697A805F7F06A +hp2055dn.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ohhGGK5qyJlsO/GkLMBbP8RoCZUc8x9yY03lft4ftWPR7LefS4QPKqkP7mPj8XbXQY5jJi0wYyk1LlrlYo2slyFu6dvXBFQBgtBDYOu+8VtjW8bAHfZV9daU9qHhvd/3bi6Me8WnGznE4Tumufjc4O5RdfDk2xwylraXqAX38Go= ;{id = 42393} +08687032303535646E096E6C6E65746C616273026E6C0000100001000027D80014134850204C617365724A6574205032303535646E +hp2055dn.nlnetlabs.nl. 10200 IN TXT "HP LaserJet P2055dn" +08687032303535646E096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600011EC1DEFFFE81FE6F +hp2055dn.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:1ec1:deff:fe81:fe6f +08687032303535646E096E6C6E65746C616273026E6C00002F000100000E10001A03696162096E6C6E65746C616273026E6C000006400080080003 +hp2055dn.nlnetlabs.nl. 3600 IN NSEC iab.nlnetlabs.nl. A TXT AAAA RRSIG NSEC +03696162096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +iab.nlnetlabs.nl. 10200 IN A 213.154.224.1 +03696162096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00053A36D395B919FBE0D650B00D9D3D4227A2BBA490C2F66F44BFEEF61FD82B812542DFEA4CEED337C5EF8DBF53DD17B142460DBF82578E4F7953AC033FEE8891CFC01C73A76DC328DDBEB776A0F9E50460408A23533FABA69482BCEFBE471462F271EBA80857B3E69F1573710F1E3D897E7A09164C77754848689E8B24B1EF61 +iab.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. BTo205W5Gfvg1lCwDZ09Qieiu6SQwvZvRL/u9h/YK4ElQt/qTO7TN8Xvjb9T3RexQkYNv4JXjk95U6wDP+6Ikc/AHHOnbcMo3b63dqD55QRgQIojUz+rppSCvO++RxRi8nHrqAhXs+afFXNxDx49iX56CRZMd3VISGieiySx72E= ;{id = 42393} +03696162096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00959FF726FA840C877EC78C65FD2BA01D08411EE8525CFFF16AA70DC96AA3973BF30A891E21F9ECF4B7D04A1A42EF058017B041EBC6437964B0A15E7EF3C191493856F46FA42AED57636F8957FE9AA98B21B11BCA97D387FD17B0D96240AAD156188FF35CC4CCEE6214BDBA8E26049F0BF9BD3A7E3B4615A80F456FDA2B14E526 +iab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lZ/3JvqEDId+x4xl/SugHQhBHuhSXP/xaqcNyWqjlzvzCokeIfns9LfQShpC7wWAF7BB68ZDeWSwoV5+88GRSThW9G+kKu1XY2+JV/6aqYshsRvKl9OH/Rew2WJAqtFWGI/zXMTM7mIUvbqOJgSfC/m9On47RhWoD0Vv2isU5SY= ;{id = 42393} +03696162096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0048FA38B89B4644286B4F5514B9990C717AB26062291CB86E5C01D4080FA14CDA2044D58658AB8345534ED2465DC62CCD1C40372D01677AB1421DB4AA4C7105C00D4AB2D5F9EB288F7B75BFB9C5CE278CF1C0C953288847204B158B3F3B27145086DB0543554F59C152149B1D9B0ABA53F0B657E5DCBF395090A6147CBB8926C0 +iab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SPo4uJtGRChrT1UUuZkMcXqyYGIpHLhuXAHUCA+hTNogRNWGWKuDRVNO0kZdxizNHEA3LQFnerFCHbSqTHEFwA1KstX56yiPe3W/ucXOJ4zxwMlTKIhHIEsViz87JxRQhtsFQ1VPWcFSFJsdmwq6U/C2V+XcvzlQkKYUfLuJJsA= ;{id = 42393} +03696162096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +iab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +03696162096E6C6E65746C616273026E6C00002F000100000E10001E0377777703696162096E6C6E65746C616273026E6C000006400000080003 +iab.nlnetlabs.nl. 3600 IN NSEC www.iab.nlnetlabs.nl. A AAAA RRSIG NSEC +0377777703696162096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +www.iab.nlnetlabs.nl. 10200 IN A 213.154.224.1 +0377777703696162096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C1E9779DCC2802892C455FB510897713378E76A4F8B7B0BFC7732CEC92CC1D5E5B050933C40D85AA880CD492F580212B318F711CF714BB51C86003B10C799E91BA5FCC28E6F75C04AD57E1EB605993E835FF8E64FD946C33B825AA87824CEFF06F0BBE4AD6C447BEBB86109E6951D27D57F3D70F341DC75D749CD3B055AB7C01 +www.iab.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wel3ncwoAoksRV+1EIl3EzeOdqT4t7C/x3Ms7JLMHV5bBQkzxA2FqogM1JL1gCErMY9xHPcUu1HIYAOxDHmekbpfzCjm91wErVfh62BZk+g1/45k/ZRsM7glqoeCTO/wbwu+StbER767hhCeaVHSfVfz1w80HcdddJzTsFWrfAE= ;{id = 42393} +0377777703696162096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0040C8E9F0417265693A79AB3E4B5C5E10CFEC1894C2A383852F92956ED13DF2D1B3A436A921046A49EC252DD27290E76499C80EB7B8AA692FE2517DF6BAA510C12B1C8B9B6D5F94834E516343589829025232B2529514E82A378AC570AC82D00B3854EF0F2840CE7EE1BC462AAE6B9D6DCD3625784D538CD92C872F26D0E6CE1D +www.iab.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QMjp8EFyZWk6eas+S1xeEM/sGJTCo4OFL5KVbtE98tGzpDapIQRqSewlLdJykOdkmcgOt7iqaS/iUX32uqUQwSsci5ttX5SDTlFjQ1iYKQJSMrJSlRToKjeKxXCsgtALOFTvDyhAzn7hvEYqrmudbc02JXhNU4zZLIcvJtDmzh0= ;{id = 42393} +0377777703696162096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0021B15FEEE05802DC01795D78BAE977D838C0FDEE35B61D928C2F3B542479A8C5FC4968D3C4B13AE86389BA7E4872521CD076C02AB247B3BDF174EFF070CF0DD405FD3A28C740FDA9A6578C020150150B102654F81740E45E5F1A9FF445BF35ECD4D4D56818CEF340CC73D0D19F888C6C69A9A1C6DA60E9EEBE48A197C454C2E7 +www.iab.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IbFf7uBYAtwBeV14uul32DjA/e41th2SjC87VCR5qMX8SWjTxLE66GOJun5IclIc0HbAKrJHs73xdO/wcM8N1AX9OijHQP2ppleMAgFQFQsQJlT4F0DkXl8an/RFvzXs1NTVaBjO80DMc9DRn4iMbGmpocbaYOnuvkihl8RUwuc= ;{id = 42393} +0377777703696162096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +www.iab.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +0377777703696162096E6C6E65746C616273026E6C00002F000100000E10001B0469616E61096E6C6E65746C616273026E6C000006400000080003 +www.iab.nlnetlabs.nl. 3600 IN NSEC iana.nlnetlabs.nl. A AAAA RRSIG NSEC +0469616E61096E6C6E65746C616273026E6C0000010001000027D80004D59AE080 +iana.nlnetlabs.nl. 10200 IN A 213.154.224.128 +0469616E61096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006240B45897B807FC578081053B31BF4A4F5DFD531D26D20D472743315A5C4395F6588E50700DDC0A78B66921EC92B6B805224F4A74963C8F15050F1E10381D16C483994D25A0E9F974950ACA0A9969BEFADDD76DEE84C02A6A0EF5E3E38BD485C2577F780379D5CCBC01C72E86D33741A526854B9CDB00D308EAE7BE5818080D +iana.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. YkC0WJe4B/xXgIEFOzG/Sk9d/VMdJtINRydDMVpcQ5X2WI5QcA3cCni2aSHskra4BSJPSnSWPI8VBQ8eEDgdFsSDmU0loOn5dJUKygqZab763ddt7oTAKmoO9ePji9SFwld/eAN51cy8AccuhtM3QaUmhUuc2wDTCOrnvlgYCA0= ;{id = 42393} +0469616E61096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00BC2AF01CAD3D5AC57E8885578D69ACE598C2C4E1E4375C97BEE53472EE539AF43B734771BA35E0EB1433FCEC49B2BF5D60FAA231A473F2A4DFE0E2F3DE2098B2C605761069E3677FFA38B38E9BF7AAC45D184A6BBCAB0F43DF854678A3486A1BCDAC9B8D27C937A995F44712D09292D9D5FFCA1A434C8C33A9802C8FE84970D9 +iana.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. vCrwHK09WsV+iIVXjWms5ZjCxOHkN1yXvuU0cu5TmvQ7c0dxujXg6xQz/OxJsr9dYPqiMaRz8qTf4OLz3iCYssYFdhBp42d/+jizjpv3qsRdGEprvKsPQ9+FRnijSGobzaybjSfJN6mV9EcS0JKS2dX/yhpDTIwzqYAsj+hJcNk= ;{id = 42393} +0469616E61096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C1C7B14543D6C6DA2DAA4E68F70005265AE7607A2157C93F069372109B9BF2CB0899BDA38A4B7C61CAFF7FBC0E66CCF4E9C14728DBC593FBCBCDF390F3049505F228F0F4D735FAC0D3402D15269005D7BE5D20ACABAF7945CC9CBC39542221E8361CFE7A7BCE4289295D5EAC99DC00FCA21DF0838DC10C7A82584A386CC03DFB +iana.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wcexRUPWxtotqk5o9wAFJlrnYHohV8k/BpNyEJub8ssImb2jikt8Ycr/f7wOZsz06cFHKNvFk/vLzfOQ8wSVBfIo8PTXNfrA00AtFSaQBde+XSCsq695RcycvDlUIiHoNhz+envOQokpXV6smdwA/KId8IONwQx6glhKOGzAPfs= ;{id = 42393} +0469616E61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CAAFD051202FAEE9BD1BA6F9A66D864AD78E57078260653490C9F55CC6CF429CC83DD5F42568FDE26BF3108B5FA79BF524BDB2B2AB2920B447C43DEFF27A6D7125E885A46EC088ADE01065C2512837D62E9E4D6D059E9085A8DD2A12E5E5BF8F484D559DF16D1FE31B66211A81143FF718A9D9E83D36F14C8043D661CCA615C3 +iana.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. yq/QUSAvrum9G6b5pm2GSteOVweCYGU0kMn1XMbPQpzIPdX0JWj94mvzEItfp5v1JL2ysqspILRHxD3v8nptcSXohaRuwIit4BBlwlEoN9Yunk1tBZ6QhajdKhLl5b+PSE1VnfFtH+MbZiEagRQ/9xip2eg9NvFMgEPWYcymFcM= ;{id = 42393} +0469616E61096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000128 +iana.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::128 +0469616E61096E6C6E65746C616273026E6C00002C0001000027D80016010191DB62C36C051F0E6414FA1F5BF9678E6C554DBF +iana.nlnetlabs.nl. 10200 IN SSHFP 1 1 91DB62C36C051F0E6414FA1F5BF9678E6C554DBF +0469616E61096E6C6E65746C616273026E6C00002C0001000027D800160201138764C92D6A727F6EAD120826333A43788217E4 +iana.nlnetlabs.nl. 10200 IN SSHFP 2 1 138764C92D6A727F6EAD120826333A43788217E4 +0469616E61096E6C6E65746C616273026E6C00002F000100000E10001B046963616C096E6C6E65746C616273026E6C00000640000008000B +iana.nlnetlabs.nl. 3600 IN NSEC ical.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +046963616C096E6C6E65746C616273026E6C0000010001000027D80004D59AE01E +ical.nlnetlabs.nl. 10200 IN A 213.154.224.30 +046963616C096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005DD9018C3EA2D707609258E924F882C0E4D9090C252316F8DDBAAC7112CA1CEF9AA015135EDF79B7185EB11C227C7CA7FE0259704B631AEFED7360999756DC0C1856C70256AEBDEF5C9F0E9DFE3EBA3E90C6D313BEC12D203EC284CF1F52544865AFB5E498F682F7A28F71A1145E57343FC02EF9AD992183050EAF66F16AFB30 +ical.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XdkBjD6i1wdgkljpJPiCwOTZCQwlIxb43bqscRLKHO+aoBUTXt95txhesRwifHyn/gJZcEtjGu/tc2CZl1bcDBhWxwJWrr3vXJ8Onf4+uj6QxtMTvsEtID7ChM8fUlRIZa+15Jj2gveij3GhFF5XND/ALvmtmSGDBQ6vZvFq+zA= ;{id = 42393} +046963616C096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009F80EF38F75E4DE31E884F25955D365FF77E0A7479485F82FA1AAE348E4A988106F3AF4819CDA503A7FF38BF646AFBB085E1167FE1110722A9734A175779DB2AD0AC22E820CC45FAE8DCF09D25BEDFCB8BA8A289FF3084F2E82A91318D6561B81D9924771A19B9837C7D2878ECD9BF59FE0CAA451406058826B1D7D9337307D3 +ical.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. n4DvOPdeTeMeiE8llV02X/d+CnR5SF+C+hquNI5KmIEG869IGc2lA6f/OL9kavuwheEWf+ERByKpc0oXV3nbKtCsIuggzEX66NzwnSW+38uLqKKJ/zCE8ugqkTGNZWG4HZkkdxoZuYN8fSh47Nm/Wf4MqkUUBgWIJrHX2TNzB9M= ;{id = 42393} +046963616C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008348A95B85EA6F5DD3DEFBC7034A316A8A3FBD0D95210F9215BEB16F0BBA2028BFA9B05F66D9F428156A37834327D36E20DD28E7D448D78E793383958FC06D94E8657723FD7DE77340677C0595E566D2D0ED74E0F7FD91B164DD6222C7FB18030AB9A56AE8E0C39D5CB1654DF92AD3DB8CC19D7FC4180A8B48F4B197BFC4667E +ical.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g0ipW4Xqb13T3vvHA0oxaoo/vQ2VIQ+SFb6xbwu6ICi/qbBfZtn0KBVqN4NDJ9NuIN0o59RI1455M4OVj8BtlOhldyP9fedzQGd8BZXlZtLQ7XTg9/2RsWTdYiLH+xgDCrmlaujgw51csWVN+SrT24zBnX/EGAqLSPSxl7/EZn4= ;{id = 42393} +046963616C096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021E52FFFEF39000 +ical.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21e:52ff:fef3:9000 +046963616C096E6C6E65746C616273026E6C00002F000100000E10001A03696969096E6C6E65746C616273026E6C000006400000080003 +ical.nlnetlabs.nl. 3600 IN NSEC iii.nlnetlabs.nl. A AAAA RRSIG NSEC +03696969096E6C6E65746C616273026E6C0000010001000027D80004D59AE090 +iii.nlnetlabs.nl. 10200 IN A 213.154.224.144 +03696969096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009A464050C213F095D2F9F9D15A04FDF5397F7E2C86B143253EBF31D9CF4155BDE4EAF692A98493AD29CB3532BCC895E0017801DB21EEDC4DFD2DFA4C9775FF2CCF2B0DB3C72C0C8BE760B2041D51042BF98C1D78582C169E7457777E20D062B7E442517E360F65E69A476DD46A2475796670ED76C978030B290FA77937E50D0A +iii.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mkZAUMIT8JXS+fnRWgT99Tl/fiyGsUMlPr8x2c9BVb3k6vaSqYSTrSnLNTK8yJXgAXgB2yHu3E39LfpMl3X/LM8rDbPHLAyL52CyBB1RBCv5jB14WCwWnnRXd34g0GK35EJRfjYPZeaaR23UaiR1eWZw7XbJeAMLKQ+neTflDQo= ;{id = 42393} +03696969096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00599E5CB5434EEACF73F8870FD56D2B70C61CEFC4BC8421A3DA3FE13B542D290C7E657C1C57A635355B9D8F5DA6F7B7C43940B32F8434977FFB735B43F675078E9B891D820075622AB07BE2605486205663DE7A67ADF341373C0E5CDCA046224D3D1B65BBA72BE16E0FA98459027D87C529EF949BB310DFFEC0881781DB8BC54D +iii.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WZ5ctUNO6s9z+IcP1W0rcMYc78S8hCGj2j/hO1QtKQx+ZXwcV6Y1NVudj12m97fEOUCzL4Q0l3/7c1tD9nUHjpuJHYIAdWIqsHviYFSGIFZj3npnrfNBNzwOXNygRiJNPRtlu6cr4W4PqYRZAn2HxSnvlJuzEN/+wIgXgduLxU0= ;{id = 42393} +03696969096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001E57E51C740B77B358C4134BEBC7178887801736268C54D17F6CC00502DC4AA87AA5EB35BFB56CDF49C7BFD4E05060A4DFB6FB9BA54193E10B5ACF5C95C5F1C156F3556E108CED4D1A9E9553F63DE8685EC91D63CAB84644B2DBAA0E7CB807F1DBCC3FF8D968DC8977833B13C1ED5E1547BF233638BBB9CBB55D511FD2A4C3FE +iii.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HlflHHQLd7NYxBNL68cXiIeAFzYmjFTRf2zABQLcSqh6pes1v7Vs30nHv9TgUGCk37b7m6VBk+ELWs9clcXxwVbzVW4QjO1NGp6VU/Y96GheyR1jyrhGRLLbqg58uAfx28w/+Nlo3Il3gzsTwe1eFUe/IzY4u7nLtV1RH9Kkw/4= ;{id = 42393} +03696969096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0041CEC2E2AABEE39FC0ECC680124A0F8B6EB9E5C5A13AEF4F2C30F088AFD4F6D5B556C8B9D3DD243659E1CB11077C894ED2D76B975363F7EB94C0AAB8CFE4AEE81A491309764B472BD7323D5AF6D92B7CBEC833B57CD3749C77C012157E5AD782406F786A4184756A833F2ED19E94A244C6DBB4E5B83A2F7418EAA3B86E9F7A0C +iii.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Qc7C4qq+45/A7MaAEkoPi2655cWhOu9PLDDwiK/U9tW1Vsi5090kNlnhyxEHfIlO0tdrl1Nj9+uUwKq4z+Su6BpJEwl2S0cr1zI9WvbZK3y+yDO1fNN0nHfAEhV+WteCQG94akGEdWqDPy7RnpSiRMbbtOW4Oi90GOqjuG6fegw= ;{id = 42393} +03696969096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002600000000 +iii.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:26:: +03696969096E6C6E65746C616273026E6C00002C0001000027D800160101F378328FC941C9113DB75669A5A42F6C3CF577D3 +iii.nlnetlabs.nl. 10200 IN SSHFP 1 1 F378328FC941C9113DB75669A5A42F6C3CF577D3 +03696969096E6C6E65746C616273026E6C00002C0001000027D8001602019B85990B00B395A4DF5E5FA0E29E262BDDD7A148 +iii.nlnetlabs.nl. 10200 IN SSHFP 2 1 9B85990B00B395A4DF5E5FA0E29E262BDDD7A148 +03696969096E6C6E65746C616273026E6C00002C0001000027D800160301512D31550546D1DB31D6467D4E67D87207939981 +iii.nlnetlabs.nl. 10200 IN SSHFP 3 1 512D31550546D1DB31D6467D4E67D87207939981 +03696969096E6C6E65746C616273026E6C00002F000100000E100024045F343433045F74637003696969096E6C6E65746C616273026E6C00000640000008000B +iii.nlnetlabs.nl. 3600 IN NSEC _443._tcp.iii.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +045F343433045F74637003696969096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.iii.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F74637003696969096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C000815F2EA57F744DC562F0D39C52BB01FEA8084CFE58D66AA217CE487087B930CBFDFF6108D592D1A799730FF4868237E89C8583CC17039C299B3C1155CD95D39F84A97F6B9697B43C521DED571EC27E2A67902F353F20820D6E3890E679083DB95046BF3AC50FD4FFC252A33A03B9C0295B5943F144C5373834CDD527AE377A3 +_443._tcp.iii.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CBXy6lf3RNxWLw05xSuwH+qAhM/ljWaqIXzkhwh7kwy/3/YQjVktGnmXMP9IaCN+ichYPMFwOcKZs8EVXNldOfhKl/a5aXtDxSHe1XHsJ+KmeQLzU/IIINbjiQ5nkIPblQRr86xQ/U/8JSozoDucApW1lD8UTFNzg0zdUnrjd6M= ;{id = 42393} +045F343433045F74637003696969096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0034CCFA35A40B97C564BF9E7FB96BABDB6239C6476DAF4065014CC16CCADA18C8962A48758103919E8A3E20055653731FFEFF1602C73CC9F2D43F24388789B639C4FA736327DE385C3C71C3851379EAC04B4E75DD84256A123E3BFBDD82256B9C4DEB7330725389CEFA8600CD0A30AF27D16CEDDCBE1DA08D8C4B5D9DF643615F +_443._tcp.iii.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. NMz6NaQLl8Vkv55/uWur22I5xkdtr0BlAUzBbMraGMiWKkh1gQORnoo+IAVWU3Mf/v8WAsc8yfLUPyQ4h4m2OcT6c2Mn3jhcPHHDhRN56sBLTnXdhCVqEj47+92CJWucTetzMHJTic76hgDNCjCvJ9Fs7dy+HaCNjEtdnfZDYV8= ;{id = 42393} +045F343433045F74637003696969096E6C6E65746C616273026E6C00002F000100000E10001B04696D6170096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.iii.nlnetlabs.nl. 3600 IN NSEC imap.nlnetlabs.nl. CNAME RRSIG NSEC +04696D6170096E6C6E65746C616273026E6C0000050001000027D80013046F70656E096E6C6E65746C616273026E6C00 +imap.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +04696D6170096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009A205F36B4FF9F4D3B9EDC270B1912A742CE704929A28E54CEF136E134D2C56B19C51D1C12AAB5B3A9F8DA431C7A3903A8C73FC32EA68EA64B177835E97F1B7E1FE540A2E5693864719E7F2FAEC2847EA83B3CF1FC76C1DE489DA1659767609D061A0BB8C89BCBF877EFC9A43586E66E5D5CC49BB0FCD3E59481A6FE36E6FBD3 +imap.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. miBfNrT/n007ntwnCxkSp0LOcEkpoo5UzvE24TTSxWsZxR0cEqq1s6n42kMcejkDqMc/wy6mjqZLF3g16X8bfh/lQKLlaThkcZ5/L67ChH6oOzzx/HbB3kidoWWXZ2CdBhoLuMiby/h378mkNYbmbl1cxJuw/NPllIGm/jbm+9M= ;{id = 42393} +04696D6170096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005C49D0F1A5B2449C2CD5EF06953F190BB74E8DFE6FA17DA679B66CFDD85E1A02B14F9641D0DB013033B3850958886F146B51F66B6904650817E2760941C466CA48C6743EC82C1B1F27BCF32D03BAE0A9D62AFF7401EE4D18AA4348054E235D0B815CEC9FDAB7EF943603755EA17C04FB5A98214C696634D0D5D6382AD98A1572 +imap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. XEnQ8aWyRJws1e8GlT8ZC7dOjf5voX2mebZs/dheGgKxT5ZB0NsBMDOzhQlYiG8Ua1H2a2kEZQgX4nYJQcRmykjGdD7ILBsfJ7zzLQO64KnWKv90Ae5NGKpDSAVOI10LgVzsn9q375Q2A3VeoXwE+1qYIUxpZjTQ1dY4KtmKFXI= ;{id = 42393} +04696D6170096E6C6E65746C616273026E6C00002F000100000E100025045F393933045F74637004696D6170096E6C6E65746C616273026E6C000006040000000003 +imap.nlnetlabs.nl. 3600 IN NSEC _993._tcp.imap.nlnetlabs.nl. CNAME RRSIG NSEC +045F393933045F74637004696D6170096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_993._tcp.imap.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F393933045F74637004696D6170096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0089357A96D3CFA7BB159A7A7953EFB746A200355B06F1F778EEC1050AE59D0D080802F9E2882743C3D4FABF74E1C2563E5A5CDD5569B5B06FFD0D4F975C5AA5760A8542B978E64E597EE3E572834BFD421E3C91D7813E7E342FBBE16C08AB4CB535EC9404FCD5904BA31CB4C413749D21CF43AAB3B2CB0752F2E8B82C5BB6F0AB +_993._tcp.imap.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iTV6ltPPp7sVmnp5U++3RqIANVsG8fd47sEFCuWdDQgIAvniiCdDw9T6v3ThwlY+WlzdVWm1sG/9DU+XXFqldgqFQrl45k5ZfuPlcoNL/UIePJHXgT5+NC+74WwIq0y1NeyUBPzVkEujHLTEE3SdIc9DqrOyywdS8ui4LFu28Ks= ;{id = 42393} +045F393933045F74637004696D6170096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C006938721FE0303D5611AF6C07FA8C5AE562BDE86CAEDDB63EB93862EFCBB8FD8749D682FF10E43DA18E038B8BF5D924C6AEB634D134D76D9E4BC77F52BAD2AE4E2288588381BCCED17CBE16EAC5F1160F203534FE5B5620E67FF3D005AB8A6DBCF7982864257A35A5B167C55CFF88CEBA9EA5283A1AD6CCA3698EBD43F3C8D34C +_993._tcp.imap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. aThyH+AwPVYRr2wH+oxa5WK96Gyu3bY+uThi78u4/YdJ1oL/EOQ9oY4Di4v12STGrrY00TTXbZ5Lx39SutKuTiKIWIOBvM7RfL4W6sXxFg8gNTT+W1Yg5n/z0AWrim2895goZCV6NaWxZ8Vc/4jOup6lKDoa1syjaY69Q/PI00w= ;{id = 42393} +045F393933045F74637004696D6170096E6C6E65746C616273026E6C00002F000100000E10001C056970646E73096E6C6E65746C616273026E6C000006040000000003 +_993._tcp.imap.nlnetlabs.nl. 3600 IN NSEC ipdns.nlnetlabs.nl. CNAME RRSIG NSEC +056970646E73096E6C6E65746C616273026E6C0000020001000027D80016076D65726D616964096E6C6E65746C616273026E6C00 +ipdns.nlnetlabs.nl. 10200 IN NS mermaid.nlnetlabs.nl. +056970646E73096E6C6E65746C616273026E6C00002F000100000E100028055F35323232045F746370066A6162626572096E6C6E65746C616273026E6C000006200000000003 +ipdns.nlnetlabs.nl. 3600 IN NSEC _5222._tcp.jabber.nlnetlabs.nl. NS RRSIG NSEC +056970646E73096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00432F4A0B9BE3F7D058BDE02F6E6A3531C38CB1330D6C59D904A9B5B6F420EFDFC75799A34B4774F6A0F49B9023D3765BE9256454B2053EF3A0CEC850F8C65610C8D85BBC88C7F0EC13CDD3BEA2507AEFEEBCB86C4C2003C97008F5BE1F113C02870BD567F613816E2F602CF25C2842E7F449A2281344D9981C0C0BADB40A3739 +ipdns.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Qy9KC5vj99BYveAvbmo1McOMsTMNbFnZBKm1tvQg79/HV5mjS0d09qD0m5Aj03Zb6SVkVLIFPvOgzshQ+MZWEMjYW7yIx/DsE83TvqJQeu/uvLhsTCADyXAI9b4fETwChwvVZ/YTgW4vYCzyXChC5/RJoigTRNmYHAwLrbQKNzk= ;{id = 42393} +055F35323232045F746370066A6162626572096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_5222._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +055F35323232045F746370066A6162626572096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009EDB5269A813F5BC66E191794CB72D0A3558E7645094435FD9216B8D3DB999A377DF1DA37D44C101882A8D62C943F815E94C3E99F25F2D943290551E3BD24EAF08C151A8187006BCE55730FE09A33565B46224231B000679086E487F9501475BDFB0E2D3FE895ED6AA1603E3D8E47446F8AB7C1D7A3BE39835EA7E62E6580E84 +_5222._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nttSaagT9bxm4ZF5TLctCjVY52RQlENf2SFrjT25maN33x2jfUTBAYgqjWLJQ/gV6Uw+mfJfLZQykFUeO9JOrwjBUagYcAa85Vcw/gmjNWW0YiQjGwAGeQhuSH+VAUdb37Di0/6JXtaqFgPj2OR0RvirfB16O+OYNep+YuZYDoQ= ;{id = 42393} +055F35323232045F746370066A6162626572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0042C473E0207E9D3E8FC2C30DB9A6BD625C067A9A7598181D41E8DD2172220C061AB3AF442738E617D748CC26CC836C63B428F40FE34501D81736571538712CD1AFDA4817263C157934961419F10531E8E0E28667B75A687E1FDD985F8FAF9CB6B108835B227DD134D62ED1301A26D9004742199016C78FED6DA91DEBBE5F7F8B +_5222._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. QsRz4CB+nT6PwsMNuaa9YlwGepp1mBgdQejdIXIiDAYas69EJzjmF9dIzCbMg2xjtCj0D+NFAdgXNlcVOHEs0a/aSBcmPBV5NJYUGfEFMejg4oZnt1pofh/dmF+Pr5y2sQiDWyJ90TTWLtEwGibZAEdCGZAWx4/tbakd675ff4s= ;{id = 42393} +055F35323232045F746370066A6162626572096E6C6E65746C616273026E6C00002F000100000E100028055F35323233045F746370066A6162626572096E6C6E65746C616273026E6C000006040000000003 +_5222._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5223._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +055F35323233045F746370066A6162626572096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_5223._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +055F35323233045F746370066A6162626572096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0015CD894A7634EAF2525BEEA2FDB14D08D7BE56B0D0170A7904B132C2568DC44DC4056BAC8DCBD35235B6E8343675F64DED1DDC6F6D5583A0548B6EAD7157FA3494F301A9F4E0FFB4B7811D7F200C42513DDAA60C788492C85B6E620666DCC225546EC747D272D173A0B1992A41270D3FDB894C525E8E2DB2319672B4D05D7A31 +_5223._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fc2JSnY06vJSW+6i/bFNCNe+VrDQFwp5BLEywlaNxE3EBWusjcvTUjW26DQ2dfZN7R3cb21Vg6BUi26tcVf6NJTzAan04P+0t4EdfyAMQlE92qYMeISSyFtuYgZm3MIlVG7HR9Jy0XOgsZkqQScNP9uJTFJeji2yMZZytNBdejE= ;{id = 42393} +055F35323233045F746370066A6162626572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002334DA12FB777FA8C06CCF27A875EC6074A91EC1E49BDC7286554724A39FC9187E1CEB60AD0B90C4627F0722788D4A1FAC6A1D8C3A7B376B40F21B36EF03215DA60F4CF82D6D443636B896ABAC1A13071A3FE4F8842A57C18E87E590217AF31611151D336268BFC6F1DAED441037637A781DBC3D6B4F3644A0E7BC6F91F0634E +_5223._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. IzTaEvt3f6jAbM8nqHXsYHSpHsHkm9xyhlVHJKOfyRh+HOtgrQuQxGJ/ByJ4jUofrGodjDp7N2tA8hs27wMhXaYPTPgtbUQ2NriWq6waEwcaP+T4hCpXwY6H5ZAhevMWERUdM2Jov8bx2u1EEDdjengdvD1rTzZEoOe8b5HwY04= ;{id = 42393} +055F35323233045F746370066A6162626572096E6C6E65746C616273026E6C00002F000100000E100028055F35323639045F746370066A6162626572096E6C6E65746C616273026E6C000006040000000003 +_5223._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5269._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +055F35323639045F746370066A6162626572096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_5269._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +055F35323639045F746370066A6162626572096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0037F7F05CC4FF9601C684D528E790E0583BA42260470F176A04A09AB51AD251A800966D50C92D980A662FC6320D3423E7A8623F9FD3E49A8E9C2A5AF68783D2E7606968BBABC0C6D0B6AA81B9402ED1741B8D149572DA3FE8B2AFED56172B2E7AE073C4A42AED54817C50989208193E12E6ADF6FD44E156417F892981C12A0ECB +_5269._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. N/fwXMT/lgHGhNUo55DgWDukImBHDxdqBKCatRrSUagAlm1QyS2YCmYvxjINNCPnqGI/n9Pkmo6cKlr2h4PS52BpaLurwMbQtqqBuUAu0XQbjRSVcto/6LKv7VYXKy564HPEpCrtVIF8UJiSCBk+Euat9v1E4VZBf4kpgcEqDss= ;{id = 42393} +055F35323639045F746370066A6162626572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00AFC6311134827FDA41941B5D4FC0B4953BA097BE5D94950FDCB3B3CD5781301208517E5D73B1AEE8ED50055F0ED4634E1C6DE248C5EE05E52AF0F1833FE4196AF0254CF50719E1FF9B62734ED082F45080E7D6FCF3153523FC11F393D768FC08BE673A051BFD58579F634E520EDF2A355ABDED8B869C43A2F242858491BAA15D +_5269._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. r8YxETSCf9pBlBtdT8C0lTugl75dlJUP3LOzzVeBMBIIUX5dc7Gu6O1QBV8O1GNOHG3iSMXuBeUq8PGDP+QZavAlTPUHGeH/m2JzTtCC9FCA59b88xU1I/wR85PXaPwIvmc6BRv9WFefY05SDt8qNVq97YuGnEOi8kKFhJG6oV0= ;{id = 42393} +055F35323639045F746370066A6162626572096E6C6E65746C616273026E6C00002F000100000E100028055F35323730045F746370066A6162626572096E6C6E65746C616273026E6C000006040000000003 +_5269._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC _5270._tcp.jabber.nlnetlabs.nl. CNAME RRSIG NSEC +055F35323730045F746370066A6162626572096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_5270._tcp.jabber.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +055F35323730045F746370066A6162626572096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005432D7696AEDBC1C6F32DDD232B12901C87966EC8CE45463B67BB3D0D455D9DCB6A7BC31A4EBE017A12EEFC5E489FE1202E3F6CBFB5B36CE656180962B65E596265532F00C678EB2A79CD4B181E310781E252DEA5CD61FC6C212E437FA980A44F4983F62B67BB5870BA3ECCDDACE78726C8E19B9FDEC473540E5DF32BC932684 +_5270._tcp.jabber.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VDLXaWrtvBxvMt3SMrEpAch5ZuyM5FRjtnuz0NRV2dy2p7wxpOvgF6Eu78Xkif4SAuP2y/tbNs5lYYCWK2XlliZVMvAMZ46yp5zUsYHjEHgeJS3qXNYfxsIS5Df6mApE9Jg/YrZ7tYcLo+zN2s54cmyOGbn97Ec1QOXfMryTJoQ= ;{id = 42393} +055F35323730045F746370066A6162626572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0054CD7B53BEAF6661E5808B5799B20B43C1015B5D2394BECDC014C08A7348A2DCD279CABC0DCC50C63D7EA424B3DD536361982F5B11CA09FDECD7E7AA23B54F152D04460AD910F3B1CF8A2978C2908F43C992E4FFA007C2864BF20D71D09EC33E9A75C6853742774D05FCBC76D24F46852FEEDE42D7576CAD029AD333B3936B83 +_5270._tcp.jabber.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VM17U76vZmHlgItXmbILQ8EBW10jlL7NwBTAinNIotzSecq8DcxQxj1+pCSz3VNjYZgvWxHKCf3s1+eqI7VPFS0ERgrZEPOxz4opeMKQj0PJkuT/oAfChkvyDXHQnsM+mnXGhTdCd00F/Lx20k9GhS/u3kLXV2ytAprTM7OTa4M= ;{id = 42393} +055F35323730045F746370066A6162626572096E6C6E65746C616273026E6C00002F000100000E10001D066B616D65656C096E6C6E65746C616273026E6C000006040000000003 +_5270._tcp.jabber.nlnetlabs.nl. 3600 IN NSEC kameel.nlnetlabs.nl. CNAME RRSIG NSEC +066B616D65656C096E6C6E65746C616273026E6C0000010001000027D80004D59AE08F +kameel.nlnetlabs.nl. 10200 IN A 213.154.224.143 +066B616D65656C096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009B6DCB5B672F13C920B23B4D193166188D053F669AA282EE9A590A6F49BF5C41E841A849BA233B43A8ED96FB64793409C392F840C5CF1B9BB9F1FA267CD31DFD9E1097D8DCA186E535E8823789E1BA705D01D292C6D8F148EB9785708C43AE784E3BCAE030FC3E4167FFDF330505EB7F47F0E5C9DC44B210FEFE1C26D2A85F51 +kameel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m23LW2cvE8kgsjtNGTFmGI0FP2aaooLumlkKb0m/XEHoQahJuiM7Q6jtlvtkeTQJw5L4QMXPG5u58fomfNMd/Z4Ql9jcoYblNeiCN4nhunBdAdKSxtjxSOuXhXCMQ654TjvK4DD8PkFn/98zBQXrf0fw5cncRLIQ/v4cJtKoX1E= ;{id = 42393} +066B616D65656C096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006B87FF8142B438E453BB349AAA2C69FB684464A1AC4A76BE590375B7ED31DA2DA18F4B19E0D0F81F8958CA1BA6F7E8B2C08F844DF36C6A596672D978B76F4977204D8A8E14FD7B4EE0DC6B28E1FB686A50852E0387A2082C9737B921078FC764019E5FDEBE6921F9B3772F7DEEFA0712B94125971CA4D74CC4C101EC81412A58 +kameel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a4f/gUK0OORTuzSaqixp+2hEZKGsSna+WQN1t+0x2i2hj0sZ4ND4H4lYyhum9+iywI+ETfNsallmctl4t29JdyBNio4U/XtO4NxrKOH7aGpQhS4Dh6IILJc3uSEHj8dkAZ5f3r5pIfmzdy997voHErlBJZccpNdMxMEB7IFBKlg= ;{id = 42393} +066B616D65656C096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003B728FE6A735A6B5CA96023F06FAE17D0C4C33DD3AACE66CA3C9893FAEEDA0EF93970ED3EAE3C02F49A5CD21D918219219428156509F45A921B3F4591397B4B8082972E369B88299C20580DA0B39D6F25CC376F188575089B37A4586B000223B2A16736DD56F782131CB890720B262020FD4B6E7FCC6139740287EAB2F802AB4 +kameel.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O3KP5qc1prXKlgI/BvrhfQxMM906rOZso8mJP67toO+Tlw7T6uPAL0mlzSHZGCGSGUKBVlCfRakhs/RZE5e0uAgpcuNpuIKZwgWA2gs51vJcw3bxiFdQibN6RYawACI7KhZzbdVveCExy4kHILJiAg/Utuf8xhOXQCh+qy+AKrQ= ;{id = 42393} +066B616D65656C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009BD718396D87CF5909F1C28EED15851C7DC57D3B31C632E6A9410E32FD8996E8082B3E782DF7921DE861637311288D90D3B4EE972B8F5A6BAC48818DFD7E12568CF5682F50857A8FA5C03E6B0660365A14AFF4CEEECD31840C7D22C5AEB6BB369197792A1637C48FB2ADFABD44BA275B80D5604D14B3D72361AB1FB45096C188 +kameel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m9cYOW2Hz1kJ8cKO7RWFHH3FfTsxxjLmqUEOMv2JlugIKz54LfeSHehhY3MRKI2Q07TulyuPWmusSIGN/X4SVoz1aC9QhXqPpcA+awZgNloUr/TO7s0xhAx9IsWutrs2kZd5KhY3xI+yrfq9RLonW4DVYE0Us9cjYasftFCWwYg= ;{id = 42393} +066B616D65656C096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002500000000 +kameel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:25:: +066B616D65656C096E6C6E65746C616273026E6C00002C0001000027D800160101A5322E0D8C10AD454A33C132FA158EFCBE9F2C49 +kameel.nlnetlabs.nl. 10200 IN SSHFP 1 1 A5322E0D8C10AD454A33C132FA158EFCBE9F2C49 +066B616D65656C096E6C6E65746C616273026E6C00002C0001000027D8001602017D2CBE4FCEE2724816E33311313EE64410D1A6E2 +kameel.nlnetlabs.nl. 10200 IN SSHFP 2 1 7D2CBE4FCEE2724816E33311313EE64410D1A6E2 +066B616D65656C096E6C6E65746C616273026E6C00002C0001000027D8001603010F3CD2F5583C838A02EA88DA659F57C9A5C6CE34 +kameel.nlnetlabs.nl. 10200 IN SSHFP 3 1 0F3CD2F5583C838A02EA88DA659F57C9A5C6CE34 +066B616D65656C096E6C6E65746C616273026E6C00002F000100000E10001B046B65726E096E6C6E65746C616273026E6C00000640000008000B +kameel.nlnetlabs.nl. 3600 IN NSEC kern.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +046B65726E096E6C6E65746C616273026E6C0000010001000027D80004D59AE01E +kern.nlnetlabs.nl. 10200 IN A 213.154.224.30 +046B65726E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C0AE24FB7525242A9E1B6354777C0D3C52DF22CBD47439BDDD9099C0970EFB4CB95FDF9D9F04DE06CD536C2EB8D6C6EF5F5AD22B8E309D0F05A61160A00C8145AC6BD33EF5FF780FD062D4CE69889CAD696D344F166B7A33D0AE3EA279C04B702493BC85FCB48FAE39F845D650D227A5D4FBC6EF1AD9BE974CF54D0D2FFD2883 +kern.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wK4k+3UlJCqeG2NUd3wNPFLfIsvUdDm93ZCZwJcO+0y5X9+dnwTeBs1TbC641sbvX1rSK44wnQ8FphFgoAyBRaxr0z71/3gP0GLUzmmInK1pbTRPFmt6M9CuPqJ5wEtwJJO8hfy0j645+EXWUNInpdT7xu8a2b6XTPVNDS/9KIM= ;{id = 42393} +046B65726E096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001C81EE7DBA740DE2ECA7A0DD785A3DDDCD1BE75DE1420F6833C38D6DFFECA5064033FF8859C730471171533FAFD93E18D67F4FEE7A4DFAECF6FF606FC401B7D10E108E4019EC41AFE65A02AE0F04DBF0F52FACAF10ED1879CAE2F538636C361F409E1058A1BF5B49D8E32427C107CE5E438DB43D59506DA8E9BB247025E19817 +kern.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HIHufbp0DeLsp6DdeFo93c0b513hQg9oM8ONbf/spQZAM/+IWccwRxFxUz+v2T4Y1n9P7npN+uz2/2BvxAG30Q4QjkAZ7EGv5loCrg8E2/D1L6yvEO0Yecri9ThjbDYfQJ4QWKG/W0nY4yQnwQfOXkONtD1ZUG2o6bskcCXhmBc= ;{id = 42393} +046B65726E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BA1B52C09462F76278E1A89C0E14F3E98E320B62592DEDE8ECAFE6AE5B0CD680F7CE54E1D85319A5C795E2604EDDB83C0A118BD60B447DFAD328C323A89866717CB47D2F542917A5187A3D04C33C16878B7095B78628BF44A0F94C5D8B19BA2BDB535447CA415E7B0BDACCF137A8B44819C96B068F2A3353F99DB9D04FEA40CB +kern.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uhtSwJRi92J44aicDhTz6Y4yC2JZLe3o7K/mrlsM1oD3zlTh2FMZpceV4mBO3bg8ChGL1gtEffrTKMMjqJhmcXy0fS9UKRelGHo9BMM8FoeLcJW3hii/RKD5TF2LGbor21NUR8pBXnsL2szxN6i0SBnJawaPKjNT+Z250E/qQMs= ;{id = 42393} +046B65726E096E6C6E65746C616273026E6C00002C0001000027D800160101507A065F7173879238F947D09904D50F30F5E864 +kern.nlnetlabs.nl. 10200 IN SSHFP 1 1 507A065F7173879238F947D09904D50F30F5E864 +046B65726E096E6C6E65746C616273026E6C00002C0001000027D80016020185F482729396EEF58401030BFC128A5BE8225146 +kern.nlnetlabs.nl. 10200 IN SSHFP 2 1 85F482729396EEF58401030BFC128A5BE8225146 +046B65726E096E6C6E65746C616273026E6C00002F000100000E10001B046B697769096E6C6E65746C616273026E6C00000640000000000B +kern.nlnetlabs.nl. 3600 IN NSEC kiwi.nlnetlabs.nl. A SSHFP RRSIG NSEC +046B697769096E6C6E65746C616273026E6C0000010001000027D80004D59AE01A +kiwi.nlnetlabs.nl. 10200 IN A 213.154.224.26 +046B697769096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A80B01A120600F939B50E186F50EA7ECB8FAB2A975F1B3E806B1EEF01F39CA15D24DB1BD8C2565312B880FCD6BFF4419F2D0D53222D04A79502AA941E418C134ADCF81591CF63B6A41C09B0B6D47839BA56FD876AD0A5EFE5CCF2C158A9D8C01800998DFF1112F082643BDD1BA59C0EAD0E5458F4AE8E6DBD8C391C0D1E181DA +kiwi.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qAsBoSBgD5ObUOGG9Q6n7Lj6sql18bPoBrHu8B85yhXSTbG9jCVlMSuID81r/0QZ8tDVMiLQSnlQKqlB5BjBNK3PgVkc9jtqQcCbC21Hg5ulb9h2rQpe/lzPLBWKnYwBgAmY3/ERLwgmQ73RulnA6tDlRY9K6Obb2MORwNHhgdo= ;{id = 42393} +046B697769096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007CBBAD2FAEFF254F023B98FF01A32D70339905EF772948B8D00C920BA7FE33161F2D3891F828736156C1B53A828F3E893572836F2B7C42B9D3820D67C8393D2F5524AE5196C649E6C65673FCDE29FB30C8A6DFCCD9D158E345B024519C9476F482BA44FDEB205C2A20187F0C809C2B33F43068B7D26D0FA527C296FBFB3C3A96 +kiwi.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fLutL67/JU8CO5j/AaMtcDOZBe93KUi40AySC6f+MxYfLTiR+ChzYVbBtTqCjz6JNXKDbyt8QrnTgg1nyDk9L1UkrlGWxknmxlZz/N4p+zDIpt/M2dFY40WwJFGclHb0grpE/esgXCogGH8MgJwrM/QwaLfSbQ+lJ8KW+/s8OpY= ;{id = 42393} +046B697769096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006B28D83D009A180C4030E17FC85E1419C3551634C7F04DF47E923C90A3F67CAF32E97ECF1A3FEF31D8DDE04327979165D5C926BC333A203D9CF1148832F43F0523829DDF897E23CA2B679B2434AD050B725D734BCC142D3FE20EA5AA56F761AC4842C5A6D10ABC07D34E8A0452743EE06A18CFDD38C1D672A28C9284A36219C7 +kiwi.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ayjYPQCaGAxAMOF/yF4UGcNVFjTH8E30fpI8kKP2fK8y6X7PGj/vMdjd4EMnl5Fl1ckmvDM6ID2c8RSIMvQ/BSOCnd+JfiPKK2ebJDStBQtyXXNLzBQtP+IOpapW92GsSELFptEKvAfTTooEUnQ+4GoYz904wdZyooyShKNiGcc= ;{id = 42393} +046B697769096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C003EF7C2822B262ACAA93C756320AE82AC2F02AEC61127524720349523CA3707C0039527E47E1868CDA9BF1D1C57FBA0BD95A2837E1E29073EDC37F7A559155A0816C922EBF103309A8E942EB55950596DCB3B969C5FBB61EB6B74328E37FD4E6882FC95A7ED17951E3B96E60138DCFC6681FAFE18F4948774521D5E5C53F0E4BF +kiwi.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. PvfCgismKsqpPHVjIK6CrC8CrsYRJ1JHIDSVI8o3B8ADlSfkfhhozam/HRxX+6C9laKDfh4pBz7cN/elWRVaCBbJIuvxAzCajpQutVlQWW3LO5acX7th62t0Mo43/U5ogvyVp+0XlR47luYBONz8ZoH6/hj0lId0Uh1eXFPw5L8= ;{id = 42393} +046B697769096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001020423FFFE5E33E0 +kiwi.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:204:23ff:fe5e:33e0 +046B697769096E6C6E65746C616273026E6C00002C0001000027D800160101BEA78730A01455690B08C58A05F401CB8C6AE160 +kiwi.nlnetlabs.nl. 10200 IN SSHFP 1 1 BEA78730A01455690B08C58A05F401CB8C6AE160 +046B697769096E6C6E65746C616273026E6C00002C0001000027D800160201582E0A63857B1C98C62C1378C760FF821E98877D +kiwi.nlnetlabs.nl. 10200 IN SSHFP 2 1 582E0A63857B1C98C62C1378C760FF821E98877D +046B697769096E6C6E65746C616273026E6C00002F000100000E10001D066C6162736170096E6C6E65746C616273026E6C00000640000008000B +kiwi.nlnetlabs.nl. 3600 IN NSEC labsap.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +066C6162736170096E6C6E65746C616273026E6C0000010001000027D80004D59AE03F +labsap.nlnetlabs.nl. 10200 IN A 213.154.224.63 +066C6162736170096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C3BD643C460D981A0FEB442B7534EFC3C78A1A6B202D0DAE340BF0B5F9A243DA1E589BA4CF0340F1A9A392B76D7C0532B34B6024FC9CEA13279138BB776F549BE9DADD26154AAC19D07086AA102CA143CE4BCA62B185F51B0DFC33085B5634DC47F78B3055CCC6677F550B8CA3FA1F05224F5E803C3025455AB9065F65D5B3E1 +labsap.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. w71kPEYNmBoP60QrdTTvw8eKGmsgLQ2uNAvwtfmiQ9oeWJukzwNA8amjkrdtfAUys0tgJPyc6hMnkTi7d29Um+na3SYVSqwZ0HCGqhAsoUPOS8pisYX1Gw38MwhbVjTcR/eLMFXMxmd/VQuMo/ofBSJPXoA8MCVFWrkGX2XVs+E= ;{id = 42393} +066C6162736170096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005DCC32FD111302888A423B34A9DE45E2A1D592F7CDA2A5ADA0634EAD2823BEAE69AA03122FAA777C8417D4CA0061A5B6CC71AF2A27DCA7AA280847AED1235611A975FF56B86CF63CC2FAE9ECBBDA19A2DF1970D112CDBFB9E9B8BB2A56894BCEBE63092221F482A7AFC05A0175EF298CAE3248F8774A203FF87DBE652CD6B544 +labsap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Xcwy/RETAoiKQjs0qd5F4qHVkvfNoqWtoGNOrSgjvq5pqgMSL6p3fIQX1MoAYaW2zHGvKifcp6ooCEeu0SNWEal1/1a4bPY8wvrp7LvaGaLfGXDREs2/uem4uypWiUvOvmMJIiH0gqevwFoBde8pjK4ySPh3SiA/+H2+ZSzWtUQ= ;{id = 42393} +066C6162736170096E6C6E65746C616273026E6C00002F000100000E100020096C657669617468616E096E6C6E65746C616273026E6C000006400000000003 +labsap.nlnetlabs.nl. 3600 IN NSEC leviathan.nlnetlabs.nl. A RRSIG NSEC +096C657669617468616E096E6C6E65746C616273026E6C0000010001000027D80004D59AE015 +leviathan.nlnetlabs.nl. 10200 IN A 213.154.224.21 +096C657669617468616E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001195AFB102CB9BF7D5D5D2BEC91E390613F98A71A4938DC9CE1753A7C8C5F0D32C14F3E424535C4A97F7FEFDA866881639086747A800F35F9BBDFE25A35C54AB2FD11B04C48D0016CAE1C13D417FE3CC630ABD95D87AE3122564B8079CBDB8AF31DA9C8CD1AC5F7703439744EE32425EB9C1F307F017CE59728768FB7F99AC13 +leviathan.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EZWvsQLLm/fV1dK+yR45BhP5inGkk43JzhdTp8jF8NMsFPPkJFNcSpf3/v2oZogWOQhnR6gA81+bvf4lo1xUqy/RGwTEjQAWyuHBPUF/48xjCr2V2HrjEiVkuAecvbivMdqcjNGsX3cDQ5dE7jJCXrnB8wfwF85Zcodo+3+ZrBM= ;{id = 42393} +096C657669617468616E096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009BBB69BB0FAD43D25FE1BD76C76D29DE6376F809586CE5E238F41D8D4D2945182FE6EE53A8B28EE933551BBBD09F1246CB4DE2727E8788497342521AC6D7FB0FDD73FC3231050A5EF6C421B2A0EA194B60BB33735B7EAAF8086F915F7C2A197E3E3A25D7FDA828D6DB07203E17504D5270FAA60ED44CBA882CD536084D3996ED +leviathan.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. m7tpuw+tQ9Jf4b12x20p3mN2+AlYbOXiOPQdjU0pRRgv5u5TqLKO6TNVG7vQnxJGy03icn6HiElzQlIaxtf7D91z/DIxBQpe9sQhsqDqGUtguzNzW36q+AhvkV98Khl+Pjol1/2oKNbbByA+F1BNUnD6pg7UTLqILNU2CE05lu0= ;{id = 42393} +096C657669617468616E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BC01728ED11C3943FAA65FFF9CFCB1396C5641105A806BF81879A62D06A9F4AA66393634EA0EE47E987B063E3E5D2B20A352D55D90AFD30013DF22181D2097A10F2272CFDFC9CF7712A8D62526095D46E410AB383E10A415B4C56E58785220629D8A4A785BAD84C7F4F7C45EC9517601D78154497EEB4D0DBB130AD63AE69CCA +leviathan.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. vAFyjtEcOUP6pl//nPyxOWxWQRBagGv4GHmmLQap9KpmOTY06g7kfph7Bj4+XSsgo1LVXZCv0wAT3yIYHSCXoQ8ics/fyc93EqjWJSYJXUbkEKs4PhCkFbTFblh4UiBinYpKeFuthMf098ReyVF2AdeBVEl+600NuxMK1jrmnMo= ;{id = 42393} +096C657669617468616E096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFED204DB +leviathan.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fed2:4db +096C657669617468616E096E6C6E65746C616273026E6C00002F000100000E100020096C6F63616C686F7374096E6C6E65746C616273026E6C000006400000080003 +leviathan.nlnetlabs.nl. 3600 IN NSEC localhost.nlnetlabs.nl. A AAAA RRSIG NSEC +096C6F63616C686F7374096E6C6E65746C616273026E6C0000010001000027D800047F000001 +localhost.nlnetlabs.nl. 10200 IN A 127.0.0.1 +096C6F63616C686F7374096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B790B52BA78861A3232CDC8BEC03043F3E27C8E1C8D8FC5573A6548F069A41779D0468CDDD79280264D4F0B03E3854F35CC6DC5644C6B39E6263670A7338F5C8583963C1517B5E87C872409AC96CD7F6C4D978977A3B3FBE37DB061863C67431D23246D05983843F053EE6D779364FB58BF915F9AF8B468BF8B21FE282B4DCF6 +localhost.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t5C1K6eIYaMjLNyL7AMEPz4nyOHI2PxVc6ZUjwaaQXedBGjN3XkoAmTU8LA+OFTzXMbcVkTGs55iY2cKczj1yFg5Y8FRe16HyHJAmsls1/bE2XiXejs/vjfbBhhjxnQx0jJG0FmDhD8FPubXeTZPtYv5Ffmvi0aL+LIf4oK03PY= ;{id = 42393} +096C6F63616C686F7374096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C006789CB9F3DFAC59E901F755C27C504F41DA2942D44734C924250F0EDAF55608303FAC9B2C538A5F2BAC8E1061CCCEFBE86D39FF9F09EB2D2DEC1E7FF1E34DCFD26C1B11AEE2E89DA6763732283DBBF3C34B69D0C98D08FB96B043E130610746A2B63F9AD0D75CD1FE8D27C7ED61746F4A876DCFF40D4AE7CECC57DD40FB40054 +localhost.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Z4nLnz36xZ6QH3VcJ8UE9B2ilC1Ec0ySQlDw7a9VYIMD+smyxTil8rrI4QYczO++htOf+fCestLewef/HjTc/SbBsRruLonaZ2NzIoPbvzw0tp0MmNCPuWsEPhMGEHRqK2P5rQ11zR/o0nx+1hdG9Kh23P9A1K587MV91A+0AFQ= ;{id = 42393} +096C6F63616C686F7374096E6C6E65746C616273026E6C00002F000100000E10001E076C6F67686F7374096E6C6E65746C616273026E6C000006400000000003 +localhost.nlnetlabs.nl. 3600 IN NSEC loghost.nlnetlabs.nl. A RRSIG NSEC +076C6F67686F7374096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +loghost.nlnetlabs.nl. 10200 IN A 213.154.224.1 +076C6F67686F7374096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001902AC4BBA80F7706DED54EF6D868002B2613723578E020C74221975323AEDF7D8DD32DE26F0E84B654603DDF845BBF629C789C181A8EACEFF29413722DDC11ADA61DD0449F12BD58C9B8071BE432405E48E48D78EDA2A8EC2F8659B7DBD451161BF28BA73E6BC375E78C51071F3BCA973EA5C7C926AE0C369B56B28D13AA5A0 +loghost.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GQKsS7qA93Bt7VTvbYaAArJhNyNXjgIMdCIZdTI67ffY3TLeJvDoS2VGA934Rbv2KceJwYGo6s7/KUE3It3BGtph3QRJ8SvVjJuAcb5DJAXkjkjXjtoqjsL4ZZt9vUURYb8ounPmvDdeeMUQcfO8qXPqXHySauDDabVrKNE6paA= ;{id = 42393} +076C6F67686F7374096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C6763D59F01C5BF1666601898996AF042838C3704DF33965CEA8DA3ED1BB04943F6CE24C49BEE98EDED92473E57E976EB10E84CC2A5CB295DC346B26A3E13B9A6FCBB1EEC403A2B8221DBCD9E988C05B1CF0750C1C30439B58830207E85B674E675F542B27923CBD33CD3215F3FE104F4B9581F006CE287CEE4A3F9542EDC0B7 +loghost.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xnY9WfAcW/FmZgGJiZavBCg4w3BN8zllzqjaPtG7BJQ/bOJMSb7pjt7ZJHPlfpdusQ6EzCpcspXcNGsmo+E7mm/Lse7EA6K4Ih282emIwFsc8HUMHDBDm1iDAgfoW2dOZ19UKyeSPL0zzTIV8/4QT0uVgfAGzih87ko/lULtwLc= ;{id = 42393} +076C6F67686F7374096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0069FF5CB6CA9B6612FEA33238782F5588B4389C96F72DA14285253E815EA753D8E5363D50EF25CFAA52314BD049081572EFF26636C7AC4271A2E6C151218A5561EF979D4299A60CF48CBF2DE099FFAD7AC15A6BBDA393BBABAF6F7D32726BD99FF815CC62A3A88309550E0F6D8DD6350830DA5E7EDC4AED401F51D91C67CE2309 +loghost.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. af9ctsqbZhL+ozI4eC9ViLQ4nJb3LaFChSU+gV6nU9jlNj1Q7yXPqlIxS9BJCBVy7/JmNsesQnGi5sFRIYpVYe+XnUKZpgz0jL8t4Jn/rXrBWmu9o5O7q69vfTJya9mf+BXMYqOogwlVDg9tjdY1CDDaXn7cSu1AH1HZHGfOIwk= ;{id = 42393} +076C6F67686F7374096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +loghost.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +076C6F67686F7374096E6C6E65746C616273026E6C00002F000100000E10001D066C756D6D656C096E6C6E65746C616273026E6C000006400000080003 +loghost.nlnetlabs.nl. 3600 IN NSEC lummel.nlnetlabs.nl. A AAAA RRSIG NSEC +066C756D6D656C096E6C6E65746C616273026E6C0000010001000027D80004D59AE021 +lummel.nlnetlabs.nl. 10200 IN A 213.154.224.33 +066C756D6D656C096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003E2D8D94859951CE203DA9E3715EA06F7ED5F273759C4E2190E757F3005DDBF56479FCB4B01677D285A2893B010AF920E40073F4763D27AB3BF69B64BF85ECB30E0D8A7F49091A852DC9F015B9D5365BE271792A719B0551C471F0BDC3FC0BA20B283AE9D059F1AB3D53FA2F9FC0F14576A899937D5290BBED489037B1521214 +lummel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Pi2NlIWZUc4gPanjcV6gb37V8nN1nE4hkOdX8wBd2/Vkefy0sBZ30oWiiTsBCvkg5ABz9HY9J6s79ptkv4Xssw4Nin9JCRqFLcnwFbnVNlvicXkqcZsFUcRx8L3D/AuiCyg66dBZ8as9U/ovn8DxRXaomZN9UpC77UiQN7FSEhQ= ;{id = 42393} +066C756D6D656C096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00546F7F8B520D8A31E1DD81B677136BFD09C36B8CB656837FB44656FD5F8FCA50AACC772C2A38E49837B048251671F0F7DB3AE03C19B749C8E390A9900142CB041AE390F8DA2BB18EAA205CE8B11EB4512D519111D36286A275C95F2A7763B90C3253039542F6D7DC5E2998F94B75A6B65CE48D6A07B67F1D53A27B0AA40B69BE +lummel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VG9/i1INijHh3YG2dxNr/QnDa4y2VoN/tEZW/V+PylCqzHcsKjjkmDewSCUWcfD32zrgPBm3ScjjkKmQAULLBBrjkPjaK7GOqiBc6LEetFEtUZER02KGonXJXyp3Y7kMMlMDlUL219xeKZj5S3WmtlzkjWoHtn8dU6J7CqQLab4= ;{id = 42393} +066C756D6D656C096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0095F635DC25E6E33ED425A154B1B0FE6D70C6E8E685731AC23AA9DE46D7FCAC1DE7F284620D1AABA935FAE6F88C8A584BD8BB0FC89C59D7505457AF0D4F31D964D7FD9832BA34C5830BE041DA715FAF4F3F35402DAFD06175B0E429F78FAABCF5B50E0090428F37D7D130E68D75E45DDFEC07C4CEEB5B46C6149297412A3871D8 +lummel.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. lfY13CXm4z7UJaFUsbD+bXDG6OaFcxrCOqneRtf8rB3n8oRiDRqrqTX65viMilhL2LsPyJxZ11BUV68NTzHZZNf9mDK6NMWDC+BB2nFfr08/NUAtr9BhdbDkKfePqrz1tQ4AkEKPN9fRMOaNdeRd3+wHxM7rW0bGFJKXQSo4cdg= ;{id = 42393} +066C756D6D656C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00AA9F59964955B9D60C580CAB51E8F4ED315AA3FD17534F333A5DB6A664855C89CF30FAA7F3D177EA796125524240648AFDC93A70058037DF3AB27BC964DFE1C510DB4D2B4C77823B42C90AB3083C206F928D8A856DB583ABC60335D4DF28045805961B5BD22D94D6E9A7BB8B63B59C0B79C710D04C8414616E4820F178D83E85 +lummel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. qp9ZlklVudYMWAyrUej07TFao/0XU08zOl22pmSFXInPMPqn89F36nlhJVJCQGSK/ck6cAWAN986snvJZN/hxRDbTStMd4I7QskKswg8IG+SjYqFbbWDq8YDNdTfKARYBZYbW9ItlNbpp7uLY7WcC3nHENBMhBRhbkgg8XjYPoU= ;{id = 42393} +066C756D6D656C096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021372FFFEFB2434 +lummel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:213:72ff:fefb:2434 +066C756D6D656C096E6C6E65746C616273026E6C00002C0001000027D800160101714D9E0C26DC8A36D6BC9329DF9FBA734C80E059 +lummel.nlnetlabs.nl. 10200 IN SSHFP 1 1 714D9E0C26DC8A36D6BC9329DF9FBA734C80E059 +066C756D6D656C096E6C6E65746C616273026E6C00002C0001000027D80016020116A961CD6C8603459C1916C0A5A7A0318485AB69 +lummel.nlnetlabs.nl. 10200 IN SSHFP 2 1 16A961CD6C8603459C1916C0A5A7A0318485AB69 +066C756D6D656C096E6C6E65746C616273026E6C00002C0001000027D80016030143707AEE3D74D8B8D292CD8556B32FEE2D43C805 +lummel.nlnetlabs.nl. 10200 IN SSHFP 3 1 43707AEE3D74D8B8D292CD8556B32FEE2D43C805 +066C756D6D656C096E6C6E65746C616273026E6C00002F000100000E10001D066C7573747261096E6C6E65746C616273026E6C00000640000008000B +lummel.nlnetlabs.nl. 3600 IN NSEC lustra.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +066C7573747261096E6C6E65746C616273026E6C0000010001000027D80004D59AE034 +lustra.nlnetlabs.nl. 10200 IN A 213.154.224.52 +066C7573747261096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B1CF0E4CE05E0FBA87CB82D0D3EF452A27B012112FAD46BD11777A2F232478ACE899E7BEE78E71F8D1083DC58FDB8E5F78207699FE24088CCF8AC77F0C82B98C8590CBC73E09047FEDBA488489DA88F00BF8FE7BAEED0C11E887F134AFBE0EAB926BFB511A31A743FDB022CFC2FD468E7BD7B342D9A56EECDA434A28BDE10477 +lustra.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sc8OTOBeD7qHy4LQ0+9FKiewEhEvrUa9EXd6LyMkeKzomee+545x+NEIPcWP245feCB2mf4kCIzPisd/DIK5jIWQy8c+CQR/7bpIhInaiPAL+P57ru0MEeiH8TSvvg6rkmv7URoxp0P9sCLPwv1GjnvXs0LZpW7s2kNKKL3hBHc= ;{id = 42393} +066C7573747261096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0034AB5069524C65F5127C4359FFD55D044FE77CFCEC5A0CA02F1E24D9F247FACC26326A9CD6AAE15391CC498059671D06E31CB8101DBF3D97F1762E0F42E3E49D62FF6BAF12614596EAD38AA750421DF09BF6F29F87BD77F63ABAAF4840241FA6AE4A1C9B8542A22B44ECBAFBF209C22105E7F618F55D384019ABB61B35624C48 +lustra.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NKtQaVJMZfUSfENZ/9VdBE/nfPzsWgygLx4k2fJH+swmMmqc1qrhU5HMSYBZZx0G4xy4EB2/PZfxdi4PQuPknWL/a68SYUWW6tOKp1BCHfCb9vKfh7139jq6r0hAJB+mrkocm4VCoitE7Lr78gnCIQXn9hj1XThAGau2GzViTEg= ;{id = 42393} +066C7573747261096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C38035C44D1F1D63729CEE705DEA146D1227C01BBEEF8098F3965DEE030B0B011F76E9E945A8934E5174504F46FCDACD3016CE8517D8ADC2101DDA3AE1D563A88A31B0C8684FD66131BD6807024755A6BD38F1172323A070D30702EF4E1491BE15C7086A77B3DAC8048D25F88538DBB6ADFAAA9E07C45AA5B769CED8E07F6630 +lustra.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. w4A1xE0fHWNynO5wXeoUbRInwBu+74CY85Zd7gMLCwEfdunpRaiTTlF0UE9G/NrNMBbOhRfYrcIQHdo64dVjqIoxsMhoT9ZhMb1oBwJHVaa9OPEXIyOgcNMHAu9OFJG+FccIanez2sgEjSX4hTjbtq36qp4HxFqlt2nO2OB/ZjA= ;{id = 42393} +066C7573747261096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFEC65984 +lustra.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fec6:5984 +066C7573747261096E6C6E65746C616273026E6C00002F000100000E100020096D61676E657369756D096E6C6E65746C616273026E6C000006400000080003 +lustra.nlnetlabs.nl. 3600 IN NSEC magnesium.nlnetlabs.nl. A AAAA RRSIG NSEC +096D61676E657369756D096E6C6E65746C616273026E6C0000010001000027D80004D59AE01D +magnesium.nlnetlabs.nl. 10200 IN A 213.154.224.29 +096D61676E657369756D096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001EEEED8B903C14A2A7B98B484DC2F51DE2D9B34D97869B92CBCB064337F0A8D9F61094BF4497FF7E1916967F645AC55C7B5B3A42BC56E18E38815B3B1793B72BD79D27B0FEF20565A650E04985727C9388730EF8A92536BAA779AA6BE5DCE4FA146ECA3387D08E80D7980B6EB278A7A97097296E5CC96C7902643A247C225CE5 +magnesium.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Hu7ti5A8FKKnuYtITcL1HeLZs02XhpuSy8sGQzfwqNn2EJS/RJf/fhkWln9kWsVce1s6QrxW4Y44gVs7F5O3K9edJ7D+8gVlplDgSYVyfJOIcw74qSU2uqd5qmvl3OT6FG7KM4fQjoDXmAtusninqXCXKW5cyWx5AmQ6JHwiXOU= ;{id = 42393} +096D61676E657369756D096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003602E51857A6A2714E65A7A948FFB08625A69818D1ED41555E16E4DF6432F3B21CA061FAF5C68549DFE9E535C39426A64398F2961F70B63D1C2B097FD8B8FC54C6CF443B33303F9D42B78EF51F3C3445E2D24E05E801FB2A633549E5AD49C2E733E743A4163733ED64E602801BA3AF48244A80D6A88AA6AB077FDDC4D7C3499F +magnesium.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NgLlGFemonFOZaepSP+whiWmmBjR7UFVXhbk32Qy87IcoGH69caFSd/p5TXDlCamQ5jylh9wtj0cKwl/2Lj8VMbPRDszMD+dQreO9R88NEXi0k4F6AH7KmM1SeWtScLnM+dDpBY3M+1k5gKAG6OvSCRKgNaoiqarB3/dxNfDSZ8= ;{id = 42393} +096D61676E657369756D096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0003E71E85F9471A032BB00157FFA0BD749D87E63DE32A0271BDCF685BE8FDA912AADB80D6C93A6CB796AF27FD842C5EDF98CA3868E6F302C605BA3FB41CBD452FFDC4474CE6AFB051765269105DC58287A14890B6A4ED416BEE52AF5C70A6AE9D9F942E322E99C820977221C7AC8697767FCC3E88E13204E133410735E17BCE63 +magnesium.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. A+cehflHGgMrsAFX/6C9dJ2H5j3jKgJxvc9oW+j9qRKq24DWyTpst5avJ/2ELF7fmMo4aObzAsYFuj+0HL1FL/3ER0zmr7BRdlJpEF3FgoehSJC2pO1Ba+5Sr1xwpq6dn5QuMi6ZyCCXciHHrIaXdn/MPojhMgThM0EHNeF7zmM= ;{id = 42393} +096D61676E657369756D096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010225BCFFFEE7C3A8 +magnesium.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:225:bcff:fee7:c3a8 +096D61676E657369756D096E6C6E65746C616273026E6C00002F000100000E10001A036D616E096E6C6E65746C616273026E6C000006400000080003 +magnesium.nlnetlabs.nl. 3600 IN NSEC man.nlnetlabs.nl. A AAAA RRSIG NSEC +036D616E096E6C6E65746C616273026E6C0000010001000027D80004D59AE037 +man.nlnetlabs.nl. 10200 IN A 213.154.224.55 +036D616E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0095EDD9577200386AADDBD481E37F2E660ADA35D563B0BF9CCC5C2AB0C765AE6677089F1FC43B678C7A9B1BB6D370466F74507F0E24E1A2997B8C1F2934D44F16BE82337560EC661D45E2605DCFC359BA12D709637D563D7A9AF7231F86B037EBBAE725423767C4394811E8595149C482EDF185EB972FAEDB3249797D6C95724D +man.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. le3ZV3IAOGqt29SB438uZgraNdVjsL+czFwqsMdlrmZ3CJ8fxDtnjHqbG7bTcEZvdFB/DiThopl7jB8pNNRPFr6CM3Vg7GYdReJgXc/DWboS1wljfVY9epr3Ix+GsDfruuclQjdnxDlIEehZUUnEgu3xheuXL67bMkl5fWyVck0= ;{id = 42393} +036D616E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007E4B848546C901BEB8419D74B74A73804B3713130F3ADB2F8474E9227C3D1869D21A151EC1277247C2CD9A3B9BBAA08E95D51B13EE9D3DD70DBB086B7EF689C994E576EE36308361B5109E2A8F4D014C24C5517D06B4F84C2ECDCFE54E45A3C93C3E7E27C46072D8C4E2453A8D04D9BF308C92BC71CCC140099445EF9407BF78 +man.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fkuEhUbJAb64QZ10t0pzgEs3ExMPOtsvhHTpInw9GGnSGhUewSdyR8LNmjubuqCOldUbE+6dPdcNuwhrfvaJyZTldu42MINhtRCeKo9NAUwkxVF9BrT4TC7Nz+VORaPJPD5+J8RgctjE4kU6jQTZvzCMkrxxzMFACZRF75QHv3g= ;{id = 42393} +036D616E096E6C6E65746C616273026E6C00002F000100000E10001D066D6178696D61096E6C6E65746C616273026E6C000006400000000003 +man.nlnetlabs.nl. 3600 IN NSEC maxima.nlnetlabs.nl. A RRSIG NSEC +066D6178696D61096E6C6E65746C616273026E6C0000010001000027D80004D59AE0D0 +maxima.nlnetlabs.nl. 10200 IN A 213.154.224.208 +066D6178696D61096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005685916A42C2F92B732ED4DE51D4BD06A1AC6EE19A5CFCAD3ACC913A090B7F1E58C1F650F52F886CEF424EBF0C6933DB874402710C7DC64D374BCB9E6F145872E62D3840FA4652B30A0712CB261E6ED1E0A45B2B978BDDD894221B2A3A0E2DF1BE76223544CC803856D5F3976E5C14689B1B9F2242EDE5A6A1ABD7EDA2488B5A +maxima.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. VoWRakLC+StzLtTeUdS9BqGsbuGaXPytOsyROgkLfx5YwfZQ9S+IbO9CTr8MaTPbh0QCcQx9xk03S8uebxRYcuYtOED6RlKzCgcSyyYebtHgpFsrl4vd2JQiGyo6Di3xvnYiNUTMgDhW1fOXblwUaJsbnyJC7eWmoavX7aJIi1o= ;{id = 42393} +066D6178696D61096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009AAA5B3E6392F46D7B6D8490F4E1B82D17F985143D54278051A98E91A8D89997AF6D8123D050D284FE21F2EB0C28AE7E507CD1568E04B6B5F2D746D2506ADD90918530F81CE8422AFF4FFF852600869CCF99D7BBEB9CF2C39AB98D917284AF1832DB6936D74E51C2D6D0B256E4E9C30B63CA20D9DA83BDFE210813F8B8B4014A +maxima.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mqpbPmOS9G17bYSQ9OG4LRf5hRQ9VCeAUamOkajYmZevbYEj0FDShP4h8usMKK5+UHzRVo4EtrXy10bSUGrdkJGFMPgc6EIq/0//hSYAhpzPmde765zyw5q5jZFyhK8YMttpNtdOUcLW0LJW5OnDC2PKINnag73+IQgT+Li0AUo= ;{id = 42393} +066D6178696D61096E6C6E65746C616273026E6C00002F000100000E10001C056D63766178096E6C6E65746C616273026E6C000006400000000003 +maxima.nlnetlabs.nl. 3600 IN NSEC mcvax.nlnetlabs.nl. A RRSIG NSEC +056D63766178096E6C6E65746C616273026E6C0000010001000027D80004C010C5E5 +mcvax.nlnetlabs.nl. 10200 IN A 192.16.197.229 +056D63766178096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C000940B45F298243B61F150D6A9232FBDF5A0F738FFCD12FBD0082820C8A4E703FBF2868AB2C23615E8533EF753FEC86EC9B466339F6751ED14A71E4678CE97FB86634D34ED6C5B6ACFCEEEDC0630F7A0E87A78751F44F7AF2E539D7EE8FAAEEBB90FAAB5DE45914E6C7FDB0A9192AB52408DA3EB9D27062DAE16AE20E2BF4FCE6 +mcvax.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CUC0XymCQ7YfFQ1qkjL731oPc4/80S+9AIKCDIpOcD+/KGirLCNhXoUz73U/7Ibsm0ZjOfZ1HtFKceRnjOl/uGY0007Wxbas/O7twGMPeg6Hp4dR9E968uU51+6Pqu67kPqrXeRZFObH/bCpGSq1JAjaPrnScGLa4WriDiv0/OY= ;{id = 42393} +056D63766178096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005BB0FCB8B342D8D9745D5185013B87980C48F3102378629CDD6B657CD14982071396C2EB51158F83A8AB61C7DDCC5A8CA69ACA6EE9C440567B3A5F80EDF09B25EF47330D767520387D0DBF3CFBF2387781F34FBEC7A0E377FFB0F65603E79F44F57B498F87512D94793C0536758DF10D73C8FAB748472A9F9C69CD49B01ADDA1 +mcvax.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. W7D8uLNC2Nl0XVGFATuHmAxI8xAjeGKc3WtlfNFJggcTlsLrURWPg6irYcfdzFqMpprKbunEQFZ7Ol+A7fCbJe9HMw12dSA4fQ2/PPvyOHeB80++x6Djd/+w9lYD559E9XtJj4dRLZR5PAU2dY3xDXPI+rdIRyqfnGnNSbAa3aE= ;{id = 42393} +056D63766178096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CBC5F1A270F6E4447A5A9345EF755F2C57E251778F54BBB0BDF17257E8E8B46D8DE872BC99D0456905FE7A3DFD428D14C5691FD4487B6C4652602791ED35DDD9FA7D0818AC9AA9CD4F29238BBBC1348A2BCEDF20B27B6262575A2C3099B60D1DB3711EC4149B7CE87E9BDF1340C1843A20163469F5CEB44E5F22378B7AC317EA +mcvax.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. y8XxonD25ER6WpNF73VfLFfiUXePVLuwvfFyV+jotG2N6HK8mdBFaQX+ej39Qo0UxWkf1Eh7bEZSYCeR7TXd2fp9CBismqnNTykji7vBNIorzt8gsntiYldaLDCZtg0ds3EexBSbfOh+m98TQMGEOiAWNGn1zrROXyI3i3rDF+o= ;{id = 42393} +056D63766178096E6C6E65746C616273026E6C00002C0001000027D80016010151C86252CB0488653C798766A266CB8142AE2333 +mcvax.nlnetlabs.nl. 10200 IN SSHFP 1 1 51C86252CB0488653C798766A266CB8142AE2333 +056D63766178096E6C6E65746C616273026E6C00002C0001000027D8001602019E3B089D4B8A9B360C88D44C9D07C13146C87219 +mcvax.nlnetlabs.nl. 10200 IN SSHFP 2 1 9E3B089D4B8A9B360C88D44C9D07C13146C87219 +056D63766178096E6C6E65746C616273026E6C00002F000100000E10001E076D65726D616964096E6C6E65746C616273026E6C00000640000000000B +mcvax.nlnetlabs.nl. 3600 IN NSEC mermaid.nlnetlabs.nl. A SSHFP RRSIG NSEC +076D65726D616964096E6C6E65746C616273026E6C0000010001000027D80004D59AE02D +mermaid.nlnetlabs.nl. 10200 IN A 213.154.224.45 +076D65726D616964096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AC7985252932373A6D50122E41A68AAF6CDBD94E47D448AF3B18C4171200BD90AC187D977DF5913C63961E38B82F8DEEDB2215FB0B406457B38D10E4159ADE8304000A2DFEFBF8EBC158467F9E64C25EB61CBAAE2DA8EB447667ADF23855E4DEBB7D382217900B869CD9BF9598F11A84E3FCD93CECDAC240D6D418AC1D54E640 +mermaid.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rHmFJSkyNzptUBIuQaaKr2zb2U5H1EivOxjEFxIAvZCsGH2XffWRPGOWHji4L43u2yIV+wtAZFezjRDkFZregwQACi3++/jrwVhGf55kwl62HLquLajrRHZnrfI4VeTeu304IheQC4ac2b+VmPEahOP82Tzs2sJA1tQYrB1U5kA= ;{id = 42393} +076D65726D616964096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000289EAA88CB538E34E8CCDADB24C543012675BC61B58C98F41D0A1FAAB8BB7726F434C0A5E2A8B8663C16157487C3F7E639A8AD48E7396054115AC206286D9619356B283C4F938774CF8A41EFCE48A6DA39BBD83931BEF3B5C0F18D9841DF54921831FF3D1384DA7E0D93D1D7D37E3DC7F222AB87EA11C1BB740122543CBD235 +mermaid.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. AonqqIy1OONOjM2tskxUMBJnW8YbWMmPQdCh+quLt3JvQ0wKXiqLhmPBYVdIfD9+Y5qK1I5zlgVBFawgYobZYZNWsoPE+Th3TPikHvzkim2jm72DkxvvO1wPGNmEHfVJIYMf89E4Tafg2T0dfTfj3H8iKrh+oRwbt0ASJUPL0jU= ;{id = 42393} +076D65726D616964096E6C6E65746C616273026E6C00002F000100000E10001B046D696E65096E6C6E65746C616273026E6C000006400000000003 +mermaid.nlnetlabs.nl. 3600 IN NSEC mine.nlnetlabs.nl. A RRSIG NSEC +046D696E65096E6C6E65746C616273026E6C0000010001000027D80004D59AE092 +mine.nlnetlabs.nl. 10200 IN A 213.154.224.146 +046D696E65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0042E20B393F28BA11AECBDFABCD1F815EE6B9967F5671849B7B77F763DEB0EB2070A3DC25505F1A6981023FB565333A662F96D6A7617A0F971E13A627B9F2CE7425D5005F5B483F4BB064D4A074E5A73E407064D8B061BB8653D0B97B8481D9184D79D2A59B0827839AB904D9933D82D9740B6BB700125D884E8DB11E0BA87957 +mine.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QuILOT8ouhGuy9+rzR+BXua5ln9WcYSbe3f3Y96w6yBwo9wlUF8aaYECP7VlMzpmL5bWp2F6D5ceE6YnufLOdCXVAF9bSD9LsGTUoHTlpz5AcGTYsGG7hlPQuXuEgdkYTXnSpZsIJ4OauQTZkz2C2XQLa7cAEl2ITo2xHguoeVc= ;{id = 42393} +046D696E65096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00145F23D05E821D18326A78BA39F4A2B846A36879331481DB69DC615980F96A8C6787D51D515DEF3E99E4C8FEF9B25FF1F9E2EC1E7CD12338000B137FDC2811DA0DDC1045EC009E74C2AA9056BE47DCEEC8130C09B3F8DEF068128C2D01417A4AECF7C56521D2B1347B1EA35CA68CB15E5A690C14C02AC97F09D4A4CF2FA8DE98 +mine.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FF8j0F6CHRgyani6OfSiuEajaHkzFIHbadxhWYD5aoxnh9UdUV3vPpnkyP75sl/x+eLsHnzRIzgACxN/3CgR2g3cEEXsAJ50wqqQVr5H3O7IEwwJs/je8GgSjC0BQXpK7PfFZSHSsTR7HqNcpoyxXlppDBTAKsl/CdSkzy+o3pg= ;{id = 42393} +046D696E65096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004EF86E3182DBCD9F962F4D9E1E72E8ABE605C22354326BBBA07730A463E85C4A7F5984482CE8F016D5D91062472F14884A193E77367F97ACCDFCCDDCC358D87655DD47F6460BD6F00191488F995E272F4A5B34EAA729EE7BBC2127C278A16EAD70B53C3DB0DA5B89949FD46F4011337065267302DB64FA5EC1AF6358F29092D5 +mine.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TvhuMYLbzZ+WL02eHnLoq+YFwiNUMmu7oHcwpGPoXEp/WYRILOjwFtXZEGJHLxSIShk+dzZ/l6zN/M3cw1jYdlXdR/ZGC9bwAZFIj5leJy9KWzTqpynue7whJ8J4oW6tcLU8PbDaW4mUn9RvQBEzcGUmcwLbZPpewa9jWPKQktU= ;{id = 42393} +046D696E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A6D831BA0024A2AB71FBEDCB70627CE8B17F4B3FBDF6175D7236DF01F0CB0B0F659F3793ABF8B36D81EF6AAF012ED3AF06E4EA52945A463FB4F8D90ABEEEFD5475FEAA231D930D0C4902983A2B2D7AD9EA14E6508BACC3B3E79E219469239D7FAE503BD3CCE215F8ED8AD70CA7676EA10C1C7F9EAF7A065EF91F017CCDA7F1A2 +mine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ptgxugAkoqtx++3LcGJ86LF/Sz+99hddcjbfAfDLCw9lnzeTq/izbYHvaq8BLtOvBuTqUpRaRj+0+NkKvu79VHX+qiMdkw0MSQKYOistetnqFOZQi6zDs+eeIZRpI51/rlA708ziFfjtitcMp2duoQwcf56vegZe+R8BfM2n8aI= ;{id = 42393} +046D696E65096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002800000000 +mine.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:28:: +046D696E65096E6C6E65746C616273026E6C00002C0001000027D8001601015598148ABD16CA46A5F1978D0566D253375A5F27 +mine.nlnetlabs.nl. 10200 IN SSHFP 1 1 5598148ABD16CA46A5F1978D0566D253375A5F27 +046D696E65096E6C6E65746C616273026E6C00002C0001000027D800160201C0535C157EB97B21B2E52CC66AA933A8ABD7BCB8 +mine.nlnetlabs.nl. 10200 IN SSHFP 2 1 C0535C157EB97B21B2E52CC66AA933A8ABD7BCB8 +046D696E65096E6C6E65746C616273026E6C00002C0001000027D80016030110B764904D485D2BA9F55231D1BFEF01E15CF249 +mine.nlnetlabs.nl. 10200 IN SSHFP 3 1 10B764904D485D2BA9F55231D1BFEF01E15CF249 +046D696E65096E6C6E65746C616273026E6C00002F000100000E10001C056D69727265096E6C6E65746C616273026E6C00000640000008000B +mine.nlnetlabs.nl. 3600 IN NSEC mirre.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +056D69727265096E6C6E65746C616273026E6C0000050001000027D800110472706B6907737572666E6574026E6C00 +mirre.nlnetlabs.nl. 10200 IN CNAME rpki.surfnet.nl. +056D69727265096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004F86D9AD8659BBE9306D842207F86B619B72C0D04B5E17C876BB5E44E3D419AEAE60A4C18906B22C18DB1FB40D39E7A7E6EC7A25949E1EE6024469BB61528A742C367C9E9167560B890309B3146EF4A3A7C70BEF978F3499BBF48CC0115B7E3C2EDFC6F886E691840D7B5A69A7025EF6F306CC6E88E726A0B0E11EFB31967A9F +mirre.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. T4bZrYZZu+kwbYQiB/hrYZtywNBLXhfIdrteROPUGa6uYKTBiQayLBjbH7QNOeen5ux6JZSeHuYCRGm7YVKKdCw2fJ6RZ1YLiQMJsxRu9KOnxwvvl480mbv0jMARW348Lt/G+IbmkYQNe1pppwJe9vMGzG6I5yagsOEe+zGWep8= ;{id = 42393} +056D69727265096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0079EA8CC6352D6DDB4376E7C9BA785E0BD024B5A51CEB7745D6F0263A244CFB346F9787C0D490FCFC8868E222A1722CCEAE1916F8CE018D43866DF7C362B90A196CB3E2D4099E3474BF7151294FEF1B3060EA469276EDFCEC49F9156848CF66BA0568EAD5FF6B710CFAB093810F49E010F6BA6566BA492A80C2E6B10BAC104BEF +mirre.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eeqMxjUtbdtDdufJunheC9AktaUc63dF1vAmOiRM+zRvl4fA1JD8/Iho4iKhcizOrhkW+M4BjUOGbffDYrkKGWyz4tQJnjR0v3FRKU/vGzBg6kaSdu387En5FWhIz2a6BWjq1f9rcQz6sJOBD0ngEPa6ZWa6SSqAwuaxC6wQS+8= ;{id = 42393} +056D69727265096E6C6E65746C616273026E6C00002F000100000E100020096D6F62792D6469636B096E6C6E65746C616273026E6C000006040000000003 +mirre.nlnetlabs.nl. 3600 IN NSEC moby-dick.nlnetlabs.nl. CNAME RRSIG NSEC +096D6F62792D6469636B096E6C6E65746C616273026E6C0000010001000027D80004D59AE01C +moby-dick.nlnetlabs.nl. 10200 IN A 213.154.224.28 +096D6F62792D6469636B096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AE3696FD28CF65047DA297A8C03F427F612C2CC48810C55159A66FBB5EE3CB4B3A7B9328E075A1BF3760882C83BAC5C0EE835C1548D8211EBF51D384F5FC3E0996A2F4A2D7E3F4BC54E7E694551927C1B4E0ED1CDF6F7E69EEBE9FCEDB1AB7B91893949EA3B1F0B7233E2CC973404E20D01FD8DB02178DAB704B15FA26C527E6 +moby-dick.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rjaW/SjPZQR9opeowD9Cf2EsLMSIEMVRWaZvu17jy0s6e5Mo4HWhvzdgiCyDusXA7oNcFUjYIR6/UdOE9fw+CZai9KLX4/S8VOfmlFUZJ8G04O0c329+ae6+n87bGre5GJOUnqOx8LcjPizJc0BOINAf2NsCF42rcEsV+ibFJ+Y= ;{id = 42393} +096D6F62792D6469636B096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0049457251F6E941645D9F9F46AB482BC59974116CB64F91E18B20397D3E1FBDFB9A4C00D1D9079A1FA217E46A49EB454A03978EA02F4E0536624ACC6D775033FA733C8078298D371570DBC2136A314804BAA0D573FB37AC001F629CC641EC68BFA67078823BE2E1C77CF94301E37220F32A2894E772B74E139C7177AC752C250D +moby-dick.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. SUVyUfbpQWRdn59Gq0grxZl0EWy2T5HhiyA5fT4fvfuaTADR2QeaH6IX5GpJ60VKA5eOoC9OBTZiSsxtd1Az+nM8gHgpjTcVcNvCE2oxSAS6oNVz+zesAB9inMZB7Gi/pnB4gjvi4cd8+UMB43Ig8yoolOdyt04TnHF3rHUsJQ0= ;{id = 42393} +096D6F62792D6469636B096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B1E2F45D30B6CA2C4A2587C29B2EE37A8745757536AB954F319F0C325F0F3D1F9020C3041525B299084912FC15C2DDD2DC5E4F406A7B5F8FA6D37360B70F734BC192E9B40AF37729B923F873AEB707E9F5A721EE92D747474D682B8F2ABF607C7855AFF9039E52723A5A9B76521108D71B37D777034978AA1500AEDF08E97A37 +moby-dick.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. seL0XTC2yixKJYfCmy7jeodFdXU2q5VPMZ8MMl8PPR+QIMMEFSWymQhJEvwVwt3S3F5PQGp7X4+m03Ngtw9zS8GS6bQK83cpuSP4c663B+n1pyHuktdHR01oK48qv2B8eFWv+QOeUnI6Wpt2UhEI1xs313cDSXiqFQCu3wjpejc= ;{id = 42393} +096D6F62792D6469636B096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFEE91C9F +moby-dick.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fee9:1c9f +096D6F62792D6469636B096E6C6E65746C616273026E6C00002F000100000E10001E076D6F6E69746F72096E6C6E65746C616273026E6C000006400000080003 +moby-dick.nlnetlabs.nl. 3600 IN NSEC monitor.nlnetlabs.nl. A AAAA RRSIG NSEC +076D6F6E69746F72096E6C6E65746C616273026E6C0000050001000027D80015066E6167696F73096E6C6E65746C616273026E6C00 +monitor.nlnetlabs.nl. 10200 IN CNAME nagios.nlnetlabs.nl. +076D6F6E69746F72096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CB37B7F1799C1F6DFF18AEBB4D5E1B5E639AA638011123F8FAD6EB09D7D81681B0095B601ED74EE23D2E261E460DA076BF8F8E04098A82B5C107FC4E4E566EDD1FDCDC0C899DD6DDDA0D621EA012988A9F61791B2F1890854F5055E23015A0A554B87A9F14C2D7E2641BF3BA52E744F0F65F494958E40EE005D6976606ECACDC +monitor.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yze38XmcH23/GK67TV4bXmOapjgBESP4+tbrCdfYFoGwCVtgHtdO4j0uJh5GDaB2v4+OBAmKgrXBB/xOTlZu3R/c3AyJndbd2g1iHqASmIqfYXkbLxiQhU9QVeIwFaClVLh6nxTC1+JkG/O6UudE8PZfSUlY5A7gBdaXZgbsrNw= ;{id = 42393} +076D6F6E69746F72096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00386D0BBAD886954F0BDFCEE89A33C31022FA321F30FB17022354A9E14F5FB1362302DBB4A51501F7247E7A50511F1096DFC371AC7A4BC4429304AB824F9D610AE1C058A1011853BD18EE3F415F8781C1B0AC32678FE3C43F69D8648A881EF67F71F292367A48A4DEDCFB93683C8258A14EAB31A1A119CE3AF83B76FB758988C3 +monitor.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. OG0LutiGlU8L387omjPDECL6Mh8w+xcCI1Sp4U9fsTYjAtu0pRUB9yR+elBRHxCW38NxrHpLxEKTBKuCT51hCuHAWKEBGFO9GO4/QV+HgcGwrDJnj+PEP2nYZIqIHvZ/cfKSNnpIpN7c+5NoPIJYoU6rMaGhGc46+Dt2+3WJiMM= ;{id = 42393} +076D6F6E69746F72096E6C6E65746C616273026E6C00002F000100000E10001C056D6F74656C096E6C6E65746C616273026E6C000006040000000003 +monitor.nlnetlabs.nl. 3600 IN NSEC motel.nlnetlabs.nl. CNAME RRSIG NSEC +056D6F74656C096E6C6E65746C616273026E6C0000010001000027D80004D59AE007 +motel.nlnetlabs.nl. 10200 IN A 213.154.224.7 +056D6F74656C096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004BE3FF81B9D241D2FEF669E497935D61FEBEFD2B062BD97EA6968A3C505F0B5EB740A857E1FFFF12F53BE088F44A443BA75A008F1E034D30DE03FE0DFC073E17E86F78BF8524E1381B04FF03BABFD47252D389E1AD1F9AEF41474DE4F9D790944FB8331BB0D0468FCE8D2E43995B19741D0944AF2D190ED980FB56D8F2FD5C76 +motel.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. S+P/gbnSQdL+9mnkl5NdYf6+/SsGK9l+ppaKPFBfC163QKhX4f//EvU74Ij0SkQ7p1oAjx4DTTDeA/4N/Ac+F+hveL+FJOE4GwT/A7q/1HJS04nhrR+a70FHTeT515CUT7gzG7DQRo/OjS5DmVsZdB0JRK8tGQ7ZgPtW2PL9XHY= ;{id = 42393} +056D6F74656C096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D0555B30EE8CFEEA383AA8F079527FDE6E09FC53D4EA6766B0622F8EDF21952A7BED1A2C267D4C66BAAC6C7A0AF80AD8276677D9066E8402672E6F9153F6DBCE2CE9B3E69D9ACCA699927CB26DB4FB1FC502530B0A5C86FC5183A82347919E3EB7FCC337D704C809C32DC9C25D124479374180DC93F5893D7B70CC8B8C234CB1 +motel.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0FVbMO6M/uo4OqjweVJ/3m4J/FPU6mdmsGIvjt8hlSp77RosJn1MZrqsbHoK+ArYJ2Z32QZuhAJnLm+RU/bbzizps+admsymmZJ8sm20+x/FAlMLClyG/FGDqCNHkZ4+t/zDN9cEyAnDLcnCXRJEeTdBgNyT9Yk9e3DMi4wjTLE= ;{id = 42393} +056D6F74656C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0064609D2D4D950FFDCB1807DD70D1EE6F438EECBEB2B44BFE20AAA8682C41F71C38C0D8458A32998A79646256B00BECA5392D3C5A8215DE1F1956A117F1D71EFD40E66BBE93BD9B05D520DB65464CF5A92453A3E8FE83A6784F059C287E3AE0C2D9DC74204EBD78F4924BAAB55CE1378001413A649683F1F633FFA21AA3F7CFB7 +motel.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ZGCdLU2VD/3LGAfdcNHub0OO7L6ytEv+IKqoaCxB9xw4wNhFijKZinlkYlawC+ylOS08WoIV3h8ZVqEX8dce/UDma76TvZsF1SDbZUZM9akkU6Po/oOmeE8FnCh+OuDC2dx0IE69ePSSS6q1XOE3gAFBOmSWg/H2M/+iGqP3z7c= ;{id = 42393} +056D6F74656C096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000007 +motel.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::7 +056D6F74656C096E6C6E65746C616273026E6C00002F000100000E10001B046D756973096E6C6E65746C616273026E6C000006400000080003 +motel.nlnetlabs.nl. 3600 IN NSEC muis.nlnetlabs.nl. A AAAA RRSIG NSEC +046D756973096E6C6E65746C616273026E6C0000010001000027D80004D59AE038 +muis.nlnetlabs.nl. 10200 IN A 213.154.224.56 +046D756973096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C336B8238800F47E3A1D6E5F53B2BDAF0373BCE6195480E63D8263A213196CEFB1EECF636BD7379B736D4C6FD265D4D71825A387C8E1EA66AB2067E22C1332CEFE22D9E815DD4069A86C7402CFE8092A968C96A3D598475AD0C36E74FB1F749F4EDEA9BD9CD3DC7DF3FDBB63F3D85CF17A45271CAC3936B37D048E742EB64F87 +muis.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wza4I4gA9H46HW5fU7K9rwNzvOYZVIDmPYJjohMZbO+x7s9ja9c3m3NtTG/SZdTXGCWjh8jh6marIGfiLBMyzv4i2egV3UBpqGx0As/oCSqWjJaj1ZhHWtDDbnT7H3SfTt6pvZzT3H3z/btj89hc8XpFJxysOTazfQSOdC62T4c= ;{id = 42393} +046D756973096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00AEB729B92EF6BBCCEE8459E1233B759AA5B0B91C5A590C8BD7827AE7208E428FA21CC720F1DD7115FC9A9FF1C56E856B345996A6C56450B8B2AAE52A4506EE00BBB113CF92912C2DB231502717A65BB03E0CB87CC4BACC83BCB144A97905352325E28D2B6280509466C2E3C78E09BF5ACED9A6F8E1A156485AE5C1326B3FD0D2 +muis.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. rrcpuS72u8zuhFnhIzt1mqWwuRxaWQyL14J65yCOQo+iHMcg8d1xFfyan/HFboVrNFmWpsVkULiyquUqRQbuALuxE8+SkSwtsjFQJxemW7A+DLh8xLrMg7yxRKl5BTUjJeKNK2KAUJRmwuPHjgm/Ws7ZpvjhoVZIWuXBMms/0NI= ;{id = 42393} +046D756973096E6C6E65746C616273026E6C00002F000100000E10001C056D7973716C096E6C6E65746C616273026E6C000006400000000003 +muis.nlnetlabs.nl. 3600 IN NSEC mysql.nlnetlabs.nl. A RRSIG NSEC +056D7973716C096E6C6E65746C616273026E6C0000050001000027D80013046F70656E096E6C6E65746C616273026E6C00 +mysql.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +056D7973716C096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0008DAD7F122ECC6C29317E739892FFE616F53B119CCBBC12410484C9EDF53EB3B7A568FC1D19686047A40D706F40AF176B0295B17C47B14A8952AF152603A82C30DFFC82758BC8F5D5924C1F883ADFD24915CFC5CCE7DB572B1FA7439DFDC3E7F266487D425D91C994AD2FF7892B4796AD6C3E23C15B52B5079C8253B7157F1D6 +mysql.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. CNrX8SLsxsKTF+c5iS/+YW9TsRnMu8EkEEhMnt9T6zt6Vo/B0ZaGBHpA1wb0CvF2sClbF8R7FKiVKvFSYDqCww3/yCdYvI9dWSTB+IOt/SSRXPxczn21crH6dDnf3D5/JmSH1CXZHJlK0v94krR5atbD4jwVtStQecglO3FX8dY= ;{id = 42393} +056D7973716C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0093FCD5C18E6E5A71CDFCFD6B2E50F6ABAF397B99B43BCA7991C3D0079B347A2CBB960B6C406BF4724B2E2ED414F415F113331F6C3F995E7C40EC617B8A39B125A590EA6C4ED80BC156E12C729707872BE924929D7C103705A5A67D7DF0CA175F95ADBA52C7A299B4538A00AE01550162021176996D24578C40A9F5E4E67064D7 +mysql.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. k/zVwY5uWnHN/P1rLlD2q685e5m0O8p5kcPQB5s0eiy7lgtsQGv0cksuLtQU9BXxEzMfbD+ZXnxA7GF7ijmxJaWQ6mxO2AvBVuEscpcHhyvpJJKdfBA3BaWmfX3wyhdfla26UseimbRTigCuAVUBYgIRdpltJFeMQKn15OZwZNc= ;{id = 42393} +056D7973716C096E6C6E65746C616273026E6C00002F000100000E10001D066E6167696F73096E6C6E65746C616273026E6C000006040000000003 +mysql.nlnetlabs.nl. 3600 IN NSEC nagios.nlnetlabs.nl. CNAME RRSIG NSEC +066E6167696F73096E6C6E65746C616273026E6C0000010001000027D80004D59AE086 +nagios.nlnetlabs.nl. 10200 IN A 213.154.224.134 +066E6167696F73096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003F3E7108844AE31B697AB706079B8723D13C5763D0425D4D9FB4C1E1B2688756F0131C0903238A400DEEB38E7354D46D9B4447EA79C11049767F5B28999193582C7AE6148D7D154FEC29EEBF2683BA1F8518C2FE58687EFE006C3C7B237DE0BAA4F3357FE41A6AF816BBB3F989F91612FAD496417C771F60D0B9A45EE6D6D93C +nagios.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Pz5xCIRK4xtpercGB5uHI9E8V2PQQl1Nn7TB4bJoh1bwExwJAyOKQA3us45zVNRtm0RH6nnBEEl2f1somZGTWCx65hSNfRVP7CnuvyaDuh+FGML+WGh+/gBsPHsjfeC6pPM1f+QaavgWu7P5ifkWEvrUlkF8dx9g0LmkXubW2Tw= ;{id = 42393} +066E6167696F73096E6C6E65746C616273026E6C00002E0001000027D800A0000F0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001A058A70665D2FB2FF1BE72BBB1A951C4CA2DFFA1960C87A11D951FD7BF6FB76CA14246209D6E7F6858F0948B5DC6D90CE90BB2D4AF5E7377D5E0611E85F5A41A40531082DB7E7F731564C9591D1C2C439FD6807476F2BC09C131F4E6DC119DE806BB4DBBB3A81FF5D0A505B51A203CBA5741A6451B9C81FD2675B9BA4491107 +nagios.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GgWKcGZdL7L/G+cruxqVHEyi3/oZYMh6EdlR/Xv2+3bKFCRiCdbn9oWPCUi13G2QzpC7LUr15zd9XgYR6F9aQaQFMQgtt+f3MVZMlZHRwsQ5/WgHR28rwJwTH05twRnegGu027s6gf9dClBbUaIDy6V0GmRRucgf0mdbm6RJEQc= ;{id = 42393} +066E6167696F73096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0058FB7081F47CABBE303F20DBBCB7A22CCF6B82C9E107CB364AC42D4103823EB022396B07F0C7C2AEC7210CF288A71F0D6EF42D8CC28F836C89E12AEA948AADC812A170656A40BE1BC7548926E97378116216AB90612038995F046424A04A6C1A398BC1511D468EDE042EDBA57AE0EB574ED6E57319656BB28722799E6292A6D1 +nagios.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WPtwgfR8q74wPyDbvLeiLM9rgsnhB8s2SsQtQQOCPrAiOWsH8MfCrschDPKIpx8NbvQtjMKPg2yJ4SrqlIqtyBKhcGVqQL4bx1SJJulzeBFiFquQYSA4mV8EZCSgSmwaOYvBUR1Gjt4ELtuleuDrV07W5XMZZWuyhyJ5nmKSptE= ;{id = 42393} +066E6167696F73096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009D737D85258BCE25B5FE48F49622729E4FA3C110DD8096333A1D44548C5C10421F0F151DD3781300865237F5FB577291F0A84D8BFBFCA06FB98727C62306003EE98A7D22152A37756712587590D2AEB41838BA9A81A6C2B8FF567976F542B733D97AC84D351C00568EF056130EFFDB26324BA4D43B7009233AACE182057F109F +nagios.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nXN9hSWLziW1/kj0liJynk+jwRDdgJYzOh1EVIxcEEIfDxUd03gTAIZSN/X7V3KR8KhNi/v8oG+5hyfGIwYAPumKfSIVKjd1ZxJYdZDSrrQYOLqagabCuP9WeXb1Qrcz2XrITTUcAFaO8FYTDv/bJjJLpNQ7cAkjOqzhggV/EJ8= ;{id = 42393} +066E6167696F73096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0014F57DCA41EAD0F8358C9BCAD403DB0E796DD1ED0AE86706C68BEE4AD722B3422A595F6E46A5B8EC4DE5E9BA953189022474AD9573291753F31BCCD36769C6E83AA59C8215B29258D4F6D50BC69EF2C6B7FE24B7F7C13AD4AAFEF195C1BDD02CC1EE7670CB546C8D09FE464D8BCFF0A1BF8889ECCE03B6F9373B1490C4444EA6 +nagios.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FPV9ykHq0Pg1jJvK1APbDnlt0e0K6GcGxovuStcis0IqWV9uRqW47E3l6bqVMYkCJHStlXMpF1PzG8zTZ2nG6DqlnIIVspJY1PbVC8ae8sa3/iS398E61Kr+8ZXBvdAswe52cMtUbI0J/kZNi8/wob+IiezOA7b5NzsUkMRETqY= ;{id = 42393} +066E6167696F73096E6C6E65746C616273026E6C00000F0001000027D8001B000A046D61696C05366F6E6C79096E6C6E65746C616273026E6C00 +nagios.nlnetlabs.nl. 10200 IN MX 10 mail.6only.nlnetlabs.nl. +066E6167696F73096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF000400000000 +nagios.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:4:: +066E6167696F73096E6C6E65746C616273026E6C00002C0001000027D8001601010E1A0600D0A7F2511C8D57410422D9A99618F201 +nagios.nlnetlabs.nl. 10200 IN SSHFP 1 1 0E1A0600D0A7F2511C8D57410422D9A99618F201 +066E6167696F73096E6C6E65746C616273026E6C00002C0001000027D8001602014EF80FEA0025691257FF34B992118BD9360257F2 +nagios.nlnetlabs.nl. 10200 IN SSHFP 2 1 4EF80FEA0025691257FF34B992118BD9360257F2 +066E6167696F73096E6C6E65746C616273026E6C00002C0001000027D800160301AF21A784B933B4B2F28967845B41E0119F91D3BF +nagios.nlnetlabs.nl. 10200 IN SSHFP 3 1 AF21A784B933B4B2F28967845B41E0119F91D3BF +066E6167696F73096E6C6E65746C616273026E6C00002F000100000E10001A036E6577096E6C6E65746C616273026E6C00000640010008000B +nagios.nlnetlabs.nl. 3600 IN NSEC new.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +036E6577096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +new.nlnetlabs.nl. 10200 IN A 213.154.224.1 +036E6577096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007384799A52EC582A2182F00A1F52D4DFB2D694446712F9A1713F141A65A776CA1402A9AF92D09417C8B9A364DB66DD81D343EEF5410C2E0451DC0B72E5385D91D57133F3573A34DBB5889FF4F3A4F045CF2D3F558CC9A0C7E349ABB53FAF7B1812CF196B9966B43ED041BAAC03055358EEFA7D3E75667DB4999D4DE39D2AE91F +new.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. c4R5mlLsWCohgvAKH1LU37LWlERnEvmhcT8UGmWndsoUAqmvktCUF8i5o2TbZt2B00Pu9UEMLgRR3Aty5ThdkdVxM/NXOjTbtYif9POk8EXPLT9VjMmgx+NJq7U/r3sYEs8Za5lmtD7QQbqsAwVTWO76fT51Zn20mZ1N450q6R8= ;{id = 42393} +036E6577096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C20C97BC9EA23AC64106FAE02A74981448E91636E3BBEEDFB188C2ACD5B4C3ABBE25BBCF88E54DFBB2E1006EF14A92B47C2CEE0264484CB30BB7A59E173E1B2BC748A3D99F80587F1E4D483AA8BC4AC04EDAC2BB9376061FBE54D28E3610A6F04FD580AD9853870F4803180F50F19F6FAF4E3EF2B8FC880E1B572CCF289E89CC +new.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wgyXvJ6iOsZBBvrgKnSYFEjpFjbju+7fsYjCrNW0w6u+JbvPiOVN+7LhAG7xSpK0fCzuAmRITLMLt6WeFz4bK8dIo9mfgFh/Hk1IOqi8SsBO2sK7k3YGH75U0o42EKbwT9WArZhThw9IAxgPUPGfb69OPvK4/IgOG1cszyieicw= ;{id = 42393} +036E6577096E6C6E65746C616273026E6C00002F000100000E100027104E4C6E65744C6162732D6269742D6777096E6C6E65746C616273026E6C000006400000000003 +new.nlnetlabs.nl. 3600 IN NSEC NLnetLabs-bit-gw.nlnetlabs.nl. A RRSIG NSEC +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C0000010001000027D80004D5881F66 +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN A 213.136.31.102 +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A0376CC76E43C2A90EADF84D6AAF1E82D9ED6AE4595D1AFD27C73A564CABC2D49DCB17C6CAFF4E223834BF757364BE19CFD1E72C3E33AC491A55D6A965C6156F730BDF3C77ED5D2D4BC9B6BF42922217DFA9C32714A69D3F6AB387C1812B03B17CEA1B710525873A56CCD73356BEC8438A67309BE77A2582052BE5E344B8A99F +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. oDdsx25DwqkOrfhNaq8egtntauRZXRr9J8c6VkyrwtSdyxfGyv9OIjg0v3VzZL4Zz9HnLD4zrEkaVdapZcYVb3ML3zx37V0tS8m2v0KSIhffqcMnFKadP2qzh8GBKwOxfOobcQUlhzpWzNczVr7IQ4pnMJvneiWCBSvl40S4qZ8= ;{id = 42393} +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0030DEA845844928EF73134AD900014A6AFBDAFDB58FFDAFCD66EA6D40909B737B7FC081F132C1E5F22928BF5DE3A01B37A12E1B8D3E6F590C2385CB2E2E6F000F96C640B51B9D2C91EC3DA9B53C6BF8B70D7982260DDA346994C4724F75FB96D6C54A88572039D2A0C1BAC5F6897BD0CD5288A97C5EAA90B235C7EC6FE142BFC3 +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MN6oRYRJKO9zE0rZAAFKavva/bWP/a/NZuptQJCbc3t/wIHxMsHl8ikov13joBs3oS4bjT5vWQwjhcsuLm8AD5bGQLUbnSyR7D2ptTxr+LcNeYImDdo0aZTEck91+5bWxUqIVyA50qDBusX2iXvQzVKIqXxeqpCyNcfsb+FCv8M= ;{id = 42393} +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00D281CDD713D70BB2D7DD4B6B82E166338865F522A9E5DF850FA913A12CD91DBAEF8BFCF4D156F23A3BB242A83B3179D8E28D344B8602D03294DE8EE69D633E5EAF080B0196C926D5FD7F79175A25453F15621E1C5BF0827B025C4F4F630551D4DCB6B24FA675173B204EA96DC613C75AE5970939D200784EC6195AC47EB08AD5 +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. 0oHN1xPXC7LX3UtrguFmM4hl9SKp5d+FD6kToSzZHbrvi/z00VbyOjuyQqg7MXnY4o00S4YC0DKU3o7mnWM+Xq8ICwGWySbV/X95F1olRT8VYh4cW/CCewJcT09jBVHU3LayT6Z1FzsgTqltxhPHWuWXCTnSAHhOxhlaxH6witU= ;{id = 42393} +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C00001C0001000027D80010200107B8004000010000000000000003 +nlnetlabs-bit-gw.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1::3 +106E6C6E65746C6162732D6269742D6777096E6C6E65746C616273026E6C00002F000100000E10001D066E732D657874096E6C6E65746C616273026E6C000006400000080003 +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN NSEC ns-ext.nlnetlabs.nl. A AAAA RRSIG NSEC +066E732D657874096E6C6E65746C616273026E6C0000010001000027D80004D59AE004 +ns-ext.nlnetlabs.nl. 10200 IN A 213.154.224.4 +066E732D657874096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003D847C5E67F7D76774444DDC0F453979F38FBC54A6D69A1A4CA4E7431E032FED58CAEB830B97DE8ECE0D169211B5BDCDB3F5142B6F22C410CB086D759E42812F056863A2C5FAEC873FF555495234EB8A2F14AB04CEE3C192CD041EDBD51F729281421FD37CC84A755AE83486F70248D09E9957887F27D5CE8C91D9A17D66EC34 +ns-ext.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PYR8Xmf312d0RE3cD0U5efOPvFSm1poaTKTnQx4DL+1YyuuDC5fejs4NFpIRtb3Ns/UUK28ixBDLCG11nkKBLwVoY6LF+uyHP/VVSVI064ovFKsEzuPBks0EHtvVH3KSgUIf03zISnVa6DSG9wJI0J6ZV4h/J9XOjJHZoX1m7DQ= ;{id = 42393} +066E732D657874096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00ABAB0A6ACA1AA96371F4EB8FA1E63BDDB03DE25CDABE9D7160679890FCFB8D929EEA148D94AD674F063A542010333674B30351F37DC7F0517AE255FD78D0768E38B27A9D92D6296332BF2234E293A90A82EC9B25D6CC0278279D97910874C5F801F6FA28D6BF6400329073477F2801CD4F9696539B040EC009B332804881927C +ns-ext.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. q6sKasoaqWNx9OuPoeY73bA94lzavp1xYGeYkPz7jZKe6hSNlK1nTwY6VCAQMzZ0swNR833H8FF64lX9eNB2jjiyep2S1iljMr8iNOKTqQqC7Jsl1swCeCedl5EIdMX4Afb6KNa/ZAAykHNHfygBzU+WllObBA7ACbMygEiBknw= ;{id = 42393} +066E732D657874096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004F78BC1C528E36908AA15325D9080D2E667343021BD99FA0A74921830120DA622195478297FA9139F3C5D97B3E41CF7D85403573C1C22CEB6674450E91F2BA31877AB17BE51195FD6FBA280BB5D32CEDB095104896D1AA3363A2EE7C96115608853EF7081DD88DC0880821183000D52EC93E462DCC087DB7343CBF18867F7F23 +ns-ext.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T3i8HFKONpCKoVMl2QgNLmZzQwIb2Z+gp0khgwEg2mIhlUeCl/qROfPF2Xs+Qc99hUA1c8HCLOtmdEUOkfK6MYd6sXvlEZX9b7ooC7XTLO2wlRBIltGqM2Oi7nyWEVYIhT73CB3YjcCICCEYMADVLsk+Ri3MCH23NDy/GIZ/fyM= ;{id = 42393} +066E732D657874096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000040053 +ns-ext.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::4:53 +066E732D657874096E6C6E65746C616273026E6C00002F000100000E10001C056E732D7074096E6C6E65746C616273026E6C000006400000080003 +ns-ext.nlnetlabs.nl. 3600 IN NSEC ns-pt.nlnetlabs.nl. A AAAA RRSIG NSEC +056E732D7074096E6C6E65746C616273026E6C0000010001000027D80004D59AE08D +ns-pt.nlnetlabs.nl. 10200 IN A 213.154.224.141 +056E732D7074096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008680883AD6D0457492F3A27F469B02A52AC1BFF5C7FB2BFBC40D3B805C5FA30C8E7F99EA9BF6E7A61A8B58CFF097964CFFE97107B911B400E2BA949DF467B1DEEE1DF6AF390D6DB34E33472BEB4CEA4D04473BAC3AA382B03B5BA5F0C6D06D8F30D71CDD3CFCB3DEE6A16E5C4733E6152C43082D4E57073492F350646992B310 +ns-pt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hoCIOtbQRXSS86J/RpsCpSrBv/XH+yv7xA07gFxfowyOf5nqm/bnphqLWM/wl5ZM/+lxB7kRtADiupSd9Gex3u4d9q85DW2zTjNHK+tM6k0ERzusOqOCsDtbpfDG0G2PMNcc3Tz8s97moW5cRzPmFSxDCC1OVwc0kvNQZGmSsxA= ;{id = 42393} +056E732D7074096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00238EBD063DA18786999967335D5A7C3954DE4062865597FC211DBD3AE490B422ADB3F4F9E0645E3FB69AB585960AED8A4F977DB5C525CEACE6F7A9799704305B869ED1228C5358B23419E7698E6D81652EB055B2A067D3651B1744593F689EB913E312BA7A270960885AD442977A6A910C36DA637B22CADA5312942DB8FC4AAD +ns-pt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. I469Bj2hh4aZmWczXVp8OVTeQGKGVZf8IR29OuSQtCKts/T54GReP7aatYWWCu2KT5d9tcUlzqzm96l5lwQwW4ae0SKMU1iyNBnnaY5tgWUusFWyoGfTZRsXRFk/aJ65E+MSunonCWCIWtRCl3pqkQw22mN7IsraUxKULbj8Sq0= ;{id = 42393} +056E732D7074096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00555E01CD42C42A0C8FC684651CD7E3C4C3D5979F60567E6928F26138959BA4538E71B1DBD98F931DA23608DC581326D5555D730D5AB441FB63A37B0DBAAD0FAB62B1AD68E9C05CC6BD9ABD7A7B10509B901CC573C14044439977A34C623EE483B64B0A8FBBE495B038CFE7906199E9B0DBD4B0F1CD9F2D01398AC7F1DD6205C8 +ns-pt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. VV4BzULEKgyPxoRlHNfjxMPVl59gVn5pKPJhOJWbpFOOcbHb2Y+THaI2CNxYEybVVV1zDVq0Qftjo3sNuq0Pq2KxrWjpwFzGvZq9ensQUJuQHMVzwUBEQ5l3o0xiPuSDtksKj7vklbA4z+eQYZnpsNvUsPHNny0BOYrH8d1iBcg= ;{id = 42393} +056E732D7074096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000040141 +ns-pt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::4:141 +056E732D7074096E6C6E65746C616273026E6C00002F000100000E10001A036E7331096E6C6E65746C616273026E6C000006400000080003 +ns-pt.nlnetlabs.nl. 3600 IN NSEC ns1.nlnetlabs.nl. A AAAA RRSIG NSEC +036E7331096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +ns1.nlnetlabs.nl. 10200 IN A 213.154.224.1 +036E7331096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001544B64FF904CD3090E204FDCE54D7D18FB0112D58685F4D61F24BD186981808F216A5C94BB391BFBCE42E4CAD33076293D300B231D9031CB03C189BF1408812F134A888537BFCDD05CF72D54C2E20FBB3FB96DE3ACC2D906CABE98E659FBD4552C11767BE9080727C7A268F47206C7BD11CBEE9231ED162686142E338C92BD6 +ns1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FUS2T/kEzTCQ4gT9zlTX0Y+wES1YaF9NYfJL0YaYGAjyFqXJS7ORv7zkLkytMwdik9MAsjHZAxywPBib8UCIEvE0qIhTe/zdBc9y1UwuIPuz+5beOswtkGyr6Y5ln71FUsEXZ76QgHJ8eiaPRyBse9EcvukjHtFiaGFC4zjJK9Y= ;{id = 42393} +036E7331096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00894A5440C1E27BDD460E259A669FF3F3D4415A060298C95E41EF74D606ABB16C9D8CD0AC948E8958ED52B3D3581AA604BFAD57103F5A3C36E90E5D1AC875F256F37DB7065243153F2679F5D74C2787FFB624EC4DF21D1968533FEA56E53337EA0F1DA1D352B5CB071BC2DA97712BCFF6D70278CE992180FD12C0104AFBE67821 +ns1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. iUpUQMHie91GDiWaZp/z89RBWgYCmMleQe901garsWydjNCslI6JWO1Ss9NYGqYEv61XED9aPDbpDl0ayHXyVvN9twZSQxU/Jnn110wnh/+2JOxN8h0ZaFM/6lblMzfqDx2h01K1ywcbwtqXcSvP9tcCeM6ZIYD9EsAQSvvmeCE= ;{id = 42393} +036E7331096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007E3D1A6C2F62A118E00D6007E4635A1C8FB96D64F5FBC10DE18573477F817236639E122144DB1477924C379BAB8197C71D05EC5C6BCA38C66A73A736BA25EB828C0EA24BACB8D53BE418FF414846BEA8F97AB42EE4D3AEFAA96D40C1A9991F592BFA8CC00516E081F352CD56AA354968159CBF407128CEB40EE10E838558C1F7 +ns1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fj0abC9ioRjgDWAH5GNaHI+5bWT1+8EN4YVzR3+BcjZjnhIhRNsUd5JMN5urgZfHHQXsXGvKOMZqc6c2uiXrgowOokusuNU75Bj/QUhGvqj5erQu5NOu+qltQMGpmR9ZK/qMwAUW4IHzUs1WqjVJaBWcv0BxKM60DuEOg4VYwfc= ;{id = 42393} +036E7331096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +ns1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +036E7331096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000053 +ns1.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +036E7331096E6C6E65746C616273026E6C00002F000100000E10001E076E73642D786672096E6C6E65746C616273026E6C000006400000080003 +ns1.nlnetlabs.nl. 3600 IN NSEC nsd-xfr.nlnetlabs.nl. A AAAA RRSIG NSEC +076E73642D786672096E6C6E65746C616273026E6C0000010001000027D80004D59AE031 +nsd-xfr.nlnetlabs.nl. 10200 IN A 213.154.224.49 +076E73642D786672096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006B936DFDD694A37BD8C50F9940E941C869901F0431D582B8D6B055B75EAC9CB858EAE76775798A04F051198EA1227EB54300ED21D410949AC6FB2E0C573ED52BA65EE780BC16BB8D27436BA67342DAD35AA72480E13C1BD2DBD0A106DD83499C22CE244E8F3F32820D7EFD7B38DAB8E9202BAEAF5C9D1B2F1060697109EBD213 +nsd-xfr.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. a5Nt/daUo3vYxQ+ZQOlByGmQHwQx1YK41rBVt16snLhY6udndXmKBPBRGY6hIn61QwDtIdQQlJrG+y4MVz7VK6Ze54C8FruNJ0NrpnNC2tNapySA4Twb0tvQoQbdg0mcIs4kTo8/MoINfv17ONq46SArrq9cnRsvEGBpcQnr0hM= ;{id = 42393} +076E73642D786672096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A79083EAEFCA195F69B20C2940B1937BB7132DCAE9CEAA273CE96E548EE63808BFC004322393959493627EA0B43F07FBC79C363317D7D6822B51F67A0757FD99F63B5ABAEFF3C4A4F15FC7E3AD1ABA93FFCD8261A4F369CF3381F6EADFA1D19A42B04B0E1E79B26786C743CB0B5453A926329A2ABDD3891344A157D2B32A172A +nsd-xfr.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. p5CD6u/KGV9psgwpQLGTe7cTLcrpzqonPOluVI7mOAi/wAQyI5OVlJNifqC0Pwf7x5w2MxfX1oIrUfZ6B1f9mfY7Wrrv88Sk8V/H460aupP/zYJhpPNpzzOB9urfodGaQrBLDh55smeGx0PLC1RTqSYymiq904kTRKFX0rMqFyo= ;{id = 42393} +076E73642D786672096E6C6E65746C616273026E6C00002F000100000E10001C056E73656333096E6C6E65746C616273026E6C000006400000000003 +nsd-xfr.nlnetlabs.nl. 3600 IN NSEC nsec3.nlnetlabs.nl. A RRSIG NSEC +056E73656333096E6C6E65746C616273026E6C0000010001000027D80004D59AE015 +nsec3.nlnetlabs.nl. 10200 IN A 213.154.224.21 +056E73656333096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006B39CC8CF3015CDC485AEF83467A025830473CE3B769D20E29C29D4FFF4325D5B5422EACFFF0CED5895BF64921D6E0D08ACC2105C2E7DC4E7FFB1971FB38572DCB85848604190BC14E09D46C38D6AC37F1C9E31FD09F5ECED8E7DAFD8AEA81A5F6BBB6CF1A31D389E7C92EDF1B54D4CC863130F00702516169A07689E1A4D194 +nsec3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. aznMjPMBXNxIWu+DRnoCWDBHPOO3adIOKcKdT/9DJdW1Qi6s//DO1Ylb9kkh1uDQiswhBcLn3E5/+xlx+zhXLcuFhIYEGQvBTgnUbDjWrDfxyeMf0J9eztjn2v2K6oGl9ru2zxox04nnyS7fG1TUzIYxMPAHAlFhaaB2ieGk0ZQ= ;{id = 42393} +056E73656333096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001F274D4E9BC6277B412876C51F6B059D7268898A421B61DEE4EC4B35D9D09E615CC676E091292B1605848DB6B2A63EC2AE7A28F111C009C1D1E978D791BF2734C887B1C1CE49686BF6CF9ACF1CB567257AEE3D635D9328B283D9B1585148AF9A06E13A93097F8C94D6DE3E6AE59BA208ED7C40026298C48FB61DD4216DE4BB40 +nsec3.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HydNTpvGJ3tBKHbFH2sFnXJoiYpCG2He5OxLNdnQnmFcxnbgkSkrFgWEjbaypj7Crnoo8RHACcHR6XjXkb8nNMiHscHOSWhr9s+azxy1ZyV67j1jXZMosoPZsVhRSK+aBuE6kwl/jJTW3j5q5ZuiCO18QAJimMSPth3UIW3ku0A= ;{id = 42393} +056E73656333096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00B8BC6A033F5F9502E9F8A174AA0AFDA44E69D7E61A66167307B02A5AB80832C38A06E064918083B2C737775F00FAB19DC1037F07297D76405BF6ADBDA9810C8837E365E9C926FB88FD15BCE0DC7754E69A2400B23119BA6F0865A5B7AFE4EAC09D65D19AE56085D5FD3E50B5FDBDCB31747D6CC7E72DE557D54A30EB2B949716 +nsec3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. uLxqAz9flQLp+KF0qgr9pE5p1+YaZhZzB7AqWrgIMsOKBuBkkYCDssc3d18A+rGdwQN/Byl9dkBb9q29qYEMiDfjZenJJvuI/RW84Nx3VOaaJACyMRm6bwhlpbev5OrAnWXRmuVghdX9PlC1/b3LMXR9bMfnLeVX1Uow6yuUlxY= ;{id = 42393} +056E73656333096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFED204DB +nsec3.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fed2:4db +056E73656333096E6C6E65746C616273026E6C00002F000100000E10001E076F62656C69736B096E6C6E65746C616273026E6C000006400000080003 +nsec3.nlnetlabs.nl. 3600 IN NSEC obelisk.nlnetlabs.nl. A AAAA RRSIG NSEC +076F62656C69736B096E6C6E65746C616273026E6C0000010001000027D80004D59AE07E +obelisk.nlnetlabs.nl. 10200 IN A 213.154.224.126 +076F62656C69736B096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002BB7EF94BE319DFBC4DA526E3FF961696AC19300459258414B17A36ECDE0FF28447E287BEE10316BF33BE29CCA0B7636369031BA90907BA00B3EFAB6390DDF75C8B751F54C16CB8C76248C294E477F7F62240103C5A4C3F3655AB042D64E0CFC2E5F117B1C9BB7ACFBC0778941A3925C6BF8426546AA98CEEF4C779DDAE205C0 +obelisk.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. K7fvlL4xnfvE2lJuP/lhaWrBkwBFklhBSxejbs3g/yhEfih77hAxa/M74pzKC3Y2NpAxupCQe6ALPvq2OQ3fdci3UfVMFsuMdiSMKU5Hf39iJAEDxaTD82VasELWTgz8Ll8Rexybt6z7wHeJQaOSXGv4QmVGqpjO70x3ndriBcA= ;{id = 42393} +076F62656C69736B096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D330166383FD04E425310A462813D73BC580B058EC6B7E88BD2D71AC02CF68E44B2BD5C2701192B07FA167AB04E4E329A45659B2A633C13EBB09BDEF2DFA08FC45E9E34D315F649BDE7CC793980E728831D56842FC29D80D800530B07F7A0AE43B6A059FDE175E920A6E6212777E33F1A0216E23D5B7B6D9A49257C46EA5DC6B +obelisk.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0zAWY4P9BOQlMQpGKBPXO8WAsFjsa36IvS1xrALPaORLK9XCcBGSsH+hZ6sE5OMppFZZsqYzwT67Cb3vLfoI/EXp400xX2Sb3nzHk5gOcogx1WhC/CnYDYAFMLB/egrkO2oFn94XXpIKbmISd34z8aAhbiPVt7bZpJJXxG6l3Gs= ;{id = 42393} +076F62656C69736B096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000EDC6391EA62B4F9A2C7DB7E9F2CD0E9B50FA7927B328432A937EDE71647905AA8C1DFE5D46AB5ECD30A003B6A9AA099EEF0CBB5B2DC7CFDA0395B8DE35F0F7A8B4A55DD36760399724379DDCF4B93CC75AABE5809FFA9CB3D2594EA7FA2969DEC69D3F094C5819E7F7D267AE2F6B57F0CF7C120BF9959C4684B082918ACE9B1 +obelisk.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. DtxjkepitPmix9t+nyzQ6bUPp5J7MoQyqTft5xZHkFqowd/l1Gq17NMKADtqmqCZ7vDLtbLcfP2gOVuN418PeotKVd02dgOZckN53c9Lk8x1qr5YCf+pyz0llOp/opad7GnT8JTFgZ5/fSZ64va1fwz3wSC/mVnEaEsIKRis6bE= ;{id = 42393} +076F62656C69736B096E6C6E65746C616273026E6C00002C0001000027D8001601010257F12A5FF223048FBE7424227A5F5736F1D556 +obelisk.nlnetlabs.nl. 10200 IN SSHFP 1 1 0257F12A5FF223048FBE7424227A5F5736F1D556 +076F62656C69736B096E6C6E65746C616273026E6C00002C0001000027D80016020100FA2CC6497D6DDDEDD499437A518393BEBAC127 +obelisk.nlnetlabs.nl. 10200 IN SSHFP 2 1 00FA2CC6497D6DDDEDD499437A518393BEBAC127 +076F62656C69736B096E6C6E65746C616273026E6C00002F000100000E10001A036F6473096E6C6E65746C616273026E6C00000640000000000B +obelisk.nlnetlabs.nl. 3600 IN NSEC ods.nlnetlabs.nl. A SSHFP RRSIG NSEC +036F6473096E6C6E65746C616273026E6C0000010001000027D80004D59AE082 +ods.nlnetlabs.nl. 10200 IN A 213.154.224.130 +036F6473096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002A4737415668BF597E612707E136DD701D18D6FDF184EDF2477626BCD9D9A466FC89512D959F07A427A42788381E53D92E29CC312D6EC35D64153920272369E7E8C7CB183C1180268857C5E6638228A7E07FFB9068E9A9C14C2C83C8775D7778B5E1831A6CA9A6266E7985E46EAD3C7BA24BA5306E689388BDF9B8D8CBA38D10 +ods.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Kkc3QVZov1l+YScH4TbdcB0Y1v3xhO3yR3YmvNnZpGb8iVEtlZ8HpCekJ4g4HlPZLinMMS1uw11kFTkgJyNp5+jHyxg8EYAmiFfF5mOCKKfgf/uQaOmpwUwsg8h3XXd4teGDGmyppiZueYXkbq08e6JLpTBuaJOIvfm42MujjRA= ;{id = 42393} +036F6473096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001C41A01E582AA3FBB0987219011AAC6AC1A9A797FF34BC474344A6186B5C059664C30D7ED494956B1A6A91A8672797AA11D140B8C77031EFBBDAF9732A05E46A75CCE82E74E4814D3DB76E263B2D8843F007F9B0845FBE9793A6E803E6F68907BA8F2110275F0FA028A4412DECC922C4870B1590C570C4D0EE0D1390FABE09EB +ods.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HEGgHlgqo/uwmHIZARqsasGpp5f/NLxHQ0SmGGtcBZZkww1+1JSVaxpqkahnJ5eqEdFAuMdwMe+72vlzKgXkanXM6C505IFNPbduJjstiEPwB/mwhF++l5Om6APm9okHuo8hECdfD6AopEEt7MkixIcLFZDFcMTQ7g0TkPq+Ces= ;{id = 42393} +036F6473096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A504CE96E79412ACCC257D9BD90B23D7B018B95658F4E951E6B05717FB00E7E6ED36A57C86780D550868871C5D46524779733DA9417630225849D050743D29A68BA691559795832089FB491658BA28D42BE28060BB7ED2BB939C452959B1D1D68BA184357E909C62C693A4E20303461B7148C86514CA6B1B04185575BF36C659 +ods.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pQTOlueUEqzMJX2b2Qsj17AYuVZY9OlR5rBXF/sA5+btNqV8hngNVQhohxxdRlJHeXM9qUF2MCJYSdBQdD0ppoumkVWXlYMgiftJFli6KNQr4oBgu37Su5OcRSlZsdHWi6GENX6QnGLGk6TiAwNGG3FIyGUUymsbBBhVdb82xlk= ;{id = 42393} +036F6473096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002FFC0D7C017636E7E651C912146A92613FECA122393F3E4A9C2BADFC9CB2BE694B6B96DF99D008C0927FD5632FBEA77DF824C148F32524CDDF3F8FC27E341978916B1E717B7341493B9A407CA1202BEBC342691DCFA2937FE5BDD95280856720B798BC0DBA2A1F156310EB1DB0CC2E0FA18833BCB5D7B8ACCC3591B7DA06DF26 +ods.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. L/wNfAF2NufmUckSFGqSYT/soSI5Pz5KnCut/JyyvmlLa5bfmdAIwJJ/1WMvvqd9+CTBSPMlJM3fP4/CfjQZeJFrHnF7c0FJO5pAfKEgK+vDQmkdz6KTf+W92VKAhWcgt5i8DboqHxVjEOsdsMwuD6GIM7y117iszDWRt9oG3yY= ;{id = 42393} +036F6473096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000130 +ods.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::130 +036F6473096E6C6E65746C616273026E6C00002C0001000027D8001601019C78228717D1AEBDB4E5C6156CE4559E50A562A1 +ods.nlnetlabs.nl. 10200 IN SSHFP 1 1 9C78228717D1AEBDB4E5C6156CE4559E50A562A1 +036F6473096E6C6E65746C616273026E6C00002C0001000027D80016020135BB7D1F0250EF1B9177EB36D26FD01EBEB633C4 +ods.nlnetlabs.nl. 10200 IN SSHFP 2 1 35BB7D1F0250EF1B9177EB36D26FD01EBEB633C4 +036F6473096E6C6E65746C616273026E6C00002F000100000E10001C056F6D76616C096E6C6E65746C616273026E6C00000640000008000B +ods.nlnetlabs.nl. 3600 IN NSEC omval.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +056F6D76616C096E6C6E65746C616273026E6C0000050001000027D800140573616E6E65096E6C6E65746C616273026E6C00 +omval.nlnetlabs.nl. 10200 IN CNAME sanne.nlnetlabs.nl. +056F6D76616C096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C71BE527E5C9E2E4E2231341F6172D46145512D212827C91D2791E2D1DE06DFB1B48D55BF32BA46649072F767C24ADEF9261FD698B2BEE542A61072D87D752B8FABE026FD8C56448D62420F9A25DB8234957FAF7A7A992B4DA69B6717E8446C8568076280856025B163B722DC322FB4721A067777EB679885DF7D5FF16CB2884 +omval.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xxvlJ+XJ4uTiIxNB9hctRhRVEtISgnyR0nkeLR3gbfsbSNVb8yukZkkHL3Z8JK3vkmH9aYsr7lQqYQcth9dSuPq+Am/YxWRI1iQg+aJduCNJV/r3p6mStNpptnF+hEbIVoB2KAhWAlsWO3ItwyL7RyGgZ3d+tnmIXffV/xbLKIQ= ;{id = 42393} +056F6D76616C096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C003B769BE65364A1E6D11145E1F44492D743908734123DE8FBB74F10A8642584354423CC23096732972C990A5710B76ECF0C23C30C13CB2290484348033CF4A6016640AA87F45DEB3A1BB8D18AE09D6F066C9282B5C630FCBC79154A7740A46DDBC22AD491E6159C83920DC50DDDD25ADB1A2DE5F74978D887A4D6F77F2572A7E6 +omval.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. O3ab5lNkoebREUXh9ESS10OQhzQSPej7t08QqGQlhDVEI8wjCWcylyyZClcQt27PDCPDDBPLIpBIQ0gDPPSmAWZAqof0Xes6G7jRiuCdbwZskoK1xjD8vHkVSndApG3bwirUkeYVnIOSDcUN3dJa2xot5fdJeNiHpNb3fyVyp+Y= ;{id = 42393} +056F6D76616C096E6C6E65746C616273026E6C00002F000100000E10001B046F6E7978096E6C6E65746C616273026E6C000006040000000003 +omval.nlnetlabs.nl. 3600 IN NSEC onyx.nlnetlabs.nl. CNAME RRSIG NSEC +046F6E7978096E6C6E65746C616273026E6C0000010001000027D80004D59AE020 +onyx.nlnetlabs.nl. 10200 IN A 213.154.224.32 +046F6E7978096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009EAB50C66C900C799135ED4B8DAA3E897D0AA1C9C922FB193BB22845E22800418FBBED8C3FE732DF75BFB654543BB3AD32818F16AA163E56F8ACD2B0132F47AE0C5BF5E640B324C0EA8148D6C52FB33F619625A4566AF3E51149D0A4A33FCBC3B550EFC63A0BD46026356F352E731354D66A5EFC5DC825098A218063D6B61098 +onyx.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. nqtQxmyQDHmRNe1Ljao+iX0KocnJIvsZO7IoReIoAEGPu+2MP+cy33W/tlRUO7OtMoGPFqoWPlb4rNKwEy9Hrgxb9eZAsyTA6oFI1sUvsz9hliWkVmrz5RFJ0KSjP8vDtVDvxjoL1GAmNW81LnMTVNZqXvxdyCUJiiGAY9a2EJg= ;{id = 42393} +046F6E7978096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C8BEEEB194F7D6F6A1AECA66FFF658716730D2EC3ABE4ACC75F0D70CF91D28858FA229C2FCA4301ED692621A6D5E75BCFF0773EB53D62DECA7FBA1A78C40C15BBB8EF65C98E41DBDD42DBA94978135E4E90FC34272B97FF9EBF439C0E3AF93E3CC841E25583A4A1C669689D51D0AFC178057A8CAA636EAC91934D6228553550B +onyx.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yL7usZT31vahrspm//ZYcWcw0uw6vkrMdfDXDPkdKIWPoinC/KQwHtaSYhptXnW8/wdz61PWLeyn+6GnjEDBW7uO9lyY5B291C26lJeBNeTpD8NCcrl/+ev0OcDjr5PjzIQeJVg6ShxmlonVHQr8F4BXqMqmNurJGTTWIoVTVQs= ;{id = 42393} +046F6E7978096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005AE33C5703029BD234281E0FAFF7A63ED7A12A30A272F4863442D8F56C409BB2362E1E488AA10C7C2FC8AA3D2F8737896DEA946686EC99A92B87EF26BB26E1549185997051B2EB3379848DCF5E3A271063918DBEDC8788D6773DFBBE2C8C47F5827940AABFC4247E34C350E9DA10A5D548BF533D3B9559454CEDBDE3AB19AA39 +onyx.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. WuM8VwMCm9I0KB4Pr/emPtehKjCicvSGNELY9WxAm7I2Lh5IiqEMfC/Iqj0vhzeJbeqUZobsmakrh+8muybhVJGFmXBRsuszeYSNz146JxBjkY2+3IeI1nc9+74sjEf1gnlAqr/EJH40w1Dp2hCl1Ui/Uz07lVlFTO2946sZqjk= ;{id = 42393} +046F6E7978096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009DA61F6B855A28DC5BBCC3EC639CBD0AB8C323B5201198C999F81AD40A06760E646C824FFB2DD53E92C455F9C74B08393882F9BB54AF88E82A7AD242DAF8924FA7C3F7EFA4420CE198CCA347D29AE3358FFDCB52BBC0C2391E53321DF4F103817CD6DFD211954D26215F6597F2ABCA1DC9E3A15D64E1F5061D86DE35CFC45FF7 +onyx.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. naYfa4VaKNxbvMPsY5y9CrjDI7UgEZjJmfga1AoGdg5kbIJP+y3VPpLEVfnHSwg5OIL5u1SviOgqetJC2viST6fD9++kQgzhmMyjR9Ka4zWP/ctSu8DCOR5TMh308QOBfNbf0hGVTSYhX2WX8qvKHcnjoV1k4fUGHYbeNc/EX/c= ;{id = 42393} +046F6E7978096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010203BAFFFE052D9E +onyx.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe05:2d9e +046F6E7978096E6C6E65746C616273026E6C00002C0001000027D8001601011A752CEF2B1E785A91E27D16CF3E1A3F5F335DDE +onyx.nlnetlabs.nl. 10200 IN SSHFP 1 1 1A752CEF2B1E785A91E27D16CF3E1A3F5F335DDE +046F6E7978096E6C6E65746C616273026E6C00002C0001000027D800160201784DDE0A38C94250445CABF91342F7230368E2C1 +onyx.nlnetlabs.nl. 10200 IN SSHFP 2 1 784DDE0A38C94250445CABF91342F7230368E2C1 +046F6E7978096E6C6E65746C616273026E6C00002F000100000E10001B046F70656E096E6C6E65746C616273026E6C00000640000008000B +onyx.nlnetlabs.nl. 3600 IN NSEC open.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +046F70656E096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +open.nlnetlabs.nl. 10200 IN A 213.154.224.1 +046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001B3BDA234644EF4F2CB881465779EAAB716E6E94D9A7837C7516D158D1C2D290060BFB3A71F2F6EF0EC328E3BD8EFA1B7ECEF8AF03ADA282C2AA64C4445A2705B6A69377CC3EBBA78430B9495C09628BE85A96E316BF0CC451AFC8871C6B3F44FCBA7B62258DC2BDCF04770D089D7244AC561470D450442305C36D7A51A641AA +open.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GzvaI0ZE708suIFGV3nqq3FubpTZp4N8dRbRWNHC0pAGC/s6cfL27w7DKOO9jvobfs74rwOtooLCqmTERFonBbamk3fMPrunhDC5SVwJYovoWpbjFr8MxFGvyIccaz9E/Lp7YiWNwr3PBHcNCJ1yRKxWFHDUUEQjBcNtelGmQao= ;{id = 42393} +046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A0000F0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D3D33F40440FD12F26EEBBFA3BB7EBB1B05089039A37000CBF1C1698B6F5B95422E05BCB98D4B2345855AD62CFEE25A414A3CAE0C8BE8FCE83AE52AA2297E6F992C2C0AC4EF4ED43F39BC4DB594AC12D59CE30EDF0A8B6E84FD606E7EAE6C001A261BFFE5B1EE90777796B50FCC407780CEB4BFFB09A599AE3FEEAEC18F0B687 +open.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 09M/QEQP0S8m7rv6O7frsbBQiQOaNwAMvxwWmLb1uVQi4FvLmNSyNFhVrWLP7iWkFKPK4Mi+j86DrlKqIpfm+ZLCwKxO9O1D85vE21lKwS1ZzjDt8Ki26E/WBufq5sABomG//lse6Qd3eWtQ/MQHeAzrS/+wmlma4/7q7Bjwtoc= ;{id = 42393} +046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006F6C6B0CFAF81CC977A4105E74ADFB923930F6715B1829C252C2EB681EB18040DF7699AE6FB7CA0ED0008908390DB78C9E505691629BDFCAD356C0F7431AFB40E51F825B43441836C3A14DCABAA6CAFBC9D23A57BDC046F27A200C9AFA4C2041376FC731C2A7D9156836F55CE5CCAB98A2D00BFEC86921D3B9ACFE8CF91D6740 +open.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. b2xrDPr4HMl3pBBedK37kjkw9nFbGCnCUsLraB6xgEDfdpmub7fKDtAAiQg5DbeMnlBWkWKb38rTVsD3Qxr7QOUfgltDRBg2w6FNyrqmyvvJ0jpXvcBG8nogDJr6TCBBN2/HMcKn2RVoNvVc5cyrmKLQC/7IaSHTuaz+jPkdZ0A= ;{id = 42393} +046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005C9CC7F7D6D3E480CA7B95C8CCD546DC358A6809A6FACD18B29C09CF3F9464AB643C560631496D37040B8476AEA2E5FBDEC5ECCAC51EBA957164B05F6D4AA72228BF062273FF02F18C9ED0D1C7BAF4A05E3713D0E4ABC1F43648490103E60666160C31F6052F22005DCD465C232EE4E232F6D634B5A206ED6E73D7692F7C0C70 +open.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XJzH99bT5IDKe5XIzNVG3DWKaAmm+s0YspwJzz+UZKtkPFYGMUltNwQLhHauouX73sXsysUeupVxZLBfbUqnIii/BiJz/wLxjJ7Q0ce69KBeNxPQ5KvB9DZISQED5gZmFgwx9gUvIgBdzUZcIy7k4jL21jS1ogbtbnPXaS98DHA= ;{id = 42393} +046F70656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005198232DC0F715B3823E0854660E26679A73173BEDC62EA6168B41D1B7BD2E68823B2A44B14AFF84C8D7306F1FFF14D6F38261301DAABA4234A069F42EE43918A9E4F2E34A1F5FDA43D9A71440D843816BAFBED1E4843740A2FDF480043EC412C30672FE9321E073CDA2F4DF0FA69EC036E5FF07E9081C881CB8D0E6AA782B3C +open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. UZgjLcD3FbOCPghUZg4mZ5pzFzvtxi6mFotB0be9LmiCOypEsUr/hMjXMG8f/xTW84JhMB2qukI0oGn0LuQ5GKnk8uNKH1/aQ9mnFEDYQ4Frr77R5IQ3QKL99IAEPsQSwwZy/pMh4HPNovTfD6aewDbl/wfpCByIHLjQ5qp4Kzw= ;{id = 42393} +046F70656E096E6C6E65746C616273026E6C00000F0001000027D800150032046F70656E096E6C6E65746C616273026E6C00 +open.nlnetlabs.nl. 10200 IN MX 50 open.nlnetlabs.nl. +046F70656E096E6C6E65746C616273026E6C00000F0001000027D800130064056F6D76616C067465646E6574026E6C00 +open.nlnetlabs.nl. 10200 IN MX 100 omval.tednet.nl. +046F70656E096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +open.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +046F70656E096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000053 +open.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +046F70656E096E6C6E65746C616273026E6C00002C0001000027D80016010174CF48095EAF33D2097E750A79715908CB16D7C7 +open.nlnetlabs.nl. 10200 IN SSHFP 1 1 74CF48095EAF33D2097E750A79715908CB16D7C7 +046F70656E096E6C6E65746C616273026E6C00002C0001000027D800160201CA0D875F829DA13EEAC25C580C495590C12583A2 +open.nlnetlabs.nl. 10200 IN SSHFP 2 1 CA0D875F829DA13EEAC25C580C495590C12583A2 +046F70656E096E6C6E65746C616273026E6C00002F000100000E100024035F3235045F746370046F70656E096E6C6E65746C616273026E6C00000640010008000B +open.nlnetlabs.nl. 3600 IN NSEC _25._tcp.open.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +035F3235045F746370046F70656E096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_25._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +035F3235045F746370046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001C33E85CD7BCCD71AE4BB31CACC227EEB66F4A5520F3FB3412231E14E728A12F48D37D79B9E00B48E4A4685F240901FCD91BF2FFC34BDAF2214020C8E3FD266ADF22B2F4B4BCD64C85D5A42657187D9410FAB7365A2F7325B45A5C7DEAE5477442B8C8BADCEAE577C23899BE89CC88871EB9FC8DE7E37B8DE36B06B8295A5772 +_25._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. HDPoXNe8zXGuS7McrMIn7rZvSlUg8/s0EiMeFOcooS9I0315ueALSOSkaF8kCQH82Rvy/8NL2vIhQCDI4/0mat8isvS0vNZMhdWkJlcYfZQQ+rc2Wi9zJbRaXH3q5Ud0QrjIutzq5XfCOJm+icyIhx65/I3n43uN42sGuClaV3I= ;{id = 42393} +035F3235045F746370046F70656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CCF939D67F48F6078855368CEB6056455A75C40B1F50FB9EEC34299E6668A80D4BC21AB19B14F6D965A1B979B2BED77DBC8E5A8F0D64AFB421280DE24903FA0D27045D8B647F63F7E76994E59A80589FCC2E288577765456C01A2AEA1CB3E530337FFCFB16835F1B2250948D4F2383B40FBD1136CCEC392B4E23665E32B6CFF0 +_25._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zPk51n9I9geIVTaM62BWRVp1xAsfUPue7DQpnmZoqA1LwhqxmxT22WWhuXmyvtd9vI5ajw1kr7QhKA3iSQP6DScEXYtkf2P352mU5ZqAWJ/MLiiFd3ZUVsAaKuocs+UwM3/8+xaDXxsiUJSNTyODtA+9ETbM7DkrTiNmXjK2z/A= ;{id = 42393} +035F3235045F746370046F70656E096E6C6E65746C616273026E6C00002F000100000E100025045F343635045F746370046F70656E096E6C6E65746C616273026E6C000006040000000003 +_25._tcp.open.nlnetlabs.nl. 3600 IN NSEC _465._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +045F343635045F746370046F70656E096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_465._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343635045F746370046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B0F96CED17E05D67FBE5EE96CC828A2E6E9C81161241863C8CC7C486461B238B6388F4D690597CF9BBD6D2BE0E9875F854D2AF6D637097D8D24F0B4282148223B3120881699574A6AB4639F639FFE99C1AC772BBF059D24806F9D8926026CD45EF2F3127036FD2F17BDA24AEB4307679AB986C7DB20E1608C506FCA031CA325A +_465._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sPls7RfgXWf75e6WzIKKLm6cgRYSQYY8jMfEhkYbI4tjiPTWkFl8+bvW0r4OmHX4VNKvbWNwl9jSTwtCghSCI7MSCIFplXSmq0Y59jn/6Zwax3K78FnSSAb52JJgJs1F7y8xJwNv0vF72iSutDB2eauYbH2yDhYIxQb8oDHKMlo= ;{id = 42393} +045F343635045F746370046F70656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008509EE4454F65C839D28C9DE60CC00939BF68A69909974FEF1503AC6ADC1A3E645AE33AC7B0D782799751E243B7F0544DE4B91CB55E07DC3A3C6598A04B3D4BA0AC726207D11C0BBE54F866039A80AE971D808F38B73AB8D294B4EA3C0E031D41EB2F0FFBBDD1F41E4153E6E2CCFBF479977A7C520C61827845B0FB8C81BC338 +_465._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. hQnuRFT2XIOdKMneYMwAk5v2immQmXT+8VA6xq3Bo+ZFrjOsew14J5l1HiQ7fwVE3kuRy1XgfcOjxlmKBLPUugrHJiB9EcC75U+GYDmoCulx2Ajzi3OrjSlLTqPA4DHUHrLw/7vdH0HkFT5uLM+/R5l3p8UgxhgnhFsPuMgbwzg= ;{id = 42393} +045F343635045F746370046F70656E096E6C6E65746C616273026E6C00002F000100000E100025045F353837045F746370046F70656E096E6C6E65746C616273026E6C000006040000000003 +_465._tcp.open.nlnetlabs.nl. 3600 IN NSEC _587._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +045F353837045F746370046F70656E096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_587._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F353837045F746370046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0082841C95272967BA7257057FE9B6B7D14CD721848B0851D88836687B1BA3CDE739532CA576748728FC80E3444EFE605F06C3EE157F7990A7FDFD0D2B100BDB91A6C5AC300B17AABE13EB639BE7AE4A11B9A6D2E5D0B7DF3005B002CB4EEC66D6115C9449E1DB51EA42AE2C92917EC43B217FA73A206D826CCDC3F28B41B1C8A6 +_587._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. goQclScpZ7pyVwV/6ba30UzXIYSLCFHYiDZoexujzec5UyyldnSHKPyA40RO/mBfBsPuFX95kKf9/Q0rEAvbkabFrDALF6q+E+tjm+euShG5ptLl0LffMAWwAstO7GbWEVyUSeHbUepCriySkX7EOyF/pzogbYJszcPyi0GxyKY= ;{id = 42393} +045F353837045F746370046F70656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00622E3C81EC0B9692518EA1BA7E96569A4BF42B193B3E0FD06E3DA8079AA784519FB08C00F03E90B1738FF0C88093DC693AA75EE170A5A8C0601C72DF84DBD5F0CF815986242FC6E8813274EAACBC65AA6BBA8BEB2E3F1BF6BF9B96FD742EADD38F0ED076CF6F1076A3FB4F53723FDCC3FD7AEDBFC36CB652DFECDAF08C3249D6 +_587._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Yi48gewLlpJRjqG6fpZWmkv0Kxk7Pg/Qbj2oB5qnhFGfsIwA8D6QsXOP8MiAk9xpOqde4XClqMBgHHLfhNvV8M+BWYYkL8bogTJ06qy8ZapruovrLj8b9r+blv10Lq3Tjw7Qds9vEHaj+09Tcj/cw/167b/DbLZS3+za8IwySdY= ;{id = 42393} +045F353837045F746370046F70656E096E6C6E65746C616273026E6C00002F000100000E100025045F393933045F746370046F70656E096E6C6E65746C616273026E6C000006040000000003 +_587._tcp.open.nlnetlabs.nl. 3600 IN NSEC _993._tcp.open.nlnetlabs.nl. CNAME RRSIG NSEC +045F393933045F746370046F70656E096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_993._tcp.open.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F393933045F746370046F70656E096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0032F71C1DA59EDFE00CEAB2F870F2F6B3DF590F3943314D155E55D4A5A0C21742141F676C7FCD9C19008973F90150FF54125E7AB40DAEDAFAE02D76E1F4D4F8DC1872157D64096BBDF6A936A849F29E41CB554CE2E60B847D03D60824EA7997BC54F52958958275EFC0ED51A0C0EE5358B55DDB47898612537D96A63A9EFED533 +_993._tcp.open.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. MvccHaWe3+AM6rL4cPL2s99ZDzlDMU0VXlXUpaDCF0IUH2dsf82cGQCJc/kBUP9UEl56tA2u2vrgLXbh9NT43BhyFX1kCWu99qk2qEnynkHLVUzi5guEfQPWCCTqeZe8VPUpWJWCde/A7VGgwO5TWLVd20eJhhJTfZamOp7+1TM= ;{id = 42393} +045F393933045F746370046F70656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008A17A13100A13608B1E5C63F6E645AC897D0411EE19C8DA142080C0EB07150BCF54939C6A7419D1B9E06FE66A784755AE17399EA2E55337E921B9B47F085464786FF635B45B3C51650BE8C5AC2B7DC1D4DEA9149D709234293F2D8363C13CE827CFA0793E29B51AEC329E4935A955FC83619F546D942A093834797CF3D7090BE +_993._tcp.open.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ihehMQChNgix5cY/bmRayJfQQR7hnI2hQggMDrBxULz1STnGp0GdG54G/manhHVa4XOZ6i5VM36SG5tH8IVGR4b/Y1tFs8UWUL6MWsK33B1N6pFJ1wkjQpPy2DY8E86CfPoHk+KbUa7DKeSTWpVfyDYZ9UbZQqCTg0eXzz1wkL4= ;{id = 42393} +045F393933045F746370046F70656E096E6C6E65746C616273026E6C00002F000100000E10001D066F70656E2D36096E6C6E65746C616273026E6C000006040000000003 +_993._tcp.open.nlnetlabs.nl. 3600 IN NSEC open-6.nlnetlabs.nl. CNAME RRSIG NSEC +066F70656E2D36096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +open-6.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +066F70656E2D36096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000053 +open-6.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::53 +066F70656E2D36096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003B2AB67B11CCB2999F3B88B8D4F78DAC729EE1A87AE9390362A7AD4055ABA8CB3F939F6F53919FF80534B0B75BEA094BC622BF2AFA03B4E17B33CCA435B27929CB7CD63820490F1DC48C6EFEDD08C540DFBFD70882085A38156FFA30D8D6337887935C98191208DBCAF91F8D31C2978CCCDAA584350DF03515E6ECD0D6A59514 +open-6.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Oyq2exHMspmfO4i41PeNrHKe4ah66TkDYqetQFWrqMs/k59vU5Gf+AU0sLdb6glLxiK/KvoDtOF7M8ykNbJ5Kct81jggSQ8dxIxu/t0IxUDfv9cIgghaOBVv+jDY1jN4h5NcmBkSCNvK+R+NMcKXjMzapYQ1DfA1Febs0NallRQ= ;{id = 42393} +066F70656E2D36096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00026DD8FEB6826C9AA990AE7399EA0C9CDD69158E2963C1D33082F3C1FB67E03563B701FDF72856307B679A9F889B2EB80B307212D6C1AEC3A99504F71D9EF257982ADFDF65DBC4A565544F092A24C668668AE6184B94E375B2EB5CDDACF3CD3044327A8E2C4528F73936C8499BBFCDDF01C337ACC1B4BA0FB8BF964094120886 +open-6.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Am3Y/raCbJqpkK5zmeoMnN1pFY4pY8HTMILzwftn4DVjtwH99yhWMHtnmp+Imy64CzByEtbBrsOplQT3HZ7yV5gq399l28SlZVRPCSokxmhmiuYYS5TjdbLrXN2s880wRDJ6jixFKPc5NshJm7/N3wHDN6zBtLoPuL+WQJQSCIY= ;{id = 42393} +066F70656E2D36096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002A65D5B2A37DC57BE3FB6042D048E6908629EE49FFCE49FCD2B1CF1F78042F9B08089B63B715118C13EB20357EB7C689F861E6371DE52E6FE7B8E67BC62B75BF586A030FBA9FEC49E5822A23FBA4F6D93558877D598E7CFF381781BF59A52EDC1F31DB86C54DEAF9B02E748B64CA93178D6B2F918CDDCE270E86BC96E6BEA677 +open-6.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. KmXVsqN9xXvj+2BC0EjmkIYp7kn/zkn80rHPH3gEL5sICJtjtxURjBPrIDV+t8aJ+GHmNx3lLm/nuOZ7xit1v1hqAw+6n+xJ5YIqI/uk9tk1WId9WY58/zgXgb9ZpS7cHzHbhsVN6vmwLnSLZMqTF41rL5GM3c4nDoa8lua+pnc= ;{id = 42393} +066F70656E2D36096E6C6E65746C616273026E6C00002C0001000027D80016010174CF48095EAF33D2097E750A79715908CB16D7C7 +open-6.nlnetlabs.nl. 10200 IN SSHFP 1 1 74CF48095EAF33D2097E750A79715908CB16D7C7 +066F70656E2D36096E6C6E65746C616273026E6C00002C0001000027D800160201CA0D875F829DA13EEAC25C580C495590C12583A2 +open-6.nlnetlabs.nl. 10200 IN SSHFP 2 1 CA0D875F829DA13EEAC25C580C495590C12583A2 +066F70656E2D36096E6C6E65746C616273026E6C00002F000100000E10001F086F76657276696577096E6C6E65746C616273026E6C00000600000008000B +open-6.nlnetlabs.nl. 3600 IN NSEC overview.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +086F76657276696577096E6C6E65746C616273026E6C0000050001000027D80015066E6167696F73096E6C6E65746C616273026E6C00 +overview.nlnetlabs.nl. 10200 IN CNAME nagios.nlnetlabs.nl. +086F76657276696577096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009655668384BEF38A282BBBC1262B653C90677FCE5DC184817FE053B88B9A06C38A96321BBDADEF4B3FE25CFC5E1E3ADC2990AC93273D168055699FA612B33111E595C8ED172F3775725CEDBA3A7633FA783AECD5FA8115F0C42ACD4388377626AC1EA4792586D6341D5B90BCAB417E5C55FD4B3E147EF0F792AC17C287F3F85C +overview.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. llVmg4S+84ooK7vBJitlPJBnf85dwYSBf+BTuIuaBsOKljIbva3vSz/iXPxeHjrcKZCskyc9FoBVaZ+mErMxEeWVyO0XLzd1clztujp2M/p4OuzV+oEV8MQqzUOIN3YmrB6keSWG1jQdW5C8q0F+XFX9Sz4UfvD3kqwXwofz+Fw= ;{id = 42393} +086F76657276696577096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00990C871E56244C5E4A1DF996309CD1992422DC1A1F859993FC13CD6CA4EBBC9BEB160EBAB9315CDF5A4E770E8228B136F0EFAE4B10FDA1F04C8FBB443DFCE4FEC851A4933F18D04F5B64655F874C1E940E85CCD4EE6F1225463428287E0ABB9B8F24822E4B95AC6270E70D5581C70B7D12DA7A5CAF5DC57B92054FE2A88182D5 +overview.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mQyHHlYkTF5KHfmWMJzRmSQi3BofhZmT/BPNbKTrvJvrFg66uTFc31pOdw6CKLE28O+uSxD9ofBMj7tEPfzk/shRpJM/GNBPW2RlX4dMHpQOhczU7m8SJUY0KCh+CrubjySCLkuVrGJw5w1VgccLfRLaelyvXcV7kgVP4qiBgtU= ;{id = 42393} +086F76657276696577096E6C6E65746C616273026E6C00002F000100000E10001A0370616E096E6C6E65746C616273026E6C000006040000000003 +overview.nlnetlabs.nl. 3600 IN NSEC pan.nlnetlabs.nl. CNAME RRSIG NSEC +0370616E096E6C6E65746C616273026E6C0000010001000027D80004D59AE026 +pan.nlnetlabs.nl. 10200 IN A 213.154.224.38 +0370616E096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A9C3B5E226A4421896214EDEBADB6B92CF65CE5D145EAC8353A9C9299CCA270B42D453DFBE08D1F8BBEE7041112E3D5B201107600350E2003973F9397A5500EB2ED5D0BE1422DAF959536BA56629A9256A1E59A01500A6D0CF597EB9840CD054C5B8E0C49238927F89075FCECF6ED0BD12C28DEA60A587BA32FE36F9A7E8C47B +pan.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qcO14iakQhiWIU7euttrks9lzl0UXqyDU6nJKZzKJwtC1FPfvgjR+LvucEERLj1bIBEHYANQ4gA5c/k5elUA6y7V0L4UItr5WVNrpWYpqSVqHlmgFQCm0M9ZfrmEDNBUxbjgxJI4kn+JB1/Oz27QvRLCjepgpYe6Mv42+afoxHs= ;{id = 42393} +0370616E096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0076DDDF12DC19E4120B25866509778B901DA28581D448EBA2D2F1FB3E3104DB7D570E7EFE7D76CE3EB2E60DC1D5B613B78CA6C3F3E17BF2BC128D4DABF38F5CE1BD86B90763F5B52C2AF1FF2E71C8D3488AA9E48B77801442FF0A868B469928FA77875FBA8ABA705631BC8FD988CB621EA3B96D403E5339DDCF0989562BEC289A +pan.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dt3fEtwZ5BILJYZlCXeLkB2ihYHUSOui0vH7PjEE231XDn7+fXbOPrLmDcHVthO3jKbD8+F78rwSjU2r849c4b2GuQdj9bUsKvH/LnHI00iKqeSLd4AUQv8KhotGmSj6d4dfuoq6cFYxvI/ZiMtiHqO5bUA+UzndzwmJVivsKJo= ;{id = 42393} +0370616E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0037CC49817996AB4FD5855C09ED6251FC69AA696570DB1CC6AD06A47D0AA4A843BDDB0FDF84BF738C523F2EBDBBBDBFB2E8BB1EF50FB91F90A43466421E3CE51DE93E54F1D85B92B23EDD0D605E1D7FACB8BCB11020A122374D56C2EBBDD329A07CDE60E68681B1E23D791C12BE68A7531E66D9BB27399C94AAC2F51167562CE9 +pan.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. N8xJgXmWq0/VhVwJ7WJR/GmqaWVw2xzGrQakfQqkqEO92w/fhL9zjFI/Lr27vb+y6Lse9Q+5H5CkNGZCHjzlHek+VPHYW5KyPt0NYF4df6y4vLEQIKEiN01Wwuu90ymgfN5g5oaBseI9eRwSvminUx5m2bsnOZyUqsL1EWdWLOk= ;{id = 42393} +0370616E096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001021CC0FFFE11B9B8 +pan.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:21c:c0ff:fe11:b9b8 +0370616E096E6C6E65746C616273026E6C00002F000100000E10001D06706172726F74096E6C6E65746C616273026E6C000006400000080003 +pan.nlnetlabs.nl. 3600 IN NSEC parrot.nlnetlabs.nl. A AAAA RRSIG NSEC +06706172726F74096E6C6E65746C616273026E6C00001C0001000027D800102001067C14C00000021372FFFEFB12D1 +parrot.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0:0:213:72ff:fefb:12d1 +06706172726F74096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D137641E034C21C0C0F450F0790D937BB80C7305E1161CFE7F1428315789874C9053BE970DF659E318AB294A15010083718C42A99A9452DEAF85EC219CBB8C7E8766A73A1A88CC23B3D660B60D76375519EA07AB26274EF32F3997BA2AC86B0159A93C5139E6630E68145BE628237693EBF59B48E69739110A30884998A9D2CC +parrot.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0TdkHgNMIcDA9FDweQ2Te7gMcwXhFhz+fxQoMVeJh0yQU76XDfZZ4xirKUoVAQCDcYxCqZqUUt6vhewhnLuMfodmpzoaiMwjs9Zgtg12N1UZ6gerJidO8y85l7oqyGsBWak8UTnmYw5oFFvmKCN2k+v1m0jmlzkRCjCISZip0sw= ;{id = 42393} +06706172726F74096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003CE0AAB4503C814CD1AB16977043811D99F5CABCB69B1229CB4A26D74B0C264DC471D033BC5E03B5FFA81CDDD2A34F800F3474190A60D3986856139B0C111FC3D4440D070C61EA6748E756C21BB94516903BEDE17D837112BCAEF25BAF4A42CC3595E838EFBF9769DBF7A3684EF1705D16C81102F0B337217EE0BE5EFEEBE4B9 +parrot.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. POCqtFA8gUzRqxaXcEOBHZn1yry2mxIpy0om10sMJk3EcdAzvF4Dtf+oHN3So0+ADzR0GQpg05hoVhObDBEfw9REDQcMYepnSOdWwhu5RRaQO+3hfYNxEryu8luvSkLMNZXoOO+/l2nb96NoTvFwXRbIEQLwszchfuC+Xv7r5Lk= ;{id = 42393} +06706172726F74096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00975A01A9E4C2A29CCC1EDC7D3839060046E9032A2F58970B373F6C9AF43E7DB322FB399A90342CE71B458BD40EC20338187639168F78FFB4320FE9D9C2AACE44245D4C8F9DFD529D46773AF2A1D93C885B413BF6345A479703A55E3A031F790EE592284A97483205FF06FEA6A273A8838CDFFB427AE5B9D81A27A3B7BB8ACC01 +parrot.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. l1oBqeTCopzMHtx9ODkGAEbpAyovWJcLNz9smvQ+fbMi+zmakDQs5xtFi9QOwgM4GHY5Fo94/7QyD+nZwqrORCRdTI+d/VKdRnc68qHZPIhbQTv2NFpHlwOlXjoDH3kO5ZIoSpdIMgX/Bv6monOog4zf+0J65bnYGiejt7uKzAE= ;{id = 42393} +06706172726F74096E6C6E65746C616273026E6C00002C0001000027D800160101236402543271F5A0B9812DE20FC4C2C6A67133B8 +parrot.nlnetlabs.nl. 10200 IN SSHFP 1 1 236402543271F5A0B9812DE20FC4C2C6A67133B8 +06706172726F74096E6C6E65746C616273026E6C00002C0001000027D800160201C6DC2F86740D2647D38F29C23176A470C5ECC99F +parrot.nlnetlabs.nl. 10200 IN SSHFP 2 1 C6DC2F86740D2647D38F29C23176A470C5ECC99F +06706172726F74096E6C6E65746C616273026E6C00002C0001000027D800160301BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +parrot.nlnetlabs.nl. 10200 IN SSHFP 3 1 BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +06706172726F74096E6C6E65746C616273026E6C00002F000100000E1000220B706172726F742D65746831096E6C6E65746C616273026E6C00000600000008000B +parrot.nlnetlabs.nl. 3600 IN NSEC parrot-eth1.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +0B706172726F742D65746831096E6C6E65746C616273026E6C00001C0001000027D800102001067C14C00000021372FFFEFB12D3 +parrot-eth1.nlnetlabs.nl. 10200 IN AAAA 2001:67c:14c0:0:213:72ff:fefb:12d3 +0B706172726F742D65746831096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B1F0448E6482756768CDD5489E216745208A4C78446E606337C5749F5F478576BA6C46E07A67800966F4BED865B7765597B28B5E8F576055C2459F3B5096432B4BBE203DE03253E785678C90AB48F7612205CE747F621B32C1C53B3E7FB625D1C5E368CA9252B60A7742B4DA8DE6C3380F4B1BB6C4919E3C40ABB9CF0DC8BD8D +parrot-eth1.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. sfBEjmSCdWdozdVIniFnRSCKTHhEbmBjN8V0n19HhXa6bEbgemeACWb0vthlt3ZVl7KLXo9XYFXCRZ87UJZDK0u+ID3gMlPnhWeMkKtI92EiBc50f2IbMsHFOz5/tiXRxeNoypJStgp3QrTajebDOA9LG7bEkZ48QKu5zw3IvY0= ;{id = 42393} +0B706172726F742D65746831096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D0577918B97CEFF25CBF0AAF575052B7FD78E0FBAA239E9B4FA1A79FA25D239F731917F1C8BEC68E43D510E9152ED9150B9C34F3FBDF6A63DC3C9358BEA59E9859E13EA7D1626F743836A3B813745E58A8305BF726F5205B6D19730535BB5F7887982A87E06820A954A750564C22CB383FA089934B5C5EA3D7D646950CC9816D +parrot-eth1.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0Fd5GLl87/JcvwqvV1BSt/144PuqI56bT6Gnn6JdI59zGRfxyL7GjkPVEOkVLtkVC5w08/vfamPcPJNYvqWemFnhPqfRYm90ODajuBN0XlioMFv3JvUgW20ZcwU1u194h5gqh+BoIKlUp1BWTCLLOD+giZNLXF6j19ZGlQzJgW0= ;{id = 42393} +0B706172726F742D65746831096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00354AFEC42E2159F59085538F0592BDCB97CAF551C9C1DA35F8930BB2AF910021AC83F8D1DFA7EF828E72D417910F161A00D0F3B27974179836127E1576CA52D6287A6E22F1F8E1A84EEFD40BFF445E29F76846C74C78E9807959206D3C71C8CD22F0FF676DF3123596951E30E40F3B7E74A942435DE9F749F158422229862039 +parrot-eth1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. NUr+xC4hWfWQhVOPBZK9y5fK9VHJwdo1+JMLsq+RACGsg/jR36fvgo5y1BeRDxYaANDzsnl0F5g2En4VdspS1ih6biLx+OGoTu/UC/9EXin3aEbHTHjpgHlZIG08ccjNIvD/Z23zEjWWlR4w5A87fnSpQkNd6fdJ8VhCIimGIDk= ;{id = 42393} +0B706172726F742D65746831096E6C6E65746C616273026E6C00002C0001000027D800160101236402543271F5A0B9812DE20FC4C2C6A67133B8 +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 1 1 236402543271F5A0B9812DE20FC4C2C6A67133B8 +0B706172726F742D65746831096E6C6E65746C616273026E6C00002C0001000027D800160201C6DC2F86740D2647D38F29C23176A470C5ECC99F +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 2 1 C6DC2F86740D2647D38F29C23176A470C5ECC99F +0B706172726F742D65746831096E6C6E65746C616273026E6C00002C0001000027D800160301BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +parrot-eth1.nlnetlabs.nl. 10200 IN SSHFP 3 1 BEB7AEF3528B63AAA7163C07B9ED167C6715C14E +0B706172726F742D65746831096E6C6E65746C616273026E6C00002F000100000E10001D0670686F626F73096E6C6E65746C616273026E6C00000600000008000B +parrot-eth1.nlnetlabs.nl. 3600 IN NSEC phobos.nlnetlabs.nl. AAAA SSHFP RRSIG NSEC +0670686F626F73096E6C6E65746C616273026E6C0000010001000027D80004D59AE067 +phobos.nlnetlabs.nl. 10200 IN A 213.154.224.103 +0670686F626F73096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002D2EEF9FF0B8956C3A98EBB8A9F8B0D5AEB5AFCBD903C74AE3608A13C87D385DFB630EDC1FDEED2AE59F9370EF433BFCF0A19862FE852BA6F27FA587543F5EF1F3222AB1BCB8A2E3B4E3F9CC80AEA279F712CB4640F4F8EFB2C4B3B66E73B400128BADC9CC827EE3905E8CB4AE249E8C993DB4F71298712D8AF4560BDC1C1784 +phobos.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. LS7vn/C4lWw6mOu4qfiw1a61r8vZA8dK42CKE8h9OF37Yw7cH97tKuWfk3DvQzv88KGYYv6FK6byf6WHVD9e8fMiKrG8uKLjtOP5zICuonn3EstGQPT477LEs7Zuc7QAEoutycyCfuOQXoy0riSejJk9tPcSmHEtivRWC9wcF4Q= ;{id = 42393} +0670686F626F73096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008EF58826717612593E148043C90A3B984E32885B67D0DB7134D955DFD8600484878F0E45E90C9A796F519A0B6F6332D7B738CDEDF0DB42B3E1C24AAB75055A2899E614E19D20EC10C21B4A650D8575BBA9C6EE2503BC7469B4C91E4E07E695F1E003087D584E750859E3D424DB482AEAD7B9E2DFBF0FC05772370E9E0E5B8412 +phobos.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jvWIJnF2Elk+FIBDyQo7mE4yiFtn0NtxNNlV39hgBISHjw5F6QyaeW9RmgtvYzLXtzjN7fDbQrPhwkqrdQVaKJnmFOGdIOwQwhtKZQ2Fdbupxu4lA7x0abTJHk4H5pXx4AMIfVhOdQhZ49Qk20gq6te54t+/D8BXcjcOng5bhBI= ;{id = 42393} +0670686F626F73096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0099D6EFF54F757FCC17425BDDCB9C801202B1069765A4548528BBDD2A667AACEAFAF3660A424FB56134EEA374A0EF45F7765C3A617E22982FDAE92B0C49FF784456D6466E7C8513B2549F7FAD77EAEF7EC0F1C044F41A0F18423E71316CEA6A8FA7584C689E9A643175E9452E66B49E51D77C7AA31803838770712BA0D867A507 +phobos.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mdbv9U91f8wXQlvdy5yAEgKxBpdlpFSFKLvdKmZ6rOr682YKQk+1YTTuo3Sg70X3dlw6YX4imC/a6SsMSf94RFbWRm58hROyVJ9/rXfq737A8cBE9BoPGEI+cTFs6mqPp1hMaJ6aZDF16UUuZrSeUdd8eqMYA4OHcHEroNhnpQc= ;{id = 42393} +0670686F626F73096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A26608F24CE37F730CCBD32DE11B6D8BE4E2865A2ADCD9D6DE2537113E524AD3F2B6677A59171D1ED2AD7531CD438744C5B36AA3697B63DCF2CAA41123C6C29A3009514E9845321D0CC35BEB28497EBB5AE280ACB397B82380D3E011408C04FA1CF7BFD24D3577683A911859E8C59086B4BA66832CFBFEF3520D935497A5D2BB +phobos.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. omYI8kzjf3MMy9Mt4Rtti+Tihloq3NnW3iU3ET5SStPytmd6WRcdHtKtdTHNQ4dExbNqo2l7Y9zyyqQRI8bCmjAJUU6YRTIdDMNb6yhJfrta4oCss5e4I4DT4BFAjAT6HPe/0k01d2g6kRhZ6MWQhrS6ZoMs+/7zUg2TVJel0rs= ;{id = 42393} +0670686F626F73096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001020F1FFFFE68F6B7 +phobos.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:20f:1fff:fe68:f6b7 +0670686F626F73096E6C6E65746C616273026E6C00002C0001000027D800160101CF3E74EBEBF9DE88D1A14BCFC387C00607E682ED +phobos.nlnetlabs.nl. 10200 IN SSHFP 1 1 CF3E74EBEBF9DE88D1A14BCFC387C00607E682ED +0670686F626F73096E6C6E65746C616273026E6C00002C0001000027D800160201241A96919F7837B20DB540C7B1E0A0A7F45C8A07 +phobos.nlnetlabs.nl. 10200 IN SSHFP 2 1 241A96919F7837B20DB540C7B1E0A0A7F45C8A07 +0670686F626F73096E6C6E65746C616273026E6C00002F000100000E10001E07706C7569736A65096E6C6E65746C616273026E6C00000640000008000B +phobos.nlnetlabs.nl. 3600 IN NSEC pluisje.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +07706C7569736A65096E6C6E65746C616273026E6C0000050001000027D8001506666C75666679096E6C6E65746C616273026E6C00 +pluisje.nlnetlabs.nl. 10200 IN CNAME fluffy.nlnetlabs.nl. +07706C7569736A65096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C2FAD89F675D7EEBB3F85DB9F9D8DA1787CCAA782AECA40490573E26F44CC60BC1140CEDD1922137E0B9EA39BF4BA83FE892671A54E9127575D8B0BA7A514D7F01AAA2C1DBB6F2EDCE540C092AE1376B8BE348306D1AA25D9964FE888FBE72A615C6E3E65AAC7CFA1D31BDA7DF06354C7F0B620C8D8536B4AF40DF5138BC3CCE +pluisje.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. wvrYn2ddfuuz+F25+djaF4fMqngq7KQEkFc+JvRMxgvBFAzt0ZIhN+C56jm/S6g/6JJnGlTpEnV12LC6elFNfwGqosHbtvLtzlQMCSrhN2uL40gwbRqiXZlk/oiPvnKmFcbj5lqsfPodMb2n3wY1TH8LYgyNhTa0r0DfUTi8PM4= ;{id = 42393} +07706C7569736A65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00904426753FF3E6A2D308AFE012B697E2BAF0D848F4C9E53C43EAD2F034C7884760C0E3C1141F8DE7ABE372D75A2746BB9E8CBF047BFB3A6DFF20307217697DF1ADE2CA8784E5A8DE5F8F3FB2E11F8663B9517009AD3CCC9C5340601C1102C9714B3663C99CD0939131AFF63B68024533AB52CE817E24118F37AE1FF39A74BFB8 +pluisje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kEQmdT/z5qLTCK/gEraX4rrw2Ej0yeU8Q+rS8DTHiEdgwOPBFB+N56vjctdaJ0a7noy/BHv7Om3/IDByF2l98a3iyoeE5ajeX48/suEfhmO5UXAJrTzMnFNAYBwRAslxSzZjyZzQk5Exr/Y7aAJFM6tSzoF+JBGPN64f85p0v7g= ;{id = 42393} +07706C7569736A65096E6C6E65746C616273026E6C00002F000100000E10001D0672326D696E65096E6C6E65746C616273026E6C000006040000000003 +pluisje.nlnetlabs.nl. 3600 IN NSEC r2mine.nlnetlabs.nl. CNAME RRSIG NSEC +0672326D696E65096E6C6E65746C616273026E6C0000050001000027D80013046D696E65096E6C6E65746C616273026E6C00 +r2mine.nlnetlabs.nl. 10200 IN CNAME mine.nlnetlabs.nl. +0672326D696E65096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00901C3922E22BE6DB42E118452862C4391D1249F848757DE3ED9FA483B8200A8C3DC84C586F092ECFF635B67820359E00BCA2CE519E54412D15FF11FCF0453FC02C74053A4996BEF5B2958240177130386B92951778FBBEB1CCA275E70EEC05D7496BC3C75E6F0CE7F44B905E03C107B35DBB2C89EACE848683B27B47CFBD740D +r2mine.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kBw5IuIr5ttC4RhFKGLEOR0SSfhIdX3j7Z+kg7ggCow9yExYbwkuz/Y1tnggNZ4AvKLOUZ5UQS0V/xH88EU/wCx0BTpJlr71spWCQBdxMDhrkpUXePu+scyidecO7AXXSWvDx15vDOf0S5BeA8EHs127LInqzoSGg7J7R8+9dA0= ;{id = 42393} +0672326D696E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00169BD45D073D22778A4683640AEAED67159A9D059806A69383F733A68473DEC425597CE81DA4F5505ED8146F4E28FA5DC0825813E9D5F0FC80DD677BC4F5F5303C2DFBC53C88F50D88420DC4EE6AA644C6A5A867E51D9492784D92514919D890953440ED0CECBABE6F6FEB772027F78EB588B606F8C63792222EBEABC371BAB1 +r2mine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. FpvUXQc9IneKRoNkCurtZxWanQWYBqaTg/czpoRz3sQlWXzoHaT1UF7YFG9OKPpdwIJYE+nV8PyA3Wd7xPX1MDwt+8U8iPUNiEINxO5qpkTGpahn5R2UknhNklFJGdiQlTRA7Qzsur5vb+t3ICf3jrWItgb4xjeSIi6+q8NxurE= ;{id = 42393} +0672326D696E65096E6C6E65746C616273026E6C00002F000100000E10001D06726164697573096E6C6E65746C616273026E6C000006040000000003 +r2mine.nlnetlabs.nl. 3600 IN NSEC radius.nlnetlabs.nl. CNAME RRSIG NSEC +06726164697573096E6C6E65746C616273026E6C0000010001000027D80004D59AE093 +radius.nlnetlabs.nl. 10200 IN A 213.154.224.147 +06726164697573096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007C9053CB826CBE174BA35A87135869E166804CD6F4763400E827C085E51138D4975D27AF7DF9BC6124113A702F2E99D5E80E8DC98060D35E8F9ED065C15717F5CB3AE2DA2BB82F118C2DB09457B3C0D3AEDFCA391879663410F0E27A57C677EEB765344F46298B30278370968416CFBB1480CA83CD115EA41A41816C71BB9B8D +radius.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fJBTy4JsvhdLo1qHE1hp4WaATNb0djQA6CfAheURONSXXSevffm8YSQROnAvLpnV6A6NyYBg016PntBlwVcX9cs64toruC8RjC2wlFezwNOu38o5GHlmNBDw4npXxnfut2U0T0YpizAng3CWhBbPuxSAyoPNEV6kGkGBbHG7m40= ;{id = 42393} +06726164697573096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00D21770207DB05A4B802791DDFB6323B69B8D2CD456398C6055C06219D424E5EAEA7B0FC81CE1C1830735482F275FB9100F15E2BFFF88378D6433205F6247D5EF7D639776263058AD52FA9E265707BF83736A7B0F95F7E11FB84FF3C9DC9C6A2130E5501C1347C723E4DC63AA9A77039470661EA10632B7F5190533557B401E6D +radius.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. 0hdwIH2wWkuAJ5Hd+2MjtpuNLNRWOYxgVcBiGdQk5erqew/IHOHBgwc1SC8nX7kQDxXiv/+IN41kMyBfYkfV731jl3YmMFitUvqeJlcHv4NzansPlffhH7hP88ncnGohMOVQHBNHxyPk3GOqmncDlHBmHqEGMrf1GQUzVXtAHm0= ;{id = 42393} +06726164697573096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001AFC2574C73029D08D63EA9A084DC1AE11BDD8CCA256F9A118331E15FDCF0ED975433F7AE79414DDCF86DD79815D183D3EF023BA342028A2B9CB4AEFB9A4F05A6D4FE11387CCABAF257467FC55521991A448BF3E436467A502761EB2E4E7007AD8CC54545B611B2BE52D4F4BD04AFDC373D8A65D1ED6B898DC82B87FC228EDDC +radius.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GvwldMcwKdCNY+qaCE3BrhG92MyiVvmhGDMeFf3PDtl1Qz9655QU3c+G3XmBXRg9PvAjujQgKKK5y0rvuaTwWm1P4ROHzKuvJXRn/FVSGZGkSL8+Q2RnpQJ2HrLk5wB62MxUVFthGyvlLU9L0Er9w3PYpl0e1riY3IK4f8Io7dw= ;{id = 42393} +06726164697573096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001E5DB531FAE93CBDFC86B2402F8AE1D4C6E33C4688310FC267C99FA3939441DBBEA1BE7FC472D5C274085A1A244C9C541360CC6F815A4CC29F6701CAA520766DDF3E5117DBCE60AADE92A410EE35BC76FBFDA2F9A36A8B97BB69B57D01ABFF1A4AF511A2B1E9F9407935132EB01EBDDF866D804381AF4D9C581EB8F34EEE7CD6 +radius.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Hl21MfrpPL38hrJAL4rh1MbjPEaIMQ/CZ8mfo5OUQdu+ob5/xHLVwnQIWhokTJxUE2DMb4FaTMKfZwHKpSB2bd8+URfbzmCq3pKkEO41vHb7/aL5o2qLl7tptX0Bq/8aSvURorHp+UB5NRMusB6934ZtgEOBr02cWB64807ufNY= ;{id = 42393} +06726164697573096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002900000000 +radius.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:29:: +06726164697573096E6C6E65746C616273026E6C00002C0001000027D8001601015E43419E9239E5FA11E9FD62E43D7D2DD68B8E8D +radius.nlnetlabs.nl. 10200 IN SSHFP 1 1 5E43419E9239E5FA11E9FD62E43D7D2DD68B8E8D +06726164697573096E6C6E65746C616273026E6C00002C0001000027D8001602017204FD27ED4E7C8606AF3BF29EB4932BEDDBD3C1 +radius.nlnetlabs.nl. 10200 IN SSHFP 2 1 7204FD27ED4E7C8606AF3BF29EB4932BEDDBD3C1 +06726164697573096E6C6E65746C616273026E6C00002C0001000027D8001603012AAA7EEBA4B08802488E1AF6551C091025C7536A +radius.nlnetlabs.nl. 10200 IN SSHFP 3 1 2AAA7EEBA4B08802488E1AF6551C091025C7536A +06726164697573096E6C6E65746C616273026E6C00002F000100000E10001E077265646D696E65096E6C6E65746C616273026E6C00000640000008000B +radius.nlnetlabs.nl. 3600 IN NSEC redmine.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +077265646D696E65096E6C6E65746C616273026E6C0000050001000027D800130462656C61096E6C6E65746C616273026E6C00 +redmine.nlnetlabs.nl. 10200 IN CNAME bela.nlnetlabs.nl. +077265646D696E65096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B7B08951B3F0A41FDACCA3265971F7577186EB930DECEA2D5DE3043D4AEECCE0E4E861085EA8DE379A8F1956168DE2AF313D58509A39A573BB562F22169208185487FAA36476E6CB25346FD877553E8B0B7A868C34BC67E93C473731A21996577E40A7A7D1D6955DDC8EB8905214932252724ED083DF988CC543F68F61417BF0 +redmine.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. t7CJUbPwpB/azKMmWXH3V3GG65MN7OotXeMEPUruzODk6GEIXqjeN5qPGVYWjeKvMT1YUJo5pXO7Vi8iFpIIGFSH+qNkdubLJTRv2HdVPosLeoaMNLxn6TxHNzGiGZZXfkCnp9HWlV3cjriQUhSTIlJyTtCD35iMxUP2j2FBe/A= ;{id = 42393} +077265646D696E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002B1F188AB86B1FD740E90DA13ECD7D0D70068527799E492EEE333D445D5491A1090AF1DA6F3D2E32142648BBCFA0336B77EFFF34850CC6DF1F7900256B3702A47EC0A986CF64B25A120BF1AC7FC8AAF56E96F086F1DD404CC3D6B7BDD7D558AB8BA891675F58BD86660D2CE748F8BF3EBAF6D21D45A9206D75C179A63925FA5D +redmine.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Kx8YirhrH9dA6Q2hPs19DXAGhSd5nkku7jM9RF1UkaEJCvHabz0uMhQmSLvPoDNrd+//NIUMxt8feQAlazcCpH7AqYbPZLJaEgvxrH/IqvVulvCG8d1ATMPWt73X1Viri6iRZ19YvYZmDSznSPi/Prr20h1FqSBtdcF5pjkl+l0= ;{id = 42393} +077265646D696E65096E6C6E65746C616273026E6C00002F000100000E1000240462696E64087265736F6C766572096E6C6E65746C616273026E6C000006040000000003 +redmine.nlnetlabs.nl. 3600 IN NSEC bind.resolver.nlnetlabs.nl. CNAME RRSIG NSEC +0462696E64087265736F6C766572096E6C6E65746C616273026E6C0000010001000027D80004D59AE018 +bind.resolver.nlnetlabs.nl. 10200 IN A 213.154.224.24 +0462696E64087265736F6C766572096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C86E4DB5DFCBCECC46800610C1D9FAA2EE749CBCA7B25B8419D5F9138EA74D45A75A5A9B811953A651A920D7C8BC77F7FA5C3FF21FB9AEB6CC4EB8E517133D779BE776D1D0A29BBFFBC5F9B43438AFE32F6039EDB5CED579A545FA954C1C242A4448253CD810AA3F85235B324F88EB9F45A81D7AA74AA795AC202E338580B826 +bind.resolver.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yG5Ntd/LzsxGgAYQwdn6ou50nLynsluEGdX5E46nTUWnWlqbgRlTplGpINfIvHf3+lw/8h+5rrbMTrjlFxM9d5vndtHQopu/+8X5tDQ4r+MvYDnttc7VeaVF+pVMHCQqREglPNgQqj+FI1syT4jrn0WoHXqnSqeVrCAuM4WAuCY= ;{id = 42393} +0462696E64087265736F6C766572096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0066D281536426E3958EBB24B5DBD3788C3E53EC514E54B9F270587C1A1DF4CB456F7EC7A0501FEBEC207F59841B9DE019C9BA501CA571083D5E79BD4F87C0CBE8D64F384F11A2F24A819CAEFA4AFA58E802F17248B56877787C93AD8AF55FD819ADBEB9DB9E35AEEEA9FB10F444D082B1C5868E1D2D0A3A439F3C8CBC123808BD +bind.resolver.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZtKBU2Qm45WOuyS129N4jD5T7FFOVLnycFh8Gh30y0VvfsegUB/r7CB/WYQbneAZybpQHKVxCD1eeb1Ph8DL6NZPOE8RovJKgZyu+kr6WOgC8XJItWh3eHyTrYr1X9gZrb652541ru6p+xD0RNCCscWGjh0tCjpDnzyMvBI4CL0= ;{id = 42393} +0462696E64087265736F6C766572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002F5944082D4FA50023AFD511A3DB642A4E709FD3AD0D38062B0F693900D185A60338DCF6485E08283BD2999FF44EDBE724DD210E4004E76EEC4275264FC6122C9438EEB18CE131EE43EDA86064AC83EEA3377E9D3F963F4FDDBFC431E64E6F075D4620A7C72A8F72717A8B5587A206C4EBD839E0D8E1EEA1D7AD2FE511212149 +bind.resolver.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. L1lECC1PpQAjr9URo9tkKk5wn9OtDTgGKw9pOQDRhaYDONz2SF4IKDvSmZ/0TtvnJN0hDkAE527sQnUmT8YSLJQ47rGM4THuQ+2oYGSsg+6jN36dP5Y/T92/xDHmTm8HXUYgp8cqj3JxeotVh6IGxOvYOeDY4e6h160v5REhIUk= ;{id = 42393} +0462696E64087265736F6C766572096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000024 +bind.resolver.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::24 +0462696E64087265736F6C766572096E6C6E65746C616273026E6C00002F000100000E10002707756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C000006400000080003 +bind.resolver.nlnetlabs.nl. 3600 IN NSEC unbound.resolver.nlnetlabs.nl. A AAAA RRSIG NSEC +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C0000010001000027D80004D59AE017 +unbound.resolver.nlnetlabs.nl. 10200 IN A 213.154.224.23 +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0046B305FB3FF672025622862AB8F1AE9F1ED9646B8DB90EA25403A5BFB9113883BA2848B8383757E30ECAA35674EC58FE3231D9A220B4EA0BCAC3429E6011012A895055F4886102AE2C5EFD0AB6A05A8EA433B8E981D7AE3B734EF3FBF20CBD5535540CBB79C6DD690D3330D572076A9C5EE2935EDC2AF284A274FEB634B4EC46 +unbound.resolver.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RrMF+z/2cgJWIoYquPGunx7ZZGuNuQ6iVAOlv7kROIO6KEi4ODdX4w7Ko1Z07Fj+MjHZoiC06gvKw0KeYBEBKolQVfSIYQKuLF79CragWo6kM7jpgdeuO3NO8/vyDL1VNVQMu3nG3WkNMzDVcgdqnF7ik17cKvKEonT+tjS07EY= ;{id = 42393} +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008C0C3224A67FDE645DAF8A30E2E2E91A880D4028327D6EA6D6F767E3E19106203AEA86E75116EF5355F83345D76A1231894C838380039CF09CA234C32F9832D0D08503EF74B6B6959AB4E3AD46A9348D451AD4EB04521178C0EC588405A011C49F75404A63CA4B090A245F7D7D7FF7380DF960FE5CDDD0BB861A39214540627B +unbound.resolver.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jAwyJKZ/3mRdr4ow4uLpGogNQCgyfW6m1vdn4+GRBiA66obnURbvU1X4M0XXahIxiUyDg4ADnPCcojTDL5gy0NCFA+90traVmrTjrUapNI1FGtTrBFIReMDsWIQFoBHEn3VASmPKSwkKJF99fX/3OA35YP5c3dC7hho5IUVAYns= ;{id = 42393} +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007930A3E1ADC2A3270ED2C660B5D6ABDB1FA4346D8CCA2AB3DB3FC5F73B2CAB3BD24203B821A80605D88B4073C6EDCDC9E4786B99A0582D2470561730B99B9724FF34F0D713212D8720122758F5F0BD7A73C5CC19EBF63E8DF9255241793BAB3296AEF43C0028C652EE84D6EFA3CADBF720A879476E2E301917D471BB74896BFB +unbound.resolver.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. eTCj4a3CoycO0sZgtdar2x+kNG2Myiqz2z/F9zssqzvSQgO4IagGBdiLQHPG7c3J5HhrmaBYLSRwVhcwuZuXJP808NcTIS2HIBInWPXwvXpzxcwZ6/Y+jfklUkF5O6sylq70PAAoxlLuhNbvo8rb9yCoeUduLjAZF9Rxu3SJa/s= ;{id = 42393} +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000023 +unbound.resolver.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::23 +07756E626F756E64087265736F6C766572096E6C6E65746C616273026E6C00002F000100000E10001D06726970653637096E6C6E65746C616273026E6C000006400000080003 +unbound.resolver.nlnetlabs.nl. 3600 IN NSEC ripe67.nlnetlabs.nl. A AAAA RRSIG NSEC +06726970653637096E6C6E65746C616273026E6C0000020001000027D80018026E7306726970653637096E6C6E65746C616273026E6C00 +ripe67.nlnetlabs.nl. 10200 IN NS ns.ripe67.nlnetlabs.nl. +06726970653637096E6C6E65746C616273026E6C00002F000100000E10001B04726F746F096E6C6E65746C616273026E6C000006200000000003 +ripe67.nlnetlabs.nl. 3600 IN NSEC roto.nlnetlabs.nl. NS RRSIG NSEC +06726970653637096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0091B0FC2C9AB0192E2A3E71C26F637A15D98BCF05803A714D908A14C798CE0645BE053521020A7C810F98717F31C9F838C280ECB46BD48CE58419591D4BC32169D26B976B9C4332F491BD6336289A7DA7DC0F9ED53740ACBF3542DEBBB1C61FC0F1E71C1A4BF4C846CAC454116F8E67B2F49118945C4B8B4C3E16E51501AD2377 +ripe67.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kbD8LJqwGS4qPnHCb2N6FdmLzwWAOnFNkIoUx5jOBkW+BTUhAgp8gQ+YcX8xyfg4woDstGvUjOWEGVkdS8MhadJrl2ucQzL0kb1jNiiafafcD57VN0CsvzVC3ruxxh/A8eccGkv0yEbKxFQRb45nsvSRGJRcS4tMPhblFQGtI3c= ;{id = 42393} +026E7306726970653637096E6C6E65746C616273026E6C00001C0001000027D80010200107B800400001D0E1000000000002 +ns.ripe67.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:40:1:d0e1::2 +04726F746F096E6C6E65746C616273026E6C0000010001000027D80004D59AE099 +roto.nlnetlabs.nl. 10200 IN A 213.154.224.153 +04726F746F096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CB592217CDEA8E5C5DD68963AD860E42B73B8C9308D19674ACDEBF7D649DDB52AE3BCFD3FA8A12AEEF0A541331A4D24A97BDD04E89368C0E7496D0E60CC29F9D185E2643E6299BD1B7EBCB2C3A27C9D688099A21958F2EBE89BD96DCD5323AD83F78971965355CE597AFB24B2E843D99932F2565465D68E9E625D2386597358A +roto.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. y1kiF83qjlxd1oljrYYOQrc7jJMI0ZZ0rN6/fWSd21KuO8/T+ooSru8KVBMxpNJKl73QTok2jA50ltDmDMKfnRheJkPmKZvRt+vLLDonydaICZohlY8uvom9ltzVMjrYP3iXGWU1XOWXr7JLLoQ9mZMvJWVGXWjp5iXSOGWXNYo= ;{id = 42393} +04726F746F096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0077342B7A7A6E693A4A95342649DD790DF7F671D6B489874F0FA2A9AA0145F06786B9E983A04C285F3F415512C3AE027E65660B9B3F16F75FD81184F854FF513B7622D41CF181853B10614458F311E95CDFEEB124EE1CEB59E70D7AA68BE2816F23FC2294B93ADA2F100FC6CA7310ADD2B3DA19F271A033DF634E6A3DD30E9B54 +roto.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. dzQrenpuaTpKlTQmSd15Dff2cda0iYdPD6KpqgFF8GeGuemDoEwoXz9BVRLDrgJ+ZWYLmz8W91/YEYT4VP9RO3Yi1BzxgYU7EGFEWPMR6Vzf7rEk7hzrWecNeqaL4oFvI/wilLk62i8QD8bKcxCt0rPaGfJxoDPfY05qPdMOm1Q= ;{id = 42393} +04726F746F096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0009D2FC06D256F56A9ED36F6963E4E5B5789443877CBAA4D64B70A8358E33C9DB60542144B69E380311DD452E7848BD36290C9C765DE02A328F22279A9879592E16E9FCC70F35BA3BB58F88CEDAED682E12B273EE24D6EB05921F0F45D023BAC3DE87DF7173FEA21180F5314581284B53E426FDBAB7F1D73F3D657B98BB20F6AB +roto.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. CdL8BtJW9Wqe029pY+TltXiUQ4d8uqTWS3CoNY4zydtgVCFEtp44AxHdRS54SL02KQycdl3gKjKPIieamHlZLhbp/McPNbo7tY+IztrtaC4SsnPuJNbrBZIfD0XQI7rD3offcXP+ohGA9TFFgShLU+Qm/bq38dc/PWV7mLsg9qs= ;{id = 42393} +04726F746F096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000153 +roto.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::153 +04726F746F096E6C6E65746C616273026E6C00002F000100000E10001B0472706B69096E6C6E65746C616273026E6C000006400000080003 +roto.nlnetlabs.nl. 3600 IN NSEC rpki.nlnetlabs.nl. A AAAA RRSIG NSEC +0472706B69096E6C6E65746C616273026E6C0000010001000027D80004D59AE009 +rpki.nlnetlabs.nl. 10200 IN A 213.154.224.9 +0472706B69096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001912322E522E6AF69D8E6C4D464046E29A5895341DF91408773CB73D0B1A25625562FD33E4E14C86B4479A95FC8C1C3D44982D8E51BE27AC6DF095BB9ED10392B76D073EE1E836816A4FF5A631DCBBC3348654244FB03AC020072D9717D9A1037C08E59CD3BBF2DFFFABF08415B3C12592BD29AA475C7234A44D0DC3B3971C71 +rpki.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GRIyLlIuavadjmxNRkBG4ppYlTQd+RQIdzy3PQsaJWJVYv0z5OFMhrRHmpX8jBw9RJgtjlG+J6xt8JW7ntEDkrdtBz7h6DaBak/1pjHcu8M0hlQkT7A6wCAHLZcX2aEDfAjlnNO78t//q/CEFbPBJZK9KapHXHI0pE0Nw7OXHHE= ;{id = 42393} +0472706B69096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B8918718F8F1917E1BF9C31872A33C15ECF531A806239C3E38824C6590B753B97C89DBC3634E382BF4D8236E1A285CE9C159B66156E549CD5A55013C707FDB4BEC2C00F9C45CB0E12036FC6E4D92737C63D72598D1ED445DCB26219D3B734990DD0A28488340328BCEC4F64A630DCC1477C3083154329ABF7249A330628AD7B7 +rpki.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. uJGHGPjxkX4b+cMYcqM8Fez1MagGI5w+OIJMZZC3U7l8idvDY044K/TYI24aKFzpwVm2YVblSc1aVQE8cH/bS+wsAPnEXLDhIDb8bk2Sc3xj1yWY0e1EXcsmIZ07c0mQ3QooSINAMovOxPZKYw3MFHfDCDFUMpq/ckmjMGKK17c= ;{id = 42393} +0472706B69096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0021426357A84530E04B5487BFF866C232BC8C7BC9EDFBC241FB39BBDEE4B1B9E8CE735AD77C7BFC6B6517D95DBFAF2206445CB8C2D638443F0532B0DB6E31870342A8EC0DE0D8B7D0A0E2D3232F8AE8E417A6E732423B4F9F2E172F169B9C513613A10D2652CCE32D0EEDEEFE490E350A1C06283C17B7B6FAA1243EEC13769CB9 +rpki.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IUJjV6hFMOBLVIe/+GbCMryMe8nt+8JB+zm73uSxuejOc1rXfHv8a2UX2V2/ryIGRFy4wtY4RD8FMrDbbjGHA0Ko7A3g2LfQoOLTIy+K6OQXpucyQjtPny4XLxabnFE2E6ENJlLM4y0O7e7+SQ41ChwGKDwXt7b6oSQ+7BN2nLk= ;{id = 42393} +0472706B69096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009B50CD971F1BA53142F284A27F5F5EAC909D5E7FD25C9188213727E1EF33E4D49617EFFDAD7FE47CBEF99DA1122962347DED2F7125D2A03629B187D57976A0AEFCD117AE230FE50F4439FB85840564D3DB1034D0AB4CE2528AA6C2C30B43444525E39C1E7DF173B77EC7CD212881F55F6B0DA31F50854925B1D0AB3E350CAF6A +rpki.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. m1DNlx8bpTFC8oSif19erJCdXn/SXJGIITcn4e8z5NSWF+/9rX/kfL75naESKWI0fe0vcSXSoDYpsYfVeXagrvzRF64jD+UPRDn7hYQFZNPbEDTQq0ziUoqmwsMLQ0RFJeOcHn3xc7d+x80hKIH1X2sNox9QhUklsdCrPjUMr2o= ;{id = 42393} +0472706B69096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010BAC000300000000 +rpki.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:bac:3:: +0472706B69096E6C6E65746C616273026E6C00002C0001000027D800160101B4A8A3D4666C1D78F12E7EC01A8CDA045D263B74 +rpki.nlnetlabs.nl. 10200 IN SSHFP 1 1 B4A8A3D4666C1D78F12E7EC01A8CDA045D263B74 +0472706B69096E6C6E65746C616273026E6C00002C0001000027D8001602010C494EEF742E482001BD6FFCC8AEC370D1A8FE3B +rpki.nlnetlabs.nl. 10200 IN SSHFP 2 1 0C494EEF742E482001BD6FFCC8AEC370D1A8FE3B +0472706B69096E6C6E65746C616273026E6C00002F000100000E100019027274096E6C6E65746C616273026E6C00000640000008000B +rpki.nlnetlabs.nl. 3600 IN NSEC rt.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +027274096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +rt.nlnetlabs.nl. 10200 IN A 213.154.224.1 +027274096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CB1274032F9C2CFBCE1391830870E39DF9C1085B75A957B2F943F19D3FC4EEE0AF448E2EB58C3A45235C92166EC352D35BFC43F4320293465B1CA28608092F7A4F4F678E61B0AE3886D6372488460A5B6460275B29AFE6327EA4F5B5DE5EFE7B19346CB316530F04FF6CA8138E2CB5CE83DA7D93ADCC7E84A13F6604BACE7C63 +rt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yxJ0Ay+cLPvOE5GDCHDjnfnBCFt1qVey+UPxnT/E7uCvRI4utYw6RSNckhZuw1LTW/xD9DICk0ZbHKKGCAkvek9PZ45hsK44htY3JIhGCltkYCdbKa/mMn6k9bXeXv57GTRssxZTDwT/bKgTjiy1zoPafZOtzH6EoT9mBLrOfGM= ;{id = 42393} +027274096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0091B507B6847C6751B75AF299A78C4521525A0688515BE4F04EEED97DB396051A4A78DA970E0423E9C5EB91E0597DFBC3308C00E269D619D42CE12B552F8D4C5956DA516053249D385784B351843903E4A44C20C527BDCA63123BD34AA4ADD8A7135E0C56BB88855789D9428A0943C99F0CF9A8FCB9393303035358C27579C6AE +rt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kbUHtoR8Z1G3WvKZp4xFIVJaBohRW+TwTu7ZfbOWBRpKeNqXDgQj6cXrkeBZffvDMIwA4mnWGdQs4StVL41MWVbaUWBTJJ04V4SzUYQ5A+SkTCDFJ73KYxI700qkrdinE14MVruIhVeJ2UKKCUPJnwz5qPy5OTMDA1NYwnV5xq4= ;{id = 42393} +027274096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004FC016E7ADC285C510D667DCBA9C8B625047B8F1B7701F2BB1B14356D831F96FB58668DEF15A6C67CEBE97C504C27E1157C70534FEA0BB2B1A20B85B9260FB144DDD747601E47BC9F873A570E820C38A94C60E66F77CDA3C7B3E447E9950D383957E05D11D1D7F7891205D4DB6A22A0103DE63AE11CC9E5AAD3F7B2E8F832981 +rt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. T8AW563ChcUQ1mfcupyLYlBHuPG3cB8rsbFDVtgx+W+1hmje8VpsZ86+l8UEwn4RV8cFNP6guysaILhbkmD7FE3ddHYB5HvJ+HOlcOggw4qUxg5m93zaPHs+RH6ZUNODlX4F0R0df3iRIF1NtqIqAQPeY64RzJ5arT97Lo+DKYE= ;{id = 42393} +027274096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +rt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +027274096E6C6E65746C616273026E6C00002F000100000E10001B0473616C74096E6C6E65746C616273026E6C000006400000080003 +rt.nlnetlabs.nl. 3600 IN NSEC salt.nlnetlabs.nl. A AAAA RRSIG NSEC +0473616C74096E6C6E65746C616273026E6C0000010001000027D80004D59AE091 +salt.nlnetlabs.nl. 10200 IN A 213.154.224.145 +0473616C74096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007FD4D7A86B5169C2EA95BB2B698686195C25427D9139F255945071287CB63617B2B4D0529326640E4DA35A91DDFABDCBA972E0997BDA26AB1A349485432FA02E4F94B2CB713BAFA128F2E3594CC7C350DF36B5786318F7C8457DEB64E9CA6BAD56BAE2149F663825ECE9AC5E66EE7229F14D804C4B62515BF44295AC4F63A801 +salt.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. f9TXqGtRacLqlbsraYaGGVwlQn2ROfJVlFBxKHy2NheytNBSkyZkDk2jWpHd+r3LqXLgmXvaJqsaNJSFQy+gLk+UsstxO6+hKPLjWUzHw1DfNrV4Yxj3yEV962TpymutVrriFJ9mOCXs6axeZu5yKfFNgExLYlFb9EKVrE9jqAE= ;{id = 42393} +0473616C74096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008E920031D9FEC84E6EF83AC63E02E38D1440B03323EE0E565BE7713C7AF085FB51007CD26C370AD38117C5709ED05106074F9A75A51EEC42565CD9FACBDCA753F95EA1A261DE9C90458846BA1E1D4CFDD4922CFAD7EEB38308E6707CA5650F805A48264E1BDC2103444962877DF2F0869CC19802ACB126BEB2AF92CF67345F67 +salt.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jpIAMdn+yE5u+DrGPgLjjRRAsDMj7g5WW+dxPHrwhftRAHzSbDcK04EXxXCe0FEGB0+adaUe7EJWXNn6y9ynU/leoaJh3pyQRYhGuh4dTP3Ukiz61+6zgwjmcHylZQ+AWkgmThvcIQNESWKHffLwhpzBmAKssSa+sq+Sz2c0X2c= ;{id = 42393} +0473616C74096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0096D4A91BCB9E60C70248EA9B8A4172BED02FA1CA7EBE1233C3C65F817EDCBBF7BF950A9AE6A82B83E4474692B0986B0040885C5CEFD96FF596D11B7DD8CFC448216E805E6D80AA4365A252B2E69AF5D3693B5F4BAB51BA844698C830AB1ED7FD6417629929F29D40AC535FAA9E3971C0CC49FF73446ADBAD7D6E0A1BE06DC76B +salt.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ltSpG8ueYMcCSOqbikFyvtAvocp+vhIzw8ZfgX7cu/e/lQqa5qgrg+RHRpKwmGsAQIhcXO/Zb/WW0Rt92M/ESCFugF5tgKpDZaJSsuaa9dNpO19Lq1G6hEaYyDCrHtf9ZBdimSnynUCsU1+qnjlxwMxJ/3NEatutfW4KG+Btx2s= ;{id = 42393} +0473616C74096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002700000000 +salt.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:27:: +0473616C74096E6C6E65746C616273026E6C00002F000100000E10001B0473616E65096E6C6E65746C616273026E6C000006400000080003 +salt.nlnetlabs.nl. 3600 IN NSEC sane.nlnetlabs.nl. A AAAA RRSIG NSEC +0473616E65096E6C6E65746C616273026E6C0000010001000027D80004D59AE006 +sane.nlnetlabs.nl. 10200 IN A 213.154.224.6 +0473616E65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003BB8A0D4EB88F54616FC38E6561DBFA52A951D0C2DF6884BD72C73ACF58095BC6600B4C670D1D45DD1B9924BD1C3FE87780F3741D2DAD83D7493A12C4EBB93A2405613CBD8427886CC38D02E6281098260D4E94F93224B76EDE37C623589AEE7C2F8BCC6E0775FE64CB242A884988D381CBD5978719D2CE1F08D3BA3FA6529FA +sane.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. O7ig1OuI9UYW/DjmVh2/pSqVHQwt9ohL1yxzrPWAlbxmALTGcNHUXdG5kkvRw/6HeA83QdLa2D10k6EsTruTokBWE8vYQniGzDjQLmKBCYJg1OlPkyJLdu3jfGI1ia7nwvi8xuB3X+ZMskKohJiNOBy9WXhxnSzh8I07o/plKfo= ;{id = 42393} +0473616E65096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005011C64BD683AF7FB2E9B0699B807829CD9A6FE30D938F131DF9039C3B57A2F95AA06178A11AF27DF0646EFF008DC9BBA820DF19C93D931314E14A824051351A54287D78EBA4512DF288A9497CBC2B752A484DAE45CAE7B90EDF856B346C50BA3B332B46C2015C85E2996771BF21D60E4A121BFC10806F6169472BB684829DDE +sane.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. UBHGS9aDr3+y6bBpm4B4Kc2ab+MNk48THfkDnDtXovlaoGF4oRryffBkbv8Ajcm7qCDfGck9kxMU4UqCQFE1GlQofXjrpFEt8oipSXy8K3UqSE2uRcrnuQ7fhWs0bFC6OzMrRsIBXIXimWdxvyHWDkoSG/wQgG9haUcrtoSCnd4= ;{id = 42393} +0473616E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C000B7484E60F0D7E3956356A55A9021F6F78B432E852258A4307A8E582371AAB450D1CA79215E664623FC2F1B05F683C64825833B86B61D39597F93EB41E2E6627A2657F139638DBE17286AE9A27CCDF42834ECF58C963B41CBB1E323B10E2C377EF2D3B1137F0DF65BFC0CBCC869B380843A8AF22A56F1083982B9BF7ED6BBED1 +sane.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. C3SE5g8NfjlWNWpVqQIfb3i0MuhSJYpDB6jlgjcaq0UNHKeSFeZkYj/C8bBfaDxkglgzuGth05WX+T60Hi5mJ6JlfxOWONvhcoaumifM30KDTs9YyWO0HLseMjsQ4sN37y07ETfw32W/wMvMhps4CEOoryKlbxCDmCub9+1rvtE= ;{id = 42393} +0473616E65096E6C6E65746C616273026E6C00002C0001000027D800160101F899FD53D7C64116C900636BA15638CCD243AC64 +sane.nlnetlabs.nl. 10200 IN SSHFP 1 1 F899FD53D7C64116C900636BA15638CCD243AC64 +0473616E65096E6C6E65746C616273026E6C00002C0001000027D80016020149B299B7BE787B5D789D2AC9A9532A02224CC59E +sane.nlnetlabs.nl. 10200 IN SSHFP 2 1 49B299B7BE787B5D789D2AC9A9532A02224CC59E +0473616E65096E6C6E65746C616273026E6C00002F000100000E10001C0573616E6E65096E6C6E65746C616273026E6C00000640000000000B +sane.nlnetlabs.nl. 3600 IN NSEC sanne.nlnetlabs.nl. A SSHFP RRSIG NSEC +0573616E6E65096E6C6E65746C616273026E6C0000010001000027D80004D59AE027 +sanne.nlnetlabs.nl. 10200 IN A 213.154.224.39 +0573616E6E65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C007DA7731AA4E89D57788CF4FB2D9BCF20A0C2C60C16578560EA0387054B9090335912FBE7B8ACA5BB81A9F5321BB94E8455ECB71E00CD93FEC459D34E00B624A6179DAADA6577EB5730DA20306C3550CF5F44D4D709D952007100814C582331D5D722AD73A9AC2EE4DF328A2F011CA206401AB113ADB98AD7AACA8992E82B5728 +sanne.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. fadzGqTonVd4jPT7LZvPIKDCxgwWV4Vg6gOHBUuQkDNZEvvnuKylu4Gp9TIbuU6EVey3HgDNk/7EWdNOALYkphedqtpld+tXMNogMGw1UM9fRNTXCdlSAHEAgUxYIzHV1yKtc6msLuTfMoovARyiBkAasROtuYrXqsqJkugrVyg= ;{id = 42393} +0573616E6E65096E6C6E65746C616273026E6C00002E0001000027D800A0000F0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0099E0C6791856C9691345D16612A3B40BD04D5C6A9606B09641D895DA8E69CFE8D207FE2608D3F5A7729F9966235C4E4BC07C39DC8397FB55C3B7694361C23C98BF0CB7C0BF27BE3500E622A9231B0C4782B55187DD2F9A90AA404A3351C7E7788F6B7943E5D4500ABE9F6BF192417A9F7FFE7EF3F707B9A33AD86AB902B5A82C +sanne.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. meDGeRhWyWkTRdFmEqO0C9BNXGqWBrCWQdiV2o5pz+jSB/4mCNP1p3KfmWYjXE5LwHw53IOX+1XDt2lDYcI8mL8Mt8C/J741AOYiqSMbDEeCtVGH3S+akKpASjNRx+d4j2t5Q+XUUAq+n2vxkkF6n3/+fvP3B7mjOthquQK1qCw= ;{id = 42393} +0573616E6E65096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0036399B1FF8C0C509E10C14C0231AD06A51F52E7B3B203AB631B76F412E163E07257BD13430773E42C28593B3703C28D11BE2DE44AD24DC1B652D9ED5DFE8BFBC12D97EB4D163AA030891B86C3C79B48EC5106947B64B07C6AC25D7EFCCE94BAAE519B24A0237218B9D919C7BD68FBEB29B5593D3F9D71C2A4362B9EF7C9A3359 +sanne.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. NjmbH/jAxQnhDBTAIxrQalH1Lns7IDq2MbdvQS4WPgcle9E0MHc+QsKFk7NwPCjRG+LeRK0k3BtlLZ7V3+i/vBLZfrTRY6oDCJG4bDx5tI7FEGlHtksHxqwl1+/M6Uuq5RmySgI3IYudkZx71o++sptVk9P51xwqQ2K573yaM1k= ;{id = 42393} +0573616E6E65096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B2E248CB2B6E6DA3FD4BD105130D803C96EB7507BA4268E6DA704DCFEFE68A43C63A1AF80CC4BAA5ABEA293FB42E65BF3885F06400B5D42B69991FD74E270FBD2DBC927634960F7BA4B6CA72D7E9CDF1DFC78D76415BDB5291021598ACDB86C52D33DADE688943D33148BF2BFB8795238895C0831BDE893BA073A41DD10FDE05 +sanne.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. suJIyytubaP9S9EFEw2APJbrdQe6Qmjm2nBNz+/mikPGOhr4DMS6pavqKT+0LmW/OIXwZAC11CtpmR/XTicPvS28knY0lg97pLbKctfpzfHfx412QVvbUpECFZis24bFLTPa3miJQ9MxSL8r+4eVI4iVwIMb3ok7oHOkHdEP3gU= ;{id = 42393} +0573616E6E65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00A4019AC698C24761791A8336F90752CDD8759F1542D5166E5DD29C7D30DF3C4469BC59EEC6C2BE76301F3AA79A80A1BE562791F0333A4C91A22E480DC97D0E72C04CF9069574AD5888D65DA05406C982E05673452D93B6EB9012B99E9CCE4502068F4457B375076202A42E31F608B80135D37B35C3C2E47F472083B0995042C5 +sanne.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. pAGaxpjCR2F5GoM2+QdSzdh1nxVC1RZuXdKcfTDfPERpvFnuxsK+djAfOqeagKG+VieR8DM6TJGiLkgNyX0OcsBM+QaVdK1YiNZdoFQGyYLgVnNFLZO265ASuZ6czkUCBo9EV7N1B2ICpC4x9gi4ATXTezXDwuR/RyCDsJlQQsU= ;{id = 42393} +0573616E6E65096E6C6E65746C616273026E6C00000F0001000027D8001600320573616E6E65096E6C6E65746C616273026E6C00 +sanne.nlnetlabs.nl. 10200 IN MX 50 sanne.nlnetlabs.nl. +0573616E6E65096E6C6E65746C616273026E6C00000F0001000027D80015004B046F70656E096E6C6E65746C616273026E6C00 +sanne.nlnetlabs.nl. 10200 IN MX 75 open.nlnetlabs.nl. +0573616E6E65096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000017 +sanne.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::17 +0573616E6E65096E6C6E65746C616273026E6C00002C0001000027D800160101F66C63214C667F9C6E7FE0CD3279E5AD373A5F08 +sanne.nlnetlabs.nl. 10200 IN SSHFP 1 1 F66C63214C667F9C6E7FE0CD3279E5AD373A5F08 +0573616E6E65096E6C6E65746C616273026E6C00002C0001000027D8001602013BD2D7189B791521CC000AD9A35AE3CE98926C93 +sanne.nlnetlabs.nl. 10200 IN SSHFP 2 1 3BD2D7189B791521CC000AD9A35AE3CE98926C93 +0573616E6E65096E6C6E65746C616273026E6C00002C0001000027D800160301692BDF4A4777F7FB0E4673F832D552A56FD3C532 +sanne.nlnetlabs.nl. 10200 IN SSHFP 3 1 692BDF4A4777F7FB0E4673F832D552A56FD3C532 +0573616E6E65096E6C6E65746C616273026E6C00002F000100000E1000230C73652D646E732D70726F6265096E6C6E65746C616273026E6C00000640010008000B +sanne.nlnetlabs.nl. 3600 IN NSEC se-dns-probe.nlnetlabs.nl. A MX AAAA SSHFP RRSIG NSEC +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C0000010001000027D80004D59AE005 +se-dns-probe.nlnetlabs.nl. 10200 IN A 213.154.224.5 +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00846990A7CBE01E1346B3098CF977335CBEFB5A6CD715E0A6209929917BC0147FFBD3F33E1F38460732FDD91ABAE9E1406CB877414F299BCB463B5BC85EC9417EC5A1383013F9BF461B9D4125DE4E204980C1D7E189A4BF8ACBA00692963F66D789E548A01398D3673115CC7290FD3784B26DB42EBBDCC567071BE60572837ECD +se-dns-probe.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. hGmQp8vgHhNGswmM+XczXL77WmzXFeCmIJkpkXvAFH/70/M+HzhGBzL92Rq66eFAbLh3QU8pm8tGO1vIXslBfsWhODAT+b9GG51BJd5OIEmAwdfhiaS/isugBpKWP2bXieVIoBOY02cxFcxykP03hLJttC673MVnBxvmBXKDfs0= ;{id = 42393} +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00001373AEE7064277858ABF9FB1F2C791B2CADC03C13DBE82DF945AF7A67DCD10FC602B85A65A43BA077A9FD786B8AC77440E441CB534346A6DB1B1D8EDCC3F920D4A2349E27748AB631DE14D4805C2E55822047E11B3D04B60A60AD60B8C6DB8DEF8BAAF7613DD960910BC9BA19AB4E9360938E3862968E33E67CD982527234A +se-dns-probe.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ABNzrucGQneFir+fsfLHkbLK3APBPb6C35Ra96Z9zRD8YCuFplpDugd6n9eGuKx3RA5EHLU0NGptsbHY7cw/kg1KI0nid0irYx3hTUgFwuVYIgR+EbPQS2CmCtYLjG243vi6r3YT3ZYJELyboZq06TYJOOOGKWjjPmfNmCUnI0o= ;{id = 42393} +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0099273DAE749B7785B76C5C440905C74BAA0CB97D714A3B013C554EA0317898C00900AC97450A891FAA8619609C2E78F416128BEAE23F6C378423C16B6E5F4EB0F603A5D2297EE7A4857D7C398623FF8BBC3F155707A7DFD6760C38C907795E844E4DC4A4F94718352EC1B42714DADFB607DA306DF03BA6687F5226C69925B30F +se-dns-probe.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. mSc9rnSbd4W3bFxECQXHS6oMuX1xSjsBPFVOoDF4mMAJAKyXRQqJH6qGGWCcLnj0FhKL6uI/bDeEI8Frbl9OsPYDpdIpfuekhX18OYYj/4u8PxVXB6ff1nYMOMkHeV6ETk3EpPlHGDUuwbQnFNrftgfaMG3wO6Zof1Imxpklsw8= ;{id = 42393} +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000005 +se-dns-probe.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::5 +0C73652D646E732D70726F6265096E6C6E65746C616273026E6C00002F000100000E10001F087369646E6C616273096E6C6E65746C616273026E6C000006400000080003 +se-dns-probe.nlnetlabs.nl. 3600 IN NSEC sidnlabs.nlnetlabs.nl. A AAAA RRSIG NSEC +087369646E6C616273096E6C6E65746C616273026E6C0000010001000027D80004D59AE08E +sidnlabs.nlnetlabs.nl. 10200 IN A 213.154.224.142 +087369646E6C616273096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006818380269F180C5C2ACF364BA360F98F8DAD3A592D582A4C94725FE5685C5232FB0E02484E55889E04C238771DE955564BD8C7ABFF56EC1F36383B86E5B183F6E7578CEAD3A7B0193F27AA8433CDAFA45BD3CE8857706CB2A3F6BD1AA238B8B7727D9AEA716B02934C2DB2B928AC576F24D90EA36A66542D5D3F8FF90D58119 +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. aBg4AmnxgMXCrPNkujYPmPja06WS1YKkyUcl/laFxSMvsOAkhOVYieBMI4dx3pVVZL2Mer/1bsHzY4O4blsYP251eM6tOnsBk/J6qEM82vpFvTzohXcGyyo/a9GqI4uLdyfZrqcWsCk0wtsrkorFdvJNkOo2pmVC1dP4/5DVgRk= ;{id = 42393} +087369646E6C616273096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00170E076C5D4ADB5BF81E95300EBA9745DE0300D0C9766540828F41FC5F678D97899B0A08C08F6F05C332C99C8C0C90C9ADEC3C07EC2B6FD35672303B3B1C249E8153E10E3AB79FE20DFD7C4D632F5A4B142F39785A61FD600242941D5EAD32F627FC05F94C205DEFF77962BBB395FCDA6EA80F5AC17D3C93B834DF05BE6EE457 +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Fw4HbF1K21v4HpUwDrqXRd4DANDJdmVAgo9B/F9njZeJmwoIwI9vBcMyyZyMDJDJrew8B+wrb9NWcjA7OxwknoFT4Q46t5/iDf18TWMvWksULzl4WmH9YAJClB1erTL2J/wF+UwgXe/3eWK7s5X82m6oD1rBfTyTuDTfBb5u5Fc= ;{id = 42393} +087369646E6C616273096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C003D65A06D184539DEAC6922922144803C7068D3E10B19E0D914E5462F4B1C810F80CC54A3A797E808787A49B0CF9C9C2D203F69B91A73CF86B071EF28ED206C04B5D1EA74CC04F0A88ADFACB383D6D3A14B80644DFB03FD5FF6A611ADF92B81D3B23836122FD43810C794F62567F9598D5CE95ECCD2C6F655FF0C4F3F420CCF11 +sidnlabs.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. PWWgbRhFOd6saSKSIUSAPHBo0+ELGeDZFOVGL0scgQ+AzFSjp5foCHh6SbDPnJwtID9puRpzz4awce8o7SBsBLXR6nTMBPCoit+ss4PW06FLgGRN+wP9X/amEa35K4HTsjg2Ei/UOBDHlPYlZ/lZjVzpXszSxvZV/wxPP0IMzxE= ;{id = 42393} +087369646E6C616273096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00626866A77878B8DC4C731A1E7686B0F838C957443A7520AE687B7AD10AC7F950CCC6526B19B94469923B1EA28C37BA9B1DC02588ADA31E92D50725D4A2A00243B67D0E17C7A5603A64E36EDC1C479561845320221F1F6491FB767A7CF99199376ABED4526D2584B9B239291D4C7E2B90B976FEA959A1D1B839C03DC10B37C5F2 +sidnlabs.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ymhmp3h4uNxMcxoedoaw+DjJV0Q6dSCuaHt60QrH+VDMxlJrGblEaZI7HqKMN7qbHcAliK2jHpLVByXUoqACQ7Z9DhfHpWA6ZONu3BxHlWGEUyAiHx9kkft2enz5kZk3ar7UUm0lhLmyOSkdTH4rkLl2/qlZodG4OcA9wQs3xfI= ;{id = 42393} +087369646E6C616273096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF002400000000 +sidnlabs.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:24:: +087369646E6C616273096E6C6E65746C616273026E6C00002C0001000027D8001601012E0AFA0551B9C86CD1D885F459E189A8EF93701B +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 1 1 2E0AFA0551B9C86CD1D885F459E189A8EF93701B +087369646E6C616273096E6C6E65746C616273026E6C00002C0001000027D800160201C1301EF4F4820AD7723DD382A0B04AE3F03AD13F +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 2 1 C1301EF4F4820AD7723DD382A0B04AE3F03AD13F +087369646E6C616273096E6C6E65746C616273026E6C00002C0001000027D8001603015811302F8A3EF03BC32BB1ABE3C747DD7D9ABB8B +sidnlabs.nlnetlabs.nl. 10200 IN SSHFP 3 1 5811302F8A3EF03BC32BB1ABE3C747DD7D9ABB8B +087369646E6C616273096E6C6E65746C616273026E6C00002F000100000E10001A03736970096E6C6E65746C616273026E6C00000640000008000B +sidnlabs.nlnetlabs.nl. 3600 IN NSEC sip.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +03736970096E6C6E65746C616273026E6C00000500010000000A0016076F62656C69736B096E6C6E65746C616273026E6C00 +sip.nlnetlabs.nl. 10 IN CNAME obelisk.nlnetlabs.nl. +03736970096E6C6E65746C616273026E6C00002E00010000000A00A0000508030000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C0093E13BA638D8BA56EBCC0DD59961ED3813644776995FB14ED432FEFCC924C554887F1165BCE2C8530D012191FB104DCAD6D524B37EE0E7A60D28FD4C5A528D5FD6F7A4AD1A3D67680426043F06239978D9BC4CD0710EC6E00E42D554E7CE8139282B295A034A37AAD9B363DA182CA14E6AEACD3072F797A1B214FF2488D3980C +sip.nlnetlabs.nl. 10 IN RRSIG CNAME 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. k+E7pjjYulbrzA3VmWHtOBNkR3aZX7FO1DL+/MkkxVSIfxFlvOLIUw0BIZH7EE3K1tUks37g56YNKP1MWlKNX9b3pK0aPWdoBCYEPwYjmXjZvEzQcQ7G4A5C1VTnzoE5KCspWgNKN6rZs2PaGCyhTmrqzTBy95ehshT/JIjTmAw= ;{id = 42393} +03736970096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BA332D84DDF6E21E7966FD4C8A07415D5D52F7BCCA368B9D7EEF008E9294EE47A692C33A9D5A8CF0D3D88C559CB691C7364A9E2A242B96FF957BED33FD6572FCF57686BA44903609704B8E4460ECDE47BAC2A99905825AB92C8A2739454CA5DC569E1C4B5E6C8ADCFBB8BFDC737A6C09F7B386AD8BE05FB49DC56D7BD91EA548 +sip.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. ujMthN324h55Zv1MigdBXV1S97zKNoudfu8AjpKU7kemksM6nVqM8NPYjFWctpHHNkqeKiQrlv+Ve+0z/WVy/PV2hrpEkDYJcEuORGDs3ke6wqmZBYJauSyKJzlFTKXcVp4cS15sitz7uL/cc3psCfezhq2L4F+0ncVte9kepUg= ;{id = 42393} +03736970096E6C6E65746C616273026E6C00002F000100000E10001E0773697867617465096E6C6E65746C616273026E6C000006040000000003 +sip.nlnetlabs.nl. 3600 IN NSEC sixgate.nlnetlabs.nl. CNAME RRSIG NSEC +0773697867617465096E6C6E65746C616273026E6C0000010001000027D80004D59AE029 +sixgate.nlnetlabs.nl. 10200 IN A 213.154.224.41 +0773697867617465096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A1BD138A707EAAC6F3BD08B5924F049A5752375918E20F0F74410AE3EDDA367670CA552BD716431D520F9FBBE6E6E815D8F76468B923B7D97B744C8472AF2BD53781F77D7A5C31D17EFE19005E0165A9743944855A8478434AC61F5EC124B5C721129F708EF782EC786098C122BE4134787480A90AE64F41BEDF33B04359F3ED +sixgate.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ob0TinB+qsbzvQi1kk8EmldSN1kY4g8PdEEK4+3aNnZwylUr1xZDHVIPn7vm5ugV2PdkaLkjt9l7dEyEcq8r1TeB9316XDHRfv4ZAF4BZal0OUSFWoR4Q0rGH17BJLXHIRKfcI73gux4YJjBIr5BNHh0gKkK5k9Bvt8zsENZ8+0= ;{id = 42393} +0773697867617465096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A57CBA238168515C37C46214929CF9CE12EC451AC9F391EA30C9FDD91A30FDEB90458106ECAD13DE0AA70B28D2F09A11EB13B8352238595612DAF8ACEB0EAB73E509F9304B39C6964E6D7EBF5CFA094A0D1D785C8D1D0F253D00C7E3D6EDC325701AB50638D8CD6CEF1963A965181E7896002B29014CE5DC5C5A83BC421B9125 +sixgate.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. pXy6I4FoUVw3xGIUkpz5zhLsRRrJ85HqMMn92Row/euQRYEG7K0T3gqnCyjS8JoR6xO4NSI4WVYS2vis6w6rc+UJ+TBLOcaWTm1+v1z6CUoNHXhcjR0PJT0Ax+PW7cMlcBq1BjjYzWzvGWOpZRgeeJYAKykBTOXcXFqDvEIbkSU= ;{id = 42393} +0773697867617465096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002B5CBD7D0F96E6146476ED4848FA55DB4BC1853CC86C9B0712648907DF838BCBEC5010D7C66BE9117C36221A15BB3EC22E0D8EDA95AC0D41EAD97FD4609E1F1C8AD67BAC98EC13D7C4BC4F1A2ED74DA67995AF7E601C53FE750CF3FFD70130D5D3128E0233BDC9C018BD797571F5CFEF2920FDD15E0953ACCEDEB5986CD2FC26 +sixgate.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. K1y9fQ+W5hRkdu1ISPpV20vBhTzIbJsHEmSJB9+Di8vsUBDXxmvpEXw2IhoVuz7CLg2O2pWsDUHq2X/UYJ4fHIrWe6yY7BPXxLxPGi7XTaZ5la9+YBxT/nUM8//XATDV0xKOAjO9ycAYvXl1cfXP7ykg/dFeCVOszt61mGzS/CY= ;{id = 42393} +0773697867617465096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00CDF5C149AD70342F82A2DD3FA1669C67346365DC89F3F3785296A171051A2C9D4754F6607B647E6BCD4111419E94922D1EBC0F33F91075648613EF95F0F6D9A8B5DFE03B2FAB41312C7433ED3D80F01D60387CB11E8CFA4428C12957BCA1B036468C54D07D3D4CBE28EAEBA155B0B1FE22EBDC2B89BAA7EFD64D60FC417FF5DF +sixgate.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. zfXBSa1wNC+Cot0/oWacZzRjZdyJ8/N4UpahcQUaLJ1HVPZge2R+a81BEUGelJItHrwPM/kQdWSGE++V8PbZqLXf4Dsvq0ExLHQz7T2A8B1gOHyxHoz6RCjBKVe8obA2RoxU0H09TL4o6uuhVbCx/iLr3CuJuqfv1k1g/EF/9d8= ;{id = 42393} +0773697867617465096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010250BFFFFE5E33E0 +sixgate.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:250:bfff:fe5e:33e0 +0773697867617465096E6C6E65746C616273026E6C00002C0001000027D8001601017EE7E899A067F1CBFF755FE212B4EFAD9797CDAE +sixgate.nlnetlabs.nl. 10200 IN SSHFP 1 1 7EE7E899A067F1CBFF755FE212B4EFAD9797CDAE +0773697867617465096E6C6E65746C616273026E6C00002C0001000027D80016020103A80B4632B239DE059B86975D660768786066ED +sixgate.nlnetlabs.nl. 10200 IN SSHFP 2 1 03A80B4632B239DE059B86975D660768786066ED +0773697867617465096E6C6E65746C616273026E6C00002C0001000027D80016030196AC54D0FB9C42878DC1DD0AE0EE1FFA51936AE3 +sixgate.nlnetlabs.nl. 10200 IN SSHFP 3 1 96AC54D0FB9C42878DC1DD0AE0EE1FFA51936AE3 +0773697867617465096E6C6E65746C616273026E6C00002F000100000E10001B04736D7470096E6C6E65746C616273026E6C00000640000008000B +sixgate.nlnetlabs.nl. 3600 IN NSEC smtp.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +04736D7470096E6C6E65746C616273026E6C0000050001000027D80013046F70656E096E6C6E65746C616273026E6C00 +smtp.nlnetlabs.nl. 10200 IN CNAME open.nlnetlabs.nl. +04736D7470096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00AD11EBBCFF5B1877C05F40AF1E20AC8DC5D62693CFC208EB5CD4965C1B95812AAB2C774635F5BAFB0AA0F2AAC34845A127FC139F192CCBF0D87E7D0384F36A417B6740F35F798691FCAEC25ACDC0025ACD5B071BFC4B72D725CB5E3A562CB7BAA122F438022A16E984273D3C95F27E603BB0D56416A65ED1810EF0C37AE6E2F5 +smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rRHrvP9bGHfAX0CvHiCsjcXWJpPPwgjrXNSWXBuVgSqrLHdGNfW6+wqg8qrDSEWhJ/wTnxksy/DYfn0DhPNqQXtnQPNfeYaR/K7CWs3AAlrNWwcb/Ety1yXLXjpWLLe6oSL0OAIqFumEJz08lfJ+YDuw1WQWpl7RgQ7ww3rm4vU= ;{id = 42393} +04736D7470096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00825840378E62746B00E501F6AD0EEEDCCC1998BD3EEEF00BAAC896308AA57712263A833C09B3F738820FE3A7222A71D0A4B7E8D6C6F8801AC8201898EDE2C7481533819EEF8B9B098899908572A71021180619192274EFEAEA5B4F27765BCDCD2185825F2E50B16F3B0CAEAB0BAFD27DBA008649B7F42AA4F54FAC298180D793 +smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. glhAN45idGsA5QH2rQ7u3MwZmL0+7vALqsiWMIqldxImOoM8CbP3OIIP46ciKnHQpLfo1sb4gBrIIBiY7eLHSBUzgZ7vi5sJiJmQhXKnECEYBhkZInTv6upbTyd2W83NIYWCXy5QsW87DK6rC6/SfboAhkm39Cqk9U+sKYGA15M= ;{id = 42393} +04736D7470096E6C6E65746C616273026E6C00002F000100000E100024035F3235045F74637004736D7470096E6C6E65746C616273026E6C000006040000000003 +smtp.nlnetlabs.nl. 3600 IN NSEC _25._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +035F3235045F74637004736D7470096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_25._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +035F3235045F74637004736D7470096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0012E22A1CE42AF4EAC0DAE93282735FC4AECC126D5F5D947807429839237D7F9864D54F3AF46DFB64625A60DFA8B9717414A587FF5257D4A08D78E52177625114ECDFC41B3E7F05363723A5C56C81D2AD393D3ED6B1728B76A742A39680B4706D934B645BBD2AA7EA16A21615F0D9C26E44C3A279A8E19170C53DFE91490D40C8 +_25._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. EuIqHOQq9OrA2ukygnNfxK7MEm1fXZR4B0KYOSN9f5hk1U869G37ZGJaYN+ouXF0FKWH/1JX1KCNeOUhd2JRFOzfxBs+fwU2NyOlxWyB0q05PT7WsXKLdqdCo5aAtHBtk0tkW70qp+oWohYV8NnCbkTDonmo4ZFwxT3+kUkNQMg= ;{id = 42393} +035F3235045F74637004736D7470096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008843E3DDEDA72F7A0B9FEB964447623BD0A5A83A840CD3CB00977BB1FDFE78D792FC7B66959511C12234285092524F05EBABF02B39615821AE223D17CF3E70587D657F09CC833F1CCAAF50C1F17A3F690E53DD7638E72F0DB42BF02C70934B2F4A416EC08F3C56BA8D21505ECADD64BEB733B8F6596AE9A30B0370E66E1961E1 +_25._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. iEPj3e2nL3oLn+uWREdiO9ClqDqEDNPLAJd7sf3+eNeS/HtmlZURwSI0KFCSUk8F66vwKzlhWCGuIj0Xzz5wWH1lfwnMgz8cyq9QwfF6P2kOU912OOcvDbQr8Cxwk0svSkFuwI88VrqNIVBeyt1kvrczuPZZaumjCwNw5m4ZYeE= ;{id = 42393} +035F3235045F74637004736D7470096E6C6E65746C616273026E6C00002F000100000E100025045F343635045F74637004736D7470096E6C6E65746C616273026E6C000006040000000003 +_25._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC _465._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +045F343635045F74637004736D7470096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_465._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343635045F74637004736D7470096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00658EAF134FBE487275C5327AEEA0B3A77522C9DA13AE84C570506FD7390327DF4FACD04604943909AA81A38E5DE5CDB89B995E313F30A6A0C12CA4317CE6F70B873DF0DAE0356C60D3B6BFF8AC029AAA6AE4EB214DF75551195414B98503242D794192F9707CD2B359A0EFED7B21523FDE5666E49BD89C53E9942E2490F40CAE +_465._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ZY6vE0++SHJ1xTJ67qCzp3UiydoTroTFcFBv1zkDJ99PrNBGBJQ5CaqBo45d5c24m5leMT8wpqDBLKQxfOb3C4c98NrgNWxg07a/+KwCmqpq5OshTfdVURlUFLmFAyQteUGS+XB80rNZoO/teyFSP95WZuSb2JxT6ZQuJJD0DK4= ;{id = 42393} +045F343635045F74637004736D7470096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0057D5A4018BD6D18A787325C2B1F458A87E3D2F76630087EA1F57938E269C7506FE4220D49D78AC547C1B34A7EEC7271D377E076E1B3E289339CFD3C62343BA0633970DACC37FDC6F8841E258920C0ADA84F3A8772071DB03F3321A264E448E261C14AC940935081CE6E0773E02906D54642374900C9611B5DEC97106CFAC0DCC +_465._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. V9WkAYvW0Yp4cyXCsfRYqH49L3ZjAIfqH1eTjiacdQb+QiDUnXisVHwbNKfuxycdN34Hbhs+KJM5z9PGI0O6BjOXDazDf9xviEHiWJIMCtqE86h3IHHbA/MyGiZORI4mHBSslAk1CBzm4Hc+ApBtVGQjdJAMlhG13slxBs+sDcw= ;{id = 42393} +045F343635045F74637004736D7470096E6C6E65746C616273026E6C00002F000100000E100025045F353837045F74637004736D7470096E6C6E65746C616273026E6C000006040000000003 +_465._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC _587._tcp.smtp.nlnetlabs.nl. CNAME RRSIG NSEC +045F353837045F74637004736D7470096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_587._tcp.smtp.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F353837045F74637004736D7470096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00B9C0FAEF08D1B975B3DDBDD6FFCBA9129948E23804B076194A3937B2C13628F44FA71EBC3EF2B459AF3D3522DF2DDE8A7407E8DA1FB775B61C2AADC8BE4363DE0781042625E59F0149CE08C3C87FE38D70021FDD17AB8B78D11019BA3FDE396075F1C9376366E3DDBB9A02A371CDE244BED5D9D7DFF99D7CD793203B0BCCE5CA +_587._tcp.smtp.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. ucD67wjRuXWz3b3W/8upEplI4jgEsHYZSjk3ssE2KPRPpx68PvK0Wa89NSLfLd6KdAfo2h+3dbYcKq3IvkNj3geBBCYl5Z8BSc4Iw8h/441wAh/dF6uLeNEQGbo/3jlgdfHJN2Nm4927mgKjcc3iRL7V2dff+Z1815MgOwvM5co= ;{id = 42393} +045F353837045F74637004736D7470096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C009E7CB15519B7E455908075079809664A42D517E29BEC7391EB228902B5BD804B867837E7D25164BF16A1AE5771479ABF04B4097B6F546871BFC92624EEA7BF0E7798B449246E0BD245FD26E54E8A723C846D94573D2F96369CB7FDCFB3138E8DE648B623B3361766D4FEC03F96E22E394694BB27117415582DD41CA50D9B7EE0 +_587._tcp.smtp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. nnyxVRm35FWQgHUHmAlmSkLVF+Kb7HOR6yKJArW9gEuGeDfn0lFkvxahrldxR5q/BLQJe29UaHG/ySYk7qe/DneYtEkkbgvSRf0m5U6KcjyEbZRXPS+WNpy3/c+zE46N5ki2I7M2F2bU/sA/luIuOUaUuycRdBVYLdQcpQ2bfuA= ;{id = 42393} +045F353837045F74637004736D7470096E6C6E65746C616273026E6C00002F000100000E10001C05736E6F6D30096E6C6E65746C616273026E6C000006040000000003 +_587._tcp.smtp.nlnetlabs.nl. 3600 IN NSEC snom0.nlnetlabs.nl. CNAME RRSIG NSEC +05736E6F6D30096E6C6E65746C616273026E6C0000010001000027D80004D59AE0C8 +snom0.nlnetlabs.nl. 10200 IN A 213.154.224.200 +05736E6F6D30096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A7AB67BD75A624816F289BE5AAA66683B42E6382F64A5279CBEF6D3782CFAEB32C5687B5E9008E3951155A793731E7B92A7A257640ECB9777601515682E1007773BBAFB109339D7843AAB648EE07719085CAE08738604BC9FDE1ADFB0C24CACF53E0062F8A34E4973FF37D65476E78D80762B8F15C225C96CB956A42978E9C5A +snom0.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. p6tnvXWmJIFvKJvlqqZmg7QuY4L2SlJ5y+9tN4LPrrMsVoe16QCOOVEVWnk3Mee5KnoldkDsuXd2AVFWguEAd3O7r7EJM514Q6q2SO4HcZCFyuCHOGBLyf3hrfsMJMrPU+AGL4o05Jc/831lR2542AdiuPFcIlyWy5VqQpeOnFo= ;{id = 42393} +05736E6F6D30096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0083883E067C684F21818219E3BE390B6B342218EA58AEB2687A8E4000138FCD62F1CEDE2367B56C13662CA42C67A3706870E95AAE812B6A1268FC1E66E18BE8CAC7311497429F2D698E9471A84BCFF2177FF440AFC86563AC89BF1BD1390ED9008061E8C8C32B24FD5A4BB2A98D031F686CCD10CBA195E4E623504487AF08FD01 +snom0.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. g4g+BnxoTyGBghnjvjkLazQiGOpYrrJoeo5AABOPzWLxzt4jZ7VsE2YspCxno3BocOlaroErahJo/B5m4YvoyscxFJdCny1pjpRxqEvP8hd/9ECvyGVjrIm/G9E5DtkAgGHoyMMrJP1aS7KpjQMfaGzNEMuhleTmI1BEh68I/QE= ;{id = 42393} +05736E6F6D30096E6C6E65746C616273026E6C00002F000100000E10001C05736E6F6D31096E6C6E65746C616273026E6C000006400000000003 +snom0.nlnetlabs.nl. 3600 IN NSEC snom1.nlnetlabs.nl. A RRSIG NSEC +05736E6F6D31096E6C6E65746C616273026E6C0000010001000027D80004D59AE0C9 +snom1.nlnetlabs.nl. 10200 IN A 213.154.224.201 +05736E6F6D31096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0042CEF64D347796CCE0B427382C6F889AE88984F0014A1B9C1A5014CE42A49C3B136CA133D22654264488E7BBF37657F17FDBC4BFE154E69C328F78FD0BF2511CBCFFD00CF4418FF17299A0F48B7625781E55C5352AE6D955BB8475485EC42A5F2E9C2AF7154DE057166F5FD4FCBBFFE9F5A935E82820B33E1286F017808E1673 +snom1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Qs72TTR3lszgtCc4LG+ImuiJhPABShucGlAUzkKknDsTbKEz0iZUJkSI57vzdlfxf9vEv+FU5pwyj3j9C/JRHLz/0Az0QY/xcpmg9It2JXgeVcU1KubZVbuEdUhexCpfLpwq9xVN4FcWb1/U/Lv/6fWpNegoILM+EobwF4COFnM= ;{id = 42393} +05736E6F6D31096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0006B3F2D004947B46B7CF3EDE5C25C1DB8773E843DDA2694E6C122BEC7E9E4EA84074202B3FB0B848CA8602EEE55201B3F4551A511D12061B6CD14660194533DDDEA860FCDE4613DFDB2D5D307134FB45FCBF756C1826B16852AD691A9E58C0964CD710BB034A8EADE7B6CDC5B796AD5F547A9C91262124EFBBCDBCAF651FF538 +snom1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BrPy0ASUe0a3zz7eXCXB24dz6EPdomlObBIr7H6eTqhAdCArP7C4SMqGAu7lUgGz9FUaUR0SBhts0UZgGUUz3d6oYPzeRhPf2y1dMHE0+0X8v3VsGCaxaFKtaRqeWMCWTNcQuwNKjq3nts3Ft5atX1R6nJEmISTvu828r2Uf9Tg= ;{id = 42393} +05736E6F6D31096E6C6E65746C616273026E6C00002F000100000E10001C05736E6F6D32096E6C6E65746C616273026E6C000006400000000003 +snom1.nlnetlabs.nl. 3600 IN NSEC snom2.nlnetlabs.nl. A RRSIG NSEC +05736E6F6D32096E6C6E65746C616273026E6C0000010001000027D80004D59AE0CA +snom2.nlnetlabs.nl. 10200 IN A 213.154.224.202 +05736E6F6D32096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C442721EED9B2DF17EA29CED6352521E3921F1E535522DEE9157D1D9635A66F0C9C79733DFB5C31FE0049D3D7FF1FF3C376C4537B48F1F4C2D6EB9273871451EDE340464E9EAB3BEE68335B264D747B1F157A40E3A1DE87309BAD4CEEF55A739F1B115DE919A54B0BD7EA12A2DA6D52607C6D501395332373C9734E50EDED3AC +snom2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. xEJyHu2bLfF+opztY1JSHjkh8eU1Ui3ukVfR2WNaZvDJx5cz37XDH+AEnT1/8f88N2xFN7SPH0wtbrknOHFFHt40BGTp6rO+5oM1smTXR7HxV6QOOh3ocwm61M7vVac58bEV3pGaVLC9fqEqLabVJgfG1QE5UzI3PJc05Q7e06w= ;{id = 42393} +05736E6F6D32096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001907C7E6589A5E6C0D7C4E8ED42C2272836F490D520C0A19B758B0D7513771BF37DFA9255270BF98CB1A3B0442B8A9D76AF07E85441193F63E0FC6D643949755E92130FFB8C1A13066B7BB67B85D61D005617D91B4F8A401F1AB24D9D58BC3CD6C49CA1500080BE3936847F3DE8068AD668DDBD0757E0622EAB3FA022DB7EA82 +snom2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. GQfH5liaXmwNfE6O1CwicoNvSQ1SDAoZt1iw11E3cb8336klUnC/mMsaOwRCuKnXavB+hUQRk/Y+D8bWQ5SXVekhMP+4waEwZre7Z7hdYdAFYX2RtPikAfGrJNnVi8PNbEnKFQAIC+OTaEfz3oBorWaN29B1fgYi6rP6Ai236oI= ;{id = 42393} +05736E6F6D32096E6C6E65746C616273026E6C00002F000100000E10001C05736E6F6D33096E6C6E65746C616273026E6C000006400000000003 +snom2.nlnetlabs.nl. 3600 IN NSEC snom3.nlnetlabs.nl. A RRSIG NSEC +05736E6F6D33096E6C6E65746C616273026E6C0000010001000027D80004D59AE0CB +snom3.nlnetlabs.nl. 10200 IN A 213.154.224.203 +05736E6F6D33096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008DD3342DB8A469AD858C3317F803C7329134F12D43E822E7C9D025FB0C8E0CC5CCDDC1B0C16599A528EBA4401A9190A60A36809245D401ECD97A30DA4D005CF609BCD7829B3071C036C550B6B1684410CDE11FC13D9E511870D386B83D2D99435BF6DE9D1660F17AC063C85936D6D4E5628CD4AA4E3831A9352084DAF71CE36B +snom3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jdM0Lbikaa2FjDMX+APHMpE08S1D6CLnydAl+wyODMXM3cGwwWWZpSjrpEAakZCmCjaAkkXUAezZejDaTQBc9gm814KbMHHANsVQtrFoRBDN4R/BPZ5RGHDThrg9LZlDW/benRZg8XrAY8hZNtbU5WKM1KpOODGpNSCE2vcc42s= ;{id = 42393} +05736E6F6D33096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C6E0145F2E5D5F4372F5183797B0F33977504963054FDEE0C3309823E09706CA9F1ADEE0971835B4CEC8AA7E2ABE1C0E15B67EF0357A7E655822BEE2D3F70D38E6031358C7328B5F45DB02807A1D76159762E23BABD2D445B354C0E386A2071B7C879E95D51B0B18DF57625224CA89470C740F42201B8F57EE3F7085942C7112 +snom3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. xuAUXy5dX0Ny9Rg3l7DzOXdQSWMFT97gwzCYI+CXBsqfGt7glxg1tM7Iqn4qvhwOFbZ+8DV6fmVYIr7i0/cNOOYDE1jHMotfRdsCgHoddhWXYuI7q9LURbNUwOOGogcbfIeeldUbCxjfV2JSJMqJRwx0D0IgG49X7j9whZQscRI= ;{id = 42393} +05736E6F6D33096E6C6E65746C616273026E6C00002F000100000E10002009736F6D657468696E67096E6C6E65746C616273026E6C000006400000000003 +snom3.nlnetlabs.nl. 3600 IN NSEC something.nlnetlabs.nl. A RRSIG NSEC +09736F6D657468696E67096E6C6E65746C616273026E6C00001000010000000A0008076E6F7468696E67 +something.nlnetlabs.nl. 10 IN TXT "nothing" +09736F6D657468696E67096E6C6E65746C616273026E6C00002E00010000000A00A0001008030000000A530B29F552E63FF5A599096E6C6E65746C616273026E6C002CF51A28A75EAF45B00F28DDC16BF46A78BE47C3E16B73CB8839D355B636CB809873059826A8BA7B0BF4EE515EF4431C97777102E002DB25798D72FB2D2904D23D8444560A7928A823F2E47635A8E549B4F0A8DEE489983BCA6633D2B703ABBEB8AB1FDFE7858F61A23175A758A9348678DAEDFB5E54B6A1FFB645B28EBA73A9 +something.nlnetlabs.nl. 10 IN RRSIG TXT 8 3 10 20140224111605 20140127111605 42393 nlnetlabs.nl. LPUaKKder0WwDyjdwWv0ani+R8Pha3PLiDnTVbY2y4CYcwWYJqi6ewv07lFe9EMcl3dxAuAC2yV5jXL7LSkE0j2ERFYKeSioI/LkdjWo5Um08Kje5ImYO8pmM9K3A6u+uKsf3+eFj2GiMXWnWKk0hnja7fteVLah/7ZFso66c6k= ;{id = 42393} +09736F6D657468696E67096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00BF7790E0D6FC3F0D33D67B9EC089AAB1E7FCE0C0A8F2F76044FF51545A1FF2653A366D906B4B871B1C6289EAA0E4E5B6661345C226A5B322479AECB7B7862DD6737935A6D58A64BAFE90DFF552FDF35A3C4F19418EA3EBABEC0B9961115718EAC9E47AD994FE8D9161E22896F0D26F5FA2088CD5B502E7B7DEA057F700B970DC +something.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. v3eQ4Nb8Pw0z1nuewImqsef84MCo8vdgRP9RVFof8mU6Nm2Qa0uHGxxiieqg5OW2ZhNFwialsyJHmuy3t4Yt1nN5NabVimS6/pDf9VL981o8TxlBjqPrq+wLmWERVxjqyeR62ZT+jZFh4iiW8NJvX6IIjNW1Aue33qBX9wC5cNw= ;{id = 42393} +09736F6D657468696E67096E6C6E65746C616273026E6C00002F000100000E10001D06737061726335096E6C6E65746C616273026E6C000006000080000003 +something.nlnetlabs.nl. 3600 IN NSEC sparc5.nlnetlabs.nl. TXT RRSIG NSEC +06737061726335096E6C6E65746C616273026E6C0000010001000027D80004D59AE02F +sparc5.nlnetlabs.nl. 10200 IN A 213.154.224.47 +06737061726335096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0079594D5B0CF7AFDFB24AA3B739CFA4EA341E03CF62FC07E6D21EC9996CB81FA2496365FBD286BBA56BABACFA65DDAD4F28F114EE49710FB2505757A11B9CF6AB065EFA366CBFDD76A6EE1B0F2A98BBA9A6202C8EAE387A59D8BC2579AA74895910DD65347A8D2E775207374E3F44E69FECE31A9C381B838B03C88C688B3EC213 +sparc5.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eVlNWwz3r9+ySqO3Oc+k6jQeA89i/Afm0h7JmWy4H6JJY2X70oa7pWurrPpl3a1PKPEU7klxD7JQV1ehG5z2qwZe+jZsv912pu4bDyqYu6mmICyOrjh6Wdi8JXmqdIlZEN1lNHqNLndSBzdOP0Tmn+zjGpw4G4OLA8iMaIs+whM= ;{id = 42393} +06737061726335096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004A2D7512965C1F4C361948DC9D4EB714D0139DD123595584CE9699E7B4B920C016F77BBA8A8082CC27946382B2A9C950F387FD9419D98A95DBA1E95191DA179FC39750780DFA79C1CAF67E465EF4541328E5C96EF6EFB3DA5E4317DBE72569F759E7DA657911A1D16BD4329951817DD60A79E74818E38E9BDB29EEEF10AC42C1 +sparc5.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Si11EpZcH0w2GUjcnU63FNATndEjWVWEzpaZ57S5IMAW93u6ioCCzCeUY4KyqclQ84f9lBnZipXboelRkdoXn8OXUHgN+nnByvZ+Rl70VBMo5clu9u+z2l5DF9vnJWn3WefaZXkRodFr1DKZUYF91gp550gY446b2ynu7xCsQsE= ;{id = 42393} +06737061726335096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0048191807F631D98CBFD6FCF4657C9ED78BB2DBF9C02CC835107D66E427C34BFA3309D5E51F41F57C567D4AB4D3C6110B0EFA143FF73E598EA3275F761B2563A4ED47E85FCC77B72AD0F13BBD5FCDED3B8CC2A9570FB5B213BDC3BE67F678253F51D925D037A2B1D918D0DFDD3E6009E4869854B78AB0C3824D9CD70681C2EF60 +sparc5.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SBkYB/Yx2Yy/1vz0ZXye14uy2/nALMg1EH1m5CfDS/ozCdXlH0H1fFZ9SrTTxhELDvoUP/c+WY6jJ192GyVjpO1H6F/Md7cq0PE7vV/N7TuMwqlXD7WyE73Dvmf2eCU/Udkl0DeisdkY0N/dPmAJ5IaYVLeKsMOCTZzXBoHC72A= ;{id = 42393} +06737061726335096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010A0020FFFEA78F78 +sparc5.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:a00:20ff:fea7:8f78 +06737061726335096E6C6E65746C616273026E6C00002F000100000E10001D06737069646572096E6C6E65746C616273026E6C000006400000080003 +sparc5.nlnetlabs.nl. 3600 IN NSEC spider.nlnetlabs.nl. A AAAA RRSIG NSEC +06737069646572096E6C6E65746C616273026E6C0000010001000027D80004D59AE07D +spider.nlnetlabs.nl. 10200 IN A 213.154.224.125 +06737069646572096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00457A7238CC1166102989143ED1CB52779F91280D8F4AE1568A5ADE6647F9DC6565E782F03FFD15C23D5AD25113CE9DE3EFE1D303A51B7AFD3C5B1B8EF08DE6CB585233DCF84B2960FB1A1FB8D3D09922EF8D94CF7787B2B5AB4AFDFD3B45CA1FBF4103F65F19E013A395EC8F96403D8258C5CB1C33A9034936BB8D7BD379C8AD +spider.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. RXpyOMwRZhApiRQ+0ctSd5+RKA2PSuFWilreZkf53GVl54LwP/0Vwj1a0lETzp3j7+HTA6Ubev08WxuO8I3my1hSM9z4Sylg+xofuNPQmSLvjZTPd4eytatK/f07Rcofv0ED9l8Z4BOjleyPlkA9gljFyxwzqQNJNruNe9N5yK0= ;{id = 42393} +06737069646572096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001EFE639E16DFD3EDA4FA8AB5EFC2789C8CCF04D4CCC505915F33A45D1B2E778D07EC2A476C2DD76122895D5D84904693932D80EF5BFADDA5A4F95A0611822067B2E9AD01D011EE01B84A5CD085E07C38E028F527918856F6BE03C0FA01854866762A491887A5EAD992517D2DE713B62E0C406CE25E753D91D70123F50D39BCE3 +spider.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Hv5jnhbf0+2k+oq178J4nIzPBNTMxQWRXzOkXRsud40H7CpHbC3XYSKJXV2EkEaTky2A71v63aWk+VoGEYIgZ7LprQHQEe4BuEpc0IXgfDjgKPUnkYhW9r4DwPoBhUhmdipJGIel6tmSUX0t5xO2LgxAbOJedT2R1wEj9Q05vOM= ;{id = 42393} +06737069646572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00312BB59CD51F55EE36CCDA486E0BEF0FF885C13460382504690852D91D714C5211BD20FBE47C9A480F945E5D99B2326C848004761D213908A661E15AE6107C5F3F993E3DF0CFC15643CDCD0586E2F3BCA3091BB11592846D3AA403281C39BE1F63DDBAF3F3AFD3B570A993B87987C2C42FB44F27CD170B5DC74A5D32777C62C6 +spider.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. MSu1nNUfVe42zNpIbgvvD/iFwTRgOCUEaQhS2R1xTFIRvSD75HyaSA+UXl2ZsjJshIAEdh0hOQimYeFa5hB8Xz+ZPj3wz8FWQ83NBYbi87yjCRuxFZKEbTqkAygcOb4fY9268/Ov07VwqZO4eYfCxC+0TyfNFwtdx0pdMnd8YsY= ;{id = 42393} +06737069646572096E6C6E65746C616273026E6C00002C0001000027D80016010163B9074714CC78736BAFFA1E6776975C2EB082F3 +spider.nlnetlabs.nl. 10200 IN SSHFP 1 1 63B9074714CC78736BAFFA1E6776975C2EB082F3 +06737069646572096E6C6E65746C616273026E6C00002C0001000027D800160201E7A277786CFCF0CB1A4167A680DDAE27A59407D5 +spider.nlnetlabs.nl. 10200 IN SSHFP 2 1 E7A277786CFCF0CB1A4167A680DDAE27A59407D5 +06737069646572096E6C6E65746C616273026E6C00002F000100000E10001B0473746572096E6C6E65746C616273026E6C00000640000000000B +spider.nlnetlabs.nl. 3600 IN NSEC ster.nlnetlabs.nl. A SSHFP RRSIG NSEC +0473746572096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +ster.nlnetlabs.nl. 10200 IN A 213.154.224.1 +0473746572096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00C8D86E2696EA97F2D6C87AF7216E66B84334D19D816A8AB14257C07FEFB76EC7B1F45B122554F25AF63F298AB71C82F22F737DEC164EDB5FB1F51ABE7AAE52B010E63C9E77D3AD726DA42EABFE46C3BC85C714A8435464A2B7B4FC317C11E32858F36325AC966123EA6DB567809DF332BF79E1AF25352FAFF3C3C30442B19934 +ster.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yNhuJpbql/LWyHr3IW5muEM00Z2BaoqxQlfAf++3bsex9FsSJVTyWvY/KYq3HILyL3N97BZO21+x9Rq+eq5SsBDmPJ53061ybaQuq/5Gw7yFxxSoQ1Rkore0/DF8EeMoWPNjJayWYSPqbbVngJ3zMr954a8lNS+v88PDBEKxmTQ= ;{id = 42393} +0473746572096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009859E9C6FABFA58A431C9963B2660947D202EA41A7545A5089153338700842CCEE24AF52D314D5E410683E7ACF57F02D7418D5BACD29EBBA91A6ADA6D9210E9D1874EE2953DA44BF52414C5B159C1D5056EF905513CFE87D9BC8FDE30165BCDAD1AA5B9B5D59FCC4C7BDB308237B799C0B65E39271C7CE394309BC2F8F0710CF +ster.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. mFnpxvq/pYpDHJljsmYJR9IC6kGnVFpQiRUzOHAIQszuJK9S0xTV5BBoPnrPV/AtdBjVus0p67qRpq2m2SEOnRh07ilT2kS/UkFMWxWcHVBW75BVE8/ofZvI/eMBZbza0apbm11Z/MTHvbMII3t5nAtl45Jxx845Qwm8L48HEM8= ;{id = 42393} +0473746572096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C008C6B78C6CCC45ADF80FA0700D130E0EEA969F7874BC65814B8E13CAEF8602FA18F58AF8EEB9995ABA577096EE544E45780DA9AD3E676102ABBAD4B74AE7EC137EA01874A80493371BC69103D2F338F92E972F82BE2803B8715EF5F13F3DAE453429DAFAC287AC2F83EC06FE0E6044B020723E6ABF8D00DFCF663507BA2E4FC12 +ster.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. jGt4xszEWt+A+gcA0TDg7qlp94dLxlgUuOE8rvhgL6GPWK+O65mVq6V3CW7lRORXgNqa0+Z2ECq7rUt0rn7BN+oBh0qASTNxvGkQPS8zj5Lpcvgr4oA7hxXvXxPz2uRTQp2vrCh6wvg+wG/g5gRLAgcj5qv40A389mNQe6Lk/BI= ;{id = 42393} +0473746572096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +ster.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +0473746572096E6C6E65746C616273026E6C00002F000100000E10001C057374756E31096E6C6E65746C616273026E6C000006400000080003 +ster.nlnetlabs.nl. 3600 IN NSEC stun1.nlnetlabs.nl. A AAAA RRSIG NSEC +057374756E31096E6C6E65746C616273026E6C0000010001000027D80004D59AE02E +stun1.nlnetlabs.nl. 10200 IN A 213.154.224.46 +057374756E31096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00367DAE7BA3D14826F473E66C4E6F2F60577525E89815FE9A8972362CC62F0AAB1DD864E25586654D51F772BCE87B63B48ABA58DB7F81EDC5FA72E0081C17997EBFB1A8ECD9AFD6DD25C049EEA982F61759C80086DA0778F5698CA7CC707E18398A881A53D6CDA2AA78559FFCA3BC19CF1C30068C5A4181D42B01409085E17038 +stun1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Nn2ue6PRSCb0c+ZsTm8vYFd1JeiYFf6aiXI2LMYvCqsd2GTiVYZlTVH3crzoe2O0irpY23+B7cX6cuAIHBeZfr+xqOzZr9bdJcBJ7qmC9hdZyACG2gd49WmMp8xwfhg5iogaU9bNoqp4VZ/8o7wZzxwwBoxaQYHUKwFAkIXhcDg= ;{id = 42393} +057374756E31096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005332CDC616A48E9D19EAF784078477E38B279AA7E44511ED2F881BB227E6744E07D1C1BFDE99F98A8A7C02A35C31D2F02315C0DBF2F49A10777A40CD1E70B773D16923E12A2490CB4243454105701C9E3DECCA47523557EC18B4D529F9CA6F3F5E8977AF254551C1FE0F34AD14E80FA095956BE37E3E0E73F6ACC48457872284 +stun1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. UzLNxhakjp0Z6veEB4R344snmqfkRRHtL4gbsifmdE4H0cG/3pn5iop8AqNcMdLwIxXA2/L0mhB3ekDNHnC3c9FpI+EqJJDLQkNFQQVwHJ497MpHUjVX7Bi01Sn5ym8/Xol3ryVFUcH+DzStFOgPoJWVa+N+Pg5z9qzEhFeHIoQ= ;{id = 42393} +057374756E31096E6C6E65746C616273026E6C00002F000100000E10001C057374756E32096E6C6E65746C616273026E6C000006400000000003 +stun1.nlnetlabs.nl. 3600 IN NSEC stun2.nlnetlabs.nl. A RRSIG NSEC +057374756E32096E6C6E65746C616273026E6C0000010001000027D80004D59AE030 +stun2.nlnetlabs.nl. 10200 IN A 213.154.224.48 +057374756E32096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0018B082690B1B2F4CE25B51F5785D79A03C50AA354068169F5BEC73755E23F3E07A1803ABA9C55CB67C8829F574488A233ABC5E7B0DF64D76FF47203DB1B44C15C83B889FEBD20A9A3C299C8408C6D1B561FD468B56126674220A428023706C79CC84CD9E3279F9A9E614203F750E339AE856941E2B042829DD43AA9D49572263 +stun2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. GLCCaQsbL0ziW1H1eF15oDxQqjVAaBafW+xzdV4j8+B6GAOrqcVctnyIKfV0SIojOrxeew32TXb/RyA9sbRMFcg7iJ/r0gqaPCmchAjG0bVh/UaLVhJmdCIKQoAjcGx5zITNnjJ5+anmFCA/dQ4zmuhWlB4rBCgp3UOqnUlXImM= ;{id = 42393} +057374756E32096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C004B3CAD6D5B2B1D7E13AF9F27C08350D483642808475ED8E16F4481C135CC5D209143CBB360F830D4E69A90BBFFA0E83DAEB3FDCE4AE785EEA247D627F0056EB3F634CF8B3A0E5E73395C7EAEDF8E03B759E0962536E1F703707E447ABA5E2060C822E79BDCF95E8CC22EE0CD0AF7DF7AE226029DE41005B0D35FDF9390117950 +stun2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. SzytbVsrHX4Tr58nwINQ1INkKAhHXtjhb0SBwTXMXSCRQ8uzYPgw1OaakLv/oOg9rrP9zkrnhe6iR9Yn8AVus/Y0z4s6Dl5zOVx+rt+OA7dZ4JYlNuH3A3B+RHq6XiBgyCLnm9z5XozCLuDNCvffeuImAp3kEAWw01/fk5AReVA= ;{id = 42393} +057374756E32096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636831096E6C6E65746C616273026E6C000006400000000003 +stun2.nlnetlabs.nl. 3600 IN NSEC switch1.nlnetlabs.nl. A RRSIG NSEC +0773776974636831096E6C6E65746C616273026E6C0000010001000027D80004D59AE06F +switch1.nlnetlabs.nl. 10200 IN A 213.154.224.111 +0773776974636831096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00374A0F3E0B700AD95B0A44D148B7235070DF27CE527A4EF0471689443B8B7B0E897C136C552FE87C98FCE294DBB4E39C675120216900AE2AF926A688751158B3E72C877E2E55C75A389BF07EDC912A4D08B49B2CE7B7F7EC1ADE729D0236216EEF05EFDC120D23B667E6FAD95594BDCF196304660747251886244B8E51D01BC2 +switch1.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. N0oPPgtwCtlbCkTRSLcjUHDfJ85Sek7wRxaJRDuLew6JfBNsVS/ofJj84pTbtOOcZ1EgIWkArir5JqaIdRFYs+csh34uVcdaOJvwftyRKk0ItJss57f37Brecp0CNiFu7wXv3BINI7Zn5vrZVZS9zxljBGYHRyUYhiRLjlHQG8I= ;{id = 42393} +0773776974636831096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00968E6BADD51E81404967B419D33279CDE00CC5183C3FE0FF30D4CB9075FF7039C3E46B97EFB30E61B9B7791177AC15E59989736C5D20B423F871C33A2F59E2477F59DC1B9DC0761073DDA0BFF807EB1DA09745219BD11A59158BE83B8F9DFBED8BC0164E2F8DB7D2108ACE6E07B9DA72E6595FD2AB54B95715A4762E7CAF5C85 +switch1.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. lo5rrdUegUBJZ7QZ0zJ5zeAMxRg8P+D/MNTLkHX/cDnD5GuX77MOYbm3eRF3rBXlmYlzbF0gtCP4ccM6L1niR39Z3BudwHYQc92gv/gH6x2gl0Uhm9EaWRWL6DuPnfvti8AWTi+Nt9IQis5uB7nacuZZX9KrVLlXFaR2LnyvXIU= ;{id = 42393} +0773776974636831096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636832096E6C6E65746C616273026E6C000006400000000003 +switch1.nlnetlabs.nl. 3600 IN NSEC switch2.nlnetlabs.nl. A RRSIG NSEC +0773776974636832096E6C6E65746C616273026E6C0000010001000027D80004D59AE070 +switch2.nlnetlabs.nl. 10200 IN A 213.154.224.112 +0773776974636832096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004248F21D1F1E901C5EB6B8114D2763128330A2FA3409BEFD325CD176A7FD46B46C71DF8F879B083F5565FDC2D0470CB2A1C81E275BCB52B4419711A79855C55FBD6F5333A65276967904B7E1F36A949FF6E93620E3DAEE435C2F359C4A7DF621B90FEC8EB148FEE886F700D4630342918BBA8E9BB5C0D15D65915816ABCB81FA +switch2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QkjyHR8ekBxetrgRTSdjEoMwovo0Cb79MlzRdqf9RrRscd+Ph5sIP1Vl/cLQRwyyocgeJ1vLUrRBlxGnmFXFX71vUzOmUnaWeQS34fNqlJ/26TYg49ruQ1wvNZxKffYhuQ/sjrFI/uiG9wDUYwNCkYu6jpu1wNFdZZFYFqvLgfo= ;{id = 42393} +0773776974636832096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00178090D56466C34379F206297FCC76729E995531A919031863C03774F73120C9085F450BED7FD06872AD965F832BC4D893162ED6496461436CF46DF2ABD47E50ABB9BB30E0BB89B5A2B3DDEB2B57FFC9482E1AEEAFA3054C57CF4E0A07F68E50D6EA2D279665356C6433F457F08AEAD87CD75D96EDEF50D3C4BA02F825097113 +switch2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. F4CQ1WRmw0N58gYpf8x2cp6ZVTGpGQMYY8A3dPcxIMkIX0UL7X/QaHKtll+DK8TYkxYu1klkYUNs9G3yq9R+UKu5uzDgu4m1orPd6ytX/8lILhrur6MFTFfPTgoH9o5Q1uotJ5ZlNWxkM/RX8Irq2HzXXZbt71DTxLoC+CUJcRM= ;{id = 42393} +0773776974636832096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636833096E6C6E65746C616273026E6C000006400000000003 +switch2.nlnetlabs.nl. 3600 IN NSEC switch3.nlnetlabs.nl. A RRSIG NSEC +0773776974636833096E6C6E65746C616273026E6C0000010001000027D80004D59AE071 +switch3.nlnetlabs.nl. 10200 IN A 213.154.224.113 +0773776974636833096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00A9C98318717F28D0B85CD9C65B50A4706804B951207C32249ACFEAB1952EB1EDA4074809F38A38E1FD86A054E04AE507AAB137521AEEA75B8CEE9324F6F115410F2B00826AFC46D1392F0C423A1442EAAED60EF55DF0140D0325B4AC3E1AB5AEE07C6D95EA5FA3159FC0C491F60643A29F53138CCAD9B6F39852678AEF4F5CFB +switch3.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. qcmDGHF/KNC4XNnGW1CkcGgEuVEgfDIkms/qsZUuse2kB0gJ84o44f2GoFTgSuUHqrE3Uhrup1uM7pMk9vEVQQ8rAIJq/EbROS8MQjoUQuqu1g71XfAUDQMltKw+GrWu4HxtlepfoxWfwMSR9gZDop9TE4zK2bbzmFJniu9PXPs= ;{id = 42393} +0773776974636833096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C002DDF6882A3B63C770FD971D011F4D88EA1C9241A9D7D23EAE727A0D297EAE3F51EF3801E9E9378660DFAD214A67BAF77C2F7D25CB53E7F47B02F8F8C7458430DF85EAB573BC7967ED4C77BFC15B1433B90020BB03E144C9F64D2B7B7532EE47DB43E619FC56D7E74572CE4048E2AA7617013CAF39161B0F40E08E807ED40160B +switch3.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. Ld9ogqO2PHcP2XHQEfTYjqHJJBqdfSPq5yeg0pfq4/Ue84AenpN4Zg360hSme693wvfSXLU+f0ewL4+MdFhDDfheq1c7x5Z+1Md7/BWxQzuQAguwPhRMn2TSt7dTLuR9tD5hn8VtfnRXLOQEjiqnYXATyvORYbD0DgjoB+1AFgs= ;{id = 42393} +0773776974636833096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636834096E6C6E65746C616273026E6C000006400000000003 +switch3.nlnetlabs.nl. 3600 IN NSEC switch4.nlnetlabs.nl. A RRSIG NSEC +0773776974636834096E6C6E65746C616273026E6C0000010001000027D80004D59AE072 +switch4.nlnetlabs.nl. 10200 IN A 213.154.224.114 +0773776974636834096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C002A95F3D6A38CEDC8F2FAB8BBECCB661683E215AB99356C8D2B15142E488C91D64BA4F6B76EED8A247E4DB379BD126B2E46DA7863D4B7D347D3AA6DE3D50B559AD378B806DBDCE6B7D4417A34C66283563477417F2CC287BDDD9DB25B6B24D65701C90064EA155483BB093CFD48C81C14A19C1DA2C7532EC09213D5E03D6FCAE8 +switch4.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. KpXz1qOM7cjy+ri77MtmFoPiFauZNWyNKxUULkiMkdZLpPa3bu2KJH5Ns3m9EmsuRtp4Y9S300fTqm3j1QtVmtN4uAbb3Oa31EF6NMZig1Y0d0F/LMKHvd2dsltrJNZXAckAZOoVVIO7CTz9SMgcFKGcHaLHUy7AkhPV4D1vyug= ;{id = 42393} +0773776974636834096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005A5A56747FE8555C1214BFF993D6B82500516DEDF710A27C127DA06E3554EE9A77322200BD2A4B4C5F43EB28F28DF89166EBA32FC17399C25AEA89685BF5F1C16F8C31F89B90318B1C9528D2977444D79DC2119060876B3AD6686F22E7476F8F51121663198B402B0592445B26CF16C9352FBC33F7DF9D2C643AE9D1CD36B056 +switch4.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WlpWdH/oVVwSFL/5k9a4JQBRbe33EKJ8En2gbjVU7pp3MiIAvSpLTF9D6yjyjfiRZuujL8FzmcJa6oloW/XxwW+MMfibkDGLHJUo0pd0RNedwhGQYIdrOtZobyLnR2+PURIWYxmLQCsFkkRbJs8WyTUvvDP3350sZDrp0c02sFY= ;{id = 42393} +0773776974636834096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636835096E6C6E65746C616273026E6C000006400000000003 +switch4.nlnetlabs.nl. 3600 IN NSEC switch5.nlnetlabs.nl. A RRSIG NSEC +0773776974636835096E6C6E65746C616273026E6C0000010001000027D80004D59AE073 +switch5.nlnetlabs.nl. 10200 IN A 213.154.224.115 +0773776974636835096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001773DA795C78DA09C7DCCC2E3A08E73397E53CBF5E5B0D78A4390C15927E3F60241ABC2C347D7309A8A0BA393F3B8B72A92A8F3ADA8FEAECC78865DD23A19B281DC874B91F4E5DFC4BE912932781AE0FDF372D36A49E344137AF754A6E4E1C31FF00D517C313159C0EBB1FAEE33DB5A0385C3B10C683573542802260065BEC49 +switch5.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. F3PaeVx42gnH3MwuOgjnM5flPL9eWw14pDkMFZJ+P2AkGrwsNH1zCaigujk/O4tyqSqPOtqP6uzHiGXdI6GbKB3IdLkfTl38S+kSkyeBrg/fNy02pJ40QTevdUpuThwx/wDVF8MTFZwOux+u4z21oDhcOxDGg1c1QoAiYAZb7Ek= ;{id = 42393} +0773776974636835096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C005A6CCACA9D9B4C28F062AD129F5B8000D1C5C3F0B103640EF84217F64DE9F6BCE6526DB5203712FF4877136244ED76098822B64BB3321E2C430ECA22E1BC43287A4077D2B9319EC4B565171FCDA5BDDF9ECB6015F8AC75ECE5985871B512E23D9B4E101900F9774367B2B223FDC6E948AF82504DEB47F5728D58C1F60165CEFA +switch5.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. WmzKyp2bTCjwYq0Sn1uAANHFw/CxA2QO+EIX9k3p9rzmUm21IDcS/0h3E2JE7XYJiCK2S7MyHixDDsoi4bxDKHpAd9K5MZ7EtWUXH82lvd+ey2AV+Kx17OWYWHG1EuI9m04QGQD5d0NnsrIj/cbpSK+CUE3rR/VyjVjB9gFlzvo= ;{id = 42393} +0773776974636835096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636836096E6C6E65746C616273026E6C000006400000000003 +switch5.nlnetlabs.nl. 3600 IN NSEC switch6.nlnetlabs.nl. A RRSIG NSEC +0773776974636836096E6C6E65746C616273026E6C0000010001000027D80004D59AE074 +switch6.nlnetlabs.nl. 10200 IN A 213.154.224.116 +0773776974636836096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C008DA57F35846084F8CF1010294311090445E7CD400FDD36287DCB26650D49974E68958D36B8DB0E9029BC6E18102558C027DC3563386E2B0D0C2087076B1C9924DCD5DF2C74E3F4CD22872673BC7971F644D3D8D8A1D3B70F6C5F61732E85A76D66E851338085BF603D579750D55A17B14584D77126139EE6747E9F2F15839199 +switch6.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. jaV/NYRghPjPEBApQxEJBEXnzUAP3TYofcsmZQ1Jl05olY02uNsOkCm8bhgQJVjAJ9w1YzhuKw0MIIcHaxyZJNzV3yx04/TNIocmc7x5cfZE09jYodO3D2xfYXMuhadtZuhRM4CFv2A9V5dQ1VoXsUWE13EmE57mdH6fLxWDkZk= ;{id = 42393} +0773776974636836096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0006DA902FA4905922EE026C339E60A54AF419531AFFFF1FC2FC6567AB6811F4BB9195FD1A16354D42402B2E813674764680652060C6B9BC0CE4C92FA458FCC6A4F877EC55ED2698ABF0A3441F39EE9CF2B2762BB28E0347D534B2855DF25E0A2AD5E57A0F44F2B648E258E48B5D9FABC991B7AF6117D968B41CDB074C7698346D +switch6.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. BtqQL6SQWSLuAmwznmClSvQZUxr//x/C/GVnq2gR9LuRlf0aFjVNQkArLoE2dHZGgGUgYMa5vAzkyS+kWPzGpPh37FXtJpir8KNEHznunPKydiuyjgNH1TSyhV3yXgoq1eV6D0TytkjiWOSLXZ+ryZG3r2EX2Wi0HNsHTHaYNG0= ;{id = 42393} +0773776974636836096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636837096E6C6E65746C616273026E6C000006400000000003 +switch6.nlnetlabs.nl. 3600 IN NSEC switch7.nlnetlabs.nl. A RRSIG NSEC +0773776974636837096E6C6E65746C616273026E6C0000010001000027D80004D59AE075 +switch7.nlnetlabs.nl. 10200 IN A 213.154.224.117 +0773776974636837096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00264BE1C885E05AB86C45B7C7CEDAA7AB449E934D3FDA162793780C922E1AC80FE682925F9B90C31CC5B72E10E35602241D70E365B8E2AE9D718EB375C2CB06DD1849A4507E07314C87C8DB82F6DFE4948896FECBC497B67204DDAAD6F0F0EBC6C0DDB4E3D1BAABE949C8E48016701E261114147294C60E25EF2EF1AC62FAED3A +switch7.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. JkvhyIXgWrhsRbfHztqnq0Sek00/2hYnk3gMki4ayA/mgpJfm5DDHMW3LhDjVgIkHXDjZbjirp1xjrN1wssG3RhJpFB+BzFMh8jbgvbf5JSIlv7LxJe2cgTdqtbw8OvGwN2049G6q+lJyOSAFnAeJhEUFHKUxg4l7y7xrGL67To= ;{id = 42393} +0773776974636837096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0077C1ACBDFB5BEA92363B9DB49E1287E648BE057A86D2FC39F0C1F6DC3105F6BB08CF578998BBF8E23E5DE2D509AA55F0FF3363D7AD5FD8A4F8BB29073004C93CD11A935993272EC84517F33D5A6B60AC0ACA33814EBAA89516946286B61BDF24B3D6B283FB8193FCA956D0F829BA9C724EFF01E1F681DB4B5A5033DADCD82B1E +switch7.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. d8Gsvftb6pI2O520nhKH5ki+BXqG0vw58MH23DEF9rsIz1eJmLv44j5d4tUJqlXw/zNj161f2KT4uykHMATJPNEak1mTJy7IRRfzPVprYKwKyjOBTrqolRaUYoa2G98ks9ayg/uBk/ypVtD4Kbqcck7/AeH2gdtLWlAz2tzYKx4= ;{id = 42393} +0773776974636837096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0071D3BBD806F20C1448FAC850AEC8D8C3FEDE775B0832985927FE908394B5CF77752AC89211B5F4E9F66D2B29EB2CEFB39798175E3EFB05B0B3A140EA1C8660AB107E4D23A9760524D9E64A3C68AB681458B8DC526B80ECBA7F7FDA5B5D498D656429799227C5A5013B2196D28934884A6035D58354A7DB22EAE7F0FC7DE8609E +switch7.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cdO72AbyDBRI+shQrsjYw/7ed1sIMphZJ/6Qg5S1z3d1KsiSEbX06fZtKynrLO+zl5gXXj77BbCzoUDqHIZgqxB+TSOpdgUk2eZKPGiraBRYuNxSa4Dsun9/2ltdSY1lZCl5kifFpQE7IZbSiTSISmA11YNUp9si6ufw/H3oYJ4= ;{id = 42393} +0773776974636837096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010212F2FFFEECD040 +switch7.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:212:f2ff:feec:d040 +0773776974636837096E6C6E65746C616273026E6C00002F000100000E10001E0773776974636838096E6C6E65746C616273026E6C000006400000080003 +switch7.nlnetlabs.nl. 3600 IN NSEC switch8.nlnetlabs.nl. A AAAA RRSIG NSEC +0773776974636838096E6C6E65746C616273026E6C0000010001000027D80004D59AE076 +switch8.nlnetlabs.nl. 10200 IN A 213.154.224.118 +0773776974636838096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00ACCA939BA5E7B29538285D41EEAF218F3D102307ED6BCFABE66F8BA352F5F774D6DDE57CA9ED2B0F45423C2ACAA40B6871CD23506E3CE1BFFF760E5207FD734ECFC1589186C0C1A32DCDC44493B979309BF1D849E5BED27EA5CD537B883BD54BE92E1C13BBB84CE2437B04725F8CE88A3C085679219E07E43933342154EDBC57 +switch8.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. rMqTm6XnspU4KF1B7q8hjz0QIwfta8+r5m+Lo1L193TW3eV8qe0rD0VCPCrKpAtocc0jUG484b//dg5SB/1zTs/BWJGGwMGjLc3ERJO5eTCb8dhJ5b7SfqXNU3uIO9VL6S4cE7u4TOJDewRyX4zoijwIVnkhngfkOTM0IVTtvFc= ;{id = 42393} +0773776974636838096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00737C98FDD069642600B7383F5E86D51E1C00750431EBCCC6251E6FD6A7B20393E805C84860D4CC558C991AEA16C9B667A5D5535D911E0F2276F9113B495BC2E6203E39BA7E7053ABFF23EDDF877D423C01842D92751821842E7611D79A14995DEE8BB1D1A4B45C9D6EDB024D96562FEEABA34C0C2623231BF793B4564FB09EAD +switch8.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. c3yY/dBpZCYAtzg/XobVHhwAdQQx68zGJR5v1qeyA5PoBchIYNTMVYyZGuoWybZnpdVTXZEeDyJ2+RE7SVvC5iA+Obp+cFOr/yPt34d9QjwBhC2SdRghhC52EdeaFJld7oux0aS0XJ1u2wJNllYv7qujTAwmIyMb95O0Vk+wnq0= ;{id = 42393} +0773776974636838096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C001E51BBFBBEA4EE8077F0619B296078CC44D17B39CED8C8135471D0F015545CDE88EDD8E84A59A350CFEF7F5B6AD5A0E9A377FDA229B5778E85B85DF022864B56C17ED58F0B94F029B40072BCD27E8E3D9192144BBC55BD5BAA3C12994DD04A43330B96BB206A367645427EE09F9372AFDA79270E3BC6BBFDC4420DD8C8FDE6FC +switch8.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. HlG7+76k7oB38GGbKWB4zETReznO2MgTVHHQ8BVUXN6I7djoSlmjUM/vf1tq1aDpo3f9oim1d46FuF3wIoZLVsF+1Y8LlPAptAByvNJ+jj2RkhRLvFW9W6o8EplN0EpDMwuWuyBqNnZFQn7gn5Nyr9p5Jw47xrv9xEIN2Mj95vw= ;{id = 42393} +0773776974636838096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010212F2FFFEEE6380 +switch8.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:212:f2ff:feee:6380 +0773776974636838096E6C6E65746C616273026E6C00002F000100000E10001F08746573742D777777096E6C6E65746C616273026E6C000006400000080003 +switch8.nlnetlabs.nl. 3600 IN NSEC test-www.nlnetlabs.nl. A AAAA RRSIG NSEC +08746573742D777777096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +test-www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +08746573742D777777096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001364215615147E9854633A690E4AF6E3DA3FA3972AB6EE4A2EC3792524D3610AE4B729E2B3CC57B922B7B1ABBB77348EAFEDE282876FA56D27A6B526C8063F91DF29537567D93FB3F7A098E7CA4E3B8628A3984BADF0AF9205387737CF7924E4C35C341A0479CFD89943F1A5BD56C4AA277AD267A4C126ABE8DE2E9E53F11057 +test-www.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. E2QhVhUUfphUYzppDkr249o/o5cqtu5KLsN5JSTTYQrktynis8xXuSK3sau7dzSOr+3igodvpW0nprUmyAY/kd8pU3Vn2T+z96CY58pOO4Yoo5hLrfCvkgU4dzfPeSTkw1w0GgR5z9iZQ/GlvVbEqid60mekwSar6N4unlPxEFc= ;{id = 42393} +08746573742D777777096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C006276FA2F2AB67BAB6E82F60C817B03D64201CBAD67A0433E95F2C3AC15E52E1E8409CA2A689FFC7E4F69C3D3496769704299387F28F13FCD1D4E9D352B36F909D2933C874464B7B303A03BF1161545820D308DBB1450C0251FD585D3893F4EA889CC9AFED73D4A1E8352D7E63E50C67C9FC5D6519FFE51CB118D3C2979DF70F5 +test-www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. Ynb6Lyq2e6tugvYMgXsD1kIBy61noEM+lfLDrBXlLh6ECcoqaJ/8fk9pw9NJZ2lwQpk4fyjxP80dTp01Kzb5CdKTPIdEZLezA6A78RYVRYINMI27FFDAJR/VhdOJP06oicya/tc9Sh6DUtfmPlDGfJ/F1lGf/lHLEY08KXnfcPU= ;{id = 42393} +08746573742D777777096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C007D7C09AAA5E6D8B404AC2FD0D2F04637E017119D129B50AED02BF558331AEB8D0A0C3C4B7A8BCCF37375F336563BDED1E3EEB7F5E4C1998E0B56BCDE8727543815A8A3560CA2ACAF2791325C0CBBB6EE364C78D46AAA49A59CCBF40FAD3575A0E886B188CA965ABD4C44F888BC673E5FB2588148FFA5B510C370E3DD751A4896 +test-www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. fXwJqqXm2LQErC/Q0vBGN+AXEZ0Sm1Cu0Cv1WDMa640KDDxLeovM83N18zZWO97R4+639eTBmY4LVrzehydUOBWoo1YMoqyvJ5EyXAy7tu42THjUaqpJpZzL9A+tNXWg6IaxiMqWWr1MRPiIvGc+X7JYgUj/pbUQw3Dj3XUaSJY= ;{id = 42393} +08746573742D777777096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +test-www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +08746573742D777777096E6C6E65746C616273026E6C00002F000100000E10001C05756D627261096E6C6E65746C616273026E6C000006400000080003 +test-www.nlnetlabs.nl. 3600 IN NSEC umbra.nlnetlabs.nl. A AAAA RRSIG NSEC +05756D627261096E6C6E65746C616273026E6C0000010001000027D80004D59AE025 +umbra.nlnetlabs.nl. 10200 IN A 213.154.224.37 +05756D627261096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C005DB4821C4F60EC942655893D25717F59976A8F5B644BF309DD79E475307E87AB90F618AF9464B7D266D0E25A3C3995E0D84BC077BC2C7D8B72E0E6C382D55C907D8AF589A524FB5637826FE1420354D5AD42D055B2A385D5E2BC8C323C62D601354F98770153779B387527D112BA0497B01F7836C460B8F5976D36639ECFDA47 +umbra.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. XbSCHE9g7JQmVYk9JXF/WZdqj1tkS/MJ3XnkdTB+h6uQ9hivlGS30mbQ4lo8OZXg2EvAd7wsfYty4ObDgtVckH2K9YmlJPtWN4Jv4UIDVNWtQtBVsqOF1eK8jDI8YtYBNU+YdwFTd5s4dSfREroEl7AfeDbEYLj1l202Y57P2kc= ;{id = 42393} +05756D627261096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0021F512ED5599E410907F21E6A400F7EA6BE39EDC6537A83E25B112C5D230197699DAD1175234F769A28EA161C5ACE720AF2B5218E4F1E45C90AE32677EB00C1634208764359A9693BE06E0ADC8DBDE6355BDA71A5E83968B8839628C5CEC18F10EC0EA924DFCD06E73E84D3CEF8AC78EC007A446D0E7196FA9C3F26319D91F90 +umbra.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. IfUS7VWZ5BCQfyHmpAD36mvjntxlN6g+JbESxdIwGXaZ2tEXUjT3aaKOoWHFrOcgrytSGOTx5FyQrjJnfrAMFjQgh2Q1mpaTvgbgrcjb3mNVvacaXoOWi4g5Yoxc7BjxDsDqkk380G5z6E0874rHjsAHpEbQ5xlvqcPyYxnZH5A= ;{id = 42393} +05756D627261096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0014FF2836655492272E419ABEB1E75EE5D05F96BBE604E340C9A5B33F24E308226D50EE402FDDDBC82629B500EA8262355092EE97F7AD692708E52F235480A27299ED1FB9CF0F80D3A55129E832BB773F8B4B81D867185139B385A107372DB33686170160B56EDAFFE3D144784BC55D09434CEE358BC89C24553D9F8E842EF16C +umbra.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FP8oNmVUkicuQZq+sede5dBflrvmBONAyaWzPyTjCCJtUO5AL93byCYptQDqgmI1UJLul/etaScI5S8jVICicpntH7nPD4DTpVEp6DK7dz+LS4HYZxhRObOFoQc3LbM2hhcBYLVu2v/j0UR4S8VdCUNM7jWLyJwkVT2fjoQu8Ww= ;{id = 42393} +05756D627261096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00697F7678504D276F8CBE7F3CF7FD9C4CBFBAD28D24C93B8DAF9F9DB1D21FBE0066ED74326A8D75C5F97E2828312983F28446D0BAC3035DAAC99F3AAF3D2D48E17255CA1C509C4990A03AEB9DCB3C55E8E54E94370B0A217C765B5B51AB56513C045A93A60422BE168065DDD63A27CE81DC4CC901B02D960FC180B11E1520BC03 +umbra.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. aX92eFBNJ2+Mvn889/2cTL+60o0kyTuNr5+dsdIfvgBm7XQyao11xfl+KCgxKYPyhEbQusMDXarJnzqvPS1I4XJVyhxQnEmQoDrrncs8VejlTpQ3CwohfHZbW1GrVlE8BFqTpgQivhaAZd3WOifOgdxMyQGwLZYPwYCxHhUgvAM= ;{id = 42393} +05756D627261096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010203BAFFFE062060 +umbra.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:baff:fe06:2060 +05756D627261096E6C6E65746C616273026E6C00002C0001000027D800160101E898476127D38FC18600E77421A7E44F1CB3B266 +umbra.nlnetlabs.nl. 10200 IN SSHFP 1 1 E898476127D38FC18600E77421A7E44F1CB3B266 +05756D627261096E6C6E65746C616273026E6C00002C0001000027D800160201164C09BCEAE3466B3F2AEE99C0AEDD91E106F7CA +umbra.nlnetlabs.nl. 10200 IN SSHFP 2 1 164C09BCEAE3466B3F2AEE99C0AEDD91E106F7CA +05756D627261096E6C6E65746C616273026E6C00002F000100000E10001E07756E626F756E64096E6C6E65746C616273026E6C00000640000008000B +umbra.nlnetlabs.nl. 3600 IN NSEC unbound.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +07756E626F756E64096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +unbound.nlnetlabs.nl. 10200 IN A 213.154.224.1 +07756E626F756E64096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004126773D3C801A56691282BF98A37FB18E50475CA6EF815046AE2553E62CA07D872B0BB1BA4178F4BEEF76AFB770A03DE47CB989035858B4CDB7CF2CD2F98F1F0B700F49A96ED1327E7E2C268552EE51D02EBF0DD07CC67153320F579D4B20B1ADC07807DDF48600C87C47CB33B02FA9025C19F51870696D362D7F33F0B62DCB +unbound.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. QSZ3PTyAGlZpEoK/mKN/sY5QR1ym74FQRq4lU+YsoH2HKwuxukF49L7vdq+3cKA95Hy5iQNYWLTNt88s0vmPHwtwD0mpbtEyfn4sJoVS7lHQLr8N0HzGcVMyD1edSyCxrcB4B930hgDIfEfLM7AvqQJcGfUYcGltNi1/M/C2Lcs= ;{id = 42393} +07756E626F756E64096E6C6E65746C616273026E6C00002E0001000027D800A0000F0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C0020DB448D05CA17181BECE0E8ED55878AEC78514624BE0D9ED8A76369966DBE6AB5FEE3F334197C9A84813E626C78D08E32A214BF7944B3FD3A9F891B042F64DA7D8BCA332C92714D45B58AB5ED0740F685B25EB747A98FFB6747950A4DC46A192C74F2F6BD9597350D85E9498689F1EEB9FE6CA03AFEB6732762D7B8BEE115E1 +unbound.nlnetlabs.nl. 10200 IN RRSIG MX 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. INtEjQXKFxgb7ODo7VWHiux4UUYkvg2e2KdjaZZtvmq1/uPzNBl8moSBPmJseNCOMqIUv3lEs/06n4kbBC9k2n2LyjMsknFNRbWKte0HQPaFsl63R6mP+2dHlQpNxGoZLHTy9r2VlzUNhelJhonx7rn+bKA6/rZzJ2LXuL7hFeE= ;{id = 42393} +07756E626F756E64096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00CA84C86BE2084D18555D9BEA84FC59FC3E0E8A75B2E9108ECAAA1B1FBD8ECD6584FCF920F390738C2C9A8C4589D2416A35D6A4FE873738DF77C6BA4BD35C294E56B21EEBC33625B542098207F4218374F69F87E1288F4C56C1CC72F4EF85C7F2EE77594E01FE9F0B65A8EE6A163A419668A67CD6172BEC75584AAA181FDBB8A3 +unbound.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. yoTIa+IITRhVXZvqhPxZ/D4OinWy6RCOyqobH72OzWWE/Pkg85BzjCyajEWJ0kFqNdak/oc3ON93xrpL01wpTlayHuvDNiW1QgmCB/Qhg3T2n4fhKI9MVsHMcvTvhcfy7ndZTgH+nwtlqO5qFjpBlmimfNYXK+x1WEqqGB/buKM= ;{id = 42393} +07756E626F756E64096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00906E37403DCA1E372EC471FBD2088F19ECC885C83EC8597A23825265C65AE0BFAEFB69D9FD2D98E25925892C15242271EE591DE89DB7CDEF789FF0ED35889ABF77C3577D140D63DF37D4DE11D2B0D6F5A68E55478607D780A198D4F47F6C4FF7DB3734B2C198CC3EB2A63F9AA2AEF08D99E9A9613C2C8791FB00671306EBED4F +unbound.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. kG43QD3KHjcuxHH70giPGezIhcg+yFl6I4JSZcZa4L+u+2nZ/S2Y4lkliSwVJCJx7lkd6J23ze94n/DtNYiav3fDV30UDWPfN9TeEdKw1vWmjlVHhgfXgKGY1PR/bE/32zc0ssGYzD6ypj+aoq7wjZnpqWE8LIeR+wBnEwbr7U8= ;{id = 42393} +07756E626F756E64096E6C6E65746C616273026E6C00000F0001000027D80015000A046F70656E096E6C6E65746C616273026E6C00 +unbound.nlnetlabs.nl. 10200 IN MX 10 open.nlnetlabs.nl. +07756E626F756E64096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +unbound.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +07756E626F756E64096E6C6E65746C616273026E6C00002F000100000E10001B047572656E096E6C6E65746C616273026E6C000006400100080003 +unbound.nlnetlabs.nl. 3600 IN NSEC uren.nlnetlabs.nl. A MX AAAA RRSIG NSEC +047572656E096E6C6E65746C616273026E6C0000050001000027D800230C77696C6C656D746F6F726F7007667269656E6473096E6C6E65746C616273026E6C00 +uren.nlnetlabs.nl. 10200 IN CNAME willemtoorop.friends.nlnetlabs.nl. +047572656E096E6C6E65746C616273026E6C00002E0001000027D800A000050803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C00797AAFCBF4F61C14E34F81568F7352358F428AF51C183BF55E4971ADC8F846B22B136BDE5C137FE0E9D0EEC3A504A1340E259D04EDD35B8ADA3BF685A45B818C5415FA7BF863634325821F8067EFE8C69DD6DCDC88F8228394E06C66918851388957E9A48B346F5BC87C30C678180EF125E8E2DB7CD2AD90574F4FBFD67ECD47 +uren.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. eXqvy/T2HBTjT4FWj3NSNY9CivUcGDv1Xklxrcj4RrIrE2veXBN/4OnQ7sOlBKE0DiWdBO3TW4raO/aFpFuBjFQV+nv4Y2NDJYIfgGfv6Mad1tzciPgig5TgbGaRiFE4iVfppIs0b1vIfDDGeBgO8SXo4tt80q2QV09Pv9Z+zUc= ;{id = 42393} +047572656E096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C0072BF4125C664D93FE4520AA909FFC887F8A9A50F00D02CADD0BE6AE099177D9DA3A0D22F7D1413151CDD478DCCADC0965D0F47748995ED5575FFEFF72A0A052958E5698FAE2C156FABD36966AFD8E50AEDAE2600C7AD20D4353B17FAF3C4A1785E039D9E430D333EE0DB139C6E988D75E9BCDA35EAE025CC03EAE3EA6384BF3D +uren.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. cr9BJcZk2T/kUgqpCf/Ih/ippQ8A0Cyt0L5q4JkXfZ2joNIvfRQTFRzdR43MrcCWXQ9HdImV7VV1/+/3KgoFKVjlaY+uLBVvq9NpZq/Y5QrtriYAx60g1DU7F/rzxKF4XgOdnkMNMz7g2xOcbpiNdem82jXq4CXMA+rj6mOEvz0= ;{id = 42393} +047572656E096E6C6E65746C616273026E6C00002F000100000E10001E0776696572746A65096E6C6E65746C616273026E6C000006040000000003 +uren.nlnetlabs.nl. 3600 IN NSEC viertje.nlnetlabs.nl. CNAME RRSIG NSEC +0776696572746A65096E6C6E65746C616273026E6C0000010001000027D80004D59AE03E +viertje.nlnetlabs.nl. 10200 IN A 213.154.224.62 +0776696572746A65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C004D4928369991D23D33C938CD8E3C7EA35C5567E2CE1DC7F3D947A075930C9C0078F0D82F5D6A0F0BB8C40B120C4C6E4B424205670ADD5E58BFF6B6F8A63DE193B90A27DA05E572E13235355C320B854E29FA7D22B93FB63D8E3A9E37A409B86E8C9663228B7868D32B4BAF666809B552B2556CCA165DCD455814A50DA20496F8 +viertje.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. TUkoNpmR0j0zyTjNjjx+o1xVZ+LOHcfz2UegdZMMnAB48NgvXWoPC7jECxIMTG5LQkIFZwrdXli/9rb4pj3hk7kKJ9oF5XLhMjU1XDILhU4p+n0iuT+2PY46njekCbhujJZjIot4aNMrS69maAm1UrJVbMoWXc1FWBSlDaIElvg= ;{id = 42393} +0776696572746A65096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C001530A96BDB9E58999F504ADFFE0DAE04A232328FC69AACD453FF00FC716C49C3B61A21BACC13F71C142196E83570FD5E8790088BE15AFD8D9AE847866A51A539CEC7394E5BE04DF96D07969940FAAF743EB6BEAA34AFCD25231DCBB1415E43580073C4D71444F1D9B596FE0726779AE51245E94D79157A0CB84F8AC07AD5433F +viertje.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. FTCpa9ueWJmfUErf/g2uBKIyMo/GmqzUU/8A/HFsScO2GiG6zBP3HBQhlug1cP1eh5AIi+Fa/Y2a6EeGalGlOc7HOU5b4E35bQeWmUD6r3Q+tr6qNK/NJSMdy7FBXkNYAHPE1xRE8dm1lv4HJnea5RJF6U15FXoMuE+KwHrVQz8= ;{id = 42393} +0776696572746A65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F552E63FF5A599096E6C6E65746C616273026E6C00C2D32E6708D35E6534ABBAC6E2BF25E8CDAC299C3CA7AB0F3128F7F19F3D359732F943C48C8681B7DCE769EEAEDD8EDF21534191886451A1BBEBDB3C1F5E2EB18EBCD5BCDCCE8FF4E4974B7843E74FACD79B26F906A73ABC424633046722C68F8E1FB9428543EF1BE97DFFB6FCB8A9DE6B93D709B16490F7AAE4207BC9BA059E +viertje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111605 20140127111605 42393 nlnetlabs.nl. wtMuZwjTXmU0q7rG4r8l6M2sKZw8p6sPMSj38Z89NZcy+UPEjIaBt9znae6u3Y7fIVNBkYhkUaG769s8H14usY681bzczo/05JdLeEPnT6zXmyb5Bqc6vEJGMwRnIsaPjh+5QoVD7xvpff+2/Lip3muT1wmxZJD3quQge8m6BZ4= ;{id = 42393} +0776696572746A65096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001020393FFFEEA3086 +viertje.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:203:93ff:feea:3086 +0776696572746A65096E6C6E65746C616273026E6C00002F000100000E10001D0676696A666A65096E6C6E65746C616273026E6C000006400000080003 +viertje.nlnetlabs.nl. 3600 IN NSEC vijfje.nlnetlabs.nl. A AAAA RRSIG NSEC +0676696A666A65096E6C6E65746C616273026E6C0000010001000027D80004D59AE00E +vijfje.nlnetlabs.nl. 10200 IN A 213.154.224.14 +0676696A666A65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F552E63FF5A599096E6C6E65746C616273026E6C009233C6DE424A98080BF175BD1C50D1F975461F9593460C6C98F90EA45CEC87391107F1D50CDAD44A6BB672135EA4C44FCB453A9F68A98E4643AAB7E66B9A4C0B3DDBFEEBDBDF95ED5DCA06E36E90EB58F64E6B887E2BDB7B38EC3C01D31AC8C182F089EB4DCA34E32137CFC5F91BF9E82E8230B2FCC666E3FBA40CE4A098B42E +vijfje.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111605 20140127111605 42393 nlnetlabs.nl. kjPG3kJKmAgL8XW9HFDR+XVGH5WTRgxsmPkOpFzshzkRB/HVDNrUSmu2chNepMRPy0U6n2ipjkZDqrfma5pMCz3b/uvb35XtXcoG426Q61j2TmuIfivbezjsPAHTGsjBgvCJ603KNOMhN8/F+Rv56C6CMLL8xmbj+6QM5KCYtC4= ;{id = 42393} +0676696A666A65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C001694CA384AAA8C674A3AC32E7D92BD7E5EEFB7BBEA9F627CB36059892A474725C29141ED80FB46C48B7904592267FBE74DA6FC2506B49F80EEC26ED10D9CDD9DE745559FE3C2EB102543CB66309B2E6F7EA62CD6FCC3D33759634CB5CE14D4EA9743D0BA12DFBD6D13439FEAC634146506B517C7ACCFBAB6861A1F3362714AA9 +vijfje.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. FpTKOEqqjGdKOsMufZK9fl7vt7vqn2J8s2BZiSpHRyXCkUHtgPtGxIt5BFkiZ/vnTab8JQa0n4Duwm7RDZzdnedFVZ/jwusQJUPLZjCbLm9+pizW/MPTN1ljTLXOFNTql0PQuhLfvW0TQ5/qxjQUZQa1F8esz7q2hhofM2JxSqk= ;{id = 42393} +0676696A666A65096E6C6E65746C616273026E6C00002F000100000E1000230C76696A666A652D6361626C65096E6C6E65746C616273026E6C000006400000000003 +vijfje.nlnetlabs.nl. 3600 IN NSEC vijfje-cable.nlnetlabs.nl. A RRSIG NSEC +0C76696A666A652D6361626C65096E6C6E65746C616273026E6C0000010001000027D80004D59AE00F +vijfje-cable.nlnetlabs.nl. 10200 IN A 213.154.224.15 +0C76696A666A652D6361626C65096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C005EF694A95C50B4894241A90F4EBD74ADE17723C539406FCFE61D0E1856FD26760FA02F3F6C2947473F5DA5BEBF8C397C7DD90BC9481548B3BEAB2553368BCE680A892997766A2DD0B3D21C6080CD051044E47C61EC4F818E7A03EB180C4FE02404E40A43119C5B6DAB503707078E2749546A64C033927BC047C308127D6061C3 +vijfje-cable.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. XvaUqVxQtIlCQakPTr10reF3I8U5QG/P5h0OGFb9JnYPoC8/bClHRz9dpb6/jDl8fdkLyUgVSLO+qyVTNovOaAqJKZd2ai3Qs9IcYIDNBRBE5Hxh7E+BjnoD6xgMT+AkBOQKQxGcW22rUDcHB44nSVRqZMAzknvAR8MIEn1gYcM= ;{id = 42393} +0C76696A666A652D6361626C65096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C005B37DB428E99DA150069DEA323622BC339FAD6BAFCAE066E3914D8C845F4724C68F87BD5772D0A9C590E6B896741292262FBBFCE8AFFE207B93B629B6AD81775E831D8E0CDB42566618C4AEE9A522F3C4519844CDACF4455C9BF11EC0D458330C38AF5D242C49F7E303BE0B24F4A5DC29A66D3F5479E5AB4D9140D55DB648A67 +vijfje-cable.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. WzfbQo6Z2hUAad6jI2Irwzn61rr8rgZuORTYyEX0ckxo+HvVdy0KnFkOa4lnQSkiYvu/zor/4ge5O2KbatgXdegx2ODNtCVmYYxK7ppSLzxFGYRM2s9EVcm/EewNRYMww4r10kLEn34wO+CyT0pdwppm0/VHnlq02RQNVdtkimc= ;{id = 42393} +0C76696A666A652D6361626C65096E6C6E65746C616273026E6C00002F000100000E10001E0776706E2D313739096E6C6E65746C616273026E6C000006400000000003 +vijfje-cable.nlnetlabs.nl. 3600 IN NSEC vpn-179.nlnetlabs.nl. A RRSIG NSEC +0776706E2D313739096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B3 +vpn-179.nlnetlabs.nl. 10200 IN A 213.154.224.179 +0776706E2D313739096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00B339B4815EB4642F3DE3BED20EE4C9FF6ED04D5CCF2B6D84CB9D46AB44C76818F6E3B0E72DEFC6F21B687E69DC8F1519DB872FA63F99AA08406E90A3DE54A61C55689EAD2192E611A89BA966C0D503CA4E33D3ECD6D0290E56A825D948300577DB8CF85E50EE910B4BC241BE650D2D601FD622A46D9D95B42F984D43315F1FBF +vpn-179.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. szm0gV60ZC89477SDuTJ/27QTVzPK22Ey51Gq0THaBj247DnLe/G8htofmncjxUZ24cvpj+ZqghAbpCj3lSmHFVonq0hkuYRqJupZsDVA8pOM9Ps1tApDlaoJdlIMAV324z4XlDukQtLwkG+ZQ0tYB/WIqRtnZW0L5hNQzFfH78= ;{id = 42393} +0776706E2D313739096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C008958A8C2503241044D029C557FEDDCB6F4FEC79E78A408397FC90BCA9282F5C814DA3C6F9F7BBE19DC8054E6FC0DC79BCA7D414ECF2D004B46044BBFBA63902ABE5712BDEB018BC225B0277EDE5027A102D82F45F4DED74A5F51EF398D09E684EE1E84E7959E7AC3EA9F8B1EC94B851B045A24181D9166AF92EA1B4D550D67DF +vpn-179.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. iViowlAyQQRNApxVf+3ctvT+x554pAg5f8kLypKC9cgU2jxvn3u+GdyAVOb8Dcebyn1BTs8tAEtGBEu/umOQKr5XEr3rAYvCJbAnft5QJ6EC2C9F9N7XSl9R7zmNCeaE7h6E55WeesPqn4seyUuFGwRaJBgdkWavkuobTVUNZ98= ;{id = 42393} +0776706E2D313739096E6C6E65746C616273026E6C00002F000100000E10001E0776706E2D313830096E6C6E65746C616273026E6C000006400000000003 +vpn-179.nlnetlabs.nl. 3600 IN NSEC vpn-180.nlnetlabs.nl. A RRSIG NSEC +0776706E2D313830096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B4 +vpn-180.nlnetlabs.nl. 10200 IN A 213.154.224.180 +0776706E2D313830096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00A00A413845774F77D659EDF5391103C0304036784B62E6E4DB1E36E4ACC11EA51F781AA36ADCB2BE011EF9C7BF35D34AD939E8537F0E83526C0E317F89A55B25F18E1A2A500AD3953827CBE44860CAA80012C8DF67789416A08C9DD0FE274FB77FAE70FB01FCDA3AA7920E14972D1E8068F565A4EF885C745380972EAD0681B8 +vpn-180.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. oApBOEV3T3fWWe31OREDwDBANnhLYubk2x425KzBHqUfeBqjatyyvgEe+ce/NdNK2TnoU38Og1JsDjF/iaVbJfGOGipQCtOVOCfL5EhgyqgAEsjfZ3iUFqCMndD+J0+3f65w+wH82jqnkg4Uly0egGj1ZaTviFx0U4CXLq0Ggbg= ;{id = 42393} +0776706E2D313830096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C000A9075F6E586635575BB6D0DF9D0B687F94903736DAB31A8940775A3C2A226F561E088652C3F4D73C888E3271CE3E6E2B7DC58F6E6CBC51B852242FC5C9EF9D3C77B478B37C59A48043B9227967E38E2C3B025CEB154F5059778CC84122BD26E172867B1B3470CC686FB634E62A8B41CAF1193F0A54E1EBEFB1B0073B45C01E4 +vpn-180.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. CpB19uWGY1V1u20N+dC2h/lJA3NtqzGolAd1o8KiJvVh4IhlLD9Nc8iI4ycc4+bit9xY9ubLxRuFIkL8XJ7508d7R4s3xZpIBDuSJ5Z+OOLDsCXOsVT1BZd4zIQSK9JuFyhnsbNHDMaG+2NOYqi0HK8Rk/ClTh6++xsAc7RcAeQ= ;{id = 42393} +0776706E2D313830096E6C6E65746C616273026E6C00002F000100000E10001E0776706E2D313831096E6C6E65746C616273026E6C000006400000000003 +vpn-180.nlnetlabs.nl. 3600 IN NSEC vpn-181.nlnetlabs.nl. A RRSIG NSEC +0776706E2D313831096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B5 +vpn-181.nlnetlabs.nl. 10200 IN A 213.154.224.181 +0776706E2D313831096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0087BC4061F3C472C1791A0D90DF16A6DB7581A629E710882F80F131CB9C3982AA1D06F65018E332230193CD6877930C5416D0A94B4E104FACF506E92A69B1515528FA3D277CEEF4709EE21778DDD2ED041D94833194E1A015EC5E896C7D6FD515E572253A76B43A77AFB94967E87AB2F3E95655C08ABCB1993CA616178F8E9B53 +vpn-181.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. h7xAYfPEcsF5Gg2Q3xam23WBpinnEIgvgPExy5w5gqodBvZQGOMyIwGTzWh3kwxUFtCpS04QT6z1BukqabFRVSj6PSd87vRwnuIXeN3S7QQdlIMxlOGgFexeiWx9b9UV5XIlOna0OnevuUln6Hqy8+lWVcCKvLGZPKYWF4+Om1M= ;{id = 42393} +0776706E2D313831096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00D1CFA9C24350734835B43EFA181BA3C310EDCCEB3B68C9D216D3565D6E58A7F44D4D1815E455CE2C4BB55167ED5E980609AC5767FB4A7C039B02CC43B79EC1CF5F3C159B29F976F83E2AEAC41C995C87A60F2908FD9013566BFEC16B0111CC14277357F43EAFA1AEE3B0BD67E810AE61932B8EFA92D98BE046A5CA3BC37F0288 +vpn-181.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. 0c+pwkNQc0g1tD76GBujwxDtzOs7aMnSFtNWXW5Yp/RNTRgV5FXOLEu1UWftXpgGCaxXZ/tKfAObAsxDt57Bz188FZsp+Xb4PirqxByZXIemDykI/ZATVmv+wWsBEcwUJ3NX9D6voa7jsL1n6BCuYZMrjvqS2YvgRqXKO8N/Aog= ;{id = 42393} +0776706E2D313831096E6C6E65746C616273026E6C00002F000100000E10001E0776706E2D313832096E6C6E65746C616273026E6C000006400000000003 +vpn-181.nlnetlabs.nl. 3600 IN NSEC vpn-182.nlnetlabs.nl. A RRSIG NSEC +0776706E2D313832096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B6 +vpn-182.nlnetlabs.nl. 10200 IN A 213.154.224.182 +0776706E2D313832096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0035F1BFBCCACA2AE18D3B73E67A2697E647CEB646312EBE8273E1E77C28061EDD902EB3163884506A4B857ECC426493C9CE2DE248E83479FACD63BD8968F9D5A8220A2C345198E76657B91FFC908CC97467D14C7B7A6B310070124F67A226187F5CC3FEE23082E14AB28696396445AEAA4B23EDE0C2D7F2E7A7900B6ED18A0F98 +vpn-182.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. NfG/vMrKKuGNO3PmeiaX5kfOtkYxLr6Cc+HnfCgGHt2QLrMWOIRQakuFfsxCZJPJzi3iSOg0efrNY72JaPnVqCIKLDRRmOdmV7kf/JCMyXRn0Ux7emsxAHAST2eiJhh/XMP+4jCC4UqyhpY5ZEWuqksj7eDC1/Lnp5ALbtGKD5g= ;{id = 42393} +0776706E2D313832096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00B77964E658A77B29791CCAE307A3D2331584ADA79F6172EE66D276337475534A7DCF278FF23BE60DA4F67D20F4CC03577A2F603917A1BCDE3623E87C5A21EB60CC487CC57E4EF92F96E29202E496320FFD208EF374FF0451FF98D18CDE2670775A46033E879D3BC3283DCFB72FEF5AB25489BE1B5E4EE84022DF210AF9516D8D +vpn-182.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. t3lk5lineyl5HMrjB6PSMxWEraefYXLuZtJ2M3R1U0p9zyeP8jvmDaT2fSD0zANXei9gORehvN42I+h8WiHrYMxIfMV+TvkvluKSAuSWMg/9II7zdP8EUf+Y0YzeJnB3WkYDPoedO8MoPc+3L+9aslSJvhteTuhAIt8hCvlRbY0= ;{id = 42393} +0776706E2D313832096E6C6E65746C616273026E6C00002F000100000E10001F0876706E2D6A616170096E6C6E65746C616273026E6C000006400000000003 +vpn-182.nlnetlabs.nl. 3600 IN NSEC vpn-jaap.nlnetlabs.nl. A RRSIG NSEC +0876706E2D6A616170096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B2 +vpn-jaap.nlnetlabs.nl. 10200 IN A 213.154.224.178 +0876706E2D6A616170096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0064826C041CF6C7F6FFFDAEE64D43AD43EE61B169FF8CC657C14F8791703175EA335AD1CCCF81F8169C05D6A858D3558D2A8637CE91E4A7405FB08FEDAE0B0DC9CCF0E62B51FB52184E7C7D4FA49019B5D9A7EE1453ACAEC9721CA9D4B0F442A069D045848ED67A1883C9BEF419BC2E1E8B664D4071A925A4983F2559DC6847F7 +vpn-jaap.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. ZIJsBBz2x/b//a7mTUOtQ+5hsWn/jMZXwU+HkXAxdeozWtHMz4H4FpwF1qhY01WNKoY3zpHkp0BfsI/trgsNyczw5itR+1IYTnx9T6SQGbXZp+4UU6yuyXIcqdSw9EKgadBFhI7WehiDyb70GbwuHotmTUBxqSWkmD8lWdxoR/c= ;{id = 42393} +0876706E2D6A616170096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C007D6A879742F09F83D5D58A446611488B9CA04CB2E41495106797CF87F991015B97DFEF2F603C7F5771ADC6BCD85234FF73B50D950CCC1A4F33AE383D5A002CA746BBB64B56490AE1C173BE709DD7C2B40DE628DB0B89817749338EFEED879D70BE4B3237B9649FAF6C447C215DF4F092B8F334CD9F050B11AB4DBAB7895D9488 +vpn-jaap.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. fWqHl0Lwn4PV1YpEZhFIi5ygTLLkFJUQZ5fPh/mRAVuX3+8vYDx/V3GtxrzYUjT/c7UNlQzMGk8zrjg9WgAsp0a7tktWSQrhwXO+cJ3XwrQN5ijbC4mBd0kzjv7th51wvksyN7lkn69sRHwhXfTwkrjzNM2fBQsRq026t4ldlIg= ;{id = 42393} +0876706E2D6A616170096E6C6E65746C616273026E6C00002F000100000E10001F0876706E2D6F6C6166096E6C6E65746C616273026E6C000006400000000003 +vpn-jaap.nlnetlabs.nl. 3600 IN NSEC vpn-olaf.nlnetlabs.nl. A RRSIG NSEC +0876706E2D6F6C6166096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B0 +vpn-olaf.nlnetlabs.nl. 10200 IN A 213.154.224.176 +0876706E2D6F6C6166096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0072479D28A885C98749E885737689E2A5AFA55A682629E397E3B83A4D462F622F3A616EFD0649D5707B22E62FBB743E8C19A1F4DF2813AF9F9631006C2C30FAA21422579002AE1BBDF2296720D1A0E5D2CF383C393E06A9000C9CF6882E8AE63E64A42ABFF2FFC304A2C54FBCF6880540DC4445070ED049982DD3327D5C4EC2D1 +vpn-olaf.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. ckedKKiFyYdJ6IVzdonipa+lWmgmKeOX47g6TUYvYi86YW79BknVcHsi5i+7dD6MGaH03ygTr5+WMQBsLDD6ohQiV5ACrhu98ilnINGg5dLPODw5PgapAAyc9oguiuY+ZKQqv/L/wwSixU+89ogFQNxERQcO0EmYLdMyfVxOwtE= ;{id = 42393} +0876706E2D6F6C6166096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00B69AA953D01B938BBB5AE2ED679359CBE331D7CE57E2036BC76A763B35802B01DAFDDE47A829BCDFF50BD52B3CD431029CED68767AA7D25B314F2EEE36D903E124D885C1F6794AD7B573EBA78CE91A640B523867C10DD67A04C6112DADF9DCF298345D1707D50E777EF4CD32331957930C6319B29E049B7D05A123DF426D9C60 +vpn-olaf.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. tpqpU9Abk4u7WuLtZ5NZy+Mx185X4gNrx2p2OzWAKwHa/d5HqCm83/UL1Ss81DECnO1odnqn0lsxTy7uNtkD4STYhcH2eUrXtXPrp4zpGmQLUjhnwQ3WegTGES2t+dzymDRdFwfVDnd+9M0yMxlXkwxjGbKeBJt9BaEj30JtnGA= ;{id = 42393} +0876706E2D6F6C6166096E6C6E65746C616273026E6C00002F000100000E1000200976706E2D6F6C616632096E6C6E65746C616273026E6C000006400000000003 +vpn-olaf.nlnetlabs.nl. 3600 IN NSEC vpn-olaf2.nlnetlabs.nl. A RRSIG NSEC +0976706E2D6F6C616632096E6C6E65746C616273026E6C0000010001000027D80004D59AE0B1 +vpn-olaf2.nlnetlabs.nl. 10200 IN A 213.154.224.177 +0976706E2D6F6C616632096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C004E62F0DFDDA9EEB88B1DDB651B7C024FFB83774CC9C28D76D0D97194215E2258014423E60B2A5E5F9E8E5E38CED48008A3606C69DC0917D847F0266DBA4334D0E364BA0B5F6AC77A0CAD8E6A90EFCA1B16A001A9A2F212DAFAD7FBB53D99DB4CDB7743A4EAEB688530399D01D4E0080A2B727AEC59474784C642D9C182FDE9D6 +vpn-olaf2.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. TmLw392p7riLHdtlG3wCT/uDd0zJwo120NlxlCFeIlgBRCPmCypeX56OXjjO1IAIo2BsadwJF9hH8CZtukM00ONkugtfasd6DK2OapDvyhsWoAGpovIS2vrX+7U9mdtM23dDpOrraIUwOZ0B1OAICityeuxZR0eExkLZwYL96dY= ;{id = 42393} +0976706E2D6F6C616632096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00C6D1E5F9F95296072893F1B9B9CF9C4D34E51DB7B26C0AD4A04723F62E306879CAA959FE28CA0CAFE34F1FBD6D244C4609A0AAAEF93BE46E4A3C8C247DC4114702D4363F99605E10020C3D00FC862BEBBE8D96C9F52A596FFF4292B65BCD9B8B9D0CC45FFDCFFD0B5C3D376FD97E2B28E08AC653DF99BC8FE806E16F07D86338 +vpn-olaf2.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. xtHl+flSlgcok/G5uc+cTTTlHbeybArUoEcj9i4waHnKqVn+KMoMr+NPH71tJExGCaCqrvk75G5KPIwkfcQRRwLUNj+ZYF4QAgw9APyGK+u+jZbJ9SpZb/9CkrZbzZuLnQzEX/3P/QtcPTdv2X4rKOCKxlPfmbyP6AbhbwfYYzg= ;{id = 42393} +0976706E2D6F6C616632096E6C6E65746C616273026E6C00002F000100000E10001A03777777096E6C6E65746C616273026E6C000006400000000003 +vpn-olaf2.nlnetlabs.nl. 3600 IN NSEC www.nlnetlabs.nl. A RRSIG NSEC +03777777096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +03777777096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C003B06F4D332D515808BBF9C39914C2ADC66AB11FE31B28B3423E722F7DEB3760CBE5B4331A34D85DC90A6559EDDBA0D07AD5BB3FF275DEA3E9EFEA6C291884DF236DB395A2E7FF110D699E1A4736BEEE8598D1D5C188897FA641FC3CB147FA580B15F013E806FE618769CEDECADAE1BAFD16C65AB5BD086AE438F2791CCC1BF6B +www.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. Owb00zLVFYCLv5w5kUwq3GarEf4xsos0I+ci996zdgy+W0Mxo02F3JCmVZ7dug0HrVuz/ydd6j6e/qbCkYhN8jbbOVouf/EQ1pnhpHNr7uhZjR1cGIiX+mQfw8sUf6WAsV8BPoBv5hh2nO3sra4br9FsZatb0IauQ48nkczBv2s= ;{id = 42393} +03777777096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00AFE54DD7D9A08A6D4029D1B8A27CDC35F1B07E96E45958E1ED13FE58003B92EF70DD72B68DD1E21776F5404E3DA2201BB2CE3752B425A7ED3C9BFE99B7118D92C0B1400D50023E03F7242A6A945F09B27688C6EBC98D5A0A94F88BD080177A0E370EB1AC9645FDFC553EFCBD26BBAA29FB190E5D991E85C2B40FDE7822B58611 +www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. r+VN19mgim1AKdG4onzcNfGwfpbkWVjh7RP+WAA7ku9w3XK2jdHiF3b1QE49oiAbss43UrQlp+08m/6ZtxGNksCxQA1QAj4D9yQqapRfCbJ2iMbryY1aCpT4i9CAF3oONw6xrJZF/fxVPvy9JruqKfsZDl2ZHoXCtA/eeCK1hhE= ;{id = 42393} +03777777096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00327F6DA9D087F29ACC614E16F74FE1A4D0D034D4AE210D639FE9BDA1C9C215628CF235C6B869E686366DB4F4B0FEC87A03C55AE7D6D2B91812C88836BA0C43D4542817DB1BEFB380932AB47F18127833B1E9A6DDE1278B58D6EFA9333C12979749A6F307C133E32F9C09F5483AD835F10714F0B64762171AA0D40AAA5ABAFA9C +www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. Mn9tqdCH8prMYU4W90/hpNDQNNSuIQ1jn+m9ocnCFWKM8jXGuGnmhjZttPSw/sh6A8Va59bSuRgSyIg2ugxD1FQoF9sb77OAkyq0fxgSeDOx6abd4SeLWNbvqTM8EpeXSabzB8Ez4y+cCfVIOtg18QcU8LZHYhcaoNQKqlq6+pw= ;{id = 42393} +03777777096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +03777777096E6C6E65746C616273026E6C00002F000100000E100024045F343433045F74637003777777096E6C6E65746C616273026E6C000006400000080003 +www.nlnetlabs.nl. 3600 IN NSEC _443._tcp.www.nlnetlabs.nl. A AAAA RRSIG NSEC +045F343433045F74637003777777096E6C6E65746C616273026E6C0000050001000027D8001A013301310131055F64616E65096E6C6E65746C616273026E6C00 +_443._tcp.www.nlnetlabs.nl. 10200 IN CNAME 3.1.1._dane.nlnetlabs.nl. +045F343433045F74637003777777096E6C6E65746C616273026E6C00002E0001000027D800A000050805000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00AAB7D8E877184C514FDCE92F5732709262562D34DBAB4EA3C297DB9D45DB9C8494F76B97010B8FBB23B3C727F4390C32E90F294252308EA6E67035245887C1061BF13FA1475A6D17AC8E8728EA2AC6AE45CF520AB21B399FB8D167C21FA1D32B2BE391B76148C09530C6108BAD7FF438C99F0193DEFEC011DC33873920515C94 +_443._tcp.www.nlnetlabs.nl. 10200 IN RRSIG CNAME 8 5 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. qrfY6HcYTFFP3OkvVzJwkmJWLTTbq06jwpfbnUXbnISU92uXAQuPuyOzxyf0OQwy6Q8pQlIwjqbmcDUkWIfBBhvxP6FHWm0XrI6HKOoqxq5Fz1IKshs5n7jRZ8IfodMrK+ORt2FIwJUwxhCLrX/0OMmfAZPe/sAR3DOHOSBRXJQ= ;{id = 42393} +045F343433045F74637003777777096E6C6E65746C616273026E6C00002E000100000E1000A0002F080500000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C0035D5CE1A98D2E8782078E17F95CEA27B6184FBF1000BC6F3209F47D5FC688E0952727F70BFFF9FF5A0383064F54B6CE049043E34BE9B8C33002FE16034C578435FF94EACE9FAAEC0FE4F7FCE7F155C2932FA04F3B26ED64332A78B36E9DDFC4DF1E1C80D2ABA8D99CA2BA6494AE39F3EE07A10266D3E98A1D6C04D5C20245AD5 +_443._tcp.www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. NdXOGpjS6HggeOF/lc6ie2GE+/EAC8bzIJ9H1fxojglScn9wv/+f9aA4MGT1S2zgSQQ+NL6bjDMAL+FgNMV4Q1/5Tqzp+q7A/k9/zn8VXCky+gTzsm7WQzKnizbp3fxN8eHIDSq6jZnKK6ZJSuOfPuB6ECZtPpih1sBNXCAkWtU= ;{id = 42393} +045F343433045F74637003777777096E6C6E65746C616273026E6C00002F000100000E10001E0377697003777777096E6C6E65746C616273026E6C000006040000000003 +_443._tcp.www.nlnetlabs.nl. 3600 IN NSEC wip.www.nlnetlabs.nl. CNAME RRSIG NSEC +0377697003777777096E6C6E65746C616273026E6C0000010001000027D80004D59AE001 +wip.www.nlnetlabs.nl. 10200 IN A 213.154.224.1 +0377697003777777096E6C6E65746C616273026E6C00002E0001000027D800A000010804000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C009BD6292E194F7E8BEBF1DC23F359C20A23CB7DE511DFE5141D77962EE5B832D6CD04793B70E7072FD890D8A31298F30E919FAE204767347B2C664AC1376B5DB58FB42044BC48803568DF7C52E1A33237BFAE5128B50F8D116F965F84017F4097EB78A25AE33A2005280267A6073527CEFF3B726C86B44F4E712E79339042F032 +wip.www.nlnetlabs.nl. 10200 IN RRSIG A 8 4 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. m9YpLhlPfovr8dwj81nCCiPLfeUR3+UUHXeWLuW4MtbNBHk7cOcHL9iQ2KMSmPMOkZ+uIEdnNHssZkrBN2tdtY+0IES8SIA1aN98UuGjMje/rlEotQ+NEW+WX4QBf0CX63iiWuM6IAUoAmemBzUnzv87cmyGtE9OcS55M5BC8DI= ;{id = 42393} +0377697003777777096E6C6E65746C616273026E6C00002E0001000027D800A0001C0804000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C009F5EF0100F1528B9C8D84242ED22E9CBA8C9AFAB163676D2CA7E6B2342CFFE35B43FE82FFB4A162B93F8F7D15821F8CCD22FA1D098581D1C0B70A2F709E664FF654D379420941B23B0406CCE6B686EBA4978936F99E3BC253259D0C92FCCB2D67773128655ACB2D7CBC2A0B7D2E354819177280214CB8E0B6436FE553D04522A +wip.www.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 4 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. n17wEA8VKLnI2EJC7SLpy6jJr6sWNnbSyn5rI0LP/jW0P+gv+0oWK5P499FYIfjM0i+h0JhYHRwLcKL3CeZk/2VNN5QglBsjsEBszmtobrpJeJNvmeO8JTJZ0MkvzLLWd3MShlWsstfLwqC30uNUgZF3KAIUy44LZDb+VT0EUio= ;{id = 42393} +0377697003777777096E6C6E65746C616273026E6C00002E000100000E1000A0002F080400000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00350D871FA696B6C7C5A1278E45B53611A2E3357E71CA9BEBE12DD1F184FDB66C95FF5CD0799779B646E1B4379CE487212CCFDDF280212A403A227B207F9E94AF52ECD9A3F2E4FBF696C3A86907B6C5945A0D46797DF81B5B5859538799006C8D8F586D443BAD527745788EFAC60C195C81857175C05E5CADB9915014CA7D04D6 +wip.www.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. NQ2HH6aWtsfFoSeORbU2EaLjNX5xypvr4S3R8YT9tmyV/1zQeZd5tkbhtDec5IchLM/d8oAhKkA6Insgf56Ur1Ls2aPy5Pv2lsOoaQe2xZRaDUZ5ffgbW1hZU4eZAGyNj1htRDutUndFeI76xgwZXIGFcXXAXlytuZFQFMp9BNY= ;{id = 42393} +0377697003777777096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010000000000000001 +wip.www.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1::1 +0377697003777777096E6C6E65746C616273026E6C00002F000100000E10001B04786D7070096E6C6E65746C616273026E6C000006400000080003 +wip.www.nlnetlabs.nl. 3600 IN NSEC xmpp.nlnetlabs.nl. A AAAA RRSIG NSEC +04786D7070096E6C6E65746C616273026E6C0000010001000027D80004D59AE094 +xmpp.nlnetlabs.nl. 10200 IN A 213.154.224.148 +04786D7070096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00A7EC3326691FB7DEAF4F0D5B935BCA8797363807108784E43CFC299DF5A062C8B67A10BB7A8D35E42C32F33A2AB46811FB653D5A049303078858AAB29DAE3270FCE09ECD86105C0196CBFF8363051D847ACDC64B9DABDC2AB82B133B813B9D6D77BC023E7141F21410A16C60F9C6D1260398C248ED54F1D2EE0B981B42C8834C +xmpp.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. p+wzJmkft96vTw1bk1vKh5c2OAcQh4TkPPwpnfWgYsi2ehC7eo015Cwy8zoqtGgR+2U9WgSTAweIWKqyna4ycPzgns2GEFwBlsv/g2MFHYR6zcZLnavcKrgrEzuBO51td7wCPnFB8hQQoWxg+cbRJgOYwkjtVPHS7guYG0LIg0w= ;{id = 42393} +04786D7070096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00CBD87CE9D1CBF0A0C2946B5C2F6D24EF4614201E5B96763A6DB642A3E5056E7A02170C49577F3C75047E3BF4249B71DC37F7AAAAA8AD1EBF6B38F6EC254B83749E13881CE3617EF571102F19C125FDC4E6249DA1CE32836140C8D64CE7DFC958D8C8E1C916A38806E55E2E82C88B54A19638A90CDADDC67AF6FFA30A676678C9 +xmpp.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. y9h86dHL8KDClGtcL20k70YUIB5blnY6bbZCo+UFbnoCFwxJV388dQR+O/Qkm3HcN/eqqqitHr9rOPbsJUuDdJ4TiBzjYX71cRAvGcEl/cTmJJ2hzjKDYUDI1kzn38lY2MjhyRajiAblXi6CyItUoZY4qQza3cZ69v+jCmdmeMk= ;{id = 42393} +04786D7070096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C004C6245487AADE535AC18F46098479595C3DEC57CB50B4E0A9DFD56FCFABBB9090212B867D51BA4D797F3781844CF4C135F86F4FD997226B0F36623105E7B2653BE0F8C1D3ADB2D2B5C5DAB6D4F3397994AD5B05675A2EB019F341A48FAD7175B9992B5D4B6BAED4F2D1DAC3E0F3FECC3A131FDF1C21B6633C517A4A279695187 +xmpp.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. TGJFSHqt5TWsGPRgmEeVlcPexXy1C04Knf1W/Pq7uQkCErhn1Ruk15fzeBhEz0wTX4b0/ZlyJrDzZiMQXnsmU74PjB062y0rXF2rbU8zl5lK1bBWdaLrAZ80Gkj61xdbmZK11La67U8tHaw+Dz/sw6Ex/fHCG2YzxRekonlpUYc= ;{id = 42393} +04786D7070096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C005E6BBE6733A41B4577B8EFC9E3D04C9CE7631164659D84CF271F2C5B7FDECBDF260226C94F589AFAD4BCA1FD66C8311ED69F6BBA0E6948B62D352155E750FEFB1CA26B8D75725282B2E39C15E6A0F9FB0AFB2D696F8972D91C8ECCC671453C7A268593B40DD1248496F41BB1F6F135F55DD4633EE330A7EA70FAA36E244B1046 +xmpp.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. Xmu+ZzOkG0V3uO/J49BMnOdjEWRlnYTPJx8sW3/ey98mAibJT1ia+tS8of1myDEe1p9rug5pSLYtNSFV51D++xyia411clKCsuOcFeag+fsK+y1pb4ly2RyOzMZxRTx6JoWTtA3RJISW9Bux9vE19V3UYz7jMKfqcPqjbiRLEEY= ;{id = 42393} +04786D7070096E6C6E65746C616273026E6C00001C0001000027D80010200107B802060001B0EF003000000000 +xmpp.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:b0ef:30:: +04786D7070096E6C6E65746C616273026E6C00002C0001000027D80016010144278B2B38155946ACAA742191D802592FE5D974 +xmpp.nlnetlabs.nl. 10200 IN SSHFP 1 1 44278B2B38155946ACAA742191D802592FE5D974 +04786D7070096E6C6E65746C616273026E6C00002C0001000027D80016020164C62234F12768515F5EA1312FA04AEEF2C21B5E +xmpp.nlnetlabs.nl. 10200 IN SSHFP 2 1 64C62234F12768515F5EA1312FA04AEEF2C21B5E +04786D7070096E6C6E65746C616273026E6C00002C0001000027D800160301FDE976561F905F1DA58E8C8CA8D7F6884D115A67 +xmpp.nlnetlabs.nl. 10200 IN SSHFP 3 1 FDE976561F905F1DA58E8C8CA8D7F6884D115A67 +04786D7070096E6C6E65746C616273026E6C00002F000100000E10001C05796F62726F096E6C6E65746C616273026E6C00000640000008000B +xmpp.nlnetlabs.nl. 3600 IN NSEC yobro.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +05796F62726F096E6C6E65746C616273026E6C0000010001000027D80004D59AE035 +yobro.nlnetlabs.nl. 10200 IN A 213.154.224.53 +05796F62726F096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00C389A991EE82211E79C5A42A31B340FC534416CD650A57BB722ED21198C745AA6F5935461A73B7EED003E328141DC77F2C540B25A55B03ACA2A4F0A0223A26C201D474369496C2499879E418305B19B39958AD31D2E3E1DCEFA348FD1AF9D1B16AD0DAE89D7886DD9394385DB155C205CB29C4B1AE7104AB33D9E8138C2DA8DC +yobro.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. w4mpke6CIR55xaQqMbNA/FNEFs1lCle7ci7SEZjHRapvWTVGGnO37tAD4ygUHcd/LFQLJaVbA6yipPCgIjomwgHUdDaUlsJJmHnkGDBbGbOZWK0x0uPh3O+jSP0a+dGxatDa6J14ht2TlDhdsVXCBcspxLGucQSrM9noE4wtqNw= ;{id = 42393} +05796F62726F096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00967AD6883872197A92243D8A23871CADCB2303F20F470A09074B040E48C5420A73AFE715E25CBF664F9654FECD5A242D1966273A8428EA7567B3E41ADD5D8101D6E3894CE1D9CE40F1D3F11AF9F7FD35CB41D6940FABBF92C4CF505053A2C60D5719332617C2795E80409872E8CD6630F1AE0B33C0E3589D890881C1350756CA +yobro.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. lnrWiDhyGXqSJD2KI4ccrcsjA/IPRwoJB0sEDkjFQgpzr+cV4ly/Zk+WVP7NWiQtGWYnOoQo6nVns+Qa3V2BAdbjiUzh2c5A8dPxGvn3/TXLQdaUD6u/ksTPUFBTosYNVxkzJhfCeV6AQJhy6M1mMPGuCzPA41idiQiBwTUHVso= ;{id = 42393} +05796F62726F096E6C6E65746C616273026E6C00002F000100000E10001C057A61726961096E6C6E65746C616273026E6C000006400000000003 +yobro.nlnetlabs.nl. 3600 IN NSEC zaria.nlnetlabs.nl. A RRSIG NSEC +057A61726961096E6C6E65746C616273026E6C0000010001000027D80004D59AE0D4 +zaria.nlnetlabs.nl. 10200 IN A 213.154.224.212 +057A61726961096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00009896E1DDC115DF362FBA581F3D780A059D12AB7C84FE6F3490B502E50BF19DC67183AE49417CA8A25E218E2FD5EA0912B80EEF82513803D86BF28B40B2759C433C25582BF470760FE0824869B00FBF6FCFB60505E19EC63A0A73D9DEC820B2FBE15A9B023959B097CF64BA21C761D3ED73FAAD2650155A6E54ACE68BBDC3F5 +zaria.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. AJiW4d3BFd82L7pYHz14CgWdEqt8hP5vNJC1AuUL8Z3GcYOuSUF8qKJeIY4v1eoJErgO74JROAPYa/KLQLJ1nEM8JVgr9HB2D+CCSGmwD79vz7YFBeGexjoKc9neyCCy++FamwI5WbCXz2S6Icdh0+1z+q0mUBVablSs5ou9w/U= ;{id = 42393} +057A61726961096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0001F5D931C4E4BBAC6394C518DB620525371927C18D13703083FFECFA776DD17C022D0CDCA6F8979CEBA1C9AEA0569AE9168C3A5DD07565A6BC82F3B503D0D714FDA6CF803FFB0A7753CF2E4B95344976E35AE7D630AF49AC464A5324BFA985FFA4B7D7218D5EE2333E7655A5DFF1966D6C1589F19B3BF8068FB8F3F897D6A964 +zaria.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. AfXZMcTku6xjlMUY22IFJTcZJ8GNE3Awg//s+ndt0XwCLQzcpviXnOuhya6gVprpFow6XdB1Zaa8gvO1A9DXFP2mz4A/+wp3U88uS5U0SXbjWufWMK9JrEZKUyS/qYX/pLfXIY1e4jM+dlWl3/GWbWwVifGbO/gGj7jz+JfWqWQ= ;{id = 42393} +057A61726961096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00B7055014C664F52CA75356E9D00FE923322EA52E66D4CB3D5952A451D55CF0DA164CE42AF2EC8601B035846E9E3F9C00F2C40A194BF57D535E4E94F3AE290B5D10C0E936A87FEEAE53F24F4164AE02BD189074E5ADAB9EE9E48E3C574A2A5CEA6107AEFF7301FF30B0B176BD53FF1EC23EBA458080E5E30415FDA92790B21475 +zaria.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. twVQFMZk9SynU1bp0A/pIzIupS5m1Ms9WVKkUdVc8NoWTOQq8uyGAbA1hG6eP5wA8sQKGUv1fVNeTpTzrikLXRDA6Taof+6uU/JPQWSuAr0YkHTlraue6eSOPFdKKlzqYQeu/3MB/zCwsXa9U/8ewj66RYCA5eMEFf2pJ5CyFHU= ;{id = 42393} +057A61726961096E6C6E65746C616273026E6C00002C0001000027D800160101A440F57393E55A79BD3EB97D71CBA914C15F9DC2 +zaria.nlnetlabs.nl. 10200 IN SSHFP 1 1 A440F57393E55A79BD3EB97D71CBA914C15F9DC2 +057A61726961096E6C6E65746C616273026E6C00002C0001000027D800160201A5D6C312388F9CDABC3D550084D41C1471C1ECF2 +zaria.nlnetlabs.nl. 10200 IN SSHFP 2 1 A5D6C312388F9CDABC3D550084D41C1471C1ECF2 +057A61726961096E6C6E65746C616273026E6C00002F000100000E10001A037A697A096E6C6E65746C616273026E6C00000640000000000B +zaria.nlnetlabs.nl. 3600 IN NSEC ziz.nlnetlabs.nl. A SSHFP RRSIG NSEC +037A697A096E6C6E65746C616273026E6C0000010001000027D80004D59AE01B +ziz.nlnetlabs.nl. 10200 IN A 213.154.224.27 +037A697A096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0099A61AE8F080FB6B9ACF74084B585851F8D6F96CCD7708BA7F88ADB5BEB5D4F98F9CEF554E5E53455BCC81CF58F1F10A3CD4CF2BF8A6FEA8DC0215D548423CA064745B0EA6A28A2563D97A78174EE43DCDA1B9EFF7C899AA9593B9A04E6D38827EC24A9923D48F9AD89FEC783A5FCDE78638C5F3EE42A1FCB82C58E8F3B46872 +ziz.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. maYa6PCA+2uaz3QIS1hYUfjW+WzNdwi6f4ittb611PmPnO9VTl5TRVvMgc9Y8fEKPNTPK/im/qjcAhXVSEI8oGR0Ww6mooolY9l6eBdO5D3Nobnv98iZqpWTuaBObTiCfsJKmSPUj5rYn+x4Ol/N54Y4xfPuQqH8uCxY6PO0aHI= ;{id = 42393} +037A697A096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0016262D58A85CC922663DFFCF55DFD460A25E01C7EB54391156ADB107136BE7F0061080EE870962B1389D53DA37ED3CDBA610651BAC56376BCA8FE71E98929B3035738D4C618ED9C9AF122C83779D77964EA6411F5A6073200F61E818565A7160575DBD205B75A23295E70DD40375AD75E2490BEC3099E4D4053972038E8A0686 +ziz.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. FiYtWKhcySJmPf/PVd/UYKJeAcfrVDkRVq2xBxNr5/AGEIDuhwlisTidU9o37TzbphBlG6xWN2vKj+cemJKbMDVzjUxhjtnJrxIsg3edd5ZOpkEfWmBzIA9h6BhWWnFgV129IFt1ojKV5w3UA3WtdeJJC+wwmeTUBTlyA46KBoY= ;{id = 42393} +037A697A096E6C6E65746C616273026E6C00002E0001000027D800A0002C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C00C8AD6468F6674B674DB4F14589EFAF2FC9B4CF0D05DBB7210EC51032D1838A2E882BF9BD0323468A0CFF9A8ADBE6ED22DAD8CCFDE3C2C53D8B3D738C42F628F2D58DCAC2064553E97380F07AF4957C23B3C6955F4013AFA16A2DB38F14D4F91E4C334B3669EE44831A71A472C90566FB3DF99CBCF47168546B266597542D3F77 +ziz.nlnetlabs.nl. 10200 IN RRSIG SSHFP 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. yK1kaPZnS2dNtPFFie+vL8m0zw0F27chDsUQMtGDii6IK/m9AyNGigz/morb5u0i2tjM/ePCxT2LPXOMQvYo8tWNysIGRVPpc4DwevSVfCOzxpVfQBOvoWots48U1PkeTDNLNmnuRIMacaRyyQVm+z35nLz0cWhUayZll1QtP3c= ;{id = 42393} +037A697A096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C00C5F5096D2D0E7EA452F44B275D519613EE46F71DEFA24A5C49302A239656E7024DAE10AB2A717BDEE5A3314C58B3469CFDB477252A029B2B5783B861247E862E4C2847C62F2F7946B2AC9E6D7A98ABC8F96551195A49E133DB6AED6D21E7714C565FF3D2BF8DCFCA10A1A69807D9A33A9ED2250A6593DE19B45446B5D9EE5869 +ziz.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. xfUJbS0OfqRS9EsnXVGWE+5G9x3vokpcSTAqI5ZW5wJNrhCrKnF73uWjMUxYs0ac/bR3JSoCmytXg7hhJH6GLkwoR8YvL3lGsqyebXqYq8j5ZVEZWknhM9tq7W0h53FMVl/z0r+Nz8oQoaaYB9mjOp7SJQplk94ZtFRGtdnuWGk= ;{id = 42393} +037A697A096E6C6E65746C616273026E6C00001C0001000027D80010200107B80206000102144FFFFE3B655F +ziz.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:214:4fff:fe3b:655f +037A697A096E6C6E65746C616273026E6C00002C0001000027D8001601010C7080A7A7E931F4B22FB937E10FB8BFFF42F49B +ziz.nlnetlabs.nl. 10200 IN SSHFP 1 1 0C7080A7A7E931F4B22FB937E10FB8BFFF42F49B +037A697A096E6C6E65746C616273026E6C00002C0001000027D80016020179A780A6DBD2F1217CCE21B02A35CAF0E0481C55 +ziz.nlnetlabs.nl. 10200 IN SSHFP 2 1 79A780A6DBD2F1217CCE21B02A35CAF0E0481C55 +037A697A096E6C6E65746C616273026E6C00002F000100000E10001F087A6F696462657267096E6C6E65746C616273026E6C00000640000008000B +ziz.nlnetlabs.nl. 3600 IN NSEC zoidberg.nlnetlabs.nl. A AAAA SSHFP RRSIG NSEC +087A6F696462657267096E6C6E65746C616273026E6C0000010001000027D80004D59AE012 +zoidberg.nlnetlabs.nl. 10200 IN A 213.154.224.18 +087A6F696462657267096E6C6E65746C616273026E6C00002E0001000027D800A000010803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C003FAF7E289FF9D4BCCA48E3377486BAB1543F99FEDCD000C5CE373B8F90311D26FDCF295B54377F7915E9C25D5D9115D133C943CE02F70EEFB44F6DF5AABC52366B7D2A4F8783D7C786B9B2135FBB734CDC3E9B4BBD136339B65F95453B1FFAC78479D2FEA0D13BB5CC3797A4763E7FA62B29721E4BF6120C584658F66B81FD39 +zoidberg.nlnetlabs.nl. 10200 IN RRSIG A 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. P69+KJ/51LzKSOM3dIa6sVQ/mf7c0ADFzjc7j5AxHSb9zylbVDd/eRXpwl1dkRXRM8lDzgL3Du+0T231qrxSNmt9Kk+Hg9fHhrmyE1+7c0zcPptLvRNjObZflUU7H/rHhHnS/qDRO7XMN5ekdj5/pispch5L9hIMWEZY9muB/Tk= ;{id = 42393} +087A6F696462657267096E6C6E65746C616273026E6C00002E0001000027D800A0001C0803000027D8530B29F652E63FF6A599096E6C6E65746C616273026E6C0041D1C267DD6F0FE18C044956C07949348F70AFB67B8AC5D185C424723041D66B1296B08D3FB74C8B562F20AFB74E12B3BF3157C249E39AC1F4D6311785F0D33E352C024D5C17331CBF80BCE11172424773F8131CBB5577972BE917C8A99DFCE2D5C80E28D1DD1D5B619B1E890893B8C1DA1F6E55A43787E70D416276B7D51B8E +zoidberg.nlnetlabs.nl. 10200 IN RRSIG AAAA 8 3 10200 20140224111606 20140127111606 42393 nlnetlabs.nl. QdHCZ91vD+GMBElWwHlJNI9wr7Z7isXRhcQkcjBB1msSlrCNP7dMi1YvIK+3ThKzvzFXwknjmsH01jEXhfDTPjUsAk1cFzMcv4C84RFyQkdz+BMcu1V3lyvpF8ipnfzi1cgOKNHdHVthmx6JCJO4wdofblWkN4fnDUFidrfVG44= ;{id = 42393} +087A6F696462657267096E6C6E65746C616273026E6C00002E000100000E1000A0002F080300000E10530B29F652E63FF6A599096E6C6E65746C616273026E6C002246030CAA0386F75632A50108FA87DF4B0AA12161DCAD6CE87DD0B94C6BDE41C864876775CA1B0AAFAD85FAC6695FCABD5B65385459B0C1E88C978843B440867FB2C43BEB1ABC608813AF530A30E7337073723A314595EA81960D385439B7BF747AF2BA61E09E011507BCDEBC1670B255E91BE9ECA3161BC0F4D34E8B6DD97C +zoidberg.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20140224111606 20140127111606 42393 nlnetlabs.nl. IkYDDKoDhvdWMqUBCPqH30sKoSFh3K1s6H3QuUxr3kHIZIdndcobCq+thfrGaV/KvVtlOFRZsMHojJeIQ7RAhn+yxDvrGrxgiBOvUwow5zNwc3I6MUWV6oGWDThUObe/dHryumHgngEVB7zevBZwslXpG+nsoxYbwPTTTott2Xw= ;{id = 42393} +087A6F696462657267096E6C6E65746C616273026E6C00001C0001000027D80010200107B8020600010219D1FFFEB185E8 +zoidberg.nlnetlabs.nl. 10200 IN AAAA 2001:7b8:206:1:219:d1ff:feb1:85e8 +087A6F696462657267096E6C6E65746C616273026E6C00002F000100000E100016096E6C6E65746C616273026E6C000006400000080003 +zoidberg.nlnetlabs.nl. 3600 IN NSEC nlnetlabs.nl. A AAAA RRSIG NSEC +096E6C6E65746C616273026E6C0000060001000027D80040046F70656E096E6C6E65746C616273026E6C000A686F73746D6173746572096E6C6E65746C616273026E6C00780B651C0000708000001C2000093A8000000E10 +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2014012700 28800 7200 604800 3600 diff --git a/external/unbound/testdata/test_ldnsrr.c3 b/external/unbound/testdata/test_ldnsrr.c3 new file mode 100644 index 0000000..3adb7b5 --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.c3 @@ -0,0 +1,1068 @@ +0C74797065732D7369676E6564027762087369646E6C616273026E6C000006000100015180003D036E7364087369646E6C616273026E6C000A686F73746D6173746572087369646E6C616273026E6C0077FD526100000E1000000258001BAF8000000E10 +types-signed.wb.sidnlabs.nl. 86400 IN SOA nsd.sidnlabs.nl. hostmaster.sidnlabs.nl. 2013090401 3600 600 1814400 3600 +0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010001518000AF000608040001518052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00152E7FD817AC8F7BF4CCB4866EC4B3B4B2F8F3E79F160A55003BCB511CDDE430B5333DD6F71E72203BC39A626CF28FFD13C7F408A15F080B0FEDD0727E3493B0D5E9F371D20B8801DCE26004628572F09D063A86E2535E665BD7DB9D74CF95ADE08F40A7EE31AE975BEC6C7E9CB7F2B19528CE83D7653B675D142BFDF5089523 +types-signed.wb.sidnlabs.nl. 86400 IN RRSIG SOA 8 4 86400 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FS5/2Besj3v0zLSGbsSztLL48+efFgpVADvLURzd5DC1Mz3W9x5yIDvDmmJs8o/9E8f0CKFfCAsP7dByfjSTsNXp83HSC4gB3OJgBGKFcvCdBjqG4lNeZlvX2510z5Wt4I9Ap+4xrpdb7Gx+nLfysZUozoPXZTtnXRQr/fUIlSM= ;{id = 62298} +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C0011036E7364087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS nsd.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C0012046B6E6F74087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS knot.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C0012046E736434087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS nsd4.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C00130562696E6439087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS bind9.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C00140662696E643130087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS bind10.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00000200010000003C001608706F776572646E73087369646E6C616273026E6C00 +types-signed.wb.sidnlabs.nl. 60 IN NS powerdns.sidnlabs.nl. +0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000208040000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BA3DA6143757B97248F9A847256745AA90DE9CB8773F6B247B333DDF70BE16968B2DCD782611C84E32F90A80219DA24622E0C901CFCFA1C08B825F9F16C1204454AF2BFB2FAB32C29334C0FB5C34E03EC97682A3E0D1649147B9AF259D0E76943EFA786F6CA4E486A7E893179183636753F02045A91353F7A9CF0F30E16A5C3A +types-signed.wb.sidnlabs.nl. 60 IN RRSIG NS 8 4 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uj2mFDdXuXJI+ahHJWdFqpDenLh3P2skezM933C+FpaLLc14JhHITjL5CoAhnaJGIuDJAc/PocCLgl+fFsEgRFSvK/svqzLCkzTA+1w04D7JdoKj4NFkkUe5ryWdDnaUPvp4b2yk5Ian6JMXkYNjZ1PwIEWpE1P3qc8PMOFqXDo= ;{id = 62298} +0C74797065732D7369676E6564027762087369646E6C616273026E6C00003000010001518000880100030803010001D7B53C9C988E7476474466CC3BA260A461FE5764BF4CE754E6307E3B0764D2E0D1A84B23E52CBE08419A29A851219AF5DE8291DDDDA1D6C76315298C562C25F75EABEAA2998163AC6F1B500D810F6B8931A835FD01BB0D3529DE31DA574435DEBFFCDBD404974B23ACB201C42EF04A5AAED3275F633E555FB5F403C8B5BC39BD +types-signed.wb.sidnlabs.nl. 86400 IN DNSKEY 256 3 8 AwEAAde1PJyYjnR2R0RmzDuiYKRh/ldkv0znVOYwfjsHZNLg0ahLI+UsvghBmimoUSGa9d6Ckd3dodbHYxUpjFYsJfdeq+qimYFjrG8bUA2BD2uJMag1/QG7DTUp3jHaV0Q13r/829QEl0sjrLIBxC7wSlqu0ydfYz5VX7X0A8i1vDm9 ;{id = 62298 (zsk), size = 1024b} +0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010001518000AF003008040001518052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002814BF2CD8FF2B000AFFB428CDECAAFDD33DAE745905F01E244082EED758BCA1BBF77C8B7966A1D6E4B7C98BA51D35CDFA3C8F67B6A07DB8ABEEF4719D7739A3D36224ABA64F9FCA7B46414431A5496C80FC0A8C7E46E2C242D69D4038E3CC0D1DB0FEDDA73177E6A1B3B5D3CF5AA712F60B840F2091B5BB3DF54299A37AAAA4 +types-signed.wb.sidnlabs.nl. 86400 IN RRSIG DNSKEY 8 4 86400 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KBS/LNj/KwAK/7Qozeyq/dM9rnRZBfAeJECC7tdYvKG793yLeWah1uS3yYulHTXN+jyPZ7agfbir7vRxnXc5o9NiJKumT5/Ke0ZBRDGlSWyA/AqMfkbiwkLWnUA448wNHbD+3acxd+ahs7XTz1qnEvYLhA8gkbW7PfVCmaN6qqQ= ;{id = 62298} +0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002801610C74797065732D7369676E6564027762087369646E6C616273026E6C00000722000000000380 +types-signed.wb.sidnlabs.nl. 3600 IN NSEC a.types-signed.wb.sidnlabs.nl. NS SOA RRSIG NSEC DNSKEY +0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080400000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B55DC7CDE44F4A9D49BC6B969335B95A2450947D4C55C21D7453D3E8FD455C77F3287BC0EBF9040711F4A91ADAC6AC7EF928FB3D7ED2991EEA1E86B62145406305578B031FED59B5891F517AACA530339262708222B4E3FC7D6B90CDA885269B9F838D9A6BB199E1E09B82232876C8B8A3F2398D761DC34F5748FB77033A5E8D +types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tV3HzeRPSp1JvGuWkzW5WiRQlH1MVcIddFPT6P1FXHfzKHvA6/kEBxH0qRraxqx++Sj7PX7SmR7qHoa2IUVAYwVXiwMf7Vm1iR9ReqylMDOSYnCCIrTj/H1rkM2ohSabn4ONmmuxmeHgm4IjKHbIuKPyOY12HcNPV0j7dwM6Xo0= ;{id = 62298} +01610C74797065732D7369676E6564027762087369646E6C616273026E6C00000100010000003C0004D5881FDD +a.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +01610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C559E7582596EE34600A9B219D9596C536BBB28FB5B12953BD84827532166D7A7CF85745F3C34D0F6DC4BDEBF07F47018E22AF939873A300881E8E1DDB4D44B50700506B01B9ED52320E8383ABD7AEC07D5CEB7E780C1752C177762229B4307403E8C9E9BCF1B3E0CE64623B785A40C3F7829C8BCE30EBA742B4ECF2A354B74F +a.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xVnnWCWW7jRgCpshnZWWxTa7so+1sSlTvYSCdTIWbXp8+FdF88NND23Evevwf0cBjiKvk5hzowCIHo4d201EtQcAUGsBue1SMg6Dg6vXrsB9XOt+eAwXUsF3diIptDB0A+jJ6bzxs+DOZGI7eFpAw/eCnIvOMOunQrTs8qNUt08= ;{id = 62298} +01610C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029036130310C74797065732D7369676E6564027762087369646E6C616273026E6C000006400000000003 +a.types-signed.wb.sidnlabs.nl. 3600 IN NSEC a01.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +01610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C8C27D0F6DCEA8A3DE18BA84D864361DEBB92BD95ED53A087CEEDF43567095AEABC08BD78B1BC19BFB36DB49EB2060C4D142D10BD14BE84B21FD819E7B5D1E10E79B0A9683992C8247DF846B78F5099A492192D814312EF7CAE56AF152C7783D14FA459D08950C8F9EE859B86D4F60EC6CA2BD587BC327AEF69001D52B31C83C +a.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. yMJ9D23OqKPeGLqE2GQ2Heu5K9le1ToIfO7fQ1Zwla6rwIvXixvBm/s220nrIGDE0ULRC9FL6Esh/YGee10eEOebCpaDmSyCR9+Ea3j1CZpJIZLYFDEu98rlavFSx3g9FPpFnQiVDI+e6Fm4bU9g7GyivVh7wyeu9pAB1SsxyDw= ;{id = 62298} +036130310C74797065732D7369676E6564027762087369646E6C616273026E6C00000100010000003C000400000000 +a01.types-signed.wb.sidnlabs.nl. 60 IN A 0.0.0.0 +036130310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C6F62261D5B4390B7A5D7B7BBE0199CED496D21157069EC6C50CCE785F66A33BCD6C579F4EED97559309618C4E84DA3A1EF61B74F8A556CED90AFEF09734FAC7648E3FE787B7E6D9048A181B69DCF2C7BFBA1F4AD23C203E9E94E29808142FC46B0A7B98CCD947B6DC274BE56527B7BE393109D8680B76B4A5E1E688E2C5A45D +a01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xvYiYdW0OQt6XXt7vgGZztSW0hFXBp7GxQzOeF9mozvNbFefTu2XVZMJYYxOhNo6HvYbdPilVs7ZCv7wlzT6x2SOP+eHt+bZBIoYG2nc8se/uh9K0jwgPp6U4pgIFC/Eawp7mMzZR7bcJ0vlZSe3vjkxCdhoC3a0peHmiOLFpF0= ;{id = 62298} +036130310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029036130320C74797065732D7369676E6564027762087369646E6C616273026E6C000006400000000003 +a01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC a02.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +036130310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0073D833E8E9157EEB2F3B51BD1DF6FBE4EAC56AACFA433454843F8FCAA618977291BF8780BFDABBDF5D2CBCA5CA1D5941F852CD08632C32306506E782174998FE7A7DD9CF2EBF16EA384AC691FD6F5354800FF3C0EFD19D7A673FF7EABD6E67C749A5B4FF8787386867532D91E1A91CC42EEDF149B9FB3E96608A099168D004B6 +a01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. c9gz6OkVfusvO1G9Hfb75OrFaqz6QzRUhD+PyqYYl3KRv4eAv9q7310svKXKHVlB+FLNCGMsMjBlBueCF0mY/np92c8uvxbqOErGkf1vU1SAD/PA79Gdemc/9+q9bmfHSaW0/4eHOGhnUy2R4akcxC7t8Um5+z6WYIoJkWjQBLY= ;{id = 62298} +036130320C74797065732D7369676E6564027762087369646E6C616273026E6C00000100010000003C0004FFFFFFFF +a02.types-signed.wb.sidnlabs.nl. 60 IN A 255.255.255.255 +036130320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007AAA7FCC2E6373DCA978D0AC99CB7B0CD5C8C8A3C40D05B106DD06E3639650E9A6061DE55519E01BBD512FCDD51C56E8325C6C0140632916F0F640CA335BF0A31703B4E385D196D84E78FE0BA4C03C321E8805427C0EE4D64BC5B7096104355558C28E79594C77EAEBF2D42C18AB4D13D2091E64B854DCFE187EFD5B5CC78A49 +a02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eqp/zC5jc9ypeNCsmct7DNXIyKPEDQWxBt0G42OWUOmmBh3lVRngG71RL83VHFboMlxsAUBjKRbw9kDKM1vwoxcDtOOF0ZbYTnj+C6TAPDIeiAVCfA7k1kvFtwlhBDVVWMKOeVlMd+rr8tQsGKtNE9IJHmS4VNz+GH79W1zHikk= ;{id = 62298} +036130320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04616161610C74797065732D7369676E6564027762087369646E6C616273026E6C000006400000000003 +a02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC aaaa.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +036130320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C3E75FFA8967071E982D29C4FAC6B0AB3F7C7AC1FC3D34BAADE78F7E0EAD53DA94B7E2FEF46959F009E63899716FF8ACB0F71A0F856F069AC24312D2187D2327BEC8B0787CE4A64D798DCB15C97B39692CE7010F362E49682A838E6328B04E4BADBFFF412D9C4748185A5841B5C6E1BD022447338F235EEC0E54FE7E51542E8A +a02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. w+df+olnBx6YLSnE+sawqz98esH8PTS6reePfg6tU9qUt+L+9GlZ8AnmOJlxb/issPcaD4VvBprCQxLSGH0jJ77IsHh85KZNeY3LFcl7OWks5wEPNi5JaCqDjmMosE5Lrb//QS2cR0gYWlhBtcbhvQIkRzOPI17sDlT+flFULoo= ;{id = 62298} +04616161610C74797065732D7369676E6564027762087369646E6C616273026E6C00001C00010000003C0010200107B80C0500000000000000800004 +aaaa.types-signed.wb.sidnlabs.nl. 60 IN AAAA 2001:7b8:c05::80:4 +04616161610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001C08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0034217882ADA06FCD8AE71C661AA484E237A8DED0B284F9042B7850988669B861CB691915E5758A10D2A5E84C61354CB659401832A6BA16D2F97F6B44CA629E6261CBC0100F489A4395C5E21E678CC98F6D419885869838F30B546E0CAF6C082ABDB354EA47FC614FD86904A832EFC70CF8ED3086C863D2FE0A9A610F8F418325 +aaaa.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AAAA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. NCF4gq2gb82K5xxmGqSE4jeo3tCyhPkEK3hQmIZpuGHLaRkV5XWKENKl6ExhNUy2WUAYMqa6FtL5f2tEymKeYmHLwBAPSJpDlcXiHmeMyY9tQZiFhpg48wtUbgyvbAgqvbNU6kf8YU/YaQSoMu/HDPjtMIbIY9L+CpphD49BgyU= ;{id = 62298} +04616161610C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0561667364620C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000080003 +aaaa.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb.types-signed.wb.sidnlabs.nl. AAAA RRSIG NSEC +04616161610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008113642B479C1F6FD36D0AF2C8A3AFB2ED509CA4F87078117147D961AD14F95E79DF68200F097D431B723CA2BB05BB803D2B9C2E77122AFFE1F96CBEC061D54D99177604847B541E1006C54E8F8706E593BEF28891DF0A4E7C05453D9E7EE4ED0BEAFA57F363C1BE78673564471C6FA3A482B2728A80CBC7CE33AC1B3C036EDE +aaaa.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gRNkK0ecH2/TbQryyKOvsu1QnKT4cHgRcUfZYa0U+V5532ggDwl9QxtyPKK7BbuAPSucLncSKv/h+Wy+wGHVTZkXdgSEe1QeEAbFTo+HBuWTvvKIkd8KTnwFRT2efuTtC+r6V/Njwb54ZzVkRxxvo6SCsnKKgMvHzjOsGzwDbt4= ;{id = 62298} +0561667364620C74797065732D7369676E6564027762087369646E6C616273026E6C00001200010000003C00273039076166736E6F64650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +afsdb.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 12345 afsnode.types-signed.wb.sidnlabs.nl. +0561667364620C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001208050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D337260602C05D7D8E689FB7F20E09379A03C2C5E5A1541C3F7307B125C08BC99651CDA9618C65E7C2053DA361AA6F50EAB4A79E0DBB570171070DA53F54B21A6B2088CB606D757ACF4B8C3FD4D2E3708C8901C5B76EDC3272FD9E433C049053A2B2878921C3E028EC007F358B456973132D4A33B5FEBA21CC2CA9E404EAC452 +afsdb.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0zcmBgLAXX2OaJ+38g4JN5oDwsXloVQcP3MHsSXAi8mWUc2pYYxl58IFPaNhqm9Q6rSnng27VwFxBw2lP1SyGmsgiMtgbXV6z0uMP9TS43CMiQHFt27cMnL9nkM8BJBTorKHiSHD4CjsAH81i0VpcxMtSjO1/rohzCyp5ATqxFI= ;{id = 62298} +0561667364620C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07616673646230310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000020000003 +afsdb.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb01.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +0561667364620C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0039F04E019CDF47A6E9435D0B50DFED2BCC651A742FB3BB023E51389D768BCDE97C11D38BC83623EA869ECFE73C4F12252FFDD746C33DC26914B942749F0BB99A5B8FC31F96D30479AFC045E29C76DA4E5810FF8561BB73FC75E4AC25025451B7467E21B0B5F4489E05A91BECB33C5A9F358B0C61381E199AE10A4D815865CF49 +afsdb.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OfBOAZzfR6bpQ10LUN/tK8xlGnQvs7sCPlE4nXaLzel8EdOLyDYj6oaez+c8TxIlL/3XRsM9wmkUuUJ0nwu5mluPwx+W0wR5r8BF4px22k5YEP+FYbtz/HXkrCUCVFG3Rn4hsLX0SJ4FqRvsszxanzWLDGE4Hhma4QpNgVhlz0k= ;{id = 62298} +07616673646230310C74797065732D7369676E6564027762087369646E6C616273026E6C00001200010000003C0028000008686F73746E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +afsdb01.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 0 hostname.types-signed.wb.sidnlabs.nl. +07616673646230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001208050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00433236F737B6C742F95134A430A07D8B51F1286CF64B11CC47F2E57FD541BB93DC7DD3F0EBFEDBE37CD22EBA7D0D908BD960534BFF5A3D65FD3FF435EC998353CD751BE31DCB5A248D5CA84F4E0514A4551447A653A4F9084C9C688293CD5A9005D33EBFCEDB927C81F9EBA09B7A07D00F2B58E5AD67F9A0E4CBEF050C259C28 +afsdb01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. QzI29ze2x0L5UTSkMKB9i1HxKGz2SxHMR/Llf9VBu5PcfdPw6/7b43zSLrp9DZCL2WBTS/9aPWX9P/Q17JmDU811G+Mdy1okjVyoT04FFKRVFEemU6T5CEycaIKTzVqQBdM+v87bknyB+eugm3oH0A8rWOWtZ/mg5MvvBQwlnCg= ;{id = 62298} +07616673646230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07616673646230320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000020000003 +afsdb01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC afsdb02.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +07616673646230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001CEF6BE6C935642319DEFB9903EF8F0FE1F9647263184F18A003E6459EF0C8DECE0DC09E731FCC5351F10CB28B0C986993D6204034A6DF2C5C8200D2CFFD77A1B8ECC886659F308142B3034AF534CA4AB3DB59AC7C99187BF900E6F76CF9F30748F941F4C19811A274D5FE44CE44A617EF43F357B8B952E535353785F6266BF4 +afsdb01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HO9r5sk1ZCMZ3vuZA++PD+H5ZHJjGE8YoAPmRZ7wyN7ODcCecx/MU1HxDLKLDJhpk9YgQDSm3yxcggDSz/13objsyIZlnzCBQrMDSvU0ykqz21msfJkYe/kA5vds+fMHSPlB9MGYEaJ01f5EzkSmF+9D81e4uVLlNTU3hfYma/Q= ;{id = 62298} +07616673646230320C74797065732D7369676E6564027762087369646E6C616273026E6C00001200010000003C0003FFFF00 +afsdb02.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 65535 . +07616673646230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001208050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00591C251983C795E59A14EAC58971CD36D965B01AD46AFD4D87CE0A0FB741C6915082CC02A9FAB523D3302C426333A3B9C7890981326CF00A28974B056CE63B22188BC1CAC02864133DA2969E3F6E006BB2A721C3880CCA99B9B0619120AFF0428105A8AC7095CA7C1B99CB51E0B9D8B816FF9A92AD9517E4422D366D330F6613 +afsdb02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. WRwlGYPHleWaFOrFiXHNNtllsBrUav1Nh84KD7dBxpFQgswCqfq1I9MwLEJjM6O5x4kJgTJs8Aool0sFbOY7IhiLwcrAKGQTPaKWnj9uAGuypyHDiAzKmbmwYZEgr/BCgQWorHCVynwbmctR4LnYuBb/mpKtlRfkQi02bTMPZhM= ;{id = 62298} +07616673646230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029036364730C74797065732D7369676E6564027762087369646E6C616273026E6C000006000020000003 +afsdb02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cds.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +07616673646230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00786146DC4D929A6DB5EA3DC641C39B1DD80CDAFC32B271DD0D295C90DE49C4A310F4F9E6865DC058DDCB470A6056974E6C660B8A725A4646FF7DE59496069E98921E153699CDDDD95F9406FDE81E68EA22E10D290FBBB075E796A5C6DEA65B46AF7683E2A83B5A405403106C78A9C04BD8EBBDB0B7885EF3D17CDF376AC24865 +afsdb02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eGFG3E2Smm216j3GQcObHdgM2vwysnHdDSlckN5JxKMQ9Pnmhl3AWN3LRwpgVpdObGYLinJaRkb/feWUlgaemJIeFTaZzd3ZX5QG/egeaOoi4Q0pD7uwdeeWpcbepltGr3aD4qg7WkBUAxBseKnAS9jrvbC3iF7z0XzfN2rCSGU= ;{id = 62298} +036364730C74797065732D7369676E6564027762087369646E6C616273026E6C00003B00010000003C0024FCB2080286632F83494B1D7037E72949FD6CD8689C5DAAF4DF1E5D7E6EF3BA28ECE1E3C8 +cds.types-signed.wb.sidnlabs.nl. 60 IN CDS 64690 8 2 86632F83494B1D7037E72949FD6CD8689C5DAAF4DF1E5D7E6EF3BA28ECE1E3C8 +036364730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007BAC8D49E16C3744DE3C9EF198C05480F5238C4962012D61912CE532C41509C770A89F55624352BD7F31D772D4CF76D4E02041D658904ED3F4F3A85BA34F372444D336BC8CD7FBEE808B5D371571B4B4C1419E4723091939D3475279C031C5BADB9DD224927755309AE05A1893653A63A9F21CE5249A721AC6415BEE683099A8 +cds.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CDS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. e6yNSeFsN0TePJ7xmMBUgPUjjEliAS1hkSzlMsQVCcdwqJ9VYkNSvX8x13LUz3bU4CBB1liQTtP086hbo083JETTNryM1/vugItdNxVxtLTBQZ5HIwkZOdNHUnnAMcW6253SJJJ3VTCa4FoYk2U6Y6nyHOUkmnIaxkFb7mgwmag= ;{id = 62298} +036364730C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C04636572740C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030010 +cds.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cert.types-signed.wb.sidnlabs.nl. RRSIG NSEC CDS +036364730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0039771AE91719DEF01A03D67B508F84D1C51D98A99CADDA4D0A125A54F5195AA2ACFDC37586F081E0FD0C7EC316B0EE6AE159483A0C877D252C233D4718578D0DE2BD8E776363152D13B1EF4473EB97E3E082B5639082D01DF02CD27D7CEF4EDB297A6D2A1B42148465CDE9C445D3FECFCDD2935E40A0D05E8CA520BE51623A21 +cds.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OXca6RcZ3vAaA9Z7UI+E0cUdmKmcrdpNChJaVPUZWqKs/cN1hvCB4P0MfsMWsO5q4VlIOgyHfSUsIz1HGFeNDeK9jndjYxUtE7HvRHPrl+PggrVjkILQHfAs0n18707bKXptKhtCFIRlzenERdP+z83Sk15AoNBejKUgvlFiOiE= ;{id = 62298} +04636572740C74797065732D7369676E6564027762087369646E6C616273026E6C00002500010000003C0055FFFEFFFFFE33115C6F2F64FF2BDE74C7D080ACE11F97ABD0CBBFBC82F3E39224B2471E1468225829FF1B11E16A2E9502E1C0A0D533E18A14D6D55F4824AA4189FAFFFD7553A36577CD2311E0BC693ACEF8A2A609A6 +cert.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +04636572740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00274412A0D2BF0FB8C5C6BA44A485ED6C15FC1AF76F58F0541F6D07D76A26E0A6A2E4D51E242BFC30DF1E847B32F540998E0D3E4BE0729D106CBF06A326239332BD42EE92ACD3BEC9BBF5E331AD2E9A8625B436C1C76E90DFAAF09CD3793BDCDBFDDC970F1064B0AFEDC19562359AD10AAF742FE7049305C332D8E2A9703C65A8 +cert.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. J0QSoNK/D7jFxrpEpIXtbBX8GvdvWPBUH20H12om4Kai5NUeJCv8MN8ehHsy9UCZjg0+S+BynRBsvwajJiOTMr1C7pKs077Ju/XjMa0umoYltDbBx26Q36rwnNN5O9zb/dyXDxBksK/twZViNZrRCq90L+cEkwXDMtjiqXA8Zag= ;{id = 62298} +04636572740C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066365727430310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000403 +cert.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cert01.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +04636572740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0063ED2B1B822B5B9A6CCB0F4ED01D8F159FC2146A67AFE335F5D50FF7E7A5E816E38D8A6483217F9F8B7948D601611CBB52A830FEA1082063889B0949CB13D7D7D0EF9790A2E13F118DB1647184166FB0C63CB7D26837ABA6C7782F30CC01CD5AAA17871574A7458158DF179390B1AB6673AAFF013FF3DA15FD9BE76121A21383 +cert.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Y+0rG4IrW5psyw9O0B2PFZ/CFGpnr+M19dUP9+el6BbjjYpkgyF/n4t5SNYBYRy7Uqgw/qEIIGOImwlJyxPX19Dvl5Ci4T8RjbFkcYQWb7DGPLfSaDerpsd4LzDMAc1aqheHFXSnRYFY3xeTkLGrZnOq/wE/89oV/ZvnYSGiE4M= ;{id = 62298} +066365727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002500010000003C0055FFFEFFFFFE33115C6F2F64FF2BDE74C7D080ACE11F97ABD0CBBFBC82F3E39224B2471E1468225829FF1B11E16A2E9502E1C0A0D533E18A14D6D55F4824AA4189FAFFFD7553A36577CD2311E0BC693ACEF8A2A609A6 +cert01.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +066365727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009A90B71BB343F532B68023474EB75EE1B34DCCFFE3462F944B043310C50E2A8FAB0223800095F3FF73B11850632C420FC20E5DF03CD985FD44715EBA1EA347C5A5B5824E8D43009B75382F800794309DC6CCDC839EB9A9692DC222A5113CEA3FD53D8CA02F83BE842EC4EE4CE44B900EC878533EB5EC7CD4139338EFA4DAA917 +cert01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. mpC3G7ND9TK2gCNHTrde4bNNzP/jRi+USwQzEMUOKo+rAiOAAJXz/3OxGFBjLEIPwg5d8DzZhf1EcV66HqNHxaW1gk6NQwCbdTgvgAeUMJ3GzNyDnrmpaS3CIqURPOo/1T2MoC+DvoQuxO5M5EuQDsh4Uz617HzUE5M476TaqRc= ;{id = 62298} +066365727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B05636E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000403 +cert01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +066365727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009D36804E7EF0B73782B4E5693CC1F9D2013E0B7D8CED83CB6D72193DDF53685556376D64FF21357FFFFF066746877E21C2D78BB974E0838ED9D2BC47A2DBD8BCECBB224CAA3D0D77FD160391FD56FFF69345A0946D5A5FC8D219ED98EAE436310B888AC8CCD8274691327F8A323307199BAF759B070A9D7D41D32F855FD1B07A +cert01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nTaATn7wtzeCtOVpPMH50gE+C32M7YPLbXIZPd9TaFVWN21k/yE1f///BmdGh34hwteLuXTgg47Z0rxHotvYvOy7IkyqPQ13/RYDkf1W//aTRaCUbVpfyNIZ7Zjq5DYxC4iKyMzYJ0aRMn+KMjMHGZuvdZsHCp19QdMvhV/RsHo= ;{id = 62298} +05636E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00000500010000003C0021037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00 +cname.types-signed.wb.sidnlabs.nl. 60 IN CNAME www.types-signed.wb.sidnlabs.nl. +05636E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008AE9608C314758EA41D919D530502EDCDC740104346EAD005E750E40599ADF142DD996575285E32DE6C3650484E9AE9A7C21BD217820E4E91AE90CE9D4DFE27519EC288363A498BA22A740388A95C611B463D5FE0D2D076D1F308A2916AC156E05B93A019B07F7C49E3D8874BBA221A076F7299A8572C81BDFB3E4A6F158836B +cname.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iulgjDFHWOpB2RnVMFAu3Nx0AQQ0bq0AXnUOQFma3xQt2ZZXUoXjLebDZQSE6a6afCG9IXgg5Oka6Qzp1N/idRnsKINjpJi6IqdAOIqVxhG0Y9X+DS0HbR8wiikWrBVuBbk6AZsH98SePYh0u6IhoHb3KZqFcsgb37PkpvFYg2s= ;{id = 62298} +05636E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07636E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C000006040000000003 +cname.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname01.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +05636E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005658F2FBA621CCD401CFE1E9F2FF81DFE1B543791CFDAB2BC609DCAD6609D37D62C7B7799F9CB38E26F914C0C24421B13B0DFD3D1701B2E9924B3826AFD12941EC1F3C7403D19238F064EA85CC6ED8DBBA5AA14DDCE2E384695E1029F9E96C0AF69534B20440F82A681AE3E573384DBDC0144419728F3752D3CF6C340350568A +cname.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Vljy+6YhzNQBz+Hp8v+B3+G1Q3kc/asrxgncrWYJ031ix7d5n5yzjib5FMDCRCGxOw39PRcBsumSSzgmr9EpQewfPHQD0ZI48GTqhcxu2Nu6WqFN3OLjhGleECn56WwK9pU0sgRA+CpoGuPlczhNvcAURBlyjzdS089sNANQVoo= ;{id = 62298} +07636E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00000500010000003C000E0C636E616D652D74617267657400 +cname01.types-signed.wb.sidnlabs.nl. 60 IN CNAME cname-target. +07636E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000470C42BCFA53A94827D24D23A539AF9CFFA51FB08F757D3BCF1A39A04D58B11D1242C01467F67E21C11B1C73D3856CE69AFC348DE69449F5382036CB0FD8ED58CFA4FC3DC9199EF9001314F5D2E7B122E858E65231FFE251008C24474AFF70E6DBF5B87A41D41F878FBFF628E7B6950CEDBDB9F4BE33D2791CD96430FE6C53C +cname01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BHDEK8+lOpSCfSTSOlOa+c/6UfsI91fTvPGjmgTVixHRJCwBRn9n4hwRscc9OFbOaa/DSN5pRJ9TggNssP2O1Yz6T8PckZnvkAExT10uexIuhY5lIx/+JRAIwkR0r/cObb9bh6QdQfh4+/9ijntpUM7b259L4z0nkc2WQw/mxTw= ;{id = 62298} +07636E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07636E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C000006040000000003 +cname01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC cname02.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +07636E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BAF6DF2E189412F35463EDC7A1A40D39E381DDD08FE7B4C79FB1EE53D7EBE9F54639691FD350204E2833A64E97FD1C81D0B2AD8BC862577567E098A673196364438EC5438AC0E5F5AB12246EB6C4E0312F8969B668EEA39AC9140FD26701F209CD40F17859AF6660C9BEB72EA55301BAC451C7E6C3D76A97B8DBFBEDE10D9464 +cname01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uvbfLhiUEvNUY+3HoaQNOeOB3dCP57THn7HuU9fr6fVGOWkf01AgTigzpk6X/RyB0LKti8hiV3Vn4JimcxljZEOOxUOKwOX1qxIkbrbE4DEviWm2aO6jmskUD9JnAfIJzUDxeFmvZmDJvrcupVMBusRRx+bD12qXuNv77eENlGQ= ;{id = 62298} +07636E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00000500010000003C002A0C636E616D652D7461726765740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +cname02.types-signed.wb.sidnlabs.nl. 60 IN CNAME cname-target.types-signed.wb.sidnlabs.nl. +07636E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007C8DD5D5B4ED0919954C63A3B846C5E2E7B8BECC49CD3A4BBE834375A3EDAECAAE491EA911401069496506772D003F5036A6A2A1C0646EF23E62A9967BE00B9168E30764430E669C1E7F74EEC347530A438BAE1A92A1D23D8A4F5FB2812E61578ACF1295580CB6BB1FA9300F1158706E6DC79896C851485DF3182B6254D057F4 +cname02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fI3V1bTtCRmVTGOjuEbF4ue4vsxJzTpLvoNDdaPtrsquSR6pEUAQaUllBnctAD9QNqaiocBkbvI+YqmWe+ALkWjjB2RDDmacHn907sNHUwpDi64akqHSPYpPX7KBLmFXis8SlVgMtrsfqTAPEVhwbm3HmJbIUUhd8xgrYlTQV/Q= ;{id = 62298} +07636E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0564686369640C74797065732D7369676E6564027762087369646E6C616273026E6C000006040000000003 +cname02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dhcid.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +07636E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003078A2199EFFDF1D3CD0742242B5705AF53C671DCEC8D2EDC58260AF5D1065E43C3C302AEEE89336E3FC777C59F92C37BC6FD1296CCA07531D7FF7320AEA114BDEF1B69A51CA71B728E4A4DC74D8FC53E7E6A49EF4D35B538C99BC35FBCABFAD7473B11017B9B2ED612AAFADDFB1887F603306E805D84AD197A53106B5EA504B +cname02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MHiiGZ7/3x080HQiQrVwWvU8Zx3OyNLtxYJgr10QZeQ8PDAq7uiTNuP8d3xZ+Sw3vG/RKWzKB1Mdf/cyCuoRS97xtppRynG3KOSk3HTY/FPn5qSe9NNbU4yZvDX7yr+tdHOxEBe5su1hKq+t37GIf2AzBugF2ErRl6UxBrXqUEs= ;{id = 62298} +0564686369640C74797065732D7369676E6564027762087369646E6C616273026E6C00003100010000003C0023000201636FC0B8271C82825BB1AC5C41CF5351AA69B4FEBD94E8F17CDB95000DA48C40 +dhcid.types-signed.wb.sidnlabs.nl. 60 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA= +0564686369640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AF9284ECFB7B5961918033A1F3CB50529E4E7B3BEAAC81F552DE0BF337322FC9FE5E27CECBDB699ED9272A34ED66C64C9F38670A3C18C007E93A3134583D7327E7CB4CDBBECB7DB8BB5BA0B19495A65FD76F50606D47BA335FF6DBAD7612A19C193C1EBADF7C1E5247CFA9620255A6A35C806247B4BA32F573A4C19D74349DB5 +dhcid.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DHCID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. r5KE7Pt7WWGRgDOh88tQUp5OezvqrIH1Ut4L8zcyL8n+XifOy9tpntknKjTtZsZMnzhnCjwYwAfpOjE0WD1zJ+fLTNu+y324u1ugsZSVpl/Xb1BgbUe6M1/22612EqGcGTweut98HlJHz6liAlWmo1yAYke0ujL1c6TBnXQ0nbU= ;{id = 62298} +0564686369640C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C05646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00000700000000000340 +dhcid.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname.types-signed.wb.sidnlabs.nl. RRSIG NSEC DHCID +0564686369640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004763CE81F01C48BB8DA3C045BB4B55221922D910F342EFB96DFC1BBDC54BA65B0A45F7EBF81CB6E339BA2583310733B6DACD7D36926F5938BA78EFE0AC8DAF897A46BC62494FE71BD60D160C01664298E1D3788D5619CEB29FC38A6D9D83128F992E1B7F84EF3009D95C43E0E297F3B9336C59FADF6F7A6B7A8CFB800833EDC6 +dhcid.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R2POgfAcSLuNo8BFu0tVIhki2RDzQu+5bfwbvcVLplsKRffr+By24zm6JYMxBzO22s19NpJvWTi6eO/grI2viXpGvGJJT+cb1g0WDAFmQpjh03iNVhnOsp/Dim2dgxKPmS4bf4TvMAnZXEPg4pfzuTNsWfrfb3preoz7gAgz7cY= ;{id = 62298} +05646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002700010000003C000E0C646E616D652D74617267657400 +dname.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +05646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0038F1778C6B7DCE675FED229C5B6C890FE953F13D09559065DBDB50CAF241C1B8B8E04C5963F40187561B39F2663C96EAFC6E6F13A48A04CD3B925F0EBA780A0BBA54E49B08E28B31E436DA7418A793484315D884AAC47D93806775C6E03158C6DC323796947976D77047FC7B1937BB25CE46135DA63FD6DA035402EEE0401D6E +dname.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OPF3jGt9zmdf7SKcW2yJD+lT8T0JVZBl29tQyvJBwbi44ExZY/QBh1YbOfJmPJbq/G5vE6SKBM07kl8OungKC7pU5JsI4osx5DbadBink0hDFdiEqsR9k4BndcbgMVjG3DI3lpR5dtdwR/x7GTe7Jc5GE12mP9baA1QC7uBAHW4= ;{id = 62298} +05646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07646E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000103 +dname.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname01.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +05646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0047E0AFF4CD48696E8ED970FB858809E391C618FA2835CC04F8AD436BB56EBF0030C96C8AD08A770789DFCDDACED85F4F179D6E3DE6CAAF33C0E355FAD80C630B5663DDCFCFCD242A3B02CE36691D2C1CCA69C4F482557ACB3B89701E5747A5C801397E037BE0189CE3D6685C17AC235791756C4F2FE1BE32B2AF650C2CBF702F +dname.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R+Cv9M1IaW6O2XD7hYgJ45HGGPooNcwE+K1Da7VuvwAwyWyK0Ip3B4nfzdrO2F9PF51uPebKrzPA41X62AxjC1Zj3c/PzSQqOwLONmkdLBzKacT0glV6yzuJcB5XR6XIATl+A3vgGJzj1mhcF6wjV5F1bE8v4b4ysq9lDCy/cC8= ;{id = 62298} +07646E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002700010000003C000E0C646E616D652D74617267657400 +dname01.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +07646E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001E15DA2D587694300FC44E9727FBAA506BE92B7BF2A0FA18D9BB292022A3949368B1EA4C6C1B3DE463E69E85D8DFCECBFE8DB481117B96BB3DE397A7000B83F475720538D49EE220053D9420AA4EABCA7BF662E361812095298344CE61E3CF7A3D3B5104ADDA18A722FC63F20F8B43893CEE04C5C1858048EE33E4D3DBF8FAED +dname01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HhXaLVh2lDAPxE6XJ/uqUGvpK3vyoPoY2bspICKjlJNosepMbBs95GPmnoXY387L/o20gRF7lrs945enAAuD9HVyBTjUnuIgBT2UIKpOq8p79mLjYYEglSmDRM5h4896PTtRBK3aGKci/GPyD4tDiTzuBMXBhYBI7jPk09v4+u0= ;{id = 62298} +07646E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07646E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000103 +dname01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname02.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +07646E616D6530310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D11822FC8451D9B21AB0F18AFDC337AF1CDFF458B135DBF973B033B58024599BAC20F8E7335F3091EDC5C087E9302BE61EE9978AFE93AAF6D589430932787B99A03F9B36D138A5C7538D5BACF676CBECA9338E828461391FB23B9A5762260F9475B9C8BCC8F00A6679870AF7F3296B772824F81BC809264E29F26EB66266F3F7 +dname01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0Rgi/IRR2bIasPGK/cM3rxzf9FixNdv5c7AztYAkWZusIPjnM18wke3FwIfpMCvmHumXiv6TqvbViUMJMnh7maA/mzbROKXHU41brPZ2y+ypM46ChGE5H7I7mldiJg+UdbnIvMjwCmZ5hwr38ylrdygk+BvICSZOKfJutmJm8/c= ;{id = 62298} +07646E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002700010000003C002A0C646E616D652D7461726765740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +dname02.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target.types-signed.wb.sidnlabs.nl. +07646E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0087B08F9E21FEC45DF46655AA9AD37E2DF51CA8C99AE6FA77EB756D022201578A8B86C2A6F128E270118CCEF1CD4D2A97B9E7C3CD96CAB7C409AF80A136E22502456ACCB4AAE85D9F2EAFF5E369D2F19CF69B9BB3632EE3EEA9B7F65699E7988891833CECD3B6B7C33251636E9337C30F9BC9A4F3FC6242198B6F1A659A38885F +dname02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. h7CPniH+xF30ZlWqmtN+LfUcqMma5vp363VtAiIBV4qLhsKm8SjicBGMzvHNTSqXuefDzZbKt8QJr4ChNuIlAkVqzLSq6F2fLq/142nS8Zz2m5uzYy7j7qm39laZ55iIkYM87NO2t8MyUWNukzfDD5vJpPP8YkIZi28aZZo4iF8= ;{id = 62298} +07646E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07646E616D6530330C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000103 +dname02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC dname03.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +07646E616D6530320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005B45FA364152AB4E3499F9F0AA822F30FFE11A0779CD7955258840337DE095D7B9213D975EE25827BA96D76ED7AD53358E104C5AC4C4937A5D25E8EAD4ED85CEF3155488513C83A886896256F36AE065C1C4BA4994DF9A42886A7D38BC840EF5F29A8E24575FF1F02C7D35BB4C24E17394F0C820764877F4FFB800FDB33D2415 +dname02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. W0X6NkFSq040mfnwqoIvMP/hGgd5zXlVJYhAM33glde5IT2XXuJYJ7qW127XrVM1jhBMWsTEk3pdJejq1O2FzvMVVIhRPIOoholiVvNq4GXBxLpJlN+aQohqfTi8hA718pqOJFdf8fAsfTW7TCThc5TwyCB2SHf0/7gA/bM9JBU= ;{id = 62298} +07646E616D6530330C74797065732D7369676E6564027762087369646E6C616273026E6C00002700010000003C000100 +dname03.types-signed.wb.sidnlabs.nl. 60 IN DNAME . +07646E616D6530330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AB4E94D6E677558C008FAD101942510332C1DB2144A99C0352A3D46671F2B1BB3397B4B918392DE1A023B0BD5F5A9BD7A70A463EA904BF4CB15FFC2E7B60317D1551137C8EF9386C9FB4C88A702852B3E69C582833165C2A8C369B7583A29B402F7614F8E4800C4DA90AE62559E13E12892C075F7773834D30FE8612C9D61F8E +dname03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. q06U1uZ3VYwAj60QGUJRAzLB2yFEqZwDUqPUZnHysbszl7S5GDkt4aAjsL1fWpvXpwpGPqkEv0yxX/wue2AxfRVRE3yO+Thsn7TIinAoUrPmnFgoMxZcKow2m3WDoptAL3YU+OSADE2pCuYlWeE+EoksB193c4NNMP6GEsnWH44= ;{id = 62298} +07646E616D6530330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A0467706F730C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000103 +dname03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC gpos.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +07646E616D6530330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00CFCE6808CE405CC73016F9685E75C161BEAA5869D2A6C9B584F4C22BD0CFE199C44F2F8C68BC7CEEF64DAEA444A78C9BB78271C487CD3A76885F757E5D98CEC0B35D173FE21040453AA59C34A6155199A9E1D8FACC67A36646021298D2F9CAEE31E2E022AB152BF32981795D796FC5532F017A091FD7928996BA1E5EF2E665DC +dname03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. z85oCM5AXMcwFvloXnXBYb6qWGnSpsm1hPTCK9DP4ZnETy+MaLx87vZNrqREp4ybt4JxxIfNOnaIX3V+XZjOwLNdFz/iEEBFOqWcNKYVUZmp4dj6zGejZkYCEpjS+cruMeLgIqsVK/MpgXldeW/FUy8Begkf15KJlroeXvLmZdw= ;{id = 62298} +0467706F730C74797065732D7369676E6564027762087369646E6C616273026E6C00001B00010000003C00120532332E36370532332E36370532332E3637 +gpos.types-signed.wb.sidnlabs.nl. 60 IN GPOS "23.67" "23.67" "23.67" +0467706F730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0049CBABEED1B9089695C552489294378669AE1B934A81076F364E3D3E68F239E34AC106D4554F009A39A7813B1C8E02076B0A0737DACE4CCC7BF3CD20F4DFF9C19934DAAD81F23FB743C89CA941387CFC6B1506525634206D4918FA9CBE9707A88B25B0F6FF10E295551E4643488EA87FE7E051BD9E6D8AEF42F01574BB56BEE4 +gpos.types-signed.wb.sidnlabs.nl. 60 IN RRSIG GPOS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Scur7tG5CJaVxVJIkpQ3hmmuG5NKgQdvNk49PmjyOeNKwQbUVU8AmjmngTscjgIHawoHN9rOTMx7880g9N/5wZk02q2B8j+3Q8icqUE4fPxrFQZSVjQgbUkY+py+lweoiyWw9v8Q4pVVHkZDSI6of+fgUb2ebYrvQvAVdLtWvuQ= ;{id = 62298} +0467706F730C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0568696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000100003 +gpos.types-signed.wb.sidnlabs.nl. 3600 IN NSEC hinfo.types-signed.wb.sidnlabs.nl. GPOS RRSIG NSEC +0467706F730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0037B66B1841B1F155AEE2BC14425FCC166A5BD822825927726096E57EAC9CAF410366B7FC3B73F16B52D0EA402C804AED7AFB00F89BF98AAA56758C95AB4BC660AB759973D5503FDC48DCBBD7C00235DFBCDBCCCFA23D09425142B7E3143028500FEA485F969401E8B85F44E8A5C6DCEB2368685F1F4A0B699E89273B945039CD +gpos.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. N7ZrGEGx8VWu4rwUQl/MFmpb2CKCWSdyYJblfqycr0EDZrf8O3Pxa1LQ6kAsgErtevsA+Jv5iqpWdYyVq0vGYKt1mXPVUD/cSNy718ACNd+828zPoj0JQlFCt+MUMChQD+pIX5aUAei4X0Topcbc6yNoaF8fSgtpnoknO5RQOc0= ;{id = 62298} +0568696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00010000003C00161047656E6572696320504320636C6F6E65044D794F53 +hinfo.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "MyOS" +0568696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B387E7452441A650E4C290CBBD2CB905CB2AC88DF818F032CDCE6817C2262442BD3459C25D4BD7A033AE070D8ABBB2D384894AFAA7618CA9BCCAD44D6C4E2253DC9C9ECE2DA1335890792283893DFE4DD93838117D90685DBB58AC14B421D74FA73AC24967691964A4356491961BB904F43C3A9134A5FBB9D803DD607081CADF +hinfo.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. s4fnRSRBplDkwpDLvSy5BcsqyI34GPAyzc5oF8ImJEK9NFnCXUvXoDOuBw2Ku7LThIlK+qdhjKm8ytRNbE4iU9ycns4toTNYkHkig4k9/k3ZODgRfZBoXbtYrBS0IddPpzrCSWdpGWSkNWSRlhu5BPQ8OpE0pfu52APdYHCByt8= ;{id = 62298} +0568696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D0768696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000400000003 +hinfo.types-signed.wb.sidnlabs.nl. 3600 IN NSEC hinfo01.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +0568696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BC780429579844A4A5C119FE4E12494D2FF7ED0C651956CFBA5DAADAD46E0AB6700BC091AFB526459C38CCF5E37EBB21A7F087FA9F674D75A49A7D38BF4BABEF47BA799B8777E8A88CB998A0F24A9E1140FD1CE8D8C3EEFE9DBDB9823A337E6CB564DE3C06546A8648BC3FFBA3ECB7EA04ACA584404573B8BD9750C7ECDD7DF5 +hinfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vHgEKVeYRKSlwRn+ThJJTS/37QxlGVbPul2q2tRuCrZwC8CRr7UmRZw4zPXjfrshp/CH+p9nTXWkmn04v0ur70e6eZuHd+iojLmYoPJKnhFA/Rzo2MPu/p29uYI6M35stWTePAZUaoZIvD/7o+y36gSspYRARXO4vZdQx+zdffU= ;{id = 62298} +0768696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00010000003C001C1047656E6572696320504320636C6F6E650A4E65744253442D312E34 +hinfo01.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "NetBSD-1.4" +0768696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002D194761A6316BE8ED94EE13A8FF3951E077A8B2C75A5F93209AF81181502440612BF46C821EB3FB45BA40E2FC33056A56026BAFA6DC388D7FC996073285944B56E3CC219AD640CFE76F5301F25BDE4050A01C541D2F8B82EC3B54B579196587A3FD123CE1636915DD28DF84EEED0A6165C1C86ABA2C9D0B7B4DA7972BAAE97A +hinfo01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LRlHYaYxa+jtlO4TqP85UeB3qLLHWl+TIJr4EYFQJEBhK/Rsgh6z+0W6QOL8MwVqVgJrr6bcOI1/yZYHMoWUS1bjzCGa1kDP529TAfJb3kBQoBxUHS+Lguw7VLV5GWWHo/0SPOFjaRXdKN+E7u0KYWXByGq6LJ0Le02nlyuq6Xo= ;{id = 62298} +0768696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D0768696E666F30320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000400000003 +hinfo01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC hinfo02.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +0768696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C5269C3EDCA14B8ED88CEB569B5265766945E18FEB15B241C0694399A8E54874B3CA648172BDB232BDD88A214322D77804CFC03638982B1D279004DB16F37F57DB6848E12EBB0C32BC140DE2141993650643718E59D848ABBA043C82AF371C4D6CD4F4B612149C6B7DACDEAEF0A441FB691624759FD2CA12F33778A2A1F24634 +hinfo01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. xSacPtyhS47YjOtWm1JldmlF4Y/rFbJBwGlDmajlSHSzymSBcr2yMr3YiiFDItd4BM/ANjiYKx0nkATbFvN/V9toSOEuuwwyvBQN4hQZk2UGQ3GOWdhIq7oEPIKvNxxNbNT0thIUnGt9rN6u8KRB+2kWJHWf0soS8zd4oqHyRjQ= ;{id = 62298} +0768696E666F30320C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00010000003C000A025043064E6574425344 +hinfo02.types-signed.wb.sidnlabs.nl. 60 IN HINFO "PC" "NetBSD" +0768696E666F30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0050F27CFAB319CCB5A076DC2495C6BD1B8906E6663F77BD0246D5C8299C7081DE08BB171244F7FE2B477BFD21243E3F6A4F534AB4528C521BCB01E042724D19EBB1C8278F4A7B56B4665E4E3494D26FE75E0958D2688D9CE39FE9DC3D722EDDB3C2A7FB1B5E8696929DE2CA86919B4FE49AE1DF3F7C122FE1C2202AAAAB9F8183 +hinfo02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. UPJ8+rMZzLWgdtwklca9G4kG5mY/d70CRtXIKZxwgd4IuxcSRPf+K0d7/SEkPj9qT1NKtFKMUhvLAeBCck0Z67HIJ49Ke1a0Zl5ONJTSb+deCVjSaI2c45/p3D1yLt2zwqf7G16GlpKd4sqGkZtP5Jrh3z98Ei/hwiAqqqufgYM= ;{id = 62298} +0768696E666F30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046973646E0C74797065732D7369676E6564027762087369646E6C616273026E6C000006000400000003 +hinfo02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +0768696E666F30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0042FF916DC600FF419E4B06A7F1BE27A4CD6DF0C87EA64921CF361FB40C08A4408335E51922B7E58B84028AA9CAD040F35E94C667C912CAF5533A90B43FAF4C33582CD0AA315FBF22303D670DBFF09C4305EA28FC63FC2C3DA549475C79B94A7B4EDF607D301C22A91442EB143228B333DF980A4A75DA8172539AF16AF66F0B31 +hinfo02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Qv+RbcYA/0GeSwan8b4npM1t8Mh+pkkhzzYftAwIpECDNeUZIrfli4QCiqnK0EDzXpTGZ8kSyvVTOpC0P69MM1gs0KoxX78iMD1nDb/wnEMF6ij8Y/wsPaVJR1x5uUp7Tt9gfTAcIqkUQusUMiizM9+YCkp12oFyU5rxavZvCzE= ;{id = 62298} +046973646E0C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C00180C6973646E2D616464726573730A73756261646472657373 +isdn.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +046973646E0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0061ADBE53518516A4E3A9CE0C93F55A3D5F4FFF70D7981957FF4F02EC7C14A1713CE783878B9CE9A93A26EB83D845D5BC032BC90D454313E26783457A6844332D332AEA09E28D760D1858C8507BF44EBA300FA352FE03A3ACD34AED47710557E0A9042EEA3CCF53457EE1D8C71AB8E4F2F4E35E786A4D89CC08310ED08F1281E7 +isdn.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Ya2+U1GFFqTjqc4Mk/VaPV9P/3DXmBlX/08C7HwUoXE854OHi5zpqTom64PYRdW8AyvJDUVDE+Jng0V6aEQzLTMq6gnijXYNGFjIUHv0TrowD6NS/gOjrNNK7UdxBVfgqQQu6jzPU0V+4djHGrjk8vTjXnhqTYnMCDEO0I8Sgec= ;{id = 62298} +046973646E0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066973646E30310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +isdn.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn01.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +046973646E0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0033F9D3D8729BC1E27FBB63F72726530166BB984CE39784F2188E89B018A4B1D8F7049B70A7AD5EBB641BBC3C657CFB8FF18DDE1D5C068E5AC48A67DA8EAE0F648DB34C3F7519E0260802BF5AF73D8362F5F69660CB0F04839BF5BB68EF9929327447DD08E39ACE2B74E505FF4406BD11E07122EAA062990CA5C3D58D57064792 +isdn.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. M/nT2HKbweJ/u2P3JyZTAWa7mEzjl4TyGI6JsBiksdj3BJtwp61eu2QbvDxlfPuP8Y3eHVwGjlrEimfajq4PZI2zTD91GeAmCAK/Wvc9g2L19pZgyw8Eg5v1u2jvmSkydEfdCOOazit05QX/RAa9EeBxIuqgYpkMpcPVjVcGR5I= ;{id = 62298} +066973646E30310C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C000D0C6973646E2D61646472657373 +isdn01.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" +066973646E30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0025661F00A5AB22A374BCA1E81488DD1C474973BCC9A32135B216F21A6371CD8608816102B217A1467B2589FB135BF6E386C872DB863E00D1292D6BAED653184D9F622EAA196A3DEF385AD4C407F42476ACAC3371AF5D7579550ADC21D829C713B35B54EEAE1EBF44F09BB04E4EF20DF764E288E06ABDE19D9988491CD524F7F1 +isdn01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. JWYfAKWrIqN0vKHoFIjdHEdJc7zJoyE1shbyGmNxzYYIgWECshehRnslifsTW/bjhshy24Y+ANEpLWuu1lMYTZ9iLqoZaj3vOFrUxAf0JHasrDNxr111eVUK3CHYKccTs1tU7q4ev0Twm7BOTvIN92TiiOBqveGdmYhJHNUk9/E= ;{id = 62298} +066973646E30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066973646E30320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +isdn01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn02.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +066973646E30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006201C022F9A512BE073608B228D510F7450042ED9C90F58CCE24F03DC04A6A50173DA0D15C1BEED673605EC891851CD1539CD0680ACE338FDA1A264D017FB97E5CE901A3D84D1AD484B63718B8AA9BF6BC6F50D5AB3B55AFB33CF7A6443D804D6A80AF38999FBB0D4D691223103B3CC7D20D2EA9EC28DADC45A20D0186FA7AE9 +isdn01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YgHAIvmlEr4HNgiyKNUQ90UAQu2ckPWMziTwPcBKalAXPaDRXBvu1nNgXsiRhRzRU5zQaArOM4/aGiZNAX+5flzpAaPYTRrUhLY3GLiqm/a8b1DVqztVr7M896ZEPYBNaoCvOJmfuw1NaRIjEDs8x9INLqnsKNrcRaINAYb6euk= ;{id = 62298} +066973646E30320C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C00180C6973646E2D616464726573730A73756261646472657373 +isdn02.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +066973646E30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BE7FEF5228FC39172DF42EFEA5CF75D99B804A5C9281260BB36390D0CC9EC2E166B767DAE8546BE1B3FBF34BA43CFCBB88C1983641F486A69B9B4AC13E6DBB09854E330A0E53BE44B273D563FB46AA7D5DC9390D276F2211429EBD4D5C811A209BE84F076B2528D5CECD80085185398A85C414A54A82F4A698D0EE28AA010202 +isdn02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vn/vUij8ORct9C7+pc912ZuASlySgSYLs2OQ0MyewuFmt2fa6FRr4bP780ukPPy7iMGYNkH0hqabm0rBPm27CYVOMwoOU75EsnPVY/tGqn1dyTkNJ28iEUKevU1cgRogm+hPB2slKNXOzYAIUYU5ioXEFKVKgvSmmNDuKKoBAgI= ;{id = 62298} +066973646E30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066973646E30330C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +isdn02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn03.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +066973646E30320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005B70D2DBB8DD7281692C6ACF22B728C23E731A7599C0B243AA5F6275AF7499A22CD5CD97C098D7BABFA6B147FA7220F74FBBDC1310843728DCB9121F5EBBCAFEA0AE583A4F2B4A47C3648643CA17E02C3F8218118FF21E2BE3038E6336668275436C9634A167B603F3101C2CEDCAA3A412CE033E397BB59ABEC63635DD109B06 +isdn02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. W3DS27jdcoFpLGrPIrcowj5zGnWZwLJDql9ida90maIs1c2XwJjXur+msUf6ciD3T7vcExCENyjcuRIfXrvK/qCuWDpPK0pHw2SGQ8oX4Cw/ghgRj/IeK+MDjmM2ZoJ1Q2yWNKFntgPzEBws7cqjpBLOAz45e7WavsY2Nd0QmwY= ;{id = 62298} +066973646E30330C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C000D0C6973646E2D61646472657373 +isdn03.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" +066973646E30330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B91462706D45C9048E5E65843BEDE1213450CA7F2E39D3C8489AC384F45600941A143F65BE71B8CEEBB494E3D0B0743F4B560BB1A70E43FBDF6CE32535EDC2A274AFA4AC38B44DAD0DC0715AF923B78E8A67F92B8A7EF6E6FB932364FA906CB61FF252EF5F5743AA58ED681C1C7AE05085CBF77B5CA8AA81124210A69FB9C3BD +isdn03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uRRicG1FyQSOXmWEO+3hITRQyn8uOdPISJrDhPRWAJQaFD9lvnG4zuu0lOPQsHQ/S1YLsacOQ/vfbOMlNe3ConSvpKw4tE2tDcBxWvkjt46KZ/krin725vuTI2T6kGy2H/JS719XQ6pY7WgcHHrgUIXL93tcqKqBEkIQpp+5w70= ;{id = 62298} +066973646E30330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066973646E30340C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +isdn03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC isdn04.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +066973646E30330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A286BF39805CB0E0A5A46B01324C2F5F1F4D0120F7B12D303167075193EAFDC886C478831B056BC4A512CAA0E01617E5AB026CECC173CAE893029EBC7F61B7965A2BDE1924EE28627699A0016BB9A16B9ABDE68BFE377625CF38D63095A0EBF6765167CD9C2C768BE0404F779669324D6C0B47C408B1EC6B59704418503DC21F +isdn03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ooa/OYBcsOClpGsBMkwvXx9NASD3sS0wMWcHUZPq/ciGxHiDGwVrxKUSyqDgFhflqwJs7MFzyuiTAp68f2G3llor3hkk7ihidpmgAWu5oWuaveaL/jd2Jc841jCVoOv2dlFnzZwsdovgQE93lmkyTWwLR8QIsexrWXBEGFA9wh8= ;{id = 62298} +066973646E30340C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C00180C6973646E2D616464726573730A73756261646472657373 +isdn04.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +066973646E30340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BDE59E2A715FE714287678F2455B7013185771FDD72FAA327FA404F65F146087D972CAEB772E4531AABBE253C0ADDC386AAF88FB0B7D2CABDBA160650BF42B793F32004046F8E1E260BAF7AA7D83F4A50816752BBE1536F259C84D168A9649E8932D5115904B4027B2F818CDF80BF74368BB46B3F947EA6E3AA49FEC5138AB03 +isdn04.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. veWeKnFf5xQodnjyRVtwExhXcf3XL6oyf6QE9l8UYIfZcsrrdy5FMaq74lPArdw4aq+I+wt9LKvboWBlC/QreT8yAEBG+OHiYLr3qn2D9KUIFnUrvhU28lnITRaKlknoky1RFZBLQCey+BjN+Av3Q2i7RrP5R+puOqSf7FE4qwM= ;{id = 62298} +066973646E30340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026B780C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +isdn04.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +066973646E30340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003F56EC419B949B8DAFD999F12E8A305912E87F305228E138F9F8C79B007F96F8F455070368C2907597D366154DE2C105F520D7F20331D2BDB2E8444640A6CFFBABBBF148A7DB835C6A5E8051D5970886F5A173F6FAB7E392BA523B702B743FCFDC87200E97C7004AE0EDAABE8E56D362E5BF6F6030ECE9E99D693F13BACB2DD5 +isdn04.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. P1bsQZuUm42v2ZnxLoowWRLofzBSKOE4+fjHmwB/lvj0VQcDaMKQdZfTZhVN4sEF9SDX8gMx0r2y6ERGQKbP+6u78Uin24Ncal6AUdWXCIb1oXP2+rfjkrpSO3ArdD/P3IcgDpfHAErg7aq+jlbTYuW/b2Aw7OnpnWk/E7rLLdU= ;{id = 62298} +026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00002400010000003C0022000A026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +kx.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kx.types-signed.wb.sidnlabs.nl. +026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001D39E7A108FE9179D718086B31EBC38CC96D23B40E9AC2BB0D1AEDC1F25286E89915FFDF439C1D0CA7B6BDA60743B02C4CDE46BCF56D22F8BF6A71C69F892DB7938D9E448E1D20488D1BB42080D821A179BFB90AA67CDCF498A6DFDDF7644C8D6B74C45E4594734014C3D6D83F2B4F66A8E017AD60F021A5B3443CC79AC7E41E +kx.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HTnnoQj+kXnXGAhrMevDjMltI7QOmsK7DRrtwfJShuiZFf/fQ5wdDKe2vaYHQ7AsTN5GvPVtIvi/anHGn4ktt5ONnkSOHSBIjRu0IIDYIaF5v7kKpnzc9Jim3933ZEyNa3TEXkWUc0AUw9bYPytPZqjgF61g8CGls0Q8x5rH5B4= ;{id = 62298} +026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046B7830310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000803 +kx.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx01.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0049395CD27535477D94221632AD640FA34F2B67D648891ACA2B305BC6F668F5B4F3DAE55634FC04267A739A62B6BEAC977DB9391DA4F7B46F9E9C490EDF201CB78C8E043696E849DC46674216A6CAD9F9B1F613BE3FEA70F53A2A624FFAF183CA2E236B18C5EAC65F117E6A57F90549740C2E23B2C6D4D3D3DB87937DF1F7E1DE +kx.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. STlc0nU1R32UIhYyrWQPo08rZ9ZIiRrKKzBbxvZo9bTz2uVWNPwEJnpzmmK2vqyXfbk5HaT3tG+enEkO3yAct4yOBDaW6EncRmdCFqbK2fmx9hO+P+pw9ToqYk/68YPKLiNrGMXqxl8RfmpX+QVJdAwuI7LG1NPT24eTffH34d4= ;{id = 62298} +046B7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002400010000003C0023000A036B64630C74797065732D7369676E6564027762087369646E6C616273026E6C00 +kx01.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kdc.types-signed.wb.sidnlabs.nl. +046B7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00949BE15AB6863033083A462D713A52E437A08351F61F8A91052F2A111429D2904495D29A97150132A57F67A78F40CE79D8A51746517EA51B7319C2EF5ECD5E5FF92FE2CCF9FB6804A4EE36BBC83E0D4E17FD52BD71B11255CFD1590B060A78724F8AB38B3CC82240856B9580FF186804F98ADB0998C3324FA03BCD6604900FCF +kx01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lJvhWraGMDMIOkYtcTpS5Degg1H2H4qRBS8qERQp0pBEldKalxUBMqV/Z6ePQM552KUXRlF+pRtzGcLvXs1eX/kv4sz5+2gEpO42u8g+DU4X/VK9cbESVc/RWQsGCnhyT4qzizzIIkCFa5WA/xhoBPmK2wmYwzJPoDvNZgSQD88= ;{id = 62298} +046B7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046B7830320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000803 +kx01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC kx02.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +046B7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00704AE0DB56C1CD1641A737E824DEA1383870A246F9E19165794BCE02AD44A227E61D5722FAF02EE4BD253D4D8101B30F8EC43DFD04263B2248F1365F6F15AF1ED1E245C648D309B94282B1317811AB502082B9539CA801B5F90084F8AE24537286FB03CD857C7D5F1E21FD146B1BA4F391A1722B84FCCAA92493D3CD4A973FFF +kx01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. cErg21bBzRZBpzfoJN6hODhwokb54ZFleUvOAq1EoifmHVci+vAu5L0lPU2BAbMPjsQ9/QQmOyJI8TZfbxWvHtHiRcZI0wm5QoKxMXgRq1AggrlTnKgBtfkAhPiuJFNyhvsDzYV8fV8eIf0Uaxuk85GhciuE/MqpJJPTzUqXP/8= ;{id = 62298} +046B7830320C74797065732D7369676E6564027762087369646E6C616273026E6C00002400010000003C0003000A00 +kx02.types-signed.wb.sidnlabs.nl. 60 IN KX 10 . +046B7830320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009BCA45823DDD82F9A41FF021C0123EC35CBCC3AEC5A74355C009025DA3B24D287C1D96CB3E66A9932ED30B3581B1CEAB21EBBFC8D12A0A1844A87DC54DD857B46882F1CB8ACBB4DAEF220FD088EA0115D70DD4AF299A876E816FF75C0E8D11FACEF906C101B3A09BA48A6A842D422E6552E96D63280CF1A1CB7B13E078B701E0 +kx02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m8pFgj3dgvmkH/AhwBI+w1y8w67Fp0NVwAkCXaOyTSh8HZbLPmapky7TCzWBsc6rIeu/yNEqChhEqH3FTdhXtGiC8cuKy7Ta7yIP0IjqARXXDdSvKZqHboFv91wOjRH6zvkGwQGzoJukimqELUIuZVLpbWMoDPGhy3sT4Hi3AeA= ;{id = 62298} +046B7830320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029036C33320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000803 +kx02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC l32.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +046B7830320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00667C5D0349B39BB79BE3420CF11E3364066D1A268F2BF95E576CBE17CB122255692E2CCB5BA5591C7DC46A2CCA9D05D482A51BC566BE4AA3A022F5463A57B3DF2801C8A1C94E20402B2E0D6A749E7169A6D2F435377E46BEA71B1AECCD102B64B43F0B07D2F90BB028E343E60CFD6542F831780A83EF8699D673599AF22474C2 +kx02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZnxdA0mzm7eb40IM8R4zZAZtGiaPK/leV2y+F8sSIlVpLizLW6VZHH3EaizKnQXUgqUbxWa+SqOgIvVGOlez3ygByKHJTiBAKy4NanSecWmm0vQ1N35GvqcbGuzNECtktD8LB9L5C7Ao40PmDP1lQvgxeAqD74aZ1nNZmvIkdMI= ;{id = 62298} +036C33320C74797065732D7369676E6564027762087369646E6C616273026E6C00006900010000003C0006000AC0000201 +l32.types-signed.wb.sidnlabs.nl. 60 IN L32 10 192.0.2.1 +036C33320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C32B9C1FF9DCBA100FA5F933658B71C8BA9352C433F959F1F9D13591779EF5C61D0D46B17DC545672E8B7116667604448EF6D78B2846B15140453B47AFF44055817C91C8ECCBCFB82EC8E7844527564DD647DFD30A817D2B15C7B2D3CD40525AD349F42A0D9D5AF7EA3F7214CC8A54DEBE70DDFA2A4587C060B50F8D5A1D64FC +l32.types-signed.wb.sidnlabs.nl. 60 IN RRSIG L32 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. wyucH/ncuhAPpfkzZYtxyLqTUsQz+Vnx+dE1kXee9cYdDUaxfcVFZy6LcRZmdgREjvbXiyhGsVFARTtHr/RAVYF8kcjsy8+4LsjnhEUnVk3WR9/TCoF9KxXHstPNQFJa00n0Kg2dWvfqP3IUzIpU3r5w3foqRYfAYLUPjVodZPw= ;{id = 62298} +036C33320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100031036C36340C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000040 +l32.types-signed.wb.sidnlabs.nl. 3600 IN NSEC l64.types-signed.wb.sidnlabs.nl. RRSIG NSEC L32 +036C33320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003618267BD98B5FE7DFD44B66A31AFB1006B01D7302A460AD6FB44CC22FF677C27F60AA350572BBE6D7970A325E488946FF9257AA4D4CD6AC3C412931F9A5A828251206BF1B990B75A982ACE9150AD0BA13D5F5DF0566E501063BA7BB76AC4B7C549BE177B6E5A41DFF64292ECE0ED3667F7ACCCC07EA65C161128232FE092B25 +l32.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Nhgme9mLX+ff1Etmoxr7EAawHXMCpGCtb7RMwi/2d8J/YKo1BXK75teXCjJeSIlG/5JXqk1M1qw8QSkx+aWoKCUSBr8bmQt1qYKs6RUK0LoT1fXfBWblAQY7p7t2rEt8VJvhd7blpB3/ZCkuzg7TZn96zMwH6mXBYRKCMv4JKyU= ;{id = 62298} +036C36340C74797065732D7369676E6564027762087369646E6C616273026E6C00006A00010000003C000A000A2A000D7800040503 +l64.types-signed.wb.sidnlabs.nl. 60 IN L64 10 2a00:0d78:0004:0503 +036C36340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0014BE0DF88D725B5049361F508D8AF7420D226D96C9F520CC62AF7DBA10BCEE7B5DCF85FA3172E51DBC25BF584D623CD315B14E92CBA30ABCF303D9EA20A7CFD55FE3AC76B031BBCE45223D82A42C06F7FC3CC9D2BA11E306085732AAAA8480340CFA8FAE1C75B20D9232F78146860BC6E35C968071248FC8BFE3DE9AE3B2E127 +l64.types-signed.wb.sidnlabs.nl. 60 IN RRSIG L64 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FL4N+I1yW1BJNh9QjYr3Qg0ibZbJ9SDMYq99uhC87ntdz4X6MXLlHbwlv1hNYjzTFbFOksujCrzzA9nqIKfP1V/jrHawMbvORSI9gqQsBvf8PMnSuhHjBghXMqqqhIA0DPqPrhx1sg2SMveBRoYLxuNcloBxJI/Iv+PemuOy4Sc= ;{id = 62298} +036C36340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100031036C6F630C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000020 +l64.types-signed.wb.sidnlabs.nl. 3600 IN NSEC loc.types-signed.wb.sidnlabs.nl. RRSIG NSEC L64 +036C36340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003023888603877FDEC33CA964AEC98A491C65C570570BC883696C61E792C249F294E206799178F30984A2725376D7138756C7D3CCD7EB42833E728B8248C75A0BC5B62C097BF92332A988AC6DBC91D77D2B231FD0567A2484F3F85C8C9A4AA0D5596CE94A5457D782E3585B9B175E19F8D53DB9796717F8803134FCDDFB470BD1 +l64.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MCOIhgOHf97DPKlkrsmKSRxlxXBXC8iDaWxh55LCSfKU4gZ5kXjzCYSiclN21xOHVsfTzNfrQoM+couCSMdaC8W2LAl7+SMyqYisbbyR130rIx/QVnokhPP4XIyaSqDVWWzpSlRX14LjWFubF14Z+NU9uXlnF/iAMTT83ftHC9E= ;{id = 62298} +036C6F630C74797065732D7369676E6564027762087369646E6C616273026E6C00001D00010000003C0010002325238CE82360854A10A000989A68 +loc.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 00.000 N 24 39 00.000 E 10m 20m 2000m 20m +036C6F630C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0081730F8F1A032FB7770A530916F5DFF1E56B53E72BCBFFAF3C4DD2C42E4AA3F2BD998347EE6D5C7095AAB7D53FD3F2FC8094BCF132DFAC14D739FCA8BA1C297B941CED642E63FB671BE6168CF9AF00E7D0A0F7E7E23BFCCB0CBF29B52C01BD5006CF6D85087ACBBD8A197A89BAAD7B62EC388F2CF010C84A31FDFDD09B2760A5 +loc.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gXMPjxoDL7d3ClMJFvXf8eVrU+cry/+vPE3SxC5Ko/K9mYNH7m1ccJWqt9U/0/L8gJS88TLfrBTXOfyouhwpe5Qc7WQuY/tnG+YWjPmvAOfQoPfn4jv8ywy/KbUsAb1QBs9thQh6y72KGXqJuq17Yuw4jyzwEMhKMf390JsnYKU= ;{id = 62298} +036C6F630C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B056C6F6330310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000040003 +loc.types-signed.wb.sidnlabs.nl. 3600 IN NSEC loc01.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +036C6F630C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002DA87CBC56A6C94FCD24D4418C5D65B1D920883618D31E53E91346B176C330719120EC721EED5FE830CA504EBDDB131317F041D2D2C6D23C0EE0557D500B6D521718F043B015E199AC85EB3D8C386C24A69F9E519F50F620449267EF36A08D1B03E154B51B8D0B224CFCD87381DBFCA2CC7B97738B16BEB21FD704BEF62BBFD9 +loc.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Lah8vFamyU/NJNRBjF1lsdkgiDYY0x5T6RNGsXbDMHGRIOxyHu1f6DDKUE692xMTF/BB0tLG0jwO4FV9UAttUhcY8EOwFeGZrIXrPYw4bCSmn55Rn1D2IESSZ+82oI0bA+FUtRuNCyJM/Nhzgdv8osx7l3OLFr6yH9cEvvYrv9k= ;{id = 62298} +056C6F6330310C74797065732D7369676E6564027762087369646E6C616273026E6C00001D00010000003C0010002325238CE82360854A10A000989A68 +loc01.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 00.000 N 24 39 00.000 E 10m 20m 2000m 20m +056C6F6330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00128D516F8CE942540EE7A0DB557DC7B044C9A90C367A6F87C7826A2BAB0B955CE13FFEDB836969532ACA1492651E61EDE7BE9BF9ECBE97D36318117DD337FB82F2498D725080551831ED9D15E9F9FA7A421E168482E6483F39124BF2F8C6427FB347FBBF1C651F5E05353F5B5F8DC99C27268A6ED27D1C7DCE314A91CD8980D8 +loc01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Eo1Rb4zpQlQO56DbVX3HsETJqQw2em+Hx4JqK6sLlVzhP/7bg2lpUyrKFJJlHmHt576b+ey+l9NjGBF90zf7gvJJjXJQgFUYMe2dFen5+npCHhaEguZIPzkSS/L4xkJ/s0f7vxxlH14FNT9bX43JnCcmim7SfRx9zjFKkc2JgNg= ;{id = 62298} +056C6F6330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B056C6F6330320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000040003 +loc01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC loc02.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +056C6F6330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000E90DD4116B8D7EE57446312864F4B54254EFF6C74C54FCA7225105700FD092C8EBFAFA0867A126AFF6E2704828A0260A4C2BC0A715F8B5E4F7DFE25D8EA8997A7D85A6417983AE45263BF9B44020B5A3FDF6D054CA77AC70E194C9542382E5CB97EB4E401AF10859052BA0E3B98CED2FD230C6EE6DECEF62B6A12895D966C33 +loc01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DpDdQRa41+5XRGMShk9LVCVO/2x0xU/KciUQVwD9CSyOv6+ghnoSav9uJwSCigJgpMK8CnFfi15Pff4l2OqJl6fYWmQXmDrkUmO/m0QCC1o/320FTKd6xw4ZTJVCOC5cuX605AGvEIWQUroOO5jO0v0jDG7m3s72K2oSiV2WbDM= ;{id = 62298} +056C6F6330320C74797065732D7369676E6564027762087369646E6C616273026E6C00001D00010000003C0010002300138CE82360854A10A000989A68 +loc02.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 00.000 N 24 39 00.000 E 10m 20m 0.00m 10m +056C6F6330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0053D5052F1A36F741BBEA1F58930593F80F6570F1AC9963F6B960BE80912EA5865C2372DECE6C528778451C8D871BA01B2021DA7A9B7AF629EC108738410AE830DF2DEF622B35A1EB368E796897F5285E64B10F7F747796D009CBEE82E1D8A8DA0970649443E3B5363579AC9C4E6AAFD7C77328755B8B8A01A9CF73DBE4B16068 +loc02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. U9UFLxo290G76h9YkwWT+A9lcPGsmWP2uWC+gJEupYZcI3LezmxSh3hFHI2HG6AbICHaept69insEIc4QQroMN8t72IrNaHrNo55aJf1KF5ksQ9/dHeW0AnL7oLh2KjaCXBklEPjtTY1eaycTmqv18dzKHVbi4oBqc9z2+SxYGg= ;{id = 62298} +056C6F6330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026C700C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000040003 +loc02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC lp.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +056C6F6330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B277F761834847BCDE78EAED1C5C063E0FB4B0B4BBAA544BA5440AD2864B96CB2BD71CEA84E774F55DEEC7D60C630CCA4215A5443AD532FADCEB46463EF4D600E96F654161082D2192C2AC6B582B65F707B49B76776C9AE56AD8C71CB44433FD20178EA30AF3181C31DD4B04C54D3C5E964A39E13C0C07984B04D61A3EB54221 +loc02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. snf3YYNIR7zeeOrtHFwGPg+0sLS7qlRLpUQK0oZLlssr1xzqhOd09V3ux9YMYwzKQhWlRDrVMvrc60ZGPvTWAOlvZUFhCC0hksKsa1grZfcHtJt2d2ya5WrYxxy0RDP9IBeOowrzGBwx3UsExU08XpZKOeE8DAeYSwTWGj61QiE= ;{id = 62298} +026C700C74797065732D7369676E6564027762087369646E6C616273026E6C00006B00010000003C001B000A0B6C36342D7375626E657431076578616D706C6503636F6D00 +lp.types-signed.wb.sidnlabs.nl. 60 IN LP 10 l64-subnet1.example.com. +026C700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008FDB63E2B70629AD5AF5DE907DD330C703F4A35998D44FB731740A163AD0918659353FBB0D6DCFBB1A6B025315992DD9A45721507D4F83536FDA020394720210B03E35894C9D8766CEDE5E49FC5D52F460684D43301344BEA0C62EF3C6E6392A412A3DE5795AA6543D1D410D40F8017660FA47A0AE7E89FB23F7C83A9DD3CFE2 +lp.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. j9tj4rcGKa1a9d6QfdMwxwP0o1mY1E+3MXQKFjrQkYZZNT+7DW3PuxprAlMVmS3ZpFchUH1Pg1Nv2gIDlHICELA+NYlMnYdmzt5eSfxdUvRgaE1DMBNEvqDGLvPG5jkqQSo95XlaplQ9HUENQPgBdmD6R6Cufon7I/fIOp3Tz+I= ;{id = 62298} +026C700C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100030026D620C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000010 +lp.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mb.types-signed.wb.sidnlabs.nl. RRSIG NSEC LP +026C700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0007399B93DB821BB06930D3DB5812239EB2E3709DC426FC4F5BEFE8F93A9694DF1D695EBE37BFA859CD4AF03BA9A060754C2417CA45CB47C2C1453725D035B80E2B4421993EA50C65FBE2F52CDF09262185BEFB53A3DDC55716C7BA89A34757E72E0DFAB1C768DC6948006F5D6BF355E4003B6BCAF5BA10D9F428AB0EFBDD4DFA +lp.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Bzmbk9uCG7BpMNPbWBIjnrLjcJ3EJvxPW+/o+TqWlN8daV6+N7+oWc1K8DupoGB1TCQXykXLR8LBRTcl0DW4DitEIZk+pQxl++L1LN8JJiGFvvtTo93FVxbHuomjR1fnLg36scdo3GlIAG9da/NV5AA7a8r1uhDZ9CirDvvdTfo= ;{id = 62298} +026D620C74797065732D7369676E6564027762087369646E6C616273026E6C00000700010000003C0025076D61696C626F780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mb.types-signed.wb.sidnlabs.nl. 60 IN MB mailbox.types-signed.wb.sidnlabs.nl. +026D620C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001CC364B63B9214A10E49128940E5399CCB27BDA74F5FA8FE31E24A87D59B4AF83D67B487A5A9017AA0D348C291BED2893D3DDF1F7D8D80C8E514E57C4D26ACE7D6C9069CC76DF9DF04C5818D56F88D9CECC32B5F2A67615CBA1E491AD58D4C1E40B444DCE206D2ABCA13FC12785D1CD1F309547E9E11C7BE6B1A95D0900D10D6 +mb.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HMNktjuSFKEOSRKJQOU5nMsnvadPX6j+MeJKh9WbSvg9Z7SHpakBeqDTSMKRvtKJPT3fH32NgMjlFOV8TSas59bJBpzHbfnfBMWBjVb4jZzswytfKmdhXLoeSRrVjUweQLRE3OIG0qvKE/wSeF0c0fMJVH6eEce+axqV0JANENY= ;{id = 62298} +026D620C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D6230310C74797065732D7369676E6564027762087369646E6C616273026E6C000006010000000003 +mb.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mb01.types-signed.wb.sidnlabs.nl. MB RRSIG NSEC +026D620C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009BC273C87D910A2FE6010F4BF279EE22C0E3AF85FF484673199FCB2BB95B450DF4E48D283930B18260099C22E2E27DBDA2A09C3F581ACA6289A1AD024A95DADA589EDA98CDB96035BD3B5C422337426E29C9CC0594D527663A71001994B62CACCDE86D6F789A26DA5FB9700A154B0AD932F9C8966842FB78C390A0F474BE24D9 +mb.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m8JzyH2RCi/mAQ9L8nnuIsDjr4X/SEZzGZ/LK7lbRQ305I0oOTCxgmAJnCLi4n29oqCcP1gaymKJoa0CSpXa2lie2pjNuWA1vTtcQiM3Qm4pycwFlNUnZjpxABmUtiyszehtb3iaJtpfuXAKFUsK2TL5yJZoQvt4w5Cg9HS+JNk= ;{id = 62298} +046D6230310C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C0025076D61646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mb01.types-signed.wb.sidnlabs.nl. 60 IN MG madname.types-signed.wb.sidnlabs.nl. +046D6230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004CFEB8707B2EC2019A0F65F1B2BF788CF9E71769A5EABFEC7E1E8D5F5D0443D7F87F4C33751ADE049DEBBFEEFA1095FEBD99A24FBD2F645ABD8E760FC45EA737BCD848FB972C9AA85C6F6A750180D74CA2B35996B7920B0747C352DCD29EDD4147E45AA417C78C4C5EFF85BFE97601BB7819C3241245708E171472D3854E18FF +mb01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. TP64cHsuwgGaD2Xxsr94jPnnF2ml6r/sfh6NX10EQ9f4f0wzdRreBJ3rv+76EJX+vZmiT70vZFq9jnYPxF6nN7zYSPuXLJqoXG9qdQGA10yis1mWt5ILB0fDUtzSnt1BR+RapBfHjExe/4W/6XYBu3gZwyQSRXCOFxRy04VOGP8= ;{id = 62298} +046D6230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D6230320C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +mb01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mb02.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +046D6230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0094091AD1B69EBFC2FAB5AC5A17FFAECF5992675FA01E67FC820B1F6A139F4B3D26180D0E31FC773F7D095A981AA9E123567CE6C5A4DCA7D4A5AAC7BAFD208BD171E1F6CC5C7932A9F019AF1A059DF8796355946053575D6ACD5F7C60D2D2272B2DC876A27707D04110209A33704FEEB41E578E063C94A004BCFF0AF8341DD100 +mb01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lAka0baev8L6taxaF/+uz1mSZ1+gHmf8ggsfahOfSz0mGA0OMfx3P30JWpgaqeEjVnzmxaTcp9Slqse6/SCL0XHh9sxceTKp8BmvGgWd+HljVZRgU1ddas1ffGDS0icrLch2oncH0EEQIJozcE/utB5XjgY8lKAEvP8K+DQd0QA= ;{id = 62298} +046D6230320C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C000100 +mb02.types-signed.wb.sidnlabs.nl. 60 IN MG . +046D6230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0047D3D581302DFE1B5C5F10A927E93B44AA4D15702C88BABA39814B65ADBFE84E68FFFBDDF35CD97DEB612ED98284C0CB80112D7DA0C03CE3ABF0BD0D589646BC029C4D1EDF435D3D86A76AA3DED58B39C68E5BF778193A0BAD65988ED6F03ED16DA32562D145B4E8C79AB7A2A4277EF73D468FE7FF1DD3CA336BB056A8403231 +mb02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R9PVgTAt/htcXxCpJ+k7RKpNFXAsiLq6OYFLZa2/6E5o//vd81zZfethLtmChMDLgBEtfaDAPOOr8L0NWJZGvAKcTR7fQ109hqdqo97ViznGjlv3eBk6C61lmI7W8D7RbaMlYtFFtOjHmreipCd+9z1Gj+f/HdPKM2uwVqhAMjE= ;{id = 62298} +046D6230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026D640C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +mb02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC md.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +046D6230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0082204D6DA0937D633C74774FC492D17B57D4470941C1D66F64D0321DC5F442DF6DBAD24F5F70816ED9D01DAE94C2988DBE71FBDD5FC2EFC4EF2C1706EBF22C51A71E1E50F8B8A3110A8A62F38396A0446DA43A0DC60FF1DFCA64E11602D5BB5FEF3C8B0AAF0EF9EC9F756AC4AC9B429D62FD4EC5978E4AA2074372CC3D164B4A +mb02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. giBNbaCTfWM8dHdPxJLRe1fURwlBwdZvZNAyHcX0Qt9tutJPX3CBbtnQHa6UwpiNvnH73V/C78TvLBcG6/IsUaceHlD4uKMRCopi84OWoERtpDoNxg/x38pk4RYC1btf7zyLCq8O+eyfdWrErJtCnWL9TsWXjkqiB0NyzD0WS0o= ;{id = 62298} +026D640C74797065732D7369676E6564027762087369646E6C616273026E6C00000300010000003C002D0F6D61696C64657374696E6174696F6E0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +md.types-signed.wb.sidnlabs.nl. 60 IN MD maildestination.types-signed.wb.sidnlabs.nl. +026D640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0057CB1B8E5DC61C97139673CCAC5C894AC816890D67537CDDC72492A206D9086449A145D318DDD2F02420E149D8C48D1E1512D8777D628C347508421FD226F87222D0C71F1F863B320761D4011B5AABC1850336D1185024F978CA5F7C7F77A1947EB45DABAD39712CBA6E07DF42D8E89358BE347D8BC02F2D4980FC720ED5C92D +md.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MD 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. V8sbjl3GHJcTlnPMrFyJSsgWiQ1nU3zdxySSogbZCGRJoUXTGN3S8CQg4UnYxI0eFRLYd31ijDR1CEIf0ib4ciLQxx8fhjsyB2HUARtaq8GFAzbRGFAk+XjKX3x/d6GUfrRdq605cSy6bgffQtjok1i+NH2LwC8tSYD8cg7VyS0= ;{id = 62298} +026D640C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026D660C74797065732D7369676E6564027762087369646E6C616273026E6C000006100000000003 +md.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mf.types-signed.wb.sidnlabs.nl. MD RRSIG NSEC +026D640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00570F2EB40A47A454EE136ABB1989E6161E486248ECDB5C6E139E1CB53857C6C3500706B102B21B4245961F85626234C8DC2DE65F32E07476009BD26C3FB6D1CE8AD9E9911FBCFFC96F897352FC6C1C19426B40CA64E7025CA44E3BC36AEACBBDC2C775CC9F2FE0ECA14CD0667DBB61B29CFE425AF496C1B2AC05AA75AC8E7911 +md.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Vw8utApHpFTuE2q7GYnmFh5IYkjs21xuE54ctThXxsNQBwaxArIbQkWWH4ViYjTI3C3mXzLgdHYAm9JsP7bRzorZ6ZEfvP/Jb4lzUvxsHBlCa0DKZOcCXKROO8Nq6su9wsd1zJ8v4OyhTNBmfbthspz+Qlr0lsGyrAWqdayOeRE= ;{id = 62298} +026D660C74797065732D7369676E6564027762087369646E6C616273026E6C00000400010000003C002B0D6D61696C666F727761726465720C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mf.types-signed.wb.sidnlabs.nl. 60 IN MF mailforwarder.types-signed.wb.sidnlabs.nl. +026D660C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001A68FCEAB32F07C83CF70A6B285F4205E1BAF64BAEDB5EDAC29D690B3BD10EE0E5E40A5160CEEAF65EA8C877DBB02F925E779ED32002FC8E23E719ACD88451B43EE4B9D9B40ECEE87DFC904B865C89460AA0F7A6B1959C05AE623CFF8D42E3BF8CF37841462642E6F3DD8E4184F091382CAC777AA03424A4FD98665620D64E37 +mf.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Gmj86rMvB8g89wprKF9CBeG69kuu217awp1pCzvRDuDl5ApRYM7q9l6oyHfbsC+SXnee0yAC/I4j5xms2IRRtD7kudm0Ds7offyQS4ZciUYKoPemsZWcBa5iPP+NQuO/jPN4QUYmQubz3Y5BhPCROCysd3qgNCSk/ZhmViDWTjc= ;{id = 62298} +026D660C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026D670C74797065732D7369676E6564027762087369646E6C616273026E6C000006080000000003 +mf.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg.types-signed.wb.sidnlabs.nl. MF RRSIG NSEC +026D660C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006891F178CD9142759EEB12DF1FBE44606BC4A6EA38B507BA70B861280A628121AFF2CB3CA696CF7B5EEA4AF1713C9148A69FAFCA3AC0B6EF3D02F73B70FE143EE5DB44A784DD757EAA81FBDD44C9E85B3E8B5A77742B977969E95CD9BFAF59C6A24EEDABE0428ACB48385BEC12245337486C50F1FBD5E05D53B21CE2557A067A +mf.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. aJHxeM2RQnWe6xLfH75EYGvEpuo4tQe6cLhhKApigSGv8ss8ppbPe17qSvFxPJFIpp+vyjrAtu89Avc7cP4UPuXbRKeE3XV+qoH73UTJ6Fs+i1p3dCuXeWnpXNm/r1nGok7tq+BCistIOFvsEiRTN0hsUPH71eBdU7Ic4lV6Bno= ;{id = 62298} +026D670C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C002D0F6D61696C67726F75706D656D6265720C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mg.types-signed.wb.sidnlabs.nl. 60 IN MG mailgroupmember.types-signed.wb.sidnlabs.nl. +026D670C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001BC62AC02A5E0627A39F789FC2719F8486B38D9260CC3518FE9F6DA9DD2B3C6E2EC01BCCA4226BC7A9A46FC4D63C05E64DFF8D587972E6D8B978E81515B96C7D5DAC1E5EEC70AE7300DB0808598BD3981F2D3A163C275BA4527772EAEFE4F1D62AF94060E66DF36B341D673714B3281E8E4E68D374846AEF80ADD07975C7102B +mg.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. G8YqwCpeBiejn3ifwnGfhIazjZJgzDUY/p9tqd0rPG4uwBvMpCJrx6mkb8TWPAXmTf+NWHly5ti5eOgVFblsfV2sHl7scK5zANsICFmL05gfLToWPCdbpFJ3curv5PHWKvlAYOZt82s0HWc3FLMoHo5OaNN0hGrvgK3QeXXHECs= ;{id = 62298} +026D670C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D6730310C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +mg.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg01.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +026D670C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00666DCB78D770395351FAB42CF08218A934B11831417EB46CA81A2B99817FAF1557708C92FAD03CAFB548E01981B61C1F3286D8B3716803A69B1FBF012B544CB1F091EB6907F444E70CCF6C4EFDED6ED150A1DC806E22A155F5742C96772F132A9E24C79411FCD3C6CE4BCB0926DA2E8699E3C18FA54EB319C099315731082676 +mg.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Zm3LeNdwOVNR+rQs8IIYqTSxGDFBfrRsqBormYF/rxVXcIyS+tA8r7VI4BmBthwfMobYs3FoA6abH78BK1RMsfCR62kH9ETnDM9sTv3tbtFQodyAbiKhVfV0LJZ3LxMqniTHlBH808bOS8sJJtouhpnjwY+lTrMZwJkxVzEIJnY= ;{id = 62298} +046D6730310C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C0025076D676D6E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mg01.types-signed.wb.sidnlabs.nl. 60 IN MG mgmname.types-signed.wb.sidnlabs.nl. +046D6730310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0057584E8D70217F7AF5A66CA57BE5EB5168D8735C8F09CBCEC36E570DBCA923597948367C13E31B8CCB531E4C29521B321F2270BDE1E7840EF355BA34E9E4C55AB03864F60EC93582AF2340884502709920EAD33E3A3410E366D5B041D1DDDCD2FBA933FC8D2BF4D21A369A786714C594511428244432FA7392F234012B457C48 +mg01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. V1hOjXAhf3r1pmyle+XrUWjYc1yPCcvOw25XDbypI1l5SDZ8E+MbjMtTHkwpUhsyHyJwveHnhA7zVbo06eTFWrA4ZPYOyTWCryNAiEUCcJkg6tM+OjQQ42bVsEHR3dzS+6kz/I0r9NIaNpp4ZxTFlFEUKCREMvpzkvI0AStFfEg= ;{id = 62298} +046D6730310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D6730320C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +mg01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mg02.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +046D6730310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00965EA55B0D6FA2B176CF0CDC1C8763BD76668CEE9FB639172C8ABEB11C61BC742CF8C9CE4565FD9A708E51BC214D812CCD837740688CA3441914F513470B73E38F3BA004590376FC7F85D7EC333870F1CA710B5074DEA47C071C1CC7BE67E416093C3E8BC244144E6BFDC22545B30D5D5AC1B5E0AE1D3C574D49C0D4412CBADF +mg01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ll6lWw1vorF2zwzcHIdjvXZmjO6ftjkXLIq+sRxhvHQs+MnORWX9mnCOUbwhTYEszYN3QGiMo0QZFPUTRwtz4487oARZA3b8f4XX7DM4cPHKcQtQdN6kfAccHMe+Z+QWCTw+i8JEFE5r/cIlRbMNXVrBteCuHTxXTUnA1EEsut8= ;{id = 62298} +046D6730320C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C000100 +mg02.types-signed.wb.sidnlabs.nl. 60 IN MG . +046D6730320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00814A48EC9E056077137560D1ACCF0601D163208F0478CB8954ED9D2ACCEB12FF2AEDBF43A6CF4A9C4D206758D63A977BE9D572D15C1D93E2597BFEF64165DB1F79BF2ED93186300ADB42DA5F2C6CEA2F10A3EFB512EB7DD1D1D02B9E525072FA54B966687F32EC1A2ADBFF0D43B75F1AE733DEE36C6355568D6BA62DCAD3D980 +mg02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. gUpI7J4FYHcTdWDRrM8GAdFjII8EeMuJVO2dKszrEv8q7b9Dps9KnE0gZ1jWOpd76dVy0Vwdk+JZe/72QWXbH3m/LtkxhjAK20LaXyxs6i8Qo++1Eut90dHQK55SUHL6VLlmaH8y7Boq2/8NQ7dfGucz3uNsY1VWjWumLcrT2YA= ;{id = 62298} +046D6730320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B056D696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +mg02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC minfo.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +046D6730320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00393AEBDF51BD90EA8161A2A20DC8EE9A0EE7F37F29381755FCB17BC3A99ABF0D85509F32E02D063AF1904868F5D8E87821CD5F0737ECE04A740BA6F9563E7C7567AC2C92418B71AA387C72BFD6CF68BB698C3BC808DD81AB44F4D9066266E9BB5CC747421F4FE6B22915E93A0138A04403C3FA42D77A460613CA8BD1F43EF314 +mg02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OTrr31G9kOqBYaKiDcjumg7n838pOBdV/LF7w6mavw2FUJ8y4C0GOvGQSGj12Oh4Ic1fBzfs4Ep0C6b5Vj58dWesLJJBi3GqOHxyv9bPaLtpjDvICN2Bq0T02QZiZum7XMdHQh9P5rIpFek6ATigRAPD+kLXekYGE8qL0fQ+8xQ= ;{id = 62298} +056D696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00000E00010000003C002209626F786D617374657203666F6F0362617200076D61696C626F7805746865726500 +minfo.types-signed.wb.sidnlabs.nl. 60 IN MINFO boxmaster.foo.bar. mailbox.there. +056D696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000E08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00640FE71C2231D066C2A2415B3C73B684CBDA3C97AC22FDE008E8159A396ECC6ACEE6024CCB27AB34B626C15B308937487F8B25FB08BDE36D723C984CE70855648F8DC378B1063BF0837F57E6A606E123FAD94201D90B9418125C37E5D5AE38681A696381D35C6CADEEE076EA56C6469784EB845DCEE763EEDCBF6D442F7D8E07 +minfo.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZA/nHCIx0GbCokFbPHO2hMvaPJesIv3gCOgVmjluzGrO5gJMyyerNLYmwVswiTdIf4sl+wi9421yPJhM5whVZI+Nw3ixBjvwg39X5qYG4SP62UIB2QuUGBJcN+XVrjhoGmljgdNcbK3u4HbqVsZGl4TrhF3O52Pu3L9tRC99jgc= ;{id = 62298} +056D696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D076D696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000200000003 +minfo.types-signed.wb.sidnlabs.nl. 3600 IN NSEC minfo01.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +056D696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00715B36317F7022514399CFB4D3E84469AB69A749230AD914CEA2408C60102910EF87DA103961413A6F6F133B31AD42C13B380B344A6458BBF371CFA2930E699BDDF4EBA5ADF24E7068B99B0EA20B032D64C29B91F081554EA8C5AC6DEAD135720EBA808FB689073DACD3AC3DF646C4DAF4A2960AC3650B60DCF8C1BCDF8D25B7 +minfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. cVs2MX9wIlFDmc+00+hEaatpp0kjCtkUzqJAjGAQKRDvh9oQOWFBOm9vEzsxrULBOzgLNEpkWLvzcc+ikw5pm93066Wt8k5waLmbDqILAy1kwpuR8IFVTqjFrG3q0TVyDrqAj7aJBz2s06w99kbE2vSilgrDZQtg3PjBvN+NJbc= ;{id = 62298} +076D696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00000E00010000003C00020000 +minfo01.types-signed.wb.sidnlabs.nl. 60 IN MINFO . . +076D696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000E08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003CB31E1C90A158134ED8B59B5B1B2E2281DBA2FA52DC1260108AAB3E0D2E84EDFC54CCD08E7957476271D95072041B41D697AFE0B86EAD4B12CDD63197975CB5C595FF8E50FCC9C94A884EC3D084C498649707FF47D554D2514560B975DEF1D6F136E5468EA13BFB467BD23156CEDFBD0D1C5B3DB41249C5512BF4C0E4A29478 +minfo01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PLMeHJChWBNO2LWbWxsuIoHbovpS3BJgEIqrPg0uhO38VMzQjnlXR2Jx2VByBBtB1pev4LhurUsSzdYxl5dctcWV/45Q/MnJSohOw9CExJhklwf/R9VU0lFFYLl13vHW8TblRo6hO/tGe9IxVs7fvQ0cWz20EknFUSv0wOSilHg= ;{id = 62298} +076D696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026D720C74797065732D7369676E6564027762087369646E6C616273026E6C000006000200000003 +minfo01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +076D696E666F30310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BA0C86E32AC03E9A5DD77FC6172BAD10148AF3DEDE44090ED72C145A086BE39D1424B95B1132D82C8580EAC47807EA92DC722E3E6AFEE57086AD2A6A0C0D80170CDB26DD9051FC920F2C9C30BA53564E0F5525256D06335931145E541AD6BA8B63A653368D52A972C7EA0A2D5103CB1A417A6EEA5811283335EFA0E546EC289D +minfo01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ugyG4yrAPppd13/GFyutEBSK897eRAkO1ywUWghr450UJLlbETLYLIWA6sR4B+qS3HIuPmr+5XCGrSpqDA2AFwzbJt2QUfySDyycMLpTVk4PVSUlbQYzWTEUXlQa1rqLY6ZTNo1SqXLH6gotUQPLGkF6bupYESgzNe+g5UbsKJ0= ;{id = 62298} +026D720C74797065732D7369676E6564027762087369646E6C616273026E6C00000900010000003C00280A6D61696C72656E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mr.types-signed.wb.sidnlabs.nl. 60 IN MR mailrename.types-signed.wb.sidnlabs.nl. +026D720C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006C10E517DED2588CFF9B07DB683EEBD0BCA48DEC046A2FD0253AC54A4635954F24881192E3D56F9D016D779AF456D77A9493CC7AC166A12F8245F7DDB9E66D46170CAB0FA131A8A342542721C4BA15F9EBBBFAD60AF28A69F3D45FF478D511D8D0ECE21CE2B190427E7F83D1CDB68780CCECB1DE3834C5789CA72238985797C9 +mr.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bBDlF97SWIz/mwfbaD7r0LykjewEai/QJTrFSkY1lU8kiBGS49VvnQFtd5r0Vtd6lJPMesFmoS+CRffdueZtRhcMqw+hMaijQlQnIcS6Ffnru/rWCvKKafPUX/R41RHY0OziHOKxkEJ+f4PRzbaHgMzssd44NMV4nKciOJhXl8k= ;{id = 62298} +026D720C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D7230310C74797065732D7369676E6564027762087369646E6C616273026E6C000006004000000003 +mr.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr01.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +026D720C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0077658CCDA142E59BD47C633C857A63AFCC9C32FFF5CB37C1C56BF2F96F2D0A2EA1994B7D6CACF3B03C4ED36F678A86BCA10667255B7B83E7E795A0CF1472846CD62BDE14A5D2603D8ED914644787C0451DE326B4FCACF7F327447D2FA21FDD160D95DD9AB74909781368B79225FA261585F5F1DD6DEA360110E86F8380B8B1E2 +mr.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. d2WMzaFC5ZvUfGM8hXpjr8ycMv/1yzfBxWvy+W8tCi6hmUt9bKzzsDxO029nioa8oQZnJVt7g+fnlaDPFHKEbNYr3hSl0mA9jtkUZEeHwEUd4ya0/Kz38ydEfS+iH90WDZXdmrdJCXgTaLeSJfomFYX18d1t6jYBEOhvg4C4seI= ;{id = 62298} +046D7230310C74797065732D7369676E6564027762087369646E6C616273026E6C00000900010000003C0024066D726E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mr01.types-signed.wb.sidnlabs.nl. 60 IN MR mrname.types-signed.wb.sidnlabs.nl. +046D7230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003619B48BD4C137D18DF7D40B68F3B43568F46249202A98F0AEBBE124E07993CA4F33CC17D04FBFC74B594F203D8CE2B6710A56D16021C43A6F32F4C00D0A0602A3F2631917EEDC572B11E1ADBD3975E3CA7C975138819C2CED5E6D0A381CF6A0CF3345EA9A7444D71C2DA6B218491E0AF0AF0A36027D36704256E33C99CE4521 +mr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Nhm0i9TBN9GN99QLaPO0NWj0YkkgKpjwrrvhJOB5k8pPM8wX0E+/x0tZTyA9jOK2cQpW0WAhxDpvMvTADQoGAqPyYxkX7txXKxHhrb05dePKfJdROIGcLO1ebQo4HPagzzNF6pp0RNccLaayGEkeCvCvCjYCfTZwQlbjPJnORSE= ;{id = 62298} +046D7230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D7230320C74797065732D7369676E6564027762087369646E6C616273026E6C000006004000000003 +mr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mr02.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +046D7230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00478637D403C323DF3B801E3C40BBDA18D9E02ABF93E850EC7EE90D076921B838E00BA668C829FFCC7D37FDCB8E2737FB3AF8249B9066A7A5D1F3DB622A307917A5F9F928321F21A57E5BD2534DDF7CFF5ACC15EE240DC3B43C6704CADAE3439C98D17A708BE316D1BFB38F2ED62C8671E0D8B0952D816BD2277D33C5F7592E26 +mr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. R4Y31APDI987gB48QLvaGNngKr+T6FDsfukNB2khuDjgC6ZoyCn/zH03/cuOJzf7Ovgkm5Bmp6XR89tiKjB5F6X5+SgyHyGlflvSU03ffP9azBXuJA3DtDxnBMra40OcmNF6cIvjFtG/s48u1iyGceDYsJUtgWvSJ30zxfdZLiY= ;{id = 62298} +046D7230320C74797065732D7369676E6564027762087369646E6C616273026E6C00000900010000003C000100 +mr02.types-signed.wb.sidnlabs.nl. 60 IN MR . +046D7230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001C8B4D5C345AEC9A7C43DD44F66E2BED6C42AC9857891E07BE2D649E754B3BDF2B4EE2EE90DB60092787B3670DD62B88A5A5CB69D77C85A01905E2BE3B9668F4CEDB685F901F43A4705C34C1A68A8B1627B04003FC06607E82B7D2A68E965899623F6D53E51D88850CC48C5BC8DAD40DF7FA4BD62B2986386B35676F085197E1 +mr02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HItNXDRa7Jp8Q91E9m4r7WxCrJhXiR4Hvi1knnVLO98rTuLukNtgCSeHs2cN1iuIpaXLadd8haAZBeK+O5Zo9M7baF+QH0OkcFw0waaKixYnsEAD/AZgfoK30qaOlliZYj9tU+UdiIUMxIxbyNrUDff6S9YrKYY4azVnbwhRl+E= ;{id = 62298} +046D7230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100028026D780C74797065732D7369676E6564027762087369646E6C616273026E6C000006004000000003 +mr02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mx.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +046D7230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002C776E37CBA1FFA37C542A2B5BC77FC50379C59CD7A4E9B7D7A378A1D06BB2D259ED0F4E0F4648BC673AF8455435D2E79E833B87CDEF64C5BB0B42839ACE1C6565E2A3F582F33A01444D67CE64720207370C87B269A1E93B0BDFE4995CB3AE7B183E54C37F7317E249B6725B27564AF90BE3D555E49FE274162FF8C4621E2CD7 +mr02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LHduN8uh/6N8VCorW8d/xQN5xZzXpOm316N4odBrstJZ7Q9OD0ZIvGc6+EVUNdLnnoM7h83vZMW7C0KDms4cZWXio/WC8zoBRE1nzmRyAgc3DIeyaaHpOwvf5Jlcs657GD5Uw39zF+JJtnJbJ1ZK+Qvj1VXkn+J0Fi/4xGIeLNc= ;{id = 62298} +026D780C74797065732D7369676E6564027762087369646E6C616273026E6C00000F00010000003C002E000A0E6D61696C646F65736E74776F726B0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mx.types-signed.wb.sidnlabs.nl. 60 IN MX 10 maildoesntwork.types-signed.wb.sidnlabs.nl. +026D780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000F08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000E83AAE736148C3E5C0800C673F617BAB0CB1A25C843BB1AAA3BBB2D2535F1C9F6FD35EA14B044A24A80EEF27160DBEFCD4F2F52C69439F5B4A6B37E24728A1D64D59DC82888291994AE4302D58DDCE4EDAF99DA1C1FD71874243C0E624E8ADB82FC9415C86E7C7936AEF27E67AC262869FEF59989414EB4FB4337DCB111DBF8 +mx.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DoOq5zYUjD5cCADGc/YXurDLGiXIQ7saqju7LSU18cn2/TXqFLBEokqA7vJxYNvvzU8vUsaUOfW0prN+JHKKHWTVncgoiCkZlK5DAtWN3OTtr5naHB/XGHQkPA5iTorbgvyUFchufHk2rvJ+Z6wmKGn+9ZmJQU60+0M33LER2/g= ;{id = 62298} +026D780C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A046D7830310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000100000003 +mx.types-signed.wb.sidnlabs.nl. 3600 IN NSEC mx01.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +026D780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009D10FC9E30258366DD6ABA74A55A5C8DF204B429A6191B191BD058E52E8BEE92081B0919333B92FBD27DF1776A844F90E2C379DB3915A0253920B6D5E51B0E4BBB858FADFE9782A4E94AC5FBFDC2018818BDEC79F109E2523FA247C358983C0F301226DB58CAD29C8EE629E136AEDA6E293E6F45793D9B9059C3DF9D2C63551F +mx.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nRD8njAlg2bdarp0pVpcjfIEtCmmGRsZG9BY5S6L7pIIGwkZMzuS+9J98XdqhE+Q4sN52zkVoCU5ILbV5RsOS7uFj63+l4Kk6UrF+/3CAYgYvex58QniUj+iR8NYmDwPMBIm21jK0pyO5inhNq7abik+b0V5PZuQWcPfnSxjVR8= ;{id = 62298} +046D7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00000F00010000003C0024000A046D61696C0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +mx01.types-signed.wb.sidnlabs.nl. 60 IN MX 10 mail.types-signed.wb.sidnlabs.nl. +046D7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000F08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A86C1132A50A84C3913B75996FC8C4CD142F7E2B916D9180B6D0C81001C6C5B4B021FF3F6A0F20637CDF1509DA8347BF5DCAA16E28D9B80806BBCA8FB337AD81935DC1A110FCCCC342D6FB62ABAF989A57D8B004D10DB425FBA5AA0EA7D6E6C83AA343B0BF5FFA789D423E1D01E7DF9A2716E680BE83EFC04C64AEB0D7198A77 +mx01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. qGwRMqUKhMORO3WZb8jEzRQvfiuRbZGAttDIEAHGxbSwIf8/ag8gY3zfFQnag0e/XcqhbijZuAgGu8qPszetgZNdwaEQ/MzDQtb7YquvmJpX2LAE0Q20Jfulqg6n1ubIOqNDsL9f+nidQj4dAeffmicW5oC+g+/ATGSusNcZinc= ;{id = 62298} +046D7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B056E617074720C74797065732D7369676E6564027762087369646E6C616273026E6C000006000100000003 +mx01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +046D7830310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003C3CCCEDF93B97506A9847EF4C77FA4343EE2153409259EF19840F5B0F7665895EAB26AEA21DE98447D80A49617AE19955FB489EB01695360011291746E18F7E5A113140E010BB89A3FFF4308C35989051F3DC4DC4122CB35D195B0B698D22AD8B199BE535D58EB26536D1633C8FE25EB90D42C698013F319C763DE94940A92E +mx01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PDzM7fk7l1BqmEfvTHf6Q0PuIVNAklnvGYQPWw92ZYleqyauoh3phEfYCklheuGZVftInrAWlTYAESkXRuGPfloRMUDgELuJo//0MIw1mJBR89xNxBIss10ZWwtpjSKtixmb5TXVjrJlNtFjPI/iXrkNQsaYAT8xnHY96UlAqS4= ;{id = 62298} +056E617074720C74797065732D7369676E6564027762087369646E6C616273026E6C00002300010000003C003F00640064017308687474702B6C407200056E617074720B7265706C6163656D656E740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +naptr.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 100 100 "s" "http+l@r" "" naptr.replacement.types-signed.wb.sidnlabs.nl. +056E617074720C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007D709F918305386C15999995B7D9C850918778642152A1AECDB0ED26E6211D32A6C160E9404B743C1F7220ECAF25C8C21AD69372B11CDB3EB11F89FE8116F9EDA37CC41C8536A935422B2B18284E6A586E6D76D5EFB470466D3521A3D3E8125781254E34136F3419F71EAD8048FC7610F96D13D115BE23A64FC104488602F3E3 +naptr.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fXCfkYMFOGwVmZmVt9nIUJGHeGQhUqGuzbDtJuYhHTKmwWDpQEt0PB9yIOyvJcjCGtaTcrEc2z6xH4n+gRb57aN8xByFNqk1QisrGChOalhubXbV77RwRm01IaPT6BJXgSVONBNvNBn3Hq2ASPx2EPltE9EVviOmT8EESIYC8+M= ;{id = 62298} +056E617074720C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D076E6170747230310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000001003 +naptr.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr01.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +056E617074720C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008F72EBD35A0EEE36E8DF434B927FE5F7018E5534A4DBE9DFC5650DC3B72C77C45C52847D96B90B61A84FEE454333020BF2C1AC4F1B14FDD56B004F84BBB357C26974EAE5E8FAB86CF9FF648614566DBE86BF813D72525325B8E568A8B0B8ABA518089AC7F62DE3D6A9236AC59F27D139C42359E3D3E0F86199859203B739F49D +naptr.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. j3Lr01oO7jbo30NLkn/l9wGOVTSk2+nfxWUNw7csd8RcUoR9lrkLYahP7kVDMwIL8sGsTxsU/dVrAE+Eu7NXwml06uXo+rhs+f9khhRWbb6Gv4E9clJTJbjlaKiwuKulGAiax/Yt49apI2rFnyfROcQjWePT4PhhmYWSA7c59J0= ;{id = 62298} +076E6170747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002300010000003C00080000000000000000 +naptr01.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 0 0 "" "" "" . +076E6170747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A6015315625DC63DA865A9E2734B06E021517623CA635DA025BA678AF42801C961BA508563679A4C7DC2E11BD503BAE227933CF7D702084664AC00F48677C5A90064612A9DCD38171E9E9073899EE93E95589FB87576700FA291E6DF8AB234C119914BB30BA47EF4A273210DC30529F705A7AF189922A3956D7F4FD7FC5AE798 +naptr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. pgFTFWJdxj2oZanic0sG4CFRdiPKY12gJbpnivQoAclhulCFY2eaTH3C4RvVA7riJ5M899cCCEZkrAD0hnfFqQBkYSqdzTgXHp6Qc4me6T6VWJ+4dXZwD6KR5t+KsjTBGZFLswukfvSicyENwwUp9wWnrxiZIqOVbX9P1/xa55g= ;{id = 62298} +076E6170747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000001003 +naptr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC naptr02.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +076E6170747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B9E57CD3A00F82157DA43373BC5ACBF33E89A1B2B4CF114BE33F1083AA0E70D404BAC06243857E07191E7546108529FC88F6665FB3191CC4450821D3D9A8FF58C4B09DBF632D94A2D1B182EA52BBDAF176349A4A82C4597A37011EF1346E256FD6C2ADA919D1C8EF6BA3F68F5670EFAD27FD949148899FB0FF57A8DDBBE3B85B +naptr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ueV806APghV9pDNzvFrL8z6JobK0zxFL4z8Qg6oOcNQEusBiQ4V+BxkedUYQhSn8iPZmX7MZHMRFCCHT2aj/WMSwnb9jLZSi0bGC6lK72vF2NJpKgsRZejcBHvE0biVv1sKtqRnRyO9ro/aPVnDvrSf9lJFIiZ+w/1eo3bvjuFs= ;{id = 62298} +076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002300010000003C001DFFFFFFFF06626C7572676805626C6F726606626C6C6C626203666F6F00 +naptr02.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo. +076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002300010000003C001DFFFFFFFF06626C7572676805626C6F726606626C6C6C626203666F6F00 +naptr02.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo. +076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003A80331F59470338C74C7BC3C87EF2FA8651E1CB35719915F6B17F301B0017D9B6A038D2B00831C55A4EC45C4AF7716BB3AADC6791A928DED6A3C2E8F2ADD85516F5857491CFC15F518C6E2FD3835C964E70C06297AF28A700ADFCE73ABA41851DD4356EB944C9939084BEA8CAD76C6B9C33A79E97AC2A5176AB6E5F34743B33 +naptr02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OoAzH1lHAzjHTHvDyH7y+oZR4cs1cZkV9rF/MBsAF9m2oDjSsAgxxVpOxFxK93Frs6rcZ5GpKN7Wo8Lo8q3YVRb1hXSRz8FfUYxuL9ODXJZOcMBil68opwCt/Oc6ukGFHdQ1brlEyZOQhL6oytdsa5wzp56XrCpRdqtuXzR0OzM= ;{id = 62298} +076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029036E69640C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000001003 +naptr02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC nid.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +076E6170747230320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00771231AA7D7B77FC30B7F238621B7E70767DB7B233F61AA628D583B002EF204B8C3DEDC299D43A5FF9E00B82C2467F3A7FDB240071EB29CE95CC893E60E1C6648F7AC42CAB961586F0D5ADD356D12DDC3597ECBFB5E1587860F05560C10C0D540E674CDEB9E52C1A59542132DE1E52BD739CD7B9DC8C8E360AF9DF9612C9B26F +naptr02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dxIxqn17d/wwt/I4Yht+cHZ9t7Iz9hqmKNWDsALvIEuMPe3CmdQ6X/ngC4LCRn86f9skAHHrKc6VzIk+YOHGZI96xCyrlhWG8NWt01bRLdw1l+y/teFYeGDwVWDBDA1UDmdM3rnlLBpZVCEy3h5SvXOc17ncjI42CvnflhLJsm8= ;{id = 62298} +036E69640C74797065732D7369676E6564027762087369646E6C616273026E6C00006800010000003C000A000A0094019801520169 +nid.types-signed.wb.sidnlabs.nl. 60 IN NID 10 0094:0198:0152:0169 +036E69640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0025627D858D06C3BD42EE062F18A51A03B18E71470CDFBC080FA85576FDEAC46791D4F2AA6CFA3C8B6ADB1B42F449D7A085C4711C990A001C7DA3B5C415EEB5D5E7B91C4F0012EFF7BB9639C1D49CD5F74611985B6A11EED2F1F9ADC87321984A7848FCCC0A9E0E8469EBA6E168473A54E07C6444DA39B160FD6C32398766B081 +nid.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. JWJ9hY0Gw71C7gYvGKUaA7GOcUcM37wID6hVdv3qxGeR1PKqbPo8i2rbG0L0SdeghcRxHJkKABx9o7XEFe611ee5HE8AEu/3u5Y5wdSc1fdGEZhbahHu0vH5rchzIZhKeEj8zAqeDoRp66bhaEc6VOB8ZETaObFg/WwyOYdmsIE= ;{id = 62298} +036E69640C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100033056E696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000080 +nid.types-signed.wb.sidnlabs.nl. 3600 IN NSEC ninfo.types-signed.wb.sidnlabs.nl. RRSIG NSEC NID +036E69640C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002355971859ACDABB66B00BDF3A048C199A2752159B0CE8483BB9B487EA1A90AA8D4DBB34265BAFCC5FAC26BCE52469E661DC59DC3EEA3F918368C0E3CB4707320F7A0412B099170C1497C60DF68936F1338BFC8D61975BC12958D34F9788B59F49ADFF3A4048CB1C7AB6FC06C2390231398725701D8514875FA36DEDD1A3E85D +nid.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. I1WXGFms2rtmsAvfOgSMGZonUhWbDOhIO7m0h+oakKqNTbs0JluvzF+sJrzlJGnmYdxZ3D7qP5GDaMDjy0cHMg96BBKwmRcMFJfGDfaJNvEzi/yNYZdbwSlY00+XiLWfSa3/OkBIyxx6tvwGwjkCMTmHJXAdhRSHX6Nt7dGj6F0= ;{id = 62298} +056E696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00003800010000003C001B1A54686973207A6F6E65206973206578706572696D656E74616C2E +ninfo.types-signed.wb.sidnlabs.nl. 60 IN TYPE56 \# 27 1A54686973207A6F6E65206973206578706572696D656E74616C2E +056E696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0010DDA8F8BDB9541F905C47FAB758667C4C952BC6687191FB39EC8B85CD76AA77298A46A6DFD3AADF05F4568C142054A211A3188610B9A756BBDE9DA4E30EE1ABB615BC7D10FFB82DF5003EE3710E66A3655E2B44730F024DB416ABA1DBEBA2C3F41449B3822244A9F5F073435B3A75D248E414A3B2F61B2DBC5603DC7C1945D2 +ninfo.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TYPE56 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. EN2o+L25VB+QXEf6t1hmfEyVK8ZocZH7OeyLhc12qncpikam39Oq3wX0VowUIFSiEaMYhhC5p1a73p2k4w7hq7YVvH0Q/7gt9QA+43EOZqNlXitEcw8CTbQWq6Hb66LD9BRJs4IiRKn18HNDWzp10kjkFKOy9hstvFYD3HwZRdI= ;{id = 62298} +056E696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C046E7361700C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030080 +ninfo.types-signed.wb.sidnlabs.nl. 3600 IN NSEC nsap.types-signed.wb.sidnlabs.nl. RRSIG NSEC TYPE56 +056E696E666F0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B6691341982A6AD71BE177F79A60E1164C135355B9838AE6F63C000C6F42D8120CD979EC5AB6DDB61E9B4F287AB71F2744E9A0FE1B58AFEF4906EE24081D020390644E45B6336C9A241B20451D46D3839C4878E6BA1A22B828B04A8DC4CEDBDA45ADB5D5C06891EB024747D64BF1F3C3558C6B19DDF8175EE598ED596EE5D4B8 +ninfo.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tmkTQZgqatcb4Xf3mmDhFkwTU1W5g4rm9jwADG9C2BIM2XnsWrbdth6bTyh6tx8nROmg/htYr+9JBu4kCB0CA5BkTkW2M2yaJBsgRR1G04OcSHjmuhoiuCiwSo3EztvaRa211cBokesCR0fWS/Hzw1WMaxnd+Bde5ZjtWW7l1Lg= ;{id = 62298} +046E7361700C74797065732D7369676E6564027762087369646E6C616273026E6C00001600010000003C0003012345 +nsap.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x012345 +046E7361700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001608050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004F7D97EC839DDB784F81AE1AA6DAAD49268E22784F52D3EB42E6742BBD1784B7911C02D01BAE5C140F41B1E887AE6D9FD23A062B53A9E7ED38D6B2940441485720A3C33CF71811E81D20E244E9CDBA56D4A501A792705BD73C77433DFB546CC8D8D25CD63A91761DE9A9953AC01BF367A1DF0C4CAF4A4CA1E21005271F5AE596 +nsap.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. T32X7IOd23hPga4aptqtSSaOInhPUtPrQuZ0K70XhLeRHALQG65cFA9BseiHrm2f0joGK1Op5+041rKUBEFIVyCjwzz3GBHoHSDiROnNulbUpQGnknBb1zx3Qz37VGzI2NJc1jqRdh3pqZU6wBvzZ6HfDEyvSkyh4hAFJx9a5ZY= ;{id = 62298} +046E7361700C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C066E73617030310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000002000003 +nsap.types-signed.wb.sidnlabs.nl. 3600 IN NSEC nsap01.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +046E7361700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B57148523D96FB94FD47D42019D6E330DF8FAEE7089010C0F9815B22AF881929A1D5A0C7E5FBB3C5BF9AE184F679C90FFA61EDAAC76EC7A5D8CC86C0A5018B6C26C003C2358E090A7AB2D1E5D5B8AA3802907CA2A28B1C5557AE821EC35036CB8316164544A5748C5037CC347D38DF4FDD86C107498E9F8278F5E0BDEBB8DDDE +nsap.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tXFIUj2W+5T9R9QgGdbjMN+PrucIkBDA+YFbIq+IGSmh1aDH5fuzxb+a4YT2eckP+mHtqsdux6XYzIbApQGLbCbAA8I1jgkKerLR5dW4qjgCkHyiooscVVeugh7DUDbLgxYWRUSldIxQN8w0fTjfT92GwQdJjp+CePXgveu43d4= ;{id = 62298} +066E73617030310C74797065732D7369676E6564027762087369646E6C616273026E6C00001600010000003C001447000580005A0000000001E133FFFFFF00016100 +nsap01.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x47000580005A0000000001E133FFFFFF00016100 +066E73617030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001608050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00115CEC1D59D29C102FD901D3EE1B6862F1F6EC9C6DD8D60D7C08CD75C11F9C8C67C78A9695233DD5A4E9506A81CFCEB2EF2F3B6B90A71FE2EAEE6E5FEEF537736E0BAD318CCECBB472C32CBE014CCE1E88709CF63F2D9ADB656F86D170C02DA98CAC23B5DC1851715B42EE050042DFEA8E4D61A062B076F92A2FA394699DAAAE +nsap01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. EVzsHVnSnBAv2QHT7htoYvH27Jxt2NYNfAjNdcEfnIxnx4qWlSM91aTpUGqBz86y7y87a5CnH+Lq7m5f7vU3c24LrTGMzsu0csMsvgFMzh6IcJz2Py2a22VvhtFwwC2pjKwjtdwYUXFbQu4FAELf6o5NYaBisHb5Ki+jlGmdqq4= ;{id = 62298} +066E73617030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0570747230310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000002000003 +nsap01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC ptr01.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +066E73617030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009875879E0F93B9331FF60C80E6DF1D5EB1B9AF228E8AE9777B8C2811FE4F893E3147B608957A15E6975370255D20E20A27A38F656F9ED417DEA7B3CC14FE96B508D67DD248AB93DACCB76399E92962C4D43A7967736F22F50165BB069ECDEA0BD4EC5F175116C91AFF1A8B6A256A9ADF302D957F1F4E165910252D147EEE97EE +nsap01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. mHWHng+TuTMf9gyA5t8dXrG5ryKOiul3e4woEf5PiT4xR7YIlXoV5pdTcCVdIOIKJ6OPZW+e1Bfep7PMFP6WtQjWfdJIq5PazLdjmekpYsTUOnlnc28i9QFluwaezeoL1OxfF1EWyRr/GotqJWqa3zAtlX8fThZZECUtFH7ul+4= ;{id = 62298} +0570747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00000C00010000003C001D0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +ptr01.types-signed.wb.sidnlabs.nl. 60 IN PTR types-signed.wb.sidnlabs.nl. +0570747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000C08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002212DF6A2113C795CCCFC7DB9DB6F6FD11FC5FDDCAD99FE3BF8F2E65FE38FA6681F2F5D72F14D4ED275D9DCEEDCEAB0212EE2603FBDB87F5D8B076550914B6A0460AD381D15D36FF7DD1D3CBAD1604E14DC71D10C7602452C406C0018339EE57010EA4B2C9D3BEA9AFFED323EBE026503D23720D6673E9E83886D17384F4CC39 +ptr01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. IhLfaiETx5XMz8fbnbb2/RH8X93K2Z/jv48uZf44+maB8vXXLxTU7Sddnc7tzqsCEu4mA/vbh/XYsHZVCRS2oEYK04HRXTb/fdHTy60WBOFNxx0Qx2AkUsQGwAGDOe5XAQ6kssnTvqmv/tMj6+AmUD0jcg1mc+noOIbRc4T0zDk= ;{id = 62298} +0570747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E1000280270780C74797065732D7369676E6564027762087369646E6C616273026E6C000006000800000003 +ptr01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC px.types-signed.wb.sidnlabs.nl. PTR RRSIG NSEC +0570747230310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00773F1B78FEE91FAC301BE3345573AB64CD0F43FEB5AD0F2A29494761430710FCB41C8A713E54217159E581D030AC1836B44FF6FEFA4464F11714F5BDFB0A3E2107CBE3CB003DE87B6345C5A3FDB489E6A8C2519270969EE9B8FC6DDEA4EF25C12F35CF26F8B2EFD04AE4AB9241ACFF9D6A2D93A7508FE908DE1C0BF1C58CF26C +ptr01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dz8beP7pH6wwG+M0VXOrZM0PQ/61rQ8qKUlHYUMHEPy0HIpxPlQhcVnlgdAwrBg2tE/2/vpEZPEXFPW9+wo+IQfL48sAPeh7Y0XFo/20ieaowlGScJae6bj8bd6k7yXBLzXPJviy79BK5KuSQaz/nWotk6dQj+kI3hwL8cWM8mw= ;{id = 62298} +0270780C74797065732D7369676E6564027762087369646E6C616273026E6C00001A00010000003C004B000A066D61703832320C74797065732D7369676E6564027762087369646E6C616273026E6C00076D6170783430300C74797065732D7369676E6564027762087369646E6C616273026E6C00 +px.types-signed.wb.sidnlabs.nl. 60 IN PX 10 map822.types-signed.wb.sidnlabs.nl. mapx400.types-signed.wb.sidnlabs.nl. +0270780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AD9AFFCA32BA4C9A230EC209F35248E3C9D56062014C42FE0ABC4573E56249E95DE1A6E34BB2573DB072FAA5A76FD2CAA90B544D49DEB3D34EB09575B1E2AE8F77F2E5D91819B12F6BF9B5219C4705A33D742BEFCC23B74AFCC8FB23B81B3B1B56841806DC7D9587AF5861674AEAF0ABED5F7BBC39EA77AB82F34C9402077DA2 +px.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rZr/yjK6TJojDsIJ81JI48nVYGIBTEL+CrxFc+ViSeld4abjS7JXPbBy+qWnb9LKqQtUTUnes9NOsJV1seKuj3fy5dkYGbEva/m1IZxHBaM9dCvvzCO3SvzI+yO4GzsbVoQYBtx9lYevWGFnSurwq+1fe7w56nergvNMlAIHfaI= ;{id = 62298} +0270780C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04726B65790C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000200003 +px.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rkey.types-signed.wb.sidnlabs.nl. PX RRSIG NSEC +0270780C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00975F55577CF9128482A354124AD181AB18C4A87963CD4C9846EB7D488C9FCD06763757BFC30F83EFD690A754192F478CDC0AE68F12B1087E9E2BBD32F6345DDEC67CCA5F4FC8342172A8DD82D19D3C9CBDB8EC66F4545C0491D3B5B4609BF86C5908EE21BB4DB9A21715F32B9EC299ED29B3ECD0952D71AD0C4693C6EFC7FAAA +px.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l19VV3z5EoSCo1QSStGBqxjEqHljzUyYRut9SIyfzQZ2N1e/ww+D79aQp1QZL0eM3ArmjxKxCH6eK70y9jRd3sZ8yl9PyDQhcqjdgtGdPJy9uOxm9FRcBJHTtbRgm/hsWQjuIbtNuaIXFfMrnsKZ7Smz7NCVLXGtDEaTxu/H+qo= ;{id = 62298} +04726B65790C74797065732D7369676E6564027762087369646E6C616273026E6C00003900010000003C00880000010803010001D7B53C9C988E7476474466CC3BA260A461FE5764BF4CE754E6307E3B0764D2E0D1A84B23E52CBE08419A29A851219AF5DE8291DDDDA1D6C76315298C562C25F75EABEAA2998163AC6F1B500D810F6B8931A835FD01BB0D3529DE31DA574435DEBFFCDBD404974B23ACB201C42EF04A5AAED3275F633E555FB5F403C8B5BC39BD +rkey.types-signed.wb.sidnlabs.nl. 60 IN TYPE57 \# 136 0000010803010001D7B53C9C988E7476474466CC3BA260A461FE5764BF4CE754E6307E3B0764D2E0D1A84B23E52CBE08419A29A851219AF5DE8291DDDDA1D6C76315298C562C25F75EABEAA2998163AC6F1B500D810F6B8931A835FD01BB0D3529DE31DA574435DEBFFCDBD404974B23ACB201C42EF04A5AAED3275F633E555FB5F403C8B5BC39BD +04726B65790C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0072C9B63B54B7E59C175D2B9CD66D9F242BC6B501F602EF4A07035CEC492227F36C675848605200D5CEBC940CE9C333BA2D5ECA10AD9A92D3D0A4E7610585E093D40720087311D3B9E5040F890E6E1D34C422583086E6893A82FB9AC2670AD496262151558045918EBE8DBDB7BD0D0365EABC99DC89E65F36652F143E0CBD8981 +rkey.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TYPE57 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. csm2O1S35ZwXXSuc1m2fJCvGtQH2Au9KBwNc7EkiJ/NsZ1hIYFIA1c68lAzpwzO6LV7KEK2aktPQpOdhBYXgk9QHIAhzEdO55QQPiQ5uHTTEIlgwhuaJOoL7msJnCtSWJiFRVYBFkY6+jb23vQ0DZeq8mdyJ5l82ZS8UPgy9iYE= ;{id = 62298} +04726B65790C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A0272700C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030040 +rkey.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rp.types-signed.wb.sidnlabs.nl. RRSIG NSEC TYPE57 +04726B65790C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C39087F2C3A4D58DBFFFB0DCC824CCEDA7FD36F85126E40E4DF826BFD5EED2985902074815C6254FDD21F8079B03B0C04694FCE4396E8872A29F50BC9644B4693CE7DC61D45E95F40AF7719551B1CC878DCA65AB2872237BE79959FD56BB2F48AEC065312006DBF2213683D6B399948993461761D727DC0BC8EA85389CAEC83E +rkey.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. w5CH8sOk1Y2//7DcyCTM7af9NvhRJuQOTfgmv9Xu0phZAgdIFcYlT90h+AebA7DARpT85DluiHKin1C8lkS0aTzn3GHUXpX0CvdxlVGxzIeNymWrKHIje+eZWf1Wuy9IrsBlMSAG2/IhNoPWs5mUiZNGF2HXJ9wLyOqFOJyuyD4= ;{id = 62298} +0272700C74797065732D7369676E6564027762087369646E6C616273026E6C00001100010000003C002200037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +rp.types-signed.wb.sidnlabs.nl. 60 IN RP . txt.types-signed.wb.sidnlabs.nl. +0272700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D2601452142C09B0AE02923437DD34B11F77C013A638DCC6FE653EF4E46D31FAC3760411154DF1D12587EBFDDAB17FD187AD2F5A05C9AAE383F070D7C9086DC3299FFF10FCFA3B1170B3E4A54E199FE157EC2C6D8ABA5C845ACF05BE7BC20937A17780D5E0E4757CA57F1E2B7C6F83085E0FB4BAE0AA59D98D6A3DD456881586 +rp.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0mAUUhQsCbCuApI0N900sR93wBOmONzG/mU+9ORtMfrDdgQRFU3x0SWH6/3asX/Rh60vWgXJquOD8HDXyQhtwymf/xD8+jsRcLPkpU4Zn+FX7CxtirpchFrPBb57wgk3oXeA1eDkdXylfx4rfG+DCF4PtLrgqlnZjWo91FaIFYY= ;{id = 62298} +0272700C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04727030310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000040000003 +rp.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rp01.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +0272700C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00316C9D51ECECA8EC86EB575D60F6C81CAABB9C7B84C8613F2807C21E16C4C4770E6EFE31D4924B79786C3DE655F6986EBDC03F44315E4247AA35CA9BC3FB6DD247CD34908C8F01707030103909DB669EE5C82055FF9AE004010DC4AE0E6F1F00373F57F1A9939B2CBB1664F1622D16939F734BF4D3CE9142F239CC5B155B6366 +rp.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MWydUezsqOyG61ddYPbIHKq7nHuEyGE/KAfCHhbExHcObv4x1JJLeXhsPeZV9phuvcA/RDFeQkeqNcqbw/tt0kfNNJCMjwFwcDAQOQnbZp7lyCBV/5rgBAENxK4Obx8ANz9X8amTmyy7FmTxYi0Wk59zS/TTzpFC8jnMWxVbY2Y= ;{id = 62298} +04727030310C74797065732D7369676E6564027762087369646E6C616273026E6C00001100010000003C004F0A6D626F782D646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00097478742D646E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +rp01.types-signed.wb.sidnlabs.nl. 60 IN RP mbox-dname.types-signed.wb.sidnlabs.nl. txt-dname.types-signed.wb.sidnlabs.nl. +04727030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000DFD1CB6DA5B8546EB42253AC4F94477B5BCA1F4086DF2893CC6EAE39EEF41D9814AC8A2A1A8E161A31C5F7C6D9BCFBD1AFBA0AB031EE220E929B0EC3794DA82DFADAAECBDCB1CA11E34E5AD2F1D83CACF2EEC6F24C0BC195F6960911E74A991A0BA22A914056F5DBDD12960FDEF5CBA054AEFA6FA2F7E8772BD334BCE9AAD5F +rp01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Df0cttpbhUbrQiU6xPlEd7W8ofQIbfKJPMbq457vQdmBSsiioajhYaMcX3xtm8+9GvugqwMe4iDpKbDsN5Tagt+tquy9yxyhHjTlrS8dg8rPLuxvJMC8GV9pYJEedKmRoLoiqRQFb1290Slg/e9cugVK76b6L36Hcr0zS86arV8= ;{id = 62298} +04727030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04727030320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000040000003 +rp01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rp02.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +04727030310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003BB4B3B1624EBAAC452D219C41BD275CA3FCE626F3F1B1A0586644F64D27E35F49687C551507DC46A73312B5343224877EA2A703988459101F8F43039A0D6F03125D2967BF0A8944960AB5E3A531E0B5D0648743606C051494A5A04E01B5621904D281E63C24D8FD3550B6DF60B544082F5CFA78645316E482CCD220C267FFC9 +rp01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. O7SzsWJOuqxFLSGcQb0nXKP85ibz8bGgWGZE9k0n419JaHxVFQfcRqczErU0MiSHfqKnA5iEWRAfj0MDmg1vAxJdKWe/ColElgq146Ux4LXQZIdDYGwFFJSloE4BtWIZBNKB5jwk2P01ULbfYLVECC9c+nhkUxbkgszSIMJn/8k= ;{id = 62298} +04727030320C74797065732D7369676E6564027762087369646E6C616273026E6C00001100010000003C00020000 +rp02.types-signed.wb.sidnlabs.nl. 60 IN RP . . +04727030320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00CCB7C8E92D968D0379DF329F359873CD545DE5442D3936CF357BA423C5C2E9788E1E25DD998CC59B2E5FDFF22B00D8F15FCF5ADE87200C22F0A89C1EFA81B30E3C4432DC311270056314BA91FC400DEE6BD2F5FD3B36C749560BAE5D15D0AEE0B6D1B87F3896CE3DA8977E87417C1FAFDC71D3E6DFC7918C3583D85905A17EB7 +rp02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. zLfI6S2WjQN53zKfNZhzzVRd5UQtOTbPNXukI8XC6XiOHiXdmYzFmy5f3/IrANjxX89a3ocgDCLwqJwe+oGzDjxEMtwxEnAFYxS6kfxADe5r0vX9OzbHSVYLrl0V0K7gttG4fziWzj2ol36HQXwfr9xx0+bfx5GMNYPYWQWhfrc= ;{id = 62298} +04727030320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E1000280272740C74797065732D7369676E6564027762087369646E6C616273026E6C000006000040000003 +rp02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +04727030320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0067D65685F0DB2C958C91B8117E9CCF01162B590AA4ECD0C130D88566CBE825FB5BC48EA1B3DF9EC77E8BD4CAF49127E99F1A59B2AF5D7F073242A9CABF1E8D6297AAAFCB8B339368C90651725D76C3D510A4AC892CAF845483F8765BDC8F2A6E0EAB6B95DE79DC13DD2477AF6FA92893633F44A7593B34E88CF8B44FCF2CF5B3 +rp02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Z9ZWhfDbLJWMkbgRfpzPARYrWQqk7NDBMNiFZsvoJftbxI6hs9+ex36L1Mr0kSfpnxpZsq9dfwcyQqnKvx6NYpeqr8uLM5NoyQZRcl12w9UQpKyJLK+EVIP4dlvcjypuDqtrld553BPdJHevb6kok2M/RKdZOzTojPi0T88s9bM= ;{id = 62298} +0272740C74797065732D7369676E6564027762087369646E6C616273026E6C00001500010000003C0026000A067274686F73740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +rt.types-signed.wb.sidnlabs.nl. 60 IN RT 10 rthost.types-signed.wb.sidnlabs.nl. +0272740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009B46AB2E51455A0DC4B89F0C2DC14D0859D3F526537F1CDEF6623FE5E0BA28522CE28D6B42A5D3BE74753FAEBD7C26D58B7748731514943D969A1BBBEA2CF9D8B790ACDFC1CFF2E84031577875E474EA64FE48274395BEF744843F595EED66EA0CE9E742C362FA4D2CEB71C3F784268F3578517CB17CCFFECBF527FC84F8261C +rt.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. m0arLlFFWg3EuJ8MLcFNCFnT9SZTfxze9mI/5eC6KFIs4o1rQqXTvnR1P669fCbVi3dIcxUUlD2Wmhu76iz52LeQrN/Bz/LoQDFXeHXkdOpk/kgnQ5W+90SEP1le7WbqDOnnQsNi+k0s63HD94QmjzV4UXyxfM/+y/Un/IT4Jhw= ;{id = 62298} +0272740C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04727430310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000004000003 +rt.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt01.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +0272740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D3BDB0FB8F619CEDA6D53D82A694F14AFEFBA2AAA58D24417F1D7B66ABFD865FB8EBAB7002F3EAE45FE450618D8905B7063FFF2785A41E299A2889DA3C330B174BFC131FF44688F24FA2062C1FE56D260B7974C56882FE061EBE2B80BD9610D0A4E2CF8D79406DF7EB0A03B33E486D42179989E5CF07251F757C079733B93E7F +rt.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 072w+49hnO2m1T2CppTxSv77oqqljSRBfx17Zqv9hl+466twAvPq5F/kUGGNiQW3Bj//J4WkHimaKInaPDMLF0v8Ex/0RojyT6IGLB/lbSYLeXTFaIL+Bh6+K4C9lhDQpOLPjXlAbffrCgOzPkhtQheZieXPByUfdXwHlzO5Pn8= ;{id = 62298} +04727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00001500010000003C0031000011696E7465726D6564696174652D686F73740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +rt01.types-signed.wb.sidnlabs.nl. 60 IN RT 0 intermediate-host.types-signed.wb.sidnlabs.nl. +04727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0039D3DE5EF82B984705D0D4F8714C4EBBF21046C44DC7681BEABAD10A5F61BC7F49C298DACCD18BD8820A07E5EF04B7D3B622F82548805DF623D69DB3D48693AF7C956D1670C2BD7AEEFFC3D6D06764598187C377A716D23A2744A360831973EE26D6235C04FC289A5A42B6938F05F262A5CB5A41EB7B2D084DE1AE2BA0ACC009 +rt01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. OdPeXvgrmEcF0NT4cUxOu/IQRsRNx2gb6rrRCl9hvH9JwpjazNGL2IIKB+XvBLfTtiL4JUiAXfYj1p2z1IaTr3yVbRZwwr167v/D1tBnZFmBh8N3pxbSOidEo2CDGXPuJtYjXAT8KJpaQraTjwXyYqXLWkHrey0ITeGuK6CswAk= ;{id = 62298} +04727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A04727430320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000004000003 +rt01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC rt02.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +04727430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C7DDA07BDFC645F5A302E489C7A06E859B2E44E5B0267CD9F02B5149225801FCFD4D45CCA51C48E163200BFE9BCD1E22D53CAEF7FA3DAEFEA1C6BE44B6FFCEA5DE735BC717FBFF510B03FDF55C10A3C1E05F06DFBCB398E9E2A305A69BCF0B7DAF16C948BDDA9E58870ACF5FB8187B06DC441BB77EF7F8BB421CE486DB99D58F +rt01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. x92ge9/GRfWjAuSJx6BuhZsuROWwJnzZ8CtRSSJYAfz9TUXMpRxI4WMgC/6bzR4i1Tyu9/o9rv6hxr5Etv/Opd5zW8cX+/9RCwP99VwQo8HgXwbfvLOY6eKjBaabzwt9rxbJSL3anliHCs9fuBh7BtxEG7d+9/i7QhzkhtuZ1Y8= ;{id = 62298} +04727430320C74797065732D7369676E6564027762087369646E6C616273026E6C00001500010000003C0003FFFF00 +rt02.types-signed.wb.sidnlabs.nl. 60 IN RT 65535 . +04727430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00CF38E23A6A10153D6018A70C5E6EFB13E0A7D9A18F7686018E4AB6308D83995D981C08AA46B120063C4DBEF57345FDC268A8F77760FF84E905FE974DFD2675581AA4E7D2497C190A13FC23AF93601A450ADA079B30C4896C23117CF989674BC24C4AEDBD0F69F703675D6AF9ADD7E772EBF8CAA4C61263785E712FEC45AE411B +rt02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. zzjiOmoQFT1gGKcMXm77E+Cn2aGPdoYBjkq2MI2DmV2YHAiqRrEgBjxNvvVzRf3CaKj3d2D/hOkF/pdN/SZ1WBqk59JJfBkKE/wjr5NgGkUK2gebMMSJbCMRfPmJZ0vCTErtvQ9p9wNnXWr5rdfncuv4yqTGEmN4XnEv7EWuQRs= ;{id = 62298} +04727430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029037370660C74797065732D7369676E6564027762087369646E6C616273026E6C000006000004000003 +rt02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC spf.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +04727430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D075C82A28F2497BE3EDA86CA4E9B936AF818EF9D5CA2FD31BF37846C45231094E54776D96005BDE5C0A035D2559C1C3104D7456E8D447E8C3E30F1383ADCC5761EA2F9C22A013E65B5ADE131A9EF5C4E63AB1D5D0A86FCA198E00070075EA052C674898941F339DC4BC9C8E478DCA614B7C2E0C6F6E0BFAC96C24F1A20D1DC5 +rt02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0HXIKijySXvj7ahspOm5Nq+BjvnVyi/TG/N4RsRSMQlOVHdtlgBb3lwKA10lWcHDEE10VujUR+jD4w8Tg63MV2HqL5wioBPmW1reExqe9cTmOrHV0KhvyhmOAAcAdeoFLGdImJQfM53EvJyOR43KYUt8Lgxvbgv6yWwk8aINHcU= ;{id = 62298} +037370660C74797065732D7369676E6564027762087369646E6C616273026E6C00006300010000003C002625763D73706631202B6D7820613A636F6C6F2E6578616D706C652E636F6D2F3238202D616C6C +spf.types-signed.wb.sidnlabs.nl. 60 IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +037370660C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00456101C17F8C7C242E019E7BCEF46304F10E12B5BDBD3CC8A9EA293A79314F94FBA4B5A3AD6500B73A6D4C7C66678F014F021384989329FB671ACEB1AA116AC3502804EFB20A9C4F485BE01B1D562FA9C39A817FD9476DABC70A684921C9141BDE56C4A3F6AE44F2CB7703CB876C97D21A06FCC0ED0CE05ECAA7B6B84AC333B8 +spf.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SPF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. RWEBwX+MfCQuAZ57zvRjBPEOErW9vTzIqeopOnkxT5T7pLWjrWUAtzptTHxmZ48BTwIThJiTKftnGs6xqhFqw1AoBO+yCpxPSFvgGx1WL6nDmoF/2Udtq8cKaEkhyRQb3lbEo/auRPLLdwPLh2yX0hoG/MDtDOBeyqe2uErDM7g= ;{id = 62298} +037370660C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100030037372760C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00000000000300000000000010 +spf.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv.types-signed.wb.sidnlabs.nl. RRSIG NSEC SPF +037370660C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002B8E5E8F5123E78C9972420200C8AE7CED24336556387EC49BE8E120256388B45995019C453389EC418118AF4BE98E675B0CE57A8F10A6E8C10F5D1E8F1D5CA0C5FECC2D9F1CDF56254795D550DE097B613A5F80395A5DC0E1B0609B81B15248B55580DE89077632F98DF5F56BEA1994AC91A92C682320502709642FFC8473E6 +spf.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. K45ej1Ej54yZckICAMiufO0kM2VWOH7Em+jhICVjiLRZlQGcRTOJ7EGBGK9L6Y5nWwzleo8QpujBD10ejx1coMX+zC2fHN9WJUeV1VDeCXthOl+AOVpdwOGwYJuBsVJItVWA3okHdjL5jfX1a+oZlKyRqSxoIyBQJwlkL/yEc+Y= ;{id = 62298} +037372760C74797065732D7369676E6564027762087369646E6C616273026E6C00002100010000003C0030FFFFFFFFFFFF0C6F6C642D736C6F772D626F780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +srv.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +037372760C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00085086CEAD8365292BB1C6E0B44B384D8D45F91B05F0538A1A30B54C363DCC7EC9527C4227297B381EA4F5DB771F8323F6B922F16E1E63FFDECE8FEE3A7A87739D5620F0625BBAEE3C09094E748F43AF0FB601CEE18A34C9D57EF02A8A65D0F048DA3850FE34EFDA94A6AB18E577656BFEB27F401D19888B32E29B14FCB39401 +srv.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. CFCGzq2DZSkrscbgtEs4TY1F+RsF8FOKGjC1TDY9zH7JUnxCJyl7OB6k9dt3H4Mj9rki8W4eY//ezo/uOnqHc51WIPBiW7ruPAkJTnSPQ68PtgHO4Yo0ydV+8CqKZdDwSNo4UP4079qUpqsY5Xdla/6yf0AdGYiLMuKbFPyzlAE= ;{id = 62298} +037372760C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0573727630310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000004003 +srv.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv01.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +037372760C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00895639958555044C68F66485E9AB872540360A57BBF3C9F8C2B93692E2A18AF3ECC60F52D9BE8EE019D1755C807ECBDEF70284E99B22C73B9EBE3326F1BD3CA4D44DF0FDFA36DD6633ABE27E05F627B233D3D9285E2156F100A119A2BD2ABBDCA17899E49F6AAD8350CCEDEE1D91EA16B621A5F431F4F53612A0E087C5ED2E23 +srv.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iVY5lYVVBExo9mSF6auHJUA2Cle788n4wrk2kuKhivPsxg9S2b6O4BnRdVyAfsve9wKE6ZsixzuevjMm8b08pNRN8P36Nt1mM6vifgX2J7Iz09koXiFW8QChGaK9KrvcoXiZ5J9qrYNQzO3uHZHqFrYhpfQx9PU2EqDgh8XtLiM= ;{id = 62298} +0573727630310C74797065732D7369676E6564027762087369646E6C616273026E6C00002100010000003C000B00000000000003666F6F00 +srv01.types-signed.wb.sidnlabs.nl. 60 IN SRV 0 0 0 foo. +0573727630310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002CD4D5495F305C9CE1C2A7FA2D0D7C7EDD739D38BBBE1736D25B43A527EAAC30590B6DF509229D7C34BD37190B87271A53B373003D9109BC04FDC603E45DDC9F55C85B6D48A40564CD206F51739C79A5A648CA9C7E7BE0B4CBA3EFE81A7D262B291A74E3BBD3CF33E5D1BB47A9D609375E7C65D269F88F13BDE72D214133B29D +srv01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LNTVSV8wXJzhwqf6LQ18ft1znTi7vhc20ltDpSfqrDBZC231CSKdfDS9NxkLhycaU7NzAD2RCbwE/cYD5F3cn1XIW21IpAVkzSBvUXOceaWmSMqcfnvgtMuj7+gafSYrKRp047vTzzPl0btHqdYJN158ZdJp+I8TvectIUEzsp0= ;{id = 62298} +0573727630310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0573727630320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000004003 +srv01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC srv02.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +0573727630310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AE3F62146AB7244E19DAC2072E80F9E2EBAF5C4CFBCF6C0D25C7894FB45D290A55CA7DC5894B61F9A681FF0654BBAAF04145D6A141160898D5AEBD32DC0F884B1C2E28C5FC6A83097CCC197BCAA9C35BE17C63FF90171EEAAD6DB79DA04F218FE5A3F7AB2BC55E00CEEB2E851560F1C928C6A0955BA01C5843D843B082401EC6 +srv01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rj9iFGq3JE4Z2sIHLoD54uuvXEz7z2wNJceJT7RdKQpVyn3FiUth+aaB/wZUu6rwQUXWoUEWCJjVrr0y3A+ISxwuKMX8aoMJfMwZe8qpw1vhfGP/kBce6q1tt52gTyGP5aP3qyvFXgDO6y6FFWDxySjGoJVboBxYQ9hDsIJAHsY= ;{id = 62298} +0573727630320C74797065732D7369676E6564027762087369646E6C616273026E6C00002100010000003C0030FFFFFFFFFFFF0C6F6C642D736C6F772D626F780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +srv02.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +0573727630320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002EACB1753E92C2EF5D64E44E7116DAA402DEE878F690549F8B4E2330C3A580FDAE494958F6FB1F87FAE6787AA85FF6EA892B63246CC5BD3727FCC3102BEC9BB98443F970E9249F282C4ADB8F548EE52E8A29D001E96B0CC99FAFE7309016BC61FEE81400BD9B6BCC4612E136006520A1A3EF25141AEE15EE7B87766CC2C3AF78 +srv02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LqyxdT6Swu9dZOROcRbapALe6Hj2kFSfi04jMMOlgP2uSUlY9vsfh/rmeHqoX/bqiStjJGzFvTcn/MMQK+ybuYRD+XDpJJ8oLErbj1SO5S6KKdAB6WsMyZ+v5zCQFrxh/ugUAL2ba8xGEuE2AGUgoaPvJRQa7hXue4d2bMLDr3g= ;{id = 62298} +0573727630320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C0674616C696E6B0C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000004003 +srv02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC talink.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +0573727630320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0078DFBCD398516BE2BDEC0857EAACC870069AA1C21AB1647F59903CE3034401763449E8BCF2E37992DD9084266F46C5E1A1F88AEF0A4A918DFC11F03FDF3F4724D06C3AC0E66E8E6A6252446B1D7BB40B430E41B7EC4F340816AE0811C6B910117B593AC3AE96DF0D0C23BAA0765605CE0B81EBDCEF21B6D8504152295B5D4852 +srv02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eN+805hRa+K97AhX6qzIcAaaocIasWR/WZA84wNEAXY0Sei88uN5kt2QhCZvRsXhofiK7wpKkY38EfA/3z9HJNBsOsDmbo5qYlJEax17tAtDDkG37E80CBauCBHGuRARe1k6w66W3w0MI7qgdlYFzguB69zvIbbYUEFSKVtdSFI= ;{id = 62298} +0674616C696E6B0C74797065732D7369676E6564027762087369646E6C616273026E6C00003A00010000003C0020026830076578616D706C6503636F6D00026831076578616D706C6503636F6D00 +talink.types-signed.wb.sidnlabs.nl. 60 IN TALINK h0.example.com. h1.example.com. +0674616C696E6B0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000460664413F05EC3A1BBD570BF9B17975FD44CE4CDC4ADDCA56602F16A1E4D653AB55BB02F0C2BC9E575FA284AE1F6584A46CC20C541764B2A9613385BB0E26A9AEDD23BFF2199AF7859FF45BBAB1CC69AC79A069901F51C3BFBA08F94D6156AB3AC1111E0CE2CAD3EF69E3A014AD1C1B3CC752C2D3CEB64AD2E9AD2FFDF9FA4 +talink.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TALINK 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BGBmRBPwXsOhu9Vwv5sXl1/UTOTNxK3cpWYC8WoeTWU6tVuwLwwryeV1+ihK4fZYSkbMIMVBdksqlhM4W7Diaprt0jv/IZmveFn/RburHMaax5oGmQH1HDv7oI+U1hVqs6wREeDOLK0+9p46AUrRwbPMdSwtPOtkrS6a0v/fn6Q= ;{id = 62298} +0674616C696E6B0C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C04746C73610C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030020 +talink.types-signed.wb.sidnlabs.nl. 3600 IN NSEC tlsa.types-signed.wb.sidnlabs.nl. RRSIG NSEC TALINK +0674616C696E6B0C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0060E1F004624CD3B9FC3ED1ABDDEEA03301F3F8EC565379F31A5ABD9EE11120AB8B8891FE890FB9452A922EA587A164F44C06542B871F565002AA62E37E64C1BBC60A8DB58F921879912FE4B439D5958C4140376C6A645E1A7B4A43BCD9BA314ABE5D4025C0451BB9F22F6FAEB835D569275CA27809788B24268A3DFEA000A77E +talink.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YOHwBGJM07n8PtGr3e6gMwHz+OxWU3nzGlq9nuERIKuLiJH+iQ+5RSqSLqWHoWT0TAZUK4cfVlACqmLjfmTBu8YKjbWPkhh5kS/ktDnVlYxBQDdsamReGntKQ7zZujFKvl1AJcBFG7nyL2+uuDXVaSdcongJeIskJoo9/qAAp34= ;{id = 62298} +04746C73610C74797065732D7369676E6564027762087369646E6C616273026E6C00003400010000003C004301010292003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC +tlsa.types-signed.wb.sidnlabs.nl. 60 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC +04746C73610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00CDF2D66C5A7233727509DCF1533BD3B881201A38B55698C061D3CB198F0FD19CD15D618E1FC1A71FE2229CF67115B86585F5E29B77FA5D51E634DAD12AA8DA4818633956AFEF2805555CFEF4C5C97E8E9EC5C23704BC6F6C67077D72BC7F53D42ECF5EE50C8962BBE364C1D4D7B0B77CBC89866D1A0582F12E7E6F06CE06C9D2 +tlsa.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TLSA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. zfLWbFpyM3J1CdzxUzvTuIEgGji1VpjAYdPLGY8P0ZzRXWGOH8GnH+IinPZxFbhlhfXim3f6XVHmNNrRKqjaSBhjOVav7ygFVVz+9MXJfo6excI3BLxvbGcHfXK8f1PULs9e5QyJYrvjZMHU17C3fLyJhm0aBYLxLn5vBs4GydI= ;{id = 62298} +04746C73610C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002A037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00000700000000000308 +tlsa.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt.types-signed.wb.sidnlabs.nl. RRSIG NSEC TLSA +04746C73610C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0097F52F8B14A82A9CAC0A35A306CA9E98F35AB8BA98D824BE14A8235CBBE93CCA3A576C0E83D36AB951F08EB298CB52FD303E4D8D6790762033CC4A036CB8BBB0898FE5303053D5E4DDFFBD719FC1D5DD280A08E9315C304DA8883F7F3E10E9E6910185F466878EC57C60EC5035E2B8E074483414E50079B458F9BA36E4C5789F +tlsa.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l/UvixSoKpysCjWjBsqemPNauLqY2CS+FKgjXLvpPMo6V2wOg9NquVHwjrKYy1L9MD5NjWeQdiAzzEoDbLi7sImP5TAwU9Xk3f+9cZ/B1d0oCgjpMVwwTaiIP38+EOnmkQGF9GaHjsV8YOxQNeK44HRINBTlAHm0WPm6NuTFeJ8= ;{id = 62298} +037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C001405224A75737405736F6D65220122057465787422 +txt.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"Just" "some\"" "\"" "text\"" +037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008BD56AA1A540EDBA0C4E8C89205FCC77D142551210620869DA88C33C65378505B9055464096FAFCA8F660272FEF9898EC9FFE69078A9328F8958C8A0B43FE6904AD124E1C0CFD025E5439D0C56E9DE8BACA71039484FCD99C1FAC1C9F088246227AE05A44A898901F146006B66EA8B649F0965FCAE69C120411A8D2EF406E241 +txt.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. i9VqoaVA7boMToyJIF/Md9FCVRIQYghp2ojDPGU3hQW5BVRkCW+vyo9mAnL++YmOyf/mkHipMo+JWMigtD/mkErRJOHAz9Al5UOdDFbp3ouspxA5SE/NmcH6wcnwiCRiJ64FpEqJiQHxRgBrZuqLZJ8JZfyuacEgQRqNLvQG4kE= ;{id = 62298} +037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt01.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0078954E69CC79D8C8EEBBF34BF3EFF6565D66B9587437F5B215D91482FC4DB0311769504211CF9528C0AAA81C18FE1B0B5BDDDF35BE31E59599E5B450C79858AB23295953C1044D5F0BB2B9F5FE80848F22E2A9E2E7FB82A7017B5F9A9BA6EDFAEE934007B197856D441102CFB93E9218C2F47230FE883183829DC99646529830 +txt.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eJVOacx52Mjuu/NL8+/2Vl1muVh0N/WyFdkUgvxNsDEXaVBCEc+VKMCqqBwY/hsLW93fNb4x5ZWZ5bRQx5hYqyMpWVPBBE1fC7K59f6AhI8i4qni5/uCpwF7X5qbpu367pNAB7GXhW1EEQLPuT6SGML0cjD+iDGDgp3JlkZSmDA= ;{id = 62298} +0574787430310C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000403666F6F +txt01.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" +0574787430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BAF485241B5AC03407D32844CA9FBD69372E1CFCA7714723FC4CDDC197F00DBE86E34F3A91CD5618D72E3532B31EB6AD8A60A3D769BAAA71FCA302F19C837A3039CB686A5AD3544D2C07CEC81AE5ABD850CF6AD793A6525958A813754F014C73691652530669546D7A746A989C4661A356451F5D2D6E21479A4C29AFBF0D9800 +txt01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uvSFJBtawDQH0yhEyp+9aTcuHPyncUcj/EzdwZfwDb6G4086kc1WGNcuNTKzHratimCj12m6qnH8owLxnIN6MDnLaGpa01RNLAfOyBrlq9hQz2rXk6ZSWVioE3VPAUxzaRZSUwZpVG16dGqYnEZho1ZFH10tbiFHmkwpr78NmAA= ;{id = 62298} +0574787430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt02.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003CF324223B2312A4D068D7440F5AA6856C47475AC6AD76579F7F1DC33C1054E695FB07E36210D2506C4EDA77DE7CF3B61067F2CE9DB0809AD327F3E96DA78394699284F77B2150B29989C5AB641826D6D13D4266A3802A8FACFBA8839E9D11D2B9DAE756DC8113827EF5464B4E3262BA9826A9B03CFA9A7FCEB704A9C80DD091 +txt01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. PPMkIjsjEqTQaNdED1qmhWxHR1rGrXZXn38dwzwQVOaV+wfjYhDSUGxO2nfefPO2EGfyzp2wgJrTJ/PpbaeDlGmShPd7IVCymYnFq2QYJtbRPUJmo4Aqj6z7qIOenRHSudrnVtyBE4J+9UZLTjJiupgmqbA8+pp/zrcEqcgN0JE= ;{id = 62298} +0574787430320C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000803666F6F03626172 +txt02.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" "bar" +0574787430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B61880BFFE98FB6CE1370A023F4EB5385060026D0E188AA2AE3799D6C134A3C30647EE9AB41045A1ED003890E21983A4354EFFDDEB572608CE7B1F8D54D4F1718B55A8D12828A49B870F620CDA20BB875C8C01F96A899EBE60B0F5CC48F04709B956DFFBF779267AD4196261197FE7B858FCB19E027679579AC211B15969070C +txt02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. thiAv/6Y+2zhNwoCP061OFBgAm0OGIqirjeZ1sE0o8MGR+6atBBFoe0AOJDiGYOkNU7/3etXJgjOex+NVNTxcYtVqNEoKKSbhw9iDNogu4dcjAH5aomevmCw9cxI8EcJuVbf+/d5JnrUGWJhGX/nuFj8sZ4CdnlXmsIRsVlpBww= ;{id = 62298} +0574787430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430330C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt03.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0069190076BB65B21AE47F094B08FBE8D1E9995630C1CF93E7102ECDE51D0B982C775969EF7B7545781D44F6BC2BDEEFC5C68B6D099ED6C39E9D628F191B98D2FE07278FA7F8B0EE2916FED9C88F512F06827B6E84FE984BB1C965C9C7B2DEB106BDF2A9E85EAB9194E8B365BE02C9FEE63E9A1BC0A1560A98C1B33C0CAA31A049 +txt02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. aRkAdrtlshrkfwlLCPvo0emZVjDBz5PnEC7N5R0LmCx3WWnve3VFeB1E9rwr3u/FxottCZ7Ww56dYo8ZG5jS/gcnj6f4sO4pFv7ZyI9RLwaCe26E/phLscllycey3rEGvfKp6F6rkZTos2W+Asn+5j6aG8ChVgqYwbM8DKoxoEk= ;{id = 62298} +0574787430330C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000403666F6F +txt03.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" +0574787430330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005A4BA080E4AAEEFDBA92DC3EDBBB72A429D0D8F2D9D144A4432A2A9DB4C74CAAF8BC5D5B0D96BE08C5F81826A7B27F1682A2F4AF14485EB29258230BADEBA8AE0F11AD39388026D0CA74806D67EAC9DEC3A545BB7D7735B90951845967DE471408BF7C02F8F1FAFD7AAA428A199669F46C1A6A9606FB20F5CC34CEFD66458513 +txt03.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. WkuggOSq7v26ktw+27typCnQ2PLZ0USkQyoqnbTHTKr4vF1bDZa+CMX4GCansn8WgqL0rxRIXrKSWCMLreuorg8RrTk4gCbQynSAbWfqyd7DpUW7fXc1uQlRhFln3kcUCL98Avjx+v16qkKKGZZp9GwaapYG+yD1zDTO/WZFhRM= ;{id = 62298} +0574787430330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430340C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt03.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt04.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009DD6B0FEB54F97547379B144F5F32F6A8253FC454D0DBC9B70C08995430C18A69640DDA102FE4C06F179C3952976C715BFEA4BA627A7414C5B0648A095B8FE03F4BF279A65A2FB34238F0315AC70D636A6EBA133AE3F6608324BABD1712119A4EC6F80F44803796BAA4A5A68ECDABA012284A5C6017074B141B6195D661E1FC4 +txt03.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ndaw/rVPl1RzebFE9fMvaoJT/EVNDbybcMCJlUMMGKaWQN2hAv5MBvF5w5UpdscVv+pLpienQUxbBkiglbj+A/S/J5plovs0I48DFaxw1jam66Ezrj9mCDJLq9FxIRmk7G+A9EgDeWuqSlpo7Nq6ASKEpcYBcHSxQbYZXWYeH8Q= ;{id = 62298} +0574787430340C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000803666F6F03626172 +txt04.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo" "bar" +0574787430340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000C86EC0C5DE52EB9C3235EAC5F43DDDAF5C54BA22942AAFB304A926A51E70B43A17BD66648E87D6F52DF536CD948C8C6BD0E501B3BDBAAC02984461FFC7334F0C3755F616309D5F1CCC862E4BCD4B32B27455FBB0F509C266A0D22783DE0B6053AC86E2C39E9D36F130C4EDE2E6023A631A9400DDF90AD4DB169C6818D4A7869 +txt04.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DIbsDF3lLrnDI16sX0Pd2vXFS6IpQqr7MEqSalHnC0Ohe9ZmSOh9b1LfU2zZSMjGvQ5QGzvbqsAphEYf/HM08MN1X2FjCdXxzMhi5LzUsysnRV+7D1CcJmoNIng94LYFOshuLDnp028TDE7eLmAjpjGpQA3fkK1NsWnGgY1KeGk= ;{id = 62298} +0574787430340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430350C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt04.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt05.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B5E9355D66E7E11E110C81F4C273DFC805261341C5E53914C80FD6D9DEFFB63FCF4B21D254E335804735985A38ADEF72CC02945A869C45E1D5B282493127CB44298415EC414015E631983C532C28F07CCFED89708D1DF85A4DCF942026E856EF9F35449024966BEE831BDF73B31F86CEA46EB0B6BE9EC44EDEE1896A6331CC44 +txt04.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. tek1XWbn4R4RDIH0wnPfyAUmE0HF5TkUyA/W2d7/tj/PSyHSVOM1gEc1mFo4re9yzAKUWoacReHVsoJJMSfLRCmEFexBQBXmMZg8Uywo8HzP7YlwjR34Wk3PlCAm6FbvnzVEkCSWa+6DG99zsx+GzqRusLa+nsRO3uGJamMxzEQ= ;{id = 62298} +0574787430350C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F20626172 +txt05.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +0574787430350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002C3ECB6C8F92E28F8C3A18934B4BA8E4D585CE520CB897E9DD2F302274CA48A8592CE6911BE4BE5EFC82D6B3023BC5A0C15C6D1878E48A794A5853291085F5DEED67BCDC55B4B9E4557EB1238DB2F34AB85ACF1997F5A8BF0C8A27B2DD9E4CEB33FB9DA5741C024D17322935CC1764244E8B6CA1E821CEDE8354C5F25F545908 +txt05.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. LD7LbI+S4o+MOhiTS0uo5NWFzlIMuJfp3S8wInTKSKhZLOaRG+S+XvyC1rMCO8WgwVxtGHjkinlKWFMpEIX13u1nvNxVtLnkVX6xI42y80q4Ws8Zl/WovwyKJ7LdnkzrM/udpXQcAk0XMik1zBdkJE6LbKHoIc7eg1TF8l9UWQg= ;{id = 62298} +0574787430350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430360C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt05.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt06.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00049035F97A89E76C0275504C3143A8C0F468C49785FD3994D2E30C4082CC855E57EC435D4435398148442C9ABDE07CC54DD66C433A9E847D11D2794578E43B78BFA1BBB7B2D4E9723643715B9A507DC02ABC48965EB42EE35B1CC91A82B353DC0CCF10C5F5D0EFD17CB1AF7E24782439690B886782824D89B95B621CFBB90167 +txt05.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BJA1+XqJ52wCdVBMMUOowPRoxJeF/TmU0uMMQILMhV5X7ENdRDU5gUhELJq94HzFTdZsQzqehH0R0nlFeOQ7eL+hu7ey1OlyNkNxW5pQfcAqvEiWXrQu41scyRqCs1PcDM8QxfXQ79F8sa9+JHgkOWkLiGeCgk2JuVtiHPu5AWc= ;{id = 62298} +0574787430360C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F20626172 +txt06.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +0574787430360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001693E3E25DCE053707AC78DB183FDC7D97CEFCBEBD3DBB9AF3EB173D150CB421AB3F7242386991FA2C090553E572AA332F33B88DA3E02B81E09F45A300A0E978DA00B29D7700B8D0EE4747558973FBDACC60E7F1766E7CD66A59D4D463B71551BA55B23692F434E9D07BF4C41C3120022677B86BC713426F995CB01E06B71668 +txt06.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FpPj4l3OBTcHrHjbGD/cfZfO/L69Pbua8+sXPRUMtCGrP3JCOGmR+iwJBVPlcqozLzO4jaPgK4Hgn0WjAKDpeNoAsp13ALjQ7kdHVYlz+9rMYOfxdm581mpZ1NRjtxVRulWyNpL0NOnQe/TEHDEgAiZ3uGvHE0JvmVywHga3Fmg= ;{id = 62298} +0574787430360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430370C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt06.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt07.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0085CD08D248F0B6D700EFDA6DB9B89A2591215DC1E0FC1DC53A870430111E422681FAF6485CD8F65E67E13079A9A6B129CC5EB74205A6702B15BD08167BE658E521B40B63D95D6871F4AD2B4144C2697703F53870BE805D6D4BD24D63436DFA0276D4C69F6AC83582E7F013B40CF6F81538C662E5A14EFFD122FEA3908BF649EB +txt06.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hc0I0kjwttcA79ptubiaJZEhXcHg/B3FOocEMBEeQiaB+vZIXNj2XmfhMHmpprEpzF63QgWmcCsVvQgWe+ZY5SG0C2PZXWhx9K0rQUTCaXcD9ThwvoBdbUvSTWNDbfoCdtTGn2rINYLn8BO0DPb4FTjGYuWhTv/RIv6jkIv2Ses= ;{id = 62298} +0574787430370C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F20626172 +txt07.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +0574787430370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005B1F105472039EC943ED4692C8661E77DBC84CB3E69DD8186C116354CB8FE24B400D2A3337B493FDA45D43A1FCB7AD4415F02F2A558B0D7EFDF8EA48590F11B84380E6B510355AD342260D2C236F1AE74827A2C501AE5B4E957D9E5E81FED08B2862044F40700CDA6AEACF2C82980887AE7913832AED4BCABF9568B6A010AC64 +txt07.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Wx8QVHIDnslD7UaSyGYed9vITLPmndgYbBFjVMuP4ktADSozN7ST/aRdQ6H8t61EFfAvKlWLDX79+OpIWQ8RuEOA5rUQNVrTQiYNLCNvGudIJ6LFAa5bTpV9nl6B/tCLKGIET0BwDNpq6s8sgpgIh655E4Mq7UvKv5VotqAQrGQ= ;{id = 62298} +0574787430370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430380C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt07.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt08.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A350B2E5D3C33A32BC09D93C17A14A1CD88F223F2DD7DFF41CDAAC0B8BF8B31844C7239EBA15A32057A962AA9890F95D830E1F5C5B0E28913DC9466517DC6D298223CBDBAA26B9FEAAFB12E680F2EAFE0D42FD572A00BD315E3E949115D7126E2AFAE1FA9C6EA7F85E2C05BEF3FF31966537A4BC2C960DC8241182AE408EAF0B +txt07.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. o1Cy5dPDOjK8Cdk8F6FKHNiPIj8t19/0HNqsC4v4sxhExyOeuhWjIFepYqqYkPldgw4fXFsOKJE9yUZlF9xtKYIjy9uqJrn+qvsS5oDy6v4NQv1XKgC9MV4+lJEV1xJuKvrh+pxup/heLAW+8/8xlmU3pLwslg3IJBGCrkCOrws= ;{id = 62298} +0574787430380C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F0A626172 +txt08.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo\010bar" +0574787430380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007EAF50D5E3D3AFC367CB51F1F4F023F84610B30AAD49CD6582938222D77A36FB7CA10B78E76158405EAED1509E66E1FE4D61C8B9877455DC7AE7394267CE7108928F85B85FAB33240E45C1C2363F8BEE72F8EA4B7536EB15ADD57F0F769DF8C1BD39164FD2C75278F32E8ED7A1A8881C07992998BD82ABEAAD739426CD67ED8C +txt08.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fq9Q1ePTr8Nny1Hx9PAj+EYQswqtSc1lgpOCItd6Nvt8oQt452FYQF6u0VCeZuH+TWHIuYd0Vdx65zlCZ85xCJKPhbhfqzMkDkXBwjY/i+5y+OpLdTbrFa3Vfw92nfjBvTkWT9LHUnjzLo7XoaiIHAeZKZi9gqvqrXOUJs1n7Yw= ;{id = 62298} +0574787430380C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787430390C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt08.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt09.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00045A9E069174356C639F3E496F82EA4649C1AC7D378C1F56E3C122E5811220D0DCE1C6BB2137DEBECAB61C68242AA6CDEC77D16E07BE9F0919A7E061DBD4825CAEFE9646A255EA15B902B54EBE6DC2B9B6479E78782A95EC492C0E3038A10A939DF5DBA202D6221F10CCFE2B07571C2D41784CB69A6D727211EFE533CF9F2060 +txt08.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BFqeBpF0NWxjnz5Jb4LqRknBrH03jB9W48Ei5YESINDc4ca7ITfevsq2HGgkKqbN7HfRbge+nwkZp+Bh29SCXK7+lkaiVeoVuQK1Tr5twrm2R554eCqV7EksDjA4oQqTnfXbogLWIh8QzP4rB1ccLUF4TLaabXJyEe/lM8+fIGA= ;{id = 62298} +0574787430390C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F0A626172 +txt09.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo\010bar" +0574787430390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0004931F8D7A5AC5F385A61D80BBB4580A906ECF5F5DBC9A780B6D45BB4DDB10DEB4FE9E92739F56CF510C7602A5C22656323F689215DAD1AC28093BFFD8F1A4588890BD508ADA42705D1F6461CE85379C4F488D3684E85C24AD98974A80828E6791AB887E32F74132181C10C04A297ABFE52144AFE9E13CCD17EB4B639185D09E +txt09.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BJMfjXpaxfOFph2Au7RYCpBuz19dvJp4C21Fu03bEN60/p6Sc59Wz1EMdgKlwiZWMj9okhXa0awoCTv/2PGkWIiQvVCK2kJwXR9kYc6FN5xPSI02hOhcJK2Yl0qAgo5nkauIfjL3QTIYHBDASil6v+UhRK/p4TzNF+tLY5GF0J4= ;{id = 62298} +0574787430390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787431300C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt09.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt10.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787430390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0082E41AB417CF62A108879C393508BAA05D1104596E6A4D17CB3B51033B29AE41478CAA4E8FFB8836E749E5F59ECF5D6ABDA0FECA0915AEB908C1F59515B4D3BFD33A07544208CA58AE97EC2CD86D726B0B9574035F615FE1898631F783B5FCA249B7275256C08696E47073EDDCD21341CDD9E38332F7B20EC3339B25290CCD2E +txt09.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. guQatBfPYqEIh5w5NQi6oF0RBFluak0XyztRAzsprkFHjKpOj/uINudJ5fWez11qvaD+ygkVrrkIwfWVFbTTv9M6B1RCCMpYrpfsLNhtcmsLlXQDX2Ff4YmGMfeDtfyiSbcnUlbAhpbkcHPt3NITQc3Z44My97IOwzObJSkMzS4= ;{id = 62298} +0574787431300C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C000807666F6F20626172 +txt10.types-signed.wb.sidnlabs.nl. 60 IN TXT "foo bar" +0574787431300C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00079ABF65F4B0AF532D43D8F7C87DB58EA95E7BC3BD8EC1F6DF89DB1E5D5DD8FF2B7B564817A3AFA521E7CA98F68599B7CC477D7E766957D2C0C7697313DA6032E49FA690E9263D87175EEEA7FC86310687450D052364D268EC5D2AE2A699362AFB758176549B98769D63A7D61F7649733797B55C437755671499D5B42903B842 +txt10.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B5q/ZfSwr1MtQ9j3yH21jqlee8O9jsH234nbHl1d2P8re1ZIF6OvpSHnypj2hZm3zEd9fnZpV9LAx2lzE9pgMuSfppDpJj2HF17up/yGMQaHRQ0FI2TSaOxdKuKmmTYq+3WBdlSbmHadY6fWH3ZJczeXtVxDd1VnFJnVtCkDuEI= ;{id = 62298} +0574787431300C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787431310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt10.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt11.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787431300C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0009BB90E7994FE5F4F0F33ED788C31615092B594359BA645CE4C75B094FEA47A3EA3EDE2F963ED175826A6C2193C8017AE2C63311A7099C048CB9B5FAAC1B1F2640F014AFF45EB281A17FF1E16B20086178FF12525117191EF396F5C268FF82F6BF5885C30E7AAFD4E032490C6764310FDEB69CFEF340D3AE4F07EAC9975138E5 +txt10.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. CbuQ55lP5fTw8z7XiMMWFQkrWUNZumRc5MdbCU/qR6PqPt4vlj7RdYJqbCGTyAF64sYzEacJnASMubX6rBsfJkDwFK/0XrKBoX/x4WsgCGF4/xJSURcZHvOW9cJo/4L2v1iFww56r9TgMkkMZ2QxD962nP7zQNOuTwfqyZdROOU= ;{id = 62298} +0574787431310C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C00060522666F6F22 +txt11.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"foo\"" +0574787431310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0092018C6609F373A95EB06AEED7058650B80EA1F11E8C915D12A5E847876B346D71131ECC200373E797E0A27A59E4AC7253AA5B49BFB2DE2563087F2F4B8EE0265EB0FE2AD0994C44045A94312B4C9133DE780D1CA8613AED11EC6AE0FBDA71104FDF721CB9E81BB4AF78061ADE5934B3D15D1C69E3C4410939FC04CB07B99E99 +txt11.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. kgGMZgnzc6lesGru1wWGULgOofEejJFdEqXoR4drNG1xEx7MIANz55fgonpZ5KxyU6pbSb+y3iVjCH8vS47gJl6w/irQmUxEBFqUMStMkTPeeA0cqGE67RHsauD72nEQT99yHLnoG7SveAYa3lk0s9FdHGnjxEEJOfwEywe5npk= ;{id = 62298} +0574787431310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574787431320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt11.types-signed.wb.sidnlabs.nl. 3600 IN NSEC txt12.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787431310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0005A3586586F1ADEA3D768E15E2CA2329160249C380F804690E81D5EA553C8D28B6B8D7B3CCB7EC22CC6DCDD2786B400A415A8F627AB75E48216661FD1949347C674A490D10ED98C78ECC7798636534A986475988B0BBAC89E5415C091F3F733A5D82409FD46F136B84CCC87420DA2E04E3C8754C89332761E4FBC27173C0EBBD +txt11.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BaNYZYbxreo9do4V4sojKRYCScOA+ARpDoHV6lU8jSi2uNezzLfsIsxtzdJ4a0AKQVqPYnq3XkghZmH9GUk0fGdKSQ0Q7ZjHjsx3mGNlNKmGR1mIsLusieVBXAkfP3M6XYJAn9RvE2uEzMh0INouBOPIdUyJMydh5PvCcXPA670= ;{id = 62298} +0574787431320C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C00060522666F6F22 +txt12.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"foo\"" +0574787431320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00541ACC2F0568FC015005BA404D5302E45988D6EA7F98A63C2031569966F234F8B2A2530584498F9D359DDEA9FDF9680413C1818D1BA3F12F587ABCEE1CEE71819798AB193A0B1AAB8716B6D3D268E7D2901128D3D197A913E13F2ACB2B901503EE28A49DFC781837BC47141048C664F907CEE512CADCC34548747151F3A9F833 +txt12.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VBrMLwVo/AFQBbpATVMC5FmI1up/mKY8IDFWmWbyNPiyolMFhEmPnTWd3qn9+WgEE8GBjRuj8S9YerzuHO5xgZeYqxk6Cxqrhxa209Jo59KQESjT0ZepE+E/KssrkBUD7iiknfx4GDe8RxQQSMZk+QfO5RLK3MNFSHRxUfOp+DM= ;{id = 62298} +0574787431320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574797065310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +txt12.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type1.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +0574787431320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B01A2B49A52907AC1D54ADD42FD9111B1CF087E4690E5E0ACC6ACB5253EB5008C03088BF16E32F4691B132F908BF4A28D985AEFE4B7CC9D198906988EF012BFECA9CF1534AA029D7766AD2E98DE689CA7BD68FCC5236E0412688AA9D4454DE2BB476E802858DA45F5644493008D944F94EB4257C57DDF4FD1D3F0C078CBE8ACE +txt12.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. sBorSaUpB6wdVK3UL9kRGxzwh+RpDl4KzGrLUlPrUAjAMIi/FuMvRpGxMvkIv0oo2YWu/kt8ydGYkGmI7wEr/sqc8VNKoCnXdmrS6Y3micp71o/MUjbgQSaIqp1EVN4rtHboAoWNpF9WREkwCNlE+U60JXxX3fT9HT8MB4y+is4= ;{id = 62298} +0574797065310C74797065732D7369676E6564027762087369646E6C616273026E6C00000100010000003C0004D5881FDD +type1.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +0574797065310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001E72D8B48B5B914AC2598422D3FE4CFB9F4396B15E8BDB3C61025D66BEF3BDFFCFE32FDBF73F3BDFC1BE5A1826AFFF918900E4413CF9DF200D70FAAE493A8F5FF297A19C940B294D55FAB9374FF9F21CD4DA0966CE45A197FC285C2497EB00E3973EECD3A2135D5DABDD736781425D33D7BE15CE312DEB3DC96B669B857B9940 +type1.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HnLYtItbkUrCWYQi0/5M+59DlrFei9s8YQJdZr7zvf/P4y/b9z8738G+Whgmr/+RiQDkQTz53yANcPquSTqPX/KXoZyUCylNVfq5N0/58hzU2glmzkWhl/woXCSX6wDjlz7s06ITXV2r3XNngUJdM9e+Fc4xLes9yWtmm4V7mUA= ;{id = 62298} +0574797065310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D07747970653130340C74797065732D7369676E6564027762087369646E6C616273026E6C000006400000000003 +type1.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type104.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +0574797065310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004BE03DAD5F34D73B25CBB1BA9D04DD4544DBC8870003A8690F7B6274F24F73525A5A715CBE54B7FE05B1869E7D01403DE3ADABE6A44F77C9AA7B5C3EAA9D7A0E58AAA5DDBC29CD61985C43172061BE3DC2C551DD53D4D7270C3384C26E9C98D835A16B8A81C7C30CF8356436EE26562421D79D17EAEFC1EA9C71BE518ECBD366 +type1.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. S+A9rV801zsly7G6nQTdRUTbyIcAA6hpD3tidPJPc1JaWnFcvlS3/gWxhp59AUA9462r5qRPd8mqe1w+qp16Dliqpd28Kc1hmFxDFyBhvj3CxVHdU9TXJwwzhMJunJjYNaFrioHHwwz4NWQ27iZWJCHXnRfq78HqnHG+UY7L02Y= ;{id = 62298} +07747970653130340C74797065732D7369676E6564027762087369646E6C616273026E6C00006800010000003C000A000A0094019801520169 +type104.types-signed.wb.sidnlabs.nl. 60 IN NID 10 0094:0198:0152:0169 +07747970653130340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D566532AF6419B038FD5C8652BDE327C0008889DB84C480BCA508F22A9A51AD2145DE21C0AD1D44F1AB40C74433E7807E1B4D5FD23748B11F399FBA156CF506775953AE4BFCD76C88F14D5DB62936A291C082ABA77A0B3AB77BF30EB85A39967D95372C2117DF51E9FFFCF8F5C2B2281656EB77A04D7BC8830D3CBA8AB6667C3 +type104.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 1WZTKvZBmwOP1chlK94yfAAIiJ24TEgLylCPIqmlGtIUXeIcCtHUTxq0DHRDPngH4bTV/SN0ixHzmfuhVs9QZ3WVOuS/zXbIjxTV22KTaikcCCq6d6Czq3e/MOuFo5ln2VNywhF99R6f/8+PXCsigWVut3oE17yIMNPLqKtmZ8M= ;{id = 62298} +07747970653130340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10003507747970653130350C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000080 +type104.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type105.types-signed.wb.sidnlabs.nl. RRSIG NSEC NID +07747970653130340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B325AAB62B8B48111FE764A8AB15DB94B2C6E4807AEE43C3626E318AEB8CF1684D64E4D97F4951B0949A26DF27AEFF684DB1E2F8B78F6BCC071EDE041DE5E21103BF805E204DC211313E549821D39E0918CD667989619C4705E25B91E7962A432CC09BAAFDD1D39C4A36846E8017CFB5819B8036DED3953E77BD4E50D312D006 +type104.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. syWqtiuLSBEf52SoqxXblLLG5IB67kPDYm4xiuuM8WhNZOTZf0lRsJSaJt8nrv9oTbHi+LePa8wHHt4EHeXiEQO/gF4gTcIRMT5UmCHTngkYzWZ5iWGcRwXiW5HnlipDLMCbqv3R05xKNoRugBfPtYGbgDbe05U+d71OUNMS0AY= ;{id = 62298} +07747970653130350C74797065732D7369676E6564027762087369646E6C616273026E6C00006900010000003C0006000AC0000201 +type105.types-signed.wb.sidnlabs.nl. 60 IN L32 10 192.0.2.1 +07747970653130350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0018539C6E19DDDA7E8A3F64C209F027A5699490AC0A4A94E8E91AFA6381649248E35ADC2114D86F1CA04B87305215DE2649327248253759940068005A7CAED1EBA6217E7A493BC18498AE90995A9E8550E93C08F906D20F99408CA8D18B1AA20627DE5139B16A8266416B9FE9E1D2F10BA97AF0B2181856A80D338AED8A323D38 +type105.types-signed.wb.sidnlabs.nl. 60 IN RRSIG L32 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. GFOcbhnd2n6KP2TCCfAnpWmUkKwKSpTo6Rr6Y4FkkkjjWtwhFNhvHKBLhzBSFd4mSTJySCU3WZQAaABafK7R66YhfnpJO8GEmK6QmVqehVDpPAj5BtIPmUCMqNGLGqIGJ95RObFqgmZBa5/p4dLxC6l68LIYGFaoDTOK7YoyPTg= ;{id = 62298} +07747970653130350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10003507747970653130360C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000040 +type105.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type106.types-signed.wb.sidnlabs.nl. RRSIG NSEC L32 +07747970653130350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001616926FFD37517788775845EDAD313ACB6586E3460D6C0A3C679D41F5449B8D5F0F2CDBD3F3B66A185017CBCE10706B0A82306DB13AAD9CF05D785A987B9D4A2AD6D6BD09CEC16BFA1CCFE3FAF33181466B19F1E49D60ED049F464CE04E4FF2AB2A4C50D0B07CC1DCC8B4C3ACA42A1F4F8C3EA82C428D705C1EF1CE6682EDEA +type105.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. FhaSb/03UXeId1hF7a0xOstlhuNGDWwKPGedQfVEm41fDyzb0/O2ahhQF8vOEHBrCoIwbbE6rZzwXXhamHudSirW1r0JzsFr+hzP4/rzMYFGaxnx5J1g7QSfRkzgTk/yqypMUNCwfMHcyLTDrKQqH0+MPqgsQo1wXB7xzmaC7eo= ;{id = 62298} +07747970653130360C74797065732D7369676E6564027762087369646E6C616273026E6C00006A00010000003C000A000A2A000D7800040503 +type106.types-signed.wb.sidnlabs.nl. 60 IN L64 10 2a00:0d78:0004:0503 +07747970653130360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AEF76EB3B886E8C728758AFB258A15F122A3D6239CBB859A2BA33D19E839A5B78DBCA9953E52BA342B00E8387DFAEE763425AF6E2853899E90578193BAD080A17CD6EBF6CFAB03BE1E4B677BCDB26B5FB7BD15AE8FB7A38BBE26A0BC03F1CF1C1A6F044CEDC7D8C12FD62E31467C3D3E607631A8876CF289E7A4B67E8BA8BB93 +type106.types-signed.wb.sidnlabs.nl. 60 IN RRSIG L64 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rvdus7iG6McodYr7JYoV8SKj1iOcu4WaK6M9Geg5pbeNvKmVPlK6NCsA6Dh9+u52NCWvbihTiZ6QV4GTutCAoXzW6/bPqwO+Hktne82ya1+3vRWuj7eji74moLwD8c8cGm8ETO3H2MEv1i4xRnw9PmB2MaiHbPKJ56S2fouou5M= ;{id = 62298} +07747970653130360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10003507747970653130370C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000020 +type106.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type107.types-signed.wb.sidnlabs.nl. RRSIG NSEC L64 +07747970653130360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0085076B7E7134981FB306A9E7AE276BB519BF861218000BC2B5D5DEABFBA7DE5A198549064E73A0C1397769614FD378FEDDA4A28457D0D6C6B90A3E09D6C18B3C54F9A75F9EA066335B1DCC3CEB7DBD68F7AAA0E1C17B77E9D01083C80FBA7C4CA535266E44BD55C60FB03FBBB1D4672A36E017652E5234E262616E631D5E1D21 +type106.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hQdrfnE0mB+zBqnnridrtRm/hhIYAAvCtdXeq/un3loZhUkGTnOgwTl3aWFP03j+3aSihFfQ1sa5Cj4J1sGLPFT5p1+eoGYzWx3MPOt9vWj3qqDhwXt36dAQg8gPunxMpTUmbkS9VcYPsD+7sdRnKjbgF2UuUjTiYmFuYx1eHSE= ;{id = 62298} +07747970653130370C74797065732D7369676E6564027762087369646E6C616273026E6C00006B00010000003C001B000A0B6C36342D7375626E657431076578616D706C6503636F6D00 +type107.types-signed.wb.sidnlabs.nl. 60 IN LP 10 l64-subnet1.example.com. +07747970653130370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006A9BCD9615969BC5451373A1A80686BAF4994D7F73E9D04F977E5683DBDF935F6C69E3C19E447B2717B70E9CF4F0016FAD4FDD71B9BDC0D70E77A8E52AE748573983FC9D3A579048F25AD9BC41F5EDD0EAE88613B66F28642876E18C2BD444AEAFCD4C3E42DFA8C1328B02C07AB899CBBF60AA676EAE2C779911066BB3FE77F9 +type107.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. apvNlhWWm8VFE3OhqAaGuvSZTX9z6dBPl35Wg9vfk19saePBnkR7Jxe3Dpz08AFvrU/dcbm9wNcOd6jlKudIVzmD/J06V5BI8lrZvEH17dDq6IYTtm8oZCh24Ywr1ESur81MPkLfqMEyiwLAeriZy79gqmdurix3mREGa7P+d/k= ;{id = 62298} +07747970653130370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100034067479706531310C74797065732D7369676E6564027762087369646E6C616273026E6C00000E0000000000030000000000000010 +type107.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type11.types-signed.wb.sidnlabs.nl. RRSIG NSEC LP +07747970653130370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005A6CB3E2ABFA42752071ADC3D73D83DF1C2C9E3C97807735797FACACB8B86CFEF0ADA194E5E0433B99A2501DDA9E478C6AE1FDB180FC63956ED945EAD07D81A25CDD90CF8E5486ADB00104AD0A1815350786FDF45AF9718329DD0917132EE20F22CB587A9AC13FC40D582BD9EEBE8AEEA6796658341C24D02E886B4462EE45D1 +type107.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Wmyz4qv6QnUgca3D1z2D3xwsnjyXgHc1eX+srLi4bP7wraGU5eBDO5miUB3ankeMauH9sYD8Y5Vu2UXq0H2BolzdkM+OVIatsAEErQoYFTUHhv30WvlxgyndCRcTLuIPIstYeprBP8QNWCvZ7r6K7qZ5Zlg0HCTQLohrRGLuRdE= ;{id = 62298} +067479706531310C74797065732D7369676E6564027762087369646E6C616273026E6C00000B00010000003C000A0A00000106E00005A060 +type11.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +067479706531310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006CD9FF11E609BBB56BD60D0AEBD0E20B790ADB9D1926B5DA2E0770B717250B31A5D1C8FA96278125C3D124E3039EDDF04D065FB5D101DBB3FA7B9B4337D38E547773719AD5319CFD865A6A9307B27D2512F0325729C75CF22D59D9682D511D8565BA7157120A5E3E35934EF2FA27EF333142854B5B9EE47FCAC9062535A0C137 +type11.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bNn/EeYJu7Vr1g0K69DiC3kK250ZJrXaLgdwtxclCzGl0cj6lieBJcPRJOMDnt3wTQZftdEB27P6e5tDN9OOVHdzcZrVMZz9hlpqkweyfSUS8DJXKcdc8i1Z2WgtUR2FZbpxVxIKXj41k07y+ifvMzFChUtbnuR/yskGJTWgwTc= ;{id = 62298} +067479706531310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531320C74797065732D7369676E6564027762087369646E6C616273026E6C000006001000000003 +type11.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type12.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +067479706531310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B8CF3CFACBF9AA4ADC3236C72818F419380A7833836DBD70B2BB0162B204E76DEE2167FABAE9EC7830F3BA169AB36698F2407412DD4601157679EF8B9ACC246DD85BD74AA18D10E539B6BD83CBB79E0EC3FD70C22157EB29A837969B46A6A25ACB401307BA50B33DE75C7249031528595030907C6D69C5BB12800A2C49E8E570 +type11.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uM88+sv5qkrcMjbHKBj0GTgKeDODbb1wsrsBYrIE523uIWf6uunseDDzuhaas2aY8kB0Et1GARV2ee+Lmswkbdhb10qhjRDlOba9g8u3ng7D/XDCIVfrKag3lptGpqJay0ATB7pQsz3nXHJJAxUoWVAwkHxtacW7EoAKLEno5XA= ;{id = 62298} +067479706531320C74797065732D7369676E6564027762087369646E6C616273026E6C00000C00010000003C001D0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type12.types-signed.wb.sidnlabs.nl. 60 IN PTR types-signed.wb.sidnlabs.nl. +067479706531320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000C08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C79D7695C91FFB2FF4B3986ABE384F4DB95130DD19E04EA18CAC0024BE4FCADBE0BBA435E4360AC625E550F98D893ABDF715DC44F301DF9905EB2A340E88559A42267C8E75376A5B0B2C96097E0A83A99A0C72BDD9D29385644A76ABF5978244D56764DC9F25DB268133305E5C3C0D8A1A465B6E34C8449F918ED883991E4977 +type12.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. x512lckf+y/0s5hqvjhPTblRMN0Z4E6hjKwAJL5Pytvgu6Q15DYKxiXlUPmNiTq99xXcRPMB35kF6yo0DohVmkImfI51N2pbCyyWCX4Kg6maDHK92dKThWRKdqv1l4JE1Wdk3J8l2yaBMzBeXDwNihpGW240yESfkY7Yg5keSXc= ;{id = 62298} +067479706531320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531330C74797065732D7369676E6564027762087369646E6C616273026E6C000006000800000003 +type12.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type13.types-signed.wb.sidnlabs.nl. PTR RRSIG NSEC +067479706531320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D31A0EBF2678BC5C995D9A3FCF064436F5365C9778C8B43771582B9FF3380CE4C0FF0C5B2C8EF19C05E94F15228BBC397625667E40F34BBAC65110E82E098E18CFD08AE42BD7F99A8CC20B91408D872D16144945BE9D091F11D96D93B9C33B9D5DE9ABE7F3788F37287AAE1C2CD0EB6AAEAB5B1DEE430E558B00FE03A29EB656 +type12.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0xoOvyZ4vFyZXZo/zwZENvU2XJd4yLQ3cVgrn/M4DOTA/wxbLI7xnAXpTxUii7w5diVmfkDzS7rGURDoLgmOGM/QiuQr1/majMILkUCNhy0WFElFvp0JHxHZbZO5wzudXemr5/N4jzcoeq4cLNDraq6rWx3uQw5ViwD+A6KetlY= ;{id = 62298} +067479706531330C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00010000003C00161047656E6572696320504320636C6F6E65044D794F53 +type13.types-signed.wb.sidnlabs.nl. 60 IN HINFO "Generic PC clone" "MyOS" +067479706531330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0004D1AAC324F692573047C535FD3089BA83272A849ED383B7EA68090799D8AA5CC34AF84523A7D78700092677EFDE94086EE2A6654BC81350D795828ADB9AED8A2D4A87B89143E9F45867F03A621C5491738A30F7DC7C5A8D1A7E58FC629F395A67DCC92B033E75601568B7BD9E1805099BF0E1D0A78054EE617D639FBEAB7212 +type13.types-signed.wb.sidnlabs.nl. 60 IN RRSIG HINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. BNGqwyT2klcwR8U1/TCJuoMnKoSe04O36mgJB5nYqlzDSvhFI6fXhwAJJnfv3pQIbuKmZUvIE1DXlYKK25rtii1Kh7iRQ+n0WGfwOmIcVJFzijD33HxajRp+WPxinzlaZ9zJKwM+dWAVaLe9nhgFCZvw4dCngFTuYX1jn76rchI= ;{id = 62298} +067479706531330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531340C74797065732D7369676E6564027762087369646E6C616273026E6C000006000400000003 +type13.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type14.types-signed.wb.sidnlabs.nl. HINFO RRSIG NSEC +067479706531330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C1E7153B155A3F6C42B416034430D2B8E98CFE61A5968928E30F4FAA92CAC5BC1F9B58C07BCCA999115309FE8D9F49971E41290E4B0762877B1CF358DC6F8AB7ADCCBA610BCB99D06E4CCE406E2FFBF3AF18C2023958273BD9EE43DDBA6B85B0369020B813B070E5616E67589AC9E1E2D2ADE8DDA94F7BEDF2157B3B7DF309F6 +type13.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. wecVOxVaP2xCtBYDRDDSuOmM/mGlloko4w9PqpLKxbwfm1jAe8ypmRFTCf6Nn0mXHkEpDksHYod7HPNY3G+Kt63MumELy5nQbkzOQG4v+/OvGMICOVgnO9nuQ926a4WwNpAguBOwcOVhbmdYmsnh4tKt6N2pT3vt8hV7O33zCfY= ;{id = 62298} +067479706531340C74797065732D7369676E6564027762087369646E6C616273026E6C00000E00010000003C002209626F786D617374657203666F6F0362617200076D61696C626F7805746865726500 +type14.types-signed.wb.sidnlabs.nl. 60 IN MINFO boxmaster.foo.bar. mailbox.there. +067479706531340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000E08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00845C0F5672160BAFAA2964887EC2BFA70D525F041D199E84E745DAECCB541B1312BAACC94685B8824FD109568F0CC1C303C51625EE6FB8CDBF4058FD4F8359AB6BC46380A07B982CEF27F36B19743DFCADB6CE8EB9500194D3701D9C97C085B1CEE22EDE338D2C8A3745CD776FA62F6F40741F3897E8BD8A58417F77E7E11DC2 +type14.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MINFO 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. hFwPVnIWC6+qKWSIfsK/pw1SXwQdGZ6E50Xa7MtUGxMSuqzJRoW4gk/RCVaPDMHDA8UWJe5vuM2/QFj9T4NZq2vEY4Cge5gs7yfzaxl0Pfytts6OuVABlNNwHZyXwIWxzuIu3jONLIo3Rc13b6Yvb0B0HziX6L2KWEF/d+fhHcI= ;{id = 62298} +067479706531340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531350C74797065732D7369676E6564027762087369646E6C616273026E6C000006000200000003 +type14.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type15.types-signed.wb.sidnlabs.nl. MINFO RRSIG NSEC +067479706531340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00317FEB3B70FDD1A7772BD7B8789BB69168FB7F4F3AB159B0569F0A1A9D8E0ED069DE7CDFD8E699CF804D04CEC124EA015C9B73E5DF207D6639ABD1145D99210786F4500C2930ACD5AD7A2711EF663CF8EBDFBCA7FF25F46ACF87FCE1185FBB6956179FD866BF79CA3D5E04D4D50921268FF41215D740B0D24E8788992575BFA1 +type14.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MX/rO3D90ad3K9e4eJu2kWj7f086sVmwVp8KGp2ODtBp3nzf2OaZz4BNBM7BJOoBXJtz5d8gfWY5q9EUXZkhB4b0UAwpMKzVrXonEe9mPPjr37yn/yX0as+H/OEYX7tpVhef2Ga/eco9XgTU1QkhJo/0EhXXQLDSToeImSV1v6E= ;{id = 62298} +067479706531350C74797065732D7369676E6564027762087369646E6C616273026E6C00000F00010000003C002E000A0E6D61696C646F65736E74776F726B0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type15.types-signed.wb.sidnlabs.nl. 60 IN MX 10 maildoesntwork.types-signed.wb.sidnlabs.nl. +067479706531350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000F08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006A50B273CB8EDE2AB15117DFA05C5808A787F7E9C86C4B79BBE38D429454E71F23721EF039ED45EF4EAF262EEBBD61656ADA7B54CCD57566CBF9C7C5E785B1058CF191ED365192896D548D6D9F5F8F3FB2BBB2A50198CD0911BBF86DA838EB38094B5FF57B3B10168DDFF0539127B3CE85347D440EA4212E1A13F3E04E53D122 +type15.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. alCyc8uO3iqxURffoFxYCKeH9+nIbEt5u+ONQpRU5x8jch7wOe1F706vJi7rvWFlatp7VMzVdWbL+cfF54WxBYzxke02UZKJbVSNbZ9fjz+yu7KlAZjNCRG7+G2oOOs4CUtf9Xs7EBaN3/BTkSezzoU0fUQOpCEuGhPz4E5T0SI= ;{id = 62298} +067479706531350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531360C74797065732D7369676E6564027762087369646E6C616273026E6C000006000100000003 +type15.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type16.types-signed.wb.sidnlabs.nl. MX RRSIG NSEC +067479706531350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0055DA837B8FA08335692B8C3A42830DB7ACAA93296A3BFE075E0AFA16B858C1D9CFB019866EF5AEB858A0228A5A2C069B7AC6018263713A29E3C4ADC64721D93821D50FEEBD81027B0A9289D1523B6D15DBFC4A0817E85BDE88E7C18153E252BFA900C6C0030D997C30E03E16D8BBECCE896038BB43BAF831FCEE3E1DF2F9A75D +type15.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VdqDe4+ggzVpK4w6QoMNt6yqkylqO/4HXgr6FrhYwdnPsBmGbvWuuFigIopaLAabesYBgmNxOinjxK3GRyHZOCHVD+69gQJ7CpKJ0VI7bRXb/EoIF+hb3ojnwYFT4lK/qQDGwAMNmXww4D4W2LvszolgOLtDuvgx/O4+HfL5p10= ;{id = 62298} +067479706531360C74797065732D7369676E6564027762087369646E6C616273026E6C00001000010000003C001405224A75737405736F6D65220122057465787422 +type16.types-signed.wb.sidnlabs.nl. 60 IN TXT "\"Just" "some\"" "\"" "text\"" +067479706531360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001008050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007B63449597EC2286BC37168C09C0505D6333A280D7A3C4DB5FD7B6DDB548B9A10E7B9632B732E0A3178AA09E41C57CDDF9C495B6833E8240B6F5FD86853F2D5AB77F09564E55BB3103FAA81EDF7AAB1F8BB872AE88DA4112B24B5469B8649E0568F01C4876759177A4EE9A0325B4E27B37B0EA89ABF99113F47F2C6BBB153327 +type16.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TXT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. e2NElZfsIoa8NxaMCcBQXWMzooDXo8TbX9e23bVIuaEOe5YytzLgoxeKoJ5BxXzd+cSVtoM+gkC29f2GhT8tWrd/CVZOVbsxA/qoHt96qx+LuHKuiNpBErJLVGm4ZJ4FaPAcSHZ1kXek7poDJbTiezew6omr+ZET9H8sa7sVMyc= ;{id = 62298} +067479706531360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531370C74797065732D7369676E6564027762087369646E6C616273026E6C000006000080000003 +type16.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type17.types-signed.wb.sidnlabs.nl. TXT RRSIG NSEC +067479706531360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0022AF5481EA695CFE716B83587EA1076BFA323195721DC5A1A16E65C468C3621CAD395CA50F250DDB81360B17C8419C5CDDF54F53CE3CA0C34C97A843615D35C1BBC1A4F1EC2AAD74CE91F210952B19DC0314B20723E8525B01579879E1F376F7CB372AE3484BE995BC74091E9544E0A419125B32C47FB2211D2EAEF7EFC72B59 +type16.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Iq9UgeppXP5xa4NYfqEHa/oyMZVyHcWhoW5lxGjDYhytOVylDyUN24E2CxfIQZxc3fVPU848oMNMl6hDYV01wbvBpPHsKq10zpHyEJUrGdwDFLIHI+hSWwFXmHnh83b3yzcq40hL6ZW8dAkelUTgpBkSWzLEf7IhHS6u9+/HK1k= ;{id = 62298} +067479706531370C74797065732D7369676E6564027762087369646E6C616273026E6C00001100010000003C002200037478740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type17.types-signed.wb.sidnlabs.nl. 60 IN RP . txt.types-signed.wb.sidnlabs.nl. +067479706531370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0036A94354CE471C31EC3AC3783BA4187D6DCC614A0DC78544D33C6FB41970B7EC9D867C656E2BFB1BCA40722515AED2BA7ECC666BAB671E7AB4457501B94D03534828F63F406E377D6ED8D098636D467DF1CC92A9D31E59014766098165D439B3DB9B221A24078330D7DED6E66D271183BDE9FE4C6DEFF07BFC9AF34DE2030FED +type17.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. NqlDVM5HHDHsOsN4O6QYfW3MYUoNx4VE0zxvtBlwt+ydhnxlbiv7G8pAciUVrtK6fsxma6tnHnq0RXUBuU0DU0go9j9Abjd9btjQmGNtRn3xzJKp0x5ZAUdmCYFl1Dmz25siGiQHgzDX3tbmbScRg73p/kxt7/B7/JrzTeIDD+0= ;{id = 62298} +067479706531370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531380C74797065732D7369676E6564027762087369646E6C616273026E6C000006000040000003 +type17.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type18.types-signed.wb.sidnlabs.nl. RP RRSIG NSEC +067479706531370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0055936C79CC62D1B06E6DE44F56CAED4C95D1F1B388142ED365F5295268AE689233822EE68973F170DA90025B970E0B12CFF51142582C62CB39D307A6A350C42621522CBCFDFDD9CC55EBBDAE3F09D75F371757F1B8F4104F54B564B92B97ED12FB870169C44EAB4C1B26FEF0D8332630E07DE038773C728E58E073CC396FEFFB +type17.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VZNsecxi0bBubeRPVsrtTJXR8bOIFC7TZfUpUmiuaJIzgi7miXPxcNqQAluXDgsSz/URQlgsYss50wemo1DEJiFSLLz9/dnMVeu9rj8J1183F1fxuPQQT1S1ZLkrl+0S+4cBacROq0wbJv7w2DMmMOB94Dh3PHKOWOBzzDlv7/s= ;{id = 62298} +067479706531380C74797065732D7369676E6564027762087369646E6C616273026E6C00001200010000003C00273039076166736E6F64650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type18.types-signed.wb.sidnlabs.nl. 60 IN AFSDB 12345 afsnode.types-signed.wb.sidnlabs.nl. +067479706531380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001208050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00610CFAFDED06A23B267830F4EC89B66D07B6E102FE55B3E3821E520AB6E72D514B1C060FC4DB5A27F12B1C34F40E2D99A57AB8E7547682AF1C562D0E6B6A27E7D83380D769E6D109FBD7F398E8DD6BB6ADBB457B906D439EE328A9B889DE1443DB4905F2AA7C06AB26DBB42C3007A22A2A818DEF64F4012322DF09931BE3156C +type18.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AFSDB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. YQz6/e0GojsmeDD07Im2bQe24QL+VbPjgh5SCrbnLVFLHAYPxNtaJ/ErHDT0Di2ZpXq451R2gq8cVi0Oa2on59gzgNdp5tEJ+9fzmOjda7atu0V7kG1DnuMoqbiJ3hRD20kF8qp8Bqsm27QsMAeiKiqBje9k9AEjIt8JkxvjFWw= ;{id = 62298} +067479706531380C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706531390C74797065732D7369676E6564027762087369646E6C616273026E6C000006000020000003 +type18.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type19.types-signed.wb.sidnlabs.nl. AFSDB RRSIG NSEC +067479706531380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009DA2934C057BE75EEA6016192CF88374021A4575633A69AE87BF7A495DCB3BEC6D23C176963EB76BEDF5907E2C27F317A66E6039B789A6FE8CCE3AA0EBC9E3CB8052072B5499F9F75923A1C8A43548EC2CEA0DC5DAC27B8EBD478A75EDD9605A2F2B9BEAC700B8E4C34295CB3D7BCDD49CEE346504812F1F97AC957E7493F809 +type18.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. naKTTAV7517qYBYZLPiDdAIaRXVjOmmuh796SV3LO+xtI8F2lj63a+31kH4sJ/MXpm5gObeJpv6Mzjqg68njy4BSBytUmfn3WSOhyKQ1SOws6g3F2sJ7jr1HinXt2WBaLyub6scAuOTDQpXLPXvN1JzuNGUEgS8fl6yVfnST+Ak= ;{id = 62298} +067479706531390C74797065732D7369676E6564027762087369646E6C616273026E6C00001300010000003C000B0A33303333303333303333 +type19.types-signed.wb.sidnlabs.nl. 60 IN X25 "3033033033" +067479706531390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00CB1435F13DA39A918CDEEE1BA9C5BD15EBA402434DF0A1363A0DDC6CF6FC0E046A5E50CE334C8DCA099A1872A932DDCF1E55FF6EBF33362C6B65F6A11D73C307E20ADFE3F05A032478976D9146CF01B1E29C28B09CEB8E853C6E9D2995C2E18028DF98275E327DC99847160D7BC819B5E3FF3EA7254C8AC333AAF69E203999C5 +type19.types-signed.wb.sidnlabs.nl. 60 IN RRSIG X25 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. yxQ18T2jmpGM3u4bqcW9FeukAkNN8KE2Og3cbPb8DgRqXlDOM0yNygmaGHKpMt3PHlX/br8zNixrZfahHXPDB+IK3+PwWgMkeJdtkUbPAbHinCiwnOuOhTxunSmVwuGAKN+YJ14yfcmYRxYNe8gZteP/PqclTIrDM6r2niA5mcU= ;{id = 62298} +067479706531390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532300C74797065732D7369676E6564027762087369646E6C616273026E6C000006000010000003 +type19.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type20.types-signed.wb.sidnlabs.nl. X25 RRSIG NSEC +067479706531390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0030D30AEA9FC35111E7D134FB0DB48EC3E6DAEEF2019B03742011ADE10C592C2CB98CE1EE86921F718B57783FACFB2791760A64AA9E102DA23F7AA5F095A313C52F3273F4189A857D94A180AE7235BB6FFDE7863199C29F664AD1B5A0435A1D667C114EFE198DCD735D5322A962702196D7766EF29FFDFB394C4A5A6AB48CDD91 +type19.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. MNMK6p/DURHn0TT7DbSOw+ba7vIBmwN0IBGt4QxZLCy5jOHuhpIfcYtXeD+s+yeRdgpkqp4QLaI/eqXwlaMTxS8yc/QYmoV9lKGArnI1u2/954YxmcKfZkrRtaBDWh1mfBFO/hmNzXNdUyKpYnAhltd2bvKf/fs5TEpaarSM3ZE= ;{id = 62298} +067479706532300C74797065732D7369676E6564027762087369646E6C616273026E6C00001400010000003C00180C6973646E2D616464726573730A73756261646472657373 +type20.types-signed.wb.sidnlabs.nl. 60 IN ISDN "isdn-address" "subaddress" +067479706532300C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003E87F64D1DAC92B9DE83228DCDDE1FFE0A89C746BB3906DB1768A1BDCBC6CA6F29010D384BFD2ED7E4CD9E470C4BBFE53BB5DC62C484B564CC601F787DCA90ECB6A2294F7128E936899C6D3068F8378E9E0530B6101B389647CED450B5663DCB5CC2D2C28C5EC8990E5895F3220AA50C7969A223B716F4BF0D5B3FAE69AEF792 +type20.types-signed.wb.sidnlabs.nl. 60 IN RRSIG ISDN 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Pof2TR2skrnegyKNzd4f/gqJx0a7OQbbF2ihvcvGym8pAQ04S/0u1+TNnkcMS7/lO7XcYsSEtWTMYB94fcqQ7LaiKU9xKOk2iZxtMGj4N46eBTC2EBs4lkfO1FC1Zj3LXMLSwoxeyJkOWJXzIgqlDHlpoiO3FvS/DVs/rmmu95I= ;{id = 62298} +067479706532300C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532310C74797065732D7369676E6564027762087369646E6C616273026E6C000006000008000003 +type20.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type21.types-signed.wb.sidnlabs.nl. ISDN RRSIG NSEC +067479706532300C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00295C19B04B2FEC64F9740D0C8DA48CAE00A7AF61502486FEC0384F1F82C6265A9ADA0C1462F74297643F105642B7157743A993086B005F8E86936C9D57D706E2BA52DAF0FC6A5C42FF19B45B60BACE3F9E1023F809738728600CD42F7464DD29F5F1F3CCF08A0FC70758B28F8B8EC25CE27F86440D430644CD44221B9F6626B0 +type20.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KVwZsEsv7GT5dA0MjaSMrgCnr2FQJIb+wDhPH4LGJlqa2gwUYvdCl2Q/EFZCtxV3Q6mTCGsAX46Gk2ydV9cG4rpS2vD8alxC/xm0W2C6zj+eECP4CXOHKGAM1C90ZN0p9fHzzPCKD8cHWLKPi47CXOJ/hkQNQwZEzUQiG59mJrA= ;{id = 62298} +067479706532310C74797065732D7369676E6564027762087369646E6C616273026E6C00001500010000003C0026000A067274686F73740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type21.types-signed.wb.sidnlabs.nl. 60 IN RT 10 rthost.types-signed.wb.sidnlabs.nl. +067479706532310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00526E5CF996A1A75CA27CC6E8E3608C4ECEAF96154012257FE2F8DDE3549525283DC1D69F2C5C593C5C4D44E736AA6A863D1D4353E44D71FEEEE3B006D6395DE8F28134F55212BFD10EB6F91824E831D3CF3CC830A79799F6D53D5ADB887FA2FE92211DCD27FB23DD7B1B248B60F9EF0B21C8A9F1489779F09D24A4BEE2C3B865 +type21.types-signed.wb.sidnlabs.nl. 60 IN RRSIG RT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Um5c+Zahp1yifMbo42CMTs6vlhVAEiV/4vjd41SVJSg9wdafLFxZPFxNROc2qmqGPR1DU+RNcf7u47AG1jld6PKBNPVSEr/RDrb5GCToMdPPPMgwp5eZ9tU9WtuIf6L+kiEdzSf7I917GySLYPnvCyHIqfFIl3nwnSSkvuLDuGU= ;{id = 62298} +067479706532310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532320C74797065732D7369676E6564027762087369646E6C616273026E6C000006000004000003 +type21.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type22.types-signed.wb.sidnlabs.nl. RT RRSIG NSEC +067479706532310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007D9960A3FE9ED8906407B2F05C300C805CE4C83A2E74E863AE234E4A144E6B210D3B22BB949484D73DC8D0A4C7959552691CF341529339A995A974C31F37CA8857F12E384D1FDF4FCF55D130B84F03A6F4D57CBB31126B0C22E2E8AA02B22135ACE68A49CE587D6411438A410017AEC9346B2E7CB3CD6C3C9E20721620E78B23 +type21.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fZlgo/6e2JBkB7LwXDAMgFzkyDoudOhjriNOShROayENOyK7lJSE1z3I0KTHlZVSaRzzQVKTOamVqXTDHzfKiFfxLjhNH99Pz1XRMLhPA6b01Xy7MRJrDCLi6KoCsiE1rOaKSc5YfWQRQ4pBABeuyTRrLnyzzWw8niByFiDniyM= ;{id = 62298} +067479706532320C74797065732D7369676E6564027762087369646E6C616273026E6C00001600010000003C001447000580005A0000000001E133FFFFFF00016100 +type22.types-signed.wb.sidnlabs.nl. 60 IN NSAP 0x47000580005A0000000001E133FFFFFF00016100 +067479706532320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001608050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005EF66E752297DFD1983E3543632EC347E983B86CB3FC75B0436C3CBB09DD07E46239B4BC92D1FA7437984D3BCA73000A11CB7FD2DB447C98060427A27A3206D4F2AEAB92D6136934E83D3084D9157B7F1E1818FA76A9B3A2200554AC0384106F3CA0F3580C5C5A73DAB9CED2F43364ED58F1F25580510EEBF744336351091B86 +type22.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NSAP 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. XvZudSKX39GYPjVDYy7DR+mDuGyz/HWwQ2w8uwndB+RiObS8ktH6dDeYTTvKcwAKEct/0ttEfJgGBCeiejIG1PKuq5LWE2k06D0whNkVe38eGBj6dqmzoiAFVKwDhBBvPKDzWAxcWnPauc7S9DNk7Vjx8lWAUQ7r90QzY1EJG4Y= ;{id = 62298} +067479706532320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532360C74797065732D7369676E6564027762087369646E6C616273026E6C000006000002000003 +type22.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type26.types-signed.wb.sidnlabs.nl. NSAP RRSIG NSEC +067479706532320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003EFCB61BD5CC7518A211C94BF9930F665CD8E52BB76DAD551CD9D84A9815989953F060F9192052096532DB5E22E02A63F2F8233AB423D8EA5D538445E08592D0DF88F6A0452D840D3914EEA4F21781A7E13CDFC622EB4C5CF037BE57F02D6B858E6606C9F7A3E916290ABD249898337C5967DA0EF364984369A71DFF9C85E38E +type22.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Pvy2G9XMdRiiEclL+ZMPZlzY5Su3ba1VHNnYSpgVmJlT8GD5GSBSCWUy214i4Cpj8vgjOrQj2OpdU4RF4IWS0N+I9qBFLYQNORTupPIXgafhPN/GIutMXPA3vlfwLWuFjmYGyfej6RYpCr0kmJgzfFln2g7zZJhDaacd/5yF444= ;{id = 62298} +067479706532360C74797065732D7369676E6564027762087369646E6C616273026E6C00001A00010000003C004B000A066D61703832320C74797065732D7369676E6564027762087369646E6C616273026E6C00076D6170783430300C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type26.types-signed.wb.sidnlabs.nl. 60 IN PX 10 map822.types-signed.wb.sidnlabs.nl. mapx400.types-signed.wb.sidnlabs.nl. +067479706532360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0007BC7E6C58CCE5E16BF4CFA26F477CD74804445F84883BE10554235BA6B94900A14957C43BF8FB303ED7113174BC69CB6070BA5018B1567A707EF3E9D5CE0560E9BDD6D8862FAB070717C6F9F60F8B043FFDC228680061DBC169A5F487165578D7EB178DCA0AC3675C2337021926099789A1BD72DF6FEFACA81E7D9739C79ABF +type26.types-signed.wb.sidnlabs.nl. 60 IN RRSIG PX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B7x+bFjM5eFr9M+ib0d810gERF+EiDvhBVQjW6a5SQChSVfEO/j7MD7XETF0vGnLYHC6UBixVnpwfvPp1c4FYOm91tiGL6sHBxfG+fYPiwQ//cIoaABh28FppfSHFlV41+sXjcoKw2dcIzcCGSYJl4mhvXLfb++sqB59lznHmr8= ;{id = 62298} +067479706532360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532370C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000200003 +type26.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type27.types-signed.wb.sidnlabs.nl. PX RRSIG NSEC +067479706532360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B37F1C2B73BB1D6A5EE4A53E2E9E8F893F0A4E20FD62BC7C1C56D2A40D59AC7CD25157555FC677BB9DCAA76C3F07710B381DBB61EEF2A8896A67F1AF40107DFC5BD74B62593ACFFBE407DEA015E12D72294725BDC7B8218FDC5E991A5676CC9BAC59B8A2D743F3A3A479226167D54973C7DAE32267D2AD6DE873CC8ABDCFA07E +type26.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. s38cK3O7HWpe5KU+Lp6PiT8KTiD9Yrx8HFbSpA1ZrHzSUVdVX8Z3u53Kp2w/B3ELOB27Ye7yqIlqZ/GvQBB9/FvXS2JZOs/75AfeoBXhLXIpRyW9x7ghj9xemRpWdsybrFm4otdD86OkeSJhZ9VJc8fa4yJn0q1t6HPMir3PoH4= ;{id = 62298} +067479706532370C74797065732D7369676E6564027762087369646E6C616273026E6C00001B00010000003C00120532332E36370532332E36370532332E3637 +type27.types-signed.wb.sidnlabs.nl. 60 IN GPOS "23.67" "23.67" "23.67" +067479706532370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0013BF8CA0C46CABE234D3A0D55A9D4D2A30449E21A25E889DBAE3499A2C567B8F652C2CB2F67A83767D6B5963205F7FBF83A79318E702C558E30688507E062029FCF4EBD2EC5DEE7DFEB6C3C2F326131920401A05444AAA326CC9D118139C43A4A0DC834ECE3ECF883DAC78B03031F15432A5ACD4331587F43B22176CBA0A6E14 +type27.types-signed.wb.sidnlabs.nl. 60 IN RRSIG GPOS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. E7+MoMRsq+I006DVWp1NKjBEniGiXoiduuNJmixWe49lLCyy9nqDdn1rWWMgX3+/g6eTGOcCxVjjBohQfgYgKfz069LsXe59/rbDwvMmExkgQBoFREqqMmzJ0RgTnEOkoNyDTs4+z4g9rHiwMDHxVDKlrNQzFYf0OyIXbLoKbhQ= ;{id = 62298} +067479706532370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532380C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000100003 +type27.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type28.types-signed.wb.sidnlabs.nl. GPOS RRSIG NSEC +067479706532370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C005FA879F3D1C9D30ACAB487853ABD326942CF6FAC281F629AE5B65DAF5095824E1C3AEE6D368FFCD0AB912540E07A08C0F002C91671C910D25B07EAE86E05BE30C8C776B771623DFA92623A54DAD4215E5FECC6AA5409C43C5C1A9E61F523C22C32B602B685B21D2AD1C0DB1BDA0437FAC962A8CF6E4D7B38AECC4B709255924C +type27.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. X6h589HJ0wrKtIeFOr0yaULPb6woH2Ka5bZdr1CVgk4cOu5tNo/80KuRJUDgegjA8ALJFnHJENJbB+robgW+MMjHdrdxYj36kmI6VNrUIV5f7MaqVAnEPFwanmH1I8IsMrYCtoWyHSrRwNsb2gQ3+sliqM9uTXs4rsxLcJJVkkw= ;{id = 62298} +067479706532380C74797065732D7369676E6564027762087369646E6C616273026E6C00001C00010000003C0010200107B80C0500000000000000800004 +type28.types-signed.wb.sidnlabs.nl. 60 IN AAAA 2001:7b8:c05::80:4 +067479706532380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001C08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AA2FC22A85C6F37F758FE28B30415328F22C239286C97766EE24E56F365A5453FEF070C066BA639FD13E6BD65FAE8744C42DAC0FBB3334491A3A46E14C01062D5994116D8E6A341C64B7A15AC59488B7B1BE1A4380A7D67DD87900950AB5077E7C5F6493E3587EA81CDA9D10553EED1818664B133A0A7BEE50A607FC4699035A +type28.types-signed.wb.sidnlabs.nl. 60 IN RRSIG AAAA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. qi/CKoXG8391j+KLMEFTKPIsI5KGyXdm7iTlbzZaVFP+8HDAZrpjn9E+a9ZfrodExC2sD7szNEkaOkbhTAEGLVmUEW2OajQcZLehWsWUiLexvhpDgKfWfdh5AJUKtQd+fF9kk+NYfqgc2p0QVT7tGBhmSxM6CnvuUKYH/EaZA1o= ;{id = 62298} +067479706532380C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706532390C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000080003 +type28.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type29.types-signed.wb.sidnlabs.nl. AAAA RRSIG NSEC +067479706532380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0044B6B17BB55C82073DC54D291632081B6486C5A743118D087DC012E962033FF5492A413106B452EB1F0687A174FA95E251F88D6CF177FCCC4B6B99CA73646978B526DE12CAFFA14B8078FCF354C009A85E6AD84DC7C5BBD4F0BABD43B487F282CB9EC4D157C4773C377388BE840C0C0D933308E0E30AA7377BB7AD488D22BFA9 +type28.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. RLaxe7Vcggc9xU0pFjIIG2SGxadDEY0IfcAS6WIDP/VJKkExBrRS6x8Gh6F0+pXiUfiNbPF3/MxLa5nKc2RpeLUm3hLK/6FLgHj881TACaheathNx8W71PC6vUO0h/KCy57E0VfEdzw3c4i+hAwMDZMzCODjCqc3e7etSI0iv6k= ;{id = 62298} +067479706532390C74797065732D7369676E6564027762087369646E6C616273026E6C00001D00010000003C0010002325238CE82360854A10A000989A68 +type29.types-signed.wb.sidnlabs.nl. 60 IN LOC 60 09 00.000 N 24 39 00.000 E 10m 20m 2000m 20m +067479706532390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001D08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00773797EE5E6DFECA51B59E29778C2A298852D0C43ECF4881F669C3D6899167DCBCA965B2CDEE827C8A3FD56B8B15A18B667FDEE9F26776F1FFA32587C0707707FD8F27F035D4F94114EAD802A35654E7E2F300F7FA1D9EC9B7693CFDF6655BCB3C70D6FB2C19CC4D4FA7DC2AD97531CA030F8F18F1393268A20E7581461B87FE +type29.types-signed.wb.sidnlabs.nl. 60 IN RRSIG LOC 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dzeX7l5t/spRtZ4pd4wqKYhS0MQ+z0iB9mnD1omRZ9y8qWWyze6CfIo/1WuLFaGLZn/e6fJndvH/oyWHwHB3B/2PJ/A11PlBFOrYAqNWVOfi8wD3+h2eybdpPP32ZVvLPHDW+ywZzE1Pp9wq2XUxygMPjxjxOTJoog51gUYbh/4= ;{id = 62298} +067479706532390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574797065330C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000040003 +type29.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type3.types-signed.wb.sidnlabs.nl. LOC RRSIG NSEC +067479706532390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BDB57CC449238634F579867CBD19A93EE5F5A54704529643D9EB855F8E713775627A8E64AD9167D0E4DAD169AD5726296C1C1627004310BD1F6DFD571C19C1782C2B14344AEF07407CAC85049478BBF755E62FC044ED7F8174E8CA99534B72487695D199BF89ED46731D50AF17EB15A2BA89F1935ED81AFF6F4A83E6F122FE51 +type29.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vbV8xEkjhjT1eYZ8vRmpPuX1pUcEUpZD2euFX45xN3Vieo5krZFn0OTa0WmtVyYpbBwWJwBDEL0fbf1XHBnBeCwrFDRK7wdAfKyFBJR4u/dV5i/ARO1/gXToyplTS3JIdpXRmb+J7UZzHVCvF+sVorqJ8ZNe2Br/b0qD5vEi/lE= ;{id = 62298} +0574797065330C74797065732D7369676E6564027762087369646E6C616273026E6C00000300010000003C002D0F6D61696C64657374696E6174696F6E0C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type3.types-signed.wb.sidnlabs.nl. 60 IN MD maildestination.types-signed.wb.sidnlabs.nl. +0574797065330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0074C05F690F450A80517066CF8B10B270801C46C6E1698DCC77377BBBC2DE4197325608D92F0A1EB7B947C176663306F199FDA45D800DA6DB817004EE2B5CF851C8DF743F1FF70A002EA5736657EAA9BB96FF7500AFA9B6FF72DD11FA10EF3829F0D31677A9DDCF779E76CD04CF9509A4BB72532C552E1032FB5BA4871CD90754 +type3.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MD 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. dMBfaQ9FCoBRcGbPixCycIAcRsbhaY3Mdzd7u8LeQZcyVgjZLwoet7lHwXZmMwbxmf2kXYANptuBcATuK1z4UcjfdD8f9woALqVzZlfqqbuW/3UAr6m2/3LdEfoQ7zgp8NMWd6ndz3eeds0Ez5UJpLtyUyxVLhAy+1ukhxzZB1Q= ;{id = 62298} +0574797065330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706533330C74797065732D7369676E6564027762087369646E6C616273026E6C000006100000000003 +type3.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type33.types-signed.wb.sidnlabs.nl. MD RRSIG NSEC +0574797065330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00BD5A512FED79316CC332589D316A1E86D20F7FBF33917092964744E7C31DFDF5AB848BF43FDD2E2A779C37D55CF20B7E1BFD33619AB427696AE377915F12BD17789C9CD3E72AAE5C1FBF71C148D4600E38449CA9F89A00EA7D9A49152D9950DAA2A804A5E54AC8769A76EA34130C76CDD9CA4508B31DAE6118D2D0C31E88D4BA +type3.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. vVpRL+15MWzDMlidMWoehtIPf78zkXCSlkdE58Md/fWrhIv0P90uKnecN9Vc8gt+G/0zYZq0J2lq43eRXxK9F3icnNPnKq5cH79xwUjUYA44RJyp+JoA6n2aSRUtmVDaoqgEpeVKyHaaduo0Ewx2zdnKRQizHa5hGNLQwx6I1Lo= ;{id = 62298} +067479706533330C74797065732D7369676E6564027762087369646E6C616273026E6C00002100010000003C0030FFFFFFFFFFFF0C6F6C642D736C6F772D626F780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type33.types-signed.wb.sidnlabs.nl. 60 IN SRV 65535 65535 65535 old-slow-box.types-signed.wb.sidnlabs.nl. +067479706533330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0054BF20268131FF6311F93EDA4B52FAE5644280659E9CE17AF40E93C0FDA769CAFB0EE7B2BA240E298FB7C4CF5FBBE078D8D0DBB331D0C22725DC6F8DC044B48B3A69E78CBA1D1F2FC3F7E01035B4D1026308C328C79BBF07918A7E20A0EFF091A9020909E4A3EF97629A699383F6EB299B6F8C8A5CCDB48B77C889C176F24C53 +type33.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SRV 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. VL8gJoEx/2MR+T7aS1L65WRCgGWenOF69A6TwP2nacr7DueyuiQOKY+3xM9fu+B42NDbszHQwicl3G+NwES0izpp54y6HR8vw/fgEDW00QJjCMMox5u/B5GKfiCg7/CRqQIJCeSj75dimmmTg/brKZtvjIpczbSLd8iJwXbyTFM= ;{id = 62298} +067479706533330C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706533350C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000004003 +type33.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type35.types-signed.wb.sidnlabs.nl. SRV RRSIG NSEC +067479706533330C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0033A38561B0A2A9948105A8121B1EED11A796A2DF882E743034A5121FC9A8ACC02C67DC9C9293B2ABBA18D97ED3D36243492FF4647C9047452E907EC10FBD99E1D80C23327C9E6D21A1ABBFB1202346959167956891FF581335C42AF45DC2A73AABE2E34FC2AE59578A30AF70FAE04FEB08184B9028F87A95D2182D6CD9E3611A +type33.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. M6OFYbCiqZSBBagSGx7tEaeWot+ILnQwNKUSH8morMAsZ9yckpOyq7oY2X7T02JDSS/0ZHyQR0UukH7BD72Z4dgMIzJ8nm0hoau/sSAjRpWRZ5Vokf9YEzXEKvRdwqc6q+LjT8KuWVeKMK9w+uBP6wgYS5Ao+HqV0hgtbNnjYRo= ;{id = 62298} +067479706533350C74797065732D7369676E6564027762087369646E6C616273026E6C00002300010000003C003F00640064017308687474702B6C407200056E617074720B7265706C6163656D656E740C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type35.types-signed.wb.sidnlabs.nl. 60 IN NAPTR 100 100 "s" "http+l@r" "" naptr.replacement.types-signed.wb.sidnlabs.nl. +067479706533350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009C19EEDA585AB44AC64668D3795FE282A4794657F9BAEA0713130C74A01624E3410628501E6F896A64BE86164360A50BB1E86ACF64615C70099379F93E03440830DFC3C86E0CE1CFCCD598414D18DD8DFFA2B063E7351630F92BB37151F3128FA22D10354788493B4F06D9D926351D594C602F8906D2C5D06421D2C19BD1C90E +type35.types-signed.wb.sidnlabs.nl. 60 IN RRSIG NAPTR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. nBnu2lhatErGRmjTeV/igqR5Rlf5uuoHExMMdKAWJONBBihQHm+JamS+hhZDYKULsehqz2RhXHAJk3n5PgNECDDfw8huDOHPzNWYQU0Y3Y3/orBj5zUWMPkrs3FR8xKPoi0QNUeISTtPBtnZJjUdWUxgL4kG0sXQZCHSwZvRyQ4= ;{id = 62298} +067479706533350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706533360C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000001003 +type35.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type36.types-signed.wb.sidnlabs.nl. NAPTR RRSIG NSEC +067479706533350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A6977F257ABD09285F999B03BCA5B6FD8B39524AC5E3851867258AA348F11A56090D130E1D69893CA623FD45E831B7A4E1FFDFA7A8B3F68BE97AAA3ADDB37D28A3CD738186771AA8148EAEC65589F66D8BE957115CE9E129E28B4D116900C9FB981747055818658917F2ED15667CB12F6CDF0EA685882E15685D32C9C7677B34 +type35.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ppd/JXq9CShfmZsDvKW2/Ys5UkrF44UYZyWKo0jxGlYJDRMOHWmJPKYj/UXoMbek4f/fp6iz9ovpeqo63bN9KKPNc4GGdxqoFI6uxlWJ9m2L6VcRXOnhKeKLTRFpAMn7mBdHBVgYZYkX8u0VZnyxL2zfDqaFiC4VaF0yycdnezQ= ;{id = 62298} +067479706533360C74797065732D7369676E6564027762087369646E6C616273026E6C00002400010000003C0022000A026B780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type36.types-signed.wb.sidnlabs.nl. 60 IN KX 10 kx.types-signed.wb.sidnlabs.nl. +067479706533360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C002F98CBD797366929192B6056CA2DBBEBB31B18AA744508DAFC4A0A2047300BD4A4DE812F21749F87BC05B139EE9A3CB8C2DAD344DF3832939980F6871FB9E24724F3C17BEC179DB0E04EC2546562DD7A0EAEF76AC67A4B241E760E885ADD111F517BD4D9F785C67874453340F7D40CF06ED3B46E5F4E1B7990CC77FC602CDAB7 +type36.types-signed.wb.sidnlabs.nl. 60 IN RRSIG KX 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. L5jL15c2aSkZK2BWyi2767MbGKp0RQja/EoKIEcwC9Sk3oEvIXSfh7wFsTnumjy4wtrTRN84MpOZgPaHH7niRyTzwXvsF52w4E7CVGVi3XoOrvdqxnpLJB52Doha3REfUXvU2feFxnh0RTNA99QM8G7TtG5fTht5kMx3/GAs2rc= ;{id = 62298} +067479706533360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706533370C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000803 +type36.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type37.types-signed.wb.sidnlabs.nl. KX RRSIG NSEC +067479706533360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0077A60055EFEBD967DB3D15CE97ABA9D555A9D17503447F93AED8BA8A8057D32F9CB163F0E230E5205706ACEA040A860FA5FF605326DC490B646CDF68D5A7D63C4C4390E30927B77F255C68017102232AA180DBF95B46E73C90A704A4B0D87FB161FAC81C0A91E4B373717DDBD8FDE520D0F2E49997AFE4C3C957E89070A40B1F +type36.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. d6YAVe/r2WfbPRXOl6up1VWp0XUDRH+Trti6ioBX0y+csWPw4jDlIFcGrOoECoYPpf9gUybcSQtkbN9o1afWPExDkOMJJ7d/JVxoAXECIyqhgNv5W0bnPJCnBKSw2H+xYfrIHAqR5LNzcX3b2P3lINDy5JmXr+TDyVfokHCkCx8= ;{id = 62298} +067479706533370C74797065732D7369676E6564027762087369646E6C616273026E6C00002500010000003C0055FFFEFFFFFE33115C6F2F64FF2BDE74C7D080ACE11F97ABD0CBBFBC82F3E39224B2471E1468225829FF1B11E16A2E9502E1C0A0D533E18A14D6D55F4824AA4189FAFFFD7553A36577CD2311E0BC693ACEF8A2A609A6 +type37.types-signed.wb.sidnlabs.nl. 60 IN CERT 65534 65535 254 MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= +067479706533370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004A508E9762CF3169255799A6302E19F4BCC4CBD1888593E6F9D557869ECB15CD029B147DE33029E8DACD426A3FE4B00C09CA9669766D061B320E0421719160F75F4956498AEF2889F5BCEA220F1141434EB4C878A48F53B58820EC54573373243EEFB24F2EC762FFEB161B803375FD220213A1D79E55E480AD2631F6188E0210 +type37.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CERT 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. SlCOl2LPMWklV5mmMC4Z9LzEy9GIhZPm+dVXhp7LFc0CmxR94zAp6NrNQmo/5LAMCcqWaXZtBhsyDgQhcZFg919JVkmK7yiJ9bzqIg8RQUNOtMh4pI9TtYgg7FRXM3MkPu+yTy7HYv/rFhuAM3X9IgITodeeVeSArSYx9hiOAhA= ;{id = 62298} +067479706533370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706533390C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000403 +type37.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type39.types-signed.wb.sidnlabs.nl. CERT RRSIG NSEC +067479706533370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A3F53595336329EFF2423BA7B9582BECF007F6CBBB1C04D6F3417EFC7D87F91F80A5AEA4B5D3F89991554DD51AC529C3DCACD5E87D98E25F12649D98A2A9AE9000F29E0ADFC1CAB3D17CB41D397F128F41AE7646A94678CF20C1B192B7BAF90CDEC2CE0C64503588414A61149F431438045779C247E81B9F04FDDCB2F5081D9E +type37.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. o/U1lTNjKe/yQjunuVgr7PAH9su7HATW80F+/H2H+R+Apa6ktdP4mZFVTdUaxSnD3KzV6H2Y4l8SZJ2YoqmukADyngrfwcqz0Xy0HTl/Eo9BrnZGqUZ4zyDBsZK3uvkM3sLODGRQNYhBSmEUn0MUOARXecJH6BufBP3csvUIHZ4= ;{id = 62298} +067479706533390C74797065732D7369676E6564027762087369646E6C616273026E6C00002700010000003C000E0C646E616D652D74617267657400 +type39.types-signed.wb.sidnlabs.nl. 60 IN DNAME dname-target. +067479706533390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF002708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00666102AA42F2ED0C389C6A3C1780DC2A9B3949E02315AEE9FE70B1A45F331991FD2D00B0CF13A6C2534295DEA89839D8B1CC773A01471BE189FB7ACC4635BE67201CF54D58F766C3A448C3CFB50A756994A53513EEB2740AEAF4F065787563E108F8CE1EA36789C9999C6E655D90B34ACB0513DB63B8BB2FCD9AC847CAD4C46F +type39.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZmECqkLy7Qw4nGo8F4DcKps5SeAjFa7p/nCxpF8zGZH9LQCwzxOmwlNCld6omDnYscx3OgFHG+GJ+3rMRjW+ZyAc9U1Y92bDpEjDz7UKdWmUpTUT7rJ0Cur08GV4dWPhCPjOHqNnicmZnG5lXZCzSssFE9tjuLsvzZrIR8rUxG8= ;{id = 62298} +067479706533390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574797065340C74797065732D7369676E6564027762087369646E6C616273026E6C000006000000000103 +type39.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type4.types-signed.wb.sidnlabs.nl. DNAME RRSIG NSEC +067479706533390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0029B6CE781C9E09ED9879F8CA23953548F5188B0382935B7060A6FA8799A6F8D2F4C440E26224FEA9D4A9F2C474B2D7B555687A82B8A427067C13F69A159944B1B7CA44431D4F4371D9A589384704E353FBCBACF9BE28EF225F0CB01F342F3702C02D0FC8E83FD8460764E4EDCE28224DA033F60A7ADC84C3AC25EBC9CA286F05 +type39.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. KbbOeByeCe2YefjKI5U1SPUYiwOCk1twYKb6h5mm+NL0xEDiYiT+qdSp8sR0ste1VWh6grikJwZ8E/aaFZlEsbfKREMdT0Nx2aWJOEcE41P7y6z5vijvIl8MsB80LzcCwC0PyOg/2EYHZOTtzigiTaAz9gp63ITDrCXrycoobwU= ;{id = 62298} +0574797065340C74797065732D7369676E6564027762087369646E6C616273026E6C00000400010000003C002B0D6D61696C666F727761726465720C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type4.types-signed.wb.sidnlabs.nl. 60 IN MF mailforwarder.types-signed.wb.sidnlabs.nl. +0574797065340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00795FADE35280832C3F48D7C0151743C57D2B45A86F05B5492064FAABD8197D7DB90842B5476F690F05FBAC6D7B6D52BA31DB0A54539965EC0A1AF8E81D443E9B11CEE76175FC8ED14CBC95C9ED33FA8AA2C131CAE9321D4789EBB441897B0C0D73F3F7C6C465F18FE15E96C261704149E0ECAC8C660651D66CA224C5072D1ED4 +type4.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. eV+t41KAgyw/SNfAFRdDxX0rRahvBbVJIGT6q9gZfX25CEK1R29pDwX7rG17bVK6MdsKVFOZZewKGvjoHUQ+mxHO52F1/I7RTLyVye0z+oqiwTHK6TIdR4nrtEGJewwNc/P3xsRl8Y/hXpbCYXBBSeDsrIxmBlHWbKIkxQctHtQ= ;{id = 62298} +0574797065340C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706534390C74797065732D7369676E6564027762087369646E6C616273026E6C000006080000000003 +type4.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type49.types-signed.wb.sidnlabs.nl. MF RRSIG NSEC +0574797065340C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0002B8C2DE0BB2A14FE489C55937A6901CF217EB42661855B74E5C1AA4877BC29591CBB7AD99C89428F477FBDAB1D3FC5B67CC2E3EDA3C2AC13ED3CDCFD859DDDA0C24E7A75EBCE20A95FC498792C3FEF0E138274ABFD7D9DFCB242F1CD7B515F6633AF587C3E13B433395D8C1D8734BA2B9F2A61F8F5C66F7A005216A38376FB7 +type4.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ArjC3guyoU/kicVZN6aQHPIX60JmGFW3TlwapId7wpWRy7etmciUKPR3+9qx0/xbZ8wuPto8KsE+083P2Fnd2gwk56devOIKlfxJh5LD/vDhOCdKv9fZ38skLxzXtRX2Yzr1h8PhO0MzldjB2HNLornyph+PXGb3oAUhajg3b7c= ;{id = 62298} +067479706534390C74797065732D7369676E6564027762087369646E6C616273026E6C00003100010000003C0023000201636FC0B8271C82825BB1AC5C41CF5351AA69B4FEBD94E8F17CDB95000DA48C40 +type49.types-signed.wb.sidnlabs.nl. 60 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA= +067479706534390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004F25023648D4D5C1F548BEC27599259D4AE78398E159839091757E9516EBFE0DA527785B227C99D231A9E21AB27BD8CDEDDAD30F95DA06DCDEB31CE4C8413A2A80021205A9BC2622D326FAED444E44B6D29DF93D57AE545A34D04D687D51092BF03B753D5290D7CC34BA4897087B0FD2C6C02B2938992C85369B0508B2B8E8BB +type49.types-signed.wb.sidnlabs.nl. 60 IN RRSIG DHCID 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. TyUCNkjU1cH1SL7CdZklnUrng5jhWYOQkXV+lRbr/g2lJ3hbInyZ0jGp4hqye9jN7drTD5XaBtzesxzkyEE6KoACEgWpvCYi0yb67URORLbSnfk9V65UWjTQTWh9UQkr8Dt1PVKQ18w0ukiXCHsP0sbAKyk4mSyFNpsFCLK46Ls= ;{id = 62298} +067479706534390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C0574797065350C74797065732D7369676E6564027762087369646E6C616273026E6C00000700000000000340 +type49.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type5.types-signed.wb.sidnlabs.nl. RRSIG NSEC DHCID +067479706534390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00AD4E315A771397331D8132C9573DD66F4E59A5680C452B80CAE889366FA7D3EB439F84B9AB9A11C24D96F0C673332B8AC7D88B261134C54E47E03C5E201CF27AD58A563687697B7AFA16F422DB6B05E5BF3C7544FE13DB4BAAF93B3A27E594D4E83CE0C584A73215AE8A558B1EB521B35CDA47A05FE910C9C3219CF562BBE9E5 +type49.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rU4xWncTlzMdgTLJVz3Wb05ZpWgMRSuAyuiJNm+n0+tDn4S5q5oRwk2W8MZzMyuKx9iLJhE0xU5H4DxeIBzyetWKVjaHaXt6+hb0IttrBeW/PHVE/hPbS6r5Ozon5ZTU6DzgxYSnMhWuilWLHrUhs1zaR6Bf6RDJwyGc9WK76eU= ;{id = 62298} +0574797065350C74797065732D7369676E6564027762087369646E6C616273026E6C00000500010000003C0021037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type5.types-signed.wb.sidnlabs.nl. 60 IN CNAME www.types-signed.wb.sidnlabs.nl. +0574797065350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000508050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D27B676C96D3CA1D345CFF79B177C4C6262B5AA37857AEBC8DAA614555CABB3332562B9842FE57A97BCE737EC135EFC0D70EEF0417886DD2ED8CD02715A111E563F315D94AE27AD32CB8046A4CD9E4EC2DDCAB9D1E47F568CA5158704C5EE93B25F7A40A45B0FCC321E56A6B6F8226DEED80F34C47554EBD4728529F6B7AF25E +type5.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CNAME 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0ntnbJbTyh00XP95sXfExiYrWqN4V668japhRVXKuzMyViuYQv5XqXvOc37BNe/A1w7vBBeIbdLtjNAnFaER5WPzFdlK4nrTLLgEakzZ5Owt3KudHkf1aMpRWHBMXuk7JfekCkWw/MMh5Wprb4Im3u2A80xHVU69RyhSn2t68l4= ;{id = 62298} +0574797065350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706535320C74797065732D7369676E6564027762087369646E6C616273026E6C000006040000000003 +type5.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type52.types-signed.wb.sidnlabs.nl. CNAME RRSIG NSEC +0574797065350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00956B573C494D3D1D83EFECE600F23492D2CA44CF8E8A98115AB4E340F158D7AA727D26B79D7C2EE0E4F8DDF5A5D9F043E617CDDD4673648CDE375330B6BF396838A203B4EBA9B6B889D369EEBA1B3B8D63D635163B570AA9A39CA7F2C1BFCA8A9E38826E4E76D8179E67B9C97B5001CF32FCEA639DBCBE1010F26F8CB8D55935 +type5.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. lWtXPElNPR2D7+zmAPI0ktLKRM+OipgRWrTjQPFY16pyfSa3nXwu4OT43fWl2fBD5hfN3UZzZIzeN1Mwtr85aDiiA7Trqba4idNp7robO41j1jUWO1cKqaOcp/LBv8qKnjiCbk522BeeZ7nJe1ABzzL86mOdvL4QEPJvjLjVWTU= ;{id = 62298} +067479706535320C74797065732D7369676E6564027762087369646E6C616273026E6C00003400010000003C004301010292003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC +type52.types-signed.wb.sidnlabs.nl. 60 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA346BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE51FFD48C43326CBC +067479706535320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003408050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007C3A756D265A46898DC495A94D7E933F1972DD812433544BB1399008C59EB6B916931484338FD3EA05219F5AA8365265E7ACFA2B995C1917C4B85381CF5D6D1CEEACE97354A1021772A58113C6B9C538D2ED511F9C581DF0A02E7542F1213E168527F9E72201963628A9C4BE5BD1908C493B7ECE94918B740EE0D2FF4A4198BA +type52.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TLSA 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fDp1bSZaRomNxJWpTX6TPxly3YEkM1RLsTmQCMWetrkWkxSEM4/T6gUhn1qoNlJl56z6K5lcGRfEuFOBz11tHO6s6XNUoQIXcqWBE8a5xTjS7VEfnFgd8KAudULxIT4WhSf55yIBljYoqcS+W9GQjEk7fs6UkYt0DuDS/0pBmLo= ;{id = 62298} +067479706535320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D067479706535360C74797065732D7369676E6564027762087369646E6C616273026E6C00000700000000000308 +type52.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type56.types-signed.wb.sidnlabs.nl. RRSIG NSEC TLSA +067479706535320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006B1F8CC540B4EEB2939CEC12AE51C9A45E7DC801E1853F68D3383A6BD918ACB6556876FBB2F0CC37DAAA15AE0B785F6B137B83FCBB41A982732C93E156A708F5AB9AFAF1FFB8111B3397E0F051EA97F8D313D0ED9063DBCE557A4C6B4DBFD3133A339B5CD921BB00D1EF14443A6EB99D9D554E0696E5B631D57F727998965A00 +type52.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ax+MxUC07rKTnOwSrlHJpF59yAHhhT9o0zg6a9kYrLZVaHb7svDMN9qqFa4LeF9rE3uD/LtBqYJzLJPhVqcI9aua+vH/uBEbM5fg8FHql/jTE9DtkGPbzlV6TGtNv9MTOjObXNkhuwDR7xREOm65nZ1VTgaW5bYx1X9yeZiWWgA= ;{id = 62298} +067479706535360C74797065732D7369676E6564027762087369646E6C616273026E6C00003800010000003C001B1A54686973207A6F6E65206973206578706572696D656E74616C2E +type56.types-signed.wb.sidnlabs.nl. 60 IN TYPE56 \# 27 1A54686973207A6F6E65206973206578706572696D656E74616C2E +067479706535360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B12E7FABA91D6B5DE3551B7201515C94C61DCFB936DC679466ED2BBFAB1A295B1991F4FDEB593888EE8AC2F8F9E2D27CCFC5080E72D4C0FF8E40C020E341D0D1444EFCDC7CB1A6F6EAC0642EBEF66A261613F2EE4FD0A945AC8CF222D61C6320122C489899A2A22A47A1E2CDDBC35CB8CD6CBE6BCB50E7035257871DCA713E6B +type56.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TYPE56 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. sS5/q6kda13jVRtyAVFclMYdz7k23GeUZu0rv6saKVsZkfT961k4iO6Kwvj54tJ8z8UIDnLUwP+OQMAg40HQ0URO/Nx8sab26sBkLr72aiYWE/LuT9CpRayM8iLWHGMgEixImJmioipHoeLN28NcuM1svmvLUOcDUleHHcpxPms= ;{id = 62298} +067479706535360C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002E067479706535370C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030080 +type56.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type57.types-signed.wb.sidnlabs.nl. RRSIG NSEC TYPE56 +067479706535360C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00A048098B52D7427863BAF72B594F82610E0381575AB2657B25754F432CDD57839144DA03303329040D9E8BABC5E8DA469B975C2EB48A14B1697EA2413B8FAABAE09B98CD9101710567C719A592CD900D75ACCC497F05C6E08103CB08754EC96D85C60BD6E928CB5B06EB01103E069D71EB5F10FE4593BB0C1F83F7D9BC09634B +type56.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. oEgJi1LXQnhjuvcrWU+CYQ4DgVdasmV7JXVPQyzdV4ORRNoDMDMpBA2ei6vF6NpGm5dcLrSKFLFpfqJBO4+quuCbmM2RAXEFZ8cZpZLNkA11rMxJfwXG4IEDywh1TslthcYL1ukoy1sG6wEQPgadcetfEP5Fk7sMH4P32bwJY0s= ;{id = 62298} +067479706535370C74797065732D7369676E6564027762087369646E6C616273026E6C00003900010000003C00880000010803010001D7B53C9C988E7476474466CC3BA260A461FE5764BF4CE754E6307E3B0764D2E0D1A84B23E52CBE08419A29A851219AF5DE8291DDDDA1D6C76315298C562C25F75EABEAA2998163AC6F1B500D810F6B8931A835FD01BB0D3529DE31DA574435DEBFFCDBD404974B23ACB201C42EF04A5AAED3275F633E555FB5F403C8B5BC39BD +type57.types-signed.wb.sidnlabs.nl. 60 IN TYPE57 \# 136 0000010803010001D7B53C9C988E7476474466CC3BA260A461FE5764BF4CE754E6307E3B0764D2E0D1A84B23E52CBE08419A29A851219AF5DE8291DDDDA1D6C76315298C562C25F75EABEAA2998163AC6F1B500D810F6B8931A835FD01BB0D3529DE31DA574435DEBFFCDBD404974B23ACB201C42EF04A5AAED3275F633E555FB5F403C8B5BC39BD +067479706535370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B886C444A3B0560A1FCB3CD124567D86B6DF794FD31E0F16DEC9F8F0C6D75391319EBD94E2FF4638CF5C49BE69F24B50F01C77DEE2983FE53F294888BF0A3AC4BFA8D2F6BC38E0A4021DB76FEFC7B5FB17BC65CE8CB509AC14C3A598E5F8327B278E0733D1B09D1E03860B062EC940BFC6B8DC08B2E9285144F991E769222D4F +type57.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TYPE57 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. uIbERKOwVgofyzzRJFZ9hrbfeU/THg8W3sn48MbXU5Exnr2U4v9GOM9cSb5p8ktQ8Bx33uKYP+U/KUiIvwo6xL+o0va8OOCkAh23b+/HtfsXvGXOjLUJrBTDpZjl+DJ7J44HM9GwnR4DhgsGLslAv8a43Aiy6ShRRPmR52kiLU8= ;{id = 62298} +067479706535370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002E067479706535380C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030040 +type57.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type58.types-signed.wb.sidnlabs.nl. RRSIG NSEC TYPE57 +067479706535370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0010AD4D7FD5DD692E7927B4885A17E2EC5B34C8EE854A2CDAFBCE28483783AFE7A81D3EA0CEB84E23FED082F981D5F6F37BD26EF6EFC2F4C821D06E5116AA927A9D091A5FD7B44113848B8F322F6E5DF92ECFE3F197690E546F6459BA389FABC8D3C1277E07B2FADF681CDE107C07365081F59A01EB61265F264D1E2DC5503487 +type57.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. EK1Nf9XdaS55J7SIWhfi7Fs0yO6FSiza+84oSDeDr+eoHT6gzrhOI/7QgvmB1fbze9Ju9u/C9Mgh0G5RFqqSep0JGl/XtEEThIuPMi9uXfkuz+Pxl2kOVG9kWbo4n6vI08Enfgey+t9oHN4QfAc2UIH1mgHrYSZfJk0eLcVQNIc= ;{id = 62298} +067479706535380C74797065732D7369676E6564027762087369646E6C616273026E6C00003A00010000003C0020026830076578616D706C6503636F6D00026831076578616D706C6503636F6D00 +type58.types-signed.wb.sidnlabs.nl. 60 IN TALINK h0.example.com. h1.example.com. +067479706535380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003A08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00C9C41FB39C617477B0864A428B90B67D37DD4011DA80BBA5DD17E9D9553C408B9ADB2BC520C38E3117AEA752362084FE89BA883DFB59EA6FFA9BEB6356BB993D268AA097013D487BA041AB636DCCB23511D9BC451226DFDF7EED642CEFD1EF26BC69EBEE097AF589DFC9C963BF6962816C7C0CDF4312A38D884E6698FB6A90FD +type58.types-signed.wb.sidnlabs.nl. 60 IN RRSIG TALINK 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ycQfs5xhdHewhkpCi5C2fTfdQBHagLul3Rfp2VU8QIua2yvFIMOOMReup1I2IIT+ibqIPftZ6m/6m+tjVruZPSaKoJcBPUh7oEGrY23MsjUR2bxFEibf337tZCzv0e8mvGnr7gl69Ynfycljv2ligWx8DN9DEqONiE5mmPtqkP0= ;{id = 62298} +067479706535380C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002E067479706535390C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030020 +type58.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type59.types-signed.wb.sidnlabs.nl. RRSIG NSEC TALINK +067479706535380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000ED11D2F06C798CE081095580E53DB40D30033ACF692C58CB5B617E489C8B89DBCB1129A028EE1C8D74231AC812385203C062629DFE7112874A97EA2DD20031113673D5ADEB9F2643F519D3F76AEE7DA95F82E880C6F0290CE7F3759C545189DE13FA0CE9A2A5B1A252AEDD57E582111479390F7A6E5ED742950453EDD6A6A78 +type58.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. DtEdLwbHmM4IEJVYDlPbQNMAM6z2ksWMtbYX5InIuJ28sRKaAo7hyNdCMayBI4UgPAYmKd/nESh0qX6i3SADERNnPVreufJkP1GdP3au59qV+C6IDG8CkM5/N1nFRRid4T+gzpoqWxolKu3VflghEUeTkPem5e10KVBFPt1qang= ;{id = 62298} +067479706535390C74797065732D7369676E6564027762087369646E6C616273026E6C00003B00010000003C0024FCB2080286632F83494B1D7037E72949FD6CD8689C5DAAF4DF1E5D7E6EF3BA28ECE1E3C8 +type59.types-signed.wb.sidnlabs.nl. 60 IN CDS 64690 8 2 86632F83494B1D7037E72949FD6CD8689C5DAAF4DF1E5D7E6EF3BA28ECE1E3C8 +067479706535390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF003B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0073997BF33E9EECBCAAA6D07C08024AD8358CC26974167BCD432802FB68E6CD1C361539D098FCC57D43B8D104D27AAD32070BEBFC60F002E5D998B615E76580EEFB74F2E8B0E155C0D5782C9E15D89DA036B770C2ACBAD21EE3453D0070C386BD2A154EC7F6481CF69B226E2E12873DE0F753B16F7B5220CDDD13A93C9240F8E2 +type59.types-signed.wb.sidnlabs.nl. 60 IN RRSIG CDS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. c5l78z6e7LyqptB8CAJK2DWMwml0FnvNQygC+2jmzRw2FTnQmPzFfUO40QTSeq0yBwvr/GDwAuXZmLYV52WA7vt08uiw4VXA1XgsnhXYnaA2t3DCrLrSHuNFPQBww4a9KhVOx/ZIHPabIm4uEoc94PdTsW97UiDN3ROpPJJA+OI= ;{id = 62298} +067479706535390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002D0574797065370C74797065732D7369676E6564027762087369646E6C616273026E6C0000080000000000030010 +type59.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type7.types-signed.wb.sidnlabs.nl. RRSIG NSEC CDS +067479706535390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000766B940EAFF1131A7869B0754EC734F0DD15D485109FE7858BF2AD6247B913536FD5BFF72ED4769EA290BF047ED143B0FB6751FE50B5BFA4168F3EFD8C7A8C228C17AFC31C404FC6D6B5697CA7853F9B007A9109BAB891ADD3275E93CB7629097CE4B04EB2ACAF7EF9C32BD724835BCF8CB34F63A44BEC4C747347B694C1537 +type59.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. B2a5QOr/ETGnhpsHVOxzTw3RXUhRCf54WL8q1iR7kTU2/Vv/cu1HaeopC/BH7RQ7D7Z1H+ULW/pBaPPv2MeowijBevwxxAT8bWtWl8p4U/mwB6kQm6uJGt0ydek8t2KQl85LBOsqyvfvnDK9ckg1vPjLNPY6RL7Ex0c0e2lMFTc= ;{id = 62298} +0574797065370C74797065732D7369676E6564027762087369646E6C616273026E6C00000700010000003C0025076D61696C626F780C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type7.types-signed.wb.sidnlabs.nl. 60 IN MB mailbox.types-signed.wb.sidnlabs.nl. +0574797065370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000708050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006D6E25734BABC71FC9D7DFF7DEA810243D44C7DFA721638C148C10349EE76F398B03044E6BBA971711FA32927053D2ECA63DE95D238B69A9BD1D11B588082E13832D17B0BCC7DEFAD8441845305F5BF9CF5901A26CC4F1ABB9C9DC0A7AF8E3689A56BB25E22DA082D05B17B31CBF8BCDD0CC41AF6419970F66069C25DA5E8920 +type7.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MB 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. bW4lc0urxx/J19/33qgQJD1Ex9+nIWOMFIwQNJ7nbzmLAwROa7qXFxH6MpJwU9Lspj3pXSOLaam9HRG1iAguE4MtF7C8x9762EQYRTBfW/nPWQGibMTxq7nJ3Ap6+ONomla7JeItoILQWxezHL+LzdDMQa9kGZcPZgacJdpeiSA= ;{id = 62298} +0574797065370C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574797065380C74797065732D7369676E6564027762087369646E6C616273026E6C000006010000000003 +type7.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type8.types-signed.wb.sidnlabs.nl. MB RRSIG NSEC +0574797065370C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C006644E43E3825D8096B3A02203151C9EDEBF0AC65D67211674A7090AB2E9F797EDB1D5790052714A0AFF039182653661A2C3ECC1E696F72016AC67818B64787D374F83E925F2FD8EC86DF65646B836B0F0084E295A755E717967AF51A10D5E97B2585A27F39FC43B0B70A0287F8BEE810F15C0DCB7B83702B00941A22C66E4A11 +type7.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. ZkTkPjgl2AlrOgIgMVHJ7evwrGXWchFnSnCQqy6feX7bHVeQBScUoK/wORgmU2YaLD7MHmlvcgFqxngYtkeH03T4PpJfL9jsht9lZGuDaw8AhOKVp1XnF5Z69RoQ1el7JYWifzn8Q7C3CgKH+L7oEPFcDct7g3ArAJQaIsZuShE= ;{id = 62298} +0574797065380C74797065732D7369676E6564027762087369646E6C616273026E6C00000800010000003C002D0F6D61696C67726F75706D656D6265720C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type8.types-signed.wb.sidnlabs.nl. 60 IN MG mailgroupmember.types-signed.wb.sidnlabs.nl. +0574797065380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000808050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0089CCDC17A2A6472F3A0C36D84D7ACAB3AC55D4B007C267A88E4F0BFBE4649FD230903953112EBFC5A92F83777E59900FA78AF846DDE357D616ECC8174E3BAEDF37962872257F4931AD86245C6875284CDF836FC004CB576A6613CC12F0513A10C664D0240FE5F4C93F5284F7E114196E1E2AEECB257A593875C1DF705665A11C +type8.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MG 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. iczcF6KmRy86DDbYTXrKs6xV1LAHwmeojk8L++Rkn9IwkDlTES6/xakvg3d+WZAPp4r4Rt3jV9YW7MgXTjuu3zeWKHIlf0kxrYYkXGh1KEzfg2/ABMtXamYTzBLwUToQxmTQJA/l9Mk/UoT34RQZbh4q7sslelk4dcHfcFZloRw= ;{id = 62298} +0574797065380C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B0574797065390C74797065732D7369676E6564027762087369646E6C616273026E6C000006008000000003 +type8.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type9.types-signed.wb.sidnlabs.nl. MG RRSIG NSEC +0574797065380C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C001CAB9CF013C4620C86D2DF36CA7AF55E6BE81A93553DDA8D6A10FEA633A521522FE34BC19EE7C667C966EB94752652AB7CF121EF69B24F60CD98E162F417A4BC7243E7E04FF1C14B1D0766A27CAAA01AF43DB7AB5F362DE5FBC1FE0544936BB6AED8FF651F7EC7A71C59DB9D8485EA8E5DC42C3723C07A68C357306E8E8D8FA0 +type8.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. HKuc8BPEYgyG0t82ynr1XmvoGpNVPdqNahD+pjOlIVIv40vBnufGZ8lm65R1JlKrfPEh72myT2DNmOFi9BekvHJD5+BP8cFLHQdmonyqoBr0PberXzYt5fvB/gVEk2u2rtj/ZR9+x6ccWdudhIXqjl3ELDcjwHpow1cwbo6Nj6A= ;{id = 62298} +0574797065390C74797065732D7369676E6564027762087369646E6C616273026E6C00000900010000003C00280A6D61696C72656E616D650C74797065732D7369676E6564027762087369646E6C616273026E6C00 +type9.types-signed.wb.sidnlabs.nl. 60 IN MR mailrename.types-signed.wb.sidnlabs.nl. +0574797065390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000908050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007E9CCEE6E21991F8F051D27F2050626065414AD5D462C8D990E7016A74926CE24D4AE1569BFE6F75DA3DE5175020E3A0DFEF9C758847F41D79BDBA9EB42E2476F9F4AA41F113F534BC70A0989516C25AB501FDFC4ECF7F5AC27E3AD41E512EA2E60B4843CB0CB5279D7784F777F3AC64D8167568E02FEE49757432574DA3B235 +type9.types-signed.wb.sidnlabs.nl. 60 IN RRSIG MR 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fpzO5uIZkfjwUdJ/IFBiYGVBStXUYsjZkOcBanSSbOJNSuFWm/5vddo95RdQIOOg3++cdYhH9B15vbqetC4kdvn0qkHxE/U0vHCgmJUWwlq1Af38Ts9/WsJ+OtQeUS6i5gtIQ8sMtSedd4T3d/OsZNgWdWjgL+5JdXQyV02jsjU= ;{id = 62298} +0574797065390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002C067479706539390C74797065732D7369676E6564027762087369646E6C616273026E6C000006004000000003 +type9.types-signed.wb.sidnlabs.nl. 3600 IN NSEC type99.types-signed.wb.sidnlabs.nl. MR RRSIG NSEC +0574797065390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00ACAF3441F6B2EA06B3AC5EBFD93F838F27CADDE73CE0C02BF16D4ACACB747CD6D6D9E17D5C15D0444609C98343559D66844F6511D0BDEFB7ADCB86F30BC2C5E35B6D9B40F28F8964716DF2EBC6819F9CC58B7F3CBE6F28497F0A1D55D030B986C840F5F9BA92C89CF876C8D87328D6D27BD7376FCBF3B68F834027762B9EA949 +type9.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. rK80Qfay6gazrF6/2T+DjyfK3ec84MAr8W1Kyst0fNbW2eF9XBXQREYJyYNDVZ1mhE9lEdC977ety4bzC8LF41ttm0Dyj4lkcW3y68aBn5zFi388vm8oSX8KHVXQMLmGyED1+bqSyJz4dsjYcyjW0nvXN2/L87aPg0AndiueqUk= ;{id = 62298} +067479706539390C74797065732D7369676E6564027762087369646E6C616273026E6C00006300010000003C002625763D73706631202B6D7820613A636F6C6F2E6578616D706C652E636F6D2F3238202D616C6C +type99.types-signed.wb.sidnlabs.nl. 60 IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +067479706539390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF006308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007BE80F299CEF2ADE102DE7995277B387252B124C3C2B062864E427A74384AD162B5907D21B4FA92163EA9909A372DBF62AEAEE5A81FC4432D89BDE32303CC0FB0B8FC420A398FB2DA3ADCD5C2CD71C6B89508421AB50D86D68574306B7D7732CD8EAAE8FCE003F1F9F881DE102E94F265B45EBC6F75C5B293141881513000566 +type99.types-signed.wb.sidnlabs.nl. 60 IN RRSIG SPF 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. e+gPKZzvKt4QLeeZUnezhyUrEkw8KwYoZOQnp0OErRYrWQfSG0+pIWPqmQmjctv2KuruWoH8RDLYm94yMDzA+wuPxCCjmPsto63NXCzXHGuJUIQhq1DYbWhXQwa313Ms2Oquj84APx+fiB3hAulPJltF68b3XFspMUGIFRMABWY= ;{id = 62298} +067479706539390C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10003003776B730C74797065732D7369676E6564027762087369646E6C616273026E6C00000D00000000000300000000000010 +type99.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks.types-signed.wb.sidnlabs.nl. RRSIG NSEC SPF +067479706539390C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C000BF173CBB81D152D94323BA05F9CD0C7F20D36FDA59C122A42A7B72C24D4CA2450BB307707441233BD4E47FBA8FA3222F524978E06DCD2CA719E24B6C776B68D345424FBBE32B3FD342A4CC0233381CF2545769820A173293054D207A3E410BAA7B1D06FA9E0E85B34B1FCA90F52F1B2D13137DA51D4B8B868F8791EBF54D507 +type99.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. C/Fzy7gdFS2UMjugX5zQx/INNv2lnBIqQqe3LCTUyiRQuzB3B0QSM71OR/uo+jIi9SSXjgbc0spxniS2x3a2jTRUJPu+MrP9NCpMwCMzgc8lRXaYIKFzKTBU0gej5BC6p7HQb6ng6Fs0sfypD1LxstExN9pR1Li4aPh5Hr9U1Qc= ;{id = 62298} +03776B730C74797065732D7369676E6564027762087369646E6C616273026E6C00000B00010000003C000A0A00000106E00005A060 +wks.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +03776B730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C009F701D990D4713040E9A68527D76706368EAC0979ADB9A6C07F08940E7FEB2B3B6BC977AE26804A40D087A44B1F1A8CA92D8A51EA39533B13F1EAA8D64357230A08E56B5618D266E23B7B6B8D8F79825A6B5432C984B0457704B2E4C3436FCF83173A5FA074F102483A8B75C739EA9B61A22452DF9C2F1B69475D4C635221906 +wks.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. n3AdmQ1HEwQOmmhSfXZwY2jqwJea25psB/CJQOf+srO2vJd64mgEpA0IekSx8ajKktilHqOVM7E/HqqNZDVyMKCOVrVhjSZuI7e2uNj3mCWmtUMsmEsEV3BLLkw0Nvz4MXOl+gdPECSDqLdcc56pthoiRS35wvG2lHXUxjUiGQY= ;{id = 62298} +03776B730C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B05776B7330310C74797065732D7369676E6564027762087369646E6C616273026E6C000006001000000003 +wks.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks01.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +03776B730C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C004646BF2DCEA8D73FE608B97BFD19A4BA0BFDA0686AC90721B7FB0C238201D365E94D5632469A539ED5844AEB0A5D0D9C46A374E88AB19FD4619340D560A81126A3637B0116646EED03FBB7E92BB25C2792B479A06E4A16F7AD9958CD500DCF23F816074B5A532A4C7AC7EE4485BD32F92C8C672CBADB6F5625F4992D4E7808BE +wks.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. Rka/Lc6o1z/mCLl7/Rmkugv9oGhqyQcht/sMI4IB02XpTVYyRppTntWESusKXQ2cRqN06Iqxn9Rhk0DVYKgRJqNjewEWZG7tA/u36SuyXCeStHmgbkoW962ZWM1QDc8j+BYHS1pTKkx6x+5Ehb0y+SyMZyy6229WJfSZLU54CL4= ;{id = 62298} +05776B7330310C74797065732D7369676E6564027762087369646E6C616273026E6C00000B00010000003C000A0A00000106E00005A060 +wks01.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 tcp 0 1 2 21 23 24 26 33 34 +05776B7330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0097B1D87F38DC2212100D9DB3209974803E63B1877387FD6A41140B15719B8D09577AB11AC3F60124F5F344F166D5C694F31CF6ADB92A317572A086670EDEA91FECBF31F14D950863B30586D2ADD61947E9525C9F242A5213415D75FA21EF7EB69B8DA62D381B7E8AE7260BB16E07582D0FCD7CB8A7AC57817CD124E19142536D +wks01.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. l7HYfzjcIhIQDZ2zIJl0gD5jsYdzh/1qQRQLFXGbjQlXerEaw/YBJPXzRPFm1caU8xz2rbkqMXVyoIZnDt6pH+y/MfFNlQhjswWG0q3WGUfpUlyfJCpSE0Fddfoh7362m42mLTgbfornJguxbgdYLQ/NfLinrFeBfNEk4ZFCU20= ;{id = 62298} +05776B7330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E10002B05776B7330320C74797065732D7369676E6564027762087369646E6C616273026E6C000006001000000003 +wks01.types-signed.wb.sidnlabs.nl. 3600 IN NSEC wks02.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +05776B7330310C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00D01001A192EE66714896D115CCFE402266CF993F711D456B71B1BAB0D097F3023E3F682FE2D44DB0A7E7790688C8A78F327F75D370B597EECE17B49F5516D438C619E76A41B62D32065D04082ADFE235D60596777B4BDC5CD0340699FD7CBC5E6321CB6B08479653C2CB6F6FD67B38CE95A3BC8A61C46DD7F5F9C4055673448E +wks01.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. 0BABoZLuZnFIltEVzP5AImbPmT9xHUVrcbG6sNCX8wI+P2gv4tRNsKfneQaIyKePMn9103C1l+7OF7SfVRbUOMYZ52pBti0yBl0ECCrf4jXWBZZ3e0vcXNA0Bpn9fLxeYyHLawhHllPCy29v1ns4zpWjvIphxG3X9fnEBVZzRI4= ;{id = 62298} +05776B7330320C74797065732D7369676E6564027762087369646E6C616273026E6C00000B00010000003C000C0A00000111E0000000000004 +wks02.types-signed.wb.sidnlabs.nl. 60 IN WKS 10.0.0.1 udp 0 1 2 53 +05776B7330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000B08050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C003FEA7581C41B3B823FB01414664B6BCF8435A2C58814814694AF28F92CC85CC8F199D372DFABE3C16E927F2F7B0B271B2D114843682B3EFFDC3DA5EDA0C6FEBAC1C2A03B65E6C4AF2D32459A0F61A50FB19B5D86BEE9D9BC06001B1F5F66273E42F2DA85283E723A97D4CD2847D07AF20731F9DB8C74BCDAC2551C22A5FC8260 +wks02.types-signed.wb.sidnlabs.nl. 60 IN RRSIG WKS 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. P+p1gcQbO4I/sBQUZktrz4Q1osWIFIFGlK8o+SzIXMjxmdNy36vjwW6Sfy97CycbLRFIQ2grPv/cPaXtoMb+usHCoDtl5sSvLTJFmg9hpQ+xm12GvunZvAYAGx9fZic+QvLahSg+cjqX1M0oR9B68gcx+duMdLzawlUcIqX8gmA= ;{id = 62298} +05776B7330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029037777770C74797065732D7369676E6564027762087369646E6C616273026E6C000006001000000003 +wks02.types-signed.wb.sidnlabs.nl. 3600 IN NSEC www.types-signed.wb.sidnlabs.nl. WKS RRSIG NSEC +05776B7330320C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0013435E4DDC01BDFA2E234BEFD5FA26F48BEF8A8F67BC064C0A8B0A2E748BF2D57A9D5E0720E071F0699E5EC72DC8B4A6FC074006D29EE4B9767A66E5A632C7B8022D3B654220D5DF19E6E8743CDFE7163651B0138697F01B1E695C1AFD77E0D75B11C97A3E546FD78E5B3B60C41D64D86D6EF80C69404058F32C220E8A7BCF89 +wks02.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. E0NeTdwBvfouI0vv1fom9Ivvio9nvAZMCosKLnSL8tV6nV4HIOBx8GmeXsctyLSm/AdABtKe5Ll2emblpjLHuAItO2VCINXfGebodDzf5xY2UbAThpfwGx5pXBr9d+DXWxHJej5Ub9eOWztgxB1k2G1u+AxpQEBY8ywiDop7z4k= ;{id = 62298} +037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00000100010000003C0004D5881FDD +www.types-signed.wb.sidnlabs.nl. 60 IN A 213.136.31.221 +037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF000108050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C00B0FE97F5148BEB30C9EFAD9664B82CDB01B77C39263DA72CD1E4F9AA08C76410714D992FA29E5F00FB5A2AAD78B4FFA97CDD7EA5AD668EB58FA4EC2EBDCA42DB949AF31EB82127E6FA983C4510E61253363603AEEDAE23C6D38ECE301C412E45A5FE333C76E8DA3113A1C4DCBFB5CE1A29EA7B7DD2C409738ADDB27E464D9099 +www.types-signed.wb.sidnlabs.nl. 60 IN RRSIG A 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. sP6X9RSL6zDJ762WZLgs2wG3fDkmPacs0eT5qgjHZBBxTZkvop5fAPtaKq14tP+pfN1+pa1mjrWPpOwuvcpC25Sa8x64ISfm+pg8RRDmElM2NgOu7a4jxtOOzjAcQS5Fpf4zPHbo2jETocTcv7XOGinqe33SxAlzit2yfkZNkJk= ;{id = 62298} +037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E100029037832350C74797065732D7369676E6564027762087369646E6C616273026E6C000006400000000003 +www.types-signed.wb.sidnlabs.nl. 3600 IN NSEC x25.types-signed.wb.sidnlabs.nl. A RRSIG NSEC +037777770C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C008F694DB17EE6C657534A6C274D0A13E9A2B3636429CD1AA347D691052A63554FC59D3F33735FE7CFDCB7FA1EADAEF6F80666EC49FB6710C24A430B5C88D18EE4A35C0DAC9924D43BE1F88463077D084BF01184189D44435131CEB19FECDBBB767DBE72E3E6C8FBD8544CC89D5ACCF7B181FFDE1E37AB23FCADDE9DBF7BFF11C2 +www.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. j2lNsX7mxldTSmwnTQoT6aKzY2QpzRqjR9aRBSpjVU/FnT8zc1/nz9y3+h6trvb4BmbsSftnEMJKQwtciNGO5KNcDayZJNQ74fiEYwd9CEvwEYQYnURDUTHOsZ/s27t2fb5y4+bI+9hUTMidWsz3sYH/3h43qyP8rd6dv3v/EcI= ;{id = 62298} +037832350C74797065732D7369676E6564027762087369646E6C616273026E6C00001300010000003C000B0A33303333303333303333 +x25.types-signed.wb.sidnlabs.nl. 60 IN X25 "3033033033" +037832350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E00010000003C00AF001308050000003C52EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C007D8AA21CF0CA444990DBC72FDA49854BA90FE2765837BFA166C8E4A10F7CDD54866CFF3398F01F3E77D5B2EC19CFE2C79D47CB41C099ACBCCAD8AE2B0811ECB8A6D22E46706106BD54B7795373D8F4AAE3F528FED800ADC46D8A5F6F3944B9D1E99572C801CAF76B9DA947C9514E4BA113AEBB3DFB4DE44C63F0EF4A9CFFBA29 +x25.types-signed.wb.sidnlabs.nl. 60 IN RRSIG X25 8 5 60 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. fYqiHPDKREmQ28cv2kmFS6kP4nZYN7+hZsjkoQ983VSGbP8zmPAfPnfVsuwZz+LHnUfLQcCZrLzK2K4rCBHsuKbSLkZwYQa9VLd5U3PY9Krj9Sj+2ACtxG2KX285RLnR6ZVyyAHK92udqUfJUU5LoROuuz37TeRMY/DvSpz/uik= ;{id = 62298} +037832350C74797065732D7369676E6564027762087369646E6C616273026E6C00002F000100000E1000250C74797065732D7369676E6564027762087369646E6C616273026E6C000006000010000003 +x25.types-signed.wb.sidnlabs.nl. 3600 IN NSEC types-signed.wb.sidnlabs.nl. X25 RRSIG NSEC +037832350C74797065732D7369676E6564027762087369646E6C616273026E6C00002E000100000E1000AF002F080500000E1052EC3900524963DCF35A0C74797065732D7369676E6564027762087369646E6C616273026E6C0002A2DE7B343205D8D75C47B9BCDB52CCEACE3D02CABE5DE3005E95DE1205B5976C6C0131AE32D75EBC5EA11DFBB4FC6D3AA17DE7F1ED5D815A0E6B9542D9447620E8CC81CD0AD052DCAB55AC8565774D152DDDF140B35A93B5FD5A1318348979709E6074B15573FB5529C2F672B683C9732C8D70C0D28D8DC67A5565AB643FB7 +x25.types-signed.wb.sidnlabs.nl. 3600 IN RRSIG NSEC 8 5 3600 20140201000000 20130930114324 62298 types-signed.wb.sidnlabs.nl. AqLeezQyBdjXXEe5vNtSzOrOPQLKvl3jAF6V3hIFtZdsbAExrjLXXrxeoR37tPxtOqF95/HtXYFaDmuVQtlEdiDozIHNCtBS3KtVrIVld00VLd3xQLNak7X9WhMYNIl5cJ5gdLFVc/tVKcL2craDyXMsjXDA0o2NxnpVZatkP7c= ;{id = 62298} diff --git a/external/unbound/testdata/test_ldnsrr.c4 b/external/unbound/testdata/test_ldnsrr.c4 new file mode 100644 index 0000000..56b87fb --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.c4 @@ -0,0 +1,80 @@ +000006000100000E100030036E7331000A706F73746D617374657203616C6C027272036F7267000000000100000E10000002580001518000000E10 +. 3600 IN SOA ns1. postmaster.all.rr.org. 1 3600 600 86400 3600 +036E733103616C6C027272036F7267000001000100000E1000040A010034 +ns1.all.rr.org. 3600 IN A 10.1.0.52 +03616C6C027272036F7267000002000100000E100011036E7331076578616D706C6503636F6D00 +all.rr.org. 3600 IN NS ns1.example.com. +03666F6F03616C6C027272036F7267000005000100000E100010036E733103616C6C027272036F726700 +foo.all.rr.org. 3600 IN CNAME ns1.all.rr.org. +03616C6C027272036F7267000007000100000E1000180A6D622D6D61646E616D65076578616D706C6503636F6D00 +all.rr.org. 3600 IN MB mb-madname.example.com. +03616C6C027272036F7267000008000100000E1000180A6D672D6D676D6E616D65076578616D706C6503636F6D00 +all.rr.org. 3600 IN MG mg-mgmname.example.com. +03616C6C027272036F7267000009000100000E1000180A6D722D6E65776E616D65076578616D706C6503636F6D00 +all.rr.org. 3600 IN MR mr-newname.example.com. +0362617203616C6C027272036F726700000C000100000E100010036E733103616C6C027272036F726700 +bar.all.rr.org. 3600 IN PTR ns1.all.rr.org. +03616C6C027272036F726700000D000100000E10000E0853554E342F31313004554E4958 +all.rr.org. 3600 IN HINFO "SUN4/110" "UNIX" +0668656C69756D00000D000100000E1000301C53687574746C652D53543631473420496E74656C2050495633303030124672656542534420372E302D535441424C45 +helium. 3600 IN HINFO "Shuttle-ST61G4 Intel PIV3000" "FreeBSD 7.0-STABLE" +03616C6C027272036F726700000E000100000E1000360D6D696E666F2D726D61696C6278076578616D706C6503636F6D000D6D696E666F2D656D61696C6278076578616D706C6503636F6D00 +all.rr.org. 3600 IN MINFO minfo-rmailbx.example.com. minfo-emailbx.example.com. +03616C6C027272036F726700000F000100000E100015000A0656454E45524103616C6C027272036F726700 +all.rr.org. 3600 IN MX 10 VENERA.all.rr.org. +0873656C6563746F720A5F646F6D61696E6B657903616C6C027272036F7267000010000100000E1000CFCE763D444B494D313B206E3D5573653D3230444B494D3B20703D41774541415A66625977385366665A77736272434C62432B4A4C45725245494636596665396171736131507A3674704757694C786D3972534C362F596F42764E50335557583931594446304A4D6F366C68753355495A6A49547649774468782B524A596B6F39764C7A61614A4B58476633796779367A2B6465576F5A4A4156316C5459304C74783967656E626F65383843534348773961534C6B68306F624E39436B3852367A414D5952313963694D2F3B20743D73 +selector._domainkey.all.rr.org. 3600 IN TXT "v=DKIM1; n=Use=20DKIM; p=AwEAAZfbYw8SffZwsbrCLbC+JLErREIF6Yfe9aqsa1Pz6tpGWiLxm9rSL6/YoBvNP3UWX91YDF0JMo6lhu3UIZjITvIwDhx+RJYko9vLzaaJKXGf3ygy6z+deWoZJAV1lTY0Ltx9genboe88CSCHw9aSLkh0obN9Ck8R6zAMYR19ciM/; t=s" +03616C6C027272036F7267000011000100000E10002E0772702D6D626F78076578616D706C6503636F6D000B72702D747874646E616D65076578616D706C6503636F6D00 +all.rr.org. 3600 IN RP rp-mbox.example.com. rp-txtdname.example.com. +03616C6C027272036F7267000012000100000E10001E00010E61667364622D686F73746E616D65076578616D706C6503636F6D00 +all.rr.org. 3600 IN AFSDB 1 afsdb-hostname.example.com. +03616C6C027272036F7267000013000100000E10000D0C333131303631373030393536 +all.rr.org. 3600 IN X25 "311061700956" +03616C6C027272036F7267000014000100000E1000140F31353038363230323830303332313703303034 +all.rr.org. 3600 IN ISDN "150862028003217" "004" +03616C6C027272036F7267000015000100000E100011000A034E4554055072696D6503434F4D00 +all.rr.org. 3600 IN RT 10 NET.Prime.COM. +03616C6C027272036F7267000016000100000E10001447000580005A0000000001E133FFFFFF00016100 +all.rr.org. 3600 IN NSAP 0x47000580005A0000000001E133FFFFFF00016100 +03616C6C027272036F726700001A000100000E100025000A046E657432026974000950524D442D6E6574320941444D442D7034303004432D697400 +all.rr.org. 3600 IN PX 10 net2.it. PRMD-net2.ADMD-p400.C-it. +03616C6C027272036F726700001C000100000E10001020010DB8000000000000000000000003 +all.rr.org. 3600 IN AAAA 2001:db8::3 +03616C6C027272036F726700001D000100000E1000100033161389172FC470BE14C400988D20 +all.rr.org. 3600 IN LOC 42 21 54.500 N 71 06 18.300 W -24m 30m 10000m 10m +03616C6C027272036F726700001D000100000E100010003316138903210070BE14C400988D20 +all.rr.org. 3600 IN LOC 42 00 00.000 N 71 06 18.300 W -24m 30m 10000m 10m +055F68747470045F74637003616C6C027272036F7267000021000100000E100017000000050050036E7331076578616D706C6503636F6D00 +_http._tcp.all.rr.org. 3600 IN SRV 0 5 80 ns1.example.com. +03616C6C027272036F7267000023000100000E1000290064000A000021215E75726E3A6369643A2E2B40285B5E5C2E5D2B5C2E29282E2A2924215C32216900 +all.rr.org. 3600 IN NAPTR 100 10 "" "" "!^urn:cid:.+@([^\\.]+\\.)(.*)$!\\2!i" . +03616C6C027272036F7267000024000100000E100013000203727431076578616D706C6503636F6D00 +all.rr.org. 3600 IN KX 2 rt1.example.com. +03616C6C027272036F7267000025000100000E10001A0006000000145B00C96D5D54AEE1206BAF84DE7AAF6E94C09C7F +all.rr.org. 3600 IN CERT IPGP 0 0 FFsAyW1dVK7hIGuvhN56r26UwJx/ +0766726F626F7A7A03616C6C027272036F7267000027000100000E10001F1066726F626F7A7A2D6469766973696F6E0461636D65076578616D706C6500 +frobozz.all.rr.org. 3600 IN DNAME frobozz-division.acme.example. +0373756203616C6C027272036F726700002B000100000E10001830390301123456789ABCDEF67890123456789ABCDEF67890 +sub.all.rr.org. 3600 IN DS 12345 3 1 123456789ABCDEF67890123456789ABCDEF67890 +03616C6C027272036F726700002C000100000E1000160201123456789ABCDEF67890123456789ABCDEF67890 +all.rr.org. 3600 IN SSHFP 2 1 123456789ABCDEF67890123456789ABCDEF67890 +03616C6C027272036F726700002D000100000E1000290A0102C0000226010351537986ED35533B6064478EEEB27B5BD74DAE149B6E81BA3A0521AF82AB7801 +all.rr.org. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== +03616C6C027272036F726700002E000100000E10009F00010503000151803E7C9DD73E5510D70A52076578616D706C6503636F6D00A090755BA58D1AFFA576F4375831B4310920E481218D18A9F164EB3D81AFD3B875D3C75428631E0CF2A28D50875F70C329D7DBFAFEA807DC1FBA1DC34C95D401F23F334CE63BFCF3F1B5B44739E5F0EDED18D6B33F040A911376D173D757A9F0C1FA1798941BB0B36B2DF9062790FA7F0166F2737EEA907378341FB12DC0A77A +all.rr.org. 3600 IN RRSIG A 5 3 86400 20030322173103 20030220173103 2642 example.com. oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTrPYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6oB9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3tGNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkGJ5D6fwFm8nN+6pBzeDQfsS3Ap3o= ;{id = 2642} +03616C6C027272036F726700002F000100000E10001A04686F7374076578616D706C6503636F6D000006400100000003 +all.rr.org. 3600 IN NSEC host.example.com. A MX RRSIG NSEC +03616C6C027272036F7267000030000100000E100086010003050103D22A6CA77F35B893206FD35E4C506D8378843709B97E041647E1BFF43D8D64C649AF1E371973C9E891FCE3DF519A8C840A63EE42A6D2EBDDBB97035D215AA4E417B1FA45FA11A9741EA2098C1DFA5FB5FEB332FD4BC8152089AEF36BA644CCE2413B3B72BE18CBEF8DA253F4E93D2103866D9234A2E28DF529A67D5468DBEFE3 +all.rr.org. 3600 IN DNSKEY 256 3 5 AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl+BBZH4b/0PY1kxkmvHjcZc8nokfzj31GajIQKY+5CptLr3buXA10hWqTkF7H6RfoRqXQeogmMHfpftf6zMv1LyBUgia7za6ZEzOJBOztyvhjL742iU/TpPSEDhm2SNKLijfUppn1UaNvv4w== ;{id = 2642 (zsk), size = 1024b} +03616C6C027272036F7267000031000100000E100023000201636FC0B8271C82825BB1AC5C41CF5351AA69B4FEBD94E8F17CDB95000DA48C40 +all.rr.org. 3600 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA= +20656531396B6C33363331716F6C3634366B6A6A7268366C68393670647571696903616C6C027272036F7267000032000100000E10002A01000005086467B16F6F36BA4D1408E895A1BF2A28CB891EE0DEC0574A3026E537200006400000000002 +ee19kl3631qol646kjjrh6lh96pduqii.all.rr.org. 3600 IN NSEC3 1 0 5 6467B16F6F36BA4D 13k9b8dv58kcn28us3fc0lqa60jeadp0 A RRSIG +03616C6C027272036F7267000033000100000E10000D01000005086467B16F6F36BA4D +all.rr.org. 3600 IN NSEC3PARAM 1 0 5 6467B16F6F36BA4D +03616C6C027272036F7267000037000100000E1000A910020084200100107B1A74DF365639CC39F1D57803010001B771CA136E4AEB5CE44333C53B3D2C13C22243851FC708BCCE29F7E2EB5787B5F56CCAD34F8223ACC10904DDB56B2EC4A6D6232F3B50EA094F0914B3B941BBE529AF582C36BBADEFDAF2ADAF9B4911906F5B2522603C615272B880EC8FB930CC6EE39C444DAA75B1678F005A4B2499D1DA5433F805C7A5AD3237ACC5DD5C5E4303727673076578616D706C6503636F6D00 +all.rr.org. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com. +03616C6C027272036F7267000063000100000E10002625763D73706631202B6D7820613A636F6C6F2E6578616D706C652E636F6D2F3238202D616C6C +all.rr.org. 3600 IN SPF "v=spf1 +mx a:colo.example.com/28 -all" +03616C6C027272036F7267008001000100000E10001830390301123456789ABCDEF67890123456789ABCDEF67890 +all.rr.org. 3600 IN DLV 12345 3 1 123456789ABCDEF67890123456789ABCDEF67890 diff --git a/external/unbound/testdata/test_ldnsrr.c5 b/external/unbound/testdata/test_ldnsrr.c5 new file mode 100644 index 0000000..1e292ba --- /dev/null +++ b/external/unbound/testdata/test_ldnsrr.c5 @@ -0,0 +1,190 @@ +000006000100000E10003908656C656B74726F6E0561746F6F6D036E657400056D69656B670561746F6F6D036E6574007755EFFC0000546000001C2000093A8000000E10 +. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. 2002120700 21600 7200 604800 3600 +000001000100000E100004C0A80102 +. 3600 IN A 192.168.1.2 +000002000100000E10001408656C656B74726F6E0561746F6F6D036E657400 +. 3600 IN NS elektron.atoom.net. +000003000100000E10000E026D640561746F6F6D036E657400 +. 3600 IN MD md.atoom.net. +000004000100000E10000E026D660561746F6F6D036E657400 +. 3600 IN MF mf.atoom.net. +000007000100000E10000E026D620561746F6F6D036E657400 +. 3600 IN MB mb.atoom.net. +000008000100000E10000E026D670561746F6F6D036E657400 +. 3600 IN MG mg.atoom.net. +000009000100000E10000E026D720561746F6F6D036E657400 +. 3600 IN MR mr.atoom.net. +00000B000100000E100015C0A801020600000240000004000000000000000010 +. 3600 IN WKS 192.168.1.2 tcp 22 25 53 123 +00000B000100000E10000CC0A801021100000000000004 +. 3600 IN WKS 192.168.1.2 udp 53 +00000C000100000E10000F037074720561746F6F6D036E657400 +. 3600 IN PTR ptr.atoom.net. +00000D000100000E10000A04686F737404696E666F +. 3600 IN HINFO "host" "info" +00000E000100000E100023076D616368696E650561746F6F6D036E65740004696E666F0561746F6F6D036E657400 +. 3600 IN MINFO machine.atoom.net. info.atoom.net. +00000F000100000E100016000A08656C656B74726F6E0561746F6F6D036E657400 +. 3600 IN MX 10 elektron.atoom.net. +000010000100000E10001B1A74657874206465736372697074696F6E206F6620646F6D61696E +. 3600 IN TXT "text description of domain" +000011000100000E100016056D69656B670561746F6F6D036E657400036E657400 +. 3600 IN RP miekg.atoom.net. net. +000012000100000E10000D000C0561746F6F6D036E657400 +. 3600 IN AFSDB 12 atoom.net. +000013000100000E10001B1A783235206164647265737320696E207465787420666F726D6174 +. 3600 IN X25 "x25 address in text format" +000014000100000E10000D0C6973646E2061646472657373 +. 3600 IN ISDN "isdn address" +000014000100000E1000180C6973646E20616464726573730A73756261646472657373 +. 3600 IN ISDN "isdn address" "subaddress" +000015000100000E10000B00000772742D686F737400 +. 3600 IN RT 0 rt-host. +000016000100000E10001447000580005A0000000001E133FFFFFF00016100 +. 3600 IN NSAP 0x47000580005A0000000001E133FFFFFF00016100 +00001A000100000E1000130002066D617038323200076D61707834303000 +. 3600 IN PX 2 map822. mapx400. +000023000100000E1000280064000A0000202F75726E3A6369643A2E2B40285B5E5C2E5D2B5C2E29282E2A29242F5C322F6900 +. 3600 IN NAPTR 100 10 "" "" "/urn:cid:.+@([^\\.]+\\.)(.*)$/\\2/i" . +000023000100000E10002F00640032017310687474702B49324C2B4932432B49325200055F68747470045F746370066761746563680365647500 +. 3600 IN NAPTR 100 50 "s" "http+I2L+I2C+I2R" "" _http._tcp.gatech.edu. +000024000100000E10000B000A076B782D686F737400 +. 3600 IN KX 10 kx-host. +000025000100000E1001070001FFFF010103A9A6442F1653C52E25997343575F9FD0638E23A61BF7BDF5F476C7073664E136D7F1D135207C16F56102895FA30DAF3BBFBEFB55DF1A4B70227EB483FC0030E231A5184F91A1EA49A7DB657B1601CF9421D127E01CB9D41B798830D4A0984BD0F8EA812F051F264381C54C491D5A0F8F113013424EFB3F50A699445DA20726CD9A9921EAFE540B3ABAEB08771AE659E3FC8F669846FA33763BE0CE61D749A6C30F1AE7B886E72F8AF8A80A1CE90F430326D803B61AE7682D1F4E9D14E91A42BD5DBC7BB5889112D7A1F448BFCE961B0E56B6663354457300C65DC9F188A6784DDB4579743FE9537725E80B479B761722B3A0A61BE2496975933C255B95B5CFE7 +. 3600 IN CERT PKIX 65535 1 AQOppkQvFlPFLiWZc0NXX5/QY44jphv3vfX0dscHNmThNtfx0TUgfBb1YQKJX6MNrzu/vvtV3xpLcCJ+tIP8ADDiMaUYT5Gh6kmn22V7FgHPlCHRJ+AcudQbeYgw1KCYS9D46oEvBR8mQ4HFTEkdWg+PETATQk77P1CmmURdogcmzZqZIer+VAs6uusIdxrmWeP8j2aYRvozdjvgzmHXSabDDxrnuIbnL4r4qAoc6Q9DAybYA7Ya52gtH06dFOkaQr1dvHu1iJES16H0SL/OlhsOVrZmM1RFcwDGXcnxiKZ4TdtFeXQ/6VN3JegLR5t2FyKzoKYb4klpdZM8JVuVtc/n +00002A000100000E100000 +. 3600 IN APL +00002A000100000E10000E00011503C0A82000011C83C0A826 +. 3600 IN APL 1:192.168.32.0/21 !1:192.168.38.0/28 +00002A000100000E10001700011A03C0A82A00011A04C0A82A4000011904C0A82A80 +. 3600 IN APL 1:192.168.42.0/26 1:192.168.42.64/26 1:192.168.42.128/25 +00002A000100000E10000F000120047F00000100011603AC1040 +. 3600 IN APL 1:127.0.0.1/32 1:172.16.64.0/22 +00002A000100000E10000A00010401E000020801FF +. 3600 IN APL 1:224.0.0.0/4 2:ff00:0000:0000:0000:0000:0000:0000:0000/8 +00001D000100000E1000100033161389172DD070BE15F000988D20 +. 3600 IN LOC 42 21 54.000 N 71 06 18.000 W -24m 30m 10000m 10m +00001D000100000E100010001224138917069070BF2DD800988CEE +. 3600 IN LOC 42 21 43.952 N 71 05 06.344 W -24.50m 1m 200m 10m +00001D000100000E100010001216138B3556C88008165000989A89 +. 3600 IN LOC 52 14 05.000 N 00 08 50.000 E 10.33m 1m 10000m 10m +00001D000100000E10001000121613791B7D2898E64C4F00989A68 +. 3600 IN LOC 32 07 19.000 S 116 02 25.999 E 10m 1m 10000m 10m +00001D000100000E100010002516138916CB3C70C310DF009884ED +. 3600 IN LOC 42 21 28.764 N 71 00 51.617 W -44.99m 2000m 10000m 10m +0C646F747465642E6C6162656C00000F000100000E100008000A0422666F6F00 +dotted\.label. 3600 IN MX 10 "foo. +036C6F77036C6F77036C6F77000027000100000E1000090772742D686F737400 +low.low.low. 3600 IN DNAME rt-host. +057265646972000005000100000E10001005636E616D6504746F6F6D036E657400 +redir. 3600 IN CNAME cname.toom.net. +0C686967686269742DC8D2C961000001000100000E1000047F000001 +highbit-\200\210\201a. 3600 IN A 127.0.0.1 +0772742D686F7374000001000100000E1000047F000001 +rt-host. 3600 IN A 127.0.0.1 +00001C000100000E10001000000000000000000000000000000001 +. 3600 IN AAAA ::1 +000013000100000E10001B1A783235206164647265737320696E207465787420666F726D6174 +. 3600 IN X25 "x25 address in text format" +000014000100000E10000D0C6973646E2061646472657373 +. 3600 IN ISDN "isdn address" +076B782D686F7374000001000100000E1000047F000001 +kx-host. 3600 IN A 127.0.0.1 +076B782D686F737400001C000100000E10001000000000000000000000000000000001 +kx-host. 3600 IN AAAA ::1 +000013000100000E10001B1A783235206164647265737320696E207465787420666F726D6174 +. 3600 IN X25 "x25 address in text format" +08707265762D6E7874000001000100000E1000047F000001 +prev-nxt. 3600 IN A 127.0.0.1 +00001C000100000E10001000000000000000000000000000000001 +. 3600 IN AAAA ::1 +00002F000100000E1000120A6269676765722D6E78740000044000000A +. 3600 IN NSEC bigger-nxt. A AAAA NXT +000010000100000E10C3901B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E24566573746962756C756D20666175636962757320636F6E73657175617420697073756D2C2776656C2070656C6C656E746573717565206F72636920736F64616C65732073697420616D65742E12446F6E656320636F6E73656374657475722C186F726369207574207661726975732070756C76696E61722C196D617572697320616E746520626962656E64756D206573742C2476656C207072657469756D20747572706973206D6173736120617563746F722073656D2E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E124D6F7262692075726E612074656C6C75732C1A6F726E617265206E656320616363756D73616E2076697461652C1172757472756D20696420746F72746F722E3250656C6C656E746573717565206E6F6E207269737573206575206C696265726F2074656D70757320636F6E7365717561742E1653757370656E64697373652061206D6920656C69742E2C53656420756C74726963657320656C69742075742073656D207375736369706974206D616C6573756164612E3043726173207361676974746973206E756E632073656420726973757320766F6C7574706174206665726D656E74756D2E1941656E65616E207669746165206D61676E61206C616375732E16457469616D206575206C6967756C612070757275732E2F53757370656E64697373652065752064756920736564206C6967756C6120736167697474697320696163756C69732E1C53757370656E646973736520757420736F64616C6573206F7263692E1B4E756E632073697420616D65742073617069656E206A7573746F2E30536564206D6F6C6573746965206C65637475732076656C206C6563747573206772617669646120626962656E64756D2E28496E20617420656E696D2071756973206C61637573207072657469756D2074696E636964756E742E0D53656420656C656966656E642C1B6C616375732073656420706F72747469746F72206D61747469732C1A65726174206E6962682074696E636964756E74206C6F72656D2C1E717569732066657567696174206E6962682064756920616320657261742E1A43757261626974757220717569732066656C69732075726E612E0F4E756C6C616D2072686F6E6375732C1B61726375207365642074696E636964756E7420706F73756572652C1B6A7573746F20656E696D2061646970697363696E6720617263752C2265742073757363697069742074656C6C7573206C656F20766974616520656C69742E444D61757269732067726176696461206F64696F206E6F6E207175616D2074696E636964756E742076656C206C6F626F72746973206C6967756C612066617563696275732E394D617572697320766974616520646F6C6F7220617420746F72746F7220636F6E67756520696D70657264696574206E6F6E206964206C656F2E3550726F696E20696E206469616D206575206F726369206C616F7265657420626962656E64756D20736564206E6563206A7573746F2E2C496E206E6563206C6967756C612065752073617069656E20737573636970697420766573746962756C756D2E0F457469616D20656C656966656E642C1C6E6962682076697461652073656D70657220756C747269636965732C186A7573746F2065726F732073656D706572206A7573746F2C22656765742064696374756D206E697369206D6175726973206574206C6967756C612E1C446F6E656320666175636962757320646170696275732075726E612C21696E20756C74726963696573206C6163757320666163696C69736973206E65632E3450656C6C656E746573717565206461706962757320617567756520696E2073656D20706861726574726120616363756D73616E2E17557420696420756C6C616D636F7270657220656C69742E14416C697175616D2074656C6C7573206F7263692C1F6C6F626F72746973206E6563206D6F6C65737469652073697420616D65742C15696D706572646965742071756973206C616375732E195072616573656E74206E6F6E20636F6E677565206E756E632E1D51756973717565207072657469756D207072657469756D206E756E632C1F6E656320636F6E76616C6C6973206D61676E6120617563746F72206E65632E48457469616D20616363756D73616E2065726F7320736F6C6C696369747564696E20617567756520706F7375657265206C616F726565742069642073697420616D6574206F7263692E19437572616269747572207574206D61676E612076656C69742C1269642061646970697363696E67206475692E224D6F72626920766976657272612076756C7075746174652076756C7075746174652E4550726F696E2070756C76696E6172206A7573746F2073656420746F72746F722074696E636964756E7420696420706F72747469746F7220697073756D20706F73756572652E14437572616269747572206175677565206C656F2C1E756C7472696365732065676574206375727375732073697420616D65742C136672696E67696C6C61206E6F6E206E69736C2E124D6F72626920657420616E7465206573742C126E6F6E2061646970697363696E67206D692E1E55742072757472756D2065676573746173207363656C657269737175652E1C50656C6C656E7465737175652071756973206E697369206F7263692E21496E206861632068616269746173736520706C617465612064696374756D73742E1B446F6E6563207365642074696E636964756E74206C696265726F2E1F50726F696E20706F72747469746F7220706C6163657261742072697375732C206E656320626C616E6469742073617069656E207068617265747261206E65632E4150686173656C6C75732065752072697375732071756973206D617572697320737573636970697420736F6C6C696369747564696E207574206575206E657175652E1044756973206F64696F206C616375732C1F6567657374617320696E206D6F6C65737469652061646970697363696E672C1276756C7075746174652075742065726F732E454E756E63206D6F6C6573746965206F7263692073656420747572706973207669766572726120766F6C757470617420616C6971756574206D6920766573746962756C756D2E2B53656420696E74657264756D20636F6E7365637465747572206F72636920617420636F6E7365717561742E22437572616269747572206D6F6C657374696520616C697175616D2074656C6C75732C1C6964206469676E697373696D206E69626820706F727461207365642E374372617320766573746962756C756D206F7263692068656E647265726974207175616D206F726E61726520636F6E64696D656E74756D2E48566976616D757320756C747269636573206C61637573207574206C6F72656D207363656C657269737175652076697461652073656D70657220656C69742076756C7075746174652E1B41656E65616E2073697420616D6574206F64696F206D617373612C107365642072757472756D207175616D2E275574206C6163696E696120656E696D206E6563206F7263692072757472756D2064696374756D2E1B43757261626974757220696420617563746F72206C6967756C612E0F4E616D206E696268206E756C6C612C1B696E74657264756D2076697461652073757363697069742065752C12706F7274612071756973206C6967756C612E3F50726F696E206C6163696E69612073617069656E206E656320646F6C6F722076697665727261206174207375736369706974206F7263692074656D7075732E2450686173656C6C7573207363656C65726973717565206C6F626F72746973207175616D2C2273697420616D6574207361676974746973206E696268206F726E617265206E65632E31446F6E65632073697420616D65742074656C6C757320616320697073756D20706861726574726120696E74657264756D2E3D53656420656765737461732076656C69742065742066656C697320696163756C6973206574206469676E697373696D206573742066617563696275732E2A53757370656E646973736520636F6E76616C6C6973207363656C6572697371756520646170696275732E2A4E756C6C616D206C7563747573206C6163696E6961206E69736C2071756973207472697374697175652E31566976616D75732074696E636964756E74207665686963756C612073656D2073697420616D657420756C7472696365732E124E756C6C612061726375206C65637475732C1A766573746962756C756D206575206D6F6C657374696520696E2C17656C656966656E642072757472756D20746F72746F722E12457469616D206C6967756C61206469616D2C1A756C747269636573206964206D616C6573756164612076656C2C1076617269757320616320646F6C6F722E19496E2073697420616D65742073617069656E206A7573746F2C116E6563206469676E697373696D206D692E1B566976616D757320766974616520616C697175616D20656C69742E2F566573746962756C756D207375736369706974206D616C65737561646120697073756D20696420646170696275732E214D6F72626920756C6C616D636F727065722070686172657472612076656C69742C1F696E2074656D706F72206D617572697320636F6E736571756174206E6F6E2E1F5072616573656E74206D616C657375616461206D6174746973206E756E632C1C617420617563746F72206C696265726F20766976657272612069642E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E23566976616D757320636F6E76616C6C6973207661726975732076756C7075746174652E18446F6E6563206567657420746F72746F72206E657175652E2B4E756E632074656D706F72206D69207175697320656E696D20657569736D6F642074696E636964756E742E1B50656C6C656E746573717565206574206E696268206D61676E612C0F69642063757273757320656E696D2E43436C61737320617074656E742074616369746920736F63696F737175206164206C69746F726120746F727175656E742070657220636F6E75626961206E6F737472612C1770657220696E636570746F732068696D656E61656F732E114E756E63206E756E632073617069656E2C1473656D70657220696E2074656D706F7220696E2C1663757273757320696163756C69732073617069656E2E174E756E63207669746165206D617474697320656C69742E3C416C697175616D207574206E69736C2076656C206C6F72656D20706F72747469746F7220756C6C616D636F7270657220617420736564207175616D2E154D617572697320612074757270697320657261742E4850656C6C656E7465737175652076697665727261206C6967756C612076656C2074656C6C7573207072657469756D20616320617563746F72206E69736920696D706572646965742E1D50726F696E206661756369627573207361676974746973206F64696F2C22717569732073656D706572206D617373612070656C6C656E7465737175652061632E364D6F72626920636F6E64696D656E74756D206E697369207669746165206C696265726F20636F6E76616C6C697320626C616E6469742E1850726F696E20736F64616C6573206F64696F20617263752E1F53757370656E6469737365206E6F6E2076656E656E61746973206469616D2E1B5365642076697461652061646970697363696E67206C6F72656D2E134E756C6C616D2061756775652066656C69732C1867726176696461207175697320636F6D6D6F646F2075742C136469676E697373696D2076656C207175616D2E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E3650656C6C656E746573717565206665726D656E74756D206E756C6C6120617420646F6C6F72206D6F6C65737469652073656D7065722E11536564206D657475732073617069656E2C146D6F6C6C6973206120636F6D6D6F646F2061632C10636F6D6D6F646F207365642073656D2E2453757370656E6469737365206665756769617420656C656D656E74756D206C616375732C1D76656C20657569736D6F64206E69736C20616C697175616D206E6F6E2E1B4375726162697475722076656C20617563746F72206E657175652E4050686173656C6C7573206574206C696265726F2076656C20746F72746F7220766573746962756C756D20636F6E73657175617420616320696E206D61676E612E1F4E756C6C616D20636F6E67756520766573746962756C756D206D617373612C2371756973207375736369706974207475727069732061646970697363696E672069642E474E756C6C616D20756C6C616D636F727065722065726F7320696420697073756D20766573746962756C756D206174207072657469756D20617567756520636F6E76616C6C69732E3D43726173206E6563207075727573206163206C656374757320696163756C697320636F6D6D6F646F2073697420616D65742065676574206C616375732E2C43757261626974757220626C616E646974206D6F6C657374696520657374206174206672696E67696C6C612E1A5072616573656E742061742064696374756D207475727069732E26536564206C616F7265657420646170696275732074656C6C757320657420677261766964612E2E467573636520766974616520616E74652075742061726375206C616F7265657420736F6C6C696369747564696E2E254E756C6C61206D6F6C6C697320636F6D6D6F646F206F72636920736564206D6F6C6C69732E1B557420656C656966656E6420616C69717565742074656C6C75732C2176656C20756C74726963696573206C6F72656D206C75637475732076697461652E20446F6E656320636F6D6D6F646F20756C6C616D636F72706572206D617373612C216174207072657469756D206D61676E61206665726D656E74756D2076697461652E1C4E616D2072757472756D20616C69717565742073757363697069742E35416C697175616D2061206D617373612076656C206F64696F207665686963756C612073656D706572206120696E20746F72746F722E2650656C6C656E74657371756520616C697175616D20737573636970697420696163756C69732E27446F6E656320736F64616C6573207072657469756D206D61737361207365642074656D7075732E1550686173656C6C75732076656C69742075726E612C1E636F6D6D6F646F2073697420616D6574207472697374697175652069642C11636F6E67756520717569732065726F732E3B55742076756C707574617465206D61676E6120616C6971756574206C656F20706F7274612069642074656D707573206E756E6320617563746F722E35557420636F6E64696D656E74756D206D61676E612073697420616D6574207175616D20756C7472696369657320696163756C69732E2D41656E65616E20696D7065726469657420666163696C697369732074656C6C7573206E6563206F726E6172652E1A43726173206E65632076756C7075746174652073617069656E2E334D6F72626920757420647569207574206D61676E6120736F64616C657320636F6D6D6F646F206567657420696420657261742E0F447569732065726174206E6973692C1C6C6163696E696120766974616520696D70657264696574206E6F6E2C1265676573746173206E65632070757275732E1450656C6C656E7465737175652074656D706F722C1D6572617420757420656C656966656E6420636F6E64696D656E74756D2C1C697073756D206C6163757320756C747269636573207475727069732C2661206672696E67696C6C61207075727573206C65637475732073656D706572206E756C6C612E1250726F696E206964206E756C6C61206D692E1A53757370656E64697373652076656C2073656D206C616375732E2A55742072757472756D2065726F73206964206D6173736120756C7472696369657320636F6D6D6F646F2E1B4E756C6C6120656765742061646970697363696E6720616E74652E284E756E63207175697320656E696D2061206A7573746F20706861726574726120636F6D6D6F646F2E154E756C6C616D20746F72746F7220746F72746F722C17766F6C757470617420617420636F6D6D6F646F2061742C1A636F6E73656374657475722073697420616D657420657261742E435175697371756520706861726574726120747572706973206E6563206C696265726F207669766572726120717569732072757472756D206E756E63206D61747469732E1841656E65616E20736564206C61637573206C65637475732E1444756973206574206F64696F20746F72746F722E3141656E65616E20756C6C616D636F7270657220756C74726963696573207475727069732073656420766F6C75747061742E0E5574206574206573742073656D2C13657420756C747269636573207475727069732E1850656C6C656E746573717565206E6973692066656C69732C1B64696374756D206E6F6E2074656D706F72206C6F626F727469732C10696163756C697320617420656E696D2E14416C697175616D2074656C6C757320656C69742C1A766F6C757470617420757420747269737469717565207365642C146672696E67696C6C61206163206C696265726F2E17447569732072757472756D207175616D206D61676E612C12757420756C74726963657320697073756D2E154D6F726269206964206F726369206C65637475732E294D616563656E61732071756973206E756E63206174206469616D206D6F6C6C697320636F6E6775652E14416C697175616D206E65717565206C6F72656D2C1D6C6F626F727469732073697420616D657420636F6D6D6F646F2069642C1566657567696174206D617474697320646F6C6F722E224372617320616C697175616D20636F6E76616C6C69732061646970697363696E672E23566573746962756C756D2076617269757320636F6D6D6F646F2070756C76696E61722E2353757370656E646973736520656C656966656E642064696374756D206C65637475732C1D76656C20636F6D6D6F646F206E6962682076617269757320717569732E1F50686173656C6C75732073697420616D6574206E697369206C696265726F2E37496E20616C697175616D207075727573207574206D69206D6174746973207175697320696163756C6973206C6163757320706F7274612E2853656420756C747269636573207665686963756C61206D617572697320736564206F726E6172652E244D616563656E617320677261766964612074696E636964756E742073616769747469732E194D61757269732069642068656E6472657269742065726F732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E1E437572616269747572207068617265747261206469616D2061756775652C1673697420616D657420636F6E6775652066656C69732E265072616573656E74206469676E697373696D20656C656966656E642076756C7075746174652E1A536564206E656320766573746962756C756D2074656C6C75732E6B566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B20566573746962756C756D206C616F726565742C1B65726F732076697461652072686F6E63757320616C69717565742C1B6C6967756C612074757270697320636F6E6775652070757275732C1F6E6F6E20636F6E76616C6C6973206D69206E6962682065752070757275732E31566976616D757320657569736D6F6420666163696C69736973206C616375732074696E636964756E742072757472756D2E11566976616D75732073757363697069742C186E697369207365642073656D70657220696163756C69732C196C696265726F2073656D2070756C76696E617220656E696D2C1E6120616C69717565742070757275732075726E61207574206E756C6C612E1D446F6E656320756C747269636573206C7563747573206D61757269732C27696E20706F72747469746F7220656E696D20756C6C616D636F727065722073697420616D65742E2B4D6F7262692070656C6C656E74657371756520617563746F722076656C697420657420656765737461732E1946757363652061632074696E636964756E74206D617373612E2B4D6F72626920612076656C69742065676574206469616D2074696E636964756E7420656C656966656E642E42437572616269747572206F726E617265206C65637475732061207175616D20626C616E6469742076656C206665726D656E74756D206C616375732064696374756D2E16446F6E65632076656C20747572706973206F64696F2C116163207375736369706974206F7263692E304E756C6C6120706F737565726520636F6E76616C6C6973206C616375732076656E656E6174697320666575676961742E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E1453757370656E646973736520706F74656E74692E4153757370656E6469737365206D6F6C6C6973206E65717565207574206E6571756520677261766964612075742076697665727261206D6920756C7472696365732E19566573746962756C756D2061742074656D706F722073656D2E164D61757269732076656C206C656F206C696265726F2E14416C697175616D206175677565206A7573746F2C18756C747269636965732076656C206665756769617420612C1376756C7075746174652073656420657261742E19416C697175616D20696E20756C747269636573207175616D2E2C50686173656C6C757320616C697175616D20766573746962756C756D206F64696F20617420617563746F722E0C53656420646170696275732C1866656C6973206163206F726E61726520646170696275732C1A6D61676E6120646F6C6F7220626962656E64756D206E69736C2C2265676574206C7563747573206C61637573206D61676E61206574206D61757269732E124E756C6C6120697073756D2061756775652C1B74656D706F72207175697320636F6E736563746574757220696E2C12696163756C6973206E6F6E20646F6C6F722E3753757370656E646973736520636F6E73656374657475722066656C6973206163206E756C6C6120736F64616C65732072686F6E6375732E144D616563656E61732076656C697420616E74652C1A6C6163696E696120617420636F6E76616C6C697320717569732C14696163756C697320717569732074656C6C75732E2253757370656E646973736520696D7065726469657420616C6971756574206475692C28706F73756572652064696374756D206A7573746F206665726D656E74756D2073697420616D65742E13457469616D20616320616E7465206469616D2E1B53757370656E6469737365207175697320646F6C6F72206475692C106174206D6F6C6C6973206E657175652E1541656E65616E206575206E697369206C6F72656D2C13657420756C747269636573206D61757269732E164E756C6C6120696E206175677565206C696265726F2C126E6F6E20737573636970697420656C69742E0D437261732072686F6E6375732C18657374206163206672696E67696C6C61207661726975732C186572617420697073756D2067726176696461206E69736C2C1D6174206F726E61726520647569206E697369206964206D61757269732E164E756C6C616D206E65632064696374756D206C656F2E1750686173656C6C7573206D61676E612073617069656E2C1C7361676974746973207175697320737573636970697420717569732C11626962656E64756D20696E206F64696F2E174372617320736564206C6967756C612074656C6C75732C1973697420616D6574206665726D656E74756D2066656C69732E2350656C6C656E746573717565207375736369706974206665756769617420656E696D2C22766974616520666575676961742065726F73206D6174746973207072657469756D2E1143726173206E6973692074656C6C75732C1A706C616365726174206E6563206461706962757320656765742C1266617563696275732061632066656C69732E1C50726F696E2074656D70757320666575676961742073617069656E2C1C6E6563206D6174746973206C656F2070686172657472612076656C2E494D616563656E61732064617069627573206D69206469676E697373696D206C6967756C6120636F6D6D6F646F20657420666163696C69736973207175616D207472697374697175652E335072616573656E7420766172697573206C6163757320657520656E696D2070656C6C656E74657371756520677261766964612E484E616D2072686F6E637573206D61757269732070686172657472612065726F732076756C7075746174652061742074696E636964756E74206D61737361206672696E67696C6C612E3250656C6C656E74657371756520696E2065726174206E6563206D6173736120636F6E73657175617420756C7472696365732E1B446F6E65632076617269757320656C656D656E74756D206C656F2C276E6F6E2068656E647265726974206A7573746F2074696E636964756E742073697420616D65742E16446F6E6563206163206C696265726F2061756775652E2C536564206D61747469732074757270697320612073656D20756C7472696369657320636F6E7365717561742E1041656E65616E206E756E63206475692C1B636F6D6D6F646F206567657420766573746962756C756D2075742C0F72757472756D20696E206E69736C2E104E616D206175677565206C6F72656D2C1374656D706F7220696E20706F7274612061742C11636F6D6D6F646F20757420697073756D2E25517569737175652061646970697363696E6720616C69717565742074696E636964756E742E1453757370656E646973736520706F74656E74692E4350656C6C656E74657371756520706F72747469746F7220656C6974206174206C656F2068656E647265726974207072657469756D206E6563206575207475727069732E1843757261626974757220696E20656C6974206D657475732E13416C697175616D20726973757320657261742C20706F73756572652069642061646970697363696E6720636F6E7365717561742C11646170696275732076656C2065726F732E314D616563656E61732073656D7065722066656C6973207365642066656C697320747269737469717565207661726975732E334D61757269732074656D70757320746F72746F72206574206D6574757320657569736D6F642070656C6C656E7465737175652E1750656C6C656E74657371756520647569206D617373612C19657569736D6F64206E6F6E2074696E636964756E742069642C10616C697175657420696E20656C69742E1A41656E65616E2076756C7075746174652073656D20656C69742E1D50656C6C656E7465737175652061742074656D707573206D61676E612E2F41656E65616E20656C656D656E74756D206E69736C20696420616E746520636F6D6D6F646F20706C6163657261742E164E616D20736564206D61757269732074656C6C75732E1B50656C6C656E746573717565206E6563206F726369206E6962682C136E65632076756C70757461746520656E696D2E16416C697175616D206572617420766F6C75747061742E2C457469616D206469676E697373696D206A7573746F2061206F7263692065676573746173206D61747469732E33566976616D757320756C7472696365732073617069656E206163207475727069732076656E656E617469732074656D706F722E2953757370656E646973736520636F6E73657175617420766F6C7574706174206665726D656E74756D2E1344756973206575206F7263692076656C69742E0D53656420706C6163657261742C1B6E6973692073656420616C69717565742074696E636964756E742C187269737573206F64696F206D6174746973206E756C6C612C206E6F6E20736F64616C6573206E756E63206E756C6C61207669746165206D692E2B4E756E6320636F6E73657175617420706861726574726120646F6C6F72206174206672696E67696C6C612E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E45566573746962756C756D20756C7472696365732074656C6C75732071756973206E69736C206469676E697373696D2072686F6E6375732065676574206574206A7573746F2E3F4D616563656E61732076697461652070757275732071756973206C656F207665686963756C612076656E656E617469732076656C207574206C65637475732E1C437572616269747572206E6563206D6F6C6573746965206E69736C2E47566573746962756C756D20756C6C616D636F72706572206E756C6C61206E6F6E206F7263692064696374756D2071756973206C6163696E69612065737420696E74657264756D2E15467573636520656765742073656D2072697375732C1373656420766F6C75747061742061756775652E1453757370656E646973736520706F74656E74692E1A536564206C7563747573206D6F6C65737469652061756775652C186120766172697573207175616D20636F6E67756520696E2E2F416C697175616D20616C6971756574206F7263692065676574206D6920657569736D6F6420636F6E7365717561742E16557420657420766573746962756C756D20616E74652E15536564207669746165206D6574757320656C69742E124D6175726973206C616375732065726F732C2070656C6C656E746573717565206575207665686963756C612073656D7065722C186461706962757320636F6E736571756174206E756C6C612E4553656420766F6C757470617420657261742073757363697069742073656D20666163696C697369732061742061646970697363696E67206F726369207665686963756C612E1850656C6C656E746573717565206E697369206E756C6C612C17666175636962757320696E2072686F6E6375732075742C1872686F6E63757320656C656966656E64207475727069732E1341656E65616E206F64696F20746F72746F722C1D756C6C616D636F727065722069642074696E636964756E74206E65632C0F72686F6E637573206E6F6E206D692E1E5072616573656E7420696E74657264756D20766172697573206F7263692C1D75742076656E656E61746973206E696268206D6F6C6C6973206E65632E0C557420706C6163657261742C1C65726174206E65632074696E636964756E742070686172657472612C1B6D65747573206C616375732076656E656E61746973206E756E632C226574206C616F726565742061756775652073617069656E2076656C206C6F72656D2E195365642073697420616D65742076697665727261206573742E0D457469616D2072757472756D2C1A707572757320757420756C74726963657320616C69717565742C196E65717565206D61676E61206C75637475732072697375732C2376656C20636F6E73656374657475722065726F73206C6F72656D207574206F64696F2E14496E74656765722074757270697320656C69742C1C636F6E7365637465747572207574207375736369706974207365642C1167726176696461206174206C6F72656D2E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E224D6F72626920706C61636572617420616363756D73616E206D616C6573756164612E0D4D617572697320706F7274612C1C6C61637573206567657420696163756C69732073616769747469732C18617263752073656D206C6F626F72746973206E756C6C612C2265742074656D7075732076656C6974206D617373612071756973206C696265726F2E11467573636520646F6C6F72206E6962682C1B626962656E64756D2065742061646970697363696E67206E6F6E2C11656C656966656E64206574206F64696F2E0F4475697320656C69742065726F732C1D68656E64726572697420617420706F72747469746F722076697461652C1167726176696461206E656320617263752E475072616573656E74206D616C6573756164612073617069656E20612075726E6120616363756D73616E2061742068656E64726572697420697073756D20706F72747469746F722E284D61757269732070686172657472612073616769747469732075726E612065752074656D706F722E15566573746962756C756D207075727573206C656F2C1A7068617265747261207175697320756C7472696365732061632C1073656D706572206E656320657261742E13536564206E6563206D6173736120617263752C117365642074656D70757320646F6C6F722E1846757363652076697461652064696374756D2065726F732E2041656E65616E20766573746962756C756D2073656D706572207475727069732C21696163756C697320617563746F7220646F6C6F72207665686963756C612061632E1D496E206665726D656E74756D20617563746F722070686172657472612E16496E7465676572206E65632065726F73206469616D2C116567657420706F7375657265206C656F2E0E4E616D207472697374697175652C1A6E696268206E6563206D616C657375616461206F726E6172652C1775726E61206F64696F20706F727461206D61757269732C2D616363756D73616E20616C6971756574206E756E63206C65637475732073697420616D6574206D61757269732E17566573746962756C756D206E756C6C61206D617373612C2173656D7065722073697420616D657420626C616E6469742073697420616D65742C1676656E656E6174697320656765742073617069656E2E23566573746962756C756D20756C74726963657320636F6E6775652072686F6E6375732E1F4E756E63206C6163696E6961206461706962757320696D706572646965742E3C4E756E6320612065726F73207365642075726E612070656C6C656E7465737175652065676573746173206E6F6E2073697420616D657420656C69742E13496E746567657220646F6C6F72206469616D2C1B76756C70757461746520617420747269737469717565206E6F6E2C1376656E656E6174697320696E2072697375732E19536564206C6163696E6961206C756374757320697073756D2C1F61632073616769747469732061726375206D6F6C657374696520717569732E4350686173656C6C7573207072657469756D206E756C6C612071756973207175616D20706C61636572617420766974616520636F6D6D6F646F206D6920636F6E6775652E255072616573656E7420747269737469717565206C616F7265657420656C656D656E74756D2E215072616573656E742076656E656E61746973207072657469756D20646F6C6F722C25657520766F6C757470617420657374207363656C657269737175652073697420616D65742E225072616573656E7420656C656966656E642064696374756D207665686963756C612E2F446F6E656320756C6C616D636F727065722061646970697363696E6720616E746520616320656C656D656E74756D2E11496E746567657220647569206E756E632C15766976657272612061742072757472756D2075742C1374696E636964756E74207669746165206D692E3D446F6E6563206E6563207269737573206964206172637520706F72747469746F7220706C6163657261742070756C76696E6172206174206C616375732E164D6F7262692061632076656C69742073617069656E2C166C6163696E69612065676573746173206E756C6C612E334D617572697320656C656D656E74756D20647569206163206C696265726F20756C7472696369657320636F6E7365717561742E424E616D206E6F6E206A7573746F2061742074656C6C75732068656E6472657269742072686F6E63757320756C747269636573206D6F6C65737469652061756775652E1241656E65616E20656C69742070757275732C1A74656D706F722071756973207665686963756C6120717569732C106C6F626F727469732061206F64696F2E1D416C697175616D2072686F6E63757320766172697573206C6F72656D2C1B657520616C6971756574207475727069732072757472756D20612E1A4E756C6C6120677261766964612067726176696461206475692C226163206D6F6C657374696520617263752061646970697363696E672076697461652E1143726173206469616D206D61757269732C1B63757273757320766974616520636F6E6775652064696374756D2C1361646970697363696E6720696420657261742E2B53757370656E6469737365206F726E61726520706F72746120656C69742069642068656E6472657269742E195072616573656E74206E6563206D65747573206D617373612C106120656765737461732072697375732E32446F6E65632070656C6C656E7465737175652076697665727261206469616D2073697420616D65742070686172657472612E1553757370656E6469737365206C6F72656D206D692C167669766572726120657520617563746F72206E6F6E2C12766F6C75747061742065742066656C69732E1950726F696E206964206665726D656E74756D2070757275732E154E616D2065676574206D617474697320617263752E1E4D6F72626920626962656E64756D2072757472756D20657569736D6F642E22446F6E656320616C69717565742068656E6472657269742074696E636964756E742E3541656E65616E2065752073617069656E207574206E756E632064696374756D2066657567696174206E6563206174206C616375732E464475697320636F6D6D6F646F206E697369206E656320746F72746F7220766F6C7574706174207175697320636F6E64696D656E74756D2074757270697320616C697175616D2E15566976616D757320736F6C6C696369747564696E2C206E756C6C612072686F6E63757320636F6E73657175617420706F73756572652C1B6E697369206E6962682061646970697363696E672066656C69732C24616C697175657420706F7274612061726375206D61676E61206E65632073617069656E2E2A5574206C756374757320696E74657264756D206469616D207175697320736F6C6C696369747564696E2E2B55742073656D706572206D61676E6120736564206E657175652068656E647265726974206D61747469732E124E756C6C616D20747572706973206475692C1B706F72747469746F72206567657420696E74657264756D2069642C11706F72747469746F72206575206475692E0C557420616363756D73616E2C1D74656C6C757320696E20656C656966656E6420696D706572646965742C1B656C6974206D6173736120666163696C69736973206D61676E612C28766974616520666575676961742074656C6C7573206C656374757320656765742074656C6C75732E2C4D6175726973206163206E65717565206163206E69626820756C7472696369657320696D706572646965742E0E55742075726E61206C6F72656D2C15616C6971756574206574206D61747469732069642C1273757363697069742061206C65637475732E2F4E616D207665686963756C6120706F72747469746F7220657261742073697420616D657420696D706572646965742E24536564206575206E756E63206964206D6175726973206D6F6C6C69732072757472756D2E1650656C6C656E74657371756520647569206F7263692C1E756C6C616D636F72706572206174206672696E67696C6C6120656765742C17736F6C6C696369747564696E2065676574206E756E632E36517569737175652076656C206D6574757320657420656E696D20706C61636572617420656C656966656E64207365642061206C656F2E355072616573656E742070686172657472612068656E647265726974206E696268207363656C6572697371756520616C697175616D2E21447569732074696E636964756E7420766573746962756C756D20636F6E6775652E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E1D566573746962756C756D206E6F6E206C696265726F206C6967756C612E2D557420637572737573206D617572697320736564206F64696F20696D70657264696574207665686963756C612E1B496E206665726D656E74756D207665686963756C6120617263752C1D616320636F6D6D6F646F20617567756520706F7375657265207365642E12566976616D757320756C747269636965732C1A6D61676E6120696E20616C697175616D2073757363697069742C1C746F72746F72206C656F20766573746962756C756D20646F6C6F722C1E7574206C7563747573206F64696F206469616D206E6563206C616375732E1850686173656C6C7573206574206469616D206D657475732E3E43726173206672696E67696C6C61206E696268207175697320616E74652074696E636964756E7420696E20657569736D6F64206C656F206C75637475732E4B4E756C6C612074696E636964756E7420657261742073697420616D65742065726174207669766572726120656C656966656E6420616363756D73616E206C6967756C61206C75637475732E165175697371756520657420726973757320656E696D2E3A5072616573656E74207669746165206E65717565207574206C656F2073656D706572206D616C65737561646120657520736564206A7573746F2E2944756973207072657469756D207665686963756C61206F72636920736564206469676E697373696D2E3743726173206E6563206D61676E6120696E206E756C6C61206C616F726565742076756C707574617465207175697320617420656E696D2E174E756C6C612065676574206F64696F2074656C6C75732E42496E20706C616365726174206D6173736120657420707572757320656C656966656E64206E6F6E206672696E67696C6C61206E65717565206672696E67696C6C612E21446F6E656320696D7065726469657420756C6C616D636F72706572206E69736C2C1B76656C2072757472756D2073617069656E2072757472756D20612E0C44756973206C75637475732C1A616E74652065752074726973746971756520636F6D6D6F646F2C20697073756D206C696265726F20736F6C6C696369747564696E2070757275732C1F717569732074656D706F72206E6962682066656C6973206163207175616D2E1D4E756C6C616D20736F64616C6573207665686963756C6120656C69742C1E656765742065676573746173206E6571756520626C616E64697420696E2E1D4D6175726973206567657374617320666175636962757320656C69742C2269642070656C6C656E746573717565206E6962682074696E636964756E742069642E164E616D2076697461652066656C6973206D61676E612E12446F6E65632074656C6C7573207175616D2C227363656C6572697371756520766974616520736F6C6C696369747564696E2061742C10677261766964612076656C206573742E3D557420736F64616C65732076656C6974206E65632064756920736F6C6C696369747564696E206120706F727461206D6920756C6C616D636F727065722E244372617320736F6C6C696369747564696E206567657374617320636F6E7365717561742E14446F6E656320696420746F72746F72206573742C11656765742074656D706F72206469616D2E78566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B20557420756C6C616D636F7270657220677261766964612070686172657472612E1050726F696E206469616D206E756E632C186665756769617420696420696E74657264756D2076656C2C11706F72747469746F722061206E69736C2E31416C697175616D20616C6971756574206F72636920736564206D65747573206567657374617320706F72747469746F722E214D6F72626920736F6C6C696369747564696E2070756C76696E617220656E696D2E3F457469616D2074696E636964756E74206175677565207574207175616D206D6F6C6C697320616320696D70657264696574206F64696F20656765737461732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E124E756E6320617420656E696D206469616D2E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E15416C697175616D206C6F72656D206C65637475732C1A737573636970697420617420766573746962756C756D2061632C177363656C6572697371756520717569732061756775652E134D6F7262692066656C69732074656C6C75732C1F706F72747469746F7220717569732070656C6C656E7465737175652075742C0F64696374756D206163206E6973692E46496E74656765722073697420616D6574206D617373612076656C206175677565206C6163696E69612064617069627573206E6F6E2076756C70757461746520746F72746F722E2141656E65616E20756C6C616D636F7270657220736F64616C6573206A7573746F2C1F6174206665726D656E74756D206C696265726F20736F64616C65732065742E2D467573636520766974616520656E696D207574206C6967756C6120766F6C757470617420706C6163657261742E1C50656C6C656E746573717565206574206D6175726973206E6962682C126E6F6E206C6163696E696120697073756D2E3150686173656C6C7573206163206E6962682073697420616D6574206E6962682076756C7075746174652072757472756D2E174D616563656E6173206964206E756C6C61207175616D2E374D616563656E617320657569736D6F6420646F6C6F7220696E206D61676E6120636F6E64696D656E74756D2061646970697363696E672E2B4D6F72626920656C656D656E74756D2074696E636964756E74206D617572697320696E206D6F6C6C69732E4850656C6C656E74657371756520736167697474697320747572706973206964206E756E632074656D706F72206120656C656966656E6420747572706973206665726D656E74756D2E1B53656420666175636962757320696E74657264756D20617263752C196174207661726975732073656D20616C69717565742069642E2650656C6C656E74657371756520766573746962756C756D20696163756C69732072697375732C1B69642064696374756D206C6F72656D20677261766964612061632E465175697371756520736167697474697320617263752076697461652065726F73206461706962757320766974616520636F6E76616C6C6973206E756C6C61206D61747469732E114E616D20696420647569206E657175652C127574206D6F6C65737469652076656C69742E2D50656C6C656E7465737175652070756C76696E617220706F727461206572617420657520696E74657264756D2E114E756E63206D65747573206D617373612C1B766573746962756C756D207669746165206567657374617320612C126672696E67696C6C61206574206F64696F2E18517569737175652071756973206469616D206C6F72656D2C18717569732070656C6C656E7465737175652076656C69742E144D61757269732073617069656E2072697375732C1C7375736369706974206E656320766573746962756C756D206E65632C0F72757472756D20612072697375732E29437572616269747572206C6F626F7274697320636F6E64696D656E74756D20756C747269636965732E194475697320717569732064617069627573207475727069732E114E756E63206C656374757320656C69742C19666163696C6973697320617420626962656E64756D2065742C13766573746962756C756D20696E20617263752E104D6F726269206F64696F206E6962682C176665756769617420717569732074656D706F722075742C1A7363656C6572697371756520756C747269636573206E6973692E1B437572616269747572206120616363756D73616E2061756775652E1F496E746567657220616C697175657420706F72747469746F72206E6962682C1D6E656320706C6163657261742065737420706861726574726120696E2E2C446F6E65632066657567696174206E697369206574206F64696F20636F6D6D6F646F20696E74657264756D2E2A566573746962756C756D20756C6C616D636F7270657220626962656E64756D206665726D656E74756D2E384675736365206575206C616375732065676574206D65747573206D616C65737561646120666575676961742065752076656C20657261742E13536564206574206572617420746F72746F722E1E4D6F726269206D616C65737561646120766172697573206D6F6C6C69732E1C4E616D20616363756D73616E206469676E697373696D206F64696F2C227175697320636F6E7365637465747572206D69206D6F6C657374696520656765742E0E457469616D20696163756C69732C1A656E696D20657520706C616365726174207665686963756C612C1B656C6974206D617373612070756C76696E61722074656C6C75732C1C696E20637572737573206D61676E61206D69206E6F6E207175616D2E1D566976616D7573207661726975732074656D706F722073656D7065722E264E756C6C612061646970697363696E67206665756769617420736F6C6C696369747564696E2E26457469616D206C6163696E696120706C61636572617420647569206E6563207661726975732E16496E207669746165206D65747573206D61757269732E3D566573746962756C756D20736564206D61676E612071756973206E696268206F726E6172652072686F6E63757320757420766974616520697073756D2E1144756973206C6967756C61206E756E632C1B6665726D656E74756D20736564207375736369706974206E6F6E2C136D6F6C65737469652076656C2070757275732E1453757370656E646973736520706F74656E74692E0F50726F696E2061726375206C656F2C1A61646970697363696E67206174207665686963756C612061632C15756C6C616D636F72706572206E6563206469616D2E1950726F696E207072657469756D20706F7274612075726E612C1F71756973206665726D656E74756D206E69736C207072657469756D2065742E2C53757370656E6469737365206120656C6974206575206E697369206D6F6C6573746965206C6163696E69612E194372617320617420636F6E64696D656E74756D20617263752E1453757370656E646973736520706F74656E74692E4F53656420756C6C616D636F7270657220616E74652073697420616D65742075726E6120616C697175657420756C74726963657320616363756D73616E206E6571756520756C6C616D636F727065722E414E616D2073697420616D65742076656C69742076656C2075726E6120677261766964612073757363697069742073697420616D6574206E6F6E206D61757269732E125574206E6F6E206E6571756520617263752E1F5072616573656E74206772617669646120736F64616C6573206C6F72656D2C2376697461652068656E64726572697420707572757320626962656E64756D206E6F6E2E0F4E756C6C6120666163696C6973692E0E4D6175726973206F726E6172652C1E73656D20656765742074726973746971756520766573746962756C756D2C196175677565206D65747573206C7563747573206E657175652C2573697420616D6574207072657469756D206C6563747573206475692065742061756775652E1E43757261626974757220657520636F6E76616C6C6973207475727069732E0B557420657374206573742C1C76756C70757461746520617563746F72206C616F726565742065742C13696163756C69732065676574206D617373612E20566573746962756C756D206F726E61726520706F7274612072686F6E6375732E4A50686173656C6C7573207361676974746973206F726369206574206F72636920626C616E64697420666163696C697369732076697665727261206C656F20636F6E73656374657475722E4D437572616269747572206D6F6C6573746965206E696268207669746165206E69736920636F6E64696D656E74756D20656765742074656D706F72206E756C6C6120636F6E73656374657475722E0D55742061726375206E756E632C1B6D6F6C6C6973206E656320636F6E7365637465747572206E65632C16656C656D656E74756D2074656D70757320656E696D2E164E756C6C616D2076656C2061726375206D617373612E16496E207175697320616363756D73616E206E6962682E1A4E756C6C616D20696420747269737469717565206E657175652E2C50686173656C6C7573206D617474697320696E74657264756D206E697369207175697320766976657272612E134D6F72626920736F6C6C696369747564696E2C1B6C656F2076656C20666175636962757320636F6E7365717561742C16616E74652065737420626C616E646974206E6962682C20696420736F64616C6573207269737573206E756E63206163206C6967756C612E364E756C6C616D2070656C6C656E746573717565206469616D206E65632075726E61206672696E67696C6C61206D616C6573756164612E144D616563656E6173206E697369206C6F72656D2C1A626962656E64756D206120636F6E64696D656E74756D20696E2C13636F6D6D6F646F2076656C2074656C6C75732E3450726F696E206174206F64696F20696E20616E7465206C6163696E696120736F64616C65732076656C206567657420656C69742E1B437572616269747572206575206665726D656E74756D206573742E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E345072616573656E742072757472756D206C65637475732061632076656C697420636F6E7365717561742068656E6472657269742E1A496E2066617563696275732064696374756D206D61747469732E0F5365642061206A7573746F206D692C12657520636F6E76616C6C6973206E6962682E26496E746567657220636F6D6D6F646F20736F6C6C696369747564696E2073757363697069742E3E4375726162697475722076656C206C656F207669746165207175616D20756C7472696369657320696E74657264756D2065742065676574206A7573746F2E3F50726F696E20756C747269636573206C61637573206574206D657475732076756C70757461746520756C747269636573206575206E6F6E206C6967756C612E2A50726F696E2061742076656C697420696E206E697369206D616C657375616461206C6F626F727469732E0F4675736365206573742075726E612C1A70756C76696E61722061632076656E656E61746973206E6F6E2C1468656E647265726974206E6F6E206E657175652E28446F6E6563206964206175677565206163206D61676E6120636F6E73657175617420706F7274612E2B446F6E65632073656420657261742076697461652076656C6974207665686963756C612072757472756D2E2F41656E65616E2070756C76696E617220647569206E656320617567756520706861726574726120696163756C69732E4351756973717565207072657469756D2072697375732076697461652061726375206665756769617420616320706F73756572652072697375732073616769747469732E0E4E616D206469616D20657261742C1772757472756D20757420696E74657264756D206E6F6E2C0F6C616F726565742061742073656D2E0E53656420656E696D20656C69742C1874656D706F72206567657420766F6C75747061742061632C0F616C69717565742061742073656D2E354E756E6320696E2075726E6120657520697073756D2074656D706F722070686172657472612065676574207669746165206573742E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E104E756C6C6120756C747269636965732C1E6C6967756C61207175697320636F6E73657175617420706F73756572652C17616E74652072697375732067726176696461206573742C1F696E207072657469756D20656C697420697073756D206E65632065726F732E2A4D6175726973206163206C656F2073697420616D6574206E69736C2072757472756D206D61747469732E31446F6E656320666163696C6973697320656E696D2065676574206D61757269732067726176696461206C6163696E69612E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E31566976616D757320656C656966656E64206C61637573206E6F6E206572617420656C656966656E64206C6163696E69612E284E616D207665686963756C61207665686963756C6120697073756D20616320756C7472696365732E17416C697175616D207574206D617373612070757275732E2F41656E65616E2076656C20657374207669746165206E756C6C612074696E636964756E74206D616C6573756164612E11416C697175616D20656C656966656E642C1A61726375206E6F6E207472697374697175652074656D706F722C19647569206C6967756C61206D616C6573756164612073656D2C2A696163756C6973207363656C65726973717565206D61676E61206D617373612071756973207175616D2E1B50656C6C656E746573717565206C696265726F206D61757269732C1E76756C707574617465207365642074696E636964756E742076697461652C127665686963756C6120616320697073756D2E104D61757269732070686172657472612C1C7475727069732065752074696E636964756E742072686F6E6375732C187175616D20746F72746F722076697665727261206573742C2361742070656C6C656E746573717565206175677565206E696268206163206E6962682E0D496E20697073756D206475692C1C756C6C616D636F727065722076656C2073656D70657220717569732C1073656D706572206964206D617373612E1850686173656C6C7573206E6F6E2073656D20646F6C6F722C166174207363656C657269737175652074656C6C75732E164375726162697475722076656C69742061756775652C1770756C76696E617220696E20616C697175616D2069642C10616C69717565742076656C206C656F2E1D4675736365206665726D656E74756D20626C616E646974206E756E632C2976697461652074696E636964756E74206C656F206D6F6C657374696520636F6E64696D656E74756D2E1D53757370656E6469737365207574206772617669646120697073756D2E144375726162697475722076756C7075746174652C226D61757269732073697420616D65742070756C76696E61722073616769747469732C18697073756D20656E696D206665756769617420656E696D2C1F657420706F727461207269737573206E65717565206567657420616E74652E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E11446F6E65632065726F7320646F6C6F722C1B7665686963756C61207175697320616C697175616D20656765742C106F726E617265206964206C6F72656D2E0F557420646F6C6F72206C616375732C15616C69717565742075742074656D706F722065742C0F766172697573206574206E756E632E444372617320636F6E7365637465747572206D617373612076697461652076656C6974206D6174746973206120756C7472696365732075726E612076656E656E617469732E125072616573656E74206C61637573206D692C18626962656E64756D206120616C697175657420717569732C15766573746962756C756D206E6F6E2076656C69742E1A50726F696E2073697420616D657420656C69742066656C69732C136575206D616C657375616461206A7573746F2E1B4D616563656E617320617563746F722075726E61206D657475732E3550686173656C6C757320636F6E76616C6C69732076656C6974206964206A7573746F20626C616E6469742076656E656E617469732E2353757370656E646973736520636F6E76616C6C69732072686F6E637573206F7263692C1A612074696E636964756E74207175616D2076617269757320612E2A4675736365207363656C6572697371756520616C697175616D206F64696F20616320736F64616C65732E17416C697175616D20696E206C656374757320617263752E0E496E20766573746962756C756D2C1B6E697369206574207361676974746973206469676E697373696D2C1870757275732065737420666575676961742072697375732C21616320616363756D73616E20616E746520707572757320696E207475727069732E234D616563656E617320626962656E64756D20636F6E64696D656E74756D206E6962682C2271756973206672696E67696C6C61207175616D20696D70657264696574207365642E2F4E756C6C6120756C6C616D636F727065722073757363697069742073656D20657569736D6F642072686F6E6375732E17437572616269747572206C6563747573206A7573746F2C1E636F6E73656374657475722076697461652076697665727261207365642C126672696E67696C6C61206174206E756E632E15416C697175616D206A7573746F20746F72746F722C176F726E6172652076656C2072686F6E637573206E6F6E2C13656C656966656E64207365642070757275732E1D4E756C6C616D20706F73756572652067726176696461206D61676E612C286567657374617320636F6E76616C6C69732074656C6C75732076656E656E6174697320717569732E0F4D617572697320666575676961742C1B6C6563747573206E65632072757472756D20706C6163657261742C1D74656C6C757320617567756520636F6E76616C6C69732076656C69742C1D696E206D6174746973206F64696F206E6571756520696E2075726E612E355175697371756520717569732075726E61206174206469616D207072657469756D20696163756C697320757420736564206475692E104D6F726269206E69626820656E696D2C19616363756D73616E20657520636F6E76616C6C69732065742C11626962656E64756D20736564206475692E43436C61737320617074656E742074616369746920736F63696F737175206164206C69746F726120746F727175656E742070657220636F6E75626961206E6F737472612C1770657220696E636570746F732068696D656E61656F732E31457469616D20696E74657264756D20747572706973206575206475692061646970697363696E672073616769747469732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E21496E206861632068616269746173736520706C617465612064696374756D73742E1C53757370656E646973736520736564206C696265726F20656E696D2C1165742064617069627573206A7573746F2E10416C697175616D20636F6D6D6F646F2C247475727069732073697420616D65742076656E656E6174697320666163696C697369732C1A6E696268206469616D20706F72747469746F72206E657175652C1D6E65632067726176696461206D61737361206F64696F20612073656D2E184D6F72626920717569732076656C6974206C6967756C612E434D617572697320696E74657264756D207269737573206E6563207175616D2072686F6E63757320657520626962656E64756D206D61757269732070756C76696E61722E284E756E63206964206F726369206E656320747572706973206C6F626F72746973206C75637475732E335072616573656E74206C616F72656574206C65637475732076656C206C656F206D616C65737561646120696E74657264756D2E2F517569737175652061206D692061632065726F73206D617474697320706861726574726120696E2061207175616D2E4F536564207363656C65726973717565206C6967756C612076656C2074656C6C75732070756C76696E617220737573636970697420736F6C6C696369747564696E206F64696F207665686963756C612E2C496E20706F727461206F64696F20617563746F72206A7573746F20636F6D6D6F646F206C6F626F727469732E224E756C6C616D20706F72747469746F7220766F6C757470617420626C616E6469742E12496E20757420766172697573206E69736C2E1B4E756E6320706861726574726120706F727461206C75637475732E154D617572697320696E206D6174746973206573742E21496E206861632068616269746173736520706C617465612064696374756D73742E1E4D616563656E61732073656420636F6E76616C6C69732074656C6C75732E87566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B205574207665686963756C61206D6574757320766974616520697073756D2068656E6472657269742072757472756D2E104E756E6320646F6C6F72206E69736C2C18696E74657264756D2071756973206F726E6172652065742C1074656D706F722071756973206475692E29446F6E65632074696E636964756E742076617269757320747572706973206E6F6E206375727375732E0F4E756C6C61206C6F626F727469732C216C6163757320656765742070656C6C656E7465737175652073616769747469732C1775726E6120656C69742072686F6E63757320657261742C24616320636F6E76616C6C697320697073756D2073617069656E206E6F6E206C616375732E334D6F7262692070656C6C656E746573717565206C6967756C612065742076656C69742074656D7075732073616769747469732E2B4D6F7262692074696E636964756E7420696E74657264756D206E756E63206E6F6E2073757363697069742E2E4372617320666175636962757320696E74657264756D2076656C697420616363756D73616E20706F73756572652E14446F6E656320612061756775652072697375732E0E457469616D20766976657272612C1B6C656374757320736564206D6174746973206C6F626F727469732C196572617420726973757320616C6971756574206C6F72656D2C1E65752073656D706572206C696265726F206E756E6320616320657261742E12446F6E656320617420647569206E6973692E1146757363652064756920746F72746F722C1B636F6E736571756174206567657420656765737461732076656C2C166C6F626F7274697320656C656D656E74756D206D692E2D53757370656E646973736520626C616E646974206D6F6C65737469652075726E612076656C206D6F6C6C69732E1E4E616D20616C697175616D20766F6C757470617420626962656E64756D2E2C4E756C6C6120696420657261742061206C656374757320666163696C6973697320766573746962756C756D2E274E756E632064696374756D206C616F72656574206D61676E612065752076656E656E617469732E424475697320666163696C69736973206A7573746F206E656320656E696D207665686963756C61206E65632072757472756D2070757275732076756C7075746174652E3153656420736F6C6C696369747564696E20647569206E656320707572757320706F72747469746F72206C6163696E69612E6C566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B205072616573656E74206E69736C206C616375732C1472757472756D20616320636F6E6775652065752C1A7363656C657269737175652064696374756D206C6967756C612E124675736365206E65717565206D617373612C1E76697665727261207365642073757363697069742073697420616D65742C11706F737565726520617420697073756D2E4C5072616573656E74207363656C65726973717565206C696265726F20696E206E69626820677261766964612073656420636F6E736563746574757220747572706973207665686963756C612E1346757363652073617069656E2076656C69742C18766573746962756C756D206120616C697175616D20696E2C14626962656E64756D2076656C206D61757269732E1850686173656C6C757320696420706F7274612065726F732E1941656E65616E206E6563206C6967756C61207475727069732C1375742074696E636964756E742076656C69742E184372617320636F6D6D6F646F20636F6E677565206475692C1E696420677261766964612066656C697320696163756C697320656765742E2C4E756E6320766172697573206469616D206120707572757320656C656D656E74756D20656C656966656E642E4353656420766976657272612076656C69742073697420616D657420616E746520756C747269636573206E6563207661726975732074656C6C757320616C697175616D2E1653757370656E646973736520616E7465206E756E632C187375736369706974206E656320736F64616C65732075742C0F72686F6E637573206120616E74652E124E756C6C61207269737573206E657175652C1A6665726D656E74756D20696E207068617265747261206E65632C16636F6D6D6F646F2072686F6E637573206E756C6C612E1141656E65616E206665726D656E74756D2C1D6C6967756C61206E656320737573636970697420756C7472696365732C1B6C6967756C61206E657175652072686F6E6375732070757275732C1B61206D6F6C6C69732073656D207075727573207574206E756E632E214E756E6320616C697175616D20756C6C616D636F72706572206C6163696E69612E14447569732069642076656C6974206C616375732E204372617320636F6E76616C6C697320736F64616C6573207665686963756C612E1150726F696E206E696268206E756C6C612C20626962656E64756D207365642070656C6C656E7465737175652076697461652C13626C616E646974207669746165207175616D2E184375726162697475722065742065726F732076656C69742C146E6F6E207665686963756C612073617069656E2E3153757370656E6469737365206575206D69206E6563206D657475732070656C6C656E74657371756520656765737461732E1943757261626974757220612074656C6C75732070757275732C0F61632064696374756D206E6973692E12446F6E6563206469616D206C6967756C612C1B74696E636964756E7420757420706F73756572652076697461652C12636F6E736571756174206174206E6973692E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E2E4E756C6C6120617563746F72206E69736920736564206D657475732074696E636964756E7420626C616E6469742E0F4E756C6C6120666163696C6973692E3350726F696E20766F6C7574706174206D69207361676974746973207269737573206672696E67696C6C6120666575676961742E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E11566976616D75732073616769747469732C1A6D6574757320657420736167697474697320736F64616C65732C1B6D61737361206C656F20656C656D656E74756D2073617069656E2C226964207375736369706974206C6563747573206C6967756C61206163206F7263692E204E756C6C61206469676E697373696D20747269737469717565206A7573746F2C2576656C20766F6C7574706174207475727069732072757472756D20636F6E76616C6C69732E0F536564206469616D206C6F72656D2C19756C74726963696573206120756C747269636965732065752C17747269737469717565207669746165207475727069732E32446F6E65632070656C6C656E74657371756520636F6E73656374657475722074656C6C7573206E6F6E20736F64616C65732E124E616D20696420646F6C6F7220617263752E1750656C6C656E746573717565206E69736C2065726F732C1B67726176696461206E6F6E20616C697175616D20617563746F722C13656C656D656E74756D2065742066656C69732E1E5175697371756520696E2070656C6C656E746573717565206D657475732E3B4D6F72626920736564206C6F72656D206E6F6E206D61676E61206672696E67696C6C612065676573746173207669746165207574206E756C6C612E2A41656E65616E2076656C20616E7465206964206E6962682074696E636964756E7420666575676961742E0E5574206469616D206C6F72656D2C1873656D7065722076656C20656C656D656E74756D2061632C176661756369627573207375736369706974206E756E632E22557420756C7472696365732070686172657472612070656C6C656E7465737175652E0E536564206D616C6573756164612C1C6E756C6C61207669746165206C75637475732073757363697069742C1965737420697073756D2076697665727261206C696265726F2C247175697320756C74726963657320617567756520616E746520656765742076656C69742E1341656E65616E206E696268206C696265726F2C1B656C656D656E74756D2065676574206C6163696E6961206E6F6E2C11666175636962757320757420617263752E1453757370656E646973736520706F74656E74692E1450686173656C6C7573206E69736C20616E74652C1966617563696275732073656420616C697175616D206E6F6E2C1670656C6C656E7465737175652076656C206F7263692E0F4E756C6C6120666163696C6973692E2D536564206574206D61757269732073697420616D657420656E696D206D616C65737561646120636F6E6775652E21496E206861632068616269746173736520706C617465612064696374756D73742E3F437261732076697461652076656C6974206120656E696D20736F6C6C696369747564696E20656C656D656E74756D20696E74657264756D2061206469616D2E134E756C6C61207075727573206C65637475732C1C6D617474697320666163696C69736973207072657469756D2065742C16636F6E73656374657475722075742074656C6C75732E304372617320706F7375657265206F64696F2065676574206E696268206C6163696E696120756C6C616D636F727065722E15416C697175616D206120656E696D2070757275732E1F446F6E656320706861726574726120747269737469717565206D61676E612C2273697420616D657420766172697573206572617420666163696C697369732065742E454E756C6C616D206D6F6C6573746965206E69736920657569736D6F64206F72636920756C74726963657320696E206D6F6C6C69732074656C6C757320616363756D73616E2E20557420706C6163657261742068656E64726572697420706F72747469746F722E1A4E756C6C612073697420616D6574207175616D2072697375732E0E4E756E63206469616D206475692C1961646970697363696E67206E6F6E206375727375732065742C10706861726574726120736564206D692E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E174372617320656765742068656E647265726974206D692E30446F6E65632073616769747469732074696E636964756E74206E6973692076656E656E6174697320656765737461732E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E1A53757370656E64697373652061632066656C697320657261742C11757420706C616365726174206E6973692E32437572616269747572206C616F726565742070656C6C656E74657371756520657261742073656420706F72747469746F722E125365642076656C206D65747573206C656F2C106E656320636F6E67756520656E696D2E12566976616D757320656C6974206F7263692C1A756C74726963696573206163207361676974746973206E65632C0E706F7274612061206C6F72656D2E2653757370656E646973736520766F6C757470617420666163696C69736973207475727069732C1F6E6F6E2064617069627573206D69207363656C65726973717565207365642E385574206964206C696265726F2061206C6F72656D2072686F6E63757320736F6C6C696369747564696E206E6F6E206E6F6E206C6F72656D2E13496E746567657220657261742070757275732C196C616F726565742065752070756C76696E617220656765742C16636F6E64696D656E74756D20696E2074656C6C75732E164E616D20657420706C6163657261742070757275732E135072616573656E7420636F6E76616C6C69732C196E69736920696420736F64616C65732070686172657472612C1A6E6962682061756775652074696E636964756E7420656C69742C2773697420616D65742074656D706F72206A7573746F206F72636920717569732073617069656E2E3A4372617320696D70657264696574206C6967756C6120756C74726963696573206C6163757320766573746962756C756D206D6F6C65737469652E194675736365206E6F6E2073757363697069742066656C69732E3341656E65616E20736564206E69736C2071756973206D69206461706962757320617563746F7220657420656765742073656D2E2B566573746962756C756D206C75637475732065676573746173206469616D206E656320616C69717565742E0E4E756E632073757363697069742C1D7269737573206E6F6E20666163696C697369732073616769747469732C1A6C696265726F20656E696D2072757472756D206D61757269732C26617420756C6C616D636F7270657220746F72746F72206E6962682076656C207475727069732E154D6F72626920736564206E69736C2070757275732E21496E206861632068616269746173736520706C617465612064696374756D73742E0F4E756C6C61206F726369206475692C1C636F6E7365637465747572206964206C616F7265657420717569732C0F6D6F6C6C697320696E206E756E632E2B50686173656C6C757320666175636962757320706F7375657265206D61676E612065752073656D7065722E10437261732073656D207475727069732C166D6174746973206E6F6E207072657469756D2061742C13666575676961742065676574206C6F72656D2E154D617572697320696E206F726369206E756C6C612C1573656420636F6E7365637465747572206469616D2E1750656C6C656E746573717565206469676E697373696D2C1C657261742064696374756D206772617669646120766976657272612C176573742065726174206C616F72656574206D617373612C17617420706F7274612073656D206D692061207175616D2E2A4D617572697320756C7472696369657320766976657272612076656C697420696E20706F73756572652E1A566573746962756C756D206574206C6967756C612065726F732E1B50656C6C656E746573717565206575206F726369206E756C6C612E1250726F696E206C656374757320656E696D2C176D6F6C657374696520612073616769747469732069642C16656C656D656E74756D207175697320746F72746F722E3D4D6175726973206574206C6967756C61207574206C6967756C61206567657374617320706F72747469746F72206E656320717569732073617069656E2E1044756973206E69626820646F6C6F722C1C7068617265747261206575206D6F6C6C69732073697420616D65742C1174656D70757320757420746F72746F722E2F50656C6C656E74657371756520747269737469717565206D6174746973206E69736C2073656420636F6D6D6F646F2E165072616573656E74207574206D6175726973206D692E12446F6E6563206C656374757320617263752C1F766573746962756C756D2074656D70757320636F6E76616C6C697320696E2C16766573746962756C756D20656765742072697375732E1E437261732073697420616D657420747269737469717565206D657475732E2E467573636520736F64616C65732076656C697420657420707572757320696D706572646965742073656D7065722E14446F6E65632061206E6962682074656C6C75732C117574207068617265747261206F64696F2E1350726F696E2074656C6C7573206E756C6C612C216D616C65737561646120766974616520616C697175657420626962656E64756D2C11636F6E677565207574207475727069732E1A566573746962756C756D2076656C20707572757320656C69742C1673697420616D65742074656D7075732070757275732E115072616573656E74206D6920657261742C1B696D7065726469657420617420766F6C757470617420656765742C106C616F7265657420612070757275732E2343757261626974757220756C7472696369657320756C74726963696573206E6973692C19657420766172697573206E69736920617563746F7220696E2E47437572616269747572207665686963756C6120656C6974206574206572617420696D7065726469657420766974616520657569736D6F64206469616D20636F6E76616C6C69732E1A4D6F726269206D6F6C6C69732073656D7065722072697375732C1D616320766172697573207475727069732066617563696275732065742E3E4E756C6C6120636F6D6D6F646F206C6967756C61206E6563206E756C6C6120626C616E6469742075742072686F6E637573207175616D2073656D7065722E134D61757269732061726375206C6967756C612C17646170696275732076656C20626C616E6469742069642C116F726E617265207175697320617263752E1250726F696E2075726E61206C6967756C612C1D64696374756D20616C69717565742076656E656E61746973206E65632C107068617265747261206574206573742E14446F6E6563206C696265726F206C65637475732C1E7363656C657269737175652065676574207068617265747261206E65632C147363656C65726973717565207574207175616D2E12496E7465676572206D6920746F72746F722C196D61747469732061206C75637475732073697420616D65742C12636F6E7365717561742071756973206D692E345072616573656E7420696E206F7263692061206E69626820637572737573206D616C6573756164612065752061206D61676E612E144E616D206174206C6967756C612070757275732C17636F6E73657175617420656C656966656E64206475692E34446F6E6563207472697374697175652076656C69742069642074757270697320756C74726963696573206665726D656E74756D2E33496E2075742073656D206575207175616D20766F6C757470617420636F6E73657175617420757420656765742061756775652E2F4E616D20706F7375657265206E69736C206174206C6563747573206C616F72656574207363656C657269737175652E2E566976616D7573206E6563206F64696F2074656D707573206E756C6C61206567657374617320696163756C69732E2C53656420736F6C6C696369747564696E20706F73756572652073617069656E20616320696E74657264756D2E43436C61737320617074656E742074616369746920736F63696F737175206164206C69746F726120746F727175656E742070657220636F6E75626961206E6F737472612C1770657220696E636570746F732068696D656E61656F732E105175697371756520616C697175616D2C1B6D61737361207574207665686963756C6120706C6163657261742C146475692064756920666575676961742073656D2C2173656420626C616E6469742073656D206175677565206E6F6E2073617069656E2E1A4E756C6C612073697420616D6574206A7573746F206469616D2E41416C697175616D2065676574206A7573746F207669746165206C6F72656D20636F6E64696D656E74756D20696D7065726469657420612065676574206E6973692E11457469616D207175616D206E756C6C612C1B766F6C757470617420616320636F6E73657175617420717569732C11766F6C7574706174206163206F7263692E214E616D206665726D656E74756D2068656E6472657269742070756C76696E61722E16416C697175616D206572617420766F6C75747061742E1E4D61757269732073697420616D65742076697665727261206A7573746F2E1E43726173206567657420736F6C6C696369747564696E207475727069732E1E446F6E656320636F6E677565207072657469756D2073757363697069742E264E756E632074656D7075732074656D706F72206175677565207669746165206D61747469732E2A41656E65616E2076656C206C65637475732061206E657175652066657567696174207072657469756D2E3650726F696E2061632070757275732061206E6973692074696E636964756E7420617563746F72206E6F6E2065676574206A7573746F2E18446F6E656320657420626962656E64756D20697073756D2E0F4E756C6C6120666163696C6973692E234E616D2070656C6C656E746573717565206C6163696E6961206665726D656E74756D2E174E756C6C61206575206C6967756C61207475727069732C0D6120637572737573206475692E234E756C6C616D20706F72747469746F72206D6F6C657374696520626962656E64756D2E3141656E65616E20696163756C6973206D6920756C747269636573206C6F72656D207669766572726120677261766964612E1450726F696E20746F72746F72206D61757269732C1B6665726D656E74756D207669746165207072657469756D2061632C13706F737565726520717569732061756775652E0D4372617320736F64616C65732C2466656C69732073697420616D657420736F6C6C696369747564696E20657569736D6F642C196C6F72656D20647569206665726D656E74756D206E69736C2C1D6574207665686963756C61207175616D20656E696D206574206573742E3D457469616D20616320646F6C6F72207365642061756775652064696374756D20756C6C616D636F72706572206E6F6E206D6F6C6573746965206C656F2E124D6F7262692074656C6C757320617263752C24696D70657264696574206567657420636F6E64696D656E74756D2073697420616D65742C18636F6E76616C6C697320736F64616C6573206D617373612E2555742069642075726E61206575207175616D20666163696C697369732072686F6E6375732E1243757261626974757220657569736D6F642C1A6175677565207574206672696E67696C6C6120636F6E6775652C1B6F64696F20726973757320766573746962756C756D20656E696D2C20616320706F727461206175677565206C61637573207175697320646F6C6F722E0D53656420647569206F7263692C1B72757472756D20636F6D6D6F646F2064617069627573207365642C146665726D656E74756D20696E206C696265726F2E1741656E65616E2069642070757275732073617069656E2C10696E2066657567696174206F64696F2E2C4E756C6C616D20696E74657264756D207375736369706974206F64696F2065676574207665686963756C612E125072616573656E7420696E74657264756D2C2273617069656E20766974616520636F6E73656374657475722070756C76696E61722C1A6D61757269732066656C697320696163756C6973206E6973692C2576697461652073616769747469732073617069656E2076656C6974206163206E657175652E3A4D6F72626920612070757275732076656C2076656C697420766573746962756C756D20756C6C616D636F7270657220612076656C206469616D2E2A4E616D206E656320647569206E6F6E2074656C6C75732074696E636964756E74206D6F6C65737469652E274E616D206C6163696E696120696163756C6973206F72636920656765742070756C76696E61722E19457469616D20616320666163696C69736973206D617373612E1B4E756C6C612073697420616D6574206C7563747573206F64696F2E1A41656E65616E206567657420747572706973207475727069732C1565676574206665726D656E74756D206E657175652E1950686173656C6C7573206964206C6563747573206E6973692E2B53757370656E646973736520747269737469717565207363656C657269737175652073757363697069742E16496E74656765722076656C206E69626820656C69742E0F447569732073656D206A7573746F2C1B626962656E64756D2076656C2068656E6472657269742076656C2C12637572737573206E6F6E207475727069732E21496E206861632068616269746173736520706C617465612064696374756D73742E3B566573746962756C756D206E6563207175616D206120646F6C6F7220636F6E736571756174206665726D656E74756D2076656C20696E206C656F2E16446F6E65632076656C206C6F72656D2072697375732C137175697320626C616E6469742066656C69732E19536564206D6F6C6C6973206F726E617265207475727069732C1F7669746165206D6174746973207269737573206D6F6C6C697320656765742E215072616573656E7420656C656966656E6420696163756C6973206D61757269732E214D616563656E617320706F7274612074696E636964756E7420656765737461732E13517569737175652061742073656D206C656F2E2C446F6E6563206E6F6E20656E696D2076656C2072697375732073757363697069742076756C7075746174652E344E616D2061206469616D20706C61636572617420647569206665756769617420636F6D6D6F646F206174206120746F72746F722E11467573636520656C69742061756775652C1D636F6E6775652073697420616D657420696D706572646965742069642C117361676974746973206174207175616D2E35496E746567657220766573746962756C756D2066656C69732076656C206E756E6320636F6E73657175617420626962656E64756D2E204375726162697475722072686F6E637573206C6163696E69612072697375732C2873697420616D65742073656D7065722075726E6120656C656D656E74756D207665686963756C612E164E756C6C612076656C20616E7465206C696265726F2E3A4D616563656E617320736564206F726369206E6F6E2065726F732076656E656E617469732064617069627573206E6563206E6F6E206E6962682E16416C697175616D206572617420766F6C75747061742E275175697371756520616C697175657420617563746F72206E756C6C612061742073656D7065722E2141656E65616E20636F6E6775652070656C6C656E74657371756520697073756D2E2F416C697175616D20696420616E74652076656C2065726F7320666163696C6973697320636F6E73656374657475722E3641656E65616E2061206D6920696E206F72636920626962656E64756D206D617474697320657569736D6F64206567657420656C69742E33496E2073656420656E696D206574207175616D2074696E636964756E742073656D70657220696E20717569732061756775652E2B50726F696E207365642073617069656E206964206D61676E6120637572737573207472697374697175652E154E756E632061632073617069656E2061756775652E36416C697175616D2074656D707573206C656F20756C74726963696573206D61676E6120696E74657264756D2074696E636964756E742E2A4E756C6C6120706F72747469746F722067726176696461206C6967756C6120696E20616C69717565742E3D44756973206D617474697320647569206E6F6E2073656D20766573746962756C756D20616320736167697474697320656E696D206D6F6C65737469652E17517569737175652073656420647569206C6967756C612E294E756C6C616D20657569736D6F6420616C697175657420656E696D206964207472697374697175652E36437572616269747572206E6563206C656374757320636F6E7365637465747572206E69736920637572737573207665686963756C612E224E756C6C61206672696E67696C6C6120766573746962756C756D2072757472756D2E4551756973717565206D616C657375616461206E696268207669746165207175616D2066657567696174206E656320706C6163657261742065726F7320756C7472696365732E3F50656C6C656E74657371756520696420647569206964206E69736C20656C656966656E6420696163756C697320706F737565726520757420746F72746F722E17496E74656765722065676574206475692072697375732C0F657520617563746F72207175616D2E33416C697175616D2073697420616D6574206F72636920706C616365726174206E756E6320626C616E6469742064696374756D2E1D566573746962756C756D206E656320696E74657264756D206E6973692E1150726F696E207075727573206E6973692C1E7669766572726120756C7472696369657320616363756D73616E2061632C146469676E697373696D206E6563206E756C6C612E1A446F6E65632073697420616D657420646F6C6F72206E69736C2C1361207363656C6572697371756520656C69742E1950686173656C6C75732075742061726375206C65637475732E205365642073656D70657220646170696275732070656C6C656E7465737175652E154E616D2076697461652075726E61206E756C6C612C1076656C20617563746F72206F7263692E135365642076656C206D61676E61206E6962682E2D437572616269747572207072657469756D20696D70657264696574206F72636920657520756C7472696365732E30566976616D75732071756973206D65747573207068617265747261206E756E6320657569736D6F642072757472756D2E114675736365206D61737361206E6962682C1876656E656E6174697320736564206F726E6172652061742C13706F737565726520736564206D61757269732E0F53656420746F72746F72206573742C1E74656D706F722076656C206665726D656E74756D2073697420616D65742C116C616F72656574206174206E756C6C612E1650726F696E2065752064696374756D206C616375732E1850726F696E206E6563206D6174746973206C65637475732E1D416C697175616D2073656D7065722073656D7065722074656C6C75732C1E616320656C656966656E64206F72636920616363756D73616E206E6F6E2E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E1E50686173656C6C757320766974616520746F72746F72206D61757269732C127175697320626C616E646974206E6973692E19446F6E656320717569732076697665727261206C616375732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E134D616563656E617320696D706572646965742C196C656F2065752074696E636964756E7420677261766964612C1765726F732073656D206C6163696E69612072697375732C2476697461652076697665727261206D61737361206175677565206567657420616E74652E3A53757370656E646973736520756C6C616D636F72706572206C616375732075742065737420626962656E64756D20636F6E64696D656E74756D2E12496E20656765742073656D706572206D692E175072616573656E742074656C6C7573207475727069732C1B6D6F6C6C69732073697420616D657420666575676961742061742C136772617669646120656765742061756775652E15536564206163206C6163696E6961206D617373612E1A536564207669746165206D616C657375616461206C6F72656D2E35566976616D75732070656C6C656E7465737175652075726E6120656765742073656D207665686963756C612070686172657472612E394375726162697475722074726973746971756520746F72746F722065676574206D61757269732061646970697363696E672073656D7065722E2F536564206575206E6973692076756C707574617465206172637520656C656D656E74756D20696D706572646965742E2D4D6F726269206772617669646120657374206E6F6E20616E746520616363756D73616E20626962656E64756D2E1543726173206574206C65637475732061756775652C0F73656420636F6E677565206C656F2E105072616573656E742073656D7065722C1A75726E61206E656320706861726574726120616C69717565742C1C617567756520707572757320747269737469717565206E657175652C246567657420636F6E76616C6C6973206C696265726F2074757270697320736564206D692E1253656420746F72746F722074656C6C75732C1D74656D70757320616320756C6C616D636F727065722074656D7075732C13636F6E736563746574757220696E206475692E1C4372617320616C697175616D2064617069627573207475727069732C1F757420756C747269636573206C6967756C612076756C70757461746520612E1C446F6E6563206D6F6C657374696520706F72747469746F72206D692C21706C6163657261742072757472756D206E6571756520736F64616C65732069642E1746757363652071756973206A7573746F206C616375732E134475697320656765742073656D206E6973692C15616320636F6E73656374657475722061756775652E47566573746962756C756D206C75637475732065726174206E6F6E206C6163757320636F6D6D6F646F2076656C207472697374697175652064756920636F6E73656374657475722E134D61757269732074656C6C7573206E69736C2C1A6D6F6C6573746965206567657420706F7274612076697461652C1373616769747469732073656420646F6C6F722E43436C61737320617074656E742074616369746920736F63696F737175206164206C69746F726120746F727175656E742070657220636F6E75626961206E6F737472612C1770657220696E636570746F732068696D656E61656F732E4350656C6C656E7465737175652076656C206F64696F20656765742073656D20616C6971756574207363656C657269737175652065676574207669746165206E756E632E2146757363652061646970697363696E67207361676974746973206C696265726F2C207175697320706C616365726174206475692070756C76696E617220656765742E114372617320636F6E64696D656E74756D2C22617263752074656D706F7220666163696C6973697320636F6E64696D656E74756D2C1A65726F73206C656F20756C6C616D636F727065722075726E612C2376656C2074696E636964756E742076656C697420656E696D20656765742065726F732E174D61757269732065742073656D706572206E756C6C612E4B50726F696E206D6F6C6C69732073617069656E206E656320656E696D206567657374617320616C697175616D20766573746962756C756D20636F6E73656374657475722074656C6C75732E2841656E65616E207574206E69736C2075742073617069656E20696163756C697320617563746F722E1A50656C6C656E74657371756520646F6C6F722074656C6C75732C18736F64616C657320657520656C656D656E74756D2075742C14756C6C616D636F72706572206174206E756E632E20566573746962756C756D20636F6E76616C6C6973206F726E617265206C656F2C216163206C75637475732065726F73206469676E697373696D20636F6D6D6F646F2E3453757370656E646973736520617420656C69742073697420616D65742075726E6120706C616365726174206C6F626F727469732E1D446F6E6563206665726D656E74756D206C696265726F206C616375732C12696E20706C6163657261742072697375732E164E756C6C616D20757420656E696D2073617069656E2C136E656320626C616E646974206C696265726F2E3D446F6E656320696E206E696268206665726D656E74756D206C61637573206461706962757320626962656E64756D2076656C206163207475727069732E0E4D6F7262692072686F6E6375732C1F7075727573207068617265747261207361676974746973206D6F6C6C69732C1C6C656374757320616E746520696D70657264696574206D61676E612C21696E20766573746962756C756D2075726E61206E756C6C6120616320657261742E1E447569732064696374756D20657569736D6F642076756C7075746174652E114D6F726269206F64696F2061756775652C17756C74726963657320612067726176696461207365642C15656C656D656E74756D20717569732066656C69732E314E616D207363656C657269737175652075726E61206964206A7573746F206469676E697373696D20706C6163657261742E2853656420636F6E76616C6C6973206C6F626F72746973206F7263692076656C20656765737461732E34566573746962756C756D20756C747269636965732066656C697320696E206C696265726F20696163756C6973207661726975732E16416C697175616D206572617420766F6C75747061742E2D50686173656C6C7573206163207075727573206E6F6E20656C6974206D616C65737561646120617563746F722E26446F6E65632075742073656D20696420656E696D20766F6C757470617420706F73756572652E2E446F6E6563206D616C6573756164612065737420736564206F64696F206F726E617265206469676E697373696D2E16437261732076697461652075726E61206D617373612C13757420666163696C69736973206C6F72656D2E1A496E2072757472756D20696E74657264756D206C65637475732C2E6E6563207363656C657269737175652074656C6C757320636F6E7365717561742070656C6C656E7465737175652E1850726F696E206575206D6F6C6573746965206E657175652E18496E74656765722073656420656E696D206C65637475732C10616320616C69717565742075726E612E2950686173656C6C757320736F64616C657320736F6C6C696369747564696E20636F6E7365717561742E1A5072616573656E7420766974616520617567756520616E74652E185365642069642070656C6C656E746573717565206C656F2E2E496E7465676572207665686963756C6120656E696D20717569732064756920616C697175657420636F6E6775652E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E1243757261626974757220677261766964612C1C7175616D2073656420656C656D656E74756D20656C656966656E642C1776656C6974206E756C6C612064696374756D206573742C217574206D616C657375616461206175677565206C6967756C61206964206475692E224D616563656E617320626962656E64756D2074726973746971756520697073756D2C1C6575206772617669646120656C697420636F6D6D6F646F207365642E134675736365206D6574757320746F72746F722C17616363756D73616E20616320666575676961742069642C14766F6C75747061742073656420746F72746F722E31566976616D75732074696E636964756E74206D69206E6F6E20707572757320766F6C757470617420756C7472696365732E2F5072616573656E742065676574206D657475732065752073656D2074656D7075732070656C6C656E7465737175652E24457469616D20666175636962757320736F6C6C696369747564696E20646170696275732E33446F6E65632074656D706F72206D617373612073697420616D6574206D6920706F737565726520756C6C616D636F727065722E2E566573746962756C756D20616320646F6C6F722075742075726E6120756C74726963657320766F6C75747061742E13496E746567657220697073756D2075726E612C1A636F6E6775652074656D707573207665686963756C612065752C17736F64616C65732073697420616D65742076656C69742E3050726F696E2061646970697363696E672075726E612075742065726F7320736F64616C65732076756C7075746174652E254E616D20666175636962757320617563746F72206A7573746F206E6F6E206C75637475732E2E53757370656E646973736520616320617567756520736564206175677565207669766572726120636F6E6775652E104E616D206C6967756C6120657261742C18656C656966656E642065752073656D70657220656765742C167068617265747261206C616F72656574206E756E632E3150686173656C6C75732074656D706F722065726F73206120616E74652074696E636964756E7420756C747269636965732E3646757363652073697420616D65742065737420747269737469717565206C61637573207068617265747261207472697374697175652E1650656C6C656E746573717565206F726369206573742C1C7472697374697175652071756973207472697374697175652069642C13696D70657264696574206174206E657175652E19566976616D75732075742072757472756D206D61757269732E1C4E756C6C616D2073697420616D6574207175616D207475727069732C127574206672696E67696C6C6120656E696D2E1D4475697320736167697474697320616363756D73616E2072697375732E36496E20656765742072697375732076656C206D6175726973207068617265747261206C616F72656574206E656320696420617263752E0C43726173206D6F6C6C69732C1B6D6175726973206574207361676974746973206C616F726565742C17657374206475692068656E6472657269742075726E612C2061742074656D706F72206E756C6C61206D617572697320736564206F64696F2E1843726173207365642068656E647265726974206F7263692E134375726162697475722065726F732073656D2C187072657469756D2076656C20696163756C69732076656C2C11616363756D73616E20696E20656E696D2E0D50726F696E206D61747469732C216C6967756C612074696E636964756E742073616769747469732072757472756D2C1C6D61757269732064756920636F6E736563746574757220657261742C2161632068656E647265726974207175616D2072697375732061742070757275732E324372617320616320616E7465206964206C696265726F20636F6E6775652073656D70657220617420696420746F72746F722E3C43726173206E6F6E2072697375732073697420616D6574206572617420706F7274612064696374756D2073697420616D657420696E206A7573746F2E1950686173656C6C75732076656C206A7573746F206F64696F2E2C446F6E6563207363656C6572697371756520766172697573206C6967756C6120696420626962656E64756D2E154E756C6C616D20747572706973206C6967756C612C166672696E67696C6C612061632073656D70657220612C11696163756C697320612073617069656E2E42566573746962756C756D20696E206573742076656E656E61746973206D65747573206D616C657375616461206C6163696E69612071756973206964206A7573746F2E1F566976616D7573206661756369627573206C75637475732073656D7065722E1F457469616D206D617474697320756C6C616D636F72706572206D61676E612C2873697420616D657420666175636962757320657374206D616C65737561646120657569736D6F642E1144756973206C696265726F206E69736C2C166D6F6C6573746965206120696163756C697320696E2C12636F6E76616C6C6973206575206E756E632E434E756C6C616D2073697420616D6574206C6F72656D20617420707572757320756C6C616D636F727065722072757472756D2073697420616D6574206575206F7263692E32496E2076656C206E756C6C6120696E20656C697420636F6E76616C6C697320766172697573206E65632061206C616375732E124E756E63206163206E756E63206E69736C2C177175697320636F6E64696D656E74756D2072697375732E26446F6E65632074656D70757320666163696C69736973206F64696F2061632072757472756D2E18457469616D20736564206D6F6C6C697320746F72746F722E23536564206163206C6F72656D2061742075726E61206C6163696E696120706F7274612E4543757261626974757220766573746962756C756D206D65747573206575206175677565207669766572726120657420616363756D73616E206175677565206F726E6172652E1D50686173656C6C7573206D6F6C6C6973206D617572697320657261742C13757420766573746962756C756D20617263752E225072616573656E74207072657469756D20636F6E64696D656E74756D206E69736C2C1969642072757472756D207175616D206D61747469732061632E144E756E632076697461652061726375206C656F2C1573697420616D6574207072657469756D206475692E1A4D6175726973207665686963756C612076656C69742073656D2C176C6F626F72746973206375727375732074656C6C75732E1B557420656C656966656E6420646170696275732074656C6C75732C1C696E20657569736D6F6420697073756D20646170696275732061742E2B4E756C6C6120636F6E76616C6C697320626C616E646974206E756E632071756973206C6F626F727469732E205072616573656E7420706C616365726174206D6174746973206D61757269732C1E736564206C7563747573206E69736920756C747269636965732076656C2E26496E20747269737469717565206C616F7265657420746F72746F722073656420706F7274612E4941656E65616E2068656E647265726974206F726369206E6F6E2065737420766976657272612073697420616D657420626C616E646974206C6F72656D207363656C657269737175652E154E756C6C6120696E206E756C6C61206C616375732E1A50656C6C656E74657371756520616320656E696D207175616D2C11696420616C6971756574206A7573746F2E1753757370656E6469737365206469616D206D657475732C18706C61636572617420657520766F6C75747061742075742C11657569736D6F64206E6F6E20657261742E4050686173656C6C7573206C7563747573206F64696F2076656C206F72636920646170696275732073656420766172697573206C6163757320616C697175616D2E265365642074696E636964756E742066657567696174206469616D2076656C206F726E6172652E1A4675736365207175697320766F6C7574706174206D61676E612E3D43726173206D616C65737561646120656C6974206174206C656F206672696E67696C6C6120696D7065726469657420657420736564206C696265726F2E204D6F7262692073697420616D65742074696E636964756E74206C6967756C612E1455742069642074656D7075732074656C6C75732E1C566573746962756C756D2069642072686F6E6375732072697375732E265574206E6F6E206D61676E612061206C6F72656D2073656D7065722068656E6472657269742E1B437261732076756C707574617465206375727375732065726F732C2B73697420616D65742074696E636964756E74206C6967756C612072757472756D206672696E67696C6C612E1143726173206D6175726973206E69736C2C1A6672696E67696C6C612073656420656765737461732076656C2C14616363756D73616E206E6F6E206D61757269732E10496E746567657220636F6D6D6F646F2C2174656C6C757320636F6E736571756174206D6F6C6C69732070756C76696E61722C1764756920656C697420666175636962757320617263752C1F696E206C6163696E6961206E697369206D692065676574206C6967756C612E294E756C6C61206D616C6573756164612073656D70657220746F72746F72206575206C6163696E69612E19566573746962756C756D206174207661726975732073656D2E33566976616D757320706F7375657265206C6967756C612061632074656C6C7573206661756369627573206C6F626F727469732E2F4D616563656E6173207361676974746973206172637520696E206F64696F20736F64616C657320616C697175616D2E164D61757269732061742066656C69732061756775652E20446F6E65632076656E656E6174697320696E74657264756D206375727375732E14566976616D757320616E7465206D61757269732C1F6469676E697373696D2073697420616D6574206C616F726565742076656C2C127665686963756C612076656C20617263752E3453656420666163696C69736973206E756C6C612073697420616D6574206D6173736120706F73756572652066617563696275732E33416C697175616D20656C656D656E74756D20656C656D656E74756D2066656C6973206C6163696E6961207665686963756C612E154D616563656E6173206D65747573206A7573746F2C17766976657272612065742070756C76696E61722075742C1376656E656E617469732061206D61757269732E174475697320657520756C7472696369657320656C69742E20446F6E6563206772617669646120636F6E64696D656E74756D206D61676E612C26736F64616C657320656C656966656E64207269737573206665726D656E74756D20656765742E0F4E756E6320656C69742075726E612C21656C656D656E74756D20696E2061646970697363696E672073697420616D65742C0E63757273757320696E206475692E4243726173206174207269737573206E6F6E206C6967756C61207363656C65726973717565207363656C657269737175652064696374756D20736564206C6F72656D2E425365642073656D706572206C6F72656D206964206D61676E6120636F6E73657175617420757420756C74726963696573206E756E6320636F6E73656374657475722E1553757370656E6469737365207665686963756C612C1C657261742073697420616D65742074656D706F7220617563746F722C1A617567756520726973757320696E74657264756D206E756E632C2565752061646970697363696E6720746F72746F72206E6973692074656D7075732073656D2E32457469616D206D616C65737561646120697073756D207574206C656374757320756C7472696365732066617563696275732E184375726162697475722074656C6C75732074656C6C75732C197072657469756D2076656C20616363756D73616E206E65632C12656C656966656E64206E656320656C69742E1C437261732073656D706572206665726D656E74756D20697073756D2C2673697420616D65742067726176696461206C65637475732068656E647265726974206E6F6E2E444E756C6C616D207072657469756D2076656C69742076656C20646F6C6F7220737573636970697420696E20626C616E646974206E697369207363656C657269737175652E35437572616269747572207669766572726120697073756D207669746165206F64696F20706C6163657261742070756C76696E61722E28496E2063757273757320656C69742069642074757270697320616C697175616D206F726E6172652E45446F6E656320636F6E73657175617420747572706973206665756769617420656C69742074656D706F7220736564206C6F626F72746973206172637520616C697175616D2E224375726162697475722073697420616D65742073616769747469732070757275732E354375726162697475722074696E636964756E74206172637520736564206F64696F20737573636970697420656C656D656E74756D2E35536564207574206E696268206120616E74652061646970697363696E6720617563746F7220656C656966656E642061206E6973692E2850726F696E20736F6C6C696369747564696E20736F6C6C696369747564696E20626C616E6469742E1C557420636F6D6D6F646F20617563746F7220696D706572646965742E0F467573636520656C656966656E642C206E65717565206E6F6E20756C6C616D636F7270657220656C656D656E74756D2C1A66656C697320697073756D20637572737573206C696265726F2C20657420626962656E64756D206175677565206D6920736564206C6967756C612E2C43757261626974757220736F64616C657320657569736D6F64206469616D2076697461652064696374756D2E144D616563656E617320766573746962756C756D2C1C6D69206E6F6E20636F6D6D6F646F20736F6C6C696369747564696E2C186D61737361207175616D20696163756C6973206F64696F2C2776656C207472697374697175652074656C6C7573206E69626820766974616520746F72746F722E3D566573746962756C756D207574206F64696F2065676574206E69736920756C7472696369657320617563746F72206163207669746165206C6F72656D2E12536564206575206C6F72656D20656C69742E16416C697175616D206572617420766F6C75747061742E2253757370656E6469737365206665726D656E74756D206E756C6C61206C6F72656D2E304D6F72626920656C656966656E6420646F6C6F722061206C6967756C6120666575676961742076756C7075746174652E1E437572616269747572206C616F7265657420617563746F72207175616D2C1D61742074696E636964756E74206D657475732063757273757320696E2E1F4E616D20616C697175616D20766F6C757470617420706F72747469746F722E1641656E65616E206964206375727375732065726F732E1A566573746962756C756D2076656C206E65717565206469616D2C116E6F6E20706F7375657265207175616D2E1351756973717565206C656F2073617069656E2C1A6665726D656E74756D207175697320636F6E6775652076656C2C156672696E67696C6C6120766974616520617263752E304D61757269732073656D70657220747572706973206163206C696265726F20766F6C757470617420646170696275732E0F44756973206E69736920656E696D2C18666175636962757320656765742074656D7075732061742C15756C74726963696573206E65632074656C6C75732E1443726173206964206C6563747573206E69736C2C0F696420637572737573206F7263692E12457469616D2073617069656E206E69736C2C1D6D6F6C6C69732073697420616D657420766F6C75747061742076656C2C12766F6C7574706174206E6563206E6973692E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E3A4E756E63206163207075727573206E6563206C656F20766573746962756C756D20706F72747469746F72206120626C616E64697420617263752E1850726F696E206E65632072686F6E637573206E657175652E2C50656C6C656E74657371756520766573746962756C756D20706861726574726120766573746962756C756D2E27536564206D6F6C657374696520656C697420657520647569206D6F6C6C6973207661726975732E1A457469616D20706F72747469746F722064696374756D206D692E2A4D616563656E6173207375736369706974207361676974746973206E756E63206E656320706F7274612E3153656420657420617263752073697420616D65742073617069656E20636F6E76616C6C697320766573746962756C756D2E1F43726173206567657374617320616363756D73616E20616363756D73616E2E345175697371756520616363756D73616E20746F72746F722065742065726174206D617474697320736F6C6C696369747564696E2E3F536564206D6F6C65737469652074757270697320656765742073656D2074696E636964756E74206E656320636F6E76616C6C6973206D6920636F6E6775652E17457469616D2061632065676573746173206C6F72656D2E3250726F696E20736F6C6C696369747564696E20657374206E65632073656D207665686963756C612074696E636964756E742E2950726F696E2071756973207075727573207574206E69736C206461706962757320657569736D6F642E43436C61737320617074656E742074616369746920736F63696F737175206164206C69746F726120746F727175656E742070657220636F6E75626961206E6F737472612C1770657220696E636570746F732068696D656E61656F732E104E756E63206C6163757320616E74652C1672757472756D20736564206C6163696E69612075742C136665726D656E74756D2069642070757275732E0F4E756C6C6120666163696C6973692E3253757370656E646973736520736564206C6563747573206E6563206C696265726F206C6163696E696120616C697175616D2E1453656420696420697073756D2073617069656E2C1069642076617269757320697073756D2E17566573746962756C756D206174206E756C6C61206D692C136567657420616363756D73616E206E6962682E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E20446F6E6563206C6F626F7274697320756C74726963657320696163756C69732E89566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B20446F6E656320706C6163657261742065726F7320616320617263752070656C6C656E746573717565206C616F726565742E265072616573656E742073616769747469732070656C6C656E7465737175652064696374756D2E2B4E756C6C6120696E206D657475732065676574206D657475732076756C7075746174652074656D7075732E204D61757269732064696374756D20656C656D656E74756D20636F6D6D6F646F2E11446F6E65632074656C6C7573206573742C1E737573636970697420696163756C69732076656E656E617469732075742C1970756C76696E61722073697420616D6574207475727069732E2E4D617572697320657420656C6974206E6F6E206D61676E6120636F6E736563746574757220626962656E64756D2E384D61757269732070656C6C656E74657371756520647569206575206C696265726F20636F6E7365637465747572206672696E67696C6C612E1641656E65616E2076656C20697073756D2075726E612E374D616563656E61732070756C76696E617220736F6C6C696369747564696E206D61676E61206D6F6C657374696520696E74657264756D2E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E3D43756D20736F63696973206E61746F7175652070656E617469627573206574206D61676E6973206469732070617274757269656E74206D6F6E7465732C176E61736365747572207269646963756C7573206D75732E2B4D61757269732076697665727261207072657469756D20746F72746F72206567657420677261766964612E2F496E746567657220636F6D6D6F646F206D6F6C657374696520747572706973207175697320656C656D656E74756D2E1041656E65616E20706C6163657261742C1870757275732065752072686F6E637573206F726E6172652C1B6C6967756C61206E756C6C6120636F6E736571756174206475692C2C7669746165207363656C65726973717565206175677565206D617373612070756C76696E6172207175616D2E3653757370656E646973736520756C7472696369657320756C74726963696573206E657175652073697420616D6574206C75637475732E41557420626962656E64756D206C656F2061206C656374757320626C616E64697420656765742068656E647265726974206C6967756C6120636F6E7365717561742E21496E206861632068616269746173736520706C617465612064696374756D73742E0C437261732074656D706F722C1A65726F73206E6F6E20706F73756572652070756C76696E61722C1D6D61676E61206E69736920636F6E7365637465747572206C616375732C25696E20756C6C616D636F7270657220616E7465206C6563747573206E6F6E206A7573746F2E2F53656420706F72747469746F72206C696265726F2076656C206E69736C20626962656E64756D20646170696275732E5D50656C6C656E746573717565206861626974616E74206D6F726269207472697374697175652073656E6563747573206574206E65747573206574206D616C6573756164612066616D65732061632074757270697320656765737461732E184675736365207669746165206661756369627573206D692E41457469616D20696E206C696265726F206C6F626F72746973206E69736C206C6F626F72746973206C6F626F7274697320626C616E64697420757420646F6C6F722E284D6F72626920617563746F7220696163756C6973206E756C6C612061742076656E656E617469732E114D6F726269206175677565206E6962682C186C6F626F7274697320757420626962656E64756D2069642C127072657469756D206E65632066656C69732E1B4C6F72656D20697073756D20646F6C6F722073697420616D65742C1C636F6E73656374657475722061646970697363696E6720656C69742E124D616563656E6173206D6F6C65737469652C1C616E7465206E656320706F72747469746F7220626962656E64756D2C1B746F72746F7220746F72746F7220616C697175657420617263752C2B73697420616D65742074656D707573206C6967756C61206469616D2073697420616D65742066656C69732E2A50686173656C6C75732073656D70657220706F73756572652061756775652069642072686F6E6375732E124372617320646F6C6F722074656C6C75732C15706F73756572652069642076617269757320696E2C1468656E6472657269742065752074656C6C75732E3350726F696E20766974616520747572706973206E6F6E206E756C6C6120756C6C616D636F72706572207472697374697175652E21496E206861632068616269746173736520706C617465612064696374756D73742E92566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B20467573636520736564206A7573746F2071756973206469616D206C6163696E696120696D70657264696574206E656320657520746F72746F722E324E756C6C616D206174207175616D206E6F6E206D65747573207072657469756D206C756374757320696E206163206475692E14566976616D7573206C696265726F206E6962682C1C61646970697363696E6720657420747269737469717565206E6F6E2C12616363756D73616E20717569732073656D2E36416C697175616D20636F6E64696D656E74756D206C6967756C61206575206C6F72656D20736F64616C6573206665726D656E74756D2E3E53757370656E64697373652061632075726E61207669746165206573742070686172657472612076756C7075746174652061742076656C206C616375732E335365642076656C206C6F72656D20636F6E7365717561742073617069656E20747269737469717565206469676E697373696D2E2A5072616573656E7420736F64616C6573206665726D656E74756D2065737420696420696163756C69732E2653656420736F6C6C696369747564696E20756C6C616D636F727065722073757363697069742E124D6F7262692066656C6973206D617373612C19756C7472696369657320616320756C74726963657320696E2C1A6D616C65737561646120766F6C75747061742073617069656E2E1E566573746962756C756D207669746165206567657374617320617263752E1D53757370656E646973736520616320666163696C69736973206475692E2C536564206C6F626F727469732065726F73206163206573742061646970697363696E67206C616F726565742E114E756C6C616D2075726E6120617263752C1F64617069627573207175697320636F6D6D6F646F2076756C7075746174652C1264696374756D20616C6971756574206D692E384D6F7262692073697420616D657420657261742073697420616D65742076656C69742070656C6C656E74657371756520616C697175616D2E135365642065752061726375207475727069732C1275742076756C707574617465207175616D2E344E756C6C616D20756C74726963657320636F6E64696D656E74756D20746F72746F722071756973207363656C657269737175652E1C4D6F726269206C6163696E6961206C6163696E6961206D657475732C1F76656C20656C656D656E74756D20616E74652070686172657472612061742E404675736365206D6F6C6C6973206D61676E612076656C206E6973692067726176696461207574206672696E67696C6C6120746F72746F722072686F6E6375732E2941656E65616E20616C697175616D20666575676961742073617069656E20616320657569736D6F642E164E756C6C616D206E6F6E2065737420746F72746F722E3250656C6C656E74657371756520766573746962756C756D20706F727461206C6F72656D2075742061646970697363696E672E2B4E756E63206567657420656E696D206574206475692070656C6C656E74657371756520656765737461732E1F53757370656E6469737365206F726E617265206D6F6C6C6973206F64696F2C2774696E636964756E742074696E636964756E742073617069656E2065676573746173206E6F6E2E0F437261732076756C7075746174652C216E6973692073697420616D6574207665686963756C6120666163696C697369732C1D73617069656E206E657175652061646970697363696E67206E6973692C23617420766F6C757470617420657374206E69626820657569736D6F6420697073756D2E234D616563656E6173207363656C6572697371756520656C656D656E74756D206C656F2C1C656765742073656D706572206C696265726F20617563746F7220612E4150726F696E2076656C206F64696F2073697420616D657420746F72746F722061646970697363696E6720666163696C69736973206E6F6E2076656C20656C69742E18416C697175616D2065676574206C656F206C696265726F2C1773697420616D65742076756C707574617465206573742E2C4D616563656E617320757420747572706973206E6563206573742074696E636964756E742072757472756D2E0C4E616D206C616F726565742C1A6A7573746F20696E2064696374756D2074696E636964756E742C186E6973692065737420706F72747469746F72206469616D2C2465676574207072657469756D206C696265726F206573742064696374756D206F64696F2E124675736365206A7573746F2066656C69732C1D74656D706F72207669746165206D61747469732073697420616D65742C157072657469756D2073616769747469732073656D2E124D617572697320726973757320657261742C21766F6C75747061742073697420616D657420616C697175616D206375727375732C12756C747269636965732061206E756C6C612E16416C697175616D20617420657261742066656C69732E25496E20696D70657264696574206C6163696E6961207075727573206174206C75637475732E2753757370656E64697373652072757472756D206C6163696E696120756C6C616D636F727065722E2A566573746962756C756D2074696E636964756E7420736F64616C657320736F6C6C696369747564696E2E1D416C697175616D2073697420616D65742076656C69742070757275732C12696E2076656E656E61746973206E69736C2E3E566976616D7573207669746165206D61676E612071756973206E6973692076617269757320696D70657264696574207574207175697320746F72746F722E0C55742070756C76696E61722C166D69206120766F6C757470617420626C616E6469742C1D6A7573746F2074656C6C75732074696E636964756E74206D617373612C2069642076756C70757461746520656C6974206E756E632061742072697375732E1F496E74656765722076656E656E617469732072686F6E63757320656E696D2E1C496E207072657469756D2061646970697363696E67206A7573746F2C28736564207363656C657269737175652075726E61206672696E67696C6C612073697420616D65742E67566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B20457469616D20706C6163657261742C19657374206E6563206F726E61726520636F6E76616C6C69732C1B616E7465206C6163757320766573746962756C756D207175616D2C2673697420616D657420696E74657264756D206D61676E612070757275732061632065726F732E74566573746962756C756D20616E746520697073756D207072696D697320696E206661756369627573206F726369206C756374757320657420756C74726963657320706F737565726520637562696C69612043757261653B204E756C6C616D2061742061646970697363696E67207475727069732E33437572616269747572206C6F626F727469732076656C6974207574206C6967756C6120636F6D6D6F646F206C6163696E69612E144E756C6C616D2070656C6C656E7465737175652C1D76656C697420696E20636F6E76616C6C697320636F6E7365717561742C1C697073756D206D61737361206D616C657375616461206C616375732C2873697420616D657420736F64616C6573206F64696F20656E696D207669746165206D61757269732E18496E74656765722065676574207269737573207175616D2E344D616563656E617320717569732072697375732073697420616D657420726973757320656765737461732070756C76696E61722E1A50726F696E206E656320636F6E7365637465747572206573742E315072616573656E7420756C747269636965732066656C69732061206E69736920616C69717565742070756C76696E61722E2A51756973717565206E656320656C6974206174206C6F72656D20706F727461206D616C6573756164612E1850686173656C6C7573206163206E756C6C612065726F732C14656765742065676573746173206C65637475732E1350726F696E2061206C61637573206F7263692C186F726E617265207665686963756C6120706F73756572652E +. 3600 IN TXT "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vestibulum faucibus consequat ipsum," "vel pellentesque orci sodales sit amet." "Donec consectetur," "orci ut varius pulvinar," "mauris ante bibendum est," "vel pretium turpis massa auctor sem." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Morbi urna tellus," "ornare nec accumsan vitae," "rutrum id tortor." "Pellentesque non risus eu libero tempus consequat." "Suspendisse a mi elit." "Sed ultrices elit ut sem suscipit malesuada." "Cras sagittis nunc sed risus volutpat fermentum." "Aenean vitae magna lacus." "Etiam eu ligula purus." "Suspendisse eu dui sed ligula sagittis iaculis." "Suspendisse ut sodales orci." "Nunc sit amet sapien justo." "Sed molestie lectus vel lectus gravida bibendum." "In at enim quis lacus pretium tincidunt." "Sed eleifend," "lacus sed porttitor mattis," "erat nibh tincidunt lorem," "quis feugiat nibh dui ac erat." "Curabitur quis felis urna." "Nullam rhoncus," "arcu sed tincidunt posuere," "justo enim adipiscing arcu," "et suscipit tellus leo vitae elit." "Mauris gravida odio non quam tincidunt vel lobortis ligula faucibus." "Mauris vitae dolor at tortor congue imperdiet non id leo." "Proin in diam eu orci laoreet bibendum sed nec justo." "In nec ligula eu sapien suscipit vestibulum." "Etiam eleifend," "nibh vitae semper ultricies," "justo eros semper justo," "eget dictum nisi mauris et ligula." "Donec faucibus dapibus urna," "in ultricies lacus facilisis nec." "Pellentesque dapibus augue in sem pharetra accumsan." "Ut id ullamcorper elit." "Aliquam tellus orci," "lobortis nec molestie sit amet," "imperdiet quis lacus." "Praesent non congue nunc." "Quisque pretium pretium nunc," "nec convallis magna auctor nec." "Etiam accumsan eros sollicitudin augue posuere laoreet id sit amet orci." "Curabitur ut magna velit," "id adipiscing dui." "Morbi viverra vulputate vulputate." "Proin pulvinar justo sed tortor tincidunt id porttitor ipsum posuere." "Curabitur augue leo," "ultrices eget cursus sit amet," "fringilla non nisl." "Morbi et ante est," "non adipiscing mi." "Ut rutrum egestas scelerisque." "Pellentesque quis nisi orci." "In hac habitasse platea dictumst." "Donec sed tincidunt libero." "Proin porttitor placerat risus," "nec blandit sapien pharetra nec." "Phasellus eu risus quis mauris suscipit sollicitudin ut eu neque." "Duis odio lacus," "egestas in molestie adipiscing," "vulputate ut eros." "Nunc molestie orci sed turpis viverra volutpat aliquet mi vestibulum." "Sed interdum consectetur orci at consequat." "Curabitur molestie aliquam tellus," "id dignissim nibh porta sed." "Cras vestibulum orci hendrerit quam ornare condimentum." "Vivamus ultrices lacus ut lorem scelerisque vitae semper elit vulputate." "Aenean sit amet odio massa," "sed rutrum quam." "Ut lacinia enim nec orci rutrum dictum." "Curabitur id auctor ligula." "Nam nibh nulla," "interdum vitae suscipit eu," "porta quis ligula." "Proin lacinia sapien nec dolor viverra at suscipit orci tempus." "Phasellus scelerisque lobortis quam," "sit amet sagittis nibh ornare nec." "Donec sit amet tellus ac ipsum pharetra interdum." "Sed egestas velit et felis iaculis et dignissim est faucibus." "Suspendisse convallis scelerisque dapibus." "Nullam luctus lacinia nisl quis tristique." "Vivamus tincidunt vehicula sem sit amet ultrices." "Nulla arcu lectus," "vestibulum eu molestie in," "eleifend rutrum tortor." "Etiam ligula diam," "ultrices id malesuada vel," "varius ac dolor." "In sit amet sapien justo," "nec dignissim mi." "Vivamus vitae aliquam elit." "Vestibulum suscipit malesuada ipsum id dapibus." "Morbi ullamcorper pharetra velit," "in tempor mauris consequat non." "Praesent malesuada mattis nunc," "at auctor libero viverra id." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Vivamus convallis varius vulputate." "Donec eget tortor neque." "Nunc tempor mi quis enim euismod tincidunt." "Pellentesque et nibh magna," "id cursus enim." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Nunc nunc sapien," "semper in tempor in," "cursus iaculis sapien." "Nunc vitae mattis elit." "Aliquam ut nisl vel lorem porttitor ullamcorper at sed quam." "Mauris a turpis erat." "Pellentesque viverra ligula vel tellus pretium ac auctor nisi imperdiet." "Proin faucibus sagittis odio," "quis semper massa pellentesque ac." "Morbi condimentum nisi vitae libero convallis blandit." "Proin sodales odio arcu." "Suspendisse non venenatis diam." "Sed vitae adipiscing lorem." "Nullam augue felis," "gravida quis commodo ut," "dignissim vel quam." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Pellentesque fermentum nulla at dolor molestie semper." "Sed metus sapien," "mollis a commodo ac," "commodo sed sem." "Suspendisse feugiat elementum lacus," "vel euismod nisl aliquam non." "Curabitur vel auctor neque." "Phasellus et libero vel tortor vestibulum consequat ac in magna." "Nullam congue vestibulum massa," "quis suscipit turpis adipiscing id." "Nullam ullamcorper eros id ipsum vestibulum at pretium augue convallis." "Cras nec purus ac lectus iaculis commodo sit amet eget lacus." "Curabitur blandit molestie est at fringilla." "Praesent at dictum turpis." "Sed laoreet dapibus tellus et gravida." "Fusce vitae ante ut arcu laoreet sollicitudin." "Nulla mollis commodo orci sed mollis." "Ut eleifend aliquet tellus," "vel ultricies lorem luctus vitae." "Donec commodo ullamcorper massa," "at pretium magna fermentum vitae." "Nam rutrum aliquet suscipit." "Aliquam a massa vel odio vehicula semper a in tortor." "Pellentesque aliquam suscipit iaculis." "Donec sodales pretium massa sed tempus." "Phasellus velit urna," "commodo sit amet tristique id," "congue quis eros." "Ut vulputate magna aliquet leo porta id tempus nunc auctor." "Ut condimentum magna sit amet quam ultricies iaculis." "Aenean imperdiet facilisis tellus nec ornare." "Cras nec vulputate sapien." "Morbi ut dui ut magna sodales commodo eget id erat." "Duis erat nisi," "lacinia vitae imperdiet non," "egestas nec purus." "Pellentesque tempor," "erat ut eleifend condimentum," "ipsum lacus ultrices turpis," "a fringilla purus lectus semper nulla." "Proin id nulla mi." "Suspendisse vel sem lacus." "Ut rutrum eros id massa ultricies commodo." "Nulla eget adipiscing ante." "Nunc quis enim a justo pharetra commodo." "Nullam tortor tortor," "volutpat at commodo at," "consectetur sit amet erat." "Quisque pharetra turpis nec libero viverra quis rutrum nunc mattis." "Aenean sed lacus lectus." "Duis et odio tortor." "Aenean ullamcorper ultricies turpis sed volutpat." "Ut et est sem," "et ultrices turpis." "Pellentesque nisi felis," "dictum non tempor lobortis," "iaculis at enim." "Aliquam tellus elit," "volutpat ut tristique sed," "fringilla ac libero." "Duis rutrum quam magna," "ut ultrices ipsum." "Morbi id orci lectus." "Maecenas quis nunc at diam mollis congue." "Aliquam neque lorem," "lobortis sit amet commodo id," "feugiat mattis dolor." "Cras aliquam convallis adipiscing." "Vestibulum varius commodo pulvinar." "Suspendisse eleifend dictum lectus," "vel commodo nibh varius quis." "Phasellus sit amet nisi libero." "In aliquam purus ut mi mattis quis iaculis lacus porta." "Sed ultrices vehicula mauris sed ornare." "Maecenas gravida tincidunt sagittis." "Mauris id hendrerit eros." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Curabitur pharetra diam augue," "sit amet congue felis." "Praesent dignissim eleifend vulputate." "Sed nec vestibulum tellus." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum laoreet," "eros vitae rhoncus aliquet," "ligula turpis congue purus," "non convallis mi nibh eu purus." "Vivamus euismod facilisis lacus tincidunt rutrum." "Vivamus suscipit," "nisi sed semper iaculis," "libero sem pulvinar enim," "a aliquet purus urna ut nulla." "Donec ultrices luctus mauris," "in porttitor enim ullamcorper sit amet." "Morbi pellentesque auctor velit et egestas." "Fusce ac tincidunt massa." "Morbi a velit eget diam tincidunt eleifend." "Curabitur ornare lectus a quam blandit vel fermentum lacus dictum." "Donec vel turpis odio," "ac suscipit orci." "Nulla posuere convallis lacus venenatis feugiat." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Suspendisse potenti." "Suspendisse mollis neque ut neque gravida ut viverra mi ultrices." "Vestibulum at tempor sem." "Mauris vel leo libero." "Aliquam augue justo," "ultricies vel feugiat a," "vulputate sed erat." "Aliquam in ultrices quam." "Phasellus aliquam vestibulum odio at auctor." "Sed dapibus," "felis ac ornare dapibus," "magna dolor bibendum nisl," "eget luctus lacus magna et mauris." "Nulla ipsum augue," "tempor quis consectetur in," "iaculis non dolor." "Suspendisse consectetur felis ac nulla sodales rhoncus." "Maecenas velit ante," "lacinia at convallis quis," "iaculis quis tellus." "Suspendisse imperdiet aliquet dui," "posuere dictum justo fermentum sit amet." "Etiam ac ante diam." "Suspendisse quis dolor dui," "at mollis neque." "Aenean eu nisi lorem," "et ultrices mauris." "Nulla in augue libero," "non suscipit elit." "Cras rhoncus," "est ac fringilla varius," "erat ipsum gravida nisl," "at ornare dui nisi id mauris." "Nullam nec dictum leo." "Phasellus magna sapien," "sagittis quis suscipit quis," "bibendum in odio." "Cras sed ligula tellus," "sit amet fermentum felis." "Pellentesque suscipit feugiat enim," "vitae feugiat eros mattis pretium." "Cras nisi tellus," "placerat nec dapibus eget," "faucibus ac felis." "Proin tempus feugiat sapien," "nec mattis leo pharetra vel." "Maecenas dapibus mi dignissim ligula commodo et facilisis quam tristique." "Praesent varius lacus eu enim pellentesque gravida." "Nam rhoncus mauris pharetra eros vulputate at tincidunt massa fringilla." "Pellentesque in erat nec massa consequat ultrices." "Donec varius elementum leo," "non hendrerit justo tincidunt sit amet." "Donec ac libero augue." "Sed mattis turpis a sem ultricies consequat." "Aenean nunc dui," "commodo eget vestibulum ut," "rutrum in nisl." "Nam augue lorem," "tempor in porta at," "commodo ut ipsum." "Quisque adipiscing aliquet tincidunt." "Suspendisse potenti." "Pellentesque porttitor elit at leo hendrerit pretium nec eu turpis." "Curabitur in elit metus." "Aliquam risus erat," "posuere id adipiscing consequat," "dapibus vel eros." "Maecenas semper felis sed felis tristique varius." "Mauris tempus tortor et metus euismod pellentesque." "Pellentesque dui massa," "euismod non tincidunt id," "aliquet in elit." "Aenean vulputate sem elit." "Pellentesque at tempus magna." "Aenean elementum nisl id ante commodo placerat." "Nam sed mauris tellus." "Pellentesque nec orci nibh," "nec vulputate enim." "Aliquam erat volutpat." "Etiam dignissim justo a orci egestas mattis." "Vivamus ultrices sapien ac turpis venenatis tempor." "Suspendisse consequat volutpat fermentum." "Duis eu orci velit." "Sed placerat," "nisi sed aliquet tincidunt," "risus odio mattis nulla," "non sodales nunc nulla vitae mi." "Nunc consequat pharetra dolor at fringilla." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Vestibulum ultrices tellus quis nisl dignissim rhoncus eget et justo." "Maecenas vitae purus quis leo vehicula venenatis vel ut lectus." "Curabitur nec molestie nisl." "Vestibulum ullamcorper nulla non orci dictum quis lacinia est interdum." "Fusce eget sem risus," "sed volutpat augue." "Suspendisse potenti." "Sed luctus molestie augue," "a varius quam congue in." "Aliquam aliquet orci eget mi euismod consequat." "Ut et vestibulum ante." "Sed vitae metus elit." "Mauris lacus eros," "pellentesque eu vehicula semper," "dapibus consequat nulla." "Sed volutpat erat suscipit sem facilisis at adipiscing orci vehicula." "Pellentesque nisi nulla," "faucibus in rhoncus ut," "rhoncus eleifend turpis." "Aenean odio tortor," "ullamcorper id tincidunt nec," "rhoncus non mi." "Praesent interdum varius orci," "ut venenatis nibh mollis nec." "Ut placerat," "erat nec tincidunt pharetra," "metus lacus venenatis nunc," "et laoreet augue sapien vel lorem." "Sed sit amet viverra est." "Etiam rutrum," "purus ut ultrices aliquet," "neque magna luctus risus," "vel consectetur eros lorem ut odio." "Integer turpis elit," "consectetur ut suscipit sed," "gravida at lorem." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Morbi placerat accumsan malesuada." "Mauris porta," "lacus eget iaculis sagittis," "arcu sem lobortis nulla," "et tempus velit massa quis libero." "Fusce dolor nibh," "bibendum et adipiscing non," "eleifend et odio." "Duis elit eros," "hendrerit at porttitor vitae," "gravida nec arcu." "Praesent malesuada sapien a urna accumsan at hendrerit ipsum porttitor." "Mauris pharetra sagittis urna eu tempor." "Vestibulum purus leo," "pharetra quis ultrices ac," "semper nec erat." "Sed nec massa arcu," "sed tempus dolor." "Fusce vitae dictum eros." "Aenean vestibulum semper turpis," "iaculis auctor dolor vehicula ac." "In fermentum auctor pharetra." "Integer nec eros diam," "eget posuere leo." "Nam tristique," "nibh nec malesuada ornare," "urna odio porta mauris," "accumsan aliquet nunc lectus sit amet mauris." "Vestibulum nulla massa," "semper sit amet blandit sit amet," "venenatis eget sapien." "Vestibulum ultrices congue rhoncus." "Nunc lacinia dapibus imperdiet." "Nunc a eros sed urna pellentesque egestas non sit amet elit." "Integer dolor diam," "vulputate at tristique non," "venenatis in risus." "Sed lacinia luctus ipsum," "ac sagittis arcu molestie quis." "Phasellus pretium nulla quis quam placerat vitae commodo mi congue." "Praesent tristique laoreet elementum." "Praesent venenatis pretium dolor," "eu volutpat est scelerisque sit amet." "Praesent eleifend dictum vehicula." "Donec ullamcorper adipiscing ante ac elementum." "Integer dui nunc," "viverra at rutrum ut," "tincidunt vitae mi." "Donec nec risus id arcu porttitor placerat pulvinar at lacus." "Morbi ac velit sapien," "lacinia egestas nulla." "Mauris elementum dui ac libero ultricies consequat." "Nam non justo at tellus hendrerit rhoncus ultrices molestie augue." "Aenean elit purus," "tempor quis vehicula quis," "lobortis a odio." "Aliquam rhoncus varius lorem," "eu aliquet turpis rutrum a." "Nulla gravida gravida dui," "ac molestie arcu adipiscing vitae." "Cras diam mauris," "cursus vitae congue dictum," "adipiscing id erat." "Suspendisse ornare porta elit id hendrerit." "Praesent nec metus massa," "a egestas risus." "Donec pellentesque viverra diam sit amet pharetra." "Suspendisse lorem mi," "viverra eu auctor non," "volutpat et felis." "Proin id fermentum purus." "Nam eget mattis arcu." "Morbi bibendum rutrum euismod." "Donec aliquet hendrerit tincidunt." "Aenean eu sapien ut nunc dictum feugiat nec at lacus." "Duis commodo nisi nec tortor volutpat quis condimentum turpis aliquam." "Vivamus sollicitudin," "nulla rhoncus consequat posuere," "nisi nibh adipiscing felis," "aliquet porta arcu magna nec sapien." "Ut luctus interdum diam quis sollicitudin." "Ut semper magna sed neque hendrerit mattis." "Nullam turpis dui," "porttitor eget interdum id," "porttitor eu dui." "Ut accumsan," "tellus in eleifend imperdiet," "elit massa facilisis magna," "vitae feugiat tellus lectus eget tellus." "Mauris ac neque ac nibh ultricies imperdiet." "Ut urna lorem," "aliquet et mattis id," "suscipit a lectus." "Nam vehicula porttitor erat sit amet imperdiet." "Sed eu nunc id mauris mollis rutrum." "Pellentesque dui orci," "ullamcorper at fringilla eget," "sollicitudin eget nunc." "Quisque vel metus et enim placerat eleifend sed a leo." "Praesent pharetra hendrerit nibh scelerisque aliquam." "Duis tincidunt vestibulum congue." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vestibulum non libero ligula." "Ut cursus mauris sed odio imperdiet vehicula." "In fermentum vehicula arcu," "ac commodo augue posuere sed." "Vivamus ultricies," "magna in aliquam suscipit," "tortor leo vestibulum dolor," "ut luctus odio diam nec lacus." "Phasellus et diam metus." "Cras fringilla nibh quis ante tincidunt in euismod leo luctus." "Nulla tincidunt erat sit amet erat viverra eleifend accumsan ligula luctus." "Quisque et risus enim." "Praesent vitae neque ut leo semper malesuada eu sed justo." "Duis pretium vehicula orci sed dignissim." "Cras nec magna in nulla laoreet vulputate quis at enim." "Nulla eget odio tellus." "In placerat massa et purus eleifend non fringilla neque fringilla." "Donec imperdiet ullamcorper nisl," "vel rutrum sapien rutrum a." "Duis luctus," "ante eu tristique commodo," "ipsum libero sollicitudin purus," "quis tempor nibh felis ac quam." "Nullam sodales vehicula elit," "eget egestas neque blandit in." "Mauris egestas faucibus elit," "id pellentesque nibh tincidunt id." "Nam vitae felis magna." "Donec tellus quam," "scelerisque vitae sollicitudin at," "gravida vel est." "Ut sodales velit nec dui sollicitudin a porta mi ullamcorper." "Cras sollicitudin egestas consequat." "Donec id tortor est," "eget tempor diam." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut ullamcorper gravida pharetra." "Proin diam nunc," "feugiat id interdum vel," "porttitor a nisl." "Aliquam aliquet orci sed metus egestas porttitor." "Morbi sollicitudin pulvinar enim." "Etiam tincidunt augue ut quam mollis ac imperdiet odio egestas." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Nunc at enim diam." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Aliquam lorem lectus," "suscipit at vestibulum ac," "scelerisque quis augue." "Morbi felis tellus," "porttitor quis pellentesque ut," "dictum ac nisi." "Integer sit amet massa vel augue lacinia dapibus non vulputate tortor." "Aenean ullamcorper sodales justo," "at fermentum libero sodales et." "Fusce vitae enim ut ligula volutpat placerat." "Pellentesque et mauris nibh," "non lacinia ipsum." "Phasellus ac nibh sit amet nibh vulputate rutrum." "Maecenas id nulla quam." "Maecenas euismod dolor in magna condimentum adipiscing." "Morbi elementum tincidunt mauris in mollis." "Pellentesque sagittis turpis id nunc tempor a eleifend turpis fermentum." "Sed faucibus interdum arcu," "at varius sem aliquet id." "Pellentesque vestibulum iaculis risus," "id dictum lorem gravida ac." "Quisque sagittis arcu vitae eros dapibus vitae convallis nulla mattis." "Nam id dui neque," "ut molestie velit." "Pellentesque pulvinar porta erat eu interdum." "Nunc metus massa," "vestibulum vitae egestas a," "fringilla et odio." "Quisque quis diam lorem," "quis pellentesque velit." "Mauris sapien risus," "suscipit nec vestibulum nec," "rutrum a risus." "Curabitur lobortis condimentum ultricies." "Duis quis dapibus turpis." "Nunc lectus elit," "facilisis at bibendum et," "vestibulum in arcu." "Morbi odio nibh," "feugiat quis tempor ut," "scelerisque ultrices nisi." "Curabitur a accumsan augue." "Integer aliquet porttitor nibh," "nec placerat est pharetra in." "Donec feugiat nisi et odio commodo interdum." "Vestibulum ullamcorper bibendum fermentum." "Fusce eu lacus eget metus malesuada feugiat eu vel erat." "Sed et erat tortor." "Morbi malesuada varius mollis." "Nam accumsan dignissim odio," "quis consectetur mi molestie eget." "Etiam iaculis," "enim eu placerat vehicula," "elit massa pulvinar tellus," "in cursus magna mi non quam." "Vivamus varius tempor semper." "Nulla adipiscing feugiat sollicitudin." "Etiam lacinia placerat dui nec varius." "In vitae metus mauris." "Vestibulum sed magna quis nibh ornare rhoncus ut vitae ipsum." "Duis ligula nunc," "fermentum sed suscipit non," "molestie vel purus." "Suspendisse potenti." "Proin arcu leo," "adipiscing at vehicula ac," "ullamcorper nec diam." "Proin pretium porta urna," "quis fermentum nisl pretium et." "Suspendisse a elit eu nisi molestie lacinia." "Cras at condimentum arcu." "Suspendisse potenti." "Sed ullamcorper ante sit amet urna aliquet ultrices accumsan neque ullamcorper." "Nam sit amet velit vel urna gravida suscipit sit amet non mauris." "Ut non neque arcu." "Praesent gravida sodales lorem," "vitae hendrerit purus bibendum non." "Nulla facilisi." "Mauris ornare," "sem eget tristique vestibulum," "augue metus luctus neque," "sit amet pretium lectus dui et augue." "Curabitur eu convallis turpis." "Ut est est," "vulputate auctor laoreet et," "iaculis eget massa." "Vestibulum ornare porta rhoncus." "Phasellus sagittis orci et orci blandit facilisis viverra leo consectetur." "Curabitur molestie nibh vitae nisi condimentum eget tempor nulla consectetur." "Ut arcu nunc," "mollis nec consectetur nec," "elementum tempus enim." "Nullam vel arcu massa." "In quis accumsan nibh." "Nullam id tristique neque." "Phasellus mattis interdum nisi quis viverra." "Morbi sollicitudin," "leo vel faucibus consequat," "ante est blandit nibh," "id sodales risus nunc ac ligula." "Nullam pellentesque diam nec urna fringilla malesuada." "Maecenas nisi lorem," "bibendum a condimentum in," "commodo vel tellus." "Proin at odio in ante lacinia sodales vel eget elit." "Curabitur eu fermentum est." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Praesent rutrum lectus ac velit consequat hendrerit." "In faucibus dictum mattis." "Sed a justo mi," "eu convallis nibh." "Integer commodo sollicitudin suscipit." "Curabitur vel leo vitae quam ultricies interdum et eget justo." "Proin ultrices lacus et metus vulputate ultrices eu non ligula." "Proin at velit in nisi malesuada lobortis." "Fusce est urna," "pulvinar ac venenatis non," "hendrerit non neque." "Donec id augue ac magna consequat porta." "Donec sed erat vitae velit vehicula rutrum." "Aenean pulvinar dui nec augue pharetra iaculis." "Quisque pretium risus vitae arcu feugiat ac posuere risus sagittis." "Nam diam erat," "rutrum ut interdum non," "laoreet at sem." "Sed enim elit," "tempor eget volutpat ac," "aliquet at sem." "Nunc in urna eu ipsum tempor pharetra eget vitae est." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Nulla ultricies," "ligula quis consequat posuere," "ante risus gravida est," "in pretium elit ipsum nec eros." "Mauris ac leo sit amet nisl rutrum mattis." "Donec facilisis enim eget mauris gravida lacinia." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Vivamus eleifend lacus non erat eleifend lacinia." "Nam vehicula vehicula ipsum ac ultrices." "Aliquam ut massa purus." "Aenean vel est vitae nulla tincidunt malesuada." "Aliquam eleifend," "arcu non tristique tempor," "dui ligula malesuada sem," "iaculis scelerisque magna massa quis quam." "Pellentesque libero mauris," "vulputate sed tincidunt vitae," "vehicula ac ipsum." "Mauris pharetra," "turpis eu tincidunt rhoncus," "quam tortor viverra est," "at pellentesque augue nibh ac nibh." "In ipsum dui," "ullamcorper vel semper quis," "semper id massa." "Phasellus non sem dolor," "at scelerisque tellus." "Curabitur velit augue," "pulvinar in aliquam id," "aliquet vel leo." "Fusce fermentum blandit nunc," "vitae tincidunt leo molestie condimentum." "Suspendisse ut gravida ipsum." "Curabitur vulputate," "mauris sit amet pulvinar sagittis," "ipsum enim feugiat enim," "et porta risus neque eget ante." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Donec eros dolor," "vehicula quis aliquam eget," "ornare id lorem." "Ut dolor lacus," "aliquet ut tempor et," "varius et nunc." "Cras consectetur massa vitae velit mattis a ultrices urna venenatis." "Praesent lacus mi," "bibendum a aliquet quis," "vestibulum non velit." "Proin sit amet elit felis," "eu malesuada justo." "Maecenas auctor urna metus." "Phasellus convallis velit id justo blandit venenatis." "Suspendisse convallis rhoncus orci," "a tincidunt quam varius a." "Fusce scelerisque aliquam odio ac sodales." "Aliquam in lectus arcu." "In vestibulum," "nisi et sagittis dignissim," "purus est feugiat risus," "ac accumsan ante purus in turpis." "Maecenas bibendum condimentum nibh," "quis fringilla quam imperdiet sed." "Nulla ullamcorper suscipit sem euismod rhoncus." "Curabitur lectus justo," "consectetur vitae viverra sed," "fringilla at nunc." "Aliquam justo tortor," "ornare vel rhoncus non," "eleifend sed purus." "Nullam posuere gravida magna," "egestas convallis tellus venenatis quis." "Mauris feugiat," "lectus nec rutrum placerat," "tellus augue convallis velit," "in mattis odio neque in urna." "Quisque quis urna at diam pretium iaculis ut sed dui." "Morbi nibh enim," "accumsan eu convallis et," "bibendum sed dui." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Etiam interdum turpis eu dui adipiscing sagittis." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "In hac habitasse platea dictumst." "Suspendisse sed libero enim," "et dapibus justo." "Aliquam commodo," "turpis sit amet venenatis facilisis," "nibh diam porttitor neque," "nec gravida massa odio a sem." "Morbi quis velit ligula." "Mauris interdum risus nec quam rhoncus eu bibendum mauris pulvinar." "Nunc id orci nec turpis lobortis luctus." "Praesent laoreet lectus vel leo malesuada interdum." "Quisque a mi ac eros mattis pharetra in a quam." "Sed scelerisque ligula vel tellus pulvinar suscipit sollicitudin odio vehicula." "In porta odio auctor justo commodo lobortis." "Nullam porttitor volutpat blandit." "In ut varius nisl." "Nunc pharetra porta luctus." "Mauris in mattis est." "In hac habitasse platea dictumst." "Maecenas sed convallis tellus." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut vehicula metus vitae ipsum hendrerit rutrum." "Nunc dolor nisl," "interdum quis ornare et," "tempor quis dui." "Donec tincidunt varius turpis non cursus." "Nulla lobortis," "lacus eget pellentesque sagittis," "urna elit rhoncus erat," "ac convallis ipsum sapien non lacus." "Morbi pellentesque ligula et velit tempus sagittis." "Morbi tincidunt interdum nunc non suscipit." "Cras faucibus interdum velit accumsan posuere." "Donec a augue risus." "Etiam viverra," "lectus sed mattis lobortis," "erat risus aliquet lorem," "eu semper libero nunc ac erat." "Donec at dui nisi." "Fusce dui tortor," "consequat eget egestas vel," "lobortis elementum mi." "Suspendisse blandit molestie urna vel mollis." "Nam aliquam volutpat bibendum." "Nulla id erat a lectus facilisis vestibulum." "Nunc dictum laoreet magna eu venenatis." "Duis facilisis justo nec enim vehicula nec rutrum purus vulputate." "Sed sollicitudin dui nec purus porttitor lacinia." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nisl lacus," "rutrum ac congue eu," "scelerisque dictum ligula." "Fusce neque massa," "viverra sed suscipit sit amet," "posuere at ipsum." "Praesent scelerisque libero in nibh gravida sed consectetur turpis vehicula." "Fusce sapien velit," "vestibulum a aliquam in," "bibendum vel mauris." "Phasellus id porta eros." "Aenean nec ligula turpis," "ut tincidunt velit." "Cras commodo congue dui," "id gravida felis iaculis eget." "Nunc varius diam a purus elementum eleifend." "Sed viverra velit sit amet ante ultrices nec varius tellus aliquam." "Suspendisse ante nunc," "suscipit nec sodales ut," "rhoncus a ante." "Nulla risus neque," "fermentum in pharetra nec," "commodo rhoncus nulla." "Aenean fermentum," "ligula nec suscipit ultrices," "ligula neque rhoncus purus," "a mollis sem purus ut nunc." "Nunc aliquam ullamcorper lacinia." "Duis id velit lacus." "Cras convallis sodales vehicula." "Proin nibh nulla," "bibendum sed pellentesque vitae," "blandit vitae quam." "Curabitur et eros velit," "non vehicula sapien." "Suspendisse eu mi nec metus pellentesque egestas." "Curabitur a tellus purus," "ac dictum nisi." "Donec diam ligula," "tincidunt ut posuere vitae," "consequat at nisi." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Nulla auctor nisi sed metus tincidunt blandit." "Nulla facilisi." "Proin volutpat mi sagittis risus fringilla feugiat." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Vivamus sagittis," "metus et sagittis sodales," "massa leo elementum sapien," "id suscipit lectus ligula ac orci." "Nulla dignissim tristique justo," "vel volutpat turpis rutrum convallis." "Sed diam lorem," "ultricies a ultricies eu," "tristique vitae turpis." "Donec pellentesque consectetur tellus non sodales." "Nam id dolor arcu." "Pellentesque nisl eros," "gravida non aliquam auctor," "elementum et felis." "Quisque in pellentesque metus." "Morbi sed lorem non magna fringilla egestas vitae ut nulla." "Aenean vel ante id nibh tincidunt feugiat." "Ut diam lorem," "semper vel elementum ac," "faucibus suscipit nunc." "Ut ultrices pharetra pellentesque." "Sed malesuada," "nulla vitae luctus suscipit," "est ipsum viverra libero," "quis ultrices augue ante eget velit." "Aenean nibh libero," "elementum eget lacinia non," "faucibus ut arcu." "Suspendisse potenti." "Phasellus nisl ante," "faucibus sed aliquam non," "pellentesque vel orci." "Nulla facilisi." "Sed et mauris sit amet enim malesuada congue." "In hac habitasse platea dictumst." "Cras vitae velit a enim sollicitudin elementum interdum a diam." "Nulla purus lectus," "mattis facilisis pretium et," "consectetur ut tellus." "Cras posuere odio eget nibh lacinia ullamcorper." "Aliquam a enim purus." "Donec pharetra tristique magna," "sit amet varius erat facilisis et." "Nullam molestie nisi euismod orci ultrices in mollis tellus accumsan." "Ut placerat hendrerit porttitor." "Nulla sit amet quam risus." "Nunc diam dui," "adipiscing non cursus et," "pharetra sed mi." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Cras eget hendrerit mi." "Donec sagittis tincidunt nisi venenatis egestas." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Suspendisse ac felis erat," "ut placerat nisi." "Curabitur laoreet pellentesque erat sed porttitor." "Sed vel metus leo," "nec congue enim." "Vivamus elit orci," "ultricies ac sagittis nec," "porta a lorem." "Suspendisse volutpat facilisis turpis," "non dapibus mi scelerisque sed." "Ut id libero a lorem rhoncus sollicitudin non non lorem." "Integer erat purus," "laoreet eu pulvinar eget," "condimentum in tellus." "Nam et placerat purus." "Praesent convallis," "nisi id sodales pharetra," "nibh augue tincidunt elit," "sit amet tempor justo orci quis sapien." "Cras imperdiet ligula ultricies lacus vestibulum molestie." "Fusce non suscipit felis." "Aenean sed nisl quis mi dapibus auctor et eget sem." "Vestibulum luctus egestas diam nec aliquet." "Nunc suscipit," "risus non facilisis sagittis," "libero enim rutrum mauris," "at ullamcorper tortor nibh vel turpis." "Morbi sed nisl purus." "In hac habitasse platea dictumst." "Nulla orci dui," "consectetur id laoreet quis," "mollis in nunc." "Phasellus faucibus posuere magna eu semper." "Cras sem turpis," "mattis non pretium at," "feugiat eget lorem." "Mauris in orci nulla," "sed consectetur diam." "Pellentesque dignissim," "erat dictum gravida viverra," "est erat laoreet massa," "at porta sem mi a quam." "Mauris ultricies viverra velit in posuere." "Vestibulum et ligula eros." "Pellentesque eu orci nulla." "Proin lectus enim," "molestie a sagittis id," "elementum quis tortor." "Mauris et ligula ut ligula egestas porttitor nec quis sapien." "Duis nibh dolor," "pharetra eu mollis sit amet," "tempus ut tortor." "Pellentesque tristique mattis nisl sed commodo." "Praesent ut mauris mi." "Donec lectus arcu," "vestibulum tempus convallis in," "vestibulum eget risus." "Cras sit amet tristique metus." "Fusce sodales velit et purus imperdiet semper." "Donec a nibh tellus," "ut pharetra odio." "Proin tellus nulla," "malesuada vitae aliquet bibendum," "congue ut turpis." "Vestibulum vel purus elit," "sit amet tempus purus." "Praesent mi erat," "imperdiet at volutpat eget," "laoreet a purus." "Curabitur ultricies ultricies nisi," "et varius nisi auctor in." "Curabitur vehicula elit et erat imperdiet vitae euismod diam convallis." "Morbi mollis semper risus," "ac varius turpis faucibus et." "Nulla commodo ligula nec nulla blandit ut rhoncus quam semper." "Mauris arcu ligula," "dapibus vel blandit id," "ornare quis arcu." "Proin urna ligula," "dictum aliquet venenatis nec," "pharetra et est." "Donec libero lectus," "scelerisque eget pharetra nec," "scelerisque ut quam." "Integer mi tortor," "mattis a luctus sit amet," "consequat quis mi." "Praesent in orci a nibh cursus malesuada eu a magna." "Nam at ligula purus," "consequat eleifend dui." "Donec tristique velit id turpis ultricies fermentum." "In ut sem eu quam volutpat consequat ut eget augue." "Nam posuere nisl at lectus laoreet scelerisque." "Vivamus nec odio tempus nulla egestas iaculis." "Sed sollicitudin posuere sapien ac interdum." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Quisque aliquam," "massa ut vehicula placerat," "dui dui feugiat sem," "sed blandit sem augue non sapien." "Nulla sit amet justo diam." "Aliquam eget justo vitae lorem condimentum imperdiet a eget nisi." "Etiam quam nulla," "volutpat ac consequat quis," "volutpat ac orci." "Nam fermentum hendrerit pulvinar." "Aliquam erat volutpat." "Mauris sit amet viverra justo." "Cras eget sollicitudin turpis." "Donec congue pretium suscipit." "Nunc tempus tempor augue vitae mattis." "Aenean vel lectus a neque feugiat pretium." "Proin ac purus a nisi tincidunt auctor non eget justo." "Donec et bibendum ipsum." "Nulla facilisi." "Nam pellentesque lacinia fermentum." "Nulla eu ligula turpis," "a cursus dui." "Nullam porttitor molestie bibendum." "Aenean iaculis mi ultrices lorem viverra gravida." "Proin tortor mauris," "fermentum vitae pretium ac," "posuere quis augue." "Cras sodales," "felis sit amet sollicitudin euismod," "lorem dui fermentum nisl," "et vehicula quam enim et est." "Etiam ac dolor sed augue dictum ullamcorper non molestie leo." "Morbi tellus arcu," "imperdiet eget condimentum sit amet," "convallis sodales massa." "Ut id urna eu quam facilisis rhoncus." "Curabitur euismod," "augue ut fringilla congue," "odio risus vestibulum enim," "ac porta augue lacus quis dolor." "Sed dui orci," "rutrum commodo dapibus sed," "fermentum in libero." "Aenean id purus sapien," "in feugiat odio." "Nullam interdum suscipit odio eget vehicula." "Praesent interdum," "sapien vitae consectetur pulvinar," "mauris felis iaculis nisi," "vitae sagittis sapien velit ac neque." "Morbi a purus vel velit vestibulum ullamcorper a vel diam." "Nam nec dui non tellus tincidunt molestie." "Nam lacinia iaculis orci eget pulvinar." "Etiam ac facilisis massa." "Nulla sit amet luctus odio." "Aenean eget turpis turpis," "eget fermentum neque." "Phasellus id lectus nisi." "Suspendisse tristique scelerisque suscipit." "Integer vel nibh elit." "Duis sem justo," "bibendum vel hendrerit vel," "cursus non turpis." "In hac habitasse platea dictumst." "Vestibulum nec quam a dolor consequat fermentum vel in leo." "Donec vel lorem risus," "quis blandit felis." "Sed mollis ornare turpis," "vitae mattis risus mollis eget." "Praesent eleifend iaculis mauris." "Maecenas porta tincidunt egestas." "Quisque at sem leo." "Donec non enim vel risus suscipit vulputate." "Nam a diam placerat dui feugiat commodo at a tortor." "Fusce elit augue," "congue sit amet imperdiet id," "sagittis at quam." "Integer vestibulum felis vel nunc consequat bibendum." "Curabitur rhoncus lacinia risus," "sit amet semper urna elementum vehicula." "Nulla vel ante libero." "Maecenas sed orci non eros venenatis dapibus nec non nibh." "Aliquam erat volutpat." "Quisque aliquet auctor nulla at semper." "Aenean congue pellentesque ipsum." "Aliquam id ante vel eros facilisis consectetur." "Aenean a mi in orci bibendum mattis euismod eget elit." "In sed enim et quam tincidunt semper in quis augue." "Proin sed sapien id magna cursus tristique." "Nunc ac sapien augue." "Aliquam tempus leo ultricies magna interdum tincidunt." "Nulla porttitor gravida ligula in aliquet." "Duis mattis dui non sem vestibulum ac sagittis enim molestie." "Quisque sed dui ligula." "Nullam euismod aliquet enim id tristique." "Curabitur nec lectus consectetur nisi cursus vehicula." "Nulla fringilla vestibulum rutrum." "Quisque malesuada nibh vitae quam feugiat nec placerat eros ultrices." "Pellentesque id dui id nisl eleifend iaculis posuere ut tortor." "Integer eget dui risus," "eu auctor quam." "Aliquam sit amet orci placerat nunc blandit dictum." "Vestibulum nec interdum nisi." "Proin purus nisi," "viverra ultricies accumsan ac," "dignissim nec nulla." "Donec sit amet dolor nisl," "a scelerisque elit." "Phasellus ut arcu lectus." "Sed semper dapibus pellentesque." "Nam vitae urna nulla," "vel auctor orci." "Sed vel magna nibh." "Curabitur pretium imperdiet orci eu ultrices." "Vivamus quis metus pharetra nunc euismod rutrum." "Fusce massa nibh," "venenatis sed ornare at," "posuere sed mauris." "Sed tortor est," "tempor vel fermentum sit amet," "laoreet at nulla." "Proin eu dictum lacus." "Proin nec mattis lectus." "Aliquam semper semper tellus," "ac eleifend orci accumsan non." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Phasellus vitae tortor mauris," "quis blandit nisi." "Donec quis viverra lacus." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Maecenas imperdiet," "leo eu tincidunt gravida," "eros sem lacinia risus," "vitae viverra massa augue eget ante." "Suspendisse ullamcorper lacus ut est bibendum condimentum." "In eget semper mi." "Praesent tellus turpis," "mollis sit amet feugiat at," "gravida eget augue." "Sed ac lacinia massa." "Sed vitae malesuada lorem." "Vivamus pellentesque urna eget sem vehicula pharetra." "Curabitur tristique tortor eget mauris adipiscing semper." "Sed eu nisi vulputate arcu elementum imperdiet." "Morbi gravida est non ante accumsan bibendum." "Cras et lectus augue," "sed congue leo." "Praesent semper," "urna nec pharetra aliquet," "augue purus tristique neque," "eget convallis libero turpis sed mi." "Sed tortor tellus," "tempus ac ullamcorper tempus," "consectetur in dui." "Cras aliquam dapibus turpis," "ut ultrices ligula vulputate a." "Donec molestie porttitor mi," "placerat rutrum neque sodales id." "Fusce quis justo lacus." "Duis eget sem nisi," "ac consectetur augue." "Vestibulum luctus erat non lacus commodo vel tristique dui consectetur." "Mauris tellus nisl," "molestie eget porta vitae," "sagittis sed dolor." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Pellentesque vel odio eget sem aliquet scelerisque eget vitae nunc." "Fusce adipiscing sagittis libero," "quis placerat dui pulvinar eget." "Cras condimentum," "arcu tempor facilisis condimentum," "eros leo ullamcorper urna," "vel tincidunt velit enim eget eros." "Mauris et semper nulla." "Proin mollis sapien nec enim egestas aliquam vestibulum consectetur tellus." "Aenean ut nisl ut sapien iaculis auctor." "Pellentesque dolor tellus," "sodales eu elementum ut," "ullamcorper at nunc." "Vestibulum convallis ornare leo," "ac luctus eros dignissim commodo." "Suspendisse at elit sit amet urna placerat lobortis." "Donec fermentum libero lacus," "in placerat risus." "Nullam ut enim sapien," "nec blandit libero." "Donec in nibh fermentum lacus dapibus bibendum vel ac turpis." "Morbi rhoncus," "purus pharetra sagittis mollis," "lectus ante imperdiet magna," "in vestibulum urna nulla ac erat." "Duis dictum euismod vulputate." "Morbi odio augue," "ultrices a gravida sed," "elementum quis felis." "Nam scelerisque urna id justo dignissim placerat." "Sed convallis lobortis orci vel egestas." "Vestibulum ultricies felis in libero iaculis varius." "Aliquam erat volutpat." "Phasellus ac purus non elit malesuada auctor." "Donec ut sem id enim volutpat posuere." "Donec malesuada est sed odio ornare dignissim." "Cras vitae urna massa," "ut facilisis lorem." "In rutrum interdum lectus," "nec scelerisque tellus consequat pellentesque." "Proin eu molestie neque." "Integer sed enim lectus," "ac aliquet urna." "Phasellus sodales sollicitudin consequat." "Praesent vitae augue ante." "Sed id pellentesque leo." "Integer vehicula enim quis dui aliquet congue." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Curabitur gravida," "quam sed elementum eleifend," "velit nulla dictum est," "ut malesuada augue ligula id dui." "Maecenas bibendum tristique ipsum," "eu gravida elit commodo sed." "Fusce metus tortor," "accumsan ac feugiat id," "volutpat sed tortor." "Vivamus tincidunt mi non purus volutpat ultrices." "Praesent eget metus eu sem tempus pellentesque." "Etiam faucibus sollicitudin dapibus." "Donec tempor massa sit amet mi posuere ullamcorper." "Vestibulum ac dolor ut urna ultrices volutpat." "Integer ipsum urna," "congue tempus vehicula eu," "sodales sit amet velit." "Proin adipiscing urna ut eros sodales vulputate." "Nam faucibus auctor justo non luctus." "Suspendisse ac augue sed augue viverra congue." "Nam ligula erat," "eleifend eu semper eget," "pharetra laoreet nunc." "Phasellus tempor eros a ante tincidunt ultricies." "Fusce sit amet est tristique lacus pharetra tristique." "Pellentesque orci est," "tristique quis tristique id," "imperdiet at neque." "Vivamus ut rutrum mauris." "Nullam sit amet quam turpis," "ut fringilla enim." "Duis sagittis accumsan risus." "In eget risus vel mauris pharetra laoreet nec id arcu." "Cras mollis," "mauris et sagittis laoreet," "est dui hendrerit urna," "at tempor nulla mauris sed odio." "Cras sed hendrerit orci." "Curabitur eros sem," "pretium vel iaculis vel," "accumsan in enim." "Proin mattis," "ligula tincidunt sagittis rutrum," "mauris dui consectetur erat," "ac hendrerit quam risus at purus." "Cras ac ante id libero congue semper at id tortor." "Cras non risus sit amet erat porta dictum sit amet in justo." "Phasellus vel justo odio." "Donec scelerisque varius ligula id bibendum." "Nullam turpis ligula," "fringilla ac semper a," "iaculis a sapien." "Vestibulum in est venenatis metus malesuada lacinia quis id justo." "Vivamus faucibus luctus semper." "Etiam mattis ullamcorper magna," "sit amet faucibus est malesuada euismod." "Duis libero nisl," "molestie a iaculis in," "convallis eu nunc." "Nullam sit amet lorem at purus ullamcorper rutrum sit amet eu orci." "In vel nulla in elit convallis varius nec a lacus." "Nunc ac nunc nisl," "quis condimentum risus." "Donec tempus facilisis odio ac rutrum." "Etiam sed mollis tortor." "Sed ac lorem at urna lacinia porta." "Curabitur vestibulum metus eu augue viverra et accumsan augue ornare." "Phasellus mollis mauris erat," "ut vestibulum arcu." "Praesent pretium condimentum nisl," "id rutrum quam mattis ac." "Nunc vitae arcu leo," "sit amet pretium dui." "Mauris vehicula velit sem," "lobortis cursus tellus." "Ut eleifend dapibus tellus," "in euismod ipsum dapibus at." "Nulla convallis blandit nunc quis lobortis." "Praesent placerat mattis mauris," "sed luctus nisi ultricies vel." "In tristique laoreet tortor sed porta." "Aenean hendrerit orci non est viverra sit amet blandit lorem scelerisque." "Nulla in nulla lacus." "Pellentesque ac enim quam," "id aliquet justo." "Suspendisse diam metus," "placerat eu volutpat ut," "euismod non erat." "Phasellus luctus odio vel orci dapibus sed varius lacus aliquam." "Sed tincidunt feugiat diam vel ornare." "Fusce quis volutpat magna." "Cras malesuada elit at leo fringilla imperdiet et sed libero." "Morbi sit amet tincidunt ligula." "Ut id tempus tellus." "Vestibulum id rhoncus risus." "Ut non magna a lorem semper hendrerit." "Cras vulputate cursus eros," "sit amet tincidunt ligula rutrum fringilla." "Cras mauris nisl," "fringilla sed egestas vel," "accumsan non mauris." "Integer commodo," "tellus consequat mollis pulvinar," "dui elit faucibus arcu," "in lacinia nisi mi eget ligula." "Nulla malesuada semper tortor eu lacinia." "Vestibulum at varius sem." "Vivamus posuere ligula ac tellus faucibus lobortis." "Maecenas sagittis arcu in odio sodales aliquam." "Mauris at felis augue." "Donec venenatis interdum cursus." "Vivamus ante mauris," "dignissim sit amet laoreet vel," "vehicula vel arcu." "Sed facilisis nulla sit amet massa posuere faucibus." "Aliquam elementum elementum felis lacinia vehicula." "Maecenas metus justo," "viverra et pulvinar ut," "venenatis a mauris." "Duis eu ultricies elit." "Donec gravida condimentum magna," "sodales eleifend risus fermentum eget." "Nunc elit urna," "elementum in adipiscing sit amet," "cursus in dui." "Cras at risus non ligula scelerisque scelerisque dictum sed lorem." "Sed semper lorem id magna consequat ut ultricies nunc consectetur." "Suspendisse vehicula," "erat sit amet tempor auctor," "augue risus interdum nunc," "eu adipiscing tortor nisi tempus sem." "Etiam malesuada ipsum ut lectus ultrices faucibus." "Curabitur tellus tellus," "pretium vel accumsan nec," "eleifend nec elit." "Cras semper fermentum ipsum," "sit amet gravida lectus hendrerit non." "Nullam pretium velit vel dolor suscipit in blandit nisi scelerisque." "Curabitur viverra ipsum vitae odio placerat pulvinar." "In cursus elit id turpis aliquam ornare." "Donec consequat turpis feugiat elit tempor sed lobortis arcu aliquam." "Curabitur sit amet sagittis purus." "Curabitur tincidunt arcu sed odio suscipit elementum." "Sed ut nibh a ante adipiscing auctor eleifend a nisi." "Proin sollicitudin sollicitudin blandit." "Ut commodo auctor imperdiet." "Fusce eleifend," "neque non ullamcorper elementum," "felis ipsum cursus libero," "et bibendum augue mi sed ligula." "Curabitur sodales euismod diam vitae dictum." "Maecenas vestibulum," "mi non commodo sollicitudin," "massa quam iaculis odio," "vel tristique tellus nibh vitae tortor." "Vestibulum ut odio eget nisi ultricies auctor ac vitae lorem." "Sed eu lorem elit." "Aliquam erat volutpat." "Suspendisse fermentum nulla lorem." "Morbi eleifend dolor a ligula feugiat vulputate." "Curabitur laoreet auctor quam," "at tincidunt metus cursus in." "Nam aliquam volutpat porttitor." "Aenean id cursus eros." "Vestibulum vel neque diam," "non posuere quam." "Quisque leo sapien," "fermentum quis congue vel," "fringilla vitae arcu." "Mauris semper turpis ac libero volutpat dapibus." "Duis nisi enim," "faucibus eget tempus at," "ultricies nec tellus." "Cras id lectus nisl," "id cursus orci." "Etiam sapien nisl," "mollis sit amet volutpat vel," "volutpat nec nisi." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Nunc ac purus nec leo vestibulum porttitor a blandit arcu." "Proin nec rhoncus neque." "Pellentesque vestibulum pharetra vestibulum." "Sed molestie elit eu dui mollis varius." "Etiam porttitor dictum mi." "Maecenas suscipit sagittis nunc nec porta." "Sed et arcu sit amet sapien convallis vestibulum." "Cras egestas accumsan accumsan." "Quisque accumsan tortor et erat mattis sollicitudin." "Sed molestie turpis eget sem tincidunt nec convallis mi congue." "Etiam ac egestas lorem." "Proin sollicitudin est nec sem vehicula tincidunt." "Proin quis purus ut nisl dapibus euismod." "Class aptent taciti sociosqu ad litora torquent per conubia nostra," "per inceptos himenaeos." "Nunc lacus ante," "rutrum sed lacinia ut," "fermentum id purus." "Nulla facilisi." "Suspendisse sed lectus nec libero lacinia aliquam." "Sed id ipsum sapien," "id varius ipsum." "Vestibulum at nulla mi," "eget accumsan nibh." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Donec lobortis ultrices iaculis." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec placerat eros ac arcu pellentesque laoreet." "Praesent sagittis pellentesque dictum." "Nulla in metus eget metus vulputate tempus." "Mauris dictum elementum commodo." "Donec tellus est," "suscipit iaculis venenatis ut," "pulvinar sit amet turpis." "Mauris et elit non magna consectetur bibendum." "Mauris pellentesque dui eu libero consectetur fringilla." "Aenean vel ipsum urna." "Maecenas pulvinar sollicitudin magna molestie interdum." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Cum sociis natoque penatibus et magnis dis parturient montes," "nascetur ridiculus mus." "Mauris viverra pretium tortor eget gravida." "Integer commodo molestie turpis quis elementum." "Aenean placerat," "purus eu rhoncus ornare," "ligula nulla consequat dui," "vitae scelerisque augue massa pulvinar quam." "Suspendisse ultricies ultricies neque sit amet luctus." "Ut bibendum leo a lectus blandit eget hendrerit ligula consequat." "In hac habitasse platea dictumst." "Cras tempor," "eros non posuere pulvinar," "magna nisi consectetur lacus," "in ullamcorper ante lectus non justo." "Sed porttitor libero vel nisl bibendum dapibus." "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." "Fusce vitae faucibus mi." "Etiam in libero lobortis nisl lobortis lobortis blandit ut dolor." "Morbi auctor iaculis nulla at venenatis." "Morbi augue nibh," "lobortis ut bibendum id," "pretium nec felis." "Lorem ipsum dolor sit amet," "consectetur adipiscing elit." "Maecenas molestie," "ante nec porttitor bibendum," "tortor tortor aliquet arcu," "sit amet tempus ligula diam sit amet felis." "Phasellus semper posuere augue id rhoncus." "Cras dolor tellus," "posuere id varius in," "hendrerit eu tellus." "Proin vitae turpis non nulla ullamcorper tristique." "In hac habitasse platea dictumst." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce sed justo quis diam lacinia imperdiet nec eu tortor." "Nullam at quam non metus pretium luctus in ac dui." "Vivamus libero nibh," "adipiscing et tristique non," "accumsan quis sem." "Aliquam condimentum ligula eu lorem sodales fermentum." "Suspendisse ac urna vitae est pharetra vulputate at vel lacus." "Sed vel lorem consequat sapien tristique dignissim." "Praesent sodales fermentum est id iaculis." "Sed sollicitudin ullamcorper suscipit." "Morbi felis massa," "ultricies ac ultrices in," "malesuada volutpat sapien." "Vestibulum vitae egestas arcu." "Suspendisse ac facilisis dui." "Sed lobortis eros ac est adipiscing laoreet." "Nullam urna arcu," "dapibus quis commodo vulputate," "dictum aliquet mi." "Morbi sit amet erat sit amet velit pellentesque aliquam." "Sed eu arcu turpis," "ut vulputate quam." "Nullam ultrices condimentum tortor quis scelerisque." "Morbi lacinia lacinia metus," "vel elementum ante pharetra at." "Fusce mollis magna vel nisi gravida ut fringilla tortor rhoncus." "Aenean aliquam feugiat sapien ac euismod." "Nullam non est tortor." "Pellentesque vestibulum porta lorem ut adipiscing." "Nunc eget enim et dui pellentesque egestas." "Suspendisse ornare mollis odio," "tincidunt tincidunt sapien egestas non." "Cras vulputate," "nisi sit amet vehicula facilisis," "sapien neque adipiscing nisi," "at volutpat est nibh euismod ipsum." "Maecenas scelerisque elementum leo," "eget semper libero auctor a." "Proin vel odio sit amet tortor adipiscing facilisis non vel elit." "Aliquam eget leo libero," "sit amet vulputate est." "Maecenas ut turpis nec est tincidunt rutrum." "Nam laoreet," "justo in dictum tincidunt," "nisi est porttitor diam," "eget pretium libero est dictum odio." "Fusce justo felis," "tempor vitae mattis sit amet," "pretium sagittis sem." "Mauris risus erat," "volutpat sit amet aliquam cursus," "ultricies a nulla." "Aliquam at erat felis." "In imperdiet lacinia purus at luctus." "Suspendisse rutrum lacinia ullamcorper." "Vestibulum tincidunt sodales sollicitudin." "Aliquam sit amet velit purus," "in venenatis nisl." "Vivamus vitae magna quis nisi varius imperdiet ut quis tortor." "Ut pulvinar," "mi a volutpat blandit," "justo tellus tincidunt massa," "id vulputate elit nunc at risus." "Integer venenatis rhoncus enim." "In pretium adipiscing justo," "sed scelerisque urna fringilla sit amet." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam placerat," "est nec ornare convallis," "ante lacus vestibulum quam," "sit amet interdum magna purus ac eros." "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam at adipiscing turpis." "Curabitur lobortis velit ut ligula commodo lacinia." "Nullam pellentesque," "velit in convallis consequat," "ipsum massa malesuada lacus," "sit amet sodales odio enim vitae mauris." "Integer eget risus quam." "Maecenas quis risus sit amet risus egestas pulvinar." "Proin nec consectetur est." "Praesent ultricies felis a nisi aliquet pulvinar." "Quisque nec elit at lorem porta malesuada." "Phasellus ac nulla eros," "eget egestas lectus." "Proin a lacus orci," "ornare vehicula posuere." +05686F73743105626C616174026E6C000068000100000E10000A000A00144FFFFF20EE64 +host1.blaat.nl. 3600 IN NID 10 0014:4fff:ff20:ee64 +05686F73743105626C616174026E6C000069000100000E100006000A0A010200 +host1.blaat.nl. 3600 IN L32 10 10.1.2.0 +05686F73743105626C616174026E6C00006A000100000E10000A000A20010DB811401000 +host1.blaat.nl. 3600 IN L64 10 2001:0db8:1140:1000 +05686F73743105626C616174026E6C00006B000100000E100018000A0B6C36342D7375626E65743105626C616174026E6C00 +host1.blaat.nl. 3600 IN LP 10 l64-subnet1.blaat.nl. +03636161000101000100000E1000150005697373756563612E6578616D706C652E6E6574 +caa. 3600 IN CAA 0 issue "ca.example.net" +03636161000101000100000E1000220005696F6465666D61696C746F3A7365637572697479406578616D706C652E636F6D +caa. 3600 IN CAA 0 iodef "mailto:security@example.com" +03636161000101000100000E1000200005696F646566687474703A2F2F696F6465662E6578616D706C652E636F6D2F +caa. 3600 IN CAA 0 iodef "http://iodef.example.com/" +03636161000101000100000E1000250005697373756563612E6578616D706C652E6E65743B206163636F756E743D323330313233 +caa. 3600 IN CAA 0 issue "ca.example.net; account=230123" +03636161000101000100000E1000200005697373756563612E6578616D706C652E6E65743B20706F6C6963793D6576 +caa. 3600 IN CAA 0 issue "ca.example.net; policy=ev" +03636161000101000100000E10000C8003746273556E6B6E6F776E +caa. 3600 IN CAA 128 tbs "Unknown" +03636161000101000100000E100046020461757468303E3039060A2B06010401D67902030106096086480165030402010420614829C81B958911F81164D40DCDBFD49D66CEB3B3442FF6C9C3A912F9497566020100 +caa. 3600 IN CAA 2 auth "0>09\006\010+\006\001\004\001\214y\002\003\001\006 `\134H\001e\003\004\002\001\004 aH)\200\027\149\137\017\248\017d\212\013\205\191\212\157f\206\179\179D/\246\201\195\169\018\249Iuf\002\001\000" +05657569343800006C000100000E10000600005E90012A +eui48. 3600 IN EUI48 00-00-5e-90-01-2a +05657569363400006D000100000E10000800005EEF0000002A +eui64. 3600 IN EUI64 00-00-5e-ef-00-00-00-2a +0474787431000010000100000E100009016102626203636363 +txt1. 3600 IN TXT "a" "bb" "ccc" +0474787432000010000100000E100009016102626203636363 +txt2. 3600 IN TXT "a" "bb" "ccc" +0474787433000010000100000E10001003612062026262062063632063200120 +txt3. 3600 IN TXT "a b" "bb" " cc c " " " +0474787434000010000100000E10001003612062026262062063632063200120 +txt4. 3600 IN TXT "a b" "bb" " cc c " " " +056162626579076578616D706C6503636F6D00001D000100000E1000100067251288B2F08C69741F56009A6E60 +abbey.example.com. 3600 IN LOC 40 32 24.716 N 105 04 25.770 W 1208m 600000m 2000m 1m +05616272616D076578616D706C6503636F6D00001D000100000E1000100015572588B2F08C69741F56FFFFFFFB +abram.example.com. 3600 IN LOC 40 32 24.716 N 105 04 25.770 W 42849672.91m 1000m 500000m 2000m +056164646965076578616D706C6503636F6D00001D000100000E100010009898986CB02700A69FB200FFFFFFFB +addie.example.com. 3600 IN LOC 90 00 00.000 S 180 00 00.000 E 42849672.91m 9000000m 9000000m 9000000m +056164646965076578616D706C6503636F6D00001D000100000E100010009999896CB02700A69FB200FFFFFFFB +addie.example.com. 3600 IN LOC 90 00 00.000 S 180 00 00.000 E 42849672.91m 90000000m 90000000m 80000000m +06616C66726163076578616D706C6503636F6D00001D000100000E100010001216128895440069782D80009A6EA0 +alfrac.example.com. 3600 IN LOC 40 00 00.000 N 105 00 00.000 W 1208.64m 1m 10000m 1m +07616C6C73706563076578616D706C6503636F6D00001D000100000E1000100067252388B2F08C69741F56009A6E60 +allspec.example.com. 3600 IN LOC 40 32 24.716 N 105 04 25.770 W 1208m 600000m 2000m 20m +0663757274696E03656475026175076578616D706C6503636F6D00001D000100000E10001000121612791B7D2898E6486800989A68 +curtin.edu.au.example.com. 3600 IN LOC 32 07 19.000 S 116 02 25.000 E 10m 1m 10000m 1m +0672777930346C0D6C6F67616E2D616972706F727406626F73746F6E076578616D706C6503636F6D00001D000100000E100010002516128916CB3C70C310DF00988550 +rwy04l.logan-airport.boston.example.com. 3600 IN LOC 42 21 28.764 N 71 00 51.617 W -44m 2000m 10000m 1m +0D63616D6272696467652D6E6574036B656903636F6D076578616D706C6503636F6D00001D000100000E1000100033161289172DD070BE15F000988D20 +cambridge-net.kei.com.example.com. 3600 IN LOC 42 21 54.000 N 71 06 18.000 W -24m 30m 10000m 1m +066C6F696F7368036B656903636F6D076578616D706C6503636F6D00001D000100000E100010001224128917069070BF2DD800988D20 +loiosh.kei.com.example.com. 3600 IN LOC 42 21 43.952 N 71 05 06.344 W -24m 1m 200m 1m +086D6F726566726163076578616D706C6503636F6D00001D000100000E100010003152428895440069782D80009A6EA0 +morefrac.example.com. 3600 IN LOC 40 00 00.000 N 105 00 00.000 W 1208.64m 0.30m 5m 4m +086E65676174697665076578616D706C6503636F6D00001D000100000E10001000121612776ABC009687D28000895C83 +negative.example.com. 3600 IN LOC 40 00 00.000 S 105 00 00.000 E -9978.85m 1m 10000m 1m +057069706578036E6574076578616D706C6503636F6D00001D000100000E100010001216128B3556C88008165000989A68 +pipex.net.example.com. 3600 IN LOC 52 14 05.000 N 00 08 50.000 E 10m 1m 10000m 1m +066E6F68707670076578616D706C6503636F6D00001D000100000E1000100067161288B2F08C69741F56009A6E60 +nohpvp.example.com. 3600 IN LOC 40 32 24.716 N 105 04 25.770 W 1208m 600000m 10000m 1m +0A6E6F6D696E6E6F736563076578616D706C6503636F6D00001D000100000E100010001216128895440069782D80009A6E60 +nominnosec.example.com. 3600 IN LOC 40 00 00.000 N 105 00 00.000 W 1208m 1m 10000m 1m +056E6F736563076578616D706C6503636F6D00001D000100000E1000100012161288B2900069748400009A6E60 +nosec.example.com. 3600 IN LOC 40 32 00.000 N 105 04 00.000 W 1208m 1m 10000m 1m +086E6F737A68707670076578616D706C6503636F6D00001D000100000E1000100012161288B2F08C69741F56009A6E60 +noszhpvp.example.com. 3600 IN LOC 40 32 24.716 N 105 04 25.770 W 1208m 1m 10000m 1m +0474787435000010000100000E10001918546573742D537472696E6722546573742D537472696E6722 +txt5. 3600 IN TXT "Test-String\"Test-String\"" +0474787436000010000100000E100108FF763D444B494D313B206B3D7273613B20673D2A3B20733D656D61696C3B20683D736861313B20743D733B20703D4D4947664D413047435371475349623344514542415155414134474E4144434269514B42675143333365774B78425A4152534150625439364970572F6B334467644E7546456238393665496638304863567857772B7732472B31735163556A785755534770367954544D456C73366E3774746869786964795269452F61574F793369632F4B2B39323750754379304D315A583251593867566D4F484A6259543371425138746F5172764749657238665171714A497A4F2F4154566248785838422F7A3050736D4749327878714379586B4F77074944415141423B +txt6. 3600 IN TXT "v=DKIM1; k=rsa; g=*; s=email; h=sha1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC33ewKxBZARSAPbT96IpW/k3DgdNuFEb896eIf80HcVxWw+w2G+1sQcUjxWUSGp6yTTMEls6n7tthixidyRiE/aWOy3ic/K+927PuCy0M1ZX2QY8gVmOHJbYT3qBQ8toQrvGIer8fQqqJIzO/ATVbHxX8B/z0PsmGI2xxqCyXkOw" "IDAQAB;" +076578616D706C6503636F6D00003E000100000E10000C000000420003000460000008 +example.com. 3600 IN CSYNC 66 3 A NS AAAA +3839666536636262396539333361643062386234666139343036363437346530393165653862653639366332323462316331363738666365630B5F6F70656E7067706B657900003D000100000E1008AD99020D044D6CF351011000AE2731A071CAE66040331DCFFFBC1ABAEA01FBA2B3341AD29F4191E1E2E47514CC595E5D3B59EBD460DB81CB04E98A753DAE96354374B8C3A420364960A6C6875E66CEA7216327C16996557C4D13E25E236B3714E932795BE889E8B33A295FAF6D9015474CFE9C2643603F1E91E01334011A8419098E2FC9807285B2195CDBB1A9AE1916A26B9E33B3F91CDE2F728AA133464A1099FC2BEECAF8F67EE03A999AA97BE89CE4A252F804CE27A9EFB7A631CA956BFA99C51D6BECA52AF39A93353AAC43097671074A4BB5B039EB86E99209989D5B6A4AE22B32C1605E712072926095B4640DB4B4D16B54A8139048E25EF0098781E5244222DF9B6A6BF2335942527356A29E1063C5BC1297C051AB969A3E0C01FB15E20EA63A06B416D6C96F9794C5D80E97AFB249D2B907DC46605F1001019DD627744BC2AD73F239CD623F945BF9922EC6CEB607CE8818455173199DE1EF555BF3E85E9702DCAB7A30E5E6C0F6827CE6D550DF2BA4FA6EF2ED47BCEB916ADED25A727039A09942A0684897CDF2EFC13F5169693C19DA94D861BE40E8B07FE853D2978389EBA876332BE7DB146F1EC6A957BFE39AC90514B1F870A5D899BB4E1D97AF49294AD09DEDE6D5A04ABDC29332BBE74CF70393B626C0F4FDFEF6EE2B01D8A6A40750C446E159B44D0A783611585385BA912B771364B6EDA8A69680026A6BF2105692FD6F9A6CF19E09550011010001B42357696C6C656D20546F6F726F70203C77696C6C656D406E6C6E65746C6162732E6E6C3E89023E04130102002805024D6CF351021B23050909660180060B090807030206150802090A0B0416020301021E01021780000A0910E5F8F8212F77A4985D5B0FFE289B97F7D8E4E5ABC5378B7D6DB7C395F98C3D787E3FB598638C41E889AEA40CBE5B3001D947C7184C929EFE6AD1E32AE9ACB0802823870BB149C3A7BDFBB591601D8C099B3BDD3B3DDCCB03B4D611DC741D9C49C3B5B87654A21DFB618CFE6087F172B3DC663A9F4C0DAD81476EBE5B6FD966164383BC39303A66272A3FE6A0B9A813D4E249C6B9DACF748A49A979B3FA24036E47099E1D24ED3310CC04341E0BF3AFD4E365A04CD075B7D1DFF607A3B8738ABF885A7DC959251785CA626B8C9B476F44439653615437C715B1A586236132E1F89B0E4A9D2D84E403E6733C90A96EC041D14994B19EC0D23153BB94D9059851901353DDB60B9C42EDF715AF6EE4EF111E5AFD56092A1F7662A72AF80F8768425324A8A7335C805A49B1C4D3DC279B69114A5C592638FF22A963BD34D2D4BCC319972B99C197FA31C21B89E627F36CE811297FF707F53E6C258DAB407B7D618EC296317A565C2C8B740A39244D8F82095842F6F84448DCE29BB292C7E15072B00C04F2A0F4CD700F2E7348B703F74BCB8D5F4235FBD2824F515852EA9BE06255F88D81A5046D1F730E9BF103B3335F5F03D74AC2EC65814DD920E985B57A3B4E0C699F3103AB033CCF36A5B037B3668365484B58A4462D79414D27170C9DB4285BEC72D24A9654354B996D13C14B2994F6725E36FB766D57A79ED721C3CA248221390D7D6FA65F867FA6FA1369B9020D044D6CF351011000A4ECE215B3F782BAE8FB6C1E3FDC06D1E6242271F41B073FC7A852377888147B7168134E0B753C608D07308F188B9489AF34F1DAB1BB52FC3968D0A705C30A35EA0226E7D2608931138D56CCF124A9236276462863A8F1C83B3A640167211DEAAADFC557FF7701CBB1D413259CF3F5B18EC6E615000BB4AB73C75B980615CFA9A7778DE3BAB318CC448ECA044E3FDC95AC63AA2B28846D77FE190FE8FBC3A03ECE39D38675040FF1BE064410FAAD9FC5A8C2EFE02F34CC39F3087D6B2E934642995FD5A9F2D3A59302C0CBE1FEA01002C7EB64C8C4E5F853B5B17AEBC7C72297380B8DF9EC7F32F1766B3D76E186DC582EEDD5DA955B7CACDB4CCA69E99E9B25D22B157A68C9F828170917709D335A000590F2BE22FD7A5ED0FF2432969642E84978428C1A3C8380BB339D21CE9CB8CE8F4D6BC102B70A56042159F26C85F78599F931A73FE159CF4AE34C828E66FE84F648AF745B5D2B1022D514901A8E48C1CDAE82205FE21A58CAB77BBC8C1DD32A94AAF4954E7695F05B7C40A395E07F34EE0ADD218904FCD380BB737BE2EC5B148942840C58ABFA212C10AD6DEBB26523AA040DAD2191397DEB472F0DBEECEB6AFB386B7166754A47216C3629F63633A02C5FD1C116E46C8A682A163426E556EA5C0ECDB472429C0D51BEA5E583F889E70F831251E8B31C231D2F946DE8C31A6550F884EA961DFDF75A2C3E366AD48CB5001101000189022404180102000F05024D6CF351021B0C050909660180000A0910E5F8F8212F77A498ED740FF8E1CD5BAA631D75DFF18A2AA27DEF9C416118D178092A1C327C3CC641FD74BC976F3A1B5DA52B95CFEA68618B31F2AAEE6F82F30ED934EB98DE0105878A4814FC811139ED4B3AA356E3C962C422F0BE4D3D59F8E9E64913964287282A6519CD0B1F3F03615AEA223B276EFCBC5CD4921787C17F70B0967AEFDCC5462344399B4180EFD75C1185A83D6B691E660F8210E76624F1A87D988BAF9367D26B84DCB5DF8C7303C2947C4C238734ADDCCB7970F6C192F3F5DD5F75127E289F26B2FDA0562B44A032ED45AE1FC855DCA67D54125CCD36C16F207E4389B0F4E5FF45FE60328A53B322534868FF0D3D8ACA0BB0781EE1FE62F2C0E6FC468F57CCF795CED9F2B27E3CB6D16FC417BD4CA969A364DC649EA5C57F0325205EAA77FD9DF84431C3BE5329773828D0E32C0011CBB885E7131B44B1FC5267B0B3FF125E7255C233239FC6E8C8844D613DAB76833E49A7D947FAE6B3CEB35B2DDCE2A0F71F384F74FECDA521AE07CE3332E5EB2C79D100AD8F9ACE2A0067C1B590F61DD18AB021D66605AA745B5944D830DE4C9F61DCC889354B1A6203D918A5C2317B6D5F188D8D0CF6DAB11C9578F6F41D3089871BBB2963B11459AB0B4C4220DDAFB14C20ECBACAB1CEC60A522ECC883BD1D539CA61CDD4933C412FAFD631D03EFF23B23A4164729E32236947F622FE79A17493154E9A30B257E3FDF97F0B2E1B8C65FC85BD98 +9fe6cbb9e933ad0b8b4fa94066474e091ee8be696c224b1c1678fcec._openpgpkey. 3600 IN OPENPGPKEY mQINBE1s81EBEACuJzGgccrmYEAzHc//vBq66gH7orM0GtKfQZHh4uR1FMxZXl07WevUYNuBywTpinU9rpY1Q3S4w6QgNklgpsaHXmbOpyFjJ8FpllV8TRPiXiNrNxTpMnlb6InoszopX69tkBVHTP6cJkNgPx6R4BM0ARqEGQmOL8mAcoWyGVzbsamuGRaia54zs/kc3i9yiqEzRkoQmfwr7sr49n7gOpmaqXvonOSiUvgEziep77emMcqVa/qZxR1r7KUq85qTNTqsQwl2cQdKS7WwOeuG6ZIJmJ1bakriKzLBYF5xIHKSYJW0ZA20tNFrVKgTkEjiXvAJh4HlJEIi35tqa/IzWUJSc1ainhBjxbwSl8BRq5aaPgwB+xXiDqY6BrQW1slvl5TF2A6Xr7JJ0rkH3EZgXxABAZ3WJ3RLwq1z8jnNYj+UW/mSLsbOtgfOiBhFUXMZneHvVVvz6F6XAtyrejDl5sD2gnzm1VDfK6T6bvLtR7zrkWre0lpycDmgmUKgaEiXzfLvwT9RaWk8GdqU2GG+QOiwf+hT0peDieuodjMr59sUbx7GqVe/45rJBRSx+HCl2Jm7Th2Xr0kpStCd7ebVoEq9wpMyu+dM9wOTtibA9P3+9u4rAdimpAdQxEbhWbRNCng2EVhThbqRK3cTZLbtqKaWgAJqa/IQVpL9b5ps8Z4JVQARAQABtCNXaWxsZW0gVG9vcm9wIDx3aWxsZW1AbmxuZXRsYWJzLm5sPokCPgQTAQIAKAUCTWzzUQIbIwUJCWYBgAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ5fj4IS93pJhdWw/+KJuX99jk5avFN4t9bbfDlfmMPXh+P7WYY4xB6ImupAy+WzAB2UfHGEySnv5q0eMq6aywgCgjhwuxScOnvfu1kWAdjAmbO907PdzLA7TWEdx0HZxJw7W4dlSiHfthjP5gh/Fys9xmOp9MDa2BR26+W2/ZZhZDg7w5MDpmJyo/5qC5qBPU4knGudrPdIpJqXmz+iQDbkcJnh0k7TMQzAQ0Hgvzr9TjZaBM0HW30d/2B6O4c4q/iFp9yVklF4XKYmuMm0dvREOWU2FUN8cVsaWGI2Ey4fibDkqdLYTkA+ZzPJCpbsBB0UmUsZ7A0jFTu5TZBZhRkBNT3bYLnELt9xWvbuTvER5a/VYJKh92Yqcq+A+HaEJTJKinM1yAWkmxxNPcJ5tpEUpcWSY4/yKpY7000tS8wxmXK5nBl/oxwhuJ5ifzbOgRKX/3B/U+bCWNq0B7fWGOwpYxelZcLIt0CjkkTY+CCVhC9vhESNzim7KSx+FQcrAMBPKg9M1wDy5zSLcD90vLjV9CNfvSgk9RWFLqm+BiVfiNgaUEbR9zDpvxA7MzX18D10rC7GWBTdkg6YW1ejtODGmfMQOrAzzPNqWwN7Nmg2VIS1ikRi15QU0nFwydtChb7HLSSpZUNUuZbRPBSymU9nJeNvt2bVenntchw8okgiE5DX1vpl+Gf6b6E2m5Ag0ETWzzUQEQAKTs4hWz94K66PtsHj/cBtHmJCJx9BsHP8eoUjd4iBR7cWgTTgt1PGCNBzCPGIuUia808dqxu1L8OWjQpwXDCjXqAibn0mCJMRONVszxJKkjYnZGKGOo8cg7OmQBZyEd6qrfxVf/dwHLsdQTJZzz9bGOxuYVAAu0q3PHW5gGFc+pp3eN47qzGMxEjsoETj/claxjqisohG13/hkP6PvDoD7OOdOGdQQP8b4GRBD6rZ/FqMLv4C80zDnzCH1rLpNGQplf1any06WTAsDL4f6gEALH62TIxOX4U7WxeuvHxyKXOAuN+ex/MvF2az124YbcWC7t1dqVW3ys20zKaememyXSKxV6aMn4KBcJF3CdM1oABZDyviL9el7Q/yQylpZC6El4QowaPIOAuzOdIc6cuM6PTWvBArcKVgQhWfJshfeFmfkxpz/hWc9K40yCjmb+hPZIr3RbXSsQItUUkBqOSMHNroIgX+IaWMq3e7yMHdMqlKr0lU52lfBbfECjleB/NO4K3SGJBPzTgLtze+LsWxSJQoQMWKv6ISwQrW3rsmUjqgQNrSGROX3rRy8Nvuzravs4a3FmdUpHIWw2KfY2M6AsX9HBFuRsimgqFjQm5VbqXA7NtHJCnA1RvqXlg/iJ5w+DElHosxwjHS+UbejDGmVQ+ITqlh3991osPjZq1Iy1ABEBAAGJAiQEGAECAA8FAk1s81ECGwwFCQlmAYAACgkQ5fj4IS93pJjtdA/44c1bqmMddd/xiiqife+cQWEY0XgJKhwyfDzGQf10vJdvOhtdpSuVz+poYYsx8qrub4LzDtk065jeAQWHikgU/IEROe1LOqNW48lixCLwvk09Wfjp5kkTlkKHKCplGc0LHz8DYVrqIjsnbvy8XNSSF4fBf3Cwlnrv3MVGI0Q5m0GA79dcEYWoPWtpHmYPghDnZiTxqH2Yi6+TZ9JrhNy134xzA8KUfEwjhzSt3Mt5cPbBkvP13V91En4onyay/aBWK0SgMu1Frh/IVdymfVQSXM02wW8gfkOJsPTl/0X+YDKKU7MiU0ho/w09isoLsHge4f5i8sDm/EaPV8z3lc7Z8rJ+PLbRb8QXvUypaaNk3GSepcV/AyUgXqp3/Z34RDHDvlMpdzgo0OMsABHLuIXnExtEsfxSZ7Cz/xJeclXCMyOfxujIhE1hPat2gz5Jp9lH+uazzrNbLdzioPcfOE90/s2lIa4HzjMy5essedEArY+azioAZ8G1kPYd0YqwIdZmBap0W1lE2DDeTJ9h3MiJNUsaYgPZGKXCMXttXxiNjQz22rEclXj29B0wiYcbuyljsRRZqwtMQiDdr7FMIOy6yrHOxgpSLsyIO9HVOcphzdSTPEEvr9Yx0D7/I7I6QWRynjIjaUf2Iv55oXSTFU6aMLJX4/35fwsuG4xl/IW9mA== +04746573740361646401310000FA00FF00000000003A08686D61632D6D6435077369672D616C670372656703696E74000000583FEEC3012C0010964109B23C0178075FBFD446B3ACD9AE3BFB00000000 +test.add.1. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480584899 300 16 lkEJsjwBeAdfv9RGs6zZrg== 15355 NOERROR 0 +06626C61626C610000FA00FF00000000003A08686D61632D6D6435077369672D616C670372656703696E74000000583FEF34012C001093D99232CDADE6FAB9155D83BD0BD1EAE75F00000000 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585012 300 16 k9mSMs2t5vq5FV2DvQvR6g== 59231 NOERROR 0 +06626C61626C610000FA00FF00000000003A08686D61632D6D6435077369672D616C670372656703696E74000000583F0000012C0010B017F1D34191B3EB5F4539B8B910A3C964BF00000000 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480523776 300 16 sBfx00GRs+tfRTm4uRCjyQ== 25791 NOERROR 0 +06626C61626C610000FA00FF00000000002A08686D61632D6D6435077369672D616C670372656703696E74000000583FF0E9012C0000E92C00100000 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585449 300 0 59692 BADSIG 0 +06626C61626C610000FA00FF00000000003A08686D61632D6D6435077369672D616C670372656703696E74000000583FF0F6012C0010EB0BE51BCDAC1151F2AAC4ED04BBD14365BC00000000 +blabla. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1480585462 300 16 6wvlG82sEVHyqsTtBLvRQw== 26044 NOERROR 0 diff --git a/external/unbound/testdata/test_nsec3_hash.1 b/external/unbound/testdata/test_nsec3_hash.1 new file mode 100644 index 0000000..7b3813e --- /dev/null +++ b/external/unbound/testdata/test_nsec3_hash.1 @@ -0,0 +1,180 @@ +; +; NSEC3 hash algo test file. +; The hash cache is maintained for the duration of the file. +; Every entry is a hash test. +; query name is hashed. +; answer AAAA record hash the correct hashed answer name. +; auth NSEC3 record has the hash parameters. +; + + +; These are from the nsec3-draft-11 example zone. +; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +ENTRY_BEGIN +SECTION QUESTION +example. IN AAAA +SECTION ANSWER +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(a.example) = 35mthgpgcu1qg68fab165klnsnk3dpvl +ENTRY_BEGIN +SECTION QUESTION +a.example. IN AAAA +SECTION ANSWER +35mthgpgcu1qg68fab165klnsnk3dpvl.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(ai.example) = gjeqe526plbf1g8mklp59enfd789njgi +ENTRY_BEGIN +SECTION QUESTION +ai.example. IN AAAA +SECTION ANSWER +gjeqe526plbf1g8mklp59enfd789njgi.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(ns1.example) = 2t7b4g4vsa5smi47k61mv5bv1a22bojr +ENTRY_BEGIN +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(ns2.example) = q04jkcevqvmu85r014c7dkba38o0ji5r +ENTRY_BEGIN +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +q04jkcevqvmu85r014c7dkba38o0ji5r.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h +ENTRY_BEGIN +SECTION QUESTION +w.example. IN AAAA +SECTION ANSWER +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en +ENTRY_BEGIN +SECTION QUESTION +*.w.example. IN AAAA +SECTION ANSWER +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995 +ENTRY_BEGIN +SECTION QUESTION +x.w.example. IN AAAA +SECTION ANSWER +b4um86eghhds6nea196smvmlo4ors995.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(y.w.example) = ji6neoaepv8b5o6k4ev33abha8ht9fgc +ENTRY_BEGIN +SECTION QUESTION +y.w.example. IN AAAA +SECTION ANSWER +ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(x.y.w.example) = 2vptu5timamqttgl4luu9kg21e0aor3s +ENTRY_BEGIN +SECTION QUESTION +x.y.w.example. IN AAAA +SECTION ANSWER +2vptu5timamqttgl4luu9kg21e0aor3s.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; H(xx.example) = t644ebqk9bibcna874givr6joj62mlhv +; capitalization changed. +ENTRY_BEGIN +SECTION QUESTION +xX.example. IN AAAA +SECTION ANSWER +t644ebqk9bibcna874givr6joj62mlhv.example. AAAA ::1 +SECTION AUTHORITY +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd (gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +ENTRY_END + +; H(2t7b4g4vsa5smi47k61mv5bv1a22bojr.example) +; = kohar7mbb8dc2ce8a9qvl8hon4k53uhi +ENTRY_BEGIN +SECTION QUESTION +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. IN AAAA +SECTION ANSWER +kohar7mbb8dc2ce8a9qvl8hon4k53uhi.example. AAAA ::1 +SECTION AUTHORITY +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd (gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +ENTRY_END + + + +; repeat entry to test the cache. +; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +ENTRY_BEGIN +SECTION QUESTION +example. IN AAAA +SECTION ANSWER +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; repeat entry to test the cache. +; H(a.example) = 35mthgpgcu1qg68fab165klnsnk3dpvl +ENTRY_BEGIN +SECTION QUESTION +a.example. IN AAAA +SECTION ANSWER +35mthgpgcu1qg68fab165klnsnk3dpvl.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; repeat entry to test the cache. +; H(ai.example) = gjeqe526plbf1g8mklp59enfd789njgi +ENTRY_BEGIN +SECTION QUESTION +ai.example. IN AAAA +SECTION ANSWER +gjeqe526plbf1g8mklp59enfd789njgi.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + +; repeat entry to test the cache. +; capitalization of qname. +; H(ai.example) = gjeqe526plbf1g8mklp59enfd789njgi +ENTRY_BEGIN +SECTION QUESTION +AI.example. IN AAAA +SECTION ANSWER +gjeqe526plbf1g8mklp59enfd789njgi.example. AAAA ::1 +SECTION AUTHORITY +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +ENTRY_END + diff --git a/external/unbound/testdata/test_packets.1 b/external/unbound/testdata/test_packets.1 new file mode 100644 index 0000000..a4f8c45 --- /dev/null +++ b/external/unbound/testdata/test_packets.1 @@ -0,0 +1,80000 @@ +25001 +00000000700240004aa200000204059801010402 +000080010000000000000000 + +25002 +d4df0000000100000000000005686965726f026e6c00000f0001 +d4df8000000100000002000005686965726f026e6c00000f0001c00c00020001000151800018036e73310e7765626d61727463656e7472616c03636f6d00c00c00020001000151800006036e7332c02a + +25003 +2589000000010000000000000c6769657362657273626f7577026e6c0000010001 +2589800000010000000200000c6769657362657273626f7577026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +25004 +824a000000010000000000000377777703746d66026e6c0000010001 +824a800000010000000200000377777703746d66026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c02c + +25005 +b5c9ca3d50104320f4120000000000000000 + + +25006 +b5c9ca3d5018432054550000009010c0000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe52403c4fd20003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 + + +25007 +c8cd00000001000000000000037777770a73706f727468756d6f72026e6c0000010001 +c8cd80000001000000030000037777770a73706f727468756d6f72026e6c0000010001c01000020001000151800013036e733109746572612d6279746503636f6d00c01000020001000151800006036e7332c033c01000020001000151800006036e7333c033 + +25008 +a3ad01000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +a3ad81000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +25009 +b5c9ca4b50114312f37f0000000000000000 + + +25010 +000000007002400026fc00000204059801010402 +000080010000000000000000 + +25011 +063d00000001000000000000046f6b656d026e6c00000f0001 +063d80000001000000020000046f6b656d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c029 + +25012 +62d200000001000000000000036e733109756e69736f75726365026e6c0000010001 +62d280000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +25013 +191d00000001000000000000064c65776d6172026e6c0000ff0001 +191d80000001000000020002064c65776d6172026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25014 +b5c9ca4c50104312f37e0000000000000000 + + +25015 +b5ca72d85010432027d10000000000000000 +b5caf2d40000000000000000 + +25016 +613f000000010000000000000469632d73026e6c00001c0001 +613f800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25017 +a11200000001000000000000037777770472757669026e6c0000010001 +a11280000001000000020002037777770472757669026e6c0000010001c01000020001000151800011036e73320a636c75737465726e6574c015c01000020001000151800006036e7331c02dc02900010001000151800004d5f72f3cc046000100010001518000045054edf5 + +25018 +b5ca72d8501843209a9300000090ff40000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe52403c4fd20003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 +b5caf2d40000000000000000 + +25019 +a5480000000100000000000006787334616c6c026e6c00000f0001 +a5488000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +25020 +b5ca72e650114312273e0000000000000000 +b5caf2e40000000000000000 + +25021 +00000000700240006b1b00000204059801010402 +000080010000000000000000 + +25022 +b5ca72e750104312273d0000000000000000 +b5caf2e40000000000000000 + +25023 +b5cb35d550104320a8f20000000000000000 +b5cbb5d40000000000000000 + +25024 +b5cb35d550184320a275000000907880000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe52403c4fd20003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 +b5cbb5d40000000000000000 + +25025 +b5cb35e350114312a85f0000000000000000 +b5cbb5e40000000000000000 + +25026 +b5cb35e450104312a85e0000000000000000 +b5cbb5e40000000000000000 + +25027 +2f98000000010000000000000b636c617373696372656e74026e6c00000f0001 +2f98800000010000000200000b636c617373696372656e74026e6c00000f0001c00c0002000100015180001004646e73350669706461793102626500c00c0002000100015180000d036e733306697064617932c038 + +25028 +b8cb00000001000000000000026e73076e656473746174026e6c0000010001 +b8cb80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25029 +b94b00000001000000000000026e73076e656473746174026e6c00001c0001 +b94b80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25030 +b22300000001000000000000026e73076e656473746174026e6c0000260001 +b22380000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25031 +06e900000001000000000000036e7332076e656473746174026e6c0000010001 +06e980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25032 +3eb900000001000000000000036e7332076e656473746174026e6c00001c0001 +3eb980000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25033 +6b9f00000001000000000000036e7332076e656473746174026e6c0000260001 +6b9f80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25034 +cab100000001000000000000036e7333076e656473746174026e6c0000010001 +cab180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25035 +0fc200000001000000000000036e7333076e656473746174026e6c00001c0001 +0fc280000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25036 +c8d000000001000000000000036e7333076e656473746174026e6c0000260001 +c8d080000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25037 +623800000001000000000000036e7334076e656473746174026e6c0000010001 +623880000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25038 +0d3900000001000000000000036e7334076e656473746174026e6c00001c0001 +0d3980000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25039 +671500000001000000000000036e7334076e656473746174026e6c0000260001 +671580000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25040 +aa9900000001000000000000126a6f6f7374656e626f757773746f6666656e026e6c00000f0001 +aa9980000001000000020002126a6f6f7374656e626f757773746f6666656e026e6c00000f0001c00c0002000100015180000c04646e73310470696e73c01fc00c0002000100015180000704646e7332c038c03300010001000151800004d9c26101c04b00010001000151800004d9c26002 + +25041 +1a7900000001000000000000074d4c424d414c4c026e6c0000020001 +1a7984030001000000010000074d4c424d414c4c026e6c0000020001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +25042 +0e5200000001000000000000046d61696c0b6b61617274656e68756973026e6c0000010001 +0e5280000001000000030003046d61696c0b6b61617274656e68756973026e6c0000010001c01100020001000151800009036e7331027a73c01dc01100020001000151800006036e7332c035c01100020001000151800006036e7333c035c03100010001000151800004d5ef829fc04600010001000151800004d5ef8005c05800010001000151800004d5ef82a0 + +25043 +6a3600000001000000000000036e7332027a73026e6c00001c0001 +6a3680000001000000030003036e7332027a73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02700010001000151800004d5ef829fc00c00010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +25044 +a86500000001000000000000036e7332027a73026e6c0000260001 +a86580000001000000030003036e7332027a73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02700010001000151800004d5ef829fc00c00010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +25045 +d4ae00000001000000000000036e7333027a73026e6c00001c0001 +d4ae80000001000000030003036e7333027a73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02700010001000151800004d5ef829fc03900010001000151800004d5ef8005c00c00010001000151800004d5ef82a0 + +25046 +118600000001000000000000036e7331027a73026e6c00001c0001 +118680000001000000030003036e7331027a73026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef829fc03500010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +25047 +80e200000001000000000000036e7331027a73026e6c0000260001 +80e280000001000000030003036e7331027a73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef829fc03500010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +25048 +24dd000000010000000000000565666e657406787334616c6c026e6c0000010001 +24dd800000010000000300020565666e657406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +25049 +523c00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +523c80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +25050 +35400000000100000000000009652d6c756e61746963026e6c0000010001 +35408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +25051 +eda10000000100000000000008686172746c696562026e6c00000f0001 +eda18000000100000003000308686172746c696562026e6c00000f0001c00c00020001000151800013046e7330310b786c2d696e7465726e6574c015c00c00020001000151800007046e733032c02ec00c00020001000151800007046e733033c02ec0290001000100015180000451045e10c048000100010001518000043eddcf2ec05b00010001000151800004d5540e0e + +25052 +1999000000010000000000000462617261026e6c00000f0001 +1999800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +25053 +8f6d00000001000000000000087a77656567657273026e6c00000f0001 +8f6d80000001000000020000087a77656567657273026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c034 + +25054 +2f09000000010000000000000377777707766f6c64657273026e6c0000010001 +2f09800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25055 +fcfd00000001000000000000036e7331066c616e646973026e6c0000260001 +fcfd80000001000000020001036e7331066c616e646973026e6c0000260001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2b2b6a0 + +25056 +0b990010000100000000000103777777066c7972696373026e6c00000100010000290800000080000000 +0b998000000100000003000403777777066c7972696373026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c017c01000020001000151800006036e7330c02ec01000020001000151800006036e7333c02ec02b00010001000151800004c3561682c04b00010001000151800004c3561683c05d00010001000151800004d5de0bfa0000291000000000000000 + +25057 +3fcb00000001000000000000036961650672656d6f7665026e6c0000ff0001 +3fcb80000001000000020002036961650672656d6f7665026e6c0000ff0001c0100002000100015180000f036e733108696e7465726d6178c017c01000020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +25058 +c28f00000001000000000000036d78310b696e7465727374726f6f6d026e6c0000010001 +c28f80000001000000020002036d78310b696e7465727374726f6f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0300001000100015180000450558121c04200010001000151800004d58141c4 + +25059 +910c000000010000000000000469632d73026e6c00000f0001 +910c800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25060 +f2f100000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +f2f180000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +25061 +02d20000000100000000000006636861726973026e6c0000ff0001 +02d28000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25062 +e4ce0000000100000000000003777777066c7972696373026e6c0000010001 +e4ce8000000100000003000303777777066c7972696373026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c017c01000020001000151800006036e7330c02ec01000020001000151800006036e7333c02ec02b00010001000151800004c3561682c04b00010001000151800004c3561683c05d00010001000151800004d5de0bfa + +25063 +322a0000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +322a8000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +25064 +e5af0000000100000000000004616e73330774697363616c69026e6c0000010001 +e5af8000000100000003000204616e73330774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +25065 +be150000000100000000000003616d6303757661026e6c0000ff0001 +be158000000100000002000203616d6303757661026e6c0000ff0001c0100002000100015180000e086261726c61657573026963c010c01000020001000151800006036e7331c010c0280001000100015180000491124432c0420001000100015180000491122710 + +25066 +38d500000001000000000000026e73076575726f6e6574026e6c0000010001 +38d580000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +25067 +50ad00000001000000000000026e73076575726f6e6574026e6c0000260001 +50ad80000001000000020001026e73076575726f6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +25068 +80cf00000001000000000000036e733203757063026e6c0000010001 +80cf80000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +25069 +ba5900000001000000000000036e733203757063026e6c0000260001 +ba5980000001000000030003036e733203757063026e6c0000260001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +25070 +c73f000000010000000000000e6d777765626372656174696f6e73026e6c0000ff0001 +c73f800000010000000200020e6d777765626372656174696f6e73026e6c0000ff0001c00c0002000100015180000d0a6c656b6b657264696e67c00cc00c0002000100015180000c09626c61636b62697264c00cc02f00010001000151800004d994a332c04800010001000151800004507ed0a6 + +25071 +0aa0000000010000000000000679656c6c6f77026e6c00000f0001 +0aa0800000010000000300010679656c6c6f77026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +25072 +55ae00000001000000000000036e7332076e656473746174026e6c0000010001 +55ae80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25073 +2ad700000001000000000000036e7332076e656473746174026e6c0000260001 +2ad780000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25074 +60c500000001000000000000036e7334076e656473746174026e6c0000010001 +60c580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25075 +653e00000001000000000000036e7334076e656473746174026e6c0000260001 +653e80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25076 +610b00000001000000000000036e7332076e656473746174026e6c0000010001 +610b80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25077 +841c00000001000000000000036e7334076e656473746174026e6c0000010001 +841c80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25078 +420e00000001000000000000036e7332076e656473746174026e6c0000260001 +420e80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25079 +a10700000001000000000000036e7334076e656473746174026e6c0000260001 +a10780000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25080 +1845000000010000000000000377777708726f6f7362657267026e6c0000010001 +1845800000010000000200020377777708726f6f7362657267026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +25081 +8dd100000001000000000000026e730462617274026e6c0000010001 +8dd180000001000000020002026e730462617274026e6c0000010001c00f00020001000151800012036e73310b7669616e6574776f726b73c014c00f00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +25082 +5152000000010000000000000469632d73026e6c00001c0001 +5152800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25083 +82d10000000100000000000008736368656e6b6276026e6c00000f0001 +82d18000000100000002000108736368656e6b6276026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +25084 +088300100001000000000001076e65772d776179026e6c00001c00010000290800000080000000 +088380000001000000020002076e65772d776179026e6c00001c0001c00c0002000100015180000e026e730873797374656d6563c014c00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004c2e5a4020000291000000000000000 + +25085 +e29800000001000000000000024b47024e4c00001c0001 +e29880000001000000020000024b47024e4c00001c0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c027 + +25086 +248900000001000000000000066e61616d6d6f026e6c0000010001 +248980000001000000030002066e61616d6d6f026e6c0000010001c00c0002000100015180000e026e730873797374656d6563c013c00c00020001000151800006036e7333c02ac00c00020001000151800006036e7332c02ac02700010001000151800004c2e5a402c05300010001000151800004c2e5a404 + +25087 +10a9000000010000000000000a5354494e472d46524545026e6c0000020001 +10a9840300010000000100000a5354494e472d46524545026e6c0000020001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +25088 +19a30000000100000000000003746f6e0664756d616e73026e6c0000010001 +19a38000000100000002000003746f6e0664756d616e73026e6c0000010001c01000020001000151800011036e733307657873696c6961036e657400c01000020001000151800006036e7332c02f + +25089 +f55c00000001000000000000037777770a6d65746b6e756666656c026e6c0000010001 +f55c80000001000000020002037777770a6d65746b6e756666656c026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c01bc01000020001000151800006036e7332c033c02f000100010001518000045054ed14c04c00010001000151800004d5f72f14 + +25090 +32b30000000100000000000003777777036b6e6f026e6c0000010001 +32b38000000100000003000203777777036b6e6f026e6c0000010001c0100002000100015180000d036e733106776964657873c014c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +25091 +b903000000010000000000000377777709626d776773636c7562026e6c0000010001 +b903800000010000000200000377777709626d776773636c7562026e6c0000010001c01000020001000151800019036e733710666c6178652d776562686f7374696e6702626500c01000020001000151800006036e7338c032 + +25092 +001c00000001000000000000056669716173026e6c0000ff0001 +001c80000001000000020000056669716173026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +25093 +d11200000001000000000000036d783103626974026e6c0000010001 +d11280000001000000030003036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +25094 +81ba0000000100000000000008747269706f646276026e6c00000f0001 +81ba8000000100000002000008747269706f646276026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c02e + +25095 +7f6f00000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +7f6f80000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +25096 +79f80000000100000000000004616e73310774697363616c69026e6c0000260001 +79f88000000100000003000204616e73310774697363616c69026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +25097 +ed810000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ed818000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25098 +b41e0000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +b41e8000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25099 +35d10000000100000000000006636861726973026e6c00000f0001 +35d18000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25100 +c42a0000000100000000000006776174736f6e0576616e636f026e6c0000010001 +c42a8000000100000002000006776174736f6e0576616e636f026e6c0000010001c01300020001000151800012036e7331086e65746e616d6573036e657400c01300020001000151800006036e7332c031 + +25101 +56f600000001000000000000026e7306766576696461026e6c0000010001 +56f680000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +25102 +106f0000000100000000000004616e73320774697363616c69026e6c0000260001 +106f8000000100000003000204616e73320774697363616c69026e6c0000260001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +25103 +902300000001000000000000076e65772d776179026e6c00001c0001 +902380000001000000020001076e65772d776179026e6c00001c0001c00c0002000100015180000e026e730873797374656d6563c014c00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004c2e5a402 + +25104 +107700000001000000000000037777770963686174676c6f6265026e6c0000010001 +107780000001000000020000037777770963686174676c6f6265026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c032 + +25105 +ab330000000100000000000006787334616c6c026e6c00000f0001 +ab338000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +25106 +248b0000000100000000000003777777086e6c2d706c617a61026e6c0000010001 +248b8000000100000002000003777777086e6c2d706c617a61026e6c0000010001c0100002000100015180000e026e7308696e7465726d6178c019c0100002000100015180000d0670696361726403647376c019 + +25107 +30cc000000010000000000000b6d792d736f756c6d617465026e6c0000ff0001 +30cc800000010000000200000b6d792d736f756c6d617465026e6c0000ff0001c00c00020001000151800011036e733207726f6b73636f6d036e657400c00c00020001000151800006036e7333c030 + +25108 +cc0a00000001000000000000037777770b646f6d65696e706c617a61026e6c0000010001 +cc0a80000001000000020000037777770b646f6d65696e706c617a61026e6c0000010001c0100002000100015180000e026e7308696e7465726d6178c01cc0100002000100015180000d0670696361726403647376c01c + +25109 +f63100000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +f63180000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +25110 +5b1900000001000000000000037777770d72656461637469657374617274026e6c0000010001 +5b1980000001000000030002037777770d72656461637469657374617274026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +25111 +70470000000100000000000006787334616c6c026e6c00001c0001 +70478000000100000003000206787334616c6c026e6c00001c0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +25112 +495c000000010000000000000377777707746d6f6269656c026e6c0000010001 +495c800000010000000200000377777707746d6f6269656c026e6c0000010001c01000020001000151800016036e73320c6c6f76656c6c736e616d6573036f726700c01000020001000151800006036e7333c030 + +25113 +f813000000010000000000000864656c6f69747465026e6c00000f0001 +f813800000010000000300020864656c6f69747465026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000b026e73026e6c036e657400c02900010001000151800004aac21423c03a00010001000151800004aac21424 + +25114 +a1b000000001000000000000085268656e616e6961026e6c0000010001 +a1b080000001000000020001085268656e616e6961026e6c0000010001c00c0002000100015180000d026e7307616e74656e6e61c015c00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02900010001000151800004d995dd13 + +25115 +21ba0000000100000000000006612d6c696e65026e6c00000f0001 +21ba8000000100000002000206612d6c696e65026e6c00000f0001c00c00020001000151800010036e733109756e69736572766572c013c00c00020001000151800006036e7332c02bc02700010001000151800004c3454b03c04300010001000151800004d119a2fa + +25116 +656300000001000000000000036e733109666972737466696e64026e6c0000010001 +656380000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25117 +3c9f0000000100000000000005736d7470320873797374656d6563026e6c0000010001 +3c9f8000000100000003000205736d7470320873797374656d6563026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c01200020001000151800006036e7332c012c02f00010001000151800004c2e5a402c05700010001000151800004c2e5a404 + +25118 +f864000000010000000000000377777709616c62657374656c64026e6c0000010001 +f864800000010000000200020377777709616c62657374656c64026e6c0000010001c0100002000100015180000e036e7331076465636c617265c01ac01000020001000151800006036e7332c032c02e000100010001518000043ed4528dc048000100010001518000045054e9de + +25119 +373f00000001000000000000037777770c6631636f6d70657469746965026e6c0000010001 +373f80000001000000030003037777770c6631636f6d70657469746965026e6c0000010001c0100002000100015180000c036e7331056d61786573c01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c031000100010001518000045045402ec049000100010001518000045045402fc05b000100010001518000045045440a + +25120 +eac900000001000000000000036e733206766576696461026e6c0000010001 +eac980000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +25121 +dc86000000010000000000000469632d73026e6c00000f0001 +dc86800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25122 +c1aa0000000100000000000003777777077669646f6d6573026e6c0000010001 +c1aa8000000100000003000303777777077669646f6d6573026e6c0000010001c0100002000100015180000c026e73067369676e6574c018c01000020001000151800006036e7331c02fc01000020001000151800006036e7332c02fc02c00010001000151800004c3561242c04400010001000151800004d915f142c05600010001000151800004d915f141 + +25123 +01a4000000010000000000000762617661726961026e6c00000f0001 +01a4800000010000000200020762617661726961026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +25124 +f7aa00000001000000000000037777770977616464656e7a6565026e6c0000010001 +f7aa80000001000000030003037777770977616464656e7a6565026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004c1adf9c3c048000100010001518000043e70ec3cc05a00010001000151800004c1ac0bae + +25125 +9a960000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +9a968000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25126 +7edc000000010000000000000773627672696573026e6c00001c0001 +7edc800000010000000300020773627672696573026e6c00001c0001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +25127 +9ed400000001000000000000026e730b6973642d686f6c6c616e64026e6c0000260001 +9ed480000001000000020002026e730b6973642d686f6c6c616e64026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +25128 +cf6a00000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000260001 +cf6a80000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +25129 +e96a000000010000000000000377777707616c6c6173736f026e6c0000010001 +e96a800000010000000200020377777707616c6c6173736f026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c018c01000020001000151800006036e7332c02fc02c00010001000151800004d453c005c04a00010001000151800004d453c006 + +25130 +20b700000001000000000000037777770a656d657373656e676572026e6c0000010001 +20b784030001000000010000037777770a656d657373656e676572026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +25131 +fa820000000100000000000003777777056b616d7066026e6c0000010001 +fa828000000100000002000003777777056b616d7066026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02e + +25132 +ce7d000000010000000000000377777703616b670473697465026e6c0000010001 +ce7d800000010000000300010377777703616b670473697465026e6c0000010001c0140002000100015180000d026e7307696e746f756368c019c01400020001000151800010026e7307696e746f756368036e657400c01400020001000151800007046e733031c049c02d00010001000151800004d413c001 + +25133 +05bb000000010000000000000b72656c617877696a7a6572026e6c0000010001 +05bb800000010000000200010b72656c617877696a7a6572026e6c0000010001c00c0002000100015180000c036e7331056b706e6873c018c00c0002000100015180000d03646e73036b706e03636f6d00c02c0001000100015180000491072163 + +25134 +f41e000000010000000000000469632d73026e6c0000ff0001 +f41e800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25135 +1ff9000000010000000000000a636f6d2d6d756e697479026e6c0000010001 +1ff9800000010000000200020a636f6d2d6d756e697479026e6c0000010001c00c0002000100015180000a036e7331036e7873c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +25136 +93b40000000100000000000008686f76656c696e67026e6c0000010001 +93b48000000100000002000208686f76656c696e67026e6c0000010001c00c0002000100015180000e036e733207737570706f7274c015c00c00020001000151800006036e7334c02dc02900010001000151800004c372e7c8c04300010001000151800004c372e6fe + +25137 +583f000000010000000000000377777705692d6d6564026e6c0000010001 +583f800000010000000300020377777705692d6d6564026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c016c01000020001000151800006036e7332c02ec01000020001000151800012036e7333086c65617365776562036f726700c02a000100010001518000043ed44079c045000100010001518000043ed4407a + +25138 +de3400100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +de3480000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +25139 +6f1a00100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +6f1a80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +25140 +95ba0000000100000000000010436f6c696e612d526f7474657264616d026e6c00000f0001 +95ba8000000100000002000010436f6c696e612d526f7474657264616d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c035 + +25141 +271e000000010000000000000377777707766f6c64657273026e6c0000010001 +271e800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25142 +fccd00100001000000000001026e7303786f73026e6c00000100010000290800000080000000 +fccd80000001000000020002026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe20000291000000000000000 + +25143 +fbe80000000100000000000004686f6d650774697363616c69026e6c0000010001 +fbe88000000100000003000204686f6d650774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +25144 +34f300000001000000000000037777770b7761726e65726d75736963026e6c0000010001 +34f380000001000000030000037777770b7761726e65726d75736963026e6c0000010001c0100002000100015180001205646e73303106776d672d697303636f6d00c0100002000100015180000805646e733032c036c0100002000100015180000805646e733033c036 + +25145 +db52000000010000000000000a696e7465726472617065026e6c00001c0001 +db52800000010000000200020a696e7465726472617065026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +25146 +fb2400000001000000000000086d6c616e73696e6b0564656d6f6e026e6c0000ff0001 +fb2480000001000000030002086d6c616e73696e6b0564656d6f6e026e6c0000ff0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +25147 +33220010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +33228000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +25148 +037f00000001000000000000037777770e64657369676e2d636f6d70616e79026e6c0000010001 +037f80000001000000020002037777770e64657369676e2d636f6d70616e79026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +25149 +7bbf00000001000000000000026e6c036b6e6d026e6c0000010001 +7bbf80000001000000020002026e6c036b6e6d026e6c0000010001c00f00020001000151800009026e730369736dc013c00f00020001000151800006036e7332c02ac02700010001000151800004d994ab02c03c00010001000151800004d994ab03 + +25150 +8551000000010000000000000977656276697a696f6e026e6c0000010001 +8551800000010000000200020977656276697a696f6e026e6c0000010001c00c00020001000151800012026e730c696e746572636f6e6e656374c016c00c00020001000151800006036e7332c02dc02a00010001000151800004d453c005c04800010001000151800004d453c006 + +25151 +e9e50000000100000000000003696d6708796f75727a696e65026e6c0000010001 +e9e58000000100000002000203696d6708796f75727a696e65026e6c0000010001c0100002000100015180000e036e7331076c656374726963c019c01000020001000151800006036e7332c031c02d00010001000151800004c297a082c04700010001000151800004c297a083 + +25152 +b78d00000001000000000000036e7333076e656473746174026e6c0000010001 +b78d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25153 +79250000000100000000000003696d6708796f75727a696e65026e6c0000010001 +79258000000100000002000203696d6708796f75727a696e65026e6c0000010001c0100002000100015180000e036e7331076c656374726963c019c01000020001000151800006036e7332c031c02d00010001000151800004c297a082c04700010001000151800004c297a083 + +25154 +5f800000000100000000000003696d6708796f75727a696e65026e6c0000010001 +5f808000000100000002000203696d6708796f75727a696e65026e6c0000010001c0100002000100015180000e036e7331076c656374726963c019c01000020001000151800006036e7332c031c02d00010001000151800004c297a082c04700010001000151800004c297a083 + +25155 +a8f200000001000000000000037777770868767a726f64656e026e6c0000010001 +a8f280000001000000030001037777770868767a726f64656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +25156 +dcee00000001000000000000037777770c636f6e736f6c696461746564026e6c0000010001 +dcee80000001000000020001037777770c636f6e736f6c696461746564026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c01dc04a00010001000151800004c2860043 + +25157 +adc400000001000000000000026e73076e656473746174026e6c0000010001 +adc480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25158 +82110000000100000000000003626276026e6c00000f0001 +82118000000100000002000203626276026e6c00000f0001c00c0002000100015180000d026e7307656368656c6f6ec010c00c00020001000151800006036e7378c027c02400010001000151800004d977e179c03d00010001000151800004d4ccd10c + +25159 +98180000000100000000000003706f700c6361626c6577616e61646f6f026e6c0000010001 +98188000000100000002000103706f700c6361626c6577616e61646f6f026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c01dc04a00010001000151800004c2860043 + +25160 +144a0000000100000000000006636861726973026e6c00000f0001 +144a8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25161 +c44d0000000100000000000004777061640661646d696661026e6c0000010001 +c44d8000000100000003000304777061640661646d696661026e6c0000010001c0110002000100015180000e076e73617574683103626974c018c0110002000100015180000a076e736175746832c034c0110002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +25162 +42bb00000001000000000000026e73076575726f6e6574026e6c0000010001 +42bb80000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +25163 +907900000001000000000000026e73076575726f6e6574026e6c0000260001 +907980000001000000020001026e73076575726f6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +25164 +064400000001000000000000036b7061026e6c00000f0001 +064480000001000000020002036b7061026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +25165 +4238000000010000000000000163026e6c00000f0001 +4238840300010000000100000163026e6c00000f0001c00e00060001000038400036026e730f646f6d61696e2d7265676973747279c00e0a686f73746d6173746572c0250bf1e540000070800000384000278d0000003840 + +25166 +803100000001000000000000037777770767756d74726565026e6c0000010001 +803180000001000000020002037777770767756d74726565026e6c0000010001c0100002000100015180000f026e7309656174736572766572c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +25167 +3c1a00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001 +3c1a84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001c04c00060001000038400036026e730f646f6d61696e2d7265676973747279c04c0a686f73746d6173746572c0630bf1e540000070800000384000278d0000003840 + +25168 +4ddb00000001000000000000026e7303786f73026e6c0000010001 +4ddb80000001000000020001026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe2 + +25169 +a95f000000010000000000000377777705626976616b026e6c0000010001 +a95f800000010000000300030377777705626976616b026e6c0000010001c0100002000100015180000e076e73617574683103626974c016c0100002000100015180000a076e736175746832c032c0100002000100015180000a076e736175746833c032c02a00010001000151800004d5880c33c04400010001000151800004d5880c3bc05a00010001000151800004d4ccc00b + +25170 +6f1e000000010000000000000867696c64656e6572026e6c00000f0001 +6f1e800000010000000200000867696c64656e6572026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +25171 +989300000001000000000000037777770b707572706c65686f757365026e6c0000010001 +989380000001000000020002037777770b707572706c65686f757365026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +25172 +7c9f00000001000000000000036368720463687269026e6c0000010001 +7c9f80000001000000020002036368720463687269026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c015c01000020001000151800006036e7332c02cc02900010001000151800004d453c005c04700010001000151800004d453c006 + +25173 +c7f90000000100000000000004636872320463687269026e6c0000010001 +c7f98000000100000002000204636872320463687269026e6c0000010001c01100020001000151800012026e730c696e746572636f6e6e656374c016c01100020001000151800006036e7332c02dc02a00010001000151800004d453c005c04800010001000151800004d453c006 + +25174 +f49700000001000000000000036e7332036e7873026e6c0000010001 +f49780000001000000020002036e7332036e7873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d973c015c00c00010001000151800004d973c102 + +25175 +da3b0000000100000000000003777777096c6565667374696a6c026e6c0000010001 +da3b8000000100000003000303777777096c6565667374696a6c026e6c0000010001c01000020001000151800011036e73310a74727565736572766572c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ef8003c04b00010001000151800004d5efb004c05d00010001000151800004d5ef8005 + +25176 +f54d00000001000000000000086b65797072657373026e6c0000ff0001 +f54d80000001000000020002086b65797072657373026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +25177 +56b800000001000000000000037777770763616e69646165026e6c0000010001 +56b880000001000000030002037777770763616e69646165026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +25178 +97160000000100000000000004646e733208636f6e6365707473026e6c0000010001 +97168000000100000002000204646e733208636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac01100020001000151800002c00cc02e00010001000151800004d5c51c03c00c00010001000151800004d5c51e1c + +25179 +4b8b0000000100000000000004646e733208636f6e6365707473026e6c0000260001 +4b8b8000000100000002000204646e733208636f6e6365707473026e6c0000260001c0110002000100015180001103646e730a636f6e63657074736661c01ac01100020001000151800002c00cc02e00010001000151800004d5c51c03c00c00010001000151800004d5c51e1c + +25180 +fac900000001000000000001036e733107737572666e6574026e6c00000100010000291000000000000000 +fac980000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +25181 +77fe000000010000000000000462617261026e6c0000ff0001 +77fe800000010000000200020462617261026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +25182 +1ea500000001000000000000046d61696c06767668776562026e6c0000010001 +1ea580000001000000020000046d61696c06767668776562026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c02f + +25183 +2750000000010000000000000566696c746808767575727765726b026e6c0000010001 +2750800000010000000300010566696c746808767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +25184 +5d57000000010000000000000377777713676f65646b6f70656c6173746d696e75746573026e6c0000010001 +5d57800000010000000200020377777713676f65646b6f70656c6173746d696e75746573026e6c0000010001c0100002000100015180001a036e733113736d616c6c686f6c642d686f7374696e672d35c024c01000020001000151800006036e7332c03cc03800010001000151800004d5f72ea0c05e00010001000151800004d5f72ea1 + +25185 +922000000001000000000000026e7308767575727765726b026e6c00001c0001 +922080000001000000030001026e7308767575727765726b026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +25186 +b2cb000000010000000000000566696c746808767575727765726b026e6c0000010001 +b2cb800000010000000300010566696c746808767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +25187 +6e4600000001000000000000036e733503777873026e6c0000010001 +6e4680000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25188 +671e000000010000000000000d726f6e616c642d6f6e6c696e65026e6c0000010001 +671e800000010000000200020d726f6e616c642d6f6e6c696e65026e6c0000010001c00c0002000100015180000c04646e73310471776562c01ac00c0002000100015180000704646e7332c033c02e00010001000151800004d994ac0cc04600010001000151800004d5c42f6c + +25189 +0c07000000010000000000000b706861726d6173636f7065026e6c00000f0001 +0c07800000010000000200020b706861726d6173636f7065026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +25190 +cc8c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cc8c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25191 +260b000000010000000000000377777703677064026e6c0000010001 +260b800000010000000200020377777703677064026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c014c01000020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +25192 +a4c600000001000000000000036d783107626265796f6e64026e6c0000010001 +a4c680000001000000020002036d783107626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043eb1900bc03e000100010001518000043eb19002 + +25193 +2f8e00000001000000000000036d783107626265796f6e64026e6c00001c0001 +2f8e80000001000000020002036d783107626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043eb1900bc03e000100010001518000043eb19002 + +25194 +f9f20000000100000000000006706c756b6f6e026e6c0000010001 +f9f28000000100000002000006706c756b6f6e026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +25195 +969c00000001000000000000037777770b77756c66696e67686f6666026e6c0000010001 +969c80000001000000020000037777770b77756c66696e67686f6666026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c033 + +25196 +fac900000001000000000000036e733107737572666e6574026e6c0000010001 +fac980000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +25197 +2e2d0100000100000000000008736179616e6f7261056d62757975026e6c0000010001 +2e2d8100000100000002000008736179616e6f7261056d62757975026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c032 + +25198 +437c0000000100000000000006646576616c6b026e6c0000010001 +437c8000000100000003000206646576616c6b026e6c0000010001c00c0002000100015180000f036e73310870726f7365727665c013c00c00020001000151800012036e73320970726f2d736572766502626500c00c00020001000151800006036e7333c02bc027000100010001518000045054e055c06000010001000151800004d4ccc655 + +25199 +cfbd00000001000000000000086a616d696e6c6579066e7434616c6c026e6c0000010001 +cfbd80000001000000020002086a616d696e6c6579066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +25200 +fee8000000010000000000000c70726f6d696e656e74696e6e026e6c00000f0001 +fee8800000010000000200000c70726f6d696e656e74696e6e026e6c00000f0001c00c00020001000151800011036e733107726f6b73636f6d036e657400c00c0002000100015180000e036e733207726f6b73636f6dc019 + +25201 +8ca800000001000000000000036e7331066d696e646566026e6c0000010001 +8ca880000001000000020002036e7331066d696e646566026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9a9e7c6c03900010001000151800004d9a9e7c5 + +25202 +8f6600000001000000000000036e7332066d696e646566026e6c0000010001 +8f6680000001000000020002036e7332066d696e646566026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d9a9e7c6c00c00010001000151800004d9a9e7c5 + +25203 +0fa800000001000000000000036e73340767617574656e67026e6c0000010001 +0fa880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25204 +6ddf00000001000000000000036e733407737570706f7274026e6c0000010001 +6ddf80000001000000020002036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +25205 +412d28000001000000010000026e6c0000060001095f6b65726265726f73045f74637009636f726e776f726c64026e6c000021000100000258001b00000064005806746f746f726f09636f726e776f726c64026e6c00 +412da8040000000000000000 + +25206 +05cb28000001000200000000026e6c00000600010857524b53544e30360b686f74656c616c6d656c6f026e6c00000500fe000000000000c01400010001000000000004c0a877c0 +05cba8040000000000000000 + +25207 +5a4700100001000000000001076f6c697669657202706b03776175026e6c00001c00010000290800000000000000 +5a4780000001000000020003076f6c697669657202706b03776175026e6c00001c0001c0170002000100015180000a036e733103777572c01bc01700020001000151800006036e7332c033c02f0001000100015180000489e0f88dc0450001000100015180000489e0f88e0000291000000000000000 + +25208 +9c1300000001000000000000046e73303903777873026e6c0000260001 +9c1380000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25209 +ade000000001000000000000046e73303803777873026e6c00001c0001 +ade080000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25210 +b6aa00000001000000000000036e733503777873026e6c0000260001 +b6aa80000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25211 +ea8100000001000000000000046e73303803777873026e6c0000260001 +ea8180000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25212 +d45a00000001000000000000046e73303903777873026e6c00001c0001 +d45a80000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25213 +2e8e00000001000000000000036e733503777873026e6c00001c0001 +2e8e80000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25214 +702e00000001000000000000037777770c6b6f6f7065656e6669657473026e6c0000010001 +702e80000001000000030003037777770c6b6f6f7065656e6669657473026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01dc0100002000100015180000e0b6e616d6573657276657232c03dc0100002000100015180000e0b6e616d6573657276657233c03dc0310001000100015180000451ad2020c0550001000100015180000451ad2021c06f0001000100015180000452c049aa + +25215 +6d750000000100000000000008686f73746e616d650462696e640000100003 +6d758000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25216 +28c0000000010000000000000566696c746808767575727765726b026e6c0000010001 +28c0800000010000000300010566696c746808767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +25217 +4e700000000100000000000003777777086c65747373746174026e6c0000010001 +4e708000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +25218 +000000007002faf0362600000204057801010402 +000080010000000000000000 + +25219 +0b5300000001000000000000037777770a737061617262656c6567026e6c0000010001 +0b5380000001000000020000037777770a737061617262656c6567026e6c0000010001c01000020001000151800015026e730d646f6d61696e6e6574776f726b02736500c01000020001000151800006036e7332c032 + +25220 +dec4000000010000000000000d67656f2d6c6f67697374696373026e6c0000ff0001 +dec4800000010000000200020d67656f2d6c6f67697374696373026e6c0000ff0001c00c0002000100015180000c036e73310563736e6574c01ac00c00020001000151800006036e7332c032c02e00010001000151800004c2451012c04600010001000151800004c2451212 + +25221 +3732000000010000000000000377777707766f6c64657273026e6c0000010001 +3732800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25222 +b5cf40235010fb906c0b0000000000000000 +b5cfc0240000000000000000 + +25223 +0000000070024000671b0000020405b401010402 +000080010000000000000000 + +25224 +b5cf40235018fb90fce000000090c500000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afcd1403c4e510003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000057524b53544e3036484f54454c414c4d454c4f0000 +b5cfc0240000000000000000 + +25225 +83a1000000010000000000000e616c6d6572652d62657374757572026e6c0000ff0001 +83a1800000010000000200010e616c6d6572652d62657374757572026e6c0000ff0001c00c0002000100015180000b036e73330473617261c01bc00c00020001000151800006036e7332c033c046000100010001518000049164052f + +25226 +b5d0233950104470b6550000000000000000 +b5d0a3330000000000000000 + +25227 +3d5e00000001000000000000037777770c6d656573746572646f72757308697364656e61616d026e6c0000010001 +3d5e80000001000000020000037777770c6d656573746572646f72757308697364656e61616d026e6c0000010001c01d00020001000151800013036e733009696e7465726c697a65036e657400c01d00020001000151800006036e7331c03e + +25228 +b5d023395018447066590000008e2a0f000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcd0403c4e5000030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 +b5d0a3330000000000000000 + +25229 +b5cf40315011fb826b780000000000000000 +b5cfc0340000000000000000 + +25230 +088700000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +088780000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +25231 +000000007002faf08db400000204057801010402 +000080010000000000000000 + +25232 +b5d0234750114462b5c40000000000000000 +b5d0a3430000000000000000 + +25233 +b5cf40325010fb826b770000000000000000 +b5cfc0340000000000000000 + +25234 +b5d0234850104462b5c30000000000000000 +b5d0a3430000000000000000 + +25235 +b5d0e1385010fb9022830000000000000000 + + +25236 +5aa400100001000000000001036e7331096e65646572686f7374026e6c00000100010000290800000000000000 +5aa480000001000000020003036e7331096e65646572686f7374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9302c03c00010001000151800004d5efb2410000291000000000000000 + +25237 +ad5200100001000000000001036e7331096e65646572686f7374026e6c00002600010000290800000000000000 +ad5280000001000000020003036e7331096e65646572686f7374026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9302c03c00010001000151800004d5efb2410000291000000000000000 + +25238 +56a900100001000000000001036e7332096e65646572686f7374026e6c00000100010000290800000000000000 +56a980000001000000020003036e7332096e65646572686f7374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9302c00c00010001000151800004d5efb2410000291000000000000000 + +25239 +152b00100001000000000001036e7332096e65646572686f7374026e6c00002600010000290800000000000000 +152b80000001000000020003036e7332096e65646572686f7374026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9302c00c00010001000151800004d5efb2410000291000000000000000 + +25240 +de9d00000001000000000000036e73320763697374726f6e026e6c0000010001 +de9d80000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +25241 +f6d400000001000000000000036e73320763697374726f6e026e6c0000260001 +f6d480000001000000020002036e73320763697374726f6e026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +25242 +b5d0e1385018fb908a5800000090f000000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afcd1403c4e510003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000057524b53544e3036484f54454c414c4d454c4f0000 + + +25243 +774e00000001000000000000037777770a70617274797669626573026e6c0000010001 +774e80000001000000020002037777770a70617274797669626573026e6c0000010001c0100002000100015180000a036e733103706777c01bc01000020001000151800006036e7332c033c02f000100010001518000043e818832c04500010001000151800004d4ccc621 + +25244 +f6c500100001000000000001036e733208767575727765726b026e6c00000100010000290800000000000000 +f6c580000001000000030002036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa02020000291000000000000000 + +25245 +0000000070024000dff20000020405b401010402 +000080010000000000000000 + +25246 +b5d0e1465011fb8221f00000000000000000 + + +25247 +455800000001000000000000036e7331096e65646572686f7374026e6c0000010001 +455880000001000000020002036e7331096e65646572686f7374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9302c03c00010001000151800004d5efb241 + +25248 +d13900000001000000000000036e7331096e65646572686f7374026e6c0000260001 +d13980000001000000020002036e7331096e65646572686f7374026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9302c03c00010001000151800004d5efb241 + +25249 +fc1200000001000000000000036e7332096e65646572686f7374026e6c0000010001 +fc1280000001000000020002036e7332096e65646572686f7374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9302c00c00010001000151800004d5efb241 + +25250 +ff0a00000001000000000000036e7332096e65646572686f7374026e6c0000260001 +ff0a80000001000000020002036e7332096e65646572686f7374026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9302c00c00010001000151800004d5efb241 + +25251 +cc2900000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +cc2980000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +25252 +000000007002faf0310300000204057801010402 +000080010000000000000000 + +25253 +0f5f000000010000000000000661736f706f73026e6c0000ff0001 +0f5f800000010000000200000661736f706f73026e6c0000ff0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +25254 +410300000001000000000000046875736b026e6c0000010001 +410380000001000000020002046875736b026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c011c00c00020001000151800006036e7332c028c02500010001000151800004d9aa2042c03e00010001000151800004d9aa2c06 + +25255 +0b6800000001000000000000076f6c697669657202706b03776175026e6c00001c0001 +0b6880000001000000020002076f6c697669657202706b03776175026e6c00001c0001c0170002000100015180000a036e733103777572c01bc01700020001000151800006036e7332c033c02f0001000100015180000489e0f88dc0450001000100015180000489e0f88e + +25256 +b5d188c150104470c9a30000000000000000 + + +25257 +b5d0e1475010fb8221ef0000000000000000 + + +25258 +b27000100001000000000001036e733207737570706f7274026e6c00000100010000290800000080000000 +b27080000001000000020003036e733207737570706f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004c372e7c8c03a00010001000151800004c372e6fe0000291000000000000000 + +25259 +b5d188c1501844701fee0000008e84c9000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcd0403c4e5000030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +25260 +0f61000000010000000000000a77616368656e6865696d026e6c00000f0001 +0f61800000010000000200020a77616368656e6865696d026e6c00000f0001c00c0002000100015180000f036e73310863616d627269756dc017c00c00020001000151800006036e7332c02fc02b00010001000151800004d9131082c04600010001000151800004d5efb202 + +25261 +6cf300100001000000000001036e733407737570706f7274026e6c00000100010000290800000080000000 +6cf380000001000000020003036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe0000291000000000000000 + +25262 +b5d2225d5010fb9084ab0000000000000000 +b5d2a2530000000000000000 + +25263 +37a30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +37a38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25264 +78110000000100000000000007746573742d61640e6b6168756e612d746573744c4142026e6c0000060001 +78118403000100000001000007746573742d61640e6b6168756e612d746573744c4142026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +25265 +b4745fb5501144625f360000000000000000 +b474dfb40000000000000000 + +25266 +b5d2225d5018fb909e01000000903e80000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afcd1403c4e510003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000057524b53544e3036484f54454c414c4d454c4f0000 +b5d2a2530000000000000000 + +25267 +b5d188cf50114462c9120000000000000000 + + +25268 +54620000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +54628000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25269 +b5d188d050104462c9110000000000000000 + + +25270 +e371000000010000000000000e72656365707476616e646564616706706167696e61026e6c0000010001 +e371800000010000000300030e72656365707476616e646564616706706167696e61026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc01b00020001000151800006036e7333c01bc036000100010001518000043e45a282c048000100010001518000043e45a283c05a000100010001518000043e45a284 + +25271 +98cf00000001000000000000036e733208767575727765726b026e6c0000010001 +98cf80000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +25272 +b5d2226b5011fb8284180000000000000000 +b5d2a2630000000000000000 + +25273 +0eb400000001000000000000036e733208696e74726f776562026e6c0000010001 +0eb480000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +25274 +037c00000001000000000000036e733108696e74726f776562026e6c0000010001 +037c80000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +25275 +0e500000000100000000000008696e74726f776562026e6c00000f0001 +0e508000000100000002000208696e74726f776562026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc0290001000100015180000450416028c03b00010001000151800004c356780c + +25276 +399e00000001000000000000026e7303746478026e6c0000010001 +399e80000001000000020002026e7303746478026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c389d60ac03500010001000151800004c389d70a + +25277 +0e2300000001000000000000026e7303746478026e6c0000260001 +0e2380000001000000020002026e7303746478026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c389d60ac03500010001000151800004c389d70a + +25278 +e73000000001000000000000036e733103746478026e6c0000010001 +e73080000001000000020002036e733103746478026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004c389d60ac00c00010001000151800004c389d70a + +25279 +e2f7000000010000000000000673696d706c79026e6c00000f0001 +e2f7800000010000000300000673696d706c79026e6c00000f0001c00c00020001000151800016026e730b73696d706c796e616d657302636f02756b00c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02a + +25280 +f9e900000001000000000000036e733103746478026e6c0000260001 +f9e980000001000000020002036e733103746478026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004c389d60ac00c00010001000151800004c389d70a + +25281 +246000000001000000000000036d783106787334616c6c026e6c0000010001 +246080000001000000030002036d783106787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +25282 +083a000000010000000000000469632d73026e6c0000010001 +083a800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25283 +025c0000000100000000000003777777086e2d766973696f6e026e6c0000010001 +025c8000000100000003000003777777086e2d766973696f6e026e6c0000010001c01000020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +25284 +e2d20000000100000000000003777777086475696b7370756c026e6c0000010001 +e2d28000000100000002000003777777086475696b7370756c026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c031 + +25285 +b5d2226c5010fb8284170000000000000000 +b5d2a2630000000000000000 + +25286 +0000000070024000ad730000020405b401010402 +000080010000000000000000 + +25287 +98d000000001000000000000037777770b706f726e74726166666963026e6c0000010001 +98d080000001000000020000037777770b706f726e74726166666963026e6c0000010001c01000020001000151800019026e73106575726f6d656469617472616666696303636f6d00c01000020001000151800006036e7332c033 + +25288 +b5d3163f5010447009a50000000000000000 +b5d396340000000000000000 + +25289 +a8f700000001000000000000036e733209666972737466696e64026e6c0000010001 +a8f780000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25290 +b4745fb6501044625f350000000000000000 +b474dfb40000000000000000 + +25291 +bf0700000001000000000000036e733109666972737466696e64026e6c0000010001 +bf0780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25292 +b5d3163f5018447005350000008edf83000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcd0403c4e5000030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 +b5d396340000000000000000 + +25293 +83c70000000100000000000009656c616e776f6e656e026e6c0000010001 +83c78000000100000002000009656c616e776f6e656e026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c030 + +25294 +b5d3164d5011446209140000000000000000 +b5d396440000000000000000 + +25295 +be1400000001000000000000066a657276656e066e7434616c6c026e6c0000010001 +be1480000001000000020002066a657276656e066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +25296 +944f00000001000000000000037777770c74656c65646973636f756e74026e6c0000010001 +944f80000001000000020002037777770c74656c65646973636f756e74026e6c0000010001c0100002000100015180000c026e7306636f6d6e6574c01dc01000020001000151800006036e7332c034c03100010001000151800004d46c106ec04900010001000151800004d46c1078 + +25297 +b5d3164e5010446209130000000000000000 +b5d396440000000000000000 + +25298 +dc0e000000010000000000000469632d73026e6c0000ff0001 +dc0e800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25299 +d99d00000001000000000000037777770f6163687465726e61616d2d70756e74026e6c0000010001 +d99d84030001000000010000037777770f6163687465726e61616d2d70756e74026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +25300 +828c00000001000000000000097061696e6669656c64026e6c00000f0001 +828c80000001000000030001097061696e6669656c64026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +25301 +7b840000000100000000000006636861726973026e6c0000010001 +7b848000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25302 +b09b00000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +b09b80000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +25303 +13f6000000010000000000001664696572656e61727473656e6f697374657277696a6b026e6c00000f0001c0 +13f6800000010000000200001664696572656e61727473656e6f697374657277696a6b026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c03d + +25304 +2b94000000010000000000000864796e6162797465026e6c0000010001 +2b94800000010000000200000864796e6162797465026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +25305 +134000000001000000000000026e73076e656473746174026e6c0000010001 +134080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25306 +668200000001000000000000066b6c6a303031076b6c6a626f7577026e6c0000060001 +668284030001000000010000066b6c6a303031076b6c6a626f7577026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +25307 +e2fb00000001000000000000036e7332057075786965026e6c0000010001 +e2fb80000001000000020002036e7332057075786965026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d4363014c00c00010001000151800004d4363015 + +25308 +15ab00000001000000000000036e7331057075786965026e6c0000260001 +15ab80000001000000020002036e7331057075786965026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4363014c03800010001000151800004d4363015 + +25309 +547800000001000000000000036e7331057075786965026e6c0000010001 +547880000001000000020002036e7331057075786965026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4363014c03800010001000151800004d4363015 + +25310 +bdb100000001000000000000036e7332057075786965026e6c00001c0001 +bdb180000001000000020002036e7332057075786965026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d4363014c00c00010001000151800004d4363015 + +25311 +d89c00000001000000000000036e7331057075786965026e6c00001c0001 +d89c80000001000000020002036e7331057075786965026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4363014c03800010001000151800004d4363015 + +25312 +14fb00000001000000000000036e7332057075786965026e6c0000260001 +14fb80000001000000020002036e7332057075786965026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d4363014c00c00010001000151800004d4363015 + +25313 +7ce7000000010000000000000776656e73746572026e6c00000f0001 +7ce7800000010000000300020776656e73746572026e6c00000f0001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +25314 +094400000001000000000000037777770974656d706f7465616d026e6c0000010001 +094480000001000000030000037777770974656d706f7465616d026e6c0000010001c0100002000100015180001c09646e733030303030310367656e0872616e647374616403636f6d00c0100002000100015180000c09646e73303030303032c038c0100002000100015180000d036e7332036b706e036e657400 + +25315 +13560000000100000000000002616404696c7365026e6c0000010001 +13568000000100000003000302616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +25316 +4a3900000001000000000000026e73036d6c63026e6c0000010001 +4a3980000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +25317 +1b590000000100000000000006636f6f6b696504696c7365026e6c0000010001 +1b598000000100000003000306636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +25318 +34bb0000000100000000000008616473657276657206776562616473026e6c0000010001 +34bb8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +25319 +60fd00000001000000000000086d656469616c6162026e6c00000f0001 +60fd80000001000000020001086d656469616c6162026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02900010001000151800004c1ad4e02 + +25320 +81fd00000001000000000000036e7331046372696f026e6c0000010001 +81fd80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +25321 +f98400000001000000000000036e7332046372696f026e6c0000010001 +f98480000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +25322 +e756000000010000000000000377777707746d6f6269656c026e6c0000010001 +e756800000010000000200000377777707746d6f6269656c026e6c0000010001c01000020001000151800016036e73320c6c6f76656c6c736e616d6573036f726700c01000020001000151800006036e7333c030 + +25323 +f34300000001000000000000034e53320743495354524f4e024e4c0000010001 +f34380000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +25324 +fd5800000001000000000000026e7308767575727765726b026e6c0000010001 +fd5880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +25325 +a58b0000000100000000000003777777047765726b026e6c0000010001 +a58b8000000100000002000103777777047765726b026e6c0000010001c0100002000100015180000b026e7305617262766fc015c0100002000100015180000d036e7332036b706e036e657400c02900010001000151800004c2971702 + +25326 +fd21000000010000000000000377777703626973026e6c0000010001 +fd21800000010000000200000377777703626973026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02c + +25327 +358c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +358c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25328 +5ef000000001000000000000026e7305617262766f026e6c0000010001 +5ef080000001000000020001026e7305617262766f026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2971702 + +25329 +66540000000100000000000003777777046d672d72026e6c0000010001 +66548000000100000002000003777777046d672d72026e6c0000010001c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7334c02d + +25330 +875f000000010000000000000b626c65656b6572626f7577026e6c00000f0001 +875f800000010000000200000b626c65656b6572626f7577026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c018c00c0002000100015180000704686e7331c031 + +25331 +75d900000001000000000000037777770b66756e6e696563616d6573026e6c0000010001 +75d984030001000000010000037777770b66756e6e696563616d6573026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +25332 +56050000000100000000000005646e732d31056c61646f74026e6c0000010001 +56058000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25333 +ccd90000000100000000000005646e732d32056c61646f74026e6c0000010001 +ccd98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25334 +339000000001000000000000036e733107737572666e6574026e6c0000010001 +339080000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +25335 +dd8100000001000000000000036e747006787334616c6c026e6c0000010001 +dd8180000001000000030002036e747006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +25336 +2037001000010000000000010673756e646e7303697373026e6c00000100010000290800000080000000 +2037800000010000000200030673756e646e7303697373026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c00c00010001000151800004c057a002c03900010001000151800004c0576a650000291000000000000000 + +25337 +c6e200000001000000000000037777770668656964616b026e6c0000010001 +c6e280000001000000020000037777770668656964616b026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02e + +25338 +fd5d00000001000000000000046d61696c0b626c65656b6572626f7577026e6c0000010001 +fd5d80000001000000020000046d61696c0b626c65656b6572626f7577026e6c0000010001c0110002000100015180000f04686e73300774697363616c69c01dc0110002000100015180000704686e7331c036 + +25339 +8df500000001000000000000036e733207737570706f7274026e6c0000010001 +8df580000001000000020002036e733207737570706f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004c372e7c8c03a00010001000151800004c372e6fe + +25340 +dba900000001000000000000036e733407737570706f7274026e6c0000010001 +dba980000001000000020002036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +25341 +753d000000010000000000000676696e646578026e6c0000010001 +753d800000010000000300030676696e646578026e6c0000010001c00c0002000100015180000b036e733104696c7365c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc027000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +25342 +1ee80000000100000000000003706f700677696a6e656e026e6c0000010001 +1ee88000000100000003000003706f700677696a6e656e026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c030c01000020001000151800007046e733033c030 + +25343 +02200000000100000000000003777777076c756e61746963026e6c0000010001 +02208000000100000003000103777777076c756e61746963026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +25344 +8b110000000100000000000003777777076f756468656964026e6c0000010001 +8b118000000100000002000003777777076f756468656964026e6c0000010001c01000020001000151800014026e730b7369746570726f7465637403636f6d00c01000020001000151800006036e7332c02f + +25345 +8cda00000001000000000000026e7307696e746f756368026e6c0000010001 +8cda80000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +25346 +259d00000001000000000000037777770f686161726c656d73646167626c6164026e6c0000010001 +259d80000001000000030003037777770f686161726c656d73646167626c6164026e6c0000010001c0100002000100015180000e076e73617574683103626974c020c0100002000100015180000a076e736175746832c03cc0100002000100015180000a076e736175746833c03cc03400010001000151800004d5880c33c04e00010001000151800004d5880c3bc06400010001000151800004d4ccc00b + +25347 +6619000000010000000000000b646972656374776f6e656e026e6c0000010001 +6619800000010000000200000b646972656374776f6e656e026e6c0000010001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec033 + +25348 +e2af00000001000000000000026e73036d6c63026e6c00001c0001 +e2af80000001000000030003026e73036d6c63026e6c00001c0001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +25349 +ad3c000000010000000000000377777706636974726978026e6c0000010001 +ad3c800000010000000300000377777706636974726978026e6c0000010001c01000020001000151800011026e730663697472697802636f02756b00c01000020001000151800012047365633103646e73067073696e6574c017c010000200010001518000070473656332c04d + +25350 +598600000001000000000000046d61696c0b646972656b74776f6e656e026e6c0000010001 +598680000001000000020000046d61696c0b646972656b74776f6e656e026e6c0000010001c0110002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0110002000100015180000805726f6b696ec038 + +25351 +1d0000000001000000000000046d61696c0b646972656b74776f6e656e026e6c00001c0001 +1d0080000001000000020000046d61696c0b646972656b74776f6e656e026e6c00001c0001c0110002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0110002000100015180000805726f6b696ec038 + +25352 +179200000001000000000000026e73036d6c63026e6c0000260001 +179280000001000000030003026e73036d6c63026e6c0000260001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +25353 +e1cc00000001000000000000036e733403777873026e6c0000260001 +e1cc80000001000000030003036e733403777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +25354 +02930000000100000000000005726f6d656f066f6e6c696e65026f32026e6c0000010001 +02938000000100000002000205726f6d656f066f6e6c696e65026f32026e6c0000010001c0190002000100015180000d026e73076e65746c616e64c01cc01900020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +25355 +0e2800000001000000000000037777771261746f736b706d67636f6e73756c74696e67026e6c0000010001 +0e2880000001000000030000037777771261746f736b706d67636f6e73756c74696e67026e6c0000010001c01000020001000151800017036e733103657874096f726967696e2d697403636f6d00c01000020001000151800006036e7332c03bc01000020001000151800006036e7333c03b + +25356 +b79600000001000000000000036e733109666972737466696e64026e6c0000010001 +b79680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25357 +f31e00000001000000000000036e733209666972737466696e64026e6c0000010001 +f31e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25358 +422c00000001000000000000086d7470693730303302736404626e6574026e6c0000010001 +422c80000001000000020000086d7470693730303302736404626e6574026e6c0000010001c0180002000100015180000d03646e73036b706e03636f6d00c0180002000100015180000d036e7332036b706e036e657400 + +25359 +51a8000000010000000000000b6b6c6f6d70652d72757070026e6c00000f0001 +51a8800000010000000200020b6b6c6f6d70652d72757070026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000f036e7331086a64696d65646961c018c02c000100010001518000043e3a9862c03e00010001000151800004d4ccc034 + +25360 +702000000001000000000000076864693830303202736404626e6574026e6c0000010001 +702080000001000000020000076864693830303202736404626e6574026e6c0000010001c0170002000100015180000d03646e73036b706e03636f6d00c0170002000100015180000d036e7332036b706e036e657400 + +25361 +3a2600000001000000000000077077693830303302736404626e6574026e6c0000010001 +3a2680000001000000020000077077693830303302736404626e6574026e6c0000010001c0170002000100015180000d03646e73036b706e03636f6d00c0170002000100015180000d036e7332036b706e036e657400 + +25362 +c96600000001000000000000086d7470693730303202736404626e6574026e6c0000010001 +c96680000001000000020000086d7470693730303202736404626e6574026e6c0000010001c0180002000100015180000d03646e73036b706e03636f6d00c0180002000100015180000d036e7332036b706e036e657400 + +25363 +73a70000000100000000000003777777086d687767726f6570026e6c0000010001 +73a78000000100000002000203777777086d687767726f6570026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d5c9e8c8c04d00010001000151800004d5c9e8c9 + +25364 +d0c000000001000000000000036e733109666972737466696e64026e6c0000010001 +d0c080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25365 +d0c100000001000000000000036e733209666972737466696e64026e6c0000010001 +d0c180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25366 +d0c300000001000000000000036e733109666972737466696e64026e6c0000010001 +d0c380000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25367 +d0c400000001000000000000036e733209666972737466696e64026e6c0000010001 +d0c480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25368 +5717000000010000000000000d67656d776f7564656e62657267026e6c0000010001 +5717800000010000000200020d67656d776f7564656e62657267026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c01ac00c00020001000151800006036e7331c031c02e00010001000151800004504f6101c04800010001000151800004504f6102 + +25369 +2a400000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +2a408000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +25370 +64cc0000000100000000000003777777067a7376737172026e6c0000010001 +64cc8403000100000001000003777777067a7376737172026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +25371 +0b4600000001000000000000036e73330a787878776562686f7374026e6c0000010001 +0b4680000001000000020002036e73330a787878776562686f7374026e6c0000010001c01000020001000151800011036e73350a6f70656e2d646f6f7273c01bc01000020001000151800006036e7336c033c02f000100010001518000045117e85ac04c000100010001518000045117e85b + +25372 +1d570000000100000000000007636f6f6c636f6d026e6c00000f0001 +1d578000000100000002000207636f6f6c636f6d026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02800010001000151800004c1ad3506c03900010001000151800004c1ad35c1 + +25373 +42fe00000001000000000000036e73330a787878776562686f7374026e6c0000260001 +42fe80000001000000020002036e73330a787878776562686f7374026e6c0000260001c01000020001000151800011036e73350a6f70656e2d646f6f7273c01bc01000020001000151800006036e7336c033c02f000100010001518000045117e85ac04c000100010001518000045117e85b + +25374 +40b500000001000000000000056d61696c31106a616172626575727375747265636874026e6c0000010001 +40b580000001000000020002056d61696c31106a616172626575727375747265636874026e6c0000010001c0120002000100015180000e036e73310765766964656e74c023c01200020001000151800006036e7332c03bc03700010001000151800004c36d19c4c05100010001000151800004c36d1942 + +25375 +217f00000001000000000000036e73340a787878776562686f7374026e6c0000010001 +217f80000001000000020002036e73340a787878776562686f7374026e6c0000010001c01000020001000151800011036e73350a6f70656e2d646f6f7273c01bc01000020001000151800006036e7336c033c02f000100010001518000045117e85ac04c000100010001518000045117e85b + +25376 +5a8d00000001000000000000036e73340a787878776562686f7374026e6c0000260001 +5a8d80000001000000020002036e73340a787878776562686f7374026e6c0000260001c01000020001000151800011036e73350a6f70656e2d646f6f7273c01bc01000020001000151800006036e7336c033c02f000100010001518000045117e85ac04c000100010001518000045117e85b + +25377 +222d0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +222d8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25378 +01b500000001000000000000036e733103696e67026e6c0000010001 +01b580000001000000020002036e733103696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +25379 +ea7000000001000000000000036e733203696e67026e6c0000010001 +ea7080000001000000020002036e733203696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +25380 +0ded00000001000000000000046d61696c066d6165636f6e026e6c0000010001 +0ded80000001000000030003046d61696c066d6165636f6e026e6c0000010001c01100020001000151800013036e73310c66657272696e737065657273c018c01100020001000151800006036e7332c030c01100020001000151800006036e7333c030c02c000100010001518000043ed44ecac04b000100010001518000043ed44ecec05d00010001000151800004d554d5aa + +25381 +17f4000000010000000000000377777709616d62756c616e6365026e6c0000010001 +17f4800000010000000200010377777709616d62756c616e6365026e6c0000010001c01000020001000151800009026e7303616161c01ac0100002000100015180000b026e73026e6c036e657400c02e00010001000151800004c2b2a58f + +25382 +dbbe00000001000000000000046d61696c036d6968026e6c00001c0001 +dbbe80000001000000020002046d61696c036d6968026e6c00001c0001c0110002000100015180001004646e73310869636f6d70616e79c015c0110002000100015180000704646e7332c02ec029000100010001518000043e3a890ac045000100010001518000043e3a890b + +25383 +bff200000001000000000000046d61696c036d6968026e6c0000260001 +bff280000001000000020002046d61696c036d6968026e6c0000260001c0110002000100015180001004646e73310869636f6d70616e79c015c0110002000100015180000704646e7332c02ec029000100010001518000043e3a890ac045000100010001518000043e3a890b + +25384 +3a3c0000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +3a3c8000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +25385 +a5ce00000001000000000000036e733104656e6f6d026e6c0000010001 +a5ce80000001000000030003036e733104656e6f6d026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d9a083d1c03b00010001000151800004d86296b6c00c00010001000151800004d87a0479 + +25386 +c6ea0000000100000000000006636861726973026e6c0000010001 +c6ea8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25387 +9e6600000001000000000000046d61696c146e6174696f6e616c652d676f6c667363686f6f6c026e6c00001c0001 +9e6680000001000000020000046d61696c146e6174696f6e616c652d676f6c667363686f6f6c026e6c00001c0001c01100020001000151800010036e7331066969686f73740362697a00c01100020001000151800006036e7332c03e + +25388 +e38900000001000000000000046d61696c146e6174696f6e616c652d676f6c667363686f6f6c026e6c0000260001 +e38980000001000000020000046d61696c146e6174696f6e616c652d676f6c667363686f6f6c026e6c0000260001c01100020001000151800010036e7331066969686f73740362697a00c01100020001000151800006036e7332c03e + +25389 +1f1000000001000000000000095f6b65726265726f73045f746370026463065f6d736463730d76616e5f73746161766572656e026e6c0000060001 +1f1084030001000000010000095f6b65726265726f73045f746370026463065f6d736463730d76616e5f73746161766572656e026e6c0000060001c03300060001000038400036026e730f646f6d61696e2d7265676973747279c0330a686f73746d6173746572c04a0bf1e540000070800000384000278d0000003840 + +25390 +748e0000000100000000000010776f6f6e6d616174736368617070696a026e6c0000ff0001 +748e8000000100000003000310776f6f6e6d616174736368617070696a026e6c0000ff0001c00c0002000100015180000f036e7331086e6f766178657373c01dc00c00020001000151800006036e7332c035c00c00020001000151800006036e7333c035c03100010001000151800004d5c98015c04c00010001000151800004d5c9bf12c05e00010001000151800004d5ef9c26 + +25391 +e22400000001000000000000037777770538616d6973026e6c0000010001 +e22480000001000000020000037777770538616d6973026e6c0000010001c01000020001000151800012036e7335087a6f6e656564697403636f6d00c01000020001000151800006036e7337c02e + +25392 +d880000000010000000000000870726f647677303704636d7367026e6c00001c0001 +d880800000010000000200010870726f647677303704636d7367026e6c00001c0001c01500020001000151800006036e7331c015c0150002000100015180000d036e7332036b706e036e657400c02e00010001000151800004c2976c83 + +25393 +e11f000000010000000000000b6d61696c72656c6179303704636d7367026e6c0000010001 +e11f800000010000000200010b6d61696c72656c6179303704636d7367026e6c0000010001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +25394 +a098000000010000000000000b6d61696c72656c6179303704636d7367026e6c00001c0001 +a098800000010000000200010b6d61696c72656c6179303704636d7367026e6c00001c0001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +25395 +92960000000100000000000006636861726973026e6c0000010001 +92968000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25396 +b0b900000001000000000000037777770c6772617469732d7365787878026e6c0000010001 +b0b980000001000000030000037777770c6772617469732d7365787878026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c037c0100002000100015180000805646e733132c037 + +25397 +4e710000000100000000000003777777047a656e77026e6c0000010001 +4e718000000100000002000003777777047a656e77026e6c0000010001c01000020001000151800015026e730d646f6d61696e6e6574776f726b02736500c01000020001000151800006036e7332c02c + +25398 +2a4900000001000000000000037777770777696e7368656d026e6c0000010001 +2a4980000001000000020002037777770777696e7368656d026e6c0000010001c0100002000100015180000903706b3102706bc018c0100002000100015180000603706b32c030c02c00010001000151800004d43d1815c04100010001000151800004d43d1818 + +25399 +3be1000000010000000000000477777731047769776f026e6c0000010001 +3be1800000010000000200020477777731047769776f026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02a000100010001518000043eb1a454c03c000100010001518000043eb1a456 + +25400 +a40e00000001000000000000046963697307756e696d616173026e6c00000f0001 +a40e80000001000000030003046963697307756e696d616173026e6c00000f0001c0110002000100015180000906726c30303031c011c0110002000100015180000906696361737332c011c0110002000100015180000e036e733107737572666e6574c019c02d0001000100015180000489780101c0420001000100015180000489780105c05700010001000151800004c0576a65 + +25401 +7eda000000010000000000000469632d73026e6c00001c0001 +7eda800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25402 +2cc000000001000000000000046162656c0564656d6f6e026e6c0000010001 +2cc080000001000000030002046162656c0564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +25403 +fc5200100001000000000001036e733503777873026e6c00000100010000290800000080000000 +fc5280000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +25404 +585800000001000000000000037777770f6c65617365636172786368616e6765026e6c0000010001 +585880000001000000020000037777770f6c65617365636172786368616e6765026e6c0000010001c01000020001000151800017026e7309726f7474657264616d046c756e61036e657400c0100002000100015180000f026e7309686f6f6664646f7270c041 + +25405 +bf5000000001000000000000036e733503777873026e6c0000010001 +bf5080000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25406 +071e00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d76616e5f73746161766572656e026e6c0000060001 +071e84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d76616e5f73746161766572656e026e6c0000060001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +25407 +a97100000001000000000000066865746e6574026e6c0000010001 +a97180000001000000030003066865746e6574026e6c0000010001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +25408 +158e000000010000000000000377777708677261736261616c026e6c0000010001 +158e800000010000000200000377777708677261736261616c026e6c0000010001c01000020001000151800012036e733708786c736572766572036e657400c01000020001000151800006036e7338c031 + +25409 +11ce000000010000000000000673756e646e7303697373026e6c0000010001 +11ce800000010000000200020673756e646e7303697373026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c00c00010001000151800004c057a002c03900010001000151800004c0576a65 + +25410 +258b00000001000000000000037777770468646369026e6c0000010001 +258b80000001000000030003037777770468646369026e6c0000010001c0100002000100015180000e076e73617574683103626974c015c0100002000100015180000a076e736175746832c031c0100002000100015180000a076e736175746833c031c02900010001000151800004d5880c33c04300010001000151800004d5880c3bc05900010001000151800004d4ccc00b + +25411 +e96e000000010000000000000661636869656c05716d61696c026e6c0000010001 +e96e800000010000000200020661636869656c05716d61696c026e6c0000010001c0130002000100015180000d026e7307656d61696c636fc019c0130002000100015180000d036e733206787334616c6cc019c02d00010001000151800004c26dcee2c04600010001000151800004c26d0963 + +25412 +2b100000000100000000000006636f62616c740b666f782d686f7374696e67026e6c0000010001 +2b108000000100000002000206636f62616c740b666f782d686f7374696e67026e6c0000010001c01300020001000151800007046e732d31c013c01300020001000151800007046e732d32c013c03300010001000151800004d5bd1374c04600010001000151800004d5bd1675 + +25413 +4ff1000000010000000000000a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001 +4ff1800000010000000200020a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001c01700020001000151800007046e732d31c017c01700020001000151800007046e732d32c017c03700010001000151800004d5bd1374c04a00010001000151800004d5bd1675 + +25414 +73bd000000010000000000000377777705736369746f026e6c0000010001 +73bd800000010000000200020377777705736369746f026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800006036e7331c010c02a00010001000151800004d5bd0598c03c00010001000151800004d5bd0599 + +25415 +fe780000000100000000000005736d747031067874646e6574026e6c0000010001 +fe788000000100000002000205736d747031067874646e6574026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7331c012c02d00010001000151800004c16e9d02c03e00010001000151800004d9cc165f + +25416 +fac80000000100000000000005736d747031067874646e6574026e6c00001c0001 +fac88000000100000002000205736d747031067874646e6574026e6c00001c0001c01200020001000151800005026e73c012c01200020001000151800006036e7331c012c02d00010001000151800004c16e9d02c03e00010001000151800004d9cc165f + +25417 +041f00000001000000000000026e73067874646e6574026e6c00001c0001 +041f80000001000000020002026e73067874646e6574026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +25418 +3a2200000001000000000000036e7331067874646e6574026e6c00001c0001 +3a2280000001000000020002036e7331067874646e6574026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004c16e9d02c00c00010001000151800004d9cc165f + +25419 +064100000001000000000000036e747006787334616c6c026e6c0000010001 +064180000001000000030002036e747006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +25420 +71170000000100000000000008706f737464756966096e65746c6f67696373026e6c0000010001 +71178000000100000002000208706f737464756966096e65746c6f67696373026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c03300010001000151800004c3c16402c04400010001000151800004c2b2850a + +25421 +ebda00000001000000000000037777770470696e61026e6c0000010001 +ebda80000001000000020000037777770470696e61026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c02c + +25422 +bced000000010000000000000d7777772c626f6e617061727465026e6c0000010001 +bced840300010000000100000d7777772c626f6e617061727465026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +25423 +c963000000010000000000000675746f706961076b6e6f77617265026e6c00001c0001 +c963800000010000000200020675746f706961076b6e6f77617265026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c02f00010001000151800004c3402003c04000010001000151800004c340202b + +25424 +c76a000000010000000000000469632d73026e6c00001c0001 +c76a800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25425 +ab9c00000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +ab9c80000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +25426 +e9f6000000010000000000000470696e6b026e6c00000f0001 +e9f6800000010000000300020470696e6b026e6c00000f0001c00c00020001000151800015036e73310b70696e6b726f6363616465036e657400c00c0002000100015180000e026e73086d656761706c6578c011c00c00020001000151800006036e7331c049c04600010001000151800004504f6101c06000010001000151800004504f6102 + +25427 +410c000000010000000000000377777709616474726166666963026e6c0000010001 +410c800000010000000200000377777709616474726166666963026e6c0000010001c0100002000100015180000f036e7331056279303035036e657400c01000020001000151800006036e7332c032 + +25428 +517a000000010000000000000d737461616c6d65657374657273026e6c00000f0001 +517a800000010000000200020d737461616c6d65657374657273026e6c00000f0001c00c0002000100015180000f036e733108636f6d707574656cc01ac00c00020001000151800006036e7332c032c02e00010001000151800004c3568680c04900010001000151800004c3568681 + +25429 +a8e500000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +a8e580000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25430 +a78200000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +a78280000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +25431 +c0a600000001000000000000037777770773686573706f74026e6c0000010001 +c0a680000001000000030002037777770773686573706f74026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +25432 +d3840000000100000000000003777777097363686f6f6e657063026e6c0000010001 +d3848000000100000002000203777777097363686f6f6e657063026e6c0000010001c01000020001000151800013036e73310c706f77657273657276657232c01ac01000020001000151800006036e7332c032c02e0001000100015180000451047414c04d0001000100015180000451047415 + +25433 +c37a00000001000000000000036e73310c706f77657273657276657232026e6c00001c0001 +c37a80000001000000020002036e73310c706f77657273657276657232026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047414c03f0001000100015180000451047415 + +25434 +d10700000001000000000000036e73310c706f77657273657276657232026e6c0000260001 +d10780000001000000020002036e73310c706f77657273657276657232026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047414c03f0001000100015180000451047415 + +25435 +5b3600000001000000000000036e73320c706f77657273657276657232026e6c00001c0001 +5b3680000001000000020002036e73320c706f77657273657276657232026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000451047414c00c0001000100015180000451047415 + +25436 +9f0900000001000000000000036e73320c706f77657273657276657232026e6c0000260001 +9f0980000001000000020002036e73320c706f77657273657276657232026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000451047414c00c0001000100015180000451047415 + +25437 +b6fa000000010000000000000f6b616a732d666c7966697368696e67026e6c00000f0001 +b6fa800000010000000200010f6b616a732d666c7966697368696e67026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c01cc00c00020001000151800006036e7334c034c03000010001000151800004d5c401c0 + +25438 +356a0000000100000000000009676f65647468756973026e6c0000ff0001 +356a8000000100000003000309676f65647468756973026e6c0000ff0001c00c00020001000151800010036e733109736974656279746573c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c2a55e5ac04600010001000151800004c356781cc058000100010001518000043ec58016 + +25439 +1bc500000001000000000000036e733109736974656279746573026e6c0000010001 +1bc580000001000000030003036e733109736974656279746573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c2a55e5ac03c00010001000151800004c356781cc04e000100010001518000043ec58016 + +25440 +7fb300000001000000000000036e733209736974656279746573026e6c0000010001 +7fb380000001000000030003036e733209736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c2a55e5ac00c00010001000151800004c356781cc04e000100010001518000043ec58016 + +25441 +cf2e00000001000000000000036e733309736974656279746573026e6c0000010001 +cf2e80000001000000030003036e733309736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c2a55e5ac04000010001000151800004c356781cc00c000100010001518000043ec58016 + +25442 +3d7b0000000100000000000009676f65647468756973026e6c00000f0001 +3d7b8000000100000003000309676f65647468756973026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c2a55e5ac04600010001000151800004c356781cc058000100010001518000043ec58016 + +25443 +0fa300000001000000000000026e7309656174736572766572026e6c0000010001 +0fa380000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +25444 +23bb000000010000000000000873616e74696e673103746d66026e6c00000f0001 +23bb800000010000000200000873616e74696e673103746d66026e6c00000f0001c0150002000100015180000f036e73310571696e6970036e657400c01500020001000151800006036e7332c031 + +25445 +4fa900000001000000000000096e616172686f757365026e6c0000010001 +4fa980000001000000030003096e616172686f757365026e6c0000010001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec016c00c00020001000151800006036e7331c033c00c00020001000151800006036e7332c033c02a00010001000151800004d42d2005c04800010001000151800004d42d2003c05a00010001000151800004d42d2103 + +25446 +22bd001000010000000000010469632d73026e6c0000ff00010000290800000000000000 +22bd800000010000000200010469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +25447 +1628000000010000000000000e6173642d736c6f642d3234323764046164736c0777616e61646f6f026e6c0000010001 +1628800000010000000200010e6173642d736c6f642d3234323764046164736c0777616e61646f6f026e6c0000010001c0200002000100015180000d026e73046575726f036e657400c0200002000100015180000d026e73076575726f6e6574c028c05500010001000151800004c2860043 + +25448 +4eb9000000010000000000000d737461616c6d65657374657273026e6c00000f0001 +4eb9800000010000000200020d737461616c6d65657374657273026e6c00000f0001c00c0002000100015180000f036e733108636f6d707574656cc01ac00c00020001000151800006036e7332c032c02e00010001000151800004c3568680c04900010001000151800004c3568681 + +25449 +bb4f000000010000000000000d6765626f2d6d6f727368756973026e6c00001c0001 +bb4f800000010000000200020d6765626f2d6d6f727368756973026e6c00001c0001c00c0002000100015180000f036e733108696e74726f776562c01ac00c00020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +25450 +136600000001000000000000037777770778787866696c6d026e6c0000010001 +136680000001000000020000037777770778787866696c6d026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02f + +25451 +1171000000010000000000000676657261646d026e6c0000060001 +1171840300010000000100000676657261646d026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +25452 +d890000000010000000000000377777706696265726961026e6c0000010001 +d890800000010000000200010377777706696265726961026e6c0000010001c0100002000100015180000c026e7306636f62776562c017c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f26001 + +25453 +e8cb00000001000000000000026763065f6d736463730676657261646d026e6c0000060001 +e8cb84030001000000010000026763065f6d736463730676657261646d026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +25454 +c26d0000000100000000000008726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001 +c26d8000000100000002000208726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001c0150002000100015180000e036e7331076e657463617374c023c01500020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +25455 +1fba00000001000000000000036e73330767617574656e67026e6c0000010001 +1fba80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25456 +63da00000001000000000000037777770967612d6561676c6573026e6c0000010001 +63da80000001000000030002037777770967612d6561676c6573026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c01ac01000020001000151800006036e7332c032c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02e00010001000151800004cf2cd7adc04f0001000100015180000452c04365 + +25457 +2f6e000000010000000000000167036d736e026e6c0000010001 +2f6e800000010000000300000167036d736e026e6c0000010001c00e0002000100015180001204646e733302756b046d736674036e657400c00e0002000100015180000a04646e7331026370c02ec00e0002000100015180000a04646e7331026463c02e + +25458 +03ab000000010000000000000377777707636170656c6c69026e6c0000010001 +03ab800000010000000200020377777707636170656c6c69026e6c0000010001c01000020001000151800010036e7331097469736f6e6c696e65c018c01000020001000151800006036e7332c030c02c00010001000151800004d5e382b4c04800010001000151800004d5e38d7c + +25459 +a844000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +a844800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +25460 +e14300000001000000000000037777770e6d657373656e676572746f6f6c73026e6c0000010001 +e14380000001000000020000037777770e6d657373656e676572746f6f6c73026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c038 + +25461 +d3f5000000010000000000000377777707747067706f7374026e6c0000010001 +d3f5800000010000000200020377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +25462 +232d00000001000000000000037777770c7367722d6b77616472616e74026e6c0000010001 +232d80000001000000020002037777770c7367722d6b77616472616e74026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c01dc01000020001000151800006036e7332c035c03100010001000151800004d4b20403c04a00010001000151800004d5881e45 + +25463 +215b000000010000000000000679656c6c6f77026e6c00000f0001 +215b800000010000000300010679656c6c6f77026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +25464 +3160000000010000000000000679656c6c6f77026e6c00000f0001 +3160800000010000000300010679656c6c6f77026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +25465 +fd6700000001000000000000037777770573756e6e79026e6c0000010001 +fd6780000001000000030002037777770573756e6e79026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +25466 +9266000000010000000000000469632d73026e6c00000f0001 +9266800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25467 +ddf900000001000000000000037777770e73746172746e656465726c616e64026e6c0000010001 +ddf980000001000000020002037777770e73746172746e656465726c616e64026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +25468 +ae9900000001000000000000037777770a6e75747269706c617a61026e6c0000010001 +ae9980000001000000020002037777770a6e75747269706c617a61026e6c0000010001c0100002000100015180000d026e7307636f6f6c636f6dc01bc01000020001000151800006036e7332c032c02f00010001000151800004c1ad3506c04800010001000151800004c1ad35c1 + +25469 +d9c4000000010000000000000a736f6e6572616d61696c026e6c00000f0001 +d9c4800000010000000200000a736f6e6572616d61696c026e6c00000f0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +25470 +ca6f00000001000000000000084865696e6e6f74650a63617272652d6164616d026e6c0000060001 +ca6f84030001000000010000084865696e6e6f74650a63617272652d6164616d026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +25471 +e9a40000000100000000000005626c6f656d026e6c00000f0001 +e9a48000000100000002000205626c6f656d026e6c00000f0001c00c00020001000151800012036e73310b6963742d636f6e63657074c012c00c00020001000151800006036e7332c02ac02600010001000151800004c26d9983c04400010001000151800004d5544f5d + +25472 +39170000000100000000000004616e73310774697363616c69026e6c0000010001 +39178000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +25473 +0aed28000001000000010000024e4c000006000109444d4e4d554c444552024e4c00000100010000025800040a0a1401 +0aeda8040000000000000000 + +25474 +bd02000000010000000000000462617274026e6c00000f0001 +bd02800000010000000200020462617274026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c011c00c00020001000151800006036e7332c029c02500010001000151800004d43d0f08c04300010001000151800004d43d19e2 + +25475 +0000000070024000c81100000204055001010402 +000080010000000000000000 + +25476 +1fcb00000001000000000000036e73330767617574656e67026e6c0000010001 +1fcb80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25477 +a7ef0000000100000000000003777777046a656e65026e6c0000010001 +a7ef8000000100000003000103777777046a656e65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc015c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c047c029000100010001518000043efa0202 + +25478 +b5d6cf7c5010451069fe0000000000000000 + + +25479 +e69c00000001000000000000036e7061026e6c0000ff0001 +e69c80000001000000020000036e7061026e6c0000ff0001c00c00020001000151800012036e7331086974732d646e733303636f6d00c00c00020001000151800006036e7332c028 + +25480 +255c000000010000000000001074726f7577656e696e6465726567696f026e6c00000f0001 +255c800000010000000200001074726f7577656e696e6465726567696f026e6c00000f0001c00c0002000100015180001e036e733114746865627261696e73746f726d666163746f727903636f6d00c00c00020001000151800006036e7332c035 + +25481 +b5d6cf7c501845104c27000000931280000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 + + +25482 +918100000001000000000000037777770c6769726c69656b6973736965046d796964026e6c0000010001 +918180000001000000020000037777770c6769726c69656b6973736965046d796964026e6c0000010001c01d00020001000151800010036e733109666972737466696e64c022c01d00020001000151800006036e7332c03a + +25483 +b5d6cf8a5011450269680000000000000000 + + +25484 +000000007002400002c300000204055001010402 +000080010000000000000000 + +25485 +5e6900000001000000000000056d6777303103777873026e6c0000010001 +5e6980000001000000030003056d6777303103777873026e6c0000010001c01200020001000151800007046e733038c012c01200020001000151800007046e733039c012c01200020001000151800006036e7334c012c02a00010001000151800004c3790128c03d00010001000151800004c3790143c05000010001000151800004d5ef9a65 + +25486 +fe9a00000001000000000000186865742d61646d696e69737472617469656b616e746f6f72026e6c0000010001 +fe9a80000001000000020000186865742d61646d696e69737472617469656b616e746f6f72026e6c0000010001c00c00020001000151800017026e7309726f7474657264616d046c756e61036e657400c00c0002000100015180000f026e7309686f6f6664646f7270c046 + +25487 +b5d6cf8b5010450269670000000000000000 + + +25488 +f4bc0000000100000000000006636861726973026e6c00000f0001 +f4bc8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25489 +b5d7afb650104510c4740000000000000000 + + +25490 +2db60000000100000000000005646e732d31056c61646f74026e6c0000010001 +2db68000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25491 +e58300000001000000000000046168626c02626c06787334616c6c026e6c0000010001 +e58380000001000000030002046168626c02626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +25492 +b5d7afb650184510e85d00000093d1c0000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 + + +25493 +b5d7afc450114502c3de0000000000000000 + + +25494 +7b8a0000000100000000000007706c616e656574026e6c00000f0001 +7b8a8000000100000002000207706c616e656574026e6c00000f0001c00c0002000100015180000d026e73076e65746578706fc014c00c00020001000151800006036e7332c02bc028000100010001518000043efa0ac2c041000100010001518000043efa0a82 + +25495 +0000000070024000463d00000204055001010402 +000080010000000000000000 + +25496 +8ee400000001000000000000036e733503777873026e6c0000010001 +8ee480000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25497 +2db70000000100000000000005646e732d32056c61646f74026e6c0000010001 +2db78000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25498 +b5d7afc550104502c3dd0000000000000000 + + +25499 +ed69000000010000000000000469632d73026e6c0000ff0001 +ed69800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25500 +b5d8998b501045101e190000000000000000 + + +25501 +80840000000100000000000003676266026e6c00000f0001 +80848000000100000002000003676266026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +25502 +a3180000000100000000000006746865736f72026e6c0000010001 +a3188000000100000002000206746865736f72026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c013c00c00020001000151800006036e7332c02ac02700010001000151800004d9aa2042c04000010001000151800004d9aa2c06 + +25503 +b5d8998b5018451082c2000000939100000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 + + +25504 +72e60000000100000000000007746f6b6865696d026e6c00000f0001 +72e68000000100000002000207746f6b6865696d026e6c00000f0001c00c0002000100015180000e036e733107626265796f6e64c014c00c00020001000151800006036e7332c02cc028000100010001518000043eb1900bc042000100010001518000043eb19002 + +25505 +000000007002faf04e890000020405b401010402 +000080010000000000000000 + +25506 +b5d89999501145021d830000000000000000 + + +25507 +3964000000010000000000000377777703656d6f026e6c0000010001 +3964800000010000000200000377777703656d6f026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02c + +25508 +b66800000001000000000000096a616e6b7265656674026e6c00000f0001 +b66880000001000000030001096a616e6b7265656674026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +25509 +6be4000000010000000000000469632d73026e6c0000ff0001 +6be4800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25510 +29260000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +29268000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25511 +b5d8999a501045021d820000000000000000 + + +25512 +34bc0000000100000000000008616473657276657206776562616473026e6c0000010001 +34bc8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +25513 +0af228000001000000010000024e4c000006000109444d4e4d554c444552024e4c0000010001000002580004c0a80164 +0af2a8040000000000000000 + +25514 +89510000000100000000000003616c7409576f7264486f757365026e6c0000010001 +89518000000100000003000203616c7409576f7264486f757365026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +25515 +1e1f000000010000000000000964736c2d343831393806736f6c636f6e026e6c0000010001 +1e1f800000010000000300030964736c2d343831393806736f6c636f6e026e6c0000010001c0160002000100015180000b08736f6c7574696f6ec016c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03100010001000151800004d42d2005c04800010001000151800004d42d2003c05a00010001000151800004d42d2103 + +25516 +000000007002400060f900000204055001010402 +000080010000000000000000 + +25517 +1ca20000000100000000000007766e6f2d6e6377026e6c0000010001 +1ca28000000100000002000207766e6f2d6e6377026e6c0000010001c00c0002000100015180000f036e733108696e7465726d6178c014c00c00020001000151800006036e7332c02cc02800010001000151800004505fa002c04300010001000151800004505fac02 + +25518 +2e2200000001000000000000036e733109666972737466696e64026e6c0000010001 +2e2280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +25519 +f48800000001000000000000026e7306766576696461026e6c0000010001 +f48880000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +25520 +b5d95492501045107dcd0000000000000000 +b5d9d4940000000000000000 + +25521 +b5d954925018451062f6000000930f80000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 +b5d9d4940000000000000000 + +25522 +f6ad00000001000000000000106d656573746572736368696c64657273026e6c00000f0001 +f6ad80000001000000020002106d656573746572736368696c64657273026e6c00000f0001c00c0002000100015180000e026e7308696e7465726c6162c01dc00c00020001000151800006036e7332c034c03100010001000151800004d4cb0902c04b00010001000151800004d4cb0903 + +25523 +02e500000001000000000000056d61696c3103696e67026e6c0000010001 +02e580000001000000020002056d61696c3103696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc2 + +25524 +b5d954a0501145027d370000000000000000 +b5d9d4a40000000000000000 + +25525 +93b80000000100000000000006636861726973026e6c0000ff0001 +93b88000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25526 +0c5900000001000000000000036e733109717569636b686f7374026e6c0000010001 +0c5980000001000000020002036e733109717569636b686f7374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f902c03c000100010001518000045054f181 + +25527 +0000000070024000784600000204055001010402 +000080010000000000000000 + +25528 +86ef00000001000000000000036e733209717569636b686f7374026e6c0000010001 +86ef80000001000000020002036e733209717569636b686f7374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054f902c00c000100010001518000045054f181 + +25529 +b78c00000001000000000000037777771a69726973657474652d64656b62656464656e2d6b757373656e73026e6c0000010001 +b78c80000001000000030001037777771a69726973657474652d64656b62656464656e2d6b757373656e73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc02bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c05dc03f000100010001518000043efa0202 + +25530 +d62000000001000000000000055f6c646170045f7463700970632d626172656e64026e6c0000060001 +d62084030001000000010000055f6c646170045f7463700970632d626172656e64026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +25531 +0adb000000010000000000000377777707706974626f7264026e6c0000010001 +0adb800000010000000300000377777707706974626f7264026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c031c01000020001000151800007046e733033c031 + +25532 +b5d954a1501045027d360000000000000000 +b5d9d4a40000000000000000 + +25533 +b5da034150104510e66a0000000000000000 +b5da80010000000000000000 + +25534 +b5da03415018451059540000009382c0000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 +b5da80010000000000000000 + +25535 +a8b80000000100000000000007626f72657474690564656d6f6e026e6c0000010001 +a8b88000000100000003000207626f72657474690564656d6f6e026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +25536 +b5da034f50114502e5d40000000000000000 +b5da80010000000000000000 + +25537 +0000000070024000e0de00000204055001010402 +000080010000000000000000 + +25538 +1f64000000010000000000000e6875676f63617273797374656d73026e6c00000f000100 +1f64800000010000000200000e6875676f63617273797374656d73026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +25539 +9a4900000001000000000000037777770c706f727461626c6567656172026e6c0000010001 +9a4980000001000000020000037777770c706f727461626c6567656172026e6c0000010001c01000020001000151800010056e73313533047061697203636f6d00c0100002000100015180000c056e73303030036e7330c03c + +25540 +1cfe000000010000000000000673636f74747903647376026e6c0000010001 +1cfe800000010000000200020673636f74747903647376026e6c0000010001c0130002000100015180000f036e733108696e7465726d6178c017c01300020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +25541 +81ac000000010000000000000a61616e72696368617264026e6c00000f0001 +81ac840300010000000100000a61616e72696368617264026e6c00000f0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +25542 +b5da035050104502e5d30000000000000000 +b5da80010000000000000000 + +25543 +b5dadc785010451075cb0000000000000000 + + +25544 +5501000000010000000000000667616d657273026e6c0000010001 +5501800000010000000200020667616d657273026e6c0000010001c00c0002000100015180000b036e73310470696e65c013c00c00020001000151800006036e7332c02bc02700010001000151800004d59c0201c03e00010001000151800004c3c1a303 + +25545 +b5dadc78501845102975000000934200000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afed1403c50510003000000344e544c4d535350000100000097b200e0090009002b0000000b000b002000000046494c4553455256455231444d4e4d554c4445520000 + + +25546 +b5dadc865011450275350000000000000000 + + +25547 +bd0200000001000000000000055f6c646170045f7463700970632d626172656e64026e6c0000060001 +bd0284030001000000010000055f6c646170045f7463700970632d626172656e64026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +25548 +4bdf0000000100000000000004686f6d65026e6c00000f0001 +4bdf8000000100000003000304686f6d65026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02500010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +25549 +b5dadc875010450275340000000000000000 + + +25550 +8a3c00000001000000000000037777770a746573746d696a6e6971026e6c0000010001 +8a3c80000001000000030002037777770a746573746d696a6e6971026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +25551 +80640000000100000000000006706c616e65740b6765656e726f747a6f6f69026e6c00000f0001 +80648403000100000001000006706c616e65740b6765656e726f747a6f6f69026e6c00000f0001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +25552 +c38000000001000000000000037777771777656277696e6b656c64656b6e757473656c6b61617274026e6c0000010001 +c38080000001000000020002037777771777656277696e6b656c64656b6e757473656c6b61617274026e6c0000010001c01000020001000151800019036e733112686f737465642d62792d32686f7374696e67c028c01000020001000151800006036e7332c040c03c000100010001518000043ed45934c061000100010001518000043ed45935 + +25553 +c3b300000001000000000000037777771067657a6f6e646865696473706c65696e026e6c0000010001 +c3b380000001000000020002037777771067657a6f6e646865696473706c65696e026e6c0000010001c01000020001000151800010026e730a7a65656c616e646e6574c021c01000020001000151800006036e7332c038c03500010001000151800004d473c0c1c05100010001000151800004d473c0c3 + +25554 +c2d30000000100000000000006676565727473026e6c00000f0001 +c2d38000000100000002000206676565727473026e6c00000f0001c00c00020001000151800009036e7331026973c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5852102c03c00010001000151800004d5c41503 + +25555 +612d0000000100000000000003777777126b616d657276616e6b6f6f7068616e64656c026e6c0000010001 +612d8000000100000002000203777777126b616d657276616e6b6f6f7068616e64656c026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c023c01000020001000151800006036e7332c03ac03700010001000151800004c3402003c05000010001000151800004c340202b + +25556 +a1d300000001000000000000027073026e6c00000f0001 +a1d380000001000000020000027073026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02a + +25557 +14f8000000010000000000000377777706666c6f796473026e6c0000010001 +14f8800000010000000300010377777706666c6f796473026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +25558 +0d1200000001000000000000037777770a6f6d7374616e64657273026e6c0000010001 +0d1280000001000000020000037777770a6f6d7374616e64657273026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c035 + +25559 +483e0000000100000000000003736e73026e6c00000f0001 +483e8000000100000002000003736e73026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c028 + +25560 +1eab0000000100000000000006616d666f7273026e6c0000ff0001 +1eab8000000100000002000206616d666f7273026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25561 +2ff900000001000000000000036e73330767617574656e67026e6c0000010001 +2ff980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25562 +ad200000000100000000000006706c616e65740b6765656e726f747a6f6f69026e6c0000010001 +ad208403000100000001000006706c616e65740b6765656e726f747a6f6f69026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +25563 +d10700000001000000000000076f707573333931026e6c0000010001 +d10780000001000000020002076f707573333931026e6c0000010001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +25564 +5d5d0000000100000000000007706c617474656c0a6d6963726f7368617265026e6c00000f0001 +5d5d8000000100000002000107706c617474656c0a6d6963726f7368617265026e6c00000f0001c01400020001000151800010036e7331096c73686f7374696e67c01fc01400020001000151800013036e7332096c73686f7374696e67036e657400c03300010001000151800004d420e10a + +25565 +666500000001000000000000026e73076e656473746174026e6c0000010001 +666580000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25566 +8aec00000001000000000000036e73310470696e65026e6c00001c0001 +8aec80000001000000020002036e73310470696e65026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +25567 +0ed900000001000000000000036e73310470696e65026e6c0000260001 +0ed980000001000000020002036e73310470696e65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +25568 +591400000001000000000000036e73320470696e65026e6c00001c0001 +591480000001000000020002036e73320470696e65026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +25569 +858c00000001000000000000036e73320470696e65026e6c0000260001 +858c80000001000000020002036e73320470696e65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +25570 +3e5e000000010000000000000377777714776f6f6e626f756c65766172647a61616e64616d026e6c0000010001 +3e5e800000010000000200010377777714776f6f6e626f756c65766172647a61616e64616d026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c025c01000020001000151800006036e7334c03dc03900010001000151800004d5c401c0 + +25571 +6e610000000100000000000003777777086472756774657874026e6c0000010001 +6e618000000100000002000003777777086472756774657874026e6c0000010001c0100002000100015180000a036e7331036c6170c019c0100002000100015180000b026e73026e6c036e657400 + +25572 +59ad00000001000000000000066d696e66696e026e6c0000010001 +59ad80000001000000020001066d696e66696e026e6c0000010001c00c00020001000151800006036e7331c00cc00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004c2b2a748 + +25573 +cd8400000001000000000000086261726d61746f6e026e6c0000ff0001 +cd8480000001000000020002086261726d61746f6e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +25574 +008d28000001000200000000026e6c00000600010a622d73657276657230310a627572676572746a6573026e6c00000500fe000000000000c014000100010000000000040a8a6ffe +008da8040000000000000000 + +25575 +b45f00000001000000000000046765746f026e6c00001c0001 +b45f80000001000000030001046765746f026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +25576 +000000007002faf04ab80000020405b401010402 +000080010000000000000000 + +25577 +fed600000001000000000000036e733107626265796f6e64026e6c0000010001 +fed680000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +25578 +b5dd4b595010faf076350000000000000000 +b5ddcb540000000000000000 + +25579 +fe5b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +fe5b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25580 +a0af0000000100000000000005646e732d32056c61646f74026e6c0000010001 +a0af8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25581 +b5dd4b595018faf05667000000931680000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403afce2403c4e620003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000422d5345525645523031425552474552544a45530000 +b5ddcb540000000000000000 + +25582 +817f00000001000000000000037777770f736f6674776172652d77696e6b656c026e6c0000010001 +817f80000001000000020002037777770f736f6674776172652d77696e6b656c026e6c0000010001c0100002000100015180000a036e7331036e7873c020c01000020001000151800006036e7332c038c03400010001000151800004d973c015c04a00010001000151800004d973c102 + +25583 +b5dd4b675011fae2759f0000000000000000 +b5ddcb640000000000000000 + +25584 +000000007002faf017e30000020405b401010402 +000080010000000000000000 + +25585 +b5dd4b685010fae2759e0000000000000000 +b5ddcb640000000000000000 + +25586 +4abe000000010000000000000469632d73026e6c0000010001 +4abe800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25587 +d8cb00000001000000000000037777770567616d6572026e6c0000010001 +d8cb80000001000000020002037777770567616d6572026e6c0000010001c0100002000100015180000b036e73310470696e65c016c01000020001000151800006036e7332c02ec02a00010001000151800004d59c0201c04100010001000151800004c3c1a303 + +25588 +b5de11195010faf07d9f0000000000000000 +b5de91140000000000000000 + +25589 +aad600000001000000000000036e7331056577656b61026e6c0000010001 +aad680000001000000020002036e7331056577656b61026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7333c010c00c0001000100015180000451ab6504c0380001000100015180000451ab660e + +25590 +b5de11195018faf04852000000932d00000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afce2403c4e620003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000422d5345525645523031425552474552544a45530000 +b5de91140000000000000000 + +25591 +594b0000000100000000000008646174616261736506717569726b79026e6c0000010001 +594b8000000100000002000008646174616261736506717569726b79026e6c0000010001c01500020001000151800014046e733031096772616669782d697303636f6d00c01500020001000151800007046e733033c035 + +25592 +d40000000001000000000000036e7331036c6170026e6c0000010001 +d40080000001000000020000036e7331036c6170026e6c0000010001c01000020001000151800012096d617273657065696e0563616c7978c014c0100002000100015180000e026e730563616c7978036e657400 + +25593 +b5de11275011fae27d090000000000000000 +b5de91240000000000000000 + +25594 +e89900000001000000000000037777770b627564656c2d706f737365026e6c0000010001 +e89980000001000000020000037777770b627564656c2d706f737365026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +25595 +000000007002faf0325f0000020405b401010402 +000080010000000000000000 + +25596 +95d100000001000000000000046b6f7374026e6c00000f0001 +95d180000001000000020002046b6f7374026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +25597 +b5de11285010fae27d080000000000000000 +b5de91240000000000000000 + +25598 +b5decd685010faf0dbcb0000000000000000 + + +25599 +0729000000010000000000000d6138302d3132362d32372d3537046164736c06787334616c6c026e6c0000010001 +0729800000010000000300020d6138302d3132362d32372d3537046164736c06787334616c6c026e6c0000010001c01f00020001000151800005026e73c01fc01f00020001000151800006036e7332c01fc01f0002000100015180000d026e730472697065036e657400c03a00010001000151800004c26d0642c04b00010001000151800004c26d0963 + +25600 +b5decd685018faf08b7e000000934800000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afce2403c4e620003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000422d5345525645523031425552474552544a45530000 + + +25601 +35f8000000010000000000000377777711686f74656c2d626f6572656e6b616d6572026e6c0000010001 +35f8800000010000000200020377777711686f74656c2d626f6572656e6b616d6572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc022c01000020001000151800006036e7332c039c03600010001000151800004c26d0642c04e00010001000151800004c26d0963 + +25602 +b5decd765011fae2db350000000000000000 + + +25603 +7c3600000001000000000000036e733109626f7577666f6e6473026e6c0000010001 +7c3680000001000000030000036e733109626f7577666f6e6473026e6c0000010001c01000020001000151800014036e73310a646e736d616e6167656403636f6d00c01000020001000151800006036e7334c032c01000020001000151800006036e7336c032 + +25604 +f97900000001000000000000036e733109626f7577666f6e6473026e6c00001c0001 +f97980000001000000030000036e733109626f7577666f6e6473026e6c00001c0001c01000020001000151800014036e73310a646e736d616e6167656403636f6d00c01000020001000151800006036e7334c032c01000020001000151800006036e7336c032 + +25605 +2b0a00000001000000000000036e733109626f7577666f6e6473026e6c0000260001 +2b0a80000001000000030000036e733109626f7577666f6e6473026e6c0000260001c01000020001000151800014036e73310a646e736d616e6167656403636f6d00c01000020001000151800006036e7334c032c01000020001000151800006036e7336c032 + +25606 +57f7000000010000000000000663616e646561026e6c0000010001 +57f7800000010000000300030663616e646561026e6c0000010001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +25607 +64b200000001000000000000046d78303209626f7577666f6e6473026e6c0000010001 +64b280000001000000030000046d78303209626f7577666f6e6473026e6c0000010001c01100020001000151800014036e73310a646e736d616e6167656403636f6d00c01100020001000151800006036e7334c033c01100020001000151800006036e7336c033 + +25608 +b5decd775010fae2db340000000000000000 + + +25609 +ee29000000010000000000000377777708716d732d63657274026e6c0000010001 +ee29800000010000000200020377777708716d732d63657274026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +25610 +b3e20000000100000000000003777777066d796c656e73026e6c0000010001 +b3e28000000100000003000303777777066d796c656e73026e6c0000010001c0100002000100015180000f04646e7331076d696e64627573c017c0100002000100015180000704646e7332c030c0100002000100015180000704646e7333c030c02b00010001000151800004d44ff4ddc04600010001000151800004d44ff645c05900010001000151800004c3f5c70e + +25611 +f85600000001000000000000036e733207626265796f6e64026e6c0000010001 +f85680000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +25612 +fc2b00000001000000000000036e733207626265796f6e64026e6c0000260001 +fc2b80000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +25613 +34c30010000100000000000106776468303131066e7434616c6c026e6c00000100010000290800000080000000 +34c38000000100000002000306776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d09630000291000000000000000 + +25614 +43550000000100000000000004646e7332076d696e64627573026e6c0000010001 +43558000000100000003000304646e7332076d696e64627573026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02d00010001000151800004d44ff4ddc00c00010001000151800004d44ff645c04e00010001000151800004c3f5c70e + +25615 +2c380000000100000000000004646e7333076d696e64627573026e6c0000010001 +2c388000000100000003000304646e7333076d696e64627573026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02d00010001000151800004d44ff4ddc04000010001000151800004d44ff645c00c00010001000151800004c3f5c70e + +25616 +b4330000000100000000000004646e7331076d696e64627573026e6c0000010001 +b4338000000100000003000304646e7331076d696e64627573026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c0110002000100015180000704646e7333c011c00c00010001000151800004d44ff4ddc03b00010001000151800004d44ff645c04e00010001000151800004c3f5c70e + +25617 +b72f00000001000000000000037777770c6b65726b766f6c656e64616d026e6c0000010001 +b72f84030001000000010000037777770c6b65726b766f6c656e64616d026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +25618 +b36f0000000100000000000004686e73300774697363616c69026e6c0000010001 +b36f8000000100000003000204686e73300774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +25619 +1afd0000000100000000000004686e73310774697363616c69026e6c0000010001 +1afd8000000100000003000204686e73310774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +25620 +53ce00000001000000000000055f6c646170045f74637003706463065f6d736463730a737461686c77696c6c65026e6c0000210001 +53ce80000001000000020002055f6c646170045f74637003706463065f6d736463730a737461686c77696c6c65026e6c0000210001c0220002000100015180000d026e73077374616e6e6574c02dc02200020001000151800006036e7332c044c04100010001000151800004d5852414c05a00010001000151800004d5852418 + +25621 +c686000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +c686800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +25622 +5f4b00000001000000000000036e7333107365637572656e616d65736572766572026e6c0000010001 +5f4b80000001000000020002036e7333107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0350001000100015180000442a4f102c0470001000100015180000442a4f105 + +25623 +b58b0000000100000000000003777777106469676974616c6570696f6e69657273026e6c0000010001 +b58b8000000100000002000003777777106469676974616c6570696f6e69657273026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c038 + +25624 +41390000000100000000000006776468303131066e7434616c6c026e6c0000010001 +41398000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +25625 +ee7600000001000000000000046d617365026e6c0000010001 +ee7680000001000000030002046d617365026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +25626 +281500000001000000000000046e73303803777873026e6c0000260001 +281580000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25627 +22ac00000001000000000000046e73303903777873026e6c0000260001 +22ac80000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25628 +931500000001000000000000037777770e6865746d6f6f6973746568756973026e6c0000010001 +931580000001000000020002037777770e6865746d6f6f6973746568756973026e6c0000010001c01000020001000151800009036e7331026973c01fc01000020001000151800006036e7332c037c03300010001000151800004d5852102c04800010001000151800004d5c41503 + +25629 +280000000001000000000000036e73340767617574656e67026e6c0000010001 +280080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25630 +000c00000001000000000000036e73340767617574656e67026e6c0000010001 +000c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25631 +bcde000000010000000000000377777708636174776f6d616e026e6c0000010001 +bcde800000010000000200000377777708636174776f6d616e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +25632 +785700000001000000000000037777770a66726573687472617368026e6c0000010001 +785780000001000000030000037777770a66726573687472617368026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c037c0100002000100015180000a076e73686f737433c037 + +25633 +673a000000010000000000000564656b6579026e6c00000f0001 +673a800000010000000300030564656b6579026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c012c00c000200010001518000070470726932c02bc00c000200010001518000070470726933c02bc026000100010001518000049a0ff9a6c044000100010001518000049a0ff9aac057000100010001518000049a0ff9ae + +25634 +a2bc00000001000000000000037777770865726f747261696e026e6c0000010001 +a2bc80000001000000020002037777770865726f747261696e026e6c0000010001c0100002000100015180000b036e7331046e732d31c019c01000020001000151800006036e7332c031c02d000100010001518000045045a0cdc04400010001000151800004d4cceec8 + +25635 +dac200000001000000000000037777770d782d73747265616d6d65646961026e6c0000010001 +dac280000001000000030000037777770d782d73747265616d6d65646961026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c03ac0100002000100015180000a076e73686f737433c03a + +25636 +5a530000000100000000000008686f73746e616d650462696e640000100003 +5a538000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25637 +ca87000000010000000000000377777710696e6469616e736b696e746174746f6f026e6c0000010001 +ca87800000010000000200020377777710696e6469616e736b696e746174746f6f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c021c01000020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +25638 +c44f0000000100000000000006726f6775653906787334616c6c026e6c0000010001 +c44f8000000100000003000206726f6775653906787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25639 +32d3000000010000000000000462617261026e6c00000f0001 +32d3800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +25640 +8d2000000001000000000000036e733109696e686f6c6c616e64026e6c0000010001 +8d2080000001000000020002036e733109696e686f6c6c616e64026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c01ac00c00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +25641 +2eca00000001000000000000036e733109696e686f6c6c616e64026e6c00001c0001 +2eca80000001000000020002036e733109696e686f6c6c616e64026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c01ac00c00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +25642 +133c000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +133c800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +25643 +01520000000100000000000008686f73746e616d650462696e640000100003 +01528000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25644 +38c200000001000000000000036e73310e666c6578776562686f7374696e67026e6c0000010001 +38c280000001000000030002036e73310e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c00c00010001000151800004cf2cd7adc0410001000100015180000452c04365 + +25645 +7fa700000001000000000000036e73310e666c6578776562686f7374696e67026e6c0000010001 +7fa780000001000000030002036e73310e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c00c00010001000151800004cf2cd7adc0410001000100015180000452c04365 + +25646 +a08b0000000100000000000008686f73746e616d650462696e640000100003 +a08b8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25647 +541a0000000100000000000008686f73746e616d650462696e640000100003 +541a8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25648 +00a400000001000000000000097a6f6e6e6576656c64026e6c00000f0001 +00a480000001000000020000097a6f6e6e6576656c64026e6c00000f0001c00c0002000100015180000f026e7306777367617465036e657400c00c00020001000151800006036e7332c02d + +25649 +a47400000001000000000000056d76726476026e6c00000f0001 +a47480000001000000020000056d76726476026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c029 + +25650 +77fc000000010000000000000d6a616e7475696e737472616276026e6c00000f0001 +77fc800000010000000200000d6a616e7475696e737472616276026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c034 + +25651 +3b9c00000001000000000000027463036164730974656c656772616166026e6c0000010001 +3b9c80000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +25652 +32ab00000001000000000000026e7306636f6d6e6574026e6c0000010001 +32ab80000001000000020002026e7306636f6d6e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d46c106ec03800010001000151800004d46c1078 + +25653 +d6eb00000001000000000000036e733206636f6d6e6574026e6c0000010001 +d6eb80000001000000020002036e733206636f6d6e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004d46c106ec00c00010001000151800004d46c1078 + +25654 +1e230000000100000000000003616f6f026e6c00000f0001 +1e238000000100000002000003616f6f026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +25655 +ee7600000001000000000000057369736b75026e6c00001c0001 +ee7680000001000000020002057369736b75026e6c00001c0001c00c0002000100015180000a026e730469636d63c012c00c00020001000151800006036e7332c029c026000100010001518000043e643805c03c000100010001518000043e643806 + +25656 +ebc000000001000000000000037777770f6372697374696e77696c64626f6c7a026e6c0000010001 +ebc080000001000000020000037777770f6372697374696e77696c64626f6c7a026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c037 + +25657 +56a8000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +56a8800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +25658 +083e0000000100000000000008646f776e6c6f61640363707a026e6c0000010001 +083e8000000100000002000208646f776e6c6f61640363707a026e6c0000010001c0150002000100015180000e026e73086e65746177617265c019c01500020001000151800006036e7332c030c02d000100010001518000043eb1db32c047000100010001518000043eb1db3c + +25659 +7c0400000001000000000000037777770a706f726e706172726f74026e6c0000010001 +7c0480000001000000020002037777770a706f726e706172726f74026e6c0000010001c0100002000100015180001104646e733109696e7465726f757465c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d4173f3ec04c00010001000151800004d4173f3d + +25660 +10a70000000100000000000003777777076d696a6e736578026e6c0000010001 +10a78000000100000002000003777777076d696a6e736578026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02f + +25661 +5a07001000010000000000010377777707746865666c6f77026e6c00000100010000290800000000000000 +5a07800000010000000200030377777707746865666c6f77026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb0040000291000000000000000 + +25662 +cbd60000000100000000000003777777086275636b73686f74026e6c0000010001 +cbd68000000100000002000003777777086275636b73686f74026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +25663 +1f7d000000010000000000000377777707766f6c64657273026e6c0000010001 +1f7d800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25664 +ab0e0000000100000000000003777777096171756172656c6c65026e6c0000010001 +ab0e8000000100000002000203777777096171756172656c6c65026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01ac01000020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +25665 +2f70000000010000000000000377777707766f6c64657273026e6c0000010001 +2f70800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25666 +fd91000000010000000000000565666e657408767575727765726b026e6c0000010001 +fd91800000010000000300010565666e657408767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +25667 +2f80000000010000000000000377777707766f6c64657273026e6c0000010001 +2f80800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +25668 +90370000000100000000000005646e732d3808696e7465722d7873026e6c0000260001 +90378000000100000002000205646e732d3808696e7465722d7873026e6c0000260001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +25669 +3601001000010000000000010565666e657403626974026e6c00000100010000290800000080000000 +3601800000010000000300040565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b0000291000000000000000 + +25670 +468100000001000000000000066e65746e6574026e6c00000f0001 +468180000001000000020002066e65746e6574026e6c00000f0001c00c00020001000151800015026e730f6761726e69657270726f6a65637473c013c00c00020001000151800006036e7331c02ac027000100010001518000045117e122c048000100010001518000045117e142 + +25671 +be990000000100000000000003777777086f6e7a657461616c026e6c0000010001 +be998000000100000003000103777777086f6e7a657461616c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +25672 +0b99000000010000000000000472656e70026e6c0000010001 +0b99800000010000000200020472656e70026e6c0000010001c00c0002000100015180000b026e73057162616c6cc011c00c0002000100015180000f026e7309747269706c652d6974c011c02500010001000151800004d584b024c03c00010001000151800004d584b002 + +25673 +d1ba00000001000000000000037777770a6865746b65727370656c026e6c0000010001 +d1ba80000001000000020002037777770a6865746b65727370656c026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4b20403c04800010001000151800004d5881e45 + +25674 +bee700000001000000000000037777770966616d696c79776562026e6c0000010001 +bee780000001000000020002037777770966616d696c79776562026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c01ac01000020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +25675 +e1e20000000100000000000003777777096465736a616d61616e026e6c0000010001 +e1e28000000100000002000203777777096465736a616d61616e026e6c0000010001c01000020001000151800009036e7331026973c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5852102c04300010001000151800004d5c41503 + +25676 +ea290000000100000000000005726561616c026e6c00000f0001 +ea298000000100000002000005726561616c026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02a + +25677 +05f9000000010000000000000377777707746865666c6f77026e6c0000010001 +05f9800000010000000200020377777707746865666c6f77026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +25678 +52a00000000100000000000003777777076e65747765726b026e6c0000010001 +52a08000000100000003000303777777076e65747765726b026e6c0000010001c0100002000100015180000e076e73617574683103626974c018c0100002000100015180000a076e736175746832c034c0100002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +25679 +ecb900000001000000000000037777771076616b616e7469656b616c656e646572026e6c0000010001 +ecb980000001000000020002037777771076616b616e7469656b616c656e646572026e6c0000010001c0100002000100015180000f036e733108636f6d707574656cc021c01000020001000151800006036e7332c039c03500010001000151800004c3568680c05000010001000151800004c3568681 + +25680 +384300000001000000000000066e69656c7331106b72656e73636f6e73756c74616e6379026e6c0000060001 +384384030001000000010000066e69656c7331106b72656e73636f6e73756c74616e6379026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +25681 +ed9600000001000000000000096c6164796c65616473026e6c0000010001 +ed9680000001000000020000096c6164796c65616473026e6c0000010001c00c0002000100015180000f026e7306686f73743475036e657400c00c00020001000151800006036e7332c02d + +25682 +c83900000001000000000000037777770b686170707974726176656c026e6c0000010001 +c83980000001000000020002037777770b686170707974726176656c026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01cc0100002000100015180001004646e733208636f6e6365707473c01cc03000010001000151800004d5c51c03c04d00010001000151800004d5c51e1c + +25683 +7a5f0000000100000000000003706f7006787334616c6c026e6c0000010001 +7a5f8000000100000003000203706f7006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +25684 +d50300000001000000000000076b72656e74616c026e6c00000f0001 +d50380000001000000020002076b72656e74616c026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +25685 +205d00000001000000000000037777770c67656d65656e74656265656b026e6c0000010001 +205d80000001000000020002037777770c67656d65656e74656265656b026e6c0000010001c0100002000100015180000e026e73086d656761706c6578c01dc01000020001000151800006036e7331c034c03100010001000151800004504f6101c04b00010001000151800004504f6102 + +25686 +3dbf0000000100000000000008667265656d61696c026e6c0000010001 +3dbf8000000100000003000208667265656d61696c026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +25687 +179728000001000200000000026e6c0000060001066e69656c7331106b72656e73636f6e73756c74616e6379026e6c00000500fe000000000000c01400010001000000000004c0a80165 +1797a8040000000000000000 + +25688 +8248000000010000000000000970636d7366727430310370636d026e6c0000010001 +8248800000010000000200010970636d7366727430310370636d026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000b026e73026e6c036e657400c02e00010001000151800004c143e6dc + +25689 +a04000000001000000000000196e656465726c616e647365766f6f726465656c77696e6b656c026e6c0000ff0001 +a04080000001000000030002196e656465726c616e647365766f6f726465656c77696e6b656c026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c026c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c03ec03a00010001000151800004d4ccc0fcc06f000100010001518000043efa0703 + +25690 +8cde0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +8cde8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25691 +1d2e00000001000000000000036e733109756e69736f75726365026e6c0000010001 +1d2e80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +25692 +48af00000001000000000000036e7331046a617a65026e6c0000010001 +48af80000001000000020000036e7331046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +25693 +0000000070024000ae090000020405ac01010402 +000080010000000000000000 + +25694 +b5e1b72b5010441069980000000000000000 + + +25695 +df4d00000001000000000000037777770c6368726f6f6d76656c67656e026e6c0000010001 +df4d80000001000000030003037777770c6368726f6f6d76656c67656e026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c01dc01000020001000151800006036e7330c034c01000020001000151800006036e7333c034c03100010001000151800004c3561682c05100010001000151800004c3561683c06300010001000151800004d5de0bfa + +25696 +a844000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +a844800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +25697 +b5e1b72b501844100ec700000094cb29000000010001000000000f313031333631323238313837342d330000f900010f313031333631323238313837342d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403af729403c48a90003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 + + +25698 +22a100000001000000000000036e7334093475686f7374696e67026e6c0000010001 +22a180000001000000020000036e7334093475686f7374696e67026e6c0000010001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +25699 +613800000001000000000000036e7333093475686f7374696e67026e6c0000010001 +613880000001000000020000036e7333093475686f7374696e67026e6c0000010001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +25700 +d92f00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +d92f80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +25701 +ef9e00000001000000000000196e656465726c616e647365766f6f726465656c77696e6b656c026e6c0000010001 +ef9e80000001000000030002196e656465726c616e647365766f6f726465656c77696e6b656c026e6c0000010001c00c0002000100015180000d036e733106776964657873c026c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c03ec03a00010001000151800004d4ccc0fcc06f000100010001518000043efa0703 + +25702 +4d9500100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +4d9580000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +25703 +922e00000001000000000000026e7306746865626f73026e6c0000010001 +922e80000001000000030003026e7306746865626f73026e6c0000010001c00f0002000100015180000b026e73056f70737973c016c00f0002000100015180000e026e730876642d626f736368c016c00f00020001000151800002c00cc02a00010001000151800004507fd623c04100010001000151800004d5540498c00c000100010001518000043eb19695 + +25704 +5fac0000000100000000000005646e732d31056c61646f74026e6c0000010001 +5fac8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25705 +649100000001000000000000026e730876642d626f736368026e6c0000010001 +649180000001000000030003026e730876642d626f736368026e6c0000010001c00f0002000100015180000b026e73056f70737973c018c00f00020001000151800002c00cc00f0002000100015180000c026e7306746865626f73c018c02c00010001000151800004507fd623c00c00010001000151800004d5540498c051000100010001518000043eb19695 + +25706 +b5e1b7395011440269010000000000000000 + + +25707 +14ff00000001000000000000037777770a73746172746b6162656c026e6c0000010001 +14ff80000001000000030001037777770a73746172746b6162656c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +25708 +0000000070024000be8d0000020405ac01010402 +000080010000000000000000 + +25709 +59b50000000100000000000008707263373162353505707263373107747067706f7374026e6c0000010001 +59b58000000100000002000208707263373162353505707263373107747067706f7374026e6c0000010001c01b0002000100015180000e036e733207737570706f7274c023c01b00020001000151800006036e7334c03bc03700010001000151800004c372e7c8c05100010001000151800004c372e6fe + +25710 +7eb80000000100000000000008707263373162353505707263373107747067706f7374026e6c00001c0001 +7eb88000000100000002000208707263373162353505707263373107747067706f7374026e6c00001c0001c01b0002000100015180000e036e733207737570706f7274c023c01b00020001000151800006036e7334c03bc03700010001000151800004c372e7c8c05100010001000151800004c372e6fe + +25711 +79d30000000100000000000008707263373162353505707263373107747067706f7374026e6c0000260001 +79d38000000100000002000208707263373162353505707263373107747067706f7374026e6c0000260001c01b0002000100015180000e036e733207737570706f7274c023c01b00020001000151800006036e7334c03bc03700010001000151800004c372e7c8c05100010001000151800004c372e6fe + +25712 +b5e1b73a5010440269000000000000000000 + + +25713 +0ca20000000100000000000005646e732d31056c61646f74026e6c0000010001 +0ca28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25714 +06bb0000000100000000000003777777056b6e6c7462026e6c0000010001 +06bb8000000100000002000203777777056b6e6c7462026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c016c01000020001000151800006036e7332c02dc02a00010001000151800004d9aa2042c04300010001000151800004d9aa2c06 + +25715 +cc6e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +cc6e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25716 +d16400000001000000000000097072696e74666f6f64026e6c00001c0001 +d16480000001000000020002097072696e74666f6f64026e6c00001c0001c00c0002000100015180000e036e7331077069636f776562c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450642016c04400010001000151800004c3f16fbd + +25717 +dc3a0000000100000000000007747067706f7374026e6c0000010001 +dc3a8000000100000002000207747067706f7374026e6c0000010001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +25718 +b5e2af585010441081ee0000000000000000 + + +25719 +b5e2af58501844109df6000000945551000000010001000000000f313031333631323238313837342d320000f900010f313031333631323238313837342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af729403c48a90003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 + + +25720 +14140000000100000000000005646e732d31056c61646f74026e6c0000010001 +14148000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25721 +9778000000010000000000000363686d0463687269026e6c0000010001 +9778800000010000000200020363686d0463687269026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c015c01000020001000151800006036e7332c02cc02900010001000151800004d453c005c04700010001000151800004d453c006 + +25722 +b9750000000100000000000005646e732d32056c61646f74026e6c0000010001 +b9758000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25723 +65f700000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000010001 +65f780000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25724 +b5e2af665011440281570000000000000000 + + +25725 +52460000000100000000000007667265656c6572026e6c0000010001 +52468000000100000002000007667265656c6572026e6c0000010001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +25726 +5fd400000001000000000000037777770473627336026e6c0000010001 +5fd480000001000000020000037777770473627336026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +25727 +d56d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +d56d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25728 +2fcc0000000100000000000003777777126175746f62656472696a666672616e6b656e026e6c0000010001 +2fcc8000000100000002000003777777126175746f62656472696a666672616e6b656e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c023c0100002000100015180000704686e7331c03c + +25729 +23820000000100000000000005646e732d32056c61646f74026e6c0000010001 +23828000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25730 +c68700000001000000000000077765626d61696c03776e69026e6c00001c0001 +c68780000001000000020002077765626d61696c03776e69026e6c00001c0001c01400020001000151800009026e73036f6b65c018c01400020001000151800006036e7332c02fc02c00010001000151800004c13acc3bc04100010001000151800004c13acc27 + +25731 +d71900000001000000000000077765626d61696c03776e69026e6c0000260001 +d71980000001000000020002077765626d61696c03776e69026e6c0000260001c01400020001000151800009026e73036f6b65c018c01400020001000151800006036e7332c02fc02c00010001000151800004c13acc3bc04100010001000151800004c13acc27 + +25732 +07a800000001000000000000046d61696c0464696f6e026e6c0000010001 +07a880000001000000020000046d61696c0464696f6e026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c030 + +25733 +4ce0000000010000000000000866616c6c6261636b066174696e6574026e6c0000010001 +4ce0800000010000000200020866616c6c6261636b066174696e6574026e6c0000010001c01500020001000151800018067765626e69780e6575726f636f6e73756c74616e74c01cc0150002000100015180000a076d61696c6e6978c037c030000100010001518000045117e555c054000100010001518000045117e556 + +25734 +7757000000010000000000000866616c6c6261636b066174696e6574026e6c00001c0001 +7757800000010000000200020866616c6c6261636b066174696e6574026e6c00001c0001c01500020001000151800018067765626e69780e6575726f636f6e73756c74616e74c01cc0150002000100015180000a076d61696c6e6978c037c030000100010001518000045117e555c054000100010001518000045117e556 + +25735 +4860000000010000000000000866616c6c6261636b066174696e6574026e6c0000260001 +4860800000010000000200020866616c6c6261636b066174696e6574026e6c0000260001c01500020001000151800018067765626e69780e6575726f636f6e73756c74616e74c01cc0150002000100015180000a076d61696c6e6978c037c030000100010001518000045117e555c054000100010001518000045117e556 + +25736 +2c7100000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +2c7180000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25737 +595700000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000260001 +595780000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25738 +66ca0000000100000000000005646e732d31056c61646f74026e6c0000010001 +66ca8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25739 +b1810000000100000000000005646e732d32056c61646f74026e6c0000010001 +b1818000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25740 +0550001000010000000000010774697363616c69026e6c0000ff00010000290800000080000000 +0550800000010000000300030774697363616c69026e6c0000ff0001c00c0002000100015180000704616e7331c00cc00c0002000100015180000704616e7332c00cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02800010001000151800004c3f14d38c03b00010001000151800004c3f133250000291000000000000000 + +25741 +64840000000100000000000003777777047772696a026e6c0000010001 +64848000000100000002000203777777047772696a026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +25742 +f3e000000001000000000000066d69636b6579066e6574636f6d026e6c0000010001 +f3e080000001000000020001066d69636b6579066e6574636f6d026e6c0000010001c01300020001000151800002c00cc01300020001000151800010066d696e6e696506787334616c6cc01ac00c00010001000151800004c2863082 + +25743 +2e9d000000010000000000000565666e657403626974026e6c0000010001 +2e9d800000010000000300030565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +25744 +58250000000100000000000005646e732d31056c61646f74026e6c0000010001 +58258000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25745 +bac70000000100000000000005646e732d32056c61646f74026e6c0000010001 +bac78000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25746 +0171000000010000000000000774697363616c69026e6c0000ff0001 +0171800000010000000300020774697363616c69026e6c0000ff0001c00c0002000100015180000704616e7331c00cc00c0002000100015180000704616e7332c00cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02800010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +25747 +15d600000001000000000000026d7804686f6d65026e6c0000010001 +15d680000001000000030003026d7804686f6d65026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc02800010001000151800004d47842ccc03a00010001000151800004d5338161c04c00010001000151800004d533804b + +25748 +021e0000000100000000000003777777066275696b6573026e6c0000010001 +021e8000000100000002000003777777066275696b6573026e6c0000010001c01000020001000151800014026e730b6578706c61696e65726463036e657400c0100002000100015180000d026e73056132303030026e7500 + +25749 +42450000000100000000000005646e732d31056c61646f74026e6c0000010001 +42458000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25750 +9b690000000100000000000005646e732d32056c61646f74026e6c0000010001 +9b698000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25751 +743300000001000000000000037777770c70756265726d6569736a6573026e6c0000010001 +743380000001000000020000037777770c70756265726d6569736a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +25752 +1a480000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +1a488000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +25753 +22520000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +22528000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +25754 +465800000001000000000000076b72656e74616c026e6c0000ff0001 +465880000001000000020002076b72656e74616c026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +25755 +1f730000000100000000000005646e732d31056c61646f74026e6c0000010001 +1f738000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25756 +e06b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +e06b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25757 +529b00100001000000000001026e7308767575727765726b026e6c00000100010000290800000000000000 +529b80000001000000030002026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +25758 +270400100001000000000001036e733208767575727765726b026e6c00000100010000290800000000000000 +270480000001000000030002036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa02020000291000000000000000 + +25759 +b144000000010000000000000377777707746573746e6574026e6c0000010001 +b144800000010000000200020377777707746573746e6574026e6c0000010001c01000020001000151800009036e7331026373c018c01000020001000151800013036e73320c636f6c742d74656c65636f6dc018c02c00010001000151800004d47bfe02c04100010001000151800004d44ea00e + +25760 +ecc60000000100000000000005646e732d31056c61646f74026e6c0000010001 +ecc68000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25761 +007b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +007b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25762 +b5e2af675010440281560000000000000000 + + +25763 +c98c00000001000000000000026e7308767575727765726b026e6c0000010001 +c98c80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +25764 +721b00000001000000000000036e733208767575727765726b026e6c0000010001 +721b80000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +25765 +1445000000010000000000000469632d73026e6c0000010001 +1445800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25766 +2cb10000000100000000000005646e732d31056c61646f74026e6c0000010001 +2cb18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25767 +8db90000000100000000000005646e732d32056c61646f74026e6c0000010001 +8db98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25768 +8a7a00000001000000000000036e733503777873026e6c0000010001 +8a7a80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25769 +300b00000001000000000000086476642d686f6d65026e6c0000010001 +300b80000001000000020000086476642d686f6d65026e6c0000010001c00c00020001000151800016036e73310c7265616479686f7374696e6703636f6d00c00c00020001000151800006036e7332c02d + +25770 +c8c900000001000000000000036e73330767617574656e67026e6c0000010001 +c8c980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25771 +c8ca00000001000000000000036e73340767617574656e67026e6c0000010001 +c8ca80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25772 +05d10000000100000000000005646e732d31056c61646f74026e6c0000010001 +05d18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25773 +d3db0000000100000000000005646e732d32056c61646f74026e6c0000010001 +d3db8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25774 +17a40000000100000000000003777777066b7a626f7577026e6c0000010001 +17a48000000100000002000003777777066b7a626f7577026e6c0000010001c01000020001000151800010036e733106686f73747333036e657400c01000020001000151800006036e7332c02f + +25775 +803a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +803a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25776 +7b630000000100000000000005646e732d32056c61646f74026e6c0000010001 +7b638000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25777 +779f0000000100000000000003777777086a6f686e2d726f6e026e6c0000010001 +779f8000000100000002000003777777086a6f686e2d726f6e026e6c0000010001c0100002000100015180000f036e73310561676e2d65036e657400c01000020001000151800006036e7332c031 + +25778 +99e700000001000000000000046d61696c05666573746f026e6c0000010001 +99e780000001000000020002046d61696c05666573746f026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000c036e73320563736e6574c017c02b000100010001518000043e3a5c14c03c00010001000151800004c2451212 + +25779 +e82700000001000000000000037777770b6c61757465736c61676572026e6c0000010001 +e82780000001000000020002037777770b6c61757465736c61676572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +25780 +72cc0000000100000000000005646e732d31056c61646f74026e6c0000010001 +72cc8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25781 +738e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +738e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25782 +779d00000001000000000000026e73036f7568026e6c0000010001 +779d80000001000000030003026e73036f7568026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c0001000100015180000491147e0cc035000100010001518000049114dc06c04700010001000151800004c0576a65 + +25783 +5e2b00000001000000000000026e73036f7568026e6c00001c0001 +5e2b80000001000000030003026e73036f7568026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c0001000100015180000491147e0cc035000100010001518000049114dc06c04700010001000151800004c0576a65 + +25784 +b6de00000001000000000000026e73036f7568026e6c0000260001 +b6de80000001000000030003026e73036f7568026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c0001000100015180000491147e0cc035000100010001518000049114dc06c04700010001000151800004c0576a65 + +25785 +ce1d00000001000000000000036e7332036f7568026e6c0000010001 +ce1d80000001000000030003036e7332036f7568026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000491147e0cc00c000100010001518000049114dc06c04700010001000151800004c0576a65 + +25786 +92eb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +92eb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25787 +c2a400000001000000000000036e7332036f7568026e6c00001c0001 +c2a480000001000000030003036e7332036f7568026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000491147e0cc00c000100010001518000049114dc06c04700010001000151800004c0576a65 + +25788 +1ad60000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +1ad68000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25789 +b90d00000001000000000000036e7332036f7568026e6c0000260001 +b90d80000001000000030003036e7332036f7568026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000491147e0cc00c000100010001518000049114dc06c04700010001000151800004c0576a65 + +25790 +9f7300100001000000000001036e733503777873026e6c00000100010000290800000080000000 +9f7380000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +25791 +68e000100001000000000001046e73303803777873026e6c00000100010000290800000080000000 +68e080000001000000030004046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +25792 +b47000100001000000000001046e73303903777873026e6c00000100010000290800000080000000 +b47080000001000000030004046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +25793 +b611000000010000000000000572656c6179036f7568026e6c0000010001 +b611800000010000000300030572656c6179036f7568026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000e036e733107737572666e6574c016c02a0001000100015180000491147e0cc03b000100010001518000049114dc06c04d00010001000151800004c0576a65 + +25794 +48b600000001000000000000036e7331046a617a65026e6c0000010001 +48b680000001000000020000036e7331046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +25795 +c9ba0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c9ba8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25796 +081b00000001000000000000036e73330767617574656e67026e6c0000010001 +081b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25797 +cc5000000001000000000001066865746e6574026e6c00001c00010000291000000000000000 +cc5080000001000000030004066865746e6574026e6c00001c0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a650000291000000000000000 + +25798 +6f870000000100000000000005646e732d31056c61646f74026e6c0000010001 +6f878000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25799 +6e580000000100000000000005646e732d32056c61646f74026e6c0000010001 +6e588000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25800 +e522000000010000000000000a616d7374656c72616465026e6c0000010001 +e522800000010000000200000a616d7374656c72616465026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +25801 +1fb700000001000000000000036e733103696467026e6c0000010001 +1fb780000001000000030003036e733103696467026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +25802 +3ae000000001000000000000036e733203696467026e6c0000010001 +3ae080000001000000030003036e733203696467026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +25803 +1e7600000001000000000000036e733303696467026e6c0000010001 +1e7680000001000000030003036e733303696467026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +25804 +6efa00000001000000000000026e73076e656473746174026e6c0000010001 +6efa80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25805 +2b6b00000001000000000000036e733103696467026e6c0000010001 +2b6b80000001000000030003036e733103696467026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +25806 +e1d70000000100000000000005646e732d31056c61646f74026e6c0000010001 +e1d78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25807 +656d00000001000000000000036e733203696467026e6c0000010001 +656d80000001000000030003036e733203696467026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +25808 +0b8e00000001000000000000036e733303696467026e6c0000010001 +0b8e80000001000000030003036e733303696467026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +25809 +3837000000010000000000000377777709776562776572656c64026e6c0000010001 +3837800000010000000300030377777709776562776572656c64026e6c0000010001c0100002000100015180000a036e733103696467c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e0001000100015180000451af4646c0440001000100015180000451af4647c05600010001000151800004d5a0fde6 + +25810 +d39e00000001000000000000076d756c7469666f026e6c0000ff0001 +d39e80000001000000020000076d756c7469666f026e6c0000ff0001c00c00020001000151800012036e7337087465646f63776562036e657400c00c00020001000151800006036e7338c02c + +25811 +7ff800000001000000000000037777770c62656163686d617374657273026e6c0000010001 +7ff880000001000000030001037777770c62656163686d617374657273026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +25812 +6fc200000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000010001 +6fc280000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25813 +193f00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +193f80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25814 +f1b200000001000000000000056e65706173026e6c0000ff0001 +f1b280000001000000020002056e65706173026e6c0000ff0001c00c0002000100015180000c026e73067574722d6978c012c00c00020001000151800006036e7332c029c0260001000100015180000451113206c03e00010001000151800004d5c42806 + +25815 +04d80000000100000000000003697677026e6c00000f0001 +04d88000000100000002000003697677026e6c00000f0001c00c0002000100015180000d0673636f74747903647376c010c00c0002000100015180000906706963617264c02b + +25816 +377d00000001000000000000036e7333076e656473746174026e6c0000010001 +377d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25817 +bb22000000010000000000000469632d73026e6c0000010001 +bb22800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25818 +ca7a00000001000000000000055f6c646170045f746370026463065f6d73646373076b6c6a626f7577026e6c0000060001 +ca7a84030001000000010000055f6c646170045f746370026463065f6d73646373076b6c6a626f7577026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +25819 +998f0000000100000000000006636861726973026e6c0000010001 +998f8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +25820 +b900000000010000000000000d76616e676f67686d757365756d026e6c00000f0001 +b900800000010000000200020d76616e676f67686d757365756d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +25821 +be2e00000001000000000000036e73310477656233026e6c00001c0001 +be2e80000001000000020002036e73310477656233026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d436240ec03700010001000151800004c2b262ef + +25822 +4ad100000001000000000000036e73310477656233026e6c0000260001 +4ad180000001000000020002036e73310477656233026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d436240ec03700010001000151800004c2b262ef + +25823 +a8d400000001000000000000036e73320477656233026e6c00001c0001 +a8d480000001000000020002036e73320477656233026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d436240ec00c00010001000151800004c2b262ef + +25824 +208e00000001000000000000036e73320477656233026e6c0000260001 +208e80000001000000020002036e73320477656233026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d436240ec00c00010001000151800004c2b262ef + +25825 +efda0000000100000000000003777777067362736e6574026e6c0000010001 +efda8000000100000002000103777777067362736e6574026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +25826 +054a0000000100000000000003777777036d6178036e6667026e6c0000010001 +054a8000000100000002000103777777036d6178036e6667026e6c0000010001c01400020001000151800005026e73c014c0140002000100015180000d036e733306636f62776562c018c02c00010001000151800004c26dd603 + +25827 +743a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +743a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25828 +1d600000000100000000000009652d6c756e61746963026e6c0000010001 +1d608000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +25829 +73080000000100000000000005646e732d31056c61646f74026e6c0000010001 +73088000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25830 +49f2000000010000000000000e776f757476616e6c65657577656e026e6c00000f0001 +49f2800000010000000200000e776f757476616e6c65657577656e026e6c00000f0001c00c00020001000151800010036e733106686f73747338036e657400c00c00020001000151800006036e7332c033 + +25831 +175e000000010000000000000b6865726d65733130316e6c06766961766961026e6c00000f0001 +175e800000010000000200020b6865726d65733130316e6c06766961766961026e6c00000f0001c01800020001000151800009026e730369736dc01fc01800020001000151800006036e7332c036c03300010001000151800004d994ab02c04800010001000151800004d994ab03 + +25832 +c8cc00000001000000000000036e73330767617574656e67026e6c0000010001 +c8cc80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25833 +c8cd00000001000000000000036e73340767617574656e67026e6c0000010001 +c8cd80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +25834 +8af3000000010000000000000676697375616c026e6c00000f0001 +8af3800000010000000200000676697375616c026e6c00000f0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c02a + +25835 +10dc00000001000000000000077368652d706f6e026e6c0000010001 +10dc80000001000000020000077368652d706f6e026e6c0000010001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02c + +25836 +8dbf000000010000000000000377777709646f6c6c67726f6570026e6c0000010001 +8dbf800000010000000200000377777709646f6c6c67726f6570026e6c0000010001c0100002000100015180001a036e733110646f6c6c61726368697465637475726503636f6d00c01000020001000151800006036e7332c032 + +25837 +991a0000000100000000000003777777047765726b026e6c0000010001 +991a8000000100000002000103777777047765726b026e6c0000010001c0100002000100015180000b026e7305617262766fc015c0100002000100015180000d036e7332036b706e036e657400c02900010001000151800004c2971702 + +25838 +658700000001000000000000036e73310b6d6564696164657369676e026e6c0000010001 +658780000001000000020002036e73310b6d6564696164657369676e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3b1f203c03e00010001000151800004d4ccf533 + +25839 +a5fa00000001000000000000036e73320b6d6564696164657369676e026e6c0000010001 +a5fa80000001000000020002036e73320b6d6564696164657369676e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004c3b1f203c00c00010001000151800004d4ccf533 + +25840 +410f00000001000000000000037777770663697479666d026e6c0000010001 +410f80000001000000020002037777770663697479666d026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c017c01000020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +25841 +cce200000001000000000000037777770c62657374656c766961677261026e6c0000010001 +cce280000001000000020002037777770c62657374656c766961677261026e6c0000010001c0100002000100015180000f036e7331086a64696d65646961c01dc01000020001000151800012036e73310b6b6c6f6d70652d72757070c01dc03100010001000151800004d4ccc034c04c000100010001518000043e3a9862 + +25842 +d1400000000100000000000005646e732d32056c61646f74026e6c0000010001 +d1408000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25843 +560a00000001000000000000086361726577657374026e6c0000010001 +560a80000001000000020002086361726577657374026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +25844 +3aab0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3aab8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25845 +9c5800000001000000000000037777770673756e776562026e6c0000010001 +9c5880000001000000020002037777770673756e776562026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c017c01000020001000151800006036e7332c02ec02b00010001000151800004d9aa2042c04400010001000151800004d9aa2c06 + +25846 +9d0a00000001000000000000037777770b7061617264656e666f746f026e6c0000010001 +9d0a80000001000000020002037777770b7061617264656e666f746f026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +25847 +02c7000000010000000000000c616c70656e6b7265757a6572026e6c0000ff0001 +02c7800000010000000200020c616c70656e6b7265757a6572026e6c0000ff0001c00c0002000100015180000a036e733103677673c019c00c00020001000151800006036e7332c031c02d000100010001518000045054e1aac04300010001000151800004d4ccc646 + +25848 +b6c900000001000000000000117072617869732d6175746f6d6174696f6e026e6c00000f0001 +b6c980000001000000020002117072617869732d6175746f6d6174696f6e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ec00c00020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +25849 +14c2001000010000000000010469632d73026e6c00000f00010000290800000000000000 +14c2800000010000000200010469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +25850 +235b00000001000000000000116665656e73747261656e76616e676f6f72026e6c0000010001 +235b80000001000000030003116665656e73747261656e76616e676f6f72026e6c0000010001c00c00020001000151800011036e73310a74727565736572766572c01ec00c00020001000151800006036e7332c036c00c00020001000151800006036e7333c036c03200010001000151800004d5ef8003c04f00010001000151800004d5efb004c06100010001000151800004d5ef8005 + +25851 +d60c00000001000000000000046d61696c096e6564657272696a6e026e6c00001c0001 +d60c80000001000000020002046d61696c096e6564657272696a6e026e6c00001c0001c01100020001000151800015026e730f6761726e69657270726f6a65637473c01bc01100020001000151800006036e7331c032c02f000100010001518000045117e122c050000100010001518000045117e142 + +25852 +ce8100000001000000000000046d61696c096e6564657272696a6e026e6c0000260001 +ce8180000001000000020002046d61696c096e6564657272696a6e026e6c0000260001c01100020001000151800015026e730f6761726e69657270726f6a65637473c01bc01100020001000151800006036e7331c032c02f000100010001518000045117e122c050000100010001518000045117e142 + +25853 +cc3b00000001000000000000056e7664736b026e6c00000f0001 +cc3b80000001000000020000056e7664736b026e6c00000f0001c00c00020001000151800013036e733109746572612d6279746503636f6d00c00c00020001000151800006036e7332c02a + +25854 +1f6500100001000000000001036e733103697870026e6c00000100010000290800000080000000 +1f6580000001000000020003036e733103697870026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f0000291000000000000000 + +25855 +ccfc00100001000000000001036e733203697870026e6c00000100010000290800000080000000 +ccfc80000001000000020003036e733203697870026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d943e639c00c000100010001518000043efa063f0000291000000000000000 + +25856 +1c9000000001000000000000037777770a78736f6c7574696f6e73026e6c0000010001 +1c9080000001000000020002037777770a78736f6c7574696f6e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f00010001000151800004c3562e38c04100010001000151800004c3562e39 + +25857 +d14400000001000000000000036e73330564656d6f6e026e6c0000010001 +d14480000001000000030002036e73330564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +25858 +1a8900000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +1a8980000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +25859 +5e330000000100000000000003777777077069732d736578026e6c0000010001 +5e338000000100000002000003777777077069732d736578026e6c0000010001c01000020001000151800011036e7331087072696f7277656202626500c01000020001000151800006036e7332c030 + +25860 +625c000000010000000000000377777710646572657374617572616e7467696473026e6c0000010001 +625c800000010000000300000377777710646572657374617572616e7467696473026e6c0000010001c01000020001000151800012036e73310b64696e65726f6e6c696e65c021c01000020001000151800006036e7332c039c01000020001000151800006036e7333c039 + +25861 +594300000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +594380000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25862 +2be600000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +2be680000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25863 +cabd00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +cabd80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25864 +a5e00000000100000000000005646e732d32056c61646f74026e6c0000010001 +a5e08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25865 +653300000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +653380000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25866 +94f400000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +94f480000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +25867 +a55200000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +a55280000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +25868 +b62900000001000000000000037777770474726573026e6c0000010001 +b62980000001000000020000037777770474726573026e6c0000010001c0100002000100015180000c026e7306766576696461c015c01000020001000151800006036e7332c02c + +25869 +2d3900000001000000000000036e733503777873026e6c0000010001 +2d3980000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +25870 +9e0000000001000000000000046e73303803777873026e6c0000010001 +9e0080000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25871 +a7a500000001000000000000046e73303903777873026e6c0000010001 +a7a580000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +25872 +e1a8000000010000000000000a637265646974766965770a6e6d622d68656c6c6572026e6c0000010001 +e1a8800000010000000200010a637265646974766965770a6e6d622d68656c6c6572026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000d036e7332036b706e036e657400c03600010001000151800004c2971685 + +25873 +731a00000001000000000000036e733103697870026e6c0000010001 +731a80000001000000020002036e733103697870026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f + +25874 +398d00000001000000000000036e733203697870026e6c0000010001 +398d80000001000000020002036e733203697870026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d943e639c00c000100010001518000043efa063f + +25875 +237f00000001000000000000037777770c62656e6a696a6f6e6c696e65026e6c0000010001 +237f80000001000000020000037777770c62656e6a696a6f6e6c696e65026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c034 + +25876 +cc5000000001000000000000066865746e6574026e6c00001c0001 +cc5080000001000000030003066865746e6574026e6c00001c0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +25877 +230900000001000000000000037777771064616e7363656e7472756d766c69656b026e6c0000010001 +230984030001000000010000037777771064616e7363656e7472756d766c69656b026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +25878 +28800000000100000000000008686f73746e616d650462696e640000100003 +28808000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25879 +bf550000000100000000000008686f73746e616d650462696e640000100003 +bf558000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +25880 +26c800000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000010001 +26c880000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +25881 +10cf00000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000010001 +10cf80000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +25882 +267400000001000000000000076369746164656c096e75636c6574726f6e026e6c0000010001 +267480000001000000030001076369746164656c096e75636c6574726f6e026e6c0000010001c01400020001000151800007046d61696cc014c01400020001000151800012047365633103646e73067073696e6574c01ec014000200010001518000070473656332c04ac03200010001000151800004c3510f14 + +25883 +621d000000010000000000000469632d73026e6c00000f0001 +621d800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +25884 +145400000001000000000000037777770873686f7574626f78026e6c0000010001 +145480000001000000020000037777770873686f7574626f78026e6c0000010001c0100002000100015180000d026e73046f78656f03636f6d00c01000020001000151800006036e7332c030 + +25885 +610c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +610c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25886 +7f130000000100000000000005646e732d32056c61646f74026e6c0000010001 +7f138000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25887 +3ac100000001000000000000037777770461736369026e6c0000010001 +3ac180000001000000030003037777770461736369026e6c0000010001c01000020001000151800010036e733109657863657074696f6ec015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004d5c9a38cc04500010001000151800004d5c9a38dc05700010001000151800004d5c9af03 + +25888 +85a30000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +85a38000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25889 +30530000000100000000000005736d7470310378626e026e6c0000010001 +30538000000100000002000005736d7470310378626e026e6c0000010001c0120002000100015180000f036e73310571696e6970036e657400c01200020001000151800006036e7332c02e + +25890 +e84f0000000100000000000005736d7470310378626e026e6c00001c0001 +e84f8000000100000002000005736d7470310378626e026e6c00001c0001c0120002000100015180000f036e73310571696e6970036e657400c01200020001000151800006036e7332c02e + +25891 +5bc300000001000000000000077665726d6565720874656c6562797465026e6c0000010001 +5bc380000001000000020002077665726d6565720874656c6562797465026e6c0000010001c01400020001000151800006036e7333c014c01400020001000151800006036e7334c014c03100010001000151800004d5d38115c04300010001000151800004d5d38116 + +25892 +55c400000001000000000000096d6f6e64726961616e0874656c6562797465026e6c0000010001 +55c480000001000000020002096d6f6e64726961616e0874656c6562797465026e6c0000010001c01600020001000151800006036e7333c016c01600020001000151800006036e7334c016c03300010001000151800004d5d38115c04500010001000151800004d5d38116 + +25893 +000600000001000000000000026e73076e656473746174026e6c00001c0001 +000680000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25894 +a91300000001000000000000026e73076e656473746174026e6c0000260001 +a91380000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25895 +2daa00000001000000000000036e7332076e656473746174026e6c0000010001 +2daa80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25896 +3e9300000001000000000000036e7332076e656473746174026e6c00001c0001 +3e9380000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25897 +efc600000001000000000000036e7332076e656473746174026e6c0000260001 +efc680000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25898 +8b0400000001000000000000036e7333076e656473746174026e6c00001c0001 +8b0480000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25899 +0f4d00000001000000000000036e7333076e656473746174026e6c0000260001 +0f4d80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25900 +ecfb00000001000000000000036e7334076e656473746174026e6c0000010001 +ecfb80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25901 +97d400000001000000000000036e7334076e656473746174026e6c00001c0001 +97d480000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25902 +b9bb00000001000000000000036e7334076e656473746174026e6c0000260001 +b9bb80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25903 +f64300000001000000000000046162656c0564656d6f6e026e6c00000f0001 +f64380000001000000030002046162656c0564656d6f6e026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +25904 +15e60000000100000000000005646e732d31056c61646f74026e6c0000010001 +15e68000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25905 +2a760000000100000000000005646e732d32056c61646f74026e6c0000010001 +2a768000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25906 +994c000000010000000000000a636f6d7075747261696e026e6c00000f0001 +994c800000010000000200010a636f6d7075747261696e026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7334036b706e036e657400c02b00010001000151800004c297b902 + +25907 +9c37000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +9c37800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +25908 +fde600000001000000000000056275626c7903313233026e6c0000010001 +fde680000001000000020002056275626c7903313233026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c016c00c00020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +25909 +70b600000001000000000000046d696b650c6d657373616765626f617264026e6c0000010001 +70b680000001000000020000046d696b650c6d657373616765626f617264026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c035 + +25910 +3e0428000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d736463730477617166026e6c0000210001000002580016000000640185067365727665720477617166026e6c00 +3e04a8040000000000000000 + +25911 +c2080000000100000000000018727061617264656b6f6f70657233343340667265656c6572026e6c0000010001 +c2088403000100000001000018727061617264656b6f6f70657233343340667265656c6572026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +25912 +2496000000010000000000000c70736f7269617369732d666e026e6c00000f0001 +2496800000010000000300020c70736f7269617369732d666e026e6c00000f0001c00c0002000100015180000d036e733106776964657873c019c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +25913 +58f8000000010000000000000469647476026e6c0000010001 +58f8800000010000000200020469647476026e6c0000010001c00c0002000100015180000e036e7331076f726967696e38c011c00c00020001000151800006036e7332c029c02500010001000151800004c26d6e11c03f00010001000151800004d4ccc0f8 + +25914 +6bf300000001000000000000036e733206726f6f736974026e6c0000010001 +6bf380000001000000020002036e733206726f6f736974026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d41ac10ac00c00010001000151800004d413c182 + +25915 +074a28000001000200000000026e6c000006000107746573742d61640e6b6168756e612d746573744c4142026e6c00000500fe000000000000c01400010001000000000004c0a80002 +074aa8040000000000000000 + +25916 +0000000070024000cc0a0000020405b401010402 +000080010000000000000000 + +25917 +60030000000100000000000005646e732d31056c61646f74026e6c0000010001 +60038000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25918 +10520000000100000000000005646e732d32056c61646f74026e6c0000010001 +10528000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +25919 +000000007002faf089fb0000020405b401010402 +000080010000000000000000 + +25920 +b5e6ab0d50104470935a0000000000000000 + + +25921 +318c000000010000000000000833323366636c7562026e6c00000f0001 +318c800000010000000200020833323366636c7562026e6c00000f0001c00c0002000100015180000e036e7331076f6d732d6e6574c015c00c00020001000151800006036e7332c02dc02900010001000151800004d5efb22fc04300010001000151800004d5ef9d07 + +25922 +b5e6ab0d5018447076b20000008998c8000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7de0403ccf6000030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +25923 +b5e73d7d5010faf0c34a0000000000000000 +b5e7bd740000000000000000 + +25924 +b5e73d7d5018faf01ee00000009431b8000000010001000000000f313039393531313632373739342d330000f900010f313039393531313632373739342d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afb18403c4c980003000000354e544c4d535350000100000097b208e00e000e00270000000700070020000000544553542d41444b4148554e412d544553544c41420000 +b5e7bd740000000000000000 + +25925 +744a00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +744a80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +25926 +3a2500100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +3a2580000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +25927 +b5e73d8b5011fae2c2b30000000000000000 +b5e7bd840000000000000000 + +25928 +000000007002faf09e490000020405b401010402 +000080010000000000000000 + +25929 +b5e6ab1b5011446292ce0000000000000000 + + +25930 +502900000001000000000000036e733109756e69736572766572026e6c0000010001 +502980000001000000020002036e733109756e69736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +25931 +0f0400000001000000000000036e733209756e69736572766572026e6c0000010001 +0f0480000001000000020002036e733209756e69736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c3454b03c00c00010001000151800004d119a2fa + +25932 +0000000070024000d7b30000020405b401010402 +000080010000000000000000 + +25933 +755c00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +755c80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +25934 +3aae00000001000000000000036e73310974656c656b6162656c026e6c0000260001 +3aae80000001000000020002036e73310974656c656b6162656c026e6c0000260001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +25935 +b5e73d8c5010fae2c2b20000000000000000 +b5e7bd840000000000000000 + +25936 +bbb200000001000000000000076e657470726f66026e6c0000ff0001 +bbb280000001000000020002076e657470726f66026e6c0000ff0001c00c0002000100015180000a026e730469636d63c014c00c00020001000151800006036e7332c02bc028000100010001518000043e643805c03e000100010001518000043e643806 + +25937 +b5e829da5010faf0eb3a0000000000000000 +b5e8a9d40000000000000000 + +25938 +b5e829da5018faf0c24a00000094b73e000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afb18403c4c980003000000354e544c4d535350000100000097b208e00e000e00270000000700070020000000544553542d41444b4148554e412d544553544c41420000 +b5e8a9d40000000000000000 + +25939 +b5e6ab1c5010446292cd0000000000000000 + + +25940 +cb3900000001000000000000046d61696c096f6c64656e626f6f6d026e6c0000010001 +cb3980000001000000020000046d61696c096f6c64656e626f6f6d026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c035 + +25941 +5759000000010000000000000672656c61793108696e74726f776562026e6c0000010001 +5759800000010000000200020672656c61793108696e74726f776562026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c0300001000100015180000450416028c04200010001000151800004c356780c + +25942 +e7870000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +e7878000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +25943 +552f000000010000000000000773747564656e7409696e686f6c6c616e64026e6c0000010001 +552f800000010000000200020773747564656e7409696e686f6c6c616e64026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c2ab230bc04400010001000151800004c0576a65 + +25944 +6216000000010000000000000e726563657074656e7a6f656b6572026e6c00000f0001 +6216800000010000000200000e726563657074656e7a6f656b6572026e6c00000f0001c00c00020001000151800015036e73350b686f7374696e67776f7278036e657400c00c00020001000151800006036e7336c033 + +25945 +3836000000010000000000000369776e026e6c0000010001 +3836800000010000000200000369776e026e6c0000010001c00c00020001000151800012036e7331087a6f6e656564697403636f6d00c00c00020001000151800006036e7334c028 + +25946 +b5e8ed83501044705c8b0000000000000000 + + +25947 +b5e829e85011fae2eaa30000000000000000 +b5e8a9e40000000000000000 + +25948 +754400000001000000000000096b65792d73746f6e65026e6c00000f0001 +754480000001000000020000096b65792d73746f6e65026e6c00000f0001c00c00020001000151800010026e730a696275696c64696e6773c016c00c0002000100015180000b026e73026e6c036e657400 + +25949 +0f8828000001000000010000026e6c0000060001055f6c646170045f7463702439303836356138372d376466302d343033372d383832382d39366633353137323164376507646f6d61696e73065f6d7364637306546177616e6106746177616e61026e6c00002100010000025800240000006401850b646172796173657276657206546177616e6106746177616e61026e6c00 +0f88a8040000000000000000 + +25950 +000000007002faf067190000020405b401010402 +000080010000000000000000 + +25951 +b5e8ed8350184470d094000000890918000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7de0403ccf6000030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +25952 +b5e829e95010fae2eaa20000000000000000 +b5e8a9e40000000000000000 + +25953 +292700000001000000000000037777770a6379636c6f6d65646961026e6c0000010001 +292780000001000000020002037777770a6379636c6f6d65646961026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +25954 +b5e978885010faf0655b0000000000000000 +b5e9f8840000000000000000 + +25955 +b5e978885018faf0052b00000094ee7e000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afb18403c4c980003000000354e544c4d535350000100000097b208e00e000e00270000000700070020000000544553542d41444b4148554e412d544553544c41420000 +b5e9f8840000000000000000 + +25956 +44c500000001000000000000026e73076e656473746174026e6c0000010001 +44c580000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +25957 +344500000001000000000000036e7333076e656473746174026e6c0000010001 +344580000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +25958 +0000000070024000e51f00000204059801010402 +000080010000000000000000 + +25959 +b5e8ed91501144625bff0000000000000000 + + +25960 +000000007002400000aa0000020405b401010402 +000080010000000000000000 + +25961 +b5e978965011fae264c40000000000000000 +b5e9f8940000000000000000 + +25962 +9dfd00000001000000000000086c6f676c696e6573026e6c0000010001 +9dfd80000001000000020002086c6f676c696e6573026e6c0000010001c00c00020001000151800010046e733031086e65746c696e6573c015c00c00020001000151800007046e733032c02ec02900010001000151800004d99540f5c04500010001000151800004d99541f5 + +25963 +50b800000001000000000000046d61696c096d616e6a656669656b026e6c0000010001 +50b880000001000000020002046d61696c096d616e6a656669656b026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01bc01100020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +25964 +ca3800000001000000000000067765616c6572026e6c00000f0001 +ca3880000001000000020002067765616c6572026e6c00000f0001c00c0002000100015180000b036e73310477656233c013c00c00020001000151800006036e7332c02bc02700010001000151800004d436240ec03e00010001000151800004c2b262ef + +25965 +b5ea6c7550104320ec370000000000000000 +b5eaec740000000000000000 + +25966 +b5e978975010fae264c30000000000000000 +b5e9f8940000000000000000 + +25967 +b5e8ed92501044625bfe0000000000000000 + + +25968 +f2e200000001000000000000036e7332066470706c7573026e6c0000010001 +f2e280000001000000020001036e7332066470706c7573026e6c0000010001c01000020001000151800014026e730b706c617a6167726f757065036e657400c01000020001000151800002c00cc00c00010001000151800004d5c1ea0d + +25969 +b5ea6c755018432081b900000090d180000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe57403c4fd70003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 +b5eaec740000000000000000 + +25970 +a97800000001000000000000036e7334076e656473746174026e6c0000010001 +a97880000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +25971 +d89000000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +d89080000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +25972 +b5eb227d5010447050850000000000000000 +b5eba2730000000000000000 + +25973 +55ce00000001000000000000037777770b647574636864616b6f7461026e6c0000010001 +55ce80000001000000030001037777770b647574636864616b6f7461026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +25974 +3bc300000001000000000000036972630565666e6574026e6c0000010001 +3bc380000001000000030000036972630565666e6574026e6c0000010001c0100002000100015180000f036e733108696e736563757265c016c01000020001000151800006036e7333c02ec01000020001000151800006036e7334c02e + +25975 +b5eb227d50184470f82900000089d57c000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7de0403ccf6000030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 +b5eba2730000000000000000 + +25976 +b5ea6c8350114312eba40000000000000000 +b5eaec840000000000000000 + +25977 +b3ec00000001000000000000077765626d61696c036c65740a6c656964656e756e6976026e6c0000010001 +b3ec80000001000000030003077765626d61696c036c65740a6c656964656e756e6976026e6c0000010001c0180002000100015180000b08736865726c6f636bc018c0180002000100015180000906776174736f6ec018c0180002000100015180000e036e733107737572666e6574c023c0370001000100015180000484e50806c04e0001000100015180000484e51602c06300010001000151800004c0576a65 + +25978 +fb4600000001000000000000066c6f676f6c66026e6c00001c0001 +fb4680000001000000020000066c6f676f6c66026e6c00001c0001c00c0002000100015180000f04686e73300774697363616c69c013c00c0002000100015180000704686e7331c02c + +25979 +00c200000001000000000000036e733108696e736563757265026e6c0000010001 +00c280000001000000030003036e733108696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +25980 +e97600000001000000000000036e733308696e736563757265026e6c0000010001 +e97680000001000000030003036e733308696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +25981 +741d00000001000000000000036e733408696e736563757265026e6c0000010001 +741d80000001000000030003036e733408696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +25982 +0000000070024000ad7200000204059801010402 +000080010000000000000000 + +25983 +b5eb228b501144624ff90000000000000000 +b5eba2830000000000000000 + +25984 +b5ea6c8450104312eba30000000000000000 +b5eaec840000000000000000 + +25985 +06f700000001000000000000076e65756b776562026e6c0000ff0001 +06f780000001000000030003076e65756b776562026e6c0000ff0001c00c0002000100015180000e076e73617574683103626974c014c00c0002000100015180000a076e736175746832c030c00c0002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +25986 +b5ebebc85010432035360000000000000000 + + +25987 +11780000000100000000000007626575727a656e036a656d026e6c0000010001 +11788000000100000002000207626575727a656e036a656d026e6c0000010001c0140002000100015180000e036e73310765766964656e74c018c01400020001000151800006036e7332c030c02c00010001000151800004c36d19c4c04600010001000151800004c36d1942 + +25988 +b5ebebc850184320dd3800000090c000000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe57403c4fd70003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 + + +25989 +b5eb228c501044624ff80000000000000000 +b5eba2830000000000000000 + +25990 +32d20000000100000000000006697769776562026e6c0000ff0001 +32d28000000100000002000206697769776562026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +25991 +b5ebebd65011431234a30000000000000000 + + +25992 +871100000001000000000000036e73300461736d6c026e6c00001c0001 +871180000001000000030001036e73300461736d6c026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000d026e730461736d6c03636f6d00c01000020001000151800006036e7331c03ac00c00010001000151800004c26979c2 + +25993 +72ad00000001000000000000036e73300461736d6c026e6c0000260001 +72ad80000001000000030001036e73300461736d6c026e6c0000260001c01000020001000151800002c00cc0100002000100015180000d026e730461736d6c03636f6d00c01000020001000151800006036e7331c03ac00c00010001000151800004c26979c2 + +25994 +be9900000001000000000000036e73300461736d6c026e6c0000010001 +be9980000001000000030001036e73300461736d6c026e6c0000010001c01000020001000151800002c00cc0100002000100015180000d026e730461736d6c03636f6d00c01000020001000151800006036e7331c03ac00c00010001000151800004c26979c2 + +25995 +0000000070024000ce3800000204059801010402 +000080010000000000000000 + +25996 +f22c0000000100000000000008706c6161746a657308686f7573656e6574026e6c0000010001 +f22c8000000100000002000008706c6161746a657308686f7573656e6574026e6c0000010001c015000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0150002000100015180000906617574683230c039 + +25997 +723900000001000000000000037777771275747265636874736e6965757773626c6164026e6c0000010001 +723980000001000000020002037777771275747265636874736e6965757773626c6164026e6c0000010001c0100002000100015180000e036e7331076e657463617374c023c01000020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +25998 +b5ebebd75010431234a20000000000000000 + + +25999 +883000000001000000000000036674701074616172746b756e7374656e61726573026e6c0000010001 +883080000001000000020000036674701074616172746b756e7374656e61726573026e6c0000010001c0100002000100015180000c026e7306766576696461c021c01000020001000151800006036e7332c038 + +26000 +d1c000000001000000000000037777771065626e7061726b656572626568656572026e6c0000010001 +d1c084030001000000010000037777771065626e7061726b656572626568656572026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +26001 +133c000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +133c800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26002 +b5ec666650104320db5d0000000000000000 +b5ece6640000000000000000 + +26003 +b41500000001000000000000037777771065626e7061726b656572626568656572026e6c0000010001 +b41584030001000000010000037777771065626e7061726b656572626568656572026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +26004 +b5ec6666501843202b61000000901800000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afe57403c4fd70003000000314e544c4d535350000100000097b208e0060006002b0000000b000b00200000004441525941534552564552544157414e410000 +b5ece6640000000000000000 + +26005 +b5ec667450114312daca0000000000000000 +b5ece6740000000000000000 + +26006 +0221000000010000000000000473686f70066d656e737973026e6c0000010001 +0221800000010000000200020473686f70066d656e737973026e6c0000010001c0110002000100015180000c036e7331056e6574636fc018c01100020001000151800006036e7332c030c02c00010001000151800004c26d4a82c04400010001000151800004c26dd146 + +26007 +734000000001000000000000036c78340469656e6403776175026e6c0000010001 +734080000001000000020002036c78340469656e6403776175026e6c0000010001c0150002000100015180000a036e733103777572c019c01500020001000151800006036e7332c031c02d0001000100015180000489e0f88dc0430001000100015180000489e0f88e + +26008 +1ca800000001000000000000036c78340469656e6403776175026e6c0000260001 +1ca880000001000000020002036c78340469656e6403776175026e6c0000260001c0150002000100015180000a036e733103777572c019c01500020001000151800006036e7332c031c02d0001000100015180000489e0f88dc0430001000100015180000489e0f88e + +26009 +8e5400000001000000000000036c78330469656e6403776175026e6c0000010001 +8e5480000001000000020002036c78330469656e6403776175026e6c0000010001c0150002000100015180000a036e733103777572c019c01500020001000151800006036e7332c031c02d0001000100015180000489e0f88dc0430001000100015180000489e0f88e + +26010 +e3d800000001000000000000036c78330469656e6403776175026e6c0000260001 +e3d880000001000000020002036c78330469656e6403776175026e6c0000260001c0150002000100015180000a036e733103777572c019c01500020001000151800006036e7332c031c02d0001000100015180000489e0f88dc0430001000100015180000489e0f88e + +26011 +b5ec667550104312dac90000000000000000 +b5ece6740000000000000000 + +26012 +074b00000001000000000000046d61696c0773696d706c6578026e6c0000010001 +074b80000001000000020002046d61696c0773696d706c6578026e6c0000010001c01100020001000151800014036e73310d63656e747269636f6e6c696e65c019c01100020001000151800006036e7332c031c02d00010001000151800004d481ec0cc04d00010001000151800004d590e63a + +26013 +56a8000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +56a8800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26014 +f8ff00000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000010001 +f8ff80000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +26015 +532000000001000000000000066b6c6a303031076b6c6a626f7577026e6c0000060001 +532084030001000000010000066b6c6a303031076b6c6a626f7577026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +26016 +b7ad00000001000000000000037777770c766974616d696e73746f7265026e6c0000010001 +b7ad80000001000000020000037777770c766974616d696e73746f7265026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c034 + +26017 +cde800000001000000000000037777770a66696e61746162616e6b026e6c0000010001 +cde880000001000000020002037777770a66696e61746162616e6b026e6c0000010001c0100002000100015180000c036e73310563736e6574c01bc01000020001000151800006036e7332c033c02f00010001000151800004c2451012c04700010001000151800004c2451212 + +26018 +bbd8000000010000000000000a656464696e676c656761026e6c00000f0001 +bbd8800000010000000300030a656464696e676c656761026e6c00000f0001c00c0002000100015180000c036e7331056d61786573c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b000100010001518000045045402ec043000100010001518000045045402fc055000100010001518000045045440a + +26019 +3d2b0000000100000000000006696e65743031036f7067026e6c00001c0001 +3d2b8000000100000002000106696e65743031036f7067026e6c00001c0001c01300020001000151800002c00cc0130002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14eb322 + +26020 +f64f0000000100000000000006696e65743033036f7067026e6c0000010001 +f64f8000000100000002000106696e65743033036f7067026e6c0000010001c0130002000100015180000906696e65743031c013c0130002000100015180000b026e73026e6c036e657400c02b00010001000151800004c14eb322 + +26021 +cca800000001000000000000106361706f656972612d73656e7a616c61026e6c0000010001 +cca884030001000000010000106361706f656972612d73656e7a616c61026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +26022 +2f2000000001000000000000046d61696c077965736f726e6f026e6c00001c0001 +2f2080000001000000030002046d61696c077965736f726e6f026e6c00001c0001c0110002000100015180000d036e733106776964657873c019c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +26023 +834b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +834b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26024 +a69d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +a69d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26025 +063900000001000000000000046d61696c077965736f726e6f026e6c00001c0001 +063980000001000000030002046d61696c077965736f726e6f026e6c00001c0001c0110002000100015180000d036e733106776964657873c019c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +26026 +234100000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000010001 +234180000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +26027 +c22000000001000000000000037777770b6f6e6465727a6f656b6572026e6c0000010001 +c22080000001000000020002037777770b6f6e6465727a6f656b6572026e6c0000010001c0100002000100015180000c046e7330310462696374c01cc01000020001000151800007046e733032c035c03000010001000151800004d413d6c8c04800010001000151800004d413d604 + +26028 +39c10000000100000000000009776f726c646d61696c026e6c00000f0001 +39c18000000100000003000209776f726c646d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c016c00c0002000100015180000704616e7332c02fc00c0002000100015180001404616e73330a74697363616c696e657402626500c02a00010001000151800004c3f14d38c04500010001000151800004c3f13325 + +26029 +fc3400000001000000000000037777770a656d657373656e676572026e6c0000010001 +fc3484030001000000010000037777770a656d657373656e676572026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +26030 +14f200000001000000000000056e65786573026e6c0000ff0001 +14f280000001000000030003056e65786573026e6c0000ff0001c00c0002000100015180000f036e7331086e6f766178657373c012c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02ac02600010001000151800004d5c98015c04100010001000151800004d5c9bf12c05300010001000151800004d5ef9c26 + +26031 +59620000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +59628000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26032 +68c7000000010000000000000476646770026e6c00000f0001 +68c7800000010000000200010476646770026e6c00000f0001c00c0002000100015180000a036e733303777873c011c00c00020001000151800006036e7334c029c03b00010001000151800004d5ef9a65 + +26033 +538b0000000100000000000007736f636961616c026e6c00000f0001 +538b8000000100000003000107736f636961616c026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +26034 +b16d0000000100000000000008756d636e6574303103617a6e026e6c0000010001 +b16d8000000100000003000308756d636e6574303103617a6e026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b08756d636e65743032c015c0150002000100015180000e036e733107737572666e6574c019c00c0001000100015180000483aedc02c03b0001000100015180000483aee402c05200010001000151800004c0576a65 + +26035 +c34f0000000100000000000008756d636e6574303103617a6e026e6c00001c0001 +c34f8000000100000003000308756d636e6574303103617a6e026e6c00001c0001c01500020001000151800002c00cc0150002000100015180000b08756d636e65743032c015c0150002000100015180000e036e733107737572666e6574c019c00c0001000100015180000483aedc02c03b0001000100015180000483aee402c05200010001000151800004c0576a65 + +26036 +574a0000000100000000000008756d636e6574303103617a6e026e6c0000260001 +574a8000000100000003000308756d636e6574303103617a6e026e6c0000260001c01500020001000151800002c00cc0150002000100015180000b08756d636e65743032c015c0150002000100015180000e036e733107737572666e6574c019c00c0001000100015180000483aedc02c03b0001000100015180000483aee402c05200010001000151800004c0576a65 + +26037 +fd8c0000000100000000000008756d636e6574303203617a6e026e6c0000010001 +fd8c8000000100000003000308756d636e6574303203617a6e026e6c0000010001c0150002000100015180000b08756d636e65743031c015c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483aedc02c00c0001000100015180000483aee402c05200010001000151800004c0576a65 + +26038 +76090000000100000000000008756d636e6574303203617a6e026e6c00001c0001 +76098000000100000003000308756d636e6574303203617a6e026e6c00001c0001c0150002000100015180000b08756d636e65743031c015c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483aedc02c00c0001000100015180000483aee402c05200010001000151800004c0576a65 + +26039 +02a60000000100000000000008756d636e6574303203617a6e026e6c0000260001 +02a68000000100000003000308756d636e6574303203617a6e026e6c0000260001c0150002000100015180000b08756d636e65743031c015c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483aedc02c00c0001000100015180000483aee402c05200010001000151800004c0576a65 + +26040 +8f5500000001000000000000086e65787464617461026e6c0000010001 +8f5580000001000000020002086e65787464617461026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +26041 +09550000000100000000000003636f61066d696e6a7573026e6c00000f0001 +09558000000100000002000003636f61066d696e6a7573026e6c00000f0001c01000020001000151800011036e736a0365736e036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +26042 +499d00000001000000000000037777770f6e656465726c616e6473656d756e74026e6c0000010001 +499d80000001000000020002037777770f6e656465726c616e6473656d756e74026e6c0000010001c01000020001000151800009026e730369736dc020c01000020001000151800006036e7332c037c03400010001000151800004d994ab02c04900010001000151800004d994ab03 + +26043 +2009000000010000000000000469632d73026e6c0000ff0001 +2009800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26044 +b6fb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b6fb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26045 +b6fc0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b6fc8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26046 +13180000000100000000000007616e74656e6e61026e6c0000010001 +13188000000100000002000107616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +26047 +0ce800000001000000000000046e696365026e6c0000ff0001 +0ce880000001000000020001046e696365026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +26048 +b6ff0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b6ff8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26049 +b7000000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7008000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26050 +034e28000001000200000000026e6c0000060001074d616e75656c61066170686c616e026e6c00000500fe000000000000c01400010001000000000004c0a8010c +034ea8040000000000000000 + +26051 +6647000000010000000000000852617468656e6175026e6c00001c0001 +6647800000010000000200020852617468656e6175026e6c00001c0001c00c0002000100015180000d026e73076e65746c616e64c015c00c00020001000151800006036e7332c02cc02900010001000151800004d9aa2042c04200010001000151800004d9aa2c06 + +26052 +acab000000010000000000000c6d61696c2d62617374696f6e04706f727409726f7474657264616d026e6c0000010001 +acab800000010000000300030c6d61696c2d62617374696f6e04706f727409726f7474657264616d026e6c0000010001c01e0002000100015180000c0967616e796d65646573c01ec01e00020001000151800007046c656461c01ec01e00020001000151800014036e733203676e7309676574726f6e696373c028c03c00010001000151800004d5c9cf50c05400010001000151800004d5c9cf19c06700010001000151800004910d2a05 + +26053 +6d0b00000001000000000000036e733209666972737466696e64026e6c0000010001 +6d0b80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26054 +6d0c00000001000000000000036e733109666972737466696e64026e6c0000010001 +6d0c80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26055 +a13400000001000000000000037777770b736f75736c6172616e6765026e6c0000010001 +a13480000001000000020002037777770b736f75736c6172616e6765026e6c0000010001c01000020001000151800012036e73310b6769786e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d5f4b8cfc04e00010001000151800004d5f4b9cf + +26056 +789a0000000100000000000004706f70330776697a7a617669026e6c0000010001 +789a8000000100000003000104706f70330776697a7a617669026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c01100020001000151800007046e733038c043c02d000100010001518000043e48df58 + +26057 +f86b0000000100000000000003777777096d696e647363617065026e6c0000010001 +f86b8000000100000003000303777777096d696e647363617065026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c01ac010000200010001518000070470726932c033c010000200010001518000070470726933c033c02e000100010001518000049a0ff9a6c04c000100010001518000049a0ff9aac05f000100010001518000049a0ff9ae + +26058 +e6fc00000001000000000000126e696a6768696e746572706172746e657273026e6c0000ff0001 +e6fc80000001000000020002126e696a6768696e746572706172746e657273026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01fc00c00020001000151800006036e7332c037c03300010001000151800004d43d0f08c05100010001000151800004d43d19e2 + +26059 +edaa0000000100000000000003777777036d6d62026e6c0000010001 +edaa8000000100000003000203777777036d6d62026e6c0000010001c0100002000100015180000d036e733106776964657873c014c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +26060 +f41c0000000100000000000004706f70330776697a7a617669026e6c0000010001 +f41c8000000100000003000104706f70330776697a7a617669026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c01100020001000151800007046e733038c043c02d000100010001518000043e48df58 + +26061 +ba4e0000000100000000000005796176696e0d696e7465727370656374697665026e6c0000010001 +ba4e8000000100000002000205796176696e0d696e7465727370656374697665026e6c0000010001c01200020001000151800006036e7333c012c01200020001000151800006036e7332c012c03400010001000151800004c14ee108c04600010001000151800004c14ee102 + +26062 +ce8a0000000100000000000005686f666d78066d696e6f6377026e6c0000010001 +ce8a8000000100000002000105686f666d78066d696e6f6377026e6c0000010001c01200020001000151800015086e732d69736d30310963617067656d696e69c019c0120002000100015180000b086e732d69736d3032c036c02d00010001000151800004d5f4a024 + +26063 +92c90000000100000000000003777777096769746161726e6574026e6c0000010001 +92c98000000100000003000203777777096769746161726e6574026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +26064 +ad6800000001000000000000037777770b736f75736c6172616e6765026e6c0000010001 +ad6880000001000000020002037777770b736f75736c6172616e6765026e6c0000010001c01000020001000151800012036e73310b6769786e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d5f4b8cfc04e00010001000151800004d5f4b9cf + +26065 +57a7000000010000000000000963686576616c696572026e6c0000010001 +57a7800000010000000200000963686576616c696572026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02e + +26066 +559100000001000000000000037777770667616d657273026e6c0000010001 +559180000001000000020002037777770667616d657273026e6c0000010001c0100002000100015180000b036e73310470696e65c017c01000020001000151800006036e7332c02fc02b00010001000151800004d59c0201c04200010001000151800004c3c1a303 + +26067 +3c4900000001000000000000037777770a77686974652d726f7365026e6c0000010001 +3c4980000001000000030003037777770a77686974652d726f7365026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c01bc01000020001000151800006036e7330c032c01000020001000151800006036e7333c032c02f00010001000151800004c3561682c04f00010001000151800004c3561683c06100010001000151800004d5de0bfa + +26068 +397d000000010000000000000469632d73026e6c0000010001 +397d800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26069 +cf1000000001000000000000037777770d706c616e65746f7574646f6f72026e6c0000010001 +cf1080000001000000030002037777770d706c616e65746f7574646f6f72026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +26070 +0000000070024000595000000204055001010402 +000080010000000000000000 + +26071 +a9ae00000001000000000000066c656f6e766b026e6c00000f0001 +a9ae80000001000000020000066c656f6e766b026e6c00000f0001c00c00020001000151800018036e7330026e6c0b7369746570726f7465637403636f6d00c00c00020001000151800006036e7331c02b + +26072 +b5ee16d850104510b3c90000000000000000 +b5ee96d40000000000000000 + +26073 +a0eb000000010000000000010469632d73026e6c0000ff00010000291000000000000000 +a0eb800000010000000200010469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +26074 +58a100000001000000000000046e696f6f046b6e6177026e6c0000010001 +58a180000001000000020002046e696f6f046b6e6177026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c0576b03c03c00010001000151800004c0576a65 + +26075 +b5ee16d85018451089d00000008a63db000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc58403c4dd800030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004d414e55454c414150484c414e0000 +b5ee96d40000000000000000 + +26076 +6d0e00000001000000000000036e733209666972737466696e64026e6c0000010001 +6d0e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26077 +6d0f00000001000000000000036e733109666972737466696e64026e6c0000010001 +6d0f80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26078 +82e800000001000000000000077368652d706f6e026e6c0000010001 +82e880000001000000020000077368652d706f6e026e6c0000010001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02c + +26079 +006800000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001 +006884030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001c04800060001000038400036026e730f646f6d61696e2d7265676973747279c0480a686f73746d6173746572c05f0bf1e540000070800000384000278d0000003840 + +26080 +6fa8000000010000000000000377777709646f6c6c67726f6570026e6c0000010001 +6fa8800000010000000200000377777709646f6c6c67726f6570026e6c0000010001c0100002000100015180001a036e733110646f6c6c61726368697465637475726503636f6d00c01000020001000151800006036e7332c032 + +26081 +b5ee16e650114502b33c0000000000000000 +b5ee96e40000000000000000 + +26082 +b5ee16e750104502b33b0000000000000000 +b5ee96e40000000000000000 + +26083 +0000000070024000b1fd00000204055001010402 +000080010000000000000000 + +26084 +b5eecbbd5010451057910000000000000000 + + +26085 +0b3000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +0b3080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +26086 +b5eecbbd50184510b3ed0000008adf85000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc58403c4dd800030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004d414e55454c414150484c414e0000 + + +26087 +74540000000100000000000007706f6c79736570026e6c0000010001 +74548000000100000002000207706f6c79736570026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +26088 +075a00000001000000000000036e733303777873026e6c0000010001 +075a80000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +26089 +95d2000000010000000000000968616e7367726f6865026e6c0000010001 +95d2800000010000000200010968616e7367726f6865026e6c0000010001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +26090 +b5eecbcb5011450257040000000000000000 + + +26091 +35280000000100000000000009652d6c756e61746963026e6c0000010001 +35288000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +26092 +29210000000100000000000006696d61676573047670726f026e6c0000010001 +29218000000100000002000106696d61676573047670726f026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000b026e73026e6c036e657400c02c00010001000151800004913aa82a + +26093 +b5eecbcc5010450257030000000000000000 + + +26094 +450000000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +450080000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26095 +6d4e00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +6d4e80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26096 +0000000070024000be5c00000204055001010402 +000080010000000000000000 + +26097 +1b2a000000010000000000000876616e6578746572026e6c00000f0001 +1b2a800000010000000200000876616e6578746572026e6c00000f0001c00c00020001000151800011036e73310a76697375616c686f7374c015c00c000200010001518000070476733031c02d + +26098 +14d10000000100000000000003706f70077a656566706f70026e6c0000010001 +14d18000000100000002000003706f70077a656566706f70026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +26099 +346c00000001000000000000037777770773636869736973026e6c0000010001 +346c80000001000000020002037777770773636869736973026e6c0000010001c010000200010001518000110a6c65757665686176656e03696772c018c0100002000100015180000d0a64656c6673686176656ec037c02c000100010001518000043e2d5e0dc049000100010001518000043e2d5e82 + +26100 +f83800000001000000000000036e73310a76697375616c686f7374026e6c0000010001 +f83880000001000000030002036e73310a76697375616c686f7374026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +26101 +f6840000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +f6848000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +26102 +913500000001000000000000034e53310348534c026e6c0000010001 +913580000001000000020002034e53310348534c026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004915b9006c03600010001000151800004c0576a65 + +26103 +b5ef8d0d50104510a29f0000000000000000 + + +26104 +b5ef8d0d501845100bfa0000008ad287000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc58403c4dd800030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004d414e55454c414150484c414e0000 + + +26105 +94cd00000001000000000000136265656d73746572626f657264657672696573026e6c0000010001 +94cd80000001000000020000136265656d73746572626f657264657672696573026e6c0000010001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c038 + +26106 +1c0000000001000000000000036e733109756e69736572766572024e4c0000010001 +1c0080000001000000020002036e733109756e69736572766572024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +26107 +adca00000001000000000000036e7331056d61786573026e6c00001c0001 +adca80000001000000030003036e7331056d61786573026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +26108 +748a00000001000000000000036e7332056d61786573026e6c00001c0001 +748a80000001000000030003036e7332056d61786573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +26109 +50ae00000001000000000000036e7333056d61786573026e6c00001c0001 +50ae80000001000000030003036e7333056d61786573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +26110 +b5ef8d1b50114502a2120000000000000000 + + +26111 +12ac00000001000000000000036e733109756e69736f75726365026e6c0000010001 +12ac80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +26112 +b5ef8d1c50104502a2110000000000000000 + + +26113 +6b9400000001000000000000037777770a67736d636f7272656374026e6c0000010001 +6b9480000001000000020002037777770a67736d636f7272656374026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +26114 +2f26000000010000000000000377777708766961637265616d026e6c0000010001 +2f26800000010000000300000377777708766961637265616d026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c032c01000020001000151800007046e733033c032 + +26115 +0a9100000001000000000000036e733109666972737466696e64026e6c0000010001 +0a9180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26116 +7e5a00000001000000000000036e733209666972737466696e64026e6c0000010001 +7e5a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26117 +d3af00000001000000000000036e73320470696e65026e6c0000010001 +d3af80000001000000020002036e73320470696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +26118 +726e000000010000000000000c6465726f6e646576656e656e026e6c0000010001 +726e800000010000000200020c6465726f6e646576656e656e026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c019c00c00020001000151800006036e7331c030c02d00010001000151800004504f6101c04700010001000151800004504f6102 + +26119 +1d7f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +1d7f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26120 +973a00000001000000000000036e733207626265796f6e64026e6c00001c0001 +973a80000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +26121 +dd320000000100000000000005646e732d32056c61646f74026e6c0000010001 +dd328000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26122 +3ff400000001000000000000036e733207626265796f6e64026e6c0000260001 +3ff480000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +26123 +32f70000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +32f78000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26124 +911b00000001000000000000046d61696c056e65726f63026e6c0000010001 +911b80000001000000020002046d61696c056e65726f63026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02b00010001000151800004d434010ac03c00010001000151800004d434000a + +26125 +91ee000000010000000000000377777706696c6f676963026e6c0000010001 +91ee800000010000000200020377777706696c6f676963026e6c0000010001c0100002000100015180000b036e73310476646e73c017c01000020001000151800006036e7332c02fc02b000100010001518000045117f60bc042000100010001518000045117f60c + +26126 +5e6300000001000000000000037777770e66726565646f6d7361696c696e67026e6c0000010001 +5e6380000001000000020002037777770e66726565646f6d7361696c696e67026e6c0000010001c01000020001000151800009036e7331026973c01fc01000020001000151800006036e7332c037c03300010001000151800004d5852102c04800010001000151800004d5c41503 + +26127 +4403000000010000000000000469632d73026e6c00000f0001 +4403800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26128 +e35e00000001000000000000037777770966756e6d657467736d026e6c0000010001 +e35e80000001000000020002037777770966756e6d657467736d026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +26129 +e69200000001000000000000036e7334107365637572656e616d65736572766572026e6c0000010001 +e69280000001000000020002036e7334107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0350001000100015180000442a4f102c0470001000100015180000442a4f105 + +26130 +545600000001000000000000036e7333107365637572656e616d65736572766572026e6c0000010001 +545680000001000000020002036e7333107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0350001000100015180000442a4f102c0470001000100015180000442a4f105 + +26131 +3dd7000000010000000000000674656c6e6574036d7069026e6c0000010001 +3dd7800000010000000200020674656c6e6574036d7069026e6c0000010001c013000200010001518000080573756e3032c013c01300020001000151800006036e7332c013c02b00010001000151800004c0574f3ec03f00010001000151800004c0574f37 + +26132 +4039000000010000000000000469632d73026e6c00000f0001 +4039800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26133 +fb5900000001000000000000037777770e67656f6e2d73636872696a766572026e6c0000010001 +fb5980000001000000020002037777770e67656f6e2d73636872696a766572026e6c0000010001c0100002000100015180000a036e733103686978c01fc01000020001000151800006036e7332c037c03300010001000151800004d5a0da0ac0490001000100015180000451112ec3 + +26134 +a92c00000001000000000000037777770a746376697369656e6574026e6c0000010001 +a92c84030001000000010000037777770a746376697369656e6574026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +26135 +34b100000001000000000000037777770770616e746f6e65026e6c0000010001 +34b180000001000000030000037777770770616e746f6e65026e6c0000010001c01000020001000151800011036e73310770616e746f6e6503636f6d00c0100002000100015180001b0a6463612d616e732d303104696e6574057177657374036e657400c0100002000100015180000d0a73766c2d616e732d3031c054 + +26136 +482300000001000000000000036e733108696e74726f776562026e6c0000010001 +482380000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +26137 +33d200000001000000000000036e733208696e74726f776562026e6c0000010001 +33d280000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +26138 +465b00000001000000000000036e733109666972737466696e64026e6c0000010001 +465b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26139 +822200000001000000000000037777770964657a776574736572026e6c0000010001 +822280000001000000020002037777770964657a776574736572026e6c0000010001c010000200010001518000100672617069646506726170696465c01ac0100002000100015180000c09687572726963616e65c035c02e00010001000151800004511134a0c04a00010001000151800004511134a4 + +26140 +bffb00000001000000000000036e733103686978026e6c00001c0001 +bffb80000001000000020002036e733103686978026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5a0da0ac0360001000100015180000451112ec3 + +26141 +d06b00000001000000000000036e733203686978026e6c00001c0001 +d06b80000001000000020002036e733203686978026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d5a0da0ac00c0001000100015180000451112ec3 + +26142 +299500000001000000000000036e733304686f6d65026e6c0000010001 +299580000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +26143 +72a600000001000000000000036e733204686f6d65026e6c0000010001 +72a680000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +26144 +09d500000001000000000000036e733104686f6d65026e6c0000010001 +09d580000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +26145 +c10900000001000000000000037777770d706c616e65746f7574646f6f72026e6c0000010001 +c10980000001000000030002037777770d706c616e65746f7574646f6f72026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +26146 +3ed600000001000000000000036e733209666972737466696e64026e6c0000010001 +3ed680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26147 +28ce00000001000000000000036e73320563736e6574026e6c0000010001 +28ce80000001000000020002036e73320563736e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004c2451012c00c00010001000151800004c2451212 + +26148 +a31800000001000000000000086861726d6e756973026e6c00000f0001 +a31880000001000000020002086861726d6e756973026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +26149 +77d300000001000000000000096e6c636330303031300864656c6f69747465026e6c0000010001 +77d380000001000000030002096e6c636330303031300864656c6f69747465026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000b026e73026e6c036e657400c03300010001000151800004aac21423c04400010001000151800004aac21424 + +26150 +1113000000010000000000000576726f6f6e026e6c0000010001 +1113800000010000000200000576726f6f6e026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +26151 +cb370000000100000000000005646e732d31056c61646f74026e6c0000010001 +cb378000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26152 +9ca50000000100000000000005646e732d32056c61646f74026e6c0000010001 +9ca58000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26153 +39a8000000010000000000000377777703647664026e6c0000010001 +39a8800000010000000200020377777703647664026e6c0000010001c0100002000100015180000f036e73310868776967726f7570c014c01000020001000151800006036e7332c02cc02800010001000151800004d973c15ac04300010001000151800004d973c15b + +26154 +c50800000001000000000000037777770977696e646972656374026e6c0000010001 +c50880000001000000030002037777770977696e646972656374026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +26155 +c63128000001000000010000026e6c0000060001085f6b706173737764045f74637007747267726f7570026e6c000021000100000258001b0000006401d0087365727665722d3107747267726f7570026e6c00 +c631a8040000000000000000 + +26156 +32d7000000010000000000000b776f726c646f6e6c696e65026e6c0000ff0001 +32d7800000010000000300020b776f726c646f6e6c696e65026e6c0000ff0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +26157 +a0eb000000010000000000000469632d73026e6c0000ff0001 +a0eb800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26158 +aac8000000010000000000000469632d73026e6c00000f0001 +aac8800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26159 +2e190000000100000000000005646e732d31056c61646f74026e6c0000010001 +2e198000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26160 +f8fe000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +f8fe800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26161 +a81500000001000000000000037777771164656c65756b73746562726f63616e7465026e6c0000010001 +a81580000001000000020002037777771164656c65756b73746562726f63616e7465026e6c0000010001c01000020001000151800011036e73320a636c75737465726e6574c022c01000020001000151800006036e7331c03ac03600010001000151800004d5f72f3cc053000100010001518000045054edf5 + +26162 +91540000000100000000000005646e732d32056c61646f74026e6c0000010001 +91548000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26163 +000000007002faf0c0510000020405b401010402 +000080010000000000000000 + +26164 +c33400000001000000000000054d4f4c454e0350434d026e6c0000010001 +c33480000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +26165 +06140000000100000000000003777777036d736e026e6c0000010001 +06148000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +26166 +4f1a00000001000000000000037777770367656b026e6c0000010001 +4f1a80000001000000020002037777770367656b026e6c0000010001c0100002000100015180000e036e7331076c656374726963c014c01000020001000151800006036e7332c02cc02800010001000151800004c297a082c04200010001000151800004c297a083 + +26167 +753f0000000100000000000003777777066272756e656c026e6c0000010001 +753f8000000100000002000003777777066272756e656c026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c02e + +26168 +b5f18dd25010faf0a9410000000000000000 + + +26169 +b5f18dd25018faf0e1bb0000008eeec4000000010001000000000f313237313331303331393633342d330000f900010f313237313331303331393633342d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04ae403c562e00030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 + + +26170 +b5f18de05011fae2a8b00000000000000000 + + +26171 +580d000000010000000000000563696e64790c616374697665646f6d61696e026e6c0000010001 +580d800000010000000300000563696e64790c616374697665646f6d61696e026e6c0000010001c01200020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01200020001000151800006036e7332c037c01200020001000151800006036e7333c037 + +26172 +729c0000000100000000000003777777067a6565627261026e6c0000010001 +729c8000000100000002000003777777067a6565627261026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +26173 +580e00000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +580e80000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +26174 +3750000000010000000000000e613231332d38342d31332d313939046164736c06787334616c6c026e6c0000010001 +3750800000010000000300020e613231332d38342d31332d313939046164736c06787334616c6c026e6c0000010001c02000020001000151800005026e73c020c02000020001000151800006036e7332c020c0200002000100015180000d026e730472697065036e657400c03b00010001000151800004c26d0642c04c00010001000151800004c26d0963 + +26175 +dfc500000001000000000000034e53310831454555524f5045024e4c0000010001 +dfc580000001000000020000034e53310831454555524f5045024e4c0000010001c01000020001000151800011036e733107696e6469636961036f726700c01000020001000151800006036e7332c031 + +26176 +000000007002faf08ee30000020405b401010402 +000080010000000000000000 + +26177 +b5f18de15010fae2a8af0000000000000000 + + +26178 +e82200000001000000000000026e730469776179026e6c0000010001 +e82280000001000000020001026e730469776179026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000c026e730364796e036f726700c00c00010001000151800004c14e1e04 + +26179 +194f0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +194f8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26180 +b5f277b05010faf08df40000000000000000 +b5f2f7b40000000000000000 + +26181 +12d200000001000000000000036e733110736361726c65742d696e7465726e6574026e6c0000010001 +12d280000001000000030003036e733110736361726c65742d696e7465726e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ccc302c04300010001000151800004d5ccc303c05500010001000151800004c277e953 + +26182 +7ecb000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +7ecb800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26183 +b5f277b05018faf064b80000008e517c000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04ae403c562e00030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 +b5f2f7b40000000000000000 + +26184 +c1740000000100000000000006636f62616c740b666f782d686f7374696e67026e6c0000010001 +c1748000000100000002000206636f62616c740b666f782d686f7374696e67026e6c0000010001c01300020001000151800007046e732d31c013c01300020001000151800007046e732d32c013c03300010001000151800004d5bd1374c04600010001000151800004d5bd1675 + +26185 +30320000000100000000000006636f62616c740b666f782d686f7374696e67026e6c0000260001 +30328000000100000002000206636f62616c740b666f782d686f7374696e67026e6c0000260001c01300020001000151800007046e732d31c013c01300020001000151800007046e732d32c013c03300010001000151800004d5bd1374c04600010001000151800004d5bd1675 + +26186 +9819000000010000000000000a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001 +9819800000010000000200020a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001c01700020001000151800007046e732d31c017c01700020001000151800007046e732d32c017c03700010001000151800004d5bd1374c04a00010001000151800004d5bd1675 + +26187 +f6ab000000010000000000000a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000260001 +f6ab800000010000000200020a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000260001c01700020001000151800007046e732d31c017c01700020001000151800007046e732d32c017c03700010001000151800004d5bd1374c04a00010001000151800004d5bd1675 + +26188 +b5f277be5011fae28d630000000000000000 +b5f2f7b40000000000000000 + +26189 +000000007002faf06fb10000020405b401010402 +000080010000000000000000 + +26190 +dcc4000000010000000000000862727568616d696a026e6c0000010001 +dcc4800000010000000200000862727568616d696a026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +26191 +e3f600000001000000000000026e730374656e026e6c0000010001 +e3f680000001000000020001026e730374656e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c36c4b01 + +26192 +fa1e00100001000000000001026e7309656174736572766572026e6c00000100010000290800000000000000 +fa1e80000001000000020003026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb12210000291000000000000000 + +26193 +fea800100001000000000001036e733209656174736572766572026e6c00000100010000290800000000000000 +fea880000001000000020003036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb12210000291000000000000000 + +26194 +b5f277bf5010fae28d620000000000000000 +b5f2f7b40000000000000000 + +26195 +35c300000001000000000000037777770b65617374776172642d676f026e6c0000010001 +35c380000001000000020002037777770b65617374776172642d676f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +26196 +65a1000000010000000000000b7365727665722d323030300a73657276657232303030026e6c0a73657276657232303030026e6c0000010001 +65a1840300010000000100000b7365727665722d323030300a73657276657232303030026e6c0a73657276657232303030026e6c0000010001c03100060001000038400036026e730f646f6d61696e2d7265676973747279c0310a686f73746d6173746572c0480bf1e540000070800000384000278d0000003840 + +26197 +36f100000001000000000000036e733107747564656c6674026e6c0000010001 +36f180000001000000050005036e733107747564656c6674026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +26198 +f1e80000000100000000000008647574746e63626e02746e07747564656c6674026e6c0000260001 +f1e88000000100000005000508647574746e63626e02746e07747564656c6674026e6c0000260001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800009036e7331026574c018c0180002000100015180000a07647574746e6362c015c0180002000100015180000e036e733107737572666e6574c020c0340001000100015180000482a1b401c0460001000100015180000482a1b441c0580001000100015180000482a12111c06d0001000100015180000482a1bc8cc08300010001000151800004c0576a65 + +26199 +b5f2f44d5010faf0f2240000000000000000 + + +26200 +990000000001000000000000037777770b776f726c64636861727473026e6c0000010001 +990080000001000000020000037777770b776f726c64636861727473026e6c0000010001c0100002000100015180000f036e7331056d79736d74036e657400c01000020001000151800006036e7332c034 + +26201 +7f5400000001000000000000026e7309656174736572766572026e6c0000010001 +7f5480000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +26202 +bfaa00000001000000000000036e733209656174736572766572026e6c0000010001 +bfaa80000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +26203 +b5f2f44d5018faf05e280000008ebc3c000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04ae403c562e00030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 + + +26204 +91710000000100000000000005646e732d31056c61646f74026e6c0000010001 +91718000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26205 +967600000001000000000000037777770862626f6b6b657273026e6c0000010001 +967680000001000000020000037777770862626f6b6b657273026e6c0000010001c0100002000100015180000c036e733103737468026e7500c01000020001000151800006036e7332c031 + +26206 +c7ef0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c7ef8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26207 +552b000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +552b800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26208 +335b000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +335b800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26209 +9fae000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +9fae800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26210 +27af000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +27af800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26211 +c05600000001000000000000066e69656c7331106b72656e73636f6e73756c74616e6379026e6c0000060001 +c05684030001000000010000066e69656c7331106b72656e73636f6e73756c74616e6379026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +26212 +89d8000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +89d8800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26213 +c4ec000000010000000000000a656d6561736d7470303103616f6e026e6c00001c0001 +c4ec800000010000000200010a656d6561736d7470303103616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26214 +628500000001000000000000046d61696c0a6a696e676c6568656c6c026e6c00001c0001 +628580000001000000020000046d61696c0a6a696e676c6568656c6c026e6c00001c0001c01100020001000151800011036e73310764697265637435036e657400c01100020001000151800006036e7332c034 + +26215 +b5f2f45b5011fae2f1930000000000000000 + + +26216 +c38900000001000000000000037777771267656e6565736d696464656c6e6965757773026e6c0000010001 +c38980000001000000020002037777771267656e6565736d696464656c6e6965757773026e6c0000010001c0100002000100015180000a036e7331036e7873c023c01000020001000151800006036e7332c03bc03700010001000151800004d973c015c04d00010001000151800004d973c102 + +26217 +ed8d00000001000000000000076472696d616e73026e6c0000ff0001 +ed8d84030001000000010000076472696d616e73026e6c0000ff0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +26218 +b34e0000000100000000000006636861726973026e6c0000010001 +b34e8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +26219 +34bd0000000100000000000008616473657276657206776562616473026e6c0000010001 +34bd8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +26220 +b5f2f45c5010fae2f1920000000000000000 + + +26221 +d5d000000001000000000000037777770c62657374656c766961677261026e6c0000010001 +d5d080000001000000020002037777770c62657374656c766961677261026e6c0000010001c0100002000100015180000f036e7331086a64696d65646961c01dc01000020001000151800012036e73310b6b6c6f6d70652d72757070c01dc03100010001000151800004d4ccc034c04c000100010001518000043e3a9862 + +26222 +dc27000000010000000000000366747007626c7565666f78026e6c0000010001 +dc27800000010000000200010366747007626c7565666f78026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c2972fc3 + +26223 +f9c30000000100000000000003777777106b656e6e65726d6572636f6c6c656765026e6c0000010001 +f9c38403000100000001000003777777106b656e6e65726d6572636f6c6c656765026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +26224 +4f3700000001000000000000037777770564696c656b026e6c0000010001 +4f3780000001000000020002037777770564696c656b026e6c0000010001c0100002000100015180001a036e733113736d616c6c686f6c642d686f7374696e672d34c016c01000020001000151800006036e7332c02ec02a000100010001518000045054ed82c050000100010001518000045054ed83 + +26225 +37f0000000010000000000000469632d73026e6c0000010001 +37f0800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26226 +9c37000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +9c37800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26227 +b95c000000010000000000000469632d73026e6c0000010001 +b95c800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26228 +8cf0000000010000000000000f726976657276696577626568656572026e6c0000010001 +8cf0800000010000000200020f726976657276696577626568656572026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +26229 +45200000000100000000000004646e73310470696e73026e6c0000010001 +45208000000100000002000204646e73310470696e73026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9c26101c03800010001000151800004d9c26002 + +26230 +e5e000000001000000000000036b746e026e6c00000f0001 +e5e080000001000000020002036b746e026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c010c00c00020001000151800006036e7332c027c02400010001000151800004d4cb0e42c03f00010001000151800004d4cb1221 + +26231 +349600000001000000000000077368652d706f6e026e6c00001c0001 +349680000001000000020000077368652d706f6e026e6c00001c0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02c + +26232 +076a000000010000000000000e6875676f63617273797374656d73026e6c00000f000100 +076a800000010000000200000e6875676f63617273797374656d73026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +26233 +22360000000100000000000003777777076c756e61746963026e6c0000010001 +22368000000100000003000103777777076c756e61746963026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +26234 +fa0f00000001000000000000086c6f676c696e6573026e6c0000010001 +fa0f80000001000000020002086c6f676c696e6573026e6c0000010001c00c00020001000151800010046e733031086e65746c696e6573c015c00c00020001000151800007046e733032c02ec02900010001000151800004d99540f5c04500010001000151800004d99541f5 + +26235 +899c00000001000000000000087265642d7377616e026e6c0000010001 +899c80000001000000020001087265642d7377616e026e6c0000010001c00c0002000100015180000d06696e65743031036f7067c015c00c0002000100015180000b026e73026e6c036e657400c02900010001000151800004c14eb322 + +26236 +272f00000001000000000000106361706f656972612d73656e7a616c61026e6c0000010001 +272f84030001000000010000106361706f656972612d73656e7a616c61026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +26237 +472a00000001000000000000036d783306787334616c6c026e6c0000010001 +472a80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +26238 +241400000001000000000000096675747572656e6574026e6c00000f0001 +241480000001000000020002096675747572656e6574026e6c00000f0001c00c00020001000151800012036e73350b73696c766572706f696e74c016c00c00020001000151800006036e7336c02ec02a0001000100015180000450f7c702c0480001000100015180000450f7c602 + +26239 +59ea0000000100000000000003777777136d6574686f7273742d7665726875697a657273026e6c0000010001 +59ea8000000100000002000203777777136d6574686f7273742d7665726875697a657273026e6c0000010001c0100002000100015180000f026e7309656174736572766572c024c01000020001000151800006036e7332c03bc03800010001000151800004d4cb0e42c05300010001000151800004d4cb1221 + +26240 +bab800000001000000000000026e6c0000020001 +bab884000001000800000001026e6c0000020001c00c00020001000151800015026e730f646f6d61696e2d7265676973747279c00cc00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c049c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c093c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +26241 +c1ed000000010000000000000762616e6e65727303696d73026e6c0000010001 +c1ed800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +26242 +484b00000001000000000000037777770731327761746368026e6c0000010001 +484b80000001000000020000037777770731327761746368026e6c0000010001c0100002000100015180000f036e733306616d6575726f02646500c01000020001000151800010036e733106616d6575726f036e657400 + +26243 +b91628000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373074f424856534c53026e6c000021000100000258001b00000064005808646330316876736c074f424856534c53026e6c00 +b916a8040000000000000000 + +26244 +4e1700000001000000000000096f6e6574656c6e6574026e6c0000ff0001 +4e1780000001000000020000096f6e6574656c6e6574026e6c0000ff0001c00c0002000100015180000f026e73096379626572636f6d6dc016c00c00020001000151800006036e7332c02d + +26245 +0580000000010000000000000377777707766f6c64657273026e6c0000010001 +0580800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26246 +000000007002faf0764800000204056401010402 +000080010000000000000000 + +26247 +9dbb000000010000000000001167696573626572736d617465726965656c026e6c0000ff0001 +9dbb800000010000000200001167696573626572736d617465726965656c026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c038 + +26248 +83ad000000010000000000000669736c696566026e6c00000f0001 +83ad800000010000000200000669736c696566026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02b + +26249 +b2d600000001000000000000055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573026463065f6d736463730c76657273616e61617264656e026e6c0000060001 +b2d684030001000000010000055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573026463065f6d736463730c76657273616e61617264656e026e6c0000060001c04800060001000038400036026e730f646f6d61696e2d7265676973747279c0480a686f73746d6173746572c05f0bf1e540000070800000384000278d0000003840 + +26250 +4fc0000000010000000000000e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001 +4fc0800000010000000200020e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001c01b0002000100015180000f036e73310861746c616e74697ac029c01b00020001000151800006036e7332c041c03d00010001000151800004d5efa011c05800010001000151800004d5efa075 + +26251 +46b200000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +46b280000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +26252 +a20d000000010000000000000377777709616e746971626f6f6b026e6c0000010001 +a20d800000010000000200020377777709616e746971626f6f6b026e6c0000010001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +26253 +3d8528000001000000010000026e6c0000060001035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730c7363616e6469747372763031026e6c0000210001000002580026000000640cc40e7363616e6469742d7365727665720c7363616e6469747372763031026e6c00 +3d85a8040000000000000000 + +26254 +b5f550df5010fd5c996b0000000000000000 +b5f5d0d40000000000000000 + +26255 +f120000000010000000000000f726976657276696577626568656572026e6c0000010001 +f120800000010000000200020f726976657276696577626568656572026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +26256 +b5f550df5018fd5c34450000008ed972000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd93403c4f1300030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 +b5f5d0d40000000000000000 + +26257 +05fc00000001000000000000037777770a67616d65737175617265026e6c0000010001 +05fc80000001000000020002037777770a67616d65737175617265026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +26258 +2a5f000000010000000000000a746573746d696a6e6971026e6c0000ff0001 +2a5f800000010000000300020a746573746d696a6e6971026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c017c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +26259 +0308000000010000000000000569736d6166026e6c00000f0001 +0308800000010000000200000569736d6166026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02a + +26260 +f16000000001000000000000037777770a6865746b61737465656c026e6c0000010001 +f16080000001000000020002037777770a6865746b61737465656c026e6c0000010001c0100002000100015180000b04646e7331036f3277c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d5e38dd4c04600010001000151800004d5e38dcd + +26261 +0000000070024000df860000020405b401010402 +000080010000000000000000 + +26262 +b5f550ed5011fd4e98da0000000000000000 +b5f5d0e40000000000000000 + +26263 +000000007002faf05a7600000204056401010402 +000080010000000000000000 + +26264 +f85a00000001000000000000036d783306787334616c6c026e6c0000010001 +f85a80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +26265 +cf9600000001000000000000036e73330d686f73746e656465726c616e64026e6c0000010001 +cf9680000001000000030002036e73330d686f73746e656465726c616e64026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +26266 +063c00000001000000000000037777770965726f646174696e67026e6c0000010001 +063c80000001000000020000037777770965726f646174696e67026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +26267 +73eb00000001000000000000036e7336086a726f6e6c696e65026e6c0000010001 +73eb80000001000000020000036e7336086a726f6e6c696e65026e6c0000010001c01000020001000151800014036e73310d686f73746e656465726c616e64c019c01000020001000151800006036e7333c031 + +26268 +41d3000000010000000000000377777710646973636f766572796368616e6e656c026e6c0000010001 +41d3800000010000000200000377777710646973636f766572796368616e6e656c026e6c0000010001c01000020001000151800012036e7331086e65746e616d6573036e657400c01000020001000151800006036e7332c039 + +26269 +b5f5d4c8501044707d0c0000000000000000 + + +26270 +b5f5d4c850184470f2d3000000992a30000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda1403c1f2100030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 + + +26271 +b5f550ee5010fd4e98d90000000000000000 +b5f5d0e40000000000000000 + +26272 +b5f6a7075010fd5c27700000000000000000 + + +26273 +b5f6a7075018fd5c47b70000008e5506000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd93403c4f1300030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 + + +26274 +e7c70010000100000000000103777777057377657473026e6c00000100010000290800000080000000 +e7c78000000100000002000203777777057377657473026e6c0000010001c010000200010001518000060373756ec010c0100002000100015180001904646e73310e7377657473626c61636b77656c6c03636f6d00c02a00010001000151800004c057323c0000291000000000000000 + +26275 +158d000000010000000000000377777707766f6c64657273026e6c0000010001 +158d800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26276 +377e0000000100000000000003777777056e76736876026e6c0000010001 +377e8000000100000002000203777777056e76736876026e6c0000010001c0100002000100015180000f026e7309656174736572766572c016c01000020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +26277 +c07a00000001000000000000066162666c6578066575726f7476026e6c0000010001 +c07a80000001000000020002066162666c6578066575726f7476026e6c0000010001c01300020001000151800010036e7331096e657773747265616dc01ac01300020001000151800006036e7332c032c02e00010001000151800004c26d81d3c04a00010001000151800004c26d81d4 + +26278 +4e000000000100000000000009676f7564656e62616c03647365026e6c0000010001 +4e008000000100000002000209676f7564656e62616c03647365026e6c0000010001c01600020001000151800012036e73310b7669616e6574776f726b73c01ac01600020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +26279 +b5f5d4d6501144627c700000000000000000 + + +26280 +ee2d000000010000000000000474726578066e6574726578026e6c0000010001 +ee2d800000010000000200020474726578066e6574726578026e6c0000010001c01100020001000151800002c00cc01100020001000151800006036e7332c011c00c00010001000151800004d4cccf1fc03a000100010001518000043eb1a02b + +26281 +f61c00000001000000000000037777770c6e696a6d6567656e2d6e6563026e6c0000010001 +f61c80000001000000030000037777770c6e696a6d6567656e2d6e6563026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c039c0100002000100015180000a076e73686f737433c039 + +26282 +000000007002400033c60000020405b401010402 +000080010000000000000000 + +26283 +b5f6a7155011fd4e26df0000000000000000 + + +26284 +000000007002faf08f9300000204056401010402 +000080010000000000000000 + +26285 +b5f5d4d7501044627c6f0000000000000000 + + +26286 +7c7a000000010000000000000a6563687465726e616368026e6c00000f0001 +7c7a800000010000000200000a6563687465726e616368026e6c00000f0001c00c0002000100015180001104726171390662697a6e697a036e657400c00c00020001000151800008057261713134c030 + +26287 +b5f74ebe5010447057540000000000000000 +b5f7ceb40000000000000000 + +26288 +b5f6a7165010fd4e26de0000000000000000 + + +26289 +b5f74ebe5018447031ec00000099c660000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda1403c1f2100030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 +b5f7ceb40000000000000000 + +26290 +b5f822bd5010fd5ce0d50000000000000000 +b5f8a2b30000000000000000 + +26291 +c8c100000001000000000000047376636f0c6e6f6f72646572706f6f7274026e6c0000010001 +c8c180000001000000020000047376636f0c6e6f6f72646572706f6f7274026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c038 + +26292 +a7cb00000001000000000000056b72656b74026e6c00000f0001 +a7cb80000001000000030000056b72656b74026e6c00000f0001c00c0002000100015180001505646e7331300961637469766569737003636f6d00c00c0002000100015180000805646e733131c02cc00c0002000100015180000805646e733132c02c + +26293 +bc5e00000001000000000000086465766f7372656f026e6c00000f0001 +bc5e80000001000000020002086465766f7372656f026e6c00000f0001c00c0002000100015180000c04646e73310470696e73c015c00c0002000100015180000704646e7332c02ec02900010001000151800004d9c26101c04100010001000151800004d9c26002 + +26294 +b5f822bd5018fd5cb3f20000008ea230000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd93403c4f1300030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 +b5f8a2b30000000000000000 + +26295 +01b20000000100000000000002343603313437023539033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +01b28000000100000002000202343603313437023539033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +26296 +15ba00000001000000000000036e7331096e657467726f756e64026e6c0000010001 +15ba80000001000000020002036e7331096e657467726f756e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e415c03c0001000100015180000451046014 + +26297 +58cd00000001000000000000036e7331076f726967696e38026e6c0000010001 +58cd80000001000000020002036e7331076f726967696e38026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c26d6e11c03a00010001000151800004d4ccc0f8 + +26298 +bf5100000001000000000000036e7332076f726967696e38026e6c0000010001 +bf5180000001000000020002036e7332076f726967696e38026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c26d6e11c00c00010001000151800004d4ccc0f8 + +26299 +231000000001000000000000026e7308767575727765726b026e6c0000010001 +231080000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +26300 +b5f74ecc5011446256b80000000000000000 +b5f7cec40000000000000000 + +26301 +3e5f00000001000000000000037777770f64656a6f6e676d6f64656c626f7577026e6c0000010001 +3e5f80000001000000020000037777770f64656a6f6e676d6f64656c626f7577026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c037 + +26302 +0000000070024000ebf80000020405b401010402 +000080010000000000000000 + +26303 +b5f822cb5011fd4ee0440000000000000000 +b5f8a2c30000000000000000 + +26304 +67af00000001000000000000037777770b6c6573626f62656666656e026e6c0000010001 +67af84030001000000010000037777770b6c6573626f62656666656e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +26305 +b4f50000000100000000000008746563736f6e6276026e6c00000f0001 +b4f58000000100000002000208746563736f6e6276026e6c00000f0001c00c0002000100015180001104646e733109616464766973696f6ec015c00c0002000100015180000704646e7332c02ec029000100010001518000045054e242c046000100010001518000045054e243 + +26306 +b5f74ecd5010446256b70000000000000000 +b5f7cec40000000000000000 + +26307 +b5f8bd2750104470a11c0000000000000000 + + +26308 +19c5000000010000000000000468747470077765626e743034067365727665720477656233026e6c0000010001 +19c5800000010000000200020468747470077765626e743034067365727665720477656233026e6c0000010001c02000020001000151800006036e7331c020c02000020001000151800006036e7332c020c03900010001000151800004d436240ec04b00010001000151800004c2b262ef + +26309 +e6da00000001000000000000036e733209616464766973696f6e026e6c0000010001 +e6da80000001000000020002036e733209616464766973696f6e026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02e000100010001518000045054e242c041000100010001518000045054e243 + +26310 +35c700000001000000000000036e733109616464766973696f6e026e6c0000010001 +35c780000001000000020002036e733109616464766973696f6e026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02e000100010001518000045054e242c041000100010001518000045054e243 + +26311 +19b5000000010000000000000562736d747008746563736f6e6276026e6c0000010001 +19b5800000010000000200020562736d747008746563736f6e6276026e6c0000010001c0120002000100015180001104646e733109616464766973696f6ec01bc0120002000100015180000704646e7332c034c02f000100010001518000045054e242c04c000100010001518000045054e243 + +26312 +4955000000010000000000000c7a6f726773797374656d656e026e6c0000010001 +4955800000010000000200020c7a6f726773797374656d656e026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +26313 +b5f8bd27501844703755000000990ac0000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda1403c1f2100030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 + + +26314 +b5f822cc5010fd4ee0430000000000000000 +b5f8a2c30000000000000000 + +26315 +9e880000000100000000000009646274656c65636f6d026e6c0000010001 +9e888000000100000002000209646274656c65636f6d026e6c0000010001c00c000200010001518000110a6c65757665686176656e03696772c016c00c0002000100015180000d0a64656c6673686176656ec035c02a000100010001518000043e2d5e0dc047000100010001518000043e2d5e82 + +26316 +6c7d00000001000000000000046d61696c086d61727175616765026e6c0000010001 +6c7d80000001000000020002046d61696c086d61727175616765026e6c0000010001c0110002000100015180000d036e733106736f6c6c6965c01ac01100020001000151800006036e7332c032c02e00010001000151800004d4ccf609c04700010001000151800004d4ccf60a + +26317 +b5f8bd3550114462a0800000000000000000 + + +26318 +e8c600000001000000000000037777770a20766163616e74696573026e6c0000010001 +e8c684030001000000010000037777770a20766163616e74696573026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +26319 +15800000000100000000000009652d6c756e61746963026e6c0000010001 +15808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +26320 +8616000000010000000000000c68656e6e7976616e6b6f6f79026e6c00000f0001 +8616800000010000000200000c68656e6e7976616e6b6f6f79026e6c00000f0001c00c00020001000151800017036e7333107365637572656e616d65736572766572c019c00c00020001000151800006036e7334c031 + +26321 +b5f8bd3650104462a07f0000000000000000 + + +26322 +8b8000000001000000000000046d61696c07736361726c6574026e6c0000010001 +8b8080000001000000030003046d61696c07736361726c6574026e6c0000010001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +26323 +adbb000000010000000000000377777709706174737469636b73026e6c0000010001 +adbb800000010000000200020377777709706174737469636b73026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01ac01000020001000151800006036e7332c032c02e00010001000151800004c3454b03c04a00010001000151800004d119a2fa + +26324 +f4a30000000100000000000005646e732d31056c61646f74026e6c0000010001 +f4a38000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26325 +aa660000000100000000000005646e732d32056c61646f74026e6c0000010001 +aa668000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26326 +09540000000100000000000008766574726f746563026e6c00000f0001 +09548403000100000001000008766574726f746563026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +26327 +a4360000000100000000000003313537033130330232320236390a626c61636b686f6c657307656173796e6574026e6c0000010001 +a4368000000100000002000203313537033130330232320236390a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +26328 +e83900100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +e83980000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +26329 +422f00000001000000000000037777770770726f6c6f6e67026e6c0000010001 +422f80000001000000020002037777770770726f6c6f6e67026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c018c01000020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +26330 +b33900000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001 +b33984030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076b6c6a626f7577026e6c0000060001c04800060001000038400036026e730f646f6d61696e2d7265676973747279c0480a686f73746d6173746572c05f0bf1e540000070800000384000278d0000003840 + +26331 +ea7a00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +ea7a80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +26332 +ea3f00000001000000000000046d61696c0a696e746572706861726d026e6c0000010001 +ea3f80000001000000020000046d61696c0a696e746572706861726d026e6c0000010001c0110002000100015180000d036e7331036b706e036e657400c01100020001000151800006036e7332c034 + +26333 +462b000000010000000000000c616d657273666f6f72747365026e6c0000010001 +462b800000010000000200000c616d657273666f6f72747365026e6c0000010001c00c00020001000151800015036e73310b656e65726769732d696463036e657400c00c00020001000151800006036e7332c031 + +26334 +1b0e0000000100000000000003777777076e656473746174026e6c0000010001 +1b0e8000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26335 +434300000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +434380000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +26336 +73530000000100000000000004686f6d6506706c616e6574026e6c0000010001 +73538000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +26337 +f49000000001000000000000035f6763045f746370076465656e6b6161026e6c0000060001 +f49084030001000000010000035f6763045f746370076465656e6b6161026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +26338 +7585000000010000000000000a626464617461706c616e026e6c0000010001 +7585800000010000000200020a626464617461706c616e026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +26339 +c50a00000001000000000000066d6579736f6e026e6c00000f0001 +c50a80000001000000020001066d6579736f6e026e6c00000f0001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c02700010001000151800004d4ccc0fc + +26340 +106400000001000000000000036e73340767617574656e67026e6c0000010001 +106480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26341 +384e00000001000000000000036e73330767617574656e67026e6c0000010001 +384e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26342 +dd8c00000001000000000000056a756e6978056675736978026e6c0000260001 +dd8c80000001000000020002056a756e6978056675736978026e6c0000260001c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02c00010001000151800004c340530bc03e00010001000151800004c355e185 + +26343 +363b0000000100000000000003777777056964657573026e6c0000010001 +363b8000000100000002000103777777056964657573026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180001303646e73097365636f6e64617279036f726700c02a000100010001518000043eddc7d1 + +26344 +e4d000000001000000000000036e7332056132303030026e6c00001c0001 +e4d080000001000000030002036e7332056132303030026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +26345 +c08d00000001000000000000036e7332056132303030026e6c0000260001 +c08d80000001000000030002036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +26346 +e8d400000001000000000000036e7331056132303030026e6c00001c0001 +e8d480000001000000030002036e7331056132303030026e6c00001c0001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +26347 +cec6000000010000000000000377777707626469736f6b65026e6c0000010001 +cec6800000010000000200000377777707626469736f6b65026e6c0000010001c01000020001000151800017036e73310d6465696e7465726e65746d616e036e657400c01000020001000151800006036e7332c030 + +26348 +7ab500100001000000000001036e73310a726564686f7374696e67026e6c00000100010000290800000000000000 +7ab580000001000000020003036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa4050000291000000000000000 + +26349 +baf100000001000000000000036e7331056132303030026e6c0000260001 +baf180000001000000030002036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +26350 +b47400100001000000000001036e73310a726564686f7374696e67026e6c00002600010000290800000000000000 +b47480000001000000020003036e73310a726564686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa4050000291000000000000000 + +26351 +6d6500100001000000000001036e73320a726564686f7374696e67026e6c00000100010000290800000000000000 +6d6580000001000000020003036e73320a726564686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa4050000291000000000000000 + +26352 +862d00100001000000000001036e73320a726564686f7374696e67026e6c00002600010000290800000000000000 +862d80000001000000020003036e73320a726564686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa4050000291000000000000000 + +26353 +982f28000001000000010000026e6c0000060001035f6763045f746370076465656e6b6161026e6c000021000100000258001a000000640cc4076465656e6b6161076465656e6b6161026e6c00 +982fa8040000000000000000 + +26354 +9591000000010000000000000665776562636f026e6c00001c0001 +9591840300010000000100000665776562636f026e6c00001c0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +26355 +0000000070024000e4bf0000020405b401010402 +000080010000000000000000 + +26356 +4307000000010000000000000462757661026e6c00000f0001 +4307800000010000000200000462757661026e6c00000f0001c00c0002000100015180000f026e7306636170696361036e657400c00c00020001000151800006036e7332c028 + +26357 +b5f94cd4501044700a360000000000000000 +b5f9ccd40000000000000000 + +26358 +67070000000100000000000003777777086575726f6b6c696b026e6c0000010001 +67078000000100000002000103777777086575726f6b6c696b026e6c0000010001c0100002000100015180000e026e73086575726f636c6978c019c01000020001000151800012036e7332086575726f636c697803636f6d00c02d00010001000151800004d47bc685 + +26359 +b5f94cd450184470a70a0000008ebfc0000000010001000000000f313033303739323135313035382d330000f900010f313033303739323135313035382d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403af9aa403c4b2a00030000002f4e544c4d535350000100000097b200e0080008002700000007000700200000004445454e4b41414445454e4b4141300000 +b5f9ccd40000000000000000 + +26360 +53fe00000001000000000000097665636f6e73756c74026e6c0000010001 +53fe80000001000000020002097665636f6e73756c74026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +26361 +b5f94ce25011446209a50000000000000000 +b5f9cce40000000000000000 + +26362 +3a4300000001000000000000036e7331027a73026e6c0000010001 +3a4380000001000000030003036e7331027a73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef829fc03500010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +26363 +d5ad00000001000000000000036e7332027a73026e6c0000010001 +d5ad80000001000000030003036e7332027a73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02700010001000151800004d5ef829fc00c00010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +26364 +b5f94ce35010446209a40000000000000000 +b5f9cce40000000000000000 + +26365 +315c00000001000000000000037777770c7374617272656d6564696573026e6c0000010001 +315c80000001000000030003037777770c7374617272656d6564696573026e6c0000010001c0100002000100015180000c036e7331053266617374c01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c0310001000100015180000450f7c022c049000100010001518000043e858122c05b000100010001518000045117eb22 + +26366 +000000007002400012600000020405b401010402 +000080010000000000000000 + +26367 +b5f9f08b50104470941e0000000000000000 + + +26368 +629200000001000000000000037777770676656b61626f026e6c0000010001 +629280000001000000020002037777770676656b61626f026e6c0000010001c0100002000100015180000f036e7332087472697070656c77c017c0100002000100015180000a036e7332036e7873c017c02b00010001000151800004d973c3d7c04600010001000151800004d973c102 + +26369 +7b080000000100000000000003777777086e756465626f797a026e6c0000010001 +7b088000000100000002000203777777086e756465626f797a026e6c0000010001c0100002000100015180000c04646e73310470696e73c019c0100002000100015180000704646e7332c032c02d00010001000151800004d9c26101c04500010001000151800004d9c26002 + +26370 +9e16000000010000000000000377777705636c756273026e6c0000010001 +9e16800000010000000200010377777705636c756273026e6c0000010001c0100002000100015180000a036e733303777873c016c01000020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +26371 +b5f9f08b50184470b7f40000008e39c0000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af9aa403c4b2a00030000002f4e544c4d535350000100000097b200e0080008002700000007000700200000004445454e4b41414445454e4b4141300000 + + +26372 +2a45000000010000000000001474656e62726f656b2d68656e67656c73706f7274026e6c00000f0001 +2a45800000010000000200021474656e62726f656b2d68656e67656c73706f7274026e6c00000f0001c00c00020001000151800011036e73350a6e657461666661697273c021c00c00020001000151800006036e7336c039c03500010001000151800004c1ac2d05c05200010001000151800004c1ac2d06 + +26373 +b5f9f09950114462938d0000000000000000 + + +26374 +6c52000000010000000000000377777706732d636f7274026e6c0000010001 +6c52800000010000000200020377777706732d636f7274026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c017c01000020001000151800006036e7332c02fc02b0001000100015180000451113264c04700010001000151800004d5c42851 + +26375 +b5f9f09a50104462938c0000000000000000 + + +26376 +80d0000000010000000000000776657273696f6e0462696e640000100003 +80d0800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +26377 +4109000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +4109800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26378 +000000007002400009cf0000020405b401010402 +000080010000000000000000 + +26379 +374b0000000100000000000003313537033130330232320236390a626c61636b686f6c657307656173796e6574026e6c0000050001 +374b8000000100000002000203313537033130330232320236390a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +26380 +41c000000001000000000000037777770d64696572656e2d72617373656e026e6c0000010001 +41c080000001000000020000037777770d64696572656e2d72617373656e026e6c0000010001c0100002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0100002000100015180000d077669312d6e7330026174c03d + +26381 +c283000000010000000000000462617261026e6c00000f0001 +c283800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +26382 +80d100000001000000000000026e6c0000060001 +80d184000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +26383 +f5fd00000001000000000000037777770d7765726b656e696e73616c6f75026e6c0000010001 +f5fd80000001000000020000037777770d7765726b656e696e73616c6f75026e6c0000010001c01000020001000151800018036e73310e66696e616c2d66726f6e74696572036e657400c01000020001000151800006036e7332c036 + +26384 +b5fc831750104470f8fe0000000000000000 + + +26385 +b5fc83175018447044550000008e1240000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af9aa403c4b2a00030000002f4e544c4d535350000100000097b200e0080008002700000007000700200000004445454e4b41414445454e4b4141300000 + + +26386 +9a2100000001000000000000036e73310c696d70726573736976657873026e6c0000010001 +9a2180000001000000020002036e73310c696d70726573736976657873026e6c0000010001c0100002000100015180000a036e733103706777c01dc01000020001000151800006036e7332c035c031000100010001518000043e818832c04700010001000151800004d4ccc621 + +26387 +e82f00000001000000000000036e73320c696d70726573736976657873026e6c0000010001 +e82f80000001000000020002036e73320c696d70726573736976657873026e6c0000010001c0100002000100015180000a036e733103706777c01dc01000020001000151800006036e7332c035c031000100010001518000043e818832c04700010001000151800004d4ccc621 + +26388 +fd0a00000001000000000000036e73310c696d70726573736976657873026e6c0000260001 +fd0a80000001000000020002036e73310c696d70726573736976657873026e6c0000260001c0100002000100015180000a036e733103706777c01dc01000020001000151800006036e7332c035c031000100010001518000043e818832c04700010001000151800004d4ccc621 + +26389 +3f4c00000001000000000000036e73320c696d70726573736976657873026e6c0000260001 +3f4c80000001000000020002036e73320c696d70726573736976657873026e6c0000260001c0100002000100015180000a036e733103706777c01dc01000020001000151800006036e7332c035c031000100010001518000043e818832c04700010001000151800004d4ccc621 + +26390 +25450000000100000000000003777777086d74726565787878026e6c0000010001 +25458000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +26391 +5d3a00000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +5d3a80000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +26392 +64ed00000001000000000000026e730b6973642d686f6c6c616e64026e6c0000010001 +64ed80000001000000020002026e730b6973642d686f6c6c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +26393 +b5fc832550114462f86d0000000000000000 + + +26394 +b5fc832650104462f86c0000000000000000 + + +26395 +52840000000100000000000003777777036d736e026e6c0000010001 +52848000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +26396 +8bb3000000010000000000000d626f7374696b66696e646c6579026e6c00000f0001 +8bb3800000010000000200020d626f7374696b66696e646c6579026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +26397 +ea8f00000001000000000000026e73066863636e6574026e6c0000010001 +ea8f80000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +26398 +4fea0000000100000000000003646a6b026e6c00000f0001 +4fea8000000100000002000003646a6b026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c028 + +26399 +3b0e000000010000000000000679656c6c6f77026e6c00000f0001 +3b0e800000010000000300010679656c6c6f77026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +26400 +b7030000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7038000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26401 +b7040000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7048000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26402 +0b16000000010000000000000679656c6c6f77026e6c00000f0001 +0b16800000010000000300010679656c6c6f77026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +26403 +c86b00000001000000000000056272696e6b026e6c0000010001 +c86b80000001000000020002056272696e6b026e6c0000010001c00c0002000100015180000c036e73310563736e6574c012c00c00020001000151800006036e7332c02ac02600010001000151800004c2451012c03e00010001000151800004c2451212 + +26404 +f958000000010000000000000a6862636f6e7368656572066862636f6e73026e6c0000010001 +f958800000010000000200000a6862636f6e7368656572066862636f6e73026e6c0000010001c0170002000100015180000b026e73026e6c036e657400c0170002000100015180001206617574683630026e73026e6c027575c038 + +26405 +550600000001000000000000036e73310568616e7a65026e6c0000010001 +550680000001000000030003036e73310568616e7a65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c016c00c00010001000151800004912106efc03800010001000151800004912106eec04a00010001000151800004c0576a65 + +26406 +736700000001000000000000036e73320568616e7a65026e6c0000010001 +736780000001000000030003036e73320568616e7a65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +26407 +314f0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +314f8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26408 +d7c4000000010000000000000c6762636f6e6669726d697479026e6c00000f0001 +d7c4840300010000000100000c6762636f6e6669726d697479026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +26409 +b01900000001000000000000076d696e62757a61026e6c0000010001 +b01980000001000000020001076d696e62757a61026e6c0000010001c00c0002000100015180000b087374617267617465c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004d535a3d2 + +26410 +b7070000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7078000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26411 +2fbb000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +2fbb800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26412 +f5a228000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d7364637306444154455354026e6c000021000100000258001a000000640cc40864636e6c6461303706444154455354026e6c00 +f5a2a8040000000000000000 + +26413 +0daa000000010000000000000467726678086d61696c73657276026e6c0000010001 +0daa800000010000000200020467726678086d61696c73657276026e6c0000010001c0110002000100015180000c026e73067574722d6978c01ac01100020001000151800006036e7332c031c02e0001000100015180000451113206c04600010001000151800004d5c42806 + +26414 +d1020000000100000000000008736179616e6f7261056d62757975026e6c0000010001 +d1028000000100000002000008736179616e6f7261056d62757975026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c032 + +26415 +843b00000001000000000000026e7308767575727765726b026e6c0000010001 +843b80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +26416 +778100000001000000000000046d61696c0476697065026e6c0000010001 +778180000001000000030002046d61696c0476697065026e6c0000010001c0110002000100015180000d036e733106776964657873c016c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +26417 +432c000000010000000000000370616d02696d026e6c0000010001 +432c800000010000000200010370616d02696d026e6c0000010001c0100002000100015180000a036e733303777873c013c01000020001000151800006036e7334c02bc03d00010001000151800004d5ef9a65 + +26418 +82cd0000000100000000000008726f656e7467656e0a726567696f7669737461026e6c0000010001 +82cd8000000100000003000308726f656e7467656e0a726567696f7669737461026e6c0000010001c0150002000100015180000e046865726101780463756369c020c0150002000100015180000c066865726d6573026e6cc03bc01500020001000151800009066865726d6573c039c03400010001000151800004d47d8001c04e00010001000151800004c143ef02c06600010001000151800004d47d8002 + +26419 +91180000000100000000000018727061617264656b6f6f70657233343340667265656c6572026e6c0000010001 +91188403000100000001000018727061617264656b6f6f70657233343340667265656c6572026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +26420 +b6cf0000000100000000000003777777086c65747373746174026e6c0000010001 +b6cf8000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +26421 +d89100000001000000000000036e73310b62756c6b646f6d61696e73026e6c0000010001 +d89180000001000000020002036e73310b62756c6b646f6d61696e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd1b2c03e00010001000151800004d4ccd1b3 + +26422 +7c1200000001000000000000036e73320b62756c6b646f6d61696e73026e6c0000010001 +7c1280000001000000020002036e73320b62756c6b646f6d61696e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d4ccd1b2c00c00010001000151800004d4ccd1b3 + +26423 +6cb30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +6cb38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26424 +f71f00000001000000000000037777770d6a656e6e696665726c6f70657a026e6c0000010001 +f71f80000001000000030003037777770d6a656e6e696665726c6f70657a026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01ec0100002000100015180000704646e7332c037c0100002000100015180000704646e7333c037c03200010001000151800004d44fe803c04c00010001000151800004c3f5c782c05f00010001000151800004d44ff303 + +26425 +ba9000000001000000000000036e7333076e656473746174026e6c0000010001 +ba9080000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +26426 +c19a0000000100000000000003777777086865747370616e74026e6c0000010001 +c19a8403000100000001000003777777086865747370616e74026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +26427 +079b0000000100000000000004766c6965026e6c0000010001 +079b8000000100000003000204766c6965026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +26428 +090f000000010000000000000833742d76656c6437026e6c00000f0001 +090f800000010000000300000833742d76656c6437026e6c00000f0001c00c00020001000151800017076e73686f73743103737432056c79636575036e657400c00c0002000100015180000a076e73686f737432c031c00c0002000100015180000a076e73686f737433c031 + +26429 +c4e500000001000000000000076d617271616e74026e6c0000010001 +c4e580000001000000020000076d617271616e74026e6c0000010001c00c0002000100015180000d046e72313205692d702d64c014c00c00020001000151800006036e7237c02d + +26430 +5d4800000001000000000000026e73076e656473746174026e6c0000010001 +5d4880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +26431 +0a2a0000000100000000000006787334616c6c026e6c0000010001 +0a2a8000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +26432 +3d1800000001000000000000036e73310a726564686f7374696e67026e6c0000010001 +3d1880000001000000020002036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +26433 +9e8c00000001000000000000036e73310a726564686f7374696e67026e6c0000260001 +9e8c80000001000000020002036e73310a726564686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +26434 +92af00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +92af80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +26435 +dbb9000000010000000000000377777706736f766f636f026e6c0000010001 +dbb9800000010000000200000377777706736f766f636f026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02e + +26436 +f3f7000000010000000000000377777703696165026e6c0000010001 +f3f7800000010000000200020377777703696165026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c014c01000020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +26437 +0b6100000001000000000000036e7331096e657467726f756e64026e6c0000010001 +0b6180000001000000020002036e7331096e657467726f756e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e415c03c0001000100015180000451046014 + +26438 +e7ee00000001000000000000036e73320a726564686f7374696e67026e6c0000010001 +e7ee80000001000000020002036e73320a726564686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +26439 +f3f700000001000000000000036e73320a726564686f7374696e67026e6c0000260001 +f3f780000001000000020002036e73320a726564686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +26440 +df950000000100000000000005746576616e026e6c00000f0001 +df958000000100000003000305746576616e026e6c00000f0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec012c00c00020001000151800006036e7331c02fc00c00020001000151800006036e7332c02fc02600010001000151800004d42d2005c04400010001000151800004d42d2003c05600010001000151800004d42d2103 + +26441 +dba900000001000000000000037777770a6c65756b657374617274026e6c0000010001 +dba980000001000000030003037777770a6c65756b657374617274026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +26442 +3d8e00000001000000000000046164737004696c7365026e6c0000010001 +3d8e80000001000000030003046164737004696c7365026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02a000100010001518000043e45a282c03c000100010001518000043e45a283c04e000100010001518000043e45a284 + +26443 +ef100000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +ef108000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26444 +99810000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +99818000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26445 +1e4b0000000100000000000003777777086765656e70756e74026e6c0000010001 +1e4b8000000100000002000203777777086765656e70756e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d4ccd865c03f000100010001518000045054ec34 + +26446 +157c00000001000000000000037777770a65726f74697373696d6f026e6c0000010001 +157c80000001000000020002037777770a65726f74697373696d6f026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01bc01000020001000151800006036e7332c033c02f00010001000151800004c3454b03c04b00010001000151800004d119a2fa + +26447 +10f500000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657305656c616e32026e6c0000060001 +10f584030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657305656c616e32026e6c0000060001c03a00060001000038400036026e730f646f6d61696e2d7265676973747279c03a0a686f73746d6173746572c0510bf1e540000070800000384000278d0000003840 + +26448 +14c00000000100000000000004616e73320774697363616c69026e6c0000010001 +14c08000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +26449 +21a80000000100000000000003777777076e6f676e696b7a026e6c0000010001 +21a88000000100000003000103777777076e6f676e696b7a026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +26450 +62f9000000010000000000000773657276657231087369746574726171026e6c0000010001 +62f9800000010000000200000773657276657231087369746574726171026e6c0000010001c0140002000100015180000f036e733105796b6f6f6e036e657400c01400020001000151800006036e7332c035 + +26451 +3625000000010000000000000a70656e746173636f7065026e6c00000f0001 +3625800000010000000200000a70656e746173636f7065026e6c00000f0001c00c00020001000151800012036e736108696e666f7061637403636f6d00c00c00020001000151800006036e7362c02f + +26452 +975900000001000000000000036e73320c6d65676170726f7669646572026e6c0000010001 +975980000001000000030003036e73320c6d65676170726f7669646572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0310001000100015180000450474002c00c0001000100015180000450474102c05000010001000151800004d943ee57 + +26453 +522300000001000000000000026e730c6d65676170726f7669646572026e6c0000010001 +522380000001000000030003026e730c6d65676170726f7669646572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +26454 +6f4800000001000000000000066865796e656e026e6c00000f0001 +6f4880000001000000020000066865796e656e026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +26455 +1ccf28000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657305656c616e32026e6c000021000100000258001a000000640cc409696e7465726e65743105656c616e32026e6c00 +1ccfa8040000000000000000 + +26456 +11d60000000100000000000011636861726c696563726f6f696a6d616e73026e6c00000f0001 +11d68000000100000002000011636861726c696563726f6f696a6d616e73026e6c00000f0001c00c0002000100015180001804646e73310d737973696e69746f6e6c696e65036e657400c00c0002000100015180000704646e7333c037 + +26457 +000000007002400018250000020405ac01010402 +000080010000000000000000 + +26458 +e86d0000000100000000000003777777057377657473026e6c0000010001 +e86d8000000100000002000103777777057377657473026e6c0000010001c010000200010001518000060373756ec010c0100002000100015180001904646e73310e7377657473626c61636b77656c6c03636f6d00c02a00010001000151800004c057323c + +26459 +1a2d00000001000000000000037777770477756d6e026e6c0000010001 +1a2d80000001000000020002037777770477756d6e026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c015c01000020001000151800006036e7332c02dc02900010001000151800004505fa002c04400010001000151800004505fac02 + +26460 +f8fe000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +f8fe800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26461 +000000007002faf09f980000020405b401010402 +000080010000000000000000 + +26462 +b5fde23c5010fbec33160000000000000000 + + +26463 +b5fd4fd4501044103aef0000000000000000 +b5fdcfd40000000000000000 + +26464 +b5fde23c5018fbece71a0000008d8180000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff2f403c50af00030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 + + +26465 +b5fd4fd45018441087bb00000094248d000000010001000000000f313031333631323238313837342d320000f900010f313031333631323238313837342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af729403c48a90003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 +b5fdcfd40000000000000000 + +26466 +3ec20000000100000000000007667265656c6572026e6c00000f0001 +3ec28000000100000002000007667265656c6572026e6c00000f0001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +26467 +b5fde24a5011fbde32860000000000000000 + + +26468 +63f30000000100000000000003777777056c79636f73026e6c0000010001 +63f38000000100000002000003777777056c79636f73026e6c0000010001c0100002000100015180001106646e73312d31056c79636f7302646500c0100002000100015180000906646e73322d31c031 + +26469 +b5fd4fe2501144023a580000000000000000 +b5fdcfe40000000000000000 + +26470 +000000007002faf0eeb60000020405b401010402 +000080010000000000000000 + +26471 +b5fde24b5010fbde32850000000000000000 + + +26472 +6e6700000001000000000000047376726f026e6c00000f0001 +6e6780000001000000030002047376726f026e6c00000f0001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +26473 +562700000001000000000000036e733109666972737466696e64026e6c0000010001 +562780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26474 +b5fd4fe3501044023a570000000000000000 +b5fdcfe40000000000000000 + +26475 +4978000000010000000000000a6f6d616578747265656d03337878026e6c0000010001 +4978800000010000000200000a6f6d616578747265656d03337878026e6c0000010001c01700020001000151800012036e73310878656e6f73697465036e657400c01700020001000151800006036e7332c033 + +26476 +b5feceaf5010fbec95c00000000000000000 + + +26477 +103700000001000000000000036e733209666972737466696e64026e6c0000010001 +103780000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26478 +b5feceaf5018fbecfa450000008dd200000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff2f403c50af00030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 + + +26479 +dbea0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +dbea8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26480 +3adc00000001000000000000037777770c6d616368696e656b616d6572026e6c0000010001 +3adc80000001000000020000037777770c6d616368696e656b616d6572026e6c0000010001c01000020001000151800014036e73310a6272696e6b686f737432036e657400c01000020001000151800006036e7332c035 + +26481 +b5fecebd5011fbde95300000000000000000 + + +26482 +24cb0000000100000000000004616e73320774697363616c69026e6c0000010001 +24cb8000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +26483 +fa41000000010000000000010469632d73026e6c00001c00010000291000000000000000 +fa41800000010000000200010469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +26484 +000000007002faf0f3a80000020405b401010402 +000080010000000000000000 + +26485 +b5fecebe5010fbde952f0000000000000000 + + +26486 +96250000000100000000000007696e7369746573026e6c00000f0001 +96258000000100000003000107696e7369746573026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +26487 +6f8b00000001000000000000126461706f756465726b65726b65726c61616e026e6c0000010001 +6f8b80000001000000020001126461706f756465726b65726b65726c61616e026e6c0000010001c00c0002000100015180000a036e733303777873c01fc00c00020001000151800006036e7334c037c04900010001000151800004d5ef9a65 + +26488 +b5ff56835010fbec12de0000000000000000 +b5ffd6840000000000000000 + +26489 +b5ff56835018fbec30e40000008d1880000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff2f403c50af00030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 +b5ffd6840000000000000000 + +26490 +7ecb000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +7ecb800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26491 +fa41000000010000000000000469632d73026e6c00001c0001 +fa41800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26492 +b5ff56915011fbde124e0000000000000000 +b5ffd6940000000000000000 + +26493 +f82700000001000000000000037777770a6b65756e73747775726b026e6c0000010001 +f82780000001000000020000037777770a6b65756e73747775726b026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c032 + +26494 +b5ff56925010fbde124d0000000000000000 +b5ffd6940000000000000000 + +26495 +ce8300000001000000000000037777770a6175746f706167696e61026e6c0000010001 +ce8380000001000000030003037777770a6175746f706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02f000100010001518000043e45a282c041000100010001518000043e45a283c053000100010001518000043e45a284 + +26496 +a86800000001000000000000036e733109666972737466696e64026e6c0000010001 +a86880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26497 +a86900000001000000000000036e733209666972737466696e64026e6c0000010001 +a86980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26498 +65720000000100000000000003777777067a7376737178026e6c0000010001 +65728403000100000001000003777777067a7376737178026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +26499 +2d90000000010000000000000377777707766f6c64657273026e6c0000010001 +2d90800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26500 +259d000000010000000000000377777707766f6c64657273026e6c0000010001 +259d800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26501 +a86b00000001000000000000036e733109666972737466696e64026e6c0000010001 +a86b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26502 +a86c00000001000000000000036e733209666972737466696e64026e6c0000010001 +a86c80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26503 +49f7000000010000000000000c6d61696c7363616e6e6572310b6f75776568616e642d6974026e6c0000010001 +49f7800000010000000200020c6d61696c7363616e6e6572310b6f75776568616e642d6974026e6c0000010001c01900020001000151800006036e7331c019c01900020001000151800006036e7333c019c03900010001000151800004d4cccff1c04b00010001000151800004d4ccc4b1 + +26504 +f30700000001000000000000026e7306787334616c6c026e6c00001c0001 +f30780000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +26505 +53e100000001000000000000036e733206787334616c6c026e6c00001c0001 +53e180000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +26506 +d08100000001000000000000026e73076e65746c616e64026e6c0000010001 +d08180000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +26507 +d08100000001000000000000026e73076e65746c616e64026e6c0000010001 +d08180000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +26508 +d08100000001000000000000026e73076e65746c616e64026e6c0000010001 +d08180000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +26509 +ae1600000001000000000000036e7332076e65746c616e64026e6c0000010001 +ae1680000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +26510 +ae1600000001000000000000036e7332076e65746c616e64026e6c0000010001 +ae1680000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +26511 +57300000000100000000000003777777097669657a65736c6574026e6c0000010001 +57308000000100000002000003777777097669657a65736c6574026e6c0000010001c01000020001000151800019026e73106575726f6d656469617472616666696303636f6d00c01000020001000151800006036e7332c031 + +26512 +981800100001000000000001036e7334076e656473746174026e6c00000100010000290800000000000000 +981880000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +26513 +b7090000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7098000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26514 +b70a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b70a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26515 +7852000000010000000000000e64696572656e6172747368656573026e6c0000010001 +7852800000010000000200010e64696572656e6172747368656573026e6c0000010001c00c0002000100015180000d036e733106776964657873c01bc00c00020001000151800010036e733206776964657873036e657400c02f00010001000151800004d4ccc0fc + +26516 +47d600000001000000000000036e733109666972737466696e64026e6c0000010001 +47d680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26517 +124800000001000000000000036e73310a726564686f7374696e67026e6c0000010001 +124880000001000000020002036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +26518 +187e000000010000000000000c7664622d736f667477617265026e6c00000f0001 +187e800000010000000300010c7664622d736f667477617265026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc019c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +26519 +b1ed0000000100000000000003777777076d617472616465026e6c0000010001 +b1ed8000000100000002000103777777076d617472616465026e6c0000010001c0100002000100015180000a036e733303777873c018c01000020001000151800006036e7334c030c04200010001000151800004d5ef9a65 + +26520 +f5d200000001000000000000037777770d73616e64657264657672696573026e6c0000010001 +f5d280000001000000020000037777770d73616e64657264657672696573026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c038 + +26521 +09530000000100000000000006636861726973026e6c00000f0001 +09538000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +26522 +067000000001000000000000036e733209666972737466696e64026e6c0000010001 +067080000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26523 +74690000000100000000000010706c73696e7465726e6174696f6e616c026e6c00001c0001 +74698000000100000002000210706c73696e7465726e6174696f6e616c026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc01dc00c00020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +26524 +f848000000010000000000000377777708736e6f7774696d65026e6c0000010001 +f848800000010000000300010377777708736e6f7774696d65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +26525 +110700000001000000000000036e7334076e656473746174026e6c0000010001 +110780000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26526 +9cb500000001000000000000036e7331056163646973026e6c0000010001 +9cb580000001000000020002036e7331056163646973026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +26527 +8ba600000001000000000000036e7331056163646973026e6c00001c0001 +8ba680000001000000020002036e7331056163646973026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +26528 +b70c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b70c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26529 +06aa0000000100000000000007616c6c696e6974026e6c00000f0001 +06aa8000000100000002000207616c6c696e6974026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +26530 +b70d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b70d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26531 +1eb400000001000000000001115354494e4745524649424552474c415353026e6c00000200010000290500000000000000 +1eb484030001000000010001115354494e4745524649424552474c415353026e6c0000020001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d00000038400000291000000000000000 + +26532 +fba000000001000000000000037777770b6c6174696e637574696573026e6c0000010001 +fba080000001000000020002037777770b6c6174696e637574696573026e6c0000010001c0100002000100015180000c04646e73310470696e73c01cc0100002000100015180000704646e7332c035c03000010001000151800004d9c26101c04800010001000151800004d9c26002 + +26533 +aca500000001000000000000036e7332076e656473746174026e6c0000010001 +aca580000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26534 +4cf500000001000000000000036e7332076e656473746174026e6c0000260001 +4cf580000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26535 +f5d300000001000000000000036e7334076e656473746174026e6c0000010001 +f5d380000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26536 +89c500000001000000000000036e7334076e656473746174026e6c0000260001 +89c580000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +26537 +898c00000001000000000000056973737565026e6c0000010001 +898c80000001000000020000056973737565026e6c0000010001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02a + +26538 +104b0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +104b8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +26539 +d7c100100001000000000001066d61737465720364746f07747564656c6674026e6c00000100010000290800000080000000 +d7c180000001000000050006066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a650000291000000000000000 + +26540 +8499000000010000000000002439646261393061342d353631332d343264322d393732382d336235336637613435393538065f6d73646373084b504e6174414250026e6c0000ff0001 +8499840300010000000100002439646261393061342d353631332d343264322d393732382d336235336637613435393538065f6d73646373084b504e6174414250026e6c0000ff0001c04100060001000038400036026e730f646f6d61696e2d7265676973747279c0410a686f73746d6173746572c0580bf1e540000070800000384000278d0000003840 + +26541 +d113000000010000000000000473616261026e6c00000f0001 +d113800000010000000200020473616261026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +26542 +8c7300000001000000000000037777770d6c61646f7563656672616e6365026e6c0000010001 +8c7380000001000000020000037777770d6c61646f7563656672616e6365026e6c0000010001c01000020001000151800014026e730b7369746570726f7465637403636f6d00c01000020001000151800006036e7332c035 + +26543 +2a410000000100000000000014627275696a736d657461616c676965746572696a026e6c0000010001 +2a418000000100000002000214627275696a736d657461616c676965746572696a026e6c0000010001c00c00020001000151800009036e7331026973c021c00c00020001000151800006036e7332c039c03500010001000151800004d5852102c04a00010001000151800004d5c41503 + +26544 +444a0000000100000000000003777777046e696969036b756e026e6c0000010001 +444a8000000100000003000303777777046e696969036b756e026e6c0000010001c0150002000100015180000f08636170796261726103756369c015c0150002000100015180000a036e733103736369c015c0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483ae3c15c0480001000100015180000483aee004c05e00010001000151800004c0576a65 + +26545 +be3e0000000100000000000003777777046e696969036b756e026e6c0000010001 +be3e8000000100000003000303777777046e696969036b756e026e6c0000010001c0150002000100015180000f08636170796261726103756369c015c0150002000100015180000a036e733103736369c015c0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483ae3c15c0480001000100015180000483aee004c05e00010001000151800004c0576a65 + +26546 +3f2100000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +3f2180000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +26547 +60a900000001000000000000036e733109666972737466696e64026e6c0000010001 +60a980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26548 +63fb00000001000000000000036e733209666972737466696e64026e6c0000010001 +63fb80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26549 +62f7000000010000000000000377777706617265613137026e6c0000010001 +62f7800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +26550 +154a000000010000000000000377777706617265613137026e6c0000010001 +154a800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +26551 +88a9000000010000000000000a6d7970726f7669646572026e6c0000010001 +88a9800000010000000200010a6d7970726f7669646572026e6c0000010001c00c0002000100015180000c036e7331056d79636f6dc017c00c00020001000151800006036e7332c02fc02b00010001000151800004d4ccc04f + +26552 +2c7f00000001000000000000087773776f726d6572026e6c0000ff0001 +2c7f80000001000000020002087773776f726d6572026e6c0000ff0001c00c00020001000151800012036e73310b6f75776568616e642d6974c015c00c00020001000151800006036e7333c02dc02900010001000151800004d4cccff1c04700010001000151800004d4ccc4b1 + +26553 +2d900000000100000000000009652d6c756e61746963026e6c0000010001 +2d908000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +26554 +1d9a0000000100000000000009652d6c756e61746963026e6c0000010001 +1d9a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +26555 +94e300000001000000000000056973696f6e026e6c00000f0001 +94e380000001000000020002056973696f6e026e6c00000f0001c00c0002000100015180000d026e73076b6e6f77617265c012c00c00020001000151800006036e7332c029c02600010001000151800004c3402003c03f00010001000151800004c340202b + +26556 +a5120000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a5128000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26557 +e94a00000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +e94a80000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +26558 +98cb0000000100000000000005656c6d656c026e6c00000f0001 +98cb8000000100000002000005656c6d656c026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +26559 +1eb400000001000000000000115354494e4745524649424552474c415353026e6c0000020001 +1eb484030001000000010000115354494e4745524649424552474c415353026e6c0000020001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +26560 +188600000001000000000001036e733104686f6d65026e6c00000100010000291000000000000000 +188680000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +26561 +20b200000001000000000001036e733404686f6d65026e6c00000100010000291000000000000000 +20b280000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +26562 +160400000001000000000001036e733204686f6d65026e6c00000100010000291000000000000000 +160480000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +26563 +d34200000001000000000001036e733304686f6d65026e6c00000100010000291000000000000000 +d34280000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +26564 +24ef0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +24ef8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26565 +188600000001000000000000036e733104686f6d65026e6c0000010001 +188680000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +26566 +20b200000001000000000000036e733404686f6d65026e6c0000010001 +20b280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +26567 +160400000001000000000000036e733204686f6d65026e6c0000010001 +160480000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +26568 +d34200000001000000000000036e733304686f6d65026e6c0000010001 +d34280000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +26569 +71b000000001000000000000036e733109666972737466696e64026e6c0000010001 +71b080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26570 +233c00000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +233c80000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +26571 +2c6c00000001000000000000036e733209666972737466696e64026e6c0000010001 +2c6c80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +26572 +d13f0000000100000000000006626f782d303508667265656d61696c026e6c0000010001 +d13f8000000100000003000206626f782d303508667265656d61696c026e6c0000010001c0130002000100015180000f04616e73310774697363616c69c01cc0130002000100015180000704616e7332c035c0130002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +26573 +7fbf0000000100000000000003777777066368656c6c6f026e6c0000010001 +7fbf8000000100000003000303777777066368656c6c6f026e6c0000010001c01000020001000151800007046e733031c010c01000020001000151800007046e733032c010c0100002000100015180000a036e733103757063c017c02b00010001000151800004d4534482c03e00010001000151800004d4534483c05100010001000151800004d48e1c42 + +26574 +0d2400000001000000000000036e733206736f6c636f6e026e6c0000010001 +0d2480000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +26575 +6fdc00000001000000000000046d61696c0365766f026e6c0000010001 +6fdc80000001000000020000046d61696c0365766f026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c02f + +26576 +b99f0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b99f8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26577 +608a0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +608a8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26578 +335200000001000000000000107075626c69656b2d706f6c697469656b026e6c00000f0001 +335280000001000000020002107075626c69656b2d706f6c697469656b026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01dc00c00020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +26579 +70dc00000001000000000000037777770763616e69656c73026e6c0000010001 +70dc84030001000000010000037777770763616e69656c73026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +26580 +498f00000001000000000000026e73076e656473746174026e6c0000010001 +498f80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +26581 +721100000001000000000000036e73340767617574656e67026e6c0000010001 +721180000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26582 +e87f00000001000000000000026e73076e656473746174026e6c0000010001 +e87f80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +26583 +1d0a00000001000000000000036e7333076e656473746174026e6c0000010001 +1d0a80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +26584 +2bec00000001000000000000036e73330767617574656e67026e6c0000010001 +2bec80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26585 +1a5d00000001000000000000026e73076e65746c616e64026e6c0000010001 +1a5d80000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +26586 +0cf400000001000000000000026e73096379626572636f6d6d026e6c0000010001 +0cf480000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +26587 +867a00000001000000000000036e7332096379626572636f6d6d026e6c0000010001 +867a80000001000000030003036e7332096379626572636f6d6d026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303c06300010001000151800004c277e953 + +26588 +b6ab00000001000000000000046d61696c17776f6e696e6762656472696a662d616d7374657264616d026e6c00001c0001 +b6ab80000001000000020002046d61696c17776f6e696e6762656472696a662d616d7374657264616d026e6c00001c0001c0110002000100015180000c036e73310563736e6574c029c01100020001000151800006036e7332c041c03d00010001000151800004c2451012c05500010001000151800004c2451212 + +26589 +d2980000000100000000000003777777096175746f6c65617365026e6c0000010001 +d2988000000100000003000303777777096175746f6c65617365026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +26590 +2a8f000000010000000000000761616c6f735f32036c6f73026e6c0000010001 +2a8f800000010000000200020761616c6f735f32036c6f73026e6c0000010001c0140002000100015180000c026e7306787334616c6cc018c01400020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +26591 +75a30000000100000000000008697373746f6e6564026e6c00000f0001 +75a38000000100000002000008697373746f6e6564026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02d + +26592 +4f000000000100000000000003777777086d6574656f776562026e6c0000010001 +4f008000000100000002000203777777086d6574656f776562026e6c0000010001c01000020001000151800009026e73036f6b65c019c01000020001000151800006036e7332c030c02d00010001000151800004c13acc3bc04200010001000151800004c13acc27 + +26593 +c53c0000000100000000000006736973696d310873797374656d6563026e6c0000010001 +c53c8000000100000003000206736973696d310873797374656d6563026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000b026e73026e6c036e657400c01300020001000151800006036e7332c013c03000010001000151800004c2e5a402c05800010001000151800004c2e5a404 + +26594 +69930000000100000000000006736973696d310873797374656d6563026e6c00001c0001 +69938000000100000003000206736973696d310873797374656d6563026e6c00001c0001c01300020001000151800005026e73c013c0130002000100015180000b026e73026e6c036e657400c01300020001000151800006036e7332c013c03000010001000151800004c2e5a402c05800010001000151800004c2e5a404 + +26595 +dd410000000100000000000005736d7470320873797374656d6563026e6c0000010001 +dd418000000100000003000205736d7470320873797374656d6563026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c01200020001000151800006036e7332c012c02f00010001000151800004c2e5a402c05700010001000151800004c2e5a404 + +26596 +4adb00000001000000000000036e73330873797374656d6563026e6c0000010001 +4adb80000001000000030002036e73330873797374656d6563026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800006036e7332c010c02d00010001000151800004c2e5a402c05500010001000151800004c2e5a404 + +26597 +a4ea00000001000000000000036e7332086d65646961776562026e6c0000010001 +a4ea80000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +26598 +6d3100000001000000000000036e7333086d65646961776562026e6c0000010001 +6d3180000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +26599 +d35e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d35e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26600 +e48b00000001000000000000026e73057972616d73026e6c0000010001 +e48b80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +26601 +644500000001000000000000026e73057972616d73026e6c0000260001 +644580000001000000020000026e73057972616d73026e6c0000260001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +26602 +f29b0000000100000000000003777777077a2d696e646578026e6c0000010001 +f29b8000000100000002000203777777077a2d696e646578026e6c0000010001c0100002000100015180000c026e7306787334616c6cc018c01000020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +26603 +caf100000001000000000000036e7331036e6f62026e6c0000010001 +caf180000001000000020002036e7331036e6f62026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004504f22f6c03600010001000151800004504f22fa + +26604 +074100000001000000000000036e7332036e6f62026e6c0000010001 +074180000001000000020002036e7332036e6f62026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004504f22f6c00c00010001000151800004504f22fa + +26605 +896300000001000000000000036c706d026e6c00000f0001 +896380000001000000020002036c706d026e6c00000f0001c00c0002000100015180000e036e73310768656262697a7ac010c00c00020001000151800006036e7332c028c02400010001000151800004c372eb42c03e000100010001518000043e320e91 + +26606 +d09600000001000000000000037777770d62616b6b65722d6f6e6c696e65026e6c0000010001 +d09680000001000000020000037777770d62616b6b65722d6f6e6c696e65026e6c0000010001c0100002000100015180000f036e7331056279303037036e657400c01000020001000151800006036e7332c036 + +26607 +b9e00000000100000000000004616e73320774697363616c69026e6c0000010001 +b9e08000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +26608 +b6d70000000100000000000004616e73310774697363616c69026e6c0000010001 +b6d78000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +26609 +a4e400000001000000000000056e6b386c6a026e6c00000f0001 +a4e484030001000000010000056e6b386c6a026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +26610 +155600000001000000000000036e73310774656c666f7274026e6c0000010001 +155680000001000000020001036e73310774656c666f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004d5c22815 + +26611 +b51a000000010000000000000968616e647966697368026e6c00000f0001 +b51a800000010000000300000968616e647966697368026e6c00000f0001c00c00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02e + +26612 +2b4f000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +2b4f800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26613 +0f7e000000010000000000000469632d73026e6c00000f0001 +0f7e800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26614 +538500000001000000000000056d61696c71077665726f6c6d65026e6c0000010001 +538580000001000000020002056d61696c71077665726f6c6d65026e6c0000010001c01200020001000151800012036e73310b7669616e6574776f726b73c01ac01200020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +26615 +47ba000000010000000000000570616e656c066e6f74696573026e6c0000010001 +47ba800000010000000200020570616e656c066e6f74696573026e6c0000010001c01200020001000151800005026e31c012c01200020001000151800005026e32c012c02d00010001000151800004c26d9483c03e00010001000151800004c26d9484 + +26616 +382400000001000000000000046d61696c0e7365637572657365727669636573026e6c0000010001 +382480000001000000020002046d61696c0e7365637572657365727669636573026e6c0000010001c01100020001000151800009036e7331026973c020c01100020001000151800006036e7332c038c03400010001000151800004d5852102c04900010001000151800004d5c41503 + +26617 +ccb80000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ccb88000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26618 +ae900000000100000000000003777777116963687765697475746e6565746d696572026e6c0000010001 +ae908000000100000002000003777777116963687765697475746e6565746d696572026e6c0000010001c01000020001000151800013036e733009696e7465726c697a65036e657400c01000020001000151800006036e7331c03a + +26619 +a45500000001000000000000026e7308767575727765726b026e6c0000010001 +a45580000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +26620 +009f00000001000000000000036e73330767617574656e67026e6c0000010001 +009f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26621 +765a00000001000000000000037777770e746865617465722d6f6e6c696e65026e6c0000010001 +765a80000001000000020002037777770e746865617465722d6f6e6c696e65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01fc01000020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +26622 +07e0000000010000000000000377777707766f6c64657273026e6c0000010001 +07e0800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26623 +3fec000000010000000000000377777707766f6c64657273026e6c0000010001 +3fec800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26624 +8fe900000001000000000000186d656e7a696e677761726d7465626568616e64656c696e67026e6c0000010001 +8fe980000001000000020002186d656e7a696e677761726d7465626568616e64656c696e67026e6c0000010001c00c00020001000151800013036e73310c666173747365727665723139c025c00c00020001000151800006036e7332c03dc0390001000100015180000442a4f0e1c0580001000100015180000442a4f0ec + +26625 +0c3f00000001000000000000096165726f7061727473026e6c0000010001 +0c3f80000001000000020000096165726f7061727473026e6c0000010001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02d + +26626 +cac300000001000000000000036e733103757063026e6c0000010001 +cac380000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +26627 +0ee800000001000000000000026e75026e6c0000010001 +0ee880000001000000030003026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +26628 +e74500000001000000000000037777770f6861616773636865636f7572616e74026e6c0000010001 +e74580000001000000020002037777770f6861616773636865636f7572616e74026e6c0000010001c0100002000100015180000b036e73310470696e65c020c01000020001000151800006036e7332c038c03400010001000151800004d59c0201c04b00010001000151800004c3c1a303 + +26629 +cf3400000001000000000000037777770a696e746563686e69756d026e6c0000010001 +cf3480000001000000020001037777770a696e746563686e69756d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02f00010001000151800004d4cefd31 + +26630 +b4170000000100000000000008756e697665727365086c696e757862616b026e6c0000010001 +b4178000000100000002000208756e697665727365086c696e757862616b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c03200010001000151800004507fd0dec043000100010001518000043e3abe9a + +26631 +31ab00000001000000000000036e73310564656d6f6e026e6c00001c0001 +31ab80000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +26632 +dbb900000001000000000000036e73310564656d6f6e026e6c0000260001 +dbb980000001000000030002036e73310564656d6f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +26633 +49ab00000001000000000000036e73320564656d6f6e026e6c00001c0001 +49ab80000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +26634 +9c9600000001000000000000036e73320564656d6f6e026e6c0000260001 +9c9680000001000000030002036e73320564656d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +26635 +5b9a00000001000000000000036e733107656e6572676973026e6c0000010001 +5b9a80000001000000020002036e733107656e6572676973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3079102c03a00010001000151800004c307920a + +26636 +ae5000000001000000000000036e733104686f6d65026e6c0000010001 +ae5080000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +26637 +828c00000001000000000000086e69766f6275726f026e6c0000ff0001 +828c80000001000000020001086e69766f6275726f026e6c0000ff0001c00c0002000100015180000a036e733303777873c015c00c00020001000151800006036e7334c02dc03f00010001000151800004d5ef9a65 + +26638 +816900000001000000000000036e73310a646e7373657276657273026e6c0000010001 +816980000001000000020002036e73310a646e7373657276657273026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054ed14c03d00010001000151800004d5f72f14 + +26639 +618000000001000000000000036e73310a646e7373657276657273026e6c0000260001 +618080000001000000020002036e73310a646e7373657276657273026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054ed14c03d00010001000151800004d5f72f14 + +26640 +30c000000001000000000000036e73320a646e7373657276657273026e6c0000010001 +30c080000001000000020002036e73320a646e7373657276657273026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000045054ed14c00c00010001000151800004d5f72f14 + +26641 +e781000000010000000000000377777707686f636b656572026e6c0000010001 +e781800000010000000200000377777707686f636b656572026e6c0000010001c01000020001000151800013026e730a6275757274706c65696e03636f6d00c01000020001000151800006036e7332c02f + +26642 +02fe00000001000000000000037777770b7a77616c7577686f657665026e6c0000010001 +02fe80000001000000030002037777770b7a77616c7577686f657665026e6c0000010001c01000020001000151800018036e73310761746c616e74610676656c757765036e657400c0100002000100015180000d036e733106736f6c636f6ec01cc01000020001000151800006036e7332c058c05400010001000151800004d42d2003c06d00010001000151800004d42d2103 + +26643 +986000000001000000000000036e73320a646e7373657276657273026e6c0000260001 +986080000001000000020002036e73320a646e7373657276657273026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000045054ed14c00c00010001000151800004d5f72f14 + +26644 +c55300000001000000000000036e733203736369036b756e026e6c0000010001 +c55380000001000000030003036e733203736369036b756e026e6c0000010001c0140002000100015180000f08636170796261726103756369c014c01400020001000151800006036e7331c010c0140002000100015180000e036e733107737572666e6574c018c02c0001000100015180000483ae3c15c0470001000100015180000483aee004c05900010001000151800004c0576a65 + +26645 +51e90000000100000000000008706f736569646f6e03756369036b756e026e6c0000010001 +51e98000000100000003000308706f736569646f6e03756369036b756e026e6c0000010001c0190002000100015180000b086361707962617261c015c0190002000100015180000a036e733103736369c019c0190002000100015180000e036e733107737572666e6574c01dc0310001000100015180000483ae3c15c0480001000100015180000483aee004c05e00010001000151800004c0576a65 + +26646 +3eb3000000010000000000000661736f706f73026e6c00000f0001 +3eb3800000010000000200000661736f706f73026e6c00000f0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +26647 +9b0c0000000100000000000008426f7363686d616e024e4c0000010001 +9b0c8000000100000002000208426f7363686d616e024e4c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +26648 +e99d00000001000000000000086c616e63656c6f7406737175697265026e6c0000010001 +e99d80000001000000020002086c616e63656c6f7406737175697265026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +26649 +8bab000000010000000000000868756974686f6d6506787334616c6c026e6c0000010001 +8bab800000010000000300020868756974686f6d6506787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +26650 +3106000000010000000000000469632d73026e6c00000f0001 +3106800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26651 +fd6700000001000000000000036e733503777873026e6c0000010001 +fd6780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +26652 +4109000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +4109800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26653 +a6d400000001000000000000036e73310a747265666e6574646e73026e6c0000010001 +a6d480000001000000030002036e73310a747265666e6574646e73026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +26654 +ac250000000100000000000003777777087369746563617374026e6c0000010001 +ac258000000100000002000203777777087369746563617374026e6c0000010001c0100002000100015180000c04646e73310470696e73c019c0100002000100015180000704646e7332c032c02d00010001000151800004d9c26101c04500010001000151800004d9c26002 + +26655 +a44e000000010000000000000b6c61626f726167726f6570026e6c0000010001 +a44e800000010000000200000b6c61626f726167726f6570026e6c0000010001c00c0002000100015180001905646e7330310d636f6d70726173657276657273036e657400c00c0002000100015180000805646e733032c032 + +26656 +4ef300000001000000000000037777770b73696d6f6e6c6576656c74026e6c0000010001 +4ef380000001000000020000037777770b73696d6f6e6c6576656c74026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01cc0100002000100015180000704686e7331c035 + +26657 +6d2600000001000000000000046d61696c096d656e67656c657273026e6c0000010001 +6d2680000001000000020002046d61696c096d656e67656c657273026e6c0000010001c01100020001000151800011026e730b6973642d686f6c6c616e64c01bc01100020001000151800006036e7332c032c02f00010001000151800004d5e38d0ac04c00010001000151800004d5e38205 + +26658 +2fbb000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +2fbb800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26659 +9cb6000000010000000000000377777707313233696e6b74026e6c0000010001 +9cb6800000010000000200020377777707313233696e6b74026e6c0000010001c01000020001000151800018036e7331116469676974616c7265766f6c7574696f6ec018c01000020001000151800006036e7332c030c02c000100010001518000045054f103c050000100010001518000045054f181 + +26660 +328300000001000000000000076863636669646f03686363026e6c00000f0001 +328380000001000000020000076863636669646f03686363026e6c00000f0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c032 + +26661 +166e00000001000000000000037777770d67656d65656e746562616e656e026e6c0000010001 +166e80000001000000020000037777770d67656d65656e746562616e656e026e6c0000010001c01000020001000151800013036e73310368617306686f7374697402626500c0100002000100015180000a036e7332036c7578c03a + +26662 +f81a0000000100000000000003777777116172726f77726f636b666573746976616c026e6c0000010001 +f81a8000000100000002000203777777116172726f77726f636b666573746976616c026e6c0000010001c0100002000100015180000b026e7305706c616e74c022c01000020001000151800006036e7332c039c03600010001000151800004d59f0037c04d00010001000151800004d59f0046 + +26663 +48e900000001000000000000036e7331046a617a65026e6c0000010001 +48e980000001000000020000036e7331046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +26664 +48ea00000001000000000000036e7332046a617a65026e6c0000010001 +48ea80000001000000020000036e7332046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +26665 +50560000000100000000000004777777310977756e6465726d616e026e6c0000010001 +50568000000100000002000004777777310977756e6465726d616e026e6c0000010001c0110002000100015180000c036e733102797203636f6d00c01100020001000151800006036e7332c033 + +26666 +88c70000000100000000000006787334616c6c026e6c00000f0001 +88c78000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +26667 +2cc000000001000000000000036e733107737572666e6574026e6c0000010001 +2cc080000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +26668 +226400000001000000000000026e73076e65746c616e64026e6c0000010001 +226480000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +26669 +cf1c0000000100000000000002343802383503313239033231370964796e61626c6f636b07656173796e6574026e6c0000100001 +cf1c8000000100000002000202343802383503313239033231370964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +26670 +e681000000010000000000000a6974656d65646963616c026e6c0000010001 +e681800000010000000200020a6974656d65646963616c026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +26671 +cb1500000001000000000000036e733107737572666e6574026e6c0000260001 +cb1580000001000000040003036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +26672 +03d900000001000000000000026e7306766576696461026e6c0000010001 +03d980000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +26673 +223500000001000000000000036e733206766576696461026e6c0000010001 +223580000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +26674 +31380000000100000000000003777777086d616d616d696e69026e6c0000010001 +31388000000100000002000203777777086d616d616d696e69026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +26675 +d25400000001000000000000036e733207737572666e6574026e6c0000010001 +d25480000001000000040003036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +26676 +e4f4000000010000000000000377777705656c766961026e6c0000010001 +e4f4800000010000000200000377777705656c766961026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c02d + +26677 +692a00000001000000000000036e733207737572666e6574026e6c0000260001 +692a80000001000000040003036e733207737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +26678 +e24900000001000000000000037777770a6d6363686f6c6c616e64026e6c0000010001 +e24980000001000000020000037777770a6d6363686f6c6c616e64026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +26679 +b40100000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +b40180000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +26680 +989400000001000000000000036e73310d706f7765727365727665723138026e6c00001c0001 +989480000001000000020002036e73310d706f7765727365727665723138026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047111c0400001000100015180000451047112 + +26681 +ef5900000001000000000000036e73310d706f7765727365727665723138026e6c0000260001 +ef5980000001000000020002036e73310d706f7765727365727665723138026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047111c0400001000100015180000451047112 + +26682 +015200000001000000000000036e73320d706f7765727365727665723138026e6c00001c0001 +015280000001000000020002036e73320d706f7765727365727665723138026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0320001000100015180000451047111c00c0001000100015180000451047112 + +26683 +efca00000001000000000000036e73320d706f7765727365727665723138026e6c0000260001 +efca80000001000000020002036e73320d706f7765727365727665723138026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0320001000100015180000451047111c00c0001000100015180000451047112 + +26684 +bbe900000001000000000000026e7306787334616c6c026e6c00001c0001 +bbe980000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +26685 +f13c00000001000000000000026e7306787334616c6c026e6c0000260001 +f13c80000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +26686 +98f500000001000000000000036e733206787334616c6c026e6c00001c0001 +98f580000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +26687 +fd10000000010000000000000463767373026e6c00000f0001 +fd10800000010000000200000463767373026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c02a + +26688 +b44a00000001000000000000036e733206787334616c6c026e6c0000260001 +b44a80000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +26689 +8ec60000000100000000000008616562766d61696c06787334616c6c026e6c0000010001 +8ec68000000100000003000208616562766d61696c06787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +26690 +316000000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +316080000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +26691 +cc3700000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +cc3780000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +26692 +daee00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +daee80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +26693 +025f0000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +025f8000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +26694 +0a600000000100000000000004777061640a7377697463686a6f6273026e6c0000010001 +0a608000000100000002000204777061640a7377697463686a6f6273026e6c0000010001c01100020001000151800009036e7331026973c01cc01100020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +26695 +157800000001000000000000037777770463697465026e6c0000010001 +157880000001000000020000037777770463697465026e6c0000010001c01000020001000151800014026e730b6e616d6573657276657273036e657400c01000020001000151800006036e7332c02c + +26696 +72150000000100000000000004696b6162026e6c0000010001 +72158000000100000002000204696b6162026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +26697 +dc6a00000001000000000000046d61696c06616c7469756d026e6c0000010001 +dc6a80000001000000020002046d61696c06616c7469756d026e6c0000010001c0110002000100015180000b026e7305706c616e74c018c01100020001000151800006036e7332c02fc02c00010001000151800004d59f0037c04300010001000151800004d59f0046 + +26698 +7a1a00000001000000000000056d61696c3405706c616e74026e6c0000010001 +7a1a80000001000000020002056d61696c3405706c616e74026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c02c00010001000151800004d59f0037c03d00010001000151800004d59f0046 + +26699 +229800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +229880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26700 +2d0800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +2d0880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26701 +816d0000000100000000000004646e733107696e666f6e6574026e6c0000010001 +816d8000000100000002000204646e733107696e666f6e6574026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4bd01c4c03b00010001000151800004d4bd7f83 + +26702 +a9b00000000100000000000004646e733207696e666f6e6574026e6c0000010001 +a9b08000000100000002000204646e733207696e666f6e6574026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02d00010001000151800004d4bd01c4c00c00010001000151800004d4bd7f83 + +26703 +59e000000001000000000000056d61696c33076e6564636f6d70026e6c0000010001 +59e080000001000000020001056d61696c33076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +26704 +aa4400000001000000000000037777771177696e746572776564737472696a64656e026e6c0000010001 +aa4480000001000000020000037777771177696e746572776564737472696a64656e026e6c0000010001c0100002000100015180000c026e7306766576696461c022c01000020001000151800006036e7332c039 + +26705 +3caf00000001000000000000056d61696c3405706c616e74026e6c0000010001 +3caf80000001000000020002056d61696c3405706c616e74026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c02c00010001000151800004d59f0037c03d00010001000151800004d59f0046 + +26706 +673a000000010000000000000377777706676972646572026e6c0000010001 +673a800000010000000200020377777706676972646572026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c017c01000020001000151800006036e7332c02fc02b00010001000151800004d994ae77c049000100010001518000045054ea06 + +26707 +97320000000100000000000006787334616c6c026e6c0000ff0001 +97328000000100000003000206787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +26708 +092700000001000000000000037777770c64617274737765656b656e64026e6c0000010001 +092780000001000000020001037777770c64617274737765656b656e64026e6c0000010001c0100002000100015180000a036e733303777873c01dc01000020001000151800006036e7334c035c04700010001000151800004d5ef9a65 + +26709 +d569000000010000000000000d6c617669656361746572696e67026e6c00000f0001 +d569800000010000000200020d6c617669656361746572696e67026e6c00000f0001c00c00020001000151800010026e730a63746d686f7374696e67c01ac00c00020001000151800006036e7332c031c02e000100010001518000043e3ac4c2c04a000100010001518000043e3ac4c3 + +26710 +28c000000001000000000000036e73330767617574656e67026e6c0000010001 +28c080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26711 +10c800000001000000000000036e73330767617574656e67026e6c0000010001 +10c880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26712 +c1040000000100000000000003777777056173696365026e6c0000010001 +c1048000000100000003000003777777056173696365026e6c0000010001c0100002000100015180001a036e733110756e696c6f6769636e6574776f726b73036e657400c01000020001000151800006036e7332c02ec01000020001000151800006036e7333c02e + +26713 +dda400000001000000000000036e7335046372696f026e6c0000010001 +dda480000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26714 +534f00000001000000000000036e7336046372696f026e6c0000010001 +534f80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26715 +a12c000000010000000000000377777703776562026e6c0000010001 +a12c800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +26716 +5c7300000001000000000000036e7331046372696f026e6c0000010001 +5c7380000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26717 +e5d100000001000000000000036e7332046372696f026e6c0000010001 +e5d180000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26718 +73cf00000001000000000000037777770a72656372656174696566026e6c0000010001 +73cf80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +26719 +cf0000000001000000000000036e7335046372696f026e6c0000010001 +cf0080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26720 +968600000001000000000000036e7336046372696f026e6c0000010001 +968680000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26721 +14a600000001000000000000036e7331046372696f026e6c0000010001 +14a680000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26722 +7c3200000001000000000000036e7332046372696f026e6c0000010001 +7c3280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +26723 +cf9000000001000000000000095354494e4b42454154026e6c0000020001 +cf9084030001000000010000095354494e4b42454154026e6c0000020001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +26724 +2ea900100001000000000001026e7307696e746f756368026e6c00000100010000290800000080000000 +2ea980000001000000030002026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c0010000291000000000000000 + +26725 +7a6200000001000000000000036e733208696e7465726c6162026e6c0000010001 +7a6280000001000000020002036e733208696e7465726c6162026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d4cb0902c00c00010001000151800004d4cb0903 + +26726 +4eb1000000010000000000000377777706686574736377026e6c0000010001 +4eb1800000010000000200020377777706686574736377026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c017c01000020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +26727 +09ca00000001000000000000026e7308767575727765726b026e6c0000010001 +09ca80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +26728 +28b3000000010000000000000c727a7075626c697368657273026e6c0000ff0001 +28b3800000010000000200020c727a7075626c697368657273026e6c0000ff0001c00c0002000100015180000c036e733105786d61696cc019c00c00020001000151800006036e7332c031c02d00010001000151800004c3561e1cc04500010001000151800004c3561e1d + +26729 +264000000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +264080000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +26730 +0d200000000100000000000009652d6c756e61746963026e6c0000010001 +0d208000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +26731 +79c300000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d73646373046d6d6931046d6d2d69026e6c0000210001 +79c380000001000000020002055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d73646373046d6d6931046d6d2d69026e6c0000210001c0450002000100015180000b026e7305706c616e74c04ac04500020001000151800006036e7332c061c05e00010001000151800004d59f0037c07500010001000151800004d59f0046 + +26732 +362a00000001000000000000036e73310b636f6e766f6c7574696f6e026e6c0000010001 +362a80000001000000020002036e73310b636f6e766f6c7574696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9477a29c03e00010001000151800004d9477a2a + +26733 +be4a00000001000000000000036e73320b636f6e766f6c7574696f6e026e6c0000010001 +be4a80000001000000020002036e73320b636f6e766f6c7574696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d9477a29c00c00010001000151800004d9477a2a + +26734 +f5c200000001000000000000036e733106736f6c636f6e026e6c0000010001 +f5c280000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +26735 +fd3400000001000000000000036e733206736f6c636f6e026e6c0000010001 +fd3480000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +26736 +ff220000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +ff228000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +26737 +b43c000000010000000000000463676579026e6c00000f0001 +b43c800000010000000300030463676579026e6c00000f0001c00c00020001000151800011046e7365310963617067656d696e69c011c00c00020001000151800007046e736532c02ac00c0002000100015180000b086e732d69736d3031c02ac02500010001000151800004c6b8e70dc04200010001000151800004c6b8e70cc05500010001000151800004d5f4a024 + +26738 +677f00000001000000000000146e69657577736272696576656e73657276696365026e6c00000f0001 +677f80000001000000030001146e69657577736272696576656e73657276696365026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +26739 +4db00000000100000000000007617261676f726e0b73746172746b6162656c33026e6c0000010001 +4db08000000100000003000307617261676f726e0b73746172746b6162656c33026e6c0000010001c0140002000100015180000b04646e733103766970c020c0140002000100015180000704646e7332c039c0140002000100015180000704646e7333c039c03400010001000151800004d44fe803c04b00010001000151800004c3f5c782c05e00010001000151800004d44ff303 + +26740 +017a00000001000000000000036f6167026e6c00000f0001 +017a80000001000000020002036f6167026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +26741 +edbb000000010000000000000377777707666972656e6574026e6c0000010001 +edbb800000010000000300000377777707666972656e6574026e6c0000010001c01000020001000151800012036e73310b66697265686f7374696e67c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +26742 +84dd000000010000000000000970726f78696d617265026e6c00000f0001 +84dd800000010000000200000970726f78696d617265026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c040 + +26743 +b2a300000001000000000000036e73320670726f6c616e026e6c00001c0001 +b2a380000001000000020002036e73320670726f6c616e026e6c00001c0001c0100002000100015180001404777777320c6e656465726c616e64776562c017c01000020001000151800002c00cc02b00010001000151800004d5d381c2c00c00010001000151800004d4ccd4e7 + +26744 +542d00000001000000000000026e7307696e746f756368026e6c0000010001 +542d80000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +26745 +0ea90000000100000000000005726f6d656f066f6e6c696e65026f32026e6c0000010001 +0ea98000000100000002000205726f6d656f066f6e6c696e65026f32026e6c0000010001c0190002000100015180000d026e73076e65746c616e64c01cc01900020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +26746 +1f260000000100000000000006636861726973026e6c0000ff0001 +1f268000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +26747 +d58d000000010000000000001167726f656e686f727374636f6c6c656765026e6c0000ff0001 +d58d800000010000000200001167726f656e686f727374636f6c6c656765026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c01ec00c0002000100015180000704686e7331c037 + +26748 +7309000000010000000000000469632d73026e6c00000f0001 +7309800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26749 +292800000001000000000000046d61696c03777873026e6c0000010001 +292880000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +26750 +a66b00000001000000000000037777770e6374632d66696e616e636965656c026e6c0000010001 +a66b80000001000000020002037777770e6374632d66696e616e636965656c026e6c0000010001c0100002000100015180000d036e7331066b6f766f6b73c01fc01000020001000151800006036e7332c037c033000100010001518000043e3a204cc04c000100010001518000043e3a2049 + +26751 +0018000000010000000000000377777709736f6574656c696566026e6c0000010001 +0018840300010000000100000377777709736f6574656c696566026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +26752 +5d5a00000001000000000000036e733108696e74656c6c6974026e6c0000010001 +5d5a80000001000000030002036e733108696e74656c6c6974026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +26753 +180600000001000000000000036e733208696e74656c6c6974026e6c0000010001 +180680000001000000030002036e733208696e74656c6c6974026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +26754 +f8280000000100000000000008686f75736561647303696467026e6c0000010001 +f8288000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +26755 +5883000000010000000000000377777709636f756e747279666d026e6c0000010001 +5883800000010000000200020377777709636f756e747279666d026e6c0000010001c0100002000100015180000a036e733103686978c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5a0da0ac0440001000100015180000451112ec3 + +26756 +fdc9000000010000000000000a73636869707065726d74026e6c00000f0001 +fdc9800000010000000200010a73636869707065726d74026e6c00000f0001c00c0002000100015180000a036e733303777873c017c00c00020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +26757 +46ca00000001000000000000047072693203646e73067073696e6574026e6c0000010001 +46ca80000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +26758 +a36500000001000000000000047072693303646e73067073696e6574026e6c0000010001 +a36580000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +26759 +4308000000010000000000000377777708736869706d617465026e6c0000010001 +4308800000010000000200000377777708736869706d617465026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c030 + +26760 +20da00000001000000000000036e73340767617574656e67026e6c0000010001 +20da80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26761 +3fdd0000000100000000000004617369610374656e026e6c0000010001 +3fdd8000000100000002000104617369610374656e026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +26762 +21840000000100000000000004617369610374656e026e6c0000260001 +21848000000100000002000104617369610374656e026e6c0000260001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +26763 +18e400000001000000000000036e73340767617574656e67026e6c0000010001 +18e480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26764 +f91100000001000000000000055f6c646170045f74637003706463065f6d736463730465676c6f06646f6d61696e026e6c0000060001 +f91184030001000000010000055f6c646170045f74637003706463065f6d736463730465676c6f06646f6d61696e026e6c0000060001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +26765 +651100000001000000000000036e7333076e656473746174026e6c0000010001 +651180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +26766 +bded000000010000000000000c66616d666f6c6b6572736d61026e6c0000ff0001 +bded800000010000000200000c66616d666f6c6b6572736d61026e6c0000ff0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c038 + +26767 +8b54000000010000000000000764656c74696f6e026e6c0000010001 +8b54800000010000000200020764656c74696f6e026e6c0000010001c00c0002000100015180000d036e7331066e6c74726565c014c00c00020001000151800006036e7332c02cc02800010001000151800004d4b20403c04100010001000151800004d5881e45 + +26768 +be3c00000001000000000000086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001 +be3c80000001000000020002086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001c0220002000100015180000d036e7331066d696e646566c027c02200020001000151800006036e7332c03fc03b00010001000151800004d9a9e7c6c05400010001000151800004d9a9e7c5 + +26769 +10ce000000010000000000000a73746172746b6162656c026e6c0000010001 +10ce800000010000000300010a73746172746b6162656c026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +26770 +1a94000000010000000000000761616c6f735f32036c6f73026e6c0000010001 +1a94800000010000000200020761616c6f735f32036c6f73026e6c0000010001c0140002000100015180000c026e7306787334616c6cc018c01400020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +26771 +7b400000000100000000000008726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001 +7b408000000100000002000208726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001c0150002000100015180000e036e7331076e657463617374c023c01500020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +26772 +677f000000010000000000000f6d6f6269656c6f7665727a69636874026e6c00000f0001 +677f800000010000000300010f6d6f6269656c6f7665727a69636874026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01cc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ec030000100010001518000043efa0202 + +26773 +639000000001000000000000036e73310b776f726c646f6e6c696e65026e6c0000010001 +639080000001000000030002036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +26774 +31c800000001000000000000036e73320b776f726c646f6e6c696e65026e6c0000010001 +31c880000001000000030002036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +26775 +cfc400000001000000000000036e7331066e6c74726565026e6c0000010001 +cfc480000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +26776 +e7e200000001000000000000036e7332066e6c74726565026e6c0000010001 +e7e280000001000000020002036e7332066e6c74726565026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d4b20403c00c00010001000151800004d5881e45 + +26777 +a3ea0000000100000000000006787334616c6c026e6c00000f0001 +a3ea8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +26778 +cdf80000000100000000000003736d730567656e6965026e6c00000f0001 +cdf88000000100000002000203736d730567656e6965026e6c00000f0001c0100002000100015180000d026e73076e65746c616e64c016c01000020001000151800006036e7332c02dc02a00010001000151800004d9aa2042c04300010001000151800004d9aa2c06 + +26779 +ea8200000001000000000000037777770e64657369676e2d636f6d70616e79026e6c0000010001 +ea8280000001000000020002037777770e64657369676e2d636f6d70616e79026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +26780 +925200000001000000000000046e743036036d7069026e6c0000010001 +925280000001000000020002046e743036036d7069026e6c0000010001c011000200010001518000080573756e3032c011c01100020001000151800006036e7332c011c02900010001000151800004c0574f3ec03d00010001000151800004c0574f37 + +26781 +08ef00000001000000000000036e73330767617574656e67026e6c0000010001 +08ef80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26782 +1b13000000010000000000000377777705626f6b6f65026e6c0000010001 +1b13800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +26783 +def20000000100000000000008647973746f706961026e6c0000010001 +def28000000100000003000208647973746f706961026e6c0000010001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +26784 +cc4700000001000000000000057072757665026e6c00000f0001 +cc4780000001000000030003057072757665026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c012c00c0002000100015180000a076e736175746832c02ec00c0002000100015180000a076e736175746833c02ec02600010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +26785 +babb0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +babb8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26786 +517b00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +517b80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +26787 +40ec00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +40ec80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +26788 +a07600000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +a07680000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +26789 +98c10000000100000000000003617672036b6761026e6c00000f0001 +98c18000000100000003000303617672036b6761026e6c00000f0001c0100002000100015180000e04646e733106626c6978656dc014c0100002000100015180000704646e7332c02dc0100002000100015180000704646e7333c02dc02800010001000151800004d44fe803c04200010001000151800004c3f5c782c05500010001000151800004d44ff303 + +26790 +1f9e000000010000000000000469632d73026e6c00001c0001 +1f9e800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26791 +4a6500000001000000000000095f6b65726265726f73045f746370055a5745524d024e4c0000060001 +4a6584030001000000010000095f6b65726265726f73045f746370055a5745524d024e4c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +26792 +a26c000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +a26c800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26793 +8f560000000100000000000005646e732d31056c61646f74026e6c0000010001 +8f568000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26794 +48700000000100000000000005646e732d32056c61646f74026e6c0000010001 +48708000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26795 +c2dc0000000100000000000006636f6d6d6974026e6c0000010001 +c2dc8000000100000002000006636f6d6d6974026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +26796 +760800000001000000000000037777770d706572736f6e65656c736e6574026e6c0000010001 +760880000001000000020002037777770d706572736f6e65656c736e6574026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c01ec01000020001000151800006036e7332c036c03200010001000151800004d4ccd865c04d000100010001518000045054ec34 + +26797 +9d6528000001000000010000024e4c0000060001095f6b65726265726f73045f746370055a5745524d024e4c000021000100000258001c0000006400580b7a7765726d736572766572055a5745524d024e4c00 +9d65a8040000000000000000 + +26798 +000000007002faf0467900000204056401010402 +000080010000000000000000 + +26799 +b6062f415010fd5c8b290000000000000000 +b606af440000000000000000 + +26800 +b6062f415018fd5c71600000008f9dd8000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcc8403c4e480003000000304e544c4d535350000100000097b208e0050005002b0000000b000b00200000005a5745524d5345525645525a5745524d0000 +b606af440000000000000000 + +26801 +d5040000000100000000000005736f6c61720776616e74616765026e6c0000010001 +d5048000000100000002000205736f6c61720776616e74616765026e6c0000010001c01200020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01200020001000151800006036e7332c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303 + +26802 +4fd300000001000000000000037777770677656263616d026e6c0000010001 +4fd380000001000000020002037777770677656263616d026e6c0000010001c01000020001000151800010036e733209756e6c696d69746564c017c0100002000100015180000d036e733206787334616c6cc017c02b00010001000151800004c26d9afac04700010001000151800004c26d0963 + +26803 +7a4f00000001000000000000037777770c6c696d62757267776f6e656e026e6c0000010001 +7a4f80000001000000020002037777770c6c696d62757267776f6e656e026e6c0000010001c0100002000100015180000b036e73310477656233c01dc01000020001000151800006036e7332c035c03100010001000151800004d436240ec04800010001000151800004c2b262ef + +26804 +ec1200000001000000000000046d61696c06626569736569026e6c0000010001 +ec1280000001000000020002046d61696c06626569736569026e6c0000010001c0110002000100015180000f026e7309656174736572766572c018c01100020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +26805 +25f100000001000000000000037777770c6d6174757265736572766572026e6c0000010001 +25f180000001000000020000037777770c6d6174757265736572766572026e6c0000010001c0100002000100015180000d036e7331046564697302617400c01000020001000151800006036e7332c035 + +26806 +b6062f4f5011fd4e8a970000000000000000 +b606af440000000000000000 + +26807 +000000007002faf0b12900000204056401010402 +000080010000000000000000 + +26808 +6700000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +6700800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26809 +190000000001000000000000036e73340767617574656e67026e6c0000010001 +190080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26810 +b6062f505010fd4e8a960000000000000000 +b606af540000000000000000 + +26811 +ded200000001000000000000036e733209756e6c696d69746564026e6c00001c0001 +ded280000001000000020002036e733209756e6c696d69746564026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000d036e733206787334616c6cc01ac00c00010001000151800004c26d9afac03c00010001000151800004c26d0963 + +26812 +0d4b00000001000000000000036d783103696166026e6c0000010001 +0d4b80000001000000020002036d783103696166026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c028000100010001518000045059e040c03a000100010001518000045059ee03 + +26813 +9780000000010000000000000667776d61696c0573746f6173026e6c0000010001 +9780800000010000000300020667776d61696c0573746f6173026e6c0000010001c01300020001000151800006036e7373c013c01300020001000151800006036e7361c013c01300020001000151800010036e73320673697465347503636f6d00c02d00010001000151800004c057c501c03f00010001000151800004c057c401 + +26814 +ff4300000001000000000000036e733209756e6c696d69746564026e6c0000260001 +ff4380000001000000020002036e733209756e6c696d69746564026e6c0000260001c01000020001000151800002c00cc0100002000100015180000d036e733206787334616c6cc01ac00c00010001000151800004c26d9afac03c00010001000151800004c26d0963 + +26815 +849300000001000000000000047777773309616c7465726e617465026e6c0000010001 +849380000001000000020002047777773309616c7465726e617465026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c01bc01100020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +26816 +ebdd00000001000000000000036e73310663617374656c026e6c0000260001 +ebdd80000001000000020002036e73310663617374656c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3558244c03900010001000151800004c3558245 + +26817 +b6071d2d5010fd5c07ed0000000000000000 +b6079d240000000000000000 + +26818 +b6071d2d5018fd5c32830000008f5a7a000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcc8403c4e480003000000304e544c4d535350000100000097b208e0050005002b0000000b000b00200000005a5745524d5345525645525a5745524d0000 +b6079d240000000000000000 + +26819 +048800000001000000000000056d7468636f026e6c0000ff0001 +048880000001000000020000056d7468636f026e6c0000ff0001c00c00020001000151800012036e73330b70656c6963616e2d696374c012c00c00020001000151800006036e7335c02a + +26820 +730b000000010000000000000866696c6167656e74026e6c00000f0001 +730b800000010000000200020866696c6167656e74026e6c00000f0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc015c00c00020001000151800006036e7332c02dc0290001000100015180000450558121c04700010001000151800004d58141c4 + +26821 +39a000000001000000000000024e530743495354524f4e024e4c0000010001 +39a080000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +26822 +1cd000000001000000000000034e53320743495354524f4e024e4c0000010001 +1cd080000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +26823 +15c700000001000000000000036e733503777873026e6c0000010001 +15c780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +26824 +b6071d3b5011fd4e075b0000000000000000 +b6079d340000000000000000 + +26825 +df0300000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c00001c0001 +df0380000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26826 +dc300000000100000000000005646e732d31056c61646f74026e6c0000010001 +dc308000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26827 +977000000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000260001 +977080000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +26828 +5b4d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +5b4d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26829 +cff000000001000000000000037777771173746174757371756f2d66616e636c7562026e6c0000010001 +cff080000001000000020000037777771173746174757371756f2d66616e636c7562026e6c0000010001c01000020001000151800013036e733109736974652d7061726b03636f6d00c0100002000100015180000f036e7334087a6f6e6565646974c044 + +26830 +851300000001000000000000036e733503777873026e6c0000260001 +851380000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +26831 +000000007002faf08f9300000204056401010402 +000080010000000000000000 + +26832 +b6071d3c5010fd4e075a0000000000000000 +b6079d340000000000000000 + +26833 +30e900000001000000000000034e533207535552464e4554024e4c0000010001 +30e980000001000000040003034e533207535552464e4554024e4c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +26834 +09800000000100000000000007626575727a656e036a656d026e6c0000010001 +09808000000100000002000207626575727a656e036a656d026e6c0000010001c0140002000100015180000e036e73310765766964656e74c018c01400020001000151800006036e7332c030c02c00010001000151800004c36d19c4c04600010001000151800004c36d1942 + +26835 +e48c00000001000000000000037777770e657474656e2d746563686e69656b026e6c0000010001 +e48c80000001000000020002037777770e657474656e2d746563686e69656b026e6c0000010001c01000020001000151800002c010c0100002000100015180000d04646e733105692d702d64c01fc01000010001000151800004d912405fc04100010001000151800004d9124003 + +26836 +0bef00000001000000000000034e533207535552464e4554024e4c0000260001 +0bef80000001000000040003034e533207535552464e4554024e4c0000260001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +26837 +b607bf705010fd5c44130000000000000000 + + +26838 +b607bf705018fd5c5fe70000008f693c000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcc8403c4e480003000000304e544c4d535350000100000097b208e0050005002b0000000b000b00200000005a5745524d5345525645525a5745524d0000 + + +26839 +43140000000100000000000003777777097365786465616c6572026e6c0000010001 +43148000000100000002000203777777097365786465616c6572026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efb105c04a00010001000151800004505faa0a + +26840 +b607bf7e5011fd4e43810000000000000000 + + +26841 +acca000000010000000000000457454232037777770b77656e6e656b65736e6574026e6c0000010001 +acca840300010000000100000457454232037777770b77656e6e656b65736e6574026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +26842 +c38a00000001000000000000087370636c69636b730c706167696e61626568656572026e6c0000010001 +c38a80000001000000020002087370636c69636b730c706167696e61626568656572026e6c0000010001c0150002000100015180000e026e7308696e7465722d6974c022c01500020001000151800006036e7332c039c03600010001000151800004d5c4385ac05000010001000151800004d5c4385b + +26843 +32980000000100000000000008667265656c726572026e6c00000f0001 +32988403000100000001000008667265656c726572026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +26844 +dccc000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +dccc800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +26845 +b607bf7f5010fd4e43800000000000000000 + + +26846 +abb00000000100000000000004456e6369026e6c00000f0001 +abb08000000100000002000004456e6369026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +26847 +c115000000010000000000000369736f026e6c0000010001 +c115800000010000000200020369736f026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +26848 +2b4f000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +2b4f800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +26849 +d88b0000000100000000000004574542320b77656e6e656b65736e6574026e6c0000010001 +d88b8403000100000001000004574542320b77656e6e656b65736e6574026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +26850 +0774000000010000000000000b7374617274706167696e61026e6c00000f000100 +0774800000010000000300030b7374617274706167696e61026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +26851 +a111000000010000000000000a707265756e696e676572026e6c00000f0001 +a111800000010000000200000a707265756e696e676572026e6c00000f0001c00c0002000100015180000e05646e732d31056c61646f74c017c00c0002000100015180000805646e732d32c031 + +26852 +18e800000001000000000000036e7331026975026e6c0000010001 +18e880000001000000020002036e7331026975026e6c0000010001c0100002000100015180000704646e7330c010c0100002000100015180000704646e7331c010c02700010001000151800004d91a7002c03a00010001000151800004d91a7103 + +26853 +30250000000100000000000005706f6c656d026e6c00000f0001 +30258000000100000002000205706f6c656d026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +26854 +c959000000010000000000000b66756e73756c74616e6379026e6c0000ff0001 +c959800000010000000200000b66756e73756c74616e6379026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +26855 +528b00000001000000000000036d7834057669727475026e6c0000010001 +528b80000001000000020002036d7834057669727475026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02a00010001000151800004d9726102c03c00010001000151800004d58141c4 + +26856 +c8950000000100000000000006636861726973026e6c00000f0001 +c8958000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +26857 +938a00000001000000000000037777770e76726f7577656e76616e64616167026e6c0000010001 +938a80000001000000020000037777770e76726f7577656e76616e64616167026e6c0000010001c01000020001000151800013036e7331096e616d657365727665036e657400c01000020001000151800006036e7332c037 + +26858 +bba600000001000000000000106472756b6b6572696a2d666f6b6b6572026e6c0000ff0001 +bba684030001000000010000106472756b6b6572696a2d666f6b6b6572026e6c0000ff0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +26859 +35a0000000010000000000000377777707766f6c64657273026e6c0000010001 +35a0800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26860 +968700000001000000000000037777770a72696a7a656e62757267026e6c0000010001 +968780000001000000020000037777770a72696a7a656e62757267026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01bc0100002000100015180000805646e732d32c035 + +26861 +21cd0000000100000000000003777777046476686e026e6c0000010001 +21cd8000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +26862 +8a1500000001000000000000037777770d67656f6e73636872696a766572026e6c0000010001 +8a1580000001000000020002037777770d67656f6e73636872696a766572026e6c0000010001c0100002000100015180000a036e733103647768c01ec01000020001000151800006036e7332c036c03200010001000151800004d5efb308c04800010001000151800004d5efb303 + +26863 +9be7000000010000000000000e6d6d667472616e73706172616e74026e6c00000f0001 +9be7800000010000000200020e6d6d667472616e73706172616e74026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01bc00c00020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +26864 +82f10000000100000000000006736572766572026462036b766b026e6c0000010001 +82f18000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +26865 +4f0a000000010000000000000377777708706c756b7261616b026e6c0000010001 +4f0a800000010000000200000377777708706c756b7261616b026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +26866 +754100000001000000000000036e733107626265796f6e64026e6c0000010001 +754180000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +26867 +a68100000001000000000000036e733107626265796f6e64026e6c00001c0001 +a68180000001000000020002036e733107626265796f6e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +26868 +bfe900000001000000000000036e733107626265796f6e64026e6c0000260001 +bfe980000001000000020002036e733107626265796f6e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +26869 +d45800000001000000000000036e733207626265796f6e64026e6c0000010001 +d45880000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +26870 +77a100000001000000000000036e733207626265796f6e64026e6c00001c0001 +77a180000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +26871 +4d2e00000001000000000000036e733207626265796f6e64026e6c0000260001 +4d2e80000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +26872 +694a000000010000000000000e36322d3137372d3232332d31343607626265796f6e64026e6c0000010001 +694a800000010000000200020e36322d3137372d3232332d31343607626265796f6e64026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc037000100010001518000043eb1900bc049000100010001518000043eb19002 + +26873 +2dac000000010000000000000377777707766f6c64657273026e6c0000010001 +2dac800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26874 +376a00000001000000000000037777770733736261617273026e6c0000010001 +376a80000001000000020002037777770733736261617273026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c018c01000020001000151800006036e7332c030c02c000100010001518000045054f347c048000100010001518000043e94a047 + +26875 +761400000001000000000000037777770a6b6f657273616c61726d026e6c0000010001 +761480000001000000020002037777770a6b6f657273616c61726d026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4ccd865c04a000100010001518000045054ec34 + +26876 +46db00000001000000000000037777770366756e026e6c0000010001 +46db80000001000000020001037777770366756e026e6c0000010001c0100002000100015180000a026e7304696d636fc014c01000020001000151800013036e7332097669727475616c787303636f6d00c028000100010001518000043e81810a + +26877 +05b2000000010000000000000377777707766f6c64657273026e6c0000010001 +05b2800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +26878 +656300000001000000000000046d61696c086b6a656e6e696e67026e6c0000010001 +656380000001000000020000046d61696c086b6a656e6e696e67026e6c0000010001c01100020001000151800014026e730b686f6c6c616e64686f7374036e657400c0110002000100015180000f036e7333087465646f63776562c03d + +26879 +7bcc000000010000000000000469632d73026e6c0000ff0001 +7bcc800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +26880 +419e0000000100000000000003777777146175746f62656472696a6676616e73747269656e026e6c0000010001 +419e8000000100000002000203777777146175746f62656472696a6676616e73747269656e026e6c0000010001c01000020001000151800010026e730a7a65656c616e646e6574c025c01000020001000151800006036e7332c03cc03900010001000151800004d473c0c1c05500010001000151800004d473c0c3 + +26881 +519000000001000000000000037777770c706f6469756d7477656e7465026e6c0000010001 +519080000001000000020000037777770c706f6469756d7477656e7465026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c034 + +26882 +8de20000000100000000000003626d670a73696e2d6f6e6c696e65026e6c0000010001 +8de28000000100000003000203626d670a73696e2d6f6e6c696e65026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +26883 +c52500000001000000000000036e733307747564656c6674026e6c0000010001 +c52580000001000000050005036e733307747564656c6674026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c03e0001000100015180000482a1b441c0500001000100015180000482a12111c0650001000100015180000482a1bc8cc07e00010001000151800004c0576a65 + +26884 +180800000001000000000000036e733307747564656c6674026e6c0000260001 +180880000001000000050005036e733307747564656c6674026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c03e0001000100015180000482a1b441c0500001000100015180000482a12111c0650001000100015180000482a1bc8cc07e00010001000151800004c0576a65 + +26885 +79570000000100000000000005646e732d31056c61646f74026e6c0000010001 +79578000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26886 +74f100000001000000000000036e73320469636d63026e6c0000010001 +74f180000001000000020002036e73320469636d63026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc029000100010001518000043e643805c00c000100010001518000043e643806 + +26887 +860300000001000000000000026e730469636d63026e6c0000010001 +860380000001000000020002026e730469636d63026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e643805c036000100010001518000043e643806 + +26888 +2d5b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2d5b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26889 +cbe500000001000000000000037777770b6e65756b736c65746a6573026e6c00001c0001 +cbe580000001000000020002037777770b6e65756b736c65746a6573026e6c00001c0001c0100002000100015180000f036e73310861746c616e74697ac01cc01000020001000151800006036e7332c034c03000010001000151800004d5efa011c04b00010001000151800004d5efa075 + +26890 +9dc800000001000000000000066f6577616d73026e6c0000010001 +9dc880000001000000020002066f6577616d73026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +26891 +50f30000000100000000000003777777116c616d6d6572747376616e62756572656e026e6c0000010001 +50f38000000100000002000003777777116c616d6d6572747376616e62756572656e026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c039 + +26892 +e6ee00000001000000000000056e6575726f03617a75026e6c00000f0001 +e6ee80000001000000030003056e6575726f03617a75026e6c00000f0001c01200020001000151800005026e73c012c0120002000100015180000e036e733107737572666e6574c016c01200020001000151800009036e7333027575c016c02a000100010001518000048f79fe01c03b00010001000151800004c0576a65c0550001000100015180000483d31020 + +26893 +01f6000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c00000f0001 +01f6800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c00000f0001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +26894 +de2c0000000100000000000004646e733107696e666f6e6574026e6c0000010001 +de2c8000000100000002000204646e733107696e666f6e6574026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4bd01c4c03b00010001000151800004d4bd7f83 + +26895 +f2130000000100000000000004646e733207696e666f6e6574026e6c0000010001 +f2138000000100000002000204646e733207696e666f6e6574026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02d00010001000151800004d4bd01c4c00c00010001000151800004d4bd7f83 + +26896 +81f800000001000000000000037777770a73657867616c6c657279026e6c0000010001 +81f880000001000000020002037777770a73657867616c6c657279026e6c0000010001c01000020001000151800009036e733102696fc01bc01000020001000151800006036e7332c033c02f0001000100015180000451112102c0440001000100015180000451112202 + +26897 +24a8000000010000000000000677616e61646f026e6c00000f0001 +24a8800000010000000200010677616e61646f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c013c04000010001000151800004c2860043 + +26898 +cf0600000001000000000000037777771061636164656d69637472616e73666572026e6c0000010001 +cf0680000001000000020002037777771061636164656d69637472616e73666572026e6c0000010001c0100002000100015180000b026e7305706c616e74c021c01000020001000151800006036e7332c038c03500010001000151800004d59f0037c04c00010001000151800004d59f0046 + +26899 +3a7300000001000000000000136163636f756e74616e74736b6f656c656d616e026e6c0000010001 +3a7380000001000000020000136163636f756e74616e74736b6f656c656d616e026e6c0000010001c00c00020001000151800017036e73310d6373732d6970636f6e6e65637403636f6d00c00c00020001000151800006036e7332c038 + +26900 +37d00000000100000000000003657a68026e6c0000010001 +37d08000000100000002000103657a68026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c0240001000100015180000489ae8f03 + +26901 +9aa20000000100000000000004706f303703777873026e6c0000ff0001 +9aa28000000100000003000304706f303703777873026e6c0000ff0001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +26902 +73f60000000100000000000003777777066b637a6f7973026e6c0000010001 +73f68000000100000003000303777777066b637a6f7973026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c017c0100002000100015180000e0b6e616d6573657276657232c037c0100002000100015180000e0b6e616d6573657276657233c037c02b0001000100015180000451ad2020c04f0001000100015180000451ad2021c0690001000100015180000452c049aa + +26903 +46b40000000100000000000006696d616765730777656262656174026e6c0000010001 +46b48000000100000002000006696d616765730777656262656174026e6c0000010001c0130002000100015180000f036e7331087765622d62656174c01bc01300020001000151800006036e7332c033 + +26904 +3d8a28000001000000010000026e6c0000060001095f6b65726265726f73045f7564700c7363616e6469747372763031026e6c00002100010000025800260000006400580e7363616e6469742d7365727665720c7363616e6469747372763031026e6c00 +3d8aa8040000000000000000 + +26905 +7c2600000001000000000000046c6f76650a70617274792d73697465026e6c0000010001 +7c2680000001000000020000046c6f76650a70617274792d73697465026e6c0000010001c01100020001000151800011036e73310774647364617461036e657400c01100020001000151800006036e7332c034 + +26906 +23bf0000000100000000000006776468303131066e7434616c6c026e6c0000010001 +23bf8000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +26907 +12180000000100000000000005646e732d31056c61646f74026e6c0000010001 +12188000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26908 +19820000000100000000000005646e732d32056c61646f74026e6c0000010001 +19828000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26909 +0b26000000010000000000000c6f6e7477657270666f72756d026e6c0000010001 +0b26800000010000000200020c6f6e7477657270666f72756d026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c019c00c00020001000151800006036e7332c030c02d00010001000151800004d9aa2042c04600010001000151800004d9aa2c06 + +26910 +0000000070024000aa5b0000020405b401010402 +000080010000000000000000 + +26911 +b4eb0000000100000000000006736166657873026e6c0000010001 +b4eb8000000100000002000006736166657873026e6c0000010001c00c00020001000151800013026e730a6d696e64737769746368036e657400c00c0002000100015180000d036e733206776964657873c035 + +26912 +b6099d2a501044707f6b0000000000000000 + + +26913 +b6099d2a50184470d042000000994920000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda4403c1f2400030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 + + +26914 +000000007002faf04e890000020405b401010402 +000080010000000000000000 + +26915 +10c900000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001 +10c984030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +26916 +8ccb000000010000000000000c6d65676170726f7669646572026e6c0000010001 +8ccb800000010000000300030c6d65676170726f7669646572026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02d0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +26917 +08e000000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001 +08e084030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +26918 +3a1d00000001000000000000056b72656674026e6c00000f0001 +3a1d80000001000000030001056b72656674026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +26919 +b6099d38501144627ecf0000000000000000 + + +26920 +59030000000100000000000003777777116d6f6465726e656c656374726f6e696373026e6c0000010001 +59038000000100000002000003777777116d6f6465726e656c656374726f6e696373026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c022c0100002000100015180000704686e7331c03b + +26921 +99fb000000010000000000000e6e6f786f6e737461696e6c657373026e6c00000f0001 +99fb800000010000000200000e6e6f786f6e737461696e6c657373026e6c00000f0001c00c00020001000151800012036e73310b776f726c646f6e6c696e65c01bc00c00020001000151800006036e7332c033 + +26922 +0000000070024000c30f0000020405b401010402 +000080010000000000000000 + +26923 +386400000001000000000000036d6274026e6c0000010001 +386480000001000000020002036d6274026e6c0000010001c00c0002000100015180000b026e7305706c616e74c010c00c00020001000151800006036e7332c027c02400010001000151800004d59f0037c03b00010001000151800004d59f0046 + +26924 +b6099d39501044627ece0000000000000000 + + +26925 +e15100000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001 +e15184030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +26926 +b60a3e1850104470f7300000000000000000 +b60abe140000000000000000 + +26927 +5c31000000010000000000000561686f7574026e6c00000f0001 +5c31800000010000000200020561686f7574026e6c00000f0001c00c0002000100015180000c04646e7331047369706fc012c00c0002000100015180000704646e7332c02bc02600010001000151800004d4cce65bc03e00010001000151800004d4cce660 + +26928 +eeba0000000100000000000003777777047a6f7973026e6c0000010001 +eeba8000000100000003000303777777047a6f7973026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c015c0100002000100015180000e0b6e616d6573657276657232c035c0100002000100015180000e0b6e616d6573657276657233c035c0290001000100015180000451ad2020c04d0001000100015180000451ad2021c0670001000100015180000452c049aa + +26929 +507a00000001000000000000037777770f6d6f6e746573736f72692d7a756964026e6c0000010001 +507a84030001000000010000037777770f6d6f6e746573736f72692d7a756964026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +26930 +b60a3e1850184470acd800000099e550000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda4403c1f2400030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 +b60abe140000000000000000 + +26931 +6c7600000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001 +6c7684030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573044e545331024e4c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +26932 +15da00000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +15da80000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +26933 +76690000000100000000000003777777046174616b026e6c0000010001 +76698000000100000002000003777777046174616b026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02c + +26934 +505500100001000000000001036e733207737572666e6574026e6c00000100010000290800000080000000 +505580000001000000040004036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a650000291000000000000000 + +26935 +b60a3e2650114462f6940000000000000000 +b60abe240000000000000000 + +26936 +0000000070024000c42f0000020405b401010402 +000080010000000000000000 + +26937 +902d0000000100000000000003777777046e6f6261026e6c0000010001 +902d8000000100000002000203777777046e6f6261026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +26938 +b60a3e2750104462f6930000000000000000 +b60abe240000000000000000 + +26939 +820c00000001000000000000037777770a64757463687465656e73026e6c0000010001 +820c80000001000000020001037777770a64757463687465656e73026e6c0000010001c0100002000100015180000a026e7304696d636fc01bc01000020001000151800013036e7332097669727475616c787303636f6d00c02f000100010001518000043e81810a + +26940 +c03200000001000000000000086469766964697669026e6c00000f0001 +c03280000001000000030001086469766964697669026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +26941 +b60b1d975010447018d10000000000000000 +b60b9d940000000000000000 + +26942 +b60b1d97501844708c99000000992530000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403acda5403c1f2500030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000005343414e4449542d5345525645525343414e44495453525630310000 +b60b9d940000000000000000 + +26943 +7b320010000100000000000106787334616c6c026e6c0000ff00010000290800000080000000 +7b328000000100000003000306787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +26944 +20f10000000100000000000003777777076167696e6e6574026e6c0000010001 +20f18403000100000001000003777777076167696e6e6574026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +26945 +b60b1da55011446218350000000000000000 +b60b9da40000000000000000 + +26946 +b70e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b70e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26947 +b60b1da65010446218340000000000000000 +b60b9da40000000000000000 + +26948 +b70f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b70f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26949 +1a5500000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +1a5580000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +26950 +9a2b00000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +9a2b80000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +26951 +011d00000001000000000000036e73330767617574656e67026e6c0000010001 +011d80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26952 +292000000001000000000000036e73340767617574656e67026e6c0000010001 +292080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26953 +acdc00000001000000000000037777770a70757a656c73706f7274026e6c0000010001 +acdc84030001000000010000037777770a70757a656c73706f7274026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +26954 +79b50000000100000000000008726f636864616c65026e6c00000f0001 +79b58000000100000002000108726f636864616c65026e6c00000f0001c00c00020001000151800013046b7261620b70617472696d6f6e69756dc015c00c0002000100015180000d036e7334036b706e036e657400c02900010001000151800004c2970a32 + +26955 +c1ec000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +c1ec800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26956 +b5760000000100000000000006766f6f727374026e6c00000f0001 +b5768000000100000002000006766f6f727374026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +26957 +d1bf0000000100000000000003777777066d6564776562026e6c0000010001 +d1bf8000000100000003000303777777066d6564776562026e6c0000010001c0100002000100015180000d026e73077072657a656e74c017c01000020001000151800006036e7332c02ec01000020001000151800006036e7333c02ec02b000100010001518000043ec07802c044000100010001518000043ec07803c05600010001000151800004d5541f90 + +26958 +013000000001000000000000036e73330767617574656e67026e6c0000010001 +013080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26959 +3a0f0000000100000000000008626f6479636f7465026e6c00000f0001 +3a0f8000000100000002000208626f6479636f7465026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +26960 +980100000001000000000000026373027675026e6c00000f0001 +980180000001000000030003026373027675026e6c00000f0001c00f00020001000151800005026e73c00fc00f000200010001518000070473746172c00cc00f0002000100015180000e036e733107737572666e6574c012c0260001000100015180000482258104c03700010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +26961 +d79b000000010000000000000377777706313763617368026e6c0000010001 +d79b800000010000000200020377777706313763617368026e6c0000010001c01000020001000151800010036e733109756e69736572766572c017c01000020001000151800006036e7332c02fc02b00010001000151800004c3454b03c04700010001000151800004d119a2fa + +26962 +dec20000000100000000000006787334616c6c026e6c0000ff0001 +dec28000000100000003000206787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +26963 +dafb00000001000000000000036e733103757063026e6c0000010001 +dafb80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +26964 +293f00000001000000000000036e73330767617574656e67026e6c0000010001 +293f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +26965 +97b00000000100000000000003696772026e6c0000ff0001 +97b08000000100000002000203696772026e6c0000ff0001c00c0002000100015180000d0a6c65757665686176656ec00cc00c0002000100015180000d0a64656c6673686176656ec00cc024000100010001518000043e2d5e0dc03d000100010001518000043e2d5e82 + +26966 +6f65000000010000000000000e70657465722d627275696e696e67026e6c0000010001 +6f65800000010000000200000e70657465722d627275696e696e67026e6c0000010001c00c00020001000151800010036e7331066a6f6865636f036e657400c00c00020001000151800006036e7332c033 + +26967 +8003000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +8003800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26968 +bd95000000010000000000000a656d6561736d7470303103616f6e026e6c00001c0001 +bd95800000010000000200010a656d6561736d7470303103616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26969 +19aa000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +19aa800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26970 +5bd7000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +5bd7800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26971 +5746000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +5746800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26972 +fac4000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +fac4800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26973 +e524000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +e524800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +26974 +222e000000010000000000000377777714696e7465726e657467656d65656e746567696473026e6c0000010001 +222e800000010000000200020377777714696e7465726e657467656d65656e746567696473026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c025c01000020001000151800006036e7332c03dc03900010001000151800004d90867fec05800010001000151800004c1ad2bfe + +26975 +ecaa00000001000000000000037777770b686f66706c65696e63616d026e6c0000010001 +ecaa80000001000000020002037777770b686f66706c65696e63616d026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +26976 +397800000001000000000000026e73076e656473746174026e6c0000010001 +397880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +26977 +32de0000000100000000000003706f70036f6361026e6c0000010001 +32de8000000100000002000003706f70036f6361026e6c0000010001c0100002000100015180000e036e73320464797873036e657400c01000020001000151800006036e7331c02c + +26978 +11a100000001000000000000036e733207737572666e6574026e6c0000010001 +11a180000001000000040003036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +26979 +f4e7000000010000000000000f426f6572486172746f67486f6f6674026e6c00001c0001 +f4e7800000010000000200000f426f6572486172746f67486f6f6674026e6c00001c0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +26980 +9c8d0000000100000000000003777777087374617473626f78026e6c0000010001 +9c8d8000000100000003000203777777087374617473626f78026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +26981 +2371000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +2371800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +26982 +1f19000000010000000000000c737370616d7374657264616d026e6c00001c0001 +1f19800000010000000200020c737370616d7374657264616d026e6c00001c0001c00c00020001000151800014036e73310d6d74622d736f6c7574696f6e73c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5852719c04d00010001000151800004d5852714 + +26983 +b7120000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7128000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26984 +37c300100001000000000001036e73310974656c656b6162656c026e6c00000100010000290800000080000000 +37c380000001000000020003036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d45344830000291000000000000000 + +26985 +422700100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000080000000 +422780000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +26986 +b7130000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7138000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +26987 +6d0600000001000000000000057468656d61026e6c0000ff0001 +6d0680000001000000030002057468656d61026e6c0000ff0001c00c0002000100015180000e036e7331076c656374726963c012c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02ac02600010001000151800004c297a082c04000010001000151800004c297a083 + +26988 +725f00000001000000000000036e7333076c656374726963026e6c0000010001 +725f80000001000000020002036e7333076c656374726963026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c297a082c03e00010001000151800004c297a083 + +26989 +71ad00000001000000000000036e7333076c656374726963026e6c00001c0001 +71ad80000001000000020002036e7333076c656374726963026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c297a082c03e00010001000151800004c297a083 + +26990 +aefb000000010000000000000377777707616c6c6f646f78026e6c0000010001 +aefb800000010000000200000377777707616c6c6f646f78026e6c0000010001c0100002000100015180000f036e733105726f6f647303636f6d00c01000020001000151800006036e7332c030 + +26991 +ff8000000001000000000000037777770e647574636864656d6f6372616379026e6c0000010001 +ff8080000001000000020002037777770e647574636864656d6f6372616379026e6c0000010001c0100002000100015180000c036e7331056d61786573c01fc01000020001000151800006036e7332c037c033000100010001518000045045402ec04b000100010001518000045045402f + +26992 +395300100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000000000000 +395380000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +26993 +02900000000100000000000004616a6178066e696b686566026e6c0000010001 +02908000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +26994 +1e820000000100000000000003777777036a7762026e6c0000010001 +1e828000000100000003000203777777036a7762026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +26995 +35d400000001000000000000026e73027575026e6c0000010001 +35d480000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +26996 +0d3800000001000000000000036e7332027575026e6c0000010001 +0d3880000001000000040004036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +26997 +23f40000000100000000000008646174616261736506717569726b79026e6c0000010001 +23f48000000100000002000008646174616261736506717569726b79026e6c0000010001c01500020001000151800014046e733031096772616669782d697303636f6d00c01500020001000151800007046e733033c035 + +26998 +f71f0000000100000000000004777777310a63656e747265686f6c64026e6c0000010001 +f71f8000000100000002000204777777310a63656e747265686f6c64026e6c0000010001c0110002000100015180001104646e733109696e7465726f757465c01cc0110002000100015180000704646e7332c035c03000010001000151800004d4173f3ec04d00010001000151800004d4173f3d + +26999 +c35500000001000000000000046d61696c03736e72026e6c0000010001 +c35580000001000000020002046d61696c03736e72026e6c0000010001c0110002000100015180000e036e7331076c656374726963c015c01100020001000151800006036e7332c02dc02900010001000151800004c297a082c04300010001000151800004c297a083 + +27000 +4da300000001000000000000046d61696c03736e72026e6c00001c0001 +4da380000001000000020002046d61696c03736e72026e6c00001c0001c0110002000100015180000e036e7331076c656374726963c015c01100020001000151800006036e7332c02dc02900010001000151800004c297a082c04300010001000151800004c297a083 + +27001 +a1660000000100000000000005736d74703203687661026e6c0000010001 +a1668000000100000003000305736d74703203687661026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000e036e733107737572666e6574c016c01200020001000151800006036e7332c012c02a00010001000151800004915c1202c03b00010001000151800004c0576a65c05500010001000151800004915c2102 + +27002 +08560000000100000000000007626c616764656e026e6c00000f0001 +08568000000100000002000007626c616764656e026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +27003 +bbb3000000010000000000000d6175746f74656c656772616166026e6c0000010001 +bbb3800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +27004 +262600000001000000000000046e733032066368656c6c6f026e6c0000010001 +262680000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +27005 +131300000001000000000000036e73310974656c656b6162656c026e6c0000010001 +131380000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +27006 +34be0000000100000000000008616473657276657206776562616473026e6c0000010001 +34be8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +27007 +2a67000000010000000000000b6e69657577736272696566176879706f746865656b72656e74656f7665727a69636874026e6c0000010001 +2a67800000010000000200000b6e69657577736272696566176879706f746865656b72656e74656f7665727a69636874026e6c0000010001c01800020001000151800015036e73370b686f7374696e67776f7278036e657400c01800020001000151800006036e7338c048 + +27008 +bd2200000001000000000000057468656d61026e6c0000ff0001 +bd2280000001000000030002057468656d61026e6c0000ff0001c00c0002000100015180000e036e7331076c656374726963c012c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02ac02600010001000151800004c297a082c04000010001000151800004c297a083 + +27009 +d18a000000010000000000001c6269626c696f746865656b6265726b656c656e726f64656e72696a73026e6c0000010001 +d18a800000010000000200011c6269626c696f746865656b6265726b656c656e726f64656e72696a73026e6c0000010001c00c0002000100015180000f026e730970726f6269626c696fc029c00c00020001000151800006036e7331c040c03d00010001000151800004d400f3ce + +27010 +462700000001000000000000046e733032066368656c6c6f026e6c0000010001 +462780000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +27011 +f3de000000010000000000001133646b75697065726265727440686f6d65026e6c0000010001 +f3de840300010000000100001133646b75697065726265727440686f6d65026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +27012 +094a00000001000000000000036e73340767617574656e67026e6c0000010001 +094a80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27013 +26810000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +26818000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27014 +4e6900000001000000000000036e7331096d6173746572646e73026e6c0000010001 +4e6980000001000000020002036e7331096d6173746572646e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f347c03c000100010001518000043e94a047 + +27015 +5c7a00000001000000000000036e7332096d6173746572646e73026e6c0000010001 +5c7a80000001000000020002036e7332096d6173746572646e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054f347c00c000100010001518000043e94a047 + +27016 +cde500000001000000000000037777770b6b656c6c7966616d696c79026e6c0000010001 +cde580000001000000020002037777770b6b656c6c7966616d696c79026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +27017 +fe3700000001000000000000076d61696c67773107626f6f6d2d6974026e6c00000f0001 +fe3780000001000000020002076d61696c67773107626f6f6d2d6974026e6c00000f0001c01400020001000151800010036e733109696e74657277696a73c01cc01400020001000151800006036e7332c034c03000010001000151800004c323885bc04c00010001000151800004d4bb3c5c + +27018 +8e1d000000010000000000000c646576657274616b6b696e67026e6c00000f0001 +8e1d800000010000000200020c646576657274616b6b696e67026e6c00000f0001c00c00020001000151800013036e73310c636172647365727669636573c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5c9baf3c04c00010001000151800004d5c9baf4 + +27019 +081d00000001000000000000036e733109666972737466696e64026e6c0000010001 +081d80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27020 +366800000001000000000000036e733209666972737466696e64026e6c0000010001 +366880000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27021 +7375000000010000000000000462737172026e6c0000010001 +7375800000010000000200000462737172026e6c0000010001c00c00020001000151800013026e730a6d696e64737769746368036e657400c00c0002000100015180000d036e733206776964657873c033 + +27022 +e9a100000001000000000000037777770c6a6f6e67656d6569736a6573026e6c0000010001 +e9a180000001000000020002037777770c6a6f6e67656d6569736a6573026e6c0000010001c0100002000100015180000a026e730469636d63c01dc01000020001000151800006036e7332c034c031000100010001518000043e643805c047000100010001518000043e643806 + +27023 +77190000000100000000000003777777086c65747373746174026e6c0000010001 +77198000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +27024 +26a000000001000000000001026e73067a6f6e6e6574026e6c00000100010000290500000000000000 +26a080000001000000020003026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa02020000291000000000000000 + +27025 +1a3c00000001000000000000036e7332036f6c6d026e6c0000010001 +1a3c80000001000000020002036e7332036f6c6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c3126e21c00c000100010001518000043e3ab22a + +27026 +0d1e00000001000000000000036e7332036f6c6d026e6c0000260001 +0d1e80000001000000020002036e7332036f6c6d026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c3126e21c00c000100010001518000043e3ab22a + +27027 +a253000000010000000000000f6269626c696f746865656b62657374026e6c0000010001 +a253800000010000000200020f6269626c696f746865656b62657374026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c01cc00c00020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +27028 +a26c000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +a26c800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27029 +80bf0000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +80bf8000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +27030 +56ef00000001000000000000036d783107626265796f6e64026e6c0000010001 +56ef80000001000000020002036d783107626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043eb1900bc03e000100010001518000043eb19002 + +27031 +2f2900000001000000000000046d61696c077965736f726e6f026e6c00001c0001 +2f2980000001000000030002046d61696c077965736f726e6f026e6c00001c0001c0110002000100015180000d036e733106776964657873c019c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +27032 +9694000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +9694800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +27033 +53ca0000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +53ca8000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +27034 +54fc0000000100000000000004726f6f7307656e64656d6f6c026e6c0000260001 +54fc8000000100000002000004726f6f7307656e64656d6f6c026e6c0000260001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +27035 +fd0400000001000000000000037777770b6164736c637261776c6572026e6c0000010001 +fd0484030001000000010000037777770b6164736c637261776c6572026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +27036 +3b6b00000001000000000000036e733109666972737466696e64026e6c0000010001 +3b6b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27037 +17bf000000010000000000000377777709707a7369676e61616c026e6c0000010001 +17bf800000010000000200020377777709707a7369676e61616c026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01ac01000020001000151800006036e7332c031c02e00010001000151800004d453c005c04c00010001000151800004d453c006 + +27038 +26a000000001000000000000026e73067a6f6e6e6574026e6c0000010001 +26a080000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +27039 +121100000001000000000000036e733209666972737466696e64026e6c0000010001 +121180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27040 +07c6000000010000000000000b676f6d61726b6574696e67026e6c00000f0001 +07c6800000010000000300000b676f6d61726b6574696e67026e6c00000f0001c00c0002000100015180000f036e73310570616e7361036e657400c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030 + +27041 +fb4300000001000000000000037777771361746261616e6472696a66746563686e69656b026e6c0000010001 +fb4380000001000000020000037777771361746261616e6472696a66746563686e69656b026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c03e + +27042 +0931000000010000000000000377777711746563686e697363686b6572616d69656b026e6c0000010001 +0931800000010000000200020377777711746563686e697363686b6572616d69656b026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c022c01000020001000151800006036e7332c03ac0360001000100015180000450416028c05100010001000151800004c356780c + +27043 +fb590000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +fb598000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27044 +3fbd00000001000000000000037777770d766f657462616c6f6e6c696e65026e6c0000010001 +3fbd80000001000000030002037777770d766f657462616c6f6e6c696e65026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +27045 +5829000000010000000000000c535449524c494e474445414e026e6c0000020001 +5829840300010000000100000c535449524c494e474445414e026e6c0000020001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +27046 +17a400000001000000000000046370696d026e6c00000f0001 +17a480000001000000020002046370696d026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +27047 +739f00000001000000000000037777770a67726174697370696373026e6c0000010001 +739f80000001000000020000037777770a67726174697370696373026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +27048 +07fb00000001000000000000037777770677616e6e6565026e6c0000010001 +07fb80000001000000020002037777770677616e6e6565026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c017c01000020001000151800006036e7332c02fc02b00010001000151800004d5c9e8c8c04b00010001000151800004d5c9e8c9 + +27049 +129600000001000000000000106b6e7a626b72696e6762726162616e74026e6c0000010001 +129680000001000000020002106b6e7a626b72696e6762726162616e74026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c01dc00c00020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +27050 +37360000000100000000000003666d66026e6c00000f0001 +37368000000100000003000103666d66026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +27051 +14da0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +14da8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27052 +0a6d0000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +0a6d8000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27053 +eec3000000010000000000000469632d73026e6c00001c0001 +eec3800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27054 +7ff90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7ff98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27055 +619800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +619880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27056 +61490000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +61498000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27057 +f8c100000001000000000000037777770c616263736f6c7574696f6e73026e6c0000010001 +f8c180000001000000020001037777770c616263736f6c7574696f6e73026e6c0000010001c0100002000100015180000a036e733303777873c01dc01000020001000151800006036e7334c035c04700010001000151800004d5ef9a65 + +27058 +3e1000000001000000000000036e7331046372696f026e6c0000010001 +3e1080000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27059 +f32000000001000000000000036e7332046372696f026e6c0000010001 +f32080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27060 +edf500000001000000000000037777770a72656372656174696566026e6c0000010001 +edf580000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +27061 +2ec900000001000000000000036e7335046372696f026e6c0000010001 +2ec980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27062 +44e900000001000000000000036e7336046372696f026e6c0000010001 +44e980000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27063 +3a62000000010000000000000377777703776562026e6c0000010001 +3a62800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +27064 +ed1400000001000000000000036e7331046372696f026e6c0000010001 +ed1480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27065 +e99f00000001000000000000036e7332046372696f026e6c0000010001 +e99f80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27066 +8cbb00000001000000000000036e7335046372696f026e6c0000010001 +8cbb80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27067 +c0ac00000001000000000000036e7336046372696f026e6c0000010001 +c0ac80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27068 +463800000001000000000000086d61696c686f73740563616e6f6e026e6c0000010001 +463880000001000000020001086d61696c686f73740563616e6f6e026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800014036e733202657507636f6e63657274036e657400c02f00010001000151800004c21ab811 + +27069 +110a000000010000000000000469632d73026e6c00000f0001 +110a800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27070 +41fd00000001000000000000036e73330a667574757265666c6578026e6c0000010001 +41fd80000001000000030003036e73330a667574757265666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d9aa122bc04100010001000151800004d9aa122cc00c00010001000151800004d9aa122d + +27071 +cf7e00000001000000000000037777770b706f726e6f2d66696c6d73026e6c00001c0001 +cf7e80000001000000020002037777770b706f726e6f2d66696c6d73026e6c00001c0001c0100002000100015180000f036e73310861746c616e74697ac01cc01000020001000151800006036e7332c034c03000010001000151800004d5efa011c04b00010001000151800004d5efa075 + +27072 +2bfa01000001000000000000056b6f726e6f026e6c00000f000100 +2bfa85030001000000010000056b6f726e6f026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +27073 +b88a00000001000000000000036d733106736f6c636f6e026e6c0000010001 +b88a80000001000000030003036d733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c04200010001000151800004d42d2003c05400010001000151800004d42d2103 + +27074 +6e520000000100000000000003777777056d61707079026e6c0000010001 +6e528000000100000002000203777777056d61707079026e6c0000010001c0100002000100015180000d036e733106646e736e6574c016c01000020001000151800006036e7332c02ec02a00010001000151800004d4ccc4f2c04300010001000151800004d4ccc4f3 + +27075 +21b300000001000000000000087970656e62757267026e6c0000010001 +21b380000001000000020002087970656e62757267026e6c0000010001c00c0002000100015180000e036e733107626265796f6e64c015c00c00020001000151800006036e7332c02dc029000100010001518000043eb1900bc043000100010001518000043eb19002 + +27076 +e9ed0000000100000000000003767763026e6c00000f0001 +e9ed8000000100000002000203767763026e6c00000f0001c00c00020001000151800013076a61736d696e6508696e667261636f6dc010c00c0002000100015180000a076f6d616c6c6579c02cc02400010001000151800004c323cb41c043000100010001518000043e320fd3 + +27077 +89bd00000001000000000000036e7331077472616e736970026e6c0000010001 +89bd80000001000000020002036e7331077472616e736970026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c0001000100015180000450454343c00c0001000100015180000450454242 + +27078 +3eda00000001000000000000036e7332077472616e736970026e6c0000010001 +3eda80000001000000020002036e7332077472616e736970026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800006036e7331c010c02c0001000100015180000450454343c03e0001000100015180000450454242 + +27079 +ee38000000010000000000000a707269736d61666f6f64026e6c00000f0001 +ee38800000010000000200020a707269736d61666f6f64026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +27080 +9778000000010000000000000a696e7465726d61726973026e6c0000010001 +9778800000010000000200020a696e7465726d61726973026e6c0000010001c00c00020001000151800009036e7331026973c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d5852102c04000010001000151800004d5c41503 + +27081 +661a000000010000000000000377777709626f6f72746f72656e026e6c0000010001 +661a800000010000000200010377777709626f6f72746f72656e026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01ac01000020001000151800006036e7334c032c02e00010001000151800004d5c401c0 + +27082 +ece100000001000000000000037777770c6865657a652d6c65656e6465026e6c0000010001 +ece180000001000000020002037777770c6865657a652d6c65656e6465026e6c0000010001c0100002000100015180000e026e73086d656761706c6578c01dc01000020001000151800006036e7331c034c03100010001000151800004504f6101c04b00010001000151800004504f6102 + +27083 +5c34000000010000000000000d666f746f76616e6d6965726c6f026e6c00000f0001 +5c34800000010000000200000d666f746f76616e6d6965726c6f026e6c00000f0001c00c00020001000151800010036e733106686f73747337036e657400c00c00020001000151800006036e7332c032 + +27084 +154e00000001000000000000036e696303617a75026e6c0000010001 +154e80000001000000030003036e696303617a75026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800009036e7333027575c014c028000100010001518000048f79fe01c03900010001000151800004c0576a65c0530001000100015180000483d31020 + +27085 +7f690000000100000000000005646e732d31056c61646f74026e6c0000010001 +7f698000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27086 +35a6000000010000000000000377777703327479026e6c0000010001 +35a6800000010000000200020377777703327479026e6c0000010001c0100002000100015180000f026e7309656174736572766572c014c01000020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +27087 +fe7400000001000000000000046d61696c0b636173696e7465726e6574026e6c0000010001 +fe7480000001000000020000046d61696c0b636173696e7465726e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c038 + +27088 +af4d0000000100000000000007616e746f696e65026e6c00000f0001 +af4d8000000100000002000207616e746f696e65026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +27089 +39b400000001000000000000066863636e6574026e6c0000ff0001 +39b480000001000000020000066863636e6574026e6c0000ff0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02e + +27090 +cc3600000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +cc3680000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +27091 +f9b2000000010000000000000678787865726f0c6a6f6e67657469656e657273026e6c0000010001 +f9b2800000010000000200020678787865726f0c6a6f6e67657469656e657273026e6c0000010001c01300020001000151800011026e730b6973642d686f6c6c616e64c020c01300020001000151800006036e7332c037c03400010001000151800004d5e38d0ac05100010001000151800004d5e38205 + +27092 +aee1000000010000000000000475676170026e6c00000f0001 +aee1800000010000000200020475676170026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +27093 +2a4800000001000000000000037777770a73686f65737472696e67026e6c0000010001 +2a4880000001000000020000037777770a73686f65737472696e67026e6c0000010001c0100002000100015180000f026e7306696e74616b7403636f6d00c01000020001000151800010036e733206776964657873036e657400 + +27094 +b70400000001000000000000037777770a656173792d7269646572026e6c0000010001 +b70480000001000000030002037777770a656173792d7269646572026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c01bc01000020001000151800006036e7332c033c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02f00010001000151800004cf2cd7adc0500001000100015180000452c04365 + +27095 +6b03000000010000000000000469632d73026e6c0000010001 +6b03800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27096 +02ca00000001000000000000037777770662617274696d026e6c0000010001 +02ca80000001000000020000037777770662617274696d026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c017c0100002000100015180000805646e732d32c031 + +27097 +35a3000000010000000000000377777707666974616c6963026e6c0000010001 +35a3800000010000000200000377777707666974616c6963026e6c0000010001c01000020001000151800015036e73310b726974736163636f756e7403636f6d00c01000020001000151800006036e7332c030 + +27098 +cabc000000010000000000000e6b6f627573616d7374657264616d026e6c00000f0001 +cabc800000010000000200000e6b6f627573616d7374657264616d026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +27099 +aa6a00000001000000000000047072693103646e73067073696e6574026e6c0000010001 +aa6a80000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +27100 +e62800000001000000000000047072693303646e73067073696e6574026e6c0000010001 +e62880000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +27101 +c56e00000001000000000000047072693203646e73067073696e6574026e6c0000010001 +c56e80000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +27102 +35e000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +35e080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +27103 +e3b000000001000000000000096b617070612d677366026e6c00000f0001 +e3b080000001000000030003096b617070612d677366026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c016c00c000200010001518000070470726932c02fc00c000200010001518000070470726933c02fc02a000100010001518000049a0ff9a6c048000100010001518000049a0ff9aac05b000100010001518000049a0ff9ae + +27104 +389400000001000000000000086b6170702d677366026e6c00000f0001 +389484030001000000010000086b6170702d677366026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +27105 +47be000000010000000000000562736d74700577696e646f026e6c00001c0001 +47be800000010000000200020562736d74700577696e646f026e6c00001c0001c012000200010001518000070469697331c012c01200020001000151800008056969733137c012c02c00010001000151800004d9aa050bc03f00010001000151800004d9aa0430 + +27106 +31d40000000100000000000003777777036c6673026e6c0000010001 +31d48000000100000002000203777777036c6673026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec014c01000020001000151800006036e7332c02cc02800010001000151800004d5efb105c04400010001000151800004505faa0a + +27107 +5efe00000001000000000000106a616e7373656e2d726f6e64686f7574026e6c0000ff0001 +5efe80000001000000020000106a616e7373656e2d726f6e64686f7574026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c01dc00c0002000100015180000704686e7331c036 + +27108 +0e360000000100000000000006636861726973026e6c00000f0001 +0e368000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27109 +195200000001000000000000036e73340767617574656e67026e6c0000010001 +195280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27110 +a3570000000100000000000005646e732d31056c61646f74026e6c0000010001 +a3578000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27111 +e2d00000000100000000000005646e732d32056c61646f74026e6c0000010001 +e2d08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27112 +6b090000000100000000000003777777096c65756b7765726b74026e6c0000010001 +6b098000000100000002000003777777096c65756b7765726b74026e6c0000010001c01000020001000151800017036e73310d696e746572726567697374657203636f6d00c01000020001000151800010026e730a646f6d65696e686f7374c01a + +27113 +839f00000001000000000000077365796d6f75720b6973642d686f6c6c616e64026e6c0000010001 +839f80000001000000020002077365796d6f75720b6973642d686f6c6c616e64026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c03400010001000151800004d5e38d0ac04500010001000151800004d5e38205 + +27114 +229d000000010000000000000761616c6f735f32036c6f73026e6c0000010001 +229d800000010000000200020761616c6f735f32036c6f73026e6c0000010001c0140002000100015180000c026e7306787334616c6cc018c01400020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +27115 +ea250000000100000000000003777777106472756b6b6572696a2d62796b6f7266026e6c0000010001 +ea258000000100000002000003777777106472756b6b6572696a2d62796b6f7266026e6c0000010001c01000020001000151800018036e73310e7765626d61727463656e7472616c03636f6d00c01000020001000151800006036e7332c039 + +27116 +4eea000000010000000000000f6465756764656e7465727073747261026e6c00000f0001 +4eea800000010000000200000f6465756764656e7465727073747261026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c033 + +27117 +01dd0000000100000000000005646e732d31056c61646f74026e6c0000010001 +01dd8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27118 +18550000000100000000000005646e732d32056c61646f74026e6c0000010001 +18558000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27119 +4a3500000001000000000000036d783106787334616c6c026e6c0000010001 +4a3580000001000000030002036d783106787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +27120 +253400000001000000000000037777770c7374657272656e6265757273026e6c0000010001 +253480000001000000020000037777770c7374657272656e6265757273026e6c0000010001c0100002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01000020001000151800007046e6f7661c036 + +27121 +6dca0000000100000000000008686f73746e616d650462696e640000100003 +6dca8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27122 +84720000000100000000000008686f73746e616d650462696e640000100003 +84728000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27123 +30720000000100000000000008686f73746e616d650462696e640000100003 +30728000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27124 +fef50000000100000000000003777777087472697077697265026e6c0000010001 +fef58000000100000002000103777777087472697077697265026e6c0000010001c0100002000100015180000e036e7331077472616e736970c019c01000020001000151800006036e7332c031c02d0001000100015180000450454242 + +27125 +2a3c00000001000000000000087765627374617473096e65746c6f67696373026e6c0000010001 +2a3c80000001000000020002087765627374617473096e65746c6f67696373026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c03300010001000151800004c3c16402c04400010001000151800004c2b2850a + +27126 +99f900000001000000000000106c65656e646572736e696a6d6567656e026e6c00000f0001 +99f980000001000000020000106c65656e646572736e696a6d6567656e026e6c00000f0001c00c0002000100015180001505646e7332300961637469766569737003636f6d00c00c0002000100015180000805646e733231c037 + +27127 +f03a000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +f03a800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27128 +80f90000000100000000000008686f73746e616d650462696e640000100003 +80f98000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27129 +0e6a00000001000000000000046d61696c066b6e696a6666026e6c0000010001 +0e6a80000001000000020000046d61696c066b6e696a6666026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +27130 +79fe000000010000000000000377777709776f6f6e6b72616e74026e6c0000010001 +79fe800000010000000200000377777709776f6f6e6b72616e74026e6c0000010001c01000020001000151800011036e733107636f6e78696f6e036e657400c01000020001000151800006036e7332c032 + +27131 +abb30000000100000000000004776f726b0c7676766e6f6f726477696a6b026e6c0000010001 +abb38000000100000002000004776f726b0c7676766e6f6f726477696a6b026e6c0000010001c01100020001000151800013036e7331086d6564696177656204696e666f00c01100020001000151800006036e7332c036 + +27132 +f92400000001000000000000054d4f4c454e0350434d026e6c0000010001 +f92480000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +27133 +820900000001000000000000036e733109666972737466696e64026e6c0000010001 +820980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27134 +d462000000010000000000000377777708642d7265697a656e026e6c0000010001 +d462800000010000000300000377777708642d7265697a656e026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +27135 +525c00000001000000000000046e733032066368656c6c6f026e6c0000010001 +525c80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +27136 +a890000000010000000000000477777732076d797374617473026e6c0000010001 +a890800000010000000200020477777732076d797374617473026e6c0000010001c01100020001000151800011036e73310a726564686f7374696e67c019c01100020001000151800006036e7332c031c02d00010001000151800004d5efa404c04a00010001000151800004d5efa405 + +27137 +7c040000000100000000000003666d660a6e6c2c736f7040666d66026e6c00000f0001 +7c048403000100000001000003666d660a6e6c2c736f7040666d66026e6c00000f0001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +27138 +3e7c0000000100000000000003666d660a6e6c2c736f7040666d66026e6c00000f0001 +3e7c8403000100000001000003666d660a6e6c2c736f7040666d66026e6c00000f0001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +27139 +504a000000010000000000000966726573686d696c6b026e6c00000f0001 +504a800000010000000200000966726573686d696c6b026e6c00000f0001c00c0002000100015180000e036e73300470707365036e657400c00c00020001000151800006036e7331c02e + +27140 +7ecc0000000100000000000002763109706365787472656d65026e6c0000010001 +7ecc8000000100000002000202763109706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +27141 +bf660000000100000000000002763109706365787472656d65026e6c0000260001 +bf668000000100000002000202763109706365787472656d65026e6c0000260001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +27142 +5fb30000000100000000000002763209706365787472656d65026e6c0000010001 +5fb38000000100000002000202763209706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +27143 +debd0000000100000000000002763209706365787472656d65026e6c0000260001 +debd8000000100000002000202763209706365787472656d65026e6c0000260001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +27144 +d2c2000000010000000000000236320331303003323532033230350a626c61636b686f6c657307656173796e6574026e6c0000010001 +d2c2800000010000000200020236320331303003323532033230350a626c61636b686f6c657307656173796e6574026e6c0000010001c02600020001000151800006036e7330c026c02600020001000151800006036e7331c026c04200010001000151800004c2a55e01c05400010001000151800004c2a55e05 + +27145 +828d00000001000000000000066e6964657261026e6c0000010001 +828d80000001000000020000066e6964657261026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +27146 +9efa00000001000000000000037777770f6164756c742d6d6567612d73697465026e6c0000010001 +9efa80000001000000020000037777770f6164756c742d6d6567612d73697465026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c037 + +27147 +bb8500000001000000000000037777770664616c636f6e026e6c0000010001 +bb8580000001000000020000037777770664616c636f6e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c017c0100002000100015180000704686e7331c030 + +27148 +3434000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +3434840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +27149 +18a30000000100000000000003777777027264026e6c0000010001 +18a38000000100000002000203777777027264026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c013c01000020001000151800006036e7332c02bc02700010001000151800004505fa002c04200010001000151800004505fac02 + +27150 +38c900000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +38c980000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +27151 +102400000001000000000000037777770361666b026e6c0000010001 +102480000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27152 +d63d00000001000000000000037777770d67726f6f7679636f6d70616e79026e6c0000010001 +d63d80000001000000030001037777770d67726f6f7679636f6d70616e79026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +27153 +676e00000001000000000000037777770e6e61747575726b616c656e646572026e6c0000010001 +676e80000001000000020002037777770e6e61747575726b616c656e646572026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c01fc0100002000100015180000805726f62696ec03ac03300010001000151800004913a1e04c04f00010001000151800004913a1a34 + +27154 +d1a100000001000000000000037777770b747261636b6572646f6773026e6c0000010001 +d1a180000001000000020002037777770b747261636b6572646f6773026e6c0000010001c01000020001000151800009036e7331026973c01cc01000020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +27155 +07800000000100000000000003777777066e6f72726f64026e6c0000010001 +07808000000100000002000003777777066e6f72726f64026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02f + +27156 +2d7e00000001000000000000056672697368026e6c0000010001 +2d7e80000001000000020000056672697368026e6c0000010001c00c00020001000151800019046e7331310e666c6578776562686f7374696e6703636f6d00c00c00020001000151800007046e733132c02b + +27157 +102400000001000000000000037777770361666b026e6c0000010001 +102480000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27158 +b497000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +b497800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +27159 +102400000001000000000000037777770361666b026e6c0000010001 +102480000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27160 +719200000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +719280000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +27161 +b1bb0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +b1bb8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27162 +ceea000000010000000000000f7065656b6163636f756e74616e7473026e6c0000010001 +ceea800000010000000200020f7065656b6163636f756e74616e7473026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c01cc00c00020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +27163 +89ff00000001000000000000026e730c696e746572636f6e6e656374026e6c0000010001 +89ff80000001000000030003026e730c696e746572636f6e6e656374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +27164 +8a0000000001000000000000026e73036d6c63026e6c0000010001 +8a0080000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +27165 +201200000001000000000000036e73310568616e7a65026e6c00001c0001 +201280000001000000030003036e73310568616e7a65026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c016c00c00010001000151800004912106efc03800010001000151800004912106eec04a00010001000151800004c0576a65 + +27166 +073000000001000000000000036e73310568616e7a65026e6c0000260001 +073080000001000000030003036e73310568616e7a65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c016c00c00010001000151800004912106efc03800010001000151800004912106eec04a00010001000151800004c0576a65 + +27167 +b24b00000001000000000000036e73320568616e7a65026e6c00001c0001 +b24b80000001000000030003036e73320568616e7a65026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +27168 +34c600000001000000000000036e73320568616e7a65026e6c0000260001 +34c680000001000000030003036e73320568616e7a65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +27169 +1c1400000001000000000000036e73310765766964656e74026e6c0000010001 +1c1480000001000000020002036e73310765766964656e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c36d19c4c03a00010001000151800004c36d1942 + +27170 +62bc0000000100000000000005646e732d31056c61646f74026e6c0000010001 +62bc8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27171 +40d40000000100000000000005646e732d32056c61646f74026e6c0000010001 +40d48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27172 +7570000000010000000000000c6d656469612d746f7461616c026e6c00000f0001 +7570800000010000000200020c6d656469612d746f7461616c026e6c00000f0001c00c00020001000151800009036e7331026973c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +27173 +af2900000001000000000000046d61696c09656c6d6167726f6570026e6c0000010001 +af2980000001000000020002046d61696c09656c6d6167726f6570026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7331c011c02f00010001000151800004d5880085c04000010001000151800004d5ce5e22 + +27174 +954700000001000000000000085354494e47504943026e6c0000020001 +954784030001000000010000085354494e47504943026e6c0000020001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +27175 +979c0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +979c8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27176 +c1ec000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +c1ec800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27177 +4711000000010000000000000377777705326c696e6b026e6c0000010001 +4711800000010000000300030377777705326c696e6b026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c016c01000020001000151800006036e7330c02dc01000020001000151800006036e7333c02dc02a00010001000151800004c3561682c04a00010001000151800004c3561683c05c00010001000151800004d5de0bfa + +27178 +660300000001000000000000036e73330767617574656e67026e6c0000010001 +660380000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27179 +fe0200000001000000000000036e73340767617574656e67026e6c0000010001 +fe0280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27180 +bd000000000100000000000009652d6c756e61746963026e6c0000010001 +bd008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +27181 +125c00000001000000000000037777770463726f70026e6c0000010001 +125c80000001000000020002037777770463726f70026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c015c01000020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +27182 +9e8d00000001000000000000076e6372766e6574026e6c0000ff0001 +9e8d80000001000000030003076e6372766e6574026e6c0000ff0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec014c00c00020001000151800006036e7331c031c00c00020001000151800006036e7332c031c02800010001000151800004d42d2005c04600010001000151800004d42d2003c05800010001000151800004d42d2103 + +27183 +1b2b0000000100000000000003777777066e6965757773026e6c0000010001 +1b2b8000000100000002000003777777066e6965757773026e6c0000010001c0100002000100015180000f036e73310561676e2d65036e657400c01000020001000151800006036e7332c02f + +27184 +31b000000001000000000000037777770e6c65756b65766f6963656d61696c026e6c0000010001 +31b080000001000000020000037777770e6c65756b65766f6963656d61696c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c039 + +27185 +dcac00000001000000000000037777770e6c65756b65766f6963656d61696c026e6c0000010001 +dcac80000001000000020000037777770e6c65756b65766f6963656d61696c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c039 + +27186 +479800000001000000000000157a6f72676b616e746f6f722d67726f6e696e67656e026e6c0000010001 +479880000001000000020002157a6f72676b616e746f6f722d67726f6e696e67656e026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c022c00c00020001000151800006036e7331c039c03600010001000151800004504f6101c05000010001000151800004504f6102 + +27187 +7170000000010000000000000236320331303003323532033230350a626c61636b686f6c657307656173796e6574026e6c0000050001 +7170800000010000000200020236320331303003323532033230350a626c61636b686f6c657307656173796e6574026e6c0000050001c02600020001000151800006036e7330c026c02600020001000151800006036e7331c026c04200010001000151800004c2a55e01c05400010001000151800004c2a55e05 + +27188 +902300000001000000000000086f747465726c6f6f026e6c0000010001 +902380000001000000020002086f747465726c6f6f026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +27189 +65280000000100000000000003777777076b616e7a656f6e026e6c0000010001 +65288000000100000002000203777777076b616e7a656f6e026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c018c01000020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +27190 +c60d28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730a73706f72746369747934026e6c000021000100000258001d00000064005807736572766572340a73706f72746369747934026e6c00 +c60da8040000000000000000 + +27191 +5bb1000000010000000000000570697030390776697a7a617669026e6c0000010001 +5bb1800000010000000300010570697030390776697a7a617669026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c01200020001000151800007046e733038c044c02e000100010001518000043e48df58 + +27192 +e81200000001000000000000037777770874656c6562797465026e6c0000010001 +e81280000001000000020002037777770874656c6562797465026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02d00010001000151800004d5d38115c03f00010001000151800004d5d38116 + +27193 +828c00000001000000000000036e73330874656c6562797465026e6c0000010001 +828c80000001000000020002036e73330874656c6562797465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004d5d38115c03b00010001000151800004d5d38116 + +27194 +fdf900000001000000000000036e73340874656c6562797465026e6c0000010001 +fdf980000001000000020002036e73340874656c6562797465026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800002c00cc02d00010001000151800004d5d38115c00c00010001000151800004d5d38116 + +27195 +dc9e00000001000000000000037777770b6c65756b636f6e74616374026e6c0000010001 +dc9e80000001000000020002037777770b6c65756b636f6e74616374026e6c0000010001c0100002000100015180000c036e733105642d6f2d73c01cc01000020001000151800006036e7332c034c0300001000100015180000451ad076cc0480001000100015180000451ad076d + +27196 +06e600000001000000000000037777770b6c65756b636f6e74616374026e6c0000010001 +06e680000001000000020002037777770b6c65756b636f6e74616374026e6c0000010001c0100002000100015180000c036e733105642d6f2d73c01cc01000020001000151800006036e7332c034c0300001000100015180000451ad076cc0480001000100015180000451ad076d + +27197 +024800000001000000000000037777770d76616e7761696a656e62757267026e6c0000010001 +024880000001000000020000037777770d76616e7761696a656e62757267026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ec01000020001000151800006036e7332c036 + +27198 +b38500000001000000000000037777770d76616e7761696a656e62757267026e6c0000010001 +b38580000001000000020000037777770d76616e7761696a656e62757267026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ec01000020001000151800006036e7332c036 + +27199 +cc8900000001000000000000066f7a77617265026e6c0000010001 +cc8980000001000000020000066f7a77617265026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02a + +27200 +3a20000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +3a20800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +27201 +253d000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +253d800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +27202 +b109000000010000000000000649434153533207554e494d414153024e4c0000010001 +b109800000010000000300030649434153533207554e494d414153024e4c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a65 + +27203 +93110000000100000000000003777777076461636c6f676f026e6c0000010001 +93118000000100000003000103777777076461636c6f676f026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +27204 +000000007002400088c600000204057a01010402 +000080010000000000000000 + +27205 +b610654e501041b898290000000000000000 +b610e5440000000000000000 + +27206 +b610654e501841b8139400000090d480000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff54403c50d40003000000314e544c4d535350000100000097b208e00a000a002700000007000700200000005345525645523453504f525443495459340000 +b610e5440000000000000000 + +27207 +45b90000000100000000000004676174650365706f026e6c0000010001 +45b98000000100000002000104676174650365706f026e6c0000010001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c0001000100015180000491408003 + +27208 +9bec0000000100000000000004676174650365706f026e6c0000260001 +9bec8000000100000002000104676174650365706f026e6c0000260001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c0001000100015180000491408003 + +27209 +b610655c501141aa97960000000000000000 +b610e5540000000000000000 + +27210 +629600000001000000000000037777770e726b627377696c6c6962726f7264026e6c0000010001 +629680000001000000020000037777770e726b627377696c6c6962726f7264026e6c0000010001c01000020001000151800012036e7337087465646f63776562036e657400c01000020001000151800006036e7338c037 + +27211 +ce21000000010000000000000f7363686f6c74656e2d6c696a6d656e026e6c00000f0001 +ce21840300010000000100000f7363686f6c74656e2d6c696a6d656e026e6c00000f0001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +27212 +b610655d501041aa97950000000000000000 +b610e5540000000000000000 + +27213 +2fdc00000001000000000000085455524e4b49454b024e4c00000f0001 +2fdc80000001000000020001085455524e4b49454b024e4c00000f0001c00c0002000100015180000f026e7309696d74656368696374c015c00c0002000100015180000d036e7334036b706e036e657400c02900010001000151800004c1accc82 + +27214 +81460000000100000000000004616e73310774697363616c69026e6c0000010001 +81468000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +27215 +e07e0000000100000000000004616e73310774697363616c69026e6c0000260001 +e07e8000000100000003000204616e73310774697363616c69026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +27216 +f03f0000000100000000000004616e73320774697363616c69026e6c0000010001 +f03f8000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +27217 +00000000700240008aa700000204057a01010402 +000080010000000000000000 + +27218 +21e7000000010000000000000a66726565616363657373026e6c00000f0001 +21e7800000010000000200020a66726565616363657373026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc017c00c00020001000151800006036e7332c02fc02b00010001000151800004c3558244c04400010001000151800004c3558245 + +27219 +4302000000010000000000000c776f6f6e62656c616e67656e026e6c0000010001 +4302800000010000000200020c776f6f6e62656c616e67656e026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +27220 +bb190000000100000000000005646e732d31056c61646f74026e6c0000010001 +bb198000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27221 +7f300000000100000000000005646e732d32056c61646f74026e6c0000010001 +7f308000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27222 +d16b000000010000000000000377777709626f636f6e63657074026e6c0000010001 +d16b800000010000000200020377777709626f636f6e63657074026e6c0000010001c0100002000100015180000d036e733106776562646e73c01ac01000020001000151800006036e7332c032c02e000100010001518000045054e5f1c047000100010001518000045054e5f2 + +27223 +afbf0000000100000000000004616e73320774697363616c69026e6c0000260001 +afbf8000000100000003000204616e73320774697363616c69026e6c0000260001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +27224 +b6125547501041b8aa0f0000000000000000 +b612d5440000000000000000 + +27225 +9ab4000000010000000000000377777708746f706c69737473026e6c0000010001 +9ab4800000010000000300030377777708746f706c69737473026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +27226 +05710000000100000000000006787334616c6c026e6c00000f0001 +05718000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +27227 +b6125547501841b804fb00000090f600000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff54403c50d40003000000314e544c4d535350000100000097b208e00a000a002700000007000700200000005345525645523453504f525443495459340000 +b612d5440000000000000000 + +27228 +b6125555501141aaa97c0000000000000000 +b612d5540000000000000000 + +27229 +01030000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +01038000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27230 +b6125556501041aaa97b0000000000000000 +b612d5540000000000000000 + +27231 +f00200000001000000000000037777770565626f6e65026e6c0000010001 +f00280000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +27232 +b12f000000010000000000000672756e6e657206535441525431024e4c0000060001 +b12f840300010000000100000672756e6e657206535441525431024e4c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +27233 +c35100000001000000000000076f6d6e69636f6c026e6c00000f0001 +c35180000001000000020002076f6d6e69636f6c026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c014c00c00020001000151800006036e7332c02bc02800010001000151800004d453c005c04600010001000151800004d453c006 + +27234 +0000000070024000e70d00000204057a01010402 +000080010000000000000000 + +27235 +804e00000001000000000000037777770b63656e7465727061726373026e6c0000010001 +804e80000001000000020001037777770b63656e7465727061726373026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc01cc01000020001000151800006036e7331c033c03000010001000151800004c2b2b20a + +27236 +b6132124501041b83a980000000000000000 +b613a1230000000000000000 + +27237 +ba1f00000001000000000000077265666c656374026e6c0000010001 +ba1f80000001000000020000077265666c656374026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +27238 +b6132124501841b871c40000009019c0000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff54403c50d40003000000314e544c4d535350000100000097b208e00a000a002700000007000700200000005345525645523453504f525443495459340000 +b613a1230000000000000000 + +27239 +3d640000000100000000000006636861726973026e6c00000f0001 +3d648000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27240 +b6132132501141aa3a050000000000000000 +b613a1330000000000000000 + +27241 +22910000000100000000000006647261626265026e6c00000f0001 +22918000000100000002000206647261626265026e6c00000f0001c00c0002000100015180000d036e73310666656e6e756dc013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a50d2c040000100010001518000043e3a50d1 + +27242 +ce7a000000010000000000001166696e616e636574656c65766973696f6e026e6c0000010001 +ce7a800000010000000200021166696e616e636574656c65766973696f6e026e6c0000010001c00c00020001000151800011026e730b666163696e676661637473c01ec00c00020001000151800006036e7332c035c03200010001000151800004d513b013c04f00010001000151800004d513b012 + +27243 +b6132133501041aa3a040000000000000000 +b613a1330000000000000000 + +27244 +b71e0000000100000000000003726473026e6c0000010001 +b71e8000000100000002000103726473026e6c0000010001c00c0002000100015180000a036e733303777873c010c00c00020001000151800006036e7334c028c03a00010001000151800004d5ef9a65 + +27245 +6481000000010000000000000a61726368696d65646573026e6c0000010001 +6481800000010000000200020a61726368696d65646573026e6c0000010001c00c0002000100015180001103646e730a636f6e63657074736661c017c00c0002000100015180001004646e733208636f6e6365707473c017c02b00010001000151800004d5c51c03c04800010001000151800004d5c51e1c + +27246 +28ce00000001000000000000037777770a64616e7370616c656973026e6c0000010001 +28ce80000001000000020002037777770a64616e7370616c656973026e6c0000010001c0100002000100015180000a036e733103686978c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5a0da0ac0450001000100015180000451112ec3 + +27247 +48070000000100000000000003777777156265656c6473636865726d746163686f6772616166026e6c0000010001 +48078000000100000003000103777777156265656c6473636865726d746163686f6772616166026e6c0000010001c0100002000100015180000e026e7308767575727765726bc026c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c058c03a000100010001518000043efa0202 + +27248 +fcfb00000001000000000000037777770c74656c65666f6f6e676964730b7074742d74656c65636f6d026e6c0000010001 +fcfb80000001000000020000037777770c74656c65666f6f6e676964730b7074742d74656c65636f6d026e6c0000010001c01d0002000100015180000d03646e73036b706e03636f6d00c01d0002000100015180000d036e7332036b706e036e657400 + +27249 +0e7e00000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +0e7e80000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +27250 +37e4000000010000000000000a6d61696c6261636b7570096b656e6e69736e6574026e6c0000010001 +37e4800000010000000200020a6d61696c6261636b7570096b656e6e69736e6574026e6c0000010001c01700020001000151800006036e7339c017c0170002000100015180000e036e733207737572666e6574c021c03500010001000151800004c0576a61c04700010001000151800004c0572402 + +27251 +92ff001000010000000000010466646467026e6c0000ff00010000290800000080000000 +92ff800000010000000200030466646467026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c011c00c00020001000151800006036e7331c028c02500010001000151800004504f6101c03f00010001000151800004504f61020000291000000000000000 + +27252 +4490000000010000000000000377777707636f6e74656e74026e6c0000010001 +4490800000010000000200000377777707636f6e74656e74026e6c0000010001c01000020001000151800016046e7330310b63726579667367726f757003636f6d00c01000020001000151800007046e733032c031 + +27253 +e7b400000001000000000000037777770f7065746572732d7465726c696e6465026e6c0000010001 +e7b480000001000000020000037777770f7065746572732d7465726c696e6465026e6c0000010001c0100002000100015180000c026e7306766576696461c020c01000020001000151800006036e7332c037 + +27254 +067e000000010000000000000469632d73026e6c0000010001 +067e800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27255 +a78000000001000000000000037777770a64757463687465656e73026e6c0000010001 +a78080000001000000020001037777770a64757463687465656e73026e6c0000010001c0100002000100015180000a026e7304696d636fc01bc01000020001000151800013036e7332097669727475616c787303636f6d00c02f000100010001518000043e81810a + +27256 +968e000000010000000000000377777703697369027575026e6c0000010001 +968e800000010000000400040377777703697369027575026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000e036e733107737572666e6574c017c01400020001000151800006036e7333c014c02b0001000100015180000483d30405c03c0001000100015180000483d30406c04e00010001000151800004c0576a65c0680001000100015180000483d31020 + +27257 +fa8c00000001000000000000036e7330087a7761616e6e6574026e6c0000010001 +fa8c80000001000000020000036e7330087a7761616e6e6574026e6c0000010001c01000020001000151800010036e7330066361726f7461036e657400c0100002000100015180000b036e7330047065656ec038 + +27258 +35650000000100000000000006636861726973026e6c0000010001 +35658000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27259 +67d40000000100000000000003777777066d6563656876026e6c0000010001 +67d48000000100000002000203777777066d6563656876026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c017c01000020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +27260 +b0c700000001000000000001026e73076e656473746174026e6c00000100010000291000000000000000 +b0c780000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27261 +c8eb000000010000000000000474726161026e6c0000010001 +c8eb800000010000000200000474726161026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c011c00c0002000100015180000704686e7331c02a + +27262 +4d7700000001000000000000036e73320d7072696d656d6572696469616e026e6c0000010001 +4d7780000001000000020002036e73320d7072696d656d6572696469616e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d468cf38c00c00010001000151800004d468cf39 + +27263 +dc360000000100000000000004736b6f73026e6c0000010001 +dc368000000100000002000204736b6f73026e6c0000010001c00c00020001000151800010046e736531086c6f636f736f6674c011c00c0002000100015180000d036e73320663617374656cc011c02500010001000151800004c3238d44c04100010001000151800004c3558245 + +27264 +6f0800000001000000000000037777770b64652d726563657074656e026e6c00001c0001 +6f0880000001000000020002037777770b64652d726563657074656e026e6c00001c0001c01000020001000151800012026e730c696e746572636f6e6e656374c01cc01000020001000151800006036e7332c033c03000010001000151800004d453c005c04e00010001000151800004d453c006 + +27265 +356600000001000000000000026e7306766576696461026e6c0000010001 +356680000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +27266 +44d6000000010000000000000477777731056b6c696b73026e6c0000010001 +44d6800000010000000200000477777731056b6c696b73026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c02e + +27267 +9d6700000001000000000000036e73310c636f6c742d74656c65636f6d026e6c0000010001 +9d6780000001000000020002036e73310c636f6c742d74656c65636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea00dc03f00010001000151800004d44ea00e + +27268 +1bb600000001000000000000036e73320c636f6c742d74656c65636f6d026e6c0000010001 +1bb680000001000000020002036e73320c636f6c742d74656c65636f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03100010001000151800004d44ea00dc00c00010001000151800004d44ea00e + +27269 +86740000000100000000000003777777087067646562727567026e6c0000010001 +86748000000100000002000203777777087067646562727567026e6c0000010001c01000020001000151800010036e733109756e69736572766572c019c01000020001000151800006036e7332c031c02d00010001000151800004c3454b03c04900010001000151800004d119a2fa + +27270 +d774000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +d774840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +27271 +defd00000001000000000000046c756d63026e6c00000f0001 +defd80000001000000030003046c756d63026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000e036e733107737572666e6574c011c025000100010001518000049158d2eac037000100010001518000049158d30ac04900010001000151800004c0576a65 + +27272 +44110000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +44118000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +27273 +14720000000100000000000014736f7a2d70696e6b726f63636164652d686f6d65026e6c00000f0001 +14728000000100000002000214736f7a2d70696e6b726f63636164652d686f6d65026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc021c00c00020001000151800006036e7332c038c03500010001000151800004c26d0642c04d00010001000151800004c26d0963 + +27274 +ee760000000100000000000009776f726c646d61696c026e6c00001c0001 +ee768000000100000003000209776f726c646d61696c026e6c00001c0001c00c0002000100015180000f04616e73310774697363616c69c016c00c0002000100015180000704616e7332c02fc00c0002000100015180001404616e73330a74697363616c696e657402626500c02a00010001000151800004c3f14d38c04500010001000151800004c3f13325 + +27275 +cd790000000100000000000003445256024e4c00001c0001 +cd798000000100000002000203445256024e4c00001c0001c00c00020001000151800010026e730a7a65656c616e646e6574c010c00c00020001000151800006036e7332c027c02400010001000151800004d473c0c1c04000010001000151800004d473c0c3 + +27276 +0d7b0000000100000000000008656e736368656465026e6c0000ff0001 +0d7b8000000100000002000208656e736368656465026e6c0000ff0001c00c0002000100015180000c036e7331057669727475c015c00c00020001000151800006036e7332c02dc02900010001000151800004d9726102c04100010001000151800004d58141c4 + +27277 +8e34000000010000000000000a776f726d65726c616e64026e6c00000f0001 +8e34800000010000000200020a776f726d65726c616e64026e6c00000f0001c00c00020001000151800012036e73310b6f75776568616e642d6974c017c00c00020001000151800006036e7333c02fc02b00010001000151800004d4cccff1c04900010001000151800004d4ccc4b1 + +27278 +b173000000010000000000000773702d706c7573026e6c00000f0001 +b173800000010000000200000773702d706c7573026e6c00000f0001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +27279 +35be0000000100000000000009652d6c756e61746963026e6c0000010001 +35be8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +27280 +8fe2000000010000000000000377777709776f7a6f6e6c696e65026e6c0000010001 +8fe2800000010000000200010377777709776f7a6f6e6c696e65026e6c0000010001c0100002000100015180000a036e7330036d6178c01ac01000020001000151800006036e7331c032c044000100010001518000043ed44447 + +27281 +234000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +234080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +27282 +c222000000010000000000000874656c696e647573026e6c0000ff0001 +c222800000010000000200000874656c696e647573026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +27283 +fd9c00000001000000000000116d616e6167656d656e74737570706f7274026e6c0000010001 +fd9c80000001000000020001116d616e6167656d656e74737570706f7274026e6c0000010001c00c0002000100015180000d026e7307616d6572636f6dc01ec00c00020001000151800006036e7331c035c03200010001000151800004c2b2b20a + +27284 +ae10000000010000000000000966696c6d736f707476056d65746961026e6c0000010001 +ae10800000010000000300030966696c6d736f707476056d65746961026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800006036e7333c016c03000010001000151800004d5ef9902c04200010001000151800004d584d5eac05400010001000151800004d5ef8005 + +27285 +2dcc0000000100000000000009652d6c756e61746963026e6c0000010001 +2dcc8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +27286 +7dab0000000100000000000003777777056574657874026e6c0000010001 +7dab8000000100000002000203777777056574657874026e6c0000010001c0100002000100015180000f026e7309656174736572766572c016c01000020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +27287 +ec9900100001000000000001046e73303903777873026e6c00000100010000290800000000000000 +ec9980000001000000030004046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +27288 +585b00100001000000000001046e73303903777873026e6c00002600010000290800000000000000 +585b80000001000000030004046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +27289 +078900100001000000000001036e733503777873026e6c00000100010000290800000000000000 +078980000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +27290 +6b6000100001000000000001036e733503777873026e6c00002600010000290800000000000000 +6b6080000001000000030004036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +27291 +1afd00100001000000000001046e73303803777873026e6c00000100010000290800000000000000 +1afd80000001000000030004046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +27292 +101700100001000000000001046e73303803777873026e6c00002600010000290800000000000000 +101780000001000000030004046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +27293 +118c00000001000000000000036e73330767617574656e67026e6c0000010001 +118c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27294 +1e2000000001000000000000037777770e6c656964736368646167626c6164026e6c0000010001 +1e2080000001000000030003037777770e6c656964736368646167626c6164026e6c0000010001c0100002000100015180000e076e73617574683103626974c01fc0100002000100015180000a076e736175746832c03bc0100002000100015180000a076e736175746833c03bc03300010001000151800004d5880c33c04d00010001000151800004d5880c3bc06300010001000151800004d4ccc00b + +27295 +c4fd000000010000000000000a61692d686f7374696e67026e6c0000010001 +c4fd800000010000000200020a61692d686f7374696e67026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02b00010001000151800004d584af25c03d000100010001518000043e8311c0 + +27296 +0c7a00000001000000000000146e69657577736272696576656e73657276696365026e6c00000f0001 +0c7a80000001000000030001146e69657577736272696576656e73657276696365026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +27297 +6b5800000001000000000000036e73340468617661026e6c0000010001 +6b5880000001000000030003036e73340468617661026e6c0000010001c0100002000100015180000c036e73310564726f6e65c015c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02900010001000151800004d413ddc2c04100010001000151800004d413ddc6c05300010001000151800004d413ddc7 + +27298 +f4050000000100000000000003647376026e6c00000f0001 +f4058000000100000002000203647376026e6c00000f0001c00c0002000100015180000f036e733108696e7465726d6178c010c00c00020001000151800006036e7332c028c02400010001000151800004505fa002c03f00010001000151800004505fac02 + +27299 +019b00000001000000000000036e73330767617574656e67026e6c0000010001 +019b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27300 +09a000000001000000000000036e73330767617574656e67026e6c0000010001 +09a080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27301 +5e9400000001000000000000026e73076e656473746174026e6c00001c0001 +5e9480000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27302 +fcf000000001000000000000026e73076e656473746174026e6c0000260001 +fcf080000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27303 +d7cf00000001000000000000036e7332076e656473746174026e6c0000010001 +d7cf80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27304 +dd3100000001000000000000036e7332076e656473746174026e6c00001c0001 +dd3180000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27305 +a98e00000001000000000000036e7332076e656473746174026e6c0000260001 +a98e80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27306 +adbc00000001000000000000036e7333076e656473746174026e6c00001c0001 +adbc80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27307 +211200000001000000000000036e7333076e656473746174026e6c0000260001 +211280000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27308 +9f0200000001000000000000036e7334076e656473746174026e6c0000010001 +9f0280000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27309 +6ac600000001000000000000036e7334076e656473746174026e6c00001c0001 +6ac680000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27310 +620800000001000000000000036e7334076e656473746174026e6c0000260001 +620880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27311 +0c9500000001000000000000037777770b6a656b6174726164696e67026e6c0000010001 +0c9580000001000000020000037777770b6a656b6174726164696e67026e6c0000010001c01000020001000151800015036e73350b686f7374696e67776f7278036e657400c01000020001000151800006036e7336c034 + +27312 +017200000001000000000000036e73330767617574656e67026e6c0000010001 +017280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27313 +978700000001000000000000037777770f6c6170746f7077656277696e6b656c026e6c0000010001 +978780000001000000030000037777770f6c6170746f7077656277696e6b656c026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c03ac0100002000100015180000805646e733132c03a + +27314 +8a29000000010000000000001073616e6f6d612d756974676576657273026e6c0000010001 +8a29800000010000000300001073616e6f6d612d756974676576657273026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c035c00c00020001000151800006036e7333c035 + +27315 +bb5400000001000000000000024e53085241424f42414e4b026e6c0000010001 +bb5480000001000000020001024e53085241424f42414e4b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +27316 +61f20000000100000000000005646e732d31056c61646f74026e6c0000010001 +61f28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27317 +b11d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b11d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27318 +217300000001000000000000037777770d7374616174736c6f746572696a026e6c0000010001 +217380000001000000020002037777770d7374616174736c6f746572696a026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01ec01000020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +27319 +a8ea00000001000000000001036e7333076e656473746174026e6c00000100010000291000000000000000 +a8ea80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27320 +b54400000001000000000000037777770976696c6c6163756261026e6c0000010001 +b54480000001000000020002037777770976696c6c6163756261026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c01ac01000020001000151800006036e7332c032c02e00010001000151800004505fa002c04900010001000151800004505fac02 + +27321 +a840000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +a840800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27322 +bbf500000001000000000000037777770a3474756e652d73686f70026e6c00001c0001 +bbf580000001000000020000037777770a3474756e652d73686f70026e6c00001c0001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c032 + +27323 +a50400000001000000000000067765626e6574026e6c00000f0001 +a50480000001000000020002067765626e6574026e6c00000f0001c00c0002000100015180000e036e73310768756d616e2d69c013c00c00020001000151800006036e7332c02bc02700010001000151800004c1ad2884c04100010001000151800004c1ad2886 + +27324 +5e4c00000001000000000000037777770763686970646972026e6c0000010001 +5e4c80000001000000020002037777770763686970646972026e6c0000010001c01000020001000151800014036e73310d706f7765727365727665723138c018c01000020001000151800006036e7332c030c02c0001000100015180000451047111c04c0001000100015180000451047112 + +27325 +7b1a000000010000000000000377777707736d696c657973026e6c0000010001 +7b1a800000010000000200020377777707736d696c657973026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec018c01000020001000151800006036e7332c030c02c00010001000151800004c3b1f203c04a00010001000151800004d4ccf533 + +27326 +3cf80000000100000000000003777777106472756b6b6572696a2d62796b6f7266026e6c0000010001 +3cf88000000100000002000003777777106472756b6b6572696a2d62796b6f7266026e6c0000010001c01000020001000151800018036e73310e7765626d61727463656e7472616c03636f6d00c01000020001000151800006036e7332c039 + +27327 +f21e0000000100000000000008686f73746e616d650462696e640000100003 +f21e8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27328 +5596000000010000000000000c72656164657273686f757365026e6c00000f0001 +5596800000010000000200020c72656164657273686f757365026e6c00000f0001c00c00020001000151800012036e73310b72656e61697373616e6365c019c00c00020001000151800006036e7332c031c02d00010001000151800004d4ccc4efc04b00010001000151800004d4ccc4f0 + +27329 +a0df0000000100000000000008686f73746e616d650462696e640000100003 +a0df8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27330 +6cef000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +6cef800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27331 +e1ec000000010000000000000661656f697573026e6c0000010001 +e1ec800000010000000300030661656f697573026e6c0000010001c00c0002000100015180000b04646e733103766970c013c00c0002000100015180000704646e7332c02cc00c0002000100015180000704646e7333c02cc02700010001000151800004d44fe803c03e00010001000151800004c3f5c782c05100010001000151800004d44ff303 + +27332 +eff5000000010000000000000773747564656e7409494e484f4c4c414e44026e6c0000010001 +eff5800000010000000200020773747564656e7409494e484f4c4c414e44026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c2ab230bc04400010001000151800004c0576a65 + +27333 +69c500000001000000000000037777770763686970646972026e6c0000010001 +69c580000001000000020002037777770763686970646972026e6c0000010001c01000020001000151800014036e73310d706f7765727365727665723138c018c01000020001000151800006036e7332c030c02c0001000100015180000451047111c04c0001000100015180000451047112 + +27334 +30fd000000010000000000000357575707424947424f5353024e4c0000010001 +30fd800000010000000300010357575707424947424f5353024e4c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +27335 +ce3d00000001000000000000036e73330d686f73746e656465726c616e64026e6c0000010001 +ce3d80000001000000030002036e73330d686f73746e656465726c616e64026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +27336 +7fad00000001000000000000036e7336086a726f6e6c696e65026e6c0000010001 +7fad80000001000000020000036e7336086a726f6e6c696e65026e6c0000010001c01000020001000151800014036e73310d686f73746e656465726c616e64c019c01000020001000151800006036e7333c031 + +27337 +3e030010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000080000000 +3e038000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +27338 +99bf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +99bf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27339 +10db000000010000000000000377777706686f72736573026e6c0000010001 +10db800000010000000200020377777706686f72736573026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c017c01000020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +27340 +3e19000000010000000000000376676d026e6c0000010001 +3e19800000010000000200020376676d026e6c0000010001c00c0002000100015180000b026e73056e65726f63c010c00c00020001000151800006036e7332c027c02400010001000151800004d434010ac03b00010001000151800004d434000a + +27341 +0d6c000000010000000000000377777703736475026e6c0000010001 +0d6c800000010000000200020377777703736475026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800013036e73320c636f6c742d74656c65636f6dc014c02800010001000151800004d5d0ce07c03a00010001000151800004d44ea00e + +27342 +5c620000000100000000000003777777106a62672d6265656c642d67656c756964026e6c0000010001 +5c628000000100000002000203777777106a62672d6265656c642d67656c756964026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c021c0100002000100015180001004646e733208636f6e6365707473c021c03500010001000151800004d5c51c03c05200010001000151800004d5c51e1c + +27343 +5db500000001000000000000037777770f6f72616e6a6562616e647a6164656e026e6c0000010001 +5db580000001000000020002037777770f6f72616e6a6562616e647a6164656e026e6c0000010001c0100002000100015180000d03706e7306636f6d6c6f67c020c0100002000100015180000603736e73c038c03400010001000151800004d5a0c803c04d00010001000151800004d5a0c804 + +27344 +8f230000000100000000000004686e73310774697363616c69026e6c0000010001 +8f238000000100000003000204686e73310774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +27345 +f9e400000001000000000000036972630468656c6c026e6c00001c0001 +f9e480000001000000030001036972630468656c6c026e6c00001c0001c0100002000100015180000e026e7308767575727765726bc015c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c047c029000100010001518000043efa0202 + +27346 +96ca00000001000000000000037777770a76696c6c61666c6f6f72026e6c0000010001 +96ca80000001000000020002037777770a76696c6c61666c6f6f72026e6c0000010001c01000020001000151800010036e7331096264726567686f7374c01bc01000020001000151800006036e7332c033c02f00010001000151800004510473a0c04b00010001000151800004510473a1 + +27347 +848a00000001000000000000036e73310b6368616d69646d65646961026e6c0000010001 +848a80000001000000020002036e73310b6368616d69646d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c0453fc03e0001000100015180000452c04540 + +27348 +616600000001000000000000036e73320b6368616d69646d65646961026e6c0000010001 +616680000001000000020002036e73320b6368616d69646d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000452c0453fc00c0001000100015180000452c04540 + +27349 +683d00000001000000000000056a756d626f026e6c0000010001 +683d80000001000000020002056a756d626f026e6c0000010001c00c0002000100015180000c036e733105616b726973c012c00c0002000100015180000e066e6562756c610476627662c012c02600010001000151800004d44837b7c03e00010001000151800004d44837b3 + +27350 +8f1100000001000000000000046e73303903777873026e6c0000010001 +8f1180000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27351 +931f00000001000000000000036e733503777873026e6c0000010001 +931f80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +27352 +263e00000001000000000000046e73303903777873026e6c0000260001 +263e80000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27353 +08a600000001000000000000036e733503777873026e6c0000260001 +08a680000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +27354 +422700000001000000000000046e73303803777873026e6c0000010001 +422780000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27355 +b4a300000001000000000000046e73303803777873026e6c0000260001 +b4a380000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27356 +09b900000001000000000000036e733105616b726973026e6c00001c0001 +09b980000001000000020002036e733105616b726973026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e066e6562756c610476627662c016c00c00010001000151800004d44837b7c03800010001000151800004d44837b3 + +27357 +1c1900000001000000000000076f6e6c796f6e65026e6c0000010001 +1c1980000001000000020000076f6e6c796f6e65026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +27358 +3a7200000001000000000000046c6f76650f7a7676636f6c6c6576657268757572026e6c0000010001 +3a7280000001000000020002046c6f76650f7a7676636f6c6c6576657268757572026e6c0000010001c01100020001000151800012036e73310b676c6f62616c666f726365c021c01100020001000151800006036e7332c039c035000100010001518000045117ed67c053000100010001518000045117ed12 + +27359 +2288000000010000000000000865787472616e657406636165736172026e6c0000010001 +2288800000010000000200010865787472616e657406636165736172026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000b026e73026e6c036e657400c03000010001000151800004c14fb8d8 + +27360 +0fbb000000010000000000000b6e6f6f7264657262727567026e6c0000010001 +0fbb800000010000000300010b6e6f6f7264657262727567026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +27361 +4d8d0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +4d8d8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27362 +a024000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +a024800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27363 +778a000000010000000000000e616d7374657264616d706f727473026e6c0000010001 +778a800000010000000300030e616d7374657264616d706f727473026e6c0000010001c00c0002000100015180000e036e73310761737034616c6cc01bc00c00020001000151800006036e7332c033c00c00020001000151800006036e7333c033c02f00010001000151800004c1adf9c3c049000100010001518000043e70ec3cc05b00010001000151800004c1ac0bae + +27364 +4527000000010000000000000237340239340234350236380a626c61636b686f6c657307656173796e6574026e6c0000010001 +4527800000010000000200020237340239340234350236380a626c61636b686f6c657307656173796e6574026e6c0000010001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +27365 +722900000001000000000000046d61696c096475746368686f7374026e6c0000010001 +722980000001000000020001046d61696c096475746368686f7374026e6c0000010001c0110002000100015180000b0861737465726f7065c011c0110002000100015180000c036e733205786c722d38c01bc02f00010001000151800004d58523d2 + +27366 +303f000000010000000000000377777707766f6c64657273026e6c0000010001 +303f800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +27367 +610900000001000000000000036674700c7665727a616d656c67696473026e6c0000010001 +610980000001000000020000036674700c7665727a616d656c67696473026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +27368 +d8c90000000100000000000003777777137665726b656572737363686f6f6c7765766572026e6c0000010001 +d8c98000000100000002000203777777137665726b656572737363686f6f6c7765766572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc024c01000020001000151800006036e7332c03bc03800010001000151800004c26d0642c05000010001000151800004c26d0963 + +27369 +001300000001000000000000036e733103757063026e6c0000010001 +001380000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +27370 +0fcf00000001000000000000037777771167656e696574656e76616e74696574656e026e6c0000010001 +0fcf80000001000000030002037777771167656e696574656e76616e74696574656e026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c022c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c03ac036000100010001518000045054e055c06f00010001000151800004d4ccc655 + +27371 +33af00000001000000000000026e7307696e746f756368026e6c0000010001 +33af80000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +27372 +01c000000001000000000000036e73330767617574656e67026e6c0000010001 +01c080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27373 +3b7b00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +3b7b80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27374 +48f500000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +48f580000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27375 +7c5a00000001000000000000096368616c6c656e6765026e6c00000f0001 +7c5a80000001000000030002096368616c6c656e6765026e6c00000f0001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +27376 +3b400000000100000000000003777777126b6c76616e616c6c6573656e6e6f67776174026e6c0000010001 +3b408403000100000001000003777777126b6c76616e616c6c6573656e6e6f67776174026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +27377 +916f00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +916f80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27378 +083400000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c00001c0001 +083480000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27379 +159800000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000260001 +159880000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27380 +0c5c00100001000000000000037777770b626f6e6172666c6f6f7273026e6c0000010001 +0c5c80000001000000030000037777770b626f6e6172666c6f6f7273026e6c0000010001c01000020001000151800016026e730b73696d706c796e616d657302636f02756b00c01000020001000151800006036e7332c033c01000020001000151800006036e7333c033 + +27381 +7bfb00000001000000000000037777770c68737664656e68656c646572026e6c0000010001 +7bfb80000001000000020002037777770c68737664656e68656c646572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01dc01000020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +27382 +837900000001000000000000037777770d76616e68616172656e6d6f6465026e6c0000010001 +837980000001000000020000037777770d76616e68616172656e6d6f6465026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c038 + +27383 +f36300000001000000000000046d61696c0873746567656d616e026e6c0000010001 +f36380000001000000020002046d61696c0873746567656d616e026e6c0000010001c0110002000100015180000a036e733103746d6ec01ac01100020001000151800006036e7332c032c02e00010001000151800004d5a0d8fac04400010001000151800004d5a0d9fa + +27384 +e41c0000000100000000000007737570706f72740e656e67656c73656272696576656e026e6c0000010001 +e41c8403000100000001000007737570706f72740e656e67656c73656272696576656e026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +27385 +f03a000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +f03a800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27386 +1413000000010000000000000377777709646f73616c7068656e026e6c0000010001 +1413840300010000000100000377777709646f73616c7068656e026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +27387 +e8f300000001000000000000036e733203687675026e6c0000010001 +e8f380000001000000030003036e733203687675026e6c0000010001c0100002000100015180000906776174736f6ec010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc0280001000100015180000491592603c03d00010001000151800004c0576a65c00c0001000100015180000491595303 + +27388 +8a3d00000001000000000000036e733203687675026e6c0000260001 +8a3d80000001000000030003036e733203687675026e6c0000260001c0100002000100015180000906776174736f6ec010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc0280001000100015180000491592603c03d00010001000151800004c0576a65c00c0001000100015180000491595303 + +27389 +e9fe000000010000000000000377777709646f73616c7068656e026e6c0000010001 +e9fe840300010000000100000377777709646f73616c7068656e026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +27390 +805700000001000000000000037777770a7365786163636f756e74026e6c0000010001 +805780000001000000020002037777770a7365786163636f756e74026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01bc01000020001000151800006036e7332c033c02f0001000100015180000452c04516c04c0001000100015180000452c04542 + +27391 +8f9200000001000000000000046a617a7a026e6c00000f0001 +8f9280000001000000020000046a617a7a026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c028 + +27392 +d2050000000100000000000004706f703308686f737468696572026e6c0000010001 +d2058000000100000002000204706f703308686f737468696572026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02e00010001000151800004d5efb51fc03f00010001000151800004d5efb520 + +27393 +c6060000000100000000000004706f703308686f737468696572026e6c0000010001 +c6068000000100000002000204706f703308686f737468696572026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02e00010001000151800004d5efb51fc03f00010001000151800004d5efb520 + +27394 +eea900000001000000000000037777770377786e026e6c0000010001 +eea980000001000000020002037777770377786e026e6c0000010001c0100002000100015180000c026e7306636f6d6e6574c014c01000020001000151800006036e7332c02bc02800010001000151800004d46c106ec04000010001000151800004d46c1078 + +27395 +b0c700000001000000000000026e73076e656473746174026e6c0000010001 +b0c780000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27396 +ca5400000001000000000000037777770c74696e6b65726e69636b656c026e6c0000010001 +ca5480000001000000020000037777770c74696e6b65726e69636b656c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +27397 +f80c00000001000000000000036e733205786c722d38026e6c0000010001 +f80c80000001000000020002036e733205786c722d38026e6c0000010001c01000020001000151800009036e7331026973c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +27398 +55e0000000010000000000000377777704766b6574026e6c0000010001 +55e0800000010000000200020377777704766b6574026e6c0000010001c0100002000100015180000f026e7309656174736572766572c015c01000020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +27399 +16a000000001000000000000026e73076e656473746174026e6c0000010001 +16a080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27400 +857a00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +857a80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +27401 +9e230000000100000000000005706f6d617a026e6c00000f0001 +9e238000000100000002000005706f6d617a026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c02b + +27402 +e02c0000000100000000000009696e686f6c6c616e64026e6c0000010001 +e02c8000000100000002000209696e686f6c6c616e64026e6c0000010001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +27403 +f863000000010000000000000377777706636f6d706171026e6c0000010001 +f863800000010000000200000377777706636f6d706171026e6c0000010001c0100002000100015180001c0a6e73312d7075626c6963047a72656f06636f6d70617103636f6d00c0100002000100015180000d0a6e73322d7075626c6963c036 + +27404 +2b4c000000010000000000000377777708726164696f33666d026e6c0000010001 +2b4c800000010000000300030377777708726164696f33666d026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +27405 +8e780000000100000000000005636d7330320769736973776562026e6c0000010001 +8e788000000100000003000305636d7330320769736973776562026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7334c012c02e00010001000151800004d4ccca65c04000010001000151800004510440dec05200010001000151800004510440fa + +27406 +33d400000001000000000000037777770f6d61726e697867796d6e617369756d026e6c0000010001 +33d480000001000000020000037777770f6d61726e697867796d6e617369756d026e6c0000010001c01000020001000151800017026e7309726f7474657264616d046c756e61036e657400c0100002000100015180000f026e7309686f6f6664646f7270c041 + +27407 +1a9b000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +1a9b800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +27408 +1a9c000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +1a9c800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +27409 +7daa0000000100000000000003777777076b696e74656e74026e6c0000010001 +7daa8000000100000002000003777777076b696e74656e74026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c032 + +27410 +abee0000000100000000000008626f6765726d616e026e6c00000f0001 +abee8000000100000002000208626f6765726d616e026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +27411 +21f000000001000000000000037777770773717561726531026e6c0000010001 +21f080000001000000020001037777770773717561726531026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02c000100010001518000043eb1b48a + +27412 +203900000001000000000000037777770361666b026e6c0000010001 +203980000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27413 +00cd00000001000000000000036e657403686363026e6c0000ff0001 +00cd80000001000000020000036e657403686363026e6c0000ff0001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +27414 +34a10000000100000000000009736f6e6572616d6169026e6c00000f0001 +34a18403000100000001000009736f6e6572616d6169026e6c00000f0001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +27415 +5b2f083d50040000c2170000000000000000 +5b2f88340000000000000000 + +27416 +11cc00000001000000000000036e73330767617574656e67026e6c0000010001 +11cc80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27417 +208400000001000000000000037777770f6472696e6b656e656e64616e73656e026e6c0000010001 +208480000001000000020002037777770f6472696e6b656e656e64616e73656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +27418 +8e8600000001000000000000036e7332076e656473746174026e6c0000010001 +8e8680000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27419 +8e8700000001000000000000036e7334076e656473746174026e6c0000010001 +8e8780000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27420 +3ec500000001000000000000037777770a7765726b74756967656e026e6c0000010001 +3ec580000001000000020002037777770a7765726b74756967656e026e6c0000010001c0100002000100015180000a036e733103686978c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5a0da0ac0450001000100015180000451112ec3 + +27421 +b28000100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +b28080000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27422 +6ccf00100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +6ccf80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27423 +0c3b000000010000000000000674726176656c0765787065646961026e6c00000f0001 +0c3b800000010000000200000674726176656c0765787065646961026e6c00000f0001c013000200010001518000140570646e733108726567697374657203636f6d00c013000200010001518000080570646e7332c035 + +27424 +51ae0000000100000000000005796d657265026e6c0000ff0001 +51ae8000000100000002000205796d657265026e6c0000ff0001c00c00020001000151800011026e730b666163696e676661637473c012c00c00020001000151800006036e7332c029c02600010001000151800004d513b013c04300010001000151800004d513b012 + +27425 +6c1e00000001000000000000056e6c6c6767026e6c00000f0001 +6c1e80000001000000020002056e6c6c6767026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +27426 +c41000000001000000000000026e73076e656473746174026e6c0000010001 +c41080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27427 +9b3e00000001000000000000056e667573650b6d696e6f6c74612d716d73026e6c0000010001 +9b3e80000001000000020000056e667573650b6d696e6f6c74612d716d73026e6c0000010001c01200020001000151800012036e7331086e65746e616d6573036e657400c01200020001000151800006036e7332c036 + +27428 +afd8000000010000000000000867746167616d6573026e6c0000010001 +afd8800000010000000200000867746167616d6573026e6c0000010001c00c00020001000151800014036e73310a646f776e6c6f6164656e03636f6d00c00c0002000100015180001a036e733211636173686d6f6e657962726f746865727302626500 + +27429 +27cf000000010000000000000776616e6b656570026e6c0000010001 +27cf800000010000000200020776616e6b656570026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +27430 +620800000001000000000000036e7333076e656473746174026e6c0000010001 +620880000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27431 +e7a700000001000000000000037777770a696e7465727374617473026e6c0000010001 +e7a780000001000000020000037777770a696e7465727374617473026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +27432 +b3450010000100000000000106485342444e5309485342524142414e54026e6c00000100010000290800000080000000 +b3458000000100000002000306485342444e5309485342524142414e54026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004913001fac03f00010001000151800004c0576a650000291000000000000000 + +27433 +4ab9000000010000000000000a6563687465726e616368026e6c00000f0001 +4ab9800000010000000200000a6563687465726e616368026e6c00000f0001c00c0002000100015180001104726171390662697a6e697a036e657400c00c00020001000151800008057261713134c030 + +27434 +d3cd0000000100000000000003777777076e6f7661736f6c026e6c0000010001 +d3cd8000000100000002000003777777076e6f7661736f6c026e6c0000010001c010000200010001518000130761757468323030026e73027575036e657400c0100002000100015180000a0761757468323130c034 + +27435 +c7f20000000100000000000003637532026e6c0000010001 +c7f28000000100000002000203637532026e6c0000010001c00c00020001000151800012036e73310b6d6564696164657369676ec010c00c00020001000151800006036e7332c028c02400010001000151800004c3b1f203c04200010001000151800004d4ccf533 + +27436 +a2ec000000010000000000000377777708676f6f6434796f75026e6c0000010001 +a2ec800000010000000200020377777708676f6f6434796f75026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d994ae77c04b000100010001518000045054ea06 + +27437 +0e5b000000010000000000000a66756e6e7967616d6573026e6c00000f0001 +0e5b800000010000000200000a66756e6e7967616d6573026e6c00000f0001c00c00020001000151800014046e733031096772616669782d697303636f6d00c00c00020001000151800007046e733033c030 + +27438 +0e3000000001000000000000037777770b726164696f73616e67616d026e6c0000010001 +0e3080000001000000020000037777770b726164696f73616e67616d026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c034 + +27439 +37b600000001000000000000036e73310b706c7573686f7374696e67026e6c0000010001 +37b680000001000000020002036e73310b706c7573686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d994ae77c03e000100010001518000045054ea06 + +27440 +c98f00000001000000000000036e73320b706c7573686f7374696e67026e6c0000010001 +c98f80000001000000020002036e73320b706c7573686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d994ae77c00c000100010001518000045054ea06 + +27441 +8c690000000100000000000003777777046476686e026e6c0000010001 +8c698000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +27442 +8e4b000000010000000000000377777709746570656c6b6c656d026e6c0000010001 +8e4b800000010000000300020377777709746570656c6b6c656d026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +27443 +a8ea00000001000000000000036e7333076e656473746174026e6c0000010001 +a8ea80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27444 +4ef500000001000000000000037777770b6d61726b74706c61617473026e6c0000010001 +4ef580000001000000020000037777770b6d61726b74706c61617473026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c034 + +27445 +e68e00000001000000000000037777770867736d706c617a61026e6c0000010001 +e68e80000001000000020000037777770867736d706c617a61026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +27446 +d67600000001000000000000037777770e73616c6573636f6d70616e696f6e026e6c0000010001 +d67680000001000000020002037777770e73616c6573636f6d70616e696f6e026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c01fc01000020001000151800006036e7332c036c03300010001000151800004d5e38d0ac05000010001000151800004d5e38205 + +27447 +fcf90000000100000000000003777777026e6e026e6c0000010001 +fcf98000000100000002000203777777026e6e026e6c0000010001c0100002000100015180000a036e733103696e67c013c01000020001000151800006036e7332c02bc0270001000100015180000491dd19c2c03d0001000100015180000491dd5dc2 + +27448 +4e4d00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +4e4d80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27449 +9ec700100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +9ec780000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27450 +892e00000001000000000000046d61696c06636861726973026e6c0000010001 +892e80000001000000020000046d61696c06636861726973026e6c0000010001c0110002000100015180000c026e7306766576696461c018c01100020001000151800006036e7332c02f + +27451 +e80a00000001000000000001034e53320f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +e80a80000001000000030003034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +27452 +6e4600000001000000000001034e53350f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +6e4680000001000000030003034e53350f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +27453 +fdc500000001000000000001024e530f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +fdc580000001000000030003024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a650000291000000000000000 + +27454 +898e00000001000000000000026e73076e656473746174026e6c0000010001 +898e80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27455 +000628000001000200000000026e6c00000600010a636f6d70757465723138056e70696276026e6c00000500fe000000000000c01400010001000000000004c0a80117 +0006a8040000000000000000 + +27456 +e26d00000001000000000000036e7333076e656473746174026e6c0000010001 +e26d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27457 +bffc0000000100000000000006485342444e5309485342524142414e54026e6c0000010001 +bffc8000000100000002000206485342444e5309485342524142414e54026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004913001fac03f00010001000151800004c0576a65 + +27458 +823c00000001000000000000036e733204686f6d65026e6c0000010001 +823c80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +27459 +155f00000001000000000000036e733107626c7565646e73026e6c0000010001 +155f80000001000000020002036e733107626c7565646e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c401c0c03a00010001000151800004d5c4035a + +27460 +f57600000001000000000000037777770b73696b6b656d6134616c6c026e6c0000010001 +f57680000001000000020002037777770b73696b6b656d6134616c6c026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c01cc01000020001000151800006036e7332c034c03000010001000151800004d5c9e8c8c05000010001000151800004d5c9e8c9 + +27461 +3b45000000010000000000000863686970736f6674026e6c00000f0001 +3b45800000010000000300010863686970736f6674026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000d036e733006697061726978c015c00c00020001000151800006036e7331c03fc02900010001000151800004d443a509 + +27462 +e27b00000001000000000000026e730c6d65676170726f7669646572026e6c0000010001 +e27b80000001000000030003026e730c6d65676170726f7669646572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +27463 +d43b00000001000000000000026e730c6d65676170726f7669646572026e6c00001c0001 +d43b80000001000000030003026e730c6d65676170726f7669646572026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +27464 +99bf00000001000000000000036e73320c6d65676170726f7669646572026e6c0000010001 +99bf80000001000000030003036e73320c6d65676170726f7669646572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0310001000100015180000450474002c00c0001000100015180000450474102c05000010001000151800004d943ee57 + +27465 +8fce00000001000000000000036e73320c6d65676170726f7669646572026e6c00001c0001 +8fce80000001000000030003036e73320c6d65676170726f7669646572026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0310001000100015180000450474002c00c0001000100015180000450474102c05000010001000151800004d943ee57 + +27466 +1740000000010000000000000377777708706f737462616e6b026e6c0000010001 +1740800000010000000200020377777708706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +27467 +c918000000010000000000000f646f6d61696e2d7265676973747279026e6c0000010001 +c918800000010000000300020f646f6d61696e2d7265676973747279026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c01cc00c0002000100015180000b026e73026e6c036e657400c03000010001000151800004c1b09002c04100010001000151800004c0576a65 + +27468 +d0e200000001000000000000036e733109666972737466696e64026e6c0000010001 +d0e280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27469 +d0e300000001000000000000036e733209666972737466696e64026e6c0000010001 +d0e380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27470 +48d8000000010000000000000377777709736563757374726970026e6c0000010001 +48d8800000010000000200000377777709736563757374726970026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c031 + +27471 +6e8100000001000000000000036e7332056d61786573026e6c0000010001 +6e8180000001000000030003036e7332056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +27472 +365e00000001000000000000036e7331056d61786573026e6c0000010001 +365e80000001000000030003036e7331056d61786573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +27473 +fbd500000001000000000000036e7333056d61786573026e6c0000010001 +fbd580000001000000030003036e7333056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +27474 +b220000000010000000000000d6261736973656e62656c656964026e6c00000f0001 +b220800000010000000300010d6261736973656e62656c656964026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c01ac00c00020001000151800010026e7307696e746f756368036e657400c00c00020001000151800007046e733031c04ac02e00010001000151800004d413c001 + +27475 +ce1500000001000000000000036e7331026973026e6c0000010001 +ce1580000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +27476 +f7d600000001000000000000037777770d70656c6173747573746f696d69036e657408656d6561636f7265026e6c0000010001 +f7d684030001000000010000037777770d70656c6173747573746f696d69036e657408656d6561636f7265026e6c0000010001c02b00060001000038400036026e730f646f6d61696e2d7265676973747279c02b0a686f73746d6173746572c0420bf1e540000070800000384000278d0000003840 + +27477 +9ff600000001000000000000036e7332026973026e6c0000010001 +9ff680000001000000020002036e7332026973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5852102c00c00010001000151800004d5c41503 + +27478 +1c2000000001000000000000096e6f6f726473746164026e6c00000f0001 +1c2080000001000000020002096e6f6f726473746164026e6c00000f0001c00c00020001000151800010036e733109756e69736572766572c016c00c00020001000151800006036e7332c02ec02a00010001000151800004c3454b03c04600010001000151800004d119a2fa + +27479 +09e000000001000000000000036e73330767617574656e67026e6c0000010001 +09e080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27480 +21ee00000001000000000000036e73330767617574656e67026e6c0000010001 +21ee80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27481 +b7e70000000100000000000009736368726575646572026e6c00000f0001 +b7e78000000100000002000009736368726575646572026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c016c00c0002000100015180000704686e7331c02f + +27482 +f7680000000100000000000003494e44064d494e4a5553024e4c00001c0001 +f7688000000100000002000003494e44064d494e4a5553024e4c00001c0001c01000020001000151800011036e736a0365736e036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +27483 +c0550000000100000000000005666f72756d0a636c7562636861727473026e6c0000010001 +c0558000000100000002000205666f72756d0a636c7562636861727473026e6c0000010001c0120002000100015180000a036e7331036e7873c01dc01200020001000151800006036e7332c035c03100010001000151800004d973c015c04700010001000151800004d973c102 + +27484 +36000000000100000000000009652d6c756e61746963026e6c0000010001 +36008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +27485 +d0e600000001000000000000036e733209666972737466696e64026e6c0000010001 +d0e680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27486 +d0e500000001000000000000036e733109666972737466696e64026e6c0000010001 +d0e580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27487 +29f200000001000000000000036e73340767617574656e67026e6c0000010001 +29f280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27488 +09fe00000001000000000000036e73340767617574656e67026e6c0000010001 +09fe80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27489 +f96c00000001000000000000076c7569736d616e036a7668026e6c00000f0001 +f96c80000001000000020002076c7569736d616e036a7668026e6c00000f0001c01400020001000151800012036e73310b7669616e6574776f726b73c018c01400020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +27490 +e80a00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000010001 +e80a80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27491 +6e4600000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000010001 +6e4680000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27492 +fdc500000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000010001 +fdc580000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27493 +1d82000000010000000000000361636b026e6c0000010001 +1d82800000010000000200020361636b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +27494 +0ded00000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +0ded80000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +27495 +d36400000001000000000000026e7306787334616c6c026e6c0000010001 +d36480000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +27496 +ba7e00000001000000000000036e733109756e69736f75726365026e6c0000010001 +ba7e80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +27497 +2edb00000001000000000000036e733206787334616c6c026e6c0000010001 +2edb80000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +27498 +b0af00000001000000000000037777770961756469666f72756d026e6c0000010001 +b0af80000001000000020000037777770961756469666f72756d026e6c0000010001c01000020001000151800013026e730a636c617373696377656203636f6d00c01000020001000151800006036e7332c031 + +27499 +c29000000001000000000000037777770f6c6170746f7077656277696e6b656c026e6c0000010001 +c29080000001000000030000037777770f6c6170746f7077656277696e6b656c026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c03ac0100002000100015180000805646e733132c03a + +27500 +c011000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +c011800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +27501 +eada000000010000000000000377777707706974626f7264026e6c0000010001 +eada800000010000000300000377777707706974626f7264026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c031c01000020001000151800007046e733033c031 + +27502 +974b00000001000000000000046e733032066368656c6c6f026e6c0000010001 +974b80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +27503 +e4c90000000100000000000006636861726973026e6c00000f0001 +e4c98000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27504 +d586000000010000000000000c6d63636e656465726c616e64026e6c0000ff0001 +d586800000010000000300030c6d63636e656465726c616e64026e6c0000ff0001c00c00020001000151800010036e733109736974656279746573c019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d00010001000151800004c2a55e5ac04900010001000151800004c356781cc05b000100010001518000043ec58016 + +27505 +d4f600000001000000000000096d61696c72656c6179066e6c74726565026e6c0000010001 +d4f680000001000000020002096d61696c72656c6179066e6c74726565026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03100010001000151800004d4b20403c04300010001000151800004d5881e45 + +27506 +90730000000100000000000005646e732d31056c61646f74026e6c0000010001 +90738000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27507 +3eea0000000100000000000005646e732d32056c61646f74026e6c0000010001 +3eea8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27508 +dd55000000010000000000000462617261026e6c00000f0001 +dd55800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +27509 +e16700000001000000000000037777770a63642d7569746c65656e026e6c0000010001 +e16780000001000000020002037777770a63642d7569746c65656e026e6c0000010001c0100002000100015180000e036e7331076f6d732d6e6574c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efb22fc04900010001000151800004d5ef9d07 + +27510 +bf9b00000001000000000000037777770d6765696c652d7469656e657273026e6c0000010001 +bf9b80000001000000020000037777770d6765696c652d7469656e657273026e6c0000010001c01000020001000151800019026e73106575726f6d656469617472616666696303636f6d00c01000020001000151800006036e7332c035 + +27511 +3592000000010000000000000469632d73026e6c00001c0001 +3592800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27512 +43ef000000010000000000000776657273696f6e0462696e640000100003 +43ef800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +27513 +a3c00000000100000000000003777777136b616465747467736974756e696e67636c7562026e6c0000010001 +a3c08000000100000003000003777777136b616465747467736974756e696e67636c7562026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c03ec0100002000100015180000805646e733132c03e + +27514 +74e80000000100000000000005646e732d31056c61646f74026e6c0000010001 +74e88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27515 +c07d0000000100000000000003504f5006417274696361026e6c0000010001 +c07d8000000100000002000203504f5006417274696361026e6c0000010001c01000020001000151800012036e73310b696e7465727374726f6f6dc017c01000020001000151800006036e7332c02fc02b0001000100015180000450558121c04900010001000151800004d58141c4 + +27516 +18b50000000100000000000005756c656164026e6c00000f0001 +18b58000000100000003000305756c656164026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c012c00c000200010001518000070470726932c02bc00c000200010001518000070470726933c02bc026000100010001518000049a0ff9a6c044000100010001518000049a0ff9aac057000100010001518000049a0ff9ae + +27517 +4e8600000001000000000000036e73310a636c75737465726e6574026e6c0000010001 +4e8680000001000000020002036e73310a636c75737465726e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054edf5c03d00010001000151800004d5f72f3c + +27518 +203900000001000000000000037777770361666b026e6c0000010001 +203980000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27519 +f16300000001000000000000086168636272616e640564656d6f6e026e6c00000f0001 +f16380000001000000030002086168636272616e640564656d6f6e026e6c00000f0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +27520 +46ab0000000100000000000005646e732d31056c61646f74026e6c0000010001 +46ab8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27521 +203900000001000000000000037777770361666b026e6c0000010001 +203980000001000000030002037777770361666b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c014c01000020001000151800006036e7332c02cc01000020001000151800012036e7333086c65617365776562036f726700c028000100010001518000043ed44079c043000100010001518000043ed4407a + +27522 +eda7000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +eda7800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27523 +abd300000001000000000000037777770a696e7465726e65746a65026e6c0000010001 +abd380000001000000030003037777770a696e7465726e65746a65026e6c0000010001c01000020001000151800010036e733109736974656279746573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004c2a55e5ac04b00010001000151800004c356781cc05d000100010001518000043ec58016 + +27524 +2e0700000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +2e0780000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27525 +66fa00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +66fa80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27526 +979200000001000000000000037777770d6765696c652d7469656e657273026e6c0000010001 +979280000001000000020000037777770d6765696c652d7469656e657273026e6c0000010001c01000020001000151800019026e73106575726f6d656469617472616666696303636f6d00c01000020001000151800006036e7332c035 + +27527 +800500000001000000000001026e73076e656473746174026e6c00001c00010000291000000000000000 +800580000001000000020003026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27528 +004b000000010000000000000969742d6265616b656e026e6c0000ff0001 +004b800000010000000300020969742d6265616b656e026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +27529 +804000000001000000000001026e73076e656473746174026e6c00002600010000291000000000000000 +804080000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27530 +af2200000001000000000001036e7332076e656473746174026e6c00000100010000291000000000000000 +af2280000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27531 +175100000001000000000001036e7332076e656473746174026e6c00001c00010000291000000000000000 +175180000001000000020003036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27532 +379d00000001000000000000036d636f026e6c0000010001 +379d80000001000000020000036d636f026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c010c00c0002000100015180000704686e7331c029 + +27533 +2b8500000001000000000001036e7332076e656473746174026e6c00002600010000291000000000000000 +2b8580000001000000020003036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27534 +0a1b00000001000000000001036e7333076e656473746174026e6c00001c00010000291000000000000000 +0a1b80000001000000020003036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27535 +b2fc00000001000000000001036e7333076e656473746174026e6c00002600010000291000000000000000 +b2fc80000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27536 +680500000001000000000001036e7334076e656473746174026e6c00000100010000291000000000000000 +680580000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27537 +489200000001000000000001036e7334076e656473746174026e6c00001c00010000291000000000000000 +489280000001000000020003036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27538 +ba6500000001000000000001036e7334076e656473746174026e6c00002600010000291000000000000000 +ba6580000001000000020003036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +27539 +788100000001000000000000036e73310f6578636c757369766564657369676e026e6c00001c0001 +788180000001000000020002036e73310f6578636c757369766564657369676e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d97261bec04200010001000151800004d97261bd + +27540 +60a800000001000000000000036e73320f6578636c757369766564657369676e026e6c00001c0001 +60a880000001000000020002036e73320f6578636c757369766564657369676e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03400010001000151800004d97261bec00c00010001000151800004d97261bd + +27541 +28ce00100001000000000001036e733304686f6d65026e6c00001c00010000291000000080000000 +28ce80000001000000030004036e733304686f6d65026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +27542 +800500000001000000000000026e73076e656473746174026e6c00001c0001 +800580000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27543 +ca3300000001000000000000037777770c7376736368616c6b68616172026e6c0000010001 +ca3380000001000000020002037777770c7376736368616c6b68616172026e6c0000010001c01000020001000151800017036e7331107365637572656e616d65736572766572c01dc01000020001000151800006036e7332c035c0310001000100015180000442a4f102c0540001000100015180000442a4f105 + +27544 +ca0900000001000000000000127072656e6765726d616b656c61617264696a026e6c0000010001 +ca0980000001000000020000127072656e6765726d616b656c61617264696a026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03e + +27545 +804000000001000000000000026e73076e656473746174026e6c0000260001 +804080000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27546 +af2200000001000000000000036e7332076e656473746174026e6c0000010001 +af2280000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27547 +41e200000001000000000000076e75616e636573026e6c0000ff0001 +41e280000001000000020002076e75616e636573026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +27548 +175100000001000000000000036e7332076e656473746174026e6c00001c0001 +175180000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27549 +771100000001000000000000036e73310c706f77657273657276657232026e6c0000010001 +771180000001000000020002036e73310c706f77657273657276657232026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047414c03f0001000100015180000451047415 + +27550 +2f0200000001000000000000036e73320c706f77657273657276657232026e6c0000010001 +2f0280000001000000020002036e73320c706f77657273657276657232026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000451047414c00c0001000100015180000451047415 + +27551 +2b8500000001000000000000036e7332076e656473746174026e6c0000260001 +2b8580000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27552 +0a1b00000001000000000000036e7333076e656473746174026e6c00001c0001 +0a1b80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27553 +b2fc00000001000000000000036e7333076e656473746174026e6c0000260001 +b2fc80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27554 +7992000000010000000000000d6175746f74656c656772616166026e6c0000010001 +7992800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +27555 +680500000001000000000000036e7334076e656473746174026e6c0000010001 +680580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27556 +489200000001000000000000036e7334076e656473746174026e6c00001c0001 +489280000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27557 +ba6500000001000000000000036e7334076e656473746174026e6c0000260001 +ba6580000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27558 +38840000000100000000000003777777126b6c76616e616c6c6573656e6e6f67776174026e6c0000010001 +38848403000100000001000003777777126b6c76616e616c6c6573656e6e6f67776174026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +27559 +cb85000000010000000000000377777704616e7366026e6c0000010001 +cb85800000010000000200000377777704616e7366026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c02f + +27560 +ecd700000001000000000000037777770a6465636f726174696566026e6c0000010001 +ecd780000001000000020000037777770a6465636f726174696566026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c034 + +27561 +dc97000000010000000000000377777706736d69746873026e6c0000010001 +dc97800000010000000200000377777706736d69746873026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c031 + +27562 +acc7000000010000000000000968656e7362726f656b026e6c00000f0001 +acc7800000010000000200020968656e7362726f656b026e6c00000f0001c00c00020001000151800013036e73310c666173747365727665723131c016c00c00020001000151800006036e7332c02ec02a0001000100015180000442a4f077c0490001000100015180000442a4f078 + +27563 +a74600000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +a74680000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +27564 +53a300000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +53a380000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +27565 +94e700000001000000000000037777770a626c7565736c696e6b73026e6c0000010001 +94e780000001000000020002037777770a626c7565736c696e6b73026e6c0000010001c0100002000100015180000a026e730469636d63c01bc01000020001000151800006036e7332c032c02f000100010001518000043e643805c045000100010001518000043e643806 + +27566 +62e70000000100000000000003777777056173696373026e6c0000010001 +62e78000000100000002000003777777056173696373026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c030 + +27567 +281200000001000000000000036164730a686f73746d6173746572026e6c0000010001 +281280000001000000020002036164730a686f73746d6173746572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f0001000100015180000452c04516c0410001000100015180000452c04542 + +27568 +0943000000010000000000000c766470757474656e76657266026e6c0000010001 +0943800000010000000200020c766470757474656e76657266026e6c0000010001c00c0002000100015180000e036e733107686f7477697265c019c00c00020001000151800006036e7332c031c02d0001000100015180000451044b03c0470001000100015180000451044bc8 + +27569 +d7e600000001000000000000087469736361736c69026e6c00000f0001 +d7e684030001000000010000087469736361736c69026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +27570 +f92a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f92a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27571 +7e650000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +7e658000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27572 +a840000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +a840800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27573 +b0bd00000001000000000000046e61646f026e6c00000f0001 +b0bd80000001000000020001046e61646f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +27574 +54b400000001000000000000037777770d7661646572746a652d74696a64026e6c0000010001 +54b480000001000000020000037777770d7661646572746a652d74696a64026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c038 + +27575 +68ae00000001000000000000037777770c74696e6b65726e69636b656c026e6c0000010001 +68ae80000001000000020000037777770c74696e6b65726e69636b656c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +27576 +6cef000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +6cef800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27577 +b7de0000000100000000000005736d7470310874656c6562797465026e6c0000010001 +b7de8000000100000002000205736d7470310874656c6562797465026e6c0000010001c01200020001000151800006036e7333c012c01200020001000151800006036e7334c012c02f00010001000151800004d5d38115c04100010001000151800004d5d38116 + +27578 +318b00000001000000000000086c69766577656c6c026e6c00000f0001 +318b80000001000000020000086c69766577656c6c026e6c00000f0001c00c0002000100015180000e05646e732d31056c61646f74c015c00c0002000100015180000805646e732d32c02f + +27579 +ab6400000001000000000000026e7306766576696461026e6c0000010001 +ab6480000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +27580 +58ef00000001000000000000036e733206766576696461026e6c0000010001 +58ef80000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +27581 +dad100000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +dad180000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +27582 +7883000000010000000000000866726f6e7469657203746e6f026e6c0000010001 +7883800000010000000300030866726f6e7469657203746e6f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c01500020001000151800007047a657573c015c00c0001000100015180000486dd0102c03b00010001000151800004c0576a65c0550001000100015180000486dd0202 + +27583 +cebb000000010000000000000377777707736578636c7562026e6c0000010001 +cebb800000010000000200020377777707736578636c7562026e6c0000010001c0100002000100015180000c036e7331057061727365c018c01000020001000151800006036e7332c030c02c00010001000151800004d5ef9b0bc04400010001000151800004d5efb238 + +27584 +334e00000001000000000000046e7330320a77656273797374656d73026e6c0000010001 +334e80000001000000020002046e7330320a77656273797374656d73026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc03000010001000151800004d4cccf12c00c000100010001518000043eddd552 + +27585 +03d000000001000000000000046e7330310a77656273797374656d73026e6c0000010001 +03d080000001000000020002046e7330310a77656273797374656d73026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004d4cccf12c03e000100010001518000043eddd552 + +27586 +78c000000001000000000000036e73310a77656273797374656d73026e6c0000010001 +78c080000001000000020002036e73310a77656273797374656d73026e6c0000010001c01000020001000151800007046e733031c010c01000020001000151800007046e733032c010c02f00010001000151800004d4cccf12c042000100010001518000043eddd552 + +27587 +c50800000001000000000000036e73320a77656273797374656d73026e6c0000010001 +c50880000001000000020002036e73320a77656273797374656d73026e6c0000010001c01000020001000151800007046e733031c010c01000020001000151800007046e733032c010c02f00010001000151800004d4cccf12c042000100010001518000043eddd552 + +27588 +8b4000000001000000000000046d61696c0967622d6d616e636f6e026e6c0000010001 +8b4080000001000000020002046d61696c0967622d6d616e636f6e026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01bc01100020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +27589 +bb9300100001000000000001036e7331056132303030026e6c00000100010000290800000080000000 +bb9380000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +27590 +78ee00100001000000000001036e7332056132303030026e6c00000100010000290800000080000000 +78ee80000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +27591 +dc0c0000000100000000000006787334616c6c026e6c0000010001 +dc0c8000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +27592 +020900000001000000000000036e73330767617574656e67026e6c0000010001 +020980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27593 +3dcc000000010000000000000473616261026e6c0000010001 +3dcc800000010000000200020473616261026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +27594 +0000000060025e38cd070000020405b40000 +000080010000000000000000 + +27595 +42d300000001000000000000037777770670726f746571026e6c0000010001 +42d380000001000000020000037777770670726f746571026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02f + +27596 +d5a50000000100000000000007746f626f746578026e6c00001c0001 +d5a58000000100000002000207746f626f746578026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +27597 +1b3000000001000000000000026872026e6c0000010001 +1b3080000001000000020000026872026e6c0000010001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c027 + +27598 +b6185ae050102da004540000000000000000 +b618dae40000000000000000 + +27599 +214b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +214b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27600 +9f9d00000001000000000000046d61696c0a7a6f726762616c616e73026e6c0000010001 +9f9d80000001000000020002046d61696c0a7a6f726762616c616e73026e6c0000010001c01100020001000151800011036e73310a6d756c74696b6162656cc01cc01100020001000151800006036e7332c034c0300001000100015180000450f2e002c04d0001000100015180000450f2e006 + +27601 +ec740000000100000000000008696e746572636169026e6c00000f0001 +ec748000000100000002000008696e746572636169026e6c00000f0001c00c00020001000151800014036e733108747572626f646e7302636f02756b00c00c00020001000151800006036e7332c02d + +27602 +2fc900000001000000000000037777770967726f656e67656c64026e6c0000010001 +2fc980000001000000020000037777770967726f656e67656c64026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c031 + +27603 +31600000000100000000000002343603313437023539033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +31608000000100000002000202343603313437023539033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +27604 +4a4700000001000000000000037777770e73636f6f7465722d667265616b73026e6c0000010001 +4a4780000001000000020000037777770e73636f6f7465722d667265616b73026e6c0000010001c0100002000100015180000f036e733105726f6f647303636f6d00c01000020001000151800006036e7332c037 + +27605 +a6360000000100000000000004646e7331057368656c6c026e6c0000010001 +a6368000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +27606 +d262000000010000000000000377777709746b65657270756e74026e6c0000010001 +d262800000010000000200000377777709746b65657270756e74026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +27607 +271d0000000100000000000003777777047a656e6e026e6c0000010001 +271d8000000100000002000203777777047a656e6e026e6c0000010001c0100002000100015180000c04646e73310471776562c015c0100002000100015180000704646e7332c02ec02900010001000151800004d994ac0cc04100010001000151800004d5c42f6c + +27608 +4a5c00000001000000000000076275726d656573026e6c00000f0001 +4a5c80000001000000020000076275726d656573026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02e + +27609 +bc7700000001000000000000036e7331056132303030026e6c0000010001 +bc7780000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +27610 +2bff00000001000000000000036e7332056132303030026e6c0000010001 +2bff80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +27611 +214e00000001000000000000046d61696c0674696b74616b026e6c0000010001 +214e80000001000000020002046d61696c0674696b74616b026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800009036e733202696fc018c02c000100010001518000045111281dc03e0001000100015180000451112202 + +27612 +8fdd0000000100000000000006736d7470303103736662026e6c0000010001 +8fdd8000000100000002000206736d7470303103736662026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c02b00010001000151800004d4f1290dc03d00010001000151800004d4f1290e + +27613 +35bf000000010000000000000377777707766f6c64657273026e6c0000010001 +35bf800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +27614 +64aa0000000100000000000004686331310564656d6f6e026e6c0000ff0001 +64aa8000000100000003000204686331310564656d6f6e026e6c0000ff0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +27615 +ff1d00000001000000000000037777770667726f656e65026e6c0000010001 +ff1d80000001000000020002037777770667726f656e65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +27616 +7e7000100001000000000001036d783103626974026e6c00000100010000290800000080000000 +7e7080000001000000030004036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b0000291000000000000000 + +27617 +00500000000100000000000003706f700b6f74742d6d6f746f72656e026e6c0000010001 +00508000000100000002000003706f700b6f74742d6d6f746f72656e026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +27618 +d17a000000010000000000000377777709676f757765736c6167026e6c0000010001 +d17a800000010000000200000377777709676f757765736c6167026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +27619 +b7150000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7158000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27620 +b7160000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7168000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27621 +b6185ae050102da081160000008c4dd3000000010001000000000e3932373731323933353935342d330000f900010e3932373731323933353935342d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd65403c4ee500030000002f4e544c4d535350000100000097b200e0050005002a0000000a000a0020000000434f4d505554455231384e504942560000 +b618dae40000000000000000 + +27622 +4c6d00000001000000000000023839023937033231360236360a626c61636b686f6c657307656173796e6574026e6c0000010001 +4c6d80000001000000020002023839023937033231360236360a626c61636b686f6c657307656173796e6574026e6c0000010001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +27623 +839c00000001000000000000023930023835033136350236370770726f786965730a626c61636b686f6c657307656173656e6574026e6c0000010001 +839c84030001000000010000023930023835033136350236370770726f786965730a626c61636b686f6c657307656173656e6574026e6c0000010001c03400060001000038400036026e730f646f6d61696e2d7265676973747279c0340a686f73746d6173746572c04b0bf1e540000070800000384000278d0000003840 + +27624 +a1330000000100000000000005776562313108696e74726f776562026e6c0000010001 +a1338000000100000002000205776562313108696e74726f776562026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02f0001000100015180000450416028c04100010001000151800004c356780c + +27625 +b6185aee501027ec096c0000000000000000 +b618dae40000000000000000 + +27626 +25cc000000010000000000000377777707766f6c64657273026e6c0000010001 +25cc800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +27627 +b8fe00000001000000000000046d61696c0477696e69026e6c0000010001 +b8fe80000001000000020002046d61696c0477696e69026e6c0000010001c0110002000100015180000f026e7309656174736572766572c016c01100020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +27628 +25c0000000010000000000000377777707766f6c64657273026e6c0000010001 +25c0800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +27629 +bbb80000000100000000000003777777097068696c666f6e6473026e6c0000010001 +bbb88000000100000002000203777777097068696c666f6e6473026e6c0000010001c0100002000100015180000f036e7331086261726d61746f6ec01ac01000020001000151800006036e7332c032c02e00010001000151800004d5a0da96c04900010001000151800004d5a0da64 + +27630 +e89600000001000000000000037777770d766c696567746172696576656e026e6c0000010001 +e89680000001000000020002037777770d766c696567746172696576656e026e6c0000010001c0100002000100015180000e036e733007656173796e6574c01ec01000020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +27631 +7902000000010000000000000331373202323101310131026e6c0000010001 +7902840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +27632 +399a00000001000000000000037777770a6e657767726f756e6473026e6c0000010001 +399a80000001000000020000037777770a6e657767726f756e6473026e6c0000010001c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7334c033 + +27633 +14fa00000001000000000000036e733109666972737466696e64026e6c0000010001 +14fa80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27634 +766e00000001000000000000036e733209666972737466696e64026e6c0000010001 +766e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27635 +035f000000010000000000000377777706617265613137026e6c0000010001 +035f800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +27636 +ef2c00000001000000000000026772026e6c00000f0001 +ef2c80000001000000020000026772026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +27637 +1fb900000001000000000000036d783103626974026e6c0000010001 +1fb980000001000000030003036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +27638 +468d000000010000000000000377777706617265613137026e6c0000010001 +468d800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +27639 +8eba00000001000000000000036e7331046372696f026e6c0000010001 +8eba80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27640 +736500000001000000000000036e7332046372696f026e6c0000010001 +736580000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27641 +3a1a00000001000000000000047072693203646e73067073696e6574026e6c0000010001 +3a1a80000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +27642 +281000000001000000000000047072693103646e73067073696e6574026e6c0000010001 +281080000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +27643 +dfb1000000010000000000000466646467026e6c0000ff0001 +dfb1800000010000000200020466646467026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c011c00c00020001000151800006036e7331c028c02500010001000151800004504f6101c03f00010001000151800004504f6102 + +27644 +06860000000100000000000009776f6f6e6b72616e74026e6c00000f0001 +06868000000100000002000009776f6f6e6b72616e74026e6c00000f0001c00c00020001000151800011036e733107636f6e78696f6e036e657400c00c00020001000151800006036e7332c02e + +27645 +765100000001000000000000046e637276026e6c00000f0001 +765180000001000000020002046e637276026e6c00000f0001c00c00020001000151800010066d696e6e6965066f6d726f6570c011c00c0002000100015180000805726f62696ec02cc02500010001000151800004913a1e04c04100010001000151800004913a1a34 + +27646 +d3a600000001000000000000074f424a4a4f4253026e6c0000020001 +d3a684030001000000010000074f424a4a4f4253026e6c0000020001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +27647 +7a7400000001000000000000037777770464696766026e6c0000010001 +7a7484030001000000010000037777770464696766026e6c0000010001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +27648 +df5c00000001000000000000037777770976696572787672696a026e6c0000010001 +df5c80000001000000020002037777770976696572787672696a026e6c0000010001c01000020001000151800012026e730c686f6c696461796d65646961c01ac01000020001000151800006036e7333c031c02e000100010001518000049265424dc04c000100010001518000045054ebbf + +27649 +35410000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +35418000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27650 +b23c00000001000000000000096d6f6f697468756973026e6c0000010001 +b23c80000001000000020002096d6f6f697468756973026e6c0000010001c00c0002000100015180000d026e730777697a7a626974c016c00c00020001000151800006036e7332c02dc02a000100010001518000043e3a360bc043000100010001518000043e3a360c + +27651 +dbc400000001000000000000036e733206657472616465026e6c00001c0001 +dbc480000001000000020000036e733206657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +27652 +afd100000001000000000000036e733206657472616465026e6c0000260001 +afd180000001000000020000036e733206657472616465026e6c0000260001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +27653 +44d300000001000000000000036e733106657472616465026e6c00001c0001 +44d380000001000000020000036e733106657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +27654 +ee2400000001000000000000036e733106657472616465026e6c0000260001 +ee2480000001000000020000036e733106657472616465026e6c0000260001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +27655 +3a3200000001000000000000036e73330767617574656e67026e6c0000010001 +3a3280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27656 +123d00000001000000000000036e73330767617574656e67026e6c0000010001 +123d80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27657 +6a3a0000000100000000000003777777097370656c656e77696e026e6c0000010001 +6a3a8000000100000003000003777777097370656c656e77696e026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +27658 +20ec00000001000000000000036e733109666972737466696e64026e6c0000010001 +20ec80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27659 +11d900000001000000000000036e733209666972737466696e64026e6c0000010001 +11d980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +27660 +61a100000001000000000000087665726b61617274026e6c00000f0001 +61a180000001000000020002087665726b61617274026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +27661 +be9b00000001000000000000037777770a737065726d616e656e74026e6c0000010001 +be9b80000001000000020002037777770a737065726d616e656e74026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efa011c04a00010001000151800004d5efa075 + +27662 +540b00000001000000000000037777770f7370617274612d656e736368656465026e6c0000010001 +540b80000001000000020002037777770f7370617274612d656e736368656465026e6c0000010001c0100002000100015180000d04696973310577696e646fc020c01000020001000151800008056969733137c039c03400010001000151800004d9aa050bc04d00010001000151800004d9aa0430 + +27663 +447300000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +447380000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +27664 +d4bb000000010000000000000377777706696e666f726d026e6c0000010001 +d4bb800000010000000200020377777706696e666f726d026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c017c01000020001000151800006036e7332c02ec02b00010001000151800004d5e38d0ac04800010001000151800004d5e38205 + +27665 +09c700000001000000000000023839023937033231360236360a626c61636b686f6c657307656173796e6574026e6c0000050001 +09c780000001000000020002023839023937033231360236360a626c61636b686f6c657307656173796e6574026e6c0000050001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +27666 +5f4b00000001000000000000046e6f7661026e6c0000ff0001 +5f4b80000001000000020002046e6f7661026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +27667 +ea340000000100000000000007707269766174650577772d6569026e6c0000010001 +ea348000000100000002000007707269766174650577772d6569026e6c0000010001c01400020001000151800012036e7333087a6f6e656564697403636f6d00c01400020001000151800006036e7337c032 + +27668 +f04500100001000000000001036d783102686e026e6c00000100010000290800000080000000 +f04580000001000000020001036d783102686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b0000291000000000000000 + +27669 +2e1800000001000000000000026e7308696e7465726c6162026e6c0000010001 +2e1880000001000000020002026e7308696e7465726c6162026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0902c03a00010001000151800004d4cb0903 + +27670 +170c00000001000000000000036e733208696e7465726c6162026e6c0000010001 +170c80000001000000020002036e733208696e7465726c6162026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d4cb0902c00c00010001000151800004d4cb0903 + +27671 +be0e0000000100000000000003777777076c696272617279027575026e6c0000010001 +be0e8000000100000004000403777777076c696272617279027575026e6c0000010001c01800020001000151800005026e73c018c01800020001000151800006036e7332c018c0180002000100015180000e036e733107737572666e6574c01bc01800020001000151800006036e7333c018c02f0001000100015180000483d30405c0400001000100015180000483d30406c05200010001000151800004c0576a65c06c0001000100015180000483d31020 + +27672 +7abe0000000100000000000003777777076861617267656c026e6c0000010001 +7abe8000000100000003000303777777076861617267656c026e6c0000010001c01000020001000151800013046e7330310b786c2d696e7465726e6574c018c01000020001000151800007046e733032c031c01000020001000151800007046e733033c031c02c0001000100015180000451045e10c04b000100010001518000043eddcf2ec05e00010001000151800004d5540e0e + +27673 +01e800000001000000000000036e733208782d73747265616d026e6c0000260001 +01e880000001000000030003036e733208782d73747265616d026e6c0000260001c01000020001000151800006036e7330c010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d48bc002c03f00010001000151800004d48b0003c00c00010001000151800004d48bc003 + +27674 +f78e000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +f78e800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27675 +1a5400000001000000000000036e73340767617574656e67026e6c0000010001 +1a5480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27676 +325900000001000000000000036e73330767617574656e67026e6c0000010001 +325980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27677 +48bd00000001000000000000037777770f6162632d7569747a656e646275726f026e6c0000010001 +48bd80000001000000020000037777770f6162632d7569747a656e646275726f026e6c0000010001c0100002000100015180000e036e73310762697472617465c020c01000020001000151800006036e7332c038 + +27678 +d76a00000001000000000000077365656d6f7265026e6c00000f0001 +d76a80000001000000020002077365656d6f7265026e6c00000f0001c00c0002000100015180000b026e7305706c616e74c014c00c00020001000151800006036e7332c02bc02800010001000151800004d59f0037c03f00010001000151800004d59f0046 + +27679 +cf1900000001000000000000036e73310762697472617465026e6c0000010001 +cf1980000001000000030002036e73310762697472617465026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +27680 +5d5b00000001000000000000036e73320762697472617465026e6c0000010001 +5d5b80000001000000030002036e73320762697472617465026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +27681 +3999000000010000000000000b76616e646572686f727374026e6c00000f0001 +3999800000010000000300030b76616e646572686f727374026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004d5c98015c04700010001000151800004d5c9bf12c05900010001000151800004d5ef9c26 + +27682 +e4600000000100000000000008686f73746e616d650462696e640000100003 +e4608000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27683 +18e90000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +18e98000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +27684 +5d1400000001000000000000036e73310677657061726b026e6c0000010001 +5d1480000001000000020002036e73310677657061726b026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5f4b8cbc03900010001000151800004d5f4b9cb + +27685 +068a00000001000000000000036e73320677657061726b026e6c0000010001 +068a80000001000000020002036e73320677657061726b026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d5f4b8cbc00c00010001000151800004d5f4b9cb + +27686 +08dc00000001000000000000026e7306736175727573026e6c0000010001 +08dc80000001000000020001026e7306736175727573026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e7304707a7a6c03636f6d00c00c0001000100015180000451112b02 + +27687 +d6160000000100000000000003767773066d696e767773026e6c0000010001 +d6168000000100000003000103767773066d696e767773026e6c0000010001c01000020001000151800002c00cc01000020001000151800012047365633103646e73067073696e6574c017c010000200010001518000070473656332c03ec00c00010001000151800004c2b77e42 + +27688 +469f000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +469f800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27689 +21ca0000000100000000000008686f73746e616d650462696e640000100003 +21ca8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27690 +dbde0000000100000000000003777777056f7074696e026e6c0000010001 +dbde8000000100000003000103777777056f7074696e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc016c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c048c02a000100010001518000043efa0202 + +27691 +2802000000010000000000000377777706746a65657a65026e6c0000010001 +2802800000010000000200020377777706746a65657a65026e6c0000010001c0100002000100015180001104646e733109696e7465726f757465c017c0100002000100015180000704646e7332c030c02b00010001000151800004d4173f3ec04800010001000151800004d4173f3d + +27692 +63090000000100000000000003777777066d6174757265026e6c0000010001 +63098000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +27693 +9cb60000000100000000000006636861726973026e6c00001c0001 +9cb68000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27694 +56d800000001000000000000056e756d6163026e6c0000ff0001 +56d880000001000000020002056e756d6163026e6c0000ff0001c00c00020001000151800015036e73310e726567696f70726f766964657273c012c00c00020001000151800006036e7332c02ac02600010001000151800004d41da001c04700010001000151800004d41da1fe + +27695 +78a70000000100000000000004626f6261026778026e6c00001c0001 +78a78000000100000002000104626f6261026778026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1590b + +27696 +8d110000000100000000000003777777046b726173026e6c0000010001 +8d118000000100000002000003777777046b726173026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +27697 +438a00000001000000000000037777770f786361742d696e6475737472696573026e6c0000010001 +438a80000001000000030002037777770f786361742d696e6475737472696573026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +27698 +077300000001000000000000046d61696c0861746c616e74697a026e6c0000010001 +077380000001000000020002046d61696c0861746c616e74697a026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02e00010001000151800004d5efa011c04000010001000151800004d5efa075 + +27699 +826e000000010000000000000377777708626f793465766572026e6c0000010001 +826e800000010000000200000377777708626f793465766572026e6c0000010001c01000020001000151800010036e733109666972737466696e64c019c01000020001000151800006036e7332c031 + +27700 +2dbc0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dbc8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27701 +f3bc00000001000000000000046175746f06706167696e61026e6c0000010001 +f3bc80000001000000030003046175746f06706167696e61026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +27702 +ac1c00000001000000000000046d61696c05622d6f6e65026e6c0000010001 +ac1c80000001000000020002046d61696c05622d6f6e65026e6c0000010001c01100020001000151800009036e7331026973c017c01100020001000151800006036e7332c02fc02b00010001000151800004d5852102c04000010001000151800004d5c41503 + +27703 +c5be0000000100000000000003706f7004766f766c026e6c0000010001 +c5be8000000100000002000203706f7004766f766c026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c015c01000020001000151800006036e7332c02dc029000100010001518000045054f347c045000100010001518000043e94a047 + +27704 +fbaf000000010000000000000a73686f706f6e6c696e65086d69642d746f776e026e6c0000010001 +fbaf800000010000000200020a73686f706f6e6c696e65086d69642d746f776e026e6c0000010001c0170002000100015180000c036e733105636176656fc020c01700020001000151800006036e7332c038c034000100010001518000045112a002c04c000100010001518000045112a102 + +27705 +733500000001000000000000066b7661776562056c61776562026e6c0000010001 +733580000001000000030002066b7661776562056c61776562026e6c0000010001c0130002000100015180000d036e733106776964657873c019c01300020001000151800010036e733206776964657873036e657400c01300020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +27706 +a4df00000001000000000000037777770470706d63026e6c0000010001 +a4df80000001000000020000037777770470706d63026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +27707 +557600000001000000000000026e7304696d636f026e6c0000010001 +557680000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +27708 +aabb00000001000000000000026e7304696d636f026e6c0000260001 +aabb80000001000000020001026e7304696d636f026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +27709 +3e0b000000010000000000000377777704616d726f026e6c0000010001 +3e0b800000010000000200020377777704616d726f026e6c0000010001c010000200010001518000130870686f626f7330310761626e616d726fc015c0100002000100015180000b0870686f626f733032c032c02900010001000151800004a7cac30bc04800010001000151800004a7cac30c + +27710 +05f5000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +05f5800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27711 +30b900000001000000000000046d61696c03777873026e6c0000010001 +30b980000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +27712 +580a00000001000000000000046e73303903777873026e6c0000010001 +580a80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27713 +cb1d00000001000000000000046e73303803777873026e6c0000010001 +cb1d80000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27714 +cdec00000001000000000000046e73303903777873026e6c0000010001 +cdec80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +27715 +420d00000001000000000000036e7331056773696e74026e6c0000010001 +420d80000001000000020002036e7331056773696e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004510473b4c03800010001000151800004510473b5 + +27716 +fe3000000001000000000000036e7331056773696e74026e6c0000260001 +fe3080000001000000020002036e7331056773696e74026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004510473b4c03800010001000151800004510473b5 + +27717 +ffc100000001000000000000036e7332056773696e74026e6c0000010001 +ffc180000001000000020002036e7332056773696e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004510473b4c00c00010001000151800004510473b5 + +27718 +3a0b00000001000000000000036e7332056773696e74026e6c0000260001 +3a0b80000001000000020002036e7332056773696e74026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004510473b4c00c00010001000151800004510473b5 + +27719 +f00a0000000100000000000003777777096e6f697a79636f7773026e6c0000010001 +f00a8000000100000002000203777777096e6f697a79636f7773026e6c0000010001c0100002000100015180000e026e730869742d776f726b73c01ac01000020001000151800014026e730e667279736c616e2d6f6e6c696e65c01ac02e00010001000151800004515b0288c04800010001000151800004515b020d + +27720 +e9a00000000100000000000003777777056e696b6b690873706974686f7374026e6c0000010001 +e9a08000000100000002000203777777056e696b6b690873706974686f7374026e6c0000010001c0160002000100015180000e026e730869742d776f726b73c01fc01600020001000151800014026e730e667279736c616e2d6f6e6c696e65c01fc03300010001000151800004515b0288c04d00010001000151800004515b020d + +27721 +3bab00000001000000000000037777770a7469656e657263616d73026e6c0000010001 +3bab80000001000000020000037777770a7469656e657263616d73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +27722 +4e00000000010000000000000e686161726c656d6d65726d656572026e6c0000ff0001 +4e00800000010000000200010e686161726c656d6d65726d656572026e6c0000ff0001c00c0002000100015180000704646e7331c00cc00c0002000100015180000b026e73026e6c036e657400c02f000100010001518000043e3a2928 + +27723 +1a9a00000001000000000000036d783102686e026e6c0000010001 +1a9a80000001000000020000036d783102686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +27724 +cce90000000100000000000008666163696c697479026e6c00000f0001 +cce98000000100000002000108666163696c697479026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +27725 +6302000000010000000000000377777706652d6661726d026e6c0000010001 +6302800000010000000200020377777706652d6661726d026e6c0000010001c0100002000100015180000d036e73310663617374656cc017c01000020001000151800006036e7332c02fc02b00010001000151800004c3558244c04400010001000151800004c3558245 + +27726 +328000000001000000000000047363706303617a6d026e6c00000f0001 +328080000001000000020002047363706303617a6d026e6c00000f0001c0110002000100015180000a076e657473727672c011c0110002000100015180000e036e733107737572666e6574c015c02900010001000151800004911d8201c03f00010001000151800004c0576a65 + +27727 +78e90000000100000000000008686c7a7569642d320564656d6f6e026e6c0000010001 +78e98000000100000003000208686c7a7569642d320564656d6f6e026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +27728 +6a3c00000001000000000000037777770670617266756d026e6c0000010001 +6a3c80000001000000020002037777770670617266756d026e6c0000010001c01000020001000151800009036e7331026973c017c01000020001000151800006036e7332c02fc02b00010001000151800004d5852102c04000010001000151800004d5c41503 + +27729 +6479000000010000000000000377777708636f6e73756d6178026e6c0000010001 +6479800000010000000200020377777708636f6e73756d6178026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +27730 +8da90000000100000000000005746c6774650a7061797065726e657773026e6c0000010001 +8da98000000100000002000205746c6774650a7061797065726e657773026e6c0000010001c01200020001000151800010036e733109652d666163746f7279c01dc01200020001000151800006036e7332c035c03100010001000151800004c1fefe82c04d00010001000151800004c1feff82 + +27731 +acea000000010000000000000c746865666f6f747072696e74026e6c0000010001 +acea800000010000000200020c746865666f6f747072696e74026e6c0000010001c00c0002000100015180000c036e733105706f703331c019c00c00020001000151800006036e7332c031c02d00010001000151800004d499be5ac04500010001000151800004d499be5b + +27732 +b6185aee50112da003b70000000000000000 +b618dae40000000000000000 + +27733 +9e4d00000001000000000000036d786906787334616c6c026e6c0000010001 +9e4d80000001000000030002036d786906787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +27734 +b6185aee50102da003b70000000000000000 +b618dae40000000000000000 + +27735 +842700000001000000000000036e73310f666173747365727665722d61737037026e6c0000010001 +842780000001000000020002036e73310f666173747365727665722d61737037026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4f028c0420001000100015180000442a4f031 + +27736 +ca8700000001000000000000036e73310f666173747365727665722d61737037026e6c0000260001 +ca8780000001000000020002036e73310f666173747365727665722d61737037026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4f028c0420001000100015180000442a4f031 + +27737 +50a400000001000000000000036e73320f666173747365727665722d61737037026e6c0000010001 +50a480000001000000020002036e73320f666173747365727665722d61737037026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0340001000100015180000442a4f028c00c0001000100015180000442a4f031 + +27738 +285200000001000000000000036e73320f666173747365727665722d61737037026e6c0000260001 +285280000001000000020002036e73320f666173747365727665722d61737037026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0340001000100015180000442a4f028c00c0001000100015180000442a4f031 + +27739 +126c00000001000000000000036e73330767617574656e67026e6c0000010001 +126c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27740 +4d020000000100000000000003777777087370656c70756e74026e6c0000010001 +4d028000000100000002000203777777087370656c70756e74026e6c0000010001c0100002000100015180000b036e73310470696e65c019c01000020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +27741 +ec080010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +ec088000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +27742 +22250000000100000000000004646e733107696e666f6e6574026e6c0000010001 +22258000000100000002000204646e733107696e666f6e6574026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4bd01c4c03b00010001000151800004d4bd7f83 + +27743 +6bc50000000100000000000004646e733207696e666f6e6574026e6c0000010001 +6bc58000000100000002000204646e733207696e666f6e6574026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02d00010001000151800004d4bd01c4c00c00010001000151800004d4bd7f83 + +27744 +c9a500100001000000000001036e733203757063026e6c00000100010000290800000080000000 +c9a580000001000000030004036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +27745 +d91200100001000000000001036e733203757063026e6c00002600010000290800000080000000 +d91280000001000000030004036e733203757063026e6c0000260001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +27746 +a72e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a72e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27747 +5b110000000100000000000003696165026e6c0000010001 +5b118000000100000002000203696165026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +27748 +0000000060025e3872b90000020405b40000 +000080010000000000000000 + +27749 +ec27000000010000000000001164736c616d3230342d36362d35392d38310664796e64736c067a6f6e6e6574026e6c0000010001 +ec27800000010000000200021164736c616d3230342d36362d35392d38310664796e64736c067a6f6e6e6574026e6c0000010001c02500020001000151800005026e73c025c0250002000100015180000e026e7308767575727765726bc02cc040000100010001518000043e3a3204c051000100010001518000043efa0202 + +27750 +b61b831350102da081cf0000000000000000 + + +27751 +715600000001000000000000026e7306636f62776562026e6c0000010001 +715680000001000000020001026e7306636f62776562026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800011026e73087363686970686f6c036e657400c00c0001000100015180000450f26001 + +27752 +7c3a0000000100000000000004686f6d65086d756c7469776562026e6c0000010001 +7c3a8000000100000003000304686f6d65086d756c7469776562026e6c0000010001c01100020001000151800011036e73310a6d756c74696b6162656cc01ac01100020001000151800006036e7332c032c0110002000100015180000e036e733407737570706f7274c01ac02e0001000100015180000450f2e002c04b0001000100015180000450f2e006c05d00010001000151800004c372e6fe + +27753 +23f2000000010000000000000377777706676f6f676c65026e6c0000010001 +23f2800000010000000300000377777706676f6f676c65026e6c0000010001c01000020001000151800010036e733106676f6f676c6503636f6d00c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02f + +27754 +5c0c000000010000000000000f7065656b6163636f756e74616e7473026e6c00000f0001 +5c0c800000010000000200020f7065656b6163636f756e74616e7473026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01cc00c00020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +27755 +d5ef00000001000000000000027073026e6c00000f0001 +d5ef80000001000000020000027073026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02a + +27756 +0af3000000010000000000000861647365727665720c656e6572676965706c617a61026e6c0000010001 +0af3800000010000000200020861647365727665720c656e6572676965706c617a61026e6c0000010001c0150002000100015180000a036e733103697870c022c01500020001000151800006036e7332c03ac03600010001000151800004d943e639c04c000100010001518000043efa063f + +27757 +63350000000100000000000001360331313203313433033231360a626c61636b686f6c657307656173796e6574026e6c0000010001 +63358000000100000002000201360331313203313433033231360a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +27758 +644700000001000000000000087374616564696f6e026e6c00001c0001 +644780000001000000020002087374616564696f6e026e6c00001c0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +27759 +2fd20000000100000000000003736f61026e6c0000010001 +2fd28000000100000002000003736f61026e6c0000010001c00c00020001000151800014026e730b6578706c61696e65726463036e657400c00c0002000100015180000d026e73056132303030026e7500 + +27760 +eda7000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +eda7800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27761 +a3b300000001000000000000036172780467757473026e6c0000010001 +a3b380000001000000020002036172780467757473026e6c0000010001c0100002000100015180000e026e73086e65787467656172c015c01000020001000151800006036e7332c02cc02900010001000151800004c26d9ab8c04300010001000151800004c26d9aa3 + +27762 +314d000000010000000000000773657276696365076f6d732d6e6574026e6c00001c0001 +314d800000010000000200020773657276696365076f6d732d6e6574026e6c00001c0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03000010001000151800004d5efb22fc04200010001000151800004d5ef9d07 + +27763 +238d00000001000000000000036e73340767617574656e67026e6c0000010001 +238d80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27764 +238c00000001000000000000036e73330767617574656e67026e6c0000010001 +238c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27765 +2a6d0000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +2a6d8000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +27766 +8c50000000010000000000000d6762656c656374726f6e696373026e6c00000f0001 +8c50800000010000000200000d6762656c656374726f6e696373026e6c00000f0001c00c0002000100015180000e036e73310469706d68036e657400c00c00020001000151800006036e7332c032 + +27767 +9e6100000001000000000000086d756c7469776562026e6c00000f0001 +9e6180000001000000030003086d756c7469776562026e6c00000f0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c0002000100015180000e036e733407737570706f7274c015c0290001000100015180000450f2e002c0460001000100015180000450f2e006c05800010001000151800004c372e6fe + +27768 +3d1700000001000000000000036e7331066e6c74726565026e6c0000010001 +3d1780000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +27769 +05c9000000010000000000000477646264026e6c00000f0001 +05c9800000010000000200000477646264026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +27770 +852900000001000000000000037777770e6970646f706c656964696e67656e026e6c0000010001 +852980000001000000020002037777770e6970646f706c656964696e67656e026e6c0000010001c0100002000100015180000f04646e73300765736f75726365c01fc0100002000100015180000704646e7334c038c03300010001000151800004d48198d8c04e00010001000151800004d5c5eaa4 + +27771 +fde8000000010000000000000e6d61617274656e74696a7373656e026e6c00000f0001 +fde8800000010000000200020e6d61617274656e74696a7373656e026e6c00000f0001c00c0002000100015180000f036e7331087369746577697365c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d58529cdc04a00010001000151800004d58529d2 + +27772 +2a0c00000001000000000000036e733104686f6d65026e6c0000010001 +2a0c80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +27773 +2a0d00000001000000000000036e733204686f6d65026e6c0000010001 +2a0d80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +27774 +2a0e00000001000000000000036e733304686f6d65026e6c0000010001 +2a0e80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +27775 +2a0f00000001000000000000036e733404686f6d65026e6c0000010001 +2a0f80000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +27776 +3cef00000001000000000000106761727564612d696e646f6e65736961026e6c0000010001 +3cef80000001000000020002106761727564612d696e646f6e65736961026e6c0000010001c00c00020001000151800013036e73310c62656472696a76656e776562c01dc00c00020001000151800006036e7332c035c03100010001000151800004d90867fec05000010001000151800004c1ad2bfe + +27777 +b1fb00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +b1fb80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +27778 +d75900000001000000000000026e73067a6f6e6e6574026e6c0000260001 +d75980000001000000020002026e73067a6f6e6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +27779 +ed330000000100000000000008686f73746e616d650462696e640000100003 +ed338000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27780 +c9b50000000100000000000003777777126175746f6d617469736572696e6767696473026e6c0000010001 +c9b58000000100000002000103777777126175746f6d617469736572696e6767696473026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc023c01000020001000151800006036e7331c03ac03700010001000151800004c2b2b20a + +27781 +99d70000000100000000000008686f726e797069610d6c616174616c6c65737a69656e026e6c0000010001 +99d78000000100000002000208686f726e797069610d6c616174616c6c65737a69656e026e6c0000010001c0150002000100015180000c04646e73310470696e73c023c0150002000100015180000704646e7332c03cc03700010001000151800004d9c26101c04f00010001000151800004d9c26002 + +27782 +b61b831350102da0dc970000008c6fcd000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd66403c4ee600030000002f4e544c4d535350000100000097b200e0050005002a0000000a000a0020000000434f4d505554455231384e504942560000 + + +27783 +b61b8321501027ec86e70000000000000000 + + +27784 +7dfa00100001000000000001026e73067a6f6e6e6574026e6c00000100010000290800000080000000 +7dfa80000001000000020003026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa02020000291000000000000000 + +27785 +b44800000001000000000000076863636669646f03686363026e6c00001c0001 +b44880000001000000020000076863636669646f03686363026e6c00001c0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c032 + +27786 +26400000000100000000000009652d6c756e61746963026e6c0000010001 +26408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +27787 +7e0c0000000100000000000003706f700f6f6b6572646576656c6f706d656e74026e6c0000010001 +7e0c8000000100000002000203706f700f6f6b6572646576656c6f706d656e74026e6c0000010001c0100002000100015180000a026e730469636d63c020c01000020001000151800006036e7332c037c034000100010001518000043e643805c04a000100010001518000043e643806 + +27788 +69d800000001000000000000165354494e47524159434f4d4d554e49434154494f4e53026e6c0000020001 +69d884030001000000010000165354494e47524159434f4d4d554e49434154494f4e53026e6c0000020001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +27789 +df1600000001000000000000036e733203757063026e6c0000010001 +df1680000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +27790 +77cb00000001000000000000036e733203757063026e6c0000260001 +77cb80000001000000030003036e733203757063026e6c0000260001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +27791 +91330000000100000000000005646e732d31056c61646f74026e6c0000010001 +91338000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27792 +0d9800000001000000000000036e733107737572666e6574026e6c0000010001 +0d9880000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +27793 +7c220000000100000000000007646f6c66696a6e04696c7365026e6c0000010001 +7c228000000100000003000307646f6c66696a6e04696c7365026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c02d000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +27794 +de8f0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +de8f8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +27795 +c64b00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +c64b80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +27796 +351300000001000000000000037777770761646f66616e73026e6c0000010001 +351380000001000000030001037777770761646f66616e73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +27797 +de35000000010000000000000377777708313264657369676e026e6c0000010001 +de35800000010000000200020377777708313264657369676e026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d994ae77c04b000100010001518000045054ea06 + +27798 +db890000000100000000000001360331313203313433033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +db898000000100000002000201360331313203313433033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +27799 +b91c00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +b91c80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27800 +9fa200000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +9fa280000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27801 +dcc000000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +dcc080000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27802 +ac9900000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +ac9980000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27803 +3f1100000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +3f1180000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +27804 +806400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +806480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27805 +156400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +156480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27806 +74a10000000100000000000003777777076d696e62757a61026e6c0000010001 +74a18000000100000002000103777777076d696e62757a61026e6c0000010001c0100002000100015180000b087374617267617465c010c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004d535a3d2 + +27807 +1db000000001000000000000037777770b74686567616d65726f6f6d026e6c0000010001 +1db080000001000000020000037777770b74686567616d65726f6f6d026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c033 + +27808 +238f00000001000000000000036e73330767617574656e67026e6c0000010001 +238f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27809 +b7d900000001000000000000036e7331046372696f026e6c0000010001 +b7d980000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27810 +4c6e00000001000000000000036e7332046372696f026e6c0000010001 +4c6e80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27811 +239000000001000000000000036e73340767617574656e67026e6c0000010001 +239080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27812 +b08900000001000000000000037777770a72656372656174696566026e6c0000010001 +b08980000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +27813 +a97200000001000000000000037777770a72656372656174696566026e6c0000010001 +a97280000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +27814 +927800100001000000000001076162726164696f026e6c00000100010000290800000080000000 +927880000001000000030003076162726164696f026e6c0000010001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa07030000291000000000000000 + +27815 +c3da0010000100000000000106616c7469756d026e6c00001c00010000290800000080000000 +c3da8000000100000002000306616c7469756d026e6c00001c0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f00460000291000000000000000 + +27816 +d1070000000100000000000005646e732d31056c61646f74026e6c0000010001 +d1078000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27817 +61e900000001000000000000036b6e76026e6c0000010001 +61e980000001000000020001036b6e76026e6c0000010001c00c00020001000151800006036e7331c00cc00c0002000100015180000d036e7332036b706e036e657400c02400010001000151800004c1ac9603 + +27818 +54ee00000001000000000000036e7333076c656374726963026e6c0000010001 +54ee80000001000000020002036e7333076c656374726963026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c297a082c03e00010001000151800004c297a083 + +27819 +fa340000000100000000000006636861726973026e6c00000f0001 +fa348000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27820 +c74400000001000000000000056272657363026e6c00000f0001 +c74480000001000000020000056272657363026e6c00000f0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c029 + +27821 +ac6100000001000000000000037777770a766f6c6b736b72616e74026e6c0000010001 +ac6180000001000000020000037777770a766f6c6b736b72616e74026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c035 + +27822 +41cb0000000100000000000003777777166d6564656d626c696b6b657274656e6e6973636c7562026e6c0000010001 +41cb8000000100000002000003777777166d6564656d626c696b6b657274656e6e6973636c7562026e6c0000010001c0100002000100015180000c026e7306766576696461c027c01000020001000151800006036e7332c03e + +27823 +732d000000010000000000000377777703736170026e6c0000010001 +732d800000010000000200020377777703736170026e6c0000010001c01000020001000151800014026e730e64617461636f6e686f7374696e67c014c01000020001000151800006036e7332c02bc02800010001000151800004d43d2934c04800010001000151800004d468d143 + +27824 +e1ed0000000100000000000006616c7469756d026e6c00001c0001 +e1ed8000000100000002000206616c7469756d026e6c00001c0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +27825 +c97d00000001000000000000096863632d67726f6570026e6c0000010001 +c97d80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +27826 +ec6e00000001000000000000037777770c6575726f7061726164696a73026e6c0000010001 +ec6e80000001000000020002037777770c6575726f7061726164696a73026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01dc01000020001000151800006036e7332c035c031000100010001518000043e291ad2c04e000100010001518000043e291ad3 + +27827 +9dc0000000010000000000000a726f7777656e68657a65026e6c0000010001 +9dc0800000010000000200020a726f7777656e68657a65026e6c0000010001c00c00020001000151800014036e73310d666c79696e6773657276657273c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d420e284c04b00010001000151800004d420e285 + +27828 +0c3600000001000000000000037777770d726164696f7665726f6e696361026e6c0000010001 +0c3680000001000000020002037777770d726164696f7665726f6e696361026e6c0000010001c0100002000100015180000f036e7331086261736971776562c01ec01000020001000151800006036e7332c036c0320001000100015180000452c04516c04d0001000100015180000452c04542 + +27829 +3c8300000001000000000000037777770f6c6574732d6765742d73746f6e6564026e6c0000010001 +3c8380000001000000020002037777770f6c6574732d6765742d73746f6e6564026e6c0000010001c0100002000100015180000e036e7331076465636c617265c020c01000020001000151800006036e7332c038c034000100010001518000043ed4528dc04e000100010001518000045054e9de + +27830 +a3aa00000001000000000000046d61696c03736e72026e6c0000010001 +a3aa80000001000000020002046d61696c03736e72026e6c0000010001c0110002000100015180000e036e7331076c656374726963c015c01100020001000151800006036e7332c02dc02900010001000151800004c297a082c04300010001000151800004c297a083 + +27831 +b97700000001000000000000046d61696c03736e72026e6c00001c0001 +b97780000001000000020002046d61696c03736e72026e6c00001c0001c0110002000100015180000e036e7331076c656374726963c015c01100020001000151800006036e7332c02dc02900010001000151800004c297a082c04300010001000151800004c297a083 + +27832 +2fb6000000010000000000000462757061027330026e6c0000010001 +2fb6800000010000000200020462757061027330026e6c0000010001c0110002000100015180000d026e73076e656473746174c014c01100020001000151800006036e7333c02bc02800010001000151800004d4482615c04100010001000151800004d5c4021d + +27833 +ad9c28000001000000010000026e6c0000060001086b6565726b616465026e6c00000100010000025800040a000015 +ad9ca8040000000000000000 + +27834 +0fa700000001000000000000037777770b76726564656e737465696e026e6c0000010001 +0fa784030001000000010000037777770b76726564656e737465696e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +27835 +5648000000010000000000000377777716726569737665727a656b6572696e676b6f7274696e67026e6c0000010001 +5648800000010000000200010377777716726569737665727a656b6572696e676b6f7274696e67026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c027c01000020001000151800006036e7334c03fc03b00010001000151800004d5c401c0 + +27836 +6234000000010000000000000377777703787476026e6c0000010001 +6234800000010000000200020377777703787476026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c014c01000020001000151800006036e7332c02cc02800010001000151800004d4f1210bc04600010001000151800004d4f1210c + +27837 +e07a00000001000000000000076a657373696531046d626974026e6c00000f0001 +e07a80000001000000020002076a657373696531046d626974026e6c00000f0001c0140002000100015180000d026e730763697374726f6ec019c01400020001000151800006036e7332c030c02d000100010001518000043ed81f37c046000100010001518000043ed81f38 + +27838 +13d000000001000000000000066265616b6572056973696f6e026e6c0000010001 +13d080000001000000020002066265616b6572056973696f6e026e6c0000010001c0130002000100015180000d026e73076b6e6f77617265c019c01300020001000151800006036e7332c030c02d00010001000151800004c3402003c04600010001000151800004c340202b + +27839 +664b00000001000000000000067a7376737263026e6c0000010001 +664b84030001000000010000067a7376737263026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +27840 +227400000001000000000000036e73340767617574656e67026e6c0000010001 +227480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27841 +000000007002faf093c900000204059801010402 +000080010000000000000000 + +27842 +b61d400b5010fbb8c9700000000000000000 +b61dc0040000000000000000 + +27843 +e4bb00000001000000000000076162726164696f026e6c0000010001 +e4bb80000001000000030002076162726164696f026e6c0000010001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +27844 +b61d400b5018fbb85398000000946438000000010001000000000f313237313331303331393633342d330000f900010f313237313331303331393633342d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403af8e4403c4a640003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 +b61dc0040000000000000000 + +27845 +e20a00000001000000000000036e7331046372696f026e6c0000010001 +e20a80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27846 +377000000001000000000000036e7332046372696f026e6c0000010001 +377080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +27847 +87fe00000001000000000000037777770a72656372656174696566026e6c0000010001 +87fe80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +27848 +28550000000100000000000003777777076c652d726576650c7765656b656e64686f74656c026e6c0000010001 +28558000000100000003000203777777076c652d726576650c7765656b656e64686f74656c026e6c0000010001c0180002000100015180000d036e733106776964657873c025c01800020001000151800010036e733206776964657873036e657400c01800020001000151800006036e7333c03dc03900010001000151800004d4ccc0fcc06e000100010001518000043efa0703 + +27849 +b61d40195011fbaac8d90000000000000000 +b61dc0140000000000000000 + +27850 +ce630000000100000000000003696165026e6c00000f0001 +ce638000000100000002000203696165026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +27851 +32a0000000010000000000000761616c6f735f32036c6f73026e6c0000010001 +32a0800000010000000200020761616c6f735f32036c6f73026e6c0000010001c0140002000100015180000c026e7306787334616c6cc018c01400020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +27852 +b61d401a5010fbaac8d80000000000000000 +b61dc0140000000000000000 + +27853 +45e900100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +45e980000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +27854 +1c3100100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +1c3180000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +27855 +d04b00000001000000000000037777770f6765696c657469656e6572746a6573026e6c0000010001 +d04b80000001000000020000037777770f6765696c657469656e6572746a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c037 + +27856 +000000007002faf0abe200000204059801010402 +000080010000000000000000 + +27857 +b6185aef50102da003b60000000000000000 +b618dae40000000000000000 + +27858 +778800100001000000000001036e733103757063026e6c00000100010000290800000000000000 +778880000001000000030004036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +27859 +bbc400100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000000000000 +bbc480000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +27860 +477e001000010000000000000761736e62616e6b026e6c0000ff0001 +477e800000010000000200000761736e62616e6b026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +27861 +eed328000001000000010000026e6c0000060001085f6b706173737764045f75647008706861697272746d026e6c00002100010000025800220000006401d00e70686169722d72746d2d6d61696e08706861697272746d026e6c00 +eed3a8040000000000000000 + +27862 +9fb60000000100000000000012686f74656c667265646572696b736f6f7264026e6c0000ff0001 +9fb68000000100000002000112686f74656c667265646572696b736f6f7264026e6c0000ff0001c00c00020001000151800009026e73036e636ec01fc00c00020001000151800006036e7332c036c03300010001000151800004c2e51401 + +27863 +cae500000001000000000000036e7334076e656473746174026e6c0000010001 +cae580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27864 +bc3800000001000000000000036e7332076e656473746174026e6c0000010001 +bc3880000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +27865 +b61f52c65010fbb8cecc0000000000000000 +b61fd2c40000000000000000 + +27866 +b61f52c65018fbb8714c000000944ae1000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af8e5403c4a650003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 +b61fd2c40000000000000000 + +27867 +5efe00000001000000000000037777770d7665726469656e6e75736e656c026e6c0000010001 +5efe80000001000000020000037777770d7665726469656e6e75736e656c026e6c0000010001c0100002000100015180000e036e7331046379677003636f6d00c01000020001000151800006036e7332c036 + +27868 +c479000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +c479800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +27869 +b61f52d45011fbaace350000000000000000 +b61fd2d40000000000000000 + +27870 +0c0800000001000000000000047376656e056974347573026e6c0000010001 +0c0880000001000000020002047376656e056974347573026e6c0000010001c0110002000100015180000d036e733106736f67657469c017c01100020001000151800006036e7332c02fc02b00010001000151800004c297432ec04400010001000151800004c297432f + +27871 +b61f52d55010fbaace340000000000000000 +b61fd2d40000000000000000 + +27872 +ece70000000100000000000008686f73746e616d650462696e640000100003 +ece78000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27873 +e3df00000001000000000000037777770b68756d6f7270616c656973026e6c0000010001 +e3df80000001000000020000037777770b68756d6f7270616c656973026e6c0000010001c01000020001000151800015036e73310b696e746f776f726c647331036e657400c01000020001000151800006036e7332c034 + +27874 +000000007002faf06bd800000204059801010402 +000080010000000000000000 + +27875 +45ba0000000100000000000008686f73746e616d650462696e640000100003 +45ba8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +27876 +a05a00000001000000000000076363636c2d6e6c06787334616c6c026e6c0000010001 +a05a80000001000000030002076363636c2d6e6c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +27877 +e1e70000000100000000000007616e74656e6e61026e6c0000010001 +e1e78000000100000002000107616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +27878 +b62004255010fbb8dd620000000000000000 +b62080010000000000000000 + +27879 +df7900000001000000000000036d78330663617374656c026e6c0000010001 +df7980000001000000020002036d78330663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +27880 +b62004255018fbb8ea1f00000094e0a3000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af8e5403c4a650003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 +b62080010000000000000000 + +27881 +3da5000000010000000000000e616c6c6361727374726164696e67026e6c00000f0001 +3da5800000010000000200020e616c6c6361727374726164696e67026e6c00000f0001c00c00020001000151800013036e73310c62656472696a76656e776562c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d90867fec04e00010001000151800004c1ad2bfe + +27882 +305100000001000000000000026e73076e656473746174026e6c0000010001 +305180000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +27883 +24bc00000001000000000000036e7333076e656473746174026e6c0000010001 +24bc80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +27884 +b62004335011fbaadccb0000000000000000 +b62080010000000000000000 + +27885 +5de200000001000000000000036e733103757063026e6c0000010001 +5de280000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +27886 +aef100000001000000000000046e733032066368656c6c6f026e6c0000010001 +aef180000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +27887 +39cf00100001000000000001076e73617574683203626974026e6c00000100010000290800000000000000 +39cf80000001000000030004076e73617574683203626974026e6c0000010001c0140002000100015180000a076e736175746831c014c01400020001000151800002c00cc0140002000100015180000a076e736175746833c014c02c00010001000151800004d5880c33c00c00010001000151800004d5880c3bc05000010001000151800004d4ccc00b0000291000000000000000 + +27888 +6bb700100001000000000001076e73617574683103626974026e6c00000100010000290800000000000000 +6bb780000001000000030004076e73617574683103626974026e6c0000010001c01400020001000151800002c00cc0140002000100015180000a076e736175746832c014c0140002000100015180000a076e736175746833c014c00c00010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b0000291000000000000000 + +27889 +000000007002faf02c3a0000020405b401010402 +000080010000000000000000 + +27890 +803b00000001000000000000046163633203727330026e6c00000f0001 +803b80000001000000020002046163633203727330026e6c00000f0001c01100020001000151800009036e7331026973c015c01100020001000151800006036e7332c02dc02900010001000151800004d5852102c03e00010001000151800004d5c41503 + +27891 +277900000001000000000000076e73617574683203626974026e6c0000010001 +277980000001000000030003076e73617574683203626974026e6c0000010001c0140002000100015180000a076e736175746831c014c01400020001000151800002c00cc0140002000100015180000a076e736175746833c014c02c00010001000151800004d5880c33c00c00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +27892 +177800000001000000000000076e73617574683103626974026e6c0000010001 +177880000001000000030003076e73617574683103626974026e6c0000010001c01400020001000151800002c00cc0140002000100015180000a076e736175746832c014c0140002000100015180000a076e736175746833c014c00c00010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +27893 +b62004345010fbaadcca0000000000000000 +b62080010000000000000000 + +27894 +b80800000001000000000000036e733107737572666e6574026e6c0000010001 +b80880000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +27895 +33760000000100000000000004646e7331066d696e6c6e76026e6c0000010001 +33768000000100000003000304646e7331066d696e6c6e76026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +27896 +40cb0000000100000000000004646e7332066d696e6c6e76026e6c0000010001 +40cb8000000100000003000304646e7332066d696e6c6e76026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +27897 +26ff00000001000000000000037777770d766f657462616c6f6e6c696e65026e6c0000010001 +26ff80000001000000030002037777770d766f657462616c6f6e6c696e65026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +27898 +2e7b00000001000000000000026e730b6973642d686f6c6c616e64024e4c0000010001 +2e7b80000001000000020002026e730b6973642d686f6c6c616e64024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +27899 +b61c0000000100000000000003777777096d637665656e64616d07667265656c6572026e6c0000010001 +b61c8000000100000002000003777777096d637665656e64616d07667265656c6572026e6c0000010001c01a000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c01a0002000100015180000e0b65766973702d6e732d3032c042 + +27900 +0a4100000001000000000000046d61696c0463646c73026e6c0000010001 +0a4180000001000000020002046d61696c0463646c73026e6c0000010001c0110002000100015180000a036e733003696270c016c01100020001000151800006036e7331c02ec02a00010001000151800004c1ac2d8cc04000010001000151800004c1ac2d8d + +27901 +b620f85c5010faf0aa700000000000000000 + + +27902 +e13f000000010000000000000469632d73026e6c00000f0001 +e13f800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +27903 +26fb0000000100000000000003687664026e6c00000f0001 +26fb8000000100000002000203687664026e6c00000f0001c00c000200010001518000110a6c65757665686176656e03696772c010c00c0002000100015180000d0a64656c6673686176656ec02fc024000100010001518000043e2d5e0dc041000100010001518000043e2d5e82 + +27904 +31760000000100000000000003777777156d6161746a657370726f6a6563746472656e746865026e6c0000010001 +31768000000100000002000003777777156d6161746a657370726f6a6563746472656e746865026e6c0000010001c0100002000100015180000c026e7306766576696461c026c01000020001000151800006036e7332c03d + +27905 +b620f85c5018faf073ec00000095ab9c000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc88403c4e080003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 + + +27906 +3d740000000100000000000004646e7331066d696e6c6e76026e6c0000010001 +3d748000000100000003000304646e7331066d696e6c6e76026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +27907 +9eba0000000100000000000004646e7332066d696e6c6e76026e6c0000010001 +9eba8000000100000003000304646e7332066d696e6c6e76026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +27908 +9cde00000001000000000000037777771368696c76657273756d7a69656b656e68756973026e6c0000010001 +9cde80000001000000020002037777771368696c76657273756d7a69656b656e68756973026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c024c01000020001000151800006036e7332c03cc03800010001000151800004d994ae77c056000100010001518000045054ea06 + +27909 +cf5d0000000100000000000004646e7331066d696e6c6e76026e6c0000260001 +cf5d8000000100000003000304646e7331066d696e6c6e76026e6c0000260001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +27910 +530f0000000100000000000004646e7332066d696e6c6e76026e6c0000260001 +530f8000000100000003000304646e7332066d696e6c6e76026e6c0000260001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +27911 +5dc20000000100000000000009646967657269646f6f056d62757975026e6c0000010001 +5dc28000000100000002000009646967657269646f6f056d62757975026e6c0000010001c01600020001000151800010026e73076379736f6e657403636f6d00c01600020001000151800006036e7331c033 + +27912 +4c7700000001000000000000037777770a6e6f657366696f6c6574026e6c0000010001 +4c7780000001000000020000037777770a6e6f657366696f6c6574026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c035 + +27913 +45d10000000100000000000003777777086b72756974766174026e6c0000010001 +45d18000000100000002000103777777086b72756974766174026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +27914 +3cc600000001000000000000037777770c6d6f6465726e656b756e7374026e6c0000010001 +3cc680000001000000020002037777770c6d6f6465726e656b756e7374026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec01dc01000020001000151800006036e7332c035c03100010001000151800004c3b1f203c04f00010001000151800004d4ccf533 + +27915 +34e4000000010000000000000377777703746d66026e6c0000010001 +34e4800000010000000200000377777703746d66026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c02c + +27916 +0cba000000010000000000000977696c62656666656e026e6c00000f0001 +0cba800000010000000200000977696c62656666656e026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02d + +27917 +00780000000100000000000007736d756c776562026e6c00000f0001c0 +00788000000100000002000207736d756c776562026e6c00000f0001c00c0002000100015180000a036e7331036f6c6dc014c00c00020001000151800012036e73310b7669616e6574776f726b73c014c02800010001000151800004c3126e21c03e00010001000151800004d43d0f08 + +27918 +3e220000000100000000000006617363696e74026e6c0000ff0001 +3e228000000100000002000206617363696e74026e6c0000ff0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c + +27919 +6303000000010000000000000667626564616d026e6c00000f0001 +6303800000010000000200010667626564616d026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c013c04000010001000151800004c2860043 + +27920 +b620f86a5011fae2a9d80000000000000000 + + +27921 +000000007002faf0d0ad0000020405b401010402 +000080010000000000000000 + +27922 +a1b300000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657306646f6d61696e026e6c0000060001 +a1b384030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657306646f6d61696e026e6c0000060001c03b00060001000038400036026e730f646f6d61696e2d7265676973747279c03b0a686f73746d6173746572c0520bf1e540000070800000384000278d0000003840 + +27923 +1220000000010000000000000d6d61726b6675726e6974757265026e6c00000f0001 +1220800000010000000300020d6d61726b6675726e6974757265026e6c00000f0001c00c0002000100015180000d036e733106776964657873c01ac00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +27924 +b620f86b5010fae2a9d70000000000000000 + + +27925 +2dcb0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dcb8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27926 +075800000001000000000000037777770676766178656c026e6c0000010001 +075880000001000000020000037777770676766178656c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +27927 +3478000000010000000000000c706f6f6c746563686e696373026e6c00000f0001 +3478800000010000000200000c706f6f6c746563686e696373026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +27928 +f78e000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +f78e800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27929 +e3e9000000010000000000000973636869656c616e64026e6c00001c0001 +e3e9800000010000000200020973636869656c616e64026e6c00001c0001c00c0002000100015180000c036e73310563736e6574c016c00c00020001000151800006036e7332c02ec02a00010001000151800004c2451012c04200010001000151800004c2451212 + +27930 +cf9f000000010000000000000657324b41445608736a616832303030026e6c0000060001 +cf9f840300010000000100000657324b41445608736a616832303030026e6c0000060001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +27931 +282e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +282e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27932 +6e580000000100000000000005646e732d32056c61646f74026e6c0000010001 +6e588000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27933 +b621d5c55010faf0717a0000000000000000 + + +27934 +3edb00000001000000000000037777770773657870657274026e6c0000010001 +3edb80000001000000030003037777770773657870657274026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +27935 +4ca20000000100000000000006636861726973026e6c00000f0001 +4ca28000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +27936 +a25800000001000000000000037777770a73706565646d65746572026e6c0000010001 +a25880000001000000020000037777770a73706565646d65746572026e6c0000010001c0100002000100015180000f036e7331087765622d62656174c01bc01000020001000151800006036e7332c033 + +27937 +b621d5c55018faf0905b000000955738000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc88403c4e080003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 + + +27938 +b051000000010000000000000673696d706c79026e6c00000f0001 +b051800000010000000300000673696d706c79026e6c00000f0001c00c00020001000151800016026e730b73696d706c796e616d657302636f02756b00c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02a + +27939 +9b590000000100000000000003777777056e6f6b6961026e6c0000010001 +9b598000000100000004000003777777056e6f6b6961026e6c0000010001c0100002000100015180000e026e73056e6f6b696103636f6d00c01000020001000151800006036e7332c02dc0100002000100015180000b046e73646103657874c02dc01000020001000151800007046e73686bc05b + +27940 +5c3b000000010000000000000377777703726e6c026e6c0000010001 +5c3b800000010000000300030377777703726e6c026e6c0000010001c0100002000100015180000e046865726101780463756369c014c0100002000100015180000c066865726d6573026e6cc02fc01000020001000151800009066865726d6573c02dc02800010001000151800004d47d8001c04200010001000151800004c143ef02c05a00010001000151800004d47d8002 + +27941 +3700000000010000000000000b6d61696c66696c7465723203696772026e6c0000010001 +3700800000010000000200020b6d61696c66696c7465723203696772026e6c0000010001c0180002000100015180000d0a6c65757665686176656ec018c0180002000100015180000d0a64656c6673686176656ec018c030000100010001518000043e2d5e0dc049000100010001518000043e2d5e82 + +27942 +311800100001000000000001026e73076e65746c616e64026e6c00000100010000290800000000000000 +311880000001000000020003026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c060000291000000000000000 + +27943 +6b47000000010000000000000c6d63636e656465726c616e64026e6c0000ff0001 +6b47800000010000000300030c6d63636e656465726c616e64026e6c0000ff0001c00c00020001000151800010036e733109736974656279746573c019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d00010001000151800004c2a55e5ac04900010001000151800004c356781cc05b000100010001518000043ec58016 + +27944 +8c0b00100001000000000001036e7332076e65746c616e64026e6c00000100010000290800000000000000 +8c0b80000001000000020003036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c060000291000000000000000 + +27945 +de5500000001000000000000036e73330767617574656e67026e6c0000010001 +de5580000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27946 +c9ef00000001000000000000036e73340767617574656e67026e6c0000010001 +c9ef80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27947 +028f00000001000000000000036e73330767617574656e67026e6c0000010001 +028f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27948 +469f000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +469f800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +27949 +934d00100001000000000001046162656c0564656d6f6e026e6c00000f00010000290800000080000000 +934d80000001000000030003046162656c0564656d6f6e026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb0040000291000000000000000 + +27950 +6ba6000000010000000000000377777706766574726f6e026e6c0000010001 +6ba6800000010000000300010377777706766574726f6e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +27951 +6c5b00000001000000000000066e696b69746107746f7368696261026e6c0000010001 +6c5b80000001000000020001066e696b69746107746f7368696261026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e7332036b706e036e657400c02f00010001000151800004c1ad6a42 + +27952 +e639000000010000000000000b6d696d657377656570657207746f7368696261026e6c0000010001 +e639800000010000000200010b6d696d657377656570657207746f7368696261026e6c0000010001c01800020001000151800005026e73c018c0180002000100015180000d036e7332036b706e036e657400c03400010001000151800004c1ad6a42 + +27953 +82bf00000001000000000000036c6f670963616d706169676e73026e6c0000010001 +82bf80000001000000020002036c6f670963616d706169676e73026e6c0000010001c0100002000100015180000b026e73057177697365c01ac01000020001000151800006036e7332c031c02e00010001000151800004c2927f02c04500010001000151800004c2927f03 + +27954 +b61b832150112da081320000000000000000 + + +27955 +b621d5d35011fae270e20000000000000000 + + +27956 +cd4d0000000100000000000003777777136465686f74656c776161726465636865717565026e6c0000010001 +cd4d8000000100000002000203777777136465686f74656c776161726465636865717565026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c024c01000020001000151800006036e7332c03bc03800010001000151800004d9aa2042c05100010001000151800004d9aa2c06 + +27957 +000000007002faf04b080000020405b401010402 +000080010000000000000000 + +27958 +94e100000001000000000000026763065f6d736463730d696e7472612d76656e68756973026e6c0000060001 +94e184030001000000010000026763065f6d736463730d696e7472612d76656e68756973026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +27959 +0eba0000000100000000000003777777076b75656e776179026e6c0000010001 +0eba8000000100000002000003777777076b75656e776179026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c032 + +27960 +132d0000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +132d8000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +27961 +1b2300000001000000000000037777770e6669746e657373666163746f7279026e6c0000010001 +1b2380000001000000020002037777770e6669746e657373666163746f7279026e6c0000010001c01000020001000151800012036e73350b73696c766572706f696e74c01fc01000020001000151800006036e7336c037c0330001000100015180000450f7c702c0510001000100015180000450f7c602 + +27962 +c04500000001000000000000037777771067616c657269656d6572656e77696a6b026e6c0000010001 +c04580000001000000020002037777771067616c657269656d6572656e77696a6b026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec021c01000020001000151800006036e7332c039c03500010001000151800004c3b1f203c05300010001000151800004d4ccf533 + +27963 +63db00000001000000000000037777770b6d696e6f6c74612d716d73026e6c0000010001 +63db80000001000000020000037777770b6d696e6f6c74612d716d73026e6c0000010001c01000020001000151800012036e7331086e65746e616d6573036e657400c01000020001000151800006036e7332c034 + +27964 +129200000001000000000000036e73330767617574656e67026e6c0000010001 +129280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +27965 +b621d5d45010fae270e10000000000000000 + + +27966 +42bc00000001000000000000037777770a76696c6c61736173736f026e6c0000010001 +42bc80000001000000030001037777770a76696c6c61736173736f026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +27967 +fffd00000001000000000000036e73320763697374726f6e026e6c0000010001 +fffd80000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +27968 +06bd00000001000000000000036e73320763697374726f6e026e6c0000260001 +06bd80000001000000020002036e73320763697374726f6e026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +27969 +b71b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b71b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27970 +783500000001000000000000066265726e6572026e6c00001c0001 +783580000001000000020000066265726e6572026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +27971 +0000000060025e38547f0000020405b40000 +000080010000000000000000 + +27972 +74160010000100000000000103777777076e6574706f6c6c026e6c00000100010000290800000080000000 +74168000000100000002000103777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c0300000291000000000000000 + +27973 +b62289055010faf038940000000000000000 + + +27974 +712000000001000000000000046162656c0564656d6f6e026e6c00000f0001 +712080000001000000030002046162656c0564656d6f6e026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +27975 +b6234c9c50102da09a040000000000000000 +b623cc940000000000000000 + +27976 +8f150000000100000000000003777777057269646573026e6c0000010001 +8f158000000100000002000203777777057269646573026e6c0000010001c0100002000100015180000a036e733103686978c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +27977 +433b000000010000000000000377777702657a0962696b65706f776572026e6c0000010001 +433b800000010000000200020377777702657a0962696b65706f776572026e6c0000010001c0130002000100015180000a036e733103677673c01dc01300020001000151800006036e7332c035c031000100010001518000045054e1aac04700010001000151800004d4ccc646 + +27978 +5d42000000010000000000000377777707736974652d6964026e6c0000010001 +5d42800000010000000300000377777707736974652d6964026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +27979 +783b000000010000000000000c7175657374696f6e6d617263026e6c00000f0001 +783b800000010000000200020c7175657374696f6e6d617263026e6c00000f0001c00c00020001000151800014036e73310d706f7765727365727665723230c019c00c00020001000151800006036e7332c031c02d000100010001518000045104711dc04d000100010001518000045104711e + +27980 +b62289055018faf0abd90000009502d4000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc88403c4e080003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 + + +27981 +84da00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +84da80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27982 +20e700000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +20e780000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +27983 +e43700000001000000000000036e733503777873026e6c0000010001 +e43780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +27984 +c95700000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +c95780000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27985 +1bc500000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +1bc580000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27986 +50e400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +50e480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27987 +a00700000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +a00780000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +27988 +6d610000000100000000000009696e74657274617371026e6c00000f0001 +6d618000000100000002000209696e74657274617371026e6c00000f0001c00c00020001000151800011036e73310a66617374736572766572c016c00c00020001000151800006036e7332c02ec02a0001000100015180000442a4f390c0470001000100015180000442a4f399 + +27989 +5c3d0000000100000000000003656d61026e6c00000f0001 +5c3d8000000100000002000003656d61026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c010c00c0002000100015180000704686e7331c029 + +27990 +b62289135011fae237fc0000000000000000 + + +27991 +356200000001000000000000037777770e6b616d6572612d65787072657373026e6c0000010001 +356280000001000000020000037777770e6b616d6572612d65787072657373026e6c0000010001c01000020001000151800014026e730b736d617274736572766572036e657400c01000020001000151800006036e7332c036 + +27992 +ee6300000001000000000000037777770e6e696575776a616172736475696b026e6c0000010001 +ee6380000001000000020002037777770e6e696575776a616172736475696b026e6c0000010001c0100002000100015180000b026e73056e65726f63c01fc01000020001000151800006036e7332c036c03300010001000151800004d434010ac04a00010001000151800004d434000a + +27993 +7b0a00000001000000000000037777770a70617274797669626573026e6c0000010001 +7b0a80000001000000020002037777770a70617274797669626573026e6c0000010001c0100002000100015180000a036e733103706777c01bc01000020001000151800006036e7332c033c02f000100010001518000043e818832c04500010001000151800004d4ccc621 + +27994 +5eb50000000100000000000011626f736d616e6f706c656964696e67656e026e6c00000f0001 +5eb58000000100000002000211626f736d616e6f706c656964696e67656e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ec00c00020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +27995 +b62289145010fae237fb0000000000000000 + + +27996 +2f4d0000000100000000000003777777097265616c2d6c696665026e6c0000010001 +2f4d8000000100000002000203777777097265616c2d6c696665026e6c0000010001c01000020001000151800012036e73310b73697465686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004cf2410f1c04c00010001000151800004cf2410f2 + +27997 +55bd00000001000000000000037777770a696e7465727374617473026e6c0000010001 +55bd80000001000000020000037777770a696e7465727374617473026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +27998 +b71f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b71f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +27999 +3a720000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +3a728000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28000 +b71e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b71e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28001 +b6234c9c50102da027580000008c3b42000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd67403c4ee700030000002f4e544c4d535350000100000097b200e0050005002a0000000a000a0020000000434f4d505554455231384e504942560000 +b623cc940000000000000000 + +28002 +3a7a0000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +3a7a8000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28003 +3fb200000001000000000000036e733503777873026e6c0000260001 +3fb280000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28004 +b6234caa501027ec9f1c0000000000000000 +b623cca40000000000000000 + +28005 +c06f0000000100000000000003777777076e6574706f6c6c026e6c0000010001 +c06f8000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +28006 +6fe40000000100000000000003777777056b6e627362026e6c0000010001 +6fe48000000100000002000203777777056b6e627362026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec016c01000020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +28007 +f9d300000001000000000000036e7331046372696f026e6c0000010001 +f9d380000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +28008 +579c00000001000000000000036e7332046372696f026e6c0000010001 +579c80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +28009 +816800000001000000000000037777770a72656372656174696566026e6c0000010001 +816880000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +28010 +c60900000001000000000000036e7335046372696f026e6c0000010001 +c60980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +28011 +57f300000001000000000000036e7336046372696f026e6c0000010001 +57f380000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +28012 +2bf5000000010000000000000776726f7577656e077275627269656b026e6c0000010001 +2bf5800000010000000200000776726f7577656e077275627269656b026e6c0000010001c0140002000100015180000c026e7306766576696461c01cc01400020001000151800006036e7332c033 + +28013 +d15500000001000000000000026e73027575026e6c0000010001 +d15580000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +28014 +d15500000001000000000000026e73027575026e6c0000010001 +d15580000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +28015 +753e0000000100000000000006787334616c6c026e6c00001c0001 +753e8000000100000003000206787334616c6c026e6c00001c0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +28016 +99300000000100000000000003777777096575726f6d61696c73026e6c0000010001 +99308000000100000003000303777777096575726f6d61696c73026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000043e291ad2c04b000100010001518000043e291ad3c05d000100010001518000043e291ad4 + +28017 +eed628000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d7364637308706861697272746d026e6c00002100010000025800220000006400580e70686169722d72746d2d6d61696e08706861697272746d026e6c00 +eed6a8040000000000000000 + +28018 +1a1500000001000000000000077365727665723007646d6661637473026e6c0000010001 +1a1580000001000000020000077365727665723007646d6661637473026e6c0000010001c01400020001000151800010036e73310673697465347503636f6d00c01400020001000151800006036e7332c034 + +28019 +1735000000010000000000000564656d6f6e026e6c00000f0001 +1735800000010000000300020564656d6f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000f036e73320564656d6f6e036e657400c02600010001000151800004c29f4906c03800010001000151800004c29fb004 + +28020 +8425000000010000000000000564656d6f6e026e6c00000f0001 +8425800000010000000300020564656d6f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000f036e73320564656d6f6e036e657400c02600010001000151800004c29f4906c03800010001000151800004c29fb004 + +28021 +0530000000010000000000000474726566026e6c0000010001 +0530800000010000000200020474726566026e6c0000010001c00c0002000100015180000e036e7331076167726f776562c011c00c00020001000151800006036e7332c029c025000100010001518000043e5de217c03f000100010001518000043e5de222 + +28022 +464200000001000000000000046d61696c106b6f72746d616e2d696e74726164616c026e6c0000010001 +464280000001000000020002046d61696c106b6f72746d616e2d696e74726164616c026e6c0000010001c0110002000100015180000e036e733107616e7461726573c022c01100020001000151800006036e7332c03ac036000100010001518000043e3a260bc050000100010001518000043e3a260c + +28023 +592500000001000000000000077765626d61696c086e696a6d6567656e026e6c0000010001 +592580000001000000020002077765626d61696c086e696a6d6567656e026e6c0000010001c0140002000100015180000f036e73330874656c6562797465c01dc01400020001000151800006036e7334c035c03100010001000151800004d5d38115c04c00010001000151800004d5d38116 + +28024 +d22700000001000000000000046372657709747765616b7a6f6e65026e6c0000010001 +d22780000001000000020000046372657709747765616b7a6f6e65026e6c0000010001c01100020001000151800014036e73310a646f6c7068696e2d6973036e657400c01100020001000151800006036e7332c033 + +28025 +7aae0000000100000000000003766937036f72670c62727567676572626f7363680c62727567676572626f736368026e6c0000010001 +7aae8000000100000002000003766937036f72670c62727567676572626f7363680c62727567676572626f736368026e6c0000010001c0210002000100015180000b026e73026e6c036e657400c0210002000100015180001206617574683630026e73026e6c027575c048 + +28026 +f0b10000000100000000000005646e732d31056c61646f74026e6c0000010001 +f0b18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28027 +b2ba0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b2ba8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28028 +5747000000010000000000000377777708636f6e6e65787973026e6c0000010001 +5747800000010000000300030377777708636f6e6e65787973026e6c0000010001c0100002000100015180000f046e732d310774657075636f6dc019c01000020001000151800007046e732d32c032c01000020001000151800007046e732d33c032c02d000100010001518000043e320d4cc04800010001000151800004c356164ac05b00010001000151800004c3510c03 + +28029 +f4d400000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +f4d480000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28030 +0edd00000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +0edd80000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28031 +126f000000010000000000000377777709616c7465726e617465026e6c0000010001 +126f800000010000000200020377777709616c7465726e617465026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01ac01000020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +28032 +ff230000000100000000000005646e732d31056c61646f74026e6c0000010001 +ff238000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28033 +ef340000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ef348000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28034 +e664000000010000000000000667656d6e6f70026e6c00000f0001 +e664800000010000000200000667656d6e6f70026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +28035 +7ffd0000000100000000000005646e732d32056c61646f74026e6c0000010001 +7ffd8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28036 +60ec0000000100000000000003777777117265636c616d656c616e67736465776567026e6c0000010001 +60ec8000000100000002000003777777117265636c616d656c616e67736465776567026e6c0000010001c01000020001000151800012036e733708786c736572766572036e657400c01000020001000151800006036e7338c03a + +28037 +cdf100000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +cdf180000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28038 +529400000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +529480000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28039 +bf510000000100000000000007706461636c7562026e6c0000010001 +bf518000000100000003000207706461636c7562026e6c0000010001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +28040 +3e140000000100000000000009652d6c756e61746963026e6c0000010001 +3e148000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +28041 +14a8000000010000000000000a6376616e6765656c6276026e6c0000010001 +14a8800000010000000200020a6376616e6765656c6276026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +28042 +000000007002faf0f8cf0000020405b401010402 +000080010000000000000000 + +28043 +b93028000001000000010000026e6c00000600010274610f746f6e65656c616d7374657264616d026e6c0000010001000002580004c0a8000b +b930a8040000000000000000 + +28044 +7a6b000000010000000000000377777712686974726164696f646967697461616c666d026e6c0000010001 +7a6b800000010000000200000377777712686974726164696f646967697461616c666d026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03d + +28045 +d09f0000000100000000000017537469636874696e6772656368747362696a7374616e64026e6c0000ff0001 +d09f8000000100000002000017537469636874696e6772656368747362696a7374616e64026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c03e + +28046 +60d30000000100000000000106686174656b61026e6c00001c00010000291000000000000000 +60d38000000100000002000106686174656b61026e6c00001c0001c00c0002000100015180000b036e73310474696469c013c00c00020001000151800006036e7332c02b0000291000000000000000 + +28047 +e1bb00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +e1bb80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +28048 +3cbe00000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +3cbe80000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +28049 +0000000070024000deb700000204059801010402 +000080010000000000000000 + +28050 +b62553b65010faf01ba80000000000000000 +b625d3b40000000000000000 + +28051 +518900000001000000000000036e733503777873026e6c0000010001 +518980000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28052 +566000000001000000000000036e733503777873026e6c00001c0001 +566080000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28053 +b625d01e5010432081eb0000000000000000 + + +28054 +b625d01e50184320ce84000000850690000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8be403c4a3e0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 + + +28055 +b62553b65018faf087e70000009508d9000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc88403c4e080003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 +b625d3b40000000000000000 + +28056 +490b00000001000000000000036e7331046a617a65026e6c0000010001 +490b80000001000000020000036e7331046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +28057 +490c00000001000000000000036e7332046a617a65026e6c0000010001 +490c80000001000000020000036e7332046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +28058 +329f00000001000000000000036e73340767617574656e67026e6c0000010001 +329f80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28059 +b625d02c5011431281630000000000000000 + + +28060 +0000000070024000cc4600000204059801010402 +000080010000000000000000 + +28061 +3a5700000001000000000000046e6f736f026e6c0000ff0001 +3a5780000001000000030002046e6f736f026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +28062 +263a0000000100000000000007766462636f6d70026e6c00001c0001 +263a8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +28063 +b625d02d5010431281620000000000000000 + + +28064 +b62553c45011fae21b100000000000000000 +b625d3c40000000000000000 + +28065 +25da0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +25da8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28066 +b6267f7450104320c0230000000000000000 +b626ff740000000000000000 + +28067 +000000007002faf0ccf40000020405b401010402 +000080010000000000000000 + +28068 +b6267f74501843201fcd00000085f480000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8be403c4a3e0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 +b626ff740000000000000000 + +28069 +28c300000001000000000000037777770b626f656b656e2d32303030026e6c0000010001 +28c380000001000000020002037777770b626f656b656e2d32303030026e6c0000010001c0100002000100015180000a026e730469636d63c01cc01000020001000151800006036e7332c033c030000100010001518000043e643805c046000100010001518000043e643806 + +28070 +0ab60000000100000000000003777777096169726672616e6365026e6c0000010001 +0ab68000000100000002000003777777096169726672616e6365026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +28071 +18640000000100000000000003777777096169726672616e6365026e6c0000010001 +18648000000100000002000003777777096169726672616e6365026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +28072 +1eef0000000100000000000004646e7332066e696a636f6d026e6c0000010001 +1eef8000000100000002000204646e7332066e696a636f6d026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02c00010001000151800004d5efb108c00c00010001000151800004d5efb116 + +28073 +20b10000000100000000000004646e7331066e696a636f6d026e6c0000010001 +20b18000000100000002000204646e7331066e696a636f6d026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d5efb108c03a00010001000151800004d5efb116 + +28074 +b6267f8250114312bf9b0000000000000000 +b626ff840000000000000000 + +28075 +000000007002400033b600000204059801010402 +000080010000000000000000 + +28076 +b62553c55010fae21b0f0000000000000000 +b625d3c40000000000000000 + +28077 +03cc0000000100000000000005686f666d78066d696e6f6377026e6c0000010001 +03cc8000000100000002000105686f666d78066d696e6f6377026e6c0000010001c01200020001000151800015086e732d69736d30310963617067656d696e69c019c0120002000100015180000b086e732d69736d3032c036c02d00010001000151800004d5f4a024 + +28078 +22b200000001000000000000036e73340767617574656e67026e6c0000010001 +22b280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28079 +32b800000001000000000000036e73340767617574656e67026e6c0000010001 +32b880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28080 +b0d1000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +b0d1800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +28081 +aa17000000010000000000000567677a6261026e6c00000f0001 +aa17800000010000000200020567677a6261026e6c00000f0001c00c0002000100015180000f036e73330874656c6562797465c012c00c00020001000151800006036e7334c02ac02600010001000151800004d5d38115c04100010001000151800004d5d38116 + +28082 +b6267f8350104312bf9a0000000000000000 +b626ff840000000000000000 + +28083 +b629a6275010432000dd0000000000000000 + + +28084 +83a8000000010000000000000c656c7365766965722d7772670a646d64656c6976657279026e6c0000010001 +83a8800000010000000200000c656c7365766965722d7772670a646d64656c6976657279026e6c0000010001c01900020001000151800010036e73310673697465347503636f6d00c01900020001000151800006036e7332c03c + +28085 +60d30000000100000000000006686174656b61026e6c00001c0001 +60d38000000100000002000006686174656b61026e6c00001c0001c00c0002000100015180000b036e73310474696469c013c00c00020001000151800006036e7332c02b + +28086 +b629a62750184320d786000000857d80000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8be403c4a3e0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 + + +28087 +53d5000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +53d5800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +28088 +4f7200000001000000000000036e733208767575727765726b026e6c0000010001 +4f7280000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +28089 +9c86000000010000000000000277770774656c666f7274026e6c0000010001 +9c86800000010000000200010277770774656c666f7274026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800014036e733202657507636f6e63657274036e657400c02b00010001000151800004d5c22815 + +28090 +b629a6355011431200550000000000000000 + + +28091 +b61b832250102da081310000000000000000 + + +28092 +79460000000100000000000009626f6f6e656b616d70026e6c0000ff0001 +79468000000100000002000209626f6f6e656b616d70026e6c0000ff0001c00c0002000100015180000c036e733105636176656fc016c00c00020001000151800006036e7332c02ec02a000100010001518000045112a002c042000100010001518000045112a102 + +28093 +e44900000001000000000000046f656372026e6c0000010001 +e44980000001000000020002046f656372026e6c0000010001c00c0002000100015180000f086d61696c6761746503657572c011c00c0002000100015180000906706f70657965c02ec0250001000100015180000482730101c0400001000100015180000482730f02 + +28094 +183d000000010000000000000a6265746572686f72656e026e6c0000ff0001 +183d800000010000000200010a6265746572686f72656e026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +28095 +b627516b5010faf0f2150000000000000000 +b627d1640000000000000000 + +28096 +3ef7000000010000000000000662616f626162026e6c00001c0001 +3ef7800000010000000200000662616f626162026e6c00001c0001c00c00020001000151800012036e73310878656e6f73697465036e657400c00c00020001000151800006036e7332c02b + +28097 +2efd000000010000000000000469632d73026e6c00000f0001 +2efd800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +28098 +b629a6365010431200540000000000000000 + + +28099 +b627516b5018faf0847000000095e1be000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc89403c4e090003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 +b627d1640000000000000000 + +28100 +517d0000000100000000000006706f7274616c0774657175696c6108666f72747974776f026e6c0000010001 +517d8000000100000002000206706f7274616c0774657175696c6108666f72747974776f026e6c0000010001c01b0002000100015180000704646e7331c01bc01b0002000100015180000704646e7332c01bc03800010001000151800004c3eaad94c04b000100010001518000045111288a + +28101 +1c3000000001000000000000037777770770616368697261026e6c0000010001 +1c3080000001000000020002037777770770616368697261026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c018c01000020001000151800006036e7332c030c02c000100010001518000045054ed14c04900010001000151800004d5f72f14 + +28102 +95ad00000001000000000000036e733208767575727765726b026e6c0000010001 +95ad80000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +28103 +42a4000000010000000000000a686f6f7273747564696f026e6c0000ff0001 +42a4800000010000000200020a686f6f7273747564696f026e6c0000ff0001c00c0002000100015180000d036e733106796f72697465c017c00c00020001000151800006036e7332c02fc02b0001000100015180000451047320c0440001000100015180000451047321 + +28104 +ae69000000010000000000000377777707636f6e74726f6c026e6c0000010001 +ae69800000010000000200000377777707636f6e74726f6c026e6c0000010001c01000020001000151800018036e7330026e6c0b7369746570726f7465637403636f6d00c01000020001000151800006036e7331c030 + +28105 +5b1a000000010000000000000568736c6177026e6c0000ff0001 +5b1a800000010000000300010568736c6177026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +28106 +50d300000001000000000000026763065f6d736463730d696e7472612d76656e68756973026e6c0000060001 +50d384030001000000010000026763065f6d736463730d696e7472612d76656e68756973026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +28107 +b62751795011fae2f17d0000000000000000 +b627d1740000000000000000 + +28108 +000000007002faf094de0000020405b401010402 +000080010000000000000000 + +28109 +8f6100000001000000000000046265756b086a6d64656a6f6e67026e6c0000010001 +8f6180000001000000020002046265756b086a6d64656a6f6e67026e6c0000010001c0110002000100015180000c026e7306787334616c6cc01ac01100020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +28110 +b653000000010000000000000377777711776f756477696a6b2d70726f6d6f746965026e6c0000010001 +b653800000010000000200000377777711776f756477696a6b2d70726f6d6f746965026e6c0000010001c01000020001000151800010036e733109666972737466696e64c022c01000020001000151800006036e7332c03a + +28111 +9c90000000010000000000000377777703646674026e6c0000010001 +9c90800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +28112 +62f6001000010000000000010e63656e747261616c626568656572026e6c00000100010000290800000000000000 +62f6800000010000000300040e63656e747261616c626568656572026e6c0000010001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae0000291000000000000000 + +28113 +367e00000001000000000000036e7332076e656473746174026e6c0000010001 +367e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28114 +9b3f00000001000000000000036e7334076e656473746174026e6c0000010001 +9b3f80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28115 +b627517a5010fae2f17c0000000000000000 +b627d1740000000000000000 + +28116 +b62a382a5010faf0d33d0000000000000000 +b62ab8240000000000000000 + +28117 +e62900000001000000000000026e73076e65746c616e64026e6c0000010001 +e62980000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +28118 +729d00000001000000000000036e7332076e65746c616e64026e6c0000010001 +729d80000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +28119 +7fe200000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657306646f6d61696e026e6c0000060001 +7fe284030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657306646f6d61696e026e6c0000060001c03b00060001000038400036026e730f646f6d61696e2d7265676973747279c03b0a686f73746d6173746572c0520bf1e540000070800000384000278d0000003840 + +28120 +90f6000000010000000000000663616e646561026e6c00000f0001 +90f6800000010000000300030663616e646561026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +28121 +a01e000000010000000000000377777703626e64026e6c0000010001 +a01e800000010000000200010377777703626e64026e6c0000010001c0100002000100015180000b08646e73626e626e6cc010c0100002000100015180000c026e73036b706e03636f6d00c02800010001000151800004c2976601 + +28122 +25b9000000010000000000000a616e67656c7373697465026e6c00000f0001 +25b9800000010000000200010a616e67656c7373697465026e6c00000f0001c00c0002000100015180000f036e73330864686f7374696e67c017c00c00020001000151800006036e7332c02fc04600010001000151800004515b000a + +28123 +bf2e00000001000000000000066f6e6c696e6503617470026e6c0000010001 +bf2e80000001000000020001066f6e6c696e6503617470026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800013036e7332026e6c0669676e697465036e657400c02b00010001000151800004d4298505 + +28124 +1053000000010000000000000377777704696b6561026e6c0000010001 +1053800000010000000200000377777704696b6561026e6c0000010001c010000200010001518000150a676174656b656570657204696b656103636f6d00c010000200010001518000130761757468323130026e73027575036e657400 + +28125 +b62a382a5018faf0b9fc000000958d5a000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afc89403c4e090003000000364e544c4d535350000100000097b208e0080008002e0000000e000e002000000050484149522d52544d2d4d41494e504841495252544d0000 +b62ab8240000000000000000 + +28126 +d97c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +d97c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28127 +c479000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +c479800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +28128 +f82c000000010000000000000377777706787878746770026e6c0000010001 +f82c800000010000000200000377777706787878746770026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02e + +28129 +2b3900000001000000000000036e733208767575727765726b026e6c0000010001 +2b3980000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +28130 +869e0000000100000000000003777777076172747465616d026e6c0000010001 +869e8000000100000003000303777777076172747465616d026e6c0000010001c01000020001000151800010036e733109736974656279746573c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c2a55e5ac04800010001000151800004c356781cc05a000100010001518000043ec58016 + +28131 +f22d000000010000000000000556534653310d76616e5f73746161766572656e026e6c0000010001 +f22d840300010000000100000556534653310d76616e5f73746161766572656e026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +28132 +b62a38385011fae2d2a50000000000000000 +b62ab8340000000000000000 + +28133 +fad100000001000000000000036e7331096e65646572686f7374026e6c0000010001 +fad180000001000000020002036e7331096e65646572686f7374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9302c03c00010001000151800004d5efb241 + +28134 +44f800000001000000000000036e7332096e65646572686f7374026e6c0000010001 +44f880000001000000020002036e7332096e65646572686f7374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9302c00c00010001000151800004d5efb241 + +28135 +166400000001000000000000037777770568616d6163026e6c0000010001 +166480000001000000020002037777770568616d6163026e6c0000010001c0100002000100015180000f026e7309656174736572766572c016c01000020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +28136 +e65400000001000000000000037777770476647764026e6c0000010001 +e65480000001000000020002037777770476647764026e6c0000010001c0100002000100015180000a036e733103686978c015c01000020001000151800006036e7332c02dc02900010001000151800004d5a0da0ac03f0001000100015180000451112ec3 + +28137 +b62a38395010fae2d2a40000000000000000 +b62ab8340000000000000000 + +28138 +088a000000010000000000000e63656e747261616c626568656572026e6c0000010001 +088a800000010000000300030e63656e747261616c626568656572026e6c0000010001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +28139 +27140000000100000000000005646e732d31056c61646f74026e6c0000010001 +27148000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28140 +265e0000000100000000000006706f7274616c0774657175696c6108666f72747974776f026e6c0000010001 +265e8000000100000002000206706f7274616c0774657175696c6108666f72747974776f026e6c0000010001c01b0002000100015180000704646e7331c01bc01b0002000100015180000704646e7332c01bc03800010001000151800004c3eaad94c04b000100010001518000045111288a + +28141 +0ae600000001000000000000036e733109786974656d65646961026e6c0000010001 +0ae680000001000000020002036e733109786974656d65646961026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efa404c04b00010001000151800004d5efa405 + +28142 +02b700000001000000000000036e733209786974656d65646961026e6c0000010001 +02b780000001000000020002036e733209786974656d65646961026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efa404c04b00010001000151800004d5efa405 + +28143 +b6234caa50112da099670000000000000000 +b623cca40000000000000000 + +28144 +2e4a0000000100000000000003776c7a026e6c00000f0001 +2e4a8000000100000002000103776c7a026e6c00000f0001c00c00020001000151800006036e7330c00cc00c00020001000151800010036e7330066361726f7461036e657400c02400010001000151800004c14389fa + +28145 +9c5800100001000000000001036e733104686f6d65026e6c00000100010000290800000080000000 +9c5880000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +28146 +4e2c00100001000000000001036e733104686f6d65026e6c00002600010000290800000080000000 +4e2c80000001000000030004036e733104686f6d65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +28147 +271600100001000000000001036e733204686f6d65026e6c00000100010000290800000080000000 +271680000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +28148 +938b00100001000000000001036e733204686f6d65026e6c00002600010000290800000080000000 +938b80000001000000030004036e733204686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +28149 +dba900100001000000000001036e733304686f6d65026e6c00000100010000290800000080000000 +dba980000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +28150 +922300100001000000000001036e733304686f6d65026e6c00002600010000290800000080000000 +922380000001000000030004036e733304686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +28151 +1b0500100001000000000001036e733404686f6d65026e6c00000100010000290800000080000000 +1b0580000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +28152 +d27a00000001000000000000037777770a7374617274706f726e6f026e6c0000010001 +d27a80000001000000020000037777770a7374617274706f726e6f026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +28153 +994000100001000000000001036e733404686f6d65026e6c00002600010000290800000080000000 +994080000001000000030004036e733404686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +28154 +690b0000000100000000000003616267026e6c0000010001 +690b8000000100000003000203616267026e6c0000010001c00c0002000100015180000d036e733106776964657873c010c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c028c02400010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +28155 +79710000000100000000000003524b5a024e4c00000f0001 +79718000000100000002000203524b5a024e4c00000f0001c00c0002000100015180000c036e7331056e6574636fc010c00c00020001000151800006036e7332c028c02400010001000151800004c26d4a82c03c00010001000151800004c26dd146 + +28156 +384c0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +384c8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +28157 +1b040000000100000000000003777777056578616374026e6c0000010001 +1b048000000100000002000103777777056578616374026e6c0000010001c01000020001000151800008056578616374c010c0100002000100015180000b026e73026e6c036e657400c02a00010001000151800004910e3c0a + +28158 +14e100000001000000000000086f707573666c6f77026e6c00000f0001 +14e180000001000000020002086f707573666c6f77026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +28159 +17a00000000100000000000009726f7a656e62757267026e6c00000f000100 +17a08000000100000002000209726f7a656e62757267026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c016c00c00020001000151800006036e7331c02dc02a00010001000151800004504f6101c04400010001000151800004504f6102 + +28160 +b2a9000000010000000000000377777707676f6d756e646f026e6c0000010001 +b2a9800000010000000200000377777707676f6d756e646f026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +28161 +93a400000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +93a480000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +28162 +e49100000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +e49180000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28163 +fce500000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +fce580000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28164 +63df000000010000000000000377777706637662616e6b026e6c0000010001 +63df800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28165 +4ca000000001000000000000036e733104686f6d65026e6c0000010001 +4ca080000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +28166 +265000000001000000000000036e733104686f6d65026e6c0000260001 +265080000001000000030003036e733104686f6d65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +28167 +89b100000001000000000000036e733204686f6d65026e6c0000010001 +89b180000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +28168 +528200000001000000000000036d78310761737034616c6c026e6c0000010001 +528280000001000000030003036d78310761737034616c6c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28169 +265700000001000000000000036d78310761737034616c6c026e6c00001c0001 +265780000001000000030003036d78310761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28170 +e56b00000001000000000000036d78310761737034616c6c026e6c0000260001 +e56b80000001000000030003036d78310761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28171 +3cf600000001000000000000036d78320761737034616c6c026e6c0000010001 +3cf680000001000000030003036d78320761737034616c6c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28172 +b35700000001000000000000036d78320761737034616c6c026e6c00001c0001 +b35780000001000000030003036d78320761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28173 +7d0d00000001000000000000036d78320761737034616c6c026e6c0000260001 +7d0d80000001000000030003036d78320761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +28174 +78fb00000001000000000000036e73310761737034616c6c026e6c00001c0001 +78fb80000001000000030003036e73310761737034616c6c026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +28175 +633d00000001000000000000036e733304686f6d65026e6c0000010001 +633d80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +28176 +860900000001000000000000036e73310761737034616c6c026e6c0000260001 +860980000001000000030003036e73310761737034616c6c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +28177 +c8cc00000001000000000000036e733304686f6d65026e6c0000260001 +c8cc80000001000000030003036e733304686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +28178 +82a300000001000000000000036e73320761737034616c6c026e6c00001c0001 +82a380000001000000030003036e73320761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c00c000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +28179 +646600000001000000000000036e733404686f6d65026e6c0000010001 +646680000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +28180 +323300000001000000000000036e733404686f6d65026e6c0000260001 +323380000001000000030003036e733404686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +28181 +fdac00000001000000000000036e73320761737034616c6c026e6c0000260001 +fdac80000001000000030003036e73320761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c00c000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +28182 +abd200000001000000000000036e73330761737034616c6c026e6c00001c0001 +abd280000001000000030003036e73330761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +28183 +b99b00000001000000000000036e73330761737034616c6c026e6c0000260001 +b99b80000001000000030003036e73330761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +28184 +dd3c000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +dd3c800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28185 +749e000000010000000000000672656c6179320b7669616e6574776f726b73026e6c0000010001 +749e800000010000000200020672656c6179320b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28186 +6eb00000000100000000000006636861726973026e6c0000010001 +6eb08000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +28187 +5a690000000100000000000004656e6369026e6c0000010001 +5a698000000100000002000004656e6369026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +28188 +6d4000000001000000000000026e7306787334616c6c026e6c0000010001 +6d4080000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +28189 +f89500000001000000000000036e733206787334616c6c026e6c0000010001 +f89580000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +28190 +90ca00000001000000000000037777770976772d63656e746572026e6c0000010001 +90ca80000001000000020000037777770976772d63656e746572026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c032 + +28191 +5d11000000010000000000000377777707696d67696e666f026e6c0000010001 +5d11800000010000000200000377777707696d67696e666f026e6c0000010001c0100002000100015180000e036e7333046965747a03636f6d00c01000020001000151800006036e7334c030 + +28192 +9955000000010000000000000967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001 +9955800000010000000200020967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001c0160002000100015180000f036e73310861746c616e74697ac024c01600020001000151800006036e7332c03cc03800010001000151800004d5efa011c05300010001000151800004d5efa075 + +28193 +0a80000000010000000000000377777706637662616e6b026e6c0000010001 +0a80800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28194 +47a500000001000000000000037777770b67736d70726f6475637473026e6c0000010001 +47a580000001000000020000037777770b67736d70726f6475637473026e6c0000010001c01000020001000151800018036e73370e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7338c034 + +28195 +e3c6000000010000000000000663617374656c026e6c0000ff0001 +e3c6800000010000000200020663617374656c026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +28196 +328c000000010000000000000377777706637662616e6b026e6c0000010001 +328c800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28197 +058800000001000000000000026e730c6d65676170726f7669646572026e6c00001c0001 +058880000001000000030003026e730c6d65676170726f7669646572026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +28198 +88e400000001000000000000026e730c6d65676170726f7669646572026e6c0000260001 +88e480000001000000030003026e730c6d65676170726f7669646572026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c0001000100015180000450474002c03e0001000100015180000450474102c05000010001000151800004d943ee57 + +28199 +523800000001000000000000036e73320c6d65676170726f7669646572026e6c00001c0001 +523880000001000000030003036e73320c6d65676170726f7669646572026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0310001000100015180000450474002c00c0001000100015180000450474102c05000010001000151800004d943ee57 + +28200 +d20e00000001000000000000036e73320c6d65676170726f7669646572026e6c0000260001 +d20e80000001000000030003036e73320c6d65676170726f7669646572026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0310001000100015180000450474002c00c0001000100015180000450474102c05000010001000151800004d943ee57 + +28201 +0a9100000001000000000000036e733208767575727765726b026e6c0000010001 +0a9180000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +28202 +83d200000001000000000000054d4f4c454e0350434d026e6c0000010001 +83d280000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +28203 +e4de00000001000000000000037777770d656e6572676965646972656374026e6c0000010001 +e4de80000001000000020001037777770d656e6572676965646972656374026e6c0000010001c01000020001000151800015086e732d69736d30310963617067656d696e69c01ec0100002000100015180000b086e732d69736d3032c03bc03200010001000151800004d5f4a024 + +28204 +0a80000000010000000000000377777706637662616e6b026e6c0000010001 +0a80800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28205 +0a80000000010000000000000377777706637662616e6b026e6c0000010001 +0a80800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28206 +af2300000001000000000000036e733106657472616465026e6c00001c0001 +af2380000001000000020000036e733106657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +28207 +98a800000001000000000000036e733106657472616465026e6c0000260001 +98a880000001000000020000036e733106657472616465026e6c0000260001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +28208 +c94d00000001000000000000036e733206657472616465026e6c00001c0001 +c94d80000001000000020000036e733206657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +28209 +ec7500000001000000000000036e733206657472616465026e6c0000260001 +ec7580000001000000020000036e733206657472616465026e6c0000260001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +28210 +09fc00000001000000000000036f617a026e6c0000ff0001 +09fc80000001000000020002036f617a026e6c0000ff0001c00c0002000100015180000f036e73310861746c616e74697ac010c00c00020001000151800006036e7332c028c02400010001000151800004d5efa011c03f00010001000151800004d5efa075 + +28211 +2f8100000001000000000000076f626a65637473026e6c0000ff0001 +2f8180000001000000030003076f626a65637473026e6c0000ff0001c00c0002000100015180000e046865726101780463756369c014c00c0002000100015180000c066865726d6573026e6cc02fc00c00020001000151800009066865726d6573c02dc02800010001000151800004d47d8001c04200010001000151800004c143ef02c05a00010001000151800004d47d8002 + +28212 +328c000000010000000000000377777706637662616e6b026e6c0000010001 +328c800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28213 +328c000000010000000000000377777706637662616e6b026e6c0000010001 +328c800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28214 +415400000001000000000000037777770b726563687473707261616b026e6c026e6c0000010001 +415484030001000000010000037777770b726563687473707261616b026e6c026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +28215 +d8cf00000001000000000000127a65696c7363686f6f6c61616c736d656572026e6c0000010001 +d8cf80000001000000020002127a65696c7363686f6f6c61616c736d656572026e6c0000010001c00c00020001000151800011046d61727309637962657263697479c01fc00c000200010001518000080576656e7573c038c0330001000100015180000451113ff0c0500001000100015180000451113ff1 + +28216 +33dc00000001000000000000146e69657577736272696576656e73657276696365026e6c00000f0001 +33dc80000001000000030001146e69657577736272696576656e73657276696365026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +28217 +9d76000000010000000000000377777705686965726f026e6c0000010001 +9d76800000010000000200000377777705686965726f026e6c0000010001c01000020001000151800018036e73310e7765626d61727463656e7472616c03636f6d00c01000020001000151800006036e7332c02e + +28218 +3aec000000010000000000000b7374617274706167696e610861726e6f73746174026e6c0000010001 +3aec800000010000000200020b7374617274706167696e610861726e6f73746174026e6c0000010001c0180002000100015180000e026e7308696e7465722d6974c021c01800020001000151800006036e7332c038c03500010001000151800004d5c4385ac04f00010001000151800004d5c4385b + +28219 +c9f100000001000000000000046d61696c08676f656469646565026e6c0000ff0001 +c9f180000001000000020000046d61696c08676f656469646565026e6c0000ff0001c01100020001000151800010026e730777697265687562036e657400c01100020001000151800006036e7332c031 + +28220 +3b0c000000010000000000000477697368026e6c00000f0001 +3b0c800000010000000300020477697368026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +28221 +4c6300000001000000000000037777770e776562686f7374696e6774616c6b026e6c0000010001 +4c6380000001000000030002037777770e776562686f7374696e6774616c6b026e6c0000010001c01000020001000151800012036e73310b6b6c696b686f7374696e67c01fc01000020001000151800006036e7332c037c01000020001000151800015036e73310b6b6c696b686f7374696e6703636f6d00c033000100010001518000044260dd7ec051000100010001518000044260dd7f + +28222 +22f0001000010000000000010469632d73026e6c00000f00010000290800000000000000 +22f0800000010000000200010469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +28223 +ae8a000000010000000000000e6772616669736368657a616b656e026e6c0000ff0001 +ae8a800000010000000200020e6772616669736368657a616b656e026e6c0000ff0001c00c0002000100015180000d026e73076b6e6f77617265c01bc00c00020001000151800006036e7332c032c02f00010001000151800004c3402003c04800010001000151800004c340202b + +28224 +71ac00000001000000000000036e733503777873026e6c0000010001 +71ac80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28225 +cb7800000001000000000000027330026e6c0000010001 +cb7880000001000000020002027330026e6c0000010001c00c0002000100015180000d026e73076e656473746174c00fc00c00020001000151800006036e7333c026c02300010001000151800004d4482615c03c00010001000151800004d5c4021d + +28226 +a02d0000000100000000000008736179616e6f7261056d62757975026e6c0000010001 +a02d8000000100000002000008736179616e6f7261056d62757975026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c032 + +28227 +b6e300000001000000000000057a7761616e06787334616c6c026e6c0000010001 +b6e380000001000000030002057a7761616e06787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +28228 +79430000000100000000000006787334616c6c026e6c0000ff0001 +79438000000100000003000206787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +28229 +8899000000010000000000000c746865766973696f6e776562026e6c0000ff0001 +8899800000010000000200020c746865766973696f6e776562026e6c0000ff0001c00c0002000100015180000f036e7331087468656c6f646765c019c00c00020001000151800006036e7332c031c02d00010001000151800004c3565d0ac04800010001000151800004c3565d0b + +28230 +757000000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +757080000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28231 +11cc00000001000000000000046d61696c0a6c697474656c66757365026e6c0000010001 +11cc80000001000000020000046d61696c0a6c697474656c66757365026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c036 + +28232 +496600000001000000000000075261696c70726f026e6c0000ff0001 +496680000001000000030003075261696c70726f026e6c0000ff0001c00c00020001000151800012047072693103646e73067073696e6574c014c00c000200010001518000070470726932c02dc00c000200010001518000070470726933c02dc028000100010001518000049a0ff9a6c046000100010001518000049a0ff9aac059000100010001518000049a0ff9ae + +28233 +47710000000100000000000003777777046b6e6d69026e6c0000010001 +47718000000100000002000203777777046b6e6d69026e6c0000010001c01000020001000151800008057374797832c010c0100002000100015180000e036e733107737572666e6574c015c029000100010001518000049117fe9fc03d00010001000151800004c0576a65 + +28234 +40d9000000010000000000000761727465736961026e6c00001c0001 +40d9800000010000000200000761727465736961026e6c00001c0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02c + +28235 +48f1000000010000000000000469632d73026e6c00000f0001 +48f1800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +28236 +4be30000000100000000000003777777076172626f6e6564026e6c0000010001 +4be38000000100000003000003777777076172626f6e6564026e6c0000010001c01000020001000151800012026e7302756b06707273657276036e657400c01000020001000151800008026e73026465c032c01000020001000151800008026e73026e6cc032 + +28237 +0c9d00000001000000000000034e545006585334414c4c024e4c0000010001 +0c9d80000001000000030002034e545006585334414c4c024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +28238 +94d8000000010000000000000e77657373656c6d616e2d696e666f026e6c00000f0001 +94d8800000010000000200020e77657373656c6d616e2d696e666f026e6c00000f0001c00c0002000100015180000b036e73310476696374c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d413d2c2c04600010001000151800004d43d1529 + +28239 +af410000000100000000000008646f6c6c79706f70026e6c0000010001 +af418000000100000002000208646f6c6c79706f70026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c015c00c00020001000151800006036e7332c02dc0290001000100015180000450416028c04400010001000151800004c356780c + +28240 +76c8000000010000000000000a64696572656e7475696e0c7665727a616d656c67696473026e6c0000010001 +76c8800000010000000200000a64696572656e7475696e0c7665727a616d656c67696473026e6c0000010001c01700020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01700020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +28241 +720b00000001000000000000037777770d67616d6573776f726b73686f70026e6c0000010001 +720b80000001000000020002037777770d67616d6573776f726b73686f70026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c01ec01000020001000151800006036e7332c036c03200010001000151800004d90867fec05100010001000151800004c1ad2bfe + +28242 +055700000001000000000000037777770565626f6e65026e6c0000010001 +055780000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +28243 +9adf00000001000000000000037777770774726170686963026e6c0000010001 +9adf80000001000000020000037777770774726170686963026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c030 + +28244 +b4ae00000001000000000000037777770565626f6e65026e6c0000010001 +b4ae80000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +28245 +2ad600000001000000000000036e73340767617574656e67026e6c0000010001 +2ad680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28246 +949f00000001000000000000037777770565626f6e65026e6c0000010001 +949f80000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +28247 +60f1000000010000000000000377777707646967696d6d6f026e6c0000010001 +60f1800000010000000300000377777707646967696d6d6f026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c032c0100002000100015180000805646e733132c032 + +28248 +30380000000100000000000007616b6e746c6c6203616b6e026e6c0000010001 +30388000000100000002000207616b6e746c6c6203616b6e026e6c0000010001c01400020001000151800010066d696e6e6965066f6d726f6570c018c0140002000100015180000805726f62696ec033c02c00010001000151800004913a1e04c04800010001000151800004913a1a34 + +28249 +9e0300000001000000000000036e733503777873026e6c0000010001 +9e0380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28250 +4ac7000000010000000000000769636573686f70026e6c0000020001 +4ac7800000010000000200020769636573686f70026e6c0000020001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc028000100010001518000043efa0b85c03a000100010001518000043efa0b87 + +28251 +413a00000001000000000000046d61696c0f64616d656e2d686f6f67657a616e64026e6c0000010001 +413a80000001000000020002046d61696c0f64616d656e2d686f6f67657a616e64026e6c0000010001c01100020001000151800012026e730c696e746572636f6e6e656374c021c01100020001000151800006036e7332c038c03500010001000151800004d453c005c05300010001000151800004d453c006 + +28252 +dab200000001000000000000037777770864696769736b6172026e6c0000010001 +dab280000001000000030002037777770864696769736b6172026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +28253 +055700000001000000000000037777770b76726564656e737465696e026e6c0000010001 +055784030001000000010000037777770b76726564656e737465696e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +28254 +c3790000000100000000000003626974026e6c00000f0001 +c3798000000100000003000303626974026e6c00000f0001c00c0002000100015180000a076e736175746831c00cc00c0002000100015180000a076e736175746832c00cc00c0002000100015180000a076e736175746833c00cc02400010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +28255 +0af20000000100000000000003777777046b6e6d69026e6c0000010001 +0af28000000100000002000203777777046b6e6d69026e6c0000010001c01000020001000151800008057374797832c010c0100002000100015180000e036e733107737572666e6574c015c029000100010001518000049117fe9fc03d00010001000151800004c0576a65 + +28256 +9e700000000100000000000005747261786f026e6c0000010001 +9e708000000100000002000005747261786f026e6c0000010001c00c00020001000151800012036e73310872656d6f74696f6e036e657400c00c00020001000151800006036e7333c02a + +28257 +adeb00000001000000000000037777770e737065656c7370656c6c65746a65026e6c0000010001 +adeb80000001000000020000037777770e737065656c7370656c6c65746a65026e6c0000010001c01000020001000151800019036e73310f6c696e6b67696473686f7374696e6703636f6d00c01000020001000151800006036e7332c037 + +28258 +0b3128000001000000010000024e4c0000060001095f6b65726265726f73045f746370026463065f6d736463730a454c5354414c4144414d024e4c00002100010000025800240000006400580e656c7374616c6164616d2d7372760a454c5354414c4144414d024e4c00 +0b31a8040000000000000000 + +28259 +ae7a00000001000000000000037777770e76766d6f6e6e69636b656e64616d026e6c0000010001 +ae7a80000001000000020000037777770e76766d6f6e6e69636b656e64616d026e6c0000010001c01000020001000151800013046e7234350834646e73686f737403636f6d00c01000020001000151800007046e723436c038 + +28260 +222d000000010000000000000a6f636b656e6275726768026e6c0000ff0001 +222d800000010000000200020a6f636b656e6275726768026e6c0000ff0001c00c00020001000151800012026e730c696e746572636f6e6e656374c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d453c005c04900010001000151800004d453c006 + +28261 +8eb10000000100000000000013626f757762656472696a66646577616464656e026e6c0000010001 +8eb18000000100000002000013626f757762656472696a66646577616464656e026e6c0000010001c00c00020001000151800023097765626d696e642d3108637573746f6d6572026e6c07656173796e6574036e657400c00c00020001000151800006036e7330c047 + +28262 +4b990000000100000000000017626f736765726563687473646575727761617264657273026e6c00000f0001 +4b998000000100000003000217626f736765726563687473646575727761617264657273026e6c00000f0001c00c0002000100015180000d036e733106776964657873c024c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c03cc03800010001000151800004d4ccc0fcc06d000100010001518000043efa0703 + +28263 +751a000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +751a800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +28264 +806600000001000000000000037777770373756e026e6c0000010001 +806680000001000000020000037777770373756e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +28265 +0000000070024000eb890000020405b401010402 +000080010000000000000000 + +28266 +b62c80b350104470dced0000000000000000 + + +28267 +bdd1000000010000000000000a62696762726f74686572026e6c00000f0001 +bdd1800000010000000300030a62696762726f74686572026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c017c00c0002000100015180000a076e736175746832c033c00c0002000100015180000a076e736175746833c033c02b00010001000151800004d5880c33c04500010001000151800004d5880c3bc05b00010001000151800004d4ccc00b + +28268 +832200000001000000000000036e7332086d65646961776562026e6c0000010001 +832280000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +28269 +971900000001000000000000036e7333086d65646961776562026e6c0000010001 +971980000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +28270 +b62c80b3501844706614000000979708000000010001000000000f313432353932393134323239302d330000f900010f313432353932393134323239302d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 + + +28271 +6183000000010000000000000a6d656e746f7370726f64086c6f7374626f7973026e6c0000010001 +6183800000010000000200020a6d656e746f7370726f64086c6f7374626f7973026e6c0000010001c0170002000100015180000906636173746f72c017c0170002000100015180000906706f6c6c7578c017c034000100010001518000043e32050ac04900010001000151800004c297d912 + +28272 +7f8900000001000000000000026e7306787334616c6c026e6c00001c0001 +7f8980000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +28273 +287200000001000000000000036e733303777873026e6c0000010001 +287280000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28274 +ca7000000001000000000000036e733206787334616c6c026e6c00001c0001 +ca7080000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +28275 +ca6100000001000000000000096d61696c64726f703906787334616c6c026e6c0000010001 +ca6180000001000000030002096d61696c64726f703906787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +28276 +d8030000000100000000000007617261676f726e0b73746172746b6162656c33026e6c0000ff0001 +d8038000000100000003000307617261676f726e0b73746172746b6162656c33026e6c0000ff0001c0140002000100015180000b04646e733103766970c020c0140002000100015180000704646e7332c039c0140002000100015180000704646e7333c039c03400010001000151800004d44fe803c04b00010001000151800004c3f5c782c05e00010001000151800004d44ff303 + +28277 +db220000000100000000000008736179616e6f7261056d62757975026e6c0000010001 +db228000000100000002000008736179616e6f7261056d62757975026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c032 + +28278 +d14f00000001000000000000106865746272616e636865627572656175026e6c0000010001 +d14f80000001000000020002106865746272616e636865627572656175026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01dc00c00020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +28279 +b62c80c150114462dc530000000000000000 + + +28280 +0000000070024000beea0000020405b401010402 +000080010000000000000000 + +28281 +16e4000000010000000000000b666f6b6b65727370616365026e6c00000f0001 +16e4800000010000000200010b666f6b6b65727370616365026e6c00000f0001c00c000200010001518000160873706163657075620a64757463687370616365c018c00c0002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2d042 + +28282 +b6234cab50102da099660000000000000000 +b623cca40000000000000000 + +28283 +d85900100001000000000001086176656e747572610a62686d732d67726f6570026e6c00000100010000290800000000000000 +d85980000001000000020003086176656e747572610a62686d732d67726f6570026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c03400010001000151800004d9726162c04600010001000151800004d97261610000291000000000000000 + +28284 +607600000001000000000000036e73350b70656c6963616e2d696374026e6c0000010001 +607680000001000000020002036e73350b70656c6963616e2d696374026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +28285 +aafc001000010000000000010e736c6172746962617274666173740a62686d732d67726f6570026e6c00000100010000290800000000000000 +aafc800000010000000200030e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc03a00010001000151800004d9726162c04c00010001000151800004d97261610000291000000000000000 + +28286 +b62c80c250104462dc520000000000000000 + + +28287 +b62f3e5b50104470f2a30000000000000000 +b62fbe540000000000000000 + +28288 +b62f3e5b50184470267d00000097ed56000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 +b62fbe540000000000000000 + +28289 +6cd000000001000000000000037777770a787878636f6e74616374026e6c0000010001 +6cd080000001000000020002037777770a787878636f6e74616374026e6c0000010001c01000020001000151800013036e73310c7665727a616d656c6c616e64c01bc01000020001000151800006036e7332c033c02f0001000100015180000452c04e3cc04e0001000100015180000452c04e3d + +28290 +77370000000100000000000003777777096b696473746f703230026e6c0000010001 +77378000000100000002000003777777096b696473746f703230026e6c0000010001c01000020001000151800012036e7331086974732d646e733403636f6d00c01000020001000151800006036e7332c032 + +28291 +33ad0000000100000000000006636861726973026e6c00000f0001 +33ad8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +28292 +b62f3e6950114462f2090000000000000000 +b62fbe640000000000000000 + +28293 +2ef900000001000000000000026e73076e65746c616e64024e4c0000010001 +2ef980000001000000020002026e73076e65746c616e64024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +28294 +0000000070024000d4da0000020405b401010402 +000080010000000000000000 + +28295 +b62f3e6a50104462f2080000000000000000 +b62fbe640000000000000000 + +28296 +b5f500000001000000000000037777770b73746172746e6174696f6e026e6c0000010001 +b5f580000001000000020000037777770b73746172746e6174696f6e026e6c0000010001c01000020001000151800010036e733106686f73747335036e657400c01000020001000151800006036e7332c034 + +28297 +b62fc881501044707e6d0000000000000000 + + +28298 +115c00000001000000000000086176656e747572610a62686d732d67726f6570026e6c0000010001 +115c80000001000000020002086176656e747572610a62686d732d67726f6570026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c03400010001000151800004d9726162c04600010001000151800004d9726161 + +28299 +08ae000000010000000000000e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001 +08ae800000010000000200020e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc03a00010001000151800004d9726162c04c00010001000151800004d9726161 + +28300 +37a400000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +37a480000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +28301 +b62fc88150184470880000000097179d000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 + + +28302 +04c7000000010000000000000a73746172746b6162656c026e6c0000ff0001 +04c7800000010000000300010a73746172746b6162656c026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +28303 +db5c0000000100000000000003777777076d797765626964026e6c0000010001 +db5c8000000100000003000203777777076d797765626964026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c018c01000020001000151800006036e7332c030c01000020001000151800012036e7333086c65617365776562036f726700c02c000100010001518000043ed44079c047000100010001518000043ed4407a + +28304 +b62fc88f501144627dd30000000000000000 + + +28305 +efea0000000100000000000004686f6d65066865746e6574026e6c0000010001 +efea8000000100000003000304686f6d65066865746e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +28306 +b62fc890501044627dd20000000000000000 + + +28307 +dc9600000001000000000000037777770770697070696a6e026e6c0000010001 +dc9680000001000000020002037777770770697070696a6e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +28308 +710a00000001000000000000034e53350f444f4d41494e2d5245474953545259024e4c00001c0001 +710a80000001000000030002034e53350f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28309 +c62700000001000000000000024e530f444f4d41494e2d5245474953545259024e4c00001c0001 +c62780000001000000030002024e530f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +28310 +644f00000001000000000000034e53320f444f4d41494e2d5245474953545259024e4c00001c0001 +644f80000001000000030002034e53320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28311 +f1bf00000001000000000000037777770a696e7465727374617473026e6c0000010001 +f1bf80000001000000020000037777770a696e7465727374617473026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +28312 +b7100000000100000000000008726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001 +b7108000000100000002000208726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001c0150002000100015180000e036e7331076e657463617374c023c01500020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +28313 +0b3428000001000000010000024e4c0000060001055f6c646170045f746370026463065f6d736463730a454c5354414c4144414d024e4c00002100010000025800240000006401850e656c7374616c6164616d2d7372760a454c5354414c4144414d024e4c00 +0b34a8040000000000000000 + +28314 +57a000000001000000000000056f64736276026e6c0000ff0001 +57a080000001000000020000056f64736276026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +28315 +343300000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +343380000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28316 +28d800000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +28d880000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28317 +0000000070024000ace50000020405b401010402 +000080010000000000000000 + +28318 +770e00000001000000000000037777770a73757065726475646573026e6c0000010001 +770e80000001000000020002037777770a73757065726475646573026e6c0000010001c0100002000100015180000c036e7331053266617374c01bc01000020001000151800006036e7332c033c02f0001000100015180000450f7c022c047000100010001518000043e858122 + +28319 +201d0000000100000000000006636861726973026e6c0000010001 +201d8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +28320 +1af400000001000000000000036e73330767617574656e67026e6c0000010001 +1af480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28321 +c8d800000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +c8d880000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28322 +8e2700000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +8e2780000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +28323 +44e900000001000000000000086762646976696e67026e6c00000f0001 +44e980000001000000030003086762646976696e67026e6c00000f0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec015c00c00020001000151800006036e7331c032c00c00020001000151800006036e7332c032c02900010001000151800004d42d2005c04700010001000151800004d42d2003c05900010001000151800004d42d2103 + +28324 +b630894a5010447095ae0000000000000000 + + +28325 +c62c00000001000000000000076d656575776573026e6c0000010001 +c62c80000001000000020002076d656575776573026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +28326 +6895000000010000000000000c737276322d323030306164730a696e747261736f6c6966026e6c0000010001 +6895840300010000000100000c737276322d323030306164730a696e747261736f6c6966026e6c0000010001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +28327 +b630894a50184470b7ad00000097fe2f000000010001000000000f313432353932393134323239302d330000f900010f313432353932393134323239302d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 + + +28328 +b63089585011446295140000000000000000 + + +28329 +350700000001000000000000036e7332076e656473746174026e6c0000010001 +350780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28330 +0000000070024000dc510000020405b401010402 +000080010000000000000000 + +28331 +be0600000001000000000000036e7334076e656473746174026e6c0000010001 +be0680000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28332 +016928000001000200000000026e6c00000600010453444137036465700b65696c616e64686f6f6664026e6c00000500fe000000000000c01400010001000000000004c0a80c11 +0169a8040000000000000000 + +28333 +b63089595010446295130000000000000000 + + +28334 +050400100001000000000001026e73067a6f6e6e6574026e6c00000100010000290800000000000000 +050480000001000000020003026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa02020000291000000000000000 + +28335 +c10c00100001000000000001026e73067a6f6e6e6574026e6c00002600010000290800000000000000 +c10c80000001000000020003026e73067a6f6e6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa02020000291000000000000000 + +28336 +28b200000001000000000000037777770a746970746f706c696e65026e6c0000010001 +28b280000001000000020002037777770a746970746f706c696e65026e6c0000010001c01000020001000151800014036e73310d706f7765727365727665723231c01bc01000020001000151800006036e7332c033c02f0001000100015180000451047122c04f0001000100015180000451047123 + +28337 +b63142c6501044700b9e0000000000000000 +b631c2c40000000000000000 + +28338 +330000000001000000000000036e73330767617574656e67026e6c0000010001 +330080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28339 +0000000070024000e78400000204056401010402 +000080010000000000000000 + +28340 +b63142c650184470ef4d000000973d80000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 +b631c2c40000000000000000 + +28341 +698f000000010000000000000d64756b6572732d6465636f636b026e6c00000f0001 +698f800000010000000200000d64756b6572732d6465636f636b026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c035 + +28342 +b631e3bb501040b0794b0000000000000000 + + +28343 +b631e3bb501840b0823000000084dc00000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000004a03677373096d6963726f736f667403636f6d00403afd0c403c4e8c0003000000274e544c4d535350000100000097b200c003000300240000000400040020000000534441374445500000 + + +28344 +b631e3c9501140a278c40000000000000000 + + +28345 +0000000070024000012100000204056401010402 +000080010000000000000000 + +28346 +b63142d4501144620b040000000000000000 +b631c2d40000000000000000 + +28347 +0000000070024000cfba0000020405b401010402 +000080010000000000000000 + +28348 +0b0900000001000000000000036e73330767617574656e67026e6c0000010001 +0b0980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28349 +79aa0000000100000000000009696e686f6c6c616e64026e6c00000f0001 +79aa8000000100000002000209696e686f6c6c616e64026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +28350 +b631e3ca501040a278c30000000000000000 + + +28351 +b632940b501040b0e2960000000000000000 + + +28352 +b632940b501840b0167c00000084b300000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000004a03677373096d6963726f736f667403636f6d00403afd0c403c4e8c0003000000274e544c4d535350000100000097b200c003000300240000000400040020000000534441374445500000 + + +28353 +b6329419501140a2e20f0000000000000000 + + +28354 +8bc0000000010000000000000377777706676f74696b61026e6c0000010001 +8bc0800000010000000300020377777706676f74696b61026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +28355 +b63142d5501044620b030000000000000000 +b631c2d40000000000000000 + +28356 +b632941a501040a2e20e0000000000000000 + + +28357 +00000000700240004da000000204056401010402 +000080010000000000000000 + +28358 +b63367f650104470d9d40000000000000000 +b633e7f40000000000000000 + +28359 +b6345892501040b06a8d0000000000000000 +b634d8940000000000000000 + +28360 +b6345892501840b0dbf2000000847580000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000004a03677373096d6963726f736f667403636f6d00403afd0c403c4e8c0003000000274e544c4d535350000100000097b200c003000300240000000400040020000000534441374445500000 +b634d8940000000000000000 + +28361 +6aa0000000010000000000000377777705766c69656b026e6c0000010001 +6aa0800000010000000200020377777705766c69656b026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec016c01000020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +28362 +b63367f650184470f6430000009704c1000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe2403c4d620003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 +b633e7f40000000000000000 + +28363 +b63458a0501140a26a060000000000000000 +b634d8a40000000000000000 + +28364 +6af3000000010000000000000b676966706c6161746a6573026e6c0000010001 +6af3800000010000000200000b676966706c6161746a6573026e6c0000010001c00c00020001000151800013036e73310c616374697665646f6d61696ec018c00c00020001000151800006036e7332c030 + +28365 +b63458a1501040a26a050000000000000000 +b634d8a40000000000000000 + +28366 +ddae000000010000000000000f6f65726c656d616e73626f736c6579026e6c0000ff0001 +ddae800000010000000200000f6f65726c656d616e73626f736c6579026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c036 + +28367 +916200000001000000000000036e733103617474026e6c0000010001 +916280000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +28368 +48b100000001000000000000036e733103617474026e6c0000260001 +48b180000001000000020002036e733103617474026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +28369 +bf4800000001000000000000036e733203617474026e6c0000010001 +bf4880000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +28370 +2f9f00000001000000000000036e733203617474026e6c0000260001 +2f9f80000001000000020002036e733203617474026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +28371 +d5d4000000010000000000000f6138302d3132372d3138352d313935046164736c06787334616c6c026e6c0000010001 +d5d4800000010000000300020f6138302d3132372d3138352d313935046164736c06787334616c6c026e6c0000010001c02100020001000151800005026e73c021c02100020001000151800006036e7332c021c0210002000100015180000d026e730472697065036e657400c03c00010001000151800004c26d0642c04d00010001000151800004c26d0963 + +28372 +b633680450114462d93a0000000000000000 +b633e8040000000000000000 + +28373 +de3a0000000100000000000004656e6369026e6c00000f0001 +de3a8000000100000002000004656e6369026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +28374 +bdcf000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +bdcf800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28375 +fbcb000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +fbcb800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28376 +c20a000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +c20a800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28377 +95d9000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +95d9800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28378 +d6f9000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +d6f9800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28379 +5fce00000001000000000000046d6f6a6f026e6c00001c0001 +5fce80000001000000020002046d6f6a6f026e6c00001c0001c00c0002000100015180000b026e7305706c616e74c011c00c00020001000151800006036e7332c028c02500010001000151800004d59f0037c03c00010001000151800004d59f0046 + +28380 +b633680550104462d9390000000000000000 +b633e8040000000000000000 + +28381 +9eb600000001000000000000037777771273706f72747665727a656b6572696e67656e026e6c0000010001 +9eb680000001000000030002037777771273706f72747665727a656b6572696e67656e026e6c0000010001c0100002000100015180000d036e733106776964657873c023c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03bc03700010001000151800004d4ccc0fcc06c000100010001518000043efa0703 + +28382 +dacb000000010000000000000377777707676f6d756e646f026e6c0000010001 +dacb800000010000000200000377777707676f6d756e646f026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +28383 +c2d9000000010000000000000773702d706c7573026e6c00000f0001 +c2d9800000010000000200000773702d706c7573026e6c00000f0001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +28384 +81970000000100000000000003766576026e6c00000f0001 +81978000000100000002000203766576026e6c00000f0001c00c0002000100015180000d026e73076e65746c616e64c010c00c00020001000151800006036e7332c027c02400010001000151800004d9aa2042c03d00010001000151800004d9aa2c06 + +28385 +f1140000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +f1148000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +28386 +f88a0000000100000000000004726f6f7307656e64656d6f6c026e6c0000260001 +f88a8000000100000002000004726f6f7307656e64656d6f6c026e6c0000260001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +28387 +e04500000001000000000000046b726173026e6c0000ff0001 +e04580000001000000020000046b726173026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +28388 +ae8d00000001000000000000036e733203747565026e6c0000010001 +ae8d80000001000000030003036e733203747565026e6c0000010001c0100002000100015180000a0774756567617465c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004839b0203c00c00010001000151800004839b0303c04c00010001000151800004c0576a65 + +28389 +f10900000001000000000000077475656761746503747565026e6c0000010001 +f10980000001000000030003077475656761746503747565026e6c0000010001c01400020001000151800002c00cc01400020001000151800006036e7332c014c0140002000100015180000e036e733107737572666e6574c018c00c00010001000151800004839b0203c03a00010001000151800004839b0303c04c00010001000151800004c0576a65 + +28390 +579b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +579b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28391 +2e000000000100000000000003777777156e6f6f72642d686f6c6c616e642d746f7572697374026e6c0000010001 +2e008000000100000002000203777777156e6f6f72642d686f6c6c616e642d746f7572697374026e6c0000010001c0100002000100015180000c026e7306787334616c6cc026c01000020001000151800006036e7332c03dc03a00010001000151800004c26d0642c05200010001000151800004c26d0963 + +28392 +02240000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +02248000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28393 +b0d1000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +b0d1800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +28394 +53d5000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +53d5800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +28395 +eb590000000100000000000005646e732d32056c61646f74026e6c0000010001 +eb598000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28396 +eb5a00000001000000000000076172747068696c026e6c00000f0001 +eb5a80000001000000020000076172747068696c026e6c00000f0001c00c0002000100015180000e05646e732d31056c61646f74c014c00c0002000100015180000805646e732d32c02e + +28397 +eb5c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +eb5c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28398 +c7420000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c7428000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28399 +bfb900000001000000000000036e733203747565026e6c0000010001 +bfb980000001000000030003036e733203747565026e6c0000010001c0100002000100015180000a0774756567617465c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004839b0203c00c00010001000151800004839b0303c04c00010001000151800004c0576a65 + +28400 +c36000000001000000000000036e733208767575727765726b026e6c0000010001 +c36080000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +28401 +88bf00000001000000000000077475656761746503747565026e6c0000010001 +88bf80000001000000030003077475656761746503747565026e6c0000010001c01400020001000151800002c00cc01400020001000151800006036e7332c014c0140002000100015180000e036e733107737572666e6574c018c00c00010001000151800004839b0203c03a00010001000151800004839b0303c04c00010001000151800004c0576a65 + +28402 +ade50000000100000000000006776468303131066e7434616c6c026e6c0000010001 +ade58000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +28403 +3ac00000000100000000000003777777076c756e61746963026e6c0000010001 +3ac08000000100000003000103777777076c756e61746963026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +28404 +15f20000000100000000000003777777056b6c696b73026e6c0000010001 +15f28000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +28405 +2a94000000010000000000000377777706637662616e6b026e6c0000010001 +2a94800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28406 +274e000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +274e800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28407 +0a9a000000010000000000000377777706637662616e6b026e6c0000010001 +0a9a800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28408 +0247000000010000000000000377777707746f7067616d65026e6c0000010001 +0247800000010000000200000377777707746f7067616d65026e6c0000010001c0100002000100015180000f02763109706365787472656d65c018c01000020001000151800005027632c02f + +28409 +20c2000000010000000000000469632d73026e6c0000010001 +20c2800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +28410 +3aa0000000010000000000000377777706637662616e6b026e6c0000010001 +3aa0800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28411 +9ae80000000100000000000003464748024e4c0000010001 +9ae88000000100000002000103464748024e4c0000010001c00c0002000100015180000d026e7307616d6572636f6dc010c00c00020001000151800006036e7331c027c02400010001000151800004c2b2b20a + +28412 +f34a00000001000000000000036e73310a62726f61646669656c64026e6c0000010001 +f34a80000001000000020002036e73310a62726f61646669656c64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cb1732c03d00010001000151800004d55486da + +28413 +d89b00000001000000000000036e73320a62726f61646669656c64026e6c0000010001 +d89b80000001000000020002036e73320a62726f61646669656c64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d4cb1732c00c00010001000151800004d55486da + +28414 +1ab20000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +1ab28000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28415 +1aaf000000010000000000000377777706637662616e6b026e6c0000010001 +1aaf800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28416 +f96800000001000000000000037777770e6a616e6d6172696a6e697373656e026e6c0000010001 +f96880000001000000020002037777770e6a616e6d6172696a6e697373656e026e6c0000010001c01000020001000151800008026e73027370c01fc01000020001000151800006036e7332c036c03300010001000151800004c356785dc04700010001000151800004d468d113 + +28417 +ca4b0000000100000000000003777777056465726174026e6c0000010001 +ca4b8000000100000002000203777777056465726174026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c016c0100002000100015180001004646e733208636f6e6365707473c016c02a00010001000151800004d5c51c03c04700010001000151800004d5c51e1c + +28418 +12bb0000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +12bb8000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28419 +636f00000001000000000000036e733103666a66026e6c0000010001 +636f80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +28420 +3c9e00000001000000000000037777770b706f73747374656d70656c026e6c0000010001 +3c9e80000001000000030000037777770b706f73747374656d70656c026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c035c01000020001000151800007046e733033c035 + +28421 +9b8f00100001000000000001026e7303786f73026e6c00000100010000290800000080000000 +9b8f80000001000000020002026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe20000291000000000000000 + +28422 +2a94000000010000000000000377777706637662616e6b026e6c0000010001 +2a94800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28423 +2a94000000010000000000000377777706637662616e6b026e6c0000010001 +2a94800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28424 +f02400000001000000000000046d61696c0670726f6f7374026e6c00001c0001 +f02480000001000000020002046d61696c0670726f6f7374026e6c00001c0001c0110002000100015180000d04646e733105692d702d64c018c0110002000100015180000704646e7332c031c02c00010001000151800004d9124003c04500010001000151800004d9124104 + +28425 +a7fd00000001000000000000046d61696c0670726f6f7374026e6c0000260001 +a7fd80000001000000020002046d61696c0670726f6f7374026e6c0000260001c0110002000100015180000d04646e733105692d702d64c018c0110002000100015180000704646e7332c031c02c00010001000151800004d9124003c04500010001000151800004d9124104 + +28426 +547200000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +547280000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28427 +614f00000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c0000260001 +614f80000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28428 +0a9a000000010000000000000377777706637662616e6b026e6c0000010001 +0a9a800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28429 +0a9a000000010000000000000377777706637662616e6b026e6c0000010001 +0a9a800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28430 +15d0000000010000000000000377777707766f6c64657273026e6c0000010001 +15d0800000010000000300030377777707766f6c64657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +28431 +cb3e000000010000000000000377777703616c68026e6c0000010001 +cb3e800000010000000200010377777703616c68026e6c0000010001c01000020001000151800010036e7331096c65617365706c616ec014c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004c286e702 + +28432 +3aa0000000010000000000000377777706637662616e6b026e6c0000010001 +3aa0800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28433 +3aa0000000010000000000000377777706637662616e6b026e6c0000010001 +3aa0800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28434 +60020000000100000000000003746d66026e6c00001c0001 +60028000000100000002000003746d66026e6c00001c0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c028 + +28435 +1aaf000000010000000000000377777706637662616e6b026e6c0000010001 +1aaf800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28436 +bd9a0000000100000000000009636865636b6d61726b026e6c0000010001 +bd9a8000000100000002000109636865636b6d61726b026e6c0000010001c00c00020001000151800011036e696b0a7075626c6973686e6574c016c00c0002000100015180000b026e73026e6c036e657400c02a00010001000151800004c1433c0a + +28437 +1aaf000000010000000000000377777706637662616e6b026e6c0000010001 +1aaf800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +28438 +051300000001000000000000036e73310974656c656b6162656c026e6c0000010001 +051380000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +28439 +6967000000010000000000000377777708706f7461746f6573026e6c0000010001 +6967800000010000000200000377777708706f7461746f6573026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c030 + +28440 +10bb00000001000000000000036e733208636f6d707574656c026e6c0000010001 +10bb80000001000000020002036e733208636f6d707574656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004c3568680c00c00010001000151800004c3568681 + +28441 +546800000001000000000000036e733108636f6d707574656c026e6c0000010001 +546880000001000000020002036e733108636f6d707574656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3568680c03b00010001000151800004c3568681 + +28442 +a0950000000100000000000003777777076275726f686261026e6c0000010001 +a0958000000100000003000103777777076275726f686261026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +28443 +6dea00000001000000000000037777770c77696c746575726c696e6773026e6c0000010001 +6dea80000001000000020002037777770c77696c746575726c696e6773026e6c0000010001c01000020001000151800011036e73310a74657272612d62797465c01dc01000020001000151800007046e733132c035c031000100010001518000044500d3a0c04e000100010001518000044500d44a + +28444 +e1d000000001000000000000036e7331046c69636f026e6c0000010001 +e1d080000001000000020002036e7331046c69636f026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e036e7331076f6d732d6e6574c015c00c00010001000151800004d5ef9d33c03700010001000151800004d5efb22f + +28445 +b76200000001000000000000036e7331076f6d732d6e6574026e6c0000010001 +b76280000001000000020002036e7331076f6d732d6e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb22fc03a00010001000151800004d5ef9d07 + +28446 +d15300000001000000000000087061636b666f7273026e6c0000ff0001 +d15380000001000000020002087061636b666f7273026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +28447 +9a6400000001000000000000033139360331333303313034033230300a626c61636b686f6c657307656173796e6574026e6c0000010001 +9a6480000001000000020002033139360331333303313034033230300a626c61636b686f6c657307656173796e6574026e6c0000010001c02700020001000151800006036e7330c027c02700020001000151800006036e7331c027c04300010001000151800004c2a55e01c05500010001000151800004c2a55e05 + +28448 +65f400000001000000000000037777770d7469656e6572706f65736a6573026e6c0000010001 +65f480000001000000020000037777770d7469656e6572706f65736a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +28449 +ed7d00000001000000000000037777770861617665657a6574026e6c0000010001 +ed7d80000001000000030002037777770861617665657a6574026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +28450 +c4b0001000010000000000010469632d73026e6c00000f00010000290800000000000000 +c4b0800000010000000200010469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +28451 +a88100000001000000000000036e733109666972737466696e64026e6c0000010001 +a88180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +28452 +a88200000001000000000000036e733209666972737466696e64026e6c0000010001 +a88280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +28453 +daf400000001000000000000066265736f7577026e6c0000010001 +daf480000001000000020002066265736f7577026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c013c00c00020001000151800006036e7332c02bc0270001000100015180000450416028c04200010001000151800004c356780c + +28454 +1b2000000001000000000000036e73330767617574656e67026e6c0000010001 +1b2080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28455 +1b2e00000001000000000000036e73330767617574656e67026e6c0000010001 +1b2e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28456 +a88400000001000000000000036e733109666972737466696e64026e6c0000010001 +a88480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +28457 +a88500000001000000000000036e733209666972737466696e64026e6c0000010001 +a88580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +28458 +89f3000000010000000000000469632d73026e6c00000f0001 +89f3800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +28459 +e53c00000001000000000000036e733205616e6f6e79026e6c0000010001 +e53c80000001000000020002036e733205616e6f6e79026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004cf2cd7adc00c000100010001518000043ed4539e + +28460 +56cf00000001000000000000036e73310a636c75737465726e6574026e6c0000010001 +56cf80000001000000020002036e73310a636c75737465726e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054edf5c03d00010001000151800004d5f72f3c + +28461 +a09200000001000000000000036e73320a636c75737465726e6574026e6c0000010001 +a09280000001000000020002036e73320a636c75737465726e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000045054edf5c00c00010001000151800004d5f72f3c + +28462 +b310000000010000000000000867656e6572616c69026e6c0000ff0001 +b310800000010000000200000867656e6572616c69026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02d + +28463 +3ae700000001000000000000046d61696c076575726f6e6574026e6c0000010001 +3ae780000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +28464 +515c00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +515c80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +28465 +28ae00000001000000000000026e73067a6f6e6e6574026e6c0000260001 +28ae80000001000000020002026e73067a6f6e6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +28466 +666e00000001000000000000077265766572736511776972656c6573732d7365727669636573026e6c0000010001 +666e80000001000000030002077265766572736511776972656c6573732d7365727669636573026e6c0000010001c0140002000100015180000d036e733106776964657873c026c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c03ec03a00010001000151800004d4ccc0fcc06f000100010001518000043efa0703 + +28467 +c26500000001000000000000026e73076e657467617465026e6c00001c0001 +c26580000001000000020002026e73076e657467617465026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000704646e7331c00fc00c000100010001518000043e0456aac03900010001000151800004d47b8edb + +28468 +74db00000001000000000000026e73076e657467617465026e6c0000260001 +74db80000001000000020002026e73076e657467617465026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000704646e7331c00fc00c000100010001518000043e0456aac03900010001000151800004d47b8edb + +28469 +2fc20000000100000000000004646e7331076e657467617465026e6c0000260001 +2fc28000000100000002000204646e7331076e657467617465026e6c0000260001c01100020001000151800005026e73c011c01100020001000151800002c00cc02d000100010001518000043e0456aac00c00010001000151800004d47b8edb + +28470 +153200000001000000000000036e7333107365637572656e616d65736572766572026e6c0000010001 +153280000001000000020002036e7333107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0350001000100015180000442a4f102c0470001000100015180000442a4f105 + +28471 +0a9900000001000000000000036e7334107365637572656e616d65736572766572026e6c0000010001 +0a9980000001000000020002036e7334107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0350001000100015180000442a4f102c0470001000100015180000442a4f105 + +28472 +34f70000000100000000000005646f726d61026e6c0000010001 +34f78000000100000002000205646f726d61026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +28473 +a6020000000100000000000003777777036b6f73026e6c0000010001 +a6028000000100000002000203777777036b6f73026e6c0000010001c0100002000100015180000e04646e733106666f7263657ac014c0100002000100015180000704646e7332c02dc02800010001000151800004d994af13c04200010001000151800004d994af1a + +28474 +82e1000000010000000000000377777707746f72696d6578026e6c0000010001 +82e1800000010000000200000377777707746f72696d6578026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c032 + +28475 +2165000000010000000000000377777707746f72696d6578026e6c0000010001 +2165800000010000000200000377777707746f72696d6578026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c032 + +28476 +2321000000010000000000000377777706652d6c696a6e026e6c0000010001 +2321800000010000000200020377777706652d6c696a6e026e6c0000010001c01000020001000151800014036e73310d32302d616c6c686f7374696e67c017c01000020001000151800006036e7332c02fc02b000100010001518000044262d66ec04b000100010001518000044262d66f + +28477 +5b0b00000001000000000000024e530348414e026e6c0000010001 +5b0b80000001000000020002024e530348414e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +28478 +b9b600000001000000000000037777770d736f7068696173776572656c64026e6c0000010001 +b9b680000001000000020000037777770d736f7068696173776572656c64026e6c0000010001c01000020001000151800017036e73320d666c65746873686f7374696e6703636f6d00c01000020001000151800006036e7331c036 + +28479 +ed3700000001000000000000037777770d736f7068696173776572656c64026e6c0000010001 +ed3780000001000000020000037777770d736f7068696173776572656c64026e6c0000010001c01000020001000151800017036e73320d666c65746873686f7374696e6703636f6d00c01000020001000151800006036e7331c036 + +28480 +37f200000001000000000000037777770d7365782d696e74686563697479026e6c0000010001 +37f280000001000000020000037777770d7365782d696e74686563697479026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +28481 +2c020000000100000000000009686f6e657977656c6c026e6c00000f0001 +2c028000000100000002000009686f6e657977656c6c026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c031 + +28482 +ea4000000001000000000000036e733103757063026e6c0000010001 +ea4080000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +28483 +670400000001000000000000046e733032066368656c6c6f026e6c0000010001 +670480000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +28484 +93ab0000000100000000000003777777056e76736861026e6c0000010001 +93ab8000000100000002000003777777056e76736861026e6c0000010001c0100002000100015180000c026e7306766576696461c016c01000020001000151800006036e7332c02d + +28485 +652e00000001000000000000036e733209666972737466696e64026e6c0000010001 +652e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +28486 +765f00000001000000000000037777770774697070656c78026e6c0000010001 +765f80000001000000030000037777770774697070656c78026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02fc01000020001000151800006036e7332c02f + +28487 +00d000000001000000000000037777770774697070656c78026e6c0000010001 +00d080000001000000030000037777770774697070656c78026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02fc01000020001000151800006036e7332c02f + +28488 +361100000001000000000000026e7303786f73026e6c0000010001 +361180000001000000020001026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe2 + +28489 +401000000001000000000000036e733111686f6c6c616e646d6564696167726f6570026e6c0000010001 +401080000001000000020001036e733111686f6c6c616e646d6564696167726f6570026e6c0000010001c01000020001000151800002c00cc01000020001000151800011036e733207636c742d756661036e657400c00c00010001000151800004c3c1ca77 + +28490 +e5df00000001000000000000056a62656e61026e6c00000f0001 +e5df80000001000000020002056a62656e61026e6c00000f0001c00c000200010001518000110a6c65757665686176656e03696772c012c00c0002000100015180000d0a64656c6673686176656ec031c026000100010001518000043e2d5e0dc043000100010001518000043e2d5e82 + +28491 +5d4f00000001000000000000046c65646109524f5454455244414d024e4c0000010001 +5d4f80000001000000030003046c65646109524f5454455244414d024e4c0000010001c0110002000100015180000c0967616e796d65646573c011c01100020001000151800002c00cc01100020001000151800014036e733203676e7309676574726f6e696373c01bc02f00010001000151800004d5c9cf50c00c00010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +28492 +e5c000000001000000000000036e733203676e7309676574726f6e696373024e4c0000010001 +e5c080000001000000030003036e733203676e7309676574726f6e696373024e4c0000010001c01400020001000151800006036e7332c014c01400020001000151800005026e73c014c01400020001000151800002c00cc03200010001000151800004902c0a01c04400010001000151800004902c1319c00c00010001000151800004910d2a05 + +28493 +7270000000010000000000000967616e796d6564657309524f5454455244414d024e4c0000010001 +7270800000010000000300030967616e796d6564657309524f5454455244414d024e4c0000010001c01600020001000151800002c00cc01600020001000151800007046c656461c016c01600020001000151800014036e733203676e7309676574726f6e696373c020c00c00010001000151800004d5c9cf50c04200010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +28494 +f0cc00000001000000000000033139360331333303313034033230300a626c61636b686f6c657307656173796e6574026e6c0000050001 +f0cc80000001000000020002033139360331333303313034033230300a626c61636b686f6c657307656173796e6574026e6c0000050001c02700020001000151800006036e7330c027c02700020001000151800006036e7331c027c04300010001000151800004c2a55e01c05500010001000151800004c2a55e05 + +28495 +eb5600000001000000000000037777770766696c6d66616e026e6c0000010001 +eb5680000001000000020002037777770766696c6d66616e026e6c0000010001c0100002000100015180000b036e73310470696e65c018c01000020001000151800006036e7332c030c02c00010001000151800004d59c0201c04300010001000151800004c3c1a303 + +28496 +cd9d0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +cd9d8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +28497 +d10700000001000000000000037777770477736164026e6c0000010001 +d10780000001000000020001037777770477736164026e6c0000010001c01000020001000151800009026e73036e636ec015c01000020001000151800006036e7332c02cc02900010001000151800004c2e51401 + +28498 +2f4000000001000000000000076d656d62657273056c79636f73026e6c0000010001 +2f4080000001000000020000076d656d62657273056c79636f73026e6c0000010001c0140002000100015180001106646e73312d31056c79636f7302646500c0140002000100015180000906646e73322d31c035 + +28499 +35030000000100000000000003777777096e6574646972656374026e6c0000010001 +35038000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +28500 +7044000000010000000000000377777706666f6b73756b026e6c0000010001 +7044800000010000000200020377777706666f6b73756b026e6c0000010001c0100002000100015180000a036e733103677673c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e1aac04100010001000151800004d4ccc646 + +28501 +5c2400000001000000000000037777770962656e736d75736963026e6c0000010001 +5c2480000001000000020000037777770962656e736d75736963026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +28502 +d14b00000001000000000000037777770d7365782d696e74686563697479026e6c0000010001 +d14b80000001000000020000037777770d7365782d696e74686563697479026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +28503 +3ca800000001000000000000036e733109756e69736f75726365026e6c0000010001 +3ca880000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +28504 +067f00000001000000000000067068706164730d626f7577766163617475726573026e6c0000010001 +067f80000001000000020001067068706164730d626f7577766163617475726573026e6c0000010001c0130002000100015180000d036e733106776964657873c021c01300020001000151800010036e733206776964657873036e657400c03500010001000151800004d4ccc0fc + +28505 +d07400000001000000000000037777770572616c7068026e6c0000010001 +d07480000001000000020002037777770572616c7068026e6c0000010001c0100002000100015180000c026e73067574722d6978c016c01000020001000151800006036e7332c02dc02a0001000100015180000451113206c04200010001000151800004d5c42806 + +28506 +e4990000000100000000000008686f73746e616d650462696e640000100003 +e4998000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28507 +195800000001000000000000037777770a6d6f6c6c696765736578026e6c0000010001 +195880000001000000020000037777770a6d6f6c6c696765736578026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +28508 +d09d00000001000000000000056b616e6f6e026e6c00000f0001 +d09d80000001000000030003056b616e6f6e026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c012c00c0002000100015180000a076e736175746832c02ec00c0002000100015180000a076e736175746833c02ec02600010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +28509 +0ef10000000100000000000008686f73746e616d650462696e640000100003 +0ef18000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28510 +ea7100000001000000000000146f6e6465726e656d656e646e656465726c616e64026e6c0000ff0001 +ea7180000001000000020002146f6e6465726e656d656e646e656465726c616e64026e6c0000ff0001c00c00020001000151800010036e7331096d6173746572646e73c021c00c00020001000151800006036e7332c039c035000100010001518000045054f347c051000100010001518000043e94a047 + +28511 +eb270000000100000000000003777777086661697274616c65026e6c0000010001 +eb278000000100000002000203777777086661697274616c65026e6c0000010001c01000020001000151800010036e733109756e69736572766572c019c01000020001000151800006036e7332c031c02d00010001000151800004c3454b03c04900010001000151800004d119a2fa + +28512 +d1cd0000000100000000000005656c696f72026e6c00000f0001 +d1cd8000000100000003000105656c696f72026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +28513 +0ffc0000000100000000000003777777086469676966697368026e6c0000010001 +0ffc8000000100000002000103777777086469676966697368026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c019c01000020001000151800006036e7334c031c02d00010001000151800004d5c401c0 + +28514 +f92900000001000000000000037777770d6b696a6b6f6e6465727a6f656b026e6c0000010001 +f92980000001000000020002037777770d6b696a6b6f6e6465727a6f656b026e6c0000010001c0100002000100015180000b036e733104736f6b6fc01ec01000020001000151800006036e7332c036c0320001000100015180000450f2ee91c0490001000100015180000450f2ee9e + +28515 +750800000001000000000000036e7331056163646973026e6c0000010001 +750880000001000000020002036e7331056163646973026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +28516 +143c00000001000000000000046d61696c066368656c6c6f026e6c0000010001 +143c80000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +28517 +503a000000010000000000000672656c6179330b7669616e6574776f726b73026e6c0000010001 +503a800000010000000200020672656c6179330b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28518 +d5ef000000010000000000000672656c6179330b7669616e6574776f726b73026e6c00001c0001 +d5ef800000010000000200020672656c6179330b7669616e6574776f726b73026e6c00001c0001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28519 +354500000001000000000000076d61696c6875620b7669616e6574776f726b73026e6c00001c0001 +354580000001000000020002076d61696c6875620b7669616e6574776f726b73026e6c00001c0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03400010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +28520 +e9c800000001000000000000076d61696c6875620b7669616e6574776f726b73026e6c0000010001 +e9c880000001000000020002076d61696c6875620b7669616e6574776f726b73026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03400010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +28521 +5d98000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +5d98800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28522 +8db5000000010000000000000672656c6179320b7669616e6574776f726b73026e6c0000010001 +8db5800000010000000200020672656c6179320b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +28523 +3dd80000000100000000000006776468303131066e7434616c6c026e6c0000010001 +3dd88000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +28524 +0e4600100001000000000001037777770a73746164736b6e6f616c026e6c00000100010000290800000000000000 +0e4680000001000000020001037777770a73746164736b6e6f616c026e6c0000010001c0100002000100015180001d036e733213656666696369656e74776562686f7374696e6703636f6d00c01000020001000151800006036e7333c0330000291000000000000000 + +28525 +072300000001000000000000037777770a73746164736b6e6f616c026e6c0000010001 +072380000001000000020000037777770a73746164736b6e6f616c026e6c0000010001c0100002000100015180001d036e733213656666696369656e74776562686f7374696e6703636f6d00c01000020001000151800006036e7333c033 + +28526 +f74e000000010000000000000872616b65746e6574026e6c00001c0001 +f74e800000010000000200020872616b65746e6574026e6c00001c0001c00c0002000100015180001103646e730a636f6e63657074736661c015c00c0002000100015180001004646e733208636f6e6365707473c015c02900010001000151800004d5c51c03c04600010001000151800004d5c51e1c + +28527 +4dec000000010000000000000a627a6762616e6b696e67026e6c00000f0001 +4dec800000010000000200020a627a6762616e6b696e67026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +28528 +4f400000000100000000000005646e732d31056c61646f74026e6c0000010001 +4f408000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28529 +811b0000000100000000000009656475636174696f6e046564746507757477656e7465026e6c0000010001 +811b8000000100000003000309656475636174696f6e046564746507757477656e7465026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc01b00020001000151800006036e7333c01bc0370001000100015180000482590102c0490001000100015180000482590103c05b00010001000151800004c0571113 + +28530 +6646000000010000000000000377777706766e756e6574026e6c0000010001 +6646800000010000000200000377777706766e756e6574026e6c0000010001c0100002000100015180000b036e73340473617261c017c01000020001000151800006036e7333c02f + +28531 +2d200000000100000000000003777777137061726b6574626f6572646572696a2d76626e026e6c0000010001 +2d208000000100000002000203777777137061726b6574626f6572646572696a2d76626e026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c024c01000020001000151800006036e7332c03bc03800010001000151800004d5e38d0ac05500010001000151800004d5e38205 + +28532 +87dd00000001000000000000037777771072616e6477656765696e64686f76656e026e6c0000010001 +87dd80000001000000020001037777771072616e6477656765696e64686f76656e026e6c0000010001c0100002000100015180000a026e730469776179c021c0100002000100015180000c026e730364796e036f726700c03500010001000151800004c14e1e04 + +28533 +fa7100000001000000000000037777770b647664746a656b6f70656e026e6c0000010001 +fa7180000001000000020002037777770b647664746a656b6f70656e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03000010001000151800004c1ad97b2c04200010001000151800004c1ad97b4 + +28534 +d78a0000000100000000000003777777107363686970706572736f667477617265026e6c0000010001 +d78a8000000100000003000203777777107363686970706572736f667477617265026e6c0000010001c0100002000100015180000d036e733106776964657873c021c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c039c03500010001000151800004d4ccc0fcc06a000100010001518000043efa0703 + +28535 +66f70000000100000000000003687a69026e6c00001c0001 +66f78000000100000002000203687a69026e6c00001c0001c00c00020001000151800011036e73350a6e657461666661697273c010c00c00020001000151800006036e7336c028c02400010001000151800004c1ac2d05c04100010001000151800004c1ac2d06 + +28536 +f37e00000001000000000000036164730777656263617368026e6c0000010001 +f37e80000001000000020002036164730777656263617368026e6c0000010001c0100002000100015180000c04646e73310470696e73c018c0100002000100015180000704646e7332c031c02c00010001000151800004d9c26101c04400010001000151800004d9c26002 + +28537 +48d1000000010000000000000d737465656e63656e7472616c65026e6c0000010001 +48d1800000010000000200020d737465656e63656e7472616c65026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +28538 +7f970000000100000000000003777777096e6574646972656374026e6c0000010001 +7f978000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +28539 +751a000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +751a800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +28540 +325c00000001000000000000037777770776656e64726967026e6c0000010001 +325c80000001000000020000037777770776656e64726967026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c032 + +28541 +c5df000000010000000000000377777703646674026e6c0000010001 +c5df800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +28542 +bc0800000001000000000000036e73310c636f6e63657074732d696374026e6c0000010001 +bc0880000001000000020002036e73310c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800006036e7332c010c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e4b + +28543 +d67100000001000000000000036e73320c636f6e63657074732d696374026e6c0000010001 +d67180000001000000020002036e73320c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b + +28544 +2e8500000001000000000000086d61696c696e67730578696e676f026e6c0000010001 +2e8580000001000000020001086d61696c696e67730578696e676f026e6c0000010001c01500020001000151800013036e73310c636f6e63657074732d696374c01bc01500020001000151800006036e7332c033c04e00010001000151800004d5c51e4b + +28545 +2a3700000001000000000000036e733503777873026e6c0000010001 +2a3780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28546 +772f00100001000000000001037777770c77656263726561746f727334026e6c00000100010000290800000080000000 +772f80000001000000020002037777770c77656263726561746f727334026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c03100010001000151800004d4ccc0fc0000291000000000000000 + +28547 +08a8000000010000000000000377777708786c6d61696c6572026e6c0000010001 +08a8800000010000000200020377777708786c6d61696c6572026e6c0000010001c0100002000100015180000a04646e7330026975c019c0100002000100015180000704646e7331c032c02d00010001000151800004d91a7002c04300010001000151800004d91a7103 + +28548 +c7f300000001000000000000037777770c74656c65646973636f756e74026e6c0000010001 +c7f380000001000000020002037777770c74656c65646973636f756e74026e6c0000010001c0100002000100015180000c026e7306636f6d6e6574c01dc01000020001000151800006036e7332c034c03100010001000151800004d46c106ec04900010001000151800004d46c1078 + +28549 +fb84000000010000000000000876697375616c7064026e6c0000ff0001 +fb84800000010000000200020876697375616c7064026e6c0000ff0001c00c0002000100015180000c026e73067874646e6574c015c00c00020001000151800006036e7331c02cc02900010001000151800004c16e9d02c04100010001000151800004d9cc165f + +28550 +8a3f0010000100000000000106636f6f6b696504696c7365026e6c00000100010000290800000000000000 +8a3f8000000100000003000406636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a2840000291000000000000000 + +28551 +09220010000100000000000102616404696c7365026e6c00000100010000290800000000000000 +09228000000100000003000402616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a2840000291000000000000000 + +28552 +549c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +549c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28553 +85ca000000010000000000000377777706627269646765026e6c0000010001 +85ca800000010000000200020377777706627269646765026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c017c01000020001000151800006036e7332c02ec02b00010001000151800004c3402003c04400010001000151800004c340202b + +28554 +b5c200000001000000000000096f6e2d776865656c73026e6c0000010001 +b5c280000001000000020002096f6e2d776865656c73026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +28555 +849100100001000000000001037777771062616e6e65726d616e6167656d656e74026e6c00000100010000290800000000000000 +849180000001000000030004037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a2840000291000000000000000 + +28556 +089c00100001000000000001037777770b7374617274706167696e61026e6c00000100010000290800000000000000 +089c80000001000000030004037777770b7374617274706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c030000100010001518000043e45a282c042000100010001518000043e45a283c054000100010001518000043e45a2840000291000000000000000 + +28557 +cb6f0000000100000000000003777777066c6179636f73026e6c0000010001 +cb6f8403000100000001000003777777066c6179636f73026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +28558 +9ba000000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000010001 +9ba080000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28559 +035d00000001000000000000036e73330767617574656e67026e6c0000010001 +035d80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28560 +20db00000001000000000000037777770861666c696b6b656e026e6c0000010001 +20db80000001000000020000037777770861666c696b6b656e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +28561 +c25f0000000100000000000006636f6f6b696504696c7365026e6c0000010001 +c25f8000000100000003000306636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +28562 +d5a40000000100000000000002616404696c7365026e6c0000010001 +d5a48000000100000003000302616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +28563 +316f00000001000000000000076f6c6976696572026e6c0000ff0001 +316f80000001000000020002076f6c6976696572026e6c0000ff0001c00c0002000100015180000b026e73056c65766978c014c00c00020001000151800006036e7332c02bc02800010001000151800004d590ed07c03f000100010001518000043e3aa7da + +28564 +d5a700000001000000000000046162656c0564656d6f6e026e6c00001c0001 +d5a780000001000000030002046162656c0564656d6f6e026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +28565 +1288000000010000000000000e736e696a646572696e7374616c6c026e6c0000010001 +1288800000010000000200020e736e696a646572696e7374616c6c026e6c0000010001c00c0002000100015180000c026e73066e6578697465c01bc00c00020001000151800006036e7332c032c02f00010001000151800004d5e38d74c04700010001000151800004d5e38d75 + +28566 +39e700000001000000000000026e73076e656473746174026e6c00001c0001 +39e780000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28567 +fb3e00000001000000000000026e73076e656473746174026e6c0000260001 +fb3e80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28568 +46d600000001000000000000036e7332076e656473746174026e6c0000010001 +46d680000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28569 +424900000001000000000000036e7332076e656473746174026e6c00001c0001 +424980000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28570 +d6b300000001000000000000036e7332076e656473746174026e6c0000260001 +d6b380000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28571 +b93800000001000000000000036e7333076e656473746174026e6c00001c0001 +b93880000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28572 +4c7500000001000000000000036e7333076e656473746174026e6c0000260001 +4c7580000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28573 +128800000001000000000000036e7334076e656473746174026e6c0000010001 +128880000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28574 +c62600000001000000000000036e7334076e656473746174026e6c00001c0001 +c62680000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28575 +414800000001000000000000036e7334076e656473746174026e6c0000260001 +414880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28576 +ead200000001000000000000037777771062616e6e65726d616e6167656d656e74026e6c0000010001 +ead280000001000000030003037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +28577 +422e00000001000000000000096369746f67726f6570026e6c0000010001 +422e80000001000000020002096369746f67726f6570026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c3a93002c03b00010001000151800004c0576a65 + +28578 +7a9b00000001000000000000037777770b7374617274706167696e61026e6c0000010001 +7a9b80000001000000030003037777770b7374617274706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c030000100010001518000043e45a282c042000100010001518000043e45a283c054000100010001518000043e45a284 + +28579 +00fb00000001000000000000037777770d7469656e6572736578736c6574026e6c0000010001 +00fb80000001000000030000037777770d7469656e6572736578736c6574026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c03ac0100002000100015180000a076e73686f737433c03a + +28580 +087500000001000000000000096e696575776b6f6f70026e6c00000f0001 +087580000001000000020002096e696575776b6f6f70026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +28581 +8a91000000010000000000000377777704656d7578026e6c0000010001 +8a91800000010000000200000377777704656d7578026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +28582 +5dcc000000010000000000000377777704656d7578026e6c0000010001 +5dcc800000010000000200000377777704656d7578026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +28583 +e3e100000001000000000000036e73320461786974026e6c00001c0001 +e3e180000001000000030003036e73320461786974026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e3a440bc00c000100010001518000043e3a440cc04900010001000151800004d43d5c83 + +28584 +4cad00000001000000000000036e73320461786974026e6c0000260001 +4cad80000001000000030003036e73320461786974026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e3a440bc00c000100010001518000043e3a440cc04900010001000151800004d43d5c83 + +28585 +a97800000001000000000000036e73310461786974026e6c00001c0001 +a97880000001000000030003036e73310461786974026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e3a440bc037000100010001518000043e3a440cc04900010001000151800004d43d5c83 + +28586 +aa3100000001000000000000036e73310461786974026e6c0000260001 +aa3180000001000000030003036e73310461786974026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e3a440bc037000100010001518000043e3a440cc04900010001000151800004d43d5c83 + +28587 +f11300000001000000000000046d61696c076575726f6e6574026e6c0000010001 +f11380000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +28588 +152a000000010000000000000377777708626e64657374656d026e6c0000010001 +152a800000010000000200020377777708626e64657374656d026e6c0000010001c0100002000100015180000e036e7331076e657463617374c019c01000020001000151800006036e7332c031c02d00010001000151800004c2970101c04700010001000151800004c297012d + +28589 +d9f800000001000000000000036e733303777873026e6c0000010001 +d9f880000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28590 +93460000000100000000000003777777046c657861026e6c0000010001 +93468000000100000003000203777777046c657861026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +28591 +978b00000001000000000000037777770e737461647361766f6e747572656e026e6c0000010001 +978b80000001000000020002037777770e737461647361766f6e747572656e026e6c0000010001c0100002000100015180000a036e7331036e7873c01fc01000020001000151800006036e7332c037c03300010001000151800004d973c015c04900010001000151800004d973c102 + +28592 +726600000001000000000000076c696f6e657331066c696f6e6573026e6c0000010001 +726680000001000000020001076c696f6e657331066c696f6e6573026e6c0000010001c0140002000100015180000e036e7331076e6564636f6d70c01bc01400020001000151800011036e7332076e6564636f6d70036f726700c02f00010001000151800004c3c1a80d + +28593 +2b19000000010000000000000f7a756976656c626f6572646572696a026e6c0000010001 +2b19800000010000000200020f7a756976656c626f6572646572696a026e6c0000010001c00c0002000100015180000b026e73057173776562c01cc00c00020001000151800006036e7332c033c03000010001000151800004d5c42402c04700010001000151800004d5c42403 + +28594 +67be00000001000000000000036e73320670726f6c616e026e6c00001c0001 +67be80000001000000020002036e73320670726f6c616e026e6c00001c0001c0100002000100015180001404777777320c6e656465726c616e64776562c017c01000020001000151800002c00cc02b00010001000151800004d5d381c2c00c00010001000151800004d4ccd4e7 + +28595 +bc2c00000001000000000000036e73320670726f6c616e026e6c0000260001 +bc2c80000001000000020002036e73320670726f6c616e026e6c0000260001c0100002000100015180001404777777320c6e656465726c616e64776562c017c01000020001000151800002c00cc02b00010001000151800004d5d381c2c00c00010001000151800004d4ccd4e7 + +28596 +928a0000000100000000000006636f62616c74057173776562026e6c0000010001 +928a8000000100000002000206636f62616c74057173776562026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c02d00010001000151800004d5c42402c03e00010001000151800004d5c42403 + +28597 +f5070000000100000000000006636f62616c74057173776562026e6c00001c0001 +f5078000000100000002000206636f62616c74057173776562026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c02d00010001000151800004d5c42402c03e00010001000151800004d5c42403 + +28598 +1efe00000001000000000000036e7332057173776562026e6c00001c0001 +1efe80000001000000020002036e7332057173776562026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d5c42402c00c00010001000151800004d5c42403 + +28599 +843800000001000000000000026e73057173776562026e6c00001c0001 +843880000001000000020002026e73057173776562026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5c42402c03700010001000151800004d5c42403 + +28600 +82c800000001000000000000037777770962697a617273697465026e6c0000010001 +82c880000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +28601 +280028000001000000010000026e6c0000060001026763065f6d7364637306726f63767565026e6c0000010001000002580004c7a600ca +2800a8040000000000000000 + +28602 +3f0a0000000100000000000003777777096e6574646972656374026e6c0000010001 +3f0a8000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +28603 +c8180010000100000000000103777777066e666f726365026e6c00000100010000290800000080000000 +c8188000000100000002000303777777066e666f726365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b000100010001518000043ed45433c03d000100010001518000043ed454340000291000000000000000 + +28604 +4b8c0000000100000000000007737570706f7274026e6c0000020001 +4b8c8000000100000002000207737570706f7274026e6c0000020001c00c00020001000151800006036e7332c00cc00c00020001000151800006036e7334c00cc02800010001000151800004c372e7c8c03a00010001000151800004c372e6fe + +28605 +09520000000100000000000003657a68026e6c0000010001 +09528000000100000002000103657a68026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c0240001000100015180000489ae8f03 + +28606 +000000007002ff0045bd00000204055001010402 +000080010000000000000000 + +28607 +66e400000001000000000000066865746e6574026e6c0000010001 +66e480000001000000030003066865746e6574026e6c0000010001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +28608 +611e0000000100000000000004696b6361026e6c00001c0001 +611e8000000100000002000104696b6361026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +28609 +b6392e195010ff008dba0000000000000000 +b639ae140000000000000000 + +28610 +b6392e195018ff0004e90000008fedfc000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdf0403c4f700003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 +b639ae140000000000000000 + +28611 +044f00000001000000000000076275726d656573026e6c00000f000100 +044f80000001000000020000076275726d656573026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02e + +28612 +0c54000000010000000000000a70616369666963616972026e6c00000f0001 +0c54840300010000000100000a70616369666963616972026e6c00000f0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +28613 +b6392e275011fef28d280000000000000000 +b639ae240000000000000000 + +28614 +c1820000000100000000000013766572686f65662d726576616c696461746965026e6c00000f0001 +c1828000000100000002000213766572686f65662d726576616c696461746965026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c020c00c00020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +28615 +000000007002ff0080c700000204055001010402 +000080010000000000000000 + +28616 +b6392e285010fef28d270000000000000000 +b639ae240000000000000000 + +28617 +886f000000010000000000000c6370736164766f636174656e026e6c00000f0001 +886f840300010000000100000c6370736164766f636174656e026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +28618 +b63a092c5010ff00edb00000000000000000 +b63a89240000000000000000 + +28619 +d6f300000001000000000000036e733109657870616e73696f6e026e6c0000010001 +d6f380000001000000020002036e733109657870616e73696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea53cc03c00010001000151800004d44ea53d + +28620 +dfec00000001000000000000036e733109657870616e73696f6e026e6c0000260001 +dfec80000001000000020002036e733109657870616e73696f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea53cc03c00010001000151800004d44ea53d + +28621 +b63a092c5018ff0081700000008fd26c000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdf0403c4f700003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 +b63a89240000000000000000 + +28622 +eff600000001000000000000036e733209657870616e73696f6e026e6c0000010001 +eff680000001000000020002036e733209657870616e73696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d44ea53cc00c00010001000151800004d44ea53d + +28623 +f7fb00000001000000000000036e733209657870616e73696f6e026e6c0000260001 +f7fb80000001000000020002036e733209657870616e73696f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d44ea53cc00c00010001000151800004d44ea53d + +28624 +74b900000001000000000000056472616b61026e6c00000f0001 +74b980000001000000030000056472616b61026e6c00000f0001c00c00020001000151800019036e73310f6f726967696e2d736572766963657303636f6d00c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02a + +28625 +42dd00000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +42dd80000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +28626 +12ce00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +12ce80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +28627 +629700000001000000000000066265736f7577026e6c0000010001 +629780000001000000020002066265736f7577026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c013c00c00020001000151800006036e7332c02bc0270001000100015180000450416028c04200010001000151800004c356780c + +28628 +b63a093a5011fef2ed1e0000000000000000 +b63a89340000000000000000 + +28629 +ba7b00000001000000000000037777770a636f6d6269666f637573026e6c0000010001 +ba7b80000001000000020000037777770a636f6d6269666f637573026e6c0000010001c01000020001000151800014036e73310a62697a6d616368696e65036e657400c01000020001000151800006036e7332c033 + +28630 +4f3b0000000100000000000006636861726973026e6c0000ff0001 +4f3b8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +28631 +000000007002ff008e7500000204055001010402 +000080010000000000000000 + +28632 +cde800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +cde880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28633 +b63a093b5010fef2ed1d0000000000000000 +b63a89340000000000000000 + +28634 +587700000001000000000000037777770c77656263726561746f727334026e6c0000010001 +587780000001000000020001037777770c77656263726561746f727334026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c03100010001000151800004d4ccc0fc + +28635 +b63adcf25010ff0027980000000000000000 + + +28636 +832900000001000000000000086761796b72616e74026e6c0000010001 +832980000001000000020000086761796b72616e74026e6c0000010001c00c00020001000151800017036e73310d64757463687365727669636573036e657400c00c00020001000151800006036e7332c02d + +28637 +b63adcf25018ff0091310000008ffc92000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdf0403c4f700003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 + + +28638 +87e8000000010000000000000773747564656e7409494e484f4c4c414e44026e6c0000010001 +87e8800000010000000200020773747564656e7409494e484f4c4c414e44026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c2ab230bc04400010001000151800004c0576a65 + +28639 +b63add005011fef227060000000000000000 + + +28640 +bce800100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +bce880000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +28641 +de7400100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +de7480000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +28642 +b63add015010fef227050000000000000000 + + +28643 +53840000000100000000000005646e732d31056c61646f74026e6c0000010001 +53848000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28644 +94c20000000100000000000005646e732d32056c61646f74026e6c0000010001 +94c28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28645 +808300000001000000000000037777770b776161726e616172746f65026e6c0000010001 +808380000001000000020000037777770b776161726e616172746f65026e6c0000010001c01000020001000151800012036e73310b646d6d2d686f7374696e67c01cc01000020001000151800006036e7332c034 + +28646 +0b6400000001000000000000036e73340767617574656e67026e6c0000010001 +0b6480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28647 +1146000000010000000000000377777705616e646573026e6c0000010001 +1146800000010000000200010377777705616e646573026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c016c01000020001000151800011036e7332076e6564636f6d70036f726700c02a00010001000151800004c3c1a80d + +28648 +1000000000010000000000000377777706737570657273026e6c0000010001 +1000800000010000000200000377777706737570657273026e6c0000010001c0100002000100015180000f036e7331056279303030036e657400c01000020001000151800006036e7332c02f + +28649 +071700000001000000000000026e73076e656473746174026e6c00001c0001 +071780000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28650 +77b800000001000000000000026e73076e656473746174026e6c0000010001 +77b880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28651 +61e200000001000000000000026e73076e656473746174026e6c0000260001 +61e280000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28652 +5d8100000001000000000000036e7333076e656473746174026e6c0000010001 +5d8180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28653 +e0b900000001000000000000036e7332076e656473746174026e6c0000010001 +e0b980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28654 +1d9200000001000000000000036e7332076e656473746174026e6c00001c0001 +1d9280000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28655 +fd7900000001000000000000036e7332076e656473746174026e6c0000260001 +fd7980000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28656 +3352000000010000000000000565666e657403626974026e6c0000010001 +3352800000010000000300030565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +28657 +358f00000001000000000000036e7333076e656473746174026e6c00001c0001 +358f80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28658 +ffd500000001000000000000036e7333076e656473746174026e6c0000260001 +ffd580000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28659 +f3b100000001000000000000036e7334076e656473746174026e6c0000010001 +f3b180000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28660 +e02d00000001000000000000036e7332096575726f62656e6368026e6c0000010001 +e02d80000001000000020002036e7332096575726f62656e6368026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c3c18d35c00c00010001000151800004c3c18d36 + +28661 +51be00000001000000000000036e7332096575726f62656e6368026e6c0000260001 +51be80000001000000020002036e7332096575726f62656e6368026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c3c18d35c00c00010001000151800004c3c18d36 + +28662 +60a900000001000000000000036e7334076e656473746174026e6c00001c0001 +60a980000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28663 +48b700000001000000000000036e7332046a617a65026e6c0000010001 +48b780000001000000020000036e7332046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +28664 +e04000000001000000000000036e7334076e656473746174026e6c0000260001 +e04080000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28665 +a36a0000000100000000000008736179616e6f7261056d62757975026e6c0000010001 +a36a8000000100000002000008736179616e6f7261056d62757975026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c032 + +28666 +c8f700000001000000000000036972630565666e6574026e6c0000010001 +c8f780000001000000030000036972630565666e6574026e6c0000010001c0100002000100015180000f036e733108696e736563757265c016c01000020001000151800006036e7333c02ec01000020001000151800006036e7334c02e + +28667 +01c90000000100000000000012647261676f6e62616c6c7a2d6f6e6c696e65036e6c2d07736974652d6964026e6c0000010001 +01c98000000100000003000012647261676f6e62616c6c7a2d6f6e6c696e65036e6c2d07736974652d6964026e6c0000010001c02300020001000151800012036e733108626c7565646f6d65036e657400c02300020001000151800006036e7332c043c02300020001000151800006036e7333c043 + +28668 +321d0000000100000000000003726770026e6c0000010001 +321d8000000100000002000203726770026e6c0000010001c00c00020001000151800009036e7331026973c010c00c00020001000151800006036e7332c028c02400010001000151800004d5852102c03900010001000151800004d5c41503 + +28669 +195500000001000000000000077777772d64737a077365727669636503727567026e6c0000010001 +195580000001000000030003077777772d64737a077365727669636503727567026e6c0000010001c01c00020001000151800006036e7331c01cc01c00020001000151800006036e7332c01cc01c0002000100015180000e036e733107737572666e6574c020c03400010001000151800004817d0406c04600010001000151800004817d040dc05800010001000151800004c0576a65 + +28670 +9fea00000001000000000000064b5542535531034b5542024e4c0000010001 +9fea80000001000000030003064b5542535531034b5542024e4c0000010001c01300020001000151800009066b7562737532c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c02b0001000100015180000489380028c00c000100010001518000048938001bc04e00010001000151800004c0576a65 + +28671 +350a0000000100000000000003777777116865696e656b656e6d7573696368616c6c026e6c0000010001 +350a8000000100000002000203777777116865696e656b656e6d7573696368616c6c026e6c0000010001c01000020001000151800014036e73330d696e7465727370656374697665c022c01000020001000151800006036e7332c03ac03600010001000151800004c14ee108c05600010001000151800004c14ee102 + +28672 +72690000000100000000000003777777066e666f726365026e6c0000010001 +72698000000100000002000203777777066e666f726365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b000100010001518000043ed45433c03d000100010001518000043ed45434 + +28673 +35050000000100000000000003777777096e6574646972656374026e6c0000010001 +35058000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +28674 +f97400000001000000000000056d61696c31106a616172626575727375747265636874026e6c0000010001 +f97480000001000000020002056d61696c31106a616172626575727375747265636874026e6c0000010001c0120002000100015180000e036e73310765766964656e74c023c01200020001000151800006036e7332c03bc03700010001000151800004c36d19c4c05100010001000151800004c36d1942 + +28675 +1d220000000100000000000008686f73746e616d650462696e640000100003 +1d228000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28676 +38bf00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +38bf80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +28677 +33ac00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +33ac80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +28678 +e58900000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +e58980000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +28679 +574300100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +574380000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +28680 +3938000000010000000000000377777710616c6c2d726f756e6473657276696365026e6c0000010001 +3938800000010000000200020377777710616c6c2d726f756e6473657276696365026e6c0000010001c01000020001000151800010036e733109756e69736572766572c021c01000020001000151800006036e7332c039c03500010001000151800004c3454b03c05100010001000151800004d119a2fa + +28681 +31830000000100000000000004646e7331057368656c6c026e6c0000010001 +31838000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +28682 +d7f900000001000000000000036e733103696e67026e6c0000010001 +d7f980000001000000020002036e733103696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +28683 +fd6c00000001000000000000036e733203696e67026e6c0000010001 +fd6c80000001000000020002036e733203696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +28684 +2a8b0000000100000000000008686f73746e616d650462696e640000100003 +2a8b8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28685 +0d9b0000000100000000000008686f73746e616d650462696e640000100003 +0d9b8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28686 +78240000000100000000000005646e732d31056c61646f74026e6c0000010001 +78248000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28687 +bdc00000000100000000000005646e732d32056c61646f74026e6c0000010001 +bdc08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28688 +69f200000001000000000000036e7332056e6574636f026e6c0000260001 +69f280000001000000020002036e7332056e6574636f026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004c26d4a82c00c00010001000151800004c26dd146 + +28689 +4bbf00000001000000000000036e7331056e6574636f026e6c0000260001 +4bbf80000001000000020002036e7331056e6574636f026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c26d4a82c03800010001000151800004c26dd146 + +28690 +c9ca00000001000000000000036e7332056e6574636f026e6c00001c0001 +c9ca80000001000000020002036e7332056e6574636f026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004c26d4a82c00c00010001000151800004c26dd146 + +28691 +c7be00000001000000000000036e7331056e6574636f026e6c00001c0001 +c7be80000001000000020002036e7331056e6574636f026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c26d4a82c03800010001000151800004c26dd146 + +28692 +55c4000000010000000000000367746f08706f737462616e6b026e6c0000010001 +55c4800000010000000200020367746f08706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +28693 +1d1500000001000000000000076f6e6573697465026e6c0000ff0001 +1d1580000001000000020000076f6e6573697465026e6c0000ff0001c00c0002000100015180000f036e7331056d79736d74036e657400c00c00020001000151800006036e7332c02c + +28694 +08420000000100000000000005646e732d31056c61646f74026e6c0000010001 +08428000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28695 +9c480000000100000000000005646e732d32056c61646f74026e6c0000010001 +9c488000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28696 +f25c000000010000000000000377777709677961736c69636874026e6c0000010001 +f25c800000010000000300030377777709677961736c69636874026e6c0000010001c01000020001000151800010036e733109657863657074696f6ec01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5c9a38cc04a00010001000151800004d5c9a38dc05c00010001000151800004d5c9af03 + +28697 +0a3900000001000000000000037777770b646573706f72746c61616e026e6c0000010001 +0a3980000001000000020002037777770b646573706f72746c61616e026e6c0000010001c01000020001000151800014036e73330d696e7465727370656374697665c01cc01000020001000151800006036e7332c034c03000010001000151800004c14ee108c05000010001000151800004c14ee102 + +28698 +5fec000000010000000000000469632d73026e6c0000010001 +5fec800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +28699 +9e6600000001000000000000037777770a6c696e6b746970706572026e6c0000010001 +9e6680000001000000030003037777770a6c696e6b746970706572026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +28700 +9c490000000100000000000005646e732d31056c61646f74026e6c0000010001 +9c498000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28701 +f2ce00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +f2ce80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28702 +11070000000100000000000005646e732d32056c61646f74026e6c0000010001 +11078000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28703 +5bc2000000010000000000000f64652d6472656e74736368652d6161026e6c00000f0001 +5bc2800000010000000200000f64652d6472656e74736368652d6161026e6c00000f0001c00c0002000100015180000c026e7306766576696461c01cc00c00020001000151800006036e7332c033 + +28704 +c59b000000010000000000000472757564026e6c00000f0001 +c59b800000010000000300010472757564026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +28705 +b918000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +b918800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +28706 +8f250000000100000000000003777777066a617a706572026e6c0000010001 +8f258000000100000002000003777777066a617a706572026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +28707 +43c20000000100000000000005646e732d31056c61646f74026e6c0000010001 +43c28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28708 +dbe60000000100000000000005646e732d32056c61646f74026e6c0000010001 +dbe68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28709 +17f000000001000000000000037777770464617663026e6c0000010001 +17f080000001000000030000037777770464617663026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c031c0100002000100015180000a076e73686f737433c031 + +28710 +95a00000000100000000000003777777066164626f6d61026e6c0000010001 +95a08000000100000002000203777777066164626f6d61026e6c0000010001c01000020001000151800002c010c0100002000100015180000d04646e733105692d702d64c017c01000010001000151800004d912405fc03900010001000151800004d9124003 + +28711 +ea940000000100000000000003777777096e6974657370656564026e6c0000010001 +ea948000000100000002000203777777096e6974657370656564026e6c0000010001c0100002000100015180000c026e7306786978696f6ec01ac01000020001000151800006036e7331c031c02e000100010001518000043e04526bc046000100010001518000043e04526d + +28712 +2c4000000001000000000000046d61696c066368656c6c6f026e6c0000010001 +2c4080000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +28713 +aa7d0000000100000000000003777777057061727365026e6c0000010001 +aa7d8000000100000002000203777777057061727365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02a00010001000151800004d5ef9b0bc03c00010001000151800004d5efb238 + +28714 +430e000000010000000000000477697368026e6c00000f0001 +430e800000010000000300020477697368026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +28715 +39cb00000001000000000000066e6167696f7307726567696f2d69026e6c0000010001 +39cb80000001000000030003066e6167696f7307726567696f2d69026e6c0000010001c0130002000100015180000e076e73617574683103626974c01bc0130002000100015180000a076e736175746832c037c0130002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +28716 +b81300000001000000000000096f6e2d776865656c73026e6c0000010001 +b81380000001000000020002096f6e2d776865656c73026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +28717 +147500000001000000000000056d696c6f76026e6c0000010001 +147580000001000000020002056d696c6f76026e6c0000010001c00c0002000100015180000c036e733105636176656fc012c00c00020001000151800006036e7332c02ac026000100010001518000045112a002c03e000100010001518000045112a102 + +28718 +897500000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +897580000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +28719 +897600000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +897680000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +28720 +e43e000000010000000000000b6f61622d64656b6b657273026e6c0000060001 +e43e840300010000000100000b6f61622d64656b6b657273026e6c0000060001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +28721 +508f00000001000000000000037777770d766c696567746172696576656e026e6c0000010001 +508f80000001000000020002037777770d766c696567746172696576656e026e6c0000010001c0100002000100015180000e036e733007656173796e6574c01ec01000020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +28722 +f5de0000000100000000000004706f703309686f6e64656e646167026e6c0000010001 +f5de8000000100000002000204706f703309686f6e64656e646167026e6c0000010001c0110002000100015180000e026e7308696e7465726c6162c01bc01100020001000151800006036e7332c032c02f00010001000151800004d4cb0902c04900010001000151800004d4cb0903 + +28723 +c91100000001000000000000036e73330767617574656e67026e6c0000010001 +c91180000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28724 +c91200000001000000000000036e73340767617574656e67026e6c0000010001 +c91280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28725 +faa500000001000000000000037777770672656e646576026e6c0000010001 +faa580000001000000020000037777770672656e646576026e6c0000010001c01000020001000151800015036e73310b6475746368776562646e73036e657400c01000020001000151800006036e7332c02f + +28726 +09d900000001000000000000096767647477656e7465026e6c00000f0001 +09d980000001000000020000096767647477656e7465026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02d + +28727 +b63e0000000100000000000004646330310b6f61622d64656b6b657273026e6c0000060001 +b63e8403000100000001000004646330310b6f61622d64656b6b657273026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +28728 +8a2700000001000000000000037777770b6465766f6f727467616e67026e6c0000010001 +8a2780000001000000020002037777770b6465766f6f727467616e67026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +28729 +7a9300000001000000000000037777770661742d647767026e6c0000010001 +7a9380000001000000020000037777770661742d647767026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02f + +28730 +ccbb000000010000000000000377777706696e666f6d65026e6c0000010001 +ccbb800000010000000300000377777706696e666f6d65026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c033c0100002000100015180000a076e73686f737433c033 + +28731 +3b7400000001000000000000036e73330767617574656e67026e6c0000010001 +3b7480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28732 +767100000001000000000000036e73310a6d61696e736572766572026e6c0000010001 +767180000001000000020002036e73310a6d61696e736572766572026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d90867fec04e00010001000151800004c1ad2bfe + +28733 +de8000000001000000000000036e73320a6d61696e736572766572026e6c0000010001 +de8080000001000000020002036e73320a6d61696e736572766572026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d90867fec04e00010001000151800004c1ad2bfe + +28734 +c13900000001000000000000037777770965726f636c69636b73026e6c0000010001 +c13980000001000000020002037777770965726f636c69636b73026e6c0000010001c0100002000100015180000b036e7331046e732d31c01ac01000020001000151800006036e7332c032c02e000100010001518000045045a0cdc04500010001000151800004d4cceec8 + +28735 +7421000000010000000000000a67726f6e6462657a6974026e6c0000ff0001 +7421800000010000000200020a67726f6e6462657a6974026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +28736 +05c90000000100000000000004646e7331057368656c6c026e6c0000010001 +05c98000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +28737 +336200000001000000000000026e7304616b7475026e6c0000010001 +336280000001000000020001026e7304616b7475026e6c0000010001c00f00020001000151800006036e7331c00fc00f0002000100015180000b026e73026e6c036e657400c02800010001000151800004c2b25945 + +28738 +316e00000001000000000000036e733107737572666e6574026e6c0000010001 +316e80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +28739 +30ba00000001000000000000036e73310773656172636879026e6c0000010001 +30ba80000001000000020002036e73310773656172636879026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9aa1235c03a00010001000151800004507e81e0 + +28740 +d1fd000000010000000000000377777706732d636f7274026e6c0000010001 +d1fd800000010000000200020377777706732d636f7274026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c017c01000020001000151800006036e7332c02fc02b0001000100015180000451113264c04700010001000151800004d5c42851 + +28741 +fcf0000000010000000000000377777706732d636f7274026e6c0000010001 +fcf0800000010000000200020377777706732d636f7274026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c017c01000020001000151800006036e7332c02fc02b0001000100015180000451113264c04700010001000151800004d5c42851 + +28742 +5dd2000000010000000000000d676c6f62616c696e7369746573026e6c0000010001 +5dd2800000010000000200020d676c6f62616c696e7369746573026e6c0000010001c00c0002000100015180000f036e73310861746c616e74697ac01ac00c00020001000151800006036e7332c032c02e00010001000151800004d5efa011c04900010001000151800004d5efa075 + +28743 +7ff10000000100000000000007686161726c656d026e6c00000f0001 +7ff18000000100000002000007686161726c656d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +28744 +9eae00000001000000000000076e6f7465736e6c0473636961026e6c0000010001 +9eae80000001000000020000076e6f7465736e6c0473636961026e6c0000010001c0140002000100015180000c03646e73036b706e02626500c01400020001000151800005026e73c031 + +28745 +e4df00000001000000000000076e6f7465736e6c0473636961026e6c0000010001 +e4df80000001000000020000076e6f7465736e6c0473636961026e6c0000010001c0140002000100015180000c03646e73036b706e02626500c01400020001000151800005026e73c031 + +28746 +bf3400000001000000000000076e6f7465736e6c0473636961026e6c00001c0001 +bf3480000001000000020000076e6f7465736e6c0473636961026e6c00001c0001c0140002000100015180000c03646e73036b706e02626500c01400020001000151800005026e73c031 + +28747 +1e150000000100000000000003777777096175746f747261636b026e6c0000010001 +1e158000000100000003000303777777096175746f747261636b026e6c0000010001c01000020001000151800010036e733109776973652d67757973c01ac01000020001000151800006036e7330c032c01000020001000151800006036e7332c032c02e00010001000151800004d413cd91c04a00010001000151800004d413cd8fc05c00010001000151800004c16d7a3e + +28748 +038000000001000000000000036e73330767617574656e67026e6c0000010001 +038080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28749 +c91400000001000000000000036e73330767617574656e67026e6c0000010001 +c91480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28750 +c91500000001000000000000036e73340767617574656e67026e6c0000010001 +c91580000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28751 +1f1c0000000100000000000006636861726973026e6c00000f0001 +1f1c8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +28752 +4476000000010000000000001063617262656175747973657276696365026e6c0000010001 +4476800000010000000200001063617262656175747973657276696365026e6c0000010001c00c0002000100015180000c026e7306766576696461c01dc00c00020001000151800006036e7332c034 + +28753 +26a300000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +26a380000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +28754 +f8e20000000100000000000004626572740b696e7465727669736f7273026e6c0000010001 +f8e28000000100000002000204626572740b696e7465727669736f7273026e6c0000010001c01100020001000151800002c00cc011000200010001518000080565726e6965c011c00c00010001000151800004c0dc7c61c03f00010001000151800004c0dc7d61 + +28755 +a26800000001000000000000036e7473026e6c00000f0001 +a26880000001000000020002036e7473026e6c00000f0001c00c0002000100015180000a036e733103697870c010c00c00020001000151800006036e7332c028c02400010001000151800004d943e639c03a000100010001518000043efa063f + +28756 +7c710000000100000000000004626572740b696e7465727669736f7273026e6c0000260001 +7c718000000100000002000204626572740b696e7465727669736f7273026e6c0000260001c01100020001000151800002c00cc011000200010001518000080565726e6965c011c00c00010001000151800004c0dc7c61c03f00010001000151800004c0dc7d61 + +28757 +0a41000000010000000000000565726e69650b696e7465727669736f7273026e6c0000010001 +0a41800000010000000200020565726e69650b696e7465727669736f7273026e6c0000010001c012000200010001518000070462657274c012c01200020001000151800002c00cc03200010001000151800004c0dc7c61c00c00010001000151800004c0dc7d61 + +28758 +286f000000010000000000000565726e69650b696e7465727669736f7273026e6c0000260001 +286f800000010000000200020565726e69650b696e7465727669736f7273026e6c0000260001c012000200010001518000070462657274c012c01200020001000151800002c00cc03200010001000151800004c0dc7c61c00c00010001000151800004c0dc7d61 + +28759 +2eae0000000100000000000003637067026e6c00000f0001 +2eae8000000100000002000203637067026e6c00000f0001c00c0002000100015180000e036e7331076465636c617265c010c00c00020001000151800006036e7332c028c024000100010001518000043ed4528dc03e000100010001518000045054e9de + +28760 +fac4000000010000000000000750313530302d310474656e77026e6c0000010001 +fac4800000010000000300010750313530302d310474656e77026e6c0000010001c0140002000100015180000e026e7308767575727765726bc019c01400020001000151800012036e733208767575727765726b036e657400c01400020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +28761 +cbe300000001000000000000037777770974656c656772616166026e6c0000010001 +cbe380000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +28762 +29230000000100000000000003777777066a61636f646f026e6c0000010001 +29238000000100000002000203777777066a61636f646f026e6c0000010001c01000020001000151800013036e73310c7570706572686f7374696e67c017c01000020001000151800006036e7332c02fc02b00010001000151800004d994a851c04a00010001000151800004d994a852 + +28763 +9ddb000000010000000000000d6c6974686f706172746e657273026e6c00000f0001 +9ddb800000010000000200020d6c6974686f706172746e657273026e6c00000f0001c00c00020001000151800011036e73310a646e7373657276657273c01ac00c00020001000151800006036e7332c032c02e000100010001518000045054ed14c04b00010001000151800004d5f72f14 + +28764 +5412000000010000000000000f68616e73612d6e656465726c616e64026e6c00000f0001 +5412800000010000000200020f68616e73612d6e656465726c616e64026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec01cc00c00020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +28765 +69b100000001000000000000037777770e31323374696a6473636872696674026e6c0000010001 +69b180000001000000020000037777770e31323374696a6473636872696674026e6c0000010001c01000020001000151800012036e7331086f6e6c696e6562700362697a00c01000020001000151800006036e7332c037 + +28766 +29a100000001000000000000026e7306787334616c6c026e6c00001c0001 +29a180000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +28767 +039800000001000000000000036e733206787334616c6c026e6c00001c0001 +039880000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +28768 +4b620000000100000000000003676274026e6c00000f0001 +4b628000000100000002000203676274026e6c00000f0001c00c00020001000151800011036e73310a62686d732d67726f6570c010c00c00020001000151800006036e7332c028c02400010001000151800004d9726162c04100010001000151800004d9726161 + +28769 +12e00000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +12e08000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28770 +7cd6000000010000000000000377777706732d636f7274026e6c0000010001 +7cd6800000010000000200020377777706732d636f7274026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c017c01000020001000151800006036e7332c02fc02b0001000100015180000451113264c04700010001000151800004d5c42851 + +28771 +2cc700000001000000000000026e730a62686d732d67726f6570026e6c00001c0001 +2cc780000001000000020002026e730a62686d732d67726f6570026e6c00001c0001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc02e00010001000151800004d9726162c04000010001000151800004d9726161 + +28772 +7c2c00000001000000000000036e733303777873026e6c0000010001 +7c2c80000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +28773 +1aed0000000100000000000004777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001 +1aed8000000100000002000204777061640a7377697463686a6f6273026e6c0a7377697463686a6f6273026e6c0000010001c01f00020001000151800009036e7331026973c02ac01f00020001000151800006036e7332c042c03e00010001000151800004d5852102c05300010001000151800004d5c41503 + +28774 +b88d000000010000000000000377777704696c7365026e6c0000010001 +b88d800000010000000300030377777704696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c029000100010001518000043e45a282c03b000100010001518000043e45a283c04d000100010001518000043e45a284 + +28775 +fb670000000100000000000004686f6d65026e6c0000ff0001 +fb678000000100000003000304686f6d65026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02500010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +28776 +5e890000000100000000000003777777087472697074726170026e6c0000010001 +5e898000000100000002000203777777087472697074726170026e6c0000010001c0100002000100015180000b036e7331047769776fc019c01000020001000151800006036e7332c031c02d000100010001518000043eb1a454c044000100010001518000043eb1a456 + +28777 +a5ac0000000100000000000003777777076a696a62656e74026e6c00000f0001 +a5ac8000000100000002000003777777076a696a62656e74026e6c00000f0001c01000020001000151800010036e73310673697465347503636f6d00c01000020001000151800006036e7332c030 + +28778 +230000000001000000000000036e733109756e69736572766572026e6c0000010001 +230080000001000000020002036e733109756e69736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +28779 +e9c00000000100000000000014616c61726d6572696e672d74687569737a6f7267026e6c0000010001 +e9c08000000100000002000214616c61726d6572696e672d74687569737a6f7267026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc021c00c00020001000151800006036e7332c038c03500010001000151800004c26d0642c04d00010001000151800004c26d0963 + +28780 +0df000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +0df080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +28781 +188100100001000000000001066170616368650962617365667265616b026e6c00000100010000290800000080000000 +188180000001000000030004066170616368650962617365667265616b026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c03100010001000151800004c32fdc83c042000100010001518000045054f998c05400010001000151800004c16d7adb0000291000000000000000 + +28782 +756c00000001000000000000086e4c6f676368656d026e6c0000010001 +756c80000001000000020000086e4c6f676368656d026e6c0000010001c00c00020001000151800012036e7333087a6f6e656564697403636f6d00c00c00020001000151800006036e7334c02d + +28783 +f86a000000010000000000000377777704696b6561026e6c0000010001 +f86a800000010000000200000377777704696b6561026e6c0000010001c010000200010001518000150a676174656b656570657204696b656103636f6d00c010000200010001518000130761757468323130026e73027575036e657400 + +28784 +31780010000100000000000104686f6d65066863636e6574026e6c00000100010000290800000080000000 +31788000000100000002000104686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c0330000291000000000000000 + +28785 +6e360000000100000000000009677275626f736f6674026e6c00000f0001 +6e368000000100000002000009677275626f736f6674026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c030 + +28786 +2c4500000001000000000000037777770564616e6b61026e6c0000010001 +2c4580000001000000020001037777770564616e6b61026e6c0000010001c0100002000100015180000906706f7274616cc010c0100002000100015180000d036e7332036b706e036e657400c02a00010001000151800004c1ad9a0a + +28787 +e6ad0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +e6ad8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28788 +038c00000001000000000000036e73340767617574656e67026e6c0000010001 +038c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28789 +43ce00100001000000000001046e767462026e6c00000100010000290800000000000000 +43ce80000001000000020003046e767462026e6c0000010001c00c0002000100015180000b036e73310470696e65c011c00c00020001000151800006036e7332c029c02500010001000151800004d59c0201c03c00010001000151800004c3c1a3030000291000000000000000 + +28790 +0db100000001000000000000096d797265616c697479026e6c0000ff0001 +0db180000001000000020000096d797265616c697479026e6c0000ff0001c00c00020001000151800014036e73310a6d69686f736e65742d3803636f6d00c00c00020001000151800006036e7332c02e + +28791 +50fd00000001000000000000046e767462026e6c0000010001 +50fd80000001000000020002046e767462026e6c0000010001c00c0002000100015180000b036e73310470696e65c011c00c00020001000151800006036e7332c029c02500010001000151800004d59c0201c03c00010001000151800004c3c1a303 + +28792 +581700000001000000000000096d797265616c697479026e6c00001c0001 +581780000001000000020000096d797265616c697479026e6c00001c0001c00c00020001000151800014036e73310a6d69686f736e65742d3803636f6d00c00c00020001000151800006036e7332c02e + +28793 +564200000001000000000000037777770a6d69737465726d61696c026e6c0000010001 +564280000001000000020002037777770a6d69737465726d61696c026e6c0000010001c0100002000100015180000b036e73310477656233c01bc01000020001000151800006036e7332c033c02f00010001000151800004d436240ec04600010001000151800004c2b262ef + +28794 +881f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +881f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28795 +ec5c000000010000000000000b6e6f7661636f6c6c656765026e6c00000f0001 +ec5c800000010000000200020b6e6f7661636f6c6c656765026e6c00000f0001c00c0002000100015180000d036e7331066e6c74726565c018c00c00020001000151800006036e7332c030c02c00010001000151800004d4b20403c04500010001000151800004d5881e45 + +28796 +cf2c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +cf2c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28797 +3a0e00000001000000000000026e73076575726f6e6574026e6c0000010001 +3a0e80000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +28798 +f813000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +f813800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28799 +c9dc000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +c9dc800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28800 +d8f5000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +d8f5800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28801 +4757000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +4757800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28802 +d2fe000000010000000000000a656d6561736d7470303103616f6e026e6c00001c0001 +d2fe800000010000000200010a656d6561736d7470303103616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28803 +94e5000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +94e5800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +28804 +8d5e000000010000000000000377777711646f72646f676e657265736964656e6365026e6c0000010001 +8d5e800000010000000200020377777711646f72646f676e657265736964656e6365026e6c0000010001c0100002000100015180000a04646e7330026975c022c0100002000100015180000704646e7331c03bc03600010001000151800004d91a7002c04c00010001000151800004d91a7103 + +28805 +c6a90000000100000000000005646e732d31056c61646f74026e6c0000010001 +c6a98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28806 +97500000000100000000000005646e732d32056c61646f74026e6c0000010001 +97508000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28807 +7e8100000001000000000000046d61696c0568616b6b75026e6c0000010001 +7e8180000001000000020002046d61696c0568616b6b75026e6c0000010001c0110002000100015180000f03646e730864617461736d6974c017c0110002000100015180000704646e7331c02fc02b0001000100015180000451045a82c0460001000100015180000451045ade + +28808 +9fac00000001000000000000037777770d6865696c6f6f2d6f6e6c696e65026e6c0000010001 +9fac80000001000000030001037777770d6865696c6f6f2d6f6e6c696e65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +28809 +c2d300000001000000000000036e73310974656c656b6162656c026e6c0000010001 +c2d380000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +28810 +126200000001000000000000076d656d62657273056c79636f73026e6c0000010001 +126280000001000000020000076d656d62657273056c79636f73026e6c0000010001c0140002000100015180001106646e73312d31056c79636f7302646500c0140002000100015180000906646e73322d31c035 + +28811 +ed690000000100000000000003777777076e656473746174026e6c0000010001 +ed698000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28812 +23d600000001000000000000066170616368650962617365667265616b026e6c0000010001 +23d680000001000000030003066170616368650962617365667265616b026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c03100010001000151800004c32fdc83c042000100010001518000045054f998c05400010001000151800004c16d7adb + +28813 +0e340000000100000000000009652d6c756e61746963026e6c0000010001 +0e348000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +28814 +0e520000000100000000000009652d6c756e61746963026e6c0000010001 +0e528000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +28815 +3050000000010000000000000370726f076e656473746174026e6c0000010001 +3050800000010000000200020370726f076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28816 +19830000000100000000000009636f6d70756c696e65026e6c00000f0001 +19838000000100000002000209636f6d70756c696e65026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e733407737570706f7274c016c02a00010001000151800004c372e87ec03c00010001000151800004c372e6fe + +28817 +3b1e000000010000000000000873706f72742d666c026e6c00000f0001 +3b1e840300010000000100000873706f72742d666c026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +28818 +565600000001000000000000036d6274026e6c0000010001 +565680000001000000020002036d6274026e6c0000010001c00c0002000100015180000b026e7305706c616e74c010c00c00020001000151800006036e7332c027c02400010001000151800004d59f0037c03b00010001000151800004d59f0046 + +28819 +956d00000001000000000000026e73076e656473746174026e6c00001c0001 +956d80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28820 +11b20000000100000000000003777777076e656473746174026e6c0000010001 +11b28000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28821 +c46800000001000000000000026e73076e656473746174026e6c0000260001 +c46880000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28822 +793d00000001000000000000036e7332076e656473746174026e6c0000010001 +793d80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28823 +2bf200000001000000000000036e7332076e656473746174026e6c00001c0001 +2bf280000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28824 +ff9800000001000000000000036e7332076e656473746174026e6c0000260001 +ff9880000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28825 +8f3e00000001000000000000036e7333076e656473746174026e6c00001c0001 +8f3e80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28826 +75f500000001000000000000036e7333076e656473746174026e6c0000260001 +75f580000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +28827 +5f9500000001000000000000036e7334076e656473746174026e6c00001c0001 +5f9580000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28828 +046800000001000000000000036e7334076e656473746174026e6c0000260001 +046880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +28829 +05d0000000010000000000000377777712736c696a746572696a7665726d65756c656e026e6c0000010001 +05d0800000010000000200020377777712736c696a746572696a7665726d65756c656e026e6c0000010001c01000020001000151800011036e73310a7765626275726f646e73c023c01000020001000151800006036e7332c03bc03700010001000151800004d51380cec05400010001000151800004d513806a + +28830 +d40400000001000000000000037777770b616466697265776f726b73026e6c0000010001 +d40480000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +28831 +beaf00000001000000000000037777770b616466697265776f726b73026e6c0000010001 +beaf80000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +28832 +d8330000000100000000000002343503313837033135360236340a626c61636b686f6c657307656173796e6574026e6c0000010001 +d8338000000100000002000202343503313837033135360236340a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +28833 +c8cb00000001000000000000106361706974616c2d6c6f676973746963026e6c00000f0001 +c8cb84030001000000010000106361706974616c2d6c6f676973746963026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +28834 +10270000000100000000000009766572627275676765026e6c00000f0001 +10278000000100000002000209766572627275676765026e6c00000f0001c00c0002000100015180000d026e73076e657467617465c016c00c0002000100015180000704646e7331c02dc02a000100010001518000043e0456aac04300010001000151800004d47b8edb + +28835 +e12900000001000000000000037777770774656c65766261026e6c0000010001 +e12980000001000000030002037777770774656c65766261026e6c0000010001c0100002000100015180000a036e733103766261c018c01000020001000151800006036e7332c030c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004d4883c23c04200010001000151800004c14e4887 + +28836 +316f00000001000000000000036e7332086865696a6d616e73026e6c0000010001 +316f80000001000000020002036e7332086865696a6d616e73026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000b086578686175737432c010c02d00010001000151800004c1ad9303c03f00010001000151800004d47b0e91 + +28837 +77a4000000010000000000000b7374617274706167696e61026e6c0000ff0001 +77a4800000010000000300030b7374617274706167696e61026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +28838 +51530000000100000000000008686f73746e616d650462696e640000100003 +51538000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +28839 +5d5a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +5d5a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28840 +e3a80000000100000000000005646e732d32056c61646f74026e6c0000010001 +e3a88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28841 +a6400000000100000000000004686f6d65066863636e6574026e6c0000010001 +a6408000000100000002000004686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +28842 +cc840000000100000000000003777777046d65746f026e6c0000010001 +cc848000000100000002000203777777046d65746f026e6c0000010001c0100002000100015180000a036e733003696270c015c01000020001000151800006036e7331c02dc02900010001000151800004c1ac2d8cc03f00010001000151800004c1ac2d8d + +28843 +df22000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +df22800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +28844 +95d50000000100000000000004736d7470067874646e6574026e6c0000010001 +95d58000000100000002000204736d7470067874646e6574026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7331c011c02c00010001000151800004c16e9d02c03d00010001000151800004d9cc165f + +28845 +446c0000000100000000000004736d7470067874646e6574026e6c00001c0001 +446c8000000100000002000204736d7470067874646e6574026e6c00001c0001c01100020001000151800005026e73c011c01100020001000151800006036e7331c011c02c00010001000151800004c16e9d02c03d00010001000151800004d9cc165f + +28846 +55ef0000000100000000000004736d7470067874646e6574026e6c0000260001 +55ef8000000100000002000204736d7470067874646e6574026e6c0000260001c01100020001000151800005026e73c011c01100020001000151800006036e7331c011c02c00010001000151800004c16e9d02c03d00010001000151800004d9cc165f + +28847 +5d5b000000010000000000000331373202323101310131026e6c0000010001 +5d5b840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +28848 +314f0000000100000000000005736d747031067874646e6574026e6c0000010001 +314f8000000100000002000205736d747031067874646e6574026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7331c012c02d00010001000151800004c16e9d02c03e00010001000151800004d9cc165f + +28849 +3f4e0000000100000000000005736d747031067874646e6574026e6c00001c0001 +3f4e8000000100000002000205736d747031067874646e6574026e6c00001c0001c01200020001000151800005026e73c012c01200020001000151800006036e7331c012c02d00010001000151800004c16e9d02c03e00010001000151800004d9cc165f + +28850 +321c0000000100000000000005736d747031067874646e6574026e6c0000260001 +321c8000000100000002000205736d747031067874646e6574026e6c0000260001c01200020001000151800005026e73c012c01200020001000151800006036e7331c012c02d00010001000151800004c16e9d02c03e00010001000151800004d9cc165f + +28851 +177b00000001000000000000036e7331067874646e6574026e6c00001c0001 +177b80000001000000020002036e7331067874646e6574026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004c16e9d02c00c00010001000151800004d9cc165f + +28852 +2f9d00000001000000000000036e7331067874646e6574026e6c0000260001 +2f9d80000001000000020002036e7331067874646e6574026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004c16e9d02c00c00010001000151800004d9cc165f + +28853 +944d00000001000000000000026e73067874646e6574026e6c00001c0001 +944d80000001000000020002026e73067874646e6574026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +28854 +31c400000001000000000000026e73067874646e6574026e6c0000260001 +31c480000001000000020002026e73067874646e6574026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +28855 +f1560000000100000000000006696d61676573066e6c726f6569026e6c0000010001 +f1568000000100000002000206696d61676573066e6c726f6569026e6c0000010001c01300020001000151800012036e73310b696e7465727374726f6f6dc01ac01300020001000151800006036e7332c032c02e0001000100015180000450558121c04c00010001000151800004d58141c4 + +28856 +d9d400000001000000000000047777773203696270026e6c0000010001 +d9d480000001000000020002047777773203696270026e6c0000010001c01100020001000151800006036e7330c011c01100020001000151800006036e7331c011c02900010001000151800004c1ac2d8cc03b00010001000151800004c1ac2d8d + +28857 +0fa90000000100000000000005646e732d31056c61646f74026e6c0000010001 +0fa98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28858 +bbca0000000100000000000005646e732d32056c61646f74026e6c0000010001 +bbca8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28859 +df720000000100000000000009666565737473686f70053234776562026e6c0000010001 +df728000000100000002000209666565737473686f70053234776562026e6c0000010001c0160002000100015180000b036e7331046e732d31c01cc01600020001000151800006036e7332c034c030000100010001518000045045a0cdc04700010001000151800004d4cceec8 + +28860 +11070000000100000000000003646e73027972026e6c0000010001 +11078000000100000002000003646e73027972026e6c0000010001c0100002000100015180001103646e7307626974626f6f6d036e657400c0100002000100015180000704646e7332c02b + +28861 +087a0000000100000000000003646e7307626974626f6f6d026e6c0000010001 +087a8000000100000002000003646e7307626974626f6f6d026e6c0000010001c0100002000100015180001103646e7307626974626f6f6d036e657400c0100002000100015180000704646e7332c030 + +28862 +ee010000000100000000000005646e732d31056c61646f74026e6c0000010001 +ee018000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28863 +f16600000001000000000000066368656c6c6f026e6c0000ff0001 +f16680000001000000030003066368656c6c6f026e6c0000ff0001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +28864 +c3640000000100000000000005646e732d32056c61646f74026e6c0000010001 +c3648000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +28865 +51bb0000000100000000000010676f6c6663656e7472756d2d62657374026e6c0000010001 +51bb8000000100000003000110676f6c6663656e7472756d2d62657374026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc01dc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04fc031000100010001518000043efa0202 + +28866 +411700000001000000000000037777771b736b6976616b616e7469652543322541306f6f7374656e72696a6b0f76616b616e7469652d61616e626f64026e6c0000010001 +411780000001000000020000037777771b736b6976616b616e7469652543322541306f6f7374656e72696a6b0f76616b616e7469652d61616e626f64026e6c0000010001c02c00020001000151800011036e733005736572766502636f02756b00c02c00020001000151800010036e7330057365727665036e6574c05d + +28867 +85fb0000000100000000000003777777136f6e6c696e65736f636365726d616e61676572026e6c0000010001 +85fb8000000100000002000203777777136f6e6c696e65736f636365726d616e61676572026e6c0000010001c0100002000100015180000b036e73310470696e65c024c01000020001000151800006036e7332c03cc03800010001000151800004d59c0201c04f00010001000151800004c3c1a303 + +28868 +5b4400000001000000000000026e730678786c696e6b026e6c0000010001 +5b4480000001000000030002026e730678786c696e6b026e6c0000010001c00f0002000100015180000f036e73310870726f7365727665c016c00f00020001000151800012036e73320970726f2d736572766502626500c00f00020001000151800006036e7333c02ec02a000100010001518000045054e055c06300010001000151800004d4ccc655 + +28869 +2da200000001000000000000026e730678786c696e6b026e6c0000260001 +2da280000001000000030002026e730678786c696e6b026e6c0000260001c00f0002000100015180000f036e73310870726f7365727665c016c00f00020001000151800012036e73320970726f2d736572766502626500c00f00020001000151800006036e7333c02ec02a000100010001518000045054e055c06300010001000151800004d4ccc655 + +28870 +096f28000001000200000000024e4c00000600010d636f6d736572766572323030300541442d4d42024e4c00000500fe000000000000c01400010001000000000004c0a80103 +096fa8040000000000000000 + +28871 +d66c000000010000000000000873686f7770696373026e6c0000010001 +d66c800000010000000200000873686f7770696373026e6c0000010001c00c0002000100015180000f036e7336086a726f6e6c696e65c015c00c00020001000151800014036e73330d686f73746e656465726c616e64c015 + +28872 +2c4a00000001000000000000046d61696c066368656c6c6f026e6c0000010001 +2c4a80000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +28873 +887d0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +887d8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28874 +26be0000000100000000000002343503313837033135360236340a626c61636b686f6c657307656173796e6574026e6c0000050001 +26be8000000100000002000202343503313837033135360236340a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +28875 +be3c00000001000000000000037777770e74726f75626c65736174686f6d65026e6c0000010001 +be3c80000001000000020002037777770e74726f75626c65736174686f6d65026e6c0000010001c0100002000100015180000a036e7331036e7873c01fc01000020001000151800006036e7332c037c03300010001000151800004d973c015c04900010001000151800004d973c102 + +28876 +8bbc0000000100000000000004736d74700a6d756e74656e68756973026e6c0000010001 +8bbc8000000100000002000004736d74700a6d756e74656e68756973026e6c0000010001c01100020001000151800010026e730777697265687562036e657400c01100020001000151800006036e7332c033 + +28877 +a5c700000001000000000000087661636174757265096f7665727a69636874026e6c0000010001 +a5c780000001000000030003087661636174757265096f7665727a69636874026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c033000100010001518000043e45a282c045000100010001518000043e45a283c057000100010001518000043e45a284 + +28878 +0dfd000000010000000000000a6f6166686f6c6c616e64026e6c0000ff0001 +0dfd800000010000000200000a6f6166686f6c6c616e64026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c017c00c0002000100015180000704686e7331c030 + +28879 +3e3900000001000000000000037777770763686970646972026e6c0000010001 +3e3980000001000000020002037777770763686970646972026e6c0000010001c01000020001000151800014036e73310d706f7765727365727665723138c018c01000020001000151800006036e7332c030c02c0001000100015180000451047111c04c0001000100015180000451047112 + +28880 +6b5700000001000000000000037777770763686970646972026e6c0000010001 +6b5780000001000000020002037777770763686970646972026e6c0000010001c01000020001000151800014036e73310d706f7765727365727665723138c018c01000020001000151800006036e7332c030c02c0001000100015180000451047111c04c0001000100015180000451047112 + +28881 +2416000000010000000000000375726b026e6c0000ff0001 +2416800000010000000200020375726b026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c010c00c00020001000151800006036e7331c027c02400010001000151800004504f6101c03e00010001000151800004504f6102 + +28882 +a6cd000000010000000000000963686576616c696572026e6c00000f0001 +a6cd800000010000000200000963686576616c696572026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02e + +28883 +08570000000100000000000007626c616764656e026e6c00000f0001 +08578000000100000002000007626c616764656e026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +28884 +19c500000001000000000000026e730368616e026e6c0000010001 +19c580000001000000020002026e730368616e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +28885 +a9220000000100000000000004736d74700c626172656e74736b72616e73026e6c0000010001 +a9228000000100000002000204736d74700c626172656e74736b72616e73026e6c0000010001c0110002000100015180000e036e733007656173796e6574c01ec01100020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +28886 +c3b700000001000000000000046d61696c0a72656b656e6b616d6572026e6c0000010001 +c3b780000001000000020002046d61696c0a72656b656e6b616d6572026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73076b6e6f77617265c01cc03000010001000151800004d4298912c04100010001000151800004c3402003 + +28887 +b918000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +b918800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +28888 +1b8a000000010000000000000d6d617269616e2d6f6e6c696e65026e6c0000010001 +1b8a840300010000000100000d6d617269616e2d6f6e6c696e65026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +28889 +743e0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +743e8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28890 +09b400000001000000000000036e7331057669727475026e6c0000010001 +09b480000001000000020002036e7331057669727475026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9726102c03800010001000151800004d58141c4 + +28891 +6b6800000001000000000000036e7331057669727475026e6c00001c0001 +6b6880000001000000020002036e7331057669727475026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9726102c03800010001000151800004d58141c4 + +28892 +7c7200000001000000000000036e7331057669727475026e6c0000260001 +7c7280000001000000020002036e7331057669727475026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9726102c03800010001000151800004d58141c4 + +28893 +82e000000001000000000000036e7332057669727475026e6c0000010001 +82e080000001000000020002036e7332057669727475026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d9726102c00c00010001000151800004d58141c4 + +28894 +0fcc00000001000000000000036e7332057669727475026e6c0000260001 +0fcc80000001000000020002036e7332057669727475026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d9726102c00c00010001000151800004d58141c4 + +28895 +0000000070024000aeff0000020405b401010402 +000080010000000000000000 + +28896 +b63fd61a5010080087590000000000000000 + + +28897 +b63fd61a501044704ae90000000000000000 + + +28898 +a90e0000000100000000000004726e65740c77616a6f6e40706c616e6574026e6c0000010001 +a90e8403000100000001000004726e65740c77616a6f6e40706c616e6574026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +28899 +b63fd61a50184470a0020000008f603e000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afc48403c4dc80003000000324e544c4d535350000100000097b208e0050005002d0000000d000d0020000000434f4d5345525645523230303041442d4d420000 + + +28900 +ab1b00000001000000000000037777770870616e6f76696577026e6c0000010001 +ab1b80000001000000020002037777770870616e6f76696577026e6c0000010001c0100002000100015180000f026e7309656c6d6167726f6570c019c01000020001000151800006036e7331c030c02d00010001000151800004d5880085c04800010001000151800004d5ce5e22 + +28901 +b63fd628501144624a570000000000000000 + + +28902 +4d2300000001000000000000066b7562737531036b7562026e6c0000010001 +4d2380000001000000030003066b7562737531036b7562026e6c0000010001c01300020001000151800009066b7562737532c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c02b0001000100015180000489380028c00c000100010001518000048938001bc04e00010001000151800004c0576a65 + +28903 +000000007002400083b30000020405b401010402 +000080010000000000000000 + +28904 +09b90000000100000000000007626575727a656e036a656d026e6c0000010001 +09b98000000100000002000207626575727a656e036a656d026e6c0000010001c0140002000100015180000e036e73310765766964656e74c018c01400020001000151800006036e7332c030c02c00010001000151800004c36d19c4c04600010001000151800004c36d1942 + +28905 +30f300000001000000000000066b7562737532036b7562026e6c0000010001 +30f380000001000000030003066b7562737532036b7562026e6c0000010001c01300020001000151800002c00cc01300020001000151800009066b7562737531c013c0130002000100015180000e036e733107737572666e6574c017c00c0001000100015180000489380028c039000100010001518000048938001bc04e00010001000151800004c0576a65 + +28906 +b63fd629501044624a560000000000000000 + + +28907 +d1050010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +d1058000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +28908 +b6409f8850100800929e0000000000000000 + + +28909 +cd4e000000010000000000000a6970353033646463316505737065656406706c616e6574026e6c0000010001 +cd4e800000010000000300030a6970353033646463316505737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +28910 +b6409f8850104470562e0000000000000000 + + +28911 +b6409f885018447052af0000008fbad6000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afc48403c4dc80003000000324e544c4d535350000100000097b208e0050005002d0000000d000d0020000000434f4d5345525645523230303041442d4d420000 + + +28912 +0c9c00000001000000000000037777770770617468756973026e6c0000010001 +0c9c80000001000000020000037777770770617468756973026e6c0000010001c0100002000100015180000c026e730334756103636f6d00c01000020001000151800006036e7332c02f + +28913 +992c0000000100000000000007636174636f7270026e6c00000f0001 +992c8403000100000001000007636174636f7270026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +28914 +b6409f9650114462559c0000000000000000 + + +28915 +02cc0000000100000000000008726f636b6f706e68026e6c00001c0001 +02cc8000000100000002000108726f636b6f706e68026e6c00001c0001c00c000200010001518000080570726f7879c00cc00c0002000100015180000d036e7332036b706e036e657400c02900010001000151800004c1ad1f92 + +28916 +c1c7000000010000000000001153616c746f7265696e7465677261746965026e6c00000f0001 +c1c7800000010000000200001153616c746f7265696e7465677261746965026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c038 + +28917 +cc96000000010000000000000377777703637362026e6c0000010001 +cc96800000010000000200020377777703637362026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c014c01000020001000151800006036e7332c02cc0280001000100015180000450416028c04300010001000151800004c356780c + +28918 +000000007002400034540000020405b401010402 +000080010000000000000000 + +28919 +ad17000000010000000000000a76657273646972656374026e6c00000f0001 +ad17800000010000000200000a76657273646972656374026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02e + +28920 +fc3d00000001000000000000076e6f746d61696c026e6c00000f0001 +fc3d80000001000000020000076e6f746d61696c026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02c + +28921 +0c62000000010000000000000377777703796573026e6c0000010001 +0c62800000010000000300000377777703796573026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02c + +28922 +473f00000001000000000000026e73076e656473746174026e6c0000010001 +473f80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +28923 +b6409f9750104462559b0000000000000000 + + +28924 +b64185ae501008005d180000000000000000 + + +28925 +15c100000001000000000000046d61696c127769656c657273706f72746c69657273656e026e6c0000010001 +15c180000001000000020000046d61696c127769656c657273706f72746c69657273656e026e6c0000010001c01100020001000151800017036e73310d6465696e7465726e65746d616e036e657400c01100020001000151800006036e7332c03c + +28926 +f0de00100001000000000001076e696b68656668066e696b686566026e6c00000100010000290800000080000000 +f0de80000001000000040003076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c7040000291000000000000000 + +28927 +b64185ae5010447020a80000000000000000 + + +28928 +8725000000010000000000010f636f6d706172742d74726164696e67026e6c00000100010000291000000000000000 +8725800000010000000300030f636f6d706172742d74726164696e67026e6c0000010001c00c0002000100015180000d036e733106776964657873c01cc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa07030000291000000000000000 + +28929 +b64185ae5018447000890000008fd776000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afc48403c4dc80003000000324e544c4d535350000100000097b208e0050005002d0000000d000d0020000000434f4d5345525645523230303041442d4d420000 + + +28930 +af3700000001000000000000026e73076e65746c616e64026e6c0000010001 +af3780000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +28931 +6eb600000001000000000000036e7332076e65746c616e64026e6c0000010001 +6eb680000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +28932 +e44100000001000000000000036e73330d686f73746e656465726c616e64026e6c0000010001 +e44180000001000000030002036e73330d686f73746e656465726c616e64026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +28933 +836200000001000000000000037777770374776307737368756e6574026e6c0000010001 +836280000001000000030003037777770374776307737368756e6574026e6c0000010001c01400020001000151800006036e6963c014c01400020001000151800008026e73027575c01cc01400020001000151800006036e7332c045c0300001000100015180000483d310d3c0420001000100015180000483d30405c0560001000100015180000483d30406 + +28934 +b64185bc5011446220160000000000000000 + + +28935 +3b160000000100000000000003777777076c756e61746963026e6c0000010001 +3b168000000100000003000103777777076c756e61746963026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +28936 +f0a600000001000000000000037777770b6d79706172747973697465026e6c0000010001 +f0a680000001000000020000037777770b6d79706172747973697465026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01cc0100002000100015180000805646e732d32c036 + +28937 +b64185bd5010446220150000000000000000 + + +28938 +b37b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b37b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28939 +101b00000001000000000000037777771074726f7577656e2d627275696c6f6674026e6c0000010001 +101b80000001000000030003037777771074726f7577656e2d627275696c6f6674026e6c0000010001c0100002000100015180000b04646e733103766970c021c0100002000100015180000704646e7332c03ac0100002000100015180000704646e7333c03ac03500010001000151800004d44fe803c04c00010001000151800004c3f5c782c05f00010001000151800004d44ff303 + +28940 +4f1d00000001000000000000095f6b65726265726f73045f746370026463065f6d73646373065363686f6f6c026e6c0000060001 +4f1d80000001000000020001095f6b65726265726f73045f746370026463065f6d73646373065363686f6f6c026e6c0000060001c02500020001000151800015086e732d69736d30310963617067656d696e69c02cc0250002000100015180000b086e732d69736d3032c049c04000010001000151800004d5f4a024 + +28941 +b91a28000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d73646373074f424856534c53026e6c000021000100000258001b00000064018508646330316876736c074f424856534c53026e6c00 +b91aa8040000000000000000 + +28942 +9aec00000001000000000000037777770d73656e696f72656e706f726e6f026e6c0000010001 +9aec80000001000000020000037777770d73656e696f72656e706f726e6f026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c036 + +28943 +f02100000001000000000000076d61696c2d696e03626f78026e6c0000010001 +f02180000001000000020002076d61696c2d696e03626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c0140002000100015180000a07646e732d736563c014c02c00010001000151800004d97700fac04200010001000151800004d97704fa + +28944 +57ef000000010000000000000d6d61696c2d66616c6c6261636b03626f78026e6c0000010001 +57ef800000010000000200020d6d61696c2d66616c6c6261636b03626f78026e6c0000010001c01a0002000100015180000a07646e732d707269c01ac01a0002000100015180000a07646e732d736563c01ac03200010001000151800004d97700fac04800010001000151800004d97704fa + +28945 +6bb50000000100000000000007646e732d70726903626f78026e6c0000010001 +6bb58000000100000002000207646e732d70726903626f78026e6c0000010001c01400020001000151800002c00cc0140002000100015180000a07646e732d736563c014c00c00010001000151800004d97700fac03a00010001000151800004d97704fa + +28946 +f6a90000000100000000000007646e732d73656303626f78026e6c0000010001 +f6a98000000100000002000207646e732d73656303626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c01400020001000151800002c00cc02c00010001000151800004d97700fac00c00010001000151800004d97704fa + +28947 +36de00000001000000000000076d61696c2d696e03626f78026e6c0000010001 +36de80000001000000020002076d61696c2d696e03626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c0140002000100015180000a07646e732d736563c014c02c00010001000151800004d97700fac04200010001000151800004d97704fa + +28948 +5a41000000010000000000000d6d61696c2d66616c6c6261636b03626f78026e6c0000010001 +5a41800000010000000200020d6d61696c2d66616c6c6261636b03626f78026e6c0000010001c01a0002000100015180000a07646e732d707269c01ac01a0002000100015180000a07646e732d736563c01ac03200010001000151800004d97700fac04800010001000151800004d97704fa + +28949 +000000007002faf0f7cc00000204056401010402 +000080010000000000000000 + +28950 +755a00000001000000000000046d61696c0564616e6365026e6c0000010001 +755a80000001000000020000046d61696c0564616e6365026e6c0000010001c01100020001000151800011036e73310764697265637435036e657400c01100020001000151800006036e7332c02f + +28951 +2bdc000000010000000000000b667265656c6f6c69746173026e6c0000010001 +2bdc800000010000000300020b667265656c6f6c69746173026e6c0000010001c00c0002000100015180000d036e733106776964657873c018c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +28952 +b643986d5010fd5cd3130000000000000000 + + +28953 +b643986d5018fd5cc6f90000008e6466000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afda1403c4f2100030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 + + +28954 +d15400000001000000000000037777770673756d6d6974026e6c0000010001 +d15480000001000000030001037777770673756d6d6974026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +28955 +a2790000000100000000000005646830373406787334616c6c026e6c0000010001 +a2798000000100000003000205646830373406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +28956 +cbf100000001000000000000037777770a7775707065726d616e6e026e6c0000010001 +cbf180000001000000020000037777770a7775707065726d616e6e026e6c0000010001c01000020001000151800013026e730761757374726961026575036e657400c01000020001000151800006036e7332c032 + +28957 +cc980000000100000000000003777777116e61706f6c656f6e626f6e617061727465026e6c0000010001 +cc988000000100000002000203777777116e61706f6c656f6e626f6e617061727465026e6c0000010001c0100002000100015180000f036e7331086461786973776562c022c01000020001000151800006036e7332c03ac03600010001000151800004c323c083c05100010001000151800004c323c084 + +28958 +b643987b5011fd4ed2820000000000000000 + + +28959 +000000007002faf01fca00000204056401010402 +000080010000000000000000 + +28960 +b750000000010000000000000666697374697806787334616c6c026e6c0000010001 +b750800000010000000300020666697374697806787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +28961 +577700000001000000000000046e733032066368656c6c6f026e6c0000010001 +577780000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +28962 +024328000001000200000000024e4c00000600010e656c7374616c6164616d2d7372760a454c5354414c4144414d024e4c00000500fe000000000000c01400010001000000000004c0a80079 +0243a8040000000000000000 + +28963 +127f000000010000000000000665736d656469026e6c00000f0001 +127f800000010000000200020665736d656469026e6c00000f0001c00c00020001000151800014036e73310d66617374736f6c7574696f6e73c013c00c00020001000151800006036e7332c02bc0270001000100015180000450f7c2d1c0470001000100015180000450f7c2d2 + +28964 +b643987c5010fd4ed2810000000000000000 + + +28965 +b6441ee65010fd5c74970000000000000000 +b6449ee40000000000000000 + +28966 +b6441ee65018fd5ccbe40000008e0000000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afda2403c4f2200030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 +b6449ee40000000000000000 + +28967 +6f3900000001000000000000026e7308767575727765726b026e6c0000010001 +6f3980000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +28968 +0000000070024000b61d0000020405b401010402 +000080010000000000000000 + +28969 +0a4800000001000000000000037777770764616e63657273026e6c0000010001 +0a4880000001000000020001037777770764616e63657273026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c018c01000020001000151800006036e7334c030c02c00010001000151800004d5c401c0 + +28970 +b6441ef45011fd4e74060000000000000000 +b6449ef40000000000000000 + +28971 +000000007002faf08df200000204056401010402 +000080010000000000000000 + +28972 +b645129150104470158b0000000000000000 +b64592940000000000000000 + +28973 +4d9d00000001000000000000046d61696c0d67726166697363682d68756973026e6c0000010001 +4d9d80000001000000020000046d61696c0d67726166697363682d68756973026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c039 + +28974 +0959000000010000000000000377777707696b6865626a65026e6c0000010001 +0959800000010000000300020377777707696b6865626a65026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +28975 +b645129150184470ce2a000000975080000000010001000000000f313337343338393533343733382d330000f900010f313337343338393533343733382d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe6403c4d660003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 +b64592940000000000000000 + +28976 +d16d0000000100000000000003777777076e756b6f6d6978026e6c0000010001 +d16d8000000100000002000003777777076e756b6f6d6978026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +28977 +b6441ef55010fd4e74050000000000000000 +b6449ef40000000000000000 + +28978 +b645dd1c5010fd5c24880000000000000000 + + +28979 +0b4000000001000000000000036e73330767617574656e67026e6c0000010001 +0b4080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28980 +b645dd1c5018fd5c00410000008e7b94000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afda2403c4f2200030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 + + +28981 +b645129f5011446214f10000000000000000 +b64592940000000000000000 + +28982 +0000000070024000a3460000020405b401010402 +000080010000000000000000 + +28983 +b645dd2a5011fd4e23f70000000000000000 + + +28984 +4fc4000000010000000000000b686f6e64656e706c617a61026e6c0000010001 +4fc4800000010000000200000b686f6e64656e706c617a61026e6c0000010001c00c00020001000151800017036e73310d6465696e7465726e65746d616e036e657400c00c00020001000151800006036e7332c030 + +28985 +bf9800000001000000000000037777771274696a7373656e732d6f6e646572686f7564026e6c0000010001 +bf9880000001000000020000037777771274696a7373656e732d6f6e646572686f7564026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c03c + +28986 +60e0000000010000000000000874696a6468756973026e6c00000f0001 +60e0840300010000000100000874696a6468756973026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +28987 +881700000001000000000000046d61696c06636861726973026e6c0000010001 +881780000001000000020000046d61696c06636861726973026e6c0000010001c0110002000100015180000c026e7306766576696461c018c01100020001000151800006036e7332c02f + +28988 +820100000001000000000000076f6e652d6c616e026e6c00000f0001 +820180000001000000020000076f6e652d6c616e026e6c00000f0001c00c0002000100015180000c026e73066863636e6574c014c00c00020001000151800006036e7332c02b + +28989 +891f0000000100000000000003777777096761797468756d6273026e6c0000010001 +891f8000000100000002000203777777096761797468756d6273026e6c0000010001c0100002000100015180000c04646e73310470696e73c01ac0100002000100015180000704646e7332c033c02e00010001000151800004d9c26101c04600010001000151800004d9c26002 + +28990 +b645dd2b5010fd4e23f60000000000000000 + + +28991 +d2c10000000100000000000007646f6e61747573026e6c00000f0001 +d2c18000000100000002000107646f6e61747573026e6c00000f0001c00c00020001000151800015026e730c737461626c6573747265616d036e657400c00c0002000100015180000d026e730770726f78737973c014c04900010001000151800004d590e30a + +28992 +db800000000100000000000003777777056172746973026e6c0000010001 +db808000000100000002000203777777056172746973026e6c0000010001c0100002000100015180000c026e7306787334616c6cc016c01000020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +28993 +b64512a05010446214f00000000000000000 +b64592a40000000000000000 + +28994 +b646af605010447065e30000000000000000 + + +28995 +74cb00000001000000000000096f6e6465726f732d300364736c0b7669616e6574776f726b73026e6c0000010001 +74cb80000001000000020002096f6e6465726f732d300364736c0b7669616e6574776f726b73026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac03a00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +28996 +b646af60501844707b4300000097f4c0000000010001000000000f313337343338393533343733382d320000f900010f313337343338393533343733382d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe6403c4d660003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 + + +28997 +011900000001000000000000036e73310974656c656b6162656c026e6c0000010001 +011980000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +28998 +1ba400000001000000000000036e73340767617574656e67026e6c0000010001 +1ba480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +28999 +6a6e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +6a6e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29000 +b7a80000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7a88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29001 +fa3700000001000000000000076469766974656c026e6c0000ff0001 +fa3780000001000000020002076469766974656c026e6c0000ff0001c00c0002000100015180000f036e733108696e7465726d6178c014c00c00020001000151800006036e7332c02cc02800010001000151800004505fa002c04300010001000151800004505fac02 + +29002 +86cb00000001000000000000036e733007656173796e6574026e6c0000010001 +86cb80000001000000020002036e733007656173796e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c2a55e01c03a00010001000151800004c2a55e05 + +29003 +646d00000001000000000000036e733107656173796e6574026e6c0000010001 +646d80000001000000020002036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e05 + +29004 +83dd00000001000000000000037777770563616e646f026e6c0000010001 +83dd80000001000000020000037777770563616e646f026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c030 + +29005 +b646af6e5011446265490000000000000000 + + +29006 +313100000001000000000000037777770b79656c6c6f772d73746172026e6c0000010001 +313180000001000000020001037777770b79656c6c6f772d73746172026e6c0000010001c0100002000100015180000a036e733303777873c01cc01000020001000151800006036e7334c034c04600010001000151800004d5ef9a65 + +29007 +000000007002400061b00000020405b401010402 +000080010000000000000000 + +29008 +b646af6f5010446265480000000000000000 + + +29009 +b6473a8f50104470991d0000000000000000 +b647ba840000000000000000 + +29010 +b6473a8f50184470b9bd00000097e980000000010001000000000f313337343338393533343733382d320000f900010f313337343338393533343733382d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afbe6403c4d660003000000384e544c4d535350000100000097b208e00a000a002e0000000e000e0020000000454c5354414c4144414d2d535256454c5354414c4144414d0000 +b647ba840000000000000000 + +29011 +b43500000001000000000000036674700863656e747261616c08626f656b68756973026e6c0000010001 +b43580000001000000020000036674700863656e747261616c08626f656b68756973026e6c0000010001c0190002000100015180000b026e73026e6c036e657400c0190002000100015180001206617574683630026e73026e6c027575c03c + +29012 +c5cb00000001000000000000026e73076e656473746174026e6c0000010001 +c5cb80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29013 +1d7d00000001000000000000036e7333076e656473746174026e6c0000010001 +1d7d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29014 +efd000000001000000000000056d61696c310869636f6d70616e79026e6c0000010001 +efd080000001000000020002056d61696c310869636f6d70616e79026e6c0000010001c0120002000100015180000704646e7331c012c0120002000100015180000704646e7332c012c02f000100010001518000043e3a890ac042000100010001518000043e3a890b + +29015 +f6e9000000010000000000000763686970706572026e6c00000f0001 +f6e9800000010000000200000763686970706572026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +29016 +b6473a9d5011446298830000000000000000 +b647ba940000000000000000 + +29017 +54cf000000010000000000000a6b72616d6572746a6573026e6c00000f0001 +54cf800000010000000200000a6b72616d6572746a6573026e6c00000f0001c00c0002000100015180000f036e7331056d79736d74036e657400c00c00020001000151800006036e7332c02f + +29018 +8a6000000001000000000000037777770768657477656572026e6c0000010001 +8a6080000001000000020002037777770768657477656572026e6c0000010001c0100002000100015180000d04696973310577696e646fc018c01000020001000151800008056969733137c031c02c00010001000151800004d9aa050bc04500010001000151800004d9aa0430 + +29019 +9b3f00000001000000000000037777770a696e7465726b61617274026e6c0000010001 +9b3f80000001000000030002037777770a696e7465726b61617274026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +29020 +1af70000000100000000000005696431333104776b6170026e6c0000010001 +1af78000000100000002000205696431333104776b6170026e6c0000010001c01200020001000151800002c00cc0120002000100015180000e036e733107737572666e6574c017c00c00010001000151800004c0579eeac03900010001000151800004c0576a65 + +29021 +8725000000010000000000000f636f6d706172742d74726164696e67026e6c0000010001 +8725800000010000000300020f636f6d706172742d74726164696e67026e6c0000010001c00c0002000100015180000d036e733106776964657873c01cc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +29022 +b6473a9e5010446298820000000000000000 +b647ba940000000000000000 + +29023 +232628000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d73646373063233435a3030026e6c0000210001000002580016000000640058046e747331063233435a3030026e6c00 +2326a8040000000000000000 + +29024 +02d4000000010000000000000f62726162616e7473646167626c6164026e6c0000020001 +02d4800000010000000200020f62726162616e7473646167626c6164026e6c0000020001c00c0002000100015180000e036e7331076e657463617374c01cc00c00020001000151800006036e7332c034c03000010001000151800004c2970101c04a00010001000151800004c297012d + +29025 +ac15001000010000000000010469632d73026e6c00000100010000290800000000000000 +ac15800000010000000200010469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +29026 +3e720000000100000000000007766462636f6d70026e6c00001c0001 +3e728000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +29027 +bae300000001000000000000066b6c75776572026e6c00000f0001 +bae380000001000000020000066b6c75776572026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02b + +29028 +59c30000000100000000000007616c6c696e6974026e6c00000f0001 +59c38000000100000002000207616c6c696e6974026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +29029 +0000000070024000e0620000020405b401010402 +000080010000000000000000 + +29030 +77ed00000001000000000000046e7331610b6d6565737465726c696a6b026e6c0000010001 +77ed80000001000000030003046e7331610b6d6565737465726c696a6b026e6c0000010001c01100020001000151800007046e733361c011c01100020001000151800007046e733362c011c01100020001000151800007046e733261c011c03100010001000151800004d973ca82c04400010001000151800004d973ca83c05700010001000151800004d973caa5 + +29031 +25b2000000010000000000000a67616d6573657276657206636f6e6e6f72026e6c0000010001 +25b2800000010000000200000a67616d6573657276657206636f6e6e6f72026e6c0000010001c0170002000100015180000b026e73026e6c036e657400c0170002000100015180001206617574683630026e73026e6c027575c038 + +29032 +e4a8000000010000000000000776657273696f6e0462696e640000100003 +e4a8800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +29033 +131900000001000000000000036e7331056132303030026e6c0000010001 +131980000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +29034 +35c300000001000000000000036e7332056132303030026e6c0000010001 +35c380000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +29035 +3a280000000100000000000008686f73746e616d650462696e640000100003 +3a288000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +29036 +b5540000000100000000000004686f6d650b736f6e657261706c617a61026e6c0000010001 +b5548000000100000002000004686f6d650b736f6e657261706c617a61026e6c0000010001c01100020001000151800011036e73310774647364617461036e657400c01100020001000151800006036e7332c035 + +29037 +b5c200000001000000000000036e7332076e65746c616e64026e6c0000010001 +b5c280000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +29038 +630100000001000000000000026e73076e65746c616e64026e6c0000010001 +630180000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +29039 +0864000000010000000000000469632d73026e6c0000010001 +0864800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +29040 +cc2500000001000000000000036d78310672656a656374026e6c0000010001 +cc2580000001000000020001036d78310672656a656374026e6c0000010001c01000020001000151800011036e733107706c656b6b6965036e657400c0100002000100015180000e036e7331076e6572646e6574c017c04800010001000151800004d9aa0f01 + +29041 +529600000001000000000000036d78320672656a656374026e6c0000010001 +529680000001000000020001036d78320672656a656374026e6c0000010001c01000020001000151800011036e733107706c656b6b6965036e657400c0100002000100015180000e036e7331076e6572646e6574c017c04800010001000151800004d9aa0f01 + +29042 +cb3500000001000000000000036d78320672656a656374026e6c00001c0001 +cb3580000001000000020001036d78320672656a656374026e6c00001c0001c01000020001000151800011036e733107706c656b6b6965036e657400c0100002000100015180000e036e7331076e6572646e6574c017c04800010001000151800004d9aa0f01 + +29043 +8b7c00000001000000000000036d78310672656a656374026e6c0000260001 +8b7c80000001000000020001036d78310672656a656374026e6c0000260001c01000020001000151800011036e733107706c656b6b6965036e657400c0100002000100015180000e036e7331076e6572646e6574c017c04800010001000151800004d9aa0f01 + +29044 +b6498c2050104470c63c0000000000000000 + + +29045 +452700000001000000000000077465616d303037026e6c0000010001 +452780000001000000020001077465616d303037026e6c0000010001c00c0002000100015180000a036e733303777873c014c00c00020001000151800006036e7334c02cc03e00010001000151800004d5ef9a65 + +29046 +805000000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +805080000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +29047 +b6498c2050184470e776000000893428000000010001000000000f313230323539303834323839382d330000f900010f313230323539303834323839382d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefc403c507c00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 + + +29048 +d7a7000000010000000000000377777706776964657873026e6c0000010001 +d7a7800000010000000300020377777706776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c02b00010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +29049 +0591000000010000000000000363636e026e6c00000f0001 +0591800000010000000200020363636e026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +29050 +1f600000000100000000000009776565726b616d6572026e6c0000010001 +1f608000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +29051 +a84300000001000000000001036e733103757063026e6c00001c00010000291000000000000000 +a84380000001000000030004036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +29052 +c74600000001000000000001036e733103757063026e6c00002600010000291000000000000000 +c74680000001000000030004036e733103757063026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +29053 +4e7500000001000000000001046e733032066368656c6c6f026e6c00001c00010000291000000000000000 +4e7580000001000000030004046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +29054 +778a000000010000000000000661746c616e74026e6c0000010001 +778a800000010000000200000661746c616e74026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c032 + +29055 +b6498c2e50114462c5b00000000000000000 + + +29056 +500c00000001000000000000026e730763697374726f6e026e6c0000010001 +500c80000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +29057 +280600000001000000000000036e73320763697374726f6e026e6c0000010001 +280680000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +29058 +0000000070024000ad0d0000020405b401010402 +000080010000000000000000 + +29059 +a8300000000100000000000005646973636b026e6c00000f0001 +a8308000000100000002000005646973636b026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c012c00c0002000100015180000704686e7331c02b + +29060 +9389000000010000000000000377777713666f6e74616e616e6965757765736368616e73026e6c0000010001 +9389800000010000000200000377777713666f6e74616e616e6965757765736368616e73026e6c0000010001c01000020001000151800018036e73310e6974636f6e737472756374696f6e03636f6d00c01000020001000151800006036e7332c03c + +29061 +550900000001000000000000037777770f657373656e74687569737374696a6c026e6c0000010001 +550980000001000000020002037777770f657373656e74687569737374696a6c026e6c0000010001c0100002000100015180000d036e73310663617374656cc020c01000020001000151800006036e7332c038c03400010001000151800004c3558244c04d00010001000151800004c3558245 + +29062 +b6498c2f50104462c5af0000000000000000 + + +29063 +b64a5b3a50104470c3cc0000000000000000 +b64adb340000000000000000 + +29064 +3f2500000001000000000000037777770a67616d65737175617265026e6c0000010001 +3f2580000001000000020002037777770a67616d65737175617265026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +29065 +48b000000001000000000000036e7332046a617a65026e6c0000010001 +48b080000001000000020000036e7332046a617a65026e6c0000010001c0100002000100015180000e036e7331046a617a65036e657400c01000020001000151800006036e7332c02d + +29066 +df22000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +df22800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +29067 +b64a5b3a50184470cb9f000000894e90000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefc403c507c00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 +b64adb340000000000000000 + +29068 +cbd600000001000000000000137061636b657473746f726d7365637572697479026e6c0000010001 +cbd680000001000000030002137061636b657473746f726d7365637572697479026e6c0000010001c00c0002000100015180000d036e733106776964657873c020c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +29069 +802800000001000000000000037777770b6b617474656e7072616174026e6c0000010001 +802880000001000000030000037777770b6b617474656e7072616174026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c038c0100002000100015180000a076e73686f737433c038 + +29070 +8f930000000100000000000004686f6d6503777873026e6c0000010001 +8f938000000100000003000304686f6d6503777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +29071 +b5fc00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +b5fc80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29072 +422c00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +422c80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29073 +79030000000100000000000004736d74700362636d026e6c0000010001 +79038000000100000002000204736d74700362636d026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c015c01100020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +29074 +a84300000001000000000000036e733103757063026e6c00001c0001 +a84380000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +29075 +26ba00000001000000000000046d61696c066368656c6c6f026e6c0000010001 +26ba80000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29076 +a08d00000001000000000000046d61696c066368656c6c6f026e6c00001c0001 +a08d80000001000000030003046d61696c066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29077 +a18400000001000000000000046d61696c066368656c6c6f026e6c0000260001 +a18480000001000000030003046d61696c066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29078 +7e4f00000001000000000000036e733103757063026e6c00001c0001 +7e4f80000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +29079 +c74600000001000000000000036e733103757063026e6c0000260001 +c74680000001000000030003036e733103757063026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +29080 +4e7500000001000000000000046e733032066368656c6c6f026e6c00001c0001 +4e7580000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +29081 +851f00000001000000000000046d61696c066368656c6c6f026e6c0000010001 +851f80000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29082 +b64a5b4850114462c3400000000000000000 +b64adb440000000000000000 + +29083 +eb780000000100000000000007666670726f303103616b6e026e6c0000010001 +eb788000000100000002000207666670726f303103616b6e026e6c0000010001c01400020001000151800010066d696e6e6965066f6d726f6570c018c0140002000100015180000805726f62696ec033c02c00010001000151800004913a1e04c04800010001000151800004913a1a34 + +29084 +000000007002400026120000020405b401010402 +000080010000000000000000 + +29085 +1870000000010000000000000f686c2d61737375726164657572656e026e6c00000f0001 +1870800000010000000200000f686c2d61737375726164657572656e026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c033 + +29086 +03bb00000001000000000000036e73330767617574656e67026e6c0000010001 +03bb80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29087 +20d200000001000000000000046d61696c0d6d616b656c6161727a77617274026e6c0000010001 +20d280000001000000020000046d61696c0d6d616b656c6161727a77617274026e6c0000010001c0110002000100015180000e05646e732d31056c61646f74c01fc0110002000100015180000805646e732d32c039 + +29088 +13400000000100000000000005646e732d31056c61646f74026e6c0000010001 +13408000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29089 +3d6b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +3d6b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29090 +b64a5b4950104462c33f0000000000000000 +b64adb440000000000000000 + +29091 +150e00000001000000000000036e733110636173652d656c656b74726f6e696373026e6c00001c0001 +150e80000001000000020002036e733110636173652d656c656b74726f6e696373026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cceb4fc04300010001000151800004d4cceb50 + +29092 +dea600000001000000000000036e733110636173652d656c656b74726f6e696373026e6c0000260001 +dea680000001000000020002036e733110636173652d656c656b74726f6e696373026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cceb4fc04300010001000151800004d4cceb50 + +29093 +421200000001000000000000036e733210636173652d656c656b74726f6e696373026e6c00001c0001 +421280000001000000020002036e733210636173652d656c656b74726f6e696373026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03500010001000151800004d4cceb4fc00c00010001000151800004d4cceb50 + +29094 +b64b06c050104470914a0000000000000000 +b64b80010000000000000000 + +29095 +8b4500000001000000000000046d61696c10626f657376656c642d76616e616c7374026e6c0000010001 +8b4580000001000000020000046d61696c10626f657376656c642d76616e616c7374026e6c0000010001c01100020001000151800011026e730b642d6372656174696f6e73c022c01100020001000151800006036e7332c039 + +29096 +b64b06c050184470367d00000089b130000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefc403c507c00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 +b64b80010000000000000000 + +29097 +7e5700000001000000000000046d61696c0965696e64686f76656e026e6c0000010001 +7e5780000001000000020002046d61696c0965696e64686f76656e026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c01bc01100020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +29098 +60cf00000001000000000000037777770968756d6f7263617368026e6c0000010001 +60cf80000001000000030003037777770968756d6f7263617368026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +29099 +add70000000100000000000005737461747306776562636174026e6c0000010001 +add78000000100000003000205737461747306776562636174026e6c0000010001c0120002000100015180000d036e733106776964657873c019c01200020001000151800010036e733206776964657873036e657400c01200020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +29100 +f74b000000010000000000000377777709656e7465727465656e026e6c0000010001 +f74b800000010000000300020377777709656e7465727465656e026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ac01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c032c02e000100010001518000045054e055c06700010001000151800004d4ccc655 + +29101 +b64b06ce5011446290be0000000000000000 +b64b80010000000000000000 + +29102 +7e5c00000001000000000000026e73076e656473746174026e6c0000010001 +7e5c80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29103 +b2c7000000010000000000000631326d6f7665026e6c0000010001 +b2c7800000010000000300020631326d6f7665026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +29104 +09d6000000010000000000000276330a646d64656c6976657279026e6c0000010001 +09d6800000010000000200000276330a646d64656c6976657279026e6c0000010001c00f00020001000151800010036e73310673697465347503636f6d00c00f00020001000151800006036e7332c032 + +29105 +17ee00000001000000000000037777770c636f322d6465746563746f72026e6c0000010001 +17ee80000001000000030003037777770c636f322d6465746563746f72026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01dc0100002000100015180000e0b6e616d6573657276657232c03dc0100002000100015180000e0b6e616d6573657276657233c03dc0310001000100015180000451ad2020c0550001000100015180000451ad2021c06f0001000100015180000452c049aa + +29106 +b64b06cf5010446290bd0000000000000000 +b64b80010000000000000000 + +29107 +ccbb000000010000000000000876616e6b75696a6b026e6c0000010001 +ccbb800000010000000200020876616e6b75696a6b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +29108 +d30700000001000000000000036e73310d6d74622d736f6c7574696f6e73026e6c0000010001 +d30780000001000000020002036e73310d6d74622d736f6c7574696f6e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852719c04000010001000151800004d5852714 + +29109 +21f500000001000000000000036e73320d6d74622d736f6c7574696f6e73026e6c0000010001 +21f580000001000000020002036e73320d6d74622d736f6c7574696f6e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d5852719c00c00010001000151800004d5852714 + +29110 +731400000001000000000000086573636170616465026e6c00000f0001 +731480000001000000030002086573636170616465026e6c00000f0001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +29111 +f77c00000001000000000000036e733104686f6d65026e6c0000010001 +f77c80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +29112 +eaaf00100001000000000001036e7331056132303030026e6c00000100010000290800000080000000 +eaaf80000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +29113 +5bbb00100001000000000001036e7331056132303030026e6c00002600010000290800000080000000 +5bbb80000001000000030003036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +29114 +819a00000001000000000000056d61676978026e6c0000010001 +819a80000001000000030001056d61676978026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +29115 +667700100001000000000001036e7332056132303030026e6c00000100010000290800000080000000 +667780000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +29116 +4b1c00100001000000000001036e7332056132303030026e6c00002600010000290800000080000000 +4b1c80000001000000030003036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +29117 +0bcd00000001000000000000036e73330767617574656e67026e6c0000010001 +0bcd80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29118 +f9d7000000010000000000000d6762626175746f6d6174696f6e026e6c00000f0001 +f9d7800000010000000300010d6762626175746f6d6174696f6e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01ac00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +29119 +6320000000010000000000000469632d73026e6c0000ff0001 +6320800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +29120 +5834000000010000000000000563696e64790c616374697665646f6d61696e026e6c0000010001 +5834800000010000000300000563696e64790c616374697665646f6d61696e026e6c0000010001c01200020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01200020001000151800006036e7332c037c01200020001000151800006036e7333c037 + +29121 +583500000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +583580000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +29122 +b02900000001000000000000037777770773756273697465026e6c0000010001 +b02980000001000000020002037777770773756273697465026e6c0000010001c01000020001000151800009036e7331026973c018c01000020001000151800006036e7332c030c02c00010001000151800004d5852102c04100010001000151800004d5c41503 + +29123 +b067000000010000000000000575736572730872616b65746e6574026e6c0000010001 +b067800000010000000200020575736572730872616b65746e6574026e6c0000010001c0120002000100015180001103646e730a636f6e63657074736661c01bc0120002000100015180001004646e733208636f6e6365707473c01bc02f00010001000151800004d5c51c03c04c00010001000151800004d5c51e1c + +29124 +232b28000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573063233435a3030026e6c0000210001000002580016000000640185046e747331063233435a3030026e6c00 +232ba8040000000000000000 + +29125 +c1b700100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +c1b780000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +29126 +eeba00100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +eeba80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +29127 +583f000000010000000000000563696e64790c616374697665646f6d61696e026e6c0000010001 +583f800000010000000300000563696e64790c616374697665646f6d61696e026e6c0000010001c01200020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01200020001000151800006036e7332c037c01200020001000151800006036e7333c037 + +29128 +14c500000001000000000000036e7331076e6564636f6d70026e6c0000010001 +14c580000001000000020001036e7331076e6564636f6d70026e6c0000010001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +29129 +584000000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +584080000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +29130 +186e0000000100000000000006736d7470303603777873026e6c00000f000100 +186e8000000100000003000306736d7470303603777873026e6c00000f0001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +29131 +da8400000001000000000000037777770a656c746a6f68616e6e61026e6c0000010001 +da8480000001000000020000037777770a656c746a6f68616e6e61026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +29132 +c79028000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d7363686f636b5f726962656d61026e6c000021000100000258002200000064005809726962656d612d6e6c0d7363686f636b5f726962656d61026e6c00 +c790a8040000000000000000 + +29133 +1d200000000100000000000006636861726973026e6c00000f0001 +1d208000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29134 +6d8300000001000000000000036e7331056132303030026e6c0000010001 +6d8380000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +29135 +91b300000001000000000000036e7331056132303030026e6c0000260001 +91b380000001000000030002036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +29136 +0f5000000001000000000000036e7332056132303030026e6c0000010001 +0f5080000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +29137 +43f100000001000000000000036e7332056132303030026e6c0000260001 +43f180000001000000030002036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +29138 +3e9b0000000100000000000002743107712d7374617473026e6c0000010001 +3e9b8000000100000002000202743107712d7374617473026e6c0000010001c00f0002000100015180000a036e7331036e7873c017c00f00020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +29139 +000000007002400028290000020405b401010402 +000080010000000000000000 + +29140 +93bd000000010000000000000656525a3537370742432d4856433403424334026e6c0000060001 +93bd800000010000000200020656525a3537370742432d4856433403424334026e6c0000060001c01b0002000100015180001a036e733113736d616c6c686f6c642d686f7374696e672d34c01fc01b00020001000151800006036e7332c037c033000100010001518000045054ed82c059000100010001518000045054ed83 + +29141 +42fb000000010000000000000a7265736572766572656e06627564676574026e6c0000010001 +42fb800000010000000200020a7265736572766572656e06627564676574026e6c0000010001c017000200010001518000140d7372726463303134646d7a303403726463c01ec017000200010001518000100d7372726463303132646d7a3033c040c03200010001000151800004d973e064c05200010001000151800004d973e054 + +29142 +0ef8000000010000000000000377777707736d6172746563026e6c0000010001 +0ef8800000010000000300030377777707736d6172746563026e6c0000010001c01000020001000151800010036e733109736974656279746573c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c2a55e5ac04800010001000151800004c356781cc05a000100010001518000043ec58016 + +29143 +0000000070024000d1f10000020405b401010402 +000080010000000000000000 + +29144 +06f5000000010000000000000d5352524443303132444d5a303303726463026e6c00001c0001 +06f5800000010000000200020d5352524443303132444d5a303303726463026e6c00001c0001c01a000200010001518000100d7372726463303134646d7a3034c01ac01a00020001000151800002c00cc03200010001000151800004d973e064c00c00010001000151800004d973e054 + +29145 +e477000000010000000000000d5352524443303134444d5a303403726463026e6c00001c0001 +e477800000010000000200020d5352524443303134444d5a303403726463026e6c00001c0001c01a00020001000151800002c00cc01a000200010001518000100d7372726463303132646d7a3033c01ac00c00010001000151800004d973e064c04000010001000151800004d973e054 + +29146 +57370000000100000000000003777777066d6f7070656e026e6c0000010001 +57378000000100000002000203777777066d6f7070656e026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +29147 +13fa00000001000000000000036e733113736d616c6c686f6c642d686f7374696e672d34026e6c0000010001 +13fa80000001000000020002036e733113736d616c6c686f6c642d686f7374696e672d34026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054ed82c046000100010001518000045054ed83 + +29148 +a6b50000000100000000000005726f6d656f066f6e6c696e65026f32026e6c0000010001 +a6b58000000100000002000205726f6d656f066f6e6c696e65026f32026e6c0000010001c0190002000100015180000d026e73076e65746c616e64c01cc01900020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +29149 +b64dd61350104470c40b0000000000000000 + + +29150 +1ad400000001000000000000037777770a7765726b74756967656e026e6c0000010001 +1ad480000001000000020002037777770a7765726b74756967656e026e6c0000010001c0100002000100015180000a036e733103686978c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5a0da0ac0450001000100015180000451112ec3 + +29151 +30d2000000010000000000000772696a6163636f026e6c00000f0001 +30d2800000010000000200000772696a6163636f026e6c00000f0001c00c00020001000151800019036e73310f6c696e6b67696473686f7374696e67036e657400c00c00020001000151800006036e7332c02c + +29152 +b64ea29c50104470a14a0000000000000000 + + +29153 +b64ea29c501844707cb60000009574fc000000010001000000000f313235343133303435303435302d330000f900010f313235343133303435303435302d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 + + +29154 +b64dd61350184470dab1000000893cbc000000010001000000000f313230323539303834323839382d330000f900010f313230323539303834323839382d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefd403c507d00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 + + +29155 +705000000001000000000000037777770b647574636867686f737473026e6c0000010001 +705080000001000000020002037777770b647574636867686f737473026e6c0000010001c0100002000100015180000a036e7331036e7873c01cc01000020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +29156 +c09e0000000100000000000004656469740867616d65732d6f6e026e6c0000010001 +c09e8000000100000002000204656469740867616d65732d6f6e026e6c0000010001c0110002000100015180000a036e7331036e7873c01ac01100020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +29157 +b64ea2aa50114462a0b20000000000000000 + + +29158 +3f5a00000001000000000000026e7306766576696461026e6c0000010001 +3f5a80000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +29159 +00000000700240008bd00000020405b401010402 +000080010000000000000000 + +29160 +b64dd62150114462c37f0000000000000000 + + +29161 +f86f00000001000000000000076e696b68656668066e696b686566026e6c0000010001 +f86f80000001000000040002076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c704 + +29162 +294200000001000000000000037777771274656c65636f6d76657267656c696a6b6572026e6c0000010001 +294280000001000000020002037777771274656c65636f6d76657267656c696a6b6572026e6c0000010001c0100002000100015180000a036e7331036e7873c023c01000020001000151800006036e7332c03bc03700010001000151800004d973c015c04d00010001000151800004d973c102 + +29163 +0000000070024000031c0000020405b401010402 +000080010000000000000000 + +29164 +605200000001000000000000026e730b6973642d686f6c6c616e64026e6c0000010001 +605280000001000000020002026e730b6973642d686f6c6c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +29165 +0f5900000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +0f5980000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +29166 +cc2d0000000100000000000006787334616c6c026e6c0000010001 +cc2d8000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +29167 +b64ea2ab50104462a0b10000000000000000 + + +29168 +b64f4bce50104470b1f60000000000000000 +b64fcbc40000000000000000 + +29169 +b64f4bce50184470dc7f0000009526e0000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 +b64fcbc40000000000000000 + +29170 +8d3f001000010000000000010c47454c4445524d414c53454e0867656d65656e74650c67656c6465726d616c73656e026e6c00000100010000290800000080000000 +8d3f800000010000000200030c47454c4445524d414c53454e0867656d65656e74650c67656c6465726d616c73656e026e6c0000010001c02200020001000151800005026e73c022c02200020001000151800006036e7332c022c04300010001000151800004c143b9b5c05400010001000151800004c143b9b60000291000000000000000 + +29171 +5e6100000001000000000000037777770a7a65726562696c6c656e026e6c0000010001 +5e6180000001000000020000037777770a7a65726562696c6c656e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +29172 +f5250000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +f5258000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29173 +b64dd62250104462c37e0000000000000000 + + +29174 +040b00000001000000000000116672616e6b656e656e76616e7765657274026e6c00000f000100 +040b84030001000000010000116672616e6b656e656e76616e7765657274026e6c00000f0001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +29175 +b64fffa85010447075670000000000000000 + + +29176 +50bd00000001000000000000026e73076e656473746174026e6c0000010001 +50bd80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29177 +4d5400000001000000000000036e7332076e656473746174026e6c0000010001 +4d5480000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29178 +5d4f00000001000000000000036e7333076e656473746174026e6c0000010001 +5d4f80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29179 +84ec00000001000000000000036e7334076e656473746174026e6c0000010001 +84ec80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29180 +5d5e00000001000000000000037777770b7477656576616e64616167026e6c0000010001 +5d5e80000001000000020002037777770b7477656576616e64616167026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c01cc0100002000100015180000805726f62696ec037c03000010001000151800004913a1e04c04c00010001000151800004913a1a34 + +29181 +c23800000001000000000000036e733206736f6c636f6e026e6c0000010001 +c23880000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +29182 +0d5900000001000000000000036e733106736f6c636f6e026e6c0000010001 +0d5980000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +29183 +611c0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +611c8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +29184 +b64f4bdc50114462b15e0000000000000000 +b64fcbd40000000000000000 + +29185 +50ac0000000100000000000003706f7006706c616e6574026e6c0000010001 +50ac8000000100000003000303706f7006706c616e6574026e6c0000010001c0100002000100015180000b046e73303803777873c017c01000020001000151800007046e733039c030c01000020001000151800006036e7334c030c02b00010001000151800004c3790128c04200010001000151800004c3790143c05500010001000151800004d5ef9a65 + +29186 +000000007002400091e30000020405b401010402 +000080010000000000000000 + +29187 +7d4100000001000000000000046d61696c09746f7461616c666974026e6c0000010001 +7d4180000001000000020000046d61696c09746f7461616c666974026e6c0000010001c01100020001000151800013036e7331076c697665646e7302636f02756b00c01100020001000151800006036e7332c033 + +29188 +f88000000001000000000000046d61696c0864756262656c2d6d026e6c0000010001 +f88080000001000000020002046d61696c0864756262656c2d6d026e6c0000010001c0110002000100015180000c036e7331053266617374c01ac01100020001000151800006036e7332c032c02e0001000100015180000450f7c022c046000100010001518000043e858122 + +29189 +389d00000001000000000000037777770b636f6d70752d7472616465026e6c0000010001 +389d80000001000000020002037777770b636f6d70752d7472616465026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +29190 +46b40000000100000000000003777777086c65747373746174026e6c0000010001 +46b48000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +29191 +23c500000001000000000000046b61626b026e6c00000f0001 +23c580000001000000020000046b61626b026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +29192 +d05700000001000000000000037777770b686f75726f66706f776572026e6c0000010001 +d05780000001000000020002037777770b686f75726f66706f776572026e6c0000010001c0100002000100015180000e036e73310768656262697a7ac01cc01000020001000151800006036e7332c034c03000010001000151800004c372eb42c04a000100010001518000043e320e91 + +29193 +b64fffa8501844702a6e000000899f5c000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefd403c507d00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 + + +29194 +6e6b00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +6e6b80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29195 +b64f4bdd50104462b15d0000000000000000 +b64fcbd40000000000000000 + +29196 +58aa0000000100000000000009746f646f6d756e646f026e6c00001c0001 +58aa8000000100000003000009746f646f6d756e646f026e6c00001c0001c00c0002000100015180000f036e73310570616e7361036e657400c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02e + +29197 +b6509596501044706e400000000000000000 + + +29198 +b65095965018447032c5000000958ce4000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 + + +29199 +2c2800000001000000000000097261696e7374617272026e6c00000f0001 +2c2880000001000000030000097261696e7374617272026e6c00000f0001c00c00020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02e + +29200 +8a2200000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +8a2280000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +29201 +1a1200000001000000000000037777770c706965742d7a6f6f6d657273026e6c0000010001 +1a1280000001000000030001037777770c706965742d7a6f6f6d657273026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +29202 +cc52000000010000000000000866616c6c6261636b046b61626b026e6c0000010001 +cc52800000010000000200000866616c6c6261636b046b61626b026e6c0000010001c0150002000100015180000b026e73026e6c036e657400c0150002000100015180001206617574683630026e73026e6c027575c034 + +29203 +b64fffb65011446274db0000000000000000 + + +29204 +159e000000010000000000000577326b6333066e7434616c6c026e6c0000010001 +159e800000010000000200020577326b6333066e7434616c6c026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e733206787334616c6cc019c02d00010001000151800004c26d3402c03e00010001000151800004c26d0963 + +29205 +0000000070024000c1350000020405b401010402 +000080010000000000000000 + +29206 +b65095a4501144626da80000000000000000 + + +29207 +80d1000000010000000000000377777711776573746572776f6c64656e6965757773026e6c0000010001 +80d1800000010000000200000377777711776573746572776f6c64656e6965757773026e6c0000010001c01000020001000151800012036e73310b696e7465722d63616e616cc022c01000020001000151800006036e7332c03a + +29208 +e06b00000001000000000000036e73310b696e7465722d63616e616c026e6c0000010001 +e06b80000001000000030002036e73310b696e7465722d63616e616c026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +29209 +c79328000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d7363686f636b5f726962656d61026e6c000021000100000258002200000064018509726962656d612d6e6c0d7363686f636b5f726962656d61026e6c00 +c793a8040000000000000000 + +29210 +982d0000000100000000000003444f4f024e4c00000f0001 +982d8000000100000003000303444f4f024e4c00000f0001c00c000200010001518000160967616e796d6564657309726f7474657264616dc010c00c00020001000151800007046c656461c02ec00c00020001000151800014036e733203676e7309676574726f6e696373c010c02400010001000151800004d5c9cf50c04600010001000151800004d5c9cf19c05900010001000151800004910d2a05 + +29211 +2df3000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +2df3800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +29212 +c3b2000000010000000000000672656c6179310b7669616e6574776f726b73026e6c00001c0001 +c3b2800000010000000200020672656c6179310b7669616e6574776f726b73026e6c00001c0001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +29213 +abd5000000010000000000000672656c6179320b7669616e6574776f726b73026e6c0000010001 +abd5800000010000000200020672656c6179320b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +29214 +172f000000010000000000000672656c6179320b7669616e6574776f726b73026e6c00001c0001 +172f800000010000000200020672656c6179320b7669616e6574776f726b73026e6c00001c0001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +29215 +00e70000000100000000000005717565756503696165026e6c0000010001 +00e78000000100000002000205717565756503696165026e6c0000010001c01200020001000151800012036e73310b7669616e6574776f726b73c016c01200020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +29216 +6d780000000100000000000005717565756503696165026e6c00001c0001 +6d788000000100000002000205717565756503696165026e6c00001c0001c01200020001000151800012036e73310b7669616e6574776f726b73c016c01200020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +29217 +973900000001000000000000036e73310b7669616e6574776f726b73026e6c00001c0001 +973980000001000000020002036e73310b7669616e6574776f726b73026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +29218 +8d6200000001000000000000036e73320b7669616e6574776f726b73026e6c00001c0001 +8d6280000001000000020002036e73320b7669616e6574776f726b73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +29219 +c4c80000000100000000000005717565756503696165026e6c0000010001 +c4c88000000100000002000205717565756503696165026e6c0000010001c01200020001000151800012036e73310b7669616e6574776f726b73c016c01200020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +29220 +b65095a5501044626da70000000000000000 + + +29221 +13d000000001000000000000036e73340767617574656e67026e6c0000010001 +13d080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29222 +ccd100000001000000000000036e733103697870026e6c0000260001 +ccd180000001000000020002036e733103697870026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f + +29223 +b64fffb75010446274da0000000000000000 + + +29224 +086b000000010000000000000664757061636f026e6c00001c0001 +086b800000010000000200010664757061636f026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004d586fa2b + +29225 +b651696f50104470c9b80000000000000000 +b651e9640000000000000000 + +29226 +66b500000001000000000000096d6f6e74666f6f7274026e6c00001c0001 +66b580000001000000020002096d6f6e74666f6f7274026e6c00001c0001c00c0002000100015180000e026e73086d656761706c6578c016c00c00020001000151800006036e7331c02dc02a00010001000151800004504f6101c04400010001000151800004504f6102 + +29227 +00000000700240006ba70000020405b401010402 +000080010000000000000000 + +29228 +0f7d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +0f7d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29229 +aa240000000100000000000005646e732d32056c61646f74026e6c0000010001 +aa248000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29230 +b651696f501844701c200000008901fc000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afefd403c507d00030000002a4e544c4d535350000100000097b208e0060006002400000004000400200000004e5453313233435a30300000 +b651e9640000000000000000 + +29231 +383000000001000000000000026e730c696e746572636f6e6e656374026e6c0000010001 +383080000001000000030003026e730c696e746572636f6e6e656374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +29232 +75c300000001000000000000036e73320c696e746572636f6e6e656374026e6c0000010001 +75c380000001000000030003036e73320c696e746572636f6e6e656374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03100010001000151800004d453c005c00c00010001000151800004d453c006c05000010001000151800004d453c805 + +29233 +b652266c50104470b72c0000000000000000 +b652a6630000000000000000 + +29234 +a865000000010000000000000575776e6574026e6c0000010001 +a865800000010000000200020575776e6574026e6c0000010001c00c00020001000151800011026e730b6973642d686f6c6c616e64c012c00c00020001000151800006036e7332c029c02600010001000151800004d5e38d0ac04300010001000151800004d5e38205 + +29235 +5c4800000001000000000000034e5332084845584f4e2d4953024e4c0000010001 +5c4880000001000000020002034e5332084845584f4e2d4953024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d58527cbc00c00010001000151800004d4ccdb5b + +29236 +5c4900000001000000000000034e5331084845584f4e2d4953024e4c0000010001 +5c4980000001000000020002034e5331084845584f4e2d4953024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d58527cbc03b00010001000151800004d4ccdb5b + +29237 +ab9400000001000000000000026e73076e656473746174026e6c0000010001 +ab9480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29238 +55ca00000001000000000000036e7333076e656473746174026e6c0000010001 +55ca80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29239 +b652266c50184470065900000095013c000000010001000000000f313235343133303435303435302d330000f900010f313235343133303435303435302d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 +b652a6630000000000000000 + +29240 +608f000000010000000000000377777709687964726f6e2d6d6e026e6c0000010001 +608f800000010000000200020377777709687964726f6e2d6d6e026e6c0000010001c0100002000100015180000c036e73310563736e6574c01ac01000020001000151800006036e7332c032c02e00010001000151800004c2451012c04600010001000151800004c2451212 + +29241 +1223000000010000000000000762616e6e65727303696d73026e6c0000010001 +1223800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +29242 +4e820000000100000000000005646e732d31056c61646f74026e6c0000010001 +4e828000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29243 +172f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +172f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29244 +d85800000001000000000000036e733103727567026e6c0000010001 +d85880000001000000030003036e733103727567026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a65 + +29245 +6ccb00000001000000000000036e733203727567026e6c0000010001 +6ccb80000001000000030003036e733203727567026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a65 + +29246 +ed3e00000001000000000000036e733403777873026e6c00001c0001 +ed3e80000001000000030003036e733403777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +29247 +f69f00000001000000000000036e733403777873026e6c0000260001 +f69f80000001000000030003036e733403777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +29248 +030800000001000000000000046e73303803777873026e6c00001c0001 +030880000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +29249 +818400000001000000000000046e73303803777873026e6c0000260001 +818480000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +29250 +b651697d50114462c92c0000000000000000 +b651e9740000000000000000 + +29251 +b652267a50114462b6940000000000000000 +b652a6730000000000000000 + +29252 +8eb30000000100000000000003777777126772617469736e65756b706c6161746a6573026e6c0000010001 +8eb38000000100000002000003777777126772617469736e65756b706c6161746a6573026e6c0000010001c01000020001000151800012036e7335087a6f6e656564697403636f6d00c01000020001000151800007046e733134c03b + +29253 +c0c200000001000000000000046e73303903777873026e6c00001c0001 +c0c280000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +29254 +307400000001000000000000046e73303903777873026e6c0000260001 +307480000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +29255 +4c3800000001000000000000036e733303777873026e6c0000010001 +4c3880000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29256 +261c00000001000000000000036e733303777873026e6c00001c0001 +261c80000001000000030003036e733303777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29257 +bfa200000001000000000000037777770d73746170656c6f706175746f73026e6c0000010001 +bfa280000001000000020001037777770d73746170656c6f706175746f73026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c01ec0100002000100015180000a036e73310372746cc01ec03200010001000151800004c3c1ca77 + +29258 +000000007002400080fc0000020405b401010402 +000080010000000000000000 + +29259 +930e00000001000000000000036e733303777873026e6c0000260001 +930e80000001000000030003036e733303777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29260 +31c40000000100000000000005646e732d31056c61646f74026e6c0000010001 +31c48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29261 +a1ff0000000100000000000005646e732d32056c61646f74026e6c0000010001 +a1ff8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29262 +b652267b50104462b6930000000000000000 +b652a6730000000000000000 + +29263 +10f60000000100000000000008726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001 +10f68000000100000002000208726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001c0150002000100015180000e036e7331076e657463617374c023c01500020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +29264 +b652bfd55010447033180000000000000000 + + +29265 +b651697e50104462c92b0000000000000000 +b651e9740000000000000000 + +29266 +b652bfd550184470abf600000095d88a000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 + + +29267 +534300000001000000000000036e73310974656c656b6162656c026e6c0000010001 +534380000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +29268 +63980000000100000000000005646e732d31056c61646f74026e6c0000010001 +63988000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29269 +98c30000000100000000000005646e732d32056c61646f74026e6c0000010001 +98c38000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29270 +8b6800000001000000000000037777770d67697461617273756666657264026e6c0000010001 +8b6880000001000000030000037777770d67697461617273756666657264026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c03ac0100002000100015180000a076e73686f737433c03a + +29271 +b652bfe35011446232800000000000000000 + + +29272 +18dd00000001000000000000086f726973626f7577026e6c0000ff0001 +18dd80000001000000030001086f726973626f7577026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +29273 +8c08000000010000000000000377777707747067706f7374026e6c0000010001 +8c08800000010000000200020377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +29274 +0000000070024000729e0000020405b401010402 +000080010000000000000000 + +29275 +77c500000001000000000000036e7332086d65646961776562026e6c0000010001 +77c580000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +29276 +b66e00000001000000000000036e7333086d65646961776562026e6c0000010001 +b66e80000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +29277 +27c300000001000000000000037777770e76616e68617070656e6175746f73026e6c0000010001 +27c380000001000000020001037777770e76616e68617070656e6175746f73026e6c0000010001c0100002000100015180000e036e733107736368726f6572c01fc01000020001000151800006036e7332c037c03300010001000151800004d468c9c4 + +29278 +10e100000001000000000000036b726f026e6c00000f0001 +10e180000001000000020002036b726f026e6c00000f0001c00c00020001000151800010066d696e6e6965066f6d726f6570c010c00c0002000100015180000805726f62696ec02bc02400010001000151800004913a1e04c04000010001000151800004913a1a34 + +29279 +b652bfe450104462327f0000000000000000 + + +29280 +b65534ff50104470af8d0000000000000000 +b655b4f40000000000000000 + +29281 +e92700000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +e92780000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +29282 +b65534ff50184470511e00000095afd8000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd90403c4f100003000000364e544c4d535350000100000097b208e00d000d00290000000900090020000000524942454d412d4e4c5343484f434b5f524942454d410000 +b655b4f40000000000000000 + +29283 +416b00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +416b80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29284 +bce300000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +bce380000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29285 +b655350d50114462aef50000000000000000 +b655b5040000000000000000 + +29286 +c10e000000010000000000000377777707666f786b696473026e6c0000010001 +c10e800000010000000300000377777707666f786b696473026e6c0000010001c01000020001000151800011036e73310777652d64617265036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +29287 +1e2b0000000100000000000003777777046e706366026e6c0000010001 +1e2b8000000100000002000003777777046e706366026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +29288 +083200000001000000000000037777770e6d617a64612d77696572696e6761026e6c0000010001 +083280000001000000020002037777770e6d617a64612d77696572696e6761026e6c0000010001c0100002000100015180000d036e73310661637469766fc01fc01000020001000151800006036e7332c037c03300010001000151800004d5c4281ac04c00010001000151800004d5c42806 + +29289 +b655350e50104462aef40000000000000000 +b655b5040000000000000000 + +29290 +f97c00000001000000000000037777770c6465726f6e646576656e656e026e6c0000010001 +f97c80000001000000020002037777770c6465726f6e646576656e656e026e6c0000010001c0100002000100015180000e026e73086d656761706c6578c01dc01000020001000151800006036e7331c034c03100010001000151800004504f6101c04b00010001000151800004504f6102 + +29291 +ed9f00000001000000000000036e733103777873026e6c0000010001 +ed9f80000001000000030003036e733103777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29292 +53f700000001000000000000036e733203777873026e6c0000010001 +53f780000001000000030003036e733203777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29293 +2cee00000001000000000000036e737307646f7473706f74026e6c0000010001 +2cee80000001000000020002036e737307646f7473706f74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043eb1d102c00c000100010001518000043eb1d104 + +29294 +73ed00000001000000000000026e7307646f7473706f74026e6c0000010001 +73ed80000001000000020002026e7307646f7473706f74026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7373c00fc00c000100010001518000043eb1d102c039000100010001518000043eb1d104 + +29295 +86800000000100000000000009726f7a656d69656b6509656967656e73697465026e6c0000010001 +86808000000100000002000209726f7a656d69656b6509656967656e73697465026e6c0000010001c0160002000100015180000d026e7307646f7473706f74c020c01600020001000151800006036e7373c037c034000100010001518000043eb1d102c04d000100010001518000043eb1d104 + +29296 +003200000001000000000000046e73303903777873026e6c0000260001 +003280000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +29297 +0c5400000001000000000000046d61696c066368656c6c6f026e6c0000010001 +0c5480000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29298 +801e00000001000000000000046d7876660776697a7a617669026e6c0000010001 +801e80000001000000030001046d7876660776697a7a617669026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c01100020001000151800007046e733038c043c02d000100010001518000043e48df58 + +29299 +4b6c00000001000000000000046d7876660776697a7a617669026e6c00001c0001 +4b6c80000001000000030001046d7876660776697a7a617669026e6c00001c0001c01100020001000151800005026e73c011c0110002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c01100020001000151800007046e733038c043c02d000100010001518000043e48df58 + +29300 +428f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +428f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29301 +8a580000000100000000000005646e732d32056c61646f74026e6c0000010001 +8a588000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29302 +e0940000000100000000000008736e6565626f6572026e6c00000f0001 +e0948000000100000002000108736e6565626f6572026e6c00000f0001c00c0002000100015180000a026e7304696d636fc015c00c00020001000151800013036e7332097669727475616c787303636f6d00c029000100010001518000043e81810a + +29303 +1e6100000001000000000000036e733109666972737466696e64026e6c0000010001 +1e6180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29304 +40b900000001000000000000036e733209666972737466696e64026e6c0000010001 +40b980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29305 +782d00000001000000000000036e73310c636f6c742d74656c65636f6d026e6c0000010001 +782d80000001000000020002036e73310c636f6c742d74656c65636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea00dc03f00010001000151800004d44ea00e + +29306 +344100000001000000000000086d616e706f776572026e6c00000f0001 +344180000001000000020002086d616e706f776572026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c015c00c00020001000151800006036e7332c02dc02900010001000151800004c2451012c04100010001000151800004c2451212 + +29307 +d70100000001000000000000046d61696c04696d636f026e6c0000010001 +d70180000001000000020001046d61696c04696d636f026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800013036e7332097669727475616c787303636f6d00c02a000100010001518000043e81810a + +29308 +e98100000001000000000000036e733208696e7465726c6162026e6c0000010001 +e98180000001000000020002036e733208696e7465726c6162026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d4cb0902c00c00010001000151800004d4cb0903 + +29309 +cb4200000001000000000000036e733106646f686d656e026e6c0000010001 +cb4280000001000000020002036e733106646f686d656e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d94d8d41c03900010001000151800004d94d8d42 + +29310 +a78b00000001000000000000036e733206646f686d656e026e6c0000010001 +a78b80000001000000020002036e733206646f686d656e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d94d8d41c00c00010001000151800004d94d8d42 + +29311 +6727000000010000000000000763726573656e74026e6c00000f0001 +6727800000010000000200020763726573656e74026e6c00000f0001c00c0002000100015180000e036e733007656173796e6574c014c00c00020001000151800006036e7331c02cc02800010001000151800004c2a55e01c04200010001000151800004c2a55e05 + +29312 +dd2a00000001000000000000026e73076e65746c616e64026e6c0000010001 +dd2a80000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +29313 +f70e00000001000000000000036e7332076e65746c616e64026e6c0000010001 +f70e80000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +29314 +2bf600000001000000000000036e73330767617574656e67026e6c0000010001 +2bf680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29315 +028100000001000000000000097069637365727665720773747564656e7407757477656e7465026e6c0000010001 +028180000001000000030003097069637365727665720773747564656e7407757477656e7465026e6c0000010001c01e00020001000151800006036e7331c01ec01e00020001000151800006036e7332c01ec01e00020001000151800006036e7333c01ec03a0001000100015180000482590102c04c0001000100015180000482590103c05e00010001000151800004c0571113 + +29316 +7ae000000001000000000000036e73330473617261026e6c0000010001 +7ae080000001000000030003036e73330473617261026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000e036e733207737572666e6574c015c029000100010001518000049164051ec03b000100010001518000049164052fc04d00010001000151800004c0572402 + +29317 +1ed700000001000000000000036e73340473617261026e6c0000010001 +1ed780000001000000030003036e73340473617261026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000e036e733207737572666e6574c015c029000100010001518000049164051ec03b000100010001518000049164052fc04d00010001000151800004c0572402 + +29318 +bc950000000100000000000006787334616c6c166e6c2c737065616b6572667265616b40787334616c6c026e6c00000f0001 +bc958403000100000001000006787334616c6c166e6c2c737065616b6572667265616b40787334616c6c026e6c00000f0001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +29319 +388c000000010000000000000377777708687569736c696a6e026e6c0000010001 +388c800000010000000200000377777708687569736c696a6e026e6c0000010001c0100002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0100002000100015180000d077669312d6e7330026174c038 + +29320 +813b000000010000000000000a6265746572686f72656e026e6c0000ff0001 +813b800000010000000200010a6265746572686f72656e026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +29321 +ff8500000001000000000000036e73310466757a7a026e6c0000010001 +ff8580000001000000020000036e73310466757a7a026e6c0000010001c0100002000100015180001909627364667265616b730c6d756e74696e7465726e6574c015c010000200010001518000070466757a7ac033 + +29322 +abdc000000010000000000000463697461026e6c0000ff0001 +abdc800000010000000200020463697461026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +29323 +ba5f00000001000000000000096b6162656c666f6f6e026e6c0000ff0001 +ba5f80000001000000020002096b6162656c666f6f6e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7334c00cc02a000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +29324 +209c00000001000000000000076472656e746865026e6c00000f0001 +209c80000001000000020002076472656e746865026e6c00000f0001c00c0002000100015180000a036e733103696166c014c00c00020001000151800006036e7332c02cc028000100010001518000045059e040c03e000100010001518000045059ee03 + +29325 +b30c0000000100000000000002313303313733033131300236330964796e61626c6f636b07656173796e6574026e6c0000100001 +b30c8000000100000002000202313303313733033131300236330964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +29326 +7353000000010000000000000a686f6f7273747564696f026e6c0000ff0001 +7353800000010000000200020a686f6f7273747564696f026e6c0000ff0001c00c0002000100015180000d036e733106796f72697465c017c00c00020001000151800006036e7332c02fc02b0001000100015180000451047320c0440001000100015180000451047321 + +29327 +ebed00100001000000000001036d783203626974026e6c00000100010000290800000080000000 +ebed80000001000000030004036d783203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b0000291000000000000000 + +29328 +1b210000000100000000000003777777086a6f6e677a756964026e6c0000010001 +1b218000000100000003000003777777086a6f6e677a756964026e6c0000010001c0100002000100015180001607646e732d65753108706f776572646e73036e657400c0100002000100015180000a07646e732d757331c035c0100002000100015180000a07646e732d657532c035 + +29329 +c7410000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c7418000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29330 +9581000000010000000000000377777703646e62026e6c0000010001 +9581800000010000000200000377777703646e62026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +29331 +6aea00000001000000000000046d61696c0962696567656c616172026e6c0000010001 +6aea80000001000000020001046d61696c0962696567656c616172026e6c0000010001c0110002000100015180000d026e73046575726f036e657400c0110002000100015180000d026e73076575726f6e6574c01bc04800010001000151800004c2860043 + +29332 +cdf3000000010000000000000377777706663163726577026e6c0000010001 +cdf3800000010000000300030377777706663163726577026e6c0000010001c0100002000100015180000e076e73617574683103626974c017c0100002000100015180000a076e736175746832c033c0100002000100015180000a076e736175746833c033c02b00010001000151800004d5880c33c04500010001000151800004d5880c3bc05b00010001000151800004d4ccc00b + +29333 +0e2f00000001000000000000036d783203626974026e6c0000010001 +0e2f80000001000000030003036d783203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +29334 +d4b800000001000000000000026e73076575726f6e6574026e6c0000010001 +d4b880000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +29335 +b0eb000000010000000000000b6177612d636f7576657274026e6c00000f0001 +b0eb800000010000000200000b6177612d636f7576657274026e6c00000f0001c00c0002000100015180000e026e7305702d69637403636f6d00c00c00020001000151800012026e7309646970737769746368036f726700 + +29336 +89f500000001000000000000046d69787a026e6c0000ff0001 +89f580000001000000020000046d69787a026e6c0000ff0001c00c0002000100015180000b036e73310469706d68c011c00c0002000100015180000e036e73320469706d68036e657400 + +29337 +09d9000000010000000000000276330a646d64656c6976657279026e6c0000010001 +09d9800000010000000200000276330a646d64656c6976657279026e6c0000010001c00f00020001000151800010036e73310673697465347503636f6d00c00f00020001000151800006036e7332c032 + +29338 +4fc5000000010000000000000568736c6177026e6c0000ff0001 +4fc5800000010000000300010568736c6177026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +29339 +3a8b00000001000000000000074b656572616476026e6c0000ff0001 +3a8b80000001000000020002074b656572616476026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +29340 +5a4800000001000000000000036e733109666972737466696e64026e6c0000010001 +5a4880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29341 +1f3600000001000000000000036e733209666972737466696e64026e6c0000010001 +1f3680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29342 +0f2000000001000000000000084c542d56447230330d76616e5f73746161766572656e026e6c0000060001 +0f2084030001000000010000084c542d56447230330d76616e5f73746161766572656e026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +29343 +e3e1000000010000000000000e696e666f6e65742d6575726f7065026e6c00000f0001 +e3e1800000010000000300000e696e666f6e65742d6575726f7065026e6c00000f0001c00c0002000100015180001204646e7331076962706d61696c036e657400c00c0002000100015180000c04646e733104696e666fc03cc00c0002000100015180000704646e7332c034 + +29344 +e3040000000100000000000003777777066c6163687568026e6c0000010001 +e3048000000100000002000003777777066c6163687568026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c041 + +29345 +f48d00000001000000000000046d61696c08676f656469646565026e6c0000ff0001 +f48d80000001000000020000046d61696c08676f656469646565026e6c0000ff0001c01100020001000151800010026e730777697265687562036e657400c01100020001000151800006036e7332c031 + +29346 +000000005004faf0e84a0000000000000000 +000080010000000000000000 + +29347 +3e8d000000010000000000000e6772616669736368657a616b656e026e6c0000ff0001 +3e8d800000010000000200020e6772616669736368657a616b656e026e6c0000ff0001c00c0002000100015180000d026e73076b6e6f77617265c01bc00c00020001000151800006036e7332c032c02f00010001000151800004c3402003c04800010001000151800004c340202b + +29348 +d0fd00000001000000000000036e733109666972737466696e64026e6c0000010001 +d0fd80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29349 +d0fe00000001000000000000036e733209666972737466696e64026e6c0000010001 +d0fe80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29350 +d0ff000000010000000000000a73706f727476656e7565026e6c00001c0001 +d0ff800000010000000200000a73706f727476656e7565026e6c00001c0001c00c00020001000151800010036e733109666972737466696e64c017c00c00020001000151800006036e7332c02f + +29351 +6a6500000001000000000000057878736578026e6c0000010001 +6a6580000001000000030003057878736578026e6c0000010001c00c0002000100015180000e04646e733106626c6978656dc012c00c0002000100015180000704646e7332c02bc00c0002000100015180000704646e7333c02bc02600010001000151800004d44fe803c04000010001000151800004c3f5c782c05300010001000151800004d44ff303 + +29352 +d10000000001000000000000036e733109666972737466696e64026e6c0000010001 +d10080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29353 +d10100000001000000000000036e733209666972737466696e64026e6c0000010001 +d10180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29354 +644a00000001000000000000036e733109756e69736f75726365026e6c0000010001 +644a80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +29355 +45c0000000010000000000000c303930362d73657863686174026e6c0000010001 +45c0800000010000000200000c303930362d73657863686174026e6c0000010001c00c00020001000151800012036e73310878656e6f73697465036e657400c00c00020001000151800006036e7332c031 + +29356 +956200000001000000000000036d783206787334616c6c026e6c0000010001 +956280000001000000030002036d783206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29357 +10a300000001000000000000036d783206787334616c6c026e6c00001c0001 +10a380000001000000030002036d783206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29358 +e94000000001000000000000036d783206787334616c6c026e6c0000260001 +e94080000001000000030002036d783206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29359 +b85d0000000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +b85d8000000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +29360 +24bd0000000100000000000007617261676f726e0b73746172746b6162656c33026e6c0000010001 +24bd8000000100000003000307617261676f726e0b73746172746b6162656c33026e6c0000010001c0140002000100015180000b04646e733103766970c020c0140002000100015180000704646e7332c039c0140002000100015180000704646e7333c039c03400010001000151800004d44fe803c04b00010001000151800004c3f5c782c05e00010001000151800004d44ff303 + +29361 +00300000000100000000000006637269646561026e6c0000010001 +00308000000100000002000006637269646561026e6c0000010001c00c0002000100015180000f036e7331056279303030036e657400c00c00020001000151800006036e7332c02b + +29362 +44cc000000010000000000000a6f72696f6e67726f6570026e6c0000010001 +44cc800000010000000200010a6f72696f6e67726f6570026e6c0000010001c00c0002000100015180000b026e73053266617374c017c00c00020001000151800006036e7332c02ec042000100010001518000043e858122 + +29363 +745600000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373156e65747765726b737469636874696e6770616c6574026e6c0000060001 +745684030001000000010000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373156e65747765726b737469636874696e6770616c6574026e6c0000060001c05400060001000038400036026e730f646f6d61696e2d7265676973747279c0540a686f73746d6173746572c06b0bf1e540000070800000384000278d0000003840 + +29364 +932d00000001000000000000036d783306787334616c6c026e6c0000010001 +932d80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29365 +3fb500000001000000000000036d783306787334616c6c026e6c00001c0001 +3fb580000001000000030002036d783306787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29366 +2b7f00000001000000000000037777770d73746170656c6f706175746f73026e6c0000010001 +2b7f80000001000000020001037777770d73746170656c6f706175746f73026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c01ec0100002000100015180000a036e73310372746cc01ec03200010001000151800004c3c1ca77 + +29367 +a21e00000001000000000000036d783306787334616c6c026e6c0000260001 +a21e80000001000000030002036d783306787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29368 +3f3400000001000000000000036d783406787334616c6c026e6c0000010001 +3f3480000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29369 +19a000000001000000000000036d783406787334616c6c026e6c00001c0001 +19a080000001000000030002036d783406787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29370 +231900000001000000000000036d783406787334616c6c026e6c0000260001 +231980000001000000030002036d783406787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29371 +5e5d00000001000000000000036d783106787334616c6c026e6c0000010001 +5e5d80000001000000030002036d783106787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29372 +996e00000001000000000000036d783106787334616c6c026e6c00001c0001 +996e80000001000000030002036d783106787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29373 +4d1800000001000000000000026e730a646f6d65696e686f7374026e6c0000010001 +4d1880000001000000020000026e730a646f6d65696e686f7374026e6c0000010001c00f00020001000151800017036e73310d696e746572726567697374657203636f6d00c00f00020001000151800010036e733206776964657873036e657400 + +29374 +57a000000001000000000000037777770c30383030636f6d6d65726365026e6c0000010001 +57a080000001000000020002037777770c30383030636f6d6d65726365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03100010001000151800004c1ad97b2c04300010001000151800004c1ad97b4 + +29375 +00e500000001000000000000067372763031360b66726565686f7374696e67026e6c0000ff0001 +00e580000001000000020000067372763031360b66726565686f7374696e67026e6c0000ff0001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c039 + +29376 +38380000000100000000000003627968026e6c0000010001 +38388000000100000002000003627968026e6c0000010001c00c0002000100015180000f036e7331056279303030036e657400c00c00020001000151800006036e7332c028 + +29377 +911100000001000000000000036d783106787334616c6c026e6c0000260001 +911180000001000000030002036d783106787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29378 +8f6100000001000000000000026e7306787334616c6c026e6c00001c0001 +8f6180000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +29379 +369200000001000000000000026e7306787334616c6c026e6c0000260001 +369280000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +29380 +272300000001000000000000036e733206787334616c6c026e6c00001c0001 +272380000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +29381 +3f0b00000001000000000000036e733206787334616c6c026e6c0000260001 +3f0b80000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +29382 +ec5800000001000000000000036d6174026e6c00000f0001 +ec5880000001000000020002036d6174026e6c00000f0001c00c00020001000151800009026e7303646d61c010c00c00020001000151800006036e7332c027c02400010001000151800004d973c8fbc03900010001000151800004d9aa11fc + +29383 +358b00000001000000000000037777770a646577616c6473616e67026e6c0000010001 +358b80000001000000020002037777770a646577616c6473616e67026e6c0000010001c01000020001000151800013036e73310c636172647365727669636573c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c9baf3c04e00010001000151800004d5c9baf4 + +29384 +9bfb00000001000000000000026e73076e656473746174026e6c00001c0001 +9bfb80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29385 +380900000001000000000000036e7332076e656473746174026e6c0000010001 +380980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29386 +e80f00000001000000000000036e7332076e656473746174026e6c00001c0001 +e80f80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29387 +606300000001000000000000036e7333076e656473746174026e6c00001c0001 +606380000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29388 +9cc500000001000000000000036e7334076e656473746174026e6c0000010001 +9cc580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29389 +683700000001000000000000036e7334076e656473746174026e6c00001c0001 +683780000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29390 +c410000000010000000000000377777703646468026e6c0000010001 +c410800000010000000300010377777703646468026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec040c028000100010001518000043ea68353 + +29391 +516a00000001000000000000076d726f757465720777697265687562026e6c00001c0001 +516a80000001000000030000076d726f757465720777697265687562026e6c00001c0001c01400020001000151800010026e730777697265687562036e657400c01400020001000151800006036e7332c033c01400020001000151800006036e7333c033 + +29392 +322d00000001000000000000037777770b6166746f6e626c6164657402736508656d6561636f7265026e6c0000010001 +322d84030001000000010000037777770b6166746f6e626c6164657402736508656d6561636f7265026e6c0000010001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +29393 +52f800000001000000000000046d61696c056672656578026e6c0000010001 +52f880000001000000020002046d61696c056672656578026e6c0000010001c0110002000100015180000a036e7331036e7873c017c01100020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +29394 +6afa00000001000000000000036e73350a6e657461666661697273026e6c0000010001 +6afa80000001000000020002036e73350a6e657461666661697273026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7336c010c00c00010001000151800004c1ac2d05c03d00010001000151800004c1ac2d06 + +29395 +b57d00000001000000000000036e73360a6e657461666661697273026e6c0000010001 +b57d80000001000000020002036e73360a6e657461666661697273026e6c0000010001c01000020001000151800006036e7335c010c01000020001000151800002c00cc02f00010001000151800004c1ac2d05c00c00010001000151800004c1ac2d06 + +29396 +35520000000100000000000003777777046b617468026e6c0000010001 +35528000000100000002000003777777046b617468026e6c0000010001c0100002000100015180000e026e7308676c6f62616c7873c015c01000020001000151800006036e7332c02c + +29397 +a29500000001000000000000037777770864616e69656c6c61026e6c0000010001 +a29580000001000000020002037777770864616e69656c6c61026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c019c01000020001000151800006036e7332c030c02d0001000100015180000450474002c04b0001000100015180000450474102 + +29398 +3f600000000100000000000004696b6361026e6c00000f0001 +3f608000000100000002000104696b6361026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +29399 +75c200000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +75c280000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +29400 +2f7e00000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +2f7e80000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +29401 +8f9200000001000000000000036e7331046e732d31026e6c0000010001 +8f9280000001000000020002036e7331046e732d31026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045045a0cdc03700010001000151800004d4cceec8 + +29402 +e3ea00000001000000000000036e7332046e732d31026e6c0000010001 +e3ea80000001000000020002036e7332046e732d31026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc029000100010001518000045045a0cdc00c00010001000151800004d4cceec8 + +29403 +560200000001000000000000096d6f6e74666f6f7274026e6c0000ff0001 +560280000001000000020002096d6f6e74666f6f7274026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c016c00c00020001000151800006036e7331c02dc02a00010001000151800004504f6101c04400010001000151800004504f6102 + +29404 +08590000000100000000000005646e732d31056c61646f74026e6c0000010001 +08598000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29405 +36260000000100000000000005646e732d32056c61646f74026e6c0000010001 +36268000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29406 +8ceb00000001000000000000037777770f73747564656e74656e6b616d657273026e6c0000010001 +8ceb80000001000000020000037777770f73747564656e74656e6b616d657273026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c037 + +29407 +9105000000010000000000000a676f7564656e67696473026e6c0000010001 +9105800000010000000200010a676f7564656e67696473026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02b00010001000151800004c1ac0e02 + +29408 +720700000001000000000000096f7564706170696572026e6c0000ff0001 +720780000001000000020002096f7564706170696572026e6c0000ff0001c00c00020001000151800009036e7331026973c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +29409 +09360000000100000000000003777777056b6c696b73026e6c0000010001 +09368000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +29410 +f3a70000000100000000000007667265656c6572026e6c00001c0001 +f3a78000000100000002000007667265656c6572026e6c00001c0001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +29411 +b7df0000000100000000000003777777066d6174757265026e6c0000010001 +b7df8000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +29412 +83f60000000100000000000003776566026e6c00000f0001 +83f68000000100000002000203776566026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29413 +5c4200000001000000000000076368696361676f07726f7574653636026e6c0000010001 +5c4280000001000000020001076368696361676f07726f7574653636026e6c0000010001c0140002000100015180000d026e73046575726f036e657400c0140002000100015180000d026e73076575726f6e6574c01cc04900010001000151800004c2860043 + +29414 +8e9d0000000100000000000004616e73310774697363616c69026e6c00001c0001 +8e9d8000000100000003000204616e73310774697363616c69026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +29415 +90ca0000000100000000000004616e73310774697363616c69026e6c0000260001 +90ca8000000100000003000204616e73310774697363616c69026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +29416 +40200000000100000000000004616e73320774697363616c69026e6c00001c0001 +40208000000100000003000204616e73320774697363616c69026e6c00001c0001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +29417 +be110000000100000000000004616e73320774697363616c69026e6c0000260001 +be118000000100000003000204616e73320774697363616c69026e6c0000260001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +29418 +941a000000010000000000000377777704666e7273026e6c0000010001 +941a800000010000000200020377777704666e7273026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +29419 +342b00000001000000000000036e73330767617574656e67026e6c0000010001 +342b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29420 +043400000001000000000000036e73340767617574656e67026e6c0000010001 +043480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29421 +a697000000010000000000000967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001 +a697800000010000000200020967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001c0160002000100015180000f036e73310861746c616e74697ac024c01600020001000151800006036e7332c03cc03800010001000151800004d5efa011c05300010001000151800004d5efa075 + +29422 +36ac0000000100000000000009652d6c756e61746963026e6c0000010001 +36ac8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +29423 +21de0000000100000000000008736d7470686f73740667656d6e6574026e6c0000010001 +21de8000000100000002000208736d7470686f73740667656d6e6574026e6c0000010001c0150002000100015180000e026e73086d656761706c6578c01cc01500020001000151800006036e7331c033c03000010001000151800004504f6101c04a00010001000151800004504f6102 + +29424 +b90900000001000000000000064345534730310463657367026e6c0000060001 +b90984030001000000010000064345534730310463657367026e6c0000060001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +29425 +44550000000100000000000008686f73746e616d650462696e640000100003 +44558000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +29426 +1fa900000001000000000000013203313434033137360331393307696e2d61646472046172706100000c0001 +1fa980020001000000000000013203313434033137360331393307696e2d61646472046172706100000c0001 + +29427 +c101000000010000000000000561646d616e056b696f736b026e6c0000010001 +c101800000010000000200020561646d616e056b696f736b026e6c0000010001c01200020001000151800012036e73310b7669616e6574776f726b73c018c01200020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +29428 +78760000000100000000000006636861726973026e6c00000f0001 +78768000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29429 +b0a7000000010000000000000377777709776562776572656c64026e6c0000010001 +b0a7800000010000000300030377777709776562776572656c64026e6c0000010001c0100002000100015180000a036e733103696467c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e0001000100015180000451af4646c0440001000100015180000451af4647c05600010001000151800004d5a0fde6 + +29430 +d29400000001000000000000034e53320743495354524f4e024e4c0000010001 +d29480000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +29431 +25ca00000001000000000000076465686f6e6276026e6c0000ff0001 +25ca80000001000000020000076465686f6e6276026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +29432 +a3b2000000010000000000000377777703646468026e6c0000010001 +a3b2800000010000000300010377777703646468026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec040c028000100010001518000043ea68353 + +29433 +3f3500000001000000000000037777770867656d65656e7465026e6c0000010001 +3f3580000001000000020000037777770867656d65656e7465026e6c0000010001c01000020001000151800013036e73300964757463682d6e657403636f6d00c01000020001000151800006036e7331c031 + +29434 +d09d001000010000000000010a6578616d656e626c6164096b656e6e69736e6574026e6c00000100010000290800000000000000 +d09d800000010000000200030a6578616d656e626c6164096b656e6e69736e6574026e6c0000010001c01700020001000151800006036e7339c017c0170002000100015180000e036e733207737572666e6574c021c03500010001000151800004c0576a61c04700010001000151800004c05724020000291000000000000000 + +29435 +12cc00000001000000000000056d69746578026e6c00000f0001 +12cc80000001000000030002056d69746578026e6c00000f0001c00c0002000100015180000f036e7331086c65617365776562c012c00c00020001000151800006036e7332c02ac00c00020001000151800012036e7333086c65617365776562036f726700c026000100010001518000043ed44079c041000100010001518000043ed4407a + +29436 +514c00000001000000000000037777770d656e6572676965646972656374026e6c0000010001 +514c80000001000000020001037777770d656e6572676965646972656374026e6c0000010001c01000020001000151800015086e732d69736d30310963617067656d696e69c01ec0100002000100015180000b086e732d69736d3032c03bc03200010001000151800004d5f4a024 + +29437 +c354000000010000000000000a7765726b74756967656e097377686f7374696e67026e6c0000010001 +c354800000010000000200020a7765726b74756967656e097377686f7374696e67026e6c0000010001c0170002000100015180000a036e733103686978c021c01700020001000151800006036e7332c039c03500010001000151800004d5a0da0ac04b0001000100015180000451112ec3 + +29438 +020500000001000000000000037777770764757463687063026e6c0000010001 +020580000001000000030000037777770764757463687063026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c032c0100002000100015180000805646e733132c032 + +29439 +501b00000001000000000000037777770a6c656572676f7a657273026e6c0000010001 +501b80000001000000030000037777770a6c656572676f7a657273026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c037c0100002000100015180000a076e73686f737433c037 + +29440 +81b90000000100000000000003706f700973796c7661626f7577026e6c0000010001 +81b98000000100000003000203706f700973796c7661626f7577026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +29441 +e29400000001000000000000024e53084d454741504c4558026e6c0000010001 +e29480000001000000020002024e53084d454741504c4558026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004504f6101c03a00010001000151800004504f6102 + +29442 +9d74000000010000000000000a6865616462616e6765720a636c7562636861727473026e6c0000010001 +9d74800000010000000200020a6865616462616e6765720a636c7562636861727473026e6c0000010001c0170002000100015180000a036e7331036e7873c022c01700020001000151800006036e7332c03ac03600010001000151800004d973c015c04c00010001000151800004d973c102 + +29443 +000d28000001000200000000026e6c0000060001064345534730310463657367026e6c00000500fe000000000000c01400010001000000000004c297c0c4 +000da8040000000000000000 + +29444 +4146000000010000000000000a6578616d656e626c6164096b656e6e69736e6574026e6c0000010001 +4146800000010000000200020a6578616d656e626c6164096b656e6e69736e6574026e6c0000010001c01700020001000151800006036e7339c017c0170002000100015180000e036e733207737572666e6574c021c03500010001000151800004c0576a61c04700010001000151800004c0572402 + +29445 +8ba800000001000000000000037777771276616b616e746965646973636f756e746572026e6c0000010001 +8ba880000001000000020002037777771276616b616e746965646973636f756e746572026e6c0000010001c0100002000100015180000d036e7331066e6574636f6ec023c01000020001000151800006036e7332c03bc0370001000100015180000450f7ce01c0500001000100015180000450f7cf01 + +29446 +968500000001000000000000037777770e646576617374676f656473697465026e6c0000010001 +968580000001000000020001037777770e646576617374676f656473697465026e6c0000010001c0100002000100015180000a036e733303777873c01fc01000020001000151800006036e7334c037c04900010001000151800004d5ef9a65 + +29447 +65210000000100000000000005776f64616e0369637303656c6503747565026e6c0000010001 +65218000000100000003000305776f64616e0369637303656c6503747565026e6c0000010001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +29448 +0da40000000100000000000005776f64616e0369637303656c6503747565026e6c0000260001 +0da48000000100000003000305776f64616e0369637303656c6503747565026e6c0000260001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +29449 +0000000070024000385c0000020405b401010402 +000080010000000000000000 + +29450 +92000000000100000000000006636861726973026e6c00000f0001 +92008000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29451 +936b28000001000000020000026e6c00000600012432383333343664302d343165612d343238302d626532662d623133643232663339396136065f6d73646373086262622d6164616d026e6c00000500ff000000000000c0140005000100000258001709626262736572766572086262622d6164616d026e6c00 +936ba8040000000000000000 + +29452 +301200000001000000000000037777770664656b726f6c026e6c0000010001 +301280000001000000020000037777770664656b726f6c026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c041 + +29453 +345c00000001000000000000036e73340767617574656e67026e6c0000010001 +345c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29454 +0c6000000001000000000000036e73330767617574656e67026e6c0000010001 +0c6080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29455 +348000000001000000000000036e73330767617574656e67026e6c0000010001 +348080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29456 +0000000070024000905f00000204057a01010402 +000080010000000000000000 + +29457 +b658c73e50104470e3080000000000000000 + + +29458 +7de700000001000000000000046d61696c1270656e73696f656e756974766f6572646572026e6c0000010001 +7de780000001000000020000046d61696c1270656e73696f656e756974766f6572646572026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c03e + +29459 +b6596076501041b8a4510000000000000000 +b659e0740000000000000000 + +29460 +f49f0000000100000000000004646e73320a7075626c6973686e6574026e6c0000010001 +f49f8000000100000002000104646e73320a7075626c6973686e6574026e6c0000010001c01100020001000151800006036e696bc011c0110002000100015180000b026e73026e6c036e657400c03000010001000151800004c1433c0a + +29461 +b6596076501841b838880000009068f4000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403af9b5403c4b350003000000314e544c4d535350000100000097b208e0080008002900000009000900200000004242425345525645524242422d4144414d0000 +b659e0740000000000000000 + +29462 +b658c73e501844701fbb000000879ffc000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000434553473031434553470000 + + +29463 +b6596084501141aaa3be0000000000000000 +b659e0840000000000000000 + +29464 +7e240000000100000000000003777777076d656469776562026e6c0000010001 +7e248000000100000002000003777777076d656469776562026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c032 + +29465 +00000000700240009c2d00000204057a01010402 +000080010000000000000000 + +29466 +7d280000000100000000000003777777086b6f6f696a6d616e026e6c0000010001 +7d288000000100000002000203777777086b6f6f696a6d616e026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c019c01000020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +29467 +3f1a000000010000000000000967616e796d6564657309726f7474657264616d026e6c00001c0001 +3f1a800000010000000300030967616e796d6564657309726f7474657264616d026e6c00001c0001c01600020001000151800002c00cc01600020001000151800007046c656461c016c01600020001000151800014036e733203676e7309676574726f6e696373c020c00c00010001000151800004d5c9cf50c04200010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +29468 +3bbb000000010000000000000967616e796d6564657309726f7474657264616d026e6c0000260001 +3bbb800000010000000300030967616e796d6564657309726f7474657264616d026e6c0000260001c01600020001000151800002c00cc01600020001000151800007046c656461c016c01600020001000151800014036e733203676e7309676574726f6e696373c020c00c00010001000151800004d5c9cf50c04200010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +29469 +0e9b00000001000000000000046c65646109726f7474657264616d026e6c00001c0001 +0e9b80000001000000030003046c65646109726f7474657264616d026e6c00001c0001c0110002000100015180000c0967616e796d65646573c011c01100020001000151800002c00cc01100020001000151800014036e733203676e7309676574726f6e696373c01bc02f00010001000151800004d5c9cf50c00c00010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +29470 +71f700000001000000000000046c65646109726f7474657264616d026e6c0000260001 +71f780000001000000030003046c65646109726f7474657264616d026e6c0000260001c0110002000100015180000c0967616e796d65646573c011c01100020001000151800002c00cc01100020001000151800014036e733203676e7309676574726f6e696373c01bc02f00010001000151800004d5c9cf50c00c00010001000151800004d5c9cf19c05500010001000151800004910d2a05 + +29471 +50cc00000001000000000000036e7332076e656473746174026e6c0000010001 +50cc80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29472 +4e6f00000001000000000000036e7334076e656473746174026e6c0000010001 +4e6f80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29473 +a76900000001000000000000036e73310f637962657270726f6d6f74696f6e73026e6c0000010001 +a76980000001000000020002036e73310f637962657270726f6d6f74696f6e73026e6c0000010001c0100002000100015180000e036e733107686f7477697265c020c01000020001000151800006036e7332c038c0340001000100015180000451044b03c04e0001000100015180000451044bc8 + +29474 +660d00000001000000000000036e73320f637962657270726f6d6f74696f6e73026e6c0000010001 +660d80000001000000020002036e73320f637962657270726f6d6f74696f6e73026e6c0000010001c0100002000100015180000e036e733107686f7477697265c020c01000020001000151800006036e7332c038c0340001000100015180000451044b03c04e0001000100015180000451044bc8 + +29475 +b6596085501041aaa3bd0000000000000000 +b659e0840000000000000000 + +29476 +d5a0000000010000000000000462617261026e6c00000f0001 +d5a0800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +29477 +fb6f00000001000000000000037777770d766c616d2d6465746563746965026e6c0000010001 +fb6f80000001000000030003037777770d766c616d2d6465746563746965026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01ec0100002000100015180000e0b6e616d6573657276657232c03ec0100002000100015180000e0b6e616d6573657276657233c03ec0320001000100015180000451ad2020c0560001000100015180000451ad2021c0700001000100015180000452c049aa + +29478 +b659f314501041b81d810000000000000000 + + +29479 +dea8000000010000000000000762657374627579026e6c00000f0001 +dea8800000010000000200000762657374627579026e6c00000f0001c00c0002000100015180000c026e7306766576696461c014c00c00020001000151800006036e7332c02b + +29480 +b659f314501841b8513400000090ca78000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403af9b5403c4b350003000000314e544c4d535350000100000097b208e0080008002900000009000900200000004242425345525645524242422d4144414d0000 + + +29481 +b658c74c50114462e27e0000000000000000 + + +29482 +ccb2000000010000000000000a6c6569646572646f7270026e6c00000f0001 +ccb2800000010000000200020a6c6569646572646f7270026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c017c00c00020001000151800006036e7331c02ec02b00010001000151800004504f6101c04500010001000151800004504f6102 + +29483 +7bad00000001000000000000055f6c646170045f74637003706463065f6d73646373063565696b656e026e6c0000060001 +7bad84030001000000010000055f6c646170045f74637003706463065f6d73646373063565696b656e026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +29484 +b659f322501141aa1cee0000000000000000 + + +29485 +87aa000000010000000000000b626f6c6e6574776f726b73026e6c00000f0001 +87aa800000010000000200020b626f6c6e6574776f726b73026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c018c00c00020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +29486 +0000000070024000ec0c0000020405b401010402 +000080010000000000000000 + +29487 +00000000700240004d1c00000204057a01010402 +000080010000000000000000 + +29488 +b659f323501041aa1ced0000000000000000 + + +29489 +b65ba67a501041b81b080000000000000000 + + +29490 +d5dd00000001000000000000055f6c646170045f746370026763065f6d73646373063565696b656e026e6c0000060001 +d5dd84030001000000010000055f6c646170045f746370026763065f6d73646373063565696b656e026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +29491 +b65ba67a501841b8ed37000000902bfc000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403af9b5403c4b350003000000314e544c4d535350000100000097b208e0080008002900000009000900200000004242425345525645524242422d4144414d0000 + + +29492 +25f0000000010000000000000475676269026e6c00001c0001 +25f0800000010000000200000475676269026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +29493 +c68a00000001000000000000037777770864696b6b656c756c026e6c0000010001 +c68a80000001000000030003037777770864696b6b656c756c026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc019c0100002000100015180000704646e7332c032c0100002000100015180000704646e7333c032c02d00010001000151800004d44fe803c04700010001000151800004c3f5c782c05a00010001000151800004d44ff303 + +29494 +b658c74d50104462e27d0000000000000000 + + +29495 +b65ba688501141aa1a750000000000000000 + + +29496 +be4000000001000000000000037777770a7365786163636f756e74026e6c0000010001 +be4080000001000000020002037777770a7365786163636f756e74026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01bc01000020001000151800006036e7332c033c02f0001000100015180000452c04516c04c0001000100015180000452c04542 + +29497 +b65ad9b55010447084400000000000000000 + + +29498 +e0f70000000100000000000008646e73617574683009776973652d67757973026e6c0000010001 +e0f78000000100000003000308646e73617574683009776973652d67757973026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7330c015c01500020001000151800006036e7332c015c03300010001000151800004d413cd91c04500010001000151800004d413cd8fc05700010001000151800004c16d7a3e + +29499 +7c5e0000000100000000000008646e73617574683209776973652d67757973026e6c0000010001 +7c5e8000000100000003000308646e73617574683209776973652d67757973026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7330c015c01500020001000151800006036e7332c015c03300010001000151800004d413cd91c04500010001000151800004d413cd8fc05700010001000151800004c16d7a3e + +29500 +b65ba689501041aa1a740000000000000000 + + +29501 +11ee000000010000000000000276330a646d64656c6976657279026e6c0000010001 +11ee800000010000000200000276330a646d64656c6976657279026e6c0000010001c00f00020001000151800010036e73310673697465347503636f6d00c00f00020001000151800006036e7332c032 + +29502 +ce9600000001000000000000055f6c646170045f7463702430383830316431622d656130302d343731342d383939662d65316233323465383736383007646f6d61696e73065f6d73646373063565696b656e026e6c0000060001 +ce9684030001000000010000055f6c646170045f7463702430383830316431622d656130302d343731342d383939662d65316233323465383736383007646f6d61696e73065f6d73646373063565696b656e026e6c0000060001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +29503 +ff3e0000000100000000000003777777066e6965737465026e6c0000010001 +ff3e8000000100000002000003777777066e6965737465026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +29504 +b65ad9b550184470c70a000000879be4000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000434553473031434553470000 + + +29505 +548f00000001000000000000036e73330a74727565736572766572026e6c0000010001 +548f80000001000000030003036e73330a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d5ef8003c04100010001000151800004d5efb004c00c00010001000151800004d5ef8005 + +29506 +64e200000001000000000000036e73320a74727565736572766572026e6c0000010001 +64e280000001000000030003036e73320a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004d5ef8003c00c00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +29507 +17a200000001000000000000036e73310a74727565736572766572026e6c0000010001 +17a280000001000000030003036e73310a74727565736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef8003c03d00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +29508 +880000000001000000000000026e7303733632026e6c0000010001 +880080000001000000020000026e7303733632026e6c0000010001c00f00020001000151800010026e73076e65737363697303636f6d00c00f00020001000151800006036e7332c02a + +29509 +b65ad9c35011446283b60000000000000000 + + +29510 +0000000070024000ebab0000020405b401010402 +000080010000000000000000 + +29511 +9aac00000001000000000000046d61696c07726f7665737461026e6c0000010001 +9aac80000001000000020002046d61696c07726f7665737461026e6c0000010001c0110002000100015180000d026e7307656c6173746963c019c01100020001000151800006036e7333c030c02d00010001000151800004d5c42104c04600010001000151800004d5c42107 + +29512 +eff8000000010000000000000377777708666c617368313233026e6c0000010001 +eff8800000010000000200000377777708666c617368313233026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c034 + +29513 +aced000000010000000000000862696f646572696a026e6c00001c0001 +aced800000010000000200010862696f646572696a026e6c00001c0001c00c00020001000151800011036e696b0a7075626c6973686e6574c015c00c0002000100015180000704646e7332c02dc02900010001000151800004c1433c0a + +29514 +3c4300000001000000000000037777770a7365786163636f756e74026e6c0000010001 +3c4380000001000000020002037777770a7365786163636f756e74026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01bc01000020001000151800006036e7332c033c02f0001000100015180000452c04516c04c0001000100015180000452c04542 + +29515 +3b0c00000001000000000000026e73076e656473746174026e6c00001c0001 +3b0c80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29516 +df7c00000001000000000000026e73076e656473746174026e6c0000260001 +df7c80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29517 +b65ad9c45010446283b50000000000000000 + + +29518 +01d300000001000000000000036e7332076e656473746174026e6c0000010001 +01d380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29519 +aca600000001000000000000036e7332076e656473746174026e6c00001c0001 +aca680000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29520 +a02900000001000000000000036e7332076e656473746174026e6c0000260001 +a02980000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29521 +c391000000010000000000000864657475756e7465026e6c00000f0001 +c391800000010000000200010864657475756e7465026e6c00000f0001c00c0002000100015180000a036e733303777873c015c00c00020001000151800006036e7334c02dc03f00010001000151800004d5ef9a65 + +29522 +ded4000000010000000000000763656e64726973026e6c00000f0001 +ded4800000010000000200020763656e64726973026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +29523 +d86800000001000000000000036e7333076e656473746174026e6c00001c0001 +d86880000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29524 +0d1400000001000000000000036e7333076e656473746174026e6c0000260001 +0d1480000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29525 +282200000001000000000000036e7334076e656473746174026e6c0000010001 +282280000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29526 +b65c2b0a5010447032890000000000000000 +b65cab040000000000000000 + +29527 +212a00000001000000000000036e7334076e656473746174026e6c00001c0001 +212a80000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29528 +eb7800000001000000000000036e7334076e656473746174026e6c0000260001 +eb7880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29529 +5e4a00000001000000000000037777770e646f6d627572676d6f746f72656e026e6c0000010001 +5e4a80000001000000020000037777770e646f6d627572676d6f746f72656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c039 + +29530 +b65c2b0a50184470796b0000008797cc000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000434553473031434553470000 +b65cab040000000000000000 + +29531 +3bae000000010000000000000377777703726e77026e6c00001c0001 +3bae800000010000000200010377777703726e77026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004913ac8fd + +29532 +461000000001000000000000046d61696c066e6577617973026e6c0000010001 +461080000001000000030003046d61696c066e6577617973026e6c0000010001c0110002000100015180000b036e73310464696769c018c01100020001000151800006036e7332c030c01100020001000151800006036e7333c030c02c000100010001518000043e5df006c043000100010001518000043e5df0f6c05500010001000151800004d42986e2 + +29533 +dde600000001000000000000086f6666696369616c026e6c00000f0001 +dde680000001000000020000086f6666696369616c026e6c00000f0001c00c00020001000151800011036e73300773656c696f757303636f6d00c00c00020001000151800006036e7332c02d + +29534 +1f4200000001000000000000057473636e6c026e6c0000ff0001 +1f4280000001000000020002057473636e6c026e6c0000ff0001c00c0002000100015180000d026e73077374616e6e6574c012c00c00020001000151800006036e7332c029c02600010001000151800004d5852414c03f00010001000151800004d5852418 + +29535 +482600000001000000000000086869656e66656c64026e6c00000f0001 +482680000001000000030003086869656e66656c64026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c015c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02dc02900010001000151800004d5c98015c04400010001000151800004d5c9bf12c05600010001000151800004d5ef9c26 + +29536 +ebde0000000100000000000006617263686973026e6c0000010001 +ebde8000000100000002000106617263686973026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02700010001000151800004c1ad1272 + +29537 +9d110000000100000000000003777777106f75746c696e65616d7374657264616d026e6c0000010001 +9d118000000100000002000203777777106f75746c696e65616d7374657264616d026e6c0000010001c0100002000100015180000c026e7306787334616c6cc021c01000020001000151800006036e7332c038c03500010001000151800004c26d0642c04d00010001000151800004c26d0963 + +29538 +ab7a00000001000000000000046d61696c086869656e66656c64026e6c0000010001 +ab7a80000001000000030003046d61696c086869656e66656c64026e6c0000010001c0110002000100015180000f036e7331086e6f766178657373c01ac01100020001000151800006036e7332c032c01100020001000151800006036e7333c032c02e00010001000151800004d5c98015c04900010001000151800004d5c9bf12c05b00010001000151800004d5ef9c26 + +29539 +42f00000000100000000000004616a6178066e696b686566026e6c0000010001 +42f08000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +29540 +6bec0000000100000000000009737066626568656572026e6c0000010001 +6bec8000000100000002000009737066626568656572026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c030 + +29541 +b65c2b185011446231ff0000000000000000 +b65cab140000000000000000 + +29542 +7b4500100001000000000001056132303030026e6c0000ff00010000290800000000000000 +7b4580000001000000030003056132303030026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +29543 +81d100000001000000000000037777770a746f702d6e6f6f6b6965026e6c0000010001 +81d180000001000000020000037777770a746f702d6e6f6f6b6965026e6c0000010001c01000020001000151800011036e7331077876656e74757303636f6d00c01000020001000151800006036e7332c033 + +29544 +d27f00000001000000000000036e733205786c722d38026e6c0000010001 +d27f80000001000000020002036e733205786c722d38026e6c0000010001c01000020001000151800009036e7331026973c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +29545 +085500000001000000000000036e733103757063026e6c0000010001 +085580000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +29546 +a46d00000001000000000000036e73320d6d74622d736f6c7574696f6e73026e6c0000010001 +a46d80000001000000020002036e73320d6d74622d736f6c7574696f6e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d5852719c00c00010001000151800004d5852714 + +29547 +313d00000001000000000000036e73320d6d74622d736f6c7574696f6e73026e6c0000260001 +313d80000001000000020002036e73320d6d74622d736f6c7574696f6e73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d5852719c00c00010001000151800004d5852714 + +29548 +8266000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +8266800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +29549 +4133000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +4133800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +29550 +23a000000001000000000000036e73310d6d74622d736f6c7574696f6e73026e6c0000010001 +23a080000001000000020002036e73310d6d74622d736f6c7574696f6e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852719c04000010001000151800004d5852714 + +29551 +b65c2b195010446231fe0000000000000000 +b65cab140000000000000000 + +29552 +b10a00000001000000000000026e730367616b026e6c0000010001 +b10a80000001000000020002026e730367616b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733307737669616e6564c013c00c000100010001518000048fb0b003c035000100010001518000048fb10165 + +29553 +914c00000001000000000000037777770c64656d6f666573746976616c026e6c0000010001 +914c80000001000000020000037777770c64656d6f666573746976616c026e6c0000010001c01000020001000151800015036e73310b7072696f73657276653035036e657400c01000020001000151800006036e7332c035 + +29554 +087500000001000000000000036e733203666a66026e6c0000010001 +087580000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29555 +c83c00000001000000000000026e730477656233026e6c0000010001 +c83c80000001000000020002026e730477656233026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc02800010001000151800004d436240ec03a00010001000151800004c2b262ef + +29556 +087600000001000000000000036e733103666a66026e6c0000010001 +087680000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29557 +48cd00000001000000000000036e73310d6d74622d736f6c7574696f6e73026e6c0000260001 +48cd80000001000000020002036e73310d6d74622d736f6c7574696f6e73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852719c04000010001000151800004d5852714 + +29558 +8e0700000001000000000000056132303030026e6c0000ff0001 +8e0780000001000000030002056132303030026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c0142 + +29559 +85ef00000001000000000000036e7333046372696f026e6c0000010001 +85ef80000001000000020000036e7333046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +29560 +3e9700000001000000000000036e7334046372696f026e6c0000010001 +3e9780000001000000020000036e7334046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +29561 +002d0000000100000000000003777777096a6f6273746f646179026e6c0000010001 +002d8000000100000002000003777777096a6f6273746f646179026e6c0000010001c0100002000100015180000e036e7331047773646e03636f6d00c01000020001000151800006036e7332c032 + +29562 +6b0300000001000000000000096863632d67726f6570026e6c0000010001 +6b0380000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +29563 +d86000000001000000000000057377616e65026e6c00000f0001 +d86080000001000000020002057377616e65026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +29564 +fd8a0000000100000000000004736d74700b6575726f7472616e736974026e6c0000010001 +fd8a8000000100000002000104736d74700b6575726f7472616e736974026e6c0000010001c01100020001000151800011036e696b0a7075626c6973686e6574c01dc0110002000100015180000b026e73026e6c036e657400c03100010001000151800004c1433c0a + +29565 +e9c00000000100000000000005666f72756d0e636f6d7075746572746f7461616c026e6c0000010001 +e9c08000000100000003000305666f72756d0e636f6d7075746572746f7461616c026e6c0000010001c0120002000100015180000a036e733103696467c021c01200020001000151800006036e7332c039c01200020001000151800006036e7333c039c0350001000100015180000451af4646c04b0001000100015180000451af4647c05d00010001000151800004d5a0fde6 + +29566 +865100000001000000000000037777770c6361666564656b616368656c026e6c0000010001 +865180000001000000020002037777770c6361666564656b616368656c026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c01dc01000020001000151800006036e7332c035c0310001000100015180000450416028c04c00010001000151800004c356780c + +29567 +650300000001000000000000036d783306787334616c6c026e6c0000010001 +650380000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29568 +3afc00000001000000000000037777771261636164656d696573617373656e6865696d026e6c0000010001 +3afc80000001000000020002037777771261636164656d696573617373656e6865696d026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec023c01000020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +29569 +08a400000001000000000000036e733203666a66026e6c0000010001 +08a480000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29570 +605b00000001000000000000024e530743495354524f4e024e4c0000010001 +605b80000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +29571 +d5c600000001000000000000037777770472746c34026e6c0000010001 +d5c680000001000000020001037777770472746c34026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c015c01000020001000151800011036e733207636c742d756661036e657400c02900010001000151800004c3c1ca77 + +29572 +14e80000000100000000000006636861726973026e6c00001c0001 +14e88000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29573 +08a500000001000000000000036e733103666a66026e6c0000010001 +08a580000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29574 +bd080000000100000000000003777777066d6f7070656e026e6c0000010001 +bd088000000100000002000203777777066d6f7070656e026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +29575 +306c0000000100000000000013736f6574657273626f7577746563686e69656b026e6c00000f0001 +306c8000000100000002000213736f6574657273626f7577746563686e69656b026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc020c00c00020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +29576 +a24100000001000000000000037777770f616d61746575727069637475726573026e6c0000010001 +a24180000001000000020000037777770f616d61746575727069637475726573026e6c0000010001c01000020001000151800017036e73310d696e746572726567697374657203636f6d00c01000020001000151800010026e730a646f6d65696e686f7374c020 + +29577 +e32b00000001000000000000037777770a63642d686f65736a6573026e6c0000010001 +e32b80000001000000030002037777770a63642d686f65736a6573026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +29578 +dfee000000010000000000000a74656d706f2d7465616d026e6c00000f0001 +dfee800000010000000300000a74656d706f2d7465616d026e6c00000f0001c00c0002000100015180001c09646e733030303030310367656e0872616e647374616403636f6d00c00c0002000100015180000c09646e73303030303032c035c00c0002000100015180000d036e7332036b706e036e657400 + +29579 +a1aa000000010000000000000d6d696e69736576656e636c7562026e6c0000010001 +a1aa800000010000000200020d6d696e69736576656e636c7562026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c01ac00c00020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +29580 +83cd0000000100000000000006686f73742d330f636f6e73756d656e74656e626f6e640564656d6f6e026e6c0000010001 +83cd8000000100000003000206686f73742d330f636f6e73756d656e74656e626f6e640564656d6f6e026e6c0000010001c02300020001000151800006036e7331c023c02300020001000151800006036e7332c023c0230002000100015180000f036e73320564656d6f6e036e657400c03d00010001000151800004c29f4906c04f00010001000151800004c29fb004 + +29581 +65ee00000001000000000000067365617263680465626179026e6c0000010001 +65ee80000001000000020000067365617263680465626179026e6c0000010001c013000200010001518000140963726f636f64696c65046562617903636f6d00c0130002000100015180000b087061636966696572c03b + +29582 +5a1800000001000000000000034e533203485655026e6c0000010001 +5a1880000001000000030003034e533203485655026e6c0000010001c0100002000100015180000906776174736f6ec010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc0280001000100015180000491592603c03d00010001000151800004c0576a65c00c0001000100015180000491595303 + +29583 +d6cb00000001000000000000034e533203485655026e6c0000260001 +d6cb80000001000000030003034e533203485655026e6c0000260001c0100002000100015180000906776174736f6ec010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc0280001000100015180000491592603c03d00010001000151800004c0576a65c00c0001000100015180000491595303 + +29584 +283b0000000100000000000006574154534f4e03485655026e6c0000010001 +283b8000000100000003000306574154534f4e03485655026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c01300020001000151800006036e7332c013c00c0001000100015180000491592603c03900010001000151800004c0576a65c0530001000100015180000491595303 + +29585 +04b00000000100000000000006574154534f4e03485655026e6c0000260001 +04b08000000100000003000306574154534f4e03485655026e6c0000260001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c01300020001000151800006036e7332c013c00c0001000100015180000491592603c03900010001000151800004c0576a65c0530001000100015180000491595303 + +29586 +02870000000100000000000004696b6361026e6c00001c0001 +02878000000100000002000104696b6361026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +29587 +d3820000000100000000000003777777046b726577026e6c0000010001 +d3828000000100000003000003777777046b726577026e6c0000010001c01000020001000151800011036e733107696c63616d706f03636f6d00c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02d + +29588 +2aad0000000100000000000003706f70066865746e6574026e6c0000010001 +2aad8000000100000003000303706f70066865746e6574026e6c0000010001c0100002000100015180000b046e73303803777873c017c01000020001000151800007046e733039c030c01000020001000151800006036e7334c030c02b00010001000151800004c3790128c04200010001000151800004c3790143c05500010001000151800004d5ef9a65 + +29589 +b06f0000000100000000000006776468303131066e7434616c6c026e6c0000010001 +b06f8000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +29590 +16c00000000100000000000009652d6c756e61746963026e6c0000010001 +16c08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +29591 +391700000001000000000000036e733503777873026e6c0000010001 +391780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +29592 +f03f0000000100000000000008657361636f6d343405657374656303657361026e6c0000010001 +f03f8000000100000003000008657361636f6d343405657374656303657361026e6c0000010001c01b0002000100015180000e04646e73310365736103696e7400c01b0002000100015180000704646e7332c038c01b0002000100015180000704646e7333c038 + +29593 +50020000000100000000000003707265096c696d627572676572026e6c0000010001 +50028000000100000002000203707265096c696d627572676572026e6c0000010001c0100002000100015180000b036e73310477656233c01ac01000020001000151800006036e7332c032c02e00010001000151800004d436240ec04500010001000151800004c2b262ef + +29594 +640a0000000100000000000006636861726973026e6c0000ff0001 +640a8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29595 +701500000001000000000000036e733203757063026e6c0000010001 +701580000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +29596 +21b0000000010000000000000377777712766f726d612d6575726f70612d72616d656e026e6c0000010001 +21b0800000010000000200020377777712766f726d612d6575726f70612d72616d656e026e6c0000010001c0100002000100015180000e036e733107647265636f6d6dc023c01000020001000151800006036e7332c03bc03700010001000151800004d5c42546c05100010001000151800004d5c42547 + +29597 +30c500000001000000000000046d61696c076575726f6e6574026e6c0000010001 +30c580000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +29598 +6bf30000000100000000000003777777106e767a2d7a69656b656e6875697a656e026e6c0000010001 +6bf38000000100000002000203777777106e767a2d7a69656b656e6875697a656e026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c021c01000020001000151800006036e7332c038c03500010001000151800004c3402003c04e00010001000151800004c340202b + +29599 +8de300000001000000000000037777770e736368616b656c61726d62616e64026e6c0000010001 +8de380000001000000020000037777770e736368616b656c61726d62616e64026e6c0000010001c0100002000100015180000c026e7306766576696461c01fc01000020001000151800006036e7332c036 + +29600 +33030000000100000000000005646e732d31056c61646f74026e6c0000010001 +33038000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29601 +b3220000000100000000000005646e732d32056c61646f74026e6c0000010001 +b3228000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29602 +70df0000000100000000000008686f73746e616d650462696e640000100003 +70df8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +29603 +007b00000001000000000000036e7333076e6574666c6578026e6c0000010001 +007b80000001000000030003036e7333076e6574666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c26d5ba8c03e00010001000151800004507f2f25c00c00010001000151800004507ede20 + +29604 +772a000000010000000000000861647365727665720677656d6e6574026e6c0000010001 +772a800000010000000300030861647365727665720677656d6e6574026e6c0000010001c01500020001000151800010036e733109776973652d67757973c01cc01500020001000151800006036e7330c034c01500020001000151800006036e7332c034c03000010001000151800004d413cd91c04c00010001000151800004d413cd8fc05e00010001000151800004c16d7a3e + +29605 +8a5c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +8a5c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29606 +f32b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +f32b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29607 +123300000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +123380000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29608 +33a900000001000000000000036e73320f444f4d41494e2d5245474953545259026e6c00001c0001 +33a980000001000000030002036e73320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29609 +02fb00000001000000000000026e730f444f4d41494e2d5245474953545259026e6c00001c0001 +02fb80000001000000030002026e730f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +29610 +0c1e000000010000000000000861647365727665720677656d6e6574026e6c0000010001 +0c1e800000010000000300030861647365727665720677656d6e6574026e6c0000010001c01500020001000151800010036e733109776973652d67757973c01cc01500020001000151800006036e7330c034c01500020001000151800006036e7332c034c03000010001000151800004d413cd91c04c00010001000151800004d413cd8fc05e00010001000151800004c16d7a3e + +29611 +63db00000001000000000000056d656c7661026e6c00000f0001 +63db84030001000000010000056d656c7661026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +29612 +7b7000000001000000000000026e73096379626572636f6d6d026e6c0000010001 +7b7080000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +29613 +b75900000001000000000000036e7332096379626572636f6d6d026e6c0000010001 +b75980000001000000030003036e7332096379626572636f6d6d026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303c06300010001000151800004c277e953 + +29614 +6c7b000000010000000000000e6d6f6475732d6361746572696e67026e6c00000f0001 +6c7b800000010000000200020e6d6f6475732d6361746572696e67026e6c00000f0001c00c0002000100015180000f036e73330874656c6562797465c01bc00c00020001000151800006036e7334c033c02f00010001000151800004d5d38115c04a00010001000151800004d5d38116 + +29615 +8e7500000001000000000000037777770c68617262657273766f6c766f026e6c0000010001 +8e7584030001000000010000037777770c68617262657273766f6c766f026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +29616 +1ef700000001000000000000036e7332076e656473746174026e6c0000010001 +1ef780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29617 +65a600000001000000000000036e7332076e656473746174026e6c0000260001 +65a680000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29618 +b2d300000001000000000000036e7334076e656473746174026e6c0000010001 +b2d380000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29619 +644900000001000000000000036e7334076e656473746174026e6c0000260001 +644980000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +29620 +659800000001000000000000036673310b776567656e626f757769630662616d6e626d026e6c0000010001 +659880000001000000020000036673310b776567656e626f757769630662616d6e626d026e6c0000010001c01c0002000100015180000d036e7331036b706e036e657400c01c00020001000151800006036e7332c03b + +29621 +07fb0010000100000000000103777777087063616b74696566026e6c00000100010000290800000080000000 +07fb8000000100000002000303777777087063616b74696566026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d09630000291000000000000000 + +29622 +57840000000100000000000003777777086164756c74746770026e6c0000010001 +57848000000100000003000203777777086164756c74746770026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +29623 +f896000000010000000000000872696a7377696a6b026e6c00000f0001 +f896800000010000000200010872696a7377696a6b026e6c00000f0001c00c0002000100015180000e036e7331076e6564636f6d70c015c00c00020001000151800011036e7332076e6564636f6d70036f726700c02900010001000151800004c3c1a80d + +29624 +adff0000000100000000000004646e73320471776562026e6c0000010001 +adff8000000100000002000204646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +29625 +8d800000000100000000000004646e73310471776562026e6c0000010001 +8d808000000100000002000204646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +29626 +ba7b0000000100000000000005616e67656c0c726567696f706f7274616c73026e6c0000010001 +ba7b8000000100000003000305616e67656c0c726567696f706f7274616c73026e6c0000010001c01200020001000151800010036e733109776973652d67757973c01fc01200020001000151800006036e7330c037c01200020001000151800006036e7332c037c03300010001000151800004d413cd91c04f00010001000151800004d413cd8fc06100010001000151800004c16d7a3e + +29627 +8c8b00000001000000000000096d61676e6574726f6e0c696e7465726e657473686f70026e6c0000010001 +8c8b80000001000000020002096d61676e6574726f6e0c696e7465726e657473686f70026e6c0000010001c0160002000100015180000d026e730763697374726f6ec023c01600020001000151800006036e7332c03ac037000100010001518000043ed81f37c050000100010001518000043ed81f38 + +29628 +c9da00100001000000000001034e53320743495354524f4e024e4c00000100010000290800000000000000 +c9da80000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +29629 +71ca000000010000000000000a76726f6d6463632d636d026e6c00000f0001 +71ca840300010000000100000a76726f6d6463632d636d026e6c00000f0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +29630 +915800000001000000000000066865746e6574026e6c0000ff0001 +915880000001000000030003066865746e6574026e6c0000ff0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +29631 +e4ed00000001000000000000034e53320743495354524f4e024e4c0000010001 +e4ed80000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +29632 +5a9d000000010000000000000e6472756b6b6572696a2d6d6f6e73026e6c00001c0001 +5a9d800000010000000200000e6472756b6b6572696a2d6d6f6e73026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c035 + +29633 +d4160000000100000000000004666e6574026e6c0000010001 +d4168000000100000002000104666e6574026e6c0000010001c00c0002000100015180000704666e6574c00cc00c0002000100015180000d036e7332036b706e036e657400c02500010001000151800004c1ac2b01 + +29634 +d5810000000100000000000003777777066c6f6e646f6e026e6c0000010001 +d5818000000100000003000003777777066c6f6e646f6e026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02f + +29635 +b398000000010000000000000565666e657406787334616c6c026e6c0000010001 +b398800000010000000300020565666e657406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +29636 +d2b6000000010000000000000763736e747372760763736e74737276026e6c0000010001 +d2b6840300010000000100000763736e747372760763736e74737276026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +29637 +799a00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +799a80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +29638 +ebc60000000100000000000003777777086c65747373746174026e6c0000010001 +ebc68000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +29639 +1e2200100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +1e2280000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +29640 +94eb00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +94eb80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +29641 +053000000001000000000000037777770667616d656e75026e6c0000010001 +053080000001000000030000037777770667616d656e75026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c030c01000020001000151800007046e733033c030 + +29642 +589d00000001000000000000037777770d7472757374796f757265796573026e6c0000010001 +589d80000001000000030000037777770d7472757374796f757265796573026e6c0000010001c01000020001000151800014036e73310a616c6c646f6d61696e7303636f6d00c01000020001000151800006036e7333c036c01000020001000151800006036e7334c036 + +29643 +74e200000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +74e280000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +29644 +9db600000001000000000000026e730469776179026e6c0000010001 +9db680000001000000020001026e730469776179026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000c026e730364796e036f726700c00c00010001000151800004c14e1e04 + +29645 +6e970000000100000000000006636f6e73756c026e6c00000f0001 +6e978000000100000002000006636f6e73756c026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +29646 +676100000001000000000000056d61696c320775747265636874026e6c0000010001 +676180000001000000020000056d61696c320775747265636874026e6c0000010001c0120002000100015180000b026e73026e6c036e657400c0120002000100015180001206617574683630026e73026e6c027575c034 + +29647 +975400000001000000000000036e73320c616c6c736f6c7574696f6e73026e6c0000010001 +975480000001000000020001036e73320c616c6c736f6c7574696f6e73026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000d036e7332036b706e036e657400c03100010001000151800004c1ad1574 + +29648 +cbaa00000001000000000000036e73320c616c6c736f6c7574696f6e73026e6c0000260001 +cbaa80000001000000020001036e73320c616c6c736f6c7574696f6e73026e6c0000260001c01000020001000151800006036e7331c010c0100002000100015180000d036e7332036b706e036e657400c03100010001000151800004c1ad1574 + +29649 +eb580000000100000000000005646e732d31056c61646f74026e6c0000010001 +eb588000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29650 +336e0000000100000000000003777777046b6f7469026e6c0000010001 +336e8000000100000002000003777777046b6f7469026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +29651 +1cf6000000010000000000000377777711636f6e7261642d656c656374726f6e6963026e6c0000010001 +1cf6800000010000000200020377777711636f6e7261642d656c656374726f6e6963026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c022c01000020001000151800006036e7332c03ac0360001000100015180000450416028c05100010001000151800004c356780c + +29652 +ffa500000001000000000000037777770972616d737465696a6e026e6c0000010001 +ffa580000001000000020002037777770972616d737465696a6e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +29653 +0d3d000000010000000000000377777706676f2d677073026e6c0000010001 +0d3d800000010000000200000377777706676f2d677073026e6c0000010001c01000020001000151800014036e73310a6d69686f736e65742d3603636f6d00c01000020001000151800006036e7332c02f + +29654 +397b000000010000000000000663616e646561026e6c0000ff0001 +397b800000010000000300030663616e646561026e6c0000ff0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +29655 +5c370000000100000000000003777777076c6f6e67613539026e6c0000010001 +5c378000000100000002000003777777076c6f6e67613539026e6c0000010001c0100002000100015180000f036e7331056d79736d74036e657400c01000020001000151800006036e7332c030 + +29656 +a6a20000000100000000000011716e2d3231332d37332d3137362d31303108717569636b6e6574026e6c0000010001 +a6a28000000100000003000211716e2d3231332d37332d3137362d31303108717569636b6e6574026e6c0000010001c01e00020001000151800011036e73310a6d756c74696b6162656cc027c01e00020001000151800006036e7332c03fc01e00020001000151800014036e73300a6d756c74696b6162656c036e657400c03b0001000100015180000450f2e002c0580001000100015180000450f2e006 + +29657 +4db20000000100000000000006666f72616c6c026e6c00000f0001 +4db28000000100000002000206666f72616c6c026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +29658 +749300000001000000000000037777770b6265726b656e686f727374026e6c0000010001 +749380000001000000020000037777770b6265726b656e686f727374026e6c0000010001c01000020001000151800012036e733109686f737467726f7570026e7500c01000020001000151800006036e7332c034 + +29659 +22eb00000001000000000000037777770d64696a6b2d76617374676f6564026e6c0000010001 +22eb80000001000000020000037777770d64696a6b2d76617374676f6564026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c039 + +29660 +c76400000001000000000000037777771768696c646572696e672d626c696b656d62616c6c616765026e6c0000010001 +c76480000001000000020002037777771768696c646572696e672d626c696b656d62616c6c616765026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec028c01000020001000151800006036e7332c040c03c00010001000151800004c29f4906c05400010001000151800004c29fb004 + +29661 +b86d000000010000000000000b6b61617274656e68756973026e6c00000f0001 +b86d800000010000000300030b6b61617274656e68756973026e6c00000f0001c00c00020001000151800009036e7331027a73c018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004d5ef829fc04100010001000151800004d5ef8005c05300010001000151800004d5ef82a0 + +29662 +7ad80010000100000000000003777777106d696a6e687575727375627369646965026e6c0000010001 +7ad88000000100000002000103777777106d696a6e687575727375627369646965026e6c0000010001c0100002000100015180000e036e7331076d696e76726f6dc021c01000020001000151800006036e7332c039c0350001000100015180000493b51441 + +29663 +08d800000001000000000000037777770b736578706f736974696573026e6c0000010001 +08d880000001000000020002037777770b736578706f736974696573026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01cc01000020001000151800006036e7332c034c03000010001000151800004d4f1210bc04e00010001000151800004d4f1210c + +29664 +d7f400000001000000000000026e7304696d636f026e6c0000010001 +d7f480000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +29665 +de3000000001000000000000046d61696c127773702d6175746f6d617469736572696e67026e6c0000010001 +de3080000001000000020002046d61696c127773702d6175746f6d617469736572696e67026e6c0000010001c01100020001000151800012036e73310b676c6f62616c7369746573c024c01100020001000151800006036e7332c03cc03800010001000151800004d4cce37ac05600010001000151800004d94d8b0c + +29666 +ae5600000001000000000000037777770472656f6e026e6c0000010001 +ae5680000001000000020000037777770472656f6e026e6c0000010001c01000020001000151800017036e73310d64757463687365727669636573036e657400c01000020001000151800006036e7332c02d + +29667 +c271000000010000000000000c7175657374696f6e6d617263026e6c00000f0001 +c271800000010000000200020c7175657374696f6e6d617263026e6c00000f0001c00c00020001000151800014036e73310d706f7765727365727665723230c019c00c00020001000151800006036e7332c031c02d000100010001518000045104711dc04d000100010001518000045104711e + +29668 +099800000001000000000000036e733203666a66026e6c0000010001 +099880000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29669 +099900000001000000000000036e733103666a66026e6c0000010001 +099980000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29670 +5709000000010000000000000767686f727a687a026e6c00000f0001 +5709800000010000000200000767686f727a687a026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c03e + +29671 +eb3c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +eb3c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29672 +6b32000000010000000000000377777708646572696d626f65026e6c0000010001 +6b32800000010000000200020377777708646572696d626f65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +29673 +583000000001000000000000037777770b64796e616d6f737461616c026e6c0000010001 +583080000001000000030001037777770b64796e616d6f737461616c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +29674 +21630000000100000000000005646e732d31056c61646f74026e6c0000010001 +21638000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29675 +af6b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +af6b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29676 +f4740000000100000000000003777777086264736d61676963026e6c0000010001 +f4748000000100000002000003777777086264736d61676963026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c019c0100002000100015180000805646e732d32c033 + +29677 +18ae00000001000000000000036e733106706167696e61026e6c0000010001 +18ae80000001000000030003036e733106706167696e61026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +29678 +974700000001000000000000036e733206706167696e61026e6c0000010001 +974780000001000000030003036e733206706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02b000100010001518000043e45a282c00c000100010001518000043e45a283c04b000100010001518000043e45a284 + +29679 +02b900000001000000000000036e733306706167696e61026e6c0000010001 +02b980000001000000030003036e733306706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02b000100010001518000043e45a282c03d000100010001518000043e45a283c00c000100010001518000043e45a284 + +29680 +944f0000000100000000000006706167696e61026e6c00000f0001 +944f8000000100000003000306706167696e61026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +29681 +28ed00000001000000000000066d6978666978026e6c00000f000100 +28ed80000001000000020002066d6978666978026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c013c00c00020001000151800006036e7332c02ac02700010001000151800004d453c005c04500010001000151800004d453c006 + +29682 +348f00000001000000000000146e69657577736272696576656e73657276696365026e6c00000f0001 +348f80000001000000030001146e69657577736272696576656e73657276696365026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +29683 +09b000000001000000000000036e733203666a66026e6c0000010001 +09b080000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29684 +09b100000001000000000000036e733103666a66026e6c0000010001 +09b180000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29685 +7cf4000000010000000000000c696b68656265656e69646565026e6c0000010001 +7cf4800000010000000200000c696b68656265656e69646565026e6c0000010001c00c0002000100015180001b036e733211706f7369746976652d696e7465726e657403636f6d00c00c00020001000151800006036e7333c031 + +29686 +06b700100001000000000001036e733207737572666e6574026e6c00000100010000290800000080000000 +06b780000001000000040004036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a650000291000000000000000 + +29687 +cf6600000001000000000000037777770e706370726976652d706167696e61026e6c0000010001 +cf6680000001000000020002037777770e706370726976652d706167696e61026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01fc01000020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +29688 +a52b00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +a52b80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29689 +833200000001000000000000153132332d7765622d686f73742d726573656c6c6572026e6c0000010001 +833280000001000000020000153132332d7765622d686f73742d726573656c6c6572026e6c0000010001c00c00020001000151800012036e7331087365727665722d3203636f6d00c00c00020001000151800006036e7332c03a + +29690 +d83900100001000000000001013603313434033137360331393307696e2d61646472046172706100000c00010000290800000000000000 +d83980020001000000000001013603313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +29691 +46ea001000010000000000000c74617869626f6f6e73747261026e6c00001c0001 +46ea800000010000000200000c74617869626f6f6e73747261026e6c00001c0001c00c00020001000151800023097765626d696e642d3108637573746f6d6572026e6c07656173796e6574036e657400c00c0002000100015180000d0763617466697368026e73c040 + +29692 +9b880000000100000000000015616c6c65736f7665727374657272656e6b756e6465026e6c0000010001 +9b888000000100000002000015616c6c65736f7665727374657272656e6b756e6465026e6c0000010001c00c00020001000151800015026e730c70656e67776562736974657303636f6d00c00c00020001000151800006036e7331c039 + +29693 +3a350010000100000000000106636861726973026e6c0000ff00010000290800000080000000 +3a358000000100000002000106636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +29694 +6a1200000001000000000000026e7306766576696461026e6c0000010001 +6a1280000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +29695 +3c9200000001000000000000096d797265616c697479026e6c00001c0001 +3c9280000001000000020000096d797265616c697479026e6c00001c0001c00c00020001000151800014036e73310a6d69686f736e65742d3803636f6d00c00c00020001000151800006036e7332c02e + +29696 +ced60000000100000000000007616d67726f6570026e6c00000f0001 +ced68000000100000003000307616d67726f6570026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c014c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02cc02800010001000151800004d5c98015c04300010001000151800004d5c9bf12c05500010001000151800004d5ef9c26 + +29697 +f53c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +f53c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29698 +0f1100000001000000000000026e73076e656473746174026e6c0000010001 +0f1180000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29699 +654f0000000100000000000009646573746172746572026e6c0000ff0001 +654f8000000100000002000209646573746172746572026e6c0000ff0001c00c0002000100015180000d036e7331066e6c74726565c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d4b20403c04300010001000151800004d5881e45 + +29700 +ec9e00000001000000000000037777770f6a6565636874656c65656674696a64026e6c0000010001 +ec9e80000001000000020001037777770f6a6565636874656c65656674696a64026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c020c01000020001000151800011036e7332076e6564636f6d70036f726700c03400010001000151800004c3c1a80d + +29701 +48a40000000100000000000005646e732d31056c61646f74026e6c0000010001 +48a48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29702 +0aa900000001000000000000036e733203666a66026e6c0000010001 +0aa980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29703 +0aaa00000001000000000000036e733103666a66026e6c0000010001 +0aaa80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29704 +4a99000000010000000000000974616e676572696e65026e6c00000f0001 +4a99800000010000000200010974616e676572696e65026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c016c00c00020001000151800010026e7307696e746f756368036e657400c02a00010001000151800004d413c001 + +29705 +49d900000001000000000000136465696e746572696575727469706765766572026e6c00000f0001 +49d980000001000000020002136465696e746572696575727469706765766572026e6c00000f0001c00c00020001000151800012036e73310b706c7573686f7374696e67c020c00c00020001000151800006036e7332c038c03400010001000151800004d994ae77c052000100010001518000045054ea06 + +29706 +f50e00000001000000000000037777770d652d70726f6772616d6d657572026e6c0000010001 +f50e80000001000000020002037777770d652d70726f6772616d6d657572026e6c0000010001c0100002000100015180000c036e7331056d756e6368c01ec01000020001000151800006036e7332c036c03200010001000151800004d5f73c96c04a00010001000151800004d5f73c97 + +29707 +672e00000001000000000000013603313434033137360331393307696e2d61646472046172706100000c0001 +672e80020001000000000000013603313434033137360331393307696e2d61646472046172706100000c0001 + +29708 +d5da00000001000000000000026e73066863636e6574026e6c0000010001 +d5da80000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +29709 +cae70000000100000000000006636861726973026e6c0000ff0001 +cae78000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29710 +d1930000000100000000000003777777067365786d6578026e6c0000010001 +d1938000000100000002000203777777067365786d6578026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac017c01000020001000151800006036e7332c02fc02b00010001000151800004d5efa011c04600010001000151800004d5efa075 + +29711 +5e9a00000001000000000000037777770a7665726c656e67696e67026e6c0000010001 +5e9a80000001000000020000037777770a7665726c656e67696e67026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c036 + +29712 +7835000000010000000000000462666363026e6c00000f0001 +7835800000010000000200020462666363026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +29713 +36800000000100000000000009652d6c756e61746963026e6c0000010001 +36808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +29714 +f22300000001000000000000037777770767617a656c6c65026e6c0000010001 +f22380000001000000030003037777770767617a656c6c65026e6c0000010001c0100002000100015180000e076e73617574683103626974c018c0100002000100015180000a076e736175746832c034c0100002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +29715 +34d80000000100000000000005646e732d31056c61646f74026e6c0000010001 +34d88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29716 +364b000000010000000000000663616e646561026e6c0000ff0001 +364b800000010000000300030663616e646561026e6c0000ff0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +29717 +0b2f00000001000000000000056961656876026e6c00000f0001 +0b2f80000001000000020002056961656876026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +29718 +0332000000010000000000000669626d61696c026e6c00000f0001 +0332800000010000000200000669626d61696c026e6c00000f0001c00c00020001000151800014036e7331026e6c07656e6572676973036e657400c00c00020001000151800006036e7332c02b + +29719 +8d3f00000001000000000000095f6b65726265726f73045f746370026463065f6d736463730a64766d656469616b6773026e6c0000060001 +8d3f84030001000000010000095f6b65726265726f73045f746370026463065f6d736463730a64766d656469616b6773026e6c0000060001c03000060001000038400036026e730f646f6d61696e2d7265676973747279c0300a686f73746d6173746572c0470bf1e540000070800000384000278d0000003840 + +29720 +994b00000001000000000000036e733103706777026e6c0000010001 +994b80000001000000020002036e733103706777026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e818832c03600010001000151800004d4ccc621 + +29721 +d59700000001000000000000036e733203706777026e6c0000010001 +d59780000001000000020002036e733203706777026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000043e818832c00c00010001000151800004d4ccc621 + +29722 +f1230000000100000000000003777777046b6e6873026e6c0000010001 +f1238000000100000002000203777777046b6e6873026e6c0000010001c01000020001000151800012036e73310b72656e61697373616e6365c015c01000020001000151800006036e7332c02dc02900010001000151800004d4ccc4efc04700010001000151800004d4ccc4f0 + +29723 +2c8900000001000000000000036e73340767617574656e67026e6c0000010001 +2c8980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29724 +2c9600000001000000000000036e73330767617574656e67026e6c0000010001 +2c9680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29725 +cd3f0000000100000000000008737073656172636804696c7365026e6c0000010001 +cd3f8000000100000003000308737073656172636804696c7365026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02e000100010001518000043e45a282c040000100010001518000043e45a283c052000100010001518000043e45a284 + +29726 +1add00000001000000000000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730d686172746f672d696e7465726e026e6c0000060001 +1add84030001000000010000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730d686172746f672d696e7465726e026e6c0000060001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +29727 +a30900000001000000000000026e73076e656473746174026e6c0000010001 +a30980000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29728 +a95c00000001000000000000036e7333076e656473746174026e6c0000010001 +a95c80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +29729 +8549000000010000000000000b626f6c616e647061727479026e6c00000f0001 +8549800000010000000200000b626f6c616e647061727479026e6c00000f0001c00c0002000100015180000e036e73310464697661036e657400c00c00020001000151800006036e7332c030 + +29730 +564828000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730a64766d656469616b6773026e6c000021000100000258001d0000006400580764766d746b67730a64766d656469616b6773026e6c00 +5648a8040000000000000000 + +29731 +0aa200000001000000000000036e733203666a66026e6c0000010001 +0aa280000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29732 +a2270000000100000000000003777777126c65756b7765726b74776f726c6477696465026e6c0000010001 +a2278000000100000003000203777777126c65756b7765726b74776f726c6477696465026e6c0000010001c0100002000100015180000d036e733106776964657873c023c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03bc03700010001000151800004d4ccc0fcc06c000100010001518000043efa0703 + +29733 +0aa300000001000000000000036e733103666a66026e6c0000010001 +0aa380000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +29734 +ef6a0000000100000000000007636f6e74656e74026e6c00000f0001 +ef6a8000000100000002000007636f6e74656e74026e6c00000f0001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c02d + +29735 +571600000001000000000000037777770b667265646d6f746f72656e026e6c0000010001 +571680000001000000020000037777770b667265646d6f746f72656e026e6c0000010001c0100002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0100002000100015180000d077669312d6e7330026174c03b + +29736 +5f6f000000010000000000000377777705647579656e026e6c0000010001 +5f6f800000010000000200000377777705647579656e026e6c0000010001c01000020001000151800015046c796e780a737061726b6c6569637403636f6d00c0100002000100015180000906646f7261646fc02f + +29737 +000000007002400069e100000204056401010402 +000080010000000000000000 + +29738 +bb3c0000000100000000000003777777066465736c6574026e6c0000010001 +bb3c8000000100000002000003777777066465736c6574026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c02f + +29739 +3ae3000000010000000000000377777709626f6f676965626172026e6c0000010001 +3ae3800000010000000200000377777709626f6f676965626172026e6c0000010001c01000020001000151800010036e7331066969686f73740362697a00c01000020001000151800006036e7332c032 + +29740 +576f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +576f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29741 +13fa0000000100000000000005646e732d32056c61646f74026e6c0000010001 +13fa8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29742 +6d8500000001000000000000036e7332056132303030026e6c0000010001 +6d8580000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +29743 +a1fe0000000100000000000004777777330976657267656c696a6b026e6c0000010001 +a1fe8000000100000003000204777777330976657267656c696a6b026e6c0000010001c0110002000100015180000d036e733106776964657873c01bc01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +29744 +5f1900000001000000000000116b616e746f6f726d657562656c6c616e64026e6c00000f0001 +5f1980000001000000020002116b616e746f6f726d657562656c6c616e64026e6c00000f0001c00c0002000100015180001005766164657207626f736b616e74c01ec00c0002000100015180000a036e7332036e7873c01ec03200010001000151800004d973c27ac04e00010001000151800004d973c102 + +29745 +b6630195501040b0dd9c0000000000000000 +b66380010000000000000000 + +29746 +2c8a00000001000000000000037777770767617a656c6c65026e6c0000010001 +2c8a80000001000000030003037777770767617a656c6c65026e6c0000010001c0100002000100015180000e076e73617574683103626974c018c0100002000100015180000a076e736175746832c034c0100002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +29747 +b6630195501840b030e7000000900ca7000000010001000000000f313136383233313130343533302d330000f900010f313136383233313130343533302d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403afdf8403c4f780003000000314e544c4d535350000100000097b200e00a000a0027000000070007002000000044564d544b475344564d454449414b47530000 +b66380010000000000000000 + +29748 +a5080000000100000000000005646e732d31056c61646f74026e6c0000010001 +a5088000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29749 +420800000001000000000000026e73036d6c63026e6c0000010001 +420880000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +29750 +43540000000100000000000005646e732d32056c61646f74026e6c0000010001 +43548000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29751 +b66301a3501140a2dd090000000000000000 +b66380010000000000000000 + +29752 +a50c0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +a50c8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29753 +01a128000001000200000000026e6c00000600010777696e326b7063066b70746573740877696e326b73716c026e6c00000500fe000000000000c01400010001000000000004c0a81528 +01a1a8040000000000000000 + +29754 +0000000070024000ecb600000204056401010402 +000080010000000000000000 + +29755 +7a450000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7a458000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29756 +b66301a4501040a2dd080000000000000000 +b66380010000000000000000 + +29757 +08770000000100000000000005646e732d31056c61646f74026e6c0000010001 +08778000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29758 +ed8e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +ed8e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29759 +000000007002fc00a4280000020405b401010402 +000080010000000000000000 + +29760 +b663a87e501040b0b9880000000000000000 + + +29761 +f64d0000000100000000000003777777086575726f6b6c696b026e6c0000010001 +f64d8000000100000002000103777777086575726f6b6c696b026e6c0000010001c0100002000100015180000e026e73086575726f636c6978c019c01000020001000151800012036e7332086575726f636c697803636f6d00c02d00010001000151800004d47bc685 + +29762 +b66453ed5010fc00c68a0000000000000000 +b664d3e40000000000000000 + +29763 +be9800000001000000000000036e7331076970746f776572026e6c0000010001 +be9880000001000000020002036e7331076970746f776572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ecc4065c03a000100010001518000043ecc4066 + +29764 +b66453ed5018fc0070e60000008abe78000000010001000000000e3939363433323431323639302d330000f900010e3939363433323431323639302d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403af9c5403c4b4500030000002d4e544c4d535350000100000097b200e00600060027000000070007002000000057494e324b50434b50544553540000 +b664d3e40000000000000000 + +29765 +2fc900000001000000000000036e7332076970746f776572026e6c0000010001 +2fc980000001000000020002036e7332076970746f776572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043ecc4065c00c000100010001518000043ecc4066 + +29766 +7bd1000000010000000000000e6b65726d69736d6167617a696a6e026e6c0000010001 +7bd1800000010000000200000e6b65726d69736d6167617a696a6e026e6c0000010001c00c0002000100015180000f036e7331086e6574736861726bc01bc00c00020001000151800006036e7332c033 + +29767 +b66453fb5011fbf2c5fd0000000000000000 +b664d3f40000000000000000 + +29768 +40ed000000010000000000000870616c6d636c7562026e6c0000010001 +40ed800000010000000300030870616c6d636c7562026e6c0000010001c00c00020001000151800010036e733109657863657074696f6ec015c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02dc02900010001000151800004d5c9a38cc04500010001000151800004d5c9a38dc05700010001000151800004d5c9af03 + +29769 +b663a87e501840b0d705000000904375000000010001000000000f313136383233313130343533302d320000f900010f313136383233313130343533302d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afdf8403c4f780003000000314e544c4d535350000100000097b200e00a000a0027000000070007002000000044564d544b475344564d454449414b47530000 + + +29770 +961300000001000000000000046d61696c0d627269746973687363686f6f6c026e6c0000010001 +961380000001000000020000046d61696c0d627269746973687363686f6f6c026e6c0000010001c01100020001000151800010026e730777697265687562036e657400c01100020001000151800006036e7332c036 + +29771 +b66453fc5010fbf2c5fc0000000000000000 +b664d3f40000000000000000 + +29772 +000000007002fc00de6d0000020405b401010402 +000080010000000000000000 + +29773 +b6654c635010fc0008590000000000000000 +b665cc640000000000000000 + +29774 +b663a88c501140a2b8f50000000000000000 + + +29775 +b6654c635018fc00072d0000008a6c00000000010001000000000e3939363433323431323639302d320000f900010e3939363433323431323639302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403af9c5403c4b4500030000002d4e544c4d535350000100000097b200e00600060027000000070007002000000057494e324b50434b50544553540000 +b665cc640000000000000000 + +29776 +00000000700240002f9000000204056401010402 +000080010000000000000000 + +29777 +b8ed00100001000000000001066170616368650962617365667265616b026e6c00000100010000290800000000000000 +b8ed80000001000000030004066170616368650962617365667265616b026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c03100010001000151800004c32fdc83c042000100010001518000045054f998c05400010001000151800004c16d7adb0000291000000000000000 + +29778 +b6654c715011fbf207cc0000000000000000 +b665cc740000000000000000 + +29779 +1aa000000001000000000000037777770d64656b726f65676f6e6c696e65026e6c0000010001 +1aa080000001000000020002037777770d64656b726f65676f6e6c696e65026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01ec01000020001000151800006036e7332c036c032000100010001518000045104580ac052000100010001518000045104601e + +29780 +b6654c725010fbf207cb0000000000000000 +b665cc740000000000000000 + +29781 +76040000000100000000000005746c6774650a7061797065726e657773026e6c0000010001 +76048000000100000002000205746c6774650a7061797065726e657773026e6c0000010001c01200020001000151800010036e733109652d666163746f7279c01dc01200020001000151800006036e7332c035c03100010001000151800004c1fefe82c04d00010001000151800004c1feff82 + +29782 +2bbd0000000100000000000006706f6e636172026e6c00001c0001 +2bbd8000000100000002000006706f6e636172026e6c00001c0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +29783 +b16000000001000000000000046162656c0564656d6f6e026e6c00001c0001 +b16080000001000000030002046162656c0564656d6f6e026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +29784 +25190000000100000000000007414c4255494c4403444c4c05626f6f6f72026e6c0000010001 +25198403000100000001000007414c4255494c4403444c4c05626f6f6f72026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +29785 +5d0e00000001000000000000037777770a686f6f6664746f72656e026e6c0000010001 +5d0e80000001000000020002037777770a686f6f6664746f72656e026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +29786 +b663a88d501040a2b8f40000000000000000 + + +29787 +000000007002fc0083840000020405b401010402 +000080010000000000000000 + +29788 +eb9200000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +eb9280000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +29789 +879900000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +879980000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29790 +b6663c2f501040b068ae0000000000000000 +b666bc240000000000000000 + +29791 +b666fe1c5010fc00fbb40000000000000000 + + +29792 +2df500000001000000000000046d61696c0c637261656e656e6265726768026e6c0000010001 +2df580000001000000020002046d61696c0c637261656e656e6265726768026e6c0000010001c0110002000100015180000e036e73310768656262697a7ac01ec01100020001000151800006036e7332c036c03200010001000151800004c372eb42c04c000100010001518000043e320e91 + +29793 +b666fe1c5018fc007cc80000008ae9c0000000010001000000000e3939363433323431323639302d320000f900010e3939363433323431323639302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403af9c5403c4b4500030000002d4e544c4d535350000100000097b200e00600060027000000070007002000000057494e324b50434b50544553540000 + + +29794 +da66000000010000000000000b70726f64756374706c7573026e6c00000f0001 +da66800000010000000200020b70726f64756374706c7573026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +29795 +b666fe2a5011fbf2fb270000000000000000 + + +29796 +b666fe2b5010fbf2fb260000000000000000 + + +29797 +b6663c2f501840b04f5d000000907a43000000010001000000000f313136383233313130343533302d320000f900010f313136383233313130343533302d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403afdf8403c4f780003000000314e544c4d535350000100000097b200e00a000a0027000000070007002000000044564d544b475344564d454449414b47530000 +b666bc240000000000000000 + +29798 +3ca400000001000000000000036e73330767617574656e67026e6c0000010001 +3ca480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29799 +b9df00000001000000000000026e730673656e746961026e6c0000010001 +b9df80000001000000020002026e730673656e746961026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c0001000100015180000450fd695ac03800010001000151800004d4cce917 + +29800 +fc5500000001000000000000036e73320673656e746961026e6c0000010001 +fc5580000001000000020002036e73320673656e746961026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b0001000100015180000450fd695ac00c00010001000151800004d4cce917 + +29801 +b6663c3d501140a2681b0000000000000000 +b666bc340000000000000000 + +29802 +48d30000000100000000000006636861726973026e6c00000f0001 +48d38000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29803 +b0d5000000010000000000000b616c6d6572652d63697479026e6c0000010001 +b0d5800000010000000200010b616c6d6572652d63697479026e6c0000010001c00c0002000100015180000d0368676e06787334616c6cc018c00c00020001000151800012036e73330b61747a2d686f7374696e67c018c04500010001000151800004d973c483 + +29804 +6b60000000010000000000000477697368026e6c00000f0001 +6b60800000010000000300020477697368026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +29805 +b6663c3e501040a2681a0000000000000000 +b666bc340000000000000000 + +29806 +980a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +980a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29807 +8b4000000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +8b4080000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29808 +015300000001000000000000037777770b6b726f6f6e6b6f7a696a6e026e6c0000010001 +015380000001000000020002037777770b6b726f6f6e6b6f7a696a6e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +29809 +f371000000010000000000000c616c66612d636f6c6c656765026e6c0000010001 +f371800000010000000200020c616c66612d636f6c6c656765026e6c0000010001c00c0002000100015180000d036e7331066e6c74726565c019c00c00020001000151800006036e7332c031c02d00010001000151800004d4b20403c04600010001000151800004d5881e45 + +29810 +130d00000001000000000000037777770b776561746865726e657773026e6c00001c0001 +130d80000001000000020002037777770b776561746865726e657773026e6c00001c0001c01000020001000151800009026e73036f6b65c01cc01000020001000151800006036e7332c033c03000010001000151800004c13acc3bc04500010001000151800004c13acc27 + +29811 +bbc10000000100000000000003777777086575726f6b6c696b026e6c0000010001 +bbc18000000100000002000103777777086575726f6b6c696b026e6c0000010001c0100002000100015180000e026e73086575726f636c6978c019c01000020001000151800012036e7332086575726f636c697803636f6d00c02d00010001000151800004d47bc685 + +29812 +4b7900000001000000000000066170616368650962617365667265616b026e6c0000010001 +4b7980000001000000030003066170616368650962617365667265616b026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c03100010001000151800004c32fdc83c042000100010001518000045054f998c05400010001000151800004c16d7adb + +29813 +c60100000001000000000000036e73310564656d6f6e026e6c00001c0001 +c60180000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +29814 +158800000001000000000000036e73320564656d6f6e026e6c00001c0001 +158880000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +29815 +49160000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000260001 +49168000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000260001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +29816 +985d000000010000000000000e76616e2d6465722d7363686161720564656d6f6e026e6c00000f0001 +985d800000010000000300020e76616e2d6465722d7363686161720564656d6f6e026e6c00000f0001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc01b0002000100015180000f036e73320564656d6f6e036e657400c03500010001000151800004c29f4906c04700010001000151800004c29fb004 + +29817 +23c200000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373036465700b65696c616e64686f6f6664026e6c0000210001 +23c284030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373036465700b65696c616e64686f6f6664026e6c0000210001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +29818 +b87a00000001000000000000026e7304696d636f026e6c0000010001 +b87a80000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +29819 +afd80000000100000000000006636861726973026e6c00000f0001 +afd88000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +29820 +e946000000010000000000000377777703783278026e6c0000010001 +e946800000010000000200000377777703783278026e6c0000010001c01000020001000151800015036e73310b7375706572646f6d65696e036e657400c01000020001000151800006036e7332c02c + +29821 +4f2e00000001000000000000055f6c646170045f746370026463065f6d73646373036465700b65696c616e64686f6f6664026e6c0000210001 +4f2e84030001000000010000055f6c646170045f746370026463065f6d73646373036465700b65696c616e64686f6f6664026e6c0000210001c03100060001000038400036026e730f646f6d61696e2d7265676973747279c0310a686f73746d6173746572c0480bf1e540000070800000384000278d0000003840 + +29822 +8b5f000000010000000000000773747564656e7409696e686f6c6c616e64026e6c00000f0001 +8b5f800000010000000200020773747564656e7409696e686f6c6c616e64026e6c00000f0001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c2ab230bc04400010001000151800004c0576a65 + +29823 +cc5d000000010000000000000777656273686f700a63656e74657234616c6c026e6c0000010001 +cc5d800000010000000200020777656273686f700a63656e74657234616c6c026e6c0000010001c0140002000100015180000b036e73610462797465c01fc01400020001000151800006036e7362c037c03300010001000151800004d977e520c04a00010001000151800004d977e521 + +29824 +5bca000000010000000000000c7374617469737469656b656e0a636f6d70757365727665026e6c0000010001 +5bca800000010000000200000c7374617469737469656b656e0a636f6d70757365727665026e6c0000010001c0190002000100015180001f0e61726c2d6e616d652d7376632d310a636f6d7075736572766503636f6d00c019000200010001518000110e6475622d6e616d652d7376632d31c047 + +29825 +bd4b0000000100000000000003777777056e69696f63026e6c0000010001 +bd4b8000000100000002000203777777056e69696f63026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c016c01000020001000151800006036e7332c02ec02a000100010001518000045054ed14c04700010001000151800004d5f72f14 + +29826 +7a740000000100000000000003777777056e69696f63026e6c0000010001 +7a748000000100000002000203777777056e69696f63026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c016c01000020001000151800006036e7332c02ec02a000100010001518000045054ed14c04700010001000151800004d5f72f14 + +29827 +74f900000001000000000000037777770e7065726f6d6f746f727061727473026e6c0000010001 +74f980000001000000030002037777770e7065726f6d6f746f727061727473026e6c0000010001c0100002000100015180000d036e733106776964657873c01fc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c037c03300010001000151800004d4ccc0fcc068000100010001518000043efa0703 + +29828 +026900000001000000000000055f6c646170045f74637003706463065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001 +026984030001000000010000055f6c646170045f74637003706463065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001c03400060001000038400036026e730f646f6d61696e2d7265676973747279c0340a686f73746d6173746572c04b0bf1e540000070800000384000278d0000003840 + +29829 +09be00000001000000000000055f6c646170045f746370026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001 +09be84030001000000010000055f6c646170045f746370026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001c03300060001000038400036026e730f646f6d61696e2d7265676973747279c0330a686f73746d6173746572c04a0bf1e540000070800000384000278d0000003840 + +29830 +9de500000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001 +9de584030001000000010000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +29831 +02cd00000001000000000000026e730f444f4d41494e2d5245474953545259026e6c00001c0001 +02cd80000001000000030002026e730f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +29832 +2bb800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +2bb880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29833 +fcf400000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +fcf480000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +29834 +97f00000000100000000000008657273656c696e61026e6c00000f0001 +97f08000000100000003000308657273656c696e61026e6c00000f0001c00c00020001000151800011036e73310a74727565736572766572c015c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02dc02900010001000151800004d5ef8003c04600010001000151800004d5efb004c05800010001000151800004d5ef8005 + +29835 +855e00000001000000000000055f6c646170045f7463702466333533366532302d663264362d343531312d386430362d33643532383331643639326607646f6d61696e73065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001 +855e84030001000000010000055f6c646170045f7463702466333533366532302d663264362d343531312d386430362d33643532383331643639326607646f6d61696e73065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001c05d00060001000038400036026e730f646f6d61696e2d7265676973747279c05d0a686f73746d6173746572c0740bf1e540000070800000384000278d0000003840 + +29836 +3d7f000000010000000000000d6f73696e67612d626f656b656e026e6c0000ff0001 +3d7f800000010000000200000d6f73696e67612d626f656b656e026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c034 + +29837 +980700000001000000000000037777770d72656e746d6565737465726974026e6c0000010001 +980780000001000000020002037777770d72656e746d6565737465726974026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +29838 +bfde00000001000000000000037777770b6b616e6f76657268757572026e6c0000010001 +bfde80000001000000020002037777770b6b616e6f76657268757572026e6c0000010001c01000020001000151800013036e73310c666173747365727665723138c01cc01000020001000151800006036e7332c034c0300001000100015180000442a4fa76c04f0001000100015180000442a4fa7f + +29839 +1d4300000001000000000000026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001 +1d4384030001000000010000026763065f6d73646373116d6963726f6d6178636f6d707574657273026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +29840 +1cd600000001000000000000026264026e6c0000ff0001 +1cd680000001000000020000026264026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +29841 +bac40000000100000000000003777777097265696b696875676f026e6c0000010001 +bac48000000100000002000003777777097265696b696875676f026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +29842 +c29f0000000100000000000003777777056173746d610c7665727a616d656c67696473026e6c0000010001 +c29f8000000100000002000003777777056173746d610c7665727a616d656c67696473026e6c0000010001c01600020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01600020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +29843 +10ff0000000100000000000003777777056173746d610c7665727a616d656c67696473026e6c0000010001 +10ff8000000100000002000003777777056173746d610c7665727a616d656c67696473026e6c0000010001c01600020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01600020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +29844 +3b8d000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +3b8d800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +29845 +d04400000001000000000000037777770d616d682d6d616b656c61617273026e6c0000010001 +d04480000001000000030000037777770d616d682d6d616b656c61617273026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c036c01000020001000151800006036e7333c036 + +29846 +c4db0000000100000000000006787334616c6c026e6c00000f0001 +c4db8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +29847 +1c5900000001000000000000036e733203656964026e6c0000010001 +1c5980000001000000020002036e733203656964026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000452c048b6c00c0001000100015180000452c048ba + +29848 +6b8500000001000000000000036e733203656964026e6c0000260001 +6b8580000001000000020002036e733203656964026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000452c048b6c00c0001000100015180000452c048ba + +29849 +4ce800000001000000000000036e733103656964026e6c0000010001 +4ce880000001000000020002036e733103656964026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c048b6c0360001000100015180000452c048ba + +29850 +267400000001000000000000036e733103656964026e6c0000260001 +267480000001000000020002036e733103656964026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c048b6c0360001000100015180000452c048ba + +29851 +d7f400100001000000000000037777770974656c656772616166026e6c0000010001 +d7f480000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +29852 +a442000000010000000000000e7374656666656e646567726f6f74026e6c0000ff0001 +a442800000010000000200010e7374656666656e646567726f6f74026e6c0000ff0001c00c0002000100015180000f036e73330864686f7374696e67c01bc00c00020001000151800006036e7332c033c04a00010001000151800004515b000a + +29853 +ae070000000100000000000003777777086d63766972757373026e6c0000010001 +ae078000000100000002000003777777086d63766972757373026e6c0000010001c0100002000100015180001b036e733108726573656c6c657208736572766963657a036f726700c01000020001000151800006036e7332c031 + +29854 +dd2e000000010000000000000377777705686f707065026e6c0000010001 +dd2e800000010000000200020377777705686f707065026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c016c01000020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +29855 +b8c400000001000000000000037777770b666f727a612d7574726567026e6c0000010001 +b8c480000001000000020000037777770b666f727a612d7574726567026e6c0000010001c0100002000100015180000f036e733105726f6f647303636f6d00c01000020001000151800006036e7332c034 + +29856 +781b000000010000000000000572656c617907696e746f756368026e6c0000010001 +781b800000010000000300010572656c617907696e746f756368026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800010026e7307696e746f756368036e657400c01200020001000151800007046e733031c042c02e00010001000151800004d413c001 + +29857 +201800000001000000000000037777770b6272616e64646174696e67026e6c0000010001 +201880000001000000020002037777770b6272616e64646174696e67026e6c0000010001c0100002000100015180000e036e7331076e657463617374c01cc01000020001000151800006036e7332c034c03000010001000151800004c2970101c04a00010001000151800004c297012d + +29858 +756a00000001000000000000037777770878787868756d6f72026e6c0000010001 +756a80000001000000020000037777770878787868756d6f72026e6c0000010001c01000020001000151800018036e73310e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7332c031 + +29859 +bb5700000001000000000000037777770e64696a6b7377656264657369676e026e6c0000010001 +bb5780000001000000030002037777770e64696a6b7377656264657369676e026e6c0000010001c0100002000100015180000d036e733106776964657873c01fc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c037c03300010001000151800004d4ccc0fcc068000100010001518000043efa0703 + +29860 +1f0b000000010000000000000b6d6f6f6b65726865696465026e6c00000f0001 +1f0b800000010000000200010b6d6f6f6b65726865696465026e6c00000f0001c00c0002000100015180000c04666e657404666e6574c018c00c0002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c1ac2b01 + +29861 +9eab0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +9eab8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29862 +49e800000001000000000000026e7304696d636f026e6c0000260001 +49e880000001000000020001026e7304696d636f026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +29863 +4f4500000001000000000000066761626c6572026e6c0000060001 +4f4584030001000000010000066761626c6572026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +29864 +06f20000000100000000000009652d6c756e61746963026e6c0000010001 +06f28000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +29865 +acac000000010000000000000963636f6e6365707473026e6c0000010001 +acac840300010000000100000963636f6e6365707473026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +29866 +f6f9000000010000000000000377777703646f73026e6c0000010001 +f6f9800000010000000200000377777703646f73026e6c0000010001c0100002000100015180000d016205646e73767203636f6d00c010000200010001518000040164c02a + +29867 +cd0100000001000000000000066761626c6572026e6c0000060001 +cd0184030001000000010000066761626c6572026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +29868 +552a000000010000000000000377777709657863657074696f6e026e6c0000010001 +552a800000010000000300030377777709657863657074696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004d5c9a38cc04000010001000151800004d5c9a38dc05200010001000151800004d5c9af03 + +29869 +a23b0000000100000000000008636176616c696572026e6c00000f0001 +a23b8000000100000003000208636176616c696572026e6c00000f0001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +29870 +c48d00000001000000000000037777770d766c696567746172696576656e026e6c0000010001 +c48d80000001000000020002037777770d766c696567746172696576656e026e6c0000010001c0100002000100015180000e036e733007656173796e6574c01ec01000020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +29871 +c93c0000000100000000000003777777096675636b7465656e73026e6c0000010001 +c93c8000000100000002000003777777096675636b7465656e73026e6c0000010001c0100002000100015180000d036e7331046564697302617400c01000020001000151800006036e7332c032 + +29872 +3d4a000000010000000000000377777709797a66722d636c7562026e6c0000010001 +3d4a800000010000000200020377777709797a66722d636c7562026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01ac01000020001000151800006036e7332c032c02e000100010001518000045104580ac04e000100010001518000045104601e + +29873 +373f000000010000000000000a6175746f636f6e66696707637071636f7270036e65740d76616e5f73746161766572656e026e6c0000010001 +373f840300010000000100000a6175746f636f6e66696707637071636f7270036e65740d76616e5f73746161766572656e026e6c0000010001c03100060001000038400036026e730f646f6d61696e2d7265676973747279c0310a686f73746d6173746572c0480bf1e540000070800000384000278d0000003840 + +29874 +ef9800000001000000000000046d61696c086a6f6f70726f6f73026e6c0000010001 +ef9880000001000000020000046d61696c086a6f6f70726f6f73026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c034 + +29875 +d5d300000001000000000000037777770b736578706f736974696573026e6c0000010001 +d5d380000001000000020002037777770b736578706f736974696573026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01cc01000020001000151800006036e7332c034c03000010001000151800004d4f1210bc04e00010001000151800004d4f1210c + +29876 +46c600000001000000000000037777770b736578706f736974696573026e6c0000010001 +46c680000001000000020002037777770b736578706f736974696573026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01cc01000020001000151800006036e7332c034c03000010001000151800004d4f1210bc04e00010001000151800004d4f1210c + +29877 +19d80000000100000000000003706b3102706b026e6c0000010001 +19d88000000100000002000203706b3102706b026e6c0000010001c01000020001000151800002c00cc0100002000100015180000603706b32c010c00c00010001000151800004d43d1815c03500010001000151800004d43d1818 + +29878 +19b70000000100000000000003706b3202706b026e6c0000010001 +19b78000000100000002000203706b3202706b026e6c0000010001c0100002000100015180000603706b31c010c01000020001000151800002c00cc02700010001000151800004d43d1815c00c00010001000151800004d43d1818 + +29879 +d3b100000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730742696572686f6b026e6c0000210001 +d3b184030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730742696572686f6b026e6c0000210001c04c00060001000038400036026e730f646f6d61696e2d7265676973747279c04c0a686f73746d6173746572c0630bf1e540000070800000384000278d0000003840 + +29880 +915e0000000100000000000005787334616c026e6c00000f0001 +915e8000000100000002000205787334616c026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +29881 +6de100000001000000000000047465737406726f656e6965026e6c0000010001 +6de180000001000000020002047465737406726f656e6965026e6c0000010001c0110002000100015180000f036e73310863616d627269756dc018c01100020001000151800006036e7332c030c02c00010001000151800004d9131082c04700010001000151800004d5efb202 + +29882 +3cb600000001000000000000036e73340767617574656e67026e6c0000010001 +3cb680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29883 +3cb900000001000000000000036e73340767617574656e67026e6c0000010001 +3cb980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +29884 +8eee00000001000000000000037777771176726564656e737465696e62616e64656e026e6c0000010001 +8eee84030001000000010000037777771176726564656e737465696e62616e64656e026e6c0000010001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +29885 +0cc100000001000000000000095f6b65726265726f73045f746370026463065f6d736463730742696572686f6b026e6c0000210001 +0cc184030001000000010000095f6b65726265726f73045f746370026463065f6d736463730742696572686f6b026e6c0000210001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +29886 +eed500000001000000000000036e7334086d65646961776562026e6c0000010001 +eed580000001000000020000036e7334086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +29887 +e3b700000001000000000000036e733203706777026e6c0000010001 +e3b780000001000000020002036e733203706777026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000043e818832c00c00010001000151800004d4ccc621 + +29888 +fd9400000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +fd9480000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +29889 +6dfb00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +6dfb80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +29890 +48df00000001000000000000066765617064330364736c0b7669616e6574776f726b73026e6c0000010001 +48df80000001000000020002066765617064330364736c0b7669616e6574776f726b73026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03700010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +29891 +f65600000001000000000000056d61696c3204616a6178026e6c0000010001 +f65680000001000000020001056d61696c3204616a6178026e6c0000010001c0120002000100015180000a036e733303777873c017c01200020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +29892 +91310000000100000000000004646e73320873796e7465677261026e6c0000010001 +91318000000100000002000204646e73320873796e7465677261026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02e00010001000151800004c3632616c00c00010001000151800004c363261a + +29893 +35ed0000000100000000000004646e73310873796e7465677261026e6c0000010001 +35ed8000000100000002000204646e73310873796e7465677261026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004c3632616c03c00010001000151800004c363261a + +29894 +2b5b00000001000000000000036e733109736974656279746573026e6c0000010001 +2b5b80000001000000030003036e733109736974656279746573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c2a55e5ac03c00010001000151800004c356781cc04e000100010001518000043ec58016 + +29895 +2b5c00000001000000000000036e733209736974656279746573026e6c0000010001 +2b5c80000001000000030003036e733209736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c2a55e5ac00c00010001000151800004c356781cc04e000100010001518000043ec58016 + +29896 +2b5d00000001000000000000036e733309736974656279746573026e6c0000010001 +2b5d80000001000000030003036e733309736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c2a55e5ac04000010001000151800004c356781cc00c000100010001518000043ec58016 + +29897 +c68e00000001000000000000037777770c6374632d6361726176616e73026e6c0000010001 +c68e80000001000000020002037777770c6374632d6361726176616e73026e6c0000010001c0100002000100015180000f036e73310864696d6d65646961c01dc01000020001000151800006036e7332c035c031000100010001518000043eddda10c04c000100010001518000043eb1e4dc + +29898 +cf9100000001000000000000036e733207616e7461726573026e6c0000010001 +cf9180000001000000020002036e733207616e7461726573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3a260bc00c000100010001518000043e3a260c + +29899 +c7f60000000100000000000010687569737675696c63656e7472616c65026e6c00000f0001 +c7f68000000100000002000210687569737675696c63656e7472616c65026e6c00000f0001c00c0002000100015180000c026e7306766572746973c01dc00c00020001000151800006036e7332c034c0310001000100015180000451120111c04900010001000151800004d5c4280c + +29900 +acc50000000100000000000003777777086e696a6d6567656e026e6c0000010001 +acc58000000100000002000203777777086e696a6d6567656e026e6c0000010001c0100002000100015180000f036e73330874656c6562797465c019c01000020001000151800006036e7334c031c02d00010001000151800004d5d38115c04800010001000151800004d5d38116 + +29901 +2f3f00000001000000000000056a6a626964026e6c00000f0001 +2f3f80000001000000030003056a6a626964026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c012c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02ac02600010001000151800004c2a55e5ac04200010001000151800004c356781cc054000100010001518000043ec58016 + +29902 +1189000000010000000000000a6d696a6e646f6d65696e026e6c00000f0001 +1189800000010000000200020a6d696a6e646f6d65696e026e6c00000f0001c00c0002000100015180000f036e7331086765656e70756e74c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +29903 +0007000000010000000000000e30373870726f64756374696f6e73026e6c00000f0001 +0007800000010000000200020e30373870726f64756374696f6e73026e6c00000f0001c00c00020001000151800014036e73310d6d6576657273686f7374696e67c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d5c9e8c8c04f00010001000151800004d5c9e8c9 + +29904 +40ec000000010000000000000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001 +40ec800000010000000200000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001c0130002000100015180001406737068696e7807726f7365747461036e657400c0130002000100015180000906616e75626973c039 + +29905 +719300000001000000000000046d61696c08636176616c696572026e6c0000010001 +719380000001000000030002046d61696c08636176616c696572026e6c0000010001c0110002000100015180000d036e733106776964657873c01ac01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +29906 +b6a0000000010000000000000377777708626c75656c796e78026e6c0000010001 +b6a0800000010000000200020377777708626c75656c796e78026e6c0000010001c0100002000100015180000c036e73310570726f6d73c019c01000020001000151800006036e7332c031c02d000100010001518000045054ee0ac045000100010001518000045054ee64 + +29907 +00a600000001000000000000036e7331056132303030026e6c0000010001 +00a680000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +29908 +00a700000001000000000000036e7332056132303030026e6c0000010001 +00a780000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +29909 +04250000000100000000000003777777087274766e6f6f7264026e6c0000010001 +04258000000100000002000203777777087274766e6f6f7264026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c019c01000020001000151800006036e7332c030c02d00010001000151800004c3402003c04600010001000151800004c340202b + +29910 +800b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +800b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29911 +2dff0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dff8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +29912 +285400000001000000000000026e7306787334616c6c026e6c0000010001 +285480000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +29913 +164700000001000000000000046d61696c0b696e7472617669616c6973026e6c0000010001 +164780000001000000020002046d61696c0b696e7472617669616c6973026e6c0000010001c0110002000100015180000c036e73310563736e6574c01dc01100020001000151800006036e7332c035c03100010001000151800004c2451012c04900010001000151800004c2451212 + +29914 +4d1b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +4d1b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29915 +c247000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +c247800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +29916 +53ae0000000100000000000003777777097365786f64726f6d65026e6c0000010001 +53ae8000000100000002000203777777097365786f64726f6d65026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01ac01000020001000151800006036e7332c032c02e0001000100015180000452c04516c04b0001000100015180000452c04542 + +29917 +8f1e000000010000000000000a656e74657270726973650770656e6e6f636b026e6c0000010001 +8f1e800000010000000200000a656e74657270726973650770656e6e6f636b026e6c0000010001c01700020001000151800014036e73310a676c617373686f757365036e657400c01700020001000151800006036e7332c037 + +29918 +d2d9000000010000000000000377777703746c6d026e6c0000010001 +d2d9800000010000000200020377777703746c6d026e6c0000010001c0100002000100015180000f036e73330874656c6562797465c014c01000020001000151800006036e7334c02cc02800010001000151800004d5d38115c04300010001000151800004d5d38116 + +29919 +f35d00000001000000000000086d61696c6761746503657572026e6c0000010001 +f35d80000001000000020002086d61696c6761746503657572026e6c0000010001c01500020001000151800002c00cc0150002000100015180000906706f70657965c015c00c0001000100015180000482730101c03b0001000100015180000482730f02 + +29920 +2c0f000000010000000000000c7061696e7473657276696365026e6c0000ff0001 +2c0f800000010000000200000c7061696e7473657276696365026e6c0000ff0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c033 + +29921 +0e780000000100000000000007766462636f6d70026e6c00001c0001 +0e788000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +29922 +d0b90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d0b98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +29923 +95390000000100000000000008686f73746e616d650462696e640000100003 +95398000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +29924 +60390000000100000000000008686f73746e616d650462696e640000100003 +60398000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +29925 +74e500000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +74e580000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +29926 +82f5000000010000000000000377777708706f656c73747261026e6c0000010001 +82f5800000010000000200020377777708706f656c73747261026e6c0000010001c0100002000100015180000e036e73310762617365776562c019c01000020001000151800006036e7332c031c02d00010001000151800004d535d035c04700010001000151800004d535d034 + +29927 +c91d00000001000000000000085f6b706173737764045f7463700767696f70646f6d026e6c0000060001 +c91d84030001000000010000085f6b706173737764045f7463700767696f70646f6d026e6c0000060001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +29928 +0747000000010000000000000c506f737462616e6b6d61696c026e6c0000010001 +0747800000010000000200020c506f737462616e6b6d61696c026e6c0000010001c00c0002000100015180000a036e733103696e67c019c00c00020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +29929 +7dee00100001000000000001026e7308767575727765726b026e6c00000100010000290800000080000000 +7dee80000001000000030002026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +29930 +1f3f00100001000000000001036e733208767575727765726b026e6c00000100010000290800000080000000 +1f3f80000001000000030002036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa02020000291000000000000000 + +29931 +df720000000100000000000003777777047a656e77026e6c0000010001 +df728000000100000002000003777777047a656e77026e6c0000010001c01000020001000151800015026e730d646f6d61696e6e6574776f726b02736500c01000020001000151800006036e7332c02c + +29932 +c9e2000000010000000000000c7268656e7573616c70696e61026e6c00000f0001 +c9e2800000010000000200020c7268656e7573616c70696e61026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +29933 +2e22000000010000000000000377777710726573706f6e73652d73657276696365026e6c0000010001 +2e22800000010000000200020377777710726573706f6e73652d73657276696365026e6c0000010001c0100002000100015180000d026e730763697374726f6ec021c01000020001000151800006036e7332c038c035000100010001518000043ed81f37c04e000100010001518000043ed81f38 + +29934 +2bc628000001000000010000026e6c0000060001085f6b706173737764045f7463700767696f70646f6d026e6c000021000100000258001a0000006401d00777696e323030300767696f70646f6d026e6c00 +2bc6a8040000000000000000 + +29935 +474500000001000000000000037777770874776f7274776174026e6c0000010001 +474580000001000000030001037777770874776f7274776174026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +29936 +0d5200000001000000000000036e733104686f6d65026e6c0000010001 +0d5280000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +29937 +1c6000000001000000000000046d61696c066368656c6c6f026e6c0000010001 +1c6080000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +29938 +000000007002faf02ae300000204057a01010402 +000080010000000000000000 + +29939 +f47e0000000100000000000003777777076a632d7069766f026e6c0000010001 +f47e8000000100000002000103777777076a632d7069766f026e6c0000010001c0100002000100015180000f036e73330864686f7374696e67c018c01000020001000151800006036e7332c030c04700010001000151800004515b000a + +29940 +89ab00000001000000000000036d6d63026e6c0000ff0001 +89ab80000001000000030002036d6d63026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c010c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c028c02400010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +29941 +3eeb000000010000000000000e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001 +3eeb800000010000000200020e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001c01b0002000100015180000f036e73310861746c616e74697ac029c01b00020001000151800006036e7332c041c03d00010001000151800004d5efa011c05800010001000151800004d5efa075 + +29942 +d96700000001000000000000037777770f666c616e64657273746f7572697374026e6c0000010001 +d96784030001000000010000037777770f666c616e64657273746f7572697374026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +29943 +34ef001000010000000000000377777708686f757474726566026e6c0000010001 +34ef800000010000000200000377777708686f757474726566026e6c0000010001c01000020001000151800017016103646e730b7369746570726f7465637403636f6d00c010000200010001518000040162c02f + +29944 +b66a29aa5010fbec764c0000000000000000 +b66aa9a40000000000000000 + +29945 +b39c000000010000000000000a6b72616d6572746a6573026e6c00000f0001 +b39c800000010000000200000a6b72616d6572746a6573026e6c00000f0001c00c0002000100015180000f036e7331056d79736d74036e657400c00c00020001000151800006036e7332c02f + +29946 +d1910000000100000000000003777777027362026e6c0000010001 +d1918000000100000002000203777777027362026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c013c01000020001000151800006036e7332c02ac02700010001000151800004c3402003c04000010001000151800004c340202b + +29947 +35b728000001000200000000026e6c0000060001097365727665722d636305435952454b026e6c00000500fe000000000000c0140001000100000000000452a1319b +35b7a8040000000000000000 + +29948 +b66a29aa5018fbeca98c0000008f5105000000010001000000000f313033303739323135313035382d330000f900010f313033303739323135313035382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403b06fa403c587a0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 +b66aa9a40000000000000000 + +29949 +8d4300000001000000000000037777770663616e697369026e6c0000010001 +8d4384030001000000010000037777770663616e697369026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +29950 +d60b00000001000000000000026e7308767575727765726b026e6c0000010001 +d60b80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +29951 +23d400000001000000000000036e733208767575727765726b026e6c0000010001 +23d480000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +29952 +b66a29b85011fbde75ba0000000000000000 +b66aa9b40000000000000000 + +29953 +28fc00000001000000000000044e414d4507574c44454c4654024e4c0000010001 +28fc80000001000000020002044e414d4507574c44454c4654024e4c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c019c00c00010001000151800004910983cbc03b00010001000151800004c0576a65 + +29954 +c247000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +c247800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +29955 +0000000070024000a2200000020405b401010402 +000080010000000000000000 + +29956 +b66a29b95010fbde75b90000000000000000 +b66aa9b40000000000000000 + +29957 +000000007002faf0f29900000204057a01010402 +000080010000000000000000 + +29958 +c38500000001000000000000037777770d6175746f74656c656772616166026e6c0000010001 +c38580000001000000020000037777770d6175746f74656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c036 + +29959 +b66acd7f50104470467a0000000000000000 + + +29960 +b66acd7f50184470c7f40000008d352e000000010001000000000f313031333631323238313837342d330000f900010f313031333631323238313837342d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afce9403c4e6900030000002e4e544c4d535350000100000097b208e0050005002900000009000900200000005345525645522d4343435952454b0000 + + +29961 +689b000000010000000000010462617261026e6c00001c00010000291000000000000000 +689b800000010000000200030462617261026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb12210000291000000000000000 + +29962 +b66acd8d5011446245ea0000000000000000 + + +29963 +b66bbecf5010fbeca8dc0000000000000000 + + +29964 +b66bbecf5018fbecf6930000008f378f000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403b06fa403c587a0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 + + +29965 +000000007002400067760000020405b401010402 +000080010000000000000000 + +29966 +b66acd8e5010446245e90000000000000000 + + +29967 +b66bbedd5011fbdea84a0000000000000000 + + +29968 +b66c83605010447055ed0000000000000000 + + +29969 +b66c83605018447026c40000008de6d2000000010001000000000f313031333631323238313837342d320000f900010f313031333631323238313837342d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afce9403c4e6900030000002e4e544c4d535350000100000097b208e0050005002900000009000900200000005345525645522d4343435952454b0000 + + +29970 +d7350000000100000000000003777777057261616172026e6c0000010001 +d7358000000100000003000303777777057261616172026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c016c0100002000100015180000e0b6e616d6573657276657232c036c0100002000100015180000e0b6e616d6573657276657233c036c02a0001000100015180000451ad2020c04e0001000100015180000451ad2021c0680001000100015180000452c049aa + +29971 +000000007002faf0d34200000204057a01010402 +000080010000000000000000 + +29972 +fabd00000001000000000000036e7331056d61786573026e6c0000010001 +fabd80000001000000030003036e7331056d61786573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +29973 +ea1400000001000000000000036e7332056d61786573026e6c0000010001 +ea1480000001000000030003036e7332056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +29974 +e730000000010000000000000377777705696e746578026e6c0000010001 +e730800000010000000200020377777705696e746578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02a0001000100015180000451047378c03c0001000100015180000451047379 + +29975 +23720000000100000000000003777777046b6f7469026e6c0000010001 +23728000000100000002000003777777046b6f7469026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +29976 +315a00000001000000000000026e73076e656473746174026e6c0000010001 +315a80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +29977 +b66c836e50114462555d0000000000000000 + + +29978 +b66bbede5010fbdea8490000000000000000 + + +29979 +4c61000000010000000000000377777709706e69656c6b65726b026e6c0000010001 +4c61800000010000000200000377777709706e69656c6b65726b026e6c0000010001c0100002000100015180000e026e7308676c6f62616c7873c01ac01000020001000151800006036e7332c031 + +29980 +8dfb0000000100000000000004646e733110776f726c6477696465686f7374696e67026e6c0000010001 +8dfb8000000100000002000204646e733110776f726c6477696465686f7374696e67026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c0001000100015180000450f7c20dc0440001000100015180000450f7c217 + +29981 +a3100000000100000000000004646e733210776f726c6477696465686f7374696e67026e6c0000010001 +a3108000000100000002000204646e733210776f726c6477696465686f7374696e67026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0360001000100015180000450f7c20dc00c0001000100015180000450f7c217 + +29982 +b66d191c5010fbec2f370000000000000000 +b66d99140000000000000000 + +29983 +01fd00100001000000000001036e733107737572666e6574026e6c00000100010000290800000000000000 +01fd80000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +29984 +9cdc000000010000000000000377777706787334616c6c026e6c00000f0001 +9cdc800000010000000300020377777706787334616c6c026e6c00000f0001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +29985 +e54000100001000000000001036e733107737572666e6574026e6c00002600010000290800000000000000 +e54080000001000000040004036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +29986 +b66d191c5018fbecc6460000008fee36000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403b06fa403c587a0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 +b66d99140000000000000000 + +29987 +0000000070024000810b0000020405b401010402 +000080010000000000000000 + +29988 +b66c836f50104462555c0000000000000000 + + +29989 +2b3a0000000100000000000003637373026e6c00000f0001 +2b3a8000000100000002000203637373026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +29990 +31fc00000001000000000000036e733209666972737466696e64026e6c0000010001 +31fc80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29991 +31fd00000001000000000000036e733109666972737466696e64026e6c0000010001 +31fd80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +29992 +689b000000010000000000000462617261026e6c00001c0001 +689b800000010000000200020462617261026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +29993 +0c4f00000001000000000000077265745f667331077265746172636f026e6c0000060001 +0c4f84030001000000010000077265745f667331077265746172636f026e6c0000060001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +29994 +b66da42b501044704eb60000000000000000 + + +29995 +b66da42b501844706de90000008d9876000000010001000000000f313031333631323238313837342d320000f900010f313031333631323238313837342d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afce9403c4e6900030000002e4e544c4d535350000100000097b208e0050005002900000009000900200000005345525645522d4343435952454b0000 + + +29996 +b66d192a5011fbde2ea50000000000000000 +b66d99240000000000000000 + +29997 +6cd4000000010000000000000f426f6572486172746f67486f6f6674026e6c00000f0001 +6cd4800000010000000200000f426f6572486172746f67486f6f6674026e6c00000f0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +29998 +a8cd000000010000000000000476696c61026e6c00000f0001 +a8cd800000010000000200000476696c61026e6c00000f0001c00c00020001000151800012036e7333086e6574766c696573036e657400c00c00020001000151800006036e7334c029 + +29999 +652300000001000000000000087061636b74656368026e6c0000010001 +652380000001000000030001087061636b74656368026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +30000 +1214000000010000000000000276330a646d64656c6976657279026e6c0000010001 +1214800000010000000200000276330a646d64656c6976657279026e6c0000010001c00f00020001000151800010036e73310673697465347503636f6d00c00f00020001000151800006036e7332c032 + +30001 +3a3300000001000000000000036e733107737572666e6574026e6c0000010001 +3a3380000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +30002 +8a2800000001000000000000036e733107737572666e6574026e6c0000260001 +8a2880000001000000040003036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +30003 +b66da439501144624e260000000000000000 + + +30004 +573c0000000100000000000003777777076e6574706f6c6c026e6c0000010001 +573c8000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +30005 +f6dd00000001000000000000055f6c646170045f746370026463065f6d7364637307327365727665720864696a6b6f6f73740864696a6b77657374026e6c0000210001 +f6dd84030001000000010000055f6c646170045f746370026463065f6d7364637307327365727665720864696a6b6f6f73740864696a6b77657374026e6c0000210001c03b00060001000038400036026e730f646f6d61696e2d7265676973747279c03b0a686f73746d6173746572c0520bf1e540000070800000384000278d0000003840 + +30006 +b66d192b5010fbde2ea40000000000000000 +b66d99240000000000000000 + +30007 +67ae28000001000200000000026e6c0000060001077265745f667331077265746172636f026e6c00000500fe000000000000c01400010001000000000004c0a80001 +67aea8040000000000000000 + +30008 +b66da43a501044624e250000000000000000 + + +30009 +420300000001000000000000036e73320e6469726563747365727669636573026e6c0000010001 +420380000001000000030003036e73320e6469726563747365727669636573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03300010001000151800004d994aa05c00c00010001000151800004d994aa06c05300010001000151800004d994aa07 + +30010 +5fb300000001000000000000036e73330e6469726563747365727669636573026e6c0000010001 +5fb380000001000000030003036e73330e6469726563747365727669636573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03300010001000151800004d994aa05c04500010001000151800004d994aa06c00c00010001000151800004d994aa07 + +30011 +475500000001000000000000086f707573666c6f77026e6c00000f0001 +475580000001000000020002086f707573666c6f77026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +30012 +aaa900000001000000000000037777770c62656c636f6d7061676e6965026e6c0000010001 +aaa980000001000000020000037777770c62656c636f6d7061676e6965026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c035 + +30013 +000000007002faf0e71c0000020405b401010402 +000080010000000000000000 + +30014 +a5a600000001000000000000037777771167726174697373657866696c6d70696573026e6c0000010001 +a5a680000001000000030000037777771167726174697373657866696c6d70696573026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c03bc01000020001000151800007046e733033c03b + +30015 +b66e311b5010faf02c470000000000000000 +b66eb1140000000000000000 + +30016 +048900000001000000000000036d783306787334616c6c026e6c0000010001 +048980000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30017 +774600000001000000000000036d783406787334616c6c026e6c0000010001 +774680000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30018 +1ddf00000001000000000000036d786906787334616c6c026e6c0000010001 +1ddf80000001000000030002036d786906787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30019 +39e300000001000000000000036d783206787334616c6c026e6c0000010001 +39e380000001000000030002036d783206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30020 +caf900000001000000000000037777770b6c6f6e67666962726f7365026e6c0000010001 +caf980000001000000020002037777770b6c6f6e67666962726f7365026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +30021 +711500000001000000000000026e730a6e6d622d68656c6c6572026e6c0000010001 +711580000001000000020001026e730a6e6d622d68656c6c6572026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2971685 + +30022 +76310000000100000000000010676f6c6663656e7472756d2d62657374026e6c0000010001 +76318000000100000003000110676f6c6663656e7472756d2d62657374026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc01dc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04fc031000100010001518000043efa0202 + +30023 +cdf500000001000000000000026e730a6e6d622d68656c6c6572026e6c0000260001 +cdf580000001000000020001026e730a6e6d622d68656c6c6572026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2971685 + +30024 +955e0000000100000000000004504f303703575853024e4c00000f0001 +955e8000000100000003000304504f303703575853024e4c00000f0001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +30025 +16780000000100000000000004504f303703575853024e4c00000f0001 +16788000000100000003000304504f303703575853024e4c00000f0001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +30026 +10b2000000010000000000000b7672696a656b6579736572026e6c0000010001 +10b2800000010000000200020b7672696a656b6579736572026e6c0000010001c00c0002000100015180000b036e73310473626970c018c00c00020001000151800006036e7332c030c02c00010001000151800004d4ccecf1c04300010001000151800004c3a99564 + +30027 +079c0000000100000000000007627574746f6e7308686f7573656e6574026e6c0000010001 +079c8000000100000002000007627574746f6e7308686f7573656e6574026e6c0000010001c014000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0140002000100015180000906617574683230c038 + +30028 +4aa900000001000000000000034e533203484853026e6c0000010001 +4aa980000001000000030003034e533203484853026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000491340205c00c0001000100015180000491340206c04800010001000151800004c0576a65 + +30029 +94a70000000100000000000016766572736368757572656e2d73636872657070657273026e6c0000ff0001 +94a78000000100000002000216766572736368757572656e2d73636872657070657273026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c023c00c00020001000151800006036e7332c03bc03700010001000151800004d43d0f08c05500010001000151800004d43d19e2 + +30030 +ee34000000010000000000000561686f6c64027330026e6c0000010001 +ee34800000010000000200020561686f6c64027330026e6c0000010001c0120002000100015180000d026e73076e656473746174c015c01200020001000151800006036e7333c02cc02900010001000151800004d4482615c04200010001000151800004d5c4021d + +30031 +25ad00000001000000000000037777770762616d62696e79026e6c0000010001 +25ad80000001000000030000037777770762616d62696e79026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c034c0100002000100015180000a076e73686f737433c034 + +30032 +886200000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +886280000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +30033 +6fa800000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +6fa880000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +30034 +b7be0000000100000000000016766572736368757572656e2d73636872657070657273026e6c00001c0001 +b7be8000000100000002000216766572736368757572656e2d73636872657070657273026e6c00001c0001c00c00020001000151800012036e73310b7669616e6574776f726b73c023c00c00020001000151800006036e7332c03bc03700010001000151800004d43d0f08c05500010001000151800004d43d19e2 + +30035 +45680000000100000000000008706c6161746a657308686f7573656e6574026e6c0000010001 +45688000000100000002000008706c6161746a657308686f7573656e6574026e6c0000010001c015000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0150002000100015180000906617574683230c039 + +30036 +46dc00000001000000000000036e7332027575026e6c0000010001 +46dc80000001000000040004036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +30037 +a21700000001000000000000026e73027575026e6c0000010001 +a21780000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +30038 +2b96000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +2b96800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30039 +339d000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +339d800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30040 +2ba4000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +2ba4800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30041 +1ba9000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +1ba9800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30042 +bfe60000000100000000000008636f6d2d706c616e026e6c0000ff0001 +bfe68000000100000002000208636f6d2d706c616e026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +30043 +ed890000000100000000000008686f73746e616d650462696e640000100003 +ed898000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +30044 +cb050000000100000000000004646e733105666c756b65026e6c0000010001 +cb058000000100000003000104646e733105666c756b65026e6c0000010001c0110002000100015180001004646e733105666c756b6503636f6d00c0110002000100015180000704646e7332c030c01100020001000151800002c00cc00c00010001000151800004c1dd8814 + +30045 +31ff00000001000000000000036e733209666972737466696e64026e6c0000010001 +31ff80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30046 +320000000001000000000000036e733109666972737466696e64026e6c0000010001 +320080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30047 +6888000000010000000000000377777712776f6f6e7a6f7267636f6d62696e61746965026e6c0000010001 +6888800000010000000200000377777712776f6f6e7a6f7267636f6d62696e61746965026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c023c0100002000100015180000704686e7331c03c + +30048 +1b220000000100000000000003777777086879706f686f6d65026e6c0000010001 +1b228000000100000002000003777777086879706f686f6d65026e6c0000010001c01000020001000151800013036e733109696d6167653264617903636f6d00c01000020001000151800006036e7332c031 + +30049 +f49f000000010000000000000764656265656d64026e6c0000ff0001 +f49f800000010000000200000764656265656d64026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +30050 +dfc80000000100000000000009666f746f2d77696a6e026e6c00001c0001 +dfc88000000100000002000109666f746f2d77696a6e026e6c00001c0001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +30051 +31c000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +31c080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +30052 +67620000000100000000000003777777067a737673726d026e6c0000010001 +67628403000100000001000003777777067a737673726d026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +30053 +e8a200000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +e8a280000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +30054 +a70000000001000000000000037777770f74656c65636f6d6d6167617a696e65026e6c0000010001 +a70080000001000000020000037777770f74656c65636f6d6d6167617a696e65026e6c0000010001c0100002000100015180000b036e73340473617261c020c01000020001000151800006036e7333c038 + +30055 +826d0000000100000000000006766965746f72026e6c00000f0001 +826d8000000100000002000206766965746f72026e6c00000f0001c00c00020001000151800002c00cc00c0002000100015180000d04646e733205692d702d64c013c00c00010001000151800004d9124025c03500010001000151800004d9124104 + +30056 +4b7000000001000000000000037777771062616e6e65726d616e6167656d656e74026e6c0000010001 +4b7080000001000000030003037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +30057 +0f360000000100000000000009652d6c756e61746963026e6c0000010001 +0f368000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30058 +994b00000001000000000000153132332d7765622d686f73742d726573656c6c6572026e6c0000010001 +994b80000001000000020000153132332d7765622d686f73742d726573656c6c6572026e6c0000010001c00c00020001000151800012036e7331087365727665722d3203636f6d00c00c00020001000151800006036e7332c03a + +30059 +913100000001000000000000056c6173736f026e6c0000ff0001 +913180000001000000020002056c6173736f026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +30060 +7a8200000001000000000000026e73066863636e6574026e6c0000010001 +7a8280000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +30061 +412700000001000000000000044e414d4507574c44454c4654024e4c0000010001 +412780000001000000020002044e414d4507574c44454c4654024e4c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c019c00c00010001000151800004910983cbc03b00010001000151800004c0576a65 + +30062 +144f0000000100000000000006776468303132066e7434616c6c026e6c0000010001 +144f8000000100000002000206776468303132066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +30063 +d2b9000000010000000000000964736c2d333830323106736f6c636f6e026e6c0000010001 +d2b9800000010000000300030964736c2d333830323106736f6c636f6e026e6c0000010001c0160002000100015180000b08736f6c7574696f6ec016c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03100010001000151800004d42d2005c04800010001000151800004d42d2003c05a00010001000151800004d42d2103 + +30064 +341800100001000000000001036e7332076e656473746174026e6c00000100010000290800000080000000 +341880000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +30065 +cd6900100001000000000001036e7334076e656473746174026e6c00000100010000290800000080000000 +cd6980000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +30066 +549d00000001000000000000096f70746973706f7274026e6c0000010001 +549d80000001000000020002096f70746973706f7274026e6c0000010001c00c0002000100015180000a036e733103686978c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +30067 +714100000001000000000000097363686167656e666d026e6c0000010001 +714180000001000000020002097363686167656e666d026e6c0000010001c00c00020001000151800019036e73311277696e646b7261636874696e7465726e6574c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450f2eea1c04f0001000100015180000450f2eea2 + +30068 +262600000001000000000000036d6564027675026e6c0000ff0001 +262680000001000000030003036d6564027675026e6c0000ff0001c01000020001000151800005026e73c010c0100002000100015180000a0473746172026373c010c0100002000100015180000e036e733107737572666e6574c013c0270001000100015180000482258104c03800010001000151800004c01fe72ac04e00010001000151800004c0576a65 + +30069 +edb600000001000000000000037777770b6d696a6e6b6f7074686565026e6c0000010001 +edb680000001000000030001037777770b6d696a6e6b6f7074686565026e6c0000010001c0100002000100015180000e036e733104686d6e71036e657400c0100002000100015180000d036e733206776964657873c039c0100002000100015180000d036e733306776964657873c01cc063000100010001518000043efa0703 + +30070 +390f00000001000000000000046d6f7265026e6c0000ff0001 +390f80000001000000030003046d6f7265026e6c0000ff0001c00c0002000100015180000f036e7331086e6f766178657373c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c02500010001000151800004d5c98015c04000010001000151800004d5c9bf12c05200010001000151800004d5ef9c26 + +30071 +9f3d00000001000000000000046d61696c0370636d026e6c0000010001 +9f3d80000001000000020001046d61696c0370636d026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c143e6dc + +30072 +5e0d000000010000000000000964656e6875726b6276026e6c0000ff0001 +5e0d800000010000000200000964656e6875726b6276026e6c0000ff0001c00c00020001000151800014036e73310a696c632d6575726f706503636f6d00c00c00020001000151800006036e7332c02e + +30073 +58300000000100000000000003626469026e6c0000ff0001 +58308000000100000002000003626469026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +30074 +2c5d000000010000000000000970636d7366727430310370636d026e6c0000010001 +2c5d800000010000000200010970636d7366727430310370636d026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000b026e73026e6c036e657400c02e00010001000151800004c143e6dc + +30075 +abd0000000010000000000000970636d7366616d30310370636d026e6c0000010001 +abd0800000010000000200010970636d7366616d30310370636d026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000b026e73026e6c036e657400c02e00010001000151800004c143e6dc + +30076 +2a9000000001000000000000046d61696c0370636d026e6c0000010001 +2a9080000001000000020001046d61696c0370636d026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c143e6dc + +30077 +19a200000001000000000000087269766572746578026e6c00000f0001 +19a280000001000000020002087269766572746578026e6c00000f0001c00c0002000100015180000d036e73310661637469766fc015c00c00020001000151800006036e7332c02dc02900010001000151800004d5c4281ac04200010001000151800004d5c42806 + +30078 +6686000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +6686800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +30079 +19bb000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +19bb800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +30080 +913700000001000000000000066b656e6e79310a646d64656c6976657279026e6c0000010001 +913780000001000000020000066b656e6e79310a646d64656c6976657279026e6c0000010001c01300020001000151800010036e73310673697465347503636f6d00c01300020001000151800006036e7332c036 + +30081 +ec5900000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +ec5980000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +30082 +571900000001000000000000026e73097477696e737061726b026e6c0000260001 +571980000001000000020001026e73097477696e737061726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800017026e7309726f7474657264616d046c756e61036e657400c00c00010001000151800004c26d5a02 + +30083 +f496000000010000000000000673656375726507656e64656d6f6c026e6c0000010001 +f496800000010000000200000673656375726507656e64656d6f6c026e6c0000010001c0130002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0130002000100015180000d036e7332036b706e036e657400 + +30084 +125a00000001000000000000036e7332063234686f7374024e4c0000010001 +125a80000001000000020002036e7332063234686f7374024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d5efb10cc00c00010001000151800004d5efb10d + +30085 +f13400000001000000000000036e733107636f6e74657874026e6c0000260001 +f13480000001000000030003036e733107636f6e74657874026e6c0000260001c01000020001000151800002c00cc0100002000100015180000b036e73310470696e65c018c01000020001000151800006036e7332c03ec00c00010001000151800004d59c0296c03a00010001000151800004d59c0201c05100010001000151800004c3c1a303 + +30086 +57ad000000010000000000000964726f6f6d6c616e64026e6c0000ff0001 +57ad800000010000000200020964726f6f6d6c616e64026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +30087 +fddd000000010000000000000377777709647574636864617465026e6c0000010001 +fddd800000010000000200000377777709647574636864617465026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +30088 +ad260000000100000000000008702d612d6f6f6d73026e6c0000ff0001 +ad268000000100000002000208702d612d6f6f6d73026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +30089 +4c19000000010000000000000377777709776f6f6e6b72616e74026e6c0000010001 +4c19800000010000000200000377777709776f6f6e6b72616e74026e6c0000010001c01000020001000151800011036e733107636f6e78696f6e036e657400c01000020001000151800006036e7332c032 + +30090 +151800000001000000000000036e73330767617574656e67026e6c0000010001 +151880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30091 +252000000001000000000000036e73340767617574656e67026e6c0000010001 +252080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30092 +7a81000000010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 +7a81800200010000000000010331333003313434033137360331393307696e2d61646472046172706100000c00010000291000000000000000 + +30093 +65aa0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +65aa8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30094 +07ab00000001000000000000056861766570026e6c00000f0001 +07ab80000001000000020002056861766570026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +30095 +0f8900000001000000000000056578616374056578616374026e6c0000010001 +0f8980000001000000020001056578616374056578616374026e6c0000010001c01200020001000151800002c00cc0120002000100015180000b026e73026e6c036e657400c00c00010001000151800004910e3c0a + +30096 +39a600000001000000000000086169782d74657374056578616374026e6c0000010001 +39a680000001000000020001086169782d74657374056578616374026e6c0000010001c01500020001000151800008056578616374c015c0150002000100015180000b026e73026e6c036e657400c02f00010001000151800004910e3c0a + +30097 +760b00000001000000000000037777770666756872656e026e6c0000010001 +760b80000001000000020001037777770666756872656e026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +30098 +000c28000001000200000000026e6c00000600010c706c616e6e696e672d696e74086e6b6f6572696572026e6c00000500fe000000000000c01400010001000000000004c0a8000c +000ca8040000000000000000 + +30099 +71a100000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +71a180000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +30100 +d04500000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000260001 +d04580000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +30101 +724700000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +724780000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +30102 +5a5300000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000260001 +5a5380000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +30103 +641a000000010000000000000377777706787334616c6c026e6c0000010001 +641a800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30104 +ae7b00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +ae7b80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +30105 +8b2100000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000260001 +8b2180000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +30106 +b78200000001000000000000067765626e69780e6575726f636f6e73756c74616e74026e6c0000010001 +b78280000001000000020002067765626e69780e6575726f636f6e73756c74616e74026e6c0000010001c01300020001000151800002c00cc0130002000100015180000a076d61696c6e6978c013c00c000100010001518000045117e555c044000100010001518000045117e556 + +30107 +edee00000001000000000000067765626e69780e6575726f636f6e73756c74616e74026e6c0000260001 +edee80000001000000020002067765626e69780e6575726f636f6e73756c74616e74026e6c0000260001c01300020001000151800002c00cc0130002000100015180000a076d61696c6e6978c013c00c000100010001518000045117e555c044000100010001518000045117e556 + +30108 +69b0000000010000000000000377777709686572656e7665656e026e6c0000010001 +69b0840300010000000100000377777709686572656e7665656e026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +30109 +05b90000000100000000000008686f73746e616d650462696e640000100003 +05b98000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +30110 +8f9e0000000100000000000006736572766572026462036b766b026e6c0000010001 +8f9e8000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +30111 +000000007002fc00ee0b00000204057801010402 +000080010000000000000000 + +30112 +0a4000000001000000000000085f6b706173737764045f7463700767696f70646f6d026e6c0000060001 +0a4084030001000000010000085f6b706173737764045f7463700767696f70646f6d026e6c0000060001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +30113 +0d1800000001000000000000036e733203666a66026e6c0000010001 +0d1880000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30114 +37e400000001000000000000037777770a616c6c69656464617461026e6c0000010001 +37e480000001000000020001037777770a616c6c69656464617461026e6c0000010001c01000020001000151800011036e696b0a7075626c6973686e6574c01bc0100002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1433c0a + +30115 +0d1900000001000000000000036e733103666a66026e6c0000010001 +0d1980000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30116 +a707000000010000000000000773657834616c6c026e6c00000f0001 +a707800000010000000200000773657834616c6c026e6c00000f0001c00c00020001000151800012036e7331086379626572616374036e657400c00c00020001000151800006036e7332c02c + +30117 +b6719dda5010fc00c6370000000000000000 + + +30118 +dcec00000001000000000000037777771173706565642d64657369676e2d636c7562026e6c0000010001 +dcec80000001000000020002037777771173706565642d64657369676e2d636c7562026e6c0000010001c01000020001000151800009036e7331026973c022c01000020001000151800006036e7332c03ac03600010001000151800004d5852102c04b00010001000151800004d5c41503 + +30119 +b6719dda5018fc006c5e00000091d5b0000000010001000000000e3932373731323933353935342d330000f900010e3932373731323933353935342d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403afc98403c4e180003000000344e544c4d535350000100000097b208e0080008002c0000000c000c0020000000504c414e4e494e472d494e544e4b4f45524945520000 + + +30120 +173200000001000000000000037777770974726f737261646172026e6c0000010001 +173280000001000000020002037777770974726f737261646172026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01ac01000020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +30121 +5ceb000000010000000000000377777706746970313030026e6c0000010001 +5ceb800000010000000200000377777706746970313030026e6c0000010001c01000020001000151800013036e733009696e7465726c697a65036e657400c01000020001000151800006036e7331c02f + +30122 +8e4e000000010000000000000377777703776967026e6c0000010001 +8e4e800000010000000200020377777703776967026e6c0000010001c0100002000100015180000e0161026e7306737561726573c014c010000200010001518000040162c02ac02800010001000151800004d5ef8282c04200010001000151800004d4cce363 + +30123 +b2f7000000010000000000000f7061726b6574706c616e6b706c7573026e6c0000ff0001 +b2f7800000010000000200020f7061726b6574706c616e6b706c7573026e6c0000ff0001c00c00020001000151800009036e7331026973c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +30124 +bad700000001000000000000036e7331056861636f6d026e6c0000010001 +bad780000001000000020002036e7331056861636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4f12209c03800010001000151800004d590f009 + +30125 +d4ae00000001000000000000036e7331056861636f6d026e6c0000260001 +d4ae80000001000000020002036e7331056861636f6d026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4f12209c03800010001000151800004d590f009 + +30126 +af35000000010000000000000a76616e6f6572732d6366026e6c0000010001 +af35800000010000000200020a76616e6f6572732d6366026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +30127 +b6719de85011fbf2c5a30000000000000000 + + +30128 +000000007002fc00095d00000204057801010402 +000080010000000000000000 + +30129 +973e00000001000000000000036e7332076e656473746174026e6c0000010001 +973e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +30130 +a5c100000001000000000000036e7334076e656473746174026e6c0000010001 +a5c180000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +30131 +0d2500000001000000000000036e733203666a66026e6c0000010001 +0d2580000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30132 +a82f0000000100000000000003777777096e6574646972656374026e6c0000010001 +a82f8000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +30133 +a8f900000001000000000000037777770a616c6c653133676f6564026e6c0000010001 +a8f980000001000000030001037777770a616c6c653133676f6564026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +30134 +b6719de95010fbf2c5a20000000000000000 + + +30135 +0d2600000001000000000000036e733103666a66026e6c0000010001 +0d2680000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30136 +2071000000010000000000002439623230323435312d663538342d343531622d386134622d346635663864363339356462065f6d736463730764736132303030026e6c0000060001 +2071840300010000000100002439623230323435312d663538342d343531622d386134622d346635663864363339356462065f6d736463730764736132303030026e6c0000060001c04000060001000038400036026e730f646f6d61696e2d7265676973747279c0400a686f73746d6173746572c0570bf1e540000070800000384000278d0000003840 + +30137 +029b000000010000000000000c6b7a6f6164766f636174656e026e6c0000010001 +029b800000010000000200000c6b7a6f6164766f636174656e026e6c0000010001c00c00020001000151800013026e730a636c617373696377656203636f6d00c00c00020001000151800006036e7332c030 + +30138 +1cd7000000010000000000000377777706626173746572026e6c0000010001 +1cd7800000010000000200000377777706626173746572026e6c0000010001c0100002000100015180000f036e7331056279303037036e657400c01000020001000151800006036e7332c02f + +30139 +adae00000001000000000000076e696a626f7267026e6c0000010001 +adae80000001000000020002076e696a626f7267026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c014c00c00020001000151800006036e7332c02cc0280001000100015180000450416028c04300010001000151800004c356780c + +30140 +b6722e745010fc0050ee0000000000000000 +b672ae740000000000000000 + +30141 +0e1900000001000000000000067768646e7331056577656b61026e6c0000010001 +0e1980000001000000020002067768646e7331056577656b61026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7333c013c02d0001000100015180000451ab6504c03f0001000100015180000451ab660e + +30142 +b9e1000000010000000000000377777709666f746f666f6c696f026e6c0000010001 +b9e1800000010000000200020377777709666f746f666f6c696f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +30143 +4f7928000001000000020000026e6c00000600012439623230323435312d663538342d343531622d386134622d346635663864363339356462065f6d736463730764736132303030026e6c00000500ff000000000000c0140005000100000258001c0f4453412d323030302d5345525645520764736132303030026e6c00 +4f79a8040000000000000000 + +30144 +b6722e745018fc00071f00000091c7a6000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afc98403c4e180003000000344e544c4d535350000100000097b208e0080008002c0000000c000c0020000000504c414e4e494e472d494e544e4b4f45524945520000 +b672ae740000000000000000 + +30145 +5513000000010000000000000377777717656572737465636872697374656c696a6b6c796365756d026e6c0000010001 +5513840300010000000100000377777717656572737465636872697374656c696a6b6c796365756d026e6c0000010001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +30146 +0000000070024000b5a300000204057a01010402 +000080010000000000000000 + +30147 +0e2000000001000000000000037777770974656c656772616166026e6c0000010001 +0e2080000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +30148 +7a81000000010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 +7a81800200010000000000000331333003313434033137360331393307696e2d61646472046172706100000c0001 + +30149 +3e47000000010000000000000377777708636172706f696e74026e6c0000010001 +3e47800000010000000200020377777708636172706f696e74026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c019c01000020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +30150 +b673057f501041b824730000000000000000 +b67380010000000000000000 + +30151 +2d3200000001000000000000036e73340767617574656e67026e6c0000010001 +2d3280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30152 +b673057f501841b86c7200000095bcc0000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 +b67380010000000000000000 + +30153 +b673058d501141aa23db0000000000000000 +b67380010000000000000000 + +30154 +000000007002400032f400000204057a01010402 +000080010000000000000000 + +30155 +b6722e825011fbf2505a0000000000000000 +b672ae840000000000000000 + +30156 +b673058e501041aa23da0000000000000000 +b67380010000000000000000 + +30157 +b673a2cf501041b804730000000000000000 + + +30158 +b673a2cf501841b8d533000000953500000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 + + +30159 +7f110000000100000000000008544c414c415430310d746f6c6c6c6f67696332303030026e6c0000060001 +7f118403000100000001000008544c414c415430310d746f6c6c6c6f67696332303030026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +30160 +000000007002fc00bb6f00000204057801010402 +000080010000000000000000 + +30161 +b1880000000100000000000003777777066b75746a6f62026e6c0000010001 +b1888000000100000002000003777777066b75746a6f62026e6c0000010001c01000020001000151800010036e73610674696e74656c03636f6d00c01000020001000151800006036e7362c02f + +30162 +47e600000001000000000000036e733207656e6572676973026e6c0000260001 +47e680000001000000020002036e733207656e6572676973026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c3079102c00c00010001000151800004c307920a + +30163 +220a0000000100000000000007706f656c6d616e026e6c00000f0001 +220a8000000100000002000207706f656c6d616e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +30164 +b673a2dd501141aa03db0000000000000000 + + +30165 +00000000700240004e5b00000204057a01010402 +000080010000000000000000 + +30166 +8f77000000010000000000000a626c617577706c616174026e6c00000f0001 +8f77800000010000000200000a626c617577706c616174026e6c00000f0001c00c00020001000151800014046e7331300a636f6d7075746f6f6c7302626500c00c00020001000151800007046e733131c030 + +30167 +b6722e835010fbf250590000000000000000 +b672ae840000000000000000 + +30168 +b673a2de501041aa03da0000000000000000 + + +30169 +b674f779501041b8cb2e0000000000000000 + + +30170 +b674f779501841b823af00000095ad40000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 + + +30171 +fb2700000001000000000000037777770467757973026e6c0000010001 +fb2780000001000000020000037777770467757973026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c02f + +30172 +b674f787501141aaca960000000000000000 + + +30173 +1c240000000100000000000003777777076e6574706f6c6c026e6c0000010001 +1c248000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +30174 +b674219e5010fc000fd50000000000000000 +b674a1930000000000000000 + +30175 +434400000001000000000000095f6b65726265726f73045f746370026463065f6d736463730764736132303030026e6c0000060001 +434484030001000000010000095f6b65726265726f73045f746370026463065f6d736463730764736132303030026e6c0000060001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +30176 +2cba000000010000000000000377777706757064617465026e6c0000010001 +2cba800000010000000200020377777706757064617465026e6c0000010001c01000020001000151800018067365727665720e666c6974732d696e7465726e6574c017c0100002000100015180000a0773657276657232c032c02b00010001000151800004d5a0da82c04f00010001000151800004d5a0da84 + +30177 +b674f788501041aaca950000000000000000 + + +30178 +0d0200000001000000000000023338033136370137033139350964796e61626c6f636b07656173796e6574026e6c0000100001 +0d0280000001000000020002023338033136370137033139350964796e61626c6f636b07656173796e6574026e6c0000100001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +30179 +b674219e5018fc0075b20000009117fa000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afc98403c4e180003000000344e544c4d535350000100000097b208e0080008002c0000000c000c0020000000504c414e4e494e472d494e544e4b4f45524945520000 +b674a1930000000000000000 + +30180 +4f7c28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730764736132303030026e6c00002100010000025800220000006400580f4453412d323030302d5345525645520764736132303030026e6c00 +4f7ca8040000000000000000 + +30181 +3aee00000001000000000000037777770b6b726f6f6e6b6f7a696a6e026e6c0000010001 +3aee80000001000000020002037777770b6b726f6f6e6b6f7a696a6e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +30182 +00000000700240005e6e00000204057a01010402 +000080010000000000000000 + +30183 +b6758667501041b84c530000000000000000 + + +30184 +b6758667501841b83393000000951d80000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 + + +30185 +b67421ac5011fbf20f410000000000000000 +b674a1a30000000000000000 + +30186 +b6758675501141aa4bbb0000000000000000 + + +30187 +0000000070024000834f00000204057a01010402 +000080010000000000000000 + +30188 +b6758676501041aa4bba0000000000000000 + + +30189 +b6764c30501041b8ab6a0000000000000000 +b676cc340000000000000000 + +30190 +b6764c30501841b81b6b0000009595c0000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 +b676cc340000000000000000 + +30191 +b67421ad5010fbf20f400000000000000000 +b674a1a30000000000000000 + +30192 +b6764c3e501141aaaad20000000000000000 +b676cc340000000000000000 + +30193 +3d4800000001000000000000037777770c65787472616e657473697465026e6c0000010001 +3d4880000001000000020000037777770c65787472616e657473697465026e6c0000010001c01000020001000151800015036e73370b686f7374696e67776f7278036e657400c01000020001000151800006036e7338c035 + +30194 +0000000070024000b5d500000204057a01010402 +000080010000000000000000 + +30195 +125a0000000100000000000003616b64026e6c0000ff0001 +125a8000000100000002000103616b64026e6c0000ff0001c00c0002000100015180000e026e730864656c6f69747465c010c00c00020001000151800013036e7332026e6c0669676e697465036e657400c02400010001000151800004aac21423 + +30196 +b6764c3f501041aaaad10000000000000000 +b676cc340000000000000000 + +30197 +b676e889501041b841970000000000000000 + + +30198 +b676e889501841b83958000000950e00000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afcec403c4e6c0003000000364e544c4d535350000100000097b200e0070007002f0000000f000f00200000004453412d323030302d534552564552445341323030300000 + + +30199 +a3f00000000100000000000003777777086c69626964666974026e6c0000010001 +a3f08000000100000002000003777777086c69626964666974026e6c0000010001c01000020001000151800014036e73310b706978656c64657369676e02626500c01000020001000151800006036e7332c031 + +30200 +9edb00000001000000000000076772696666696e0473696f32026e6c0000010001 +9edb80000001000000030002076772696666696e0473696f32026e6c0000010001c0140002000100015180000d036e733106776964657873c019c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +30201 +7c14000000010000000000000e61726e6f6c642d73696564736d61026e6c0000ff0001 +7c14800000010000000200000e61726e6f6c642d73696564736d61026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c033 + +30202 +b676e897501141aa40ff0000000000000000 + + +30203 +1fda000000010000000000000573746174730b647269766572736f6e6c79026e6c0000010001 +1fda800000010000000200020573746174730b647269766572736f6e6c79026e6c0000010001c01200020001000151800009036e7331026973c01ec01200020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +30204 +b676e898501041aa40fe0000000000000000 + + +30205 +98db00000001000000000000037777770b636565736c756262657273026e6c0000010001 +98db80000001000000020002037777770b636565736c756262657273026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +30206 +7e8800000001000000000000086d65756c656d616e026e6c00000f0001 +7e8880000001000000020002086d65756c656d616e026e6c00000f0001c00c0002000100015180000f036e73330874656c6562797465c015c00c00020001000151800006036e7334c02dc02900010001000151800004d5d38115c04400010001000151800004d5d38116 + +30207 +5db4000000010000000000000777616e61646f6f026e6c00000f0001 +5db4800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +30208 +5b450000000100000000000013535449434854494e47554e49544e4554524343026e6c0000020001 +5b458403000100000001000013535449434854494e47554e49544e4554524343026e6c0000020001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +30209 +c6680000000100000000000005616e67656c0c726567696f706f7274616c73026e6c0000010001 +c6688000000100000003000305616e67656c0c726567696f706f7274616c73026e6c0000010001c01200020001000151800010036e733109776973652d67757973c01fc01200020001000151800006036e7330c037c01200020001000151800006036e7332c037c03300010001000151800004d413cd91c04f00010001000151800004d413cd8fc06100010001000151800004c16d7a3e + +30210 +de1e00000001000000000000087a7569646b6f6f70026e6c0000010001 +de1e80000001000000020002087a7569646b6f6f70026e6c0000010001c00c000200010001518000110a6c65757665686176656e03696772c015c00c0002000100015180000d0a64656c6673686176656ec034c029000100010001518000043e2d5e0dc046000100010001518000043e2d5e82 + +30211 +7189000000010000000000000e657863656c6c656e746d61746368026e6c0000ff0001 +7189800000010000000200020e657863656c6c656e746d61746368026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec01bc00c00020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +30212 +c9f20000000100000000000004706f7033036b6b6e026e6c0000010001 +c9f28000000100000002000204706f7033036b6b6e026e6c0000010001c01100020001000151800011026e730b76736d2d686f7374696e67c015c01100020001000151800006036e7332c02cc02900010001000151800004d468c205c04600010001000151800004d468c204 + +30213 +b54a0000000100000000000005616e67656c0c726567696f706f7274616c73026e6c0000010001 +b54a8000000100000003000305616e67656c0c726567696f706f7274616c73026e6c0000010001c01200020001000151800010036e733109776973652d67757973c01fc01200020001000151800006036e7330c037c01200020001000151800006036e7332c037c03300010001000151800004d413cd91c04f00010001000151800004d413cd8fc06100010001000151800004c16d7a3e + +30214 +6bfe000000010000000000000170066f6d726f6570026e6c0000010001 +6bfe800000010000000200020170066f6d726f6570026e6c0000010001c00e00020001000151800009066d696e6e6965c00ec00e0002000100015180000805726f62696ec00ec02900010001000151800004913a1e04c03e00010001000151800004913a1a34 + +30215 +159e00000001000000000000037777770b6865696469706f74746572026e6c0000010001 +159e80000001000000020000037777770b6865696469706f74746572026e6c0000010001c01000020001000151800010036e73610674696e74656c03636f6d00c01000020001000151800006036e7362c034 + +30216 +1dd700000001000000000000037777770470756e74026e6c0000010001 +1dd780000001000000020002037777770470756e74026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c015c01000020001000151800006036e7332c02dc02900010001000151800004d4ccd865c044000100010001518000045054ec34 + +30217 +6cae0000000100000000000006776468303131066e7434616c6c026e6c0000010001 +6cae8000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +30218 +e313000000010000000000000469632d73026e6c0000ff0001 +e313800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30219 +6501000000010000000000000876616b616e746965096f7665727a69636874026e6c0000010001 +6501800000010000000300030876616b616e746965096f7665727a69636874026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c033000100010001518000043e45a282c045000100010001518000043e45a283c057000100010001518000043e45a284 + +30220 +a89900000001000000000000036e733109666972737466696e64026e6c0000010001 +a89980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30221 +a89a00000001000000000000036e733209666972737466696e64026e6c0000010001 +a89a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30222 +07fc0000000100000000000003777777086762617061727479026e6c0000010001 +07fc8000000100000002000003777777086762617061727479026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c032 + +30223 +8ff100000001000000000000037777770e6161612d6d61696e737472656574026e6c0000010001 +8ff180000001000000020001037777770e6161612d6d61696e737472656574026e6c0000010001c01000020001000151800012036e733208637563756d62657203636f6d00c0100002000100015180000e036e73320763697374726f6ec01fc051000100010001518000043ed81f38 + +30224 +e3a600000001000000000000076275726d656573026e6c0000010001 +e3a680000001000000020000076275726d656573026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02e + +30225 +2cc700000001000000000000037777770c72616d656e63656e7472756d026e6c0000010001 +2cc780000001000000020000037777770c72616d656e63656e7472756d026e6c0000010001c0100002000100015180000c036e723105692d702d64c01dc01000020001000151800006036e7232c035 + +30226 +a89c00000001000000000000036e733109666972737466696e64026e6c0000010001 +a89c80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30227 +a89d00000001000000000000036e733209666972737466696e64026e6c0000010001 +a89d80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30228 +65b100000001000000000000037777770562696e636b026e6c0000010001 +65b180000001000000020002037777770562696e636b026e6c0000010001c0100002000100015180000b036e73310470696e65c016c01000020001000151800006036e7332c02ec02a00010001000151800004d59c0201c04100010001000151800004c3c1a303 + +30229 +1aa9000000010000000000000c696e746572636c6173736963026e6c0000ff0001 +1aa9800000010000000200020c696e746572636c6173736963026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +30230 +cf1800000001000000000000037777770764626332303033026e6c0000010001 +cf1880000001000000030003037777770764626332303033026e6c0000010001c01000020001000151800011046e7365310963617067656d696e69c018c01000020001000151800007046e736532c031c0100002000100015180000b086e732d69736d3031c031c02c00010001000151800004c6b8e70dc04900010001000151800004c6b8e70cc05c00010001000151800004d5f4a024 + +30231 +38640000000100000000000003777777076461797a657273026e6c0000010001 +38648000000100000002000003777777076461797a657273026e6c0000010001c01000020001000151800011036e7333076361706361766503636f6d00c01000020001000151800006036e7334c030 + +30232 +df850000000100000000000003777777077374656d76616e026e6c0000010001 +df858000000100000002000103777777077374656d76616e026e6c0000010001c0100002000100015180000a036e733303777873c018c01000020001000151800006036e7334c030c04200010001000151800004d5ef9a65 + +30233 +eaec00000001000000000000037777770a6d61726b766462757267026e6c0000010001 +eaec80000001000000020000037777770a6d61726b766462757267026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +30234 +a62500000001000000000000046d61696c09736f6e6e6568757973026e6c0000010001 +a62580000001000000020002046d61696c09736f6e6e6568757973026e6c0000010001c01100020001000151800010036e733109686f73746e65746276c01bc01100020001000151800006036e7332c033c02f0001000100015180000451113264c04b00010001000151800004d5c42851 + +30235 +d7c70000000100000000000005737076646c026e6c00000f0001 +d7c78000000100000002000205737076646c026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +30236 +a92a00000001000000000000046d61696c0d70616e6461736f667477617265026e6c0000010001 +a92a80000001000000020000046d61696c0d70616e6461736f667477617265026e6c0000010001c0110002000100015180000c03646e73036b706e02626500c01100020001000151800005026e73c037 + +30237 +e7660000000100000000000006636861726973026e6c00000f0001 +e7668000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +30238 +e02a000000010000000000000d686565726875676f7761617264026e6c00000f0001 +e02a800000010000000200000d686565726875676f7761617264026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c01ac00c0002000100015180000704686e7331c033 + +30239 +06890000000100000000000009652d6c756e61746963026e6c0000010001 +06898000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30240 +ed7c000000010000000000000b626561747269786f6f7264026e6c0000010001 +ed7c800000010000000200020b626561747269786f6f7264026e6c0000010001c00c0002000100015180000a036e733103617a67c018c00c0002000100015180000e036e733107737572666e6574c018c02c00010001000151800004c057175cc04200010001000151800004c0576a65 + +30241 +154000000001000000000000036e73330767617574656e67026e6c0000010001 +154080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30242 +81a3000000010000000000000d73616c6c616e6473686f657665026e6c00000f0001 +81a3800000010000000200020d73616c6c616e6473686f657665026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c01ac00c00020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +30243 +0dfc00000001000000000000036e733203666a66026e6c0000010001 +0dfc80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30244 +0dfd00000001000000000000036e733103666a66026e6c0000010001 +0dfd80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30245 +818e00000001000000000000037777770668736e6f656b026e6c0000010001 +818e80000001000000030000037777770668736e6f656b026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c033c0100002000100015180000a076e73686f737433c033 + +30246 +3894000000010000000000000377777708646967696465736b026e6c0000010001 +3894800000010000000200020377777708646967696465736b026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c019c01000020001000151800006036e7332c031c02d00010001000151800004505fa002c04800010001000151800004505fac02 + +30247 +0e0700000001000000000000036e733203666a66026e6c0000010001 +0e0780000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30248 +0e0800000001000000000000036e733103666a66026e6c0000010001 +0e0880000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30249 +34f100000001000000000000026e73076e65746c616e64026e6c0000010001 +34f180000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +30250 +e218000000010000000000000c647061706c6161747765726b026e6c00000f0001 +e218800000010000000200010c647061706c6161747765726b026e6c00000f0001c00c0002000100015180000a036e733303777873c019c00c00020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +30251 +c85700000001000000000000036e7332076e65746c616e64026e6c0000010001 +c85780000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +30252 +d51400000001000000000000056d6f70726f026e6c00000f0001 +d51480000001000000030001056d6f70726f026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +30253 +cc6f00000001000000000000037777770b73616c73616f6e6c696e65026e6c0000010001 +cc6f80000001000000020000037777770b73616c73616f6e6c696e65026e6c0000010001c0100002000100015180001104726171390662697a6e697a036e657400c01000020001000151800008057261713134c035 + +30254 +40c000000001000000000000067069636c616e026e6c0000060001 +40c084030001000000010000067069636c616e026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +30255 +d68f00000001000000000000037777770964657272616d61646f026e6c0000010001 +d68f84030001000000010000037777770964657272616d61646f026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +30256 +63bf000000010000000000000732303030737276067069636c616e026e6c0000060001 +63bf840300010000000100000732303030737276067069636c616e026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +30257 +5dea000000010000000000000377777704696b6561026e6c0000010001 +5dea800000010000000200000377777704696b6561026e6c0000010001c010000200010001518000150a676174656b656570657204696b656103636f6d00c010000200010001518000130761757468323130026e73027575036e657400 + +30258 +c1e000000001000000000000037777770664757061636f026e6c0000010001 +c1e080000001000000020001037777770664757061636f026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02b00010001000151800004d586fa2b + +30259 +686c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +686c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30260 +ca5600000001000000000000086d61746368346d65026e6c0000ff0001 +ca5680000001000000020000086d61746368346d65026e6c0000ff0001c00c00020001000151800017036e73310d666c79696e6773657276657273036e657400c00c00020001000151800006036e7332c02d + +30261 +4512000000010000000000000377777709626f6f7473636c7562026e6c0000010001 +4512800000010000000200020377777709626f6f7473636c7562026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01ac01000020001000151800006036e7332c032c02e000100010001518000045054f347c04a000100010001518000043e94a047 + +30262 +154c00000001000000000000036e73340767617574656e67026e6c0000010001 +154c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30263 +255400000001000000000000036e73340767617574656e67026e6c0000010001 +255480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30264 +3d5b00000001000000000000036e73340767617574656e67026e6c0000010001 +3d5b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30265 +056000000001000000000000036e73340767617574656e67026e6c0000010001 +056080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30266 +256800000001000000000000036e73340767617574656e67026e6c0000010001 +256880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30267 +d8ce00000001000000000000097061726e6173736961026e6c00000f0001 +d8ce80000001000000020000097061726e6173736961026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c030 + +30268 +3b6a00000001000000000000037777770a6364636b6c696e69656b026e6c0000010001 +3b6a80000001000000020002037777770a6364636b6c696e69656b026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +30269 +dcc900000001000000000000086d61746368346d65026e6c0000010001 +dcc980000001000000020000086d61746368346d65026e6c0000010001c00c00020001000151800017036e73310d666c79696e6773657276657273036e657400c00c00020001000151800006036e7332c02d + +30270 +28c200000001000000000000036e73310f6578636c757369766564657369676e026e6c0000010001 +28c280000001000000020002036e73310f6578636c757369766564657369676e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d97261bec04200010001000151800004d97261bd + +30271 +6e5000000001000000000000055f6c646170045f7463700a6b65756b656e68756973026e6c0000060001 +6e5080000001000000020002055f6c646170045f7463700a6b65756b656e68756973026e6c0000060001c0170002000100015180000d026e73076e65746c616e64c022c01700020001000151800006036e7332c039c03600010001000151800004d9aa2042c04f00010001000151800004d9aa2c06 + +30272 +163a00000001000000000000046d61696c0965647761726476616c026e6c0000010001 +163a80000001000000020002046d61696c0965647761726476616c026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01bc01100020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +30273 +63540000000100000000000005646e732d31056c61646f74026e6c0000010001 +63548000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30274 +431d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +431d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30275 +4396000000010000000000000a62696762726f74686572026e6c00000f0001 +4396800000010000000300030a62696762726f74686572026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c017c00c0002000100015180000a076e736175746832c033c00c0002000100015180000a076e736175746833c033c02b00010001000151800004d5880c33c04500010001000151800004d5880c3bc05b00010001000151800004d4ccc00b + +30276 +a7c40000000100000000000006787334616c6c026e6c0000010001 +a7c48000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +30277 +38ad00000001000000000000026e73057465747261026e6c00001c0001 +38ad80000001000000020002026e73057465747261026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000045059e887c037000100010001518000045059e88b + +30278 +853600000001000000000000026e73057465747261026e6c0000260001 +853680000001000000020002026e73057465747261026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000045059e887c037000100010001518000045059e88b + +30279 +162100000001000000000000036e7332057465747261026e6c00001c0001 +162180000001000000020002036e7332057465747261026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a000100010001518000045059e887c00c000100010001518000045059e88b + +30280 +fe9b00000001000000000000036e7332057465747261026e6c0000260001 +fe9b80000001000000020002036e7332057465747261026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a000100010001518000045059e887c00c000100010001518000045059e88b + +30281 +b56b000000010000000000000377777705616b617261026e6c0000010001 +b56b800000010000000200000377777705616b617261026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c02f + +30282 +089200000001000000000000056d6f70726f026e6c0000010001 +089280000001000000030001056d6f70726f026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +30283 +d7fb0000000100000000000004736d7470046c756e61026e6c0000010001 +d7fb8000000100000002000004736d7470046c756e61026e6c0000010001c01100020001000151800017026e7309726f7474657264616d046c756e61036e657400c0110002000100015180000f026e7309686f6f6664646f7270c037 + +30284 +27da00000001000000000000026e6e026e6c00001c0001 +27da80000001000000020002026e6e026e6c00001c0001c00c0002000100015180000a036e733103696e67c00fc00c00020001000151800006036e7332c027c0230001000100015180000491dd19c2c0390001000100015180000491dd5dc2 + +30285 +4e9c000000010000000000000377777708746f737472616d73026e6c0000010001 +4e9c800000010000000200010377777708746f737472616d73026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c019c01000020001000151800011036e7332076e6564636f6d70036f726700c02d00010001000151800004c3c1a80d + +30286 +aa5600000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +aa5680000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +30287 +1c9d00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +1c9d80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +30288 +712a00000001000000000000046d61696c086f6e7367726f6570026e6c0000010001 +712a80000001000000020002046d61696c086f6e7367726f6570026e6c0000010001c011000200010001518000110a6c65757665686176656e03696772c01ac0110002000100015180000d0a64656c6673686176656ec039c02e000100010001518000043e2d5e0dc04b000100010001518000043e2d5e82 + +30289 +7ff400000001000000000000037777770c7374657272656e6265757273026e6c0000010001 +7ff480000001000000020000037777770c7374657272656e6265757273026e6c0000010001c0100002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01000020001000151800007046e6f7661c036 + +30290 +4e890000000100000000000003656c3107696e7465727873026e6c0000010001 +4e898000000100000002000203656c3107696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +30291 +5bf60000000100000000000003656c3207696e7465727873026e6c0000010001 +5bf68000000100000002000203656c3207696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +30292 +8ee70000000100000000000003656c3307696e7465727873026e6c0000010001 +8ee78000000100000002000203656c3307696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +30293 +c0520000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c0528000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30294 +f0500000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +f0508000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30295 +6b2900100001000000000001036e733104686f6d65026e6c00000100010000290800000080000000 +6b2980000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +30296 +296400100001000000000001036e733204686f6d65026e6c00000100010000290800000080000000 +296480000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +30297 +94b200100001000000000001036e733304686f6d65026e6c00000100010000290800000080000000 +94b280000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +30298 +ca5900100001000000000001036e733404686f6d65026e6c00000100010000290800000080000000 +ca5980000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +30299 +1dc00000000100000000000009737469637a61612d300364736c0b7669616e6574776f726b73026e6c0000010001 +1dc08000000100000002000209737469637a61612d300364736c0b7669616e6574776f726b73026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac03a00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +30300 +93c100000001000000000000036e733103617474026e6c0000010001 +93c180000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +30301 +c97100000001000000000000036e733203617474026e6c0000010001 +c97180000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +30302 +9eb50000000100000000000018656c6a65732d706572736f6e65656c736469656e7374656e026e6c0000010001 +9eb58000000100000002000218656c6a65732d706572736f6e65656c736469656e7374656e026e6c0000010001c00c0002000100015180000903706b3102706bc025c00c0002000100015180000603706b32c03dc03900010001000151800004d43d1815c04e00010001000151800004d43d1818 + +30303 +409d0000000100000000000004706f70330a636f6e63657074736661026e6c00001c0001 +409d8000000100000002000204706f70330a636f6e63657074736661026e6c00001c0001c0110002000100015180000603646e73c011c0110002000100015180001004646e733208636f6e6365707473c01cc03000010001000151800004d5c51c03c04200010001000151800004d5c51e1c + +30304 +4aac000000010000000000000377777705726164696f026e6c0000010001 +4aac800000010000000200000377777705726164696f026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c031 + +30305 +16b60000000100000000000008686f73746e616d650462696e640000100003 +16b68000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +30306 +7cd400000001000000000000026e73036d6c63026e6c0000010001 +7cd480000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +30307 +2789000000010000000000000f6b656d70656c656b74726f6e696b73026e6c00000f0001 +2789800000010000000200020f6b656d70656c656b74726f6e696b73026e6c00000f0001c00c0002000100015180000e036e7331077472696f646573c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5c9d865c04a00010001000151800004d5c9d866 + +30308 +0a57000000010000000000000377777708637463656e746572026e6c0000010001 +0a57840300010000000100000377777708637463656e746572026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +30309 +8aae0000000100000000000006474556454b4503575442024e4c0000ff0001 +8aae8000000100000002000206474556454b4503575442024e4c0000ff0001c0130002000100015180000e036e73310765766964656e74c017c01300020001000151800006036e7332c02fc02b00010001000151800004c36d19c4c04500010001000151800004c36d1942 + +30310 +5fd3000000010000000000000a70617274796d6f6c656e026e6c0000ff0001 +5fd3800000010000000200000a70617274796d6f6c656e026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c017c00c00020001000151800006036e7332c02e + +30311 +9858000000010000000000000377777707636f6e74696e75026e6c0000010001 +9858800000010000000300020377777707636f6e74696e75026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +30312 +460c000000010000000000000377777707636c7562303730026e6c0000010001 +460c800000010000000200020377777707636c7562303730026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c018c01000020001000151800006036e7332c030c02c000100010001518000045054f347c048000100010001518000043e94a047 + +30313 +a81900000001000000000000036e733104686f6d65026e6c0000010001 +a81980000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +30314 +053e00000001000000000000036e733109666972737466696e64026e6c0000010001 +053e80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30315 +ecc300000001000000000000116465776f6f6e6d696a7a61616e73746164026e6c0000010001 +ecc380000001000000020002116465776f6f6e6d696a7a61616e73746164026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c01ec00c00020001000151800006036e7332c036c03200010001000151800004d43d0f08c05000010001000151800004d43d19e2 + +30316 +841200000001000000000000036e733104686f6d65026e6c0000010001 +841280000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +30317 +420900000001000000000000036e733204686f6d65026e6c0000010001 +420980000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +30318 +021100000001000000000000036e733304686f6d65026e6c0000010001 +021180000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +30319 +483100000001000000000000036e733404686f6d65026e6c0000010001 +483180000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +30320 +11490000000100000000000006666178737276064241494c4559086261696c65792d69026e6c0000060001 +11498403000100000001000006666178737276064241494c4559086261696c65792d69026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +30321 +42d300000001000000000000046c69736103796f77026e6c0000010001 +42d380000001000000020000046c69736103796f77026e6c0000010001c01100020001000151800010046c697361086e6f7661686f7374c015c01100020001000151800006036e7332c02e + +30322 +4cf3000000010000000000000377777709636172706d75736963026e6c0000010001 +4cf3800000010000000200020377777709636172706d75736963026e6c0000010001c01000020001000151800013036e73310c666173747365727665723131c01ac01000020001000151800006036e7332c032c02e0001000100015180000442a4f077c04d0001000100015180000442a4f078 + +30323 +8820000000010000000000000377777706667973696f6e026e6c0000010001 +8820800000010000000300020377777706667973696f6e026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c017c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c02fc02b000100010001518000045054e055c06400010001000151800004d4ccc655 + +30324 +f07000100001000000000001034e53320743495354524f4e024e4c00000100010000290800000000000000 +f07080000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +30325 +112700000001000000000000036e733209666972737466696e64026e6c0000010001 +112780000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30326 +19070000000100000000000003626e63026e6c00000f0001 +19078000000100000002000203626e63026e6c00000f0001c00c00020001000151800018067365727665720e666c6974732d696e7465726e6574c010c00c0002000100015180000a0773657276657232c02bc02400010001000151800004d5a0da82c04800010001000151800004d5a0da84 + +30327 +0a8f0000000100000000000007766462636f6d70026e6c00001c0001 +0a8f8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +30328 +04b328000001000200000000026e6c000006000106666178737276064241494c4559086261696c65792d69026e6c00000500fe000000000000c014000100010000000000040a001440 +04b3a8040000000000000000 + +30329 +36d100000001000000000000036e733109666972737466696e64026e6c0000010001 +36d180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30330 +12d600000001000000000000036e733209666972737466696e64026e6c0000010001 +12d680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30331 +d55f000000010000000000000377777707636272636c7562026e6c0000010001 +d55f800000010000000200020377777707636272636c7562026e6c0000010001c01000020001000151800011036e73310a667574757265666c6578c018c01000020001000151800006036e7332c030c02c00010001000151800004d9aa122bc04900010001000151800004d9aa122c + +30332 +460a00000001000000000000036e73310a62726f61646669656c64026e6c0000010001 +460a80000001000000020002036e73310a62726f61646669656c64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cb1732c03d00010001000151800004d55486da + +30333 +c77b00000001000000000000036e73320a62726f61646669656c64026e6c0000010001 +c77b80000001000000020002036e73320a62726f61646669656c64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d4cb1732c00c00010001000151800004d55486da + +30334 +8bd000000001000000000000037777770a74696e7573736d697473026e6c0000010001 +8bd080000001000000020000037777770a74696e7573736d697473026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +30335 +9d1a00000001000000000000037777770b6d6f7368692d6d6f736869026e6c0000010001 +9d1a80000001000000020000037777770b6d6f7368692d6d6f736869026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +30336 +86400010000100000000000104626c313602626c06787334616c6c026e6c00000100010000290800000080000000 +86408000000100000003000304626c313602626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d09630000291000000000000000 + +30337 +0220000000010000000000000276330a646d64656c6976657279026e6c0000010001 +0220800000010000000200000276330a646d64656c6976657279026e6c0000010001c00f00020001000151800010036e73310673697465347503636f6d00c00f00020001000151800006036e7332c032 + +30338 +5e96000000010000000000000377777709677269667464696a6b026e6c0000010001 +5e96800000010000000200000377777709677269667464696a6b026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c032 + +30339 +000000007002400095d800000204056401010402 +000080010000000000000000 + +30340 +b67b1e67501040b0eca90000000000000000 +b67b9e640000000000000000 + +30341 +b67b1e67501840b0d66800000089f180000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd03403c4e8300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004641585352564241494c45590000 +b67b9e640000000000000000 + +30342 +61ff0000000100000000000004626c313602626c06787334616c6c026e6c0000010001 +61ff8000000100000003000204626c313602626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +30343 +a2830000000100000000000010534d49544853555045524d41524b4554026e6c0000020001 +a2838403000100000001000010534d49544853555045524d41524b4554026e6c0000020001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +30344 +b67b1e75501140a2ec1d0000000000000000 +b67b9e740000000000000000 + +30345 +746300000001000000000000036e733106736f6c636f6e026e6c0000010001 +746380000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +30346 +40dc00000001000000000000036e733106736f6c636f6e026e6c0000260001 +40dc80000001000000030003036e733106736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +30347 +907a00000001000000000000036e733206736f6c636f6e026e6c0000010001 +907a80000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +30348 +243100000001000000000000036e733206736f6c636f6e026e6c0000260001 +243180000001000000030003036e733206736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +30349 +e0fa0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +e0fa8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +30350 +f07d0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000260001 +f07d8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000260001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +30351 +0000000070024000693a00000204056401010402 +000080010000000000000000 + +30352 +e9ca00000001000000000000037777770462797878026e6c0000010001 +e9ca80000001000000020002037777770462797878026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +30353 +b67b1e76501040a2ec1c0000000000000000 +b67b9e740000000000000000 + +30354 +d6ec00000001000000000000036e73310564656d6f6e026e6c0000010001 +d6ec80000001000000030002036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +30355 +d6ec00000001000000000000036e73310564656d6f6e026e6c0000010001 +d6ec80000001000000030002036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +30356 +b67bf069501040b0ee080000000000000000 + + +30357 +b12b00000001000000000000036e7331096475746368686f7374026e6c0000010001 +b12b80000001000000020001036e7331096475746368686f7374026e6c0000010001c0100002000100015180000b0861737465726f7065c010c0100002000100015180000c036e733205786c722d38c01ac02e00010001000151800004d58523d2 + +30358 +565100000001000000000000036e7332096475746368686f7374026e6c0000010001 +565180000001000000020001036e7332096475746368686f7374026e6c0000010001c0100002000100015180000b0861737465726f7065c010c0100002000100015180000c036e733205786c722d38c01ac02e00010001000151800004d58523d2 + +30359 +b67bf069501840b024c800000089a680000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd03403c4e8300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004641585352564241494c45590000 + + +30360 +0d8c00000001000000000000036e73330767617574656e67026e6c0000010001 +0d8c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30361 +707500000001000000000000034e53320743495354524f4e024e4c0000010001 +707580000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +30362 +1d6f00000001000000000000097765626775727530350777656267757275026e6c0000010001 +1d6f80000001000000020000097765626775727530350777656267757275026e6c0000010001c01600020001000151800012026e73096e6c686f7374696e67036e657400c01600020001000151800006036e7331c035 + +30363 +b67bf077501140a2ed7c0000000000000000 + + +30364 +0f6700000001000000000000036e733203666a66026e6c0000010001 +0f6780000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30365 +0f6800000001000000000000036e733103666a66026e6c0000010001 +0f6880000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30366 +340f00000001000000000000036e733109666972737466696e64026e6c0000010001 +340f80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30367 +0000000070024000124a00000204056401010402 +000080010000000000000000 + +30368 +893300000001000000000000037777770a64696b6b6572746a6573026e6c0000010001 +893380000001000000020000037777770a64696b6b6572746a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +30369 +52f000000001000000000000036e733209666972737466696e64026e6c0000010001 +52f080000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30370 +3cef000000010000000000000a7777773b6465726f656b026e6c0000010001 +3cef840300010000000100000a7777773b6465726f656b026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +30371 +4f62000000010000000000000377777706617265613137026e6c0000010001 +4f62800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +30372 +385e00000001000000000000096d61696c7363616e31086d6f76656e657874026e6c0000010001 +385e80000001000000030002096d61696c7363616e31086d6f76656e657874026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800012036e7333086d6f76656e657874036e657400c03300010001000151800004d4ccc445c04500010001000151800004d4ccf745 + +30373 +5ef4000000010000000000000377777706617265613137026e6c0000010001 +5ef4800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +30374 +b67bf078501040a2ed7b0000000000000000 + + +30375 +b67d7555501040b0122b0000000000000000 +b67df5540000000000000000 + +30376 +3e410000000100000000000005646e732d32056c61646f74026e6c0000010001 +3e418000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30377 +1bd2000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +1bd2800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30378 +b67d7555501840b0906a000000895d00000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd04403c4e8400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004641585352564241494c45590000 +b67df5540000000000000000 + +30379 +13d9000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +13d9800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30380 +b67d7563501140a2119f0000000000000000 +b67df5640000000000000000 + +30381 +d3d00000000100000000000005646e732d31056c61646f74026e6c0000010001 +d3d08000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30382 +731900000001000000000000037777770663656275636f026e6c0000010001 +731980000001000000020002037777770663656275636f026e6c0000010001c0100002000100015180000c036e7331056f72696f6ec017c01000020001000151800006036e7332c02fc02b00010001000151800004c2862282c04300010001000151800004c2862b02 + +30383 +2e9500000001000000000000037777770e6d616e6167656d656e74626f656b026e6c0000010001 +2e9580000001000000020000037777770e6d616e6167656d656e74626f656b026e6c0000010001c01000020001000151800017026e7309726f7474657264616d046c756e61036e657400c0100002000100015180000f026e7309686f6f6664646f7270c040 + +30384 +32d100000001000000000000036e7332056f72696f6e026e6c0000010001 +32d180000001000000020002036e7332056f72696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004c2862282c00c00010001000151800004c2862b02 + +30385 +f7a900000001000000000000037777770e6161612d6d61696e737472656574026e6c0000010001 +f7a980000001000000020001037777770e6161612d6d61696e737472656574026e6c0000010001c01000020001000151800012036e733208637563756d62657203636f6d00c0100002000100015180000e036e73320763697374726f6ec01fc051000100010001518000043ed81f38 + +30386 +b67d7564501040a2119e0000000000000000 +b67df5640000000000000000 + +30387 +e19a0000000100000000000009736b79726964657273026e6c0000010001 +e19a8000000100000002000009736b79726964657273026e6c0000010001c00c00020001000151800014026e730b736d617274736572766572036e657400c00c00020001000151800006036e7332c02d + +30388 +4bdd00000001000000000000036e7331056f72696f6e026e6c0000010001 +4bdd80000001000000020002036e7331056f72696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2862282c03800010001000151800004c2862b02 + +30389 +8053000000010000000000000a696a7373656c6865656d026e6c00000f0001 +8053800000010000000200020a696a7373656c6865656d026e6c00000f0001c00c00020001000151800013076a61736d696e6508696e667261636f6dc017c00c0002000100015180000a076f6d616c6c6579c033c02b00010001000151800004c323cb41c04a000100010001518000043e320fd3 + +30390 +0fa600000001000000000000036e733203666a66026e6c0000010001 +0fa680000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30391 +4783000000010000000000000d6f6479737365652d67726f6570026e6c00001c0001 +4783800000010000000200000d6f6479737365652d67726f6570026e6c00001c0001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c032 + +30392 +175f00000001000000000000036e73310b696e746572616363657373026e6c0000010001 +175f80000001000000030001036e73310b696e746572616363657373026e6c0000010001c01000020001000151800002c00cc0100002000100015180001a09756e616c72697330310a6963742d626568656572036e657400c0100002000100015180000c09756e616c7269733032c048c00c00010001000151800004c1ad2362 + +30393 +ee3300000001000000000000036e73310b696e746572616363657373026e6c0000260001 +ee3380000001000000030001036e73310b696e746572616363657373026e6c0000260001c01000020001000151800002c00cc0100002000100015180001a09756e616c72697330310a6963742d626568656572036e657400c0100002000100015180000c09756e616c7269733032c048c00c00010001000151800004c1ad2362 + +30394 +0fa700000001000000000000036e733103666a66026e6c0000010001 +0fa780000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30395 +0bdd0000000100000000000003777777057673686f70026e6c0000010001 +0bdd8000000100000003000003777777057673686f70026e6c0000010001c0100002000100015180001809776f7274656c746a650868696e6472696b73036e657400c0100002000100015180000a077065656e746a65c034c0100002000100015180001206706574727573086d696e64636f7079c03d + +30396 +375800000001000000000000036e733109666972737466696e64026e6c0000010001 +375880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30397 +0c1900000001000000000000036e733209666972737466696e64026e6c0000010001 +0c1980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30398 +e1ed00000001000000000000036e7331056175646178026e6c0000010001 +e1ed80000001000000020001036e7331056175646178026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02a00010001000151800004c1ad5519 + +30399 +90e900000001000000000000036e7331056175646178026e6c00001c0001 +90e980000001000000020001036e7331056175646178026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02a00010001000151800004c1ad5519 + +30400 +3e7d000000010000000000000c6b696e676d617363686f6f6c026e6c0000010001 +3e7d800000010000000200000c6b696e676d617363686f6f6c026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c033 + +30401 +332c0000000100000000000003696165026e6c00000f0001 +332c8000000100000002000203696165026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +30402 +1b80000000010000000000000377777705636363626c036f726708656d6561636f7265026e6c0000010001 +1b80840300010000000100000377777705636363626c036f726708656d6561636f7265026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +30403 +0d0b000000010000000000000e63656e747261616c626568656572026e6c0000010001 +0d0b800000010000000300030e63656e747261616c626568656572026e6c0000010001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +30404 +4fbc0000000100000000000004706f70330564656d6f6e026e6c0000010001 +4fbc8000000100000003000204706f70330564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +30405 +32f500000001000000000000046d61696c0e7a65656c616e642d737570706c79026e6c0000010001 +32f580000001000000020002046d61696c0e7a65656c616e642d737570706c79026e6c0000010001c0110002000100015180000a036e7331036e7873c020c01100020001000151800006036e7332c038c03400010001000151800004d973c015c04a00010001000151800004d973c102 + +30406 +1be40000000100000000000003777777096475696e7a69636874026e6c0000010001 +1be48000000100000002000203777777096475696e7a69636874026e6c0000010001c01000020001000151800010026e730a7a65656c616e646e6574c01ac01000020001000151800006036e7332c031c02e00010001000151800004d473c0c1c04a00010001000151800004d473c0c3 + +30407 +2362000000010000000000000377777708616432636c69636b026e6c0000010001 +2362800000010000000200020377777708616432636c69636b026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d5c40907c03f000100010001518000043eddd517 + +30408 +1b5a28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d736463730c6e7065727370656374696566026e6c00002100010000025800260000006401850e6e706572737065637469656630310c6e7065727370656374696566026e6c00 +1b5aa8040000000000000000 + +30409 +dff900000001000000000000037777770975736d61726b657473026e6c0000010001 +dff980000001000000030002037777770975736d61726b657473026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ac01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c032c02e000100010001518000045054e055c06700010001000151800004d4ccc655 + +30410 +b81200000001000000000000037777770975736d61726b657473026e6c0000010001 +b81280000001000000030002037777770975736d61726b657473026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ac01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c032c02e000100010001518000045054e055c06700010001000151800004d4ccc655 + +30411 +000000007002faf0d9cd00000204051e01010402 +000080010000000000000000 + +30412 +b67e3beb5010ffdc0e960000000000000000 +b67ebbe40000000000000000 + +30413 +b67e3beb5018ffdc1df400000099934e000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005d03677373096d6963726f736f667403636f6d00403afd1b403c4e9b00030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000004e504552535045435449454630314e50455253504543544945460000 +b67ebbe40000000000000000 + +30414 +b6e7000000010000000000000f706362656865657264656772616166026e6c0000ff0001 +b6e7800000010000000200000f706362656865657264656772616166026e6c0000ff0001c00c00020001000151800018036e73310e6e69762d776562686f7374696e6703636f6d00c00c00020001000151800006036e7332c034 + +30415 +b67e3bf95011ffce0dfa0000000000000000 +b67ebbf40000000000000000 + +30416 +000000007002faf0182100000204051e01010402 +000080010000000000000000 + +30417 +2d9b00000001000000000000036e73330767617574656e67026e6c0000010001 +2d9b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30418 +e91a000000010000000000000377777709647265616d6c616273026e6c0000010001 +e91a800000010000000200000377777709647265616d6c616273026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +30419 +b67e3bfa5010ffce0df90000000000000000 +b67ebbf40000000000000000 + +30420 +b67edec85010ffdcaa0b0000000000000000 + + +30421 +b67edec85018ffdc9cbb00000099b0fd000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403afd1b403c4e9b00030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000004e504552535045435449454630314e50455253504543544945460000 + + +30422 +105900000001000000000000036e733203666a66026e6c0000010001 +105980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30423 +105a00000001000000000000036e733103666a66026e6c0000010001 +105a80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30424 +105b00000001000000000000037777770c747261666669636368616d70026e6c0000010001 +105b80000001000000020000037777770c747261666669636368616d70026e6c0000010001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +30425 +88f80000000100000000000006657175696276026e6c00000f0001 +88f88000000100000002000206657175696276026e6c00000f0001c00c00020001000151800009036e7331026973c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5852102c03c00010001000151800004d5c41503 + +30426 +9eff0000000100000000000006636861726973026e6c00000f0001 +9eff8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +30427 +b67eded65011ffcea96f0000000000000000 + + +30428 +000000007002faf066bc00000204051e01010402 +000080010000000000000000 + +30429 +c64f000000010000000000000b61746c61736f6e6c696e650366686a026e6c0000010001 +c64f800000010000000200020b61746c61736f6e6c696e650366686a026e6c0000010001c01800020001000151800009036e7331026973c01cc01800020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +30430 +b67eded75010ffcea96e0000000000000000 + + +30431 +b67fb3b25010ffdc23bc0000000000000000 + + +30432 +b67fb3b25018ffdca0cd00000099269c000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005d03677373096d6963726f736f667403636f6d00403afd1b403c4e9b00030000003a4e544c4d535350000100000097b208e00c000c002e0000000e000e00200000004e504552535045435449454630314e50455253504543544945460000 + + +30433 +cae70000000100000000000003777777046476686e026e6c0000010001 +cae78000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +30434 +2cc20000000100000000000003777777056b6c696b73026e6c0000010001 +2cc28000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +30435 +00a30000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +00a38000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +30436 +b67fb3c05011ffce23200000000000000000 + + +30437 +06fc000000010000000000000377777706787334616c6c026e6c0000010001 +06fc800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30438 +fca100000001000000000000037777770a67726f656e6577616c64026e6c0000010001 +fca180000001000000020000037777770a67726f656e6577616c64026e6c0000010001c0100002000100015180000f05646e73303103697032036e657400c0100002000100015180000805646e733032c035 + +30439 +3bfc00000001000000000000026e730d62616c6c6173742d6e6564616d026e6c0000010001 +3bfc80000001000000020001026e730d62616c6c6173742d6e6564616d026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332026e6c0669676e697465036e657400c00c000100010001518000043eadcea1 + +30440 +3da000000001000000000000036e73330767617574656e67026e6c0000010001 +3da080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30441 +1daf00000001000000000000036e73340767617574656e67026e6c0000010001 +1daf80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30442 +0db000000001000000000000036e73340767617574656e67026e6c0000010001 +0db080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30443 +0f000000000100000000000009652d6c756e61746963026e6c0000010001 +0f008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30444 +0f0d0000000100000000000009652d6c756e61746963026e6c0000010001 +0f0d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30445 +b67fb3c15010ffce231f0000000000000000 + + +30446 +c88400000001000000000000066c656d6f6e38026e6c00000f0001 +c88480000001000000020000066c656d6f6e38026e6c00000f0001c00c00020001000151800014036e73300a6b65656e6f6e646f7473036e657400c00c0002000100015180000f036e733005786e616d65036f726700 + +30447 +48f3000000010000000000000e646568656572656e68656d70656c026e6c00000f0001 +48f3800000010000000300000e646568656572656e68656d70656c026e6c00000f0001c00c00020001000151800014046e733031096772616669782d697303636f6d00c00c00020001000151800007046e733032c034c00c00020001000151800007046e733033c034 + +30448 +70b500000001000000000000037777770a6d696e696d6178696d6f026e6c0000010001 +70b584030001000000010000037777770a6d696e696d6178696d6f026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +30449 +097000000001000000000000037777770a6d696e696d6178696d6f026e6c0000050001 +097084030001000000010000037777770a6d696e696d6178696d6f026e6c0000050001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +30450 +3a98000000010000000000000b72656d6f76652d74686973057a6970707906787334616c6c026e6c0000010001 +3a98800000010000000300020b72656d6f76652d74686973057a6970707906787334616c6c026e6c0000010001c01e00020001000151800005026e73c01ec01e00020001000151800006036e7332c01ec01e0002000100015180000d026e730472697065036e657400c03900010001000151800004c26d0642c04a00010001000151800004c26d0963 + +30451 +807800000001000000000000037777770c6e657762616279626f617264026e6c0000010001 +807880000001000000020002037777770c6e657762616279626f617264026e6c0000010001c0100002000100015180000b036e733104626d6873c01dc01000020001000151800006036e7332c035c03100010001000151800004d4ccfbc9c04800010001000151800004d4ccfbca + +30452 +96160000000100000000000005646e732d31056c61646f74026e6c0000010001 +96168000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30453 +107f00000001000000000000036e733203666a66026e6c0000010001 +107f80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30454 +108000000001000000000000036e733103666a66026e6c0000010001 +108080000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30455 +00480000000100000000000005646e732d32056c61646f74026e6c0000010001 +00488000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30456 +14ee00000001000000000000037777770977616e64656c6e6574026e6c0000010001 +14ee80000001000000030002037777770977616e64656c6e6574026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c01ac01000020001000151800006036e7332c032c01000020001000151800012036e7333086c65617365776562036f726700c02e000100010001518000043ed44079c049000100010001518000043ed4407a + +30457 +d61600000001000000000000046d61696c03777873026e6c0000010001 +d61680000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +30458 +6b9d000000010000000000001167656d696e692d7a69656b656e68756973026e6c00001c0001 +6b9d800000010000000200021167656d696e692d7a69656b656e68756973026e6c00001c0001c00c0002000100015180000d026e73076b6e6f77617265c01ec00c00020001000151800006036e7332c035c03200010001000151800004c3402003c04b00010001000151800004c340202b + +30459 +566d000000010000000000000b676f6c64656e7461737465026e6c00000f0001 +566d800000010000000200010b676f6c64656e7461737465026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c018c04500010001000151800004c2860043 + +30460 +bf0800000001000000000000036e73310a667574757265666c6578026e6c0000010001 +bf0880000001000000030003036e73310a667574757265666c6578026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d9aa122bc03d00010001000151800004d9aa122cc04f00010001000151800004d9aa122d + +30461 +2fad00000001000000000000036e73320a667574757265666c6578026e6c0000010001 +2fad80000001000000030003036e73320a667574757265666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004d9aa122bc00c00010001000151800004d9aa122cc04f00010001000151800004d9aa122d + +30462 +712a0000000100000000000003626d67026e6c00000f0001 +712a8000000100000003000303626d67026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02400010001000151800004c14e9e14c03600010001000151800004c14e9e22c04800010001000151800004d4ce7a43 + +30463 +a00600000001000000000000037777770961627a706f7274616c026e6c0000010001 +a00680000001000000020000037777770961627a706f7274616c026e6c0000010001c01000020001000151800011036e733107696c63616d706f03636f6d00c01000020001000151800006036e7332c032 + +30464 +2c7200100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +2c7280000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +30465 +53f70000000100000000000008686f73746e616d650462696e640000100003 +53f78000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +30466 +5a6f00000001000000000000037777770c6e657773796e746865736973026e6c0000010001 +5a6f80000001000000030002037777770c6e657773796e746865736973026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +30467 +9aac000000010000000000000463626265026e6c0000060001 +9aac840300010000000100000463626265026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +30468 +bb6d000000010000000000000377777704776b6170026e6c0000010001 +bb6d800000010000000200020377777704776b6170026e6c0000010001c01000020001000151800008056964313331c010c0100002000100015180000e036e733107737572666e6574c015c02900010001000151800004c0579eeac03d00010001000151800004c0576a65 + +30469 +03b7000000010000000000000463626265026e6c0000060001 +03b7840300010000000100000463626265026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +30470 +27540000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +27548000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30471 +791b00000001000000000000046e743036036d7069026e6c0000010001 +791b80000001000000020002046e743036036d7069026e6c0000010001c011000200010001518000080573756e3032c011c01100020001000151800006036e7332c011c02900010001000151800004c0574f3ec03d00010001000151800004c0574f37 + +30472 +0d42000000010000000000000377777704696c6465026e6c0000010001 +0d42800000010000000200000377777704696c6465026e6c0000010001c01000020001000151800014036e73310d6e6574636f6c6c656374697665c015c01000020001000151800006036e7332c02d + +30473 +163900000001000000000000036e733107737572666e6574026e6c0000010001 +163980000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +30474 +131900000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +131980000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +30475 +26d0000000010000000000000377777703666e6c026e6c0000010001 +26d0800000010000000200020377777703666e6c026e6c0000010001c0100002000100015180000c026e73067874646e6574c014c01000020001000151800006036e7331c02bc02800010001000151800004c16e9d02c04000010001000151800004d9cc165f + +30476 +31cb00000001000000000001036e73310974656c656b6162656c026e6c00000100010000291000000000000000 +31cb80000001000000020003036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d45344830000291000000000000000 + +30477 +fbf200000001000000000000027463036164730974656c656772616166026e6c0000010001 +fbf280000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +30478 +025e00000001000000000000026e7308767575727765726b026e6c0000010001 +025e80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +30479 +012f00000001000000000000036e733208767575727765726b026e6c0000010001 +012f80000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +30480 +4cc400000001000000000000037a6868026e6c00001c0001 +4cc480000001000000020002037a6868026e6c00001c0001c00c0002000100015180000c036e7331056861636f6dc010c00c00020001000151800006036e7332c028c02400010001000151800004d4f12209c03c00010001000151800004d590f009 + +30481 +8264000000010000000000000d776f6f72642d656e2d64616164026e6c00000f0001 +8264800000010000000200020d776f6f72642d656e2d64616164026e6c00000f0001c00c0002000100015180000f036e73310863616d627269756dc01ac00c00020001000151800006036e7332c032c02e00010001000151800004d9131082c04900010001000151800004d5efb202 + +30482 +fdb000000001000000000000066d61696c657205617a6c616e026e6c0000010001 +fdb080000001000000020001066d61696c657205617a6c616e026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e7332036b706e036e657400c02d00010001000151800004c1ad65c2 + +30483 +b9c700000001000000000000066d61696c657205617a6c616e026e6c00001c0001 +b9c780000001000000020001066d61696c657205617a6c616e026e6c00001c0001c01300020001000151800005026e73c013c0130002000100015180000d036e7332036b706e036e657400c02d00010001000151800004c1ad65c2 + +30484 +a57100000001000000000000066d61696c657205617a6c616e026e6c0000260001 +a57180000001000000020001066d61696c657205617a6c616e026e6c0000260001c01300020001000151800005026e73c013c0130002000100015180000d036e7332036b706e036e657400c02d00010001000151800004c1ad65c2 + +30485 +721e00000001000000000000037777770b6d61726b74706c61617473026e6c0000010001 +721e80000001000000020000037777770b6d61726b74706c61617473026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c034 + +30486 +a96200000001000000000000036e7330087a7761616e6e6574026e6c0000010001 +a96280000001000000020000036e7330087a7761616e6e6574026e6c0000010001c01000020001000151800010036e7330066361726f7461036e657400c0100002000100015180000b036e7330047065656ec038 + +30487 +777a00000001000000000000037777770c736576656e7368656176656e026e6c0000010001 +777a80000001000000020001037777770c736576656e7368656176656e026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c01dc04a00010001000151800004c2860043 + +30488 +96090000000100000000000003656369026e6c00000f0001 +96098000000100000002000003656369026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c028 + +30489 +d2fd00000001000000000000074a616e6e792d310463626265026e6c0000060001 +d2fd84030001000000010000074a616e6e792d310463626265026e6c0000060001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +30490 +355e00000001000000000001046e733032066368656c6c6f026e6c00001c00010000291000000000000000 +355e80000001000000030004046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +30491 +983900000001000000000001046e733032066368656c6c6f026e6c00002600010000291000000000000000 +983980000001000000030004046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +30492 +91420010000100000000000106643638323331057570632d64066368656c6c6f026e6c00001c00010000291000000000000000 +91428000000100000003000406643638323331057570632d64066368656c6c6f026e6c00001c0001c01900020001000151800007046e733031c019c01900020001000151800007046e733032c019c0190002000100015180000a036e733103757063c020c03400010001000151800004d4534482c04700010001000151800004d4534483c05a00010001000151800004d48e1c420000291000000000000000 + +30493 +8990000000010000000000000377777709746573746672616d65026e6c0000010001 +8990800000010000000200000377777709746573746672616d65026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c031 + +30494 +76020010000100000000000009626f6c6c79776f6f640a706f6c7970686f6e69630872696e67746f6e650b677261746973696d6f6465026e6c0000010001 +76028000000100000002000209626f6c6c79776f6f640a706f6c7970686f6e69630872696e67746f6e650b677261746973696d6f6465026e6c0000010001c02a0002000100015180000e036e73310774696b6b6c696bc036c02a00020001000151800006036e7332c04ec04a00010001000151800004d5c40902c064000100010001518000043eddd512 + +30495 +306300000001000000000000044e53303803575853026e6c0000010001 +306380000001000000030003044e53303803575853026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +30496 +6d1b00000001000000000000044e53303903575853026e6c0000010001 +6d1b80000001000000030003044e53303903575853026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +30497 +3a08000000010000000000000c74726176656c6d61726b6572026e6c00000f0001 +3a08800000010000000200000c74726176656c6d61726b6572026e6c00000f0001c00c00020001000151800013026e730a646168686f7374696e6703636f6d00c00c00020001000151800006036e7332c030 + +30498 +e93500000001000000000000056361706163026e6c0000010001 +e93580000001000000030000056361706163026e6c0000010001c00c0002000100015180001c09646e733030303030310367656e0872616e647374616403636f6d00c00c0002000100015180000c09646e73303030303032c030c00c0002000100015180000d036e7332036b706e036e657400 + +30499 +343a00000001000000000000046d61696c0a646168686f7374696e67026e6c0000010001 +343a80000001000000020002046d61696c0a646168686f7374696e67026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c030000100010001518000045104430bc0420001000100015180000451044316 + +30500 +18da00000001000000000000046d61696c0a646168686f7374696e67026e6c00001c0001 +18da80000001000000020002046d61696c0a646168686f7374696e67026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c030000100010001518000045104430bc0420001000100015180000451044316 + +30501 +280800000001000000000000046d61696c0a646168686f7374696e67026e6c0000260001 +280880000001000000020002046d61696c0a646168686f7374696e67026e6c0000260001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c030000100010001518000045104430bc0420001000100015180000451044316 + +30502 +d42100000001000000000000036d78310a646168686f7374696e67026e6c0000010001 +d42180000001000000020002036d78310a646168686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f000100010001518000045104430bc0410001000100015180000451044316 + +30503 +877200000001000000000000036d78310a646168686f7374696e67026e6c00001c0001 +877280000001000000020002036d78310a646168686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f000100010001518000045104430bc0410001000100015180000451044316 + +30504 +578000000001000000000000036d78310a646168686f7374696e67026e6c0000260001 +578080000001000000020002036d78310a646168686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f000100010001518000045104430bc0410001000100015180000451044316 + +30505 +23390000000100000000000004766567610a6e657474736b6f6c656e036e6b69026e6c00001c0001 +23398000000100000003000304766567610a6e657474736b6f6c656e036e6b69026e6c00001c0001c01c00020001000151800009066865726d6573c01cc01c0002000100015180000906617468656e61c01cc01c0002000100015180000e036e733107737572666e6574c020c03400010001000151800004c0576108c04900010001000151800004c0576109c05e00010001000151800004c0576a65 + +30506 +ac3700000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +ac3780000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +30507 +196e00000001000000000000037777770c742d6578706572696d656e74026e6c0000010001 +196e80000001000000030001037777770c742d6578706572696d656e74026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +30508 +3ddb00000001000000000000036e7331096475746368686f7374026e6c0000010001 +3ddb80000001000000020001036e7331096475746368686f7374026e6c0000010001c0100002000100015180000b0861737465726f7065c010c0100002000100015180000c036e733205786c722d38c01ac02e00010001000151800004d58523d2 + +30509 +3ddc00000001000000000000036e7332096475746368686f7374026e6c0000010001 +3ddc80000001000000020001036e7332096475746368686f7374026e6c0000010001c0100002000100015180000b0861737465726f7065c010c0100002000100015180000c036e733205786c722d38c01ac02e00010001000151800004d58523d2 + +30510 +982b000000010000000000000563736530310e63616e6f6e2d736f667477617265026e6c0000060001 +982b840300010000000100000563736530310e63616e6f6e2d736f667477617265026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +30511 +31cb00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +31cb80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +30512 +919d00000001000000000000037777770c6b6f6569656e2d6b756e7374026e6c0000010001 +919d80000001000000020002037777770c6b6f6569656e2d6b756e7374026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c01dc01000020001000151800006036e7332c035c0310001000100015180000451113264c04d00010001000151800004d5c42851 + +30513 +06d7000000010000000000000a747963686567726f6570026e6c0000010001 +06d7800000010000000200020a747963686567726f6570026e6c0000010001c00c0002000100015180000d056e657430310462626974c017c00c0002000100015180000b08626269742d6e7434c031c02b00010001000151800004c1ad5403c04400010001000151800004c1ad540c + +30514 +c07200000001000000000000036e73310564656d6f6e026e6c00001c0001 +c07280000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +30515 +a48f00000001000000000000036e73310564656d6f6e026e6c0000260001 +a48f80000001000000030002036e73310564656d6f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +30516 +80ea00000001000000000000036e73320564656d6f6e026e6c0000260001 +80ea80000001000000030002036e73320564656d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +30517 +3a7700000001000000000000036e73320564656d6f6e026e6c00001c0001 +3a7780000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +30518 +86a1000000010000000000000377777709736578687569736a65026e6c0000010001 +86a1800000010000000300000377777709736578687569736a65026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +30519 +883400000001000000000000026970026e6c00000f0001 +883480000001000000030000026970026e6c00000f0001c00c00020001000151800011036e733207636c742d756661036e657400c00c00020001000151800008026e73026e6cc02fc00c00020001000151800006036e7331c027 + +30520 +7b6a000000010000000000000377777707736d7377697368026e6c0000010001 +7b6a800000010000000200020377777707736d7377697368026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa011c04700010001000151800004d5efa075 + +30521 +c1d8000000010000000000000a646f6f726e706c617a61026e6c0000020001 +c1d8800000010000000200000a646f6f726e706c617a61026e6c0000020001c00c00020001000151800014036e73310a68672d686f7374696e6703636f6d00c00c00020001000151800006036e7332c02f + +30522 +527700000001000000000000037777770a6c65646572776172656e026e6c0000010001 +527780000001000000030002037777770a6c65646572776172656e026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +30523 +4e7200000001000000000000096465706f67726f6570026e6c00000f0001 +4e7284030001000000010000096465706f67726f6570026e6c00000f0001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +30524 +6ea6000000010000000000000d6573746178746563686e69656b026e6c00000f0001 +6ea6800000010000000200000d6573746178746563686e69656b026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c01ac00c0002000100015180000704686e7331c033 + +30525 +81680000000100000000000003777777026373027675026e6c0000010001 +81688000000100000003000303777777026373027675026e6c0000010001c01300020001000151800005026e73c013c013000200010001518000070473746172c010c0130002000100015180000e036e733107737572666e6574c016c02a0001000100015180000482258104c03b00010001000151800004c01fe72ac04e00010001000151800004c0576a65 + +30526 +a0b000000001000000000000034e533208485a45454c414e44026e6c0000010001 +a0b080000001000000040004034e533208485a45454c414e44026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c02d0001000100015180000491130101c00c00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +30527 +8e5d00000001000000000000034e533108485a45454c414e44026e6c0000010001 +8e5d80000001000000040004034e533108485a45454c414e44026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c00c0001000100015180000491130101c03b00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +30528 +f12700000001000000000000026e730763697374726f6e026e6c0000010001 +f12780000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +30529 +b0bd00000001000000000000036e73320763697374726f6e026e6c0000010001 +b0bd80000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +30530 +6bd9001000010000000000010377777703647069026e6c00000100010000290800000080000000 +6bd9800000010000000200010377777703647069026e6c0000010001c0100002000100015180001607646e732d65753108706f776572646e73036e657400c0100002000100015180000a07646e732d757331c0300000291000000000000000 + +30531 +634a00000001000000000000046d61696c0462617261026e6c0000010001 +634a80000001000000020002046d61696c0462617261026e6c0000010001c0110002000100015180000f026e7309656174736572766572c016c01100020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +30532 +355e00000001000000000000046e733032066368656c6c6f026e6c00001c0001 +355e80000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +30533 +983900000001000000000000046e733032066368656c6c6f026e6c0000260001 +983980000001000000030003046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +30534 +91420010000100000000000006643638323331057570632d64066368656c6c6f026e6c00001c0001 +91428000000100000003000306643638323331057570632d64066368656c6c6f026e6c00001c0001c01900020001000151800007046e733031c019c01900020001000151800007046e733032c019c0190002000100015180000a036e733103757063c020c03400010001000151800004d4534482c04700010001000151800004d4534483c05a00010001000151800004d48e1c42 + +30535 +694b000000010000000000000377777706616c70696e65026e6c0000010001 +694b800000010000000200020377777706616c70696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004d5f72c72c03d00010001000151800004d5f72c73 + +30536 +233300000001000000000000036f6d61026e6c0000ff0001 +233380000001000000020002036f6d61026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30537 +975b00000001000000000000107961636874726563727569746d656e74026e6c00000f0001 +975b80000001000000030000107961636874726563727569746d656e74026e6c00000f0001c00c0002000100015180001c09646e733030303030310367656e0872616e647374616403636f6d00c00c0002000100015180000c09646e73303030303032c03bc00c0002000100015180000d036e7332036b706e036e657400 + +30538 +a7b5000000010000000000000377777709696273617374726561026e6c0000010001 +a7b5840300010000000100000377777709696273617374726561026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +30539 +84f4000000010000000000000e766e6d6765617273797374656d73026e6c00000f0001 +84f4800000010000000200000e766e6d6765617273797374656d73026e6c00000f0001c00c0002000100015180000f036e7331053132337873036e657400c00c00020001000151800006036e7333c033 + +30540 +6fcb00000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +6fcb80000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +30541 +80610000000100000000000003636b61026e6c0000ff0001 +80618000000100000002000203636b61026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +30542 +36990010000100000000000102656c07757477656e7465026e6c00000f00010000290800000080000000 +36998000000100000003000402656c07757477656e7465026e6c00000f0001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc02b0001000100015180000482590102c03d0001000100015180000482590103c04f00010001000151800004c05711130000291000000000000000 + +30543 +6ae600000001000000000000036e733107737572666e6574026e6c0000010001 +6ae680000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +30544 +878000000001000000000000036e733307737572666e6574026e6c0000010001 +878080000001000000040003036e733307737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c05300010001000151800004c0576a65 + +30545 +7a6100000001000000000000036e733207737572666e6574026e6c0000010001 +7a6180000001000000040003036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +30546 +0b8b0010000100000000000003777777046e6b6170026e6c0000010001 +0b8b8000000100000002000203777777046e6b6170026e6c0000010001c0100002000100015180000d026e7307656368656c6f6ec015c01000020001000151800006036e7378c02cc02900010001000151800004d977e179c04200010001000151800004d4ccd10c + +30547 +b5ad00000001000000000000037777770873796e7479636865026e6c0000010001 +b5ad80000001000000020000037777770873796e7479636865026e6c0000010001c01000020001000151800013036e7331096272696e6b686f7374036e657400c01000020001000151800006036e7332c031 + +30548 +5686000000010000000000000e6e65746c696a6e6e65747765726b026e6c0000060001 +5686840300010000000100000e6e65746c696a6e6e65747765726b026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +30549 +92900000000100000000000006696e63616276026e6c00000f0001 +92908000000100000002000206696e63616276026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30550 +a3420000000100000000000003777777087072657462616e64026e6c0000010001 +a3428000000100000002000003777777087072657462616e64026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +30551 +1a67000000010000000000000c7363686f6f6c2d706c65696e026e6c00000f0001 +1a67840300010000000100000c7363686f6f6c2d706c65696e026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +30552 +b61f000000010000000000000331373202323101310131026e6c0000010001 +b61f840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +30553 +689800000001000000000000034e53310c434f4c542d54454c45434f4d024e4c0000010001 +689880000001000000020002034e53310c434f4c542d54454c45434f4d024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea00dc03f00010001000151800004d44ea00e + +30554 +567600000001000000000000095f6b65726265726f73045f746370026463065f6d7364637308736a616832303030026e6c0000060001 +567684030001000000010000095f6b65726265726f73045f746370026463065f6d7364637308736a616832303030026e6c0000060001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +30555 +e13500000001000000000000036e733108696e7465726d6178026e6c0000010001 +e13580000001000000020002036e733108696e7465726d6178026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004505fa002c03b00010001000151800004505fac02 + +30556 +679e000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c0000010001 +679e800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c0000010001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +30557 +645d0000000100000000000008616473657276657206776562616473026e6c0000010001 +645d8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +30558 +2b80000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +2b80800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30559 +7275000000010000000000000377777709776f6f6e6b72616e74026e6c0000010001 +7275800000010000000200000377777709776f6f6e6b72616e74026e6c0000010001c01000020001000151800011036e733107636f6e78696f6e036e657400c01000020001000151800006036e7332c032 + +30560 +9a4c00000001000000000000046d61696c06787334616c6c026e6c0000010001 +9a4c80000001000000030002046d61696c06787334616c6c026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +30561 +0a0d0000000100000000000003706f7006787334616c6c026e6c0000010001 +0a0d8000000100000003000203706f7006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +30562 +13e4000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +13e4800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30563 +38c0000000010000000000000773657276657231087369746574726171026e6c0000010001 +38c0800000010000000200000773657276657231087369746574726171026e6c0000010001c0140002000100015180000f036e733105796b6f6f6e036e657400c01400020001000151800006036e7332c035 + +30564 +02960000000100000000000006736d74703031066d696e737a77026e6c0000010001 +02968000000100000002000006736d74703031066d696e737a77026e6c0000010001c0130002000100015180000b026e73026e6c036e657400c0130002000100015180001206617574683630026e73026e6c027575c034 + +30565 +1beb000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +1beb800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30566 +3bf6000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +3bf6800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30567 +13fa000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +13fa800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30568 +1c00000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +1c00800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30569 +0409000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +0409800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30570 +b66e311b5018faf02f370000008d25c0000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd13403c4e9300030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b66eb1140000000000000000 + +30571 +b66e311b5018faf02f370000008d25c0000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd13403c4e9300030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b66eb1140000000000000000 + +30572 +b66e31295011fae22bb70000000000000000 +b66eb1240000000000000000 + +30573 +772100000001000000000000037777770e74726f75626c65736174686f6d65026e6c0000010001 +772180000001000000020002037777770e74726f75626c65736174686f6d65026e6c0000010001c0100002000100015180000a036e7331036e7873c01fc01000020001000151800006036e7332c037c03300010001000151800004d973c015c04900010001000151800004d973c102 + +30574 +000000007002faf0a80c0000020405b401010402 +000080010000000000000000 + +30575 +b66e312a5010fae22bb60000000000000000 +b66eb1240000000000000000 + +30576 +6231000000010000000000000672756e6e657206535441525431024e4c0000060001 +6231840300010000000100000672756e6e657206535441525431024e4c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +30577 +b68303575010faf01ae60000000000000000 +b68380010000000000000000 + +30578 +000800000001000000000000037777770a7261696c72756e6e6572026e6c0000010001 +000880000001000000020001037777770a7261696c72756e6e6572026e6c0000010001c01000020001000151800009036e7331026e73c01bc01000020001000151800013036e7332026e6c0669676e697465036e657400c02f00010001000151800004d46c0d06 + +30579 +c5f2000000010000000000000976616c6b6965736572026e6c00000f0001 +c5f2800000010000000200000976616c6b6965736572026e6c00000f0001c00c00020001000151800011036e7333076361706361766503636f6d00c00c00020001000151800006036e7334c02e + +30580 +132600000001000000000000026e73036d6c63026e6c0000010001 +132680000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +30581 +02620000000100000000000002656c07757477656e7465026e6c00000f0001 +02628000000100000003000302656c07757477656e7465026e6c00000f0001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc02b0001000100015180000482590102c03d0001000100015180000482590103c04f00010001000151800004c0571113 + +30582 +775800000001000000000000076e656473746174027330026e6c0000010001 +775880000001000000020002076e656473746174027330026e6c0000010001c0140002000100015180000d026e73076e656473746174c017c01400020001000151800006036e7333c02ec02b00010001000151800004d4482615c04400010001000151800004d5c4021d + +30583 +a186000000010000000000000c746e746c6f67697374696373026e6c00000f0001 +a186800000010000000300000c746e746c6f67697374696373026e6c00000f0001c00c00020001000151800016036e73320c746e746c6f6769737469637303636f6d00c00c0002000100015180001c0463627275026272026e7307656c732d676d7303617474036e657400c00c0002000100015180000a04636d7475026d74c057 + +30584 +03d10000000100000000000003777777116f756b616368612d736174656c6c696574026e6c0000010001 +03d18000000100000002000003777777116f756b616368612d736174656c6c696574026e6c0000010001c01000020001000151800013036e733109326575726f686f737403636f6d00c01000020001000151800006036e7332c03a + +30585 +bd6100000001000000000000037777770a6261736b657462616c6c026e6c0000010001 +bd6180000001000000020002037777770a6261736b657462616c6c026e6c0000010001c01000020001000151800012036e73310b696e7465727374726f6f6dc01bc01000020001000151800006036e7332c033c02f0001000100015180000450558121c04d00010001000151800004d58141c4 + +30586 +b4c9001000010000000000010565666e657403626974026e6c00000100010000290800000000000000 +b4c9800000010000000300040565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b0000291000000000000000 + +30587 +8c20000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +8c20800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +30588 +4610000000010000000000000866616c6c6261636b08767575727765726b026e6c00001c0001 +4610800000010000000300010866616c6c6261636b08767575727765726b026e6c00001c0001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +30589 +a308000000010000000000000866616c6c6261636b08767575727765726b026e6c0000260001 +a308800000010000000300010866616c6c6261636b08767575727765726b026e6c0000260001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +30590 +8ef500000001000000000000026e7308767575727765726b026e6c00001c0001 +8ef580000001000000030001026e7308767575727765726b026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +30591 +3e3200000001000000000000026e7308767575727765726b026e6c0000260001 +3e3280000001000000030001026e7308767575727765726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +30592 +b5ad000000010000000000001163617070612d6163636f756e74616e7473026e6c00000f0001 +b5ad800000010000000200021163617070612d6163636f756e74616e7473026e6c00000f0001c00c0002000100015180000e036e733007656173796e6574c01ec00c00020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +30593 +8cea00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +8cea80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +30594 +bf0e00000001000000000000046d61696c086e65646c696e7578026e6c0000010001 +bf0e80000001000000030003046d61696c086e65646c696e7578026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02e00010001000151800004d5ef87d2c04000010001000151800004d5ef87d3c05200010001000151800004d5ef8005 + +30595 +cba200100001000000000001036e733503777873026e6c00000100010000290800000080000000 +cba280000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +30596 +443600000001000000000000036e733206787334616c6c026e6c0000010001 +443680000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +30597 +221b00000001000000000000026e7306787334616c6c026e6c0000010001 +221b80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +30598 +219a00000001000000000000037777770377716d026e6c0000010001 +219a80000001000000030001037777770377716d026e6c0000010001c0100002000100015180000e026e7308767575727765726bc014c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c046c028000100010001518000043efa0202 + +30599 +79a200000001000000000000037777770974656c656772616166026e6c0000010001 +79a280000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +30600 +2db900000001000000000000036e73340767617574656e67026e6c0000010001 +2db980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30601 +15c000000001000000000000036e73340767617574656e67026e6c0000010001 +15c080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30602 +31a2000000010000000000000c6b61617274656e706c617a61026e6c0000010001 +31a2800000010000000300020c6b61617274656e706c617a61026e6c0000010001c00c0002000100015180000d036e733106776964657873c019c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +30603 +239300000001000000000000036e73330767617574656e67026e6c0000010001 +239380000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30604 +239400000001000000000000036e73340767617574656e67026e6c0000010001 +239480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30605 +c63428000001000000010000026e6c0000060001085f6b706173737764045f75647007747267726f7570026e6c000021000100000258001b0000006401d0087365727665722d3107747267726f7570026e6c00 +c634a8040000000000000000 + +30606 +06380000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +06388000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +30607 +124a000000010000000000000973657868756e746572027830026e6c0000010001 +124a800000010000000200020973657868756e746572027830026e6c0000010001c0160002000100015180000d026e730776697065726276c019c01600020001000151800006036e7332c030c02d00010001000151800004d5881a07c04600010001000151800004d5881a05 + +30608 +3e4000000001000000000000067873657276650a79656c6c6f776d696e64026e6c0000010001 +3e4080000001000000030003067873657276650a79656c6c6f776d696e64026e6c0000010001c0130002000100015180000e026e7308736e696a64657273c01ec01300020001000151800005026e73c013c01300020001000151800006036e7332c013c03200010001000151800004c2e59918c04c00010001000151800004c2e59926c05d000100010001518000043e5dc28e + +30609 +000000007002faf091b40000020405b401010402 +000080010000000000000000 + +30610 +97f1000000010000000000000565666e657403626974026e6c0000010001 +97f1800000010000000300030565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +30611 +b683c2c05010faf045240000000000000000 + + +30612 +bbbd00000001000000000000037777770a65786563736f75726365026e6c0000010001 +bbbd80000001000000020001037777770a65786563736f75726365026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c01bc01000020001000151800011036e7332076e6564636f6d70036f726700c02f00010001000151800004c3c1a80d + +30613 +b683c2c05018faf0f2860000008e4bdc000000010001000000000f313237313331303331393633342d330000f900010f313237313331303331393633342d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04c5403c564500030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 + + +30614 +2dce00000001000000000000036e73340767617574656e67026e6c0000010001 +2dce80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30615 +cd1100000001000000000000037777770b76697461616c6772696a73026e6c0000010001 +cd1180000001000000020002037777770b76697461616c6772696a73026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +30616 +3472000000010000000000000469632d73026e6c00001c0001 +3472800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30617 +b683c2ce5011fae244930000000000000000 + + +30618 +000000007002faf044dc0000020405b401010402 +000080010000000000000000 + +30619 +9fdc0000000100000000000005737461747308696e672d6562636e026e6c0000010001 +9fdc8000000100000002000205737461747308696e672d6562636e026e6c0000010001c0120002000100015180000a036e733103696e67c01bc01200020001000151800006036e7332c033c02f0001000100015180000491dd19c2c0450001000100015180000491dd5dc2 + +30620 +b683c2cf5010fae244920000000000000000 + + +30621 +062c00100001000000000001076d61696c6875620b7669616e6574776f726b73026e6c00000100010000290800000080000000 +062c80000001000000020003076d61696c6875620b7669616e6574776f726b73026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03400010001000151800004d43d0f08c04600010001000151800004d43d19e20000291000000000000000 + +30622 +230500000001000000000000037777770974656c656772616166026e6c0000010001 +230580000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +30623 +b6844daf5010faf06d5c0000000000000000 +b684cda40000000000000000 + +30624 +725b00000001000000000000036d78310464697661026e6c00001c0001 +725b80000001000000020000036d78310464697661026e6c00001c0001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +30625 +b6844daf5018faf0669c0000008e0100000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04c5403c564500030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 +b684cda40000000000000000 + +30626 +81ca000000010000000000000473656174026e6c0000010001 +81ca800000010000000200000473656174026e6c0000010001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +30627 +951700000001000000000000046d61696c03736269026e6c0000010001 +951780000001000000020002046d61696c03736269026e6c0000010001c0110002000100015180000e036e7331077175616e746973c015c01100020001000151800006036e7332c02dc029000100010001518000043ed44440c04300010001000151800004d4ccca83 + +30628 +94ae00000001000000000000036e733103666a66026e6c0000010001 +94ae80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30629 +b6844dbd5011fae26ccb0000000000000000 +b684cdb40000000000000000 + +30630 +be0900000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +be0980000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +30631 +e23b00000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +e23b80000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +30632 +f5c8000000010000000000000a706c61796f6e6c696e65026e6c00000f0001 +f5c8800000010000000200000a706c61796f6e6c696e65026e6c00000f0001c00c00020001000151800014036e73310d666c65746873686f7374696e67c017c00c00020001000151800006036e7332c02f + +30633 +000000007002faf058a60000020405b401010402 +000080010000000000000000 + +30634 +6f7f00000001000000000000066b6e696a6666026e6c00000f0001 +6f7f80000001000000020000066b6e696a6666026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02e + +30635 +94af00000001000000000000036e733203666a66026e6c0000010001 +94af80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30636 +b6844dbe5010fae26cca0000000000000000 +b684cdb40000000000000000 + +30637 +94c600000001000000000000036e733103666a66026e6c0000010001 +94c680000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30638 +5f9900000001000000000000086d65657769737365026e6c00000f0001 +5f9980000001000000020002086d65657769737365026e6c00000f0001c00c00020001000151800009036e7331026973c015c00c00020001000151800006036e7332c02dc02900010001000151800004d5852102c03e00010001000151800004d5c41503 + +30639 +239600000001000000000000036e73330767617574656e67026e6c0000010001 +239680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30640 +b1d0000000010000000000000a7476696e647573747279026e6c00000f0001 +b1d0800000010000000300030a7476696e647573747279026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b00010001000151800004d5c98015c04600010001000151800004d5c9bf12c05800010001000151800004d5ef9c26 + +30641 +94c700000001000000000000036e733203666a66026e6c0000010001 +94c780000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30642 +239700000001000000000000036e73340767617574656e67026e6c0000010001 +239780000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30643 +ac0c000000010000000000000974686563686f696365026e6c00000f0001 +ac0c800000010000000200010974686563686f696365026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c016c00c00020001000151800006036e7334c02ec02a00010001000151800004d5c401c0 + +30644 +b686ac6c5010faf022670000000000000000 + + +30645 +b686ac6c5018faf065460000008eb560000000010001000000000f313237313331303331393633342d320000f900010f313237313331303331393633342d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403b04c6403c564600030000002f4e544c4d535350000100000097b208e0070007002800000008000800200000005345525645522d31545247524f55500000 + + +30646 +b686ac7a5011fae221d60000000000000000 + + +30647 +9f510000000100000000000003777777056272696c6c026e6c0000010001 +9f518000000100000002000203777777056272696c6c026e6c0000010001c010000200010001518000140a6469736b61642d6e7331066469736b6164c016c0100002000100015180000d0a6469736b61642d6e7332c035c02a00010001000151800004d9164181c04a00010001000151800004d5c990eb + +30648 +f2d500000001000000000000036e73320777697265687562026e6c0000010001 +f2d580000001000000030000036e73320777697265687562026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02f + +30649 +c1e400000001000000000000076d61696c6875620b7669616e6574776f726b73026e6c0000010001 +c1e480000001000000020002076d61696c6875620b7669616e6574776f726b73026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03400010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +30650 +5bd4000000010000000000000469632d73026e6c0000010001 +5bd4800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30651 +dc7900000001000000000000036d78340c696e746572636f6e6e656374026e6c0000010001 +dc7980000001000000030003036d78340c696e746572636f6e6e656374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c03100010001000151800004d453c005c04200010001000151800004d453c006c05400010001000151800004d453c805 + +30652 +118300000001000000000000036e733203666a66026e6c0000010001 +118380000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30653 +b686ac7b5010fae221d50000000000000000 + + +30654 +118400000001000000000000036e733103666a66026e6c0000010001 +118480000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30655 +bb2600000001000000000000046d61696c03676263026e6c0000010001 +bb2680000001000000020000046d61696c03676263026e6c0000010001c01100020001000151800015056e73302d6703646e73057069706578036e657400c01100020001000151800008056e73312d67c02f + +30656 +f4bb00000001000000000000056372657878026e6c00000f0001 +f4bb80000001000000020002056372657878026e6c00000f0001c00c0002000100015180000f036e7331087468656c6f646765c012c00c00020001000151800006036e7332c02ac02600010001000151800004c3565d0ac04100010001000151800004c3565d0b + +30657 +8fef000000010000000000000469632d73026e6c00000f0001 +8fef800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30658 +11d900000001000000000000036e733203666a66026e6c0000010001 +11d980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30659 +78ec000000010000000000000c7063726e656465726c616e64026e6c0000ff0001 +78ec800000010000000300020c7063726e656465726c616e64026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c019c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +30660 +11da00000001000000000000036e733103666a66026e6c0000010001 +11da80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30661 +040c00000001000000000000067065646c6172026e6c0000ff0001 +040c80000001000000020002067065646c6172026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180000f026e7309737570706f72743275c013c02700010001000151800004d48e0503c03800010001000151800004c2970ea4 + +30662 +de8800000001000000000000046d61696c097669626f6c75636874026e6c0000010001 +de8880000001000000020002046d61696c097669626f6c75636874026e6c0000010001c0110002000100015180000c036e73310563736e6574c01bc01100020001000151800006036e7332c033c02f00010001000151800004c2451012c04700010001000151800004c2451212 + +30663 +53560000000100000000000003777777086f766572686569640677657474656e026e6c0000010001 +53568000000100000003000303777777086f766572686569640677657474656e026e6c0000010001c0190002000100015180000e036e73310761737034616c6cc020c01900020001000151800006036e7332c038c01900020001000151800006036e7333c038c03400010001000151800004c1adf9c3c04e000100010001518000043e70ec3cc06000010001000151800004c1ac0bae + +30664 +4a1300000001000000000000036e733109666972737466696e64026e6c0000010001 +4a1380000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30665 +1e8700000001000000000000036e733403777873026e6c0000010001 +1e8780000001000000030003036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +30666 +d91200000001000000000000037777770c626f6d6d656c64657369676e026e6c0000010001 +d91280000001000000020000037777770c626f6d6d656c64657369676e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c037 + +30667 +f47f00000001000000000000037777770a61727a77656273697465026e6c0000010001 +f47f80000001000000020000037777770a61727a77656273697465026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c032 + +30668 +379100000001000000000000086b6f7374756e697806787334616c6c026e6c0000010001 +379180000001000000030002086b6f7374756e697806787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +30669 +105400000001000000000000036e733209666972737466696e64026e6c0000010001 +105480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30670 +133500000001000000000000037777771d7461616b67726f65707665726e69657577696e676f6e646572626f7577026e6c0000010001 +133584030001000000010000037777771d7461616b67726f65707665726e69657577696e676f6e646572626f7577026e6c0000010001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +30671 +32e600000001000000000000036e733503777873026e6c0000010001 +32e680000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +30672 +964500000001000000000000036e733103666a66026e6c0000010001 +964580000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30673 +964600000001000000000000036e733203666a66026e6c0000010001 +964680000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30674 +964700000001000000000000037777770c747261666669636368616d70026e6c0000010001 +964780000001000000020000037777770c747261666669636368616d70026e6c0000010001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +30675 +e8cf000000010000000000000572656c617903617a72026e6c0000010001 +e8cf800000010000000300030572656c617903617a72026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000e036e733107737572666e6574c016c02a000100010001518000049c53fc99c03b000100010001518000049c53fcfdc04d00010001000151800004c0576a65 + +30676 +713b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +713b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30677 +342b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +342b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30678 +04ed00000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +04ed80000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +30679 +d43500000001000000000000046162656c0564656d6f6e026e6c0000010001 +d43580000001000000030002046162656c0564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +30680 +0ef4000000010000000000000a5354494e45484f555345026e6c0000020001 +0ef4840300010000000100000a5354494e45484f555345026e6c0000020001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +30681 +8ddb0000000100000000000004616e73310774697363616c69026e6c0000010001 +8ddb8000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +30682 +12c200000001000000000000036e733203666a66026e6c0000010001 +12c280000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30683 +12c300000001000000000000036e733103666a66026e6c0000010001 +12c380000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30684 +12c400000001000000000000037777770c747261666669636368616d70026e6c00001c0001 +12c480000001000000020000037777770c747261666669636368616d70026e6c00001c0001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +30685 +5aa800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +5aa880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +30686 +55fc00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +55fc80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +30687 +0e4000000001000000000000036e733109666972737466696e64026e6c0000010001 +0e4080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30688 +f630000000010000000000000d696e746572736f667477617265026e6c00000f0001 +f630800000010000000200020d696e746572736f667477617265026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c01ac00c00020001000151800006036e7332c032c02e00010001000151800004c2451012c04600010001000151800004c2451212 + +30689 +8bee000000010000000000000469632d73026e6c00000f0001 +8bee800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30690 +3c9f00000001000000000000036e733209666972737466696e64026e6c0000010001 +3c9f80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30691 +bb5f00000001000000000000126d6574726f706f6c6973666573746976616c026e6c00001c0001 +bb5f80000001000000020002126d6574726f706f6c6973666573746976616c026e6c00001c0001c00c0002000100015180000b026e7305706c616e74c01fc00c00020001000151800006036e7332c036c03300010001000151800004d59f0037c04a00010001000151800004d59f0046 + +30692 +44900000000100000000000005646e732d32056c61646f74026e6c0000010001 +44908000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30693 +173e00000001000000000000046469726b026e6c00000f0001 +173e80000001000000020001046469726b026e6c00000f0001c00c0002000100015180000d026e7307616d6572636f6dc011c00c00020001000151800006036e7331c028c02500010001000151800004c2b2b20a + +30694 +d165000000010000000000000463756369026e6c00000f0001 +d165800000010000000300030463756369026e6c00000f0001c00c0002000100015180000904686572610178c00cc00c0002000100015180000c066865726d6573026e6cc00cc00c00020001000151800009066865726d6573c02ac02500010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +30695 +e71700000001000000000000036d783107626265796f6e64026e6c0000010001 +e71780000001000000020002036d783107626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043eb1900bc03e000100010001518000043eb19002 + +30696 +1ab10000000100000000000005646e732d31056c61646f74026e6c0000010001 +1ab18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30697 +967600000001000000000000036e733103666a66026e6c0000010001 +967680000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30698 +967700000001000000000000036e733203666a66026e6c0000010001 +967780000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30699 +84d6000000010000000000000b776f726c64616363657373026e6c0000010001 +84d6800000010000000200010b776f726c64616363657373026e6c0000010001c00c0002000100015180000a036e733303777873c018c00c00020001000151800006036e7334c030c04200010001000151800004d5ef9a65 + +30700 +d7b500000001000000000000036e733103757063026e6c0000010001 +d7b580000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +30701 +897e00000001000000000000046e733032066368656c6c6f026e6c0000010001 +897e80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +30702 +e20000000001000000000000046e733031066368656c6c6f026e6c0000010001 +e20080000001000000030003046e733031066368656c6c6f026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c00c00010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +30703 +556000000001000000000000076d656d62657273066368656c6c6f026e6c0000010001 +556080000001000000030003076d656d62657273066368656c6c6f026e6c0000010001c01400020001000151800007046e733031c014c01400020001000151800007046e733032c014c0140002000100015180000a036e733103757063c01bc02f00010001000151800004d4534482c04200010001000151800004d4534483c05500010001000151800004d48e1c42 + +30704 +e71800000001000000000000037777771272656e61756c742d76656c7365726265656b026e6c0000010001 +e71880000001000000030001037777771272656e61756c742d76656c7365726265656b026e6c0000010001c0100002000100015180000e026e7308767575727765726bc023c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c055c037000100010001518000043efa0202 + +30705 +7dd000000001000000000000036e733109652d666163746f7279026e6c0000010001 +7dd080000001000000020002036e733109652d666163746f7279026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c1fefe82c03c00010001000151800004c1feff82 + +30706 +76fe00000001000000000000036e733209652d666163746f7279026e6c0000010001 +76fe80000001000000020002036e733209652d666163746f7279026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c1fefe82c00c00010001000151800004c1feff82 + +30707 +12ed00000001000000000000036e733203666a66026e6c0000010001 +12ed80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30708 +12ee00000001000000000000036e733103666a66026e6c0000010001 +12ee80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30709 +ee5e000000010000000000000d67656d65656e746562616e656e026e6c0000010001 +ee5e800000010000000200000d67656d65656e746562616e656e026e6c0000010001c00c00020001000151800013036e73310368617306686f7374697402626500c00c0002000100015180000a036e7332036c7578c036 + +30710 +cbb600000001000000000000036d7832046d61696c067073696e6574026e6c0000010001 +cbb680000001000000030003036d7832046d61696c067073696e6574026e6c0000010001c0150002000100015180000b047072693103646e73c015c015000200010001518000070470726932c035c015000200010001518000070470726933c035c030000100010001518000049a0ff9a6c047000100010001518000049a0ff9aac05a000100010001518000049a0ff9ae + +30711 +21c700000001000000000000047072693103646e73067073696e6574026e6c0000010001 +21c780000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +30712 +679400000001000000000000047072693203646e73067073696e6574026e6c0000010001 +679480000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +30713 +b3ca00000001000000000000047072693303646e73067073696e6574026e6c0000010001 +b3ca80000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +30714 +210d0000000100000000000004736d7470086e65747761746368026e6c0000010001 +210d8000000100000002000004736d7470086e65747761746368026e6c0000010001c0110002000100015180000d036e7331036b706e036e657400c01100020001000151800006036e7332c032 + +30715 +25d900000001000000000000036e73330767617574656e67026e6c0000010001 +25d980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30716 +40750000000100000000000004686e73300774697363616c69026e6c0000010001 +40758000000100000003000204686e73300774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +30717 +f6d80000000100000000000010444f4e2d52495349434f424548454552024e4c00000f0001 +f6d88000000100000002000210444f4e2d52495349434f424548454552024e4c00000f0001c00c00020001000151800010026e730a7a65656c616e646e6574c01dc00c00020001000151800006036e7332c034c03100010001000151800004d473c0c1c04d00010001000151800004d473c0c3 + +30718 +f864000000010000000000000e53544556454e45535452454c4c41026e6c0000020001 +f864840300010000000100000e53544556454e45535452454c4c41026e6c0000020001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +30719 +688f000000010000000000000663616e746f73026e6c00000f0001 +688f800000010000000200010663616e746f73026e6c00000f0001c00c0002000100015180000e036e7331076e6564636f6d70c013c00c00020001000151800011036e7332076e6564636f6d70036f726700c02700010001000151800004c3c1a80d + +30720 +d68400000001000000000000086b6f656c706c616e026e6c0000010001 +d68480000001000000020002086b6f656c706c616e026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +30721 +557500000001000000000000046d61696c0c6b333368616972686f74656c026e6c0000010001 +557580000001000000020002046d61696c0c6b333368616972686f74656c026e6c0000010001c01100020001000151800015036e73310e74726565776562686f7374696e67c01ec01100020001000151800006036e7332c036c032000100010001518000045104580ac053000100010001518000045104601e + +30722 +387a0000000100000000000008696e7472616e657403617663026e6c0000010001 +387a8000000100000002000208696e7472616e657403617663026e6c0000010001c0150002000100015180000c036e73310563736e6574c019c01500020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +30723 +6ed500000001000000000000036e73310e74726565776562686f7374696e67026e6c00001c0001 +6ed580000001000000020002036e73310e74726565776562686f7374696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104580ac041000100010001518000045104601e + +30724 +48e600000001000000000000085f6b706173737764045f746370126772616669646174615f646576656e746572026e6c0000060001 +48e684030001000000010000085f6b706173737764045f746370126772616669646174615f646576656e746572026e6c0000060001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +30725 +1f2700000001000000000000036e73310e74726565776562686f7374696e67026e6c0000260001 +1f2780000001000000020002036e73310e74726565776562686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104580ac041000100010001518000045104601e + +30726 +f25200000001000000000000036e73320e74726565776562686f7374696e67026e6c00001c0001 +f25280000001000000020002036e73320e74726565776562686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc033000100010001518000045104580ac00c000100010001518000045104601e + +30727 +292500000001000000000000036e73320e74726565776562686f7374696e67026e6c0000260001 +292580000001000000020002036e73320e74726565776562686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc033000100010001518000045104580ac00c000100010001518000045104601e + +30728 +23c700000001000000000000097472616e73617669610c652d66756c66696c6d656e74026e6c0000010001 +23c780000001000000030003097472616e73617669610c652d66756c66696c6d656e74026e6c0000010001c016000200010001518000110161026e7309652d76696c6c616765c023c0160002000100015180000e036e733007656173796e6574c023c01600020001000151800006036e7331c058c03700010001000151800004d400eb42c05400010001000151800004c2a55e01c06e00010001000151800004c2a55e05 + +30729 +1daf00000001000000000000037777770a6b696e64657274656e74026e6c0000010001 +1daf80000001000000020000037777770a6b696e64657274656e74026e6c0000010001c01000020001000151800016036e73310c6d756e74696e7465726e6574036e657400c01000020001000151800006036e7332c033 + +30730 +8b5900000001000000000000026d780f7a6f7267656e7a656b657268656964026e6c0000010001 +8b5980000001000000020002026d780f7a6f7267656e7a656b657268656964026e6c0000010001c00f0002000100015180000d026e73076e65746c616e64c01fc00f00020001000151800006036e7332c036c03300010001000151800004d9aa2042c04c00010001000151800004d9aa2c06 + +30731 +a47300000001000000000000037777770d74656e6e69736d616e61676572026e6c0000010001 +a47380000001000000020000037777770d74656e6e69736d616e61676572026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c035 + +30732 +c9430000000100000000000003777777046d736372026e6c0000010001 +c9438000000100000002000003777777046d736372026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c02f + +30733 +5d0f000000010000000000000877646576726965730564656d6f6e026e6c0000010001 +5d0f800000010000000300020877646576726965730564656d6f6e026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +30734 +e55e000000010000000000000a6264612d696e74726f6e026e6c00000f0001 +e55e800000010000000200020a6264612d696e74726f6e026e6c00000f0001c00c0002000100015180000b036e73310477656233c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d436240ec04200010001000151800004c2b262ef + +30735 +f5d10000000100000000000003777777116e626264697374726963747477656e7465026e6c0000010001 +f5d18000000100000002000103777777116e626264697374726963747477656e7465026e6c0000010001c0100002000100015180000a036e733303777873c022c01000020001000151800006036e7334c03ac04c00010001000151800004d5ef9a65 + +30736 +686f00000001000000000000096963742d7472656e64026e6c0000ff0001 +686f80000001000000020002096963742d7472656e64026e6c0000ff0001c00c00020001000151800006036e7330c00cc00c00020001000151800006036e7331c00cc02a000100010001518000045111281cc03c00010001000151800004d994a88c + +30737 +0b7100000001000000000001036e733109756e69736f75726365026e6c00000100010000291000000000000000 +0b7180000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +30738 +0b7100000001000000000000036e733109756e69736f75726365026e6c0000010001 +0b7180000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +30739 +680a00000001000000000000036e73310b776f726c646f6e6c696e65026e6c0000010001 +680a80000001000000030002036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +30740 +65dd00000001000000000000036e73320b776f726c646f6e6c696e65026e6c0000010001 +65dd80000001000000030002036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +30741 +e47f000000010000000000000f70656e73696f6e7365727669636573026e6c0000ff0001 +e47f800000010000000200000f70656e73696f6e7365727669636573026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c01cc00c00020001000151800006036e7332c033 + +30742 +200b00000001000000000000036e7332076e656473746174026e6c0000010001 +200b80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +30743 +200c00000001000000000000036e7334076e656473746174026e6c0000010001 +200c80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +30744 +c04e00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c04e80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +30745 +6aa500000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +6aa580000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +30746 +24180000000100000000000003777777056c6f67696e04616c6578026e6c00001c0001 +24188000000100000002000003777777056c6f67696e04616c6578026e6c00001c0001c0160002000100015180000d036e7331036b706e036e657400c01600020001000151800006036e7332c033 + +30747 +623d0000000100000000000009706172616469676974026e6c00000f0001 +623d8000000100000002000009706172616469676974026e6c00000f0001c00c00020001000151800010026e73076e65737363697303636f6d00c00c00020001000151800006036e7332c02d + +30748 +2f4200000001000000000000036e733103757063026e6c0000010001 +2f4280000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +30749 +f0a200000001000000000000046e733032066368656c6c6f026e6c0000010001 +f0a280000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +30750 +2dee00000001000000000000036e73330767617574656e67026e6c0000010001 +2dee80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30751 +e1a600000001000000000000037777771c696e6b746f6d692d746573742d71756572792d383233363534303038026e6c0000010001 +e1a684030001000000010000037777771c696e6b746f6d692d746573742d71756572792d383233363534303038026e6c0000010001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +30752 +9c470000000100000000000003747332057069776562026e6c0000010001 +9c478000000100000002000203747332057069776562026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800011036e73330a74727565736572766572c016c02a00010001000151800004d5efb23dc03b00010001000151800004d5ef8005 + +30753 +e9a9000000010000000000000c76616e2d6d756c6272656774026e6c00000f0001 +e9a9800000010000000200000c76616e2d6d756c6272656774026e6c00000f0001c00c0002000100015180001504646e73310a6b6f6f796f6e6c696e6503636f6d00c00c00020001000151800006036e7332c032 + +30754 +d5fb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +d5fb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30755 +de830000000100000000000005646e732d32056c61646f74026e6c0000010001 +de838000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +30756 +044500000001000000000000037777770c7361696c6f6c696e73686f70026e6c0000010001 +044580000001000000030002037777770c7361696c6f6c696e73686f70026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +30757 +fbfe00000001000000000000037777770968797065726c656170026e6c0000010001 +fbfe80000001000000020002037777770968797065726c656170026e6c0000010001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +30758 +febb000000010000000000000968797065726c656170026e6c0000010001 +febb800000010000000200020968797065726c656170026e6c0000010001c00c0002000100015180000a036e7331036e7873c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +30759 +7e240000000100000000000006636861726973026e6c0000ff0001 +7e248000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +30760 +3bfa00000001000000000000036e733106782d73697465026e6c0000010001 +3bfa80000001000000020002036e733106782d73697465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450f7ca4bc0390001000100015180000450f7ca50 + +30761 +265000000001000000000000067873657276650a79656c6c6f776d696e64026e6c0000010001 +265080000001000000030003067873657276650a79656c6c6f776d696e64026e6c0000010001c0130002000100015180000e026e7308736e696a64657273c01ec01300020001000151800005026e73c013c01300020001000151800006036e7332c013c03200010001000151800004c2e59918c04c00010001000151800004c2e59926c05d000100010001518000043e5dc28e + +30762 +2f400000000100000000000009652d6c756e61746963026e6c0000010001 +2f408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30763 +470500000001000000000000037777770c74656c65666f6f6e67696473026e6c0000010001 +470580000001000000020000037777770c74656c65666f6f6e67696473026e6c0000010001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +30764 +3c1000000001000000000000037777770c74656c65666f6f6e67696473026e6c0000010001 +3c1080000001000000020000037777770c74656c65666f6f6e67696473026e6c0000010001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +30765 +490700000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +490780000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +30766 +f46f00000001000000000000037777770f726963686172646b616d7068756973026e6c00000f0001 +f46f80000001000000020002037777770f726963686172646b616d7068756973026e6c00000f0001c01000020001000151800014036e73310d6d6576657273686f7374696e67c020c01000020001000151800006036e7332c038c03400010001000151800004d5c9e8c8c05400010001000151800004d5c9e8c9 + +30767 +270a00000001000000000000037777770962697a617273697465026e6c0000010001 +270a80000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +30768 +2df600000001000000000000036e73340767617574656e67026e6c0000010001 +2df680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30769 +2dfe00000001000000000000036e73340767617574656e67026e6c0000010001 +2dfe80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30770 +060000000001000000000000036e73340767617574656e67026e6c0000010001 +060080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30771 +260f00000001000000000000036e73340767617574656e67026e6c0000010001 +260f80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30772 +46ef0000000100000000000006636861726973026e6c0000010001 +46ef8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +30773 +162f00000001000000000000036e73340767617574656e67026e6c0000010001 +162f80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30774 +263600000001000000000000036e73340767617574656e67026e6c0000010001 +263680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30775 +b38300000001000000000000037777770a61727a77656273697465026e6c0000010001 +b38380000001000000020000037777770a61727a77656273697465026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c032 + +30776 +08fb00000001000000000000037777770e6e6f6f7264657262726565647465026e6c00001c0001 +08fb80000001000000020000037777770e6e6f6f7264657262726565647465026e6c00001c0001c01000020001000151800011036e7331076e6564706f7274036e657400c01000020001000151800006036e7332c037 + +30777 +9f5a000000010000000000000377777708676f6f64666f6e74026e6c0000010001 +9f5a840300010000000100000377777708676f6f64666f6e74026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +30778 +e90d00000001000000000000034e53320b494e5445525354524f4f4d024e4c0000010001 +e90d80000001000000020002034e53320b494e5445525354524f4f4d024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000450558121c00c00010001000151800004d58141c4 + +30779 +e8bf00000001000000000000034e53310b494e5445525354524f4f4d024e4c0000010001 +e8bf80000001000000020002034e53310b494e5445525354524f4f4d024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450558121c03e00010001000151800004d58141c4 + +30780 +0ccc00000001000000000000036e733104686f6d65026e6c0000010001 +0ccc80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +30781 +0a3a00000001000000000000036e733204686f6d65026e6c0000010001 +0a3a80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +30782 +05b200000001000000000000036e733404686f6d65026e6c0000010001 +05b280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +30783 +9b1900000001000000000000036e733304686f6d65026e6c0000010001 +9b1980000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +30784 +1e800000000100000000000007766462636f6d70026e6c00001c0001 +1e808000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +30785 +74f100000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +74f180000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +30786 +647c0010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000080000000 +647c8000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +30787 +b7a20000000100000000000005746c6774650a7061797065726e657773026e6c0000010001 +b7a28000000100000002000205746c6774650a7061797065726e657773026e6c0000010001c01200020001000151800010036e733109652d666163746f7279c01dc01200020001000151800006036e7332c035c03100010001000151800004c1fefe82c04d00010001000151800004c1feff82 + +30788 +3a5b000000010000000000000e70656f706c65706172746e657273026e6c0000ff0001 +3a5b800000010000000200000e70656f706c65706172746e657273026e6c0000ff0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c035 + +30789 +995300000001000000000000087669737669736965026e6c00000f0001 +995380000001000000020000087669737669736965026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02c + +30790 +03db0000000100000000000007742d686f757365026e6c00000f0001 +03db8000000100000002000207742d686f757365026e6c00000f0001c00c0002000100015180000e036e73310768656262697a7ac014c00c00020001000151800006036e7332c02cc02800010001000151800004c372eb42c042000100010001518000043e320e91 + +30791 +07320000000100000000000003777777146772656964616e75737a6f6e776572696e67656e026e6c0000010001 +07328403000100000001000003777777146772656964616e75737a6f6e776572696e67656e026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +30792 +00a500000001000000000000076d696e62757a61026e6c00000f0001 +00a580000001000000020001076d696e62757a61026e6c00000f0001c00c0002000100015180000b087374617267617465c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004d535a3d2 + +30793 +71a100000001000000000000056d61696c31076e6564636f6d70026e6c0000010001 +71a180000001000000020001056d61696c31076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30794 +19f300000001000000000000056d61696c31076e6564636f6d70026e6c00001c0001 +19f380000001000000020001056d61696c31076e6564636f6d70026e6c00001c0001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30795 +c46c00000001000000000000056d61696c31076e6564636f6d70026e6c0000260001 +c46c80000001000000020001056d61696c31076e6564636f6d70026e6c0000260001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30796 +ef1700000001000000000000056d61696c33076e6564636f6d70026e6c0000010001 +ef1780000001000000020001056d61696c33076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30797 +adf300000001000000000000056d61696c33076e6564636f6d70026e6c00001c0001 +adf380000001000000020001056d61696c33076e6564636f6d70026e6c00001c0001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30798 +5db800000001000000000000056d61696c33076e6564636f6d70026e6c0000260001 +5db880000001000000020001056d61696c33076e6564636f6d70026e6c0000260001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30799 +adf500000001000000000000056d61696c34076e6564636f6d70026e6c0000010001 +adf580000001000000020001056d61696c34076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30800 +1dcf00000001000000000000056d61696c34076e6564636f6d70026e6c00001c0001 +1dcf80000001000000020001056d61696c34076e6564636f6d70026e6c00001c0001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30801 +b76300000001000000000000056d61696c34076e6564636f6d70026e6c0000260001 +b76380000001000000020001056d61696c34076e6564636f6d70026e6c0000260001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +30802 +5cd200000001000000000000036e7331076e6564636f6d70026e6c00001c0001 +5cd280000001000000020001036e7331076e6564636f6d70026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +30803 +780d00000001000000000000036e7331076e6564636f6d70026e6c0000260001 +780d80000001000000020001036e7331076e6564636f6d70026e6c0000260001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +30804 +d66a000000010000000000000973657868756e746572027830026e6c0000010001 +d66a800000010000000200020973657868756e746572027830026e6c0000010001c0160002000100015180000d026e730776697065726276c019c01600020001000151800006036e7332c030c02d00010001000151800004d5881a07c04600010001000151800004d5881a05 + +30805 +099028000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573077369747461726408637265646f6f7273026e6c00002100010000025800230000006401850773657276657231077369747461726408637265646f6f7273026e6c00 +0990a8040000000000000000 + +30806 +48420000000100000000000004686f6d650774697363616c69026e6c0000010001 +48428000000100000003000204686f6d650774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +30807 +f2f300000001000000000000026e73076575726f6e6574026e6c0000010001 +f2f380000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +30808 +6ff200000001000000000000026e73076575726f6e6574026e6c00001c0001 +6ff280000001000000020001026e73076575726f6e6574026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +30809 +22bc00000001000000000000026e73076575726f6e6574026e6c0000260001 +22bc80000001000000020001026e73076575726f6e6574026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +30810 +ecd2000000010000000000000377777703647069026e6c0000010001 +ecd2800000010000000200000377777703647069026e6c0000010001c0100002000100015180001607646e732d65753108706f776572646e73036e657400c0100002000100015180000a07646e732d757331c030 + +30811 +0000000070024000bdaf0000020405b401010402 +000080010000000000000000 + +30812 +d3b00000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +d3b08000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +30813 +b68abd075010447072610000000000000000 + + +30814 +b68abd0750184470b7c30000008d553b000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcf1403c4e7100030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 + + +30815 +3a7600000001000000000000037777770962697a617273697465026e6c0000010001 +3a7680000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +30816 +50b300000001000000000000046d61696c057374696261026e6c0000010001 +50b380000001000000020002046d61696c057374696261026e6c0000010001c0110002000100015180000c026e7306787334616c6cc017c01100020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +30817 +b68abd155011446271d10000000000000000 + + +30818 +8ef3000000010000000000000e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001 +8ef3800000010000000200020e67616c6c6572796275696c6465720d706172746e6572636c69636b73026e6c0000010001c01b0002000100015180000f036e73310861746c616e74697ac029c01b00020001000151800006036e7332c041c03d00010001000151800004d5efa011c05800010001000151800004d5efa075 + +30819 +0000000070024000c6270000020405b401010402 +000080010000000000000000 + +30820 +00ee00100001000000000001026e7306787334616c6c026e6c00000100010000290800000000000000 +00ee80000001000000030003026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +30821 +b37f00000001000000000000096f7070656e6865696d026e6c00000f0001 +b37f80000001000000020002096f7070656e6865696d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +30822 +b8420000000100000000000005666f72756d0a636c7562636861727473026e6c0000010001 +b8428000000100000002000205666f72756d0a636c7562636861727473026e6c0000010001c0120002000100015180000a036e7331036e7873c01dc01200020001000151800006036e7332c035c03100010001000151800004d973c015c04700010001000151800004d973c102 + +30823 +803500100001000000000001036e733206787334616c6c026e6c00000100010000290800000000000000 +803580000001000000030003036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d09630000291000000000000000 + +30824 +63ab0000000100000000000003647676026e6c00001c0001 +63ab8000000100000003000303647676026e6c00001c0001c00c0002000100015180000e04646e733106626c6978656dc010c00c0002000100015180000704646e7332c029c00c0002000100015180000704646e7333c029c02400010001000151800004d44fe803c03e00010001000151800004c3f5c782c05100010001000151800004d44ff303 + +30825 +e1aa00000001000000000000037777770b64652d6f76657268656964026e6c0000010001 +e1aa80000001000000020002037777770b64652d6f76657268656964026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01cc01000020001000151800006036e7332c033c03000010001000151800004d453c005c04e00010001000151800004d453c006 + +30826 +581b0000000100000000000003777777066d6172696a6e046d73767a026e6c0000010001 +581b8000000100000002000003777777066d6172696a6e046d73767a026e6c0000010001c0170002000100015180000f036e7331056e6c32626503636f6d00c01700020001000151800006036e7332c034 + +30827 +b68abd165010446271d00000000000000000 + + +30828 +b68bafe25010447087fd0000000000000000 + + +30829 +1a8900000001000000000000037777770a736d76657268616c656e026e6c0000010001 +1a8980000001000000020000037777770a736d76657268616c656e026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c034 + +30830 +b68bafe25018447063a10000008dbffa000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcf1403c4e7100030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 + + +30831 +f46700000001000000000000037777770d6275646765742d686f74656c73026e6c0000010001 +f46780000001000000020002037777770d6275646765742d686f74656c73026e6c0000010001c0100002000100015180000a036e7331036e7873c01ec01000020001000151800006036e7332c036c03200010001000151800004d973c015c04800010001000151800004d973c102 + +30832 +ea4a00000001000000000000096b696e672d70696e67026e6c00000f0001 +ea4a80000001000000020000096b696e672d70696e67026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c031 + +30833 +b68baff050114462876d0000000000000000 + + +30834 +efa000000001000000000000026e7306787334616c6c026e6c0000010001 +efa080000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +30835 +0000000070024000803f0000020405b401010402 +000080010000000000000000 + +30836 +77d000000001000000000000036e733206787334616c6c026e6c0000010001 +77d080000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +30837 +b68baff150104462876c0000000000000000 + + +30838 +b68c3a0a50104470b7ec0000000000000000 +b68cba040000000000000000 + +30839 +b68c3a0a501844701e530000008d3538000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcf1403c4e7100030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 +b68cba040000000000000000 + +30840 +961400000001000000000000036e733107627573686f7374026e6c0000010001 +961480000001000000020002036e733107627573686f7374026e6c0000010001c01000020001000151800012036e73310b62756c6b646f6d61696e73c018c01000020001000151800006036e7332c030c02c00010001000151800004d4ccd1b2c04a00010001000151800004d4ccd1b3 + +30841 +b68c3a1850114462b75c0000000000000000 +b68cba140000000000000000 + +30842 +00de00000001000000000000037777770c74686564616e63696e67646a026e6c0000010001 +00de80000001000000020000037777770c74686564616e63696e67646a026e6c0000010001c0100002000100015180001204646e733107636f6d70656e7a036e657400c0100002000100015180000704646e7332c036 + +30843 +c07100000001000000000000067365617263680a6562617973746f726573026e6c0000010001 +c07180000001000000030000067365617263680a6562617973746f726573026e6c0000010001c013000200010001518000140963726f636f64696c65046562617903636f6d00c0130002000100015180001a0573636130320373656303646e730665786f647573036e657400c01300020001000151800008057363613033c058 + +30844 +ae6e000000010000000000000377777704616d736f026e6c0000010001 +ae6e800000010000000200020377777704616d736f026e6c0000010001c0100002000100015180000c04646e73310470696e73c015c0100002000100015180000704646e7332c02ec02900010001000151800004d9c26101c04100010001000151800004d9c26002 + +30845 +4cf4000000010000000000000377777712696e746572737461722d6d657562656c656e026e6c0000010001 +4cf4800000010000000200000377777712696e746572737461722d6d657562656c656e026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c03a + +30846 +befb00000001000000000000037777770c666c6f7269646176696c6c61026e6c0000010001 +befb80000001000000020000037777770c666c6f7269646176696c6c61026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +30847 +70150000000100000000000003616775026e6c00000f0001 +70158000000100000003000103616775026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +30848 +b68c3a1950104462b75b0000000000000000 +b68cba140000000000000000 + +30849 +97c10000000100000000000003777777096d696c64706f776572026e6c0000010001 +97c18000000100000003000203777777096d696c64706f776572026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +30850 +544e0000000100000000000003777777076d796f6b696e65026e6c0000010001 +544e8000000100000003000303777777076d796f6b696e65026e6c0000010001c0100002000100015180000e036e733107686f7374696e67c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c000100010001518000043e818b01c046000100010001518000043e818b02c058000100010001518000043e818ae1 + +30851 +0cb80000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +0cb88000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30852 +a6400000000100000000000003776d7707757477656e7465026e6c0000010001 +a6408000000100000003000303776d7707757477656e7465026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c0001000100015180000482590102c03e0001000100015180000482590103c05000010001000151800004c0571113 + +30853 +bc7700000001000000000000037777770b6372616e656e646f6e636b026e6c0000010001 +bc7780000001000000020000037777770b6372616e656e646f6e636b026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c034 + +30854 +f50e00000001000000000000037777770b6574636265737477617265026e6c0000010001 +f50e80000001000000020000037777770b6574636265737477617265026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c033 + +30855 +ce0a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ce0a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30856 +c9f3000000010000000000000c657261736d7573626f6f6b73026e6c00000f0001 +c9f3800000010000000200020c657261736d7573626f6f6b73026e6c00000f0001c00c0002000100015180000f036e73310873796e6e65747279c019c00c00020001000151800006036e7332c031c02d00010001000151800004d584ae41c04800010001000151800004d584ae42 + +30857 +141200000001000000000000036e733203666a66026e6c0000010001 +141280000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30858 +2f8200000001000000000000037777770c696b62656e657262696a6e61026e6c0000010001 +2f8280000001000000020002037777770c696b62656e657262696a6e61026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01dc01000020001000151800006036e7332c035c03100010001000151800004d5efa011c04c00010001000151800004d5efa075 + +30859 +141300000001000000000000036e733103666a66026e6c0000010001 +141380000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30860 +0444000000010000000000000862617374696f6e310562617a6973026e6c0000010001 +0444800000010000000200010862617374696f6e310562617a6973026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b026e73026e6c036e657400c00c00010001000151800004824e8f01 + +30861 +c54a000000010000000000000662616f626162026e6c0000010001 +c54a800000010000000200000662616f626162026e6c0000010001c00c00020001000151800012036e73310878656e6f73697465036e657400c00c00020001000151800006036e7332c02b + +30862 +0d120000000100000000000008667265656d61696c026e6c00000f0001 +0d128000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +30863 +335a00000001000000000000036e73330a72336469656e7374656e026e6c0000010001 +335a80000001000000030003036e73330a72336469656e7374656e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f000100010001518000043e291ad2c041000100010001518000043e291ad3c00c000100010001518000043e291ad4 + +30864 +e1010000000100000000000004646e73310471776562026e6c0000010001 +e1018000000100000002000204646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +30865 +686f0000000100000000000004646e73320471776562026e6c0000010001 +686f8000000100000002000204646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +30866 +10e200000001000000000000036e733109666972737466696e64026e6c0000010001 +10e280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30867 +725a00000001000000000000036e733209666972737466696e64026e6c0000010001 +725a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30868 +0f96000000010000000000000377777706617265613137026e6c0000010001 +0f96800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +30869 +5879000000010000000000000377777706617265613137026e6c0000010001 +5879800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +30870 +eb5e00000001000000000000037777770a666f746f646f6b746572026e6c0000010001 +eb5e80000001000000020000037777770a666f746f646f6b746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +30871 +27e300000001000000000000037777770765666661746861026e6c0000010001 +27e380000001000000020002037777770765666661746861026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c018c01000020001000151800006036e7332c030c02c00010001000151800004d4b20403c04500010001000151800004d5881e45 + +30872 +11820000000100000000000015726576616c6964617469652d66726965736c616e64026e6c0000010001 +11828000000100000002000215726576616c6964617469652d66726965736c616e64026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec022c00c00020001000151800006036e7332c03ac03600010001000151800004c29f4906c04e00010001000151800004c29fb004 + +30873 +f6bd000000010000000000000377777703626261026e6c0000010001 +f6bd800000010000000200000377777703626261026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +30874 +8d0a000000010000000000000377777707616e74656e6e61026e6c0000010001 +8d0a800000010000000200010377777707616e74656e6e61026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180001306696e666f726d07616e74656e6e6102646b00c02c00010001000151800004d995dd13 + +30875 +230600000001000000000000037777770a72656372656174696566026e6c0000010001 +230680000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +30876 +1ab500000001000000000000046578706f0474657261026e6c0000010001 +1ab580000001000000030002046578706f0474657261026e6c0000010001c0110002000100015180000d036e733106776964657873c016c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +30877 +4cb900000001000000000000046578706f0474657261026e6c0000010001 +4cb980000001000000030002046578706f0474657261026e6c0000010001c0110002000100015180000d036e733106776964657873c016c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +30878 +042d000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +042d800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30879 +9ab300000001000000000000046e73303903777873026e6c00001c0001 +9ab380000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +30880 +9c5c00000001000000000000036e733403777873026e6c00001c0001 +9c5c80000001000000030003036e733403777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +30881 +1b8100000001000000000000046e73303803777873026e6c00001c0001 +1b8180000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +30882 +1434000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +1434800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +30883 +7cea00000001000000000000037777770a666f746f646f6b746572026e6c0000010001 +7cea80000001000000020000037777770a666f746f646f6b746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +30884 +a82000000001000000000000026e7305706c616e74026e6c0000010001 +a82080000001000000020002026e7305706c616e74026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d59f0037c03700010001000151800004d59f0046 + +30885 +a71400000001000000000000036e733205706c616e74026e6c0000010001 +a71480000001000000020002036e733205706c616e74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d59f0037c00c00010001000151800004d59f0046 + +30886 +c46c00000001000000000000054d4f4c454e0350434d026e6c0000010001 +c46c80000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +30887 +000000006002223800990000020405b40000 +000080010000000000000000 + +30888 +9b4b00000001000000000000036e7331056132303030026e6c0000010001 +9b4b80000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +30889 +b68efdc55010223863f10000000000000000 + + +30890 +f6ac0000000100000000000003656236026e6c00000f0001 +f6ac8403000100000001000003656236026e6c00000f0001c01000060001000038400036026e730f646f6d61696e2d7265676973747279c0100a686f73746d6173746572c0270bf1e540000070800000384000278d0000003840 + +30891 +b68efdc550182238a3690000001d92300000000100000000000008736c61676572696a026e6c0000060001 + + +30892 +b692000000010000000000000579756d6d79026e6c0000010001 +b692800000010000000200000579756d6d79026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02a + +30893 +b68efe335010223863640000000000000000 + + +30894 +b68efe335011223863630000000000000000 + + +30895 +06b200000001000000000000036e733109666972737466696e64026e6c0000010001 +06b280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30896 +b68efe345010223863620000000000000000 + + +30897 +356100000001000000000000036e733209666972737466696e64026e6c0000010001 +356180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +30898 +fa1e00000001000000000000036d783203626974026e6c0000010001 +fa1e80000001000000030003036d783203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +30899 +158528000001000200000000026e6c0000060001056e616f6d690e6e65746c696a6e6e65747765726b026e6c00000500fe000000000000c01400010001000000000004c0a80114 +1585a8040000000000000000 + +30900 +6b35000000010000000000000377777706626970706472026e6c0000010001 +6b35800000010000000200000377777706626970706472026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c017c0100002000100015180000704686e7331c030 + +30901 +e682000000010000000000000469632d73026e6c00000f0001 +e682800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +30902 +143900000001000000000000036e733203666a66026e6c0000010001 +143980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30903 +8ba60000000100000000000103777873026e6c0000ff00010000291000000000000000 +8ba68000000100000003000403777873026e6c0000ff0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +30904 +9d9100000001000000000000036e733503777873026e6c0000010001 +9d9180000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +30905 +70c400000001000000000000036e733503777873026e6c00001c0001 +70c480000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +30906 +143a00000001000000000000036e733103666a66026e6c0000010001 +143a80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30907 +0000000070024000bd7e0000020405b401010402 +000080010000000000000000 + +30908 +4f3100000001000000000000036d7832067874646e6574026e6c0000010001 +4f3180000001000000020002036d7832067874646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c02b00010001000151800004c16e9d02c03c00010001000151800004d9cc165f + +30909 +b68f86c850104470a86a0000000000000000 + + +30910 +b68f86c8501844702e0000000092d500000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd41403c4ec10003000000334e544c4d535350000100000097b208e00e000e002500000005000500200000004e414f4d494e45544c494a4e4e45545745524b0000 + + +30911 +036b00000001000000000000037777770e77656273686f65636f6d70616e79026e6c0000010001 +036b80000001000000020002037777770e77656273686f65636f6d70616e79026e6c0000010001c0100002000100015180000e04646e733106666f7263657ac01fc0100002000100015180000704646e7332c038c03300010001000151800004d994af13c04d00010001000151800004d994af1a + +30912 +b68f86d650114462a7d50000000000000000 + + +30913 +cda3000000010000000000000674616b652d32026e6c00000f0001 +cda3800000010000000200000674616b652d32026e6c00000f0001c00c00020001000151800010036e733109666972737466696e64c013c00c00020001000151800006036e7332c02b + +30914 +00000000700240000ff90000020405b401010402 +000080010000000000000000 + +30915 +b68f86d750104462a7d40000000000000000 + + +30916 +2683000000010000000000000331373202323101310131026e6c0000010001 +2683840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +30917 +b6902691501044705b1b0000000000000000 +b690a6930000000000000000 + +30918 +b690269150184470c6b100000092f000000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd41403c4ec10003000000334e544c4d535350000100000097b208e00e000e002500000005000500200000004e414f4d494e45544c494a4e4e45545745524b0000 +b690a6930000000000000000 + +30919 +500700000001000000000000037777770b726567696f7477656e7465026e6c0000010001 +500780000001000000020000037777770b726567696f7477656e7465026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c033 + +30920 +4b6300000001000000000000046d61696c076e65746578706f026e6c0000010001 +4b6380000001000000020002046d61696c076e65746578706f026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02d000100010001518000043efa0ac2c03e000100010001518000043efa0a82 + +30921 +f53800000001000000000000026e73076575726f6e6574026e6c0000010001 +f53880000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +30922 +92aa00000001000000000000037777770d6f7574646f6f72706167696e61026e6c0000010001 +92aa80000001000000020002037777770d6f7574646f6f72706167696e61026e6c0000010001c0100002000100015180000d04646e733105692d702d64c01ec0100002000100015180000704646e7332c037c03200010001000151800004d9124003c04b00010001000151800004d9124104 + +30923 +b690269f501144625a860000000000000000 +b690a6930000000000000000 + +30924 +2fb20000000100000000000009652d6c756e61746963026e6c0000010001 +2fb28000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30925 +87e30000000100000000000003777777097072616f7468757573026e6c0000010001 +87e38000000100000002000103777777097072616f7468757573026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +30926 +27c00000000100000000000009652d6c756e61746963026e6c0000010001 +27c08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +30927 +000000007002400057280000020405b401010402 +000080010000000000000000 + +30928 +8b5a00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +8b5a80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +30929 +e8580000000100000000000003777777086d6574656f776562026e6c0000010001 +e8588000000100000002000203777777086d6574656f776562026e6c0000010001c01000020001000151800009026e73036f6b65c019c01000020001000151800006036e7332c030c02d00010001000151800004c13acc3bc04200010001000151800004c13acc27 + +30930 +b69026a0501044625a850000000000000000 +b690a6a30000000000000000 + +30931 +758600000001000000000000037777770463636774026e6c0000010001 +758680000001000000020002037777770463636774026e6c0000010001c01000020001000151800013036e73310c666173747365727665723135c015c01000020001000151800006036e7332c02dc0290001000100015180000442a4f32cc0480001000100015180000442a4f335 + +30932 +8ba60000000100000000000003777873026e6c0000ff0001 +8ba68000000100000003000303777873026e6c0000ff0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +30933 +001928000001000200000000026e6c00000600010f6b6d77652d6365337668396a647070086b6d77652d757370026e6c00000500fe000000000000c01400010001000000000004c2868a38 +0019a8040000000000000000 + +30934 +a6e20000000100000000000003777777086d6574656f776562026e6c0000010001 +a6e28000000100000002000203777777086d6574656f776562026e6c0000010001c01000020001000151800009026e73036f6b65c019c01000020001000151800006036e7332c030c02d00010001000151800004c13acc3bc04200010001000151800004c13acc27 + +30935 +682300100001000000000001036e733407737570706f7274026e6c00000100010000290800000000000000 +682380000001000000020003036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe0000291000000000000000 + +30936 +a72600100001000000000001036e733407737570706f7274026e6c00002600010000290800000000000000 +a72680000001000000020003036e733407737570706f7274026e6c0000260001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe0000291000000000000000 + +30937 +b69105e050104470c2fa0000000000000000 +b69180010000000000000000 + +30938 +b69105e050184470c511000000925980000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd41403c4ec10003000000334e544c4d535350000100000097b208e00e000e002500000005000500200000004e414f4d494e45544c494a4e4e45545745524b0000 +b69180010000000000000000 + +30939 +0000000060022238210a0000020405b40000 +000080010000000000000000 + +30940 +b69105ee50114462c2650000000000000000 +b69180010000000000000000 + +30941 +2c0901000001000000000000056b6f726e6f026e6c00000f000100 +2c0985030001000000010000056b6f726e6f026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +30942 +b691d4ec50102238ad380000000000000000 + + +30943 +b691d4ec501822387976000000264f0c00000001000000000000116f6e7477696b6b656c696e6773696e7374026e6c0000060001 + + +30944 +b69105ef50104462c2640000000000000000 +b69180010000000000000000 + +30945 +320d00000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +320d80000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +30946 +b691d55650102238aca60000000000000000 + + +30947 +b691d55650112238aca50000000000000000 + + +30948 +b3180000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b3188000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +30949 +1c3b000000010000000000000c646166656876773035343233026e6c0000010001 +1c3b840300010000000100000c646166656876773035343233026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +30950 +266a000000010000000000000e656c6576617465642d6d75736963026e6c00000f0001 +266a800000010000000200010e656c6576617465642d6d75736963026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c01bc00c00020001000151800006036e7334c033c02f00010001000151800004d5c401c0 + +30951 +b691d55750102238aca40000000000000000 + + +30952 +4849000000010000000000000a6d69737465726d61696c026e6c0000010001 +4849800000010000000200020a6d69737465726d61696c026e6c0000010001c00c0002000100015180000b036e73310477656233c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d436240ec04200010001000151800004c2b262ef + +30953 +363b00000001000000000000036e73340767617574656e67026e6c0000010001 +363b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30954 +264000000001000000000000036e73330767617574656e67026e6c0000010001 +264080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30955 +264800000001000000000000036e73330767617574656e67026e6c0000010001 +264880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +30956 +068f0000000100000000000008667265656d61696c026e6c00000f0001 +068f8000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +30957 +f3b500000001000000000000037777770968737664656f617365026e6c0000010001 +f3b580000001000000030000037777770968737664656f617365026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +30958 +a95d00000001000000000000036e733107737572666e6574026e6c0000010001 +a95d80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +30959 +2b9300000001000000000000026e730368616e026e6c0000010001 +2b9380000001000000020002026e730368616e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +30960 +51b200000001000000000000026e730368616e026e6c00001c0001 +51b280000001000000020002026e730368616e026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +30961 +ff40000000010000000000000377777704696b6561026e6c0000010001 +ff40800000010000000200000377777704696b6561026e6c0000010001c010000200010001518000150a676174656b656570657204696b656103636f6d00c010000200010001518000130761757468323130026e73027575036e657400 + +30962 +f2ae000000010000000000000c636f727073336f7074776565026e6c0000010001 +f2ae800000010000000200020c636f727073336f7074776565026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c019c00c00020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +30963 +833e0000000100000000000003726e77026e6c00000f0001 +833e8000000100000002000103726e77026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02400010001000151800004913ac8fd + +30964 +a98d00000001000000000000036e733407737570706f7274026e6c0000010001 +a98d80000001000000020002036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +30965 +9dec00000001000000000000036e733407737570706f7274026e6c0000260001 +9dec80000001000000020002036e733407737570706f7274026e6c0000260001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +30966 +f7900000000100000000000003777777053361636573026e6c0000010001 +f7908000000100000002000203777777053361636573026e6c0000010001c0100002000100015180000f026e7309656174736572766572c016c01000020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +30967 +0313000000010000000000000573696e6574026e6c00000f0001 +0313800000010000000200010573696e6574026e6c00000f0001c00c000200010001518000110a686f6c30316578646e730369636cc012c00c0002000100015180000b026e73026e6c036e657400c02600010001000151800004c14f9064 + +30968 +0000000070022238543a0000020405b401010402 +000080010000000000000000 + +30969 +000700000001000000000000036e7331056132303030026e6c0000010001 +000780000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +30970 +7b5000100001000000000001034e533206585334414c4c024e4c00000100010000290800000080000000 +7b5080000001000000030003034e533206585334414c4c024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d09630000291000000000000000 + +30971 +3da8001000010000000000010b494953472d5345525645520449495347024e4c00000100010000290800000080000000 +3da8800000010000000200030b494953472d5345525645520449495347024e4c0000010001c01800020001000151800002c00cc0180002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004c3a959c3c03f00010001000151800004c0576a650000291000000000000000 + +30972 +8eac0000000100000000000004626e6e75066c616e646973026e6c00000f0001 +8eac8000000100000002000104626e6e75066c616e646973026e6c00000f0001c01100020001000151800006036e7331c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2b6a0 + +30973 +00000000600222387a780000020405b40000 +000080010000000000000000 + +30974 +b69320c750102238baca0000000000000000 +b693a0c30000000000000000 + +30975 +b69320c75018223807270000001c1125000000010000000000000774617861746965026e6c0000060001 +b693a0c30000000000000000 + +30976 +8d4b00000001000000000000077368652d706f6e026e6c0000010001 +8d4b80000001000000020000077368652d706f6e026e6c0000010001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02c + +30977 +b693211d50102238ba560000000000000000 +b693a1130000000000000000 + +30978 +b693211d50112238ba550000000000000000 +b693a1130000000000000000 + +30979 +b693211e50102238ba540000000000000000 +b693a1130000000000000000 + +30980 +150900000001000000000000036e733203666a66026e6c0000010001 +150980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30981 +150a00000001000000000000036e733103666a66026e6c0000010001 +150a80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +30982 +2e4a000000010000000000000770617261676f6e026e6c00000f0001 +2e4a800000010000000300010770617261676f6e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +30983 +bee700000001000000000000037777770362736c026e6c0000010001 +bee780000001000000020000037777770362736c026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02c + +30984 +2c3600000001000000000000036e7332086d65646961776562026e6c0000010001 +2c3680000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +30985 +a02d00000001000000000000036e7333086d65646961776562026e6c0000010001 +a02d80000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +30986 +0b290000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +0b298000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +30987 +8f2628000001000000010000026e6c0000060001096f736f736572766572026e6c0000010001000002580004915d8412 +8f26a8040000000000000000 + +30988 +b63c00000001000000000000026869026e6c0000ff0001 +b63c80000001000000020000026869026e6c0000ff0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +30989 +57c2000000010000000000000467697463026e6c00000f0001 +57c2800000010000000200000467697463026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +30990 +000000007002faf036a60000020405b401010402 +000080010000000000000000 + +30991 +b69592cf5010faf019f50000000000000000 + + +30992 +b69592cf5018faf0921a0000008e6b08000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcc7403c4e4700030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 + + +30993 +f9c800000001000000000000046d633031046e69706f026e6c00000f0001 +f9c880000001000000020001046d633031046e69706f026e6c00000f0001c01100020001000151800006036e7331c011c0110002000100015180000d036e7332036b706e036e657400c02a00010001000151800004c1ad6a04 + +30994 +b69592dd5011fae219640000000000000000 + + +30995 +b69592de5010fae219630000000000000000 + + +30996 +000000007002faf0f88d0000020405b401010402 +000080010000000000000000 + +30997 +42d600000001000000000000037777770e6272756e7373756d6f6e6c696e65026e6c0000010001 +42d680000001000000020002037777770e6272756e7373756d6f6e6c696e65026e6c0000010001c0100002000100015180000a036e7331036e7873c01fc01000020001000151800006036e7332c037c03300010001000151800004d973c015c04900010001000151800004d973c102 + +30998 +b696589b5010faf016100000000000000000 +b696d8940000000000000000 + +30999 +b696589b5018faf0eca60000008e0d98000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcc7403c4e4700030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 +b696d8940000000000000000 + +31000 +14fa00000001000000000000036e733203666a66026e6c0000010001 +14fa80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31001 +b69658a95011fae2157f0000000000000000 +b696d8a40000000000000000 + +31002 +14fb00000001000000000000036e733103666a66026e6c0000010001 +14fb80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31003 +b69658aa5010fae2157e0000000000000000 +b696d8a40000000000000000 + +31004 +000000007002faf0d1d60000020405b401010402 +000080010000000000000000 + +31005 +7bb200000001000000000000026869026e6c0000010001 +7bb280000001000000020000026869026e6c0000010001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +31006 +950400000001000000000000036e733207626265796f6e64026e6c00001c0001 +950480000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +31007 +b6925a485010223870130000000000000000 +b692da440000000000000000 + +31008 +072b00000001000000000000036e733207626265796f6e64026e6c0000260001 +072b80000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +31009 +12d400000001000000000000036e733107626265796f6e64026e6c00001c0001 +12d480000001000000020002036e733107626265796f6e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +31010 +31b100000001000000000000036e733107626265796f6e64026e6c0000260001 +31b180000001000000020002036e733107626265796f6e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +31011 +b6973bb55010faf00c3e0000000000000000 +b697bbb40000000000000000 + +31012 +b6973bb55018faf0ee6c0000008e0000000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcc8403c4e4800030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 +b697bbb40000000000000000 + +31013 +0be3000000010000000000000d36322d3137372d3231302d313007626265796f6e64026e6c0000010001 +0be3800000010000000200020d36322d3137372d3231302d313007626265796f6e64026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac036000100010001518000043eb1900bc048000100010001518000043eb19002 + +31014 +b6925a48501822385efc00000096a91f000000010001000000000f313033303739323135313035382d330000f900010f313033303739323135313035382d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afcf6403c4e760003000000374e544c4d535350000100000097b200e0080008002f0000000f000f00200000004b4d57452d4345335648394a4450504b4d57452d5553500000 +b692da440000000000000000 + +31015 +b6973bc35011fae20bad0000000000000000 +b697bbc40000000000000000 + +31016 +c7580000000100000000000006667265656c72026e6c00001c0001 +c7588403000100000001000006667265656c72026e6c00001c0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31017 +b6973bc45010fae20bac0000000000000000 +b697bbc40000000000000000 + +31018 +0b620000000100000000000005646e732d32056c61646f74026e6c0000010001 +0b628000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31019 +aa070000000100000000000003777777147468756973696e7765737466726965736c616e64026e6c0000010001 +aa078000000100000003000203777777147468756973696e7765737466726965736c616e64026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c025c01000020001000151800006036e7332c03dc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03900010001000151800004cf2cd7adc05a0001000100015180000452c04365 + +31020 +0b290000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +0b298000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31021 +0ac000100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +0ac080000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +31022 +fd560000000100000000000005646e732d32056c61646f74026e6c0000010001 +fd568000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31023 +856000100001000000000001026e73076e656473746174026e6c00002600010000290800000000000000 +856080000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +31024 +a12000100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +a12080000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +31025 +280500100001000000000001036e7333076e656473746174026e6c00002600010000290800000000000000 +280580000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +31026 +4cf600000001000000000000036e7331066e6c74726565026e6c0000010001 +4cf680000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +31027 +0b290000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +0b298000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31028 +ff1100000001000000000000056132303030026e6c00001c0001 +ff1180000001000000030002056132303030026e6c00001c0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c0142 + +31029 +ce68000000010000000000000d7365637572697479686f757365026e6c00000f0001 +ce68800000010000000200000d7365637572697479686f757365026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c034 + +31030 +0fd400000001000000000000097265616c67616d6572026e6c00000f0001 +0fd480000001000000030001097265616c67616d6572026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +31031 +bb1c00000001000000000000046e73303903777873026e6c0000010001 +bb1c80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +31032 +6e430000000100000000000005646e732d32056c61646f74026e6c0000010001 +6e438000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31033 +7c69000000010000000000000377777709617374726f6e6f7661026e6c0000010001 +7c69800000010000000200020377777709617374726f6e6f7661026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c01ac01000020001000151800006036e7332c032c02e000100010001518000045054ed14c04b00010001000151800004d5f72f14 + +31034 +bb6900000001000000000000046d61696c076575726f6e6574026e6c0000010001 +bb6980000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +31035 +c62d00000001000000000000037777770974656c6574656b7374026e6c0000010001 +c62d80000001000000020000037777770974656c6574656b7374026e6c0000010001c0100002000100015180000f036e733108646e73746f6f6c73c01ac01000020001000151800006036e7332c032 + +31036 +87bf00000001000000000000036e733108646e73746f6f6c73026e6c0000010001 +87bf80000001000000020002036e733108646e73746f6f6c73026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c019c01000020001000151800006036e7332c031c02d000100010001518000045054ed14c04a00010001000151800004d5f72f14 + +31037 +044a00000001000000000000036e733208646e73746f6f6c73026e6c0000010001 +044a80000001000000020002036e733208646e73746f6f6c73026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c019c01000020001000151800006036e7332c031c02d000100010001518000045054ed14c04a00010001000151800004d5f72f14 + +31038 +40be0000000100000000000004626f6261026778026e6c0000010001 +40be8000000100000002000104626f6261026778026e6c0000010001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1590b + +31039 +c5590000000100000000000005646e732d32056c61646f74026e6c0000010001 +c5598000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31040 +230900000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +230980000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +31041 +f3d500000001000000000000036e73310a6d756c74696b6162656c026e6c0000260001 +f3d580000001000000030002036e73310a6d756c74696b6162656c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +31042 +c41100000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +c41180000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +31043 +7e3d00000001000000000000036e73320a6d756c74696b6162656c026e6c0000260001 +7e3d80000001000000030002036e73320a6d756c74696b6162656c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +31044 +775600000001000000000000036e733203757063026e6c0000010001 +775680000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +31045 +0c43000000010000000000000b6e69657577732d63616665026e6c0000010001 +0c43800000010000000300030b6e69657577732d63616665026e6c0000010001c00c0002000100015180000b036e733104656e6f6dc018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004d87a0479c04300010001000151800004d86296b6c05500010001000151800004d9a083d1 + +31046 +70bb0000000100000000000003777777046d2d666d026e6c0000010001 +70bb8000000100000002000003777777046d2d666d026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c030 + +31047 +16220000000100000000000005646e732d32056c61646f74026e6c0000010001 +16228000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31048 +066a00000001000000000000037777770866696c6d706a6573026e6c0000010001 +066a80000001000000020002037777770866696c6d706a6573026e6c0000010001c01000020001000151800012036e73310b696e6263686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d5efb140c04b00010001000151800004d5efb141 + +31049 +915a00000001000000000000095f6b65726265726f73045f7564700a4f6f737465696e646572026e6c0000060001 +915a84030001000000010000095f6b65726265726f73045f7564700a4f6f737465696e646572026e6c0000060001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +31050 +f6a900000001000000000000026e73076e656473746174026e6c0000010001 +f6a980000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +31051 +23dc0000000100000000000003777777076d61686172656b026e6c0000010001 +23dc8000000100000003000003777777076d61686172656b026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c034c0100002000100015180000a076e73686f737433c034 + +31052 +9fb40000000100000000000005646e732d32056c61646f74026e6c0000010001 +9fb48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31053 +fcc60000000100000000000009652d6c756e61746963026e6c0000010001 +fcc68000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +31054 +852d00000001000000000000026e73076e656473746174026e6c0000260001 +852d80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +31055 +be9300000001000000000000036e7333076e656473746174026e6c0000010001 +be9380000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +31056 +f08800000001000000000000036e7333076e656473746174026e6c0000260001 +f08880000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +31057 +f26b000000010000000000000331373202323101310131026e6c0000010001 +f26b840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +31058 +b6925a565011222a6f7a0000000000000000 +b692da540000000000000000 + +31059 +000000007002223860470000020405b401010402 +000080010000000000000000 + +31060 +33f20000000100000000000003646573026e6c0000010001 +33f28000000100000002000203646573026e6c0000010001c00c00020001000151800012036e73310b70726f66736f6e6c696e65c010c00c00020001000151800006036e7332c028c02400010001000151800004d5efb15ec04200010001000151800004d5efb15f + +31061 +77f60000000100000000000005646e732d32056c61646f74026e6c0000010001 +77f68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31062 +0f4f00000001000000000000034e533206585334414c4c024e4c0000010001 +0f4f80000001000000030002034e533206585334414c4c024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +31063 +b4b8000000010000000000000b494953472d5345525645520449495347024e4c0000010001 +b4b8800000010000000200020b494953472d5345525645520449495347024e4c0000010001c01800020001000151800002c00cc0180002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004c3a959c3c03f00010001000151800004c0576a65 + +31064 +bf7500000001000000000000036e73330767617574656e67026e6c0000010001 +bf7580000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31065 +193400000001000000000000036e73340767617574656e67026e6c0000010001 +193480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31066 +492a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +492a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31067 +ac6800000001000000000000037777770a6c696d62757267766163026e6c0000010001 +ac6880000001000000030002037777770a6c696d62757267766163026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +31068 +48ef0000000100000000000003647873026e6c00000f0001 +48ef8000000100000002000203647873026e6c00000f0001c00c00020001000151800011036e73310a77656264796e616d6963c010c00c00020001000151800006036e7332c028c024000100010001518000045054e304c041000100010001518000045054e305 + +31069 +462200000001000000000000036e7331066c696e6b7570026e6c0000010001 +462280000001000000030003036e7331066c696e6b7570026e6c0000010001c0100002000100015180000b04646e733103766970c017c0100002000100015180000704646e7332c030c0100002000100015180000704646e7333c030c02b00010001000151800004d44fe803c04200010001000151800004c3f5c782c05500010001000151800004d44ff303 + +31070 +91cc00000001000000000000036e7332066c696e6b7570026e6c0000010001 +91cc80000001000000030003036e7332066c696e6b7570026e6c0000010001c0100002000100015180000b04646e733103766970c017c0100002000100015180000704646e7332c030c0100002000100015180000704646e7333c030c02b00010001000151800004d44fe803c04200010001000151800004c3f5c782c05500010001000151800004d44ff303 + +31071 +3c640000000100000000000005646e732d32056c61646f74026e6c0000010001 +3c648000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31072 +03d00000000100000000000005646e732d32056c61646f74026e6c0000010001 +03d08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31073 +6f990000000100000000000003777777046476686e026e6c0000010001 +6f998000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +31074 +bbad00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +bbad80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +31075 +518800100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +518880000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +31076 +4a6b00000001000000000000096269746275636b65740665787465726e07756e6966616365026e6c0000010001 +4a6b80000001000000030000096269746275636b65740665787465726e07756e6966616365026e6c0000010001c01d0002000100015180001c04646e733107756e696661636509636f6d70757761726503636f6d00c01d0002000100015180000704646e7332c03ec01d0002000100015180000704646e7333c03e + +31077 +746200000001000000000000027462026e6c00000f0001 +746280000001000000030002027462026e6c00000f0001c00c00020001000151800007046e732d31c00cc00c00020001000151800007046e732d32c00cc00c00020001000151800012047365633103646e73067073696e6574c00fc02300010001000151800004d473b245c03600010001000151800004d473b24c + +31078 +16a40000000100000000000005646e732d32056c61646f74026e6c0000010001 +16a48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31079 +09ef00000001000000000000037777770767616d656d6167026e6c0000010001 +09ef80000001000000030000037777770767616d656d6167026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +31080 +1d1e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +1d1e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31081 +944700000001000000000000026e73076e656473746174026e6c0000010001 +944780000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +31082 +72db00000001000000000000036e7333076e656473746174026e6c0000010001 +72db80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +31083 +44300000000100000000000005646e732d32056c61646f74026e6c0000010001 +44308000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31084 +b6925a575010222a6f790000000000000000 +b692da540000000000000000 + +31085 +e92e0000000100000000000007647265636f6d6d026e6c0000ff0001 +e92e8000000100000002000207647265636f6d6d026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02800010001000151800004d5c42546c03a00010001000151800004d5c42547 + +31086 +b698080850102238ce5a0000000000000000 +b69888040000000000000000 + +31087 +b69808085018223875ef00000096f174000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afcf6403c4e760003000000374e544c4d535350000100000097b200e0080008002f0000000f000f00200000004b4d57452d4345335648394a4450504b4d57452d5553500000 +b69888040000000000000000 + +31088 +b6720000000100000000000005646e732d32056c61646f74026e6c0000010001 +b6728000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31089 +8bcb000000010000000000000473746570026e6c0000010001 +8bcb800000010000000200020473746570026e6c0000010001c00c0002000100015180000d04696973310577696e646fc011c00c00020001000151800008056969733137c02ac02500010001000151800004d9aa050bc03e00010001000151800004d9aa0430 + +31090 +f41f0000000100000000000003777777056b6c696b73026e6c0000010001 +f41f8000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +31091 +e1fc00000001000000000000066865746e6574026e6c00000f0001 +e1fc80000001000000030003066865746e6574026e6c00000f0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +31092 +ea1a00000001000000000000116e766f2d7665727a656b6572696e67656e026e6c00000f0001 +ea1a80000001000000020000116e766f2d7665727a656b6572696e67656e026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c035 + +31093 +f78800000001000000000000037777770c737469636874696e67706167026e6c0000010001 +f78880000001000000020000037777770c737469636874696e67706167026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +31094 +c8c700000001000000000000037777770a7061727479636c69636b026e6c0000010001 +c8c780000001000000020000037777770a7061727479636c69636b026e6c0000010001c01000020001000151800016036e73310c726567696f686f7374696e6703636f6d00c01000020001000151800006036e7332c033 + +31095 +067000000001000000000000036e73330767617574656e67026e6c0000010001 +067080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31096 +19380000000100000000000003777777097365782d7369746573026e6c0000010001 +19388000000100000003000203777777097365782d7369746573026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +31097 +119e0000000100000000000004706f703305747269646f026e6c0000010001 +119e8000000100000002000204706f703305747269646f026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02b00010001000151800004d43d150ec03d00010001000151800004d43d150c + +31098 +367900000001000000000000036e73330767617574656e67026e6c0000010001 +367980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31099 +5af40000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +5af48000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31100 +854100000001000000000000037777770d776f726c647769646563726577026e6c0000010001 +854180000001000000020000037777770d776f726c647769646563726577026e6c0000010001c0100002000100015180000e036e7331046379677003636f6d00c01000020001000151800006036e7332c036 + +31101 +000000006002223824c20000020405b40000 +000080010000000000000000 + +31102 +b698ca5350102238bb820000000000000000 + + +31103 +b698ca535018223813cf000000236e56000000010000000000000e6761642d676f6f692d7665636874026e6c0000060001 + + +31104 +7d6900000001000000000000037777770465616476026e6c0000010001 +7d6980000001000000030003037777770465616476026e6c0000010001c010000200010001518000110161026e7309636f6d626f64617461c015c010000200010001518000040162c02bc010000200010001518000040163c02bc02900010001000151800004d5de0b44c04600010001000151800004d5de0b45c05600010001000151800004d5de0b4e + +31105 +af8200000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +af8280000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31106 +804900000001000000000000077a6565706f7374026e6c0000010001 +804980000001000000020002077a6565706f7374026e6c0000010001c00c00020001000151800011026e730b6973642d686f6c6c616e64c014c00c00020001000151800006036e7332c02bc02800010001000151800004d5e38d0ac04500010001000151800004d5e38205 + +31107 +5bc6000000010000000000000569636f6e7304696c7365026e6c0000010001 +5bc6800000010000000300030569636f6e7304696c7365026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02b000100010001518000043e45a282c03d000100010001518000043e45a283c04f000100010001518000043e45a284 + +31108 +b698caba50102238baf60000000000000000 + + +31109 +b698caba50112238baf50000000000000000 + + +31110 +14ab000000010000000000000770726f66696c65026e6c00000f0001 +14ab800000010000000200000770726f66696c65026e6c00000f0001c00c0002000100015180000e036e73310464697661036e657400c00c00020001000151800006036e7332c02c + +31111 +b698cabb50102238baf40000000000000000 + + +31112 +b69808165011222acdc10000000000000000 +b69888140000000000000000 + +31113 +00000000700222386f010000020405b401010402 +000080010000000000000000 + +31114 +189800000001000000000000036d78310464697661026e6c0000010001 +189880000001000000020000036d78310464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +31115 +45cd00000001000000000000036d78320464697661026e6c0000010001 +45cd80000001000000020000036d78320464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +31116 +e8940000000100000000000003777777076d65646c6f6f6b026e6c0000010001 +e8948000000100000002000203777777076d65646c6f6f6b026e6c0000010001c0100002000100015180000c036e7331057669727475c018c01000020001000151800006036e7332c030c02c00010001000151800004d9726102c04400010001000151800004d58141c4 + +31117 +3440000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +3440800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +31118 +26a2001000010000000000010672656c6179330b7669616e6574776f726b73026e6c00000100010000290800000080000000 +26a2800000010000000200030672656c6179330b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e20000291000000000000000 + +31119 +0757000000010000000000000a68617264657277696a6b026e6c00000f0001 +0757800000010000000300020a68617264657277696a6b026e6c00000f0001c00c0002000100015180000d036e733106776964657873c017c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +31120 +a4c20000000100000000000005646e732d32056c61646f74026e6c0000010001 +a4c28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31121 +00000000600222389deb0000020405b40000 +000080010000000000000000 + +31122 +374400000001000000000000037777770a6765727569736c6f6f73026e6c0000010001 +374480000001000000020002037777770a6765727569736c6f6f73026e6c0000010001c01000020001000151800009036e7331026973c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5852102c04400010001000151800004d5c41503 + +31123 +244c000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +244c800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +31124 +b69becab5010223812510000000000000000 + + +31125 +b69becab50182238cab200000024e7b1000000010000000000000f68656d6572742d676f72696368656d026e6c0000060001 + + +31126 +c83f000000010000000000000966696c7465726e6574026e6c00000f0001 +c83f800000010000000300030966696c7465726e6574026e6c00000f0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec016c00c00020001000151800006036e7331c033c00c00020001000151800006036e7332c033c02a00010001000151800004d42d2005c04800010001000151800004d42d2003c05a00010001000151800004d42d2103 + +31127 +64c90000000100000000000005646e732d32056c61646f74026e6c0000010001 +64c98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31128 +9e3c00000001000000000000037777770f616d6174657572706c6161746a6573026e6c0000010001 +9e3c80000001000000020002037777770f616d6174657572706c6161746a6573026e6c0000010001c0100002000100015180000e036e7331076970746f776572c020c01000020001000151800006036e7332c038c034000100010001518000043ecc4065c04e000100010001518000043ecc4066 + +31129 +b69bed135010223811c30000000000000000 + + +31130 +b69bed135011223811c20000000000000000 + + +31131 +ef630000000100000000000003777777047573686e026e6c0000010001 +ef638000000100000002000003777777047573686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02d + +31132 +b69bed145010223811c10000000000000000 + + +31133 +098500000001000000000000026e73077675757277656b026e6c0000010001 +098580000001000000020000026e73077675757277656b026e6c0000010001c00f00020001000151800010036e733109666972737466696e64c017c00f00020001000151800006036e7332c02f + +31134 +2f1600000001000000000000037777770b6e69636b6465627275696e0564656d6f6e026e6c0000010001 +2f1680000001000000030002037777770b6e69636b6465627275696e0564656d6f6e026e6c0000010001c01c00020001000151800006036e7331c01cc01c00020001000151800006036e7332c01cc01c0002000100015180000f036e73320564656d6f6e036e657400c03600010001000151800004c29f4906c04800010001000151800004c29fb004 + +31135 +91210000000100000000000006627664737072026e6c00000f0001 +91218000000100000002000206627664737072026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +31136 +992500100001000000000001026e7308767575727765726b026e6c00000100010000290800000080000000 +992580000001000000030002026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +31137 +f91b00100001000000000001036e733208767575727765726b026e6c00000100010000290800000080000000 +f91b80000001000000030002036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa02020000291000000000000000 + +31138 +b60d000000010000000000000377777708736b69706c65696e026e6c0000010001 +b60d800000010000000200020377777708736b69706c65696e026e6c0000010001c01000020001000151800010036e733109776869726c77696e64c019c01000020001000151800006036e7332c031c02d000100010001518000045054e683c04900010001000151800004d973c5bd + +31139 +4c320000000100000000000005646e732d32056c61646f74026e6c0000010001 +4c328000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31140 +0ddc00000001000000000000026e7306787334616c6c026e6c0000010001 +0ddc80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +31141 +b38200000001000000000000036e733109776869726c77696e64026e6c00001c0001 +b38280000001000000020002036e733109776869726c77696e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e683c03c00010001000151800004d973c5bd + +31142 +52f500000001000000000000036e733109776869726c77696e64026e6c0000260001 +52f580000001000000020002036e733109776869726c77696e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e683c03c00010001000151800004d973c5bd + +31143 +813400000001000000000000036e733209776869726c77696e64026e6c00001c0001 +813480000001000000020002036e733209776869726c77696e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054e683c00c00010001000151800004d973c5bd + +31144 +1def00000001000000000000036e733209776869726c77696e64026e6c0000260001 +1def80000001000000020002036e733209776869726c77696e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054e683c00c00010001000151800004d973c5bd + +31145 +f2c80000000100000000000005646e732d32056c61646f74026e6c0000010001 +f2c88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31146 +6f7100000001000000000000036e733206787334616c6c026e6c0000010001 +6f7180000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +31147 +0000000060022238b4740000020405b40000 +000080010000000000000000 + +31148 +0000000060022238b67e0000020405b40000 +000080010000000000000000 + +31149 +15fa00000001000000000000086c696e6b74616e6b026e6c00000f0001 +15fa80000001000000020002086c696e6b74616e6b026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +31150 +b69cc8d1501022384cb30000000000000000 + + +31151 +b69cc8d1501822382c12000000209f3f000000010000000000000b76657a656c68656e6e6570026e6c0000060001 + + +31152 +b69d9e7350102238791a0000000000000000 + + +31153 +b69d9e7350182238ea300000001eaf1000000001000000000000096f6f672d726164696f026e6c0000060001 + + +31154 +ab01000000010000000000000970657065727a65656c026e6c0000ff0001 +ab01800000010000000200010970657065727a65656c026e6c0000ff0001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +31155 +b69cc935501022384c2d0000000000000000 + + +31156 +b69cc935501122384c2c0000000000000000 + + +31157 +b69d9ed55010223878980000000000000000 + + +31158 +b69d9ed55011223878970000000000000000 + + +31159 +b69808175010222acdc00000000000000000 +b69888140000000000000000 + +31160 +b69b68b4501022387c650000000000000000 +b69be8b40000000000000000 + +31161 +b69b68b450182238179600000096fbd8000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afcf7403c4e770003000000374e544c4d535350000100000097b200e0080008002f0000000f000f00200000004b4d57452d4345335648394a4450504b4d57452d5553500000 +b69be8b40000000000000000 + +31162 +d9b30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d9b38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31163 +96ca0000000100000000000008667265656d61696c026e6c00000f0001 +96ca8000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +31164 +b69d9ed65010223878960000000000000000 + + +31165 +192500000001000000000000037777770b656c7365766965726f706c026e6c0000010001 +192580000001000000020001037777770b656c7365766965726f706c026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc01cc01000020001000151800006036e7331c033c03000010001000151800004c2b2b20a + +31166 +5c5900000001000000000000037777770a68357468656174657273026e6c0000010001 +5c5980000001000000020001037777770a68357468656174657273026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01bc01000020001000151800006036e7334c033c02f00010001000151800004d5c401c0 + +31167 +cc760000000100000000000003706f70066c756d696164026e6c0000010001 +cc768000000100000002000003706f70066c756d696164026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +31168 +c9150000000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +c9158000000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +31169 +f4a800000001000000000000126d6574726f706f6c6973666573746976616c026e6c0000ff0001 +f4a880000001000000020002126d6574726f706f6c6973666573746976616c026e6c0000ff0001c00c0002000100015180000b026e7305706c616e74c01fc00c00020001000151800006036e7332c036c03300010001000151800004d59f0037c04a00010001000151800004d59f0046 + +31170 +0c5900000001000000000000026e7303786f73026e6c0000010001 +0c5980000001000000020001026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe2 + +31171 +2c3f000000010000000000000377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001 +2c3f800000010000000200020377777706637662616e6b026e6c0a7377697463686a6f6273026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +31172 +1ced000000010000000000000331373202323101310131026e6c0000010001 +1ced840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +31173 +60fa0000000100000000000005646e732d32056c61646f74026e6c0000010001 +60fa8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31174 +032f00000001000000000000056b69656e6f026e6c00000f0001 +032f80000001000000020002056b69656e6f026e6c00000f0001c00c0002000100015180000d036e733106737072696e74c012c00c00020001000151800006036e7332c02ac02600010001000151800004d973c202c03f00010001000151800004d4ccd6a6 + +31175 +75eb000000010000000000000331373202323101310131026e6c0000010001 +75eb840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +31176 +7c030000000100000000000005646e732d32056c61646f74026e6c0000010001 +7c038000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31177 +a7e3000000010000000000000763757073616574026e6c0000ff0001 +a7e3840300010000000100000763757073616574026e6c0000ff0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +31178 +282600000001000000000000037777770a6772617070656e626f78026e6c0000010001 +282680000001000000020000037777770a6772617070656e626f78026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +31179 +2e9f00000001000000000000036e73330767617574656e67026e6c0000010001 +2e9f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31180 +26a400000001000000000000036e73330767617574656e67026e6c0000010001 +26a480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31181 +810400000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +810480000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31182 +6f380000000100000000000006636861726973026e6c00001c0001 +6f388000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +31183 +b69b68c25011222a7bcc0000000000000000 +b69be8c40000000000000000 + +31184 +dbb200000001000000000000076d616e64656d61026e6c00000f0001 +dbb280000001000000020000076d616e64656d61026e6c00000f0001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec02f + +31185 +05660000000100000000000003666d6f026e6c00000f0001 +05668000000100000003000203666d6f026e6c00000f0001c00c0002000100015180000d036e733106776964657873c010c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c028c02400010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +31186 +0000000060022238f8440000020405b40000 +000080010000000000000000 + +31187 +2ee400000001000000000000036e73330767617574656e67026e6c0000010001 +2ee480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31188 +06ba00000001000000000000036e73330767617574656e67026e6c0000010001 +06ba80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31189 +2ec000000001000000000000036e73340767617574656e67026e6c0000010001 +2ec080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31190 +06c900000001000000000000036e73340767617574656e67026e6c0000010001 +06c980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31191 +b69e234c5010223836070000000000000000 +b69ea3430000000000000000 + +31192 +b69e234c50182238a76e0000001cec240000000100000000000007646574616e6574026e6c0000060001 +b69ea3430000000000000000 + +31193 +3ed600000001000000000000036e73340767617574656e67026e6c0000010001 +3ed680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31194 +fb9a000000010000000000000776616e64696a6b026e6c0000010001 +fb9a800000010000000200020776616e64696a6b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +31195 +0eda00000001000000000000036e73340767617574656e67026e6c0000010001 +0eda80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31196 +63df0010000100000000000104646e7331036f3277026e6c00000100010000290800000000000000 +63df8000000100000003000304646e7331036f3277026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c01100020001000151800010036e733103686574036e6574026a6500c00c00010001000151800004d5e38dd4c03700010001000151800004d5e38dcd0000291000000000000000 + +31197 +68440010000100000000000104646e7332036f3277026e6c00000100010000290800000000000000 +68448000000100000003000304646e7332036f3277026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc01100020001000151800010036e733103686574036e6574026a6500c02900010001000151800004d5e38dd4c00c00010001000151800004d5e38dcd0000291000000000000000 + +31198 +d13100000001000000000000036e733109666972737466696e64026e6c0000010001 +d13180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31199 +d13200000001000000000000036e733209666972737466696e64026e6c0000010001 +d13280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31200 +b69e23a25010223835930000000000000000 +b69ea3a30000000000000000 + +31201 +b69e23a25011223835920000000000000000 +b69ea3a30000000000000000 + +31202 +b69e23a35010223835910000000000000000 +b69ea3a30000000000000000 + +31203 +7e7100000001000000000000037777770877616e6e61626964026e6c0000010001 +7e7180000001000000020002037777770877616e6e61626964026e6c0000010001c0100002000100015180000c036e7331053266617374c019c01000020001000151800006036e7332c031c02d0001000100015180000450f7c022c045000100010001518000043e858122 + +31204 +bed1000000010000000000000461616265026e6c00000f0001 +bed1800000010000000200000461616265026e6c00000f0001c00c00020001000151800011036e733107726f6b73636f6d036e657400c00c0002000100015180000e036e733207726f6b73636f6dc011 + +31205 +27ef0000000100000000000009652d6c756e61746963026e6c0000010001 +27ef8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +31206 +992f00000001000000000000037777770f646964697364616e7373747564696f026e6c0000010001 +992f80000001000000020000037777770f646964697364616e7373747564696f026e6c0000010001c01000020001000151800019036e733110666c6178652d776562686f7374696e6702626500c01000020001000151800006036e7332c038 + +31207 +d4eb00000001000000000000037777770867616c6c65727973026e6c0000010001 +d4eb80000001000000020000037777770867616c6c65727973026e6c0000010001c0100002000100015180000d036e7331067468656e6963c019c01000020001000151800006036e7332c031 + +31208 +96f60000000100000000000003777777137061617264656e73706f72746472656e746865026e6c0000010001 +96f68000000100000003000003777777137061617264656e73706f72746472656e746865026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c03bc01000020001000151800006036e7332c03b + +31209 +0000000060022238dcbc0000020405b40000 +000080010000000000000000 + +31210 +c36a0000000100000000000002393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001 +c36a8000000100000002000202393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31211 +810d00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +810d80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31212 +b69ef086501022384d440000000000000000 + + +31213 +b69ef08650182238ae2500000022a14e000000010000000000000d726567627772667279736c616e026e6c0000060001 + + +31214 +d13400000001000000000000036e733109666972737466696e64026e6c0000010001 +d13480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31215 +b69ef0ec501022384cba0000000000000000 + + +31216 +b69ef0ec501122384cb90000000000000000 + + +31217 +d13500000001000000000000036e733209666972737466696e64026e6c0000010001 +d13580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31218 +f141000000010000000000000c6d6f7862612d6d6574726578026e6c00000f0001 +f141800000010000000200020c6d6f7862612d6d6574726578026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +31219 +09ec000000010000000000000672656c6179330b7669616e6574776f726b73026e6c0000010001 +09ec800000010000000200020672656c6179330b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +31220 +b69ef0ed501022384cb80000000000000000 + + +31221 +b69b68c35010222a7bcb0000000000000000 +b69be8c40000000000000000 + +31222 +23f700000001000000000000037777770774776967676572026e6c0000010001 +23f780000001000000020000037777770774776967676572026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c02f + +31223 +b68303575018faf04b560000008df340000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd16403c4e9600030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b68380010000000000000000 + +31224 +94d100000001000000000000045f736970045f7463700373697007686f746d61696c03636f6d0968616d776f72746879026e6c0000210001 +94d180000001000000020001045f736970045f7463700373697007686f746d61696c03636f6d0968616d776f72746879026e6c0000210001c0260002000100015180000a036e733303777873c030c02600020001000151800006036e7334c048c05a00010001000151800004d5ef9a65 + +31225 +b68303575018faf04b560000008df340000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd16403c4e9600030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b68380010000000000000000 + +31226 +b68303655011fae21a560000000000000000 +b68380010000000000000000 + +31227 +71a000000001000000000000036e733104686f6d65026e6c0000010001 +71a080000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31228 +98d900000001000000000000086169727370726179026e6c00001c0001 +98d980000001000000020002086169727370726179026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +31229 +38d000000001000000000000036e733104686f6d65026e6c0000260001 +38d080000001000000030003036e733104686f6d65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31230 +000000007002faf041b60000020405b401010402 +000080010000000000000000 + +31231 +ce5b00000001000000000000036e733204686f6d65026e6c0000010001 +ce5b80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31232 +af3600000001000000000000037777770a636172732d7061727473026e6c0000010001 +af3680000001000000020002037777770a636172732d7061727473026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +31233 +2f9a00000001000000000000036e733204686f6d65026e6c0000260001 +2f9a80000001000000030003036e733204686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31234 +17cd00000001000000000000036e733304686f6d65026e6c0000010001 +17cd80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31235 +72bf00000001000000000000036e733304686f6d65026e6c0000260001 +72bf80000001000000030003036e733304686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31236 +b68303665010fae21a550000000000000000 +b68380010000000000000000 + +31237 +c2a200000001000000000000036e733404686f6d65026e6c0000010001 +c2a280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +31238 +f0af0000000100000000000004646e7331036f3277026e6c0000010001 +f0af8000000100000003000204646e7331036f3277026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c01100020001000151800010036e733103686574036e6574026a6500c00c00010001000151800004d5e38dd4c03700010001000151800004d5e38dcd + +31239 +615100000001000000000000036e733404686f6d65026e6c0000260001 +615180000001000000030003036e733404686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +31240 +230b0000000100000000000004646e7332036f3277026e6c0000010001 +230b8000000100000003000204646e7332036f3277026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc01100020001000151800010036e733103686574036e6574026a6500c02900010001000151800004d5e38dd4c00c00010001000151800004d5e38dcd + +31241 +b69faca65010faf00b240000000000000000 + + +31242 +13340000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +13348000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31243 +7c5600000001000000000000046d61696c076c61766f6f696a026e6c0000010001 +7c5680000001000000020002046d61696c076c61766f6f696a026e6c0000010001c0110002000100015180000c036e7331057669727475c019c01100020001000151800006036e7332c031c02d00010001000151800004d9726102c04500010001000151800004d58141c4 + +31244 +351f00000001000000000000037777770c616d6174657572666f746f73026e6c0000010001 +351f80000001000000020002037777770c616d6174657572666f746f73026e6c0000010001c0100002000100015180000c04646e73310470696e73c01dc0100002000100015180000704646e7332c036c03100010001000151800004d9c26101c04900010001000151800004d9c26002 + +31245 +a99000000001000000000000037777770a646f6f726e706c617a61026e6c0000010001 +a99080000001000000020000037777770a646f6f726e706c617a61026e6c0000010001c01000020001000151800014036e73310a68672d686f7374696e6703636f6d00c01000020001000151800006036e7332c033 + +31246 +98db00000001000000000000036e733103666a66026e6c0000010001 +98db80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31247 +98dc00000001000000000000036e733203666a66026e6c0000010001 +98dc80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31248 +2a1100000001000000000000036e733207726f6b73636f6d026e6c0000010001 +2a1180000001000000020000036e733207726f6b73636f6d026e6c0000010001c01000020001000151800011036e733207726f6b73636f6d036e657400c01000020001000151800006036e7333c030 + +31249 +d36400000001000000000000067265696d6572026e6c00000f0001 +d36480000001000000020002067265696d6572026e6c00000f0001c00c00020001000151800010036e733109686f73746e65746276c013c00c00020001000151800006036e7332c02bc0270001000100015180000451113264c04300010001000151800004d5c42851 + +31250 +6c060000000100000000000008686f73746e616d650462696e640000100003 +6c068000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31251 +98ee00000001000000000000036e733103666a66026e6c0000010001 +98ee80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31252 +756e0000000100000000000008686f73746e616d650462696e640000100003 +756e8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31253 +eaad00000001000000000000153231322d3132332d3139302d3130322d756e6465660774697363616c69026e6c0000010001 +eaad80000001000000030002153231322d3132332d3139302d3130322d756e6465660774697363616c69026e6c0000010001c0220002000100015180000704616e7331c022c0220002000100015180000704616e7332c022c0220002000100015180001404616e73330a74697363616c696e657402626500c03e00010001000151800004c3f14d38c05100010001000151800004c3f13325 + +31254 +697700100001000000000001036e7331096d6173746572646e73026e6c00000100010000290800000000000000 +697780000001000000020003036e7331096d6173746572646e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f347c03c000100010001518000043e94a0470000291000000000000000 + +31255 +fe27000000010000000000001262616172737665727a656b6572696e67656e026e6c00000f0001 +fe27800000010000000200021262616172737665727a656b6572696e67656e026e6c00000f0001c00c0002000100015180000a036e733103677673c01fc00c00020001000151800006036e7332c037c033000100010001518000045054e1aac04900010001000151800004d4ccc646 + +31256 +1eda00000001000000000000076a6f6d616e6461026e6c0000010001 +1eda80000001000000020002076a6f6d616e6461026e6c0000010001c00c0002000100015180000a026e730469636d63c014c00c00020001000151800006036e7332c02bc028000100010001518000043e643805c03e000100010001518000043e643806 + +31257 +98ef00000001000000000000036e733203666a66026e6c0000010001 +98ef80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31258 +3960000000010000000000000d637265796673696e746572696d026e6c00000f0001 +3960800000010000000200000d637265796673696e746572696d026e6c00000f0001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c033 + +31259 +13340000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +13348000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31260 +1ed200000001000000000000036e73310c636f6c742d74656c65636f6d026e6c0000010001 +1ed280000001000000020002036e73310c636f6c742d74656c65636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d44ea00dc03f00010001000151800004d44ea00e + +31261 +5c0d00000001000000000000036e733404686f6d65026e6c0000010001 +5c0d80000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +31262 +a1bb00000001000000000000036e733104686f6d65026e6c0000010001 +a1bb80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31263 +70f300000001000000000000036e733204686f6d65026e6c0000010001 +70f380000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31264 +001f00000001000000000000036e733304686f6d65026e6c0000010001 +001f80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31265 +13340000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +13348000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31266 +3e0b28000001000000010000026e6c0000060001095f6b65726265726f73045f7463700477617166026e6c0000210001000002580016000000640058067365727665720477617166026e6c00 +3e0ba8040000000000000000 + +31267 +41820000000100000000000002393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001 +41828000000100000002000202393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31268 +d91000000001000000000000037777770a7469656e6572666f746f026e6c0000010001 +d91080000001000000020000037777770a7469656e6572666f746f026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +31269 +5d4900000001000000000000077765626d61696c036e6f610763656e74726963026e6c0000010001 +5d4980000001000000020000077765626d61696c036e6f610763656e74726963026e6c0000010001c0180002000100015180000d036e7331036b706e036e657400c01800020001000151800006036e7332c038 + +31270 +0000000070024000b3a50000020405b401010402 +000080010000000000000000 + +31271 +c40b0000000100000000000003777777056769746573026e6c0000010001 +c40b8000000100000002000203777777056769746573026e6c0000010001c01000020001000151800012036e73310b676c6f62616c7369746573c016c01000020001000151800006036e7332c02ec02a00010001000151800004d4cce37ac04800010001000151800004d94d8b0c + +31272 +2f7800000001000000000000036e733109756e69736f75726365026e6c0000010001 +2f7880000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +31273 +b6a1a840501044707d070000000000000000 + + +31274 +b6a1a84050184470f4c200000089cc64000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7dfc403ccf7c00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +31275 +991e0000000100000000000002393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +991e8000000100000002000202393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31276 +b6a1a84e501144627c7b0000000000000000 + + +31277 +0000000070024000ecb50000020405b401010402 +000080010000000000000000 + +31278 +3ef200000001000000000000036e73310561686f6c64026e6c0000010001 +3ef280000001000000020001036e73310561686f6c64026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02a000100010001518000048d5d2302 + +31279 +a31a00000001000000000000037777770465646168026e6c0000010001 +a31a80000001000000020002037777770465646168026e6c0000010001c0100002000100015180000b026e73056e65726f63c015c01000020001000151800006036e7332c02cc02900010001000151800004d434010ac04000010001000151800004d434000a + +31280 +b6a1a84f501044627c7a0000000000000000 + + +31281 +b6a27e2c50104470e02a0000000000000000 +b6a2fe240000000000000000 + +31282 +6da428000001000000020000026e6c00000600012432323764633562652d313732322d346134322d393462382d653133366431366364343937065f6d73646373066b6f72707574026e6c00000500ff000000000000c0140005000100000258001206736572766572066b6f72707574026e6c00 +6da4a8040000000000000000 + +31283 +241400100001000000000001036e7332096d6173746572646e73026e6c00000100010000290800000000000000 +241480000001000000020003036e7332096d6173746572646e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054f347c00c000100010001518000043e94a0470000291000000000000000 + +31284 +b6a27e2c501844708c830000008998c8000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7dfc403ccf7c00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 +b6a2fe240000000000000000 + +31285 +9bab00000001000000000000036e733103697870026e6c0000010001 +9bab80000001000000020002036e733103697870026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f + +31286 +09d8000000010000000000000d776f726c646f6e6f6e6c696e65026e6c00000f0001 +09d8840300010000000100000d776f726c646f6e6f6e6c696e65026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +31287 +5d770000000100000000000003777777086869707065746970026e6c0000010001 +5d778000000100000002000003777777086869707065746970026e6c0000010001c01000020001000151800011036e733107657873696c6961036e657400c01000020001000151800006036e7332c031 + +31288 +b47c00000001000000000000036e73330564656d6f6e026e6c0000010001 +b47c80000001000000030002036e73330564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +31289 +9a3100000001000000000000036e733103666a66026e6c0000010001 +9a3180000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31290 +9a3200000001000000000000036e733203666a66026e6c0000010001 +9a3280000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31291 +9a3300000001000000000000037777770c747261666669636368616d70026e6c0000010001 +9a3380000001000000020000037777770c747261666669636368616d70026e6c0000010001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +31292 +000000007002400050a700000204055001010402 +000080010000000000000000 + +31293 +9a3600000001000000000000037777770c747261666669636368616d70026e6c0000010001 +9a3680000001000000020000037777770c747261666669636368616d70026e6c0000010001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +31294 +ebbf0000000100000000000004616e73310774697363616c69026e6c0000010001 +ebbf8000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +31295 +0a3c0000000100000000000004616e73320774697363616c69026e6c0000010001 +0a3c8000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +31296 +813b00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +813b80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31297 +b6a27e3a50114462df9e0000000000000000 +b6a2fe340000000000000000 + +31298 +0000000070024000b8ba0000020405b401010402 +000080010000000000000000 + +31299 +089f00000001000000000000037777770770646163686f70026e6c0000010001 +089f84030001000000010000037777770770646163686f70026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +31300 +0000000060022238473c0000020405b40000 +000080010000000000000000 + +31301 +b6a2fbb450104510c58f0000000000000000 + + +31302 +b6a27e3b50104462df9d0000000000000000 +b6a2fe340000000000000000 + +31303 +b6a2fbb4501845108d3c0000008b6710000000010001000000000f313238383439303138383831382d330000f900010f313238383439303138383831382d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afc3b403c4dbb00030000002c4e544c4d535350000100000097b208e0060006002600000006000600200000005345525645524b4f525055540000 + + +31304 +b6a4048e50102238a3b60000000000000000 +b6a480010000000000000000 + +31305 +b6a4048e5018223847ff000000213084000000010000000000000c636f7379636f6d7061676e79026e6c0000060001 +b6a480010000000000000000 + +31306 +548a000000010000000000000469632d73026e6c0000ff0001 +548a800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +31307 +e98600000001000000000000036e733103676d74026e6c0000010001 +e98680000001000000030003036e733103676d74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d44eb80dc036000100010001518000043ea6a022c04800010001000151800004d554c485 + +31308 +c7a700000001000000000000036e733203676d74026e6c0000010001 +c7a780000001000000030003036e733203676d74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02800010001000151800004d44eb80dc00c000100010001518000043ea6a022c04800010001000151800004d554c485 + +31309 +600600000001000000000000036e733303676d74026e6c0000010001 +600680000001000000030003036e733303676d74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02800010001000151800004d44eb80dc03a000100010001518000043ea6a022c00c00010001000151800004d554c485 + +31310 +b6a3836950104470a6f10000000000000000 + + +31311 +1a1d00000001000000000000037777770a73746164736b6e6f616c026e6c0000010001 +1a1d80000001000000020000037777770a73746164736b6e6f616c026e6c0000010001c0100002000100015180001d036e733213656666696369656e74776562686f7374696e6703636f6d00c01000020001000151800006036e7333c033 + +31312 +88b5000000010000000000000a736f6e6572616d61696c026e6c00001c0001 +88b5800000010000000200000a736f6e6572616d61696c026e6c00001c0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +31313 +b6a2fbc250114502c5010000000000000000 + + +31314 +b6a38369501844702ad200000089c140000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7dfc403ccf7c00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +31315 +b6a404f350102238a32e0000000000000000 +b6a480010000000000000000 + +31316 +b6a404f350112238a32d0000000000000000 +b6a480010000000000000000 + +31317 +c43800000001000000000000066d61696c303106626f6f6b6974026e6c0000010001 +c43880000001000000030003066d61696c303106626f6f6b6974026e6c0000010001c0130002000100015180000a036e733103676d74c01ac01300020001000151800006036e7332c032c01300020001000151800006036e7333c032c02e00010001000151800004d44eb80dc044000100010001518000043ea6a022c05600010001000151800004d554c485 + +31318 +937f00000001000000000000026e7308767575727765726b026e6c0000010001 +937f80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +31319 +3f7100000001000000000000036e733208767575727765726b026e6c0000010001 +3f7180000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +31320 +b6a2fbc350104502c5000000000000000000 + + +31321 +b6a404f450102238a32c0000000000000000 +b6a480010000000000000000 + +31322 +cb480000000100000000000002393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +cb488000000100000002000202393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31323 +000000007002400097e000000204055001010402 +000080010000000000000000 + +31324 +b6a3837750114462a6650000000000000000 + + +31325 +016f0000000100000000000003776d7707757477656e7465026e6c0000ff0001 +016f8000000100000003000303776d7707757477656e7465026e6c0000ff0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c0001000100015180000482590102c03e0001000100015180000482590103c05000010001000151800004c0571113 + +31326 +b6a4a43f50104510643c0000000000000000 + + +31327 +4374000000010000000000000377777704696c7365026e6c0000010001 +4374800000010000000300030377777704696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c029000100010001518000043e45a282c03b000100010001518000043e45a283c04d000100010001518000043e45a284 + +31328 +b6a4a43f50184510f6e30000008b9d16000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afc3b403c4dbb00030000002c4e544c4d535350000100000097b208e0060006002600000006000600200000005345525645524b4f525055540000 + + +31329 +b6a3837850104462a6640000000000000000 + + +31330 +fd9800100001000000000001024e530550424e4543024e4c00000100010000290800000080000000 +fd9880000001000000020002024e530550424e4543024e4c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14e8f420000291000000000000000 + +31331 +b6a4a44d5011450263ae0000000000000000 + + +31332 +85de00000001000000000000037777770b73756c65796d616e697965026e6c0000010001 +85de80000001000000020002037777770b73756c65796d616e697965026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +31333 +b6a4a44e5010450263ad0000000000000000 + + +31334 +3f4300000001000000000000024e530550424e4543024e4c0000010001 +3f4380000001000000020001024e530550424e4543024e4c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14e8f42 + +31335 +0000000070024000b33700000204055001010402 +000080010000000000000000 + +31336 +158f0000000100000000000002393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +158f8000000100000002000202393203323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31337 +73c30010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000080000000 +73c38000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +31338 +b6a5493c50104510da950000000000000000 +b6a5c9340000000000000000 + +31339 +b6a5493c5018451037370000008bd31c000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afc3b403c4dbb00030000002c4e544c4d535350000100000097b208e0060006002600000006000600200000005345525645524b4f525055540000 +b6a5c9340000000000000000 + +31340 +bf080000000100000000000003777777046d617070026e6c0000010001 +bf088000000100000003000003777777046d617070026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c02ec01000020001000151800007046e733033c02e + +31341 +9a6d00000001000000000000036e733103666a66026e6c0000010001 +9a6d80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31342 +9a6e00000001000000000000036e733203666a66026e6c0000010001 +9a6e80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31343 +89c500000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +89c580000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +31344 +b6a5494a50114502da070000000000000000 +b6a5c9440000000000000000 + +31345 +33820000000100000000000006736d7470303103777873026e6c0000010001 +33828000000100000003000306736d7470303103777873026e6c0000010001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +31346 +54810000000100000000000006737175697265026e6c00000f0001 +54818000000100000002000206737175697265026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +31347 +b6a5494b50104502da060000000000000000 +b6a5c9440000000000000000 + +31348 +bb7800000001000000000000046d61696c0b686f726563617a616b656e026e6c0000010001 +bb7880000001000000020000046d61696c0b686f726563617a616b656e026e6c0000010001c01100020001000151800010036e7331066d6f76696174036e657400c01100020001000151800006036e7332c035 + +31349 +aaeb000000010000000000000575776e6574026e6c00000f0001 +aaeb800000010000000200020575776e6574026e6c00000f0001c00c00020001000151800011026e730b6973642d686f6c6c616e64c012c00c00020001000151800006036e7332c029c02600010001000151800004d5e38d0ac04300010001000151800004d5e38205 + +31350 +545d0000000100000000000004686f6d65066863636e6574026e6c0000010001 +545d8000000100000002000004686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +31351 +f4fd000000010000000000000377777709676179766964656f73026e6c0000010001 +f4fd800000010000000200000377777709676179766964656f73026e6c0000010001c01000020001000151800012036e736c0861636f6d7761726503636f6d00c0100002000100015180000f036e737205612d636f6d036e657400 + +31352 +14f900000001000000000000036e7331096d65646961626f6e65026e6c0000010001 +14f980000001000000020002036e7331096d65646961626f6e65026e6c0000010001c0100002000100015180000b087369656d656e7332c010c01000020001000151800002c00cc02e00010001000151800004c355b614c00c00010001000151800004c355b615 + +31353 +8c08000000010000000000000e736d616c6c696e6765726c616e64026e6c00000f0001 +8c08800000010000000200020e736d616c6c696e6765726c616e64026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +31354 +2be1000000010000000000000b76616e64656e6e6f6f7274026e6c0000010001 +2be1800000010000000200020b76616e64656e6e6f6f7274026e6c0000010001c00c0002000100015180000a036e733103686978c018c00c00020001000151800006036e7332c030c02c00010001000151800004d5a0da0ac0420001000100015180000451112ec3 + +31355 +1cdb00000001000000000000046d61696c0761637473697465026e6c00000f0001 +1cdb80000001000000020000046d61696c0761637473697465026e6c00000f0001c0110002000100015180000d036e7333036b706e036e657400c01100020001000151800006036e7334c031 + +31356 +44f2000000010000000000000469632d73026e6c0000ff0001 +44f2800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +31357 +e3ec00000001000000000000037777770a6175746f2d6172696e6b026e6c0000010001 +e3ec80000001000000020002037777770a6175746f2d6172696e6b026e6c0000010001c01000020001000151800013036e73310c7265616c6974736572766572c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c4052bc04e00010001000151800004d5c4052c + +31358 +67c900000001000000000000067a7376737272026e6c0000010001 +67c984030001000000010000067a7376737272026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31359 +5a170000000100000000000003777777076d2d6e61696c73026e6c0000010001 +5a178000000100000002000003777777076d2d6e61696c73026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c032 + +31360 +75f8000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c0000010001 +75f8800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c0000010001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +31361 +b1d0000000010000000000000c6475796e2d656e2d7268796e026e6c0000ff0001 +b1d0800000010000000200020c6475796e2d656e2d7268796e026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +31362 +6b110000000100000000000003777777096b6f696b656c646572026e6c0000010001 +6b118000000100000002000003777777096b6f696b656c646572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +31363 +2fc80000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +2fc88000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31364 +3a60000000010000000000000977656273657276657203495044026e6c0000060001 +3a60800000010000000200000977656273657276657203495044026e6c0000060001c0160002000100015180000c036e723105692d702d64c01ac01600020001000151800006036e7232c032 + +31365 +f59c00000001000000000000037777770f6a6f6e676572656e63616d70696e67026e6c0000010001 +f59c80000001000000020002037777770f6a6f6e676572656e63616d70696e67026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +31366 +ba430000000100000000000003706272026e6c00000f0001 +ba438000000100000002000003706272026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c027 + +31367 +168800000001000000000000096b656e6e69736e6574026e6c00001c0001 +168880000001000000020002096b656e6e69736e6574026e6c00001c0001c00c00020001000151800006036e7339c00cc00c0002000100015180000e036e733207737572666e6574c016c02a00010001000151800004c0576a61c03c00010001000151800004c0572402 + +31368 +2eb20000000100000000000003777777056a622d6974026e6c0000010001 +2eb28000000100000002000203777777056a622d6974026e6c0000010001c0100002000100015180000a04646e7330026975c016c0100002000100015180000704646e7331c02fc02a00010001000151800004d91a7002c04000010001000151800004d91a7103 + +31369 +b7c300000001000000000000036e733503777873026e6c0000010001 +b7c380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +31370 +6fd900000001000000000000036e733303777873026e6c0000010001 +6fd980000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +31371 +704b000000010000000000000677657474656e086f76657268656964026e6c0000010001 +704b800000010000000300030677657474656e086f76657268656964026e6c0000010001c0130002000100015180000e036e73310761737034616c6cc01cc01300020001000151800006036e7332c034c01300020001000151800006036e7333c034c03000010001000151800004c1adf9c3c04a000100010001518000043e70ec3cc05c00010001000151800004c1ac0bae + +31372 +6cf4000000010000000000000466646467026e6c00001c0001 +6cf4800000010000000200020466646467026e6c00001c0001c00c0002000100015180000e026e73086d656761706c6578c011c00c00020001000151800006036e7331c028c02500010001000151800004504f6101c03f00010001000151800004504f6102 + +31373 +6b950000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +6b958000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31374 +f4160000000100000000000005697465636b026e6c0000ff0001 +f4168000000100000002000205697465636b026e6c0000ff0001c00c0002000100015180000f036e73310863616d627269756dc012c00c00020001000151800006036e7332c02ac02600010001000151800004d9131082c04100010001000151800004d5efb202 + +31375 +e85e000000010000000000000a70657465726265657473026e6c0000ff0001 +e85e800000010000000200000a70657465726265657473026e6c0000ff0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c031 + +31376 +457500000001000000000000086869707065746970026e6c0000010001 +457580000001000000020000086869707065746970026e6c0000010001c00c00020001000151800011036e733107657873696c6961036e657400c00c00020001000151800006036e7332c02d + +31377 +77ae0000000100000000000006676f6f676c65026e6c0000010001 +77ae8000000100000003000006676f6f676c65026e6c0000010001c00c00020001000151800010036e733106676f6f676c6503636f6d00c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02b + +31378 +6d5a00000001000000000000036e7331046e656e73026e6c0000010001 +6d5a80000001000000020000036e7331046e656e73026e6c0000010001c01000020001000151800014036e73310d646e73636f6d656f6e6c696e65c015c01000020001000151800006036e7333c02d + +31379 +4ab100000001000000000000036e7332046e656e73026e6c0000010001 +4ab180000001000000020000036e7332046e656e73026e6c0000010001c01000020001000151800014036e73310d646e73636f6d656f6e6c696e65c015c01000020001000151800006036e7333c02d + +31380 +d446000000010000000000000377777709776f6f6e6b72616e74026e6c0000010001 +d446800000010000000200000377777709776f6f6e6b72616e74026e6c0000010001c01000020001000151800011036e733107636f6e78696f6e036e657400c01000020001000151800006036e7332c032 + +31381 +000828000001000200000000026e6c0000060001086c6170746f7037610c6f62732d636c757374657273026e6c00000500fe000000000000c01400010001000000000004c0a80030 +0008a8040000000000000000 + +31382 +6dc700000001000000000000037777770c726f6265636f646972656374026e6c0000010001 +6dc780000001000000020001037777770c726f6265636f646972656374026e6c0000010001c0100002000100015180000d036e733106726f6265636fc01dc0100002000100015180000b026e73026e6c036e657400c03100010001000151800004913d1a01 + +31383 +a2490000000100000000000006726961686f6d06746d66776562026e6c0000010001 +a2498000000100000002000006726961686f6d06746d66776562026e6c0000010001c01300020001000151800011056c656d6f6e0571696e6970036e657400c01300020001000151800007046c696d65c034 + +31384 +4fc000000001000000000000036e7331036e7873026e6c0000010001 +4fc080000001000000020002036e7331036e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c015c03600010001000151800004d973c102 + +31385 +a7e000000001000000000000036e7332036e7873026e6c0000010001 +a7e080000001000000020002036e7332036e7873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d973c015c00c00010001000151800004d973c102 + +31386 +00000000700240004ad60000020405b401010402 +000080010000000000000000 + +31387 +870f000000010000000000000377777710696a736c616e6473657061617264656e026e6c0000010001 +870f800000010000000200020377777710696a736c616e6473657061617264656e026e6c0000010001c01000020001000151800012036e73310b6661737473657276657234c021c01000020001000151800006036e7332c039c0350001000100015180000442a4f39ac0530001000100015180000442a4f3a3 + +31388 +b6a82dab501044708ec60000000000000000 +b6a8ada40000000000000000 + +31389 +b6a82dab50184470944f0000008b9351000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afa97403c4c1700030000002e4e544c4d535350000100000097b200c0060006002800000008000800200000004c4150544f5037415a50444550330000 +b6a8ada40000000000000000 + +31390 +b6a82db9501144628e380000000000000000 +b6a8adb40000000000000000 + +31391 +ae64000000010000000000001270656e73696f656e72616164676576657273026e6c00000f0001 +ae64800000010000000200021270656e73696f656e72616164676576657273026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01fc00c00020001000151800006036e7332c037c03300010001000151800004d43d0f08c05100010001000151800004d43d19e2 + +31392 +456a000000010000000000000572756e61740870726f7365727665026e6c0000010001 +456a800000010000000300020572756e61740870726f7365727665026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800012036e73320970726f2d736572766502626500c01200020001000151800006036e7333c012c02f000100010001518000045054e055c05f00010001000151800004d4ccc655 + +31393 +6eef0000000100000000000003777777096d6573746c6f6b6574026e6c0000010001 +6eef8000000100000002000203777777096d6573746c6f6b6574026e6c0000010001c0100002000100015180000a036e733103777572c01ac01000020001000151800006036e7332c032c02e0001000100015180000489e0f88dc0440001000100015180000489e0f88e + +31394 +0000000070024000adc20000020405b401010402 +000080010000000000000000 + +31395 +b710000000010000000000000377777709706172616469676974026e6c00000f0001 +b710800000010000000200000377777709706172616469676974026e6c00000f0001c01000020001000151800010026e73076e65737363697303636f6d00c01000020001000151800006036e7332c031 + +31396 +b6a82dba501044628e370000000000000000 +b6a8adb40000000000000000 + +31397 +b6a8c206501044705d570000000000000000 + + +31398 +b6a8c206501844702ecc0000008bc965000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afa97403c4c1700030000002e4e544c4d535350000100000097b200c0060006002800000008000800200000004c4150544f5037415a50444550330000 + + +31399 +b6a8c214501144625cc90000000000000000 + + +31400 +0000000070024000c87d0000020405b401010402 +000080010000000000000000 + +31401 +870f00000001000000000000047777773207646f6c66696a6e026e6c0000010001 +870f80000001000000030003047777773207646f6c66696a6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02d000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +31402 +a8fe00000001000000000001036e733204686f6d65026e6c00000100010000291000000000000000 +a8fe80000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +31403 +b19d00000001000000000001036e733304686f6d65026e6c00000100010000291000000000000000 +b19d80000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +31404 +188500000001000000000001036e733104686f6d65026e6c00000100010000291000000000000000 +188580000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +31405 +86a100000001000000000001036e733404686f6d65026e6c00000100010000291000000000000000 +86a180000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +31406 +b6a8c215501044625cc80000000000000000 + + +31407 +0a4500000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +0a4580000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +31408 +8d4900000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000260001 +8d4980000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +31409 +f92400000001000000000000037777770b6c6f6f6b666f726c6f7665026e6c0000010001 +f92480000001000000020002037777770b6c6f6f6b666f726c6f7665026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +31410 +b6a93e2050104470fbf70000000000000000 +b6a9be240000000000000000 + +31411 +2eee00000001000000000000036e73340767617574656e67026e6c0000010001 +2eee80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31412 +3ef400000001000000000000036e73340767617574656e67026e6c0000010001 +3ef480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31413 +b6a93e205018447049070000008b4bcb000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afa98403c4c1800030000002e4e544c4d535350000100000097b200c0060006002800000008000800200000004c4150544f5037415a50444550330000 +b6a9be240000000000000000 + +31414 +1efb00000001000000000000036e73340767617574656e67026e6c0000010001 +1efb80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31415 +dbb100000001000000000000076b6e697073656c026e6c0000010001 +dbb180000001000000020002076b6e697073656c026e6c0000010001c00c0002000100015180000d0a696e6574736572762d31c00cc00c0002000100015180000e036e7332076e65746c616e64c014c02800010001000151800004d9aa2b74c04100010001000151800004d9aa2c06 + +31416 +b31800000001000000000000037777770e636172746f6f6e6e6574776f726b026e6c0000010001 +b31880000001000000030000037777770e636172746f6f6e6e6574776f726b026e6c0000010001c01000020001000151800015087477646e732d3031026e7303616f6c03636f6d00c0100002000100015180000b087477646e732d3032c03cc0100002000100015180000b087477646e732d3033c03c + +31417 +b6a93e2e50114462fb690000000000000000 +b6a9be240000000000000000 + +31418 +a8fe00000001000000000000036e733204686f6d65026e6c0000010001 +a8fe80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31419 +b19d00000001000000000000036e733304686f6d65026e6c0000010001 +b19d80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31420 +188500000001000000000000036e733104686f6d65026e6c0000010001 +188580000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31421 +622a00000001000000000000036e733404686f6d65026e6c0000010001 +622a80000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +31422 +119100000001000000000000036e733104686f6d65026e6c0000010001 +119180000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31423 +c5b000000001000000000000036e733204686f6d65026e6c0000010001 +c5b080000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31424 +858600000001000000000000036e733304686f6d65026e6c0000010001 +858680000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31425 +b6a93e2f50104462fb680000000000000000 +b6a9be240000000000000000 + +31426 +0b6600000001000000000000037777770f646964697364616e7373747564696f026e6c0000010001 +0b6680000001000000020000037777770f646964697364616e7373747564696f026e6c0000010001c01000020001000151800019036e733110666c6178652d776562686f7374696e6702626500c01000020001000151800006036e7332c038 + +31427 +126700000001000000000000067265636f3237026e6c00000f0001 +126780000001000000020002067265636f3237026e6c00000f0001c00c0002000100015180000d026e730777697a7a626974c013c00c00020001000151800006036e7332c02ac027000100010001518000043e3a360bc040000100010001518000043e3a360c + +31428 +21cb00000001000000000000046d61696c05666574696d026e6c00001c0001 +21cb80000001000000020000046d61696c05666574696d026e6c00001c0001c0110002000100015180000e036e733107656e657274656cc017c01100020001000151800006036e7332c02f + +31429 +6c310000000100000000000005646e732d31056c61646f74026e6c0000010001 +6c318000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31430 +8e0800000001000000000000037777770b616466697265776f726b73026e6c0000010001 +8e0880000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +31431 +182a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +182a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31432 +255f00000001000000000000086e79656e726f6465026e6c0000010001 +255f80000001000000030003086e79656e726f6465026e6c0000010001c00c000200010001518000070161026e73c00cc00c000200010001518000040163c02bc00c000200010001518000040164c02bc029000100010001518000043e3a04a3c03c00010001000151800004c26dc2aec04c00010001000151800004c0577106 + +31433 +73410000000100000000000003777777147a696a6c737472612d636f6e74726f6c6c696e67026e6c0000010001 +73418000000100000002000003777777147a696a6c737472612d636f6e74726f6c6c696e67026e6c0000010001c01000020001000151800011046e7330310676696c6c6168036e657400c01000020001000151800007046e733032c03e + +31434 +dc640000000100000000000003626d67026e6c00000f0001 +dc648000000100000003000303626d67026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02400010001000151800004c14e9e14c03600010001000151800004c14e9e22c04800010001000151800004d4ce7a43 + +31435 +b66a00100001000000000001026e73076b6e6f77617265026e6c00000100010000290800000000000000 +b66a80000001000000020003026e73076b6e6f77617265026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c3402003c03900010001000151800004c340202b0000291000000000000000 + +31436 +edb500100001000000000001036e7332076b6e6f77617265026e6c00000100010000290800000000000000 +edb580000001000000020003036e7332076b6e6f77617265026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004c3402003c00c00010001000151800004c340202b0000291000000000000000 + +31437 +45650000000100000000000007626575727a656e036a656d026e6c0000010001 +45658000000100000002000207626575727a656e036a656d026e6c0000010001c0140002000100015180000e036e73310765766964656e74c018c01400020001000151800006036e7332c030c02c00010001000151800004c36d19c4c04600010001000151800004c36d1942 + +31438 +741400000001000000000000036e73310765766964656e74026e6c0000010001 +741480000001000000020002036e73310765766964656e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c36d19c4c03a00010001000151800004c36d1942 + +31439 +78ed00000001000000000000036e73320765766964656e74026e6c0000010001 +78ed80000001000000020002036e73320765766964656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c36d19c4c00c00010001000151800004c36d1942 + +31440 +bf3700000001000000000000026e73076b6e6f77617265026e6c0000010001 +bf3780000001000000020002026e73076b6e6f77617265026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c3402003c03900010001000151800004c340202b + +31441 +4db100000001000000000000036e7332076b6e6f77617265026e6c0000010001 +4db180000001000000020002036e7332076b6e6f77617265026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004c3402003c00c00010001000151800004c340202b + +31442 +3cf70000000100000000000007626575727a656e036a656d026e6c0000010001 +3cf78000000100000002000207626575727a656e036a656d026e6c0000010001c0140002000100015180000e036e73310765766964656e74c018c01400020001000151800006036e7332c030c02c00010001000151800004c36d19c4c04600010001000151800004c36d1942 + +31443 +bf670000000100000000000006776468303131066e7434616c6c026e6c0000010001 +bf678000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +31444 +fdfb00000001000000000000026e73076d6964686f6c64026e6c0000010001 +fdfb80000001000000020002026e73076d6964686f6c64026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e7307636f6f6c636f6dc017c00c00010001000151800004c1ad3503c03900010001000151800004c1ad3506 + +31445 +49d900000001000000000000026e73076d6964686f6c64026e6c00001c0001 +49d980000001000000020002026e73076d6964686f6c64026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000d026e7307636f6f6c636f6dc017c00c00010001000151800004c1ad3503c03900010001000151800004c1ad3506 + +31446 +9b310000000100000000000003706272026e6c00000f0001 +9b318000000100000002000003706272026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c027 + +31447 +a81100000001000000000000106e65666b656e732d6e686f6c6c616e64026e6c0000010001 +a81180000001000000030003106e65666b656e732d6e686f6c6c616e64026e6c0000010001c00c0002000100015180000f036e7331086e6f766178657373c01dc00c00020001000151800006036e7332c035c00c00020001000151800006036e7333c035c03100010001000151800004d5c98015c04c00010001000151800004d5c9bf12c05e00010001000151800004d5ef9c26 + +31448 +48ab0000000100000000000008686f73746e616d650462696e640000100003 +48ab8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31449 +b69cc936501022384c2b0000000000000000 + + +31450 +6cac00100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +6cac80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +31451 +283a00000001000000000000037777770c6e6f686f70656e6f66656172026e6c0000010001 +283a80000001000000020002037777770c6e6f686f70656e6f66656172026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +31452 +04d800100001000000000001036e733508646f6d696e696f6e026e6c00000100010000290800000000000000 +04d880000001000000020003036e733508646f6d696e696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c00000291000000000000000 + +31453 +509b000000010000000000000c776174657273746f662d7631047072697608717569636b6e6574026e6c0000010001 +509b800000010000000300020c776174657273746f662d7631047072697608717569636b6e6574026e6c0000010001c01e00020001000151800011036e73310a6d756c74696b6162656cc027c01e00020001000151800006036e7332c03fc01e00020001000151800014036e73300a6d756c74696b6162656c036e657400c03b0001000100015180000450f2e002c0580001000100015180000450f2e006 + +31454 +026c00100001000000000001036e733508646f6d696e696f6e026e6c00002600010000290800000000000000 +026c80000001000000020003036e733508646f6d696e696f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c00000291000000000000000 + +31455 +9564000000010000000000000377777703726e63026e6c0000010001 +9564800000010000000200020377777703726e63026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c014c0100002000100015180000805726f62696ec02fc02800010001000151800004913a1e04c04400010001000151800004913a1a34 + +31456 +40f400100001000000000001036e733608646f6d696e696f6e026e6c00000100010000290800000000000000 +40f480000001000000020003036e733608646f6d696e696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c00000291000000000000000 + +31457 +207a00100001000000000001036e733608646f6d696e696f6e026e6c00002600010000290800000000000000 +207a80000001000000020003036e733608646f6d696e696f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c00000291000000000000000 + +31458 +1b4400100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +1b4480000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +31459 +fe750000000100000000000008686f73746e616d650462696e640000100003 +fe758000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31460 +267b0000000100000000000005686167726f026e6c00000f0001 +267b8000000100000002000005686167726f026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +31461 +3a4c0000000100000000000006636861726973026e6c00000f0001 +3a4c8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +31462 +98c1000000010000000000000377777708616c666f6e737573026e6c0000010001 +98c1800000010000000200020377777708616c666f6e737573026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c019c01000020001000151800006036e7332c031c02d00010001000151800004d4b20403c04600010001000151800004d5881e45 + +31463 +7ab5000000010000000000000d6f627377686565726d6f6c656e06776f6c776562026e6c0000010001 +7ab5800000010000000200000d6f627377686565726d6f6c656e06776f6c776562026e6c0000010001c01a0002000100015180000f04686e73300774697363616c69c021c01a0002000100015180000704686e7331c03a + +31464 +e50100000001000000000000026e6c0000060001 +e50184000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +31465 +aa09000000010000000000000377777709696e666f746865656b026e6c0000010001 +aa09800000010000000200020377777709696e666f746865656b026e6c0000010001c01000020001000151800009036e7331026973c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5852102c04300010001000151800004d5c41503 + +31466 +6f940000000100000000000006746b74657374026e6c0000060001 +6f948403000100000001000006746b74657374026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31467 +6c7c00000001000000000000046d61696c116575726f62756c6b6c6f67697374696373026e6c0000010001 +6c7c80000001000000020002046d61696c116575726f62756c6b6c6f67697374696373026e6c0000010001c0110002000100015180000f036e7331087369746577697365c023c01100020001000151800006036e7332c03bc03700010001000151800004d58529cdc05200010001000151800004d58529d2 + +31468 +51380000000100000000000008686f73746e616d650462696e640000100003 +51388000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31469 +b63c0000000100000000000003767a72026e6c00000f0001 +b63c8000000100000002000203767a72026e6c00000f0001c00c0002000100015180000f036e733108696c696d62757267c010c00c00020001000151800006036e7332c028c02400010001000151800004c2b26281c03f00010001000151800004c2b262f7 + +31470 +7215000000010000000000000377777706657374617461026e6c0000010001 +7215800000010000000200020377777706657374617461026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +31471 +1944000000010000000000000764616e74756d61026e6c00000f0001 +1944800000010000000200020764616e74756d61026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c014c00c00020001000151800006036e7332c02cc02800010001000151800004c2451012c04000010001000151800004c2451212 + +31472 +a2b6000000010000000000000462757267026e6c0000010001 +a2b6800000010000000200020462757267026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +31473 +927c28000001000000010000026e6c000006000106746b74657374026e6c0000010001000002580004c0a800ce +927ca8040000000000000000 + +31474 +2e3400000001000000000000067768646e7332056577656b61026e6c0000010001 +2e3480000001000000020002067768646e7332056577656b61026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7333c013c02d0001000100015180000451ab6504c03f0001000100015180000451ab660e + +31475 +6f2900000001000000000000046e73303803777873026e6c0000010001 +6f2980000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +31476 +0b6a00000001000000000000066865746e6574026e6c00000f0001 +0b6a80000001000000030003066865746e6574026e6c00000f0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +31477 +c75d00000001000000000000037777770e636172746f6f6e6e6574776f726b026e6c0000010001 +c75d80000001000000030000037777770e636172746f6f6e6e6574776f726b026e6c0000010001c01000020001000151800015087477646e732d3031026e7303616f6c03636f6d00c0100002000100015180000b087477646e732d3032c03cc0100002000100015180000b087477646e732d3033c03c + +31478 +72090000000100000000000002393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001 +72098000000100000002000202393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31479 +c98500000001000000000000037777770a6175746f667265616b7a026e6c0000010001 +c98580000001000000020000037777770a6175746f667265616b7a026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c032 + +31480 +000000007002faf0235a0000020405b401010402 +000080010000000000000000 + +31481 +818500000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +818580000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31482 +b6ab2c4f5010faf06d130000000000000000 +b6abac440000000000000000 + +31483 +b6ab2c4f5018faf057b60000008ece11000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403af4fb403c467b00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 +b6abac440000000000000000 + +31484 +0aa30000000100000000000003726474026e6c00000f0001 +0aa38000000100000002000103726474026e6c00000f0001c00c0002000100015180000a036e733303777873c010c00c00020001000151800006036e7334c028c03a00010001000151800004d5ef9a65 + +31485 +b6ab2c5d5011fae26c820000000000000000 +b6abac540000000000000000 + +31486 +b64800000001000000000000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f73697465730c6a666b626f73737472616174026e6c0000060001 +b64884030001000000010000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f73697465730c6a666b626f73737472616174026e6c0000060001c04500060001000038400036026e730f646f6d61696e2d7265676973747279c0450a686f73746d6173746572c05c0bf1e540000070800000384000278d0000003840 + +31487 +000000007002faf0d00e0000020405b401010402 +000080010000000000000000 + +31488 +819400000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +819480000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +31489 +b6ab2c5e5010fae26c810000000000000000 +b6abac540000000000000000 + +31490 +391d000000010000000000000377777706666f72746973026e6c0000010001 +391d800000010000000200000377777706666f72746973026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c031 + +31491 +b6aba8ae5010faf09d680000000000000000 + + +31492 +b6aba8ae5018faf09fa00000008eb77d000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af4fb403c467b00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 + + +31493 +170e00000001000000000000036e73330767617574656e67026e6c0000010001 +170e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31494 +280c000000010000000000000d74656c65636f6d616476696573026e6c00000f0001 +280c800000010000000200000d74656c65636f6d616476696573026e6c00000f0001c00c00020001000151800014046e733031096772616669782d697303636f6d00c00c00020001000151800007046e733033c033 + +31495 +ad2f000000010000000000000773616e7175696e026e6c0000010001 +ad2f800000010000000300000773616e7175696e026e6c0000010001c00c00020001000151800013036e7331096a61636f62736e657403636f6d00c00c00020001000151800006036e7332c02cc00c00020001000151800012046e73303107696e746f756368036e657400 + +31496 +ed0e00000001000000000000046d61696c146272696467652d656e7465727461696e6d656e74026e6c0000010001 +ed0e80000001000000020000046d61696c146272696467652d656e7465727461696e6d656e74026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c040 + +31497 +39ee00000001000000000000066f6265726f6e046261616e026e6c0000010001 +39ee80000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31498 +0c1a00000001000000000000066f6265726f6e046261616e026e6c0000010001 +0c1a80000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31499 +8f4d0000000100000000000003777777086f6761616e626f64026e6c0000010001 +8f4d8000000100000003000203777777086f6761616e626f64026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c019c01000020001000151800006036e7332c031c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02d00010001000151800004cf2cd7adc04e0001000100015180000452c04365 + +31500 +7e5600000001000000000000066f6265726f6e046261616e026e6c0000010001 +7e5680000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31501 +b6aba8bc5011fae29cd70000000000000000 + + +31502 +d89600000001000000000000037777770a6d69737362696b696e69026e6c0000010001 +d89680000001000000020001037777770a6d69737362696b696e69026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01bc01000020001000151800006036e7334c033c02f00010001000151800004d5c401c0 + +31503 +21ad00000001000000000000037777770a6d69737362696b696e69026e6c0000010001 +21ad80000001000000020001037777770a6d69737362696b696e69026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01bc01000020001000151800006036e7334c033c02f00010001000151800004d5c401c0 + +31504 +000000007002faf0ca480000020405b401010402 +000080010000000000000000 + +31505 +47b400000001000000000000036e733508646f6d696e696f6e026e6c0000010001 +47b480000001000000020002036e733508646f6d696e696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c0 + +31506 +a3da00000001000000000000036e733608646f6d696e696f6e026e6c0000010001 +a3da80000001000000020002036e733608646f6d696e696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c0 + +31507 +d1ed00000001000000000000036e733608646f6d696e696f6e026e6c0000260001 +d1ed80000001000000020002036e733608646f6d696e696f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000045054e3bfc03f000100010001518000045054e3c0 + +31508 +ed130000000100000000000009686f636f7061727473026e6c00000f0001 +ed138000000100000002000209686f636f7061727473026e6c00000f0001c00c00020001000151800012036e73310b676c6f62616c7369746573c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d4cce37ac04800010001000151800004d94d8b0c + +31509 +544900000001000000000000036e733107626265796f6e64026e6c0000010001 +544980000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +31510 +90df00000001000000000000036e733207626265796f6e64026e6c0000010001 +90df80000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +31511 +389c00000001000000000000066f6265726f6e046261616e026e6c0000010001 +389c80000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31512 +b6aba8bd5010fae29cd60000000000000000 + + +31513 +a09200000001000000000000037777770c6665746973682d706f726e6f026e6c0000010001 +a09280000001000000030000037777770c6665746973682d706f726e6f026e6c0000010001c01000020001000151800011036e7331087072696f7277656202626500c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +31514 +3ba60000000100000000000003706f70096d766e65747765726b026e6c0000010001 +3ba68000000100000002000003706f70096d766e65747765726b026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +31515 +72e800000001000000000000037777770969747362757373756d026e6c0000010001 +72e880000001000000020002037777770969747362757373756d026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +31516 +b6ac8a535010faf0b5fc0000000000000000 + + +31517 +927e000000010000000000000673656375726509706f7374706c617a61026e6c0000010001 +927e800000010000000200020673656375726509706f7374706c617a61026e6c0000010001c0130002000100015180000e036e733207737570706f7274c01dc01300020001000151800006036e7334c035c03100010001000151800004c372e7c8c04b00010001000151800004c372e6fe + +31518 +98cb00000001000000000000036e73310474696469026e6c0000010001 +98cb80000001000000030002036e73310474696469026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31519 +4dfc00000001000000000000036e73310474696469026e6c00001c0001 +4dfc80000001000000030002036e73310474696469026e6c00001c0001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31520 +bf2d00000001000000000000036e73310474696469026e6c0000260001 +bf2d80000001000000030002036e73310474696469026e6c0000260001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31521 +91c900000001000000000000036e73320474696469026e6c0000010001 +91c980000001000000030002036e73320474696469026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31522 +ecfe00000001000000000000036e73320474696469026e6c00001c0001 +ecfe80000001000000030002036e73320474696469026e6c00001c0001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31523 +a6e600000001000000000000036e73320474696469026e6c0000260001 +a6e680000001000000030002036e73320474696469026e6c0000260001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +31524 +b6ac8a535018faf07d360000008ef27b000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af4fb403c467b00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 + + +31525 +923e0000000100000000000003777777166175746f6d6f6269656c62656472696a66626f657265026e6c0000010001 +923e8000000100000002000003777777166175746f6d6f6269656c62656472696a66626f657265026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c041 + +31526 +c92600000001000000000000037777770876772d7363656e65026e6c0000010001 +c92680000001000000020000037777770876772d7363656e65026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c019c0100002000100015180000805646e732d32c033 + +31527 +fcb70000000100000000000002393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001 +fcb78000000100000002000202393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31528 +b6ac8a615011fae2b56b0000000000000000 + + +31529 +d38600000001000000000000036877670f766965727465656e66656573746a65026e6c0000010001 +d38680000001000000020002036877670f766965727465656e66656573746a65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +31530 +ac660000000100000000000003777777046c79636f026e6c0000010001 +ac668000000100000002000003777777046c79636f026e6c0000010001c0100002000100015180000d026e7307706167656e6963c015c01000020001000151800006036e7332c02c + +31531 +a3b500000001000000000000097765627365727665720c44455749542d424f454b454c024e4c0000060001 +a3b584030001000000010000097765627365727665720c44455749542d424f454b454c024e4c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +31532 +ab43000000010000000000000377777710687575726f76657265656e6b6f6d7374026e6c0000010001 +ab43800000010000000200020377777710687575726f76657265656e6b6f6d7374026e6c0000010001c0100002000100015180000c026e730674656c6c7573c021c01000020001000151800006036e7332c038c035000100010001518000043e3a4cc8c04d000100010001518000043e3a4cc9 + +31533 +b6ac8a625010fae2b56a0000000000000000 + + +31534 +f0ac0000000100000000000002393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +f0ac8000000100000002000202393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31535 +6b15000000010000000000000377777706617374726978026e6c0000010001 +6b15800000010000000200000377777706617374726978026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c030 + +31536 +824d000000010000000000000b6d61696c61726368697665046c756e61026e6c0000010001 +824d800000010000000200000b6d61696c61726368697665046c756e61026e6c0000010001c01800020001000151800017026e7309726f7474657264616d046c756e61036e657400c0180002000100015180000f026e7309686f6f6664646f7270c03e + +31537 +9e1300000001000000000000056d61696c320773747564656e7403686873026e6c0000010001 +9e1380000001000000030003056d61696c320773747564656e7403686873026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec0320001000100015180000491340205c0440001000100015180000491340206c05600010001000151800004c0576a65 + +31538 +e61200000001000000000000036e73310f62656c617374696e676469656e7374026e6c0000010001 +e61280000001000000020001036e73310f62656c617374696e676469656e7374026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004d4880935 + +31539 +f30900000001000000000000036e73310f62656c617374696e676469656e7374026e6c0000260001 +f30980000001000000020001036e73310f62656c617374696e676469656e7374026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004d4880935 + +31540 +630f000000010000000000000a6c6f756e6765726f6f6d026e6c0000010001 +630f800000010000000200000a6c6f756e6765726f6f6d026e6c0000010001c00c0002000100015180000f05646e73313703677a6f03636f6d00c00c0002000100015180000805646e733138c031 + +31541 +1dd028000001000200000000024e4c0000060001097765627365727665720c44455749542d424f454b454c024e4c00000500fe000000000000c01400010001000000000004c0a80003 +1dd0a8040000000000000000 + +31542 +beb3000000010000000000000370657403617a67026e6c00000f0001 +beb3800000010000000300030370657403617a67026e6c00000f0001c01000020001000151800006036e7331c010c0100002000100015180000a036e733103727567c014c0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004c057175cc03a00010001000151800004817d0406c05000010001000151800004c0576a65 + +31543 +4dd600000001000000000000066f6265726f6e046261616e026e6c0000010001 +4dd680000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31544 +000000007002faf0d5990000020405b401010402 +000080010000000000000000 + +31545 +906700000001000000000000036e7331067468656e6963026e6c0000010001 +906780000001000000020000036e7331067468656e6963026e6c0000010001c01000020001000151800014026e730b686f6c6c616e64686f7374036e657400c01000020001000151800006036e7332c02e + +31546 +e55300000001000000000000036e7332067468656e6963026e6c0000010001 +e55380000001000000020000036e7332067468656e6963026e6c0000010001c01000020001000151800014026e730b686f6c6c616e64686f7374036e657400c01000020001000151800006036e7332c02e + +31547 +b6ad439b5010faf008050000000000000000 +b6adc3940000000000000000 + +31548 +1bd800000001000000000000037777770a6175746f2d6172696e6b026e6c0000010001 +1bd880000001000000020002037777770a6175746f2d6172696e6b026e6c0000010001c01000020001000151800013036e73310c7265616c6974736572766572c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c4052bc04e00010001000151800004d5c4052c + +31549 +0b810000000100000000000003777777047265697305656c766961026e6c0000010001 +0b818000000100000002000003777777047265697305656c766961026e6c0000010001c0150002000100015180000d026e730468736367036e657400c01500020001000151800006036e7332c032 + +31550 +10cd0000000100000000000009736d7470686f7374320667656d6e6574026e6c0000010001 +10cd8000000100000002000209736d7470686f7374320667656d6e6574026e6c0000010001c0160002000100015180000e026e73086d656761706c6578c01dc01600020001000151800006036e7331c034c03100010001000151800004504f6101c04b00010001000151800004504f6102 + +31551 +910e0000000100000000000008736d7470686f73740667656d6e6574026e6c0000010001 +910e8000000100000002000208736d7470686f73740667656d6e6574026e6c0000010001c0150002000100015180000e026e73086d656761706c6578c01cc01500020001000151800006036e7331c033c03000010001000151800004504f6101c04a00010001000151800004504f6102 + +31552 +b6ad439b5018faf01c6c0000009404ed000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd46403c4ec60003000000354e544c4d535350000100000097b208e00c000c0029000000090009002000000057454253455256455244455749542d424f454b454c0000 +b6adc3940000000000000000 + +31553 +02a40000000100000000000003616d76026e6c0000010001 +02a48000000100000003000103616d76026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +31554 +71d700000001000000000000036e733103716463026e6c0000010001 +71d780000001000000020002036e733103716463026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02800010001000151800004405c708dc00c00010001000151800004405c708c + +31555 +b6ad43a95011fae2076e0000000000000000 +b6adc3a40000000000000000 + +31556 +e15b0000000100000000000002393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001 +e15b8000000100000002000202393403323232023634033231360a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31557 +000000007002faf0c84e0000020405b401010402 +000080010000000000000000 + +31558 +649a00000001000000000000037777770e6e69656b7275747465726b616d70026e6c0000010001 +649a80000001000000020000037777770e6e69656b7275747465726b616d70026e6c0000010001c01000020001000151800014036e73310a6d69686f736e65742d3803636f6d00c01000020001000151800006036e7332c037 + +31559 +1be100000001000000000000076e73617574683203626974026e6c0000260001 +1be180000001000000030003076e73617574683203626974026e6c0000260001c0140002000100015180000a076e736175746831c014c01400020001000151800002c00cc0140002000100015180000a076e736175746833c014c02c00010001000151800004d5880c33c00c00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +31560 +aa4f00000001000000000000076e73617574683303626974026e6c0000260001 +aa4f80000001000000030003076e73617574683303626974026e6c0000260001c0140002000100015180000a076e736175746831c014c0140002000100015180000a076e736175746832c014c01400020001000151800002c00cc02c00010001000151800004d5880c33c04200010001000151800004d5880c3bc00c00010001000151800004d4ccc00b + +31561 +d8c000000001000000000000076e73617574683103626974026e6c0000260001 +d8c080000001000000030003076e73617574683103626974026e6c0000260001c01400020001000151800002c00cc0140002000100015180000a076e736175746832c014c0140002000100015180000a076e736175746833c014c00c00010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +31562 +25470000000100000000000004732d657806787334616c6c026e6c0000010001 +25478000000100000003000204732d657806787334616c6c026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +31563 +b6ad43aa5010fae2076d0000000000000000 +b6adc3a40000000000000000 + +31564 +b6af01195010faf03d3a0000000000000000 +b6af80010000000000000000 + +31565 +3c760000000100000000000004732d657806787334616c6c026e6c0000010001 +3c768000000100000003000204732d657806787334616c6c026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +31566 +96d900000001000000000000036e733109666972737466696e64024e4c0000010001 +96d980000001000000020000036e733109666972737466696e64024e4c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31567 +1c7000000001000000000000036e733209666972737466696e64024e4c0000010001 +1c7080000001000000020000036e733209666972737466696e64024e4c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31568 +b4fd0000000100000000000004686f6d650a636f6e63657074736661026e6c0000010001 +b4fd8000000100000002000204686f6d650a636f6e63657074736661026e6c0000010001c0110002000100015180000603646e73c011c0110002000100015180001004646e733208636f6e6365707473c01cc03000010001000151800004d5c51c03c04200010001000151800004d5c51e1c + +31569 +530c00000001000000000000036e73340962617365667265616b026e6c0000010001 +530c80000001000000030003036e73340962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31570 +530d00000001000000000000036e73350962617365667265616b026e6c0000010001 +530d80000001000000030003036e73350962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31571 +9d4c00000001000000000000086f776c736e657374026e6c00000f0001 +9d4c80000001000000020001086f776c736e657374026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c015c00c00020001000151800010026e7307696e746f756368036e657400c02900010001000151800004d413c001 + +31572 +63b900000001000000000000065354492d5341026e6c0000020001 +63b984030001000000010000065354492d5341026e6c0000020001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31573 +fa2a00000001000000000000096c6f686d756c6c6572026e6c00000f0001 +fa2a80000001000000020000096c6f686d756c6c6572026e6c00000f0001c00c0002000100015180000c036e733103737468026e7500c00c00020001000151800006036e7332c02e + +31574 +f53100000001000000000000026e75026e6c0000010001 +f53180000001000000030003026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +31575 +242600100001000000000001036e733503777873026e6c00000100010000290800000080000000 +242680000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +31576 +ba3f00000001000000000000064d4c42484154026e6c0000020001 +ba3f84030001000000010000064d4c42484154026e6c0000020001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31577 +b24200000001000000000000096974736f6e6c696e65026e6c0000010001 +b24280000001000000020002096974736f6e6c696e65026e6c0000010001c00c0002000100015180000a036e733103746d6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5a0d8fac04000010001000151800004d5a0d9fa + +31578 +6ea9000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +6ea9800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +31579 +36dd28000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573096575726f6279746532026e6c000021000100000258001e0000006400580945422d534552564552096575726f6279746532026e6c00 +36dda8040000000000000000 + +31580 +4f8f00000001000000000000037777770a766f6c6b73776167656e026e6c0000010001 +4f8f80000001000000020000037777770a766f6c6b73776167656e026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c033 + +31581 +11650000000100000000000003777777056769746573026e6c0000010001 +11658000000100000002000203777777056769746573026e6c0000010001c01000020001000151800012036e73310b676c6f62616c7369746573c016c01000020001000151800006036e7332c02ec02a00010001000151800004d4cce37ac04800010001000151800004d94d8b0c + +31582 +8fbf000000010000000000002439383632303662352d326234352d343935372d623035392d383438613534363434353962065f6d73646373046673316107676c67726f7570026e6c0000ff0001 +8fbf840300010000000100002439383632303662352d326234352d343935372d623035392d383438613534363434353962065f6d73646373046673316107676c67726f7570026e6c0000ff0001c04500060001000038400036026e730f646f6d61696e2d7265676973747279c0450a686f73746d6173746572c05c0bf1e540000070800000384000278d0000003840 + +31583 +14d500000001000000000000046d61696c097472616e736d61726b026e6c0000260001 +14d580000001000000020002046d61696c097472616e736d61726b026e6c0000260001c0110002000100015180000c026e7306787334616c6cc01bc01100020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +31584 +b11800000001000000000000046d61696c097472616e736d61726b026e6c00001c0001 +b11880000001000000020002046d61696c097472616e736d61726b026e6c00001c0001c0110002000100015180000c026e7306787334616c6cc01bc01100020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +31585 +000000007002faf015f200000204057a01010402 +000080010000000000000000 + +31586 +055200000001000000000000036e733503777873026e6c0000010001 +055280000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +31587 +743e00000001000000000000086f7574676f696e67046d61696c0b676172616e746962616e6b026e6c0000010001 +743e80000001000000020000086f7574676f696e67046d61696c0b676172616e746962616e6b026e6c0000010001c01a0002000100015180000b026e73026e6c036e657400c01a0002000100015180001206617574683630026e73026e6c027575c040 + +31588 +b6afec4b5010fbec9e740000000000000000 + + +31589 +b6afec4b5018fbec1c5700000091d900000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afed7403c50570003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 + + +31590 +97ee00000001000000000000077765626d61696c09726f7474657264616d026e6c0000010001 +97ee80000001000000030003077765626d61696c09726f7474657264616d026e6c0000010001c0140002000100015180000c0967616e796d65646573c014c01400020001000151800007046c656461c014c01400020001000151800014036e733203676e7309676574726f6e696373c01ec03200010001000151800004d5c9cf50c04a00010001000151800004d5c9cf19c05d00010001000151800004910d2a05 + +31591 +0b3428000001000200000000026e6c00000600010570632d30350a6266626b616e746f6f72026e6c00000500fe000000000000c01400010001000000000004c0a8a8fe +0b34a8040000000000000000 + +31592 +b6afec595011fbde9de00000000000000000 + + +31593 +b9730000000100000000000003777777066b6e736e6574026e6c0000010001 +b9738000000100000002000203777777066b6e736e6574026e6c0000010001c0100002000100015180000f026e7309656c6d6167726f6570c017c01000020001000151800006036e7331c02ec02b00010001000151800004d5880085c04600010001000151800004d5ce5e22 + +31594 +000000007002faf040ad00000204057a01010402 +000080010000000000000000 + +31595 +71bd0000000100000000000003696165026e6c00000f0001 +71bd8000000100000002000203696165026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +31596 +b6afec5a5010fbde9ddf0000000000000000 + + +31597 +00000000700240001ed00000020405b401010402 +000080010000000000000000 + +31598 +921300000001000000000000036e733503777873026e6c0000010001 +921380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +31599 +b6b09cca5010fbec18b00000000000000000 + + +31600 +b6b09cca5018fbece393000000918d00000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afed7403c50570003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 + + +31601 +b6b17c0a5010447014580000000000000000 +b6b1fc040000000000000000 + +31602 +c604000000010000000000000b616476616e676c6f76656e026e6c00000f0001 +c604840300010000000100000b616476616e676c6f76656e026e6c00000f0001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +31603 +b6b17c0a501844707e9d0000008bacbd000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd5b403c4edb00030000002e4e544c4d535350000100000097b200c00900090025000000050005002000000050432d3035574f524b47524f55500000 +b6b1fc040000000000000000 + +31604 +b6b09cd85011fbde181c0000000000000000 + + +31605 +08bf0000000100000000000009652d6c756e61746963026e6c0000010001 +08bf8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +31606 +dbce000000010000000000000d6175746f74656c656772616166026e6c0000010001 +dbce800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +31607 +000000007002faf085cb00000204057a01010402 +000080010000000000000000 + +31608 +b6b09cd95010fbde181b0000000000000000 + + +31609 +b6b17c185011446213ca0000000000000000 +b6b1fc140000000000000000 + +31610 +0000000070024000f4030000020405b401010402 +000080010000000000000000 + +31611 +48ef28000001000000020000026e6c00000600012439383632303662352d326234352d343935372d623035392d383438613534363434353962065f6d73646373046673316107676c67726f7570026e6c00000500ff000000000000c0140005000100000258001e0c64632d707265636973696f6e046673316107676c67726f7570026e6c00 +48efa8040000000000000000 + +31612 +b6b2661c5010fbec947a0000000000000000 +b6b2e6140000000000000000 + +31613 +ca780000000100000000000005646e732d31056c61646f74026e6c0000010001 +ca788000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31614 +fbfe0000000100000000000005646e732d32056c61646f74026e6c0000010001 +fbfe8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31615 +b6b2661c5018fbecab5e000000914100000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afed7403c50570003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 +b6b2e6140000000000000000 + +31616 +b6b17c195010446213c90000000000000000 +b6b1fc140000000000000000 + +31617 +c22800000001000000000000037777770a706c61792d6c6573626f026e6c0000010001 +c22880000001000000020002037777770a706c61792d6c6573626f026e6c0000010001c0100002000100015180000b036e7331046e732d31c01bc01000020001000151800006036e7332c033c02f000100010001518000045045a0cdc04600010001000151800004d4cceec8 + +31618 +b6b3418b5010447024090000000000000000 +b6b3c1840000000000000000 + +31619 +b6b3418b5018447033d70000008b0935000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd5b403c4edb00030000002e4e544c4d535350000100000097b200c00900090025000000050005002000000050432d3035574f524b47524f55500000 +b6b3c1840000000000000000 + +31620 +b6b2662a5011fbde93e60000000000000000 +b6b2e6240000000000000000 + +31621 +5a7600100001000000000001046d61696c076575726f6e6574026e6c00000100010000290800000080000000 +5a7680000001000000020002046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c28600430000291000000000000000 + +31622 +00000000700240000c4d0000020405b401010402 +000080010000000000000000 + +31623 +b6b3419950114462237b0000000000000000 +b6b3c1940000000000000000 + +31624 +a63b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a63b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31625 +b6b2662b5010fbde93e50000000000000000 +b6b2e6240000000000000000 + +31626 +000000007002400045b80000020405b401010402 +000080010000000000000000 + +31627 +b6b3419a50104462237a0000000000000000 +b6b3c1940000000000000000 + +31628 +b6b4f31650104470c4300000000000000000 + + +31629 +6b010000000100000000000004444e5331055348454c4c026e6c0000010001 +6b018000000100000003000004444e5331055348454c4c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +31630 +b6b42daf50104470502d0000000000000000 +b6b4ada40000000000000000 + +31631 +b6b4f3165018447077860000008b65ad000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd5b403c4edb00030000002e4e544c4d535350000100000097b200c00900090025000000050005002000000050432d3035574f524b47524f55500000 + + +31632 +b6b42daf5018447031a50000008fb8e6000000010001000000000f313238383439303138383831382d330000f900010f313238383439303138383831382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afccd403c4e4d0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 +b6b4ada40000000000000000 + +31633 +272400000001000000000000036e73340767617574656e67026e6c0000010001 +272480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31634 +0f2b00000001000000000000036e73340767617574656e67026e6c0000010001 +0f2b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31635 +2eb6000000010000000000000462617261026e6c0000ff0001 +2eb6800000010000000200020462617261026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +31636 +e65a00100001000000000001034e53320743495354524f4e024e4c00000100010000290800000080000000 +e65a80000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +31637 +b6b4f32450114462c3a20000000000000000 + + +31638 +e026000000010000000000000a666f7274697362616e6b026e6c00001c0001 +e026800000010000000300020a666f7274697362616e6b026e6c00001c0001c00c0002000100015180000f036e73310870726f7365727665c017c00c00020001000151800012036e73320970726f2d736572766502626500c00c00020001000151800006036e7333c02fc02b000100010001518000045054e055c06400010001000151800004d4ccc655 + +31639 +408f00000001000000000000036e733103686978026e6c0000010001 +408f80000001000000020002036e733103686978026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5a0da0ac0360001000100015180000451112ec3 + +31640 +5a5500000001000000000000036e733203686978026e6c0000010001 +5a5580000001000000020002036e733203686978026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d5a0da0ac00c0001000100015180000451112ec3 + +31641 +f99800000001000000000000034e53320743495354524f4e024e4c0000010001 +f99880000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +31642 +b6b42dbd501144624f9b0000000000000000 +b6b4adb40000000000000000 + +31643 +000000007002400016260000020405b401010402 +000080010000000000000000 + +31644 +b6b4f32550104462c3a10000000000000000 + + +31645 +0e68000000010000000000000742415354494f4e03415a4c026e6c0000010001 +0e68800000010000000300030742415354494f4e03415a4c026e6c0000010001c0140002000100015180000b036e7331046c756d63c018c0140002000100015180000e036e733107737572666e6574c018c01400020001000151800006036e7332c030c02c000100010001518000049158d2eac04300010001000151800004c0576a65c05d000100010001518000049158d30a + +31646 +990d00000001000000000000037777770c73616261682d626f726e656f026e6c0000010001 +990d80000001000000020000037777770c73616261682d626f726e656f026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c034 + +31647 +b6b42dbe501044624f9a0000000000000000 +b6b4adb40000000000000000 + +31648 +9b7400000001000000000000036e733103666a66026e6c0000010001 +9b7480000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31649 +d594000000010000000000000467626d6c026e6c00000f0001 +d594800000010000000300020467626d6c026e6c00000f0001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +31650 +9b7500000001000000000000036e733203666a66026e6c0000010001 +9b7580000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31651 +b6b57d3e501044700a760000000000000000 +b6b5fd340000000000000000 + +31652 +b6b57d3e501844703aa10000008f6b34000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afccd403c4e4d0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 +b6b5fd340000000000000000 + +31653 +0b8c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +0b8c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31654 +aa500000000100000000000005646e732d32056c61646f74026e6c0000010001 +aa508000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +31655 +629300000001000000000000076e6574666c6578026e6c0000010001 +629380000001000000030003076e6574666c6578026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02800010001000151800004c26d5ba8c03a00010001000151800004507f2f25c04c00010001000151800004507ede20 + +31656 +b6b57d4c5011446209e40000000000000000 +b6b5fd440000000000000000 + +31657 +00000000700240002b9e0000020405b401010402 +000080010000000000000000 + +31658 +d8e200000001000000000000046d6172730f7475696e626f757763656e7472756d026e6c0000010001 +d8e280000001000000020000046d6172730f7475696e626f757763656e7472756d026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c03b + +31659 +1eb500000001000000000000046d61696c096974732d782d747261026e6c0000010001 +1eb580000001000000020002046d61696c096974732d782d747261026e6c0000010001c0110002000100015180000a036e733103746d6ec01bc01100020001000151800006036e7332c033c02f00010001000151800004d5a0d8fac04500010001000151800004d5a0d9fa + +31660 +583900000001000000000000046d61696c096974732d782d747261026e6c0000010001 +583980000001000000020002046d61696c096974732d782d747261026e6c0000010001c0110002000100015180000a036e733103746d6ec01bc01100020001000151800006036e7332c033c02f00010001000151800004d5a0d8fac04500010001000151800004d5a0d9fa + +31661 +ba8400000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c00001c0001 +ba8480000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +31662 +132c00000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000260001 +132c80000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +31663 +5f8200000001000000000000046d61696c076575726f6e6574026e6c0000010001 +5f8280000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +31664 +f8fb0000000100000000000006636861726973026e6c00000f0001 +f8fb8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +31665 +23380000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +23388000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31666 +440200000001000000000000036e73310a74727565736572766572026e6c0000010001 +440280000001000000030003036e73310a74727565736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef8003c03d00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +31667 +220100000001000000000000036e73320a74727565736572766572026e6c0000010001 +220180000001000000030003036e73320a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004d5ef8003c00c00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +31668 +dd8000000001000000000000036e7332076e656473746174026e6c0000010001 +dd8080000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31669 +40ad00000001000000000000036e73330a74727565736572766572026e6c0000010001 +40ad80000001000000030003036e73330a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d5ef8003c04100010001000151800004d5efb004c00c00010001000151800004d5ef8005 + +31670 +b6b57d4d5010446209e30000000000000000 +b6b5fd440000000000000000 + +31671 +b6b667875010447035a40000000000000000 +b6b6e7840000000000000000 + +31672 +bda40000000100000000000003737477026e6c00000f0001 +bda48000000100000002000203737477026e6c00000f0001c00c000200010001518000070469726973c00cc00c0002000100015180000e036e733107737572666e6574c010c02400010001000151800004c3a95a82c03700010001000151800004c0576a65 + +31673 +b6b66787501844704d880000008f837b000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afccd403c4e4d0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 +b6b6e7840000000000000000 + +31674 +fc1f00000001000000000000046d61696c096d61676963626c7565026e6c0000010001 +fc1f80000001000000030003046d61696c096d61676963626c7565026e6c0000010001c0110002000100015180000e036e7331076e6574666c6578c01bc01100020001000151800006036e7332c033c01100020001000151800006036e7333c033c02f00010001000151800004c26d5ba8c04900010001000151800004507f2f25c05b00010001000151800004507ede20 + +31675 +191800000001000000000000046d61696c096d61676963626c7565026e6c00001c0001 +191880000001000000030003046d61696c096d61676963626c7565026e6c00001c0001c0110002000100015180000e036e7331076e6574666c6578c01bc01100020001000151800006036e7332c033c01100020001000151800006036e7333c033c02f00010001000151800004c26d5ba8c04900010001000151800004507f2f25c05b00010001000151800004507ede20 + +31676 +14d100000001000000000000046d61696c096d61676963626c7565026e6c0000260001 +14d180000001000000030003046d61696c096d61676963626c7565026e6c0000260001c0110002000100015180000e036e7331076e6574666c6578c01bc01100020001000151800006036e7332c033c01100020001000151800006036e7333c033c02f00010001000151800004c26d5ba8c04900010001000151800004507f2f25c05b00010001000151800004507ede20 + +31677 +505e00000001000000000000076d61696c6875620b7669616e6574776f726b73026e6c0000010001 +505e80000001000000020002076d61696c6875620b7669616e6574776f726b73026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03400010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +31678 +9ff1000000010000000000000d6f7463766964656f73616c6573026e6c0000010001 +9ff1800000010000000200010d6f7463766964656f73616c6573026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01ac04700010001000151800004c2860043 + +31679 +4e960000000100000000000006646f6e616c640a33697365727669636573026e6c0000010001 +4e968000000100000002000206646f6e616c640a33697365727669636573026e6c0000010001c0130002000100015180000b036e73310470726566c01ec01300020001000151800006036e7332c036c03200010001000151800004d5c42815c04900010001000151800004d43d485b + +31680 +fcbf0000000100000000000007636f6f6c696f7307666c6162626572026e6c0000010001 +fcbf8000000100000003000207636f6f6c696f7307666c6162626572026e6c0000010001c0140002000100015180000d036e733106776964657873c01cc01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +31681 +a26d00000001000000000000076e6f77686572650c313830736f6c7574696f6e7303636f6d097769656240686f6d65026e6c0000010001 +a26d84030001000000010000076e6f77686572650c313830736f6c7574696f6e7303636f6d097769656240686f6d65026e6c0000010001c02f00060001000038400036026e730f646f6d61696e2d7265676973747279c02f0a686f73746d6173746572c0460bf1e540000070800000384000278d0000003840 + +31682 +6ec000000001000000000000036e7334076e656473746174026e6c0000010001 +6ec080000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31683 +9b9600000001000000000000036e733103666a66026e6c0000010001 +9b9680000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31684 +9b9700000001000000000000036e733203666a66026e6c0000010001 +9b9780000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31685 +01190000000100000000000003444e42024e4c00000f0001 +01198000000100000002000003444e42024e4c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +31686 +4cbd0000000100000000000003656d76026e6c0000010001 +4cbd8000000100000002000203656d76026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c010c00c00020001000151800006036e7332c027c02400010001000151800004d4cb0e42c03f00010001000151800004d4cb1221 + +31687 +17fb0000000100000000000008686f73746e616d650462696e640000100003 +17fb8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31688 +57fc00000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +57fc80000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +31689 +218900000001000000000000036e7332076e656473746174026e6c0000010001 +218980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31690 +5e8800000001000000000000036e7334076e656473746174026e6c0000010001 +5e8880000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31691 +23380000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +23388000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31692 +23380000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +23388000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +31693 +1e3f0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +1e3f8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31694 +a8c800000001000000000000036e73310564656d6f6e026e6c00001c0001 +a8c880000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +31695 +043200000001000000000000036e73310564656d6f6e026e6c0000260001 +043280000001000000030002036e73310564656d6f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +31696 +fcf700000001000000000000036e73320564656d6f6e026e6c00001c0001 +fcf780000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +31697 +be4c00000001000000000000036e73320564656d6f6e026e6c0000260001 +be4c80000001000000030002036e73320564656d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +31698 +b13700000001000000000000036e73330564656d6f6e026e6c00001c0001 +b13780000001000000030002036e73330564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +31699 +a39500000001000000000000036e73330564656d6f6e026e6c0000260001 +a39580000001000000030002036e73330564656d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +31700 +396a00000001000000000000046e6e64690564656d6f6e026e6c0000010001 +396a80000001000000030002046e6e64690564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +31701 +4a6400000001000000000000036e733404686f6d65026e6c0000010001 +4a6480000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +31702 +1b7800000001000000000000036e733104686f6d65026e6c0000010001 +1b7880000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +31703 +7ddb00000001000000000000036e733304686f6d65026e6c0000010001 +7ddb80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +31704 +f59800000001000000000000036e733204686f6d65026e6c0000010001 +f59880000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +31705 +6eac0000000100000000000008686f7274696d6561026e6c00000f0001 +6eac8000000100000002000008686f7274696d6561026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +31706 +3849000000010000000000000e727a656f6d6e6f6e766565746d65026e6c0000010001 +3849840300010000000100000e727a656f6d6e6f6e766565746d65026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +31707 +f4f600000001000000000000076d61696c696e67086169726d696c6573026e6c0000010001 +f4f680000001000000020000076d61696c696e67086169726d696c6573026e6c0000010001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c037 + +31708 +a387000000010000000000000469632d73026e6c00000f0001 +a387800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +31709 +22ac000000010000000000000377777706747261706e61026e6c0000010001 +22ac800000010000000200020377777706747261706e61026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +31710 +7764000000010000000000000377777708776f6f6e73646167026e6c0000010001 +7764800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +31711 +164000000001000000000000037777770d70617962696c6c766973696f6e026e6c0000010001 +164084030001000000010000037777770d70617962696c6c766973696f6e026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +31712 +c95b00000001000000000000036e73330767617574656e67026e6c0000010001 +c95b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31713 +c95c00000001000000000000036e73340767617574656e67026e6c0000010001 +c95c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31714 +69630000000100000000000006657376656c64026e6c00000f0001 +69638000000100000002000206657376656c64026e6c00000f0001c00c0002000100015180000f036e7331086261726d61746f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004d5a0da96c04200010001000151800004d5a0da64 + +31715 +8df800000001000000000000036e7332076e656473746174026e6c0000010001 +8df880000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31716 +b3f70000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +b3f78000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +31717 +8df900000001000000000000036e7334076e656473746174026e6c0000010001 +8df980000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +31718 +3b2d0000000100000000000004686f6d65096b6162656c666f6f6e026e6c0000010001 +3b2d8000000100000002000204686f6d65096b6162656c666f6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7334c011c02f000100010001518000043e2d2d2cc041000100010001518000043e2d3f03 + +31719 +188d00000001000000000000066b61706e6168026e6c00000f0001 +188d80000001000000020000066b61706e6168026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02b + +31720 +1cfb0000000100000000000006776468303131066e7434616c6c026e6c0000010001 +1cfb8000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +31721 +8bab00000001000000000000036973630b636f6c6f2d756e69746564026e6c0000010001 +8bab80000001000000020002036973630b636f6c6f2d756e69746564026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0300001000100015180000452c04b07c0420001000100015180000452c04b08 + +31722 +b9360000000100000000000003777777076272616e647973026e6c0000010001 +b9368000000100000002000003777777076272616e647973026e6c0000010001c0100002000100015180000f026e73077365727665727902637a00c01000020001000151800010026e73077365727665727903636f6d00 + +31723 +6fca0000000100000000000003706f7008767575727765726b026e6c0000010001 +6fca8000000100000003000103706f7008767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +31724 +27f70000000100000000000003666f7805706c617a61026e6c0000010001 +27f78000000100000002000003666f7805706c617a61026e6c0000010001c0100002000100015180001806706c75746f320b706c617a612d696e746572036e657400c01000020001000151800009066465696d6f73c031 + +31725 +b6e9000000010000000000000b6b61617274656e687569730766756e636c6970026e6c0000010001 +b6e9800000010000000200000b6b61617274656e687569730766756e636c6970026e6c0000010001c01800020001000151800011036e7333076361706361766503636f6d00c01800020001000151800006036e7334c038 + +31726 +666400000001000000000000037777770a636476642d20636c7562026e6c0000010001 +666484030001000000010000037777770a636476642d20636c7562026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +31727 +af370000000100000000000003777777076d7262756c6c79026e6c0000010001 +af378000000100000002000003777777076d7262756c6c79026e6c0000010001c01000020001000151800014046e7335300a636f6d7075746f6f6c7302626500c01000020001000151800007046e733531c031 + +31728 +b6b667955011446235120000000000000000 +b6b6e7940000000000000000 + +31729 +f1c600000001000000000000095f6b65726265726f73045f746370026463065f6d73646373046673316107676c67726f7570026e6c0000060001 +f1c684030001000000010000095f6b65726265726f73045f746370026463065f6d73646373046673316107676c67726f7570026e6c0000060001c03200060001000038400036026e730f646f6d61696e2d7265676973747279c0320a686f73746d6173746572c0490bf1e540000070800000384000278d0000003840 + +31730 +0aac00100001000000000001036e733107737572666e6574026e6c00000100010000290800000000000000 +0aac80000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +31731 +b288000000010000000000000665636f667973026e6c00000f0001 +b288800000010000000200020665636f667973026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31732 +9cbd00000001000000000000036e733103666a66026e6c0000010001 +9cbd80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31733 +9cbe00000001000000000000036e733203666a66026e6c0000010001 +9cbe80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31734 +9cbf00000001000000000000037777770c747261666669636368616d70026e6c00001c0001 +9cbf80000001000000020000037777770c747261666669636368616d70026e6c00001c0001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +31735 +9cc200000001000000000000037777770c747261666669636368616d70026e6c00001c0001 +9cc280000001000000020000037777770c747261666669636368616d70026e6c00001c0001c0100002000100015180000a036e733103666a66c01dc01000020001000151800006036e7332c035 + +31736 +3cf700000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730d7676762d676f72696e6368656d026e6c0000060001 +3cf784030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730d7676762d676f72696e6368656d026e6c0000060001c04e00060001000038400036026e730f646f6d61696e2d7265676973747279c04e0a686f73746d6173746572c0650bf1e540000070800000384000278d0000003840 + +31737 +aace000000010000000000000d6b696e646a656f706b6f6d7374026e6c0000010001 +aace800000010000000300030d6b696e646a656f706b6f6d7374026e6c0000010001c00c0002000100015180000a036e733103797873c01ac00c00020001000151800006036e7332c032c00c00020001000151800006036e7333c032c02e00010001000151800004d5efb6dec04400010001000151800004d5efb52fc05600010001000151800004503de97c + +31738 +747c0000000100000000000003777777097965746973706f7274026e6c0000010001 +747c8403000100000001000003777777097965746973706f7274026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +31739 +016a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +016a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +31740 +65d60010000100000000000103777777056176657279026e6c00000100010000290800000080000000 +65d68000000100000002000103777777056176657279026e6c0000010001c0100002000100015180000d036e73310365647303636f6d00c01000020001000151800006036e7332c02e0000291000000000000000 + +31741 +32eb001000010000000000010a6f726967696e2d777777056176657279026e6c00000100010000290800000080000000 +32eb800000010000000200010a6f726967696e2d777777056176657279026e6c0000010001c0170002000100015180000d036e73310365647303636f6d00c01700020001000151800006036e7332c0350000291000000000000000 + +31742 +25cb00000001000000000000037777770d63616d70696e67706167696e61026e6c0000010001 +25cb80000001000000020000037777770d63616d70696e67706167696e61026e6c0000010001c01000020001000151800010036e733109696e74657264696a6bc01ec01000020001000151800006036e7332c036 + +31743 +379300000001000000000000026e730367616b026e6c0000010001 +379380000001000000020002026e730367616b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733307737669616e6564c013c00c000100010001518000048fb0b003c035000100010001518000048fb10165 + +31744 +467c00000001000000000000036e733307737669616e6564026e6c0000010001 +467c80000001000000020002036e733307737669616e6564026e6c0000010001c01000020001000151800002c00cc01000020001000151800009026e730367616bc018c00c000100010001518000048fb10165c03a000100010001518000048fb0b003 + +31745 +2c430000000100000000000003777777056176657279026e6c0000010001 +2c438000000100000002000003777777056176657279026e6c0000010001c0100002000100015180000d036e73310365647303636f6d00c01000020001000151800006036e7332c02e + +31746 +db1c000000010000000000000a6f726967696e2d777777056176657279026e6c0000010001 +db1c800000010000000200000a6f726967696e2d777777056176657279026e6c0000010001c0170002000100015180000d036e73310365647303636f6d00c01700020001000151800006036e7332c035 + +31747 +bd1500000001000000000000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730c6a666b626f73737472616174026e6c0000060001 +bd1584030001000000010000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730c6a666b626f73737472616174026e6c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +31748 +410f28000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730d7676762d676f72696e6368656d026e6c0000210001000002580028000000640cc40f676f72696e6368656d326b2d7362730d7676762d676f72696e6368656d026e6c00 +410fa8040000000000000000 + +31749 +e3c3000000010000000000000873706163657075620b666f6b6b65727370616365026e6c0000010001 +e3c3800000010000000200010873706163657075620b666f6b6b65727370616365026e6c0000010001c015000200010001518000160873706163657075620a64757463687370616365c021c0150002000100015180000b026e73026e6c036e657400c03500010001000151800004c2b2d042 + +31750 +c95f00000001000000000000036e73330767617574656e67026e6c0000010001 +c95f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31751 +c96000000001000000000000036e73340767617574656e67026e6c0000010001 +c96080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31752 +7d350000000100000000000003777777046d737473026e6c0000010001 +7d358000000100000002000203777777046d737473026e6c0000010001c01000020001000151800012036e73310b736c61636b736572766572c015c01000020001000151800006036e7332c02dc029000100010001518000043ed444c0c047000100010001518000043ed44d0a + +31753 +af6f00000001000000000000177067676d2d62656c616e67656e766572656e6967696e67026e6c0000ff0001 +af6f80000001000000030002177067676d2d62656c616e67656e766572656e6967696e67026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c024c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c03cc03800010001000151800004d4ccc0fcc06d000100010001518000043efa0703 + +31754 +000000007002faf07fea0000020405b401010402 +000080010000000000000000 + +31755 +b6b8e7615010faf00e840000000000000000 + + +31756 +b6b8e7615018faf014680000009b3a67000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af52c403c46ac00030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 + + +31757 +6ae5000000010000000000000a6970353163633837383205737065656406706c616e6574026e6c0000010001 +6ae5800000010000000300030a6970353163633837383205737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +31758 +a514000000010000000000000377777714737061616e737665726b65657273627572656175026e6c0000010001 +a514800000010000000200020377777714737061616e737665726b65657273627572656175026e6c0000010001c0100002000100015180000e026e7308636f6e6e65787573c025c01000020001000151800006036e7332c03cc03900010001000151800004c35652f1c05300010001000151800004c35652f0 + +31759 +0aa000000001000000000000037777770c6265616d6572706c616e6574026e6c0000010001 +0aa080000001000000020002037777770c6265616d6572706c616e6574026e6c0000010001c0100002000100015180001104646e733109616464766973696f6ec01dc0100002000100015180000704646e7332c036c031000100010001518000045054e242c04e000100010001518000045054e243 + +31760 +b6b8e76f5011fae20de60000000000000000 + + +31761 +b6b8e7705010fae20de50000000000000000 + + +31762 +000000007002faf0f2b90000020405b401010402 +000080010000000000000000 + +31763 +40b40000000100000000000009706574726f706c7573026e6c00000f0001 +40b48000000100000002000009706574726f706c7573026e6c00000f0001c00c00020001000151800011026e7309706574726f706c757302626500c00c00020001000151800006036e7332c02d + +31764 +9ceb00000001000000000000036e733103666a66026e6c0000010001 +9ceb80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31765 +9cec00000001000000000000036e733203666a66026e6c0000010001 +9cec80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +31766 +b6b964ca5010faf003ea0000000000000000 +b6b9e4c40000000000000000 + +31767 +de50000000010000000000000377777708776f6f6e73646167026e6c0000010001 +de50800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +31768 +b6b964ca5018faf076f60000009bce3f000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af52c403c46ac00030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 +b6b9e4c40000000000000000 + +31769 +b6b964d85011fae2034c0000000000000000 +b6b9e4d40000000000000000 + +31770 +c80600000001000000000000076e66736d697468026e6c0000ff0001 +c80680000001000000030001076e66736d697468026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +31771 +3373000000010000000000000673746174696306766961766961026e6c0000010001 +3373800000010000000200020673746174696306766961766961026e6c0000010001c01300020001000151800009026e730369736dc01ac01300020001000151800006036e7332c031c02e00010001000151800004d994ab02c04300010001000151800004d994ab03 + +31772 +b6b964d95010fae2034b0000000000000000 +b6b9e4d40000000000000000 + +31773 +000000007002faf0cbb80000020405b401010402 +000080010000000000000000 + +31774 +b6ba546e5010faf0ed430000000000000000 +b6bad4640000000000000000 + +31775 +2e2700000001000000000000036e733103757063026e6c00001c0001 +2e2780000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +31776 +b6ba546e5018faf0e7820000009b470d000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af52c403c46ac00030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 +b6bad4640000000000000000 + +31777 +493700000001000000000000036e733103757063026e6c0000260001 +493780000001000000030003036e733103757063026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +31778 +ba2e00000001000000000000036d6b77026e6c0000010001 +ba2e80000001000000020002036d6b77026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +31779 +b6ba547c5011fae2eca50000000000000000 +b6bad4740000000000000000 + +31780 +b6b667965010446235110000000000000000 +b6b6e7940000000000000000 + +31781 +b6ba547d5010fae2eca40000000000000000 +b6bad4740000000000000000 + +31782 +028c000000010000000000000770696d65646961026e6c0000010001 +028c800000010000000200020770696d65646961026e6c0000010001c00c00020001000151800010036e7331096d6173746572646e73c014c00c00020001000151800006036e7332c02cc028000100010001518000045054f347c044000100010001518000043e94a047 + +31783 +531400000001000000000000036e73350962617365667265616b026e6c0000010001 +531480000001000000030003036e73350962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31784 +531300000001000000000000036e73340962617365667265616b026e6c0000010001 +531380000001000000030003036e73340962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31785 +ef03000000010000000000000f426f6572486172746f67486f6f6674026e6c0000ff0001 +ef03800000010000000200000f426f6572486172746f67486f6f6674026e6c0000ff0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +31786 +ee1e00000001000000000000066f6265726f6e046261616e026e6c0000010001 +ee1e80000001000000020001066f6265726f6e046261616e026e6c0000010001c01300020001000151800006036e7330c013c01300020001000151800013086669726577616c6c046261616e03636f6d00c02c00010001000151800004c2955086 + +31787 +207d000000010000000000000377777707776f6f6e776562026e6c0000010001 +207d800000010000000300020377777707776f6f6e776562026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +31788 +301400000001000000000000056162632d64026e6c00000f000100 +301480000001000000020000056162632d64026e6c00000f0001c00c0002000100015180000f026e7307626f6e6e69657202736500c00c00020001000151800006036e7333c029 + +31789 +6757000000010000000000000377777709636f6d70757a6f6e65026e6c0000010001 +6757800000010000000200000377777709636f6d70757a6f6e65026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ac01000020001000151800006036e7332c032 + +31790 +15b3000000010000000000000473746572026e6c00000f0001 +15b3800000010000000200020473746572026e6c00000f0001c00c00020001000151800010066d696e6e6965066f6d726f6570c011c00c0002000100015180000805726f62696ec02cc02500010001000151800004913a1e04c04100010001000151800004913a1a34 + +31791 +58a500000001000000000000037777770a75626e2d73656c656374026e6c0000010001 +58a580000001000000020002037777770a75626e2d73656c656374026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01bc01000020001000151800006036e7332c032c02f00010001000151800004c3402003c04800010001000151800004c340202b + +31792 +92f50000000100000000000003636663056973696f6e026e6c0000010001 +92f58000000100000002000203636663056973696f6e026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c016c01000020001000151800006036e7332c02dc02a00010001000151800004c3402003c04300010001000151800004c340202b + +31793 +02db0000000100000000000009646f72647265636874086172626f756e6965026e6c0000ff0001 +02db8000000100000002000109646f72647265636874086172626f756e6965026e6c0000ff0001c01600020001000151800005026677c016c0160002000100015180000b026e73026e6c036e657400c03300010001000151800004c1430542 + +31794 +6b5d000000010000000000000d416d7261746855747265636874026e6c0000010001 +6b5d800000010000000200000d416d7261746855747265636874026e6c0000010001c00c00020001000151800012036e73310872656d6f74696f6e036e657400c00c00020001000151800006036e7333c032 + +31795 +1e9e0000000100000000000003777777046e626c63026e6c0000010001 +1e9e8000000100000002000103777777046e626c63026e6c0000010001c0100002000100015180000b036e73330473617261c015c01000020001000151800006036e7332c02dc040000100010001518000049164052f + +31796 +2d0100000001000000000000066170616368650962617365667265616b026e6c0000010001 +2d0180000001000000030003066170616368650962617365667265616b026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c03100010001000151800004c32fdc83c042000100010001518000045054f998c05400010001000151800004c16d7adb + +31797 +055600000001000000000000036e733107737572666e6574026e6c0000010001 +055680000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +31798 +705500000001000000000000036e733208676f6c64656e7873026e6c0000010001 +705580000001000000020002036e733208676f6c64656e7873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000451ab67c2c00c0001000100015180000451ab67c3 + +31799 +f1d900000001000000000000036e733208676f6c64656e7873026e6c00001c0001 +f1d980000001000000020002036e733208676f6c64656e7873026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000451ab67c2c00c0001000100015180000451ab67c3 + +31800 +69b900000001000000000000036e733108676f6c64656e7873026e6c0000010001 +69b980000001000000020002036e733108676f6c64656e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451ab67c2c03b0001000100015180000451ab67c3 + +31801 +a4a900000001000000000000036e733108676f6c64656e7873026e6c00001c0001 +a4a980000001000000020002036e733108676f6c64656e7873026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451ab67c2c03b0001000100015180000451ab67c3 + +31802 +48f428000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d73646373046673316107676c67726f7570026e6c00002100010000025800240000006400580c64632d707265636973696f6e046673316107676c67726f7570026e6c00 +48f4a8040000000000000000 + +31803 +2e2928000001000000010000024e4c0000060001064f4b42414e4b024e4c00000100010000025800040a000089 +2e29a8040000000000000000 + +31804 +498000000001000000000000067a6f6e6e6574026e6c0000010001 +498080000001000000020002067a6f6e6e6574026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000e026e7308767575727765726bc013c027000100010001518000043e3a3204c038000100010001518000043efa0202 + +31805 +bd52000000010000000000000a70696574657270617274026e6c0000ff0001 +bd52800000010000000300010a70696574657270617274026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +31806 +9a21000000010000000000000c616c6c6172646d6f6c6c6572026e6c0000010001 +9a21800000010000000200020c616c6c6172646d6f6c6c6572026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +31807 +000000007002400033180000020405b401010402 +000080010000000000000000 + +31808 +2c0d00000001000000000000037777770c726f6265636f646972656374026e6c0000010001 +2c0d80000001000000020001037777770c726f6265636f646972656374026e6c0000010001c0100002000100015180000d036e733106726f6265636fc01dc0100002000100015180000b026e73026e6c036e657400c03100010001000151800004913d1a01 + +31809 +19f00000000100000000000004616a6178066e696b686566026e6c0000010001 +19f08000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +31810 +cd9d00000001000000000000026e7307696e746f756368026e6c0000010001 +cd9d80000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +31811 +a68100000001000000000000026e7307696e746f756368026e6c00001c0001 +a68180000001000000030001026e7307696e746f756368026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +31812 +b6bc703d5010447034620000000000000000 +b6bcf0340000000000000000 + +31813 +b6bc703d50184470bc270000008b5640000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403aff88403c510800030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004f4b465330314f4b42414e4b0000 +b6bcf0340000000000000000 + +31814 +ab0b0000000100000000000002373303323035033132390231320a626c61636b686f6c657307656173796e6574026e6c0000010001 +ab0b8000000100000002000202373303323035033132390231320a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31815 +e62000000001000000000000037777770664656b757374026e6c0000010001 +e62080000001000000020002037777770664656b757374026e6c0000010001c0100002000100015180000a04646e7330026975c017c0100002000100015180000704646e7331c030c02b00010001000151800004d91a7002c04100010001000151800004d91a7103 + +31816 +b6bc704b5011446233d40000000000000000 +b6bcf0440000000000000000 + +31817 +00000000700240000f670000020405b401010402 +000080010000000000000000 + +31818 +5b2b28000001000200000000026e6c00000600010676626769736109766267696e7465726e026e6c00000500fe000000000000c01400010001000000000004be011e2c +5b2ba8040000000000000000 + +31819 +a4a300000001000000000000037777770664656b757374026e6c0000010001 +a4a380000001000000020002037777770664656b757374026e6c0000010001c0100002000100015180000a04646e7330026975c017c0100002000100015180000704646e7331c030c02b00010001000151800004d91a7002c04100010001000151800004d91a7103 + +31820 +54f1000000010000000000000872617468656e6175026e6c0000010001 +54f1800000010000000200020872617468656e6175026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c015c00c00020001000151800006036e7332c02cc02900010001000151800004d9aa2042c04200010001000151800004d9aa2c06 + +31821 +b6bc704c5010446233d30000000000000000 +b6bcf0440000000000000000 + +31822 +b6bd08a65010447078470000000000000000 +b6bd88a40000000000000000 + +31823 +0000000070024000a9bc0000020405b401010402 +000080010000000000000000 + +31824 +f05200000001000000000000037777770a706f726e706172726f74026e6c0000010001 +f05280000001000000020002037777770a706f726e706172726f74026e6c0000010001c0100002000100015180001104646e733109696e7465726f757465c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d4173f3ec04c00010001000151800004d4173f3d + +31825 +0000000070024000db0500000204059801010402 +000080010000000000000000 + +31826 +b6bd08a650184470054e0000008b5200000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403aff88403c510800030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004f4b465330314f4b42414e4b0000 +b6bd88a40000000000000000 + +31827 +fd7100000001000000000000037777770d666c6f77657273657276696365026e6c0000010001 +fd7180000001000000020002037777770d666c6f77657273657276696365026e6c0000010001c01000020001000151800011036e73320a636c75737465726e6574c01ec01000020001000151800006036e7331c036c03200010001000151800004d5f72f3cc04f000100010001518000045054edf5 + +31828 +18f5000000010000000000000467726678086d61696c73657276026e6c0000010001 +18f5800000010000000200020467726678086d61696c73657276026e6c0000010001c0110002000100015180000c026e73067574722d6978c01ac01100020001000151800006036e7332c031c02e0001000100015180000451113206c04600010001000151800004d5c42806 + +31829 +78d7000000010000000000000377777712696374666f72796f7572627573696e657373026e6c0000010001 +78d7800000010000000300030377777712696374666f72796f7572627573696e657373026e6c0000010001c0100002000100015180000c026e73067369676e6574c023c01000020001000151800006036e7331c03ac01000020001000151800006036e7332c03ac03700010001000151800004c3561242c04f00010001000151800004d915f142c06100010001000151800004d915f141 + +31830 +b6bd08b45011446277b90000000000000000 +b6bd88b40000000000000000 + +31831 +000000007002400064bd0000020405b401010402 +000080010000000000000000 + +31832 +b6be7cc050104320d0fe0000000000000000 +b6befcc40000000000000000 + +31833 +b6be7cc050184320edb00000008b052a000000010001000000000f313235343133303435303435302d330000f900010f313235343133303435303435302d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afcf2403c4e7200030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 +b6befcc40000000000000000 + +31834 +b6bdaa435010447070ff0000000000000000 + + +31835 +3e0700000001000000000000096d616e6761706f726e026e6c0000010001 +3e0780000001000000020000096d616e6761706f726e026e6c0000010001c00c00020001000151800010036e73610674696e74656c03636f6d00c00c00020001000151800006036e7362c02e + +31836 +7e7428000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730c64652d687569736b616d6572026e6c00002100010000025800260000006401850e7372766e73687569736b616d65720c64652d687569736b616d6572026e6c00 +7e74a8040000000000000000 + +31837 +b6bd08b55010446277b80000000000000000 +b6bd88b40000000000000000 + +31838 +2c4e0000000100000000000003777777086e6f746963696173026e6c0000010001 +2c4e8000000100000002000203777777086e6f746963696173026e6c0000010001c0100002000100015180000b036e73310473626970c019c01000020001000151800006036e7332c031c02d00010001000151800004d4ccecf1c04400010001000151800004c3a99564 + +31839 +b6bf1e6b50104470b7d60000000000000000 +b6bf9e640000000000000000 + +31840 +b6bdaa43501844701b0c0000008fee51000000010001000000000f313238383439303138383831382d330000f900010f313238383439303138383831382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcce403c4e4e0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 + + +31841 +31800000000100000000000006706c616e6574026e6c0000010001 +31808000000100000003000306706c616e6574026e6c0000010001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +31842 +b6bf1e6b5018447094dd0000008b0000000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403aff89403c510900030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004f4b465330314f4b42414e4b0000 +b6bf9e640000000000000000 + +31843 +b6be7cce50114312d0700000000000000000 +b6befcc40000000000000000 + +31844 +0000000070024000f0e400000204059801010402 +000080010000000000000000 + +31845 +b6bf1e7950114462b7480000000000000000 +b6bf9e740000000000000000 + +31846 +b1d800000001000000000000057069636f6e026e6c0000ff0001 +b1d880000001000000020002057069636f6e026e6c0000ff0001c00c0002000100015180000a026e730469636d63c012c00c00020001000151800006036e7332c029c026000100010001518000043e643805c03c000100010001518000043e643806 + +31847 +760d00000001000000000000036e73310b696e746572616363657373026e6c0000260001 +760d80000001000000030001036e73310b696e746572616363657373026e6c0000260001c01000020001000151800002c00cc0100002000100015180001a09756e616c72697330310a6963742d626568656572036e657400c0100002000100015180000c09756e616c7269733032c048c00c00010001000151800004c1ad2362 + +31848 +b6be7ccf50104312d06f0000000000000000 +b6befcc40000000000000000 + +31849 +b6c012365010432051660000000000000000 +b6c092340000000000000000 + +31850 +0000000070024000502d0000020405b401010402 +000080010000000000000000 + +31851 +b6bdaa5150114462706d0000000000000000 + + +31852 +b6c01236501843209f6a0000008bd4d8000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afcf2403c4e7200030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 +b6c092340000000000000000 + +31853 +b6bf1e7a50104462b7470000000000000000 +b6bf9e740000000000000000 + +31854 +000000007002400049720000020405b401010402 +000080010000000000000000 + +31855 +b6c0be4f5010447003610000000000000000 + + +31856 +d2b9000000010000000000000377777706676f666f746f026e6c0000010001 +d2b9800000010000000200020377777706676f666f746f026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c017c01000020001000151800006036e7332c02fc02b000100010001518000045054f347c047000100010001518000043e94a047 + +31857 +b6c012445011431250d80000000000000000 +b6c092440000000000000000 + +31858 +000000007002400006b200000204059801010402 +000080010000000000000000 + +31859 +fdaa00100001000000000001026e73066863636e6574026e6c00000100010000290800000080000000 +fdaa80000001000000020001026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c0310000291000000000000000 + +31860 +b6c0be4f501844704c7700000098a800000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005c03677373096d6963726f736f667403636f6d00403b3488403c86080003000000394e544c4d535350000100000097b200e00b000b002e0000000e000e00200000005352564e53485549534b414d45524445485549534b414d45520000 + + +31861 +f75900000001000000000000077765622d6c6f67026e6c0000010001 +f75980000001000000030003077765622d6c6f67026e6c0000010001c00c0002000100015180000b036e733104696c7365c014c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02cc028000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +31862 +b6bdaa5250104462706c0000000000000000 + + +31863 +b6c15b51501044705fa30000000000000000 +b6c1db540000000000000000 + +31864 +b6c0be5d5011446202c60000000000000000 + + +31865 +da110000000100000000000005666f72756d0a666966616c6561677565026e6c0000010001 +da118000000100000003000305666f72756d0a666966616c6561677565026e6c0000010001c0120002000100015180000f036e733108736572766963657ac01dc01200020001000151800006036e7332c035c01200020001000151800006036e7333c035c0310001000100015180000450f7cb0ac04c0001000100015180000450f7d401c05e00010001000151800004d5a0d7d2 + +31866 +268e00000001000000000000036e7331046372696f026e6c0000010001 +268e80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +31867 +786900000001000000000000096964636f6c6c656765026e6c00000f0001 +786980000001000000020001096964636f6c6c656765026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c016c04300010001000151800004c2860043 + +31868 +709900000001000000000000036e7332046372696f026e6c0000010001 +709980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +31869 +a56900000001000000000000037777770a72656372656174696566026e6c0000010001 +a56980000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +31870 +b6c012455010431250d70000000000000000 +b6c092440000000000000000 + +31871 +b6c242d15010432036960000000000000000 +b6c2c2d40000000000000000 + +31872 +888300000001000000000000056d61696c31076e6564636f6d70026e6c0000010001 +888380000001000000020001056d61696c31076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31873 +358b00000001000000000000056d61696c31076e6564636f6d70026e6c00001c0001 +358b80000001000000020001056d61696c31076e6564636f6d70026e6c00001c0001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31874 +964b00000001000000000000056d61696c31076e6564636f6d70026e6c0000260001 +964b80000001000000020001056d61696c31076e6564636f6d70026e6c0000260001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31875 +76eb00000001000000000000056d61696c33076e6564636f6d70026e6c0000010001 +76eb80000001000000020001056d61696c33076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31876 +9b9700000001000000000000056d61696c33076e6564636f6d70026e6c00001c0001 +9b9780000001000000020001056d61696c33076e6564636f6d70026e6c00001c0001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31877 +3ca800000001000000000000056d61696c33076e6564636f6d70026e6c0000260001 +3ca880000001000000020001056d61696c33076e6564636f6d70026e6c0000260001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +31878 +b6c15b515018447058630000008fa09f000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcce403c4e4e0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 +b6c1db540000000000000000 + +31879 +a3c70000000100000000000003667470076275696c646978026e6c0000010001 +a3c78000000100000002000203667470076275696c646978026e6c0000010001c0100002000100015180000e026e7308696e7465726c6162c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0902c04600010001000151800004d4cb0903 + +31880 +b6c242d1501843208bcc0000008bcda6000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afcf2403c4e7200030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 +b6c2c2d40000000000000000 + +31881 +b6c0be5e5010446202c50000000000000000 + + +31882 +6d410000000100000000000003777777036b6f6e026e6c0000010001 +6d418000000100000003000303777777036b6f6e026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc014c0100002000100015180000704646e7332c02dc0100002000100015180000704646e7333c02dc02800010001000151800004d44fe803c04200010001000151800004c3f5c782c05500010001000151800004d44ff303 + +31883 +3e12000000010000000000000f6d6574616c656374726f2d6f6f7374026e6c00000f0001 +3e12840300010000000100000f6d6574616c656374726f2d6f6f7374026e6c00000f0001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +31884 +000000007002400051f60000020405b401010402 +000080010000000000000000 + +31885 +95f600000001000000000000037777770a6c65756b6567616d6573026e6c0000010001 +95f680000001000000030003037777770a6c65756b6567616d6573026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +31886 +b6c242df5011431236080000000000000000 +b6c2c2d40000000000000000 + +31887 +5feb00000001000000000000036e73320564656d6f6e026e6c0000010001 +5feb80000001000000030002036e73320564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +31888 +b6c2c4ef50104470fe870000000000000000 + + +31889 +b6c15b5f501144625f110000000000000000 +b6c1db540000000000000000 + +31890 +b6c2c4ef501844709c1f000000985480000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005c03677373096d6963726f736f667403636f6d00403b3488403c86080003000000394e544c4d535350000100000097b200e00b000b002e0000000e000e00200000005352564e53485549534b414d45524445485549534b414d45520000 + + +31891 +000000007002400028970000020405b401010402 +000080010000000000000000 + +31892 +b6c242e05010431236070000000000000000 +b6c2c2e40000000000000000 + +31893 +b6c2c4fd50114462fdec0000000000000000 + + +31894 +a03b00000001000000000000076a6d6161736276026e6c00000f0001 +a03b80000001000000020000076a6d6161736276026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02c + +31895 +37d600000001000000000000037777770a66756e6e7967616d6573026e6c026e6c0000010001 +37d684030001000000010000037777770a66756e6e7967616d6573026e6c026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +31896 +9f360000000100000000000004736d747003726463026e6c0000010001 +9f368000000100000002000204736d747003726463026e6c0000010001c011000200010001518000100d7372726463303134646d7a3034c011c011000200010001518000100d7372726463303132646d7a3033c011c02900010001000151800004d973e064c04500010001000151800004d973e054 + +31897 +828d0000000100000000000004616a6178066e696b686566026e6c0000010001 +828d8000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +31898 +01c000000001000000000000096b616e676f65726f65026e6c00000f0001 +01c080000001000000020001096b616e676f65726f65026e6c00000f0001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +31899 +0000000070024000c2030000020405b401010402 +000080010000000000000000 + +31900 +372d00000001000000000000146a756e696f726b616d6572686f6f67657665656e026e6c00000f0001 +372d80000001000000020000146a756e696f726b616d6572686f6f67657665656e026e6c00000f0001c00c00020001000151800012036e733708786c736572766572036e657400c00c00020001000151800006036e7338c039 + +31901 +b6c15b60501044625f100000000000000000 +b6c1db640000000000000000 + +31902 +b6c34b44501044704ed30000000000000000 +b6c3cb440000000000000000 + +31903 +28140000000100000000000009652d6c756e61746963026e6c0000010001 +28148000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +31904 +20520000000100000000000009652d6c756e61746963026e6c0000010001 +20528000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +31905 +fd2f00100001000000000001046d61696c03777873026e6c00000100010000290800000000000000 +fd2f80000001000000030004046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a650000291000000000000000 + +31906 +b6c3f5a6501044703ddd0000000000000000 + + +31907 +b6c34b44501844702f4c0000008fb8e6000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afcce403c4e4e0003000000304e544c4d535350000100000097b208e0040004002c0000000c000c002000000044432d505245434953494f4e465331410000 +b6c3cb440000000000000000 + +31908 +b6c3f5a650184470517400000098de80000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005c03677373096d6963726f736f667403636f6d00403b3488403c86080003000000394e544c4d535350000100000097b200e00b000b002e0000000e000e00200000005352564e53485549534b414d45524445485549534b414d45520000 + + +31909 +7fc500000001000000000000026e73066863636e6574026e6c0000010001 +7fc580000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +31910 +b6c2c4fe50104462fdeb0000000000000000 + + +31911 +329f000000010000000000000d7569747a656e6462757265617506706167696e61026e6c0000010001 +329f800000010000000300030d7569747a656e6462757265617506706167696e61026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac01a00020001000151800006036e7333c01ac035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +31912 +84c80000000100000000000006617363696e74026e6c00000f0001 +84c88000000100000002000206617363696e74026e6c00000f0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c + +31913 +8e1a000000010000000000000564757075790564656d6f6e026e6c00000f0001 +8e1a800000010000000300020564757075790564656d6f6e026e6c00000f0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c0120002000100015180000f036e73320564656d6f6e036e657400c02c00010001000151800004c29f4906c03e00010001000151800004c29fb004 + +31914 +b6c3f5b4501144623d420000000000000000 + + +31915 +da2a00000001000000000000046d61696c03777873026e6c0000010001 +da2a80000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +31916 +fe3b000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000010001 +fe3b800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000010001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +31917 +b6c34b52501144624e410000000000000000 +b6c3cb540000000000000000 + +31918 +b6c3f5b5501044623d410000000000000000 + + +31919 +77540000000100000000000002373303323035033132390231320a626c61636b686f6c657307656173796e6574026e6c0000050001 +77548000000100000002000202373303323035033132390231320a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +31920 +180400000001000000000000066377696e6574026e6c0000ff0001 +180480000001000000030001066377696e6574026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc013c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c045c027000100010001518000043efa0202 + +31921 +b6c34b53501044624e400000000000000000 +b6c3cb540000000000000000 + +31922 +6b1400000001000000000000037777770d737469636874696e6767616f73026e6c0000010001 +6b1480000001000000020000037777770d737469636874696e6767616f73026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c035 + +31923 +2d0a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +2d0a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +31924 +53ba0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +53ba8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +31925 +a548000000010000000000000377777709776562706972616174026e6c0000010001 +a548800000010000000200020377777709776562706972616174026e6c0000010001c0100002000100015180000c036e7331056d756e6368c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5f73c96c04600010001000151800004d5f73c97 + +31926 +01f50000000100000000000003777374026e6c00000f0001 +01f58000000100000002000003777374026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c029 + +31927 +eb6500000001000000000000096d616e6761706f726e026e6c0000010001 +eb6580000001000000020000096d616e6761706f726e026e6c0000010001c00c00020001000151800010036e73610674696e74656c03636f6d00c00c00020001000151800006036e7362c02e + +31928 +e51d00000001000000000000057873326465026e6c00000f0001 +e51d80000001000000020002057873326465026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +31929 +bad4000000010000000000000469697367026e6c0000010001 +bad4800000010000000200020469697367026e6c0000010001c00c0002000100015180000e0b696973672d736572766572c00cc00c0002000100015180000e036e733107737572666e6574c011c02500010001000151800004c3a959c3c03f00010001000151800004c0576a65 + +31930 +b0ec00000001000000000000087769656c61617264026e6c00000f0001 +b0ec80000001000000020001087769656c61617264026e6c00000f0001c00c000200010001518000130b737061726373657276657204706c6578c015c00c0002000100015180000b026e73026e6c036e657400c02900010001000151800004c1439a0a + +31931 +3f4600000001000000000000046b6c7064026e6c00000f0001 +3f4680000001000000020000046b6c7064026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +31932 +002a00000001000000000000037777770774766e6f6f7264026e6c0000010001 +002a80000001000000020002037777770774766e6f6f7264026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c018c01000020001000151800006036e7332c02fc02c00010001000151800004c3402003c04500010001000151800004c340202b + +31933 +0dec000000010000000000000776657273696f6e0462696e640000100003 +0dec800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +31934 +074b000000010000000000000463697479026e6c00000f0001 +074b800000010000000300020463697479026e6c00000f0001c00c0002000100015180000e036e7331076e657463617374c011c00c00020001000151800006036e7332c029c00c0002000100015180000d036e7332036b706e036e657400c02500010001000151800004c2970101c03f00010001000151800004c297012d + +31935 +893100000001000000000000067667706f6875026e6c00000f0001 +893184030001000000010000067667706f6875026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +31936 +88410000000100000000000008686f73746e616d650462696e640000100003 +88418000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31937 +c6cf0000000100000000000006626f6f6d656e026e6c00000f0001 +c6cf8000000100000002000206626f6f6d656e026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +31938 +1d450000000100000000000008686f73746e616d650462696e640000100003 +1d458000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31939 +44d500000001000000000000036e733103727567026e6c0000010001 +44d580000001000000030003036e733103727567026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a65 + +31940 +43f300000001000000000000036e733203727567026e6c0000010001 +43f380000001000000030003036e733203727567026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a65 + +31941 +1e8a0000000100000000000007766462636f6d70026e6c00001c0001 +1e8a8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +31942 +0e81000000010000000000000773747564656e7403657572026e6c0000ff0001 +0e81800000010000000200020773747564656e7403657572026e6c0000ff0001c0140002000100015180000b086d61696c67617465c014c0140002000100015180000906706f70657965c014c02c0001000100015180000482730101c0430001000100015180000482730f02 + +31943 +7b39000000010000000000000a6d696e66696e6d61696c026e6c00000f0001 +7b39800000010000000200010a6d696e66696e6d61696c026e6c00000f0001c00c0002000100015180000a03646e7303756363c017c00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004c2e5670b + +31944 +08dd00000001000000000000087275677370617263046e656d6103727567026e6c0000010001 +08dd80000001000000030003087275677370617263046e656d6103727567026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004817d0406c04400010001000151800004817d040dc05600010001000151800004c0576a65 + +31945 +9cab000000010000000000000377777708776f6f6e73646167026e6c0000010001 +9cab800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +31946 +9e7200000001000000000000037777770f6d6569736a65736f6e74626c6f6f74026e6c0000010001 +9e7280000001000000020000037777770f6d6569736a65736f6e74626c6f6f74026e6c0000010001c01000020001000151800015036e73310b64656272612d61646d696e03636f6d00c01000020001000151800006036e7332c038 + +31947 +9af0000000010000000000000377777708676f6164656c6963026e6c0000010001 +9af0800000010000000200020377777708676f6164656c6963026e6c0000010001c01000020001000151800013036e73310c706f77657273657276657234c019c01000020001000151800006036e7332c031c02d0001000100015180000451047428c04c0001000100015180000451047429 + +31948 +1e3100000001000000000000037777770a64656c66746d61726b74026e6c0000010001 +1e3180000001000000020002037777770a64656c66746d61726b74026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +31949 +b5ab000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +b5ab800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +31950 +2afd0000000100000000000008686f73746e616d650462696e640000100003 +2afd8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +31951 +45df00000001000000000000037777770a6d69737465726d61696c026e6c0000010001 +45df80000001000000020002037777770a6d69737465726d61696c026e6c0000010001c0100002000100015180000b036e73310477656233c01bc01000020001000151800006036e7332c033c02f00010001000151800004d436240ec04600010001000151800004c2b262ef + +31952 +41e200000001000000000000037777770864616e69656c6c61026e6c0000010001 +41e280000001000000020002037777770864616e69656c6c61026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c019c01000020001000151800006036e7332c030c02d0001000100015180000450474002c04b0001000100015180000450474102 + +31953 +b51600000001000000000000046d61696c0862697a6d61746368026e6c0000010001 +b51680000001000000030003046d61696c0862697a6d61746368026e6c0000010001c0110002000100015180000f036e7331086e6f766178657373c01ac01100020001000151800006036e7332c032c01100020001000151800006036e7333c032c02e00010001000151800004d5c98015c04900010001000151800004d5c9bf12c05b00010001000151800004d5ef9c26 + +31954 +be5400000001000000000000046d61696c0862697a6d61746368026e6c00001c0001 +be5480000001000000030003046d61696c0862697a6d61746368026e6c00001c0001c0110002000100015180000f036e7331086e6f766178657373c01ac01100020001000151800006036e7332c032c01100020001000151800006036e7333c032c02e00010001000151800004d5c98015c04900010001000151800004d5c9bf12c05b00010001000151800004d5ef9c26 + +31955 +f4bc00000001000000000000046d61696c0862697a6d61746368026e6c0000260001 +f4bc80000001000000030003046d61696c0862697a6d61746368026e6c0000260001c0110002000100015180000f036e7331086e6f766178657373c01ac01100020001000151800006036e7332c032c01100020001000151800006036e7333c032c02e00010001000151800004d5c98015c04900010001000151800004d5c9bf12c05b00010001000151800004d5ef9c26 + +31956 +321100000001000000000000047673736d026e6c0000010001 +321180000001000000030001047673736d026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +31957 +d89400000001000000000000026e73067874646e6574026e6c00001c0001 +d89480000001000000020002026e73067874646e6574026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +31958 +0e8a00000001000000000000026e73067874646e6574026e6c0000260001 +0e8a80000001000000020002026e73067874646e6574026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +31959 +bc1300000001000000000000036b6d63026e6c0000010001 +bc1380000001000000020000036b6d63026e6c0000010001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c028 + +31960 +06910000000100000000000003777777086c6164796c696e65026e6c0000010001 +06918000000100000002000003777777086c6164796c696e65026e6c0000010001c01000020001000151800010026e73076c756b6b69656e03636f6d00c01000020001000151800006036e7332c030 + +31961 +0c8a000000010000000000000762616e6e6572730a737061617262656c6567026e6c0000010001 +0c8a800000010000000200000762616e6e6572730a737061617262656c6567026e6c0000010001c01400020001000151800015026e730d646f6d61696e6e6574776f726b02736500c01400020001000151800006036e7332c036 + +31962 +b69faca65018faf061d40000008dc500000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd1a403c4e9a00030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 + + +31963 +b69faca65018faf061d40000008dc500000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd1a403c4e9a00030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 + + +31964 +b69facb45011fae20a940000000000000000 + + +31965 +00af00000001000000000000037777770762656c73746174026e6c0000010001 +00af80000001000000020000037777770762656c73746174026e6c0000010001c0100002000100015180000f036e73310669706f77657202626500c01000020001000151800006036e7332c030 + +31966 +b69facb55010fae20a930000000000000000 + + +31967 +7bc7000000010000000000000377777703697263026e6c0000010001 +7bc7800000010000000200020377777703697263026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c014c01000020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +31968 +0f5d00000001000000000000036e73340767617574656e67026e6c0000010001 +0f5d80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31969 +bf320000000100000000000011716e2d3231332d3233312d3232382d313308717569636b6e6574026e6c0000010001 +bf328000000100000003000211716e2d3231332d3233312d3232382d313308717569636b6e6574026e6c0000010001c01e00020001000151800011036e73310a6d756c74696b6162656cc027c01e00020001000151800006036e7332c03fc01e00020001000151800014036e73300a6d756c74696b6162656c036e657400c03b0001000100015180000450f2e002c0580001000100015180000450f2e006 + +31970 +712e000000010000000000000c65766572732d6575726f7061026e6c0000010001 +712e800000010000000200000c65766572732d6575726f7061026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c030 + +31971 +0b2d000000010000000000000377777711676f6c647569747a656e64627572656175026e6c0000010001 +0b2d800000010000000200020377777711676f6c647569747a656e64627572656175026e6c0000010001c0100002000100015180001a036e733113736d616c6c686f6c642d686f7374696e672d33c022c01000020001000151800006036e7332c03ac036000100010001518000045054ed64c05c000100010001518000045054ed65 + +31972 +d17c00000001000000000000037777770973706f727473686f70026e6c0000010001 +d17c80000001000000030003037777770973706f727473686f70026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004c1adf9c3c048000100010001518000043e70ec3cc05a00010001000151800004c1ac0bae + +31973 +752f00000001000000000000086f6d76616c3132310564656d6f6e026e6c00000f0001 +752f80000001000000030002086f6d76616c3132310564656d6f6e026e6c00000f0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +31974 +553900000001000000000000036e73310564656d6f6e026e6c00001c0001 +553980000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +31975 +5c7d00000001000000000000036e73310564656d6f6e026e6c0000260001 +5c7d80000001000000030002036e73310564656d6f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +31976 +505100000001000000000000036e73320564656d6f6e026e6c00001c0001 +505180000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +31977 +a91300000001000000000000036e73320564656d6f6e026e6c0000260001 +a91380000001000000030002036e73320564656d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +31978 +91e100000001000000000000036e733208726f616473696465026e6c0000010001 +91e180000001000000020001036e733208726f616473696465026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180001108726f6164736964650564656d6f6ec019c02d00010001000151800004d973c077 + +31979 +41a800000001000000000000037777770a67736d636f7272656374026e6c0000010001 +41a880000001000000020002037777770a67736d636f7272656374026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +31980 +05fe00000001000000000000036e733109666972737466696e64026e6c0000010001 +05fe80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31981 +2f5400000001000000000000036e73330767617574656e67026e6c0000010001 +2f5480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +31982 +134000000001000000000000037777770a6b656c6465726d616e73026e6c0000010001 +134080000001000000020000037777770a6b656c6465726d616e73026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c033 + +31983 +419200000001000000000000036e733209666972737466696e64026e6c0000010001 +419280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31984 +799c00000001000000000000037777770c6265616d6572706c616e6574026e6c0000010001 +799c80000001000000020002037777770c6265616d6572706c616e6574026e6c0000010001c0100002000100015180001104646e733109616464766973696f6ec01dc0100002000100015180000704646e7332c036c031000100010001518000045054e242c04e000100010001518000045054e243 + +31985 +0a940000000100000000000003616d76026e6c00000f0001 +0a948000000100000003000103616d76026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +31986 +6bad00000001000000000000036e7332076e657463617374026e6c0000010001 +6bad80000001000000030002036e7332076e657463617374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c2970101c00c00010001000151800004c297012d + +31987 +8d6100000001000000000000036e7331076e657463617374026e6c0000010001 +8d6180000001000000030002036e7331076e657463617374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2970101c03a00010001000151800004c297012d + +31988 +a9ce00000001000000000000037777771165696e64686f76656e73646167626c6164026e6c0000010001 +a9ce80000001000000020002037777771165696e64686f76656e73646167626c6164026e6c0000010001c0100002000100015180000e036e7331076e657463617374c022c01000020001000151800006036e7332c03ac03600010001000151800004c2970101c05000010001000151800004c297012d + +31989 +f648000000010000000000000377777708776f6f6e73646167026e6c0000010001 +f648800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +31990 +baab00000001000000000000036e73340962617365667265616b026e6c0000010001 +baab80000001000000030003036e73340962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31991 +baac00000001000000000000036e73350962617365667265616b026e6c0000010001 +baac80000001000000030003036e73350962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +31992 +5af4000000010000000000000b6a6d6c706c75696a6d656e056d79776562026e6c0000010001 +5af4800000010000000200000b6a6d6c706c75696a6d656e056d79776562026e6c0000010001c018000200010001518000160b6d797765622d61757468300777616e61646f6fc01ec0180002000100015180000e0b6d797765622d6175746831c03e + +31993 +2ba60000000100000000000005657367726f026e6c00001c0001 +2ba68000000100000002000005657367726f026e6c00001c0001c00c00020001000151800013046e7233390834646e73686f737403636f6d00c00c00020001000151800007046e723430c02b + +31994 +73fa00000001000000000000036e733109666972737466696e64026e6c0000010001 +73fa80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +31995 +283b0000000100000000000003777777087370656c70756e74026e6c0000010001 +283b8000000100000002000203777777087370656c70756e74026e6c0000010001c0100002000100015180000b036e73310470696e65c019c01000020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +31996 +11d9000000010000000000000461726167026e6c00001c0001 +11d9800000010000000200000461726167026e6c00001c0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c029 + +31997 +14b10000000100000000000005626f6f6b73026e6c00000f0001 +14b18000000100000002000205626f6f6b73026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +31998 +350b00000001000000000000087369676e73686f70026e6c00000f0001 +350b80000001000000020000087369676e73686f70026e6c00000f0001c00c0002000100015180000d026e7307706167656e6963c015c00c00020001000151800006036e7332c02c + +31999 +3bb500000001000000000000056c756b61730970726f766964656e74026e6c00001c0001 +3bb580000001000000030002056c756b61730970726f766964656e74026e6c00001c0001c0120002000100015180000d036e733106776964657873c01cc01200020001000151800010036e733206776964657873036e657400c01200020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +32000 +c8440000000100000000000006736d7470303307667265656c6572026e6c0000260001 +c8448000000100000002000006736d7470303307667265656c6572026e6c0000260001c013000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0130002000100015180000e0b65766973702d6e732d3032c03b + +32001 +37990000000100000000000006736d7470303107667265656c6572026e6c00001c0001 +37998000000100000002000006736d7470303107667265656c6572026e6c00001c0001c013000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0130002000100015180000e0b65766973702d6e732d3032c03b + +32002 +cd7d00000001000000000000026e730477656233026e6c0000010001 +cd7d80000001000000020002026e730477656233026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc02800010001000151800004d436240ec03a00010001000151800004c2b262ef + +32003 +dde60000000100000000000004736d747007667265656c6572026e6c0000260001 +dde68000000100000002000004736d747007667265656c6572026e6c0000260001c011000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0110002000100015180000e0b65766973702d6e732d3032c039 + +32004 +165c0000000100000000000004736d747007667265656c6572026e6c00001c0001 +165c8000000100000002000004736d747007667265656c6572026e6c00001c0001c011000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0110002000100015180000e0b65766973702d6e732d3032c039 + +32005 +199c0000000100000000000004736d747007667265656c6572026e6c0000010001 +199c8000000100000002000004736d747007667265656c6572026e6c0000010001c011000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0110002000100015180000e0b65766973702d6e732d3032c039 + +32006 +30800000000100000000000006736d7470303707667265656c6572026e6c0000260001 +30808000000100000002000006736d7470303707667265656c6572026e6c0000260001c013000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0130002000100015180000e0b65766973702d6e732d3032c03b + +32007 +a0650000000100000000000006736d7470303607667265656c6572026e6c0000260001 +a0658000000100000002000006736d7470303607667265656c6572026e6c0000260001c013000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0130002000100015180000e0b65766973702d6e732d3032c03b + +32008 +fb0c0000000100000000000006736d7470303707667265656c6572026e6c00001c0001 +fb0c8000000100000002000006736d7470303707667265656c6572026e6c00001c0001c013000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c0130002000100015180000e0b65766973702d6e732d3032c03b + +32009 +4f4700000001000000000000026e730477656233026e6c0000260001 +4f4780000001000000020002026e730477656233026e6c0000260001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc02800010001000151800004d436240ec03a00010001000151800004c2b262ef + +32010 +c7c100000001000000000000036e73310a73686f636b6d65646961026e6c0000010001 +c7c180000001000000020002036e73310a73686f636b6d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9d6fc03d00010001000151800004d5ef9d70 + +32011 +7b4900000001000000000000036e73310a73686f636b6d65646961026e6c0000260001 +7b4980000001000000020002036e73310a73686f636b6d65646961026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9d6fc03d00010001000151800004d5ef9d70 + +32012 +fbce00000001000000000000036e73320a73686f636b6d65646961026e6c0000010001 +fbce80000001000000020002036e73320a73686f636b6d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5ef9d6fc00c00010001000151800004d5ef9d70 + +32013 +7de700000001000000000000036e73320a73686f636b6d65646961026e6c0000260001 +7de780000001000000020002036e73320a73686f636b6d65646961026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5ef9d6fc00c00010001000151800004d5ef9d70 + +32014 +4a3e000000010000000000000868657279676572730564656d6f6e026e6c00001c0001 +4a3e800000010000000300020868657279676572730564656d6f6e026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +32015 +649400000001000000000000086261726d61746f6e026e6c00000f0001 +649480000001000000020002086261726d61746f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +32016 +4a5c00000001000000000000037777770e6f6e64657277696a736465626174026e6c0000010001 +4a5c80000001000000030001037777770e6f6e64657277696a736465626174026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01fc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c051c033000100010001518000043efa0202 + +32017 +7b7b00000001000000000000036e733209666972737466696e64026e6c0000010001 +7b7b80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +32018 +7f96000000010000000000000e6d656c6b7765672d7a776f6c6c65026e6c0000010001 +7f96800000010000000300020e6d656c6b7765672d7a776f6c6c65026e6c0000010001c00c0002000100015180000d036e733106776964657873c01bc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +32019 +8d110000000100000000000003746261026e6c0000010001 +8d118000000100000003000203746261026e6c0000010001c00c0002000100015180000d036e733106776964657873c010c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c028c02400010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +32020 +054700000001000000000000037777770777616c6d617274026e6c0000010001 +054780000001000000020000037777770777616c6d617274026e6c0000010001c010000200010001518000120569646e7331066e6574736f6c03636f6d00c010000200010001518000080569646e7332c032 + +32021 +223a00100001000000000001036e7331086e6f766178657373026e6c00000100010000290800000080000000 +223a80000001000000030004036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +32022 +488000100001000000000001036e7332086e6f766178657373026e6c00000100010000290800000080000000 +488080000001000000030004036e7332086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +32023 +076a00000001000000000000036e73330767617574656e67026e6c0000010001 +076a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32024 +c46300000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b726f656465737472616174026e6c0000060001 +c46384030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b726f656465737472616174026e6c0000060001c04200060001000038400036026e730f646f6d61696e2d7265676973747279c0420a686f73746d6173746572c0590bf1e540000070800000384000278d0000003840 + +32025 +1cbf0000000100000000000015696d746563682d6d61696e74656e616e63652d6e6f026e6c00000f0001 +1cbf8000000100000002000215696d746563682d6d61696e74656e616e63652d6e6f026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc022c00c00020001000151800006036e7332c03ac03600010001000151800004c3558244c04f00010001000151800004c3558245 + +32026 +a45b000000010000000000000572656d697806706167696e61026e6c0000010001 +a45b800000010000000300030572656d697806706167696e61026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02d000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +32027 +c92200000001000000000000026e7307706167656e6963026e6c0000010001 +c92280000001000000030001026e7307706167656e6963026e6c0000010001c00f00020001000151800013026e730d7061676570726f636573736f72c017c00f00020001000151800006036e7332c02ec00f0002000100015180000d036e73320663617374656cc017c05c00010001000151800004c3558245 + +32028 +e7c800000001000000000000037777770461726d74026e6c0000010001 +e7c880000001000000020002037777770461726d74026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +32029 +ea7700100001000000000001034e53320743495354524f4e024e4c00000100010000290800000080000000 +ea7780000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +32030 +1a9c00000001000000000000046b773163026e6c00000f0001 +1a9c80000001000000020002046b773163026e6c00000f0001c00c00020001000151800018036e7331117468656e6574776f726b666163746f7279c011c00c00020001000151800006036e7332c029c02500010001000151800004d4cb0c35c04900010001000151800004d4cb0c34 + +32031 +fd1900000001000000000000095f6b65726265726f73045f746370087370696465723031026e6c0000060001 +fd1984030001000000010000095f6b65726265726f73045f746370087370696465723031026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +32032 +4010000000010000000000000377777705646f6c6c7a026e6c0000010001 +4010800000010000000200020377777705646f6c6c7a026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec016c01000020001000151800006036e7332c02ec02a00010001000151800004c3b1f203c04800010001000151800004d4ccf533 + +32033 +03e0000000010000000000000377777705626f6b6f65026e6c0000010001 +03e0800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +32034 +5c5d0000000100000000000007666f7274726f6e026e6c00000f0001 +5c5d8000000100000002000007666f7274726f6e026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +32035 +1f5500000001000000000000057370656c72026e6c0000010001 +1f5584030001000000010000057370656c72026e6c0000010001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +32036 +fe3f000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000010001 +fe3f800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000010001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +32037 +7efd0000000100000000000003777777087365616d6f756e74026e6c0000010001 +7efd8000000100000002000203777777087365616d6f756e74026e6c0000010001c01000020001000151800012036e73310b676c6f62616c7369746573c019c01000020001000151800006036e7332c031c02d00010001000151800004d4cce37ac04b00010001000151800004d94d8b0c + +32038 +474400000001000000000000095f6b65726265726f73045f756470087370696465723031026e6c0000060001 +474484030001000000010000095f6b65726265726f73045f756470087370696465723031026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +32039 +92830000000100000000000003777777086461746570616765026e6c0000010001 +92838000000100000002000203777777086461746570616765026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +32040 +9df800000001000000000000036e733103666a66026e6c0000010001 +9df880000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32041 +063b00000001000000000000036e733206726f632d6f6e026e6c0000010001 +063b80000001000000020002036e733206726f632d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b0001000100015180000491614082c00c0001000100015180000491616142 + +32042 +97c900000001000000000000036e733206726f632d6f6e026e6c0000260001 +97c980000001000000020002036e733206726f632d6f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b0001000100015180000491614082c00c0001000100015180000491616142 + +32043 +aec000000001000000000000036e733106726f632d6f6e026e6c0000010001 +aec080000001000000020002036e733106726f632d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491614082c0390001000100015180000491616142 + +32044 +2bdf00000001000000000000036e733106726f632d6f6e026e6c0000260001 +2bdf80000001000000020002036e733106726f632d6f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491614082c0390001000100015180000491616142 + +32045 +9df900000001000000000000036e733203666a66026e6c0000010001 +9df980000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32046 +8fb7000000010000000000000b6175746f6e616275757273026e6c0000010001 +8fb7800000010000000200020b6175746f6e616275757273026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c018c00c00020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +32047 +0cae00000001000000000000086577646e747330340b6f6265696e64686f76656e026e6c0000010001 +0cae80000001000000020002086577646e747330340b6f6265696e64686f76656e026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c021c00c00010001000151800004c3a91823c04300010001000151800004c0576a65 + +32048 +94bf00000001000000000000037777770d7075626c69656b77696a7a6572026e6c0000010001 +94bf80000001000000020002037777770d7075626c69656b77696a7a6572026e6c0000010001c0100002000100015180000c046d6972610470696361c01ec0100002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c057680ec04a00010001000151800004c0576a65 + +32049 +9e2200000001000000000000036e733103666a66026e6c0000010001 +9e2280000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32050 +824a00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +824a80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +32051 +9e2300000001000000000000036e733203666a66026e6c0000010001 +9e2380000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32052 +480200000001000000000000026e7306787334616c6c026e6c00001c0001 +480280000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +32053 +a68000000001000000000000026e7306787334616c6c026e6c0000260001 +a68080000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +32054 +255700000001000000000000036e733206787334616c6c026e6c00001c0001 +255780000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +32055 +9d0400000001000000000000036e733206787334616c6c026e6c0000260001 +9d0480000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +32056 +6c3d00000001000000000000157665726b656572737363686f6f6c76646265726768026e6c0000010001 +6c3d80000001000000020001157665726b656572737363686f6f6c76646265726768026e6c0000010001c00c0002000100015180000a036e733303777873c022c00c00020001000151800006036e7334c03ac04c00010001000151800004d5ef9a65 + +32057 +f3f200000001000000000000034e53320743495354524f4e024e4c0000010001 +f3f280000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +32058 +7f880000000100000000000005646e732d32056c61646f74026e6c0000010001 +7f888000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32059 +1e9500000001000000000000067363616e6961026e6c00000f0001 +1e9580000001000000020001067363616e6961026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c013c04000010001000151800004c2860043 + +32060 +c06f00000001000000000000037777770877696a62656e6761026e6c0000010001 +c06f80000001000000020000037777770877696a62656e6761026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c033 + +32061 +9e2000000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +9e2080000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +32062 +eaca000000010000000000001c67736d636f72726563742d6d6f6269656c652d74656c65666f6f6e73026e6c0000010001 +eaca800000010000000200001c67736d636f72726563742d6d6f6269656c652d74656c65666f6f6e73026e6c0000010001c00c0002000100015180000a036e7331036c7731c029c00c00020001000151800006036e7332c041 + +32063 +5a39000000010000000000000c7573732d776f726b77656172026e6c00000f0001 +5a39800000010000000200000c7573732d776f726b77656172026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +32064 +df0300000001000000000000037777770e62656472696a667374656e6e69730d616661732d736f667477617265026e6c0000010001 +df0380000001000000020000037777770e62656472696a667374656e6e69730d616661732d736f667477617265026e6c0000010001c01f00020001000151800011036e733005736572766502636f02756b00c01f00020001000151800010036e7330057365727665036e6574c04e + +32065 +d670000000010000000000000377777706637261736163026e6c0000010001 +d670800000010000000200000377777706637261736163026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +32066 +0f9400000001000000000000036e73330767617574656e67026e6c0000010001 +0f9480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32067 +957200000001000000000000036e733303777873026e6c0000010001 +957280000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +32068 +2585000000010000000000000377777707666f726d69646f026e6c0000010001 +2585800000010000000300030377777707666f726d69646f026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c3f13ceec04800010001000151800004c372eb43c05a000100010001518000043e320e8f + +32069 +81e300000001000000000000036e7332117468656e6574776f726b666163746f7279026e6c00001c0001 +81e380000001000000020002036e7332117468656e6574776f726b666163746f7279026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03600010001000151800004d4cb0c35c00c00010001000151800004d4cb0c34 + +32070 +9b8700000001000000000000036e7331117468656e6574776f726b666163746f7279026e6c00001c0001 +9b8780000001000000020002036e7331117468656e6574776f726b666163746f7279026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cb0c35c04400010001000151800004d4cb0c34 + +32071 +f6ba00000001000000000000037777770b68696b696e672d73697465026e6c0000010001 +f6ba80000001000000020002037777770b68696b696e672d73697465026e6c0000010001c0100002000100015180000a036e7331036e7873c01cc01000020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +32072 +60dc0000000100000000000003777777096d6172676172657468026e6c0000010001 +60dc8000000100000002000003777777096d6172676172657468026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c032 + +32073 +4e98000000010000000000000377777706676f6f67656c026e6c0000010001 +4e98800000010000000200020377777706676f6f67656c026e6c0000010001c0100002000100015180000a036e7331036e7873c017c01000020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +32074 +2bbf00000001000000000000036e73320763697374726f6e026e6c0000010001 +2bbf80000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +32075 +52970000000100000000000005656e65636f026e6c00000f0001 +52978000000100000002000205656e65636f026e6c00000f0001c00c0002000100015180000c04646e73310470696e73c012c00c0002000100015180000704646e7332c02bc02600010001000151800004d9c26101c03e00010001000151800004d9c26002 + +32076 +4b0400000001000000000000037777770762656c6368656d026e6c0000010001 +4b0484030001000000010000037777770762656c6368656d026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +32077 +8d6700000001000000000000046d61696c05626f736d61026e6c0000010001 +8d6780000001000000020002046d61696c05626f736d61026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c017c01100020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +32078 +a88e00000001000000000000046d61696c05626f736d61026e6c00001c0001 +a88e80000001000000020002046d61696c05626f736d61026e6c00001c0001c01100020001000151800012036e73310b7669616e6574776f726b73c017c01100020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +32079 +2ea2000000010000000000000462757267026e6c0000010001 +2ea2800000010000000200020462757267026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +32080 +06e200000001000000000000037777770768657364617364026e6c0000010001 +06e284030001000000010000037777770768657364617364026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +32081 +ac9800000001000000000000036d78310464697661026e6c0000010001 +ac9880000001000000020000036d78310464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +32082 +6cf60000000100000000000009636f6d6d706f6f7274096369746f67726f6570026e6c0000010001 +6cf68000000100000002000209636f6d6d706f6f7274096369746f67726f6570026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000e036e733107737572666e6574c020c03400010001000151800004c3a93002c04500010001000151800004c0576a65 + +32083 +827000000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +827080000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +32084 +37a400000001000000000000036e73340767617574656e67026e6c0000010001 +37a480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32085 +1faf00000001000000000000036e73340767617574656e67026e6c0000010001 +1faf80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32086 +178c00000001000000000000036e73330767617574656e67026e6c0000010001 +178c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32087 +00940000000100000000000009652d6c756e61746963026e6c0000010001 +00948000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +32088 +549a000000010000000000000a6d6f6e69746f72696e6706776964657873026e6c00000f0001 +549a800000010000000300020a6d6f6e69746f72696e6706776964657873026e6c00000f0001c01700020001000151800006036e7331c017c01700020001000151800010036e733206776964657873036e657400c01700020001000151800006036e7333c017c03200010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +32089 +1c0d00000001000000000000036e73310573796e6574026e6c0000010001 +1c0d80000001000000020002036e73310573796e6574026e6c0000010001c0100002000100015180000a036e73310373796ec016c01000020001000151800006036e7332c02ec02a00010001000151800004d4ccc0dbc04000010001000151800004d4ccc0dc + +32090 +1bd00000000100000000000004646e73310470696e73026e6c0000010001 +1bd08000000100000002000204646e73310470696e73026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9c26101c03800010001000151800004d9c26002 + +32091 +e515000000010000000000000c65766572732d6575726f7061026e6c00000f0001 +e515800000010000000200000c65766572732d6575726f7061026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c030 + +32092 +b23c00100001000000000001086a766d347265616c06787334616c6c026e6c00000100010000290800000080000000 +b23c80000001000000030003086a766d347265616c06787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d09630000291000000000000000 + +32093 +758c00000001000000000000036e7331077472696f646573026e6c0000010001 +758c80000001000000020002036e7331077472696f646573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c9d865c03a00010001000151800004d5c9d866 + +32094 +a01f0010000100000000000105646e732d32056c61646f74026e6c00000100010000290800000000000000 +a01f8000000100000002000105646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c0320000291000000000000000 + +32095 +f7e70010000100000000000105646e732d31056c61646f74026e6c00000100010000290800000000000000 +f7e78000000100000002000105646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c0320000291000000000000000 + +32096 +964900000001000000000000086a766d347265616c06787334616c6c026e6c0000010001 +964980000001000000030002086a766d347265616c06787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +32097 +a0e800000001000000000000036e733107626265796f6e64026e6c0000010001 +a0e880000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +32098 +4f4f00000001000000000001036e73320f444f4d41494e2d5245474953545259024e4c00001c00010000291000000000000000 +4f4f80000001000000030003036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +32099 +650400000001000000000001036e733107737572666e6574024e4c00001c00010000291000000000000000 +650480000001000000040004036e733107737572666e6574024e4c00001c0001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +32100 +d33400000001000000000001026e730f444f4d41494e2d5245474953545259024e4c00001c00010000291000000000000000 +d33480000001000000030003026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a650000291000000000000000 + +32101 +e7c800000001000000000001034e53330f444f4d41494e2d5245474953545259024e4c00001c00010000291000000000000000 +e7c880000001000000030003034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +32102 +352b0000000100000000000004706f70330873796c746d6f6465026e6c0000010001 +352b8000000100000002000204706f70330873796c746d6f6465026e6c0000010001c01100020001000151800010036e733109756e69736572766572c01ac01100020001000151800006036e7332c032c02e00010001000151800004c3454b03c04a00010001000151800004d119a2fa + +32103 +401a00000001000000000000047072693103646e73067073696e6574026e6c0000260001 +401a80000001000000030003047072693103646e73067073696e6574026e6c0000260001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +32104 +104200000001000000000000047072693303646e73067073696e6574026e6c0000260001 +104280000001000000030003047072693303646e73067073696e6574026e6c0000260001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +32105 +413a000000010000000000000377777703686931026e6c0000010001 +413a800000010000000200000377777703686931026e6c0000010001c01000020001000151800010036e73310673697465347503636f6d00c01000020001000151800006036e7332c02c + +32106 +814300000001000000000000047072693203646e73067073696e6574026e6c0000260001 +814380000001000000030003047072693203646e73067073696e6574026e6c0000260001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +32107 +7a9300000001000000000000037777770873706f72746f6e65026e6c0000010001 +7a9380000001000000020002037777770873706f72746f6e65026e6c0000010001c0100002000100015180000a036e7331036e7873c019c01000020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +32108 +827800000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +827880000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +32109 +bd7100000001000000000000036e73310974656c656b6162656c026e6c0000010001 +bd7180000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +32110 +cf7400000001000000000000046e733032066368656c6c6f026e6c0000010001 +cf7480000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +32111 +a2e300000001000000000000026e730a636f6d7075747261696e026e6c0000010001 +a2e380000001000000020001026e730a636f6d7075747261696e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7334036b706e036e657400c00c00010001000151800004c297b902 + +32112 +c174000000010000000000000a73746f66666572696e671264756f2d746f7461616c2d70726f6a656374026e6c0000010001 +c174800000010000000200020a73746f66666572696e671264756f2d746f7461616c2d70726f6a656374026e6c0000010001c0170002000100015180000a036e733103696166c02ac01700020001000151800006036e7332c042c03e000100010001518000045059e040c054000100010001518000045059ee03 + +32113 +03400000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +03408000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32114 +3088000000010000000000000649535241454c024e4c0000010001 +3088800000010000000200020649535241454c024e4c0000010001c00c00020001000151800011026e730b666163696e676661637473c013c00c00020001000151800006036e7332c02ac02700010001000151800004d513b013c04400010001000151800004d513b012 + +32115 +cd92000000010000000000000869766f6e69656865026e6c0000010001 +cd92800000010000000200000869766f6e69656865026e6c0000010001c00c0002000100015180000d036e733103326d6203636f6d00c00c00020001000151800006036e7332c02d + +32116 +fa5300000001000000000000095f6b65726265726f73045f74637006656c696e6574026e6c0000060001 +fa5384030001000000010000095f6b65726265726f73045f74637006656c696e6574026e6c0000060001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +32117 +e18c000000010000000000000c74616c6c65726576656e7473026e6c00000f0001 +e18c800000010000000200020c74616c6c65726576656e7473026e6c00000f0001c00c0002000100015180000e04646e733106666f7263657ac019c00c0002000100015180000704646e7332c032c02d00010001000151800004d994af13c04700010001000151800004d994af1a + +32118 +be54000000010000000000000777616e61646f6f026e6c00000f0001 +be54800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +32119 +b80100000001000000000000026e73076575726f6e6574026e6c0000010001 +b80180000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +32120 +8eab000000010000000000000c636f6c6c6567657374796c65026e6c0000010001 +8eab800000010000000200010c636f6c6c6567657374796c65026e6c0000010001c00c0002000100015180000a036e733303777873c019c00c00020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +32121 +b5c9000000010000000000000377777708776f657374796e65026e6c0000010001 +b5c9800000010000000200020377777708776f657374796e65026e6c0000010001c01000020001000151800009026e7303697873c019c01000020001000151800006036e7332c030c02d00010001000151800004d4f13ff8c04200010001000151800004d4f13ff9 + +32122 +94d4000000010000000000000b616f2d7365727669636573026e6c0000010001 +94d4800000010000000200020b616f2d7365727669636573026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c018c00c00020001000151800006036e7331c02fc02c00010001000151800004504f6101c04600010001000151800004504f6102 + +32123 +f05600000001000000000000036e73310764696a6b6d6174026e6c0000010001 +f05680000001000000020002036e73310764696a6b6d6174026e6c0000010001c01000020001000151800002c00cc0100002000100015180000d036e733206787334616c6cc018c00c00010001000151800004507fba3ac03a00010001000151800004c26d0963 + +32124 +03400000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +03408000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32125 +4f4f00000001000000000000036e73320f444f4d41494e2d5245474953545259024e4c00001c0001 +4f4f80000001000000030002036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32126 +22bd00000001000000000000037777770a64657374617274657273026e6c0000010001 +22bd80000001000000020000037777770a64657374617274657273026e6c0000010001c0100002000100015180000f036e7331053132337873036e657400c01000020001000151800006036e7332c033 + +32127 +650400000001000000000000036e733107737572666e6574024e4c00001c0001 +650480000001000000040003036e733107737572666e6574024e4c00001c0001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +32128 +03400000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +03408000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32129 +f1500100000100000000000004616a6178066e696b686566026e6c0000010001 +f1508100000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +32130 +d33400000001000000000000026e730f444f4d41494e2d5245474953545259024e4c00001c0001 +d33480000001000000030002026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +32131 +2dcf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2dcf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32132 +e7c800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +e7c880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32133 +1db90000000100000000000008686f73746e616d650462696e640000100003 +1db98000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32134 +d6c300000001000000000000037777770a6d6f6c6c696765736578026e6c0000010001 +d6c380000001000000020000037777770a6d6f6c6c696765736578026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +32135 +4ace0000000100000000000005646e732d31056c61646f74026e6c0000010001 +4ace8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32136 +2dd00000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dd08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32137 +1e1f0000000100000000000004686f6d65066863636e6574026e6c0000010001 +1e1f8000000100000002000004686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +32138 +16d90000000100000000000005646e732d31056c61646f74026e6c0000010001 +16d98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32139 +80230000000100000000000005646e732d32056c61646f74026e6c0000010001 +80238000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32140 +432000000001000000000000036e733103677673026e6c00001c0001 +432080000001000000020002036e733103677673026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e1aac03600010001000151800004d4ccc646 + +32141 +c28c00000001000000000000036e733203677673026e6c00001c0001 +c28c80000001000000020002036e733203677673026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000045054e1aac00c00010001000151800004d4ccc646 + +32142 +88d500000001000000000000046d61696c05626f736d61026e6c0000010001 +88d580000001000000020002046d61696c05626f736d61026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c017c01100020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +32143 +04e400000001000000000000046d61696c05626f736d61026e6c00001c0001 +04e480000001000000020002046d61696c05626f736d61026e6c00001c0001c01100020001000151800012036e73310b7669616e6574776f726b73c017c01100020001000151800006036e7332c02fc02b00010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +32144 +05f100000001000000000000046e73303803777873026e6c0000010001 +05f180000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32145 +c0f100000001000000000000046e73303803777873026e6c0000260001 +c0f180000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32146 +72d10000000100000000000008686f73746e616d650462696e640000100003 +72d18000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32147 +3ad900000001000000000000076e73617574683303626974026e6c0000260001 +3ad980000001000000030003076e73617574683303626974026e6c0000260001c0140002000100015180000a076e736175746831c014c0140002000100015180000a076e736175746832c014c01400020001000151800002c00cc02c00010001000151800004d5880c33c04200010001000151800004d5880c3bc00c00010001000151800004d4ccc00b + +32148 +989500000001000000000000076e73617574683203626974026e6c0000260001 +989580000001000000030003076e73617574683203626974026e6c0000260001c0140002000100015180000a076e736175746831c014c01400020001000151800002c00cc0140002000100015180000a076e736175746833c014c02c00010001000151800004d5880c33c00c00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +32149 +15fc00000001000000000000076e73617574683103626974026e6c0000260001 +15fc80000001000000030003076e73617574683103626974026e6c0000260001c01400020001000151800002c00cc0140002000100015180000a076e736175746832c014c0140002000100015180000a076e736175746833c014c00c00010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +32150 +3cf600000001000000000000037777770f6d6569736a65736f6e74626c6f6f74026e6c0000010001 +3cf680000001000000020000037777770f6d6569736a65736f6e74626c6f6f74026e6c0000010001c01000020001000151800015036e73310b64656272612d61646d696e03636f6d00c01000020001000151800006036e7332c038 + +32151 +c67a000000010000000000000a67617a6f63656e747261026e6c0000010001 +c67a800000010000000200000a67617a6f63656e747261026e6c0000010001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02f + +32152 +5a1e00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +5a1e80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32153 +36aa000000010000000000000762736d74702d3108636f6e6365707473026e6c0000010001 +36aa800000010000000200020762736d74702d3108636f6e6365707473026e6c0000010001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c + +32154 +5860000000010000000000000762736d74702d3108636f6e6365707473026e6c00001c0001 +5860800000010000000200020762736d74702d3108636f6e6365707473026e6c00001c0001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c + +32155 +e2cc0000000100000000000003616c68026e6c00000f0001 +e2cc8000000100000002000103616c68026e6c00000f0001c00c00020001000151800010036e7331096c65617365706c616ec010c00c0002000100015180000b026e73026e6c036e657400c02400010001000151800004c286e702 + +32156 +358b00000001000000000000037777770a6d657562656c7475696e026e6c0000010001 +358b80000001000000020000037777770a6d657562656c7475696e026e6c0000010001c0100002000100015180000f046e7330310464736e6c036e657400c01000020001000151800007046e733032c034 + +32157 +875a0000000100000000000007766f732d776870026e6c0000060001 +875a8403000100000001000007766f732d776870026e6c0000060001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +32158 +300b000000010000000000000672656c6179330b7669616e6574776f726b73026e6c0000010001 +300b800000010000000200020672656c6179330b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +32159 +23a20000000100000000000003777777056d6f72656c026e6c0000010001 +23a28000000100000003000303777777056d6f72656c026e6c0000010001c01000020001000151800012026e730c6d65646961636f6e6e656374c016c01000020001000151800013036e73320c776f726c64636f6e6e656374c016c01000020001000151800006036e7333c04cc02a00010001000151800004d5ef9b8bc04800010001000151800004d5ef9b85c06700010001000151800004d5ef8005 + +32160 +c33200000001000000000000026763065f6d7364637307766f732d776870026e6c0000060001 +c33284030001000000010000026763065f6d7364637307766f732d776870026e6c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +32161 +a6d90000000100000000000005646e732d32056c61646f74026e6c0000010001 +a6d98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32162 +94670000000100000000000005646e732d31056c61646f74026e6c0000010001 +94678000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32163 +5e33000000010000000000000b6b6f6f707362656464656e026e6c00000f0001 +5e33800000010000000200020b6b6f6f707362656464656e026e6c00000f0001c00c00020001000151800011026e730b6973642d686f6c6c616e64c018c00c00020001000151800006036e7332c02fc02c00010001000151800004d5e38d0ac04900010001000151800004d5e38205 + +32164 +08bd00000001000000000000096879706f746865656b0a6c65756b657374617274026e6c0000010001 +08bd80000001000000030003096879706f746865656b0a6c65756b657374617274026e6c0000010001c0160002000100015180000c036e7331056d61786573c021c01600020001000151800006036e7332c039c01600020001000151800006036e7333c039c035000100010001518000045045402ec04d000100010001518000045045402fc05f000100010001518000045045440a + +32165 +940400000001000000000000046d61696c0642415257494c024e4c0000010001 +940480000001000000020002046d61696c0642415257494c024e4c0000010001c01100020001000151800010036e733109686f73746e65746276c018c01100020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +32166 +d16100000001000000000000096e61747572616c6973036e6e6d026e6c00000f0001 +d16180000001000000020002096e61747572616c6973036e6e6d026e6c00000f0001c01600020001000151800013036e73310c636f6c742d74656c65636f6dc01ac01600020001000151800006036e7332c032c02e00010001000151800004d44ea00dc04d00010001000151800004d44ea00e + +32167 +04f20000000100000000000003777777076e6574706f6c6c026e6c0000010001 +04f28000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +32168 +fc8700000001000000000000037777770d747261666669636265616d6572026e6c0000010001 +fc8780000001000000020002037777770d747261666669636265616d6572026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ec01000020001000151800006036e7332c036c03200010001000151800004d5efa404c04f00010001000151800004d5efa405 + +32169 +f26800000001000000000000036e733103736369036b756e024e4c00001c0001 +f26880000001000000030003036e733103736369036b756e024e4c00001c0001c0140002000100015180000f08636170796261726103756369c014c01400020001000151800002c00cc0140002000100015180000e036e733107737572666e6574c018c02c0001000100015180000483ae3c15c00c0001000100015180000483aee004c05500010001000151800004c0576a65 + +32170 +72c3000000010000000000000631326d6f7665026e6c00000f0001 +72c3800000010000000300020631326d6f7665026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +32171 +3b7b00000001000000000000037777770a766f6963656f76657273026e6c0000010001 +3b7b80000001000000020000037777770a766f6963656f76657273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +32172 +5865000000010000000000000563696e64790c616374697665646f6d61696e026e6c0000010001 +5865800000010000000300000563696e64790c616374697665646f6d61696e026e6c0000010001c01200020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01200020001000151800006036e7332c037c01200020001000151800006036e7333c037 + +32173 +586600000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +586680000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +32174 +285b00000001000000000000077365727665723103747763026e6c0000010001 +285b80000001000000020002077365727665723103747763026e6c0000010001c01400020001000151800012036e73310b7669616e6574776f726b73c018c01400020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +32175 +a11200000001000000000000036e733404686f6d65026e6c0000010001 +a11280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +32176 +ff44000000010000000000000f646f6d61696e2d7265676973747279026e6c0000010001 +ff44800000010000000300020f646f6d61696e2d7265676973747279026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c01cc00c0002000100015180000b026e73026e6c036e657400c03000010001000151800004c1b09002c04100010001000151800004c0576a65 + +32177 +3077000000010000000000000a62657272796672657368026e6c0000010001 +3077800000010000000200010a62657272796672657368026e6c0000010001c00c0002000100015180000e036e733107626c7565646e73c017c00c00020001000151800006036e7334c02fc02b00010001000151800004d5c401c0 + +32178 +fc4400000001000000000000037777770668617362726f026e6c0000010001 +fc4480000001000000020000037777770668617362726f026e6c0000010001c01000020001000151800018036e73310e66696e616c2d66726f6e74696572036e657400c01000020001000151800006036e7332c02f + +32179 +eea700000001000000000000037777770a6c6f63617469656e6574026e6c0000010001 +eea780000001000000020002037777770a6c6f63617469656e6574026e6c0000010001c0100002000100015180000b036e733104696e666fc01bc01000020001000151800006036e7332c033c02f00010001000151800004504fc020c04600010001000151800004504fc021 + +32180 +32e800000001000000000000046d61696c086e65646c696e7578026e6c0000010001 +32e880000001000000030003046d61696c086e65646c696e7578026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02e00010001000151800004d5ef87d2c04000010001000151800004d5ef87d3c05200010001000151800004d5ef8005 + +32181 +7677000000010000000000000377777709666375747265636874026e6c0000010001 +7677800000010000000200000377777709666375747265636874026e6c0000010001c0100002000100015180000e026e730571666c6578036e657400c01000020001000151800006036e7332c031 + +32182 +04c800000001000000000000066163686d6561026e6c00000f0001 +04c880000001000000030003066163686d6561026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c013c00c000200010001518000070470726932c02cc00c000200010001518000070470726933c02cc027000100010001518000049a0ff9a6c045000100010001518000049a0ff9aac058000100010001518000049a0ff9ae + +32183 +576000000001000000000000036e733203757063026e6c0000010001 +576080000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +32184 +c67c0000000100000000000006746963617361026e6c00000f0001 +c67c8000000100000003000206746963617361026e6c00000f0001c00c00020001000151800015036e73310e666c6578776562686f7374696e67c013c00c00020001000151800006036e7332c02bc00c00020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02700010001000151800004cf2cd7adc0480001000100015180000452c04365 + +32185 +f83b0000000100000000000006756e69717565026e6c00000f0001 +f83b8000000100000003000306756e69717565026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc02700010001000151800004c2a55e5ac04300010001000151800004c356781cc055000100010001518000043ec58016 + +32186 +f7cc000000010000000000000773616e7175696e026e6c0000010001 +f7cc800000010000000300000773616e7175696e026e6c0000010001c00c00020001000151800013036e7331096a61636f62736e657403636f6d00c00c00020001000151800006036e7332c02cc00c00020001000151800012046e73303107696e746f756368036e657400 + +32187 +745900000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730a706f6d706f656e2d6d6d026e6c0000060001 +745984030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730a706f6d706f656e2d6d6d026e6c0000060001c04f00060001000038400036026e730f646f6d61696e2d7265676973747279c04f0a686f73746d6173746572c0660bf1e540000070800000384000278d0000003840 + +32188 +525400000001000000000000037777770c706f77657270617373696f6e026e6c0000010001 +525480000001000000020002037777770c706f77657270617373696f6e026e6c0000010001c0100002000100015180000c04646e73310471776562c01dc0100002000100015180000704646e7332c036c03100010001000151800004d994ac0cc04900010001000151800004d5c42f6c + +32189 +485e0000000100000000000003777873026e6c00000f0001 +485e8000000100000003000303777873026e6c00000f0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32190 +000328000001000200000000026e6c0000060001067a376a3867370e6575726f6c696e656f6e6c696e65026e6c00000500fe000000000000c014000100010000000000040a0000e5 +0003a8040000000000000000 + +32191 +9c4000000001000000000000037777770d766c696567746172696576656e026e6c0000010001 +9c4080000001000000020002037777770d766c696567746172696576656e026e6c0000010001c0100002000100015180000e036e733007656173796e6574c01ec01000020001000151800006036e7331c036c03200010001000151800004c2a55e01c04c00010001000151800004c2a55e05 + +32192 +726128000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730a706f6d706f656e2d6d6d026e6c00002100010000025800200000006400580a706f6d706f656d2d6d6d0a706f6d706f656e2d6d6d026e6c00 +7261a8040000000000000000 + +32193 +464200000001000000000000036e7331026973026e6c0000010001 +464280000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +32194 +3fa00000000100000000000003777777066e6179757461026e6c0000010001 +3fa08000000100000002000203777777066e6179757461026e6c0000010001c01000020001000151800006036e7336c010c01000020001000151800006036e7335c010c02b0001000100015180000451144410c03d000100010001518000043dd5ab66 + +32195 +584100000001000000000000037777770a676f6d6167617a696e65026e6c0000010001 +584180000001000000020002037777770a676f6d6167617a696e65026e6c0000010001c01000020001000151800013036e73310c636f6c742d74656c65636f6dc01bc01000020001000151800006036e7332c033c02f00010001000151800004d44ea00dc04e00010001000151800004d44ea00e + +32196 +e3d700000001000000000000067372763031320b66726565686f7374696e67026e6c0000ff0001 +e3d780000001000000020000067372763031320b66726565686f7374696e67026e6c0000ff0001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c039 + +32197 +000000007002faf0b64800000204057a01010402 +000080010000000000000000 + +32198 +52660000000100000000000006706f65747279026e6c0000010001 +52668000000100000002000206706f65747279026e6c0000010001c00c00020001000151800009036e7331026b77c013c00c00020001000151800006036e7332c02bc0270001000100015180000451113b08c03c00010001000151800004d4ccdb20 + +32199 +b6c93a3c5010fbecf0c00000000000000000 +b6c9ba340000000000000000 + +32200 +b6c93a3c5018fbecb7d2000000934464000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9e3403c4b630003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 +b6c9ba340000000000000000 + +32201 +6a6b00000001000000000001036e73350f646f6d61696e2d7265676973747279026e6c00000100010000291000000000000000 +6a6b80000001000000030003036e73350f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +32202 +0c4800000001000000000001036e73320f646f6d61696e2d7265676973747279026e6c00000100010000291000000000000000 +0c4880000001000000030003036e73320f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +32203 +a8b700000001000000000001026e730f646f6d61696e2d7265676973747279026e6c00000100010000291000000000000000 +a8b780000001000000030003026e730f646f6d61696e2d7265676973747279026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a650000291000000000000000 + +32204 +b6c93a4a5011fbdef02a0000000000000000 +b6c9ba440000000000000000 + +32205 +000000007002faf0c71200000204057a01010402 +000080010000000000000000 + +32206 +b6c93a4b5010fbdef0290000000000000000 +b6c9ba440000000000000000 + +32207 +759000000001000000000000077472616e736d6f026e6c0000010001 +759080000001000000020002077472616e736d6f026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +32208 +3ca100000001000000000000037777770777616c6d617274026e6c0000010001 +3ca180000001000000020000037777770777616c6d617274026e6c0000010001c010000200010001518000120569646e7331066e6574736f6c03636f6d00c010000200010001518000080569646e7332c032 + +32209 +b6c9f1515010fbec4a750000000000000000 + + +32210 +6188000000010000000000000f67696e6b656c2d7365727669636573026e6c00000f0001 +6188800000010000000200000f67696e6b656c2d7365727669636573026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c036 + +32211 +b6c9f1515018fbec5e5f00000093f88c000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9e3403c4b630003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 + + +32212 +59790000000100000000000007712d64616e6365026e6c00001c0001 +59798000000100000002000007712d64616e6365026e6c00001c0001c00c0002000100015180000e036e73300470707365036e657400c00c00020001000151800006036e7331c02c + +32213 +b6c9f15f5011fbde49df0000000000000000 + + +32214 +ea5f000000010000000000000f67696e6b656c2d7365727669636573026e6c00000f0001 +ea5f800000010000000200000f67696e6b656c2d7365727669636573026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c036 + +32215 +81ad0000000100000000000009656967656e2d776567026e6c00000f0001 +81ad8000000100000002000009656967656e2d776567026e6c00000f0001c00c0002000100015180000c026e7306766576696461c016c00c00020001000151800006036e7332c02d + +32216 +000000007002faf0e90c00000204057a01010402 +000080010000000000000000 + +32217 +9ec300000001000000000000077472616e736d6f026e6c00001c0001 +9ec380000001000000020002077472616e736d6f026e6c00001c0001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +32218 +b6c9f1605010fbde49de0000000000000000 + + +32219 +6c770000000100000000000003777777116f7073706f72696e677665727a6f636874026e6c0000010001 +6c778000000100000002000203777777116f7073706f72696e677665727a6f636874026e6c0000010001c0100002000100015180000a026e730469636d63c022c01000020001000151800006036e7332c039c036000100010001518000043e643805c04c000100010001518000043e643806 + +32220 +9410000000010000000000010464636d72026e6c0000ff00010000291000000000000000 +9410800000010000000200030464636d72026e6c0000ff0001c00c00020001000151800009036e7331026973c011c00c00020001000151800006036e7332c029c02500010001000151800004d5852102c03a00010001000151800004d5c415030000291000000000000000 + +32221 +b6cab1035010fbecacbc0000000000000000 + + +32222 +0fa100000001000000000000086d61696c686f73740b66726565686f7374696e67026e6c0000010001 +0fa180000001000000020000086d61696c686f73740b66726565686f7374696e67026e6c0000010001c0150002000100015180001105646e732d33056c61646f7403636f6d00c0150002000100015180000805646e732d34c03b + +32223 +5ebf00000001000000000000086d61696c686f73740b66726565686f7374696e67026e6c00001c0001 +5ebf80000001000000020000086d61696c686f73740b66726565686f7374696e67026e6c00001c0001c0150002000100015180001105646e732d33056c61646f7403636f6d00c0150002000100015180000805646e732d34c03b + +32224 +ae2600000001000000000000086d61696c686f73740b66726565686f7374696e67026e6c0000260001 +ae2680000001000000020000086d61696c686f73740b66726565686f7374696e67026e6c0000260001c0150002000100015180001105646e732d33056c61646f7403636f6d00c0150002000100015180000805646e732d34c03b + +32225 +b6cab1035018fbec0c7f00000093acb4000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9e3403c4b630003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 + + +32226 +b6cab1115011fbdeac260000000000000000 + + +32227 +15bb00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +15bb80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +32228 +b6cab1125010fbdeac250000000000000000 + + +32229 +f94f00000001000000000000037777770b6e65746869742d66726565026e6c0000010001 +f94f80000001000000020000037777770b6e65746869742d66726565026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c034 + +32230 +05ba0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +05ba8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32231 +f11b00000001000000000000036e733104686f6d65026e6c0000010001 +f11b80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +32232 +b6af01195018faf0d037000000948757000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd46403c4ec60003000000354e544c4d535350000100000097b208e00c000c0029000000090009002000000057454253455256455244455749542d424f454b454c0000 +b6af80010000000000000000 + +32233 +b6af01275011fae23ca30000000000000000 +b6af80010000000000000000 + +32234 +000000007002faf0b1b20000020405b401010402 +000080010000000000000000 + +32235 +b6af01285010fae23ca20000000000000000 +b6af80010000000000000000 + +32236 +b6cd10ad5010faf016ec0000000000000000 +b6cd90a40000000000000000 + +32237 +074d00000001000000000000037777770f72657374617572616e742d61736961026e6c0000010001 +074d80000001000000020002037777770f72657374617572616e742d61736961026e6c0000010001c01000020001000151800002c010c0100002000100015180000d04646e733105692d702d64c020c01000010001000151800004d912405fc04200010001000151800004d9124003 + +32238 +46c300000001000000000000037777770766697265776562026e6c0000010001 +46c380000001000000020002037777770766697265776562026e6c0000010001c0100002000100015180000f026e7309656174736572766572c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +32239 +6a6b00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000010001 +6a6b80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32240 +0c4800000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c0000010001 +0c4880000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32241 +a8b700000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000010001 +a8b780000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +32242 +b6cd10ad5018faf0499600000094e1aa000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd49403c4ec90003000000354e544c4d535350000100000097b208e00c000c0029000000090009002000000057454253455256455244455749542d424f454b454c0000 +b6cd90a40000000000000000 + +32243 +ab22000000010000000000000477656b61026e6c00000f0001 +ab22800000010000000200020477656b61026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c011c00c00020001000151800006036e7332c028c02500010001000151800004d453c005c04300010001000151800004d453c006 + +32244 +b6cd10bb5011fae216550000000000000000 +b6cd90b40000000000000000 + +32245 +f8a900000001000000000000037777770a66632d75747265636874026e6c0000010001 +f8a980000001000000020000037777770a66632d75747265636874026e6c0000010001c0100002000100015180000f036e73310571666c6578036e657400c01000020001000151800006036e7333c033 + +32246 +9410000000010000000000000464636d72026e6c0000ff0001 +9410800000010000000200020464636d72026e6c0000ff0001c00c00020001000151800009036e7331026973c011c00c00020001000151800006036e7332c029c02500010001000151800004d5852102c03a00010001000151800004d5c41503 + +32247 +63b100000001000000000000036e7331056b706e6873026e6c00001c0001 +63b180000001000000020001036e7331056b706e6873026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000d03646e73036b706e03636f6d00c00c0001000100015180000491072163 + +32248 +22e300000001000000000000036e7331056b706e6873026e6c0000260001 +22e380000001000000020001036e7331056b706e6873026e6c0000260001c01000020001000151800002c00cc0100002000100015180000d03646e73036b706e03636f6d00c00c0001000100015180000491072163 + +32249 +b6cd10bc5010fae216540000000000000000 +b6cd90b40000000000000000 + +32250 +0601000000010000000000000377777711686f7574696e647573747269656d65766f026e6c0000010001 +0601800000010000000200000377777711686f7574696e647573747269656d65766f026e6c0000010001c01000020001000151800013036e733109636174616c79737432036e657400c01000020001000151800006036e7332c03a + +32251 +9f9e00000001000000000000036e733103666a66026e6c0000010001 +9f9e80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32252 +9f9f00000001000000000000036e733203666a66026e6c0000010001 +9f9f80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32253 +16f400000001000000000000037777770a636c69636b7374617473026e6c0000010001 +16f480000001000000020002037777770a636c69636b7374617473026e6c0000010001c0100002000100015180000b036e73310470696e65c01bc01000020001000151800006036e7332c033c02f00010001000151800004d59c0201c04600010001000151800004c3c1a303 + +32254 +812900000001000000000000037777770564656c6c61026e6c0000010001 +812980000001000000020002037777770564656c6c61026e6c0000010001c01000020001000151800013046e732d310b666f782d686f7374696e67c016c01000020001000151800007046e732d32c02fc02a00010001000151800004d5bd1374c04900010001000151800004d5bd1675 + +32255 +64c30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +64c38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32256 +1a33000000010000000000000469632d73026e6c0000010001 +1a33800000010000000200000469632d73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +32257 +d17e00000001000000000000046b6e6d69026e6c0000ff0001 +d17e80000001000000020002046b6e6d69026e6c0000ff0001c00c00020001000151800008057374797832c00cc00c0002000100015180000e036e733107737572666e6574c011c025000100010001518000049117fe9fc03900010001000151800004c0576a65 + +32258 +9f7e00000001000000000000036e733103666a66026e6c0000010001 +9f7e80000001000000020000036e733103666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32259 +f6c300000001000000000000086575726f7a756964026e6c00000f0001 +f6c380000001000000020000086575726f7a756964026e6c00000f0001c00c0002000100015180000c026e7306766576696461c015c00c00020001000151800006036e7332c02c + +32260 +93a0000000010000000000000c73636861696b6f6666736574026e6c0000010001 +93a0800000010000000200020c73636861696b6f6666736574026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c019c00c00020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +32261 +9f7f00000001000000000000036e733203666a66026e6c0000010001 +9f7f80000001000000020000036e733203666a66026e6c0000010001c0100002000100015180000c026e7306736174656368c014c01000020001000151800006036e7378c02b + +32262 +121e28000001000200000000026e6c00000600010f6168616e6f6f72642d7072696d75730d4148414e6f6f7264676f757765026e6c00000500fe000000000000c01400010001000000000004c0a80017 +121ea8040000000000000000 + +32263 +fefb0000000100000000000004626c6767026e6c0000ff0001 +fefb8000000100000002000004626c6767026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c011c00c0002000100015180000704686e7331c02a + +32264 +860b00000001000000000000036e7331046372696f026e6c0000010001 +860b80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32265 +4d0300000001000000000000036e7332046372696f026e6c0000010001 +4d0380000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32266 +cd6a00000001000000000000036e7335046372696f026e6c0000010001 +cd6a80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32267 +247600000001000000000000036e7336046372696f026e6c0000010001 +247680000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32268 +d0f8000000010000000000000377777706686f6572656e066d6f6b656c73026e6c0000010001 +d0f8800000010000000200020377777706686f6572656e066d6f6b656c73026e6c0000010001c01700020001000151800012036e73310b737072696e67626f617264c01ec01700020001000151800006036e7332c036c03200010001000151800004d4f1210bc05000010001000151800004d4f1210c + +32269 +000000007002400090d30000020405b401010402 +000080010000000000000000 + +32270 +724100000001000000000000037777770662726f636f6d026e6c0000010001 +724180000001000000020000037777770662726f636f6d026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c031 + +32271 +b6cda384501008009b350000000000000000 + + +32272 +000000007002faf0a8680000020405b401010402 +000080010000000000000000 + +32273 +720100000001000000000000077665727665656e026e6c0000020001 +720180000001000000020000077665727665656e026e6c0000020001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c02b + +32274 +b6cda384501044705ec50000000000000000 + + +32275 +b6ce7def5010faf0a05e0000000000000000 +b6cefde40000000000000000 + +32276 +b6ce7def5018faf0e2720000008b24c2000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afab8403c4c3800030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005a374a3847374555524f4c494e450000 +b6cefde40000000000000000 + +32277 +b6cda384501844708c0d0000009b7900000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005f03677373096d6963726f736f667403636f6d00403afcf3403c4e7300030000003c4e544c4d535350000100000097b200c00d000d002f0000000f000f00200000004148414e4f4f52442d5052494d55534148414e4f4f5244474f5557450000 + + +32278 +b6ce7dfd5011fae29fd00000000000000000 +b6cefdf40000000000000000 + +32279 +02f50000000100000000000003777777097061726173746f6e65026e6c0000010001 +02f58000000100000002000003777777097061726173746f6e65026e6c0000010001c01000020001000151800014026e730b736d617274736572766572036e657400c01000020001000151800006036e7332c031 + +32280 +b6ce7dfe5010fae29fcf0000000000000000 +b6cefdf40000000000000000 + +32281 +000000007002faf0fa060000020405b401010402 +000080010000000000000000 + +32282 +b6cda392501144625e270000000000000000 + + +32283 +ba4b0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000000000000 +ba4b8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +32284 +b6cf35215010faf03aca0000000000000000 +b6cfb5240000000000000000 + +32285 +000000007002400097f50000020405b401010402 +000080010000000000000000 + +32286 +9fdd0000000100000000000008742d6d6f62696c65026e6c00000f0001 +9fdd8000000100000002000208742d6d6f62696c65026e6c00000f0001c00c0002000100015180000b036e733104696e666fc015c00c00020001000151800006036e7332c02dc02900010001000151800004504fc020c04000010001000151800004504fc021 + +32287 +b6cf35215018faf0e0430000008bc35c000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afab8403c4c3800030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005a374a3847374555524f4c494e450000 +b6cfb5240000000000000000 + +32288 +b6cf352f5011fae23a3c0000000000000000 +b6cfb5240000000000000000 + +32289 +a8b200000001000000000000036e733209666972737466696e64026e6c0000010001 +a8b280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +32290 +a8b100000001000000000000036e733109666972737466696e64026e6c0000010001 +a8b180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +32291 +b6cda393501044625e260000000000000000 + + +32292 +b6cfdbce501008006a0b0000000000000000 + + +32293 +27b800000001000000000000036e73340767617574656e67026e6c0000010001 +27b880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32294 +b6cfdbce501044702d9b0000000000000000 + + +32295 +b6cf35305010fae23a3b0000000000000000 +b6cfb5340000000000000000 + +32296 +b6cfdbce5018447011640000009bc180000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403afcf4403c4e7400030000003c4e544c4d535350000100000097b200c00d000d002f0000000f000f00200000004148414e4f4f52442d5052494d55534148414e4f4f5244474f5557450000 + + +32297 +000000007002faf04c930000020405b401010402 +000080010000000000000000 + +32298 +b6d071415010faf051350000000000000000 +b6d0f1440000000000000000 + +32299 +ac2c00000001000000000000037777770b746f6f72656e7370697473026e6c0000010001 +ac2c80000001000000020002037777770b746f6f72656e7370697473026e6c0000010001c0100002000100015180000f036e733108642d64657369676ec01cc01000020001000151800006036e7332c034c030000100010001518000045054f3f0c04b000100010001518000045054f3f1 + +32300 +a7e30010000100000000000106636861726973026e6c00000f00010000290800000080000000 +a7e38000000100000002000106636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +32301 +b6d071415018faf08e770000008b2b94000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afab8403c4c3800030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005a374a3847374555524f4c494e450000 +b6d0f1440000000000000000 + +32302 +a8b400000001000000000000036e733109666972737466696e64026e6c0000010001 +a8b480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +32303 +682300000001000000000000067a7376737277026e6c0000010001 +682384030001000000010000067a7376737277026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +32304 +a8b500000001000000000000036e733209666972737466696e64026e6c0000010001 +a8b580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +32305 +b6d0714f5011fae250a70000000000000000 +b6d0f1440000000000000000 + +32306 +b6cfdbdc501144622cfd0000000000000000 + + +32307 +789b0000000100000000000003777777046b726173026e6c0000010001 +789b8000000100000002000003777777046b726173026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +32308 +b6d071505010fae250a60000000000000000 +b6d0f1540000000000000000 + +32309 +5a0300000001000000000000076368762d6c6262026e6c0000010001 +5a0380000001000000020000076368762d6c6262026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +32310 +0000000070024000ab920000020405b401010402 +000080010000000000000000 + +32311 +10d900000001000000000000037777770674696261636f026e6c0000010001 +10d980000001000000020000037777770674696261636f026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c030 + +32312 +a20e0000000100000000000006636861726973026e6c00000f0001 +a20e8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +32313 +082a0000000100000000000004686f6d6503777873026e6c0000010001 +082a8000000100000003000304686f6d6503777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +32314 +b6cfdbdd501044622cfc0000000000000000 + + +32315 +b6d1320d5010080027680000000000000000 +b6d1b2040000000000000000 + +32316 +4ee60000000100000000000005726f747261026e6c00000f0001 +4ee68000000100000002000005726f747261026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02a + +32317 +b6d1320d50104470eaf70000000000000000 +b6d1b2040000000000000000 + +32318 +b6d1320d50184470d5800000009bbac0000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403afcf4403c4e7400030000003c4e544c4d535350000100000097b200c00d000d002f0000000f000f00200000004148414e4f4f52442d5052494d55534148414e4f4f5244474f5557450000 +b6d1b2040000000000000000 + +32319 +b01e0000000100000000000003777777096a616e64657369676e026e6c0000010001 +b01e8000000100000002000003777777096a616e64657369676e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +32320 +1f74000000010000000000000577326b6332066e7434616c6c026e6c0000010001 +1f74800000010000000200020577326b6332066e7434616c6c026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e733206787334616c6cc019c02d00010001000151800004c26d3402c03e00010001000151800004c26d0963 + +32321 +723000000001000000000000036e73320a7a65656c616e646e6574026e6c0000010001 +723080000001000000020002036e73320a7a65656c616e646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +32322 +721400000001000000000000026e730a7a65656c616e646e6574026e6c0000010001 +721480000001000000020002026e730a7a65656c616e646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +32323 +1a030000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +1a038000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32324 +b6d1321b50114462ea590000000000000000 +b6d1b2140000000000000000 + +32325 +464c0000000100000000000009776565726b616d6572026e6c0000010001 +464c8000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +32326 +8b5c00000001000000000000094f6c646562726f656b026e6c0000ff0001 +8b5c80000001000000020002094f6c646562726f656b026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c016c00c00020001000151800006036e7331c02dc02a00010001000151800004504f6101c04400010001000151800004504f6102 + +32327 +fd5200000001000000000000046d61696c0a767676616b616e746965026e6c0000010001 +fd5280000001000000020002046d61696c0a767676616b616e746965026e6c0000010001c0110002000100015180000a04646e7330026975c01cc0110002000100015180000704646e7331c035c03000010001000151800004d91a7002c04600010001000151800004d91a7103 + +32328 +3b1800000001000000000000046d61696c0a767676616b616e746965026e6c00001c0001 +3b1880000001000000020002046d61696c0a767676616b616e746965026e6c00001c0001c0110002000100015180000a04646e7330026975c01cc0110002000100015180000704646e7331c035c03000010001000151800004d91a7002c04600010001000151800004d91a7103 + +32329 +0bfd00100001000000000001037777770465706f78026e6c00000100010000290800000080000000 +0bfd80000001000000020003037777770465706f78026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d09630000291000000000000000 + +32330 +3ef9000000010000000000000377777707726f7574653637026e6c0000010001 +3ef9800000010000000200020377777707726f7574653637026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c018c01000020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +32331 +a926000000010000000000000377777706616d7374656c026e6c0000010001 +a926800000010000000200000377777706616d7374656c026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02f + +32332 +465e0000000100000000000008656d6f7469636f6e0e6d657373656e676572746f6f6c73026e6c0000010001 +465e8000000100000002000008656d6f7469636f6e0e6d657373656e676572746f6f6c73026e6c0000010001c01500020001000151800014046e733031096772616669782d697303636f6d00c01500020001000151800007046e733033c03d + +32333 +b6d1321c50104462ea580000000000000000 +b6d1b2140000000000000000 + +32334 +2c7c00000001000000000000037777770f63616e6973697573636f6c6c656765026e6c0000010001 +2c7c80000001000000020000037777770f63616e6973697573636f6c6c656765026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c03b + +32335 +04ec00000001000000000000036e73310a63796265726d65646961026e6c0000010001 +04ec80000001000000020002036e73310a63796265726d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e818c0ac03d000100010001518000043e3a2d99 + +32336 +76de00000001000000000000037777770461766578026e6c0000010001 +76de80000001000000020002037777770461766578026e6c0000010001c0100002000100015180000b036e733104656e6f6dc015c01000020001000151800006036e7332c02dc02900010001000151800004d87a0479c04000010001000151800004d86296b6 + +32337 +17c000000001000000000000036e73330767617574656e67026e6c0000010001 +17c080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32338 +fc620000000100000000000008686f73746e616d650462696e640000100003 +fc628000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32339 +a24400000001000000000000036e733107676f6c69617468026e6c0000010001 +a24480000001000000020002036e733107676f6c69617468026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +32340 +d12200000001000000000000036e733207676f6c69617468026e6c0000010001 +d12280000001000000020002036e733207676f6c69617468026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000045054f379c00c00010001000151800004507f48c2 + +32341 +7f18000000010000000000000466617473076d797465726973026e6c00000f0001 +7f18840300010000000100000466617473076d797465726973026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +32342 +539a0000000100000000000008686f73746e616d650462696e640000100003 +539a8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32343 +b403000000010000000000000377777709617363656e64656e73026e6c0000010001 +b403800000010000000200000377777709617363656e64656e73026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +32344 +217d0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +217d8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32345 +d84f0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +d84f8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32346 +332400000001000000000000076172747068696c026e6c00000f0001 +332480000001000000020000076172747068696c026e6c00000f0001c00c0002000100015180000e05646e732d31056c61646f74c014c00c0002000100015180000805646e732d32c02e + +32347 +6848000000010000000000000377777706616c7572756e026e6c0000010001 +6848800000010000000300010377777706616c7572756e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +32348 +126d000000010000000000000d73656375726974797072696e74026e6c0000010001 +126d800000010000000200010d73656375726974797072696e74026e6c0000010001c00c0002000100015180000a036e733303777873c01ac00c00020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +32349 +ec8a00000001000000000000037777770b7374617274706167696e61026e6c0000010001 +ec8a80000001000000030003037777770b7374617274706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c030000100010001518000043e45a282c042000100010001518000043e45a283c054000100010001518000043e45a284 + +32350 +31a2000000010000000000000b776f726c646f6e6c696e65026e6c00000f0001 +31a2800000010000000300020b776f726c646f6e6c696e65026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +32351 +897000000001000000000000037777770b7475726e656e64616d6573026e6c0000010001 +897080000001000000020002037777770b7475726e656e64616d6573026e6c0000010001c0100002000100015180000d03706e7306636f6d6c6f67c01cc0100002000100015180000603736e73c034c03000010001000151800004d5a0c803c04900010001000151800004d5a0c804 + +32352 +da28000000010000000000000377777706652d63617264026e6c0000010001 +da28800000010000000200000377777706652d63617264026e6c0000010001c01000020001000151800018036e73370e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7338c02f + +32353 +2d2b0000000100000000000007737461746963320876696c6561677565087669706c616e6574026e6c0000010001 +2d2b8000000100000002000107737461746963320876696c6561677565087669706c616e6574026e6c0000010001c01d0002000100015180000a036e733303777873c026c01d00020001000151800006036e7334c03ec05000010001000151800004d5ef9a65 + +32354 +e1ec00000001000000000000026d780766656e65646578026e6c0000010001 +e1ec80000001000000030002026d780766656e65646578026e6c0000010001c00f00020001000151800005026e73c00fc00f00020001000151800009026e7303736261c017c00f0002000100015180000d036e733203736261036e657400c02b00010001000151800004c36cbcfec03c00010001000151800004c2e57801 + +32355 +4d410000000100000000000003777777077765736265656b026e6c0000010001 +4d418000000100000002000103777777077765736265656b026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c02c00010001000151800004d4ccc0fc + +32356 +a7d20000000100000000000008667265656d61696c026e6c0000010001 +a7d28000000100000003000208667265656d61696c026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +32357 +35340000000100000000000006757472636874036f7267026e6c00000f0001 +35348403000100000001000006757472636874036f7267026e6c00000f0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +32358 +f60400000001000000000000037777770a73746f72656d61746368026e6c0000010001 +f60480000001000000020002037777770a73746f72656d61746368026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +32359 +257a0000000100000000000009726f6f6476656c6474026e6c00000f0001 +257a8000000100000002000209726f6f6476656c6474026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c016c00c00020001000151800006036e7332c02ec02a00010001000151800004c2451012c04200010001000151800004c2451212 + +32360 +4a2900000001000000000000106b6f6f706d616e73636c617373696373026e6c00000f0001 +4a2980000001000000020000106b6f6f706d616e73636c617373696373026e6c00000f0001c00c00020001000151800014036e73350a78736e6574776f726b73036e657400c00c00020001000151800006036e7332c035 + +32361 +016d000000010000000000000d706c616e656574706c616e6574026e6c00000f0001 +016d840300010000000100000d706c616e656574706c616e6574026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +32362 +17d000000001000000000000036e73340767617574656e67026e6c0000010001 +17d080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32363 +7c6600000001000000000000037777770b636865636b6d7973697465026e6c0000010001 +7c6680000001000000020002037777770b636865636b6d7973697465026e6c0000010001c01000020001000151800016026e730261310d61616161612d686f7374696e67c01cc01000020001000151800006036e7332c033c03000010001000151800004c30be7e1c05200010001000151800004c30be7e2 + +32364 +12f000000001000000000000037777770d62676d2d6e656465726c616e64026e6c0000010001 +12f080000001000000020002037777770d62676d2d6e656465726c616e64026e6c0000010001c0100002000100015180000f036e733108696c696d62757267c01ec01000020001000151800006036e7332c036c03200010001000151800004c2b26281c04d00010001000151800004c2b262f7 + +32365 +3e9600000001000000000000096c65756b6576656e74026e6c0000020001 +3e9680000001000000020002096c65756b6576656e74026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +32366 +38660000000100000000000005726f6d656f066f6e6c696e65026f32026e6c0000010001 +38668000000100000002000205726f6d656f066f6e6c696e65026f32026e6c0000010001c0190002000100015180000d026e73076e65746c616e64c01cc01900020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +32367 +c9680000000100000000000003666c79036b6c6d026e6c0000010001 +c9688000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +32368 +10f1000000010000000000000d5354494e47524f414453484f57026e6c0000020001 +10f1840300010000000100000d5354494e47524f414453484f57026e6c0000020001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +32369 +802f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +802f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32370 +80300000000100000000000005646e732d32056c61646f74026e6c0000010001 +80308000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32371 +98370000000100000000000003777777076d696e62757a61026e6c0000010001 +98378000000100000002000103777777076d696e62757a61026e6c0000010001c0100002000100015180000b087374617267617465c010c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004d535a3d2 + +32372 +b0a40000000100000000000003617468026e6c00000f0001 +b0a48000000100000002000203617468026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c010c00c00020001000151800006036e7332c028c02400010001000151800004c2451012c03c00010001000151800004c2451212 + +32373 +3a960000000100000000000007766462636f6d70026e6c00001c0001 +3a968000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +32374 +d08e000000010000000000000377777707746d6f62696c65026e6c0000010001 +d08e800000010000000200020377777707746d6f62696c65026e6c0000010001c0100002000100015180000b036e733104696e666fc018c01000020001000151800006036e7332c030c02c00010001000151800004504fc020c04300010001000151800004504fc021 + +32375 +6d6f0000000100000000000006636861726973026e6c00000f0001 +6d6f8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +32376 +4de600000001000000000000037777770a70726f7465637430727a026e6c0000010001 +4de680000001000000020000037777770a70726f7465637430727a026e6c0000010001c0100002000100015180000e036e73330767617574656e67c01bc01000020001000151800006036e7334c033 + +32377 +1ed8000000010000000000000a6c65756e696e676a6573026e6c0000020001 +1ed8800000010000000200020a6c65756e696e676a6573026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +32378 +84580000000100000000000003777777086175746f7a696e65026e6c0000010001 +84588000000100000002000203777777086175746f7a696e65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +32379 +a73400000001000000000000037777770a706c61696a6167616d65026e6c0000010001 +a73484030001000000010000037777770a706c61696a6167616d65026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +32380 +be6600000001000000000000037777770873746f7068696572026e6c0000010001 +be6680000001000000020002037777770873746f7068696572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d000100010001518000044538f440c03f000100010001518000044538f441 + +32381 +91a7000000010000000000000377777710677261746973706f726e6f666f746f73026e6c0000010001 +91a7800000010000000200000377777710677261746973706f726e6f666f746f73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c038 + +32382 +8a2f00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +8a2f80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32383 +61dc0000000100000000000006617564696f6e026e6c00000f0001 +61dc8000000100000002000006617564696f6e026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02a + +32384 +35ce00000001000000000000037777770c77616b65626f617264657273026e6c0000010001 +35ce80000001000000020000037777770c77616b65626f617264657273026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c035 + +32385 +51fa00000001000000000000036e73310a696e7465726e65746978026e6c0000010001 +51fa80000001000000020002036e73310a696e7465726e65746978026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccf5c9c03d00010001000151800004d4ccf5d2 + +32386 +28fd00000001000000000000036e73310a696e7465726e65746978026e6c0000260001 +28fd80000001000000020002036e73310a696e7465726e65746978026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccf5c9c03d00010001000151800004d4ccf5d2 + +32387 +6e4f00000001000000000000036e73320a696e7465726e65746978026e6c0000010001 +6e4f80000001000000020002036e73320a696e7465726e65746978026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d4ccf5c9c00c00010001000151800004d4ccf5d2 + +32388 +89d200000001000000000000036e73320a696e7465726e65746978026e6c0000260001 +89d280000001000000020002036e73320a696e7465726e65746978026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d4ccf5c9c00c00010001000151800004d4ccf5d2 + +32389 +0707000000010000000000000647495a5a4d4f024e4c0000010001 +0707800000010000000300030647495a5a4d4f024e4c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc0270001000100015180000483ae7529c038000100010001518000043e830a2ec04a0001000100015180000483ae7436 + +32390 +d020000000010000000000000377777706736368656574026e6c0000010001 +d020800000010000000200000377777706736368656574026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02e + +32391 +c8f400000001000000000000046d61696c06746963617361026e6c0000010001 +c8f480000001000000030002046d61696c06746963617361026e6c0000010001c01100020001000151800015036e73310e666c6578776562686f7374696e67c018c01100020001000151800006036e7332c030c01100020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02c00010001000151800004cf2cd7adc04d0001000100015180000452c04365 + +32392 +18d5000000010000000000000c42554954454e42455245494b024e4c0000010001 +18d5800000010000000300030c42554954454e42455245494b024e4c0000010001c00c0002000100015180000e04646e733106626c6978656dc019c00c0002000100015180000704646e7332c032c00c0002000100015180000704646e7333c032c02d00010001000151800004d44fe803c04700010001000151800004c3f5c782c05a00010001000151800004d44ff303 + +32393 +00d3000000010000000000000647495a5a4d4f024e4c0000260001 +00d3800000010000000300030647495a5a4d4f024e4c0000260001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc0270001000100015180000483ae7529c038000100010001518000043e830a2ec04a0001000100015180000483ae7436 + +32394 +8307000000010000000000000c42554954454e42455245494b024e4c0000260001 +8307800000010000000300030c42554954454e42455245494b024e4c0000260001c00c0002000100015180000e04646e733106626c6978656dc019c00c0002000100015180000704646e7332c032c00c0002000100015180000704646e7333c032c02d00010001000151800004d44fe803c04700010001000151800004c3f5c782c05a00010001000151800004d44ff303 + +32395 +dd7a00000001000000000000026e7306787334616c6c026e6c0000010001 +dd7a80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +32396 +eebd00000001000000000000036e733206787334616c6c026e6c0000010001 +eebd80000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +32397 +a8cd00000001000000000000036e733206726f632d6f6e026e6c0000010001 +a8cd80000001000000020002036e733206726f632d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b0001000100015180000491614082c00c0001000100015180000491616142 + +32398 +2d5d00000001000000000000036e733106726f632d6f6e026e6c0000010001 +2d5d80000001000000020002036e733106726f632d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491614082c0390001000100015180000491616142 + +32399 +dd65000000010000000000000a7072766c696d62757267026e6c0000ff0001 +dd65800000010000000200010a7072766c696d62757267026e6c0000ff0001c00c0002000100015180000a0761757468656e74c00cc00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004c3c105fa + +32400 +60e20000000100000000000003777777096c65617365706c616e026e6c0000010001 +60e28000000100000002000103777777096c65617365706c616e026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000d026e73046575726f036e657400c02e00010001000151800004c286e702 + +32401 +1e83000000010000000000000874616c616e746f6e026e6c00000f0001 +1e83800000010000000200020874616c616e746f6e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +32402 +c4160000000100000000000003777777106765736368656e6b656e77696e6b656c026e6c0000010001 +c4168000000100000002000203777777106765736368656e6b656e77696e6b656c026e6c0000010001c0100002000100015180000e036e733107616e7461726573c021c01000020001000151800006036e7332c039c035000100010001518000043e3a260bc04f000100010001518000043e3a260c + +32403 +411a00000001000000000000076575726f6e6574026e6c0000ff0001 +411a80000001000000020001076575726f6e6574026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180000d026e73046575726f036e657400c02800010001000151800004c2860043 + +32404 +df8600000001000000000000036e733104686f6d65026e6c0000010001 +df8680000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +32405 +6fc300000001000000000000036e733204686f6d65026e6c0000010001 +6fc380000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +32406 +81d000000001000000000000036e733304686f6d65026e6c0000010001 +81d080000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +32407 +451300000001000000000000046d61696c0a677265656e657279756b026e6c0000ff0001 +451380000001000000020002046d61696c0a677265656e657279756b026e6c0000ff0001c0110002000100015180000c026e7306787334616c6cc01cc01100020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +32408 +3bc100000001000000000000026e73086d656761706c6578026e6c0000010001 +3bc180000001000000020002026e73086d656761706c6578026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004504f6101c03a00010001000151800004504f6102 + +32409 +536e00000001000000000000036e7331086d656761706c6578026e6c0000010001 +536e80000001000000020002036e7331086d656761706c6578026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004504f6101c00c00010001000151800004504f6102 + +32410 +4a6e00000001000000000000036e733108696e736563757265026e6c0000010001 +4a6e80000001000000030003036e733108696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32411 +253700000001000000000000036e733108696e736563757265026e6c0000260001 +253780000001000000030003036e733108696e736563757265026e6c0000260001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32412 +222b00000001000000000000036e733208696e736563757265026e6c0000010001 +222b80000001000000030003036e733208696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32413 +5d2800000001000000000000036e733208696e736563757265026e6c0000260001 +5d2880000001000000030003036e733208696e736563757265026e6c0000260001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32414 +ae9400000001000000000000036e733308696e736563757265026e6c0000010001 +ae9480000001000000030003036e733308696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32415 +3ebb0000000100000000000006626f2d617373026e6c00000f0001 +3ebb8000000100000002000006626f2d617373026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c013c00c0002000100015180000704686e7331c02c + +32416 +4df7000000010000000000000377777708636f6f6c62616279026e6c0000010001 +4df7800000010000000200000377777708636f6f6c62616279026e6c0000010001c0100002000100015180000c036e723405692d702d64c019c01000020001000151800006036e7236c031 + +32417 +abca00000001000000000000036e733308696e736563757265026e6c0000260001 +abca80000001000000030003036e733308696e736563757265026e6c0000260001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +32418 +dce50000000100000000000011726f6d626163682d736368756b6b696e67026e6c00000f0001 +dce58000000100000002000011726f6d626163682d736368756b6b696e67026e6c00000f0001c00c0002000100015180000b036e73310462626974c01ec00c00020001000151800006036e7332c036 + +32419 +943500000001000000000000036e73310663617374656c026e6c00001c0001 +943580000001000000020002036e73310663617374656c026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3558244c03900010001000151800004c3558245 + +32420 +072600000001000000000000036e73310663617374656c026e6c0000260001 +072680000001000000020002036e73310663617374656c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3558244c03900010001000151800004c3558245 + +32421 +e37a00000001000000000000036e73320663617374656c026e6c00001c0001 +e37a80000001000000020002036e73320663617374656c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004c3558244c00c00010001000151800004c3558245 + +32422 +d0e600000001000000000000036e73320663617374656c026e6c0000260001 +d0e680000001000000020002036e73320663617374656c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004c3558244c00c00010001000151800004c3558245 + +32423 +aa0e00000001000000000000036d78320663617374656c026e6c0000010001 +aa0e80000001000000020002036d78320663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +32424 +c1b900000001000000000000036d78320663617374656c026e6c00001c0001 +c1b980000001000000020002036d78320663617374656c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +32425 +497000000001000000000000036d78320663617374656c026e6c0000260001 +497080000001000000020002036d78320663617374656c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +32426 +5cff00000001000000000000037777770a7374617274706f726e6f026e6c0000010001 +5cff80000001000000020000037777770a7374617274706f726e6f026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +32427 +301500000001000000000000056162632d64026e6c00000f000100 +301580000001000000020000056162632d64026e6c00000f0001c00c0002000100015180000f026e7307626f6e6e69657202736500c00c00020001000151800006036e7333c029 + +32428 +05ba00000001000000000000056461786973026e6c0000ff0001 +05ba80000001000000020002056461786973026e6c0000ff0001c00c0002000100015180000f036e7331086461786973776562c012c00c00020001000151800006036e7332c02ac02600010001000151800004c323c083c04100010001000151800004c323c084 + +32429 +44bb00000001000000000000136c657572696e6b2d696e7374616c6c61746965026e6c0000020001 +44bb80000001000000020002136c657572696e6b2d696e7374616c6c61746965026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec020c00c00020001000151800006036e7332c038c03400010001000151800004c29f4906c04c00010001000151800004c29fb004 + +32430 +63bd00000001000000000000026e730a646f6d65696e686f7374026e6c0000010001 +63bd80000001000000020000026e730a646f6d65696e686f7374026e6c0000010001c00f00020001000151800017036e73310d696e746572726567697374657203636f6d00c00f00020001000151800010036e733206776964657873036e657400 + +32431 +79e5000000010000000000000561726a656e056974347573026e6c0000010001 +79e5800000010000000200020561726a656e056974347573026e6c0000010001c0120002000100015180000d036e733106736f67657469c018c01200020001000151800006036e7332c030c02c00010001000151800004c297432ec04500010001000151800004c297432f + +32432 +c21100000001000000000000036e733207626265796f6e64026e6c0000010001 +c21180000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +32433 +bcb200000001000000000000036e7335046372696f026e6c0000010001 +bcb280000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32434 +80ea00000001000000000000036e7336046372696f026e6c0000010001 +80ea80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32435 +031f000000010000000000000377777703776562026e6c0000010001 +031f800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +32436 +c65d00000001000000000000036e7331046372696f026e6c0000010001 +c65d80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32437 +ccfb00000001000000000000036e7332046372696f026e6c0000010001 +ccfb80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32438 +0f0900000001000000000000037777770a72656372656174696566026e6c0000010001 +0f0980000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +32439 +820300000001000000000000036e7335046372696f026e6c0000010001 +820380000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32440 +e81000000001000000000000036e7336046372696f026e6c0000010001 +e81080000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32441 +996400000001000000000000036e7331046372696f026e6c0000010001 +996480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32442 +1b1500000001000000000000036e7332046372696f026e6c0000010001 +1b1580000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32443 +bff800000001000000000000026e7308767575727765726b026e6c0000010001 +bff880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +32444 +bdad0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +bdad8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32445 +5c60000000010000000000000377777703796573026e6c0000010001 +5c60800000010000000300000377777703796573026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02c + +32446 +bdb000000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +bdb080000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +32447 +ce1b0000000100000000000003777777096b77616c6964617461026e6c0000010001 +ce1b8000000100000002000203777777096b77616c6964617461026e6c0000010001c0100002000100015180000f036e733108776f726c646e6574c01ac01000020001000151800006036e7332c032c02e00010001000151800004d87a0479c04900010001000151800004d86296b6 + +32448 +9919000000010000000000000377777708736b79726164696f026e6c0000010001 +9919800000010000000200010377777708736b79726164696f026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +32449 +8fbb00000001000000000000037777770c796f75726c696e6b70616765026e6c0000010001 +8fbb80000001000000020000037777770c796f75726c696e6b70616765026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01dc01000020001000151800006036e7332c035 + +32450 +0a900000000100000000000003777777056b6c696b73026e6c0000010001 +0a908000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +32451 +963b00000001000000000000046d61696c156175746f73636861646576696e6b656e7761617264026e6c0000010001 +963b80000001000000020002046d61696c156175746f73636861646576696e6b656e7761617264026e6c0000010001c01100020001000151800010036e733109686f73746e65746276c027c01100020001000151800006036e7332c03fc03b0001000100015180000451113264c05700010001000151800004d5c42851 + +32452 +8fc400000001000000000000036e733503777873026e6c0000010001 +8fc480000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +32453 +c7e200000001000000000000046e73303803777873026e6c0000010001 +c7e280000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32454 +31f600000001000000000000046e73303903777873026e6c0000010001 +31f680000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32455 +f4fd00000001000000000000026e730678786c696e6b026e6c0000010001 +f4fd80000001000000030002026e730678786c696e6b026e6c0000010001c00f0002000100015180000f036e73310870726f7365727665c016c00f00020001000151800012036e73320970726f2d736572766502626500c00f00020001000151800006036e7333c02ec02a000100010001518000045054e055c06300010001000151800004d4ccc655 + +32456 +a8b6000000010000000000000670686f626f7305706c61746f026e6c0000010001 +a8b6800000010000000200010670686f626f7305706c61746f026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800010036e733102646803697865036e657400c02d00010001000151800004c2b76f14 + +32457 +1d6900000001000000000000036e7331076e6572646e6574026e6c0000010001 +1d6980000001000000020002036e7331076e6572646e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800009026e730370626dc018c00c00010001000151800004d9aa0f01c03a000100010001518000043efa0743 + +32458 +3ffc00000001000000000000036e73330767617574656e67026e6c0000010001 +3ffc80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32459 +280000000001000000000000036e73340767617574656e67026e6c0000010001 +280080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32460 +13ce00000001000000000000036e7331076e6572646e6574026e6c0000260001 +13ce80000001000000020002036e7331076e6572646e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800009026e730370626dc018c00c00010001000151800004d9aa0f01c03a000100010001518000043efa0743 + +32461 +20400000000100000000000009652d6c756e61746963026e6c0000010001 +20408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +32462 +f04e0000000100000000000003777777056d65737365026e6c0000010001 +f04e8000000100000002000003777777056d65737365026e6c0000010001c01000020001000151800013036e73310a636f6d7075746f6f6c7302626500c01000020001000151800006036e7332c02e + +32463 +73af0000000100000000000006726164696f6d026e6c00000f0001 +73af8000000100000003000206726164696f6d026e6c00000f0001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +32464 +98fb000000010000000000000a6970353033633363616405737065656406706c616e6574026e6c00001c0001 +98fb800000010000000300030a6970353033633363616405737065656406706c616e6574026e6c00001c0001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +32465 +0cbf00000001000000000000036e73320a736d7365656e68756973026e6c00001c0001 +0cbf80000001000000020002036e73320a736d7365656e68756973026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +32466 +8c7f00000001000000000000036e73320a736d7365656e68756973026e6c0000260001 +8c7f80000001000000020002036e73320a736d7365656e68756973026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +32467 +0d2700000001000000000000036e73310a736d7365656e68756973026e6c00001c0001 +0d2780000001000000020002036e73310a736d7365656e68756973026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d994ac0cc03d00010001000151800004d5c42f6c + +32468 +f7d400000001000000000000036e73310a736d7365656e68756973026e6c0000260001 +f7d480000001000000020002036e73310a736d7365656e68756973026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d994ac0cc03d00010001000151800004d5c42f6c + +32469 +20b400000001000000000000036e7331036e7873026e6c0000010001 +20b480000001000000020002036e7331036e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c015c03600010001000151800004d973c102 + +32470 +c0b60000000100000000000006776468303131066e7434616c6c026e6c0000010001 +c0b68000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +32471 +5205000000010000000000000832387a6f6e6e6574026e6c00000f0001 +5205840300010000000100000832387a6f6e6e6574026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +32472 +8fdf00100001000000000001026e7309656174736572766572026e6c00000100010000290800000080000000 +8fdf80000001000000020003026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb12210000291000000000000000 + +32473 +8cc800100001000000000001036e733209656174736572766572026e6c00000100010000290800000080000000 +8cc880000001000000020003036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb12210000291000000000000000 + +32474 +28fb001000010000000000010f686f6e6473727567636f6c6c656765026e6c00000f00010000290800000080000000 +28fb800000010000000200030f686f6e6473727567636f6c6c656765026e6c00000f0001c00c00020001000151800009036e7331026973c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c415030000291000000000000000 + +32475 +1b6b28000001000000010000026e6c0000060001085f6b706173737764045f7564700868756c73626f7577026e6c000021000100000258001d0000006401d0096e742d7365727665720868756c73626f7577026e6c00 +1b6ba8040000000000000000 + +32476 +1b6e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +1b6e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32477 +d15900000001000000000000036e733109756e69736572766572026e6c0000010001 +d15980000001000000020002036e733109756e69736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +32478 +b3fb00000001000000000000036e733209756e69736572766572026e6c0000010001 +b3fb80000001000000020002036e733209756e69736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c3454b03c00c00010001000151800004d119a2fa + +32479 +c37f00000001000000000000076c65757769636f026e6c0000020001 +c37f80000001000000020002076c65757769636f026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +32480 +000000007002400082ad0000020405b401010402 +000080010000000000000000 + +32481 +74e30000000100000000000002786903647078026e6c0000010001 +74e38000000100000002000202786903647078026e6c0000010001c00f0002000100015180000e036e7330077472616e736970c013c00f00020001000151800006036e7331c02bc0270001000100015180000450454343c0410001000100015180000450454242 + +32482 +5156000000010000000000000f686f6e6473727567636f6c6c656765026e6c00000f0001 +5156800000010000000200020f686f6e6473727567636f6c6c656765026e6c00000f0001c00c00020001000151800009036e7331026973c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +32483 +b6d481b85010447072640000000000000000 + + +32484 +b6d481b85010447072640000000000000000 + + +32485 +b6d481b8501844700b7c000000909cca000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff7d403c50fd0003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 + + +32486 +c0e30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c0e38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32487 +11e10000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +11e18000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32488 +45190000000100000000000005646e732d31056c61646f74026e6c0000010001 +45198000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32489 +1bcf00000001000000000000037777770466766b76026e6c0000010001 +1bcf80000001000000020002037777770466766b76026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c015c01000020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +32490 +17cb00000001000000000000036e73310b676c6f62616c7369746573026e6c0000010001 +17cb80000001000000020002036e73310b676c6f62616c7369746573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cce37ac03e00010001000151800004d94d8b0c + +32491 +ae1600000001000000000000036e73320b676c6f62616c7369746573026e6c0000010001 +ae1680000001000000020002036e73320b676c6f62616c7369746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d4cce37ac00c00010001000151800004d94d8b0c + +32492 +43c10000000100000000000005646e732d32056c61646f74026e6c0000010001 +43c18000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32493 +b6d481c65011446271d10000000000000000 + + +32494 +35f900000001000000000000067372763031320b66726565686f7374696e67026e6c00000f0001 +35f980000001000000020000067372763031320b66726565686f7374696e67026e6c00000f0001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c039 + +32495 +00000000700240008dc10000020405b401010402 +000080010000000000000000 + +32496 +0be800000001000000000000036e7332066470706c7573026e6c0000010001 +0be880000001000000020001036e7332066470706c7573026e6c0000010001c01000020001000151800014026e730b706c617a6167726f757065036e657400c01000020001000151800002c00cc00c00010001000151800004d5c1ea0d + +32497 +3db500000001000000000000036e7332086d65646961776562026e6c0000010001 +3db580000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +32498 +27d900000001000000000000036e7333086d65646961776562026e6c0000010001 +27d980000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +32499 +b6d481c75010446271d00000000000000000 + + +32500 +b6d481c75010446271d00000000000000000 + + +32501 +721b0000000100000000000003777777146a61636f62636174736c61616e2d6c656964656e026e6c0000010001 +721b8000000100000002000003777777146a61636f62636174736c61616e2d6c656964656e026e6c0000010001c0100002000100015180000c026e73066863636e6574c025c01000020001000151800006036e7332c03c + +32502 +b6d75f37501044709ff60000000000000000 +b6d7df340000000000000000 + +32503 +b6d75f37501044709ff60000000000000000 +b6d7df340000000000000000 + +32504 +9e5200100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +9e5280000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +32505 +45a5000000010000000000000866616c6c6261636b0577696e646f026e6c0000010001 +45a5800000010000000200020866616c6c6261636b0577696e646f026e6c0000010001c015000200010001518000070469697331c015c01500020001000151800008056969733137c015c02f00010001000151800004d9aa050bc04200010001000151800004d9aa0430 + +32506 +b6d75f37501844703a11000000909cc8000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff7d403c50fd0003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 +b6d7df340000000000000000 + +32507 +05ed000000010000000000000377777708776f657374796e65026e6c0000010001 +05ed800000010000000200020377777708776f657374796e65026e6c0000010001c01000020001000151800009026e7303697873c019c01000020001000151800006036e7332c030c02d00010001000151800004d4f13ff8c04200010001000151800004d4f13ff9 + +32508 +2cbd000000010000000000000468637267026e6c00000f0001 +2cbd800000010000000200000468637267026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c028 + +32509 +9e3700000001000000000000026e73076e656473746174026e6c0000010001 +9e3780000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +32510 +843b00000001000000000000036e7333076e656473746174026e6c0000010001 +843b80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +32511 +b6d75f45501144629f630000000000000000 +b6d7df440000000000000000 + +32512 +0000000070024000bf550000020405b401010402 +000080010000000000000000 + +32513 +e7d000000001000000000000036e733107737572666e6574026e6c0000010001 +e7d080000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +32514 +b6d75f46501044629f620000000000000000 +b6d7df440000000000000000 + +32515 +b6d75f46501044629f620000000000000000 +b6d7df440000000000000000 + +32516 +b6d84c5e50104470e4620000000000000000 +b6d8cc540000000000000000 + +32517 +b6d84c5e50104470e4620000000000000000 +b6d8cc540000000000000000 + +32518 +218800000001000000000000046e743036036d7069026e6c0000010001 +218880000001000000020002046e743036036d7069026e6c0000010001c011000200010001518000080573756e3032c011c01100020001000151800006036e7332c011c02900010001000151800004c0574f3ec03d00010001000151800004c0574f37 + +32519 +98d200000001000000000000037777771264656c65756b7374656b6c656572746a6573026e6c0000010001 +98d280000001000000020000037777771264656c65756b7374656b6c656572746a6573026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c03a + +32520 +f22400000001000000000000037777770677656b616d70026e6c0000010001 +f22480000001000000020000037777770677656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02f + +32521 +b6d84c5e501844707e7f000000909cc6000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff7d403c50fd0003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 +b6d8cc540000000000000000 + +32522 +413b000000010000000000000f4575726f6c696e652d6e73307666750e6575726f6c696e656f6e6c696e65026e6c0000010001 +413b840300010000000100000f4575726f6c696e652d6e73307666750e6575726f6c696e656f6e6c696e65026e6c0000010001c02b00060001000038400036026e730f646f6d61696e2d7265676973747279c02b0a686f73746d6173746572c0420bf1e540000070800000384000278d0000003840 + +32523 +b6d84c6c50114462e3cf0000000000000000 +b6d8cc640000000000000000 + +32524 +b9ac0000000100000000000008686f73746e616d650462696e640000100003 +b9ac8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32525 +b6d84c6d50104462e3ce0000000000000000 +b6d8cc640000000000000000 + +32526 +b6d84c6d50104462e3ce0000000000000000 +b6d8cc640000000000000000 + +32527 +89a600000001000000000000037777770579696c6469026e6c0000010001 +89a680000001000000020002037777770579696c6469026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +32528 +89b20000000100000000000003777777026c31026e6c0000010001 +89b28000000100000002000003777777026c31026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02b + +32529 +23e600000001000000000000037777770c72656d636f646570656d636f026e6c0000010001 +23e680000001000000020000037777770c72656d636f646570656d636f026e6c0000010001c01000020001000151800015036e73310b7072696f73657276653037036e657400c01000020001000151800006036e7332c035 + +32530 +ee0a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ee0a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32531 +2d480000000100000000000013535445524c494e47534156494e475342414e4b026e6c0000020001 +2d488403000100000001000013535445524c494e47534156494e475342414e4b026e6c0000020001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +32532 +ae11000000010000000000000a6c6576636f67726f6570026e6c0000020001 +ae11800000010000000200020a6c6576636f67726f6570026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +32533 +a37400100001000000000000037777770c7461616c707572697374656e026e6c0000010001 +a37480000001000000020002037777770c7461616c707572697374656e026e6c0000010001c0100002000100015180000a036e733103677673c01dc01000020001000151800006036e7332c035c031000100010001518000045054e1aac04700010001000151800004d4ccc646 + +32534 +82c4000000010000000000000377777708643636617374656e026e6c0000010001 +82c4800000010000000200000377777708643636617374656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +32535 +2d61000000010000000000000377777703632661026e6c0000010001 +2d61840300010000000100000377777703632661026e6c0000010001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +32536 +d7d40000000100000000000004646e7332066e696a636f6d026e6c0000010001 +d7d48000000100000002000204646e7332066e696a636f6d026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02c00010001000151800004d5efb108c00c00010001000151800004d5efb116 + +32537 +736000000001000000000000037777770a6c65756b657374617274026e6c0000010001 +736080000001000000030003037777770a6c65756b657374617274026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +32538 +73cb00000001000000000000037777770a61626e616d726f777474026e6c0000010001 +73cb80000001000000020000037777770a61626e616d726f777474026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c032 + +32539 +dfff00000001000000000000037777771662656472696a6673616676616c736368656964696e67026e6c0000010001 +dfff80000001000000030001037777771662656472696a6673616676616c736368656964696e67026e6c0000010001c0100002000100015180000e026e7308767575727765726bc027c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c059c03b000100010001518000043efa0202 + +32540 +69c200000001000000000000036e7331056132303030026e6c0000010001 +69c280000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +32541 +272100000001000000000000036e7332056132303030026e6c0000010001 +272180000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +32542 +68d0000000010000000000000b776f726c646f6e6c696e65026e6c0000010001 +68d0800000010000000300020b776f726c646f6e6c696e65026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +32543 +485400000001000000000000037777770976616b6b616e6a6572026e6c0000010001 +485484030001000000010000037777770976616b6b616e6a6572026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +32544 +5a0d00000001000000000000024e53085241424f42414e4b026e6c0000010001 +5a0d80000001000000020001024e53085241424f42414e4b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +32545 +125200000001000000000000024e53085241424f42414e4b026e6c0000260001 +125280000001000000020001024e53085241424f42414e4b026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +32546 +62de00000001000000000000046d61696c096c65617365706c616e026e6c0000010001 +62de80000001000000020001046d61696c096c65617365706c616e026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000d026e73046575726f036e657400c02f00010001000151800004c286e702 + +32547 +61dc00000001000000000000037777770a77656273657867696473026e6c0000010001 +61dc80000001000000030002037777770a77656273657867696473026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +32548 +02f500000001000000000000037777770433616970026e6c0000010001 +02f580000001000000020000037777770433616970026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c015c0100002000100015180000704686e7331c02e + +32549 +fe9600100001000000000001076863636669646f03686363026e6c0000ff00010000290800000000000000 +fe9680000001000000020001076863636669646f03686363026e6c0000ff0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c0320000291000000000000000 + +32550 +addc00000001000000000000046d33706f026e6c00000f0001 +addc80000001000000020002046d33706f026e6c00000f0001c00c0002000100015180000e04646e7331066e696a636f6dc011c00c0002000100015180000704646e7332c02ac02500010001000151800004d5efb108c03f00010001000151800004d5efb116 + +32551 +2e7c000000010000000000000745434f4e3232380867656d65656e74650c67656c6465726d616c73656e026e6c0000010001 +2e7c800000010000000200020745434f4e3232380867656d65656e74650c67656c6465726d616c73656e026e6c0000010001c01d00020001000151800005026e73c01dc01d00020001000151800006036e7332c01dc03e00010001000151800004c143b9b5c04f00010001000151800004c143b9b6 + +32552 +dbfc0000000100000000000004444e5331055348454c4c026e6c0000010001 +dbfc8000000100000003000004444e5331055348454c4c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +32553 +c4d500100001000000000001046d61696c03777873026e6c00000100010000290800000000000000 +c4d580000001000000030004046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a650000291000000000000000 + +32554 +fddf000000010000000000000468637267026e6c00000f0001 +fddf800000010000000200000468637267026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c028 + +32555 +7ac300100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +7ac380000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +32556 +19400000000100000000000007616e74656e6e61026e6c00000f0001c0 +19408000000100000002000107616e74656e6e61026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +32557 +1f8c00000001000000000000066465636f636f026e6c00000f0001 +1f8c80000001000000020000066465636f636f026e6c00000f0001c00c00020001000151800012036e7333086e6574766c696573036e657400c00c00020001000151800006036e7334c02b + +32558 +71440000000100000000000003777777056e6f6b6961026e6c0000010001 +71448000000100000004000003777777056e6f6b6961026e6c0000010001c0100002000100015180000e026e73056e6f6b696103636f6d00c01000020001000151800006036e7332c02dc0100002000100015180000b046e73646103657874c02dc01000020001000151800007046e73686bc05b + +32559 +3f05000000010000000000000a6c657665646573746164026e6c0000020001 +3f05800000010000000200020a6c657665646573746164026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +32560 +9a790000000100000000000005756e696361026e6c00000f0001 +9a798000000100000003000105756e696361026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +32561 +364400000001000000000000086a64672d696e7374026e6c00000f0001 +364480000001000000020000086a64672d696e7374026e6c00000f0001c00c0002000100015180000c036e723405692d702d64c015c00c00020001000151800006036e7236c02d + +32562 +74290000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +74298000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32563 +5db200000001000000000000086a64672d696e7374026e6c00000f0001 +5db280000001000000020000086a64672d696e7374026e6c00000f0001c00c0002000100015180000c036e723405692d702d64c015c00c00020001000151800006036e7236c02d + +32564 +cc38000000010000000000000237340331393603313932033230330964796e61626c6f636b07656173796e6574026e6c0000100001 +cc38800000010000000200020237340331393603313932033230330964796e61626c6f636b07656173796e6574026e6c0000100001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +32565 +23d1000000010000000000000d73656375726974797072696e74026e6c0000010001 +23d1800000010000000200010d73656375726974797072696e74026e6c0000010001c00c0002000100015180000a036e733303777873c01ac00c00020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +32566 +79ff0000000100000000000003777777096d756c7469626c6164026e6c0000010001 +79ff8000000100000002000203777777096d756c7469626c6164026e6c0000010001c01000020001000151800009036e7331026973c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5852102c04300010001000151800004d5c41503 + +32567 +9c65000000010000000000000377777703736e70026e6c0000010001 +9c65800000010000000200000377777703736e70026e6c0000010001c0100002000100015180000f026e7306696e74616b7403636f6d00c01000020001000151800010036e733206776964657873036e657400 + +32568 +aa120000000100000000000006636173746f72086c6f7374626f7973026e6c0000010001 +aa128000000100000002000206636173746f72086c6f7374626f7973026e6c0000010001c01300020001000151800002c00cc0130002000100015180000906706f6c6c7578c013c00c000100010001518000043e32050ac03e00010001000151800004c297d912 + +32569 +038a00000001000000000000026e7309656174736572766572026e6c0000010001 +038a80000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +32570 +81c500000001000000000000036e733209656174736572766572026e6c0000010001 +81c580000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +32571 +446d0000000100000000000003777777026e6c0676656e7261790963697479746f776572026e6c0000010001 +446d8000000100000002000003777777026e6c0676656e7261790963697479746f776572026e6c0000010001c01a00020001000151800013037764780963697479746f77657203636f6d00c01a00020001000151800006036e7678c03c + +32572 +f65300000001000000000000036b3272026e6c00000f0001 +f65380000001000000020000036b3272026e6c00000f0001c00c0002000100015180000f026e7306777367617465036e657400c00c00020001000151800006036e7332c027 + +32573 +5a4200000001000000000000036e733106737072696e74026e6c00001c0001 +5a4280000001000000020002036e733106737072696e74026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c202c03900010001000151800004d4ccd6a6 + +32574 +4c8600000001000000000000036e733106737072696e74026e6c0000260001 +4c8680000001000000020002036e733106737072696e74026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c202c03900010001000151800004d4ccd6a6 + +32575 +ff4f00000001000000000000036e733206737072696e74026e6c00001c0001 +ff4f80000001000000020002036e733206737072696e74026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d973c202c00c00010001000151800004d4ccd6a6 + +32576 +534800000001000000000000036e733206737072696e74026e6c0000260001 +534880000001000000020002036e733206737072696e74026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d973c202c00c00010001000151800004d4ccd6a6 + +32577 +c3ac00000001000000000000036e733107737572666e6574026e6c0000010001 +c3ac80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +32578 +e00a000000010000000000000377777706766974686173026e6c0000010001 +e00a800000010000000300020377777706766974686173026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +32579 +a9b30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a9b38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32580 +feaa00000001000000000000046d61696c03777873026e6c0000010001 +feaa80000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +32581 +23d9000000010000000000000631326d6f7665026e6c00000f0001 +23d9800000010000000300020631326d6f7665026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +32582 +dd5b000000010000000000000663726176656e0564656d6f6e026e6c0000010001 +dd5b800000010000000300020663726176656e0564656d6f6e026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c0130002000100015180000f036e73320564656d6f6e036e657400c02d00010001000151800004c29f4906c03f00010001000151800004c29fb004 + +32583 +6a91001000010000000000010377777706787334616c6c026e6c00000100010000290800000080000000 +6a91800000010000000300030377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d09630000291000000000000000 + +32584 +49350000000100000000000008696e6469676f6e6c026e6c00000f0001 +49358000000100000002000208696e6469676f6e6c026e6c00000f0001c00c00020001000151800012036e73310b696e6263686f7374696e67c015c00c00020001000151800006036e7332c02dc02900010001000151800004d5efb140c04700010001000151800004d5efb141 + +32585 +944e00000001000000000000037777770867736d6c696e6b73026e6c0000010001 +944e80000001000000030001037777770867736d6c696e6b73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +32586 +3b2900000001000000000000054558414354054558414354026e6c0000010001 +3b2980000001000000020001054558414354054558414354026e6c0000010001c01200020001000151800002c00cc0120002000100015180000b026e73026e6c036e657400c00c00010001000151800004910e3c0a + +32587 +8ea0000000010000000000000862617374696f6e3203766461026e6c0000010001 +8ea0800000010000000200010862617374696f6e3203766461026e6c0000010001c0150002000100015180000a0762617374696f6ec015c0150002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c02d00010001000151800004d5a0c7e2 + +32588 +a9dc00000001000000000000095354494e4b59434f57026e6c0000020001 +a9dc84030001000000010000095354494e4b59434f57026e6c0000020001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +32589 +73e300000001000000000000037777770e6b636b656e6e656d65726c616e64026e6c0000010001 +73e380000001000000020000037777770e6b636b656e6e656d65726c616e64026e6c0000010001c0100002000100015180000c026e7306766576696461c01fc01000020001000151800006036e7332c036 + +32590 +3d70000000010000000000000450433034116269626c696f746865656b626c6164656c026e6c0000010001 +3d70840300010000000100000450433034116269626c696f746865656b626c6164656c026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +32591 +64b9000000010000000000000a43435941434854494e47024e4c00000f0001 +64b9800000010000000200020a43435941434854494e47024e4c00000f0001c00c00020001000151800010026e730a7a65656c616e646e6574c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d473c0c1c04700010001000151800004d473c0c3 + +32592 +cd4900000001000000000000037777770c766f6c766f68617262657273026e6c0000010001 +cd4984030001000000010000037777770c766f6c766f68617262657273026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +32593 +06b8000000010000000000000377777706787334616c6c026e6c0000010001 +06b8800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +32594 +9a8e00000001000000000000036e733106776964657873026e6c0000010001 +9a8e80000001000000030002036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +32595 +a5c700000001000000000000036e733306776964657873026e6c0000010001 +a5c780000001000000030002036e733306776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa0703 + +32596 +6e5a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +6e5a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32597 +d1990010000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d1998000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32598 +d1f0000000010000000000000766313331323534057570632d66066368656c6c6f026e6c0000010001 +d1f0800000010000000300030766313331323534057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +32599 +ec6600100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +ec6680000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +32600 +94600000000100000000000003766461026e6c00000f0001 +94608000000100000002000103766461026e6c00000f0001c00c0002000100015180000a0762617374696f6ec00cc00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c02400010001000151800004d5a0c7e2 + +32601 +1c22000000010000000000000e64756262656c737465796e626d77026e6c0000010001 +1c22800000010000000200020e64756262656c737465796e626d77026e6c0000010001c00c0002000100015180000d04646e733105692d702d64c01bc00c0002000100015180000704646e7332c034c02f00010001000151800004d9124003c04800010001000151800004d9124104 + +32602 +e6e80000000100000000000009736d74702d6f75743406787334616c6c026e6c0000010001 +e6e88000000100000003000209736d74702d6f75743406787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +32603 +b2510000000100000000000003777777073132666f72756d026e6c0000010001 +b2518000000100000002000203777777073132666f72756d026e6c0000010001c01000020001000151800012036e73310b737461727464657369676ec018c01000020001000151800006036e7332c030c02c00010001000151800004d5f73823c04a000100010001518000043ed45149 + +32604 +6648000000010000000000000c676f686f6576656c616b656e026e6c00000f0001 +6648840300010000000100000c676f686f6576656c616b656e026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +32605 +b03f000000010000000000000d6c6576656c75706d757a69656b026e6c0000020001 +b03f800000010000000200020d6c6576656c75706d757a69656b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +32606 +5d2a28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d736463730f737465726e2d736572766572626f6c026e6c00002100010000025800270000006401850c737465726e2d7365727665720f737465726e2d736572766572626f6c026e6c00 +5d2aa8040000000000000000 + +32607 +00000000700240002fa400000204057a01010402 +000080010000000000000000 + +32608 +7f4b00000001000000000000076863636669646f03686363026e6c0000ff0001 +7f4b80000001000000020000076863636669646f03686363026e6c0000ff0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c032 + +32609 +114b001000010000000000010b6d61726b74706c61617473026e6c00000100010000290800000000000000 +114b800000010000000200010b6d61726b74706c61617473026e6c0000010001c00c0002000100015180000f036e733105796b6f6f6e036e657400c00c00020001000151800006036e7332c0300000291000000000000000 + +32610 +b6d9d267501041b8d1240000000000000000 + + +32611 +b6d9d267501841b8b41f000000945b40000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe2d403c4fad0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 + + +32612 +b6d9d275501141aad08d0000000000000000 + + +32613 +000000007002400024ae00000204057a01010402 +000080010000000000000000 + +32614 +74490000000100000000000004696e666f086263656e7472616c026e6c0000010001 +74498000000100000002000004696e666f086263656e7472616c026e6c0000010001c0110002000100015180001204646e73310763616c616e7a61036e657400c0110002000100015180000704646e7332c033 + +32615 +b6d9d276501041aad08c0000000000000000 + + +32616 +b6da64c0501041b833d50000000000000000 +b6dae4c40000000000000000 + +32617 +d76100000001000000000000037777770e76616e67616e736577696e6b656c026e6c0000010001 +d76180000001000000020002037777770e76616e67616e736577696e6b656c026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01fc01000020001000151800006036e7332c037c03300010001000151800004d43d0f08c05100010001000151800004d43d19e2 + +32618 +b6da64c0501841b84611000000942d00000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe2d403c4fad0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 +b6dae4c40000000000000000 + +32619 +28c2000000010000000000000b6d61726b74706c61617473026e6c0000010001 +28c2800000010000000200000b6d61726b74706c61617473026e6c0000010001c00c0002000100015180000f036e733105796b6f6f6e036e657400c00c00020001000151800006036e7332c030 + +32620 +dfe60000000100000000000003777777066f757476616b026e6c0000010001 +dfe68000000100000002000003777777066f757476616b026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02f + +32621 +b6da64ce501141aa333e0000000000000000 +b6dae4c40000000000000000 + +32622 +0000000070024000572500000204057a01010402 +000080010000000000000000 + +32623 +3832000000010000000000000e61726e6f6c642d73696564736d61026e6c0000010001 +3832800000010000000200000e61726e6f6c642d73696564736d61026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c033 + +32624 +2c9e0000000100000000000003657a68026e6c0000010001 +2c9e8000000100000002000103657a68026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c0240001000100015180000489ae8f03 + +32625 +b6da64cf501041aa333d0000000000000000 +b6dae4c40000000000000000 + +32626 +b6db160b501041b8b5000000000000000000 +b6db96040000000000000000 + +32627 +b6db160b501841b8ff3b00000094f500000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe2d403c4fad0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 +b6db96040000000000000000 + +32628 +a2a500000001000000000000036e733107737572666e6574026e6c0000010001 +a2a580000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +32629 +b6db1619501141aab4690000000000000000 +b6db96140000000000000000 + +32630 +8b7300000001000000000000037777770b6f6e6c696e652d64617461026e6c0000010001 +8b7380000001000000020002037777770b6f6e6c696e652d64617461026e6c0000010001c0100002000100015180000b036e73310431326e73c01cc01000020001000151800006036e7332c034c030000100010001518000043ed44ca0c047000100010001518000043ed4440c + +32631 +b6db161a501041aab4680000000000000000 +b6db96140000000000000000 + +32632 +2c4a00000001000000000000036e73310b736c61636b736572766572026e6c0000010001 +2c4a80000001000000020002036e73310b736c61636b736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ed444c0c03e000100010001518000043ed44d0a + +32633 +931100000001000000000000036e73320b736c61636b736572766572026e6c0000010001 +931180000001000000020002036e73320b736c61636b736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc030000100010001518000043ed444c0c00c000100010001518000043ed44d0a + +32634 +738e0000000100000000000003777777096f6e6465727374616c0a64656875697361727473026e6c0000010001 +738e8000000100000002000203777777096f6e6465727374616c0a64656875697361727473026e6c0000010001c01a00020001000151800009036e7331026973c025c01a00020001000151800006036e7332c03dc03900010001000151800004d5852102c04e00010001000151800004d5c41503 + +32635 +e2390000000100000000000003777777147665726b656572737363686f6f6c737563636573026e6c0000010001 +e2398000000100000002000003777777147665726b656572737363686f6f6c737563636573026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03f + +32636 +3a490000000100000000000005646e732d31056c61646f74026e6c0000010001 +3a498000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32637 +686b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +686b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32638 +c67a00000001000000000001036e733107616e7461726573026e6c00000100010000291000000000000000 +c67a80000001000000020003036e733107616e7461726573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3a260bc03a000100010001518000043e3a260c0000291000000000000000 + +32639 +118a00000001000000000001036e733207616e7461726573026e6c00000100010000291000000000000000 +118a80000001000000020003036e733207616e7461726573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3a260bc00c000100010001518000043e3a260c0000291000000000000000 + +32640 +c91400000001000000000000096c6576656c7a65726f026e6c0000020001 +c91480000001000000020002096c6576656c7a65726f026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +32641 +d9e60000000100000000000007706572736f7a61026e6c00000f0001 +d9e68000000100000002000207706572736f7a61026e6c00000f0001c00c00020001000151800009036e7331026973c014c00c00020001000151800006036e7332c02cc02800010001000151800004d5852102c03d00010001000151800004d5c41503 + +32642 +1f0a00000001000000000000086d61696c706f6e33086b706e72656c6179026e6c0000010001 +1f0a80000001000000020001086d61696c706f6e33086b706e72656c6179026e6c0000010001c0150002000100015180000c036e7331056532666178c01ec0150002000100015180000d036e7332036b706e036e657400c03200010001000151800004c2976c97 + +32643 +5afc00000001000000000000086d61696c706f6e33086b706e72656c6179026e6c00001c0001 +5afc80000001000000020001086d61696c706f6e33086b706e72656c6179026e6c00001c0001c0150002000100015180000c036e7331056532666178c01ec0150002000100015180000d036e7332036b706e036e657400c03200010001000151800004c2976c97 + +32644 +76a200000001000000000000037777770e6f726967696e616c64657369676e026e6c0000010001 +76a280000001000000020001037777770e6f726967696e616c64657369676e026e6c0000010001c0100002000100015180000f036e73330864686f7374696e67c01fc01000020001000151800006036e7332c037c04e00010001000151800004515b000a + +32645 +847700000001000000000000086d61696c706f6e32086b706e72656c6179026e6c0000010001 +847780000001000000020001086d61696c706f6e32086b706e72656c6179026e6c0000010001c0150002000100015180000c036e7331056532666178c01ec0150002000100015180000d036e7332036b706e036e657400c03200010001000151800004c2976c97 + +32646 +391400000001000000000000086d61696c706f6e32086b706e72656c6179026e6c00001c0001 +391480000001000000020001086d61696c706f6e32086b706e72656c6179026e6c00001c0001c0150002000100015180000c036e7331056532666178c01ec0150002000100015180000d036e7332036b706e036e657400c03200010001000151800004c2976c97 + +32647 +00a600000001000000000000026e7303773373026e6c0000010001 +00a680000001000000020001026e7303773373026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2e57c02 + +32648 +4481000000010000000000000774697363616c69026e6c00000f0001 +4481800000010000000300020774697363616c69026e6c00000f0001c00c0002000100015180000704616e7331c00cc00c0002000100015180000704616e7332c00cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02800010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +32649 +c67a00000001000000000000036e733107616e7461726573026e6c0000010001 +c67a80000001000000020002036e733107616e7461726573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3a260bc03a000100010001518000043e3a260c + +32650 +118a00000001000000000000036e733207616e7461726573026e6c0000010001 +118a80000001000000020002036e733207616e7461726573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3a260bc00c000100010001518000043e3a260c + +32651 +7d4000000001000000000000066c61626f7473026e6c00000f0001 +7d4080000001000000020002066c61626f7473026e6c00000f0001c00c00020001000151800017036e7331107370686572616e616d65736572766572c013c00c00020001000151800006036e7332c02bc0270001000100015180000451047004c04a0001000100015180000451047002 + +32652 +6c8500000001000000000000036e7331066e6c74726565026e6c0000010001 +6c8580000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +32653 +83e100000001000000000000036e7331066e6c74726565026e6c0000260001 +83e180000001000000020002036e7331066e6c74726565026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +32654 +699a000000010000000000000377777711617175617269616c65657577617264656e026e6c0000010001 +699a800000010000000200000377777711617175617269616c65657577617264656e026e6c0000010001c01000020001000151800013036e73300964757463682d6e657403636f6d00c01000020001000151800006036e7331c03a + +32655 +cbf400000001000000000000037777770665726e656e73026e6c0000010001 +cbf480000001000000020000037777770665726e656e73026e6c0000010001c01000020001000151800014026e730b7365727665722d686f6d65036e657400c01000020001000151800006036e7332c02e + +32656 +c3890000000100000000000005706f706d61026e6c00000f0001 +c3898000000100000002000205706f706d61026e6c00000f0001c00c0002000100015180000e036e7331076a646e686f7374c012c00c00020001000151800006036e7332c02ac026000100010001518000045054e451c040000100010001518000045054e452 + +32657 +b2e600000001000000000000037777770f74686561746572616c616361727465026e6c0000010001 +b2e680000001000000030001037777770f74686561746572616c616361727465026e6c0000010001c0100002000100015180000e026e7308767575727765726bc020c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c052c034000100010001518000043efa0202 + +32658 +121a000000010000000000000c6562686164766f636174656e026e6c00000f0001 +121a800000010000000200000c6562686164766f636174656e026e6c00000f0001c00c000200010001518000140161026e73096c696e766973696f6e03636f6d00c00c000200010001518000040162c02f + +32659 +947300000001000000000000066a626a776562026e6c00000f0001 +947380000001000000020002066a626a776562026e6c00000f0001c00c0002000100015180000a036e733103647768c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5efb308c03d00010001000151800004d5efb303 + +32660 +38b60000000100000000000009652d6c756e61746963026e6c0000010001 +38b68000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +32661 +6b0a0000000100000000000004444e5331055348454c4c026e6c0000010001 +6b0a8000000100000003000004444e5331055348454c4c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +32662 +4692000000010000000000000e6174686c6f6e6361726c65617365026e6c00000f0001 +4692800000010000000300030e6174686c6f6e6361726c65617365026e6c00000f0001c00c00020001000151800010036e7331096d61726b6772616166c01bc00c00020001000151800006036e7332c033c00c00020001000151800006036e7333c033c02f00010001000151800004c3f13ceec04b00010001000151800004c372eb43c05d000100010001518000043e320e8f + +32663 +9a56000000010000000000000a6d61696c6261636b7570066e6c74726565026e6c0000010001 +9a56800000010000000200020a6d61696c6261636b7570066e6c74726565026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03200010001000151800004d4b20403c04400010001000151800004d5881e45 + +32664 +21f800000001000000000000097265706f72742d6e6c027330026e6c0000010001 +21f880000001000000020002097265706f72742d6e6c027330026e6c0000010001c0160002000100015180000d026e73076e656473746174c019c01600020001000151800006036e7333c030c02d00010001000151800004d4482615c04600010001000151800004d5c4021d + +32665 +3bb40000000100000000000007617065736a6974026e6c0000ff0001 +3bb48000000100000002000007617065736a6974026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c014c00c00020001000151800006036e7332c02b + +32666 +362e00000001000000000000046d61696c0f7363687265756465726875697a656e026e6c0000010001 +362e80000001000000030001046d61696c0f7363687265756465726875697a656e026e6c0000010001c0110002000100015180000e026e7308767575727765726bc021c01100020001000151800012036e733208767575727765726b036e657400c01100020001000151800006036e7333c053c035000100010001518000043efa0202 + +32667 +b880000000010000000000000770617261676f6e026e6c00000f0001 +b880800000010000000300010770617261676f6e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +32668 +6c9600000001000000000000066a626a776562026e6c0000010001 +6c9680000001000000020002066a626a776562026e6c0000010001c00c0002000100015180000a036e733103647768c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5efb308c03d00010001000151800004d5efb303 + +32669 +3c320000000100000000000006617272616e64026e6c00000f0001 +3c328000000100000002000006617272616e64026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02a + +32670 +14a3000000010000000000000377777703766964026e6c0000010001 +14a3800000010000000200020377777703766964026e6c0000010001c01000020001000151800011036e73310a616363657373706f7274c014c01000020001000151800006036e7332c02cc02800010001000151800004d4483408c04500010001000151800004d4483409 + +32671 +ab02000000010000000000000863656e6562616e6b026e6c00000f0001 +ab02800000010000000200000863656e6562616e6b026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +32672 +59c00000000100000000000003666c79036b6c6d026e6c0000010001 +59c08000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +32673 +1807000000010000000000000776657273696f6e0462696e640000100003 +1807800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +32674 +3ad5000000010000000000000377777706787334616c6c026e6c0000010001 +3ad5800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +32675 +3dbb00000001000000000000037777770b73657866696c6d70696573026e6c0000010001 +3dbb80000001000000020000037777770b73657866696c6d70696573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c033 + +32676 +be1c00100001000000000001046f6b656d026e6c00000f00010000290800000080000000 +be1c80000001000000020001046f6b656d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +32677 +3afe0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3afe8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32678 +bf9b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +bf9b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32679 +c8cd00000001000000000000036e73320b666163696e676661637473026e6c0000010001 +c8cd80000001000000020002036e73320b666163696e676661637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +32680 +b4ec00000001000000000000026e730b666163696e676661637473026e6c0000010001 +b4ec80000001000000020002026e730b666163696e676661637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +32681 +85370000000100000000000008686f73746e616d650462696e640000100003 +85378000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32682 +797e000000010000000000000573696e6574026e6c00001c0001 +797e800000010000000200010573696e6574026e6c00001c0001c00c000200010001518000110a686f6c30316578646e730369636cc012c00c0002000100015180000b026e73026e6c036e657400c02600010001000151800004c14f9064 + +32683 +53a900000001000000000000026e6c0000060001 +53a984000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +32684 +0afc00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +0afc80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +32685 +829a00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +829a80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +32686 +c14d00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +c14d80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +32687 +565f00000001000000000000067765626e69780e6575726f636f6e73756c74616e74026e6c0000010001 +565f80000001000000020002067765626e69780e6575726f636f6e73756c74616e74026e6c0000010001c01300020001000151800002c00cc0130002000100015180000a076d61696c6e6978c013c00c000100010001518000045117e555c044000100010001518000045117e556 + +32688 +5a750000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +5a758000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32689 +e49b00000001000000000000037777770b6d61726b74706c61617073026e6c0000010001 +e49b84030001000000010000037777770b6d61726b74706c61617073026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +32690 +ed7f0000000100000000000008686f73746e616d650462696e640000100003 +ed7f8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32691 +e638000000010000000000000377777706672d6e697573026e6c0000010001 +e638800000010000000200000377777706672d6e697573026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +32692 +ba6d00000001000000000000056d61696c3109656e6f766174696f6e026e6c0000010001 +ba6d80000001000000030002056d61696c3109656e6f766174696f6e026e6c0000010001c01200020001000151800006036e7334c012c01200020001000151800006036e7333c012c0120002000100015180001404646e733309656e6f766174696f6e036e657400c030000100010001518000049105fc46c042000100010001518000049105fc4e + +32693 +b16e00000001000000000000026e73076e656473746174026e6c0000010001 +b16e80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +32694 +c13300000001000000000000036e7333076e656473746174026e6c0000010001 +c13380000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +32695 +b18c00000001000000000000036e7331046372696f026e6c0000010001 +b18c80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32696 +d89e00000001000000000000036e7332046372696f026e6c0000010001 +d89e80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32697 +adc700000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +adc780000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32698 +675c00000001000000000000026e730f444f4d41494e2d5245474953545259026e6c00001c0001 +675c80000001000000030002026e730f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +32699 +f2aa00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +f2aa80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32700 +52ba00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +52ba80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +32701 +512c0000000100000000000003777777087365637572697479026e6c0000010001 +512c8000000100000002000203777777087365637572697479026e6c0000010001c0100002000100015180000b036e73310470696e65c019c01000020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +32702 +c05e00100001000000000001036e733503777873026e6c00000100010000290800000080000000 +c05e80000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +32703 +039800000001000000000000066865726d657304626f757703746e6f026e6c0000010001 +039880000001000000030003066865726d657304626f757703746e6f026e6c0000010001c0180002000100015180000b0866726f6e74696572c018c0180002000100015180000e036e733107737572666e6574c01cc01800020001000151800007047a657573c018c0300001000100015180000486dd0102c04700010001000151800004c0576a65c0610001000100015180000486dd0202 + +32704 +15ae0000000100000000000006746e6f66656c0366656c03746e6f026e6c0000010001 +15ae8000000100000003000306746e6f66656c0366656c03746e6f026e6c0000010001c0170002000100015180000b0866726f6e74696572c017c0170002000100015180000e036e733107737572666e6574c01bc01700020001000151800007047a657573c017c02f0001000100015180000486dd0102c04600010001000151800004c0576a65c0600001000100015180000486dd0202 + +32705 +5516000000010000000000000866726f6e7469657203746e6f026e6c0000010001 +5516800000010000000300030866726f6e7469657203746e6f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c01500020001000151800007047a657573c015c00c0001000100015180000486dd0102c03b00010001000151800004c0576a65c0550001000100015180000486dd0202 + +32706 +ff590000000100000000000003646578026e6c0000ff0001 +ff598000000100000002000203646578026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +32707 +6000000000010000000000000a6261706172746e657273026e6c0000ff0001 +6000800000010000000200000a6261706172746e657273026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c017c00c00020001000151800006036e7332c02e + +32708 +602f00000001000000000000036e733503777873026e6c0000010001 +602f80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +32709 +bf0b00000001000000000000046d61696c1162656b6b657273636f6e73756c74696e67026e6c0000010001 +bf0b80000001000000020000046d61696c1162656b6b657273636f6e73756c74696e67026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c03d + +32710 +69460000000100000000000006666c76697573026e6c00000f0001 +69468403000100000001000006666c76697573026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +32711 +907a0000000100000000000003777777146e6174696f6e616c652076616361747562616e6b026e6c0000010001 +907a8403000100000001000003777777146e6174696f6e616c652076616361747562616e6b026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +32712 +8e9400000001000000000000056d61696c3207686f7374696e67026e6c0000010001 +8e9480000001000000030003056d61696c3207686f7374696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02e000100010001518000043e818b01c040000100010001518000043e818b02c052000100010001518000043e818ae1 + +32713 +1e920000000100000000000007766462636f6d70026e6c00001c0001 +1e928000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +32714 +6fdb000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000010001 +6fdb800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000010001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +32715 +a6b600000001000000000000037777770a6d697374657268616e73026e6c0000010001 +a6b680000001000000030003037777770a6d697374657268616e73026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c01bc01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02f0001000100015180000450474002c04d0001000100015180000450474102c05f00010001000151800004d943ee57 + +32716 +95c90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +95c98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32717 +35eb00000001000000000000046f6b656d026e6c00000f0001 +35eb80000001000000020000046f6b656d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c029 + +32718 +757800000001000000000000037777770b68697473666f726b696473026e6c0000010001 +757880000001000000020002037777770b68697473666f726b696473026e6c0000010001c01000020001000151800014036e73310d616c74656e61686f7374696e67c01cc0100002000100015180000f036e7332087375706572776562c01cc030000100010001518000043e15f001c050000100010001518000043e15f00e + +32719 +ddac0000000100000000000005646e732d32056c61646f74026e6c0000010001 +ddac8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32720 +127c00000001000000000000037777770577616e6170026e6c0000010001 +127c84030001000000010000037777770577616e6170026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +32721 +2c5d28000001000000010000026e6c0000060001055f6c646170045f7463702464633838393763392d636231362d346164362d393863662d34633062366433396431613407646f6d61696e73065f6d736463730470737277026e6c000021000100000258001700000064018507707372776673310470737277026e6c00 +2c5da8040000000000000000 + +32722 +195e00000001000000000000046d61696c057374656275026e6c0000010001 +195e80000001000000020002046d61696c057374656275026e6c0000010001c0110002000100015180000f036e7331087375626d65646961c017c01100020001000151800006036e7332c02fc02b00010001000151800004d5bd141ac04600010001000151800004d5bd141b + +32723 +00000000700240009bd60000020405b401010402 +000080010000000000000000 + +32724 +829a00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +829a80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +32725 +b6dcb7745010447055c90000000000000000 + + +32726 +aa5b00000001000000000000037777770972696e67746f6e696f026e6c0000010001 +aa5b80000001000000020002037777770972696e67746f6e696f026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efa404c04b00010001000151800004d5efa405 + +32727 +b6dcb77450184470b7940000008af31e000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 + + +32728 +a2e10000000100000000000005646e732d31056c61646f74026e6c0000010001 +a2e18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32729 +03d10000000100000000000005646e732d32056c61646f74026e6c0000010001 +03d18000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32730 +588d000000010000000000000377777704746a6173026e6c0000010001 +588d800000010000000200000377777704746a6173026e6c0000010001c0100002000100015180000c026e7306766576696461c015c01000020001000151800006036e7332c02c + +32731 +8baa00000001000000000000086168636272616e640564656d6f6e026e6c00000f0001 +8baa80000001000000030002086168636272616e640564656d6f6e026e6c00000f0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +32732 +8ab800000001000000000000037777770c6b7275697372696464657273026e6c0000010001 +8ab880000001000000030003037777770c6b7275697372696464657273026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01dc0100002000100015180000e0b6e616d6573657276657232c03dc0100002000100015180000e0b6e616d6573657276657233c03dc0310001000100015180000451ad2020c0550001000100015180000451ad2021c06f0001000100015180000452c049aa + +32733 +b6dcb78250114462553c0000000000000000 + + +32734 +b6dcb78350104462553b0000000000000000 + + +32735 +f8b3000000010000000000000377777706646967696d6f026e6c0000010001 +f8b3800000010000000200000377777706646967696d6f026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c031 + +32736 +0000000070024000de930000020405b401010402 +000080010000000000000000 + +32737 +fab528000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730c6f6d64656e6f6f72642d6873026e6c00002100010000025800220000006401850a6f6d64656e6f6f722d310c6f6d64656e6f6f72642d6873026e6c00 +fab5a8040000000000000000 + +32738 +910b00000001000000000000037777770b73746567656d65696a6572026e6c0000010001 +910b80000001000000030000037777770b73746567656d65696a6572026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c038c0100002000100015180000a076e73686f737433c038 + +32739 +b6dd42c2501044700d380000000000000000 +b6ddc2c40000000000000000 + +32740 +614900000001000000000000046d61696c03777873026e6c0000010001 +614980000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +32741 +73d20000000100000000000005646e732d31056c61646f74026e6c0000010001 +73d28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32742 +bdd100000001000000000000046162656c0564656d6f6e026e6c0000100001 +bdd180000001000000030002046162656c0564656d6f6e026e6c0000100001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +32743 +b6dd42c2501844709dac0000008ac576000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 +b6ddc2c40000000000000000 + +32744 +6cf900000001000000000000046e7365310963617067656d696e69026e6c0000010001 +6cf980000001000000030003046e7365310963617067656d696e69026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e736532c011c0110002000100015180000b086e732d69736d3031c011c00c00010001000151800004c6b8e70dc03d00010001000151800004c6b8e70cc05000010001000151800004d5f4a024 + +32745 +875a00000001000000000000046e7365320963617067656d696e69026e6c0000010001 +875a80000001000000030003046e7365320963617067656d696e69026e6c0000010001c01100020001000151800007046e736531c011c01100020001000151800002c00cc0110002000100015180000b086e732d69736d3031c011c02f00010001000151800004c6b8e70dc00c00010001000151800004c6b8e70cc05000010001000151800004d5f4a024 + +32746 +43ad00000001000000000000086e732d69736d30310963617067656d696e69026e6c0000010001 +43ad80000001000000030003086e732d69736d30310963617067656d696e69026e6c0000010001c01500020001000151800007046e736531c015c01500020001000151800007046e736532c015c01500020001000151800002c00cc03300010001000151800004c6b8e70dc04600010001000151800004c6b8e70cc00c00010001000151800004d5f4a024 + +32747 +eda40000000100000000000005646e732d32056c61646f74026e6c0000010001 +eda48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32748 +b6dd42d0501144620cab0000000000000000 +b6ddc2d40000000000000000 + +32749 +f08e00000001000000000000096c65617365706c616e026e6c00000f0001 +f08e80000001000000020001096c65617365706c616e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000d026e73046575726f036e657400c02a00010001000151800004c286e702 + +32750 +1c2600000001000000000000046d61696c03777873026e6c00001c0001 +1c2680000001000000030003046d61696c03777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +32751 +00000000700240002fe800000204056401010402 +000080010000000000000000 + +32752 +b6dd42d1501044620caa0000000000000000 +b6ddc2d40000000000000000 + +32753 +44a900000001000000000000046e73303803777873026e6c00001c0001 +44a980000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32754 +0000000070024000d64a0000020405b401010402 +000080010000000000000000 + +32755 +311e000000010000000000000377777708616e6e6f31383930026e6c0000010001 +311e800000010000000200020377777708616e6e6f31383930026e6c0000010001c0100002000100015180000d036e733106313233623262c019c01000020001000151800006036e7332c031c02d000100010001518000045054e5b5c046000100010001518000045054e5b6 + +32756 +64e800000001000000000000046e73303903777873026e6c00001c0001 +64e880000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32757 +2dbd00000001000000000000036e733403777873026e6c00001c0001 +2dbd80000001000000030003036e733403777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +32758 +16c000000001000000000000037777770467696674026e6c0000010001 +16c080000001000000020002037777770467696674026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +32759 +4da50000000100000000000005646e732d31056c61646f74026e6c0000010001 +4da58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32760 +1f0d00000001000000000000046d61696c03777873026e6c0000010001 +1f0d80000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +32761 +b6de7c0150104470cbae0000000000000000 +b6defc040000000000000000 + +32762 +b6dde32a501040b0c1930000000000000000 + + +32763 +b6de7c015018447089cb0000008a97ce000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 +b6defc040000000000000000 + +32764 +b6dde32a501840b028ec000000953809000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0270403c53f00003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 + + +32765 +395b000000010000000000000377777708636d757064617465026e6c0000010001 +395b800000010000000200020377777708636d757064617465026e6c0000010001c01000020001000151800011036e73310a64696769747061696e74c019c01000020001000151800006036e7332c031c02d00010001000151800004d9aa12e7c04a00010001000151800004d9aa12e6 + +32766 +4b9800000001000000000000076c657769737072026e6c0000020001 +4b9880000001000000020002076c657769737072026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +32767 +b6de7c0f50114462cb210000000000000000 +b6defc040000000000000000 + +32768 +b6dde338501140a2c0fb0000000000000000 + + +32769 +b6de7c1050104462cb200000000000000000 +b6defc140000000000000000 + +32770 +0000000070024000beb100000204056401010402 +000080010000000000000000 + +32771 +1f370000000100000000000005646e732d32056c61646f74026e6c0000010001 +1f378000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32772 +cd4b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +cd4b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32773 +b6dde339501040a2c0fa0000000000000000 + + +32774 +b6df39ac501040b0f9d90000000000000000 +b6dfb9a40000000000000000 + +32775 +aca30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +aca38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32776 +b6df39ac501840b0a77000000095f2cb000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0270403c53f00003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 +b6dfb9a40000000000000000 + +32777 +85300000000100000000000003777777077a616e64696e67026e6c0000010001 +85308000000100000003000203777777077a616e64696e67026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +32778 +d331000000010000000000000377777709656c616e686f626279026e6c0000010001 +d331800000010000000200000377777709656c616e686f626279026e6c0000010001c01000020001000151800014026e730b7365727665722d686f6d65036e657400c01000020001000151800006036e7332c031 + +32779 +2c6028000001000000020000026e6c00000600012464633532663064342d336431652d346162352d393232662d346130326630306236343937065f6d736463730470737277026e6c00000500ff000000000000c0140005000100000258001107707372776673310470737277026e6c00 +2c60a8040000000000000000 + +32780 +b6df39ba501140a2f9410000000000000000 +b6dfb9b40000000000000000 + +32781 +00000000700240008b4100000204056401010402 +000080010000000000000000 + +32782 +515b0000000100000000000003777777077377696e676572026e6c0000010001 +515b8000000100000002000003777777077377696e676572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02f + +32783 +bd080000000100000000000005646e732d31056c61646f74026e6c0000010001 +bd088000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32784 +f2430000000100000000000005646e732d32056c61646f74026e6c0000010001 +f2438000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32785 +63f10000000100000000000003777777096175746f696e747261026e6c0000010001 +63f18000000100000002000203777777096175746f696e747261026e6c0000010001c01000020001000151800009026e730368616ec01ac0100002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004914a670ac04300010001000151800004c0576a65 + +32786 +0000000070024000e8b40000020405b401010402 +000080010000000000000000 + +32787 +2e210000000100000000000003777777026e73026e6c0000010001 +2e218000000100000002000103777777026e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800013036e7332026e6c0669676e697465036e657400c02700010001000151800004d46c0d06 + +32788 +b6df39bb501040a2f9400000000000000000 +b6dfb9b40000000000000000 + +32789 +731d00100001000000000001036e733107656173796e6574026e6c00000100010000290800000080000000 +731d80000001000000020003036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e050000291000000000000000 + +32790 +b6e211a950104470486d0000000000000000 +b6e291a40000000000000000 + +32791 +b6e12eb0501040b0d1630000000000000000 +b6e1aeb40000000000000000 + +32792 +b6e12eb0501840b0219a00000095502c000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0270403c53f00003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 +b6e1aeb40000000000000000 + +32793 +b6e211a95018447060d90000008a3c7e000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 +b6e291a40000000000000000 + +32794 +fb310000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +fb318000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +32795 +e6e50100000100000000000008616473657276657206776562616473026e6c0000010001 +e6e58100000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +32796 +b6e211b75011446247e00000000000000000 +b6e291b40000000000000000 + +32797 +dee70000000100000000000005646e732d31056c61646f74026e6c0000010001 +dee78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32798 +b6e12ebe501140a2d0cb0000000000000000 +b6e1aeb40000000000000000 + +32799 +4a2b000000010000000000000d656c6861636f736d6574696373026e6c00000f0001 +4a2b840300010000000100000d656c6861636f736d6574696373026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +32800 +36e028000001000000010000026e6c0000060001035f6763045f746370155374616e64616172642d6565727374652d73697465065f7369746573096575726f6279746532026e6c000021000100000258001e000000640cc40945422d534552564552096575726f6279746532026e6c00 +36e0a8040000000000000000 + +32801 +60650000000100000000000003777777026e6c0b706170656e6472656368740963697479746f776572026e6c0000010001 +60658000000100000002000003777777026e6c0b706170656e6472656368740963697479746f776572026e6c0000010001c01f00020001000151800013037764780963697479746f77657203636f6d00c01f00020001000151800006036e7678c041 + +32802 +4b650000000100000000000005646e732d32056c61646f74026e6c0000010001 +4b658000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32803 +b6e211b85010446247df0000000000000000 +b6e291b40000000000000000 + +32804 +0000000070024000f6aa0000020405b401010402 +000080010000000000000000 + +32805 +46a1000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c00001c0001 +46a1800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c00001c0001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +32806 +5ab30000000100000000000012776f6d656e2d6f662d7468652d776f726c64026e6c00000f0001 +5ab38000000100000003000112776f6d656e2d6f662d7468652d776f726c64026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01fc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c051c033000100010001518000043efa0202 + +32807 +b6e2fd18501044706af30000000000000000 + + +32808 +b6e12ebf501040a2d0ca0000000000000000 +b6e1aeb40000000000000000 + +32809 +b6e2fd1850184470bff90000008a00e5000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 + + +32810 +000000007002faf077cb00000204057a01010402 +000080010000000000000000 + +32811 +1fa000000001000000000000086865726272696e6b026e6c00000f0001 +1fa080000001000000020000086865726272696e6b026e6c00000f0001c00c00020001000151800014026e730b7365727665722d686f6d65036e657400c00c00020001000151800006036e7332c02c + +32812 +9acc00000001000000000000037777770a646973747269666f6f64026e6c0000010001 +9acc80000001000000020001037777770a646973747269666f6f64026e6c0000010001c01000020001000151800012036e733107686f7374696e6703656269c01bc0100002000100015180000d03646e73036b706e03636f6d00c02f00010001000151800004c1ad9c46 + +32813 +b6e2fd26501144626a660000000000000000 + + +32814 +b6e3b1255010fbec3b400000000000000000 + + +32815 +e20700000001000000000000036e733103617474026e6c0000010001 +e20780000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +32816 +8dd80000000100000000000005646e732d31056c61646f74026e6c0000010001 +8dd88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32817 +b6e3b1255018fbec7f23000000910700000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afedd403c505d0003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 + + +32818 +1f5a0000000100000000000006787334616c6c026e6c00000f0001 +1f5a8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +32819 +b6e2fd27501044626a650000000000000000 + + +32820 +29380000000100000000000005646e732d32056c61646f74026e6c0000010001 +29388000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32821 +00000000700240003b130000020405b401010402 +000080010000000000000000 + +32822 +8911000000010000000000000377777709636f656e67726f656e026e6c0000010001 +8911800000010000000200000377777709636f656e67726f656e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +32823 +b6e476715010447036010000000000000000 +b6e4f6740000000000000000 + +32824 +b6e3b1335011fbde3aac0000000000000000 + + +32825 +b6e4767150184470b8ae0000008ad33d000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004e03677373096d6963726f736f667403636f6d00403afd52403c4ed200030000002b4e544c4d535350000100000097b208e00400040027000000070007002000000050535257465331505352570000 +b6e4f6740000000000000000 + +32826 +2a5c0000000100000000000004636e61730661726e68656d066368656c6c6f026e6c0000010001 +2a5c8000000100000003000304636e61730661726e68656d066368656c6c6f026e6c0000010001c01800020001000151800007046e733031c018c01800020001000151800007046e733032c018c0180002000100015180000a036e733103757063c01fc03300010001000151800004d4534482c04600010001000151800004d4534483c05900010001000151800004d48e1c42 + +32827 +000000007002faf053c700000204057a01010402 +000080010000000000000000 + +32828 +b6e3b1345010fbde3aab0000000000000000 + + +32829 +b6e4767f5011446235740000000000000000 +b6e4f6740000000000000000 + +32830 +dd3c0000000100000000000006535449434144026e6c0000020001 +dd3c8403000100000001000006535449434144026e6c0000020001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +32831 +b6e4f3175010fbecd5480000000000000000 + + +32832 +b6e476805010446235730000000000000000 +b6e4f6840000000000000000 + +32833 +b6e4f3175018fbec01ad000000911f80000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afedd403c505d0003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 + + +32834 +417a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +417a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32835 +0bc0000000010000000000000774726166666963026e6c0000010001 +0bc0800000010000000200000774726166666963026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +32836 +90180000000100000000000005646e732d32056c61646f74026e6c0000010001 +90188000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32837 +b6e4f3255011fbded4b40000000000000000 + + +32838 +740400000001000000000000037777770e76616e67616e736577696e6b656c026e6c0000010001 +740480000001000000020002037777770e76616e67616e736577696e6b656c026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01fc01000020001000151800006036e7332c037c03300010001000151800004d43d0f08c05100010001000151800004d43d19e2 + +32839 +000000007002faf06dd600000204057a01010402 +000080010000000000000000 + +32840 +b6e4f3265010fbded4b30000000000000000 + + +32841 +b6e56de55010fbec74890000000000000000 +b6e5ede40000000000000000 + +32842 +b6e56de55018fbececec00000091d380000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afedd403c505d0003000000324e544c4d535350000100000097b208e00900090029000000090009002000000045422d5345525645524555524f42595445320000 +b6e5ede40000000000000000 + +32843 +040f00000001000000000000046168626c02626c06787334616c6c026e6c0000010001 +040f80000001000000030002046168626c02626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +32844 +8bdc00000001000000000000046168626c02626c06787334616c6c026e6c0000260001 +8bdc80000001000000030002046168626c02626c06787334616c6c026e6c0000260001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +32845 +fccd00000001000000000000037777770a656e64796d6165726961026e6c0000010001 +fccd80000001000000020002037777770a656e64796d6165726961026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c3b1f203c04d00010001000151800004d4ccf533 + +32846 +4203000000010000000000000573696d6163026e6c00000f0001 +4203800000010000000200020573696d6163026e6c00000f0001c00c0002000100015180000d046e73303105636f64696dc012c00c00020001000151800007046e733032c02bc02600010001000151800004d5f73004c03f00010001000151800004d43d46c7 + +32847 +906e000000010000000000000b726f69747261696e696e670564656d6f6e026e6c00000f0001 +906e800000010000000300020b726f69747261696e696e670564656d6f6e026e6c00000f0001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c0180002000100015180000f036e73320564656d6f6e036e657400c03200010001000151800004c29f4906c04400010001000151800004c29fb004 + +32848 +ec6500000001000000000000037777770873796d616e746563026e6c0000010001 +ec6580000001000000030000037777770873796d616e746563026e6c0000010001c01000020001000151800012036e73310873796d616e74656303636f6d00c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +32849 +99c20000000100000000000003777777107569747a656e64696e6767656d697374026e6c0000010001 +99c28000000100000002000203777777107569747a656e64696e6767656d697374026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c021c0100002000100015180000805726f62696ec03cc03500010001000151800004913a1e04c05100010001000151800004913a1a34 + +32850 +b65d0000000100000000000006636861726973026e6c00000f0001 +b65d8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +32851 +c2670000000100000000000005646e732d32056c61646f74026e6c0000010001 +c2678000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32852 +2cdc0000000100000000000003777777076e657763617273026e6c0000010001 +2cdc8000000100000002000003777777076e657763617273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c032 + +32853 +c90000000001000000000000036e7335046372696f026e6c0000010001 +c90080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32854 +10a800000001000000000000036e7336046372696f026e6c0000010001 +10a880000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +32855 +4d9200000001000000000000037777770d766163616e636573656c656374026e6c0000010001 +4d9280000001000000030003037777770d766163616e636573656c656374026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ec0100002000100015180000a076e736175746832c03ac0100002000100015180000a076e736175746833c03ac03200010001000151800004d5880c33c04c00010001000151800004d5880c3bc06200010001000151800004d4ccc00b + +32856 +21f4000000010000000000000766696c7465723209736974656279746573026e6c0000010001 +21f4800000010000000300030766696c7465723209736974656279746573026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c03200010001000151800004c2a55e5ac04400010001000151800004c356781cc056000100010001518000043ec58016 + +32857 +d627000000010000000000000766696c7465723209736974656279746573026e6c00001c0001 +d627800000010000000300030766696c7465723209736974656279746573026e6c00001c0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c03200010001000151800004c2a55e5ac04400010001000151800004c356781cc056000100010001518000043ec58016 + +32858 +6699000000010000000000000766696c7465723209736974656279746573026e6c0000010001 +6699800000010000000300030766696c7465723209736974656279746573026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c03200010001000151800004c2a55e5ac04400010001000151800004c356781cc056000100010001518000043ec58016 + +32859 +207c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +207c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32860 +840600000001000000000000036c6578026e6c0000020001 +840680000001000000020002036c6578026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +32861 +ee2400000001000000000000036e733107656173796e6574026e6c0000010001 +ee2480000001000000020002036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e05 + +32862 +39e90000000100000000000005646e732d32056c61646f74026e6c0000010001 +39e98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32863 +0752000000010000000000000d6f7665726475696e6b72656674026e6c0000010001 +0752800000010000000200000d6f7665726475696e6b72656674026e6c0000010001c00c00020001000151800010036e733106726f75746974036e657400c00c00020001000151800006036e7332c032 + +32864 +21df000000010000000000000467627063026e6c00000f0001 +21df800000010000000200000467627063026e6c00000f0001c00c0002000100015180000c026e7306766576696461c011c00c00020001000151800006036e7332c028 + +32865 +f6aa0000000100000000000009646566616d696c6965026e6c00000f0001 +f6aa8000000100000002000009646566616d696c6965026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02e + +32866 +a642000000010000000000000377777708736d6564696e6761026e6c0000010001 +a642800000010000000200020377777708736d6564696e6761026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c019c01000020001000151800006036e7332c031c02d00010001000151800004d5c401c0c04700010001000151800004d5c4035a + +32867 +e51400000001000000000000047069637306736a65656d7a026e6c0000010001 +e51480000001000000020000047069637306736a65656d7a026e6c0000010001c01100020001000151800013026e730a6e61616d736572766572036e657400c01100020001000151800006036e7331c02f + +32868 +4cce0000000100000000000003777777126f6276696f6e696e7465726d656469616972026e6c0000010001 +4cce8000000100000002000203777777126f6276696f6e696e7465726d656469616972026e6c0000010001c0100002000100015180000b036e73310477656233c023c01000020001000151800006036e7332c03bc03700010001000151800004d436240ec04e00010001000151800004c2b262ef + +32869 +434f00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +434f80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32870 +47ec00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +47ec80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32871 +60d700000001000000000000046d61696c0467627063026e6c0000010001 +60d780000001000000020000046d61696c0467627063026e6c0000010001c0110002000100015180000c026e7306766576696461c016c01100020001000151800006036e7332c02d + +32872 +4d5600000001000000000000056d61696c320467627063026e6c0000010001 +4d5680000001000000020000056d61696c320467627063026e6c0000010001c0120002000100015180000c026e7306766576696461c017c01200020001000151800006036e7332c02e + +32873 +2b1d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2b1d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32874 +7c23000000010000000000000a6d61696c66696c74657203696772026e6c0000010001 +7c23800000010000000200020a6d61696c66696c74657203696772026e6c0000010001c0170002000100015180000d0a6c65757665686176656ec017c0170002000100015180000d0a64656c6673686176656ec017c02f000100010001518000043e2d5e0dc048000100010001518000043e2d5e82 + +32875 +a0850000000100000000000008646473676f756461026e6c00000f0001 +a0858000000100000002000008646473676f756461026e6c00000f0001c00c0002000100015180000e036e73310469706d68036e657400c00c00020001000151800006036e7332c02d + +32876 +acaf0000000100000000000007666670726f303103616b6e026e6c0000010001 +acaf8000000100000002000207666670726f303103616b6e026e6c0000010001c01400020001000151800010066d696e6e6965066f6d726f6570c018c0140002000100015180000805726f62696ec033c02c00010001000151800004913a1e04c04800010001000151800004913a1a34 + +32877 +391e000000010000000000000f70616c74652d6861656e746a656e73026e6c00000f0001 +391e800000010000000200000f70616c74652d6861656e746a656e73026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c033 + +32878 +0000000060022238f39c0000020405b40000 +000080010000000000000000 + +32879 +ca860000000100000000000005646e732d32056c61646f74026e6c0000010001 +ca868000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32880 +b40400000001000000000000036e733107626265796f6e64026e6c0000010001 +b40480000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +32881 +f8c90000000100000000000007706f727461616c026e6c00000f0001 +f8c98000000100000002000007706f727461616c026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +32882 +5ddf000000010000000000000377777707666c6162626572026e6c0000010001 +5ddf800000010000000300020377777707666c6162626572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +32883 +3e650000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3e658000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32884 +344000000001000000000000067873657276650a79656c6c6f776d696e64026e6c0000010001 +344080000001000000030003067873657276650a79656c6c6f776d696e64026e6c0000010001c0130002000100015180000e026e7308736e696a64657273c01ec01300020001000151800005026e73c013c01300020001000151800006036e7332c013c03200010001000151800004c2e59918c04c00010001000151800004c2e59926c05d000100010001518000043e5dc28e + +32885 +b6e63c915010223817d20000000000000000 +b6e6bc940000000000000000 + +32886 +b6e63c9150182238da820000001c90e30000000100000000000007636f6d616e6574026e6c0000060001 +b6e6bc940000000000000000 + +32887 +20550010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000000000000 +20558000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +32888 +8d0300000001000000000000037777770e696e66612d6879706f746865656b026e6c0000010001 +8d0380000001000000020002037777770e696e66612d6879706f746865656b026e6c0000010001c0100002000100015180000b036e73310431326e73c01fc01000020001000151800006036e7332c037c033000100010001518000043ed44ca0c04a000100010001518000043ed4440c + +32889 +b6e63cf15010223817540000000000000000 +b6e6bcf40000000000000000 + +32890 +b6e63cf15011223817530000000000000000 +b6e6bcf40000000000000000 + +32891 +b6e63cf25010223817520000000000000000 +b6e6bcf40000000000000000 + +32892 +182a00000001000000000000036e73330767617574656e67026e6c0000010001 +182a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32893 +32a400100001000000000001066d61737465720364746f07747564656c6674026e6c00000100010000290800000000000000 +32a480000001000000050006066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a650000291000000000000000 + +32894 +ebd90000000100000000000003777777056c656d6172026e6c0000010001 +ebd98000000100000002000003777777056c656d6172026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c02d + +32895 +32df0000000100000000000005646e732d32056c61646f74026e6c0000010001 +32df8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +32896 +7f5e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7f5e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32897 +b09b00000001000000000000056d6f756e74026e6c0000010001 +b09b80000001000000020002056d6f756e74026e6c0000010001c00c0002000100015180000d026e73076b6e6f77617265c012c00c00020001000151800006036e7332c029c02600010001000151800004c3402003c03f00010001000151800004c340202b + +32898 +053a0000000100000000000009706f6c79666c756f72026e6c0000ff0001 +053a8000000100000003000309706f6c79666c756f72026e6c0000ff0001c00c0002000100015180000c026e73067369676e6574c016c00c00020001000151800006036e7331c02dc00c00020001000151800006036e7332c02dc02a00010001000151800004c3561242c04200010001000151800004d915f142c05400010001000151800004d915f141 + +32899 +203200000001000000000000036e73340767617574656e67026e6c0000010001 +203280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32900 +083900000001000000000000036e73340767617574656e67026e6c0000010001 +083980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +32901 +234c0000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +234c8000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32902 +7707000000010000000000000473746172026373027675026e6c0000010001 +7707800000010000000300030473746172026373027675026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800002c00cc0140002000100015180000e036e733107737572666e6574c017c02b0001000100015180000482258104c00c00010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +32903 +c16400000001000000000000026e73027675026e6c0000010001 +c16480000001000000030003026e73027675026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000a0473746172026373c00fc00f0002000100015180000e036e733107737572666e6574c012c00c0001000100015180000482258104c03400010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +32904 +912e00000001000000000000037777770e6372656174696e67636c6f756473026e6c0000010001 +912e80000001000000020002037777770e6372656174696e67636c6f756473026e6c0000010001c01000020001000151800009036e7331026973c01fc01000020001000151800006036e7332c037c03300010001000151800004d5852102c04800010001000151800004d5c41503 + +32905 +a74100000001000000000000054c53444e5306464f4b4b4552026e6c0000010001 +a74180000001000000020000054c53444e5306464f4b4b4552026e6c0000010001c0120002000100015180001004646e73310573746f726b03636f6d00c0120002000100015180000704646e7332c032 + +32906 +a8b500000001000000000000054c53444e5306464f4b4b4552026e6c0000260001 +a8b580000001000000020000054c53444e5306464f4b4b4552026e6c0000260001c0120002000100015180001004646e73310573746f726b03636f6d00c0120002000100015180000704646e7332c032 + +32907 +94ce000000010000000000000741535445524958044642533906464f4b4b4552026e6c0000010001 +94ce800000010000000200000741535445524958044642533906464f4b4b4552026e6c0000010001c0190002000100015180001004646e73310573746f726b03636f6d00c0190002000100015180000704646e7332c039 + +32908 +6577000000010000000000000741535445524958044642533906464f4b4b4552026e6c0000260001 +6577800000010000000200000741535445524958044642533906464f4b4b4552026e6c0000260001c0190002000100015180001004646e73310573746f726b03636f6d00c0190002000100015180000704646e7332c039 + +32909 +d2e70000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d2e78000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32910 +dec300000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +dec380000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +32911 +d6a800000001000000000000046d61696c09656e63616472657572026e6c0000010001 +d6a880000001000000020000046d61696c09656e63616472657572026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c032 + +32912 +e26e28000001000000010000026e6c0000060001035f6763045f7463700962696b6d756c6465720762696b61726368026e6c0000210001000002580020000000640cc40342494b0962696b6d756c6465720762696b61726368026e6c00 +e26ea8040000000000000000 + +32913 +eb2e0000000100000000000008726f656e7467656e0a726567696f7669737461026e6c0000010001 +eb2e8000000100000003000308726f656e7467656e0a726567696f7669737461026e6c0000010001c0150002000100015180000e046865726101780463756369c020c0150002000100015180000c066865726d6573026e6cc03bc01500020001000151800009066865726d6573c039c03400010001000151800004d47d8001c04e00010001000151800004c143ef02c06600010001000151800004d47d8002 + +32914 +a5e80000000100000000000009746172616e74756c6107676967616e6574026e6c0000010001 +a5e88000000100000002000209746172616e74756c6107676967616e6574026e6c0000010001c01600020001000151800002c00cc01600020001000151800009066c6976696461c016c00c00010001000151800004d47d8f01c04000010001000151800004d47d8f02 + +32915 +364900000001000000000000026e6c0000060001 +364984000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +32916 +000000007002faf03c730000020405b401010402 +000080010000000000000000 + +32917 +5c1d0000000100000000000009636f7665726769726c0774726e74776562026e6c00000f0001 +5c1d8403000100000001000009636f7665726769726c0774726e74776562026e6c00000f0001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +32918 +f23d0000000100000000000008686f73746e616d650462696e640000100003 +f23d8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +32919 +234c0000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +234c8000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32920 +dadf000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +dadf840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +32921 +6c0400000001000000000000126d6172616e746b756e737473746f6666656e026e6c0000010001 +6c0480000001000000020000126d6172616e746b756e737473746f6666656e026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c01fc00c0002000100015180000704686e7331c038 + +32922 +b08d0000000100000000000005736d747031056132303030026e6c0000010001 +b08d8000000100000003000205736d747031056132303030026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800010036e733109756e69736f75726365c018c01200020001000151800006036e7332c012c02c000100010001518000043e6c0141c05a000100010001518000043e6c0142 + +32923 +234c0000000100000000000009633365656130616130056361626c650777616e61646f6f026e6c0000010001 +234c8000000100000002000109633365656130616130056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +32924 +b6e7f9de5010faf0b8600000000000000000 + + +32925 +6efb000000010000000000000b776f726c646f6e6c696e65026e6c00000f0001 +6efb800000010000000300020b776f726c646f6e6c696e65026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +32926 +b6e7f9de5018faf0c19a0000008b27c9000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd58403c4ed800030000002c4e544c4d535350000100000097b208e00900090023000000030003002000000042494b42494b4d554c4445520000 + + +32927 +a89200000001000000000000037777770962727578656c6c6573026e6c0000010001 +a89280000001000000020002037777770962727578656c6c6573026e6c0000010001c0100002000100015180000d036e7331066e657462697ac01ac01000020001000151800006036e7332c032c02e00010001000151800004d436240fc04700010001000151800004c2b262ee + +32928 +45e6000000010000000000000377777706666574697368077765622d6c6f67026e6c0000010001 +45e6800000010000000300030377777706666574697368077765622d6c6f67026e6c0000010001c0170002000100015180000b036e733104696c7365c01fc01700020001000151800006036e7332c037c01700020001000151800006036e7333c037c033000100010001518000043e45a282c04a000100010001518000043e45a283c05c000100010001518000043e45a284 + +32929 +8af1000000010000000000000377777703747769026e6c0000010001 +8af1800000010000000200000377777703747769026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +32930 +b6e7f9ec5011fae2b7d20000000000000000 + + +32931 +000000007002faf034940000020405b401010402 +000080010000000000000000 + +32932 +5c640000000100000000000010626f75776d65657374657267726f6570026e6c00000f0001 +5c648000000100000003000210626f75776d65657374657267726f6570026e6c00000f0001c00c0002000100015180000d036e733106776964657873c01dc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +32933 +527d000000010000000000000365636c026e6c0000ff0001 +527d800000010000000300030365636c026e6c0000ff0001c00c0002000100015180000f036e7331086e6f766178657373c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004d5c98015c03f00010001000151800004d5c9bf12c05100010001000151800004d5ef9c26 + +32934 +730d000000010000000000000b6c65787472656d69737465026e6c0000020001 +730d800000010000000200020b6c65787472656d69737465026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +32935 +b6e7f9ed5010fae2b7d10000000000000000 + + +32936 +b6e8bf205010faf0eb3e0000000000000000 + + +32937 +67960000000100000000000003777777136f63636173696f6e67726f6f7468616e64656c026e6c0000010001 +67968000000100000002000003777777136f63636173696f6e67726f6f7468616e64656c026e6c0000010001c0100002000100015180000f05646e73303103697032036e657400c0100002000100015180000805646e733032c03e + +32938 +b6e8bf205018faf0b5f60000008b674c000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd58403c4ed800030000002c4e544c4d535350000100000097b208e00900090023000000030003002000000042494b42494b4d554c4445520000 + + +32939 +7d9500000001000000000000036e696b0a7075626c6973686e6574026e6c0000010001 +7d9580000001000000020001036e696b0a7075626c6973686e6574026e6c0000010001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1433c0a + +32940 +7d960000000100000000000004646e73320a7075626c6973686e6574026e6c0000010001 +7d968000000100000002000104646e73320a7075626c6973686e6574026e6c0000010001c01100020001000151800006036e696bc011c0110002000100015180000b026e73026e6c036e657400c03000010001000151800004c1433c0a + +32941 +b6e8bf2e5011fae2eab00000000000000000 + + +32942 +9fbc0000000100000000000006636f6f6b696504696c7365026e6c0000010001 +9fbc8000000100000003000306636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +32943 +f27400000001000000000000046e73303803777873026e6c0000260001 +f27480000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32944 +f93a00000001000000000000046e73303903777873026e6c0000010001 +f93a80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32945 +fc9d00000001000000000000046e73303903777873026e6c0000260001 +fc9d80000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +32946 +000000007002faf0aa3b0000020405b401010402 +000080010000000000000000 + +32947 +247000000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +247080000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +32948 +318d00000001000000000000036e733207626265796f6e64026e6c0000010001 +318d80000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +32949 +415000000001000000000000036e733207626265796f6e64026e6c00001c0001 +415080000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +32950 +522900000001000000000000036e733207626265796f6e64026e6c0000260001 +522980000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +32951 +853700000001000000000000036e7332057377646e73026e6c0000010001 +853780000001000000020002036e7332057377646e73026e6c0000010001c0100002000100015180000a036e733103686978c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +32952 +846400000001000000000000034e5331074e455443415345024e4c0000010001 +846480000001000000020000034e5331074e455443415345024e4c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c031 + +32953 +b6e8bf2f5010fae2eaaf0000000000000000 + + +32954 +309c00000001000000000000036e7332076e656473746174026e6c0000010001 +309c80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +32955 +26fd00000001000000000000036e7334076e656473746174026e6c0000010001 +26fd80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +32956 +b6e9a47b5010faf07b8a0000000000000000 + + +32957 +d03d000000010000000000000e64656e686f6c6c616e6465726276026e6c0000010001 +d03d800000010000000200000e64656e686f6c6c616e6465726276026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c01bc00c0002000100015180000704686e7331c034 + +32958 +c4af0000000100000000000005736d747031056132303030026e6c0000010001 +c4af8000000100000003000205736d747031056132303030026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800010036e733109756e69736f75726365c018c01200020001000151800006036e7332c012c02c000100010001518000043e6c0141c05a000100010001518000043e6c0142 + +32959 +b6e9a47b5018faf0b67b0000008bf712000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd58403c4ed800030000002c4e544c4d535350000100000097b208e00900090023000000030003002000000042494b42494b4d554c4445520000 + + +32960 +0e3000000001000000000000077765626d61696c08717569636b6e6574026e6c0000010001 +0e3080000001000000030002077765626d61696c08717569636b6e6574026e6c0000010001c01400020001000151800011036e73310a6d756c74696b6162656cc01dc01400020001000151800006036e7332c035c01400020001000151800014036e73300a6d756c74696b6162656c036e657400c0310001000100015180000450f2e002c04e0001000100015180000450f2e006 + +32961 +69b3000000010000000000000d766d7861726368697465637473026e6c0000010001 +69b3800000010000000200020d766d7861726368697465637473026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +32962 +60a70000000100000000000003777777056b65746f6e026e6c0000010001 +60a78000000100000002000203777777056b65746f6e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec016c01000020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +32963 +2c73000000010000000000001162656573746163687469676c656b6b6572026e6c00000f0001 +2c73800000010000000200021162656573746163687469676c656b6b6572026e6c00000f0001c00c0002000100015180000f036e73310861746c616e74697ac01ec00c00020001000151800006036e7332c036c03200010001000151800004d5efa011c04d00010001000151800004d5efa075 + +32964 +b6e9a4895011fae27afc0000000000000000 + + +32965 +fba300000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +fba380000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +32966 +dac60000000100000000000009626572677765726666026e6c00000f0001 +dac68000000100000002000009626572677765726666026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c030 + +32967 +b6e9a48a5010fae27afb0000000000000000 + + +32968 +f31a00000001000000000000096c6579656e62757267026e6c0000020001 +f31a80000001000000020002096c6579656e62757267026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +32969 +e86400100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +e86480000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +32970 +f43200100001000000000001026e73076e656473746174026e6c00002600010000290800000000000000 +f43280000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +32971 +fa1900100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +fa1980000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +32972 +d4fa00100001000000000001036e7333076e656473746174026e6c00002600010000290800000000000000 +d4fa80000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +32973 +ea68000000010000000000000874656b69656c6a61026e6c0000ff0001 +ea68800000010000000200000874656b69656c6a61026e6c0000ff0001c00c0002000100015180001c036e733003616d73026e6c0b7369746570726f7465637403636f6d00c00c00020001000151800006036e7331c02d + +32974 +7a4d00000001000000000000036e7333076e656473746174026e6c0000010001 +7a4d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +32975 +55ef00000001000000000000036e7332086473646575726e65026e6c0000010001 +55ef80000001000000020002036e7332086473646575726e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000452968003c00c00010001000151800004d5a0f984 + +32976 +eecf00000001000000000000036e7331086473646575726e65026e6c0000010001 +eecf80000001000000020002036e7331086473646575726e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452968003c03b00010001000151800004d5a0f984 + +32977 +313600000001000000000000037777770c77656263726561746f727334026e6c0000010001 +313680000001000000020001037777770c77656263726561746f727334026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c03100010001000151800004d4ccc0fc + +32978 +06c900000001000000000000026e73076e656473746174026e6c0000010001 +06c980000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +32979 +fdbe00000001000000000000026e73076e656473746174026e6c0000260001 +fdbe80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +32980 +abd300000001000000000000046e733031066d696e737a77026e6c0000010001 +abd380000001000000020000046e733031066d696e737a77026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c032 + +32981 +bd9200000001000000000000046e733031066d696e737a77026e6c00001c0001 +bd9280000001000000020000046e733031066d696e737a77026e6c00001c0001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c032 + +32982 +790600000001000000000000046e733031066d696e737a77026e6c0000260001 +790680000001000000020000046e733031066d696e737a77026e6c0000260001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c032 + +32983 +bf6100000001000000000000036e7333076e656473746174026e6c0000010001 +bf6180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +32984 +b02a00000001000000000000036e7333076e656473746174026e6c0000260001 +b02a80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +32985 +29390000000100000000000003777777077961736d696e61026e6c0000010001 +29398000000100000003000203777777077961736d696e61026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +32986 +6ad70000000100000000000003777777106d65647573612d616d7374657264616d026e6c0000010001 +6ad78000000100000002000003777777106d65647573612d616d7374657264616d026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c021c0100002000100015180000805646e732d32c03b + +32987 +d22e0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +d22e8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +32988 +ac960000000100000000000003777777076d6465626565720564656d6f6e026e6c0000010001 +ac968000000100000003000203777777076d6465626565720564656d6f6e026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c0180002000100015180000f036e73320564656d6f6e036e657400c03200010001000151800004c29f4906c04400010001000151800004c29fb004 + +32989 +00140000000100000000000008736d616d7773313306646d616d3031026e6c0000010001 +00148403000100000001000008736d616d7773313306646d616d3031026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +32990 +4865000000010000000000000c666f6f647365727669636573026e6c0000010001 +4865800000010000000200000c666f6f647365727669636573026e6c0000010001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c030 + +32991 +6fc400000001000000000001036e733107737572666e6574026e6c00000100010000291000000000000000 +6fc480000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +32992 +e91700000001000000000000037777770c6d756c74697265636c616d65026e6c0000010001 +e91780000001000000020002037777770c6d756c74697265636c616d65026e6c0000010001c0100002000100015180000f036e733108636f6e636570746fc01dc01000020001000151800006036e7332c035c0310001000100015180000450f7c226c04c0001000100015180000450f7c227 + +32993 +898e000000010000000000000f77696a6b77656c7a696a6e7a756964026e6c00000f0001 +898e800000010000000200000f77696a6b77656c7a696a6e7a756964026e6c00000f0001c00c00020001000151800013036e733109656e7465726e65787403636f6d00c00c00020001000151800006036e7332c034 + +32994 +32650000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +32658000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +32995 +834000000001000000000000036e73310c636f6e63657074732d696374026e6c0000010001 +834080000001000000020002036e73310c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800006036e7332c010c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e4b + +32996 +016d00000001000000000000054243564f53024e4c00000f0001 +016d80000001000000020002054243564f53024e4c00000f0001c00c00020001000151800011036e73310a646e7373657276657273c012c00c00020001000151800006036e7332c02ac026000100010001518000045054ed14c04300010001000151800004d5f72f14 + +32997 +55a7000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +55a7800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +32998 +bd6900000001000000000000146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001 +bd6980000001000000020002146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001c0210002000100015180000d026e73076e656473746174c024c02100020001000151800006036e7333c03bc03800010001000151800004d4482615c05100010001000151800004d5c4021d + +32999 +e36f00000001000000000000086e75747269636961026e6c00001c0001 +e36f80000001000000020002086e75747269636961026e6c00001c0001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +33000 +5c6700000001000000000000036e733106313233623262026e6c0000010001 +5c6780000001000000020002036e733106313233623262026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e5b5c039000100010001518000045054e5b6 + +33001 +915e00000001000000000000036e733206313233623262026e6c0000010001 +915e80000001000000020002036e733206313233623262026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b000100010001518000045054e5b5c00c000100010001518000045054e5b6 + +33002 +c91b00000001000000000000056d61696c310a6c656f6275726e657474026e6c0000010001 +c91b80000001000000020000056d61696c310a6c656f6275726e657474026e6c0000010001c0120002000100015180000e036e73310464646e68036e657400c01200020001000151800006036e7332c035 + +33003 +6be400000001000000000000056d61696c310a6c656f6275726e657474026e6c0000010001 +6be480000001000000020000056d61696c310a6c656f6275726e657474026e6c0000010001c0120002000100015180000e036e73310464646e68036e657400c01200020001000151800006036e7332c035 + +33004 +6fc400000001000000000000036e733107737572666e6574026e6c0000010001 +6fc480000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +33005 +401600000001000000000000036e733507737669616e6564026e6c0000010001 +401680000001000000020002036e733507737669616e6564026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800009026e730367616bc018c02c000100010001518000048fb10165c03e000100010001518000048fb0b003 + +33006 +0db600000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +0db680000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +33007 +0dbf00000001000000000000037777770a6b6f657273616c61726d026e6c0000010001 +0dbf80000001000000020002037777770a6b6f657273616c61726d026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4ccd865c04a000100010001518000045054ec34 + +33008 +31c400000001000000000000096c66636c6f6368656d026e6c0000020001 +31c480000001000000020002096c66636c6f6368656d026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +33009 +b8150010000100000000000105646830373406787334616c6c026e6c00000100010000290800000080000000 +b8158000000100000003000305646830373406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d09630000291000000000000000 + +33010 +82be000000010000000000000c73757573656e6d617263656c097676686161726c656d026e6c0000010001 +82be800000010000000200020c73757573656e6d617263656c097676686161726c656d026e6c0000010001c01900020001000151800010036e733109686f636b65796e6574c023c01900020001000151800006036e7332c03bc03700010001000151800004d4cce20bc05300010001000151800004d4ccce51 + +33011 +16ea000000010000000000000377777709616a6178666f72756d026e6c0000010001 +16ea800000010000000300000377777709616a6178666f72756d026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c031c01000020001000151800006036e7332c031 + +33012 +71330000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +71338000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33013 +2ce900100001000000000001026e7306636f62776562026e6c00000100010000290800000080000000 +2ce980000001000000020002026e7306636f62776562026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800011026e73087363686970686f6c036e657400c00c0001000100015180000450f260010000291000000000000000 + +33014 +dec700100001000000000001036e733306636f62776562026e6c00000100010000290800000080000000 +dec780000001000000020002036e733306636f62776562026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f260010000291000000000000000 + +33015 +288e000000010000000000000b7470686e6c777332313638057470686e6c026e6c0000060001 +288e840300010000000100000b7470686e6c777332313638057470686e6c026e6c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +33016 +ece90000000100000000000006783534616c6c026e6c00000f0001 +ece98403000100000001000006783534616c6c026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +33017 +e12200000001000000000000036e73310f627573696e657373686f7374696e67026e6c0000010001 +e12280000001000000020002036e73310f627573696e657373686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451044f51c042000100010001518000045104602d + +33018 +a682000000010000000000000a726f6375747265636874026e6c0000010001 +a682800000010000000200020a726f6375747265636874026e6c0000010001c00c0002000100015180000d036e7331066e6c74726565c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d4b20403c04400010001000151800004d5881e45 + +33019 +ae3300000001000000000000036e7332076e656473746174026e6c0000010001 +ae3380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33020 +fd9c00000001000000000000036e7334076e656473746174026e6c0000010001 +fd9c80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33021 +e48700000001000000000000056d61696c3103696e67026e6c0000010001 +e48780000001000000020002056d61696c3103696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc2 + +33022 +e7fe00000001000000000000056d61696c3103696e67026e6c00001c0001 +e7fe80000001000000020002056d61696c3103696e67026e6c00001c0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc2 + +33023 +77a400000001000000000000056d61696c3103696e67026e6c0000260001 +77a480000001000000020002056d61696c3103696e67026e6c0000260001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc2 + +33024 +9cf800000001000000000000036e733103696e67026e6c00001c0001 +9cf880000001000000020002036e733103696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +33025 +b0ee00000001000000000000036e733103696e67026e6c0000260001 +b0ee80000001000000020002036e733103696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +33026 +b45300000001000000000000036e733203696e67026e6c00001c0001 +b45380000001000000020002036e733203696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +33027 +525f00000001000000000000036e733203696e67026e6c0000260001 +525f80000001000000020002036e733203696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +33028 +2656000000010000000000000e6c656964736368646167626c61640f7765726b656e696e686f6c6c616e64026e6c0000010001 +2656800000010000000300030e6c656964736368646167626c61640f7765726b656e696e686f6c6c616e64026e6c0000010001c01b0002000100015180000e076e73617574683103626974c02bc01b0002000100015180000a076e736175746832c047c01b0002000100015180000a076e736175746833c047c03f00010001000151800004d5880c33c05900010001000151800004d5880c3bc06f00010001000151800004d4ccc00b + +33029 +f59400000001000000000000106d74732d6575726f70726f6475637473026e6c00000f0001 +f59480000001000000020002106d74732d6575726f70726f6475637473026e6c00000f0001c00c0002000100015180000c036e733105636176656fc01dc00c00020001000151800006036e7332c035c031000100010001518000045112a002c049000100010001518000045112a102 + +33030 +ff3200000001000000000000046c686565026e6c0000020001 +ff3280000001000000020002046c686565026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +33031 +5d1d00000001000000000000026e7306636f62776562026e6c0000010001 +5d1d80000001000000020001026e7306636f62776562026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800011026e73087363686970686f6c036e657400c00c0001000100015180000450f26001 + +33032 +227d00000001000000000000036e733306636f62776562026e6c0000010001 +227d80000001000000020001036e733306636f62776562026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f26001 + +33033 +1ad800000001000000000000037777770a6d757369637072696e74026e6c0000010001 +1ad880000001000000020002037777770a6d757369637072696e74026e6c0000010001c01000020001000151800009036e7331026d6ac01bc01000020001000151800006036e7332c033c02f00010001000151800004515b010ac04400010001000151800004515b000a + +33034 +7023000000010000000000000f6f70726f616b656c6461697368616c026e6c0000010001 +7023800000010000000200020f6f70726f616b656c6461697368616c026e6c0000010001c00c0002000100015180000c036e73310568616c6d61c01cc00c00020001000151800006036e7332c034c03000010001000151800004d4ccd1f1c04800010001000151800004d4ccd1fa + +33035 +5c040000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +5c048000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33036 +dac4000000010000000000000d696e697469616c2d766172656c026e6c00000f0001 +dac4800000010000000200020d696e697469616c2d766172656c026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c01ac00c00020001000151800006036e7334c032c02e00010001000151800004c372e7c8c04800010001000151800004c372e6fe + +33037 +475c00000001000000000000055f6c646170045f7463700b7768697a7a646f6d706463026e6c0000060001 +475c84030001000000010000055f6c646170045f7463700b7768697a7a646f6d706463026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +33038 +7d6400000001000000000000026e7309656174736572766572026e6c0000010001 +7d6480000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +33039 +f5d700000001000000000000036e733209656174736572766572026e6c0000010001 +f5d780000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +33040 +05410000000100000000000004726f6375026e6c00000f0001 +05418000000100000003000304726f6375026e6c00000f0001c00c0002000100015180000906726f636b6574c00cc00c0002000100015180000d06776174736f6e03687675c011c00c0002000100015180000e036e733107737572666e6574c011c02500010001000151800004c2ab9c22c03a0001000100015180000491592603c05300010001000151800004c0576a65 + +33041 +f7d300000001000000000000046d61696c05766172656c026e6c0000010001 +f7d380000001000000020000046d61696c05766172656c026e6c0000010001c0110002000100015180000d036e7331036b706e036e657400c01100020001000151800006036e7332c02f + +33042 +fa7500000001000000000000046d61696c05766172656c026e6c00001c0001 +fa7580000001000000020000046d61696c05766172656c026e6c00001c0001c0110002000100015180000d036e7331036b706e036e657400c01100020001000151800006036e7332c02f + +33043 +023c28000001000200000000026e6c00000600010b7470686e6c777332313638057470686e6c026e6c00000500fe000000000000c014000100010000000000040ae718e5 +023ca8040000000000000000 + +33044 +581300000001000000000000096d616b65706561636503687675026e6c0000010001 +581380000001000000030003096d616b65706561636503687675026e6c0000010001c0160002000100015180000906776174736f6ec016c0160002000100015180000e036e733107737572666e6574c01ac01600020001000151800006036e7332c016c02e0001000100015180000491592603c04300010001000151800004c0576a65c05d0001000100015180000491595303 + +33045 +48dc0000000100000000000005646e732d31056c61646f74026e6c0000010001 +48dc8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33046 +72e60000000100000000000005646e732d32056c61646f74026e6c0000010001 +72e68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33047 +00a90000000100000000000006706f6d706f6d026e6c0000ff0001 +00a98000000100000002000206706f6d706f6d026e6c0000ff0001c00c00020001000151800018036e73311173747564656e742d736f6c7574696f6e73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d97261aec04b00010001000151800004d9726102 + +33048 +13d0000000010000000000000774726166666963026e6c0000010001 +13d0800000010000000200000774726166666963026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +33049 +8d180000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +8d188000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33050 +971d0000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +971d8000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33051 +84f90000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +84f98000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33052 +31fe00000001000000000000046d61696c0b6d61726b74706c61617473026e6c0000010001 +31fe80000001000000020000046d61696c0b6d61726b74706c61617473026e6c0000010001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +33053 +516900000001000000000000046d61696c0b6d61726b74706c61617473026e6c00001c0001 +516980000001000000020000046d61696c0b6d61726b74706c61617473026e6c00001c0001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +33054 +13bb00000001000000000000046d61696c0b6d61726b74706c61617473026e6c0000260001 +13bb80000001000000020000046d61696c0b6d61726b74706c61617473026e6c0000260001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +33055 +6b4000000001000000000000046d61696c0b6d61726b74706c61617473026e6c0000010001 +6b4080000001000000020000046d61696c0b6d61726b74706c61617473026e6c0000010001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +33056 +772600000001000000000000037777770e6d76736d616b656c61617264696a026e6c0000010001 +772680000001000000020002037777770e6d76736d616b656c61617264696a026e6c0000010001c0100002000100015180000f036e7331086974736c6f676963c01fc01000020001000151800006036e7332c037c03300010001000151800004d59ae111c04e00010001000151800004d59ae122 + +33057 +93b00000000100000000000003777777076e656473746174026e6c0000010001 +93b08000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33058 +2d6a00000001000000000000037777770c6772617469732d66696c6d73026e6c0000010001 +2d6a80000001000000020001037777770c6772617469732d66696c6d73026e6c0000010001c0100002000100015180000a026e7304696d636fc01dc01000020001000151800013036e7332097669727475616c787303636f6d00c031000100010001518000043e81810a + +33059 +0f4700000001000000000000037777770e6e69657577626f7577666f72756d026e6c0000010001 +0f4780000001000000020000037777770e6e69657577626f7577666f72756d026e6c0000010001c01000020001000151800013036e7335097577686f7374696e67036e657400c01000020001000151800006036e7336c037 + +33060 +000000007002fc0080570000020405b401010402 +000080010000000000000000 + +33061 +2dda000000010000000000000377777712766163617475726573696e686f6c6c616e64026e6c0000010001 +2dda800000010000000200020377777712766163617475726573696e686f6c6c616e64026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c023c01000020001000151800006036e7332c03bc03700010001000151800004d5c9e8c8c05700010001000151800004d5c9e8c9 + +33062 +3909000000010000000000000377777708736c697073616665026e6c0000010001 +3909800000010000000200000377777708736c697073616665026e6c0000010001c01000020001000151800015026e730c776f726c64686f7374696e67036f726700c01000020001000151800008026e73026175c030 + +33063 +6b7600000001000000000000026e73076575726f6e6574026e6c0000010001 +6b7680000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +33064 +dc7500000001000000000000037777770f6d6167617a696a6e7665696c696e67026e6c0000010001 +dc7580000001000000020002037777770f6d6167617a696a6e7665696c696e67026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c020c01000020001000151800006036e7332c038c034000100010001518000045054e415c0500001000100015180000451046014 + +33065 +692d0000000100000000000006696d6167657306676f6f676c65026e6c0000010001 +692d8000000100000003000006696d6167657306676f6f676c65026e6c0000010001c01300020001000151800010036e733106676f6f676c6503636f6d00c01300020001000151800006036e7332c032c01300020001000151800006036e7333c032 + +33066 +2e3f00000001000000000000036e73320d78786c776562686f7374696e67026e6c0000010001 +2e3f80000001000000020002036e73320d78786c776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104580ac00c000100010001518000045104601e + +33067 +b1cc00000001000000000000036e73310d78786c776562686f7374696e67026e6c0000010001 +b1cc80000001000000020002036e73310d78786c776562686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104580ac040000100010001518000045104601e + +33068 +b6ebe7a65010fc000e790000000000000000 + + +33069 +b6ebe7a65004fc000e850000000000000000 + + +33070 +799600000001000000000000076f70656e6e61700773656172636879026e6c0000010001 +799680000001000000020002076f70656e6e61700773656172636879026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03000010001000151800004d9aa1235c04200010001000151800004507e81e0 + +33071 +e85000000001000000000000066e61736b696e026e6c00000f0001 +e85080000001000000020000066e61736b696e026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02e + +33072 +2a0e00000001000000000000036e7332076e656473746174026e6c0000010001 +2a0e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33073 +93b300000001000000000000036e7334076e656473746174026e6c0000010001 +93b380000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33074 +774c000000010000000000000e6e61747572616c77656c66617265026e6c0000010001 +774c800000010000000300030e6e61747572616c77656c66617265026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02f00010001000151800004cf2cd7adc041000100010001518000043ed4539ec05300010001000151800004cf2cd7ae + +33075 +4955001000010000000000000c7268656e7573616c70696e61026e6c00000f0001 +4955800000010000000200020c7268656e7573616c70696e61026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +33076 +6b50000000010000000000000c7363686f6f6c6d6173746572026e6c00000f0001 +6b50800000010000000200020c7363686f6f6c6d6173746572026e6c00000f0001c00c00020001000151800009036e7331026973c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +33077 +284000000001000000000000046d696a6e07696e6762616e6b026e6c0000010001 +284080000001000000020002046d696a6e07696e6762616e6b026e6c0000010001c0110002000100015180000a036e733103696e67c019c01100020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +33078 +a8130000000100000000000006776468303131066e7434616c6c026e6c0000010001 +a8138000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +33079 +b48e000000010000000000000c6162786c6f67697374696373026e6c0000ff0001 +b48e800000010000000200020c6162786c6f67697374696373026e6c0000ff0001c00c000200010001518000110a6c65757665686176656e03696772c019c00c0002000100015180000d0a64656c6673686176656ec038c02d000100010001518000043e2d5e0dc04a000100010001518000043e2d5e82 + +33080 +7fc400000001000000000000037777770b64696a6b6d616e2d777376026e6c0000010001 +7fc480000001000000020000037777770b64696a6b6d616e2d777376026e6c0000010001c0100002000100015180001b036e733511656c69636f6d2d776562686f7374696e6703636f6d00c01000020001000151800006036e7336c034 + +33081 +98dc0000000100000000000005646e732d32056c61646f74026e6c0000010001 +98dc8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33082 +344300000001000000000000096d61696c686f73743107747564656c6674026e6c0000010001 +344380000001000000050005096d61696c686f73743107747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +33083 +e6d700000001000000000000096d61696c686f73743107747564656c6674026e6c00001c0001 +e6d780000001000000050005096d61696c686f73743107747564656c6674026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +33084 +a36800000001000000000000036e733107747564656c6674026e6c00001c0001 +a36880000001000000050005036e733107747564656c6674026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +33085 +bd3900000001000000000000036e733207747564656c6674026e6c00001c0001 +bd3980000001000000050005036e733207747564656c6674026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +33086 +55f900000001000000000000026e730763697374726f6e026e6c0000010001 +55f980000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +33087 +539e0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +539e8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +33088 +23a9000000010000000000000c66727569746d617374657273026e6c00000f0001 +23a9800000010000000200000c66727569746d617374657273026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +33089 +4aa700000001000000000000037777770f7365787061727479346c6f76657273026e6c0000010001 +4aa780000001000000020002037777770f7365787061727479346c6f76657273026e6c0000010001c0100002000100015180000a026e730469636d63c020c01000020001000151800006036e7332c037c034000100010001518000043e643805c04a000100010001518000043e643806 + +33090 +a2ec00000001000000000000037777770a666f7274697362616e6b026e6c0000010001 +a2ec80000001000000030002037777770a666f7274697362616e6b026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01bc01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c033c02f000100010001518000045054e055c06800010001000151800004d4ccc655 + +33091 +da390000000100000000000003616263026e6c00000f0001 +da398000000100000002000203616263026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000c026e7306776562746963c010c02400010001000151800004d5c5ec01c03500010001000151800004c14e1e2b + +33092 +305a00000001000000000000036e73330767617574656e67026e6c0000010001 +305a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33093 +856200000001000000000000046d61696c147665696c696e672d67656c6465726d616c73656e026e6c0000010001 +856280000001000000020000046d61696c147665696c696e672d67656c6465726d616c73656e026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c040 + +33094 +36460000000100000000000006776468303131066e7434616c6c026e6c0000010001 +36468000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +33095 +4f2100000001000000000000085f6b706173737764045f75647006646f6d61696e026e6c0000060001 +4f2184030001000000010000085f6b706173737764045f75647006646f6d61696e026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +33096 +106c00000001000000000000036e73340767617574656e67026e6c0000010001 +106c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33097 +187600000001000000000000036e73340767617574656e67026e6c0000010001 +187680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33098 +ed1300000001000000000000086368656174732d660270630a6368656174706c617a61026e6c0000010001 +ed1380000001000000020002086368656174732d660270630a6368656174706c617a61026e6c0000010001c0180002000100015180000c036e733105616e6f6e79c023c01800020001000151800006036e7332c03bc03700010001000151800004cf2cd7adc04f000100010001518000043ed4539e + +33099 +11280000000100000000000009652d6c756e61746963026e6c0000010001 +11288000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33100 +31160000000100000000000009652d6c756e61746963026e6c0000010001 +31168000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33101 +a93d00000001000000000000026e73076e656473746174026e6c0000010001 +a93d80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +33102 +0a5a00000001000000000000036e7333076e656473746174026e6c0000010001 +0a5a80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +33103 +52fa28000001000000010000026e6c0000060001085f6b706173737764045f75647006646f6d61696e026e6c000021000100000258001b0000006401d00973657276657230313106646f6d61696e026e6c00 +52faa8040000000000000000 + +33104 +db55000000010000000000000967726f6570342d30320864696a6b6f6f73740864696a6b77657374026e6c0000060001 +db55840300010000000100000967726f6570342d30320864696a6b6f6f73740864696a6b77657374026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +33105 +996a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +996a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33106 +abc8000000010000000000000461736d6c026e6c00000f0001 +abc8800000010000000300010461736d6c026e6c00000f0001c00c00020001000151800006036e7330c00cc00c0002000100015180000d026e730461736d6c03636f6d00c00c00020001000151800006036e7331c03ac02500010001000151800004c26979c2 + +33107 +6bda00000001000000000000046d61696c0e6d777765626372656174696f6e73026e6c0000010001 +6bda80000001000000020002046d61696c0e6d777765626372656174696f6e73026e6c0000010001c0110002000100015180000d0a6c656b6b657264696e67c011c0110002000100015180000c09626c61636b62697264c011c03400010001000151800004d994a332c04d00010001000151800004507ed0a6 + +33108 +36d900000001000000000000046d61696c0e6d777765626372656174696f6e73026e6c0000010001 +36d980000001000000020002046d61696c0e6d777765626372656174696f6e73026e6c0000010001c0110002000100015180000d0a6c656b6b657264696e67c011c0110002000100015180000c09626c61636b62697264c011c03400010001000151800004d994a332c04d00010001000151800004507ed0a6 + +33109 +353500000001000000000000036d783107657370656c6f6e026e6c0000010001 +353580000001000000020002036d783107657370656c6f6e026e6c0000010001c0100002000100015180001c0a6c656b6b657264696e670e6d777765626372656174696f6e73c018c0100002000100015180000c09626c61636b62697264c037c02c00010001000151800004d994a332c05400010001000151800004507ed0a6 + +33110 +b920000000010000000000000377746206676576656b65026e6c00000f0001 +b920800000010000000200000377746206676576656b65026e6c00000f0001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c031 + +33111 +546f00000001000000000000037777770a7a656c66626f7577656e026e6c0000010001 +546f80000001000000020000037777770a7a656c66626f7577656e026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c032 + +33112 +062e00100001000000000001037777771264656c7068696861636b6572737061676573026e6c00000100010000290800000080000000 +062e80000001000000020001037777771264656c7068696861636b6572737061676573026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03d0000291000000000000000 + +33113 +a61f00000001000000000000037777770d746f74616c6461726b6e657373026e6c0000010001 +a61f80000001000000020002037777770d746f74616c6461726b6e657373026e6c0000010001c01000020001000151800010036e7331096561737932686f7374c01ec01000020001000151800006036e7332c036c03200010001000151800004d5efb541c04e00010001000151800004d5efb542 + +33114 +26f500000001000000000000096d61696c686f73743107747564656c6674026e6c0000010001 +26f580000001000000050005096d61696c686f73743107747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +33115 +024200000001000000000000037777770b766f6f7264756d6d696573026e6c0000010001 +024280000001000000020000037777770b766f6f7264756d6d696573026e6c0000010001c01000020001000151800013046e733132087a6f6e656564697403636f6d00c01000020001000151800007046e733135c035 + +33116 +b6e56df35011fbde73f50000000000000000 +b6e5edf40000000000000000 + +33117 +62c30000000100000000000003777777087765726b736e656c026e6c0000010001 +62c38000000100000002000003777777087765726b736e656c026e6c0000010001c01000020001000151800011036e73310772752d6b61737503636f6d00c01000020001000151800006036e7332c031 + +33118 +719e000000010000000000000870756265696c656e026e6c00000f0001 +719e800000010000000200020870756265696c656e026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c015c00c00020001000151800006036e7331c02cc02900010001000151800004504f6101c04300010001000151800004504f6102 + +33119 +f9f1000000010000000000000377656d0c6c6f67696e73657276696365026e6c0000010001 +f9f1800000010000000200020377656d0c6c6f67696e73657276696365026e6c0000010001c0100002000100015180000e036e7331076e657463617374c01dc01000020001000151800006036e7332c035c03100010001000151800004c2970101c04b00010001000151800004c297012d + +33120 +0a4d00000001000000000000037777770870632d6163746976026e6c0000010001 +0a4d84030001000000010000037777770870632d6163746976026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +33121 +b6e56df45010fbde73f40000000000000000 +b6e5edf40000000000000000 + +33122 +403100000001000000000000056d61696c320976697275737672696a026e6c0000010001 +403180000001000000020000056d61696c320976697275737672696a026e6c0000010001c0120002000100015180000d036e7331036b706e036e657400c01200020001000151800006036e7332c034 + +33123 +403200000001000000000000056d61696c310976697275737672696a026e6c0000010001 +403280000001000000020000056d61696c310976697275737672696a026e6c0000010001c0120002000100015180000d036e7331036b706e036e657400c01200020001000151800006036e7332c034 + +33124 +bc9a010000010000000000000377777707706f6c6f6e6961026e6c0000010001 +bc9a810000010000000200020377777707706f6c6f6e6961026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +33125 +107f00000001000000000000036e73330767617574656e67026e6c0000010001 +107f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33126 +b46c0000000100000000000003617776026e6c00000f0001 +b46c8000000100000002000203617776026e6c00000f0001c00c0002000100015180000e036e73310768656262697a7ac010c00c00020001000151800006036e7332c028c02400010001000151800004c372eb42c03e000100010001518000043e320e91 + +33127 +009000000001000000000000036e73330767617574656e67026e6c0000010001 +009080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33128 +50b80000000100000000000003777777086f6e656c6576656c026e6c0000010001 +50b88000000100000002000203777777086f6e656c6576656c026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c019c01000020001000151800006036e7332c031c02d000100010001518000045054e415c0490001000100015180000451046014 + +33129 +f8e600000001000000000000036e73330c64656c7461686f7374696e67026e6c0000010001 +f8e680000001000000020002036e73330c64656c7461686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000a036e7332036e7873c01dc03100010001000151800004d973c096c04300010001000151800004d973c102 + +33130 +940600000001000000000000037777770c646174696e6770616c656973026e6c0000010001 +940680000001000000020002037777770c646174696e6770616c656973026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01dc01000020001000151800006036e7332c035c031000100010001518000045054e415c04d0001000100015180000451046014 + +33131 +84ca00000001000000000000037777770f6472696e6b656e656e64616e73656e026e6c0000010001 +84ca80000001000000020002037777770f6472696e6b656e656e64616e73656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +33132 +df820000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +df828000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33133 +25b00010000100000000000107414e54454e4e41024e4c00000100010000290800000080000000 +25b08000000100000002000207414e54454e4e41024e4c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd130000291000000000000000 + +33134 +bab600000001000000000000046d61696c06636f6d707261026e6c0000010001 +bab680000001000000020000046d61696c06636f6d707261026e6c0000010001c0110002000100015180001905646e7330310d636f6d70726173657276657273036e657400c0110002000100015180000805646e733032c032 + +33135 +cfed00000001000000000000117275736c616e646b696e64657268756c70026e6c0000010001 +cfed80000001000000020002117275736c616e646b696e64657268756c70026e6c0000010001c00c0002000100015180000f036e73310864696d6d65646961c01ec00c00020001000151800006036e7332c036c032000100010001518000043eddda10c04d000100010001518000043eb1e4dc + +33136 +0526000000010000000000000566657272790b766476656e626568656572026e6c0000010001 +0526840300010000000100000566657272790b766476656e626568656572026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +33137 +5eda00100001000000000001026e73027575026e6c00000100010000290800000080000000 +5eda80000001000000040005026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d310200000291000000000000000 + +33138 +97b800100001000000000001036e7332027575026e6c00000100010000290800000080000000 +97b880000001000000040005036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d310200000291000000000000000 + +33139 +af6500000001000000000000076b72616e74656e03636f6d07736974652d6964026e6c0000010001 +af6580000001000000030000076b72616e74656e03636f6d07736974652d6964026e6c0000010001c01800020001000151800012036e733108626c7565646f6d65036e657400c01800020001000151800006036e7332c038c01800020001000151800006036e7333c038 + +33140 +7ee000000001000000000000037777770c74687569732d6f6e6c696e65026e6c0000010001 +7ee080000001000000020000037777770c74687569732d6f6e6c696e65026e6c0000010001c01000020001000151800011036e73330a737562686f7374696e67c01dc01000020001000151800006036e7334c035 + +33141 +43f7001000010000000000010631326d6f7665026e6c0000ff00010000290800000080000000 +43f7800000010000000300030631326d6f7665026e6c0000ff0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f133250000291000000000000000 + +33142 +d4020000000100000000000008657361636f6d343405657374656303657361026e6c0000010001 +d4028000000100000003000008657361636f6d343405657374656303657361026e6c0000010001c01b0002000100015180000e04646e73310365736103696e7400c01b0002000100015180000704646e7332c038c01b0002000100015180000704646e7333c038 + +33143 +ca3a0000000100000000000008657361636f6d343505657374656303657361026e6c0000010001 +ca3a8000000100000003000008657361636f6d343505657374656303657361026e6c0000010001c01b0002000100015180000e04646e73310365736103696e7400c01b0002000100015180000704646e7332c038c01b0002000100015180000704646e7333c038 + +33144 +25690000000100000000000007414e54454e4e41024e4c0000010001 +25698000000100000002000107414e54454e4e41024e4c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +33145 +580600000001000000000000086176656e747572610a62686d732d67726f6570026e6c0000010001 +580680000001000000020002086176656e747572610a62686d732d67726f6570026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c03400010001000151800004d9726162c04600010001000151800004d9726161 + +33146 +527900000001000000000000026e73066863636e6574026e6c0000010001 +527980000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +33147 +10e10000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +10e18000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33148 +06440000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +06448000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33149 +23320000000100000000000006636f736d6f73046b706d67026e6c0000010001 +23328000000100000002000006636f736d6f73046b706d67026e6c0000010001c01300020001000151800013036e7331026e6c0669676e697465036e657400c01300020001000151800006036e7332c030 + +33150 +c1cf00000001000000000000037777771264656c7068696861636b6572737061676573026e6c0000010001 +c1cf80000001000000020000037777771264656c7068696861636b6572737061676573026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03d + +33151 +cbdc00000001000000000000026e73027575026e6c0000010001 +cbdc80000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +33152 +32d200000001000000000000036e7332027575026e6c0000010001 +32d280000001000000040004036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +33153 +ca260000000100000000000002636602626303757661026e6c0000010001 +ca268000000100000002000202636602626303757661026e6c0000010001c0120002000100015180000e086261726c61657573026963c012c01200020001000151800006036e7331c012c02a0001000100015180000491124432c0440001000100015180000491122710 + +33154 +57e50000000100000000000005736d696c6507736d696c696573026e6c0000010001 +57e58000000100000003000005736d696c6507736d696c696573026e6c0000010001c01200020001000151800014046e733031096772616669782d697303636f6d00c01200020001000151800007046e733032c033c01200020001000151800007046e733033c033 + +33155 +52c60000000100000000000004736d7470066863636e6574026e6c0000010001 +52c68000000100000002000004736d7470066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +33156 +e3aa00000001000000000000036e7335046372696f026e6c0000010001 +e3aa80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33157 +0f0a00000001000000000000036e7336046372696f026e6c0000010001 +0f0a80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33158 +29b8000000010000000000000377777703776562026e6c0000010001 +29b8800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +33159 +6d0300000001000000000000036e7331046372696f026e6c0000010001 +6d0380000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33160 +4ba900000001000000000000036e7332046372696f026e6c0000010001 +4ba980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33161 +eced00000001000000000000037777770a72656372656174696566026e6c0000010001 +eced80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +33162 +224600000001000000000000036e7335046372696f026e6c0000010001 +224680000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33163 +596400000001000000000000036e7336046372696f026e6c0000010001 +596480000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33164 +83cb00000001000000000000036e7331046372696f026e6c0000010001 +83cb80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33165 +918600000001000000000000036e7332046372696f026e6c0000010001 +918680000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33166 +bb1000000001000000000000037777770a737061727461616e3230026e6c0000010001 +bb1080000001000000020002037777770a737061727461616e3230026e6c0000010001c0100002000100015180000e036e73310774696b6b6c696bc01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c40902c049000100010001518000043eddd512 + +33167 +d72300000001000000000000026e7308652d766973696f6e026e6c0000010001 +d72380000001000000020002026e7308652d766973696f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce2c82c03a00010001000151800004d4ce2c78 + +33168 +3e7100000001000000000000036e733208652d766973696f6e026e6c0000010001 +3e7180000001000000020002036e733208652d766973696f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d4ce2c82c00c00010001000151800004d4ce2c78 + +33169 +2253000000010000000000000b62756c6267726f77696e67026e6c00000f0001 +2253800000010000000200020b62756c6267726f77696e67026e6c00000f0001c00c0002000100015180000e026e7308652d766973696f6ec018c00c00020001000151800006036e7332c02fc02c00010001000151800004d4ce2c82c04600010001000151800004d4ce2c78 + +33170 +859c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +859c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33171 +43e70000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +43e78000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33172 +d1510000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +d1518000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33173 +26f60000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +26f68000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33174 +13fa00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +13fa80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33175 +f96400000001000000000000037777770a6b6f657273616c61726d026e6c0000010001 +f96480000001000000020002037777770a6b6f657273616c61726d026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4ccd865c04a000100010001518000045054ec34 + +33176 +c52900000001000000000000037777770732343773686f70026e6c0000010001 +c52980000001000000030003037777770732343773686f70026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c1adf9c3c046000100010001518000043e70ec3cc05800010001000151800004c1ac0bae + +33177 +10f20000000100000000000005737461747308696e672d6562636e026e6c0000010001 +10f28000000100000002000205737461747308696e672d6562636e026e6c0000010001c0120002000100015180000a036e733103696e67c01bc01200020001000151800006036e7332c033c02f0001000100015180000491dd19c2c0450001000100015180000491dd5dc2 + +33178 +39c50000000100000000000003736d730567656e6965026e6c00000f0001 +39c58000000100000002000203736d730567656e6965026e6c00000f0001c0100002000100015180000d026e73076e65746c616e64c016c01000020001000151800006036e7332c02dc02a00010001000151800004d9aa2042c04300010001000151800004d9aa2c06 + +33179 +e13f0000000100000000000006737461746963076d616368696e6507667265656c6572026e6c0000010001 +e13f8000000100000002000006737461746963076d616368696e6507667265656c6572026e6c0000010001c01b000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c01b0002000100015180000e0b65766973702d6e732d3032c043 + +33180 +9c9900000001000000000000037777770e6465776f6e696e677a6f656b6572026e6c0000010001 +9c9980000001000000020002037777770e6465776f6e696e677a6f656b6572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01fc01000020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +33181 +1ccb00000001000000000000037777770667616d657273026e6c0000010001 +1ccb80000001000000020002037777770667616d657273026e6c0000010001c0100002000100015180000b036e73310470696e65c017c01000020001000151800006036e7332c02fc02b00010001000151800004d59c0201c04200010001000151800004c3c1a303 + +33182 +3ff200000001000000000000036e7331096475746368686f7374026e6c0000260001 +3ff280000001000000020001036e7331096475746368686f7374026e6c0000260001c0100002000100015180000b0861737465726f7065c010c0100002000100015180000c036e733205786c722d38c01ac02e00010001000151800004d58523d2 + +33183 +d26600000001000000000000036e733207626265796f6e64026e6c0000010001 +d26680000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +33184 +bd9c00000001000000000000026e73076e656473746174026e6c0000010001 +bd9c80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +33185 +50dd00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +50dd80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +33186 +d78900000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +d78980000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +33187 +11570000000100000000000008776562656c6c656e06787334616c6c026e6c0000010001 +11578000000100000003000208776562656c6c656e06787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +33188 +4bba00000001000000000000036e7331086765656e70756e74026e6c00001c0001 +4bba80000001000000020002036e7331086765656e70756e74026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd865c03b000100010001518000045054ec34 + +33189 +425f00000001000000000000036e7331086765656e70756e74026e6c0000260001 +425f80000001000000020002036e7331086765656e70756e74026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd865c03b000100010001518000045054ec34 + +33190 +20dd00000001000000000000036e7332086765656e70756e74026e6c00001c0001 +20dd80000001000000020002036e7332086765656e70756e74026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d4ccd865c00c000100010001518000045054ec34 + +33191 +5f2c00000001000000000000036e7332086765656e70756e74026e6c0000260001 +5f2c80000001000000020002036e7332086765656e70756e74026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d4ccd865c00c000100010001518000045054ec34 + +33192 +1b6e28000001000000010000026e6c0000060001055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f73697465730868756c73626f7577026e6c000021000100000258001d000000640185096e742d7365727665720868756c73626f7577026e6c00 +1b6ea8040000000000000000 + +33193 +0ab200000001000000000000036e733103696e67026e6c00001c0001 +0ab280000001000000020002036e733103696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +33194 +34c500000001000000000000036e733103696e67026e6c0000260001 +34c580000001000000020002036e733103696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +33195 +ef7400000001000000000000036e733203696e67026e6c00001c0001 +ef7480000001000000020002036e733203696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +33196 +efe700000001000000000000036e733203696e67026e6c0000260001 +efe780000001000000020002036e733203696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +33197 +d7f100000001000000000000037777770b686572766f726d64656465026e6c0000010001 +d7f180000001000000020002037777770b686572766f726d64656465026e6c0000010001c01000020001000151800012036e73310b72656e61697373616e6365c01cc01000020001000151800006036e7332c034c03000010001000151800004d4ccc4efc04e00010001000151800004d4ccc4f0 + +33198 +00000000700240001ad30000020405b401010402 +000080010000000000000000 + +33199 +c31a00000001000000000000086261626f75636865026e6c00000f0001 +c31a80000001000000020000086261626f75636865026e6c00000f0001c00c00020001000151800010036e733106686f73747333036e657400c00c00020001000151800006036e7332c02d + +33200 +2b1b0010000100000000000106787334616c6c026e6c00000f00010000290800000080000000 +2b1b8000000100000003000306787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +33201 +b6eddfed50104470ac3b0000000000000000 + + +33202 +b6eddfed50104470ac3b0000000000000000 + + +33203 +b6eddfed5018447026ab00000090b572000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff80403c51000003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 + + +33204 +b6eddffb50114462aba80000000000000000 + + +33205 +0000000070024000d8ab0000020405b401010402 +000080010000000000000000 + +33206 +b0be000000010000000000000377777704646f7261026e6c0000010001 +b0be800000010000000200000377777704646f7261026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02c + +33207 +b6eddffc50104462aba70000000000000000 + + +33208 +b6eddffc50104462aba70000000000000000 + + +33209 +7cc300000001000000000000037777770965617379626c696e64026e6c0000010001 +7cc380000001000000020002037777770965617379626c696e64026e6c0000010001c01000020001000151800009026e730369736dc01ac01000020001000151800006036e7332c031c02e00010001000151800004d994ab02c04300010001000151800004d994ab03 + +33210 +b6eed8705010447071900000000000000000 + + +33211 +b6eed8705010447071900000000000000000 + + +33212 +0424000000010000000000000377777706626164616b6f026e6c0000010001 +0424800000010000000200000377777706626164616b6f026e6c0000010001c0100002000100015180000f036e7331057769736a61036e657400c01000020001000151800006036e7332c02f + +33213 +b6eed87050184470e4c000000090bdb2000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff80403c51000003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 + + +33214 +676c0000000100000000000009736b79616363657373026e6c00000f0001 +676c8000000100000002000209736b79616363657373026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450416028c04500010001000151800004c356780c + +33215 +f6a700000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637309696e6d79706c616365036f7267026e6c0000060001 +f6a784030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637309696e6d79706c616365036f7267026e6c0000060001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +33216 +b6eed87e5011446270fd0000000000000000 + + +33217 +0000000070024000edab0000020405b401010402 +000080010000000000000000 + +33218 +83390000000100000000000003777777086b6c75736861616e026e6c0000010001 +83398000000100000003000103777777086b6c75736861616e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +33219 +b6eed87f5010446270fc0000000000000000 + + +33220 +b6eed87f5010446270fc0000000000000000 + + +33221 +b6f167c150104470f73c0000000000000000 +b6f1e7c40000000000000000 + +33222 +b6f167c150104470f73c0000000000000000 +b6f1e7c40000000000000000 + +33223 +b6f167c150184470686f00000090bdb0000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403aff81403c51010003000000314e544c4d535350000100000097b200e0080008002900000009000900200000004e542d53455256455248554c53424f55570000 +b6f1e7c40000000000000000 + +33224 +d63d00000001000000000000056e6f62656c026e6c00000f0001 +d63d80000001000000020000056e6f62656c026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c029 + +33225 +b6f167cf50114462f6a90000000000000000 +b6f1e7c40000000000000000 + +33226 +b6f167d050104462f6a80000000000000000 +b6f1e7d40000000000000000 + +33227 +b6f167d050104462f6a80000000000000000 +b6f1e7d40000000000000000 + +33228 +4dba00000001000000000000037777770c6d756c7469636172656e6574026e6c0000010001 +4dba80000001000000020002037777770c6d756c7469636172656e6574026e6c0000010001c0100002000100015180000a036e733103697870c01dc01000020001000151800006036e7332c035c03100010001000151800004d943e639c047000100010001518000043efa063f + +33229 +d58a0000000100000000000003777777086c65747373746174026e6c0000010001 +d58a8000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +33230 +366600100001000000000001036a7572036b756e026e6c00000100010000290800000080000000 +366680000001000000030004036a7572036b756e026e6c0000010001c0100002000100015180000f08636170796261726103756369c010c0100002000100015180000a036e733103736369c010c0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000483ae3c15c0430001000100015180000483aee004c05900010001000151800004c0576a650000291000000000000000 + +33231 +7d410000000100000000000006787334616c6c026e6c00000f0001 +7d418000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +33232 +79950000000100000000000009616c6465626172616e0b706167656d617374657273026e6c0000010001 +79958000000100000002000209616c6465626172616e0b706167656d617374657273026e6c0000010001c01600020001000151800002c00cc0160002000100015180000d0a626574656c6765757365c016c00c00010001000151800004d5880b3cc04400010001000151800004d5880b3e + +33233 +a915000000010000000000000a626574656c67657573650b706167656d617374657273026e6c0000010001 +a915800000010000000200020a626574656c67657573650b706167656d617374657273026e6c0000010001c0170002000100015180000c09616c6465626172616ec017c01700020001000151800002c00cc03700010001000151800004d5880b3cc00c00010001000151800004d5880b3e + +33234 +d15400000001000000000000036e733109666972737466696e64026e6c0000010001 +d15480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33235 +d15500000001000000000000036e733209666972737466696e64026e6c0000010001 +d15580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33236 +d156000000010000000000000a73706f727476656e7565026e6c00001c0001 +d156800000010000000200000a73706f727476656e7565026e6c00001c0001c00c00020001000151800010036e733109666972737466696e64c017c00c00020001000151800006036e7332c02f + +33237 +6ca10000000100000000000004626f676f026e6c00000f0001 +6ca18000000100000002000004626f676f026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +33238 +7f9400000001000000000000036d7831087265616c66726565026e6c0000010001 +7f9480000001000000020000036d7831087265616c66726565026e6c0000010001c01000020001000151800011036e733107726f6b73636f6d036e657400c0100002000100015180000e036e733207726f6b73636f6dc019 + +33239 +d15700000001000000000000036e733109666972737466696e64026e6c0000010001 +d15780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33240 +d15800000001000000000000036e733209666972737466696e64026e6c0000010001 +d15880000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33241 +f11128000001000000010000026e6c0000060001055f6c646170045f7463700b7768697a7a646f6d706463026e6c00002100010000025800230000006401850c7768697a7a646f6d706463300b7768697a7a646f6d706463026e6c00 +f111a8040000000000000000 + +33242 +0b9100000001000000000000037777770968616d657273686f66026e6c0000010001 +0b9180000001000000020002037777770968616d657273686f66026e6c0000010001c0100002000100015180000e026e730874657272617a7572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d5880e9ac04800010001000151800004d59ae202 + +33243 +5232000000010000000000000772756d61776562026e6c00000f0001 +5232800000010000000200020772756d61776562026e6c00000f0001c00c00020001000151800012036e73320b76736d2d686f7374696e67c014c00c00020001000151800005026e73c02cc02800010001000151800004d468c204c04600010001000151800004d468c205 + +33244 +9eef00000001000000000000036e73320b76736d2d686f7374696e67026e6c0000010001 +9eef80000001000000020002036e73320b76736d2d686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d468c205c00c00010001000151800004d468c204 + +33245 +0000000070024000bf770000020405b401010402 +000080010000000000000000 + +33246 +41c000000001000000000000036e733303777873024e4c0000010001 +41c080000001000000030003036e733303777873024e4c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +33247 +b6f24c8350104470e4450000000000000000 +b6f2cc840000000000000000 + +33248 +b6f24c8350184470a15400000096b1a8000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0084403c52040003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 +b6f2cc840000000000000000 + +33249 +a1be0000000100000000000003706f700f72656e6261616e6475696e64696774026e6c0000010001 +a1be8000000100000003000203706f700f72656e6261616e6475696e64696774026e6c0000010001c0100002000100015180000f036e7331086d6f76656e657874c020c01000020001000151800006036e7332c038c01000020001000151800012036e7333086d6f76656e657874036e657400c03400010001000151800004d4ccc445c04f00010001000151800004d4ccf745 + +33250 +fcf100000001000000000000126e62637665726d6f67656e73626568656572026e6c0000010001 +fcf180000001000000020002126e62637665726d6f67656e73626568656572026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01fc00c00020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +33251 +b6f24c9150114462e3ac0000000000000000 +b6f2cc940000000000000000 + +33252 +b6f24c9250104462e3ab0000000000000000 +b6f2cc940000000000000000 + +33253 +caca000000010000000000001372696167672d72696a6e6d6f6e642d7a756964026e6c0000010001 +caca800000010000000200021372696167672d72696a6e6d6f6e642d7a756964026e6c0000010001c00c00020001000151800015036e73310e726567696f70726f766964657273c020c00c00020001000151800006036e7332c038c03400010001000151800004d41da001c05500010001000151800004d41da1fe + +33254 +0000000070024000f0f20000020405b401010402 +000080010000000000000000 + +33255 +b6f339b750104470288c0000000000000000 +b6f3b9b40000000000000000 + +33256 +b6f339b750184470906c0000009607d8000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0084403c52040003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 +b6f3b9b40000000000000000 + +33257 +b6f339c55011446227f30000000000000000 +b6f3b9c40000000000000000 + +33258 +174f000000010000000000000b706f6f6c686f6c64696e67026e6c0000ff0001 +174f800000010000000200010b706f6f6c686f6c64696e67026e6c0000ff0001c00c0002000100015180000a036e733303777873c018c00c00020001000151800006036e7334c030c04200010001000151800004d5ef9a65 + +33259 +b6f339c65010446227f20000000000000000 +b6f3b9c40000000000000000 + +33260 +00000000700240004f5f0000020405b401010402 +000080010000000000000000 + +33261 +b6f41c4a50104470a4640000000000000000 +b6f49c440000000000000000 + +33262 +b6f41c4a50184470d9f4000000963a28000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0084403c52040003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 +b6f49c440000000000000000 + +33263 +b6f41c5850114462a3cb0000000000000000 +b6f49c540000000000000000 + +33264 +71ab000000010000000000000377777708637265612d6b6f73026e6c0000010001 +71ab800000010000000200000377777708637265612d6b6f73026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +33265 +b6f41c5950104462a3ca0000000000000000 +b6f49c540000000000000000 + +33266 +1b8400000001000000000000037777770672656b657265026e6c0000010001 +1b8480000001000000020000037777770672656b657265026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +33267 +4d9700000001000000000000036a7572036b756e026e6c0000010001 +4d9780000001000000030003036a7572036b756e026e6c0000010001c0100002000100015180000f08636170796261726103756369c010c0100002000100015180000a036e733103736369c010c0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000483ae3c15c0430001000100015180000483aee004c05900010001000151800004c0576a65 + +33268 +20c000000001000000000000036e73330767617574656e67026e6c0000010001 +20c080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33269 +38cf00000001000000000000036e73340767617574656e67026e6c0000010001 +38cf80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33270 +18d200000001000000000000036e73330767617574656e67026e6c0000010001 +18d280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33271 +bb9d00000001000000000000046e733032066368656c6c6f026e6c0000010001 +bb9d80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +33272 +ae5b0000000100000000000004686f6d650a636f6e63657074736661026e6c0000010001 +ae5b8000000100000002000204686f6d650a636f6e63657074736661026e6c0000010001c0110002000100015180000603646e73c011c0110002000100015180001004646e733208636f6e6365707473c01cc03000010001000151800004d5c51c03c04200010001000151800004d5c51e1c + +33273 +494f000000010000000000000377777706696e74657265026e6c0000010001 +494f800000010000000200010377777706696e74657265026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +33274 +592300000001000000000000036e7334076e656473746174026e6c0000010001 +592380000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33275 +7d1b0000000100000000000009756e697862617369630b7669616e6574776f726b73026e6c0000010001 +7d1b8000000100000002000209756e697862617369630b7669616e6574776f726b73026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03600010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +33276 +1e1700000001000000000000036e7332076e656473746174026e6c0000010001 +1e1780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33277 +b43900000001000000000000037777770d6a6f6f73746465727569746572026e6c0000010001 +b43980000001000000020000037777770d6a6f6f73746465727569746572026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c038 + +33278 +2096000000010000000000000873706163657075620b666f6b6b65727370616365026e6c0000010001 +2096800000010000000200010873706163657075620b666f6b6b65727370616365026e6c0000010001c015000200010001518000160873706163657075620a64757463687370616365c021c0150002000100015180000b026e73026e6c036e657400c03500010001000151800004c2b2d042 + +33279 +585600000001000000000000036e733209666972737466696e64026e6c0000010001 +585680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33280 +4dbc00000001000000000000036e733109666972737466696e64026e6c0000010001 +4dbc80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33281 +5c5700000001000000000000044449444f03414d4303555641026e6c0000010001 +5c5780000001000000020002044449444f03414d4303555641026e6c0000010001c0150002000100015180000e086261726c61657573026963c015c01500020001000151800006036e7331c015c02d0001000100015180000491124432c0470001000100015180000491122710 + +33282 +095d00000001000000000000044649444f03414d4303555641026e6c0000010001 +095d80000001000000020002044649444f03414d4303555641026e6c0000010001c0150002000100015180000e086261726c61657573026963c015c01500020001000151800006036e7331c015c02d0001000100015180000491124432c0470001000100015180000491122710 + +33283 +7a4f00000001000000000000084241524c4145555302494303555641026e6c0000010001 +7a4f80000001000000020002084241524c4145555302494303555641026e6c0000010001c01800020001000151800002c00cc01800020001000151800006036e7331c018c00c0001000100015180000491124432c03e0001000100015180000491122710 + +33284 +268200000001000000000000036e733109666972737466696e64026e6c0000010001 +268280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33285 +047e00000001000000000000036e733209666972737466696e64026e6c0000010001 +047e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33286 +21c40000000100000000000008676f6c6673697465026e6c0000010001 +21c48000000100000002000208676f6c6673697465026e6c0000010001c00c0002000100015180000e036e73310765766964656e74c015c00c00020001000151800006036e7332c02dc02900010001000151800004c36d19c4c04300010001000151800004c36d1942 + +33287 +dacb00000001000000000000056d61696c320774656e626f6572026e6c0000010001 +dacb80000001000000020000056d61696c320774656e626f6572026e6c0000010001c0120002000100015180000b026e73026e6c036e657400c0120002000100015180001206617574683630026e73026e6c027575c034 + +33288 +9bbb000000010000000000000377777706706173706f70026e6c0000010001 +9bbb800000010000000200000377777706706173706f70026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02e + +33289 +55f000000001000000000000046d61696c0770617261646f78026e6c0000010001 +55f080000001000000020002046d61696c0770617261646f78026e6c0000010001c0110002000100015180000f026e7309656174736572766572c019c01100020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +33290 +5647000000010000000000000377777706737461636b73026e6c0000010001 +5647800000010000000300030377777706737461636b73026e6c0000010001c0100002000100015180000b036e73610462797465c017c01000020001000151800006036e7362c02fc01000020001000151800006036e7363c02fc02b00010001000151800004d977e520c04200010001000151800004d977e521c05400010001000151800004403ebe47 + +33291 +280a000000010000000000000d6f6d726f70667279736c616e64026e6c0000010001 +280a840300010000000100000d6f6d726f70667279736c616e64026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +33292 +66510000000100000000000005646830373406787334616c6c026e6c0000010001 +66518000000100000003000205646830373406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +33293 +4ab100000001000000000000036d6571026e6c00000f0001 +4ab180000001000000020001036d6571026e6c00000f0001c00c0002000100015180000c036e7331056269746963c010c00c00020001000151800006036e7332c028c02400010001000151800004c36cdfc8 + +33294 +68bd0000000100000000000003777777067a7376737362026e6c0000010001 +68bd8403000100000001000003777777067a7376737362026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +33295 +679200000001000000000000026e7306766576696461026e6c0000010001 +679280000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +33296 +79b70000000100000000000006617272697661026e6c00000f0001 +79b78000000100000002000106617272697661026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02700010001000151800004d9a63bb2 + +33297 +510200000001000000000000135649525455414c53484f57524f4f4d53494e43026e6c0000020001 +510284030001000000010000135649525455414c53484f57524f4f4d53494e43026e6c0000020001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +33298 +f97b000000010000000000000a616d7374656c7665656e026e6c0000010001 +f97b800000010000000200000a616d7374656c7665656e026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +33299 +6ea100000001000000000000036e73330767617574656e67026e6c0000010001 +6ea180000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33300 +1d7800000001000000000000036e73340767617574656e67026e6c0000010001 +1d7880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33301 +49410000000100000000000009652d6c756e61746963026e6c0000010001 +49418000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33302 +1a9700000001000000000000036e733109756e69736f75726365026e6c0000010001 +1a9780000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +33303 +3b94000000010000000000000673656375726507656e64656d6f6c026e6c0000010001 +3b94800000010000000200000673656375726507656e64656d6f6c026e6c0000010001c0130002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0130002000100015180000d036e7332036b706e036e657400 + +33304 +2b3d00000001000000000000086865696e656b656e026e6c0000010001 +2b3d80000001000000020000086865696e656b656e026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02d + +33305 +01150000000100000000000005646e732d31056c61646f74026e6c0000010001 +01158000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33306 +7b7e000000010000000000000a6d6f6e74656e76657273026e6c0000ff0001 +7b7e800000010000000200000a6d6f6e74656e76657273026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c017c00c0002000100015180000704686e7331c030 + +33307 +71bd0000000100000000000005646e732d32056c61646f74026e6c0000010001 +71bd8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33308 +cd420000000100000000000003696d670a72617069647375676172026e6c0000010001 +cd428000000100000002000203696d670a72617069647375676172026e6c0000010001c01000020001000151800009036e7331026973c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5852102c04400010001000151800004d5c41503 + +33309 +3a4900000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +3a4980000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +33310 +0158000000010000000000000469632d73026e6c0000ff0001 +0158800000010000000200000469632d73026e6c0000ff0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +33311 +c6e900000001000000000000037777770c617267313934302d31393435026e6c0000010001 +c6e980000001000000020002037777770c617267313934302d31393435026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +33312 +3a150000000100000000000006646f6e67656e026e6c0000010001 +3a158000000100000002000106646f6e67656e026e6c0000010001c00c00020001000151800012026e730973796e63666f72636503636f6d00c00c0002000100015180000d036e733206787334616c6cc013c04500010001000151800004c26d0963 + +33313 +a0aa0000000100000000000005646e732d31056c61646f74026e6c0000010001 +a0aa8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33314 +1c070000000100000000000005646e732d32056c61646f74026e6c0000010001 +1c078000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33315 +20450000000100000000000005646e732d31056c61646f74026e6c0000010001 +20458000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33316 +90b900000001000000000000037777770d706f726e6f62696f73636f6f70026e6c0000010001 +90b980000001000000020002037777770d706f726e6f62696f73636f6f70026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01ec01000020001000151800006036e7332c036c032000100010001518000045054e415c04e0001000100015180000451046014 + +33317 +e9f30000000100000000000005646e732d32056c61646f74026e6c0000010001 +e9f38000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33318 +dd09000000010000000000001564696572656e70656e73696f6e2d6e61617264656e026e6c0000ff0001 +dd09800000010000000200001564696572656e70656e73696f6e2d6e61617264656e026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c03c + +33319 +7a9f00000001000000000000036d6274026e6c00000f0001 +7a9f80000001000000020002036d6274026e6c00000f0001c00c0002000100015180000b026e7305706c616e74c010c00c00020001000151800006036e7332c027c02400010001000151800004d59f0037c03b00010001000151800004d59f0046 + +33320 +197c0000000100000000000007656c656d656e74066e656463616d026e6c0000010001 +197c8000000100000002000207656c656d656e74066e656463616d026e6c0000010001c0140002000100015180000f026e7309656174736572766572c01bc01400020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +33321 +1d40000000010000000000001072616e64737461642d656c656b74726f026e6c00000f0001 +1d40800000010000000300021072616e64737461642d656c656b74726f026e6c00000f0001c00c0002000100015180000d036e733106776964657873c01dc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +33322 +65420000000100000000000003777777046476686e026e6c0000010001 +65428000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +33323 +bc460000000100000000000003777777117765726b6472756b70726576656e746965026e6c0000010001 +bc468000000100000002000203777777117765726b6472756b70726576656e746965026e6c0000010001c01000020001000151800009036e7331026973c022c01000020001000151800006036e7332c03ac03600010001000151800004d5852102c04b00010001000151800004d5c41503 + +33324 +0cc200000001000000000000036e733103737761026e6c0000010001 +0cc280000001000000030001036e733103737761026e6c0000010001c0100002000100015180000e036e733104686d6e71036e657400c0100002000100015180000d036e733206776964657873c031c0100002000100015180000d036e733306776964657873c014c05b000100010001518000043efa0703 + +33325 +234c00000001000000000000036e733103737761026e6c00001c0001 +234c80000001000000030001036e733103737761026e6c00001c0001c0100002000100015180000e036e733104686d6e71036e657400c0100002000100015180000d036e733206776964657873c031c0100002000100015180000d036e733306776964657873c014c05b000100010001518000043efa0703 + +33326 +d94f00000001000000000000036e733103737761026e6c0000260001 +d94f80000001000000030001036e733103737761026e6c0000260001c0100002000100015180000e036e733104686d6e71036e657400c0100002000100015180000d036e733206776964657873c031c0100002000100015180000d036e733306776964657873c014c05b000100010001518000043efa0703 + +33327 +f62700000001000000000000037777770770737670696373026e6c0000010001 +f62780000001000000020002037777770770737670696373026e6c0000010001c0100002000100015180000a036e733103746d6ec018c01000020001000151800006036e7332c030c02c00010001000151800004d5a0d8fac04200010001000151800004d5a0d9fa + +33328 +c78a000000010000000000000631326d6f7665026e6c0000ff0001 +c78a800000010000000300020631326d6f7665026e6c0000ff0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +33329 +0be000000001000000000000037777770b72747672696a6e6d6f6e64026e6c0000010001 +0be080000001000000020000037777770b72747672696a6e6d6f6e64026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c037 + +33330 +996f00000001000000000000037777770a7269636b6d6f6c656d61026e6c0000010001 +996f80000001000000020000037777770a7269636b6d6f6c656d61026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +33331 +25d600000001000000000000037777770a7472656e647374796c65026e6c0000010001 +25d680000001000000020000037777770a7472656e647374796c65026e6c0000010001c01000020001000151800013036e733009696e7465726c697a65036e657400c01000020001000151800006036e7331c033 + +33332 +42fd00000001000000000000037777770a75742d73747575706b65026e6c0000010001 +42fd80000001000000020000037777770a75742d73747575706b65026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +33333 +2d0d00000001000000000000036e733103757063026e6c00001c0001 +2d0d80000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +33334 +b12000000001000000000000036e733103757063026e6c0000010001 +b12080000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +33335 +dcff00000001000000000000046e733032066368656c6c6f026e6c00001c0001 +dcff80000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +33336 +ac2d00000001000000000000037777770463746369026e6c0000010001 +ac2d84030001000000010000037777770463746369026e6c0000010001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +33337 +bce500000001000000000000046e733032066368656c6c6f026e6c0000010001 +bce580000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +33338 +0ea900000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +0ea980000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33339 +a0f500000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +a0f580000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33340 +317000000001000000000000037777770764696769747578026e6c0000010001 +317080000001000000020002037777770764696769747578026e6c0000010001c0100002000100015180000805646e733031c010c0100002000100015180000805646e733032c010c02c00010001000151800004d973cb46c04000010001000151800004d5549664 + +33341 +0ffe00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +0ffe80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33342 +b0360000000100000000000005627275766f026e6c00000f0001 +b0368000000100000002000205627275766f026e6c00000f0001c00c00020001000151800016036e73310f706c616e706c616e73797374656d73c012c00c0002000100015180000a036e7332036e7873c012c02600010001000151800004d973c6a2c04800010001000151800004d973c102 + +33343 +881300000001000000000000036e73320f444f4d41494e2d5245474953545259024e4c00001c0001 +881380000001000000030002036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33344 +fe0d00000001000000000000026e730f444f4d41494e2d5245474953545259024e4c00001c0001 +fe0d80000001000000030002026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33345 +2f200000000100000000000003777777086631726163696e67026e6c0000010001 +2f208000000100000002000203777777086631726163696e67026e6c0000010001c01000020001000151800016036e73310f6578636c757369766564657369676ec019c01000020001000151800006036e7332c031c02d00010001000151800004d97261bec04f00010001000151800004d97261bd + +33346 +669f000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +669f840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +33347 +f6be000000010000000000000377777706636861746964026e6c0000010001 +f6be800000010000000200020377777706636861746964026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c017c01000020001000151800006036e7332c02ec02b0001000100015180000450474002c0490001000100015180000450474102 + +33348 +0fa70000000100000000000003667474026e6c0000010001 +0fa78000000100000003000303667474026e6c0000010001c00c0002000100015180000e04646e733106626c6978656dc010c00c0002000100015180000704646e7332c029c00c0002000100015180000704646e7333c029c02400010001000151800004d44fe803c03e00010001000151800004c3f5c782c05100010001000151800004d44ff303 + +33349 +251e00000001000000000000036e733208696e7465726d6178026e6c0000010001 +251e80000001000000020002036e733208696e7465726d6178026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004505fa002c00c00010001000151800004505fac02 + +33350 +68cb00000001000000000000036e733108696e7465726d6178026e6c0000010001 +68cb80000001000000020002036e733108696e7465726d6178026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004505fa002c03b00010001000151800004505fac02 + +33351 +f0db00000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d7364637306626c6e74303105626c646d6e026e6c0000210001 +f0db84030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d7364637306626c6e74303105626c646d6e026e6c0000210001c04d00060001000038400036026e730f646f6d61696e2d7265676973747279c04d0a686f73746d6173746572c0640bf1e540000070800000384000278d0000003840 + +33352 +c53a00000001000000000000087769656c61617264026e6c00000f0001 +c53a80000001000000020001087769656c61617264026e6c00000f0001c00c000200010001518000130b737061726373657276657204706c6578c015c00c0002000100015180000b026e73026e6c036e657400c02900010001000151800004c1439a0a + +33353 +2fc5000000010000000000000377777708616e65776c696665026e6c0000010001 +2fc5840300010000000100000377777708616e65776c696665026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +33354 +6eca00000001000000000000036d783306787334616c6c026e6c0000010001 +6eca80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +33355 +4b7a00000001000000000000036d783406787334616c6c026e6c0000010001 +4b7a80000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +33356 +c8b900000001000000000000055f6c646170045f746370026763065f6d7364637306626c6e74303105626c646d6e026e6c0000210001 +c8b984030001000000010000055f6c646170045f746370026763065f6d7364637306626c6e74303105626c646d6e026e6c0000210001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +33357 +3653000000010000000000000776657273696f6e0462696e640000100003 +3653800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +33358 +42240000000100000000000006706c61736d61026e6c0000010001 +42248000000100000002000206706c61736d61026e6c0000010001c00c0002000100015180000d026e73076b6e6f77617265c013c00c00020001000151800006036e7332c02ac02700010001000151800004c3402003c04000010001000151800004c340202b + +33359 +158100000001000000000000037777770a766f656c737072696574026e6c0000010001 +158180000001000000020000037777770a766f656c737072696574026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +33360 +902e00000001000000000000037777770631326a6f6273026e6c0000010001 +902e80000001000000030002037777770631326a6f6273026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +33361 +a59300000001000000000000046d61696c086d656e7364617461026e6c0000010001 +a59380000001000000020001046d61696c086d656e7364617461026e6c0000010001c0110002000100015180000c026e73066e6577777773c01ac0110002000100015180000d036e7332036b706e036e657400c02e00010001000151800004c1ac2b35 + +33362 +099a00100001000000000001036e733503777873026e6c00000100010000290800000080000000 +099a80000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +33363 +9e2700000001000000000000055f6c646170045f746370086e6b6f6572696572026e6c0000060001 +9e2784030001000000010000055f6c646170045f746370086e6b6f6572696572026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +33364 +7b6e00000001000000000000036e733207726f6b73636f6d026e6c0000010001 +7b6e80000001000000020000036e733207726f6b73636f6d026e6c0000010001c01000020001000151800011036e733207726f6b73636f6d036e657400c01000020001000151800006036e7333c030 + +33365 +101b0000000100000000000013656767696e6b2d76657270616b6b696e67656e026e6c00000f0001 +101b8000000100000002000213656767696e6b2d76657270616b6b696e67656e026e6c00000f0001c00c0002000100015180000a036e733103646c61c020c00c00020001000151800006036e7332c038c034000100010001518000043eb1a412c04a000100010001518000043eb1a413 + +33366 +3dec00100001000000000001026e7304696d636f026e6c00000100010000290800000080000000 +3dec80000001000000020002026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a0000291000000000000000 + +33367 +be330000000100000000000006636861726973026e6c0000010001 +be338000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +33368 +ace10000000100000000000005646e732d31056c61646f74026e6c0000010001 +ace18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33369 +a678000000010000000000001768656e73696e7374616c6c61746965746563686e69656b026e6c0000010001 +a678800000010000000200021768656e73696e7374616c6c61746965746563686e69656b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc024c00c00020001000151800006036e7332c03bc03800010001000151800004c26d0642c05000010001000151800004c26d0963 + +33370 +a1360000000100000000000005646e732d32056c61646f74026e6c0000010001 +a1368000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33371 +8d1a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +8d1a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33372 +0c7600000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +0c7680000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33373 +dfbd0000000100000000000005746c6774650a7061797065726e657773026e6c0000010001 +dfbd8000000100000002000205746c6774650a7061797065726e657773026e6c0000010001c01200020001000151800010036e733109652d666163746f7279c01dc01200020001000151800006036e7332c035c03100010001000151800004c1fefe82c04d00010001000151800004c1feff82 + +33374 +9b2300000001000000000000056369626170026e6c00000f0001 +9b2380000001000000020002056369626170026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc012c00c00020001000151800006036e7332c02ac02600010001000151800004c3558244c03f00010001000151800004c3558245 + +33375 +dc9400000001000000000000036e733503777873026e6c0000010001 +dc9480000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +33376 +d5c20000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d5c28000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33377 +92960000000100000000000008636f6d626174656c026e6c00000f0001 +92968000000100000002000008636f6d626174656c026e6c00000f0001c00c00020001000151800013036e73310c696d70726573736976657873c015c00c00020001000151800006036e7332c02d + +33378 +ff0600100001000000000001036e733107686f7477697265026e6c00000100010000290800000000000000 +ff0680000001000000020003036e733107686f7477697265026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451044b03c03a0001000100015180000451044bc80000291000000000000000 + +33379 +ffee00100001000000000001036e733207686f7477697265026e6c00000100010000290800000000000000 +ffee80000001000000020003036e733207686f7477697265026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c0001000100015180000451044b03c00c0001000100015180000451044bc80000291000000000000000 + +33380 +484100000001000000000000036e7332067a696d627261026e6c0000010001 +484180000001000000020002036e7332067a696d627261026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d5efa611c00c00010001000151800004d5efa612 + +33381 +277700000001000000000000036e7332067a696d627261026e6c0000260001 +277780000001000000020002036e7332067a696d627261026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d5efa611c00c00010001000151800004d5efa612 + +33382 +65e928000001000000010000026e6c0000060001055f6c646170045f746370086e6b6f6572696572026e6c000021000100000258001a00000064018506736572766572086e6b6f6572696572026e6c00 +65e9a8040000000000000000 + +33383 +422200000001000000000000036e733503777873026e6c0000010001 +422280000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +33384 +e8c40000000100000000000003736e73026e6c00000f0001 +e8c48000000100000002000003736e73026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c028 + +33385 +e7e7000000010000000000000d656c656b74726f76616b6d616e026e6c0000ff0001 +e7e7800000010000000200010d656c656b74726f76616b6d616e026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02e00010001000151800004c297492a + +33386 +4f4300000001000000000000036e73310a726564686f7374696e67026e6c00001c0001 +4f4380000001000000020002036e73310a726564686f7374696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +33387 +762d00000001000000000000036e73320a726564686f7374696e67026e6c00001c0001 +762d80000001000000020002036e73320a726564686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +33388 +bd61000000010000000000000e36322d3137372d3138322d32303207626265796f6e64026e6c0000010001 +bd61800000010000000200020e36322d3137372d3138322d32303207626265796f6e64026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc037000100010001518000043eb1900bc049000100010001518000043eb19002 + +33389 +b225000000010000000000000673657964656c026e6c0000ff0001 +b225800000010000000200000673657964656c026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +33390 +c415000000010000000000000377777707696e666f343030026e6c0000010001 +c415800000010000000200010377777707696e666f343030026e6c0000010001c01000020001000151800009026e73036e636ec018c01000020001000151800006036e7332c02fc02c00010001000151800004c2e51401 + +33391 +18b60000000100000000000003777777036e7263026e6c0000010001 +18b68000000100000003000203777777036e7263026e6c0000010001c01000020001000151800015036e73310b70696e6b726f6363616465036e657400c0100002000100015180000e026e73086d656761706c6578c014c01000020001000151800006036e7331c04cc04900010001000151800004504f6101c06300010001000151800004504f6102 + +33392 +0eac000000010000000000000377777708776f6f6e73646167026e6c0000010001 +0eac800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +33393 +fbbb0000000100000000000006636861726973026e6c0000ff0001 +fbbb8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +33394 +ded900000001000000000000036e7332036e636e026e6c0000010001 +ded980000001000000020001036e7332036e636e026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004c2e51401 + +33395 +26a700000001000000000000036e7332036e636e026e6c0000260001 +26a780000001000000020001036e7332036e636e026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004c2e51401 + +33396 +00000000700222389b1f00000204057801010402 +000080010000000000000000 + +33397 +0b1d00000001000000000000046d61696c0764656e68616167026e6c0000010001 +0b1d80000001000000020002046d61696c0764656e68616167026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02d00010001000151800004d9443105c03f00010001000151800004d9443106 + +33398 +b01000000001000000000000037777770e7274766f6f73747265636c616d65026e6c0000010001 +b01080000001000000020002037777770e7274766f6f73747265636c616d65026e6c0000010001c0100002000100015180000c036e7331057669727475c01fc01000020001000151800006036e7332c037c03300010001000151800004d9726102c04b00010001000151800004d58141c4 + +33399 +ee9400000001000000000000076863636669646f03686363026e6c00000f0001 +ee9480000001000000020000076863636669646f03686363026e6c00000f0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c032 + +33400 +62750000000100000000000003777777086575726f6b6c696b026e6c0000010001 +62758000000100000002000103777777086575726f6b6c696b026e6c0000010001c0100002000100015180000e026e73086575726f636c6978c019c01000020001000151800012036e7332086575726f636c697803636f6d00c02d00010001000151800004d47bc685 + +33401 +b6f6588a50102648b4060000000000000000 +b6f6d8840000000000000000 + +33402 +bd6600000001000000000000036e733107737572666e6574026e6c0000010001 +bd6680000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +33403 +4f9d00000001000000000000087073746e7365727607747564656c6674026e6c0000010001 +4f9d80000001000000050005087073746e7365727607747564656c6674026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800009036e7331026574c015c0150002000100015180000d07647574746e636202746ec015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000482a1b401c0430001000100015180000482a1b441c0550001000100015180000482a12111c06a0001000100015180000482a1bc8cc08300010001000151800004c0576a65 + +33404 +31fb00000001000000000000087073746e7365727607747564656c6674026e6c00001c0001 +31fb80000001000000050005087073746e7365727607747564656c6674026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800009036e7331026574c015c0150002000100015180000d07647574746e636202746ec015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000482a1b401c0430001000100015180000482a1b441c0550001000100015180000482a12111c06a0001000100015180000482a1bc8cc08300010001000151800004c0576a65 + +33405 +8eb60000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +8eb68000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +33406 +fff700000001000000000000036e733107686f7477697265026e6c0000010001 +fff780000001000000020002036e733107686f7477697265026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451044b03c03a0001000100015180000451044bc8 + +33407 +0ef500000001000000000000036e733207686f7477697265026e6c0000010001 +0ef580000001000000020002036e733207686f7477697265026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c0001000100015180000451044b03c00c0001000100015180000451044bc8 + +33408 +b6f6588a50182648a8900000008d3800000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afca8403c4e2800030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 +b6f6d8840000000000000000 + +33409 +14fb000000010000000000000f766572676565727265657577696a6b026e6c0000010001 +14fb800000010000000200020f766572676565727265657577696a6b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +33410 +b6f658985011263ab3760000000000000000 +b6f6d8940000000000000000 + +33411 +0000000070022238a91f00000204057801010402 +000080010000000000000000 + +33412 +a7100000000100000000000006657572656b610464697661026e6c0000010001 +a7108000000100000002000006657572656b610464697661026e6c0000010001c0130002000100015180000e036e73310464697661036e657400c01300020001000151800006036e7332c030 + +33413 +b6f658995010263ab3750000000000000000 +b6f6d8940000000000000000 + +33414 +3ca400000001000000000000026e7304696d636f026e6c0000010001 +3ca480000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +33415 +b6f74bfb50102648ce940000000000000000 +b6f7cbf40000000000000000 + +33416 +eeaa00000001000000000000036e73330472617468026e6c0000010001 +eeaa80000001000000020002036e73330472617468026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02900010001000151800004d535c109c03b000100010001518000043f6d1401 + +33417 +bb8500000001000000000000036e73330472617468026e6c0000260001 +bb8580000001000000020002036e73330472617468026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02900010001000151800004d535c109c03b000100010001518000043f6d1401 + +33418 +01a70000000100000000000007686f72697a6f6e026e6c00000f0001 +01a78000000100000002000207686f72697a6f6e026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02800010001000151800004d5c51803c03900010001000151800004d5c51805 + +33419 +b6f74bfb50182648241f0000008dd800000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afca8403c4e2800030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 +b6f7cbf40000000000000000 + +33420 +c8c400000001000000000000024e530f444f4d41494e2d5245474953545259024e4c00001c0001 +c8c480000001000000030002024e530f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33421 +657f00000001000000000000024e530f444f4d41494e2d5245474953545259024e4c0000260001 +657f80000001000000030002024e530f444f4d41494e2d5245474953545259024e4c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33422 +789b00000001000000000000034e53320f444f4d41494e2d5245474953545259024e4c00001c0001 +789b80000001000000030002034e53320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33423 +ca6200000001000000000000034e53320f444f4d41494e2d5245474953545259024e4c0000260001 +ca6280000001000000030002034e53320f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33424 +243300000001000000000000034e53350f444f4d41494e2d5245474953545259024e4c00001c0001 +243380000001000000030002034e53350f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33425 +a15000000001000000000000034e53350f444f4d41494e2d5245474953545259024e4c0000260001 +a15080000001000000030002034e53350f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33426 +754600000001000000000000037777770873706f7274757261026e6c0000010001 +754680000001000000030003037777770873706f7274757261026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +33427 +277000000001000000000000036e73310761737034616c6c026e6c00001c0001 +277080000001000000030003036e73310761737034616c6c026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +33428 +69f300000001000000000000036e73310761737034616c6c026e6c0000260001 +69f380000001000000030003036e73310761737034616c6c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +33429 +788500000001000000000000036e73320761737034616c6c026e6c0000260001 +788580000001000000030003036e73320761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c00c000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +33430 +443400000001000000000000036e73330761737034616c6c026e6c00001c0001 +443480000001000000030003036e73330761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +33431 +91a700000001000000000000036e73330761737034616c6c026e6c0000260001 +91a780000001000000030003036e73330761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +33432 +281600000001000000000000066f6d726f6e32086c6f7374626f7973026e6c0000010001 +281680000001000000020002066f6d726f6e32086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +33433 +49b5000000010000000000000377777708776f6f6e73646167026e6c0000010001 +49b5800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +33434 +b6f74c095011263ace040000000000000000 +b6f7cc040000000000000000 + +33435 +0000000070022238c24f00000204057801010402 +000080010000000000000000 + +33436 +1e3500000001000000000000036d783107626265796f6e64026e6c0000010001 +1e3580000001000000020002036d783107626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043eb1900bc03e000100010001518000043eb19002 + +33437 +b6f74c0a5010263ace030000000000000000 +b6f7cc040000000000000000 + +33438 +b6f99ca65010264897170000000000000000 + + +33439 +20580000000100000000000004776f726b046f6e6365026e6c0000010001 +20588000000100000002000004776f726b046f6e6365026e6c0000010001c0110002000100015180000f026e73096379626572636f6d6dc016c01100020001000151800006036e7332c02d + +33440 +ed9400000001000000000000037777770a74656c6c6572706c7573026e6c0000010001 +ed9480000001000000020002037777770a74656c6c6572706c7573026e6c0000010001c0100002000100015180001404777777320c6e656465726c616e64776562c01bc0100002000100015180000d036e73320670726f6c616ec01bc02f00010001000151800004d5d381c2c04f00010001000151800004d4ccd4e7 + +33441 +b6f99ca6501826484ca20000008d7800000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afca8403c4e2800030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +33442 +f9cd00000001000000000000037777770d706f726e6f62696f73636f6f70026e6c0000010001 +f9cd80000001000000020002037777770d706f726e6f62696f73636f6f70026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01ec01000020001000151800006036e7332c036c032000100010001518000045054e415c04e0001000100015180000451046014 + +33443 +623400000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001 +623484030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001c05700060001000038400036026e730f646f6d61696e2d7265676973747279c0570a686f73746d6173746572c06e0bf1e540000070800000384000278d0000003840 + +33444 +2bf6000000010000000000000774726166666963026e6c0000010001 +2bf6800000010000000200000774726166666963026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +33445 +4f9f000000010000000000000f534d4954485353544154494f4e414c026e6c0000020001 +4f9f840300010000000100000f534d4954485353544154494f4e414c026e6c0000020001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +33446 +38a8000000010000000000000377777705736861726b026e6c0000010001 +38a8800000010000000200000377777705736861726b026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c040 + +33447 +b6f99cb45011263a96870000000000000000 + + +33448 +13910000000100000000000006676f6f676c65026e6c0000010001 +13918000000100000003000006676f6f676c65026e6c0000010001c00c00020001000151800010036e733106676f6f676c6503636f6d00c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02b + +33449 +38e400000001000000000000036e73330767617574656e67026e6c0000010001 +38e480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33450 +6cc80000000100000000000003777777127a7769747365726c6576656e6765766f656c026e6c0000010001 +6cc88000000100000002000103777777127a7769747365726c6576656e6765766f656c026e6c0000010001c0100002000100015180000c036e7331056b706e6873c023c0100002000100015180000d03646e73036b706e03636f6d00c0370001000100015180000491072163 + +33451 +b6f99cb55010263a96860000000000000000 + + +33452 +3aec00000001000000000000036e73310663617374656c024e4c0000010001 +3aec80000001000000020002036e73310663617374656c024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3558244c03900010001000151800004c3558245 + +33453 +45bc00000001000000000000036e733103656964026e6c0000010001 +45bc80000001000000020002036e733103656964026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c048b6c0360001000100015180000452c048ba + +33454 +132400000001000000000000036e733203656964026e6c0000010001 +132480000001000000020002036e733203656964026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000452c048b6c00c0001000100015180000452c048ba + +33455 +5bb000000001000000000000036e7335046372696f026e6c0000010001 +5bb080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33456 +88bd00000001000000000000036e7336046372696f026e6c0000010001 +88bd80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33457 +53cd000000010000000000000377777703776562026e6c0000010001 +53cd800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +33458 +6a5800000001000000000000036e7331046372696f026e6c0000010001 +6a5880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33459 +037700000001000000000000036e7332046372696f026e6c0000010001 +037780000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33460 +0b5a00000001000000000000037777770a72656372656174696566026e6c0000010001 +0b5a80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +33461 +46db00000001000000000000036e7331046372696f026e6c0000010001 +46db80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33462 +b2d100000001000000000000036e7332046372696f026e6c0000010001 +b2d180000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33463 +458b00100001000000000001024e530743495354524f4e024e4c00000100010000290800000080000000 +458b80000001000000020003024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f380000291000000000000000 + +33464 +2d7c00000001000000000000036e733207686f7374696e67026e6c0000010001 +2d7c80000001000000030003036e733207686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c000100010001518000043e818b01c00c000100010001518000043e818b02c04c000100010001518000043e818ae1 + +33465 +3c0b00000001000000000000036e733207686f7374696e67026e6c00001c0001 +3c0b80000001000000030003036e733207686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c000100010001518000043e818b01c00c000100010001518000043e818b02c04c000100010001518000043e818ae1 + +33466 +933400000001000000000000036e733107686f7374696e67026e6c0000010001 +933480000001000000030003036e733107686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e818b01c03a000100010001518000043e818b02c04c000100010001518000043e818ae1 + +33467 +2b8f00000001000000000000036e733107686f7374696e67026e6c00001c0001 +2b8f80000001000000030003036e733107686f7374696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e818b01c03a000100010001518000043e818b02c04c000100010001518000043e818ae1 + +33468 +071200000001000000000000036e733107686f7374696e67026e6c0000260001 +071280000001000000030003036e733107686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e818b01c03a000100010001518000043e818b02c04c000100010001518000043e818ae1 + +33469 +43f500000001000000000000036e733307686f7374696e67026e6c0000010001 +43f580000001000000030003036e733307686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c000100010001518000043e818b01c03e000100010001518000043e818b02c00c000100010001518000043e818ae1 + +33470 +9eac00000001000000000000036e733307686f7374696e67026e6c00001c0001 +9eac80000001000000030003036e733307686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c000100010001518000043e818b01c03e000100010001518000043e818b02c00c000100010001518000043e818ae1 + +33471 +91cf00000001000000000000036e733307686f7374696e67026e6c0000260001 +91cf80000001000000030003036e733307686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c000100010001518000043e818b01c03e000100010001518000043e818b02c00c000100010001518000043e818ae1 + +33472 +5e4e00000001000000000000036e733203656964026e6c0000010001 +5e4e80000001000000020002036e733203656964026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000452c048b6c00c0001000100015180000452c048ba + +33473 +2f2700000001000000000000036e733103656964026e6c0000010001 +2f2780000001000000020002036e733103656964026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c048b6c0360001000100015180000452c048ba + +33474 +46690000000100000000000003777777116d6f747261632d6879647261756c69656b026e6c0000010001 +46698000000100000002000003777777116d6f747261632d6879647261756c69656b026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c039 + +33475 +af6e00000001000000000000055f6c646170045f74637014536974652d4b4e2d426164686f657665646f7270065f73697465730749435454455354026e6c0000060001 +af6e84030001000000010000055f6c646170045f74637014536974652d4b4e2d426164686f657665646f7270065f73697465730749435454455354026e6c0000060001c03b00060001000038400036026e730f646f6d61696e2d7265676973747279c03b0a686f73746d6173746572c0520bf1e540000070800000384000278d0000003840 + +33476 +9b2c00000001000000000000036e7331056b706e6873026e6c0000010001 +9b2c80000001000000020001036e7331056b706e6873026e6c0000010001c01000020001000151800002c00cc0100002000100015180000d03646e73036b706e03636f6d00c00c0001000100015180000491072163 + +33477 +a96400000001000000000000036e7331076f6d732d6e6574026e6c00001c0001 +a96480000001000000020002036e7331076f6d732d6e6574026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb22fc03a00010001000151800004d5ef9d07 + +33478 +ec7b00000001000000000000036e7331076f6d732d6e6574026e6c0000260001 +ec7b80000001000000020002036e7331076f6d732d6e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb22fc03a00010001000151800004d5ef9d07 + +33479 +d7ae00000001000000000000036e7332076f6d732d6e6574026e6c00001c0001 +d7ae80000001000000020002036e7332076f6d732d6e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d5efb22fc00c00010001000151800004d5ef9d07 + +33480 +b9a900000001000000000000036e7332076f6d732d6e6574026e6c0000260001 +b9a980000001000000020002036e7332076f6d732d6e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d5efb22fc00c00010001000151800004d5ef9d07 + +33481 +f46000000001000000000000046d61696c04642d6363026e6c0000010001 +f46080000001000000020002046d61696c04642d6363026e6c0000010001c0110002000100015180000f026e7309656174736572766572c016c01100020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +33482 +d825000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +d825800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +33483 +b4db00000001000000000000046d61696c06657874656e74026e6c0000010001 +b4db80000001000000020000046d61696c06657874656e74026e6c0000010001c01100020001000151800012036e7331086d7964796e646e73036f726700c01100020001000151800006036e7332c030 + +33484 +541500000001000000000000037777771372656d6b65736265656c64656e67656c756964026e6c0000010001 +541580000001000000020000037777771372656d6b65736265656c64656e67656c756964026e6c0000010001c0100002000100015180000c026e7306766576696461c024c01000020001000151800006036e7332c03b + +33485 +fc8c00000001000000000000046d61696c04626f676f026e6c0000010001 +fc8c80000001000000020000046d61696c04626f676f026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c030 + +33486 +000000005014000081b30000636b6f000000 +000080010000000000000000 + +33487 +0ed20000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0ed28000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33488 +0000000050140000f51e0000636b6f000000 +000080010000000000000000 + +33489 +c49d00000001000000000000037777770c6461726b2d6869746c69737403636f6d05696e7472610467647676026e6c0000010001 +c49d80000001000000020000037777770c6461726b2d6869746c69737403636f6d05696e7472610467647676026e6c0000010001c0270002000100015180000b026e73026e6c036e657400c0270002000100015180001206617574683630026e73026e6c027575c046 + +33490 +0000000050140000c43b0000636b6f000000 +000080010000000000000000 + +33491 +ae0a000000010000000000000467656861026e6c00000f0001 +ae0a800000010000000200020467656861026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +33492 +f25500000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +f25580000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33493 +5711000000010000000000000e766e6d6765617273797374656d73026e6c00000f0001 +5711800000010000000200000e766e6d6765617273797374656d73026e6c00000f0001c00c0002000100015180000f036e7331053132337873036e657400c00c00020001000151800006036e7333c033 + +33494 +23bb000000010000000000000377777705746c6f7567026e6c0000010001 +23bb800000010000000200000377777705746c6f7567026e6c0000010001c0100002000100015180000c026e7306766576696461c016c01000020001000151800006036e7332c02d + +33495 +14f3000000010000000000000d535449434854494e472d4a415a026e6c0000020001 +14f3840300010000000100000d535449434854494e472d4a415a026e6c0000020001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +33496 +ced000000001000000000000056663726f63026e6c00000f0001 +ced080000001000000020002056663726f63026e6c00000f0001c00c0002000100015180000d036e7331066e6c74726565c012c00c00020001000151800006036e7332c02ac02600010001000151800004d4b20403c03f00010001000151800004d5881e45 + +33497 +564d00000001000000000000034e533103575552024e4c0000010001 +564d80000001000000020002034e533103575552024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000489e0f88dc0360001000100015180000489e0f88e + +33498 +d397000000010000000000000377777703746e7707747564656c6674026e6c0000010001 +d397800000010000000500050377777703746e7707747564656c6674026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800009036e7331026574c014c0140002000100015180000d07647574746e636202746ec014c0140002000100015180000e036e733107737572666e6574c01cc0300001000100015180000482a1b401c0420001000100015180000482a1b441c0540001000100015180000482a12111c0690001000100015180000482a1bc8cc08200010001000151800004c0576a65 + +33499 +3dba000000010000000000000377777707736974652d6964026e6c0000010001 +3dba800000010000000300000377777707736974652d6964026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +33500 +bcbb000000010000000000000377777707736974652d6964026e6c0000010001 +bcbb800000010000000300000377777707736974652d6964026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +33501 +8809000000010000000000000564756261690a6c65756b657374617274026e6c0000010001 +8809800000010000000300030564756261690a6c65756b657374617274026e6c0000010001c0120002000100015180000c036e7331056d61786573c01dc01200020001000151800006036e7332c035c01200020001000151800006036e7333c035c031000100010001518000045045402ec049000100010001518000045045402fc05b000100010001518000045045440a + +33502 +26a40000000100000000000006686565726465026e6c00000f0001 +26a48000000100000002000206686565726465026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c013c00c00020001000151800006036e7331c02ac02700010001000151800004504f6101c04100010001000151800004504f6102 + +33503 +e23100000001000000000000037777770866756e6e79736d73026e6c0000010001 +e23180000001000000020000037777770866756e6e79736d73026e6c0000010001c01000020001000151800015036e73310b736e616b6573657276657203636f6d00c01000020001000151800006036e7332c031 + +33504 +bfc900000001000000000000037777770973796e6368726f6f6e026e6c0000010001 +bfc980000001000000020000037777770973796e6368726f6f6e026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +33505 +0b660000000100000000000005646e732d31056c61646f74026e6c0000010001 +0b668000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33506 +afcd0000000100000000000005646e732d32056c61646f74026e6c0000010001 +afcd8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33507 +aac000000001000000000000046d61696c04656c6d61026e6c0000010001 +aac080000001000000020002046d61696c04656c6d61026e6c0000010001c0110002000100015180000f026e7309656c6d6167726f6570c016c01100020001000151800006036e7331c02dc02a00010001000151800004d5880085c04500010001000151800004d5ce5e22 + +33508 +311f0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +311f8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33509 +00d40000000100000000000009652d6c756e61746963026e6c0000010001 +00d48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33510 +68dd00000001000000000000036e73320568616e7a65026e6c0000010001 +68dd80000001000000030003036e73320568616e7a65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +33511 +16c100000001000000000000046476686e026e6c0000010001 +16c180000001000000030003046476686e026e6c0000010001c00c00020001000151800011036e73310a6e6463686f6c64696e67c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c02500010001000151800004c1ad573dc04200010001000151800004c1ad573ec05400010001000151800004d5880089 + +33512 +7001000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000010001 +7001800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000010001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +33513 +135c00000001000000000000036e73310568616e7a65026e6c0000010001 +135c80000001000000030003036e73310568616e7a65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c016c00c00010001000151800004912106efc03800010001000151800004912106eec04a00010001000151800004c0576a65 + +33514 +116d0000000100000000000009652d6c756e61746963026e6c0000010001 +116d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33515 +317d0000000100000000000009652d6c756e61746963026e6c0000010001 +317d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33516 +118e0000000100000000000003777777046d75636f026e6c0000010001 +118e8000000100000002000203777777046d75636f026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c015c01000020001000151800006036e7332c02cc0290001000100015180000450474002c0470001000100015180000450474102 + +33517 +50190000000100000000000005736d7470320a6e6463686f6c64696e67026e6c0000010001 +50198000000100000003000305736d7470320a6e6463686f6c64696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c03100010001000151800004c1ad573dc04300010001000151800004c1ad573ec05500010001000151800004d5880089 + +33518 +d9cd0000000100000000000005736d7470320a6e6463686f6c64696e67026e6c00001c0001 +d9cd8000000100000003000305736d7470320a6e6463686f6c64696e67026e6c00001c0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c03100010001000151800004c1ad573dc04300010001000151800004c1ad573ec05500010001000151800004d5880089 + +33519 +403400000001000000000000066261636b7570046d61696c0a6e6463686f6c64696e67026e6c0000010001 +403480000001000000030003066261636b7570046d61696c0a6e6463686f6c64696e67026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800006036e7333c018c03700010001000151800004c1ad573dc04900010001000151800004c1ad573ec05b00010001000151800004d5880089 + +33520 +12f200000001000000000000066261636b7570046d61696c0a6e6463686f6c64696e67026e6c00001c0001 +12f280000001000000030003066261636b7570046d61696c0a6e6463686f6c64696e67026e6c00001c0001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800006036e7333c018c03700010001000151800004c1ad573dc04900010001000151800004c1ad573ec05b00010001000151800004d5880089 + +33521 +57b70000000100000000000005736d7470310a6e6463686f6c64696e67026e6c0000010001 +57b78000000100000003000305736d7470310a6e6463686f6c64696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c03100010001000151800004c1ad573dc04300010001000151800004c1ad573ec05500010001000151800004d5880089 + +33522 +9b390000000100000000000005736d7470310a6e6463686f6c64696e67026e6c00001c0001 +9b398000000100000003000305736d7470310a6e6463686f6c64696e67026e6c00001c0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c03100010001000151800004c1ad573dc04300010001000151800004c1ad573ec05500010001000151800004d5880089 + +33523 +c88200000001000000000000036e73310a6e6463686f6c64696e67026e6c00001c0001 +c88280000001000000030003036e73310a6e6463686f6c64696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1ad573dc03d00010001000151800004c1ad573ec04f00010001000151800004d5880089 + +33524 +6b7000000001000000000000036e73320a6e6463686f6c64696e67026e6c00001c0001 +6b7080000001000000030003036e73320a6e6463686f6c64696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004c1ad573dc00c00010001000151800004c1ad573ec04f00010001000151800004d5880089 + +33525 +d7cf00000001000000000000036e73330a6e6463686f6c64696e67026e6c00001c0001 +d7cf80000001000000030003036e73330a6e6463686f6c64696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004c1ad573dc04100010001000151800004c1ad573ec00c00010001000151800004d5880089 + +33526 +28040000000100000000000003777777026369026e6c0000010001 +28048000000100000002000103777777026369026e6c0000010001c0100002000100015180000b026e73056e69767261c013c0100002000100015180000b026e73026e6c036e657400c02700010001000151800004c3f1892a + +33527 +020000100001000000000000137265696e6f75642d61647669657367726f6570026e6c00000f0001 +020080000001000000020002137265696e6f75642d61647669657367726f6570026e6c00000f0001c00c00020001000151800009026e730369736dc020c00c00020001000151800006036e7332c037c03400010001000151800004d994ab02c04900010001000151800004d994ab03 + +33528 +4b0f00000001000000000000046465766e026e6c0000060001 +4b0f84030001000000010000046465766e026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +33529 +61b10000000100000000000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001 +61b18403000100000001000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +33530 +4a5200000001000000000000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001 +4a5284030001000000010000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +33531 +4b0f00000001000000000000046465766e026e6c0000060001 +4b0f84030001000000010000046465766e026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +33532 +61b10000000100000000000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001 +61b18403000100000001000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +33533 +4a5200000001000000000000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001 +4a5284030001000000010000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +33534 +4b0f00000001000000000000046465766e026e6c0000060001 +4b0f84030001000000010000046465766e026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +33535 +61b10000000100000000000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001 +61b18403000100000001000010666f746f73747564696f2d696d61676f026e6c026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +33536 +4a5200000001000000000000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001 +4a5284030001000000010000146f7074696d616175746f6d617469736572696e67056e65747461026e6c0000060001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +33537 +2de60000000100000000000003777777087772697465326d65026e6c0000010001 +2de68000000100000003000203777777087772697465326d65026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +33538 +8a49000000010000000000000753544943494f4e026e6c0000020001 +8a49840300010000000100000753544943494f4e026e6c0000020001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +33539 +1838000000010000000000000a6c6966657374796c6572026e6c00000f0001 +1838800000010000000200000a6c6966657374796c6572026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c031 + +33540 +a270000000010000000000000d7365676d656e742d67726f6570026e6c00000f0001 +a270800000010000000200020d7365676d656e742d67726f6570026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +33541 +b13b00000001000000000000034e5331054d494e455a026e6c0000010001 +b13b80000001000000020002034e5331054d494e455a026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004914527e6c038000100010001518000049145270a + +33542 +87de00000001000000000000034e5332054d494e455a026e6c0000010001 +87de80000001000000020002034e5332054d494e455a026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004914527e6c00c000100010001518000049145270a + +33543 +c3ef00000001000000000000034e5333054d494e455a026e6c0000010001 +c3ef80000001000000020002034e5333054d494e455a026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02a00010001000151800004914527e6c03c000100010001518000049145270a + +33544 +004e000000010000000000000770636e64617461026e6c00000f0001 +004e800000010000000200000770636e64617461026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +33545 +54ab00000001000000000000024e530743495354524f4e024e4c0000010001 +54ab80000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +33546 +216b00000001000000000000067669616562740265620761626e616d726f026e6c0000010001 +216b80000001000000020002067669616562740265620761626e616d726f026e6c0000010001c0160002000100015180000b0870686f626f733031c016c0160002000100015180000b0870686f626f733032c016c03200010001000151800004a7cac30bc04900010001000151800004a7cac30c + +33547 +e23000000001000000000000037777770867696761626f656b026e6c0000010001 +e23080000001000000020002037777770867696761626f656b026e6c0000010001c0100002000100015180000b036e733104736f6b6fc019c01000020001000151800006036e7332c031c02d0001000100015180000450f2ee91c0440001000100015180000450f2ee9e + +33548 +dead0000000100000000000004626c6f61026e6c00000f0001 +dead8403000100000001000004626c6f61026e6c00000f0001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +33549 +37320000000100000000000005646e732d32056c61646f74026e6c0000010001 +37328000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33550 +5b2e00000001000000000000046e7330310b6379626572616e67656c73026e6c0000010001 +5b2e80000001000000030003046e7330310b6379626572616e67656c73026e6c0000010001c0110002000100015180000805646e732d31c011c0110002000100015180000805646e732d32c011c0110002000100015180000805646e732d33c011c03100010001000151800004d4ccf5d3c04500010001000151800004c16d7ad2c05900010001000151800004d5efa50c + +33551 +44cd00000001000000000000046e7330320b6379626572616e67656c73026e6c0000010001 +44cd80000001000000030003046e7330320b6379626572616e67656c73026e6c0000010001c0110002000100015180000805646e732d31c011c0110002000100015180000805646e732d32c011c0110002000100015180000805646e732d33c011c03100010001000151800004d4ccf5d3c04500010001000151800004c16d7ad2c05900010001000151800004d5efa50c + +33552 +d3c9000000010000000000000762697a7a6e6574026e6c00000f0001 +d3c9800000010000000200000762697a7a6e6574026e6c00000f0001c00c00020001000151800010036e7331066a6f6865636f036e657400c00c00020001000151800006036e7332c02c + +33553 +c7200000000100000000000006696d616765730b70696a706d616368696e65026e6c0000010001 +c7208000000100000003000306696d616765730b70696a706d616368696e65026e6c0000010001c0130002000100015180000d036e7331066d7263617368c01fc0130002000100015180000c036e7332053266617374c01fc01300020001000151800006036e7333c050c0330001000100015180000450f7db78c04c000100010001518000043e858122c064000100010001518000045117eb22 + +33554 +e7a3000000010000000000000b67726173697367726f656e026e6c0000010001 +e7a3800000010000000200000b67726173697367726f656e026e6c0000010001c00c00020001000151800014026e730b7365727665722d686f6d65036e657400c00c00020001000151800006036e7332c02f + +33555 +c810000000010000000000000b67726173697367726f656e026e6c0000010001 +c810800000010000000200000b67726173697367726f656e026e6c0000010001c00c00020001000151800014026e730b7365727665722d686f6d65036e657400c00c00020001000151800006036e7332c02f + +33556 +654b0000000100000000000003706c64046b6f6f70026e6c0000010001 +654b8000000100000002000003706c64046b6f6f70026e6c0000010001c01000020001000151800018036e73310e6974636f6e737472756374696f6e03636f6d00c01000020001000151800006036e7332c02d + +33557 +32cf0000000100000000000003777777127468656475746368646976696e677465616d026e6c0000010001 +32cf8000000100000003000003777777127468656475746368646976696e677465616d026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c03cc01000020001000151800007046e733033c03c + +33558 +9a7900000001000000000000037777770d7374656e6465727376726f6567026e6c0000010001 +9a7980000001000000020002037777770d7374656e6465727376726f6567026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c01ec0100002000100015180000805726f62696ec039c03200010001000151800004913a1e04c04e00010001000151800004913a1a34 + +33559 +a1a7000000010000000000000377777712766163617475726573696e686f6c6c616e64026e6c0000010001 +a1a7800000010000000200020377777712766163617475726573696e686f6c6c616e64026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c023c01000020001000151800006036e7332c03bc03700010001000151800004d5c9e8c8c05700010001000151800004d5c9e8c9 + +33560 +aea30000000100000000000007617262696e74320a7765726b656e726f6465026e6c00001c0001 +aea38000000100000002000107617262696e74320a7765726b656e726f6465026e6c00001c0001c0140002000100015180000d026e7307616e74656e6e61c01fc0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03300010001000151800004d995dd13 + +33561 +b7ee000000010000000000000e616d7374657264616d77696e6473026e6c00000f0001 +b7ee800000010000000200010e616d7374657264616d77696e6473026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c01bc00c00020001000151800006036e7334c033c02f00010001000151800004d5c401c0 + +33562 +f9cd00000001000000000000046d61696c066564706e6574026e6c0000010001 +f9cd80000001000000020000046d61696c066564706e6574026e6c0000010001c01100020001000151800010036e7331066564706e6574036e657400c01100020001000151800006036e7332c030 + +33563 +70df00000001000000000000037777770974656c65726f757465026e6c0000010001 +70df80000001000000020000037777770974656c65726f757465026e6c0000010001c0100002000100015180000e036e73310461746f73036e657400c01000020001000151800006036e7332c032 + +33564 +682e00000001000000000000044c554e410c44455749542d424f454b454c024e4c0000060001 +682e84030001000000010000044c554e410c44455749542d424f454b454c024e4c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +33565 +f04200000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +f04280000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +33566 +0c580000000100000000000006636861726973026e6c00000f0001 +0c588000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +33567 +d2e200000001000000000000026e73076e656473746174026e6c0000010001 +d2e280000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +33568 +34fc00000001000000000000036e7332076e656473746174026e6c0000010001 +34fc80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33569 +9a7e00000001000000000000036e7333076e656473746174026e6c0000010001 +9a7e80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +33570 +e3c200000001000000000000036e7334076e656473746174026e6c0000010001 +e3c280000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33571 +f1e100000001000000000000036e7334076e656473746174026e6c0000010001 +f1e180000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33572 +46ad00000001000000000000036e7332076e656473746174026e6c0000010001 +46ad80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33573 +37a900000001000000000000037777770b6e69636b656c6564656f6e026e6c0000010001 +37a984030001000000010000037777770b6e69636b656c6564656f6e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +33574 +050b00000001000000000000037777770b776567656e65726c6f6f70026e6c0000010001 +050b84030001000000010000037777770b776567656e65726c6f6f70026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +33575 +bd0d0000000100000000000002353002323103323230033139330964796e61626c6f636b07656173796e6574026e6c0000100001 +bd0d8000000100000002000202353002323103323230033139330964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +33576 +d71700000001000000000000037777770b736f7068696573706f7361026e6c0000010001 +d71780000001000000030001037777770b736f7068696573706f7361026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +33577 +90310000000100000000000004776f7564026e6c00000f0001 +90318000000100000002000204776f7564026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +33578 +5ca30000000100000000000003777777026664026e6c0000010001 +5ca38000000100000002000003777777026664026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02d + +33579 +2fc7000000010000000000000b6465676c61737761636874026e6c0000010001 +2fc7800000010000000200000b6465676c61737761636874026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02f + +33580 +37b300000001000000000000037777770864652d7374617274026e6c0000010001 +37b380000001000000020000037777770864652d7374617274026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c032 + +33581 +dc6b00000001000000000000056861696a65026e6c0000010001 +dc6b80000001000000020002056861696a65026e6c0000010001c00c0002000100015180000e026e73086475746368636f77c012c00c00020001000151800006036e7332c029c02600010001000151800004d9aa2158c0400001000100015180000452a1510d + +33582 +00000000600222386cca0000020405b40000 +000080010000000000000000 + +33583 +648900000001000000000000036e73330564656d6f6e026e6c00001c0001 +648980000001000000030002036e73330564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +33584 +629a00000001000000000000036e73320564656d6f6e026e6c00001c0001 +629a80000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +33585 +8a4a00000001000000000000036e73310564656d6f6e026e6c00001c0001 +8a4a80000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +33586 +9e7d000000010000000000000562736d74700a77656264796e616d6963026e6c0000010001 +9e7d800000010000000200020562736d74700a77656264796e616d6963026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c031000100010001518000045054e304c043000100010001518000045054e305 + +33587 +878100000001000000000000026e73056e65726f63026e6c0000010001 +878180000001000000020002026e73056e65726f63026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +33588 +5bfb00000001000000000000036e7332056e65726f63026e6c0000010001 +5bfb80000001000000020002036e7332056e65726f63026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +33589 +0b0700000001000000000000046d61696c056e65726f63026e6c0000010001 +0b0780000001000000020002046d61696c056e65726f63026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02b00010001000151800004d434010ac03c00010001000151800004d434000a + +33590 +b6fbb85a5010223815210000000000000000 + + +33591 +b6fbb85a50182238a12f0000001e88140000000100000000000009766f6f67642d6b6f6b026e6c0000060001 + + +33592 +801d000000010000000000000a62757265617562656175026e6c0000010001 +801d800000010000000300010a62757265617562656175026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +33593 +b6fbb8bc50102238149f0000000000000000 + + +33594 +fefa0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +fefa8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33595 +b6fbb8bc50112238149e0000000000000000 + + +33596 +b6fbb8bd50102238149d0000000000000000 + + +33597 +d9ca00000001000000000000033133300331353703323036033230370964796e61626c6f636b05657a6e6574026e6c0000010001 +d9ca84030001000000010000033133300331353703323036033230370964796e61626c6f636b05657a6e6574026e6c0000010001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +33598 +6323000000010000000000000a6f70737465726c616e64026e6c00000f0001 +6323800000010000000200000a6f70737465726c616e64026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02e + +33599 +b14a0000000100000000000006736965646c65026e6c00000f0001 +b14a8000000100000002000006736965646c65026e6c00000f0001c00c00020001000151800012036e736108696e666f7061637403636f6d00c00c00020001000151800006036e7362c02b + +33600 +66db0000000100000000000008737469726c696e67026e6c00000f0001 +66db8000000100000002000208737469726c696e67026e6c00000f0001c00c0002000100015180000f036e7331086473646575726e65c015c00c00020001000151800006036e7332c02dc0290001000100015180000452968003c04400010001000151800004d5a0f984 + +33601 +fb6d00000001000000000000037777771662726f656b687569732d737475646965626f656b656e026e6c0000010001 +fb6d80000001000000020002037777771662726f656b687569732d737475646965626f656b656e026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c027c01000020001000151800006036e7332c03fc03b0001000100015180000450416028c05600010001000151800004c356780c + +33602 +09df00000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +09df80000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +33603 +8c3f00000001000000000000037777770b63616e69736975736e6574026e6c0000010001 +8c3f84030001000000010000037777770b63616e69736975736e6574026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +33604 +9fa500000001000000000000057261736f63026e6c00000f0001 +9fa580000001000000020002057261736f63026e6c00000f0001c00c00020001000151800014036e73310d696e7465726e657473686f7073c012c00c00020001000151800006036e7332c02ac026000100010001518000043e94a1efc046000100010001518000043e94a1f0 + +33605 +3de2000000010000000000000966616c6c6261636b31086473646575726e65026e6c00001c0001 +3de2800000010000000200020966616c6c6261636b31086473646575726e65026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c0330001000100015180000452968003c04500010001000151800004d5a0f984 + +33606 +1433000000010000000000000966616c6c6261636b31086473646575726e65026e6c0000260001 +1433800000010000000200020966616c6c6261636b31086473646575726e65026e6c0000260001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c0330001000100015180000452968003c04500010001000151800004d5a0f984 + +33607 +beb10000000100000000000003777777096f656b656c73626f73026e6c0000010001 +beb18000000100000003000103777777096f656b656c73626f73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +33608 +dc22000000010000000000000f6a6f72726974736d612d67726f6570026e6c0000ff0001 +dc22800000010000000200020f6a6f72726974736d612d67726f6570026e6c0000ff0001c00c00020001000151800009036e7331026973c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +33609 +bded00000001000000000000066469616c696e05616c6c7061026e6c0000010001 +bded80000001000000020002066469616c696e05616c6c7061026e6c0000010001c01300020001000151800012026e730c696e746572636f6e6e656374c019c01300020001000151800006036e7332c030c02d00010001000151800004d453c005c04b00010001000151800004d453c006 + +33610 +1f1f00000001000000000000037777770872756e346c696665026e6c0000010001 +1f1f80000001000000020001037777770872756e346c696665026e6c0000010001c01000020001000151800013036e73310c64656c7461686f7374696e67c019c01000020001000151800006036e7333c031c02d00010001000151800004d973c096 + +33611 +0000000060022238dfe20000020405b40000 +000080010000000000000000 + +33612 +02a5000000010000000000000377777707766f732d617069026e6c0000010001 +02a5800000010000000200020377777707766f732d617069026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c018c0100002000100015180001004646e733208636f6e6365707473c018c02c00010001000151800004d5c51c03c04900010001000151800004d5c51e1c + +33613 +1b2000000001000000000000046d61696c0365706f026e6c0000010001 +1b2080000001000000020001046d61696c0365706f026e6c0000010001c011000200010001518000070467617465c011c0110002000100015180000b026e73026e6c036e657400c0290001000100015180000491408003 + +33614 +9eb700000001000000000000026d78026973026e6c0000010001 +9eb780000001000000020002026d78026973026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc02600010001000151800004d5852102c03800010001000151800004d5c41503 + +33615 +b6fc71d950102238ceb90000000000000000 +b6fcf1d40000000000000000 + +33616 +b6fc71d950182238f94a0000002502290000000100000000000010766974616c6974656974736b756e6465026e6c0000060001 +b6fcf1d40000000000000000 + +33617 +37c3000000010000000000000377777703727464026e6c0000010001 +37c3800000010000000200000377777703727464026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +33618 +5f66000000010000000000000b68616e64626f656b626570026e6c0000010001 +5f66800000010000000200020b68616e64626f656b626570026e6c0000010001c00c00020001000151800010026e730a7a65656c616e646e6574c018c00c00020001000151800006036e7332c02fc02c00010001000151800004d473c0c1c04800010001000151800004d473c0c3 + +33619 +b6fc724d50102238ce1e0000000000000000 +b6fcf2440000000000000000 + +33620 +b6fc724d50112238ce1d0000000000000000 +b6fcf2440000000000000000 + +33621 +b6fc724e50102238ce1c0000000000000000 +b6fcf2440000000000000000 + +33622 +7b2b00000001000000000000037777770c7365656473696e7370656365026e6c0000010001 +7b2b84030001000000010000037777770c7365656473696e7370656365026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +33623 +97c30000000100000000000003777777126269626c696f6e657467726f6e696e67656e026e6c0000010001 +97c38000000100000002000003777777126269626c696f6e657467726f6e696e67656e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c03d + +33624 +0cec00000001000000000000036e7332076e656473746174026e6c0000010001 +0cec80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33625 +8d3a00000001000000000000077375726b73756d06787334616c6c026e6c0000010001 +8d3a80000001000000030002077375726b73756d06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +33626 +df6700000001000000000000026e7306787334616c6c026e6c0000010001 +df6780000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +33627 +080900000001000000000000036e733206787334616c6c026e6c0000010001 +080980000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +33628 +cc2d00000001000000000000037777770d73746174656f66746865617274026e6c0000010001 +cc2d80000001000000030000037777770d73746174656f66746865617274026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c037c01000020001000151800007046e733033c037 + +33629 +e5db00000001000000000000037777770f73746572656c656b74726f746f6572026e6c0000010001 +e5db80000001000000020002037777770f73746572656c656b74726f746f6572026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec020c01000020001000151800006036e7332c038c03400010001000151800004c29f4906c04c00010001000151800004c29fb004 + +33630 +5da200000001000000000000026e7303617a72026e6c0000010001 +5da280000001000000030003026e7303617a72026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c000100010001518000049c53fc99c035000100010001518000049c53fcfdc04700010001000151800004c0576a65 + +33631 +756d000000010000000000000377777703726166026e6c0000010001 +756d800000010000000200020377777703726166026e6c0000010001c0100002000100015180000c036e73310563736e6574c014c01000020001000151800006036e7332c02cc02800010001000151800004c2451012c04000010001000151800004c2451212 + +33632 +09920010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +09928000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +33633 +e91800000001000000000000026e7303617a72026e6c0000260001 +e91880000001000000030003026e7303617a72026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c000100010001518000049c53fc99c035000100010001518000049c53fcfdc04700010001000151800004c0576a65 + +33634 +1dd6000000010000000000000b6d61696c6261636b7570310964656c74612d7a6c64026e6c0000010001 +1dd6800000010000000200010b6d61696c6261636b7570310964656c74612d7a6c64026e6c0000010001c01800020001000151800010026e730a7a65656c616e646e6574c022c0180002000100015180000b026e73026e6c036e657400c03600010001000151800004d473c0c1 + +33635 +664e000000010000000000000b6d61696c6261636b7570310964656c74612d7a6c64026e6c00001c0001 +664e800000010000000200010b6d61696c6261636b7570310964656c74612d7a6c64026e6c00001c0001c01800020001000151800010026e730a7a65656c616e646e6574c022c0180002000100015180000b026e73026e6c036e657400c03600010001000151800004d473c0c1 + +33636 +6df600000001000000000000026e730f444f4d41494e2d5245474953545259024e4c00001c0001 +6df680000001000000030002026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33637 +bdb0000000010000000000000b6d61696c6261636b7570310964656c74612d7a6c64026e6c0000260001 +bdb0800000010000000200010b6d61696c6261636b7570310964656c74612d7a6c64026e6c0000260001c01800020001000151800010026e730a7a65656c616e646e6574c022c0180002000100015180000b026e73026e6c036e657400c03600010001000151800004d473c0c1 + +33638 +00a800000001000000000000046d61696c0964656c74612d7a6c64026e6c0000010001 +00a880000001000000020001046d61696c0964656c74612d7a6c64026e6c0000010001c01100020001000151800010026e730a7a65656c616e646e6574c01bc0110002000100015180000b026e73026e6c036e657400c02f00010001000151800004d473c0c1 + +33639 +138c00000001000000000000046d61696c0964656c74612d7a6c64026e6c00001c0001 +138c80000001000000020001046d61696c0964656c74612d7a6c64026e6c00001c0001c01100020001000151800010026e730a7a65656c616e646e6574c01bc0110002000100015180000b026e73026e6c036e657400c02f00010001000151800004d473c0c1 + +33640 +d89800000001000000000000046d61696c0964656c74612d7a6c64026e6c0000260001 +d89880000001000000020001046d61696c0964656c74612d7a6c64026e6c0000260001c01100020001000151800010026e730a7a65656c616e646e6574c01bc0110002000100015180000b026e73026e6c036e657400c02f00010001000151800004d473c0c1 + +33641 +44bd00000001000000000000036e73320f444f4d41494e2d5245474953545259024e4c00001c0001 +44bd80000001000000030002036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33642 +69f9000000010000000000000377777703636962026e6c0000010001 +69f9800000010000000200000377777703636962026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c02c + +33643 +0ced00000001000000000000036e7334076e656473746174026e6c0000010001 +0ced80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +33644 +078300000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +078380000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33645 +054700000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +054780000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33646 +4a8b00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +4a8b80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33647 +a770000000010000000000000b636f6f6c616768616d6172026e6c0000010001 +a770800000010000000200000b636f6f6c616768616d6172026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c018c00c0002000100015180000704686e7331c031 + +33648 +cd6a00000001000000000000026763065f6d736463730274610f746f6e65656c616d7374657264616d026e6c0000060001 +cd6a84030001000000010000026763065f6d736463730274610f746f6e65656c616d7374657264616d026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +33649 +bb190000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +bb198000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33650 +168f0000000100000000000003626c3402626c06787334616c6c026e6c00001c0001 +168f8000000100000003000203626c3402626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33651 +f300000000010000000000000377777708756e69656b61646f026e6c0000010001 +f300800000010000000200010377777708756e69656b61646f026e6c0000010001c0100002000100015180000c036e733405736974726fc019c01000020001000151800006036e7335c031c045000100010001518000043ed44d88 + +33652 +a9ec00000001000000000000037777770973657865696c616e64026e6c0000010001 +a9ec80000001000000020000037777770973657865696c616e64026e6c0000010001c01000020001000151800010036e7331067765622d6276036e657400c01000020001000151800006036e7332c032 + +33653 +353100000001000000000000026e73076e656473746174026e6c0000010001 +353180000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +33654 +1c8b00000001000000000000036e7331096e65746e6174696f6e026e6c0000010001 +1c8b80000001000000020002036e7331096e65746e6174696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb105c03c00010001000151800004505faa0a + +33655 +396c00000001000000000000036e7332096e65746e6174696f6e026e6c0000010001 +396c80000001000000020002036e7332096e65746e6174696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5efb105c00c00010001000151800004505faa0a + +33656 +894300000001000000000000026e73036e6274026e6c0000010001 +894380000001000000020001026e73036e6274026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ac5882 + +33657 +353200000001000000000000036e7333076e656473746174026e6c0000010001 +353280000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +33658 +d94400000001000000000000037777770b6172626f2d616476696573026e6c0000010001 +d94480000001000000020000037777770b6172626f2d616476696573026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +33659 +025700000001000000000000127769656c657273706f72746c69657273656e026e6c0000ff0001 +025780000001000000020000127769656c657273706f72746c69657273656e026e6c0000ff0001c00c00020001000151800017036e73310d6465696e7465726e65746d616e036e657400c00c00020001000151800006036e7332c037 + +33660 +fc09000000010000000000000865787472616e6574056569666665026e6c0000010001 +fc09840300010000000100000865787472616e6574056569666665026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +33661 +fdab0000000100000000000008717569636b6e6574026e6c00000f0001 +fdab8000000100000003000208717569636b6e6574026e6c00000f0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c00020001000151800014036e73300a6d756c74696b6162656c036e657400c0290001000100015180000450f2e002c0460001000100015180000450f2e006 + +33662 +092b00000001000000000000036e7331023161026e6c0000010001 +092b80000001000000020002036e7331023161026e6c0000010001c0100002000100015180000e036e7331076970746f776572c013c01000020001000151800006036e7332c02bc027000100010001518000043ecc4065c041000100010001518000043ecc4066 + +33663 +b93328000001000000010000026e6c0000060001026763065f6d736463730274610f746f6e65656c616d7374657264616d026e6c0000010001000002580004c0a8000b +b933a8040000000000000000 + +33664 +5cd200000001000000000000036e7332023161026e6c0000010001 +5cd280000001000000020002036e7332023161026e6c0000010001c0100002000100015180000e036e7331076970746f776572c013c01000020001000151800006036e7332c02bc027000100010001518000043ecc4065c041000100010001518000043ecc4066 + +33665 +4b7500000001000000000000046d61696c0373756b026e6c0000010001 +4b7580000001000000020000046d61696c0373756b026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c02f + +33666 +c86400000001000000000000046d61696c0373756b026e6c00001c0001 +c86480000001000000020000046d61696c0373756b026e6c00001c0001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c02f + +33667 +59570000000100000000000003777777146465686161736175746f6d6174657269616c656e026e6c0000010001 +59578000000100000002000103777777146465686161736175746f6d6174657269616c656e026e6c0000010001c0100002000100015180000e036e733107736368726f6572c025c01000020001000151800006036e7332c03dc03900010001000151800004d468c9c4 + +33668 +0000000070024000b9a300000204059801010402 +000080010000000000000000 + +33669 +fdb20000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +fdb28000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33670 +b6fe92d65010432099460000000000000000 + + +33671 +d4b300000001000000000000037777770a616d617a6f6e63617273026e6c0000010001 +d4b380000001000000020000037777770a616d617a6f6e63617273026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +33672 +816c0000000100000000000004776f7564026e6c00000f0001 +816c8000000100000002000204776f7564026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +33673 +b6fe92d6501843209c2f000000851640000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8db403c4a5b0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 + + +33674 +000000007002fc0094110000020405b401010402 +000080010000000000000000 + +33675 +b6fe92e45011431298be0000000000000000 + + +33676 +000000007002400067be00000204059801010402 +000080010000000000000000 + +33677 +bbab000000010000000000000a7472616e736d65646961026e6c00000f0001 +bbab800000010000000200010a7472616e736d65646961026e6c00000f0001c00c0002000100015180000d026e7307616d6572636f6dc017c00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004c2b2b20a + +33678 +fed200000001000000000000036e733404686f6d65026e6c0000010001 +fed280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +33679 +000000006002223858200000020405b40000 +000080010000000000000000 + +33680 +d73600000001000000000000036e733503777873026e6c0000010001 +d73680000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +33681 +ff0d00000001000000000000077777772d32363907736974652d6964026e6c0000010001 +ff0d80000001000000030000077777772d32363907736974652d6964026e6c0000010001c01400020001000151800012036e733108626c7565646f6d65036e657400c01400020001000151800006036e7332c034c01400020001000151800006036e7333c034 + +33682 +b6fe92e55010431298bd0000000000000000 + + +33683 +feba00000001000000000000026e730570626e6563026e6c0000010001 +feba80000001000000020001026e730570626e6563026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14e8f42 + +33684 +5e50000000010000000000000e7265616c776f726c64636172676f026e6c0000010001 +5e50800000010000000200020e7265616c776f726c64636172676f026e6c0000010001c00c0002000100015180001004646e73310869636f6d70616e79c01bc00c0002000100015180000704646e7332c034c02f000100010001518000043e3a890ac04b000100010001518000043e3a890b + +33685 +b70041ea50104320984b0000000000000000 +b700c1e40000000000000000 + +33686 +b701101d50102238a8ae0000000000000000 +b70190140000000000000000 + +33687 +b701101d50182238b793000000291b200000000100000000000014636f6d707574657272657061697263656e746572026e6c0000060001 +b70190140000000000000000 + +33688 +01400000000100000000000009652d6c756e61746963026e6c0000010001 +01408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33689 +b70041ea50184320f17400000085c100000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8db403c4a5b0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 +b700c1e40000000000000000 + +33690 +b6ff4e015010fc00bbc40000000000000000 +b6ffce040000000000000000 + +33691 +b6ff4e015004fc00bbd00000000000000000 +b6ffce040000000000000000 + +33692 +b701108a50102238a8160000000000000000 +b70190840000000000000000 + +33693 +b701108a50112238a8150000000000000000 +b70190840000000000000000 + +33694 +b701108b50102238a8140000000000000000 +b70190840000000000000000 + +33695 +b70041f85011431297c30000000000000000 +b700c1f40000000000000000 + +33696 +564100000001000000000000066e74646830390673656e746572026e6c0000010001 +564180000001000000020002066e74646830390673656e746572026e6c0000010001c0130002000100015180000c036e7331056d696e657ac01ac01300020001000151800006036e7332c032c02e00010001000151800004914527e6c046000100010001518000049145270a + +33697 +00000000700240009fb600000204059801010402 +000080010000000000000000 + +33698 +c37a000000010000000000000377777704626f6b74026e6c0000010001 +c37a800000010000000200020377777704626f6b74026e6c0000010001c0100002000100015180000e036e73310769736973776562c015c01000020001000151800006036e7334c02dc02900010001000151800004d4ccca65c04300010001000151800004510440fa + +33699 +f3a400000001000000000000037777770f6b6164696a6b2d6c65656e73747261026e6c0000010001 +f3a480000001000000020000037777770f6b6164696a6b2d6c65656e73747261026e6c0000010001c0100002000100015180001905646e7330310d636f6d70726173657276657273036e657400c0100002000100015180000805646e733032c03a + +33700 +b70041f95010431297c20000000000000000 +b700c1f40000000000000000 + +33701 +b7018bc85010432086640000000000000000 + + +33702 +b7018bc8501843202e0e000000857280000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004903677373096d6963726f736f667403636f6d00403af8db403c4a5b0003000000264e544c4d535350000100000097b200e0030003002300000003000300200000004653345441300000 + + +33703 +c7110000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c7118000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33704 +dc5c000000010000000000000377777713626f757761647669657364656e68656c646572026e6c0000010001 +dc5c800000010000000200010377777713626f757761647669657364656e68656c646572026e6c0000010001c0100002000100015180000d036e733106776964657873c024c01000020001000151800010036e733206776964657873036e657400c03800010001000151800004d4ccc0fc + +33705 +5675000000010000000000000377777709686f6c6c79776f7564026e6c0000010001 +5675800000010000000300010377777709686f6c6c79776f7564026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +33706 +d20700000001000000000000037777770b707a616e6462657267656e026e6c0000010001 +d20780000001000000020000037777770b707a616e6462657267656e026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +33707 +b7018bd65011431285dc0000000000000000 + + +33708 +e0e30000000100000000000003777777056d65746f73026e6c0000010001 +e0e38000000100000002000003777777056d65746f73026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c016c0100002000100015180000704686e7331c02f + +33709 +65ca000000010000000000000866696c6167656e74026e6c00000f0001 +65ca800000010000000200020866696c6167656e74026e6c00000f0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc015c00c00020001000151800006036e7332c02dc0290001000100015180000450558121c04700010001000151800004d58141c4 + +33710 +000000006002223866280000020405b40000 +000080010000000000000000 + +33711 +b7018bd75010431285db0000000000000000 + + +33712 +b7020e2c50102238b8a60000000000000000 +b7028e240000000000000000 + +33713 +b7020e2c50182238cf5c000000253225000000010000000000001065766f6c7574696f6e2d64657369676e026e6c0000060001 +b7028e240000000000000000 + +33714 +27e90000000100000000000003777777086c65747373746174026e6c0000010001 +27e98000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +33715 +34870000000100000000000009776562776572656c64026e6c00000f0001 +34878000000100000003000309776562776572656c64026e6c00000f0001c00c0002000100015180000a036e733103696467c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a0001000100015180000451af4646c0400001000100015180000451af4647c05200010001000151800004d5a0fde6 + +33716 +414a000000010000000000000749435454455354026e6c0000060001 +414a840300010000000100000749435454455354026e6c0000060001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +33717 +b7020e9550102238b8160000000000000000 +b7028e940000000000000000 + +33718 +b7020e9550112238b8150000000000000000 +b7028e940000000000000000 + +33719 +62c8000000010000000000000c53544556454d434144414d53026e6c0000020001 +62c8840300010000000100000c53544556454d434144414d53026e6c0000020001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +33720 +b7020e9650102238b8140000000000000000 +b7028e940000000000000000 + +33721 +3551000000010000000000000377777703637062026e6c0000010001 +3551800000010000000300030377777703637062026e6c0000010001c0100002000100015180000805616c657068c010c0100002000100015180000906616261637573c010c0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004c0688c02c03c00010001000151800004c0688c04c05100010001000151800004c0576a65 + +33722 +88b300000001000000000000037777770a626572746465626f6572026e6c0000010001 +88b380000001000000020000037777770a626572746465626f6572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01bc0100002000100015180000704686e7331c034 + +33723 +fc9c00000001000000000000037777770d736f6570656c6265776567656e026e6c0000010001 +fc9c80000001000000020001037777770d736f6570656c6265776567656e026e6c0000010001c01000020001000151800012026e730c726967687476697375616c73c01ec01000020001000151800011036e7331076379736f6e657403636f6d00c03200010001000151800004d9aa0226 + +33724 +a97600000001000000000000037777770d66696e616c66616e7461737978026e6c0000010001 +a97680000001000000020002037777770d66696e616c66616e7461737978026e6c0000010001c0100002000100015180000a036e7331036e7873c01ec01000020001000151800006036e7332c036c03200010001000151800004d973c015c04800010001000151800004d973c102 + +33725 +db9b0000000100000000000003706f700b666f726576657273686f70026e6c0000010001 +db9b8000000100000003000203706f700b666f726576657273686f70026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +33726 +ebca00000001000000000000036e733203757063026e6c0000010001 +ebca80000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +33727 +057e00000001000000000000036e733203757063026e6c00001c0001 +057e80000001000000030003036e733203757063026e6c00001c0001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +33728 +78860010000100000000000003796663026e6c00000f0001 +78868000000100000002000003796663026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c027 + +33729 +a14d00000001000000000000037777770a66632d75747265636874026e6c0000010001 +a14d80000001000000020000037777770a66632d75747265636874026e6c0000010001c0100002000100015180000f036e73310571666c6578036e657400c01000020001000151800006036e7333c033 + +33730 +cb8e0000000100000000000003616473096b6f6f706b72616e74026e6c0000010001 +cb8e8000000100000002000003616473096b6f6f706b72616e74026e6c0000010001c0100002000100015180000f036e733306616d6575726f02646500c01000020001000151800010036e733106616d6575726f036e657400 + +33731 +fb50000000010000000000000377777706747265626c65026e6c0000010001 +fb50800000010000000200000377777706747265626c65026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02e + +33732 +29d40000000100000000000009652d6c756e61746963026e6c0000010001 +29d48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33733 +e7620000000100000000000008636c756273657879026e6c00000f0001 +e7628000000100000002000008636c756273657879026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02c + +33734 +96bb0000000100000000000003777777116372657363656e742d776f6e696e67656e026e6c0000010001 +96bb8000000100000002000203777777116372657363656e742d776f6e696e67656e026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c022c01000020001000151800006036e7332c039c03600010001000151800004d453c005c05400010001000151800004d453c006 + +33735 +397000000001000000000000067669616562740265620761626e616d726f026e6c0000010001 +397080000001000000020002067669616562740265620761626e616d726f026e6c0000010001c0160002000100015180000b0870686f626f733031c016c0160002000100015180000b0870686f626f733032c016c03200010001000151800004a7cac30bc04900010001000151800004a7cac30c + +33736 +42b60000000100000000000003777777026e75026e6c0000010001 +42b68000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +33737 +e93800000001000000000000036d783102686e026e6c0000010001 +e93880000001000000020000036d783102686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +33738 +3c6a00000001000000000000036e733304686f6d65026e6c0000010001 +3c6a80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +33739 +60af00000001000000000000037777770a6164756c746c696e6b73026e6c0000010001 +60af80000001000000020000037777770a6164756c746c696e6b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +33740 +37040000000100000000000008686f73746e616d650462696e640000100003 +37048000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +33741 +267b000000010000000000000377777708737572666b696473026e6c0000010001 +267b800000010000000200020377777708737572666b696473026e6c0000010001c0100002000100015180000e036e733107776172706e6574c019c01000020001000151800006036e7332c031c02d00010001000151800004c323b01ec04700010001000151800004c323b01f + +33742 +b0060000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b0068000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +33743 +83a9000000010000000000000c6f72616e6a652d626c617577026e6c00000f0001 +83a9800000010000000200020c6f72616e6a652d626c617577026e6c00000f0001c00c00020001000151800015036e73310e62656c6c656e656e77696e6e656ec019c00c00020001000151800006036e7332c031c02d00010001000151800004d994a844c04e00010001000151800004d994a845 + +33744 +11e8000000010000000000000562736d7470096e6c686f7374696e67026e6c0000010001 +11e8800000010000000200000562736d7470096e6c686f7374696e67026e6c0000010001c01200020001000151800012026e73096e6c686f7374696e67036e657400c01200020001000151800006036e7331c033 + +33745 +6ac3000000010000000000000562736d7470096e6c686f7374696e67026e6c00001c0001 +6ac3800000010000000200000562736d7470096e6c686f7374696e67026e6c00001c0001c01200020001000151800012026e73096e6c686f7374696e67036e657400c01200020001000151800006036e7331c033 + +33746 +30f2000000010000000000000562736d7470096e6c686f7374696e67026e6c0000260001 +30f2800000010000000200000562736d7470096e6c686f7374696e67026e6c0000260001c01200020001000151800012026e73096e6c686f7374696e67036e657400c01200020001000151800006036e7331c033 + +33747 +0267000000010000000000000a652d6c6561726e696e670473757266026e6c0000010001 +0267800000010000000300030a652d6c6561726e696e670473757266026e6c0000010001c0170002000100015180000f036e7331086d6f746966616374c01cc01700020001000151800006036e7332c034c0170002000100015180000e036e733207737572666e6574c01cc03000010001000151800004d44ebd9dc04b00010001000151800004d44ebd9ec05d00010001000151800004c0572402 + +33748 +12f400000001000000000000087370656369616c7305696e646573026e6c0000010001 +12f480000001000000020002087370656369616c7305696e646573026e6c0000010001c0150002000100015180000d036e73310663617374656cc01bc01500020001000151800006036e7332c033c02f00010001000151800004c3558244c04800010001000151800004c3558245 + +33749 +00520000000100000000000003777777056566616374026e6c0000010001 +00528000000100000002000203777777056566616374026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +33750 +178d28000001000000020000026e6c00000600012464363465636630372d353837642d346437622d386166362d663762346265616163303961065f6d73646373087669616475746368026e6c00000500ff000000000000c0140005000100000258001406736572766572087669616475746368026e6c00 +178da8040000000000000000 + +33751 +d3360000000100000000000003313330033132300231300232340964796e61626c6f636b07656173796e6574026e6c0000100001 +d3368000000100000002000203313330033132300231300232340964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +33752 +855900000001000000000000037777770c6a616d6573626f6e64303037026e6c0000010001 +855980000001000000020000037777770c6a616d6573626f6e64303037026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +33753 +1ed40000000100000000000007766462636f6d70026e6c00001c0001 +1ed48000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +33754 +573d00000001000000000000037777770d61727473616e64637261667473026e6c0000010001 +573d80000001000000030001037777770d61727473616e64637261667473026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +33755 +000000007002400090c60000020405b401010402 +000080010000000000000000 + +33756 +b70494e8501044706d1d0000000000000000 + + +33757 +2f8400000001000000000000026e73077374616e6e6574026e6c0000010001 +2f8480000001000000020002026e73077374616e6e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5852414c03900010001000151800004d5852418 + +33758 +b70494e8501844709bfe0000008b7900000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0322403c54a200030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 + + +33759 +b3cb000000010000000000000d6c6176616c6c65657665727465026e6c0000010001 +b3cb800000010000000200020d6c6176616c6c65657665727465026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +33760 +6aeb0000000100000000000007676173756e6965026e6c0000ff0001 +6aeb8000000100000002000007676173756e6965026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +33761 +a22b0000000100000000000003706f7008767575727765726b026e6c0000010001 +a22b8000000100000003000103706f7008767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +33762 +b70494f6501144626c8f0000000000000000 + + +33763 +85fc00000001000000000000036e733306696e61646765026e6c0000010001 +85fc80000001000000020001036e733306696e61646765026e6c0000010001c01000020001000151800002c00cc01000020001000151800012036e7337087a6f6e656564697403636f6d00c00c00010001000151800004d9164114 + +33764 +000000007002400004750000020405b401010402 +000080010000000000000000 + +33765 +b70494f7501044626c8e0000000000000000 + + +33766 +84b500000001000000000000027777116361726e6176616c737469636874696e67026e6c0000010001 +84b584030001000000010000027777116361726e6176616c737469636874696e67026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +33767 +23a500000001000000000000036e73330767617574656e67026e6c0000010001 +23a580000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33768 +23a600000001000000000000036e73340767617574656e67026e6c0000010001 +23a680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33769 +b705694f501044700c640000000000000000 +b705e9440000000000000000 + +33770 +b705694f5018447094460000008b2100000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0322403c54a200030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 +b705e9440000000000000000 + +33771 +5c6c00000001000000000000036e73330873797374656d6563026e6c0000010001 +5c6c80000001000000030002036e73330873797374656d6563026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800006036e7332c010c02d00010001000151800004c2e5a402c05500010001000151800004c2e5a404 + +33772 +b705695d501144620bd60000000000000000 +b705e9540000000000000000 + +33773 +000000007002400017e90000020405b401010402 +000080010000000000000000 + +33774 +b705695e501044620bd50000000000000000 +b705e9540000000000000000 + +33775 +b7061c44501044706ce20000000000000000 +b7069c440000000000000000 + +33776 +a38600000001000000000000037777770e6b6f7274696e677377696e6b656c026e6c0000010001 +a38680000001000000020002037777770e6b6f7274696e677377696e6b656c026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c01fc01000020001000151800006036e7332c036c03300010001000151800004d9aa2042c04c00010001000151800004d9aa2c06 + +33777 +c595000000010000000000000377777705626576726f026e6c0000010001 +c595800000010000000200000377777705626576726f026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c016c0100002000100015180000704686e7331c02f + +33778 +81850000000100000000000003777777053568617274026e6c0000010001 +81858000000100000002000003777777053568617274026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c02f + +33779 +b7061c4450184470b6c40000008b5f00000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0322403c54a200030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 +b7069c440000000000000000 + +33780 +b7061c52501144626c540000000000000000 +b7069c540000000000000000 + +33781 +c2ba00000001000000000000037777770a6a6f7376616e6c616172026e6c0000010001 +c2ba80000001000000020000037777770a6a6f7376616e6c616172026e6c0000010001c0100002000100015180000d046e656f7303686b6e02646500c01000020001000151800010046e656f73056e636f7265036e657400 + +33782 +bd5200000001000000000000037777770b73746172746e6174696f6e026e6c0000010001 +bd5280000001000000020000037777770b73746172746e6174696f6e026e6c0000010001c01000020001000151800010036e733106686f73747335036e657400c01000020001000151800006036e7332c034 + +33783 +b7061c53501044626c530000000000000000 +b7069c540000000000000000 + +33784 +76af000000010000000000000462617261026e6c0000ff0001 +76af800000010000000200020462617261026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +33785 +bf3a00100001000000000001036e733103757063026e6c00000100010000290800000000000000 +bf3a80000001000000030004036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +33786 +efd400100001000000000001036e733103757063026e6c00002600010000290800000000000000 +efd480000001000000030004036e733103757063026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +33787 +77ea00100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000000000000 +77ea80000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +33788 +3bf500100001000000000001046e733032066368656c6c6f026e6c00002600010000290800000000000000 +3bf580000001000000030004046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +33789 +015600000001000000000000037777770974656c656772616166026e6c0000010001 +015680000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +33790 +7a8e00000001000000000000037777770667677a6e6574026e6c0000010001 +7a8e80000001000000020002037777770667677a6e6574026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +33791 +8ca1000000010000000000000b61726d6164616d75736963026e6c0000010001 +8ca1800000010000000200020b61726d6164616d75736963026e6c0000010001c00c0002000100015180000f056d69616d69066f6e65646576c018c00c0002000100015180000a076e6577796f726bc032c02c00010001000151800004d5ef8255c04700010001000151800004d5ef82eb + +33792 +59640000000100000000000008636f6d626174656c026e6c00000f0001 +59648000000100000002000008636f6d626174656c026e6c00000f0001c00c00020001000151800013036e73310c696d70726573736976657873c015c00c00020001000151800006036e7332c02d + +33793 +3cf40000000100000000000006626f782d303508667265656d61696c026e6c0000010001 +3cf48000000100000003000206626f782d303508667265656d61696c026e6c0000010001c0130002000100015180000f04616e73310774697363616c69c01cc0130002000100015180000704616e7332c035c0130002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +33794 +75cd0000000100000000000003777777046c657761026e6c0000010001 +75cd8000000100000002000203777777046c657761026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c029000100010001518000043e320c64c03a000100010001518000043e64366a + +33795 +8fda00000001000000000000036e733203757063026e6c0000010001 +8fda80000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +33796 +d45a01000001000000000000046d61696c0864696f6d65646573026e6c00001c0001 +d45a81000001000000030002046d61696c0864696f6d65646573026e6c00001c0001c0110002000100015180000d036e733106776964657873c01ac01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +33797 +298c0000000100000000000006737461746963076d616368696e6507667265656c6572026e6c0000010001 +298c8000000100000002000006737461746963076d616368696e6507667265656c6572026e6c0000010001c01b000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c01b0002000100015180000e0b65766973702d6e732d3032c043 + +33798 +23a800000001000000000000036e73330767617574656e67026e6c0000010001 +23a880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33799 +23a900000001000000000000036e73340767617574656e67026e6c0000010001 +23a980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33800 +68f9000000010000000000000377777708736d73626f617264026e6c0000010001 +68f9800000010000000300030377777708736d73626f617264026e6c0000010001c01000020001000151800011036e73310a74727565736572766572c019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004d5ef8003c04a00010001000151800004d5efb004c05c00010001000151800004d5ef8005 + +33801 +559500000001000000000000067873657276650a79656c6c6f776d696e64026e6c0000010001 +559580000001000000030003067873657276650a79656c6c6f776d696e64026e6c0000010001c0130002000100015180000e026e7308736e696a64657273c01ec01300020001000151800005026e73c013c01300020001000151800006036e7332c013c03200010001000151800004c2e59918c04c00010001000151800004c2e59926c05d000100010001518000043e5dc28e + +33802 +726428000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d736463730a706f6d706f656e2d6d6d026e6c00002100010000025800200000006401850a706f6d706f656d2d6d6d0a706f6d706f656e2d6d6d026e6c00 +7264a8040000000000000000 + +33803 +f3a800000001000000000000026e73097761766566726f6e74026e6c0000010001 +f3a880000001000000020002026e73097761766566726f6e74026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000f036e7331086e6f766178657373c019c00c00010001000151800004d5c9951ac03b00010001000151800004d5c98015 + +33804 +000000007002faf0117200000204057a01010402 +000080010000000000000000 + +33805 +2e3600000001000000000000036e733103757063026e6c0000010001 +2e3680000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +33806 +09de0000000100000000000003777777077768656b616d70026e6c0000010001 +09de8000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +33807 +4b9700000001000000000000036e733103757063026e6c0000260001 +4b9780000001000000030003036e733103757063026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +33808 +859500000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +859580000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +33809 +d49d00000001000000000000046e733032066368656c6c6f026e6c0000010001 +d49d80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +33810 +b706a5135010fbece0d50000000000000000 + + +33811 +b706a5135018fbec03ff00000093d84c000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9eb403c4b6b0003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 + + +33812 +61ac0000000100000000000008686179732d687073026e6c0000010001 +61ac8000000100000002000008686179732d687073026e6c0000010001c00c00020001000151800012036e73310871346d617469637303636f6d00c00c00020001000151800006036e7332c02d + +33813 +566100000001000000000000046e733032066368656c6c6f026e6c0000260001 +566180000001000000030003046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +33814 +151b000000010000000000000977696c6c65626f6973026e6c00000f0001 +151b800000010000000200000977696c6c65626f6973026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02d + +33815 +b706a5215011fbdee03f0000000000000000 + + +33816 +000000007002faf0127e00000204057a01010402 +000080010000000000000000 + +33817 +d564000000010000000000000a6265746572686f72656e026e6c0000010001 +d564800000010000000200010a6265746572686f72656e026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +33818 +b706a5225010fbdee03e0000000000000000 + + +33819 +953b0010000100000000000104696c7365026e6c0000ff00010000290800000000000000 +953b8000000100000003000404696c7365026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc025000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a2840000291000000000000000 + +33820 +77e8000000010000000000000463697461026e6c0000010001 +77e8800000010000000200020463697461026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +33821 +b70783b25010fbec03420000000000000000 + + +33822 +19bb00000001000000000000037777770a736d73766f657462616c026e6c0000010001 +19bb80000001000000020002037777770a736d73766f657462616c026e6c0000010001c0100002000100015180000a04646e7330026975c01bc0100002000100015180000704646e7331c034c02f00010001000151800004d91a7002c04500010001000151800004d91a7103 + +33823 +0577000000010000000000000a686f6f7273747564696f026e6c0000010001 +0577800000010000000200020a686f6f7273747564696f026e6c0000010001c00c0002000100015180000d036e733106796f72697465c017c00c00020001000151800006036e7332c02fc02b0001000100015180000451047320c0440001000100015180000451047321 + +33824 +b70783b25018fbec7344000000938c74000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9eb403c4b6b0003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 + + +33825 +66fb000000010000000000001376616e64656e626f6f676161726467726f6570026e6c0000010001 +66fb800000010000000200021376616e64656e626f6f676161726467726f6570026e6c0000010001c00c00020001000151800014026e730e64617461636f6e686f7374696e67c020c00c00020001000151800006036e7332c037c03400010001000151800004d43d2934c05400010001000151800004d468d143 + +33826 +b70783c05011fbde02ac0000000000000000 + + +33827 +d90600000001000000000000036e73310974656c656b6162656c026e6c0000010001 +d90680000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +33828 +25b20000000100000000000004696c7365026e6c0000ff0001 +25b28000000100000003000304696c7365026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc025000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +33829 +22be000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +22be800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +33830 +9ff00000000100000000000008706f737462616e6b026e6c0000010001 +9ff08000000100000002000208706f737462616e6b026e6c0000010001c00c0002000100015180000a036e733103696e67c015c00c00020001000151800006036e7332c02dc0290001000100015180000491dd19c2c03f0001000100015180000491dd5dc2 + +33831 +000000007002faf0facb00000204057a01010402 +000080010000000000000000 + +33832 +b70783c15010fbde02ab0000000000000000 + + +33833 +40a900000001000000000000037777770676617269636b026e6c0000010001 +40a980000001000000020000037777770676617269636b026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02e + +33834 +b70825495010fbec49f80000000000000000 +b708a5430000000000000000 + +33835 +b70825495018fbec05d300000093409c000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403af9eb403c4b6b0003000000344e544c4d535350000100000097b208e00a000a002a0000000a000a0020000000504f4d504f454d2d4d4d504f4d504f454e2d4d4d0000 +b708a5430000000000000000 + +33836 +b70825575011fbde49620000000000000000 +b708a5530000000000000000 + +33837 +4cec000000010000000000000e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001 +4cec800000010000000200020e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc03a00010001000151800004d9726162c04c00010001000151800004d9726161 + +33838 +948f00000001000000000000086176656e747572610a62686d732d67726f6570026e6c0000010001 +948f80000001000000020002086176656e747572610a62686d732d67726f6570026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c03400010001000151800004d9726162c04600010001000151800004d9726161 + +33839 +22fc000000010000000000000b6361726565726665766572026e6c00000f000100 +22fc800000010000000200020b6361726565726665766572026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c018c00c00020001000151800006036e7332c02fc02c00010001000151800004d453c005c04a00010001000151800004d453c006 + +33840 +b70825585010fbde49610000000000000000 +b708a5530000000000000000 + +33841 +28920000000100000000000008746d2d67726f6570026e6c0000ff0001 +28928000000100000002000208746d2d67726f6570026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +33842 +975d0000000100000000000007656e64656d6f6c026e6c0000010001 +975d8000000100000002000007656e64656d6f6c026e6c0000010001c00c0002000100015180001204726f6f7307656e64656d6f6c03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +33843 +ff75000000010000000000000967736d676967616e74026e6c00000f0001 +ff75800000010000000300020967736d676967616e74026e6c00000f0001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +33844 +85a200000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +85a280000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +33845 +2d3c00000001000000000000037777770565626f6e65026e6c0000010001 +2d3c80000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +33846 +497b001000010000000000010377777708646273726164696f026e6c00000100010000290800000080000000 +497b800000010000000200030377777708646273726164696f026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004d5efb105c04900010001000151800004505faa0a0000291000000000000000 + +33847 +ceb000000001000000000000036e7332056132303030026e6c00001c0001 +ceb080000001000000030002036e7332056132303030026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +33848 +64a300000001000000000000036e7332056132303030026e6c0000260001 +64a380000001000000030002036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +33849 +243d00000001000000000000036e7331056132303030026e6c00001c0001 +243d80000001000000030002036e7331056132303030026e6c00001c0001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +33850 +488200000001000000000000036e7331056132303030026e6c0000260001 +488280000001000000030002036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +33851 +ddfa000000010000000000000b6e6f64652d642d62346639056132303030026e6c0000010001 +ddfa800000010000000300020b6e6f64652d642d62346639056132303030026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800010036e733109756e69736f75726365c01ec01800020001000151800006036e7332c018c032000100010001518000043e6c0141c060000100010001518000043e6c0142 + +33852 +c61f00000001000000000000037777770565626f6e65026e6c0000010001 +c61f80000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +33853 +57c1000000010000000000000377777708646273726164696f026e6c0000010001 +57c1800000010000000200020377777708646273726164696f026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004d5efb105c04900010001000151800004505faa0a + +33854 +d65a00000001000000000000037777770a7365786163636f756e74026e6c0000010001 +d65a80000001000000020002037777770a7365786163636f756e74026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01bc01000020001000151800006036e7332c033c02f0001000100015180000452c04516c04c0001000100015180000452c04542 + +33855 +7c770000000100000000000007736f6e74656368026e6c0000010001 +7c778000000100000002000207736f6e74656368026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +33856 +191500000001000000000000036e73310c7a776172656d6574616c656e026e6c0000010001 +191580000001000000020001036e73310c7a776172656d6574616c656e026e6c0000010001c01000020001000151800002c00cc01000020001000151800010026e730a737562686f7374696e67c01dc00c00010001000151800004d5f73947 + +33857 +2ccf00000001000000000000037777770e76616e6861727465706172646f6e026e6c0000010001 +2ccf80000001000000020000037777770e76616e6861727465706172646f6e026e6c0000010001c01000020001000151800015036e73310e64696a6b7377656264657369676ec01fc0100002000100015180000f036e733208313576726167656ec01f + +33858 +6b2d0000000100000000000003777777096765776f6f6e6b7574026e6c0000010001 +6b2d8000000100000003000303777777096765776f6f6e6b7574026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +33859 +51d7000000010000000000000331333602326a026e6c0000010001 +51d7800000010000000200020331333602326a026e6c0000010001c0100002000100015180000e036e733107676f6c69617468c013c01000020001000151800006036e7332c02bc027000100010001518000045054f379c04100010001000151800004507f48c2 + +33860 +88d600000001000000000000036e733207676f6c69617468026e6c00001c0001 +88d680000001000000020002036e733207676f6c69617468026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000045054f379c00c00010001000151800004507f48c2 + +33861 +62c100000001000000000000036e733207676f6c69617468026e6c0000260001 +62c180000001000000020002036e733207676f6c69617468026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000045054f379c00c00010001000151800004507f48c2 + +33862 +878000000001000000000000036e733107676f6c69617468026e6c00001c0001 +878080000001000000020002036e733107676f6c69617468026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +33863 +c1c300000001000000000000036e733107676f6c69617468026e6c0000260001 +c1c380000001000000020002036e733107676f6c69617468026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +33864 +933c00000001000000000000037777770c626565746c6564657369676e026e6c0000010001 +933c80000001000000020000037777770c626565746c6564657369676e026e6c0000010001c01000020001000151800012036e7335087a6f6e656564697403636f6d00c01000020001000151800007046e733134c035 + +33865 +f20e00000001000000000000036e73310966697265776f726b32026e6c00001c0001 +f20e80000001000000020002036e73310966697265776f726b32026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5f4b8d3c03c00010001000151800004d5f4b9d3 + +33866 +6d2000000001000000000000036e73310966697265776f726b32026e6c0000260001 +6d2080000001000000020002036e73310966697265776f726b32026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5f4b8d3c03c00010001000151800004d5f4b9d3 + +33867 +068700000001000000000000036e73320966697265776f726b32026e6c00001c0001 +068780000001000000020002036e73320966697265776f726b32026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5f4b8d3c00c00010001000151800004d5f4b9d3 + +33868 +bed300000001000000000000036e73320966697265776f726b32026e6c0000260001 +bed380000001000000020002036e73320966697265776f726b32026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5f4b8d3c00c00010001000151800004d5f4b9d3 + +33869 +86c200000001000000000000037777770a6164756c747374617473026e6c0000010001 +86c280000001000000020000037777770a6164756c747374617473026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +33870 +12ca00000001000000000000056d61696c3109636c65616e706f7274026e6c0000010001 +12ca80000001000000020002056d61696c3109636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +33871 +891d00000001000000000000076363636c2d6e6c06787334616c6c026e6c0000010001 +891d80000001000000030002076363636c2d6e6c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +33872 +06b400000001000000000000036e73310663617374656c026e6c0000010001 +06b480000001000000020002036e73310663617374656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3558244c03900010001000151800004c3558245 + +33873 +2ce90000000100000000000003777777056b61746565026e6c0000010001 +2ce98403000100000001000003777777056b61746565026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +33874 +835a00000001000000000000036e73320663617374656c026e6c0000010001 +835a80000001000000020002036e73320663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004c3558244c00c00010001000151800004c3558245 + +33875 +2436000000010000000000000774726166666963026e6c0000010001 +2436800000010000000200000774726166666963026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +33876 +dd4000000001000000000000046164636f026e6c0000010001 +dd4080000001000000020002046164636f026e6c0000010001c00c00020001000151800009036e7331026973c011c00c00020001000151800006036e7332c029c02500010001000151800004d5852102c03a00010001000151800004d5c41503 + +33877 +c8ae0000000100000000000003777777066e6570726f6d026e6c0000010001 +c8ae8000000100000002000203777777066e6570726f6d026e6c0000010001c0100002000100015180000b026e7305706c616e74c017c01000020001000151800006036e7332c02ec02b00010001000151800004d59f0037c04200010001000151800004d59f0046 + +33878 +2a690000000100000000000003777777086e6f61687361726b026e6c0000010001 +2a698000000100000003000203777777086e6f61687361726b026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c019c01000020001000151800006036e7332c031c01000020001000151800012036e7333086c65617365776562036f726700c02d000100010001518000043ed44079c048000100010001518000043ed4407a + +33879 +0dd100000001000000000000037777770561632d6463026e6c0000010001 +0dd180000001000000020001037777770561632d6463026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c016c01000020001000151800006036e7334c02ec02a00010001000151800004d5c401c0 + +33880 +a3a90000000100000000000009636865636b73746174026e6c0000010001 +a3a98000000100000002000109636865636b73746174026e6c0000010001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c02a00010001000151800004d4ccc0fc + +33881 +a41b00000001000000000000036e733102646e0b7074742d74656c65636f6d026e6c0000010001 +a41b80000001000000020000036e733102646e0b7074742d74656c65636f6d026e6c0000010001c0130002000100015180000d03646e73036b706e03636f6d00c0130002000100015180000d036e7332036b706e036e657400 + +33882 +166f0000000100000000000006636f736d6f73046b706d67026e6c0000010001 +166f8000000100000002000006636f736d6f73046b706d67026e6c0000010001c01300020001000151800013036e7331026e6c0669676e697465036e657400c01300020001000151800006036e7332c030 + +33883 +9ab70000000100000000000006726f75746572026777046963636f026e6c0000010001 +9ab78000000100000002000106726f75746572026777046963636f026e6c0000010001c0160002000100015180000d026e7307616e74656e6e61c01bc0160002000100015180001306696e666f726d07616e74656e6e6102646b00c02f00010001000151800004d995dd13 + +33884 +248100000001000000000000055f6c646170045f746370026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001 +248184030001000000010000055f6c646170045f746370026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001c03400060001000038400036026e730f646f6d61696e2d7265676973747279c0340a686f73746d6173746572c04b0bf1e540000070800000384000278d0000003840 + +33885 +64bb00000001000000000000037777770c6164736c63656e7472616c65026e6c0000010001 +64bb80000001000000020000037777770c6164736c63656e7472616c65026e6c0000010001c01000020001000151800010036e733109706365787472656d65c01dc01000020001000151800006036e7332c035 + +33886 +5c7b00000001000000000000036e733109706365787472656d65026e6c0000010001 +5c7b80000001000000020002036e733109706365787472656d65026e6c0000010001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +33887 +cc9100000001000000000000036e733109706365787472656d65026e6c0000260001 +cc9180000001000000020002036e733109706365787472656d65026e6c0000260001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +33888 +9ef200000001000000000000036e733209706365787472656d65026e6c0000010001 +9ef280000001000000020002036e733209706365787472656d65026e6c0000010001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +33889 +cf7900000001000000000000036e733209706365787472656d65026e6c0000260001 +cf7980000001000000020002036e733209706365787472656d65026e6c0000260001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +33890 +7e8c00000001000000000000096b616c6b686f76656e026e6c00000f0001 +7e8c80000001000000020000096b616c6b686f76656e026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c016c00c0002000100015180000704686e7331c02f + +33891 +311e00000001000000000000036e73330767617574656e67026e6c0000010001 +311e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33892 +392400000001000000000000036e73330767617574656e67026e6c0000010001 +392480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33893 +1bcc0000000100000000000009776562736869656c64056f70737973026e6c0000010001 +1bcc8000000100000003000309776562736869656c64056f70737973026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000e026e730876642d626f736368c01cc0160002000100015180000c026e7306746865626f73c01cc03000010001000151800004507fd623c04100010001000151800004d5540498c05b000100010001518000043eb19695 + +33894 +3e4d00000001000000000000076d696c63757261026e6c00000f0001 +3e4d80000001000000020000076d696c63757261026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02b + +33895 +3d10000000010000000000000377777713776179706f696e742d72657374617572616e74026e6c0000010001 +3d10800000010000000200000377777713776179706f696e742d72657374617572616e74026e6c0000010001c0100002000100015180000c026e7306766576696461c024c01000020001000151800006036e7332c03b + +33896 +b10d00000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +b10d80000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +33897 +8e5c0000000100000000000006787334616c6c026e6c00000f0001 +8e5c8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +33898 +bf2800000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +bf2880000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +33899 +656300000001000000000000036e733109666972737466696e64026e6c0000010001 +656380000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +33900 +7e9f0000000100000000000008667265656d61696c026e6c00000f0001 +7e9f8000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +33901 +3a62000000010000000000000f6138302d3132362d3135332d323532046164736c06787334616c6c026e6c0000010001 +3a62800000010000000300020f6138302d3132362d3135332d323532046164736c06787334616c6c026e6c0000010001c02100020001000151800005026e73c021c02100020001000151800006036e7332c021c0210002000100015180000d026e730472697065036e657400c03c00010001000151800004c26d0642c04d00010001000151800004c26d0963 + +33902 +efc10000000100000000000003777777156f7269656e74616c2d6a6164652d73686172706569026e6c0000010001 +efc18000000100000002000203777777156f7269656e74616c2d6a6164652d73686172706569026e6c0000010001c0100002000100015180000d036e733106782d73697465c026c01000020001000151800006036e7332c03ec03a0001000100015180000450f7ca4bc0530001000100015180000450f7ca50 + +33903 +3e7200000001000000000000046d61696c06656d61746963026e6c0000010001 +3e7280000001000000020002046d61696c06656d61746963026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02c000100010001518000043e3a4042c03d000100010001518000043e3a4043 + +33904 +ba980000000100000000000008646473676f756461026e6c00000f0001 +ba988000000100000002000008646473676f756461026e6c00000f0001c00c0002000100015180000e036e73310469706d68036e657400c00c00020001000151800006036e7332c02d + +33905 +85b200000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +85b280000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +33906 +108d00000001000000000000096d61676e6574726f6e106865726d65732d6d61676e6574726f6e026e6c0000010001 +108d80000001000000020002096d61676e6574726f6e106865726d65732d6d61676e6574726f6e026e6c0000010001c0160002000100015180000a036e733103696166c027c01600020001000151800006036e7332c03fc03b000100010001518000045059e040c051000100010001518000045059ee03 + +33907 +79f100000001000000000000046e73303903777873026e6c00001c0001 +79f180000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +33908 +626e00000001000000000000046e73303903777873026e6c0000260001 +626e80000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +33909 +403100000001000000000000036e733403777873026e6c00001c0001 +403180000001000000030003036e733403777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +33910 +c8d900000001000000000000036e733403777873026e6c0000260001 +c8d980000001000000030003036e733403777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +33911 +62d000000001000000000000046e73303803777873026e6c00001c0001 +62d080000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +33912 +5b4000000001000000000000046e73303803777873026e6c0000260001 +5b4080000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +33913 +124e0000000100000000000009652d6c756e61746963026e6c0000010001 +124e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33914 +f2290000000100000000000004686f6d6503696165026e6c0000010001 +f2298000000100000002000204686f6d6503696165026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c015c01100020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +33915 +29be00000001000000000000077765626d61696c03777873026e6c0000010001 +29be80000001000000030003077765626d61696c03777873026e6c0000010001c01400020001000151800007046e733038c014c01400020001000151800007046e733039c014c01400020001000151800006036e7334c014c02c00010001000151800004c3790128c03f00010001000151800004c3790143c05200010001000151800004d5ef9a65 + +33916 +bac200000001000000000000076172636869766507616e74656e6e61026e6c0000010001 +bac280000001000000020001076172636869766507616e74656e6e61026e6c0000010001c01400020001000151800005026e73c014c0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03000010001000151800004d995dd13 + +33917 +a91d00000001000000000000076172636869766507616e74656e6e61026e6c00001c0001 +a91d80000001000000020001076172636869766507616e74656e6e61026e6c00001c0001c01400020001000151800005026e73c014c0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03000010001000151800004d995dd13 + +33918 +b26800000001000000000000076172636869766507616e74656e6e61026e6c0000260001 +b26880000001000000020001076172636869766507616e74656e6e61026e6c0000260001c01400020001000151800005026e73c014c0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03000010001000151800004d995dd13 + +33919 +9e5300000001000000000000026e7307616e74656e6e61026e6c00001c0001 +9e5380000001000000020001026e7307616e74656e6e61026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180001306696e666f726d07616e74656e6e6102646b00c00c00010001000151800004d995dd13 + +33920 +d0fa00000001000000000000026e7307616e74656e6e61026e6c0000260001 +d0fa80000001000000020001026e7307616e74656e6e61026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180001306696e666f726d07616e74656e6e6102646b00c00c00010001000151800004d995dd13 + +33921 +596500000001000000000000036e73310861746c616e74697a026e6c0000010001 +596580000001000000020002036e73310861746c616e74697a026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa011c03b00010001000151800004d5efa075 + +33922 +b5ff00000001000000000000036e73320861746c616e74697a026e6c0000010001 +b5ff80000001000000020002036e73320861746c616e74697a026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d5efa011c00c00010001000151800004d5efa075 + +33923 +150d0000000100000000000003777777076d797374617473026e6c0000010001 +150d8000000100000002000203777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +33924 +066600000001000000000000037777770970726f626565726e75026e6c0000010001 +066680000001000000020000037777770970726f626565726e75026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +33925 +ab000000000100000000000007776f6c66736f6e026e6c00000f0001 +ab008000000100000002000207776f6c66736f6e026e6c00000f0001c00c0002000100015180000d026e73076b6e6f77617265c014c00c00020001000151800006036e7332c02bc02800010001000151800004c3402003c04100010001000151800004c340202b + +33926 +7b8a00000001000000000000077369632d777777036a7263026e6c00001c0001 +7b8a80000001000000020002077369632d777777036a7263026e6c00001c0001c0140002000100015180000a0769616d2d707562c014c014000200010001518000070473697375c014c02c000100010001518000048bbfcf14c042000100010001518000048bbfcf19 + +33927 +021e0000000100000000000009652d6c756e61746963026e6c0000010001 +021e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33928 +3a240000000100000000000009652d6c756e61746963026e6c0000010001 +3a248000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +33929 +17ce00000001000000000000057365656c74026e6c0000010001 +17ce80000001000000020002057365656c74026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02600010001000151800004d5c4071ec03800010001000151800004c32fdc9a + +33930 +213d00000001000000000000036e73330767617574656e67026e6c0000010001 +213d80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33931 +393000000001000000000000036e73340767617574656e67026e6c0000010001 +393080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33932 +594800000001000000000000046c6f6469026e6c00000f0001 +594880000001000000020000046c6f6469026e6c00000f0001c00c0002000100015180000f026e7306636170696361036e657400c00c00020001000151800006036e7332c028 + +33933 +517a00000001000000000000097479706f74656b7374026e6c00000f0001 +517a80000001000000030001097479706f74656b7374026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +33934 +085700000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +085780000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +33935 +74c30000000100000000000003777777076e6c2d6d656e75026e6c0000010001 +74c38000000100000003000203777777076e6c2d6d656e75026e6c0000010001c0100002000100015180000f05636f627261066b6f6e626962c018c0100002000100015180000d0a636f7070657268656164c032c0100002000100015180000906707974686f6ec032c02c00010001000151800004c0571f16c06000010001000151800004c0571f0b + +33936 +64e600000001000000000000096b6162656c666f6f6e026e6c0000010001 +64e680000001000000020002096b6162656c666f6f6e026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7334c00cc02a000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +33937 +185e000000010000000000000377777706726164696f33026e6c0000010001 +185e800000010000000300030377777706726164696f33026e6c0000010001c0100002000100015180000e076e73617574683103626974c017c0100002000100015180000a076e736175746832c033c0100002000100015180000a076e736175746833c033c02b00010001000151800004d5880c33c04500010001000151800004d5880c3bc05b00010001000151800004d4ccc00b + +33938 +9f46000000010000000000000a636f7070657268656164066b6f6e626962026e6c0000010001 +9f46800000010000000300030a636f7070657268656164066b6f6e626962026e6c0000010001c0170002000100015180000805636f627261c017c0170002000100015180000906707974686f6ec017c0170002000100015180000e036e733107737572666e6574c01ec03200010001000151800004c0571f16c04600010001000151800004c0571f0bc05b00010001000151800004c0576a65 + +33939 +22a40000000100000000000005646e732d31056c61646f74026e6c0000010001 +22a48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33940 +6e730000000100000000000005646e732d32056c61646f74026e6c0000010001 +6e738000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +33941 +4b77000000010000000000000b72656e646f64656b6f6f69026e6c00000f0001 +4b77800000010000000300030b72656e646f64656b6f6f69026e6c00000f0001c00c0002000100015180000e04646e73310664656b6f6f69c018c00c0002000100015180000704646e7333c031c00c0002000100015180000704646e7332c031c02c00010001000151800004d5e5500bc04600010001000151800004d5e5500cc05900010001000151800004d5e552c6 + +33942 +708200000001000000000000037777770b7468652d6f737472696368026e6c0000010001 +708280000001000000020002037777770b7468652d6f737472696368026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01cc01000020001000151800006036e7332c033c03000010001000151800004c3402003c04900010001000151800004c340202b + +33943 +ed84000000010000000000000466636466026e6c00000f0001 +ed84800000010000000200000466636466026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +33944 +7ec70000000100000000000003777777056572696261026e6c0000010001 +7ec78000000100000003000203777777056572696261026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +33945 +85ba00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +85ba80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +33946 +a2300000000100000000000003777777056572696261026e6c0000010001 +a2308000000100000003000203777777056572696261026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +33947 +02ec0000000100000000000008706f6f68612d6276026e6c00001c0001 +02ec8000000100000002000208706f6f68612d6276026e6c00001c0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +33948 +1072000000010000000000000377777709206e6f6573706c6520026e6c0000010001 +1072840300010000000100000377777709206e6f6573706c6520026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +33949 +7e4f000000010000000000000377777709756e7175656e646f72026e6c0000010001 +7e4f800000010000000200020377777709756e7175656e646f72026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5c9e8c8c04e00010001000151800004d5c9e8c9 + +33950 +5051000000010000000000000473656e61026e6c0000ff0001 +5051800000010000000200020473656e61026e6c0000ff0001c00c0002000100015180000e036e733107626265796f6e64c011c00c00020001000151800006036e7332c029c025000100010001518000043eb1900bc03f000100010001518000043eb19002 + +33951 +3cca00000001000000000000036e7331046372696f026e6c0000010001 +3cca80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33952 +ba3500000001000000000000036e7332046372696f026e6c0000010001 +ba3580000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +33953 +799100000001000000000000037777770b696e73696465666c6f6f72026e6c0000010001 +799180000001000000030001037777770b696e73696465666c6f6f72026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +33954 +a48800000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +a48880000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +33955 +ef9f00000001000000000000037777770866656d666f72756d026e6c0000010001 +ef9f80000001000000030003037777770866656d666f72756d026e6c0000010001c01000020001000151800010036e733109656e6368616e746564c019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004d5ef8589c04900010001000151800004d5ef8593c05b00010001000151800004d5ef8005 + +33956 +1d2e0000000100000000000003777777087370656b6b656c73026e6c0000010001 +1d2e8000000100000002000203777777087370656b6b656c73026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d994ae77c04b000100010001518000045054ea06 + +33957 +34570000000100000000000003777777096e65742d6d61726b74026e6c0000010001 +34578000000100000003000203777777096e65742d6d61726b74026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c01ac01000020001000151800006036e7332c032c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02e00010001000151800004cf2cd7adc04f0001000100015180000452c04365 + +33958 +17cb00000001000000000000037777770461626974026e6c0000010001 +17cb80000001000000020002037777770461626974026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +33959 +0ce600000001000000000000037777770461626974026e6c0000010001 +0ce680000001000000020002037777770461626974026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +33960 +066f00000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +066f80000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +33961 +58d4000000010000000000000664757061636f026e6c00000f0001 +58d4800000010000000200010664757061636f026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004d586fa2b + +33962 +022c0000000100000000000003777777076e6f6573706c65036e6c30026e6c0000010001 +022c8403000100000001000003777777076e6f6573706c65036e6c30026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +33963 +1ede0000000100000000000007766462636f6d70026e6c00001c0001 +1ede8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +33964 +d5da0000000100000000000006636861726973026e6c0000ff0001 +d5da8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +33965 +93e80000000100000000000008686f73746e616d650462696e640000100003 +93e88000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +33966 +081e28000001000200000000026e6c00000600010850434f4f535431360a4f6f737465696e646572026e6c00000500fe000000000000c014000100010000000000045073bc4e +081ea8040000000000000000 + +33967 +2ff700000001000000000000036e733104686f6d65026e6c0000010001 +2ff780000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +33968 +33d6000000010000000000000377777704616b746f026e6c0000010001 +33d6800000010000000200000377777704616b746f026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02c + +33969 +2e1d0000000100000000000003706f7006706c616e6574026e6c0000010001 +2e1d8000000100000003000303706f7006706c616e6574026e6c0000010001c0100002000100015180000b046e73303803777873c017c01000020001000151800007046e733039c030c01000020001000151800006036e7334c030c02b00010001000151800004c3790128c04200010001000151800004c3790143c05500010001000151800004d5ef9a65 + +33970 +cd44000000010000000000000776616e64696a6b026e6c00000f0001 +cd44800000010000000200020776616e64696a6b026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +33971 +71580000000100000000000003706f70086869676863617265026e6c0000010001 +71588000000100000003000203706f70086869676863617265026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +33972 +dde9000000010000000000000661736f706f73026e6c00000f0001 +dde9800000010000000200000661736f706f73026e6c00000f0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +33973 +da0300000001000000000000037777770e70726976652d616472657373656e026e6c0000010001 +da0380000001000000020000037777770e70726976652d616472657373656e026e6c0000010001c01000020001000151800012036e7335087a6f6e656564697403636f6d00c01000020001000151800007046e733134c037 + +33974 +ce1d000000010000000000000e736d616c6c696e6765726c616e64026e6c0000ff0001 +ce1d800000010000000200020e736d616c6c696e6765726c616e64026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +33975 +d7840000000100000000000010686565667465656e676f656468617274026e6c0000010001 +d7848000000100000002000010686565667465656e676f656468617274026e6c0000010001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c035 + +33976 +82e6000000010000000000000477777732076d797374617473026e6c0000010001 +82e6800000010000000200020477777732076d797374617473026e6c0000010001c01100020001000151800011036e73310a726564686f7374696e67c019c01100020001000151800006036e7332c031c02d00010001000151800004d5efa404c04a00010001000151800004d5efa405 + +33977 +64f500000001000000000000066d65657a687a026e6c00001c0001 +64f580000001000000030002066d65657a687a026e6c00001c0001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +33978 +bafe0000000100000000000004616e646f026e6c00000f0001 +bafe8000000100000003000304616e646f026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c02500010001000151800004d5c98015c04000010001000151800004d5c9bf12c05200010001000151800004d5ef9c26 + +33979 +93f9000000010000000000000377777706676f6f67656c026e6c0000010001 +93f9800000010000000200020377777706676f6f67656c026e6c0000010001c0100002000100015180000a036e7331036e7873c017c01000020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +33980 +0a3200000001000000000000037777770a666f7274697362616e6b026e6c0000010001 +0a3280000001000000030002037777770a666f7274697362616e6b026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01bc01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c033c02f000100010001518000045054e055c06800010001000151800004d4ccc655 + +33981 +014e00000001000000000000036e73340767617574656e67026e6c0000010001 +014e80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +33982 +2f6000100001000000000001076e696b68656668066e696b686566026e6c00000100010000290800000000000000 +2f6080000001000000040003076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c7040000291000000000000000 + +33983 +4b9500100001000000000001076e696b68656668066e696b686566026e6c00002600010000290800000000000000 +4b9580000001000000040003076e696b68656668066e696b686566026e6c0000260001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c7040000291000000000000000 + +33984 +c63b000000010000000000000377777707796f72696e666d026e6c00001c0001 +c63b800000010000000200010377777707796f72696e666d026e6c00001c0001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c018c01000020001000151800011036e733207636c742d756661036e657400c02c00010001000151800004c3c1ca77 + +33985 +e6500000000100000000000003777777057a6f656b79026e6c0000010001 +e6508000000100000002000103777777057a6f656b79026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c016c01000020001000151800006036e7334c02ec02a00010001000151800004d5c401c0 + +33986 +6cfb0000000100000000000005746f746162026e6c00000f0001 +6cfb8000000100000002000205746f746162026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +33987 +557a0000000100000000000005616d2d656d026e6c00000f0001 +557a8000000100000002000005616d2d656d026e6c00000f0001c00c0002000100015180000f036e73310561676e2d65036e657400c00c00020001000151800006036e7332c02a + +33988 +0c2f00000001000000000000046c756e61026e6c00001c0001 +0c2f80000001000000020000046c756e61026e6c00001c0001c00c00020001000151800017026e7309726f7474657264616d046c756e61036e657400c00c0002000100015180000f026e7309686f6f6664646f7270c032 + +33989 +3d2e00000001000000000000026f72026e6c00000f0001 +3d2e80000001000000020000026f72026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c026 + +33990 +e4ba000000010000000000000a61666b62656e656c7578026e6c0000010001 +e4ba800000010000000200010a61666b62656e656c7578026e6c0000010001c00c0002000100015180000a036e733303777873c017c00c00020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +33991 +b3970000000100000000000104646e733105692d702d64026e6c00000100010000291000000000000000 +b3978000000100000002000304646e733105692d702d64026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d91241040000291000000000000000 + +33992 +139b00000001000000000000046d61696c06647272617468026e6c0000010001 +139b80000001000000020002046d61696c06647272617468026e6c0000010001c0110002000100015180000b036e73310472617468c018c01100020001000151800006036e7332c030c02c00010001000151800004d535c109c043000100010001518000043f6d1401 + +33993 +0c31000000010000000000000c5241414456414e5354415445024e4c00000f0001 +0c31800000010000000200000c5241414456414e5354415445024e4c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +33994 +e29c00000001000000000000037777770a72697373657276696365026e6c0000010001 +e29c80000001000000020002037777770a72697373657276696365026e6c0000010001c0100002000100015180000d036e73310661637469766fc01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c4281ac04800010001000151800004d5c42806 + +33995 +9c7c00000001000000000000037777771061726368696566737461727470756e74026e6c0000010001 +9c7c80000001000000020002037777771061726368696566737461727470756e74026e6c0000010001c0100002000100015180000a036e7331036e7873c021c01000020001000151800006036e7332c039c03500010001000151800004d973c015c04b00010001000151800004d973c102 + +33996 +3f5c0000000100000000000104646e733105692d702d64026e6c00001c00010000291000000000000000 +3f5c8000000100000002000304646e733105692d702d64026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d91241040000291000000000000000 + +33997 +ec9a0000000100000000000104646e733105692d702d64026e6c00002600010000291000000000000000 +ec9a8000000100000002000304646e733105692d702d64026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d91241040000291000000000000000 + +33998 +98fd0000000100000000000104646e733205692d702d64026e6c00000100010000291000000000000000 +98fd8000000100000002000304646e733205692d702d64026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d91241040000291000000000000000 + +33999 +6e410000000100000000000104646e733205692d702d64026e6c00001c00010000291000000000000000 +6e418000000100000002000304646e733205692d702d64026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d91241040000291000000000000000 + +34000 +5dd30000000100000000000007666f786b696473026e6c00001c0001 +5dd38000000100000003000007666f786b696473026e6c00001c0001c00c00020001000151800011036e73310777652d64617265036e657400c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02c + +34001 +6df60000000100000000000104646e733205692d702d64026e6c00002600010000291000000000000000 +6df68000000100000002000304646e733205692d702d64026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d91241040000291000000000000000 + +34002 +8031000000010000000000000a70696a6c736e656c3935026e6c00000f0001 +8031800000010000000200000a70696a6c736e656c3935026e6c00000f0001c00c0002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c00c00020001000151800015026e730f796f75726e616d65686f7374696e67c041 + +34003 +950100000001000000000000036e7331066e6c74726565026e6c0000010001 +950180000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +34004 +7e9900000001000000000000036e7332066e6c74726565026e6c0000010001 +7e9980000001000000020002036e7332066e6c74726565026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d4b20403c00c00010001000151800004d5881e45 + +34005 +37140000000100000000000003777777077768656b616d70026e6c0000010001 +37148000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +34006 +972a00000001000000000000046d61696c076575726f6e6574026e6c0000010001 +972a80000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +34007 +3fa700000001000000000000037777770570636d6167026e6c0000010001 +3fa780000001000000020000037777770570636d6167026e6c0000010001c0100002000100015180000f036e733105617363696f036e657400c01000020001000151800006036e7332c02e + +34008 +92980000000100000000000003706f7007726f6465677261026e6c0000010001 +92988000000100000002000003706f7007726f6465677261026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +34009 +98e200000001000000000000036e7333076e656473746174026e6c0000010001 +98e280000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34010 +ce1d000000010000000000000b667574757269736c616e64026e6c00000f0001 +ce1d840300010000000100000b667574757269736c616e64026e6c00000f0001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +34011 +304900000001000000000000037777770372746c026e6c00001c0001 +304980000001000000020001037777770372746c026e6c00001c0001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c014c01000020001000151800011036e733207636c742d756661036e657400c02800010001000151800004c3c1ca77 + +34012 +f3bc00000001000000000000037777770b686f756f706469656b6973026e6c0000010001 +f3bc80000001000000020002037777770b686f756f706469656b6973026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01cc01000020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +34013 +a53500000001000000000000037777770b646f6e617469656b6e6f70026e6c0000010001 +a53580000001000000020002037777770b646f6e617469656b6e6f70026e6c0000010001c0100002000100015180000b036e7331046e732d31c01cc01000020001000151800006036e7332c034c030000100010001518000045045a0cdc04700010001000151800004d4cceec8 + +34014 +8675000000010000000000000d62696a737465726875697a656e026e6c0000010001 +8675800000010000000200000d62696a737465726875697a656e026e6c0000010001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c035 + +34015 +fc8e0000000100000000000006617367617264026e6c00000f0001 +fc8e8000000100000002000206617367617264026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc013c00c00020001000151800006036e7332c02bc02700010001000151800004c3558244c04000010001000151800004c3558245 + +34016 +8055000000010000000000000c5354494e474552434f414348026e6c0000020001 +8055840300010000000100000c5354494e474552434f414348026e6c0000020001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +34017 +12c0000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +12c0800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +34018 +f8f6000000010000000000000f6c6f67697363687072656d65646961026e6c00000f0001 +f8f6800000010000000200020f6c6f67697363687072656d65646961026e6c00000f0001c00c00020001000151800009036e7331026973c01cc00c00020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +34019 +87d7000000010000000000000377777708616e616c626f7973026e6c0000010001 +87d7800000010000000200020377777708616e616c626f7973026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac019c01000020001000151800006036e7332c031c02d00010001000151800004d5efa011c04800010001000151800004d5efa075 + +34020 +34460000000100000000000003777777046963636503727567026e6c0000010001 +34468000000100000003000303777777046963636503727567026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000e036e733107737572666e6574c019c02d00010001000151800004817d0406c03f00010001000151800004817d040dc05100010001000151800004c0576a65 + +34021 +901d00000001000000000000026e73076e656473746174026e6c0000010001 +901d80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34022 +dc5e00000001000000000000036e7332076e656473746174026e6c0000010001 +dc5e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34023 +be7100000001000000000000036e7333076e656473746174026e6c0000010001 +be7180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34024 +298500000001000000000000036e7334076e656473746174026e6c0000010001 +298580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34025 +0c5a000000010000000000000b706c616e65746576656e74026e6c00000f0001 +0c5a800000010000000200000b706c616e65746576656e74026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02f + +34026 +6f4a00000001000000000000037777770964697274796c616e64026e6c0000010001 +6f4a84030001000000010000037777770964697274796c616e64026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +34027 +14a700000001000000000000037777770e62622d6164766572746973696e67026e6c0000010001 +14a780000001000000020000037777770e62622d6164766572746973696e67026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c036 + +34028 +bba500000001000000000000036e733108696e74726f776562026e6c0000010001 +bba580000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +34029 +758c00000001000000000000036e733208696e74726f776562026e6c0000010001 +758c80000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +34030 +89bc00000001000000000000076f70656e6e61700567757a6564026e6c0000010001 +89bc80000001000000020002076f70656e6e61700567757a6564026e6c0000010001c0140002000100015180000e036e73310773656172636879c01ac01400020001000151800006036e7332c032c02e00010001000151800004d9aa1235c04800010001000151800004507e81e0 + +34031 +0cf400000001000000000000037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001 +0cf480000001000000020002037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001c02200020001000151800009036e7331026973c02dc02200020001000151800006036e7332c045c04100010001000151800004d5852102c05600010001000151800004d5c41503 + +34032 +34fd00000001000000000000037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001 +34fd80000001000000020002037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001c02200020001000151800009036e7331026973c02dc02200020001000151800006036e7332c045c04100010001000151800004d5852102c05600010001000151800004d5c41503 + +34033 +b4340000000100000000000003747469026e6c0000010001 +b4348000000100000002000203747469026e6c0000010001c00c00020001000151800009036e7331026973c010c00c00020001000151800006036e7332c028c02400010001000151800004d5852102c03900010001000151800004d5c41503 + +34034 +006700000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b7768697a7a646f6d706463026e6c0000060001 +006784030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b7768697a7a646f6d706463026e6c0000060001c04200060001000038400036026e730f646f6d61696e2d7265676973747279c0420a686f73746d6173746572c0590bf1e540000070800000384000278d0000003840 + +34035 +050000000001000000000000037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001 +050080000001000000020002037777770d77696e646f777375706461746503636f6d0a7377697463686a6f6273026e6c0000010001c02200020001000151800009036e7331026973c02dc02200020001000151800006036e7332c045c04100010001000151800004d5852102c05600010001000151800004d5c41503 + +34036 +e034000000010000000000000c76616e6465726c696e64656e026e6c00000f0001 +e034800000010000000200000c76616e6465726c696e64656e026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c031 + +34037 +610f000000010000000000000d64656e6e69737665656e686f66026e6c00000f0001 +610f800000010000000200000d64656e6e69737665656e686f66026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c034 + +34038 +878c0000000100000000000004646e73310471776562026e6c0000010001 +878c8000000100000002000204646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +34039 +e19b0000000100000000000004646e73320471776562026e6c0000010001 +e19b8000000100000002000204646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +34040 +6072000000010000000000000d736368757474657267726f6570026e6c00000f0001 +6072800000010000000200020d736368757474657267726f6570026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +34041 +e4860000000100000000000003777777087063616374697665026e6c0000010001 +e4868000000100000002000003777777087063616374697665026e6c0000010001c0100002000100015180000a026e7304616b7475c019c0100002000100015180000b026e73026e6c036e657400 + +34042 +85c6000000010000000000000768656e6472696b0b726f62626f6f6e73747261026e6c0000010001 +85c6800000010000000200020768656e6472696b0b726f62626f6f6e73747261026e6c0000010001c0140002000100015180000a04646e7330026975c020c0140002000100015180000704646e7331c039c03400010001000151800004d91a7002c04a00010001000151800004d91a7103 + +34043 +189200000001000000000000036e733203626e7309676574726f6e696373026e6c0000010001 +189280000001000000030003036e733203626e7309676574726f6e696373026e6c0000010001c01400020001000151800006036e7332c014c01400020001000151800005026e73c014c0140002000100015180000a036e733203676e73c014c03200010001000151800004902c0a01c04400010001000151800004902c1319c05500010001000151800004910d2a05 + +34044 +1b2400000001000000000000076e696b68656668066e696b686566026e6c0000010001 +1b2480000001000000040002076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c704 + +34045 +0d9200000001000000000000076e696b68656668066e696b686566026e6c0000260001 +0d9280000001000000040002076e696b68656668066e696b686566026e6c0000260001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c704 + +34046 +7f700000000100000000000005656d61696c066463692d6e6c026e6c00000f0001 +7f708403000100000001000005656d61696c066463692d6e6c026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +34047 +0c5e000000010000000000000b766973696f6c6f6f657266026e6c00000f0001 +0c5e800000010000000300030b766973696f6c6f6f657266026e6c00000f0001c00c0002000100015180000e036e73310761737034616c6cc018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004c1adf9c3c046000100010001518000043e70ec3cc05800010001000151800004c1ac0bae + +34048 +43580000000100000000000004686f6d650774697363616c69026e6c0000010001 +43588000000100000003000204686f6d650774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +34049 +2a1e000000010000000000000377777712696374666f72796f7572627573696e657373026e6c0000010001 +2a1e800000010000000300030377777712696374666f72796f7572627573696e657373026e6c0000010001c0100002000100015180000c026e73067369676e6574c023c01000020001000151800006036e7331c03ac01000020001000151800006036e7332c03ac03700010001000151800004c3561242c04f00010001000151800004d915f142c06100010001000151800004d915f141 + +34050 +20a9000000010000000000000377777704696c7365026e6c0000010001 +20a9800000010000000300030377777704696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c029000100010001518000043e45a282c03b000100010001518000043e45a283c04d000100010001518000043e45a284 + +34051 +b32100000001000000000000037777770a697269736864616e6365086d6565726c696e67026e6c0000010001 +b32180000001000000020002037777770a697269736864616e6365086d6565726c696e67026e6c0000010001c01b0002000100015180000a026e730469636d63c024c01b00020001000151800006036e7332c03bc038000100010001518000043e643805c04e000100010001518000043e643806 + +34052 +9cbc0000000100000000000003777777086d6574656f6e6574026e6c0000010001 +9cbc8000000100000002000203777777086d6574656f6e6574026e6c0000010001c01000020001000151800011036e73310a636c75737465726e6574c019c01000020001000151800006036e7332c031c02d000100010001518000045054edf5c04a00010001000151800004d5f72f3c + +34053 +b3970000000100000000000004646e733105692d702d64026e6c0000010001 +b3978000000100000002000204646e733105692d702d64026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d9124104 + +34054 +190b00000001000000000000036e7332066e65746a616d026e6c0000010001 +190b80000001000000030002036e7332066e65746a616d026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +34055 +384400000001000000000000036e7331066e65746a616d026e6c0000010001 +384480000001000000030002036e7331066e65746a616d026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +34056 +3b0100000001000000000000055f6c646170045f746370026763065f6d736463730e7a6f6e6e6576656c642d676f6573026e6c0000060001 +3b0184030001000000010000055f6c646170045f746370026763065f6d736463730e7a6f6e6e6576656c642d676f6573026e6c0000060001c03000060001000038400036026e730f646f6d61696e2d7265676973747279c0300a686f73746d6173746572c0470bf1e540000070800000384000278d0000003840 + +34057 +3f5c0000000100000000000004646e733105692d702d64026e6c00001c0001 +3f5c8000000100000002000204646e733105692d702d64026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d9124104 + +34058 +ec9a0000000100000000000004646e733105692d702d64026e6c0000260001 +ec9a8000000100000002000204646e733105692d702d64026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9124003c03900010001000151800004d9124104 + +34059 +98fd0000000100000000000004646e733205692d702d64026e6c0000010001 +98fd8000000100000002000204646e733205692d702d64026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d9124104 + +34060 +6e410000000100000000000004646e733205692d702d64026e6c00001c0001 +6e418000000100000002000204646e733205692d702d64026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d9124104 + +34061 +6df60000000100000000000004646e733205692d702d64026e6c0000260001 +6df68000000100000002000204646e733205692d702d64026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d9124003c00c00010001000151800004d9124104 + +34062 +466c0000000100000000000004646e733103766970026e6c00001c0001 +466c8000000100000003000304646e733103766970026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c0110002000100015180000704646e7333c011c00c00010001000151800004d44fe803c03700010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +34063 +15880000000100000000000004646e733103766970026e6c0000260001 +15888000000100000003000304646e733103766970026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c0110002000100015180000704646e7333c011c00c00010001000151800004d44fe803c03700010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +34064 +c1e10000000100000000000004646e733203766970026e6c00001c0001 +c1e18000000100000003000304646e733203766970026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02900010001000151800004d44fe803c00c00010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +34065 +08cb0000000100000000000004646e733203766970026e6c0000260001 +08cb8000000100000003000304646e733203766970026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02900010001000151800004d44fe803c00c00010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +34066 +f0730000000100000000000004646e733303766970026e6c00001c0001 +f0738000000100000003000304646e733303766970026e6c00001c0001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02900010001000151800004d44fe803c03c00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +34067 +4f560000000100000000000004646e733303766970026e6c0000260001 +4f568000000100000003000304646e733303766970026e6c0000260001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02900010001000151800004d44fe803c03c00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +34068 +80500000000100000000000005646e732d32056c61646f74026e6c0000010001 +80508000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34069 +8df400000001000000000000076d656761626f74026e6c0000010001 +8df480000001000000030003076d656761626f74026e6c0000010001c00c0002000100015180000e076e73617574683103626974c014c00c0002000100015180000a076e736175746832c030c00c0002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +34070 +41ec00000001000000000000055f6c646170045f746370026763065f6d7364637308416d65726b616e61026e6c0000210001 +41ec80000001000000020001055f6c646170045f746370026763065f6d7364637308416d65726b616e61026e6c0000210001c0210002000100015180000d026e73046575726f036e657400c0210002000100015180000d026e73076575726f6e6574c02ac05700010001000151800004c2860043 + +34071 +2112000000010000000000000578656e646f026e6c0000010001 +2112800000010000000200020578656e646f026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +34072 +cbf028000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d736463730e7a6f6e6e6576656c642d676f6573026e6c0000210001000002580023000000640cc40973622d7365727665720e7a6f6e6e6576656c642d676f6573026e6c00 +cbf0a8040000000000000000 + +34073 +67960000000100000000000003777777086a6f62747261636b026e6c0000010001 +67968000000100000003000303777777086a6f62747261636b026e6c0000010001c01000020001000151800010036e733109776973652d67757973c019c01000020001000151800006036e7330c031c01000020001000151800006036e7332c031c02d00010001000151800004d413cd91c04900010001000151800004d413cd8fc05b00010001000151800004c16d7a3e + +34074 +985700000001000000000000036e73320469636d63026e6c0000010001 +985780000001000000020002036e73320469636d63026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc029000100010001518000043e643805c00c000100010001518000043e643806 + +34075 +e397000000010000000000000661736f706f73026e6c0000010001 +e397800000010000000200000661736f706f73026e6c0000010001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +34076 +1dcf0000000100000000000008626c616465746d63026e6c0000010001 +1dcf8000000100000002000208626c616465746d63026e6c0000010001c00c00020001000151800011036e73310a726564686f7374696e67c015c00c00020001000151800006036e7332c02dc02900010001000151800004d5efa404c04600010001000151800004d5efa405 + +34077 +d2bf0000000100000000000004646e73310976616c6b6965736572026e6c0000010001 +d2bf8000000100000002000004646e73310976616c6b6965736572026e6c0000010001c01100020001000151800011036e7333076361706361766503636f6d00c01100020001000151800006036e7334c033 + +34078 +4af50000000100000000000004646e73320976616c6b6965736572026e6c0000010001 +4af58000000100000002000004646e73320976616c6b6965736572026e6c0000010001c01100020001000151800011036e7333076361706361766503636f6d00c01100020001000151800006036e7334c033 + +34079 +bf5a00000001000000000000026e7307656368656c6f6e026e6c0000010001 +bf5a80000001000000020002026e7307656368656c6f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7378c00fc00c00010001000151800004d977e179c03900010001000151800004d4ccd10c + +34080 +2f9200000001000000000000036e737807656368656c6f6e026e6c0000010001 +2f9280000001000000020002036e737807656368656c6f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d977e179c00c00010001000151800004d4ccd10c + +34081 +46a900000001000000000000037777770b6f6e6c696e652d64617461026e6c0000010001 +46a980000001000000020002037777770b6f6e6c696e652d64617461026e6c0000010001c0100002000100015180000b036e73310431326e73c01cc01000020001000151800006036e7332c034c030000100010001518000043ed44ca0c047000100010001518000043ed4440c + +34082 +000000007002faf0e78d0000020405b401010402 +000080010000000000000000 + +34083 +02cb000000010000000000000377777708667265656d61696c026e6c0000010001 +02cb800000010000000300020377777708667265656d61696c026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c019c0100002000100015180000704616e7332c032c0100002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04800010001000151800004c3f13325 + +34084 +f51a00000001000000000000056d62757975026e6c0000ff0001 +f51a80000001000000020000056d62757975026e6c0000ff0001c00c00020001000151800010026e73076379736f6e657403636f6d00c00c00020001000151800006036e7331c029 + +34085 +f85d00000001000000000000026e7306787334616c6c026e6c0000010001 +f85d80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34086 +ab8900000001000000000000036e733206787334616c6c026e6c0000010001 +ab8980000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +34087 +b70d802c5010faf0dd070000000000000000 + + +34088 +4711001000010000000000000377777709776562776572656c64026e6c00001c0001 +4711800000010000000300030377777709776562776572656c64026e6c00001c0001c0100002000100015180000a036e733103696467c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e0001000100015180000451af4646c0440001000100015180000451af4647c05600010001000151800004d5a0fde6 + +34089 +b70d802c5018faf0dbdc000000962509000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd92403c4f120003000000374e544c4d535350000100000097b208e00e000e0029000000090009002000000053422d5345525645525a4f4e4e4556454c442d474f45530000 + + +34090 +419000000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +419080000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +34091 +3a7a00000001000000000000036e7331117468656e6574776f726b666163746f7279026e6c0000010001 +3a7a80000001000000020002036e7331117468656e6574776f726b666163746f7279026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cb0c35c04400010001000151800004d4cb0c34 + +34092 +b70d803a5011fae2dc6e0000000000000000 + + +34093 +0e8400000001000000000000036e7332117468656e6574776f726b666163746f7279026e6c0000010001 +0e8480000001000000020002036e7332117468656e6574776f726b666163746f7279026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03600010001000151800004d4cb0c35c00c00010001000151800004d4cb0c34 + +34094 +10cb00000001000000000000037777770f7665726d6565726d657562656c656e026e6c0000010001 +10cb80000001000000020002037777770f7665726d6565726d657562656c656e026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c020c01000020001000151800006036e7332c038c03400010001000151800004d994ae77c052000100010001518000045054ea06 + +34095 +000000007002faf053ff0000020405b401010402 +000080010000000000000000 + +34096 +a4cb00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +a4cb80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34097 +d44f00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +d44f80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34098 +31aa0000000100000000000009652d6c756e61746963026e6c0000010001 +31aa8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34099 +12800000000100000000000009652d6c756e61746963026e6c0000010001 +12808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34100 +69020000000100000000000003777777067a7376737367026e6c0000010001 +69028403000100000001000003777777067a7376737367026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +34101 +b70d803b5010fae2dc6d0000000000000000 + + +34102 +31b40000000100000000000009652d6c756e61746963026e6c0000010001 +31b48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34103 +09800000000100000000000009652d6c756e61746963026e6c0000010001 +09808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34104 +b70e3fda5010faf089ca0000000000000000 +b70ebfd40000000000000000 + +34105 +327b0000000100000000000009652d6c756e61746963026e6c0000010001 +327b8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34106 +b70e3fda5018faf0e04d00000096ce5b000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd92403c4f120003000000374e544c4d535350000100000097b208e00e000e0029000000090009002000000053422d5345525645525a4f4e4e4556454c442d474f45530000 +b70ebfd40000000000000000 + +34107 +58d500000001000000000000116161782d73703233302d6173642d30303107616167726f6570026e6c0000010001 +58d580000001000000020000116161782d73703233302d6173642d30303107616167726f6570026e6c0000010001c01e0002000100015180000d036e7330036f347303636f6d00c01e00020001000151800006036e7331c03e + +34108 +b70e3fe85011fae289310000000000000000 +b70ebfe40000000000000000 + +34109 +000000007002faf067a30000020405b401010402 +000080010000000000000000 + +34110 +f56b00000001000000000000037777770764656c65657374026e6c0000010001 +f56b80000001000000020002037777770764656c65657374026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +34111 +5ef900000001000000000000036e73320a7a65656c616e646e6574026e6c00001c0001 +5ef980000001000000020002036e73320a7a65656c616e646e6574026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +34112 +865600000001000000000000036e73320a7a65656c616e646e6574026e6c0000010001 +865680000001000000020002036e73320a7a65656c616e646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +34113 +4b6700000001000000000000026e730a7a65656c616e646e6574026e6c00001c0001 +4b6780000001000000020002026e730a7a65656c616e646e6574026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +34114 +3aa200000001000000000000026e730a7a65656c616e646e6574026e6c0000010001 +3aa280000001000000020002026e730a7a65656c616e646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +34115 +b70e3fe95010fae289300000000000000000 +b70ebfe40000000000000000 + +34116 +3dc300000001000000000000037777770c6631636f6d70657469746965026e6c0000010001 +3dc380000001000000030003037777770c6631636f6d70657469746965026e6c0000010001c0100002000100015180000c036e7331056d61786573c01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c031000100010001518000045045402ec049000100010001518000045045402fc05b000100010001518000045045440a + +34117 +b70f07c45010faf0d5830000000000000000 +b70f80010000000000000000 + +34118 +b70f07c45018faf0907e0000009669e4000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd92403c4f120003000000374e544c4d535350000100000097b208e00e000e0029000000090009002000000053422d5345525645525a4f4e4e4556454c442d474f45530000 +b70f80010000000000000000 + +34119 +015200000001000000000000036e73340767617574656e67026e6c0000010001 +015280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34120 +295c00000001000000000000036e73340767617574656e67026e6c0000010001 +295c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34121 +b70f07d25011fae2d4ea0000000000000000 +b70f80010000000000000000 + +34122 +122b00000001000000000000037777770b775f67686f657261686f650b7374617274626577696a73026e6c0000010001 +122b80000001000000020000037777770b775f67686f657261686f650b7374617274626577696a73026e6c0000010001c01c00020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01c00020001000151800006036e7332c040 + +34123 +90fa0000000100000000000006736572766572026462036b766b026e6c0000010001 +90fa8000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +34124 +b70f07d35010fae2d4e90000000000000000 +b70f80010000000000000000 + +34125 +576800000001000000000000037777770b7468652d6f737472696368026e6c0000010001 +576880000001000000020002037777770b7468652d6f737472696368026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01cc01000020001000151800006036e7332c033c03000010001000151800004c3402003c04900010001000151800004c340202b + +34126 +a99f00000001000000000000047770616408677265656e6f636b026e6c0000010001 +a99f80000001000000020000047770616408677265656e6f636b026e6c0000010001c01100020001000151800015036e73350b686f7374696e67776f7278036e657400c01100020001000151800006036e7336c032 + +34127 +579a00000001000000000000037777770b616466697265776f726b73026e6c0000010001 +579a80000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +34128 +d03f00000001000000000000046e733032066368656c6c6f026e6c00001c0001 +d03f80000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +34129 +22b700000001000000000000046e733032066368656c6c6f026e6c0000010001 +22b780000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +34130 +3a0d00000001000000000000036e733103757063026e6c00001c0001 +3a0d80000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +34131 +018000000001000000000000036e73330767617574656e67026e6c0000010001 +018080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34132 +0b7c00000001000000000000036e733103757063026e6c0000010001 +0b7c80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +34133 +4d2000000001000000000000037777770a6e65756b77696a76656e026e6c0000010001 +4d2080000001000000020002037777770a6e65756b77696a76656e026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4f1210bc04d00010001000151800004d4f1210c + +34134 +5c8900000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +5c8980000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34135 +37e5000000010000000000000377777703687661026e6c0000010001 +37e5800000010000000300030377777703687661026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800006036e7332c010c02800010001000151800004915c1202c03900010001000151800004c0576a65c05300010001000151800004915c2102 + +34136 +10d400000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +10d480000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34137 +8e7c00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +8e7c80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +34138 +f92d00000001000000000000026e730f444f4d41494e2d5245474953545259024e4c00001c0001 +f92d80000001000000030002026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +34139 +62ad00000001000000000000046865726101780463756369026e6c0000010001 +62ad80000001000000030003046865726101780463756369026e6c0000010001c01300020001000151800002c00cc0130002000100015180000c066865726d6573026e6cc013c01300020001000151800009066865726d6573c011c00c00010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +34140 +2a1e00000001000000000000036e73320f444f4d41494e2d5245474953545259024e4c00001c0001 +2a1e80000001000000030002036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34141 +b9e10000000100000000000003777777087370656b6b656c73026e6c0000010001 +b9e18000000100000002000203777777087370656b6b656c73026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d994ae77c04b000100010001518000045054ea06 + +34142 +ca6e000000010000000000000365666f026e6c0000010001 +ca6e800000010000000200020365666f026e6c0000010001c00c0002000100015180000d026e73076e6f7661776562c010c00c00020001000151800006036e7332c027c02400010001000151800004d5c4220bc03d00010001000151800004d5c4220c + +34143 +b7f900000001000000000000037777770c73706f7274766973616b7465026e6c0000010001 +b7f980000001000000020000037777770c73706f7274766973616b7465026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c035 + +34144 +d344000000010000000000000874656c6570616374026e6c0000010001 +d344800000010000000200000874656c6570616374026e6c0000010001c00c0002000100015180000c026e7306656e6574636fc015c00c00020001000151800006036e7332c02c + +34145 +73c6001000010000000000000473726a76026e6c00000f0001 +73c6800000010000000200000473726a76026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +34146 +5a45000000010000000000000d7761727477616d7374656b6572026e6c0000ff0001 +5a45800000010000000200000d7761727477616d7374656b6572026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c01ac00c00020001000151800006036e7332c031 + +34147 +578c00000001000000000000046d737973026e6c00000f0001 +578c80000001000000020002046d737973026e6c00000f0001c00c00020001000151800019036e73311277696e646b7261636874696e7465726e6574c011c00c00020001000151800006036e7332c029c0250001000100015180000450f2eea1c04a0001000100015180000450f2eea2 + +34148 +38c8000000010000000000000377777704726f7663026e6c0000010001 +38c8800000010000000300030377777704726f7663026e6c0000010001c0100002000100015180000e076e73617574683103626974c015c0100002000100015180000a076e736175746832c031c0100002000100015180000a076e736175746833c031c02900010001000151800004d5880c33c04300010001000151800004d5880c3bc05900010001000151800004d4ccc00b + +34149 +d9b7000000010000000000000372657409726f7474657264616d026e6c00000f0001 +d9b7800000010000000300030372657409726f7474657264616d026e6c00000f0001c0100002000100015180000c0967616e796d65646573c010c01000020001000151800007046c656461c010c01000020001000151800014036e733203676e7309676574726f6e696373c01ac02e00010001000151800004d5c9cf50c04600010001000151800004d5c9cf19c05900010001000151800004910d2a05 + +34150 +79280000000100000000000010696e7465726e65746865726c616e6473026e6c00000f0001 +79288000000100000002000010696e7465726e65746865726c616e6473026e6c00000f0001c00c00020001000151800011036e73310764697265637435036e657400c00c00020001000151800006036e7332c035 + +34151 +799800000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +799880000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34152 +69a000000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +69a080000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34153 +e62c00000001000000000000037777770e736578787879706c6161746a6573026e6c0000010001 +e62c80000001000000020000037777770e736578787879706c6161746a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c036 + +34154 +336228000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b517569636b6f6666696365026e6c00002100010000025800230000006400580c65786163742d7365727665720b517569636b6f6666696365026e6c00 +3362a8040000000000000000 + +34155 +9ec500000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +9ec580000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34156 +aaf90000000100000000000011736974652d776f6f6e6469656e7374656e026e6c0000ff0001 +aaf98000000100000002000011736974652d776f6f6e6469656e7374656e026e6c0000ff0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03d + +34157 +0000000070024000d69200000204055001010402 +000080010000000000000000 + +34158 +f7d000000001000000000000036d783307646f6c66696a6e026e6c0000010001 +f7d080000001000000030003036d783307646f6c66696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34159 +718600000001000000000000036d783307646f6c66696a6e026e6c0000260001 +718680000001000000030003036d783307646f6c66696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34160 +374600000001000000000000046d786c3207646f6c66696a6e026e6c0000010001 +374680000001000000030003046d786c3207646f6c66696a6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02d000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +34161 +0c7300000001000000000000046d786c3207646f6c66696a6e026e6c0000260001 +0c7380000001000000030003046d786c3207646f6c66696a6e026e6c0000260001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02d000100010001518000043e45a282c03f000100010001518000043e45a283c051000100010001518000043e45a284 + +34162 +74f900000001000000000000036d783007646f6c66696a6e026e6c0000010001 +74f980000001000000030003036d783007646f6c66696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34163 +b711831550104510c3ab0000000000000000 + + +34164 +911a0000000100000000000009696e747261626f7577026e6c00000f0001 +911a8000000100000002000209696e747261626f7577026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +34165 +597300000001000000000000036d783007646f6c66696a6e026e6c0000260001 +597380000001000000030003036d783007646f6c66696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34166 +49a800000001000000000000036d783107646f6c66696a6e026e6c0000260001 +49a880000001000000030003036d783107646f6c66696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34167 +16fb00000001000000000000036d783207646f6c66696a6e026e6c0000010001 +16fb80000001000000030003036d783207646f6c66696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34168 +790f00000001000000000000036d783207646f6c66696a6e026e6c0000260001 +790f80000001000000030003036d783207646f6c66696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34169 +ed7b00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +ed7b80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +34170 +310f00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +310f80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +34171 +b711831550184510e4a100000096a500000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd50403c4ed00003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 + + +34172 +1e8d00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +1e8d80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34173 +32f600000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +32f680000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34174 +474f00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +474f80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34175 +c3b800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +c3b880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34176 +b711832350114502c3120000000000000000 + + +34177 +0000000070024000542500000204055001010402 +000080010000000000000000 + +34178 +b711832450104502c3110000000000000000 + + +34179 +b7125b4b5010451069070000000000000000 +b712db440000000000000000 + +34180 +b7125b4b5018451033fe00000096fc00000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd50403c4ed00003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 +b712db440000000000000000 + +34181 +4f73000000010000000000000377777706616261637573026e6c0000010001 +4f73800000010000000200010377777706616261637573026e6c0000010001c0100002000100015180000c026e7306636f62776562c017c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f26001 + +34182 +b7125b5950114502686e0000000000000000 +b712db540000000000000000 + +34183 +0000000070024000682c00000204055001010402 +000080010000000000000000 + +34184 +b572000000010000000000000377777708736578686176656e026e6c0000010001 +b572800000010000000200000377777708736578686176656e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +34185 +b7125b5a50104502686d0000000000000000 +b712db540000000000000000 + +34186 +b71325bc50104510b29c0000000000000000 +b713a5b30000000000000000 + +34187 +a6980000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a6988000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34188 +b71325bc501845105d94000000961c00000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd50403c4ed00003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 +b713a5b30000000000000000 + +34189 +b0360000000100000000000006737472617573026e6c00000f0001 +b0368000000100000002000206737472617573026e6c00000f0001c00c0002000100015180000c036e7331056773696e74c013c00c00020001000151800006036e7332c02bc02700010001000151800004510473b4c03f00010001000151800004510473b5 + +34190 +80b5000000010000000000000377656d0c6c6f67696e73657276696365026e6c0000010001 +80b5800000010000000200020377656d0c6c6f67696e73657276696365026e6c0000010001c0100002000100015180000e036e7331076e657463617374c01dc01000020001000151800006036e7332c035c03100010001000151800004c2970101c04b00010001000151800004c297012d + +34191 +2e6300000001000000000000116272616e64776565722d776f657264656e026e6c0000010001 +2e6380000001000000030003116272616e64776565722d776f657264656e026e6c0000010001c00c0002000100015180000c036e73310564726f6e65c01ec00c0002000100015180000b036e73310468617661c01ec00c00020001000151800006036e7332c04ec03200010001000151800004d413ddc2c04a00010001000151800004d413ddc6c06100010001000151800004d413ddc7 + +34192 +eef70000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +eef78000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34193 +92b2000000010000000000001262616c616e6365642d73636f726563617264026e6c00000f0001 +92b2800000010000000200021262616c616e6365642d73636f726563617264026e6c00000f0001c00c0002000100015180000a036e733103656964c01fc00c00020001000151800006036e7332c037c0330001000100015180000452c048b6c0490001000100015180000452c048ba + +34194 +b3ba00000001000000000000036e733106726f6f736974026e6c0000010001 +b3ba80000001000000020002036e733106726f6f736974026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d41ac10ac03900010001000151800004d413c182 + +34195 +c54d00000001000000000000036e733106726f6f736974026e6c00001c0001 +c54d80000001000000020002036e733106726f6f736974026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d41ac10ac03900010001000151800004d413c182 + +34196 +8b4200000001000000000000036e733206726f6f736974026e6c0000010001 +8b4280000001000000020002036e733206726f6f736974026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d41ac10ac00c00010001000151800004d413c182 + +34197 +aff800000001000000000000036e733206726f6f736974026e6c00001c0001 +aff880000001000000020002036e733206726f6f736974026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d41ac10ac00c00010001000151800004d413c182 + +34198 +efe700000001000000000000036e733206726f6f736974026e6c0000260001 +efe780000001000000020002036e733206726f6f736974026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d41ac10ac00c00010001000151800004d413c182 + +34199 +b71325ca50114502b2030000000000000000 +b713a5c30000000000000000 + +34200 +bb620000000100000000000003777777087a6f726768617274026e6c0000010001 +bb628000000100000002000203777777087a6f726768617274026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c019c01000020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +34201 +b71325cb50104502b2020000000000000000 +b713a5c30000000000000000 + +34202 +b7030000000100000000000003777777046b706d6702666908656d6561636f7265026e6c0000010001 +b7038403000100000001000003777777046b706d6702666908656d6561636f7265026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +34203 +f09500000001000000000000037777770770617261636f6d026e6c0000010001 +f09580000001000000020000037777770770617261636f6d026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c032 + +34204 +7a66000000010000000000000377777710626c6f656d686f662d706c6569746572026e6c0000010001 +7a66800000010000000200020377777710626c6f656d686f662d706c6569746572026e6c0000010001c01000020001000151800009036e7331026973c021c01000020001000151800006036e7332c039c03500010001000151800004d5852102c04a00010001000151800004d5c41503 + +34205 +3f380000000100000000000007626f75776e6564026e6c00000f0001 +3f388000000100000002000207626f75776e6564026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +34206 +f50a00000001000000000000067368616e6b73026e6c00000f0001 +f50a80000001000000020000067368616e6b73026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02b + +34207 +611900000001000000000000037777770a737472616174686f6572026e6c0000010001 +611980000001000000020002037777770a737472616174686f6572026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efa011c04a00010001000151800004d5efa075 + +34208 +d3e2000000010000000000000e63656e747261616c626568656572026e6c00000f0001 +d3e2800000010000000300030e63656e747261616c626568656572026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +34209 +9fb60000000100000000000005696e666f72026e6c00000f0001 +9fb68000000100000002000205696e666f72026e6c00000f0001c00c00020001000151800010036e733109756e69736572766572c012c00c00020001000151800006036e7332c02ac02600010001000151800004c3454b03c04200010001000151800004d119a2fa + +34210 +870600000001000000000000026e73076e656473746174026e6c0000010001 +870680000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34211 +dda800000001000000000000036e7332076e656473746174026e6c0000010001 +dda880000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34212 +f7af00000001000000000000036e7334076e656473746174026e6c0000010001 +f7af80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34213 +7aef00000001000000000000036e7333076e656473746174026e6c0000010001 +7aef80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34214 +940900000001000000000000037777770674696261636f026e6c0000010001 +940980000001000000020000037777770674696261636f026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c030 + +34215 +9abd0000000100000000000003777777107665726f6e6963616d6167617a696e65026e6c0000010001 +9abd8000000100000002000203777777107665726f6e6963616d6167617a696e65026e6c0000010001c0100002000100015180000f036e7331086261736971776562c021c01000020001000151800006036e7332c039c0350001000100015180000452c04516c0500001000100015180000452c04542 + +34216 +a83b00000001000000000000026e73066863636e6574026e6c0000010001 +a83b80000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +34217 +badd00000001000000000000026e73066863636e6574026e6c0000260001 +badd80000001000000020000026e73066863636e6574026e6c0000260001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +34218 +098f00000001000000000000036e73330767617574656e67026e6c0000010001 +098f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34219 +d519000000010000000000000d76616e2d7765726b686f76656e026e6c00000f0001 +d519800000010000000200020d76616e2d7765726b686f76656e026e6c00000f0001c00c0002000100015180001404777777320c6e656465726c616e64776562c01ac00c0002000100015180000d036e73320670726f6c616ec01ac02e00010001000151800004d5d381c2c04e00010001000151800004d4ccd4e7 + +34220 +52ea000000010000000000000b77696c6c65646f6e6b6572026e6c00000f0001 +52ea800000010000000200020b77696c6c65646f6e6b6572026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +34221 +438300000001000000000000087665737464696a6b026e6c00000f0001 +438380000001000000020002087665737464696a6b026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc015c00c00020001000151800006036e7332c02dc02900010001000151800004c3558244c04200010001000151800004c3558245 + +34222 +229b00000001000000000000026e73086d656761706c6578026e6c0000010001 +229b80000001000000020002026e73086d656761706c6578026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004504f6101c03a00010001000151800004504f6102 + +34223 +679900000001000000000000036e7331086d656761706c6578026e6c0000010001 +679980000001000000020002036e7331086d656761706c6578026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004504f6101c00c00010001000151800004504f6102 + +34224 +708100000001000000000000036e733503777873026e6c0000010001 +708180000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34225 +63ab00000001000000000000046e73303803777873026e6c0000010001 +63ab80000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +34226 +d96c00000001000000000000046e73303903777873026e6c0000010001 +d96c80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +34227 +80d200000001000000000000037777770763616e6e6f6e73026e6c0000010001 +80d280000001000000020002037777770763616e6e6f6e73026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c018c01000020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +34228 +714000000001000000000000076d696e76726f6d026e6c0000020001 +714080000001000000020001076d696e76726f6d026e6c0000020001c00c00020001000151800006036e7331c00cc00c0002000100015180000d036e7334036b706e036e657400c0280001000100015180000493b51441 + +34229 +59a0000000010000000000000d706f726e6f706c6161746a65730a6164756c746c696e6b73026e6c0000010001 +59a0800000010000000200000d706f726e6f706c6161746a65730a6164756c746c696e6b73026e6c0000010001c01a00020001000151800012026e73096e6c686f7374696e67036e657400c01a00020001000151800006036e7331c03c + +34230 +1dc00000000100000000000005737461747308696e672d6562636e026e6c0000010001 +1dc08000000100000002000205737461747308696e672d6562636e026e6c0000010001c0120002000100015180000a036e733103696e67c01bc01200020001000151800006036e7332c033c02f0001000100015180000491dd19c2c0450001000100015180000491dd5dc2 + +34231 +470c000000010000000000000377777705692d737973026e6c0000010001 +470c800000010000000300000377777705692d737973026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c02ec01000020001000151800006036e7333c02e + +34232 +5ade00000001000000000000056861696a65026e6c0000010001 +5ade80000001000000020002056861696a65026e6c0000010001c00c0002000100015180000e026e73086475746368636f77c012c00c00020001000151800006036e7332c029c02600010001000151800004d9aa2158c0400001000100015180000452a1510d + +34233 +7e3a0000000100000000000003777777127269657464696a6b2d7665696c696e67656e026e6c0000010001 +7e3a8000000100000002000003777777127269657464696a6b2d7665696c696e67656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03d + +34234 +548200000001000000000000055045555445024e4c00000f0001 +548280000001000000020000055045555445024e4c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +34235 +787f000000010000000000000377777710726976657276616c6c657972616e6368026e6c0000010001 +787f800000010000000200020377777710726976657276616c6c657972616e6368026e6c0000010001c0100002000100015180000f026e7309656174736572766572c021c01000020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +34236 +2c6d000000010000000000000864656c746170616b026e6c0000ff0001 +2c6d800000010000000200010864656c746170616b026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +34237 +4a17000000010000000000000a77776f63756d756c7573026e6c00000f0001 +4a17800000010000000200020a77776f63756d756c7573026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +34238 +c409000000010000000000001376616e64656e626f6f676161726467726f6570026e6c00000f0001 +c409800000010000000200021376616e64656e626f6f676161726467726f6570026e6c00000f0001c00c00020001000151800014026e730e64617461636f6e686f7374696e67c020c00c00020001000151800006036e7332c037c03400010001000151800004d43d2934c05400010001000151800004d468d143 + +34239 +3a95000000010000000000000b6d65726469616e6d6b7467026e6c00000f0001 +3a95840300010000000100000b6d65726469616e6d6b7467026e6c00000f0001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +34240 +35c200000001000000000000066479636f7265026e6c00000f0001 +35c280000001000000030003066479636f7265026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c013c00c000200010001518000070470726932c02cc00c000200010001518000070470726933c02cc027000100010001518000049a0ff9a6c045000100010001518000049a0ff9aac058000100010001518000049a0ff9ae + +34241 +09f100000001000000000000036e73310470696e65026e6c0000010001 +09f180000001000000020002036e73310470696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +34242 +9bbe0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +9bbe8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34243 +423c00000001000000000000036e73320470696e65026e6c0000010001 +423c80000001000000020002036e73320470696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +34244 +6d68000000010000000000000377777707646967696d6d6f026e6c0000010001 +6d68800000010000000300000377777707646967696d6d6f026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c032c0100002000100015180000805646e733132c032 + +34245 +6f40000000010000000000000377777705646964646c026e6c0000010001 +6f40800000010000000300000377777705646964646c026e6c0000010001c0100002000100015180000f036e7332066d63732d686802646500c01000020001000151800005026e73c02ec0100002000100015180001b026e73096f6c64656e6275726708636974796c696e65036e657400 + +34246 +fb6d00000001000000000000036e7331086c65617365776562026e6c0000010001 +fb6d80000001000000030002036e7331086c65617365776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800012036e7333086c65617365776562036f726700c00c000100010001518000043ed44079c03b000100010001518000043ed4407a + +34247 +b14900000001000000000000036e7332086c65617365776562026e6c0000010001 +b14980000001000000030002036e7332086c65617365776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800012036e7333086c65617365776562036f726700c02d000100010001518000043ed44079c00c000100010001518000043ed4407a + +34248 +f11528000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b7768697a7a646f6d706463026e6c00002100010000025800230000006401850c7768697a7a646f6d706463300b7768697a7a646f6d706463026e6c00 +f115a8040000000000000000 + +34249 +c67a0000000100000000000003636673026e6c0000ff0001 +c67a8000000100000003000103636673026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +34250 +00000000700240000baa0000020405b401010402 +000080010000000000000000 + +34251 +b71514c55010447068130000000000000000 +b71594c40000000000000000 + +34252 +b71514c550184470206000000096ac6a000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0089403c52090003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 +b71594c40000000000000000 + +34253 +dbb5000000010000000000000573746174730a6c61646f747374617473026e6c0000010001 +dbb5800000010000000300000573746174730a6c61646f747374617473026e6c0000010001c0120002000100015180001505646e7331300961637469766569737003636f6d00c0120002000100015180000805646e733131c037c0120002000100015180000805646e733132c037 + +34254 +0d1c0000000100000000000009626f6f6e656b616d70026e6c0000ff0001 +0d1c8000000100000002000209626f6f6e656b616d70026e6c0000ff0001c00c0002000100015180000c036e733105636176656fc016c00c00020001000151800006036e7332c02ec02a000100010001518000045112a002c042000100010001518000045112a102 + +34255 +21dd0000000100000000000009652d6c756e61746963026e6c0000010001 +21dd8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34256 +f1ea00000001000000000000037777770c6163686d65616865616c7468026e6c0000010001 +f1ea80000001000000030003037777770c6163686d65616865616c7468026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c01dc010000200010001518000070470726932c036c010000200010001518000070470726933c036c031000100010001518000049a0ff9a6c04f000100010001518000049a0ff9aac062000100010001518000049a0ff9ae + +34257 +a56f00000001000000000000036e733104686f6d65026e6c0000010001 +a56f80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +34258 +b71514d350114462677a0000000000000000 +b71594d40000000000000000 + +34259 +94aa00000001000000000000037777770d7472757374796f757265796573026e6c0000010001 +94aa80000001000000030000037777770d7472757374796f757265796573026e6c0000010001c01000020001000151800014036e73310a616c6c646f6d61696e7303636f6d00c01000020001000151800006036e7333c036c01000020001000151800006036e7334c036 + +34260 +000000007002400028780000020405b401010402 +000080010000000000000000 + +34261 +b71514d45010446267790000000000000000 +b71594d40000000000000000 + +34262 +3b900000000100000000000009736d74702d6f75743506787334616c6c026e6c0000010001 +3b908000000100000003000209736d74702d6f75743506787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +34263 +6e0400000001000000000000036e7331086c65617365776562026e6c0000010001 +6e0480000001000000030002036e7331086c65617365776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800012036e7333086c65617365776562036f726700c00c000100010001518000043ed44079c03b000100010001518000043ed4407a + +34264 +b715995c50104470004a0000000000000000 + + +34265 +b715995c50184470d805000000968dfc000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0089403c52090003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 + + +34266 +a8c800000001000000000000036e733109666972737466696e64026e6c0000010001 +a8c880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34267 +a8c900000001000000000000036e733209666972737466696e64026e6c0000010001 +a8c980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34268 +885d0000000100000000000004616a6178066e696b686566026e6c0000010001 +885d8000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +34269 +b715996a50114462ffb00000000000000000 + + +34270 +a0a2000000010000000000000377777707617669616e6574026e6c0000010001 +a0a2800000010000000300030377777707617669616e6574026e6c0000010001c01000020001000151800010036e733109736974656279746573c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c2a55e5ac04800010001000151800004c356781cc05a000100010001518000043ec58016 + +34271 +b715996b50104462ffaf0000000000000000 + + +34272 +b86000000001000000000000037777770a73746f6c696272696473026e6c0000010001 +b86084030001000000010000037777770a73746f6c696272696473026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +34273 +0000000070024000382b0000020405b401010402 +000080010000000000000000 + +34274 +92740000000100000000000003777777126772656964616e75737a6f6e776572696e67026e6c0000010001 +92748000000100000003000303777777126772656964616e75737a6f6e776572696e67026e6c0000010001c01000020001000151800010036e733109736974656279746573c023c01000020001000151800006036e7332c03bc01000020001000151800006036e7333c03bc03700010001000151800004c2a55e5ac05300010001000151800004c356781cc065000100010001518000043ec58016 + +34275 +b71666215010447043370000000000000000 +b716e6240000000000000000 + +34276 +b716662150184470b65200000096f29c000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403b0089403c52090003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c00200000005748495a5a444f4d504443305748495a5a444f4d5044430000 +b716e6240000000000000000 + +34277 +a8cb00000001000000000000036e733109666972737466696e64026e6c0000010001 +a8cb80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34278 +a8cc00000001000000000000036e733209666972737466696e64026e6c0000010001 +a8cc80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34279 +b716662f50114462429e0000000000000000 +b716e6240000000000000000 + +34280 +9ccc00000001000000000000096e646572766c696574026e6c00000f0001 +9ccc80000001000000020002096e646572766c696574026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +34281 +b716663050104462429d0000000000000000 +b716e6340000000000000000 + +34282 +52f1000000010000000000000b6376766f6f726265656c64026e6c0000010001 +52f1840300010000000100000b6376766f6f726265656c64026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +34283 +360d00000001000000000000076f62646e772d6e026e6c00000f000100 +360d80000001000000020002076f62646e772d6e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +34284 +7e4400000001000000000000037777770774686965727279026e6c0000010001 +7e4480000001000000030001037777770774686965727279026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +34285 +568c00000001000000000000176c616e6b686f7273742d746f75776661627269656b656e026e6c0000010001 +568c80000001000000020001176c616e6b686f7273742d746f75776661627269656b656e026e6c0000010001c00c0002000100015180000d026e7307616d6572636f6dc024c00c00020001000151800006036e7331c03bc03800010001000151800004c2b2b20a + +34286 +1f2900000001000000000000037777770e686f6f67636174686572696a6e65026e6c0000010001 +1f2984030001000000010000037777770e686f6f67636174686572696a6e65026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +34287 +877200000001000000000000026e7307616d6572636f6d026e6c0000010001 +877280000001000000020001026e7307616d6572636f6d026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2b2b20a + +34288 +43b900000001000000000000036e733107616d6572636f6d026e6c0000010001 +43b980000001000000020001036e733107616d6572636f6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2b20a + +34289 +e2a30000000100000000000006746f6c6b656e026e6c00000f0001 +e2a38000000100000002000206746f6c6b656e026e6c00000f0001c00c00020001000151800010036e7331096d6173746572646e73c013c00c00020001000151800006036e7332c02bc027000100010001518000045054f347c043000100010001518000043e94a047 + +34290 +000000007002fc009d690000020405b401010402 +000080010000000000000000 + +34291 +ea6100000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001 +ea6184030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001c05300060001000038400036026e730f646f6d61696e2d7265676973747279c0530a686f73746d6173746572c06a0bf1e540000070800000384000278d0000003840 + +34292 +498400000001000000000000076163687469656e026e6c00000f0001 +498480000001000000020002076163687469656e026e6c00000f0001c00c0002000100015180000d036e73310662616c616e73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d5f72d87c04100010001000151800004d5f72d88 + +34293 +5460000000010000000000000c76616e64656e626f67657264026e6c0000010001 +5460800000010000000200000c76616e64656e626f67657264026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +34294 +12000000000100000000000009652d6c756e61746963026e6c0000010001 +12008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34295 +7ed3000000010000000000000377777706666f6b73756b026e6c0000010001 +7ed3800000010000000200020377777706666f6b73756b026e6c0000010001c0100002000100015180000a036e733103677673c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e1aac04100010001000151800004d4ccc646 + +34296 +22a00000000100000000000009652d6c756e61746963026e6c0000010001 +22a08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34297 +2aa80000000100000000000009652d6c756e61746963026e6c0000010001 +2aa88000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34298 +b716edb85010fc00254e0000000000000000 + + +34299 +b716edb85004fc00255a0000000000000000 + + +34300 +460e00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +460e80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34301 +67fa00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +67fa80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34302 +219100000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001 +219184030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463731247696c646576616172742d576f657264656e026e6c0000060001c05300060001000038400036026e730f646f6d61696e2d7265676973747279c0530a686f73746d6173746572c06a0bf1e540000070800000384000278d0000003840 + +34303 +2cf50000000100000000000005696e666f72026e6c00000f0001 +2cf58000000100000002000205696e666f72026e6c00000f0001c00c00020001000151800010036e733109756e69736572766572c012c00c00020001000151800006036e7332c02ac02600010001000151800004c3454b03c04200010001000151800004d119a2fa + +34304 +7bd300000001000000000000037777770c6b65756b656e766973696f6e026e6c0000010001 +7bd380000001000000030003037777770c6b65756b656e766973696f6e026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c03100010001000151800004d5c98015c04c00010001000151800004d5c9bf12c05e00010001000151800004d5ef9c26 + +34305 +950200000001000000000000036e73310767617574656e67026e6c0000010001 +950280000001000000020000036e73310767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34306 +cf0c00000001000000000000036e73320767617574656e67026e6c0000010001 +cf0c80000001000000020000036e73320767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34307 +59760000000100000000000006646e642d6273026e6c0000010001 +59768000000100000002000206646e642d6273026e6c0000010001c00c0002000100015180000d04646e733105692d702d64c013c00c0002000100015180000704646e7332c02cc02700010001000151800004d9124003c04000010001000151800004d9124104 + +34308 +217c0000000100000000000004524e4c41064d494e444546024e4c00000f0001 +217c8000000100000002000204524e4c41064d494e444546024e4c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02c00010001000151800004d9a9e7c6c03e00010001000151800004d9a9e7c5 + +34309 +09b000000001000000000000036e733503777873026e6c0000010001 +09b080000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34310 +74d00000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +74d08000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +34311 +b28800000001000000000000046d61696c15627275676d616e737665727a656b6572696e67656e026e6c0000010001 +b28880000001000000020002046d61696c15627275676d616e737665727a656b6572696e67656e026e6c0000010001c0110002000100015180000f026e7309656174736572766572c027c01100020001000151800006036e7332c03ec03b00010001000151800004d4cb0e42c05600010001000151800004d4cb1221 + +34312 +0f7000000001000000000000036e733105636176656f026e6c0000010001 +0f7080000001000000020002036e733105636176656f026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045112a002c038000100010001518000045112a102 + +34313 +8bb300000001000000000000036e733205636176656f026e6c0000010001 +8bb380000001000000020002036e733205636176656f026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000045112a002c00c000100010001518000045112a102 + +34314 +199400000001000000000000036e73340767617574656e67026e6c0000010001 +199480000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34315 +ceca00000001000000000000026e730b6973642d686f6c6c616e64026e6c0000010001 +ceca80000001000000020002026e730b6973642d686f6c6c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +34316 +e76500000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +e76580000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +34317 +6b1400000001000000000000026e730b6973642d686f6c6c616e64026e6c0000260001 +6b1480000001000000020002026e730b6973642d686f6c6c616e64026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +34318 +358a00000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000260001 +358a80000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +34319 +885e28000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730e6265726b656e626f7363686e6574026e6c000021000100000258001d000000640cc4036673310e6265726b656e626f7363686e6574026e6c00 +885ea8040000000000000000 + +34320 +de62000000010000000000000b7472656e642d706f696e74026e6c00000f0001 +de62800000010000000300010b7472656e642d706f696e74026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +34321 +ceba000000010000000000000d70726f6475637462616e6e657208313233706c617a61026e6c0000010001 +ceba800000010000000200010d70726f6475637462616e6e657208313233706c617a61026e6c0000010001c01a0002000100015180000e036e7331076e6564636f6d70c023c01a00020001000151800011036e7332076e6564636f6d70036f726700c03700010001000151800004c3c1a80d + +34322 +f91b0000000100000000000003777777056275626c7903313233026e6c0000010001 +f91b8000000100000002000203777777056275626c7903313233026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +34323 +9d1800000001000000000000037777770372746c026e6c0000010001 +9d1880000001000000020001037777770372746c026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c014c01000020001000151800011036e733207636c742d756661036e657400c02800010001000151800004c3c1ca77 + +34324 +c15700000001000000000000037777770d61636d652d736f667477617265026e6c0000010001 +c15780000001000000020002037777770d61636d652d736f667477617265026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec01ec01000020001000151800006036e7332c036c03200010001000151800004c3b1f203c05000010001000151800004d4ccf533 + +34325 +063200000001000000000000036c733204656d6167026e6c00000f0001 +063280000001000000020001036c733204656d6167026e6c00000f0001c0100002000100015180000e036e7331076e6564636f6d70c015c01000020001000151800011036e7332076e6564636f6d70036f726700c02900010001000151800004c3c1a80d + +34326 +0000000070024000b2e800000204059801010402 +000080010000000000000000 + +34327 +218c0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +218c8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +34328 +b717c4505010432060f80000000000000000 + + +34329 +b717c450501843209c70000000905f78000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 + + +34330 +b717c45e5011431260650000000000000000 + + +34331 +b1c20000000100000000000004736d747008676c6f62616c7873026e6c00001c0001 +b1c28000000100000002000204736d747008676c6f62616c7873026e6c00001c0001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01100020001000151800006036e7332c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303 + +34332 +12c40000000100000000000005736d74703208676c6f62616c7873026e6c00001c0001 +12c48000000100000002000205736d74703208676c6f62616c7873026e6c00001c0001c01200020001000151800017036e733110736361726c65742d696e7465726e6574c01bc01200020001000151800006036e7332c033c02f00010001000151800004d5ccc302c05200010001000151800004d5ccc303 + +34333 +2bbd000000010000000000000c76616e616b656e64656d6f6e026e6c00000f0001 +2bbd840300010000000100000c76616e616b656e64656d6f6e026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +34334 +03a8000000010000000000000e7269636172646f626172696c6c6f026e6c00000f0001 +03a8800000010000000200020e7269636172646f626172696c6c6f026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c01bc00c00020001000151800006036e7332c032c02f00010001000151800004d453c005c04d00010001000151800004d453c006 + +34335 +b717c45f5010431260640000000000000000 + + +34336 +40e000000001000000000000026e73067a6f6e6e6574026e6c0000010001 +40e080000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +34337 +ea580000000100000000000003777777086e6f6b696166616e026e6c0000010001 +ea588000000100000003000203777777086e6f6b696166616e026e6c0000010001c0100002000100015180000f036e7331086f76657272696465c019c01000020001000151800006036e7333c031c01000020001000151800006036e7332c031c02d00010001000151800004d4ccd5b5c0480001000100015180000451ab0942 + +34338 +9ff0000000010000000000000a54455a554b41434f5250026e6c0000020001 +9ff0840300010000000100000a54455a554b41434f5250026e6c0000020001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +34339 +20a20000000100000000000008686f73746e616d650462696e640000100003 +20a28000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +34340 +89b400000001000000000000037777770a6261642d6b6f6e696e67026e6c0000010001 +89b480000001000000020002037777770a6261642d6b6f6e696e67026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +34341 +3c3c00000001000000000000026e7306787334616c6c026e6c0000010001 +3c3c80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34342 +7cdf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +7cdf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34343 +ecb00000000100000000000005646e732d32056c61646f74026e6c0000010001 +ecb08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34344 +4fb80000000100000000000003706f7008707265776f6e656e026e6c0000010001 +4fb88000000100000003000203706f7008707265776f6e656e026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +34345 +1e1e00000001000000000000036e733206787334616c6c026e6c0000010001 +1e1e80000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +34346 +0000000070024000514e00000204059801010402 +000080010000000000000000 + +34347 +96e400000001000000000000086d6972726f72656407666c6162626572026e6c0000010001 +96e480000001000000030002086d6972726f72656407666c6162626572026e6c0000010001c0150002000100015180000d036e733106776964657873c01dc01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +34348 +5eae000000010000000000000377777706636865657273026e6c0000010001 +5eae800000010000000300010377777706636865657273026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +34349 +b71a45bc501043207def0000000000000000 +b71ac5b40000000000000000 + +34350 +2f5700000001000000000000037777770c746f70686f726f73636f6f70026e6c0000010001 +2f5780000001000000020002037777770c746f70686f726f73636f6f70026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01dc01000020001000151800006036e7332c035c03100010001000151800004d4f1210bc04f00010001000151800004d4f1210c + +34351 +1a420000000100000000000006736c6967726f026e6c00000f0001 +1a428000000100000002000006736c6967726f026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02b + +34352 +b71a45bc501843207c38000000909da8000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 +b71ac5b40000000000000000 + +34353 +5ba600000001000000000000096b756c747572687573026e6c00000f0001 +5ba680000001000000020002096b756c747572687573026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450416028c04500010001000151800004c356780c + +34354 +b71a45ca501143127d5c0000000000000000 +b71ac5c40000000000000000 + +34355 +a5d8000000010000000000000377777708616363656e747573026e6c0000010001 +a5d8800000010000000200020377777708616363656e747573026e6c0000010001c0100002000100015180000d036e73310663617374656cc019c01000020001000151800006036e7332c031c02d00010001000151800004c3558244c04600010001000151800004c3558245 + +34356 +76950000000100000000000005646e732d32056c61646f74026e6c0000010001 +76958000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34357 +b71a45cb501043127d5b0000000000000000 +b71ac5c40000000000000000 + +34358 +1d340000000100000000000008677565726e73657902657407747564656c6674026e6c0000010001 +1d348000000100000005000508677565726e73657902657407747564656c6674026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800006036e7331c015c0180002000100015180000d07647574746e636202746ec018c0180002000100015180000e036e733107737572666e6574c020c0340001000100015180000482a1b401c0460001000100015180000482a1b441c0580001000100015180000482a12111c06a0001000100015180000482a1bc8cc08300010001000151800004c0576a65 + +34359 +0cc80000000100000000000005646e732d32056c61646f74026e6c0000010001 +0cc88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34360 +8758000000010000000000000b627261616d6a6f6e6b657203313072026e6c0000010001 +8758800000010000000200020b627261616d6a6f6e6b657203313072026e6c0000010001c0180002000100015180000f036e73310861746c616e74697ac01cc01800020001000151800006036e7332c034c03000010001000151800004d5efa011c04b00010001000151800004d5efa075 + +34361 +493400000001000000000000037777770f6e65747a6f2d616d7374657264616d026e6c0000010001 +493480000001000000030000037777770f6e65747a6f2d616d7374657264616d026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c03ac0100002000100015180000805646e733132c03a + +34362 +61f60000000100000000000005646e732d32056c61646f74026e6c0000010001 +61f68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34363 +000000007002400019b400000204059801010402 +000080010000000000000000 + +34364 +b71b20f9501043206b170000000000000000 +b71ba0f30000000000000000 + +34365 +3a0500000001000000000000036e73310c6e6578742d656c656d656e74026e6c0000010001 +3a0580000001000000020002036e73310c6e6578742d656c656d656e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004515ea104c03f00010001000151800004515ea105 + +34366 +5c6c00100001000000000001036e73310774697363616c69026e6c00000100010000290800000080000000 +5c6c80000001000000030003036e73310774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f133250000291000000000000000 + +34367 +cf0e00000001000000000000026e73096379626572636f6d6d026e6c0000010001 +cf0e80000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +34368 +2c6d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2c6d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34369 +b71b20f9501843202b3000000090dbd8000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 +b71ba0f30000000000000000 + +34370 +c4f800000001000000000000037777770d77616c6c737472656574776562026e6c0000010001 +c4f880000001000000020002037777770d77616c6c737472656574776562026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +34371 +e0c70010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +e0c78000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +34372 +4f91000000010000000000000377777710696e746572656666656b7466756e6473026e6c0000010001 +4f91800000010000000200020377777710696e746572656666656b7466756e6473026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c021c01000020001000151800006036e7332c038c03500010001000151800004d5e38d0ac05200010001000151800004d5e38205 + +34373 +ee12000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +ee12800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +34374 +b71b2107501143126a840000000000000000 +b71ba1030000000000000000 + +34375 +a0c500000001000000000000136a6f682d656e7363686564652d7374616d7073026e6c00000f0001 +a0c580000001000000020000136a6f682d656e7363686564652d7374616d7073026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c03a + +34376 +b71b2108501043126a830000000000000000 +b71ba1030000000000000000 + +34377 +177400100001000000000001036e73320774697363616c69026e6c00000100010000290800000080000000 +177480000001000000030003036e73320774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f133250000291000000000000000 + +34378 +e31b00000001000000000000037777770d747269626f746563686e69656b026e6c0000010001 +e31b80000001000000020000037777770d747269626f746563686e69656b026e6c0000010001c0100002000100015180000c026e7306766576696461c01ec01000020001000151800006036e7332c035 + +34379 +ece9000000010000000000000e74656b656e6275726f736d696e6b026e6c0000ff0001 +ece9800000010000000200020e74656b656e6275726f736d696e6b026e6c0000ff0001c00c00020001000151800011026e730b6973642d686f6c6c616e64c01bc00c00020001000151800006036e7332c032c02f00010001000151800004d5e38d0ac04c00010001000151800004d5e38205 + +34380 +26000000000100000000000003767664026e6c00000f0001 +26008000000100000002000003767664026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c028 + +34381 +40d5000000010000000000000664796e736f6c026e6c0000060001 +40d5840300010000000100000664796e736f6c026e6c0000060001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +34382 +449400000001000000000000037777770b76762d6e756e7370656574026e6c0000010001 +449480000001000000020000037777770b76762d6e756e7370656574026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c033 + +34383 +374d00100001000000000001026e7306787334616c6c026e6c00000100010000290800000080000000 +374d80000001000000030003026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +34384 +e73700100001000000000001036e733206787334616c6c026e6c00000100010000290800000080000000 +e73780000001000000030003036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d09630000291000000000000000 + +34385 +505300000001000000000000047072693103646e73067073696e6574026e6c0000010001 +505380000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +34386 +61c6000000010000000000000c636f6e666967757261746f72046f70656c026e6c0000010001 +61c6800000010000000200020c636f6e666967757261746f72046f70656c026e6c0000010001c0190002000100015180000c036e73310564656d6f6ec01ec01900020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +34387 +545e00000001000000000000047072693203646e73067073696e6574026e6c0000010001 +545e80000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +34388 +aa2f00000001000000000000047072693303646e73067073696e6574026e6c0000010001 +aa2f80000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +34389 +686f00000001000000000000037777770f696e6e6f7465632d73797374656d73026e6c0000010001 +686f80000001000000020002037777770f696e6e6f7465632d73797374656d73026e6c0000010001c01000020001000151800009026e7303746478c020c01000020001000151800006036e7331c037c03400010001000151800004c389d60ac04900010001000151800004c389d70a + +34390 +7b540000000100000000000005646e732d32056c61646f74026e6c0000010001 +7b548000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34391 +81c400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +81c480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34392 +918d0000000100000000000008736372616d626c6505796b6f6f6e026e6c0000010001 +918d8000000100000002000008736372616d626c6505796b6f6f6e026e6c0000010001c0150002000100015180000f036e733105796b6f6f6e036e657400c01500020001000151800006036e7332c033 + +34393 +b8770000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b8778000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34394 +5f8c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +5f8c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34395 +966200000001000000000000046d61696c06646564726f6d026e6c0000010001 +966280000001000000020002046d61696c06646564726f6d026e6c0000010001c0110002000100015180000f026e7309656174736572766572c018c01100020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +34396 +55c928000001000000010000026e6c00000600010664796e736f6c026e6c00000100010000025800040a000002 +55c9a8040000000000000000 + +34397 +5904000000010000000000000c737469636874696e6770646c026e6c0000010001 +5904800000010000000200000c737469636874696e6770646c026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c033 + +34398 +3a9a0000000100000000000007766462636f6d70026e6c00001c0001 +3a9a8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +34399 +953a00100001000000000001034e53320743495354524f4e024e4c00000100010000290800000000000000 +953a80000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +34400 +c2f800100001000000000001034e53320743495354524f4e024e4c00002600010000290800000000000000 +c2f880000001000000020003034e53320743495354524f4e024e4c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +34401 +0000000070024000c1f20000020405b401010402 +000080010000000000000000 + +34402 +9b66000000010000000000000466646467026e6c0000010001 +9b66800000010000000200020466646467026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c011c00c00020001000151800006036e7331c028c02500010001000151800004504f6101c03f00010001000151800004504f6102 + +34403 +892a00000001000000000000036e7332086d65646961776562026e6c0000010001 +892a80000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +34404 +a31b0000000100000000000007726f78616e6e61026e6c0000ff0001 +a31b8000000100000002000007726f78616e6e61026e6c0000ff0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02e + +34405 +b71bae6b5010447084af0000000000000000 + + +34406 +93f400000001000000000000034e53320743495354524f4e024e4c0000010001 +93f480000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34407 +cacf00000001000000000000034e53320743495354524f4e024e4c0000260001 +cacf80000001000000020002034e53320743495354524f4e024e4c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34408 +e934000000010000000000000477756d6e07776567656e6572026e6c0000010001 +e934800000010000000300020477756d6e07776567656e6572026e6c0000010001c0110002000100015180000e036e7331076e657463617374c019c01100020001000151800006036e7332c031c0110002000100015180000d036e7332036b706e036e657400c02d00010001000151800004c2970101c04700010001000151800004c297012d + +34409 +2f1f0000000100000000000003777777077768656b616d70026e6c0000010001 +2f1f8000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +34410 +b71bae6b50184470db5a0000008f3280000000010001000000000f313230323539303834323839382d330000f900010f313230323539303834323839382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdc9403c4f490003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 + + +34411 +1dfb00000001000000000000026e73076e656473746174026e6c0000010001 +1dfb80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34412 +a3f40000000100000000000008766572736174656c026e6c00000f0001 +a3f48000000100000002000108766572736174656c026e6c00000f0001c00c00020001000151800012036e733108766572736174656c03636f6d00c00c0002000100015180000c036e73310563736e6574c015c04700010001000151800004c2451012 + +34413 +b71bae7950114462841d0000000000000000 + + +34414 +0dc800000001000000000000037777770a6461726b6c6f76657273026e6c0000010001 +0dc880000001000000020002037777770a6461726b6c6f76657273026e6c0000010001c0100002000100015180000b036e7331046e732d31c01bc01000020001000151800006036e7332c033c02f000100010001518000045045a0cdc04600010001000151800004d4cceec8 + +34415 +000000007002400076f80000020405b401010402 +000080010000000000000000 + +34416 +73f800000001000000000000026e73076e656473746174026e6c0000010001 +73f880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34417 +a13900000001000000000000036e7333076e656473746174026e6c0000010001 +a13980000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34418 +acc600000001000000000000037777770763616e6e6f6e73026e6c0000010001 +acc680000001000000020002037777770763616e6e6f6e73026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c018c01000020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +34419 +b71bae7a50104462841c0000000000000000 + + +34420 +fe7700100001000000000001036e7332076e656473746174026e6c00000100010000290800000080000000 +fe7780000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34421 +870300100001000000000001036e7334076e656473746174026e6c00000100010000290800000080000000 +870380000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34422 +b71c76fc5010447071230000000000000000 +b71cf6f40000000000000000 + +34423 +105d00000001000000000000036e733208726f616473696465026e6c0000010001 +105d80000001000000020001036e733208726f616473696465026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180001108726f6164736964650564656d6f6ec019c02d00010001000151800004d973c077 + +34424 +ce220000000100000000000003777777067069736b7574026e6c0000010001 +ce228000000100000002000203777777067069736b7574026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e415c0470001000100015180000451046014 + +34425 +58f6000000010000000000000c7777772c617175616d6f7265026e6c0000010001 +58f6840300010000000100000c7777772c617175616d6f7265026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +34426 +886728000001000000010000026e6c0000060001055f6c646170045f7463702461653133643537312d333532662d346137612d623962362d31366231383634363139353007646f6d61696e73065f6d736463730e6265726b656e626f7363686e6574026e6c000021000100000258001d000000640185036673310e6265726b656e626f7363686e6574026e6c00 +8867a8040000000000000000 + +34427 +02cf000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +02cf800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +34428 +814d00000001000000000000037777770a686974626f6f73746572026e6c0000010001 +814d80000001000000020000037777770a686974626f6f73746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +34429 +b71c76fc5018447011cf0000008fe780000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdca403c4f4a0003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 +b71cf6f40000000000000000 + +34430 +26bd0000000100000000000005736d7470310378626e024e4c0000010001 +26bd8000000100000002000005736d7470310378626e024e4c0000010001c0120002000100015180000f036e73310571696e6970036e657400c01200020001000151800006036e7332c02e + +34431 +c4d7000000010000000000000d6177736265746572776f6e656e026e6c00000f0001 +c4d7800000010000000200020d6177736265746572776f6e656e026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c01ac00c00020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +34432 +5d87000000010000000000000f64616b76656e74696c61746f72656e1376656e74696c61746f72656e2d676576656b65026e6c0000010001 +5d87800000010000000200020f64616b76656e74696c61746f72656e1376656e74696c61746f72656e2d676576656b65026e6c0000010001c01c0002000100015180000a036e733103696166c030c01c00020001000151800006036e7332c048c044000100010001518000045059e040c05a000100010001518000045059ee03 + +34433 +15a900000001000000000000037777770462656566026e6c0000010001 +15a980000001000000030002037777770462656566026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +34434 +800c00000001000000000000037777770c6c656b6b657273757266656e026e6c0000010001 +800c80000001000000030003037777770c6c656b6b657273757266656e026e6c0000010001c0100002000100015180000b04646e733103766970c01dc0100002000100015180000704646e7332c036c0100002000100015180000704646e7333c036c03100010001000151800004d44fe803c04800010001000151800004c3f5c782c05b00010001000151800004d44ff303 + +34435 +abda000000010000000000000377777706787334616c6c026e6c0000010001 +abda800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +34436 +b71c770a5011446270910000000000000000 +b71cf7040000000000000000 + +34437 +44f2000000010000000000000b6d61726b74706c61617473026e6c00000f0001 +44f2800000010000000200000b6d61726b74706c61617473026e6c00000f0001c00c0002000100015180000f036e733105796b6f6f6e036e657400c00c00020001000151800006036e7332c030 + +34438 +a38e00000001000000000000026e7307616d6572636f6d026e6c0000010001 +a38e80000001000000020001026e7307616d6572636f6d026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2b2b20a + +34439 +a8a700000001000000000000036e733107616d6572636f6d026e6c0000010001 +a8a780000001000000020001036e733107616d6572636f6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2b20a + +34440 +303f0000000100000000000010737061616e73657761746572686f6e64026e6c00000f0001 +303f8000000100000002000010737061616e73657761746572686f6e64026e6c00000f0001c00c00020001000151800017036e73310d696e746572726567697374657203636f6d00c00c00020001000151800006036e7332c035 + +34441 +000000007002400026c80000020405b401010402 +000080010000000000000000 + +34442 +2cc600000001000000000000026e7306787334616c6c026e6c0000010001 +2cc680000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34443 +b71c770b5010446270900000000000000000 +b71cf7040000000000000000 + +34444 +3b00000000010000000000000b6361726565726665766572026e6c00000f000100 +3b00800000010000000200020b6361726565726665766572026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c018c00c00020001000151800006036e7332c02fc02c00010001000151800004d453c005c04a00010001000151800004d453c006 + +34445 +a27b0000000100000000000003777777056f6f6b696e026e6c0000010001 +a27b8000000100000002000003777777056f6f6b696e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c030 + +34446 +b71e36195010447061d40000000000000000 +b71eb6140000000000000000 + +34447 +0000000070024000ab3200000204059801010402 +000080010000000000000000 + +34448 +0524000000010000000000000c7065616e75747367616d6573026e6c00000f000100 +0524800000010000000200000c7065616e75747367616d6573026e6c00000f0001c00c00020001000151800016036e73310c6d6567612d686f7374696e6703636f6d00c00c00020001000151800006036e7332c031 + +34449 +6465000000010000000000000462757061027330026e6c0000010001 +6465800000010000000200020462757061027330026e6c0000010001c0110002000100015180000d026e73076e656473746174c014c01100020001000151800006036e7333c02bc02800010001000151800004d4482615c04100010001000151800004d5c4021d + +34450 +8e7e00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +8e7e80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +34451 +b71ee7585010432036330000000000000000 + + +34452 +3c0300100001000000000001026e7308767575727765726b026e6c00002600010000290800000000000000 +3c0380000001000000030002026e7308767575727765726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +34453 +322800000001000000000000037777770b6b6f6d6a657370656c656e026e6c0000010001 +322880000001000000030003037777770b6b6f6d6a657370656c656e026e6c0000010001c0100002000100015180000e076e73617574683103626974c01cc0100002000100015180000a076e736175746832c038c0100002000100015180000a076e736175746833c038c03000010001000151800004d5880c33c04a00010001000151800004d5880c3bc06000010001000151800004d4ccc00b + +34454 +b71ee758501843200b2b00000090c5f8000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 + + +34455 +b71e361950184470a9800000008f4080000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdca403c4f4a0003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 +b71eb6140000000000000000 + +34456 +e9f30000000100000000000011626f6f6e73747261737065656c676f6564026e6c0000010001 +e9f38000000100000002000211626f6f6e73747261737065656c676f6564026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ec00c00020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +34457 +25f100000001000000000000046e73303803777873026e6c0000010001 +25f180000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +34458 +b71ee7665011431235a00000000000000000 + + +34459 +4fb200000001000000000000036e733503777873026e6c0000010001 +4fb280000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34460 +b71e36275011446261420000000000000000 +b71eb6240000000000000000 + +34461 +b71ee76750104312359f0000000000000000 + + +34462 +576a00000001000000000000046e73303903777873026e6c0000010001 +576a80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +34463 +abee00000001000000000000116161782d73703233302d6173642d30303107616167726f6570026e6c0000010001 +abee80000001000000020000116161782d73703233302d6173642d30303107616167726f6570026e6c0000010001c01e0002000100015180000d036e7330036f347303636f6d00c01e00020001000151800006036e7331c03e + +34464 +9608000000010000000000000676696e646578026e6c0000010001 +9608800000010000000300030676696e646578026e6c0000010001c00c0002000100015180000b036e733104696c7365c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc027000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +34465 +b71e36285010446261410000000000000000 +b71eb6240000000000000000 + +34466 +3d2800000001000000000000037777770964616e736f6d6d6572026e6c0000010001 +3d2880000001000000020000037777770964616e736f6d6d6572026e6c0000010001c010000200010001518000130761757468323030026e73027575036e657400c0100002000100015180000a0761757468323130c036 + +34467 +e64300000001000000000000085f6b706173737764045f756470126772616669646174615f646576656e746572026e6c0000060001 +e64384030001000000010000085f6b706173737764045f756470126772616669646174615f646576656e746572026e6c0000060001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +34468 +000000007002400054a900000204059801010402 +000080010000000000000000 + +34469 +830a00000001000000000000026e7308767575727765726b026e6c0000260001 +830a80000001000000030001026e7308767575727765726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +34470 +bb1f0000000100000000000003777777086c696e6b74697073026e6c0000010001 +bb1f8000000100000002000203777777086c696e6b74697073026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +34471 +5b190010000100000000000108717569636b6e6574026e6c0000ff00010000290800000000000000 +5b198000000100000003000308717569636b6e6574026e6c0000ff0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c00020001000151800014036e73300a6d756c74696b6162656c036e657400c0290001000100015180000450f2e002c0460001000100015180000450f2e0060000291000000000000000 + +34472 +b71f842f5010432042d20000000000000000 + + +34473 +5e8f0000000100000000000003777777066b6c6f656e73026e6c0000010001 +5e8f8000000100000003000103777777066b6c6f656e73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +34474 +b71f842f50184320da9b000000900428000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 + + +34475 +e6ef0000000100000000000008626173737465696e026e6c00000f0001 +e6ef8000000100000002000008626173737465696e026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c030 + +34476 +b71f843d50114312423f0000000000000000 + + +34477 +ba6b0000000100000000000008717569636b6e6574026e6c0000ff0001 +ba6b8000000100000003000208717569636b6e6574026e6c0000ff0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c00020001000151800014036e73300a6d756c74696b6162656c036e657400c0290001000100015180000450f2e002c0460001000100015180000450f2e006 + +34478 +b71f843e50104312423e0000000000000000 + + +34479 +763100000001000000000000036e7335046372696f026e6c0000010001 +763180000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34480 +854e00000001000000000000036e7336046372696f026e6c0000010001 +854e80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34481 +a83b000000010000000000000377777703776562026e6c0000010001 +a83b800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +34482 +638600000001000000000000036e7331046372696f026e6c0000010001 +638680000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34483 +684300000001000000000000036e7332046372696f026e6c0000010001 +684380000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34484 +462a00000001000000000000037777770a72656372656174696566026e6c0000010001 +462a80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +34485 +7ec800000001000000000000036e7335046372696f026e6c0000010001 +7ec880000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34486 +cc9300000001000000000000036e7336046372696f026e6c0000010001 +cc9380000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34487 +311400000001000000000000036e7331046372696f026e6c0000010001 +311480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34488 +b5a300000001000000000000036e7332046372696f026e6c0000010001 +b5a380000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34489 +d5ed0000000100000000000007686f6c69646179026e6c00000f0001 +d5ed8000000100000002000207686f6c69646179026e6c00000f0001c00c00020001000151800012026e730c686f6c696461796d65646961c014c00c00020001000151800006036e7333c02bc028000100010001518000049265424dc046000100010001518000045054ebbf + +34490 +aa8500000001000000000000076d656d62657273056c79636f73026e6c0000010001 +aa8580000001000000020000076d656d62657273056c79636f73026e6c0000010001c0140002000100015180001106646e73312d31056c79636f7302646500c0140002000100015180000906646e73322d31c035 + +34491 +2ffd0000000100000000000003777777097361666573746f7265026e6c0000010001 +2ffd8000000100000002000003777777097361666573746f7265026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c031 + +34492 +00000000700240005bc700000204059801010402 +000080010000000000000000 + +34493 +9fa100000001000000000000037777770c7676766e6f6f726477696a6b026e6c0000010001 +9fa180000001000000020000037777770c7676766e6f6f726477696a6b026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c035 + +34494 +b71fffa150104320ce7d0000000000000000 + + +34495 +0000000060022238ed610000020405b40000 +000080010000000000000000 + +34496 +b71fffa150184320b59e00000090b4d0000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403affca403c514a0003000000314e544c4d535350000100000097b208e00e000e002300000003000300200000004653314245524b454e424f5343484e45540000 + + +34497 +996c000000010000000000000377777703686268026e6c0000010001 +996c800000010000000200000377777703686268026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +34498 +d30d000000010000000000000c6174656c6965726475746368026e6c00000f0001 +d30d800000010000000200000c6174656c6965726475746368026e6c00000f0001c00c0002000100015180001208617869707265737306787334616c6cc019c00c0002000100015180001403646e730a686172696e677374616403636f6d00 + +34499 +ce0100000001000000000000036e733107737572666e6574026e6c0000010001 +ce0180000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +34500 +b720f253501022385b9a0000000000000000 + + +34501 +b720f25350182238373e000000253f7f000000010000000000001074726f66656f2d616c6661726f6d656f026e6c0000060001 + + +34502 +251c000000010000000000000369726308697263776f726c64026e6c0000010001 +251c800000010000000200000369726308697263776f726c64026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +34503 +e58300000001000000000000095745524b4b414d45520f646f7669616e75736b616e746f6f72026e6c0000060001 +e58384030001000000010000095745524b4b414d45520f646f7669616e75736b616e746f6f72026e6c0000060001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +34504 +b71fffaf50114312cdea0000000000000000 + + +34505 +87e100000001000000000000036e7332076e656473746174026e6c0000010001 +87e180000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34506 +424300000001000000000000036e7334076e656473746174026e6c0000010001 +424380000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34507 +02400000000100000000000009652d6c756e61746963026e6c0000010001 +02408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34508 +b720f2bc501022385b0a0000000000000000 + + +34509 +b720f2bc501122385b090000000000000000 + + +34510 +b71fffb050104312cde90000000000000000 + + +34511 +b720f2bd501022385b080000000000000000 + + +34512 +50710000000100000000000003777777156469636b736765696c657365787878706167696e61026e6c0000010001 +50718000000100000002000203777777156469636b736765696c657365787878706167696e61026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec026c01000020001000151800006036e7332c03ec03a00010001000151800004c3b1f203c05800010001000151800004d4ccf533 + +34513 +191a000000010000000000000377777709706f726e6f63616d73026e6c0000010001 +191a800000010000000200020377777709706f726e6f63616d73026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01ac01000020001000151800006036e7332c032c02e00010001000151800004d4f1210bc04c00010001000151800004d4f1210c + +34514 +316a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +316a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34515 +810c0000000100000000000006787334616c6c026e6c00000f0001 +810c8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +34516 +7de1000000010000000000000377777719656e65726769652d736572766963652d616d7374657264616d026e6c0000010001 +7de1800000010000000200020377777719656e65726769652d736572766963652d616d7374657264616d026e6c0000010001c0100002000100015180000b04646e733103627367c02ac0100002000100015180000704646e7332c043c03e000100010001518000043e3a8553c055000100010001518000043e3a8554 + +34517 +97ad0000000100000000000003746178066b6c75776572026e6c0000010001 +97ad8000000100000002000003746178066b6c75776572026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02f + +34518 +52190010000100000000000107616e74656e6e61026e6c00000100010000290800000080000000 +52198000000100000002000207616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd130000291000000000000000 + +34519 +000328000001000200000000026e6c0000060001095745524b4b414d45520f646f7669616e75736b616e746f6f72026e6c00000500fe000000000000c01400010001000000000004c0a80005 +0003a8040000000000000000 + +34520 +ebd6000000010000000000000c77696c6c666d6465626f656b026e6c00000f0001 +ebd6840300010000000100000c77696c6c666d6465626f656b026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +34521 +59d200000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +59d280000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +34522 +19b000000001000000000000036e73340767617574656e67026e6c0000010001 +19b080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34523 +09be00000001000000000000036e73340767617574656e67026e6c0000010001 +09be80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34524 +3bda0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3bda8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34525 +f20f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +f20f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34526 +fbad0000000100000000000003777777036e6777026e6c0000010001 +fbad8000000100000002000003777777036e6777026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c02c + +34527 +0bba00000001000000000000036e73310774697363616c69026e6c0000010001 +0bba80000001000000030002036e73310774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f13325 + +34528 +af3300000001000000000000036e7332076e656473746174026e6c0000010001 +af3380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34529 +d8ed00000001000000000000036e7334076e656473746174026e6c0000010001 +d8ed80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34530 +994500000001000000000000046d61696c09736f776b65726b656e026e6c0000010001 +994580000001000000020001046d61696c09736f776b65726b656e026e6c0000010001c0110002000100015180000d026e7307616e74656e6e61c01bc0110002000100015180001306696e666f726d07616e74656e6e6102646b00c02f00010001000151800004d995dd13 + +34531 +1eaa00000001000000000000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730f444f5649414e55534b414e544f4f52024e4c0000210001 +1eaa84030001000000010000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730f444f5649414e55534b414e544f4f52024e4c0000210001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +34532 +02600000000100000000000009652d6c756e61746963026e6c0000010001 +02608000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34533 +a97b000000010000000000000732737465706276026e6c00000f0001 +a97b800000010000000200020732737465706276026e6c00000f0001c00c0002000100015180000e036e73310762686f73746564c014c00c00020001000151800006036e7333c02cc02800010001000151800004d973c30fc04200010001000151800004d973c102 + +34534 +ea860000000100000000000005646e732d32056c61646f74026e6c0000010001 +ea868000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34535 +ba480000000100000000000003777777036d6463026e6c0000010001 +ba488000000100000002000003777777036d6463026e6c0000010001c01000020001000151800017056e6f7274680b646f6d65696e736c756973036f726700c0100002000100015180000805736f757468c02e + +34536 +5db800000001000000000000036e733207626265796f6e64026e6c0000010001 +5db880000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +34537 +4dc100000001000000000000037777771276646e2d7665726875697373657276696365026e6c0000010001 +4dc180000001000000020002037777771276646e2d7665726875697373657276696365026e6c0000010001c0100002000100015180000a036e7331036e7873c023c01000020001000151800006036e7332c03bc03700010001000151800004d973c015c04d00010001000151800004d973c102 + +34538 +e03a0000000100000000000007616e74656e6e61026e6c0000010001 +e03a8000000100000002000107616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +34539 +02e000000001000000000000036e73320774697363616c69026e6c0000010001 +02e080000001000000030002036e73320774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f13325 + +34540 +be0800000001000000000000036d6d6d0a6e65777373656c656374026e6c0000010001 +be0880000001000000020000036d6d6d0a6e65777373656c656374026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c033 + +34541 +5db900000001000000000000036e733107626265796f6e64026e6c0000010001 +5db980000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +34542 +265600000001000000000000037777770a6b6c696b77696a7a6572026e6c0000010001 +265680000001000000020002037777770a6b6c696b77696a7a6572026e6c0000010001c01000020001000151800015036e73310e686f7374696e677377696a7a6572c01bc01000020001000151800006036e7332c033c02f000100010001518000043ed4591ec050000100010001518000043ed45928 + +34543 +d68100000001000000000000036e733103696467026e6c00001c0001 +d68180000001000000030003036e733103696467026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +34544 +7e3900000001000000000000036e733103696467026e6c0000260001 +7e3980000001000000030003036e733103696467026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +34545 +32e000000001000000000000036e733203696467026e6c00001c0001 +32e080000001000000030003036e733203696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +34546 +099d00000001000000000000036e733203696467026e6c0000260001 +099d80000001000000030003036e733203696467026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +34547 +3c0d00000001000000000000036e733303696467026e6c00001c0001 +3c0d80000001000000030003036e733303696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +34548 +130100000001000000000000036e733303696467026e6c0000260001 +130180000001000000030003036e733303696467026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +34549 +68af00000001000000000000037777770b6d65646961737769746368026e6c0000010001 +68af80000001000000020002037777770b6d65646961737769746368026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01cc01000020001000151800006036e7332c034c03000010001000151800004d4f1210bc04e00010001000151800004d4f1210c + +34550 +11e400000001000000000000036e73330767617574656e67026e6c0000010001 +11e480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34551 +4fe50000000100000000000007646574696567650564656d6f6e026e6c0000010001 +4fe58000000100000003000207646574696567650564656d6f6e026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +34552 +ebc30000000100000000000003777777087265697369676572026e6c0000010001 +ebc38000000100000003000003777777087265697369676572026e6c0000010001c0100002000100015180001004646e73310573746f726b03636f6d00c0100002000100015180000704646e7332c032c0100002000100015180000704646e7333c032 + +34553 +603d00000001000000000000037777770b776565722d6f6e6c696e65026e6c0000010001 +603d80000001000000030003037777770b776565722d6f6e6c696e65026e6c0000010001c0100002000100015180000e076e73617574683103626974c01cc0100002000100015180000a076e736175746832c038c0100002000100015180000a076e736175746833c038c03000010001000151800004d5880c33c04a00010001000151800004d5880c3bc06000010001000151800004d4ccc00b + +34554 +3bca0000000100000000000003777777087365616c736b696e026e6c0000010001 +3bca8000000100000002000203777777087365616c736b696e026e6c0000010001c0100002000100015180000b026e73057177697365c019c01000020001000151800006036e7332c030c02d00010001000151800004c2927f02c04400010001000151800004c2927f03 + +34555 +1274000000010000000000000477777731056b6c696b73026e6c0000010001 +1274800000010000000200000477777731056b6c696b73026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c02e + +34556 +16b8000000010000000000000b6379636c696e6732303030026e6c00000f000100 +16b8800000010000000200000b6379636c696e6732303030026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c032 + +34557 +e94d0000000100000000000005434f425241064b4f4e424942024e4c0000010001 +e94d8000000100000003000305434f425241064b4f4e424942024e4c0000010001c01200020001000151800002c00cc0120002000100015180000906707974686f6ec012c0120002000100015180000e036e733107737572666e6574c019c00c00010001000151800004c0571f16c03b00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +34558 +6ef70000000100000000000006505954484f4e064b4f4e424942024e4c0000010001 +6ef78000000100000003000306505954484f4e064b4f4e424942024e4c0000010001c0130002000100015180000805636f627261c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0571f16c00c00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +34559 +785b0000000100000000000006737079726f73026e6c00000f0001 +785b8000000100000002000106737079726f73026e6c00000f0001c00c0002000100015180000a036e733303777873c013c00c00020001000151800006036e7334c02bc03d00010001000151800004d5ef9a65 + +34560 +54930000000100000000000012313233636f6d707574657273657276696365026e6c0000010001 +54938000000100000002000212313233636f6d707574657273657276696365026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c01fc00c00020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +34561 +ad5000000001000000000000066368656c6c6f026e6c0000ff0001 +ad5080000001000000030003066368656c6c6f026e6c0000ff0001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +34562 +09ac000000010000000000000377777707676f6c64776562026e6c0000010001 +09ac800000010000000200000377777707676f6c64776562026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c02f + +34563 +3e96000000010000000000000462696f6c03727567026e6c0000010001 +3e96800000010000000300030462696f6c03727567026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000e036e733107737572666e6574c015c02900010001000151800004817d0406c03b00010001000151800004817d040dc04d00010001000151800004c0576a65 + +34564 +979600000001000000000000037777770666656e696b73026e6c0000010001 +979680000001000000020000037777770666656e696b73026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02f + +34565 +19050000000100000000000003777777086d61726972617361026e6c0000010001 +19058000000100000002000103777777086d61726972617361026e6c0000010001c0100002000100015180000e026e73087472696c6f676963c019c01000020001000151800006036e7332c030c02d00010001000151800004c26d1264 + +34566 +93ea000000010000000000000a77696566666572696e6b026e6c0000ff0001 +93ea800000010000000200020a77696566666572696e6b026e6c0000ff0001c00c0002000100015180000f036e733108696e74726f776562c017c00c00020001000151800006036e7332c02fc02b0001000100015180000450416028c04600010001000151800004c356780c + +34567 +94be000000010000000000000a74726176656c2d6e6574026e6c0000ff0001 +94be800000010000000200010a74726176656c2d6e6574026e6c0000ff0001c00c000200010001518000090674722d646e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02b00010001000151800004c2977d28 + +34568 +030f00000001000000000000046e657874026e6c00000f0001 +030f80000001000000020001046e657874026e6c00000f0001c00c00020001000151800012036e733107686f7374696e6703656269c011c00c0002000100015180000d03646e73036b706e03636f6d00c02500010001000151800004c1ad9c46 + +34569 +ce5f000000010000000000000377777709636974796d75736963026e6c0000010001 +ce5f800000010000000200000377777709636974796d75736963026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +34570 +1d570000000100000000000004652d636b026e6c0000ff0001 +1d578000000100000002000004652d636b026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c011c00c00020001000151800006036e7332c028 + +34571 +ec3c00000001000000000000037777771364696570657665656e2d6d616b656c61617273026e6c0000010001 +ec3c80000001000000030002037777771364696570657665656e2d6d616b656c61617273026e6c0000010001c0100002000100015180000d036e733106776964657873c024c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03cc03800010001000151800004d4ccc0fcc06d000100010001518000043efa0703 + +34572 +cd440000000100000000000004616a6178066e696b686566026e6c0000010001 +cd448000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +34573 +3fd10000000100000000000008626c6f6f6d696e67026e6c0000ff0001 +3fd18000000100000002000008626c6f6f6d696e67026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c015c00c00020001000151800006036e7332c02c + +34574 +0cab00000001000000000000037777770c766f63616c636f6d70616e79026e6c0000010001 +0cab80000001000000030002037777770c766f63616c636f6d70616e79026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +34575 +1fc80000000100000000000006636861726973026e6c0000010001 +1fc88000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +34576 +eb7800000001000000000000036e733503777873026e6c0000010001 +eb7880000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34577 +638000000001000000000000054c53444e5306464f4b4b4552026e6c0000010001 +638080000001000000020000054c53444e5306464f4b4b4552026e6c0000010001c0120002000100015180001004646e73310573746f726b03636f6d00c0120002000100015180000704646e7332c032 + +34578 +0eae00000001000000000000037777770574626f656b026e6c0000010001 +0eae80000001000000030002037777770574626f656b026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +34579 +6eed00000001000000000000026e73076e656473746174026e6c00001c0001 +6eed80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34580 +eca300000001000000000000036e7332076e656473746174026e6c0000010001 +eca380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34581 +a24400000001000000000000036e7332076e656473746174026e6c00001c0001 +a24480000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34582 +da1000000001000000000000036e7333076e656473746174026e6c00001c0001 +da1080000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34583 +efc000000001000000000000036e7334076e656473746174026e6c0000010001 +efc080000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34584 +465a00000001000000000000036e7334076e656473746174026e6c00001c0001 +465a80000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34585 +d92700000001000000000000037777770a747261696e73696d6767026e6c0000010001 +d92780000001000000020002037777770a747261696e73696d6767026e6c0000010001c01000020001000151800012036e73310b736c61636b736572766572c01bc01000020001000151800006036e7332c033c02f000100010001518000043ed444c0c04d000100010001518000043ed44d0a + +34586 +8a76000000010000000000000e706f72747567616c6f6e6c696e65026e6c0000ff0001 +8a76800000010000000200020e706f72747567616c6f6e6c696e65026e6c0000ff0001c00c0002000100015180000c036e7331056773696e74c01bc00c00020001000151800006036e7332c033c02f00010001000151800004510473b4c04700010001000151800004510473b5 + +34587 +422a00000001000000000000037777770c7374617274766f6f726a6f75026e6c0000010001 +422a80000001000000020000037777770c7374617274766f6f726a6f75026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +34588 +91ac00000001000000000000086b6575726d65726b026e6c00000f0001 +91ac80000001000000020000086b6575726d65726b026e6c00000f0001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec030 + +34589 +466c00000001000000000000046e6b6676026e6c0000ff0001 +466c80000001000000020000046e6b6676026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c011c00c00020001000151800006036e7332c028 + +34590 +44c800000001000000000000037777770861736e626f6f6b73026e6c0000010001 +44c880000001000000020000037777770861736e626f6f6b73026e6c0000010001c01000020001000151800013036e733109736f6c6964636f6465036e657400c01000020001000151800006036e7332c031 + +34591 +9d8d0000000100000000000003706f70086576657279646179026e6c0000010001 +9d8d8000000100000003000203706f70086576657279646179026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +34592 +b5ef00000001000000000000037777770373637a026e6c0000010001 +b5ef80000001000000020002037777770373637a026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c014c01000020001000151800006036e7332c02cc02800010001000151800004d4b20403c04100010001000151800004d5881e45 + +34593 +65e70000000100000000000003777777076e6f7661736f6c026e6c0000010001 +65e78000000100000002000003777777076e6f7661736f6c026e6c0000010001c010000200010001518000130761757468323030026e73027575036e657400c0100002000100015180000a0761757468323130c034 + +34594 +767300000001000000000000036e733503777873026e6c0000010001 +767380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34595 +c53f000000010000000000000569636f6e7304696c7365026e6c0000010001 +c53f800000010000000300030569636f6e7304696c7365026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02b000100010001518000043e45a282c03d000100010001518000043e45a283c04f000100010001518000043e45a284 + +34596 +12a300100001000000000000087761616c64696a6b026e6c00000f0001 +12a380000001000000020000087761616c64696a6b026e6c00000f0001c00c0002000100015180000f07686f7374696e670470756e74c015c00c00020001000151800006036e7331c031 + +34597 +a1760000000100000000000007686f7374696e670470756e74026e6c0000010001 +a1768000000100000002000207686f7374696e670470756e74026e6c0000010001c0140002000100015180000f036e7331086765656e70756e74c019c01400020001000151800006036e7332c031c02d00010001000151800004d4ccd865c048000100010001518000045054ec34 + +34598 +c62b00000001000000000000036e73310470756e74026e6c0000010001 +c62b80000001000000020002036e73310470756e74026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c015c01000020001000151800006036e7332c02dc02900010001000151800004d4ccd865c044000100010001518000045054ec34 + +34599 +556d000000010000000000000869787765623030310777697265687562026e6c0000010001 +556d800000010000000300000869787765623030310777697265687562026e6c0000010001c01500020001000151800010026e730777697265687562036e657400c01500020001000151800006036e7332c034c01500020001000151800006036e7333c034 + +34600 +7f96000000010000000000000449746563026e6c0000ff0001 +7f96800000010000000200000449746563026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c011c00c0002000100015180000704686e7331c02a + +34601 +05be00000001000000000000037777770e6f6e67656b656e6474616c656e74026e6c0000010001 +05be80000001000000020002037777770e6f6e67656b656e6474616c656e74026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01fc01000020001000151800006036e7332c037c03300010001000151800004c29f4906c04b00010001000151800004c29fb004 + +34602 +faad00000001000000000000037777770b706f6c2d6865746572656e026e6c0000010001 +faad80000001000000030000037777770b706f6c2d6865746572656e026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c033c01000020001000151800006036e7332c033 + +34603 +5d570000000100000000000008686f73746e616d650462696e640000100003 +5d578000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +34604 +d9b000000001000000000000037777770c6461676a657a65656c616e64026e6c0000010001 +d9b080000001000000020002037777770c6461676a657a65656c616e64026e6c0000010001c01000020001000151800010036e73310964656c74616c616e64c01dc01000020001000151800006036e7332c035c031000100010001518000045059ee57c04d00010001000151800004d5c9e503 + +34605 +b01600000001000000000000026e730a696275696c64696e6773026e6c0000010001 +b01680000001000000030002026e730a696275696c64696e6773026e6c0000010001c00f0002000100015180000d036e733106776964657873c01ac00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +34606 +be1700000001000000000000037777770876656e6b7564656e026e6c0000010001 +be1780000001000000030000037777770876656e6b7564656e026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c030c01000020001000151800006036e7332c030 + +34607 +80fb00000001000000000000026e7306766576696461026e6c0000010001 +80fb80000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +34608 +bfa100000001000000000000036e733206766576696461026e6c0000010001 +bfa180000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +34609 +11f900000001000000000000096d64656b7569706572026e6c00000f0001 +11f980000001000000020000096d64656b7569706572026e6c00000f0001c00c00020001000151800016036e73310c656967656e2d646f6d65696e036e657400c00c00020001000151800006036e7332c02e + +34610 +e4ea000000010000000000000b535449434b45524749524c026e6c0000020001 +e4ea840300010000000100000b535449434b45524749524c026e6c0000020001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +34611 +ab91000000010000000000000377777710666579656e6f6f726463617375616c73026e6c0000010001 +ab91800000010000000200020377777710666579656e6f6f726463617375616c73026e6c0000010001c0100002000100015180000e036e733107696e666c617465c021c01000020001000151800006036e7332c039c035000100010001518000045117e232c04f000100010001518000045117e233 + +34612 +77410000000100000000000003777777086d74726565787878026e6c0000010001 +77418000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +34613 +7b4b000000010000000000000377777708646973636f6e6574026e6c0000010001 +7b4b800000010000000300010377777708646973636f6e6574026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +34614 +386e00000001000000000000086268682d6e7431300f626f6572686172746f67686f6f6674026e6c0000010001 +386e80000001000000020000086268682d6e7431300f626f6572686172746f67686f6f6674026e6c0000010001c0150002000100015180000d03646e73036b706e03636f6d00c0150002000100015180000d036e7332036b706e036e657400 + +34615 +999e00000001000000000000086268682d6e7431300f626f6572686172746f67686f6f6674026e6c00001c0001 +999e80000001000000020000086268682d6e7431300f626f6572686172746f67686f6f6674026e6c00001c0001c0150002000100015180000d03646e73036b706e03636f6d00c0150002000100015180000d036e7332036b706e036e657400 + +34616 +19f800000001000000000000036e73340767617574656e67026e6c0000010001 +19f880000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34617 +b35800000001000000000000056c69617577026e6c0000020001 +b35880000001000000020000056c69617577026e6c0000020001c00c00020001000151800010036e733109666972737466696e64c012c00c00020001000151800006036e7332c02a + +34618 +6ccc00000001000000000000036e733109666972737466696e64026e6c0000010001 +6ccc80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34619 +3df900000001000000000000036e733209666972737466696e64026e6c0000010001 +3df980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34620 +3beb000000010000000000000377777706617265613137026e6c0000010001 +3beb800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +34621 +e43600000001000000000000037777770667616d657273026e6c0000010001 +e43680000001000000020002037777770667616d657273026e6c0000010001c0100002000100015180000b036e73310470696e65c017c01000020001000151800006036e7332c02fc02b00010001000151800004d59c0201c04200010001000151800004c3c1a303 + +34622 +008f000000010000000000000377777706617265613137026e6c0000010001 +008f800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +34623 +227b00000001000000000000026e73077374616e6e6574026e6c0000010001 +227b80000001000000020002026e73077374616e6e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5852414c03900010001000151800004d5852418 + +34624 +536e00000001000000000000036e7332077374616e6e6574026e6c0000010001 +536e80000001000000020002036e7332077374616e6e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d5852414c00c00010001000151800004d5852418 + +34625 +17f700000001000000000000036465700968736472656e746865026e6c00001c0001 +17f780000001000000020002036465700968736472656e746865026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c01ac00c00010001000151800004c3a93c7dc03c00010001000151800004c0576a65 + +34626 +82ab000000010000000000000f706f72747261697467616c6c657279026e6c0000010001 +82ab800000010000000200020f706f72747261697467616c6c657279026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +34627 +8fc700000001000000000000046d61696c0968736472656e746865026e6c0000010001 +8fc780000001000000020002046d61696c0968736472656e746865026e6c0000010001c0110002000100015180000603646570c011c0110002000100015180000e036e733107737572666e6574c01bc02f00010001000151800004c3a93c7dc04100010001000151800004c0576a65 + +34628 +e9b800000001000000000000037777770974656c656772616166026e6c0000010001 +e9b880000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +34629 +87aa000000010000000000000468616e7309747269706c652d6974026e6c0000ff0001 +87aa800000010000000300030468616e7309747269706c652d6974026e6c0000ff0001c01100020001000151800005026e73c011c0110002000100015180000b086e7331636f6c6f32c011c0110002000100015180000b086e7331636f6c6f33c011c02f00010001000151800004d584b002c04000010001000151800004d47ffe42c05700010001000151800004504542ad + +34630 +2911000000010000000000000577326b6331066e7434616c6c026e6c0000010001 +2911800000010000000200020577326b6331066e7434616c6c026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e733206787334616c6cc019c02d00010001000151800004c26d3402c03e00010001000151800004c26d0963 + +34631 +4e9d000000010000000000000b6e6f7661636f6c6c656765026e6c00000f0001 +4e9d800000010000000200020b6e6f7661636f6c6c656765026e6c00000f0001c00c0002000100015180000d036e7331066e6c74726565c018c00c00020001000151800006036e7332c030c02c00010001000151800004d4b20403c04500010001000151800004d5881e45 + +34632 +161800100001000000000001036e7332036e6f62026e6c00000100010000290800000080000000 +161880000001000000020003036e7332036e6f62026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004504f22f6c00c00010001000151800004504f22fa0000291000000000000000 + +34633 +2c3000100001000000000001036e7331036e6f62026e6c00000100010000290800000080000000 +2c3080000001000000020003036e7331036e6f62026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004504f22f6c03600010001000151800004504f22fa0000291000000000000000 + +34634 +8ae800000001000000000000037777770a686f6e64656e68757973026e6c0000010001 +8ae880000001000000020000037777770a686f6e64656e68757973026e6c0000010001c01000020001000151800015036e73310b646e736a756e6374696f6e03636f6d00c01000020001000151800006036e7332c033 + +34635 +f03200000001000000000000036e73310d706f7765727365727665723132026e6c0000010001 +f03280000001000000020002036e73310d706f7765727365727665723132026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047478c0400001000100015180000451047479 + +34636 +3c1600000001000000000000036e73320d706f7765727365727665723132026e6c0000010001 +3c1680000001000000020002036e73320d706f7765727365727665723132026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0320001000100015180000451047478c00c0001000100015180000451047479 + +34637 +a57e00000001000000000000036e733107626265796f6e64026e6c00001c0001 +a57e80000001000000020002036e733107626265796f6e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +34638 +63aa00000001000000000000036e733107626265796f6e64026e6c0000260001 +63aa80000001000000020002036e733107626265796f6e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +34639 +92b300000001000000000000036e733207626265796f6e64026e6c00001c0001 +92b380000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +34640 +8dac00000001000000000000036e733207626265796f6e64026e6c0000260001 +8dac80000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +34641 +49db000000010000000000000d36322d3137372d3139302d333907626265796f6e64026e6c0000010001 +49db800000010000000200020d36322d3137372d3139302d333907626265796f6e64026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac036000100010001518000043eb1900bc048000100010001518000043eb19002 + +34642 +837b0000000100000000000005756c656164026e6c00000f0001 +837b8000000100000003000305756c656164026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c012c00c000200010001518000070470726932c02bc00c000200010001518000070470726933c02bc026000100010001518000049a0ff9a6c044000100010001518000049a0ff9aac057000100010001518000049a0ff9ae + +34643 +4ba900000001000000000000036e733109666972737466696e64026e6c0000010001 +4ba980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34644 +1f8900000001000000000000036e733209666972737466696e64026e6c0000010001 +1f8980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34645 +53e100000001000000000000037777770c646563656d62657232337264026e6c0000010001 +53e180000001000000020000037777770c646563656d62657232337264026e6c0000010001c0100002000100015180000c026e7306766576696461c01dc01000020001000151800006036e7332c034 + +34646 +914300000001000000000000036e733108636f6d707574656c026e6c0000010001 +914380000001000000020002036e733108636f6d707574656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3568680c03b00010001000151800004c3568681 + +34647 +cc7a00000001000000000000037777770e7374616e64627973657276696365026e6c0000010001 +cc7a80000001000000020000037777770e7374616e64627973657276696365026e6c0000010001c01000020001000151800015036e73310b6475746368776562646e73036e657400c01000020001000151800006036e7332c037 + +34648 +b6db00000001000000000000037777770c746f70686f726f73636f6f70026e6c0000010001 +b6db80000001000000020002037777770c746f70686f726f73636f6f70026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c01dc01000020001000151800006036e7332c035c03100010001000151800004d4f1210bc04f00010001000151800004d4f1210c + +34649 +e22f000000010000000000000d3139322d38372d3132342d35370663616d707573086e79656e726f6465026e6c0000010001 +e22f800000010000000300030d3139322d38372d3132342d35370663616d707573086e79656e726f6465026e6c0000010001c021000200010001518000070161026e73c021c021000200010001518000040163c040c021000200010001518000040164c040c03e000100010001518000043e3a04a3c05100010001000151800004c26dc2aec06100010001000151800004c0577106 + +34650 +710f00000001000000000000046c696262026e6c0000020001 +710f80000001000000020002046c696262026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +34651 +024000000001000000000000026e73076e656473746174024e4c0000010001 +024080000001000000020002026e73076e656473746174024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34652 +1efa00000001000000000000026e73076b6e6f77617265026e6c0000010001 +1efa80000001000000020002026e73076b6e6f77617265026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c3402003c03900010001000151800004c340202b + +34653 +cf6a00000001000000000000036e7332076e656473746174026e6c00001c0001 +cf6a80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34654 +7432000000010000000000000866696e2d73706563026e6c00000f0001 +7432800000010000000200000866696e2d73706563026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02c + +34655 +3a4f00000001000000000000036e7332036e6f62026e6c0000010001 +3a4f80000001000000020002036e7332036e6f62026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004504f22f6c00c00010001000151800004504f22fa + +34656 +65c900000001000000000000036e7331036e6f62026e6c0000010001 +65c980000001000000020002036e7331036e6f62026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004504f22f6c03600010001000151800004504f22fa + +34657 +47ff000000010000000000000377777708626f766f2d6c6261026e6c0000010001 +47ff800000010000000200020377777708626f766f2d6c6261026e6c0000010001c0100002000100015180000f036e73310864736267726f6570c019c01000020001000151800006036e7332c031c02d00010001000151800004d4362461c04800010001000151800004c36c2c36 + +34658 +4b790000000100000000000006787334616c6c026e6c00000f0001 +4b798000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +34659 +66e6000000010000000000000864656c746170616b026e6c0000010001 +66e6800000010000000200010864656c746170616b026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +34660 +63b30000000100000000000005646e732d32056c61646f74026e6c0000010001 +63b38000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34661 +1a6b00000001000000000000037777770a6861616773656469726b026e6c0000010001 +1a6b80000001000000030001037777770a6861616773656469726b026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +34662 +53b000000001000000000000037777770a7368656572656e6c6f6f026e6c0000010001 +53b080000001000000030001037777770a7368656572656e6c6f6f026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +34663 +8a4b000000010000000000000377777708706f737462616e6b026e6c0000010001 +8a4b800000010000000200020377777708706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +34664 +7ce400000001000000000000037777770c6a6577656c6b696c63686572026e6c0000010001 +7ce480000001000000020000037777770c6a6577656c6b696c63686572026e6c0000010001c01000020001000151800015036e73310a626c756579656c6c6f7704696e666f00c01000020001000151800006036e7332c035 + +34665 +e6260000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +e6268000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34666 +064300000001000000000000034e53320743495354524f4e024e4c0000010001 +064380000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34667 +dbda00000001000000000000037777770674726f656c61026e6c0000010001 +dbda80000001000000020001037777770674726f656c61026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +34668 +07e0000000010000000000000a6c6962657274616e676f026e6c0000020001 +07e0800000010000000200020a6c6962657274616e676f026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +34669 +4f79000000010000000000000864656c746170616b026e6c00000f0001 +4f79800000010000000200010864656c746170616b026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +34670 +2c2b0000000100000000000006787334616c6c026e6c00000f0001 +2c2b8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +34671 +15eb0000000100000000000003746869026e6c00000f0001 +15eb8000000100000002000203746869026e6c00000f0001c00c0002000100015180000b047072693103646e73c00cc00c000200010001518000070470726932c029c02400010001000151800004d443abd4c03b000100010001518000043eb43fd2 + +34672 +eef800000001000000000000036e733204712d676f026e6c0000010001 +eef880000001000000020000036e733204712d676f026e6c0000010001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +34673 +f77c00000001000000000000036e733204712d676f026e6c0000260001 +f77c80000001000000020000036e733204712d676f026e6c0000260001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +34674 +db590000000100000000000009706f73746f72646572026e6c0000ff0001 +db598000000100000002000209706f73746f72646572026e6c0000ff0001c00c0002000100015180000f036e73310861746c616e74697ac016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5efa011c04500010001000151800004d5efa075 + +34675 +fa260000000100000000000005746967657205736e6f6b65026e6c0000010001 +fa268000000100000002000205746967657205736e6f6b65026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7333c012c02c00010001000151800004d943e667c03e00010001000151800004d943e6db + +34676 +7cf00000000100000000000009776565726b616d6572026e6c0000010001 +7cf08000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +34677 +3c6d000000010000000000000774726166666963026e6c0000010001 +3c6d800000010000000200000774726166666963026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +34678 +d10900000001000000000000026e7306787334616c6c026e6c0000010001 +d10980000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34679 +acfd0000000100000000000006736572766572026462036b766b026e6c0000010001 +acfd8000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +34680 +c030000000010000000000000377777709706172616469676974026e6c0000010001 +c030800000010000000200000377777709706172616469676974026e6c0000010001c01000020001000151800010026e73076e65737363697303636f6d00c01000020001000151800006036e7332c031 + +34681 +5ee30010000100000000000104414a4158064e494b484546024e4c00000100010000290800000000000000 +5ee38000000100000004000304414a4158064e494b484546024e4c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c7040000291000000000000000 + +34682 +926800000001000000000000037777770e64657665727374726f6f69657273026e6c0000010001 +926880000001000000020000037777770e64657665727374726f6f69657273026e6c0000010001c01000020001000151800010036e733106686f73747335036e657400c01000020001000151800006036e7332c037 + +34683 +871f00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +871f80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34684 +1a6900000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +1a6980000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +34685 +d69d0000000100000000000003777777086a6f627472617878026e6c0000010001 +d69d8000000100000002000203777777086a6f627472617878026e6c0000010001c0100002000100015180000f026e73096e65746c6f67696373c019c01000020001000151800006036e7332c030c02d00010001000151800004c3c16402c04800010001000151800004c2b2850a + +34686 +fe0e0000000100000000000004414a4158064e494b484546024e4c0000010001 +fe0e8000000100000004000204414a4158064e494b484546024e4c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +34687 +eabb00000001000000000000036e733306706167696e61026e6c0000010001 +eabb80000001000000030003036e733306706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02b000100010001518000043e45a282c03d000100010001518000043e45a283c00c000100010001518000043e45a284 + +34688 +e5f500000001000000000000036e733206706167696e61026e6c0000010001 +e5f580000001000000030003036e733206706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02b000100010001518000043e45a282c00c000100010001518000043e45a283c04b000100010001518000043e45a284 + +34689 +db6300000001000000000000036e733106706167696e61026e6c0000010001 +db6380000001000000030003036e733106706167696e61026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +34690 +85d0000000010000000000000377777706666f6b73756b026e6c0000010001 +85d0800000010000000200020377777706666f6b73756b026e6c0000010001c0100002000100015180000a036e733103677673c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e1aac04100010001000151800004d4ccc646 + +34691 +0a1600000001000000000000036e73330767617574656e67026e6c0000010001 +0a1680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34692 +3a1a00000001000000000000036e73330767617574656e67026e6c0000010001 +3a1a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34693 +7e0a000000010000000000000868616e736b616d70026e6c00000f0001 +7e0a800000010000000200010868616e736b616d70026e6c00000f0001c00c0002000100015180000a036e733303777873c015c00c00020001000151800006036e7334c02dc03f00010001000151800004d5ef9a65 + +34694 +227f00000001000000000001026e73076e656473746174026e6c00001c00010000291000000000000000 +227f80000001000000020003026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +34695 +402000000001000000000001026e73076e656473746174026e6c00002600010000291000000000000000 +402080000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +34696 +5e6200000001000000000001036e7332076e656473746174026e6c00000100010000291000000000000000 +5e6280000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34697 +a86d00000001000000000001036e7332076e656473746174026e6c00001c00010000291000000000000000 +a86d80000001000000020003036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34698 +d24700000001000000000001036e7332076e656473746174026e6c00002600010000291000000000000000 +d24780000001000000020003036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34699 +8a3700000001000000000001036e7333076e656473746174026e6c00001c00010000291000000000000000 +8a3780000001000000020003036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +34700 +ca7c00000001000000000001036e7333076e656473746174026e6c00002600010000291000000000000000 +ca7c80000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +34701 +dcfb00000001000000000001036e7334076e656473746174026e6c00000100010000291000000000000000 +dcfb80000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34702 +d4f800000001000000000001036e7334076e656473746174026e6c00001c00010000291000000000000000 +d4f880000001000000020003036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34703 +82f300000001000000000001036e7334076e656473746174026e6c00002600010000291000000000000000 +82f380000001000000020003036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +34704 +6e35000000010000000000000b6c6962657274796c616d61026e6c0000020001 +6e35800000010000000200020b6c6962657274796c616d61026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +34705 +227f00000001000000000000026e73076e656473746174026e6c00001c0001 +227f80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34706 +402000000001000000000000026e73076e656473746174026e6c0000260001 +402080000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34707 +5e6200000001000000000000036e7332076e656473746174026e6c0000010001 +5e6280000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34708 +a86d00000001000000000000036e7332076e656473746174026e6c00001c0001 +a86d80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34709 +ac3700000001000000000000037777770d73746174656f66746865617274026e6c0000010001 +ac3780000001000000030000037777770d73746174656f66746865617274026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c037c01000020001000151800007046e733033c037 + +34710 +c3bc00000001000000000000037777770d73746174656f66746865617274026e6c0000010001 +c3bc80000001000000030000037777770d73746174656f66746865617274026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c037c01000020001000151800007046e733033c037 + +34711 +d24700000001000000000000036e7332076e656473746174026e6c0000260001 +d24780000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34712 +8a3700000001000000000000036e7333076e656473746174026e6c00001c0001 +8a3780000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34713 +ca7c00000001000000000000036e7333076e656473746174026e6c0000260001 +ca7c80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34714 +dcfb00000001000000000000036e7334076e656473746174026e6c0000010001 +dcfb80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34715 +bd8a0000000100000000000004636c7570026e6c00000f0001 +bd8a8000000100000002000004636c7570026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +34716 +d4f800000001000000000000036e7334076e656473746174026e6c00001c0001 +d4f880000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34717 +82f300000001000000000000036e7334076e656473746174026e6c0000260001 +82f380000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34718 +dce6000000010000000000000377777709616c7465726e617465026e6c0000010001 +dce6800000010000000200020377777709616c7465726e617465026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01ac01000020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +34719 +a12b00000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +a12b80000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +34720 +656700000001000000000000036e733109666972737466696e64026e6c0000010001 +656780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34721 +8e47000000010000000000000d686f62627973686f7033303030026e6c0000010001 +8e47800000010000000200020d686f62627973686f7033303030026e6c0000010001c00c00020001000151800011036e73310a696e7465726e65746978c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d4ccf5c9c04b00010001000151800004d4ccf5d2 + +34722 +78990000000100000000000003777777086a6f627472617878026e6c0000010001 +78998000000100000002000203777777086a6f627472617878026e6c0000010001c0100002000100015180000f026e73096e65746c6f67696373c019c01000020001000151800006036e7332c030c02d00010001000151800004c3c16402c04800010001000151800004c2b2850a + +34723 +1182000000010000000000000576656e6c6f036f6365026e6c0000010001 +1182800000010000000200010576656e6c6f036f6365026e6c0000010001c01200020001000151800002c00cc0120002000100015180000b026e73026e6c036e657400c00c0001000100015180000486bc0102 + +34724 +59d600100001000000000001036e733104686f6d65026e6c00000100010000290800000080000000 +59d680000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +34725 +967b00100001000000000001036e733204686f6d65026e6c00000100010000290800000080000000 +967b80000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +34726 +f4d100100001000000000001036e733304686f6d65026e6c00000100010000290800000080000000 +f4d180000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +34727 +f58200100001000000000001036e733404686f6d65026e6c00000100010000290800000080000000 +f58280000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +34728 +ecd500000001000000000000034e53320743495354524f4e024e4c0000010001 +ecd580000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34729 +b8e200000001000000000000037777770c726f636b736e726976657273026e6c0000010001 +b8e280000001000000020002037777770c726f636b736e726976657273026e6c0000010001c01000020001000151800010036e733109747261666669633475c01dc01000020001000151800006036e7332c035c03100010001000151800004c323b781c04d00010001000151800004c323b782 + +34730 +deff0000000100000000000003777777056e6c636f6d026e6c0000010001 +deff8000000100000002000103777777056e6c636f6d026e6c0000010001c0100002000100015180000c026e7306636f62776562c016c01000020001000151800011026e73087363686970686f6c036e657400c02a0001000100015180000450f26001 + +34731 +1a4b00000001000000000000037777770d31303170726f6d6f74696f6e73026e6c0000010001 +1a4b80000001000000030001037777770d31303170726f6d6f74696f6e73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +34732 +0623000000010000000000000377777703646674026e6c0000010001 +0623800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +34733 +a53800000001000000000000036e733106736f6c636f6e026e6c0000010001 +a53880000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +34734 +e92100000001000000000000036e733206736f6c636f6e026e6c0000010001 +e92180000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +34735 +d13100000001000000000000036e733106736f6c636f6e026e6c0000260001 +d13180000001000000030003036e733106736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +34736 +1d5400000001000000000000036e733206736f6c636f6e026e6c0000260001 +1d5480000001000000030003036e733206736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +34737 +0eaa0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +0eaa8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +34738 +43ee0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000260001 +43ee8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000260001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +34739 +cf5500000001000000000000036e733104686f6d65026e6c0000010001 +cf5580000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +34740 +25b100000001000000000000036e733204686f6d65026e6c0000010001 +25b180000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +34741 +59ad00000001000000000000036e733304686f6d65026e6c0000010001 +59ad80000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +34742 +c4c600000001000000000000036e733404686f6d65026e6c0000010001 +c4c680000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +34743 +63890000000100000000000005646e732d31056c61646f74026e6c0000010001 +63898000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34744 +26c80000000100000000000005646e732d32056c61646f74026e6c0000010001 +26c88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +34745 +334400000001000000000000036e73320763697374726f6e026e6c0000010001 +334480000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34746 +5dda00000001000000000000036e73320763697374726f6e026e6c00001c0001 +5dda80000001000000020002036e73320763697374726f6e026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +34747 +bd3a00000001000000000000037777770676657870616e026e6c0000010001 +bd3a80000001000000020000037777770676657870616e026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c030 + +34748 +644e00000001000000000000037777770f7175616c6974792d63656e74657273026e6c0000010001 +644e80000001000000020002037777770f7175616c6974792d63656e74657273026e6c0000010001c0100002000100015180000f036e733108636f6d707574656cc020c01000020001000151800006036e7332c038c03400010001000151800004c3568680c04f00010001000151800004c3568681 + +34749 +217f00000001000000000000037777770d7261616c74652d6f6e6c696e65026e6c0000010001 +217f80000001000000020000037777770d7261616c74652d6f6e6c696e65026e6c0000010001c01000020001000151800012036e733109686f737467726f7570026e7500c01000020001000151800006036e7332c036 + +34750 +3b160000000100000000000009652d6c756e61746963026e6c0000010001 +3b168000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34751 +0b1a0000000100000000000009652d6c756e61746963026e6c0000010001 +0b1a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34752 +5306000000010000000000000866696c6167656e74026e6c00000f0001 +5306800000010000000200020866696c6167656e74026e6c00000f0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc015c00c00020001000151800006036e7332c02dc0290001000100015180000450558121c04700010001000151800004d58141c4 + +34753 +c99c00000001000000000000036e73330767617574656e67026e6c0000010001 +c99c80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34754 +c99d00000001000000000000036e73340767617574656e67026e6c0000010001 +c99d80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34755 +14b2000000010000000000000377777702703308706f737462616e6b026e6c0000010001 +14b2800000010000000200020377777702703308706f737462616e6b026e6c0000010001c0130002000100015180000a036e733103696e67c01cc01300020001000151800006036e7332c034c0300001000100015180000491dd19c2c0460001000100015180000491dd5dc2 + +34756 +751e00000001000000000000035f6763045f7463700477617166026e6c0000060001 +751e84030001000000010000035f6763045f7463700477617166026e6c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +34757 +4766000000010000000000000331333602336a026e6c0000010001 +4766800000010000000200020331333602336a026e6c0000010001c0100002000100015180000e036e733107676f6c69617468c013c01000020001000151800006036e7332c02bc027000100010001518000045054f379c04100010001000151800004507f48c2 + +34758 +023000000001000000000000036e73340767617574656e67026e6c0000010001 +023080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34759 +3a3900000001000000000000036e73340767617574656e67026e6c0000010001 +3a3980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34760 +1a2000000001000000000000036e73330767617574656e67026e6c0000010001 +1a2080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34761 +122e00000001000000000000036e73330767617574656e67026e6c0000010001 +122e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34762 +2b300000000100000000000009652d6c756e61746963026e6c0000010001 +2b308000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34763 +96c000000001000000000000046162656c0564656d6f6e026e6c0000010001 +96c080000001000000030002046162656c0564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +34764 +53f90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +53f98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34765 +b5bf00000001000000000000037777771274726f706963616c2d726563726561746965026e6c0000010001 +b5bf80000001000000020000037777771274726f706963616c2d726563726561746965026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c03c + +34766 +f1a20000000100000000000003777777086c616e67686f7574026e6c0000010001 +f1a28000000100000002000003777777086c616e67686f7574026e6c0000010001c01000020001000151800013036e733109752d73657276657273036e657400c01000020001000151800006036e7332c031 + +34767 +802400000001000000000000076b616e746f6f720832646568616e6473026e6c0000010001 +802480000001000000030002076b616e746f6f720832646568616e6473026e6c0000010001c01400020001000151800008056e69657577c01dc01400020001000151800010036e733206776964657873036e657400c0140002000100015180000d036e733306776964657873c01dc031000100010001518000043efa0657c061000100010001518000043efa0703 + +34768 +2a6e00000001000000000000024e53074555524f4e4554024e4c0000010001 +2a6e80000001000000020001024e53074555524f4e4554024e4c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +34769 +a0880000000100000000000006616c7469756d026e6c0000ff0001 +a0888000000100000002000206616c7469756d026e6c0000ff0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +34770 +5296000000010000000000000d72656c61746965706c616e6574026e6c0000010001 +5296800000010000000200020d72656c61746965706c616e6574026e6c0000010001c00c0002000100015180000c04646e73310470696e73c01ac00c0002000100015180000704646e7332c033c02e00010001000151800004d9c26101c04600010001000151800004d9c26002 + +34771 +eec100000001000000000000034d5831046d61696c057061727365026e6c0000010001 +eec180000001000000020002034d5831046d61696c057061727365026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34772 +9f5200000001000000000000034d5831046d61696c057061727365026e6c00001c0001 +9f5280000001000000020002034d5831046d61696c057061727365026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34773 +4a6c00000001000000000000034d5831046d61696c057061727365026e6c0000260001 +4a6c80000001000000020002034d5831046d61696c057061727365026e6c0000260001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34774 +09e200000001000000000000034d5832046d61696c057061727365026e6c0000010001 +09e280000001000000020002034d5832046d61696c057061727365026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34775 +c0e900000001000000000000034d5832046d61696c057061727365026e6c00001c0001 +c0e980000001000000020002034d5832046d61696c057061727365026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34776 +d27e00000001000000000000034d5832046d61696c057061727365026e6c0000260001 +d27e80000001000000020002034d5832046d61696c057061727365026e6c0000260001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34777 +9f8400000001000000000000036e7331057061727365026e6c00001c0001 +9f8480000001000000020002036e7331057061727365026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9b0bc03800010001000151800004d5efb238 + +34778 +0a7900000001000000000000036e7331057061727365026e6c0000260001 +0a7980000001000000020002036e7331057061727365026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9b0bc03800010001000151800004d5efb238 + +34779 +b64c00000001000000000000036e7332057061727365026e6c00001c0001 +b64c80000001000000020002036e7332057061727365026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5ef9b0bc00c00010001000151800004d5efb238 + +34780 +f11900000001000000000000036e7332057061727365026e6c0000260001 +f11980000001000000020002036e7332057061727365026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5ef9b0bc00c00010001000151800004d5efb238 + +34781 +cdab00000001000000000000034d5831046d61696c057061727365026e6c0000010001 +cdab80000001000000020002034d5831046d61696c057061727365026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c02f00010001000151800004d5ef9b0bc04100010001000151800004d5efb238 + +34782 +3e1228000001000000010000026e6c0000060001035f6763045f7463700477617166026e6c0000210001000002580016000000640cc4067365727665720477617166026e6c00 +3e12a8040000000000000000 + +34783 +85ee0000000100000000000003777777087370656c70756e74026e6c0000010001 +85ee8000000100000002000203777777087370656c70756e74026e6c0000010001c0100002000100015180000b036e73310470696e65c019c01000020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +34784 +c3ad00000001000000000000037777770a7365782d7a6f656b6572026e6c0000010001 +c3ad80000001000000020000037777770a7365782d7a6f656b6572026e6c0000010001c0100002000100015180000f026e73096379626572636f6d6dc01bc01000020001000151800006036e7332c032 + +34785 +b75800000001000000000000056b68616f7a026e6c00000f0001 +b75880000001000000020000056b68616f7a026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02c + +34786 +f4c700000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +f4c780000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +34787 +ec5d00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +ec5d80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +34788 +1a430000000100000000000003777777096264736d7a616b656e026e6c0000010001 +1a438000000100000002000003777777096264736d7a616b656e026e6c0000010001c01000020001000151800012036e7333087a6f6e656564697403636f6d00c01000020001000151800006036e7334c032 + +34789 +37d00000000100000000000004616e7762106d756c74696d65646961627261696e73026e6c0000010001 +37d08000000100000002000204616e7762106d756c74696d65646961627261696e73026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c022c01100020001000151800006036e7332c03ac03600010001000151800004d43d0f08c05400010001000151800004d43d19e2 + +34790 +e97100000001000000000000037777770d6a6f6e676567657a696e6e656e026e6c0000010001 +e97180000001000000030000037777770d6a6f6e676567657a696e6e656e026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c036c01000020001000151800006036e7333c036 + +34791 +225b000000010000000000000377777705626f6b6f65026e6c0000010001 +225b800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +34792 +6709000000010000000000000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001 +6709800000010000000200000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001c0130002000100015180001406737068696e7807726f7365747461036e657400c0130002000100015180000906616e75626973c039 + +34793 +883d0000000100000000000003777777126175746f76616e77696a6e6761617264656e026e6c0000010001 +883d8000000100000002000203777777126175746f76616e77696a6e6761617264656e026e6c0000010001c0100002000100015180000d036e733106796f72697465c023c01000020001000151800006036e7332c03bc0370001000100015180000451047320c0500001000100015180000451047321 + +34794 +0f9e0000000100000000000003777777096164686f7374696e67026e6c0000010001 +0f9e8000000100000002000203777777096164686f7374696e67026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +34795 +bfb70000000100000000000004616a6178066e696b686566026e6c0000010001 +bfb78000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +34796 +0ce300000001000000000000037777770b7765726b7374756b6b656e0a7a6f656b706167696e61026e6c0000010001 +0ce380000001000000030003037777770b7765726b7374756b6b656e0a7a6f656b706167696e61026e6c0000010001c01c00020001000151800006036e7331c01cc01c00020001000151800006036e7332c01cc01c00020001000151800006036e7333c01cc03b000100010001518000043e45a282c04d000100010001518000043e45a283c05f000100010001518000043e45a284 + +34797 +000000007002400044d80000020405b401010402 +000080010000000000000000 + +34798 +cdd300000001000000000000037777770766656c74726f6e026e6c0000010001 +cdd380000001000000030002037777770766656c74726f6e026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +34799 +c9a000000001000000000000036e73330767617574656e67026e6c0000010001 +c9a080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34800 +c9a100000001000000000000036e73340767617574656e67026e6c0000010001 +c9a180000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34801 +b72633b05010447082450000000000000000 +b726b3b40000000000000000 + +34802 +b72633b050184470f04800000089b41c000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7e0d403ccf8d00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 +b726b3b40000000000000000 + +34803 +d62500100001000000000001036e733103757063026e6c00000100010000290800000080000000 +d62580000001000000030004036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +34804 +92bf00100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000080000000 +92bf80000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +34805 +3b2c00000001000000000000037777770d656262696e672d6f707469656b026e6c0000010001 +3b2c80000001000000020000037777770d656262696e672d6f707469656b026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c038 + +34806 +98d500000001000000000000026e73076575726f6e6574026e6c0000010001 +98d580000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +34807 +b72633be5011446281b90000000000000000 +b726b3b40000000000000000 + +34808 +000000007002400033630000020405b401010402 +000080010000000000000000 + +34809 +6c9600000001000000000000037777771f7363686f6f6e686f76656e2d62656472696a66736d616b656c61617264696a026e6c0000010001 +6c9680000001000000030003037777771f7363686f6f6e686f76656e2d62656472696a66736d616b656c61617264696a026e6c0000010001c0100002000100015180000c036e7331053266617374c030c01000020001000151800006036e7332c048c01000020001000151800006036e7333c048c0440001000100015180000450f7c022c05c000100010001518000043e858122c06e000100010001518000045117eb22 + +34810 +b72633bf5010446281b80000000000000000 +b726b3b40000000000000000 + +34811 +b726ed2d50104470b7520000000000000000 + + +34812 +31e00000000100000000000006696e66696e69026e6c00000f0001 +31e08000000100000002000206696e66696e69026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34813 +b726ed2d5018447083f1000000895682000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7e0d403ccf8d00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +34814 +00b400100001000000000001046d6f7265026e6c00000f00010000290800000080000000 +00b480000001000000030004046d6f7265026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c02500010001000151800004d5c98015c04000010001000151800004d5c9bf12c05200010001000151800004d5ef9c260000291000000000000000 + +34815 +4cd20000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +4cd28000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +34816 +b726ed3b50114462b6c60000000000000000 + + +34817 +c2e200000001000000000000037777771662757572742d627572656e62656d696464656c696e67026e6c0000010001 +c2e280000001000000020000037777771662757572742d627572656e62656d696464656c696e67026e6c0000010001c0100002000100015180000b036e73310469706d68c027c0100002000100015180000e036e73320469706d68036e657400 + +34818 +863600000001000000000000026e730c696e746572636f6e6e656374026e6c0000010001 +863680000001000000030003026e730c696e746572636f6e6e656374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +34819 +e1c900000001000000000000036e73320c696e746572636f6e6e656374026e6c0000010001 +e1c980000001000000030003036e73320c696e746572636f6e6e656374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03100010001000151800004d453c005c00c00010001000151800004d453c006c05000010001000151800004d453c805 + +34820 +000000007002400037b50000020405b401010402 +000080010000000000000000 + +34821 +d3580000000100000000000003777777026239026e6c0000010001 +d3588000000100000002000203777777026239026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c013c01000020001000151800006036e7332c02ac02700010001000151800004d5e38d0ac04400010001000151800004d5e38205 + +34822 +9c4c00000001000000000000037777770f67726f65696272696c6a616e74656e026e6c0000010001 +9c4c80000001000000020002037777770f67726f65696272696c6a616e74656e026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c020c01000020001000151800006036e7332c038c034000100010001518000045054f347c050000100010001518000043e94a047 + +34823 +5e12010000010000000000000a61726368696d65646573026e6c0000ff0001 +5e12810000010000000200020a61726368696d65646573026e6c0000ff0001c00c0002000100015180001103646e730a636f6e63657074736661c017c00c0002000100015180001004646e733208636f6e6365707473c017c02b00010001000151800004d5c51c03c04800010001000151800004d5c51e1c + +34824 +36260000000100000000000004756e6570026e6c0000010001 +36268000000100000002000104756e6570026e6c0000010001c00c0002000100015180000a026e730469776179c011c00c0002000100015180000c026e730364796e036f726700c02500010001000151800004c14e1e04 + +34825 +901e0000000100000000000003777777106772617469737370656c6c65746a6573026e6c0000010001 +901e8000000100000002000203777777106772617469737370656c6c65746a6573026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c021c01000020001000151800006036e7332c039c03500010001000151800004d90867fec05400010001000151800004c1ad2bfe + +34826 +b726ed3c50104462b6c50000000000000000 + + +34827 +71d40000000100000000000008686f73746e616d650462696e640000100003 +71d48000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +34828 +1f450000000100000000000004777777770974696b6b6962626164026e6c0000010001 +1f458403000100000001000004777777770974696b6b6962626164026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +34829 +594800000001000000000000037777770674656b746f6e026e6c0000010001 +594880000001000000030002037777770674656b746f6e026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +34830 +b727b1b350104470f71d0000000000000000 + + +34831 +3a9d0000000100000000000006787334616c6c026e6c00000f0001 +3a9d8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +34832 +2873000000010000000000000c63656e6562616e6b69657273026e6c0000010001 +2873800000010000000200000c63656e6562616e6b69657273026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +34833 +b727b1b350184470f7580000008922e6000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403b7e0d403ccf8d00030000002a4e544c4d535350000100000097b200c004000400260000000600060020000000534552564552574151460000 + + +34834 +5209000000010000000000000e677261746973706c6161746a6573076661737475726c026e6c0000010001 +5209800000010000000200000e677261746973706c6161746a6573076661737475726c026e6c0000010001c01b00020001000151800012026e73096e6c686f7374696e67036e657400c01b00020001000151800006036e7331c03a + +34835 +8c5f00000001000000000000037777770e616f6e656e696768747374616e64026e6c0000010001 +8c5f80000001000000020000037777770e616f6e656e696768747374616e64026e6c0000010001c01000020001000151800010026e73076e65737363697303636f6d00c01000020001000151800006036e7332c036 + +34836 +f9dd00000001000000000000037777770b736f6e67636f6e74657374026e6c0000010001 +f9dd80000001000000020000037777770b736f6e67636f6e74657374026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c035 + +34837 +7fdc00000001000000000000036e733206656e6574636f026e6c0000010001 +7fdc80000001000000030002036e733206656e6574636f026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +34838 +58e800000001000000000000055f6c646170045f7463702437663264386636642d303161352d343338332d613734332d62323537316161323361316407646f6d61696e73065f6d736463730a70616c6d656e7475696e026e6c0000060001 +58e884030001000000010000055f6c646170045f7463702437663264386636642d303161352d343338332d613734332d62323537316161323361316407646f6d61696e73065f6d736463730a70616c6d656e7475696e026e6c0000060001c05600060001000038400036026e730f646f6d61696e2d7265676973747279c0560a686f73746d6173746572c06d0bf1e540000070800000384000278d0000003840 + +34839 +b727b1c150114462f6910000000000000000 + + +34840 +53de000000010000000000000b6672616e736e6f6f72656e026e6c00000f0001 +53de800000010000000200020b6672616e736e6f6f72656e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +34841 +5a8e00000001000000000000037777770c726f6b656e656e6465776574026e6c0000010001 +5a8e80000001000000020000037777770c726f6b656e656e6465776574026e6c0000010001c0100002000100015180000e036e73310464646e68036e657400c01000020001000151800006036e7332c035 + +34842 +805a00000001000000000000046d6f7265026e6c00000f0001 +805a80000001000000030003046d6f7265026e6c00000f0001c00c0002000100015180000f036e7331086e6f766178657373c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c02500010001000151800004d5c98015c04000010001000151800004d5c9bf12c05200010001000151800004d5ef9c26 + +34843 +672d0000000100000000000003777777076d65796c696e670564656d6f6e026e6c0000010001 +672d8000000100000003000203777777076d65796c696e670564656d6f6e026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c0180002000100015180000f036e73320564656d6f6e036e657400c03200010001000151800004c29f4906c04400010001000151800004c29fb004 + +34844 +556c00000001000000000000037777770d6e69657461667761636874656e026e6c0000010001 +556c80000001000000020001037777770d6e69657461667761636874656e026e6c0000010001c01000020001000151800009026e73036e6667c01ec0100002000100015180000d036e733306636f62776562c01ec03200010001000151800004c26dd603 + +34845 +b727b1c250104462f6900000000000000000 + + +34846 +df8800000001000000000000056d61696c3209636c65616e706f7274026e6c0000010001 +df8880000001000000020002056d61696c3209636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +34847 +25a300000001000000000000036e7332076e656473746174026e6c0000010001 +25a380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34848 +99ed00000001000000000000036e7332076e656473746174026e6c0000260001 +99ed80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34849 +5081000000010000000000000469632d73026e6c00000f0001 +5081800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +34850 +a4b200000001000000000000036e7334076e656473746174026e6c0000010001 +a4b280000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34851 +525900000001000000000000036e7334076e656473746174026e6c0000260001 +525980000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34852 +deca000000010000000000000c666c6565746d6f6e69746f72026e6c0000ff0001 +deca800000010000000200020c666c6565746d6f6e69746f72026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +34853 +1a4f00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +1a4f80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +34854 +d1500000000100000000000008766f6c656e64616d08686f74656c2d6e75026e6c0000010001 +d1508000000100000002000008766f6c656e64616d08686f74656c2d6e75026e6c0000010001c01500020001000151800014036e73310a72656d61726361626c650362697a00c01500020001000151800006036e7332c036 + +34855 +68020000000100000000000003777777036c6f6c026e6c0000010001 +68028000000100000002000203777777036c6f6c026e6c0000010001c0100002000100015180000b036e73310477656233c014c01000020001000151800006036e7332c02cc02800010001000151800004d436240ec03f00010001000151800004c2b262ef + +34856 +be9a000000010000000000000a676174656b656570657210747775696a7665722d696e636173736f026e6c0000010001 +be9a800000010000000200020a676174656b656570657210747775696a7665722d696e636173736f026e6c0000010001c01700020001000151800012036e73310b6963742d636f6e63657074c028c01700020001000151800006036e7332c040c03c00010001000151800004c26d9983c05a00010001000151800004d5544f5d + +34857 +941c000000010000000000000a676174656b656570657210747775696a7665722d696e636173736f026e6c00001c0001 +941c800000010000000200020a676174656b656570657210747775696a7665722d696e636173736f026e6c00001c0001c01700020001000151800012036e73310b6963742d636f6e63657074c028c01700020001000151800006036e7332c040c03c00010001000151800004c26d9983c05a00010001000151800004d5544f5d + +34858 +d168000000010000000000000a676174656b656570657210747775696a7665722d696e636173736f026e6c0000260001 +d168800000010000000200020a676174656b656570657210747775696a7665722d696e636173736f026e6c0000260001c01700020001000151800012036e73310b6963742d636f6e63657074c028c01700020001000151800006036e7332c040c03c00010001000151800004c26d9983c05a00010001000151800004d5544f5d + +34859 +5b2b000000010000000000000a676174656b656570657210747775696a7665722d696e636173736f026e6c0000010001 +5b2b800000010000000200020a676174656b656570657210747775696a7665722d696e636173736f026e6c0000010001c01700020001000151800012036e73310b6963742d636f6e63657074c028c01700020001000151800006036e7332c040c03c00010001000151800004c26d9983c05a00010001000151800004d5544f5d + +34860 +32aa00000001000000000000094a414e53454e574542024e4c00000f0001 +32aa80000001000000020002094a414e53454e574542024e4c00000f0001c00c00020001000151800009036e7331026973c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +34861 +66290000000100000000000004626c313002626c06787334616c6c026e6c0000010001 +66298000000100000003000204626c313002626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +34862 +4bbe000000010000000000000577656572740763656d61746563026e6c00000f0001 +4bbe800000010000000200020577656572740763656d61746563026e6c00000f0001c0120002000100015180000c036e73310564656d6f6ec01ac01200020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +34863 +baa200000001000000000000036e7332046177676f026e6c0000010001 +baa280000001000000020002036e7332046177676f026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d9aa124cc00c00010001000151800004d9aa124d + +34864 +4b2e00000001000000000000036e7331046177676f026e6c0000010001 +4b2e80000001000000020002036e7331046177676f026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9aa124cc03700010001000151800004d9aa124d + +34865 +3a4f000000010000000000000377777705616e646573026e6c0000010001 +3a4f800000010000000200010377777705616e646573026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c016c01000020001000151800011036e7332076e6564636f6d70036f726700c02a00010001000151800004c3c1a80d + +34866 +b2e80000000100000000000003777777046476686e026e6c0000010001 +b2e88000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +34867 +97d900000001000000000000037777770a6879706f737061646965026e6c0000010001 +97d980000001000000020000037777770a6879706f737061646965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +34868 +80c300000001000000000000076365657363617006787334616c6c026e6c0000010001 +80c380000001000000030002076365657363617006787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +34869 +07f6000000010000000000000377777708696e76656e747261026e6c0000010001 +07f6800000010000000200020377777708696e76656e747261026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c019c01000020001000151800006036e7332c030c02d00010001000151800004c3402003c04600010001000151800004c340202b + +34870 +fa83001000010000000000010765313834303839057570632d65066368656c6c6f026e6c00000100010000290800000080000000 +fa83800000010000000300040765313834303839057570632d65066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c420000291000000000000000 + +34871 +c6ef00000001000000000000087363697a7a6f72730474747a6e026e6c0000010001 +c6ef80000001000000020002087363697a7a6f72730474747a6e026e6c0000010001c0150002000100015180000f036e733108776f726c646e6574c01ac01500020001000151800006036e7332c032c02e00010001000151800004d87a0479c04900010001000151800004d86296b6 + +34872 +dd6300000001000000000000037777770c6d61726174686f6e72756e73026e6c0000010001 +dd6380000001000000020002037777770c6d61726174686f6e72756e73026e6c0000010001c0100002000100015180000d026e7307636f6f6c636f6dc01dc01000020001000151800006036e7332c034c03100010001000151800004c1ad3506c04a00010001000151800004c1ad35c1 + +34873 +f1a700000001000000000000036e733103757063026e6c0000010001 +f1a780000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +34874 +7f3b00000001000000000000046e733032066368656c6c6f026e6c0000010001 +7f3b80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +34875 +be44000000010000000000000866696c6167656e74026e6c00000f0001 +be44800000010000000200020866696c6167656e74026e6c00000f0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc015c00c00020001000151800006036e7332c02dc0290001000100015180000450558121c04700010001000151800004d58141c4 + +34876 +06ab00000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +06ab80000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +34877 +06ac00000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +06ac80000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +34878 +192000000001000000000000033135360331363303313334033230370964796e61626c6f636b07656173796e6574026e6c0000100001 +192080000001000000020002033135360331363303313334033230370964796e61626c6f636b07656173796e6574026e6c0000100001c02600020001000151800006036e7330c026c02600020001000151800006036e7331c026c04200010001000151800004c2a55e01c05400010001000151800004c2a55e05 + +34879 +16ab0000000100000000000003777777147363686576656e696e67656e2d63656e7472756d026e6c0000010001 +16ab8000000100000003000203777777147363686576656e696e67656e2d63656e7472756d026e6c0000010001c0100002000100015180000d036e733106776964657873c025c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03dc03900010001000151800004d4ccc0fcc06e000100010001518000043efa0703 + +34880 +0fa300000001000000000000037777770f616e6e656d6172696577616c6b6572026e6c0000010001 +0fa380000001000000030000037777770f616e6e656d6172696577616c6b6572026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c038c01000020001000151800006036e7333c038 + +34881 +ea3c00000001000000000000096e6f76616772616166026e6c00000f0001 +ea3c80000001000000030003096e6f76616772616166026e6c00000f0001c00c00020001000151800010036e7331096d61726b6772616166c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c3f13ceec04600010001000151800004c372eb43c058000100010001518000043e320e8f + +34882 +04e000000001000000000000066d3264626973026e6c00000f0001 +04e080000001000000020002066d3264626973026e6c00000f0001c00c00020001000151800010036e7331096e65646572686f7374c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5ef9302c04300010001000151800004d5efb241 + +34883 +12d4000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +12d4800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +34884 +804900000001000000000000026e7306787334616c6c026e6c00001c0001 +804980000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34885 +81f600000001000000000000026e7306787334616c6c026e6c0000260001 +81f680000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +34886 +558400000001000000000000036e733206787334616c6c026e6c00001c0001 +558480000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +34887 +617600000001000000000000036e733206787334616c6c026e6c0000260001 +617680000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +34888 +3a0000000001000000000000023230033230310239330236350770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +3a0080000001000000020002023230033230310239330236350770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02c00020001000151800006036e7330c02cc02c00020001000151800006036e7331c02cc04800010001000151800004c2a55e01c05a00010001000151800004c2a55e05 + +34889 +783e00000001000000000000037777770c767664726f7474657264616d026e6c0000010001 +783e80000001000000020002037777770c767664726f7474657264616d026e6c0000010001c0100002000100015180001204646e73310a6e65746d617374657273c01dc0100002000100015180000704646e7332c036c0310001000100015180000451044203c04f00010001000151800004510442c9 + +34890 +2775000000010000000000000c6c6962726573657276696365026e6c0000020001 +2775800000010000000200020c6c6962726573657276696365026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +34891 +7bb20000000100000000000003767070026e6c0000010001 +7bb28000000100000002000203767070026e6c0000010001c00c0002000100015180000e036e733007656173796e6574c010c00c00020001000151800006036e7331c028c02400010001000151800004c2a55e01c03e00010001000151800004c2a55e05 + +34892 +cc1e0000000100000000000007726561666f7273026e6c0000010001 +cc1e8000000100000002000207726561666f7273026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +34893 +3dfd0000000100000000000003777777086264736d61676963026e6c0000010001 +3dfd8000000100000002000003777777086264736d61676963026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c019c0100002000100015180000805646e732d32c033 + +34894 +7a0500000001000000000000076f7267616e6f6e036f737309616b7a6f6e6f62656c026e6c00000f0001 +7a0580000001000000020002076f7267616e6f6e036f737309616b7a6f6e6f62656c026e6c00000f0001c0180002000100015180000d0a676174656b6565706572c014c0180002000100015180000e036e733107737572666e6574c022c03600010001000151800004c0570302c04f00010001000151800004c0576a65 + +34895 +30d700000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +30d780000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +34896 +dbb50000000100000000000006666174696d6103646473026e6c00000f0001 +dbb58000000100000003000306666174696d6103646473026e6c00000f0001c01300020001000151800017036e733110736361726c65742d696e7465726e6574c017c01300020001000151800006036e7332c02fc01300020001000151800006036e7333c02fc02b00010001000151800004d5ccc302c04e00010001000151800004d5ccc303c06000010001000151800004c277e953 + +34897 +0f200000000100000000000003777777077768656b616d70026e6c0000010001 +0f208000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +34898 +0cb500000001000000000000026e73076e65746c616e64026e6c00001c0001 +0cb580000001000000020002026e73076e65746c616e64026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +34899 +997d00000001000000000000026e73076e65746c616e64026e6c0000260001 +997d80000001000000020002026e73076e65746c616e64026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +34900 +5e3f00000001000000000000036e7332076e65746c616e64026e6c00001c0001 +5e3f80000001000000020002036e7332076e65746c616e64026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +34901 +c02800000001000000000000036e7332076e65746c616e64026e6c0000260001 +c02880000001000000020002036e7332076e65746c616e64026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +34902 +0a0f0000000100000000000003777777077768656b616d70026e6c0000010001 +0a0f8000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +34903 +afaf00000001000000000000037777770d62657274706c616e7461676965026e6c0000010001 +afaf80000001000000020000037777770d62657274706c616e7461676965026e6c0000010001c0100002000100015180000f026e73066f786361727403636f6d00c01000020001000151800006036e7332c035 + +34904 +068700000001000000000000036e733103696166026e6c0000010001 +068780000001000000020002036e733103696166026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045059e040c036000100010001518000045059ee03 + +34905 +f8c10000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +f8c18000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +34906 +984a0000000100000000000006626c69636f6e026e6c0000010001 +984a8000000100000002000206626c69636f6e026e6c0000010001c00c00020001000151800010036e733109637265616374697665c013c00c00020001000151800006036e7332c02bc02700010001000151800004505faa04c04300010001000151800004505faa06 + +34907 +6e2a00000001000000000000036e73320b696e7465727374726f6f6d026e6c0000010001 +6e2a80000001000000020002036e73320b696e7465727374726f6f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000450558121c00c00010001000151800004d58141c4 + +34908 +cf9a00000001000000000000036e73310b696e7465727374726f6f6d026e6c0000010001 +cf9a80000001000000020002036e73310b696e7465727374726f6f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450558121c03e00010001000151800004d58141c4 + +34909 +af5500000001000000000000046d61696c067265776f726b026e6c0000010001 +af5580000001000000020000046d61696c067265776f726b026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c032 + +34910 +f98600000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +f98680000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +34911 +fcc300000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000260001 +fcc380000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +34912 +7b5f00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +7b5f80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +34913 +5c8c00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000260001 +5c8c80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +34914 +2e4600000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +2e4680000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +34915 +4bd500000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000260001 +4bd580000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +34916 +2ac7000000010000000000000a656c656374726162656c026e6c00001c0001 +2ac7800000010000000200010a656c656374726162656c026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004d535c463 + +34917 +d43a0000000100000000000004646e73310a6e65746d617374657273026e6c0000010001 +d43a8000000100000002000204646e73310a6e65746d617374657273026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c0001000100015180000451044203c03e00010001000151800004510442c9 + +34918 +784d0000000100000000000004646e73310a6e65746d617374657273026e6c00001c0001 +784d8000000100000002000204646e73310a6e65746d617374657273026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c0001000100015180000451044203c03e00010001000151800004510442c9 + +34919 +47360000000100000000000004646e73310a6e65746d617374657273026e6c0000260001 +47368000000100000002000204646e73310a6e65746d617374657273026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c0001000100015180000451044203c03e00010001000151800004510442c9 + +34920 +10d40000000100000000000004646e73320a6e65746d617374657273026e6c0000010001 +10d48000000100000002000204646e73320a6e65746d617374657273026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0300001000100015180000451044203c00c00010001000151800004510442c9 + +34921 +9a9400000001000000000000036e7331046372696f026e6c0000010001 +9a9480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34922 +be610000000100000000000004646e73320a6e65746d617374657273026e6c00001c0001 +be618000000100000002000204646e73320a6e65746d617374657273026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0300001000100015180000451044203c00c00010001000151800004510442c9 + +34923 +d15900000001000000000000036e7332046372696f026e6c0000010001 +d15980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34924 +a60000000001000000000000037777770a72656372656174696566026e6c0000010001 +a60080000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +34925 +55e00000000100000000000004646e73320a6e65746d617374657273026e6c0000260001 +55e08000000100000002000204646e73320a6e65746d617374657273026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0300001000100015180000451044203c00c00010001000151800004510442c9 + +34926 +c32100000001000000000000036e7335046372696f026e6c0000010001 +c32180000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34927 +40a700000001000000000000036e7336046372696f026e6c0000010001 +40a780000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34928 +e860000000010000000000000377777703776562026e6c0000010001 +e860800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +34929 +f29000000001000000000000036e7331046372696f026e6c0000010001 +f29080000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34930 +805000000001000000000000036e7332046372696f026e6c0000010001 +805080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34931 +d59a00000001000000000000036e7335046372696f026e6c0000010001 +d59a80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34932 +45d300000001000000000000036e7336046372696f026e6c0000010001 +45d380000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +34933 +adde00000001000000000000037777770d7a616e647374726173706f7274026e6c0000010001 +adde80000001000000020002037777770d7a616e647374726173706f7274026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c01ec01000020001000151800006036e7332c035c03200010001000151800004d5e38d0ac04f00010001000151800004d5e38205 + +34934 +4a5900000001000000000000077369656d656e73026e6c00001c0001 +4a5980000001000000020002077369656d656e73026e6c00001c0001c00c000200010001518000070473676e32c00cc00c000200010001518000070473676e34c00cc02800010001000151800004c28a8909c03b00010001000151800004c28a890b + +34935 +357600000001000000000000026e73067874646e6574026e6c00001c0001 +357680000001000000020002026e73067874646e6574026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +34936 +778900000001000000000000026e73067874646e6574026e6c0000260001 +778980000001000000020002026e73067874646e6574026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +34937 +5aa100000001000000000000037777770a6272756e656c2d696374026e6c0000010001 +5aa180000001000000020000037777770a6272756e656c2d696374026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c032 + +34938 +de07000000010000000000000765313834303839057570632d65066368656c6c6f026e6c0000010001 +de07800000010000000300030765313834303839057570632d65066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +34939 +33ef000000010000000000000e6169646d696e6973747261746f72026e6c0000010001 +33ef800000010000000300030e6169646d696e6973747261746f72026e6c0000010001c00c0002000100015180000c036e7331053266617374c01bc00c00020001000151800006036e7332c033c00c00020001000151800006036e7333c033c02f0001000100015180000450f7c022c047000100010001518000043e858122c059000100010001518000045117eb22 + +34940 +f3c60000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +f3c68000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34941 +16770000000100000000000007686f74706f6c6c026e6c0000010001 +16778000000100000002000207686f74706f6c6c026e6c0000010001c00c00020001000151800009036e7331026973c014c00c00020001000151800006036e7332c02cc02800010001000151800004d5852102c03d00010001000151800004d5c41503 + +34942 +680a00000001000000000000026e73076e656473746174026e6c00001c0001 +680a80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34943 +a45300000001000000000000026e73076e656473746174026e6c0000260001 +a45380000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +34944 +68b700000001000000000000036e7332076e656473746174026e6c0000010001 +68b780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34945 +874d00000001000000000000036e7332076e656473746174026e6c00001c0001 +874d80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34946 +b8a800000001000000000000036e7332076e656473746174026e6c0000260001 +b8a880000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34947 +4d4600000001000000000000036e7333076e656473746174026e6c00001c0001 +4d4680000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34948 +f2bb00000001000000000000036e7333076e656473746174026e6c0000260001 +f2bb80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +34949 +35e500000001000000000000036e7334076e656473746174026e6c0000010001 +35e580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34950 +52bf00000001000000000000036e7334076e656473746174026e6c00001c0001 +52bf80000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34951 +677800000001000000000000036e7334076e656473746174026e6c0000260001 +677880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +34952 +179028000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d73646373087669616475746368026e6c000021000100000258001a00000064005806736572766572087669616475746368026e6c00 +1790a8040000000000000000 + +34953 +1b6e0000000100000000000009652d6c756e61746963026e6c0000010001 +1b6e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34954 +2bd90000000100000000000009652d6c756e61746963026e6c0000010001 +2bd98000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34955 +2dbf00000001000000000000036e733109666972737466696e64026e6c0000010001 +2dbf80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34956 +00000000700240008d750000020405b401010402 +000080010000000000000000 + +34957 +2e3900000001000000000000036e733209666972737466696e64026e6c0000010001 +2e3980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34958 +f857000000010000000000000b676f656465676562757572026e6c00000f0001 +f857800000010000000200020b676f656465676562757572026e6c00000f0001c00c00020001000151800010036e7331096e657467726f756e64c018c00c00020001000151800006036e7332c030c02c000100010001518000045054e415c0480001000100015180000451046014 + +34959 +b729774550104470874a0000000000000000 +b729f7440000000000000000 + +34960 +b729774550184470362b0000008bed00000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0328403c54a800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 +b729f7440000000000000000 + +34961 +000000007002faf067e800000204056401010402 +000080010000000000000000 + +34962 +3f0e00000001000000000000046c756d63026e6c00001c0001 +3f0e80000001000000030003046c756d63026e6c00001c0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000e036e733107737572666e6574c011c025000100010001518000049158d2eac037000100010001518000049158d30ac04900010001000151800004c0576a65 + +34963 +b72977535011446286bc0000000000000000 +b729f7540000000000000000 + +34964 +0000000070024000a8b50000020405b401010402 +000080010000000000000000 + +34965 +b72a677e5010fd5c73370000000000000000 +b72ae7740000000000000000 + +34966 +b72977545010446286bb0000000000000000 +b729f7540000000000000000 + +34967 +b72b311750104470e8b60000000000000000 +b72bb1140000000000000000 + +34968 +b72b311750184470f0980000008b9500000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0328403c54a800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 +b72bb1140000000000000000 + +34969 +b72b312550114462e8280000000000000000 +b72bb1240000000000000000 + +34970 +3a4000000001000000000000036e73340767617574656e67026e6c0000010001 +3a4080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +34971 +b72a677e5018fd5c94760000008f430e000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403af354403c44d40003000000324e544c4d535350000100000097b208e00a000a0028000000080008002000000050434f4f535431364f4f535445494e4445520000 +b72ae7740000000000000000 + +34972 +0000000070024000c1d20000020405b401010402 +000080010000000000000000 + +34973 +da1c00000001000000000000044e545331063139594f3030024e4c0000060001 +da1c84030001000000010000044e545331063139594f3030024e4c0000060001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +34974 +b72b312650104462e8270000000000000000 +b72bb1240000000000000000 + +34975 +5b2f28000001000200000000026e6c00000600010676626769736109766267696e7465726e026e6c00000500fe000000000000c014000100010000000000043e3aa622 +5b2fa8040000000000000000 + +34976 +b72c139b501044701f4f0000000000000000 +b72c93940000000000000000 + +34977 +cc7b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cc7b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34978 +939d0000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +939d8000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +34979 +b72c139b50184470e9300000008bd300000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403b0328403c54a800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552444f4d41494e0000 +b72c93940000000000000000 + +34980 +b72a678c5011fd4e72a50000000000000000 +b72ae7840000000000000000 + +34981 +32e90000000100000000000009652d6c756e61746963026e6c0000010001 +32e98000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34982 +524f00000001000000000000036e733503777873026e6c0000010001 +524f80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +34983 +00000000700240006be700000204059801010402 +000080010000000000000000 + +34984 +1b7d0000000100000000000009652d6c756e61746963026e6c0000010001 +1b7d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +34985 +000000007002faf0a28e00000204056401010402 +000080010000000000000000 + +34986 +b72c13a9501144621ec10000000000000000 +b72c93a40000000000000000 + +34987 +4b120010000100000000000006706163746f6e026e6c0000010001 +4b128000000100000003000206706163746f6e026e6c0000010001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +34988 +b72a678d5010fd4e72a40000000000000000 +b72ae7840000000000000000 + +34989 +b72cd229501043200c090000000000000000 + + +34990 +446b00000001000000000000036e733109666972737466696e64026e6c0000010001 +446b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34991 +b72c13aa501044621ec00000000000000000 +b72c93a40000000000000000 + +34992 +b72cd2295018432050a20000008bbf42000000010001000000000f313235343133303435303435302d330000f900010f313235343133303435303435302d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd01403c4e8100030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 + + +34993 +793900000001000000000000036e733209666972737466696e64026e6c0000010001 +793980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +34994 +b72da6d95010fd5c6e7f0000000000000000 + + +34995 +b72cd237501143120b7b0000000000000000 + + +34996 +ac7f00000001000000000000037777770476697065026e6c00001c0001 +ac7f80000001000000030002037777770476697065026e6c00001c0001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +34997 +0000000070024000577700000204059801010402 +000080010000000000000000 + +34998 +b0db00000001000000000000046d61696c06657461737465026e6c0000010001 +b0db80000001000000020002046d61696c06657461737465026e6c0000010001c0110002000100015180000c036e73310573796e7267c018c01100020001000151800006036e7332c030c02c0001000100015180000452c04b0bc0440001000100015180000452c04b0c + +34999 +3c8d00000001000000000000026e73076e656473746174026e6c0000010001 +3c8d80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35000 +5a1400000001000000000000036e7333076e656473746174026e6c0000010001 +5a1480000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +35001 +b72da6d95018fd5cf1950000008fe336000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403af354403c44d40003000000324e544c4d535350000100000097b208e00a000a0028000000080008002000000050434f4f535431364f4f535445494e4445520000 + + +35002 +b72cd238501043120b7a0000000000000000 + + +35003 +b72e32b150104320970f0000000000000000 +b72eb2b40000000000000000 + +35004 +b72e32b150184320e3db0000008bb810000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd01403c4e8100030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 +b72eb2b40000000000000000 + +35005 +b67000000001000000000000036e73320a7a65656c616e646e6574026e6c0000010001 +b67080000001000000020002036e73320a7a65656c616e646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +35006 +924f00000001000000000000037777770862696c6c32303030026e6c0000010001 +924f80000001000000020002037777770862696c6c32303030026e6c0000010001c0100002000100015180000b036e7331046e732d31c019c01000020001000151800006036e7332c031c02d000100010001518000045045a0cdc04400010001000151800004d4cceec8 + +35007 +b72da6e75011fd4e6ded0000000000000000 + + +35008 +b72e32bf5011431296810000000000000000 +b72eb2b40000000000000000 + +35009 +577000000001000000000000087761726368696c64026e6c00000f0001 +577080000001000000020002087761726368696c64026e6c00000f0001c00c0002000100015180000b026e73057162616c6cc015c00c0002000100015180000f026e7309747269706c652d6974c015c02900010001000151800004d584b024c04000010001000151800004d584b002 + +35010 +17480000000100000000000003777777056d656e7537026e6c0000010001 +17488403000100000001000003777777056d656e7537026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +35011 +00000000700240007aec00000204059801010402 +000080010000000000000000 + +35012 +000000007002faf03bc200000204056401010402 +000080010000000000000000 + +35013 +3a6b00000001000000000000036e73330767617574656e67026e6c0000010001 +3a6b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35014 +1a7400000001000000000000036e73330767617574656e67026e6c0000010001 +1a7480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35015 +b72e32c05010431296800000000000000000 +b72eb2c40000000000000000 + +35016 +7d5700000001000000000000026e730e64617461636f6e686f7374696e67026e6c0000260001 +7d5780000001000000020002026e730e64617461636f6e686f7374696e67026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d43d2934c04000010001000151800004d468d143 + +35017 +be7900000001000000000000026e730e64617461636f6e686f7374696e67026e6c00001c0001 +be7980000001000000020002026e730e64617461636f6e686f7374696e67026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d43d2934c04000010001000151800004d468d143 + +35018 +b72ec244501043202af10000000000000000 + + +35019 +4fce00000001000000000000036e73320e64617461636f6e686f7374696e67026e6c0000260001 +4fce80000001000000020002036e73320e64617461636f6e686f7374696e67026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc03300010001000151800004d43d2934c00c00010001000151800004d468d143 + +35020 +13dc00000001000000000000036e73320e64617461636f6e686f7374696e67026e6c00001c0001 +13dc80000001000000020002036e73320e64617461636f6e686f7374696e67026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc03300010001000151800004d43d2934c00c00010001000151800004d468d143 + +35021 +b72ec24450184320a80f0000008b87be000000010001000000000f313235343133303435303435302d320000f900010f313235343133303435303435302d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd01403c4e8100030000002c4e544c4d535350000100000097b208e006000600260000000600060020000000564247495341564247444f4d0000 + + +35022 +b72da6e85010fd4e6dec0000000000000000 + + +35023 +b72f4ee65010fd5c5fa40000000000000000 +b72fcee40000000000000000 + +35024 +51ab00000001000000000000036e733307747564656c6674026e6c0000010001 +51ab80000001000000050005036e733307747564656c6674026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c03e0001000100015180000482a1b441c0500001000100015180000482a12111c0650001000100015180000482a1bc8cc07e00010001000151800004c0576a65 + +35025 +5a4b000000010000000000000a616d65726c616e64656e026e6c0000ff0001 +5a4b800000010000000200020a616d65726c616e64656e026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +35026 +b72ec252501143122a630000000000000000 + + +35027 +11060000000100000000000008686f73746e616d650462696e640000100003 +11068000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35028 +42520000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +42528000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +35029 +b72ec253501043122a620000000000000000 + + +35030 +b72f4ee65018fd5c51cb0000008f7426000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403af354403c44d40003000000324e544c4d535350000100000097b208e00a000a0028000000080008002000000050434f4f535431364f4f535445494e4445520000 +b72fcee40000000000000000 + +35031 +a525000000010000000000000450433032116269626c696f746865656b626c6164656c026e6c0000010001 +a525840300010000000100000450433032116269626c696f746865656b626c6164656c026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +35032 +495300000001000000000000036e7331086e6f766178657373026e6c0000010001 +495380000001000000030003036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +35033 +325200000001000000000000036e73330767617574656e67026e6c0000010001 +325280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35034 +28d50000000100000000000008747269746f6e30370761626e616d726f026e6c0000010001 +28d58000000100000002000208747269746f6e30370761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c0150002000100015180000b0870686f626f733032c015c03100010001000151800004a7cac30bc04800010001000151800004a7cac30c + +35035 +b72f4ef45011fd4e5f120000000000000000 +b72fcef40000000000000000 + +35036 +46e700000001000000000000037777770f6265726b6f2d706572736c75636874026e6c0000010001 +46e780000001000000020002037777770f6265726b6f2d706572736c75636874026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c020c01000020001000151800006036e7332c038c034000100010001518000045054f347c050000100010001518000043e94a047 + +35037 +5d2d28000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d736463730f737465726e2d736572766572626f6c026e6c0000210001000002580027000000640cc40c737465726e2d7365727665720f737465726e2d736572766572626f6c026e6c00 +5d2da8040000000000000000 + +35038 +035e00000001000000000000077765626d61696c06646573796465026e6c0000010001 +035e80000001000000030003077765626d61696c06646573796465026e6c0000010001c0140002000100015180000f046e732d310774657075636f6dc01bc01400020001000151800007046e732d32c034c01400020001000151800007046e732d33c034c02f000100010001518000043e320d4cc04a00010001000151800004c356164ac05d00010001000151800004c3510c03 + +35039 +0000000070024000192e00000204057a01010402 +000080010000000000000000 + +35040 +b72f4ef55010fd4e5f110000000000000000 +b72fcef40000000000000000 + +35041 +653100000001000000000000036e733209666972737466696e64026e6c0000010001 +653180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35042 +ae820000000100000000000003777777056465726174026e6c0000010001 +ae828000000100000002000203777777056465726174026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c016c0100002000100015180001004646e733208636f6e6365707473c016c02a00010001000151800004d5c51c03c04700010001000151800004d5c51e1c + +35043 +b7315009501041b83cb50000000000000000 +b731d0040000000000000000 + +35044 +df3b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +df3b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35045 +b7315009501841b8edef000000947700000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe38403c4fb80003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 +b731d0040000000000000000 + +35046 +046a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +046a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35047 +b7315017501141aa3c1e0000000000000000 +b731d0140000000000000000 + +35048 +366a0000000100000000000008686f73746e616d650462696e640000100003 +366a8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35049 +0000000070024000f64500000204057a01010402 +000080010000000000000000 + +35050 +5f3800000001000000000000026e7308767575727765726b026e6c0000010001 +5f3880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +35051 +9bd800000001000000000000026e7308767575727765726b026e6c0000010001 +9bd880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +35052 +a7ea00000001000000000000026e7308767575727765726b026e6c00001c0001 +a7ea80000001000000030001026e7308767575727765726b026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +35053 +f1b900000001000000000000026e7308767575727765726b026e6c0000260001 +f1b980000001000000030001026e7308767575727765726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +35054 +b7315018501041aa3c1d0000000000000000 +b731d0140000000000000000 + +35055 +c173000000010000000000000b74616e6461727473636f78026e6c00001c0001 +c173800000010000000200000b74616e6461727473636f78026e6c00001c0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c033 + +35056 +b731dfc4501041b88a110000000000000000 + + +35057 +b731dfc4501841b8ce8c00000094e4c0000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe38403c4fb80003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 + + +35058 +97d800000001000000000000026e73056e65726f63026e6c00001c0001 +97d880000001000000020002026e73056e65726f63026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +35059 +a64a00000001000000000000036e7332056e65726f63026e6c00001c0001 +a64a80000001000000020002036e7332056e65726f63026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +35060 +b731dfd2501141aa897a0000000000000000 + + +35061 +00000000700240000d5b00000204057a01010402 +000080010000000000000000 + +35062 +428f000000010000000000000377777709636c61737369636f6e026e6c0000010001 +428f800000010000000200010377777709636c61737369636f6e026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +35063 +b731dfd3501041aa89790000000000000000 + + +35064 +ea3d00000001000000000000036e7332056132303030026e6c0000010001 +ea3d80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +35065 +b732a88d501041b8d85c0000000000000000 + + +35066 +d6c300000001000000000000037777770e686574626c657373657061617264026e6c0000010001 +d6c380000001000000020002037777770e686574626c657373657061617264026e6c0000010001c0100002000100015180000c026e730674656c6c7573c01fc01000020001000151800006036e7332c036c033000100010001518000043e3a4cc8c04b000100010001518000043e3a4cc9 + +35067 +b732a88d501841b854d800000094acc0000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afe38403c4fb80003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000535445524e2d534552564552534552564552424f4c0000 + + +35068 +b732a89b501141aad7c50000000000000000 + + +35069 +686c000000010000000000000a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001 +686c800000010000000200020a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001c01700020001000151800006036e7331c017c0170002000100015180000e036e733107737572666e6574c021c03500010001000151800004c2ab230bc04700010001000151800004c0576a65 + +35070 +851600000001000000000000037777770c6c6974746c656475626c696e026e6c0000010001 +851680000001000000020002037777770c6c6974746c656475626c696e026e6c0000010001c0100002000100015180000d04696973310577696e646fc01dc01000020001000151800008056969733137c036c03100010001000151800004d9aa050bc04a00010001000151800004d9aa0430 + +35071 +9a8600000001000000000000026e73096772616669656b6173026e6c00001c0001 +9a8680000001000000020001026e73096772616669656b6173026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ac0103 + +35072 +b732a89c501041aad7c40000000000000000 + + +35073 +43390000000100000000000003777777086469726b6b757974026e6c0000010001 +43398000000100000002000003777777086469726b6b757974026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +35074 +122400000001000000000000037777771374757373656e6b756e7374656e6b6974736368026e6c0000010001 +122480000001000000020002037777771374757373656e6b756e7374656e6b6974736368026e6c0000010001c0100002000100015180000a026e730469636d63c024c01000020001000151800006036e7332c03bc038000100010001518000043e643805c04e000100010001518000043e643806 + +35075 +31430000000100000000000006617474697661026e6c00000f0001 +31438000000100000002000206617474697661026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +35076 +8140000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +8140800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +35077 +466200000001000000000000037777770a6873766465766f6f726e026e6c0000010001 +466280000001000000020000037777770a6873766465766f6f726e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +35078 +1fd30000000100000000000003777777056a756d626f026e6c0000010001 +1fd38000000100000002000203777777056a756d626f026e6c0000010001c0100002000100015180000c036e733105616b726973c016c0100002000100015180000e066e6562756c610476627662c016c02a00010001000151800004d44837b7c04200010001000151800004d44837b3 + +35079 +f66100000001000000000000026e73076e656473746174026e6c0000010001 +f66180000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35080 +93af0000000100000000000007736d6964746a65026e6c00001c0001 +93af8000000100000002000207736d6964746a65026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +35081 +4ad500000001000000000000026e73076e656473746174026e6c0000010001 +4ad580000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35082 +7e2e00000001000000000000036e7333076e656473746174026e6c0000010001 +7e2e80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +35083 +70f800000001000000000000036e7333076e656473746174026e6c0000010001 +70f880000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +35084 +062100000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +062180000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +35085 +66a300000001000000000000036e73320d63656e747269636f6e6c696e65026e6c0000010001 +66a380000001000000020002036e73320d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d481ec0cc00c00010001000151800004d590e63a + +35086 +1fb200000001000000000000037777770b6e65756b6a657061617264026e6c0000010001 +1fb280000001000000020002037777770b6e65756b6a657061617264026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01cc01000020001000151800006036e7332c034c030000100010001518000045054e415c04c0001000100015180000451046014 + +35087 +294400000001000000000000036e733209656174736572766572026e6c0000010001 +294480000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +35088 +0a7400000001000000000000026e7309656174736572766572026e6c0000010001 +0a7480000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +35089 +771000000001000000000000036e73320f444f4d41494e2d5245474953545259026e6c00001c0001 +771080000001000000030002036e73320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35090 +8e2600000001000000000000026e730f444f4d41494e2d5245474953545259026e6c00001c0001 +8e2680000001000000030002026e730f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +35091 +d6cd00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +d6cd80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +35092 +f6c400000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +f6c480000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35093 +3f0800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +3f0880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35094 +7c9900000001000000000000037777770372746c026e6c0000010001 +7c9980000001000000020001037777770372746c026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c014c01000020001000151800011036e733207636c742d756661036e657400c02800010001000151800004c3c1ca77 + +35095 +178d00000001000000000000036e7332076e656473746174026e6c0000010001 +178d80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35096 +595d00000001000000000000036e7334076e656473746174026e6c0000010001 +595d80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35097 +2d52000000010000000000000c756e647574636861626c6573026e6c00000f0001 +2d52800000010000000300010c756e647574636861626c6573026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c019c00c00020001000151800010026e7307696e746f756368036e657400c00c00020001000151800007046e733031c049c02d00010001000151800004d413c001 + +35098 +7da900000001000000000000036e73310765766964656e74026e6c0000010001 +7da980000001000000020002036e73310765766964656e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c36d19c4c03a00010001000151800004c36d1942 + +35099 +7daa00000001000000000000036e73320765766964656e74026e6c0000010001 +7daa80000001000000020002036e73320765766964656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c36d19c4c00c00010001000151800004c36d1942 + +35100 +185f0000000100000000000003777777026e75026e6c0000010001 +185f8000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +35101 +6e9d00000001000000000000097361656e64656c667406736974653475026e6c0000010001 +6e9d80000001000000020000097361656e64656c667406736974653475026e6c0000010001c01600020001000151800010036e73310673697465347503636f6d00c01600020001000151800006036e7332c035 + +35102 +7cfa000000010000000000000773746f616d7362026e6c00000f0001 +7cfa840300010000000100000773746f616d7362026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +35103 +07470000000100000000000013676f6c64656e2d74756c69702d6c656964656e026e6c00000f0001 +07478000000100000002000013676f6c64656e2d74756c69702d6c656964656e026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c03b + +35104 +55a400000001000000000000036e733103686973026e6c0000010001 +55a480000001000000030003036e733103686973026e6c0000010001c0100002000100015180000e076e73617574683103626974c014c0100002000100015180000a076e736175746832c030c0100002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +35105 +904b00000001000000000000026e730e61726765776562686f7374696e67026e6c0000010001 +904b80000001000000030003026e730e61726765776562686f7374696e67026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7330c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004c3561682c04000010001000151800004c3561683c05200010001000151800004d5de0bfa + +35106 +215600000001000000000000026e730e61726765776562686f7374696e67026e6c0000260001 +215680000001000000030003026e730e61726765776562686f7374696e67026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7330c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004c3561682c04000010001000151800004c3561683c05200010001000151800004d5de0bfa + +35107 +90ab00000001000000000000036e73300e61726765776562686f7374696e67026e6c0000010001 +90ab80000001000000030003036e73300e61726765776562686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03300010001000151800004c3561682c00c00010001000151800004c3561683c05200010001000151800004d5de0bfa + +35108 +192300000001000000000000036e73300e61726765776562686f7374696e67026e6c0000260001 +192380000001000000030003036e73300e61726765776562686f7374696e67026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03300010001000151800004c3561682c00c00010001000151800004c3561683c05200010001000151800004d5de0bfa + +35109 +327e00000001000000000000036e73330e61726765776562686f7374696e67026e6c0000010001 +327e80000001000000030003036e73330e61726765776562686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7330c010c01000020001000151800002c00cc03300010001000151800004c3561682c04400010001000151800004c3561683c00c00010001000151800004d5de0bfa + +35110 +193f00000001000000000000036e73330e61726765776562686f7374696e67026e6c0000260001 +193f80000001000000030003036e73330e61726765776562686f7374696e67026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7330c010c01000020001000151800002c00cc03300010001000151800004c3561682c04400010001000151800004c3561683c00c00010001000151800004d5de0bfa + +35111 +d9fd000000010000000000001264696572656e6b6c696e69656b6272656461026e6c0000010001 +d9fd800000010000000200001264696572656e6b6c696e69656b6272656461026e6c0000010001c00c00020001000151800016036e73310c776f726c6477696465646e73036e657400c00c00020001000151800006036e7332c037 + +35112 +e1a800000001000000000000046162656c0564656d6f6e026e6c0000010001 +e1a880000001000000030002046162656c0564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +35113 +283a000000010000000000000b6d6574726f6e6965757773026e6c00000f0001 +283a800000010000000300010b6d6574726f6e6965757773026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +35114 +328b00000001000000000000036e73330767617574656e67026e6c0000010001 +328b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35115 +a1070000000100000000000008414c414e48455249024e4c0000010001 +a1078000000100000002000008414c414e48455249024e4c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +35116 +bc2300000001000000000000037777770b7075626c697472656e6473026e6c0000010001 +bc2380000001000000030003037777770b7075626c697472656e6473026e6c0000010001c0100002000100015180000e076e73617574683103626974c01cc0100002000100015180000a076e736175746832c038c0100002000100015180000a076e736175746833c038c03000010001000151800004d5880c33c04a00010001000151800004d5880c3bc06000010001000151800004d4ccc00b + +35117 +c181000000010000000000000c4d41494c2d42415354494f4e04504f525409524f5454455244414d024e4c0000010001 +c181800000010000000300030c4d41494c2d42415354494f4e04504f525409524f5454455244414d024e4c0000010001c01e0002000100015180000c0967616e796d65646573c01ec01e00020001000151800007046c656461c01ec01e00020001000151800014036e733203676e7309676574726f6e696373c028c03c00010001000151800004d5c9cf50c05400010001000151800004d5c9cf19c06700010001000151800004910d2a05 + +35118 +607e0000000100000000000005656f77796e0b7669616e6574776f726b73026e6c0000010001 +607e8000000100000002000205656f77796e0b7669616e6574776f726b73026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c03200010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +35119 +07d6000000010000000000000563696e647902657407747564656c6674026e6c00000f0001 +07d6800000010000000500050563696e647902657407747564656c6674026e6c00000f0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7331c012c0150002000100015180000d07647574746e636202746ec015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000482a1b401c0430001000100015180000482a1b441c0550001000100015180000482a12111c0670001000100015180000482a1bc8cc08000010001000151800004c0576a65 + +35120 +0a9200000001000000000000036e73340767617574656e67026e6c0000010001 +0a9280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35121 +f4f600000001000000000000037777770f686176696e6761736f667477617265026e6c0000010001 +f4f680000001000000020002037777770f686176696e6761736f667477617265026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +35122 +157b00000001000000000000106865726465726175746f736368616465026e6c0000010001 +157b80000001000000020002106865726465726175746f736368616465026e6c0000010001c00c0002000100015180000d026e73076b6e6f77617265c01dc00c00020001000151800006036e7332c034c03100010001000151800004c3402003c04a00010001000151800004c340202b + +35123 +353f00000001000000000000036e7334066e6179757461026e6c0000010001 +353f80000001000000020002036e7334066e6179757461026e6c0000010001c01000020001000151800006036e7336c010c01000020001000151800006036e7335c010c02b0001000100015180000451144410c03d000100010001518000043dd5ab66 + +35124 +4c0400000001000000000000036e7335066e6179757461026e6c0000010001 +4c0480000001000000020002036e7335066e6179757461026e6c0000010001c01000020001000151800006036e7336c010c01000020001000151800002c00cc02b0001000100015180000451144410c00c000100010001518000043dd5ab66 + +35125 +f69f000000010000000000000377777707696e6768697374026e6c0000010001 +f69f800000010000000300030377777707696e6768697374026e6c0000010001c0100002000100015180000f05636f627261066b6f6e626962c018c0100002000100015180000906707974686f6ec032c0100002000100015180000e036e733107737572666e6574c018c02c00010001000151800004c0571f16c04700010001000151800004c0571f0bc05c00010001000151800004c0576a65 + +35126 +066c00000001000000000000087468656f6368656d036b756e026e6c00001c0001 +066c80000001000000030003087468656f6368656d036b756e026e6c00001c0001c0150002000100015180000f08636170796261726103756369c015c0150002000100015180000a036e733103736369c015c0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483ae3c15c0480001000100015180000483aee004c05e00010001000151800004c0576a65 + +35127 +bd3e00100001000000000001076d61696c6d696a026e6c00001c00010000290800000000000000 +bd3e80000001000000020003076d61696c6d696a026e6c00001c0001c00c0002000100015180000b026e73057162616c6cc014c00c0002000100015180000f026e7309747269706c652d6974c014c02800010001000151800004d584b024c03f00010001000151800004d584b0020000291000000000000000 + +35128 +c9a100100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +c9a180000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +35129 +dd6600100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +dd6680000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +35130 +a27f00000001000000000000076d61696c6d696a026e6c00001c0001 +a27f80000001000000020002076d61696c6d696a026e6c00001c0001c00c0002000100015180000b026e73057162616c6cc014c00c0002000100015180000f026e7309747269706c652d6974c014c02800010001000151800004d584b024c03f00010001000151800004d584b002 + +35131 +f9c6000000010000000000000767313633313931057570632d67066368656c6c6f026e6c0000010001 +f9c6800000010000000300030767313633313931057570632d67066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +35132 +ec1500000001000000000000037777770c6465747765656c696e67656e026e6c0000010001 +ec1580000001000000020000037777770c6465747765656c696e67656e026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c037 + +35133 +34af0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +34af8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35134 +6d620000000100000000000003777777106176726f6b756e737474726962756e65026e6c0000010001 +6d628000000100000002000203777777106176726f6b756e737474726962756e65026e6c0000010001c0100002000100015180000a026e730469636d63c021c01000020001000151800006036e7332c038c035000100010001518000043e643805c04b000100010001518000043e643806 + +35135 +721100000001000000000000076e6f7768657265026e6c00000f0001 +721180000001000000020000076e6f7768657265026e6c00000f0001c00c00020001000151800010026e73076e65737363697303636f6d00c00c00020001000151800006036e7332c02b + +35136 +1b40000000010000000000000a63616d706f776f726c64026e6c0000010001 +1b40800000010000000200020a63616d706f776f726c64026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +35137 +879300000001000000000000036e73310d706f7765727365727665723230026e6c00001c0001 +879380000001000000020002036e73310d706f7765727365727665723230026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +35138 +022f00000001000000000000036e73310d706f7765727365727665723230026e6c0000260001 +022f80000001000000020002036e73310d706f7765727365727665723230026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +35139 +dcd800000001000000000000036e73320d706f7765727365727665723230026e6c00001c0001 +dcd880000001000000020002036e73320d706f7765727365727665723230026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +35140 +304d00000001000000000000036e73320d706f7765727365727665723230026e6c0000260001 +304d80000001000000020002036e73320d706f7765727365727665723230026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +35141 +6a84000000010000000000000377696a026e6c00000f0001 +6a84800000010000000200000377696a026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c028 + +35142 +cdad00000001000000000000026869026e6c00001c0001 +cdad80000001000000020000026869026e6c00001c0001c00c0002000100015180000d03646e73036b706e03636f6d00c00c0002000100015180000d036e7332036b706e036e657400 + +35143 +6eb300000001000000000000026e73076e656473746174026e6c0000010001 +6eb380000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35144 +eccd00000001000000000000036e7333076e656473746174026e6c0000010001 +eccd80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +35145 +ee4c00000001000000000000046d61696c076e6574686f7374026e6c0000010001 +ee4c80000001000000020000046d61696c076e6574686f7374026e6c0000010001c01100020001000151800012036e73310871346d617469637303636f6d00c01100020001000151800006036e7332c031 + +35146 +4a6200000001000000000000046d61696c076e6574686f7374026e6c00001c0001 +4a6280000001000000020000046d61696c076e6574686f7374026e6c00001c0001c01100020001000151800012036e73310871346d617469637303636f6d00c01100020001000151800006036e7332c031 + +35147 +3d8000000001000000000000046d61696c076e6574686f7374026e6c0000260001 +3d8080000001000000020000046d61696c076e6574686f7374026e6c0000260001c01100020001000151800012036e73310871346d617469637303636f6d00c01100020001000151800006036e7332c031 + +35148 +9b570000000100000000000003777777036d736e026e6c0000010001 +9b578000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +35149 +c2dc000000010000000000000377777707676f6d756e646f026e6c0000010001 +c2dc800000010000000200000377777707676f6d756e646f026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +35150 +09da00000001000000000000037777770c6d6172636f626f727361746f026e6c0000010001 +09da80000001000000020002037777770c6d6172636f626f727361746f026e6c0000010001c0100002000100015180000b026e73057162616c6cc01dc0100002000100015180000f026e7309747269706c652d6974c01dc03100010001000151800004d584b024c04800010001000151800004d584b002 + +35151 +48e0000000010000000000000b6361666573746170706572026e6c00000f0001 +48e0800000010000000200000b6361666573746170706572026e6c00000f0001c00c00020001000151800010026e73076379736f6e657403636f6d00c00c00020001000151800006036e7331c02f + +35152 +0d1200000001000000000000037777770b7465616d2d6e696a686f66026e6c0000010001 +0d1280000001000000020002037777770b7465616d2d6e696a686f66026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +35153 +4d11000000010000000000000377777709636974796d75736963026e6c0000010001 +4d11800000010000000200000377777709636974796d75736963026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +35154 +7d9c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +7d9c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35155 +cf47000000010000000000000568736c6177026e6c0000ff0001 +cf47800000010000000300010568736c6177026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +35156 +ad0a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +ad0a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35157 +f0500000000100000000000003777777096b757374656e7a6565026e6c0000010001 +f0508000000100000003000103777777096b757374656e7a6565026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +35158 +d3e00000000100000000000005646e732d31056c61646f74026e6c0000010001 +d3e08000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35159 +394d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +394d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35160 +08f40000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +08f48000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +35161 +a590000000010000000000000b7761722d6f6e2d7370616d097369676e6174757265026e6c0000010001 +a590800000010000000200020b7761722d6f6e2d7370616d097369676e6174757265026e6c0000010001c01800020001000151800006036e7331c018c0180002000100015180000c036e7331057365636e73c022c03600010001000151800004d5549f4ec048000100010001518000045112a247 + +35162 +b6ab00000001000000000000046c6f7370026e6c00000f0001 +b6ab84030001000000010000046c6f7370026e6c00000f0001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +35163 +6acf00000001000000000000037777770d6465737065656c7a6f6c646572026e6c0000010001 +6acf80000001000000020000037777770d6465737065656c7a6f6c646572026e6c0000010001c0100002000100015180000f036e7331053132337873036e657400c01000020001000151800006036e7332c036 + +35164 +2390000000010000000000000461786973026e6c0000ff0001 +2390800000010000000200020461786973026e6c0000ff0001c00c000200010001518000070161026e73c00cc00c000200010001518000040162c027c02500010001000151800004d97261d9c0380001000100015180000450558124 + +35165 +75be00000001000000000000037777770a6864667261757373656e026e6c0000010001 +75be84030001000000010000037777770a6864667261757373656e026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35166 +775000000001000000000000096b6579616363657373026e6c00000f0001 +775080000001000000020002096b6579616363657373026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc016c00c00020001000151800006036e7332c02ec02a00010001000151800004c3558244c04300010001000151800004c3558245 + +35167 +6f020000000100000000000005646e732d31056c61646f74026e6c0000010001 +6f028000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35168 +2dc800000001000000000000026d7805726f2d6164026e6c0000010001 +2dc880000001000000020002026d7805726f2d6164026e6c0000010001c00f00020001000151800011026e730b6973642d686f6c6c616e64c015c00f00020001000151800006036e7332c02cc02900010001000151800004d5e38d0ac04600010001000151800004d5e38205 + +35169 +b15a000000010000000000000765636b7465636806787334616c6c026e6c0000010001 +b15a800000010000000300020765636b7465636806787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +35170 +3cef0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3cef8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35171 +147000000001000000000000046e656e6f0773747564656e7407757477656e7465026e6c0000010001 +147080000001000000030003046e656e6f0773747564656e7407757477656e7465026e6c0000010001c01900020001000151800006036e7331c019c01900020001000151800006036e7332c019c01900020001000151800006036e7333c019c0350001000100015180000482590102c0470001000100015180000482590103c05900010001000151800004c0571113 + +35172 +60130000000100000000000005646e732d31056c61646f74026e6c0000010001 +60138000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35173 +4eca00000001000000000000037777771464616e737363686f6f6c2d77657373656c696e67026e6c0000010001 +4eca80000001000000020002037777771464616e737363686f6f6c2d77657373656c696e67026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c025c01000020001000151800006036e7332c03dc039000100010001518000045104580ac059000100010001518000045104601e + +35174 +19ef00000001000000000000036e733103757063026e6c0000010001 +19ef80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +35175 +38520000000100000000000005646e732d31056c61646f74026e6c0000010001 +38528000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35176 +62d0000000010000000000000377777704616e7762026e6c0000010001 +62d0800000010000000200010377777704616e7762026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02900010001000151800004c1ac840a + +35177 +dd8700000001000000000000056479706564026e6c00000f0001 +dd8780000001000000020002056479706564026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +35178 +11590000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +11598000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +35179 +0624000000010000000000000377777703646674026e6c0000010001 +0624800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +35180 +bf7300000001000000000000046e733031066368656c6c6f026e6c0000010001 +bf7380000001000000030003046e733031066368656c6c6f026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c00c00010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +35181 +154400000001000000000000046e733032066368656c6c6f026e6c0000010001 +154480000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +35182 +82fb0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +82fb8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35183 +4a0c00000001000000000000036e7334076e656473746174026e6c0000010001 +4a0c80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35184 +250600000001000000000000036e7332076e656473746174026e6c0000010001 +250680000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35185 +c96e00000001000000000000036e7334076e656473746174026e6c0000260001 +c96e80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35186 +b27400000001000000000000036e7332076e656473746174026e6c0000260001 +b27480000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35187 +bf0200000001000000000000037777770a666c79696e6766697368026e6c0000010001 +bf0280000001000000030002037777770a666c79696e6766697368026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +35188 +0ae00000000100000000000009652d6c756e61746963026e6c0000010001 +0ae08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35189 +bf6900000001000000000000056e69627564026e6c00000f0001 +bf6980000001000000020001056e69627564026e6c00000f0001c00c00020001000151800012026e730c726967687476697375616c73c012c00c00020001000151800011036e7331076379736f6e657403636f6d00c02600010001000151800004d9aa0226 + +35190 +0afb0000000100000000000009652d6c756e61746963026e6c0000010001 +0afb8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35191 +034a0000000100000000000009652d6c756e61746963026e6c0000010001 +034a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35192 +312f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +312f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35193 +555d00000001000000000000037777770f6669746e6573736170706172616174026e6c0000010001 +555d80000001000000020002037777770f6669746e6573736170706172616174026e6c0000010001c0100002000100015180000a026e730469636d63c020c01000020001000151800006036e7332c037c034000100010001518000043e643805c04a000100010001518000043e643806 + +35194 +aa6700000001000000000000037777770e6b616c657877656264657369676e026e6c0000010001 +aa6780000001000000020002037777770e6b616c657877656264657369676e026e6c0000010001c0100002000100015180000e04646e7331066e696a636f6dc01fc0100002000100015180000704646e7332c038c03300010001000151800004d5efb108c04d00010001000151800004d5efb116 + +35195 +39ff00000001000000000000036e733109666972737466696e64026e6c0000010001 +39ff80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35196 +351b00000001000000000000036e733209666972737466696e64026e6c0000010001 +351b80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35197 +5dc50000000100000000000003736161026e6c00000f0001 +5dc58000000100000002000203736161026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c010c00c00020001000151800006036e7332c028c02400010001000151800004c2451012c03c00010001000151800004c2451212 + +35198 +d3ed000000010000000000000a73746172746b6162656c026e6c0000ff0001 +d3ed800000010000000300010a73746172746b6162656c026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +35199 +cc720000000100000000000003777777116d616e6e656e2d6e61747575726c696a6b026e6c0000010001 +cc728000000100000002000203777777116d616e6e656e2d6e61747575726c696a6b026e6c0000010001c01000020001000151800009036e7331026973c022c01000020001000151800006036e7332c03ac03600010001000151800004d5852102c04b00010001000151800004d5c41503 + +35200 +52df0010000100000000000106636861726973026e6c00000f00010000290800000000000000 +52df8000000100000002000106636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +35201 +715b000000010000000000000377777708636f6d346d617878026e6c0000010001 +715b800000010000000200000377777708636f6d346d617878026e6c0000010001c0100002000100015180000c026e73066863636e6574c019c01000020001000151800006036e7332c030 + +35202 +071f00000001000000000000037777770d736561736f6e666c6f77657273026e6c0000010001 +071f80000001000000030001037777770d736561736f6e666c6f77657273026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +35203 +1a9b00000001000000000000036e73340767617574656e67026e6c0000010001 +1a9b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35204 +3aa000000001000000000000036e73330767617574656e67026e6c0000010001 +3aa080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35205 +2ab600000001000000000000036e73340767617574656e67026e6c0000010001 +2ab680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35206 +0aaf00000001000000000000036e73340767617574656e67026e6c0000010001 +0aaf80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35207 +f39f0000000100000000000004616e73310774697363616c69026e6c0000010001 +f39f8000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +35208 +b68b0000000100000000000004616e73310774697363616c69026e6c0000260001 +b68b8000000100000003000204616e73310774697363616c69026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +35209 +68850000000100000000000004616e73320774697363616c69026e6c0000010001 +68858000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +35210 +b6ba0000000100000000000004616e73320774697363616c69026e6c0000260001 +b6ba8000000100000003000204616e73320774697363616c69026e6c0000260001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +35211 +3c8900100001000000000001036e733007656173796e6574026e6c00000100010000290800000080000000 +3c8980000001000000020003036e733007656173796e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c2a55e01c03a00010001000151800004c2a55e050000291000000000000000 + +35212 +92d500100001000000000001036e733107656173796e6574026e6c00000100010000290800000080000000 +92d580000001000000020003036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e050000291000000000000000 + +35213 +793100000001000000000000036e733109666972737466696e64026e6c0000010001 +793180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35214 +567b0000000100000000000003617468026e6c0000010001 +567b8000000100000002000203617468026e6c0000010001c00c0002000100015180000c036e73310563736e6574c010c00c00020001000151800006036e7332c028c02400010001000151800004c2451012c03c00010001000151800004c2451212 + +35215 +6e670000000100000000000008686f73746e616d650462696e640000100003 +6e678000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35216 +52df0000000100000000000008686f73746e616d650462696e640000100003 +52df8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35217 +a3020000000100000000000006636861726973026e6c00001c0001 +a3028000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35218 +1cde00000001000000000000036e733209666972737466696e64026e6c0000010001 +1cde80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35219 +b0e000000001000000000000076275726d656573026e6c00000f0001 +b0e080000001000000020000076275726d656573026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02e + +35220 +51e90000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +51e98000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35221 +331c0000000100000000000008686f73746e616d650462696e640000100003 +331c8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35222 +71750000000100000000000003626c3402626c06787334616c6c026e6c0000260001 +71758000000100000003000203626c3402626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35223 +03ea0000000100000000000008726f61647369676e07692d67726f65700a6c656964656e756e6976026e6c0000010001 +03ea8000000100000003000308726f61647369676e07692d67726f65700a6c656964656e756e6976026e6c0000010001c01d0002000100015180000b08736865726c6f636bc01dc01d0002000100015180000906776174736f6ec01dc01d0002000100015180000e036e733107737572666e6574c028c03c0001000100015180000484e50806c0530001000100015180000484e51602c06800010001000151800004c0576a65 + +35224 +80e0000000010000000000000a7061746866696e64657207692d67726f65700a6c656964656e756e6976026e6c0000010001 +80e0800000010000000300030a7061746866696e64657207692d67726f65700a6c656964656e756e6976026e6c0000010001c01f0002000100015180000b08736865726c6f636bc01fc01f0002000100015180000906776174736f6ec01fc01f0002000100015180000e036e733107737572666e6574c02ac03e0001000100015180000484e50806c0550001000100015180000484e51602c06a00010001000151800004c0576a65 + +35225 +60750000000100000000000008726f61647369676e07692d67726f65700a6c656964656e756e6976026e6c0000260001 +60758000000100000003000308726f61647369676e07692d67726f65700a6c656964656e756e6976026e6c0000260001c01d0002000100015180000b08736865726c6f636bc01dc01d0002000100015180000906776174736f6ec01dc01d0002000100015180000e036e733107737572666e6574c028c03c0001000100015180000484e50806c0530001000100015180000484e51602c06800010001000151800004c0576a65 + +35226 +735b000000010000000000000a7061746866696e64657207692d67726f65700a6c656964656e756e6976026e6c0000260001 +735b800000010000000300030a7061746866696e64657207692d67726f65700a6c656964656e756e6976026e6c0000260001c01f0002000100015180000b08736865726c6f636bc01fc01f0002000100015180000906776174736f6ec01fc01f0002000100015180000e036e733107737572666e6574c02ac03e0001000100015180000484e50806c0550001000100015180000484e51602c06a00010001000151800004c0576a65 + +35227 +78a90000000100000000000006686f72736573026e6c0000010001 +78a98000000100000002000206686f72736573026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +35228 +4e40000000010000000000000377777712706572736f6e656e64656d6f637261746965026e6c0000010001 +4e40840300010000000100000377777712706572736f6e656e64656d6f637261746965026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +35229 +2f89000000010000000000000377777706757469636f6e026e6c0000010001 +2f89800000010000000200020377777706757469636f6e026e6c0000010001c0100002000100015180000e036e7331077a6f72616e6574c017c01000020001000151800006036e7332c02fc02b0001000100015180000450552103c0450001000100015180000450552104 + +35230 +74d20000000100000000000003303131033139380364736c08636f6e6365707473026e6c0000010001 +74d28000000100000002000203303131033139380364736c08636f6e6365707473026e6c0000010001c0180002000100015180001103646e730a636f6e63657074736661c021c0180002000100015180000704646e7332c018c03500010001000151800004d5c51c03c05200010001000151800004d5c51e1c + +35231 +ccc200000001000000000000037777770b7376636f6e636f72646961026e6c0000010001 +ccc280000001000000020000037777770b7376636f6e636f72646961026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +35232 +bc360000000100000000000003706f700876656e7475726973026e6c0000010001 +bc368000000100000002000003706f700876656e7475726973026e6c0000010001c0100002000100015180000c026e7306766576696461c019c01000020001000151800006036e7332c030 + +35233 +cb0a00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +cb0a80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +35234 +51d100000001000000000000037777770470656570026e6c0000010001 +51d180000001000000020000037777770470656570026e6c0000010001c01000020001000151800010036e73610674696e74656c03636f6d00c01000020001000151800006036e7362c02d + +35235 +395b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +395b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35236 +45b70000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +45b78000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35237 +cdb300000001000000000000026e7303626974026e6c0000010001 +cdb380000001000000030003026e7303626974026e6c0000010001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b + +35238 +820a00000001000000000000036e733203626974026e6c0000010001 +820a80000001000000030003036e733203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +35239 +0e6d0000000100000000000008686f73746e616d650462696e640000100003 +0e6d8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35240 +6c5c00000001000000000000036e7333066f7264696e61026e6c0000010001 +6c5c80000001000000020001036e7333066f7264696e61026e6c0000010001c01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c02b00010001000151800004c297c1e9 + +35241 +256e00000001000000000000066d6172636f72026e6c0000010001 +256e80000001000000020002066d6172636f72026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +35242 +a3fb000000010000000000000874656c6570616374026e6c0000010001 +a3fb800000010000000200000874656c6570616374026e6c0000010001c00c0002000100015180000c026e7306656e6574636fc015c00c00020001000151800006036e7332c02c + +35243 +40cf00000001000000000000026e7306656e6574636f026e6c0000010001 +40cf80000001000000030002026e7306656e6574636f026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +35244 +016200000001000000000000036e733206656e6574636f026e6c0000010001 +016280000001000000030002036e733206656e6574636f026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +35245 +b5b60000000100000000000006657376656c64026e6c00000f0001 +b5b68000000100000002000206657376656c64026e6c00000f0001c00c0002000100015180000f036e7331086261726d61746f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004d5a0da96c04200010001000151800004d5a0da64 + +35246 +17a10000000100000000000006636861726973026e6c00000f0001 +17a18000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35247 +e2db00000001000000000000037777770a65726f7469636c697665026e6c0000010001 +e2db80000001000000020002037777770a65726f7469636c697665026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c01bc01000020001000151800006036e7331c033c02f00010001000151800004c3eaad40c04900010001000151800004c3eaad41 + +35248 +386600000001000000000000095f6b65726265726f73045f746370026463065f6d736463730f6d617274696e6e6f766174696f6e73026e6c0000060001 +386684030001000000010000095f6b65726265726f73045f746370026463065f6d736463730f6d617274696e6e6f766174696f6e73026e6c0000060001c03500060001000038400036026e730f646f6d61696e2d7265676973747279c0350a686f73746d6173746572c04c0bf1e540000070800000384000278d0000003840 + +35249 +a56e000000010000000000000777616e61646f6f026e6c00001c0001 +a56e800000010000000200010777616e61646f6f026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +35250 +200700100001000000000001026e73027575026e6c00000100010000290800000080000000 +200780000001000000040005026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d310200000291000000000000000 + +35251 +443300100001000000000001036e7332027575026e6c00000100010000290800000080000000 +443380000001000000040005036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d310200000291000000000000000 + +35252 +38c800000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f6d617274696e6e6f766174696f6e73026e6c0000060001 +38c884030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f6d617274696e6e6f766174696f6e73026e6c0000060001c05400060001000038400036026e730f646f6d61696e2d7265676973747279c0540a686f73746d6173746572c06b0bf1e540000070800000384000278d0000003840 + +35253 +929b00100001000000000001036e733106736f6c636f6e026e6c00000100010000290800000080000000 +929b80000001000000030004036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d21030000291000000000000000 + +35254 +af4d00100001000000000001036e733106736f6c636f6e026e6c00002600010000290800000080000000 +af4d80000001000000030004036e733106736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d21030000291000000000000000 + +35255 +520100100001000000000001036e733206736f6c636f6e026e6c00000100010000290800000080000000 +520180000001000000030004036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d21030000291000000000000000 + +35256 +35b200100001000000000001036e733206736f6c636f6e026e6c00002600010000290800000080000000 +35b280000001000000030004036e733206736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d21030000291000000000000000 + +35257 +26b10010000100000000000108736f6c7574696f6e06736f6c636f6e026e6c00002600010000290800000080000000 +26b18000000100000003000408736f6c7574696f6e06736f6c636f6e026e6c0000260001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d21030000291000000000000000 + +35258 +db2400000001000000000000037777770c686f7470686f746f73686f74026e6c0000010001 +db2480000001000000020000037777770c686f7470686f746f73686f74026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +35259 +4f9b00000001000000000000036e73310d706f7765727365727665723230026e6c00001c0001 +4f9b80000001000000020002036e73310d706f7765727365727665723230026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +35260 +a33f00000001000000000000036e73310d706f7765727365727665723230026e6c0000260001 +a33f80000001000000020002036e73310d706f7765727365727665723230026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +35261 +027100000001000000000000036e73320d706f7765727365727665723230026e6c00001c0001 +027180000001000000020002036e73320d706f7765727365727665723230026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +35262 +a4cd00000001000000000000036e73320d706f7765727365727665723230026e6c0000260001 +a4cd80000001000000020002036e73320d706f7765727365727665723230026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +35263 +1ac000000001000000000000036e73330767617574656e67026e6c0000010001 +1ac080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35264 +bec00000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +bec08000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35265 +016900000001000000000000036e733106736f6c636f6e026e6c0000010001 +016980000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +35266 +e47800000001000000000000036e733106736f6c636f6e026e6c0000260001 +e47880000001000000030003036e733106736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +35267 +f23c00000001000000000000036e733206736f6c636f6e026e6c0000260001 +f23c80000001000000030003036e733206736f6c636f6e026e6c0000260001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +35268 +791e00000001000000000000036e733206736f6c636f6e026e6c0000010001 +791e80000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +35269 +9e490000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000260001 +9e498000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000260001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +35270 +6563000000010000000000000377777708746f706c69737473026e6c0000010001 +6563800000010000000300030377777708746f706c69737473026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +35271 +486600000001000000000000037777770367736d026e6c0000010001 +486680000001000000020002037777770367736d026e6c0000010001c0100002000100015180000c026e7306787334616c6cc014c01000020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +35272 +f0bb00000001000000000000036e733007656173796e6574026e6c0000010001 +f0bb80000001000000020002036e733007656173796e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c2a55e01c03a00010001000151800004c2a55e05 + +35273 +0ff900000001000000000000036e733107656173796e6574026e6c0000010001 +0ff980000001000000020002036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e05 + +35274 +06f800000001000000000000046e65777306787334616c6c026e6c00000f0001 +06f880000001000000030002046e65777306787334616c6c026e6c00000f0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +35275 +e93f0000000100000000000003777777056e6f766161026e6c0000010001 +e93f8000000100000002000203777777056e6f766161026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c016c01000020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +35276 +420d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +420d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35277 +ce7c000000010000000000000363676907686f7473746174026e6c0000010001 +ce7c800000010000000200010363676907686f7473746174026e6c0000010001c01000020001000151800011036e696b0a7075626c6973686e6574c018c0100002000100015180000704646e7332c030c02c00010001000151800004c1433c0a + +35278 +419e000000010000000000000c696d6d6f636f6d6d65726365026e6c00000f0001 +419e800000010000000200000c696d6d6f636f6d6d65726365026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c032 + +35279 +316f000000010000000000000a6970336538336237333105737065656406706c616e6574026e6c00000f000100 +316f800000010000000300030a6970336538336237333105737065656406706c616e6574026e6c00000f0001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +35280 +11370000000100000000000008627572636b73656e026e6c0000010001 +11378000000100000002000008627572636b73656e026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +35281 +28ed00000001000000000000036e7332076e65746578706f026e6c0000010001 +28ed80000001000000020002036e7332076e65746578706f026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043efa0ac2c00c000100010001518000043efa0a82 + +35282 +b27300000001000000000000037777770a74687569736d61726b74026e6c0000010001 +b27380000001000000020000037777770a74687569736d61726b74026e6c0000010001c0100002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0100002000100015180000d077669312d6e7330026174c03a + +35283 +65ef00000001000000000000036e7332076e65746578706f026e6c00001c0001 +65ef80000001000000020002036e7332076e65746578706f026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043efa0ac2c00c000100010001518000043efa0a82 + +35284 +63c700000001000000000000026e73076e65746578706f026e6c0000010001 +63c780000001000000020002026e73076e65746578706f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043efa0ac2c039000100010001518000043efa0a82 + +35285 +717300000001000000000000026e73076e65746578706f026e6c00001c0001 +717380000001000000020002026e73076e65746578706f026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043efa0ac2c039000100010001518000043efa0a82 + +35286 +c06f000000010000000000000674686573636f026e6c0000ff0001 +c06f800000010000000200020674686573636f026e6c0000ff0001c00c00020001000151800011036e73310a696e746572706c617a61c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5f72f2dc04400010001000151800004d5c1d528 + +35287 +ceb100000001000000000000036e733207626265796f6e64026e6c00001c0001 +ceb180000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +35288 +f80900000001000000000000036e733107626265796f6e64026e6c00001c0001 +f80980000001000000020002036e733107626265796f6e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +35289 +bc8b000000010000000000000e36322d3137372d3139372d31363107626265796f6e64026e6c0000010001 +bc8b800000010000000200020e36322d3137372d3139372d31363107626265796f6e64026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc037000100010001518000043eb1900bc049000100010001518000043eb19002 + +35290 +61cc00000001000000000000037777770977696b2d756e697665026e6c0000010001 +61cc80000001000000020000037777770977696b2d756e697665026e6c0000010001c0100002000100015180000c036e723605692d702d64c01ac01000020001000151800006036e7237c032 + +35291 +c92e0000000100000000000004616f7367026e6c0000010001 +c92e8000000100000002000204616f7367026e6c0000010001c00c0002000100015180000e0161026e7306737561726573c011c00c000200010001518000040162c027c02500010001000151800004d5ef8282c03f00010001000151800004d4cce363 + +35292 +e53300000001000000000000036e73330864686f7374696e67026e6c0000010001 +e53380000001000000020002036e73330864686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d00010001000151800004515b0370c03e00010001000151800004515b000a + +35293 +d4bc00000001000000000000036e73330864686f7374696e67026e6c0000260001 +d4bc80000001000000020002036e73330864686f7374696e67026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d00010001000151800004515b0370c03e00010001000151800004515b000a + +35294 +eca60000000100000000000006636861726973026e6c00000f0001 +eca68000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35295 +69860000000100000000000003777777067a737673736d026e6c0000010001 +69868403000100000001000003777777067a737673736d026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +35296 +8e8b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +8e8b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35297 +22c10000000100000000000005646e732d32056c61646f74026e6c0000010001 +22c18000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35298 +ed6000000001000000000000037777770c726f6264697362657267656e026e6c0000010001 +ed6080000001000000020002037777770c726f6264697362657267656e026e6c0000010001c0100002000100015180000e036e73310762617365776562c01dc01000020001000151800006036e7332c035c03100010001000151800004d535d035c04b00010001000151800004d535d034 + +35299 +869200000001000000000000037777770a7665726469656e6d6574026e6c0000010001 +869280000001000000020002037777770a7665726469656e6d6574026e6c0000010001c0100002000100015180000e036e73310777657073797465c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5f72968c04900010001000151800004d5f72969 + +35300 +454e0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +454e8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35301 +41cd00000001000000000000036e733109756e69736f75726365026e6c0000010001 +41cd80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +35302 +4bf600000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +4bf680000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35303 +4ad8000000010000000000000468617a61026e6c0000ff0001 +4ad8800000010000000200000468617a61026e6c0000ff0001c00c00020001000151800012036e733108692d686f73743475036e657400c00c00020001000151800006036e7332c029 + +35304 +b24a000000010000000000000e686967686c616e642d67616d6573026e6c0000010001 +b24a800000010000000200020e686967686c616e642d67616d6573026e6c0000010001c00c00020001000151800011026e730b6973642d686f6c6c616e64c01bc00c00020001000151800006036e7332c032c02f00010001000151800004d5e38d0ac04c00010001000151800004d5e38205 + +35305 +24d800000001000000000000076f6e7369676874026e6c00000f0001 +24d880000001000000020002076f6e7369676874026e6c00000f0001c00c0002000100015180000906656e69676d61c00cc00c0002000100015180000d036a6f730676706e6e6574c014c02800010001000151800004d4eee0eac03d00010001000151800004d5c9be2c + +35306 +336528000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b517569636b6f6666696365026e6c0000210001000002580023000000640cc40c65786163742d7365727665720b517569636b6f6666696365026e6c00 +3365a8040000000000000000 + +35307 +3b1b0000000100000000000005616272616d047769776f026e6c0000010001 +3b1b8000000100000002000205616272616d047769776f026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02b000100010001518000043eb1a454c03d000100010001518000043eb1a456 + +35308 +503100000001000000000000037777770b6d6f62696c65706c617a61026e6c0000010001 +503180000001000000030002037777770b6d6f62696c65706c617a61026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +35309 +000000007002400089e200000204055001010402 +000080010000000000000000 + +35310 +4ee900000001000000000000037777771067657a6f6e64686569646e6965757773026e6c0000010001 +4ee980000001000000020000037777771067657a6f6e64686569646e6965757773026e6c0000010001c01000020001000151800011036e73310a6d61696e736572766572c021c01000020001000151800006036e7332c039 + +35311 +b7367d1a501045107cd10000000000000000 +b736fd140000000000000000 + +35312 +1f2500000001000000000000067a69676e6574026e6c00000f0001 +1f2584030001000000010000067a69676e6574026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +35313 +b7367d1a5018451088c700000096ae00000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd56403c4ed60003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 +b736fd140000000000000000 + +35314 +461800000001000000000000037777770a626c69656d65726b6561026e6c0000010001 +461880000001000000020002037777770a626c69656d65726b6561026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01bc01000020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +35315 +c06300000001000000000000037777770a65726f7469636c697665026e6c0000010001 +c06380000001000000020002037777770a65726f7469636c697665026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c01bc01000020001000151800006036e7331c033c02f00010001000151800004c3eaad40c04900010001000151800004c3eaad41 + +35316 +b7367d28501145027c380000000000000000 +b736fd240000000000000000 + +35317 +0000000070024000c2d500000204055001010402 +000080010000000000000000 + +35318 +b7367d29501045027c370000000000000000 +b736fd240000000000000000 + +35319 +b738f642501045103c9a0000000000000000 + + +35320 +b738f64250184510f291000000960500000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd56403c4ed60003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 + + +35321 +1be3000000010000000000000964656c697665727931036164730974656c656772616166026e6c026e6c0000010001 +1be3840300010000000100000964656c697665727931036164730974656c656772616166026e6c026e6c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +35322 +902600000001000000000000036e73310e666c6578776562686f7374696e67026e6c0000010001 +902680000001000000030002036e73310e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c00c00010001000151800004cf2cd7adc0410001000100015180000452c04365 + +35323 +c81300000001000000000000036e73310e666c6578776562686f7374696e67026e6c0000260001 +c81380000001000000030002036e73310e666c6578776562686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c00c00010001000151800004cf2cd7adc0410001000100015180000452c04365 + +35324 +05d2000000010000000000000377777705767664656d026e6c0000010001 +05d2800000010000000200020377777705767664656d026e6c0000010001c01000020001000151800014036e73310d7072696d656d6572696469616ec016c01000020001000151800006036e7332c02ec02a00010001000151800004d468cf38c04a00010001000151800004d468cf39 + +35325 +db3300000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000010001 +db3380000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +35326 +b90400000001000000000000036e73320e666c6578776562686f7374696e67026e6c0000260001 +b90480000001000000030002036e73320e666c6578776562686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03300010001000151800004cf2cd7adc00c0001000100015180000452c04365 + +35327 +047e00000001000000000000037777770c6265616d6572706c616e6574026e6c0000010001 +047e80000001000000020002037777770c6265616d6572706c616e6574026e6c0000010001c0100002000100015180001104646e733109616464766973696f6ec01dc0100002000100015180000704646e7332c036c031000100010001518000045054e242c04e000100010001518000045054e243 + +35328 +b738f650501145023c010000000000000000 + + +35329 +0000000070024000b71600000204055001010402 +000080010000000000000000 + +35330 +437f00000001000000000000036e73310b7669616e6574776f726b73026e6c0000260001 +437f80000001000000020002036e73310b7669616e6574776f726b73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +35331 +2d5300000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +2d5380000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +35332 +299c00000001000000000000036e73320b7669616e6574776f726b73026e6c0000260001 +299c80000001000000020002036e73320b7669616e6574776f726b73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +35333 +b738f651501045023c000000000000000000 + + +35334 +b7398bf1501045109b2b0000000000000000 + + +35335 +b7398bf1501845103123000000962500000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd56403c4ed60003000000374e544c4d535350000100000097b200e00b000b002c0000000c000c002000000045584143542d534552564552515549434b4f46464943450000 + + +35336 +cda8000000010000000000000976616e6c6f73736572026e6c00000f0001 +cda8800000010000000200020976616e6c6f73736572026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450416028c04500010001000151800004c356780c + +35337 +ef1000000001000000000000036e7335046372696f026e6c0000010001 +ef1080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35338 +9ee800000001000000000000036e7336046372696f026e6c0000010001 +9ee880000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35339 +44ea000000010000000000000377777703776562026e6c0000010001 +44ea800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +35340 +b7398bff501145029a920000000000000000 + + +35341 +292500000001000000000000036e7335046372696f026e6c0000010001 +292580000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35342 +f93e00000001000000000000036e7336046372696f026e6c0000010001 +f93e80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35343 +d10e00000001000000000000036e7331046372696f026e6c0000010001 +d10e80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35344 +459f00000001000000000000036e7332046372696f026e6c0000010001 +459f80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +35345 +b7398c00501045029a910000000000000000 + + +35346 +301400000001000000000000037777770568692d7469026e6c0000010001 +301480000001000000020002037777770568692d7469026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c016c01000020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +35347 +bc3100000001000000000000097777772c66756e6461026e6c0000010001 +bc3184030001000000010000097777772c66756e6461026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +35348 +6a0700000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +6a0780000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +35349 +6baa0000000100000000000005646e732d31056c61646f74026e6c0000010001 +6baa8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35350 +e8910000000100000000000003777777096b657474696e6b6a65026e6c0000010001 +e8918000000100000003000303777777096b657474696e6b6a65026e6c0000010001c0100002000100015180001208736f6c7574696f6e06736f6c636f6ec01ac01000020001000151800006036e7331c037c01000020001000151800006036e7332c037c02e00010001000151800004d42d2005c04c00010001000151800004d42d2003c05e00010001000151800004d42d2103 + +35351 +892700000001000000000000036e73310f6578636c757369766564657369676e026e6c0000010001 +892780000001000000020002036e73310f6578636c757369766564657369676e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d97261bec04200010001000151800004d97261bd + +35352 +c77f00000001000000000000036e73320f6578636c757369766564657369676e026e6c0000010001 +c77f80000001000000020002036e73320f6578636c757369766564657369676e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03400010001000151800004d97261bec00c00010001000151800004d97261bd + +35353 +1e0e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +1e0e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35354 +0f070000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +0f078000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35355 +959e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +959e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35356 +63fc00000001000000000000037777770476646c67026e6c0000010001 +63fc80000001000000020000037777770476646c67026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c015c0100002000100015180000704686e7331c02e + +35357 +29110000000100000000000005636c6f6f73026e6c0000010001 +29118000000100000002000105636c6f6f73026e6c0000010001c00c0002000100015180000c026e73066e6577696365c012c00c00020001000151800013036e7332097669727475616c787303636f6d00c026000100010001518000043e818501 + +35358 +518c00000001000000000000037777770f626f74746963656c6c69686f74656c026e6c0000010001 +518c80000001000000020001037777770f626f74746963656c6c69686f74656c026e6c0000010001c0100002000100015180000a036e733303777873c020c01000020001000151800006036e7334c038c04a00010001000151800004d5ef9a65 + +35359 +c14c00000001000000000000076e6f7768657265026e6c00000f0001 +c14c80000001000000020000076e6f7768657265026e6c00000f0001c00c00020001000151800010026e73076e65737363697303636f6d00c00c00020001000151800006036e7332c02b + +35360 +d22c00000001000000000000066d69636b6579066e6574636f6d026e6c00001c0001 +d22c80000001000000020001066d69636b6579066e6574636f6d026e6c00001c0001c01300020001000151800002c00cc01300020001000151800010066d696e6e696506787334616c6cc01ac00c00010001000151800004c2863082 + +35361 +213d00000001000000000000066d69636b6579066e6574636f6d026e6c0000260001 +213d80000001000000020001066d69636b6579066e6574636f6d026e6c0000260001c01300020001000151800002c00cc01300020001000151800010066d696e6e696506787334616c6cc01ac00c00010001000151800004c2863082 + +35362 +190b000000010000000000000f766973736572696a2d6d757365756d026e6c00000f0001 +190b800000010000000200020f766973736572696a2d6d757365756d026e6c00000f0001c00c0002000100015180000d026e7307636f6f6c636f6dc01cc00c00020001000151800006036e7332c033c03000010001000151800004c1ad3506c04900010001000151800004c1ad35c1 + +35363 +d8e000000001000000000000037777771362656c617374696e672d646f75616e656d7573026e6c0000010001 +d8e080000001000000020000037777771362656c617374696e672d646f75616e656d7573026e6c0000010001c01000020001000151800016036e73310f62656c617374696e676469656e7374c024c0100002000100015180000b026e73026e6c036e657400 + +35364 +9f6c00000001000000000000037777770b686170707974726176656c117672696a7569742d76616b616e74696573026e6c0000010001 +9f6c80000001000000020002037777770b686170707974726176656c117672696a7569742d76616b616e74696573026e6c0000010001c01c00020001000151800014036e73310d63656e747269636f6e6c696e65c02ec01c00020001000151800006036e7332c046c04200010001000151800004d481ec0cc06200010001000151800004d590e63a + +35365 +87860000000100000000000003777777127465656e2d616d61746575722d686f757365026e6c0000010001 +87868000000100000002000003777777127465656e2d616d61746575722d686f757365026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c03b + +35366 +0bb20000000100000000000009652d6c756e61746963026e6c0000010001 +0bb28000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35367 +3bc00000000100000000000009652d6c756e61746963026e6c0000010001 +3bc08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35368 +b2d4000000010000000000000377777707736d736475696d026e6c0000010001 +b2d4800000010000000200020377777707736d736475696d026e6c0000010001c01000020001000151800015036e73310e62656c6c656e656e77696e6e656ec018c01000020001000151800006036e7332c030c02c00010001000151800004d994a844c04d00010001000151800004d994a845 + +35369 +c3e0000000010000000000000868616a656e697573026e6c00000f0001 +c3e0800000010000000200000868616a656e697573026e6c00000f0001c00c00020001000151800011036e733108636f6d737061636502646500c00c00020001000151800006036e7332c02d + +35370 +a3c40000000100000000000009646f67656174646f67026e6c0000010001 +a3c48000000100000002000009646f67656174646f67026e6c0000010001c00c0002000100015180000c026e7306766576696461c016c00c00020001000151800006036e7332c02d + +35371 +c54500000001000000000000026e73036e6667026e6c0000010001 +c54580000001000000020001026e73036e6667026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e733306636f62776562c013c00c00010001000151800004c26dd603 + +35372 +745600000001000000000000026e730962706f2d67726f6570026e6c0000010001 +745680000001000000020002026e730962706f2d67726f6570026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800009026e73036e6667c019c00c00010001000151800004c26d7a16c03b00010001000151800004c26dd603 + +35373 +f5d80000000100000000000003777777096275737265697a656e026e6c0000010001 +f5d88000000100000003000303777777096275737265697a656e026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +35374 +17540000000100000000000005646e732d31056c61646f74024e4c0000010001 +17548000000100000002000005646e732d31056c61646f74024e4c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35375 +02cd00000001000000000000036e73340767617574656e67026e6c0000010001 +02cd80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35376 +3b8b0000000100000000000007706f7374796c65026e6c0000ff0001 +3b8b8000000100000002000107706f7374796c65026e6c0000ff0001c00c0002000100015180000a036e733303777873c014c00c00020001000151800006036e7334c02cc03e00010001000151800004d5ef9a65 + +35377 +d17200000001000000000000036e733109666972737466696e64026e6c0000010001 +d17280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35378 +d5e000000001000000000000076161746f757273026e6c00000f0001 +d5e080000001000000020002076161746f757273026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +35379 +d17300000001000000000000036e733209666972737466696e64026e6c0000010001 +d17380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35380 +903a0000000100000000000002763109706365787472656d65026e6c0000010001 +903a8000000100000002000202763109706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +35381 +cfa60000000100000000000002763209706365787472656d65026e6c0000010001 +cfa68000000100000002000202763209706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +35382 +6ae00000000100000000000009776f726c646d61696c026e6c00000f0001 +6ae08000000100000003000209776f726c646d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c016c00c0002000100015180000704616e7332c02fc00c0002000100015180001404616e73330a74697363616c696e657402626500c02a00010001000151800004c3f14d38c04500010001000151800004c3f13325 + +35383 +6fa000000001000000000000056469616e610a6d6f7373646f6d65696e026e6c0000060001 +6fa084030001000000010000056469616e610a6d6f7373646f6d65696e026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +35384 +5c4500000001000000000000037777770778747372353030026e6c0000010001 +5c4580000001000000020002037777770778747372353030026e6c0000010001c0100002000100015180000f026e7309656174736572766572c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +35385 +b63700000001000000000000044e545331063139594f3030024e4c0000060001 +b63784030001000000010000044e545331063139594f3030024e4c0000060001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +35386 +16c40000000100000000000008616473657276657206776562616473026e6c0000010001 +16c48000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +35387 +09aa00000001000000000000086865696e656b656e026e6c0000ff0001 +09aa80000001000000020000086865696e656b656e026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02d + +35388 +648a0000000100000000000004504f503310616e6e616c6965736d7575726c696e67026e6c0000010001 +648a8000000100000002000204504f503310616e6e616c6965736d7575726c696e67026e6c0000010001c01100020001000151800010036e733109756e69736572766572c022c01100020001000151800006036e7332c03ac03600010001000151800004c3454b03c05200010001000151800004d119a2fa + +35389 +1fd7000000010000000000000649434153533207554e494d414153024e4c0000010001 +1fd7800000010000000300030649434153533207554e494d414153024e4c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a65 + +35390 +873c0000000100000000000006524c3030303107554e494d414153024e4c0000010001 +873c8000000100000003000306524c3030303107554e494d414153024e4c0000010001c01300020001000151800002c00cc0130002000100015180000906696361737332c013c0130002000100015180000e036e733107737572666e6574c01bc00c0001000100015180000489780101c03d0001000100015180000489780105c05200010001000151800004c0576a65 + +35391 +c8710000000100000000000008554d44433030303307554e494d414153024e4c0000010001 +c8718000000100000003000308554d44433030303307554e494d414153024e4c0000010001c0150002000100015180000906726c30303031c015c0150002000100015180000906696361737332c015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000489780101c0460001000100015180000489780105c05b00010001000151800004c0576a65 + +35392 +d17500000001000000000000036e733109666972737466696e64026e6c0000010001 +d17580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35393 +d17600000001000000000000036e733209666972737466696e64026e6c0000010001 +d17680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35394 +05a400000001000000000000036e7332026d6a026e6c0000010001 +05a480000001000000020002036e7332026d6a026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004515b010ac00c00010001000151800004515b000a + +35395 +2d8c00000001000000000000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000060001 +2d8c84030001000000010000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000060001c04000060001000038400036026e730f646f6d61696e2d7265676973747279c0400a686f73746d6173746572c0570bf1e540000070800000384000278d0000003840 + +35396 +8efc000000010000000000000e535449434b53414e445457494753026e6c0000020001 +8efc840300010000000100000e535449434b53414e445457494753026e6c0000020001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35397 +f4ac0000000100000000000004686f6d650774697363616c69026e6c0000010001 +f4ac8000000100000003000204686f6d650774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +35398 +15970000000100000000000003626674026e6c0000010001 +15978000000100000002000003626674026e6c0000010001c00c0002000100015180000c026e7306766576696461c010c00c00020001000151800006036e7332c027 + +35399 +99190000000100000000000004646e733107696e666f6e6574026e6c0000010001 +99198000000100000002000204646e733107696e666f6e6574026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4bd01c4c03b00010001000151800004d4bd7f83 + +35400 +ce7b0000000100000000000004646e733207696e666f6e6574026e6c0000010001 +ce7b8000000100000002000204646e733207696e666f6e6574026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02d00010001000151800004d4bd01c4c00c00010001000151800004d4bd7f83 + +35401 +fd9f0000000100000000000002676e0b64656e74616c756e696f6e026e6c0000010001 +fd9f8000000100000002000102676e0b64656e74616c756e696f6e026e6c0000010001c00f0002000100015180000e036e7331076e6564636f6d70c01bc00f00020001000151800011036e7332076e6564636f6d70036f726700c02f00010001000151800004c3c1a80d + +35402 +7e1c00000001000000000000036e733103757063026e6c0000010001 +7e1c80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +35403 +1fa200000001000000000000046e733032066368656c6c6f026e6c0000010001 +1fa280000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +35404 +8a03000000010000000000000377656d0c6c6f67696e73657276696365026e6c0000010001 +8a03800000010000000200020377656d0c6c6f67696e73657276696365026e6c0000010001c0100002000100015180000e036e7331076e657463617374c01dc01000020001000151800006036e7332c035c03100010001000151800004c2970101c04b00010001000151800004c297012d + +35405 +236700000001000000000000037777770d73632d68656572656e7665656e026e6c0000010001 +236780000001000000020000037777770d73632d68656572656e7665656e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ec0100002000100015180000704686e7331c037 + +35406 +5fc80000000100000000000005646e732d32056c61646f74026e6c0000010001 +5fc88000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35407 +1486000000010000000000000377656d0c6c6f67696e73657276696365026e6c0000010001 +1486800000010000000200020377656d0c6c6f67696e73657276696365026e6c0000010001c0100002000100015180000e036e7331076e657463617374c01dc01000020001000151800006036e7332c035c03100010001000151800004c2970101c04b00010001000151800004c297012d + +35408 +5886000000010000000000000563696e64790c616374697665646f6d61696e026e6c0000010001 +5886800000010000000300000563696e64790c616374697665646f6d61696e026e6c0000010001c01200020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01200020001000151800006036e7332c037c01200020001000151800006036e7333c037 + +35409 +588700000001000000000000076e65656c746a650c616374697665646f6d61696e026e6c0000010001 +588780000001000000030000076e65656c746a650c616374697665646f6d61696e026e6c0000010001c01400020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01400020001000151800006036e7332c039c01400020001000151800006036e7333c039 + +35410 +aa5728000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000210001000002580019000000640058067365727665720772756279646563026e6c00 +aa57a8040000000000000000 + +35411 +2df50000000100000000000003626372026e6c0000010001 +2df58000000100000002000203626372026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +35412 +0e14000000010000000000000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001 +0e14800000010000000200000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001c0130002000100015180001406737068696e7807726f7365747461036e657400c0130002000100015180000906616e75626973c039 + +35413 +0e15000000010000000000000377777705626f6b6f65026e6c0000010001 +0e15800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +35414 +82e500000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +82e580000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35415 +b3620000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b3628000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35416 +7c5b00000001000000000000056465787573026e6c00001c0001 +7c5b80000001000000020002056465787573026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +35417 +dc180000000100000000000006787334616c6c026e6c0000010001 +dc188000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +35418 +ce8500000001000000000000037777770b7376636f6e636f72646961026e6c0000010001 +ce8580000001000000020000037777770b7376636f6e636f72646961026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +35419 +329700000001000000000000037777770964656c696369657578026e6c0000010001 +329780000001000000020002037777770964656c696369657578026e6c0000010001c0100002000100015180000b036e73310477656233c01ac01000020001000151800006036e7332c032c02e00010001000151800004d436240ec04500010001000151800004c2b262ef + +35420 +0000000070024000c30100000204056401010402 +000080010000000000000000 + +35421 +17f900000001000000000000046d61696c09696d74656368696374026e6c0000010001 +17f980000001000000020001046d61696c09696d74656368696374026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d036e7334036b706e036e657400c02f00010001000151800004c1accc82 + +35422 +09240000000100000000000006616c63696f6e026e6c00000f0001 +09248000000100000002000206616c63696f6e026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c013c00c0002000100015180001004646e733208636f6e6365707473c013c02700010001000151800004d5c51c03c04400010001000151800004d5c51e1c + +35423 +b73c34e1501040b002980000000000000000 +b73cb4e40000000000000000 + +35424 +f3670000000100000000000006617474697661026e6c00000f0001 +f3678000000100000002000206617474697661026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +35425 +5cad00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +5cad80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35426 +b73c34e1501840b0dbc60000008c2e7d000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afae7403c4c6700030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 +b73cb4e40000000000000000 + +35427 +684300000001000000000000047365633103646e73067073696e6574026e6c0000010001 +684380000001000000030003047365633103646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +35428 +9fe200000001000000000000047365633203646e73067073696e6574026e6c0000010001 +9fe280000001000000030003047365633203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +35429 +3d0c00000001000000000000047365633303646e73067073696e6574026e6c0000010001 +3d0c80000001000000030003047365633303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +35430 +d0f7000000010000000000000377777709656173797061727473026e6c0000010001 +d0f7800000010000000300020377777709656173797061727473026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +35431 +a8be000000010000000000000377777709656173797061727473026e6c0000010001 +a8be800000010000000300020377777709656173797061727473026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +35432 +ba140000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +ba148000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +35433 +5caf00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +5caf80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35434 +d6e1000000010000000000000866726f6e7469657203746e6f026e6c0000010001 +d6e1800000010000000300030866726f6e7469657203746e6f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c01500020001000151800007047a657573c015c00c0001000100015180000486dd0102c03b00010001000151800004c0576a65c0550001000100015180000486dd0202 + +35435 +b73c34ef501140a202090000000000000000 +b73cb4e40000000000000000 + +35436 +58680000000100000000000006746e6f66656c0366656c03746e6f026e6c0000010001 +58688000000100000003000306746e6f66656c0366656c03746e6f026e6c0000010001c0170002000100015180000b0866726f6e74696572c017c0170002000100015180000e036e733107737572666e6574c01bc01700020001000151800007047a657573c017c02f0001000100015180000486dd0102c04600010001000151800004c0576a65c0600001000100015180000486dd0202 + +35437 +a80f00000001000000000000066865726d657304626f757703746e6f026e6c0000010001 +a80f80000001000000030003066865726d657304626f757703746e6f026e6c0000010001c0180002000100015180000b0866726f6e74696572c018c0180002000100015180000e036e733107737572666e6574c01cc01800020001000151800007047a657573c018c0300001000100015180000486dd0102c04700010001000151800004c0576a65c0610001000100015180000486dd0202 + +35438 +d7860000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d7868000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35439 +0000000070024000e88100000204056401010402 +000080010000000000000000 + +35440 +5cb100000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +5cb180000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35441 +c1dc0000000100000000000003706f7003626974026e6c0000010001 +c1dc8000000100000003000303706f7003626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +35442 +b8e7000000010000000000000377777709736f6c617269736973026e6c0000010001 +b8e7800000010000000200000377777709736f6c617269736973026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +35443 +b73c34f0501040a202080000000000000000 +b73cb4f40000000000000000 + +35444 +86ed00000001000000000000037777770972656e64656d656e74026e6c0000010001 +86ed80000001000000020002037777770972656e64656d656e74026e6c0000010001c0100002000100015180000e036e733207737570706f7274c01ac01000020001000151800006036e7334c032c02e00010001000151800004c372e7c8c04800010001000151800004c372e6fe + +35445 +ffe10000000100000000000006706c616e657403777873026e6c00000f0001 +ffe18000000100000003000306706c616e657403777873026e6c00000f0001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +35446 +b73d0406501040b058f20000000000000000 +b73d80010000000000000000 + +35447 +b70e0000000100000000000007706f77657265640262790a696e746572706c617a61026e6c0000010001 +b70e8000000100000002000207706f77657265640262790a696e746572706c617a61026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03600010001000151800004d5f72f2dc04800010001000151800004d5c1d528 + +35448 +b73d0406501840b0ded30000008c82cb000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afae7403c4c6700030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 +b73d80010000000000000000 + +35449 +50030000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +50038000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35450 +8642000000010000000000000a696e6475636f6e2d6276026e6c0000010001 +8642800000010000000200020a696e6475636f6e2d6276026e6c0000010001c00c0002000100015180000a036e733103696166c017c00c00020001000151800006036e7332c02fc02b000100010001518000045059e040c041000100010001518000045059ee03 + +35451 +d5b0000000010000000000000377777705706978756d026e6c0000010001 +d5b0800000010000000200000377777705706978756d026e6c0000010001c01000020001000151800010036e7331066272696e6765036e657400c01000020001000151800006036e7332c02e + +35452 +044200000001000000000000036e657403686363026e6c00000f0001 +044280000001000000020000036e657403686363026e6c00000f0001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +35453 +b73d0414501140a258630000000000000000 +b73d80010000000000000000 + +35454 +ebde00000001000000000000056961656876026e6c0000020001 +ebde80000001000000020002056961656876026e6c0000020001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +35455 +0000000070024000ab0400000204056401010402 +000080010000000000000000 + +35456 +893400000001000000000000026e73096379626572636f6d6d026e6c0000010001 +893480000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +35457 +acf900000001000000000000036e7332096379626572636f6d6d026e6c0000010001 +acf980000001000000030003036e7332096379626572636f6d6d026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303c06300010001000151800004c277e953 + +35458 +4f6700000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +4f6780000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35459 +ac490000000100000000000003626f73026e6c00000f0001 +ac498000000100000002000203626f73026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02400010001000151800004d5881e43c03500010001000151800004d5139203 + +35460 +cd4500000001000000000000037777770d7765726b67726f657031353031026e6c0000010001 +cd4580000001000000020002037777770d7765726b67726f657031353031026e6c0000010001c01000020001000151800010026e730a6d61636b656e62616368c01ec01000020001000151800006036e7332c035c03200010001000151800004c1ad2b11c04e00010001000151800004507e81a3 + +35461 +b73d0415501040a258620000000000000000 +b73d80010000000000000000 + +35462 +b73dab04501040b074760000000000000000 + + +35463 +a26b001000010000000000000377777707686f757476616b026e6c0000010001 +a26b800000010000000200020377777707686f757476616b026e6c0000010001c0100002000100015180001007617374657269780577746e6574c018c0100002000100015180000e036e73320768756d616e2d69c018c02c00010001000151800004c36db552c04800010001000151800004c1ad2886 + +35464 +b73dab04501840b0a6090000008cd719000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afae7403c4c6700030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 + + +35465 +428000000001000000000000046d61696c03726467026e6c0000010001 +428080000001000000020002046d61696c03726467026e6c0000010001c0110002000100015180000f036e733108696e74726f776562c015c01100020001000151800006036e7332c02dc0290001000100015180000450416028c04400010001000151800004c356780c + +35466 +502700000001000000000000027463036164730974656c656772616166026e6c0000010001 +502780000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +35467 +d4e900000001000000000000055f6c646170045f74637003706463065f6d736463730b726f656465737472616174026e6c0000060001 +d4e984030001000000010000055f6c646170045f74637003706463065f6d736463730b726f656465737472616174026e6c0000060001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +35468 +b73dab12501140a273e70000000000000000 + + +35469 +aad6000000010000000000000b7477656564656b616d6572026e6c0000010001 +aad6800000010000000200020b7477656564656b616d6572026e6c0000010001c00c00020001000151800006036e7331c00cc00c0002000100015180000c036e73310563736e6574c018c02c000100010001518000043e3a5079c03e00010001000151800004c2451012 + +35470 +777900000001000000000000055f6c646170045f746370026763065f6d736463730b726f656465737472616174026e6c0000060001 +777984030001000000010000055f6c646170045f746370026763065f6d736463730b726f656465737472616174026e6c0000060001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +35471 +b50c000000010000000000000575736572730663617374656c026e6c0000010001 +b50c800000010000000200020575736572730663617374656c026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02d00010001000151800004c3558244c03f00010001000151800004c3558245 + +35472 +1ab20000000100000000000007766462636f6d70026e6c00001c0001 +1ab28000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +35473 +b73dab13501040a273e60000000000000000 + + +35474 +e67100000001000000000000097361756e6167696473026e6c00000f0001 +e67180000001000000030002097361756e6167696473026e6c00000f0001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +35475 +5a3700000001000000000000036e733103757063026e6c00001c0001 +5a3780000001000000030003036e733103757063026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +35476 +bbbd000000010000000000000377777709646f776e6c6f616473026e6c0000010001 +bbbd800000010000000300020377777709646f776e6c6f616473026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +35477 +d3710000000100000000000009696c73656d65646961026e6c00000f0001 +d3718000000100000003000309696c73656d65646961026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02a000100010001518000043e45a282c03c000100010001518000043e45a283c04e000100010001518000043e45a284 + +35478 +6d4200100001000000000000076a617261626565026e6c00000f0001 +6d4280000001000000020002076a617261626565026e6c00000f0001c00c00020001000151800011036e73310a6f612d73797374656d73c014c00c00020001000151800006036e7332c02cc028000100010001518000043eb1b1abc045000100010001518000043eb1b1ac + +35479 +5a9100000001000000000000037777770c6d6172636f626f727361746f026e6c0000010001 +5a9180000001000000020002037777770c6d6172636f626f727361746f026e6c0000010001c0100002000100015180000b026e73057162616c6cc01dc0100002000100015180000f026e7309747269706c652d6974c01dc03100010001000151800004d584b024c04800010001000151800004d584b002 + +35480 +700800000001000000000000037777771564726f676973746572696a2d6166736c616e6b656e026e6c0000010001 +700880000001000000020002037777771564726f676973746572696a2d6166736c616e6b656e026e6c0000010001c0100002000100015180000b036e73310431326e73c026c01000020001000151800006036e7332c03ec03a000100010001518000043ed44ca0c051000100010001518000043ed4440c + +35481 +1b5800000001000000000000036e733109666972737466696e64026e6c0000010001 +1b5880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35482 +79ea00000001000000000000037777770a6b696e6b797374617274026e6c0000010001 +79ea80000001000000020002037777770a6b696e6b797374617274026e6c0000010001c0100002000100015180000a036e7331036e7873c01bc01000020001000151800006036e7332c033c02f00010001000151800004d973c015c04500010001000151800004d973c102 + +35483 +2cc400000001000000000000036e733209666972737466696e64026e6c0000010001 +2cc480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35484 +a2790000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +a2798000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35485 +cb87000000010000000000000377777702696e026e6c0000010001 +cb87800000010000000200000377777702696e026e6c0000010001c01000020001000151800010026e73076269742d61787803636f6d00c01000020001000151800006036e7332c02a + +35486 +351d00000001000000000000037777770974656c656772616166026e6c0000010001 +351d80000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +35487 +033e00000001000000000000036e733207736572766572340b6475746368736572766572026e6c0000010001 +033e80000001000000020000036e733207736572766572340b6475746368736572766572026e6c0000010001c0180002000100015180000c036e733105692d732d65c024c01800020001000151800006036e7332c03c + +35488 +4be300000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +4be380000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35489 +cd6c00000001000000000000037777770c7665727461616c776f6f7264026e6c0000010001 +cd6c80000001000000030002037777770c7665727461616c776f6f7264026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +35490 +539a00000001000000000000037777770c6d637376656c64686f76656e026e6c0000010001 +539a80000001000000020000037777770c6d637376656c64686f76656e026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c034 + +35491 +8e890000000100000000000005736d7470320873797374656d6563026e6c0000010001 +8e898000000100000003000205736d7470320873797374656d6563026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c01200020001000151800006036e7332c012c02f00010001000151800004c2e5a402c05700010001000151800004c2e5a404 + +35492 +2e9c00000001000000000000036e73330873797374656d6563026e6c0000010001 +2e9c80000001000000030002036e73330873797374656d6563026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800006036e7332c010c02d00010001000151800004c2e5a402c05500010001000151800004c2e5a404 + +35493 +27df0000000100000000000005736d7470320873797374656d6563026e6c0000010001 +27df8000000100000003000205736d7470320873797374656d6563026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c01200020001000151800006036e7332c012c02f00010001000151800004c2e5a402c05700010001000151800004c2e5a404 + +35494 +00f90000000100000000000003777777066f72616e6765026e6c0000010001 +00f98000000100000002000103777777066f72616e6765026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +35495 +373400000001000000000000036e733109666972737466696e64026e6c0000010001 +373480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35496 +6b6000000001000000000000036e733209666972737466696e64026e6c0000010001 +6b6080000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +35497 +7ef6000000010000000000000473686f7007676c616d61676f0369736d026e6c0000010001 +7ef6800000010000000200020473686f7007676c616d61676f0369736d026e6c0000010001c01900020001000151800005026e73c019c01900020001000151800006036e7332c019c03100010001000151800004d994ab02c04200010001000151800004d994ab03 + +35498 +93e2000000010000000000000377777707686f746d61696c026e6c0000010001 +93e2800000010000000200000377777707686f746d61696c026e6c0000010001c01000020001000151800011036e733107686f746d61696c03636f6d00c01000020001000151800006036e7333c030 + +35499 +160600000001000000000000027330026e6c0000010001 +160680000001000000020002027330026e6c0000010001c00c0002000100015180000d026e73076e656473746174c00fc00c00020001000151800006036e7333c026c02300010001000151800004d4482615c03c00010001000151800004d5c4021d + +35500 +81ad000000010000000000000672656c61793108696e74726f776562026e6c0000010001 +81ad800000010000000200020672656c61793108696e74726f776562026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c0300001000100015180000450416028c04200010001000151800004c356780c + +35501 +c52c000000010000000000000c626c75652d6469616d6f6e64026e6c00000f0001 +c52c800000010000000200020c626c75652d6469616d6f6e64026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +35502 +799400000001000000000000037777770b63686174736d696c657973026e6c0000010001 +799480000001000000020000037777770b63686174736d696c657973026e6c0000010001c01000020001000151800011036e7331086c6f6769736f667402626500c01000020001000151800006036e7332c034 + +35503 +c888000000010000000000000c536563726574617269616174076368656d70726f026e6c0000060001 +c888840300010000000100000c536563726574617269616174076368656d70726f026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +35504 +cc9a0000000100000000000003777873026e6c00000f0001 +cc9a8000000100000003000303777873026e6c00000f0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +35505 +4ae90000000100000000000003777777076a7576656e7461026e6c0000010001 +4ae98000000100000002000203777777076a7576656e7461026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +35506 +6df400000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +6df480000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +35507 +78d40000000100000000000003777777076e61696c6d616e026e6c0000010001 +78d48000000100000002000203777777076e61696c6d616e026e6c0000010001c0100002000100015180000c036e7331056f72696f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c2862282c04400010001000151800004c2862b02 + +35508 +de4f000000010000000000000c7777776132387a776f6c6c65026e6c0000010001 +de4f840300010000000100000c7777776132387a776f6c6c65026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +35509 +396a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +396a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35510 +bf490000000100000000000003777777087669646176697461026e6c0000010001 +bf498000000100000002000203777777087669646176697461026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +35511 +c6cb00000001000000000000074b656572616476026e6c0000ff0001 +c6cb80000001000000020002074b656572616476026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +35512 +bbb4000000010000000000000377777707696e666f646563026e6c0000010001 +bbb4800000010000000200000377777707696e666f646563026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c018c0100002000100015180000704686e7331c031 + +35513 +f974000000010000000000000377777708776f6f6e69646565026e6c0000010001 +f974800000010000000200020377777708776f6f6e69646565026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c019c01000020001000151800006036e7332c031c02d000100010001518000045054f347c049000100010001518000043e94a047 + +35514 +7cda00000001000000000000036e73310762697472617465026e6c0000010001 +7cda80000001000000030002036e73310762697472617465026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +35515 +e54900000001000000000000036e73320762697472617465026e6c0000010001 +e54980000001000000030002036e73320762697472617465026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +35516 +271e000000010000000000000744564953494f4e024e4c00000f0001 +271e800000010000000200000744564953494f4e024e4c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02b + +35517 +442100000001000000000000036e733106736f6c636f6e026e6c0000010001 +442180000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +35518 +2cc200000001000000000000036e733206736f6c636f6e026e6c0000010001 +2cc280000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +35519 +0b3e0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +0b3e8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +35520 +ef5e000000010000000000000377777707647265697a656e026e6c0000010001 +ef5e800000010000000200000377777707647265697a656e026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c030 + +35521 +d6f500000001000000000000037777770a6e75697665726c616e64026e6c0000010001 +d6f584030001000000010000037777770a6e75697665726c616e64026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35522 +95d4000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +95d4800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +35523 +d50400000001000000000000036e733105692d732d65026e6c0000010001 +d50480000001000000020000036e733105692d732d65026e6c0000010001c01000020001000151800016036e73310c6973652d6e6574776f726b73036e657400c01000020001000151800006036e7332c02e + +35524 +08320000000100000000000008647269656d61726b026e6c00000f0001 +08328000000100000002000008647269656d61726b026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c034 + +35525 +0c4f0000000100000000000009652d6c756e61746963026e6c0000010001 +0c4f8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35526 +fb2d000000010000000000000377777707736d736475696d026e6c0000010001 +fb2d800000010000000200020377777707736d736475696d026e6c0000010001c01000020001000151800015036e73310e62656c6c656e656e77696e6e656ec018c01000020001000151800006036e7332c030c02c00010001000151800004d994a844c04d00010001000151800004d994a845 + +35527 +7a6c0000000100000000000003777777076563687477656c026e6c0000010001 +7a6c8000000100000002000003777777076563687477656c026e6c0000010001c01000020001000151800011036e73310a747770686f7374696e67c018c01000020001000151800006036e7332c030 + +35528 +7b4e00100001000000000001036e7331096b6162656c666f6f6e026e6c00000100010000290800000080000000 +7b4e80000001000000020003036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f030000291000000000000000 + +35529 +bda700100001000000000001036e7334096b6162656c666f6f6e026e6c00000100010000290800000080000000 +bda780000001000000020003036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f030000291000000000000000 + +35530 +eb4400000001000000000000064252414e44590453455243024e4c0000010001 +eb4480000001000000020002064252414e44590453455243024e4c0000010001c0130002000100015180000b026e73056369626974c018c0130002000100015180000d026e73076b6e6f77617265c018c02c000100010001518000043ea68aa3c04300010001000151800004c3402003 + +35531 +75a200000001000000000000064252414e44590453455243024e4c0000260001 +75a280000001000000020002064252414e44590453455243024e4c0000260001c0130002000100015180000b026e73056369626974c018c0130002000100015180000d026e73076b6e6f77617265c018c02c000100010001518000043ea68aa3c04300010001000151800004c3402003 + +35532 +bad1000000010000000000000347494e0453455243024e4c0000010001 +bad1800000010000000200020347494e0453455243024e4c0000010001c0100002000100015180000b026e73056369626974c015c0100002000100015180000d026e73076b6e6f77617265c015c029000100010001518000043ea68aa3c04000010001000151800004c3402003 + +35533 +0f2f000000010000000000000347494e0453455243024e4c0000260001 +0f2f800000010000000200020347494e0453455243024e4c0000260001c0100002000100015180000b026e73056369626974c015c0100002000100015180000d026e73076b6e6f77617265c015c029000100010001518000043ea68aa3c04000010001000151800004c3402003 + +35534 +edad0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +edad8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35535 +971e0000000100000000000003777777096e6c686f7374696e67026e6c0000010001 +971e8000000100000002000003777777096e6c686f7374696e67026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +35536 +38e1000000010000000000000a6e6f76696f6d65646961026e6c00000f0001 +38e1800000010000000200020a6e6f76696f6d65646961026e6c00000f0001c00c0002000100015180000e026e7308642d736572766572c017c00c00020001000151800006036e7332c02ec02b0001000100015180000451045c14c0450001000100015180000451046032 + +35537 +51a000000001000000000000037777770c72746c6772616e6470726978026e6c0000010001 +51a080000001000000020001037777770c72746c6772616e6470726978026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c01dc01000020001000151800011036e733207636c742d756661036e657400c03100010001000151800004c3c1ca77 + +35538 +621f000000010000000000000966636172657461696c026e6c00000f0001 +621f800000010000000200000966636172657461696c026e6c00000f0001c00c0002000100015180000e036e73310464646e68036e657400c00c00020001000151800006036e7332c02e + +35539 +316800000001000000000000037777770667726f656e65026e6c0000010001 +316880000001000000020002037777770667726f656e65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +35540 +0ad000000001000000000000036e73340767617574656e67026e6c0000010001 +0ad080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35541 +02d900000001000000000000036e73330767617574656e67026e6c0000010001 +02d980000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35542 +595800000001000000000000046d61696c0d73762d7a6f657465726d656572026e6c0000010001 +595880000001000000020000046d61696c0d73762d7a6f657465726d656572026e6c0000010001c0110002000100015180000f026e7306777367617465036e657400c01100020001000151800006036e7332c036 + +35543 +0c67000000010000000000000962656e65656e6c756c026e6c00000f0001 +0c67840300010000000100000962656e65656e6c756c026e6c00000f0001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +35544 +2cf700000001000000000000037777770963726f7373696e6773026e6c0000010001 +2cf780000001000000020002037777770963726f7373696e6773026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01ac01000020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +35545 +a3e000000001000000000000037777770a6d757a69656b7a61616b026e6c0000010001 +a3e080000001000000030003037777770a6d757a69656b7a61616b026e6c0000010001c0100002000100015180000e076e73617574683103626974c01bc0100002000100015180000a076e736175746832c037c0100002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +35546 +216a0000000100000000000004646e73310471776562026e6c0000010001 +216a8000000100000002000204646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +35547 +737500000001000000000000046d61696c0375636f026e6c00000f0001 +737580000001000000030003046d61696c0375636f026e6c00000f0001c0110002000100015180001208736f6c7574696f6e06736f6c636f6ec015c01100020001000151800006036e7331c032c01100020001000151800006036e7332c032c02900010001000151800004d42d2005c04700010001000151800004d42d2003c05900010001000151800004d42d2103 + +35548 +61fe00000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +61fe80000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +35549 +b0ff00000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +b0ff80000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +35550 +662800000001000000000000037777770e73746172746e656465726c616e64026e6c0000010001 +662880000001000000020002037777770e73746172746e656465726c616e64026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +35551 +d65300000001000000000000046d61696c0376656e026e6c0000010001 +d65380000001000000020000046d61696c0376656e026e6c0000010001c01100020001000151800015026e730c776f726c64686f7374696e67036f726700c01100020001000151800008026e73026175c02c + +35552 +683900000001000000000000094769656c697373656e024e4c0000010001 +683980000001000000020000094769656c697373656e024e4c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02e + +35553 +38d50000000100000000000008686f73746e616d650462696e640000100003 +38d58000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35554 +284800000001000000000000027874026e6c00000f0001 +284880000001000000020000027874026e6c00000f0001c00c0002000100015180000d026e730773747564696f32c00fc00c00020001000151800006036e7332c026 + +35555 +70c60000000100000000000008686f73746e616d650462696e640000100003 +70c68000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35556 +662c000000010000000000000768616c323030300768616c323030300a67616c67657761746572026e6c0000060001 +662c840300010000000100000768616c323030300768616c323030300a67616c67657761746572026e6c0000060001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +35557 +b45b0000000100000000000009776565726b616d6572026e6c0000010001 +b45b8000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +35558 +71c00000000100000000000005706c617a610c686175746566696e616e6365026e6c0000010001 +71c08000000100000002000205706c617a610c686175746566696e616e6365026e6c0000010001c0120002000100015180000e036e733107626265796f6e64c01fc01200020001000151800006036e7332c037c033000100010001518000043eb1900bc04d000100010001518000043eb19002 + +35559 +37cb00000001000000000000026e7308767575727765726b026e6c0000010001 +37cb80000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +35560 +7c9500000001000000000000026e7306787334616c6c026e6c0000010001 +7c9580000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +35561 +29e500000001000000000000036e733206787334616c6c026e6c0000010001 +29e580000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +35562 +724e000000010000000000000377777704616e626f026e6c0000010001 +724e800000010000000300030377777704616e626f026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004d5c98015c04400010001000151800004d5c9bf12c05600010001000151800004d5ef9c26 + +35563 +c902000000010000000000000c6b6172706572776572656c64026e6c00001c0001 +c902800000010000000200000c6b6172706572776572656c64026e6c00001c0001c00c00020001000151800013026e730a646168686f7374696e6703636f6d00c00c00020001000151800006036e7332c030 + +35564 +5dc900000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +5dc980000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35565 +835800000001000000000000036e733503777873026e6c0000010001 +835880000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +35566 +a0b900000001000000000000036e733503777873026e6c0000260001 +a0b980000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +35567 +b4150000000100000000000013696e7465726163746965666469656e7374656e026e6c00000f0001 +b4158000000100000002000213696e7465726163746965666469656e7374656e026e6c00000f0001c00c00020001000151800013036e73310c636f6c742d74656c65636f6dc020c00c00020001000151800006036e7332c038c03400010001000151800004d44ea00dc05300010001000151800004d44ea00e + +35568 +c61a000000010000000000000767756f6a75616e0564656d6f6e026e6c0000ff0001 +c61a800000010000000300020767756f6a75616e0564656d6f6e026e6c0000ff0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +35569 +109900000001000000000000026e730773747564696f32024e4c0000010001 +109980000001000000030001026e730773747564696f32024e4c0000010001c00f0002000100015180000e026e7308767575727765726bc017c00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +35570 +ae170000000100000000000006636861726973026e6c00000f0001 +ae178000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35571 +8b950000000100000000000003777777137363687574707265636973696f6e7061727473026e6c0000010001 +8b958000000100000002000203777777137363687574707265636973696f6e7061727473026e6c0000010001c0100002000100015180000e036e733107647265636f6d6dc024c01000020001000151800006036e7332c03cc03800010001000151800004d5c42546c05200010001000151800004d5c42547 + +35572 +05d700000001000000000000037777770c736368656572656e7665656e026e6c0000010001 +05d780000001000000020000037777770c736368656572656e7665656e026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01dc0100002000100015180000704686e7331c036 + +35573 +dfea00000001000000000000037777770f7469656e6572626f6572646572696a026e6c0000010001 +dfea80000001000000020000037777770f7469656e6572626f6572646572696a026e6c0000010001c01000020001000151800019026e73106575726f6d656469617472616666696303636f6d00c01000020001000151800006036e7332c037 + +35574 +44d3000000010000000000000a737465726b2d64696d6f026e6c00000f0001 +44d3800000010000000200020a737465726b2d64696d6f026e6c00000f0001c00c0002000100015180000d026e73076e6f7661776562c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d5c4220bc04400010001000151800004d5c4220c + +35575 +2b000000000100000000000003777777097175616c6967617465026e6c0000010001 +2b008000000100000002000203777777097175616c6967617465026e6c0000010001c0100002000100015180000d036e73310663617374656cc01ac01000020001000151800006036e7332c032c02e00010001000151800004c3558244c04700010001000151800004c3558245 + +35576 +6a3d000000010000000000000a616374696f6e666f746f026e6c00000f0001 +6a3d800000010000000300000a616374696f6e666f746f026e6c00000f0001c00c00020001000151800017076e73686f73743103737432056c79636575036e657400c00c0002000100015180000a076e73686f737432c033c00c0002000100015180000a076e73686f737433c033 + +35577 +80620000000100000000000005646e732d32056c61646f74026e6c0000010001 +80628000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35578 +e96a28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d736463730e52697070657264617061726b3239026e6c0000210001000002580023000000640185096f6e7a6576616465720e52697070657264617061726b3239026e6c00 +e96aa8040000000000000000 + +35579 +fbdf0000000100000000000008566f6c746169726503622d62026e6c0000010001 +fbdf8000000100000003000308566f6c746169726503622d62026e6c0000010001c0150002000100015180000c026e73067369676e6574c019c01500020001000151800006036e7331c030c01500020001000151800006036e7332c030c02d00010001000151800004c3561242c04500010001000151800004d915f142c05700010001000151800004d915f141 + +35580 +9dbe0000000100000000000003706f7003646473026e6c0000010001 +9dbe8000000100000003000303706f7003646473026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c014c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02cc02800010001000151800004d5ccc302c04b00010001000151800004d5ccc303c05d00010001000151800004c277e953 + +35581 +c907000000010000000000001971756f74612d696e7374616c6c61746965746563686e69656b026e6c00000f0001 +c907800000010000000200001971756f74612d696e7374616c6c61746965746563686e69656b026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c026c00c0002000100015180000704686e7331c03f + +35582 +0270000000010000000000000b53544556454e464552454e026e6c0000020001 +0270840300010000000100000b53544556454e464552454e026e6c0000020001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +35583 +866b000000010000000000000a646d636f6174696e6773026e6c00000f0001 +866b800000010000000200020a646d636f6174696e6773026e6c00000f0001c00c00020001000151800013026e730d627573696e6573736d65646961c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d5880b66c04a00010001000151800004d5880b65 + +35584 +9360000000010000000000000a6c65756b6573746172740e62616e6e657263656e7472616c65026e6c0000010001 +9360800000010000000300030a6c65756b6573746172740e62616e6e657263656e7472616c65026e6c0000010001c0170002000100015180000c036e7331056d61786573c026c01700020001000151800006036e7332c03ec01700020001000151800006036e7333c03ec03a000100010001518000045045402ec052000100010001518000045045402fc064000100010001518000045045440a + +35585 +bb0600100001000000000001036e7331056132303030026e6c00000100010000290800000000000000 +bb0680000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +35586 +eedb00100001000000000001036e7332056132303030026e6c00000100010000290800000000000000 +eedb80000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +35587 +21ff0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +21ff8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35588 +013400000001000000000000037777770a6a616e76726f65676f70026e6c0000010001 +013480000001000000020000037777770a6a616e76726f65676f70026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +35589 +9a0700000001000000000000037777770762656c696e6461026e6c0000010001 +9a0780000001000000020002037777770762656c696e6461026e6c0000010001c0100002000100015180000f036e7331086461786973776562c018c01000020001000151800006036e7332c030c02c00010001000151800004c323c083c04700010001000151800004c323c084 + +35590 +530e00000001000000000000037777770f74656c65636f6d766f6f726b657572026e6c0000010001 +530e80000001000000020002037777770f74656c65636f6d766f6f726b657572026e6c0000010001c0100002000100015180000b036e73310465326d61c020c01000020001000151800006036e7332c038c034000100010001518000045111328dc04b000100010001518000045111328e + +35591 +bc21000000010000000000000863726f7373696e6c066e7434616c6c026e6c0000010001 +bc21800000010000000200020863726f7373696e6c066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +35592 +239f00000001000000000000046d61696c0664656c756974026e6c0000010001 +239f80000001000000030003046d61696c0664656c756974026e6c0000010001c01100020001000151800014026e730e61726765776562686f7374696e67c018c01100020001000151800006036e7330c02fc01100020001000151800006036e7333c02fc02c00010001000151800004c3561682c04c00010001000151800004c3561683c05e00010001000151800004d5de0bfa + +35593 +f73f00000001000000000000046d61696c0c686f6e64612d77656c6d616e026e6c0000010001 +f73f80000001000000020002046d61696c0c686f6e64612d77656c6d616e026e6c0000010001c0110002000100015180000a036e733103677673c01ec01100020001000151800006036e7332c036c032000100010001518000045054e1aac04800010001000151800004d4ccc646 + +35594 +552f00000001000000000000036e7331056132303030026e6c0000010001 +552f80000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +35595 +3ddd00000001000000000000036e7332056132303030026e6c0000010001 +3ddd80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +35596 +82c3001000010000000000000377777703727462026e6c0000010001 +82c3800000010000000200010377777703727462026e6c0000010001c0100002000100015180001007617374657269780577746e6574c014c0100002000100015180000d0670696361726403647376c014c02800010001000151800004c36db552 + +35597 +d47100000001000000000000037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001 +d47180000001000000020002037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001c0100002000100015180000f026e7309656174736572766572c02dc01000020001000151800006036e7332c044c04100010001000151800004d4cb0e42c05c00010001000151800004d4cb1221 + +35598 +260100000001000000000000037777770a646976616b6f6570656c026e6c0000010001 +260180000001000000020002037777770a646976616b6f6570656c026e6c0000010001c010000200010001518000130b696973672d7365727665720469697367c01bc0100002000100015180000d036e733206787334616c6cc01bc02f00010001000151800004c3a959c3c04e00010001000151800004c26d0963 + +35599 +85bf0000000100000000000003777777056573746174026e6c0000010001 +85bf8000000100000002000003777777056573746174026e6c0000010001c01000020001000151800016036e73310c65736563757265736974653403636f6d00c01000020001000151800006036e7332c02e + +35600 +3176000000010000000000000676696e646578026e6c0000010001 +3176800000010000000300030676696e646578026e6c0000010001c00c0002000100015180000b036e733104696c7365c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc027000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +35601 +25f60000000100000000000006636861726973026e6c00000f0001 +25f68000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35602 +1003000000010000000000000c626574746572626f64696573026e6c00000f0001 +1003800000010000000200000c626574746572626f64696573026e6c00000f0001c00c0002000100015180000c026e7306766576696461c019c00c00020001000151800006036e7332c030 + +35603 +8c0e00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +8c0e80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35604 +d57500000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +d57580000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35605 +f0d90000000100000000000003777777086d6565727373656e026e6c0000010001 +f0d98000000100000002000203777777086d6565727373656e026e6c0000010001c01000020001000151800010046e733031086e65746c696e6573c019c01000020001000151800007046e733032c032c02d00010001000151800004d99540f5c04900010001000151800004d99541f5 + +35606 +c493000000010000000000000966636172657461696c026e6c00000f0001 +c493800000010000000200000966636172657461696c026e6c00000f0001c00c0002000100015180000e036e73310464646e68036e657400c00c00020001000151800006036e7332c02e + +35607 +7f0900000001000000000000037777771c706f6c697469652d616d7374657264616d2d616d7374656c6c616e64026e6c0000010001 +7f0980000001000000020002037777771c706f6c697469652d616d7374657264616d2d616d7374656c6c616e64026e6c0000010001c01000020001000151800009026e7303646d61c02dc01000020001000151800006036e7332c044c04100010001000151800004d973c8fbc05600010001000151800004d9aa11fc + +35608 +03e9000000010000000000000f6c617572656e74697573776f6e656e026e6c0000010001 +03e9800000010000000200000f6c617572656e74697573776f6e656e026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c033 + +35609 +841700000001000000000000036e7332076e656473746174026e6c0000010001 +841780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35610 +4acc00000001000000000000036e7334076e656473746174026e6c0000010001 +4acc80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35611 +12ea00000001000000000000036e73340767617574656e67026e6c0000010001 +12ea80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35612 +e9b70000000100000000000011776174657273706f7274766572626f6e64026e6c0000ff0001 +e9b78000000100000002000011776174657273706f7274766572626f6e64026e6c0000ff0001c00c00020001000151800013036e7331086d6564696177656204696e666f00c00c00020001000151800006036e7332c036 + +35613 +578400000001000000000000066b69786173730c6e65746d6173746572696e67026e6c0000010001 +578480000001000000020002066b69786173730c6e65746d6173746572696e67026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800011036e73320a73686f636b6d65646961c020c03400010001000151800004d5efa548c04600010001000151800004d5ef9d70 + +35614 +9f3600000001000000000000037777770862657374656d6f70026e6c0000010001 +9f3680000001000000030003037777770862657374656d6f70026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +35615 +04590000000100000000000008746f702d63617265026e6c00000f0001 +04598000000100000002000108746f702d63617265026e6c00000f0001c00c000200010001518000130b737061726373657276657204706c6578c015c00c0002000100015180000b026e73026e6c036e657400c02900010001000151800004c1439a0a + +35616 +074c0000000100000000000003777777077768656b616d70026e6c0000010001 +074c8000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +35617 +647d000000010000000000000377777710616d65726f6e67656e62657267696e67026e6c0000010001 +647d800000010000000200000377777710616d65726f6e67656e62657267696e67026e6c0000010001c01000020001000151800010026e730777697265687562036e657400c01000020001000151800006036e7332c038 + +35618 +fefc0010000100000000000103777777087265676572696e67026e6c00000100010000290800000080000000 +fefc8000000100000003000403777777087265676572696e67026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae0000291000000000000000 + +35619 +35d000000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +35d080000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +35620 +327000000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +327080000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +35621 +22400000000100000000000003777777077768656b616d70026e6c0000010001 +22408000000100000002000003777777077768656b616d70026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +35622 +7fd00000000100000000000003777777087265676572696e67026e6c0000010001 +7fd08000000100000003000303777777087265676572696e67026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +35623 +b18400000001000000000000037777770a746d6661727761726473026e6c0000010001 +b18484030001000000010000037777770a746d6661727761726473026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35624 +5e8f0000000100000000000004444e5331064d494e4c4e56026e6c0000010001 +5e8f8000000100000003000304444e5331064d494e4c4e56026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +35625 +351e00000001000000000000037777770974656c656772616166026e6c0000010001 +351e80000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +35626 +53f50000000100000000000006616c7469756d026e6c00000f0001 +53f58000000100000002000206616c7469756d026e6c00000f0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +35627 +1af100000001000000000000036e73320476646e73026e6c0000010001 +1af180000001000000020002036e73320476646e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc029000100010001518000045117f60bc00c000100010001518000045117f60c + +35628 +222a000000010000000000000473676e32077369656d656e73026e6c0000010001 +222a800000010000000200020473676e32077369656d656e73026e6c0000010001c01100020001000151800002c00cc011000200010001518000070473676e34c011c00c00010001000151800004c28a8909c03b00010001000151800004c28a890b + +35629 +5d6d000000010000000000000377777709616a6178666f72756d026e6c0000010001 +5d6d800000010000000300000377777709616a6178666f72756d026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c031c01000020001000151800006036e7332c031 + +35630 +efca000000010000000000000e6e6564736368726f65662d686c6d026e6c00000f0001 +efca800000010000000200020e6e6564736368726f65662d686c6d026e6c00000f0001c00c00020001000151800011036e73310a6f612d73797374656d73c01bc00c00020001000151800006036e7332c033c02f000100010001518000043eb1b1abc04c000100010001518000043eb1b1ac + +35631 +97ed000000010000000000000767756f6a75616e0564656d6f6e026e6c0000ff0001 +97ed800000010000000300020767756f6a75616e0564656d6f6e026e6c0000ff0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +35632 +9fc0000000010000000000001276616e6b6c61766572656e73746967746572026e6c00000f0001 +9fc0800000010000000200021276616e6b6c61766572656e73746967746572026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01fc00c00020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +35633 +008428000001000200000000026e6c0000060001075641524b4a45530e6469737472697665727332303033026e6c00000500fe000000000000c014000100010000000000040a030070 +0084a8040000000000000000 + +35634 +478700000001000000000000037777770c726f6265636f646972656374026e6c0000010001 +478780000001000000020001037777770c726f6265636f646972656374026e6c0000010001c0100002000100015180000d036e733106726f6265636fc01dc0100002000100015180000b026e73026e6c036e657400c03100010001000151800004913d1a01 + +35635 +80660000000100000000000005646e732d32056c61646f74026e6c0000010001 +80668000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35636 +c86900000001000000000000046d61676f026e6c00000f0001 +c86980000001000000020002046d61676f026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +35637 +0000000070024000badf0000020405b401010402 +000080010000000000000000 + +35638 +c9b1000000010000000000000a67656c64657273686f66026e6c0000010001 +c9b1800000010000000200020a67656c64657273686f66026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +35639 +dbd900000001000000000000046d61676f026e6c00000f0001 +dbd980000001000000020002046d61676f026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +35640 +88ff00000001000000000000037777770a736572766963656e65740a646972656b7462616e6b026e6c0000010001 +88ff80000001000000030002037777770a736572766963656e65740a646972656b7462616e6b026e6c0000010001c01b0002000100015180000f036e73310870726f7365727665c026c01b00020001000151800012036e73320970726f2d736572766502626500c01b00020001000151800006036e7333c03ec03a000100010001518000045054e055c07300010001000151800004d4ccc655 + +35641 +e36200000001000000000000096264677a776f6c6c65026e6c0000010001 +e36280000001000000030003096264677a776f6c6c65026e6c0000010001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec016c00c00020001000151800006036e7331c033c00c00020001000151800006036e7332c033c02a00010001000151800004d42d2005c04800010001000151800004d42d2003c05a00010001000151800004d42d2103 + +35642 +21c7000000010000000000000c6f72696f6e2d65726f746963026e6c0000010001 +21c7800000010000000200020c6f72696f6e2d65726f746963026e6c0000010001c00c0002000100015180000e036e7331076970746f776572c019c00c00020001000151800006036e7332c031c02d000100010001518000043ecc4065c047000100010001518000043ecc4066 + +35643 +4bd800000001000000000000037777770b686f752d76616e2d6a6f75026e6c0000010001 +4bd880000001000000020000037777770b686f752d76616e2d6a6f75026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +35644 +a6fc000000010000000000000377777707656c63616e6574026e6c0000010001 +a6fc800000010000000200020377777707656c63616e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c1ac2d36c03e00010001000151800004c1ac2d35 + +35645 +0bb60000000100000000000003777777106b6c616e7476616e766572736174656c026e6c0000010001 +0bb68000000100000002000103777777106b6c616e7476616e766572736174656c026e6c0000010001c0100002000100015180000b026e730563616c7978c021c0100002000100015180000c096d617273657065696ec038c03500010001000151800004d582a20c + +35646 +629600000001000000000000037777771167656d65656e746564657368656572656e026e6c0000010001 +629680000001000000020000037777771167656d65656e746564657368656572656e026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c03a + +35647 +12dc000000010000000000000b72696f766f6f727a6f7267026e6c00000f0001 +12dc800000010000000200000b72696f766f6f727a6f7267026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +35648 +3c400000000100000000000009652d6c756e61746963026e6c0000010001 +3c408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35649 +11f000000001000000000000037777770c7961776e696e676a656c6c65026e6c0000010001 +11f080000001000000020000037777770c7961776e696e676a656c6c65026e6c0000010001c01000020001000151800015026e730c776f726c64686f7374696e67036f726700c01000020001000151800008026e73026175c034 + +35650 +97ce0000000100000000000003777777126b616d657276616e6b6f6f7068616e64656c026e6c0000010001 +97ce8000000100000002000203777777126b616d657276616e6b6f6f7068616e64656c026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c023c01000020001000151800006036e7332c03ac03700010001000151800004c3402003c05000010001000151800004c340202b + +35651 +27fb000000010000000000000377777707696b653230303006746d66776562026e6c0000010001 +27fb800000010000000200000377777707696b653230303006746d66776562026e6c0000010001c01800020001000151800011056c656d6f6e0571696e6970036e657400c01800020001000151800007046c696d65c039 + +35652 +fc1c00000001000000000000036e7333076f6d732d6e6574026e6c0000010001 +fc1c80000001000000020002036e7333076f6d732d6e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004d5efb22fc03e00010001000151800004d5ef9d07 + +35653 +e12900000001000000000000037777770973706f727473746164026e6c0000010001 +e12980000001000000020000037777770973706f727473746164026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +35654 +2c9900100001000000000001036e7331056132303030026e6c00000100010000290800000080000000 +2c9980000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +35655 +e87000100001000000000001036e7332056132303030026e6c00000100010000290800000080000000 +e87080000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +35656 +445600000001000000000000166a616e7373656e62656c617374696e67616476696573026e6c00000f0001 +445680000001000000020002166a616e7373656e62656c617374696e67616476696573026e6c00000f0001c00c00020001000151800013036e73310c62656472696a76656e776562c023c00c00020001000151800006036e7332c03bc03700010001000151800004d90867fec05600010001000151800004c1ad2bfe + +35657 +5a4800000001000000000000037777770a636f6d70757365727665026e6c0000010001 +5a4880000001000000020000037777770a636f6d70757365727665026e6c0000010001c0100002000100015180001f0e61726c2d6e616d652d7376632d310a636f6d7075736572766503636f6d00c010000200010001518000110e6475622d6e616d652d7376632d31c03e + +35658 +312f00000001000000000000036e733208696e7465722d6974026e6c0000010001 +312f80000001000000020002036e733208696e7465722d6974026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d5c4385ac00c00010001000151800004d5c4385b + +35659 +f0f400000001000000000000033033350c7665727a616d656c67696473026e6c0000010001 +f0f480000001000000020000033033350c7665727a616d656c67696473026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +35660 +f18400000001000000000000026e7308696e7465722d6974026e6c0000010001 +f18480000001000000020002026e7308696e7465722d6974026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5c4385ac03a00010001000151800004d5c4385b + +35661 +b76b0000000100000000000003777777056b616d7066026e6c0000010001 +b76b8000000100000002000003777777056b616d7066026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02e + +35662 +f69700000001000000000000035f6763045f7463700c6b657a726f7474657264616d026e6c0000060001 +f69784030001000000010000035f6763045f7463700c6b657a726f7474657264616d026e6c0000060001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +35663 +9dfc00000001000000000000026e73067874646e6574026e6c0000010001 +9dfc80000001000000020002026e73067874646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +35664 +324100000001000000000000036e7331067874646e6574026e6c0000010001 +324180000001000000020002036e7331067874646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004c16e9d02c00c00010001000151800004d9cc165f + +35665 +05b800000001000000000000066a6f73687561076265616e2d6974026e6c0000010001 +05b880000001000000020002066a6f73687561076265616e2d6974026e6c0000010001c0130002000100015180000c036e7331056e6574636fc01bc01300020001000151800006036e7332c033c02f00010001000151800004c26d4a82c04700010001000151800004c26dd146 + +35666 +1af800000001000000000000036e73330767617574656e67026e6c0000010001 +1af880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35667 +971c00000001000000000000037777770b776572656c647374617274026e6c0000010001 +971c80000001000000020000037777770b776572656c647374617274026e6c0000010001c01000020001000151800014036e73310d646e73636f6d656f6e6c696e65c01cc01000020001000151800006036e7332c034 + +35668 +f5660000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f5668000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35669 +66200000000100000000000003777777096b6f707a6f7267656e026e6c0000010001 +66208000000100000002000203777777096b6f707a6f7267656e026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d994ae77c04c000100010001518000045054ea06 + +35670 +ea6e00000001000000000000056d69726563026e6c00000f0001 +ea6e80000001000000020000056d69726563026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +35671 +046f0000000100000000000009652d6c756e61746963026e6c0000010001 +046f8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35672 +1b9900000001000000000000037777770a3474756e652d73686f70026e6c0000010001 +1b9980000001000000020000037777770a3474756e652d73686f70026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c032 + +35673 +f58b00000001000000000000046d61696c0d73762d7a6f657465726d656572026e6c0000010001 +f58b80000001000000020000046d61696c0d73762d7a6f657465726d656572026e6c0000010001c0110002000100015180000f026e7306777367617465036e657400c01100020001000151800006036e7332c036 + +35674 +0f740000000100000000000003737767026e6c00000f0001 +0f748000000100000002000103737767026e6c00000f0001c00c0002000100015180000a026e73046b6e6d67c010c00c0002000100015180000b026e73026e6c036e657400c02400010001000151800004d4cef782 + +35675 +dfe2000000010000000000000761707073736f6c0b77326b736f6c6970736973026e6c0000010001 +dfe2840300010000000100000761707073736f6c0b77326b736f6c6970736973026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +35676 +555b000000010000000000000777616e61646f6f026e6c00000f0001 +555b800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +35677 +efcb000000010000000000000467736276026e6c00000f0001 +efcb800000010000000200010467736276026e6c00000f0001c00c0002000100015180000a036e733303777873c011c00c00020001000151800006036e7334c029c03b00010001000151800004d5ef9a65 + +35678 +a70500000001000000000000037777770e767236636c7562686f6c6c616e64026e6c0000010001 +a70580000001000000020000037777770e767236636c7562686f6c6c616e64026e6c0000010001c01000020001000151800010036e7331066969686f73740362697a00c01000020001000151800006036e7332c037 + +35679 +503c00000001000000000000046d746131046b6e6d67026e6c0000010001 +503c80000001000000020001046d746131046b6e6d67026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02a00010001000151800004d4cef782 + +35680 +23d200000001000000000001026e73036b6c6d026e6c00000100010000291000000000000000 +23d280000001000000020002026e73036b6c6d026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab1550120000291000000000000000 + +35681 +240400000001000000000001026e73036b6c6d026e6c00001c00010000291000000000000000 +240480000001000000020002026e73036b6c6d026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab1550120000291000000000000000 + +35682 +2c0700000001000000000001026e73036b6c6d026e6c00002600010000291000000000000000 +2c0780000001000000020002026e73036b6c6d026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab1550120000291000000000000000 + +35683 +33a50000000100000000000103666c79036b6c6d026e6c00001c00010000291000000000000000 +33a58000000100000002000203666c79036b6c6d026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab1550120000291000000000000000 + +35684 +49160000000100000000000103666c79036b6c6d026e6c00002600010000291000000000000000 +49168000000100000002000203666c79036b6c6d026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab1550120000291000000000000000 + +35685 +c18f0000000100000000000003777777076a657463617273026e6c0000010001 +c18f8000000100000002000003777777076a657463617273026e6c0000010001c01000020001000151800013056175746f310a747265666e6574646e73c018c01000020001000151800006036e7331c032 + +35686 +57ab0000000100000000000003777777076a657463617273026e6c0000010001 +57ab8000000100000002000003777777076a657463617273026e6c0000010001c01000020001000151800013056175746f310a747265666e6574646e73c018c01000020001000151800006036e7331c032 + +35687 +07980000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c0000010001 +07988000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +35688 +2a6e00000001000000000000046e733032066368656c6c6f026e6c0000260001 +2a6e80000001000000030003046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +35689 +fb3b00000001000000000000046e733032066368656c6c6f026e6c0000010001 +fb3b80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +35690 +ef160000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c00001c0001 +ef168000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c00001c0001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +35691 +2f370000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c0000260001 +2f378000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c0000260001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +35692 +719e00000001000000000000026e7311656e7465727072697365686f7374696e67026e6c00001c0001 +719e80000001000000020001026e7311656e7465727072697365686f7374696e67026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +35693 +23d200000001000000000000026e73036b6c6d026e6c0000010001 +23d280000001000000020001026e73036b6c6d026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab155012 + +35694 +f47600000001000000000000026e7311656e7465727072697365686f7374696e67026e6c0000260001 +f47680000001000000020001026e7311656e7465727072697365686f7374696e67026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +35695 +240400000001000000000000026e73036b6c6d026e6c00001c0001 +240480000001000000020001026e73036b6c6d026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab155012 + +35696 +2c0700000001000000000000026e73036b6c6d026e6c0000260001 +2c0780000001000000020001026e73036b6c6d026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab155012 + +35697 +33a50000000100000000000003666c79036b6c6d026e6c00001c0001 +33a58000000100000002000103666c79036b6c6d026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +35698 +49160000000100000000000003666c79036b6c6d026e6c0000260001 +49168000000100000002000103666c79036b6c6d026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +35699 +ce8a00000001000000000000037777770a616c6c73706972697473026e6c0000010001 +ce8a80000001000000020000037777770a616c6c73706972697473026e6c0000010001c0100002000100015180000f036e7331056279303037036e657400c01000020001000151800006036e7332c033 + +35700 +3eab28000001000000010000026e6c0000060001035f6763045f7463700c6b657a726f7474657264616d026e6c000021000100000258001e000000640cc40665636f6e656c0c6b657a726f7474657264616d026e6c00 +3eaba8040000000000000000 + +35701 +660e00000001000000000000046b656d61026e6c0000010001 +660e80000001000000020001046b656d61026e6c0000010001c00c0002000100015180000704646e7331c00cc00c0002000100015180000d03706e73046474616702646500c02500010001000151800004c235fd32 + +35702 +623900000001000000000000036e7331056132303030026e6c0000010001 +623980000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +35703 +6c7300000001000000000000036e7332056132303030026e6c0000010001 +6c7380000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +35704 +00000000700240008d210000020405b401010402 +000080010000000000000000 + +35705 +2af700000001000000000000037777770f64616e636576696572646161677365026e6c0000010001 +2af780000001000000020002037777770f64616e636576696572646161677365026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c020c01000020001000151800006036e7332c038c03400010001000151800004d43d0f08c05200010001000151800004d43d19e2 + +35706 +7f4000000001000000000000097364766f6e6c696e65026e6c0000010001 +7f4080000001000000020002097364766f6e6c696e65026e6c0000010001c00c00020001000151800016036e73310f666173747365727665722d61737037c016c00c00020001000151800006036e7332c02ec02a0001000100015180000442a4f028c04c0001000100015180000442a4f031 + +35707 +f6690000000100000000000007636172746d616e03616f67026e6c0000260001 +f6698000000100000002000207636172746d616e03616f67026e6c0000260001c0140002000100015180000f06706f6c6c7578056672656961c018c01400020001000151800002c00cc02c00010001000151800004c1acf7fac00c00010001000151800004c05716fa + +35708 +9e8700000001000000000000046d61696c03616f67026e6c0000260001 +9e8780000001000000020002046d61696c03616f67026e6c0000260001c0110002000100015180000f06706f6c6c7578056672656961c015c0110002000100015180000a07636172746d616ec011c02900010001000151800004c1acf7fac04400010001000151800004c05716fa + +35709 +3d3f0000000100000000000007636172746d616e03616f67026e6c00001c0001 +3d3f8000000100000002000207636172746d616e03616f67026e6c00001c0001c0140002000100015180000f06706f6c6c7578056672656961c018c01400020001000151800002c00cc02c00010001000151800004c1acf7fac00c00010001000151800004c05716fa + +35710 +a65700000001000000000000046d61696c03616f67026e6c00001c0001 +a65780000001000000020002046d61696c03616f67026e6c00001c0001c0110002000100015180000f06706f6c6c7578056672656961c015c0110002000100015180000a07636172746d616ec011c02900010001000151800004c1acf7fac04400010001000151800004c05716fa + +35711 +ef3500000001000000000000037777770c6c696e6b696e676769726c73026e6c0000010001 +ef3580000001000000020000037777770c6c696e6b696e676769726c73026e6c0000010001c0100002000100015180000f036e7331056279303037036e657400c01000020001000151800006036e7332c035 + +35712 +e61100000001000000000000037777770e73746172746e656465726c616e64026e6c0000010001 +e61180000001000000020002037777770e73746172746e656465726c616e64026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +35713 +b744e8ca5010447015560000000000000000 + + +35714 +b744e8ca50184470b35000000091ec00000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2a403c4eaa0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 + + +35715 +7f920000000100000000000005646e732d32056c61646f74026e6c0000010001 +7f928000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35716 +3e9300000001000000000000037777770967726174697367656b026e6c0000010001 +3e9380000001000000020002037777770967726174697367656b026e6c0000010001c0100002000100015180000a036e733103716b73c01ac01000020001000151800006036e7332c032c02e000100010001518000045045481ec044000100010001518000043e835085 + +35717 +8f2928000001000000010000026e6c0000060001026763065f6d73646373096f736f736572766572026e6c0000010001000002580004915d8412 +8f29a8040000000000000000 + +35718 +d99e0000000100000000000006736572766572026462036b766b026e6c0000010001 +d99e8000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +35719 +b744e8d85011446214c20000000000000000 + + +35720 +000000007002faf0d1eb0000020405b401010402 +000080010000000000000000 + +35721 +54810000000100000000000005646e732d31056c61646f74026e6c0000010001 +54818000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35722 +b74563a75010faf0e3b20000000000000000 +b745e3a40000000000000000 + +35723 +b74563a75018faf096e00000008e0000000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcdf403c4e5f00030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 +b745e3a40000000000000000 + +35724 +000000007002400008010000020405b401010402 +000080010000000000000000 + +35725 +33bb0000000100000000000005646e732d32056c61646f74026e6c0000010001 +33bb8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35726 +b74563b55011fae2e3210000000000000000 +b745e3b40000000000000000 + +35727 +b74563b65010fae2e3200000000000000000 +b745e3b40000000000000000 + +35728 +10460000000100000000000003777777136f6e6c696e65736f636365726d616e61676572026e6c0000010001 +10468000000100000002000203777777136f6e6c696e65736f636365726d616e61676572026e6c0000010001c0100002000100015180000b036e73310470696e65c024c01000020001000151800006036e7332c03cc03800010001000151800004d59c0201c04f00010001000151800004c3c1a303 + +35729 +000000007002faf002cf0000020405b401010402 +000080010000000000000000 + +35730 +b744e8d95010446214c10000000000000000 + + +35731 +298000000001000000000000056d61696c310a686f73746d6174726978026e6c0000010001 +298080000001000000020002056d61696c310a686f73746d6174726978026e6c0000010001c0120002000100015180000b026e73057173776562c01dc01200020001000151800006036e7332c034c03100010001000151800004d5c42402c04800010001000151800004d5c42403 + +35732 +b74725ec5010faf0524f0000000000000000 +b747a5e30000000000000000 + +35733 +b74725ec5018faf08e160000008e7867000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcdf403c4e5f00030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 +b747a5e30000000000000000 + +35734 +b746472d5010447031d10000000000000000 +b746c7240000000000000000 + +35735 +b74725fa5011fae251be0000000000000000 +b747a5f30000000000000000 + +35736 +b746472d50184470ec4c00000091ce80000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2b403c4eab0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 +b746c7240000000000000000 + +35737 +cb2b000000010000000000000377777704616e626f026e6c0000010001 +cb2b800000010000000300030377777704616e626f026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004d5c98015c04400010001000151800004d5c9bf12c05600010001000151800004d5ef9c26 + +35738 +b74725fb5010fae251bd0000000000000000 +b747a5f30000000000000000 + +35739 +000000007002faf0e9570000020405b401010402 +000080010000000000000000 + +35740 +b748136e5010faf04b550000000000000000 +b74893640000000000000000 + +35741 +b748136e5018faf0e48c0000008e1af7000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afcdf403c4e5f00030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005345525645524f534f5345525645520000 +b74893640000000000000000 + +35742 +8e5e0000000100000000000008726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001 +8e5e8000000100000002000208726567696f7777770d6b72616e74656e6f6e6c696e65026e6c0000010001c0150002000100015180000e036e7331076e657463617374c023c01500020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +35743 +b748137c5011fae24ac40000000000000000 +b74893740000000000000000 + +35744 +1f300000000100000000000003777777117765656b626c616476616e646575726e65026e6c0000010001 +1f308403000100000001000003777777117765656b626c616476616e646575726e65026e6c0000010001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +35745 +b746473b50114462313d0000000000000000 +b746c7340000000000000000 + +35746 +ab760000000100000000000003777777056c6572656e026e6c0000010001 +ab768000000100000002000203777777056c6572656e026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +35747 +b748137d5010fae24ac30000000000000000 +b74893740000000000000000 + +35748 +0000000070024000f14c0000020405b401010402 +000080010000000000000000 + +35749 +acfc0000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +acfc8000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +35750 +ee620010000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +ee628000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +35751 +a8d200000001000000000000036e733103696e67026e6c00001c0001 +a8d280000001000000020002036e733103696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +35752 +ce0800000001000000000000036e733103696e67026e6c0000260001 +ce0880000001000000020002036e733103696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +35753 +6c2c00000001000000000000036e733203696e67026e6c00001c0001 +6c2c80000001000000020002036e733203696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +35754 +cfee00000001000000000000036e733203696e67026e6c0000260001 +cfee80000001000000020002036e733203696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +35755 +b746473c50104462313c0000000000000000 +b746c7340000000000000000 + +35756 +b748a93150104470b9160000000000000000 + + +35757 +b748a93150184470dd12000000916500000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2b403c4eab0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 + + +35758 +9e2700000001000000000000037777770674756c70656e026e6c0000010001 +9e2780000001000000020002037777770674756c70656e026e6c0000010001c0100002000100015180000b036e733104696e6263c017c01000020001000151800006036e7332c02fc02b00010001000151800004d5852324c04200010001000151800004d5852323 + +35759 +019f0000000100000000000008746f706a6f796e74026e6c00000f0001 +019f8000000100000003000108746f706a6f796e74026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +35760 +b748a93f50114462b8820000000000000000 + + +35761 +b742be80501044706d600000000000000000 + + +35762 +b742be80501844708594000000962eb5000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe17403c4f970003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 + + +35763 +8d4000000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +8d4080000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +35764 +b748a94050104462b8810000000000000000 + + +35765 +a6a900000001000000000000037777770a626f75776b656e6e6973026e6c0000010001 +a6a980000001000000020002037777770a626f75776b656e6e6973026e6c0000010001c0100002000100015180001204646e73310a6e65746d617374657273c01bc0100002000100015180000704646e7332c034c02f0001000100015180000451044203c04d00010001000151800004510442c9 + +35766 +44b900000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +44b980000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +35767 +b03300000001000000000000037777770a72656372656174696566026e6c0000010001 +b03380000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +35768 +baeb00000001000000000000037777770a736f636365726d61696c026e6c0000010001 +baeb84030001000000010000037777770a736f636365726d61696c026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35769 +585500000001000000000000037777770e736c6f74656e2d726976616c656e026e6c0000010001 +585580000001000000020002037777770e736c6f74656e2d726976616c656e026e6c0000010001c01000020001000151800013036e73310c666173747365727665723138c01fc01000020001000151800006036e7332c037c0330001000100015180000442a4fa76c0520001000100015180000442a4fa7f + +35770 +90a800000001000000000000026772026e6c00000f0001 +90a880000001000000020000026772026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +35771 +ff0f00000001000000000000036e733108696e736563757265026e6c0000010001 +ff0f80000001000000030003036e733108696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +35772 +d22400000001000000000000036e733408696e736563757265026e6c0000010001 +d22480000001000000030003036e733408696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +35773 +74ac00000001000000000000036e733308696e736563757265026e6c0000010001 +74ac80000001000000030003036e733308696e736563757265026e6c0000010001c0100002000100015180000e076e73617574683103626974c019c0100002000100015180000a076e736175746832c035c0100002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +35774 +232f00000001000000000000036e73330767617574656e67026e6c0000010001 +232f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35775 +59180000000100000000000003444f4302574d034f534709545245455f4f534732026e6c0000010001 +59188403000100000001000003444f4302574d034f534709545245455f4f534732026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +35776 +0b5b00000001000000000000037777770b696e6469616e6261626573026e6c0000010001 +0b5b80000001000000020000037777770b696e6469616e6261626573026e6c0000010001c01000020001000151800012036e7335087a6f6e656564697403636f6d00c01000020001000151800007046e733134c034 + +35777 +0ebf0000000100000000000006636861726973026e6c00000f0001 +0ebf8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35778 +6cae00000001000000000000037777770473616162026e6c0000010001 +6cae80000001000000020002037777770473616162026e6c0000010001c010000200010001518000140d7372726463303134646d7a303403726463c015c010000200010001518000100d7372726463303132646d7a3033c037c02900010001000151800004d973e064c04900010001000151800004d973e054 + +35779 +e60d00000001000000000000056161677573026e6c0000ff0001 +e60d80000001000000020000056161677573026e6c0000ff0001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec02d + +35780 +489200000001000000000000054a48415a5403626c61026e6c0000010001 +489280000001000000020001054a48415a5403626c61026e6c0000010001c0120002000100015180000d026e73046575726f036e657400c0120002000100015180000d026e73076575726f6e6574c016c04300010001000151800004c2860043 + +35781 +00000000700240008d4000000204058c01010402 +000080010000000000000000 + +35782 +29140000000100000000000007636f756e74657207636865636b6974026e6c0000010001 +29148000000100000002000207636f756e74657207636865636b6974026e6c0000010001c01400020001000151800009036e7331026973c01cc01400020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +35783 +2a1e000000010000000000000e6138302d3132362d39362d323438046164736c06787334616c6c026e6c0000010001 +2a1e800000010000000300020e6138302d3132362d39362d323438046164736c06787334616c6c026e6c0000010001c02000020001000151800005026e73c020c02000020001000151800006036e7332c020c0200002000100015180000d026e730472697065036e657400c03b00010001000151800004c26d0642c04c00010001000151800004c26d0963 + +35784 +031200000001000000000000036e73340767617574656e67026e6c0000010001 +031280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35785 +1b1c00000001000000000000036e73340767617574656e67026e6c0000010001 +1b1c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35786 +ea5b000000010000000000000e73656375726974617367726f7570026e6c00000f0001 +ea5b800000010000000200000e73656375726974617367726f7570026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c035 + +35787 +1a280000000100000000000006616c7469756d026e6c00000f0001 +1a288000000100000002000206616c7469756d026e6c00000f0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +35788 +dd2000000001000000000000046d61696c03766e76026e6c0000010001 +dd2080000001000000020000046d61696c03766e76026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c02f + +35789 +b749679e5010429098540000000000000000 +b749e7940000000000000000 + +35790 +4386000000010000000000000377777706636f6d706171026e6c0000010001 +4386800000010000000200000377777706636f6d706171026e6c0000010001c0100002000100015180001c0a6e73312d7075626c6963047a72656f06636f6d70617103636f6d00c0100002000100015180000d0a6e73322d7075626c6963c036 + +35791 +b749679e50184290705700000091e4db000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005703677373096d6963726f736f667403636f6d00403afd9c403c4f1c0003000000344e544c4d535350000100000097b200c00d000d002700000007000700200000005641524b4a4553444953545249564552533033410000 +b749e7940000000000000000 + +35792 +f5740000000100000000000003777777086d74726565787878026e6c0000010001 +f5748000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +35793 +b74967ac5011428297c00000000000000000 +b749e7a40000000000000000 + +35794 +823b0000000100000000000006636861726973026e6c00000f0001 +823b8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35795 +9ce8000000010000000000000462617261026e6c0000ff0001 +9ce8800000010000000200020462617261026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +35796 +ee2800000001000000000000037777770b636164636f6c6c6c656765026e6c0000010001 +ee2884030001000000010000037777770b636164636f6c6c6c656765026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +35797 +91e90000000100000000000012746567656e6469736372696d696e61746965026e6c0000010001 +91e98000000100000002000012746567656e6469736372696d696e61746965026e6c0000010001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c037 + +35798 +4ac700000001000000000000034e533203494e47026e6c0000010001 +4ac780000001000000020002034e533203494e47026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +35799 +1b0600000001000000000000034e533203494e47026e6c00001c0001 +1b0680000001000000020002034e533203494e47026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +35800 +b5bc00000001000000000000034e533103494e47026e6c0000010001 +b5bc80000001000000020002034e533103494e47026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +35801 +e19f00000001000000000000034e533103494e47026e6c00001c0001 +e19f80000001000000020002034e533103494e47026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +35802 +b74967ad5010428297bf0000000000000000 +b749e7a40000000000000000 + +35803 +6dbf00000001000000000000026e75026e6c026e6c00001c0001 +6dbf84030001000000010000026e75026e6c026e6c00001c0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +35804 +0159000000010000000000000672656c6179310b776f726c646f6e6c696e65026e6c0000010001 +0159800000010000000300020672656c6179310b776f726c646f6e6c696e65026e6c0000010001c0130002000100015180000f04616e73310774697363616c69c01fc0130002000100015180000704616e7332c038c0130002000100015180001404616e73330a74697363616c696e657402626500c03300010001000151800004c3f14d38c04e00010001000151800004c3f13325 + +35805 +d82300000001000000000000037777770f7a6576656e70726f76696e6369656e026e6c0000010001 +d82380000001000000020000037777770f7a6576656e70726f76696e6369656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03a + +35806 +0000000070024000f46000000204058c01010402 +000080010000000000000000 + +35807 +04da0000000100000000000007676c6173776562026e6c00000f0001 +04da8000000100000002000207676c6173776562026e6c00000f0001c00c0002000100015180000d036e733106646e736e6574c014c00c00020001000151800006036e7332c02cc02800010001000151800004d4ccc4f2c04100010001000151800004d4ccc4f3 + +35808 +73c100000001000000000000037777770770632d65786974026e6c0000010001 +73c184030001000000010000037777770770632d65786974026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +35809 +b74a49ae501042901d640000000000000000 +b74ac9a40000000000000000 + +35810 +f8400000000100000000000007796f75616c696e08747765616b64736c026e6c0000010001 +f8408000000100000002000207796f75616c696e08747765616b64736c026e6c0000010001c0140002000100015180000f036e73310863616d627269756dc01dc01400020001000151800006036e7332c035c03100010001000151800004d9131082c04c00010001000151800004d5efb202 + +35811 +b74a49ae5018429054610000009187e1000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afd9c403c4f1c0003000000344e544c4d535350000100000097b200c00d000d002700000007000700200000005641524b4a4553444953545249564552533033410000 +b74ac9a40000000000000000 + +35812 +b74a49bc501142821cd00000000000000000 +b74ac9b40000000000000000 + +35813 +0000000070024000fa2700000204058c01010402 +000080010000000000000000 + +35814 +39680000000100000000000003777777076e6574706f6c6c026e6c0000010001 +39688000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +35815 +b74a49bd501042821ccf0000000000000000 +b74ac9b40000000000000000 + +35816 +b74ac63f50104290a6990000000000000000 + + +35817 +b74ac63f50184290a35700000091c220000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005703677373096d6963726f736f667403636f6d00403afd9c403c4f1c0003000000344e544c4d535350000100000097b200c00d000d002700000007000700200000005641524b4a4553444953545249564552533033410000 + + +35818 +3a3a00000001000000000000046d61696c0b736f756e6473747265616d026e6c0000010001 +3a3a80000001000000020000046d61696c0b736f756e6473747265616d026e6c0000010001c01100020001000151800011036e733107636f6e6365726103636f6d00c01100020001000151800006036e7332c035 + +35819 +33050000000100000000000003676c72026e6c0000ff0001 +33058000000100000002000203676c72026e6c0000ff0001c00c0002000100015180000a07676c722d707273c00cc00c0002000100015180000c05676c722d3003737475c00cc0240001000100015180000451af4002c03a0001000100015180000451af4102 + +35820 +deba00000001000000000000036b6e62026e6c0000ff0001 +deba80000001000000020000036b6e62026e6c0000ff0001c00c00020001000151800011036e733107696c63616d706f03636f6d00c00c00020001000151800006036e7332c028 + +35821 +b74ac64d50114282a6050000000000000000 + + +35822 +d6ed00000001000000000000046d61696c0a6379707265732d657270026e6c0000260001 +d6ed80000001000000020002046d61696c0a6379707265732d657270026e6c0000260001c0110002000100015180000e036e733007656173796e6574c01cc01100020001000151800006036e7331c034c03000010001000151800004c2a55e01c04a00010001000151800004c2a55e05 + +35823 +480200000001000000000000046e6f7261026e6c0000010001 +480280000001000000020002046e6f7261026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +35824 +2cce000000010000000000000a777777612d706f696e74026e6c0000010001 +2cce840300010000000100000a777777612d706f696e74026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +35825 +b74ac64e50104282a6040000000000000000 + + +35826 +2c1200000001000000000000036e73320763697374726f6e026e6c0000260001 +2c1280000001000000020002036e73320763697374726f6e026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +35827 +7c6e00000001000000000000036e73320763697374726f6e026e6c0000010001 +7c6e80000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +35828 +6a1200000001000000000000026e730763697374726f6e026e6c0000010001 +6a1280000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +35829 +78e600000001000000000000026e730763697374726f6e026e6c0000260001 +78e680000001000000020002026e730763697374726f6e026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +35830 +b34b000000010000000000000f7269616767616d657273666f6f7274026e6c00000f0001 +b34b800000010000000200000f7269616767616d657273666f6f7274026e6c00000f0001c00c0002000100015180000e026e7308676c6f62616c7873c01cc00c00020001000151800006036e7332c033 + +35831 +556500000001000000000000037777770c616e74692d6875737365696e026e6c0000010001 +556584030001000000010000037777770c616e74692d6875737365696e026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +35832 +9d480000000100000000000009696e6e6f7661746564026e6c00000f0001 +9d488000000100000002000009696e6e6f7661746564026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c016c00c0002000100015180000704686e7331c02f + +35833 +2e8700100001000000000001036e733303777873026e6c00000100010000290800000080000000 +2e8780000001000000030004036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +35834 +978700000001000000000000037777770434636973026e6c0000010001 +978780000001000000020002037777770434636973026e6c0000010001c0100002000100015180000e036e73310769736973776562c015c01000020001000151800006036e7332c02dc02900010001000151800004d4ccca65c04300010001000151800004510440de + +35835 +d1d700000001000000000000026e73027575026e6c0000010001 +d1d780000001000000040004026e73027575026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c012c00f00020001000151800006036e7333c00fc00c0001000100015180000483d30405c0340001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +35836 +620c00000001000000000000037777770c6b6172706572776572656c64026e6c0000010001 +620c80000001000000020000037777770c6b6172706572776572656c64026e6c0000010001c01000020001000151800013026e730a646168686f7374696e6703636f6d00c01000020001000151800006036e7332c034 + +35837 +0af100000001000000000000036e7332027575026e6c0000010001 +0af180000001000000040004036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +35838 +8a3b00000001000000000000036e733303777873026e6c0000010001 +8a3b80000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +35839 +96c1000000010000000000000b706c6f6567676f69726c65026e6c0000010001 +96c1800000010000000200020b706c6f6567676f69726c65026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +35840 +de47000000010000000000000377777703727661026e6c0000010001 +de47800000010000000200000377777703727661026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +35841 +a94d00100001000000000001036e733403777873026e6c00000100010000290800000080000000 +a94d80000001000000030004036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a650000291000000000000000 + +35842 +b0b600100001000000000001046e73303803777873026e6c00000100010000290800000080000000 +b0b680000001000000030004046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +35843 +585b00100001000000000001046e73303903777873026e6c00000100010000290800000080000000 +585b80000001000000030004046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a650000291000000000000000 + +35844 +b742be8e501144626cc70000000000000000 + + +35845 +000000007002400079c20000020405b401010402 +000080010000000000000000 + +35846 +f773000000010000000000000d426c6f6d737469656c73747261026e6c0000ff0001 +f773800000010000000300010d426c6f6d737469656c73747261026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc01ac00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +35847 +85dc0000000100000000000003777777076a75646f6e6574026e6c0000010001 +85dc8000000100000002000103777777076a75646f6e6574026e6c0000010001c0100002000100015180000c026e7306636f62776562c018c01000020001000151800011026e73087363686970686f6c036e657400c02c0001000100015180000450f26001 + +35848 +dade000000010000000000000a616666696c6961746573056b6c696b73026e6c0000010001 +dade800000010000000200000a616666696c6961746573056b6c696b73026e6c0000010001c01700020001000151800012026e73096e6c686f7374696e67036e657400c01700020001000151800006036e7331c034 + +35849 +20a700000001000000000000036e73310765766964656e74026e6c0000010001 +20a780000001000000020002036e73310765766964656e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c36d19c4c03a00010001000151800004c36d1942 + +35850 +190000000001000000000000086772617a65726965026e6c00000f0001 +190080000001000000020002086772617a65726965026e6c00000f0001c00c00020001000151800012036e73320b76736d2d686f7374696e67c015c00c00020001000151800005026e73c02dc02900010001000151800004d468c204c04700010001000151800004d468c205 + +35851 +bb3100000001000000000001056132303030026e6c0000ff00010000291000000000000000 +bb3180000001000000030003056132303030026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +35852 +50ae00000001000000000000036e73320c636f6e63657074732d696374026e6c0000010001 +50ae80000001000000020002036e73320c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b + +35853 +38e0000000010000000000000d6a657567646361726e6176616c026e6c0000010001 +38e0800000010000000200000d6a657567646361726e6176616c026e6c0000010001c00c0002000100015180000f026e73066f786361727403636f6d00c00c00020001000151800006036e7332c031 + +35854 +109900000001000000000000036e733403777873026e6c0000010001 +109980000001000000030003036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +35855 +2b6000000001000000000000046e73303803777873026e6c0000010001 +2b6080000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +35856 +0afd00000001000000000000046e73303903777873026e6c0000010001 +0afd80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +35857 +1d000000000100000000000009652d6c756e61746963026e6c0000010001 +1d008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +35858 +281100000001000000000000037777770b64652d6c612d7275696e65026e6c026e6c0000010001 +281184030001000000010000037777770b64652d6c612d7275696e65026e6c026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +35859 +7589000000010000000000000e7365727665722d6e61617264656e0c76657273616e61617264656e026e6c0000060001 +7589840300010000000100000e7365727665722d6e61617264656e0c76657273616e61617264656e026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +35860 +7b88000000010000000000000377777709736578796f726e6f74026e6c0000010001 +7b88800000010000000200000377777709736578796f726e6f74026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +35861 +7fc1000000010000000000000e68656d656c6161722d6e65656c65026e6c00000f0001 +7fc1800000010000000300020e68656d656c6161722d6e65656c65026e6c00000f0001c00c0002000100015180000d036e733106776964657873c01bc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +35862 +a05100000001000000000000087377617274657462026e6c00000f0001 +a05180000001000000020001087377617274657462026e6c00000f0001c00c0002000100015180000f026e7309696e747265616e6574c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4ced165 + +35863 +bb3100000001000000000000056132303030026e6c0000ff0001 +bb3180000001000000030002056132303030026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c0142 + +35864 +eeae00000001000000000000026e7309696e747265616e6574026e6c0000010001 +eeae80000001000000020001026e7309696e747265616e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4ced165 + +35865 +7c0e00000001000000000000036e733209696e747265616e6574026e6c0000010001 +7c0e80000001000000020001036e733209696e747265616e6574026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02e00010001000151800004d4ced165 + +35866 +04c90000000100000000000005474c454e4e06626f6f6b756d026e6c0000010001 +04c98403000100000001000005474c454e4e06626f6f6b756d026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +35867 +1f8100000001000000000000085f6b706173737764045f756470044653494d024e4c0000060001 +1f8184030001000000010000085f6b706173737764045f756470044653494d024e4c0000060001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +35868 +231f000000010000000000000377777704736b6974026e6c0000010001 +231f800000010000000300020377777704736b6974026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +35869 +06b9000000010000000000000377777703636467026e6c0000010001 +06b9800000010000000200020377777703636467026e6c0000010001c0100002000100015180000b036e73310470696e65c014c01000020001000151800006036e7332c02cc02800010001000151800004d59c0201c03f00010001000151800004c3c1a303 + +35870 +71c100000001000000000000037777770873686f7274696573026e6c0000010001 +71c180000001000000020002037777770873686f7274696573026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +35871 +775f000000010000000000000a626f736265736c61616e026e6c00000f0001 +775f800000010000000200020a626f736265736c61616e026e6c00000f0001c00c0002000100015180000a036e7331036e7873c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +35872 +27880010000100000000000106636861726973026e6c00000f00010000290800000080000000 +27888000000100000002000106636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +35873 +2dbb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2dbb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35874 +0ce50000000100000000000005646e732d31056c61646f74026e6c0000010001 +0ce58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35875 +9dd20000000100000000000005646e732d32056c61646f74026e6c0000010001 +9dd28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35876 +3ff400000001000000000000036e733106776964657873026e6c0000010001 +3ff480000001000000030002036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +35877 +682a00000001000000000000077765626368617406787334616c6c026e6c0000010001 +682a80000001000000030002077765626368617406787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +35878 +49b000000001000000000000116c6963656e7365636f6e6e656374696f6e026e6c0000020001 +49b080000001000000020002116c6963656e7365636f6e6e656374696f6e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ec00c00020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +35879 +d85b0000000100000000000003777777076e6574706f6c6c026e6c0000010001 +d85b8000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +35880 +cbd1000000010000000000000762736d74702d3108636f6e6365707473026e6c0000ff0001 +cbd1800000010000000200020762736d74702d3108636f6e6365707473026e6c0000ff0001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c + +35881 +f1ad000000010000000000000977696e646f7773787006706167696e61026e6c0000010001 +f1ad800000010000000300030977696e646f7773787006706167696e61026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800006036e7333c016c031000100010001518000043e45a282c043000100010001518000043e45a283c055000100010001518000043e45a284 + +35882 +93c40000000100000000000006636861726973026e6c00000f0001 +93c48000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +35883 +07ff00000001000000000000026e73076e656473746174026e6c0000010001 +07ff80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35884 +282700000001000000000000026e73096c6162656c736f6674026e6c00001c0001 +282780000001000000020002026e73096c6162656c736f6674026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800008056e73736563c00fc00c00010001000151800004d4f13b06c03b00010001000151800004d4f13b07 + +35885 +052300000001000000000000026e73096c6162656c736f6674026e6c0000260001 +052380000001000000020002026e73096c6162656c736f6674026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800008056e73736563c00fc00c00010001000151800004d4f13b06c03b00010001000151800004d4f13b07 + +35886 +ecf400000001000000000000056e73736563096c6162656c736f6674026e6c00001c0001 +ecf480000001000000020002056e73736563096c6162656c736f6674026e6c00001c0001c01200020001000151800005026e73c012c01200020001000151800002c00cc03000010001000151800004d4f13b06c00c00010001000151800004d4f13b07 + +35887 +141400000001000000000000056e73736563096c6162656c736f6674026e6c0000260001 +141480000001000000020002056e73736563096c6162656c736f6674026e6c0000260001c01200020001000151800005026e73c012c01200020001000151800002c00cc03000010001000151800004d4f13b06c00c00010001000151800004d4f13b07 + +35888 +4eac0000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eac8403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +35889 +1e6d00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +1e6d80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +35890 +25d300100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +25d380000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +35891 +45c400000001000000000000026e73053266617374026e6c0000010001 +45c480000001000000030003026e73053266617374026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc0290001000100015180000450f7c022c03b000100010001518000043e858122c04d000100010001518000045117eb22 + +35892 +219600000001000000000000057664733534057469766473026e6c0000010001 +219684030001000000010000057664733534057469766473026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +35893 +d02e00000001000000000000046d61696c0b64656a6f6e67696e747261024e4c0000010001 +d02e80000001000000020002046d61696c0b64656a6f6e67696e747261024e4c0000010001c0110002000100015180000e036e733107626265796f6e64c01dc01100020001000151800006036e7332c035c031000100010001518000043eb1900bc04b000100010001518000043eb19002 + +35894 +22fa0000000100000000000008686f73746e616d650462696e640000100003 +22fa8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35895 +d1410000000100000000000003777777087370656c70756e74026e6c0000010001 +d1418000000100000002000203777777087370656c70756e74026e6c0000010001c0100002000100015180000b036e73310470696e65c019c01000020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +35896 +439600000001000000000000026e73076e656473746174026e6c0000010001 +439680000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +35897 +21cb00000001000000000000036e7333076e656473746174026e6c0000010001 +21cb80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +35898 +5cc50000000100000000000005646e732d31056c61646f74026e6c0000010001 +5cc58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35899 +ff2100000001000000000000026e730563616e6f6e026e6c0000010001 +ff2180000001000000020001026e730563616e6f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004c21ab811 + +35900 +253e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +253e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35901 +55280000000100000000000008686f73746e616d650462696e640000100003 +55288000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +35902 +e5d5000000010000000000000473616f7a026e6c00000f0001 +e5d5800000010000000200010473616f7a026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c011c03e00010001000151800004c2860043 + +35903 +05f900000001000000000000037777770967726174697367656b026e6c0000010001 +05f980000001000000020002037777770967726174697367656b026e6c0000010001c0100002000100015180000a036e733103716b73c01ac01000020001000151800006036e7332c032c02e000100010001518000045045481ec044000100010001518000043e835085 + +35904 +b9ab0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +b9ab8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35905 +e7350000000100000000000003626c3402626c06787334616c6c026e6c0000260001 +e7358000000100000003000203626c3402626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +35906 +9048000000010000000000000b6c69636874616476696573026e6c0000020001 +9048800000010000000200020b6c69636874616476696573026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +35907 +a78e000000010000000000000c6f7267616e69636561727468026e6c0000010001 +a78e800000010000000200000c6f7267616e69636561727468026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c030 + +35908 +f99900000001000000000000087665726c6f6f696a026e6c00000f0001 +f99980000001000000020000087665726c6f6f696a026e6c00000f0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02d + +35909 +37770000000100000000000003777777087665726f6e696361026e6c0000010001 +37778000000100000002000203777777087665726f6e696361026e6c0000010001c0100002000100015180000f036e7331086261736971776562c019c01000020001000151800006036e7332c031c02d0001000100015180000452c04516c0480001000100015180000452c04542 + +35910 +bc9a000000010000000000000674686573636f026e6c0000010001 +bc9a800000010000000200020674686573636f026e6c0000010001c00c00020001000151800011036e73310a696e746572706c617a61c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5f72f2dc04400010001000151800004d5c1d528 + +35911 +80730000000100000000000005646e732d32056c61646f74026e6c0000010001 +80738000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +35912 +b742be8f501044626cc60000000000000000 + + +35913 +b74cd39f50104470171a0000000000000000 + + +35914 +b74cd39f501844705a7f000000960285000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe18403c4f980003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 + + +35915 +232300000001000000000000037777770f7073692d7465737473657276696365026e6c0000010001 +232380000001000000030002037777770f7073692d7465737473657276696365026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +35916 +784200000001000000000000047a707072026e6c00000f0001 +784280000001000000020002047a707072026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +35917 +809000000001000000000000046d61696c0a7472616e736c6f676963026e6c0000010001 +809080000001000000020000046d61696c0a7472616e736c6f676963026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c036 + +35918 +358c000000010000000000000377777707676f65726f6573026e6c0000010001 +358c800000010000000300030377777707676f65726f6573026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c018c010000200010001518000070470726932c031c010000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +35919 +4f16000000010000000000000c6f7267616e69636561727468026e6c0000010001 +4f16800000010000000200000c6f7267616e69636561727468026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c030 + +35920 +bb97000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +bb97800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +35921 +0faf00000001000000000000026e730563616e6f6e026e6c00001c0001 +0faf80000001000000020001026e730563616e6f6e026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004c21ab811 + +35922 +56bf00000001000000000000026e730563616e6f6e026e6c0000260001 +56bf80000001000000020001026e730563616e6f6e026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004c21ab811 + +35923 +96d900000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +96d980000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +35924 +139d00000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000260001 +139d80000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +35925 +ca8500000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +ca8580000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35926 +038a00000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c0000260001 +038a80000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35927 +9f6b00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +9f6b80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35928 +461600000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000260001 +461680000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +35929 +6f1300000001000000000000066e617468616e08706f6c7977617265026e6c0000010001 +6f1380000001000000020002066e617468616e08706f6c7977617265026e6c0000010001c0130002000100015180000a036e733103696166c01cc01300020001000151800006036e7332c034c030000100010001518000045059e040c046000100010001518000045059ee03 + +35930 +aa4f000000010000000000000e6c69636874617263686974656374026e6c0000020001 +aa4f800000010000000200020e6c69636874617263686974656374026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01bc00c00020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +35931 +6e5200000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +6e5280000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +35932 +104000000001000000000000036e73320f6761726e69657270726f6a65637473026e6c00001c0001 +104080000001000000020002036e73320f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +35933 +ac8500000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000260001 +ac8580000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +35934 +b7a400000001000000000000026e730f6761726e69657270726f6a65637473026e6c00001c0001 +b7a480000001000000020002026e730f6761726e69657270726f6a65637473026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +35935 +fb1300000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000260001 +fb1380000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +35936 +399700000001000000000000036e73310f6761726e69657270726f6a65637473026e6c00001c0001 +399780000001000000020002036e73310f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +35937 +185700000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000260001 +185780000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +35938 +e92b000000010000000000000377777706637662616e6b026e6c0000010001 +e92b800000010000000200020377777706637662616e6b026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4ccd865c046000100010001518000045054ec34 + +35939 +c27f00000001000000000000036e733104696c7365026e6c0000010001 +c27f80000001000000030003036e733104696c7365026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +35940 +c47c00000001000000000000036e733304696c7365026e6c0000010001 +c47c80000001000000030003036e733304696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc029000100010001518000043e45a282c03b000100010001518000043e45a283c00c000100010001518000043e45a284 + +35941 +595100000001000000000000026e73036f6b65026e6c0000010001 +595180000001000000020002026e73036f6b65026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c13acc3bc03500010001000151800004c13acc27 + +35942 +404f00000001000000000000036e7332036f6b65026e6c0000010001 +404f80000001000000020002036e7332036f6b65026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004c13acc3bc00c00010001000151800004c13acc27 + +35943 +522c0000000100000000000009736d74702d6f75743606787334616c6c026e6c0000010001 +522c8000000100000003000209736d74702d6f75743606787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +35944 +2f48000000010000000000000377777712726f74746965727665726c69636874696e67026e6c0000010001 +2f48800000010000000200020377777712726f74746965727665726c69636874696e67026e6c0000010001c0100002000100015180000a036e7331036e7873c023c01000020001000151800006036e7332c03bc03700010001000151800004d973c015c04d00010001000151800004d973c102 + +35945 +d44800000001000000000000066e6562756c61056577697365026e6c0000010001 +d44880000001000000020002066e6562756c61056577697365026e6c0000010001c0130002000100015180000a036e7331036e7873c019c01300020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +35946 +ed8300000001000000000000036e73310b6963742d636f6e63657074026e6c0000010001 +ed8380000001000000020002036e73310b6963742d636f6e63657074026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c26d9983c03e00010001000151800004d5544f5d + +35947 +2a78000000010000000000000972696473777572747a026e6c0000010001 +2a78840300010000000100000972696473777572747a026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +35948 +b69e000000010000000000000162026d780461786973026e6c0000010001 +b69e800000010000000200020162026d780461786973026e6c0000010001c011000200010001518000070161026e73c011c011000200010001518000040162c02cc02a00010001000151800004d97261d9c03d0001000100015180000450558124 + +35949 +7e2f00000001000000000000037777770f747067706f7374627573696e657373026e6c0000010001 +7e2f80000001000000020002037777770f747067706f7374627573696e657373026e6c0000010001c0100002000100015180000e036e733207737570706f7274c020c01000020001000151800006036e7334c038c03400010001000151800004c372e7c8c04e00010001000151800004c372e6fe + +35950 +cb60000000010000000000000972696473777572747a026e6c0972696473777572747a026e6c0000010001 +cb60840300010000000100000972696473777572747a026e6c0972696473777572747a026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +35951 +425a00000001000000000000046d61696c09657863657074696f6e026e6c0000010001 +425a80000001000000030003046d61696c09657863657074696f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02f00010001000151800004d5c9a38cc04100010001000151800004d5c9a38dc05300010001000151800004d5c9af03 + +35952 +59e50000000100000000000003777777066f646976616c026e6c0000010001 +59e58000000100000002000203777777066f646976616c026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c017c01000020001000151800006036e7332c02fc02b000100010001518000045054ed14c04800010001000151800004d5f72f14 + +35953 +736c0000000100000000000003636b61026e6c0000010001 +736c8000000100000002000203636b61026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +35954 +7b7900000001000000000000037777770e74696e65737461616c67726f6570026e6c0000010001 +7b7984030001000000010000037777770e74696e65737461616c67726f6570026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +35955 +b90d00000001000000000000066265696a6572026e6c00000f0001 +b90d80000001000000020000066265696a6572026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +35956 +b816000000010000000000001167726161667363686170636f6c6c656765026e6c0000ff0001 +b816800000010000000200021167726161667363686170636f6c6c656765026e6c0000ff0001c00c0002000100015180000d036e7331066e6c74726565c01ec00c00020001000151800006036e7332c036c03200010001000151800004d4b20403c04b00010001000151800004d5881e45 + +35957 +d57a00000001000000000000074d41494c30313107554e494d414153024e4c0000010001 +d57a80000001000000030003074d41494c30313107554e494d414153024e4c0000010001c0140002000100015180000906726c30303031c014c0140002000100015180000906696361737332c014c0140002000100015180000e036e733107737572666e6574c01cc0300001000100015180000489780101c0450001000100015180000489780105c05a00010001000151800004c0576a65 + +35958 +c1dc00000001000000000001076863636669646f03686363026e6c00000f00010000291000000000000000 +c1dc80000001000000020001076863636669646f03686363026e6c00000f0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c0320000291000000000000000 + +35959 +ea790000000100000000000011616d7374656c7665656e636f6c6c656765026e6c00000f0001 +ea798000000100000003000111616d7374656c7665656e636f6c6c656765026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01ec00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c050c032000100010001518000043efa0202 + +35960 +10a8000000010000000000000377777708636f6e6e65787973026e6c0000010001 +10a8800000010000000300030377777708636f6e6e65787973026e6c0000010001c0100002000100015180000f046e732d310774657075636f6dc019c01000020001000151800007046e732d32c032c01000020001000151800007046e732d33c032c02d000100010001518000043e320d4cc04800010001000151800004c356164ac05b00010001000151800004c3510c03 + +35961 +bcfd000000010000000000000377777707746576656c6465026e6c0000010001 +bcfd800000010000000200000377777707746576656c6465026e6c0000010001c01000020001000151800011036e73310a77656273797374656d73c018c01000020001000151800006036e7332c030 + +35962 +719000100001000000000001034e533107535552464e4554024e4c00000100010000290800000080000000 +719080000001000000040004034e533107535552464e4554024e4c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +35963 +b8c8001000010000000000010649434153533207554e494d414153024e4c00000100010000290800000080000000 +b8c8800000010000000300040649434153533207554e494d414153024e4c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a650000291000000000000000 + +35964 +10ff00000001000000000000037777770a62696b656d6f74696f6e026e6c0000010001 +10ff80000001000000030000037777770a62696b656d6f74696f6e026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c033c01000020001000151800006036e7333c033 + +35965 +dc640010000100000000000106524c3030303107554e494d414153024e4c00000100010000290800000080000000 +dc648000000100000003000406524c3030303107554e494d414153024e4c0000010001c01300020001000151800002c00cc0130002000100015180000906696361737332c013c0130002000100015180000e036e733107737572666e6574c01bc00c0001000100015180000489780101c03d0001000100015180000489780105c05200010001000151800004c0576a650000291000000000000000 + +35966 +b7760010000100000000000108554d44433030303307554e494d414153024e4c00000100010000290800000080000000 +b7768000000100000003000408554d44433030303307554e494d414153024e4c0000010001c0150002000100015180000906726c30303031c015c0150002000100015180000906696361737332c015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000489780101c0460001000100015180000489780105c05b00010001000151800004c0576a650000291000000000000000 + +35967 +6e0900000001000000000000056372696f31047372767a026e6c0000010001 +6e0980000001000000020002056372696f31047372767a026e6c0000010001c0120002000100015180000f036e733108736572766963657ac017c01200020001000151800006036e7332c02fc02b0001000100015180000450f7cb0ac0460001000100015180000450f7d401 + +35968 +bef000000001000000000000056372696f32047372767a026e6c0000010001 +bef080000001000000020002056372696f32047372767a026e6c0000010001c0120002000100015180000f036e733108736572766963657ac017c01200020001000151800006036e7332c02fc02b0001000100015180000450f7cb0ac0460001000100015180000450f7d401 + +35969 +233b00000001000000000000036e73340767617574656e67026e6c0000010001 +233b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35970 +16a20000000100000000000005776562313108696e74726f776562026e6c0000010001 +16a28000000100000002000205776562313108696e74726f776562026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02f0001000100015180000450416028c04100010001000151800004c356780c + +35971 +6dea00000001000000000000166c6963687463656e7472756d2d6b6465727569746572026e6c0000020001 +6dea80000001000000020002166c6963687463656e7472756d2d6b6465727569746572026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec023c00c00020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +35972 +c1dc00000001000000000000076863636669646f03686363026e6c00000f0001 +c1dc80000001000000020000076863636669646f03686363026e6c00000f0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c032 + +35973 +8d4e00000001000000000000046f61736503756369036b756e026e6c0000010001 +8d4e80000001000000030003046f61736503756369036b756e026e6c0000010001c0150002000100015180000b086361707962617261c011c0150002000100015180000a036e733103736369c015c0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483ae3c15c0440001000100015180000483aee004c05a00010001000151800004c0576a65 + +35974 +51dc00000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637308686f6c737276303206646578776164026e6c0000210001 +51dc84030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637308686f6c737276303206646578776164026e6c0000210001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +35975 +42e728000001000100020000026e6c0000060001037063380e776567686f7273742d6f6c696b6f026e6c00000500fe000000000000c014000100ff000000000000c01400010001000003840004c0a8002d +42e7a8040000000000000000 + +35976 +1e6e0000000100000000000003777777076e656473746174026e6c0000010001 +1e6e8000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +35977 +1c7300000001000000000000036e7331057661786f6e026e6c00001c0001 +1c7380000001000000020002036e7331057661786f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e291af0c038000100010001518000043e291af1 + +35978 +ef0100000001000000000000036e7331057661786f6e026e6c0000260001 +ef0180000001000000020002036e7331057661786f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e291af0c038000100010001518000043e291af1 + +35979 +a6a600000001000000000000036e7332057661786f6e026e6c00001c0001 +a6a680000001000000020002036e7332057661786f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043e291af0c00c000100010001518000043e291af1 + +35980 +128d00000001000000000000036e7332057661786f6e026e6c0000260001 +128d80000001000000020002036e7332057661786f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043e291af0c00c000100010001518000043e291af1 + +35981 +ebeb00000001000000000000107a6f656b7a6f656b7a616b656c696a6b026e6c00000f0001 +ebeb84030001000000010000107a6f656b7a6f656b7a616b656c696a6b026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +35982 +6a100000000100000000000003777777067a7376737372026e6c0000010001 +6a108403000100000001000003777777067a7376737372026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +35983 +ab950000000100000000000003676363026e6c00000f0001 +ab958000000100000002000203676363026e6c00000f0001c00c0002000100015180000e036e733107772d652d722d6bc010c00c00020001000151800006036e7332c028c024000100010001518000045054ebd3c03e000100010001518000045054ebdc + +35984 +21c600000001000000000000026e73057972616d73026e6c0000010001 +21c680000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +35985 +09c30000000100000000000003777777086d756c7469766973026e6c0000010001 +09c38000000100000002000203777777086d756c7469766973026e6c0000010001c0100002000100015180000e026e730869742d776f726b73c019c01000020001000151800014026e730e667279736c616e2d6f6e6c696e65c019c02d00010001000151800004515b0288c04700010001000151800004515b020d + +35986 +334800000001000000000000036e73330767617574656e67026e6c0000010001 +334880000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +35987 +0866000000010000000000000a686f6c30316578646e730369636c026e6c0000010001 +0866800000010000000200010a686f6c30316578646e730369636c026e6c0000010001c01700020001000151800002c00cc0170002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14f9064 + +35988 +3bac00000001000000000000037777771067726579686f756e6473726573637565026e6c0000010001 +3bac80000001000000020000037777771067726579686f756e6473726573637565026e6c0000010001c0100002000100015180000c026e7306766576696461c021c01000020001000151800006036e7332c038 + +35989 +00000000700240009a450000020405b401010402 +000080010000000000000000 + +35990 +497b00000001000000000000037777770b73686f7063656e7472756d026e6c0000010001 +497b80000001000000020001037777770b73686f7063656e7472756d026e6c0000010001c01000020001000151800010026e730a62686d732d67726f6570c01cc0100002000100015180000c036e7331057669727475c01cc04c00010001000151800004d9726102 + +35991 +a75a00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +a75a80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +35992 +d41c000000010000000000000f564953494f4e454e47494e45455253024e4c00000f0001 +d41c800000010000000200010f564953494f4e454e47494e45455253024e4c00000f0001c00c0002000100015180000a036e733303777873c01cc00c00020001000151800006036e7334c034c04600010001000151800004d5ef9a65 + +35993 +323f000000010000000000000377777706626f656b6965026e6c0000010001 +323f800000010000000200000377777706626f656b6965026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +35994 +b74eb5d65010447055640000000000000000 + + +35995 +f0fa000000010000000000000377777704707a7a6c026e6c0000010001 +f0fa800000010000000200020377777704707a7a6c026e6c0000010001c01000020001000151800009036e7331026973c015c01000020001000151800006036e7332c02dc02900010001000151800004d5852102c03e00010001000151800004d5c41503 + +35996 +b74eb5d650184470e49e000000958e00000000010001000000000f343236303630373535373635302d330000f900010f343236303630373535373635302d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd07403c4e870003000000364e544c4d535350000100000097b200e00e000e002800000008000800200000004e54534552564552574547484f5253542d4f4c494b4f0000 + + +35997 +d6af00000001000000000000036367690465626179026e6c0000010001 +d6af80000001000000020000036367690465626179026e6c0000010001c010000200010001518000140963726f636f64696c65046562617903636f6d00c0100002000100015180000b087061636966696572c038 + +35998 +034400000001000000000000037777770774697363616c69026e6c0000010001 +034480000001000000030002037777770774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f13325 + +35999 +a3570000000100000000000007746f7368696261026e6c00000f0001 +a3578000000100000002000107746f7368696261026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02800010001000151800004c1ad6a42 + +36000 +f64a00000001000000000000037777770563686f776e026e6c0000010001 +f64a80000001000000020000037777770563686f776e026e6c0000010001c0100002000100015180000f067768646e7331056577656b61c016c01000020001000151800009067768646e7332c031 + +36001 +b74eb5e45011446254cc0000000000000000 + + +36002 +487200000001000000000000046d72746709756e69736572766572026e6c0000010001 +487280000001000000020002046d72746709756e69736572766572026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02f00010001000151800004c3454b03c04100010001000151800004d119a2fa + +36003 +000000007002400048fc0000020405b401010402 +000080010000000000000000 + +36004 +f8750000000100000000000005646e732d32056c61646f74026e6c0000010001 +f8758000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36005 +80780000000100000000000005646e732d32056c61646f74026e6c0000010001 +80788000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36006 +2f4128000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730a544f5047524f57455253026e6c0000210001000002580023000000640cc40d706463746f7067726f776572730a544f5047524f57455253026e6c00 +2f41a8040000000000000000 + +36007 +252100000001000000000000037777770a6d657373646174696e67026e6c0000010001 +252180000001000000020000037777770a6d657373646174696e67026e6c0000010001c01000020001000151800010036e733109636f6d7075686f7374c01bc01000020001000151800006036e7332c033 + +36008 +b74eb5e55010446254cb0000000000000000 + + +36009 +b7513e29501044707bc50000000000000000 +b751be240000000000000000 + +36010 +6c7a00000001000000000000046d61696c0a686167656e706f6f7274026e6c0000010001 +6c7a80000001000000020000046d61696c0a686167656e706f6f7274026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c033 + +36011 +679f00000001000000000000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000060001 +679f84030001000000010000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000060001c03a00060001000038400036026e730f646f6d61696e2d7265676973747279c03a0a686f73746d6173746572c0510bf1e540000070800000384000278d0000003840 + +36012 +2492000000010000000000000674686573636f026e6c0000ff0001 +2492800000010000000200020674686573636f026e6c0000ff0001c00c00020001000151800011036e73310a696e746572706c617a61c013c00c00020001000151800006036e7332c02bc02700010001000151800004d5f72f2dc04400010001000151800004d5c1d528 + +36013 +a09e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a09e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36014 +b7513e29501844706001000000953a00000000010001000000000f343236303630373535373635302d320000f900010f343236303630373535373635302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd07403c4e870003000000364e544c4d535350000100000097b200e00e000e002800000008000800200000004e54534552564552574547484f5253542d4f4c494b4f0000 +b751be240000000000000000 + +36015 +b74cd3ad5011446216810000000000000000 + + +36016 +00000000700240002efe0000020405b401010402 +000080010000000000000000 + +36017 +3c2a000000010000000000000973657276657270726f08617567757374796e026e6c0000010001 +3c2a840300010000000100000973657276657270726f08617567757374796e026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +36018 +0000000070024000278d0000020405b401010402 +000080010000000000000000 + +36019 +76510000000100000000000003777777036c6f6c026e6c0000010001 +76518000000100000002000203777777036c6f6c026e6c0000010001c0100002000100015180000b036e73310477656233c014c01000020001000151800006036e7332c02cc02800010001000151800004d436240ec03f00010001000151800004c2b262ef + +36020 +b7513e37501144627b2d0000000000000000 +b751be340000000000000000 + +36021 +0ebc00100001000000000001036e7332056132303030026e6c00000100010000290800000000000000 +0ebc80000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +36022 +b75201fb501044709df40000000000000000 +b75280010000000000000000 + +36023 +0000000070024000b08d0000020405b401010402 +000080010000000000000000 + +36024 +83e200100001000000000001036e7332056132303030026e6c00002600010000290800000000000000 +83e280000001000000030003036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +36025 +b75201fb50184470261b000000966bb0000000010001000000000f313233363935303538313236362d330000f900010f313233363935303538313236362d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd07403c4e870003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 +b75280010000000000000000 + +36026 +98eb00000001000000000000086963736361726473026e6c0000ff0001 +98eb80000001000000020000086963736361726473026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +36027 +49ed000000010000000000000649434153533207554e494d414153024e4c0000010001 +49ed800000010000000300030649434153533207554e494d414153024e4c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a65 + +36028 +584b00000001000000000000034e533107535552464e4554024e4c0000010001 +584b80000001000000040003034e533107535552464e4554024e4c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +36029 +cb5b0000000100000000000006524c3030303107554e494d414153024e4c0000010001 +cb5b8000000100000003000306524c3030303107554e494d414153024e4c0000010001c01300020001000151800002c00cc0130002000100015180000906696361737332c013c0130002000100015180000e036e733107737572666e6574c01bc00c0001000100015180000489780101c03d0001000100015180000489780105c05200010001000151800004c0576a65 + +36030 +09660000000100000000000008554d44433030303307554e494d414153024e4c0000010001 +09668000000100000003000308554d44433030303307554e494d414153024e4c0000010001c0150002000100015180000906726c30303031c015c0150002000100015180000906696361737332c015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000489780101c0460001000100015180000489780105c05b00010001000151800004c0576a65 + +36031 +ed3b000000010000000000000377777709696e70726f6a656374026e6c0000010001 +ed3b800000010000000200000377777709696e70726f6a656374026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +36032 +6b1600000001000000000000037777770567616d657a026e6c0000010001 +6b1680000001000000030003037777770567616d657a026e6c0000010001c0100002000100015180000a036e733103696467c016c01000020001000151800006036e7332c02ec01000020001000151800006036e7333c02ec02a0001000100015180000451af4646c0400001000100015180000451af4647c05200010001000151800004d5a0fde6 + +36033 +b7513e38501044627b2c0000000000000000 +b751be340000000000000000 + +36034 +b75342ad50104470ded00000000000000000 +b753c2a40000000000000000 + +36035 +8e9c00000001000000000000037777770970726f626565726e75026e6c0000010001 +8e9c80000001000000020000037777770970726f626565726e75026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +36036 +b7520209501144629d5b0000000000000000 +b75280010000000000000000 + +36037 +b75342ad501844700d0c00000095f000000000010001000000000f343236303630373535373635302d320000f900010f343236303630373535373635302d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd07403c4e870003000000364e544c4d535350000100000097b200e00e000e002800000008000800200000004e54534552564552574547484f5253542d4f4c494b4f0000 +b753c2a40000000000000000 + +36038 +aa5a28000001000000010000026e6c0000060001035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730772756279646563026e6c0000210001000002580019000000640cc4067365727665720772756279646563026e6c00 +aa5aa8040000000000000000 + +36039 +000000007002400087df0000020405b401010402 +000080010000000000000000 + +36040 +b752020a501044629d5a0000000000000000 +b75280010000000000000000 + +36041 +b75342bb50114462de380000000000000000 +b753c2b40000000000000000 + +36042 +0000000070024000d3c000000204056401010402 +000080010000000000000000 + +36043 +21cb00000001000000000000026e73057972616d73026e6c0000010001 +21cb80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +36044 +33a90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +33a98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36045 +b754104050104470e88e0000000000000000 +b75490440000000000000000 + +36046 +b754104050184470e8b900000096f4ac000000010001000000000f313233363935303538313236362d320000f900010f313233363935303538313236362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd07403c4e870003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 +b75490440000000000000000 + +36047 +18ec000000010000000000000864656c667a696a6c026e6c00001c0001 +18ec800000010000000200020864656c667a696a6c026e6c00001c0001c00c0002000100015180000e026e73086d656761706c6578c015c00c00020001000151800006036e7331c02cc02900010001000151800004504f6101c04300010001000151800004504f6102 + +36048 +466f000000010000000000000f646576726965736b6f7a696a6e656e026e6c00000f0001 +466f800000010000000200000f646576726965736b6f7a696a6e656e026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c034 + +36049 +b75342bc50104462de370000000000000000 +b753c2b40000000000000000 + +36050 +93a100000001000000000000057072697a65026e6c00000f0001 +93a180000001000000020000057072697a65026e6c00000f0001c00c0002000100015180001404646e733106706f7074656c036f726702756b00c00c0002000100015180000704646e7332c02b + +36051 +b7549d5b501040b0aac40000000000000000 + + +36052 +b754104e50114462e7f50000000000000000 +b75490440000000000000000 + +36053 +0cb9000000010000000000000670696b616e74026e6c00001c0001 +0cb9800000010000000200020670696b616e74026e6c00001c0001c00c0002000100015180000c04646e73310470696e73c013c00c0002000100015180000704646e7332c02cc02700010001000151800004d9c26101c03f00010001000151800004d9c26002 + +36054 +5f8d00000001000000000000074c4f43485437370544454d4f4e024e4c00000f0001 +5f8d80000001000000030002074c4f43485437370544454d4f4e024e4c00000f0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +36055 +b7549d5b501840b095820000008c16ee000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afaea403c4c6a00030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 + + +36056 +00000000700240005e4c0000020405b401010402 +000080010000000000000000 + +36057 +9a920000000100000000000003777777087465636f74726f6e026e6c0000010001 +9a928000000100000003000303777777087465636f74726f6e026e6c0000010001c0100002000100015180000e046865726101780463756369c019c0100002000100015180000c066865726d6573026e6cc034c01000020001000151800009066865726d6573c032c02d00010001000151800004d47d8001c04700010001000151800004c143ef02c05f00010001000151800004d47d8002 + +36058 +b93c0000000100000000000003777777086f76657268656964026e6c0000010001 +b93c8000000100000003000303777777086f76657268656964026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +36059 +bbbb000000010000000000000b73656c662d696e6a757279026e6c0000010001 +bbbb800000010000000300000b73656c662d696e6a757279026e6c0000010001c00c00020001000151800017076e73686f73743103737432056c79636575036e657400c00c0002000100015180000a076e73686f737432c034c00c0002000100015180000a076e73686f737433c034 + +36060 +b7549d69501140a2aa350000000000000000 + + +36061 +b754104f50104462e7f40000000000000000 +b75490440000000000000000 + +36062 +b755265350104470a8e70000000000000000 +b755a6530000000000000000 + +36063 +000000007002400038b600000204056401010402 +000080010000000000000000 + +36064 +b7552653501844702017000000967da8000000010001000000000f313233363935303538313236362d320000f900010f313233363935303538313236362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd07403c4e870003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 +b755a6530000000000000000 + +36065 +1c9a0000000100000000000009652d6c756e61746963026e6c0000010001 +1c9a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36066 +352400000001000000000000027463036164730974656c656772616166026e6c0000010001 +352480000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +36067 +676c000000010000000000000e7365727665722d6e61617264656e0c76657273616e61617264656e026e6c0000060001 +676c840300010000000100000e7365727665722d6e61617264656e0c76657273616e61617264656e026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +36068 +46ad00000001000000000000046d61696c0b6466647373656177617973026e6c0000010001 +46ad80000001000000020000046d61696c0b6466647373656177617973026e6c0000010001c0110002000100015180001707617574686e73310a776562706172746e657202646b00c0110002000100015180000a07617574686e7332c039 + +36069 +89810000000100000000000003686873026e6c0000010001 +89818000000100000003000303686873026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000e036e733107737572666e6574c010c0240001000100015180000491340205c0360001000100015180000491340206c04800010001000151800004c0576a65 + +36070 +b36f00000001000000000000036e73330761737034616c6c026e6c00001c0001 +b36f80000001000000030003036e73330761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +36071 +311200000001000000000000036e73330761737034616c6c026e6c0000260001 +311280000001000000030003036e73330761737034616c6c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc00c00010001000151800004c1ac0bae + +36072 +747900000001000000000000036e73310761737034616c6c026e6c00001c0001 +747980000001000000030003036e73310761737034616c6c026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +36073 +085400000001000000000000036e73310761737034616c6c026e6c0000260001 +085480000001000000030003036e73310761737034616c6c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c1adf9c3c03a000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +36074 +434b00000001000000000000036e73320761737034616c6c026e6c00001c0001 +434b80000001000000030003036e73320761737034616c6c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c00c000100010001518000043e70ec3cc04c00010001000151800004c1ac0bae + +36075 +b7549d6a501040a2aa340000000000000000 + + +36076 +1c3500000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +1c3580000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +36077 +e1fe00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +e1fe80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +36078 +3e4d00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +3e4d80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +36079 +e70f00000001000000000000036e7332056132303030026e6c0000010001 +e70f80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +36080 +b75604ad501040b0a8660000000000000000 +b75680010000000000000000 + +36081 +066600000001000000000000036e7332056132303030026e6c0000260001 +066680000001000000030002036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +36082 +b75604ad501840b03fd70000008c6b3c000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afaea403c4c6a00030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 +b75680010000000000000000 + +36083 +b755266150114462a84e0000000000000000 +b755a6630000000000000000 + +36084 +c0020000000100000000000003706f70076569646f6c6f6e026e6c0000010001 +c0028000000100000002000203706f70076569646f6c6f6e026e6c0000010001c01000020001000151800009036e7331026973c018c01000020001000151800006036e7332c030c02c00010001000151800004d5852102c04100010001000151800004d5c41503 + +36085 +c6b60000000100000000000009706172616469676974026e6c00000f0001 +c6b68000000100000002000009706172616469676974026e6c00000f0001c00c00020001000151800010026e73076e65737363697303636f6d00c00c00020001000151800006036e7332c02d + +36086 +1eda000000010000000000000e7372617464303031646d7a666e3103726463026e6c0000010001 +1eda800000010000000200020e7372617464303031646d7a666e3103726463026e6c0000010001c01b000200010001518000100d7372726463303134646d7a3034c01bc01b000200010001518000100d7372726463303132646d7a3033c01bc03300010001000151800004d973e064c04f00010001000151800004d973e054 + +36087 +5c9d00000001000000000000066a77626f6f6e026e6c00000f0001 +5c9d80000001000000030002066a77626f6f6e026e6c00000f0001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +36088 +b755266250104462a84d0000000000000000 +b755a6630000000000000000 + +36089 +39bc000000010000000000000377777709736578687569736a65026e6c0000010001 +39bc800000010000000300000377777709736578687569736a65026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +36090 +492300000001000000000000037777770864652d706172656c026e6c0000010001 +492380000001000000020000037777770864652d706172656c026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +36091 +b75604bb501140a2a7d70000000000000000 +b75680010000000000000000 + +36092 +00000000700240003d8b00000204056401010402 +000080010000000000000000 + +36093 +35250000000100000000000004777777320974656c656772616166026e6c0000010001 +35258000000100000002000004777777320974656c656772616166026e6c0000010001c01100020001000151800013036e73300974656c656772616166036e657400c01100020001000151800006036e7331c033 + +36094 +1b5600000001000000000000036e73340767617574656e67026e6c0000010001 +1b5680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36095 +50ff000000010000000000000377777707636f6e74656e74026e6c0000010001 +50ff800000010000000200000377777707636f6e74656e74026e6c0000010001c01000020001000151800016046e7330310b63726579667367726f757003636f6d00c01000020001000151800007046e733032c031 + +36096 +3f2b0000000100000000000005656d61696c036c656b026e6c0000010001 +3f2b8000000100000002000005656d61696c036c656b026e6c0000010001c01200020001000151800014036e73310a676c617373686f757365036e657400c01200020001000151800006036e7332c02e + +36097 +b75604bc501040a2a7d60000000000000000 +b75680010000000000000000 + +36098 +67cc00000001000000000000066b6c6f6d7073026e6c0000010001 +67cc80000001000000020002066b6c6f6d7073026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36099 +b756ec01501040b0c5e60000000000000000 + + +36100 +a8d9000000010000000000000a6c69636874696e673938026e6c0000020001 +a8d9800000010000000200020a6c69636874696e673938026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +36101 +1cd000000001000000000000036e733208696e74726f776562024e4c0000010001 +1cd080000001000000020002036e733208696e74726f776562024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +36102 +b756ec01501840b069190000008c5f7a000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afaea403c4c6a00030000002d4e544c4d535350000100000097b200c007000700260000000600060020000000534552564552525542594445430000 + + +36103 +05dd00100001000000000001036e733109756e69736f75726365026e6c00000100010000290800000000000000 +05dd80000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +36104 +e09c00000001000000000000037777770474757361026e6c0000010001 +e09c80000001000000020002037777770474757361026e6c0000010001c0100002000100015180000e07646e732d70726903626f78c015c0100002000100015180000a07646e732d736563c031c02900010001000151800004d97700fac04300010001000151800004d97704fa + +36105 +481500000001000000000000087265697374697073026e6c00000f0001 +481580000001000000020002087265697374697073026e6c00000f0001c00c0002000100015180000c036e7331056773696e74c015c00c00020001000151800006036e7332c02dc02900010001000151800004510473b4c04100010001000151800004510473b5 + +36106 +917000000001000000000000055f6c646170045f7463701244656661756c742d46697273742d53697465065f73697465730668656465666106686564656661026e6c0000060001 +917084030001000000010000055f6c646170045f7463701244656661756c742d46697273742d53697465065f73697465730668656465666106686564656661026e6c0000060001c03f00060001000038400036026e730f646f6d61696e2d7265676973747279c03f0a686f73746d6173746572c0560bf1e540000070800000384000278d0000003840 + +36107 +3d3e0000000100000000000009652d6c756e61746963026e6c0000010001 +3d3e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36108 +26a30000000100000000000003777777177665726865696a656e62656472696a6673776167656e73026e6c0000010001 +26a38000000100000002000003777777177665726865696a656e62656472696a6673776167656e73026e6c0000010001c01000020001000151800013056175746f310a747265666e6574646e73c028c01000020001000151800006036e7331c042 + +36109 +0efd000000010000000000000a7377697463686a6f6273026e6c00000f0001 +0efd800000010000000200020a7377697463686a6f6273026e6c00000f0001c00c00020001000151800009036e7331026973c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d5852102c04000010001000151800004d5c41503 + +36110 +3f6100000001000000000000044e545331063139594f3030024e4c0000060001 +3f6184030001000000010000044e545331063139594f3030024e4c0000060001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +36111 +5ede000000010000000000000377777710647265616d626f7873657474696e6773026e6c0000010001 +5ede800000010000000200020377777710647265616d626f7873657474696e6773026e6c0000010001c0100002000100015180000c036e733105622d632d73c021c01000020001000151800006036e7332c039c03500010001000151800004d5ce4bbfc04d00010001000151800004507e8372 + +36112 +2b900000000100000000000008686f73746e616d650462696e640000100003 +2b908000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +36113 +843f0000000100000000000003777777056a61676572026e6c0000010001 +843f8000000100000002000203777777056a61676572026e6c0000010001c0100002000100015180000c046e7330310462696374c016c01000020001000151800007046e733032c02fc02a00010001000151800004d413d6c8c04200010001000151800004d413d604 + +36114 +087200000001000000000000026e730763697374726f6e026e6c0000010001 +087280000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +36115 +820600000001000000000000036e73320763697374726f6e026e6c0000010001 +820680000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +36116 +b756ec0f501140a2c5570000000000000000 + + +36117 +584c0000000100000000000004777777310a62616e6e6572746a6573026e6c0000010001 +584c8000000100000002000004777777310a62616e6e6572746a6573026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c033 + +36118 +ee6c00000001000000000000037777770b6f6e646572746974656c73026e6c0000010001 +ee6c80000001000000020000037777770b6f6e646572746974656c73026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +36119 +4e5128000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f73697465730668656465666106686564656661026e6c000021000100000258001f000000640185066d617263656c0668656465666106686564656661026e6c00 +4e51a8040000000000000000 + +36120 +9fad00000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +9fad80000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +36121 +657200000001000000000000077072757661746f026e6c00000f0001 +657280000001000000020002077072757661746f026e6c00000f0001c00c0002000100015180000d04646e733205692d702d64c014c00c0002000100015180000704646e7331c02dc02800010001000151800004d9124104c04100010001000151800004d9124003 + +36122 +21d300000001000000000000026e73057972616d73026e6c0000010001 +21d380000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +36123 +47110000000100000000000004706f726e026e6c0000010001 +47118000000100000002000004706f726e026e6c0000010001c00c00020001000151800010036e73610674696e74656c03636f6d00c00c00020001000151800006036e7362c029 + +36124 +91a100000001000000000000036e7331056861636f6d026e6c0000010001 +91a180000001000000020002036e7331056861636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4f12209c03800010001000151800004d590f009 + +36125 +91a200000001000000000000036e7332056861636f6d026e6c0000010001 +91a280000001000000020002036e7332056861636f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d4f12209c00c00010001000151800004d590f009 + +36126 +542a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +542a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36127 +3fc00000000100000000000106776468303131066e7434616c6c026e6c00000100010000290500000000000000 +3fc08000000100000002000306776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d09630000291000000000000000 + +36128 +b756ec10501040a2c5560000000000000000 + + +36129 +641e00100001000000000001086d6972726f72656407666c6162626572026e6c00000100010000290800000080000000 +641e80000001000000030003086d6972726f72656407666c6162626572026e6c0000010001c0150002000100015180000d036e733106776964657873c01dc01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa07030000291000000000000000 + +36130 +567800000001000000000000036e747006787334616c6c026e6c0000010001 +567880000001000000030002036e747006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +36131 +ef6c000000010000000000000776657268616172026e6c00000f0001 +ef6c800000010000000200020776657268616172026e6c00000f0001c00c00020001000151800010036e7331096d6173746572646e73c014c00c00020001000151800006036e7332c02cc028000100010001518000045054f347c044000100010001518000043e94a047 + +36132 +00000000700240005c4d00000204059801010402 +000080010000000000000000 + +36133 +3fc00000000100000000000006776468303131066e7434616c6c026e6c0000010001 +3fc08000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +36134 +d5030000000100000000000006636861726973026e6c00000f0001 +d5038000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +36135 +9eaf00000001000000000000026e73057972616d73026e6c0000010001 +9eaf80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +36136 +b757c385501043200ae80000000000000000 + + +36137 +4330000000010000000000000377777707616b7269646573026e6c0000010001 +4330800000010000000200020377777707616b7269646573026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c018c01000020001000151800006036e7332c02fc02c0001000100015180000450474002c04a0001000100015180000450474102 + +36138 +b757c3855018432080320000008b0bc0000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb43403c4cc300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36139 +4eae0000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eae8403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +36140 +152a00000001000000000000036d78310a646168686f7374696e67026e6c0000010001 +152a80000001000000020002036d78310a646168686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f000100010001518000045104430bc0410001000100015180000451044316 + +36141 +7b39000000010000000000000366726703657572026e6c0000010001 +7b39800000010000000200020366726703657572026e6c0000010001c0100002000100015180000b086d61696c67617465c010c0100002000100015180000906706f70657965c010c0280001000100015180000482730101c03f0001000100015180000482730f02 + +36142 +586c00000001000000000000037777770661746b696e73026e6c0000010001 +586c80000001000000020002037777770661746b696e73026e6c0000010001c01000020001000151800011036e73310a61637469766576696577c017c01000020001000151800006036e7333c02fc02b00010001000151800004c2b2a022c04800010001000151800004d554e5c2 + +36143 +87f70000000100000000000009696e686f6c6c616e64026e6c00000f0001 +87f78000000100000002000209696e686f6c6c616e64026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +36144 +2174000000010000000000000377777704756e6978026e6c0000010001 +2174800000010000000200020377777704756e6978026e6c0000010001c0100002000100015180000b026e7305686f626279c015c01000020001000151800006036e7332c02cc02900010001000151800004d448e008c04000010001000151800004d448e009 + +36145 +bb9500000001000000000000036d78300774697363616c69026e6c0000010001 +bb9580000001000000030002036d78300774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f13325 + +36146 +b757c393501143120a5a0000000000000000 + + +36147 +0000000070024000908b00000204059801010402 +000080010000000000000000 + +36148 +8c610000000100000000000003777777066c6578696f6e026e6c0000010001 +8c618000000100000003000103777777066c6578696f6e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +36149 +937e0000000100000000000006616e616e6b6503687361026e6c0000010001 +937e8000000100000002000206616e616e6b6503687361026e6c0000010001c01300020001000151800008056d65746973c013c0130002000100015180000e036e733107737572666e6574c017c02b00010001000151800004c2ab1311c03f00010001000151800004c0576a65 + +36150 +3c0600000001000000000000036e7331066e6c74726565026e6c0000010001 +3c0680000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +36151 +b757c394501043120a590000000000000000 + + +36152 +b75a5de550104320a4c30000000000000000 +b75adde40000000000000000 + +36153 +3e3e0000000100000000000003777777076172746875726f026e6c0000010001 +3e3e8000000100000002000203777777076172746875726f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +36154 +b75a5de550184320cace0000008b5c00000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb43403c4cc300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 +b75adde40000000000000000 + +36155 +90730000000100000000000003777777056a65656e65026e6c0000010001 +90738000000100000002000003777777056a65656e65026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c016c0100002000100015180000704686e7331c02f + +36156 +b74cd3ae5010446216800000000000000000 + + +36157 +b7529bd750104470fca60000000000000000 + + +36158 +136000000001000000000000066275696b6573026e6c00000f0001 +136080000001000000020000066275696b6573026e6c00000f0001c00c00020001000151800014026e730b6578706c61696e65726463036e657400c00c0002000100015180000d026e73056132303030026e7500 + +36159 +dd1400000001000000000000036e733109756e69736f75726365026e6c0000010001 +dd1480000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +36160 +b7529bd750184470c07c000000968014000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe19403c4f990003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 + + +36161 +b75a5df350114312a4350000000000000000 +b75addf40000000000000000 + +36162 +623b000000010000000000000c626f736368726578726f7468026e6c00000f0001 +623b800000010000000200000c626f736368726578726f7468026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +36163 +0000000070024000539000000204059801010402 +000080010000000000000000 + +36164 +90a900000001000000000000036e733104686f6d65026e6c0000010001 +90a980000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +36165 +8bf10000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +8bf18000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +36166 +9cc600000001000000000000037a6e62026e6c0000010001 +9cc680000001000000020000037a6e62026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c02f + +36167 +ec9b0000000100000000000003777777046e76686e026e6c0000010001 +ec9b8000000100000003000303777777046e76686e026e6c0000010001c0100002000100015180000e076e73617574683103626974c015c0100002000100015180000a076e736175746832c031c0100002000100015180000a076e736175746833c031c02900010001000151800004d5880c33c04300010001000151800004d5880c3bc05900010001000151800004d4ccc00b + +36168 +eac500000001000000000000056d6572656c096873686161726c656d026e6c0000010001 +eac580000001000000020002056d6572656c096873686161726c656d026e6c0000010001c01200020001000151800002c00cc0120002000100015180000e036e733107737572666e6574c01cc00c00010001000151800004914b4bebc03e00010001000151800004c0576a65 + +36169 +b75a5df450104312a4340000000000000000 +b75addf40000000000000000 + +36170 +b75b2958501043209c540000000000000000 +b75ba9540000000000000000 + +36171 +741f00000001000000000000037777770a64757175617274696572026e6c0000010001 +741f80000001000000030000037777770a64757175617274696572026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c037c0100002000100015180000a076e73686f737433c037 + +36172 +dc4800000001000000000000037777770a686574206b6f6e696a6e026e6c0000010001 +dc4884030001000000010000037777770a686574206b6f6e696a6e026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +36173 +b75b29585018432011e00000008b0c80000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb43403c4cc300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 +b75ba9540000000000000000 + +36174 +181028000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657309534348446f6d61696e026e6c000021000100000258001f0000006401850a736f736572766572303209534348446f6d61696e026e6c00 +1810a8040000000000000000 + +36175 +45990000000100000000000006747765657479026e6c00000f0001 +45998000000100000002000006747765657479026e6c00000f0001c00c0002000100015180000c036e723405692d702d64c013c00c00020001000151800006036e7236c02b + +36176 +d53d00000001000000000000037777770c7472656b706c657369746572026e6c0000010001 +d53d84030001000000010000037777770c7472656b706c657369746572026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +36177 +b75b2966501143129bc60000000000000000 +b75ba9640000000000000000 + +36178 +42f4000000010000000000000b70697363756c656e746973026e6c00000f0001 +42f4800000010000000300010b70697363756c656e746973026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +36179 +250000000001000000000000036e733208696e74726f776562024e4c0000010001 +250080000001000000020002036e733208696e74726f776562024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +36180 +f828000000010000000000000d6d6173746572736174776f726b026e6c00000f0001 +f828800000010000000200020d6d6173746572736174776f726b026e6c00000f0001c00c0002000100015180000f036e7331086261726d61746f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004d5a0da96c04900010001000151800004d5a0da64 + +36181 +b75b2967501043129bc50000000000000000 +b75ba9640000000000000000 + +36182 +807100000001000000000000037777770b6765696c6f6d6161746a65026e6c0000010001 +807180000001000000020002037777770b6765696c6f6d6161746a65026e6c0000010001c0100002000100015180000d036e7331063234686f7374c01cc01000020001000151800006036e7332c034c03000010001000151800004d5efb10cc04900010001000151800004d5efb10d + +36183 +fac2000000010000000000000377777712766f6f72616c6c657665696c696768656964026e6c0000010001 +fac2800000010000000200000377777712766f6f72616c6c657665696c696768656964026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c03a + +36184 +f0360000000100000000000003777777056974616273026e6c0000010001 +f0368000000100000002000203777777056974616273026e6c0000010001c01000020001000151800011046e73303109696e74656e74696f6ec016c01000020001000151800007046e733032c02fc02a00010001000151800004d943eb02c04700010001000151800004d943eb03 + +36185 +9eb400000001000000000000026e73057972616d73026e6c0000010001 +9eb480000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +36186 +e3ca0000000100000000000004616e73310774697363616c69026e6c0000010001 +e3ca8000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +36187 +90d300000001000000000000036e7332086865696a6d616e73026e6c0000010001 +90d380000001000000020002036e7332086865696a6d616e73026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000b086578686175737432c010c02d00010001000151800004c1ad9303c03f00010001000151800004d47b0e91 + +36188 +643d00000001000000000000036e733404686f6d65026e6c0000010001 +643d80000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +36189 +643e00000001000000000000036e733104686f6d65026e6c0000010001 +643e80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +36190 +8d4300000001000000000000026e73076e656473746174026e6c0000010001 +8d4380000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36191 +66c900000001000000000000037777770a636f6d65647962616e64026e6c0000010001 +66c980000001000000020000037777770a636f6d65647962616e64026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01bc0100002000100015180000805646e732d32c035 + +36192 +643f00000001000000000000036e733204686f6d65026e6c0000010001 +643f80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +36193 +644000000001000000000000036e733304686f6d65026e6c0000010001 +644080000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +36194 +a0cf000000010000000000000377777706666f6b73756b026e6c0000010001 +a0cf800000010000000200020377777706666f6b73756b026e6c0000010001c0100002000100015180000a036e733103677673c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e1aac04100010001000151800004d4ccc646 + +36195 +cd3900000001000000000000046e733032066368656c6c6f026e6c0000010001 +cd3980000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36196 +4e5428000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573026763065f6d736463730668656465666106686564656661026e6c000021000100000258001f000000640cc4066d617263656c0668656465666106686564656661026e6c00 +4e54a8040000000000000000 + +36197 +9a6100000001000000000000036e733103757063026e6c0000010001 +9a6180000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +36198 +7a8b00000001000000000000046e733031066368656c6c6f026e6c0000010001 +7a8b80000001000000030003046e733031066368656c6c6f026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c00c00010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36199 +230900000001000000000000036e733107737572666e6574026e6c0000010001 +230980000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +36200 +887c000000010000000000000377777711636f6e74696e656e74616c7061726b656e026e6c0000010001 +887c800000010000000200020377777711636f6e74696e656e74616c7061726b656e026e6c0000010001c0100002000100015180000f036e7331086974736c6f676963c022c0100002000100015180000e026e7308646961706c617a61c022c03600010001000151800004d59ae111c05100010001000151800004c2a54621 + +36201 +c1cd000000010000000000000469632d73026e6c00001c0001 +c1cd800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +36202 +288e00000001000000000000037777771074696d6d65726d616e73746f6666656e026e6c0000010001 +288e80000001000000020002037777771074696d6d65726d616e73746f6666656e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec021c01000020001000151800006036e7332c039c03500010001000151800004c29f4906c04d00010001000151800004c29fb004 + +36203 +0000000070024000fcd600000204059801010402 +000080010000000000000000 + +36204 +b75bfc9650104320725c0000000000000000 + + +36205 +6849000000010000000000000f68657576656c7765726b656e64616d026e6c0000010001 +6849800000010000000200020f68657576656c7765726b656e64616d026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +36206 +b75bfc965018432095e60000008b5d80000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb43403c4cc300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36207 +653600000001000000000000047362706e026e6c00000f0001 +653680000001000000020002047362706e026e6c00000f0001c00c0002000100015180000b026e73057069776562c011c00c00020001000151800011036e73330a74727565736572766572c011c02500010001000151800004d5efb23dc03c00010001000151800004d5ef8005 + +36208 +55fb001000010000000000010377777707747067706f7374026e6c00000100010000290800000080000000 +55fb800000010000000200030377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe0000291000000000000000 + +36209 +98f3000000010000000000000377777707747067706f7374026e6c0000010001 +98f3800000010000000200020377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +36210 +299400000001000000000000056132303030026e6c0000ff0001 +299480000001000000030002056132303030026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c0142 + +36211 +b67a00000001000000000000046f73707402637407757477656e7465026e6c0000010001 +b67a80000001000000030003046f73707402637407757477656e7465026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c0300001000100015180000482590102c0420001000100015180000482590103c05400010001000151800004c0571113 + +36212 +140f000000010000000000000377777703736578026e6c0000010001 +140f800000010000000300010377777703736578026e6c0000010001c0100002000100015180000e026e7308767575727765726bc014c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c046c028000100010001518000043efa0202 + +36213 +b8fa00100001000000000000037777770974656c656772616166026e6c0000010001 +b8fa80000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +36214 +727800000001000000000000036e7331057661786f6e026e6c00001c0001 +727880000001000000020002036e7331057661786f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e291af0c038000100010001518000043e291af1 + +36215 +34b400000001000000000000036e7331057661786f6e026e6c0000260001 +34b480000001000000020002036e7331057661786f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e291af0c038000100010001518000043e291af1 + +36216 +5a8700000001000000000000036e7332057661786f6e026e6c00001c0001 +5a8780000001000000020002036e7332057661786f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043e291af0c00c000100010001518000043e291af1 + +36217 +796200000001000000000000036e7332057661786f6e026e6c0000260001 +796280000001000000020002036e7332057661786f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043e291af0c00c000100010001518000043e291af1 + +36218 +b75bfca45011431271ce0000000000000000 + + +36219 +a28d00000001000000000000036e733109756e69736f75726365026e6c0000010001 +a28d80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +36220 +00000000700240005ff400000204059801010402 +000080010000000000000000 + +36221 +516000100001000000000001026e730763616d70696e61026e6c00000100010000290800000000000000 +516080000001000000020003026e730763616d70696e61026e6c0000010001c00f0002000100015180000e036e733007656173796e6574c017c00f00020001000151800006036e7331c02fc02b00010001000151800004c2a55e01c04500010001000151800004c2a55e050000291000000000000000 + +36222 +8bce000000010000000000000a6c69636874706c65696e026e6c0000020001 +8bce800000010000000200020a6c69636874706c65696e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +36223 +a51b0000000100000000000005666f72756d09617a616c6b6d616172026e6c0000010001 +a51b8000000100000002000205666f72756d09617a616c6b6d616172026e6c0000010001c01200020001000151800012036e73310b737461727464657369676ec01cc01200020001000151800006036e7332c034c03000010001000151800004d5f73823c04e000100010001518000043ed45149 + +36224 +955d000000010000000000000a766973696f6e6c696e65026e6c00000f0001 +955d800000010000000200000a766973696f6e6c696e65026e6c00000f0001c00c00020001000151800011036e73310a6d61696e736572766572c017c00c00020001000151800006036e7332c02f + +36225 +4f4d000000010000000000000973706f727463756c74026e6c0000010001 +4f4d800000010000000300000973706f727463756c74026e6c0000010001c00c00020001000151800019036e73310f613475776562736f6c7574696f6e73036e657400c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02e + +36226 +b75bfca55010431271cd0000000000000000 + + +36227 +b75c9580501043203c8f0000000000000000 + + +36228 +b75c958050184320b09a0000008b0e00000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb43403c4cc300030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36229 +3a9e0000000100000000000003706f700f6d6f6c656e626572672d726570726f026e6c0000010001 +3a9e8000000100000002000203706f700f6d6f6c656e626572672d726570726f026e6c0000010001c0100002000100015180000d026e7307646f7473706f74c020c01000020001000151800006036e7373c037c034000100010001518000043eb1d102c04d000100010001518000043eb1d104 + +36230 +e367000000010000000000000377777705626f6f676f026e6c0000010001 +e367800000010000000300020377777705626f6f676f026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +36231 +204a000000010000000000000d706f656c6c766470757474656e026e6c0000010001 +204a800000010000000200010d706f656c6c766470757474656e026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01ac04700010001000151800004c2860043 + +36232 +86ea00000001000000000000037777770761767374616765026e6c0000010001 +86ea80000001000000020000037777770761767374616765026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +36233 +55cc28000001000000010000026e6c0000060001026763065f6d736463730664796e736f6c026e6c00000100010000025800040a000002 +55cca8040000000000000000 + +36234 +375528000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573076d6b626164616d026e6c000021000100000258001900000064018506736572766572076d6b626164616d026e6c00 +3755a8040000000000000000 + +36235 +b75c958e501143123c010000000000000000 + + +36236 +00000000700240007c5400000204059801010402 +000080010000000000000000 + +36237 +0000000070024000c5670000020405b401010402 +000080010000000000000000 + +36238 +57f900000001000000000000026e73066863636e6574026e6c0000010001 +57f980000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +36239 +8a5200000001000000000000026e73066863636e6574026e6c0000260001 +8a5280000001000000020000026e73066863636e6574026e6c0000260001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +36240 +b75e3db250104470f89a0000000000000000 +b75ebdb40000000000000000 + +36241 +9eba00000001000000000000026e73057972616d73026e6c0000010001 +9eba80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +36242 +b1170000000100000000000003706f70066a6a666f746f026e6c00001c0001 +b1178000000100000003000203706f70066a6a666f746f026e6c00001c0001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +36243 +b75e3db2501844700e7f0000008c90b3000000010001000000000f313039393531313632373739342d330000f900010f313039393531313632373739342d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc24403c4da400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 +b75ebdb40000000000000000 + +36244 +000000007002400070f40000020405b401010402 +000080010000000000000000 + +36245 +cd490000000100000000000003706f70066a6a666f746f026e6c0000260001 +cd498000000100000003000203706f70066a6a666f746f026e6c0000260001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +36246 +b75c958f501043123c000000000000000000 + + +36247 +143700000001000000000000026e730763616d70696e61026e6c0000010001 +143780000001000000020002026e730763616d70696e61026e6c0000010001c00f0002000100015180000e036e733007656173796e6574c017c00f00020001000151800006036e7331c02fc02b00010001000151800004c2a55e01c04500010001000151800004c2a55e05 + +36248 +b75d4d2450104320a14a0000000000000000 +b75dcd240000000000000000 + +36249 +2ee6000000010000000000000a6c696368747374656c74026e6c0000020001 +2ee6800000010000000200020a6c696368747374656c74026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +36250 +b75e3dc050114462f80b0000000000000000 +b75ebdc40000000000000000 + +36251 +c16d0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c16d8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36252 +b75d4d2450184320c9150000008b5840000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 +b75dcd240000000000000000 + +36253 +0000000070024000e0850000020405b401010402 +000080010000000000000000 + +36254 +b75e3dc150104462f80a0000000000000000 +b75ebdc40000000000000000 + +36255 +886a00000001000000000000036e733503777873026e6c0000010001 +886a80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36256 +b75f940b50104470bd5e0000000000000000 + + +36257 +b75ecb745010447016650000000000000000 + + +36258 +b75f940b501844701be40000008c4913000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc24403c4da400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 + + +36259 +b75d4d3250114312a0bc0000000000000000 +b75dcd340000000000000000 + +36260 +b75f941950114462bccf0000000000000000 + + +36261 +000000007002400051fa0000020405b401010402 +000080010000000000000000 + +36262 +b75f941a50104462bcce0000000000000000 + + +36263 +366f0000000100000000000003777777176865726d616e6e77657373656c696e6b636f6c6c656765026e6c0000010001 +366f8000000100000003000103777777176865726d616e6e77657373656c696e6b636f6c6c656765026e6c0000010001c0100002000100015180000e026e7308767575727765726bc028c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c05ac03c000100010001518000043efa0202 + +36264 +b7604675501044707c680000000000000000 +b760c6740000000000000000 + +36265 +b75ecb7450184470e98f0000008fa200000000010001000000000f313230323539303834323839382d330000f900010f313230323539303834323839382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdd3403c4f530003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 + + +36266 +b760467550184470bc800000008c6780000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc24403c4da400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 +b760c6740000000000000000 + +36267 +16c3000000010000000000000d68696c6c656e2d726f6f73656e026e6c0000010001 +16c3800000010000000200020d68696c6c656e2d726f6f73656e026e6c0000010001c00c00020001000151800011036e73310a646e7373657276657273c01ac00c00020001000151800006036e7332c032c02e000100010001518000045054ed14c04b00010001000151800004d5f72f14 + +36268 +b75d4d3350104312a0bb0000000000000000 +b75dcd340000000000000000 + +36269 +648800000001000000000000037777770b6d6172656d617269656b65026e6c0000010001 +648880000001000000020000037777770b6d6172656d617269656b65026e6c0000010001c01000020001000151800014036e73350a78736e6574776f726b73036e657400c01000020001000151800006036e7332c034 + +36270 +b7604683501144627bd90000000000000000 +b760c6840000000000000000 + +36271 +293600000001000000000000037777771264652d776f6e696e67737469636874696e67026e6c0000010001 +293680000001000000020002037777771264652d776f6e696e67737469636874696e67026e6c0000010001c0100002000100015180000c026e7306787334616c6cc023c01000020001000151800006036e7332c03ac03700010001000151800004c26d0642c04f00010001000151800004c26d0963 + +36272 +91c7000000010000000000000377777706677777776562026e6c0000010001 +91c7800000010000000200000377777706677777776562026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02e + +36273 +a533000000010000000000000c626c616e6b736d61626f7577026e6c0000010001 +a533800000010000000300010c626c616e6b736d61626f7577026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc019c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +36274 +b7604684501044627bd80000000000000000 +b760c6840000000000000000 + +36275 +b75ecb825011446215d30000000000000000 + + +36276 +4e5728000001000000010000026e6c0000060001095f6b65726265726f73045f7463701244656661756c742d46697273742d53697465065f7369746573026463065f6d736463730668656465666106686564656661026e6c000021000100000258001f000000640058066d617263656c0668656465666106686564656661026e6c00 +4e57a8040000000000000000 + +36277 +00000000700240005d5e0000020405b401010402 +000080010000000000000000 + +36278 +113f00000001000000000000086265686565726477066e7434616c6c026e6c0000010001 +113f80000001000000020002086265686565726477066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +36279 +b75ecb835010446215d20000000000000000 + + +36280 +b7630c6050104470c1de0000000000000000 +b7638c640000000000000000 + +36281 +0000000070024000829700000204059801010402 +000080010000000000000000 + +36282 +b7529be550114462fc0d0000000000000000 + + +36283 +1000000000010000000000000762616e6e65727303696d73026e6c0000010001 +1000800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +36284 +b763eae35010432009c80000000000000000 + + +36285 +b7630c60501844703d0a0000008ffb00000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdd3403c4f530003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 +b7638c640000000000000000 + +36286 +b763eae3501843202fd20000008b5900000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36287 +1f3100000001000000000000036e73310e726567696f70726f766964657273026e6c0000010001 +1f3180000001000000020002036e73310e726567696f70726f766964657273026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d41da001c04100010001000151800004d41da1fe + +36288 +94d400000001000000000000036e73320e726567696f70726f766964657273026e6c0000010001 +94d480000001000000020002036e73320e726567696f70726f766964657273026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03300010001000151800004d41da001c00c00010001000151800004d41da1fe + +36289 +b20f00000001000000000000086d6972726f72656407666c6162626572026e6c0000010001 +b20f80000001000000030002086d6972726f72656407666c6162626572026e6c0000010001c0150002000100015180000d036e733106776964657873c01dc01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +36290 +4009000000010000000000000377777708706f6d70696e666f026e6c0000010001 +4009800000010000000200020377777708706f6d70696e666f026e6c0000010001c01000020001000151800010036e73310966697265776f726b32c019c01000020001000151800006036e7332c031c02d00010001000151800004d5f4b8d3c04900010001000151800004d5f4b9d3 + +36291 +b7630c6e50114462c14c0000000000000000 +b7638c640000000000000000 + +36292 +c0fa00000001000000000000076578747265656d077765622d6c6f67026e6c0000010001 +c0fa80000001000000030003076578747265656d077765622d6c6f67026e6c0000010001c0140002000100015180000b036e733104696c7365c01cc01400020001000151800006036e7332c034c01400020001000151800006036e7333c034c030000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +36293 +b763eaf150114312093a0000000000000000 + + +36294 +000000007002400073a600000204059801010402 +000080010000000000000000 + +36295 +000000007002400026de0000020405b401010402 +000080010000000000000000 + +36296 +ae4200000001000000000000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730744454d414c4d31026e6c0000060001 +ae4284030001000000010000035f6763045f746370155374616e64616172642d6565727374652d73697465065f73697465730744454d414c4d31026e6c0000060001c03a00060001000038400036026e730f646f6d61696e2d7265676973747279c03a0a686f73746d6173746572c0510bf1e540000070800000384000278d0000003840 + +36297 +b7630c6f50104462c14b0000000000000000 +b7638c640000000000000000 + +36298 +0a28000000010000000000000d68696c6c656e2d726f6f73656e026e6c0000010001 +0a28800000010000000200020d68696c6c656e2d726f6f73656e026e6c0000010001c00c00020001000151800011036e73310a646e7373657276657273c01ac00c00020001000151800006036e7332c032c02e000100010001518000045054ed14c04b00010001000151800004d5f72f14 + +36299 +b763eaf25010431209390000000000000000 + + +36300 +b765999a50104470fe210000000000000000 + + +36301 +b764c59f50104320201a0000000000000000 + + +36302 +22d400000001000000000000046e733032066368656c6c6f026e6c0000010001 +22d480000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36303 +8cc6000000010000000000000c626c616e6b736d61626f7577026e6c0000010001 +8cc6800000010000000300010c626c616e6b736d61626f7577026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc019c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +36304 +b764c59f501843209aa50000008b0580000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36305 +08a7000000010000000000000a6b7569706572626f7577026e6c0000010001 +08a7800000010000000200020a6b7569706572626f7577026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +36306 +2b660000000100000000000009706c6567742d766f73026e6c0000010001 +2b668000000100000002000009706c6567742d766f73026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02e + +36307 +2a05000000010000000000000e6669613232302d3132382d3130300364736c086d78706f73757265026e6c0000010001 +2a05800000010000000200000e6669613232302d3132382d3130300364736c086d78706f73757265026e6c0000010001c01f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c01f0002000100015180000906617574683230c043 + +36308 +81e5000000010000000000010a6970353033636339343605737065656406706c616e6574026e6c00000f00010000291000000000000000 +81e5800000010000000300040a6970353033636339343605737065656406706c616e6574026e6c00000f0001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a650000291000000000000000 + +36309 +b765999a50184470204e0000008f5400000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdd3403c4f530003000000304e544c4d535350000100000097b200c0060006002a0000000a000a00200000004459534f53455256455244594e534f4c0000 + + +36310 +b764c5ad501143121f8c0000000000000000 + + +36311 +0000000070024000865700000204059801010402 +000080010000000000000000 + +36312 +b76599a850114462fd8f0000000000000000 + + +36313 +b764c5ae501043121f8b0000000000000000 + + +36314 +b7668f535010432069150000000000000000 + + +36315 +b7668f535018432033200000008bb600000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36316 +b76599a950104462fd8e0000000000000000 + + +36317 +ed2f00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +ed2f80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +36318 +2030000000010000000000000d726f616461697274726176656c026e6c00000f000100 +2030800000010000000200020d726f616461697274726176656c026e6c00000f0001c00c0002000100015180000d036e733106652d626f7973c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d4cccf3bc04700010001000151800004d4cccf3c + +36319 +99b000100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +99b080000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +36320 +b305000000010000000000000d76616e676f67686d757365756d026e6c0000010001 +b305800000010000000200020d76616e676f67686d757365756d026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +36321 +1fd200000001000000000000066b61726d6163036d6373026e6c0000ff0001 +1fd280000001000000020001066b61726d6163036d6373026e6c0000ff0001c01300020001000151800005026e73c013c01300020001000151800010036e7332096379626572636f6d6dc017c02b00010001000151800004d5c40185 + +36322 +b7668f615011431268870000000000000000 + + +36323 +40470000000100000000000003777777067573702d6d63026e6c00001c0001 +40478000000100000002000203777777067573702d6d63026e6c00001c0001c01000020001000151800012026e730c696e746572636f6e6e656374c017c01000020001000151800006036e7332c02ec02b00010001000151800004d453c005c04900010001000151800004d453c006 + +36324 +dd7000000001000000000000037777770d77657374686f656b776f6e656e026e6c0000010001 +dd7080000001000000020002037777770d77657374686f656b776f6e656e026e6c0000010001c0100002000100015180000c026e730673656e746961c01ec01000020001000151800006036e7332c035c0320001000100015180000450fd695ac04a00010001000151800004d4cce917 + +36325 +536a00000001000000000000037777770663656e666178026e6c0000010001 +536a84030001000000010000037777770663656e666178026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +36326 +edd5000000010000000000000e6772616669736368657a616b656e026e6c0000ff0001 +edd5800000010000000200020e6772616669736368657a616b656e026e6c0000ff0001c00c0002000100015180000d026e73076b6e6f77617265c01bc00c00020001000151800006036e7332c032c02f00010001000151800004c3402003c04800010001000151800004c340202b + +36327 +dbd600000001000000000000037777770877657374686f656b026e6c0000010001 +dbd680000001000000020002037777770877657374686f656b026e6c0000010001c0100002000100015180000c026e730673656e746961c019c01000020001000151800006036e7332c030c02d0001000100015180000450fd695ac04500010001000151800004d4cce917 + +36328 +b7668f625010431268860000000000000000 + + +36329 +4e5a28000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573026463065f6d736463730668656465666106686564656661026e6c000021000100000258001f000000640185066d617263656c0668656465666106686564656661026e6c00 +4e5aa8040000000000000000 + +36330 +8c84000000010000000000000377777714646167626c616476616e6865746e6f6f7264656e026e6c0000010001 +8c84800000010000000300030377777714646167626c616476616e6865746e6f6f7264656e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c025c01000020001000151800006036e7332c03dc01000020001000151800006036e7333c03dc03900010001000151800004c1ad573dc05600010001000151800004c1ad573ec06800010001000151800004d5880089 + +36331 +86f700000001000000000000034e533206455354415445024e4c0000010001 +86f780000001000000020002034e533206455354415445024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004c2e5b501c00c00010001000151800004c2e5b506 + +36332 +b36600000001000000000000024e5306455354415445024e4c0000010001 +b36680000001000000020002024e5306455354415445024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c2e5b501c03800010001000151800004c2e5b506 + +36333 +3c190000000100000000000003777777056477656263026e6c0000010001 +3c198000000100000003000203777777056477656263026e6c0000010001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +36334 +509d00000001000000000000106879756e64616976646865696a64656e026e6c00000f0001 +509d80000001000000030001106879756e64616976646865696a64656e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01dc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04fc031000100010001518000043efa0202 + +36335 +0000000070024000677200000204059801010402 +000080010000000000000000 + +36336 +04d90000000100000000000005646e732d31056c61646f74026e6c0000010001 +04d98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36337 +19a10000000100000000000005646e732d32056c61646f74026e6c0000010001 +19a18000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36338 +51ba00000001000000000000037777770a6b6f757264657369676e026e6c0000010001 +51ba80000001000000020000037777770a6b6f757264657369676e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +36339 +b2540000000100000000000011716e2d3231332d3233312d3232382d313308717569636b6e6574026e6c0000010001 +b2548000000100000003000211716e2d3231332d3233312d3232382d313308717569636b6e6574026e6c0000010001c01e00020001000151800011036e73310a6d756c74696b6162656cc027c01e00020001000151800006036e7332c03fc01e00020001000151800014036e73300a6d756c74696b6162656c036e657400c03b0001000100015180000450f2e002c0580001000100015180000450f2e006 + +36340 +b76739db501043209fa70000000000000000 +b767b9d40000000000000000 + +36341 +b76739db501843206bf10000008bb2c0000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 +b767b9d40000000000000000 + +36342 +2b5d00000001000000000000036e73340767617574656e67026e6c0000010001 +2b5d80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36343 +336000000001000000000000036e73340767617574656e67026e6c0000010001 +336080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36344 +1b890000000100000000000003777777117368656c6c67726f656e657374726f6f6d026e6c0000010001 +1b898000000100000002000203777777117368656c6c67726f656e657374726f6f6d026e6c0000010001c0100002000100015180000b036e73310461627473c022c01000020001000151800006036e7332c03ac0360001000100015180000450454199c04d00010001000151800004d47ba45b + +36345 +a6ec00000001000000000000046c696465026e6c0000020001 +a6ec80000001000000020002046c696465026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +36346 +b76739e9501143129f190000000000000000 +b767b9e40000000000000000 + +36347 +a8e100000001000000000000036e733109666972737466696e64026e6c0000010001 +a8e180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36348 +a8e200000001000000000000036e733209666972737466696e64026e6c0000010001 +a8e280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36349 +0000000070024000556e00000204059801010402 +000080010000000000000000 + +36350 +e7d50000000100000000000008736f6d65686f7374026e6c00000f0001 +e7d58403000100000001000008736f6d65686f7374026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +36351 +a57300000001000000000000036e73320870726f7365727665026e6c0000010001 +a57380000001000000030002036e73320870726f7365727665026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c02d000100010001518000045054e055c05d00010001000151800004d4ccc655 + +36352 +336d00000001000000000000036e73320870726f7365727665026e6c00001c0001 +336d80000001000000030002036e73320870726f7365727665026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c02d000100010001518000045054e055c05d00010001000151800004d4ccc655 + +36353 +758300000001000000000000036e73320870726f7365727665026e6c0000260001 +758380000001000000030002036e73320870726f7365727665026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c02d000100010001518000045054e055c05d00010001000151800004d4ccc655 + +36354 +eb2200000001000000000000036e733203757063026e6c0000010001 +eb2280000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +36355 +fac600000001000000000000036e733203757063026e6c0000260001 +fac680000001000000030003036e733203757063026e6c0000260001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +36356 +b76739ea501043129f180000000000000000 +b767b9e40000000000000000 + +36357 +b76820ed50104320a6900000000000000000 +b768a0e30000000000000000 + +36358 +2a97000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +2a97800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +36359 +b76820ed50184320239c0000008b0300000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 +b768a0e30000000000000000 + +36360 +bf7d0000000100000000000003777777126b617474656e7a6f72672d64656e68616167026e6c0000010001 +bf7d8000000100000002000003777777126b617474656e7a6f72672d64656e68616167026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c03a + +36361 +1e4b00000001000000000000046d61696c076575726f6e6574026e6c0000010001 +1e4b80000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +36362 +a8e400000001000000000000036e733109666972737466696e64026e6c0000010001 +a8e480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36363 +a8e500000001000000000000036e733209666972737466696e64026e6c0000010001 +a8e580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36364 +045100000001000000000000037777770c696d6d756e6f6d6564696373026e6c0000010001 +045180000001000000030001037777770c696d6d756e6f6d6564696373026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +36365 +b76820fb50114312a6020000000000000000 +b768a0f30000000000000000 + +36366 +2aa800000001000000000000046e733031066368656c6c6f026e6c0000010001 +2aa880000001000000030003046e733031066368656c6c6f026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c00c00010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36367 +8b2000000001000000000000037777770c777677657374667269736961026e6c0000010001 +8b2080000001000000020002037777770c777677657374667269736961026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +36368 +ef61000000010000000000000d626f656b656e73657276696365026e6c00000f0001 +ef61800000010000000200020d626f656b656e73657276696365026e6c00000f0001c00c00020001000151800010036e733109686f73746e65746276c01ac00c00020001000151800006036e7332c032c02e0001000100015180000451113264c04a00010001000151800004d5c42851 + +36369 +000000007002400072f800000204059801010402 +000080010000000000000000 + +36370 +6580000000010000000000000468676a62026e6c0000010001 +6580800000010000000300020468676a62026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +36371 +53780000000100000000000003777777056177656263026e6c0000010001 +53788000000100000003000003777777056177656263026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c02ec01000020001000151800006036e7333c02e + +36372 +b76820fc50104312a6010000000000000000 +b768a0f30000000000000000 + +36373 +73510000000100000000000003777777037365780678656e69756d026e6c0000010001 +73518000000100000002000003777777037365780678656e69756d026e6c0000010001c01400020001000151800012036e73310878656e6f73697465036e657400c01400020001000151800006036e7332c033 + +36374 +b768f16a50104320f39c0000000000000000 + + +36375 +67ff00000001000000000000046d61696c07756e6565647573026e6c0000010001 +67ff80000001000000020002046d61696c07756e6565647573026e6c0000010001c0110002000100015180000f026e7309656174736572766572c019c01100020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +36376 +b768f16a50184320c0270000008bb380000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afb44403c4cc400030000002c4e544c4d535350000100000097b200e0060006002600000006000600200000004d415243454c4845444546410000 + + +36377 +7f3e0000000100000000000003777777076e6574706f6c6c026e6c0000010001 +7f3e8000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +36378 +5c5b000000010000000000000866616c6c6261636b0c696e746572636f6e6e656374026e6c0000010001 +5c5b800000010000000300030866616c6c6261636b0c696e746572636f6e6e656374026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c03600010001000151800004d453c005c04700010001000151800004d453c006c05900010001000151800004d453c805 + +36379 +6fe800000001000000000000036d78310c696e746572636f6e6e656374026e6c0000010001 +6fe880000001000000030003036d78310c696e746572636f6e6e656374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c03100010001000151800004d453c005c04200010001000151800004d453c006c05400010001000151800004d453c805 + +36380 +b768f17850114312f30e0000000000000000 + + +36381 +3b5e000000010000000000000c6265726e737465696e2d6167026e6c00000f0001 +3b5e840300010000000100000c6265726e737465696e2d6167026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +36382 +d1df0000000100000000000103706f70096e656465726c616e64036e65740b6175746f6372657573656e026e6c00001c00010000291000000000000000 +d1df8000000100000002000303706f70096e656465726c616e64036e65740b6175746f6372657573656e026e6c00001c0001c01e0002000100015180000f036e733108636f6d707574656cc02ac01e00020001000151800006036e7332c042c03e00010001000151800004c3568680c05900010001000151800004c35686810000291000000000000000 + +36383 +0f1e00000001000000000000036e733109666972737466696e64026e6c0000010001 +0f1e80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36384 +65fb00000001000000000000127765737466726965736c616e64726164696f026e6c00000f0001 +65fb80000001000000020000127765737466726965736c616e64726164696f026e6c00000f0001c00c00020001000151800012036e733108636974757377656203636f6d00c00c00020001000151800006036e7332c037 + +36385 +55f4000000010000000000000377777709766f6574766572656e026e6c0000010001 +55f4800000010000000200020377777709766f6574766572656e026e6c0000010001c0100002000100015180000e036e733107686f7477697265c01ac01000020001000151800006036e7332c032c02e0001000100015180000451044b03c0480001000100015180000451044bc8 + +36386 +7a8300000001000000000000037777770d686f6d6f2d706c6161746a6573026e6c0000010001 +7a8380000001000000020001037777770d686f6d6f2d706c6161746a6573026e6c0000010001c0100002000100015180000a026e7304696d636fc01ec01000020001000151800013036e7332097669727475616c787303636f6d00c032000100010001518000043e81810a + +36387 +3ab80000000100000000000003706f7006787334616c6c026e6c0000010001 +3ab88000000100000003000203706f7006787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +36388 +04b0000000010000000000000774656c73746172026e6c00000f0001 +04b0800000010000000200020774656c73746172026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +36389 +b768f17950104312f30d0000000000000000 + + +36390 +25bd00000001000000000000036e733209666972737466696e64026e6c0000010001 +25bd80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36391 +f66d0000000100000000000010736d6172742d69747365727669636573026e6c00000f0001 +f66d8000000100000002000010736d6172742d69747365727669636573026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c037 + +36392 +b7529be650104462fc0c0000000000000000 + + +36393 +f6420000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f6428000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36394 +74de000000010000000000000673656375726509706f7374706c617a61026e6c0000010001 +74de800000010000000200020673656375726509706f7374706c617a61026e6c0000010001c0130002000100015180000e036e733207737570706f7274c01dc01300020001000151800006036e7334c035c03100010001000151800004c372e7c8c04b00010001000151800004c372e6fe + +36395 +813d00000001000000000000037777770a7777702d6469656d656e026e6c0000010001 +813d80000001000000020000037777770a7777702d6469656d656e026e6c0000010001c0100002000100015180000c036e723405692d702d64c01bc01000020001000151800006036e7236c033 + +36396 +ed3b00000001000000000000036e73330767617574656e67026e6c0000010001 +ed3b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36397 +29fc00000001000000000000036e73340767617574656e67026e6c0000010001 +29fc80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36398 +aa8d0000000100000000000009652d6c756e61746963026e6c0000010001 +aa8d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36399 +4c650000000100000000000006787334616c6c026e6c00000f0001 +4c658000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +36400 +5d3800000001000000000000037777770561736b6f6c026e6c0000010001 +5d3884030001000000010000037777770561736b6f6c026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +36401 +e2760000000100000000000003313637023636033231380236360964796e61626c6f636b07656173796e6574026e6c0000100001 +e2768000000100000002000203313637023636033231380236360964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +36402 +660300000001000000000000026e73076e656473746174026e6c0000010001 +660380000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36403 +85ea00000001000000000000036e7333076e656473746174026e6c0000010001 +85ea80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36404 +ba80000000010000000000000377777707717569636b7063026e6c0000010001 +ba80800000010000000200000377777707717569636b7063026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c02f + +36405 +4d4700000001000000000000086261726d61746f6e026e6c0000ff0001 +4d4780000001000000020002086261726d61746f6e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +36406 +df1e00000001000000000000057668656e70026e6c00000f0001 +df1e80000001000000020002057668656e70026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c012c00c00020001000151800006036e7332c029c02600010001000151800004d453c005c04400010001000151800004d453c006 + +36407 +177600000001000000000000096876626f6e6c696e65026e6c00001c0001 +177680000001000000020002096876626f6e6c696e65026e6c00001c0001c00c0002000100015180000a036e733103677673c016c00c00020001000151800006036e7332c02ec02a000100010001518000045054e1aac04000010001000151800004d4ccc646 + +36408 +941e0000000100000000000004686f6d6503696965026e6c0000010001 +941e8000000100000003000304686f6d6503696965026e6c0000010001c01100020001000151800009026e7303687661c015c0110002000100015180000e036e733107737572666e6574c015c01100020001000151800006036e7332c02cc02900010001000151800004915c1202c03e00010001000151800004c0576a65c05800010001000151800004915c2102 + +36409 +8b7000000001000000000000046d61696c03746363026e6c0000010001 +8b7080000001000000020000046d61696c03746363026e6c0000010001c01100020001000151800011036e73310764697265637435036e657400c01100020001000151800006036e7332c02d + +36410 +f96600000001000000000000046d61696c03746363026e6c00001c0001 +f96680000001000000020000046d61696c03746363026e6c00001c0001c01100020001000151800011036e73310764697265637435036e657400c01100020001000151800006036e7332c02d + +36411 +7d6400000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6f6d64656e6f6f72642d6873026e6c0000060001 +7d6484030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6f6d64656e6f6f72642d6873026e6c0000060001c04700060001000038400036026e730f646f6d61696e2d7265676973747279c0470a686f73746d6173746572c05e0bf1e540000070800000384000278d0000003840 + +36412 +352200000001000000000000027463036164730974656c656772616166026e6c0000010001 +352280000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +36413 +580600000001000000000000036e733209666972737466696e64026e6c0000010001 +580680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36414 +4db100000001000000000000046574726e0c696e746572636f6e6e656374026e6c0000010001 +4db180000001000000030003046574726e0c696e746572636f6e6e656374026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c03200010001000151800004d453c005c04300010001000151800004d453c006c05500010001000151800004d453c805 + +36415 +fab828000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6f6d64656e6f6f72642d6873026e6c00002100010000025800220000006400580a6f6d64656e6f6f722d310c6f6d64656e6f6f72642d6873026e6c00 +fab8a8040000000000000000 + +36416 +e5ef0000000100000000000003777777087273616476696573026e6c0000010001 +e5ef8000000100000002000203777777087273616476696573026e6c0000010001c0100002000100015180000a036e733103686978c019c01000020001000151800006036e7332c031c02d00010001000151800004d5a0da0ac0430001000100015180000451112ec3 + +36417 +a0e500000001000000000000075745534d4f4c4c0544454d4f4e024e4c0000010001 +a0e580000001000000030002075745534d4f4c4c0544454d4f4e024e4c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +36418 +3120000000010000000000000762616e6e65727303696d73026e6c0000010001 +3120800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +36419 +0000000070024000fae400000204056401010402 +000080010000000000000000 + +36420 +5ca9000000010000000000000d6772617469736b6f7274696e670d636f756e747279636173696e6f026e6c0000010001 +5ca9800000010000000200020d6772617469736b6f7274696e670d636f756e747279636173696e6f026e6c0000010001c01a00020001000151800011026e730b6973642d686f6c6c616e64c028c01a00020001000151800006036e7332c03fc03c00010001000151800004d5e38d0ac05900010001000151800004d5e38205 + +36421 +ca2f00000001000000000000036e7331066e6c74726565026e6c0000010001 +ca2f80000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +36422 +b76b4fdb501040b01f520000000000000000 +b76bcfd40000000000000000 + +36423 +b76b4fdb501840b0d54e00000095c564000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0282403c54020003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 +b76bcfd40000000000000000 + +36424 +fda00000000100000000000006787334616c6c026e6c00000f0001 +fda08000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +36425 +d53f00000001000000000000037777770b6d6f6e6f6d616e69616373026e6c0000010001 +d53f80000001000000020002037777770b6d6f6e6f6d616e69616373026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +36426 +e1ae00000001000000000000036e73310774656c666f7274026e6c0000010001 +e1ae80000001000000020001036e73310774656c666f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004d5c22815 + +36427 +b76b4fe9501140a21eba0000000000000000 +b76bcfe40000000000000000 + +36428 +000000007002400048dc00000204056401010402 +000080010000000000000000 + +36429 +35230000000100000000000004777777320974656c656772616166026e6c0000010001 +35238000000100000002000004777777320974656c656772616166026e6c0000010001c01100020001000151800013036e73300974656c656772616166036e657400c01100020001000151800006036e7331c033 + +36430 +490c000000010000000000000c64656c746162657267696e67026e6c0000ff0001 +490c800000010000000200000c64656c746162657267696e67026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +36431 +99a600000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6b657a726f7474657264616d026e6c0000060001 +99a684030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6b657a726f7474657264616d026e6c0000060001c04100060001000038400036026e730f646f6d61696e2d7265676973747279c0410a686f73746d6173746572c0580bf1e540000070800000384000278d0000003840 + +36432 +b76b4fea501040a21eb90000000000000000 +b76bcfe40000000000000000 + +36433 +b76bccee501040b0f0350000000000000000 + + +36434 +b76bccee501840b021e3000000954ab5000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0282403c54020003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 + + +36435 +d1bb00000001000000000000037777770a62656b6b6572676c6173026e6c0000010001 +d1bb80000001000000020002037777770a62656b6b6572676c6173026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +36436 +6393000000010000000000000a7665626f2d6265746f6e026e6c00001c0001 +6393800000010000000200000a7665626f2d6265746f6e026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +36437 +c81400000001000000000000116e696575776b6f6f7064656b77616b656c026e6c00000f0001 +c81480000001000000030002116e696575776b6f6f7064656b77616b656c026e6c00000f0001c00c00020001000151800011036e73310761757669636f6d036e657400c00c0002000100015180000e036e73310761757669636f6dc01ec00c00020001000151800006036e7332c053c04f00010001000151800004d5bd14c8c06900010001000151800004d5bd1532 + +36438 +a31200000001000000000000036e733106313233623262026e6c0000010001 +a31280000001000000020002036e733106313233623262026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e5b5c039000100010001518000045054e5b6 + +36439 +a8de00000001000000000000036e733206313233623262026e6c0000010001 +a8de80000001000000020002036e733206313233623262026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b000100010001518000045054e5b5c00c000100010001518000045054e5b6 + +36440 +4bcb00000001000000000000036877670f766965727465656e66656573746a65026e6c0000010001 +4bcb80000001000000020002036877670f766965727465656e66656573746a65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +36441 +b76bccfc501140a2ef9d0000000000000000 + + +36442 +00000000700240002ee600000204056401010402 +000080010000000000000000 + +36443 +b79900000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000010001 +b79980000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +36444 +6c79000000010000000000000758424430303031076b6c6d66733031026e6c0000010001 +6c79840300010000000100000758424430303031076b6c6d66733031026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +36445 +b76bccfd501040a2ef9c0000000000000000 + + +36446 +b76cc0f1501040b0e23b0000000000000000 + + +36447 +b76cc0f1501840b0b68700000095a816000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403b0282403c54020003000000364e544c4d535350000100000097b200e00c000c002a0000000a000a00200000004f4d44454e4f4f522d314f4d44454e4f4f52442d48530000 + + +36448 +3eb028000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730c6b657a726f7474657264616d026e6c000021000100000258001e000000640cc40665636f6e656c0c6b657a726f7474657264616d026e6c00 +3eb0a8040000000000000000 + +36449 +b5ba00000001000000000000047476636e026e6c0000010001 +b5ba80000001000000020002047476636e026e6c0000010001c00c00020001000151800011036e73310a6f612d73797374656d73c011c00c00020001000151800006036e7332c029c025000100010001518000043eb1b1abc042000100010001518000043eb1b1ac + +36450 +539800000001000000000000056b656974680564656d6f6e026e6c00000f0001 +539880000001000000030002056b656974680564656d6f6e026e6c00000f0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c0120002000100015180000f036e73320564656d6f6e036e657400c02c00010001000151800004c29f4906c03e00010001000151800004c29fb004 + +36451 +b76cc0ff501140a2e1a30000000000000000 + + +36452 +3b2c0000000100000000000008667265656d61696c026e6c0000010001 +3b2c8000000100000003000208667265656d61696c026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +36453 +18a40000000100000000000007736b796c696e65026e6c00000f0001 +18a48000000100000002000207736b796c696e65026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +36454 +0000000070024000e53c0000020405b401010402 +000080010000000000000000 + +36455 +b76cc100501040a2e1a20000000000000000 + + +36456 +485800000001000000000000037777770673746f636b73026e6c0000010001 +485880000001000000020002037777770673746f636b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +36457 +d1dd00000001000000000000087363616e6d61696c026e6c00000f0001 +d1dd80000001000000020002087363616e6d61696c026e6c00000f0001c00c00020001000151800017036e733110636173652d656c656b74726f6e696373c015c00c00020001000151800006036e7332c02dc02900010001000151800004d4cceb4fc04c00010001000151800004d4cceb50 + +36458 +d7b400000001000000000000037777770673746f636b73026e6c0000010001 +d7b480000001000000020002037777770673746f636b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +36459 +b76d3ff750104470161c0000000000000000 +b76dbff40000000000000000 + +36460 +b76d3ff7501844706a97000000912d80000000010001000000000f313135313035313233353334362d330000f900010f313135313035313233353334362d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2e403c4eae0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 +b76dbff40000000000000000 + +36461 +71a6000000010000000000000a474154454b454550455208545249504c452d50024e4c0000010001 +71a6800000010000000200010a474154454b454550455208545249504c452d50024e4c0000010001c01700020001000151800005026e73c017c01700020001000151800013036e7332026e6c0669676e697465036e657400c03400010001000151800004c05c8682 + +36462 +b78100000001000000000000076c69646572656e026e6c0000020001 +b78180000001000000020002076c69646572656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +36463 +84ed000000010000000000000377777708646166776f726c64026e6c0000010001 +84ed800000010000000200000377777708646166776f726c64026e6c0000010001c01000020001000151800011036e73310a686f73746e6174696f6ec019c01000020001000151800006036e7332c031 + +36464 +b76d40055011446215880000000000000000 +b76dc0040000000000000000 + +36465 +0000000070024000eddd0000020405b401010402 +000080010000000000000000 + +36466 +709b00000001000000000000036e73310a686f73746e6174696f6e026e6c0000010001 +709b80000001000000020002036e73310a686f73746e6174696f6e026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c01bc01000020001000151800006036e7331c033c02f00010001000151800004c3eaad40c04900010001000151800004c3eaad41 + +36467 +a46400000001000000000000036e73320a686f73746e6174696f6e026e6c0000010001 +a46480000001000000020002036e73320a686f73746e6174696f6e026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c01bc01000020001000151800006036e7331c033c02f00010001000151800004c3eaad40c04900010001000151800004c3eaad41 + +36468 +1fd50000000100000000000003766e67026e6c0000ff0001 +1fd58000000100000002000003766e67026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +36469 +c3fb00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +c3fb80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36470 +c6ce00000001000000000000036e73310863616d627269756d026e6c0000010001 +c6ce80000001000000020002036e73310863616d627269756d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9131082c03b00010001000151800004d5efb202 + +36471 +b5b300000001000000000000077765626d61696c0564656d6f6e026e6c0000010001 +b5b380000001000000030002077765626d61696c0564656d6f6e026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c0140002000100015180000f036e73320564656d6f6e036e657400c02e00010001000151800004c29f4906c04000010001000151800004c29fb004 + +36472 +e97b0000000100000000000003777777096d656469616d656e75026e6c0000010001 +e97b8000000100000003000303777777096d656469616d656e75026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +36473 +9ede00000001000000000001046e733032066368656c6c6f026e6c00000100010000291000000000000000 +9ede80000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +36474 +aecc00000001000000000001046e733032066368656c6c6f026e6c00001c00010000291000000000000000 +aecc80000001000000030004046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +36475 +bd630000000100000000000004777777320974656c656772616166026e6c0000010001 +bd638000000100000002000004777777320974656c656772616166026e6c0000010001c01100020001000151800013036e73300974656c656772616166036e657400c01100020001000151800006036e7331c033 + +36476 +b76d40065010446215870000000000000000 +b76dc0040000000000000000 + +36477 +b76dbaf750104470a3bc0000000000000000 + + +36478 +b76dbaf750184470fab8000000912c00000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2e403c4eae0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 + + +36479 +636700000001000000000000036e73310863616d627269756d026e6c0000260001 +636780000001000000020002036e73310863616d627269756d026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9131082c03b00010001000151800004d5efb202 + +36480 +239c00000001000000000000036e733105672d617274026e6c0000010001 +239c80000001000000020002036e733105672d617274026e6c0000010001c01000020001000151800002c00cc0100002000100015180000f026e7309747269706c652d6974c016c00c00010001000151800004d5a0c502c03800010001000151800004d584b002 + +36481 +a3c300000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +a3c380000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36482 +2755000000010000000000000b7072657373616e796b6579026e6c00000f0001 +2755800000010000000200000b7072657373616e796b6579026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c030 + +36483 +a45900000001000000000000037777770c686f6c6c616e647365736578026e6c0000010001 +a45980000001000000020000037777770c686f6c6c616e647365736578026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c035 + +36484 +1f3200000001000000000000037777770962696f73636f70656e026e6c0000010001 +1f3280000001000000020001037777770962696f73636f70656e026e6c0000010001c0100002000100015180000d036e733306696e61646765c01ac01000020001000151800013046e733139087a6f6e656564697403636f6d00c02e00010001000151800004d9164114 + +36485 +543500000001000000000000036e73320863616d627269756d026e6c0000010001 +543580000001000000020002036e73320863616d627269756d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d9131082c00c00010001000151800004d5efb202 + +36486 +b76dbb0550114462a3280000000000000000 + + +36487 +0000000070024000a6000000020405b401010402 +000080010000000000000000 + +36488 +73cf0000000100000000000006726f626572740668656e73656c026e6c0000010001 +73cf8000000100000003000306726f626572740668656e73656c026e6c0000010001c01300020001000151800011036e73310a74727565736572766572c01ac01300020001000151800006036e7332c032c01300020001000151800006036e7333c032c02e00010001000151800004d5ef8003c04b00010001000151800004d5efb004c05d00010001000151800004d5ef8005 + +36489 +b76dbb0650104462a3270000000000000000 + + +36490 +4a9a0000000100000000000010706861726f736d756c74696d65646961026e6c00000f0001 +4a9a8000000100000002000210706861726f736d756c74696d65646961026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec01dc00c00020001000151800006036e7332c035c03100010001000151800004c29f4906c04900010001000151800004c29fb004 + +36491 +bdcf00000001000000000000037777770c737461727420706167696e61026e6c0000010001 +bdcf84030001000000010000037777770c737461727420706167696e61026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +36492 +1501000000010000000000000a767363616e312d657572036578740770726f7261696c026e6c00001c0001 +1501800000010000000300000a767363616e312d657572036578740770726f7261696c026e6c00001c0001c01b00020001000151800019036e73310f6f726967696e2d736572766963657303636f6d00c01b00020001000151800006036e7332c03bc01b00020001000151800006036e7333c03b + +36493 +b76e739b50104470a33a0000000000000000 +b76ef3940000000000000000 + +36494 +5d4500000001000000000000036e73320863616d627269756d026e6c0000260001 +5d4580000001000000020002036e73320863616d627269756d026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d9131082c00c00010001000151800004d5efb202 + +36495 +b76e739b50184470fbb6000000912a80000000010001000000000f313135313035313233353334362d320000f900010f313135313035313233353334362d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd2e403c4eae0003000000324e544c4d535350000100000097b208e00c000c0026000000060006002000000045434f4e454c4b554e5354454e5a414b454e0000 +b76ef3940000000000000000 + +36496 +d11a00000001000000000000055f6c646170045f74637003706463065f6d73646373085669737365723031026e6c0000210001 +d11a84030001000000010000055f6c646170045f74637003706463065f6d73646373085669737365723031026e6c0000210001c02b00060001000038400036026e730f646f6d61696e2d7265676973747279c02b0a686f73746d6173746572c0420bf1e540000070800000384000278d0000003840 + +36497 +b76e73a950114462a2a60000000000000000 +b76ef3a40000000000000000 + +36498 +6b91000000010000000000000f524f4253544f5441414c47454d414b024e4c00000f0001 +6b91800000010000000200000f524f4253544f5441414c47454d414b024e4c00000f0001c00c00020001000151800011036e733107726f6b73636f6d036e657400c00c0002000100015180000e036e733207726f6b73636f6dc01c + +36499 +434500000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +434580000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +36500 +b76e73aa50104462a2a50000000000000000 +b76ef3a40000000000000000 + +36501 +ed110000000100000000000006787334616c6c026e6c00000f0001 +ed118000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +36502 +c5ad00000001000000000000046865726101780463756369026e6c0000010001 +c5ad80000001000000030003046865726101780463756369026e6c0000010001c01300020001000151800002c00cc0130002000100015180000c066865726d6573026e6cc013c01300020001000151800009066865726d6573c011c00c00010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +36503 +2ddd00000001000000000000066865726d657301780463756369026e6c0000010001 +2ddd80000001000000030003066865726d657301780463756369026e6c0000010001c015000200010001518000070468657261c013c0150002000100015180000c066865726d6573026e6cc015c01500020001000151800002c00cc02e00010001000151800004d47d8001c04100010001000151800004c143ef02c00c00010001000151800004d47d8002 + +36504 +aaa200000001000000000000036e733107626265796f6e64026e6c00001c0001 +aaa280000001000000020002036e733107626265796f6e64026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +36505 +540e00000001000000000000036e733107626265796f6e64026e6c0000260001 +540e80000001000000020002036e733107626265796f6e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +36506 +2d9800000001000000000000036e733207626265796f6e64026e6c00001c0001 +2d9880000001000000020002036e733207626265796f6e64026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +36507 +a54800000001000000000000036e733207626265796f6e64026e6c0000260001 +a54880000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +36508 +0e5200000001000000000000037777770a766f726d6f706d616174026e6c0000010001 +0e5280000001000000020002037777770a766f726d6f706d616174026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +36509 +364b0000000100000000000003777777056d6b2d6974026e6c0000010001 +364b8000000100000002000203777777056d6b2d6974026e6c0000010001c01000020001000151800013036e73310c706f77657273657276657235c016c01000020001000151800006036e7332c02ec02a0001000100015180000451047432c0490001000100015180000451047433 + +36510 +9ede00000001000000000000046e733032066368656c6c6f026e6c0000010001 +9ede80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36511 +aecc00000001000000000000046e733032066368656c6c6f026e6c00001c0001 +aecc80000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +36512 +68f8000000010000000000000377777706736578776562026e6c0000010001 +68f8800000010000000200020377777706736578776562026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +36513 +a80a00000001000000000000036e7331046e732d31026e6c00001c0001 +a80a80000001000000020002036e7331046e732d31026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045045a0cdc03700010001000151800004d4cceec8 + +36514 +c43f00000001000000000000036e7332046e732d31026e6c00001c0001 +c43f80000001000000020002036e7332046e732d31026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc029000100010001518000045045a0cdc00c00010001000151800004d4cceec8 + +36515 +b370000000010000000000000c737765646973686d61746368026e6c00001c0001 +b370800000010000000200000c737765646973686d61746368026e6c00001c0001c00c00020001000151800015026e730d646f6d61696e6e6574776f726b02736500c00c00020001000151800006036e7332c030 + +36516 +1f7100000001000000000000036f6e76026e6c00000f0001 +1f7180000001000000020000036f6e76026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +36517 +45e400000001000000000000036e733107626265796f6e64026e6c0000010001 +45e480000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +36518 +5aca000000010000000000000a7665626f2d6265746f6e026e6c0000ff0001 +5aca800000010000000200000a7665626f2d6265746f6e026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +36519 +f75d0000000100000000000003777777087363726970746965026e6c0000010001 +f75d8000000100000002000203777777087363726970746965026e6c0000010001c01000020001000151800009036e7331026973c019c01000020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +36520 +8f8700000001000000000000066d6179706f70026e6c00000f0001 +8f8784030001000000010000066d6179706f70026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +36521 +4cce00000001000000000000037777770b676c65756664696572656e026e6c0000010001 +4cce80000001000000030003037777770b676c65756664696572656e026e6c0000010001c010000200010001518000120465736d650a6372797374616c2d6974c01cc010000200010001518000080576696d6573c035c0100002000100015180000805636f6c6f6ec035c03000010001000151800004d5c9a602c04e00010001000151800004d5c9a603c06200010001000151800004d53ddd3c + +36522 +827b00000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +827b80000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +36523 +3b5c00000001000000000000096c6965646d65696572026e6c0000020001 +3b5c80000001000000020002096c6965646d65696572026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +36524 +a6ce00000001000000000000046d61696c0477656233026e6c0000010001 +a6ce80000001000000020002046d61696c0477656233026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02a00010001000151800004d436240ec03c00010001000151800004c2b262ef + +36525 +dd5e00000001000000000000046e73303105636f64696d026e6c0000010001 +dd5e80000001000000020002046e73303105636f64696d026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004d5f73004c03900010001000151800004d43d46c7 + +36526 +774d00000001000000000000046e73303205636f64696d026e6c0000010001 +774d80000001000000020002046e73303205636f64696d026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02b00010001000151800004d5f73004c00c00010001000151800004d43d46c7 + +36527 +d98100000001000000000000046e73303105636f64696d026e6c0000260001 +d98180000001000000020002046e73303105636f64696d026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004d5f73004c03900010001000151800004d43d46c7 + +36528 +144f00000001000000000000046e73303205636f64696d026e6c0000260001 +144f80000001000000020002046e73303205636f64696d026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02b00010001000151800004d5f73004c00c00010001000151800004d43d46c7 + +36529 +ef560000000100000000000003777777087072656e6174616c026e6c0000010001 +ef568000000100000003000303777777087072656e6174616c026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c3f13ceec04900010001000151800004c372eb43c05b000100010001518000043e320e8f + +36530 +140e00100001000000000001036e7331086e6f766178657373026e6c00000100010000290800000000000000 +140e80000001000000030004036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +36531 +285b00000001000000000000037777770a686f6e64656e6c616e64026e6c0000010001 +285b80000001000000020002037777770a686f6e64656e6c616e64026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01bc01000020001000151800006036e7332c033c02f00010001000151800004c3454b03c04b00010001000151800004d119a2fa + +36532 +8468000000010000000000000a7477656e7465626f7267026e6c00001c0001 +8468800000010000000200020a7477656e7465626f7267026e6c00001c0001c00c0002000100015180000f036e733108696e74726f776562c017c00c00020001000151800006036e7332c02fc02b0001000100015180000450416028c04600010001000151800004c356780c + +36533 +8a0700100001000000000001036e7331086e6f766178657373026e6c00002600010000290800000000000000 +8a0780000001000000030004036e7331086e6f766178657373026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +36534 +941000100001000000000001036e7332086e6f766178657373026e6c00000100010000290800000000000000 +941080000001000000030004036e7332086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +36535 +257c00100001000000000001036e7332086e6f766178657373026e6c00002600010000290800000000000000 +257c80000001000000030004036e7332086e6f766178657373026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c260000291000000000000000 + +36536 +12be00100001000000000001036e7333086e6f766178657373026e6c00000100010000290800000000000000 +12be80000001000000030004036e7333086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d5c98015c03f00010001000151800004d5c9bf12c00c00010001000151800004d5ef9c260000291000000000000000 + +36537 +095f00100001000000000001036e7333086e6f766178657373026e6c00002600010000290800000000000000 +095f80000001000000030004036e7333086e6f766178657373026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d5c98015c03f00010001000151800004d5c9bf12c00c00010001000151800004d5ef9c260000291000000000000000 + +36538 +1cfb0000000100000000000009652d6c756e61746963026e6c0000010001 +1cfb8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36539 +352e0000000100000000000009652d6c756e61746963026e6c0000010001 +352e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36540 +8fd000100001000000000001036e733104686f6d65026e6c00000100010000290800000000000000 +8fd080000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +36541 +c53600000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000260001 +c53680000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +36542 +fb2c00000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c0000260001 +fb2c80000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36543 +32d400000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000260001 +32d480000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36544 +4f96000000010000000000000c6c6965666465696e686f7574026e6c0000020001 +4f96800000010000000200020c6c6965666465696e686f7574026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +36545 +2dca0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2dca8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36546 +a02f00000001000000000000086d656469616c6162026e6c00001c0001 +a02f80000001000000020001086d656469616c6162026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02900010001000151800004c1ad4e02 + +36547 +63d300000001000000000000056e656d6573026e6c00000f0001 +63d380000001000000020002056e656d6573026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c012c00c00020001000151800006036e7332c02ac0260001000100015180000450416028c04100010001000151800004c356780c + +36548 +6499000000010000000000000f736f6e696373706172657061727473026e6c00000f0001 +6499800000010000000200000f736f6e696373706172657061727473026e6c00000f0001c00c0002000100015180001408726564697265637405706172636303636f6d00c00c0002000100015180001404646e73320974656c617669737461036e657400 + +36549 +c0640000000100000000000003627361026e6c0000ff0001 +c0648000000100000002000003627361026e6c0000ff0001c00c00020001000151800010036e733106736563757265036e657400c00c00020001000151800006036e7332c028 + +36550 +83f10000000100000000000003777777117469736d6177616a6577656e6462616e64026e6c0000010001 +83f18000000100000002000203777777117469736d6177616a6577656e6462616e64026e6c0000010001c01000020001000151800012036e73310b6661737473657276657234c022c01000020001000151800006036e7332c03ac0360001000100015180000442a4f39ac0540001000100015180000442a4f3a3 + +36551 +6a010000000100000000000005646e732d32056c61646f74026e6c0000010001 +6a018000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36552 +8ef10000000100000000000008626c6f656d6e6574026e6c00000f0001 +8ef18000000100000002000208626c6f656d6e6574026e6c00000f0001c00c0002000100015180000f036e733108636f6d707574656cc015c00c00020001000151800006036e7332c02dc02900010001000151800004c3568680c04400010001000151800004c3568681 + +36553 +eb0900000001000000000000086d63677265676f72026e6c00001c0001 +eb0980000001000000020001086d63677265676f72026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +36554 +bd5e000000010000000000000379786b026e6c00000f0001 +bd5e800000010000000300000379786b026e6c00000f0001c00c00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028 + +36555 +b12300000001000000000000037777770872656e7461636172026e6c0000010001 +b12380000001000000020000037777770872656e7461636172026e6c0000010001c0100002000100015180000d026e7307706167656e6963c019c01000020001000151800006036e7332c030 + +36556 +d6f40000000100000000000004777777310a62616e6e6572746a6573026e6c0000010001 +d6f48000000100000002000004777777310a62616e6e6572746a6573026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c033 + +36557 +847900000001000000000000037777770f70636d7374617469737469656b656e026e6c0000010001 +847980000001000000020002037777770f70636d7374617469737469656b656e026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c020c01000020001000151800006036e7332c037c03400010001000151800004d9aa2042c04d00010001000151800004d9aa2c06 + +36558 +713c00000001000000000000024e53087261626f62616e6b026e6c00001c0001 +713c80000001000000020001024e53087261626f62616e6b026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +36559 +03b600000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03b680000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +36560 +3b6b00000001000000000000036e73340767617574656e67026e6c0000010001 +3b6b80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36561 +dbb100000001000000000000086b69746573757266026e6c00000f0001 +dbb180000001000000020000086b69746573757266026e6c00000f0001c00c00020001000151800014026e730b736d617274736572766572036e657400c00c00020001000151800006036e7332c02c + +36562 +6001000000010000000000000777616e61646f6f026e6c00000f0001 +6001800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +36563 +be450000000100000000000003777777066a6f626e6574026e6c0000010001 +be458000000100000002000203777777066a6f626e6574026e6c0000010001c0100002000100015180000b036e733104696e666fc017c01000020001000151800006036e7332c02fc02b00010001000151800004504fc020c04200010001000151800004504fc021 + +36564 +82c000000001000000000000036e733303777873026e6c0000010001 +82c080000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36565 +41c900000001000000000000036e7331086e6f766178657373026e6c0000010001 +41c980000001000000030003036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +36566 +b13b00000001000000000000036e7331086e6f766178657373026e6c0000260001 +b13b80000001000000030003036e7331086e6f766178657373026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +36567 +e09500000001000000000000036e733503777873026e6c0000010001 +e09580000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36568 +687f00000001000000000000036e7332086e6f766178657373026e6c0000010001 +687f80000001000000030003036e7332086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +36569 +587d00000001000000000000036e7332086e6f766178657373026e6c0000260001 +587d80000001000000030003036e7332086e6f766178657373026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +36570 +775400000001000000000000036e7333086e6f766178657373026e6c0000010001 +775480000001000000030003036e7333086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d5c98015c03f00010001000151800004d5c9bf12c00c00010001000151800004d5ef9c26 + +36571 +3baa00000001000000000000036e7333086e6f766178657373026e6c0000260001 +3baa80000001000000030003036e7333086e6f766178657373026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d5c98015c03f00010001000151800004d5c9bf12c00c00010001000151800004d5ef9c26 + +36572 +a52c00000001000000000000037777770b6465706f6d7061646f7572026e6c0000010001 +a52c80000001000000030001037777770b6465706f6d7061646f7572026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +36573 +9c8400000001000000000000086f6d726f70667279066e7434616c6c026e6c0000010001 +9c8480000001000000020002086f6d726f70667279066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +36574 +cc6a00000001000000000000046d61696c03617372024e4c0000010001 +cc6a80000001000000020000046d61696c03617372024e4c0000010001c01100020001000151800015036e73310b656e65726769732d696463036e657400c01100020001000151800006036e7332c02d + +36575 +a428000000010000000000000570657472690c706c61736d6161727261616b026e6c0000010001 +a428800000010000000200020570657472690c706c61736d6161727261616b026e6c0000010001c01200020001000151800009036e733102696fc01fc01200020001000151800006036e7332c037c0330001000100015180000451112102c0480001000100015180000451112202 + +36576 +e35b00000001000000000000036e733109736974656279746573026e6c0000010001 +e35b80000001000000030003036e733109736974656279746573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c2a55e5ac03c00010001000151800004c356781cc04e000100010001518000043ec58016 + +36577 +155b0000000100000000000006696e697a696f026e6c0000010001 +155b8000000100000002000006696e697a696f026e6c0000010001c00c0002000100015180000e036e73310464646e68036e657400c00c00020001000151800006036e7332c02b + +36578 +3518000000010000000000000f696e666f726d617469656b616d6572026e6c00000f0001 +3518800000010000000200020f696e666f726d617469656b616d6572026e6c00000f0001c00c0002000100015180000a036e7331036e7873c01cc00c00020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +36579 +806800000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +806880000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +36580 +45c800000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +45c880000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36581 +1e2000000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +1e2080000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36582 +1a620000000100000000000003777777066e6179757461026e6c0000010001 +1a628000000100000002000203777777066e6179757461026e6c0000010001c01000020001000151800006036e7336c010c01000020001000151800006036e7335c010c02b0001000100015180000451144410c03d000100010001518000043dd5ab66 + +36583 +473900000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +473980000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +36584 +c7e800000001000000000000036e733104686f6d65026e6c0000010001 +c7e880000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +36585 +01c9000000010000000000000a636974726f656e616972026e6c00000f0001c0 +01c9800000010000000300020a636974726f656e616972026e6c00000f0001c00c0002000100015180000f036e7331086d6f76656e657874c017c00c00020001000151800006036e7332c02fc00c00020001000151800012036e7333086d6f76656e657874036e657400c02b00010001000151800004d4ccc445c04600010001000151800004d4ccf745 + +36586 +735e00000001000000000000036e73300873757265686f7374026e6c0000010001 +735e80000001000000020002036e73300873757265686f7374026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c019c01000020001000151800006036e7331c031c02d00010001000151800004c3eaad40c04700010001000151800004c3eaad41 + +36587 +809500000001000000000000036e73310873757265686f7374026e6c0000010001 +809580000001000000020002036e73310873757265686f7374026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c019c01000020001000151800006036e7331c031c02d00010001000151800004c3eaad40c04700010001000151800004c3eaad41 + +36588 +82b3000000010000000000000474736d730f72656d6f74652d6469656e7374656e026e6c00001c0001 +82b3800000010000000200020474736d730f72656d6f74652d6469656e7374656e026e6c00001c0001c01100020001000151800012036e73310b7669616e6574776f726b73c021c01100020001000151800006036e7332c039c03500010001000151800004d43d0f08c05300010001000151800004d43d19e2 + +36589 +29f500000001000000000000026e7306787334616c6c026e6c0000010001 +29f580000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +36590 +b8d400000001000000000000036e733206787334616c6c026e6c0000010001 +b8d480000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +36591 +fd1300000001000000000000086e732d69736d30310963617067656d696e69026e6c0000010001 +fd1380000001000000030003086e732d69736d30310963617067656d696e69026e6c0000010001c01500020001000151800007046e736531c015c01500020001000151800007046e736532c015c01500020001000151800002c00cc03300010001000151800004c6b8e70dc04600010001000151800004c6b8e70cc00c00010001000151800004d5f4a024 + +36592 +9f8900100001000000000001076e696b68656668066e696b686566026e6c00000100010000290800000080000000 +9f8980000001000000040003076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c7040000291000000000000000 + +36593 +d5030000000100000000000005646e732d31056c61646f74026e6c0000010001 +d5038000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36594 +47bb0000000100000000000005646e732d32056c61646f74026e6c0000010001 +47bb8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36595 +f970000000010000000000001276656e656d61636f6d6d756e696361746965026e6c00000f0001 +f970800000010000000200001276656e656d61636f6d6d756e696361746965026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c03a + +36596 +01a5000000010000000000001276656e656d61636f6d6d756e696361746965026e6c00000f0001 +01a5800000010000000200001276656e656d61636f6d6d756e696361746965026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c03a + +36597 +646f00000001000000000000046d61696c06692d7265616c026e6c0000010001 +646f80000001000000020000046d61696c06692d7265616c026e6c0000010001c0110002000100015180001806706c75746f320b706c617a612d696e746572036e657400c01100020001000151800009066465696d6f73c033 + +36598 +a14f00000001000000000000037777771061646479636f7273746961656e73656e026e6c0000010001 +a14f80000001000000030001037777771061646479636f7273746961656e73656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc021c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c053c035000100010001518000043efa0202 + +36599 +90a700000001000000000000066772656e636f026e6c00000f0001 +90a780000001000000020000066772656e636f026e6c00000f0001c00c0002000100015180001404646e7331096c70636f6e73756c74036e657400c00c0002000100015180000704646e7332c02c + +36600 +5450000000010000000000000b6d61696c72656c6179683103636273026e6c0000010001 +5450800000010000000300020b6d61696c72656c6179683103636273026e6c0000010001c0180002000100015180000805646e736831c018c0180002000100015180000805646e736832c018c0180002000100015180000b026e73026e6c036e657400c03000010001000151800004c1acf4ccc04400010001000151800004c1acf4cd + +36601 +c1ce0000000100000000000003777777076d797374617473026e6c0000010001 +c1ce8000000100000002000203777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +36602 +c3cb00000001000000000000034e533205414d415a45024e4c0000010001 +c3cb80000001000000020002034e533205414d415a45024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004c26d6d05c00c00010001000151800004d4ccc0f2 + +36603 +0fd200000001000000000000024e5305414d415a45024e4c0000010001 +0fd280000001000000020002024e5305414d415a45024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c26d6d05c03700010001000151800004d4ccc0f2 + +36604 +569200000001000000000000024e5305414d415a45024e4c00001c0001 +569280000001000000020002024e5305414d415a45024e4c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004c26d6d05c03700010001000151800004d4ccc0f2 + +36605 +b9e4000000010000000000000776657273696f6e0462696e640000100003 +b9e4800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +36606 +0dcd0000000100000000000002383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +0dcd8000000100000002000202383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +36607 +87f80000000100000000000004777777320974656c656772616166026e6c0000010001 +87f88000000100000002000004777777320974656c656772616166026e6c0000010001c01100020001000151800013036e73300974656c656772616166036e657400c01100020001000151800006036e7331c033 + +36608 +b612000000010000000000000377777709717569636b626f7973026e6c0000010001 +b612800000010000000200000377777709717569636b626f7973026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01ac0100002000100015180000704686e7331c033 + +36609 +db6100000001000000000000037777770667612c657273026e6c0000010001 +db6184030001000000010000037777770667612c657273026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +36610 +e36200000001000000000000037777770b646972656374776f6e656e026e6c0000010001 +e36280000001000000020000037777770b646972656374776f6e656e026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec037 + +36611 +938e00000001000000000000036e73310b776f726c646f6e6c696e65026e6c0000010001 +938e80000001000000030002036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +36612 +975100000001000000000000036e7331096e65746e6174696f6e026e6c0000010001 +975180000001000000020002036e7331096e65746e6174696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb105c03c00010001000151800004505faa0a + +36613 +f68300000001000000000000036e7331096e65746e6174696f6e026e6c0000260001 +f68380000001000000020002036e7331096e65746e6174696f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb105c03c00010001000151800004505faa0a + +36614 +f2cc00000001000000000000036e7332096e65746e6174696f6e026e6c0000010001 +f2cc80000001000000020002036e7332096e65746e6174696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5efb105c00c00010001000151800004505faa0a + +36615 +796600000001000000000000036e7332096e65746e6174696f6e026e6c0000260001 +796680000001000000020002036e7332096e65746e6174696f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5efb105c00c00010001000151800004505faa0a + +36616 +049b00000001000000000000076e696b68656668066e696b686566026e6c0000010001 +049b80000001000000040002076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c704 + +36617 +751200000001000000000000046d61696c0b6b61617274656e68756973026e6c0000010001 +751280000001000000030003046d61696c0b6b61617274656e68756973026e6c0000010001c01100020001000151800009036e7331027a73c01dc01100020001000151800006036e7332c035c01100020001000151800006036e7333c035c03100010001000151800004d5ef829fc04600010001000151800004d5ef8005c05800010001000151800004d5ef82a0 + +36618 +101d000000010000000000000377777709736178747261646572026e6c0000010001 +101d800000010000000200020377777709736178747261646572026e6c0000010001c01000020001000151800009036e7331026973c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5852102c04300010001000151800004d5c41503 + +36619 +7af2000000010000000000000377777706736f70686f73026e6c0000010001 +7af2800000010000000300010377777706736f70686f73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +36620 +330500000001000000000000036e733503777873026e6c0000010001 +330580000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36621 +5b7f000000010000000000000474657374086d61696c73657276026e6c0000010001 +5b7f800000010000000200020474657374086d61696c73657276026e6c0000010001c0110002000100015180000c026e73067574722d6978c01ac01100020001000151800006036e7332c031c02e0001000100015180000451113206c04600010001000151800004d5c42806 + +36622 +591b00000001000000000000036e73320b636f6e766f6c7574696f6e026e6c0000010001 +591b80000001000000020002036e73320b636f6e766f6c7574696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d9477a29c00c00010001000151800004d9477a2a + +36623 +b6e000000001000000000000036e73310b636f6e766f6c7574696f6e026e6c0000010001 +b6e080000001000000020002036e73310b636f6e766f6c7574696f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9477a29c03e00010001000151800004d9477a2a + +36624 +ddae0000000100000000000003777777136f7665726865696473696e666f726d61746965026e6c0000010001 +ddae8000000100000002000203777777136f7665726865696473696e666f726d61746965026e6c0000010001c0100002000100015180000a036e733303736475c024c01000020001000151800013036e73320c636f6c742d74656c65636f6dc024c03800010001000151800004d5d0ce07c04e00010001000151800004d44ea00e + +36625 +2db20000000100000000000003777777136f7665726865696473696e666f726d61746965026e6c0000010001 +2db28000000100000002000203777777136f7665726865696473696e666f726d61746965026e6c0000010001c0100002000100015180000a036e733303736475c024c01000020001000151800013036e73320c636f6c742d74656c65636f6dc024c03800010001000151800004d5d0ce07c04e00010001000151800004d44ea00e + +36626 +f8bd0000000100000000000007676568616d6965026e6c0000010001 +f8bd8000000100000002000007676568616d6965026e6c0000010001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c02b + +36627 +7ec60000000100000000000004646e733208636f6e6365707473026e6c0000010001 +7ec68000000100000002000204646e733208636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac01100020001000151800002c00cc02e00010001000151800004d5c51c03c00c00010001000151800004d5c51e1c + +36628 +c6720000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c6728000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36629 +4b640000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +4b648000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36630 +481200000001000000000000037777770867737866636c7562026e6c0000010001 +481280000001000000020000037777770867737866636c7562026e6c0000010001c0100002000100015180000c026e7306766576696461c019c01000020001000151800006036e7332c030 + +36631 +b63600000001000000000000036e733106776964657873026e6c0000010001 +b63680000001000000030002036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +36632 +bffe00000001000000000000037777770b6b6f7274696e6773626f6e026e6c0000010001 +bffe80000001000000020002037777770b6b6f7274696e6773626f6e026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c01cc01000020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +36633 +7b2a00000001000000000000046c6f6e74026e6c0000010001 +7b2a80000001000000020000046c6f6e74026e6c0000010001c00c00020001000151800017036e73310d6373732d6970636f6e6e65637403636f6d00c00c00020001000151800006036e7332c029 + +36634 +7db2000000010000000000000377777705676f6f6c65026e6c0000010001 +7db2800000010000000200020377777705676f6f6c65026e6c0000010001c0100002000100015180000e04646e7331066d706f776572c016c0100002000100015180000704646e7332c02fc02a00010001000151800004d5efb106c04400010001000151800004505faa55 + +36635 +8bfc0000000100000000000003636273026e6c00000f0001 +8bfc8000000100000003000203636273026e6c00000f0001c00c0002000100015180000805646e736831c00cc00c0002000100015180000805646e736832c00cc00c0002000100015180000b026e73026e6c036e657400c02400010001000151800004c1acf4ccc03800010001000151800004c1acf4cd + +36636 +068200000001000000000000026e7306766576696461026e6c0000010001 +068280000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +36637 +834100000001000000000000026e7306766576696461026e6c0000260001 +834180000001000000030002026e7306766576696461026e6c0000260001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +36638 +698100000001000000000000036e733206766576696461026e6c0000010001 +698180000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +36639 +21c300000001000000000000046d61696c05706c616e74026e6c00001c0001 +21c380000001000000020002046d61696c05706c616e74026e6c00001c0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02b00010001000151800004d59f0037c03c00010001000151800004d59f0046 + +36640 +319d00000001000000000000046d61696c05706c616e74026e6c0000260001 +319d80000001000000020002046d61696c05706c616e74026e6c0000260001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02b00010001000151800004d59f0037c03c00010001000151800004d59f0046 + +36641 +5e8800000001000000000000036e733206766576696461026e6c0000260001 +5e8880000001000000030002036e733206766576696461026e6c0000260001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +36642 +74be00000001000000000000037777770b706f73747374656d70656c026e6c0000010001 +74be80000001000000030000037777770b706f73747374656d70656c026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733032c035c01000020001000151800007046e733033c035 + +36643 +279b000000010000000000000a736f2d73747564696f73026e6c00000f0001 +279b800000010000000200000a736f2d73747564696f73026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c032 + +36644 +8ded00000001000000000000037777771162616467617374656e746f65726e6f6f69026e6c0000010001 +8ded80000001000000020000037777771162616467617374656e746f65726e6f6f69026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03c + +36645 +f62200000001000000000000046578706f0474657261026e6c0000010001 +f62280000001000000030002046578706f0474657261026e6c0000010001c0110002000100015180000d036e733106776964657873c016c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +36646 +443200000001000000000000036d736e09747765616b7a6f6e65026e6c0000010001 +443280000001000000020000036d736e09747765616b7a6f6e65026e6c0000010001c01000020001000151800014036e73310a646f6c7068696e2d6973036e657400c01000020001000151800006036e7332c032 + +36647 +36f6000000010000000000000977696e6b656c616172026e6c00000f0001 +36f6800000010000000200010977696e6b656c616172026e6c00000f0001c00c00020001000151800009026e73036e6667c016c00c0002000100015180000d036e733306636f62776562c016c02a00010001000151800004c26dd603 + +36648 +a4470000000100000000000005646e732d31056c61646f74026e6c0000010001 +a4478000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36649 +b2bc0000000100000000000004686f6d6f026e6c00000f0001 +b2bc8000000100000002000004686f6d6f026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c028 + +36650 +a92e000000010000000000000b646f6e676572616465656c026e6c00000f0001 +a92e800000010000000200020b646f6e676572616465656c026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c018c00c00020001000151800006036e7331c02fc02c00010001000151800004504f6101c04600010001000151800004504f6102 + +36651 +f147000000010000000000000c6175746f626f726465617578026e6c0000010001 +f147800000010000000200020c6175746f626f726465617578026e6c0000010001c00c00020001000151800018036e7331116275696a7a65776562746563686e69656bc019c00c00020001000151800006036e7332c031c02d0001000100015180000450f7c551c0510001000100015180000450f7c558 + +36652 +f05800000001000000000000036e7331116275696a7a65776562746563686e69656b026e6c00001c0001 +f05880000001000000020002036e7331116275696a7a65776562746563686e69656b026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450f7c551c0440001000100015180000450f7c558 + +36653 +3cd000000001000000000000036e7331116275696a7a65776562746563686e69656b026e6c0000260001 +3cd080000001000000020002036e7331116275696a7a65776562746563686e69656b026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450f7c551c0440001000100015180000450f7c558 + +36654 +e2ce00000001000000000000036e7332116275696a7a65776562746563686e69656b026e6c00001c0001 +e2ce80000001000000020002036e7332116275696a7a65776562746563686e69656b026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0360001000100015180000450f7c551c00c0001000100015180000450f7c558 + +36655 +533e00000001000000000000036e7332116275696a7a65776562746563686e69656b026e6c0000260001 +533e80000001000000020002036e7332116275696a7a65776562746563686e69656b026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0360001000100015180000450f7c551c00c0001000100015180000450f7c558 + +36656 +206400000001000000000000037777770f6e61747575726c696a6b6e61616b74026e6c0000010001 +206480000001000000030003037777770f6e61747575726c696a6b6e61616b74026e6c0000010001c01000020001000151800010036e733109736974656279746573c020c01000020001000151800006036e7332c038c01000020001000151800006036e7333c038c03400010001000151800004c2a55e5ac05000010001000151800004c356781cc062000100010001518000043ec58016 + +36657 +b9e90000000100000000000003777777076a6f6a612d736d026e6c0000010001 +b9e98000000100000002000203777777076a6f6a612d736d026e6c0000010001c01000020001000151800012036e73310b737461727464657369676ec018c01000020001000151800006036e7332c030c02c00010001000151800004d5f73823c04a000100010001518000043ed45149 + +36658 +199e000000010000000000000477777732047a6f656b026e6c0000010001 +199e800000010000000200020477777732047a6f656b026e6c0000010001c0110002000100015180000d026e73076e65746c616e64c016c01100020001000151800006036e7332c02dc02a00010001000151800004d9aa2042c04300010001000151800004d9aa2c06 + +36659 +ecfc000000010000000000000868756d616e6e6574026e6c0000010001 +ecfc800000010000000200000868756d616e6e6574026e6c0000010001c00c00020001000151800016036e73310c656967656e2d646f6d65696e036e657400c00c00020001000151800006036e7332c02d + +36660 +c83700000001000000000000037777771067726166697363687765656b626c6164026e6c0000010001 +c83780000001000000020000037777771067726166697363687765656b626c6164026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c03c + +36661 +33b200000001000000000000036d783104696e666f026e6c0000010001 +33b280000001000000020002036d783104696e666f026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02900010001000151800004504fc020c03b00010001000151800004504fc021 + +36662 +67ad00000001000000000000036e7332076e656473746174026e6c0000010001 +67ad80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36663 +d53400000001000000000000036e7334076e656473746174026e6c0000010001 +d53480000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36664 +6b8a000000010000000000000377777709746563686e69636f6e026e6c0000010001 +6b8a800000010000000200020377777709746563686e69636f6e026e6c0000010001c01000020001000151800010026e730a666c7569746d65646961c01ac01000020001000151800006036e7332c031c02e0001000100015180000451045c78c04a0001000100015180000451046032 + +36665 +d7b1000000010000000000000776697a7a617669026e6c0000ff0001 +d7b1800000010000000300010776697a7a617669026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c00c00020001000151800007046e733038c03ec028000100010001518000043e48df58 + +36666 +1bca00000001000000000000037777770d6765696c6573747564656e7465026e6c0000010001 +1bca80000001000000020000037777770d6765696c6573747564656e7465026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +36667 +634800000001000000000000046d61696c0d636f6e646f7263617270657473026e6c0000010001 +634880000001000000020002046d61696c0d636f6e646f7263617270657473026e6c0000010001c01100020001000151800010046e736531086c6f636f736f6674c01fc0110002000100015180000d036e73320663617374656cc01fc03300010001000151800004c3238d44c04f00010001000151800004c3558245 + +36668 +129200000001000000000000036e7339056972637873026e6c0000010001 +129280000001000000020002036e7339056972637873026e6c0000010001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36669 +eb8e00000001000000000000036e7338056972637873026e6c0000010001 +eb8e80000001000000020002036e7338056972637873026e6c0000010001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36670 +74ca0000000100000000000003777777077a656b6174656c026e6c0000010001 +74ca8000000100000002000203777777077a656b6174656c026e6c0000010001c01000020001000151800010026e730a7a65656c616e646e6574c018c01000020001000151800006036e7332c02fc02c00010001000151800004d473c0c1c04800010001000151800004d473c0c3 + +36671 +74140000000100000000000006636f6e66696f026e6c0000010001 +74148000000100000003000106636f6e66696f026e6c0000010001c00c0002000100015180000d026e7307696e746f756368c013c00c00020001000151800010026e7307696e746f756368036e657400c00c00020001000151800007046e733031c043c02700010001000151800004d413c001 + +36672 +f72c28000001000000010000026e6c0000060001085f6b706173737764045f75647007686f6c70726f63026e6c000021000100000258001a0000006401d0077362733230303007686f6c70726f63026e6c00 +f72ca8040000000000000000 + +36673 +666900000001000000000000036e733206787334616c6c026e6c0000010001 +666980000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +36674 +7b8600000001000000000000036e7338056972637873026e6c00001c0001 +7b8680000001000000020002036e7338056972637873026e6c00001c0001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36675 +1dcc00000001000000000000036e7338056972637873026e6c0000260001 +1dcc80000001000000020002036e7338056972637873026e6c0000260001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36676 +e6fd00000001000000000000036e7339056972637873026e6c00001c0001 +e6fd80000001000000020002036e7339056972637873026e6c00001c0001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36677 +634f00000001000000000000036e7339056972637873026e6c0000260001 +634f80000001000000020002036e7339056972637873026e6c0000260001c01000020001000151800012036e73310b7465636874726f6e696373c016c01000020001000151800006036e7332c02ec02a0001000100015180000451ab6402c0480001000100015180000451ab6414 + +36678 +41660000000100000000000003647365026e6c00000f0001 +41668000000100000002000203647365026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +36679 +a9af00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +a9af80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +36680 +0b1b0000000100000000000004686f6d6508636f6e6365707473026e6c0000010001 +0b1b8000000100000002000204686f6d6508636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac0110002000100015180000704646e7332c011c02e00010001000151800004d5c51c03c04b00010001000151800004d5c51e1c + +36681 +5765000000010000000000000861737369676d6131096166617367726f6570026e6c0000010001 +5765800000010000000200010861737369676d6131096166617367726f6570026e6c0000010001c0150002000100015180001008696e7465726e65740461666173c01fc0150002000100015180000b026e73026e6c036e657400c03300010001000151800004c2e5dc93 + +36682 +101400000001000000000000096c6965666572696e6b026e6c0000020001 +101480000001000000020002096c6965666572696e6b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +36683 +91cf00000001000000000000037777770776616e746f6c6c026e6c0000010001 +91cf80000001000000020002037777770776616e746f6c6c026e6c0000010001c0100002000100015180000f026e7309656174736572766572c018c01000020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +36684 +84b60000000100000000000006666174696d6103646473026e6c00001c0001 +84b68000000100000003000306666174696d6103646473026e6c00001c0001c01300020001000151800017036e733110736361726c65742d696e7465726e6574c017c01300020001000151800006036e7332c02fc01300020001000151800006036e7333c02fc02b00010001000151800004d5ccc302c04e00010001000151800004d5ccc303c06000010001000151800004c277e953 + +36685 +560f0000000100000000000003777777096861707079686f6d65026e6c0000010001 +560f8000000100000003000103777777096861707079686f6d65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +36686 +a1a600000001000000000000086d6f6c627572656e026e6c00000f0001 +a1a680000001000000020002086d6f6c627572656e026e6c00000f0001c00c0002000100015180000b04646e733103706572c015c00c0002000100015180000704646e7332c02ec02900010001000151800004d55418c0c04000010001000151800004507f9842 + +36687 +791000000001000000000000037777770473696476026e6c0000010001 +791080000001000000020002037777770473696476026e6c0000010001c0100002000100015180000e026e73086d656761706c6578c015c01000020001000151800006036e7331c02cc02900010001000151800004504f6101c04300010001000151800004504f6102 + +36688 +247700000001000000000000046d61696c0f636c617564696f2d66657272696369026e6c0000010001 +247780000001000000020000046d61696c0f636c617564696f2d66657272696369026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c03b + +36689 +2a8c00000001000000000000037777770679656c6c6f77026e6c0000010001 +2a8c80000001000000030001037777770679656c6c6f77026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +36690 +4f580000000100000000000003373635026e6c00000f0001 +4f588403000100000001000003373635026e6c00000f0001c01000060001000038400036026e730f646f6d61696e2d7265676973747279c0100a686f73746d6173746572c0270bf1e540000070800000384000278d0000003840 + +36691 +0000000070024000ee6c0000020405b401010402 +000080010000000000000000 + +36692 +ef7b000000010000000000000377777707616d6174657572026e6c0000010001 +ef7b800000010000000200020377777707616d6174657572026e6c0000010001c0100002000100015180000b036e7331046e732d31c018c01000020001000151800006036e7332c030c02c000100010001518000045045a0cdc04300010001000151800004d4cceec8 + +36693 +19de00000001000000000000036e7332027575026e6c0000010001 +19de80000001000000040004036e7332027575026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c013c01000020001000151800006036e7333c010c0270001000100015180000483d30405c00c0001000100015180000483d30406c04600010001000151800004c0576a65c0600001000100015180000483d31020 + +36694 +2cc300000001000000000000076d696e62757a61026e6c0000ff0001 +2cc380000001000000020001076d696e62757a61026e6c0000ff0001c00c0002000100015180000b087374617267617465c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004d535a3d2 + +36695 +b5d100000001000000000000026e73076e656473746174026e6c00001c0001 +b5d180000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36696 +3cca00000001000000000000026e73076e656473746174026e6c0000260001 +3cca80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36697 +3ba500000001000000000000036e7332076e656473746174026e6c0000010001 +3ba580000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36698 +bc2600000001000000000000036e7332076e656473746174026e6c00001c0001 +bc2680000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36699 +2ec200000001000000000000036e7332076e656473746174026e6c0000260001 +2ec280000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36700 +67fc00000001000000000000036e7333076e656473746174026e6c00001c0001 +67fc80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36701 +c3a100000001000000000000036e7333076e656473746174026e6c0000260001 +c3a180000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36702 +47e100000001000000000000036e7334076e656473746174026e6c0000010001 +47e180000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36703 +52d300000001000000000000036e7334076e656473746174026e6c00001c0001 +52d380000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36704 +07400000000100000000000003777777087261646f70353338026e6c0000010001 +07408403000100000001000003777777087261646f70353338026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +36705 +6d6800000001000000000000036e7334076e656473746174026e6c0000260001 +6d6880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36706 +0b0b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0b0b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36707 +b77479f150104470e54a0000000000000000 +b774f9f40000000000000000 + +36708 +b77479f150184470b9b70000008d453c000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403b01d7403c535700030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053425332303030484f4c50524f430000 +b774f9f40000000000000000 + +36709 +b01300000001000000000000036e733110736361726c65742d696e7465726e6574026e6c00001c0001 +b01380000001000000030003036e733110736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ccc302c04300010001000151800004d5ccc303c05500010001000151800004c277e953 + +36710 +c93100000001000000000000036e733110736361726c65742d696e7465726e6574026e6c0000260001 +c93180000001000000030003036e733110736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ccc302c04300010001000151800004d5ccc303c05500010001000151800004c277e953 + +36711 +788500000001000000000000036e733210736361726c65742d696e7465726e6574026e6c00001c0001 +788580000001000000030003036e733210736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03500010001000151800004d5ccc302c00c00010001000151800004d5ccc303c05500010001000151800004c277e953 + +36712 +518b00000001000000000000036e733210736361726c65742d696e7465726e6574026e6c0000260001 +518b80000001000000030003036e733210736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03500010001000151800004d5ccc302c00c00010001000151800004d5ccc303c05500010001000151800004c277e953 + +36713 +87d000000001000000000000036e733310736361726c65742d696e7465726e6574026e6c00001c0001 +87d080000001000000030003036e733310736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03500010001000151800004d5ccc302c04700010001000151800004d5ccc303c00c00010001000151800004c277e953 + +36714 +ab4700000001000000000000036e733310736361726c65742d696e7465726e6574026e6c0000260001 +ab4780000001000000030003036e733310736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03500010001000151800004d5ccc302c04700010001000151800004d5ccc303c00c00010001000151800004c277e953 + +36715 +be3f000000010000000000000c47454c4445524d414c53454e0867656d65656e74650c67656c6465726d616c73656e026e6c0000010001 +be3f800000010000000200020c47454c4445524d414c53454e0867656d65656e74650c67656c6465726d616c73656e026e6c0000010001c02200020001000151800005026e73c022c02200020001000151800006036e7332c022c04300010001000151800004c143b9b5c05400010001000151800004c143b9b6 + +36716 +05870000000100000000000003777777127676767363686965726d6f6e6e696b6f6f67026e6c0000010001 +05878000000100000002000203777777127676767363686965726d6f6e6e696b6f6f67026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec023c01000020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +36717 +04f700000001000000000000036e733203617474026e6c0000010001 +04f780000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +36718 +b77479ff50114462e4ba0000000000000000 +b774f9f40000000000000000 + +36719 +23b500000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000010001 +23b580000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +36720 +7b020000000100000000000006667265656572026e6c00000f0001 +7b028403000100000001000006667265656572026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +36721 +35800000000100000000000009652d6c756e61746963026e6c0000010001 +35808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36722 +7a6d00000001000000000000036e73310a77696e6465736865696d026e6c0000260001 +7a6d80000001000000020002036e73310a77696e6465736865696d026e6c0000260001c01000020001000151800002c00cc0100002000100015180000e036e733207737572666e6574c01bc00c00010001000151800004912ce410c03d00010001000151800004c0572402 + +36723 +db410000000100000000000006686162756661026e6c00000f0001 +db418000000100000002000006686162756661026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c032 + +36724 +3635000000010000000000000f7a657a696a6e6f6f6b6c656c696a6b026e6c0000010001 +3635840300010000000100000f7a657a696a6e6f6f6b6c656c696a6b026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +36725 +b7747a0050104462e4b90000000000000000 +b774fa040000000000000000 + +36726 +8c750000000100000000000007726f6f6d706f74026e6c0000010001 +8c758000000100000002000007726f6f6d706f74026e6c0000010001c00c00020001000151800010026e730a696275696c64696e6773c014c00c0002000100015180000b026e73026e6c036e657400 + +36727 +b9b700000001000000000000037777770b6e6577706f7274626c7565026e6c0000010001 +b9b780000001000000020000037777770b6e6577706f7274626c7565026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +36728 +218200000001000000000000037777770e6d6161736c616e64626568656572026e6c0000010001 +218280000001000000030000037777770e6d6161736c616e64626568656572026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c037c01000020001000151800006036e7333c037 + +36729 +00ce00000001000000000000037777770d6765626f6f7274656b61617274026e6c0000010001 +00ce80000001000000020002037777770d6765626f6f7274656b61617274026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +36730 +36e400000001000000000000026e73076e65746c616e64026e6c0000010001 +36e480000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +36731 +14cb00000001000000000000026e730a696275696c64696e6773026e6c0000010001 +14cb80000001000000030002026e730a696275696c64696e6773026e6c0000010001c00f0002000100015180000d036e733106776964657873c01ac00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +36732 +146800000001000000000000026e730a696275696c64696e6773026e6c0000260001 +146880000001000000030002026e730a696275696c64696e6773026e6c0000260001c00f0002000100015180000d036e733106776964657873c01ac00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +36733 +75550000000100000000000005646e732d31056c61646f74026e6c0000010001 +75558000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36734 +1cec0000000100000000000005646e732d32056c61646f74026e6c0000010001 +1cec8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36735 +337200000001000000000000036e73340767617574656e67026e6c0000010001 +337280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36736 +137e00000001000000000000036e73340767617574656e67026e6c0000010001 +137e80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36737 +be9900000001000000000000066a6f73687561076265616e2d6974026e6c00000f0001 +be9980000001000000020002066a6f73687561076265616e2d6974026e6c00000f0001c0130002000100015180000c036e7331056e6574636fc01bc01300020001000151800006036e7332c033c02f00010001000151800004c26d4a82c04700010001000151800004c26dd146 + +36738 +0e240000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0e248000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36739 +1f80000000010000000000000734657665727931026e6c00000f0001 +1f80800000010000000200010734657665727931026e6c00000f0001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +36740 +7e9400000001000000000000037777770c6265747465726265676f6f64026e6c0000010001 +7e9480000001000000020002037777770c6265747465726265676f6f64026e6c0000010001c0100002000100015180000d026e730773616d686f7564c01dc0100002000100015180000b036e73610462797465c01dc03100010001000151800004d5c98963c04a00010001000151800004d977e520 + +36741 +799a00000001000000000000036e73330568616c6d61026e6c0000010001 +799a80000001000000020002036e73330568616c6d61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02a00010001000151800004d4ccd1f1c03c00010001000151800004d4ccd1fa + +36742 +9e6800000001000000000000037777770766726565736578026e6c0000010001 +9e6880000001000000020000037777770766726565736578026e6c0000010001c01000020001000151800009036e7331023161c018c01000020001000151800006036e7332c030 + +36743 +e8d90000000100000000000104706f7032076575726f6e6574026e6c00000100010000291000000000000000 +e8d98000000100000002000204706f7032076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c28600430000291000000000000000 + +36744 +745e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +745e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36745 +52fc00000001000000000000037777770774726962696f6e026e6c0000010001 +52fc80000001000000020002037777770774726962696f6e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec018c01000020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +36746 +81e5000000010000000000000a6970353033636339343605737065656406706c616e6574026e6c00000f0001 +81e5800000010000000300030a6970353033636339343605737065656406706c616e6574026e6c00000f0001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +36747 +8f1000000001000000000000037777770d72656164657273646967657374026e6c0000010001 +8f1080000001000000020000037777770d72656164657273646967657374026e6c0000010001c0100002000100015180000c036e723405692d702d64c01ec01000020001000151800006036e7236c036 + +36748 +3b8e000000010000000000000565706f6e61026e6c00000f0001 +3b8e800000010000000200020565706f6e61026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +36749 +491900000001000000000000037777770a63656e747265686f6c64026e6c0000010001 +491980000001000000020002037777770a63656e747265686f6c64026e6c0000010001c0100002000100015180001104646e733109696e7465726f757465c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d4173f3ec04c00010001000151800004d4173f3d + +36750 +296e00000001000000000000036e73310b6368616d69646d65646961026e6c0000010001 +296e80000001000000020002036e73310b6368616d69646d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c0453fc03e0001000100015180000452c04540 + +36751 +ba7400000001000000000000036e73320b6368616d69646d65646961026e6c0000010001 +ba7480000001000000020002036e73320b6368616d69646d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000452c0453fc00c0001000100015180000452c04540 + +36752 +943100000001000000000000026e73056e65726f63026e6c0000010001 +943180000001000000020002026e73056e65726f63026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +36753 +7f4d00000001000000000000037777770967656d6e6574637370026e6c0000010001 +7f4d80000001000000020002037777770967656d6e6574637370026e6c0000010001c0100002000100015180000e026e73086d656761706c6578c01ac01000020001000151800006036e7331c031c02e00010001000151800004504f6101c04800010001000151800004504f6102 + +36754 +3d0f00000001000000000000036e7332056e65726f63026e6c0000010001 +3d0f80000001000000020002036e7332056e65726f63026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +36755 +88aa00000001000000000000036e7332056e65726f63026e6c00001c0001 +88aa80000001000000020002036e7332056e65726f63026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +36756 +023100000001000000000000036e7332056e65726f63026e6c0000260001 +023180000001000000020002036e7332056e65726f63026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +36757 +2aa700000001000000000000026e73056e65726f63026e6c00001c0001 +2aa780000001000000020002026e73056e65726f63026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +36758 +396c00000001000000000000026e73056e65726f63026e6c0000260001 +396c80000001000000020002026e73056e65726f63026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +36759 +e85c0000000100000000000003777777146f7665727761617264652d666c657878706c616e026e6c0000010001 +e85c8000000100000002000003777777146f7665727761617264652d666c657878706c616e026e6c0000010001c01000020001000151800011036e73310a6d61696e736572766572c025c01000020001000151800006036e7332c03d + +36760 +5a9900000001000000000000046d61696c056e65726f63026e6c0000010001 +5a9980000001000000020002046d61696c056e65726f63026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02b00010001000151800004d434010ac03c00010001000151800004d434000a + +36761 +6c9e000000010000000000000776657273696f6e0462696e640000100003 +6c9e800000010001000000000776657273696f6e0462696e640000100003c00c0010000300000000000a094e534420332e302e30 + +36762 +e8d90000000100000000000004706f7032076575726f6e6574026e6c0000010001 +e8d98000000100000002000104706f7032076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +36763 +adde00100001000000000001036e733108776f726c646e6574026e6c00000100010000290800000000000000 +adde80000001000000030004036e733108776f726c646e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d87a0479c03b00010001000151800004d86296b6c04d00010001000151800004d9a083d10000291000000000000000 + +36764 +4eb20000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eb28403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +36765 +6b5800100001000000000001036e733108776f726c646e6574026e6c00002600010000290800000000000000 +6b5880000001000000030004036e733108776f726c646e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d87a0479c03b00010001000151800004d86296b6c04d00010001000151800004d9a083d10000291000000000000000 + +36766 +35ac00100001000000000001036e733208776f726c646e6574026e6c00000100010000290800000000000000 +35ac80000001000000030004036e733208776f726c646e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d87a0479c00c00010001000151800004d86296b6c04d00010001000151800004d9a083d10000291000000000000000 + +36767 +1ad600100001000000000001036e733208776f726c646e6574026e6c00002600010000290800000000000000 +1ad680000001000000030004036e733208776f726c646e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d87a0479c00c00010001000151800004d86296b6c04d00010001000151800004d9a083d10000291000000000000000 + +36768 +8d6b00100001000000000001036e733308776f726c646e6574026e6c00000100010000290800000000000000 +8d6b80000001000000030004036e733308776f726c646e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d87a0479c03f00010001000151800004d86296b6c00c00010001000151800004d9a083d10000291000000000000000 + +36769 +238300100001000000000001036e733308776f726c646e6574026e6c00002600010000290800000000000000 +238380000001000000030004036e733308776f726c646e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d87a0479c03f00010001000151800004d86296b6c00c00010001000151800004d9a083d10000291000000000000000 + +36770 +c49700000001000000000000055f6c646170045f746370026463065f6d73646373056c6f63616c0e6b72756c69747365727669636573026e6c0000210001 +c49780000001000000020000055f6c646170045f746370026463065f6d73646373056c6f63616c0e6b72756c69747365727669636573026e6c0000210001c0270002000100015180000b036e733104706f7135c036c02700020001000151800006036e7332c04e + +36771 +dc5800000001000000000000037777770b6a6f6876646d65756c656e026e6c0000010001 +dc5880000001000000020000037777770b6a6f6876646d65756c656e026e6c0000010001c0100002000100015180000f026e73096379626572636f6d6dc01cc01000020001000151800006036e7332c033 + +36772 +af9a00000001000000000000037777770f616e62657267656e6d6f746f72656e026e6c0000010001 +af9a80000001000000030001037777770f616e62657267656e6d6f746f72656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc020c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c052c034000100010001518000043efa0202 + +36773 +3a190010000100000000000106696d61676573056d62757975026e6c00000100010000290800000000000000 +3a198000000100000002000106696d61676573056d62757975026e6c0000010001c01300020001000151800010026e73076379736f6e657403636f6d00c01300020001000151800006036e7331c0300000291000000000000000 + +36774 +f2b20000000100000000000006636861726973026e6c00000f0001 +f2b28000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +36775 +212f00000001000000000000037777770870632d6163746976026e6c0000010001 +212f84030001000000010000037777770870632d6163746976026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +36776 +7564000000010000000000000a74757070657277617265027330026e6c0000010001 +7564800000010000000200020a74757070657277617265027330026e6c0000010001c0170002000100015180000d026e73076e656473746174c01ac01700020001000151800006036e7333c031c02e00010001000151800004d4482615c04700010001000151800004d5c4021d + +36777 +6d990000000100000000000006696d61676573056d62757975026e6c0000010001 +6d998000000100000002000006696d61676573056d62757975026e6c0000010001c01300020001000151800010026e73076379736f6e657403636f6d00c01300020001000151800006036e7331c030 + +36778 +e8130000000100000000000012696e7465726e65742d6f6e6465727a6f656b0477656233026e6c0000010001 +e8138000000100000002000212696e7465726e65742d6f6e6465727a6f656b0477656233026e6c0000010001c01f00020001000151800006036e7331c01fc01f00020001000151800006036e7332c01fc03800010001000151800004d436240ec04a00010001000151800004c2b262ef + +36779 +ea6600000001000000000000036e733109626f7577666f6e6473026e6c0000010001 +ea6680000001000000030000036e733109626f7577666f6e6473026e6c0000010001c01000020001000151800014036e73310a646e736d616e6167656403636f6d00c01000020001000151800006036e7334c032c01000020001000151800006036e7336c032 + +36780 +72fd000000010000000000000377777703727464026e6c0000010001 +72fd800000010000000200000377777703727464026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +36781 +b8d700000001000000000000046d61696c086e65646c696e7578026e6c0000010001 +b8d780000001000000030003046d61696c086e65646c696e7578026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02e00010001000151800004d5ef87d2c04000010001000151800004d5ef87d3c05200010001000151800004d5ef8005 + +36782 +254b00000001000000000000034e533103494e47026e6c0000010001 +254b80000001000000020002034e533103494e47026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +36783 +f1f100000001000000000000034e533103494e47026e6c0000260001 +f1f180000001000000020002034e533103494e47026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +36784 +806a00000001000000000000034e533203494e47026e6c0000010001 +806a80000001000000020002034e533203494e47026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +36785 +403500000001000000000000034e533203494e47026e6c0000260001 +403580000001000000020002034e533203494e47026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +36786 +126100000001000000000000036e733306636f62776562026e6c0000010001 +126180000001000000020001036e733306636f62776562026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f26001 + +36787 +954200000001000000000000037777770a736d7574736572766572026e6c0000010001 +954280000001000000020002037777770a736d7574736572766572026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efa011c04a00010001000151800004d5efa075 + +36788 +ba740000000100000000000003777777097475726b646f737475026e6c0000010001 +ba748403000100000001000003777777097475726b646f737475026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +36789 +6ae9000000010000000000000377777706636c61766973026e6c0000010001 +6ae9800000010000000200000377777706636c61766973026e6c0000010001c01000020001000151800012036e73310b776f726c646f6e6c696e65c017c01000020001000151800006036e7332c02f + +36790 +238c00000001000000000000036e73340767617574656e67026e6c0000010001 +238c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36791 +fb1100100001000000000001024e530743495354524f4e024e4c00000100010000290800000080000000 +fb1180000001000000020003024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f380000291000000000000000 + +36792 +a2f000000001000000000000037777770873706f7274757261026e6c0000010001 +a2f080000001000000030003037777770873706f7274757261026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +36793 +28af00000001000000000000046d61696c066b6f7274686f026e6c0000010001 +28af80000001000000020001046d61696c066b6f7274686f026e6c0000010001c0110002000100015180000d026e73046575726f036e657400c0110002000100015180000d026e73076575726f6e6574c018c04500010001000151800004c2860043 + +36794 +4acd00000001000000000000037777770c6368616c657474726176656c026e6c0000010001 +4acd80000001000000030003037777770c6368616c657474726176656c026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c03100010001000151800004c1adf9c3c04b000100010001518000043e70ec3cc05d00010001000151800004c1ac0bae + +36795 +aab8000000010000000000000a7773746f6e7368756973026e6c0000010001 +aab8800000010000000200010a7773746f6e7368756973026e6c0000010001c00c00020001000151800013036e73310c636f6e63657074732d696374c017c00c00020001000151800006036e7332c02fc04a00010001000151800004d5c51e4b + +36796 +82070000000100000000000003777777066e666f726365026e6c0000010001 +82078000000100000002000203777777066e666f726365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b000100010001518000043ed45433c03d000100010001518000043ed45434 + +36797 +992900000001000000000000066b616d70656e026e6c00000f0001 +992980000001000000020002066b616d70656e026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c013c00c00020001000151800006036e7331c02ac02700010001000151800004504f6101c04100010001000151800004504f6102 + +36798 +352b0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +352b8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +36799 +352c00000001000000000000056b72616e740974656c656772616166026e6c0000010001 +352c80000001000000020000056b72616e740974656c656772616166026e6c0000010001c01200020001000151800013036e73300974656c656772616166036e657400c01200020001000151800006036e7331c034 + +36800 +a08e0000000100000000000004686f6d650c636f6e63657074732d696374026e6c0000010001 +a08e8000000100000002000204686f6d650c636f6e63657074732d696374026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ec01100020001000151800006036e7332c011c03200010001000151800004d5c51c03c04f00010001000151800004d5c51e4b + +36801 +893100000001000000000000036e73310b737461727464657369676e026e6c0000010001 +893180000001000000020002036e73310b737461727464657369676e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5f73823c03e000100010001518000043ed45149 + +36802 +486a00000001000000000000036e73320b737461727464657369676e026e6c0000010001 +486a80000001000000020002036e73320b737461727464657369676e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d5f73823c00c000100010001518000043ed45149 + +36803 +c5cc00000001000000000000036e73310b737461727464657369676e026e6c0000010001 +c5cc80000001000000020002036e73310b737461727464657369676e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5f73823c03e000100010001518000043ed45149 + +36804 +04d200000001000000000000036e73320b737461727464657369676e026e6c0000010001 +04d280000001000000020002036e73320b737461727464657369676e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d5f73823c00c000100010001518000043ed45149 + +36805 +2b1c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +2b1c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36806 +4ae20000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +4ae28000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +36807 +d63e00000001000000000000036e7332086865786f6e2d6973026e6c0000010001 +d63e80000001000000020002036e7332086865786f6e2d6973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d58527cbc00c00010001000151800004d4ccdb5b + +36808 +ac0d00000001000000000000036e7331086865786f6e2d6973026e6c0000010001 +ac0d80000001000000020002036e7331086865786f6e2d6973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d58527cbc03b00010001000151800004d4ccdb5b + +36809 +c3b600000001000000000000044e414d4507574c44454c4654026e6c0000010001 +c3b680000001000000020002044e414d4507574c44454c4654026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c019c00c00010001000151800004910983cbc03b00010001000151800004c0576a65 + +36810 +61db00000001000000000000044e414d4507574c44454c4654026e6c0000260001 +61db80000001000000020002044e414d4507574c44454c4654026e6c0000260001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c019c00c00010001000151800004910983cbc03b00010001000151800004c0576a65 + +36811 +9d6e0000000100000000000006686f73742d32096575726f6465636f720564656d6f6e026e6c0000010001 +9d6e8000000100000003000206686f73742d32096575726f6465636f720564656d6f6e026e6c0000010001c01d00020001000151800006036e7331c01dc01d00020001000151800006036e7332c01dc01d0002000100015180000f036e73320564656d6f6e036e657400c03700010001000151800004c29f4906c04900010001000151800004c29fb004 + +36812 +352d00000001000000000000056b72616e740974656c656772616166026e6c0000010001 +352d80000001000000020000056b72616e740974656c656772616166026e6c0000010001c01200020001000151800013036e73300974656c656772616166036e657400c01200020001000151800006036e7331c034 + +36813 +1c1600000001000000000000026d6f03726470026e6c00000f0001 +1c1680000001000000020000026d6f03726470026e6c00000f0001c00f0002000100015180000b026e73026e6c036e657400c00f0002000100015180001206617574683630026e73026e6c027575c02d + +36814 +485e00000001000000000000024e530743495354524f4e024e4c0000010001 +485e80000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +36815 +7620000000010000000000000661737465636f026e6c0000010001 +7620800000010000000300020661737465636f026e6c0000010001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +36816 +d2430000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +d2438000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +36817 +2dcb000000010000000000000b776f726c646f6e6c696e65026e6c0000ff0001 +2dcb800000010000000300020b776f726c646f6e6c696e65026e6c0000ff0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +36818 +ffa900000001000000000000026e73076575726f6e6574026e6c0000010001 +ffa980000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +36819 +b6d100000001000000000000056d61696c3108636f6f6c626c7565026e6c0000010001 +b6d180000001000000030002056d61696c3108636f6f6c626c7565026e6c0000010001c0120002000100015180000d036e733106776964657873c01bc01200020001000151800010036e733206776964657873036e657400c01200020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +36820 +a50f000000010000000000000973706f727463756c74026e6c0000010001 +a50f800000010000000300000973706f727463756c74026e6c0000010001c00c00020001000151800019036e73310f613475776562736f6c7574696f6e73036e657400c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02e + +36821 +b6580000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +b6588000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +36822 +bacf000000010000000000000377777711686f74656c6465706164646573746f656c026e6c0000010001 +bacf800000010000000200020377777711686f74656c6465706164646573746f656c026e6c0000010001c01000020001000151800008026e7302646fc022c01000020001000151800013036e73320c636f6e63657074732d696374c022c03600010001000151800004d5c51d2fc04a00010001000151800004d5c51e4b + +36823 +bc1f0000000100000000000003777777096b6c696d6265746572026e6c0000010001 +bc1f8000000100000002000203777777096b6c696d6265746572026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01ac01000020001000151800006036e7332c032c02e000100010001518000045054f347c04a000100010001518000043e94a047 + +36824 +f6fb00000001000000000000036e7331077472616e736970026e6c0000010001 +f6fb80000001000000020002036e7331077472616e736970026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c0001000100015180000450454343c00c0001000100015180000450454242 + +36825 +de8100000001000000000000036e7332077472616e736970026e6c0000010001 +de8180000001000000020002036e7332077472616e736970026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800006036e7331c010c02c0001000100015180000450454343c03e0001000100015180000450454242 + +36826 +ae2b00000001000000000000026e73076e656473746174026e6c0000010001 +ae2b80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36827 +41e600000001000000000000036e7333076e656473746174026e6c0000010001 +41e680000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36828 +f77d0000000100000000000003777777087261626f62616e6b026e6c0000010001 +f77d8000000100000002000103777777087261626f62616e6b026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02d0001000100015180000491484fde + +36829 +34bf0000000100000000000008616473657276657206776562616473026e6c0000010001 +34bf8000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +36830 +9f79000000010000000000000d76616e6b7275696a7364696a6b026e6c00000f0001 +9f79800000010000000300030d76616e6b7275696a7364696a6b026e6c00000f0001c00c0002000100015180000c026e73067369676e6574c01ac00c00020001000151800006036e7331c031c00c00020001000151800006036e7332c031c02e00010001000151800004c3561242c04600010001000151800004d915f142c05800010001000151800004d915f141 + +36831 +e6f9000000010000000000000767656c73696e67026e6c00000f0001 +e6f9800000010000000200000767656c73696e67026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +36832 +f467000000010000000000000d646330322d6d6f7465696e646804636f7270086d6f7465696e6468026e6c0000010001 +f467840300010000000100000d646330322d6d6f7465696e646804636f7270086d6f7465696e6468026e6c0000010001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +36833 +a8f000000001000000000000037777770a64696572656e7475696e026e6c0000010001 +a8f080000001000000030003037777770a64696572656e7475696e026e6c0000010001c0100002000100015180000e076e73617574683103626974c01bc0100002000100015180000a076e736175746832c037c0100002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +36834 +693a00000001000000000000037777770b64616b6b6170656c6c656e026e6c0000010001 +693a80000001000000020001037777770b64616b6b6170656c6c656e026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c01cc01000020001000151800011036e7332076e6564636f6d70036f726700c03000010001000151800004c3c1a80d + +36835 +12f700000001000000000000037777770c646564696e6e6572636c7562026e6c0000010001 +12f780000001000000020000037777770c646564696e6e6572636c7562026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01dc0100002000100015180000704686e7331c036 + +36836 +6303000000010000000000000977696c7672696a656e026e6c00000f0001 +6303800000010000000200000977696c7672696a656e026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02e + +36837 +1f72000000010000000000000377777707766e6f2d6e6377026e6c0000010001 +1f72800000010000000200020377777707766e6f2d6e6377026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c018c01000020001000151800006036e7332c030c02c00010001000151800004505fa002c04700010001000151800004505fac02 + +36838 +2b9b00000001000000000000036e73330767617574656e67026e6c0000010001 +2b9b80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36839 +6b6c000000010000000000000367736d0c6d6f62696c656f6e6c696e65026e6c0000010001 +6b6c800000010000000200000367736d0c6d6f62696c656f6e6c696e65026e6c0000010001c01000020001000151800017036e73310d696e746572726567697374657203636f6d00c01000020001000151800006036e7332c035 + +36840 +8a4400000001000000000000036e733108776f726c646e6574026e6c0000010001 +8a4480000001000000030003036e733108776f726c646e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d87a0479c03b00010001000151800004d86296b6c04d00010001000151800004d9a083d1 + +36841 +c448000000010000000000000377777702656c026e6c0000010001 +c448800000010000000200020377777702656c026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c013c01000020001000151800006036e7331c02bc02700010001000151800004c3eaad40c04100010001000151800004c3eaad41 + +36842 +e2e900000001000000000000036e733108776f726c646e6574026e6c0000260001 +e2e980000001000000030003036e733108776f726c646e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d87a0479c03b00010001000151800004d86296b6c04d00010001000151800004d9a083d1 + +36843 +5b4b00000001000000000000036e733208776f726c646e6574026e6c0000010001 +5b4b80000001000000030003036e733208776f726c646e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d87a0479c00c00010001000151800004d86296b6c04d00010001000151800004d9a083d1 + +36844 +072c00000001000000000000036e733208776f726c646e6574026e6c0000260001 +072c80000001000000030003036e733208776f726c646e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d87a0479c00c00010001000151800004d86296b6c04d00010001000151800004d9a083d1 + +36845 +039600000001000000000000036e733308776f726c646e6574026e6c0000010001 +039680000001000000030003036e733308776f726c646e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d87a0479c03f00010001000151800004d86296b6c00c00010001000151800004d9a083d1 + +36846 +01cb00000001000000000000036e733308776f726c646e6574026e6c0000260001 +01cb80000001000000030003036e733308776f726c646e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004d87a0479c03f00010001000151800004d86296b6c00c00010001000151800004d9a083d1 + +36847 +c895000000010000000000000b636f6d62696e6175746963026e6c00000f0001 +c895800000010000000200020b636f6d62696e6175746963026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +36848 +537600000001000000000000106f6d726f657067656c6465726c616e64026e6c00000f0001 +537680000001000000020000106f6d726f657067656c6465726c616e64026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c035 + +36849 +ef7a00000001000000000000037777770e76696c6c612d617264656e6e656e026e6c0000010001 +ef7a80000001000000030000037777770e76696c6c612d617264656e6e656e026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c037c01000020001000151800006036e7333c037 + +36850 +608900000001000000000000036e733204696c7365026e6c0000010001 +608980000001000000030003036e733204696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e45a282c00c000100010001518000043e45a283c049000100010001518000043e45a284 + +36851 +035200000001000000000000037777770b616466697265776f726b73026e6c0000010001 +035280000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +36852 +23a60000000100000000000007616c7665727061026e6c0000ff0001 +23a68000000100000002000007616c7665727061026e6c0000ff0001c00c0002000100015180000c036e723105692d702d64c014c00c00020001000151800006036e7232c02c + +36853 +757800000001000000000000036e723105692d702d64026e6c0000010001 +757880000001000000020002036e723105692d702d64026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02a00010001000151800004d9124003c03d00010001000151800004d9124104 + +36854 +876a00000001000000000000036e723205692d702d64026e6c0000010001 +876a80000001000000020002036e723205692d702d64026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02a00010001000151800004d9124003c03d00010001000151800004d9124104 + +36855 +936b0000000100000000000007616c7665727061026e6c00000f0001 +936b8000000100000002000007616c7665727061026e6c00000f0001c00c0002000100015180000c036e723105692d702d64c014c00c00020001000151800006036e7232c02c + +36856 +d06a0000000100000000000004616d6567026e6c0000010001 +d06a8000000100000003000304616d6567026e6c0000010001c00c0002000100015180000e04646e733106626c6978656dc011c00c0002000100015180000704646e7332c02ac00c0002000100015180000704646e7333c02ac02500010001000151800004d44fe803c03f00010001000151800004c3f5c782c05200010001000151800004d44ff303 + +36857 +de7928000001000000010000026e6c00000600010b6f7372646f6d65696e2d31026e6c0000010001000002580004c0a80002 +de79a8040000000000000000 + +36858 +0000000070024000727d00000204059801010402 +000080010000000000000000 + +36859 +2d940000000100000000000009652d6c756e61746963026e6c0000010001 +2d948000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36860 +b778d534501043200f480000000000000000 + + +36861 +c84600000001000000000000037777770e646f726d616e74706174656e7473026e6c0000010001 +c84684030001000000010000037777770e646f726d616e74706174656e7473026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +36862 +b778d53450184320a10d00000096811c000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c0020000000504f574552454447452d53424f5352444f4d45494e2d310000 + + +36863 +b778d542501143120eaf0000000000000000 + + +36864 +0000000070024000c9ec00000204059801010402 +000080010000000000000000 + +36865 +b778d543501043120eae0000000000000000 + + +36866 +b7799c6a501043209f800000000000000000 + + +36867 +b7799c6a50184320239b000000968fc8000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c0020000000504f574552454447452d53424f5352444f4d45494e2d310000 + + +36868 +b7799c78501143129ee70000000000000000 + + +36869 +b975000000010000000000000b636f6d62696e6175746963026e6c0000010001 +b975800000010000000200020b636f6d62696e6175746963026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +36870 +00000000700240008c0d00000204059801010402 +000080010000000000000000 + +36871 +b7799c79501043129ee60000000000000000 + + +36872 +b77a3c4a50104320c1c00000000000000000 +b77abc440000000000000000 + +36873 +b77a3c4a50184320372f000000969e74000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000374e544c4d535350000100000097b208e00b000b002c0000000c000c0020000000504f574552454447452d53424f5352444f4d45494e2d310000 +b77abc440000000000000000 + +36874 +b77a3c5850114312c1270000000000000000 +b77abc540000000000000000 + +36875 +b77a3c5950104312c1260000000000000000 +b77abc540000000000000000 + +36876 +ed0900000001000000000000037777770c6472756b6b6572696a677362026e6c0000010001 +ed0980000001000000020000037777770c6472756b6b6572696a677362026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01dc0100002000100015180000805646e732d32c037 + +36877 +294000000001000000000000086470636c69636b730c706167696e61626568656572026e6c0000010001 +294080000001000000020002086470636c69636b730c706167696e61626568656572026e6c0000010001c0150002000100015180000e026e7308696e7465722d6974c022c01500020001000151800006036e7332c039c03600010001000151800004d5c4385ac05000010001000151800004d5c4385b + +36878 +e9cb0000000100000000000003627573026e6c0000ff0001 +e9cb8000000100000002000003627573026e6c0000ff0001c00c0002000100015180000c026e730334756103636f6d00c00c00020001000151800006036e7332c027 + +36879 +a8bb0000000100000000000006636861726973026e6c0000ff0001 +a8bb8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +36880 +73c2000000010000000000000565666e657408767575727765726b026e6c0000010001 +73c2800000010000000300010565666e657408767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +36881 +4bae00000001000000000000066d6d736d7470056e6574636f026e6c0000010001 +4bae80000001000000020002066d6d736d7470056e6574636f026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c02d00010001000151800004c26d4a82c03f00010001000151800004c26dd146 + +36882 +9ad50000000100000000000003777777076d797374617473026e6c0000010001 +9ad58000000100000002000203777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +36883 +0e5f0000000100000000000009652d6c756e61746963026e6c0000010001 +0e5f8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +36884 +4a6d00000001000000000000096d61696c686f73743107747564656c6674026e6c0000010001 +4a6d80000001000000050005096d61696c686f73743107747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36885 +be0400000001000000000000096d61696c686f73743207747564656c6674026e6c0000010001 +be0480000001000000050005096d61696c686f73743207747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36886 +d46000000001000000000000096d61696c686f73743207747564656c6674026e6c00001c0001 +d46080000001000000050005096d61696c686f73743207747564656c6674026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36887 +791700000001000000000000096d61696c686f73743107747564656c6674026e6c00001c0001 +791780000001000000050005096d61696c686f73743107747564656c6674026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36888 +4dcc00000001000000000000096d61696c686f73743207747564656c6674026e6c0000260001 +4dcc80000001000000050005096d61696c686f73743207747564656c6674026e6c0000260001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36889 +85f000000001000000000000096d61696c686f73743307747564656c6674026e6c0000010001 +85f080000001000000050005096d61696c686f73743307747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36890 +360000000001000000000000096d61696c686f73743307747564656c6674026e6c00001c0001 +360080000001000000050005096d61696c686f73743307747564656c6674026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36891 +ca4d00000001000000000000096d61696c686f73743307747564656c6674026e6c0000260001 +ca4d80000001000000050005096d61696c686f73743307747564656c6674026e6c0000260001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36892 +a26200000001000000000000096d61696c686f73743107747564656c6674026e6c0000260001 +a26280000001000000050005096d61696c686f73743107747564656c6674026e6c0000260001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36893 +2ae700000001000000000000036e733207747564656c6674026e6c00001c0001 +2ae780000001000000050005036e733207747564656c6674026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +36894 +215100000001000000000000036e733207747564656c6674026e6c0000260001 +215180000001000000050005036e733207747564656c6674026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +36895 +553400000001000000000000036e733107747564656c6674026e6c0000010001 +553480000001000000050005036e733107747564656c6674026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +36896 +38b600000001000000000000036e733107747564656c6674026e6c00001c0001 +38b680000001000000050005036e733107747564656c6674026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +36897 +749b00000001000000000000096d61696c686f7374340b66726565686f7374696e67026e6c0000010001 +749b80000001000000020000096d61696c686f7374340b66726565686f7374696e67026e6c0000010001c0160002000100015180001105646e732d33056c61646f7403636f6d00c0160002000100015180000805646e732d34c03c + +36898 +053e00000001000000000000096d61696c686f73743107747564656c6674026e6c0000010001 +053e80000001000000050005096d61696c686f73743107747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +36899 +54a100000001000000000000037777770a70696a70736c65746a65026e6c0000010001 +54a180000001000000020000037777770a70696a70736c65746a65026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +36900 +d70400000001000000000000036e7335046372696f026e6c0000010001 +d70480000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36901 +0b5000000001000000000000036e7336046372696f026e6c0000010001 +0b5080000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36902 +b74e000000010000000000000377777703776562026e6c0000010001 +b74e800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +36903 +7ab800000001000000000000036e7331046372696f026e6c0000010001 +7ab880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36904 +960100000001000000000000036e7332046372696f026e6c0000010001 +960180000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36905 +12ce00000001000000000000037777770a72656372656174696566026e6c0000010001 +12ce80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +36906 +572400000001000000000000036e7335046372696f026e6c0000010001 +572480000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36907 +ebc000000001000000000000036e7336046372696f026e6c0000010001 +ebc080000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36908 +6f4400000001000000000000036e7331046372696f026e6c0000010001 +6f4480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36909 +33e700000001000000000000036e7332046372696f026e6c0000010001 +33e780000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +36910 +14b000000001000000000000086169782d74657374056578616374026e6c0000010001 +14b080000001000000020001086169782d74657374056578616374026e6c0000010001c01500020001000151800008056578616374c015c0150002000100015180000b026e73026e6c036e657400c02f00010001000151800004910e3c0a + +36911 +35f600000001000000000000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001 +35f680000001000000020000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001c014000200010001518000110377656207616a63666f6f6403636f6d00c0140002000100015180000b0865786368616e6765c034 + +36912 +7f6200000001000000000000036e73310b696e746572706872617365026e6c0000010001 +7f6280000001000000020002036e73310b696e746572706872617365026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c98f54c03e00010001000151800004d5c98f57 + +36913 +9fd600000001000000000000036e73310b696e746572706872617365026e6c0000260001 +9fd680000001000000020002036e73310b696e746572706872617365026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c98f54c03e00010001000151800004d5c98f57 + +36914 +27fb00000001000000000000036e73320b696e746572706872617365026e6c0000010001 +27fb80000001000000020002036e73320b696e746572706872617365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d5c98f54c00c00010001000151800004d5c98f57 + +36915 +911200000001000000000000036e73320b696e746572706872617365026e6c0000260001 +911280000001000000020002036e73320b696e746572706872617365026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d5c98f54c00c00010001000151800004d5c98f57 + +36916 +e0b60000000100000000000003313037023930033232390232340964796e61626c6f636b07656173796e6574026e6c0000100001 +e0b68000000100000002000203313037023930033232390232340964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +36917 +6a6f00000001000000000000026e73076575726f6e6574026e6c0000010001 +6a6f80000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +36918 +466b000000010000000000000377777709686f6e64612d637278026e6c0000010001 +466b800000010000000200000377777709686f6e64612d637278026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c031 + +36919 +06a100000001000000000000026e73076e656473746174026e6c00001c0001 +06a180000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36920 +6a3c00000001000000000000036e7332076e656473746174026e6c0000010001 +6a3c80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36921 +a0fb00000001000000000000036e7332076e656473746174026e6c00001c0001 +a0fb80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36922 +4c1400000001000000000000036e7333076e656473746174026e6c00001c0001 +4c1480000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36923 +7d8a00000001000000000000036e7334076e656473746174026e6c0000010001 +7d8a80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36924 +63c400000001000000000000036e7334076e656473746174026e6c00001c0001 +63c480000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +36925 +d27a00000001000000000000037777770462756d65026e6c0000010001 +d27a80000001000000020002037777770462756d65026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c015c01000020001000151800006036e7332c02dc02900010001000151800004d4ccd865c044000100010001518000045054ec34 + +36926 +5a74000000010000000000000377777707747067706f7374026e6c0000010001 +5a74800000010000000200020377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +36927 +f1f1000000010000000000000377777706706167696e61026e6c0000010001 +f1f1800000010000000300030377777706706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02b000100010001518000043e45a282c03d000100010001518000043e45a283c04f000100010001518000043e45a284 + +36928 +b5b800000001000000000000037777770c6561676c6566726569676874026e6c0000010001 +b5b880000001000000020002037777770c6561676c6566726569676874026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01dc01000020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +36929 +4a4000000001000000000000037777770c706f77657270617373696f6e026e6c0000010001 +4a4080000001000000020002037777770c706f77657270617373696f6e026e6c0000010001c0100002000100015180000c04646e73310471776562c01dc0100002000100015180000704646e7332c036c03100010001000151800004d994ac0cc04900010001000151800004d5c42f6c + +36930 +a58100000001000000000000037777770c706f77657270617373696f6e026e6c0000010001 +a58180000001000000020002037777770c706f77657270617373696f6e026e6c0000010001c0100002000100015180000c04646e73310471776562c01dc0100002000100015180000704646e7332c036c03100010001000151800004d994ac0cc04900010001000151800004d5c42f6c + +36931 +72e00000000100000000000007776161646f6f6f026e6c00001c0001 +72e08403000100000001000007776161646f6f6f026e6c00001c0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +36932 +31560000000100000000000008686f75736561647303696467026e6c0000010001 +31568000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +36933 +b58300000001000000000000036d78320663617374656c026e6c0000010001 +b58380000001000000020002036d78320663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +36934 +6a920000000100000000000003777777067a7376737378026e6c0000010001 +6a928403000100000001000003777777067a7376737378026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +36935 +b0b000000001000000000000036d78320663617374656c026e6c00001c0001 +b0b080000001000000020002036d78320663617374656c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +36936 +b9fd00000001000000000000036d78330663617374656c026e6c0000010001 +b9fd80000001000000020002036d78330663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +36937 +30d700000001000000000000036d78330663617374656c026e6c00001c0001 +30d780000001000000020002036d78330663617374656c026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +36938 +1dab000000010000000000000377777717706f6c6974696567656c6465726c616e646d696464656e026e6c0000010001 +1dab800000010000000300000377777717706f6c6974696567656c6465726c616e646d696464656e026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c042c0100002000100015180000805646e733132c042 + +36939 +d7160000000100000000000003777777136a61636874736c6f746865746f7564656c6f6f026e6c0000010001 +d7168403000100000001000003777777136a61636874736c6f746865746f7564656c6f6f026e6c0000010001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +36940 +367d00000001000000000000036e73330870726f7365727665026e6c0000010001 +367d80000001000000030002036e73330870726f7365727665026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800002c00cc02d000100010001518000045054e055c00c00010001000151800004d4ccc655 + +36941 +d40800000001000000000000036e73310870726f7365727665026e6c0000010001 +d40880000001000000030002036e73310870726f7365727665026e6c0000010001c01000020001000151800002c00cc01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c00c000100010001518000045054e055c05900010001000151800004d4ccc655 + +36942 +23b300000001000000000000036e73340767617574656e67026e6c0000010001 +23b380000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36943 +23b200000001000000000000036e73330767617574656e67026e6c0000010001 +23b280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36944 +55af00000001000000000000036e7331056d61786573026e6c0000010001 +55af80000001000000030003036e7331056d61786573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +36945 +72b000000001000000000000036e7332056d61786573026e6c0000010001 +72b080000001000000030003036e7332056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +36946 +ae7200000001000000000000036e7333056d61786573026e6c0000010001 +ae7280000001000000030003036e7333056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +36947 +a98400000001000000000000036e733205672d617274026e6c0000010001 +a98480000001000000020002036e733205672d617274026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000f026e7309747269706c652d6974c016c02a00010001000151800004d5a0c502c03c00010001000151800004d584b002 + +36948 +65f300000001000000000000034e53320754494b4b4c494b024e4c0000010001 +65f380000001000000020002034e53320754494b4b4c494b024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d5c40902c00c000100010001518000043eddd512 + +36949 +65f400000001000000000000034e53310754494b4b4c494b024e4c0000010001 +65f480000001000000020002034e53310754494b4b4c494b024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c40902c03a000100010001518000043eddd512 + +36950 +80e30000000100000000000003777777057a6f656b79026e6c0000010001 +80e38000000100000002000103777777057a6f656b79026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c016c01000020001000151800006036e7334c02ec02a00010001000151800004d5c401c0 + +36951 +090800000001000000000000036e733503777873026e6c0000010001 +090880000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36952 +420f00000001000000000000036e733503777873026e6c0000260001 +420f80000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36953 +db26000000010000000000000377777704726f6c66026e6c0000010001 +db26800000010000000200000377777704726f6c66026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +36954 +d3d60000000100000000000003777777046e756f6e026e6c0000010001 +d3d68000000100000002000103777777046e756f6e026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +36955 +347e000000010000000000000d74686562696770696374757265026e6c00000f0001 +347e800000010000000200020d74686562696770696374757265026e6c00000f0001c00c0002000100015180000e036e73310768756d616e2d69c01ac00c00020001000151800006036e7332c032c02e00010001000151800004c1ad2884c04800010001000151800004c1ad2886 + +36956 +6199000000010000000000000956444c4d455441414c024e4c0000060001 +6199840300010000000100000956444c4d455441414c024e4c0000060001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +36957 +9173000000010000000000000956444c4d455441414c024e4c0000060001 +9173840300010000000100000956444c4d455441414c024e4c0000060001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +36958 +be14000000010000000000000469632d73026e6c00000f0001 +be14800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +36959 +32c600000001000000000000037777770867726f6e656d616e026e6c0000010001 +32c680000001000000020002037777770867726f6e656d616e026e6c0000010001c01000020001000151800012036e73310b696e7465727374726f6f6dc019c01000020001000151800006036e7332c031c02d0001000100015180000450558121c04b00010001000151800004d58141c4 + +36960 +09d3000000010000000000000d636c736175746f6d6174696f6e026e6c00000f0001 +09d3840300010000000100000d636c736175746f6d6174696f6e026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +36961 +f13000000001000000000000036e73310a6d756c74696b6162656c026e6c00001c0001 +f13080000001000000030002036e73310a6d756c74696b6162656c026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +36962 +f0f6000000010000000000000b7365617263682d646573630465626179026e6c0000010001 +f0f6800000010000000200000b7365617263682d646573630465626179026e6c0000010001c018000200010001518000140963726f636f64696c65046562617903636f6d00c0180002000100015180000b087061636966696572c040 + +36963 +e447000000010000000000000370776c026e6c00000f0001 +e447800000010000000200020370776c026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +36964 +fa8e00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +fa8e80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +36965 +292b000000010000000000000762616e6e65727303696d73026e6c0000010001 +292b800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +36966 +a82400000001000000000000046d61696c036d6461026e6c0000010001 +a82480000001000000020002046d61696c036d6461026e6c0000010001c0110002000100015180000e036e733007656173796e6574c015c01100020001000151800006036e7331c02dc02900010001000151800004c2a55e01c04300010001000151800004c2a55e05 + +36967 +f39328000001000000010000024e4c00000600010956444c4d455441414c024e4c0000010001000002580004c0a80003 +f393a8040000000000000000 + +36968 +dbc5000000010000000000000d6176732d736f6c7574696f6e73026e6c0000010001 +dbc5800000010000000200020d6176732d736f6c7574696f6e73026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +36969 +f4f900000001000000000000086261726d61746f6e026e6c00001c0001 +f4f980000001000000020002086261726d61746f6e026e6c00001c0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +36970 +0000000070024000baf20000020405b401010402 +000080010000000000000000 + +36971 +23b600000001000000000000036e73340767617574656e67026e6c0000010001 +23b680000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36972 +23b500000001000000000000036e73330767617574656e67026e6c0000010001 +23b580000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +36973 +ec3a000000010000000000000377777707736974652d6964026e6c0000010001 +ec3a800000010000000300000377777707736974652d6964026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030 + +36974 +98d0001000010000000000000377777708646f687362617365026e6c0000010001 +98d0800000010000000300010377777708646f687362617365026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +36975 +874e00000001000000000000046e733032086465616e6d6f6f72026e6c00001c0001 +874e80000001000000020002046e733032086465616e6d6f6f72026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02e00010001000151800004c1cbe123c00c00010001000151800004c1cbe124 + +36976 +82a00000000100000000000003777777046d70337a026e6c0000010001 +82a08000000100000002000203777777046d70337a026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac015c01000020001000151800006036e7332c02dc02900010001000151800004d5efa011c04400010001000151800004d5efa075 + +36977 +1c0000000001000000000000026e73076e656473746174026e6c0000010001 +1c0080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +36978 +d1c100000001000000000000036e7333076e656473746174026e6c0000010001 +d1c180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +36979 +b77c30cc50104470faed0000000000000000 +b77cb0c40000000000000000 + +36980 +b77c30cc50184470e39a0000008e4390000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd2f403c4eaf00030000002f4e544c4d535350000100000097b208e00900090026000000060006002000000056444c4d475256444c4d455441414c0000 +b77cb0c40000000000000000 + +36981 +d79e00000001000000000000037777770873706f7274757261026e6c0000010001 +d79e80000001000000030003037777770873706f7274757261026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +36982 +8e5400000001000000000000026e73076e65746c616e64026e6c0000010001 +8e5480000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +36983 +a5b7000000010000000000000b666c6169726f6e6c696e650b76726f75776f6e6c696e65026e6c0000010001 +a5b7800000010000000300000b666c6169726f6e6c696e650b76726f75776f6e6c696e65026e6c0000010001c01800020001000151800010036e733106666173747873036e657400c01800020001000151800006036e7332c03cc01800020001000151800006036e7333c03c + +36984 +b71c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b71c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +36985 +7a7d0000000100000000000003746462026e6c00000f0001 +7a7d8000000100000003000303746462026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004c2a55e5ac04000010001000151800004c356781cc052000100010001518000043ec58016 + +36986 +fd2300000001000000000000037777771064696a6b73747261766f65726d616e73026e6c0000010001 +fd2380000001000000020000037777771064696a6b73747261766f65726d616e73026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c03c + +36987 +352f0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +352f8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +36988 +352e00000001000000000000056b72616e740974656c656772616166026e6c0000010001 +352e80000001000000020000056b72616e740974656c656772616166026e6c0000010001c01200020001000151800013036e73300974656c656772616166036e657400c01200020001000151800006036e7331c034 + +36989 +b77c30da50114462fa5c0000000000000000 +b77cb0d40000000000000000 + +36990 +b6ea00000001000000000000084465537472616174024e4c00000f0001 +b6ea80000001000000020002084465537472616174024e4c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +36991 +0000000070024000d8d00000020405b401010402 +000080010000000000000000 + +36992 +96f100000001000000000000037777771964696a6b73747261766f65726d616e736164766f636174656e026e6c0000010001 +96f180000001000000020002037777771964696a6b73747261766f65726d616e736164766f636174656e026e6c0000010001c0100002000100015180000d046e73303105636f64696dc02ac01000020001000151800007046e733032c043c03e00010001000151800004d5f73004c05700010001000151800004d43d46c7 + +36993 +abe500000001000000000000026e7308767575727765726b026e6c0000010001 +abe580000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +36994 +89a10000000100000000000004646e7331057368656c6c026e6c0000010001 +89a18000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +36995 +6aba00000001000000000000036e733503777873026e6c0000010001 +6aba80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +36996 +1fe20000000100000000000007756e692d6f6e65026e6c00000f0001 +1fe28000000100000002000007756e692d6f6e65026e6c00000f0001c00c00020001000151800013036e733109752d73657276657273036e657400c00c00020001000151800006036e7332c02c + +36997 +353000000001000000000000056b72616e740974656c656772616166026e6c0000010001 +353080000001000000020000056b72616e740974656c656772616166026e6c0000010001c01200020001000151800013036e73300974656c656772616166036e657400c01200020001000151800006036e7331c034 + +36998 +656f00000001000000000000036e733209666972737466696e64026e6c0000010001 +656f80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +36999 +656e00000001000000000000036e733109666972737466696e64026e6c0000010001 +656e80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37000 +40e700000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +40e780000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37001 +b77c30db50104462fa5b0000000000000000 +b77cb0d40000000000000000 + +37002 +b77d061b50104470437c0000000000000000 +b77d80010000000000000000 + +37003 +fecc000000010000000000000745434f4e3232380867656d65656e74650c67656c6465726d616c73656e026e6c0000010001 +fecc800000010000000200020745434f4e3232380867656d65656e74650c67656c6465726d616c73656e026e6c0000010001c01d00020001000151800005026e73c01dc01d00020001000151800006036e7332c01dc03e00010001000151800004c143b9b5c04f00010001000151800004c143b9b6 + +37004 +a58700000001000000000000067461736b6974026e6c00000f0001 +a58780000001000000020002067461736b6974026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c013c00c00020001000151800006036e7332c02ac02700010001000151800004d4cb0e42c04200010001000151800004d4cb1221 + +37005 +db4100000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +db4180000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37006 +b77d061b501844701c460000008e5474000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd2f403c4eaf00030000002f4e544c4d535350000100000097b208e00900090026000000060006002000000056444c4d475256444c4d455441414c0000 +b77d80010000000000000000 + +37007 +19c0000000010000000000000a696e646570656e646572026e6c00000f0001 +19c0800000010000000300030a696e646570656e646572026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b00010001000151800004c2a55e5ac04700010001000151800004c356781cc059000100010001518000043ec58016 + +37008 +b77d06295011446242eb0000000000000000 +b77d80010000000000000000 + +37009 +000000007002400050950000020405b401010402 +000080010000000000000000 + +37010 +1d770000000100000000000003777777137569747661617274626567656c656964696e67026e6c0000010001 +1d778000000100000002000103777777137569747661617274626567656c656964696e67026e6c0000010001c0100002000100015180000a036e733303777873c024c01000020001000151800006036e7334c03cc04e00010001000151800004d5ef9a65 + +37011 +569d00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +569d80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37012 +ac4900000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +ac4980000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37013 +c2c30000000100000000000005646e732d31056c61646f74026e6c0000010001 +c2c38000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37014 +c2c40000000100000000000005646e732d32056c61646f74026e6c0000010001 +c2c48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37015 +34c00000000100000000000008616473657276657206776562616473026e6c0000010001 +34c08000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +37016 +7bb400000001000000000000037777770464626d6e026e6c0000010001 +7bb480000001000000020002037777770464626d6e026e6c0000010001c01000020001000151800002c010c0100002000100015180000d04646e733105692d702d64c015c01000010001000151800004d912403ac03700010001000151800004d9124003 + +37017 +a99a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +a99a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +37018 +1cf300000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +1cf380000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +37019 +b77d062a5010446242ea0000000000000000 +b77d80010000000000000000 + +37020 +b77dd9ff50104470e75b0000000000000000 + + +37021 +207d0000000100000000000103706f7003777873026e6c00000100010000290500000000000000 +207d8000000100000003000403706f7003777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +37022 +b77dd9ff501844701b610000008ef938000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd2f403c4eaf00030000002f4e544c4d535350000100000097b208e00900090026000000060006002000000056444c4d475256444c4d455441414c0000 + + +37023 +207d0000000100000000000003706f7003777873026e6c0000010001 +207d8000000100000003000303706f7003777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37024 +9d6f00000001000000000000037777770465706f78026e6c0000010001 +9d6f80000001000000020002037777770465706f78026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +37025 +f603000000010000000000000574657272610367656f027575026e6c0000010001 +f603800000010000000400040574657272610367656f027575026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000e036e733107737572666e6574c019c01600020001000151800006036e7333c016c02d0001000100015180000483d30405c03e0001000100015180000483d30406c05000010001000151800004c0576a65c06a0001000100015180000483d31020 + +37026 +a0b50000000100000000000003777777086b6c696b6575726f026e6c0000010001 +a0b58000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37027 +3f150000000100000000000003777777086b6c696b6575726f026e6c0000010001 +3f158000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37028 +309b0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +309b8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37029 +a7900000000100000000000003777777086b6c696b6575726f026e6c0000010001 +a7908000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37030 +5f3d0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +5f3d8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37031 +67eb0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +67eb8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37032 +b78f0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +b78f8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37033 +c7fb0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +c7fb8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37034 +89e20000000100000000000003777777086b6c696b6575726f026e6c0000010001 +89e28000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37035 +f02d0000000100000000000003777777086b6c696b6575726f026e6c0000010001 +f02d8000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37036 +10670000000100000000000003777777086b6c696b6575726f026e6c0000010001 +10678000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37037 +8fb40000000100000000000003777777086b6c696b6575726f026e6c0000010001 +8fb48000000100000002000203777777086b6c696b6575726f026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c019c01000020001000151800006036e7332c030c02d00010001000151800004d5e38d0ac04a00010001000151800004d5e38205 + +37038 +2342000000010000000000000d706f7474656e62616b6b657273026e6c00000f0001 +2342800000010000000200020d706f7474656e62616b6b657273026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c01ac00c00020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +37039 +fd53000000010000000000000463756369026e6c0000ff0001 +fd53800000010000000300030463756369026e6c0000ff0001c00c0002000100015180000904686572610178c00cc00c0002000100015180000c066865726d6573026e6cc00cc00c00020001000151800009066865726d6573c02ac02500010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +37040 +b77dda0d50114462e6ca0000000000000000 + + +37041 +039a00000001000000000000076672616e73656e026e6c00000f0001 +039a80000001000000030003076672616e73656e026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c014c00c0002000100015180000a076e736175746832c030c00c0002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +37042 +226a00000001000000000000036e733203746d6e026e6c0000010001 +226a80000001000000020002036e733203746d6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d5a0d8fac00c00010001000151800004d5a0d9fa + +37043 +497500000001000000000000036e733103746d6e026e6c0000010001 +497580000001000000020002036e733103746d6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5a0d8fac03600010001000151800004d5a0d9fa + +37044 +2ede00000001000000000000037777770867736d706c617a61026e6c0000010001 +2ede80000001000000020000037777770867736d706c617a61026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +37045 +891e00000001000000000000037777770a7265756d61666f6e6473026e6c0000010001 +891e80000001000000020002037777770a7265756d61666f6e6473026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +37046 +b77dda0e50104462e6c90000000000000000 + + +37047 +3b920000000100000000000003777777076176642d696374026e6c0000010001 +3b928000000100000002000203777777076176642d696374026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c018c01000020001000151800006036e7332c02fc02c00010001000151800004d453c005c04a00010001000151800004d453c006 + +37048 +d09b00000001000000000000036e7335046372696f026e6c0000010001 +d09b80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37049 +e45a00000001000000000000036e7336046372696f026e6c0000010001 +e45a80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37050 +801e000000010000000000000377777703776562026e6c0000010001 +801e800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +37051 +edd100000001000000000000036e7335046372696f026e6c0000010001 +edd180000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37052 +ac7500000001000000000000036e7336046372696f026e6c0000010001 +ac7580000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37053 +f8f20000000100000000000003646e730864617461736d6974026e6c0000010001 +f8f28000000100000002000203646e730864617461736d6974026e6c0000010001c01000020001000151800002c00cc0100002000100015180000704646e7331c010c00c0001000100015180000451045a82c03b0001000100015180000451045ade + +37054 +63870000000100000000000004646e73310864617461736d6974026e6c0000010001 +63878000000100000002000204646e73310864617461736d6974026e6c0000010001c0110002000100015180000603646e73c011c01100020001000151800002c00cc02e0001000100015180000451045a82c00c0001000100015180000451045ade + +37055 +a1ff000000010000000000000673636f72656e0b6e65747368697070657273026e6c0000010001 +a1ff800000010000000200020673636f72656e0b6e65747368697070657273026e6c0000010001c0130002000100015180000f03646e730864617461736d6974c01fc0130002000100015180000704646e7331c037c0330001000100015180000451045a82c04e0001000100015180000451045ade + +37056 +ebb9000000010000000000000b7265616c747261636b657207736974652d6964026e6c0000010001 +ebb9800000010000000300000b7265616c747261636b657207736974652d6964026e6c0000010001c01800020001000151800012036e733108626c7565646f6d65036e657400c01800020001000151800006036e7332c038c01800020001000151800006036e7333c038 + +37057 +259500100001000000000000037777770a6162626b726564696574026e6c0000010001 +259580000001000000020002037777770a6162626b726564696574026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01bc01000020001000151800006036e7332c033c02f00010001000151800004c3454b03c04b00010001000151800004d119a2fa + +37058 +344d00000001000000000000037777770a666476616b6265757273026e6c0000010001 +344d80000001000000020000037777770a666476616b6265757273026e6c0000010001c0100002000100015180000e036e7331076163742d6f6e65c01bc01000020001000151800006036e7332c033 + +37059 +5c4600000001000000000000036e7331076163742d6f6e65026e6c0000010001 +5c4680000001000000020000036e7331076163742d6f6e65026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c018c0100002000100015180000704686e7331c031 + +37060 +453000000001000000000000036e7332076163742d6f6e65026e6c0000010001 +453080000001000000020000036e7332076163742d6f6e65026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c018c0100002000100015180000704686e7331c031 + +37061 +c52f00000001000000000000037777770c736c696e67656c616e64666d026e6c0000010001 +c52f80000001000000020002037777770c736c696e67656c616e64666d026e6c0000010001c01000020001000151800010046e733031086465616e6d6f6f72c01dc01000020001000151800007046e733032c036c03100010001000151800004c1cbe123c04d00010001000151800004c1cbe124 + +37062 +a98d00000001000000000000037777770a64736c65787072657373026e6c0000010001 +a98d80000001000000020002037777770a64736c65787072657373026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +37063 +8f27000000010000000000000d76616e686f757464657369676e026e6c00000f0001 +8f27800000010000000200000d76616e686f757464657369676e026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c039 + +37064 +4459000000010000000000000874657573766c6f74026e6c00000f0001 +4459800000010000000200020874657573766c6f74026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +37065 +588f000000010000000000000377777717736c6f74656e706f6f72746d616e6d616b656c61617273026e6c0000010001 +588f840300010000000100000377777717736c6f74656e706f6f72746d616e6d616b656c61617273026e6c0000010001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +37066 +f627000000010000000000000261640b62616e6e65726d61726b74026e6c0000010001 +f627800000010000000300030261640b62616e6e65726d61726b74026e6c0000010001c00f0002000100015180000e076e73617574683103626974c01bc00f0002000100015180000a076e736175746832c037c00f0002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +37067 +9f62000000010000000000000a5354494e47534f4e4753026e6c0000020001 +9f62840300010000000100000a5354494e47534f4e4753026e6c0000020001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +37068 +4681000000010000000000000b74726f732d6c69766530310474726f73026e6c0000010001 +4681800000010000000200020b74726f732d6c69766530310474726f73026e6c0000010001c01800020001000151800010066d696e6e6965066f6d726f6570c01dc0180002000100015180000805726f62696ec038c03100010001000151800004913a1e04c04d00010001000151800004913a1a34 + +37069 +56910000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +56918000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37070 +d1260000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +d1268000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37071 +886c00000001000000000000026e73036d6c63026e6c0000010001 +886c80000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +37072 +d2a90000000100000000000003612d70026e6c0000010001 +d2a98000000100000002000003612d70026e6c0000010001c00c00020001000151800010036e73310673697465347503636f6d00c00c00020001000151800006036e7332c028 + +37073 +af8000000001000000000000046163616c026e6c00000f0001 +af8080000001000000020000046163616c026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c029 + +37074 +69f800000001000000000000037777770b6d61737465726c696e6b73026e6c0000010001 +69f880000001000000020002037777770b6d61737465726c696e6b73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +37075 +2dfa00000001000000000000036e733206787334616c6c026e6c0000010001 +2dfa80000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +37076 +f8c400000001000000000000037777770b6d61737465726c696e6b73026e6c0000010001 +f8c480000001000000020002037777770b6d61737465726c696e6b73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +37077 +2741000000010000000000000773747564656e740868736c656964656e026e6c0000010001 +2741800000010000000200020773747564656e740868736c656964656e026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01dc03100010001000151800004c3a95702c04300010001000151800004c0576a65 + +37078 +a8d900000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730a6e6d762d686477732d31026e6c0000210001 +a8d984030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730a6e6d762d686477732d31026e6c0000210001c04b00060001000038400036026e730f646f6d61696e2d7265676973747279c04b0a686f73746d6173746572c0620bf1e540000070800000384000278d0000003840 + +37079 +297e0000000100000000000006656d61696c73026e6c0000010001 +297e8000000100000003000006656d61696c73026e6c0000010001c00c0002000100015180000e036e73300477697368036e657400c00c00020001000151800006036e7331c02bc00c00020001000151800006036e7332c02b + +37080 +395800000001000000000000047777773309616c7465726e617465026e6c0000010001 +395880000001000000020002047777773309616c7465726e617465026e6c0000010001c01100020001000151800012036e73310b7669616e6574776f726b73c01bc01100020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +37081 +8ba10000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +8ba18000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37082 +034b0000000100000000000003777777046469686d026e6c0000010001 +034b8000000100000002000203777777046469686d026e6c0000010001c0100002000100015180000f026e7309656174736572766572c015c01000020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +37083 +32280000000100000000000006726f7574657203656274026e6c0000010001 +32288000000100000002000006726f7574657203656274026e6c0000010001c0130002000100015180000b026e73026e6c036e657400c0130002000100015180001206617574683630026e73026e6c027575c031 + +37084 +edc700000001000000000000037777770d7065746572766572686167656e026e6c0000010001 +edc780000001000000020000037777770d7065746572766572686167656e026e6c0000010001c0100002000100015180000f036e7336086a726f6e6c696e65c01ec01000020001000151800014036e73330d686f73746e656465726c616e64c01e + +37085 +08c90000000100000000000008686f76656c696e67026e6c00000f0001 +08c98000000100000002000208686f76656c696e67026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c015c00c00020001000151800006036e7334c02dc02900010001000151800004c372e7c8c04300010001000151800004c372e6fe + +37086 +b23d00000001000000000000036e73330d686f73746e656465726c616e64026e6c0000010001 +b23d80000001000000030002036e73330d686f73746e656465726c616e64026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +37087 +5df800000001000000000000036e7336086a726f6e6c696e65026e6c0000010001 +5df880000001000000020000036e7336086a726f6e6c696e65026e6c0000010001c01000020001000151800014036e73310d686f73746e656465726c616e64c019c01000020001000151800006036e7333c031 + +37088 +03d5001000010000000000010e63656e747261616c626568656572026e6c00000f00010000290800000080000000 +03d5800000010000000300040e63656e747261616c626568656572026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae0000291000000000000000 + +37089 +8b9900000001000000000000037777770c646574726f756261646f7572026e6c0000010001 +8b9980000001000000020000037777770c646574726f756261646f7572026e6c0000010001c0100002000100015180000f026e7306636170696361036e657400c01000020001000151800006036e7332c034 + +37090 +efeb00000001000000000000036e733209666972737466696e64026e6c0000010001 +efeb80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37091 +6b900000000100000000000003777777086e6f746963696173026e6c0000010001 +6b908000000100000002000203777777086e6f746963696173026e6c0000010001c0100002000100015180000b036e73310473626970c019c01000020001000151800006036e7332c031c02d00010001000151800004d4ccecf1c04400010001000151800004c3a99564 + +37092 +122900000001000000000000097363686164656e6574026e6c00000f0001 +122980000001000000020000097363686164656e6574026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c016c00c0002000100015180000704686e7331c02f + +37093 +e88500000001000000000000037777770a7269636b6d6f6c656d61026e6c0000010001 +e88580000001000000020000037777770a7269636b6d6f6c656d61026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c035 + +37094 +881000000001000000000000036674700663617374656c026e6c0000010001 +881080000001000000020002036674700663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +37095 +4eaf00000001000000000000036674700663617374656c026e6c0000010001 +4eaf80000001000000020002036674700663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +37096 +63000000000100000000000003777777077765627465616d026e6c0000010001 +63008000000100000002000003777777077765627465616d026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c02f + +37097 +15c600000001000000000000026e7308767575727765726b026e6c0000010001 +15c680000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +37098 +2f90000000010000000000000734657665727931026e6c00000f0001 +2f90800000010000000200010734657665727931026e6c00000f0001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +37099 +932f00000001000000000000036e73320b6368616d69646d65646961026e6c0000010001 +932f80000001000000020002036e73320b6368616d69646d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000452c0453fc00c0001000100015180000452c04540 + +37100 +5c9800000001000000000000036e73310b6368616d69646d65646961026e6c0000010001 +5c9880000001000000020002036e73310b6368616d69646d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c0453fc03e0001000100015180000452c04540 + +37101 +92a50000000100000000000005656e7465720431306572026e6c0000010001 +92a58000000100000002000205656e7465720431306572026e6c0000010001c0120002000100015180000f036e73310861746c616e74697ac017c01200020001000151800006036e7332c02fc02b00010001000151800004d5efa011c04600010001000151800004d5efa075 + +37102 +0f9100000001000000000000056d61696c3109636c65616e706f7274026e6c00001c0001 +0f9180000001000000020002056d61696c3109636c65616e706f7274026e6c00001c0001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +37103 +6b7700000001000000000000056d61696c3109636c65616e706f7274026e6c0000010001 +6b7780000001000000020002056d61696c3109636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +37104 +b11c00000001000000000000056d61696c3209636c65616e706f7274026e6c00001c0001 +b11c80000001000000020002056d61696c3209636c65616e706f7274026e6c00001c0001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +37105 +0c6400000001000000000000056d61696c3209636c65616e706f7274026e6c0000010001 +0c6480000001000000020002056d61696c3209636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +37106 +d4ad000000010000000000000d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001 +d4ad800000010000000200010d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001c01a0002000100015180000d036e7332066f7264696e61c025c01a00020001000151800011036e73320777697265687562036e657400c03900010001000151800004c297c1e9 + +37107 +5cc200100001000000000001026e7304696d636f026e6c00000100010000290800000080000000 +5cc280000001000000020002026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a0000291000000000000000 + +37108 +891b0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +891b8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +37109 +ee4f0000000100000000000006647269656465077765622d6c6f67026e6c0000010001 +ee4f8000000100000003000306647269656465077765622d6c6f67026e6c0000010001c0130002000100015180000b036e733104696c7365c01bc01300020001000151800006036e7332c033c01300020001000151800006036e7333c033c02f000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +37110 +3dd00000000100000000000009652d6c756e61746963026e6c0000010001 +3dd08000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37111 +e10a28000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d736463731276616e64696a6b63736164766f636174656e026e6c0000210001000002580024000000640cc4067365727665721276616e64696a6b63736164766f636174656e026e6c00 +e10aa8040000000000000000 + +37112 +07b200000001000000000000037777770b6465706f6d7061646f7572026e6c0000010001 +07b280000001000000030001037777770b6465706f6d7061646f7572026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +37113 +b66400000001000000000000136c617362656472696a6664656e686172746f67026e6c0000010001 +b66480000001000000020000136c617362656472696a6664656e686172746f67026e6c0000010001c00c00020001000151800013036e733109326575726f686f737403636f6d00c00c00020001000151800006036e7332c038 + +37114 +9b8b00000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +9b8b80000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +37115 +6c0e000000010000000000000f65726f746973636b6c696b6c696a6e026e6c0000010001 +6c0e840300010000000100000f65726f746973636b6c696b6c696a6e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +37116 +742200000001000000000000036e73320b7669616e6574776f726b73026e6c0000260001 +742280000001000000020002036e73320b7669616e6574776f726b73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +37117 +0000000070024000b66a00000204053401010402 +000080010000000000000000 + +37118 +0389000000010000000000000762616e6e65727303647161026e6c0000010001 +0389800000010000000200000762616e6e65727303647161026e6c0000010001c0140002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0140002000100015180000805726f6b696ec033 + +37119 +b70f000000010000000000000a70657263657074696f6e10746869656d656d65756c656e686f6666026e6c0000010001 +b70f800000010000000200020a70657263657074696f6e10746869656d656d65756c656e686f6666026e6c0000010001c0170002000100015180000c036e73310564656d6f6ec028c01700020001000151800006036e7332c040c03c00010001000151800004c29f4906c05400010001000151800004c29fb004 + +37120 +497d00000001000000000000034e533108485a45454c414e44026e6c00001c0001 +497d80000001000000040004034e533108485a45454c414e44026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c00c0001000100015180000491130101c03b00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +37121 +6a5700000001000000000000034e533108485a45454c414e44026e6c0000010001 +6a5780000001000000040004034e533108485a45454c414e44026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c00c0001000100015180000491130101c03b00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +37122 +f61800000001000000000000034e533208485a45454c414e44026e6c00001c0001 +f61880000001000000040004034e533208485a45454c414e44026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c02d0001000100015180000491130101c00c00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +37123 +3b3d00000001000000000000034e533208485a45454c414e44026e6c0000010001 +3b3d80000001000000040004034e533208485a45454c414e44026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000b086d6965706d696570c010c0100002000100015180000e036e733107737572666e6574c019c02d0001000100015180000491130101c00c00010001000151800004911301dcc04d00010001000151800004911334dec06400010001000151800004c0576a65 + +37124 +0b0f00000001000000000000037777770a7365782d7a6f656b6572026e6c0000010001 +0b0f80000001000000020000037777770a7365782d7a6f656b6572026e6c0000010001c0100002000100015180000f026e73096379626572636f6d6dc01bc01000020001000151800006036e7332c032 + +37125 +ab3900000001000000000000037777771167726174697373657866696c6d706a6573026e6c0000010001 +ab3980000001000000030003037777771167726174697373657866696c6d706a6573026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc022c0100002000100015180000704646e7332c03bc0100002000100015180000704646e7333c03bc03600010001000151800004d44fe803c05000010001000151800004c3f5c782c06300010001000151800004d44ff303 + +37126 +53eb00000001000000000000096863632d67726f6570026e6c0000010001 +53eb80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +37127 +6e5d00000001000000000001036e73320b776f726c646f6e6c696e65026e6c00000100010000291000000000000000 +6e5d80000001000000030003036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f133250000291000000000000000 + +37128 +9fe300000001000000000001036e73320b776f726c646f6e6c696e65026e6c00001c00010000291000000000000000 +9fe380000001000000030003036e73320b776f726c646f6e6c696e65026e6c00001c0001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f133250000291000000000000000 + +37129 +cea000000001000000000001036e73320b776f726c646f6e6c696e65026e6c00002600010000291000000000000000 +cea080000001000000030003036e73320b776f726c646f6e6c696e65026e6c0000260001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f133250000291000000000000000 + +37130 +623c00000001000000000000096e6f736e6965757773026e6c0000010001 +623c80000001000000020002096e6f736e6965757773026e6c0000010001c00c00020001000151800010066d696e6e6965066f6d726f6570c016c00c0002000100015180000805726f62696ec031c02a00010001000151800004913a1e04c04600010001000151800004913a1a34 + +37131 +b77f5e2550104470c8890000000000000000 +b77fde240000000000000000 + +37132 +e535000000010000000000000a636172732d7061727473026e6c0000ff0001 +e535800000010000000200020a636172732d7061727473026e6c0000ff0001c00c00020001000151800014036e73310d78786c776562686f7374696e67c017c00c00020001000151800006036e7332c02fc02b000100010001518000045104580ac04b000100010001518000045104601e + +37133 +b77f5e2550184470c1d00000009411de000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03d4403c55540003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 +b77fde240000000000000000 + +37134 +afe600000001000000000000036e73310a63796265726d65646961026e6c0000010001 +afe680000001000000020002036e73310a63796265726d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e818c0ac03d000100010001518000043e3a2d99 + +37135 +f33f00000001000000000000036e73320a63796265726d65646961026e6c0000010001 +f33f80000001000000020002036e73320a63796265726d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000043e818c0ac00c000100010001518000043e3a2d99 + +37136 +d1250000000100000000000003706f70076a616e76616c6b026e6c0000010001 +d1258000000100000002000003706f70076a616e76616c6b026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +37137 +eb0000000001000000000001026e73076e656473746174026e6c00001c00010000291000000000000000 +eb0080000001000000020003026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +37138 +ca9700000001000000000001026e73076e656473746174026e6c00002600010000291000000000000000 +ca9780000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +37139 +eeec00000001000000000001036e7332076e656473746174026e6c00000100010000291000000000000000 +eeec80000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37140 +b77f5e3350114462c7f20000000000000000 +b77fde340000000000000000 + +37141 +c5bd00000001000000000001036e7332076e656473746174026e6c00001c00010000291000000000000000 +c5bd80000001000000020003036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37142 +81cc00000001000000000001036e7332076e656473746174026e6c00002600010000291000000000000000 +81cc80000001000000020003036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37143 +575300000001000000000001036e7333076e656473746174026e6c00001c00010000291000000000000000 +575380000001000000020003036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +37144 +88e600000001000000000001036e7333076e656473746174026e6c00002600010000291000000000000000 +88e680000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +37145 +48e00000000100000000000003777777097364677477656c6c6f026e6c0000010001 +48e08000000100000002000103777777097364677477656c6c6f026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +37146 +957500000001000000000001036e7334076e656473746174026e6c00000100010000291000000000000000 +957580000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37147 +fe590000000100000000000008686f73746e616d650462696e640000100003 +fe598000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37148 +feb000000001000000000001036e7334076e656473746174026e6c00001c00010000291000000000000000 +feb080000001000000020003036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37149 +3e2c00000001000000000000037777770e6f63636173696f6e63656e747265026e6c0000010001 +3e2c80000001000000030001037777770e6f63636173696f6e63656e747265026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01fc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c051c033000100010001518000043efa0202 + +37150 +0000000070024000625d00000204053401010402 +000080010000000000000000 + +37151 +600700000001000000000001036e7334076e656473746174026e6c00002600010000291000000000000000 +600780000001000000020003036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +37152 +68ae000000010000000000000e736f75726365666c657863617265026e6c00000f0001 +68ae800000010000000200020e736f75726365666c657863617265026e6c00000f0001c00c0002000100015180000d026e73076e65746c616e64c01bc00c00020001000151800006036e7332c032c02f00010001000151800004d9aa2042c04800010001000151800004d9aa2c06 + +37153 +b77f5e3450104462c7f10000000000000000 +b77fde340000000000000000 + +37154 +5f4200000001000000000000037777770f6d757365756d626f65726861617665026e6c0000010001 +5f4280000001000000020002037777770f6d757365756d626f65726861617665026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c020c01000020001000151800006036e7332c038c03400010001000151800004d4b20403c04d00010001000151800004d5881e45 + +37155 +2ba000000001000000000000036e73340767617574656e67026e6c0000010001 +2ba080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37156 +13ae00000001000000000000036e73340767617574656e67026e6c0000010001 +13ae80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37157 +d19c00000001000000000000046d61696c0b776174657273747564696f026e6c0000010001 +d19c80000001000000030003046d61696c0b776174657273747564696f026e6c0000010001c0110002000100015180000c036e7331053266617374c01dc01100020001000151800006036e7332c035c01100020001000151800006036e7333c035c0310001000100015180000450f7c022c049000100010001518000043e858122c05b000100010001518000045117eb22 + +37158 +b0ac000000010000000000001162616b6b6572626172656e647265636874026e6c00000f0001 +b0ac800000010000000200001162616b6b6572626172656e647265636874026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c036 + +37159 +31950000000100000000000008686f73746e616d650462696e640000100003 +31958000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37160 +c08f0000000100000000000008686f73746e616d650462696e640000100003 +c08f8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37161 +49e300000001000000000000026e7304696d636f026e6c0000010001 +49e380000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +37162 +b7821b2150104470b77d0000000000000000 +b7829b240000000000000000 + +37163 +ec8d00000001000000000000036e733106776964657873026e6c0000010001 +ec8d80000001000000030002036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +37164 +a10f00000001000000000000036e733306776964657873026e6c0000010001 +a10f80000001000000030002036e733306776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa0703 + +37165 +b7821b2150184470cf8800000094f41a000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03d4403c55540003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 +b7829b240000000000000000 + +37166 +cfdf00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +cfdf80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37167 +213900000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +213980000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37168 +3683000000010000000000000377777707696e6762616e6b026e6c0000010001 +3683800000010000000200020377777707696e6762616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c018c01000020001000151800006036e7332c030c02c0001000100015180000491dd19c2c0420001000100015180000491dd5dc2 + +37169 +0b510000000100000000000008746f706c696a73740b676966706c6161746a6573026e6c0000010001 +0b518000000100000002000008746f706c696a73740b676966706c6161746a6573026e6c0000010001c01500020001000151800013036e73310c616374697665646f6d61696ec021c01500020001000151800006036e7332c039 + +37170 +62140000000100000000000005646830373406787334616c6c026e6c0000010001 +62148000000100000003000205646830373406787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +37171 +45a50000000100000000000004696c73650861726e6f73746174026e6c0000010001 +45a58000000100000002000204696c73650861726e6f73746174026e6c0000010001c0110002000100015180000e026e7308696e7465722d6974c01ac01100020001000151800006036e7332c031c02e00010001000151800004d5c4385ac04800010001000151800004d5c4385b + +37172 +7656000000010000000000000377777714686f7574766573746572696a656e6865746c6f6f026e6c0000010001 +7656840300010000000100000377777714686f7574766573746572696a656e6865746c6f6f026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +37173 +468c0000000100000000000008686f73746e616d650462696e640000100003 +468c8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37174 +a57700000001000000000000036e733105696e746578026e6c00001c0001 +a57780000001000000020002036e733105696e746578026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047378c0380001000100015180000451047379 + +37175 +d58d00000001000000000000036e733105696e746578026e6c0000260001 +d58d80000001000000020002036e733105696e746578026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047378c0380001000100015180000451047379 + +37176 +d2c500000001000000000000036e733205696e746578026e6c00001c0001 +d2c580000001000000020002036e733205696e746578026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a0001000100015180000451047378c00c0001000100015180000451047379 + +37177 +8eaa00000001000000000000036e733205696e746578026e6c0000260001 +8eaa80000001000000020002036e733205696e746578026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a0001000100015180000451047378c00c0001000100015180000451047379 + +37178 +6e5d00000001000000000000036e73320b776f726c646f6e6c696e65026e6c0000010001 +6e5d80000001000000030002036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +37179 +9fe300000001000000000000036e73320b776f726c646f6e6c696e65026e6c00001c0001 +9fe380000001000000030002036e73320b776f726c646f6e6c696e65026e6c00001c0001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +37180 +cea000000001000000000000036e73320b776f726c646f6e6c696e65026e6c0000260001 +cea080000001000000030002036e73320b776f726c646f6e6c696e65026e6c0000260001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +37181 +b7821b2f50114462b6e60000000000000000 +b7829b240000000000000000 + +37182 +0000000070024000723e00000204053401010402 +000080010000000000000000 + +37183 +7d2700000001000000000000037777770c6261737374726f6d626f6e65026e6c0000010001 +7d2780000001000000020000037777770c6261737374726f6d626f6e65026e6c0000010001c01000020001000151800015036e73350b686f7374696e67776f7278036e657400c01000020001000151800006036e7336c035 + +37184 +b77a0000000100000000000009676f6c662d6c616e64026e6c0000ff0001 +b77a8000000100000002000109676f6c662d6c616e64026e6c0000ff0001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +37185 +213600100001000000000001037777770e776562686f7374696e6774616c6b026e6c00000100010000290800000080000000 +213680000001000000030003037777770e776562686f7374696e6774616c6b026e6c0000010001c01000020001000151800012036e73310b6b6c696b686f7374696e67c01fc01000020001000151800006036e7332c037c01000020001000151800015036e73310b6b6c696b686f7374696e6703636f6d00c033000100010001518000044260dd7ec051000100010001518000044260dd7f0000291000000000000000 + +37186 +aaf400000001000000000000037777770d6475746368746f707369746573026e6c0000010001 +aaf480000001000000020002037777770d6475746368746f707369746573026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01ec01000020001000151800006036e7332c036c03200010001000151800004d5efa011c04d00010001000151800004d5efa075 + +37187 +a8a700000001000000000000037777770a677265656e706c617a61026e6c0000010001 +a8a780000001000000020000037777770a677265656e706c617a61026e6c0000010001c01000020001000151800019046e7331310e666c6578776562686f7374696e6703636f6d00c01000020001000151800007046e733132c034 + +37188 +be0d0000000100000000000007646f6c66696a6e026e6c00000f0001 +be0d8000000100000003000307646f6c66696a6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +37189 +b7821b3050104462b6e50000000000000000 +b7829b340000000000000000 + +37190 +9ed000000001000000000000026d6907756e696d616173026e6c00000f0001 +9ed080000001000000030003026d6907756e696d616173026e6c00000f0001c00f0002000100015180000906726c30303031c00fc00f0002000100015180000906696361737332c00fc00f0002000100015180000e036e733107737572666e6574c017c02b0001000100015180000489780101c0400001000100015180000489780105c05500010001000151800004c0576a65 + +37191 +a12d0000000100000000000003777777036f7662026e6c0000010001 +a12d8000000100000002000003777777036f7662026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02c + +37192 +b782ac965010447035e90000000000000000 + + +37193 +b782ac9650184470f0ae000000945160000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03d4403c55540003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 + + +37194 +b4e10000000100000000000003777777046476686e026e6c0000010001 +b4e18000000100000003000303777777046476686e026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004c1ad573dc04600010001000151800004c1ad573ec05800010001000151800004d5880089 + +37195 +149700000001000000000000036e733503777873026e6c0000010001 +149780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37196 +92d700000001000000000000037777770e686367656c6465726d616c73656e026e6c0000010001 +92d780000001000000020000037777770e686367656c6465726d616c73656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c039 + +37197 +e72b000000010000000000000d766f726b686566747275636b73026e6c0000010001 +e72b800000010000000200000d766f726b686566747275636b73026e6c0000010001c00c0002000100015180000c036e723705692d702d64c01ac00c00020001000151800006036e7236c032 + +37198 +4ebe000000010000000000000976616e2d6c69657265026e6c00001c0001 +4ebe800000010000000200020976616e2d6c69657265026e6c00001c0001c00c0002000100015180000a036e733103696166c016c00c00020001000151800006036e7332c02ec02a000100010001518000045059e040c040000100010001518000045059ee03 + +37199 +64250000000100000000000003777777046a686d73026e6c0000010001 +64258000000100000002000003777777046a686d73026e6c0000010001c0100002000100015180000c026e7306766576696461c015c01000020001000151800006036e7332c02c + +37200 +6a4f00000001000000000000086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001 +6a4f80000001000000020002086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001c0220002000100015180000d036e7331066d696e646566c027c02200020001000151800006036e7332c03fc03b00010001000151800004d9a9e7c6c05400010001000151800004d9a9e7c5 + +37201 +788d0000000100000000000004676174650365706f026e6c0000010001 +788d8000000100000002000104676174650365706f026e6c0000010001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c0001000100015180000491408003 + +37202 +dd8300000001000000000000036e733203757063026e6c0000010001 +dd8380000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +37203 +b782aca45011446235520000000000000000 + + +37204 +86fb00000001000000000000036e7331026973026e6c0000010001 +86fb80000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +37205 +57ad00000001000000000000036e7332026973026e6c0000010001 +57ad80000001000000020002036e7332026973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5852102c00c00010001000151800004d5c41503 + +37206 +a2030000000100000000000007676c696d707365026e6c0000ff0001 +a2038000000100000002000007676c696d707365026e6c0000ff0001c00c00020001000151800012036e7335087a6f6e656564697403636f6d00c00c00020001000151800006036e7337c02c + +37207 +3a99000000010000000000000962656472696a76656e0c6d6f6e73746572626f617264026e6c0000010001 +3a99800000010000000300000962656472696a76656e0c6d6f6e73746572626f617264026e6c0000010001c0160002000100015180000e036e733104746d7077036e657400c01600020001000151800006036e7332c03bc01600020001000151800015056f73636172076d6f6e7374657202636f02756b00 + +37208 +95cf000000010000000000000874657472616e6564026e6c0000ff0001 +95cf800000010000000200020874657472616e6564026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +37209 +cb0100000001000000000000037777770a7374617274706f696e74026e6c0000010001 +cb0180000001000000020002037777770a7374617274706f696e74026e6c0000010001c0100002000100015180000f04646e7331076e65647a6f6e65c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d9aa0101c04a00010001000151800004d9aa0128 + +37210 +b782aca55010446235510000000000000000 + + +37211 +c5c500000001000000000000036e733108696e7465722d7873026e6c0000010001 +c5c580000001000000020002036e733108696e7465722d7873026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02d000100010001518000043e0452abc00c000100010001518000043e0452ac + +37212 +229c00000001000000000000036e733008696e7465722d7873026e6c0000010001 +229c80000001000000020002036e733008696e7465722d7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c000100010001518000043e0452abc03b000100010001518000043e0452ac + +37213 +67320000000100000000000005646e732d3708696e7465722d7873026e6c00001c0001 +67328000000100000002000205646e732d3708696e7465722d7873026e6c00001c0001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +37214 +74580000000100000000000005646e732d3708696e7465722d7873026e6c0000260001 +74588000000100000002000205646e732d3708696e7465722d7873026e6c0000260001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +37215 +ac2a0000000100000000000005646e732d3808696e7465722d7873026e6c00001c0001 +ac2a8000000100000002000205646e732d3808696e7465722d7873026e6c00001c0001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +37216 +84790000000100000000000005646e732d3808696e7465722d7873026e6c0000260001 +84798000000100000002000205646e732d3808696e7465722d7873026e6c0000260001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +37217 +55b70000000100000000000003656c3107696e7465727873026e6c00001c0001 +55b78000000100000002000203656c3107696e7465727873026e6c00001c0001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37218 +f0d20000000100000000000003656c3107696e7465727873026e6c0000260001 +f0d28000000100000002000203656c3107696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37219 +11a30000000100000000000003656c3207696e7465727873026e6c00001c0001 +11a38000000100000002000203656c3207696e7465727873026e6c00001c0001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37220 +ae4b0000000100000000000003656c3207696e7465727873026e6c0000260001 +ae4b8000000100000002000203656c3207696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37221 +e7280000000100000000000003656c3307696e7465727873026e6c00001c0001 +e7288000000100000002000203656c3307696e7465727873026e6c00001c0001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37222 +51180000000100000000000003656c3307696e7465727873026e6c0000260001 +51188000000100000002000203656c3307696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37223 +61380000000100000000000003656c3407696e7465727873026e6c00001c0001 +61388000000100000002000203656c3407696e7465727873026e6c00001c0001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37224 +0c6c0000000100000000000003656c3407696e7465727873026e6c0000260001 +0c6c8000000100000002000203656c3407696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37225 +eb0000000001000000000000026e73076e656473746174026e6c00001c0001 +eb0080000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +37226 +ff060000000100000000000009737461676563726577026e6c00000f0001 +ff068000000100000003000309737461676563726577026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c016c00c0002000100015180000a076e736175746832c032c00c0002000100015180000a076e736175746833c032c02a00010001000151800004d5880c33c04400010001000151800004d5880c3bc05a00010001000151800004d4ccc00b + +37227 +e3d600000001000000000000036e7331057061727365026e6c00001c0001 +e3d680000001000000020002036e7331057061727365026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9b0bc03800010001000151800004d5efb238 + +37228 +b7f400000001000000000000036e7331057061727365026e6c0000260001 +b7f480000001000000020002036e7331057061727365026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9b0bc03800010001000151800004d5efb238 + +37229 +c9a700000001000000000000036e7332057061727365026e6c00001c0001 +c9a780000001000000020002036e7332057061727365026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5ef9b0bc00c00010001000151800004d5efb238 + +37230 +76a600000001000000000000036e7332057061727365026e6c0000260001 +76a680000001000000020002036e7332057061727365026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5ef9b0bc00c00010001000151800004d5efb238 + +37231 +ca9700000001000000000000026e73076e656473746174026e6c0000260001 +ca9780000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +37232 +eeec00000001000000000000036e7332076e656473746174026e6c0000010001 +eeec80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37233 +c5bd00000001000000000000036e7332076e656473746174026e6c00001c0001 +c5bd80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37234 +81cc00000001000000000000036e7332076e656473746174026e6c0000260001 +81cc80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37235 +e04c000000010000000000000377777705686572636f026e6c0000010001 +e04c800000010000000200020377777705686572636f026e6c0000010001c01000020001000151800012036e73310b69666163696c6974696573c016c01000020001000151800006036e7332c02ec02a00010001000151800004d9164306c04800010001000151800004d9164307 + +37236 +575300000001000000000000036e7333076e656473746174026e6c00001c0001 +575380000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +37237 +88e600000001000000000000036e7333076e656473746174026e6c0000260001 +88e680000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +37238 +957500000001000000000000036e7334076e656473746174026e6c0000010001 +957580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37239 +feb000000001000000000000036e7334076e656473746174026e6c00001c0001 +feb080000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37240 +600700000001000000000000036e7334076e656473746174026e6c0000260001 +600780000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37241 +003d00000001000000000000046d61696c03637478024e4c0000010001 +003d80000001000000020000046d61696c03637478024e4c0000010001c0110002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0110002000100015180000d077669312d6e7330026174c034 + +37242 +04db00000001000000000000037777770c62726f65726d616e6e636172026e6c0000010001 +04db80000001000000020000037777770c62726f65726d616e6e636172026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c034 + +37243 +7c9900000001000000000000036e73320670726f6d6178026e6c0000010001 +7c9980000001000000020002036e73320670726f6d6178026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004d590ef19c00c00010001000151800004d590ef1a + +37244 +33b700000001000000000000026e730670726f6d6178026e6c0000010001 +33b780000001000000020002026e730670726f6d6178026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d590ef19c03800010001000151800004d590ef1a + +37245 +58aa00000001000000000000037777770c646f63656e74656e62616e6b026e6c0000010001 +58aa80000001000000020002037777770c646f63656e74656e62616e6b026e6c0000010001c01000020001000151800010036e7331097468652d676c6f6265c01dc01000020001000151800006036e7332c035c03100010001000151800004d584b482c04d00010001000151800004d584b483 + +37246 +56130000000100000000000003777777086f6e6568656c6c6f026e6c0000010001 +56138000000100000002000203777777086f6e6568656c6c6f026e6c0000010001c0100002000100015180000e036e73310770726f74656f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004c1433804c04700010001000151800004d4992b27 + +37247 +1ef80000000100000000000003777777086f6e6568656c6c6f026e6c0000010001 +1ef88000000100000002000203777777086f6e6568656c6c6f026e6c0000010001c0100002000100015180000e036e73310770726f74656f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004c1433804c04700010001000151800004d4992b27 + +37248 +c3270000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c3278000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37249 +5cce01000001000000000000036e733104686f6d65026e6c0000010001 +5cce81000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +37250 +42110000000100000000000004746f6465026e6c00000f0001 +42118000000100000002000204746f6465026e6c00000f0001c00c0002000100015180000c036e7331056d61786573c011c00c00020001000151800006036e7332c029c025000100010001518000045045402ec03d000100010001518000045045402f + +37251 +bb1e000000010000000000000745434f4e3232380c67656c6465726d616c73656e026e6c0000010001 +bb1e800000010000000200020745434f4e3232380c67656c6465726d616c73656e026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c03500010001000151800004c143b9b5c04600010001000151800004c143b9b6 + +37252 +bc99000000010000000000000377777703736173026e6c0000010001 +bc99800000010000000300000377777703736173026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c02ec0100002000100015180000805646e733132c02e + +37253 +cac7000000010000000000000e63656e747261616c626568656572026e6c00000f0001 +cac7800000010000000300030e63656e747261616c626568656572026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +37254 +f6a40000000100000000000006736d7470303104756e6574026e6c0000010001 +f6a48000000100000002000006736d7470303104756e6574026e6c0000010001c01300020001000151800013036e733109752d73657276657273036e657400c01300020001000151800006036e7332c030 + +37255 +65900000000100000000000006736d7470303204756e6574026e6c0000010001 +65908000000100000002000006736d7470303204756e6574026e6c0000010001c01300020001000151800013036e733109752d73657276657273036e657400c01300020001000151800006036e7332c030 + +37256 +68720000000100000000000006736d7470303104756e6574026e6c0000010001 +68728000000100000002000006736d7470303104756e6574026e6c0000010001c01300020001000151800013036e733109752d73657276657273036e657400c01300020001000151800006036e7332c030 + +37257 +adcb00000001000000000000036e7331026973026e6c0000010001 +adcb80000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +37258 +a78d00000001000000000000037777770b7363686970706572746a65026e6c0000010001 +a78d80000001000000020002037777770b7363686970706572746a65026e6c0000010001c0100002000100015180000b036e73310467766473c01cc01000020001000151800006036e7332c034c030000100010001518000043e3a8989c047000100010001518000043e3a898a + +37259 +69b700100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +69b780000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +37260 +1a3d00100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +1a3d80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +37261 +c85a0000000100000000000003777777097368617261706f7661026e6c0000010001 +c85a8000000100000003000003777777097368617261706f7661026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +37262 +bcf4000000010000000000000377777712666565737470616c6569736e6577796f726b026e6c0000010001 +bcf4800000010000000200020377777712666565737470616c6569736e6577796f726b026e6c0000010001c0100002000100015180000f026e7309656174736572766572c023c01000020001000151800006036e7332c03ac03700010001000151800004d4cb0e42c05200010001000151800004d4cb1221 + +37263 +a740000000010000000000000c6672657368737570706f7274026e6c00000f0001 +a740800000010000000300030c6672657368737570706f7274026e6c00000f0001c00c0002000100015180000e036e73310761737034616c6cc019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +37264 +48da000000010000000000000377777706726964657273026e6c0000010001 +48da800000010000000200020377777706726964657273026e6c0000010001c0100002000100015180000a036e733103697767c017c01000020001000151800006036e7332c02fc02b0001000100015180000451045bbfc04100010001000151800004511135a1 + +37265 +3cf700000001000000000000037777770e776562686f7374696e6774616c6b026e6c0000010001 +3cf780000001000000030002037777770e776562686f7374696e6774616c6b026e6c0000010001c01000020001000151800012036e73310b6b6c696b686f7374696e67c01fc01000020001000151800006036e7332c037c01000020001000151800015036e73310b6b6c696b686f7374696e6703636f6d00c033000100010001518000044260dd7ec051000100010001518000044260dd7f + +37266 +56990000000100000000000003777777076172636f62656c026e6c0000010001 +56998000000100000002000003777777076172636f62656c026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +37267 +229a00000001000000000000046d61696c0a706861726d617061636b026e6c0000010001 +229a80000001000000020000046d61696c0a706861726d617061636b026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c036 + +37268 +4f8800000001000000000000037777770d676f727465722d6c75696b656e026e6c0000010001 +4f8880000001000000020002037777770d676f727465722d6c75696b656e026e6c0000010001c01000020001000151800019036e73311277696e646b7261636874696e7465726e6574c01ec01000020001000151800006036e7332c036c0320001000100015180000450f2eea1c0570001000100015180000450f2eea2 + +37269 +7b2d00000001000000000000026e7303626974026e6c0000010001 +7b2d80000001000000030003026e7303626974026e6c0000010001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b + +37270 +bdd600000001000000000000066a77626f6f6e026e6c0000010001 +bdd680000001000000030002066a77626f6f6e026e6c0000010001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +37271 +092a00000001000000000000037777770e616c6c6573696e74696c62757267026e6c0000010001 +092a80000001000000030003037777770e616c6c6573696e74696c62757267026e6c0000010001c0100002000100015180000e076e73617574683103626974c01fc0100002000100015180000a076e736175746832c03bc0100002000100015180000a076e736175746833c03bc03300010001000151800004d5880c33c04d00010001000151800004d5880c3bc06300010001000151800004d4ccc00b + +37272 +f21f000000010000000000000377777707646f7269746f73026e6c0000010001 +f21f800000010000000300030377777707646f7269746f73026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c3f13ceec04800010001000151800004c372eb43c05a000100010001518000043e320e8f + +37273 +d428000000010000000000000a68616d69666c65757273026e6c00001c0001 +d428800000010000000300030a68616d69666c65757273026e6c00001c0001c00c0002000100015180000f036e7331086e6f766178657373c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b00010001000151800004d5c98015c04600010001000151800004d5c9bf12c05800010001000151800004d5ef9c26 + +37274 +70f80000000100000000000009756974657277696a6b06787334616c6c026e6c0000010001 +70f88000000100000003000209756974657277696a6b06787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +37275 +e1d000000001000000000000037777770668696e676973026e6c0000010001 +e1d080000001000000020000037777770668696e676973026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +37276 +f2e80000000100000000000009756974657277696a6b06787334616c6c026e6c0000010001 +f2e88000000100000003000209756974657277696a6b06787334616c6c026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +37277 +0aaa00000001000000000000036e733503777873026e6c0000010001 +0aaa80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37278 +41af0000000100000000000008656c63686561706f026e6c0000010001 +41af8000000100000002000008656c63686561706f026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02d + +37279 +af6e0000000100000000000003777777087467766c6564656e026e6c0000010001 +af6e8000000100000002000003777777087467766c6564656e026e6c0000010001c01000020001000151800011036e733107726f6b73636f6d036e657400c0100002000100015180000e036e733207726f6b73636f6dc019 + +37280 +9ceb00000001000000000000046d61696c06626172746967026e6c0000010001 +9ceb80000001000000020002046d61696c06626172746967026e6c0000010001c01100020001000151800010036e733109686f73746e65746276c018c01100020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +37281 +00f900000001000000000000076e6577796f726b066f6e65646576026e6c00001c0001 +00f980000001000000020002076e6577796f726b066f6e65646576026e6c00001c0001c01400020001000151800008056d69616d69c014c01400020001000151800002c00cc02f00010001000151800004d5ef8255c00c00010001000151800004d5ef82eb + +37282 +4ab900000001000000000000076e6577796f726b066f6e65646576026e6c0000260001 +4ab980000001000000020002076e6577796f726b066f6e65646576026e6c0000260001c01400020001000151800008056d69616d69c014c01400020001000151800002c00cc02f00010001000151800004d5ef8255c00c00010001000151800004d5ef82eb + +37283 +fcbb00000001000000000000056d69616d69066f6e65646576026e6c00001c0001 +fcbb80000001000000020002056d69616d69066f6e65646576026e6c00001c0001c01200020001000151800002c00cc0120002000100015180000a076e6577796f726bc012c00c00010001000151800004d5ef8255c03b00010001000151800004d5ef82eb + +37284 +3d4400000001000000000000056d69616d69066f6e65646576026e6c0000260001 +3d4480000001000000020002056d69616d69066f6e65646576026e6c0000260001c01200020001000151800002c00cc0120002000100015180000a076e6577796f726bc012c00c00010001000151800004d5ef8255c03b00010001000151800004d5ef82eb + +37285 +2ed800000001000000000000126175746f62656472696a6664656c616e6765026e6c00000f0001 +2ed880000001000000030001126175746f62656472696a6664656c616e6765026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01fc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c051c033000100010001518000043efa0202 + +37286 +9f8200000001000000000000037777770565626f6e65026e6c0000010001 +9f8280000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +37287 +f06f0000000100000000000003777777097368617261706f7661026e6c0000010001 +f06f8000000100000003000003777777097368617261706f7661026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +37288 +04c000000001000000000000037777770565626f6e65026e6c0000010001 +04c080000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +37289 +5dd900000001000000000000037777770565626f6e65026e6c0000010001 +5dd980000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +37290 +507000000001000000000000037777770a77616e6e616861766573026e6c0000010001 +507080000001000000020002037777770a77616e6e616861766573026e6c0000010001c0100002000100015180000b026e7305706c616e74c01bc01000020001000151800006036e7332c032c02f00010001000151800004d59f0037c04600010001000151800004d59f0046 + +37291 +9b6300000001000000000000037777770a736d7574736572766572026e6c0000010001 +9b6380000001000000020002037777770a736d7574736572766572026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efa011c04a00010001000151800004d5efa075 + +37292 +8fc10000000100000000000003777777087364626d706c7573026e6c0000010001 +8fc18000000100000002000203777777087364626d706c7573026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c019c01000020001000151800006036e7332c030c02d00010001000151800004c3402003c04600010001000151800004c340202b + +37293 +893900000001000000000000037777771062616e6e65726d616e6167656d656e74026e6c0000010001 +893980000001000000030003037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +37294 +bea900000001000000000000096f75646577617465720a776f657264656e776562026e6c0000010001 +bea980000001000000020000096f75646577617465720a776f657264656e776562026e6c0000010001c01600020001000151800013036e733009696e7465726c697a65036e657400c01600020001000151800006036e7331c039 + +37295 +03db00000001000000000000037777770b657269712d686172616c64026e6c0000010001 +03db80000001000000020002037777770b657269712d686172616c64026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01cc01000020001000151800006036e7332c034c030000100010001518000045054e415c04c0001000100015180000451046014 + +37296 +2c8a00000001000000000000036e733103696e67026e6c0000010001 +2c8a80000001000000020002036e733103696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +37297 +964500000001000000000000036e733203696e67026e6c0000010001 +964580000001000000020002036e733203696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +37298 +23bc0000000100000000000012736f6d657768657265696e686f6c6c616e64026e6c0000010001 +23bc8403000100000001000012736f6d657768657265696e686f6c6c616e64026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +37299 +332700000001000000000000036e7332076e656473746174026e6c0000010001 +332780000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37300 +936b00000001000000000000036e7334076e656473746174026e6c0000010001 +936b80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37301 +93cc0000000100000000000007737076697369740861726e6f73746174026e6c0000010001 +93cc8000000100000002000207737076697369740861726e6f73746174026e6c0000010001c0140002000100015180000e026e7308696e7465722d6974c01dc01400020001000151800006036e7332c034c03100010001000151800004d5c4385ac04b00010001000151800004d5c4385b + +37302 +d18d00000001000000000000036e733109666972737466696e64026e6c0000010001 +d18d80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37303 +d18e00000001000000000000036e733209666972737466696e64026e6c0000010001 +d18e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37304 +b0fb000000010000000000000c6970616d61726b6574696e67026e6c0000010001 +b0fb800000010000000200010c6970616d61726b6574696e67026e6c0000010001c00c0002000100015180000a036e733303777873c019c00c00020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +37305 +c44700000001000000000000095f6b65726265726f73045f746370026463065f6d736463730e52697070657264617061726b3239026e6c0000060001 +c44784030001000000010000095f6b65726265726f73045f746370026463065f6d736463730e52697070657264617061726b3239026e6c0000060001c03400060001000038400036026e730f646f6d61696e2d7265676973747279c0340a686f73746d6173746572c04b0bf1e540000070800000384000278d0000003840 + +37306 +d19000000001000000000000036e733109666972737466696e64026e6c0000010001 +d19080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37307 +d19100000001000000000000036e733209666972737466696e64026e6c0000010001 +d19180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37308 +7ea50000000100000000000004686f6d65066863636e6574026e6c0000010001 +7ea58000000100000002000004686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +37309 +84b100000001000000000000037777770d756e697465646d656d62657273026e6c0000010001 +84b180000001000000020002037777770d756e697465646d656d62657273026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03200010001000151800004d47bfd15c04400010001000151800004d47bfd16 + +37310 +a4cc00000001000000000000037777770d756e697465646d656d62657273026e6c0000010001 +a4cc80000001000000020002037777770d756e697465646d656d62657273026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03200010001000151800004d47bfd15c04400010001000151800004d47bfd16 + +37311 +489400000001000000000000036e73310f76656c64686f76656e64657369676e026e6c00001c0001 +489480000001000000020002036e73310f76656c64686f76656e64657369676e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f5cbc042000100010001518000045054f5cc + +37312 +fd9400000001000000000000036e73320f76656c64686f76656e64657369676e026e6c00001c0001 +fd9480000001000000020002036e73320f76656c64686f76656e64657369676e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc034000100010001518000045054f5cbc00c000100010001518000045054f5cc + +37313 +c79a00000001000000000000037777770d64616d65736c696e6765726965026e6c0000010001 +c79a80000001000000030002037777770d64616d65736c696e6765726965026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +37314 +1387000000010000000000000363686d0463687269026e6c0000010001 +1387800000010000000200020363686d0463687269026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c015c01000020001000151800006036e7332c02cc02900010001000151800004d453c005c04700010001000151800004d453c006 + +37315 +eecd000000010000000000000e776f6e64657266756c62757973310f6f6e6c696e652d696e7465726e6574026e6c0000010001 +eecd800000010000000200020e776f6e64657266756c62757973310f6f6e6c696e652d696e7465726e6574026e6c0000010001c01b0002000100015180000f026e7309656174736572766572c02bc01b00020001000151800006036e7332c042c03f00010001000151800004d4cb0e42c05a00010001000151800004d4cb1221 + +37316 +5cdd00000001000000000000176c616e6b686f7273742d746f75776661627269656b656e026e6c0000ff0001 +5cdd80000001000000020001176c616e6b686f7273742d746f75776661627269656b656e026e6c0000ff0001c00c0002000100015180000d026e7307616d6572636f6dc024c00c00020001000151800006036e7331c03bc03800010001000151800004c2b2b20a + +37317 +4f6a00000001000000000000147363686164656e65742d7a61616e73747265656b026e6c00000f0001 +4f6a80000001000000020001147363686164656e65742d7a61616e73747265656b026e6c00000f0001c00c0002000100015180000a036e733303777873c021c00c00020001000151800006036e7334c039c04b00010001000151800004d5ef9a65 + +37318 +7e9900000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +7e9980000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +37319 +d4a80000000100000000000003777777127761616e646572732d72696a7769656c656e026e6c0000010001 +d4a88000000100000002000203777777127761616e646572732d72696a7769656c656e026e6c0000010001c01000020001000151800009036e7331026973c023c01000020001000151800006036e7332c03bc03700010001000151800004d5852102c04c00010001000151800004d5c41503 + +37320 +2de40000000100000000000009652d6c756e61746963026e6c0000010001 +2de48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37321 +a4c400000001000000000000037777770d726164696f7665726f6e696361026e6c0000010001 +a4c480000001000000020002037777770d726164696f7665726f6e696361026e6c0000010001c0100002000100015180000f036e7331086261736971776562c01ec01000020001000151800006036e7332c036c0320001000100015180000452c04516c04d0001000100015180000452c04542 + +37322 +bfd000000001000000000000026e7303736261026e6c00001c0001 +bfd080000001000000020001026e7303736261026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000d036e733203736261036e657400c00c00010001000151800004c2e57801 + +37323 +37c400000001000000000000026e7303736261026e6c0000260001 +37c480000001000000020001026e7303736261026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d036e733203736261036e657400c00c00010001000151800004c2e57801 + +37324 +bd08000000010000000000000f737465656e6b732d73657276696365026e6c00001c0001 +bd08800000010000000200020f737465656e6b732d73657276696365026e6c00001c0001c00c000200010001518000110a6c65757665686176656e03696772c01cc00c0002000100015180000d0a64656c6673686176656ec03bc030000100010001518000043e2d5e0dc04d000100010001518000043e2d5e82 + +37325 +9954000000010000000000000377777709706c7573666f72756d026e6c0000010001 +9954800000010000000200020377777709706c7573666f72756d026e6c0000010001c01000020001000151800012036e73310b737461727464657369676ec01ac01000020001000151800006036e7332c032c02e00010001000151800004d5f73823c04c000100010001518000043ed45149 + +37326 +f57a00000001000000000000026e73076e656473746174026e6c0000010001 +f57a80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +37327 +fd1a00000001000000000000036e7333076e656473746174026e6c0000010001 +fd1a80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +37328 +51fa00000001000000000000036d783306787334616c6c026e6c0000010001 +51fa80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +37329 +03bd00000001000000000000036e73340767617574656e67026e6c0000010001 +03bd80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37330 +03c000000001000000000000036e73340767617574656e67026e6c0000010001 +03c080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37331 +6625000000010000000000000a76776368617274657273026e6c00000f0001 +6625800000010000000200020a76776368617274657273026e6c00000f0001c00c00020001000151800018067765626e69780e6575726f636f6e73756c74616e74c017c00c0002000100015180000a076d61696c6e6978c032c02b000100010001518000045117e555c04f000100010001518000045117e556 + +37332 +bccf00000001000000000000037777770875726c6265757273026e6c0000010001 +bccf80000001000000020002037777770875726c6265757273026e6c0000010001c0100002000100015180000b036e733104696e6263c019c01000020001000151800006036e7332c031c02d00010001000151800004d5852324c04400010001000151800004d5852323 + +37333 +9aa9000000010000000000000461746173026e6c00000f0001 +9aa9800000010000000200020461746173026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +37334 +c1780000000100000000000003777777046b6e7262026e6c0000010001 +c1788000000100000003000303777777046b6e7262026e6c0000010001c01000020001000151800010036e733109657863657074696f6ec015c01000020001000151800006036e7332c02dc01000020001000151800006036e7333c02dc02900010001000151800004d5c9a38cc04500010001000151800004d5c9a38dc05700010001000151800004d5c9af03 + +37335 +e4db00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +e4db80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37336 +265700000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +265780000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37337 +59ba00000001000000000000026e75026e6c0000010001 +59ba80000001000000030003026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +37338 +593d000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +593d800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +37339 +f4240000000100000000000003777777097a616b656e6d656e75026e6c0000010001 +f4248000000100000002000203777777097a616b656e6d656e75026e6c0000010001c0100002000100015180000a036e733103696166c01ac01000020001000151800006036e7332c032c02e000100010001518000045059e040c044000100010001518000045059ee03 + +37340 +828a00000001000000000000037777770c776572656c6477696e6b656c026e6c0000010001 +828a80000001000000020001037777770c776572656c6477696e6b656c026e6c0000010001c0100002000100015180000d026e7307616e74656e6e61c01dc0100002000100015180001306696e666f726d07616e74656e6e6102646b00c03100010001000151800004d995dd13 + +37341 +9428000000010000000000000377777707636f6e74696e75026e6c0000010001 +9428800000010000000300020377777707636f6e74696e75026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +37342 +680c0000000100000000000003777777116c6173746d696e7574652d7265697a656e026e6c0000010001 +680c8000000100000002000203777777116c6173746d696e7574652d7265697a656e026e6c0000010001c0100002000100015180000c026e7306787334616c6cc022c01000020001000151800006036e7332c039c03600010001000151800004c26d0642c04e00010001000151800004c26d0963 + +37343 +0930000000010000000000000762616e6e65727303696d73026e6c0000010001 +0930800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +37344 +adaf00000001000000000000037777770f77696a6c616172737061617264656e026e6c0000010001 +adaf80000001000000020002037777770f77696a6c616172737061617264656e026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c020c01000020001000151800006036e7332c038c034000100010001518000045054f347c050000100010001518000043e94a047 + +37345 +015d00000001000000000000067068706164730d626f7577766163617475726573026e6c0000010001 +015d80000001000000020001067068706164730d626f7577766163617475726573026e6c0000010001c0130002000100015180000d036e733106776964657873c021c01300020001000151800010036e733206776964657873036e657400c03500010001000151800004d4ccc0fc + +37346 +d9a9000000010000000000000377777708636861746769726c026e6c0000010001 +d9a9800000010000000200000377777708636861746769726c026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +37347 +1b2800000001000000000000036e7331057669727475026e6c0000010001 +1b2880000001000000020002036e7331057669727475026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9726102c03800010001000151800004d58141c4 + +37348 +c0e500000001000000000000036e7332057669727475026e6c0000010001 +c0e580000001000000020002036e7332057669727475026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d9726102c00c00010001000151800004d58141c4 + +37349 +87c800000001000000000000066865726d657304626f757703746e6f026e6c0000010001 +87c880000001000000030003066865726d657304626f757703746e6f026e6c0000010001c0180002000100015180000b0866726f6e74696572c018c0180002000100015180000e036e733107737572666e6574c01cc01800020001000151800007047a657573c018c0300001000100015180000486dd0102c04700010001000151800004c0576a65c0610001000100015180000486dd0202 + +37350 +cfca0000000100000000000006746e6f66656c0366656c03746e6f026e6c0000010001 +cfca8000000100000003000306746e6f66656c0366656c03746e6f026e6c0000010001c0170002000100015180000b0866726f6e74696572c017c0170002000100015180000e036e733107737572666e6574c01bc01700020001000151800007047a657573c017c02f0001000100015180000486dd0102c04600010001000151800004c0576a65c0600001000100015180000486dd0202 + +37351 +86e9000000010000000000000866726f6e7469657203746e6f026e6c0000010001 +86e9800000010000000300030866726f6e7469657203746e6f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c01500020001000151800007047a657573c015c00c0001000100015180000486dd0102c03b00010001000151800004c0576a65c0550001000100015180000486dd0202 + +37352 +eb03000000010000000000000c70757a7a656c776572656c64026e6c0000ff0001 +eb03800000010000000200020c70757a7a656c776572656c64026e6c0000ff0001c00c0002000100015180000e036e7331076f726c65616e73c019c00c00020001000151800006036e7332c031c02d00010001000151800004d4cccd55c04700010001000151800004d4cccd56 + +37353 +28a40000000100000000000003777777066c6163686e75026e6c0000010001 +28a48000000100000003000303777777066c6163686e75026e6c0000010001c0100002000100015180000c036e7331056d61786573c017c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02fc02b000100010001518000045045402ec043000100010001518000045045402fc055000100010001518000045045440a + +37354 +ad090000000100000000000003777777097a696a61616e7a696a026e6c0000010001 +ad098000000100000003000303777777097a696a61616e7a696a026e6c0000010001c01000020001000151800010036e733109656e6368616e746564c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ef8589c04a00010001000151800004d5ef8593c05c00010001000151800004d5ef8005 + +37355 +f2d40000000100000000000003777777116e6577706f7274626c756574726176656c026e6c0000010001 +f2d48000000100000002000003777777116e6577706f7274626c756574726176656c026e6c0000010001c0100002000100015180000c026e7306766576696461c022c01000020001000151800006036e7332c039 + +37356 +460d00000001000000000000037777770b687572726963616e65666d026e6c0000010001 +460d80000001000000030002037777770b687572726963616e65666d026e6c0000010001c0100002000100015180000f036e7331086d6f76656e657874c01cc01000020001000151800006036e7332c034c01000020001000151800012036e7333086d6f76656e657874036e657400c03000010001000151800004d4ccc445c04b00010001000151800004d4ccf745 + +37357 +645c000000010000000000000963616d7061676e657304626f6e65026e6c0000010001 +645c800000010000000200020963616d7061676e657304626f6e65026e6c0000010001c0160002000100015180000b026e7305706c616e74c01bc01600020001000151800006036e7332c032c02f00010001000151800004d59f0037c04600010001000151800004d59f0046 + +37358 +ee67000000010000000000000a70756c73706f6d70656e026e6c0000010001 +ee67800000010000000200020a70756c73706f6d70656e026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +37359 +59fc00000001000000000000046d61696c067265696d6572026e6c00001c0001 +59fc80000001000000020002046d61696c067265696d6572026e6c00001c0001c01100020001000151800010036e733109686f73746e65746276c018c01100020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +37360 +990000000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +990080000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37361 +701e00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +701e80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37362 +d4be0000000100000000000008686f73746e616d650462696e640000100003 +d4be8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37363 +000000007002400090520000020405b401010402 +000080010000000000000000 + +37364 +373c00000001000000000000045052494c024e4c00000f0001 +373c80000001000000020002045052494c024e4c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +37365 +b786466a50104470baa50000000000000000 +b786c6640000000000000000 + +37366 +b786466a501844706f640000008d65eb000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403b01d7403c535700030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053425332303030484f4c50524f430000 +b786c6640000000000000000 + +37367 +afd000000001000000000000036e73300873757265686f7374026e6c0000010001 +afd080000001000000020002036e73300873757265686f7374026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c019c01000020001000151800006036e7331c031c02d00010001000151800004c3eaad40c04700010001000151800004c3eaad41 + +37368 +8325000000010000000000000377777705626f6b6f65026e6c0000010001 +8325800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +37369 +2da600000001000000000000036e7332076e656473746174026e6c0000010001 +2da680000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37370 +6bb900000001000000000000036e73310873757265686f7374026e6c0000010001 +6bb980000001000000020002036e73310873757265686f7374026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c019c01000020001000151800006036e7331c031c02d00010001000151800004c3eaad40c04700010001000151800004c3eaad41 + +37371 +9c1d00000001000000000000037777770d656e6572676965646972656374026e6c0000010001 +9c1d80000001000000020001037777770d656e6572676965646972656374026e6c0000010001c01000020001000151800015086e732d69736d30310963617067656d696e69c01ec0100002000100015180000b086e732d69736d3032c03bc03200010001000151800004d5f4a024 + +37372 +3d0700000001000000000000036e7334076e656473746174026e6c0000010001 +3d0780000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37373 +b786467850114462ba150000000000000000 +b786c6740000000000000000 + +37374 +0000000070024000908a0000020405b401010402 +000080010000000000000000 + +37375 +ba93001000010000000000010b5354494e47455253495445026e6c00000200010000290800000000000000 +ba93840300010000000100010b5354494e47455253495445026e6c0000020001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d00000038400000291000000000000000 + +37376 +7b7800000001000000000000037777770661736b6a696d026e6c0000010001 +7b7880000001000000020002037777770661736b6a696d026e6c0000010001c0100002000100015180000a036e7331036e7873c017c01000020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +37377 +b786467950104462ba140000000000000000 +b786c6740000000000000000 + +37378 +0dcf000000010000000000000764656e68616167036b766b026e6c00000f0001 +0dcf800000010000000200020764656e68616167036b766b026e6c00000f0001c0140002000100015180000d026e73076b6e6f77617265c018c01400020001000151800006036e7332c02fc02c00010001000151800004c3402003c04500010001000151800004c340202b + +37379 +09e0000000010000000000000965756972656c616e640269650b7370616d646f6d61696e730a626c61636b686f6c657307656173796e6574026e6c0000010001 +09e0800000010000000200020965756972656c616e640269650b7370616d646f6d61696e730a626c61636b686f6c657307656173796e6574026e6c0000010001c03000020001000151800006036e7330c030c03000020001000151800006036e7331c030c04c00010001000151800004c2a55e01c05e00010001000151800004c2a55e05 + +37380 +b787260850104470db3e0000000000000000 +b787a6030000000000000000 + +37381 +b787260850184470b2ad0000008d3b3b000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403b01db403c535b00030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053425332303030484f4c50524f430000 +b787a6030000000000000000 + +37382 +7a7b00000001000000000000037777770d656e65726769656f6e6c696e65026e6c0000010001 +7a7b80000001000000020002037777770d656e65726769656f6e6c696e65026e6c0000010001c0100002000100015180000c04646e73310471776562c01ec0100002000100015180000704646e7332c037c03200010001000151800004d994ac0cc04a00010001000151800004d5c42f6c + +37383 +11cb00000001000000000000066172676f7373026e6c00000f0001 +11cb80000001000000020002066172676f7373026e6c00000f0001c00c0002000100015180000c09646d7a736572766572c00cc00c0002000100015180000a0775787365727632c00cc02700010001000151800004c2abb083c03f00010001000151800004c2abb028 + +37384 +b787261650114462daae0000000000000000 +b787a6130000000000000000 + +37385 +265400000001000000000000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001 +265480000001000000020000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001c014000200010001518000110377656207616a63666f6f6403636f6d00c0140002000100015180000b0865786368616e6765c034 + +37386 +b787261750104462daad0000000000000000 +b787a6130000000000000000 + +37387 +3c27000000010000000000000377777710776161726865656e77616172766f6f72026e6c0000010001 +3c27800000010000000200020377777710776161726865656e77616172766f6f72026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c021c01000020001000151800006036e7332c039c035000100010001518000045054f347c051000100010001518000043e94a047 + +37388 +0d83000000010000000000000b5354494e47455253495445026e6c0000020001 +0d83840300010000000100000b5354494e47455253495445026e6c0000020001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +37389 +706e00000001000000000000037777771061746c616e7469732d6e65772d616765026e6c0000010001 +706e80000001000000020002037777771061746c616e7469732d6e65772d616765026e6c0000010001c0100002000100015180000a026e730469636d63c021c01000020001000151800006036e7332c038c035000100010001518000043e643805c04b000100010001518000043e643806 + +37390 +a778000000010000000000000376626b026e6c0000ff0001 +a778800000010000000200020376626b026e6c0000ff0001c00c0002000100015180000c036e73310563736e6574c010c00c00020001000151800006036e7332c028c02400010001000151800004c2451012c03c00010001000151800004c2451212 + +37391 +930200000001000000000000046d61696c067265696d6572026e6c0000260001 +930280000001000000020002046d61696c067265696d6572026e6c0000260001c01100020001000151800010036e733109686f73746e65746276c018c01100020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +37392 +621f00000001000000000000037777770d72696a70652d76726f7577656e026e6c0000010001 +621f80000001000000020000037777770d72696a70652d76726f7577656e026e6c0000010001c01000020001000151800011036e7331087072696f7277656202626500c01000020001000151800006036e7332c036 + +37393 +43170000000100000000000003717066026e6c0000ff0001 +43178000000100000002000203717066026e6c0000ff0001c00c0002000100015180000f04646e733107696e666f6e6574c010c00c0002000100015180000704646e7332c029c02400010001000151800004d4bd01c4c03f00010001000151800004d4bd7f83 + +37394 +6f5400000001000000000000037777770c616c74696a646a657a656c66026e6c0000010001 +6f5480000001000000020000037777770c616c74696a646a657a656c66026e6c0000010001c01000020001000151800011036e733107726f6b73636f6d036e657400c0100002000100015180000e036e733207726f6b73636f6dc01d + +37395 +e3ce00000001000000000000037777770633776d61696c026e6c0000010001 +e3ce84030001000000010000037777770633776d61696c026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +37396 +138600000001000000000000036e733209666972737466696e64026e6c0000010001 +138680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37397 +3bb900000001000000000000036e733109666972737466696e64026e6c0000010001 +3bb980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37398 +8ba30000000100000000000007776f6f6e636f6d026e6c00000f0001 +8ba38000000100000003000307776f6f6e636f6d026e6c00000f0001c00c0002000100015180000e036e73310761737034616c6cc014c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02cc02800010001000151800004c1adf9c3c042000100010001518000043e70ec3cc05400010001000151800004c1ac0bae + +37399 +1b3800000001000000000000036e733107757477656e7465026e6c0000010001 +1b3880000001000000030003036e733107757477656e7465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000482590102c03a0001000100015180000482590103c04c00010001000151800004c0571113 + +37400 +48ae00000001000000000001036e7331026973026e6c00000100010000291000000000000000 +48ae80000001000000020003036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c415030000291000000000000000 + +37401 +0d7a00000001000000000001036e7332026973026e6c00000100010000291000000000000000 +0d7a80000001000000020003036e7332026973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5852102c00c00010001000151800004d5c415030000291000000000000000 + +37402 +a21f000000010000000000000462696373026e6c00000f0001 +a21f800000010000000300020462696373026e6c00000f0001c00c00020001000151800010036e733409656e6f766174696f6ec011c00c00020001000151800006036e7333c029c00c0002000100015180001404646e733309656e6f766174696f6e036e657400c025000100010001518000049105fc46c041000100010001518000049105fc4e + +37403 +309e00000001000000000000037777770b7265676973747261746965026e6c0000010001 +309e80000001000000020002037777770b7265676973747261746965026e6c0000010001c0100002000100015180001404777777320c6e656465726c616e64776562c01cc0100002000100015180000d036e73320670726f6c616ec01cc03000010001000151800004d5d381c2c05000010001000151800004d4ccd4e7 + +37404 +5f6700000001000000000000036d78310761737034616c6c026e6c0000010001 +5f6780000001000000030003036d78310761737034616c6c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02c00010001000151800004c1adf9c3c03e000100010001518000043e70ec3cc05000010001000151800004c1ac0bae + +37405 +a30c000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +a30c800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37406 +22da000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +22da800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37407 +8d96000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +8d96800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37408 +a8a0000000010000000000000a656d6561736d7470303103616f6e026e6c00001c0001 +a8a0800000010000000200010a656d6561736d7470303103616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37409 +a27d000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +a27d800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37410 +ce0f000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +ce0f800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +37411 +8a6600000001000000000000056b6974747a026e6c00000f0001 +8a6680000001000000020002056b6974747a026e6c00000f0001c00c0002000100015180000a036e733103696166c012c00c00020001000151800006036e7332c02ac026000100010001518000045059e040c03c000100010001518000045059ee03 + +37412 +39bc00000001000000000000086174617261786961026e6c0000010001 +39bc80000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +37413 +21aa00000001000000000000036e733109666972737466696e64026e6c0000010001 +21aa80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37414 +3b7400000001000000000000036e733209666972737466696e64026e6c0000010001 +3b7480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37415 +22c400000001000000000000046e73303903777873026e6c0000010001 +22c480000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +37416 +208c000000010000000000000377777703646674026e6c0000010001 +208c800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +37417 +2f6900000001000000000000046d61696c0c67726f6f7462726162616e74026e6c0000010001 +2f6980000001000000020002046d61696c0c67726f6f7462726162616e74026e6c0000010001c01100020001000151800010036e733109686f73746e65746276c01ec01100020001000151800006036e7332c036c0320001000100015180000451113264c04e00010001000151800004d5c42851 + +37418 +301e0000000100000000000003777777066476646d616e026e6c0000010001 +301e8000000100000002000003777777066476646d616e026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +37419 +bb6a000000010000000000000863617476363231390665787465726e036b756e026e6c00000f0001 +bb6a800000010000000300030863617476363231390665787465726e036b756e026e6c00000f0001c01c0002000100015180000f08636170796261726103756369c01cc01c0002000100015180000a036e733103736369c01cc01c0002000100015180000e036e733107737572666e6574c020c0340001000100015180000483ae3c15c04f0001000100015180000483aee004c06500010001000151800004c0576a65 + +37420 +51aa000000010000000000000377777708746170706572696a026e6c0000010001 +51aa800000010000000200000377777708746170706572696a026e6c0000010001c01000020001000151800017036e73310d6465696e7465726e65746d616e036e657400c01000020001000151800006036e7332c031 + +37421 +3a4d00000001000000000000037777771370737963686f6c6f6769656d6167617a696e65026e6c0000010001 +3a4d80000001000000020000037777771370737963686f6c6f6769656d6167617a696e65026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c03e + +37422 +e87d0000000100000000000003777777106b72696e676c6f6f7077696e6b656c73026e6c0000010001 +e87d8000000100000002000003777777106b72696e676c6f6f7077696e6b656c73026e6c0000010001c01000020001000151800016036e73610c73697465657874656e64657203636f6d00c01000020001000151800006036e7362c039 + +37423 +0b2f0000000100000000000003313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +0b2f8000000100000002000203313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +37424 +aac3000000010000000000000672656c6179310b7669616e6574776f726b73026e6c0000010001 +aac3800000010000000200020672656c6179310b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +37425 +a227000000010000000000000377777713776573746572736368656c646574756e6e656c026e6c0000010001 +a227800000010000000200020377777713776573746572736368656c646574756e6e656c026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c024c01000020001000151800006036e7332c03cc03800010001000151800004d43d0f08c05600010001000151800004d43d19e2 + +37426 +c7b500000001000000000000037777770f62616e6e65722d65786368616e6765026e6c0000010001 +c7b580000001000000020001037777770f62616e6e65722d65786368616e6765026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c03400010001000151800004d4ccc0fc + +37427 +90f400000001000000000000037777770f62616e6e65722d65786368616e6765026e6c0000010001 +90f480000001000000020001037777770f62616e6e65722d65786368616e6765026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c03400010001000151800004d4ccc0fc + +37428 +393c000000010000000000000377777707736e7362616e6b026e6c0000010001 +393c800000010000000200000377777707736e7362616e6b026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +37429 +c1830000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +c1838000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37430 +034f00000001000000000000037777770966756e6e7932303031066b6f72746865026e6c0000010001 +034f80000001000000020000037777770966756e6e7932303031066b6f72746865026e6c0000010001c01a00020001000151800013036e733009696e7465726c697a65036e657400c01a00020001000151800006036e7331c039 + +37431 +8a6a00000001000000000000037777770b766f657462616c7a6f6e65026e6c0000010001 +8a6a80000001000000030003037777770b766f657462616c7a6f6e65026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c01cc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c0300001000100015180000450474002c04e0001000100015180000450474102c06000010001000151800004d943ee57 + +37432 +4e9600000001000000000000026e7304696d636f026e6c0000010001 +4e9680000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +37433 +02af00000001000000000000036e73330767617574656e67026e6c0000010001 +02af80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37434 +80bf00000001000000000000036e73340767617574656e67026e6c0000010001 +80bf80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37435 +275c00000001000000000000036e733105636176656f024e4c0000010001 +275c80000001000000020002036e733105636176656f024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045112a002c038000100010001518000045112a102 + +37436 +252c0000000100000000000009776f6f6e6c696e6965026e6c0000010001 +252c8000000100000002000209776f6f6e6c696e6965026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +37437 +8b8800000001000000000000037777770d6265646465622d6b617374656e026e6c0000010001 +8b8884030001000000010000037777770d6265646465622d6b617374656e026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +37438 +94370000000100000000000003777777046e697769026e6c0000010001 +94378000000100000002000103777777046e697769026e6c0000010001c0100002000100015180000b036e7331046b6e6177c015c01000020001000151800006036e7332c02dc02900010001000151800004c0576b03 + +37439 +183200000001000000000000036e7331046372696f026e6c0000010001 +183280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37440 +f57c00000001000000000000036e7332046372696f026e6c0000010001 +f57c80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37441 +edba00000001000000000000037777770a72656372656174696566026e6c0000010001 +edba80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +37442 +158200000001000000000000036e7331046372696f026e6c0000010001 +158280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37443 +eab600000001000000000000036e7332046372696f026e6c0000010001 +eab680000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37444 +e96d28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730e52697070657264617061726b3239026e6c0000210001000002580023000000640058096f6e7a6576616465720e52697070657264617061726b3239026e6c00 +e96da8040000000000000000 + +37445 +2cf900000001000000000000076a6f7264616e73026e6c0000010001 +2cf980000001000000030001076a6f7264616e73026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +37446 +462f00000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +462f80000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +37447 +4e1a00000001000000000000036e73310a6d756c74696b6162656c026e6c0000260001 +4e1a80000001000000030002036e73310a6d756c74696b6162656c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +37448 +13ac0000000100000000000003777777046d62636f026e6c0000010001 +13ac8000000100000002000203777777046d62636f026e6c0000010001c0100002000100015180001d046d61696c15666c65766f696e7465726e65746469656e7374656ec015c0100002000100015180000a07666c65766f3033c02ec02900010001000151800004d48837fec05200010001000151800004d4bb38c8 + +37449 +d38800000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +d38880000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +37450 +69c400000001000000000000036e73320a6d756c74696b6162656c026e6c0000260001 +69c480000001000000030002036e73320a6d756c74696b6162656c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +37451 +d10c0000000100000000000007426f76656d696a026e6c00000f0001 +d10c8000000100000002000207426f76656d696a026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +37452 +511f0000000100000000000003777777076d616c696e6461026e6c0000010001 +511f8000000100000002000003777777076d616c696e6461026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c032 + +37453 +604c0000000100000000000003777777076e656465722d6c026e6c0000010001 +604c8000000100000002000003777777076e656465722d6c026e6c0000010001c01000020001000151800013036e73300964757463682d6e657403636f6d00c01000020001000151800006036e7331c030 + +37454 +20f5000000010000000000000467616d65086e657469646f6c73026e6c0000010001 +20f5800000010000000200020467616d65086e657469646f6c73026e6c0000010001c0110002000100015180000e036e733107686f7477697265c01ac01100020001000151800006036e7332c032c02e0001000100015180000451044b03c0480001000100015180000451044bc8 + +37455 +1e6e0000000100000000000009652d6c756e61746963026e6c0000010001 +1e6e8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37456 +b31d00000001000000000000036e7335046372696f026e6c0000010001 +b31d80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37457 +1c2300000001000000000000036e7336046372696f026e6c0000010001 +1c2380000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37458 +772e000000010000000000000377777703776562026e6c0000010001 +772e800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +37459 +a17e0000000100000000000005737461747307676f2d77657374026e6c0000010001 +a17e8000000100000003000105737461747307676f2d77657374026e6c0000010001c0120002000100015180000e026e7308767575727765726bc01ac01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +37460 +dee200000001000000000000036e7331046372696f026e6c0000010001 +dee280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37461 +9e1900000001000000000000036e7332046372696f026e6c0000010001 +9e1980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37462 +28d400000001000000000000037777770a72656372656174696566026e6c0000010001 +28d480000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +37463 +203900000001000000000000036e7335046372696f026e6c0000010001 +203980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37464 +e96500000001000000000000036e7336046372696f026e6c0000010001 +e96580000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37465 +b35300000001000000000000066865726d657304626f757703746e6f026e6c0000010001 +b35380000001000000030003066865726d657304626f757703746e6f026e6c0000010001c0180002000100015180000b0866726f6e74696572c018c0180002000100015180000e036e733107737572666e6574c01cc01800020001000151800007047a657573c018c0300001000100015180000486dd0102c04700010001000151800004c0576a65c0610001000100015180000486dd0202 + +37466 +61900000000100000000000006746e6f66656c0366656c03746e6f026e6c0000010001 +61908000000100000003000306746e6f66656c0366656c03746e6f026e6c0000010001c0170002000100015180000b0866726f6e74696572c017c0170002000100015180000e036e733107737572666e6574c01bc01700020001000151800007047a657573c017c02f0001000100015180000486dd0102c04600010001000151800004c0576a65c0600001000100015180000486dd0202 + +37467 +abc9000000010000000000000866726f6e7469657203746e6f026e6c0000010001 +abc9800000010000000300030866726f6e7469657203746e6f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c01500020001000151800007047a657573c015c00c0001000100015180000486dd0102c03b00010001000151800004c0576a65c0550001000100015180000486dd0202 + +37468 +d9350000000100000000000008672d63656e746572026e6c00000f0001 +d9358000000100000003000308672d63656e746572026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c015c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02dc02900010001000151800004c2a55e5ac04500010001000151800004c356781cc057000100010001518000043ec58016 + +37469 +03b800000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03b880000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +37470 +eec70000000100000000000011706c656368656c6d75732d64656c757465026e6c0000010001 +eec78403000100000001000011706c656368656c6d75732d64656c757465026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +37471 +ad4f000000010000000000000767656e65736973026e6c0000010001 +ad4f800000010000000200000767656e65736973026e6c0000010001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec02f + +37472 +f415001000010000000000010870686f626f7330310761626e616d726f026e6c00000100010000290800000000000000 +f415800000010000000200030870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c0000291000000000000000 + +37473 +d0bc001000010000000000010870686f626f7330320761626e616d726f026e6c00000100010000290800000000000000 +d0bc800000010000000200030870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c0000291000000000000000 + +37474 +9e5a0000000100000000000008546f70706f696e74026e6c0000010001 +9e5a8000000100000002000208546f70706f696e74026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c015c00c00020001000151800006036e7332c02dc0290001000100015180000450416028c04400010001000151800004c356780c + +37475 +dc130000000100000000000006636861726973026e6c0000010001 +dc138000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +37476 +e10100000001000000000000037777770b76616e6265656b6175746f026e6c00001c0001 +e10180000001000000020002037777770b76616e6265656b6175746f026e6c00001c0001c0100002000100015180000e036e733107736368726f6572c01cc0100002000100015180000e036e733407737570706f7274c01cc03000010001000151800004d468c9c4c04a00010001000151800004c372e6fe + +37477 +6c0400000001000000000000037777770d776972696e676865726c616e74026e6c0000010001 +6c0480000001000000020002037777770d776972696e676865726c616e74026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01ec01000020001000151800006036e7332c035c03200010001000151800004d453c005c05000010001000151800004d453c006 + +37478 +e94400000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +e94480000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37479 +de47000000010000000000000f726f6e63616c6c69636f7572696572026e6c00000f0001 +de47800000010000000200010f726f6e63616c6c69636f7572696572026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c01cc00c00020001000151800006036e7334c034c03000010001000151800004d5c401c0 + +37480 +f462000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +f462800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +37481 +fa31000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +fa31800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +37482 +b826000000010000000000000c717561647269666f676c696f026e6c0000ff0001 +b826800000010000000200020c717561647269666f676c696f026e6c0000ff0001c00c0002000100015180000a04646e7330026975c019c00c0002000100015180000704646e7331c032c02d00010001000151800004d91a7002c04300010001000151800004d91a7103 + +37483 +9687000000010000000000000a7a65656c616e646e6574026e6c0000010001 +9687800000010000000200020a7a65656c616e646e6574026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02b00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +37484 +13dd00000001000000000000136672616e6b656e2d6d616b656c61617264696a026e6c00000f0001 +13dd80000001000000020001136672616e6b656e2d6d616b656c61617264696a026e6c00000f0001c00c0002000100015180000c026e7306636f62776562c020c00c00020001000151800006036e7333c037c0340001000100015180000450f26001 + +37485 +b51500000001000000000000037777770f68656c656e64656d65657374657273026e6c0000010001 +b51580000001000000020002037777770f68656c656e64656d65657374657273026e6c0000010001c0100002000100015180000f026e7309656174736572766572c020c01000020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +37486 +1bd800000001000000000000046e65777306787334616c6c026e6c0000ff0001 +1bd880000001000000030002046e65777306787334616c6c026e6c0000ff0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +37487 +682700000001000000000000037777770a6164756c747374617473026e6c0000010001 +682780000001000000020000037777770a6164756c747374617473026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +37488 +e8e900000001000000000000037777770964657a6565686f6e640c73706f7274666f6e6473656e026e6c0000010001 +e8e980000001000000030002037777770964657a6565686f6e640c73706f7274666f6e6473656e026e6c0000010001c01a0002000100015180000d036e733106776964657873c027c01a00020001000151800010036e733206776964657873036e657400c01a00020001000151800006036e7333c03fc03b00010001000151800004d4ccc0fcc070000100010001518000043efa0703 + +37489 +003300000001000000000000046d61696c0b7363686c6166686f72737403636f6d07676c67726f7570026e6c0000010001 +003384030001000000010000046d61696c0b7363686c6166686f72737403636f6d07676c67726f7570026e6c0000010001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +37490 +fc240000000100000000000003777777146d65646973636865766163617475726562616e6b026e6c0000010001 +fc248000000100000002000203777777146d65646973636865766163617475726562616e6b026e6c0000010001c0100002000100015180000d04646e733105692d702d64c025c0100002000100015180000704646e7332c03ec03900010001000151800004d9124003c05200010001000151800004d9124104 + +37491 +0c2f00000001000000000000037777770763616665626c61026e6c0000010001 +0c2f80000001000000020000037777770763616665626c61026e6c0000010001c01000020001000151800014036e73310a65763173657276657273036e657400c01000020001000151800006036e7332c030 + +37492 +4685000000010000000000000f74696a7373656e2d656c656b74726f026e6c00000f0001 +4685800000010000000200020f74696a7373656e2d656c656b74726f026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c01cc00c00020001000151800006036e7332c034c03000010001000151800004c2451012c04800010001000151800004c2451212 + +37493 +b6b50000000100000000000003777777096469676973706f7274026e6c0000010001 +b6b58000000100000002000103777777096469676973706f7274026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +37494 +ccba00000001000000000000086865696a6d616e73026e6c0000010001 +ccba80000001000000020002086865696a6d616e73026e6c0000010001c00c00020001000151800006036e7331c00cc00c0002000100015180000b086578686175737432c00cc02900010001000151800004c1ad9303c03b00010001000151800004d47b0e91 + +37495 +22d700000001000000000000086d6f62696c616e65026e6c0000010001 +22d780000001000000030000086d6f62696c616e65026e6c0000010001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c02cc00c00020001000151800006036e7332c02c + +37496 +96a600000001000000000000037777770d7765656b65696e646a65776567026e6c0000010001 +96a680000001000000030000037777770d7765656b65696e646a65776567026e6c0000010001c01000020001000151800009026e6c03627263c01ec01000020001000151800005026575c035c0100002000100015180000502676cc035 + +37497 +260e000000010000000000000331333902313401360236390a626c61636b686f6c657307656173796e6574026e6c0000010001 +260e800000010000000200020331333902313401360236390a626c61636b686f6c657307656173796e6574026e6c0000010001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +37498 +5c8d0000000100000000000004726f6d73077765622d6c6f67026e6c0000010001 +5c8d8000000100000003000304726f6d73077765622d6c6f67026e6c0000010001c0110002000100015180000b036e733104696c7365c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d000100010001518000043e45a282c044000100010001518000043e45a283c056000100010001518000043e45a284 + +37499 +48ae00000001000000000000036e7331026973026e6c0000010001 +48ae80000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +37500 +0d7a00000001000000000000036e7332026973026e6c0000010001 +0d7a80000001000000020002036e7332026973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5852102c00c00010001000151800004d5c41503 + +37501 +1a2b00000001000000000000037777770a6164756c746c696e6b73026e6c0000010001 +1a2b80000001000000020000037777770a6164756c746c696e6b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +37502 +9aeb00000001000000000000036e733104696c7365026e6c00001c0001 +9aeb80000001000000030003036e733104696c7365026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +37503 +472000000001000000000000036e733104696c7365026e6c0000260001 +472080000001000000030003036e733104696c7365026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +37504 +fc1200000001000000000000036e733204696c7365026e6c00001c0001 +fc1280000001000000030003036e733204696c7365026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e45a282c00c000100010001518000043e45a283c049000100010001518000043e45a284 + +37505 +ff0e00000001000000000000036e733204696c7365026e6c0000260001 +ff0e80000001000000030003036e733204696c7365026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e45a282c00c000100010001518000043e45a283c049000100010001518000043e45a284 + +37506 +f7f800000001000000000000036e733304696c7365026e6c00001c0001 +f7f880000001000000030003036e733304696c7365026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc029000100010001518000043e45a282c03b000100010001518000043e45a283c00c000100010001518000043e45a284 + +37507 +2e9f00000001000000000000036e733304696c7365026e6c0000260001 +2e9f80000001000000030003036e733304696c7365026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc029000100010001518000043e45a282c03b000100010001518000043e45a283c00c000100010001518000043e45a284 + +37508 +50e200000001000000000000036e7331066e6c74726565026e6c0000010001 +50e280000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +37509 +f04c00000001000000000000096a616e74726f6f7374026e6c0000ff0001 +f04c80000001000000020002096a616e74726f6f7374026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +37510 +3a6600000001000000000000037777770b6261627962757374657273026e6c0000010001 +3a6680000001000000020002037777770b6261627962757374657273026e6c0000010001c0100002000100015180000e026e730864686f7374696e67c01cc01000020001000151800006036e7332c033c03000010001000151800004515b0370c04a00010001000151800004515b000a + +37511 +cf4200000001000000000000037777770d62616e6e657274726166666963026e6c0000010001 +cf4280000001000000020000037777770d62616e6e657274726166666963026e6c0000010001c01000020001000151800010036e733109636f6d7075686f7374c01ec01000020001000151800006036e7332c036 + +37512 +02cb0000000100000000000008686f73746e616d650462696e640000100003 +02cb8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37513 +6973000000010000000000000461736570026e6c00000f0001 +6973800000010000000200000461736570026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +37514 +ac48000000010000000000000377777707646f6d7574656c026e6c0000010001 +ac48800000010000000200020377777707646f6d7574656c026e6c0000010001c0100002000100015180000f036e7331086974736c6f676963c018c0100002000100015180000e026e7308646961706c617a61c018c02c00010001000151800004d59ae111c04700010001000151800004c2a54621 + +37515 +59cf00000001000000000000037777770b6b656573676f6c69617468026e6c0000010001 +59cf80000001000000020000037777770b6b656573676f6c69617468026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c046 + +37516 +b7220000000100000000000005646e732d32056c61646f74026e6c0000010001 +b7228000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37517 +b7210000000100000000000005646e732d31056c61646f74026e6c0000010001 +b7218000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37518 +29330000000100000000000003777777086461696861747375026e6c0000010001 +29338000000100000002000203777777086461696861747375026e6c0000010001c0100002000100015180000f036e7331086e65647374617273c019c01000020001000151800006036e7332c031c02d00010001000151800004d973c592c04800010001000151800004d973c593 + +37519 +a02d00000001000000000000046775686c026e6c00000f0001 +a02d80000001000000020002046775686c026e6c00000f0001c00c0002000100015180000e036e733107626265796f6e64c011c00c00020001000151800006036e7332c029c025000100010001518000043eb1900bc03f000100010001518000043eb19002 + +37520 +123d000000010000000000000a64696e6f736175727573026e6c07736974652d6964026e6c0000010001 +123d800000010000000300000a64696e6f736175727573026e6c07736974652d6964026e6c0000010001c01a00020001000151800012036e733108626c7565646f6d65036e657400c01a00020001000151800006036e7332c03ac01a00020001000151800006036e7333c03a + +37521 +b3fa000000010000000000000462636f75026e6c0000010001 +b3fa800000010000000300020462636f75026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +37522 +ba8e00000001000000000000037777770c67617967616c6c6572696573026e6c0000010001 +ba8e80000001000000020000037777770c67617967616c6c6572696573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +37523 +ff5100000001000000000000037777770873796d616e746563026e6c0000010001 +ff5180000001000000030000037777770873796d616e746563026e6c0000010001c01000020001000151800012036e73310873796d616e74656303636f6d00c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +37524 +5ad60000000100000000000010766f736175746f62656472696a76656e026e6c00000f0001 +5ad68000000100000002000010766f736175746f62656472696a76656e026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c035 + +37525 +dff1000000010000000000000a747963686567726f6570026e6c00000f0001 +dff1800000010000000200020a747963686567726f6570026e6c00000f0001c00c0002000100015180000d056e657430310462626974c017c00c0002000100015180000b08626269742d6e7434c031c02b00010001000151800004c1ad5403c04400010001000151800004c1ad540c + +37526 +0000000070024000c82d0000020405b401010402 +000080010000000000000000 + +37527 +e9a5000000010000000000000774697363616c69026e6c00000f0001 +e9a5800000010000000300020774697363616c69026e6c00000f0001c00c0002000100015180000704616e7331c00cc00c0002000100015180000704616e7332c00cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02800010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +37528 +e58100000001000000000000037777770a6e69736173696c766572026e6c0000010001 +e58180000001000000020002037777770a6e69736173696c766572026e6c0000010001c01000020001000151800010036e733109756e6963656e746572c01bc01000020001000151800006036e7332c033c02f0001000100015180000451ad0b02c04b0001000100015180000451ad0b03 + +37529 +f5db00000001000000000000037777770e6765697465626f6572646572696a026e6c0000010001 +f5db80000001000000020002037777770e6765697465626f6572646572696a026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01fc01000020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +37530 +e86b00000001000000000000076c6f7577736276026e6c00000f0001 +e86b80000001000000020002076c6f7577736276026e6c00000f0001c00c0002000100015180000f036e7331086765656e70756e74c014c00c00020001000151800006036e7332c02cc02800010001000151800004d4ccd865c043000100010001518000045054ec34 + +37531 +b52e000000010000000000000565666e657408767575727765726b026e6c0000010001 +b52e800000010000000300010565666e657408767575727765726b026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c044c02f000100010001518000043efa0202 + +37532 +3bd128000001000200000000026e6c00000600010856494e47434152440b686f74656c616c6d656c6f026e6c00000500fe000000000000c01400010001000000000004c0a8774b +3bd1a8040000000000000000 + +37533 +d799000000010000000000000f7a6f7267656e7a656b657268656964026e6c0000010001 +d799800000010000000200020f7a6f7267656e7a656b657268656964026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c01cc00c00020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +37534 +ee3f00000001000000000000036e7332076e656473746174026e6c0000010001 +ee3f80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37535 +f21f00000001000000000000036e7332076e656473746174026e6c00001c0001 +f21f80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37536 +eb3d00000001000000000000036e7332076e656473746174026e6c0000260001 +eb3d80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +37537 +3bdf00000001000000000000036e7333076e656473746174026e6c00001c0001 +3bdf80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +37538 +2a4e28000001000000010000026e6c0000060001085f6b706173737764045f74637008537465696a6c6572026e6c000021000100000258001d0000006401d00966732d737465696a6c08537465696a6c6572026e6c00 +2a4ea8040000000000000000 + +37539 +961300000001000000000000046d61696c07726f746f6e65740472736462026e6c0000010001 +961380000001000000020000046d61696c07726f746f6e65740472736462026e6c0000010001c0190002000100015180000b026e73026e6c036e657400c0190002000100015180001206617574683630026e73026e6c027575c038 + +37540 +0000000070024000a61c0000020405b401010402 +000080010000000000000000 + +37541 +84f2000000010000000000000773796e65726761026e6c0000010001 +84f2800000010000000200020773796e65726761026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +37542 +000000007002faf0f9bf00000204057801010402 +000080010000000000000000 + +37543 +dc0200000001000000000000037777770a6269626c696f73686f70026e6c0000010001 +dc0280000001000000020002037777770a6269626c696f73686f70026e6c0000010001c0100002000100015180000b036e733104656e6f6dc01bc01000020001000151800006036e7332c033c02f00010001000151800004d87a0479c04600010001000151800004d86296b6 + +37544 +b78b571050104470bfc40000000000000000 +b78bd7140000000000000000 + +37545 +b78b5710501844704cc600000097e600000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b78bd7140000000000000000 + +37546 +b78c39d15010fb90343a0000000000000000 +b78cb9d40000000000000000 + +37547 +82c900000001000000000000037777770f6861726c656b696e6f2d686f626279026e6c0000010001 +82c980000001000000020000037777770f6861726c656b696e6f2d686f626279026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c020c0100002000100015180000704686e7331c039 + +37548 +b78c39d15018fb909ce6000000909f24000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000056494e4743415244484f54454c414c4d454c4f0000 +b78cb9d40000000000000000 + +37549 +46cb00000001000000000000036e7332076e65746c616e64026e6c0000010001 +46cb80000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +37550 +b78b571e50114462bf2a0000000000000000 +b78bd7140000000000000000 + +37551 +000000007002400008150000020405b401010402 +000080010000000000000000 + +37552 +b78c39df5011fb8233a70000000000000000 +b78cb9d40000000000000000 + +37553 +cee1000000010000000000000377777706336861727473026e6c0000010001 +cee1800000010000000200010377777706336861727473026e6c0000010001c01000020001000151800010066d69636b6579066e6574636f6dc017c0100002000100015180001306646f6e616c640634726f7a656e03636f6d00c02b00010001000151800004c2863082 + +37554 +b78b571f50104462bf290000000000000000 +b78bd7140000000000000000 + +37555 +000000007002faf0c9e400000204057801010402 +000080010000000000000000 + +37556 +b78cbc5650104470bc750000000000000000 + + +37557 +b78cbc5650184470607800000097d000000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 + + +37558 +b78c39e05010fb8233a60000000000000000 +b78cb9e40000000000000000 + +37559 +b78da4565010fb9099d80000000000000000 + + +37560 +b78cbc6450114462bbdb0000000000000000 + + +37561 +34b600000001000000000000026e73066863636e6574026e6c0000010001 +34b680000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +37562 +3e80000000010000000000000868616c666f726473026e6c00001c0001 +3e80800000010000000200000868616c666f726473026e6c00001c0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02d + +37563 +0000000070024000228f0000020405b401010402 +000080010000000000000000 + +37564 +b78da4565018fb901ec30000009084e6000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000056494e4743415244484f54454c414c4d454c4f0000 + + +37565 +1e630000000100000000000004444e5331064d494e4c4e56026e6c0000010001 +1e638000000100000003000304444e5331064d494e4c4e56026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +37566 +cd8e0000000100000000000004444e5332064d494e4c4e56026e6c0000010001 +cd8e8000000100000003000304444e5332064d494e4c4e56026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +37567 +c77400000001000000000000037777770464653b3b026e6c0000010001 +c77484030001000000010000037777770464653b3b026e6c0000010001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +37568 +b78cbc6550104462bbda0000000000000000 + + +37569 +b78e75ee501044701d560000000000000000 +b78ef5e40000000000000000 + +37570 +4e99000000010000000000000767646578636832056f72746563026e6c0000010001 +4e99800000010000000200020767646578636832056f72746563026e6c0000010001c0140002000100015180000c036e73310563736e6574c01ac01400020001000151800006036e7332c032c02e00010001000151800004c2451012c04600010001000151800004c2451212 + +37571 +b78da4645011fb8299450000000000000000 + + +37572 +b78e75ee50184470d75800000097ba00000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b78ef5e40000000000000000 + +37573 +6419000000010000000000000377777709787472616c61726765026e6c0000010001 +6419800000010000000200000377777709787472616c61726765026e6c0000010001c01000020001000151800014036e73350a78736e6574776f726b73036e657400c01000020001000151800006036e7332c032 + +37574 +312b000000010000000000000377777709787472616c61726765026e6c0000010001 +312b800000010000000200000377777709787472616c61726765026e6c0000010001c01000020001000151800014036e73350a78736e6574776f726b73036e657400c01000020001000151800006036e7332c032 + +37575 +000000007002faf0089000000204057801010402 +000080010000000000000000 + +37576 +b78da4655010fb8299440000000000000000 + + +37577 +b78e75fc501144621cbc0000000000000000 +b78ef5f40000000000000000 + +37578 +b78f54175010fb9028c10000000000000000 +b78fd4140000000000000000 + +37579 +b78f54175018fb9063c900000090cec8000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e00b000b0028000000080008002000000056494e4743415244484f54454c414c4d454c4f0000 +b78fd4140000000000000000 + +37580 +b78e75fd501044621cbb0000000000000000 +b78ef5f40000000000000000 + +37581 +2e89000000010000000000000377777712686f6c6c616e64736561727469657374656e026e6c0000010001 +2e89800000010000000200000377777712686f6c6c616e64736561727469657374656e026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c03a + +37582 +9e4300000001000000000000066d69636b6579066e6574636f6d026e6c00001c0001 +9e4380000001000000020001066d69636b6579066e6574636f6d026e6c00001c0001c01300020001000151800002c00cc01300020001000151800010066d696e6e696506787334616c6cc01ac00c00010001000151800004c2863082 + +37583 +b78f54255011fb82282e0000000000000000 +b78fd4240000000000000000 + +37584 +0f3800000001000000000000037777770865626e6272656461026e6c0000010001 +0f3880000001000000020002037777770865626e6272656461026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +37585 +6d2b0000000100000000000003666c79036b6c6d026e6c0000010001 +6d2b8000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +37586 +5b8000000001000000000000037777770865626e6272656461026e6c0000010001 +5b8080000001000000020002037777770865626e6272656461026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +37587 +2a5128000001000000010000026e6c0000060001085f6b706173737764045f75647008537465696a6c6572026e6c000021000100000258001d0000006401d00966732d737465696a6c08537465696a6c6572026e6c00 +2a51a8040000000000000000 + +37588 +406200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +406280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37589 +746b00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +746b80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37590 +b78f54265010fb82282d0000000000000000 +b78fd4240000000000000000 + +37591 +dd190000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +dd198000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37592 +04170000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +04178000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37593 +92ca0000000100000000000003777777057363617279026e6c0000010001 +92ca8000000100000002000203777777057363617279026e6c0000010001c0100002000100015180000c04646e73310471776562c016c0100002000100015180000704646e7332c02fc02a00010001000151800004d994ac0cc04200010001000151800004d5c42f6c + +37594 +715f00000001000000000000106272756964736d6f64656c61726f7365026e6c00000f0001 +715f80000001000000020002106272756964736d6f64656c61726f7365026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c01dc00c00020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +37595 +0000000070024000300a0000020405b401010402 +000080010000000000000000 + +37596 +89f700000001000000000000026e7303687661026e6c0000010001 +89f780000001000000030003026e7303687661026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00f00020001000151800006036e7332c00fc00c00010001000151800004915c1202c03500010001000151800004c0576a65c04f00010001000151800004915c2102 + +37597 +18ff00000001000000000000036e733203687661026e6c0000010001 +18ff80000001000000030003036e733203687661026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc02800010001000151800004915c1202c03900010001000151800004c0576a65c00c00010001000151800004915c2102 + +37598 +bb6f00000001000000000000026e7303687661026e6c0000260001 +bb6f80000001000000030003026e7303687661026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00f00020001000151800006036e7332c00fc00c00010001000151800004915c1202c03500010001000151800004c0576a65c04f00010001000151800004915c2102 + +37599 +9c0200000001000000000000036e733203687661026e6c0000260001 +9c0280000001000000030003036e733203687661026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800002c00cc02800010001000151800004915c1202c03900010001000151800004c0576a65c00c00010001000151800004915c2102 + +37600 +b79029f35010447076ca0000000000000000 +b790a9f40000000000000000 + +37601 +b79029f3501844703bcc00000097ae00000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b790a9f40000000000000000 + +37602 +b3260000000100000000000009776565726b616d6572026e6c0000010001 +b3268000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +37603 +687d000000010000000000000761726f77616e61026e6c0000ff0001 +687d800000010000000200000761726f77616e61026e6c0000ff0001c00c00020001000151800013036e7339096b6f6f6b69656a6172036e657400c00c00020001000151800007046e733130c02c + +37604 +c80400000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c80480000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37605 +b7902a015011446276300000000000000000 +b790aa040000000000000000 + +37606 +84be000000010000000000000776656e73746572026e6c00000f0001 +84be800000010000000300020776656e73746572026e6c00000f0001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +37607 +f26f00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f26f80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37608 +0000000070024000652c0000020405b401010402 +000080010000000000000000 + +37609 +b7902a0250104462762f0000000000000000 +b790aa040000000000000000 + +37610 +8846000000010000000000000d66696174626172636865747461026e6c00000f0001 +8846800000010000000300010d66696174626172636865747461026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01ac00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +37611 +b790f1e050104470e3fe0000000000000000 + + +37612 +b790f1e050184470c001000000979800000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 + + +37613 +34c10000000100000000000008616473657276657206776562616473026e6c0000010001 +34c18000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +37614 +b790f1ee50114462e3640000000000000000 + + +37615 +000000007002400068eb0000020405b401010402 +000080010000000000000000 + +37616 +e54800000001000000000000027167026e6c0000010001 +e54880000001000000020000027167026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c026 + +37617 +b790f1ef50104462e3630000000000000000 + + +37618 +16920000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +16928000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +37619 +b79170fc5010447068a10000000000000000 +b791f0f40000000000000000 + +37620 +b79170fc50184470faa300000097e200000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b791f0f40000000000000000 + +37621 +c25900000001000000000000026e7306766576696461026e6c0000010001 +c25980000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +37622 +6c3c00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +6c3c80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37623 +e81b00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +e81b80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37624 +617a000000010000000000000b676966706c6161746a6573026e6c0000010001 +617a800000010000000200000b676966706c6161746a6573026e6c0000010001c00c00020001000151800013036e73310c616374697665646f6d61696ec018c00c00020001000151800006036e7332c030 + +37625 +b791710a5011446268070000000000000000 +b791f1040000000000000000 + +37626 +b2d600000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +b2d680000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +37627 +59fc0000000100000000000007666f727475796e026e6c00000f0001 +59fc8000000100000002000207666f727475796e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +37628 +b791710b5010446268060000000000000000 +b791f1040000000000000000 + +37629 +f48e000000010000000000000745434f4e3232380c67656c6465726d616c73656e026e6c0000010001 +f48e800000010000000200020745434f4e3232380c67656c6465726d616c73656e026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c03500010001000151800004c143b9b5c04600010001000151800004c143b9b6 + +37630 +1dd600000001000000000000037777770a65726f746f6d616e6961026e6c0000010001 +1dd680000001000000020002037777770a65726f746f6d616e6961026e6c0000010001c01000020001000151800011036e73310a78736f6c7574696f6e73c01bc01000020001000151800006036e7332c033c02f00010001000151800004c3562e38c04c00010001000151800004c3562e39 + +37631 +fc2b00000001000000000000037777770a65726f746f6d616e6961026e6c0000010001 +fc2b80000001000000020002037777770a65726f746f6d616e6961026e6c0000010001c01000020001000151800011036e73310a78736f6c7574696f6e73c01bc01000020001000151800006036e7332c033c02f00010001000151800004c3562e38c04c00010001000151800004c3562e39 + +37632 +5ab000000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +5ab080000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37633 +0f6e00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +0f6e80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37634 +2d3700000001000000000000036e733109666972737466696e64026e6c0000010001 +2d3780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37635 +2a5428000001000000010000026e6c0000060001055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f736974657308537465696a6c6572026e6c000021000100000258001d0000006401850966732d737465696a6c08537465696a6c6572026e6c00 +2a54a8040000000000000000 + +37636 +cde90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cde98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37637 +d24f00000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +d24f80000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +37638 +536e00000001000000000000087175616c69627265026e6c0000ff0001 +536e80000001000000020000087175616c69627265026e6c0000ff0001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c02e + +37639 +922000000001000000000000036d783104696c7365026e6c0000010001 +922080000001000000030003036d783104696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c029000100010001518000043e45a282c03b000100010001518000043e45a283c04d000100010001518000043e45a284 + +37640 +646500100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000000000000 +646580000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +37641 +d72600000001000000000000037777770a706f7374657273616c65026e6c0000010001 +d72680000001000000020002037777770a706f7374657273616c65026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +37642 +000000007002400020bf0000020405b401010402 +000080010000000000000000 + +37643 +390700000001000000000000046e733032066368656c6c6f026e6c0000010001 +390780000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +37644 +658c00000001000000000000036e73310b706f73746b616e746f6f72026e6c0000010001 +658c80000001000000030003036e73310b706f73746b616e746f6f72026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009026e730369736dc01cc00c00010001000151800004c2973e04c03e00010001000151800004c2973e05c05000010001000151800004d994ab02 + +37645 +e52900000001000000000000036e73320b706f73746b616e746f6f72026e6c0000010001 +e52980000001000000030003036e73320b706f73746b616e746f6f72026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009026e730369736dc01cc03000010001000151800004c2973e04c00c00010001000151800004c2973e05c05000010001000151800004d994ab02 + +37646 +7ce7000000010000000000000776656e73746572026e6c00000f0001 +7ce7800000010000000300020776656e73746572026e6c00000f0001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +37647 +b793c2aa50104470cec40000000000000000 + + +37648 +b793c2aa50184470cbc6000000977600000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 + + +37649 +2c2400000001000000000000167265636874737072616b74696a6b616c62657273656e026e6c0000010001 +2c2480000001000000030003167265636874737072616b74696a6b616c62657273656e026e6c0000010001c00c0002000100015180000e076e73617574683103626974c023c00c0002000100015180000a076e736175746832c03fc00c0002000100015180000a076e736175746833c03fc03700010001000151800004d5880c33c05100010001000151800004d5880c3bc06700010001000151800004d4ccc00b + +37650 +2e81000000010000000000000a696e7465726472617065026e6c00000f0001 +2e81800000010000000200020a696e7465726472617065026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +37651 +b793c2b850114462ce2a0000000000000000 + + +37652 +0000000070024000dbf20000020405b401010402 +000080010000000000000000 + +37653 +3e6b00000001000000000000066d616372617006746d66776562026e6c00000f0001 +3e6b80000001000000020000066d616372617006746d66776562026e6c00000f0001c01300020001000151800011056c656d6f6e0571696e6970036e657400c01300020001000151800007046c696d65c034 + +37654 +c0cc00000001000000000000037777770d6b6c6f702d706172746e657273026e6c0000010001 +c0cc80000001000000030003037777770d6b6c6f702d706172746e657273026e6c0000010001c0100002000100015180000d036e7331067a6570746f72c01ec01000020001000151800006036e7332c036c01000020001000151800006036e7333c036c03200010001000151800004d5ce4f79c04b00010001000151800004d5ce4f7ac05d00010001000151800004d5ce4f7b + +37655 +b793c2b950104462ce290000000000000000 + + +37656 +b794500950104470fc980000000000000000 +b794d0040000000000000000 + +37657 +f96e000000010000000000000472657371026e6c0000010001 +f96e800000010000000200020472657371026e6c0000010001c00c00020001000151800010036e733109686f73746e65746276c011c00c00020001000151800006036e7332c029c0250001000100015180000451113264c04100010001000151800004d5c42851 + +37658 +8d85000000010000000000000377777706656e636f7265026e6c0000010001 +8d85800000010000000200020377777706656e636f7265026e6c0000010001c0100002000100015180000b026e7305706c616e74c017c01000020001000151800006036e7332c02ec02b00010001000151800004d59f0037c04200010001000151800004d59f0046 + +37659 +b794500950184470109c000000976000000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b794d0040000000000000000 + +37660 +5df300000001000000000000036e733503777873026e6c0000010001 +5df380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37661 +b78ab6a950104470823d0000000000000000 + + +37662 +b78ab6a95018447098b1000000961c75000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe21403c4fa10003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 + + +37663 +3ca400000001000000000000036e733109666972737466696e64026e6c0000010001 +3ca480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +37664 +1fa400000001000000000000036e7331067a6570746f72026e6c00001c0001 +1fa480000001000000030003036e7331067a6570746f72026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ce4f79c03900010001000151800004d5ce4f7ac04b00010001000151800004d5ce4f7b + +37665 +b794501750114462fbfe0000000000000000 +b794d0140000000000000000 + +37666 +e4c700000001000000000000036e7332067a6570746f72026e6c00001c0001 +e4c780000001000000030003036e7332067a6570746f72026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02b00010001000151800004d5ce4f79c00c00010001000151800004d5ce4f7ac04b00010001000151800004d5ce4f7b + +37667 +b36800000001000000000000036e7333067a6570746f72026e6c00001c0001 +b36880000001000000030003036e7333067a6570746f72026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02b00010001000151800004d5ce4f79c03d00010001000151800004d5ce4f7ac00c00010001000151800004d5ce4f7b + +37668 +00000000700240005a800000020405b401010402 +000080010000000000000000 + +37669 +370400000001000000000000026e73076d696e76656e77026e6c0000010001 +370480000001000000030002026e73076d696e76656e77026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c297be47c03900010001000151800004c297be48 + +37670 +013b00000001000000000000026e73076e656473746174026e6c0000010001 +013b80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +37671 +013c00000001000000000000036e7333076e656473746174026e6c0000010001 +013c80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +37672 +933100000001000000000000046d61696c0c737069646572737069646572026e6c0000010001 +933180000001000000030000046d61696c0c737069646572737069646572026e6c0000010001c01100020001000151800014046e733031096772616669782d697303636f6d00c01100020001000151800007046e733032c037c01100020001000151800007046e733033c037 + +37673 +b794501850104462fbfd0000000000000000 +b794d0140000000000000000 + +37674 +b7952a9c50104470a0920000000000000000 +b795aa940000000000000000 + +37675 +926e00000001000000000000037777770d6265646465622d6b617374656e026e6c0000010001 +926e84030001000000010000037777770d6265646465622d6b617374656e026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +37676 +b7952a9c501844706a9500000097aa00000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b795aa940000000000000000 + +37677 +eeab000000010000000000000f6174746974756465686f6c6c616e64026e6c0000010001 +eeab800000010000000200000f6174746974756465686f6c6c616e64026e6c0000010001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c033 + +37678 +1a9e0000000100000000000003777777026678026e6c0000010001 +1a9e8000000100000002000103777777026678026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c013c04000010001000151800004c2860043 + +37679 +0ae800000001000000000000076d61696c6d616e0464733961026e6c00000f0001 +0ae880000001000000020002076d61696c6d616e0464733961026e6c00000f0001c0140002000100015180000b036e73310470696e65c019c01400020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +37680 +b7952aaa501144629ff80000000000000000 +b795aaa40000000000000000 + +37681 +96e200000001000000000000037777770b76697375616c726f757465076e6564636f6d70026e6c0000010001 +96e280000001000000020001037777770b76697375616c726f757465076e6564636f6d70026e6c0000010001c01c00020001000151800006036e7331c01cc01c0002000100015180000b026e73026e6c036e657400c03800010001000151800004c3c1a80d + +37682 +b7952aab501044629ff70000000000000000 +b795aaa40000000000000000 + +37683 +e9ec0000000100000000000006736f6e657261026e6c0000ff0001 +e9ec8000000100000003000006736f6e657261026e6c0000ff0001c00c00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02b + +37684 +151b00000001000000000000036e7331086e6f766178657373026e6c0000010001 +151b80000001000000030003036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +37685 +c258000000010000000000000668616e64656c026e6c0000020001 +c258800000010000000200000668616e64656c026e6c0000020001c00c0002000100015180000f026e7306636170696361036e657400c00c00020001000151800006036e7332c02a + +37686 +2a5728000001000000010000026e6c0000060001055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026763065f6d7364637308537465696a6c6572026e6c000021000100000258001d000000640cc40966732d737465696a6c08537465696a6c6572026e6c00 +2a57a8040000000000000000 + +37687 +033700000001000000000000036e7335046372696f026e6c0000010001 +033780000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37688 +ba1700000001000000000000036e7336046372696f026e6c0000010001 +ba1780000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37689 +208d000000010000000000000377777703776562026e6c0000010001 +208d800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +37690 +a5d800000001000000000000036e7331046372696f026e6c0000010001 +a5d880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37691 +e33c00000001000000000000036e7332046372696f026e6c0000010001 +e33c80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37692 +0ae000000001000000000000037777770a72656372656174696566026e6c0000010001 +0ae080000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +37693 +eab3000000010000000000000377777703776562026e6c0000010001 +eab3800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +37694 +386600000001000000000000036e7331046372696f026e6c0000010001 +386680000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37695 +72d700000001000000000000036e7332046372696f026e6c0000010001 +72d780000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37696 +23c200000001000000000000037777770e6465676564656b7465746166656c026e6c0000010001 +23c280000001000000020002037777770e6465676564656b7465746166656c026e6c0000010001c0100002000100015180000f036e733108676c6f62616c2d65c01fc01000020001000151800006036e7332c037c03300010001000151800004d4f132c8c04e00010001000151800004d4f132d3 + +37697 +00000000700240005b800000020405b401010402 +000080010000000000000000 + +37698 +fd5d00000001000000000000036e7331096873686f6c6c616e64026e6c00001c0001 +fd5d80000001000000020002036e7331096873686f6c6c616e64026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c01ac00c000100010001518000049151d532c03c00010001000151800004c0576a65 + +37699 +8afb00000001000000000000037777770b62657465727370656c656e026e6c0000ff0001 +8afb80000001000000020001037777770b62657465727370656c656e026e6c0000ff0001c01000020001000151800018067365727665720e666c6974732d696e7465726e6574c01cc0100002000100015180000c036e7332057377646e73c01cc03000010001000151800004d5a0da82 + +37700 +9f9c00000001000000000000046e73303803777873026e6c00001c0001 +9f9c80000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +37701 +b99700000001000000000000046e73303803777873026e6c0000260001 +b99780000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +37702 +1aab00000001000000000000046e73303903777873026e6c00001c0001 +1aab80000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +37703 +2e9400000001000000000000046e73303903777873026e6c0000260001 +2e9480000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +37704 +cf9600000001000000000000036e733503777873026e6c00001c0001 +cf9680000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37705 +124b00000001000000000000036e733503777873026e6c0000260001 +124b80000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37706 +b795b7cb5010447014630000000000000000 + + +37707 +b795b7cb501844701f65000000976800000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 + + +37708 +232e00000001000000000000037777770c72616164686574776f6f7264026e6c0000010001 +232e80000001000000030002037777770c72616164686574776f6f7264026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +37709 +b795b7d95011446213c90000000000000000 + + +37710 +000000007002400082b20000020405b401010402 +000080010000000000000000 + +37711 +b795b7da5010446213c80000000000000000 + + +37712 +b7963fba50104470b3a50000000000000000 +b796bfb40000000000000000 + +37713 +b7963fba5018447075a800000097b200000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b796bfb40000000000000000 + +37714 +9e0500000001000000000000036e73330864686f7374696e67026e6c0000010001 +9e0580000001000000020002036e73330864686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d00010001000151800004515b0370c03e00010001000151800004515b000a + +37715 +1f7d00000001000000000000076575726f636f6c026e6c00000f0001 +1f7d80000001000000020002076575726f636f6c026e6c00000f0001c00c0002000100015180000d026e73077374616e6e6574c014c00c00020001000151800006036e7332c02bc02800010001000151800004d5852414c04100010001000151800004d5852418 + +37716 +bf1700000001000000000000046d61696c0d686c622d736368697070657273026e6c0000010001 +bf1780000001000000020000046d61696c0d686c622d736368697070657273026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c039 + +37717 +b7963fc850114462b30b0000000000000000 +b796bfc40000000000000000 + +37718 +bc620000000100000000000004616e73310774697363616c69026e6c0000010001 +bc628000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +37719 +0000000070024000b50f0000020405b401010402 +000080010000000000000000 + +37720 +bda000000001000000000000037777770d73616d736f6e20262067657274026e6c0000010001 +bda084030001000000010000037777770d73616d736f6e20262067657274026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +37721 +b7963fc950104462b30a0000000000000000 +b796bfc40000000000000000 + +37722 +b797006150104470255b0000000000000000 +b79780010000000000000000 + +37723 +ca020000000100000000000003656c3107696e7465727873026e6c0000010001 +ca028000000100000002000203656c3107696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37724 +65010000000100000000000003656c3107696e7465727873026e6c0000260001 +65018000000100000002000203656c3107696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37725 +524d0000000100000000000003656c3207696e7465727873026e6c0000010001 +524d8000000100000002000203656c3207696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37726 +116c0000000100000000000003656c3207696e7465727873026e6c0000260001 +116c8000000100000002000203656c3207696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37727 +b797006150184470275e000000977200000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005b03677373096d6963726f736f667403636f6d00403afc56403c4dd60003000000384e544c4d535350000100000097b200e00f000f0029000000090009002000000046532d535445494a4c535445494a4c45522d444f4d45494e0000 +b79780010000000000000000 + +37728 +44340000000100000000000003656c3307696e7465727873026e6c0000010001 +44348000000100000002000203656c3307696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37729 +a21a0000000100000000000003656c3307696e7465727873026e6c0000260001 +a21a8000000100000002000203656c3307696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37730 +510d0000000100000000000003656c3407696e7465727873026e6c0000010001 +510d8000000100000002000203656c3407696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37731 +78280000000100000000000003656c3407696e7465727873026e6c0000260001 +78288000000100000002000203656c3407696e7465727873026e6c0000260001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +37732 +b1c400000001000000000000026e73076e656473746174026e6c0000010001 +b1c480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +37733 +2ba6000000010000000000000a6765656e686569776567026e6c0000010001 +2ba6800000010000000300030a6765656e686569776567026e6c0000010001c00c0002000100015180000c036e7331053266617374c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b0001000100015180000450f7c022c043000100010001518000043e858122c055000100010001518000045117eb22 + +37734 +15c200000001000000000000036e7331046372696f026e6c0000010001 +15c280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37735 +3d1e00000001000000000000036e7332046372696f026e6c0000010001 +3d1e80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37736 +1e2b00000001000000000000037777770a72656372656174696566026e6c0000010001 +1e2b80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +37737 +3ae300000001000000000000036e7331046372696f026e6c0000010001 +3ae380000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37738 +0f9000000001000000000000036e7332046372696f026e6c0000010001 +0f9080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37739 +b797006f5011446224c10000000000000000 +b79780010000000000000000 + +37740 +0b7b000000010000000000000869766f77696c6c65066e7434616c6c024e4c0000010001 +0b7b800000010000000200020869766f77696c6c65066e7434616c6c024e4c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +37741 +f07d00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +f07d80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37742 +198400000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +198480000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37743 +b79700705010446224c00000000000000000 +b79780010000000000000000 + +37744 +962c00000001000000000000036e7331076970746f776572026e6c00001c0001 +962c80000001000000020002036e7331076970746f776572026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ecc4065c03a000100010001518000043ecc4066 + +37745 +64bc00000001000000000000036e7332076970746f776572026e6c00001c0001 +64bc80000001000000020002036e7332076970746f776572026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043ecc4065c00c000100010001518000043ecc4066 + +37746 +9f29000000010000000000000f726f6765727377656264657369676e026e6c00000f0001 +9f29800000010000000200000f726f6765727377656264657369676e026e6c00000f0001c00c00020001000151800017036e73310d7072696f736572766530316e74036e657400c00c00020001000151800006036e7332c034 + +37747 +fb0e0000000100000000000004686f6d650774697363616c69026e6c00001c0001 +fb0e8000000100000003000204686f6d650774697363616c69026e6c00001c0001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +37748 +a53f00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +a53f80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37749 +f22300000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f22380000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +37750 +c11200000001000000000000037777770477656572026e6c0000010001 +c11280000001000000020002037777770477656572026e6c0000010001c010000200010001518000110568656e7279086d6574656f636f6ec015c0100002000100015180000e036e733207737572666e6574c015c02900010001000151800004c057690ac04600010001000151800004c0572402 + +37751 +1bc900000001000000000000036e73340767617574656e67026e6c0000010001 +1bc980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37752 +23d600000001000000000000036e73330767617574656e67026e6c0000010001 +23d680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37753 +1cf70000000100000000000003636b72026e6c00000f0001 +1cf78000000100000002000203636b72026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +37754 +8baf00000001000000000000037777770668616c6d6f73026e6c0000010001 +8baf80000001000000020000037777770668616c6d6f73026e6c0000010001c01000020001000151800017036e73310d6373732d6970636f6e6e65637403636f6d00c01000020001000151800006036e7332c02f + +37755 +02fa000000010000000000000d746877696e672d616c62657274026e6c00000f0001 +02fa800000010000000200020d746877696e672d616c62657274026e6c00000f0001c00c00020001000151800014036e73310d32302d616c6c686f7374696e67c01ac00c00020001000151800006036e7332c032c02e000100010001518000044262d66ec04e000100010001518000044262d66f + +37756 +27f20010000100000000000106787334616c6c026e6c0000ff00010000290800000080000000 +27f28000000100000003000306787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +37757 +faee00000001000000000000086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001 +faee80000001000000020002086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001c0220002000100015180000d036e7331066d696e646566c027c02200020001000151800006036e7332c03fc03b00010001000151800004d9a9e7c6c05400010001000151800004d9a9e7c5 + +37758 +3881000000010000000000000377777703776562026e6c0000010001 +3881800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +37759 +e59e000000010000000000000a6d61696c712d6574726e0462617274026e6c0000010001 +e59e800000010000000200020a6d61696c712d6574726e0462617274026e6c0000010001c01700020001000151800012036e73310b7669616e6574776f726b73c01cc01700020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +37760 +a3be000000010000000000000a6d61696c712d6574726e0462617274026e6c00001c0001 +a3be800000010000000200020a6d61696c712d6574726e0462617274026e6c00001c0001c01700020001000151800012036e73310b7669616e6574776f726b73c01cc01700020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +37761 +c6ab0000000100000000000003777777046f746762026e6c0000010001 +c6ab8000000100000003000103777777046f746762026e6c0000010001c0100002000100015180000e026e7308767575727765726bc015c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c047c029000100010001518000043efa0202 + +37762 +cda200000001000000000000037777770e696e7465726167656e747572656e026e6c0000010001 +cda280000001000000020002037777770e696e7465726167656e747572656e026e6c0000010001c0100002000100015180000e036e733107626265796f6e64c01fc01000020001000151800006036e7332c037c033000100010001518000043eb1900bc04d000100010001518000043eb19002 + +37763 +61700000000100000000000005737461747307676f2d77657374026e6c0000010001 +61708000000100000003000105737461747307676f2d77657374026e6c0000010001c0120002000100015180000e026e7308767575727765726bc01ac01200020001000151800012036e733208767575727765726b036e657400c01200020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +37764 +5d150000000100000000000006676f32776562026e6c026e6c00000f0001 +5d158403000100000001000006676f32776562026e6c026e6c00000f0001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +37765 +1bb000000001000000000000036e73330767617574656e67026e6c0000010001 +1bb080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37766 +7a4e0000000100000000000003777777087665726f6e697661026e6c0000010001 +7a4e8403000100000001000003777777087665726f6e697661026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +37767 +75f400000001000000000000056d61696c310976697275737672696a026e6c0000010001 +75f480000001000000020000056d61696c310976697275737672696a026e6c0000010001c0120002000100015180000d036e7331036b706e036e657400c01200020001000151800006036e7332c034 + +37768 +061b000000010000000000000a67677a6472656e746865026e6c00000f0001 +061b800000010000000200000a67677a6472656e746865026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02f + +37769 +800b00000001000000000000137363686f74706f6f72746c6f67697374696373026e6c0000010001 +800b80000001000000020002137363686f74706f6f72746c6f67697374696373026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc020c00c00020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +37770 +0bfd0000000100000000000003777777076d657263617264026e6c0000010001 +0bfd8000000100000002000203777777076d657263617264026e6c0000010001c0100002000100015180000d026e73077374616e6e6574c018c01000020001000151800006036e7332c02fc02c00010001000151800004d5852414c04500010001000151800004d5852418 + +37771 +b7a400000001000000000000037777770c6263766c697373696e67656e026e6c0000010001 +b7a480000001000000020000037777770c6263766c697373696e67656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +37772 +b793000000010000000000000e426f6e676572732d4a616e73656e026e6c0000010001 +b793800000010000000200000e426f6e676572732d4a616e73656e026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03a + +37773 +7e810000000100000000000005646e732d31056c61646f74026e6c0000010001 +7e818000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37774 +3da20000000100000000000005646e732d32056c61646f74026e6c0000010001 +3da28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37775 +5cde00000001000000000000036e733103736974026e6c0000260001 +5cde80000001000000020002036e733103736974026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045111218dc036000100010001518000045111218e + +37776 +e38d00000001000000000000036e733203736974026e6c00001c0001 +e38d80000001000000020002036e733203736974026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000045111218dc00c000100010001518000045111218e + +37777 +b5bb000000010000000000000377777714686f7574766573746572696a656e6865746c6f6f026e6c0000010001 +b5bb840300010000000100000377777714686f7574766573746572696a656e6865746c6f6f026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +37778 +3e8c0000000100000000000009652d6c756e61746963026e6c0000010001 +3e8c8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37779 +36800000000100000000000009652d6c756e61746963026e6c0000010001 +36808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37780 +7bb8000000010000000000000963616d7061676e657304626f6e65026e6c0000010001 +7bb8800000010000000200020963616d7061676e657304626f6e65026e6c0000010001c0160002000100015180000b026e7305706c616e74c01bc01600020001000151800006036e7332c032c02f00010001000151800004d59f0037c04600010001000151800004d59f0046 + +37781 +1bb100000001000000000000056d6777303203777873026e6c03777873026e6c0000010001 +1bb180000001000000030003056d6777303203777873026e6c03777873026e6c0000010001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37782 +335200000001000000000000036e733403777873026e6c0000260001 +335280000001000000030003036e733403777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +37783 +bec300000001000000000000036e733403777873026e6c00001c0001 +bec380000001000000030003036e733403777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +37784 +ab6f00000001000000000000037777770b64697265637476616c7565026e6c0000010001 +ab6f80000001000000020002037777770b64697265637476616c7565026e6c0000010001c01000020001000151800012036e73350b73696c766572706f696e74c01cc01000020001000151800006036e7336c034c0300001000100015180000450f7c702c04e0001000100015180000450f7c602 + +37785 +689900000001000000000000036e733303777873026e6c0000260001 +689980000001000000030003036e733303777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37786 +2f6000000001000000000000036e733303777873026e6c00001c0001 +2f6080000001000000030003036e733303777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37787 +2ea800000001000000000000036e733303777873026e6c0000010001 +2ea880000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +37788 +faec00000001000000000000056d6777303103777873026e6c03777873026e6c0000260001 +faec80000001000000030003056d6777303103777873026e6c03777873026e6c0000260001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37789 +412600000001000000000000056369766971026e6c00000f0001 +412680000001000000020002056369766971026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +37790 +dc8a00000001000000000000056d6777303103777873026e6c03777873026e6c00001c0001 +dc8a80000001000000030003056d6777303103777873026e6c03777873026e6c00001c0001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37791 +1ded0000000100000000000008686f73746e616d650462696e640000100003 +1ded8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37792 +a93d00000001000000000000056d6777303103777873026e6c03777873026e6c0000010001 +a93d80000001000000030003056d6777303103777873026e6c03777873026e6c0000010001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37793 +849600000001000000000000056d6777303203777873026e6c03777873026e6c0000260001 +849680000001000000030003056d6777303203777873026e6c03777873026e6c0000260001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37794 +905700000001000000000000056d6777303203777873026e6c03777873026e6c00001c0001 +905780000001000000030003056d6777303203777873026e6c03777873026e6c00001c0001c01900020001000151800007046e733038c019c01900020001000151800007046e733039c019c01900020001000151800006036e7334c019c03100010001000151800004c3790128c04400010001000151800004c3790143c05700010001000151800004d5ef9a65 + +37795 +3bfb0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3bfb8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37796 +ba3c0000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +ba3c8000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37797 +a2190000000100000000000008686f73746e616d650462696e640000100003 +a2198000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37798 +29800000000100000000000008686f73746e616d650462696e640000100003 +29808000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +37799 +36470000000100000000000006706f6c6c7578086c6f7374626f7973026e6c0000010001 +36478000000100000002000206706f6c6c7578086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c01300020001000151800002c00cc030000100010001518000043e32050ac00c00010001000151800004c297d912 + +37800 +e0b70000000100000000000006636173746f72086c6f7374626f7973026e6c0000010001 +e0b78000000100000002000206636173746f72086c6f7374626f7973026e6c0000010001c01300020001000151800002c00cc0130002000100015180000906706f6c6c7578c013c00c000100010001518000043e32050ac03e00010001000151800004c297d912 + +37801 +38bf001000010000000000010b7374617274706167696e61026e6c00000100010000290800000000000000 +38bf800000010000000300040b7374617274706167696e61026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a2840000291000000000000000 + +37802 +506a000000010000000000000b7374617274706167696e61026e6c0000010001 +506a800000010000000300030b7374617274706167696e61026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +37803 +c5c800000001000000000000026e730962697477697a617264026e6c0000010001 +c5c880000001000000020002026e730962697477697a617264026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000c026e73067574722d6978c019c00c00010001000151800004d5c428f2c03b0001000100015180000451113206 + +37804 +b78ab6b75011446281a40000000000000000 + + +37805 +0000000070024000a5620000020405b401010402 +000080010000000000000000 + +37806 +3b73000000010000000000000331333902313401360236390a626c61636b686f6c657307656173796e6574026e6c0000050001 +3b73800000010000000200020331333902313401360236390a626c61636b686f6c657307656173796e6574026e6c0000050001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +37807 +f2050000000100000000000014766c65656d696e67682d646d2d74726164696e67026e6c00000f0001 +f2058000000100000002000114766c65656d696e67682d646d2d74726164696e67026e6c00000f0001c00c0002000100015180000a036e733303777873c021c00c00020001000151800006036e7334c039c04b00010001000151800004d5ef9a65 + +37808 +11d200000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730574737269730f7269732d626172656e647265636874026e6c0000210001 +11d284030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730574737269730f7269732d626172656e647265636874026e6c0000210001c05600060001000038400036026e730f646f6d61696e2d7265676973747279c0560a686f73746d6173746572c06d0bf1e540000070800000384000278d0000003840 + +37809 +6b8f0000000100000000000008676f6c646d696e65026e6c00000f0001 +6b8f8000000100000003000208676f6c646d696e65026e6c00000f0001c00c0002000100015180000e046e733031066368656c6c6fc015c00c00020001000151800007046e733032c02ec00c0002000100015180000f026e73026e6c0369626d036e657400c02900010001000151800004d4534482c04300010001000151800004d4534483 + +37810 +6acc0000000100000000000003777777067a7376737463026e6c0000010001 +6acc8403000100000001000003777777067a7376737463026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +37811 +fe7100000001000000000000036e7331056163646973026e6c0000010001 +fe7180000001000000020002036e7331056163646973026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +37812 +2eb600000001000000000000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001 +2eb680000001000000020000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001c014000200010001518000110377656207616a63666f6f6403636f6d00c0140002000100015180000b0865786368616e6765c034 + +37813 +6f0e00000001000000000000037777770b7a77766e6f6f72642d6161026e6c0000010001 +6f0e80000001000000030001037777770b7a77766e6f6f72642d6161026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +37814 +2ab900000001000000000000086f6e746172676574026e6c00001c0001 +2ab980000001000000020002086f6e746172676574026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +37815 +19dc00000001000000000000055f6c646170045f746370026763065f6d736463730574737269730f7269732d626172656e647265636874026e6c0000210001 +19dc84030001000000010000055f6c646170045f746370026763065f6d736463730574737269730f7269732d626172656e647265636874026e6c0000210001c03700060001000038400036026e730f646f6d61696e2d7265676973747279c0370a686f73746d6173746572c04e0bf1e540000070800000384000278d0000003840 + +37816 +2b04000000010000000000000377777712766973736572696a636f6f70657261746965026e6c0000010001 +2b04800000010000000300020377777712766973736572696a636f6f70657261746965026e6c0000010001c0100002000100015180000d036e733106776964657873c023c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03bc03700010001000151800004d4ccc0fcc06c000100010001518000043efa0703 + +37817 +6476000000010000000000000672696a736572026e6c0000010001 +6476800000010000000200010672696a736572026e6c0000010001c00c00020001000151800010036e7331067573656c616203636f6d00c00c0002000100015180000d036e7332067573656c6162c013c043000100010001518000043e3aa284 + +37818 +1e3200000001000000000000036e7331046372696f026e6c0000010001 +1e3280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37819 +3a6a00000001000000000000036e7332046372696f026e6c0000010001 +3a6a80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37820 +21ad00000001000000000000037777770a72656372656174696566026e6c0000010001 +21ad80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +37821 +a80b00000001000000000000036e7331046372696f026e6c0000010001 +a80b80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37822 +e5aa00000001000000000000036e7332046372696f026e6c0000010001 +e5aa80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +37823 +48cd00000001000000000000136f6c6976696572736974656275696c64696e67026e6c00000f0001 +48cd84030001000000010000136f6c6976696572736974656275696c64696e67026e6c00000f0001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +37824 +d6200000000100000000000006696d616765730566756e6461026e6c0000010001 +d6208000000100000003000006696d616765730566756e6461026e6c0000010001c01300020001000151800012036e733108626c7565646f6d65036e657400c01300020001000151800006036e7332c031c01300020001000151800006036e7333c031 + +37825 +715400000001000000000000037777770d676b762d6e6574746f72616d61026e6c0000010001 +715480000001000000020000037777770d676b762d6e6574746f72616d61026e6c0000010001c0100002000100015180000f036e7331056165696374036e657400c01000020001000151800006036e7332c036 + +37826 +85e8000000010000000000001267656c612d696e7465726e6174696f6e616c026e6c00000f0001 +85e8840300010000000100001267656c612d696e7465726e6174696f6e616c026e6c00000f0001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +37827 +471e00000001000000000000086573746f72656e6c026e6c00000f0001 +471e84030001000000010000086573746f72656e6c026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +37828 +336100000001000000000000064e414d53525605414d4f4c46024e4c0000010001 +336180000001000000030003064e414d53525605414d4f4c46024e4c0000010001c01300020001000151800002c00cc0130002000100015180000a076e616d73727632c013c0130002000100015180000e036e733107737572666e6574c019c00c00010001000151800004c010bd03c03b00010001000151800004c010bddec05100010001000151800004c0576a65 + +37829 +923b00000001000000000000074d41494c53525605414d4f4c46024e4c0000010001 +923b80000001000000030003074d41494c53525605414d4f4c46024e4c0000010001c01400020001000151800009066e616d737276c014c0140002000100015180000a076e616d73727632c014c0140002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c010bd03c04300010001000151800004c010bddec05900010001000151800004c0576a65 + +37830 +382a0000000100000000000003777777026e75026e6c0000010001 +382a8000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +37831 +046800000001000000000000037777770b7a77766e6f6f72642d6161026e6c0000010001 +046880000001000000030001037777770b7a77766e6f6f72642d6161026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +37832 +55a300100001000000000001034e533103415454024e4c00000100010000290800000080000000 +55a380000001000000020003034e533103415454024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d0000291000000000000000 + +37833 +755400100001000000000001034e533103415454024e4c00002600010000290800000080000000 +755480000001000000020003034e533103415454024e4c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d0000291000000000000000 + +37834 +baaa00100001000000000001034e533203415454024e4c00000100010000290800000080000000 +baaa80000001000000020003034e533203415454024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d0000291000000000000000 + +37835 +aeee00100001000000000001034e533203415454024e4c00002600010000290800000080000000 +aeee80000001000000020003034e533203415454024e4c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d0000291000000000000000 + +37836 +235100000001000000000000037777770873746f726b706d74026e6c0000010001 +235180000001000000020002037777770873746f726b706d74026e6c0000010001c0100002000100015180000e036e73310765766964656e74c019c01000020001000151800006036e7332c031c02d00010001000151800004c36d19c4c04700010001000151800004c36d1942 + +37837 +7c3400000001000000000000037777770673706f72656e026e6c0000010001 +7c3480000001000000020000037777770673706f72656e026e6c0000010001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +37838 +55e00000000100000000000006696d616765730566756e6461026e6c0000010001 +55e08000000100000003000006696d616765730566756e6461026e6c0000010001c01300020001000151800012036e733108626c7565646f6d65036e657400c01300020001000151800006036e7332c031c01300020001000151800006036e7333c031 + +37839 +165300000001000000000000036e733107737572666e6574026e6c0000010001 +165380000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +37840 +7669000000010000000000000c72696a6e6576656c642d6176026e6c00000f0001 +7669800000010000000300000c72696a6e6576656c642d6176026e6c00000f0001c00c00020001000151800014046e733031096772616669782d697303636f6d00c00c00020001000151800007046e733032c032c00c00020001000151800007046e733033c032 + +37841 +bb1f000000010000000000000377777708737461727472656b026e6c0000010001 +bb1f800000010000000200020377777708737461727472656b026e6c0000010001c0100002000100015180000c026e73067574722d6978c019c01000020001000151800006036e7332c030c02d0001000100015180000451113206c04500010001000151800004d5c42806 + +37842 +3a4c00000001000000000000037777770b64656e74616c756e696f6e026e6c0000010001 +3a4c80000001000000020001037777770b64656e74616c756e696f6e026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c01cc01000020001000151800011036e7332076e6564636f6d70036f726700c03000010001000151800004c3c1a80d + +37843 +40450010000100000000000108667265656d61696c026e6c00000f00010000290800000000000000 +40458000000100000003000308667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f133250000291000000000000000 + +37844 +5768000000010000000000000473686f700a7468652d626f72646572026e6c0000010001 +5768800000010000000200020473686f700a7468652d626f72646572026e6c0000010001c0110002000100015180000b036e73310470696e65c01cc01100020001000151800006036e7332c034c03000010001000151800004d59c0201c04700010001000151800004c3c1a303 + +37845 +ab2a000000010000000000000473686f700a7468652d626f72646572026e6c0000010001 +ab2a800000010000000200020473686f700a7468652d626f72646572026e6c0000010001c0110002000100015180000b036e73310470696e65c01cc01100020001000151800006036e7332c034c03000010001000151800004d59c0201c04700010001000151800004c3c1a303 + +37846 +71df00100001000000000001036e7331056132303030026e6c00000100010000290800000080000000 +71df80000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +37847 +253400100001000000000001036e7331056132303030026e6c00002600010000290800000080000000 +253480000001000000030003036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +37848 +092200100001000000000001036e7332056132303030026e6c00000100010000290800000080000000 +092280000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +37849 +020c00100001000000000001036e7332056132303030026e6c00002600010000290800000080000000 +020c80000001000000030003036e7332056132303030026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +37850 +271100000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000010001 +271180000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +37851 +accb00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000010001 +accb80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +37852 +f83b000000010000000000000469632d73026e6c00000f0001 +f83b800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +37853 +363d00000001000000000000037777770a6d61726b706c61617473026e6c0000010001 +363d80000001000000020000037777770a6d61726b706c61617473026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c033 + +37854 +51110000000100000000000004686f6d6508636f6e6365707473026e6c0000010001 +51118000000100000002000204686f6d6508636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac0110002000100015180000704646e7332c011c02e00010001000151800004d5c51c03c04b00010001000151800004d5c51e1c + +37855 +1d5a00000001000000000000056d61696c3109656e6f766174696f6e026e6c0000010001 +1d5a80000001000000030002056d61696c3109656e6f766174696f6e026e6c0000010001c01200020001000151800006036e7334c012c01200020001000151800006036e7333c012c0120002000100015180001404646e733309656e6f766174696f6e036e657400c030000100010001518000049105fc46c042000100010001518000049105fc4e + +37856 +a36f000000010000000000000766616e6472616c077765622d6c6f67026e6c0000010001 +a36f800000010000000300030766616e6472616c077765622d6c6f67026e6c0000010001c0140002000100015180000b036e733104696c7365c01cc01400020001000151800006036e7332c034c01400020001000151800006036e7333c034c030000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +37857 +9d2e000000010000000000000377777705652d652d74026e6c0000010001 +9d2e800000010000000200010377777705652d652d74026e6c0000010001c0100002000100015180000a036e733303777873c016c01000020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +37858 +16f70000000100000000000004676d746f026e6c00000f0001 +16f78000000100000002000004676d746f026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c02c + +37859 +090a00000001000000000000037777770761626e616d726f026e6c0000010001 +090a80000001000000020002037777770761626e616d726f026e6c0000010001c0100002000100015180000b0870686f626f733031c010c0100002000100015180000b0870686f626f733032c010c02c00010001000151800004a7cac30bc04300010001000151800004a7cac30c + +37860 +b60a00000001000000000000026e75026e6c026e6c00001c0001 +b60a84030001000000010000026e75026e6c026e6c00001c0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +37861 +d1500000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d1508000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37862 +82670000000100000000000006726f62636f6d026e6c00000f0001 +82678000000100000002000006726f62636f6d026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +37863 +0dec00000001000000000000027167026e6c0000010001 +0dec80000001000000020000027167026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c026 + +37864 +6abf00000001000000000000037777770773696e64626164026e6c0000010001 +6abf80000001000000020002037777770773696e64626164026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +37865 +37bb000000010000000000000f7a61646b696e65636f6e7472616374026e6c0000010001 +37bb800000010000000200000f7a61646b696e65636f6e7472616374026e6c0000010001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c033 + +37866 +02d000100001000000000001036e733203757063026e6c00000100010000290800000080000000 +02d080000001000000030004036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +37867 +2e1d0000000100000000000008667265656d61696c026e6c00000f0001 +2e1d8000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +37868 +dba100000001000000000000036e7331056132303030026e6c0000010001 +dba180000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +37869 +385700000001000000000000036e7331056132303030026e6c0000260001 +385780000001000000030002036e7331056132303030026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +37870 +3b0400000001000000000000036e7332056132303030026e6c0000010001 +3b0480000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +37871 +6493000000010000000000000377777703707674026e6c0000010001 +6493800000010000000200020377777703707674026e6c0000010001c0100002000100015180000b026e73057469637473c014c01000020001000151800006036e7332c02bc02800010001000151800004c1ad2902c03f00010001000151800004c1ad2903 + +37872 +619e000000010000000000000e6c656b6b657265626f727374656e026e6c0000010001 +619e800000010000000200020e6c656b6b657265626f727374656e026e6c0000010001c00c0002000100015180000e036e7331076970746f776572c01bc00c00020001000151800006036e7332c033c02f000100010001518000043ecc4065c049000100010001518000043ecc4066 + +37873 +b8f100000001000000000000046b6e6175026e6c00000f0001 +b8f180000001000000030001046b6e6175026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +37874 +391500000001000000000000046370696d026e6c0000020001 +391580000001000000020002046370696d026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +37875 +0010000000010000000000000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001 +0010800000010000000200000662616e6e65720a7363686f6f6c62616e6b026e6c0000010001c0130002000100015180001406737068696e7807726f7365747461036e657400c0130002000100015180000906616e75626973c039 + +37876 +34cc00000001000000000000036e73310764656e68616167026e6c0000010001 +34cc80000001000000020002036e73310764656e68616167026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9443105c03a00010001000151800004d9443106 + +37877 +9a6600000001000000000000036e73320764656e68616167026e6c0000010001 +9a6680000001000000020002036e73320764656e68616167026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d9443105c00c00010001000151800004d9443106 + +37878 +939900000001000000000000037777770962697a617273697465026e6c0000010001 +939980000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +37879 +b78ab6b85010446281a30000000000000000 + + +37880 +903000000001000000000000037777770b6d6f6f69656b75746a6573026e6c0000010001 +903080000001000000020000037777770b6d6f6f69656b75746a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c033 + +37881 +b799061e501044700fef0000000000000000 +b79980010000000000000000 + +37882 +b799061e50184470a7d4000000969a04000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe22403c4fa20003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 +b79980010000000000000000 + +37883 +b28b0000000100000000000003706f700e616c6261726176656e67726f6570026e6c0000010001 +b28b8000000100000002000203706f700e616c6261726176656e67726f6570026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01fc01000020001000151800006036e7332c037c03300010001000151800004c3454b03c04f00010001000151800004d119a2fa + +37884 +7f30000000010000000000000661726475696e026e6c00000f0001 +7f30800000010000000200020661726475696e026e6c00000f0001c00c00020001000151800010026e730a7a65656c616e646e6574c013c00c00020001000151800006036e7332c02ac02700010001000151800004d473c0c1c04300010001000151800004d473c0c3 + +37885 +cca800000001000000000000037777770b62726162616e7462696572026e6c0000010001 +cca880000001000000020002037777770b62726162616e7462696572026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +37886 +41f50000000100000000000007636f6e74656e74026e6c00000f0001 +41f58000000100000002000007636f6e74656e74026e6c00000f0001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c02d + +37887 +ab3c0000000100000000000006787334616c6c026e6c0000ff0001 +ab3c8000000100000003000206787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +37888 +49d700000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +49d780000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +37889 +439500000001000000000000037777770d736578656e72656c6174696573026e6c0000010001 +439580000001000000020001037777770d736578656e72656c6174696573026e6c0000010001c0100002000100015180000b026e73053266617374c01ec01000020001000151800006036e7332c035c049000100010001518000043e858122 + +37890 +2679000000010000000000000661646475726c06746d66776562026e6c0000ff0001 +2679800000010000000200000661646475726c06746d66776562026e6c0000ff0001c01300020001000151800011056c656d6f6e0571696e6970036e657400c01300020001000151800007046c696d65c034 + +37891 +58c1000000010000000000001264656672697465737370656369616c697374026e6c00000f0001 +58c1800000010000000200021264656672697465737370656369616c697374026e6c00000f0001c00c0002000100015180000f04646e733107696e666f6e6574c01fc00c0002000100015180000704646e7332c038c03300010001000151800004d4bd01c4c04e00010001000151800004d4bd7f83 + +37892 +1d10000000010000000000010d6f6479737365652d67726f6570026e6c00001c00010000291000000000000000 +1d10800000010000000200010d6f6479737365652d67726f6570026e6c00001c0001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c0320000291000000000000000 + +37893 +f2de00000001000000000000076761792d7669700467757473026e6c0000010001 +f2de80000001000000020002076761792d7669700467757473026e6c0000010001c0140002000100015180000e026e73086e65787467656172c019c01400020001000151800006036e7332c030c02d00010001000151800004c26d9ab8c04700010001000151800004c26d9aa3 + +37894 +63790000000100000000000003777777056177657461026e6c0000010001 +63798000000100000002000003777777056177657461026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec031 + +37895 +30750000000100000000000011636f6e74726f6c65636e6574776f726b73026e6c00000f0001 +30758000000100000002000211636f6e74726f6c65636e6574776f726b73026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec01ec00c00020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +37896 +be9300000001000000000000037777770b6d6f7373656c766f636874026e6c0000010001 +be9380000001000000020002037777770b6d6f7373656c766f636874026e6c0000010001c0100002000100015180000e036e733207737570706f7274c01cc01000020001000151800006036e7334c034c03000010001000151800004c372e7c8c04a00010001000151800004c372e6fe + +37897 +2c2d00000001000000000000026e7307696e746f756368026e6c0000010001 +2c2d80000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +37898 +66ff00000001000000000000037777770d766964726176617374676f6564026e6c0000010001 +66ff80000001000000020000037777770d766964726176617374676f6564026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c039 + +37899 +ebbc00000001000000000000086168636272616e640564656d6f6e026e6c0000ff0001 +ebbc80000001000000030002086168636272616e640564656d6f6e026e6c0000ff0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +37900 +4e9700000001000000000000086168636272616e640564656d6f6e026e6c0000ff0001 +4e9780000001000000030002086168636272616e640564656d6f6e026e6c0000ff0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +37901 +6d260000000100000000000003777777096d7573696370616765026e6c0000010001 +6d268000000100000002000203777777096d7573696370616765026e6c0000010001c0100002000100015180000d026e73077374616e6e6574c01ac01000020001000151800006036e7332c031c02e00010001000151800004d5852414c04700010001000151800004d5852418 + +37902 +b729000000010000000000000465626179026e6c0000010001 +b729800000010000000200000465626179026e6c0000010001c00c000200010001518000140963726f636f64696c65046562617903636f6d00c00c0002000100015180000b087061636966696572c034 + +37903 +a8dc000000010000000000000c6b696a6b65727376726161670931746567656e313030026e6c0000010001 +a8dc800000010000000200000c6b696a6b65727376726161670931746567656e313030026e6c0000010001c0190002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0190002000100015180000d036e7332036b706e036e657400 + +37904 +54e20000000100000000000003777777096b61707065726e6574026e6c0000010001 +54e28000000100000003000203777777096b61707065726e6574026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +37905 +08360000000100000000000002616404696c7365026e6c0000010001 +08368000000100000003000302616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +37906 +12ff0000000100000000000005646e732d31056c61646f74026e6c0000010001 +12ff8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37907 +65020000000100000000000006676967616e74026e6c0000ff0001 +65028000000100000002000106676967616e74026e6c0000ff0001c00c0002000100015180000f036e733108642d736572766572c013c00c00020001000151800006036e7332c02bc0420001000100015180000451046032 + +37908 +dab60000000100000000000005646e732d32056c61646f74026e6c0000010001 +dab68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37909 +bb1300000001000000000000026e7304696d636f026e6c0000010001 +bb1380000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +37910 +6b4f000000010000000000000377777706746f6d746f6d026e6c0000010001 +6b4f800000010000000300010377777706746f6d746f6d026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +37911 +e07b0000000100000000000003646e62026e6c00000f0001 +e07b8000000100000002000003646e62026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +37912 +cc0700000001000000000000037777770d73616d736f6e20262067657274036e6c74026e6c0000010001 +cc0780000001000000020002037777770d73616d736f6e20262067657274036e6c74026e6c0000010001c01e00020001000151800012036e73310b7669616e6574776f726b73c022c01e00020001000151800006036e7332c03ac03600010001000151800004d43d0f08c05400010001000151800004d43d19e2 + +37913 +c9ea00000001000000000000036e73330767617574656e67026e6c0000010001 +c9ea80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37914 +c9eb00000001000000000000036e73340767617574656e67026e6c0000010001 +c9eb80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37915 +63f40000000100000000000005646e732d31056c61646f74026e6c0000010001 +63f48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37916 +e7420000000100000000000005646e732d32056c61646f74026e6c0000010001 +e7428000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37917 +7db90000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +7db98000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +37918 +430700000001000000000000036e733203757063026e6c0000010001 +430780000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +37919 +a6bc0000000100000000000006485342444e5309485342524142414e54026e6c0000010001 +a6bc8000000100000002000206485342444e5309485342524142414e54026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004913001fac03f00010001000151800004c0576a65 + +37920 +3e1c0000000100000000000009652d6c756e61746963026e6c0000010001 +3e1c8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37921 +0f000000000100000000000009652d6c756e61746963026e6c0000010001 +0f008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +37922 +6f2000000001000000000000036e733204696c7365026e6c0000010001 +6f2080000001000000030003036e733204696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e45a282c00c000100010001518000043e45a283c049000100010001518000043e45a284 + +37923 +01a200000001000000000000036e733304696c7365026e6c0000010001 +01a280000001000000030003036e733304696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc029000100010001518000043e45a282c03b000100010001518000043e45a283c00c000100010001518000043e45a284 + +37924 +81540000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +81548000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +37925 +aea900000001000000000000036e733104696c7365026e6c0000010001 +aea980000001000000030003036e733104696c7365026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +37926 +64ea000000010000000000000562696e636b026e6c00000f0001 +64ea800000010000000200020562696e636b026e6c00000f0001c00c0002000100015180000b036e73310470696e65c012c00c00020001000151800006036e7332c02ac02600010001000151800004d59c0201c03d00010001000151800004c3c1a303 + +37927 +394f00000001000000000000037777770f6a616d696e2d6c6579656e62757267026e6c0000010001 +394f80000001000000020002037777770f6a616d696e2d6c6579656e62757267026e6c0000010001c0100002000100015180000c026e7306787334616c6cc020c01000020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +37928 +249e00000001000000000000037777770a616c626174726f733231026e6c0000010001 +249e80000001000000030002037777770a616c626174726f733231026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +37929 +35c000000001000000000000026664026e6c00000f0001 +35c080000001000000020000026664026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +37930 +7ee00000000100000000000005646e732d31056c61646f74026e6c0000010001 +7ee08000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37931 +ecc00000000100000000000005646e732d32056c61646f74026e6c0000010001 +ecc08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +37932 +499200000001000000000000036e733107737572666e6574026e6c0000010001 +499280000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +37933 +ee2300000001000000000000037777771a73696d706c79616d7374657264616d2d61706172746d656e7473026e6c0000010001 +ee2380000001000000030002037777771a73696d706c79616d7374657264616d2d61706172746d656e7473026e6c0000010001c0100002000100015180000d036e733106776964657873c02bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c043c03f00010001000151800004d4ccc0fcc074000100010001518000043efa0703 + +37934 +b10300000001000000000000036e733108642d736572766572026e6c0000010001 +b10380000001000000020002036e733108642d736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d0001000100015180000451045c14c03e0001000100015180000451046032 + +37935 +afaf00000001000000000000034e533103415454024e4c0000010001 +afaf80000001000000020002034e533103415454024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +37936 +d87300000001000000000000034e533103415454024e4c0000260001 +d87380000001000000020002034e533103415454024e4c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +37937 +b64600000001000000000000037777770d64616e6e796465636163747573026e6c0000010001 +b64680000001000000020000037777770d64616e6e796465636163747573026e6c0000010001c0100002000100015180001905646e7330310d636f6d70726173657276657273036e657400c0100002000100015180000805646e733032c038 + +37938 +3f7600000001000000000000034e533203415454024e4c0000010001 +3f7680000001000000020002034e533203415454024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +37939 +1fbb00000001000000000000034e533203415454024e4c0000260001 +1fbb80000001000000020002034e533203415454024e4c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +37940 +da9a0000000100000000000003777777066a616e766973026e6c0000010001 +da9a8000000100000002000203777777066a616e766973026e6c0000010001c0100002000100015180000b026e73056c65766978c017c01000020001000151800006036e7332c02ec02b00010001000151800004d590ed07c042000100010001518000043e3aa7da + +37941 +03e000000001000000000000036e73340767617574656e67026e6c0000010001 +03e080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37942 +3bea00000001000000000000036e73340767617574656e67026e6c0000010001 +3bea80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37943 +49d20000000100000000000003777777106469676974616c65706c6161746a6573026e6c0000010001 +49d28000000100000002000003777777106469676974616c65706c6161746a6573026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c039 + +37944 +467c00000001000000000000046d61696c046e387738026e6c0000010001 +467c80000001000000020002046d61696c046e387738026e6c0000010001c0110002000100015180000d03706e7306636f6d6c6f67c016c0110002000100015180000603736e73c02ec02a00010001000151800004d5a0c803c04300010001000151800004d5a0c804 + +37945 +694f00000001000000000000046d61696c046e387738026e6c0000010001 +694f80000001000000020002046d61696c046e387738026e6c0000010001c0110002000100015180000d03706e7306636f6d6c6f67c016c0110002000100015180000603736e73c02ec02a00010001000151800004d5a0c803c04300010001000151800004d5a0c804 + +37946 +5e870000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +5e878000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +37947 +fcc5000000010000000000000e36322d3137372d3232352d32353007626265796f6e64026e6c0000010001 +fcc5800000010000000200020e36322d3137372d3232352d32353007626265796f6e64026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc037000100010001518000043eb1900bc049000100010001518000043eb19002 + +37948 +56890000000100000000000007722d652d612d64026e6c0000ff0001 +56898000000100000002000207722d652d612d64026e6c0000ff0001c00c0002000100015180001204646e73310a6e65746d617374657273c014c00c0002000100015180000704646e7332c02dc0280001000100015180000451044203c04600010001000151800004510442c9 + +37949 +e7370000000100000000000003777777076875656e646572026e6c0000010001 +e7378000000100000002000003777777076875656e646572026e6c0000010001c0100002000100015180000f036e73310561676e2d65036e657400c01000020001000151800006036e7332c030 + +37950 +2cdd000000010000000000000377777710686f74656c686161726c656d7a756964026e6c0000010001 +2cdd800000010000000300030377777710686f74656c686161726c656d7a756964026e6c0000010001c0100002000100015180000e076e73617574683103626974c021c0100002000100015180000a076e736175746832c03dc0100002000100015180000a076e736175746833c03dc03500010001000151800004d5880c33c04f00010001000151800004d5880c3bc06500010001000151800004d4ccc00b + +37951 +c9ee00000001000000000000036e73330767617574656e67026e6c0000010001 +c9ee80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37952 +c9ef00000001000000000000036e73340767617574656e67026e6c0000010001 +c9ef80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +37953 +308000000001000000000000037777771064656d616e6d616b656c61617264696a026e6c0000010001 +308080000001000000030003037777771064656d616e6d616b656c61617264696a026e6c0000010001c01000020001000151800015036e73310e6469726563747365727669636573c021c01000020001000151800006036e7332c039c01000020001000151800006036e7333c039c03500010001000151800004d994aa05c05600010001000151800004d994aa06c06800010001000151800004d994aa07 + +37954 +155100100001000000000000037777770868616c6c6d61726b026e6c0000010001 +155180000001000000020001037777770868616c6c6d61726b026e6c0000010001c0100002000100015180000c036e7331056b706e6873c019c0100002000100015180000d03646e73036b706e03636f6d00c02d0001000100015180000491072163 + +37955 +0d69000000010000000000000965787472616a656374026e6c00000f0001 +0d69800000010000000300010965787472616a656374026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +37956 +aff2000000010000000000000a64656661627269717565026e6c00000f0001 +aff2800000010000000300020a64656661627269717565026e6c00000f0001c00c0002000100015180000f036e7331086c65617365776562c017c00c00020001000151800006036e7332c02fc00c00020001000151800012036e7333086c65617365776562036f726700c02b000100010001518000043ed44079c046000100010001518000043ed4407a + +37957 +510428000001000000010000026e6c0000060001085f6b706173737764045f75647006646162687673026e6c00002100010000025800190000006401d0076461622d68767306646162687673026e6c00 +5104a8040000000000000000 + +37958 +b799062c501144620f560000000000000000 +b79980010000000000000000 + +37959 +df48000000010000000000000377777707686f6f6b657273026e6c0000010001 +df48800000010000000300030377777707686f6f6b657273026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +37960 +000000007002400003530000020405b401010402 +000080010000000000000000 + +37961 +000000007002400097ba00000204050201010402 +000080010000000000000000 + +37962 +5a59000000010000000000000a6970643530616639316305737065656406706c616e6574026e6c0000010001 +5a59800000010000000300030a6970643530616639316305737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +37963 +966f00000001000000000000037777770d7468652d6f7574736964657273026e6c0000010001 +966f80000001000000030000037777770d7468652d6f7574736964657273026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c03ac0100002000100015180000a076e73686f737433c03a + +37964 +3c6600000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3c6680000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +37965 +3c6500000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3c6580000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +37966 +b79cddf25010411a2d130000000000000000 + + +37967 +b2000000000100000000000006636861726973026e6c00001c0001 +b2008000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +37968 +b79cddf25018411a5cde0000008c9fd3000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403b010f403c528f00030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 + + +37969 +cecf00000001000000000000037777770f6a616d696e2d6c6579656e62757267026e6c0000010001 +cecf80000001000000020002037777770f6a616d696e2d6c6579656e62757267026e6c0000010001c0100002000100015180000c026e7306787334616c6cc020c01000020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +37970 +bf73000000010000000000000c6e696a686f6661726e68656d026e6c00000f0001 +bf73800000010000000200020c6e696a686f6661726e68656d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +37971 +b79cde005011410c2c840000000000000000 + + +37972 +0000000070024000a37900000204050201010402 +000080010000000000000000 + +37973 +ae7328000001000000010000026e6c0000060001055f6c646170045f7463702438373137653435622d376639392d343437642d383332302d39393962306537316565666507646f6d61696e73065f6d736463730970726b766477696c64026e6c000021000100000258001f0000006401850a77326b736572766572310970726b766477696c64026e6c00 +ae73a8040000000000000000 + +37974 +a01100000001000000000000037777770464656e6f026e6c0000010001 +a01180000001000000030002037777770464656e6f026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +37975 +280a00000001000000000000037777770468696669026e6c0000010001 +280a80000001000000020002037777770468696669026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c015c0100002000100015180001004646e733208636f6e6365707473c015c02900010001000151800004d5c51c03c04600010001000151800004d5c51e1c + +37976 +0a24000000010000000000000377777710677261746973706f726e6f66696c6d73026e6c0000010001 +0a24800000010000000200020377777710677261746973706f726e6f66696c6d73026e6c0000010001c0100002000100015180000e036e7331076970746f776572c021c01000020001000151800006036e7332c039c035000100010001518000043ecc4065c04f000100010001518000043ecc4066 + +37977 +a05200000001000000000000037777770962656472696a76656e036c6178026e6c0000010001 +a05280000001000000020000037777770962656472696a76656e036c6178026e6c0000010001c01a00020001000151800014036e73310a646f6c7068696e2d6973036e657400c01a00020001000151800006036e7332c036 + +37978 +000000007002faf0aab600000204055001010402 +000080010000000000000000 + +37979 +b79cde015010410c2c830000000000000000 + + +37980 +f43e00000001000000000000037777770a72656e7463656e746572026e6c0000010001 +f43e80000001000000020000037777770a72656e7463656e746572026e6c0000010001c010000200010001518000130373303109696e6974776f726b7303636f6d00c0100002000100015180000603733032c033 + +37981 +b79d77645010411a9f5f0000000000000000 +b79df7640000000000000000 + +37982 +b79e06435010ff0015150000000000000000 +b79e80010000000000000000 + +37983 +b79d77645018411a70710000008cff8d000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b010f403c528f00030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 +b79df7640000000000000000 + +37984 +b79e06435018ff005db30000009294e1000000010001000000000f313531313832383438383231302d330000f900010f313531313832383438383231302d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403b000c403c518c0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 +b79e80010000000000000000 + +37985 +b79e06515011fef214800000000000000000 +b79e80010000000000000000 + +37986 +000000007002faf050e100000204055001010402 +000080010000000000000000 + +37987 +b79d77725011410c9ed00000000000000000 +b79df7740000000000000000 + +37988 +be3200000001000000000000026e73087375706572776562026e6c0000010001 +be3280000001000000020002026e73087375706572776562026e6c0000010001c00f00020001000151800014036e73310d616c74656e61686f7374696e67c018c00f00020001000151800006036e7332c00fc02c000100010001518000043e15f001c04c000100010001518000043e15f00e + +37989 +b79e06525010fef2147f0000000000000000 +b79e80010000000000000000 + +37990 +00000000700240009ac800000204050201010402 +000080010000000000000000 + +37991 +b79ebf905010ff0001f20000000000000000 + + +37992 +3c6d00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3c6d80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +37993 +3c6e00000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3c6e80000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +37994 +b79ebf905018ff008473000000925bff000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b000c403c518c0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +37995 +70b80000000100000000000003706f700b61677476617374676f6564026e6c0000010001 +70b88000000100000002000003706f700b61677476617374676f6564026e6c0000010001c0100002000100015180000c026e7306766576696461c01cc01000020001000151800006036e7332c033 + +37996 +f33700000001000000000000037777770a67656f63616368696e67026e6c0000010001 +f33780000001000000020002037777770a67656f63616368696e67026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +37997 +b79ebf9e5011fef2015d0000000000000000 + + +37998 +c4a100000001000000000000046d61696c046f687261026e6c0000010001 +c4a180000001000000020000046d61696c046f687261026e6c0000010001c0110002000100015180000d036e7331036b706e036e657400c01100020001000151800006036e7332c02e + +37999 +e9c300000001000000000000036e73320f444f4d41494e2d5245474953545259024e4c00001c0001 +e9c380000001000000030002036e73320f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +38000 +ff6400000001000000000000026e730f444f4d41494e2d5245474953545259024e4c00001c0001 +ff6480000001000000030002026e730f444f4d41494e2d5245474953545259024e4c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +38001 +ff9400000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +ff9480000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +38002 +32eb00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +32eb80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +38003 +ef53000000010000000000000472747765026e6c00000f0001 +ef53840300010000000100000472747765026e6c00000f0001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +38004 +000000007002faf0b1da00000204055001010402 +000080010000000000000000 + +38005 +b79d77735010410c9ecf0000000000000000 +b79df7740000000000000000 + +38006 +b79fb44e5010411a59c20000000000000000 + + +38007 +b79ebf9f5010fef2015c0000000000000000 + + +38008 +3ca500000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3ca580000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +38009 +3ca600000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3ca680000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +38010 +b7a08dfc5010ff00947d0000000000000000 + + +38011 +b79fb44e5018411a6a970000008cbfca000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b010f403c528f00030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 + + +38012 +14f928000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f736974657308736c6f7473706563026e6c000021000100000258001c000000640cc408736c6f747370656308736c6f7473706563026e6c00 +14f9a8040000000000000000 + +38013 +b7a08dfc5018ff004fe100000092231d000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b000c403c518c0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +38014 +b56500100001000000000001026e73096379626572636f6d6d026e6c00000100010000290800000000000000 +b56580000001000000030004026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e9530000291000000000000000 + +38015 +8e0300100001000000000001036e7332096379626572636f6d6d026e6c00000100010000290800000000000000 +8e0380000001000000030004036e7332096379626572636f6d6d026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303c06300010001000151800004c277e9530000291000000000000000 + +38016 +0000000070024000bed00000020405b401010402 +000080010000000000000000 + +38017 +b7a08e0a5011fef293e80000000000000000 + + +38018 +b79fb45c5011410c59330000000000000000 + + +38019 +588500000001000000000000037777770d70726f6566646965727672696a026e6c0000010001 +588580000001000000030001037777770d70726f6566646965727672696a026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +38020 +b7a14a0750104470e56b0000000000000000 +b7a1ca040000000000000000 + +38021 +5b4900000001000000000000086261726d61746f6e026e6c0000010001 +5b4980000001000000020002086261726d61746f6e026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +38022 +b7a08e0b5010fef293e70000000000000000 + + +38023 +829b00000001000000000000036e733206766576696461026e6c0000010001 +829b80000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +38024 +6ca500000001000000000000026e7306766576696461026e6c0000010001 +6ca580000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +38025 +b7a14a0750184470b1d600000090026f000000010001000000000f313230323539303834323839382d330000f900010f313230323539303834323839382d330000f900ff00000000005403677373096d6963726f736f667403636f6d00403b0439403c55b90003000000314e544c4d535350000100000097b200c009000900280000000800080020000000534c4f5453504543534c4f5453504543300000 +b7a1ca040000000000000000 + +38026 +e11800000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +e11880000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +38027 +b7a14a1550114462e4d80000000000000000 +b7a1ca140000000000000000 + +38028 +00000000700240002ebf0000020405b401010402 +000080010000000000000000 + +38029 +b79fb45d5010410c59320000000000000000 + + +38030 +5ad700000001000000000000056c6f74746f026e6c00000f0001 +5ad780000001000000020002056c6f74746f026e6c00000f0001c00c0002000100015180000b036e733104696e666fc012c00c00020001000151800006036e7332c02ac02600010001000151800004504fc020c03d00010001000151800004504fc021 + +38031 +b7a14a1650104462e4d70000000000000000 +b7a1ca140000000000000000 + +38032 +c4cb00000001000000000000056b6f6f696a026e6c00000f0001 +c4cb80000001000000020002056b6f6f696a026e6c00000f0001c00c0002000100015180000e026e730866656b61686f7374c012c00c00020001000151800006036e7332c029c02600010001000151800004d5ef9f24c04000010001000151800004c3405369 + +38033 +b7a1da0550104470c55b0000000000000000 + + +38034 +02b600000001000000000000037777770a73746f7265706f696e74026e6c0000010001 +02b680000001000000020000037777770a73746f7265706f696e74026e6c0000010001c0100002000100015180000f036e7331056d79736d74036e657400c01000020001000151800006036e7332c033 + +38035 +b7a1da0550184470ef6c00000090a5c9000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403b0439403c55b90003000000314e544c4d535350000100000097b200c009000900280000000800080020000000534c4f5453504543534c4f5453504543300000 + + +38036 +651100000001000000000000077461746a616e6103666f6c026e6c0000010001 +651180000001000000020000077461746a616e6103666f6c026e6c0000010001c01400020001000151800015096d6f6e64726961616e0874656c6562797465c018c0140002000100015180000a077665726d656572c036 + +38037 +9a85000000010000000000000e7269636172646f2d6f6e6c696a6e026e6c00000f0001 +9a85800000010000000200020e7269636172646f2d6f6e6c696a6e026e6c00000f0001c00c00020001000151800010036e733109686f73746e65746276c01bc00c00020001000151800006036e7332c033c02f0001000100015180000451113264c04b00010001000151800004d5c42851 + +38038 +b7a1da1350114462c4c80000000000000000 + + +38039 +d27c00000001000000000000026e73096379626572636f6d6d026e6c0000010001 +d27c80000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +38040 +f4d200000001000000000000036e7332096379626572636f6d6d026e6c0000010001 +f4d280000001000000030003036e7332096379626572636f6d6d026e6c0000010001c01000020001000151800017036e733110736361726c65742d696e7465726e6574c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ccc302c05100010001000151800004d5ccc303c06300010001000151800004c277e953 + +38041 +06e900000001000000000000036e733109736974656279746573026e6c0000010001 +06e980000001000000030003036e733109736974656279746573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c2a55e5ac03c00010001000151800004c356781cc04e000100010001518000043ec58016 + +38042 +00000000700240009c3d0000020405b401010402 +000080010000000000000000 + +38043 +26f100000001000000000000036e733209736974656279746573026e6c0000010001 +26f180000001000000030003036e733209736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c2a55e5ac00c00010001000151800004c356781cc04e000100010001518000043ec58016 + +38044 +510728000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f736974657306646162687673026e6c0000210001000002580019000000640185076461622d68767306646162687673026e6c00 +5107a8040000000000000000 + +38045 +b7a1da1450104462c4c70000000000000000 + + +38046 +398800000001000000000000084465537472616174024e4c0000ff0001 +398880000001000000020002084465537472616174024e4c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c015c00c00020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +38047 +b7a2547350104470b86b0000000000000000 +b7a2d4740000000000000000 + +38048 +b7a25473501844705e05000000902a41000000010001000000000f313230323539303834323839382d320000f900010f313230323539303834323839382d320000f900ff00000000005403677373096d6963726f736f667403636f6d00403b0439403c55b90003000000314e544c4d535350000100000097b200c009000900280000000800080020000000534c4f5453504543534c4f5453504543300000 +b7a2d4740000000000000000 + +38049 +1ca00000000100000000000003776170077369656d656e73026e6c0000010001 +1ca08000000100000002000203776170077369656d656e73026e6c0000010001c010000200010001518000070473676e32c010c010000200010001518000070473676e34c010c02c00010001000151800004c28a8909c03f00010001000151800004c28a890b + +38050 +00000000700240006c7000000204050201010402 +000080010000000000000000 + +38051 +b83e000000010000000000000366686e026e6c00000f0001 +b83e800000010000000200020366686e026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c010c00c00020001000151800006036e7332c027c02400010001000151800004d4cb0e42c03f00010001000151800004d4cb1221 + +38052 +b7a2548150114462b7d80000000000000000 +b7a2d4840000000000000000 + +38053 +07db00000001000000000000086164616d776573740b7369676e2d612d72616d61026e6c0000010001 +07db80000001000000020002086164616d776573740b7369676e2d612d72616d61026e6c0000010001c01500020001000151800010036e7331096176616e742d696e74c021c01500020001000151800006036e7332c039c03500010001000151800004d5de1d07c05100010001000151800004d5de1807 + +38054 +b7a2548250104462b7d70000000000000000 +b7a2d4840000000000000000 + +38055 +b7a310eb5010411acec90000000000000000 +b7a390e40000000000000000 + +38056 +b7a310eb5018411a16fa0000008c876e000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403b010f403c528f00030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 +b7a390e40000000000000000 + +38057 +2fb4000000010000000000000734657665727931026e6c00000f0001 +2fb4800000010000000200010734657665727931026e6c00000f0001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +38058 +b7a310f95011410cce3a0000000000000000 +b7a390f40000000000000000 + +38059 +000000007002400033b900000204050201010402 +000080010000000000000000 + +38060 +938600000001000000000000026e7307656d61696c636f026e6c0000010001 +938680000001000000020002026e7307656d61696c636f026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e733206787334616c6cc017c00c00010001000151800004c26dcee2c03900010001000151800004c26d0963 + +38061 +550900000001000000000000047365633103646e73067073696e6574026e6c0000010001 +550980000001000000030003047365633103646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +38062 +a10b00000001000000000000047365633203646e73067073696e6574026e6c0000010001 +a10b80000001000000030003047365633203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +38063 +449400000001000000000000026e73076e656473746174026e6c00001c0001 +449480000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38064 +c59d00000001000000000000026e73076e656473746174026e6c0000260001 +c59d80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38065 +d3d200000001000000000000036e7332076e656473746174026e6c0000010001 +d3d280000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38066 +f4c000000001000000000000036e7332076e656473746174026e6c0000260001 +f4c080000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38067 +10d900000001000000000000036e7333076e656473746174026e6c00001c0001 +10d980000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38068 +eade00000001000000000000036e7333076e656473746174026e6c0000260001 +eade80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38069 +92df00000001000000000000036e7334076e656473746174026e6c0000010001 +92df80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38070 +85ac00000001000000000000036e7334076e656473746174026e6c00001c0001 +85ac80000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38071 +d5d500000001000000000000036e7334076e656473746174026e6c0000260001 +d5d580000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38072 +c63c00000001000000000000026e73076e656473746174026e6c00001c0001 +c63c80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38073 +331600000001000000000000026e73076e656473746174026e6c00001c0001 +331680000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38074 +2e2f00000001000000000000026e73076e656473746174026e6c0000260001 +2e2f80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38075 +810900000001000000000000036e7332076e656473746174026e6c0000010001 +810980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38076 +460f00000001000000000000036e7332076e656473746174026e6c00001c0001 +460f80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38077 +8fbf00000001000000000000036e7332076e656473746174026e6c0000260001 +8fbf80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38078 +10e500000001000000000000036e7333076e656473746174026e6c00001c0001 +10e580000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38079 +39bc00000001000000000000036e7333076e656473746174026e6c0000260001 +39bc80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38080 +d39400000001000000000000036e7334076e656473746174026e6c0000010001 +d39480000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38081 +3cd200000001000000000000036e7334076e656473746174026e6c00001c0001 +3cd280000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38082 +73e100000001000000000000036e7334076e656473746174026e6c0000260001 +73e180000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38083 +946900000001000000000000026e73076e656473746174026e6c0000260001 +946980000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38084 +a6e800000001000000000001026e7308767575727765726b026e6c00000100010000291000000000000000 +a6e880000001000000030002026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +38085 +3e4100000001000000000001026e7308767575727765726b026e6c00001c00010000291000000000000000 +3e4180000001000000030002026e7308767575727765726b026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +38086 +8f8a00000001000000000000036e7332076e656473746174026e6c0000010001 +8f8a80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38087 +b7a310fa5010410cce390000000000000000 +b7a390f40000000000000000 + +38088 +b0c700000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +b0c780000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38089 +ece700000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +ece780000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38090 +b7a40ad35010411a9c290000000000000000 +b7a48ad40000000000000000 + +38091 +d1d000000001000000000000036e7332076e656473746174026e6c00001c0001 +d1d080000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38092 +b7a40ad35018411a2d4e0000008c3f7b000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b010f403c528f00030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 +b7a48ad40000000000000000 + +38093 +2cb400000001000000000000036e7332076e656473746174026e6c0000260001 +2cb480000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38094 +1ddf000000010000000000000a722d76616e2d65696a6b0564656d6f6e026e6c0000010001 +1ddf800000010000000300020a722d76616e2d65696a6b0564656d6f6e026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c0170002000100015180000f036e73320564656d6f6e036e657400c03100010001000151800004c29f4906c04300010001000151800004c29fb004 + +38095 +4ac100000001000000000000036e7333076e656473746174026e6c00001c0001 +4ac180000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38096 +66c300000001000000000000037777770662656c656566026e6c0000010001 +66c380000001000000020002037777770662656c656566026e6c0000010001c0100002000100015180000a036e733103696166c017c01000020001000151800006036e7332c02fc02b000100010001518000045059e040c041000100010001518000045059ee03 + +38097 +b7a40ae15011410c9b9a0000000000000000 +b7a48ae40000000000000000 + +38098 +2e6e00000001000000000000037777770a64736c65787072657373026e6c0000010001 +2e6e80000001000000020002037777770a64736c65787072657373026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01bc01000020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +38099 +875400000001000000000000037777770b7275696c65656e6c696e6b026e6c0000010001 +875480000001000000020000037777770b7275696c65656e6c696e6b026e6c0000010001c01000020001000151800014036e73310d666c65746873686f7374696e67c01cc01000020001000151800006036e7332c034 + +38100 +2d4200000001000000000000036e7333076e656473746174026e6c0000260001 +2d4280000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38101 +0000000070024000654c00000204050201010402 +000080010000000000000000 + +38102 +ccab00000001000000000000036e7334076e656473746174026e6c0000010001 +ccab80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38103 +535400000001000000000000036e7334076e656473746174026e6c00001c0001 +535480000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38104 +8ae200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +8ae280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38105 +c8f600000001000000000000044449444f03414d4303555641026e6c0000010001 +c8f680000001000000020002044449444f03414d4303555641026e6c0000010001c0150002000100015180000e086261726c61657573026963c015c01500020001000151800006036e7331c015c02d0001000100015180000491124432c0470001000100015180000491122710 + +38106 +21fb00000001000000000000084241524c4145555302494303555641026e6c0000010001 +21fb80000001000000020002084241524c4145555302494303555641026e6c0000010001c01800020001000151800002c00cc01800020001000151800006036e7331c018c00c0001000100015180000491124432c03e0001000100015180000491122710 + +38107 +706700000001000000000000044649444f03414d4303555641026e6c0000010001 +706780000001000000020002044649444f03414d4303555641026e6c0000010001c0150002000100015180000e086261726c61657573026963c015c01500020001000151800006036e7331c015c02d0001000100015180000491124432c0470001000100015180000491122710 + +38108 +d3e100000001000000000000036e7334076e656473746174026e6c0000260001 +d3e180000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38109 +492300000001000000000000037777771063726561746976652d64657369676e73026e6c0000010001 +492380000001000000030000037777771063726561746976652d64657369676e73026e6c0000010001c0100002000100015180000f036e73310570616e7361036e657400c01000020001000151800006036e7332c039c01000020001000151800006036e7333c039 + +38110 +6f5d0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +6f5d8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +38111 +28070000000100000000000003777777087269747368756973026e6c0000010001 +28078000000100000002000203777777087269747368756973026e6c0000010001c0100002000100015180000a036e7331036e7873c019c01000020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +38112 +f36400000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f36480000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38113 +b7a40ae25010410c9b990000000000000000 +b7a48ae40000000000000000 + +38114 +b03f00100001000000000001067372763031320b66726565686f7374696e67026e6c00000100010000290800000080000000 +b03f80000001000000020001067372763031320b66726565686f7374696e67026e6c0000010001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c0390000291000000000000000 + +38115 +b7a4fbf25010411adc9c0000000000000000 + + +38116 +5ab50000000100000000000003777777086c65747373746174026e6c0000010001 +5ab58000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +38117 +b7a4fbf25018411aab3c0000008c0000000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b0110403c529000030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004441422d4856534441424856530000 + + +38118 +cc210000000100000000000003777777157075726d6572656e6473652d61706f7468656b656e026e6c0000010001 +cc218000000100000002000203777777157075726d6572656e6473652d61706f7468656b656e026e6c0000010001c01000020001000151800009036e7331026973c026c01000020001000151800006036e7332c03ec03a00010001000151800004d5852102c04f00010001000151800004d5c41503 + +38119 +b7a4fc005011410cdc0d0000000000000000 + + +38120 +60df00000001000000000000037777770c646174756d7072696b6b6572026e6c0000010001 +60df80000001000000020000037777770c646174756d7072696b6b6572026e6c0000010001c0100002000100015180000f036e7331087765622d62656174c01dc01000020001000151800006036e7332c035 + +38121 +1dd400000001000000000000046d61696c076e65746578706f026e6c0000010001 +1dd480000001000000020002046d61696c076e65746578706f026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02d000100010001518000043efa0ac2c03e000100010001518000043efa0a82 + +38122 +b7a4fc015010410cdc0c0000000000000000 + + +38123 +0f650000000100000000000003777777103132336b696e6465726b6c6564696e67026e6c0000010001 +0f658000000100000002000003777777103132336b696e6465726b6c6564696e67026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03b + +38124 +b799062d501044620f550000000000000000 +b79980010000000000000000 + +38125 +b79c1b875010447058730000000000000000 +b79c9b840000000000000000 + +38126 +8d8400000001000000000000067372763031320b66726565686f7374696e67026e6c0000010001 +8d8480000001000000020000067372763031320b66726565686f7374696e67026e6c0000010001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c039 + +38127 +b79c1b87501844701a89000000966dd4000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afe23403c4fa30003000000374e544c4d535350000100000097b208e00e000e002900000009000900200000004f4e5a45564144455252495050455244415041524b32390000 +b79c9b840000000000000000 + +38128 +a83e000000010000000000000770726f7465637408746f7073636f7265026e6c0000010001 +a83e800000010000000200020770726f7465637408746f7073636f7265026e6c0000010001c01400020001000151800011036e73310a686f73746d6173746572c01dc01400020001000151800006036e7332c035c0310001000100015180000452c04516c04e0001000100015180000452c04542 + +38129 +12cd0000000100000000000006636861726973026e6c00000f0001 +12cd8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +38130 +9f6f000000010000000000000470696e670461736d6c026e6c0000010001 +9f6f800000010000000300010470696e670461736d6c026e6c0000010001c01100020001000151800006036e7330c011c0110002000100015180000d026e730461736d6c03636f6d00c01100020001000151800006036e7331c03fc02a00010001000151800004c26979c2 + +38131 +3afd0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3afd8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38132 +ed8b00000001000000000000146d696c6c656e69756d7375706572796163687473026e6c00000f0001 +ed8b84030001000000010000146d696c6c656e69756d7375706572796163687473026e6c00000f0001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +38133 +57ec00000001000000000000037777770479767261026e6c0000010001 +57ec80000001000000020002037777770479767261026e6c0000010001c01000020001000151800009036e7331026969c015c01000020001000151800006036e7332c02dc02900010001000151800004d5ce5983c03e00010001000151800004c3405889 + +38134 +536f0000000100000000000003777777046b696369026e6c0000010001 +536f8000000100000002000203777777046b696369026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +38135 +8af5000000010000000000000976656e6465786b6262026e6c0000010001 +8af5800000010000000300030976656e6465786b6262026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c3f13ceec04600010001000151800004c372eb43c058000100010001518000043e320e8f + +38136 +e33f00000001000000000000087072696e736a6573056d79776562026e6c00000f0001 +e33f80000001000000020000087072696e736a6573056d79776562026e6c00000f0001c015000200010001518000160b6d797765622d61757468300777616e61646f6fc01bc0150002000100015180000e0b6d797765622d6175746831c03b + +38137 +b253000000010000000000000a68617264657277696a6b026e6c0000010001 +b253800000010000000300020a68617264657277696a6b026e6c0000010001c00c0002000100015180000d036e733106776964657873c017c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +38138 +eb9100000001000000000000037777770765726974726561026e6c0000010001 +eb9180000001000000020002037777770765726974726561026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c018c01000020001000151800006036e7332c030c02c000100010001518000045104580ac04c000100010001518000045104601e + +38139 +c53300000001000000000000037777770362266f026e6c0000010001 +c53384030001000000010000037777770362266f026e6c0000010001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +38140 +f1ff000000010000000000000d666163746f74756d6d65646961026e6c00000f0001 +f1ff800000010000000200010d666163746f74756d6d65646961026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01ac04700010001000151800004c2860043 + +38141 +513300000001000000000000036e733103757661026e6c0000010001 +513380000001000000020002036e733103757661026e6c0000010001c0100002000100015180000e086261726c61657573026963c010c01000020001000151800002c00cc0280001000100015180000491124432c00c0001000100015180000491122710 + +38142 +77ec0000000100000000000003777777096761797468756d6273026e6c0000010001 +77ec8000000100000002000203777777096761797468756d6273026e6c0000010001c0100002000100015180000c04646e73310470696e73c01ac0100002000100015180000704646e7332c033c02e00010001000151800004d9c26101c04600010001000151800004d9c26002 + +38143 +f0e70000000100000000000007616d70686f7261026e6c00000f0001 +f0e78000000100000002000207616d70686f7261026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc0280001000100015180000451044b3cc03a0001000100015180000451044b3d + +38144 +86b90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +86b98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38145 +8fbd00000001000000000000036e733207616d70686f7261026e6c0000010001 +8fbd80000001000000020002036e733207616d70686f7261026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c0001000100015180000451044b3cc00c0001000100015180000451044b3d + +38146 +edb500000001000000000000036e733107616d70686f7261026e6c0000010001 +edb580000001000000020002036e733107616d70686f7261026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451044b3cc03a0001000100015180000451044b3d + +38147 +a6e800000001000000000000026e7308767575727765726b026e6c0000010001 +a6e880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +38148 +3e4100000001000000000000026e7308767575727765726b026e6c00001c0001 +3e4180000001000000030001026e7308767575727765726b026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +38149 +cff10000000100000000000006706f7065796503657572026e6c0000010001 +cff18000000100000002000206706f7065796503657572026e6c0000010001c0130002000100015180000b086d61696c67617465c013c01300020001000151800002c00cc02b0001000100015180000482730101c00c0001000100015180000482730f02 + +38150 +6e4e00000001000000000000055f6c646170045f746370026463065f6d736463730441303736026e6c0000210001 +6e4e84030001000000010000055f6c646170045f746370026463065f6d736463730441303736026e6c0000210001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +38151 +e32000000001000000000000037777770c6b76776d616b656c61617273026e6c0000010001 +e32080000001000000020000037777770c6b76776d616b656c61617273026e6c0000010001c0100002000100015180000f026e7306636170696361036e657400c01000020001000151800006036e7332c034 + +38152 +8def00000001000000000000036e7331026969026e6c0000010001 +8def80000001000000020002036e7331026969026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ce5983c03500010001000151800004c3405889 + +38153 +261c000000010000000000000561686f6c64027330026e6c0000010001 +261c800000010000000200020561686f6c64027330026e6c0000010001c0120002000100015180000d026e73076e656473746174c015c01200020001000151800006036e7333c02cc02900010001000151800004d4482615c04200010001000151800004d5c4021d + +38154 +7ee200000001000000000000036e7332026969026e6c0000010001 +7ee280000001000000020002036e7332026969026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5ce5983c00c00010001000151800004c3405889 + +38155 +2ccb00000001000000000000026e730763616d70696e61026e6c0000010001 +2ccb80000001000000020002026e730763616d70696e61026e6c0000010001c00f0002000100015180000e036e733007656173796e6574c017c00f00020001000151800006036e7331c02fc02b00010001000151800004c2a55e01c04500010001000151800004c2a55e05 + +38156 +2f670000000100000000000003612d70026e6c00000f0001 +2f678000000100000002000003612d70026e6c00000f0001c00c00020001000151800010036e73310673697465347503636f6d00c00c00020001000151800006036e7332c028 + +38157 +dade000000010000000000000869742d7765726b74026e6c00000f0001 +dade840300010000000100000869742d7765726b74026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +38158 +f0990000000100000000000004686f6d6506706c616e6574026e6c0000010001 +f0998000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +38159 +5dfa00000001000000000000037777770c686f7472696e67746f6e6573026e6c0000010001 +5dfa80000001000000020000037777770c686f7472696e67746f6e6573026e6c0000010001c0100002000100015180000f036e7331056279303036036e657400c01000020001000151800006036e7332c035 + +38160 +4eb40000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eb48403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +38161 +66e000000001000000000000037777770773746172743738026e6c0000010001 +66e080000001000000020000037777770773746172743738026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c030 + +38162 +bdb200000001000000000000037777770a627261696e706f696e74026e6c0000010001 +bdb280000001000000020000037777770a627261696e706f696e74026e6c0000010001c010000200010001518000130373303109696e6974776f726b7303636f6d00c0100002000100015180000603733032c033 + +38163 +0fb100000001000000000000037777770c616c74616e61706861726d61026e6c0000010001 +0fb180000001000000020001037777770c616c74616e61706861726d61026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c01dc04a00010001000151800004c2860043 + +38164 +d3db0010000100000000000103777777087261626f62616e6b026e6c00000100010000290800000080000000 +d3db8000000100000002000203777777087261626f62616e6b026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02d0001000100015180000491484fde0000291000000000000000 + +38165 +c1de0000000100000000000003777777056e6f6b6961026e6c0000010001 +c1de8000000100000004000003777777056e6f6b6961026e6c0000010001c0100002000100015180000e026e73056e6f6b696103636f6d00c01000020001000151800006036e7332c02dc0100002000100015180000b046e73646103657874c02dc01000020001000151800007046e73686bc05b + +38166 +94f00000000100000000000015616c6b6d616172617263686974656374656e626e61026e6c0000010001 +94f08403000100000001000015616c6b6d616172617263686974656374656e626e61026e6c0000010001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +38167 +5532000000010000000000000649434153533207554e494d414153024e4c0000010001 +5532800000010000000300030649434153533207554e494d414153024e4c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a65 + +38168 +e85700000001000000000000046b756232026e6c0000060001 +e85784030001000000010000046b756232026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +38169 +1ddd0000000100000000000006787334616c6c026e6c00000f0001 +1ddd8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +38170 +2fdd0000000100000000000003777777087261626f62616e6b026e6c0000010001 +2fdd8000000100000002000103777777087261626f62616e6b026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02d0001000100015180000491484fde + +38171 +7aec00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +7aec80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38172 +7a4f00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +7a4f80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38173 +a57800000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +a57880000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38174 +0b2d00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +0b2d80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38175 +93c500000001000000000000037777770c737570657262656c746f6f6e026e6c0000010001 +93c580000001000000020000037777770c737570657262656c746f6f6e026e6c0000010001c01000020001000151800017036e73310d6465696e7465726e65746d616e036e657400c01000020001000151800006036e7332c035 + +38176 +08f1000000010000000000000a6d61696c6261636b7570066e6c74726565026e6c0000010001 +08f1800000010000000200020a6d61696c6261636b7570066e6c74726565026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03200010001000151800004d4b20403c04400010001000151800004d5881e45 + +38177 +02b20000000100000000000006656d61696c73026e6c0000010001 +02b28000000100000003000006656d61696c73026e6c0000010001c00c0002000100015180000e036e73300477697368036e657400c00c00020001000151800006036e7331c02bc00c00020001000151800006036e7332c02b + +38178 +f3950000000100000000000003777777116c656575776172646572636f7572616e74026e6c0000010001 +f3958000000100000003000303777777116c656575776172646572636f7572616e74026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c022c01000020001000151800006036e7332c03ac01000020001000151800006036e7333c03ac03600010001000151800004c1ad573dc05300010001000151800004c1ad573ec06500010001000151800004d5880089 + +38179 +4eb60000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eb68403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +38180 +33f000000001000000000000036e73340767617574656e67026e6c0000010001 +33f080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38181 +03fd00000001000000000000036e73340767617574656e67026e6c0000010001 +03fd80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38182 +340000000001000000000000036e73340767617574656e67026e6c0000010001 +340080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38183 +aa8928000001000000010000026e6c0000060001046b756232026e6c00000100010000025800040a0000c8 +aa89a8040000000000000000 + +38184 +139a00000001000000000000066469616c6572076d6964686f6c64026e6c0000010001 +139a80000001000000020002066469616c6572076d6964686f6c64026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d026e7307636f6f6c636f6dc01bc02f00010001000151800004c1ad3503c04000010001000151800004c1ad3506 + +38185 +42ac00000001000000000000046e766f67026e6c00000f0001 +42ac80000001000000020002046e766f67026e6c00000f0001c00c0002000100015180000a036e7331036e7873c011c00c00020001000151800006036e7332c029c02500010001000151800004d973c015c03b00010001000151800004d973c102 + +38186 +4ab200000001000000000000036e733107737572666e6574026e6c0000010001 +4ab280000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +38187 +58a400000001000000000000037777770a64617465706572736d73026e6c0000010001 +58a480000001000000020002037777770a64617465706572736d73026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c01bc01000020001000151800006036e7332c032c02f00010001000151800004d9aa2042c04800010001000151800004d9aa2c06 + +38188 +000000007002400042ef0000020405b401010402 +000080010000000000000000 + +38189 +27be0000000100000000000007666f75726d6974026e6c00000f0001 +27be8000000100000002000007666f75726d6974026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +38190 +b7a68eff50104470248d0000000000000000 + + +38191 +b7a68eff501844701c1f0000008614fc000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000004a03677373096d6963726f736f667403636f6d00403b094d403c5acd0003000000274e544c4d535350000100000097b200e0040004002300000003000300200000004b55424b5542320000 + + +38192 +b7a68f0d5011446224040000000000000000 + + +38193 +0000000070024000b00b0000020405b401010402 +000080010000000000000000 + +38194 +1b5f00000001000000000000046d61696c07636f7061726978026e6c0000010001 +1b5f80000001000000030000046d61696c07636f7061726978026e6c0000010001c01100020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031 + +38195 +b7a772d750104470add00000000000000000 +b7a7f2d40000000000000000 + +38196 +b7a772d7501844709517000000862648000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000004a03677373096d6963726f736f667403636f6d00403b094d403c5acd0003000000274e544c4d535350000100000097b200e0040004002300000003000300200000004b55424b5542320000 +b7a7f2d40000000000000000 + +38197 +bb8c00000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +bb8c80000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +38198 +b7a68f0e5010446224030000000000000000 + + +38199 +13bd00100001000000000001037777770b726963686172646b726f6c026e6c00000100010000290800000080000000 +13bd80000001000000020001037777770b726963686172646b726f6c026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c0340000291000000000000000 + +38200 +6ec600000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +6ec680000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +38201 +465300000001000000000000037777770f6572696b74726f6f73746865696465026e6c0000010001 +465380000001000000020000037777770f6572696b74726f6f73746865696465026e6c0000010001c01000020001000151800011036e733107646f6f74616c6c03636f6d00c01000020001000151800006036e7332c038 + +38202 +b79c1b955011446257da0000000000000000 +b79c9b940000000000000000 + +38203 +789d00000001000000000000037777770b726963686172646b726f6c026e6c0000010001 +789d80000001000000020000037777770b726963686172646b726f6c026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c034 + +38204 +b7a772e550114462ad470000000000000000 +b7a7f2e40000000000000000 + +38205 +152000000001000000000000037777770e6d6f746f63726f7373626f736368026e6c0000010001 +152080000001000000020000037777770e6d6f746f63726f7373626f736368026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +38206 +00000000700240008c7e0000020405b401010402 +000080010000000000000000 + +38207 +17db0000000100000000000003777777127368656c6c2d67726f656e657374726f6f6d026e6c0000010001 +17db8403000100000001000003777777127368656c6c2d67726f656e657374726f6f6d026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +38208 +7cb30000000100000000000003777777156d757a69656b68756973776573746572686176656e026e6c0000010001 +7cb38403000100000001000003777777156d757a69656b68756973776573746572686176656e026e6c0000010001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +38209 +f6ee0000000100000000000003777777096a616e2d67726f656e026e6c0000010001 +f6ee8000000100000002000003777777096a616e2d67726f656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +38210 +b7a772e650104462ad460000000000000000 +b7a7f2e40000000000000000 + +38211 +e1ae00000001000000000000077765626d61696c0e6e75636c6561722d6576656e7473026e6c0000010001 +e1ae80000001000000030000077765626d61696c0e6e75636c6561722d6576656e7473026e6c0000010001c0140002000100015180000f036e73310570616e7361036e657400c01400020001000151800006036e7332c03bc01400020001000151800006036e7333c03b + +38212 +458200000001000000000000026e6c0000060001 +458284000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +38213 +b7a956ee50104470a62a0000000000000000 +b7a9d6e40000000000000000 + +38214 +b7a956ee50184470f94200000086ba76000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000004a03677373096d6963726f736f667403636f6d00403b094d403c5acd0003000000274e544c4d535350000100000097b200e0040004002300000003000300200000004b55424b5542320000 +b7a9d6e40000000000000000 + +38215 +75be0000000100000000000003777777056b6c696b73026e6c0000010001 +75be8000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +38216 +03020000000100000000000003777777156e6575726f6368697275726769652d7a776f6c6c65026e6c0000010001 +03028000000100000002000203777777156e6575726f6368697275726769652d7a776f6c6c65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc026c01000020001000151800006036e7332c03dc03a00010001000151800004c26d0642c05200010001000151800004c26d0963 + +38217 +d5d4000000010000000000000976616e2d67616c656e026e6c0000010001 +d5d4800000010000000200020976616e2d67616c656e026e6c0000010001c00c0002000100015180000d03706e7306636f6d6c6f67c016c00c0002000100015180000603736e73c02ec02a00010001000151800004d5a0c803c04300010001000151800004d5a0c804 + +38218 +b7a956fc50114462a5a10000000000000000 +b7a9d6f40000000000000000 + +38219 +2a6400000001000000000000037777770676616e2d6173026e6c0000010001 +2a6480000001000000020000037777770676616e2d6173026e6c0000010001c01000020001000151800017026e7309726f7474657264616d046c756e61036e657400c0100002000100015180000f026e7309686f6f6664646f7270c038 + +38220 +9a12000000010000000000000377777709646174616261646765026e6c0000010001 +9a12800000010000000200020377777709646174616261646765026e6c0000010001c0100002000100015180000c026e73067574722d6978c01ac01000020001000151800006036e7332c031c02e0001000100015180000451113206c04600010001000151800004d5c42806 + +38221 +5f5200000001000000000000036e7332067574722d6978026e6c00001c0001 +5f5280000001000000020002036e7332067574722d6978026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b0001000100015180000451113206c00c00010001000151800004d5c42806 + +38222 +545d00000001000000000000026e73067574722d6978026e6c00001c0001 +545d80000001000000020002026e73067574722d6978026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c0001000100015180000451113206c03800010001000151800004d5c42806 + +38223 +a84b000000010000000000000d62616c6c6173742d6e6564616d026e6c00000f0001 +a84b800000010000000200010d62616c6c6173742d6e6564616d026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800013036e7332026e6c0669676e697465036e657400c02e000100010001518000043eadcea1 + +38224 +b7a956fd50104462a5a00000000000000000 +b7a9d6f40000000000000000 + +38225 +eb6e000000010000000000000468797965026e6c00000f0001 +eb6e840300010000000100000468797965026e6c00000f0001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +38226 +76bf00000001000000000000036e733503777873026e6c0000010001 +76bf80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +38227 +f7db00000001000000000000087175697261737365026e6c0000ff0001 +f7db80000001000000020000087175697261737365026e6c0000ff0001c00c00020001000151800012036e73320b73656c65637467726f7570c015c00c0002000100015180000b026e73026e6c036e657400 + +38228 +0a65000000010000000000000377777709706f726e7374617274026e6c0000010001 +0a65800000010000000300020377777709706f726e7374617274026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ac01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c032c02e000100010001518000045054e055c06700010001000151800004d4ccc655 + +38229 +78b500000001000000000000036e73310a74727565736572766572026e6c0000010001 +78b580000001000000030003036e73310a74727565736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef8003c03d00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +38230 +26a800000001000000000000036e73320a74727565736572766572026e6c0000010001 +26a880000001000000030003036e73320a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004d5ef8003c00c00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +38231 +135400000001000000000000036e73330a74727565736572766572026e6c0000010001 +135480000001000000030003036e73330a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d5ef8003c04100010001000151800004d5efb004c00c00010001000151800004d5ef8005 + +38232 +b29e0000000100000000000003777777126f70656e626161726d696e69737465726965026e6c0000010001 +b29e8000000100000002000203777777126f70656e626161726d696e69737465726965026e6c0000010001c0100002000100015180000a026e730467726970c023c01000020001000151800006036e7333c03ac03700010001000151800004d4eeb043c04d00010001000151800004d994a262 + +38233 +56cd00000001000000000000037777770e63656e7472616c68656174696e67026e6c0000010001 +56cd80000001000000020002037777770e63656e7472616c68656174696e67026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01fc01000020001000151800006036e7332c037c03300010001000151800004c29f4906c04b00010001000151800004c29fb004 + +38234 +4ba600000001000000000000046d61696c0c726f6e63616c6c692d626f7a026e6c026e6c0000010001 +4ba684030001000000010000046d61696c0c726f6e63616c6c692d626f7a026e6c026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +38235 +59390000000100000000000003777777156e6575726f6368697275726769652d7a776f6c6c65026e6c0000010001 +59398000000100000002000203777777156e6575726f6368697275726769652d7a776f6c6c65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc026c01000020001000151800006036e7332c03dc03a00010001000151800004c26d0642c05200010001000151800004c26d0963 + +38236 +79f80000000100000000000003777777046163616c026e6c0000010001 +79f88000000100000002000003777777046163616c026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02d + +38237 +23e3001000010000000000000377777703736572026e6c0000010001 +23e3800000010000000300010377777703736572026e6c0000010001c01000020001000151800013026e730a6261636b73747265616d03636f6d00c01000020001000151800005027873c02bc0100002000100015180000f026e7309747269706c652d6974c014c05800010001000151800004d584b002 + +38238 +0d4400000001000000000000026e73056269626974026e6c0000010001 +0d4480000001000000030002026e73056269626974026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce201fc04e00010001000151800004d4ce2020 + +38239 +86a200000001000000000000026e73056269626974026e6c0000260001 +86a280000001000000030002026e73056269626974026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce201fc04e00010001000151800004d4ce2020 + +38240 +61a600000001000000000000036e7332056269626974026e6c0000010001 +61a680000001000000030002036e7332056269626974026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800002c00cc02a00010001000151800004d4ce201fc00c00010001000151800004d4ce2020 + +38241 +586700000001000000000000036e7332056269626974026e6c0000260001 +586780000001000000030002036e7332056269626974026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800002c00cc02a00010001000151800004d4ce201fc00c00010001000151800004d4ce2020 + +38242 +07c200000001000000000000036e733503777873026e6c0000010001 +07c280000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +38243 +235900000001000000000000036e7333093475686f7374696e67026e6c0000010001 +235980000001000000020000036e7333093475686f7374696e67026e6c0000010001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +38244 +aeed00000001000000000000036e7333093475686f7374696e67026e6c0000260001 +aeed80000001000000020000036e7333093475686f7374696e67026e6c0000260001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +38245 +388600000001000000000000036e7334093475686f7374696e67026e6c0000010001 +388680000001000000020000036e7334093475686f7374696e67026e6c0000010001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +38246 +1c4300000001000000000000036e7334093475686f7374696e67026e6c0000260001 +1c4380000001000000020000036e7334093475686f7374696e67026e6c0000260001c0100002000100015180001104646e73310634752d646e73036e657400c0100002000100015180000704646e7332c033 + +38247 +b2e0000000010000000000000663616e646561026e6c0000010001 +b2e0800000010000000300030663616e646561026e6c0000010001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +38248 +9a7600000001000000000000066261616e7678056d6172696e026e6c0000010001 +9a7680000001000000020002066261616e7678056d6172696e026e6c0000010001c0130002000100015180000a0762617374696f6ec013c0130002000100015180000e036e733107737572666e6574c019c02d00010001000151800004930c8001c04300010001000151800004c0576a65 + +38249 +f63a00000001000000000000076b6e6f77617265026e6c00000f0001 +f63a80000001000000020002076b6e6f77617265026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02800010001000151800004c3402003c03900010001000151800004c340202b + +38250 +099328000001000000010000026e6c0000060001055f6c646170045f7463701244656661756c742d46697273742d53697465065f7369746573026763065f6d73646373077369747461726408637265646f6f7273026e6c0000210001000002580023000000640cc40773657276657231077369747461726408637265646f6f7273026e6c00 +0993a8040000000000000000 + +38251 +743e001000010000000000000967616c616861646276026e6c0000010001 +743e800000010000000200010967616c616861646276026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c016c04300010001000151800004c2860043 + +38252 +0000000070024000e5980000020405b401010402 +000080010000000000000000 + +38253 +18c10000000100000000000003777777026465066369726b656c026e6c0000010001 +18c18000000100000002000203777777026465066369726b656c026e6c0000010001c0130002000100015180000f036e733108696e74726f776562c01ac01300020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +38254 +b7aa19b2501044703c800000000000000000 +b7aa99b40000000000000000 + +38255 +b7aa19b250184470b1f40000008ddd28000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd15403c4e9500030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 +b7aa99b40000000000000000 + +38256 +ac800000000100000000000003777777096765696c65706f6573026e6c0000010001 +ac808000000100000002000003777777096765696c65706f6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +38257 +b7aa19c0501144623bf00000000000000000 +b7aa99c40000000000000000 + +38258 +2f0800000001000000000000056472756d74026e6c0000010001 +2f0880000001000000020000056472756d74026e6c0000010001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02a + +38259 +699b00000001000000000000046e733032066368656c6c6f026e6c0000010001 +699b80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +38260 +000000007002400058f40000020405b401010402 +000080010000000000000000 + +38261 +400800000001000000000000037777770b7a69656b656e666f6e6473026e6c0000010001 +400880000001000000020000037777770b7a69656b656e666f6e6473026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c036 + +38262 +c10400000001000000000000036e733203757063026e6c0000010001 +c10480000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +38263 +39f500000001000000000000037777770e76726f7577656e65726f7469656b026e6c0000010001 +39f580000001000000020002037777770e76726f7577656e65726f7469656b026e6c0000010001c0100002000100015180000e026e7308642d736572766572c01fc01000020001000151800006036e7332c036c0330001000100015180000451045c14c04d0001000100015180000451046032 + +38264 +b7aa19c1501044623bef0000000000000000 +b7aa99c40000000000000000 + +38265 +b7ab053050104470c45c0000000000000000 +b7ab80010000000000000000 + +38266 +b7ab053050184470d0130000008d47e7000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd15403c4e9500030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 +b7ab80010000000000000000 + +38267 +2c1300000001000000000000037777770e76726f7577656e65726f7469656b026e6c0000010001 +2c1380000001000000020002037777770e76726f7577656e65726f7469656b026e6c0000010001c0100002000100015180000e026e7308642d736572766572c01fc01000020001000151800006036e7332c036c0330001000100015180000451045c14c04d0001000100015180000451046032 + +38268 +64d800000001000000000000037777770a63617264777269746572026e6c0000010001 +64d880000001000000020000037777770a63617264777269746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +38269 +3180000000010000000000000777616e61646f6f026e6c00000f0001 +3180800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +38270 +53b800100001000000000001036e733503777873026e6c00000100010000290800000000000000 +53b880000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +38271 +9e55000000010000000000000377777709766c6f6564676f6c66026e6c0000010001 +9e55800000010000000200000377777709766c6f6564676f6c66026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +38272 +b7ab053e50114462c3cc0000000000000000 +b7ab80010000000000000000 + +38273 +000000007002400017040000020405b401010402 +000080010000000000000000 + +38274 +4cf2000000010000000000000377777703637769026e6c0000010001 +4cf2800000010000000200020377777703637769026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02800010001000151800004c010bf08c03a00010001000151800004c010bf23 + +38275 +b7ab053f50104462c3cb0000000000000000 +b7ab80010000000000000000 + +38276 +b7ab93d850104470f3c30000000000000000 + + +38277 +176600000001000000000000046d61696c067370647a686e026e6c0000010001 +176680000001000000020000046d61696c067370647a686e026e6c0000010001c01100020001000151800012036e73310878656e6f73697465036e657400c01100020001000151800006036e7332c030 + +38278 +c3060000000100000000000008616473657276657206776562616473026e6c0000010001 +c3068000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +38279 +a0df000000010000000000000b7370616d6d65726475646503636f6d026e6c0000ff0001 +a0df840300010000000100000b7370616d6d65726475646503636f6d026e6c0000ff0001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +38280 +b79c1b965010446257d90000000000000000 +b79c9b940000000000000000 + +38281 +b7ab93d8501844708a3c0000008dbd25000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd15403c4e9500030000002e4e544c4d535350000100000097b200e00700070027000000070007002000000053455256455231534954544152440000 + + +38282 +45e400000001000000000000037777770463616e6e026e6c0000010001 +45e480000001000000020000037777770463616e6e026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +38283 +2c2b28000001000000020000026e6c00000600012432636237316136622d323162382d346264352d613639392d306233383631643764393262065f6d736463730b6b7376696e7465726e6574026e6c00000500ff000000000000c0140005000100000258001807697365727665720b6b7376696e7465726e6574026e6c00 +2c2ba8040000000000000000 + +38284 +52750000000100000000000004746d7365026e6c00000f0001 +52758000000100000002000004746d7365026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +38285 +8aaa00000001000000000000126c6167656e64696a6b2d76617374676f6564026e6c00000f0001 +8aaa80000001000000030002126c6167656e64696a6b2d76617374676f6564026e6c00000f0001c00c0002000100015180000d036e733106776964657873c01fc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c037c03300010001000151800004d4ccc0fcc068000100010001518000043efa0703 + +38286 +5e3f00000001000000000000076973656c6d6172026e6c00000f0001 +5e3f80000001000000030003076973656c6d6172026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c014c00c0002000100015180000a076e736175746832c030c00c0002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +38287 +b7ab93e650114462f3330000000000000000 + + +38288 +52230000000100000000000004666f746f04756e7963026e6c0000010001 +52238000000100000002000004666f746f04756e7963026e6c0000010001c0110002000100015180000f036e7336086a726f6e6c696e65c016c01100020001000151800014036e73330d686f73746e656465726c616e64c016 + +38289 +c4a600000001000000000000096772616669666f7273026e6c00000f0001 +c4a680000001000000020002096772616669666f7273026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +38290 +e7d5000000010000000000000b616374696f6e6769726c73057477696d61026e6c0000010001 +e7d5800000010000000200000b616374696f6e6769726c73057477696d61026e6c0000010001c0180002000100015180000e036e7333046965747a03636f6d00c01800020001000151800006036e7334c036 + +38291 +217c0000000100000000000003666c79036b6c6d026e6c0000010001 +217c8000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +38292 +4a5800000001000000000000046e733032066368656c6c6f026e6c0000010001 +4a5880000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +38293 +c53500000001000000000000036e733503777873026e6c0000010001 +c53580000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +38294 +ce5900000001000000000000037777770d746a6f6e676572736368616e73026e6c0000010001 +ce5980000001000000020000037777770d746a6f6e676572736368616e73026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c035 + +38295 +879d0010000100000000000106787334616c6c026e6c00000100010000290800000080000000 +879d8000000100000003000306787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +38296 +00000000700240001bf80000020405b401010402 +000080010000000000000000 + +38297 +b7ab93e750104462f3320000000000000000 + + +38298 +b7ac6f7a501044701d150000000000000000 +b7acef740000000000000000 + +38299 +b7ac6f7a501844708c1a00000091ecce000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd3e403c4ebe0003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 +b7acef740000000000000000 + +38300 +55660000000100000000000004736d74700866696e616c697374026e6c0000010001 +55668000000100000002000004736d74700866696e616c697374026e6c0000010001c01100020001000151800012036e73310866696e616c69737403636f6d00c01100020001000151800006036e7332c032 + +38301 +b7ac6f88501144621c810000000000000000 +b7acef840000000000000000 + +38302 +286400000001000000000000026e73066863636e6574026e6c0000010001 +286480000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +38303 +b4fc0000000100000000000003706f700776656e73746572026e6c00001c0001 +b4fc8000000100000003000203706f700776656e73746572026e6c00001c0001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +38304 +6e910000000100000000000003706f700776656e73746572026e6c0000260001 +6e918000000100000003000203706f700776656e73746572026e6c0000260001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +38305 +a70100000001000000000000037777770a776565726f6e6c696e65026e6c0000010001 +a70180000001000000030003037777770a776565726f6e6c696e65026e6c0000010001c0100002000100015180000e076e73617574683103626974c01bc0100002000100015180000a076e736175746832c037c0100002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +38306 +a905000000010000000000000469632d73026e6c00000f0001 +a905800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +38307 +27cd000000010000000000000a6c656672616e2d7063310a6e69657577656765696e066c656672616e026e6c0000060001 +27cd840300010000000100000a6c656672616e2d7063310a6e69657577656765696e066c656672616e026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +38308 +0000000070024000de780000020405b401010402 +000080010000000000000000 + +38309 +a64800000001000000000000036e73310d32302d616c6c686f7374696e67026e6c00001c0001 +a64880000001000000020002036e73310d32302d616c6c686f7374696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000044262d66ec040000100010001518000044262d66f + +38310 +b7ac6f89501044621c800000000000000000 +b7acef840000000000000000 + +38311 +eef300000001000000000000036e73310d32302d616c6c686f7374696e67026e6c0000260001 +eef380000001000000020002036e73310d32302d616c6c686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000044262d66ec040000100010001518000044262d66f + +38312 +cfe700000001000000000000036e73320d32302d616c6c686f7374696e67026e6c00001c0001 +cfe780000001000000020002036e73320d32302d616c6c686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000044262d66ec00c000100010001518000044262d66f + +38313 +617900000001000000000000036e73320d32302d616c6c686f7374696e67026e6c0000260001 +617980000001000000020002036e73320d32302d616c6c686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000044262d66ec00c000100010001518000044262d66f + +38314 +f1de00000001000000000000037777771063726561746976656772617068696373026e6c0000010001 +f1de80000001000000020001037777771063726561746976656772617068696373026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c021c01000020001000151800006036e7334c039c03500010001000151800004d5c401c0 + +38315 +7ad200000001000000000000037777770c6d6574726f76616e64616167026e6c0000010001 +7ad280000001000000030001037777770c6d6574726f76616e64616167026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +38316 +a9740000000100000000000003777777096374636f6e73756c74026e6c0000010001 +a9748403000100000001000003777777096374636f6e73756c74026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +38317 +e18a00000001000000000000026e73076e656473746174026e6c0000010001 +e18a80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38318 +6ebc00000001000000000000036e7332076e656473746174026e6c0000010001 +6ebc80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38319 +adf600000001000000000000036e7333076e656473746174026e6c0000010001 +adf680000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38320 +1fb200000001000000000000036e7334076e656473746174026e6c0000010001 +1fb280000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38321 +73790000000100000000000006787334616c6c026e6c0000010001 +73798000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +38322 +d4d3000000010000000000000377777709726f7474657264616d026e6c0000010001 +d4d3800000010000000300030377777709726f7474657264616d026e6c0000010001c0100002000100015180000c0967616e796d65646573c010c01000020001000151800007046c656461c010c01000020001000151800014036e733203676e7309676574726f6e696373c01ac02e00010001000151800004d5c9cf50c04600010001000151800004d5c9cf19c05900010001000151800004910d2a05 + +38323 +b7aef16c501044705da10000000000000000 + + +38324 +b6c20000000100000000000009626162657332303030026e6c0000010001 +b6c28000000100000002000009626162657332303030026e6c0000010001c00c00020001000151800012036e7331086379626572616374036e657400c00c00020001000151800006036e7332c02e + +38325 +b7aef16c501844706076000000915800000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd3f403c4ebf0003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 + + +38326 +b7aef17a501144625d0d0000000000000000 + + +38327 +61470000000100000000000003666d65026e6c00000f0001 +61478000000100000002000203666d65026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c010c00c0002000100015180001004646e733208636f6e6365707473c010c02400010001000151800004d5c51c03c04100010001000151800004d5c51e1c + +38328 +cb0a00000001000000000000066d656d6f6276026e6c0000010001 +cb0a80000001000000020002066d656d6f6276026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38329 +f56b00100001000000000001026e730f6761726e69657270726f6a65637473026e6c00000100010000290800000080000000 +f56b80000001000000020003026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e1420000291000000000000000 + +38330 +926e00100001000000000001036e73310f6761726e69657270726f6a65637473026e6c00000100010000290800000080000000 +926e80000001000000020003036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e1420000291000000000000000 + +38331 +0000000070024000ce160000020405b401010402 +000080010000000000000000 + +38332 +bb2d000000010000000000000472656a6f067a656e676572026e6c0000010001 +bb2d800000010000000200020472656a6f067a656e676572026e6c0000010001c0110002000100015180000c036e7330056e65786974c018c01100020001000151800006036e7331c030c02c00010001000151800004d4ccf5d3c04400010001000151800004d4ccf5d4 + +38333 +a4df00100001000000000001036e73320f6761726e69657270726f6a65637473026e6c00000100010000290800000080000000 +a4df80000001000000020003036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e1420000291000000000000000 + +38334 +f54000000001000000000000046d61696c036e6163026e6c0000010001 +f54080000001000000020002046d61696c036e6163026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c015c0110002000100015180001004646e733208636f6e6365707473c015c02900010001000151800004d5c51c03c04600010001000151800004d5c51e1c + +38335 +b7aef17b501044625d0c0000000000000000 + + +38336 +f7e6000000010000000000000363676907686f7473746174026e6c0000010001 +f7e6800000010000000200010363676907686f7473746174026e6c0000010001c01000020001000151800011036e696b0a7075626c6973686e6574c018c0100002000100015180000704646e7332c030c02c00010001000151800004c1433c0a + +38337 +fdac0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +fdac8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38338 +b7af8e0150104470b0a90000000000000000 + + +38339 +b7af8e0150184470ff7e000000910c00000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd3f403c4ebf0003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 + + +38340 +a8fa00000001000000000000036e733109666972737466696e64026e6c0000010001 +a8fa80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38341 +acb9000000010000000000000377777703776562026e6c0000010001 +acb9800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +38342 +3eb20000000100000000000009652d6c756e61746963026e6c0000010001 +3eb28000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38343 +37600000000100000000000009652d6c756e61746963026e6c0000010001 +37608000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38344 +a8fd00000001000000000000036e733109666972737466696e64026e6c0000010001 +a8fd80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38345 +a8fe00000001000000000000036e733209666972737466696e64026e6c0000010001 +a8fe80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38346 +e8db00000001000000000000037777770731327668696669026e6c0000010001 +e8db80000001000000020002037777770731327668696669026e6c0000010001c0100002000100015180000b036e733104656e6f6dc018c01000020001000151800006036e7332c030c02c00010001000151800004d87a0479c04300010001000151800004d86296b6 + +38347 +b7af8e0f50114462b0150000000000000000 + + +38348 +038200000001000000000000046d61696c0461726b6f026e6c0000010001 +038280000001000000020002046d61696c0461726b6f026e6c0000010001c0110002000100015180000f036e7331086461786973776562c016c01100020001000151800006036e7332c02ec02a00010001000151800004c323c083c04500010001000151800004c323c084 + +38349 +f2aa000000010000000000000770616b6b696e67086772616669736973026e6c0000010001 +f2aa800000010000000200020770616b6b696e67086772616669736973026e6c0000010001c0140002000100015180000d026e73076b6e6f77617265c01dc01400020001000151800006036e7332c034c03100010001000151800004c3402003c04a00010001000151800004c340202b + +38350 +5a1e000000010000000000000770616b6b696e67086772616669736973026e6c00001c0001 +5a1e800000010000000200020770616b6b696e67086772616669736973026e6c00001c0001c0140002000100015180000d026e73076b6e6f77617265c01dc01400020001000151800006036e7332c034c03100010001000151800004c3402003c04a00010001000151800004c340202b + +38351 +8064000000010000000000000378353308696e666f70616374026e6c0000010001 +8064800000010000000200000378353308696e666f70616374026e6c0000010001c01000020001000151800012036e736108696e666f7061637403636f6d00c01000020001000151800006036e7362c031 + +38352 +eb8b0000000100000000000003777777026e75026e6c0000010001 +eb8b8000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +38353 +bd0500000001000000000000056173747269026e6c00000f0001 +bd0580000001000000020002056173747269026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +38354 +b33100000001000000000000086577646e747330340b6f6265696e64686f76656e026e6c0000010001 +b33180000001000000020002086577646e747330340b6f6265696e64686f76656e026e6c0000010001c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c021c00c00010001000151800004c3a91823c04300010001000151800004c0576a65 + +38355 +b7af8e1050104462b0140000000000000000 + + +38356 +9acb00000001000000000000037777770c74656c65666f6f6e676964730b7074742d74656c65636f6d026e6c0000010001 +9acb80000001000000020000037777770c74656c65666f6f6e676964730b7074742d74656c65636f6d026e6c0000010001c01d0002000100015180000d03646e73036b706e03636f6d00c01d0002000100015180000d036e7332036b706e036e657400 + +38357 +9a56000000010000000000000a73637265656e74696d65026e6c0000010001 +9a56800000010000000200000a73637265656e74696d65026e6c0000010001c00c00020001000151800012036e3036026e6c056468697665036e657400c00c00020001000151800006036e3035c02f + +38358 +074c0000000100000000000009652d6c756e61746963026e6c0000010001 +074c8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38359 +1f400000000100000000000009652d6c756e61746963026e6c0000010001 +1f408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38360 +85f70000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +85f78000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +38361 +29f800000001000000000000056b68616f730461766d31026e6c0000010001 +29f884030001000000010000056b68616f730461766d31026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +38362 +5a1401000001000000000000077765626d61696c0774697363616c69026e6c0000010001 +5a1481000001000000030002077765626d61696c0774697363616c69026e6c0000010001c0140002000100015180000704616e7331c014c0140002000100015180000704616e7332c014c0140002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04300010001000151800004c3f13325 + +38363 +15a2000000010000000000000377777709636c75626d6574726f026e6c0000010001 +15a2800000010000000200000377777709636c75626d6574726f026e6c0000010001c01000020001000151800014046e732d31096e6f6e616d6534757303636f6d00c01000020001000151800007046e732d32c033 + +38364 +f2ad0000000100000000000003777777187870657269656e63652d776562646576656c6f706d656e74026e6c0000010001 +f2ad8000000100000002000203777777187870657269656e63652d776562646576656c6f706d656e74026e6c0000010001c0100002000100015180000f0472617131076e657474756e65c029c01000020001000151800006036e7332c042c03d00010001000151800004d4ccf78dc05800010001000151800004d4ccf78e + +38365 +c192000000010000000000000472617131076e657474756e65026e6c0000010001 +c192800000010000000200020472617131076e657474756e65026e6c0000010001c01100020001000151800002c00cc01100020001000151800006036e7332c011c00c00010001000151800004d4ccf78dc03b00010001000151800004d4ccf78e + +38366 +23cc00000001000000000000036e7332076e657474756e65026e6c0000010001 +23cc80000001000000020002036e7332076e657474756e65026e6c0000010001c010000200010001518000070472617131c010c01000020001000151800002c00cc02c00010001000151800004d4ccf78dc00c00010001000151800004d4ccf78e + +38367 +3d6b0010000100000000000104616a6178066e696b686566026e6c00000100010000290800000080000000 +3d6b8000000100000004000304616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c7040000291000000000000000 + +38368 +a23400100001000000000001036e733109756e69736f75726365026e6c00000100010000290800000080000000 +a23480000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +38369 +511a00100001000000000001036e733109756e69736f75726365026e6c00002600010000290800000080000000 +511a80000001000000020001036e733109756e69736f75726365026e6c0000260001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +38370 +4de000000001000000000000147363686164656e65742d7a61616e73747265656b026e6c0000010001 +4de080000001000000020001147363686164656e65742d7a61616e73747265656b026e6c0000010001c00c0002000100015180000a036e733303777873c021c00c00020001000151800006036e7334c039c04b00010001000151800004d5ef9a65 + +38371 +addc00000001000000000000037777770338666d026e6c0000010001 +addc80000001000000020002037777770338666d026e6c0000010001c0100002000100015180000a036e733103686978c014c01000020001000151800006036e7332c02cc02800010001000151800004d5a0da0ac03e0001000100015180000451112ec3 + +38372 +528300000001000000000000066f7265616465026e6c00000f0001 +528380000001000000020001066f7265616465026e6c00000f0001c00c0002000100015180000c026e7306636165736172c013c00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004c14fb8d8 + +38373 +8e800000000100000000000003777777046c69646c026e6c0000010001 +8e808000000100000002000203777777046c69646c026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c015c0100002000100015180001004646e733208636f6e6365707473c015c02900010001000151800004d5c51c03c04600010001000151800004d5c51e1c + +38374 +80a800000001000000000000037777770f74696c6275726774656e6d696c6573026e6c0000010001 +80a880000001000000030001037777770f74696c6275726774656e6d696c6573026e6c0000010001c0100002000100015180000e026e7308767575727765726bc020c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c052c034000100010001518000043efa0202 + +38375 +81eb00000001000000000000036e7331056163646973026e6c0000010001 +81eb80000001000000020002036e7331056163646973026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +38376 +96ef00000001000000000000036e7331056163646973026e6c0000260001 +96ef80000001000000020002036e7331056163646973026e6c0000260001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +38377 +454700000001000000000000057061707261026e6c0000010001 +454780000001000000020000057061707261026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02c + +38378 +de8100000001000000000000026e7304616e7762026e6c0000010001 +de8180000001000000020001026e7304616e7762026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ac840a + +38379 +9da9000000010000000000000b73766f2d64756b64616c66026e6c00000f0001 +9da9800000010000000200020b73766f2d64756b64616c66026e6c00000f0001c00c0002000100015180000d036e7331066e6c74726565c018c00c00020001000151800006036e7332c030c02c00010001000151800004d4b20403c04500010001000151800004d5881e45 + +38380 +0a4d00000001000000000000026e7304616e7762026e6c0000260001 +0a4d80000001000000020001026e7304616e7762026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ac840a + +38381 +878600000001000000000000037777770d726567746f702d7061726b6574026e6c0000010001 +878680000001000000020002037777770d726567746f702d7061726b6574026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c01ec01000020001000151800006036e7332c036c03200010001000151800004505fa002c04d00010001000151800004505fac02 + +38382 +1e060000000100000000000007657261626f7577026e6c0000ff0001 +1e068000000100000002000207657261626f7577026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +38383 +9c3800000001000000000000036e7331046372696f026e6c0000010001 +9c3880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +38384 +485100000001000000000000036e723605692d702d64026e6c0000010001 +485180000001000000020002036e723605692d702d64026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02a00010001000151800004d9124003c03d00010001000151800004d9124104 + +38385 +cd0500000001000000000000036e7331066e6c74726565026e6c0000010001 +cd0580000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +38386 +9414000000010000000000000a66656d636f6e73756c74026e6c00000f0001 +9414800000010000000200000a66656d636f6e73756c74026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +38387 +669300000001000000000000036d7832046d61696c0c726f6e63616c6c692d626f7a026e6c026e6c0000010001 +669384030001000000010000036d7832046d61696c0c726f6e63616c6c692d626f7a026e6c026e6c0000010001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +38388 +8a5c000000010000000000000a6d61676963706c617a61026e6c00000f0001 +8a5c800000010000000300010a6d61676963706c617a61026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +38389 +107f000000010000000000000377777703616964026e6c0000010001 +107f800000010000000200010377777703616964026e6c0000010001c0100002000100015180000c026e7306636f62776562c014c01000020001000151800011026e73087363686970686f6c036e657400c0280001000100015180000450f26001 + +38390 +32540000000100000000000003777777096164726965706f6c73026e6c0000010001 +32548000000100000002000003777777096164726965706f6c73026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c031 + +38391 +92b000000001000000000000086b61776173616b69026e6c00000f0001 +92b080000001000000020001086b61776173616b69026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +38392 +e4d100000001000000000000036e7331076e6574666c6578026e6c0000010001 +e4d180000001000000030003036e7331076e6574666c6578026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c26d5ba8c03a00010001000151800004507f2f25c04c00010001000151800004507ede20 + +38393 +b74500000001000000000000046d61696c096c65617365706c616e026e6c00001c0001 +b74580000001000000020001046d61696c096c65617365706c616e026e6c00001c0001c01100020001000151800006036e7331c011c0110002000100015180000d026e73046575726f036e657400c02f00010001000151800004c286e702 + +38394 +fa8800000001000000000000037777770474617577026e6c0000010001 +fa8880000001000000030002037777770474617577026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c015c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c02dc029000100010001518000045054e055c06200010001000151800004d4ccc655 + +38395 +094700000001000000000000037777770673656e746572026e6c0000010001 +094780000001000000020002037777770673656e746572026e6c0000010001c0100002000100015180000c036e7331056d696e657ac017c01000020001000151800006036e7332c02fc02b00010001000151800004914527e6c043000100010001518000049145270a + +38396 +7cd80000000100000000000008667265656d61696c026e6c00000f0001 +7cd88000000100000003000208667265656d61696c026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +38397 +e64c00000001000000000000037777770d7361696c63656e746572313037026e6c0000010001 +e64c80000001000000020002037777770d7361696c63656e746572313037026e6c0000010001c01000020001000151800018067765626e69780e6575726f636f6e73756c74616e74c01ec0100002000100015180000a076d61696c6e6978c039c032000100010001518000045117e555c056000100010001518000045117e556 + +38398 +70c5000000010000000000000377777703776562026e6c0000010001 +70c5800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +38399 +9fdd0000000100000000000006617363696e74026e6c00001c0001 +9fdd8000000100000002000206617363696e74026e6c00001c0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c + +38400 +4f9d00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +4f9d80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +38401 +54db00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +54db80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +38402 +3b5c000000010000000000001061687a6175746f62656472696a76656e026e6c00000f0001 +3b5c800000010000000300011061687a6175746f62656472696a76656e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01dc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04fc031000100010001518000043efa0202 + +38403 +aeed00000001000000000000046d61696c067577706f7374026e6c0000010001 +aeed80000001000000020002046d61696c067577706f7374026e6c0000010001c0110002000100015180000f026e7309656174736572766572c018c01100020001000151800006036e7332c02fc02c00010001000151800004d4cb0e42c04700010001000151800004d4cb1221 + +38404 +69b400000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +69b480000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +38405 +e9ab00000001000000000000036d783406787334616c6c026e6c0000010001 +e9ab80000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +38406 +52fa00000001000000000000036e733205672d617274026e6c0000010001 +52fa80000001000000020002036e733205672d617274026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000f026e7309747269706c652d6974c016c02a00010001000151800004d5a0c502c03c00010001000151800004d584b002 + +38407 +8993000000010000000000000e70617261706c756661627269656b0564656d6f6e026e6c00000f0001 +8993800000010000000300020e70617261706c756661627269656b0564656d6f6e026e6c00000f0001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc01b0002000100015180000f036e73320564656d6f6e036e657400c03500010001000151800004c29f4906c04700010001000151800004c29fb004 + +38408 +19f600000001000000000000036d78310768656262697a7a024e4c0000010001 +19f680000001000000020002036d78310768656262697a7a024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c372eb42c03e000100010001518000043e320e91 + +38409 +e3e4000000010000000000000377777708726f636b2d696e6e026e6c0000010001 +e3e4800000010000000200000377777708726f636b2d696e6e026e6c0000010001c0100002000100015180000c026e7306766576696461c019c01000020001000151800006036e7332c030 + +38410 +9173000000010000000000000365766f026e6c00000f0001 +9173800000010000000200000365766f026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +38411 +cf5400000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +cf5480000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38412 +2f4c000000010000000000000377777708696e737469746f72026e6c0000010001 +2f4c800000010000000200020377777708696e737469746f72026e6c0000010001c0100002000100015180000d036e73310661637469766fc019c01000020001000151800006036e7332c031c02d00010001000151800004d5c4281ac04600010001000151800004d5c42806 + +38413 +5c240000000100000000000007646176696e6369026e6c00001c0001 +5c248000000100000002000207646176696e6369026e6c00001c0001c00c0002000100015180000d036e7331066e6c74726565c014c00c00020001000151800006036e7332c02cc02800010001000151800004d4b20403c04100010001000151800004d5881e45 + +38414 +4d7300000001000000000000036e733109756e69736f75726365026e6c0000010001 +4d7380000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +38415 +9ae600000001000000000000036e733109756e69736f75726365026e6c0000260001 +9ae680000001000000020000036e733109756e69736f75726365026e6c0000260001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +38416 +09c10000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +09c18000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38417 +91a7000000010000000000000868656c706465736b026e6c00000f0001 +91a7800000010000000200020868656c706465736b026e6c00000f0001c00c0002000100015180000f036e7331086765656e70756e74c015c00c00020001000151800006036e7332c02dc02900010001000151800004d4ccd865c044000100010001518000045054ec34 + +38418 +ff930000000100000000000008736372616d626c6505796b6f6f6e026e6c0000010001 +ff938000000100000002000008736372616d626c6505796b6f6f6e026e6c0000010001c0150002000100015180000f036e733105796b6f6f6e036e657400c01500020001000151800006036e7332c033 + +38419 +976f001000010000000000010469632d73026e6c00001c00010000290800000000000000 +976f800000010000000200010469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c0290000291000000000000000 + +38420 +3f8a00000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +3f8a80000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +38421 +fa6900000001000000000000036e733104686f6d65026e6c0000010001 +fa6980000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +38422 +a44e0000000100000000000003696165026e6c0000ff0001 +a44e8000000100000002000203696165026e6c0000ff0001c00c00020001000151800012036e73310b7669616e6574776f726b73c010c00c00020001000151800006036e7332c028c02400010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +38423 +07c60000000100000000000004616a6178066e696b686566026e6c0000010001 +07c68000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +38424 +ef6e00000001000000000000037777771370726f736f756e646175746f7374796c696e67026e6c0000010001 +ef6e80000001000000030000037777771370726f736f756e646175746f7374796c696e67026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c03ec0100002000100015180000805646e733132c03e + +38425 +7e780000000100000000000009636d732d626f7363680c686f6c696461796d65646961026e6c0000010001 +7e788000000100000002000209636d732d626f7363680c686f6c696461796d65646961026e6c0000010001c01600020001000151800005026e73c016c01600020001000151800006036e7333c016c037000100010001518000049265424dc048000100010001518000045054ebbf + +38426 +7fe10000000100000000000003777777077a6f72676a6f62026e6c0000010001 +7fe18000000100000003000303777777077a6f72676a6f62026e6c0000010001c010000200010001518000110161026e7309636f6d626f64617461c018c010000200010001518000040162c02ec010000200010001518000040163c02ec02c00010001000151800004d5de0b44c04900010001000151800004d5de0b45c05900010001000151800004d5de0b4e + +38427 +388200000001000000000000037777770b766974616d696e657a6565026e6c0000010001 +388280000001000000020002037777770b766974616d696e657a6565026e6c0000010001c0100002000100015180000a036e7331036e7873c01cc01000020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +38428 +c32a000000010000000000000866666575726f7065026e6c0000010001 +c32a800000010000000200020866666575726f7065026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +38429 +437a00000001000000000000046d61696c0b64616e74756d616465656c026e6c0000010001 +437a80000001000000020000046d61696c0b64616e74756d616465656c026e6c0000010001c0110002000100015180000d026e730468736367036e657400c01100020001000151800006036e7332c034 + +38430 +b85b28000001000000010000026e6c0000060001055f6c646170045f746370077265746172636f026e6c000021000100000258001a000000640185077265745f667331077265746172636f026e6c00 +b85ba8040000000000000000 + +38431 +210c001000010000000000010673616b617461026e6c0000ff00010000290800000000000000 +210c800000010000000200010673616b617461026e6c0000ff0001c00c00020001000151800014036e73310a676c617373686f757365036e657400c00c00020001000151800006036e7332c02b0000291000000000000000 + +38432 +000000007002faf08ad60000020405b401010402 +000080010000000000000000 + +38433 +a73700000001000000000000036e733107756e6974656368026e6c0000010001 +a73780000001000000020002036e733107756e6974656368026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004511121f8c03a0001000100015180000451112184 + +38434 +ca9c00000001000000000000036e733207756e6974656368026e6c0000010001 +ca9c80000001000000020002036e733207756e6974656368026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004511121f8c00c0001000100015180000451112184 + +38435 +b7b2120c5010faf0edcb0000000000000000 +b7b292040000000000000000 + +38436 +843b000000010000000000000673616b617461026e6c0000ff0001 +843b800000010000000200000673616b617461026e6c0000ff0001c00c00020001000151800014036e73310a676c617373686f757365036e657400c00c00020001000151800006036e7332c02b + +38437 +eb9f00000001000000000000046c626e68026e6c00000f0001 +eb9f80000001000000020002046c626e68026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +38438 +4f6500000001000000000000046d61696c106e61747575726d6f6e756d656e74656e026e6c0000010001 +4f6580000001000000020001046d61696c106e61747575726d6f6e756d656e74656e026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03600010001000151800004d5c22132 + +38439 +2d2b00000001000000000000046d61696c106e61747575726d6f6e756d656e74656e026e6c00001c0001 +2d2b80000001000000020001046d61696c106e61747575726d6f6e756d656e74656e026e6c00001c0001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03600010001000151800004d5c22132 + +38440 +570500000001000000000000046d61696c0764727566697265026e6c0000010001 +570580000001000000030003046d61696c0764727566697265026e6c0000010001c0110002000100015180000e076e73617574683103626974c019c0110002000100015180000a076e736175746832c035c0110002000100015180000a076e736175746833c035c02d00010001000151800004d5880c33c04700010001000151800004d5880c3bc05d00010001000151800004d4ccc00b + +38441 +252400000001000000000000026e6c00000f0001 +252484000001000000010000026e6c00000f0001c00c00060001000038400036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840 + +38442 +0eda00000001000000000000037777770d7469636b6574747261636b6572026e6c0000010001 +0eda80000001000000020002037777770d7469636b6574747261636b6572026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01ec0100002000100015180001004646e733208636f6e6365707473c01ec03200010001000151800004d5c51c03c04f00010001000151800004d5c51e1c + +38443 +ab64000000010000000000000c6d6f7474656e76616e6765720c696e746572636f6e6e656374026e6c0000010001 +ab64800000010000000300030c6d6f7474656e76616e6765720c696e746572636f6e6e656374026e6c0000010001c01900020001000151800005026e73c019c01900020001000151800006036e7332c019c01900020001000151800006036e7333c019c03a00010001000151800004d453c005c04b00010001000151800004d453c006c05d00010001000151800004d453c805 + +38444 +081100000001000000000000037777770474617577026e6c0000010001 +081180000001000000030002037777770474617577026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c015c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c02dc029000100010001518000045054e055c06200010001000151800004d4ccc655 + +38445 +a6d4000000010000000000000469632d73026e6c00001c0001 +a6d4800000010000000200000469632d73026e6c00001c0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +38446 +730b00000001000000000000046d61696c0962657374636c65616e026e6c0000010001 +730b80000001000000020000046d61696c0962657374636c65616e026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c035 + +38447 +fd7200000001000000000000046d61696c066f72616e6765026e6c0000010001 +fd7280000001000000020001046d61696c066f72616e6765026e6c0000010001c0110002000100015180000d026e73046575726f036e657400c0110002000100015180000d026e73076575726f6e6574c018c04500010001000151800004c2860043 + +38448 +1b1c00000001000000000000026e73056269626974026e6c0000010001 +1b1c80000001000000030002026e73056269626974026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce201fc04e00010001000151800004d4ce2020 + +38449 +969d00000001000000000000036e7332056269626974026e6c0000010001 +969d80000001000000030002036e7332056269626974026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800002c00cc02a00010001000151800004d4ce201fc00c00010001000151800004d4ce2020 + +38450 +109e0000000100000000000003777777086d74726565787878026e6c0000010001 +109e8000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +38451 +db3600000001000000000000046d61696c0b7064706572736f6e65656c026e6c0000010001 +db3680000001000000020002046d61696c0b7064706572736f6e65656c026e6c0000010001c0110002000100015180000b036e733104736f6b6fc01dc01100020001000151800006036e7332c035c0310001000100015180000450f2ee91c0480001000100015180000450f2ee9e + +38452 +130000000001000000000000086174617261786961026e6c0000010001 +130080000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +38453 +947600000001000000000000037777770b626c696b6f706b756e7374026e6c0000010001 +947680000001000000020000037777770b626c696b6f706b756e7374026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c034 + +38454 +e233000000010000000000000567656f7665026e6c0000ff0001 +e233800000010000000200020567656f7665026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c012c00c00020001000151800006036e7331c029c02600010001000151800004504f6101c04000010001000151800004504f6102 + +38455 +e5e50000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +e5e58000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +38456 +71540000000100000000000009636f6d707574657273026e6c00000f0001 +71548000000100000002000209636f6d707574657273026e6c00000f0001c00c0002000100015180000903706b3102706bc016c00c0002000100015180000603706b32c02ec02a00010001000151800004d43d1815c03f00010001000151800004d43d1818 + +38457 +42dc00000001000000000000036e733103617474026e6c0000010001 +42dc80000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +38458 +9f1900000001000000000000036e733203617474026e6c0000010001 +9f1980000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +38459 +934500000001000000000000126b7265756b2d617263686974656374757572026e6c00001c0001 +934580000001000000020000126b7265756b2d617263686974656374757572026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c039 + +38460 +3a4f000000010000000000000377777705616e646573026e6c0000010001 +3a4f800000010000000200010377777705616e646573026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c016c01000020001000151800011036e7332076e6564636f6d70036f726700c02a00010001000151800004c3c1a80d + +38461 +b5d300100001000000000001056d61696c3103696e67026e6c00000100010000290800000080000000 +b5d380000001000000020003056d61696c3103696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc20000291000000000000000 + +38462 +ccb0000000010000000000000331373202323101310131026e6c0000010001 +ccb0840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +38463 +6a5a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +6a5a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38464 +b90f0000000100000000000003777777127761746d6f65746a657a6f6e6465726f6e73026e6c0000010001 +b90f8000000100000002000203777777127761746d6f65746a657a6f6e6465726f6e73026e6c0000010001c01000020001000151800011046e73303109696e74656e74696f6ec023c01000020001000151800007046e733032c03cc03700010001000151800004d943eb02c05400010001000151800004d943eb03 + +38465 +b77f00000001000000000000037777770365636c026e6c0000010001 +b77f80000001000000030003037777770365636c026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c014c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02cc02800010001000151800004d5c98015c04300010001000151800004d5c9bf12c05500010001000151800004d5ef9c26 + +38466 +e19c000000010000000000000664756379636f026e6c0000010001 +e19c800000010000000200020664756379636f026e6c0000010001c00c00020001000151800010036e733109686f7374696e67786cc013c00c00020001000151800006036e7332c02bc027000100010001518000045054e504c043000100010001518000043e94a314 + +38467 +34bf00000001000000000000037777770964616e736f6d6d6572026e6c0000010001 +34bf80000001000000020000037777770964616e736f6d6d6572026e6c0000010001c010000200010001518000130761757468323030026e73027575036e657400c0100002000100015180000a0761757468323130c036 + +38468 +bdeb00000001000000000000037777770864766473746f7265026e6c0000010001 +bdeb80000001000000020002037777770864766473746f7265026e6c0000010001c01000020001000151800009036e7331026973c019c01000020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +38469 +58b300000001000000000000037777770b627269736b6576656e7473026e6c0000010001 +58b380000001000000020002037777770b627269736b6576656e7473026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c01cc01000020001000151800006036e7332c033c03000010001000151800004d9aa2042c04900010001000151800004d9aa2c06 + +38470 +5a2c00000001000000000000037777770c746a65657a656d6f64656c73026e6c0000010001 +5a2c80000001000000020002037777770c746a65657a656d6f64656c73026e6c0000010001c0100002000100015180001104646e733109696e7465726f757465c01dc0100002000100015180000704646e7332c036c03100010001000151800004d4173f3ec04e00010001000151800004d4173f3d + +38471 +2b720000000100000000000003777777047476636e026e6c0000010001 +2b728000000100000002000203777777047476636e026e6c0000010001c01000020001000151800011036e73310a6f612d73797374656d73c015c01000020001000151800006036e7332c02dc029000100010001518000043eb1b1abc046000100010001518000043eb1b1ac + +38472 +34c20000000100000000000008616473657276657206776562616473026e6c0000010001 +34c28000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +38473 +441700000001000000000000056d61696c3103696e67026e6c0000010001 +441780000001000000020002056d61696c3103696e67026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02a0001000100015180000491dd19c2c03c0001000100015180000491dd5dc2 + +38474 +a12f00000001000000000000087368696e65747375026e6c00000f0001 +a12f80000001000000020000087368696e65747375026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02f + +38475 +705600000001000000000000037777770672686564656e026e6c0000010001 +705680000001000000020002037777770672686564656e026e6c0000010001c01000020001000151800010046e733031086e65746c696e6573c017c01000020001000151800007046e733032c030c02b00010001000151800004d99540f5c04700010001000151800004d99541f5 + +38476 +82a400000001000000000000036e733109666972737466696e64026e6c0000010001 +82a480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38477 +793a00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +793a80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +38478 +f4b600000001000000000000037777770d686161677366696c6d68756973026e6c0000010001 +f4b680000001000000020002037777770d686161677366696c6d68756973026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01ec01000020001000151800006036e7332c036c03200010001000151800004d43d0f08c05000010001000151800004d43d19e2 + +38479 +87040000000100000000000009666f746f2d77696a6e026e6c0000010001 +87048000000100000002000109666f746f2d77696a6e026e6c0000010001c00c0002000100015180000a036e733303777873c016c00c00020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +38480 +e87200000001000000000000037777770976696e6b2d656c7374026e6c0000010001 +e87280000001000000020002037777770976696e6b2d656c7374026e6c0000010001c01000020001000151800015036e73310e726567696f70726f766964657273c01ac01000020001000151800006036e7332c032c02e00010001000151800004d41da001c04f00010001000151800004d41da1fe + +38481 +f17100000001000000000000036e73330767617574656e67026e6c0000010001 +f17180000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38482 +55e200000001000000000000036e73340767617574656e67026e6c0000010001 +55e280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38483 +6eec00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +6eec80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +38484 +4342000000010000000000000967656c6468616c656e026e6c0000010001 +4342800000010000000200000967656c6468616c656e026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38485 +2e240000000100000000000009652d6c756e61746963026e6c0000010001 +2e248000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38486 +44e60000000100000000000003667273026e6c0000010001 +44e68000000100000002000003667273026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +38487 +227800000001000000000000036e7331086c65617365776562026e6c0000010001 +227880000001000000030002036e7331086c65617365776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800012036e7333086c65617365776562036f726700c00c000100010001518000043ed44079c03b000100010001518000043ed4407a + +38488 +7d2e00000001000000000000036e7332086c65617365776562026e6c0000010001 +7d2e80000001000000030002036e7332086c65617365776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800012036e7333086c65617365776562036f726700c02d000100010001518000043ed44079c00c000100010001518000043ed4407a + +38489 +79fa00000001000000000000037777771264656875697361616e687569736b72616e74026e6c0000010001 +79fa80000001000000020000037777771264656875697361616e687569736b72616e74026e6c0000010001c0100002000100015180000f026e7306636170696361036e657400c01000020001000151800006036e7332c03a + +38490 +0a8b0000000100000000000005736f6e6a610972696473777572747a026e6c0000060001 +0a8b8403000100000001000005736f6e6a610972696473777572747a026e6c0000060001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +38491 +b51d00000001000000000000066e7063696374026e6c00001c0001 +b51d80000001000000030003066e7063696374026e6c00001c0001c00c000200010001518000180b6e616d6573657276657231096469676974616c7573c013c00c0002000100015180000e0b6e616d6573657276657232c033c00c0002000100015180000e0b6e616d6573657276657233c033c0270001000100015180000451ad2020c04b0001000100015180000451ad2021c0650001000100015180000452c049aa + +38492 +e32e000000010000000000000365746e026e6c0000010001 +e32e800000010000000200010365746e026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c010c03d00010001000151800004c2860043 + +38493 +f17900000001000000000000026e730874656c6567617465026e6c0000010001 +f17980000001000000030000026e730874656c6567617465026e6c0000010001c00f00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00f00020001000151800006036e7332c030c00f00020001000151800006036e7333c030 + +38494 +96190000000100000000000005646e732d31056c61646f74026e6c0000010001 +96198000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38495 +8daf0000000100000000000005646e732d32056c61646f74026e6c0000010001 +8daf8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38496 +817e00000001000000000000037777770e67616c6c65726965732d736c6574026e6c0000010001 +817e80000001000000020002037777770e67616c6c65726965732d736c6574026e6c0000010001c0100002000100015180000d036e7331063234686f7374c01fc01000020001000151800006036e7332c037c03300010001000151800004d5efb10cc04c00010001000151800004d5efb10d + +38497 +c182000000010000000000000c616b7469716c6170746f70310e616b7469712d696e7472616e6574026e6c0000060001 +c182840300010000000100000c616b7469716c6170746f70310e616b7469712d696e7472616e6574026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +38498 +03f000000001000000000000037777770b62726162616e74626f656b026e6c0000010001 +03f080000001000000030002037777770b62726162616e74626f656b026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +38499 +28ac00100001000000000001096365646572626f7267026e6c00001c00010000290800000080000000 +28ac80000001000000020003096365646572626f7267026e6c00001c0001c00c0002000100015180000a036e733103696166c016c00c00020001000151800006036e7332c02ec02a000100010001518000045059e040c040000100010001518000045059ee030000291000000000000000 + +38500 +384000000001000000000000046d61696c076a6f736c61616e026e6c0000010001 +384080000001000000020000046d61696c076a6f736c61616e026e6c0000010001c01100020001000151800011036e73330a737562686f7374696e67c019c01100020001000151800006036e7334c031 + +38501 +07700000000100000000000009652d6c756e61746963026e6c0000010001 +07708000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38502 +0f790000000100000000000009652d6c756e61746963026e6c0000010001 +0f798000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38503 +facc00000001000000000000036e733103697870026e6c0000010001 +facc80000001000000020002036e733103697870026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f + +38504 +fd6600000001000000000000036e733203697870026e6c0000010001 +fd6680000001000000020002036e733203697870026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d943e639c00c000100010001518000043efa063f + +38505 +c4fd00000001000000000000037777770e64696572656e63656e7472616c65026e6c0000010001 +c4fd80000001000000020002037777770e64696572656e63656e7472616c65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01fc01000020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +38506 +904600000001000000000000086d61696c686f7374097665746572616e656e026e6c0000010001 +904680000001000000020002086d61696c686f7374097665746572616e656e026e6c0000010001c01500020001000151800011026e730b6973642d686f6c6c616e64c01fc01500020001000151800006036e7332c036c03300010001000151800004d5e38d0ac05000010001000151800004d5e38205 + +38507 +8a0e00000001000000000000096365646572626f7267026e6c00001c0001 +8a0e80000001000000020002096365646572626f7267026e6c00001c0001c00c0002000100015180000a036e733103696166c016c00c00020001000151800006036e7332c02ec02a000100010001518000045059e040c040000100010001518000045059ee03 + +38508 +860000000001000000000000037777770970696c6f7473686f70026e6c0000010001 +860080000001000000020000037777770970696c6f7473686f70026e6c0000010001c01000020001000151800012036e73310b776f726c646f6e6c696e65c01ac01000020001000151800006036e7332c032 + +38509 +b4e0000000010000000000000477777731086c616e67686f7574026e6c0000010001 +b4e0800000010000000200000477777731086c616e67686f7574026e6c0000010001c01100020001000151800013036e733109752d73657276657273036e657400c01100020001000151800006036e7332c032 + +38510 +d89400000001000000000000037777770d7665696c696e676b696a6b6572026e6c0000010001 +d89480000001000000020002037777770d7665696c696e676b696a6b6572026e6c0000010001c0100002000100015180000c04646e73310471776562c01ec0100002000100015180000704646e7332c037c03200010001000151800004d994ac0cc04a00010001000151800004d5c42f6c + +38511 +50b30000000100000000000004444e5332064d494e4c4e56026e6c0000010001 +50b38000000100000003000304444e5332064d494e4c4e56026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +38512 +7f6c00000001000000000000037777770d766c6965676b616d706f70656e026e6c0000010001 +7f6c80000001000000020002037777770d766c6965676b616d706f70656e026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +38513 +4934000000010000000000000b652d676f686f7374696e67026e6c0000010001 +4934800000010000000200000b652d676f686f7374696e67026e6c0000010001c00c0002000100015180000c036e723105692d702d64c018c00c00020001000151800006036e7232c030 + +38514 +8fb100000001000000000000036e733503777873026e6c0000010001 +8fb180000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +38515 +319d000000010000000000000b652d676f686f7374696e67026e6c00001c0001 +319d800000010000000200000b652d676f686f7374696e67026e6c00001c0001c00c0002000100015180000c036e723105692d702d64c018c00c00020001000151800006036e7232c030 + +38516 +7f92000000010000000000000b652d676f686f7374696e67026e6c0000260001 +7f92800000010000000200000b652d676f686f7374696e67026e6c0000260001c00c0002000100015180000c036e723105692d702d64c018c00c00020001000151800006036e7232c030 + +38517 +844100000001000000000000026e730874656c6567617465026e6c0000010001 +844180000001000000030000026e730874656c6567617465026e6c0000010001c00f00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00f00020001000151800006036e7332c030c00f00020001000151800006036e7333c030 + +38518 +072e00000001000000000000036e73320564656d6f6e026e6c0000010001 +072e80000001000000030002036e73320564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +38519 +073000000001000000000000036e73310564656d6f6e026e6c0000010001 +073080000001000000030002036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +38520 +314b000000010000000000000377777711766972747565656c7665726469656e656e026e6c0000010001 +314b800000010000000200020377777711766972747565656c7665726469656e656e026e6c0000010001c0100002000100015180000e036e73310777657073797465c022c01000020001000151800006036e7332c03ac03600010001000151800004d5f72968c05000010001000151800004d5f72969 + +38521 +c00d00000001000000000000037777770a7368697274737a6f6e65026e6c0000010001 +c00d80000001000000030002037777770a7368697274737a6f6e65026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +38522 +635700000001000000000000036d783406787334616c6c026e6c0000010001 +635780000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +38523 +749c00000001000000000000026e7306766576696461026e6c0000010001 +749c80000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +38524 +3a4e00000001000000000000026e7306766576696461026e6c0000260001 +3a4e80000001000000030002026e7306766576696461026e6c0000260001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +38525 +0e9d00000001000000000000036e733206766576696461026e6c0000010001 +0e9d80000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +38526 +110600000001000000000000036e733206766576696461026e6c0000260001 +110680000001000000030002036e733206766576696461026e6c0000260001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +38527 +bf880000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +bf888000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +38528 +f754000000010000000000000377777711766972747565656c7665726469656e656e026e6c0000010001 +f754800000010000000200020377777711766972747565656c7665726469656e656e026e6c0000010001c0100002000100015180000e036e73310777657073797465c022c01000020001000151800006036e7332c03ac03600010001000151800004d5f72968c05000010001000151800004d5f72969 + +38529 +13d10000000100000000000003777777087761726368696c64026e6c0000010001 +13d18000000100000002000203777777087761726368696c64026e6c0000010001c0100002000100015180000b026e73057162616c6cc019c0100002000100015180000f026e7309747269706c652d6974c019c02d00010001000151800004d584b024c04400010001000151800004d584b002 + +38530 +f3970000000100000000000004414a4158064e494b484546024e4c0000010001 +f3978000000100000004000204414a4158064e494b484546024e4c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +38531 +76aa0000000100000000000003696c730773747564656e7407757477656e7465026e6c0000010001 +76aa8000000100000003000303696c730773747564656e7407757477656e7465026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800006036e7333c018c0340001000100015180000482590102c0460001000100015180000482590103c05800010001000151800004c0571113 + +38532 +c8050000000100000000000003636d730769736973776562026e6c0000010001 +c8058000000100000003000303636d730769736973776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7334c010c02c00010001000151800004d4ccca65c03e00010001000151800004510440dec05000010001000151800004510440fa + +38533 +81f100000001000000000000046d61696c0c737072696e6764657369676e026e6c0000010001 +81f180000001000000020002046d61696c0c737072696e6764657369676e026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01ec01100020001000151800006036e7332c035c03200010001000151800004d4cb0e42c04d00010001000151800004d4cb1221 + +38534 +80ad0000000100000000000005646e732d32056c61646f74026e6c0000010001 +80ad8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38535 +074000000001000000000000046e733032066368656c6c6f026e6c0000010001 +074080000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +38536 +074100000001000000000000036e73310974656c656b6162656c026e6c0000010001 +074180000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +38537 +5b84000000010000000000000965696e64686f76656e026e6c00000f0001 +5b84800000010000000200020965696e64686f76656e026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +38538 +52290000000100000000000006617363696e74026e6c00001c0001 +52298000000100000002000206617363696e74026e6c00001c0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c + +38539 +122800000001000000000000056d616e726f026e6c0000010001 +122880000001000000020002056d616e726f026e6c0000010001c00c00020001000151800018036e733111736d616c6c686f6c642d686f7374696e67c012c00c00020001000151800006036e7332c02ac026000100010001518000045104730ec04a000100010001518000045104730f + +38540 +e507000000010000000000000377777706707261786973026e6c0000010001 +e507800000010000000300030377777706707261786973026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c017c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02fc02b00010001000151800004c3f13ceec04700010001000151800004c372eb43c059000100010001518000043e320e8f + +38541 +ed320000000100000000000006535049444552034e4c52024e4c0000010001 +ed328000000100000002000206535049444552034e4c52024e4c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c00c00010001000151800004891150c8c03900010001000151800004c0576a65 + +38542 +d6ed00000001000000000000037777770b726f62626572746d616173026e6c0000010001 +d6ed80000001000000020002037777770b726f62626572746d616173026e6c0000010001c0100002000100015180000e036e73310769736973776562c01cc01000020001000151800006036e7334c034c03000010001000151800004d4ccca65c04a00010001000151800004510440fa + +38543 +934d00000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +934d80000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +38544 +d474000000010000000000000a77696c6c6973617761790564656d6f6e026e6c0000010001 +d474800000010000000300020a77696c6c6973617761790564656d6f6e026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c0170002000100015180000f036e73320564656d6f6e036e657400c03100010001000151800004c29f4906c04300010001000151800004c29fb004 + +38545 +2889000000010000000000000470627269026e6c0000010001 +2889800000010000000200020470627269026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +38546 +baec00000001000000000000096e6564636f73766572026e6c00000f0001 +baec80000001000000020002096e6564636f73766572026e6c00000f0001c00c00020001000151800010036e7331097468652d676c6f6265c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d584b482c04600010001000151800004d584b483 + +38547 +2a5c000000010000000000000377777707696e2d666c6f77026e6c0000010001 +2a5c800000010000000200000377777707696e2d666c6f77026e6c0000010001c01000020001000151800013036e73310969706f776572776562036e657400c01000020001000151800013036e73310969706f776572646e7303636f6d00 + +38548 +390a0000000100000000000003495043026e6c0000020001 +390a8000000100000002000203495043026e6c0000020001c00c0002000100015180000e036e733007656173796e6574c010c00c00020001000151800006036e7331c028c02400010001000151800004c2a55e01c03e00010001000151800004c2a55e05 + +38549 +b3d4000000010000000000000663616e646561026e6c00000f0001 +b3d4800000010000000300030663616e646561026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +38550 +838100000001000000000000037777770c6d73692d636f6d7075746572026e6c0000010001 +838180000001000000020002037777770c6d73692d636f6d7075746572026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01dc01000020001000151800006036e7332c035c03100010001000151800004d43d0f08c04f00010001000151800004d43d19e2 + +38551 +7cf600000001000000000000037777771168657472696a6b656c616e646c6576656e026e6c0000010001 +7cf680000001000000020001037777771168657472696a6b656c616e646c6576656e026e6c0000010001c01000020001000151800013026e730d62616c6c6173742d6e6564616dc022c01000020001000151800013036e7332026e6c0669676e697465036e657400c036000100010001518000043eadcea1 + +38552 +42f50000000100000000000003777777026a73026e6c0000010001 +42f58000000100000002000203777777026a73026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c013c01000020001000151800006036e7332c02ac02700010001000151800004d5e38d0ac04400010001000151800004d5e38205 + +38553 +b166000000010000000000000873696c69636f6d70026e6c00000f0001 +b166800000010000000200000873696c69636f6d70026e6c00000f0001c00c0002000100015180000f05646e73303103697032036e657400c00c0002000100015180000805646e733032c02f + +38554 +faee00000001000000000000076367692d6e657706787334616c6c026e6c0000010001 +faee80000001000000030002076367692d6e657706787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +38555 +9ffe00000001000000000000037777770962696f73636f70656e036c6178026e6c0000010001 +9ffe80000001000000020000037777770962696f73636f70656e036c6178026e6c0000010001c01a00020001000151800014036e73310a646f6c7068696e2d6973036e657400c01a00020001000151800006036e7332c036 + +38556 +b84b00000001000000000000036e733209776570726f76696465026e6c0000010001 +b84b80000001000000020002036e733209776570726f76696465026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9db5c00c00010001000151800004d5ef9dbe + +38557 +436200000001000000000000036e733109776570726f76696465026e6c0000010001 +436280000001000000020002036e733109776570726f76696465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9db5c03c00010001000151800004d5ef9dbe + +38558 +bf0400000001000000000000046f6f636c026e6c00000f0001 +bf0484030001000000010000046f6f636c026e6c00000f0001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +38559 +55b40000000100000000000003777777096465736d6f657a656e026e6c0000010001 +55b48000000100000002000103777777096465736d6f657a656e026e6c0000010001c01000020001000151800023097765626d696e642d3108637573746f6d6572026e6c07656173796e6574036e657400c0100002000100015180000e036e733007656173796e6574c01ac05d00010001000151800004c2a55e01 + +38560 +076f00000001000000000000036e733103757063026e6c0000010001 +076f80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +38561 +b5fd00000001000000000000037777770a6a75737475733466756e026e6c0000010001 +b5fd80000001000000020000037777770a6a75737475733466756e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +38562 +42610000000100000000000005646e732d31056c61646f74026e6c0000010001 +42618000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38563 +2326000000010000000000000a7261626f68617474656d026e6c00000f0001 +2326800000010000000200000a7261626f68617474656d026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c017c00c0002000100015180000704686e7331c030 + +38564 +b0b40000000100000000000005646e732d32056c61646f74026e6c0000010001 +b0b48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38565 +4c320000000100000000000003736462026e6c0000020001 +4c328000000100000002000203736462026e6c0000020001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +38566 +7c6c00000001000000000000046e743036036d7069026e6c0000010001 +7c6c80000001000000020002046e743036036d7069026e6c0000010001c011000200010001518000080573756e3032c011c01100020001000151800006036e7332c011c02900010001000151800004c0574f3ec03d00010001000151800004c0574f37 + +38567 +a8ea0000000100000000000003777777076d796f6b696e65026e6c0000010001 +a8ea8000000100000003000303777777076d796f6b696e65026e6c0000010001c0100002000100015180000e036e733107686f7374696e67c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c000100010001518000043e818b01c046000100010001518000043e818b02c058000100010001518000043e818ae1 + +38568 +cc470000000100000000000005646e732d31056c61646f74026e6c0000010001 +cc478000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38569 +e1a90000000100000000000005646e732d32056c61646f74026e6c0000010001 +e1a98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38570 +dd200000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +dd208000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38571 +6e900000000100000000000003626c3402626c06787334616c6c026e6c0000260001 +6e908000000100000003000203626c3402626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38572 +e4e40010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +e4e48000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +38573 +ae64000000010000000000000777616e61646f6f026e6c00001c0001 +ae64800000010000000200010777616e61646f6f026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +38574 +4b160000000100000000000003777777066b6e6f776d65026e6c0000010001 +4b168000000100000002000003777777066b6e6f776d65026e6c0000010001c0100002000100015180000e036e73330767617574656e67c017c01000020001000151800006036e7334c02f + +38575 +e4e40000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +e4e48000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +38576 +31170000000100000000000003777777086c65747373746174026e6c0000010001 +31178000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +38577 +d73d00000001000000000000037777770d76726564657376726575676465026e6c0000010001 +d73d80000001000000030003037777770d76726564657376726575676465026e6c0000010001c0100002000100015180000b04646e733103766970c01ec0100002000100015180000704646e7332c037c0100002000100015180000704646e7333c037c03200010001000151800004d44fe803c04900010001000151800004c3f5c782c05c00010001000151800004d44ff303 + +38578 +eefc00000001000000000000096c6567616c63617265026e6c0000010001 +eefc80000001000000030001096c6567616c63617265026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +38579 +4c120000000100000000000003777777097472657374656c6c65026e6c0000010001 +4c128000000100000002000203777777097472657374656c6c65026e6c0000010001c0100002000100015180000c04646e73310471776562c01ac0100002000100015180000704646e7332c033c02e00010001000151800004d994ac0cc04600010001000151800004d5c42f6c + +38580 +14960000000100000000000003777777066d696e627a6b026e6c0000010001 +14968000000100000003000203777777066d696e627a6b026e6c0000010001c0100002000100015180000d036e7331066d696e646566c017c01000020001000151800006036e7332c02fc01000020001000151800012036e7331086e65746e616d6573036e657400c02b00010001000151800004d9a9e7c6c04400010001000151800004d9a9e7c5 + +38581 +774a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +774a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38582 +6cd30000000100000000000005646e732d32056c61646f74026e6c0000010001 +6cd38000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38583 +6f6800000001000000000000036e7332086e6f766178657373026e6c0000010001 +6f6880000001000000030003036e7332086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +38584 +6f6900000001000000000000036e7331086e6f766178657373026e6c0000010001 +6f6980000001000000030003036e7331086e6f766178657373026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5c98015c03b00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +38585 +de7600000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +de7680000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +38586 +792c00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +792c80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +38587 +bacd0000000100000000000003777777076578616d696e65026e6c0000010001 +bacd8000000100000003000203777777076578616d696e65026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +38588 +adb300000001000000000000036e73320f444f4d41494e2d5245474953545259026e6c00001c0001 +adb380000001000000030002036e73320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +38589 +4a6400000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +4a6480000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +38590 +9e0d00000001000000000000037777770a64757463687465656e73026e6c0000010001 +9e0d80000001000000020001037777770a64757463687465656e73026e6c0000010001c0100002000100015180000a026e7304696d636fc01bc01000020001000151800013036e7332097669727475616c787303636f6d00c02f000100010001518000043e81810a + +38591 +179c0000000100000000000004626e6e75066c616e646973026e6c00000f0001 +179c8000000100000002000104626e6e75066c616e646973026e6c00000f0001c01100020001000151800006036e7331c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2b6a0 + +38592 +b4ea00000001000000000000026e7306787334616c6c026e6c0000010001 +b4ea80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +38593 +69eb0000000100000000000004766d696a026e6c00000f0001 +69eb8000000100000002000004766d696a026e6c00000f0001c00c00020001000151800013046e733031086772616669636f6d03636f6d00c00c00020001000151800007046e733032c02a + +38594 +844600000001000000000000026e730874656c6567617465026e6c0000010001 +844680000001000000030000026e730874656c6567617465026e6c0000010001c00f00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00f00020001000151800006036e7332c030c00f00020001000151800006036e7333c030 + +38595 +4e2900000001000000000000055f6c646170045f746370026463065f6d736463730a32303030736572766572026e6c0000060001 +4e2984030001000000010000055f6c646170045f746370026463065f6d736463730a32303030736572766572026e6c0000060001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +38596 +64da28000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000210001000002580022000000640058066e69656c7331106b72656e73636f6e73756c74616e6379026e6c00 +64daa8040000000000000000 + +38597 +c86e00000001000000000000046265616e026e6c00000f0001 +c86e80000001000000020002046265616e026e6c00000f0001c00c00020001000151800010036e733109696e746572686f7374c011c00c00020001000151800006036e7335c029c02500010001000151800004d91a7429c04100010001000151800004d554e583 + +38598 +6b260000000100000000000003777777067a7376737468026e6c0000010001 +6b268403000100000001000003777777067a7376737468026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +38599 +aa5000000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +aa5080000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +38600 +d59f00000001000000000000036e73320863616d627269756d026e6c0000010001 +d59f80000001000000020002036e73320863616d627269756d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d9131082c00c00010001000151800004d5efb202 + +38601 +000000007002400026770000020405ac01010402 +000080010000000000000000 + +38602 +f2720000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f2728000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38603 +d42100000001000000000000026e7303656369026e6c0000010001 +d42180000001000000020000026e7303656369026e6c0000010001c00f0002000100015180000d036e7333036b706e036e657400c00f00020001000151800006036e7334c02b + +38604 +01170010000100000000000103667470056e6c757567026e6c00000100010000290800000000000000 +01178000000100000002000203667470056e6c757567026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000f067365727669780574756e6978c016c02a00010001000151800004c2e51b230000291000000000000000 + +38605 +b7b516e85010441080750000000000000000 +b7b596e40000000000000000 + +38606 +dd3600000001000000000000026e73066863636e6574026e6c0000010001 +dd3680000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +38607 +658f00000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +658f80000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +38608 +579e00000001000000000000066d61737465720364746f07747564656c6674026e6c0000260001 +579e80000001000000050005066d61737465720364746f07747564656c6674026e6c0000260001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +38609 +b7b516e8501844102fb1000000943310000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76a403c48ea0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 +b7b596e40000000000000000 + +38610 +c0a500000001000000000000036e73310774656c666f7274026e6c0000010001 +c0a580000001000000020001036e73310774656c666f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800014036e733202657507636f6e63657274036e657400c00c00010001000151800004d5c22815 + +38611 +563500000001000000000000055f6c646170045f746370026463065f6d736463730a32303030736572766572026e6c0000060001 +563584030001000000010000055f6c646170045f746370026463065f6d736463730a32303030736572766572026e6c0000060001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +38612 +76710000000100000000000003777777056272697461026e6c0000010001 +76718000000100000002000103777777056272697461026e6c0000010001c0100002000100015180000a036e733303777873c016c01000020001000151800006036e7334c02ec04000010001000151800004d5ef9a65 + +38613 +b7b516f6501144027fde0000000000000000 +b7b596f40000000000000000 + +38614 +74200000000100000000000003777777167765657273746174696f6e2d646f6574696e6368656d026e6c0000010001 +74208000000100000002000003777777167765657273746174696f6e2d646f6574696e6368656d026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +38615 +0000000070024000603d0000020405ac01010402 +000080010000000000000000 + +38616 +6a4900000001000000000000046d61696c0f64616d656e2d686f6f67657a616e64026e6c0000010001 +6a4980000001000000020002046d61696c0f64616d656e2d686f6f67657a616e64026e6c0000010001c01100020001000151800012026e730c696e746572636f6e6e656374c021c01100020001000151800006036e7332c038c03500010001000151800004d453c005c05300010001000151800004d453c006 + +38617 +b7b516f7501044027fdd0000000000000000 +b7b596f40000000000000000 + +38618 +f17e00000001000000000000026e730874656c6567617465026e6c0000010001 +f17e80000001000000030000026e730874656c6567617465026e6c0000010001c00f00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00f00020001000151800006036e7332c030c00f00020001000151800006036e7333c030 + +38619 +b7b59189501044103f9a0000000000000000 + + +38620 +e801000000010000000000000762616e6e65727303696d73026e6c0000010001 +e801800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +38621 +b7b59189501844103ef200000094e3f4000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76a403c48ea0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 + + +38622 +bc0600000001000000000000055f6c646170045f74637003706463065f6d736463730b6577772d6e65747765726b026e6c0000210001 +bc0684030001000000010000055f6c646170045f74637003706463065f6d736463730b6577772d6e65747765726b026e6c0000210001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +38623 +73f00000000100000000000004686f6d6508636f6e6365707473026e6c0000010001 +73f08000000100000002000204686f6d6508636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac0110002000100015180000704646e7332c011c02e00010001000151800004d5c51c03c04b00010001000151800004d5c51e1c + +38624 +4fc200000001000000000000037777770c73636872696a66746166656c026e6c0000010001 +4fc280000001000000020002037777770c73636872696a66746166656c026e6c0000010001c01000020001000151800011036e73310a6f6e6c696e6534796f75c01dc01000020001000151800006036e7332c035c031000100010001518000043e3a205bc04e000100010001518000043e3a205c + +38625 +813100000001000000000000037777770b62657665696c6967696e67026e6c0000010001 +813180000001000000020000037777770b62657665696c6967696e67026e6c0000010001c0100002000100015180000e026e73056e65647873036e657400c01000020001000151800006036e7332c033 + +38626 +b7b59197501144023f030000000000000000 + + +38627 +b2240000000100000000000003777777076675636b776562026e6c0000010001 +b2248000000100000002000203777777076675636b776562026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa011c04700010001000151800004d5efa075 + +38628 +000000007002400004800000020405ac01010402 +000080010000000000000000 + +38629 +907500000001000000000000036e73310770726f74656f6e026e6c0000010001 +907580000001000000020002036e73310770726f74656f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c1433804c03a00010001000151800004d4992b27 + +38630 +00be00000001000000000000036e73310770726f74656f6e026e6c0000260001 +00be80000001000000020002036e73310770726f74656f6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c1433804c03a00010001000151800004d4992b27 + +38631 +005f00000001000000000000036e73320770726f74656f6e026e6c0000010001 +005f80000001000000020002036e73320770726f74656f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c1433804c00c00010001000151800004d4992b27 + +38632 +f96800000001000000000000036e73320770726f74656f6e026e6c0000260001 +f96880000001000000020002036e73320770726f74656f6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c1433804c00c00010001000151800004d4992b27 + +38633 +94b10000000100000000000003667470056e6c757567026e6c0000010001 +94b18000000100000002000103667470056e6c757567026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000f067365727669780574756e6978c016c02a00010001000151800004c2e51b23 + +38634 +a5eb00000001000000000000026e7304696d636f026e6c0000010001 +a5eb80000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +38635 +e54600000001000000000000087879626a79626566026e6c00000f0001 +e54684030001000000010000087879626a79626566026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +38636 +833c00000001000000000000026e7304696d636f026e6c0000010001 +833c80000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +38637 +a0ea00000001000000000000026e7304696d636f026e6c0000260001 +a0ea80000001000000020001026e7304696d636f026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +38638 +9754000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +9754800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +38639 +ba540000000100000000000003777777057374756c7a026e6c0000010001 +ba548000000100000002000203777777057374756c7a026e6c0000010001c01000020001000151800012036e73310b667574757265747261696ec016c01000020001000151800006036e7332c02ec02a0001000100015180000451112850c0480001000100015180000451112859 + +38640 +db3b00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +db3b80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38641 +bb6500000001000000000000056172657365026e6c00001c0001 +bb6580000001000000030002056172657365026e6c00001c0001c00c0002000100015180000d036e733106776964657873c012c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ac02600010001000151800004d4ccc0fcc05b000100010001518000043efa0703 + +38642 +2b0900000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +2b0980000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38643 +0d8d00000001000000000000026e7304696d636f026e6c00001c0001 +0d8d80000001000000020001026e7304696d636f026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +38644 +8a5d00000001000000000000026e7304696d636f026e6c0000260001 +8a5d80000001000000020001026e7304696d636f026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +38645 +35f3000000010000000000000a6a6f6f706e6f6c74656e026e6c00000f0001 +35f3800000010000000200000a6a6f6f706e6f6c74656e026e6c00000f0001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c02e + +38646 +afec00000001000000000000026e73056269626974026e6c0000010001 +afec80000001000000030002026e73056269626974026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce201fc04e00010001000151800004d4ce2020 + +38647 +ef5300000001000000000000036e7332056269626974026e6c0000010001 +ef5380000001000000030002036e7332056269626974026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800002c00cc02a00010001000151800004d4ce201fc00c00010001000151800004d4ce2020 + +38648 +29b500000001000000000000037777770a3131746567656e313030026e6c0000010001 +29b584030001000000010000037777770a3131746567656e313030026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +38649 +465700000001000000000000076e6f74626c7565026e6c00000f0001 +465780000001000000020000076e6f74626c7565026e6c00000f0001c00c00020001000151800010036e733109666972737466696e64c014c00c00020001000151800006036e7332c02c + +38650 +b7b59198501044023f020000000000000000 + + +38651 +b7b677b150104410fdb30000000000000000 +b7b6f7b40000000000000000 + +38652 +b7b677b150184410f59300000094eb6c000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76a403c48ea0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 +b7b6f7b40000000000000000 + +38653 +b7b677bf50114402fd1c0000000000000000 +b7b6f7b40000000000000000 + +38654 +04ad00000001000000000000036c7865026e6c00000f0001 +04ad80000001000000020000036c7865026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +38655 +2182000000010000000000000377777703646572026e6c0000010001 +2182800000010000000200000377777703646572026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +38656 +b7b677c050104402fd1b0000000000000000 +b7b6f7c40000000000000000 + +38657 +6038000000010000000000000476627a61026e6c0000010001 +6038800000010000000300020476627a61026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +38658 +258800000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +258880000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38659 +cfe800000001000000000000086d6f6c64726f7374026e6c0000010001 +cfe880000001000000020000086d6f6c64726f7374026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +38660 +e799000000010000000000000762736d74702d3108636f6e6365707473026e6c0000010001 +e799800000010000000200020762736d74702d3108636f6e6365707473026e6c0000010001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c + +38661 +65f800000001000000000000064d454e534543024e4c00000f0001 +65f880000001000000020000064d454e534543024e4c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +38662 +5a60000000010000000000000c68756e6b656d6f656c6c6572026e6c0000010001 +5a60800000010000000300030c68756e6b656d6f656c6c6572026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d00010001000151800004c3f13ceec04900010001000151800004c372eb43c05b000100010001518000043e320e8f + +38663 +b25800000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +b25880000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38664 +532f000000010000000000000765786861757374086865696a6d616e73026e6c0000010001 +532f800000010000000200020765786861757374086865696a6d616e73026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000b086578686175737432c014c03100010001000151800004c1ad9303c04300010001000151800004d47b0e91 + +38665 +529c00000001000000000000036e7332066e6c74726565026e6c0000010001 +529c80000001000000020002036e7332066e6c74726565026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d4b20403c00c00010001000151800004d5881e45 + +38666 +58750000000100000000000006776468303131066e7434616c6c026e6c0000010001 +58758000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +38667 +6f1e00000001000000000000066d616372617006746d66776562026e6c00000f0001 +6f1e80000001000000020000066d616372617006746d66776562026e6c00000f0001c01300020001000151800011056c656d6f6e0571696e6970036e657400c01300020001000151800007046c696d65c034 + +38668 +e497000000010000000000001270726f64756374696f6e706172746e657273026e6c00000f0001 +e497800000010000000300011270726f64756374696f6e706172746e657273026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc01fc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c051c033000100010001518000043efa0202 + +38669 +99d70000000100000000000003777777067477656e6f74026e6c0000010001 +99d78000000100000002000003777777067477656e6f74026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c031 + +38670 +43bb00000001000000000000026e73077374617272656e026e6c0000010001 +43bb80000001000000020002026e73077374617272656e026e6c0000010001c00f0002000100015180000c036e73310563736e6574c017c00f00020001000151800006036e7332c02fc02b00010001000151800004c2451012c04300010001000151800004c2451212 + +38671 +ce38000000010000000000000377777709636c75626d616e676f026e6c0000010001 +ce38800000010000000200020377777709636c75626d616e676f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +38672 +5324000000010000000000000661746b696e73046d796762026e6c0000010001 +5324800000010000000300020661746b696e73046d796762026e6c0000010001c0130002000100015180000d036e733106776964657873c018c01300020001000151800010036e733206776964657873036e657400c01300020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +38673 +369b000000010000000000000970726f6d6f74696d65026e6c00000f0001 +369b800000010000000300030970726f6d6f74696d65026e6c00000f0001c00c0002000100015180000a036e733103696467c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a0001000100015180000451af4646c0400001000100015180000451af4647c05200010001000151800004d5a0fde6 + +38674 +80cb00000001000000000000086172616d69736b6103696165026e6c0000010001 +80cb80000001000000020002086172616d69736b6103696165026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c019c01500020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +38675 +7d7600000001000000000000046f70656e096e6c6e65746c616273026e6c00001c0001 +7d7680000001000000030003046f70656e096e6c6e65746c616273026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000f056f6d76616c067465646e6574c01bc0110002000100015180000e06627572656175047369646ec01bc00c00010001000151800004d59ae001c03d00010001000151800004d59ae011c05800010001000151800004c1b090a2 + +38676 +24a300000001000000000000046f70656e096e6c6e65746c616273026e6c0000260001 +24a380000001000000030003046f70656e096e6c6e65746c616273026e6c0000260001c01100020001000151800002c00cc0110002000100015180000f056f6d76616c067465646e6574c01bc0110002000100015180000e06627572656175047369646ec01bc00c00010001000151800004d59ae001c03d00010001000151800004d59ae011c05800010001000151800004c1b090a2 + +38677 +1dbf0000000100000000000006627572656175047369646e026e6c00001c0001 +1dbf8000000100000002000206627572656175047369646e026e6c00001c0001c01300020001000151800002c00cc01300020001000151800011046f70656e096e6c6e65746c616273c018c00c00010001000151800004c1b090a2c03a00010001000151800004d59ae001 + +38678 +96270000000100000000000006627572656175047369646e026e6c0000260001 +96278000000100000002000206627572656175047369646e026e6c0000260001c01300020001000151800002c00cc01300020001000151800011046f70656e096e6c6e65746c616273c018c00c00010001000151800004c1b090a2c03a00010001000151800004d59ae001 + +38679 +742d00000001000000000000086261636f696e666f026e6c00000f0001 +742d80000001000000030001086261636f696e666f026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +38680 +aee800000001000000000000037777770a6467762d7475726e656e026e6c0000010001 +aee880000001000000030000037777770a6467762d7475726e656e026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c035c0100002000100015180000805646e733132c035 + +38681 +97720000000100000000000003777777046c657861026e6c0000010001 +97728000000100000003000203777777046c657861026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +38682 +7c5c0000000100000000000007746e6c6e7473340777616c646f6f72026e6c0000010001 +7c5c8000000100000002000207746e6c6e7473340777616c646f6f72026e6c0000010001c0140002000100015180000f026e7309656174736572766572c01cc01400020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +38683 +39400000000100000000000009776d62626568656572026e6c0000010001 +39408000000100000002000209776d62626568656572026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c016c00c00020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +38684 +839f0000000100000000000007646f6c66696a6e026e6c00000f0001 +839f8000000100000003000307646f6c66696a6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +38685 +5cc800000001000000000000076d61696c6d696a026e6c00000f0001 +5cc880000001000000020002076d61696c6d696a026e6c00000f0001c00c0002000100015180000b026e73057162616c6cc014c00c0002000100015180000f026e7309747269706c652d6974c014c02800010001000151800004d584b024c03f00010001000151800004d584b002 + +38686 +67df00100001000000000001026e7303626974026e6c00000100010000290800000000000000 +67df80000001000000030004026e7303626974026e6c0000010001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b0000291000000000000000 + +38687 +a5a800100001000000000001026e7303626974026e6c00002600010000290800000000000000 +a5a880000001000000030004026e7303626974026e6c0000260001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b0000291000000000000000 + +38688 +52d400100001000000000001036e733203626974026e6c00000100010000290800000000000000 +52d480000001000000030004036e733203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b0000291000000000000000 + +38689 +aa14000000010000000000000a73617373656e6865696d026e6c0000ff0001 +aa14800000010000000200020a73617373656e6865696d026e6c0000ff0001c00c0002000100015180000d03706e7306636f6d6c6f67c017c00c0002000100015180000603736e73c02fc02b00010001000151800004d5a0c803c04400010001000151800004d5a0c804 + +38690 +14da00100001000000000001036e733203626974026e6c00002600010000290800000000000000 +14da80000001000000030004036e733203626974026e6c0000260001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b0000291000000000000000 + +38691 +0a6d00000001000000000000026e7303626974026e6c0000010001 +0a6d80000001000000030003026e7303626974026e6c0000010001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b + +38692 +02e000000001000000000000026e7303626974026e6c0000260001 +02e080000001000000030003026e7303626974026e6c0000260001c00f0002000100015180000a076e736175746831c00fc00f0002000100015180000a076e736175746832c00fc00f0002000100015180000a076e736175746833c00fc02700010001000151800004d5880c33c03d00010001000151800004d5880c3bc05300010001000151800004d4ccc00b + +38693 +c09d00000001000000000000036e733203626974026e6c0000010001 +c09d80000001000000030003036e733203626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +38694 +786f00000001000000000000036e733203626974026e6c0000260001 +786f80000001000000030003036e733203626974026e6c0000260001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +38695 +36e6000000010000000000000377777705766f6c766f026e6c0000010001 +36e6800000010000000200020377777705766f6c766f026e6c0000010001c0100002000100015180000e036e733107616e7461726573c016c01000020001000151800006036e7332c02ec02a000100010001518000043e3a260bc044000100010001518000043e3a260c + +38696 +04aa00000001000000000000036e73330a6f70656e2d646f6f7273026e6c0000010001 +04aa80000001000000020002036e73330a6f70656e2d646f6f7273026e6c0000010001c01000020001000151800006036e7335c010c01000020001000151800006036e7336c010c02f000100010001518000045117e85ac041000100010001518000045117e85b + +38697 +e23700000001000000000000036e73340a6f70656e2d646f6f7273026e6c0000010001 +e23780000001000000020002036e73340a6f70656e2d646f6f7273026e6c0000010001c01000020001000151800006036e7335c010c01000020001000151800006036e7336c010c02f000100010001518000045117e85ac041000100010001518000045117e85b + +38698 +52da0000000100000000000005646e732d31056c61646f74026e6c0000010001 +52da8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38699 +deed0000000100000000000005646e732d32056c61646f74026e6c0000010001 +deed8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38700 +aa28000000010000000000000377777709736b69646972656374026e6c0000010001 +aa28800000010000000200000377777709736b69646972656374026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec035 + +38701 +4091000000010000000000000874656c65776f7278026e6c00000f0001 +4091800000010000000200000874656c65776f7278026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02d + +38702 +89f200000001000000000000036e7332046372696f026e6c0000010001 +89f280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +38703 +661d000000010000000000000377777708686f746c696e6b73026e6c0000010001 +661d800000010000000200000377777708686f746c696e6b73026e6c0000010001c0100002000100015180000b036e7331046372696fc019c01000020001000151800006036e7332c031 + +38704 +42e900000001000000000000066d696e646564026e6c00000f0001 +42e980000001000000030003066d696e646564026e6c00000f0001c00c00020001000151800011036e73310a74727565736572766572c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc02700010001000151800004d5ef8003c04400010001000151800004d5efb004c05600010001000151800004d5ef8005 + +38705 +6cb90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +6cb98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38706 +01910000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +01918000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38707 +af3c0000000100000000000003777777066a757269616e026e6c0000010001 +af3c8000000100000002000003777777066a757269616e026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02f + +38708 +0c220000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0c228000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38709 +37ce0000000100000000000009652d6c756e61746963026e6c0000010001 +37ce8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38710 +2f6000000001000000000000036e73310b7669616e6574776f726b73026e6c0000010001 +2f6080000001000000020002036e73310b7669616e6574776f726b73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +38711 +97b000000001000000000000036e73320b7669616e6574776f726b73026e6c0000010001 +97b080000001000000020002036e73320b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +38712 +c1c500000001000000000000026763065f6d7364637306646d616d3031026e6c0000060001 +c1c584030001000000010000026763065f6d7364637306646d616d3031026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +38713 +863a000000010000000000000b627275696e2d656e2d636f026e6c0000010001 +863a800000010000000200000b627275696e2d656e2d636f026e6c0000010001c00c00020001000151800014036e73310a63616c69666f726e6961036e657400c00c00020001000151800010036e7331066f616b77656203636f6d00 + +38714 +5ece0000000100000000000006787334616c6c026e6c00001c0001 +5ece8000000100000003000206787334616c6c026e6c00001c0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +38715 +194f00000001000000000000037777770f70636d7374617469737469656b656e026e6c0000010001 +194f80000001000000020002037777770f70636d7374617469737469656b656e026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c020c01000020001000151800006036e7332c037c03400010001000151800004d9aa2042c04d00010001000151800004d9aa2c06 + +38716 +264e000000010000000000000575726975730473656d61026e6c0000010001 +264e800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +38717 +a09100000001000000000000037777770b73672d706172746e657273026e6c0000010001 +a09180000001000000020002037777770b73672d706172746e657273026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +38718 +0db928000001000100010000026e6c0000060001055f6c646170045f746370026463065f6d736463730a32303030736572766572026e6c00000500fe000000000000c014002100010000025800230000006401850d57494e323030305345525645520a32303030736572766572026e6c00 +0db9a8040000000000000000 + +38719 +36100000000100000000000004636e6f63026e6c00000f0001 +36108000000100000002000004636e6f63026e6c00000f0001c00c000200010001518000140161026e73096c696e766973696f6e03636f6d00c00c000200010001518000040162c027 + +38720 +041e00000001000000000000036e73340767617574656e67026e6c0000010001 +041e80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38721 +042400000001000000000000036e73330767617574656e67026e6c0000010001 +042480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38722 +342e00000001000000000000036e73330767617574656e67026e6c0000010001 +342e80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38723 +90390000000100000000000004696e666f086263656e7472616c026e6c00001c0001 +90398000000100000002000004696e666f086263656e7472616c026e6c00001c0001c0110002000100015180001204646e73310763616c616e7a61036e657400c0110002000100015180000704646e7332c033 + +38724 +49cc00000001000000000000087265696a6c696e67026e6c00000f0001 +49cc80000001000000020002087265696a6c696e67026e6c00000f0001c00c00020001000151800016026e730261310d61616161612d686f7374696e67c015c00c00020001000151800006036e7332c02cc02900010001000151800004c30be7e1c04b00010001000151800004c30be7e2 + +38725 +27b60000000100000000000009652d6c756e61746963026e6c0000010001 +27b68000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38726 +38200000000100000000000009652d6c756e61746963026e6c0000010001 +38208000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +38727 +92c20000000100000000000004646e733109696e7465726f757465026e6c00001c0001 +92c28000000100000002000204646e733109696e7465726f757465026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4173f3ec03d00010001000151800004d4173f3d + +38728 +22500000000100000000000004646e733109696e7465726f757465026e6c0000260001 +22508000000100000002000204646e733109696e7465726f757465026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4173f3ec03d00010001000151800004d4173f3d + +38729 +ed600000000100000000000004646e733209696e7465726f757465026e6c00001c0001 +ed608000000100000002000204646e733209696e7465726f757465026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02f00010001000151800004d4173f3ec00c00010001000151800004d4173f3d + +38730 +9e8f000000010000000000000c62632d6164766f636174656e026e6c00000f0001 +9e8f800000010000000200010c62632d6164766f636174656e026e6c00000f0001c00c0002000100015180000a036e733303777873c019c00c00020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +38731 +f3490000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +f3498000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +38732 +d8790000000100000000000008747269617669756d026e6c00000f0001 +d8798000000100000002000008747269617669756d026e6c00000f0001c00c0002000100015180000c036e723705692d702d64c015c00c00020001000151800006036e7236c02d + +38733 +81bf000000010000000000000661646463303102616403687675026e6c0000010001 +81bf800000010000000300030661646463303102616403687675026e6c0000010001c0160002000100015180000906776174736f6ec016c0160002000100015180000e036e733107737572666e6574c01ac01600020001000151800006036e7332c016c02e0001000100015180000491592603c04300010001000151800004c0576a65c05d0001000100015180000491595303 + +38734 +d8cf000000010000000000000661646463303202616403687675026e6c0000010001 +d8cf800000010000000300030661646463303202616403687675026e6c0000010001c0160002000100015180000906776174736f6ec016c0160002000100015180000e036e733107737572666e6574c01ac01600020001000151800006036e7332c016c02e0001000100015180000491592603c04300010001000151800004c0576a65c05d0001000100015180000491595303 + +38735 +0000000070024000f20a0000020405b401010402 +000080010000000000000000 + +38736 +746600000001000000000000036d7069026e6c00000f0001 +746680000001000000020002036d7069026e6c00000f0001c00c000200010001518000080573756e3032c00cc00c00020001000151800006036e7332c00cc02400010001000151800004c0574f3ec03800010001000151800004c0574f37 + +38737 +674a00000001000000000000037777770b636c75622d726163696e67026e6c0000010001 +674a80000001000000030000037777770b636c75622d726163696e67026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c038c0100002000100015180000a076e73686f737433c038 + +38738 +b7b8ebb55010447076e00000000000000000 + + +38739 +1f37000000010000000000000377777703696272026e6c0000010001 +1f37800000010000000200020377777703696272026e6c0000010001c0100002000100015180000b026e7305706c616e74c014c01000020001000151800006036e7332c02bc02800010001000151800004d59f0037c03f00010001000151800004d59f0046 + +38740 +65ef28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d73646373086e6b6f6572696572026e6c000021000100000258001a00000064018506736572766572086e6b6f6572696572026e6c00 +65efa8040000000000000000 + +38741 +d75a00000001000000000000036e73310d78786c776562686f7374696e67026e6c0000010001 +d75a80000001000000020002036e73310d78786c776562686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104580ac040000100010001518000045104601e + +38742 +7faa00000001000000000000036e73320d78786c776562686f7374696e67026e6c0000010001 +7faa80000001000000020002036e73320d78786c776562686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104580ac00c000100010001518000045104601e + +38743 +e2e40000000100000000000007782d6571756973026e6c00001c0001 +e2e48000000100000002000207782d6571756973026e6c00001c0001c00c00020001000151800014036e73310d78786c776562686f7374696e67c014c00c00020001000151800006036e7332c02cc028000100010001518000045104580ac048000100010001518000045104601e + +38744 +b7b8ebb550184470510a00000096c39e000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005a03677373096d6963726f736f667403636f6d003707bbc937090d490003000000374e544c4d535350000100000097b200c00a000a002d0000000d000d002000000057494e32303030534552564552323030305345525645520000 + + +38745 +a92300000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +a92380000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +38746 +c0d70000000100000000000005646e732d31056c61646f74026e6c0000010001 +c0d78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38747 +714e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +714e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38748 +e5bd0000000100000000000003777777036e7263026e6c0000010001 +e5bd8000000100000003000203777777036e7263026e6c0000010001c01000020001000151800015036e73310b70696e6b726f6363616465036e657400c0100002000100015180000e026e73086d656761706c6578c014c01000020001000151800006036e7331c04cc04900010001000151800004504f6101c06300010001000151800004504f6102 + +38749 +2feb00000001000000000000037777770b6265616368766f6c6c6579026e6c0000010001 +2feb80000001000000020002037777770b6265616368766f6c6c6579026e6c0000010001c0100002000100015180000c026e73067574722d6978c01cc01000020001000151800006036e7332c033c0300001000100015180000451113206c04800010001000151800004d5c42806 + +38750 +d10a000000010000000000000d5352524443303132444d5a303303726463026e6c0000260001 +d10a800000010000000200020d5352524443303132444d5a303303726463026e6c0000260001c01a000200010001518000100d7372726463303134646d7a3034c01ac01a00020001000151800002c00cc03200010001000151800004d973e064c00c00010001000151800004d973e054 + +38751 +b3e3000000010000000000000d5352524443303132444d5a303303726463026e6c00001c0001 +b3e3800000010000000200020d5352524443303132444d5a303303726463026e6c00001c0001c01a000200010001518000100d7372726463303134646d7a3034c01ac01a00020001000151800002c00cc03200010001000151800004d973e064c00c00010001000151800004d973e054 + +38752 +2b70000000010000000000000d5352524443303134444d5a303403726463026e6c0000260001 +2b70800000010000000200020d5352524443303134444d5a303403726463026e6c0000260001c01a00020001000151800002c00cc01a000200010001518000100d7372726463303132646d7a3033c01ac00c00010001000151800004d973e064c04000010001000151800004d973e054 + +38753 +5fd5000000010000000000000d5352524443303134444d5a303403726463026e6c00001c0001 +5fd5800000010000000200020d5352524443303134444d5a303403726463026e6c00001c0001c01a00020001000151800002c00cc01a000200010001518000100d7372726463303132646d7a3033c01ac00c00010001000151800004d973e064c04000010001000151800004d973e054 + +38754 +db630000000100000000000006696e6f74657306736178696f6e026e6c0000010001 +db638000000100000003000306696e6f74657306736178696f6e026e6c0000010001c013000200010001518000110a6a75666665726265656b0368656ec01ac0130002000100015180000e036e733107737572666e6574c01ac0130002000100015180000b036e7332046873696ac01ac02e00010001000151800004914c0248c04b00010001000151800004c0576a65c065000100010001518000049102d715 + +38755 +31e000000001000000000000095f6b65726265726f73045f7564700f7269732d626172656e647265636874026e6c0000060001 +31e084030001000000010000095f6b65726265726f73045f7564700f7269732d626172656e647265636874026e6c0000060001c02b00060001000038400036026e730f646f6d61696e2d7265676973747279c02b0a686f73746d6173746572c0420bf1e540000070800000384000278d0000003840 + +38756 +1b560000000100000000000006656d61696c73026e6c0000010001 +1b568000000100000003000006656d61696c73026e6c0000010001c00c0002000100015180000e036e73300477697368036e657400c00c00020001000151800006036e7331c02bc00c00020001000151800006036e7332c02b + +38757 +b7b8ebc35011446276470000000000000000 + + +38758 +5b9f0000000100000000000008686f73746e616d650462696e640000100003 +5b9f8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +38759 +35eb0000000100000000000008686f73746e616d650462696e640000100003 +35eb8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +38760 +000000007002400081a30000020405b401010402 +000080010000000000000000 + +38761 +00000000700222386dc500000204057801010402 +000080010000000000000000 + +38762 +8ef20000000100000000000004474154450345504f026e6c0000010001 +8ef28000000100000002000104474154450345504f026e6c0000010001c01100020001000151800002c00cc0110002000100015180000b026e73026e6c036e657400c00c0001000100015180000491408003 + +38763 +cd4200000001000000000000087564656e686f7574026e6c00000f0001 +cd4280000001000000020000087564656e686f7574026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02d + +38764 +13630000000100000000000005646e732d31056c61646f74026e6c0000010001 +13638000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38765 +a3230000000100000000000005646e732d32056c61646f74026e6c0000010001 +a3238000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38766 +7cae000000010000000000000c6b76776d616b656c61617273026e6c00000f0001 +7cae800000010000000200000c6b76776d616b656c61617273026e6c00000f0001c00c0002000100015180000f026e7306636170696361036e657400c00c00020001000151800006036e7332c030 + +38767 +11ed00000001000000000000085f6b706173737764045f7463700f7269732d626172656e647265636874026e6c0000060001 +11ed84030001000000010000085f6b706173737764045f7463700f7269732d626172656e647265636874026e6c0000060001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +38768 +0e350000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0e358000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38769 +f6140000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f6148000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38770 +35c10000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +35c18000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38771 +14cd000000010000000000000377777708706f737462616e6b026e6c0000010001 +14cd800000010000000200020377777708706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +38772 +cc7400000001000000000000096d6573736167696e67086c616e67686f7574026e6c00000f0001 +cc7480000001000000020000096d6573736167696e67086c616e67686f7574026e6c00000f0001c01600020001000151800013036e733109752d73657276657273036e657400c01600020001000151800006036e7332c037 + +38773 +b7bc37fc50102648a6740000000000000000 +b7bcb7f40000000000000000 + +38774 +c85b000000010000000000000a647664666f6c6965733108696e74726f776562026e6c0000010001 +c85b800000010000000200020a647664666f6c6965733108696e74726f776562026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c0340001000100015180000450416028c04600010001000151800004c356780c + +38775 +33fe00000001000000000000037777770962736d64656a6f6e67026e6c0000010001 +33fe80000001000000020001037777770962736d64656a6f6e67026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +38776 +b7bc37fc50182648d4fd0000008dc800000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcc3403c4e4300030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 +b7bcb7f40000000000000000 + +38777 +e52f0000000100000000000003757776026e6c00000f0001 +e52f8000000100000002000203757776026e6c00000f0001c00c0002000100015180000906646e73657874c00cc00c0002000100015180000b08757776646e733032c00cc024000100010001518000043e3a2405c039000100010001518000043e3a2406 + +38778 +387c000000010000000000000976616e626f656b656c026e6c00000f0001 +387c800000010000000200020976616e626f656b656c026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c016c00c00020001000151800006036e7332c02dc02a00010001000151800004d453c005c04800010001000151800004d453c006 + +38779 +29f000000001000000000000085f6b706173737764045f7564700f7269732d626172656e647265636874026e6c0000060001 +29f084030001000000010000085f6b706173737764045f7564700f7269732d626172656e647265636874026e6c0000060001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +38780 +f1f000000001000000000000037777771063617269626265616e636f6d666f7274026e6c0000010001 +f1f080000001000000020000037777771063617269626265616e636f6d666f7274026e6c0000010001c01000020001000151800011036e73310a6d61696e736572766572c021c01000020001000151800006036e7332c039 + +38781 +833f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +833f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38782 +a5580000000100000000000005646e732d32056c61646f74026e6c0000010001 +a5588000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +38783 +fbc500000001000000000000037777770962697a617273697465026e6c0000010001 +fbc580000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +38784 +b7bc380a5011263aa5e40000000000000000 +b7bcb8040000000000000000 + +38785 +0000000070022238873c00000204057801010402 +000080010000000000000000 + +38786 +25cc000000010000000000000644454d41414e024e4c00000f0001 +25cc800000010000000200020644454d41414e024e4c00000f0001c00c0002000100015180000c026e73067574722d6978c013c00c00020001000151800006036e7332c02ac0270001000100015180000451113206c03f00010001000151800004d5c42806 + +38787 +01fb00000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001 +01fb84030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001c04600060001000038400036026e730f646f6d61696e2d7265676973747279c0460a686f73746d6173746572c05d0bf1e540000070800000384000278d0000003840 + +38788 +b7b8ebc45010446276460000000000000000 + + +38789 +b7bb91ca5010447060610000000000000000 + + +38790 +b7bb91ca501844700c3000000096f2fa000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d003707bbc937090d490003000000374e544c4d535350000100000097b200c00a000a002d0000000d000d002000000057494e32303030534552564552323030305345525645520000 + + +38791 +f13b00000001000000000000095f6b65726265726f73045f756470086d6f6e73696e6169026e6c0000060001 +f13b84030001000000010000095f6b65726265726f73045f756470086d6f6e73696e6169026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +38792 +b7bc380b5010263aa5e30000000000000000 +b7bcb8040000000000000000 + +38793 +e31300000001000000000000037777770c6578706c6f69746174696f6e026e6c0000010001 +e31380000001000000030002037777770c6578706c6f69746174696f6e026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +38794 +0da9000000010000000000000377777706676172616d69026e6c0000010001 +0da9800000010000000300000377777706676172616d69026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c033c0100002000100015180000a076e73686f737433c033 + +38795 +b7bcf5915010264802560000000000000000 + + +38796 +28b0000000010000000000000377777708686f676562727567026e6c0000010001 +28b0800000010000000200010377777708686f676562727567026e6c0000010001c01000020001000151800013026e730d62616c6c6173742d6e6564616dc019c01000020001000151800013036e7332026e6c0669676e697465036e657400c02d000100010001518000043eadcea1 + +38797 +57a900000001000000000000046d61696c06636861726973026e6c0000010001 +57a980000001000000020000046d61696c06636861726973026e6c0000010001c0110002000100015180000c026e7306766576696461c018c01100020001000151800006036e7332c02f + +38798 +03100000000100000000000007534552564552310e736c75697465722d64616e6e6572026e6c0000010001 +03108000000100000002000007534552564552310e736c75697465722d64616e6e6572026e6c0000010001c0140002000100015180000e036e73320464797873036e657400c01400020001000151800006036e7331c03b + +38799 +220000000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730f7269732d626172656e647265636874026e6c0000060001 +220084030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d736463730f7269732d626172656e647265636874026e6c0000060001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +38800 +b7bcf5915018264891e00000008d6800000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcc3403c4e4300030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +38801 +4d7a00000001000000000000037777770a62696f736167656e6461026e6c0000010001 +4d7a80000001000000020002037777770a62696f736167656e6461026e6c0000010001c0100002000100015180000a036e7331036e7873c01bc01000020001000151800006036e7332c033c02f00010001000151800004d973c015c04500010001000151800004d973c102 + +38802 +b7bcf59f5011263a01c60000000000000000 + + +38803 +320c00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f7269732d626172656e647265636874026e6c0000060001 +320c84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f7269732d626172656e647265636874026e6c0000060001c05400060001000038400036026e730f646f6d61696e2d7265676973747279c0540a686f73746d6173746572c06b0bf1e540000070800000384000278d0000003840 + +38804 +0000000070022238650600000204057801010402 +000080010000000000000000 + +38805 +ef9600000001000000000000037777770b6131626f756c6576617264026e6c0000010001 +ef9680000001000000030002037777770b6131626f756c6576617264026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +38806 +5c870000000100000000000003777777096861746962616b6f69026e6c0000010001 +5c878000000100000002000003777777096861746962616b6f69026e6c0000010001c0100002000100015180000f036e7331053132337873036e657400c01000020001000151800006036e7336c032 + +38807 +0ab90000000100000000000006636861726973026e6c00000f0001 +0ab98000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +38808 +b7bcf5a05010263a01c50000000000000000 + + +38809 +fc66000000010000000000001c61727473656e63656e7472756d766f6f72686f6d656f706174686965026e6c00000f0001 +fc66800000010000000200011c61727473656e63656e7472756d766f6f72686f6d656f706174686965026e6c00000f0001c00c0002000100015180000a036e733303777873c029c00c00020001000151800006036e7334c041c05300010001000151800004d5ef9a65 + +38810 +b7bd858150102648502f0000000000000000 + + +38811 +321400000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f7269732d626172656e647265636874026e6c0000060001 +321484030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730f7269732d626172656e647265636874026e6c0000060001c05000060001000038400036026e730f646f6d61696e2d7265676973747279c0500a686f73746d6173746572c0670bf1e540000070800000384000278d0000003840 + +38812 +826228000001000000010000026e6c0000060001095f6b65726265726f73045f756470086d6f6e73696e6169026e6c000021000100000258001f0000006400580b7362736d6f6e73696e6169086d6f6e73696e6169026e6c00 +8262a8040000000000000000 + +38813 +a2280000000100000000000003777777087370656b6b656c73026e6c0000010001 +a2288000000100000002000203777777087370656b6b656c73026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d994ae77c04b000100010001518000045054ea06 + +38814 +b7bd8581501826483fba0000008d0800000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcc3403c4e4300030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +38815 +8a1a00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +8a1a80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38816 +9be200000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +9be280000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38817 +4eaa000000010000000000000b676966706c6161746a6573026e6c0000010001 +4eaa800000010000000200000b676966706c6161746a6573026e6c0000010001c00c00020001000151800013036e73310c616374697665646f6d61696ec018c00c00020001000151800006036e7332c030 + +38818 +ea5200000001000000000000026763065f6d7364637306646f6d61696e026e6c0000060001 +ea5284030001000000010000026763065f6d7364637306646f6d61696e026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +38819 +9bb0000000010000000000000562696e636b026e6c00000f0001 +9bb0800000010000000200020562696e636b026e6c00000f0001c00c0002000100015180000b036e73310470696e65c012c00c00020001000151800006036e7332c02ac02600010001000151800004d59c0201c03d00010001000151800004c3c1a303 + +38820 +3a600000000100000000000003777777046c696e71026e6c0000010001 +3a608000000100000002000203777777046c696e71026e6c0000010001c01000020001000151800012036e73310b737461727464657369676ec015c01000020001000151800006036e7332c02dc02900010001000151800004d5f73823c047000100010001518000043ed45149 + +38821 +2c25000000010000000000000331373202323101310131026e6c0000010001 +2c25840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +38822 +9553000000010000000000000b676966706c6161746a6573026e6c0000010001 +9553800000010000000200000b676966706c6161746a6573026e6c0000010001c00c00020001000151800013036e73310c616374697665646f6d61696ec018c00c00020001000151800006036e7332c030 + +38823 +221b00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001 +221b84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001c04a00060001000038400036026e730f646f6d61696e2d7265676973747279c04a0a686f73746d6173746572c0610bf1e540000070800000384000278d0000003840 + +38824 +21990000000100000000000008706172616469736f026e6c00000f0001 +21998000000100000002000208706172616469736f026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +38825 +ee80000000010000000000000763616c69626572026e6c00000f0001 +ee80800000010000000200000763616c69626572026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +38826 +d20700000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +d20780000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38827 +763e00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +763e80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +38828 +b7bd858f5011263a4f9f0000000000000000 + + +38829 +00000000700240001a7a00000204056401010402 +000080010000000000000000 + +38830 +d7c00000000100000000000004617270610477656233026e6c0000010001 +d7c08000000100000002000204617270610477656233026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02a00010001000151800004d436240ec03c00010001000151800004c2b262ef + +38831 +35bd0000000100000000000004617270610477656233026e6c0000260001 +35bd8000000100000002000204617270610477656233026e6c0000260001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02a00010001000151800004d436240ec03c00010001000151800004c2b262ef + +38832 +4eb80000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eb88403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +38833 +b7bd85905010263a4f9e0000000000000000 + + +38834 +322000000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001 +322084030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730f7269732d626172656e647265636874026e6c0000060001c04400060001000038400036026e730f646f6d61696e2d7265676973747279c0440a686f73746d6173746572c05b0bf1e540000070800000384000278d0000003840 + +38835 +6872000000010000000000000377777709707a7369676e61616c026e6c0000010001 +6872800000010000000200020377777709707a7369676e61616c026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01ac01000020001000151800006036e7332c031c02e00010001000151800004d453c005c04c00010001000151800004d453c006 + +38836 +abec00000001000000000000037777770e626f726465617578646f6767656e026e6c0000010001 +abec80000001000000020000037777770e626f726465617578646f6767656e026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01fc0100002000100015180000805646e732d32c039 + +38837 +62da000000010000000000000377777708706f737462616e6b026e6c0000010001 +62da800000010000000200020377777708706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +38838 +b7bb91d8501144625fc80000000000000000 + + +38839 +d607000000010000000000000b6d61696c72656c6179303704636d7367026e6c0000010001 +d607800000010000000200010b6d61696c72656c6179303704636d7367026e6c0000010001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +38840 +8ad7000000010000000000000b6d61696c72656c6179303704636d7367026e6c00001c0001 +8ad7800000010000000200010b6d61696c72656c6179303704636d7367026e6c00001c0001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +38841 +00000000700240007ebd0000020405b401010402 +000080010000000000000000 + +38842 +b7be6078501040b02df70000000000000000 +b7bee0740000000000000000 + +38843 +7f4a000000010000000000000b6d61696c72656c6179303704636d7367026e6c0000010001 +7f4a800000010000000200010b6d61696c72656c6179303704636d7367026e6c0000010001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +38844 +896a00000001000000000000036e7331066d696e646566026e6c0000010001 +896a80000001000000020002036e7331066d696e646566026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9a9e7c6c03900010001000151800004d9a9e7c5 + +38845 +44b500000001000000000000036e7332066d696e646566026e6c0000010001 +44b580000001000000020002036e7332066d696e646566026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d9a9e7c6c00c00010001000151800004d9a9e7c5 + +38846 +b7be6078501840b0aa3800000092fb2e000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afbc4403c4d440003000000334e544c4d535350000100000097b200e0080008002b0000000b000b00200000005342534d4f4e53494e41494d4f4e53494e41490000 +b7bee0740000000000000000 + +38847 +e371000000010000000000000673616d736f6d026e6c0000010001 +e371800000010000000200000673616d736f6d026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02b + +38848 +a2fd00000001000000000000036e7331056132303030026e6c0000010001 +a2fd80000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +38849 +b7be6086501140a22d620000000000000000 +b7bee0840000000000000000 + +38850 +0000000070024000ced900000204056401010402 +000080010000000000000000 + +38851 +fb5000000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +fb5080000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +38852 +965300000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +965380000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +38853 +e94c00000001000000000000026e73076e656473746174026e6c0000010001 +e94c80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38854 +e94d00000001000000000000036e7333076e656473746174026e6c0000010001 +e94d80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38855 +b7be6087501040a22d610000000000000000 +b7bee0840000000000000000 + +38856 +c0b500000001000000000000037777770b636572746f616476696573026e6c0000010001 +c0b580000001000000020001037777770b636572746f616476696573026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01cc01000020001000151800006036e7334c034c03000010001000151800004d5c401c0 + +38857 +4eba0000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4eba8403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +38858 +865c0000000100000000000006636f62616c740b666f782d686f7374696e67026e6c0000010001 +865c8000000100000002000206636f62616c740b666f782d686f7374696e67026e6c0000010001c01300020001000151800007046e732d31c013c01300020001000151800007046e732d32c013c03300010001000151800004d5bd1374c04600010001000151800004d5bd1675 + +38859 +1a0c000000010000000000000a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001 +1a0c800000010000000200020a7265736f6c7574696f6e0b666f782d686f7374696e67026e6c0000010001c01700020001000151800007046e732d31c017c01700020001000151800007046e732d32c017c03700010001000151800004d5bd1374c04a00010001000151800004d5bd1675 + +38860 +b7bf9d98501040b0a5350000000000000000 + + +38861 +b7bf9d98501840b0870a00000092969c000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afbc4403c4d440003000000334e544c4d535350000100000097b200e0080008002b0000000b000b00200000005342534d4f4e53494e41494d4f4e53494e41490000 + + +38862 +6f2800000001000000000000036e7331097472616e7361766961026e6c0000010001 +6f2880000001000000020001036e7331097472616e7361766961026e6c0000010001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c23586f1 + +38863 +8314000000010000000000000462617261026e6c0000010001 +8314800000010000000200020462617261026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +38864 +dda00000000100000000000003777777067874616c6973026e6c0000010001 +dda08000000100000002000003777777067874616c6973026e6c0000010001c01000020001000151800018036e73370e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7338c02f + +38865 +4a060000000100000000000006687062696d67056e2d742d64026e6c0000010001 +4a068000000100000003000006687062696d67056e2d742d64026e6c0000010001c01300020001000151800017076e73686f73743103737432056c79636575036e657400c0130002000100015180000a076e73686f737432c035c0130002000100015180000a076e73686f737433c035 + +38866 +a503000000010000000000000d53796e636572612d4c6567616c024e4c00000f0001 +a503800000010000000200020d53796e636572612d4c6567616c024e4c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +38867 +cf2a0000000100000000000005762d6b616d026e6c0000010001 +cf2a8000000100000003000305762d6b616d026e6c0000010001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec012c00c00020001000151800006036e7331c02fc00c00020001000151800006036e7332c02fc02600010001000151800004d42d2005c04400010001000151800004d42d2003c05600010001000151800004d42d2103 + +38868 +3ced00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3ced80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +38869 +3cee00000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3cee80000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +38870 +b7bf9da6501140a2a4a00000000000000000 + + +38871 +0000000070024000319000000204056401010402 +000080010000000000000000 + +38872 +f48c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f48c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +38873 +d6820000000100000000000009627668737276303031106276682d636f6d6d756e696361746965026e6c0000010001 +d6828000000100000002000009627668737276303031106276682d636f6d6d756e696361746965026e6c0000010001c0160002000100015180000e036e73310464646e68036e657400c01600020001000151800006036e7332c03f + +38874 +140300000001000000000000036e73330471776562026e6c0000010001 +140380000001000000020002036e73330471776562026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02900010001000151800004d994ac0cc03c00010001000151800004d5c42f6c + +38875 +d8a600000001000000000000036e73350471776562026e6c0000010001 +d8a680000001000000020002036e73350471776562026e6c0000010001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02900010001000151800004d994ac0cc03c00010001000151800004d5c42f6c + +38876 +d3380000000100000000000003777777056572696b73026e6c0000010001 +d3388000000100000002000003777777056572696b73026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c016c0100002000100015180000704686e7331c02f + +38877 +b7bf9da7501040a2a49f0000000000000000 + + +38878 +667300000001000000000000037777770d77617465726b616d70696f656e026e6c0000010001 +667380000001000000020000037777770d77617465726b616d70696f656e026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec039 + +38879 +b7bb91d9501044625fc70000000000000000 + + +38880 +b7bf057450104470e9cd0000000000000000 +b7bf80010000000000000000 + +38881 +ec5300000001000000000000036e73350471776562026e6c0000260001 +ec5380000001000000020002036e73350471776562026e6c0000260001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02900010001000151800004d994ac0cc03c00010001000151800004d5c42f6c + +38882 +a73300000001000000000000036e73330471776562026e6c0000260001 +a73380000001000000020002036e73330471776562026e6c0000260001c0100002000100015180000704646e7331c010c0100002000100015180000704646e7332c010c02900010001000151800004d994ac0cc03c00010001000151800004d5c42f6c + +38883 +b7bf057450184470c0c800000096c7ce000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005a03677373096d6963726f736f667403636f6d003707bbc937090d490003000000374e544c4d535350000100000097b200c00a000a002d0000000d000d002000000057494e32303030534552564552323030305345525645520000 +b7bf80010000000000000000 + +38884 +b7c1a905501040b0fc7c0000000000000000 + + +38885 +ef320000000100000000000003777777097574696c6974696573026e6c0000010001 +ef328000000100000002000003777777097574696c6974696573026e6c0000010001c0100002000100015180000e026e73056e65647873036e657400c01000020001000151800006036e7332c031 + +38886 +dd89000000010000000000000c776f6c746572656e64726f73026e6c0000ff0001 +dd89800000010000000300030c776f6c746572656e64726f73026e6c0000ff0001c00c0002000100015180000f036e7331086e6f766178657373c019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d00010001000151800004d5c98015c04800010001000151800004d5c9bf12c05a00010001000151800004d5ef9c26 + +38887 +785000000001000000000000086469726b6b757974026e6c0000010001 +785080000001000000020000086469726b6b757974026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +38888 +b7c1a905501840b0a16400000092d389000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afbc4403c4d440003000000334e544c4d535350000100000097b200e0080008002b0000000b000b00200000005342534d4f4e53494e41494d4f4e53494e41490000 + + +38889 +b75a000000010000000000000b68616567686567726f6570026e6c0000010001 +b75a800000010000000200010b68616567686567726f6570026e6c0000010001c00c0002000100015180000e036e7331076e6564636f6d70c018c00c00020001000151800011036e7332076e6564636f6d70036f726700c02c00010001000151800004c3c1a80d + +38890 +e996000000010000000000000b616461736f667477617265026e6c0000010001 +e996800000010000000200020b616461736f667477617265026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +38891 +3bd600000001000000000000037777770c74726164652d6f6e6c696e65026e6c0000010001 +3bd680000001000000020002037777770c74726164652d6f6e6c696e65026e6c0000010001c0100002000100015180000f0472617131076e657474756e65c01dc01000020001000151800006036e7332c036c03100010001000151800004d4ccf78dc04c00010001000151800004d4ccf78e + +38892 +2d6300000001000000000000096265726e6172647573026e6c00000f0001 +2d6380000001000000020000096265726e6172647573026e6c00000f0001c00c0002000100015180000c026e7306766576696461c016c00c00020001000151800006036e7332c02d + +38893 +bf0e00000001000000000000036e733007656173796e6574026e6c0000010001 +bf0e80000001000000020002036e733007656173796e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c2a55e01c03a00010001000151800004c2a55e05 + +38894 +00fd00000001000000000000036e733107656173796e6574026e6c0000010001 +00fd80000001000000020002036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e05 + +38895 +08f900000001000000000000036e7331056132303030026e6c0000010001 +08f980000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +38896 +08fa00000001000000000000036e7332056132303030026e6c0000010001 +08fa80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +38897 +76e9000000010000000000000b64656c74616d6172696e65026e6c00000f0001 +76e9840300010000000100000b64656c74616d6172696e65026e6c00000f0001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +38898 +b7c1a913501140a2fbe70000000000000000 + + +38899 +34280000000100000000000006706565776565026e6c00000f0001 +34288000000100000002000006706565776565026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02d + +38900 +eb6b000000010000000000000377777703786174026e6c0000010001 +eb6b800000010000000200020377777703786174026e6c0000010001c0100002000100015180000d026e7307686f72697a6f6ec014c01000020001000151800006036e7332c02bc02800010001000151800004d5c51803c04100010001000151800004d5c51805 + +38901 +b7c1a914501040a2fbe60000000000000000 + + +38902 +97b0000000010000000000000a7777772c6f7639323932026e6c0000010001 +97b0840300010000000100000a7777772c6f7639323932026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +38903 +2e0600000001000000000000037777770962697a617273697465026e6c0000010001 +2e0680000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +38904 +b7bf058250114462e9340000000000000000 +b7bf80010000000000000000 + +38905 +77520000000100000000000008656e736368656465026e6c00001c0001 +77528000000100000002000208656e736368656465026e6c00001c0001c00c0002000100015180000c036e7331057669727475c015c00c00020001000151800006036e7332c02dc02900010001000151800004d9726102c04100010001000151800004d58141c4 + +38906 +1b38000000010000000000000462617261026e6c00000f0001 +1b38800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +38907 +898c0000000100000000000003706f700462617274026e6c0000010001 +898c8000000100000002000203706f700462617274026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c015c01000020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +38908 +090300000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000010001 +090380000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +38909 +ca5a00000001000000000000036e733503777873026e6c0000010001 +ca5a80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +38910 +12290000000100000000000003777777036d736e026e6c0000010001 +12298000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +38911 +152600000001000000000000037777770b766f657462616c7a6f6e65026e6c0000010001 +152680000001000000030003037777770b766f657462616c7a6f6e65026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c01cc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c0300001000100015180000450474002c04e0001000100015180000450474102c06000010001000151800004d943ee57 + +38912 +b7bf058350104462e9330000000000000000 +b7bf80010000000000000000 + +38913 +4f210000000100000000000003656369026e6c00000f0001 +4f218000000100000002000003656369026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c028 + +38914 +b0500000000100000000000006636861726973026e6c0000010001 +b0508000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +38915 +a8b8000000010000000000000f646f6d61696e2d7265676973747279026e6c0000010001 +a8b8800000010000000300020f646f6d61696e2d7265676973747279026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c01cc00c0002000100015180000b026e73026e6c036e657400c03000010001000151800004c1b09002c04100010001000151800004c0576a65 + +38916 +417800000001000000000000036e73310a6461632d706c616e6574026e6c0000260001 +417880000001000000030003036e73310a6461632d706c616e6574026e6c0000260001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +38917 +20bc00000001000000000000036e73320a6461632d706c616e6574026e6c0000010001 +20bc80000001000000030003036e73320a6461632d706c616e6574026e6c0000010001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +38918 +b0f900000001000000000000037777770a6977616e6e6164617465026e6c0000010001 +b0f980000001000000020000037777770a6977616e6e6164617465026e6c0000010001c01000020001000151800011036e73330a6f70656e2d646f6f7273c01bc01000020001000151800006036e7334c033 + +38919 +086200000001000000000000036e73320a6461632d706c616e6574026e6c0000260001 +086280000001000000030003036e73320a6461632d706c616e6574026e6c0000260001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +38920 +c09800000001000000000000036e73330a6f70656e2d646f6f7273026e6c0000010001 +c09880000001000000020002036e73330a6f70656e2d646f6f7273026e6c0000010001c01000020001000151800006036e7335c010c01000020001000151800006036e7336c010c02f000100010001518000045117e85ac041000100010001518000045117e85b + +38921 +8c4f00000001000000000000036e73340a6f70656e2d646f6f7273026e6c0000010001 +8c4f80000001000000020002036e73340a6f70656e2d646f6f7273026e6c0000010001c01000020001000151800006036e7335c010c01000020001000151800006036e7336c010c02f000100010001518000045117e85ac041000100010001518000045117e85b + +38922 +d87b00000001000000000000046d61696c0d616368746b61727370656c656e026e6c0000010001 +d87b80000001000000020002046d61696c0d616368746b61727370656c656e026e6c0000010001c01100020001000151800010046e733031086e65746c696e6573c01fc01100020001000151800007046e733032c038c03300010001000151800004d99540f5c04f00010001000151800004d99541f5 + +38923 +51610000000100000000000003777777076275736b6f6f70026e6c0000010001 +51618000000100000002000203777777076275736b6f6f70026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c018c01000020001000151800006036e7332c030c02c00010001000151800004d43d0f08c04a00010001000151800004d43d19e2 + +38924 +eb2300000001000000000000026e73076e656473746174026e6c00001c0001 +eb2380000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38925 +360400000001000000000000026e73076e656473746174026e6c0000260001 +360480000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +38926 +4ecd00000001000000000000036e7332076e656473746174026e6c0000010001 +4ecd80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38927 +33a000000001000000000000036e7332076e656473746174026e6c00001c0001 +33a080000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38928 +e12400000001000000000000037777770f62646d2d62657665696c6967696e67026e6c0000010001 +e12480000001000000020002037777770f62646d2d62657665696c6967696e67026e6c0000010001c0100002000100015180000c026e7306787334616c6cc020c01000020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +38929 +f0d100000001000000000000036e7332076e656473746174026e6c0000260001 +f0d180000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38930 +24ab00000001000000000000036e7333076e656473746174026e6c00001c0001 +24ab80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38931 +35d900000001000000000000036e7333076e656473746174026e6c0000260001 +35d980000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +38932 +e94600000001000000000000036e7334076e656473746174026e6c0000010001 +e94680000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38933 +c24000000001000000000000036e7334076e656473746174026e6c00001c0001 +c24080000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38934 +fa9300000001000000000000036e7334076e656473746174026e6c0000260001 +fa9380000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +38935 +3c3200000001000000000000036e73340767617574656e67026e6c0000010001 +3c3280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38936 +043f00000001000000000000036e73340767617574656e67026e6c0000010001 +043f80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38937 +0c4000000001000000000000036e73330767617574656e67026e6c0000010001 +0c4080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38938 +56c100000001000000000000046e637276026e6c00000f0001 +56c180000001000000020002046e637276026e6c00000f0001c00c00020001000151800010066d696e6e6965066f6d726f6570c011c00c0002000100015180000805726f62696ec02cc02500010001000151800004913a1e04c04100010001000151800004913a1a34 + +38939 +144f00000001000000000000036e73330767617574656e67026e6c0000010001 +144f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38940 +3c5200000001000000000000036e73340767617574656e67026e6c0000010001 +3c5280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +38941 +4805000000010000000000000561626f766f026e6c0000010001 +4805800000010000000200020561626f766f026e6c0000010001c00c0002000100015180000d036e733106782d73697465c012c00c00020001000151800006036e7332c02ac0260001000100015180000450f7ca4bc03f0001000100015180000450f7ca50 + +38942 +118e00000001000000000000036e733107737572666e6574026e6c0000010001 +118e80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +38943 +c3f100000001000000000000036e733207737572666e6574026e6c0000010001 +c3f180000001000000040003036e733207737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800002c00cc01000020001000151800006036e7331c010c0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c00c00010001000151800004c0572402c04f00010001000151800004c0576a65 + +38944 +e34400000001000000000000037777770a6e656465726c616e6473026e6c0000010001 +e34480000001000000020001037777770a6e656465726c616e6473026e6c0000010001c0100002000100015180000b026e73056d696e736fc01bc01000020001000151800006036e7332c032c02f000100010001518000045117e142 + +38945 +47c90000000100000000000006746f62696e67026e6c0000010001 +47c98000000100000003000006746f62696e67026e6c0000010001c00c00020001000151800012036e7333087a6f6e656564697403636f6d00c00c0002000100015180000f036e733005786e616d65036f726700c00c0002000100015180000d036e733206616672616964c04f + +38946 +29450000000100000000000010616c756d696e69756d63656e7472756d026e6c00000f0001 +29458000000100000002000210616c756d696e69756d63656e7472756d026e6c00000f0001c00c00020001000151800015026e730f6761726e69657270726f6a65637473c01dc00c00020001000151800006036e7331c034c031000100010001518000045117e122c052000100010001518000045117e142 + +38947 +db570000000100000000000003777777076d79726961646d026e6c0000010001 +db578000000100000002000203777777076d79726961646d026e6c0000010001c01000020001000151800009036e7331026973c018c01000020001000151800006036e7332c030c02c00010001000151800004d5852102c04100010001000151800004d5c41503 + +38948 +63ed00000001000000000000037777770661646d697265026e6c0000010001 +63ed80000001000000020002037777770661646d697265026e6c0000010001c0100002000100015180000f026e7309656174736572766572c017c01000020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +38949 +e74c00000001000000000000037777770c646574616265726e616b656c026e6c0000010001 +e74c80000001000000020000037777770c646574616265726e616b656c026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c037 + +38950 +fb6d00000001000000000000076575726f6e6574026e6c00000f0001 +fb6d80000001000000020001076575726f6e6574026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d026e73046575726f036e657400c02800010001000151800004c2860043 + +38951 +e8360000000100000000000008636170796261726103756369036b756e026e6c0000010001 +e8368000000100000003000308636170796261726103756369036b756e026e6c0000010001c01900020001000151800002c00cc0190002000100015180000a036e733103736369c019c0190002000100015180000e036e733107737572666e6574c01dc00c0001000100015180000483ae3c15c03f0001000100015180000483aee004c05500010001000151800004c0576a65 + +38952 +f41b0000000100000000000008706f736569646f6e03756369036b756e026e6c0000010001 +f41b8000000100000003000308706f736569646f6e03756369036b756e026e6c0000010001c0190002000100015180000b086361707962617261c015c0190002000100015180000a036e733103736369c019c0190002000100015180000e036e733107737572666e6574c01dc0310001000100015180000483ae3c15c0480001000100015180000483aee004c05e00010001000151800004c0576a65 + +38953 +27bf00000001000000000000026e730763697374726f6e026e6c0000010001 +27bf80000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +38954 +949100000001000000000000036e73320763697374726f6e026e6c0000010001 +949180000001000000020002036e73320763697374726f6e026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +38955 +045700000001000000000000037777770977697373656c776562026e6c0000010001 +045780000001000000030000037777770977697373656c776562026e6c0000010001c0100002000100015180001104646e733106696470333635036e657400c0100002000100015180000704646e7332c033c0100002000100015180000704646e7333c033 + +38956 +1d6b00000001000000000000037777770761637473697465026e6c0000010001 +1d6b80000001000000020000037777770761637473697465026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c030 + +38957 +8820000000010000000000000676696e646578026e6c0000010001 +8820800000010000000300030676696e646578026e6c0000010001c00c0002000100015180000b036e733104696c7365c013c00c00020001000151800006036e7332c02bc00c00020001000151800006036e7333c02bc027000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +38958 +915b00000001000000000000076f73626d61696c1c6f70656e7363686f6f6c67656d65656e736368617062696a6c6d6572026e6c00001c0001 +915b80000001000000030002076f73626d61696c1c6f70656e7363686f6f6c67656d65656e736368617062696a6c6d6572026e6c00001c0001c0140002000100015180000d036e733106776964657873c031c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c049c04500010001000151800004d4ccc0fcc07a000100010001518000043efa0703 + +38959 +c4b70000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +c4b78000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +38960 +87150000000100000000000003777873026e6c00000f0001 +87158000000100000003000303777873026e6c00000f0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +38961 +82ce00000001000000000000037777770974657272616465736b026e6c0000010001 +82ce80000001000000020000037777770974657272616465736b026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c033 + +38962 +8ffa00000001000000000000036e7332107370686572616e616d65736572766572026e6c0000010001 +8ffa80000001000000020002036e7332107370686572616e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0350001000100015180000451047004c00c0001000100015180000451047002 + +38963 +e3ba00000001000000000000036e7331107370686572616e616d65736572766572026e6c0000010001 +e3ba80000001000000020002036e7331107370686572616e616d65736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047004c0430001000100015180000451047002 + +38964 +3b1200000001000000000000037777770962736d64656a6f6e67026e6c0000010001 +3b1280000001000000020001037777770962736d64656a6f6e67026e6c0000010001c0100002000100015180000a036e733303777873c01ac01000020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +38965 +ef060010000100000000000106636861726973026e6c00001c00010000290800000080000000 +ef068000000100000002000106636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +38966 +8c260000000100000000000009494e484f4c4c414e44026e6c00000f0001 +8c268000000100000002000209494e484f4c4c414e44026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c2ab230bc03c00010001000151800004c0576a65 + +38967 +3bcf0000000100000000000006636861726973026e6c00001c0001 +3bcf8000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +38968 +090e000000010000000000000661736f706f73026e6c0000010001 +090e800000010000000200000661736f706f73026e6c0000010001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +38969 +e3fe00000001000000000000036e733109666972737466696e64026e6c0000010001 +e3fe80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38970 +c85200000001000000000000036e733209666972737466696e64026e6c0000010001 +c85280000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38971 +dabb00000001000000000000076d61696c2d696e03626f78026e6c0000010001 +dabb80000001000000020002076d61696c2d696e03626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c0140002000100015180000a07646e732d736563c014c02c00010001000151800004d97700fac04200010001000151800004d97704fa + +38972 +a20b00000001000000000000076d61696c2d696e03626f78026e6c0000010001 +a20b80000001000000020002076d61696c2d696e03626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c0140002000100015180000a07646e732d736563c014c02c00010001000151800004d97700fac04200010001000151800004d97704fa + +38973 +b016000000010000000000000377777706617265613137026e6c0000010001 +b016800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +38974 +2bd200000001000000000000037777770d646f7369646f64616e63657273026e6c0000010001 +2bd280000001000000030000037777770d646f7369646f64616e63657273026e6c0000010001c01000020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01000020001000151800006036e7332c036c01000020001000151800006036e7333c036 + +38975 +89a000000001000000000000026e73066863636e6574026e6c0000010001 +89a080000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +38976 +804300000001000000000000036e7331046e697769046b6e6177026e6c0000010001 +804380000001000000020002036e7331046e697769046b6e6177026e6c0000010001c01500020001000151800006036e7331c015c0150002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0576b03c04000010001000151800004c0576a65 + +38977 +972b00000001000000000000036e7332046b6e6177026e6c0000010001 +972b80000001000000020002036e7332046b6e6177026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e036e733107737572666e6574c015c02900010001000151800004c0576b03c03b00010001000151800004c0576a65 + +38978 +77c400000001000000000000036e7331096d6173746572646e73026e6c0000010001 +77c480000001000000020002036e7331096d6173746572646e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f347c03c000100010001518000043e94a047 + +38979 +bbe200000001000000000000036e7332096d6173746572646e73026e6c0000010001 +bbe280000001000000020002036e7332096d6173746572646e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054f347c00c000100010001518000043e94a047 + +38980 +dd51001000010000000000000377777704686f7574026e6c0000010001 +dd51800000010000000200020377777704686f7574026e6c0000010001c0100002000100015180001007617374657269780577746e6574c015c0100002000100015180000e036e73320768756d616e2d69c015c02900010001000151800004c36db552c04500010001000151800004c1ad2886 + +38981 +e94000000001000000000000037777770962697a617273697465026e6c0000010001 +e94080000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +38982 +9e3500000001000000000000036e733109666972737466696e64026e6c0000010001 +9e3580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38983 +836a00000001000000000000036e733209666972737466696e64026e6c0000010001 +836a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +38984 +42220000000100000000000003777777066a6970706969026e6c0000010001 +42228000000100000002000203777777066a6970706969026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c017c01000020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +38985 +b19600000001000000000000126f74746f6b616e746f6f7263656e7472756d026e6c00000f0001 +b19684030001000000010000126f74746f6b616e746f6f7263656e7472756d026e6c00000f0001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +38986 +2c2a01000001000000000000056b6f726e6f026e6c00000f000100 +2c2a85030001000000010000056b6f726e6f026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +38987 +68d200000001000000000000037777770968797065726c656170026e6c0000010001 +68d280000001000000020002037777770968797065726c656170026e6c0000010001c0100002000100015180000a036e7331036e7873c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +38988 +adbe00100001000000000001026e7306766576696461026e6c00000100010000290800000000000000 +adbe80000001000000030003026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa07030000291000000000000000 + +38989 +ab4000100001000000000001036e733206766576696461026e6c00000100010000290800000000000000 +ab4080000001000000030003036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa07030000291000000000000000 + +38990 +9b5c28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d7364637309446f6e4369726b656c026e6c000021000100000258001d00000064018508646f6e737276303109446f6e4369726b656c026e6c00 +9b5ca8040000000000000000 + +38991 +6aa800000001000000000000026e7306766576696461026e6c0000010001 +6aa880000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +38992 +b55400000001000000000000036e733206766576696461026e6c0000010001 +b55480000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +38993 +b02600000001000000000000037777770762616d62696e79026e6c0000010001 +b02680000001000000030000037777770762616d62696e79026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c034c0100002000100015180000a076e73686f737433c034 + +38994 +861300000001000000000000076d696e62757a61026e6c0000010001 +861380000001000000020001076d696e62757a61026e6c0000010001c00c0002000100015180000b087374617267617465c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004d535a3d2 + +38995 +3fe0000000010000000000000734657665727931026e6c0000010001 +3fe0800000010000000200010734657665727931026e6c0000010001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +38996 +adab000000010000000000000b6572696b626f72676d616e026e6c00000f0001 +adab800000010000000200020b6572696b626f72676d616e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +38997 +869700000001000000000000036d6737086d656761706c6578026e6c0000010001 +869780000001000000020002036d6737086d656761706c6578026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c02d00010001000151800004504f6101c03e00010001000151800004504f6102 + +38998 +39a800000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +39a880000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +38999 +f72c00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000260001 +f72c80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +39000 +43310000000100000000000012776174657274617869726f7474657264616d026e6c00000f0001 +43318000000100000002000212776174657274617869726f7474657264616d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01fc00c00020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +39001 +0bbc00000001000000000000086174617261786961026e6c0000010001 +0bbc80000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +39002 +d9620000000100000000000003777777046575726f026e6c0000010001 +d9628000000100000002000003777777046575726f026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +39003 +45ca0000000100000000000003777777046575726f026e6c0000010001 +45ca8000000100000002000003777777046575726f026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +39004 +ed7e00000001000000000000037777770862696b652d66756e026e6c0000010001 +ed7e80000001000000020002037777770862696b652d66756e026e6c0000010001c0100002000100015180000c036e7331056379626f78c019c01000020001000151800006036e7332c031c02d00010001000151800004d5a0da7dc04500010001000151800004d4ccd897 + +39005 +5fc000000001000000000000036e733107737572666e6574026e6c0000010001 +5fc080000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +39006 +fbb328000001000000010000026e6c0000060001095f6b65726265726f73045f756470096a6a632d627261766f026e6c000021000100000258001c00000064005807425241564f3131096a6a632d627261766f026e6c00 +fbb3a8040000000000000000 + +39007 +778400000001000000000000034e533103484853026e6c0000010001 +778480000001000000030003034e533103484853026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c0001000100015180000491340205c0360001000100015180000491340206c04800010001000151800004c0576a65 + +39008 +136900000001000000000000034e533203484853026e6c0000010001 +136980000001000000030003034e533203484853026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c0280001000100015180000491340205c00c0001000100015180000491340206c04800010001000151800004c0576a65 + +39009 +e61300000001000000000000096d61696c7372763031086c616e67686f7574026e6c00000f0001 +e61380000001000000020000096d61696c7372763031086c616e67686f7574026e6c00000f0001c01600020001000151800013036e733109752d73657276657273036e657400c01600020001000151800006036e7332c037 + +39010 +934e000000010000000000000377777716657261736d757373756d6d657270726f6772616d6d65026e6c0000010001 +934e800000010000000200020377777716657261736d757373756d6d657270726f6772616d6d65026e6c0000010001c0100002000100015180000d04646e733105692d702d64c027c0100002000100015180000704646e7332c040c03b00010001000151800004d9124003c05400010001000151800004d9124104 + +39011 +fdc400000001000000000000037777770962697a617273697465026e6c0000010001 +fdc480000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +39012 +387000000001000000000000037777770668696e676973026e6c0000010001 +387080000001000000020000037777770668696e676973026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +39013 +d959000000010000000000000774656c76696577026e6c00000f0001 +d959800000010000000200000774656c76696577026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +39014 +8b1900000001000000000000037777770966756e636f726e6572026e6c0000010001 +8b1980000001000000020002037777770966756e636f726e6572026e6c0000010001c0100002000100015180000b036e7331046e732d31c01ac01000020001000151800006036e7332c032c02e000100010001518000045045a0cdc04500010001000151800004d4cceec8 + +39015 +b7b2120c5018faf03b6f0000008d7b00000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd3d403c4ebd00030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b7b292040000000000000000 + +39016 +b7b2120c5018faf03b6f0000008d7b00000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd3d403c4ebd00030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b7b292040000000000000000 + +39017 +b32f00000001000000000000034e53320743495354524f4e024e4c0000010001 +b32f80000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +39018 +2e9a00000001000000000000037777770c70726f6a65637469656c3032026e6c0000010001 +2e9a80000001000000020002037777770c70726f6a65637469656c3032026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +39019 +b7b2121a5011fae2ed3b0000000000000000 +b7b292140000000000000000 + +39020 +561b0010000100000000000003777777096b69656b6562656c74026e6c0000010001 +561b8000000100000002000003777777096b69656b6562656c74026e6c0000010001c01000020001000151800013056175746f310a747265666e6574646e73c01ac01000020001000151800006036e7331c034 + +39021 +000000007002faf072e80000020405b401010402 +000080010000000000000000 + +39022 +a37b000000010000000000000377777703776661026e6c0000010001 +a37b800000010000000200000377777703776661026e6c0000010001c0100002000100015180001504646e73310a686976656c6f63697479036e657400c0100002000100015180000704646e7332c02d + +39023 +63ed0000000100000000000003696d6703696578026e6c0000010001 +63ed8000000100000003000003696d6703696578026e6c0000010001c0100002000100015180001607646e732d65753108706f776572646e73036e657400c0100002000100015180000a07646e732d757331c030c0100002000100015180000a07646e732d657532c030 + +39024 +b7b2121b5010fae2ed3a0000000000000000 +b7b292140000000000000000 + +39025 +b7c35b315010faf08ca70000000000000000 +b7c3db340000000000000000 + +39026 +a2d60000000100000000000005726f62696e066f6d726f6570026e6c00001c0001 +a2d68000000100000002000205726f62696e066f6d726f6570026e6c00001c0001c01200020001000151800009066d696e6e6965c012c01200020001000151800002c00cc02d00010001000151800004913a1e04c00c00010001000151800004913a1a34 + +39027 +05a90000000100000000000005726f62696e066f6d726f6570026e6c0000010001 +05a98000000100000002000205726f62696e066f6d726f6570026e6c0000010001c01200020001000151800009066d696e6e6965c012c01200020001000151800002c00cc02d00010001000151800004913a1e04c00c00010001000151800004913a1a34 + +39028 +223200000001000000000000066d696e6e6965066f6d726f6570026e6c00001c0001 +223280000001000000020002066d696e6e6965066f6d726f6570026e6c00001c0001c01300020001000151800002c00cc0130002000100015180000805726f62696ec013c00c00010001000151800004913a1e04c03c00010001000151800004913a1a34 + +39029 +315c00000001000000000000066d696e6e6965066f6d726f6570026e6c0000010001 +315c80000001000000020002066d696e6e6965066f6d726f6570026e6c0000010001c01300020001000151800002c00cc0130002000100015180000805726f62696ec013c00c00010001000151800004913a1e04c03c00010001000151800004913a1a34 + +39030 +cd890000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cd898000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39031 +9939000000010000000000000664696e616e74026e6c0000010001 +9939800000010000000200010664696e616e74026e6c0000010001c00c0002000100015180000a036e733303777873c013c00c00020001000151800006036e7334c02bc03d00010001000151800004d5ef9a65 + +39032 +28e000000001000000000000086261726d61746f6e026e6c0000010001 +28e080000001000000020002086261726d61746f6e026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +39033 +a17800000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000060001 +a17884030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000060001c04500060001000038400036026e730f646f6d61696e2d7265676973747279c0450a686f73746d6173746572c05c0bf1e540000070800000384000278d0000003840 + +39034 +b54e000000010000000000000b6b65626f2d6f636874656e026e6c0000ff0001 +b54e800000010000000200020b6b65626f2d6f636874656e026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +39035 +b7c35b315018faf0d04b0000008d8000000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd40403c4ec000030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 +b7c3db340000000000000000 + +39036 +b7c35b3f5011fae28c170000000000000000 +b7c3db340000000000000000 + +39037 +99e300000001000000000000036e733107737572666e6574026e6c0000010001 +99e380000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +39038 +000000007002faf033120000020405b401010402 +000080010000000000000000 + +39039 +b7c35b405010fae28c160000000000000000 +b7c3db440000000000000000 + +39040 +3ee50000000100000000000003777777096578706f7669736965026e6c0000010001 +3ee58000000100000002000003777777096578706f7669736965026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +39041 +b7c5cd275010faf0dad80000000000000000 + + +39042 +50f8000000010000000000000974656c656772616166026e6c0000010001 +50f8800000010000000200000974656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +39043 +b7c5cd275018faf0a87c0000008df600000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afd40403c4ec000030000002e4e544c4d535350000100000097b208e0070007002700000007000700200000005245545f4653315245544152434f0000 + + +39044 +64dd28000001000000010000026e6c0000060001035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000210001000002580022000000640cc4066e69656c7331106b72656e73636f6e73756c74616e6379026e6c00 +64dda8040000000000000000 + +39045 +ecf20000000100000000000006706c2d30303207504c2d4c616e6407706c2d6c616e64026e6c0000060001 +ecf28403000100000001000006706c2d30303207504c2d4c616e6407706c2d6c616e64026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +39046 +392a00000001000000000000037777770c6a616e62657373656c696e6b026e6c0000010001 +392a80000001000000020002037777770c6a616e62657373656c696e6b026e6c0000010001c0100002000100015180000e036e733107686f7374696e67c01dc01000020001000151800006036e7332c035c031000100010001518000043e818b01c04b000100010001518000043e818b02 + +39047 +b7c5cd355011fae2da480000000000000000 + + +39048 +30910000000100000000000006696d61696c32076b6e6f77617265026e6c0000010001 +30918000000100000002000206696d61696c32076b6e6f77617265026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c02f00010001000151800004c3402003c04000010001000151800004c340202b + +39049 +b7c5cd365010fae2da470000000000000000 + + +39050 +881c000000010000000000000377777709696e7465726d616174026e6c0000010001 +881c800000010000000200010377777709696e7465726d616174026e6c0000010001c0100002000100015180000a04626f6261026778c01ac0100002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1590b + +39051 +0000000070024000de6f0000020405ac01010402 +000080010000000000000000 + +39052 +858300000001000000000000046d696a6e06646a6f736572026e6c0000010001 +858380000001000000020002046d696a6e06646a6f736572026e6c0000010001c0110002000100015180000a026e730467726970c018c01100020001000151800006036e7333c02fc02c00010001000151800004d4eeb043c04200010001000151800004d994a262 + +39053 +a6a600000001000000000000036e7333076e656473746174026e6c0000010001 +a6a680000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +39054 +b89100000001000000000000026e73076e656473746174026e6c0000010001 +b89180000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39055 +b7c6575050104410f7f40000000000000000 +b7c6d7540000000000000000 + +39056 +ad370000000100000000000105646e732d31056c61646f74026e6c00000100010000291000000000000000 +ad378000000100000002000105646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c0320000291000000000000000 + +39057 +16fa0000000100000000000105646e732d32056c61646f74026e6c00000100010000291000000000000000 +16fa8000000100000002000105646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c0320000291000000000000000 + +39058 +f18a000000010000000000000c66726565726f617374696e67026e6c0000010001 +f18a800000010000000200000c66726565726f617374696e67026e6c0000010001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c031 + +39059 +6ba700100001000000000001087765626d61696c3203687661026e6c00000100010000290800000000000000 +6ba780000001000000030004087765626d61696c3203687661026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000e036e733107737572666e6574c019c01500020001000151800006036e7332c015c02d00010001000151800004915c1202c03e00010001000151800004c0576a65c05800010001000151800004915c21020000291000000000000000 + +39060 +202400000001000000000000087765626d61696c3203687661026e6c0000010001 +202480000001000000030003087765626d61696c3203687661026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000e036e733107737572666e6574c019c01500020001000151800006036e7332c015c02d00010001000151800004915c1202c03e00010001000151800004c0576a65c05800010001000151800004915c2102 + +39061 +b7c6575050184410ed5700000094e8e8000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76c403c48ec0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 +b7c6d7540000000000000000 + +39062 +e5f60000000100000000000004656c7761026e6c0000010001 +e5f68000000100000002000204656c7761026e6c0000010001c00c0002000100015180000b026e7305706c616e74c011c00c00020001000151800006036e7332c028c02500010001000151800004d59f0037c03c00010001000151800004d59f0046 + +39063 +119900000001000000000000066d6165746973026e6c00000f0001 +119980000001000000030002066d6165746973026e6c00000f0001c00c0002000100015180000d036e733106776964657873c013c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +39064 +7dd100000001000000000000037777770963617264696c6c6163026e6c0000010001 +7dd180000001000000020000037777770963617264696c6c6163026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01ac0100002000100015180000805646e732d32c034 + +39065 +b7c6575e50114402f75d0000000000000000 +b7c6d7540000000000000000 + +39066 +0000000070024000f46f0000020405ac01010402 +000080010000000000000000 + +39067 +6ef5000000010000000000000876646b7275696a66026e6c00000f0001 +6ef5800000010000000300000876646b7275696a66026e6c00000f0001c00c0002000100015180001506686b646e73310876646b7275696a6603636f6d00c00c00020001000151800010046e733132087a6f6e6565646974c039c00c00020001000151800006036e7337c04f + +39068 +b7c6575f50104402f75c0000000000000000 +b7c6d7540000000000000000 + +39069 +b7c7018a5010441063ba0000000000000000 +b7c780010000000000000000 + +39070 +20f9000000010000000000000464626277026e6c0000010001 +20f9800000010000000200000464626277026e6c0000010001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c029 + +39071 +875b0000000100000000000009696c632d74616c656e026e6c00000f0001 +875b8000000100000002000209696c632d74616c656e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +39072 +b7c7018a5018441052a600000094f060000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76c403c48ec0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 +b7c780010000000000000000 + +39073 +555700000001000000000000037777770a6b6c616173707275696d026e6c00000f0001 +555780000001000000020002037777770a6b6c616173707275696d026e6c00000f0001c0100002000100015180000e036e7331076a646e686f7374c01bc01000020001000151800006036e7332c033c02f000100010001518000045054e451c049000100010001518000045054e452 + +39074 +be1f00000001000000000000084e696a6d6567656e026e6c00000f0001 +be1f80000001000000020002084e696a6d6567656e026e6c00000f0001c00c0002000100015180000f036e73330874656c6562797465c015c00c00020001000151800006036e7334c02dc02900010001000151800004d5d38115c04400010001000151800004d5d38116 + +39075 +06690000000100000000000002383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +06698000000100000002000202383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +39076 +c265000000010000000000000377777708736e6f7774696d65026e6c0000010001 +c265800000010000000300010377777708736e6f7774696d65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +39077 +e558000000010000000000000377777712686974726164696f646967697461616c666d026e6c0000010001 +e558800000010000000200000377777712686974726164696f646967697461616c666d026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03d + +39078 +9f01000000010000000000000c686c6d2d747269616e676c65026e6c00000f0001 +9f01800000010000000200000c686c6d2d747269616e676c65026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +39079 +b7c701985011440263230000000000000000 +b7c780010000000000000000 + +39080 +000000007002400010880000020405ac01010402 +000080010000000000000000 + +39081 +1c0d00000001000000000000036e73340767617574656e67026e6c0000010001 +1c0d80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39082 +b7c701995010440263220000000000000000 +b7c780010000000000000000 + +39083 +b7c7ca4a50104410b7110000000000000000 + + +39084 +b7c7ca4a50184410f51900000094a144000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af76c403c48ec0003000000354e544c4d535350000100000097b200c00f000f002600000006000600200000004e49454c53314b52454e53434f4e53554c54414e430000 + + +39085 +797900000001000000000000037777770d7063672d676f72696e6368656d026e6c0000010001 +797980000001000000020002037777770d7063672d676f72696e6368656d026e6c0000010001c01000020001000151800017036e733110636173652d656c656b74726f6e696373c01ec01000020001000151800006036e7332c036c03200010001000151800004d4cceb4fc05500010001000151800004d4cceb50 + +39086 +093e0000000100000000000003777777186d616b656c61617273206f6f73742d67726f6e696e67656e026e6c0000010001 +093e8403000100000001000003777777186d616b656c61617273206f6f73742d67726f6e696e67656e026e6c0000010001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +39087 +b7c7ca5850114402b67a0000000000000000 + + +39088 +4baa0000000100000000000004686f6d651074697363616c692d627573696e657373026e6c0000010001 +4baa8000000100000003000204686f6d651074697363616c692d627573696e657373026e6c0000010001c0110002000100015180000f04616e73310774697363616c69c022c0110002000100015180000704616e7332c03bc0110002000100015180001404616e73330a74697363616c696e657402626500c03600010001000151800004c3f14d38c05100010001000151800004c3f13325 + +39089 +9cae0000000100000000000005746c6774650a7061797065726e657773026e6c0000010001 +9cae8000000100000002000205746c6774650a7061797065726e657773026e6c0000010001c01200020001000151800010036e733109652d666163746f7279c01dc01200020001000151800006036e7332c035c03100010001000151800004c1fefe82c04d00010001000151800004c1feff82 + +39090 +b7c7ca5950104402b6790000000000000000 + + +39091 +c868000000010000000000000763656e74726f70026e6c0000010001 +c868800000010000000200020763656e74726f70026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +39092 +fe5e00000001000000000000037777770e62672d656e67696e656572696e67026e6c0000010001 +fe5e80000001000000020001037777770e62672d656e67696e656572696e67026e6c0000010001c0100002000100015180000a036e733303777873c01fc01000020001000151800006036e7334c037c04900010001000151800004d5ef9a65 + +39093 +d441000000010000000000000561756b6a65026e6c0000ff0001 +d441800000010000000200000561756b6a65026e6c0000ff0001c00c00020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c00c00020001000151800006036e7332c02a + +39094 +145d00000001000000000000036e73330767617574656e67026e6c0000010001 +145d80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39095 +5db400000001000000000000037777771276616e6b6176656c746f746b61737465656c026e6c0000010001 +5db480000001000000020001037777771276616e6b6176656c746f746b61737465656c026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c023c0100002000100015180000a036e73310372746cc023c03700010001000151800004c3c1ca77 + +39096 +2fd200000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +2fd280000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +39097 +f324000000010000000000000772616368656c73026e6c0000ff0001 +f324800000010000000200000772616368656c73026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c014c00c00020001000151800006036e7332c02b + +39098 +c2ed0000000100000000000005646e732d31056c61646f74026e6c0000010001 +c2ed8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39099 +c2ee0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c2ee8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39100 +3276000000010000000000000377777705646568756e026e6c0000010001 +3276800000010000000200020377777705646568756e026e6c0000010001c01000020001000151800010036e733109756e69736572766572c016c01000020001000151800006036e7332c02ec02a00010001000151800004c3454b03c04600010001000151800004d119a2fa + +39101 +3f000000000100000000000005746f70323505726567696f026e6c0000010001 +3f008000000100000002000205746f70323505726567696f026e6c0000010001c0120002000100015180000c036e7331056379626f78c018c01200020001000151800006036e7332c030c02c00010001000151800004d5a0da7dc04400010001000151800004d4ccd897 + +39102 +e10d28000001000000010000026e6c0000060001055f6c646170045f7463702465323737303337342d303731302d346661372d393266652d65393131663731643939326507646f6d61696e73065f6d736463731276616e64696a6b63736164766f636174656e026e6c0000210001000002580024000000640185067365727665721276616e64696a6b63736164766f636174656e026e6c00 +e10da8040000000000000000 + +39103 +aa03000000010000000000000777696c6d696e6b026e6c00000f0001 +aa03800000010000000200020777696c6d696e6b026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +39104 +47080000000100000000000003777777056b6c696b73026e6c0000010001 +47088000000100000002000003777777056b6c696b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02d + +39105 +3ba200000001000000000000037777770d6f6e64657277696a7373746164026e6c0000010001 +3ba280000001000000020002037777770d6f6e64657277696a7373746164026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01ec01000020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +39106 +74e300000001000000000000066f6e6c696e6509696e74657276696577026e6c0000010001 +74e380000001000000020000066f6e6c696e6509696e74657276696577026e6c0000010001c0130002000100015180000b026e73026e6c036e657400c0130002000100015180001206617574683630026e73026e6c027575c037 + +39107 +1e54000000010000000000000575726975730473656d61026e6c0000010001 +1e54800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +39108 +18320000000100000000000006636861726973026e6c00000f0001 +18328000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39109 +0000000070024000ced600000204053401010402 +000080010000000000000000 + +39110 +552900000001000000000000026e7306787334616c6c026e6c00001c0001 +552980000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +39111 +8a6500000001000000000000026e7306787334616c6c026e6c0000260001 +8a6580000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +39112 +688e00000001000000000000036e733206787334616c6c026e6c00001c0001 +688e80000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +39113 +447f00000001000000000000036e733206787334616c6c026e6c0000260001 +447f80000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +39114 +2c01000000010000000000000666696e3132340657494e46494e024e4c0000010001 +2c01840300010000000100000666696e3132340657494e46494e024e4c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +39115 +b7c8652e50104470d9a30000000000000000 +b7c8e5240000000000000000 + +39116 +b7c8652e50184470a322000000942da6000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03de403c555e0003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 +b7c8e5240000000000000000 + +39117 +533700000001000000000000036d78310464697661026e6c0000010001 +533780000001000000020000036d78310464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +39118 +45900000000100000000000008686f73746e616d650462696e640000100003 +45908000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39119 +868b0010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +868b8000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +39120 +952e000000010000000000000377777705656c6d6172026e6c0000010001 +952e800000010000000300030377777705656c6d6172026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c016c010000200010001518000070470726932c02fc010000200010001518000070470726933c02fc02a000100010001518000049a0ff9a6c048000100010001518000049a0ff9aac05b000100010001518000049a0ff9ae + +39121 +c95b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +c95b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39122 +b7c8653c50114462d90c0000000000000000 +b7c8e5340000000000000000 + +39123 +0000000070024000d21800000204053401010402 +000080010000000000000000 + +39124 +064400000001000000000000037777770e696a6d756964656e61616e7a6565026e6c0000010001 +064480000001000000020002037777770e696a6d756964656e61616e7a6565026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +39125 +9454000000010000000000000576656c7061026e6c0000ff0001 +9454800000010000000200020576656c7061026e6c0000ff0001c00c00020001000151800009036e7331026973c012c00c00020001000151800006036e7332c02ac02600010001000151800004d5852102c03b00010001000151800004d5c41503 + +39126 +b25d0000000100000000000003777777076d797374617473026e6c0000010001 +b25d8000000100000002000203777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +39127 +82400000000100000000000005646e732d31056c61646f74026e6c0000010001 +82408000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39128 +b7c8653d50104462d90b0000000000000000 +b7c8e5340000000000000000 + +39129 +4f61000000010000000000000a676f7474736368616c6b026e6c00000f0001 +4f61800000010000000200000a676f7474736368616c6b026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c017c00c0002000100015180000704686e7331c030 + +39130 +6ded00000001000000000000066b6c65747374026e6c00000f0001 +6ded80000001000000020000066b6c65747374026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02b + +39131 +029b00000001000000000000096368726f6e69717565026e6c0000010001 +029b80000001000000020002096368726f6e69717565026e6c0000010001c00c0002000100015180000a036e733103686978c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +39132 +3dc8000000010000000000000377777705646568756e026e6c0000010001 +3dc8800000010000000200020377777705646568756e026e6c0000010001c01000020001000151800010036e733109756e69736572766572c016c01000020001000151800006036e7332c02ec02a00010001000151800004c3454b03c04600010001000151800004d119a2fa + +39133 +b7cad8d15010447069400000000000000000 + + +39134 +b7cad8d150184470d679000000948aec000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03de403c555e0003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 + + +39135 +8174000000010000000000000f70656e7465726d616e6d757a69656b026e6c00000f0001 +8174800000010000000200000f70656e7465726d616e6d757a69656b026e6c00000f0001c00c0002000100015180000c026e7306766576696461c01cc00c00020001000151800006036e7332c033 + +39136 +1f5500000001000000000000037777770668696e676973026e6c0000010001 +1f5580000001000000020000037777770668696e676973026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +39137 +448b000000010000000000000377777705742d646f63026e6c0000010001 +448b800000010000000200020377777705742d646f63026e6c0000010001c0100002000100015180000c026e7306787334616c6cc016c01000020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +39138 +012c000000010000000000000477777732076d797374617473026e6c0000010001 +012c800000010000000200020477777732076d797374617473026e6c0000010001c01100020001000151800011036e73310a726564686f7374696e67c019c01100020001000151800006036e7332c031c02d00010001000151800004d5efa404c04a00010001000151800004d5efa405 + +39139 +b7cad8df5011446268a90000000000000000 + + +39140 +0000000070024000c1d700000204053401010402 +000080010000000000000000 + +39141 +fec100000001000000000000036e7332086765656e70756e74026e6c0000010001 +fec180000001000000020002036e7332086765656e70756e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d4ccd865c00c000100010001518000045054ec34 + +39142 +dbae00000001000000000000036e7331086765656e70756e74026e6c0000010001 +dbae80000001000000020002036e7331086765656e70756e74026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd865c03b000100010001518000045054ec34 + +39143 +cab4000000010000000000000377777710666972737463686f6963656c65616473026e6c0000010001 +cab4840300010000000100000377777710666972737463686f6963656c65616473026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +39144 +b7cad8e05010446268a80000000000000000 + + +39145 +f76c000000010000000000000776657264756774026e6c00000f0001 +f76c800000010000000200000776657264756774026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +39146 +e9280000000100000000000003787334026e6c00000f0001 +e9288000000100000002000203787334026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +39147 +3a990000000100000000000009726567696f626f7577026e6c00000f0001 +3a998000000100000002000009726567696f626f7577026e6c00000f0001c00c00020001000151800014036e73310a676c617373686f757365036e657400c00c00020001000151800006036e7332c02e + +39148 +7f480000000100000000000003777777096a756b6573616c6573026e6c0000010001 +7f488000000100000002000103777777096a756b6573616c6573026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01ac01000020001000151800006036e7334c032c02e00010001000151800004d5c401c0 + +39149 +26890000000100000000000006776468303131066e7434616c6c026e6c0000010001 +26898000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +39150 +cd7600000001000000000000056d61696c320774696b6b6c696b026e6c0000010001 +cd7680000001000000020002056d61696c320774696b6b6c696b026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c02e00010001000151800004d5c40902c040000100010001518000043eddd512 + +39151 +b7cbb4fa501044707cd50000000000000000 + + +39152 +6b690000000100000000000003777777067a737673746c026e6c0000010001 +6b698403000100000001000003777777067a737673746c026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +39153 +b7cbb4fa50184470aa8c00000094ca6e000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403b03de403c555e0003000000354e544c4d535350000100000097b208e00f000f0026000000060006002000000053455256455256414e44494a4b43534144564f43410000 + + +39154 +b7cbb508501144627c3e0000000000000000 + + +39155 +b7cbb509501044627c3d0000000000000000 + + +39156 +3ce000000001000000000000036e733206787334616c6c026e6c0000260001 +3ce080000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +39157 +8f0a000000010000000000000c76616b616e7469657061726b0a72656372656174696566026e6c0000010001 +8f0a800000010000000200000c76616b616e7469657061726b0a72656372656174696566026e6c0000010001c0190002000100015180000b036e7331046372696fc024c01900020001000151800006036e7332c03c + +39158 +866c00000001000000000000037777770a652d7265736561726368026e6c0000010001 +866c80000001000000020002037777770a652d7265736561726368026e6c0000010001c0100002000100015180001004646e73310869636f6d70616e79c01bc0100002000100015180000704646e7332c034c02f000100010001518000043e3a890ac04b000100010001518000043e3a890b + +39159 +2f920000000100000000000007766462636f6d70026e6c00001c0001 +2f928000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +39160 +f7cf00000001000000000000027330026e6c0000010001 +f7cf80000001000000020002027330026e6c0000010001c00c0002000100015180000d026e73076e656473746174c00fc00c00020001000151800006036e7333c026c02300010001000151800004d4482615c03c00010001000151800004d5c4021d + +39161 +de8500000001000000000001034e53350f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +de8580000001000000030003034e53350f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +39162 +0bda00000001000000000001034e53320f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +0bda80000001000000030003034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a650000291000000000000000 + +39163 +f4d800000001000000000001024e530f444f4d41494e2d5245474953545259026e6c00000100010000291000000000000000 +f4d880000001000000030003024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a650000291000000000000000 + +39164 +045000000001000000000001036e733109756e69736f75726365026e6c00000100010000291000000000000000 +045080000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +39165 +10d70000000100000000000003777777126175746f696e6b6f6f7063656e7472616c65026e6c0000010001 +10d78000000100000003000203777777126175746f696e6b6f6f7063656e7472616c65026e6c0000010001c0100002000100015180000d036e733106776964657873c023c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c03bc03700010001000151800004d4ccc0fcc06c000100010001518000043efa0703 + +39166 +163800000001000000000000076f62646e772d6e026e6c00000f000100 +163880000001000000020002076f62646e772d6e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +39167 +fe900000000100000000000006776468303131066e7434616c6c026e6c0000010001 +fe908000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +39168 +3ea4000000010000000000000474656861026e6c00000f0001 +3ea4800000010000000200000474656861026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02b + +39169 +3d8a00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3d8a80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +39170 +3d8b00000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3d8b80000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +39171 +3d8c00000001000000000000037777770b7275696c65656e6c696e6b026e6c0000010001 +3d8c80000001000000020000037777770b7275696c65656e6c696e6b026e6c0000010001c01000020001000151800014036e73310d666c65746873686f7374696e67c01cc01000020001000151800006036e7332c034 + +39172 +a9f90000000100000000000003777777087265676572696e67026e6c0000010001 +a9f98000000100000003000303777777087265676572696e67026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +39173 +acb90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +acb98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39174 +da1f00000001000000000000026e73076e656473746174026e6c0000010001 +da1f80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39175 +5b6100000001000000000000036e7333076e656473746174026e6c0000010001 +5b6180000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +39176 +52d9000000010000000000000766313335303932057570632d66066368656c6c6f026e6c0000010001 +52d9800000010000000300030766313335303932057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +39177 +321e00000001000000000000046c69736103796f77026e6c0000010001 +321e80000001000000020000046c69736103796f77026e6c0000010001c01100020001000151800010046c697361086e6f7661686f7374c015c01100020001000151800006036e7332c02e + +39178 +c06f0000000100000000000003777777097061726e6173736961026e6c0000010001 +c06f8000000100000002000003777777097061726e6173736961026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +39179 +477a000000010000000000000c68656973636865686f657665026e6c00000f0001 +477a800000010000000300030c68656973636865686f657665026e6c00000f0001c00c0002000100015180000c036e7331053266617374c019c00c00020001000151800006036e7332c031c00c00020001000151800006036e7333c031c02d0001000100015180000450f7c022c045000100010001518000043e858122c057000100010001518000045117eb22 + +39180 +da9100000001000000000000076472656d656661026e6c00000f0001 +da9180000001000000030000076472656d656661026e6c00000f0001c00c00020001000151800013036e733109647265616d686f737403636f6d00c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02c + +39181 +99e200000001000000000000037777770e6961622d696e67656e6965757273026e6c0000010001 +99e280000001000000020000037777770e6961622d696e67656e6965757273026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c036 + +39182 +365000000001000000000000037777770e67616e6762616e672d7061727479026e6c0000010001 +365080000001000000030000037777770e67616e6762616e672d7061727479026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c03bc0100002000100015180000a076e73686f737433c03b + +39183 +34a90000000100000000000003313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +34a98000000100000002000203313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +39184 +5b900000000100000000000003746f6e0664756d616e73026e6c0000010001 +5b908000000100000002000003746f6e0664756d616e73026e6c0000010001c01000020001000151800011036e733307657873696c6961036e657400c01000020001000151800006036e7332c02f + +39185 +891e000000010000000000000377777703696b63026e6c0000010001 +891e800000010000000200000377777703696b63026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c02f + +39186 +de8500000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000010001 +de8580000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +39187 +0bda00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000010001 +0bda80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +39188 +f4d800000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000010001 +f4d880000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +39189 +045000000001000000000000036e733109756e69736f75726365026e6c0000010001 +045080000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +39190 +ecb0000000010000000000000377777708666c657870726f32026e6c0000010001 +ecb0840300010000000100000377777708666c657870726f32026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +39191 +d5750010000100000000000103777777076e656473746174026e6c00000100010000290800000080000000 +d5758000000100000002000303777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +39192 +7b370000000100000000000003777777086e756f6e6a6f6273026e6c0000010001 +7b378000000100000002000003777777086e756f6e6a6f6273026e6c0000010001c0100002000100015180000f026e7306746f7461616c036e657400c01000020001000151800012026e7309746f7461616c6e657403636f6d00 + +39193 +0b2000000001000000000000037777770c726f757465706c616e6e6572026e6c0000010001 +0b2080000001000000020002037777770c726f757465706c616e6e6572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01dc01000020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +39194 +d708001000010000000000000a76657265656e69676465026e6c00000f0001 +d708800000010000000200000a76657265656e69676465026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +39195 +2e9500000001000000000000026e73087261626f62616e6b026e6c0000010001 +2e9580000001000000020001026e73087261626f62616e6b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +39196 +ae7d000000010000000000000577686f69730f646f6d61696e2d7265676973747279026e6c00001c0001 +ae7d800000010000000300020577686f69730f646f6d61696e2d7265676973747279026e6c00001c0001c01200020001000151800005026e73c012c0120002000100015180000e036e733107737572666e6574c022c0120002000100015180000b026e73026e6c036e657400c03600010001000151800004c1b09002c04700010001000151800004c0576a65 + +39197 +3d8f00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +3d8f80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +39198 +3d9000000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +3d9080000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +39199 +4c72000000010000000000000377777704616e7762026e6c0000010001 +4c72800000010000000200010377777704616e7762026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02900010001000151800004c1ac840a + +39200 +e52b0000000100000000000009736d747072656c617906756e69706174026e6c0000010001 +e52b8000000100000002000009736d747072656c617906756e69706174026e6c0000010001c0160002000100015180000b026e73026e6c036e657400c0160002000100015180001206617574683630026e73026e6c027575c037 + +39201 +a7500000000100000000000009736d747072656c617906756e69706174026e6c00001c0001 +a7508000000100000002000009736d747072656c617906756e69706174026e6c00001c0001c0160002000100015180000b026e73026e6c036e657400c0160002000100015180001206617574683630026e73026e6c027575c037 + +39202 +494a0000000100000000000007756e696d61696c06756e69706174026e6c0000010001 +494a8000000100000002000007756e696d61696c06756e69706174026e6c0000010001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c035 + +39203 +eff50000000100000000000007756e696d61696c06756e69706174026e6c00001c0001 +eff58000000100000002000007756e696d61696c06756e69706174026e6c00001c0001c0140002000100015180000b026e73026e6c036e657400c0140002000100015180001206617574683630026e73026e6c027575c035 + +39204 +89dc000000010000000000000577686f69730f646f6d61696e2d7265676973747279026e6c0000010001 +89dc800000010000000300020577686f69730f646f6d61696e2d7265676973747279026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000e036e733107737572666e6574c022c0120002000100015180000b026e73026e6c036e657400c03600010001000151800004c1b09002c04700010001000151800004c0576a65 + +39205 +3d1600000001000000000000036d78320663617374656c026e6c0000010001 +3d1680000001000000020002036d78320663617374656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b00010001000151800004c3558244c03d00010001000151800004c3558245 + +39206 +fc42000000010000000000000a77656e6e696e6b686f66026e6c00000f0001 +fc42800000010000000200010a77656e6e696e6b686f66026e6c00000f0001c00c0002000100015180000a036e733303777873c017c00c00020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +39207 +f5e3000000010000000000000579756363610464697661026e6c0000010001 +f5e3800000010000000200000579756363610464697661026e6c0000010001c0120002000100015180000e036e73310464697661036e657400c01200020001000151800006036e7332c02f + +39208 +7791000000010000000000000579756363610464697661026e6c00001c0001 +7791800000010000000200000579756363610464697661026e6c00001c0001c0120002000100015180000e036e73310464697661036e657400c01200020001000151800006036e7332c02f + +39209 +323500000001000000000000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000060001 +323584030001000000010000035f6763045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573106b72656e73636f6e73756c74616e6379026e6c0000060001c04500060001000038400036026e730f646f6d61696e2d7265676973747279c0450a686f73746d6173746572c05c0bf1e540000070800000384000278d0000003840 + +39210 +6c8500000001000000000000026e730d646f6d65696e656e6d61726b74026e6c0000010001 +6c8580000001000000020002026e730d646f6d65696e656e6d61726b74026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e320c64c03f000100010001518000043e64366a + +39211 +58ac00000001000000000000036e73320d646f6d65696e656e6d61726b74026e6c0000010001 +58ac80000001000000020002036e73320d646f6d65696e656e6d61726b74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc032000100010001518000043e320c64c00c000100010001518000043e64366a + +39212 +74220000000100000000000005656e726166026e6c00000f0001 +74228000000100000002000205656e726166026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc012c00c00020001000151800006036e7332c029c02600010001000151800004c26d0642c03e00010001000151800004c26d0963 + +39213 +f4c200000001000000000000036e73310773656172636879026e6c0000010001 +f4c280000001000000020002036e73310773656172636879026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9aa1235c03a00010001000151800004507e81e0 + +39214 +5f9200000001000000000000036e73320773656172636879026e6c0000010001 +5f9280000001000000020002036e73320773656172636879026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d9aa1235c00c00010001000151800004507e81e0 + +39215 +fffc0000000100000000000008706574706f776572026e6c00000f0001 +fffc8000000100000002000208706574706f776572026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +39216 +616f0000000100000000000003777777057465737361026e6c0000010001 +616f8000000100000002000203777777057465737361026e6c0000010001c0100002000100015180000e07646e732d70726903626f78c016c0100002000100015180000a07646e732d736563c032c02a00010001000151800004d97700fac04400010001000151800004d97704fa + +39217 +39ee0000000100000000000003777777126573646567652d726569676572736461616c026e6c0000010001 +39ee8000000100000002000203777777126573646567652d726569676572736461616c026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec023c01000020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +39218 +db0f000000010000000000000574726f7577026e6c00000f0001 +db0f800000010000000300020574726f7577026e6c00000f0001c00c00020001000151800015036e73310b70696e6b726f6363616465036e657400c00c0002000100015180000e026e73086d656761706c6578c012c00c00020001000151800006036e7331c04ac04700010001000151800004504f6101c06100010001000151800004504f6102 + +39219 +35ad0000000100000000000006666c616d636f06787334616c6c026e6c0000010001 +35ad8000000100000003000206666c616d636f06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39220 +bcac00000001000000000000046a6f6273046e756f6e026e6c0000010001 +bcac80000001000000020001046a6f6273046e756f6e026e6c0000010001c0110002000100015180000d026e73046575726f036e657400c0110002000100015180000d026e73076575726f6e6574c016c04300010001000151800004c2860043 + +39221 +c9ff000000010000000000000a726163657265706f7274026e6c00000f0001 +c9ff800000010000000200020a726163657265706f7274026e6c00000f0001c00c0002000100015180000a036e733103677673c017c00c00020001000151800006036e7332c02fc02b000100010001518000045054e1aac04100010001000151800004d4ccc646 + +39222 +98fb000000010000000000000b62757267686f6c64696e67026e6c00000f0001 +98fb800000010000000200020b62757267686f6c64696e67026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc018c00c00020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +39223 +e78b00000001000000000000036e733109666972737466696e64026e6c0000010001 +e78b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39224 +e6fd00000001000000000000036e733209666972737466696e64026e6c0000010001 +e6fd80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39225 +a53f00000001000000000000046d61696c036d6968026e6c0000010001 +a53f80000001000000020002046d61696c036d6968026e6c0000010001c0110002000100015180001004646e73310869636f6d70616e79c015c0110002000100015180000704646e7332c02ec029000100010001518000043e3a890ac045000100010001518000043e3a890b + +39226 +615900000001000000000000046d61696c036d6968026e6c00001c0001 +615980000001000000020002046d61696c036d6968026e6c00001c0001c0110002000100015180001004646e73310869636f6d70616e79c015c0110002000100015180000704646e7332c02ec029000100010001518000043e3a890ac045000100010001518000043e3a890b + +39227 +faf400000001000000000000046d61696c036d6968026e6c0000260001 +faf480000001000000020002046d61696c036d6968026e6c0000260001c0110002000100015180001004646e73310869636f6d70616e79c015c0110002000100015180000704646e7332c02ec029000100010001518000043e3a890ac045000100010001518000043e3a890b + +39228 +5f0600000001000000000000036e73310e6469726563747365727669636573026e6c00001c0001 +5f0680000001000000030003036e73310e6469726563747365727669636573026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d994aa05c04100010001000151800004d994aa06c05300010001000151800004d994aa07 + +39229 +13f800000001000000000000036e73310e6469726563747365727669636573026e6c0000260001 +13f880000001000000030003036e73310e6469726563747365727669636573026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d994aa05c04100010001000151800004d994aa06c05300010001000151800004d994aa07 + +39230 +175800000001000000000000036e73320e6469726563747365727669636573026e6c00001c0001 +175880000001000000030003036e73320e6469726563747365727669636573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03300010001000151800004d994aa05c00c00010001000151800004d994aa06c05300010001000151800004d994aa07 + +39231 +20e000000001000000000000036e73320e6469726563747365727669636573026e6c0000260001 +20e080000001000000030003036e73320e6469726563747365727669636573026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03300010001000151800004d994aa05c00c00010001000151800004d994aa06c05300010001000151800004d994aa07 + +39232 +334c00000001000000000000036e73330e6469726563747365727669636573026e6c00001c0001 +334c80000001000000030003036e73330e6469726563747365727669636573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03300010001000151800004d994aa05c04500010001000151800004d994aa06c00c00010001000151800004d994aa07 + +39233 +420200000001000000000000036e73330e6469726563747365727669636573026e6c0000260001 +420280000001000000030003036e73330e6469726563747365727669636573026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03300010001000151800004d994aa05c04500010001000151800004d994aa06c00c00010001000151800004d994aa07 + +39234 +b0990000000100000000000010696e666f776562616d7374657264616d026e6c00000f0001 +b0998000000100000002000210696e666f776562616d7374657264616d026e6c00000f0001c00c00020001000151800011036e73310a696e32686f7374696e67c01dc00c00020001000151800006036e7332c035c03100010001000151800004d43d3362c04e00010001000151800004d43d3363 + +39235 +2d7e00000001000000000000037777770c7265696b6963656e7472756d026e6c0000010001 +2d7e80000001000000030002037777770c7265696b6963656e7472756d026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +39236 +62ee000000010000000000000377777711766972747565656c7665726469656e656e026e6c0000010001 +62ee800000010000000200020377777711766972747565656c7665726469656e656e026e6c0000010001c0100002000100015180000e036e73310777657073797465c022c01000020001000151800006036e7332c03ac03600010001000151800004d5f72968c05000010001000151800004d5f72969 + +39237 +c45200100001000000000001036e733103757063026e6c00000100010000290800000080000000 +c45280000001000000030004036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +39238 +622900100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000080000000 +622980000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +39239 +c9e90000000100000000000003646e62026e6c00000f0001 +c9e98000000100000002000003646e62026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +39240 +c69200000001000000000000036e733109666972737466696e64026e6c0000010001 +c69280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39241 +f90800000001000000000000036e733209666972737466696e64026e6c0000010001 +f90880000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39242 +02d000000001000000000000066b61726d6163036d6373026e6c0000ff0001 +02d080000001000000020001066b61726d6163036d6373026e6c0000ff0001c01300020001000151800005026e73c013c01300020001000151800010036e7332096379626572636f6d6dc017c02b00010001000151800004d5c40185 + +39243 +197b0000000100000000000003574942024e4c00000f0001 +197b8000000100000002000103574942024e4c00000f0001c00c0002000100015180000c036e7330056e65786974c010c00c0002000100015180000f036e7331056e65786974036e657400c02400010001000151800004d4ccf5d3 + +39244 +f83b00000001000000000000026463065f6d73646373094452454d454c2d4d47024e4c0000060001 +f83b84030001000000010000026463065f6d73646373094452454d454c2d4d47024e4c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +39245 +99410000000100000000000003777777076e656473746174026e6c0000010001 +99418000000100000002000203777777076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39246 +d1a3000000010000000000000d646576726965737265697a656e026e6c00000f0001 +d1a3800000010000000300000d646576726965737265697a656e026e6c00000f0001c00c0002000100015180001505646e7331300961637469766569737003636f6d00c00c0002000100015180000805646e733131c034c00c0002000100015180000805646e733132c034 + +39247 +e6c30000000100000000000003706f70046a72636d026e6c0000010001 +e6c38000000100000002000203706f70046a72636d026e6c0000010001c0100002000100015180000d026e7307646f7473706f74c015c01000020001000151800006036e7373c02cc029000100010001518000043eb1d102c042000100010001518000043eb1d104 + +39248 +31d40000000100000000000006564453313630057469766473026e6c0000060001 +31d48403000100000001000006564453313630057469766473026e6c0000060001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +39249 +c68b00000001000000000000037777770b6472696568657576656c73026e6c0000010001 +c68b80000001000000020000037777770b6472696568657576656c73026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c036 + +39250 +392700000001000000000000037777770d706f72736368652d7061727473026e6c0000010001 +392780000001000000020000037777770d706f72736368652d7061727473026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c035 + +39251 +d7880000000100000000000003777777187870657269656e63652d776562646576656c6f706d656e74026e6c0000010001 +d7888000000100000002000203777777187870657269656e63652d776562646576656c6f706d656e74026e6c0000010001c0100002000100015180000f0472617131076e657474756e65c029c01000020001000151800006036e7332c042c03d00010001000151800004d4ccf78dc05800010001000151800004d4ccf78e + +39252 +cefa0000000100000000000005666f72756d0e70657567656f74677469636c7562026e6c0000010001 +cefa8000000100000002000005666f72756d0e70657567656f74677469636c7562026e6c0000010001c01200020001000151800013026e730a6d61696e73776974636803636f6d00c01200020001000151800006036e7333c038 + +39253 +fcfe000000010000000000000c7063626f77796d6272697473026e6c00000f0001 +fcfe800000010000000200020c7063626f77796d6272697473026e6c00000f0001c00c00020001000151800009036e7331026973c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +39254 +a7aa000000010000000000000e7777772c66756e6e7967656d6573026e6c0000010001 +a7aa840300010000000100000e7777772c66756e6e7967656d6573026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +39255 +38560000000100000000000009652d6c756e61746963026e6c0000010001 +38568000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +39256 +4f6d000000010000000000000873657276696365730977656c6c696e676974026e6c0000010001 +4f6d800000010000000200000873657276696365730977656c6c696e676974026e6c0000010001c0150002000100015180000c026e7306766576696461c01fc01500020001000151800006036e7332c036 + +39257 +535700100001000000000001026e730763616d70696e61026e6c00000100010000290800000080000000 +535780000001000000020003026e730763616d70696e61026e6c0000010001c00f0002000100015180000e036e733007656173796e6574c017c00f00020001000151800006036e7331c02fc02b00010001000151800004c2a55e01c04500010001000151800004c2a55e050000291000000000000000 + +39258 +ff3b000000010000000000000377777717696e7465726e6574736572766963656c6161726265656b026e6c0000010001 +ff3b800000010000000300030377777717696e7465726e6574736572766963656c6161726265656b026e6c0000010001c01000020001000151800014036e73310d3132336e616d65736572766572c028c01000020001000151800006036e7332c040c01000020001000151800006036e7333c040c03c00010001000151800004d44ff48bc05c00010001000151800004d44ffd03c06e00010001000151800004c3f5c711 + +39259 +7665000000010000000000000e736b6277696e7465727377696a6b026e6c0000010001 +7665800000010000000200020e736b6277696e7465727377696a6b026e6c0000010001c00c00020001000151800010046e733031086465616e6d6f6f72c01bc00c00020001000151800007046e733032c034c02f00010001000151800004c1cbe123c04b00010001000151800004c1cbe124 + +39260 +552900000001000000000000036e733103757063026e6c0000010001 +552980000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +39261 +6c3500000001000000000000046e733032066368656c6c6f026e6c0000010001 +6c3580000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +39262 +17ca00000001000000000000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001 +17ca80000001000000020000076d61696e2d6e6c07616a63666f6f64026e6c00000f0001c014000200010001518000110377656207616a63666f6f6403636f6d00c0140002000100015180000b0865786368616e6765c034 + +39263 +7fef00000001000000000000026e73076e656473746174026e6c00001c0001 +7fef80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39264 +28ea00000001000000000000026e73076e656473746174026e6c0000260001 +28ea80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39265 +eb3600000001000000000000026e730763616d70696e61026e6c0000010001 +eb3680000001000000020002026e730763616d70696e61026e6c0000010001c00f0002000100015180000e036e733007656173796e6574c017c00f00020001000151800006036e7331c02fc02b00010001000151800004c2a55e01c04500010001000151800004c2a55e05 + +39266 +43df00000001000000000000036e7332076e656473746174026e6c0000010001 +43df80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39267 +2b8100000001000000000000036e7332076e656473746174026e6c00001c0001 +2b8180000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39268 +5a8a00000001000000000000036e7332076e656473746174026e6c0000260001 +5a8a80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39269 +a9f400000001000000000000036e7333076e656473746174026e6c0000260001 +a9f480000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +39270 +59fd00000001000000000000036e7334076e656473746174026e6c0000010001 +59fd80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39271 +a76500000001000000000000036e7334076e656473746174026e6c00001c0001 +a76580000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39272 +beae00000001000000000000036e7334076e656473746174026e6c0000260001 +beae80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39273 +966600000001000000000000037777770a62656e2d6f6e6c696e65026e6c0000010001 +966680000001000000020002037777770a62656e2d6f6e6c696e65026e6c0000010001c0100002000100015180000b036e733104696e666fc01bc01000020001000151800006036e7332c033c02f00010001000151800004504fc020c04600010001000151800004504fc021 + +39274 +2ba400000001000000000000046d61696c086465616e6d6f6f72026e6c0000010001 +2ba480000001000000020002046d61696c086465616e6d6f6f72026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c02e00010001000151800004c1cbe123c04100010001000151800004c1cbe124 + +39275 +bf2200000001000000000000046d61696c086465616e6d6f6f72026e6c00001c0001 +bf2280000001000000020002046d61696c086465616e6d6f6f72026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c02e00010001000151800004c1cbe123c04100010001000151800004c1cbe124 + +39276 +802e00000001000000000000046e733031086465616e6d6f6f72026e6c00001c0001 +802e80000001000000020002046e733031086465616e6d6f6f72026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004c1cbe123c03c00010001000151800004c1cbe124 + +39277 +87be00000001000000000000046e733032086465616e6d6f6f72026e6c00001c0001 +87be80000001000000020002046e733032086465616e6d6f6f72026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02e00010001000151800004c1cbe123c00c00010001000151800004c1cbe124 + +39278 +c4ee0000000100000000000003777777086d74726565787878026e6c0000010001 +c4ee8000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +39279 +f14800000001000000000000036e733403777873026e6c0000010001 +f14880000001000000030003036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +39280 +1c220000000100000000000004686f6d6506706c616e6574026e6c0000010001 +1c228000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +39281 +56fc00000001000000000000046e73303903777873026e6c0000010001 +56fc80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +39282 +6c4700000001000000000000046e73303803777873026e6c0000010001 +6c4780000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +39283 +c562001000010000000000001367696e6b676f7a6f726770726f6a656374656e026e6c00000f0001 +c562800000010000000200001367696e6b676f7a6f726770726f6a656374656e026e6c00000f0001c00c0002000100015180000c026e7306766576696461c020c00c00020001000151800006036e7332c037 + +39284 +409e00000001000000000000046d6f7665026e6c00000f0001 +409e80000001000000020002046d6f7665026e6c00000f0001c00c0002000100015180000e036e73310762726f656b656ec011c00c00020001000151800006036e7332c029c02500010001000151800004d5bd1466c03f00010001000151800004507edbbb + +39285 +c56d0000000100000000000006656d63617274026e6c0000010001 +c56d8000000100000002000206656d63617274026e6c0000010001c00c0002000100015180000c026e73067574722d6978c013c00c00020001000151800006036e7332c02ac0270001000100015180000451113206c03f00010001000151800004d5c42806 + +39286 +d1ab00000001000000000000036e733109666972737466696e64026e6c0000010001 +d1ab80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39287 +d1ac00000001000000000000036e733209666972737466696e64026e6c0000010001 +d1ac80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39288 +68a900000001000000000000036e733107616d6572636f6d026e6c0000010001 +68a980000001000000020001036e733107616d6572636f6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02c00010001000151800004c2b2b20a + +39289 +7ae30000000100000000000015616476616e63656d6172696e65746563686e696373026e6c00001c0001 +7ae38000000100000002000015616476616e63656d6172696e65746563686e696373026e6c00001c0001c00c0002000100015180000f04686e73300774697363616c69c022c00c0002000100015180000704686e7331c03b + +39290 +e8c700000001000000000000036d783302686e026e6c0000010001 +e8c780000001000000020000036d783302686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +39291 +160c00000001000000000000036d783102686e026e6c0000010001 +160c80000001000000020000036d783102686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +39292 +23dd00000001000000000000036d783202686e026e6c0000010001 +23dd80000001000000020000036d783202686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +39293 +555000000001000000000000036e733503777873026e6c0000010001 +555080000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +39294 +148000000001000000000000036d783102686e026e6c0000010001 +148080000001000000020000036d783102686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02b + +39295 +81840000000100000000000006656d6d617573026e6c00000f0001 +81848000000100000002000206656d6d617573026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c013c00c00020001000151800006036e7332c02ac02700010001000151800004d4cb0e42c04200010001000151800004d4cb1221 + +39296 +b94000000001000000000000037777770f6261636b746f746865667574757265026e6c0000010001 +b94080000001000000020000037777770f6261636b746f746865667574757265026e6c0000010001c01000020001000151800013026e730a646168686f7374696e6703636f6d00c01000020001000151800006036e7332c037 + +39297 +d1ae00000001000000000000036e733109666972737466696e64026e6c0000010001 +d1ae80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39298 +d1af00000001000000000000036e733209666972737466696e64026e6c0000010001 +d1af80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39299 +2d3300000001000000000000026e73066265656b756d026e6c0000010001 +2d3380000001000000020002026e73066265656b756d026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5880e33c03800010001000151800004d5880e34 + +39300 +fad700000001000000000000036e733207776562726f6f74026e6c00001c0001 +fad780000001000000020002036e733207776562726f6f74026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eddc787c00c0001000100015180000450648b3c + +39301 +2c4d00000001000000000000036e733107776562726f6f74026e6c00001c0001 +2c4d80000001000000020002036e733107776562726f6f74026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eddc787c03a0001000100015180000450648b3c + +39302 +38aa0000000100000000000004686f6d6506706c616e6574026e6c0000010001 +38aa8000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +39303 +40ec0000000100000000000004646e733103766970026e6c00001c0001 +40ec8000000100000003000304646e733103766970026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c0110002000100015180000704646e7333c011c00c00010001000151800004d44fe803c03700010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +39304 +67b10000000100000000000004646e733103766970026e6c0000260001 +67b18000000100000003000304646e733103766970026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c0110002000100015180000704646e7333c011c00c00010001000151800004d44fe803c03700010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +39305 +f5550000000100000000000004646e733203766970026e6c00001c0001 +f5558000000100000003000304646e733203766970026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02900010001000151800004d44fe803c00c00010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +39306 +3d1c0000000100000000000004646e733203766970026e6c0000260001 +3d1c8000000100000003000304646e733203766970026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02900010001000151800004d44fe803c00c00010001000151800004c3f5c782c04a00010001000151800004d44ff303 + +39307 +2b8f0000000100000000000004646e733303766970026e6c00001c0001 +2b8f8000000100000003000304646e733303766970026e6c00001c0001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02900010001000151800004d44fe803c03c00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +39308 +19d90000000100000000000004646e733303766970026e6c0000260001 +19d98000000100000003000304646e733303766970026e6c0000260001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02900010001000151800004d44fe803c03c00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +39309 +5a6d00000001000000000000086176656e747572610a62686d732d67726f6570026e6c0000010001 +5a6d80000001000000020002086176656e747572610a62686d732d67726f6570026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c03400010001000151800004d9726162c04600010001000151800004d9726161 + +39310 +ca58000000010000000000000e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001 +ca58800000010000000200020e736c6172746962617274666173740a62686d732d67726f6570026e6c0000010001c01b00020001000151800006036e7331c01bc01b00020001000151800006036e7332c01bc03a00010001000151800004d9726162c04c00010001000151800004d9726161 + +39311 +464b00100001000000000001036e73320c636f6e63657074732d696374026e6c00000100010000290800000080000000 +464b80000001000000020003036e73320c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b0000291000000000000000 + +39312 +101a0000000100000000000008686f73746e616d650462696e640000100003 +101a8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39313 +ec99000000010000000000000469736277026e6c0000010001 +ec99800000010000000200020469736277026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c011c00c00020001000151800006036e7332c028c02500010001000151800004d9aa2042c03e00010001000151800004d9aa2c06 + +39314 +74a900000001000000000000036e733207626265796f6e64026e6c0000010001 +74a980000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +39315 +f4ba00000001000000000000056165646573026e6c0000010001 +f4ba80000001000000020000056165646573026e6c0000010001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02a + +39316 +664a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +664a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39317 +a6c800000001000000000000037777770873747564696f3532026e6c0000010001 +a6c880000001000000020001037777770873747564696f3532026e6c0000010001c0100002000100015180000f036e73330864686f7374696e67c019c01000020001000151800006036e7332c031c04800010001000151800004515b000a + +39318 +b96000000001000000000000037777770a63642d686f65736a6573026e6c0000010001 +b96080000001000000030002037777770a63642d686f65736a6573026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +39319 +27f900000001000000000000077574726f6e6978026e6c00000f0001 +27f984030001000000010000077574726f6e6978026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +39320 +b4d900000001000000000000153231322d3132332d3134302d3132352d756e6465660774697363616c69026e6c0000010001 +b4d980000001000000030002153231322d3132332d3134302d3132352d756e6465660774697363616c69026e6c0000010001c0220002000100015180000704616e7331c022c0220002000100015180000704616e7332c022c0220002000100015180001404616e73330a74697363616c696e657402626500c03e00010001000151800004c3f14d38c05100010001000151800004c3f13325 + +39321 +72aa00000001000000000000037777770870726f73636f7065026e6c0000010001 +72aa80000001000000020001037777770870726f73636f7065026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +39322 +add000000001000000000000036e73330767617574656e67026e6c0000010001 +add080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39323 +920e0000000100000000000006726564626179026e6c0000010001 +920e8000000100000002000206726564626179026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c013c00c00020001000151800006036e7332c02ac02700010001000151800004d4cb0e42c04200010001000151800004d4cb1221 + +39324 +14e300000001000000000000036e73340767617574656e67026e6c0000010001 +14e380000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39325 +fd510000000100000000000009652d6c756e61746963026e6c0000010001 +fd518000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +39326 +2e5a000000010000000000000575726975730473656d61026e6c0000010001 +2e5a800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +39327 +2d0200000001000000000000096175746f2d7375636f026e6c00000f0001 +2d0280000001000000020002096175746f2d7375636f026e6c00000f0001c00c00020001000151800018067765626e69780e6575726f636f6e73756c74616e74c016c00c0002000100015180000a076d61696c6e6978c031c02a000100010001518000045117e555c04e000100010001518000045117e556 + +39328 +ddbb00000001000000000000026e73056269626974026e6c0000010001 +ddbb80000001000000030002026e73056269626974026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f00020001000151800006036e7332c00fc00c00010001000151800004d4ce201fc04e00010001000151800004d4ce2020 + +39329 +929700000001000000000000036e7332056269626974026e6c0000010001 +929780000001000000030002036e7332056269626974026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c01000020001000151800002c00cc02a00010001000151800004d4ce201fc00c00010001000151800004d4ce2020 + +39330 +5cb900000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +5cb980000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +39331 +719b00000001000000000000037777770b7265696b69666f72756d73026e6c0000010001 +719b80000001000000030002037777770b7265696b69666f72756d73026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +39332 +1e4c0000000100000000000004646e7332096469676974616c7573026e6c0000010001 +1e4c8000000100000003000304646e7332096469676974616c7573026e6c0000010001c0110002000100015180000e0b6e616d6573657276657231c011c0110002000100015180000e0b6e616d6573657276657232c011c0110002000100015180000e0b6e616d6573657276657233c011c02f0001000100015180000451ad2020c0490001000100015180000451ad2021c0630001000100015180000452c049aa + +39333 +23970000000100000000000004646e7331096469676974616c7573026e6c0000010001 +23978000000100000003000304646e7331096469676974616c7573026e6c0000010001c0110002000100015180000e0b6e616d6573657276657231c011c0110002000100015180000e0b6e616d6573657276657232c011c0110002000100015180000e0b6e616d6573657276657233c011c02f0001000100015180000451ad2020c0490001000100015180000451ad2021c0630001000100015180000452c049aa + +39334 +a44c00000001000000000000087761616c64696a6b026e6c00000f0001 +a44c80000001000000020000087761616c64696a6b026e6c00000f0001c00c0002000100015180000f07686f7374696e670470756e74c015c00c00020001000151800006036e7331c031 + +39335 +2fb20000000100000000000006636861726973026e6c00000f0001 +2fb28000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39336 +affd000000010000000000000377777714706c616167646965726265737472696a64696e67026e6c0000010001 +affd800000010000000200000377777714706c616167646965726265737472696a64696e67026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03f + +39337 +c5cb0000000100000000000006646f6e6e6572026e6c00000f0001 +c5cb8000000100000002000006646f6e6e6572026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02b + +39338 +b7f200000001000000000000046d61696c09617175617365727661026e6c0000010001 +b7f280000001000000020000046d61696c09617175617365727661026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c035 + +39339 +fd42000000010000000000000377777709756974736c6167656e026e6c0000010001 +fd42800000010000000300010377777709756974736c6167656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +39340 +05b10000000100000000000007776562736974650a6c656964656e756e6976026e6c0000010001 +05b18000000100000003000307776562736974650a6c656964656e756e6976026e6c0000010001c0140002000100015180000b08736865726c6f636bc014c0140002000100015180000906776174736f6ec014c0140002000100015180000e036e733107737572666e6574c01fc0330001000100015180000484e50806c04a0001000100015180000484e51602c05f00010001000151800004c0576a65 + +39341 +ff0900000001000000000000037777770d766163616e6365736f6c65696c026e6c0000010001 +ff0980000001000000030003037777770d766163616e6365736f6c65696c026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ec0100002000100015180000a076e736175746832c03ac0100002000100015180000a076e736175746833c03ac03200010001000151800004d5880c33c04c00010001000151800004d5880c3bc06200010001000151800004d4ccc00b + +39342 +d148000000010000000000000369766d026e6c0000ff0001 +d148800000010000000300010369766d026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +39343 +28450000000100000000000003777777097061726e6173736961026e6c0000010001 +28458000000100000002000003777777097061726e6173736961026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +39344 +2db70000000100000000000003666c79036b6c6d026e6c0000010001 +2db78000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +39345 +ad370000000100000000000005646e732d31056c61646f74026e6c0000010001 +ad378000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39346 +16fa0000000100000000000005646e732d32056c61646f74026e6c0000010001 +16fa8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39347 +d12c00000001000000000000036e733109666972737466696e64026e6c0000010001 +d12c80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39348 +dc8e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +dc8e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39349 +a5af00000001000000000000036e733209666972737466696e64026e6c0000010001 +a5af80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39350 +2a310000000100000000000003777777076368617474656e056765747873026e6c0000010001 +2a318000000100000002000003777777076368617474656e056765747873026e6c0000010001c01800020001000151800011056c656d6f6e0571696e6970036e657400c01800020001000151800007046c696d65c038 + +39351 +30a8000000010000000000000734657665727931026e6c0000010001 +30a8800000010000000200010734657665727931026e6c0000010001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +39352 +6e2e000000010000000000000b61747468656d6f766965730b7375706572696f722d6973026e6c0000010001 +6e2e800000010000000200020b61747468656d6f766965730b7375706572696f722d6973026e6c0000010001c0180002000100015180000a036e733103686978c024c01800020001000151800006036e7332c03cc03800010001000151800004d5a0da0ac04e0001000100015180000451112ec3 + +39353 +e66d0000000100000000000006737467616263026e6c0000ff0001 +e66d8000000100000002000106737467616263026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c013c04000010001000151800004c2860043 + +39354 +bf1b0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +bf1b8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +39355 +5cee00000001000000000000037777770b736368696c6465726d616e026e6c0000010001 +5cee80000001000000020000037777770b736368696c6465726d616e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +39356 +24e700000001000000000000026373026e6c0000ff0001 +24e780000001000000020002026373026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800013036e73320c636f6c742d74656c65636f6dc00fc02300010001000151800004d47bfe02c03500010001000151800004d44ea00e + +39357 +63ce00000001000000000000036e73320c636f6c742d74656c65636f6d026e6c0000010001 +63ce80000001000000020002036e73320c636f6c742d74656c65636f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03100010001000151800004d44ea00dc00c00010001000151800004d44ea00e + +39358 +5c33000000010000000000000d7265696a6e2d7665726b75696c026e6c0000010001 +5c33800000010000000200020d7265696a6e2d7665726b75696c026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +39359 +1bbb0000000100000000000003777777097574696c6974696573026e6c0000010001 +1bbb8000000100000002000003777777097574696c6974696573026e6c0000010001c0100002000100015180000e026e73056e65647873036e657400c01000020001000151800006036e7332c031 + +39360 +09ff000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +09ff800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +39361 +f40800000001000000000000037777770761626e616d726f026e6c0000010001 +f40880000001000000020002037777770761626e616d726f026e6c0000010001c0100002000100015180000b0870686f626f733031c010c0100002000100015180000b0870686f626f733032c010c02c00010001000151800004a7cac30bc04300010001000151800004a7cac30c + +39362 +83fa000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +83fa800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +39363 +ecbf000000010000000000000e6d61706d616368696e65646430330a6c6f6b617469656e6574026e6c0000010001 +ecbf800000010000000200020e6d61706d616368696e65646430330a6c6f6b617469656e6574026e6c0000010001c01b0002000100015180000b036e733104696e666fc026c01b00020001000151800006036e7332c03ec03a00010001000151800004504fc020c05100010001000151800004504fc021 + +39364 +375828000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373076d6b626164616d026e6c000021000100000258001900000064018506736572766572076d6b626164616d026e6c00 +3758a8040000000000000000 + +39365 +05a3000000010000000000000867616d656c696665026e6c00000f0001 +05a3800000010000000200000867616d656c696665026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +39366 +cd7b00000001000000000000055f6c646170045f746370026463065f6d736463730870637365727630310a4f6f737465696e646572026e6c0000210001 +cd7b84030001000000010000055f6c646170045f746370026463065f6d736463730870637365727630310a4f6f737465696e646572026e6c0000210001c03500060001000038400036026e730f646f6d61696e2d7265676973747279c0350a686f73746d6173746572c04c0bf1e540000070800000384000278d0000003840 + +39367 +134c0000000100000000000004444e5331064d494e4c4e56026e6c0000010001 +134c8000000100000003000304444e5331064d494e4c4e56026e6c0000010001c01100020001000151800002c00cc0110002000100015180000e036e733107737572666e6574c018c0110002000100015180000704646e7332c011c00c00010001000151800004910c2201c03a00010001000151800004c0576a65c05400010001000151800004910c2202 + +39368 +89a60000000100000000000004444e5332064d494e4c4e56026e6c0000010001 +89a68000000100000003000304444e5332064d494e4c4e56026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000e036e733107737572666e6574c018c01100020001000151800002c00cc02c00010001000151800004910c2201c03f00010001000151800004c0576a65c00c00010001000151800004910c2202 + +39369 +2b0d000000010000000000000a73746172746b6162656c026e6c0000ff0001 +2b0d800000010000000300010a73746172746b6162656c026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +39370 +0000000070024000ff160000020405b401010402 +000080010000000000000000 + +39371 +e26c00000001000000000000036e733103617474026e6c0000010001 +e26c80000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +39372 +a20300000001000000000000036e733203617474026e6c0000010001 +a20380000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +39373 +b7cebe2650104470b1650000000000000000 + + +39374 +261100000001000000000000036e73310477656233026e6c00001c0001 +261180000001000000020002036e73310477656233026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d436240ec03700010001000151800004c2b262ef + +39375 +e51800000001000000000000036e73310477656233026e6c0000260001 +e51880000001000000020002036e73310477656233026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d436240ec03700010001000151800004c2b262ef + +39376 +7a5800000001000000000000036e73320477656233026e6c00001c0001 +7a5880000001000000020002036e73320477656233026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d436240ec00c00010001000151800004c2b262ef + +39377 +b7cebe2650184470d07c0000008c6780000000010001000000000f313039393531313632373739342d330000f900010f313039393531313632373739342d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc34403c4db400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 + + +39378 +97d500000001000000000000036e73320477656233026e6c0000260001 +97d580000001000000020002036e73320477656233026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d436240ec00c00010001000151800004c2b262ef + +39379 +a13100000001000000000000037777770d6472756773696e666f7465616d026e6c0000010001 +a13180000001000000030001037777770d6472756773696e666f7465616d026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ec01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c050c032000100010001518000043efa0202 + +39380 +03bb00000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03bb80000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +39381 +b7cebe3450114462b0d60000000000000000 + + +39382 +4d5f0000000100000000000007547269657374650a63656e74726963627367026e6c0000060001 +4d5f8403000100000001000007547269657374650a63656e74726963627367026e6c0000060001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +39383 +0000000070024000734a0000020405b401010402 +000080010000000000000000 + +39384 +b7cebe3550104462b0d50000000000000000 + + +39385 +b7cf52485010447091760000000000000000 +b7cfd2440000000000000000 + +39386 +b7cf524850184470b6f10000008c621d000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc34403c4db400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 +b7cfd2440000000000000000 + +39387 +3614000000010000000000000663617374656c026e6c00000f0001c00c000f0001 +3614800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39388 +7e3700000001000000000000024e5308565555525745524b024e4c0000010001 +7e3780000001000000030001024e5308565555525745524b024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +39389 +1bcc0000000100000000000003686c6903617a75026e6c00000f0001 +1bcc8000000100000003000303686c6903617a75026e6c00000f0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c01000020001000151800009036e7333027575c014c028000100010001518000048f79fe01c03900010001000151800004c0576a65c0530001000100015180000483d31020 + +39390 +2618000000010000000000000663617374656c026e6c00000f0001c00c000f0001 +2618800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39391 +3e24000000010000000000000663617374656c026e6c00000f0001c00c000f0001 +3e24800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39392 +170228000001000200000000026e6c000006000107547269657374650a63656e74726963627367026e6c00000500fe000000000000c014000100010000000000040a010124 +1702a8040000000000000000 + +39393 +38ad00000001000000000000096d6f7265706f776572077468656d6f6c65026e6c0000010001 +38ad80000001000000020000096d6f7265706f776572077468656d6f6c65026e6c0000010001c01600020001000151800013036e73310973797374656d69707303636f6d00c01600020001000151800006036e7332c036 + +39394 +b7cf52565011446290e70000000000000000 +b7cfd2540000000000000000 + +39395 +000000007002400058000000020405b401010402 +000080010000000000000000 + +39396 +262a000000010000000000000663617374656c026e6c00000f0001c00c000f0001 +262a800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39397 +3e36000000010000000000000663617374656c026e6c00000f0001c00c000f0001 +3e36800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39398 +000000007002400047b900000204056401010402 +000080010000000000000000 + +39399 +b7cf52575010446290e60000000000000000 +b7cfd2540000000000000000 + +39400 +b7d1f65650104470d21b0000000000000000 + + +39401 +3654000000010000000000000663617374656c026e6c0000010001c00c00010001 +3654800000010000000200020663617374656c026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +39402 +b7d1f656501844703f370000008c1a7d000000010001000000000f313039393531313632373739342d320000f900010f313039393531313632373739342d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afc34403c4db400030000002d4e544c4d535350000100000097b200c0070007002600000006000600200000005345525645524d4b424144414d0000 + + +39403 +d8f30000000100000000000003777777076368617474656e056765747873026e6c0000010001 +d8f38000000100000002000003777777076368617474656e056765747873026e6c0000010001c01800020001000151800011056c656d6f6e0571696e6970036e657400c01800020001000151800007046c696d65c038 + +39404 +73b90000000100000000000003706f700b616e757361747265736965026e6c0000010001 +73b98000000100000003000203706f700b616e757361747265736965026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +39405 +b7d27a61501040b041390000000000000000 +b7d2fa640000000000000000 + +39406 +b7d1f66450114462d18c0000000000000000 + + +39407 +b7d27a61501840b0204f00000087126e000000010001000000000e3939363433323431323639302d330000f900010e3939363433323431323639302d330000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afba9403c4d2900030000002a4e544c4d535350000100000097b200e003000300270000000700070020000000545249455354454243430000 +b7d2fa640000000000000000 + +39408 +dfeb0000000100000000000003706f700b616e757361747265736965026e6c0000010001 +dfeb8000000100000003000203706f700b616e757361747265736965026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +39409 +27a6000000010000000000000a57494c47454e5354414d024e4c00000f0001 +27a6800000010000000200020a57494c47454e5354414d024e4c00000f0001c00c0002000100015180000d036e7331066e6c74726565c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d4b20403c04400010001000151800004d5881e45 + +39410 +c43c0000000100000000000003647a68026e6c0000ff0001 +c43c8000000100000002000003647a68026e6c0000ff0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c028 + +39411 +f4f50000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +f4f58000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +39412 +68a200000001000000000000117569746765766572696a6b6c656d656e74026e6c0000ff0001 +68a280000001000000020001117569746765766572696a6b6c656d656e74026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c01ec00c00020001000151800010036e733206776964657873036e657400c03200010001000151800004d4ccc0fc + +39413 +b7d27a6f501140a240af0000000000000000 +b7d2fa640000000000000000 + +39414 +0000000070024000ddcf00000204056401010402 +000080010000000000000000 + +39415 +b7d1f66550104462d18b0000000000000000 + + +39416 +92c100000001000000000000046d61696c08756e69766572736f026e6c0000010001 +92c180000001000000030003046d61696c08756e69766572736f026e6c0000010001c0110002000100015180000e076e73617574683103626974c01ac0110002000100015180000a076e736175746832c036c0110002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +39417 +3e8e0000000100000000000003777777096e7474622d77657374026e6c0000010001 +3e8e8000000100000002000203777777096e7474622d77657374026e6c0000010001c0100002000100015180000e036e7331076a646e686f7374c01ac01000020001000151800006036e7332c032c02e000100010001518000045054e451c048000100010001518000045054e452 + +39418 +112600000001000000000000026e73076e656473746174026e6c00001c0001 +112680000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39419 +d2ff00000001000000000000026e73076e656473746174026e6c0000260001 +d2ff80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39420 +f52300000001000000000000036e7332076e656473746174026e6c0000010001 +f52380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39421 +d78500000001000000000000036e7332076e656473746174026e6c00001c0001 +d78580000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39422 +5bc700000001000000000000036e7333076e656473746174026e6c00001c0001 +5bc780000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +39423 +744100000001000000000000036e7333076e656473746174026e6c0000260001 +744180000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +39424 +c7a400000001000000000000036e7334076e656473746174026e6c0000010001 +c7a480000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39425 +39d400000001000000000000036e7334076e656473746174026e6c00001c0001 +39d480000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39426 +52bd00000001000000000000036e7334076e656473746174026e6c0000260001 +52bd80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39427 +b7d37167501040b0e0480000000000000000 +b7d3f1640000000000000000 + +39428 +b7d27a70501040a240ae0000000000000000 +b7d2fa740000000000000000 + +39429 +b7d37167501840b09f7f00000087344d000000010001000000000e3939363433323431323639302d320000f900010e3939363433323431323639302d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afba9403c4d2900030000002a4e544c4d535350000100000097b200e003000300270000000700070020000000545249455354454243430000 +b7d3f1640000000000000000 + +39430 +531c00000001000000000000036e73320a6461632d706c616e6574026e6c0000260001 +531c80000001000000030003036e73320a6461632d706c616e6574026e6c0000260001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +39431 +b7d37175501140a2dfbe0000000000000000 +b7d3f1740000000000000000 + +39432 +0000000070024000d32800000204056401010402 +000080010000000000000000 + +39433 +b7d37176501040a2dfbd0000000000000000 +b7d3f1740000000000000000 + +39434 +b7d40c73501040b03a950000000000000000 +b7d48c740000000000000000 + +39435 +dbee00000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +dbee80000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +39436 +aec100000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +aec180000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +39437 +e4b10000000100000000000007746869656c656e066d796164736c026e6c0000ff0001 +e4b18000000100000002000207746869656c656e066d796164736c026e6c0000ff0001c0140002000100015180000f036e73310863616d627269756dc01bc01400020001000151800006036e7332c033c02f00010001000151800004d9131082c04a00010001000151800004d5efb202 + +39438 +1b460000000100000000000003777777096a616e2d67726f656e026e6c0000010001 +1b468000000100000002000003777777096a616e2d67726f656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +39439 +b7d40c73501840b0d7ec00000087562c000000010001000000000e3939363433323431323639302d320000f900010e3939363433323431323639302d320000f900ff00000000004d03677373096d6963726f736f667403636f6d00403afba9403c4d2900030000002a4e544c4d535350000100000097b200e003000300270000000700070020000000545249455354454243430000 +b7d48c740000000000000000 + +39440 +b7d40c81501140a23a0b0000000000000000 +b7d48c840000000000000000 + +39441 +b7d40c82501040a23a0a0000000000000000 +b7d48c840000000000000000 + +39442 +1bff00000001000000000000066875697a656e056461786973026e6c0000010001 +1bff80000001000000020002066875697a656e056461786973026e6c0000010001c0130002000100015180000f036e7331086461786973776562c019c01300020001000151800006036e7332c031c02d00010001000151800004c323c083c04800010001000151800004c323c084 + +39443 +711300000001000000000000046d61696c06636f6e6e6f72026e6c0000010001 +711380000001000000020000046d61696c06636f6e6e6f72026e6c0000010001c0110002000100015180000b026e73026e6c036e657400c0110002000100015180001206617574683630026e73026e6c027575c032 + +39444 +a9a200000001000000000000037777770c7761746b696a6b6a656e6f75026e6c0000010001 +a9a280000001000000020000037777770c7761746b696a6b6a656e6f75026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c036 + +39445 +d42400000001000000000000096d616b656c61617273096f7665727a69636874026e6c0000010001 +d42480000001000000030003096d616b656c61617273096f7665727a69636874026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800006036e7333c016c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +39446 +b60c00000001000000000000036e73320c636f6e63657074732d696374026e6c0000010001 +b60c80000001000000020002036e73320c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b + +39447 +79ed0000000100000000000008616c747265636874026e6c00000f0001 +79ed8000000100000002000008616c747265636874026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02c + +39448 +adfa0000000100000000000005617274616e026e6c0000010001 +adfa8000000100000002000205617274616e026e6c0000010001c00c0002000100015180000c026e73067574722d6978c012c00c00020001000151800006036e7332c029c0260001000100015180000451113206c03e00010001000151800004d5c42806 + +39449 +76d50010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +76d58000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +39450 +5ad20010000100000000000103626c3102626c06787334616c6c026e6c00002600010000290800000080000000 +5ad28000000100000003000303626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +39451 +20640000000100000000000009652d6c756e61746963026e6c0000010001 +20648000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +39452 +c4af000000010000000000000777697373696e6b026e6c00000f0001 +c4af800000010000000300030777697373696e6b026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c014c00c0002000100015180000a076e736175746832c030c00c0002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +39453 +999b00000001000000000000037777770c6c756973746572726164696f026e6c0000010001 +999b80000001000000020000037777770c6c756973746572726164696f026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c036 + +39454 +a8c600000001000000000000036e733109666972737466696e64026e6c0000010001 +a8c680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39455 +bede00000001000000000000046e733031066368656c6c6f026e6c0000010001 +bede80000001000000030003046e733031066368656c6c6f026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c00c00010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +39456 +46be00000001000000000000046e733032066368656c6c6f026e6c0000010001 +46be80000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +39457 +bcdd00000001000000000000037777770c6465636f6d65647962616e64026e6c0000010001 +bcdd84030001000000010000037777770c6465636f6d65647962616e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +39458 +a3ab00000001000000000000036e733209666972737466696e64026e6c0000010001 +a3ab80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39459 +f2030000000100000000000003777777086d74726565787878026e6c0000010001 +f2038000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +39460 +0ac6000000010000000000000377777706706167696e61026e6c0000010001 +0ac6800000010000000300030377777706706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02b000100010001518000043e45a282c03d000100010001518000043e45a283c04f000100010001518000043e45a284 + +39461 +78f3001000010000000000010463756369026e6c0000ff00010000290800000000000000 +78f3800000010000000300040463756369026e6c0000ff0001c00c0002000100015180000904686572610178c00cc00c0002000100015180000c066865726d6573026e6cc00cc00c00020001000151800009066865726d6573c02ac02500010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d80020000291000000000000000 + +39462 +506c0000000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +506c8000000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +39463 +14ea0000000100000000000003777777086264736d61676963026e6c0000010001 +14ea8000000100000002000003777777086264736d61676963026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c019c0100002000100015180000805646e732d32c033 + +39464 +cca80000000100000000000005646e732d31056c61646f74026e6c0000010001 +cca88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39465 +191800000001000000000000036e7331056132303030026e6c0000010001 +191880000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +39466 +008a0000000100000000000009652d6c756e61746963026e6c0000010001 +008a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +39467 +d2a8000000010000000000000377777707746f7067616d65026e6c0000010001 +d2a8800000010000000200000377777707746f7067616d65026e6c0000010001c0100002000100015180000f02763109706365787472656d65c018c01000020001000151800005027632c02f + +39468 +c4ee0000000100000000000002763109706365787472656d65026e6c0000010001 +c4ee8000000100000002000202763109706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +39469 +4a6d00000001000000000000036e73330962617365667265616b026e6c0000010001 +4a6d80000001000000030003036e73330962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c32fdc83c03f000100010001518000045054f998c00c00010001000151800004c16d7adb + +39470 +c77f00000001000000000000036e73350962617365667265616b026e6c0000010001 +c77f80000001000000030003036e73350962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c03f000100010001518000045054f998c05100010001000151800004c16d7adb + +39471 +491200000001000000000000036e73320962617365667265616b026e6c0000010001 +491280000001000000030003036e73320962617365667265616b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c32fdc83c00c000100010001518000045054f998c04d00010001000151800004c16d7adb + +39472 +08da00000001000000000000026e730962617365667265616b026e6c0000010001 +08da80000001000000030003026e730962617365667265616b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004c32fdc83c03b000100010001518000045054f998c04d00010001000151800004c16d7adb + +39473 +4c650000000100000000000002763209706365787472656d65026e6c0000010001 +4c658000000100000002000202763209706365787472656d65026e6c0000010001c00f0002000100015180000a036e7331036e7873c019c00f00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +39474 +e8fa00000001000000000000067769656e656e026e6c00000f0001 +e8fa80000001000000020001067769656e656e026e6c00000f0001c00c0002000100015180000a036e733303777873c013c00c00020001000151800006036e7334c02bc03d00010001000151800004d5ef9a65 + +39475 +000d28000001000200000000026e6c0000060001074c4150544f50310c6f62732d636c757374657273026e6c00000500fe000000000000c01400010001000000000004c0a8000b +000da8040000000000000000 + +39476 +ee1300000001000000000000037777770a6b756e737467726f6570026e6c0000010001 +ee1380000001000000030003037777770a6b756e737467726f6570026e6c0000010001c0100002000100015180000e076e73617574683103626974c01bc0100002000100015180000a076e736175746832c037c0100002000100015180000a076e736175746833c037c02f00010001000151800004d5880c33c04900010001000151800004d5880c3bc05f00010001000151800004d4ccc00b + +39477 +98b6000000010000000000000463756369026e6c0000ff0001 +98b6800000010000000300030463756369026e6c0000ff0001c00c0002000100015180000904686572610178c00cc00c0002000100015180000c066865726d6573026e6cc00cc00c00020001000151800009066865726d6573c02ac02500010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +39478 +927d000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +927d800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +39479 +9e8800000001000000000000086e796d7068616561026e6c0000010001 +9e8880000001000000020000086e796d7068616561026e6c0000010001c00c00020001000151800010036e73310673697465347503636f6d00c00c00020001000151800006036e7332c02d + +39480 +c49e0010000100000000000106636861726973026e6c00000f00010000290800000080000000 +c49e8000000100000002000106636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +39481 +1c7d0000000100000000000003777777086b77616c69746578026e6c0000010001 +1c7d8000000100000003000203777777086b77616c69746578026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c019c01000020001000151800006036e7332c031c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c02d00010001000151800004cf2cd7adc04e0001000100015180000452c04365 + +39482 +bd570000000100000000000003626f6107686f7374696e67076575726f6e6574026e6c0000010001 +bd578000000100000002000103626f6107686f7374696e67076575726f6e6574026e6c0000010001c01800020001000151800005026e73c018c0180002000100015180000d026e73046575726f036e657400c03400010001000151800004c2860043 + +39483 +56f00000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +56f08000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39484 +c01b00000001000000000000036e733109666972737466696e64026e6c0000010001 +c01b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39485 +5cff00000001000000000000036e73310b776f726c646f6e6c696e65026e6c0000010001 +5cff80000001000000030002036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +39486 +dfa100000001000000000000036e73310470696e65026e6c0000010001 +dfa180000001000000020002036e73310470696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +39487 +4b9400000001000000000000036e73320470696e65026e6c0000010001 +4b9480000001000000020002036e73320470696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +39488 +d7a9000000010000000000000672756c7366620a6c656964656e756e6976026e6c0000010001 +d7a9800000010000000300030672756c7366620a6c656964656e756e6976026e6c0000010001c0130002000100015180000b08736865726c6f636bc013c0130002000100015180000906776174736f6ec013c0130002000100015180000e036e733107737572666e6574c01ec0320001000100015180000484e50806c0490001000100015180000484e51602c05e00010001000151800004c0576a65 + +39489 +94da00000001000000000000046d61696c056b616e6461026e6c0000010001 +94da80000001000000020002046d61696c056b616e6461026e6c0000010001c0110002000100015180000d036e7331066d696b616a6fc017c01100020001000151800006036e7332c02fc02b00010001000151800004515b038ac04400010001000151800004515b038b + +39490 +0000000070024000e2920000020405b401010402 +000080010000000000000000 + +39491 +cd3100000001000000000000036e733209666972737466696e64026e6c0000010001 +cd3180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39492 +9cc700000001000000000000077769636b2d6974026e6c00000f0001 +9cc784030001000000010000077769636b2d6974026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +39493 +8b580000000100000000000005646e732d31056c61646f74026e6c0000010001 +8b588000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39494 +9e270000000100000000000005646e732d32056c61646f74026e6c0000010001 +9e278000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39495 +e34900000001000000000000046d61696c096e65646572696e756d026e6c0000010001 +e34980000001000000020000046d61696c096e65646572696e756d026e6c0000010001c0110002000100015180000d026e730468736367036e657400c01100020001000151800006036e7332c032 + +39496 +b7d4ac7950104470a6880000000000000000 + + +39497 +b7d4ac79501844709f9c0000008a49f8000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afac0403c4c4000030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004c4150544f50315a50444550330000 + + +39498 +74be00000001000000000000046d61696c0d64722d76616e646572686f6f67026e6c0000010001 +74be80000001000000020002046d61696c0d64722d76616e646572686f6f67026e6c0000010001c0110002000100015180000c026e7306692d63756265c01fc01100020001000151800006036e7330c036c0330001000100015180000452a10b6ec04b0001000100015180000452a123e2 + +39499 +844a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +844a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39500 +d8160000000100000000000008486170707948756706746d66776562026e6c0000ff0001 +d8168000000100000002000008486170707948756706746d66776562026e6c0000ff0001c01500020001000151800011056c656d6f6e0571696e6970036e657400c01500020001000151800007046c696d65c036 + +39501 +b7d4ac8750114462a5fb0000000000000000 + + +39502 +84cf000000010000000000000377777709736d616c6c7a696e65026e6c0000010001 +84cf800000010000000200010377777709736d616c6c7a696e65026e6c0000010001c0100002000100015180000f036e7331087765626672616d65c01ac01000020001000151800006036e7332c032c02e00010001000151800004d4cccfcd + +39503 +4fe70000000100000000000006636861726973026e6c00000f0001 +4fe78000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39504 +5c900000000100000000000003777777116b756e73746765736368696564656e6973026e6c0000010001 +5c908000000100000002000003777777116b756e73746765736368696564656e6973026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c039 + +39505 +b7d4ac8850104462a5fa0000000000000000 + + +39506 +fd8100000001000000000000086d61696c64726f70036b6c6d026e6c0000010001 +fd8180000001000000020001086d61696c64726f70036b6c6d026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000b026e73026e6c036e657400c02d00010001000151800004ab155012 + +39507 +0000000070024000e45c0000020405b401010402 +000080010000000000000000 + +39508 +5fbf00000001000000000000037777770a696e746572706c65696e026e6c0000010001 +5fbf80000001000000030003037777770a696e746572706c65696e026e6c0000010001c0100002000100015180000c036e7331053266617374c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f0001000100015180000450f7c022c047000100010001518000043e858122c059000100010001518000045117eb22 + +39509 +b7c2000000010000000000000673656375726507656e64656d6f6c026e6c0000010001 +b7c2800000010000000200000673656375726507656e64656d6f6c026e6c0000010001c0130002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0130002000100015180000d036e7332036b706e036e657400 + +39510 +c985000000010000000000000377777706656c6f71756f026e6c0000010001 +c985800000010000000200020377777706656c6f71756f026e6c0000010001c0100002000100015180001804646e733110776f726c6477696465686f7374696e67c017c0100002000100015180000704646e7332c030c02b0001000100015180000450f7c20dc04f0001000100015180000450f7c217 + +39511 +8d5c000000010000000000000661736f706f73026e6c0000ff0001 +8d5c800000010000000200000661736f706f73026e6c0000ff0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +39512 +b7d5987150104470bc590000000000000000 + + +39513 +b7d598715018447072e10000008a8e84000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afac0403c4c4000030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004c4150544f50315a50444550330000 + + +39514 +0b9700000001000000000000037777770a64656c746173706f7274026e6c0000010001 +0b9780000001000000020002037777770a64656c746173706f7274026e6c0000010001c0100002000100015180000d036e733106313233776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c9be02c04800010001000151800004d5c9be03 + +39515 +e6310000000100000000000008686f73746e616d650462696e640000100003 +e6318000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39516 +a28f00000001000000000000037777771165696e64686f76656e73646167626c6164026e6c0000010001 +a28f80000001000000020002037777771165696e64686f76656e73646167626c6164026e6c0000010001c0100002000100015180000e036e7331076e657463617374c022c01000020001000151800006036e7332c03ac03600010001000151800004c2970101c05000010001000151800004c297012d + +39517 +62220000000100000000000003777777076d61726c6f6573026e6c0000010001 +62228000000100000002000203777777076d61726c6f6573026e6c0000010001c0100002000100015180000c036e73310563736e6574c018c01000020001000151800006036e7332c030c02c00010001000151800004c2451012c04400010001000151800004c2451212 + +39518 +b7d5987f50114462bbcc0000000000000000 + + +39519 +b39600000001000000000000037777770a6263612d616476696573026e6c0000010001 +b39680000001000000020002037777770a6263612d616476696573026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +39520 +24f000000001000000000000086c616e67686f7574026e6c00000f0001 +24f080000001000000020000086c616e67686f7574026e6c00000f0001c00c00020001000151800013036e733109752d73657276657273036e657400c00c00020001000151800006036e7332c02d + +39521 +84c300100001000000000001026e7303786f73026e6c00000100010000290800000080000000 +84c380000001000000020002026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe20000291000000000000000 + +39522 +d1bc0000000100000000000003777777066f68656c6c6f026e6c0000010001 +d1bc8000000100000003000203777777066f68656c6c6f026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +39523 +7cfb0000000100000000000002353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000010001 +7cfb8000000100000002000202353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000010001c02200020001000151800006036e7330c022c02200020001000151800006036e7331c022c03e00010001000151800004c2a55e01c05000010001000151800004c2a55e05 + +39524 +3f4500000001000000000000026e7303786f73026e6c0000010001 +3f4580000001000000020001026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe2 + +39525 +b7d5988050104462bbcb0000000000000000 + + +39526 +980500000001000000000000037777770774757274656c73026e6c0000010001 +980584030001000000010000037777770774757274656c73026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +39527 +4f410000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +4f418000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39528 +de0300000001000000000000086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001 +de0380000001000000020002086469616c2d31393208656e657267697331036d6c6404646e6574026e6c0000010001c0220002000100015180000d036e7331066d696e646566c027c02200020001000151800006036e7332c03fc03b00010001000151800004d9a9e7c6c05400010001000151800004d9a9e7c5 + +39529 +0000000070024000630d0000020405b401010402 +000080010000000000000000 + +39530 +e4f200100001000000000001036e73310a726564686f7374696e67026e6c00000100010000290800000000000000 +e4f280000001000000020003036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa4050000291000000000000000 + +39531 +8bda0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +8bda8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39532 +f93200100001000000000001036e73320a726564686f7374696e67026e6c00000100010000290800000000000000 +f93280000001000000020003036e73320a726564686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa4050000291000000000000000 + +39533 +62d90000000100000000000003626c3402626c06787334616c6c026e6c0000260001 +62d98000000100000003000203626c3402626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39534 +22d30000000100000000000008686f73746e616d650462696e640000100003 +22d38000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39535 +e1080000000100000000000003777777076e65746b6f6f70026e6c0000010001 +e1088000000100000003000203777777076e65746b6f6f70026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +39536 +a17d0000000100000000000003777777076e65746b6f6f70026e6c0000010001 +a17d8000000100000003000203777777076e65746b6f6f70026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +39537 +b7d7d13f50104470023a0000000000000000 + + +39538 +bab400000001000000000000037777770972696e67746f6e696f026e6c0000010001 +bab480000001000000020002037777770972696e67746f6e696f026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efa404c04b00010001000151800004d5efa405 + +39539 +b2d9000000010000000000000477697368026e6c0000010001 +b2d9800000010000000300020477697368026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +39540 +b7d7d13f50184470f3c90000008a537c000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afac0403c4c4000030000002d4e544c4d535350000100000097b200e0060006002700000007000700200000004c4150544f50315a50444550330000 + + +39541 +c4f00000000100000000000009746f706d6f76657273026e6c0000010001 +c4f08000000100000002000209746f706d6f76657273026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +39542 +4fa60000000100000000000008646967692d636f6d026e6c00000f0001 +4fa68000000100000002000208646967692d636f6d026e6c00000f0001c00c0002000100015180000c036e7331057069637573c015c00c00020001000151800006036e7332c02dc02900010001000151800004d5a0d97dc04100010001000151800004d5a0d97c + +39543 +819a0000000100000000000009676c69646570617468026e6c0000010001 +819a8000000100000002000209676c69646570617468026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +39544 +abc2000000010000000000000377777706666973746d65026e6c0000010001 +abc2800000010000000200020377777706666973746d65026e6c0000010001c0100002000100015180000e026e7308696e7465722d6974c017c01000020001000151800006036e7332c02ec02b00010001000151800004d5c4385ac04500010001000151800004d5c4385b + +39545 +a4a300000001000000000000037777770876656c6f72616d61026e6c0000010001 +a4a380000001000000020002037777770876656c6f72616d61026e6c0000010001c01000020001000151800015036e73310e726567696f70726f766964657273c019c01000020001000151800006036e7332c031c02d00010001000151800004d41da001c04e00010001000151800004d41da1fe + +39546 +0390000000010000000000000b4b494d48454e4452494b58024e4c00000f0001 +0390800000010000000200020b4b494d48454e4452494b58024e4c00000f0001c00c00020001000151800011036e73310a646e7373657276657273c018c00c00020001000151800006036e7332c030c02c000100010001518000045054ed14c04900010001000151800004d5f72f14 + +39547 +b7d7d14d5011446201ad0000000000000000 + + +39548 +fc090000000100000000000006636861726973026e6c00000f0001 +fc098000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39549 +285800000001000000000000036e73320b6973642d686f6c6c616e64026e6c0000010001 +285880000001000000020002036e73320b6973642d686f6c6c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +39550 +26e600000001000000000000026e730b6973642d686f6c6c616e64026e6c0000010001 +26e680000001000000020002026e730b6973642d686f6c6c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +39551 +8fbc00000001000000000000036e733109666972737466696e64026e6c0000010001 +8fbc80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39552 +87e30010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +87e38000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +39553 +235c00000001000000000000036e733103757063026e6c0000010001 +235c80000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +39554 +72ac00000001000000000000046162656c0564656d6f6e026e6c0000010001 +72ac80000001000000030002046162656c0564656d6f6e026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +39555 +0a32000000010000000000000a6970353033636230393105737065656406706c616e6574026e6c0000010001 +0a32800000010000000300030a6970353033636230393105737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +39556 +122c0000000100000000000003667331056c76706161026e6c0000060001 +122c8000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +39557 +2e64000000010000000000000575726975730473656d61026e6c0000010001 +2e64800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +39558 +e5e700000001000000000000036e733205636176656f026e6c00001c0001 +e5e780000001000000020002036e733205636176656f026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000045112a002c00c000100010001518000045112a102 + +39559 +cb7200000001000000000000036e733205636176656f026e6c0000260001 +cb7280000001000000020002036e733205636176656f026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000045112a002c00c000100010001518000045112a102 + +39560 +7def00000001000000000000036e733105636176656f026e6c00001c0001 +7def80000001000000020002036e733105636176656f026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045112a002c038000100010001518000045112a102 + +39561 +6f9900000001000000000000036e733105636176656f026e6c0000260001 +6f9980000001000000020002036e733105636176656f026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045112a002c038000100010001518000045112a102 + +39562 +8f9900000001000000000000036e733209666972737466696e64026e6c0000010001 +8f9980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39563 +80cc000000010000000000000a62656f6e616476696573026e6c00000f0001 +80cc800000010000000200020a62656f6e616476696573026e6c00000f0001c00c0002000100015180000a036e733103696166c017c00c00020001000151800006036e7332c02fc02b000100010001518000045059e040c041000100010001518000045059ee03 + +39564 +c54f00000001000000000000086874726d65646961026e6c00000f0001 +c54f80000001000000020002086874726d65646961026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +39565 +ed7b00000001000000000000026e730b666163696e676661637473026e6c00001c0001 +ed7b80000001000000020002026e730b666163696e676661637473026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +39566 +210700000001000000000000036e73320b666163696e676661637473026e6c00001c0001 +210780000001000000020002036e73320b666163696e676661637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +39567 +c96100000001000000000000036e73320b666163696e676661637473026e6c0000260001 +c96180000001000000020002036e73320b666163696e676661637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +39568 +7d5600000001000000000000026e730b666163696e676661637473026e6c0000260001 +7d5680000001000000020002026e730b666163696e676661637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +39569 +c57e00000001000000000000036e73320b666163696e676661637473026e6c00001c0001 +c57e80000001000000020002036e73320b666163696e676661637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +39570 +23f600000001000000000000036e73320b666163696e676661637473026e6c0000260001 +23f680000001000000020002036e73320b666163696e676661637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +39571 +5f0800000001000000000000026e730b666163696e676661637473026e6c00001c0001 +5f0880000001000000020002026e730b666163696e676661637473026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +39572 +eaaa00000001000000000000026e730b666163696e676661637473026e6c0000260001 +eaaa80000001000000020002026e730b666163696e676661637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +39573 +bf1500000001000000000000026e73057768657070026e6c0000010001 +bf1580000001000000030001026e73057768657070026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c00f00020001000151800007046e733038c03cc00c000100010001518000043e48df58 + +39574 +ac5e000000010000000000000273330e73696d70656c696e7465726e6574026e6c0000010001 +ac5e800000010000000200020273330e73696d70656c696e7465726e6574026e6c0000010001c00f00020001000151800011026e730b6973642d686f6c6c616e64c01ec00f00020001000151800006036e7332c035c03200010001000151800004d5e38d0ac04f00010001000151800004d5e38205 + +39575 +1f3500000001000000000000037777770c6e65756b706c6161746a6573026e6c0000010001 +1f3580000001000000020000037777770c6e65756b706c6161746a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +39576 +aa17000000010000000000000377777706787334616c6c026e6c0000010001 +aa17800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +39577 +256b000000010000000000000b696e7465726368616e6765026e6c00000f0001 +256b800000010000000200000b696e7465726368616e6765026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +39578 +a779000000010000000000000976616e2d6c69657265026e6c0000010001 +a779800000010000000200020976616e2d6c69657265026e6c0000010001c00c0002000100015180000a036e733103696166c016c00c00020001000151800006036e7332c02ec02a000100010001518000045059e040c040000100010001518000045059ee03 + +39579 +44df0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +44df8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39580 +a70000000001000000000000046d61696c0b6d61726b74706c61617473026e6c0000010001 +a70080000001000000020000046d61696c0b6d61726b74706c61617473026e6c0000010001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +39581 +e74600000001000000000000046d61696c0b6d61726b74706c61617473026e6c00001c0001 +e74680000001000000020000046d61696c0b6d61726b74706c61617473026e6c00001c0001c0110002000100015180000f036e733105796b6f6f6e036e657400c01100020001000151800006036e7332c035 + +39582 +0e4c00000001000000000000037777770a656d6973736172696573026e6c0000010001 +0e4c80000001000000020002037777770a656d6973736172696573026e6c0000010001c0100002000100015180001204646e73310a6e65746d617374657273c01bc0100002000100015180000704646e7332c034c02f0001000100015180000451044203c04d00010001000151800004510442c9 + +39583 +6363000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000010001 +6363800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000010001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +39584 +c7aa0000000100000000000007616e74656e6e61026e6c0000010001 +c7aa8000000100000002000107616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +39585 +8ddc0000000100000000000007616e74656e6e61026e6c00001c0001 +8ddc8000000100000002000107616e74656e6e61026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +39586 +332f000000010000000000000b6e732d767575727765726b07646f6f66706f74026e6c0000260001 +332f800000010000000200020b6e732d767575727765726b07646f6f66706f74026e6c0000260001c0180002000100015180000f036e73310863616d627269756dc020c01800020001000151800006036e7332c038c03400010001000151800004d9131082c04f00010001000151800004d5efb202 + +39587 +1a000000000100000000000007414e54454e4e41024e4c0000010001 +1a008000000100000002000107414e54454e4e41024e4c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +39588 +81760000000100000000000007414e54454e4e41024e4c00001c0001 +81768000000100000002000107414e54454e4e41024e4c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +39589 +e1ea00000001000000000000037777770a6c6170746f70706c7573026e6c0000010001 +e1ea80000001000000020002037777770a6c6170746f70706c7573026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +39590 +f47e0000000100000000000003777777096c696e6b7370616765026e6c0000010001 +f47e8000000100000003000203777777096c696e6b7370616765026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +39591 +a5e500000001000000000000076b75707769656c026e6c00000f0001 +a5e580000001000000020000076b75707769656c026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02c + +39592 +0cbf00000001000000000000037777770c67616d6d6172656163746f72026e6c0000010001 +0cbf80000001000000020000037777770c67616d6d6172656163746f72026e6c0000010001c0100002000100015180001704646e73310c676c6f62656e65747765726b03636f6d00c0100002000100015180000704646e7332c036 + +39593 +96b2000000010000000000000774686570616765026e6c00000f0001 +96b2800000010000000200000774686570616765026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c02d + +39594 +d36a000000010000000000000d5352524443303132444d5a303303726463026e6c00001c0001 +d36a800000010000000200020d5352524443303132444d5a303303726463026e6c00001c0001c01a000200010001518000100d7372726463303134646d7a3034c01ac01a00020001000151800002c00cc03200010001000151800004d973e064c00c00010001000151800004d973e054 + +39595 +b10b000000010000000000000d5352524443303134444d5a303403726463026e6c00001c0001 +b10b800000010000000200020d5352524443303134444d5a303403726463026e6c00001c0001c01a00020001000151800002c00cc01a000200010001518000100d7372726463303132646d7a3033c01ac00c00010001000151800004d973e064c04000010001000151800004d973e054 + +39596 +02d40010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000000000000 +02d48000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +39597 +40b50000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +40b58000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39598 +e313000000010000000000000a6c756e6164657369676e026e6c0000010001 +e313800000010000000200000a6c756e6164657369676e026e6c0000010001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02e + +39599 +3e9d0000000100000000000004686f6d6508692d6c7573696f6e026e6c0000010001 +3e9d8000000100000002000204686f6d6508692d6c7573696f6e026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01ac01100020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +39600 +549a00000001000000000000097468657769636b6564026e6c00000f0001 +549a80000001000000020002097468657769636b6564026e6c00000f0001c00c0002000100015180000b036e73610462797465c016c00c00020001000151800006036e7362c02ec02a00010001000151800004d977e520c04100010001000151800004d977e521 + +39601 +d3df00000001000000000000047072693103646e73067073696e6574026e6c0000010001 +d3df80000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +39602 +ec1700000001000000000000047072693203646e73067073696e6574026e6c0000010001 +ec1780000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +39603 +976400000001000000000000047072693303646e73067073696e6574026e6c0000010001 +976480000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +39604 +66f100000001000000000000036e733109666972737466696e64026e6c0000010001 +66f180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39605 +2d7300000001000000000000036e733209666972737466696e64026e6c0000010001 +2d7380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39606 +253c00000001000000000000037777770d6b696e646a656f706b6f6d7374026e6c0000010001 +253c80000001000000030003037777770d6b696e646a656f706b6f6d7374026e6c0000010001c0100002000100015180000a036e733103797873c01ec01000020001000151800006036e7332c036c01000020001000151800006036e7333c036c03200010001000151800004d5efb6dec04800010001000151800004d5efb52fc05a00010001000151800004503de97c + +39607 +edf0001000010000000000010770686964696173026e6c00000100010000290800000080000000 +edf0800000010000000200010770686964696173026e6c0000010001c00c0002000100015180000f026e730678706972697403636f6d00c00c00020001000151800006036e7332c02b0000291000000000000000 + +39608 +3d18000000010000000000000b6d6f6a6f74686561746572026e6c00000f0001 +3d18800000010000000200020b6d6f6a6f74686561746572026e6c00000f0001c00c0002000100015180000f026e73096e65746c6f67696373c018c00c00020001000151800006036e7332c02fc02c00010001000151800004c3c16402c04700010001000151800004c2b2850a + +39609 +63f000000001000000000000036e733109666972737466696e64026e6c0000010001 +63f080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39610 +3e9600000001000000000000036e733209666972737466696e64026e6c0000010001 +3e9680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39611 +ca1600000001000000000000037777770470636d70026e6c0000010001 +ca1684030001000000010000037777770470636d70026e6c0000010001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +39612 +be4200000001000000000000036e73310a726564686f7374696e67026e6c0000010001 +be4280000001000000020002036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +39613 +af9e00000001000000000000036e73320a726564686f7374696e67026e6c0000010001 +af9e80000001000000020002036e73320a726564686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +39614 +4f6a0000000100000000000003657a68026e6c00001c0001 +4f6a8000000100000002000103657a68026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c0240001000100015180000489ae8f03 + +39615 +805200000001000000000000076a6e6c666b646e026e6c00000f0001 +805284030001000000010000076a6e6c666b646e026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +39616 +233f00000001000000000000037777770d7665696c696e676b696a6b6572026e6c0000010001 +233f80000001000000020002037777770d7665696c696e676b696a6b6572026e6c0000010001c0100002000100015180000c04646e73310471776562c01ec0100002000100015180000704646e7332c037c03200010001000151800004d994ac0cc04a00010001000151800004d5c42f6c + +39617 +1d1c00000001000000000000037777770871756f74656e6574026e6c0000010001 +1d1c80000001000000020002037777770871756f74656e6574026e6c0000010001c0100002000100015180000c036e73310575706e6574c019c01000020001000151800006036e7332c031c02d00010001000151800004d5c428dfc0450001000100015180000451113206 + +39618 +bd9b000000010000000000000770686964696173026e6c0000010001 +bd9b800000010000000200000770686964696173026e6c0000010001c00c0002000100015180000f026e730678706972697403636f6d00c00c00020001000151800006036e7332c02b + +39619 +c4060000000100000000000006626579636f6d026e6c00000f0001 +c4068000000100000002000006626579636f6d026e6c00000f0001c00c00020001000151800010036e733109666972737466696e64c013c00c00020001000151800006036e7332c02b + +39620 +53c70000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +53c78000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39621 +21a300000001000000000000066d6f76696174026e6c00000f0001 +21a380000001000000020000066d6f76696174026e6c00000f0001c00c00020001000151800010036e7331066d6f76696174036e657400c00c00020001000151800006036e7332c02b + +39622 +9b90000000010000000000000d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001 +9b90800000010000000200010d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001c01a0002000100015180000d036e7332066f7264696e61c025c01a00020001000151800011036e73320777697265687562036e657400c03900010001000151800004c297c1e9 + +39623 +2b4b000000010000000000000d72656c61746965706c616e6574026e6c0000010001 +2b4b800000010000000200020d72656c61746965706c616e6574026e6c0000010001c00c0002000100015180000c04646e73310470696e73c01ac00c0002000100015180000704646e7332c033c02e00010001000151800004d9c26101c04600010001000151800004d9c26002 + +39624 +86700000000100000000000008696e746572776562026e6c0000010001 +86708000000100000002000208696e746572776562026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +39625 +7afb000000010000000000000967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001 +7afb800000010000000200020967616c6c65726965730d706172746e6572636c69636b73026e6c0000010001c0160002000100015180000f036e73310861746c616e74697ac024c01600020001000151800006036e7332c03cc03800010001000151800004d5efa011c05300010001000151800004d5efa075 + +39626 +b2590000000100000000000004706f7033067a6f6e6e6574026e6c0000010001 +b2598000000100000002000204706f7033067a6f6e6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000e026e7308767575727765726bc018c02c000100010001518000043e3a3204c03d000100010001518000043efa0202 + +39627 +f15a0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f15a8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39628 +b0060000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +b0068000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39629 +fcaf0000000100000000000003777777046b6e6b76026e6c0000010001 +fcaf8000000100000002000203777777046b6e6b76026e6c0000010001c01000020001000151800009036e7331026973c015c01000020001000151800006036e7332c02dc02900010001000151800004d5852102c03e00010001000151800004d5c41503 + +39630 +24c0000000010000000000000377777707746170746f6573026e6c0000010001 +24c0800000010000000200020377777707746170746f6573026e6c0000010001c0100002000100015180000a036e733103686978c018c01000020001000151800006036e7332c030c02c00010001000151800004d5a0da0ac0420001000100015180000451112ec3 + +39631 +4ca900000001000000000000037777770a7672696a6b6f6e696a6e026e6c0000050001 +4ca980000001000000020002037777770a7672696a6b6f6e696a6e026e6c0000050001c01000020001000151800010036e7331096176616e742d696e74c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5de1d07c04b00010001000151800004d5de1807 + +39632 +b7a7000000010000000000000d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001 +b7a7800000010000000200010d646f6d696e6f68617373656c740a6f7264696e612d747469026e6c0000010001c01a0002000100015180000d036e7332066f7264696e61c025c01a00020001000151800011036e73320777697265687562036e657400c03900010001000151800004c297c1e9 + +39633 +4cde00000001000000000000036e7333026e75026e6c0000010001 +4cde80000001000000030003036e7333026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc027000100010001518000043e45a282c039000100010001518000043e45a283c00c000100010001518000043e45a284 + +39634 +691e00000001000000000000036e7332026e75026e6c0000010001 +691e80000001000000030003036e7332026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c027000100010001518000043e45a282c00c000100010001518000043e45a283c047000100010001518000043e45a284 + +39635 +1a0400000001000000000000036e7331026e75026e6c0000010001 +1a0480000001000000030003036e7331026e75026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +39636 +52a400000001000000000000037777771070616c6569736865746f7564656c6f6f026e6c0000010001 +52a484030001000000010000037777771070616c6569736865746f7564656c6f6f026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +39637 +f04000000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +f04080000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +39638 +bc5d00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +bc5d80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +39639 +ce0300000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +ce0380000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +39640 +104900000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +104980000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +39641 +4e7400000001000000000000036e733108696e74726f776562026e6c0000010001 +4e7480000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +39642 +273a00000001000000000000036e733208696e74726f776562026e6c0000010001 +273a80000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +39643 +14f4000000010000000000000761616c64657273026e6c00000f0001 +14f4800000010000000200020761616c64657273026e6c00000f0001c00c00020001000151800014036e73310d6d6576657273686f7374696e67c014c00c00020001000151800006036e7332c02cc02800010001000151800004d5c9e8c8c04800010001000151800004d5c9e8c9 + +39644 +2bc928000001000000010000026e6c0000060001085f6b706173737764045f7564700767696f70646f6d026e6c000021000100000258001a0000006401d00777696e323030300767696f70646f6d026e6c00 +2bc9a8040000000000000000 + +39645 +0eb100000001000000000000037777770972616d737465696a6e026e6c0000010001 +0eb180000001000000020002037777770972616d737465696a6e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +39646 +943e0000000100000000000008504f55575f4244430e6c65617365756e6c696d69746564026e6c0000010001 +943e8000000100000002000008504f55575f4244430e6c65617365756e6c696d69746564026e6c0000010001c0150002000100015180000b026e73026e6c036e657400c0150002000100015180001206617574683630026e73026e6c027575c03e + +39647 +d07600000001000000000000057374696374026e6c00000f0001 +d07680000001000000020002057374696374026e6c00000f0001c00c0002000100015180000b04646e733103723269c012c00c0002000100015180000704646e7332c02bc0260001000100015180000491050e02c03d0001000100015180000491050e22 + +39648 +3d820000000100000000000002353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000050001 +3d828000000100000002000202353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000050001c02200020001000151800006036e7330c022c02200020001000151800006036e7331c022c03e00010001000151800004c2a55e01c05000010001000151800004c2a55e05 + +39649 +000000007002400068980000020405b401010402 +000080010000000000000000 + +39650 +91de0010000100000000000106636861726973026e6c0000ff00010000290800000080000000 +91de8000000100000002000106636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a0000291000000000000000 + +39651 +174f0000000100000000000003697263096e696a656e726f6465026e6c0000010001 +174f8000000100000003000303697263096e696a656e726f6465026e6c0000010001c010000200010001518000070161026e73c010c010000200010001518000040163c030c010000200010001518000040164c030c02e000100010001518000043e3a04a3c04100010001000151800004c26dc2aec05100010001000151800004c0577106 + +39652 +c05e0000000100000000000003777777087468652d6f6d656e026e6c0000010001 +c05e8000000100000003000303777777087468652d6f6d656e026e6c0000010001c0100002000100015180000b04646e733103766970c019c0100002000100015180000704646e7332c032c0100002000100015180000704646e7333c032c02d00010001000151800004d44fe803c04400010001000151800004c3f5c782c05700010001000151800004d44ff303 + +39653 +65c2000000010000000000000469632d73026e6c00000f0001 +65c2800000010000000200000469632d73026e6c00000f0001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029 + +39654 +339100000001000000000000036e7331076d696e76656e77026e6c0000010001 +339180000001000000030002036e7331076d696e76656e77026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c297be47c00c00010001000151800004c297be48 + +39655 +b7d9fb5b50104470dda60000000000000000 + + +39656 +000000007002faf005e600000204057a01010402 +000080010000000000000000 + +39657 +37b50000000100000000000009717561647275676279026e6c00000f0001 +37b58000000100000002000109717561647275676279026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c016c00c00020001000151800006036e7334c02ec02a00010001000151800004d5c401c0 + +39658 +f9b500000001000000000000026e73076575726f6e6574026e6c0000010001 +f9b580000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +39659 +b7d9fb5b501844704b8a0000008f928b000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afead403c502d0003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 + + +39660 +8bf30000000100000000000003777777086c6f76656769726c026e6c0000010001 +8bf38000000100000002000003777777086c6f76656769726c026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +39661 +b7dae9b25010fbec8fd60000000000000000 + + +39662 +39fc00000001000000000000036e7332076e656473746174026e6c0000010001 +39fc80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39663 +9cfe00000001000000000000036e7334076e656473746174026e6c0000010001 +9cfe80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39664 +5bbc00000001000000000000036e7332076e656473746174026e6c0000010001 +5bbc80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39665 +3b2100000001000000000000036e7334076e656473746174026e6c0000010001 +3b2180000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +39666 +064400000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +064480000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +39667 +a37500000001000000000000036e73320d63656e747269636f6e6c696e65026e6c0000010001 +a37580000001000000020002036e73320d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d481ec0cc00c00010001000151800004d590e63a + +39668 +b7d9fb6950114462dd140000000000000000 + + +39669 +b7dae9b25018fbec4c120000008f6809000000010001000000000f313033303739323135313035382d330000f900010f313033303739323135313035382d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403b072a403c58aa0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 + + +39670 +00000000700240006cef0000020405b401010402 +000080010000000000000000 + +39671 +b7d9fb6a50104462dd130000000000000000 + + +39672 +b7dae9c05011fbde8f440000000000000000 + + +39673 +b7db85ea50104470576d0000000000000000 + + +39674 +7a350000000100000000000003656269026e6c00000f0001 +7a358000000100000002000103656269026e6c00000f0001c00c0002000100015180000e036e733107686f7374696e67c00cc00c0002000100015180000d03646e73036b706e03636f6d00c02400010001000151800004c1ad9c46 + +39675 +59860000000100000000000005646e732d31056c61646f74026e6c0000010001 +59868000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39676 +5aee0000000100000000000005646e732d32056c61646f74026e6c0000010001 +5aee8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +39677 +b7db85ea501844707ce10000008fd3fb000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afeb1403c50310003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 + + +39678 +a60b00000001000000000000037777770a6661637475726572656e08736f66747761726512736e656c73746172742d736f667477617265026e6c0000010001 +a60b80000001000000020000037777770a6661637475726572656e08736f66747761726512736e656c73746172742d736f667477617265026e6c0000010001c02400020001000151800011036e733005736572766502636f02756b00c02400020001000151800010036e7330057365727665036e6574c058 + +39679 +000000007002faf0b33800000204057a01010402 +000080010000000000000000 + +39680 +24790000000100000000000006636861726973026e6c0000ff0001 +24798000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39681 +b7dae9c15010fbde8f430000000000000000 + + +39682 +575300000001000000000000036d78320a6d756c74696b6162656c026e6c0000010001 +575380000001000000030002036d78320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c0410001000100015180000450f2e006 + +39683 +91ba00000001000000000000036e733109666972737466696e64026e6c0000010001 +91ba80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39684 +f00300000001000000000000036e733209666972737466696e64026e6c0000010001 +f00380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39685 +b7dc2ffb5010fbecf6de0000000000000000 +b7dcaff40000000000000000 + +39686 +696900000001000000000000036e733305706c616e74026e6c0000010001 +696980000001000000020002036e733305706c616e74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02a00010001000151800004d59f0037c03b00010001000151800004d59f0046 + +39687 +b7db85f85011446256db0000000000000000 + + +39688 +0570000000010000000000000670726f646973056e76776d6e026e6c0000010001 +0570800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +39689 +b7dc2ffb5018fbeccd910000008f4e93000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403b072a403c58aa0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 +b7dcaff40000000000000000 + +39690 +000000007002400060bf0000020405b401010402 +000080010000000000000000 + +39691 +6b760000000100000000000004656b6f6e026e6c00000f0001 +6b768000000100000002000204656b6f6e026e6c00000f0001c00c0002000100015180000e036e73310768656262697a7ac011c00c00020001000151800006036e7332c029c02500010001000151800004c372eb42c03f000100010001518000043e320e91 + +39692 +819200000001000000000000046175746f096f7665727a69636874026e6c0000010001 +819280000001000000030003046175746f096f7665727a69636874026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02f000100010001518000043e45a282c041000100010001518000043e45a283c053000100010001518000043e45a284 + +39693 +b7dc30095011fbdef64c0000000000000000 +b7dcb0040000000000000000 + +39694 +b7db85f95010446256da0000000000000000 + + +39695 +b7dcf17a50104470dfab0000000000000000 + + +39696 +b7dcf17a501844707aa10000008f5e7a000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afeb1403c50310003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 + + +39697 +28f400000001000000000000034e53310a524544484f5354494e47024e4c0000010001 +28f480000001000000020002034e53310a524544484f5354494e47024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +39698 +3ae900000001000000000000034e53320a524544484f5354494e47024e4c0000010001 +3ae980000001000000020002034e53320a524544484f5354494e47024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +39699 +f8c100000001000000000000047072693103646e73067073696e6574026e6c0000010001 +f8c180000001000000030003047072693103646e73067073696e6574026e6c0000010001c01500020001000151800002c00cc015000200010001518000070470726932c011c015000200010001518000070470726933c011c00c000100010001518000049a0ff9a6c03e000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +39700 +bd5800000001000000000000047072693203646e73067073696e6574026e6c0000010001 +bd5880000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +39701 +f8c300000001000000000000047072693303646e73067073696e6574026e6c0000010001 +f8c380000001000000030003047072693303646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c01500020001000151800002c00cc030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac00c000100010001518000049a0ff9ae + +39702 +b7dcf18850114462df190000000000000000 + + +39703 +943300000001000000000000086f72616674657374076c616e616e7762026e6c0000010001 +943384030001000000010000086f72616674657374076c616e616e7762026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +39704 +485200000001000000000000037777770d68756973686f75646265757273026e6c0000010001 +485280000001000000020002037777770d68756973686f75646265757273026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +39705 +a54a000000010000000000000a636172732d7061727473026e6c0000010001 +a54a800000010000000200020a636172732d7061727473026e6c0000010001c00c00020001000151800014036e73310d78786c776562686f7374696e67c017c00c00020001000151800006036e7332c02fc02b000100010001518000045104580ac04b000100010001518000045104601e + +39706 +b7dcf18950104462df180000000000000000 + + +39707 +a14e00000001000000000000037777770a6765696c6566696c6d73026e6c0000010001 +a14e80000001000000020000037777770a6765696c6566696c6d73026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c033 + +39708 +05ea00000001000000000000026e73076e656473746174026e6c0000010001 +05ea80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39709 +bbd50000000100000000000004646e7331057368656c6c026e6c0000010001 +bbd58000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +39710 +13fb00000001000000000000037777770b726563687473707261616b026e6c0000010001 +13fb80000001000000030000037777770b726563687473707261616b026e6c0000010001c01000020001000151800019036e73310f6f726967696e2d736572766963657303636f6d00c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +39711 +35f000000001000000000000026e73076e656473746174026e6c0000010001 +35f080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39712 +03800000000100000000000003313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +03808000000100000002000203313639033134360233330236310770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +39713 +46ac000000010000000000000666697374697806585334414c4c024e4c0000010001 +46ac800000010000000300020666697374697806585334414c4c024e4c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +39714 +dee60010000100000000000005736a676e68026e6c00000f0001 +dee68000000100000002000205736a676e68026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +39715 +5d0a00000001000000000000037777770a766f6963656e6f697365026e6c0000010001 +5d0a80000001000000020002037777770a766f6963656e6f697365026e6c0000010001c0100002000100015180000e026e7308696e7465726c6162c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0902c04900010001000151800004d4cb0903 + +39716 +029d28000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373037777770b726f62696e726f6d6d656c026e6c000021000100000258002100000064005806736572766572037777770b726f62696e726f6d6d656c026e6c00 +029da8040000000000000000 + +39717 +b7dc300a5010fbdef64b0000000000000000 +b7dcb0040000000000000000 + +39718 +190d0000000100000000000009652d6c756e61746963026e6c0000010001 +190d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +39719 +000000007002faf0f7bc00000204057a01010402 +000080010000000000000000 + +39720 +fbb628000001000000010000026e6c0000060001085f6b706173737764045f746370096a6a632d627261766f026e6c000021000100000258001c0000006401d007425241564f3131096a6a632d627261766f026e6c00 +fbb6a8040000000000000000 + +39721 +3feb00000001000000000000037777770870632d616b746976026e6c0000010001 +3feb84030001000000010000037777770870632d616b746976026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +39722 +05c400000001000000000000026e73076e65746c616e64026e6c0000010001 +05c480000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +39723 +c15400000001000000000000036e7332076e65746c616e64026e6c0000010001 +c15480000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +39724 +0000000070024000d1bd00000204058201010402 +000080010000000000000000 + +39725 +ab8b000000010000000000000467747463026e6c00000f0001 +ab8b800000010000000200000467747463026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02b + +39726 +b7ddead25010fbec808a0000000000000000 + + +39727 +eb030000000100000000000008646e73617574683009776973652d67757973026e6c0000010001 +eb038000000100000003000308646e73617574683009776973652d67757973026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7330c015c01500020001000151800006036e7332c015c03300010001000151800004d413cd91c04500010001000151800004d413cd8fc05700010001000151800004c16d7a3e + +39728 +5e790000000100000000000008646e73617574683109776973652d67757973026e6c0000010001 +5e798000000100000003000308646e73617574683109776973652d67757973026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7330c015c01500020001000151800006036e7332c015c03300010001000151800004d413cd91c04500010001000151800004d413cd8fc05700010001000151800004c16d7a3e + +39729 +5d0b0000000100000000000008646e73617574683209776973652d67757973026e6c0000010001 +5d0b8000000100000003000308646e73617574683209776973652d67757973026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7330c015c01500020001000151800006036e7332c015c03300010001000151800004d413cd91c04500010001000151800004d413cd8fc05700010001000151800004c16d7a3e + +39730 +b7ddead25018fbec70b30000008f351d000000010001000000000f313033303739323135313035382d320000f900010f313033303739323135313035382d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403b072a403c58aa0003000000304e544c4d535350000100000097b208e00900090027000000070007002000000057494e3230303047494f504e54444f4d0000 + + +39731 +000000007002400063600000020405b401010402 +000080010000000000000000 + +39732 +d2eb00000001000000000000037777770a646f7577657364756d70026e6c0000010001 +d2eb80000001000000020000037777770a646f7577657364756d70026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +39733 +7afe00000001000000000000096863632d67726f6570026e6c0000010001 +7afe80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +39734 +b7de811e50104218c32a0000000000000000 + + +39735 +4710000000010000000000000472656772026e6c00000f0001 +4710800000010000000300010472656772026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +39736 +057000000001000000000000033130340331363803323334033231370770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +057080000001000000020002033130340331363803323334033231370770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02f00020001000151800006036e7330c02fc02f00020001000151800006036e7331c02fc04b00010001000151800004c2a55e01c05d00010001000151800004c2a55e05 + +39737 +b7de811e50184218042a0000008bafdf000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf7403c4f7700030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 + + +39738 +e7c400000001000000000000036e733109666972737466696e64026e6c0000010001 +e7c480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39739 +b7ddeae05011fbde7ff80000000000000000 + + +39740 +ac4d00000001000000000000156b6c6175636b65747765657769656c657268756973026e6c0000010001 +ac4d80000001000000020002156b6c6175636b65747765657769656c657268756973026e6c0000010001c00c0002000100015180000f036e733108696e74726f776562c022c00c00020001000151800006036e7332c03ac0360001000100015180000450416028c05100010001000151800004c356780c + +39741 +b7b7000000010000000000000d76616e676f67686d757365756d026e6c0000010001 +b7b7800000010000000200020d76616e676f67686d757365756d026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +39742 +b7de812c5011420ac29c0000000000000000 + + +39743 +00000000700240001a6800000204058201010402 +000080010000000000000000 + +39744 +b7df5ab25010447079120000000000000000 +b7dfdab40000000000000000 + +39745 +88be00000001000000000000036d7365026e6c0000010001 +88be80000001000000020002036d7365026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c010c00c00020001000151800006036e7332c027c02400010001000151800004d9aa2042c03d00010001000151800004d9aa2c06 + +39746 +b7df5ab2501844709b1b0000008fd665000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afeb1403c50310003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 +b7dfdab40000000000000000 + +39747 +b7de812d5010420ac29b0000000000000000 + + +39748 +b7e193f550104218f8fa0000000000000000 + + +39749 +9cea00000001000000000000036e733209666972737466696e64026e6c0000010001 +9cea80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39750 +b7e193f55018421846bf0000008ba41b000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf7403c4f7700030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 + + +39751 +16fb00000001000000000000046d61696c0676696e636973026e6c0000010001 +16fb80000001000000020002046d61696c0676696e636973026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02c000100010001518000043efa0651c03d000100010001518000043efa0650 + +39752 +b7ddeae15010fbde7ff70000000000000000 + + +39753 +b7e194035011420af86c0000000000000000 + + +39754 +b7df5ac05011446278800000000000000000 +b7dfdac40000000000000000 + +39755 +fe55000000010000000000000662616e6e65720d6469656e73746d616b6b657273026e6c0000010001 +fe55800000010000000200000662616e6e65720d6469656e73746d616b6b657273026e6c0000010001c0130002000100015180001406737068696e7807726f7365747461036e657400c0130002000100015180000906616e75626973c03c + +39756 +00000000700240000f3900000204058201010402 +000080010000000000000000 + +39757 +ddee000000010000000000000f646f6d61696e2d7265676973747279026e6c00001c0001 +ddee800000010000000300020f646f6d61696e2d7265676973747279026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c01cc00c0002000100015180000b026e73026e6c036e657400c03000010001000151800004c1b09002c04100010001000151800004c0576a65 + +39758 +000000007002400079d00000020405b401010402 +000080010000000000000000 + +39759 +b7e194045010420af86b0000000000000000 + + +39760 +10e3000000010000000000000a73696d6f6e6b726f6f6e026e6c00000f0001 +10e3800000010000000300010a73696d6f6e6b726f6f6e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +39761 +b7e2188c5010421869340000000000000000 +b7e298840000000000000000 + +39762 +86110000000100000000000008686f73746e616d650462696e640000100003 +86118000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39763 +b7df5ac150104462787f0000000000000000 +b7dfdac40000000000000000 + +39764 +b7e2188c501842183cdb0000008b1e39000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf7403c4f7700030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 +b7e298840000000000000000 + +39765 +b7e304b250104470e57e0000000000000000 +b7e380010000000000000000 + +39766 +753500000001000000000000037777770465626179026e6c0000010001 +753580000001000000020000037777770465626179026e6c0000010001c010000200010001518000140963726f636f64696c65046562617903636f6d00c0100002000100015180000b087061636966696572c038 + +39767 +87dd00000001000000000000046574726e05636176656f026e6c0000010001 +87dd80000001000000020002046574726e05636176656f026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02b000100010001518000045112a002c03d000100010001518000045112a102 + +39768 +b7e304b25018447021fa0000008fbcf4000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afeb1403c50310003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 +b7e380010000000000000000 + +39769 +b7e2189a5011420a68a60000000000000000 +b7e298940000000000000000 + +39770 +b7e304c050114462e4ec0000000000000000 +b7e380010000000000000000 + +39771 +6f0e0000000100000000000008686f73746e616d650462696e640000100003 +6f0e8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +39772 +b7e2189b5010420a68a50000000000000000 +b7e298940000000000000000 + +39773 +000000007002400091100000020405b401010402 +000080010000000000000000 + +39774 +07cf000000010000000000000976616e2d6c69657265026e6c0000ff0001 +07cf800000010000000200020976616e2d6c69657265026e6c0000ff0001c00c0002000100015180000a036e733103696166c016c00c00020001000151800006036e7332c02ec02a000100010001518000045059e040c040000100010001518000045059ee03 + +39775 +906600000001000000000000037777770466726565026e6c0000010001 +906680000001000000020002037777770466726565026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +39776 +48710000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +48718000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +39777 +41330000000100000000000009776565726b616d6572026e6c0000010001 +41338000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +39778 +02a028000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373037777770b726f62696e726f6d6d656c026e6c000021000100000258002100000064018506736572766572037777770b726f62696e726f6d6d656c026e6c00 +02a0a8040000000000000000 + +39779 +b7e304c150104462e4eb0000000000000000 +b7e380010000000000000000 + +39780 +b7e3c233501044703f3d0000000000000000 + + +39781 +b7e3c23350184470d6fa0000008f61b2000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afeb1403c50310003000000304e544c4d535350000100000097b208e009000900270000000700070020000000425241564f31314a4a432d425241564f0000 + + +39782 +050c0000000100000000000003777777046e637276026e6c0000010001 +050c8000000100000002000203777777046e637276026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c015c0100002000100015180000805726f62696ec030c02900010001000151800004913a1e04c04500010001000151800004913a1a34 + +39783 +0000000070024000bdff00000204058201010402 +000080010000000000000000 + +39784 +ae8b0000000100000000000003777777036e6e69026e6c0000010001 +ae8b8000000100000002000203777777036e6e69026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004c0577242c03900010001000151800004c0576a65 + +39785 +b7e3c241501144623eab0000000000000000 + + +39786 +23bd00000001000000000000036e73330767617574656e67026e6c0000010001 +23bd80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39787 +23be00000001000000000000036e73340767617574656e67026e6c0000010001 +23be80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39788 +f09900000001000000000000037777770c6175746f7761616c77696a6b026e6c0000010001 +f09984030001000000010000037777770c6175746f7761616c77696a6b026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +39789 +b7e443e550104218ec9f0000000000000000 +b7e4c3e40000000000000000 + +39790 +b7e443e550184218d6cd0000008b06b1000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf7403c4f7700030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 +b7e4c3e40000000000000000 + +39791 +0af400000001000000000000037777770b776170656e6465616c6572026e6c0000010001 +0af484030001000000010000037777770b776170656e6465616c6572026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +39792 +5adc0000000100000000000005656d61696c026e6c0000010001 +5adc8403000100000001000005656d61696c026e6c0000010001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +39793 +b7e443f35011420aec110000000000000000 +b7e4c3f40000000000000000 + +39794 +b7e3c242501044623eaa0000000000000000 + + +39795 +54930000000100000000000006696d616765730777656262656174026e6c0000010001 +54938000000100000002000006696d616765730777656262656174026e6c0000010001c0130002000100015180000f036e7331087765622d62656174c01bc01300020001000151800006036e7332c033 + +39796 +0000000070024000d9ff00000204058201010402 +000080010000000000000000 + +39797 +160000000001000000000000026e73076e656473746174026e6c0000010001 +160080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39798 +b7e443f45010420aec100000000000000000 +b7e4c3f40000000000000000 + +39799 +307e00000001000000000000037777770e6d657373656e676572746f6f6c73026e6c0000010001 +307e80000001000000020000037777770e6d657373656e676572746f6f6c73026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c038 + +39800 +3d5e00000001000000000000046d61696c0f76616c656e74696a6e7363686f6f6c026e6c0000010001 +3d5e80000001000000020000046d61696c0f76616c656e74696a6e7363686f6f6c026e6c0000010001c0110002000100015180000f04686e73300774697363616c69c021c0110002000100015180000704686e7331c03a + +39801 +b7e5104a501042183c3a0000000000000000 +b7e590440000000000000000 + +39802 +b7e5104a501842182f400000008bfed9000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf7403c4f7700030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 +b7e590440000000000000000 + +39803 +792d0000000100000000000003777777046e6f7665026e6c0000010001 +792d8000000100000002000203777777046e6f7665026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c015c01000020001000151800006036e7332c02dc02900010001000151800004505fa002c04400010001000151800004505fac02 + +39804 +d62700000001000000000000057768616861026e6c00000f0001 +d62784030001000000010000057768616861026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +39805 +5c3c00000001000000000000046e73303903777873026e6c0000010001 +5c3c80000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +39806 +7da300000001000000000000046d61696c08652d616374697665026e6c0000010001 +7da380000001000000020002046d61696c08652d616374697665026e6c0000010001c0110002000100015180000a036e7331036e7873c01ac01100020001000151800006036e7332c032c02e00010001000151800004d973c015c04400010001000151800004d973c102 + +39807 +b7e510585011420a3bac0000000000000000 +b7e590540000000000000000 + +39808 +f2f40000000100000000000004686f6d6506706c616e6574026e6c0000010001 +f2f48000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +39809 +0000000070024000818300000204058201010402 +000080010000000000000000 + +39810 +4f0a00000001000000000000036e733503777873026e6c0000010001 +4f0a80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +39811 +8d4a0000000100000000000003777777086672756974686f66026e6c0000010001 +8d4a8000000100000002000003777777086672756974686f66026e6c0000010001c0100002000100015180000f026e73066f786361727403636f6d00c01000020001000151800006036e7332c030 + +39812 +62c50000000100000000000007706172656e636f026e6c00000f0001 +62c58000000100000003000007706172656e636f026e6c00000f0001c00c00020001000151800014036e73310a646e736d616e6167656403636f6d00c00c00020001000151800006036e7337c02cc00c00020001000151800006036e7336c02c + +39813 +1df0000000010000000000000a73746172746b6162656c026e6c00000f0001 +1df0800000010000000300010a73746172746b6162656c026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +39814 +72200000000100000000000008746f747a69656e73026e6c00000f0001 +72208000000100000002000208746f747a69656e73026e6c00000f0001c00c00020001000151800012036e73310b706c7573686f7374696e67c015c00c00020001000151800006036e7332c02dc02900010001000151800004d994ae77c047000100010001518000045054ea06 + +39815 +b7e510595010420a3bab0000000000000000 +b7e590540000000000000000 + +39816 +f3690000000100000000000003686f6d026e6c00000f0001 +f3698000000100000002000103686f6d026e6c00000f0001c00c0002000100015180000d026e7307616e74656e6e61c010c00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02400010001000151800004d995dd13 + +39817 +cd5700000001000000000000026e730d646f6d65696e656e6d61726b74026e6c0000010001 +cd5780000001000000020002026e730d646f6d65696e656e6d61726b74026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e320c64c03f000100010001518000043e64366a + +39818 +1c4800000001000000000000036e73320d646f6d65696e656e6d61726b74026e6c0000010001 +1c4880000001000000020002036e73320d646f6d65696e656e6d61726b74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc032000100010001518000043e320c64c00c000100010001518000043e64366a + +39819 +b7e5f01a5010421803ed0000000000000000 + + +39820 +b7e5f01a5018421838b30000008bbb19000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf8403c4f7800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 + + +39821 +1d6028000001000000010000024e4c0000060001055f6c646170045f74637003706463065f6d7364637306574e54504d4d024e4c000021000100000258001800000064018506776e74706d6d06574e54504d4d024e4c00 +1d60a8040000000000000000 + +39822 +af36000000010000000000000377777705676570726f026e6c0000010001 +af36800000010000000200020377777705676570726f026e6c0000010001c0100002000100015180000c026e7306787334616c6cc016c01000020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +39823 +1e3c0000000100000000000003667331056c76706161026e6c0000060001 +1e3c8000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +39824 +b7e5f0285011420a035f0000000000000000 + + +39825 +19af0000000100000000000004616a6178066e696b686566026e6c0000010001 +19af8000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +39826 +b7e5f0295010420a035e0000000000000000 + + +39827 +ecd5000000010000000000000862656163686e6574026e6c0000010001 +ecd5800000010000000200000862656163686e6574026e6c0000010001c00c0002000100015180000f097873326f666669636503636f6d00c00c0002000100015180001208617869707265737306787334616c6cc015 + +39828 +000000007002400094360000020405b401010402 +000080010000000000000000 + +39829 +c0160000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +c0168000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +39830 +064700000001000000000000037777770a77686974657472617368026e6c0000010001 +064780000001000000020002037777770a77686974657472617368026e6c0000010001c0100002000100015180000e036e733107686f7477697265c01bc01000020001000151800006036e7332c033c02f0001000100015180000451044b03c0490001000100015180000451044bc8 + +39831 +02a328000001000000010000026e6c0000060001055f6c646170045f746370037777770b726f62696e726f6d6d656c026e6c000021000100000258002100000064018506736572766572037777770b726f62696e726f6d6d656c026e6c00 +02a3a8040000000000000000 + +39832 +91a200000001000000000000086168636272616e640564656d6f6e026e6c0000ff0001 +91a280000001000000030002086168636272616e640564656d6f6e026e6c0000ff0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +39833 +b7e6be1850104470467b0000000000000000 + + +39834 +00000000700240007ffe00000204058201010402 +000080010000000000000000 + +39835 +c07b00000001000000000000046e73303803777873026e6c0000010001 +c07b80000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +39836 +bb3c000000010000000000000377777706636861746964026e6c0000010001 +bb3c800000010000000200020377777706636861746964026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c017c01000020001000151800006036e7332c02ec02b0001000100015180000450474002c0490001000100015180000450474102 + +39837 +b7e7a1a25010421850de0000000000000000 + + +39838 +b7e7a1a2501842181a360000008b2587000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf8403c4f7800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 + + +39839 +b7e6be185018447063d90000008c6106000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd19403c4e9900030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 + + +39840 +23c000000001000000000000036e73330767617574656e67026e6c0000010001 +23c080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39841 +23c100000001000000000000036e73340767617574656e67026e6c0000010001 +23c180000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +39842 +2ad2000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c00000f0001 +2ad2800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c00000f0001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +39843 +914c0000000100000000000003756e63026e6c00001c0001 +914c8000000100000002000003756e63026e6c00001c0001c00c00020001000151800016036e73310f627573696e657373636f6e6e656374c010c00c00020001000151800010036e733206776964657873036e657400 + +39844 +b7e7a1b05011420a50500000000000000000 + + +39845 +342b000000010000000000000c62636265726b656c6d616e73026e6c00000f0001 +342b800000010000000200010c62636265726b656c6d616e73026e6c00000f0001c00c0002000100015180000e036e7331076e6564636f6d70c019c00c00020001000151800011036e7332076e6564636f6d70036f726700c02d00010001000151800004c3c1a80d + +39846 +926d00000001000000000000036e73310f627573696e657373636f6e6e656374026e6c0000010001 +926d80000001000000030002036e73310f627573696e657373636f6e6e656374026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +39847 +0000000070024000d0c800000204058201010402 +000080010000000000000000 + +39848 +678500000001000000000000036e73310f627573696e657373636f6e6e656374026e6c0000260001 +678580000001000000030002036e73310f627573696e657373636f6e6e656374026e6c0000260001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +39849 +2d680000000100000000000005726570726f04696e6669026e6c0000010001 +2d688000000100000003000205726570726f04696e6669026e6c0000010001c0120002000100015180000f036e7331086c65617365776562c017c01200020001000151800006036e7332c02fc01200020001000151800012036e7333086c65617365776562036f726700c02b000100010001518000043ed44079c046000100010001518000043ed4407a + +39850 +b7e6be265011446245ec0000000000000000 + + +39851 +b7e7a1b15010420a504f0000000000000000 + + +39852 +16a300000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +16a380000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +39853 +20f000000001000000000000036e73320f6761726e69657270726f6a65637473026e6c00001c0001 +20f080000001000000020002036e73320f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +39854 +537900000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000260001 +537980000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +39855 +7443000000010000000000000a72616c6f64657369676e026e6c0000ff0001 +7443800000010000000200000a72616c6f64657369676e026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c017c00c0002000100015180000704686e7331c030 + +39856 +328400000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +328480000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +39857 +e31300000001000000000000026e730f6761726e69657270726f6a65637473026e6c00001c0001 +e31380000001000000020002026e730f6761726e69657270726f6a65637473026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +39858 +86dc00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000260001 +86dc80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +39859 +9b160000000100000000000003646e73027972026e6c0000010001 +9b168000000100000002000003646e73027972026e6c0000010001c0100002000100015180001103646e7307626974626f6f6d036e657400c0100002000100015180000704646e7332c02b + +39860 +21cf0000000100000000000003646e7307626974626f6f6d026e6c0000010001 +21cf8000000100000002000003646e7307626974626f6f6d026e6c0000010001c0100002000100015180001103646e7307626974626f6f6d036e657400c0100002000100015180000704646e7332c030 + +39861 +44b200000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000010001 +44b280000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +39862 +608b00000001000000000000036e73310f6761726e69657270726f6a65637473026e6c00001c0001 +608b80000001000000020002036e73310f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +39863 +7a5300000001000000000000036e73310f6761726e69657270726f6a65637473026e6c0000260001 +7a5380000001000000020002036e73310f6761726e69657270726f6a65637473026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +39864 +b7e8222b50104218211f0000000000000000 +b7e8a2230000000000000000 + +39865 +0000000070024000a6450000020405b401010402 +000080010000000000000000 + +39866 +ed2700000001000000000000047a766f6d026e6c0000010001 +ed2780000001000000020002047a766f6d026e6c0000010001c00c0002000100015180000d026e7307686f72697a6f6ec011c00c00020001000151800006036e7332c028c02500010001000151800004d5c51803c03e00010001000151800004d5c51805 + +39867 +b7e8222b50184218f34f0000008b1daf000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf8403c4f7800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 +b7e8a2230000000000000000 + +39868 +d69800000001000000000000036e733209666972737466696e64026e6c0000010001 +d69880000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39869 +b0d900000001000000000000047369726f026e6c00000f0001 +b0d980000001000000020000047369726f026e6c00000f0001c00c0002000100015180001004646e73350669706461793102626500c00c0002000100015180000704646e7333c02a + +39870 +b7e822395011420a20910000000000000000 +b7e8a2330000000000000000 + +39871 +b7e6be275010446245eb0000000000000000 + + +39872 +2b7e000000010000000000000377777709766964656f6c616e64026e6c0000010001 +2b7e800000010000000200000377777709766964656f6c616e64026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +39873 +a61c00000001000000000000036e733209666972737466696e64026e6c0000010001 +a61c80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39874 +b72100000001000000000000036e733109666972737466696e64026e6c0000010001 +b72180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39875 +b7e8b9fe501044705ca20000000000000000 + + +39876 +00000000700240008ecb00000204058201010402 +000080010000000000000000 + +39877 +34c000000001000000000000026e7306766576696461026e6c0000010001 +34c080000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +39878 +b7e8223a5010420a20900000000000000000 +b7e8a2330000000000000000 + +39879 +b7e96bb55010421895960000000000000000 +b7e9ebb40000000000000000 + +39880 +b7e8b9fe50184470c0470000008c1bc0000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd19403c4e9900030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 + + +39881 +509f00000001000000000000037777770d74727573742d6167696c697479026e6c0000010001 +509f80000001000000020000037777770d74727573742d6167696c697479026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01ec0100002000100015180000805646e732d32c038 + +39882 +b7e96bb5501842187c9e0000008b08d8000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afdf8403c4f7800030000002c4e544c4d535350000100000097b200c006000600260000000600060020000000534552564552524f4d4d454c0000 +b7e9ebb40000000000000000 + +39883 +86c000000001000000000000036e73320a73657276657262656174026e6c0000010001 +86c080000001000000020002036e73320a73657276657262656174026e6c0000010001c0100002000100015180000a04646e7330026975c01bc0100002000100015180000704646e7331c034c02f00010001000151800004d91a7002c04500010001000151800004d91a7103 + +39884 +d81500000001000000000000036e73310a73657276657262656174026e6c0000010001 +d81580000001000000020002036e73310a73657276657262656174026e6c0000010001c0100002000100015180000a04646e7330026975c01bc0100002000100015180000704646e7331c034c02f00010001000151800004d91a7002c04500010001000151800004d91a7103 + +39885 +b7e96bc35011420a95080000000000000000 +b7e9ebc40000000000000000 + +39886 +cae4000000010000000000000377777706796f6f7a6572026e6c0000010001 +cae4800000010000000300030377777706796f6f7a6572026e6c0000010001c0100002000100015180000b036e73310473716164c017c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02fc02b0001000100015180000451ab6720c0420001000100015180000451ab6724c05400010001000151800004d5c51d0c + +39887 +998000000001000000000000036e7331046372696f026e6c0000010001 +998080000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39888 +562d00000001000000000000036e7332046372696f026e6c0000010001 +562d80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39889 +16120000000100000000000003777777066e666f726365026e6c0000010001 +16128000000100000002000203777777066e666f726365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02b000100010001518000043ed45433c03d000100010001518000043ed45434 + +39890 +b7e96bc45010420a95070000000000000000 +b7e9ebc40000000000000000 + +39891 +7700000000010000000000000d616c622d6e6174757269736d65036e666e026e6c0000ff0001 +7700800000010000000200020d616c622d6e6174757269736d65036e666e026e6c0000ff0001c01a0002000100015180000f04646e73300765736f75726365c01ec01a0002000100015180000704646e7334c037c03200010001000151800004d48198d8c04d00010001000151800004d5c5eaa4 + +39892 +b7e8ba0c501144625c130000000000000000 + + +39893 +63097b1c50040000f11a0000000000000000 +6309fb140000000000000000 + +39894 +0c7200100001000000000001036e733106776964657873026e6c00000100010000290800000080000000 +0c7280000001000000030003036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa07030000291000000000000000 + +39895 +863900100001000000000001036e733106776964657873026e6c00002600010000290800000080000000 +863980000001000000030003036e733106776964657873026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa07030000291000000000000000 + +39896 +49c00000000100000000000004686f6d650464656473026e6c0000010001 +49c08000000100000002000204686f6d650464656473026e6c0000010001c0110002000100015180000c026e73067874646e6574c016c01100020001000151800006036e7331c02dc02a00010001000151800004c16e9d02c04200010001000151800004d9cc165f + +39897 +f8f500100001000000000001036e733306776964657873026e6c00000100010000290800000080000000 +f8f580000001000000030003036e733306776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa07030000291000000000000000 + +39898 +8b1e00100001000000000001036e733306776964657873026e6c00002600010000290800000080000000 +8b1e80000001000000030003036e733306776964657873026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa07030000291000000000000000 + +39899 +0000000070024000ec7e0000020405b401010402 +000080010000000000000000 + +39900 +4b6600000001000000000000027463036164730974656c656772616166026e6c0000010001 +4b6680000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +39901 +19a400000001000000000000036e73310a6f70656e646f6d65696e026e6c0000010001 +19a480000001000000020002036e73310a6f70656e646f6d65696e026e6c0000010001c0100002000100015180000c026e73067874646e6574c01bc01000020001000151800006036e7331c032c02f00010001000151800004c16e9d02c04700010001000151800004d9cc165f + +39902 +902e00000001000000000000036e73310a6f70656e646f6d65696e026e6c00001c0001 +902e80000001000000020002036e73310a6f70656e646f6d65696e026e6c00001c0001c0100002000100015180000c026e73067874646e6574c01bc01000020001000151800006036e7331c032c02f00010001000151800004c16e9d02c04700010001000151800004d9cc165f + +39903 +18750000000100000000000003444e42024e4c0000010001 +18758000000100000002000003444e42024e4c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +39904 +b7e8ba0d501044625c120000000000000000 + + +39905 +9750000000010000000000000377777703646674026e6c0000010001 +9750800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +39906 +b7ec28565010447034800000000000000000 +b7eca8540000000000000000 + +39907 +b7ec285650184470d6a40000008cdd40000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd19403c4e9900030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 +b7eca8540000000000000000 + +39908 +b7ec28645011446233f10000000000000000 +b7eca8640000000000000000 + +39909 +0e1b00000001000000000000036e7335046372696f026e6c0000010001 +0e1b80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39910 +6fb500000001000000000000036e7336046372696f026e6c0000010001 +6fb580000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39911 +f2af000000010000000000000377777703776562026e6c0000010001 +f2af800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +39912 +36f900000001000000000000036e7335046372696f026e6c0000010001 +36f980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39913 +1b8100000001000000000000036e7336046372696f026e6c0000010001 +1b8180000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39914 +1faa00000001000000000000076475746c727532026c7207747564656c6674024e4c0000010001 +1faa80000001000000050005076475746c727532026c7207747564656c6674024e4c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +39915 +80f90000000100000000000003777777036b766b026e6c0000010001 +80f98000000100000002000203777777036b766b026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c014c01000020001000151800006036e7332c02bc02800010001000151800004c3402003c04100010001000151800004c340202b + +39916 +4ef500000001000000000000037777770970696e646161746a65077765622d6c6f67026e6c0000010001 +4ef580000001000000030003037777770970696e646161746a65077765622d6c6f67026e6c0000010001c01a0002000100015180000b036e733104696c7365c022c01a00020001000151800006036e7332c03ac01a00020001000151800006036e7333c03ac036000100010001518000043e45a282c04d000100010001518000043e45a283c05f000100010001518000043e45a284 + +39917 +b7ec28655010446233f00000000000000000 +b7eca8640000000000000000 + +39918 +982d00000001000000000000036e7331046372696f026e6c0000010001 +982d80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39919 +773000000001000000000000036e7332046372696f026e6c0000010001 +773080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39920 +95f000000001000000000000037777770a72656372656174696566026e6c0000010001 +95f080000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +39921 +4cdc00000001000000000000036e7331046372696f026e6c0000010001 +4cdc80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39922 +19d000000001000000000000036e7332046372696f026e6c0000010001 +19d080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39923 +837600000001000000000000037777770b76656c6f786575726f7065026e6c0000010001 +837680000001000000020001037777770b76656c6f786575726f7065026e6c0000010001c0100002000100015180000a036e733303777873c01cc01000020001000151800006036e7334c034c04600010001000151800004d5ef9a65 + +39924 +2c28000000010000000000000866696c6167656e74026e6c0000ff0001 +2c28800000010000000200020866696c6167656e74026e6c0000ff0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc015c00c00020001000151800006036e7332c02dc0290001000100015180000450558121c04700010001000151800004d58141c4 + +39925 +04580000000100000000000003777777096a6f6e67656e65656c026e6c0000010001 +04588000000100000002000003777777096a6f6e67656e65656c026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +39926 +22a0000000010000000000000764656c65697465026e6c0000ff0001 +22a0800000010000000200020764656c65697465026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +39927 +c6ad001000010000000000010762736d74702d3108636f6e6365707473026e6c00000100010000290800000080000000 +c6ad800000010000000200030762736d74702d3108636f6e6365707473026e6c0000010001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c0000291000000000000000 + +39928 +30c100000001000000000000037777771361626376617374676f65646469656e7374656e026e6c0000010001 +30c180000001000000020000037777771361626376617374676f65646469656e7374656e026e6c0000010001c01000020001000151800014026e730b736d617274736572766572036e657400c01000020001000151800006036e7332c03b + +39929 +87ea000000010000000000001976616e64656e77696c64656e6265726776616e68616c646572026e6c00000f0001 +87ea840300010000000100001976616e64656e77696c64656e6265726776616e68616c646572026e6c00000f0001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +39930 +9a8000000001000000000000036e73320470696e65026e6c0000010001 +9a8080000001000000020002036e73320470696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d59c0201c00c00010001000151800004c3c1a303 + +39931 +755d00100001000000000001076f7574706f73740464733961026e6c00000100010000290800000080000000 +755d80000001000000020003076f7574706f73740464733961026e6c0000010001c0140002000100015180000b036e73310470696e65c019c01400020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a3030000291000000000000000 + +39932 +461100000001000000000000066d782d323030056c61646f74026e6c0000010001 +461180000001000000020000066d782d323030056c61646f74026e6c0000010001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c033 + +39933 +50c528000001000000010000026e6c0000060001085f6b706173737764045f74637005696e7472610b726164696d65646963616c026e6c00002100010000025800210000006401d0047261646905696e7472610b726164696d65646963616c026e6c00 +50c5a8040000000000000000 + +39934 +2ba728000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573096f627367726176656e026e6c000021000100000258001f0000006400580a7064637367726176656e096f627367726176656e026e6c00 +2ba7a8040000000000000000 + +39935 +e1be000000010000000000000d76616e686172656e6375696a6b026e6c00000f0001 +e1be800000010000000200020d76616e686172656e6375696a6b026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +39936 +3ab800000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +3ab880000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +39937 +75a100000001000000000000076c6f6f6e657932026e6c0000010001 +75a180000001000000020002076c6f6f6e657932026e6c0000010001c00c0002000100015180000a036e7331036e7873c014c00c00020001000151800006036e7332c02cc02800010001000151800004d973c015c03e00010001000151800004d973c102 + +39938 +183100000001000000000000035f6763045f7463700767666b63617069026e6c0000210001 +183184030001000000010000035f6763045f7463700767666b63617069026e6c0000210001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +39939 +02bb00000001000000000000036d78300774697363616c69026e6c0000010001 +02bb80000001000000030002036d78300774697363616c69026e6c0000010001c0100002000100015180000704616e7331c010c0100002000100015180000704616e7332c010c0100002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c03f00010001000151800004c3f13325 + +39940 +21b2000000010000000000000377777706626172746563026e6c0000010001 +21b2800000010000000200020377777706626172746563026e6c0000010001c01000020001000151800010036e7331096176616e742d696e74c017c01000020001000151800006036e7332c02fc02b00010001000151800004d5de1d07c04700010001000151800004d5de1807 + +39941 +000000007002faf0032000000204056401010402 +000080010000000000000000 + +39942 +f74d00000001000000000000055f6c646170045f7463700767666b63617069026e6c0000210001 +f74d84030001000000010000055f6c646170045f7463700767666b63617069026e6c0000210001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +39943 +9244000000010000000000000377777707696b6f6e727476026e6c0000010001 +9244800000010000000200000377777707696b6f6e727476026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02f + +39944 +000000007002faf043bb0000020405b401010402 +000080010000000000000000 + +39945 +be8e0000000100000000000008616269746d6f7265026e6c0000010001 +be8e8000000100000003000108616269746d6f7265026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +39946 +b7eca26f5010fd5cd2bb0000000000000000 + + +39947 +c6b300000001000000000000036e733106776964657873026e6c0000010001 +c6b380000001000000030002036e733106776964657873026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +39948 +b7eca26f5018fd5c445900000092c3e6000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5d403c4fdd0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 + + +39949 +7f1900000001000000000000036e733106776964657873026e6c0000260001 +7f1980000001000000030002036e733106776964657873026e6c0000260001c01000020001000151800002c00cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c00c00010001000151800004d4ccc0fcc055000100010001518000043efa0703 + +39950 +188d00000001000000000000036e733306776964657873026e6c0000010001 +188d80000001000000030002036e733306776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa0703 + +39951 +45c600000001000000000000036e733306776964657873026e6c0000260001 +45c680000001000000030002036e733306776964657873026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa0703 + +39952 +c4cc0000000100000000000006636861726973026e6c00000f0001 +c4cc8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39953 +f33900000001000000000000036e733109666972737466696e64026e6c0000010001 +f33980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +39954 +15f800000001000000000000026e73076e656473746174026e6c0000010001 +15f880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +39955 +b7eca27d5011fd4ed2260000000000000000 + + +39956 +bc5b0000000100000000000006686f6d65303103777873026e6c0000010001 +bc5b8000000100000003000306686f6d65303103777873026e6c0000010001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +39957 +000000007002faf00b5800000204056401010402 +000080010000000000000000 + +39958 +b7eca27e5010fd4ed2250000000000000000 + + +39959 +b7ee6dad5010fd5c0fb40000000000000000 +b7eeeda40000000000000000 + +39960 +5253000000010000000000000e76616e6d657572732d6175746f73026e6c00000f0001 +5253800000010000000200000e76616e6d657572732d6175746f73026e6c00000f0001c00c0002000100015180000f036e7331053132337873036e657400c00c00020001000151800006036e7332c033 + +39961 +b7ee6dad5018fd5c0976000000923cc3000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5d403c4fdd0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 +b7eeeda40000000000000000 + +39962 +13db00000001000000000000076f7574706f73740464733961026e6c0000010001 +13db80000001000000020002076f7574706f73740464733961026e6c0000010001c0140002000100015180000b036e73310470696e65c019c01400020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +39963 +30bc000000010000000000000734657665727931026e6c0000010001 +30bc800000010000000200010734657665727931026e6c0000010001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +39964 +b7ee6dbb5011fd4e0f1f0000000000000000 +b7eeedb40000000000000000 + +39965 +2c4b0000000100000000000006656d61696c73026e6c0000010001 +2c4b8000000100000003000006656d61696c73026e6c0000010001c00c0002000100015180000e036e73300477697368036e657400c00c00020001000151800006036e7331c02bc00c00020001000151800006036e7332c02b + +39966 +000000007002faf0682600000204056401010402 +000080010000000000000000 + +39967 +2c2e28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730b6b7376696e7465726e6574026e6c000021000100000258001e00000064005807697365727665720b6b7376696e7465726e6574026e6c00 +2c2ea8040000000000000000 + +39968 +4a2600000001000000000000037777770b646574656c656772616166026e6c0000010001 +4a2680000001000000020000037777770b646574656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c034 + +39969 +d70c0000000100000000000003706f70026574026e6c0000010001 +d70c8000000100000003000203706f70026574026e6c0000010001c0100002000100015180000d036e733106776964657873c013c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02bc02700010001000151800004d4ccc0fcc05c000100010001518000043efa0703 + +39970 +f13400000001000000000000037777770b646574656c656772616166026e6c0000010001 +f13480000001000000020000037777770b646574656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c034 + +39971 +5c7900000001000000000000036e7334086d65646961776562026e6c0000010001 +5c7980000001000000020000036e7334086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +39972 +b7ee6dbc5010fd4e0f1e0000000000000000 +b7eeedb40000000000000000 + +39973 +b7ef54e85010fd5c85460000000000000000 +b7efd4e40000000000000000 + +39974 +b7ef54e85018fd5c2cde000000928ced000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5e403c4fde0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 +b7efd4e40000000000000000 + +39975 +8917000000010000000000000465736269026e6c00000f0001 +8917800000010000000200000465736269026e6c00000f0001c00c00020001000151800012036e73310866696e616c69737403636f6d00c00c00020001000151800006036e7332c029 + +39976 +0ee4000000010000000000000670726f646973056e76776d6e026e6c0000010001 +0ee4800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +39977 +b7ef54f65011fd4e84b10000000000000000 +b7efd4f40000000000000000 + +39978 +3bd900000001000000000000037777770862696c6c32303030026e6c0000010001 +3bd980000001000000020002037777770862696c6c32303030026e6c0000010001c0100002000100015180000b036e7331046e732d31c019c01000020001000151800006036e7332c031c02d000100010001518000045045a0cdc04400010001000151800004d4cceec8 + +39979 +2d8e000000010000000000000670726f646973056e76776d6e026e6c0000010001 +2d8e800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +39980 +66a100000001000000000000037777770873636f7574696e67026e6c0000010001 +66a180000001000000020001037777770873636f7574696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800010026e730777697265687562036e657400c02d00010001000151800004d5c1d633 + +39981 +0000000070024000bd400000020405b401010402 +000080010000000000000000 + +39982 +b7ef54f75010fd4e84b00000000000000000 +b7efd4f40000000000000000 + +39983 +c1ad00000001000000000000037777770977706d6d6f746f7273026e6c0000010001 +c1ad80000001000000020002037777770977706d6d6f746f7273026e6c0000010001c01000020001000151800017036e733110696e7465726e657470726f6a65637473c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5c9d914c05100010001000151800004d5c9d915 + +39984 +66b100000001000000000000086767737472616465026e6c0000ff0001 +66b180000001000000020002086767737472616465026e6c0000ff0001c00c0002000100015180000e036e733107626265796f6e64c015c00c00020001000151800006036e7332c02dc029000100010001518000043eb1900bc043000100010001518000043eb19002 + +39985 +b7f00ee7501044701ead0000000000000000 +b7f08ee40000000000000000 + +39986 +2baa28000001000000010000026e6c0000060001035f6763045f746370096f627367726176656e026e6c000021000100000258001f000000640cc40a7064637367726176656e096f627367726176656e026e6c00 +2baaa8040000000000000000 + +39987 +e7af0000000100000000000006636861726973026e6c00000f0001 +e7af8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +39988 +b7f00ee7501844705c81000000910c00000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 +b7f08ee40000000000000000 + +39989 +2e4000000001000000000000076f62646e772d6e026e6c00000f000100 +2e4080000001000000020002076f62646e772d6e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +39990 +db0100000001000000000000036e7331046372696f026e6c0000010001 +db0180000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39991 +80af00000001000000000000036e7332046372696f026e6c0000010001 +80af80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39992 +851800000001000000000000037777770a72656372656174696566026e6c0000010001 +851880000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +39993 +bf9700000001000000000000036e7331046372696f026e6c0000010001 +bf9780000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39994 +34a600000001000000000000036e7332046372696f026e6c0000010001 +34a680000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +39995 +000000007002faf020de00000204056401010402 +000080010000000000000000 + +39996 +b7f00ef5501144621e190000000000000000 +b7f08ef40000000000000000 + +39997 +05d100000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05d180000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +39998 +e6ba0000000100000000000004706f73740476766273026e6c0000010001 +e6ba8000000100000002000004706f73740476766273026e6c0000010001c01100020001000151800012036e73330b70656c6963616e2d696374c016c01100020001000151800006036e7335c02e + +39999 +f1e2000000010000000000000377777703636273026e6c0000010001 +f1e2800000010000000300020377777703636273026e6c0000010001c0100002000100015180000805646e736831c010c0100002000100015180000805646e736832c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004c1acf4ccc03c00010001000151800004c1acf4cd + +40000 +b7f0ad405010fd5ce5a40000000000000000 + + +40001 +2c6000000001000000000000036e73330767617574656e67026e6c0000010001 +2c6080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +40002 +d26f00000001000000000000046d61696c0e70726f66746563687374796c6573026e6c0000010001 +d26f80000001000000020002046d61696c0e70726f66746563687374796c6573026e6c0000010001c0110002000100015180000f036e733108636f6d707574656cc020c01100020001000151800006036e7332c038c03400010001000151800004c3568680c04f00010001000151800004c3568681 + +40003 +b7f0ad405018fd5ca524000000927404000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5e403c4fde0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 + + +40004 +097400000001000000000000037777770c64657369676e64616d73656c026e6c0000010001 +097484030001000000010000037777770c64657369676e64616d73656c026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40005 +000000007002400096fb0000020405b401010402 +000080010000000000000000 + +40006 +b7f00ef6501044621e180000000000000000 +b7f08ef40000000000000000 + +40007 +b7f0ad4e5011fd4ee50f0000000000000000 + + +40008 +4e7b00000001000000000000096863632d67726f6570026e6c0000010001 +4e7b80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +40009 +c48900000001000000000000066963646174610769632d7465616d026e6c0000060001 +c48984030001000000010000066963646174610769632d7465616d026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +40010 +000000007002faf0f72200000204056401010402 +000080010000000000000000 + +40011 +7e9900000001000000000000046d61696c0964656c74612d7a6c64026e6c0000010001 +7e9980000001000000020001046d61696c0964656c74612d7a6c64026e6c0000010001c01100020001000151800010026e730a7a65656c616e646e6574c01bc0110002000100015180000b026e73026e6c036e657400c02f00010001000151800004d473c0c1 + +40012 +c45a0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +c45a8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40013 +b7f1a62250104470612b0000000000000000 + + +40014 +6d4300000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +6d4380000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +40015 +d1fe000000010000000000000377777708746f703430776562026e6c0000010001 +d1fe800000010000000200000377777708746f703430776562026e6c0000010001c01000020001000151800016036e73310c667565676f686f7374696e6703636f6d00c01000020001000151800006036e7332c031 + +40016 +b7f0ad4f5010fd4ee50e0000000000000000 + + +40017 +84730000000100000000000008706f70756e64657207616d617465757207626c6f776a6f62026e6c0000010001 +84738000000100000003000308706f70756e64657207616d617465757207626c6f776a6f62026e6c0000010001c01d0002000100015180000e04646e733106626c6978656dc025c01d0002000100015180000704646e7332c03ec01d0002000100015180000704646e7333c03ec03900010001000151800004d44fe803c05300010001000151800004c3f5c782c06600010001000151800004d44ff303 + +40018 +b7f1a622501844703700000000917500000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 + + +40019 +b7f350355010fd5c18f20000000000000000 +b7f3d0340000000000000000 + +40020 +020e28000001000200000000026e6c0000060001066963646174610769632d7465616d026e6c00000500fe000000000000c014000100010000000000040a0000a2 +020ea8040000000000000000 + +40021 +b7f350355018fd5cbfda000000928d9c000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5e403c4fde0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 +b7f3d0340000000000000000 + +40022 +05d400000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05d480000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +40023 +b7f1a6305011446260970000000000000000 + + +40024 +0000000070024000c07900000204057801010402 +000080010000000000000000 + +40025 +b7f350435011fd4e185d0000000000000000 +b7f3d0440000000000000000 + +40026 +3c0c28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730c73746566667973776f726c64026e6c000021000100000258001e000000640058065345525645520c73746566667973776f726c64026e6c00 +3c0ca8040000000000000000 + +40027 +000000007002faf0f5eb00000204056401010402 +000080010000000000000000 + +40028 +761a0000000100000000000003777777036e6172026e6c0000010001 +761a8000000100000002000203777777036e6172026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c014c0100002000100015180001004646e733208636f6e6365707473c014c02800010001000151800004d5c51c03c04500010001000151800004d5c51e1c + +40029 +b7f3f803501041a03b5a0000000000000000 + + +40030 +b7f3f803501841a0e3ed0000008c7123000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403b00f1403c527100030000002d4e544c4d535350000100000097b208e00700070026000000060006002000000049434441544149432d5445414d0000 + + +40031 +35fa0000000100000000000005666f72756d086e65646c696e7578026e6c0000010001 +35fa8000000100000003000305666f72756d086e65646c696e7578026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02f00010001000151800004d5ef87d2c04100010001000151800004d5ef87d3c05300010001000151800004d5ef8005 + +40032 +69df0000000100000000000007636f6e74656e74026e6c0000010001 +69df8000000100000002000007636f6e74656e74026e6c0000010001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c02d + +40033 +b7f350445010fd4e185c0000000000000000 +b7f3d0440000000000000000 + +40034 +000000007002400071960000020405b401010402 +000080010000000000000000 + +40035 +346a00000001000000000000036e73340767617574656e67026e6c0000010001 +346a80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +40036 +b7f3f811501141923acb0000000000000000 + + +40037 +b7f4c0fc5010fd5ca6f20000000000000000 + + +40038 +f17c00000001000000000000036e73310a667265656f6e6c696e65026e6c0000010001 +f17c80000001000000020002036e73310a667265656f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5d38115c03d00010001000151800004d5d38116 + +40039 +fc3000000001000000000000036e73320a667265656f6e6c696e65026e6c0000010001 +fc3080000001000000020002036e73320a667265656f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5d38115c00c00010001000151800004d5d38116 + +40040 +b7f4c0fc5018fd5ca5cf0000009235a8000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afe5e403c4fde0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a00200000005044435347524156454e4f425347524156454e0000 + + +40041 +b7f1a6315010446260960000000000000000 + + +40042 +000000007002400048b30000020405b401010402 +000080010000000000000000 + +40043 +b7f580c05010447061240000000000000000 + + +40044 +e62a000000010000000000000567656e6965026e6c00001c0001 +e62a800000010000000200020567656e6965026e6c00001c0001c00c0002000100015180000d026e73076e65746c616e64c012c00c00020001000151800006036e7332c029c02600010001000151800004d9aa2042c03f00010001000151800004d9aa2c06 + +40045 +b7f3f812501041923aca0000000000000000 + + +40046 +0000000070024000833b00000204057801010402 +000080010000000000000000 + +40047 +b7f580c050184470c704000000916300000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 + + +40048 +eaaa00000001000000000000036e7331046372696f026e6c0000010001 +eaaa80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40049 +aeef00000001000000000000036e7332046372696f026e6c0000010001 +aeef80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40050 +b7f73e35501041a0b7e60000000000000000 +b7f7be340000000000000000 + +40051 +b70c000000010000000000000377777707776b76726f6461026e6c0000010001 +b70c800000010000000200000377777707776b76726f6461026e6c0000010001c0100002000100015180000c026e7306766576696461c018c01000020001000151800006036e7332c02f + +40052 +b7f73e35501841a0aecc0000008c23d2000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b00f1403c527100030000002d4e544c4d535350000100000097b208e00700070026000000060006002000000049434441544149432d5445414d0000 +b7f7be340000000000000000 + +40053 +b7f4c10a5011fd4ea65d0000000000000000 + + +40054 +b7f580ce5011446260900000000000000000 + + +40055 +b7f67a07501044703ef90000000000000000 +b7f6fa040000000000000000 + +40056 +1be900000001000000000000037777770b6d6f726e696e6773746172026e6c0000010001 +1be980000001000000020000037777770b6d6f726e696e6773746172026e6c0000010001c010000200010001518000100572656d7573046d736575036e657400c01000020001000151800006036e7332c036 + +40057 +0000000070024000c9110000020405b401010402 +000080010000000000000000 + +40058 +b7f73e4350114192b7570000000000000000 +b7f7be440000000000000000 + +40059 +b7f67a0750184470abcd00000091de00000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 +b7f6fa040000000000000000 + +40060 +b7f580cf50104462608f0000000000000000 + + +40061 +b7f7f95250104470400b0000000000000000 + + +40062 +b7f73e4450104192b7560000000000000000 +b7f7be440000000000000000 + +40063 +0000000070024000fcc200000204057801010402 +000080010000000000000000 + +40064 +b7f7f9525018447060ec00000091a900000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 + + +40065 +b7f4c10b5010fd4ea65c0000000000000000 + + +40066 +b7f886a3501041a0e8fe0000000000000000 + + +40067 +b7f67a15501144623e650000000000000000 +b7f6fa140000000000000000 + +40068 +b7f886a3501841a085450000008c7e71000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403b00f1403c527100030000002d4e544c4d535350000100000097b208e00700070026000000060006002000000049434441544149432d5445414d0000 + + +40069 +b7f7f960501144623f770000000000000000 + + +40070 +64fc0000000100000000000004756e6963026e6c00000f0001 +64fc8000000100000002000204756e6963026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +40071 +0000000070024000e70c0000020405b401010402 +000080010000000000000000 + +40072 +0d700000000100000000000003777777086e65646c696e7578026e6c0000010001 +0d708000000100000003000303777777086e65646c696e7578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02d00010001000151800004d5ef87d2c03f00010001000151800004d5ef87d3c05100010001000151800004d5ef8005 + +40073 +b7f886b150114192e86f0000000000000000 + + +40074 +4fae000000010000000000000377777703377570026e6c0000010001 +4fae800000010000000200000377777703377570026e6c0000010001c01000020001000151800015036e73310b736974656c7574696f6e7303636f6d00c01000020001000151800006036e7332c02c + +40075 +b7f7f961501044623f760000000000000000 + + +40076 +3aa50000000100000000000006776468303131066e7434616c6c026e6c0000010001 +3aa58000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +40077 +b7f886b250104192e86e0000000000000000 + + +40078 +b7f92d3c501044702a1b0000000000000000 +b7f9ad340000000000000000 + +40079 +9f420000000100000000000009616e746971626f6f6b026e6c0000010001 +9f428000000100000002000209616e746971626f6f6b026e6c0000010001c00c0002000100015180000a036e7331036e7873c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +40080 +b7f92d3c5018447004fc00000091ef00000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 +b7f9ad340000000000000000 + +40081 +b7f67a16501044623e640000000000000000 +b7f6fa140000000000000000 + +40082 +c54900000001000000000000036e7335046372696f026e6c0000010001 +c54980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40083 +ed8f00000001000000000000036e7336046372696f026e6c0000010001 +ed8f80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40084 +70e000000001000000000000037777770764656c61727565026e6c0000010001 +70e080000001000000020000037777770764656c61727565026e6c0000010001c0100002000100015180000f036e73310561676e2d65036e657400c01000020001000151800006036e7332c030 + +40085 +b7f92d4a5011446229870000000000000000 +b7f9ad440000000000000000 + +40086 +39310000000100000000000004616e73310774697363616c69026e6c0000010001 +39318000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +40087 +d5640000000100000000000004616e73320774697363616c69026e6c0000010001 +d5648000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +40088 +ab43000000010000000000000567656e6965026e6c0000010001 +ab43800000010000000200020567656e6965026e6c0000010001c00c0002000100015180000d026e73076e65746c616e64c012c00c00020001000151800006036e7332c029c02600010001000151800004d9aa2042c03f00010001000151800004d9aa2c06 + +40089 +371000100001000000000001026e73076e656473746174026e6c00002600010000290800000080000000 +371080000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +40090 +7e4300000001000000000000037777770763636e77696a6b026e6c0000010001 +7e4380000001000000020002037777770763636e77696a6b026e6c0000010001c0100002000100015180000c026e7306787334616c6cc018c01000020001000151800006036e7332c02fc02c00010001000151800004c26d0642c04400010001000151800004c26d0963 + +40091 +ddfc00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +ddfc80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +40092 +a29d00000001000000000000055f6c646170045f746370026463065f6d736463730c73746566667973776f726c64026e6c0000060001 +a29d84030001000000010000055f6c646170045f746370026463065f6d736463730c73746566667973776f726c64026e6c0000060001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +40093 +cde100100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +cde180000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +40094 +b7f92d4b5010446229860000000000000000 +b7f9ad440000000000000000 + +40095 +f0580000000100000000000004646e7331057368656c6c026e6c0000010001 +f0588000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +40096 +332a28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730764657661657274026e6c0000210001000002580019000000640058067365727665720764657661657274026e6c00 +332aa8040000000000000000 + +40097 +4da500000001000000000000026e73076e656473746174026e6c0000260001 +4da580000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40098 +163000000001000000000000026e73076e656473746174026e6c0000010001 +163080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40099 +8b1800000001000000000000036e7333076e656473746174026e6c0000010001 +8b1880000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40100 +1e290000000100000000000003777777076f6f726465656c026e6c0000010001 +1e298000000100000003000203777777076f6f726465656c026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +40101 +00000000700240001be000000204056401010402 +000080010000000000000000 + +40102 +588b00000001000000000000055f6c646170045f746370026463065f6d736463730c73746566667973776f726c64026e6c0000060001 +588b84030001000000010000055f6c646170045f746370026463065f6d736463730c73746566667973776f726c64026e6c0000060001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +40103 +169b00000001000000000000096a6f627365617263680c6d6f6e73746572626f617264026e6c0000010001 +169b80000001000000030000096a6f627365617263680c6d6f6e73746572626f617264026e6c0000010001c0160002000100015180000e036e733104746d7077036e657400c01600020001000151800006036e7332c03bc01600020001000151800015056f73636172076d6f6e7374657202636f02756b00 + +40104 +5f58000000010000000000000377777711617274737570706c69657361726e68656d026e6c0000010001 +5f58800000010000000200020377777711617274737570706c69657361726e68656d026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c022c01000020001000151800006036e7332c03ac0360001000100015180000451113264c05200010001000151800004d5c42851 + +40105 +ec8600000001000000000000037777770c6368696269676f74656e6b73026e6c0000010001 +ec8680000001000000030003037777770c6368696269676f74656e6b73026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01dc0100002000100015180000e0b6e616d6573657276657232c03dc0100002000100015180000e0b6e616d6573657276657233c03dc0310001000100015180000451ad2020c0550001000100015180000451ad2021c06f0001000100015180000452c049aa + +40106 +b7fa1fad501040b06fec0000000000000000 +b7fa9fa40000000000000000 + +40107 +b7fa1fad501840b0d4e20000008c8580000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403aff69403c50e900030000002d4e544c4d535350000100000097b200e007000700260000000600060020000000534552564552444556414552540000 +b7fa9fa40000000000000000 + +40108 +2c3128000001000000010000026e6c0000060001095f6b65726265726f73045f7463700b6b7376696e7465726e6574026e6c000021000100000258001e00000064005807697365727665720b6b7376696e7465726e6574026e6c00 +2c31a8040000000000000000 + +40109 +e63700000001000000000000047369676e06657472616465026e6c00000f0001 +e63780000001000000020000047369676e06657472616465026e6c00000f0001c01100020001000151800011056c656d6f6e0571696e6970036e657400c01100020001000151800007046c696d65c032 + +40110 +471428000001000000010000026e6c0000060001055f6c646170045f7463702435386163356133392d336533322d343135622d383130612d61643636343564393662336407646f6d61696e73065f6d736463730f646f7669616e75736b616e746f6f72026e6c0000210001000002580021000000640185065365727665720f646f7669616e75736b616e746f6f72026e6c00 +4714a8040000000000000000 + +40111 +9b5c28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d7364637309446f6e4369726b656c026e6c000021000100000258001d00000064018508646f6e737276303109446f6e4369726b656c026e6c00 +9b5ca8040000000000000000 + +40112 +826000000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +826080000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +40113 +3c1428000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d736463730c73746566667973776f726c64026e6c000021000100000258001e000000640185065345525645520c73746566667973776f726c64026e6c00 +3c14a8040000000000000000 + +40114 +ff8000000001000000000000036e733109666972737466696e64026e6c0000010001 +ff8080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40115 +b7fa1fbb501140a26f5d0000000000000000 +b7fa9fb40000000000000000 + +40116 +430d0000000100000000000003777777096865726d6974616765026e6c0000010001 +430d8000000100000002000203777777096865726d6974616765026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01ac01000020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +40117 +97af00000001000000000000036e733209666972737466696e64026e6c0000010001 +97af80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40118 +000000007002400033e800000204056401010402 +000080010000000000000000 + +40119 +00000000700240008d7c0000020405b401010402 +000080010000000000000000 + +40120 +f2be00000001000000000000036e73320868776967726f7570026e6c0000010001 +f2be80000001000000020002036e73320868776967726f7570026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d973c15ac00c00010001000151800004d973c15b + +40121 +91e000000001000000000000036e73310868776967726f7570026e6c0000010001 +91e080000001000000020002036e73310868776967726f7570026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c15ac03b00010001000151800004d973c15b + +40122 +00000000700240007e4f0000020405b401010402 +000080010000000000000000 + +40123 +b7fbf06c501044700d580000000000000000 + + +40124 +b7fbf06c501844706038000000917600000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 + + +40125 +0000000070024000deaa0000020405b401010402 +000080010000000000000000 + +40126 +b7fa1fbc501040a26f5c0000000000000000 +b7fa9fb40000000000000000 + +40127 +44a90000000100000000000004616a6178066e696b686566026e6c0000010001 +44a98000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +40128 +500e00000001000000000000037777770e73747265656b6a6f75726e61616c026e6c0000010001 +500e80000001000000020001037777770e73747265656b6a6f75726e61616c026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01fc01000020001000151800006036e7334c037c03300010001000151800004d5c401c0 + +40129 +b7faff1c501040b0a8840000000000000000 + + +40130 +f36900000001000000000000036e7331056861636f6d026e6c0000010001 +f36980000001000000020002036e7331056861636f6d026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4f12209c03800010001000151800004d590f009 + +40131 +099600000001000000000000036e7332056861636f6d026e6c0000010001 +099680000001000000020002036e7332056861636f6d026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d4f12209c00c00010001000151800004d590f009 + +40132 +b72b00000001000000000000037777770b68657465706f65736a6573026e6c0000010001 +b72b80000001000000020000037777770b68657465706f65736a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c033 + +40133 +b7faff1c501840b0bffb0000008cd400000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403aff69403c50e900030000002d4e544c4d535350000100000097b200e007000700260000000600060020000000534552564552444556414552540000 + + +40134 +b7fbf07a501144620cc40000000000000000 + + +40135 +b7fcabad5010447042e90000000000000000 + + +40136 +8c4f00000001000000000000026e7308642d736572766572026e6c00001c0001 +8c4f80000001000000020002026e7308642d736572766572026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c0001000100015180000451045c14c03a0001000100015180000451046032 + +40137 +fec700000001000000000000026e7308642d736572766572026e6c0000260001 +fec780000001000000020002026e7308642d736572766572026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c0001000100015180000451045c14c03a0001000100015180000451046032 + +40138 +b7fd5e2d50104470f0c30000000000000000 +b7fdde240000000000000000 + +40139 +3e6800000001000000000000036e733208642d736572766572026e6c00001c0001 +3e6880000001000000020002036e733208642d736572766572026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d0001000100015180000451045c14c00c0001000100015180000451046032 + +40140 +36d100000001000000000000036e733208642d736572766572026e6c0000260001 +36d180000001000000020002036e733208642d736572766572026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d0001000100015180000451045c14c00c0001000100015180000451046032 + +40141 +b7fcabad50184470e1cf000000940d40000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd77403c4ef70003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 + + +40142 +b7fd5e2d50184470679700000091d300000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 +b7fdde240000000000000000 + +40143 +000000007002400001a90000020405b401010402 +000080010000000000000000 + +40144 +b7faff2a501140a2a7f50000000000000000 + + +40145 +b7fbf07b501044620cc30000000000000000 + + +40146 +049b00000001000000000000036e733303696467026e6c00001c0001 +049b80000001000000030003036e733303696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +40147 +0000000070024000d5fd00000204056401010402 +000080010000000000000000 + +40148 +d49900000001000000000000036e733103696467026e6c00001c0001 +d49980000001000000030003036e733103696467026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +40149 +b51800000001000000000000036e733203696467026e6c00001c0001 +b51880000001000000030003036e733203696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +40150 +d8ad000000010000000000000762736d74702d3108636f6e6365707473026e6c0000010001 +d8ad800000010000000200020762736d74702d3108636f6e6365707473026e6c0000010001c0140002000100015180001103646e730a636f6e63657074736661c01dc0140002000100015180000704646e7332c014c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e1c + +40151 +fe99000000010000000000000377777709646963746174757572026e6c0000010001 +fe99800000010000000200000377777709646963746174757572026e6c0000010001c01000020001000151800019036e733710666c6178652d776562686f7374696e6702626500c01000020001000151800006036e7338c032 + +40152 +b7fddb875010447096670000000000000000 + + +40153 +b7fddb8750184470a44800000091bc00000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 + + +40154 +d56f00000001000000000000037777770c706f77657272616e67657273026e6c0000010001 +d56f84030001000000010000037777770c706f77657272616e67657273026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40155 +b7fcabbb5011446242520000000000000000 + + +40156 +b7faff2b501040a2a7f40000000000000000 + + +40157 +00000000700240005a9d0000020405b401010402 +000080010000000000000000 + +40158 +b7fe9a2d501040b0af850000000000000000 + + +40159 +b7fddb955011446295d30000000000000000 + + +40160 +b7fe9a2d501840b0787d0000008c2280000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403aff69403c50e900030000002d4e544c4d535350000100000097b200e007000700260000000600060020000000534552564552444556414552540000 + + +40161 +289800000001000000000000046d61696c0f6f6e656c696e65696e7465726e6574026e6c0000010001 +289880000001000000030003046d61696c0f6f6e656c696e65696e7465726e6574026e6c0000010001c0110002000100015180000c036e7331053266617374c021c01100020001000151800006036e7332c039c01100020001000151800006036e7333c039c0350001000100015180000450f7c022c04d000100010001518000043e858122c05f000100010001518000045117eb22 + +40162 +0000000070024000c2190000020405b401010402 +000080010000000000000000 + +40163 +b7fcabbc5010446242510000000000000000 + + +40164 +b332000000010000000000000477757a77026e6c0000010001 +b332800000010000000200020477757a77026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +40165 +b7ff23a450104470a73d0000000000000000 +b7ffa3a30000000000000000 + +40166 +b7fddb965010446295d20000000000000000 + + +40167 +81ab00000001000000000000095f6b65726265726f73045f746370026463065f6d7364637303636f6d026e6c0000060001 +81ab84030001000000010000095f6b65726265726f73045f746370026463065f6d7364637303636f6d026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +40168 +b7fe9a3b501140a2aef60000000000000000 + + +40169 +b7ff23a45018447075a400000094dcc0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd78403c4ef80003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b7ffa3a30000000000000000 + +40170 +b7fd5e3b50114462f02f0000000000000000 +b7fdde340000000000000000 + +40171 +c6c8000000010000000000001553544556454c4557495350484f544f475241504859026e6c0000020001 +c6c8840300010000000100001553544556454c4557495350484f544f475241504859026e6c0000020001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +40172 +b7fff478501044703de50000000000000000 + + +40173 +0000000070024000ab080000020405b401010402 +000080010000000000000000 + +40174 +3fc30000000100000000000009616e746971626f6f6b026e6c0000010001 +3fc38000000100000002000209616e746971626f6f6b026e6c0000010001c00c0002000100015180000a036e7331036e7873c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +40175 +b7fff4785018447043c600000091c400000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afafd403c4c7d0003000000324e544c4d535350000100000097b200e00c000c0026000000060006002000000053455256455253544546465953574f524c440000 + + +40176 +b7fe9a3c501040a2aef50000000000000000 + + +40177 +b7ff23b250114462a6a60000000000000000 +b7ffa3b30000000000000000 + +40178 +b7fff486501144623d510000000000000000 + + +40179 +000000007002400093ce0000020405b401010402 +000080010000000000000000 + +40180 +b7fd5e3c50104462f02e0000000000000000 +b7fdde340000000000000000 + +40181 +2ee400000001000000000000037777770977616c6c7061706572026e6c0000010001 +2ee480000001000000030003037777770977616c6c7061706572026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01ac0100002000100015180000704646e7332c033c0100002000100015180000704646e7333c033c02e00010001000151800004d44fe803c04800010001000151800004c3f5c782c05b00010001000151800004d44ff303 + +40182 +b8008be0501044708f6b0000000000000000 + + +40183 +b7fff487501044623d500000000000000000 + + +40184 +b8008be050184470c140000000911900000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 + + +40185 +b92b00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637303636f6d026e6c0000060001 +b92b84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637303636f6d026e6c0000060001c04800060001000038400036026e730f646f6d61696e2d7265676973747279c0480a686f73746d6173746572c05f0bf1e540000070800000384000278d0000003840 + +40186 +7ed20000000100000000000003777777087265676572696e67026e6c0000010001 +7ed28000000100000003000303777777087265676572696e67026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +40187 +b7ff23b350104462a6a50000000000000000 +b7ffa3b30000000000000000 + +40188 +9e050000000100000000000003777777087265676572696e67026e6c0000010001 +9e058000000100000003000303777777087265676572696e67026e6c0000010001c0100002000100015180000e036e73310761737034616c6cc019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c1adf9c3c047000100010001518000043e70ec3cc05900010001000151800004c1ac0bae + +40189 +b8013f7f50104470c4910000000000000000 +b801bf740000000000000000 + +40190 +b8008bee501144628ed70000000000000000 + + +40191 +b8013f7f501844705a39000000941580000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd78403c4ef80003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b801bf740000000000000000 + +40192 +000000007002400087580000020405b401010402 +000080010000000000000000 + +40193 +bda800100001000000000001036e733503777873026e6c00000100010000290800000000000000 +bda880000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +40194 +b8013f8d50114462c3fa0000000000000000 +b801bf840000000000000000 + +40195 +64520000000100000000000003777777046e767377026e6c0000010001 +64528000000100000002000203777777046e767377026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +40196 +358600000001000000000000037777770b6663686572656e7665656e026e6c0000010001 +358684030001000000010000037777770b6663686572656e7665656e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +40197 +11730000000100000000000003777777126175746f6d617469736572696e6767696473026e6c0000010001 +11738000000100000002000103777777126175746f6d617469736572696e6767696473026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc023c01000020001000151800006036e7331c03ac03700010001000151800004c2b2b20a + +40198 +1788000000010000000000000377777708736b79726164696f026e6c0000010001 +1788800000010000000200010377777708736b79726164696f026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +40199 +b8013f8e50104462c3f90000000000000000 +b801bf840000000000000000 + +40200 +5e7800000001000000000000037777770f64656b6c65726b6361726176616e73026e6c0000010001 +5e7880000001000000020000037777770f64656b6c65726b6361726176616e73026e6c0000010001c01000020001000151800012036e7331086974732d646e733303636f6d00c01000020001000151800006036e7332c038 + +40201 +300e0000000100000000000006636861726973026e6c0000ff0001 +300e8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +40202 +5181000000010000000000000c47454c4445524d414c53454e0c67656c6465726d616c73656e026e6c0000010001 +5181800000010000000200020c47454c4445524d414c53454e0c67656c6465726d616c73656e026e6c0000010001c01900020001000151800005026e73c019c01900020001000151800006036e7332c019c03a00010001000151800004c143b9b5c04b00010001000151800004c143b9b6 + +40203 +ded400000001000000000000036e733503777873026e6c0000010001 +ded480000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +40204 +b19a00000001000000000000037777770761656764656374026e6c0000010001 +b19a80000001000000030003037777770761656764656374026e6c0000010001c01000020001000151800010036e733109736974656279746573c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004c2a55e5ac04800010001000151800004c356781cc05a000100010001518000043ec58016 + +40205 +ac2900000001000000000000166865747a6f6e6e65687569736265656b62657267656e026e6c00000f0001 +ac2980000001000000020000166865747a6f6e6e65687569736265656b62657267656e026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c042 + +40206 +34ee00000001000000000000046d61696c096e65646572696e756d026e6c0000010001 +34ee80000001000000020000046d61696c096e65646572696e756d026e6c0000010001c0110002000100015180000d026e730468736367036e657400c01100020001000151800006036e7332c032 + +40207 +b708000000010000000000000233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000010001 +b708800000010000000200020233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000010001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +40208 +0eee000000010000000000000977616c6c70617065720c7665726b656572737061726b026e6c0000010001 +0eee800000010000000300030977616c6c70617065720c7665726b656572737061726b026e6c0000010001c0160002000100015180000e04646e733106626c6978656dc023c0160002000100015180000704646e7332c03cc0160002000100015180000704646e7333c03cc03700010001000151800004d44fe803c05100010001000151800004c3f5c782c06400010001000151800004d44ff303 + +40209 +97a400000001000000000000056e65666974026e6c0000010001 +97a480000001000000020000056e65666974026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02a + +40210 +b8008bef501044628ed60000000000000000 + + +40211 +b80237e650104470bfb30000000000000000 +b802b7e40000000000000000 + +40212 +b80237e650184470d108000000913980000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403afd47403c4ec70003000000324e544c4d535350000100000097b208e00b000b00270000000700070020000000495345525645524b5356494e5445524e45540000 +b802b7e40000000000000000 + +40213 +04ca000000010000000000000377777707746170746f6573026e6c0000010001 +04ca800000010000000200020377777707746170746f6573026e6c0000010001c0100002000100015180000a036e733103686978c018c01000020001000151800006036e7332c030c02c00010001000151800004d5a0da0ac0420001000100015180000451112ec3 + +40214 +b80237f450114462bf1f0000000000000000 +b802b7f40000000000000000 + +40215 +80dd0000000100000000000005646e732d32056c61646f74026e6c0000010001 +80dd8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40216 +b80237f550104462bf1e0000000000000000 +b802b7f40000000000000000 + +40217 +85e8000000010000000000000a736f6e6572616d61696c026e6c00001c0001 +85e8800000010000000200000a736f6e6572616d61696c026e6c00001c0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +40218 +d10400000001000000000000056e69627261026e6c00000f0001 +d10480000001000000020001056e69627261026e6c00000f0001c00c0002000100015180000a04626f6261026778c012c00c0002000100015180000b026e73026e6c036e657400c02600010001000151800004c3c1590b + +40219 +df00000000010000000000000377777706696c6f676963026e6c0000010001 +df00800000010000000200020377777706696c6f676963026e6c0000010001c0100002000100015180000b036e73310476646e73c017c01000020001000151800006036e7332c02fc02b000100010001518000045117f60bc042000100010001518000045117f60c + +40220 +fce900000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373065345525645520c73746566667973776f726c64026e6c0000210001 +fce984030001000000010000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373065345525645520c73746566667973776f726c64026e6c0000210001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +40221 +1ece00000001000000000000036e733503777873026e6c0000010001 +1ece80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +40222 +411b00000001000000000000066675726f7265077072657669657706776562746963026e6c0000010001 +411b80000001000000020001066675726f7265077072657669657706776562746963026e6c0000010001c01b00020001000151800005026e73c01bc01b0002000100015180000b026e73056963617474c022c03600010001000151800004c14e1e2b + +40223 +6be800000001000000000000067a7376737472026e6c0000010001 +6be884030001000000010000067a7376737472026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +40224 +cef500000001000000000000037777770668656572656e026e6c0000010001 +cef580000001000000020002037777770668656572656e026e6c0000010001c01000020001000151800010036e73310973746172746d657570c017c01000020001000151800006036e7332c02fc02b00010001000151800004d4cb1d01c04700010001000151800004d4cb1d02 + +40225 +4b7e00000001000000000000037777770d67727577656c696a6b6d6f6f69026e6c0000010001 +4b7e80000001000000020002037777770d67727577656c696a6b6d6f6f69026e6c0000010001c0100002000100015180001204646e73310a6e65746d617374657273c01ec0100002000100015180000704646e7332c037c0320001000100015180000451044203c05000010001000151800004510442c9 + +40226 +a7ff00000001000000000000046163616c026e6c00000f0001 +a7ff80000001000000020000046163616c026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c029 + +40227 +ea42000000010000000000000464626277026e6c00000f0001 +ea42800000010000000200000464626277026e6c00000f0001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c029 + +40228 +e4fe00000001000000000000036e7331046372696f026e6c0000010001 +e4fe80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40229 +359300000001000000000000036e7332046372696f026e6c0000010001 +359380000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40230 +e97c00000001000000000000037777770d666f727470616e6e657264656e026e6c0000010001 +e97c80000001000000020000037777770d666f727470616e6e657264656e026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ec01000020001000151800006036e7332c036 + +40231 +6d0200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +6d0280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40232 +0d9c00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +0d9c80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40233 +4e2200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +4e2280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40234 +860f00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +860f80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40235 +18ae00000001000000000000026e7303696e67026e6c0000010001 +18ae80000001000000020002026e7303696e67026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc0270001000100015180000491dd19c2c0390001000100015180000491dd5dc2 + +40236 +f71d0000000100000000000007617564696f786c026e6c00000f0001 +f71d8000000100000002000007617564696f786c026e6c00000f0001c00c0002000100015180001506617574683034026e73026465027575036e657400c00c0002000100015180000906617574683534c02f + +40237 +267200000001000000000000036e73310762617365776562026e6c0000010001 +267280000001000000020002036e73310762617365776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d535d035c03a00010001000151800004d535d034 + +40238 +099200000001000000000000036e73320762617365776562026e6c0000010001 +099280000001000000020002036e73320762617365776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d535d035c00c00010001000151800004d535d034 + +40239 +04c900000001000000000000036e73310762617365776562026e6c0000260001 +04c980000001000000020002036e73310762617365776562026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d535d035c03a00010001000151800004d535d034 + +40240 +dedd00000001000000000000036e73320762617365776562026e6c0000260001 +dedd80000001000000020002036e73320762617365776562026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d535d035c00c00010001000151800004d535d034 + +40241 +15ed000000010000000000000377777709736578687569736a65026e6c0000010001 +15ed800000010000000300000377777709736578687569736a65026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +40242 +81fb00000001000000000000037777770f7374617274706167696e6161746a65026e6c0000010001 +81fb80000001000000030002037777770f7374617274706167696e6161746a65026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c020c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c038c034000100010001518000045054e055c06d00010001000151800004d4ccc655 + +40243 +a0f600000001000000000000026e73076e656473746174026e6c00001c0001 +a0f680000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40244 +cc7800000001000000000000026e73076e656473746174026e6c0000260001 +cc7880000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40245 +d68200000001000000000000036e7332076e656473746174026e6c0000010001 +d68280000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40246 +accd00000001000000000000036e7332076e656473746174026e6c00001c0001 +accd80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40247 +da9f00000001000000000000036e7332076e656473746174026e6c0000260001 +da9f80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40248 +179f00000001000000000000036e7333076e656473746174026e6c00001c0001 +179f80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40249 +423900000001000000000000036e7333076e656473746174026e6c0000260001 +423980000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40250 +b2c500000001000000000000036e7334076e656473746174026e6c0000010001 +b2c580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40251 +b60300000001000000000000036e7334076e656473746174026e6c00001c0001 +b60380000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40252 +b71f00000001000000000000036e7334076e656473746174026e6c0000260001 +b71f80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40253 +87220000000100000000000003777777056c6572656e026e6c0000010001 +87228000000100000002000203777777056c6572656e026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +40254 +8f6d0000000100000000000009636974792d68616c6c026e6c00000f0001 +8f6d8000000100000002000209636974792d68616c6c026e6c00000f0001c00c00020001000151800011036e73310a6f6e6c696e6534796f75c016c00c00020001000151800006036e7332c02ec02a000100010001518000043e3a205bc047000100010001518000043e3a205c + +40255 +0f600000000100000000000006636861726973026e6c00000f0001 +0f608000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +40256 +06c100000001000000000000036e73310c666173747365727665723138026e6c0000010001 +06c180000001000000020002036e73310c666173747365727665723138026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4fa76c03f0001000100015180000442a4fa7f + +40257 +501d00000001000000000000036e73320c666173747365727665723138026e6c0000010001 +501d80000001000000020002036e73320c666173747365727665723138026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000442a4fa76c00c0001000100015180000442a4fa7f + +40258 +3c9100000001000000000000036e73310c666173747365727665723138026e6c0000260001 +3c9180000001000000020002036e73310c666173747365727665723138026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4fa76c03f0001000100015180000442a4fa7f + +40259 +2a5800000001000000000000036e73320c666173747365727665723138026e6c0000260001 +2a5880000001000000020002036e73320c666173747365727665723138026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000442a4fa76c00c0001000100015180000442a4fa7f + +40260 +abf200000001000000000000037777770f70656e73696f656e696e6265656c64026e6c0000010001 +abf280000001000000020000037777770f70656e73696f656e696e6265656c64026e6c0000010001c01000020001000151800014026e730b686f6c6c616e64686f7374036e657400c01000020001000151800006036e7332c037 + +40261 +ad4e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +ad4e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40262 +2b59000000010000000000000773656375746f720773656c77657264026e6c0000010001 +2b59800000010000000300020773656375746f720773656c77657264026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c01400020001000151800011036e733107657873696c6961036e657400c03000010001000151800004817d6539c04100010001000151800004817d667e + +40263 +31400000000100000000000009652d6c756e61746963026e6c0000010001 +31408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40264 +3a750000000100000000000008796f757273697465026e6c0000010001 +3a758000000100000003000308796f757273697465026e6c0000010001c00c00020001000151800010036e733109736974656279746573c015c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02dc02900010001000151800004c2a55e5ac04500010001000151800004c356781cc057000100010001518000043ec58016 + +40265 +f7110000000100000000000006787334616c6c026e6c00000f0001 +f7118000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +40266 +595900000001000000000000037777770a6e6374686573746f7265026e6c0000010001 +595980000001000000020002037777770a6e6374686573746f7265026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01bc01000020001000151800006036e7332c032c02f00010001000151800004d453c005c04d00010001000151800004d453c006 + +40267 +824e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +824e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40268 +671200000001000000000000037330310a6f6e6c696e6534796f75026e6c0000010001 +671280000001000000020002037330310a6f6e6c696e6534796f75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02f000100010001518000043e3a205bc041000100010001518000043e3a205c + +40269 +386d000000010000000000000e7374726f6d6d652d6d616473656e026e6c0000010001 +386d800000010000000300030e7374726f6d6d652d6d616473656e026e6c0000010001c00c0002000100015180000f036e7331086e6f766178657373c01bc00c00020001000151800006036e7332c033c00c00020001000151800006036e7333c033c02f00010001000151800004d5c98015c04a00010001000151800004d5c9bf12c05c00010001000151800004d5ef9c26 + +40270 +fe1100000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +fe1180000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +40271 +566400000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +566480000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +40272 +06a0000000010000000000000377777709626f6572696e6e656e026e6c0000010001 +06a0800000010000000200000377777709626f6572696e6e656e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +40273 +e6470000000100000000000003777777046e6b7666026e6c0000010001 +e6478000000100000002000203777777046e6b7666026e6c0000010001c01000020001000151800010036e733109756e69736572766572c015c01000020001000151800006036e7332c02dc02900010001000151800004c3454b03c04500010001000151800004d119a2fa + +40274 +c0e500000001000000000000037777770f7465737472616b6574657874696c65026e6c0000010001 +c0e580000001000000030001037777770f7465737472616b6574657874696c65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc020c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c052c034000100010001518000043efa0202 + +40275 +54950000000100000000000003777777046374637a026e6c0000010001 +54958000000100000002000203777777046374637a026e6c0000010001c0100002000100015180000c026e7306787334616c6cc015c01000020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +40276 +170b0000000100000000000009676f72696e6368656d026e6c00000f0001 +170b8000000100000002000009676f72696e6368656d026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02e + +40277 +d3eb00000001000000000000037777770e72696f6f6c696e7370656b746965026e6c0000010001 +d3eb80000001000000020000037777770e72696f6f6c696e7370656b746965026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +40278 +69700000000100000000000005776b746873026e6c00000f0001 +69708000000100000002000205776b746873026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +40279 +063400000001000000000000056d63636f7908696e6e6f76697479026e6c00001c0001 +063480000001000000020002056d63636f7908696e6e6f76697479026e6c00001c0001c01200020001000151800002c00cc0120002000100015180000e036e733007656173796e6574c01bc00c000100010001518000043ec071b2c03d00010001000151800004c2a55e01 + +40280 +ddfb00000001000000000000056d63636f7908696e6e6f76697479026e6c0000260001 +ddfb80000001000000020002056d63636f7908696e6e6f76697479026e6c0000260001c01200020001000151800002c00cc0120002000100015180000e036e733007656173796e6574c01bc00c000100010001518000043ec071b2c03d00010001000151800004c2a55e01 + +40281 +05d900000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05d980000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +40282 +05da00000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05da80000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +40283 +ef7b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +ef7b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40284 +f6dd0000000100000000000005646e732d32056c61646f74026e6c0000010001 +f6dd8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40285 +ab2a00000001000000000000036e7331036e6f62026e6c0000010001 +ab2a80000001000000020002036e7331036e6f62026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004504f22f6c03600010001000151800004504f22fa + +40286 +fded000000010000000000000377777710737469656e73747261626f6e6e656d61026e6c0000010001 +fded800000010000000200000377777710737469656e73747261626f6e6e656d61026e6c0000010001c01000020001000151800013036e73310368617306686f7374697402626500c0100002000100015180000a036e7332036c7578c03d + +40287 +aad000000001000000000000036e7332036e6f62026e6c0000010001 +aad080000001000000020002036e7332036e6f62026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004504f22f6c00c00010001000151800004504f22fa + +40288 +2dd40000000100000000000005646e732d31056c61646f74026e6c0000010001 +2dd48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40289 +5a9100000001000000000000036e7331036e6f62026e6c0000260001 +5a9180000001000000020002036e7331036e6f62026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004504f22f6c03600010001000151800004504f22fa + +40290 +cbc10000000100000000000004686f6d65036e6c64066368656c6c6f026e6c0000010001 +cbc18000000100000003000304686f6d65036e6c64066368656c6c6f026e6c0000010001c01500020001000151800007046e733031c015c01500020001000151800007046e733032c015c0150002000100015180000a036e733103757063c01cc03000010001000151800004d4534482c04300010001000151800004d4534483c05600010001000151800004d48e1c42 + +40291 +df1e00000001000000000000036e7332036e6f62026e6c0000260001 +df1e80000001000000020002036e7332036e6f62026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004504f22f6c00c00010001000151800004504f22fa + +40292 +f3940000000100000000000005646e732d31056c61646f74026e6c0000010001 +f3948000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40293 +f5de0000000100000000000005646e732d32056c61646f74026e6c0000010001 +f5de8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40294 +b926000000010000000000001276726f656476726f7577656e7363686f6f6c026e6c00000f0001 +b926800000010000000200001276726f656476726f7577656e7363686f6f6c026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c039 + +40295 +0ee900000001000000000000026e6c0000060001 +0ee984000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +40296 +0826000000010000000000000c3231372d31392d31382d32380364736c0863616d627269756d026e6c0000010001 +0826800000010000000200020c3231372d31392d31382d32380364736c0863616d627269756d026e6c0000010001c01d00020001000151800006036e7331c01dc01d00020001000151800006036e7332c01dc03a00010001000151800004d9131082c04c00010001000151800004d5efb202 + +40297 +80d20000000100000000000008767269656e64656e026e6c00000f0001 +80d28000000100000002000008767269656e64656e026e6c00000f0001c00c0002000100015180000e026e7305736d617368036e657400c00c00020001000151800006036e7332c02c + +40298 +f195000000010000000000000c7061726475732d6c617275730773747564656e7407757477656e7465026e6c0000010001 +f195800000010000000300030c7061726475732d6c617275730773747564656e7407757477656e7465026e6c0000010001c02100020001000151800006036e7331c021c02100020001000151800006036e7332c021c02100020001000151800006036e7333c021c03d0001000100015180000482590102c04f0001000100015180000482590103c06100010001000151800004c0571113 + +40299 +0ddf00000001000000000000067669617765620b7669616e6574776f726b73026e6c0000010001 +0ddf80000001000000020002067669617765620b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +40300 +c1f1000000010000000000000964696c6c6577696a6e026e6c00000f0001 +c1f1800000010000000200000964696c6c6577696a6e026e6c00000f0001c00c00020001000151800014036e73310a676c617373686f757365036e657400c00c00020001000151800006036e7332c02e + +40301 +ef6f00000001000000000000126d616e696665737461726f7474657264616d026e6c00000f0001 +ef6f80000001000000020001126d616e696665737461726f7474657264616d026e6c00000f0001c00c0002000100015180000a036e733303777873c01fc00c00020001000151800006036e7334c037c04900010001000151800004d5ef9a65 + +40302 +2dd50000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dd58000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40303 +f2510000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +f2518000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +40304 +2e3c000000010000000000000a6d61696c66696c746572046379736f026e6c0000010001 +2e3c800000010000000200000a6d61696c66696c746572046379736f026e6c0000010001c01700020001000151800010026e73076379736f6e657403636f6d00c01700020001000151800006036e7331c033 + +40305 +8dd7000000010000000000000233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000050001 +8dd7800000010000000200020233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000050001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +40306 +fbd200000001000000000000037777770a6f70696e69656c616e64026e6c0000010001 +fbd280000001000000020002037777770a6f70696e69656c616e64026e6c0000010001c01000020001000151800009026e7303626f73c01bc01000020001000151800006036e7332c032c02f00010001000151800004d5881e43c04400010001000151800004d5139203 + +40307 +de7700000001000000000000056d61696c320c726f6e63616c6c692d626f7a026e6c026e6c0000010001 +de7784030001000000010000056d61696c320c726f6e63616c6c692d626f7a026e6c026e6c0000010001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +40308 +78e90000000100000000000007656c656d656e7406787334616c6c026e6c0000010001 +78e98000000100000003000207656c656d656e7406787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +40309 +e71300000001000000000000066764732d6473026e6c00000f0001 +e71380000001000000020002066764732d6473026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c013c00c00020001000151800006036e7332c02bc02700010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +40310 +9c7e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +9c7e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40311 +95310000000100000000000005646e732d32056c61646f74026e6c0000010001 +95318000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40312 +c8a00000000100000000000005646e732d31056c61646f74026e6c0000010001 +c8a08000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40313 +84410000000100000000000005646e732d32056c61646f74026e6c0000010001 +84418000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40314 +786900000001000000000000037777770b6d656d6f72796769667473026e6c0000010001 +786980000001000000020002037777770b6d656d6f72796769667473026e6c0000010001c0100002000100015180000e036e733207686f7374696e67c01cc01000020001000151800006036e7331c034c030000100010001518000043e818b02c04a000100010001518000043e818b01 + +40315 +7b0a000000010000000000000377777703676963026e6c0000010001 +7b0a800000010000000300030377777703676963026e6c0000010001c01000020001000151800010036e733109657863657074696f6ec014c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02cc02800010001000151800004d5c9a38cc04400010001000151800004d5c9a38dc05600010001000151800004d5c9af03 + +40316 +05d500000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05d580000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +40317 +5fc000000001000000000000037777770c7473656164627275696e6a61026e6c0000010001 +5fc080000001000000020000037777770c7473656164627275696e6a61026e6c0000010001c0100002000100015180000c026e7306766576696461c01dc01000020001000151800006036e7332c034 + +40318 +6a32000000010000000000000377777705656c6d6172026e6c0000010001 +6a32800000010000000300030377777705656c6d6172026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c016c010000200010001518000070470726932c02fc010000200010001518000070470726933c02fc02a000100010001518000049a0ff9a6c048000100010001518000049a0ff9aac05b000100010001518000049a0ff9ae + +40319 +535500000001000000000000086261726d61746f6e026e6c0000010001 +535580000001000000020002086261726d61746f6e026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +40320 +dd3f00000001000000000000037777770e67616c61676865726575726f7065026e6c0000010001 +dd3f84030001000000010000037777770e67616c61676865726575726f7065026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +40321 +93440000000100000000000003706f70096f6c796d7075733538026e6c0000010001 +93448000000100000002000003706f70096f6c796d7075733538026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +40322 +d69700000001000000000000026e7304696d636f026e6c0000010001 +d69780000001000000020001026e7304696d636f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800013036e7332097669727475616c787303636f6d00c00c000100010001518000043e81810a + +40323 +23420000000100000000000003706f70096f6c796d7075733538026e6c0000010001 +23428000000100000002000003706f70096f6c796d7075733538026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +40324 +4827000000010000000000000377777708676c61736265656b026e6c0000010001 +4827800000010000000300020377777708676c61736265656b026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +40325 +2c4100000001000000000000037777770b74696c746563686e69656b026e6c0000010001 +2c4180000001000000020002037777770b74696c746563686e69656b026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +40326 +925900100001000000000001036e733203757063026e6c00000100010000290800000080000000 +925980000001000000030004036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +40327 +0fb00000000100000000000007766462636f6d70026e6c00001c0001 +0fb08000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +40328 +d1890000000100000000000003777777086f63636173696f6e026e6c0000010001 +d1898000000100000002000103777777086f63636173696f6e026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c019c01000020001000151800011036e7332076e6564636f6d70036f726700c02d00010001000151800004c3c1a80d + +40329 +f48e00100001000000000001036e733203757063026e6c00000100010000290800000080000000 +f48e80000001000000030004036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +40330 +80e40000000100000000000005646e732d32056c61646f74026e6c0000010001 +80e48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40331 +21f4000000010000000000000664756379636f026e6c0000010001 +21f4800000010000000200020664756379636f026e6c0000010001c00c00020001000151800010036e733109686f7374696e67786cc013c00c00020001000151800006036e7332c02bc027000100010001518000045054e504c043000100010001518000043e94a314 + +40332 +267a0000000100000000000003667331056c76706161026e6c0000060001 +267a8000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +40333 +88bf0000000100000000000008706332312d30353703727476036e6f73026e6c0000010001 +88bf8000000100000002000208706332312d30353703727476036e6f73026e6c0000010001c01900020001000151800010066d696e6e6965066f6d726f6570c01dc0190002000100015180000805726f62696ec038c03100010001000151800004913a1e04c04d00010001000151800004913a1a34 + +40334 +04640000000100000000000008747269746f6e31310761626e616d726f026e6c0000010001 +04648000000100000002000208747269746f6e31310761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c0150002000100015180000b0870686f626f733032c015c03100010001000151800004a7cac30bc04800010001000151800004a7cac30c + +40335 +9fa900000001000000000000026e7308767575727765726b026e6c0000260001 +9fa980000001000000030001026e7308767575727765726b026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +40336 +30080000000100000000000004706f703308686f737468696572026e6c0000010001 +30088000000100000002000204706f703308686f737468696572026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02e00010001000151800004d5efb51fc03f00010001000151800004d5efb520 + +40337 +99c10000000100000000000004706f703308686f737468696572026e6c0000010001 +99c18000000100000002000204706f703308686f737468696572026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02e00010001000151800004d5efb51fc03f00010001000151800004d5efb520 + +40338 +f85000000001000000000000076173747265616d026e6c0000ff0001 +f85080000001000000020002076173747265616d026e6c0000ff0001c00c0002000100015180000e08706f7765722d6133026133c014c00c0002000100015180000c09706f7765722d697078c031c0280001000100015180000451113b42c04200010001000151800004d5ab40e6 + +40339 +d8fd00000001000000000000024e530348414e026e6c0000010001 +d8fd80000001000000020002024e530348414e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +40340 +61c6000000010000000000000a616476657274697365720d73696d70656c636f6e74656e74026e6c0000010001 +61c6800000010000000300030a616476657274697365720d73696d70656c636f6e74656e74026e6c0000010001c0170002000100015180000c036e7331056d61786573c025c01700020001000151800006036e7332c03dc01700020001000151800006036e7333c03dc039000100010001518000045045402ec051000100010001518000045045402fc063000100010001518000045045440a + +40341 +943a0000000100000000000003777777096d6172616e61746861026e6c0000010001 +943a8000000100000003000203777777096d6172616e61746861026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +40342 +662d0000000100000000000003646e730a636f6e63657074736661026e6c0000010001 +662d8000000100000002000203646e730a636f6e63657074736661026e6c0000010001c01000020001000151800002c00cc0100002000100015180001004646e733208636f6e6365707473c01bc00c00010001000151800004d5c51c03c03d00010001000151800004d5c51e1c + +40343 +6a100000000100000000000004646e733208636f6e6365707473026e6c0000010001 +6a108000000100000002000204646e733208636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac01100020001000151800002c00cc02e00010001000151800004d5c51c03c00c00010001000151800004d5c51e1c + +40344 +5ecf00000001000000000000037777770972746c6e6965757773026e6c0000010001 +5ecf80000001000000020001037777770972746c6e6965757773026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c01ac01000020001000151800011036e733207636c742d756661036e657400c02e00010001000151800004c3c1ca77 + +40345 +c5c7000000010000000000000e61646175746f2d667279736c616e026e6c0000010001 +c5c7800000010000000200020e61646175746f2d667279736c616e026e6c0000010001c00c00020001000151800010036e7331097765622d776f726b73c01bc00c00020001000151800006036e7332c033c02f00010001000151800004d5f4b859c04b00010001000151800004d5f4b959 + +40346 +2cb800000001000000000000086174617261786961026e6c0000010001 +2cb880000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +40347 +d6fd00000001000000000000026e7303666273026e6c0000010001 +d6fd80000001000000020001026e7303666273026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4cef21a + +40348 +fe5500000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373037777770b6f6267726f65736265656b026e6c0000210001 +fe5580000001000000020000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373037777770b6f6267726f65736265656b026e6c0000210001c0440002000100015180000f036e73310561676e2d65036e657400c04400020001000151800006036e7332c068 + +40349 +cec400000001000000000000026e7307696e746f756368026e6c0000010001 +cec480000001000000030001026e7307696e746f756368026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010026e7307696e746f756368036e657400c00f00020001000151800007046e733031c03cc00c00010001000151800004d413c001 + +40350 +39e8000000010000000000000377777707646967696d6d6f026e6c0000010001 +39e8800000010000000300000377777707646967696d6d6f026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c032c0100002000100015180000805646e733132c032 + +40351 +f04400000001000000000000026e730866656b61686f7374026e6c0000010001 +f04480000001000000020002026e730866656b61686f7374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5ef9f24c03a00010001000151800004c3405369 + +40352 +cf1f00000001000000000000036e73320866656b61686f7374026e6c0000010001 +cf1f80000001000000020002036e73320866656b61686f7374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004d5ef9f24c00c00010001000151800004c3405369 + +40353 +563c000000010000000000000377777703616e70026e6c0000010001 +563c800000010000000200020377777703616e70026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02800010001000151800004c3511802c03900010001000151800004c3511869 + +40354 +8b9500000001000000000000036e733206656d61746963026e6c0000010001 +8b9580000001000000020002036e733206656d61746963026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b000100010001518000043e3a4042c00c000100010001518000043e3a4043 + +40355 +96b800000001000000000000026e7306656d61746963026e6c0000010001 +96b880000001000000020002026e7306656d61746963026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e3a4042c038000100010001518000043e3a4043 + +40356 +16fa00000001000000000000037777770762656c73746174026e6c0000010001 +16fa80000001000000020000037777770762656c73746174026e6c0000010001c0100002000100015180000f036e73310669706f77657202626500c01000020001000151800006036e7332c030 + +40357 +e29400000001000000000000037777770e7468657369676e666163746f7279026e6c0000010001 +e29480000001000000020001037777770e7468657369676e666163746f7279026e6c0000010001c0100002000100015180000a036e733303777873c01fc01000020001000151800006036e7334c037c04900010001000151800004d5ef9a65 + +40358 +727200000001000000000000036e73310a726564686f7374696e67026e6c00001c0001 +727280000001000000020002036e73310a726564686f7374696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +40359 +369d00000001000000000000036e73310a726564686f7374696e67026e6c0000260001 +369d80000001000000020002036e73310a726564686f7374696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +40360 +437c00000001000000000000036e73320a726564686f7374696e67026e6c00001c0001 +437c80000001000000020002036e73320a726564686f7374696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +40361 +0c5a000000010000000000000377777708736b79726164696f026e6c0000010001 +0c5a800000010000000200010377777708736b79726164696f026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +40362 +5fa400000001000000000000116e616d6d616368696e656661627269656b026e6c0000010001 +5fa480000001000000020002116e616d6d616368696e656661627269656b026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01ec00c00020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +40363 +0ae600000001000000000000036e73320a726564686f7374696e67026e6c0000260001 +0ae680000001000000020002036e73320a726564686f7374696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f00010001000151800004d5efa404c00c00010001000151800004d5efa405 + +40364 +e0e1000000010000000000000b777777706f737462616e6b026e6c0000010001 +e0e1800000010000000200020b777777706f737462616e6b026e6c0000010001c00c0002000100015180000a036e733103696e67c018c00c00020001000151800006036e7332c030c02c0001000100015180000491dd19c2c0420001000100015180000491dd5dc2 + +40365 +c049000000010000000000000a656c656374726162656c026e6c0000010001 +c049800000010000000200010a656c656374726162656c026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004d535c463 + +40366 +bbee00000001000000000000046d61696c11647269657373656e6175746f67726f6570026e6c0000010001 +bbee80000001000000020000046d61696c11647269657373656e6175746f67726f6570026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c03e + +40367 +8c1800000001000000000000037777770b617564696f636f76657273026e6c0000010001 +8c1880000001000000020000037777770b617564696f636f76657273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +40368 +4bf40000000100000000000003656773026e6c00000f0001 +4bf48000000100000003000203656773026e6c00000f0001c00c0002000100015180000f036e73310870726f7365727665c010c00c00020001000151800012036e73320970726f2d736572766502626500c00c00020001000151800006036e7333c028c024000100010001518000045054e055c05d00010001000151800004d4ccc655 + +40369 +2ec60000000100000000000003777777026131026e6c0000010001 +2ec68000000100000002000203777777026131026e6c0000010001c0100002000100015180000e08706f7765722d6133026133c013c0100002000100015180000c09706f7765722d697078c030c0270001000100015180000451113b42c04100010001000151800004d5ab40e6 + +40370 +237c000000010000000000000a736964657374726565740a6c656964656e756e6976026e6c0000010001 +237c800000010000000300030a736964657374726565740a6c656964656e756e6976026e6c0000010001c0170002000100015180000b08736865726c6f636bc017c0170002000100015180000906776174736f6ec017c0170002000100015180000e036e733107737572666e6574c022c0360001000100015180000484e50806c04d0001000100015180000484e51602c06200010001000151800004c0576a65 + +40371 +8d15000000010000000000000672756c7761790a6c656964656e756e6976026e6c0000010001 +8d15800000010000000300030672756c7761790a6c656964656e756e6976026e6c0000010001c0130002000100015180000b08736865726c6f636bc013c0130002000100015180000906776174736f6ec013c0130002000100015180000e036e733107737572666e6574c01ec0320001000100015180000484e50806c0490001000100015180000484e51602c05e00010001000151800004c0576a65 + +40372 +9ddc00000001000000000000036e733109666972737466696e64026e6c0000010001 +9ddc80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40373 +9890000000010000000000000461726f66026e6c0000010001 +9890800000010000000200020461726f66026e6c0000010001c00c00020001000151800009036e7331026973c011c00c00020001000151800006036e7332c029c02500010001000151800004d5852102c03a00010001000151800004d5c41503 + +40374 +b3b400000001000000000000036e733209666972737466696e64026e6c0000010001 +b3b480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40375 +ab8c00000001000000000000036e733203757063026e6c0000010001 +ab8c80000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +40376 +d5c600000001000000000000036e733203757063026e6c0000010001 +d5c680000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +40377 +eff800000001000000000000036e733207737570706f7274026e6c0000010001 +eff880000001000000020002036e733207737570706f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004c372e7c8c03a00010001000151800004c372e6fe + +40378 +3b9100000001000000000000036e733407737570706f7274026e6c0000010001 +3b9180000001000000020002036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +40379 +04d2000000010000000000000377777707746170746f6573026e6c0000010001 +04d2800000010000000200020377777707746170746f6573026e6c0000010001c0100002000100015180000a036e733103686978c018c01000020001000151800006036e7332c030c02c00010001000151800004d5a0da0ac0420001000100015180000451112ec3 + +40380 +37dc00000001000000000000037777770a77696e6465736865696d026e6c0000010001 +37dc80000001000000020002037777770a77696e6465736865696d026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e036e733207737572666e6574c01bc02f00010001000151800004912ce410c04100010001000151800004c0572402 + +40381 +694a00000001000000000000036e7332076e656473746174026e6c0000010001 +694a80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40382 +c19f00000001000000000000036e7334076e656473746174026e6c0000010001 +c19f80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40383 +cc9500000001000000000000047069637306736a65656d7a026e6c0000010001 +cc9580000001000000020000047069637306736a65656d7a026e6c0000010001c01100020001000151800013026e730a6e61616d736572766572036e657400c01100020001000151800006036e7331c02f + +40384 +310f00000001000000000000086575726f72736367026e6c0000ff0001 +310f80000001000000020002086575726f72736367026e6c0000ff0001c00c0002000100015180000e036e73310768756d616e2d69c015c00c00020001000151800006036e7332c02dc02900010001000151800004c1ad2884c04300010001000151800004c1ad2886 + +40385 +292b0000000100000000000009652d6c756e61746963026e6c0000010001 +292b8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40386 +471728000001000000020000026e6c00000600012434313364303162302d313236312d343666622d623530352d393466323438343637646363065f6d736463730f646f7669616e75736b616e746f6f72026e6c00000500ff000000000000c0140005000100000258001b065365727665720f646f7669616e75736b616e746f6f72026e6c00 +4717a8040000000000000000 + +40387 +555900000001000000000000036e7333066f7264696e61026e6c0000010001 +555980000001000000020001036e7333066f7264696e61026e6c0000010001c01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c02b00010001000151800004c297c1e9 + +40388 +426b00000001000000000000036e7334066f7264696e61026e6c0000010001 +426b80000001000000020001036e7334066f7264696e61026e6c0000010001c01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c02b00010001000151800004c297c1e9 + +40389 +00000000700240006a560000020405b401010402 +000080010000000000000000 + +40390 +b39c00000001000000000000036e733109666972737466696e64026e6c0000010001 +b39c80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40391 +9ab600000001000000000000036e733209666972737466696e64026e6c0000010001 +9ab680000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40392 +b80679815010447061120000000000000000 +b806f9840000000000000000 + +40393 +b806798150184470b338000000945600000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b806f9840000000000000000 + +40394 +def600000001000000000000037777771162656573746163687469676c656b6b6572026e6c0000010001 +def680000001000000020002037777771162656573746163687469676c656b6b6572026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac022c01000020001000151800006036e7332c03ac03600010001000151800004d5efa011c05100010001000151800004d5efa075 + +40395 +c3010000000100000000000003326467026e6c00000f0001 +c3018000000100000003000003326467026e6c00000f0001c00c0002000100015180000f036e73310570616e7361036e657400c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028 + +40396 +93cf00000001000000000000037777770972696e67746f6e696f026e6c0000010001 +93cf80000001000000020002037777770972696e67746f6e696f026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efa404c04b00010001000151800004d5efa405 + +40397 +b806798f50114462607b0000000000000000 +b806f9840000000000000000 + +40398 +00000000700240009e400000020405b401010402 +000080010000000000000000 + +40399 +e4730000000100000000000003777777076e6574706f6c6c026e6c0000010001 +e4738000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +40400 +01120000000100000000000009652d6c756e61746963026e6c0000010001 +01128000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40401 +b806799050104462607a0000000000000000 +b806f9940000000000000000 + +40402 +638b00000001000000000000036e733109666972737466696e64026e6c0000010001 +638b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40403 +53ae00000001000000000000036e733209666972737466696e64026e6c0000010001 +53ae80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40404 +b8070e5a5010447000230000000000000000 +b8078e540000000000000000 + +40405 +05d600000001000000000000037777770a64726f6d656461726973026e6c0000010001 +05d680000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +40406 +b8070e5a501844701a8a000000948ec0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b8078e540000000000000000 + +40407 +63680000000100000000000011647269657373656e6175746f67726f6570026e6c00001c0001 +63688000000100000002000011647269657373656e6175746f67726f6570026e6c00001c0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c039 + +40408 +548b001000010000000000010377777707747970686f6e65026e6c00000100010000290800000000000000 +548b800000010000000200030377777707747970686f6e65026e6c0000010001c0100002000100015180000a036e733103647768c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efb308c04200010001000151800004d5efb3030000291000000000000000 + +40409 +92c100000001000000000000037777770a7765706469657a696a6e026e6c0000010001 +92c180000001000000030000037777770a7765706469657a696a6e026e6c0000010001c01000020001000151800011036e7331087072696f7277656202626500c01000020001000151800006036e7332c033c01000020001000151800006036e7333c033 + +40410 +d25f000000010000000000000377777707747970686f6e65026e6c0000010001 +d25f800000010000000200020377777707747970686f6e65026e6c0000010001c0100002000100015180000a036e733103647768c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efb308c04200010001000151800004d5efb303 + +40411 +b8070e6850114462ff8b0000000000000000 +b8078e640000000000000000 + +40412 +00000000700240009a4a0000020405b401010402 +000080010000000000000000 + +40413 +ce4f000000010000000000000b6d756c6465726f6264616d026e6c0000010001 +ce4f800000010000000300030b6d756c6465726f6264616d026e6c0000010001c00c0002000100015180000e076e73617574683103626974c018c00c0002000100015180000a076e736175746832c034c00c0002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +40414 +2262000000010000000000000f6172702d656c656374726f6e696373026e6c00001c0001 +2262800000010000000200000f6172702d656c656374726f6e696373026e6c00001c0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c036 + +40415 +e99800000001000000000000037777770c6b69727374656e726176656e026e6c0000010001 +e99880000001000000030002037777770c6b69727374656e726176656e026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +40416 +b8070e6950104462ff8a0000000000000000 +b8078e640000000000000000 + +40417 +b807ad57501044705d2f0000000000000000 + + +40418 +0f2700000001000000000000126d757365756d6865746b7275697468756973026e6c00000f0001 +0f2780000001000000030002126d757365756d6865746b7275697468756973026e6c00000f0001c00c00020001000151800016036e73310f732d686572746f67656e626f736368c01fc00c00020001000151800006036e7332c037c00c0002000100015180000d036e7332036b706e036e657400c03300010001000151800004c29725e3c05500010001000151800004c29725ec + +40419 +09d60000000100000000000009652d6c756e61746963026e6c0000010001 +09d68000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40420 +b807ad5750184470d616000000943040000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 + + +40421 +1d94000000010000000000000670726f646973056e76776d6e026e6c0000010001 +1d94800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +40422 +6dcb00000001000000000000036e733207737570706f7274026e6c0000010001 +6dcb80000001000000020002036e733207737570706f7274026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004c372e7c8c03a00010001000151800004c372e6fe + +40423 +09fb00000001000000000000036e733109666972737466696e64026e6c0000010001 +09fb80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40424 +405e00000001000000000000036e733407737570706f7274026e6c0000010001 +405e80000001000000020002036e733407737570706f7274026e6c0000010001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +40425 +4aff00000001000000000000036e733209666972737466696e64026e6c0000010001 +4aff80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40426 +8d21000000010000000000000377777706787334616c6c026e6c0000010001 +8d21800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +40427 +d3700000000100000000000003616f6c026e6c00000f0001 +d3708000000100000002000003616f6c026e6c00000f0001c00c0002000100015180001306646e732d3031026e7303616f6c03636f6d00c00c0002000100015180000906646e732d3032c02b + +40428 +b807ad65501144625c980000000000000000 + + +40429 +b807ad66501044625c970000000000000000 + + +40430 +4e620000000100000000000008616473657276657206776562616473026e6c0000010001 +4e628000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +40431 +3fa900000001000000000000056572696b73026e6c00000f0001 +3fa980000001000000020000056572696b73026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c012c00c0002000100015180000704686e7331c02b + +40432 +760000000001000000000000037777770e76617374676f65646e6965757773026e6c0000010001 +760080000001000000030001037777770e76617374676f65646e6965757773026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01fc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c051c033000100010001518000043efa0202 + +40433 +4d1f000000010000000000000c6b756e737473746f6666656e026e6c00000f0001 +4d1f800000010000000200000c6b756e737473746f6666656e026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c033 + +40434 +406c000000010000000000000670696361726403647376026e6c0000010001 +406c800000010000000200020670696361726403647376026e6c0000010001c0130002000100015180000f036e733108696e7465726d6178c017c01300020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +40435 +3ede0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3ede8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40436 +a9b70000000100000000000005646e732d32056c61646f74026e6c0000010001 +a9b78000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40437 +edc400100001000000000001046168626c02626c06787334616c6c026e6c00000100010000290800000000000000 +edc480000001000000030003046168626c02626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d09630000291000000000000000 + +40438 +feeb00100001000000000001046168626c02626c06787334616c6c026e6c00002600010000290800000000000000 +feeb80000001000000030003046168626c02626c06787334616c6c026e6c0000260001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d09630000291000000000000000 + +40439 +806800000001000000000000077363686f6c303109686f6f67657a616e640b6b656e6e696e69736e6574026e6c0000010001 +806884030001000000010000077363686f6c303109686f6f67657a616e640b6b656e6e696e69736e6574026e6c0000010001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +40440 +471a28000001000000010000026e6c0000060001026763065f6d736463730f646f7669616e75736b616e746f6f72026e6c0000010001000002580004c0a80001 +471aa8040000000000000000 + +40441 +36ed000000010000000000000670726f646973056e76776d6e026e6c0000010001 +36ed800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +40442 +dcc7000000010000000000000461726f66026e6c00000f0001 +dcc7800000010000000200020461726f66026e6c00000f0001c00c00020001000151800009036e7331026973c011c00c00020001000151800006036e7332c029c02500010001000151800004d5852102c03a00010001000151800004d5c41503 + +40443 +023000000001000000000000086d61696c696e67730578696e676f026e6c0000010001 +023080000001000000020001086d61696c696e67730578696e676f026e6c0000010001c01500020001000151800013036e73310c636f6e63657074732d696374c01bc01500020001000151800006036e7332c033c04e00010001000151800004d5c51e4b + +40444 +0000000070024000b5a30000020405b401010402 +000080010000000000000000 + +40445 +b429000000010000000000000c7261696e626f777061727479026e6c0000010001 +b429800000010000000200020c7261696e626f777061727479026e6c0000010001c00c0002000100015180000a036e7331036e7873c019c00c00020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +40446 +249a00000001000000000000037777770a64656269657270696572026e6c0000010001 +249a80000001000000020000037777770a64656269657270696572026e6c0000010001c01000020001000151800010036e733106686f73747338036e657400c01000020001000151800006036e7332c033 + +40447 +729f0000000100000000000003777777096a64636c6172697479026e6c0000010001 +729f8000000100000003000003777777096a64636c6172697479026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c034c0100002000100015180000805646e733132c034 + +40448 +b40d0000000100000000000003777777096a64636c6172697479026e6c0000010001 +b40d8000000100000003000003777777096a64636c6172697479026e6c0000010001c0100002000100015180001505646e7331300961637469766569737003636f6d00c0100002000100015180000805646e733131c034c0100002000100015180000805646e733132c034 + +40449 +53090000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +53098000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40450 +1c9e00000001000000000000037777770773746572636b65026e6c0000010001 +1c9e80000001000000020002037777770773746572636b65026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c018c01000020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +40451 +b8083fa650104470e6380000000000000000 +b808bfa40000000000000000 + +40452 +cb270000000100000000000007686565726c656e0476616c6b026e6c00000f0001 +cb278000000100000002000207686565726c656e0476616c6b026e6c00000f0001c01400020001000151800012026e730c6d65676170726f7669646572c019c01400020001000151800006036e7332c030c02d0001000100015180000450474002c04b0001000100015180000450474102 + +40453 +0df700000001000000000000037777770d676c6173726563726561746965026e6c0000010001 +0df784030001000000010000037777770d676c6173726563726561746965026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +40454 +b8083fa650184470331f000000945b40000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b808bfa40000000000000000 + +40455 +ce1500000001000000000000046168626c02626c06787334616c6c026e6c0000010001 +ce1580000001000000030002046168626c02626c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +40456 +a91200000001000000000000036e733109666972737466696e64026e6c0000010001 +a91280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40457 +a91300000001000000000000036e733209666972737466696e64026e6c0000010001 +a91380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40458 +d04b000000010000000000000a776f72646f6e6c696e65026e6c00001c0001 +d04b800000010000000200020a776f72646f6e6c696e65026e6c00001c0001c00c0002000100015180000f026e7309656174736572766572c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +40459 +eb8a00000001000000000000046168626c02626c06787334616c6c026e6c0000260001 +eb8a80000001000000030002046168626c02626c06787334616c6c026e6c0000260001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +40460 +b8083fb450114462e5a10000000000000000 +b808bfb40000000000000000 + +40461 +c53d001000010000000000010870686f626f7330310761626e616d726f026e6c00000100010000290800000000000000 +c53d800000010000000200030870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c0000291000000000000000 + +40462 +0000000070024000ab0a0000020405b401010402 +000080010000000000000000 + +40463 +d52b00000001000000000000087261616b70756e74026e6c0000ff0001 +d52b80000001000000020000087261616b70756e74026e6c0000ff0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +40464 +1cd9001000010000000000010870686f626f7330320761626e616d726f026e6c00000100010000290800000000000000 +1cd9800000010000000200030870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c0000291000000000000000 + +40465 +ff08000000010000000000000877616e6e61646f6f026e6c0000ff0001 +ff08800000010000000200010877616e6e61646f6f026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +40466 +67030000000100000000000006732d627572670564656d6f6e026e6c00000f0001 +67038000000100000003000206732d627572670564656d6f6e026e6c00000f0001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c0130002000100015180000f036e73320564656d6f6e036e657400c02d00010001000151800004c29f4906c03f00010001000151800004c29fb004 + +40467 +704e00000001000000000000026e7306617263686973026e6c0000010001 +704e80000001000000020001026e7306617263686973026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ad1272 + +40468 +b8083fb550104462e5a00000000000000000 +b808bfb40000000000000000 + +40469 +9c0900000001000000000000026e7306617263686973026e6c0000260001 +9c0980000001000000020001026e7306617263686973026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ad1272 + +40470 +000f28000001000200000000026e6c0000060001064c4150544f50176164766f636174656e6b616e746f6f722d6a61636f6273026e6c00000500fe000000000000c01400010001000000000004c0a80115 +000fa8040000000000000000 + +40471 +a91500000001000000000000036e733109666972737466696e64026e6c0000010001 +a91580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40472 +b80933a250104470e7a20000000000000000 +b809b3a40000000000000000 + +40473 +8a19000000010000000000000a67696c64657661617274026e6c00000f0001 +8a19800000010000000200000a67696c64657661617274026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +40474 +d73900000001000000000000036e733107737572666e6574026e6c0000010001 +d73980000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +40475 +dbe500000001000000000000065a4f4c4445520773616e64696e6f026e6c0000060001 +dbe584030001000000010000065a4f4c4445520773616e64696e6f026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +40476 +b80933a250184470fcc9000000949400000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b809b3a40000000000000000 + +40477 +70870000000100000000000003777777066f7261636c65026e6c0000010001 +70878000000100000002000003777777066f7261636c65026e6c0000010001c01000020001000151800010036e7331066f7261636c6503636f6d00c01000020001000151800006036e7334c02f + +40478 +898100000001000000000000036e7332086d65646961776562026e6c0000010001 +898180000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +40479 +ce6100000001000000000000036e7333086d65646961776562026e6c0000010001 +ce6180000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +40480 +b80933b050114462e70b0000000000000000 +b809b3b40000000000000000 + +40481 +0000000070024000fdbe0000020405b401010402 +000080010000000000000000 + +40482 +ae2a00000001000000000000037777770976696e647568696572026e6c0000010001 +ae2a80000001000000020000037777770976696e647568696572026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ac01000020001000151800006036e7332c032 + +40483 +b80b2b8e5010447042690000000000000000 +b80bab840000000000000000 + +40484 +0000000070024000a29f0000020405b401010402 +000080010000000000000000 + +40485 +e2cd00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +e2cd80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40486 +402100000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +402180000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40487 +b80b2b8e5018447092d00000009458c0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afd79403c4ef90003000000354e544c4d535350000100000097b200c00f000f00260000000600060020000000534552564552444f5649414e55534b414e544f4f520000 +b80bab840000000000000000 + +40488 +b80933b150104462e70a0000000000000000 +b809b3b40000000000000000 + +40489 +b46600000001000000000000036e7332086e7574736d616173026e6c0000010001 +b46680000001000000020002036e7332086e7574736d616173026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d43633c8c00c00010001000151800004d43633ca + +40490 +eaca000000010000000000000a67726f7465736d7572660a6d6164736369656e6365026e6c0000010001 +eaca800000010000000300030a67726f7465736d7572660a6d6164736369656e6365026e6c0000010001c0170002000100015180000c056e732d303103737663c017c0170002000100015180000e026e7308646174616c6f7373c022c01700020001000151800006036e7332c051c03600010001000151800004d5cce646c04e000100010001518000045054f9a1c06800010001000151800004c26d995e + +40491 +b80b2b9c5011446241d20000000000000000 +b80bab940000000000000000 + +40492 +8d6500000001000000000000047072693203646e73067073696e6574026e6c0000010001 +8d6580000001000000030003047072693203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c01500020001000151800002c00cc015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c00c000100010001518000049a0ff9aac051000100010001518000049a0ff9ae + +40493 +b80c085d501044700a7a0000000000000000 +b80c88540000000000000000 + +40494 +e86f00000001000000000000067669617765620b7669616e6574776f726b73026e6c0000010001 +e86f80000001000000020002067669617765620b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +40495 +0240000000010000000000000377777711636f6e7261642d656c656374726f6e6963026e6c0000010001 +0240800000010000000200020377777711636f6e7261642d656c656374726f6e6963026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c022c01000020001000151800006036e7332c03ac0360001000100015180000450416028c05100010001000151800004c356780c + +40496 +b80b2b9d5010446241d10000000000000000 +b80bab940000000000000000 + +40497 +4685000000010000000000000e696e74656772612d6575726f7065026e6c00000f0001 +4685800000010000000300020e696e74656772612d6575726f7065026e6c00000f0001c00c0002000100015180000f036e73310870726f7365727665c01bc00c00020001000151800012036e73320970726f2d736572766502626500c00c00020001000151800006036e7333c033c02f000100010001518000045054e055c06800010001000151800004d4ccc655 + +40498 +b80c085d5018447053cd0000008b07ac000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd53403c4ed300030000002c4e544c4d535350000100000097b200c0060006002600000006000600200000004c4150544f504a41434f42530000 +b80c88540000000000000000 + +40499 +260700000001000000000000037777770b736c657574656c73746164026e6c0000010001 +260780000001000000020002037777770b736c657574656c73746164026e6c0000010001c01000020001000151800012036e73310b6d6564696164657369676ec01cc01000020001000151800006036e7332c034c03000010001000151800004c3b1f203c04e00010001000151800004d4ccf533 + +40500 +a3b400000001000000000000036e7331096d61726b6772616166026e6c00001c0001 +a3b480000001000000030003036e7331096d61726b6772616166026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c3f13ceec03c00010001000151800004c372eb43c04e000100010001518000043e320e8f + +40501 +b98600000001000000000000036e7331096d61726b6772616166026e6c0000260001 +b98680000001000000030003036e7331096d61726b6772616166026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c3f13ceec03c00010001000151800004c372eb43c04e000100010001518000043e320e8f + +40502 +234600000001000000000000036e7332096d61726b6772616166026e6c00001c0001 +234680000001000000030003036e7332096d61726b6772616166026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c3f13ceec00c00010001000151800004c372eb43c04e000100010001518000043e320e8f + +40503 +3afe00000001000000000000036e7332096d61726b6772616166026e6c0000260001 +3afe80000001000000030003036e7332096d61726b6772616166026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02e00010001000151800004c3f13ceec00c00010001000151800004c372eb43c04e000100010001518000043e320e8f + +40504 +a05e00000001000000000000036e7333096d61726b6772616166026e6c00001c0001 +a05e80000001000000030003036e7333096d61726b6772616166026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c3f13ceec04000010001000151800004c372eb43c00c000100010001518000043e320e8f + +40505 +6a5700000001000000000000036e7333096d61726b6772616166026e6c0000260001 +6a5780000001000000030003036e7333096d61726b6772616166026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c3f13ceec04000010001000151800004c372eb43c00c000100010001518000043e320e8f + +40506 +765c00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +765c80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40507 +65ea00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +65ea80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40508 +b80c086b5011446209ec0000000000000000 +b80c88640000000000000000 + +40509 +0d24000000010000000000000377777705736f6d6679026e6c0000010001 +0d24800000010000000200020377777705736f6d6679026e6c0000010001c0100002000100015180000c026e7306787334616c6cc016c01000020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +40510 +172b00000001000000000000037777770e6d6f6e65796d696c6a6f6e616972026e6c0000010001 +172b80000001000000020002037777770e6d6f6e65796d696c6a6f6e616972026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c033000100010001518000043ed44d39c045000100010001518000043ed44d3a + +40511 +9ad500000001000000000000037777770b6d6f726e696e6773746172026e6c0000010001 +9ad580000001000000020000037777770b6d6f726e696e6773746172026e6c0000010001c010000200010001518000100572656d7573046d736575036e657400c01000020001000151800006036e7332c036 + +40512 +ba5c00000001000000000000046b6963610564656d6f6e026e6c00000f0001 +ba5c80000001000000030002046b6963610564656d6f6e026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +40513 +092b00000001000000000000086f74696d612d727803636f6d0c7072696e732d737570706c79026e6c0000010001 +092b80000001000000020000086f74696d612d727803636f6d0c7072696e732d737570706c79026e6c0000010001c0190002000100015180000d036e7331036b706e036e657400c01900020001000151800006036e7332c03e + +40514 +d4a30000000100000000000003777777096b617a61616c697465026e6c0000010001 +d4a38000000100000002000203777777096b617a61616c697465026e6c0000010001c0100002000100015180000f036e733108616432636c69636bc01ac01000020001000151800006036e7332c032c02e00010001000151800004d5c40907c049000100010001518000043eddd517 + +40515 +f42f000000010000000000000377777706666173746677026e6c0000010001 +f42f800000010000000200020377777706666173746677026e6c0000010001c0100002000100015180001d04646e733115636f6d6d756e69636174696f6e706172746e657273c017c0100002000100015180000704646e7332c030c02b0001000100015180000450f7c542c0540001000100015180000450f7c543 + +40516 +d92e00000001000000000000036e733109756e69736f75726365026e6c0000010001 +d92e80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +40517 +098500000001000000000000037777770f74657272612d74726169656374756d026e6c0000010001 +098580000001000000020002037777770f74657272612d74726169656374756d026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c020c01000020001000151800006036e7332c038c03400010001000151800004d90867fec05300010001000151800004c1ad2bfe + +40518 +f18800000001000000000000046d61696c12696d746563682d70726f6a656374732d6e6f026e6c0000010001 +f18880000001000000020002046d61696c12696d746563682d70726f6a656374732d6e6f026e6c0000010001c0110002000100015180000d036e73310663617374656cc024c01100020001000151800006036e7332c03cc03800010001000151800004c3558244c05100010001000151800004c3558245 + +40519 +c311000000010000000000000a56657374616d61746963026e6c00001c0001 +c311800000010000000200020a56657374616d61746963026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +40520 +8a5d0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +8a5d8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40521 +0000000070024000ab970000020405b401010402 +000080010000000000000000 + +40522 +b25f000000010000000000000870686f626f7330310761626e616d726f026e6c0000010001 +b25f800000010000000200020870686f626f7330310761626e616d726f026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b0870686f626f733032c015c00c00010001000151800004a7cac30bc03f00010001000151800004a7cac30c + +40523 +5d91000000010000000000000870686f626f7330320761626e616d726f026e6c0000010001 +5d91800000010000000200020870686f626f7330320761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c01500020001000151800002c00cc03100010001000151800004a7cac30bc00c00010001000151800004a7cac30c + +40524 +179b00000001000000000000037777770b6b61617274656e68756973026e6c0000010001 +179b80000001000000030003037777770b6b61617274656e68756973026e6c0000010001c01000020001000151800009036e7331027a73c01cc01000020001000151800006036e7332c034c01000020001000151800006036e7333c034c03000010001000151800004d5ef829fc04500010001000151800004d5ef8005c05700010001000151800004d5ef82a0 + +40525 +b80c086c5010446209eb0000000000000000 +b80c88640000000000000000 + +40526 +166a000000010000000000000575726975730473656d61026e6c0000010001 +166a800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +40527 +b80c8b7b5010447090530000000000000000 + + +40528 +d4f5000000010000000000000377777707712d747261636b026e6c0000010001 +d4f5800000010000000200010377777707712d747261636b026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c018c04500010001000151800004c2860043 + +40529 +1ec90000000100000000000003777777086368616e6e656c73026e6c0000010001 +1ec98000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +40530 +bd1e0000000100000000000003706f700b616476656e74697374656e026e6c0000010001 +bd1e8000000100000002000003706f700b616476656e74697374656e026e6c0000010001c0100002000100015180000b036e7331046e656e73c01cc01000020001000151800006036e7332c034 + +40531 +1ec90000000100000000000003777777086368616e6e656c73026e6c0000010001 +1ec98000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +40532 +b80c8b7b501844702c170000008bb43c000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd54403c4ed400030000002c4e544c4d535350000100000097b200c0060006002600000006000600200000004c4150544f504a41434f42530000 + + +40533 +58e5000000010000000000000777616e61646f6f026e6c0000ff0001 +58e5800000010000000200010777616e61646f6f026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +40534 +1ec90000000100000000000003777777086368616e6e656c73026e6c0000010001 +1ec98000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +40535 +ded000000001000000000000067361736b69610b617a636f6d707574657273026e6c0000010001 +ded080000001000000030001067361736b69610b617a636f6d707574657273026e6c0000010001c0130002000100015180000e026e7308767575727765726bc01fc01300020001000151800012036e733208767575727765726b036e657400c01300020001000151800006036e7333c051c033000100010001518000043efa0202 + +40536 +3fff0000000100000000000004686e73300774697363616c69026e6c0000010001 +3fff8000000100000003000204686e73300774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +40537 +04c20000000100000000000004686e73310774697363616c69026e6c0000010001 +04c28000000100000003000204686e73310774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +40538 +8d4f0000000100000000000003777777057374697073026e6c0000010001 +8d4f8000000100000002000003777777057374697073026e6c0000010001c01000020001000151800013046e733031086772616669636f6d03636f6d00c01000020001000151800007046e733032c02f + +40539 +b80c8b89501144628fc50000000000000000 + + +40540 +4ef7000000010000000000000377777706766565726c65026e6c0000010001 +4ef7800000010000000200000377777706766565726c65026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c02f + +40541 +000000007002400063ad0000020405b401010402 +000080010000000000000000 + +40542 +d3100000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +d3108000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +40543 +b80c8b8a501044628fc40000000000000000 + + +40544 +b80d337550104470a06e0000000000000000 +b80db3740000000000000000 + +40545 +06bc000000010000000000000a626c6f6f6d696e657373026e6c00000f0001 +06bc800000010000000200000a626c6f6f6d696e657373026e6c00000f0001c00c00020001000151800016036e73310f627573696e657373636f6e6e656374c017c00c00020001000151800010036e733206776964657873036e657400 + +40546 +8ed6000000010000000000000462617261026e6c0000010001 +8ed6800000010000000200020462617261026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +40547 +a26c0000000100000000000007636f6d2d616c6c026e6c0000010001 +a26c8000000100000002000107636f6d2d616c6c026e6c0000010001c00c0002000100015180000d026e7307696e746f756368c014c00c00020001000151800010026e7307696e746f756368036e657400c02800010001000151800004d413c001 + +40548 +eabb00000001000000000000037777770b646f6262656c7072696a73026e6c0000010001 +eabb80000001000000020002037777770b646f6262656c7072696a73026e6c0000010001c01000020001000151800009036e7331026973c01cc01000020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +40549 +29c0000000010000000000000469766d380369766d027675026e6c0000010001 +29c0800000010000000300030469766d380369766d027675026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000a0473746172026373c015c0150002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482258104c03d00010001000151800004c01fe72ac05300010001000151800004c0576a65 + +40550 +b80d337550184470f99b0000008bf6d2000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd54403c4ed400030000002c4e544c4d535350000100000097b200c0060006002600000006000600200000004c4150544f504a41434f42530000 +b80db3740000000000000000 + +40551 +744200000001000000000000076b6e697073656c026e6c0000ff0001 +744280000001000000020002076b6e697073656c026e6c0000ff0001c00c0002000100015180000d0a696e6574736572762d31c00cc00c0002000100015180000e036e7332076e65746c616e64c014c02800010001000151800004d9aa2b74c04100010001000151800004d9aa2c06 + +40552 +b80d3383501144629fe00000000000000000 +b80db3840000000000000000 + +40553 +132e00000001000000000000086d732d7072696d6f026e6c00000f0001 +132e80000001000000020000086d732d7072696d6f026e6c00000f0001c00c00020001000151800018036e73310e6974636f6e737472756374696f6e03636f6d00c00c00020001000151800006036e7332c02d + +40554 +50a9000000010000000000000b7370616d6d65726475646503636f6d026e6c00000f0001 +50a9840300010000000100000b7370616d6d65726475646503636f6d026e6c00000f0001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +40555 +cd3b00000001000000000000026e73076e656473746174026e6c00001c0001 +cd3b80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40556 +417a00000001000000000000026e73076e656473746174026e6c0000260001 +417a80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40557 +4d7f00000001000000000000036e7332076e656473746174026e6c0000010001 +4d7f80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40558 +af7b00000001000000000000036e7332076e656473746174026e6c00001c0001 +af7b80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40559 +458900000001000000000000036e7332076e656473746174026e6c0000260001 +458980000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40560 +e54600000001000000000000036e7333076e656473746174026e6c00001c0001 +e54680000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40561 +96f100000001000000000000036e7333076e656473746174026e6c0000260001 +96f180000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40562 +19a200000001000000000000036e7334076e656473746174026e6c00001c0001 +19a280000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40563 +5fa800000001000000000000036e7334076e656473746174026e6c0000260001 +5fa880000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40564 +1c6c0000000100000000000008747269746f6e31310761626e616d726f026e6c0000010001 +1c6c8000000100000002000208747269746f6e31310761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c0150002000100015180000b0870686f626f733032c015c03100010001000151800004a7cac30bc04800010001000151800004a7cac30c + +40565 +ff0f00000001000000000000066c6170746f700977696a6e7472616e73026e6c0000060001 +ff0f84030001000000010000066c6170746f700977696a6e7472616e73026e6c0000060001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40566 +b80d3384501044629fdf0000000000000000 +b80db3840000000000000000 + +40567 +1ed400000001000000000000037777770c736573616d65737472657373026e6c0000010001 +1ed484030001000000010000037777770c736573616d65737472657373026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40568 +03bc00000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03bc80000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +40569 +36c0000000010000000000000866616c6c6261636b0f627573696e657373636f6e6e656374026e6c0000010001 +36c0800000010000000300020866616c6c6261636b0f627573696e657373636f6e6e656374026e6c0000010001c0150002000100015180000d036e733106776964657873c025c01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c03dc03900010001000151800004d4ccc0fcc06e000100010001518000043efa0703 + +40570 +2f2b00000001000000000000036d78320464697661026e6c0000010001 +2f2b80000001000000020000036d78320464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +40571 +a89500000001000000000000036d78310464697661026e6c0000010001 +a89580000001000000020000036d78310464697661026e6c0000010001c0100002000100015180000e036e73310464697661036e657400c01000020001000151800006036e7332c02d + +40572 +a29c000000010000000000000a656d6561736d7470303203616f6e026e6c0000010001 +a29c800000010000000200010a656d6561736d7470303203616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40573 +5f04000000010000000000000a656d6561736d7470303203616f6e026e6c00001c0001 +5f04800000010000000200010a656d6561736d7470303203616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40574 +84a7000000010000000000000a656d6561736d7470303203616f6e026e6c0000260001 +84a7800000010000000200010a656d6561736d7470303203616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40575 +381b000000010000000000000a656d6561736d7470303103616f6e026e6c00001c0001 +381b800000010000000200010a656d6561736d7470303103616f6e026e6c00001c0001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40576 +b4e1000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +b4e1800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40577 +e7e0000000010000000000000a656d6561736d7470303103616f6e026e6c0000260001 +e7e0800000010000000200010a656d6561736d7470303103616f6e026e6c0000260001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +40578 +9a6b000000010000000000000562696e636b026e6c00000f0001 +9a6b800000010000000200020562696e636b026e6c00000f0001c00c0002000100015180000b036e73310470696e65c012c00c00020001000151800006036e7332c02ac02600010001000151800004d59c0201c03d00010001000151800004c3c1a303 + +40579 +3a560000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3a568000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40580 +df4800000001000000000000037777770b74687569737472656e6473026e6c0000010001 +df4880000001000000030003037777770b74687569737472656e6473026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c01cc01000020001000151800006036e7332c034c01000020001000151800006036e7333c034c03000010001000151800004c3f13ceec04c00010001000151800004c372eb43c05e000100010001518000043e320e8f + +40581 +916c0000000100000000000003777777036e7263026e6c0000010001 +916c8000000100000003000203777777036e7263026e6c0000010001c01000020001000151800015036e73310b70696e6b726f6363616465036e657400c0100002000100015180000e026e73086d656761706c6578c014c01000020001000151800006036e7331c04cc04900010001000151800004504f6101c06300010001000151800004504f6102 + +40582 +ec14001000010000000000010766313331323534057570632d66066368656c6c6f026e6c00000100010000290800000000000000 +ec14800000010000000300040766313331323534057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c420000291000000000000000 + +40583 +0a51000000010000000000000a7072696e746275796572026e6c00000f0001 +0a51800000010000000200010a7072696e746275796572026e6c00000f0001c00c0002000100015180000c026e7306776562746963c017c00c0002000100015180000b026e73056963617474c017c02b00010001000151800004c14e1e2b + +40584 +eb730000000100000000000010666f637573696e766573746d656e7473026e6c00000f0001 +eb738403000100000001000010666f637573696e766573746d656e7473026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40585 +95c900000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +95c980000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40586 +c98d00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +c98d80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40587 +4f4f00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +4f4f80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +40588 +07fa00000001000000000000026e75026e6c0000010001 +07fa80000001000000030003026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +40589 +683e00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +683e80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40590 +10320000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +10328000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +40591 +44230000000100000000000004726f6f7307656e64656d6f6c026e6c0000260001 +44238000000100000002000004726f6f7307656e64656d6f6c026e6c0000260001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +40592 +2b4c00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +2b4c80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40593 +68990010000100000000000104686f6d6503777873026e6c00000100010000290800000080000000 +68998000000100000003000404686f6d6503777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a650000291000000000000000 + +40594 +303400000001000000000000026e73076e656473746174026e6c0000010001 +303480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40595 +981a00000001000000000000036e7333076e656473746174026e6c0000010001 +981a80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40596 +093e28000001000200000000024e4c0000060001065343484f4c53084848454e545a454e024e4c00000500fe000000000000c014000100010000000000040a030a04 +093ea8040000000000000000 + +40597 +09bd00000001000000000000037777770a6c697665746f72696465026e6c0000010001 +09bd84030001000000010000037777770a6c697665746f72696465026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +40598 +f5820000000100000000000003777777086c616e67686f7574026e6c0000010001 +f5828000000100000002000003777777086c616e67686f7574026e6c0000010001c01000020001000151800013036e733109752d73657276657273036e657400c01000020001000151800006036e7332c031 + +40599 +6dbd000000010000000000000972697364616d737374026e6c00000f0001 +6dbd800000010000000300010972697364616d737374026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc016c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c048c02a000100010001518000043efa0202 + +40600 +ba1600000001000000000000066d6f76696573077765622d6c6f67026e6c0000010001 +ba1680000001000000030003066d6f76696573077765622d6c6f67026e6c0000010001c0130002000100015180000b036e733104696c7365c01bc01300020001000151800006036e7332c033c01300020001000151800006036e7333c033c02f000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +40601 +84e50000000100000000000003676d78026e6c00000f0001 +84e58000000100000003000203676d78026e6c00000f0001c00c0002000100015180000d036e733106776964657873c010c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c028c02400010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +40602 +0e8c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0e8c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40603 +35ea00000001000000000000036e7332057377646e73026e6c0000010001 +35ea80000001000000020002036e7332057377646e73026e6c0000010001c0100002000100015180000a036e733103686978c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +40604 +71a100000001000000000000037777770b7374617274706167696e61026e6c0000010001 +71a180000001000000030003037777770b7374617274706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c030000100010001518000043e45a282c042000100010001518000043e45a283c054000100010001518000043e45a284 + +40605 +9427000000010000000000000331373202323101310131026e6c0000010001 +9427840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +40606 +ac9100100001000000000001036e73310d686f7374696e67667265616b73026e6c00000100010000290800000080000000 +ac9180000001000000020003036e73310d686f7374696e67667265616b73026e6c0000010001c01000020001000151800014036e73320d666c79696e6773657276657273c01ec01000020001000151800006036e7331c036c03200010001000151800004d420e285c05200010001000151800004d420e2840000291000000000000000 + +40607 +d43c00100001000000000001036e73320d686f7374696e67667265616b73026e6c00000100010000290800000080000000 +d43c80000001000000020003036e73320d686f7374696e67667265616b73026e6c0000010001c01000020001000151800014036e73320d666c79696e6773657276657273c01ec01000020001000151800006036e7331c036c03200010001000151800004d420e285c05200010001000151800004d420e2840000291000000000000000 + +40608 +11700000000100000000000009652d6c756e61746963026e6c0000010001 +11708000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40609 +197b0000000100000000000009652d6c756e61746963026e6c0000010001 +197b8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40610 +120d0000000100000000000009652d6c756e61746963026e6c0000010001 +120d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40611 +000000007002400007cf0000020405b401010402 +000080010000000000000000 + +40612 +5bfc000000010000000000000766313331323534057570632d66066368656c6c6f026e6c0000010001 +5bfc800000010000000300030766313331323534057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +40613 +7a1600000001000000000000037777770e7a6f6f6d6d756c74696d65646961026e6c0000010001 +7a1680000001000000020000037777770e7a6f6f6d6d756c74696d65646961026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c038 + +40614 +34d90000000100000000000003777777076d736e616d656e026e6c0000010001 +34d98403000100000001000003777777076d736e616d656e026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +40615 +e2de0000000100000000000011686967687370656564616c6c69616e6365026e6c00000f0001 +e2de8000000100000002000111686967687370656564616c6c69616e6365026e6c00000f0001c00c00020001000151800009036e7331026e73c01ec00c00020001000151800013036e7332026e6c0669676e697465036e657400c03200010001000151800004d46c0d06 + +40616 +3e47000000010000000000000377777705696e747261026e6c0000010001 +3e47800000010000000300030377777705696e747261026e6c0000010001c0100002000100015180000e076e73617574683103626974c016c0100002000100015180000a076e736175746832c032c0100002000100015180000a076e736175746833c032c02a00010001000151800004d5880c33c04400010001000151800004d5880c3bc05a00010001000151800004d4ccc00b + +40617 +a6c400000001000000000000036e7331046372696f026e6c0000010001 +a6c480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40618 +f36000000001000000000000036e7332046372696f026e6c0000010001 +f36080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40619 +755800000001000000000000037777770667616d657273026e6c0000010001 +755880000001000000020002037777770667616d657273026e6c0000010001c0100002000100015180000b036e73310470696e65c017c01000020001000151800006036e7332c02fc02b00010001000151800004d59c0201c04200010001000151800004c3c1a303 + +40620 +0bdd00000001000000000000066b61726d6163036d6373026e6c0000ff0001 +0bdd80000001000000020001066b61726d6163036d6373026e6c0000ff0001c01300020001000151800005026e73c013c01300020001000151800010036e7332096379626572636f6d6dc017c02b00010001000151800004d5c40185 + +40621 +b80f1979501044705e8a0000000000000000 +b80f99740000000000000000 + +40622 +4acf00000001000000000000026e73076e656473746174026e6c00001c0001 +4acf80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40623 +756000000001000000000000036e73310d686f7374696e67667265616b73026e6c0000010001 +756080000001000000020002036e73310d686f7374696e67667265616b73026e6c0000010001c01000020001000151800014036e73320d666c79696e6773657276657273c01ec01000020001000151800006036e7331c036c03200010001000151800004d420e285c05200010001000151800004d420e284 + +40624 +136300000001000000000000026e73076e656473746174026e6c0000260001 +136380000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40625 +3ab000000001000000000000036e73320d686f7374696e67667265616b73026e6c0000010001 +3ab080000001000000020002036e73320d686f7374696e67667265616b73026e6c0000010001c01000020001000151800014036e73320d666c79696e6773657276657273c01ec01000020001000151800006036e7331c036c03200010001000151800004d420e285c05200010001000151800004d420e284 + +40626 +325c00000001000000000000037777770868617a656e626f73026e6c0000010001 +325c80000001000000020001037777770868617a656e626f73026e6c0000010001c0100002000100015180000a036e733303777873c019c01000020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +40627 +6d010000000100000000000012666f7070656e70616c696e67656e7a616c6d026e6c00000f0001 +6d018000000100000002000212666f7070656e70616c696e67656e7a616c6d026e6c00000f0001c00c0002000100015180000e036e733107686f6673746565c01fc00c00020001000151800006036e7332c037c033000100010001518000043ed44e32c04d000100010001518000043ed44e33 + +40628 +8a9e00000001000000000000036e7332076e656473746174026e6c0000010001 +8a9e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40629 +c7cc00000001000000000000036e7332076e656473746174026e6c00001c0001 +c7cc80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40630 +fcd50010000100000000000106787334616c6c026e6c0000ff00010000290800000080000000 +fcd58000000100000003000306787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +40631 +b91300000001000000000000036e7332076e656473746174026e6c0000260001 +b91380000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40632 +808b00000001000000000000086d6f746f726f6c61026e6c0000010001 +808b80000001000000030000086d6f746f726f6c61026e6c0000010001c00c00020001000151800015076d6f7467617465086d6f746f726f6c6102646500c00c00020001000151800011076d6f7467617465036d6f7403636f6d00c00c0002000100015180000906667470626f78c052 + +40633 +b80f19795018447087170000008ba547000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afbd2403c4d5200030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005343484f4c534848454e545a454e0000 +b80f99740000000000000000 + +40634 +b7e100000001000000000000036e7333076e656473746174026e6c00001c0001 +b7e180000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40635 +455a00000001000000000000036e7333076e656473746174026e6c0000260001 +455a80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40636 +a49f00000001000000000000036e7334076e656473746174026e6c0000010001 +a49f80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40637 +2670000000010000000000000575726975730473656d61026e6c0000010001 +2670800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +40638 +cd0400000001000000000000036e7334076e656473746174026e6c00001c0001 +cd0480000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40639 +0de400000001000000000000036e7334076e656473746174026e6c0000260001 +0de480000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +40640 +53dd000000010000000000000742414e4b4a414e0a4753492d446f6d61696e09547572746c656e6574026e6c0000060001 +53dd840300010000000100000742414e4b4a414e0a4753492d446f6d61696e09547572746c656e6574026e6c0000060001c02900060001000038400036026e730f646f6d61696e2d7265676973747279c0290a686f73746d6173746572c0400bf1e540000070800000384000278d0000003840 + +40641 +b80f1987501144625dfc0000000000000000 +b80f99840000000000000000 + +40642 +539e000000010000000000000472696273026e6c0000010001 +539e800000010000000200020472696273026e6c0000010001c00c0002000100015180000c036e7331056e6574636fc011c00c00020001000151800006036e7332c029c02500010001000151800004c26d4a82c03d00010001000151800004c26dd146 + +40643 +000000007002400013fa0000020405b401010402 +000080010000000000000000 + +40644 +de3700100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +de3780000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +40645 +28f800000001000000000000037777770864616e69656c6c61026e6c0000010001 +28f880000001000000020002037777770864616e69656c6c61026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c019c01000020001000151800006036e7332c030c02d0001000100015180000450474002c04b0001000100015180000450474102 + +40646 +4fdc00000001000000000000037777770d73706f72747661636e6f6f7264026e6c0000010001 +4fdc80000001000000020002037777770d73706f72747661636e6f6f7264026e6c0000010001c01000020001000151800018036e733111736d69647364657369676e73747564696fc01ec01000020001000151800009036e7332026d6ac01ec03200010001000151800004515b0311c05600010001000151800004515b000a + +40647 +7e0000100001000000000001026e73076e656473746174026e6c00002600010000290800000000000000 +7e0080000001000000020003026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +40648 +b72c00000001000000000000037777770d686f6767756572737472616174026e6c0000010001 +b72c80000001000000020002037777770d686f6767756572737472616174026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01ec01000020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +40649 +c9f100000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000010001 +c9f180000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +40650 +1fa500100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +1fa580000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +40651 +979300000001000000000000087574726f6e696373026e6c00000f0001 +979384030001000000010000087574726f6e696373026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +40652 +b80f1988501044625dfb0000000000000000 +b80f99840000000000000000 + +40653 +36be00100001000000000001036e7333076e656473746174026e6c00002600010000290800000000000000 +36be80000001000000020003036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +40654 +95630000000100000000000003777777046b697474026e6c0000010001 +95638000000100000002000203777777046b697474026e6c0000010001c0100002000100015180000a036e733103696166c015c01000020001000151800006036e7332c02dc029000100010001518000045059e040c03f000100010001518000045059ee03 + +40655 +bd6300000001000000000000046d61696c0d6f6f73747665656e67726f6570026e6c0000010001 +bd6380000001000000020000046d61696c0d6f6f73747665656e67726f6570026e6c0000010001c01100020001000151800018036e73310e66696e616c2d66726f6e74696572036e657400c01100020001000151800006036e7332c037 + +40656 +c760000000010000000000000a7a65656c616e646e6574026e6c0000ff0001 +c760800000010000000200020a7a65656c616e646e6574026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02b00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +40657 +cfea0000000100000000000006787334616c6c026e6c0000ff0001 +cfea8000000100000003000206787334616c6c026e6c0000ff0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +40658 +b8100fa250104470748b0000000000000000 +b8108fa40000000000000000 + +40659 +3bd3000000010000000000000467616d650866756e7369746573026e6c0000010001 +3bd3800000010000000200020467616d650866756e7369746573026e6c0000010001c0110002000100015180000b036e7331046e732d31c01ac01100020001000151800006036e7332c032c02e000100010001518000045045a0cdc04500010001000151800004d4cceec8 + +40660 +4a6b28000001000200000000026e6c00000600010742414e4b4a414e0a4753492d446f6d61696e09547572746c656e6574026e6c00000500fe000000000000c01400010001000000000004d4535706 +4a6ba8040000000000000000 + +40661 +b8100fa250184470efe20000008b547d000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afbd2403c4d5200030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005343484f4c534848454e545a454e0000 +b8108fa40000000000000000 + +40662 +944f0000000100000000000004686f6d6503777873026e6c0000010001 +944f8000000100000003000304686f6d6503777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +40663 +ee10000000010000000000000b73796e6572676574696361026e6c0000010001 +ee10800000010000000200020b73796e6572676574696361026e6c0000010001c00c00020001000151800010036e733109756e69736572766572c018c00c00020001000151800006036e7332c030c02c00010001000151800004c3454b03c04800010001000151800004d119a2fa + +40664 +b8100fb05011446273fd0000000000000000 +b8108fb40000000000000000 + +40665 +190700000001000000000000037777770a6d756c746973636f7065026e6c0000010001 +190780000001000000020002037777770a6d756c746973636f7065026e6c0000010001c0100002000100015180000c026e7306656d61746963c01bc01000020001000151800006036e7332c032c02f000100010001518000043e3a4042c047000100010001518000043e3a4043 + +40666 +c54200000001000000000000037777770d73686f706b6c7577657268726d026e6c0000010001 +c54280000001000000020002037777770d73686f706b6c7577657268726d026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +40667 +000000007002400030df0000020405b401010402 +000080010000000000000000 + +40668 +7c5b0000000100000000000007616b73656e746f026e6c0000ff0001 +7c5b8000000100000002000207616b73656e746f026e6c0000ff0001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +40669 +c6d1000000010000000000000a666f727761726475726c0762617365776562026e6c0000010001 +c6d1800000010000000200020a666f727761726475726c0762617365776562026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03300010001000151800004d535d035c04500010001000151800004d535d034 + +40670 +e23300000001000000000000037777770877656467776f6f64026e6c0000010001 +e23380000001000000020000037777770877656467776f6f64026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c019c0100002000100015180000704686e7331c032 + +40671 +3ca400000001000000000000037777770773746572636b65026e6c0000010001 +3ca480000001000000020002037777770773746572636b65026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c018c01000020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +40672 +810d0000000100000000000007646962616c6578026e6c0000010001 +810d8000000100000002000007646962616c6578026e6c0000010001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +40673 +04ac00000001000000000000037777770773746572636b65026e6c0000010001 +04ac80000001000000020002037777770773746572636b65026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c018c01000020001000151800006036e7332c030c02c0001000100015180000451113264c04800010001000151800004d5c42851 + +40674 +a6a40000000100000000000006787334616c6c026e6c0000010001 +a6a48000000100000003000206787334616c6c026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +40675 +f2fe00000001000000000000096261646d696e746f6e026e6c00000f0001 +f2fe80000001000000020002096261646d696e746f6e026e6c00000f0001c00c00020001000151800012036e73310b696e7465727374726f6f6dc016c00c00020001000151800006036e7332c02ec02a0001000100015180000450558121c04800010001000151800004d58141c4 + +40676 +b8100fb15010446273fc0000000000000000 +b8108fb40000000000000000 + +40677 +9b5f00000001000000000000026e73076e656473746174026e6c0000010001 +9b5f80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40678 +82560000000100000000000005646e732d31056c61646f74026e6c0000010001 +82568000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40679 +6ad500000001000000000000026e73076e656473746174026e6c0000260001 +6ad580000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +40680 +b81096d8501044700a3a0000000000000000 + + +40681 +82570000000100000000000005646e732d32056c61646f74026e6c0000010001 +82578000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40682 +5574000000010000000000000d6f62732d696a7373656c686f66026e6c0000010001 +5574800000010000000200020d6f62732d696a7373656c686f66026e6c0000010001c00c0002000100015180000d036e7331066e6c74726565c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d4b20403c04700010001000151800004d5881e45 + +40683 +5cc400000001000000000000036e7333076e656473746174026e6c0000010001 +5cc480000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40684 +54c000000001000000000000096c756974696e672d3103746d66026e6c00000f0001 +54c080000001000000020000096c756974696e672d3103746d66026e6c00000f0001c0160002000100015180000f036e73310571696e6970036e657400c01600020001000151800006036e7332c032 + +40685 +000000007002faf043bb0000020405b401010402 +000080010000000000000000 + +40686 +b81096d8501844706e000000008b6c0e000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afbd2403c4d5200030000002e4e544c4d535350000100000097b208e0080008002600000006000600200000005343484f4c534848454e545a454e0000 + + +40687 +ae6200000001000000000000036e7333076e656473746174026e6c0000260001 +ae6280000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +40688 +6b5c00000001000000000000056b72697073026e6c00001c0001 +6b5c80000001000000020000056b72697073026e6c00001c0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02a + +40689 +5e5b000000010000000000000f4d4c424c4f4e4744495354414e4345026e6c0000020001 +5e5b840300010000000100000f4d4c424c4f4e4744495354414e4345026e6c0000020001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +40690 +82590000000100000000000005646e732d31056c61646f74026e6c0000010001 +82598000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40691 +825a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +825a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40692 +b81096e65011446209ac0000000000000000 + + +40693 +aef300000001000000000000037777770b6c616e6b6174726176656c026e6c0000010001 +aef380000001000000020002037777770b6c616e6b6174726176656c026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +40694 +2fb90000000100000000000002616404696c7365026e6c0000010001 +2fb98000000100000003000302616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +40695 +b81096e75010446209ab0000000000000000 + + +40696 +6fad00000001000000000000067874646e6574026e6c00000f0001 +6fad80000001000000020002067874646e6574026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7331c00cc02700010001000151800004c16e9d02c03800010001000151800004d9cc165f + +40697 +37f6000000010000000000000b766163616e736f6c65696c0477656233026e6c0000010001 +37f6800000010000000200020b766163616e736f6c65696c0477656233026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c03100010001000151800004d436240ec04300010001000151800004c2b262ef + +40698 +000000007002400074a10000020405b401010402 +000080010000000000000000 + +40699 +855f00000001000000000000037777770c70726f6475637472616e6765026e6c0000010001 +855f80000001000000020002037777770c70726f6475637472616e6765026e6c0000010001c0100002000100015180000c04646e73310470696e73c01dc0100002000100015180000704646e7332c036c03100010001000151800004d9c26101c04900010001000151800004d9c26002 + +40700 +1d1300100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +1d1380000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +40701 +ddf000000001000000000000036e733104686f6d65026e6c0000010001 +ddf080000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +40702 +b812ca7a501044701a580000000000000000 + + +40703 +094e00000001000000000000046d61696c03696e67026e6c00000f0001 +094e80000001000000020002046d61696c03696e67026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0290001000100015180000491dd19c2c03b0001000100015180000491dd5dc2 + +40704 +841c00000001000000000000116578706f736974696573797374656d656e1a70726573656e746174696573797374656d656e2d6f6e6c696e65026e6c0000010001 +841c80000001000000020002116578706f736974696573797374656d656e1a70726573656e746174696573797374656d656e2d6f6e6c696e65026e6c0000010001c01e0002000100015180000a036e733103696166c039c01e00020001000151800006036e7332c051c04d000100010001518000045059e040c063000100010001518000045059ee03 + +40705 +f03a000000010000000000000377777707657269732d6e6c026e6c0000010001 +f03a800000010000000200020377777707657269732d6e6c026e6c0000010001c01000020001000151800010036e733109747261666669633475c018c01000020001000151800006036e7332c030c02c00010001000151800004c323b781c04800010001000151800004c323b782 + +40706 +a3ef00000001000000000000036b626d026e6c00000f0001 +a3ef80000001000000020002036b626d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +40707 +b812ca7a50184470b4fb00000090ef06000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005403677373096d6963726f736f667403636f6d004039b1fb403b037b0003000000314e544c4d535350000100000097b200c00a000a0027000000070007002000000042414e4b4a414e4753492d444f4d41494e0000 + + +40708 +223900000001000000000000037777770d656c656d656e746f6e6c696e65026e6c0000010001 +223980000001000000020002037777770d656c656d656e746f6e6c696e65026e6c0000010001c0100002000100015180000a026e730469636d63c01ec01000020001000151800006036e7332c035c032000100010001518000043e643805c048000100010001518000043e643806 + +40709 +6b8700000001000000000000026e730773747564696f32026e6c0000010001 +6b8780000001000000030001026e730773747564696f32026e6c0000010001c00f0002000100015180000e026e7308767575727765726bc017c00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +40710 +642900000001000000000000036e73320773747564696f32026e6c0000010001 +642980000001000000030001036e73320773747564696f32026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +40711 +003900000001000000000000036e733108642d736572766572026e6c0000010001 +003980000001000000020002036e733108642d736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d0001000100015180000451045c14c03e0001000100015180000451046032 + +40712 +ff9700000001000000000000036e733108642d736572766572026e6c0000260001 +ff9780000001000000020002036e733108642d736572766572026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d0001000100015180000451045c14c03e0001000100015180000451046032 + +40713 +f4e500000001000000000000096c617370616c6d6173026e6c00001c0001 +f4e580000001000000020000096c617370616c6d6173026e6c00001c0001c00c00020001000151800012036e73310b7472616374696f6e2d6974c016c00c00020001000151800006036e7332c02e + +40714 +3b4b0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3b4b8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40715 +b812ca885011446219c50000000000000000 + + +40716 +0000000070024000d8060000020405b401010402 +000080010000000000000000 + +40717 +88dd00000001000000000000026e73053266617374026e6c0000010001 +88dd80000001000000030003026e73053266617374026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc0290001000100015180000450f7c022c03b000100010001518000043e858122c04d000100010001518000045117eb22 + +40718 +84ed00000001000000000000036e7332053266617374026e6c0000010001 +84ed80000001000000030003036e7332053266617374026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a0001000100015180000450f7c022c00c000100010001518000043e858122c04a000100010001518000045117eb22 + +40719 +b9a500000001000000000000036e733503777873026e6c0000010001 +b9a580000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +40720 +9f9800000001000000000000036e733007686f73746c6162026e6c0000010001 +9f9880000001000000020002036e733007686f73746c6162026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c3eaad40c03a00010001000151800004c3eaad41 + +40721 +b812ca895010446219c40000000000000000 + + +40722 +c0e20000000100000000000003777777106465766f6f726e646572756974657273026e6c0000010001 +c0e28403000100000001000003777777106465766f6f726e646572756974657273026e6c0000010001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +40723 +22400000000100000000000003667331056c76706161026e6c0000060001 +22408000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +40724 +85f4000000010000000000000234370332323503313336033231360964796e61626c6f636b07656173796e6574026e6c0000100001 +85f4800000010000000200020234370332323503313336033231360964796e61626c6f636b07656173796e6574026e6c0000100001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +40725 +7f81000000010000000000000377777712637370696a2d70726f6475637472616e6765026e6c0000010001 +7f81800000010000000200020377777712637370696a2d70726f6475637472616e6765026e6c0000010001c0100002000100015180000c026e7306787334616c6cc023c01000020001000151800006036e7332c03ac03700010001000151800004c26d0642c04f00010001000151800004c26d0963 + +40726 +b81344c45010447003730000000000000000 +b813c4c40000000000000000 + +40727 +236e00000001000000000000036e733107737572666e6574026e6c0000010001 +236e80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +40728 +21d100000001000000000000037777770664616c616368026e6c0000010001 +21d180000001000000030003037777770664616c616368026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c017c0100002000100015180000e0b6e616d6573657276657232c037c0100002000100015180000e0b6e616d6573657276657233c037c02b0001000100015180000451ad2020c04f0001000100015180000451ad2021c0690001000100015180000452c049aa + +40729 +b81344c450184470d4fb00000090b722000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005403677373096d6963726f736f667403636f6d004039b1fc403b037c0003000000314e544c4d535350000100000097b200c00a000a0027000000070007002000000042414e4b4a414e4753492d444f4d41494e0000 +b813c4c40000000000000000 + +40730 +377c00000001000000000000023230033230310239330236350770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +377c80000001000000020002023230033230310239330236350770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02c00020001000151800006036e7330c02cc02c00020001000151800006036e7331c02cc04800010001000151800004c2a55e01c05a00010001000151800004c2a55e05 + +40731 +19be0000000100000000000003777777056e65786173026e6c0000010001 +19be8000000100000002000003777777056e65786173026e6c0000010001c01000020001000151800015036e73310b7072696f73657276653031036e657400c01000020001000151800006036e7332c02e + +40732 +96490000000100000000000004686f6d650464656473026e6c0000010001 +96498000000100000002000204686f6d650464656473026e6c0000010001c0110002000100015180000c026e73067874646e6574c016c01100020001000151800006036e7331c02dc02a00010001000151800004c16e9d02c04200010001000151800004d9cc165f + +40733 +b81344d25011446202e00000000000000000 +b813c4d40000000000000000 + +40734 +0000000070024000aad60000020405b401010402 +000080010000000000000000 + +40735 +b81344d35010446202df0000000000000000 +b813c4d40000000000000000 + +40736 +b813e03f501044703ac70000000000000000 + + +40737 +04b700000001000000000000036d783103626974026e6c0000010001 +04b780000001000000030003036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +40738 +17a000100001000000000001036e733203757063026e6c00000100010000290800000080000000 +17a080000001000000030004036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c01410000291000000000000000 + +40739 +b813e03f50184470df7500000090e3fc000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005403677373096d6963726f736f667403636f6d004039b1fc403b037c0003000000314e544c4d535350000100000097b200c00a000a0027000000070007002000000042414e4b4a414e4753492d444f4d41494e0000 + + +40740 +b813e04d501144623a340000000000000000 + + +40741 +bc160000000100000000000003777777087364636461727473026e6c0000010001 +bc168000000100000002000003777777087364636461727473026e6c0000010001c01000020001000151800016036e73350c7265616479686f7374696e6703636f6d00c01000020001000151800006036e7336c031 + +40742 +0ea90000000100000000000003667331056c76706161026e6c0000060001 +0ea98000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +40743 +b813e04e501044623a330000000000000000 + + +40744 +1cbb00000001000000000000026e730777697a7a626974026e6c0000010001 +1cbb80000001000000020002026e730777697a7a626974026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e3a360bc039000100010001518000043e3a360c + +40745 +310900000001000000000000036e73320777697a7a626974026e6c0000010001 +310980000001000000020002036e73320777697a7a626974026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043e3a360bc00c000100010001518000043e3a360c + +40746 +733b0000000100000000000003777777127465657577656e6d616b656c61617264696a026e6c0000010001 +733b8000000100000003000303777777127465657577656e6d616b656c61617264696a026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c023c01000020001000151800006036e7330c03ac01000020001000151800006036e7333c03ac03700010001000151800004c3561682c05700010001000151800004c3561683c06900010001000151800004d5de0bfa + +40747 +26bd00000001000000000000046b616476026e6c0000010001 +26bd80000001000000030001046b616476026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +40748 +08da000000010000000000000b67656c7265766973696f6e026e6c00000f0001 +08da800000010000000200000b67656c7265766973696f6e026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c037 + +40749 +650e00000001000000000000037777771677656c6c6e657373616374696669742d616c6d657265026e6c0000010001 +650e84030001000000010000037777771677656c6c6e657373616374696669742d616c6d657265026e6c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +40750 +21e40000000100000000000003666c79036b6c6d026e6c0000010001 +21e48000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +40751 +6e630000000100000000000003777777086e69746562697465026e6c0000010001 +6e638000000100000002000003777777086e69746562697465026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c033 + +40752 +6b690000000100000000000005726974656c026e6c00000f0001 +6b698000000100000003000105726974656c026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +40753 +3bb2000000010000000000000d6d656d6f2d6c656c7973746164026e6c0000010001 +3bb2800000010000000300030d6d656d6f2d6c656c7973746164026e6c0000010001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec01ac00c00020001000151800006036e7331c037c00c00020001000151800006036e7332c037c02e00010001000151800004d42d2005c04c00010001000151800004d42d2003c05e00010001000151800004d42d2103 + +40754 +b4aa00000001000000000000037777770d6b61617274656e6b6f6e696e67026e6c0000010001 +b4aa80000001000000020001037777770d6b61617274656e6b6f6e696e67026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01ec01000020001000151800006036e7334c036c03200010001000151800004d5c401c0 + +40755 +ba56000000010000000000000b6d6f746976616374696f6e026e6c0000010001 +ba56800000010000000200020b6d6f746976616374696f6e026e6c0000010001c00c0002000100015180001004646e73310869636f6d70616e79c018c00c0002000100015180000704646e7332c031c02c000100010001518000043e3a890ac048000100010001518000043e3a890b + +40756 +ea1000000001000000000000037777770770726f6669656c026e6c0000010001 +ea1080000001000000020002037777770770726f6669656c026e6c0000010001c0100002000100015180000a026e730469636d63c018c01000020001000151800006036e7332c02fc02c000100010001518000043e643805c042000100010001518000043e643806 + +40757 +330500000001000000000000037777770964617461616c657274026e6c0000010001 +330580000001000000020001037777770964617461616c657274026e6c0000010001c0100002000100015180000b026e7305756e697434c01ac0100002000100015180000d036e7332036b706e036e657400c02e00010001000151800004c1acaf16 + +40758 +661e0000000100000000000003777777096d6f736c696d776562026e6c0000010001 +661e8000000100000002000003777777096d6f736c696d776562026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +40759 +2d7900000001000000000000026e73067874646e6574026e6c0000010001 +2d7980000001000000020002026e73067874646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c00010001000151800004c16e9d02c03800010001000151800004d9cc165f + +40760 +9cdb0000000100000000000003777777096d6f64656c63617273026e6c0000010001 +9cdb8000000100000003000203777777096d6f64656c63617273026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +40761 +34ec00000001000000000000037777770366756e026e6c0000010001 +34ec80000001000000020001037777770366756e026e6c0000010001c0100002000100015180000a026e7304696d636fc014c01000020001000151800013036e7332097669727475616c787303636f6d00c028000100010001518000043e81810a + +40762 +f2c000000001000000000000026e7307706167656e6963026e6c0000010001 +f2c080000001000000030001026e7307706167656e6963026e6c0000010001c00f00020001000151800013026e730d7061676570726f636573736f72c017c00f00020001000151800006036e7332c02ec00f0002000100015180000d036e73320663617374656cc017c05c00010001000151800004c3558245 + +40763 +d59500000001000000000000036e733207706167656e6963026e6c0000010001 +d59580000001000000030001036e733207706167656e6963026e6c0000010001c01000020001000151800013026e730d7061676570726f636573736f72c018c01000020001000151800006036e7332c02fc0100002000100015180000d036e73320663617374656cc018c05d00010001000151800004c3558245 + +40764 +0b0b00000001000000000000046c79636f026e6c00000f0001 +0b0b80000001000000020000046c79636f026e6c00000f0001c00c0002000100015180000d026e7307706167656e6963c011c00c00020001000151800006036e7332c028 + +40765 +6d2100000001000000000000026e7307706167656e6963026e6c0000260001 +6d2180000001000000030001026e7307706167656e6963026e6c0000260001c00f00020001000151800013026e730d7061676570726f636573736f72c017c00f00020001000151800006036e7332c02ec00f0002000100015180000d036e73320663617374656cc017c05c00010001000151800004c3558245 + +40766 +1b1a00000001000000000000026e730d7061676570726f636573736f72026e6c0000010001 +1b1a80000001000000030001026e730d7061676570726f636573736f72026e6c0000010001c00f0002000100015180000d026e7307706167656e6963c01dc00f00020001000151800006036e7332c034c00f0002000100015180000d036e73320663617374656cc01dc05c00010001000151800004c3558245 + +40767 +d41d00000001000000000000036e73320d7061676570726f636573736f72026e6c0000010001 +d41d80000001000000030001036e73320d7061676570726f636573736f72026e6c0000010001c0100002000100015180000d026e7307706167656e6963c01ec01000020001000151800006036e7332c035c0100002000100015180000d036e73320663617374656cc01ec05d00010001000151800004c3558245 + +40768 +0b2600000001000000000000166865747a6f6e6e65687569736265656b62657267656e026e6c0000010001 +0b2680000001000000020000166865747a6f6e6e65687569736265656b62657267656e026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c042 + +40769 +d96800000001000000000000037777771464616e63656d696464656e6e656465726c616e64026e6c0000010001 +d96880000001000000020002037777771464616e63656d696464656e6e656465726c616e64026e6c0000010001c0100002000100015180000e036e733107706c7567676564c025c01000020001000151800006036e7332c03dc03900010001000151800004c3563906c05300010001000151800004c3563907 + +40770 +d40200000001000000000000036e733107706c7567676564026e6c00001c0001 +d40280000001000000020002036e733107706c7567676564026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3563906c03a00010001000151800004c3563907 + +40771 +191800000001000000000000036e733207706c7567676564026e6c00001c0001 +191880000001000000020002036e733207706c7567676564026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c3563906c00c00010001000151800004c3563907 + +40772 +01a900000001000000000000087369746573746174076e656473746174026e6c0000010001 +01a980000001000000020002087369746573746174076e656473746174026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7333c015c03100010001000151800004d4482615c04200010001000151800004d5c4021d + +40773 +8ac900000001000000000000057369676d610a676c6f62616c2d6f6e65026e6c0000010001 +8ac980000001000000030002057369676d610a676c6f62616c2d6f6e65026e6c0000010001c0120002000100015180000d036e733106657175616e74c01dc01200020001000151800012026e7309676c6f62616c2d6970036e657400c01200020001000151800006036e7332c035c03100010001000151800004c2eb4602c06800010001000151800004c2eb4603 + +40774 +cda80000000100000000000009736368756974656d61026e6c0000ff0001 +cda88000000100000002000109736368756974656d61026e6c0000ff0001c00c0002000100015180000d026e7307616d6572636f6dc016c00c00020001000151800006036e7331c02dc02a00010001000151800004c2b2b20a + +40775 +261e0000000100000000000003777777087364636461727473026e6c0000010001 +261e8000000100000002000003777777087364636461727473026e6c0000010001c01000020001000151800016036e73350c7265616479686f7374696e6703636f6d00c01000020001000151800006036e7336c031 + +40776 +d388000000010000000000000c6162786c6f67697374696373026e6c0000ff0001 +d388800000010000000200020c6162786c6f67697374696373026e6c0000ff0001c00c000200010001518000110a6c65757665686176656e03696772c019c00c0002000100015180000d0a64656c6673686176656ec038c02d000100010001518000043e2d5e0dc04a000100010001518000043e2d5e82 + +40777 +75700000000100000000000009666579656e6f6f72640b6d65737361676562617365026e6c0000010001 +75708000000100000002000009666579656e6f6f72640b6d65737361676562617365026e6c0000010001c01600020001000151800010036e733106726f75746974036e657400c01600020001000151800006036e7332c03a + +40778 +c2b400000001000000000000036e733203757063026e6c0000010001 +c2b480000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +40779 +d09b00000001000000000000037777770565626f6e65026e6c0000010001 +d09b80000001000000020000037777770565626f6e65026e6c0000010001c0100002000100015180000c036e733105736974726fc016c01000020001000151800006036e7332c02e + +40780 +c69d00000001000000000000037777770774726170686963026e6c0000010001 +c69d80000001000000020000037777770774726170686963026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c030 + +40781 +182b000000010000000000000236350332333303323434033134380770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +182b800000010000000200020236350332333303323434033134380770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02e00020001000151800006036e7330c02ec02e00020001000151800006036e7331c02ec04a00010001000151800004c2a55e01c05c00010001000151800004c2a55e05 + +40782 +d81501000001000000000000097069637365727665720773747564656e7407757477656e7465026e6c0000010001 +d81581000001000000030003097069637365727665720773747564656e7407757477656e7465026e6c0000010001c01e00020001000151800006036e7331c01ec01e00020001000151800006036e7332c01ec01e00020001000151800006036e7333c01ec03a0001000100015180000482590102c04c0001000100015180000482590103c05e00010001000151800004c0571113 + +40783 +1a4e00000001000000000000087461786932303030026e6c00000f000100 +1a4e80000001000000020002087461786932303030026e6c00000f0001c00c0002000100015180000d036e733106736f6c6c6965c015c00c00020001000151800006036e7332c02dc02900010001000151800004d4ccf609c04200010001000151800004d4ccf60a + +40784 +325000000001000000000000046265617506736f6c6c6965026e6c0000010001 +325080000001000000020002046265617506736f6c6c6965026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02c00010001000151800004d4ccf609c03e00010001000151800004d4ccf60a + +40785 +784b000000010000000000000a45415254482d4c494e4b024e4c00000f0001 +784b800000010000000300010a45415254482d4c494e4b024e4c00000f0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +40786 +f24200000001000000000000037777770a7374617274706f696e74026e6c0000010001 +f24280000001000000020002037777770a7374617274706f696e74026e6c0000010001c0100002000100015180000f04646e7331076e65647a6f6e65c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d9aa0101c04a00010001000151800004d9aa0128 + +40787 +014b00000001000000000000046a6f6c6f026e6c0000ff0001 +014b80000001000000030002046a6f6c6f026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +40788 +8381000000010000000000000377777706706365786974026e6c0000010001 +8381840300010000000100000377777706706365786974026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +40789 +6f0e00000001000000000000064442534552560354454d034e484c024e4c0000010001 +6f0e80000001000000030003064442534552560354454d034e484c024e4c0000010001c0170002000100015180000603646e73c017c0170002000100015180000704646e7332c017c0170002000100015180000e036e733107737572666e6574c01bc02f000100010001518000048dfc0103c041000100010001518000048dfc0104c05400010001000151800004c0576a65 + +40790 +77390000000100000000000003444e53034e484c024e4c0000010001 +77398000000100000003000303444e53034e484c024e4c0000010001c01000020001000151800002c00cc0100002000100015180000704646e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c000100010001518000048dfc0103c036000100010001518000048dfc0104c04900010001000151800004c0576a65 + +40791 +bb8e00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +bb8e80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40792 +21eb0000000100000000000009652d6c756e61746963026e6c0000010001 +21eb8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +40793 +f3ff00000001000000000000066d68696d6565026e6c00000f0001 +f3ff80000001000000020002066d68696d6565026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40794 +f69900000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f69980000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40795 +929e0000000100000000000008706172746e657273066962617a6172026e6c0000010001 +929e8000000100000003000008706172746e657273066962617a6172026e6c0000010001c0150002000100015180001608736a632d646e73310765626179646e7303636f6d00c015000200010001518000110963726f636f64696c650465626179c041c0150002000100015180000b08736a632d646e7332c039 + +40796 +095b00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +095b80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40797 +61c100000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +61c180000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +40798 +c3dc0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +c3dc8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +40799 +77cb0000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +77cb8000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +40800 +f17a0000000100000000000014534d49544853534e4f475241535359414d414841026e6c0000020001 +f17a8403000100000001000014534d49544853534e4f475241535359414d414841026e6c0000020001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +40801 +ae7e00000001000000000000066368656c6c6f026e6c00000f0001 +ae7e80000001000000030003066368656c6c6f026e6c00000f0001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +40802 +621200000001000000000000055f6c646170045f74637003706463065f6d73646373084a4844654c696572044a48444c026e6c0000060001 +621284030001000000010000055f6c646170045f74637003706463065f6d73646373084a4844654c696572044a48444c026e6c0000060001c03000060001000038400036026e730f646f6d61696e2d7265676973747279c0300a686f73746d6173746572c0470bf1e540000070800000384000278d0000003840 + +40803 +679800000001000000000000036e7331046372696f026e6c0000010001 +679880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40804 +0c9d00000001000000000000036e7332046372696f026e6c0000010001 +0c9d80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40805 +446500000001000000000000037777770a72656372656174696566026e6c0000010001 +446580000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40806 +33df00000001000000000000036e7335046372696f026e6c0000010001 +33df80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40807 +a0cf00000001000000000000036e7336046372696f026e6c0000010001 +a0cf80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40808 +8ad3000000010000000000000377777703776562026e6c0000010001 +8ad3800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40809 +61ee00000001000000000000037777770a72656372656174696566026e6c0000010001 +61ee80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40810 +f095000000010000000000000377777703776562026e6c0000010001 +f095800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40811 +138700000001000000000000037777770a72656372656174696566026e6c0000010001 +138780000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40812 +7896000000010000000000000377777703776562026e6c0000010001 +7896800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40813 +605900000001000000000000037777770a72656372656174696566026e6c0000010001 +605980000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40814 +b457000000010000000000000377777703776562026e6c0000010001 +b457800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40815 +7f5000000001000000000000037777770a72656372656174696566026e6c0000010001 +7f5080000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40816 +7e48000000010000000000000377777703776562026e6c0000010001 +7e48800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40817 +294c00000001000000000000037777770a72656372656174696566026e6c0000010001 +294c80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40818 +bce6000000010000000000000377777703776562026e6c0000010001 +bce6800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40819 +258c000000010000000000000377777703776562026e6c0000010001 +258c800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +40820 +731c00000001000000000000037777770a72656372656174696566026e6c0000010001 +731c80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +40821 +9b0200000001000000000000036e7331046372696f026e6c0000010001 +9b0280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40822 +0f2a00000001000000000000036e7332046372696f026e6c0000010001 +0f2a80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40823 +7c6800000001000000000000036e7335046372696f026e6c0000010001 +7c6880000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40824 +bde900000001000000000000036e7336046372696f026e6c0000010001 +bde980000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +40825 +ed5828000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d7364637309706972616d6964656e026e6c0000210001000002580021000000640cc40c736273706972616d6964656e09706972616d6964656e026e6c00 +ed58a8040000000000000000 + +40826 +0000000070024000322000000204057a01010402 +000080010000000000000000 + +40827 +386a000000010000000000002465346463376233382d326635642d346138312d613939372d326135343931393066336365065f6d736463730b6f706c656964696e67656e0673696c766163026e6c0000060001 +386a800000010000000200022465346463376233382d326635642d346138312d613939372d326135343931393066336365065f6d736463730b6f706c656964696e67656e0673696c766163026e6c0000060001c0440002000100015180000c026e7306787334616c6cc04bc04400020001000151800006036e7332c062c05f00010001000151800004c26d0642c07700010001000151800004c26d0963 + +40828 +b81609ca501041b89b010000000000000000 +b81689c40000000000000000 + +40829 +b81609ca501841b82920000000944f25000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa6a403c4bea0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 +b81689c40000000000000000 + +40830 +e026000000010000000000000870726f647677303704636d7367026e6c0000010001 +e026800000010000000200010870726f647677303704636d7367026e6c0000010001c01500020001000151800006036e7331c015c0150002000100015180000d036e7332036b706e036e657400c02e00010001000151800004c2976c83 + +40831 +f25500000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +f25580000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +40832 +62990000000100000000000003706f70056176697369026e6c00001c0001 +62998000000100000003000203706f70056176697369026e6c00001c0001c0100002000100015180000d036e733106776964657873c016c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +40833 +b81609d8501141aa9a6a0000000000000000 +b81689d40000000000000000 + +40834 +0000000070024000436000000204057a01010402 +000080010000000000000000 + +40835 +b81609d9501041aa9a690000000000000000 +b81689d40000000000000000 + +40836 +b81695d2501041b820390000000000000000 + + +40837 +b81695d2501841b87aad0000009483d0000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa6a403c4bea0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 + + +40838 +b81695e0501141aa1fa20000000000000000 + + +40839 +00000000700240000b3700000204057a01010402 +000080010000000000000000 + +40840 +602d00000001000000000000037777770d62732d7374616e746f6e697573026e6c0000010001 +602d80000001000000020002037777770d62732d7374616e746f6e697573026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c01ec01000020001000151800006036e7332c036c03200010001000151800004d4b20403c04b00010001000151800004d5881e45 + +40841 +b81695e1501041aa1fa10000000000000000 + + +40842 +b68f00000001000000000000095354494e4b42454154026e6c0000020001 +b68f84030001000000010000095354494e4b42454154026e6c0000020001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +40843 +b8171898501041b865490000000000000000 +b81798940000000000000000 + +40844 +0be90000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +0be98000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40845 +b8171898501841b8206e000000942320000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa6a403c4bea0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 +b81798940000000000000000 + +40846 +c53a00000001000000000000036e733109666972737466696e64026e6c0000010001 +c53a80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40847 +39e7000000010000000000000a766574687265616c7479026e6c00000f0001 +39e7800000010000000200020a766574687265616c7479026e6c00000f0001c00c0002000100015180000e07646e732d70726903626f78c017c00c0002000100015180000a07646e732d736563c033c02b00010001000151800004d97700fac04500010001000151800004d97704fa + +40848 +eda500000001000000000000036e733209666972737466696e64026e6c0000010001 +eda580000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40849 +721e0000000100000000000007646e732d73656303626f78026e6c0000010001 +721e8000000100000002000207646e732d73656303626f78026e6c0000010001c0140002000100015180000a07646e732d707269c014c01400020001000151800002c00cc02c00010001000151800004d97700fac00c00010001000151800004d97704fa + +40850 +2fd70000000100000000000007646e732d70726903626f78026e6c0000010001 +2fd78000000100000002000207646e732d70726903626f78026e6c0000010001c01400020001000151800002c00cc0140002000100015180000a07646e732d736563c014c00c00010001000151800004d97700fac03a00010001000151800004d97704fa + +40851 +b81718a6501141aa64b20000000000000000 +b81798a40000000000000000 + +40852 +c94e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +c94e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40853 +6d0d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +6d0d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40854 +b81718a7501041aa64b10000000000000000 +b81798a40000000000000000 + +40855 +0bf028000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d73646373084a4844654c696572044a48444c026e6c00002100010000025800230000006401850a6a6864656c6965723031084a4844654c696572044a48444c026e6c00 +0bf0a8040000000000000000 + +40856 +932600000001000000000000036e733109666972737466696e64026e6c0000010001 +932680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40857 +000000007002faf052f200000204057a01010402 +000080010000000000000000 + +40858 +f1e700000001000000000000036e733209666972737466696e64026e6c0000010001 +f1e780000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +40859 +774e00000001000000000000026e730763697374726f6e026e6c0000010001 +774e80000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +40860 +b817bc735010fbec09e50000000000000000 + + +40861 +cf40000000010000000000000a646f6773657276696365026e6c0000ff0001 +cf40800000010000000200020a646f6773657276696365026e6c0000ff0001c00c0002000100015180000e036e73310774696b6b6c696bc017c00c00020001000151800006036e7332c02fc02b00010001000151800004d5c40902c045000100010001518000043eddd512 + +40862 +b817bc735018fbecebda00000091c518000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403af82a403c49aa0003000000324e544c4d535350000100000097b208e0080008002a0000000a000a00200000004a4844454c49455230314a4844454c4945520000 + + +40863 +b817bc815011fbde09510000000000000000 + + +40864 +a85a0000000100000000000003777777077269636172646f026e6c0000010001 +a85a8000000100000003000303777777077269636172646f026e6c0000010001c0100002000100015180000a036e733103676d74c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004d44eb80dc042000100010001518000043ea6a022c05400010001000151800004d554c485 + +40865 +000000007002faf0d21400000204057a01010402 +000080010000000000000000 + +40866 +d88a0000000100000000000003686868026e6c00000f0001 +d88a8000000100000003000103686868026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +40867 +b817bc825010fbde09500000000000000000 + + +40868 +12be00000001000000000000037777770d7468652d636f6c6c6563746f72026e6c0000010001 +12be80000001000000030002037777770d7468652d636f6c6c6563746f72026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +40869 +b818a4a45010fbeca0d50000000000000000 + + +40870 +e01800000001000000000000066d61696c6d65026e6c0000010001 +e01880000001000000030002066d61696c6d65026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +40871 +b818a4a45018fbec05b5000000914330000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403af82a403c49aa0003000000324e544c4d535350000100000097b208e0080008002a0000000a000a00200000004a4844454c49455230314a4844454c4945520000 + + +40872 +b80e0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +b80e8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +40873 +b818a4b25011fbdea0410000000000000000 + + +40874 +000000007002faf01cad00000204057a01010402 +000080010000000000000000 + +40875 +b818a4b35010fbdea0400000000000000000 + + +40876 +d9c600000001000000000000036674700964657265646572696a026e6c0000010001 +d9c680000001000000030003036674700964657265646572696a026e6c0000010001c01000020001000151800010036e733109736974656279746573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004c2a55e5ac04a00010001000151800004c356781cc05c000100010001518000043ec58016 + +40877 +b8198d495010fbec02c80000000000000000 + + +40878 +b8198d495018fbeccd2600000091ddb0000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403af82a403c49aa0003000000324e544c4d535350000100000097b208e0080008002a0000000a000a00200000004a4844454c49455230314a4844454c4945520000 + + +40879 +096500000001000000000000056d61696c3405706c616e74026e6c0000010001 +096580000001000000020002056d61696c3405706c616e74026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c02c00010001000151800004d59f0037c03d00010001000151800004d59f0046 + +40880 +6d0400000001000000000000037777770c7569747a656e6275726f2773026e6c0000010001 +6d0484030001000000010000037777770c7569747a656e6275726f2773026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40881 +05fc000000010000000000000377777712746574726f6465656e67696e656572696e67026e6c0000010001 +05fc800000010000000200000377777712746574726f6465656e67696e656572696e67026e6c0000010001c01000020001000151800017026e7309726f7474657264616d046c756e61036e657400c0100002000100015180000f026e7309686f6f6664646f7270c044 + +40882 +b8198d575011fbde02340000000000000000 + + +40883 +e8c3000000010000000000000f726176656e2d616476656e74757265026e6c0000010001 +e8c3800000010000000200000f726176656e2d616476656e74757265026e6c0000010001c00c0002000100015180000c036e723505692d702d64c01cc00c00020001000151800006036e7236c034 + +40884 +b8198d585010fbde02330000000000000000 + + +40885 +9535000000010000000000000377777709696e74657263617374026e6c0000010001 +9535800000010000000200000377777709696e74657263617374026e6c0000010001c0100002000100015180000c026e7306766576696461c01ac01000020001000151800006036e7332c031 + +40886 +89c100000001000000000000036e73320c696e746572636f6e6e656374026e6c0000010001 +89c180000001000000030003036e73320c696e746572636f6e6e656374026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03100010001000151800004d453c005c00c00010001000151800004d453c006c05000010001000151800004d453c805 + +40887 +852900000001000000000000026e730c696e746572636f6e6e656374026e6c0000010001 +852980000001000000030003026e730c696e746572636f6e6e656374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +40888 +cacd00000001000000000000026e73076e6f632d6e7366026e6c0000010001 +cacd80000001000000020001026e73076e6f632d6e7366026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000f067365727669780574756e6978c017c00c00010001000151800004c372eb02 + +40889 +f2d900000001000000000000036a7263026e6c00000f0001 +f2d980000001000000020002036a7263026e6c00000f0001c00c0002000100015180000a0769616d2d707562c00cc00c000200010001518000070473697375c00cc024000100010001518000048bbfcf14c03a000100010001518000048bbfcf19 + +40890 +873a0010000100000000000106617363696e74026e6c00000f00010000290800000000000000 +873a8000000100000002000306617363696e74026e6c00000f0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c0000291000000000000000 + +40891 +4e9400000001000000000000097069637365727665720773747564656e7407757477656e7465026e6c0000010001 +4e9480000001000000030003097069637365727665720773747564656e7407757477656e7465026e6c0000010001c01e00020001000151800006036e7331c01ec01e00020001000151800006036e7332c01ec01e00020001000151800006036e7333c01ec03a0001000100015180000482590102c04c0001000100015180000482590103c05e00010001000151800004c0571113 + +40892 +85de000000010000000000000b6d616e2d61742d776f726b026e6c00000f0001 +85de800000010000000200010b6d616e2d61742d776f726b026e6c00000f0001c00c0002000100015180000c026e7306636f62776562c018c00c00020001000151800006036e7333c02fc02c0001000100015180000450f26001 + +40893 +418900000001000000000000037777770b6c696f6e732d736e65656b026e6c0000010001 +418980000001000000020000037777770b6c696f6e732d736e65656b026e6c0000010001c0100002000100015180000d036e733106766976656e73c01cc01000020001000151800006036e7332c034 + +40894 +819800000001000000000000036e733106766976656e73026e6c0000010001 +819880000001000000020002036e733106766976656e73026e6c0000010001c0100002000100015180000e036e7331076a646e686f7374c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e451c045000100010001518000045054e452 + +40895 +848c00000001000000000000036e733206766976656e73026e6c0000010001 +848c80000001000000020002036e733206766976656e73026e6c0000010001c0100002000100015180000e036e7331076a646e686f7374c017c01000020001000151800006036e7332c02fc02b000100010001518000045054e451c045000100010001518000045054e452 + +40896 +8cfd00000001000000000000037777770b6c616e6b6174726176656c026e6c0000010001 +8cfd80000001000000020002037777770b6c616e6b6174726176656c026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +40897 +149d000000010000000000000a7a6f6d686f6c6c616e6406787334616c6c026e6c0000010001 +149d800000010000000300020a7a6f6d686f6c6c616e6406787334616c6c026e6c0000010001c01700020001000151800005026e73c017c01700020001000151800006036e7332c017c0170002000100015180000d026e730472697065036e657400c03200010001000151800004c26d0642c04300010001000151800004c26d0963 + +40898 +11a20000000100000000000003777777116b696e6465727374617274706167696e61026e6c0000010001 +11a28000000100000002000003777777116b696e6465727374617274706167696e61026e6c0000010001c0100002000100015180000c026e7306766576696461c022c01000020001000151800006036e7332c039 + +40899 +4204000000010000000000000567656e7473026e6c00000f0001 +4204800000010000000300010567656e7473026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +40900 +472400000001000000000000037777770e6c696665616e64636f6f6b696e67026e6c0000010001 +472480000001000000020000037777770e6c696665616e64636f6f6b696e67026e6c0000010001c0100002000100015180000d036e733103326d6203636f6d00c01000020001000151800006036e7332c037 + +40901 +38d000000001000000000000037777770c6e6577696e74657266617365026e6c0000010001 +38d084030001000000010000037777770c6e6577696e74657266617365026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40902 +5d10000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +5d10800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +40903 +207600000001000000000000046d61696c16616c766c6565736b6c696572766572656e6967696e67026e6c0000010001 +207680000001000000020000046d61696c16616c766c6565736b6c696572766572656e6967696e67026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c042 + +40904 +481700000001000000000000046d61696c16616c766c6565736b6c696572766572656e6967696e67026e6c0000010001 +481780000001000000020000046d61696c16616c766c6565736b6c696572766572656e6967696e67026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c042 + +40905 +731100000001000000000000086d61696c686f737405696e6e6574026e6c0000010001 +731180000001000000020000086d61696c686f737405696e6e6574026e6c0000010001c0150002000100015180000d026e7304696e6265036e657400c01500020001000151800006036e6963c032 + +40906 +a39400000001000000000000067365727669780574756e6978026e6c0000010001 +a39480000001000000030002067365727669780574756e6978026e6c0000010001c0130002000100015180000906626173746978c013c0130002000100015180000e036e733103736369036b756ec019c0130002000100015180000b026e73026e6c036e657400c02d00010001000151800004c14fc927c0420001000100015180000483aee004 + +40907 +34e900000001000000000000026763065f6d736463730970726b766477696c64026e6c0000060001 +34e984030001000000010000026763065f6d736463730970726b766477696c64026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +40908 +a63a0000000100000000000006617363696e74026e6c00000f0001 +a63a8000000100000002000206617363696e74026e6c00000f0001c00c0002000100015180000b036e73310461786974c013c00c00020001000151800006036e7332c02bc027000100010001518000043e3a440bc03e000100010001518000043e3a440c + +40909 +1d6328000001000000010000024e4c0000060001055f6c646170045f746370026763065f6d7364637306574e54504d4d024e4c0000210001000002580018000000640cc406776e74706d6d06574e54504d4d024e4c00 +1d63a8040000000000000000 + +40910 +ae7828000001000000010000026e6c0000060001026763065f6d736463730970726b766477696c64026e6c0000010001000002580004c0a80101 +ae78a8040000000000000000 + +40911 +a4f200000001000000000000037777770c6e6577696e74657266617365026e6c0000010001 +a4f284030001000000010000037777770c6e6577696e74657266617365026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +40912 +000000007002faf0686900000204055001010402 +000080010000000000000000 + +40913 +76a10000000100000000000004706f70330f6472756b6b6572696a6d757365756d026e6c0000010001 +76a18000000100000003000104706f70330f6472756b6b6572696a6d757365756d026e6c0000010001c0110002000100015180000e026e7308767575727765726bc021c01100020001000151800012036e733208767575727765726b036e657400c01100020001000151800006036e7333c053c035000100010001518000043efa0202 + +40914 +dff900100001000000000001056132303030026e6c00000f00010000290800000000000000 +dff980000001000000030003056132303030026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e733109756e69736f75726365c012c00c00020001000151800006036e7332c00cc026000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +40915 +b81b91965010ff0046f70000000000000000 + + +40916 +b81b91965018ff00d263000000923613000000010001000000000f313531313832383438383231302d330000f900010f313531313832383438383231302d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403b001a403c519a0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +40917 +00000000700240008b6f0000020405b401010402 +000080010000000000000000 + +40918 +b81b91a45011fef246620000000000000000 + + +40919 +000000007002faf0c61600000204055001010402 +000080010000000000000000 + +40920 +b81b91a55010fef246610000000000000000 + + +40921 +b81cbbfa5010ff007a3f0000000000000000 + + +40922 +c67200000001000000000000037777770f70726f6a6563742d646f6c7068696e026e6c0000010001 +c67280000001000000020002037777770f70726f6a6563742d646f6c7068696e026e6c0000010001c01000020001000151800010036e733109686f7374696e677873c020c01000020001000151800006036e7332c038c034000100010001518000043ed45245c050000100010001518000045054e9de + +40923 +b644000000010000000000000377777709736f6c6c657973656c026e6c0000010001 +b644800000010000000300030377777709736f6c6c657973656c026e6c0000010001c01000020001000151800011036e73310a74727565736572766572c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ef8003c04b00010001000151800004d5efb004c05d00010001000151800004d5ef8005 + +40924 +24a5000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +24a5800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +40925 +b81c194650104470e2500000000000000000 +b81c99440000000000000000 + +40926 +b81cbbfa5018ff003f8e00000092fd31000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b001a403c519a0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +40927 +437200000001000000000000037777770a6465626c6f656d697374026e6c0000010001 +437280000001000000020002037777770a6465626c6f656d697374026e6c0000010001c0100002000100015180000f036e733108636f6d707574656cc01bc01000020001000151800006036e7332c033c02f00010001000151800004c3568680c04a00010001000151800004c3568681 + +40928 +b81cbc085011fef279aa0000000000000000 + + +40929 +6c1400000001000000000000037777770a6865696e656e686f6573026e6c0000010001 +6c1480000001000000020000037777770a6865696e656e686f6573026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +40930 +000000007002faf0092500000204055001010402 +000080010000000000000000 + +40931 +1c760000000100000000000008747269746f6e31310761626e616d726f026e6c0000010001 +1c768000000100000002000208747269746f6e31310761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c0150002000100015180000b0870686f626f733032c015c03100010001000151800004a7cac30bc04800010001000151800004a7cac30c + +40932 +897f0000000100000000000003777777056d656e7535026e6c0000010001 +897f8403000100000001000003777777056d656e7535026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +40933 +636600000001000000000000076d656d62657273066368656c6c6f026e6c0000010001 +636680000001000000030003076d656d62657273066368656c6c6f026e6c0000010001c01400020001000151800007046e733031c014c01400020001000151800007046e733032c014c0140002000100015180000a036e733103757063c01bc02f00010001000151800004d4534482c04200010001000151800004d4534483c05500010001000151800004d48e1c42 + +40934 +b81c1946501844707e040000008cd8b0000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd1e403c4e9e00030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 +b81c99440000000000000000 + +40935 +b81da63a5010ff00d30c0000000000000000 + + +40936 +b81da63a5018ff00d13d00000092c44f000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b001a403c519a0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +40937 +b81da6485011fef2d2770000000000000000 + + +40938 +b81c195450114462e1c10000000000000000 +b81c99540000000000000000 + +40939 +b81da6495010fef2d2760000000000000000 + + +40940 +045c00100001000000000001024e530743495354524f4e024e4c00000100010000290800000080000000 +045c80000001000000020003024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f380000291000000000000000 + +40941 +37c90000000100000000000007766462636f6d70026e6c00001c0001 +37c98000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +40942 +0000000070024000572f0000020405b401010402 +000080010000000000000000 + +40943 +b81c195550104462e1c00000000000000000 +b81c99540000000000000000 + +40944 +b81e3ea55010447088af0000000000000000 +b81ebea40000000000000000 + +40945 +e222000000010000000000000377777715616d7374657264616d736562696e6e656e73746164026e6c0000010001 +e222800000010000000200020377777715616d7374657264616d736562696e6e656e73746164026e6c0000010001c0100002000100015180000c026e7306787334616c6cc026c01000020001000151800006036e7332c03dc03a00010001000151800004c26d0642c05200010001000151800004c26d0963 + +40946 +b81e3ea550184470b8510000008c45c3000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd1e403c4e9e00030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 +b81ebea40000000000000000 + +40947 +72340000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +72348000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40948 +bf9a0000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +bf9a8000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40949 +3f870000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +3f878000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40950 +7c1e0000000100000000000007736179626f6c74026e6c0000010001 +7c1e8000000100000002000007736179626f6c74026e6c0000010001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +40951 +b81e3eb35011446288200000000000000000 +b81ebeb40000000000000000 + +40952 +000328000001000200000000026e6c0000060001066c6170746f700977696a6e7472616e73026e6c00000500fe000000000000c014000100010000000000040a0719f2 +0003a8040000000000000000 + +40953 +230d0000000100000000000003777777036b7a61026e6c0000010001 +230d8000000100000002000003777777036b7a61026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +40954 +f89c00000001000000000000024e530743495354524f4e024e4c0000010001 +f89c80000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +40955 +000000007002400007d90000020405b401010402 +000080010000000000000000 + +40956 +4fab00000001000000000000136175736d612d766f726b686566747275636b73026e6c0000010001 +4fab80000001000000020002136175736d612d766f726b686566747275636b73026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c020c00c00020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +40957 +b807000000010000000000000b77696d6272756767696e6b026e6c00000f0001 +b807800000010000000300010b77696d6272756767696e6b026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +40958 +38a400000001000000000000046d61696c0b67656c7265766973696f6e026e6c0000010001 +38a480000001000000020000046d61696c0b67656c7265766973696f6e026e6c0000010001c0110002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0110002000100015180000d077669312d6e7330026174c03c + +40959 +628b0000000100000000000006787334616c6c026e6c00000f0001 +628b8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +40960 +b81e3eb450104462881f0000000000000000 +b81ebeb40000000000000000 + +40961 +485700000001000000000000037777770b64656d616b656c61617273026e6c0000010001 +485780000001000000020000037777770b64656d616b656c61617273026e6c0000010001c0100002000100015180000e026e7305702d69637403636f6d00c01000020001000151800012026e7309646970737769746368036f726700 + +40962 +b81eec12501044708beb0000000000000000 + + +40963 +5c15000000010000000000000974696e6b6f6570656c026e6c00000f0001 +5c15800000010000000200020974696e6b6f6570656c026e6c00000f0001c00c00020001000151800013036e73310c62656472696a76656e776562c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d90867fec04900010001000151800004c1ad2bfe + +40964 +da3e00000001000000000000037777770d6f7269656e747569747a656e64026e6c0000010001 +da3e80000001000000020002037777770d6f7269656e747569747a656e64026e6c0000010001c0100002000100015180000b036e733104666b6b63c01ec01000020001000151800006036e7332c036c03200010001000151800004d5c40325c04900010001000151800004d5c42f66 + +40965 +b81eec125018447092a40000008c6eac000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd1e403c4e9e00030000002d4e544c4d535350000100000097b208e007000700260000000600060020000000574e54504d4d574e545f504d4d0000 + + +40966 +73c300000001000000000000037777770a62726f6572656e7a7573026e6c0000010001 +73c380000001000000030001037777770a62726f6572656e7a7573026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +40967 +824f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +824f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +40968 +cf080000000100000000000014626c6f656d656e687569732d61647269656e6e65026e6c00000f0001 +cf088000000100000003000214626c6f656d656e687569732d61647269656e6e65026e6c00000f0001c00c0002000100015180000d036e733106776964657873c021c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c039c03500010001000151800004d4ccc0fcc06a000100010001518000043efa0703 + +40969 +b81eec20501144628b5c0000000000000000 + + +40970 +7fa60000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7fa68000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +40971 +634300000001000000000000066d61696c30320877656278706f7365026e6c0000010001 +634380000001000000030003066d61696c30320877656278706f7365026e6c0000010001c01300020001000151800011036e73310a74727565736572766572c01cc01300020001000151800006036e7332c034c01300020001000151800006036e7333c034c03000010001000151800004d5ef8003c04d00010001000151800004d5efb004c05f00010001000151800004d5ef8005 + +40972 +c36c00000001000000000000066d61696c30320877656278706f7365026e6c00001c0001 +c36c80000001000000030003066d61696c30320877656278706f7365026e6c00001c0001c01300020001000151800011036e73310a74727565736572766572c01cc01300020001000151800006036e7332c034c01300020001000151800006036e7333c034c03000010001000151800004d5ef8003c04d00010001000151800004d5efb004c05f00010001000151800004d5ef8005 + +40973 +04cc00000001000000000000066d61696c30320877656278706f7365026e6c0000260001 +04cc80000001000000030003066d61696c30320877656278706f7365026e6c0000260001c01300020001000151800011036e73310a74727565736572766572c01cc01300020001000151800006036e7332c034c01300020001000151800006036e7333c034c03000010001000151800004d5ef8003c04d00010001000151800004d5efb004c05f00010001000151800004d5ef8005 + +40974 +1fe00000000100000000000005767363616e0477787073026e6c0000010001 +1fe08000000100000003000305767363616e0477787073026e6c0000010001c01200020001000151800011036e73310a74727565736572766572c017c01200020001000151800006036e7332c02fc01200020001000151800006036e7333c02fc02b00010001000151800004d5ef8003c04800010001000151800004d5efb004c05a00010001000151800004d5ef8005 + +40975 +d3180000000100000000000005767363616e0477787073026e6c00001c0001 +d3188000000100000003000305767363616e0477787073026e6c00001c0001c01200020001000151800011036e73310a74727565736572766572c017c01200020001000151800006036e7332c02fc01200020001000151800006036e7333c02fc02b00010001000151800004d5ef8003c04800010001000151800004d5efb004c05a00010001000151800004d5ef8005 + +40976 +33260000000100000000000005767363616e0477787073026e6c0000260001 +33268000000100000003000305767363616e0477787073026e6c0000260001c01200020001000151800011036e73310a74727565736572766572c017c01200020001000151800006036e7332c02fc01200020001000151800006036e7333c02fc02b00010001000151800004d5ef8003c04800010001000151800004d5efb004c05a00010001000151800004d5ef8005 + +40977 +16500000000100000000000003777777137072697661746562726f616463617374696e67026e6c0000010001 +16508000000100000003000303777777137072697661746562726f616463617374696e67026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c024c01000020001000151800006036e7332c03cc01000020001000151800006036e7333c03cc03800010001000151800004d5c98015c05300010001000151800004d5c9bf12c06500010001000151800004d5ef9c26 + +40978 +b81eec21501044628b5b0000000000000000 + + +40979 +d82101000001000000000000097069637365727665720773747564656e7407757477656e7465026e6c0000010001 +d82181000001000000030003097069637365727665720773747564656e7407757477656e7465026e6c0000010001c01e00020001000151800006036e7331c01ec01e00020001000151800006036e7332c01ec01e00020001000151800006036e7333c01ec03a0001000100015180000482590102c04c0001000100015180000482590103c05e00010001000151800004c0571113 + +40980 +590500000001000000000000037777770a7374617274706f696e74026e6c0000010001 +590580000001000000020002037777770a7374617274706f696e74026e6c0000010001c0100002000100015180000f04646e7331076e65647a6f6e65c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d9aa0101c04a00010001000151800004d9aa0128 + +40981 +3d8800000001000000000000035f6763045f74637009636f726e776f726c64026e6c0000060001 +3d8884030001000000010000035f6763045f74637009636f726e776f726c64026e6c0000060001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +40982 +7fda0000000100000000000005656d616765026e6c00000f0001 +7fda8000000100000003000205656d616765026e6c00000f0001c00c0002000100015180000d036e733106776964657873c012c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ac02600010001000151800004d4ccc0fcc05b000100010001518000043efa0703 + +40983 +36e00000000100000000000002383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +36e08000000100000002000202383302363403313438033230360770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +40984 +96ef000000010000000000000377777709626f6572696e6e656e026e6c0000010001 +96ef800000010000000200000377777709626f6572696e6e656e026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +40985 +390800000001000000000000036e73330a74727565736572766572024e4c0000010001 +390880000001000000030003036e73330a74727565736572766572024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d5ef8003c04100010001000151800004d5efb004c00c00010001000151800004d5ef8005 + +40986 +eb4f0000000100000000000008706172746e657273066962617a6172026e6c0000010001 +eb4f8000000100000003000008706172746e657273066962617a6172026e6c0000010001c0150002000100015180001608736a632d646e73310765626179646e7303636f6d00c015000200010001518000110963726f636f64696c650465626179c041c0150002000100015180000b08736a632d646e7332c039 + +40987 +442f000000010000000000000b776f726c646f6e6c696e65026e6c00000f0001 +442f800000010000000300020b776f726c646f6e6c696e65026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +40988 +f1600000000100000000000003646473026e6c00000f0001 +f1608000000100000003000303646473026e6c00000f0001c00c00020001000151800017036e733110736361726c65742d696e7465726e6574c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004d5ccc302c04700010001000151800004d5ccc303c05900010001000151800004c277e953 + +40989 +9ae000000001000000000000036e7331066d696e646566026e6c0000010001 +9ae080000001000000020002036e7331066d696e646566026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9a9e7c6c03900010001000151800004d9a9e7c5 + +40990 +3f1900000001000000000000036e7332066d696e646566026e6c0000010001 +3f1980000001000000020002036e7332066d696e646566026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d9a9e7c6c00c00010001000151800004d9a9e7c5 + +40991 +3fe4000000010000000000000666726961636f026e6c00000f0001 +3fe4800000010000000200000666726961636f026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +40992 +55cd000000010000000000000f76696e63656e742d76642d626f726e026e6c00000f0001 +55cd800000010000000200010f76696e63656e742d76642d626f726e026e6c00000f0001c00c0002000100015180000a036e733303777873c01cc00c00020001000151800006036e7334c034c04600010001000151800004d5ef9a65 + +40993 +413028000001000000010000026e6c0000060001035f6763045f74637009636f726e776f726c64026e6c000021000100000258001b000000640cc406746f746f726f09636f726e776f726c64026e6c00 +4130a8040000000000000000 + +40994 +113a00000001000000000000086e732d69736d30310963617067656d696e69026e6c0000010001 +113a80000001000000030003086e732d69736d30310963617067656d696e69026e6c0000010001c01500020001000151800007046e736531c015c01500020001000151800007046e736532c015c01500020001000151800002c00cc03300010001000151800004c6b8e70dc04600010001000151800004c6b8e70cc00c00010001000151800004d5f4a024 + +40995 +6573000000010000000000000c6c7562626572736571756970026e6c00000f0001 +6573840300010000000100000c6c7562626572736571756970026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +40996 +1e93000000010000000000000c636f6e63657074732d69637408636f6e6365707473026e6c0000010001 +1e93800000010000000200020c636f6e63657074732d69637408636f6e6365707473026e6c0000010001c0190002000100015180001103646e730a636f6e63657074736661c022c0190002000100015180000704646e7332c019c03600010001000151800004d5c51c03c05300010001000151800004d5c51e1c + +40997 +825c00000001000000000000037777770c666f746f6461746162617365026e6c0000010001 +825c80000001000000020002037777770c666f746f6461746162617365026e6c0000010001c01000020001000151800012036e73310b706c7573686f7374696e67c01dc01000020001000151800006036e7332c035c03100010001000151800004d994ae77c04f000100010001518000045054ea06 + +40998 +6b1100000001000000000000037777770962617369712d636172026e6c0000010001 +6b1180000001000000020000037777770962617369712d636172026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +40999 +8c68000000010000000000000a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001 +8c68800000010000000200020a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001c01700020001000151800006036e7331c017c0170002000100015180000e036e733107737572666e6574c021c03500010001000151800004c2ab230bc04700010001000151800004c0576a65 + +41000 +87d000000001000000000000037777770864656d616e746173026e6c0000010001 +87d080000001000000020000037777770864656d616e746173026e6c0000010001c01000020001000151800011036e73310a747265666e6574646e73c019c01000020001000151800006036e7332c031 + +41001 +000000007002400010370000020405b401010402 +000080010000000000000000 + +41002 +ee910000000100000000000009636865636b73746174026e6c0000010001 +ee918000000100000002000109636865636b73746174026e6c0000010001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c02a00010001000151800004d4ccc0fc + +41003 +a80d00000001000000000000037777770b6d656c6f64796d616b6572026e6c0000010001 +a80d80000001000000030002037777770b6d656c6f64796d616b6572026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +41004 +7b84000000010000000000000c564f4f444f4f2d534f554e44026e6c0000020001 +7b84840300010000000100000c564f4f444f4f2d534f554e44026e6c0000020001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +41005 +b820ebd95010447094800000000000000000 + + +41006 +9aa100100001000000000001056d61696c3109636c65616e706f7274026e6c00000100010000290800000000000000 +9aa180000001000000020003056d61696c3109636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e10000291000000000000000 + +41007 +b820ebd950184470da910000008ef600000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd1f403c4e9f00030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +41008 +a8c000000001000000000000087a7a6f6e6e6e6574026e6c00000f0001 +a8c084030001000000010000087a7a6f6e6e6e6574026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +41009 +f7a20000000100000000000004686f6d6508636f6e6365707473026e6c0000010001 +f7a28000000100000002000204686f6d6508636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac0110002000100015180000704646e7332c011c02e00010001000151800004d5c51c03c04b00010001000151800004d5c51e1c + +41010 +4be2000000010000000000000850454e5449554d3411787334616c6c2d62617369632d6164736c026e6c0000010001 +4be2840300010000000100000850454e5449554d3411787334616c6c2d62617369632d6164736c026e6c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +41011 +e5a600000001000000000000056d61696c3109636c65616e706f7274026e6c0000010001 +e5a680000001000000020002056d61696c3109636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +41012 +b820ebe75011446293ef0000000000000000 + + +41013 +b820ebe85010446293ee0000000000000000 + + +41014 +ab750000000100000000000007736c616e67656e08706172656c6e6574026e6c0000010001 +ab758000000100000002000107736c616e67656e08706172656c6e6574026e6c0000010001c01400020001000151800005026e73c014c0140002000100015180000f067365727669780574756e6978c01dc03100010001000151800004c2970e12 + +41015 +65df000000010000000000000377777706617265613137026e6c0000010001 +65df800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +41016 +0000000070024000cbcf0000020405b401010402 +000080010000000000000000 + +41017 +ca7e000000010000000000000770757976617374026e6c00001c0001 +ca7e800000010000000200020770757976617374026e6c00001c0001c00c0002000100015180000e036e733107626265796f6e64c014c00c00020001000151800006036e7332c02cc028000100010001518000043eb1900bc042000100010001518000043eb19002 + +41018 +52080000000100000000000012677261616673636861702d7a75747068656e026e6c0000ff0001 +52088000000100000002000112677261616673636861702d7a75747068656e026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01fc04c00010001000151800004c2860043 + +41019 +b821db135010447060de0000000000000000 + + +41020 +0d20000000010000000000000377777706692d62696b65026e6c0000010001 +0d20840300010000000100000377777706692d62696b65026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +41021 +79000000000100000000000005696d616465026e6c0000010001 +79008000000100000002000205696d616465026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +41022 +b821db13501844703ff10000008e5e00000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd1f403c4e9f00030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +41023 +22000000000100000000000009652d6c756e61746963026e6c0000010001 +22008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41024 +076000000001000000000000037777770a6d616472656d61726961026e6c0000010001 +076080000001000000020002037777770a6d616472656d61726961026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +41025 +3cda00100001000000000001036e733206787334616c6c026e6c00000100010000290800000080000000 +3cda80000001000000030003036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d09630000291000000000000000 + +41026 +b821db2150114462604d0000000000000000 + + +41027 +5411000000010000000000000a746563686e6963616c6c026e6c00000f0001 +5411800000010000000200020a746563686e6963616c6c026e6c00000f0001c00c00020001000151800010036e733109776570726f76696465c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d5ef9db5c04700010001000151800004d5ef9dbe + +41028 +b821db2250104462604c0000000000000000 + + +41029 +000000007002400024f30000020405b401010402 +000080010000000000000000 + +41030 +b8229fc850104470f54b0000000000000000 + + +41031 +b8229fc850184470795e0000008eb900000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd1f403c4e9f00030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +41032 +95ec00000001000000000000096863632d67726f6570026e6c0000010001 +95ec80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +41033 +b8229fd650114462f4ba0000000000000000 + + +41034 +f110000000010000000000000c7664622d736f667477617265026e6c00000f0001 +f110800000010000000300010c7664622d736f667477617265026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc019c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +41035 +825f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +825f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41036 +82600000000100000000000005646e732d32056c61646f74026e6c0000010001 +82608000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41037 +b8229fd750104462f4b90000000000000000 + + +41038 +a20a00000001000000000000037777770a73746f75746564766473026e6c0000010001 +a20a80000001000000020002037777770a73746f75746564766473026e6c0000010001c01000020001000151800010026e730a796f757263686f696365c01bc01000020001000151800006036e7333c032c02f00010001000151800004c26d12d8c04b00010001000151800004c26d8122 + +41039 +4c910000000100000000000006616e67656c61066e666f726365026e6c0000010001 +4c918000000100000002000206616e67656c61066e666f726365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c02e000100010001518000043ed45433c040000100010001518000043ed45434 + +41040 +2a7d00000001000000000000055f6c646170045f74637008434f42424c455231024e4c0000060001 +2a7d84030001000000010000055f6c646170045f74637008434f42424c455231024e4c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +41041 +de70000000010000000000000664656c706869026e6c00000f0001 +de70800000010000000300020664656c706869026e6c00000f0001c00c00020001000151800015026e730f6761726e69657270726f6a65637473c013c00c00020001000151800006036e7331c02ac00c00020001000151800006036e7332c02ac027000100010001518000045117e122c048000100010001518000045117e142 + +41042 +5c1700000001000000000000046a7a6772026e6c00000f0001 +5c1780000001000000030001046a7a6772026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c011c00c00020001000151800010026e7307696e746f756368036e657400c00c00020001000151800007046e733031c041c02500010001000151800004d413c001 + +41043 +145d00000001000000000000037777770c776572656c64687569736a65026e6c0000010001 +145d80000001000000020002037777770c776572656c64687569736a65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +41044 +a22d000000010000000000000666726f757773026e6c0000010001 +a22d800000010000000200020666726f757773026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41045 +948f000000010000000000000966696574732d66756e026e6c00000f0001 +948f800000010000000200020966696574732d66756e026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c016c00c00020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +41046 +82650000000100000000000005646e732d31056c61646f74026e6c0000010001 +82658000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41047 +82660000000100000000000005646e732d32056c61646f74026e6c0000010001 +82668000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41048 +cea0000000010000000000000a617274656d6973776562026e6c0000010001 +cea0800000010000000200020a617274656d6973776562026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +41049 +b6a10000000100000000000003777777086f62736573736564026e6c0000010001 +b6a18000000100000002000003777777086f62736573736564026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +41050 +9f8a00000001000000000000076d6f6a6970736902777a02637a08656d6561636f7265026e6c0000010001 +9f8a84030001000000010000076d6f6a6970736902777a02637a08656d6561636f7265026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +41051 +ce31000000010000000000000b66696c6d736f6e6c696e65026e6c00000f0001 +ce31800000010000000200020b66696c6d736f6e6c696e65026e6c00000f0001c00c0002000100015180000f036e73310861746c616e74697ac018c00c00020001000151800006036e7332c030c02c00010001000151800004d5efa011c04700010001000151800004d5efa075 + +41052 +1e1d00000001000000000000036e733107626265796f6e64026e6c0000010001 +1e1d80000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +41053 +2b2300000001000000000000036e733207626265796f6e64026e6c0000010001 +2b2380000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +41054 +f9b20000000100000000000003777777137072697661746562726f616463617374696e67026e6c0000010001 +f9b28000000100000003000303777777137072697661746562726f616463617374696e67026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c024c01000020001000151800006036e7332c03cc01000020001000151800006036e7333c03cc03800010001000151800004d5c98015c05300010001000151800004d5c9bf12c06500010001000151800004d5ef9c26 + +41055 +21400000000100000000000005737461636b0375726303747565026e6c00000f0001 +21408000000100000003000305737461636b0375726303747565026e6c00000f0001c0160002000100015180000a0774756567617465c016c01600020001000151800006036e7332c016c0160002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004839b0203c04400010001000151800004839b0303c05600010001000151800004c0576a65 + +41056 +b8ca00000001000000000000076d696e62757a61026e6c00000f0001 +b8ca80000001000000020001076d696e62757a61026e6c00000f0001c00c0002000100015180000b087374617267617465c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004d535a3d2 + +41057 +f4dc0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +f4dc8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +41058 +b5f80000000100000000000005736f6e636f026e6c00000f0001 +b5f88000000100000002000205736f6e636f026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +41059 +fe6200000001000000000000037777770b6769726c70696374757265026e6c0000010001 +fe6280000001000000020000037777770b6769726c70696374757265026e6c0000010001c01000020001000151800017036e73310d696e746572726567697374657203636f6d00c01000020001000151800010026e730a646f6d65696e686f7374c01c + +41060 +1b7528000001000000010000024e4c0000060001055f6c646170045f74637008434f42424c455231024e4c000021000100000258001a0000006401850673657276657208434f42424c455231024e4c00 +1b75a8040000000000000000 + +41061 +61300000000100000000000008686f73746e616d650462696e640000100003 +61308000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41062 +99d30000000100000000000008766f726d706c616e026e6c00000f0001 +99d38000000100000002000108766f726d706c616e026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +41063 +ab930000000100000000000007616b73656e746f026e6c0000010001 +ab938000000100000002000207616b73656e746f026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc014c00c00020001000151800006036e7332c02bc02800010001000151800004c26d0642c04000010001000151800004c26d0963 + +41064 +5a18000000010000000000000965696e64686f76656e026e6c00000f0001 +5a18800000010000000200020965696e64686f76656e026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +41065 +1e6d00000001000000000000036e733206787334616c6c026e6c0000010001 +1e6d80000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +41066 +436b000000010000000000000d6a6f7264616e6d65646963616c026e6c00000f0001 +436b800000010000000200010d6a6f7264616e6d65646963616c026e6c00000f0001c00c0002000100015180000a036e733303777873c01ac00c00020001000151800006036e7334c032c04400010001000151800004d5ef9a65 + +41067 +0c6f00000001000000000000037777770468656e72026e6c0000010001 +0c6f80000001000000020002037777770468656e72026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +41068 +dc9100000001000000000000037777770a6d656e74616c7468656f026e6c0000010001 +dc9180000001000000020000037777770a6d656e74616c7468656f026e6c0000010001c01000020001000151800011036e7331076365652d6b6179036e657400c01000020001000151800006036e7332c033 + +41069 +fe8000000001000000000000036e7332076e656473746174026e6c0000010001 +fe8080000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41070 +bf8500000001000000000000036e7334076e656473746174026e6c0000010001 +bf8580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41071 +00000000700240007f1e00000204057801010402 +000080010000000000000000 + +41072 +a3d90000000100000000000002353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000050001 +a3d98000000100000002000202353802393601300231300a626c61636b686f6c657307656173796e6574026e6c0000050001c02200020001000151800006036e7330c022c02200020001000151800006036e7331c022c03e00010001000151800004c2a55e01c05000010001000151800004c2a55e05 + +41073 +91ea000000010000000000000631326d6f7665026e6c00000f0001 +91ea800000010000000300020631326d6f7665026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +41074 +b82500fd501041a0f0d30000000000000000 +b82580010000000000000000 + +41075 +4e1800000001000000000000036e733306776964657873026e6c0000010001 +4e1880000001000000030002036e733306776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800002c00cc02b00010001000151800004d4ccc0fcc00c000100010001518000043efa0703 + +41076 +b82500fd501841a0fa410000008d6f40000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403aef20403c40a000030000002e4e544c4d535350000100000097b200c008000800260000000600060020000000534552564552434f42424c4552310000 +b82580010000000000000000 + +41077 +eb0b00000001000000000000036e7331076e6564636f6d70026e6c0000010001 +eb0b80000001000000020001036e7331076e6564636f6d70026e6c0000010001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +41078 +24b600000001000000000000036e7331076e6564636f6d70026e6c0000260001 +24b680000001000000020001036e7331076e6564636f6d70026e6c0000260001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +41079 +d82c0100000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +d82c8100000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +41080 +b825010b50114192f0430000000000000000 +b82580010000000000000000 + +41081 +6c440000000100000000000003777777067a7376737477026e6c0000010001 +6c448403000100000001000003777777067a7376737477026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +41082 +abec00000001000000000000037777770a686974626c6173746572026e6c0000010001 +abec80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41083 +b99800000001000000000000037777770a686974626c6173746572026e6c0000010001 +b99880000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41084 +d8ea00000001000000000000037777770a686974626c6173746572026e6c0000010001 +d8ea80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41085 +fbe100000001000000000000037777770a686974626c6173746572026e6c0000010001 +fbe180000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41086 +189b00000001000000000000037777770a686974626c6173746572026e6c0000010001 +189b80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41087 +82c000000001000000000000037777770a686974626c6173746572026e6c0000010001 +82c080000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41088 +1add00000001000000000000037777770a686974626c6173746572026e6c0000010001 +1add80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41089 +55ec00000001000000000000037777770a686974626c6173746572026e6c0000010001 +55ec80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41090 +115000000001000000000000037777770a686974626c6173746572026e6c0000010001 +115080000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41091 +4ca100000001000000000000037777770a686974626c6173746572026e6c0000010001 +4ca180000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41092 +940c00000001000000000000037777770a686974626c6173746572026e6c0000010001 +940c80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41093 +dc1300000001000000000000037777770a686974626c6173746572026e6c0000010001 +dc1380000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41094 +e31f00000001000000000000037777770a686974626c6173746572026e6c0000010001 +e31f80000001000000020002037777770a686974626c6173746572026e6c0000010001c01000020001000151800011036e73310a72336469656e7374656ec01bc01000020001000151800006036e7332c033c02f000100010001518000043e291ad2c04c000100010001518000043e291ad3 + +41095 +77710000000100000000000004646e733208636f6e6365707473026e6c0000010001 +77718000000100000002000204646e733208636f6e6365707473026e6c0000010001c0110002000100015180001103646e730a636f6e63657074736661c01ac01100020001000151800002c00cc02e00010001000151800004d5c51c03c00c00010001000151800004d5c51e1c + +41096 +c26100000001000000000000036e7335046372696f026e6c0000010001 +c26180000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41097 +83c400000001000000000000036e7336046372696f026e6c0000010001 +83c480000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41098 +162e000000010000000000000377777703776562026e6c0000010001 +162e800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +41099 +e19f00000001000000000000036e7335046372696f026e6c0000010001 +e19f80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41100 +854300000001000000000000036e7336046372696f026e6c0000010001 +854380000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41101 +fc2c00000001000000000000036e7331046372696f026e6c0000010001 +fc2c80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41102 +f2ec00000001000000000000036e7332046372696f026e6c0000010001 +f2ec80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41103 +756300000001000000000000037777770a72656372656174696566026e6c0000010001 +756380000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +41104 +74d300000001000000000000036e7331046372696f026e6c0000010001 +74d380000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41105 +74e400000001000000000000036e7332046372696f026e6c0000010001 +74e480000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41106 +bab3000000010000000000000562696e636b026e6c0000ff0001 +bab3800000010000000200020562696e636b026e6c0000ff0001c00c0002000100015180000b036e73310470696e65c012c00c00020001000151800006036e7332c02ac02600010001000151800004d59c0201c03d00010001000151800004c3c1a303 + +41107 +2159000000010000000000000377777707696e6762616e6b026e6c0000010001 +2159800000010000000200020377777707696e6762616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c018c01000020001000151800006036e7332c030c02c0001000100015180000491dd19c2c0420001000100015180000491dd5dc2 + +41108 +000000007002400048c400000204057801010402 +000080010000000000000000 + +41109 +b825010c50104192f0420000000000000000 +b82580010000000000000000 + +41110 +029a00000001000000000000033130340332303803313830033230380964796e61626c6f636b07656173796e6574026e6c0000010001 +029a80000001000000020002033130340332303803313830033230380964796e61626c6f636b07656173796e6574026e6c0000010001c02600020001000151800006036e7330c026c02600020001000151800006036e7331c026c04200010001000151800004c2a55e01c05400010001000151800004c2a55e05 + +41111 +a04000000001000000000000036e73310c636f6e63657074732d696374026e6c0000010001 +a04080000001000000020002036e73310c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800006036e7332c010c03100010001000151800004d5c51c03c04e00010001000151800004d5c51e4b + +41112 +fee900000001000000000000036e73320c636f6e63657074732d696374026e6c00001c0001 +fee980000001000000020002036e73320c636f6e63657074732d696374026e6c00001c0001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b + +41113 +b825ba8a501041a000ec0000000000000000 + + +41114 +b825ba8a501841a08ada0000008defc0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aef20403c40a000030000002e4e544c4d535350000100000097b200c008000800260000000600060020000000534552564552434f42424c4552310000 + + +41115 +9fe600000001000000000000037777770b6d6f726e696e6773746172026e6c0000010001 +9fe680000001000000020000037777770b6d6f726e696e6773746172026e6c0000010001c010000200010001518000100572656d7573046d736575036e657400c01000020001000151800006036e7332c036 + +41116 +b825ba9850114192005c0000000000000000 + + +41117 +91ec0000000100000000000003616d6303757661026e6c00000f0001 +91ec8000000100000002000203616d6303757661026e6c00000f0001c0100002000100015180000e086261726c61657573026963c010c01000020001000151800006036e7331c010c0280001000100015180000491124432c0420001000100015180000491122710 + +41118 +7668000000010000000000000377777713636f656c69616b6965766572656e6967696e67026e6c0000010001 +7668800000010000000200020377777713636f656c69616b6965766572656e6967696e67026e6c0000010001c0100002000100015180000e07646e732d70726903626f78c024c0100002000100015180000a07646e732d736563c040c03800010001000151800004d97700fac05200010001000151800004d97704fa + +41119 +bf5d0010000100000000000106616c7469756d026e6c0000ff00010000290800000080000000 +bf5d8000000100000002000306616c7469756d026e6c0000ff0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f00460000291000000000000000 + +41120 +1ea6000000010000000000000a63617264736c7674303103666f6c026e6c0000010001 +1ea6800000010000000200000a63617264736c7674303103666f6c026e6c0000010001c01700020001000151800015096d6f6e64726961616e0874656c6562797465c01bc0170002000100015180000a077665726d656572c039 + +41121 +15220000000100000000000003777777066d6174757265026e6c0000010001 +15228000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +41122 +02230000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +02238000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +41123 +91f10000000100000000000007747067706f7374026e6c00000f0001 +91f18000000100000002000207747067706f7374026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +41124 +58260000000100000000000005524f42494e064f4d524f4550026e6c0000010001 +58268000000100000002000205524f42494e064f4d524f4550026e6c0000010001c01200020001000151800009066d696e6e6965c012c01200020001000151800002c00cc02d00010001000151800004913a1e04c00c00010001000151800004913a1a34 + +41125 +ac1300000001000000000000064d494e4e4945064f4d524f4550026e6c0000010001 +ac1380000001000000020002064d494e4e4945064f4d524f4550026e6c0000010001c01300020001000151800002c00cc0130002000100015180000805726f62696ec013c00c00010001000151800004913a1e04c03c00010001000151800004913a1a34 + +41126 +91f2000000010000000000000a7a61616e73747265656b07706f6c69746965026e6c00000f0001 +91f2800000010000000200010a7a61616e73747265656b07706f6c69746965026e6c00000f0001c0170002000100015180000805736d757266c017c0170002000100015180000d036e7332036b706e036e657400c03300010001000151800004c297c3de + +41127 +d06400000001000000000000064442534552560354454d034e484c024e4c00001c0001 +d06480000001000000030003064442534552560354454d034e484c024e4c00001c0001c0170002000100015180000603646e73c017c0170002000100015180000704646e7332c017c0170002000100015180000e036e733107737572666e6574c01bc02f000100010001518000048dfc0103c041000100010001518000048dfc0104c05400010001000151800004c0576a65 + +41128 +c16400000001000000000000064442534552560354454d034e484c024e4c0000010001 +c16480000001000000030003064442534552560354454d034e484c024e4c0000010001c0170002000100015180000603646e73c017c0170002000100015180000704646e7332c017c0170002000100015180000e036e733107737572666e6574c01bc02f000100010001518000048dfc0103c041000100010001518000048dfc0104c05400010001000151800004c0576a65 + +41129 +2f620000000100000000000003444e53034e484c024e4c0000010001 +2f628000000100000003000303444e53034e484c024e4c0000010001c01000020001000151800002c00cc0100002000100015180000704646e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c000100010001518000048dfc0103c036000100010001518000048dfc0104c04900010001000151800004c0576a65 + +41130 +d6110000000100000000000003444e53034e484c024e4c00001c0001 +d6118000000100000003000303444e53034e484c024e4c00001c0001c01000020001000151800002c00cc0100002000100015180000704646e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c000100010001518000048dfc0103c036000100010001518000048dfc0104c04900010001000151800004c0576a65 + +41131 +6db30000000100000000000007636f6e74656e74026e6c00000f0001 +6db38000000100000002000007636f6e74656e74026e6c00000f0001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c02d + +41132 +31bd0000000100000000000003777777096372617a7934616c6c026e6c0000010001 +31bd8000000100000003000303777777096372617a7934616c6c026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +41133 +00000000700240004f1300000204057801010402 +000080010000000000000000 + +41134 +b825ba9950104192005b0000000000000000 + + +41135 +15e000000001000000000000094a414e53454e574542024e4c0000010001 +15e080000001000000020002094a414e53454e574542024e4c0000010001c00c00020001000151800009036e7331026973c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +41136 +b8ea00000001000000000000096d61696c72656c6179096b656e6e69736e6574026e6c0000010001 +b8ea80000001000000020002096d61696c72656c6179096b656e6e69736e6574026e6c0000010001c01600020001000151800006036e7339c016c0160002000100015180000e036e733207737572666e6574c020c03400010001000151800004c0576a61c04600010001000151800004c0572402 + +41137 +b8269830501041a029940000000000000000 + + +41138 +b8269830501841a08f030000008d1440000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aef20403c40a000030000002e4e544c4d535350000100000097b200c008000800260000000600060020000000534552564552434f42424c4552310000 + + +41139 +340b000000010000000000000e53544556454a4546464552534f4e026e6c0000020001 +340b840300010000000100000e53544556454a4546464552534f4e026e6c0000020001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +41140 +b826983e5011419229040000000000000000 + + +41141 +1f0f00000001000000000000055f6c646170045f746370026763065f6d7364637303504632026e6c0000060001 +1f0f84030001000000010000055f6c646170045f746370026763065f6d7364637303504632026e6c0000060001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +41142 +eae500000001000000000000066e65636f6d6d026e6c00000f0001 +eae580000001000000030003066e65636f6d6d026e6c00000f0001c00c0002000100015180000c026e73067369676e6574c013c00c00020001000151800006036e7331c02ac00c00020001000151800006036e7332c02ac02700010001000151800004c3561242c03f00010001000151800004d915f142c05100010001000151800004d915f141 + +41143 +a0d000000001000000000000055f6c646170045f746370026463065f6d736463730b6577772d6e65747765726b026e6c0000210001 +a0d084030001000000010000055f6c646170045f746370026463065f6d736463730b6577772d6e65747765726b026e6c0000210001c02d00060001000038400036026e730f646f6d61696e2d7265676973747279c02d0a686f73746d6173746572c0440bf1e540000070800000384000278d0000003840 + +41144 +7bf7000000010000000000000a736f6e6572616d61696c026e6c00000f0001 +7bf7800000010000000200000a736f6e6572616d61696c026e6c00000f0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +41145 +b826983f5010419229030000000000000000 + + +41146 +45f200000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026763065f6d7364637303504632026e6c0000060001 +45f284030001000000010000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026763065f6d7364637303504632026e6c0000060001c04200060001000038400036026e730f646f6d61696e2d7265676973747279c0420a686f73746d6173746572c0590bf1e540000070800000384000278d0000003840 + +41147 +b92500000001000000000000036d346e056d62757975026e6c0000010001 +b92580000001000000020000036d346e056d62757975026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c02d + +41148 +1b17000000010000000000000377777706736861676779026e6c0000010001 +1b17800000010000000200010377777706736861676779026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +41149 +139d00000001000000000000024e530348414e026e6c0000010001 +139d80000001000000020002024e530348414e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c013c00c00010001000151800004914a670ac03500010001000151800004c0576a65 + +41150 +1ffa00000001000000000000036e7333076e6574666c6578026e6c0000010001 +1ffa80000001000000030003036e7333076e6574666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c26d5ba8c03e00010001000151800004507f2f25c00c00010001000151800004507ede20 + +41151 +4df100000001000000000000036e7331076e6574666c6578026e6c0000010001 +4df180000001000000030003036e7331076e6574666c6578026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c26d5ba8c03a00010001000151800004507f2f25c04c00010001000151800004507ede20 + +41152 +6d2f00000001000000000000036e7332076e6574666c6578026e6c0000010001 +6d2f80000001000000030003036e7332076e6574666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c26d5ba8c00c00010001000151800004507f2f25c04c00010001000151800004507ede20 + +41153 +4d6300000001000000000000066163686d6561026e6c00000f0001 +4d6380000001000000030003066163686d6561026e6c00000f0001c00c00020001000151800012047072693103646e73067073696e6574c013c00c000200010001518000070470726932c02cc00c000200010001518000070470726933c02cc027000100010001518000049a0ff9a6c045000100010001518000049a0ff9aac058000100010001518000049a0ff9ae + +41154 +b33600000001000000000000036e733103737761026e6c0000010001 +b33680000001000000030001036e733103737761026e6c0000010001c0100002000100015180000e036e733104686d6e71036e657400c0100002000100015180000d036e733206776964657873c031c0100002000100015180000d036e733306776964657873c014c05b000100010001518000043efa0703 + +41155 +27af000000010000000000000a796f75636f6e6e656374026e6c0000ff0001 +27af800000010000000200020a796f75636f6e6e656374026e6c0000ff0001c00c00020001000151800012036e73310b706c757373657276657232c017c00c00020001000151800006036e7332c02fc02b000100010001518000045104731ec049000100010001518000045104731f + +41156 +091300000001000000000000026763065f6d7364637303504632026e6c0000060001 +091384030001000000010000026763065f6d7364637303504632026e6c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +41157 +0ee600000001000000000000036d783106787334616c6c026e6c0000010001 +0ee680000001000000030002036d783106787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41158 +827e00000001000000000000036d783206787334616c6c026e6c0000010001 +827e80000001000000030002036d783206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41159 +2bc900000001000000000000036d783306787334616c6c026e6c0000010001 +2bc980000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41160 +478100000001000000000000036d783406787334616c6c026e6c0000010001 +478180000001000000030002036d783406787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41161 +8e4f00000001000000000000036d786906787334616c6c026e6c0000010001 +8e4f80000001000000030002036d786906787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41162 +a5ba00000001000000000000037777770b6e65747370616e6e696e67026e6c0000010001 +a5ba80000001000000020002037777770b6e65747370616e6e696e67026e6c0000010001c01000020001000151800009026e7303646d61c01cc01000020001000151800006036e7332c033c03000010001000151800004d973c8fbc04500010001000151800004d9aa11fc + +41163 +c9a900000001000000000000037777770770656d61776562026e6c0000010001 +c9a980000001000000020000037777770770656d61776562026e6c0000010001c0100002000100015180000d036e7331046261736d02626500c01000020001000151800006036e7332c030 + +41164 +d27b00000001000000000000046b657276026e6c0000010001 +d27b84030001000000010000046b657276026e6c0000010001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +41165 +73ee00000001000000000000034e533103454b45024e4c0000010001 +73ee80000001000000020001034e533103454b45024e4c0000010001c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2976a65 + +41166 +39f700000001000000000000034e533103454b45024e4c0000260001 +39f780000001000000020001034e533103454b45024e4c0000260001c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c2976a65 + +41167 +84e800000001000000000000036e733109666972737466696e64026e6c0000010001 +84e880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41168 +92cb00000001000000000000036e733209666972737466696e64026e6c0000010001 +92cb80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41169 +8155000000010000000000000377777706617265613137026e6c0000010001 +8155800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +41170 +9cca00000001000000000000096469646c6c706f7374026e6c0000010001 +9cca84030001000000010000096469646c6c706f7374026e6c0000010001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +41171 +316000000001000000000000036e7331036e7873026e6c0000010001 +316080000001000000020002036e7331036e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c015c03600010001000151800004d973c102 + +41172 +0c5300000001000000000000036e7332036e7873026e6c0000010001 +0c5380000001000000020002036e7332036e7873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d973c015c00c00010001000151800004d973c102 + +41173 +b5840000000100000000000006616c7469756d026e6c0000ff0001 +b5848000000100000002000206616c7469756d026e6c0000ff0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +41174 +658400000001000000000000026e73076e656473746174026e6c0000010001 +658480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +41175 +b2c200000001000000000000036e7333076e656473746174026e6c0000010001 +b2c280000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +41176 +b6630000000100000000000006636861726973026e6c0000ff0001 +b6638000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +41177 +c6ff000000010000000000000377777708617070656c706f70026e6c0000010001 +c6ff800000010000000200020377777708617070656c706f70026e6c0000010001c01000020001000151800009026e7303697873c019c01000020001000151800006036e7332c030c02d00010001000151800004d4f13ff8c04200010001000151800004d4f13ff9 + +41178 +3bdb000000010000000000000b6c696e75786f6e6c696e65026e6c0000020001 +3bdb800000010000000200020b6c696e75786f6e6c696e65026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +41179 +cb5100000001000000000000096d61696c72656c6179066e6c74726565026e6c0000010001 +cb5180000001000000020002096d61696c72656c6179066e6c74726565026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03100010001000151800004d4b20403c04300010001000151800004d5881e45 + +41180 +a4e728000001000000010000026e6c0000060001035f6763045f74637009617269656465776974026e6c000021000100000258001b000000640cc40641646577697409617269656465776974026e6c00 +a4e7a8040000000000000000 + +41181 +cf17000000010000000000000377777706786f6c6c6965026e6c0000010001 +cf17800000010000000200010377777706786f6c6c6965026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800014036e73320a6e6574686f6c64696e67036e657400c02b0001000100015180000451ad746f + +41182 +1bf3000000010000000000000377777703617470026e6c0000010001 +1bf3800000010000000200010377777703617470026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800013036e7332026e6c0669676e697465036e657400c02800010001000151800004d4298505 + +41183 +7e55000000010000000000000f6a6f6f702d68696c6c656272616e64026e6c00000f0001 +7e55800000010000000200020f6a6f6f702d68696c6c656272616e64026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c01cc00c00020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +41184 +656e000000010000000000000377777706786f6c6c6965026e6c0000260001 +656e800000010000000200010377777706786f6c6c6965026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800014036e73320a6e6574686f6c64696e67036e657400c02b0001000100015180000451ad746f + +41185 +3c7400000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +3c7480000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41186 +b81cbc0950100000789c0000000000000000 + + +41187 +0000000070024000945300000204057a01010402 +000080010000000000000000 + +41188 +96610000000100000000000004636b7070026e6c00000f0001 +96618000000100000002000004636b7070026e6c00000f0001c00c000200010001518000140161026e73096c696e766973696f6e03636f6d00c00c000200010001518000040162c027 + +41189 +88c600000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +88c680000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41190 +d3f600000001000000000001067a6f6e6e6574026e6c0000ff00010000291000000000000000 +d3f680000001000000020003067a6f6e6e6574026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180000e026e7308767575727765726bc013c027000100010001518000043e3a3204c038000100010001518000043efa02020000291000000000000000 + +41191 +9c2e00000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +9c2e80000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +41192 +b8289ecf501041b8681d0000000000000000 + + +41193 +b8289ecf501841b8c24a0000008eaff4000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d3f403beebf00030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 + + +41194 +8280000000010000000000000764616c6673656e026e6c0000ff0001 +8280800000010000000200020764616c6673656e026e6c0000ff0001c00c0002000100015180000e026e73086d656761706c6578c014c00c00020001000151800006036e7331c02bc02800010001000151800004504f6101c04200010001000151800004504f6102 + +41195 +ac5d00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +ac5d80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41196 +6bcf00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +6bcf80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41197 +b8289edd501141aa678c0000000000000000 + + +41198 +0000000070024000c58e00000204057a01010402 +000080010000000000000000 + +41199 +e95400000001000000000000036e733109666972737466696e64026e6c0000010001 +e95480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41200 +1a9a0000000100000000000003777777087261626f62616e6b026e6c0000010001 +1a9a8000000100000002000103777777087261626f62616e6b026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02d0001000100015180000491484fde + +41201 +f42f00000001000000000000036e733209666972737466696e64026e6c0000010001 +f42f80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41202 +b8289ede501041aa678b0000000000000000 + + +41203 +b829975b501041b8a0cb0000000000000000 + + +41204 +0cc50000000100000000000009636172656c6e6f7574026e6c00000f0001 +0cc58000000100000002000009636172656c6e6f7574026e6c00000f0001c00c00020001000151800018036e73310e696369742d736f6c7574696f6e7303636f6d00c00c00020001000151800006036e7332c02e + +41205 +b829975b501841b87ebc0000008e2d32000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d3f403beebf00030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 + + +41206 +fbd400000001000000000000046c696f63026e6c0000020001 +fbd480000001000000020002046c696f63026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +41207 +05dc000000010000000000000377777705737461636b026e6c0000010001 +05dc800000010000000300030377777705737461636b026e6c0000010001c01000020001000151800006037a656ec010c0100002000100015180000e077475656761746503747565c016c01000020001000151800006036e7332c044c02a00010001000151800004839b8c82c03c00010001000151800004839b0203c05600010001000151800004839b0303 + +41208 +00fa00000001000000000000026e730b666163696e676661637473026e6c0000010001 +00fa80000001000000020002026e730b666163696e676661637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d513b013c03d00010001000151800004d513b012 + +41209 +592300000001000000000000036e73320b666163696e676661637473026e6c0000010001 +592380000001000000020002036e73320b666163696e676661637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d513b013c00c00010001000151800004d513b012 + +41210 +89f900000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +89f980000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +41211 +fcc100000001000000000000026e7306787334616c6c026e6c00001c0001 +fcc180000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +41212 +d35500000001000000000000026e7306787334616c6c026e6c0000260001 +d35580000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +41213 +ca5000000001000000000000036e733206787334616c6c026e6c0000260001 +ca5080000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +41214 +129700000001000000000000036e733206787334616c6c026e6c00001c0001 +129780000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +41215 +b8299769501141aaa03a0000000000000000 + + +41216 +000000007002400035ff00000204057a01010402 +000080010000000000000000 + +41217 +54c10000000100000000000003777777066865726d6163026e6c0000010001 +54c18000000100000002000003777777066865726d6163026e6c0000010001c01000020001000151800012036e73310b776f726c646f6e6c696e65c017c01000020001000151800006036e7332c02f + +41218 +b829976a501041aaa0390000000000000000 + + +41219 +b82a2f49501041b8794d0000000000000000 +b82aaf440000000000000000 + +41220 +34d8000000010000000000000377777707746170746f6573026e6c0000010001 +34d8800000010000000200020377777707746170746f6573026e6c0000010001c0100002000100015180000a036e733103686978c018c01000020001000151800006036e7332c030c02c00010001000151800004d5a0da0ac0420001000100015180000451112ec3 + +41221 +b82a2f49501841b8d9ff0000008eaa70000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d3f403beebf00030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 +b82aaf440000000000000000 + +41222 +10d7000000010000000000000666726f757773026e6c0000010001 +10d7800000010000000200020666726f757773026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41223 +b82a2f57501141aa78bc0000000000000000 +b82aaf540000000000000000 + +41224 +4e9c0000000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +4e9c8000000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +41225 +b82a2f58501041aa78bb0000000000000000 +b82aaf540000000000000000 + +41226 +dac600000001000000000000037777770c72656e6561646d697261616c026e6c0000010001 +dac680000001000000020002037777770c72656e6561646d697261616c026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +41227 +e4df00000001000000000000037777770a656e65726769656e6564026e6c0000010001 +e4df80000001000000020000037777770a656e65726769656e6564026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c033 + +41228 +527500000001000000000000037777770c72656e6561646d697261616c026e6c0000010001 +527580000001000000020002037777770c72656e6561646d697261616c026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +41229 +80f900000001000000000000026e7309656174736572766572026e6c0000010001 +80f980000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +41230 +d35000000001000000000000036e733209656174736572766572026e6c0000010001 +d35080000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +41231 +d3f600000001000000000000067a6f6e6e6574026e6c0000ff0001 +d3f680000001000000020002067a6f6e6e6574026e6c0000ff0001c00c00020001000151800005026e73c00cc00c0002000100015180000e026e7308767575727765726bc013c027000100010001518000043e3a3204c038000100010001518000043efa0202 + +41232 +d5db000000010000000000000c6c696f6f6e64657277696a73026e6c0000020001 +d5db800000010000000200020c6c696f6f6e64657277696a73026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +41233 +ad690000000100000000000007686167656d616e026e6c0000010001 +ad698000000100000002000207686167656d616e026e6c0000010001c00c0002000100015180000c036e733105636176656fc014c00c00020001000151800006036e7332c02cc028000100010001518000045112a002c040000100010001518000045112a102 + +41234 +247800000001000000000000086d6f647370616365026e6c00000f0001 +247880000001000000020000086d6f647370616365026e6c00000f0001c00c00020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c00c00020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +41235 +f7220000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +f7228000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41236 +454f00000001000000000000037777770774656c666f7274026e6c0000010001 +454f80000001000000020001037777770774656c666f7274026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800014036e733202657507636f6e63657274036e657400c02c00010001000151800004d5c22815 + +41237 +ed6e00000001000000000000076d6163666f7572026e6c0000010001 +ed6e80000001000000020002076d6163666f7572026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +41238 +862e00000001000000000000037777770b7375706572696f722d6973026e6c0000010001 +862e80000001000000020002037777770b7375706572696f722d6973026e6c0000010001c0100002000100015180000a036e733103686978c01cc01000020001000151800006036e7332c034c03000010001000151800004d5a0da0ac0460001000100015180000451112ec3 + +41239 +5b2000000001000000000000036e7335046372696f026e6c0000010001 +5b2080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41240 +e24f00000001000000000000036e7336046372696f026e6c0000010001 +e24f80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41241 +d28c000000010000000000000377777703776562026e6c0000010001 +d28c800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +41242 +486100000001000000000000036e7331046372696f026e6c0000010001 +486180000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41243 +aae100000001000000000000036e7332046372696f026e6c0000010001 +aae180000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41244 +4bff00000001000000000000037777770a72656372656174696566026e6c0000010001 +4bff80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +41245 +dddf00000001000000000000036e7335046372696f026e6c0000010001 +dddf80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41246 +06f700000001000000000000036e7336046372696f026e6c0000010001 +06f780000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41247 +e3b800000001000000000000036e7331046372696f026e6c0000010001 +e3b880000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41248 +3ee200000001000000000000036e7332046372696f026e6c0000010001 +3ee280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +41249 +2d7f0000000100000000000006787334616c6c026e6c00000f0001 +2d7f8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +41250 +874200000001000000000000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d7364637303504632026e6c0000060001 +874284030001000000010000095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d7364637303504632026e6c0000060001c04600060001000038400036026e730f646f6d61696e2d7265676973747279c0460a686f73746d6173746572c05d0bf1e540000070800000384000278d0000003840 + +41251 +8c3300000001000000000000037777770c6d656469617363616e6e6572026e6c0000010001 +8c3380000001000000020000037777770c6d656469617363616e6e6572026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c037 + +41252 +00000000b002832c24a30000010303010101080a11235f89000000000101040202040564 +000080010000000000000000 + +41253 +1c7600000001000000000000066b61726d6163036d6373026e6c0000ff0001 +1c7680000001000000020001066b61726d6163036d6373026e6c0000ff0001c01300020001000151800005026e73c013c01300020001000151800010036e7332096379626572636f6d6dc017c02b00010001000151800004d5c40185 + +41254 +b82b27518010859879ee00000101080a11235f8a0128080f +b82ba1010000000000000000 + +41255 +6cae0000000100000000000003706f6d026e6c00000f0001 +6cae8000000100000002000003706f6d026e6c00000f0001c00c00020001000151800010036e73310673697465347503636f6d00c00c00020001000151800006036e7332c028 + +41256 +9d4c00000001000000000000086361737369726572026e6c00000f0001 +9d4c80000001000000020002086361737369726572026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +41257 +3cec0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3cec8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41258 +d49e000000010000000000000461686d76026e6c0000010001 +d49e800000010000000200020461686d76026e6c0000010001c00c00020001000151800010036e7331096e657467726f756e64c011c00c00020001000151800006036e7332c029c025000100010001518000045054e415c0410001000100015180000451046014 + +41259 +30a600000001000000000000046d61696c03706f6d026e6c0000010001 +30a680000001000000020000046d61696c03706f6d026e6c0000010001c01100020001000151800010036e73310673697465347503636f6d00c01100020001000151800006036e7332c02d + +41260 +2c3901000001000000000000056b6f726e6f026e6c00000f000100 +2c3985030001000000010000056b6f726e6f026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +41261 +1573000000010000000000000657454e4230330d77656e622d6c656c7973746164026e6c0000060001 +1573840300010000000100000657454e4230330d77656e622d6c656c7973746164026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +41262 +2ddf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2ddf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41263 +1b410000000100000000000003777777026870026e6c0000010001 +1b418000000100000003000003777777026870026e6c0000010001c01000020001000151800018086772656e6f626c65066575726f7065026870036e657400c0100002000100015180000c09627261636b6e656c6cc030c0100002000100015180000d0a626f65626c696e67656ec030 + +41264 +001e0000000100000000000007666c6176697573026e6c00000f0001 +001e8000000100000002000007666c6176697573026e6c00000f0001c00c00020001000151800012026e7309736572766572373935036e657400c00c00020001000151800006036e7332c02b + +41265 +017900000001000000000000046d61696c076b697874617274026e6c0000010001 +017980000001000000030000046d61696c076b697874617274026e6c0000010001c01100020001000151800010026e73076b69787461727403636f6d00c01100020001000151800006036e7332c030c01100020001000151800006036e7333c030 + +41266 +776e00000001000000000000146c69717569646d65646961736f6c7574696f6e73026e6c0000020001 +776e80000001000000020002146c69717569646d65646961736f6c7574696f6e73026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec021c00c00020001000151800006036e7332c039c03500010001000151800004c29f4906c04d00010001000151800004c29fb004 + +41267 +2e5800000001000000000000026e73076e656473746174026e6c00001c0001 +2e5880000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +41268 +74a400000001000000000000026e73076e656473746174026e6c0000260001 +74a480000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +41269 +d0ad00000001000000000000036e7332076e656473746174026e6c0000010001 +d0ad80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41270 +f59800000001000000000000036e7332076e656473746174026e6c00001c0001 +f59880000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41271 +1ba800000001000000000000036e7332076e656473746174026e6c0000260001 +1ba880000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41272 +07a500000001000000000000036e7333076e656473746174026e6c00001c0001 +07a580000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +41273 +ddcd00000001000000000000036e7333076e656473746174026e6c0000260001 +ddcd80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +41274 +b74400000001000000000000036e7334076e656473746174026e6c0000010001 +b74480000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41275 +89b600000001000000000000036e7334076e656473746174026e6c00001c0001 +89b680000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41276 +1d99000000010000000000000670726f646973056e76776d6e026e6c0000010001 +1d99800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +41277 +199900000001000000000000036e7334076e656473746174026e6c0000260001 +199980000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +41278 +119c00000001000000000000037777771362726162616e74626f757773797374656d656e026e6c0000010001 +119c80000001000000020000037777771362726162616e74626f757773797374656d656e026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec03f + +41279 +2b3000000001000000000000036e733503777873026e6c0000010001 +2b3080000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +41280 +30d40000000100000000000005646e732d31056c61646f74026e6c0000010001 +30d48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41281 +fad90000000100000000000005646e732d32056c61646f74026e6c0000010001 +fad98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41282 +beb6000000010000000000000377777704692d676f026e6c0000010001 +beb6800000010000000200020377777704692d676f026e6c0000010001c01000020001000151800009036e7331026973c015c01000020001000151800006036e7332c02dc02900010001000151800004d5852102c03e00010001000151800004d5c41503 + +41283 +8f5e00000001000000000000036e73320d706f7765727365727665723230026e6c0000260001 +8f5e80000001000000020002036e73320d706f7765727365727665723230026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +41284 +bb3f00000001000000000000036e73320d706f7765727365727665723230026e6c00001c0001 +bb3f80000001000000020002036e73320d706f7765727365727665723230026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000045104711dc00c000100010001518000045104711e + +41285 +a1ad00000001000000000000036e73310d706f7765727365727665723230026e6c0000260001 +a1ad80000001000000020002036e73310d706f7765727365727665723230026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +41286 +4f2200000001000000000000037777770c6f63636173696f6e6c616e64026e6c0000010001 +4f2280000001000000030003037777770c6f63636173696f6e6c616e64026e6c0000010001c0100002000100015180000e076e73617574683103626974c01dc0100002000100015180000a076e736175746832c039c0100002000100015180000a076e736175746833c039c03100010001000151800004d5880c33c04b00010001000151800004d5880c3bc06100010001000151800004d4ccc00b + +41287 +37e200000001000000000000036e73310d706f7765727365727665723230026e6c00001c0001 +37e280000001000000020002036e73310d706f7765727365727665723230026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104711dc040000100010001518000045104711e + +41288 +72ae00000001000000000000046d61696c0c7175657374696f6e6d617263026e6c0000260001 +72ae80000001000000020002046d61696c0c7175657374696f6e6d617263026e6c0000260001c01100020001000151800014036e73310d706f7765727365727665723230c01ec01100020001000151800006036e7332c036c032000100010001518000045104711dc052000100010001518000045104711e + +41289 +a39000000001000000000000046d61696c0c7175657374696f6e6d617263026e6c00001c0001 +a39080000001000000020002046d61696c0c7175657374696f6e6d617263026e6c00001c0001c01100020001000151800014036e73310d706f7765727365727665723230c01ec01100020001000151800006036e7332c036c032000100010001518000045104711dc052000100010001518000045104711e + +41290 +e3500000000100000000000003777777046b6f7061026e6c0000010001 +e3508000000100000002000203777777046b6f7061026e6c0000010001c0100002000100015180000b026e73057069776562c015c01000020001000151800011036e73330a74727565736572766572c015c02900010001000151800004d5efb23dc04000010001000151800004d5ef8005 + +41291 +211b000000010000000000000734657665727931026e6c0000010001 +211b800000010000000200010734657665727931026e6c0000010001c00c00020001000151800009026e730365646ec014c00c00020001000151800010036e733109756e69736f75726365c014c028000100010001518000043e3a51e4 + +41292 +16f0000000010000000000000670726f646973056e76776d6e026e6c0000010001 +16f0800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +41293 +1b0c00000001000000000000037777770a6d617269616865696465026e6c0000010001 +1b0c80000001000000020000037777770a6d617269616865696465026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c032 + +41294 +698c000000010000000000000d74686f6d617373656e2d746373026e6c00000f0001 +698c800000010000000200000d74686f6d617373656e2d746373026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c034 + +41295 +cdf6000000010000000000000377777708756e65746f766e69026e6c0000010001 +cdf6800000010000000300010377777708756e65746f766e69026e6c0000010001c0100002000100015180000e026e7308767575727765726bc019c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04bc02d000100010001518000043efa0202 + +41296 +0968000000010000000000000377777707696e7369656d65026e6c0000010001 +0968800000010000000200000377777707696e7369656d65026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c042 + +41297 +7a950000000100000000000003777777046b6f7061026e6c0000010001 +7a958000000100000002000203777777046b6f7061026e6c0000010001c0100002000100015180000b026e73057069776562c015c01000020001000151800011036e73330a74727565736572766572c015c02900010001000151800004d5efb23dc04000010001000151800004d5ef8005 + +41298 +9553000000010000000000000377777708626f6f74736d616e026e6c0000010001 +9553800000010000000200020377777708626f6f74736d616e026e6c0000010001c0100002000100015180000d026e73077374616e6e6574c019c01000020001000151800006036e7332c030c02d00010001000151800004d5852414c04600010001000151800004d5852418 + +41299 +c47500000001000000000000046d61696c046d61656b026e6c0000010001 +c47580000001000000020002046d61696c046d61656b026e6c0000010001c0110002000100015180000f026e7309656174736572766572c016c01100020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +41300 +92e100000001000000000000046d61696c046d61656b026e6c0000010001 +92e180000001000000020002046d61696c046d61656b026e6c0000010001c0110002000100015180000f026e7309656174736572766572c016c01100020001000151800006036e7332c02dc02a00010001000151800004d4cb0e42c04500010001000151800004d4cb1221 + +41301 +7b0c000000010000000000000377777710726573706f6e73652d73657276696365026e6c0000010001 +7b0c800000010000000200020377777710726573706f6e73652d73657276696365026e6c0000010001c0100002000100015180000d026e730763697374726f6ec021c01000020001000151800006036e7332c038c035000100010001518000043ed81f37c04e000100010001518000043ed81f38 + +41302 +b82b275180188598d42e00000101080a11235f9a0128080f008e55dc000000010001000000000f313330353637303035383030322d330000f900010f313330353637303035383030322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afc71403c4df100030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000004c4150544f505745524b47524f45500000 +b82ba1010000000000000000 + +41303 +b82b275f80108598793f00000101080a11235f9b0128080f +b82ba1010000000000000000 + +41304 +706f00000001000000000000086168636272616e640564656d6f6e026e6c0000ff0001 +706f80000001000000030002086168636272616e640564656d6f6e026e6c0000ff0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +41305 +878000000001000000000000036e733207747564656c6674026e6c0000010001 +878080000001000000050005036e733207747564656c6674026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +41306 +f9ff00000001000000000000036e733107747564656c6674026e6c0000010001 +f9ff80000001000000050005036e733107747564656c6674026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +41307 +b66500000001000000000000066d61737465720364746f07747564656c6674026e6c00001c0001 +b66580000001000000050005066d61737465720364746f07747564656c6674026e6c00001c0001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +41308 +e6d800000001000000000000066d61737465720364746f07747564656c6674026e6c0000260001 +e6d880000001000000050005066d61737465720364746f07747564656c6674026e6c0000260001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +41309 +d8f30010000100000000000003777777126175746f6d617469736572696e6767696473026e6c0000010001 +d8f38000000100000002000103777777126175746f6d617469736572696e6767696473026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc023c01000020001000151800006036e7331c03ac03700010001000151800004c2b2b20a + +41310 +c2310000000100000000000003777777096d696e647363617065026e6c0000010001 +c2318000000100000003000303777777096d696e647363617065026e6c0000010001c01000020001000151800012047072693103646e73067073696e6574c01ac010000200010001518000070470726932c033c010000200010001518000070470726933c033c02e000100010001518000049a0ff9a6c04c000100010001518000049a0ff9aac05f000100010001518000049a0ff9ae + +41311 +e88400000001000000000000037777770b776161676d656573746572026e6c0000010001 +e88480000001000000020002037777770b776161676d656573746572026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01cc01000020001000151800006036e7332c033c03000010001000151800004d453c005c04e00010001000151800004d453c006 + +41312 +950600000001000000000000095f6b65726265726f73045f74637003504632026e6c0000060001 +950684030001000000010000095f6b65726265726f73045f74637003504632026e6c0000060001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +41313 +eeeb0000000100000000000015535445524c494e4753494c5645524a4557454c4552026e6c0000020001 +eeeb8403000100000001000015535445524c494e4753494c5645524a4557454c4552026e6c0000020001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +41314 +2c1000000001000000000000037777770d7a616b67656c646f6e6c696e65026e6c0000010001 +2c1080000001000000020002037777770d7a616b67656c646f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03200010001000151800004d5f72ed2c04400010001000151800004d5f72ed3 + +41315 +2c1e0000000100000000000008747269706f696e74026e6c00001c0001 +2c1e8000000100000002000208747269706f696e74026e6c00001c0001c00c0002000100015180000c036e7331057669727475c015c00c00020001000151800006036e7332c02dc02900010001000151800004d9726102c04100010001000151800004d58141c4 + +41316 +071100000001000000000000026e7308767575727765726b026e6c0000010001 +071180000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +41317 +5b8a000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c00000f0001 +5b8a800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c00000f0001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +41318 +76c00000000100000000000008686f73746e616d650462696e640000100003 +76c08000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41319 +e59400000001000000000000036e7331107370686572616e616d65736572766572026e6c0000010001 +e59480000001000000020002036e7331107370686572616e616d65736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047004c0430001000100015180000451047002 + +41320 +f60100000001000000000000036e7332107370686572616e616d65736572766572026e6c0000010001 +f60180000001000000020002036e7332107370686572616e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0350001000100015180000451047004c00c0001000100015180000451047002 + +41321 +f6d90000000100000000000006636f62616c740a6e65746d61696c696e67026e6c0000010001 +f6d98000000100000002000006636f62616c740a6e65746d61696c696e67026e6c0000010001c01300020001000151800011036e73310764697265637435036e657400c01300020001000151800006036e7332c036 + +41322 +a0940000000100000000000006636f62616c740a6e65746d61696c696e67026e6c00001c0001 +a0948000000100000002000006636f62616c740a6e65746d61696c696e67026e6c00001c0001c01300020001000151800011036e73310764697265637435036e657400c01300020001000151800006036e7332c036 + +41323 +77be0000000100000000000006636f62616c740a6e65746d61696c696e67026e6c0000260001 +77be8000000100000002000006636f62616c740a6e65746d61696c696e67026e6c0000260001c01300020001000151800011036e73310764697265637435036e657400c01300020001000151800006036e7332c036 + +41324 +063c0000000100000000000008686f73746e616d650462696e640000100003 +063c8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41325 +d8410100000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +d8418100000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +41326 +19a8000000010000000000000661726d617761026e6c00000f0001 +19a8800000010000000200000661726d617761026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +41327 +cdcc00000001000000000000036e733107737572666e6574026e6c0000010001 +cdcc80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +41328 +13ad000000010000000000000c6c69717569646f787967656e026e6c0000020001 +13ad800000010000000200020c6c69717569646f787967656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +41329 +1f3800000001000000000000036e7331053632357476026e6c0000010001 +1f3880000001000000020002036e7331053632357476026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ea68ad2c038000100010001518000043ea68ad3 + +41330 +16ad00000001000000000000036e7332053632357476026e6c0000010001 +16ad80000001000000020002036e7332053632357476026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043ea68ad2c00c000100010001518000043ea68ad3 + +41331 +8d5b000000010000000000000e63656e747261616c626568656572026e6c0000ff0001 +8d5b800000010000000300030e63656e747261616c626568656572026e6c0000ff0001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +41332 +2c3100000001000000000000115245494e44455253534f5554485041524b026e6c0000020001 +2c3184030001000000010000115245494e44455253534f5554485041524b026e6c0000020001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +41333 +e06700000001000000000000037777770b6164756c746469616c6572026e6c0000010001 +e06780000001000000020002037777770b6164756c746469616c6572026e6c0000010001c0100002000100015180000d036e7331063234686f7374c01cc01000020001000151800006036e7332c034c03000010001000151800004d5efb10cc04900010001000151800004d5efb10d + +41334 +d78500000001000000000000037777770b6164756c746469616c6572026e6c0000010001 +d78580000001000000020002037777770b6164756c746469616c6572026e6c0000010001c0100002000100015180000d036e7331063234686f7374c01cc01000020001000151800006036e7332c034c03000010001000151800004d5efb10cc04900010001000151800004d5efb10d + +41335 +8b4c00000001000000000000037777770d666f727470616e6e657264656e026e6c0000010001 +8b4c80000001000000020000037777770d666f727470616e6e657264656e026e6c0000010001c01000020001000151800010036e733109666972737466696e64c01ec01000020001000151800006036e7332c036 + +41336 +4d9e00000001000000000001036e733109756e69736f75726365026e6c00000100010000291000000000000000 +4d9e80000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +41337 +92db00000001000000000000037777771168616e64696361702d72696a6e6d6f6e64026e6c0000010001 +92db80000001000000020002037777771168616e64696361702d72696a6e6d6f6e64026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec022c01000020001000151800006036e7332c03ac03600010001000151800004c29f4906c04e00010001000151800004c29fb004 + +41338 +573a00000001000000000000037777770b646972656374776f6e656e026e6c0000010001 +573a80000001000000020000037777770b646972656374776f6e656e026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec037 + +41339 +2ed40000000100000000000003777777086368616e6e656c73026e6c0000010001 +2ed48000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +41340 +101f000000010000000000000377777716686f72757363757273757373656e656e7265697a656e026e6c0000010001 +101f800000010000000200000377777716686f72757363757273757373656e656e7265697a656e026e6c0000010001c0100002000100015180000c026e7306766576696461c027c01000020001000151800006036e7332c03e + +41341 +1c7f0000000100000000000008747269746f6e31310761626e616d726f026e6c0000010001 +1c7f8000000100000002000208747269746f6e31310761626e616d726f026e6c0000010001c0150002000100015180000b0870686f626f733031c015c0150002000100015180000b0870686f626f733032c015c03100010001000151800004a7cac30bc04800010001000151800004a7cac30c + +41342 +d443000000010000000000000d637265796673696e746572696d026e6c0000010001 +d443800000010000000200000d637265796673696e746572696d026e6c0000010001c00c00020001000151800016046e7330310b63726579667367726f757003636f6d00c00c00020001000151800007046e733032c033 + +41343 +2ed40000000100000000000003777777086368616e6e656c73026e6c0000010001 +2ed48000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +41344 +2ed40000000100000000000003777777086368616e6e656c73026e6c0000010001 +2ed48000000100000002000203777777086368616e6e656c73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +41345 +514d000000010000000000000377777708647261746b696e73026e6c0000010001 +514d840300010000000100000377777708647261746b696e73026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +41346 +b57d00000001000000000000086475696e73746565026e6c00000f0001 +b57d80000001000000030003086475696e73746565026e6c00000f0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c0002000100015180000e036e733407737570706f7274c015c0290001000100015180000450f2e002c0460001000100015180000450f2e006c05800010001000151800004c372e6fe + +41347 +e3be00000001000000000000026e730763697374726f6e026e6c0000010001 +e3be80000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +41348 +17d000000001000000000000036e7331056163646973026e6c0000010001 +17d080000001000000020002036e7331056163646973026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a026e7304616e7762c016c00c00010001000151800004c29779fac03800010001000151800004c1ac840a + +41349 +ff4d001000010000000000000774717030333034057471336e6c026e6c0000010001 +ff4d840300010000000100000774717030333034057471336e6c026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +41350 +512900000001000000000000036e733007656173796e6574026e6c0000010001 +512980000001000000020002036e733007656173796e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c2a55e01c03a00010001000151800004c2a55e05 + +41351 +bc0100000001000000000000036e733107656173796e6574026e6c0000010001 +bc0180000001000000020002036e733107656173796e6574026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c2a55e01c00c00010001000151800004c2a55e05 + +41352 +1d5300000001000000000000077765626d61696c07656173796e6574026e6c0000010001 +1d5380000001000000020002077765626d61696c07656173796e6574026e6c0000010001c01400020001000151800006036e7330c014c01400020001000151800006036e7331c014c03000010001000151800004c2a55e01c04200010001000151800004c2a55e05 + +41353 +195c00000001000000000000037777770870616c6573747261026e6c0000010001 +195c80000001000000020001037777770870616c6573747261026e6c0000010001c0100002000100015180000c036e7331056d696c6f73c019c0100002000100015180000d036e7332036b706e036e657400c02d00010001000151800004c1ad56c2 + +41354 +8fc4000000010000000000000462617261026e6c0000010001 +8fc4800000010000000200020462617261026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +41355 +4d9e00000001000000000000036e733109756e69736f75726365026e6c0000010001 +4d9e80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +41356 +41590000000100000000000003777777067765627a696e026e6c0000010001 +41598000000100000002000203777777067765627a696e026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec017c01000020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +41357 +a0800000000100000000000006787334616c6c026e6c00001c0001 +a0808000000100000003000206787334616c6c026e6c00001c0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +41358 +647100000001000000000000037777770b6f7373656b6e617272656e026e6c0000010001 +647180000001000000020002037777770b6f7373656b6e617272656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +41359 +eb160000000100000000000003777777096465636f7265747465026e6c0000010001 +eb168000000100000002000203777777096465636f7265747465026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01ac01000020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +41360 +2de00000000100000000000005646e732d32056c61646f74026e6c0000010001 +2de08000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41361 +b939000000010000000000000377777710677269656b656e6c616e64666f72756d026e6c0000010001 +b939800000010000000300020377777710677269656b656e6c616e64666f72756d026e6c0000010001c0100002000100015180000d036e733106776964657873c021c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c039c03500010001000151800004d4ccc0fcc06a000100010001518000043efa0703 + +41362 +4c950000000100000000000006686f6d652d350774697363616c69026e6c0000010001 +4c958000000100000003000206686f6d652d350774697363616c69026e6c0000010001c0130002000100015180000704616e7331c013c0130002000100015180000704616e7332c013c0130002000100015180001404616e73330a74697363616c696e657402626500c02f00010001000151800004c3f14d38c04200010001000151800004c3f13325 + +41363 +b04f00000001000000000000026e73057377646e73026e6c0000010001 +b04f80000001000000020002026e73057377646e73026e6c0000010001c00f0002000100015180000a036e733103686978c015c00f00020001000151800006036e7332c02dc02900010001000151800004d5a0da0ac03f0001000100015180000451112ec3 + +41364 +565600000001000000000000036e7332057377646e73026e6c0000010001 +565680000001000000020002036e7332057377646e73026e6c0000010001c0100002000100015180000a036e733103686978c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +41365 +a5290000000100000000000003777777046c75747a026e6c0000010001 +a5298000000100000003000203777777046c75747a026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +41366 +ba09000000010000000000000c70726f66657373696f6e616c0462617274026e6c0000010001 +ba09800000010000000200020c70726f66657373696f6e616c0462617274026e6c0000010001c01900020001000151800012036e73310b7669616e6574776f726b73c01ec01900020001000151800006036e7332c036c03200010001000151800004d43d0f08c05000010001000151800004d43d19e2 + +41367 +022a00000001000000000000026e73076e65746c616e64026e6c0000010001 +022a80000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +41368 +7ad700000001000000000000036e7332076e65746c616e64026e6c0000010001 +7ad780000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +41369 +0bd900000001000000000000046e65777306787334616c6c026e6c0000ff0001 +0bd980000001000000030002046e65777306787334616c6c026e6c0000ff0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +41370 +8bb100000001000000000000077765626d61696c05646f786973026e6c0000010001 +8bb180000001000000020000077765626d61696c05646f786973026e6c0000010001c01400020001000151800012036e73310871346d6174696373036e657400c01400020001000151800006036e7332c032 + +41371 +188c0000000100000000000006616c7469756d026e6c00000f0001 +188c8000000100000002000206616c7469756d026e6c00000f0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +41372 +28000000000100000000000008626269742d6e74340462626974026e6c0000010001 +28008000000100000002000208626269742d6e74340462626974026e6c0000010001c01500020001000151800008056e65743031c015c01500020001000151800002c00cc02e00010001000151800004c1ad5403c00c00010001000151800004c1ad540c + +41373 +f5330000000100000000000003777777086575726f6b6c696b026e6c0000010001 +f5338000000100000002000103777777086575726f6b6c696b026e6c0000010001c0100002000100015180000e026e73086575726f636c6978c019c01000020001000151800012036e7332086575726f636c697803636f6d00c02d00010001000151800004d47bc685 + +41374 +7bc900000001000000000000085f6b706173737764045f74637003504632026e6c0000060001 +7bc984030001000000010000085f6b706173737764045f74637003504632026e6c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +41375 +ce680000000100000000000010766964656f2d6d75736963706c617a61026e6c00000f0001 +ce688000000100000003000310766964656f2d6d75736963706c617a61026e6c00000f0001c00c00020001000151800014026e730e61726765776562686f7374696e67c01dc00c00020001000151800006036e7330c034c00c00020001000151800006036e7333c034c03100010001000151800004c3561682c05100010001000151800004c3561683c06300010001000151800004d5de0bfa + +41376 +7dfe00100001000000000001036e733104686f6d65026e6c00000100010000290800000080000000 +7dfe80000001000000030004036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +41377 +beff00100001000000000001036e733104686f6d65026e6c00002600010000290800000080000000 +beff80000001000000030004036e733104686f6d65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +41378 +6f8e00100001000000000001036e733204686f6d65026e6c00000100010000290800000080000000 +6f8e80000001000000030004036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +41379 +9bed00100001000000000001036e733204686f6d65026e6c00002600010000290800000080000000 +9bed80000001000000030004036e733204686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b0000291000000000000000 + +41380 +558f00100001000000000001036e733304686f6d65026e6c00000100010000290800000080000000 +558f80000001000000030004036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +41381 +2ca000100001000000000001036e733304686f6d65026e6c00002600010000290800000080000000 +2ca080000001000000030004036e733304686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b0000291000000000000000 + +41382 +762000000001000000000000037777770e61636461656e64656d756e6e696b026e6c0000010001 +762080000001000000020000037777770e61636461656e64656d756e6e696b026e6c0000010001c010000200010001518000140575646e733108756c747261646e73036e657400c010000200010001518000080575646e7332c039 + +41383 +965000100001000000000001036e733404686f6d65026e6c00000100010000290800000080000000 +965080000001000000030004036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +41384 +65fb00100001000000000001036e733404686f6d65026e6c00002600010000290800000080000000 +65fb80000001000000030004036e733404686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b0000291000000000000000 + +41385 +c53900000001000000000000026e73056e65726f63026e6c0000010001 +c53980000001000000020002026e73056e65726f63026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d434010ac03700010001000151800004d434000a + +41386 +224f00000001000000000000036e7332056e65726f63026e6c0000010001 +224f80000001000000020002036e7332056e65726f63026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004d434010ac00c00010001000151800004d434000a + +41387 +4bb200000001000000000000037777770d6c7564676572636f6c6c656765026e6c0000010001 +4bb280000001000000020002037777770d6c7564676572636f6c6c656765026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c01ec01000020001000151800006036e7332c036c0320001000100015180000450416028c04d00010001000151800004c356780c + +41388 +c49c00000001000000000000036e73310b7472616374696f6e2d6974026e6c0000010001 +c49c80000001000000020000036e73310b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +41389 +710900000001000000000000036e73320b7472616374696f6e2d6974026e6c0000010001 +710980000001000000020000036e73320b7472616374696f6e2d6974026e6c0000010001c01000020001000151800014036e73310a676c617373686f757365036e657400c01000020001000151800006036e7332c034 + +41390 +ac1c0000000100000000000009686167656c736c616703687562026e6c0000010001 +ac1c8000000100000002000209686167656c736c616703687562026e6c0000010001c0160002000100015180000704646e7331c016c0160002000100015180000c04646e73320470696e73c01ac02e00010001000151800004d9c26d0fc04100010001000151800004d9c26002 + +41391 +6ee700000001000000000000085f6b706173737764045f75647003504632026e6c0000060001 +6ee784030001000000010000085f6b706173737764045f75647003504632026e6c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +41392 +c82c000000010000000000000f776573746c616e6474656c65636f6d026e6c00000f0001 +c82c800000010000000200020f776573746c616e6474656c65636f6d026e6c00000f0001c00c0002000100015180000a026e730469636d63c01cc00c00020001000151800006036e7332c033c030000100010001518000043e643805c046000100010001518000043e643806 + +41393 +18000000000100000000000003777777127a756964776573742d6e656465726c616e64026e6c0000010001 +18008000000100000002000003777777127a756964776573742d6e656465726c616e64026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c03b + +41394 +8d3d00000001000000000000036e733104686f6d65026e6c0000010001 +8d3d80000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +41395 +e5ae00000001000000000000036e733204686f6d65026e6c0000010001 +e5ae80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +41396 +306100000001000000000000036e733104686f6d65026e6c0000260001 +306180000001000000030003036e733104686f6d65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +41397 +b96500000001000000000000036e733204686f6d65026e6c0000260001 +b96580000001000000030003036e733204686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +41398 +4c9100000001000000000000036e733304686f6d65026e6c0000260001 +4c9180000001000000030003036e733304686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +41399 +335600000001000000000000036e733304686f6d65026e6c0000010001 +335680000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +41400 +c8a300000001000000000000036e733404686f6d65026e6c0000010001 +c8a380000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +41401 +3fca00000001000000000000036e733404686f6d65026e6c0000260001 +3fca80000001000000030003036e733404686f6d65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +41402 +5e2c0000000100000000000006706f74696765056b6e657573026e6c0000010001 +5e2c8000000100000002000006706f74696765056b6e657573026e6c0000010001c01300020001000151800013036e733109752d73657276657273036e657400c01300020001000151800006036e7332c031 + +41403 +9ca500000001000000000000036e73310470696e65026e6c0000010001 +9ca580000001000000020002036e73310470696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +41404 +947300000001000000000000036e6967026e6c00000f0001 +947380000001000000020002036e6967026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41405 +071900000001000000000000037777770d726164696f7468657261706965026e6c0000010001 +071980000001000000020002037777770d726164696f7468657261706965026e6c0000010001c0100002000100015180000c026e730674656c6c7573c01ec01000020001000151800006036e7332c035c032000100010001518000043e3a4cc8c04a000100010001518000043e3a4cc9 + +41406 +0ccc00000001000000000000036e73310a74727565736572766572026e6c0000010001 +0ccc80000001000000030003036e73310a74727565736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef8003c03d00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +41407 +0ccd00000001000000000000036e73320a74727565736572766572026e6c0000010001 +0ccd80000001000000030003036e73320a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02f00010001000151800004d5ef8003c00c00010001000151800004d5efb004c04f00010001000151800004d5ef8005 + +41408 +0cce00000001000000000000036e73330a74727565736572766572026e6c0000010001 +0cce80000001000000030003036e73330a74727565736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02f00010001000151800004d5ef8003c04100010001000151800004d5efb004c00c00010001000151800004d5ef8005 + +41409 +32c3000000010000000000000b6c697361686f6c64696e67026e6c0000020001 +32c3800000010000000200020b6c697361686f6c64696e67026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +41410 +8a9500000001000000000000037777770b746e742d696e6e69676874026e6c0000010001 +8a9580000001000000020000037777770b746e742d696e6e69676874026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c034 + +41411 +ef080000000100000000000008686f73746e616d650462696e640000100003 +ef088000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41412 +92e500000001000000000000037777770574656b7374026e6c0000010001 +92e580000001000000020001037777770574656b7374026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c016c01000020001000151800011036e7332076e6564636f6d70036f726700c02a00010001000151800004c3c1a80d + +41413 +c72b00000001000000000000036e73310767617574656e67026e6c0000010001 +c72b80000001000000020000036e73310767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41414 +edfd00000001000000000000036e73320767617574656e67026e6c0000010001 +edfd80000001000000020000036e73320767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41415 +ef0f00000001000000000000076172636869766507616e74656e6e61026e6c0000010001 +ef0f80000001000000020001076172636869766507616e74656e6e61026e6c0000010001c01400020001000151800005026e73c014c0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03000010001000151800004d995dd13 + +41416 +e27900000001000000000000036e7332066c696e6b7570026e6c0000010001 +e27980000001000000030003036e7332066c696e6b7570026e6c0000010001c0100002000100015180000b04646e733103766970c017c0100002000100015180000704646e7332c030c0100002000100015180000704646e7333c030c02b00010001000151800004d44fe803c04200010001000151800004c3f5c782c05500010001000151800004d44ff303 + +41417 +32dc0000000100000000000003646e73097469736f6e6c696e65026e6c0000010001 +32dc8000000100000002000203646e73097469736f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02e00010001000151800004d5e382b4c04000010001000151800004d5e38d7c + +41418 +295100000001000000000000037777770574656b7374026e6c0000010001 +295180000001000000020001037777770574656b7374026e6c0000010001c0100002000100015180000e036e7331076e6564636f6d70c016c01000020001000151800011036e7332076e6564636f6d70036f726700c02a00010001000151800004c3c1a80d + +41419 +529b00000001000000000000037777770972746c6e6965757773026e6c0000010001 +529b80000001000000020001037777770972746c6e6965757773026e6c0000010001c01000020001000151800018036e733111686f6c6c616e646d6564696167726f6570c01ac01000020001000151800011036e733207636c742d756661036e657400c02e00010001000151800004c3c1ca77 + +41420 +dd470000000100000000000004616a6178066e696b686566026e6c0000010001 +dd478000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +41421 +d1c800000001000000000000036e733109666972737466696e64026e6c0000010001 +d1c880000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41422 +d1c900000001000000000000036e733209666972737466696e64026e6c0000010001 +d1c980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41423 +6b080000000100000000000006626570706965086d6963726f776562026e6c0000010001 +6b088000000100000002000206626570706965086d6963726f776562026e6c0000010001c0130002000100015180000a036e7331036e7873c01cc01300020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +41424 +d1cb00000001000000000000036e733109666972737466696e64026e6c0000010001 +d1cb80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41425 +d1cc00000001000000000000036e733209666972737466696e64026e6c0000010001 +d1cc80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +41426 +b5c10000000100000000000005656e65636f026e6c00000f0001 +b5c18000000100000002000205656e65636f026e6c00000f0001c00c0002000100015180000c04646e73310470696e73c012c00c0002000100015180000704646e7332c02bc02600010001000151800004d9c26101c03e00010001000151800004d9c26002 + +41427 +292200000001000000000000046669706e026e6c0000060001 +292284030001000000010000046669706e026e6c0000060001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +41428 +ac1c000000010000000000000377777712666f727469736d61726174686f6e72756e73026e6c0000010001 +ac1c800000010000000200020377777712666f727469736d61726174686f6e72756e73026e6c0000010001c0100002000100015180000d026e7307636f6f6c636f6dc023c01000020001000151800006036e7332c03ac03700010001000151800004c1ad3506c05000010001000151800004c1ad35c1 + +41429 +9b2500000001000000000000037777770d646174696e6773657276696365026e6c0000010001 +9b2580000001000000030002037777770d646174696e6773657276696365026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +41430 +b4fa00000001000000000000086e6c6e7431303034046669706e026e6c0000060001 +b4fa84030001000000010000086e6c6e7431303034046669706e026e6c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +41431 +02b100000001000000000000076d6567616d6178026e6c00000f0001 +02b180000001000000030001076d6567616d6178026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +41432 +195300000001000000000000046a6f616e026e6c00000f0001 +195380000001000000020002046a6f616e026e6c00000f0001c00c00020001000151800011036e73310a696e32686f7374696e67c011c00c00020001000151800006036e7332c029c02500010001000151800004d43d3362c04200010001000151800004d43d3363 + +41433 +f15e000000010000000000000774656c6c65727307756e692d6f6e65026e6c0000010001 +f15e800000010000000200000774656c6c65727307756e692d6f6e65026e6c0000010001c01400020001000151800013036e733109752d73657276657273036e657400c01400020001000151800006036e7332c034 + +41434 +eeca0000000100000000000003777777136765736368696564656e697368697070696573026e6c0000010001 +eeca8403000100000001000003777777136765736368696564656e697368697070696573026e6c0000010001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +41435 +b82b275f8011859878e700000101080a11235ff20128080f +b82ba1010000000000000000 + +41436 +7459000000010000000000000a696e74657267616d6d6103676973026e6c0000010001 +7459800000010000000200000a696e74657267616d6d6103676973026e6c0000010001c01700020001000151800014036e73310a74656e73696e67736b7303636f6d00c01700020001000151800006036e7332c033 + +41437 +ce8a0000000100000000000006736572766572026462036b766b026e6c0000010001 +ce8a8000000100000002000206736572766572026462036b766b026e6c0000010001c0160002000100015180000d026e73076b6e6f77617265c01ac01600020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +41438 +b82b27608010859878e300000101080a11235ff301280811 +b82ba1010000000000000000 + +41439 +f6c100000001000000000000037777770c666579656e6f6f72646e6574026e6c0000010001 +f6c180000001000000020000037777770c666579656e6f6f72646e6574026e6c0000010001c01000020001000151800010036e733106726f75746974036e657400c01000020001000151800006036e7332c035 + +41440 +7e7c00000001000000000000106472756b6b6572696a72757467657273026e6c00001c0001 +7e7c80000001000000020002106472756b6b6572696a72757467657273026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc01dc00c00020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +41441 +658c00000001000000000000037777770a6176656e747572696a6e026e6c0000010001 +658c80000001000000020002037777770a6176656e747572696a6e026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4b20403c04800010001000151800004d5881e45 + +41442 +176b0000000100000000000003656c3107696e7465727873026e6c0000010001 +176b8000000100000002000203656c3107696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +41443 +d6ed0000000100000000000003656c3207696e7465727873026e6c0000010001 +d6ed8000000100000002000203656c3207696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +41444 +02bf0000000100000000000003656c3307696e7465727873026e6c0000010001 +02bf8000000100000002000203656c3307696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +41445 +fa860000000100000000000003656c3407696e7465727873026e6c0000010001 +fa868000000100000002000203656c3407696e7465727873026e6c0000010001c0100002000100015180000f036e733008696e7465722d7873c018c01000020001000151800006036e7331c030c02c000100010001518000043e0452abc047000100010001518000043e0452ac + +41446 +fd430000000100000000000005646e732d3708696e7465722d7873026e6c0000010001 +fd438000000100000002000205646e732d3708696e7465722d7873026e6c0000010001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +41447 +e1b70000000100000000000005646e732d3808696e7465722d7873026e6c0000010001 +e1b78000000100000002000205646e732d3808696e7465722d7873026e6c0000010001c01200020001000151800006036e7330c012c01200020001000151800006036e7331c012c02f000100010001518000043e0452abc041000100010001518000043e0452ac + +41448 +31ac000000010000000000000567736d6e75026e6c00000f0001 +31ac800000010000000200010567736d6e75026e6c00000f0001c00c0002000100015180000a036e733303777873c012c00c00020001000151800006036e7334c02ac03c00010001000151800004d5ef9a65 + +41449 +2a640000000100000000000009652d6c756e61746963026e6c0000010001 +2a648000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41450 +1a580000000100000000000009652d6c756e61746963026e6c0000010001 +1a588000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41451 +2824000000010000000000000974656c656b6162656c026e6c00000f0001 +2824800000010000000200020974656c656b6162656c026e6c00000f0001c00c0002000100015180000a036e733103757063c016c00c0002000100015180000e046e733032066368656c6c6fc016c02a00010001000151800004d48e1c42c04000010001000151800004d4534483 + +41452 +024b0000000100000000000009652d6c756e61746963026e6c0000010001 +024b8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41453 +ba9b00000001000000000000106b6f6f726e69657577656d757a69656b026e6c00001c0001 +ba9b80000001000000020001106b6f6f726e69657577656d757a69656b026e6c00001c0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01dc04a00010001000151800004c2860043 + +41454 +b2c200000001000000000000026e730c696e746572636f6e6e656374026e6c0000260001 +b2c280000001000000030003026e730c696e746572636f6e6e656374026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +41455 +d96100000001000000000000036e73320c696e746572636f6e6e656374026e6c0000260001 +d96180000001000000030003036e73320c696e746572636f6e6e656374026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03100010001000151800004d453c005c00c00010001000151800004d453c006c05000010001000151800004d453c805 + +41456 +98f000000001000000000000036e73330c696e746572636f6e6e656374026e6c0000260001 +98f080000001000000030003036e73330c696e746572636f6e6e656374026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03100010001000151800004d453c005c04200010001000151800004d453c006c00c00010001000151800004d453c805 + +41457 +4d7b0000000100000000000007646a736a6f72730b6d61616b746d757a69656b026e6c0000010001 +4d7b8000000100000002000007646a736a6f72730b6d61616b746d757a69656b026e6c0000010001c01400020001000151800013036e733009696e7465726c697a65036e657400c01400020001000151800006036e7331c038 + +41458 +4ca800000001000000000000046d61696c08656d64656a6f6e67026e6c00000f0001 +4ca880000001000000030000046d61696c08656d64656a6f6e67026e6c00000f0001c0110002000100015180000f036e733106736b796e657402626500c01100020001000151800006036e7332c032c01100020001000151800006036e7333c032 + +41459 +7fe1000000010000000000000d756e6978616476616e636564320b7669616e6574776f726b73026e6c00000f0001 +7fe1800000010000000200020d756e6978616476616e636564320b7669616e6574776f726b73026e6c00000f0001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac03a00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +41460 +7b6600000001000000000000056e666b7076026e6c00001c0001 +7b6680000001000000020000056e666b7076026e6c00001c0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c029 + +41461 +c1ec0000000100000000000003777777096575726f7061636172026e6c0000010001 +c1ec8000000100000002000003777777096575726f7061636172026e6c0000010001c0100002000100015180000f036e733105617363696f036e657400c01000020001000151800006036e7332c032 + +41462 +ac7000100001000000000001077468756d62733202656c026e6c00000100010000290800000080000000 +ac7080000001000000020003077468756d62733202656c026e6c0000010001c0140002000100015180000e036e733007686f73746c6162c017c01400020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad410000291000000000000000 + +41463 +b05900000001000000000000037777770b6765627276616e67656e74026e6c0000010001 +b05980000001000000020001037777770b6765627276616e67656e74026e6c0000010001c01000020001000151800017026e7311656e7465727072697365686f7374696e67c01cc0100002000100015180000b026e73026e6c036e657400c03000010001000151800004d5358e02 + +41464 +8858000000010000000000000377777709666f746f67696c6465026e6c0000010001 +8858800000010000000200000377777709666f746f67696c6465026e6c0000010001c01000020001000151800011036e733107646f6f74616c6c03636f6d00c01000020001000151800006036e7332c032 + +41465 +377f00000001000000000000037777770a64726f6d656461726973026e6c0000010001 +377f80000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +41466 +563800000001000000000000077468756d62733202656c026e6c0000010001 +563880000001000000020002077468756d62733202656c026e6c0000010001c0140002000100015180000e036e733007686f73746c6162c017c01400020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +41467 +32eb00000001000000000000036e733203757063026e6c0000010001 +32eb80000001000000030003036e733203757063026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c02800010001000151800004d48e1c42c03a00010001000151800004d4534483c054000100010001518000043e6c0141 + +41468 +71e10000000100000000000008686f73746e616d650462696e640000100003 +71e18000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41469 +54dc0000000100000000000008686f73746e616d650462696e640000100003 +54dc8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41470 +23320000000100000000000005646e732d31056c61646f74026e6c0000010001 +23328000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41471 +d65a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +d65a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41472 +ea570000000100000000000003777777056e6976656c026e6c0000010001 +ea578000000100000002000203777777056e6976656c026e6c0000010001c01000020001000151800009067572616e6961c010c0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c2abc8e2c03f00010001000151800004c0576a65 + +41473 +97580000000100000000000005646e732d31056c61646f74026e6c0000010001 +97588000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41474 +8ba20000000100000000000005646e732d32056c61646f74026e6c0000010001 +8ba28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41475 +e0e800000001000000000000066172626f6465026e6c00001c0001 +e0e880000001000000020002066172626f6465026e6c00001c0001c00c00020001000151800012026e730c696e746572636f6e6e656374c013c00c00020001000151800006036e7332c02ac02700010001000151800004d453c005c04500010001000151800004d453c006 + +41476 +ed9f00000001000000000000056d63646f73026e6c0000010001 +ed9f80000001000000020001056d63646f73026e6c0000010001c00c0002000100015180000c04666e657404666e6574c012c00c0002000100015180000d036e7332036b706e036e657400c02600010001000151800004c1ac2b01 + +41477 +958000000001000000000000036e733303777873026e6c0000010001 +958080000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +41478 +5a8000000001000000000000056c79636f73026e6c0000ff0001 +5a8080000001000000020000056c79636f73026e6c0000ff0001c00c0002000100015180001106646e73312d31056c79636f7302646500c00c0002000100015180000906646e73322d31c02d + +41479 +d7e100000001000000000000056c79636f73026e6c0000010001 +d7e180000001000000020000056c79636f73026e6c0000010001c00c0002000100015180001106646e73312d31056c79636f7302646500c00c0002000100015180000906646e73322d31c02d + +41480 +5d0d0000000100000000000006636861726973026e6c0000010001 +5d0d8000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +41481 +6fb700000001000000000000037777770b6b6c616173616c74656e61026e6c0000010001 +6fb780000001000000020002037777770b6b6c616173616c74656e61026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c01cc01000020001000151800006036e7332c034c03000010001000151800004d5c9e8c8c05000010001000151800004d5c9e8c9 + +41482 +c2aa000000010000000000000477697368026e6c00000f0001 +c2aa800000010000000300020477697368026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +41483 +c29600000001000000000000037777770b303930362d72756b6b656e026e6c0000010001 +c29680000001000000020000037777770b303930362d72756b6b656e026e6c0000010001c01000020001000151800012036e73310878656e6f73697465036e657400c01000020001000151800006036e7332c034 + +41484 +d9ba0000000100000000000003777777077269636172646f026e6c0000010001 +d9ba8000000100000003000303777777077269636172646f026e6c0000010001c0100002000100015180000a036e733103676d74c018c01000020001000151800006036e7332c030c01000020001000151800006036e7333c030c02c00010001000151800004d44eb80dc042000100010001518000043ea6a022c05400010001000151800004d554c485 + +41485 +7e030000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7e038000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41486 +cbbc00000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +cbbc80000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +41487 +6f3200000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +6f3280000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +41488 +0bd300000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +0bd380000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +41489 +1e0b00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +1e0b80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +41490 +50b400000001000000000000046e696574026e6c00000f0001 +50b480000001000000020002046e696574026e6c00000f0001c00c0002000100015180000e036e73310762617365776562c011c00c00020001000151800006036e7332c029c02500010001000151800004d535d035c03f00010001000151800004d535d034 + +41491 +4a4a01000001000000000000013203313434033137360331393307696e2d61646472046172706100000c0001 +4a4a81020001000000000000013203313434033137360331393307696e2d61646472046172706100000c0001 + +41492 +091000000001000000000000037777770e68616c6d616b656c61617264696a026e6c0000010001 +091080000001000000020002037777770e68616c6d616b656c61617264696a026e6c0000010001c0100002000100015180000b04646e733103627367c01fc0100002000100015180000704646e7332c038c033000100010001518000043e3a8553c04a000100010001518000043e3a8554 + +41493 +22760000000100000000000003667331056c76706161026e6c0000060001 +22768000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +41494 +08e400000001000000000000037777770b617564696f636f76657273026e6c0000010001 +08e480000001000000020000037777770b617564696f636f76657273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +41495 +b06e00000001000000000000036e733103777572026e6c0000010001 +b06e80000001000000020002036e733103777572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000489e0f88dc0360001000100015180000489e0f88e + +41496 +86a300000001000000000000024e530743495354524f4e024e4c0000010001 +86a380000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +41497 +2a3a0000000100000000000006746f65746572026e6c00000f0001 +2a3a8000000100000002000206746f65746572026e6c00000f0001c00c00020001000151800010026e730a666c7569746d65646961c013c00c00020001000151800006036e7332c02ac0270001000100015180000451045c78c0430001000100015180000451046032 + +41498 +a34500000001000000000000066163762d6276026e6c00000f0001 +a34580000001000000020002066163762d6276026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +41499 +6e050000000100000000000005646e732d31056c61646f74026e6c0000010001 +6e058000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41500 +be2f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +be2f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41501 +58550000000100000000000008696e7465726d6564026e6c00000f0001 +58558000000100000002000208696e7465726d6564026e6c00000f0001c00c0002000100015180000b036e7331046b65726ec015c00c00020001000151800006036e7332c02dc02900010001000151800004d9aa2a2cc04000010001000151800004d4cccdb2 + +41502 +f29e000000010000000000000c6d6163726f7474657264616d026e6c0000ff0001 +f29e800000010000000200000c6d6163726f7474657264616d026e6c0000ff0001c00c00020001000151800011036e7333076361706361766503636f6d00c00c00020001000151800006036e7334c031 + +41503 +0e8b000000010000000000000561636b6572026e6c00001c0001 +0e8b800000010000000200000561636b6572026e6c00001c0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c029 + +41504 +4ad200000001000000000000096d61696c72656c617906706c616e6574026e6c0000010001 +4ad280000001000000030003096d61696c72656c617906706c616e6574026e6c0000010001c0160002000100015180000b046e73303803777873c01dc01600020001000151800007046e733039c036c01600020001000151800006036e7334c036c03100010001000151800004c3790128c04800010001000151800004c3790143c05b00010001000151800004d5ef9a65 + +41505 +fe020000000100000000000005646e732d31056c61646f74026e6c0000010001 +fe028000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41506 +f7750000000100000000000005646e732d32056c61646f74026e6c0000010001 +f7758000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41507 +df7000000001000000000000036e733103617474026e6c0000010001 +df7080000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +41508 +a9ca00000001000000000000036e73310c666173747365727665723139026e6c0000260001 +a9ca80000001000000020002036e73310c666173747365727665723139026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4f0e1c03f0001000100015180000442a4f0ec + +41509 +143b000000010000000000000462617274026e6c00000f0001 +143b800000010000000200020462617274026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c011c00c00020001000151800006036e7332c029c02500010001000151800004d43d0f08c04300010001000151800004d43d19e2 + +41510 +704800000001000000000000037777770970616b6a6567656c64026e6c0000010001 +704880000001000000020002037777770970616b6a6567656c64026e6c0000010001c01000020001000151800010036e733109747265786966646e73c01ac01000020001000151800006036e7332c032c02e000100010001518000043ed45d12c04a000100010001518000043ed45d13 + +41511 +64240000000100000000000004646e733203627367026e6c0000010001 +64248000000100000002000204646e733203627367026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc029000100010001518000043e3a8553c00c000100010001518000043e3a8554 + +41512 +51de0000000100000000000004646e733103627367026e6c0000010001 +51de8000000100000002000204646e733103627367026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c000100010001518000043e3a8553c037000100010001518000043e3a8554 + +41513 +aa36000000010000000000000a746865686973746f7279026e6c00000f0001 +aa36800000010000000200020a746865686973746f7279026e6c00000f0001c00c0002000100015180000d026e73076b6e6f77617265c017c00c00020001000151800006036e7332c02ec02b00010001000151800004c3402003c04400010001000151800004c340202b + +41514 +f3970000000100000000000005646e732d31056c61646f74026e6c0000010001 +f3978000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41515 +387a0000000100000000000005736d7470320a696368746875732d6873026e6c0000010001 +387a8000000100000003000305736d7470320a696368746875732d6873026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c0120002000100015180000e036e733107737572666e6574c01dc03100010001000151800004c2ab25f0c04300010001000151800004c2ab25dec05500010001000151800004c0576a65 + +41516 +f0700000000100000000000005736d7470320a696368746875732d6873026e6c00001c0001 +f0708000000100000003000305736d7470320a696368746875732d6873026e6c00001c0001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c0120002000100015180000e036e733107737572666e6574c01dc03100010001000151800004c2ab25f0c04300010001000151800004c2ab25dec05500010001000151800004c0576a65 + +41517 +0a1600000001000000000000036e73330767617574656e67026e6c0000010001 +0a1680000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41518 +ea0c00000001000000000000036e73340767617574656e67026e6c0000010001 +ea0c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41519 +6d8a0000000100000000000009652d6c756e61746963026e6c0000010001 +6d8a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41520 +ac3e0000000100000000000006726c3030303107756e696d616173026e6c0000010001 +ac3e8000000100000003000306726c3030303107756e696d616173026e6c0000010001c01300020001000151800002c00cc0130002000100015180000906696361737332c013c0130002000100015180000e036e733107737572666e6574c01bc00c0001000100015180000489780101c03d0001000100015180000489780105c05200010001000151800004c0576a65 + +41521 +14f5000000010000000000000669636173733207756e696d616173026e6c0000010001 +14f5800000010000000300030669636173733207756e696d616173026e6c0000010001c0130002000100015180000906726c30303031c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01bc02f0001000100015180000489780101c00c0001000100015180000489780105c05200010001000151800004c0576a65 + +41522 +fa6c0000000100000000000008756d64633030303307756e696d616173026e6c0000010001 +fa6c8000000100000003000308756d64633030303307756e696d616173026e6c0000010001c0150002000100015180000906726c30303031c015c0150002000100015180000906696361737332c015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000489780101c0460001000100015180000489780105c05b00010001000151800004c0576a65 + +41523 +57aa0000000100000000000008756d64633030303107756e696d616173026e6c0000010001 +57aa8000000100000003000308756d64633030303107756e696d616173026e6c0000010001c0150002000100015180000906726c30303031c015c0150002000100015180000906696361737332c015c0150002000100015180000e036e733107737572666e6574c01dc0310001000100015180000489780101c0460001000100015180000489780105c05b00010001000151800004c0576a65 + +41524 +894d00000001000000000000076e65747261636f026e6c00000f0001 +894d80000001000000020001076e65747261636f026e6c00000f0001c00c0002000100015180000a036e733303777873c014c00c00020001000151800006036e7334c02cc03e00010001000151800004d5ef9a65 + +41525 +903900000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +903980000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +41526 +0173000000010000000000000377777703677a6c026e6c0000010001 +0173800000010000000300010377777703677a6c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc014c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c046c028000100010001518000043efa0202 + +41527 +0ffc000000010000000000000b73696e7465726b6c6161730a6a6f7577706167696e61026e6c0000010001 +0ffc800000010000000200000b73696e7465726b6c6161730a6a6f7577706167696e61026e6c0000010001c0180002000100015180000e036e73330767617574656e67c023c01800020001000151800006036e7334c03b + +41528 +06430000000100000000000008657863656c73756d026e6c0000010001 +06438000000100000002000208657863656c73756d026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +41529 +2ed60000000100000000000003667331056c76706161026e6c0000060001 +2ed68000000100000002000203667331056c76706161026e6c0000060001c0100002000100015180000c036e73310573796e7267c016c01000020001000151800006036e7332c02ec02a0001000100015180000452c04b0bc0420001000100015180000452c04b0c + +41530 +bb430010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000080000000 +bb438000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +41531 +ab990000000100000000000004414a4158064e494b484546024e4c0000010001 +ab998000000100000004000204414a4158064e494b484546024e4c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +41532 +0c1a000000010000000000000674656c6c6532026e6c0000010001 +0c1a840300010000000100000674656c6c6532026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +41533 +e4ef28000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d736463730a63656465726472656566026e6c000021000100000258001f000000640cc40963656465722d6463310a63656465726472656566026e6c00 +e4efa8040000000000000000 + +41534 +6ea4000000010000000000000377777707726567726f7570026e6c0000010001 +6ea4800000010000000300020377777707726567726f7570026e6c0000010001c0100002000100015180000f036e7331086c65617365776562c018c01000020001000151800006036e7332c030c01000020001000151800012036e7333086c65617365776562036f726700c02c000100010001518000043ed44079c047000100010001518000043ed4407a + +41535 +ab4b0000000100000000000003777777046b637a79026e6c0000010001 +ab4b8000000100000002000203777777046b637a79026e6c0000010001c01000020001000151800013046e7330310b66616972686f7374696e67c015c01000020001000151800007046e733032c02ec02900010001000151800004d943e743c0480001000100015180000440f71c2b + +41536 +5977000000010000000000000775746572636874026e6c0000010001 +5977840300010000000100000775746572636874026e6c0000010001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +41537 +1f8d00000001000000000000036e733107737572666e6574026e6c0000010001 +1f8d80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +41538 +000000007002fca499ac00000204057e01010402 +000080010000000000000000 + +41539 +573500000001000000000000026e7308696e637265617365026e6c0000010001 +573580000001000000020002026e7308696e637265617365026e6c0000010001c00f0002000100015180000f026e7309657870656469656e74c018c00f0002000100015180000e036e733107656173796e6574c018c02c00010001000151800004d400e7c4c04700010001000151800004c2a55e05 + +41540 +c31c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +c31c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41541 +c31d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c31d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41542 +b82fe4a45010fca429560000000000000000 + + +41543 +4ed7000000010000000000000377777703726574026e6c0000010001 +4ed7800000010000000300030377777703726574026e6c0000010001c0100002000100015180000f036e7331086e6f766178657373c014c01000020001000151800006036e7332c02cc01000020001000151800006036e7333c02cc02800010001000151800004d5c98015c04300010001000151800004d5c9bf12c05500010001000151800004d5ef9c26 + +41544 +b82fe4a45018fca4909e000000927690000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd22403c4ea20003000000334e544c4d535350000100000097b208e00a000a0029000000090009002000000043454445522d444331434544455244524545460000 + + +41545 +8f3100000001000000000000076c6973646f6e6b026e6c0000020001 +8f3180000001000000020002076c6973646f6e6b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +41546 +b82fe4b25011fc9628c10000000000000000 + + +41547 +f51000000001000000000000026872026e6c00000f0001 +f51080000001000000020000026872026e6c00000f0001c00c00020001000151800013036e7331026e6c0669676e697465036e657400c00c00020001000151800006036e7332c027 + +41548 +fd7d00000001000000000000036e733103647768026e6c0000010001 +fd7d80000001000000020002036e733103647768026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efb308c03600010001000151800004d5efb303 + +41549 +bad900000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +bad980000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41550 +2c1d00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +2c1d80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41551 +b82fe4b35010fc9628c00000000000000000 + + +41552 +000000007002fca4a2d800000204057e01010402 +000080010000000000000000 + +41553 +d3d1000000010000000000000377777711746875697377696e6b656c617761726473026e6c0000010001 +d3d1800000010000000200000377777711746875697377696e6b656c617761726473026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c03b + +41554 +b830dc6f5010fca43ab60000000000000000 + + +41555 +254300000001000000000000086365726265727573046b6e7662026e6c0000010001 +254380000001000000020000086365726265727573046b6e7662026e6c0000010001c0150002000100015180000f036e7333057477696d6d036e657400c01500020001000151800006036e7337c032 + +41556 +273200000001000000000000026e73066863636e6574026e6c0000010001 +273280000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +41557 +03c400000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +03c480000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41558 +eeaf0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +eeaf8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +41559 +b830dc6f5018fca4199f00000092fff0000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd22403c4ea20003000000334e544c4d535350000100000097b208e00a000a0029000000090009002000000043454445522d444331434544455244524545460000 + + +41560 +425c00000001000000000000046669646f026e6c0000ff0001 +425c80000001000000030002046669646f026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c029c02500010001000151800004d4ccc0fcc05a000100010001518000043efa0703 + +41561 +904200000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +904280000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +41562 +64780000000100000000000003777777086e6f6b696166616e026e6c0000010001 +64788000000100000003000203777777086e6f6b696166616e026e6c0000010001c0100002000100015180000f036e7331086f76657272696465c019c01000020001000151800006036e7333c031c01000020001000151800006036e7332c031c02d00010001000151800004d4ccd5b5c0480001000100015180000451ab0942 + +41563 +b830dc7d5011fc963a210000000000000000 + + +41564 +c3200000000100000000000005646e732d31056c61646f74026e6c0000010001 +c3208000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41565 +c3210000000100000000000005646e732d32056c61646f74026e6c0000010001 +c3218000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41566 +1a1300000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +1a1380000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41567 +b830dc7e5010fc963a200000000000000000 + + +41568 +000000007002fca4bdb400000204057e01010402 +000080010000000000000000 + +41569 +03ea000000010000000000000377777709656e7465727465656e026e6c0000010001 +03ea800000010000000300020377777709656e7465727465656e026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ac01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c032c02e000100010001518000045054e055c06700010001000151800004d4ccc655 + +41570 +5b93000000010000000000000e6c69736d616e656e6c69736d616e026e6c0000020001 +5b93800000010000000200020e6c69736d616e656e6c69736d616e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01bc00c00020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +41571 +b831aa875010fca487790000000000000000 + + +41572 +b831aa875018fca4dd02000000928950000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd22403c4ea20003000000334e544c4d535350000100000097b208e00a000a0029000000090009002000000043454445522d444331434544455244524545460000 + + +41573 +b1c700000001000000000000037777770863616c6c63617368026e6c0000010001 +b1c780000001000000030002037777770863616c6c63617368026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c019c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c031c02d000100010001518000045054e055c06600010001000151800004d4ccc655 + +41574 +b831aa955011fc9686e40000000000000000 + + +41575 +00000000b002832c74fc0000010303010101080a11236035000000000101040202040564 +000080010000000000000000 + +41576 +b8324e3480108598a35a00000101080a1123603601280812 +b832c8010000000000000000 + +41577 +0685000000010000000000001077696c6c656d656e6a616e6e656e6b6503746d66026e6c0000ff0001 +0685800000010000000200001077696c6c656d656e6a616e6e656e6b6503746d66026e6c0000ff0001c01d0002000100015180000f036e73310571696e6970036e657400c01d00020001000151800006036e7332c039 + +41578 +b831aa965010fc9686e30000000000000000 + + +41579 +0f4600000001000000000000037777770f76616e62696a7374657276656c6474026e6c0000010001 +0f4680000001000000020002037777770f76616e62696a7374657276656c6474026e6c0000010001c01000020001000151800011036e73310a646e7373657276657273c020c01000020001000151800006036e7332c038c034000100010001518000045054ed14c05100010001000151800004d5f72f14 + +41580 +2dd400000001000000000000037777770a776f6c66747261646572026e6c0000010001 +2dd480000001000000020002037777770a776f6c66747261646572026e6c0000010001c01000020001000151800009036e7331026973c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5852102c04400010001000151800004d5c41503 + +41581 +3689000000010000000000000377777709677261746973736d73026e6c0000010001 +3689800000010000000200000377777709677261746973736d73026e6c0000010001c01000020001000151800016036e73310c726567696f686f7374696e6703636f6d00c01000020001000151800006036e7332c032 + +41582 +87cb01000001000000000000026e6c0000060001 +87cb85000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +41583 +3b0d00000001000000000000076b72616e74656e0c7665727a616d656c67696473026e6c0000010001 +3b0d80000001000000020000076b72616e74656e0c7665727a616d656c67696473026e6c0000010001c01400020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01400020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +41584 +de71000000010000000000000377777704616c6469026e6c0000010001 +de71800000010000000200000377777704616c6469026e6c0000010001c0100002000100015180001a046e73303904626e69630b62657274656c736d616e6e02646500c01000020001000151800007046e733137c02e + +41585 +e97900000001000000000000066368656c6c6f026e6c00000f0001 +e97980000001000000030003066368656c6c6f026e6c00000f0001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +41586 +52ca00000001000000000000037777770b67616d65706c616e656574026e6c0000010001 +52ca80000001000000030002037777770b67616d65706c616e656574026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c01cc01000020001000151800006036e7332c034c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03000010001000151800004cf2cd7adc0510001000100015180000452c04365 + +41587 +7d100000000100000000000006636861726973026e6c00000f0001 +7d108000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +41588 +2d7900000001000000000000036e7331076e6574666c6578026e6c0000010001 +2d7980000001000000030003036e7331076e6574666c6578026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c26d5ba8c03a00010001000151800004507f2f25c04c00010001000151800004507ede20 + +41589 +e27100000001000000000000036e7332076e6574666c6578026e6c0000010001 +e27180000001000000030003036e7332076e6574666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02c00010001000151800004c26d5ba8c00c00010001000151800004507f2f25c04c00010001000151800004507ede20 + +41590 +b39300000001000000000000036e7333076e6574666c6578026e6c0000010001 +b39380000001000000030003036e7333076e6574666c6578026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c26d5ba8c03e00010001000151800004507f2f25c00c00010001000151800004507ede20 + +41591 +a8e000000001000000000000026e7306766576696461026e6c0000010001 +a8e080000001000000030002026e7306766576696461026e6c0000010001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +41592 +905700000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +905780000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +41593 +d47000000001000000000000026e7306766576696461026e6c0000260001 +d47080000001000000030002026e7306766576696461026e6c0000260001c00f0002000100015180000d036e733106776964657873c016c00f00020001000151800010036e733206776964657873036e657400c00f00020001000151800006036e7333c02ec02a00010001000151800004d4ccc0fcc05f000100010001518000043efa0703 + +41594 +b56400000001000000000000036e733206766576696461026e6c0000010001 +b56480000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +41595 +ad2100000001000000000000036e733206766576696461026e6c0000260001 +ad2180000001000000030002036e733206766576696461026e6c0000260001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +41596 +09270000000100000000000009636f746563682d6276026e6c00000f0001 +09278000000100000002000009636f746563682d6276026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c030 + +41597 +678b000000010000000000000164026c62057370696c6c026e6c0000010001 +678b800000010000000300020164026c62057370696c6c026e6c0000010001c0110002000100015180000d036e733106776964657873c017c01100020001000151800010036e733206776964657873036e657400c01100020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +41598 +904800000001000000000000037777770a656967656e7374617274026e6c0000010001 +904880000001000000020000037777770a656967656e7374617274026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +41599 +93b300000001000000000000036e7333027a73026e6c00001c0001 +93b380000001000000030003036e7333027a73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02700010001000151800004d5ef829fc03900010001000151800004d5ef8005c00c00010001000151800004d5ef82a0 + +41600 +d3cb00000001000000000000036e7333027a73026e6c0000260001 +d3cb80000001000000030003036e7333027a73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02700010001000151800004d5ef829fc03900010001000151800004d5ef8005c00c00010001000151800004d5ef82a0 + +41601 +e9f800000001000000000000036e7331027a73026e6c00001c0001 +e9f880000001000000030003036e7331027a73026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef829fc03500010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +41602 +dd7d00000001000000000000036e7331027a73026e6c0000260001 +dd7d80000001000000030003036e7331027a73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ef829fc03500010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +41603 +b8db00000001000000000000036e7332027a73026e6c00001c0001 +b8db80000001000000030003036e7332027a73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02700010001000151800004d5ef829fc00c00010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +41604 +39fd00000001000000000000036e7332027a73026e6c0000260001 +39fd80000001000000030003036e7332027a73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02700010001000151800004d5ef829fc00c00010001000151800004d5ef8005c04700010001000151800004d5ef82a0 + +41605 +980800000001000000000000037777770b696b77696c65656e70696c026e6c0000010001 +980880000001000000030002037777770b696b77696c65656e70696c026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01cc01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c034c030000100010001518000045054e055c06900010001000151800004d4ccc655 + +41606 +b91d28000001000000010000026e6c0000060001055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d73646373074f424856534c53026e6c000021000100000258001b00000064018508646330316876736c074f424856534c53026e6c00 +b91da8040000000000000000 + +41607 +c61000000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c61080000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41608 +b3720000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +b3728000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41609 +b8324e34801885988e7200000101080a1123604b01280812008ec200000000010001000000000f313330353637303035383030322d320000f900010f313330353637303035383030322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afc73403c4df300030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000004c4150544f505745524b47524f45500000 +b832c8010000000000000000 + +41610 +000000007002faf0747000000204056401010402 +000080010000000000000000 + +41611 +ddb200000001000000000000037777770e64656c61616773746572656e7465026e6c0000010001 +ddb280000001000000020002037777770e64656c61616773746572656e7465026e6c0000010001c0100002000100015180000f036e73310864736267726f6570c01fc01000020001000151800006036e7332c037c03300010001000151800004d4362461c04e00010001000151800004c36c2c36 + +41612 +b8324e4280108598a2a600000101080a1123604b01280813 +b832c8010000000000000000 + +41613 +fc7800000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +fc7880000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +41614 +d305000000010000000000000f6d61782d6164766572746973696e67026e6c00000f0001 +d305800000010000000300030f6d61782d6164766572746973696e67026e6c00000f0001c00c00020001000151800013036e73310c636172647365727669636573c01cc00c00020001000151800006036e7332c034c00c00020001000151800006036e7333c034c03000010001000151800004d5c9baf3c04f00010001000151800004d5c9baf4c06100010001000151800004c26d4023 + +41615 +17ef0000000100000000000003737477026e6c0000010001 +17ef8000000100000002000203737477026e6c0000010001c00c000200010001518000070469726973c00cc00c0002000100015180000e036e733107737572666e6574c010c02400010001000151800004c3a95a82c03700010001000151800004c0576a65 + +41616 +b8344c685010fd5c99cb0000000000000000 +b834cc640000000000000000 + +41617 +b8344c685018fd5c25800000008e4c97000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afde1403c4f6100030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 +b834cc640000000000000000 + +41618 +2dfe00000001000000000000037777770b6372617a797069616e6f73026e6c0000010001 +2dfe80000001000000030001037777770b6372617a797069616e6f73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +41619 +82980000000100000000000003777777086e6f6b696166616e026e6c0000010001 +82988000000100000003000203777777086e6f6b696166616e026e6c0000010001c0100002000100015180000f036e7331086f76657272696465c019c01000020001000151800006036e7333c031c01000020001000151800006036e7332c031c02d00010001000151800004d4ccd5b5c0480001000100015180000451ab0942 + +41620 +b5fc00000001000000000000156c6973742d746869656d656d65756c656e686f6666026e6c0000020001 +b5fc80000001000000020002156c6973742d746869656d656d65756c656e686f6666026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec022c00c00020001000151800006036e7332c03ac03600010001000151800004c29f4906c04e00010001000151800004c29fb004 + +41621 +822100000001000000000000026e73036b6c6d026e6c0000010001 +822180000001000000020001026e73036b6c6d026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004ab155012 + +41622 +82220000000100000000000003666c79036b6c6d026e6c0000010001 +82228000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +41623 +a1af00000001000000000000037777770e7275726f756e696b656e7368696e026e6c0000010001 +a1af80000001000000020000037777770e7275726f756e696b656e7368696e026e6c0000010001c01000020001000151800012036e733108636974757377656203636f6d00c01000020001000151800006036e7332c037 + +41624 +5c2a0000000100000000000007636d6174616c6c026e6c00000f0001 +5c2a8403000100000001000007636d6174616c6c026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +41625 +b8344c765011fd4e993a0000000000000000 +b834cc740000000000000000 + +41626 +000000007002faf063ec00000204056401010402 +000080010000000000000000 + +41627 +bcdf00000001000000000000036e7333076e656473746174026e6c0000010001 +bcdf80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +41628 +0b0d0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +0b0d8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +41629 +382d0000000100000000000003777777076b6c616e74656e0465786564026e6c0000010001 +382d8000000100000002000203777777076b6c616e74656e0465786564026e6c0000010001c01800020001000151800013036e73310c62656472696a76656e776562c01dc01800020001000151800006036e7332c035c03100010001000151800004d90867fec05000010001000151800004c1ad2bfe + +41630 +2ab90000000100000000000009652d6c756e61746963026e6c0000010001 +2ab98000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41631 +b8344c775010fd4e99390000000000000000 +b834cc740000000000000000 + +41632 +b83533955010fd5ca2190000000000000000 +b835b3940000000000000000 + +41633 +2ca300000001000000000000036e73310a6d61696e736572766572026e6c0000010001 +2ca380000001000000020002036e73310a6d61696e736572766572026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d90867fec04e00010001000151800004c1ad2bfe + +41634 +0fd400000001000000000000036e73320a6d61696e736572766572026e6c0000010001 +0fd480000001000000020002036e73320a6d61696e736572766572026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d90867fec04e00010001000151800004c1ad2bfe + +41635 +b83533955018fd5c53880000008e27de000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afde1403c4f6100030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 +b835b3940000000000000000 + +41636 +366e00000001000000000000037777770d766f657462616c6f6e6c696e65026e6c0000010001 +366e80000001000000030002037777770d766f657462616c6f6e6c696e65026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +41637 +4af600000001000000000000037777770972706d2d6d65646961026e6c0000010001 +4af680000001000000030001037777770972706d2d6d65646961026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +41638 +b83533a35011fd4ea1880000000000000000 +b835b3a40000000000000000 + +41639 +000000007002faf0873e00000204056401010402 +000080010000000000000000 + +41640 +7d0700100001000000000001036e73310a63796265726d65646961026e6c00000100010000290800000080000000 +7d0780000001000000020003036e73310a63796265726d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e818c0ac03d000100010001518000043e3a2d990000291000000000000000 + +41641 +646000000001000000000000037777770c6469676974616c73746f7265026e6c0000010001 +646080000001000000020002037777770c6469676974616c73746f7265026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +41642 +e5c700000001000000000000047362646d0c737472617762657272696573026e6c0000010001 +e5c780000001000000020002047362646d0c737472617762657272696573026e6c0000010001c0110002000100015180000c026e7306787334616c6cc01ec01100020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +41643 +8e1f000000010000000000000762616e6e65727303696d73026e6c0000010001 +8e1f800000010000000300020762616e6e65727303696d73026e6c0000010001c0140002000100015180000d036e733106776964657873c018c01400020001000151800010036e733206776964657873036e657400c01400020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +41644 +40fb000000010000000000000368636e026e6c00001c0001 +40fb800000010000000300010368636e026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +41645 +8155000000010000000000000377777705706978756d026e6c0000010001 +8155800000010000000200000377777705706978756d026e6c0000010001c01000020001000151800010036e7331066272696e6765036e657400c01000020001000151800006036e7332c02e + +41646 +bb5c00100001000000000001036e73320a63796265726d65646961026e6c00000100010000290800000080000000 +bb5c80000001000000020003036e73320a63796265726d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000043e818c0ac00c000100010001518000043e3a2d990000291000000000000000 + +41647 +b83533a45010fd4ea1870000000000000000 +b835b3a40000000000000000 + +41648 +b835f3265010fd5c05da0000000000000000 + + +41649 +18560000000100000000000009666c61736867656e3206706c616e6574026e6c0000010001 +18568000000100000003000309666c61736867656e3206706c616e6574026e6c0000010001c0160002000100015180000b046e73303803777873c01dc01600020001000151800007046e733039c036c01600020001000151800006036e7334c036c03100010001000151800004c3790128c04800010001000151800004c3790143c05b00010001000151800004d5ef9a65 + +41650 +081c000000010000000000000b6c6973742d79617264656e026e6c0000020001 +081c800000010000000200020b6c6973742d79617264656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +41651 +b835f3265018fd5c0b910000008ed395000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afde1403c4f6100030000002f4e544c4d535350000100000097b208e007000700280000000800080020000000444330314856534c4f424856534c530000 + + +41652 +3dd80000000100000000000004636e733007656173796e6574026e6c0000010001 +3dd88000000100000002000204636e733007656173796e6574026e6c0000010001c01100020001000151800006036e7330c011c01100020001000151800006036e7331c011c02d00010001000151800004c2a55e01c03f00010001000151800004c2a55e05 + +41653 +b835f3345011fd4e05490000000000000000 + + +41654 +cf730000000100000000000003777777086861776b65796573026e6c0000010001 +cf738000000100000003000303777777086861776b65796573026e6c0000010001c0100002000100015180000d046e733031056d61636f6ec019c01000020001000151800007046e733032c032c01000020001000151800007046e733033c032c02d000100010001518000045360bc03c046000100010001518000045360bc04c0590001000100015180000450454704 + +41655 +45490000000100000000000006636f62616c740a6e65746d61696c696e67026e6c00000f0001 +45498000000100000002000006636f62616c740a6e65746d61696c696e67026e6c00000f0001c01300020001000151800011036e73310764697265637435036e657400c01300020001000151800006036e7332c036 + +41656 +635c00000001000000000000056c7670627606787334616c6c026e6c0000010001 +635c80000001000000030002056c7670627606787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +41657 +b835f3355010fd4e05480000000000000000 + + +41658 +bf0e00000001000000000000037777771073656372657461726573736562616e6b026e6c0000010001 +bf0e80000001000000030002037777771073656372657461726573736562616e6b026e6c0000010001c0100002000100015180000d036e733106776964657873c021c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c039c03500010001000151800004d4ccc0fcc06a000100010001518000043efa0703 + +41659 +743100000001000000000000056d61696c310976697275737672696a026e6c0000010001 +743180000001000000020000056d61696c310976697275737672696a026e6c0000010001c0120002000100015180000d036e7331036b706e036e657400c01200020001000151800006036e7332c034 + +41660 +82db000000010000000000000377777706746f796f7461026e6c0000010001 +82db800000010000000200010377777706746f796f7461026e6c0000010001c01000020001000151800017026e7311656e7465727072697365686f7374696e67c017c0100002000100015180000b026e73026e6c036e657400c02b00010001000151800004d5358e02 + +41661 +2c2d000000010000000000000c6c6973747365727669636573026e6c0000020001 +2c2d800000010000000200020c6c6973747365727669636573026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +41662 +20af00000001000000000000046d61696c05706f737461026e6c0000010001 +20af80000001000000020002046d61696c05706f737461026e6c0000010001c0110002000100015180000a036e7331036e7873c017c01100020001000151800006036e7332c02fc02b00010001000151800004d973c015c04100010001000151800004d973c102 + +41663 +560200000001000000000000056d61636177026e6c00001c0001 +560280000001000000020002056d61636177026e6c00001c0001c00c00020001000151800011036e73310a6d756c74696b6162656cc012c00c00020001000151800006036e7332c02ac0260001000100015180000450f2e002c0430001000100015180000450f2e006 + +41664 +d0fa000000010000000000000462617261026e6c00000f0001 +d0fa800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +41665 +1bda0000000100000000000005646e732d31056c61646f74026e6c0000010001 +1bda8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41666 +81b50000000100000000000005646e732d32056c61646f74026e6c0000010001 +81b58000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41667 +8e37000000010000000000000664657369676e0d7765626d617374657263697479026e6c0000010001 +8e37800000010000000200000664657369676e0d7765626d617374657263697479026e6c0000010001c01300020001000151800012026e73096e6c686f7374696e67036e657400c01300020001000151800006036e7331c038 + +41668 +378000000001000000000000037777770a64726f6d656461726973026e6c0000010001 +378080000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +41669 +078d00000001000000000000037777770a64726f6d656461726973026e6c0000010001 +078d80000001000000020000037777770a64726f6d656461726973026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c045 + +41670 +2eb800000001000000000000036e73320a63796265726d65646961026e6c0000010001 +2eb880000001000000020002036e73320a63796265726d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02f000100010001518000043e818c0ac00c000100010001518000043e3a2d99 + +41671 +793d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +793d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41672 +6f340000000100000000000005646e732d32056c61646f74026e6c0000010001 +6f348000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41673 +f5fb0000000100000000000004736d74700575706e6574026e6c00001c0001 +f5fb8000000100000002000204736d74700575706e6574026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02b00010001000151800004d5c428dfc03d0001000100015180000451113206 + +41674 +14460000000100000000000004736d74700575706e6574026e6c0000010001 +14468000000100000002000204736d74700575706e6574026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02b00010001000151800004d5c428dfc03d0001000100015180000451113206 + +41675 +4e0e0000000100000000000004736d74700575706e6574026e6c0000260001 +4e0e8000000100000002000204736d74700575706e6574026e6c0000260001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02b00010001000151800004d5c428dfc03d0001000100015180000451113206 + +41676 +de1200000001000000000000036e73310575706e6574026e6c00001c0001 +de1280000001000000020002036e73310575706e6574026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c428dfc0380001000100015180000451113206 + +41677 +c9020000000100000000000004617369610374656e026e6c0000010001 +c9028000000100000002000104617369610374656e026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +41678 +baa900000001000000000000036e73310575706e6574026e6c0000260001 +baa980000001000000020002036e73310575706e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5c428dfc0380001000100015180000451113206 + +41679 +380500000001000000000000036e73320575706e6574026e6c00001c0001 +380580000001000000020002036e73320575706e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5c428dfc00c0001000100015180000451113206 + +41680 +b0e600000001000000000000036e73320575706e6574026e6c0000260001 +b0e680000001000000020002036e73320575706e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a00010001000151800004d5c428dfc00c0001000100015180000451113206 + +41681 +d46e00000001000000000000076f757464617265026e6c0000010001 +d46e80000001000000030002076f757464617265026e6c0000010001c00c0002000100015180000f036e73310870726f7365727665c014c00c00020001000151800012036e73320970726f2d736572766502626500c00c00020001000151800006036e7333c02cc028000100010001518000045054e055c06100010001000151800004d4ccc655 + +41682 +b34c00000001000000000000077761616e646f6f026e6c0000010001 +b34c84030001000000010000077761616e646f6f026e6c0000010001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +41683 +bdb60000000100000000000007746f70626f7577026e6c00001c0001 +bdb68000000100000002000007746f70626f7577026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +41684 +29f40000000100000000000005646e732d31056c61646f74026e6c0000010001 +29f48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41685 +c54c00000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +c54c80000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +41686 +ba4600000001000000000000036e73320f6761726e69657270726f6a65637473026e6c00001c0001 +ba4680000001000000020002036e73320f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +41687 +18b800000001000000000000026e730f6761726e69657270726f6a65637473026e6c00001c0001 +18b880000001000000020002026e730f6761726e69657270726f6a65637473026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +41688 +0ac400000001000000000000036e73310f6761726e69657270726f6a65637473026e6c00001c0001 +0ac480000001000000020002036e73310f6761726e69657270726f6a65637473026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc034000100010001518000045117e122c00c000100010001518000045117e142 + +41689 +64e200000001000000000001086669726577616c6c0564656e736f026e6c00001c00010000291000000000000000 +64e280000001000000020001086669726577616c6c0564656e736f026e6c00001c0001c0150002000100015180000b026e73026e6c036e657400c0150002000100015180001206617574683630026e73026e6c027575c0350000291000000000000000 + +41690 +1303000000010000000000000b706572676563747374656c026e6c0000010001 +1303840300010000000100000b706572676563747374656c026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +41691 +1750000000010000000000000a7a776f6c6c656173767a026e6c0000010001 +1750840300010000000100000a7a776f6c6c656173767a026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +41692 +175c00000001000000000000036e73310a63796265726d65646961026e6c0000010001 +175c80000001000000020002036e73310a63796265726d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e818c0ac03d000100010001518000043e3a2d99 + +41693 +2b210000000100000000000008686f73746e616d650462696e640000100003 +2b218000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41694 +93a3000000010000000000000377777708656c7574696f6e7a026e6c0000010001 +93a3800000010000000200020377777708656c7574696f6e7a026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c019c01000020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +41695 +38750000000100000000000003726476026e6c0000010001 +38758000000100000003000303726476026e6c0000010001c00c00020001000151800011036e73310a6d756c74696b6162656cc010c00c00020001000151800006036e7332c028c00c0002000100015180000e036e733407737570706f7274c010c0240001000100015180000450f2e002c0410001000100015180000450f2e006c05300010001000151800004c372e6fe + +41696 +5caa000000010000000000000a7061756c73696d6f6e73026e6c00000f0001 +5caa800000010000000200000a7061756c73696d6f6e73026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02e + +41697 +266a000000010000000000000e70632d62657665696c6967696e67096172726f7773776562026e6c0000010001 +266a800000010000000200020e70632d62657665696c6967696e67096172726f7773776562026e6c0000010001c01b0002000100015180000f026e7309656174736572766572c025c01b00020001000151800006036e7332c03cc03900010001000151800004d4cb0e42c05400010001000151800004d4cb1221 + +41698 +64e200000001000000000000086669726577616c6c0564656e736f026e6c00001c0001 +64e280000001000000020000086669726577616c6c0564656e736f026e6c00001c0001c0150002000100015180000b026e73026e6c036e657400c0150002000100015180001206617574683630026e73026e6c027575c035 + +41699 +527f0000000100000000000008686f73746e616d650462696e640000100003 +527f8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41700 +46bb000000010000000000000377777707666c6162626572026e6c0000010001 +46bb800000010000000300020377777707666c6162626572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +41701 +f3430000000100000000000007667265656c6572026e6c00000f0001 +f3438000000100000002000007667265656c6572026e6c00000f0001c00c000200010001518000290b65766973702d6e732d3031036f70730761736d722d30310b656e65726769732d696463036e657400c00c0002000100015180000e0b65766973702d6e732d3032c034 + +41702 +4e9400000001000000000000037777770c73656173656574726176656c026e6c0000010001 +4e9480000001000000020000037777770c73656173656574726176656c026e6c0000010001c01000020001000151800012036e7331086f6e6c696e6562700362697a00c01000020001000151800006036e7332c035 + +41703 +e878000000010000000000000a6765726172642d6d6f620b6577772d6e65747765726b026e6c0000060001 +e878840300010000000100000a6765726172642d6d6f620b6577772d6e65747765726b026e6c0000060001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +41704 +b7ef00000001000000000000036e733503777873026e6c0000010001 +b7ef80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +41705 +96660000000100000000000008686f73746e616d650462696e640000100003 +96668000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41706 +175500000001000000000000046d61696c0f76616e64696a6b6c756e746572656e026e6c0000010001 +175580000001000000020002046d61696c0f76616e64696a6b6c756e746572656e026e6c0000010001c0110002000100015180000e026e730874657272617a7572c021c01100020001000151800006036e7332c038c03500010001000151800004d5880e9ac04f00010001000151800004d59ae202 + +41707 +ff7f0000000100000000000008686f73746e616d650462696e640000100003 +ff7f8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41708 +486c000000010000000000000c6172626f7276696577696e6e026e730263610a6f74652d696e7465726e026e6c0000010001 +486c840300010000000100000c6172626f7276696577696e6e026e730263610a6f74652d696e7465726e026e6c0000010001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +41709 +ec5000000001000000000000055f6c646170045f746370026463065f6d7364637303646331077676736f777674026e6c0000210001 +ec5080000001000000020000055f6c646170045f746370026463065f6d7364637303646331077676736f777674026e6c0000210001c02500020001000151800014036e733108747572626f646e7302636f02756b00c02500020001000151800006036e7332c045 + +41710 +1966000000010000000000000873656c6563746966026e6c00000f0001 +1966800000010000000200000873656c6563746966026e6c00000f0001c00c0002000100015180000f036e7331056165696374036e657400c00c00020001000151800006036e7332c02d + +41711 +15b400000001000000000000046d636665026e6c00000f0001 +15b480000001000000030000046d636665026e6c00000f0001c00c00020001000151800011086575726f2d6e7331026377036e657400c00c0002000100015180000b086575726f2d6e7332c02ec00c0002000100015180000b086575726f2d6e7333c02e + +41712 +eed300000001000000000000036e73320568616e7a65026e6c0000010001 +eed380000001000000030003036e73320568616e7a65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +41713 +7a2900000001000000000000036e733503777873026e6c0000010001 +7a2980000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +41714 +5dec000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +5dec800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +41715 +4e0f000000010000000000000866616c6c6261636b08767575727765726b026e6c00001c0001 +4e0f800000010000000300010866616c6c6261636b08767575727765726b026e6c00001c0001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +41716 +c2ee00000001000000000000077365617263687906787334616c6c026e6c0000010001 +c2ee80000001000000030002077365617263687906787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +41717 +b02c000000010000000000000462657461026e6c00000f0001 +b02c800000010000000300010462657461026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc011c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c043c025000100010001518000043efa0202 + +41718 +799b00000001000000000000037777770a626f64796d616e696163026e6c0000010001 +799b80000001000000020000037777770a626f64796d616e696163026e6c0000010001c01000020001000151800015036e73310b7072696f73657276653038036e657400c01000020001000151800006036e7332c033 + +41719 +e3a800000001000000000000086d61696c686f737405696e6e6574026e6c0000010001 +e3a880000001000000020000086d61696c686f737405696e6e6574026e6c0000010001c0150002000100015180000d026e7304696e6265036e657400c01500020001000151800006036e6963c032 + +41720 +6e9e00000001000000000000046d61696c0f76616e64696a6b6c756e746572656e026e6c0000010001 +6e9e80000001000000020002046d61696c0f76616e64696a6b6c756e746572656e026e6c0000010001c0110002000100015180000e026e730874657272617a7572c021c01100020001000151800006036e7332c038c03500010001000151800004d5880e9ac04f00010001000151800004d59ae202 + +41721 +62fa0000000100000000000003504155066d617263656c026e6c0000010001 +62fa8000000100000002000003504155066d617263656c026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +41722 +e602000000010000000000000377777708646577696572656e026e6c0000010001 +e602800000010000000200000377777708646577696572656e026e6c0000010001c0100002000100015180001905646e7330310d636f6d70726173657276657273036e657400c0100002000100015180000805646e733032c033 + +41723 +2251000000010000000000000a706572727973706f7274026e6c0000010001 +2251800000010000000300030a706572727973706f7274026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b00010001000151800004c3f13ceec04700010001000151800004c372eb43c059000100010001518000043e320e8f + +41724 +a9f300000001000000000000026e7311656e7465727072697365686f7374696e67026e6c00001c0001 +a9f380000001000000020001026e7311656e7465727072697365686f7374696e67026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +41725 +f28000000001000000000000026e7311656e7465727072697365686f7374696e67026e6c0000260001 +f28080000001000000020001026e7311656e7465727072697365686f7374696e67026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +41726 +311300000001000000000000055f6c646170045f746370026463065f6d736463730864696a6b77657374026e6c0000210001 +311384030001000000010000055f6c646170045f746370026463065f6d736463730864696a6b77657374026e6c0000210001c02a00060001000038400036026e730f646f6d61696e2d7265676973747279c02a0a686f73746d6173746572c0410bf1e540000070800000384000278d0000003840 + +41727 +7cf700000001000000000000036e733407737570706f7274026e6c00fa180001 +7cf780000001000000020002036e733407737570706f7274026e6c00fa180001c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004c372e7c8c00c00010001000151800004c372e6fe + +41728 +430b00000001000000000000026e73067a6f6e6e6574026e6c0000010001 +430b80000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +41729 +bc2700000001000000000000037777770d76646e74656c656d6174696361026e6c0000010001 +bc2780000001000000020000037777770d76646e74656c656d6174696361026e6c0000010001c01000020001000151800010036e733106626973636f6e036e657400c01000020001000151800006036e7332c036 + +41730 +d54a000000010000000000000368636e026e6c00000f0001 +d54a800000010000000300010368636e026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +41731 +355000000001000000000000037777770e666572776572646572616469656c026e6c0000010001 +355080000001000000020002037777770e666572776572646572616469656c026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01fc01000020001000151800006036e7332c037c03300010001000151800004d43d0f08c05100010001000151800004d43d19e2 + +41732 +f4e6000000010000000000000a706572727973706f7274026e6c0000010001 +f4e6800000010000000300030a706572727973706f7274026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c017c00c00020001000151800006036e7332c02fc00c00020001000151800006036e7333c02fc02b00010001000151800004c3f13ceec04700010001000151800004c372eb43c059000100010001518000043e320e8f + +41733 +e02800000001000000000000037777770f646170707265737472696a64657273026e6c0000010001 +e02880000001000000020000037777770f646170707265737472696a64657273026e6c0000010001c01000020001000151800013036e7335097577686f7374696e67036e657400c01000020001000151800006036e7336c038 + +41734 +57ce000000010000000000000377777706746f796f7461026e6c0000010001 +57ce800000010000000200010377777706746f796f7461026e6c0000010001c01000020001000151800017026e7311656e7465727072697365686f7374696e67c017c0100002000100015180000b026e73026e6c036e657400c02b00010001000151800004d5358e02 + +41735 +acb200000001000000000000037777770767617a656c6c65026e6c0000010001 +acb280000001000000030003037777770767617a656c6c65026e6c0000010001c0100002000100015180000e076e73617574683103626974c018c0100002000100015180000a076e736175746832c034c0100002000100015180000a076e736175746833c034c02c00010001000151800004d5880c33c04600010001000151800004d5880c3bc05c00010001000151800004d4ccc00b + +41736 +edd100000001000000000000046d61696c096e75636c6574726f6e026e6c0000010001 +edd180000001000000030001046d61696c096e75636c6574726f6e026e6c0000010001c01100020001000151800002c00cc01100020001000151800012047365633103646e73067073696e6574c01bc011000200010001518000070473656332c042c00c00010001000151800004c3510f14 + +41737 +03ce00000001000000000000046d61696c096e75636c6574726f6e026e6c00001c0001 +03ce80000001000000030001046d61696c096e75636c6574726f6e026e6c00001c0001c01100020001000151800002c00cc01100020001000151800012047365633103646e73067073696e6574c01bc011000200010001518000070473656332c042c00c00010001000151800004c3510f14 + +41738 +3b1c0000000100000000000007766462636f6d70026e6c00001c0001 +3b1c8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +41739 +dd83000000010000000000000b64737772696a7377696a6b026e6c0000ff0001 +dd83800000010000000200000b64737772696a7377696a6b026e6c0000ff0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c030 + +41740 +3996000000010000000000000568612d726f06787334616c6c026e6c0000010001 +3996800000010000000300020568612d726f06787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +41741 +1e4800000001000000000000077a782d79616769026e6c00000f0001 +1e4880000001000000020000077a782d79616769026e6c00000f0001c00c00020001000151800012036e733708786c736572766572036e657400c00c00020001000151800006036e7338c02c + +41742 +3a4200000001000000000000046d61696c0c70726f6d6f73797374656d73026e6c0000010001 +3a4280000001000000020002046d61696c0c70726f6d6f73797374656d73026e6c0000010001c0110002000100015180000d026e730777697a7a626974c01ec01100020001000151800006036e7332c035c032000100010001518000043e3a360bc04b000100010001518000043e3a360c + +41743 +653500000001000000000000046d61696c09766973696f6e347573026e6c0000010001 +653580000001000000020002046d61696c09766973696f6e347573026e6c0000010001c0110002000100015180000c036e73310564656d6f6ec01bc01100020001000151800006036e7332c033c02f00010001000151800004c29f4906c04700010001000151800004c29fb004 + +41744 +b43000000001000000000000036e733209696e7374616e747873026e6c0000010001 +b43080000001000000020002036e733209696e7374616e747873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045296853ec00c000100010001518000045296853c + +41745 +15cc00000001000000000000037777770a656e76696e7961746172026e6c0000010001 +15cc80000001000000020002037777770a656e76696e7961746172026e6c0000010001c01000020001000151800011036e73310a746770686f7374696e67c01bc01000020001000151800006036e7332c033c02f00010001000151800004d943e992c04c00010001000151800004d943e993 + +41746 +b3ac000000010000000000000568612d726f06787334616c6c026e6c0000010001 +b3ac800000010000000300020568612d726f06787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +41747 +e1ef000000010000000000000a6c656b6b657264696e670e6d777765626372656174696f6e73026e6c0000010001 +e1ef800000010000000200020a6c656b6b657264696e670e6d777765626372656174696f6e73026e6c0000010001c01700020001000151800002c00cc0170002000100015180000c09626c61636b62697264c017c00c00010001000151800004d994a332c04800010001000151800004507ed0a6 + +41748 +4385000000010000000000000873616d616e7468610e6d777765626372656174696f6e73026e6c0000010001 +4385800000010000000200020873616d616e7468610e6d777765626372656174696f6e73026e6c0000010001c0150002000100015180000d0a6c656b6b657264696e67c015c0150002000100015180000c09626c61636b62697264c015c03800010001000151800004d994a332c05100010001000151800004507ed0a6 + +41749 +05ef00000001000000000000046d61696c03696e67026e6c00000f0001 +05ef80000001000000020002046d61696c03696e67026e6c00000f0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0290001000100015180000491dd19c2c03b0001000100015180000491dd5dc2 + +41750 +223d00000001000000000000046d61696c0a73746f6e65686f757365026e6c0000010001 +223d80000001000000020000046d61696c0a73746f6e65686f757365026e6c0000010001c01100020001000151800011036e7333076361706361766503636f6d00c01100020001000151800006036e7334c034 + +41751 +b8324e4280118598a25e00000101080a1123609201280813 +b832c8010000000000000000 + +41752 +5bad00000001000000000000037777770b67616d65706c616e656574026e6c0000010001 +5bad80000001000000030002037777770b67616d65706c616e656574026e6c0000010001c01000020001000151800015036e73310e666c6578776562686f7374696e67c01cc01000020001000151800006036e7332c034c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03000010001000151800004cf2cd7adc0510001000100015180000452c04365 + +41753 +d17e28000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730b6465626f646567726f6570026e6c000021000100000258001d000000640058067365727665720b6465626f646567726f6570026e6c00 +d17ea8040000000000000000 + +41754 +b8324e4380108598a25b00000101080a1123609301280814 +b832c8010000000000000000 + +41755 +000000007002faf06f4c0000020405b401010402 +000080010000000000000000 + +41756 +b83838215010faf0aba60000000000000000 +b838b8240000000000000000 + +41757 +b83838215018faf04ae500000088c200000000010001000000000f313432353932393134323239302d330000f900010f313432353932393134323239302d330000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe84403c50040003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 +b838b8240000000000000000 + +41758 +b838382f5011fae2ab1b0000000000000000 +b838b8240000000000000000 + +41759 +ed1000000001000000000000036e73330767617574656e67026e6c0000010001 +ed1080000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41760 +e53f00000001000000000000036e73340767617574656e67026e6c0000010001 +e53f80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41761 +000000007002faf09b570000020405b401010402 +000080010000000000000000 + +41762 +b83838305010fae2ab1a0000000000000000 +b838b8340000000000000000 + +41763 +4f080000000100000000000007616e74656e6e61026e6c0000010001 +4f088000000100000002000107616e74656e6e61026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +41764 +a7840000000100000000000007616e74656e6e61026e6c0000260001 +a7848000000100000002000107616e74656e6e61026e6c0000260001c00c00020001000151800005026e73c00cc00c0002000100015180001306696e666f726d07616e74656e6e6102646b00c02800010001000151800004d995dd13 + +41765 +b83916d95010faf0f8f80000000000000000 +b83996d40000000000000000 + +41766 +da9c000000010000000000001276656e656d61636f6d6d756e696361746965026e6c00000f0001 +da9c800000010000000200001276656e656d61636f6d6d756e696361746965026e6c00000f0001c00c000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00c0002000100015180000906617574683230c03a + +41767 +b83916d95018faf0b1dc00000088a95c000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe84403c50040003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 +b83996d40000000000000000 + +41768 +b83916e75011fae2f86d0000000000000000 +b83996e40000000000000000 + +41769 +000000007002faf0b4fb0000020405b401010402 +000080010000000000000000 + +41770 +07bc00000001000000000000047468666c026e6c0000010001 +07bc80000001000000020000047468666c026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c030 + +41771 +b83916e85010fae2f86c0000000000000000 +b83996e40000000000000000 + +41772 +560400100001000000000001036e733109756e69736f75726365026e6c00000100010000290800000000000000 +560480000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +41773 +b83af3e45010faf035900000000000000000 + + +41774 +2000000000010000000000000b73696e7465726b6c6161730a6a6f7577706167696e61026e6c0000010001 +2000800000010000000200000b73696e7465726b6c6161730a6a6f7577706167696e61026e6c0000010001c0180002000100015180000e036e73330767617574656e67c023c01800020001000151800006036e7334c03b + +41775 +b83af3e45018faf02fd0000000886800000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe84403c50040003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 + + +41776 +6cd90000000100000000000009666f72726573746572026e6c00000f0001 +6cd98000000100000002000009666f72726573746572026e6c00000f0001c00c0002000100015180001b096c6f6e2d646e73303209666f7272657374657202636f02756b00c00c00020001000151800014046e73303409666f7272657374657203636f6d00 + +41777 +f34b0000000100000000000003777777086a6f62747261636b026e6c0000010001 +f34b8000000100000003000303777777086a6f62747261636b026e6c0000010001c01000020001000151800010036e733109776973652d67757973c019c01000020001000151800006036e7330c031c01000020001000151800006036e7332c031c02d00010001000151800004d413cd91c04900010001000151800004d413cd8fc05b00010001000151800004c16d7a3e + +41778 +b83af3f25011fae235050000000000000000 + + +41779 +b83af3f35010fae235040000000000000000 + + +41780 +818e0000000100000000000004414a4158064e494b484546024e4c0000010001 +818e8000000100000004000204414a4158064e494b484546024e4c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +41781 +2744000000010000000000000d6175746f74656c656772616166026e6c0000010001 +2744800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +41782 +4fd200000001000000000000066c6974636f6d026e6c0000020001 +4fd280000001000000020002066c6974636f6d026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +41783 +1d1100000001000000000000037777770f7265736f72746861616d7374656465026e6c0000010001 +1d1180000001000000020001037777770f7265736f72746861616d7374656465026e6c0000010001c0100002000100015180000a036e733303777873c020c01000020001000151800006036e7334c038c04a00010001000151800004d5ef9a65 + +41784 +046b00000001000000000000037777770a63642d686f65736a6573026e6c0000010001 +046b80000001000000030002037777770a63642d686f65736a6573026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +41785 +10240000000100000000000003777777096c6f7374736f756c73026e6c0000010001 +10248000000100000003000103777777096c6f7374736f756c73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +41786 +671e0000000100000000000003777777076b77616e74756d026e6c0000010001 +671e8000000100000002000003777777076b77616e74756d026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c030 + +41787 +d3ab0000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +d3ab8000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +41788 +c0b500000001000000000000106175746f63656e74756d65726d656c6f026e6c00000f0001 +c0b584030001000000010000106175746f63656e74756d65726d656c6f026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +41789 +d5cc00000001000000000000036e733109756e69736f75726365026e6c0000010001 +d5cc80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +41790 +0ba300000001000000000000037777770c7665656c766f6f726465656c026e6c0000010001 +0ba380000001000000020002037777770c7665656c766f6f726465656c026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c01dc01000020001000151800006036e7332c035c03100010001000151800004d5efa404c04e00010001000151800004d5efa405 + +41791 +86fe00000001000000000000036e733307747564656c6674026e6c0000010001 +86fe80000001000000050005036e733307747564656c6674026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c03e0001000100015180000482a1b441c0500001000100015180000482a12111c0650001000100015180000482a1bc8cc07e00010001000151800004c0576a65 + +41792 +7f1e00000001000000000000036e733207747564656c6674026e6c0000010001 +7f1e80000001000000050005036e733207747564656c6674026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +41793 +be9a00000001000000000000036e733109756e69736f75726365026e6c0000010001 +be9a80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +41794 +b58c000000010000000000000a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001 +b58c800000010000000200020a626c61636b626f61726409696e686f6c6c616e64026e6c0000010001c01700020001000151800006036e7331c017c0170002000100015180000e036e733107737572666e6574c021c03500010001000151800004c2ab230bc04700010001000151800004c0576a65 + +41795 +db1100000001000000000000066c6974656974026e6c0000020001 +db1180000001000000020002066c6974656974026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +41796 +1d290000000100000000000003777777096b696e6465726e6574026e6c0000010001 +1d298000000100000003000003777777096b696e6465726e6574026e6c0000010001c01000020001000151800019096d7476692d646e7331096d74766575726f706503636f6d00c01000020001000151800012047365633103646e73067073696e6574c01ac010000200010001518000070473656332c058 + +41797 +095e00000001000000000000046e7330310462696374026e6c0000010001 +095e80000001000000020002046e7330310462696374026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004d413d6c8c03800010001000151800004d413d604 + +41798 +163500000001000000000000026e73067a6f6e6e6574026e6c0000010001 +163580000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +41799 +39f300100001000000000001036e73310564656d6f6e026e6c00000100010000290800000000000000 +39f380000001000000030003036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb0040000291000000000000000 + +41800 +491700100001000000000001036e73320564656d6f6e026e6c00000100010000290800000000000000 +491780000001000000030003036e73320564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb0040000291000000000000000 + +41801 +1eab00000001000000000000095f6b65726265726f73045f75647009636f726e776f726c64026e6c0000060001 +1eab84030001000000010000095f6b65726265726f73045f75647009636f726e776f726c64026e6c0000060001c02500060001000038400036026e730f646f6d61696e2d7265676973747279c0250a686f73746d6173746572c03c0bf1e540000070800000384000278d0000003840 + +41802 +09d500000001000000000000036e733104686f6d65026e6c0000010001 +09d580000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +41803 +192d00000001000000000000036e733204686f6d65026e6c0000010001 +192d80000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +41804 +c16100000001000000000000036e733304686f6d65026e6c0000010001 +c16180000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +41805 +939f00000001000000000000036e733404686f6d65026e6c0000010001 +939f80000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +41806 +473800000001000000000000036e73310564656d6f6e026e6c0000010001 +473880000001000000030002036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +41807 +d1b600000001000000000000036e73320564656d6f6e026e6c0000010001 +d1b680000001000000030002036e73320564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +41808 +966100000001000000000000037777770962616265706c617a61026e6c0000010001 +966180000001000000030000037777770962616265706c617a61026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +41809 +0f8c00000001000000000000037777770c6a756c69757363656e746572026e6c0000010001 +0f8c80000001000000020002037777770c6a756c69757363656e746572026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01dc01000020001000151800006036e7332c034c03100010001000151800004c26d0642c04900010001000151800004c26d0963 + +41810 +867c00000001000000000000026e73036d6c63026e6c0000010001 +867c80000001000000030003026e73036d6c63026e6c0000010001c00f00020001000151800012026e730c696e746572636f6e6e656374c013c00f00020001000151800006036e7332c02ac00f00020001000151800006036e7333c02ac02700010001000151800004d453c005c04500010001000151800004d453c006c05700010001000151800004d453c805 + +41811 +b7e500000001000000000000026e730c696e746572636f6e6e656374026e6c0000010001 +b7e580000001000000030003026e730c696e746572636f6e6e656374026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc00c00010001000151800004d453c005c03e00010001000151800004d453c006c05000010001000151800004d453c805 + +41812 +a4ea28000001000000010000026e6c0000060001095f6b65726265726f73045f75647009617269656465776974026e6c000021000100000258001b0000006400580641646577697409617269656465776974026e6c00 +a4eaa8040000000000000000 + +41813 +75bc01000001000000000000036e7331066e6c74726565026e6c0000010001 +75bc81000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +41814 +0000000070024000796d00000204057a01010402 +000080010000000000000000 + +41815 +0ae40000000100000000000009652d6c756e61746963026e6c0000010001 +0ae48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +41816 +90a700000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +90a780000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +41817 +b83be921501041b802d20000000000000000 + + +41818 +b83be921501841b8a70b0000008e5fe8000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d42403beec200030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 + + +41819 +b83be92f501141aa02410000000000000000 + + +41820 +e6520000000100000000000007747067706f7374026e6c0000ff0001 +e6528000000100000002000207747067706f7374026e6c0000ff0001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +41821 +c1ae0000000100000000000003777777066d2d70616765026e6c0000010001 +c1ae8000000100000003000203777777066d2d70616765026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +41822 +b0fa00000001000000000000046d61696c116265656b6d616e732d76616e646576656e026e6c0000010001 +b0fa80000001000000020000046d61696c116265656b6d616e732d76616e646576656e026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c03d + +41823 +0000000070024000882000000204057a01010402 +000080010000000000000000 + +41824 +b83be930501041aa02400000000000000000 + + +41825 +413328000001000000010000026e6c0000060001095f6b65726265726f73045f75647009636f726e776f726c64026e6c000021000100000258001b00000064005806746f746f726f09636f726e776f726c64026e6c00 +4133a8040000000000000000 + +41826 +35db0000000100000000000003777777066269726769740b6e65756b6d696a6d616172026e6c0000010001 +35db8000000100000002000003777777066269726769740b6e65756b6d696a6d616172026e6c0000010001c01700020001000151800010036e73610674696e74656c03636f6d00c01700020001000151800006036e7362c03b + +41827 +b83cde58501041b81c4d0000000000000000 + + +41828 +86650000000100000000000005646e732d31056c61646f74026e6c0000010001 +86658000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41829 +aa2300000001000000000000037777770970632d616374697665026e6c0000010001 +aa2380000001000000020000037777770970632d616374697665026e6c0000010001c0100002000100015180000a026e7304616b7475c01ac0100002000100015180000b026e73026e6c036e657400 + +41830 +7fed0000000100000000000005646e732d32056c61646f74026e6c0000010001 +7fed8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41831 +b83cde58501841b844490000008edd26000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d42403beec200030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 + + +41832 +208100000001000000000000026e7304616b7475026e6c0000010001 +208180000001000000020001026e7304616b7475026e6c0000010001c00f00020001000151800006036e7331c00fc00f0002000100015180000b026e73026e6c036e657400c02800010001000151800004c2b25945 + +41833 +c5ac0000000100000000000009776565726b616d6572026e6c0000010001 +c5ac8000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +41834 +b83cde66501141aa1bbc0000000000000000 + + +41835 +0000000070024000f57d00000204057a01010402 +000080010000000000000000 + +41836 +90ae00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +90ae80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +41837 +a03300000001000000000000046d61696c0e62666e2d666f746f67726166656e026e6c0000010001 +a03380000001000000020000046d61696c0e62666e2d666f746f67726166656e026e6c0000010001c01100020001000151800011036e73310a6d61696e736572766572c020c01100020001000151800006036e7332c038 + +41838 +b83cde67501041aa1bbb0000000000000000 + + +41839 +b83db28d501041b8b5740000000000000000 + + +41840 +b83db28d501841b830130000008e8a84000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403a9d42403beec200030000002f4e544c4d535350000100000097b200e0090009002600000006000600200000004144455749544152494544455749540000 + + +41841 +de1900000001000000000000116c6974657261747575722d6f6e6c696e65026e6c0000020001 +de1980000001000000020002116c6974657261747575722d6f6e6c696e65026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ec00c00020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +41842 +fbb80000000100000000000003777777056e6f72736b026e6c0000010001 +fbb88000000100000002000003777777056e6f72736b026e6c0000010001c01000020001000151800012046e733261076c696e756c657803636f6d00c01000020001000151800007046e733262c02f + +41843 +b83db29b501141aab4e30000000000000000 + + +41844 +0000000070024000dd470000020405b401010402 +000080010000000000000000 + +41845 +b83db29c501041aab4e20000000000000000 + + +41846 +b83e9b2e50104470b21e0000000000000000 + + +41847 +b83e9b2e50184470d9ec0000008e0c44000000010001000000000f313131363639313439363937382d330000f900010f313131363639313439363937382d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd23403c4ea300030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +41848 +371d00000001000000000000036e7332076f6d732d6e6574026e6c0000010001 +371d80000001000000020002036e7332076f6d732d6e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004d5efb22fc00c00010001000151800004d5ef9d07 + +41849 +b83e9b3c50114462b18d0000000000000000 + + +41850 +cfa400000001000000000000037777770d73636f6f74657276726167656e026e6c0000010001 +cfa480000001000000020000037777770d73636f6f74657276726167656e026e6c0000010001c01000020001000151800014036e73350a6d69686f736e65742d3303636f6d00c01000020001000151800006036e7336c036 + +41851 +b83e9b3d50104462b18c0000000000000000 + + +41852 +d50800000001000000000000037777770b766f656c73707269657432026e6c0000010001 +d50880000001000000020000037777770b766f656c73707269657432026e6c0000010001c01000020001000151800015036e73310b766563746f72636c617373036e657400c01000020001000151800006036e7332c034 + +41853 +82690000000100000000000005646e732d31056c61646f74026e6c0000010001 +82698000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41854 +826a0000000100000000000005646e732d32056c61646f74026e6c0000010001 +826a8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41855 +124d0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +124d8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +41856 +0000000070024000e2d50000020405b401010402 +000080010000000000000000 + +41857 +37f40000000100000000000006736d7470303403777873026e6c00001c0001 +37f48000000100000003000306736d7470303403777873026e6c00001c0001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +41858 +e07200000001000000000000037777770863696e656d613464026e6c0000010001 +e07280000001000000020000037777770863696e656d613464026e6c0000010001c01000020001000151800011036e7331077876656e74757303636f6d00c01000020001000151800006036e7332c031 + +41859 +b83f3c0b5010447016cf0000000000000000 +b83fbc040000000000000000 + +41860 +c90b0000000100000000000004617369610374656e026e6c0000010001 +c90b8000000100000002000104617369610374656e026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +41861 +966400000001000000000000037777771062616e6e65726d616e6167656d656e74026e6c0000010001 +966480000001000000030003037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +41862 +b83f3c0b50184470e4e30000008e66fe000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd23403c4ea300030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 +b83fbc040000000000000000 + +41863 +12610000000100000000000003777777076d657373696e6b026e6c0000010001 +12618000000100000002000003777777076d657373696e6b026e6c0000010001c01000020001000151800014026e730b736d617274736572766572036e657400c01000020001000151800006036e7332c02f + +41864 +a72d0000000100000000000003777777066469786f6e73026e6c0000010001 +a72d8000000100000003000303777777066469786f6e73026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c017c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02fc02b00010001000151800004c3f13ceec04700010001000151800004c372eb43c059000100010001518000043e320e8f + +41865 +f22100000001000000000000136c6974686f67726166697363686d757365756d026e6c0000020001 +f22180000001000000020002136c6974686f67726166697363686d757365756d026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec020c00c00020001000151800006036e7332c038c03400010001000151800004c29f4906c04c00010001000151800004c29fb004 + +41866 +b83f3c1950114462163e0000000000000000 +b83fbc140000000000000000 + +41867 +826f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +826f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41868 +82700000000100000000000005646e732d32056c61646f74026e6c0000010001 +82708000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41869 +ccb1000000010000000000000377777704616d6561026e6c0000010001 +ccb1800000010000000200000377777704616d6561026e6c0000010001c01000020001000151800018046e7331610d686572656e677261636874313003636f6d00c01000020001000151800007046e733162c02e + +41870 +b83f3c1a50104462163d0000000000000000 +b83fbc140000000000000000 + +41871 +5dc900000001000000000000037777770972616365666f746f73026e6c0000010001 +5dc980000001000000020000037777770972616365666f746f73026e6c0000010001c01000020001000151800013036e733109752d73657276657273036e657400c01000020001000151800006036e7332c032 + +41872 +c90d00000001000000000000026e730374656e026e6c0000010001 +c90d80000001000000020001026e730374656e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c36c4b01 + +41873 +ca3100000001000000000000036e73330767617574656e67026e6c0000010001 +ca3180000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41874 +ca3200000001000000000000036e73340767617574656e67026e6c0000010001 +ca3280000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41875 +0000000070024000a9590000020405b401010402 +000080010000000000000000 + +41876 +34d400000001000000000000106275696a74696e6b6d6f65726c616e64026e6c00000f0001 +34d480000001000000020000106275696a74696e6b6d6f65726c616e64026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c035 + +41877 +3b4b0000000100000000000008686f73746e616d650462696e640000100003 +3b4b8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41878 +b841d41050104470454b0000000000000000 + + +41879 +b10a00000001000000000000036e7332086d65646961776562026e6c0000010001 +b10a80000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +41880 +9d5a00000001000000000000036e7333086d65646961776562026e6c0000010001 +9d5a80000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +41881 +b841d41050184470b8a50000008ec1b8000000010001000000000f313131363639313439363937382d320000f900010f313131363639313439363937382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afd23403c4ea300030000002f4e544c4d535350000100000097b200c009000900260000000600060020000000544f544f524f434f524e574f524c440000 + + +41882 +0f1d0000000100000000000008686f73746e616d650462696e640000100003 +0f1d8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41883 +93b40010000100000000000106726f64616a63026e6c0000ff00010000290800000000000000 +93b48000000100000002000306726f64616a63026e6c0000ff0001c00c0002000100015180000f036e733108696c696d62757267c013c00c00020001000151800006036e7332c02bc02700010001000151800004c2b26281c04200010001000151800004c2b262f70000291000000000000000 + +41884 +b841d41e5011446244ba0000000000000000 + + +41885 +25fb0000000100000000000004696e666f0a65636974656c65636f6d026e6c0000010001 +25fb8000000100000002000204696e666f0a65636974656c65636f6d026e6c0000010001c01100020001000151800006036e7331c011c0110002000100015180000e036e733207626265796f6e64c01cc030000100010001518000043eb1a493c042000100010001518000043eb19002 + +41886 +593c0000000100000000000006726f64616a63026e6c0000ff0001 +593c8000000100000002000206726f64616a63026e6c0000ff0001c00c0002000100015180000f036e733108696c696d62757267c013c00c00020001000151800006036e7332c02bc02700010001000151800004c2b26281c04200010001000151800004c2b262f7 + +41887 +b841d41f5010446244b90000000000000000 + + +41888 +05790000000100000000000005666172616d026e6c0000010001 +05798000000100000002000005666172616d026e6c0000010001c00c00020001000151800011036e733107636174616c6f6703636f6d00c00c00020001000151800006036e7333c02a + +41889 +0af900000001000000000000036e6967026e6c00001c0001 +0af980000001000000020002036e6967026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +41890 +862600000001000000000000037777770665726f647664026e6c0000010001 +862680000001000000030001037777770665726f647664026e6c0000010001c0100002000100015180000d026e7307696e746f756368c017c01000020001000151800010026e7307696e746f756368036e657400c01000020001000151800007046e733031c047c02b00010001000151800004d413c001 + +41891 +1e5400000001000000000000037777770964652d6c616d70656e026e6c0000010001 +1e5480000001000000020002037777770964652d6c616d70656e026e6c0000010001c01000020001000151800012026e730c696e746572636f6e6e656374c01ac01000020001000151800006036e7332c031c02e00010001000151800004d453c005c04c00010001000151800004d453c006 + +41892 +76da0000000100000000000008686f73746e616d650462696e640000100003 +76da8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41893 +73d90000000100000000000008686f73746e616d650462696e640000100003 +73d98000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41894 +686b0000000100000000000006616c7469756d026e6c0000ff0001 +686b8000000100000002000206616c7469756d026e6c0000ff0001c00c0002000100015180000b026e7305706c616e74c013c00c00020001000151800006036e7332c02ac02700010001000151800004d59f0037c03e00010001000151800004d59f0046 + +41895 +4cbf00000001000000000000037777770a737065726d616e656e74026e6c0000010001 +4cbf80000001000000020002037777770a737065726d616e656e74026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01bc01000020001000151800006036e7332c033c02f00010001000151800004d5efa011c04a00010001000151800004d5efa075 + +41896 +809200000001000000000000116c656575776172646572636f7572616e74026e6c00000f0001 +809280000001000000030003116c656575776172646572636f7572616e74026e6c00000f0001c00c00020001000151800011036e73310a6e6463686f6c64696e67c01ec00c00020001000151800006036e7332c036c00c00020001000151800006036e7333c036c03200010001000151800004c1ad573dc04f00010001000151800004c1ad573ec06100010001000151800004d5880089 + +41897 +12bc00000001000000000000036e7331057072757473026e6c0000010001 +12bc80000001000000020002036e7331057072757473026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccc098c03800010001000151800004d4ccc099 + +41898 +914c0000000100000000000003777777066d6f6c6d6564026e6c0000010001 +914c8000000100000002000003777777066d6f6c6d6564026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +41899 +25de00100001000000000001085049495044433031097069696575726f7065026e6c00000100010000290800000080000000 +25de80000001000000020001085049495044433031097069696575726f7065026e6c0000010001c0150002000100015180001004646e73310574636d7370036e657400c0150002000100015180000d04646e73320574636d6b74c03e0000291000000000000000 + +41900 +64b1000000010000000000000b6c6974746c656a756d626f026e6c0000020001 +64b1800000010000000200020b6c6974746c656a756d626f026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +41901 +885e0000000100000000000004646e73320470696e73026e6c0000010001 +885e8000000100000002000204646e73320470696e73026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d9c26101c00c00010001000151800004d9c26002 + +41902 +41d80000000100000000000004646e73310470696e73026e6c0000010001 +41d88000000100000002000204646e73310470696e73026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d9c26101c03800010001000151800004d9c26002 + +41903 +5dba0000000100000000000003777777107061617264656e696e7a65656c616e64026e6c0000010001 +5dba8000000100000002000003777777107061617264656e696e7a65656c616e64026e6c0000010001c0100002000100015180000c026e7306766576696461c021c01000020001000151800006036e7332c038 + +41904 +bae700000001000000000000037777770a6c65756b657374617274026e6c0000010001 +bae780000001000000030003037777770a6c65756b657374617274026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +41905 +e6540000000100000000000004686966690477696e72026e6c0000010001 +e6548000000100000002000204686966690477696e72026e6c0000010001c0110002000100015180000a026e730469636d63c016c01100020001000151800006036e7332c02dc02a000100010001518000043e643805c040000100010001518000043e643806 + +41906 +c91300000001000000000000026e730374656e026e6c0000010001 +c91380000001000000020001026e730374656e026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c36c4b01 + +41907 +e826000000010000000000000c77656265796564657369676e026e6c00000f0001 +e826800000010000000200020c77656265796564657369676e026e6c00000f0001c00c0002000100015180000d05686f7275730462777373c019c00c0002000100015180000603736875c033c02d00010001000151800004d943e502c04600010001000151800004d943e509 + +41908 +f02e00000001000000000000037777770c696a7373656c737472616e64026e6c0000010001 +f02e80000001000000020001037777770c696a7373656c737472616e64026e6c0000010001c0100002000100015180000a036e733303777873c01dc01000020001000151800006036e7334c035c04700010001000151800004d5ef9a65 + +41909 +2231000000010000000000000377777710736f6369616c657a656b657268656964026e6c0000010001 +2231800000010000000200020377777710736f6369616c657a656b657268656964026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c021c01000020001000151800006036e7332c038c03500010001000151800004c3402003c04e00010001000151800004c340202b + +41910 +637300000001000000000000036e733107737572666e6574026e6c0000010001 +637380000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +41911 +9d340000000100000000000003777777066d61726b7570026e6c0000010001 +9d348000000100000003000103777777066d61726b7570026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +41912 +bbea00000001000000000000037777770472772d6c026e6c0000010001 +bbea80000001000000020000037777770472772d6c026e6c0000010001c0100002000100015180000c026e7306766576696461c015c01000020001000151800006036e7332c02c + +41913 +8209000000010000000000000377777705302d736578026e6c0000010001 +8209800000010000000200020377777705302d736578026e6c0000010001c0100002000100015180000d026e730776697065726276c016c01000020001000151800006036e7332c02dc02a00010001000151800004d5881a07c04300010001000151800004d5881a05 + +41914 +13f000000001000000000000037777770a636173686d6173746572026e6c0000010001 +13f080000001000000020000037777770a636173686d6173746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +41915 +4f7600000001000000000000037777770f73656e736f72796f7665726c6f6164026e6c0000010001 +4f7680000001000000020000037777770f73656e736f72796f7665726c6f6164026e6c0000010001c0100002000100015180000e036e7333046965747a03636f6d00c01000020001000151800006036e7334c038 + +41916 +ca3400000001000000000000036e73330767617574656e67026e6c0000010001 +ca3480000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +41917 +74ad000000010000000000000464733961026e6c00000f0001 +74ad800000010000000200020464733961026e6c00000f0001c00c0002000100015180000b036e73310470696e65c011c00c00020001000151800006036e7332c029c02500010001000151800004d59c0201c03c00010001000151800004c3c1a303 + +41918 +a6bd00000001000000000000095f6b65726265726f73045f746370026463065f6d736463730b4557572d4e45545745524b024e4c0000210001 +a6bd84030001000000010000095f6b65726265726f73045f746370026463065f6d736463730b4557572d4e45545745524b024e4c0000210001c03100060001000038400036026e730f646f6d61696e2d7265676973747279c0310a686f73746d6173746572c0480bf1e540000070800000384000278d0000003840 + +41919 +d4f400000001000000000000036e73320864686f7374696e67026e6c0000010001 +d4f480000001000000020002036e73320864686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02d00010001000151800004515b0370c00c00010001000151800004515b000a + +41920 +ced600000001000000000000036e73330864686f7374696e67026e6c0000010001 +ced680000001000000020002036e73330864686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02d00010001000151800004515b0370c03e00010001000151800004515b000a + +41921 +c7fd00000001000000000000046d61696c0967617465776f726b73026e6c0000010001 +c7fd80000001000000020002046d61696c0967617465776f726b73026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02f00010001000151800004d4ccca29c04100010001000151800004d5efc235 + +41922 +116400000001000000000000046d61696c0967617465776f726b73026e6c00001c0001 +116480000001000000020002046d61696c0967617465776f726b73026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02f00010001000151800004d4ccca29c04100010001000151800004d5efc235 + +41923 +4be800000001000000000000046d61696c0967617465776f726b73026e6c0000260001 +4be880000001000000020002046d61696c0967617465776f726b73026e6c0000260001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02f00010001000151800004d4ccca29c04100010001000151800004d5efc235 + +41924 +7c0800000001000000000000036e73310967617465776f726b73026e6c00001c0001 +7c0880000001000000020002036e73310967617465776f726b73026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccca29c03c00010001000151800004d5efc235 + +41925 +125e00000001000000000000036e73310967617465776f726b73026e6c0000260001 +125e80000001000000020002036e73310967617465776f726b73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccca29c03c00010001000151800004d5efc235 + +41926 +145900000001000000000000046d61696c0967617465776f726b73026e6c0000010001 +145980000001000000020002046d61696c0967617465776f726b73026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c02f00010001000151800004d4ccca29c04100010001000151800004d5efc235 + +41927 +fd1700000001000000000000036e7331076d657961617264026e6c0000010001 +fd1780000001000000020002036e7331076d657961617264026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045104730ac03a000100010001518000045104730b + +41928 +717a00000001000000000000036e7332076d657961617264026e6c0000010001 +717a80000001000000020002036e7332076d657961617264026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000045104730ac00c000100010001518000045104730b + +41929 +a7f8000000010000000000000377777707686f737470726f026e6c0000010001 +a7f8800000010000000200000377777707686f737470726f026e6c0000010001c01000020001000151800019046e7331310e666c6578776562686f7374696e6703636f6d00c01000020001000151800007046e733132c031 + +41930 +b6ab000000010000000000000377777707686f737470726f026e6c0000010001 +b6ab800000010000000200000377777707686f737470726f026e6c0000010001c01000020001000151800019046e7331310e666c6578776562686f7374696e6703636f6d00c01000020001000151800007046e733132c031 + +41931 +df640000000100000000000005646e732d31056c61646f74026e6c0000010001 +df648000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41932 +0a4d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +0a4d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41933 +4c8f000000010000000000000a426c6f6b6d6f6572656e026e6c0000060001 +4c8f840300010000000100000a426c6f6b6d6f6572656e026e6c0000060001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +41934 +4b6c0000000100000000000003777777087569747661617274026e6c00001c0001 +4b6c8000000100000002000203777777087569747661617274026e6c00001c0001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +41935 +80fb0000000100000000000005646e732d32056c61646f74026e6c0000010001 +80fb8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41936 +937100000001000000000000085049495044433031097069696575726f7065026e6c0000010001 +937180000001000000020000085049495044433031097069696575726f7065026e6c0000010001c0150002000100015180001004646e73310574636d7370036e657400c0150002000100015180000d04646e73320574636d6b74c03e + +41937 +614d0000000100000000000006776562666978026e6c0000010001 +614d8000000100000002000206776562666978026e6c0000010001c00c00020001000151800012036e73310b736c61636b736572766572c013c00c00020001000151800006036e7332c02bc027000100010001518000043ed444c0c045000100010001518000043ed44d0a + +41938 +51aa0000000100000000000005646e732d31056c61646f74026e6c0000010001 +51aa8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41939 +19840000000100000000000005646e732d32056c61646f74026e6c0000010001 +19848000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41940 +c60c0000000100000000000006636174656e61026e6c00000f0001 +c60c8000000100000002000206636174656e61026e6c00000f0001c00c0002000100015180000c036e73310563736e6574c013c00c00020001000151800006036e7332c02bc02700010001000151800004c2451012c03f00010001000151800004c2451212 + +41941 +767c00000001000000000000026e730a646f6d65696e686f7374026e6c0000010001 +767c80000001000000020000026e730a646f6d65696e686f7374026e6c0000010001c00f00020001000151800017036e73310d696e746572726567697374657203636f6d00c00f00020001000151800010036e733206776964657873036e657400 + +41942 +a58100000001000000000000036573310a426c6f6b6d6f6572656e026e6c0000060001 +a58184030001000000010000036573310a426c6f6b6d6f6572656e026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +41943 +40670000000100000000000006706574726965026e6c00000f0001 +40678000000100000002000206706574726965026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41944 +3efd00000001000000000000066d6d736d7470056e6574636f026e6c0000010001 +3efd80000001000000020002066d6d736d7470056e6574636f026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c02d00010001000151800004c26d4a82c03f00010001000151800004c26dd146 + +41945 +e94d000000010000000000000b6c6976657075626c697368026e6c0000020001 +e94d800000010000000200020b6c6976657075626c697368026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +41946 +9f4e0000000100000000000003777777056269736f6e026e6c0000010001 +9f4e8000000100000002000203777777056269736f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c016c01000020001000151800006036e7332c02dc02a00010001000151800004d513b013c04700010001000151800004d513b012 + +41947 +4b760000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +4b768000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41948 +7bed00000001000000000000037777770b696e73636872696a76656e026e6c0000010001 +7bed80000001000000030001037777770b696e73636872696a76656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +41949 +859d00000001000000000000076272756d6d656e026e6c00000f0001 +859d80000001000000020000076272756d6d656e026e6c00000f0001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02c + +41950 +121500000001000000000000076e696b68656668066e696b686566026e6c0000010001 +121580000001000000040002076e696b68656668066e696b686566026e6c0000010001c0140002000100015180000704616a6178c014c01400020001000151800007046c656461c014c0140002000100015180000f0564786d6f6e046365726e02636800c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c010c701c04200010001000151800004c010c704 + +41951 +110000000001000000000000046d61696c0b67656c7265766973696f6e026e6c0000010001 +110080000001000000020000046d61696c0b67656c7265766973696f6e026e6c0000010001c0110002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0110002000100015180000d077669312d6e7330026174c03c + +41952 +14de0000000100000000000003777777056d76726476026e6c0000010001 +14de8000000100000002000003777777056d76726476026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c02d + +41953 +fbdb000000010000000000000767736d746f6f6e026e6c00000f0001 +fbdb800000010000000200010767736d746f6f6e026e6c00000f0001c00c0002000100015180000e036e7331076e6564636f6d70c014c00c00020001000151800011036e7332076e6564636f6d70036f726700c02800010001000151800004c3c1a80d + +41954 +389e0000000100000000000006696d616765730c62726f6d6d657273616c6573026e6c0000010001 +389e8000000100000003000006696d616765730c62726f6d6d657273616c6573026e6c0000010001c01300020001000151800017076e73686f73743103737432056c79636575036e657400c0130002000100015180000a076e73686f737432c03cc0130002000100015180000a076e73686f737433c03c + +41955 +12c000000001000000000000036e7331057072757473026e6c0000010001 +12c080000001000000020002036e7331057072757473026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccc098c03800010001000151800004d4ccc099 + +41956 +eb4500000001000000000000076f7574706f73740464733961026e6c0000010001 +eb4580000001000000020002076f7574706f73740464733961026e6c0000010001c0140002000100015180000b036e73310470696e65c019c01400020001000151800006036e7332c031c02d00010001000151800004d59c0201c04400010001000151800004c3c1a303 + +41957 +d5a30000000100000000000002657009706172616d6f756e74026e6c0000010001 +d5a38000000100000002000202657009706172616d6f756e74026e6c0000010001c00f0002000100015180000d036e73310669746e6f7661c019c00f00020001000151800006036e7332c031c02d00010001000151800004d5f4b709c046000100010001518000043e3a43c4 + +41958 +cde80010000100000000000003777777106269626c696f746865656b617373656e026e6c0000010001 +cde88000000100000002000203777777106269626c696f746865656b617373656e026e6c0000010001c0100002000100015180000d036e73310663617374656cc021c01000020001000151800006036e7332c039c03500010001000151800004c3558244c04e00010001000151800004c3558245 + +41959 +326f00000001000000000000037777770e616f6e656e696768747374616e64026e6c0000010001 +326f80000001000000020000037777770e616f6e656e696768747374616e64026e6c0000010001c01000020001000151800010026e73076e65737363697303636f6d00c01000020001000151800006036e7332c036 + +41960 +f1790000000100000000000004656c6a6f026e6c0000010001 +f1798000000100000002000104656c6a6f026e6c0000010001c00c0002000100015180000d036e733106776964657873c011c00c00020001000151800010036e733206776964657873036e657400c02500010001000151800004d4ccc0fc + +41961 +54a50000000100000000000008636c6d65696a6572026e6c00000f0001 +54a58000000100000002000008636c6d65696a6572026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +41962 +00000000b002832c6d8b0000010303010101080a11236100000000000101040202040564 +000080010000000000000000 + +41963 +b843dd9f801085980c6800000101080a1123610101280817 + + +41964 +672100000001000000000000076c697665727365026e6c0000020001 +672180000001000000020002076c697665727365026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +41965 +0c54000000010000000000000377777703666267026e6c0000010001 +0c54800000010000000300010377777703666267026e6c0000010001c0100002000100015180000e026e7308767575727765726bc014c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c046c028000100010001518000043efa0202 + +41966 +3f8a00000001000000000000057374617274087370656c70756e74026e6c0000010001 +3f8a80000001000000020002057374617274087370656c70756e74026e6c0000010001c0120002000100015180000b036e73310470696e65c01bc01200020001000151800006036e7332c033c02f00010001000151800004d59c0201c04600010001000151800004c3c1a303 + +41967 +000000007002faf043bb0000020405b401010402 +000080010000000000000000 + +41968 +77e50000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +77e58000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +41969 +3f0d00000001000000000000036e73310470696e65026e6c0000010001 +3f0d80000001000000020002036e73310470696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d59c0201c03700010001000151800004c3c1a303 + +41970 +452b0000000100000000000109633365656131616133056361626c650777616e61646f6f026e6c00000100010000291000000000000000 +452b8000000100000002000209633365656131616133056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c28600430000291000000000000000 + +41971 +a3f500000001000000000000036e73330564656d6f6e026e6c0000010001 +a3f580000001000000030002036e73330564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +41972 +b36c00000001000000000000046d61696c0a6d756c74726173686970026e6c0000010001 +b36c80000001000000020002046d61696c0a6d756c74726173686970026e6c0000010001c01100020001000151800010026e730a7a65656c616e646e6574c01cc01100020001000151800006036e7332c033c03000010001000151800004d473c0c1c04c00010001000151800004d473c0c3 + +41973 +c0aa0000000100000000000003777777097365786f64726f6d65026e6c0000010001 +c0aa8000000100000002000203777777097365786f64726f6d65026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c01ac01000020001000151800006036e7332c032c02e0001000100015180000452c04516c04b0001000100015180000452c04542 + +41974 +6f4b00000001000000000000056d2d6d2d6d026e6c0000010001 +6f4b80000001000000020000056d2d6d2d6d026e6c0000010001c00c0002000100015180000e026e7305702d69637403636f6d00c00c00020001000151800012026e7309646970737769746368036f726700 + +41975 +e51e0000000100000000000005646e732d31056c61646f74026e6c0000010001 +e51e8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +41976 +4a76000000010000000000000d7069616e6f746563686e69656b026e6c00000f0001 +4a76800000010000000200020d7069616e6f746563686e69656b026e6c00000f0001c00c00020001000151800012036e73310b73697465686f7374696e67c01ac00c00020001000151800006036e7332c032c02e00010001000151800004cf2410f1c04c00010001000151800004cf2410f2 + +41977 +e6e200000001000000000000076172636869766507616e74656e6e61026e6c0000010001 +e6e280000001000000020001076172636869766507616e74656e6e61026e6c0000010001c01400020001000151800005026e73c014c0140002000100015180001306696e666f726d07616e74656e6e6102646b00c03000010001000151800004d995dd13 + +41978 +e69800000001000000000000037777770964656a6172656e3630026e6c0000010001 +e69880000001000000020002037777770964656a6172656e3630026e6c0000010001c0100002000100015180000c036e7331053632357476c01ac01000020001000151800006036e7332c032c02e000100010001518000043ea68ad2c046000100010001518000043ea68ad3 + +41979 +549b000000010000000000000462617261026e6c00000f0001 +549b800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +41980 +5588000000010000000000000966616c6c6261636b320768656262697a7a026e6c0000010001 +5588800000010000000200020966616c6c6261636b320768656262697a7a026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03200010001000151800004c372eb42c044000100010001518000043e320e91 + +41981 +b4e2000000010000000000000966616c6c6261636b320768656262697a7a026e6c00001c0001 +b4e2800000010000000200020966616c6c6261636b320768656262697a7a026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03200010001000151800004c372eb42c044000100010001518000043e320e91 + +41982 +98a8000000010000000000000966616c6c6261636b320768656262697a7a026e6c0000260001 +98a8800000010000000200020966616c6c6261636b320768656262697a7a026e6c0000260001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03200010001000151800004c372eb42c044000100010001518000043e320e91 + +41983 +f5070000000100000000000008657965776f726b730564656d6f6e026e6c0000010001 +f5078000000100000003000208657965776f726b730564656d6f6e026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +41984 +220b0000000100000000000008657965776f726b730564656d6f6e026e6c00001c0001 +220b8000000100000003000208657965776f726b730564656d6f6e026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +41985 +1a380000000100000000000008657965776f726b730564656d6f6e026e6c0000260001 +1a388000000100000003000208657965776f726b730564656d6f6e026e6c0000260001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +41986 +283400000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +283480000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +41987 +e266000000010000000000000966616c6c6261636b310768656262697a7a026e6c0000010001 +e266800000010000000200020966616c6c6261636b310768656262697a7a026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03200010001000151800004c372eb42c044000100010001518000043e320e91 + +41988 +599d000000010000000000000966616c6c6261636b310768656262697a7a026e6c00001c0001 +599d800000010000000200020966616c6c6261636b310768656262697a7a026e6c00001c0001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03200010001000151800004c372eb42c044000100010001518000043e320e91 + +41989 +ef0b00000001000000000000036e73310768656262697a7a026e6c00001c0001 +ef0b80000001000000020002036e73310768656262697a7a026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c372eb42c03a000100010001518000043e320e91 + +41990 +38d100000001000000000000036e73310768656262697a7a026e6c0000260001 +38d180000001000000020002036e73310768656262697a7a026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c372eb42c03a000100010001518000043e320e91 + +41991 +c79900000001000000000000036e73320768656262697a7a026e6c00001c0001 +c79980000001000000020002036e73320768656262697a7a026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c372eb42c00c000100010001518000043e320e91 + +41992 +063000000001000000000000036e73320768656262697a7a026e6c0000260001 +063080000001000000020002036e73320768656262697a7a026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c372eb42c00c000100010001518000043e320e91 + +41993 +ee0e0000000100000000000008657965776f726b730564656d6f6e026e6c0000010001 +ee0e8000000100000003000208657965776f726b730564656d6f6e026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +41994 +141300000001000000000000037777770f73636f6f746572732d6f6e6c696e65026e6c0000010001 +141380000001000000020002037777770f73636f6f746572732d6f6e6c696e65026e6c0000010001c01000020001000151800015036e73310e62656c6c656e656e77696e6e656ec020c01000020001000151800006036e7332c038c03400010001000151800004d994a844c05500010001000151800004d994a845 + +41995 +3f8d001000010000000000010373697306657472616465026e6c00000100010000290800000080000000 +3f8d800000010000000200010373697306657472616465026e6c0000010001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c0310000291000000000000000 + +41996 +11ae000000010000000000000644454d41414e024e4c00000f0001 +11ae800000010000000200020644454d41414e024e4c00000f0001c00c0002000100015180000c026e73067574722d6978c013c00c00020001000151800006036e7332c02ac0270001000100015180000451113206c03f00010001000151800004d5c42806 + +41997 +ef250000000100000000000008686f73746e616d650462696e640000100003 +ef258000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +41998 +7ea00000000100000000000008686f75736561647303696467026e6c0000010001 +7ea08000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +41999 +b843dd9f801885981a0800000101080a1123610e01280817008e9b80000000010001000000000f313330353637303035383030322d320000f900010f313330353637303035383030322d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afc75403c4df500030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000004c4150544f505745524b47524f45500000 + + +42000 +b843ddad801085980bbd00000101080a1123610e01280817 + + +42001 +493c00000001000000000000026e730b4154436f6d707574696e67026e6c0000010001 +493c80000001000000020001026e730b4154436f6d707574696e67026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c36ce519 + +42002 +960f0000000100000000000003777777086365656265656974026e6c0000010001 +960f8000000100000002000203777777086365656265656974026e6c0000010001c01000020001000151800012036e73310b706f776572736572766572c019c01000020001000151800006036e7332c031c02d000100010001518000045104740ac04b000100010001518000045104740b + +42003 +cdae000000010000000000000377777709696b77696c6572696e026e6c0000010001 +cdae840300010000000100000377777709696b77696c6572696e026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42004 +81c700000001000000000000086173636f6e2d6974026e6c00000f0001 +81c780000001000000020001086173636f6e2d6974026e6c00000f0001c00c0002000100015180000a036e733303777873c015c00c00020001000151800006036e7334c02dc03f00010001000151800004d5ef9a65 + +42005 +fda400000001000000000000156c69766573747265616d696e67696e7465726e6574026e6c0000020001 +fda480000001000000020002156c69766573747265616d696e67696e7465726e6574026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec022c00c00020001000151800006036e7332c03ac03600010001000151800004c29f4906c04e00010001000151800004c29fb004 + +42006 +d2cc00000001000000000000036e73310b696e746572616363657373026e6c0000010001 +d2cc80000001000000030001036e73310b696e746572616363657373026e6c0000010001c01000020001000151800002c00cc0100002000100015180001a09756e616c72697330310a6963742d626568656572036e657400c0100002000100015180000c09756e616c7269733032c048c00c00010001000151800004c1ad2362 + +42007 +87db000000010000000000000331373202323101310131026e6c0000010001 +87db840300010000000100000331373202323101310131026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +42008 +452b0000000100000000000009633365656131616133056361626c650777616e61646f6f026e6c0000010001 +452b8000000100000002000109633365656131616133056361626c650777616e61646f6f026e6c0000010001c01c0002000100015180000d026e73046575726f036e657400c01c0002000100015180000d026e73076575726f6e6574c024c05100010001000151800004c2860043 + +42009 +0eb200000001000000000000026e7306787334616c6c026e6c0000010001 +0eb280000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +42010 +45d000000001000000000000036e733206787334616c6c026e6c0000010001 +45d080000001000000030002036e733206787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +42011 +3a7d0000000100000000000009652d6c756e61746963026e6c0000010001 +3a7d8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42012 +f6f700000001000000000000057374617274087370656c70756e74026e6c0000010001 +f6f780000001000000020002057374617274087370656c70756e74026e6c0000010001c0120002000100015180000b036e73310470696e65c01bc01200020001000151800006036e7332c033c02f00010001000151800004d59c0201c04600010001000151800004c3c1a303 + +42013 +3a800000000100000000000009652d6c756e61746963026e6c0000010001 +3a808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42014 +130f0000000100000000000009652d6c756e61746963026e6c0000010001 +130f8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42015 +fc650000000100000000000008747261696e2d6974026e6c00000f0001 +fc658000000100000002000208747261696e2d6974026e6c00000f0001c00c0002000100015180000a036e733103746d6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004d5a0d8fac03f00010001000151800004d5a0d9fa + +42016 +e24600000001000000000000027463036164730974656c656772616166026e6c0000010001 +e24680000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +42017 +b6df00000001000000000000037777770d6672616e7376616e6265657273026e6c0000010001 +b6df80000001000000030000037777770d6672616e7376616e6265657273026e6c0000010001c01000020001000151800011036e733207786f6c7068696e036e657400c01000020001000151800006036e7333c036c01000020001000151800006036e7334c036 + +42018 +84650000000100000000000003697470026e6c00000f0001 +84658000000100000002000003697470026e6c00000f0001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c027 + +42019 +255d00000001000000000000037777770d6d657562656c7374756b6b656e026e6c0000010001 +255d80000001000000030002037777770d6d657562656c7374756b6b656e026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +42020 +df1d000000010000000000000b727575647a616e64657273026e6c00000f0001 +df1d800000010000000200000b727575647a616e64657273026e6c00000f0001c00c0002000100015180000c026e73066863636e6574c018c00c00020001000151800006036e7332c02f + +42021 +b0a7000000010000000000000377777705302d736578026e6c0000010001 +b0a7800000010000000200020377777705302d736578026e6c0000010001c0100002000100015180000d026e730776697065726276c016c01000020001000151800006036e7332c02dc02a00010001000151800004d5881a07c04300010001000151800004d5881a05 + +42022 +67b30000000100000000000007626f68656d656e026e6c0000010001 +67b38000000100000002000207626f68656d656e026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +42023 +49b3000000010000000000000373697306657472616465026e6c0000010001 +49b3800000010000000200000373697306657472616465026e6c0000010001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +42024 +113f00000001000000000000057669657773036d346e026e6c0000010001 +113f80000001000000020000057669657773036d346e026e6c0000010001c01200020001000151800010026e73076379736f6e657403636f6d00c01200020001000151800006036e7331c02d + +42025 +58ef000000010000000000000377777709746f6e6261626f7577026e6c0000010001 +58ef840300010000000100000377777709746f6e6261626f7577026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42026 +25ad00000001000000000000037777770d667973696f7468657261706965026e6c0000010001 +25ad80000001000000020000037777770d667973696f7468657261706965026e6c0000010001c01000020001000151800011036e73310a747265666e6574646e73c01ec01000020001000151800006036e7332c036 + +42027 +28fa00000001000000000000037777770863687279736c6572026e6c0000010001 +28fa80000001000000020001037777770863687279736c6572026e6c0000010001c0100002000100015180001c0964636e6c646d7a30320f6461696d6c657263687279736c6572c019c0100002000100015180000b026e73026e6c036e657400c02d00010001000151800004c14e3f46 + +42028 +1940000000010000000000000b617564696f636f76657273036e6c2d07736974652d6964026e6c0000010001 +1940800000010000000300000b617564696f636f76657273036e6c2d07736974652d6964026e6c0000010001c01c00020001000151800012036e733108626c7565646f6d65036e657400c01c00020001000151800006036e7332c03cc01c00020001000151800006036e7333c03c + +42029 +440800000001000000000000026e73056175646178026e6c0000010001 +440880000001000000020001026e73056175646178026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ad5519 + +42030 +220400000001000000000000026e73056175646178026e6c0000260001 +220480000001000000020001026e73056175646178026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1ad5519 + +42031 +ed1400000001000000000000037777771272657374617572616e746369747968616c6c026e6c0000010001 +ed1480000001000000020001037777771272657374617572616e746369747968616c6c026e6c0000010001c0100002000100015180000a036e733303777873c023c01000020001000151800006036e7334c03bc04d00010001000151800004d5ef9a65 + +42032 +928400000001000000000000086d6f656b6f747465026e6c0000010001 +928480000001000000020000086d6f656b6f747465026e6c0000010001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02c + +42033 +09db00000001000000000000037777770862656e76726f6f6d026e6c0000010001 +09db80000001000000020002037777770862656e76726f6f6d026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +42034 +ff840000000100000000000003777777066b7569706572026e6c0000010001 +ff848000000100000002000203777777066b7569706572026e6c0000010001c01000020001000151800013036e73310c636f6c742d74656c65636f6dc017c01000020001000151800006036e7332c02fc02b00010001000151800004d44ea00dc04a00010001000151800004d44ea00e + +42035 +984b000000010000000000000377777710686f656b737472612d64657672696573026e6c0000010001 +984b800000010000000200010377777710686f656b737472612d64657672696573026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c021c04e00010001000151800004c2860043 + +42036 +e85b00000001000000000000046d61696c10616d65726963616e73746166666f7264026e6c0000010001 +e85b80000001000000020002046d61696c10616d65726963616e73746166666f7264026e6c0000010001c0110002000100015180000f036e733108642d64657369676ec022c01100020001000151800006036e7332c03ac036000100010001518000045054f3f0c051000100010001518000045054f3f1 + +42037 +b32f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b32f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42038 +b9c9000000010000000000000377777709706b6e2d65656c6465026e6c0000010001 +b9c9800000010000000200000377777709706b6e2d65656c6465026e6c0000010001c0100002000100015180001505646e7332300961637469766569737003636f6d00c0100002000100015180000805646e733231c034 + +42039 +5c1b000000010000000000000c6c697a6172642d706f696e74026e6c0000020001 +5c1b800000010000000200020c6c697a6172642d706f696e74026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +42040 +8fd50000000100000000000005646e732d32056c61646f74026e6c0000010001 +8fd58000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42041 +0ad600000001000000000000037777770c756974696e62726162616e74026e6c0000010001 +0ad680000001000000030003037777770c756974696e62726162616e74026e6c0000010001c0100002000100015180000e076e73617574683103626974c01dc0100002000100015180000a076e736175746832c039c0100002000100015180000a076e736175746833c039c03100010001000151800004d5880c33c04b00010001000151800004d5880c3bc06100010001000151800004d4ccc00b + +42042 +a519000000010000000000000a636e63737570706f7274026e6c00000f0001 +a519800000010000000300010a636e63737570706f7274026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc017c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c049c02b000100010001518000043efa0202 + +42043 +97cf000000010000000000001264656b6b65722d62726f6d6d657273686f70026e6c0000010001 +97cf800000010000000200001264656b6b65722d62726f6d6d657273686f70026e6c0000010001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03e + +42044 +dd1000000001000000000000036e7331096e657467726f756e64026e6c0000010001 +dd1080000001000000020002036e7331096e657467726f756e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e415c03c0001000100015180000451046014 + +42045 +3ec200000001000000000000037777770b66756c6c796c6f61646564026e6c0000010001 +3ec280000001000000020002037777770b66756c6c796c6f61646564026e6c0000010001c0100002000100015180000f046e73303107736872696e6574c01cc01000020001000151800007046e733032c035c03000010001000151800004d9c3e743c04b00010001000151800004d9c3e744 + +42046 +6aa2000000010000000000000a696e746572666c657572026e6c00000f0001 +6aa2800000010000000200000a696e746572666c657572026e6c00000f0001c00c00020001000151800014036e73310a61312d626c6f656d656e036e657400c00c00020001000151800006036e7332c02f + +42047 +bf0b000000010000000000000766323234313335057570632d66066368656c6c6f026e6c0000010001 +bf0b800000010000000300030766323234313335057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +42048 +e54f00000001000000000000037777770b636c75622d726163696e67026e6c0000010001 +e54f80000001000000030000037777770b636c75622d726163696e67026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c038c0100002000100015180000a076e73686f737433c038 + +42049 +edc50010000100000000000103777777076d797374617473026e6c00000100010000290800000080000000 +edc58000000100000002000303777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa4050000291000000000000000 + +42050 +9b7600000001000000000000037777770e686f757468616e64656c626c6f6b026e6c0000010001 +9b7680000001000000020002037777770e686f757468616e64656c626c6f6b026e6c0000010001c01000020001000151800011036e73350a6e657461666661697273c01fc01000020001000151800006036e7336c037c03300010001000151800004c1ac2d05c05000010001000151800004c1ac2d06 + +42051 +a6d30000000100000000000003777777107a6164656c6d616b6572696a626f6572026e6c0000010001 +a6d38000000100000003000103777777107a6164656c6d616b6572696a626f6572026e6c0000010001c0100002000100015180000e026e7308767575727765726bc021c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c053c035000100010001518000043efa0202 + +42052 +20ec00000001000000000000037777770a76696c6c616d65646961026e6c0000010001 +20ec80000001000000020002037777770a76696c6c616d65646961026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +42053 +f5bf00000001000000000000037777770d736561736f6e7374726176656c026e6c0000010001 +f5bf80000001000000030000037777770d736561736f6e7374726176656c026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c036c01000020001000151800006036e7333c036 + +42054 +0dc900000001000000000000066d696e6f6377026e6c00000f0001 +0dc980000001000000020001066d696e6f6377026e6c00000f0001c00c00020001000151800015086e732d69736d30310963617067656d696e69c013c00c0002000100015180000b086e732d69736d3032c030c02700010001000151800004d5f4a024 + +42055 +c13f0000000100000000000003777777076d797374617473026e6c0000010001 +c13f8000000100000002000203777777076d797374617473026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +42056 +f7fa0000000100000000000006686f72746563026e6c0000ff0001 +f7fa8000000100000002000206686f72746563026e6c0000ff0001c00c0002000100015180000f036e733108696e74726f776562c013c00c00020001000151800006036e7332c02bc0270001000100015180000450416028c04200010001000151800004c356780c + +42057 +d04f0010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000080000000 +d04f8000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +42058 +678500000001000000000000037777770c6d6f756e7461696e62696b65026e6c0000010001 +678580000001000000030002037777770c6d6f756e7461696e62696b65026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +42059 +1c990000000100000000000003777777046b773163026e6c0000010001 +1c998000000100000002000203777777046b773163026e6c0000010001c01000020001000151800018036e7331117468656e6574776f726b666163746f7279c015c01000020001000151800006036e7332c02dc02900010001000151800004d4cb0c35c04d00010001000151800004d4cb0c34 + +42060 +b1fc0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +b1fc8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +42061 +81dd000000010000000000000a6c6b2d73657276696365026e6c0000020001 +81dd800000010000000200020a6c6b2d73657276696365026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +42062 +45f8000000010000000000000f73656e696f72666c65786f6e696373026e6c0000010001 +45f8800000010000000200020f73656e696f72666c65786f6e696373026e6c0000010001c00c0002000100015180000e036e733107626265796f6e64c01cc00c00020001000151800006036e7332c034c030000100010001518000043eb1900bc04a000100010001518000043eb19002 + +42063 +c184000000010000000000000377777709677369667265616b73026e6c0000010001 +c184800000010000000200000377777709677369667265616b73026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +42064 +a6f000000001000000000000056779617461026e6c00000f0001 +a6f080000001000000020000056779617461026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +42065 +fd010000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +fd018000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42066 +231300000001000000000000077462612d74656e026e6c0000010001 +231380000001000000020001077462612d74656e026e6c0000010001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +42067 +bb8c000000010000000000000d636f6c6f7572732d6772696d65026e6c00000f0001 +bb8c800000010000000200010d636f6c6f7572732d6772696d65026e6c00000f0001c00c0002000100015180000c026e73066e6577696365c01ac00c00020001000151800013036e7332097669727475616c787303636f6d00c02e000100010001518000043e818501 + +42068 +b9a3000000010000000000000770726f66696c65026e6c00000f0001 +b9a3800000010000000200000770726f66696c65026e6c00000f0001c00c0002000100015180000e036e73310464697661036e657400c00c00020001000151800006036e7332c02c + +42069 +427a000000010000000000000d6b6161696d616b656c61617273026e6c00000f0001 +427a800000010000000200020d6b6161696d616b656c61617273026e6c00000f0001c00c0002000100015180000e036e733107686f7477697265c01ac00c00020001000151800006036e7332c032c02e0001000100015180000451044b03c0480001000100015180000451044bc8 + +42070 +1af800000001000000000000026e7306736175727573026e6c0000010001 +1af880000001000000020001026e7306736175727573026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e7304707a7a6c03636f6d00c00c0001000100015180000451112b02 + +42071 +385400000001000000000000076a61636b61737304756c6965026e6c0000010001 +385480000001000000020002076a61636b61737304756c6965026e6c0000010001c0140002000100015180000a036e7331036e7873c019c01400020001000151800006036e7332c031c02d00010001000151800004d973c015c04300010001000151800004d973c102 + +42072 +ed4f00000001000000000000026e7306787334616c6c026e6c00001c0001 +ed4f80000001000000030002026e7306787334616c6c026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +42073 +320900000001000000000000026e7306787334616c6c026e6c0000260001 +320980000001000000030002026e7306787334616c6c026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +42074 +a46000000001000000000000036e733206787334616c6c026e6c00001c0001 +a46080000001000000030002036e733206787334616c6c026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +42075 +c34500000001000000000000036e733206787334616c6c026e6c0000260001 +c34580000001000000030002036e733206787334616c6c026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +42076 +370a0000000100000000000003777777156d6f756e7461696e62696b65616476656e74757265026e6c0000010001 +370a8000000100000002000203777777156d6f756e7461696e62696b65616476656e74757265026e6c0000010001c0100002000100015180000b036e73310461786974c026c01000020001000151800006036e7332c03ec03a000100010001518000043e3a440bc051000100010001518000043e3a440c + +42077 +e6fc00000001000000000000037777770e686f74656c636f6e636965726765026e6c0000010001 +e6fc80000001000000030003037777770e686f74656c636f6e636965726765026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c01fc01000020001000151800006036e7330c036c01000020001000151800006036e7333c036c03300010001000151800004c3561682c05300010001000151800004c3561683c06500010001000151800004d5de0bfa + +42078 +0e810000000100000000000005706f6d617a026e6c00000f0001 +0e818000000100000002000005706f6d617a026e6c00000f0001c00c0002000100015180001504646e73310a65617379736572766572036e657400c00c0002000100015180000704646e7332c02b + +42079 +af4a000000010000000000000c696e747261737572616e6365026e6c0000010001 +af4a800000010000000200020c696e747261737572616e6365026e6c0000010001c00c00020001000151800012026e730c696e746572636f6e6e656374c019c00c00020001000151800006036e7332c030c02d00010001000151800004d453c005c04b00010001000151800004d453c006 + +42080 +1009000000010000000000000377777709706f737462616b6a65026e6c0000010001 +1009800000010000000200000377777709706f737462616b6a65026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c031 + +42081 +1685000000010000000000000476697661026e6c0000010001 +1685800000010000000300000476697661026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029 + +42082 +3aaa0000000100000000000003777777176d616e6167656d656e74737570706f72746576656e7473026e6c0000010001 +3aaa8000000100000002000203777777176d616e6167656d656e74737570706f72746576656e7473026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c028c0100002000100015180001004646e733208636f6e6365707473c028c03c00010001000151800004d5c51c03c05900010001000151800004d5c51e1c + +42083 +38bc000000010000000000000377777704616c6469026e6c0000010001 +38bc800000010000000200000377777704616c6469026e6c0000010001c0100002000100015180001a046e73303904626e69630b62657274656c736d616e6e02646500c01000020001000151800007046e733137c02e + +42084 +1f5b0000000100000000000003777777096372696d656a617a7a026e6c0000010001 +1f5b8403000100000001000003777777096372696d656a617a7a026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42085 +43fc000000010000000000000e756e6c696d697469642d636f6d6d026e6c00000f0001 +43fc840300010000000100000e756e6c696d697469642d636f6d6d026e6c00000f0001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +42086 +8b3f000000010000000000000d6c6b346470726f6a656374656e026e6c0000020001 +8b3f800000010000000200020d6c6b346470726f6a656374656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +42087 +b4c900000001000000000000037777770a7370656c656e6d616172026e6c0000010001 +b4c980000001000000020000037777770a7370656c656e6d616172026e6c0000010001c01000020001000151800018036e73390e666c6578776562686f7374696e6703636f6d00c01000020001000151800007046e733130c033 + +42088 +05e000000001000000000000046c756974026e6c00000f0001 +05e080000001000000020002046c756974026e6c00000f0001c00c00020001000151800015036e73310e70726f6a656b746965636f6c6f72c011c00c00020001000151800006036e7332c029c025000100010001518000043e3a3cb2c046000100010001518000043e3a3cb5 + +42089 +9b5c28000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d7364637309446f6e4369726b656c026e6c000021000100000258001d00000064018508646f6e737276303109446f6e4369726b656c026e6c00 +9b5ca8040000000000000000 + +42090 +5c7900000001000000000000037777770a626f64796d616e696163026e6c0000010001 +5c7980000001000000020000037777770a626f64796d616e696163026e6c0000010001c01000020001000151800015036e73310b7072696f73657276653038036e657400c01000020001000151800006036e7332c033 + +42091 +508e0000000100000000000005736176616c026e6c00000f0001 +508e8000000100000002000005736176616c026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +42092 +5e2900000001000000000000034e533203494e47026e6c0000010001 +5e2980000001000000020002034e533203494e47026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +42093 +3b3a00000001000000000000034e533103494e47026e6c0000010001 +3b3a80000001000000020002034e533103494e47026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +42094 +398400000001000000000000037777770f726963686172646b72656774696e67026e6c0000010001 +398480000001000000030002037777770f726963686172646b72656774696e67026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +42095 +183200000001000000000000086261726d61746f6e026e6c00001c0001 +183280000001000000020002086261726d61746f6e026e6c00001c0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +42096 +da2000000001000000000000037777770d76646e74656c656d6174696361026e6c0000010001 +da2080000001000000020000037777770d76646e74656c656d6174696361026e6c0000010001c01000020001000151800010036e733106626973636f6e036e657400c01000020001000151800006036e7332c036 + +42097 +5208000000010000000000000c6d6174736f6c7574696f6e73026e6c00000f0001 +5208800000010000000200020c6d6174736f6c7574696f6e73026e6c00000f0001c00c0002000100015180000a036e733103647768c019c00c00020001000151800006036e7332c031c02d00010001000151800004d5efb308c04300010001000151800004d5efb303 + +42098 +b843ddad801185980b7b00000101080a1123614f01280817 + + +42099 +b843ddae801085980b7900000101080a1123614f01280818 + + +42100 +087800000001000000000000026d66026e6c00001c0001 +087880000001000000020002026d66026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc00fc00c00020001000151800006036e7332c026c02300010001000151800004c26d0642c03b00010001000151800004c26d0963 + +42101 +eb5f00000001000000000000046d61696c0c6d7573696374656c65636f6d026e6c0000010001 +eb5f80000001000000030003046d61696c0c6d7573696374656c65636f6d026e6c0000010001c0110002000100015180001208736f6c7574696f6e06736f6c636f6ec01ec01100020001000151800006036e7331c03bc01100020001000151800006036e7332c03bc03200010001000151800004d42d2005c05000010001000151800004d42d2003c06200010001000151800004d42d2103 + +42102 +70e2000000010000000000000874697363616c6939026e6c00000f0001 +70e2840300010000000100000874697363616c6939026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +42103 +b68a0000000100000000000004616e73310774697363616c69026e6c0000010001 +b68a8000000100000003000204616e73310774697363616c69026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c00c00010001000151800004c3f14d38c03b00010001000151800004c3f13325 + +42104 +db450000000100000000000004616e73320774697363616c69026e6c0000010001 +db458000000100000003000204616e73320774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c01100020001000151800002c00cc0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c00c00010001000151800004c3f13325 + +42105 +5b780000000100000000000003636669026e6c00000f0001 +5b788000000100000002000203636669026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +42106 +0ffd0000000100000000000007766462636f6d70026e6c00001c0001 +0ffd8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +42107 +00120000000100000000000007766462636f6d70026e6c00001c0001 +00128000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +42108 +383f0000000100000000000003777777127a756964776573742d6e656465726c616e64026e6c0000010001 +383f8000000100000002000003777777127a756964776573742d6e656465726c616e64026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c03b + +42109 +75b7000000010000000000000e636f6e666c657876657268757572026e6c00001c0001 +75b7800000010000000200000e636f6e666c657876657268757572026e6c00001c0001c00c00020001000151800017036e73310d6465696e7465726e65746d616e036e657400c00c00020001000151800006036e7332c033 + +42110 +9b650000000100000000000007736561736f6e73026e6c0000010001 +9b658000000100000003000007736561736f6e73026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02c + +42111 +2b87000000010000000000000e636f6e666c657876657268757572026e6c0000010001 +2b87800000010000000200000e636f6e666c657876657268757572026e6c0000010001c00c00020001000151800017036e73310d6465696e7465726e65746d616e036e657400c00c00020001000151800006036e7332c033 + +42112 +c497000000010000000000000473676e32077369656d656e73026e6c0000010001 +c497800000010000000200020473676e32077369656d656e73026e6c0000010001c01100020001000151800002c00cc011000200010001518000070473676e34c011c00c00010001000151800004c28a8909c03b00010001000151800004c28a890b + +42113 +3fad00000001000000000000037777770973682d74756e696e67026e6c0000010001 +3fad80000001000000020000037777770973682d74756e696e67026e6c0000010001c010000200010001518000100161026e73057a796c6f6e036e657400c010000200010001518000040162c030 + +42114 +f023000000010000000000001073616e6f6d612d756974676576657273026e6c0000010001 +f023800000010000000300001073616e6f6d612d756974676576657273026e6c0000010001c00c00020001000151800010036e733106666173747873036e657400c00c00020001000151800006036e7332c035c00c00020001000151800006036e7333c035 + +42115 +afb700000001000000000000086c6b656e62757267026e6c0000020001 +afb780000001000000020002086c6b656e62757267026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +42116 +664400000001000000000000076d656d6265727304686f6d65026e6c0000010001 +664480000001000000030003076d656d6265727304686f6d65026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c01400020001000151800006036e7333c014c02d00010001000151800004d47842ccc03f00010001000151800004d5338161c05100010001000151800004d533804b + +42117 +815600000001000000000000037777770976616e62696e6e656e026e6c0000010001 +815680000001000000020000037777770976616e62696e6e656e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +42118 +16460000000100000000000003706f700d74656c65636f6d776572656c64026e6c00001c0001 +16468000000100000003000203706f700d74656c65636f6d776572656c64026e6c00001c0001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +42119 +c0390000000100000000000003706f700d74656c65636f6d776572656c64026e6c0000260001 +c0398000000100000003000203706f700d74656c65636f6d776572656c64026e6c0000260001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +42120 +b21800000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +b21880000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42121 +92a300000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c0000260001 +92a380000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42122 +849e00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +849e80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42123 +9e2b00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c0000260001 +9e2b80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42124 +ac4100000001000000000000056f70746973026e6c0000ff0001 +ac4180000001000000020002056f70746973026e6c0000ff0001c00c0002000100015180001a036e733113736d616c6c686f6c642d686f7374696e672d35c012c00c00020001000151800006036e7332c02ac02600010001000151800004d5f72ea0c04c00010001000151800004d5f72ea1 + +42125 +eef200000001000000000000036e733303777873026e6c0000010001 +eef280000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42126 +8c6400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +8c6480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42127 +396000000001000000000000037777770762656c73746174026e6c0000010001 +396080000001000000020000037777770762656c73746174026e6c0000010001c0100002000100015180000f036e73310669706f77657202626500c01000020001000151800006036e7332c030 + +42128 +6d5a000000010000000000001f6c6b6a686473666c6b687766636877616c6b6a6568636a6b776168656a6b63026e6c0000020001 +6d5a840300010000000100001f6c6b6a686473666c6b687766636877616c6b6a6568636a6b776168656a6b63026e6c0000020001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +42129 +5bdf00000001000000000000086e6d736d65646961026e6c00000f0001 +5bdf80000001000000020000086e6d736d65646961026e6c00000f0001c00c00020001000151800014036e73310a346e657461636365737303636f6d00c00c00020001000151800006036e7332c02d + +42130 +5e16000000010000000000000b666d6e686f6c647372763303666d6e026e6c0000010001 +5e16800000010000000200000b666d6e686f6c647372763303666d6e026e6c0000010001c0180002000100015180000b026e73026e6c036e657400c0180002000100015180001206617574683630026e73026e6c027575c036 + +42131 +ad5d0000000100000000000006637962697465026e6c00000f0001 +ad5d8000000100000002000206637962697465026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +42132 +c88900000001000000000000024b47024e4c00001c0001 +c88980000001000000020000024b47024e4c00001c0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c027 + +42133 +60340000000100000000000003777777046b726173026e6c0000010001 +60348000000100000002000003777777046b726173026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +42134 +bdf400000001000000000000086c6b6f72656d616e026e6c0000020001 +bdf480000001000000020002086c6b6f72656d616e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +42135 +76b00010000100000000000103626c3402626c06787334616c6c026e6c00000100010000290800000000000000 +76b08000000100000003000303626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +42136 +4dc500000001000000000000107665726c6f72656e7061726164696a73026e6c00000f0001 +4dc580000001000000020000107665726c6f72656e7061726164696a73026e6c00000f0001c00c0002000100015180000c026e7306766576696461c01dc00c00020001000151800006036e7332c034 + +42137 +1d890000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +1d898000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42138 +41fd00000001000000000000036e7332026973026e6c0000010001 +41fd80000001000000020002036e7332026973026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02700010001000151800004d5852102c00c00010001000151800004d5c41503 + +42139 +ee2d00000001000000000000036e7331026973026e6c0000010001 +ee2d80000001000000020002036e7331026973026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852102c03500010001000151800004d5c41503 + +42140 +0df2000000010000000000000a7265666f6c696472756b026e6c00001c0001 +0df2800000010000000300020a7265666f6c696472756b026e6c00001c0001c00c0002000100015180000d036e733106776964657873c017c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +42141 +c2740000000100000000000006646f726d696f026e6c00000f0001 +c2748000000100000002000206646f726d696f026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42142 +1ebc00000001000000000000036e73320564656d6f6e026e6c00001c0001 +1ebc80000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +42143 +1b76000000010000000000000566696c65730d64657269636b72657468616e73026e6c0000010001 +1b76800000010000000200020566696c65730d64657269636b72657468616e73026e6c0000010001c0120002000100015180000f036e7331086a64696d65646961c020c0120002000100015180000d036e7332066265656b756dc020c03400010001000151800004d4ccc034c04f00010001000151800004d5880e34 + +42144 +9f910000000100000000000003777777086570677569646573026e6c0000010001 +9f918403000100000001000003777777086570677569646573026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +42145 +43cc00000001000000000000036e733104696c7365026e6c0000010001 +43cc80000001000000030003036e733104696c7365026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +42146 +b66400000001000000000000036e733106736f6c636f6e026e6c0000010001 +b66480000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +42147 +6dbc00000001000000000000036e733206736f6c636f6e026e6c0000010001 +6dbc80000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +42148 +3e0d00000001000000000000036e733304696c7365026e6c0000010001 +3e0d80000001000000030003036e733304696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc029000100010001518000043e45a282c03b000100010001518000043e45a283c00c000100010001518000043e45a284 + +42149 +36de0000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +36de8000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +42150 +472100000001000000000000036e733204696c7365026e6c0000010001 +472180000001000000030003036e733204696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e45a282c00c000100010001518000043e45a283c049000100010001518000043e45a284 + +42151 +84a700000001000000000000046164737004696c7365026e6c0000010001 +84a780000001000000030003046164737004696c7365026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02a000100010001518000043e45a282c03c000100010001518000043e45a283c04e000100010001518000043e45a284 + +42152 +b243000000010000000000000d6c6c6174696562656472696a66026e6c0000020001 +b243800000010000000200020d6c6c6174696562656472696a66026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +42153 +6d1c00000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +6d1c80000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42154 +62f700000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +62f780000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42155 +9c7f00000001000000000000036e733503777873026e6c0000010001 +9c7f80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42156 +e30800000001000000000000036e733503777873026e6c00001c0001 +e30880000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42157 +7da300000001000000000000046e73303903777873026e6c00001c0001 +7da380000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +42158 +a30400000001000000000000037777770d76616e62726f6e6b686f727374026e6c0000010001 +a30484030001000000010000037777770d76616e62726f6e6b686f727374026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +42159 +eddd00000001000000000000037777770c72656e6561646d697261616c026e6c0000010001 +eddd80000001000000020002037777770c72656e6561646d697261616c026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +42160 +f26000000001000000000000037777770b646574656c656772616166026e6c0000010001 +f26080000001000000020000037777770b646574656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c034 + +42161 +893400000001000000000000046d61696c0c6a6f6e676c656572746f7564026e6c0000010001 +893480000001000000020000046d61696c0c6a6f6e676c656572746f7564026e6c0000010001c01100020001000151800012036e7333086e6574766c696573036e657400c01100020001000151800006036e7334c036 + +42162 +cbd300000001000000000000037777770c6a657567646a6f75726e616c026e6c0000010001 +cbd384030001000000010000037777770c6a657567646a6f75726e616c026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +42163 +c65f00000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637305616f70656e026e6c0000210001 +c65f80000001000000020001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637305616f70656e026e6c0000210001c0400002000100015180000805616f656164c040c0400002000100015180001507616f676d73303108616f70656e636f6d02646500c05a00010001000151800004d5351002 + +42164 +9b17000000010000000000000e76616e6f73636f6d707574657273026e6c00000f0001 +9b17800000010000000200000e76616e6f73636f6d707574657273026e6c00000f0001c00c00020001000151800010026e73076b69787461727403636f6d00c00c00020001000151800006036e7332c032 + +42165 +55ca00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +55ca80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +42166 +064800000001000000000000037777770c67656469636874656e776562026e6c0000010001 +064880000001000000020002037777770c67656469636874656e776562026e6c0000010001c01000020001000151800013046e732d310b666f782d686f7374696e67c01dc01000020001000151800007046e732d32c036c03100010001000151800004d5bd1374c05000010001000151800004d5bd1675 + +42167 +a35900000001000000000000076c6f6f6b666f72026e6c00000f0001 +a35980000001000000020002076c6f6f6b666f72026e6c00000f0001c00c00020001000151800010026e730a7a65656c616e646e6574c014c00c00020001000151800006036e7332c02bc02800010001000151800004d473c0c1c04400010001000151800004d473c0c3 + +42168 +564f00000001000000000000056c79726973036b766b026e6c0000010001 +564f80000001000000020002056c79726973036b766b026e6c0000010001c0120002000100015180000d026e73076b6e6f77617265c016c01200020001000151800006036e7332c02dc02a00010001000151800004c3402003c04300010001000151800004c340202b + +42169 +bca40000000100000000000003777777096c696e6773666f7274026e6c0000010001 +bca48000000100000002000103777777096c696e6773666f7274026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01ac01000020001000151800006036e7334c032c02e00010001000151800004d5c401c0 + +42170 +9785000000010000000000000764617669737461026e6c00000f0001 +9785800000010000000200010764617669737461026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800010036e7332096379626572636f6d6dc014c02800010001000151800004d5c40246 + +42171 +3e7d000000010000000000000575726975730473656d61026e6c0000010001 +3e7d800000010000000300030575726975730473656d61026e6c0000010001c01200020001000151800012047072693103646e73067073696e6574c017c012000200010001518000070470726932c030c012000200010001518000070470726933c030c02b000100010001518000049a0ff9a6c049000100010001518000049a0ff9aac05c000100010001518000049a0ff9ae + +42172 +02f40000000100000000000009652d6c756e61746963026e6c0000010001 +02f48000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42173 +af8e00000001000000000000037777771164656b6b65726e6174757572737465656e026e6c0000010001 +af8e80000001000000020002037777771164656b6b65726e6174757572737465656e026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c022c01000020001000151800006036e7332c03ac03600010001000151800004d43d0f08c05400010001000151800004d43d19e2 + +42174 +3fe2000000010000000000001b6f6e6465726e656d657273766572656e6967696e676472756e656e026e6c0000010001 +3fe2800000010000000200001b6f6e6465726e656d657273766572656e6967696e676472756e656e026e6c0000010001c00c00020001000151800010036e7331066969686f73740362697a00c00c00020001000151800006036e7332c040 + +42175 +c02300000001000000000000037777770e70737963686961747269656e6574026e6c0000010001 +c02380000001000000020002037777770e70737963686961747269656e6574026e6c0000010001c01000020001000151800010036e7331096d6173746572646e73c01fc01000020001000151800006036e7332c037c033000100010001518000045054f347c04f000100010001518000043e94a047 + +42176 +3eb00000000100000000000006636f726d616e026e6c00000f0001 +3eb08000000100000002000106636f726d616e026e6c00000f0001c00c0002000100015180000a036e733303777873c013c00c00020001000151800006036e7334c02bc03d00010001000151800004d5ef9a65 + +42177 +86c100000001000000000000037777770c64656b7265656b6f65766572026e6c0000010001 +86c180000001000000020002037777770c64656b7265656b6f65766572026e6c0000010001c0100002000100015180000a036e733103697870c01dc01000020001000151800006036e7332c035c03100010001000151800004d943e639c047000100010001518000043efa063f + +42178 +174500000001000000000000037777770c67656469636874656e776562026e6c0000010001 +174580000001000000020002037777770c67656469636874656e776562026e6c0000010001c01000020001000151800013046e732d310b666f782d686f7374696e67c01dc01000020001000151800007046e732d32c036c03100010001000151800004d5bd1374c05000010001000151800004d5bd1675 + +42179 +0ea600000001000000000000077265636f6d6574026e6c0000ff0001 +0ea680000001000000020002077265636f6d6574026e6c0000ff0001c00c0002000100015180000f036e733108696c696d62757267c014c00c00020001000151800006036e7332c02cc02800010001000151800004c2b26281c04300010001000151800004c2b262f7 + +42180 +554300000001000000000000036972630468656c6c026e6c0000010001 +554380000001000000030001036972630468656c6c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc015c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c047c029000100010001518000043efa0202 + +42181 +a1600000000100000000000005646e732d31056c61646f74026e6c0000010001 +a1608000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42182 +54c20000000100000000000005646e732d32056c61646f74026e6c0000010001 +54c28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42183 +0fe4000000010000000000000377777709746f6e6261626f7577026e6c0000010001 +0fe4840300010000000100000377777709746f6e6261626f7577026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42184 +f2010010000100000000000109636865636b73746174026e6c00000100010000290800000080000000 +f2018000000100000002000209636865636b73746174026e6c0000010001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c02a00010001000151800004d4ccc0fc0000291000000000000000 + +42185 +3b000000000100000000000009652d6c756e61746963026e6c0000010001 +3b008000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42186 +1b200000000100000000000009652d6c756e61746963026e6c0000010001 +1b208000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42187 +991600000001000000000000037777770b6f6d6f2d73657276696365026e6c0000010001 +991680000001000000030000037777770b6f6d6f2d73657276696365026e6c0000010001c0100002000100015180001405646e73303408756e696c6576657203636f6d00c0100002000100015180000805646e733032c036c0100002000100015180000805646e733838c036 + +42188 +fc8d0000000100000000000006736764646764026e6c00000f0001 +fc8d8403000100000001000006736764646764026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +42189 +ed480000000100000000000003777777056c696e64610b6869657276726f7577656e026e6c0000010001 +ed488000000100000002000003777777056c696e64610b6869657276726f7577656e026e6c0000010001c01600020001000151800010036e73610674696e74656c03636f6d00c01600020001000151800006036e7362c03a + +42190 +eab20000000100000000000009636865636b73746174026e6c0000010001 +eab28000000100000002000109636865636b73746174026e6c0000010001c00c0002000100015180000d036e733106776964657873c016c00c00020001000151800010036e733206776964657873036e657400c02a00010001000151800004d4ccc0fc + +42191 +9c3000100001000000000001036e7331056132303030026e6c00000100010000290800000080000000 +9c3080000001000000030003036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c01420000291000000000000000 + +42192 +276300100001000000000001036e7332056132303030026e6c00000100010000290800000080000000 +276380000001000000030003036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c01420000291000000000000000 + +42193 +1566000000010000000000000377777703736561026e6c0000010001 +1566800000010000000300010377777703736561026e6c0000010001c0100002000100015180000e026e7308767575727765726bc014c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c046c028000100010001518000043efa0202 + +42194 +09e4000000010000000000000462617261026e6c00000f0001 +09e4800000010000000200020462617261026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +42195 +90ac000000010000000000000f6c6c6f79646c6f6f6d63656e746572026e6c0000020001 +90ac800000010000000200020f6c6c6f79646c6f6f6d63656e746572026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01cc00c00020001000151800006036e7332c034c03000010001000151800004c29f4906c04800010001000151800004c29fb004 + +42196 +fc810000000100000000000007306368656c6c6f026e6c00000f0001 +fc818403000100000001000007306368656c6c6f026e6c00000f0001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +42197 +f09f000000010000000000000e6c696a6672656e7465706f6c69730b676172616e7462656c6567026e6c0000010001 +f09f800000010000000200020e6c696a6672656e7465706f6c69730b676172616e7462656c6567026e6c0000010001c01b0002000100015180000a036e733103647768c027c01b00020001000151800006036e7332c03fc03b00010001000151800004d5efb308c05100010001000151800004d5efb303 + +42198 +1f9800000001000000000000036e7331056369747573026e6c0000010001 +1f9880000001000000020002036e7331056369747573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ed457edc038000100010001518000043ed457ee + +42199 +478900000001000000000000036e7331056369747573026e6c0000260001 +478980000001000000020002036e7331056369747573026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ed457edc038000100010001518000043ed457ee + +42200 +935400000001000000000000036e7332056369747573026e6c0000010001 +935480000001000000020002036e7332056369747573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043ed457edc00c000100010001518000043ed457ee + +42201 +c9aa00000001000000000000036e7332056369747573026e6c0000260001 +c9aa80000001000000020002036e7332056369747573026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a000100010001518000043ed457edc00c000100010001518000043ed457ee + +42202 +579100000001000000000000037777770a636173696e6f63697479026e6c0000010001 +579180000001000000030002037777770a636173696e6f63697479026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +42203 +941c000000010000000000000662616872616d06787334616c6c026e6c0000010001 +941c800000010000000300020662616872616d06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42204 +967a0000000100000000000005626974656c026e6c00000f0001 +967a8000000100000002000205626974656c026e6c00000f0001c00c00020001000151800013036e73310c7570706572686f7374696e67c012c00c00020001000151800006036e7332c02ac02600010001000151800004d994a851c04500010001000151800004d994a852 + +42205 +e1a600100001000000000001036e733503777873026e6c00000100010000290800000000000000 +e1a680000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +42206 +6b1c00000001000000000000037777770f73656e696f72656e2d6d616e75616c026e6c0000010001 +6b1c80000001000000020002037777770f73656e696f72656e2d6d616e75616c026e6c0000010001c01000020001000151800013036e73330c6d6565737465726c696a6b32c020c01000020001000151800006036e7334c038c03400010001000151800004d973ca6ec05300010001000151800004d973ca6f + +42207 +345200000001000000000000046d61696c0b6a6f7577686f7374696e67026e6c0000010001 +345280000001000000030002046d61696c0b6a6f7577686f7374696e67026e6c0000010001c0110002000100015180000f036e7331086c65617365776562c01dc01100020001000151800006036e7332c035c01100020001000151800012036e7333086c65617365776562036f726700c031000100010001518000043ed44079c04c000100010001518000043ed4407a + +42208 +199600000001000000000000086470636c69636b730c706167696e61626568656572026e6c0000010001 +199680000001000000020002086470636c69636b730c706167696e61626568656572026e6c0000010001c0150002000100015180000e026e7308696e7465722d6974c022c01500020001000151800006036e7332c039c03600010001000151800004d5c4385ac05000010001000151800004d5c4385b + +42209 +0af500000001000000000000146f6e6465726e656d6572736b6c616e6b626f7264026e6c00001c0001 +0af580000001000000020000146f6e6465726e656d6572736b6c616e6b626f7264026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c03b + +42210 +a02500000001000000000000046d61696c0a77696d64696a6b6d616e026e6c0000010001 +a02580000001000000020001046d61696c0a77696d64696a6b6d616e026e6c0000010001c0110002000100015180000d026e7307696e746f756368c01cc01100020001000151800012046e73303107696e746f756368036e657400c03000010001000151800004d413c001 + +42211 +b14a0000000100000000000008696e6574676174650963617067656d696e69026e6c00000f0001 +b14a8000000100000003000308696e6574676174650963617067656d696e69026e6c00000f0001c01500020001000151800007046e736531c015c01500020001000151800007046e736532c015c0150002000100015180000b086e732d69736d3031c015c03300010001000151800004c6b8e70dc04600010001000151800004c6b8e70cc05900010001000151800004d5f4a024 + +42212 +384600000001000000000000036e733503777873026e6c0000010001 +384680000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42213 +608f00000001000000000000036e733403777873026e6c0000010001 +608f80000001000000030003036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +42214 +b19100000001000000000000056b686f6273026e6c0000ff0001 +b19180000001000000030001056b686f6273026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +42215 +4205010000010000000000000377777707666c6162626572026e6c0000010001 +4205810000010000000300020377777707666c6162626572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42216 +81bf00000001000000000000036e73320c692d6d6167696e6174696f6e026e6c0000010001 +81bf80000001000000020002036e73320c692d6d6167696e6174696f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc031000100010001518000043ed44c22c00c000100010001518000043ed44c23 + +42217 +cb4200000001000000000000037777770b616a6d68656e6472696b73026e6c0000010001 +cb4280000001000000020002037777770b616a6d68656e6472696b73026e6c0000010001c01000020001000151800011036e73310a746f62656f6e6c696e65c01cc01000020001000151800006036e7332c034c030000100010001518000043eddd4afc04d000100010001518000043eddc707 + +42218 +ca0e00000001000000000000036e7331056132303030026e6c0000010001 +ca0e80000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +42219 +e50700000001000000000000036e7332056132303030026e6c0000010001 +e50780000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +42220 +3f180000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +3f188000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42221 +772000000001000000000000037777771365766572732d6b6173736173797374656d656e026e6c0000010001 +772080000001000000030003037777771365766572732d6b6173736173797374656d656e026e6c0000010001c0100002000100015180000c036e7331056d61786573c024c01000020001000151800006036e7332c03cc01000020001000151800006036e7333c03cc038000100010001518000045045402ec050000100010001518000045045402fc062000100010001518000045045440a + +42222 +123400000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +123480000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +42223 +f15c0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +f15c8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42224 +fc2f0000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +fc2f8000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42225 +a10e00000001000000000000037777770c726f6265636f646972656374026e6c0000010001 +a10e80000001000000020001037777770c726f6265636f646972656374026e6c0000010001c0100002000100015180000d036e733106726f6265636fc01dc0100002000100015180000b026e73026e6c036e657400c03100010001000151800004913d1a01 + +42226 +fe9c000000010000000000000b6174746163686d656e747308696c73656d61696c026e6c0000010001 +fe9c800000010000000300030b6174746163686d656e747308696c73656d61696c026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800006036e7332c018c01800020001000151800006036e7333c018c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +42227 +debb0000000100000000000003777777036e6c72026e6c0000010001 +debb8000000100000002000203777777036e6c72026e6c0000010001c0100002000100015180000906737069646572c010c0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004891150c8c03d00010001000151800004c0576a65 + +42228 +de5c00000001000000000000066974756262790a7072696e63656e2d6974026e6c0000010001 +de5c80000001000000020002066974756262790a7072696e63656e2d6974026e6c0000010001c0130002000100015180000b087072696e63656e31c013c01300020001000151800002c00cc03200010001000151800004d5880f02c00c000100010001518000043e3aa60b + +42229 +0d2200000001000000000000087072696e63656e310a7072696e63656e2d6974026e6c0000010001 +0d2280000001000000020002087072696e63656e310a7072696e63656e2d6974026e6c0000010001c01500020001000151800002c00cc0150002000100015180000906697475626279c015c00c00010001000151800004d5880f02c042000100010001518000043e3aa60b + +42230 +46f200000001000000000000066974756262790a7072696e63656e2d6974026e6c00001c0001 +46f280000001000000020002066974756262790a7072696e63656e2d6974026e6c00001c0001c0130002000100015180000b087072696e63656e31c013c01300020001000151800002c00cc03200010001000151800004d5880f02c00c000100010001518000043e3aa60b + +42231 +8a8d00000001000000000000066974756262790a7072696e63656e2d6974026e6c0000260001 +8a8d80000001000000020002066974756262790a7072696e63656e2d6974026e6c0000260001c0130002000100015180000b087072696e63656e31c013c01300020001000151800002c00cc03200010001000151800004d5880f02c00c000100010001518000043e3aa60b + +42232 +ea5800000001000000000000087072696e63656e310a7072696e63656e2d6974026e6c00001c0001 +ea5880000001000000020002087072696e63656e310a7072696e63656e2d6974026e6c00001c0001c01500020001000151800002c00cc0150002000100015180000906697475626279c015c00c00010001000151800004d5880f02c042000100010001518000043e3aa60b + +42233 +15de00000001000000000000087072696e63656e310a7072696e63656e2d6974026e6c0000260001 +15de80000001000000020002087072696e63656e310a7072696e63656e2d6974026e6c0000260001c01500020001000151800002c00cc0150002000100015180000906697475626279c015c00c00010001000151800004d5880f02c042000100010001518000043e3aa60b + +42234 +0ac000000001000000000000036e733104686f6d65026e6c0000010001 +0ac080000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +42235 +37a200000001000000000000037777770f73706161726e776f7564656c6f6f70026e6c0000010001 +37a280000001000000030001037777770f73706161726e776f7564656c6f6f70026e6c0000010001c0100002000100015180000e026e7308767575727765726bc020c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c052c034000100010001518000043efa0202 + +42236 +3f0f0000000100000000000003777777053276696577026e6c0000010001 +3f0f8000000100000002000203777777053276696577026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec016c01000020001000151800006036e7332c02ec02a00010001000151800004d5efb105c04600010001000151800004505faa0a + +42237 +737600000001000000000000046265636f046c696e6b076861636b746963026e6c0000ff0001 +737680000001000000020002046265636f046c696e6b076861636b746963026e6c0000ff0001c0160002000100015180000c026e7306787334616c6cc01ec01600020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +42238 +119b00000001000000000000037777770f62696572656e62726f6f6473706f74026e6c0000010001 +119b80000001000000020000037777770f62696572656e62726f6f6473706f74026e6c0000010001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c037 + +42239 +afe4000000010000000000000b776573746572776f6c6465026e6c00000f0001 +afe4800000010000000200000b776573746572776f6c6465026e6c00000f0001c00c00020001000151800012036e73310b696e7465722d63616e616cc018c00c00020001000151800006036e7332c030 + +42240 +f0070000000100000000000003777777106d61676e6565746d616b656c61617273026e6c0000010001 +f0078000000100000002000203777777106d61676e6565746d616b656c61617273026e6c0000010001c01000020001000151800019036e73311277696e646b7261636874696e7465726e6574c021c01000020001000151800006036e7332c039c0350001000100015180000450f2eea1c05a0001000100015180000450f2eea2 + +42241 +3b570000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +3b578000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42242 +b03900000001000000000000037777770b6c696a66656e6c6564656e026e6c0000010001 +b03980000001000000030001037777770b6c696a66656e6c6564656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01cc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ec030000100010001518000043efa0202 + +42243 +7ccf00000001000000000000037777770c6d6f6e73746572626f617264026e6c0000010001 +7ccf80000001000000030000037777770c6d6f6e73746572626f617264026e6c0000010001c0100002000100015180000e036e733104746d7077036e657400c01000020001000151800006036e7332c035c01000020001000151800015056f73636172076d6f6e7374657202636f02756b00 + +42244 +c89500000001000000000000037777771077696a6761616e6e6161726b72657461026e6c0000010001 +c89580000001000000020000037777771077696a6761616e6e6161726b72657461026e6c0000010001c0100002000100015180000c026e7306766576696461c021c01000020001000151800006036e7332c038 + +42245 +ce750000000100000000000003687362026e6c00000f0001 +ce758000000100000002000203687362026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc010c00c00020001000151800006036e7332c027c02400010001000151800004c26d0642c03c00010001000151800004c26d0963 + +42246 +ffdb000000010000000000000377777706617564696163026e6c0000010001 +ffdb800000010000000300020377777706617564696163026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +42247 +97fc00000001000000000000036e7331046372696f026e6c0000010001 +97fc80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +42248 +54d400000001000000000000036e7332046372696f026e6c0000010001 +54d480000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +42249 +63a600000001000000000000037777770a72656372656174696566026e6c0000010001 +63a680000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +42250 +281a0000000100000000000003777777056164726573026e6c0000010001 +281a8000000100000002000203777777056164726573026e6c0000010001c01000020001000151800009036e7331026973c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +42251 +435b00000001000000000000037777770a72656372656174696566026e6c0000010001 +435b80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +42252 +c6e600100001000000000001024e530743495354524f4e024e4c00000100010000290800000080000000 +c6e680000001000000020003024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f380000291000000000000000 + +42253 +17e400000001000000000000037777770c64616e63657472697070696e026e6c0000010001 +17e480000001000000020002037777770c64616e63657472697070696e026e6c0000010001c0100002000100015180000a036e7331036e7873c01dc01000020001000151800006036e7332c035c03100010001000151800004d973c015c04700010001000151800004d973c102 + +42254 +b9220000000100000000000013626561746c657569747a656e64627572656175026e6c00001c0001 +b9228403000100000001000013626561746c657569747a656e64627572656175026e6c00001c0001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +42255 +3e1e00000001000000000000037777770b686170707974726176656c026e6c0000010001 +3e1e80000001000000020002037777770b686170707974726176656c026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01cc0100002000100015180001004646e733208636f6e6365707473c01cc03000010001000151800004d5c51c03c04d00010001000151800004d5c51e1c + +42256 +a2ef00000001000000000000037777770b7a6f6e6e6570616c656973026e6c0000010001 +a2ef80000001000000020002037777770b7a6f6e6e6570616c656973026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01cc01000020001000151800006036e7332c033c03000010001000151800004d4cb0e42c04b00010001000151800004d4cb1221 + +42257 +de7500000001000000000000026e7309656174736572766572026e6c0000010001 +de7580000001000000020002026e7309656174736572766572026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d4cb0e42c03b00010001000151800004d4cb1221 + +42258 +9101000000010000000000000977657373656c696e67026e6c00000f0001 +9101800000010000000200010977657373656c696e67026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800010036e7332097073636f6e73756c74c016c02a00010001000151800004d4eefc59 + +42259 +77e100000001000000000000036e733209656174736572766572026e6c0000010001 +77e180000001000000020002036e733209656174736572766572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02e00010001000151800004d4cb0e42c00c00010001000151800004d4cb1221 + +42260 +dc0100000001000000000000036c6c79026e6c0000020001 +dc0180000001000000020002036c6c79026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +42261 +af440000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +af448000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42262 +41e300000001000000000000026168026e6c00000f0001 +41e380000001000000020001026168026e6c00000f0001c00c0002000100015180000b026e730561686f6c64c00fc00c0002000100015180000d036e7332036b706e036e657400c023000100010001518000048d5d2302 + +42263 +43d40000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +43d48000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42264 +4a5200000001000000000000046e73303803777873026e6c00001c0001 +4a5280000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +42265 +c7d500000001000000000000046e73303903777873026e6c00001c0001 +c7d580000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +42266 +09cf00000001000000000000036e733503777873026e6c0000010001 +09cf80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42267 +ef6800000001000000000000036e733503777873026e6c00001c0001 +ef6880000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42268 +5f8900000001000000000000037777770a7376666c616d696e676f026e6c0000010001 +5f8980000001000000020000037777770a7376666c616d696e676f026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c033 + +42269 +727d00000001000000000000024e530743495354524f4e024e4c0000010001 +727d80000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +42270 +73510000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +73518000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42271 +2de80000000100000000000005646e732d31056c61646f74026e6c0000010001 +2de88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42272 +87e9000000010000000000000c6c6d627665726d65756c656e026e6c0000020001 +87e9800000010000000200020c6c6d627665726d65756c656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +42273 +0eb900000001000000000000036e7334076e656473746174026e6c0000010001 +0eb980000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42274 +74e800000001000000000000036e7333076e656473746174026e6c00001c0001 +74e880000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42275 +3ea800000001000000000000036e7332076e656473746174026e6c0000260001 +3ea880000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42276 +9bc300000001000000000000036e7333076e656473746174026e6c0000260001 +9bc380000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42277 +0a8b00000001000000000000036e7332076e656473746174026e6c00001c0001 +0a8b80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42278 +163900000001000000000000026e7307706167656e6963026e6c0000010001 +163980000001000000030001026e7307706167656e6963026e6c0000010001c00f00020001000151800013026e730d7061676570726f636573736f72c017c00f00020001000151800006036e7332c02ec00f0002000100015180000d036e73320663617374656cc017c05c00010001000151800004c3558245 + +42279 +4eb6000000010000000000000956314139392d4657310d486176656e7374616574652d32026e6c0000060001 +4eb6840300010000000100000956314139392d4657310d486176656e7374616574652d32026e6c0000060001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +42280 +0e9600000001000000000000026e7307706167656e6963026e6c0000260001 +0e9680000001000000030001026e7307706167656e6963026e6c0000260001c00f00020001000151800013026e730d7061676570726f636573736f72c017c00f00020001000151800006036e7332c02ec00f0002000100015180000d036e73320663617374656cc017c05c00010001000151800004c3558245 + +42281 +03ab00000001000000000000036e733207706167656e6963026e6c0000010001 +03ab80000001000000030001036e733207706167656e6963026e6c0000010001c01000020001000151800013026e730d7061676570726f636573736f72c018c01000020001000151800006036e7332c02fc0100002000100015180000d036e73320663617374656cc018c05d00010001000151800004c3558245 + +42282 +88c500000001000000000000036e733207706167656e6963026e6c0000260001 +88c580000001000000030001036e733207706167656e6963026e6c0000260001c01000020001000151800013026e730d7061676570726f636573736f72c018c01000020001000151800006036e7332c02fc0100002000100015180000d036e73320663617374656cc018c05d00010001000151800004c3558245 + +42283 +2de90000000100000000000005646e732d32056c61646f74026e6c0000010001 +2de98000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42284 +734e0000000100000000000003777777086a75737469746965026e6c0000010001 +734e8000000100000002000003777777086a75737469746965026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c033 + +42285 +1dd800100001000000000001026e73086d61696e636f7265026e6c00000100010000290800000000000000 +1dd880000001000000020003026e73086d61696e636f7265026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000906736572766572c00fc00c00010001000151800004d5bd130cc03a00010001000151800004d5bd130b0000291000000000000000 + +42286 +8eeb000000010000000000000c73616c617269736578747261026e6c00000f0001 +8eeb800000010000000200020c73616c617269736578747261026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +42287 +871900100001000000000001026e73086d61696e636f7265026e6c00002600010000290800000000000000 +871980000001000000020003026e73086d61696e636f7265026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000906736572766572c00fc00c00010001000151800004d5bd130cc03a00010001000151800004d5bd130b0000291000000000000000 + +42288 +5b6a00000001000000000000096465736d6f657a6572026e6c00000f0001 +5b6a80000001000000020002096465736d6f657a6572026e6c00000f0001c00c0002000100015180000d05686f7275730462777373c016c00c0002000100015180000603736875c030c02a00010001000151800004d943e502c04300010001000151800004d943e509 + +42289 +ccae0010000100000000000106736572766572086d61696e636f7265026e6c00000100010000290800000000000000 +ccae8000000100000002000306736572766572086d61696e636f7265026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800002c00cc03000010001000151800004d5bd130cc00c00010001000151800004d5bd130b0000291000000000000000 + +42290 +33250010000100000000000106736572766572086d61696e636f7265026e6c00002600010000290800000000000000 +33258000000100000002000306736572766572086d61696e636f7265026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800002c00cc03000010001000151800004d5bd130cc00c00010001000151800004d5bd130b0000291000000000000000 + +42291 +bd9800000001000000000000036e733103757063026e6c0000010001 +bd9880000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +42292 +302c00000001000000000000055f6c646170045f7463702437393366636439622d313839332d343664622d383563302d63316533393061613833633907646f6d61696e73065f6d736463730862657267746f7973026e6c0000210001 +302c80000001000000030003055f6c646170045f7463702437393366636439622d313839332d343664622d383563302d63316533393061613833633907646f6d61696e73065f6d736463730862657267746f7973026e6c0000210001c04b0002000100015180000e076e73617574683103626974c054c04b0002000100015180000a076e736175746832c070c04b0002000100015180000a076e736175746833c070c06800010001000151800004d5880c33c08200010001000151800004d5880c3bc09800010001000151800004d4ccc00b + +42293 +255300000001000000000000076d6161722d733207746c6f67696373026e6c0000010001 +255380000001000000020002076d6161722d733207746c6f67696373026e6c0000010001c0140002000100015180000b047072693103646e73c014c014000200010001518000070470726932c035c03000010001000151800004d443abd4c047000100010001518000043eb43fd2 + +42294 +cfee000000010000000000000377777708676f72696c6c6173026e6c0000010001 +cfee800000010000000200000377777708676f72696c6c6173026e6c0000010001c0100002000100015180000c026e7306766576696461c019c01000020001000151800006036e7332c030 + +42295 +c781000000010000000000000c64616d656e2d747275636b73026e6c0000ff0001 +c781800000010000000300020c64616d656e2d747275636b73026e6c0000ff0001c00c0002000100015180000f036e7331086c65617365776562c019c00c00020001000151800006036e7332c031c00c00020001000151800012036e7333086c65617365776562036f726700c02d000100010001518000043ed44079c048000100010001518000043ed4407a + +42296 +acb5000000010000000000000577326b6331066e7434616c6c026e6c0000010001 +acb5800000010000000200020577326b6331066e7434616c6c026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e733206787334616c6cc019c02d00010001000151800004c26d3402c03e00010001000151800004c26d0963 + +42297 +b3730000000100000000000003777777096d65646961706c7573026e6c0000010001 +b3738000000100000002000203777777096d65646961706c7573026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +42298 +ef7a000000010000000000000761647669736965026e6c00000f0001 +ef7a800000010000000200010761647669736965026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180000e036e73310774697363616c69c014c028000100010001518000043e3ab3ae + +42299 +848800000001000000000000026e73076e656473746174026e6c0000010001 +848880000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42300 +1f8f00000001000000000000036e733107737572666e6574026e6c0000010001 +1f8f80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +42301 +6229000000010000000000000673696d6f6e73026e6c0000010001 +6229800000010000000200020673696d6f6e73026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42302 +8e4b0000000100000000000004616f6573026e6c0000010001 +8e4b8000000100000002000204616f6573026e6c0000010001c00c0002000100015180000c036e73310563736e6574c011c00c00020001000151800006036e7332c029c02500010001000151800004c2451012c03d00010001000151800004c2451212 + +42303 +8af700100001000000000001026e73066863636e6574026e6c00000100010000290800000080000000 +8af780000001000000020001026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c0310000291000000000000000 + +42304 +68ea0000000100000000000004646e7331036f3277026e6c0000010001 +68ea8000000100000003000204646e7331036f3277026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c01100020001000151800010036e733103686574036e6574026a6500c00c00010001000151800004d5e38dd4c03700010001000151800004d5e38dcd + +42305 +52500000000100000000000004646e7332036f3277026e6c0000010001 +52508000000100000003000204646e7332036f3277026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc01100020001000151800010036e733103686574036e6574026a6500c02900010001000151800004d5e38dd4c00c00010001000151800004d5e38dcd + +42306 +9d8f00000001000000000000037777770a746f6d6d79736a6f686e026e6c0000010001 +9d8f80000001000000020001037777770a746f6d6d79736a6f686e026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c02f00010001000151800004d4ccc0fc + +42307 +a32600000001000000000000036e73320870726f7365727665026e6c0000010001 +a32680000001000000030002036e73320870726f7365727665026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c02d000100010001518000045054e055c05d00010001000151800004d4ccc655 + +42308 +a32700000001000000000000036e73310870726f7365727665026e6c0000010001 +a32780000001000000030002036e73310870726f7365727665026e6c0000010001c01000020001000151800002c00cc01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c010c00c000100010001518000045054e055c05900010001000151800004d4ccc655 + +42309 +46f000000001000000000000026168026e6c00000f0001 +46f080000001000000020001026168026e6c00000f0001c00c0002000100015180000b026e730561686f6c64c00fc00c0002000100015180000d036e7332036b706e036e657400c023000100010001518000048d5d2302 + +42310 +04a100000001000000000000037777770e6d6161737472696368742d776562026e6c0000010001 +04a180000001000000020000037777770e6d6161737472696368742d776562026e6c0000010001c0100002000100015180000c026e7306766576696461c01fc01000020001000151800006036e7332c036 + +42311 +024b000000010000000000000377777707686161726c656d026e6c0000010001 +024b800000010000000200000377777707686161726c656d026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +42312 +ed3f00000001000000000000046c6e6269026e6c0000020001 +ed3f80000001000000020002046c6e6269026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +42313 +a91f00000001000000000000037777770662726974616d026e6c0000010001 +a91f80000001000000020001037777770662726974616d026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +42314 +f40c00000001000000000000056b656c6c79026e6c00000f0001 +f40c80000001000000020002056b656c6c79026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c012c00c00020001000151800013036e73320c636f6e63657074732d696374c012c02600010001000151800004d5c51c03c04300010001000151800004d5c51e4b + +42315 +bc4c00000001000000000000026e73086d61696e636f7265026e6c0000010001 +bc4c80000001000000020002026e73086d61696e636f7265026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000906736572766572c00fc00c00010001000151800004d5bd130cc03a00010001000151800004d5bd130b + +42316 +6f7c00000001000000000000026e73086d61696e636f7265026e6c0000260001 +6f7c80000001000000020002026e73086d61696e636f7265026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000906736572766572c00fc00c00010001000151800004d5bd130cc03a00010001000151800004d5bd130b + +42317 +1bfa0000000100000000000006736572766572086d61696e636f7265026e6c0000010001 +1bfa8000000100000002000206736572766572086d61696e636f7265026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800002c00cc03000010001000151800004d5bd130cc00c00010001000151800004d5bd130b + +42318 +c6ba0000000100000000000006736572766572086d61696e636f7265026e6c0000260001 +c6ba8000000100000002000206736572766572086d61696e636f7265026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800002c00cc03000010001000151800004d5bd130cc00c00010001000151800004d5bd130b + +42319 +6cd800000001000000000000067a7376737561026e6c0000010001 +6cd884030001000000010000067a7376737561026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +42320 +664e00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +664e80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42321 +508900000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +508980000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42322 +d3fd00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +d3fd80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42323 +3bb800000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +3bb880000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42324 +c4ec00000001000000000000037777770c666f746f2d7061766f6e6961026e6c0000010001 +c4ec80000001000000030003037777770c666f746f2d7061766f6e6961026e6c0000010001c01000020001000151800014026e730e61726765776562686f7374696e67c01dc01000020001000151800006036e7330c034c01000020001000151800006036e7333c034c03100010001000151800004c3561682c05100010001000151800004c3561683c06300010001000151800004d5de0bfa + +42325 +b72c000000010000000000000377777710776f6e696e67636f72706f7261746965026e6c0000010001 +b72c800000010000000200000377777710776f6e696e67636f72706f7261746965026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c039 + +42326 +53b100000001000000000000037777770e666f726d756c65316e6965757773026e6c0000010001 +53b180000001000000020000037777770e666f726d756c65316e6965757773026e6c0000010001c01000020001000151800011036e73310777697a7a6c657203636f6d00c01000020001000151800006036e7332c037 + +42327 +36010000000100000000000005666f72756d0d6c696e75782d73637269707473026e6c0000010001 +36018000000100000002000205666f72756d0d6c696e75782d73637269707473026e6c0000010001c0120002000100015180000c036e7331056765656b6fc020c01200020001000151800006036e7332c038c03400010001000151800004414b831ec04c00010001000151800004c35127f9 + +42328 +222b0000000100000000000003677672026e6c00000f0001 +222b8000000100000002000003677672026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c028 + +42329 +09d000000001000000000000037777770d6465206d757365756d67696473026e6c0000010001 +09d084030001000000010000037777770d6465206d757365756d67696473026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +42330 +d56a00000001000000000000037777770a7765737465727061726b026e6c0000010001 +d56a80000001000000020002037777770a7765737465727061726b026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01bc01000020001000151800006036e7332c032c02f00010001000151800004c3402003c04800010001000151800004c340202b + +42331 +ed2300000001000000000000057374632d72026e6c0000010001 +ed2380000001000000020001057374632d72026e6c0000010001c00c0002000100015180000e036e7331077374632d6f6c63c012c00c0002000100015180000d036e7332036b706e036e657400c02600010001000151800004c1ad1c42 + +42332 +afbb0000000100000000000006737165657a790564656d6f6e026e6c0000010001 +afbb8000000100000003000206737165657a790564656d6f6e026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c0130002000100015180000f036e73320564656d6f6e036e657400c02d00010001000151800004c29f4906c03f00010001000151800004c29fb004 + +42333 +657c00000001000000000000037777770d76646e74656c656d6174696361026e6c0000010001 +657c80000001000000020000037777770d76646e74656c656d6174696361026e6c0000010001c01000020001000151800010036e733106626973636f6e036e657400c01000020001000151800006036e7332c036 + +42334 +634c00100001000000000001026e73076e656473746174026e6c00000100010000290800000000000000 +634c80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +42335 +31a600100001000000000001036e7333076e656473746174026e6c00000100010000290800000000000000 +31a680000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +42336 +e06000000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +e06080000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42337 +33d5000000010000000000000c73323030323038323030313203736e73026e6c0000010001 +33d5800000010000000200000c73323030323038323030313203736e73026e6c0000010001c0190002000100015180000d036e7331036b706e036e657400c01900020001000151800006036e7332c035 + +42338 +7f8400000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +7f8480000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42339 +923f00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +923f80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42340 +e2cb00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +e2cb80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +42341 +674a0000000100000000000003777777086c616e67686f7574026e6c0000010001 +674a8000000100000002000003777777086c616e67686f7574026e6c0000010001c01000020001000151800013036e733109752d73657276657273036e657400c01000020001000151800006036e7332c031 + +42342 +f6d600000001000000000000037777770a696e746572616a616e73026e6c0000010001 +f6d680000001000000020002037777770a696e746572616a616e73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01bc01000020001000151800006036e7332c032c02f00010001000151800004d4cb0e42c04a00010001000151800004d4cb1221 + +42343 +479900000001000000000000026e73076e656473746174026e6c00001c0001 +479980000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42344 +6ece00000001000000000000026e73076e656473746174026e6c0000260001 +6ece80000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42345 +4d7e00000001000000000000036e7332076e656473746174026e6c0000010001 +4d7e80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42346 +f45300000001000000000000036e7332076e656473746174026e6c00001c0001 +f45380000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42347 +ad0c00000001000000000000036e7332076e656473746174026e6c0000260001 +ad0c80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42348 +9acd00000001000000000000036e7333076e656473746174026e6c00001c0001 +9acd80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42349 +1b6100000001000000000000036e7333076e656473746174026e6c0000260001 +1b6180000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42350 +52f600000001000000000000036e7334076e656473746174026e6c0000010001 +52f680000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42351 +45ee00000001000000000000036e7334076e656473746174026e6c00001c0001 +45ee80000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42352 +36a000000001000000000000036e7334076e656473746174026e6c0000260001 +36a080000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42353 +879c00000001000000000000036e7332056132303030026e6c0000010001 +879c80000001000000030002036e7332056132303030026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800002c00cc02a000100010001518000043e6c0141c00c000100010001518000043e6c0142 + +42354 +ac8400000001000000000000036e7331056132303030026e6c0000010001 +ac8480000001000000030002036e7331056132303030026e6c0000010001c01000020001000151800002c00cc01000020001000151800010036e733109756e69736f75726365c016c01000020001000151800006036e7332c010c00c000100010001518000043e6c0141c054000100010001518000043e6c0142 + +42355 +94d200000001000000000000046d61696c07736361726c6574026e6c0000010001 +94d280000001000000030003046d61696c07736361726c6574026e6c0000010001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +42356 +950100000001000000000000046d61696c07736361726c6574026e6c00001c0001 +950180000001000000030003046d61696c07736361726c6574026e6c00001c0001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +42357 +737800000001000000000000046d61696c07736361726c6574026e6c0000260001 +737880000001000000030003046d61696c07736361726c6574026e6c0000260001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +42358 +6a44000000010000000000000866616c6c6261636b10736361726c65742d696e7465726e6574026e6c0000010001 +6a44800000010000000300030866616c6c6261636b10736361726c65742d696e7465726e6574026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c03a00010001000151800004d5ccc302c04c00010001000151800004d5ccc303c05e00010001000151800004c277e953 + +42359 +0830000000010000000000000866616c6c6261636b10736361726c65742d696e7465726e6574026e6c00001c0001 +0830800000010000000300030866616c6c6261636b10736361726c65742d696e7465726e6574026e6c00001c0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c03a00010001000151800004d5ccc302c04c00010001000151800004d5ccc303c05e00010001000151800004c277e953 + +42360 +7d62000000010000000000000866616c6c6261636b10736361726c65742d696e7465726e6574026e6c0000260001 +7d62800000010000000300030866616c6c6261636b10736361726c65742d696e7465726e6574026e6c0000260001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c03a00010001000151800004d5ccc302c04c00010001000151800004d5ccc303c05e00010001000151800004c277e953 + +42361 +0c9f00000001000000000000036e733110736361726c65742d696e7465726e6574026e6c00001c0001 +0c9f80000001000000030003036e733110736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ccc302c04300010001000151800004d5ccc303c05500010001000151800004c277e953 + +42362 +2c3a00000001000000000000036e733110736361726c65742d696e7465726e6574026e6c0000260001 +2c3a80000001000000030003036e733110736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d5ccc302c04300010001000151800004d5ccc303c05500010001000151800004c277e953 + +42363 +65da00000001000000000000036e733210736361726c65742d696e7465726e6574026e6c00001c0001 +65da80000001000000030003036e733210736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03500010001000151800004d5ccc302c00c00010001000151800004d5ccc303c05500010001000151800004c277e953 + +42364 +660100000001000000000000036e733210736361726c65742d696e7465726e6574026e6c0000260001 +660180000001000000030003036e733210736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c03500010001000151800004d5ccc302c00c00010001000151800004d5ccc303c05500010001000151800004c277e953 + +42365 +12fe00000001000000000000036e733310736361726c65742d696e7465726e6574026e6c00001c0001 +12fe80000001000000030003036e733310736361726c65742d696e7465726e6574026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03500010001000151800004d5ccc302c04700010001000151800004d5ccc303c00c00010001000151800004c277e953 + +42366 +e20800000001000000000000036e733310736361726c65742d696e7465726e6574026e6c0000260001 +e20880000001000000030003036e733310736361726c65742d696e7465726e6574026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc03500010001000151800004d5ccc302c04700010001000151800004d5ccc303c00c00010001000151800004c277e953 + +42367 +c69600000001000000000000046d61696c07736361726c6574026e6c0000010001 +c69680000001000000030003046d61696c07736361726c6574026e6c0000010001c01100020001000151800017036e733110736361726c65742d696e7465726e6574c019c01100020001000151800006036e7332c031c01100020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +42368 +f50800000001000000000000037777770d6976697665656e656e6461616c026e6c0000010001 +f50880000001000000020002037777770d6976697665656e656e6461616c026e6c0000010001c01000020001000151800009036e7331026973c01ec01000020001000151800006036e7332c036c03200010001000151800004d5852102c04700010001000151800004d5c41503 + +42369 +49e8000000010000000000000d6c6f63616c73686f7070696e67026e6c0000020001 +49e8800000010000000200020d6c6f63616c73686f7070696e67026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +42370 +66f700000001000000000000036e73320c636f6e63657074732d696374026e6c0000010001 +66f780000001000000020002036e73320c636f6e63657074732d696374026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01dc01000020001000151800002c00cc03100010001000151800004d5c51c03c00c00010001000151800004d5c51e4b + +42371 +8c1d00000001000000000000026e73066863636e6574026e6c0000010001 +8c1d80000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +42372 +23400000000100000000000009652d6c756e61746963026e6c0000010001 +23408000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42373 +8945000000010000000000000976616e68656e74656e026e6c00000f0001 +8945800000010000000200020976616e68656e74656e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +42374 +622e000000010000000000000a6c65756b6573746172740e62616e6e657263656e7472616c65026e6c0000010001 +622e800000010000000300030a6c65756b6573746172740e62616e6e657263656e7472616c65026e6c0000010001c0170002000100015180000c036e7331056d61786573c026c01700020001000151800006036e7332c03ec01700020001000151800006036e7333c03ec03a000100010001518000045045402ec052000100010001518000045045402fc064000100010001518000045045440a + +42375 +525f0000000100000000000003777777096d756c7469636f7079026e6c0000010001 +525f8000000100000002000203777777096d756c7469636f7079026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec01ac01000020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +42376 +4c6700000001000000000000036e7333076e656473746174026e6c0000010001 +4c6780000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42377 +07fe00000001000000000000026e73076e656473746174026e6c0000010001 +07fe80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42378 +15080000000100000000000006726f6d65696e026e6c00000f0001 +15088000000100000002000206726f6d65696e026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +42379 +65e20000000100000000000003777777057072696a7a026e6c0000010001 +65e28000000100000002000203777777057072696a7a026e6c0000010001c0100002000100015180001104646e7331097669737365722d6974c016c0100002000100015180000704646e7332c02fc02a00010001000151800004515b0230c04700010001000151800004515b0231 + +42380 +a92b00000001000000000000036e733109666972737466696e64026e6c0000010001 +a92b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42381 +a92c00000001000000000000036e733209666972737466696e64026e6c0000010001 +a92c80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42382 +39e8000000010000000000000b7363686569646567676572026e6c00000f0001 +39e8800000010000000200010b7363686569646567676572026e6c00000f0001c00c000200010001518000130b737061726373657276657204706c6578c018c00c0002000100015180000b026e73026e6c036e657400c02c00010001000151800004c1439a0a + +42383 +a92e00000001000000000000036e733109666972737466696e64026e6c0000010001 +a92e80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42384 +a92f00000001000000000000036e733209666972737466696e64026e6c0000010001 +a92f80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42385 +5293000000010000000000000a73756276656e74696f6e026e6c00000f0001 +5293800000010000000200020a73756276656e74696f6e026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc017c00c00020001000151800006036e7332c02fc02b00010001000151800004c3558244c04400010001000151800004c3558245 + +42386 +7e7c00100001000000000001036e73310b6368616d69646d65646961026e6c00000100010000290800000080000000 +7e7c80000001000000020003036e73310b6368616d69646d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c0453fc03e0001000100015180000452c045400000291000000000000000 + +42387 +6b37000000010000000000000377777707686f746d61696c026e6c0000010001 +6b37800000010000000200000377777707686f746d61696c026e6c0000010001c01000020001000151800011036e733107686f746d61696c03636f6d00c01000020001000151800006036e7333c030 + +42388 +33360000000100000000000009652d6c756e61746963026e6c0000010001 +33368000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42389 +9fba00100001000000000001036e73320b6368616d69646d65646961026e6c00000100010000290800000080000000 +9fba80000001000000020003036e73320b6368616d69646d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000452c0453fc00c0001000100015180000452c045400000291000000000000000 + +42390 +7842000000010000000000000777656576657273026e6c00001c0001 +7842800000010000000200020777656576657273026e6c00001c0001c00c0002000100015180000f036e733108636f6d707574656cc014c00c00020001000151800006036e7332c02cc02800010001000151800004c3568680c04300010001000151800004c3568681 + +42391 +de33000000010000000000000377777707747067706f7374026e6c0000010001 +de33800000010000000200020377777707747067706f7374026e6c0000010001c0100002000100015180000e036e733207737570706f7274c018c01000020001000151800006036e7334c030c02c00010001000151800004c372e7c8c04600010001000151800004c372e6fe + +42392 +5de5000000010000000000000a6261726c6f776f726c64026e6c0000010001 +5de5800000010000000200020a6261726c6f776f726c64026e6c0000010001c00c0002000100015180000d026e73077374616e6e6574c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d5852414c04400010001000151800004d5852418 + +42393 +0e880000000100000000000010697777776379636c6f636f6e6e656374026e6c0000010001 +0e888403000100000001000010697777776379636c6f636f6e6e656374026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +42394 +626f000000010000000000000377777711766974746f726961636f736d6574696373026e6c0000010001 +626f800000010000000200020377777711766974746f726961636f736d6574696373026e6c0000010001c01000020001000151800014036e73310d6a656e6a7075626c6963697479c022c01000020001000151800006036e7332c03ac036000100010001518000045054e4e7c056000100010001518000045054e4f1 + +42395 +a0430000000100000000000006776468303131066e7434616c6c026e6c0000010001 +a0438000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +42396 +b7ba00000001000000000000037777770a72656372656174696566026e6c0000010001 +b7ba80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +42397 +c3ea0010000100000000000104646e73310471776562026e6c00000100010000291000000080000000 +c3ea8000000100000002000304646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c0000291000000000000000 + +42398 +e1f50010000100000000000104646e73310471776562026e6c00001c00010000291000000080000000 +e1f58000000100000002000304646e73310471776562026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c0000291000000000000000 + +42399 +b3130010000100000000000104646e73320471776562026e6c00000100010000291000000080000000 +b3138000000100000002000304646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c0000291000000000000000 + +42400 +09530010000100000000000104646e73320471776562026e6c00001c00010000291000000080000000 +09538000000100000002000304646e73320471776562026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c0000291000000000000000 + +42401 +8a290000000100000000000004667265650966756c6c616c62756d026e6c0000010001 +8a298000000100000002000004667265650966756c6c616c62756d026e6c0000010001c01100020001000151800017036e73310d696e746572726567697374657203636f6d00c01100020001000151800010026e730a646f6d65696e686f7374c01b + +42402 +cfd80000000100000000000004667265650966756c6c616c62756d026e6c0000010001 +cfd88000000100000002000004667265650966756c6c616c62756d026e6c0000010001c01100020001000151800017036e73310d696e746572726567697374657203636f6d00c01100020001000151800010026e730a646f6d65696e686f7374c01b + +42403 +71c600000001000000000000037777770f726f7474657264616d2d706c617a61026e6c0000010001 +71c680000001000000020002037777770f726f7474657264616d2d706c617a61026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c020c01000020001000151800006036e7332c038c03400010001000151800004d4ccd865c04f000100010001518000045054ec34 + +42404 +1149010000010000000000000231370332333403323332033230330964796e61626c6f636b07656173796e6574026e6c0000100001 +1149810000010000000200020231370332333403323332033230330964796e61626c6f636b07656173796e6574026e6c0000100001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +42405 +17e400000001000000000000036e7332076e656473746174026e6c0000010001 +17e480000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42406 +788e00000001000000000000036e7332076e656473746174026e6c00001c0001 +788e80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42407 +a97b00000001000000000000036e7334076e656473746174026e6c0000010001 +a97b80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +42408 +da8b00000001000000000000037777770d6576656e742d706c616e6e6572026e6c0000010001 +da8b80000001000000020000037777770d6576656e742d706c616e6e6572026e6c0000010001c01000020001000151800018036e73310e73636865646f6d2d6575726f7065036e657400c01000020001000151800006036e7332c036 + +42409 +0b72000000010000000000000b6d61696c72656c6179303704636d7367024e4c0000010001 +0b72800000010000000200010b6d61696c72656c6179303704636d7367024e4c0000010001c01800020001000151800006036e7331c018c0180002000100015180000d036e7332036b706e036e657400c03100010001000151800004c2976c83 + +42410 +4c9700000001000000000000065043303030380369626f026e6c0000010001 +4c9780000001000000020000065043303030380369626f026e6c0000010001c0130002000100015180000b026e73026e6c036e657400c0130002000100015180001206617574683630026e73026e6c027575c031 + +42411 +58910000000100000000000003706f7008652d64657369676e026e6c0000010001 +58918000000100000003000303706f7008652d64657369676e026e6c0000010001c0100002000100015180000c036e7331053266617374c019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d0001000100015180000450f7c022c045000100010001518000043e858122c057000100010001518000045117eb22 + +42412 +cab90000000100000000000007706561636f636b026e6c00000f0001 +cab98000000100000003000307706561636f636b026e6c00000f0001c00c0002000100015180000c026e73067369676e6574c014c00c00020001000151800006036e7331c02bc00c00020001000151800006036e7332c02bc02800010001000151800004c3561242c04000010001000151800004d915f142c05200010001000151800004d915f141 + +42413 +514000000001000000000000086168636272616e640564656d6f6e026e6c0000010001 +514080000001000000030002086168636272616e640564656d6f6e026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +42414 +79af00000001000000000000026e73087261626f62616e6b026e6c0000260001 +79af80000001000000020001026e73087261626f62616e6b026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +42415 +9eeb00000001000000000000037777771062726162616e74627265656462616e64026e6c0000010001 +9eeb80000001000000020002037777771062726162616e74627265656462616e64026e6c0000010001c0100002000100015180000e077475656761746503747565c021c01000020001000151800006036e7332c03dc03500010001000151800004839b0203c04f00010001000151800004839b0303 + +42416 +45cb00000001000000000000146e69657577736272696576656e73657276696365026e6c00000f0001 +45cb80000001000000030001146e69657577736272696576656e73657276696365026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +42417 +aa7e00000001000000000000026e73027675026e6c0000010001 +aa7e80000001000000030003026e73027675026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000a0473746172026373c00fc00f0002000100015180000e036e733107737572666e6574c012c00c0001000100015180000482258104c03400010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +42418 +929f00000001000000000000036e7331056d61786573026e6c00001c0001 +929f80000001000000030003036e7331056d61786573026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +42419 +c98800000001000000000000036e7331056d61786573026e6c0000260001 +c98880000001000000030003036e7331056d61786573026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +42420 +4dba00000001000000000000036e7332056d61786573026e6c0000260001 +4dba80000001000000030003036e7332056d61786573026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +42421 +f7f400000001000000000000036e7332056d61786573026e6c00001c0001 +f7f480000001000000030003036e7332056d61786573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +42422 +9ebe00000001000000000000036e7333056d61786573026e6c00001c0001 +9ebe80000001000000030003036e7333056d61786573026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +42423 +77ed00000001000000000000036e7333056d61786573026e6c0000260001 +77ed80000001000000030003036e7333056d61786573026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +42424 +ee22000000010000000000000b727575647a616e64657273026e6c00000f0001 +ee22800000010000000200000b727575647a616e64657273026e6c00000f0001c00c0002000100015180000c026e73066863636e6574c018c00c00020001000151800006036e7332c02f + +42425 +62780000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +62788000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42426 +ce0400000001000000000000037777770c617369616e2d636869636b73026e6c0000010001 +ce0480000001000000020002037777770c617369616e2d636869636b73026e6c0000010001c0100002000100015180000e036e733107686f7477697265c01dc01000020001000151800006036e7332c035c0310001000100015180000451044b03c04b0001000100015180000451044bc8 + +42427 +a83600000001000000000000037777770974656c656772616166026e6c0000010001 +a83680000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +42428 +8d2f000000010000000000000d6175746f74656c656772616166026e6c0000010001 +8d2f800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +42429 +938f0000000100000000000003777777107472696b65736769657465727665656e026e6c0000010001 +938f8000000100000002000003777777107472696b65736769657465727665656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03b + +42430 +0d940000000100000000000006636861726973026e6c00000f0001 +0d948000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +42431 +7f780000000100000000000003777777047365787a026e6c0000010001 +7f788000000100000002000203777777047365787a026e6c0000010001c01000020001000151800012036e73310b737072696e67626f617264c015c01000020001000151800006036e7332c02dc02900010001000151800004d4f1210bc04700010001000151800004d4f1210c + +42432 +954d000000010000000000000631326d6f7665026e6c00000f0001 +954d800000010000000300020631326d6f7665026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +42433 +531e001000010000000000010377777706787334616c6c026e6c00000100010000290800000080000000 +531e800000010000000300030377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d09630000291000000000000000 + +42434 +fc0400100001000000000001057669706572086f6e7468616e6574026e6c00000100010000290800000080000000 +fc0480000001000000020001057669706572086f6e7468616e6574026e6c0000010001c0120002000100015180000e036e73300470707365036e657400c01200020001000151800006036e7331c0330000291000000000000000 + +42435 +67e000000001000000000000036e73310b6368616d69646d65646961026e6c0000010001 +67e080000001000000020002036e73310b6368616d69646d65646961026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000452c0453fc03e0001000100015180000452c04540 + +42436 +3734000000010000000000000561636b6572026e6c00001c0001 +3734800000010000000200000561636b6572026e6c00001c0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c029 + +42437 +999700000001000000000000036e73320b6368616d69646d65646961026e6c0000010001 +999780000001000000020002036e73320b6368616d69646d65646961026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0300001000100015180000452c0453fc00c0001000100015180000452c04540 + +42438 +606328000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d73646373057368696e650473686276026e6c000021000100000258001d000000640185077368696e653031057368696e650473686276026e6c00 +6063a8040000000000000000 + +42439 +900100000001000000000000036e73330767617574656e67026e6c0000010001 +900180000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +42440 +d04500000001000000000000036e73340767617574656e67026e6c0000010001 +d04580000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +42441 +00000000700240006bdd0000020405b401010402 +000080010000000000000000 + +42442 +9d6800000001000000000000036e733109686f73746e65746276026e6c0000010001 +9d6880000001000000020002036e733109686f73746e65746276026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451113264c03c00010001000151800004d5c42851 + +42443 +33d500000001000000000000036e733209686f73746e65746276026e6c0000010001 +33d580000001000000020002036e733209686f73746e65746276026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e0001000100015180000451113264c00c00010001000151800004d5c42851 + +42444 +b84c97eb5010447043e90000000000000000 + + +42445 +439100000001000000000000057669706572086f6e7468616e6574026e6c0000010001 +439180000001000000020000057669706572086f6e7468616e6574026e6c0000010001c0120002000100015180000e036e73300470707365036e657400c01200020001000151800006036e7331c033 + +42446 +254f000000010000000000000444414952024e4c00000f0001 +254f800000010000000200020444414952024e4c00000f0001c00c0002000100015180000c026e7306787334616c6cc011c00c00020001000151800006036e7332c028c02500010001000151800004c26d0642c03d00010001000151800004c26d0963 + +42447 +b84c97eb50184470cee50000008b150c000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd28403c4ea800030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 + + +42448 +dae600000001000000000000106b617070612d6f7564656e626f736368026e6c00001c0001 +dae680000001000000020000106b617070612d6f7564656e626f736368026e6c00001c0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c034 + +42449 +150d000000010000000000000773717561726531026e6c0000010001 +150d800000010000000200010773717561726531026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c028000100010001518000043eb1b48a + +42450 +b84c97f950114462435b0000000000000000 + + +42451 +000000007002400088fe0000020405b401010402 +000080010000000000000000 + +42452 +d1650000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +d1658000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42453 +383e000000010000000000000b776f6f6e636f6e63657074026e6c00000f0001 +383e800000010000000200020b776f6f6e636f6e63657074026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc018c00c00020001000151800006036e7332c030c02c00010001000151800004c3558244c04500010001000151800004c3558245 + +42454 +5a6c00000001000000000000037777770673656e736f72026e6c0000010001 +5a6c80000001000000020002037777770673656e736f72026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +42455 +b84c97fa50104462435a0000000000000000 + + +42456 +b84d1a6450104470de900000000000000000 +b84d9a640000000000000000 + +42457 +b84d1a645018447024660000008b5b34000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd28403c4ea800030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 +b84d9a640000000000000000 + +42458 +f654000000010000000000000d6b6e756666656c766167696e61026e6c00000f0001 +f654840300010000000100000d6b6e756666656c766167696e61026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42459 +fa7c000000010000000000000b6c6f636b6572776f726c64026e6c0000020001 +fa7c800000010000000200020b6c6f636b6572776f726c64026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +42460 +b3de00000001000000000000037777770f6e6f72656c68616c6c656e626f7577026e6c0000010001 +b3de80000001000000020001037777770f6e6f72656c68616c6c656e626f7577026e6c0000010001c0100002000100015180000a036e733303777873c020c01000020001000151800006036e7334c038c04a00010001000151800004d5ef9a65 + +42461 +fdad00000001000000000000037777771266726965736570657273626f656b6572696a026e6c0000010001 +fdad80000001000000030003037777771266726965736570657273626f656b6572696a026e6c0000010001c0100002000100015180000e076e73617574683103626974c023c0100002000100015180000a076e736175746832c03fc0100002000100015180000a076e736175746833c03fc03700010001000151800004d5880c33c05100010001000151800004d5880c3bc06700010001000151800004d4ccc00b + +42462 +b84d1a7250114462de020000000000000000 +b84d9a740000000000000000 + +42463 +000000007002400086c40000020405b401010402 +000080010000000000000000 + +42464 +b84d1a7350104462de010000000000000000 +b84d9a740000000000000000 + +42465 +f62f00000001000000000000037777770e66756e6e79646f776e6c6f616473026e6c0000010001 +f62f80000001000000020000037777770e66756e6e79646f776e6c6f616473026e6c0000010001c01000020001000151800019036e73310f6c696e6b67696473686f7374696e6703636f6d00c01000020001000151800006036e7332c037 + +42466 +b84df49e50104470021c0000000000000000 + + +42467 +69eb000000010000000000001c6f7665726c696a64656e7372697369636f7665727a656b6572696e670e6765656e63656e7474657665656c026e6c0000010001 +69eb800000010000000200001c6f7665726c696a64656e7372697369636f7665727a656b6572696e670e6765656e63656e7474657665656c026e6c0000010001c02900020001000151800017026e7309726f7474657264616d046c756e61036e657400c0290002000100015180000f026e7309686f6f6664646f7270c059 + +42468 +b84df49e5018447001c90000008ba15c000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd28403c4ea800030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 + + +42469 +b84df4ac50114462018e0000000000000000 + + +42470 +fb990000000100000000000012746563686e6f6c6f6769652d62656c656964076d65702d746e6f026e6c0000010001 +fb998403000100000001000012746563686e6f6c6f6769652d62656c656964076d65702d746e6f026e6c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +42471 +b84df4ad50104462018d0000000000000000 + + +42472 +c49b0000000100000000000003777777096a707364657369676e026e6c0000010001 +c49b8000000100000002000003777777096a707364657369676e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c034 + +42473 +f1ef0000000100000000000003777777096f6d6e69776f726c64026e6c0000010001 +f1ef8000000100000002000003777777096f6d6e69776f726c64026e6c0000010001c01000020001000151800013036e733109656e7465726e65787403636f6d00c01000020001000151800006036e7332c032 + +42474 +0eb000000001000000000000036e733503777873026e6c0000010001 +0eb080000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42475 +6fcf0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +6fcf8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42476 +65cb00000001000000000000036e733209666972737466696e64026e6c0000010001 +65cb80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42477 +65ca00000001000000000000036e733109666972737466696e64026e6c0000010001 +65ca80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42478 +6359000000010000000000000377777709737465696c6865636b026e6c0000010001 +6359800000010000000200000377777709737465696c6865636b026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c044 + +42479 +437400000001000000000000076c6f636f636f6d026e6c0000020001 +437480000001000000020002076c6f636f636f6d026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +42480 +2cfa00000001000000000000037777770674616d697961026e6c0000010001 +2cfa80000001000000030001037777770674616d697961026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +42481 +666000000001000000000000044e495645024e4c00000f0001 +666080000001000000030003044e495645024e4c00000f0001c00c0002000100015180000b036e73310464696769c011c00c00020001000151800006036e7332c029c00c00020001000151800006036e7333c029c025000100010001518000043e5df006c03c000100010001518000043e5df0f6c04e00010001000151800004d42986e2 + +42482 +810000000001000000000000057374632d72026e6c00000f0001 +810080000001000000020001057374632d72026e6c00000f0001c00c0002000100015180000e036e7331077374632d6f6c63c012c00c0002000100015180000d036e7332036b706e036e657400c02600010001000151800004c1ad1c42 + +42483 +257800000001000000000000046e65777306787334616c6c026e6c00000f0001 +257880000001000000030002046e65777306787334616c6c026e6c00000f0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +42484 +4c1f00000001000000000000036e7332086e6f766178657373026e6c0000010001 +4c1f80000001000000030003036e7332086e6f766178657373026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004d5c98015c00c00010001000151800004d5c9bf12c04d00010001000151800004d5ef9c26 + +42485 +8f0d00000001000000000000036e733107737572666e6574026e6c0000010001 +8f0d80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +42486 +67260000000100000000000005646e732d31056c61646f74026e6c0000010001 +67268000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42487 +67270000000100000000000005646e732d32056c61646f74026e6c0000010001 +67278000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42488 +107e00000001000000000000037470670632686f743475026e6c0000010001 +107e80000001000000020002037470670632686f743475026e6c0000010001c01000020001000151800009036e7331026d6ac017c01000020001000151800006036e7332c02fc02b00010001000151800004515b010ac04000010001000151800004515b000a + +42489 +96b4000000010000000000000470696574026e6c0000010001 +96b4800000010000000200020470696574026e6c0000010001c00c00020001000151800012026e730c696e746572636f6e6e656374c011c00c00020001000151800006036e7332c028c02500010001000151800004d453c005c04300010001000151800004d453c006 + +42490 +e1ad00000001000000000000037777770e6b656d70656e7265736561726368026e6c0000010001 +e1ad80000001000000020001037777770e6b656d70656e7265736561726368026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c01fc04c00010001000151800004c2860043 + +42491 +b8ba00000001000000000000036e73310564656d6f6e026e6c00001c0001 +b8ba80000001000000030002036e73310564656d6f6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +42492 +c80a00000001000000000000036e73320564656d6f6e026e6c00001c0001 +c80a80000001000000030002036e73320564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +42493 +ff6500000001000000000000036e73330564656d6f6e026e6c00001c0001 +ff6580000001000000030002036e73330564656d6f6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c03c00010001000151800004c29fb004 + +42494 +696d000000010000000000000864756976656e6262026e6c00000f0001 +696d800000010000000200000864756976656e6262026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c02d + +42495 +571a00000001000000000000057065747269097a757572707275696d026e6c0000010001 +571a80000001000000020002057065747269097a757572707275696d026e6c0000010001c01200020001000151800011026e730b6973642d686f6c6c616e64c01cc01200020001000151800006036e7332c033c03000010001000151800004d5e38d0ac04d00010001000151800004d5e38205 + +42496 +92de00000001000000000000036e733107737572666e6574026e6c0000010001 +92de80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +42497 +dbee000000010000000000000b7370616d6d65726475646503636f6d026e6c0000ff0001 +dbee840300010000000100000b7370616d6d65726475646503636f6d026e6c0000ff0001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +42498 +ada000000001000000000000037777770d766c6965676572776572656c64026e6c0000010001 +ada080000001000000020000037777770d766c6965676572776572656c64026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +42499 +c00100000001000000000000036e73320f646f6d61696e2d7265676973747279026e6c00001c0001 +c00180000001000000030002036e73320f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42500 +a5e600000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +a5e680000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42501 +324d00000001000000000000036e73350f646f6d61696e2d7265676973747279026e6c00001c0001 +324d80000001000000030002036e73350f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42502 +0c320000000100000000000003777777086d6f656b6f747465026e6c0000010001 +0c328000000100000002000003777777086d6f656b6f747465026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c030 + +42503 +00f7000000010000000000000765636f70686f6e026e6c0000ff0001 +00f7800000010000000200000765636f70686f6e026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +42504 +6f360000000100000000000003777777087365616372657374026e6c0000010001 +6f368000000100000002000103777777087365616372657374026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c02d00010001000151800004d4ccc0fc + +42505 +1ec8000000010000000000000476696e6b026e6c00000f0001 +1ec8800000010000000200020476696e6b026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +42506 +885200000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c00001c0001 +885280000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42507 +95ff00000001000000000000036e73330f646f6d61696e2d7265676973747279026e6c0000260001 +95ff80000001000000030002036e73330f646f6d61696e2d7265676973747279026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42508 +03c100000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03c180000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +42509 +06d30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +06d38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42510 +79dc000000010000000000000e7072762d6f766572696a7373656c026e6c00000f0001 +79dc800000010000000200000e7072762d6f766572696a7373656c026e6c00000f0001c00c00020001000151800012036e73310b776f726c646f6e6c696e65c01bc00c00020001000151800006036e7332c033 + +42511 +256b0000000100000000000003777777086169726368697073026e6c0000010001 +256b8000000100000002000203777777086169726368697073026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c019c01000020001000151800006036e7332c031c02d00010001000151800004d90867fec04c00010001000151800004c1ad2bfe + +42512 +c89c00000001000000000000054c796e783109496d74656368494354026e6c0000010001 +c89c80000001000000020001054c796e783109496d74656368494354026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e7334036b706e036e657400c03000010001000151800004c1accc82 + +42513 +0b5b00000001000000000000026e730f6761726e69657270726f6a65637473026e6c0000010001 +0b5b80000001000000020002026e730f6761726e69657270726f6a65637473026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00c000100010001518000045117e122c041000100010001518000045117e142 + +42514 +a3f8000000010000000000000661616c74656e026e6c00000f0001 +a3f8800000010000000200020661616c74656e026e6c00000f0001c00c0002000100015180000e026e73086d656761706c6578c013c00c00020001000151800006036e7331c02ac02700010001000151800004504f6101c04100010001000151800004504f6102 + +42515 +e1a500000001000000000000056963757265026e6c00000f0001 +e1a580000001000000030001056963757265026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +42516 +09900000000100000000000003777873026e6c0000ff0001 +09908000000100000003000303777873026e6c0000ff0001c00c00020001000151800007046e733038c00cc00c00020001000151800007046e733039c00cc00c00020001000151800006036e7334c00cc02400010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +42517 +d3e700000001000000000000036e733503777873026e6c0000010001 +d3e780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42518 +685000000001000000000000046d61696c0a77656c6c616476697364026e6c0000010001 +685080000001000000020000046d61696c0a77656c6c616476697364026e6c0000010001c0110002000100015180001105646e732d33056c61646f7403636f6d00c0110002000100015180000805646e732d34c036 + +42519 +1fb300000001000000000000056e696d6167026e6c0000010001 +1fb380000001000000020000056e696d6167026e6c0000010001c00c0002000100015180000e036e73310464646e68036e657400c00c00020001000151800006036e7332c02a + +42520 +1bcd000000010000000000000a636c617573706c65696e0764617461776562026e6c0000010001 +1bcd800000010000000200000a636c617573706c65696e0764617461776562026e6c0000010001c0170002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0170002000100015180000805726f6b696ec03a + +42521 +1a0000000001000000000000037777770a7a6f656b706c61617473026e6c0000010001 +1a0080000001000000030002037777770a7a6f656b706c61617473026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +42522 +100100000001000000000000036e6370026e6c0000010001 +100180000001000000020002036e6370026e6c0000010001c00c0002000100015180000c036e73310564656d6f6ec010c00c00020001000151800006036e7332c028c02400010001000151800004c29f4906c03c00010001000151800004c29fb004 + +42523 +a2300000000100000000000010636f6d7061676e6965636974726f656e026e6c0000010001 +a2308000000100000002000210636f6d7061676e6965636974726f656e026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c01dc00c00020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +42524 +4c5c000000010000000000001274757373656e68656d656c656e6161726465026e6c0000010001 +4c5c800000010000000200021274757373656e68656d656c656e6161726465026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01fc00c00020001000151800006036e7332c036c03300010001000151800004c26d0642c04b00010001000151800004c26d0963 + +42525 +79c500000001000000000000086e617275746f37300c6e617275746f2d776f726c64026e6c0000010001 +79c580000001000000020002086e617275746f37300c6e617275746f2d776f726c64026e6c0000010001c01500020001000151800010036e7331096e657467726f756e64c022c01500020001000151800006036e7332c03ac036000100010001518000045054e415c0520001000100015180000451046014 + +42526 +db0d0000000100000000000003777777086c65747373746174026e6c0000010001 +db0d8000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +42527 +8d25000000010000000000000876656c646b616d70026e6c0000010001 +8d25800000010000000300020876656c646b616d70026e6c0000010001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +42528 +4a1a00000001000000000000036e73330767617574656e67026e6c0000010001 +4a1a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +42529 +523e00000001000000000000036e73340767617574656e67026e6c0000010001 +523e80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +42530 +0e93000000010000000000000967656c6468616c656e026e6c00000f0001 +0e93800000010000000200000967656c6468616c656e026e6c00000f0001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42531 +ba720000000100000000000003777777067069726f6c61026e6c0000010001 +ba728000000100000003000103777777067069726f6c61026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +42532 +ea67000000010000000000000d6b77656b6572696a6161727473026e6c00000f0001 +ea67800000010000000200020d6b77656b6572696a6161727473026e6c00000f0001c00c0002000100015180000e036e7331076f6d732d6e6574c01ac00c00020001000151800006036e7332c032c02e00010001000151800004d5efb22fc04800010001000151800004d5ef9d07 + +42533 +16690000000100000000000004646e7331057368656c6c026e6c0000010001 +16698000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +42534 +811f000000010000000000000377777704676f6768026e6c0000010001 +811f800000010000000200020377777704676f6768026e6c0000010001c0100002000100015180000e036e73310762617365776562c015c01000020001000151800006036e7332c02dc02900010001000151800004d535d035c04300010001000151800004d535d034 + +42535 +0c6e000000010000000000000b686165676865686f727374026e6c0000ff0001 +0c6e800000010000000200010b686165676865686f727374026e6c0000ff0001c00c0002000100015180000e036e733107626c7565646e73c018c00c00020001000151800006036e7334c030c02c00010001000151800004d5c401c0 + +42536 +04a800100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +04a880000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +42537 +1390000000010000000000000377777707636f6e74656e74026e6c0000010001 +1390800000010000000200000377777707636f6e74656e74026e6c0000010001c01000020001000151800016046e7330310b63726579667367726f757003636f6d00c01000020001000151800007046e733032c031 + +42538 +025400100001000000000001036e733107737572666e6574026e6c00002600010000290800000080000000 +025480000001000000040004036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +42539 +96300000000100000000000003777777087374617273686f70026e6c0000010001 +96308000000100000002000203777777087374617273686f70026e6c0000010001c01000020001000151800009026e730369736dc019c01000020001000151800006036e7332c030c02d00010001000151800004d994ab02c04200010001000151800004d994ab03 + +42540 +73780000000100000000000004686f6d650464656473026e6c0000010001 +73788000000100000002000204686f6d650464656473026e6c0000010001c0110002000100015180000c026e73067874646e6574c016c01100020001000151800006036e7331c02dc02a00010001000151800004c16e9d02c04200010001000151800004d9cc165f + +42541 +a91b00000001000000000000037777770e6d656574746865636f6d70616e79026e6c0000010001 +a91b80000001000000020002037777770e6d656574746865636f6d70616e79026e6c0000010001c0100002000100015180000a036e733103677673c01fc01000020001000151800006036e7332c037c033000100010001518000045054e1aac04900010001000151800004d4ccc646 + +42542 +edbe000000010000000000000d706565746572736f6e6c696e65026e6c00000f0001 +edbe840300010000000100000d706565746572736f6e6c696e65026e6c00000f0001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +42543 +d58000000001000000000000036e73310a6f70656e646f6d65696e026e6c0000010001 +d58080000001000000020002036e73310a6f70656e646f6d65696e026e6c0000010001c0100002000100015180000c026e73067874646e6574c01bc01000020001000151800006036e7331c032c02f00010001000151800004c16e9d02c04700010001000151800004d9cc165f + +42544 +7bdb0000000100000000000006787334616c6c026e6c00000f0001 +7bdb8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +42545 +789f00000001000000000000037777770962616b6b657665656e026e6c0000010001 +789f80000001000000020002037777770962616b6b657665656e026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c01ac01000020001000151800006036e7332c032c02e0001000100015180000450416028c04900010001000151800004c356780c + +42546 +7ed3000000010000000000000d696d616765627573696e657373026e6c00000f0001 +7ed3800000010000000200000d696d616765627573696e657373026e6c00000f0001c00c00020001000151800017026e7309726f7474657264616d046c756e61036e657400c00c0002000100015180000f026e7309686f6f6664646f7270c03b + +42547 +8f92000000010000000000000377777707696e7161616865026e6c0000010001 +8f92800000010000000300010377777707696e7161616865026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +42548 +1342000000010000000000000377777708737562757262616e026e6c0000010001 +1342800000010000000200010377777708737562757262616e026e6c0000010001c0100002000100015180000a036e733303777873c019c01000020001000151800006036e7334c031c04300010001000151800004d5ef9a65 + +42549 +20360000000100000000000010706c61737469636d616368696e657279026e6c0000ff0001 +20368000000100000002000010706c61737469636d616368696e657279026e6c0000ff0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c034 + +42550 +da4700000001000000000000036e73310d756e697465646d656d62657273026e6c00001c0001 +da4780000001000000020002036e73310d756e697465646d656d62657273026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d47bfd15c04000010001000151800004d47bfd16 + +42551 +4aa000000001000000000000036e73310d756e697465646d656d62657273026e6c0000260001 +4aa080000001000000020002036e73310d756e697465646d656d62657273026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d47bfd15c04000010001000151800004d47bfd16 + +42552 +01a700000001000000000000036e73320d756e697465646d656d62657273026e6c00001c0001 +01a780000001000000020002036e73320d756e697465646d656d62657273026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d47bfd15c00c00010001000151800004d47bfd16 + +42553 +27d600000001000000000000036e73320d756e697465646d656d62657273026e6c0000260001 +27d680000001000000020002036e73320d756e697465646d656d62657273026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d47bfd15c00c00010001000151800004d47bfd16 + +42554 +4f6200100001000000000001037777770770636d65646961026e6c00000100010000290800000000000000 +4f6280000001000000020001037777770770636d65646961026e6c0000010001c0100002000100015180000f036e7331056b7761726b036e657400c01000020001000151800006036e7332c0300000291000000000000000 + +42555 +157f0000000100000000000003777777087361616c6d696e6b026e6c0000010001 +157f8000000100000003000003777777087361616c6d696e6b026e6c0000010001c0100002000100015180001a036e733110756e696c6f6769636e6574776f726b73036e657400c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +42556 +6d8e00000001000000000000106c6f636f6d6f74696f6e6f6e6c696e65026e6c0000020001 +6d8e80000001000000020002106c6f636f6d6f74696f6e6f6e6c696e65026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01dc00c00020001000151800006036e7332c035c03100010001000151800004c29f4906c04900010001000151800004c29fb004 + +42557 +a04400000001000000000000036e733107737572666e6574026e6c0000010001 +a04480000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +42558 +502200000001000000000000036e733107737572666e6574026e6c0000260001 +502280000001000000040003036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +42559 +5c080000000100000000000005656c696661026e6c00000f0001 +5c088000000100000003000205656c696661026e6c00000f0001c00c0002000100015180000d036e733106776964657873c012c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02ac02600010001000151800004d4ccc0fcc05b000100010001518000043efa0703 + +42560 +74d9000000010000000000000377777709746572726162797465026e6c0000010001 +74d9800000010000000200020377777709746572726162797465026e6c0000010001c01000020001000151800010036e7331097465727261686f7374c01ac01000020001000151800006036e7332c032c02e0001000100015180000451044ecec04a000100010001518000044500d44a + +42561 +a73a00000001000000000000056a6e73756c026e6c00000f0001 +a73a84030001000000010000056a6e73756c026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +42562 +99f30000000100000000000003777777086173747261736174026e6c0000010001 +99f38000000100000003000203777777086173747261736174026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +42563 +6f97000000010000000000000a656e65726769656e6564026e6c0000ff0001 +6f97800000010000000200000a656e65726769656e6564026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02f + +42564 +1b800000000100000000000009652d6c756e61746963026e6c0000010001 +1b808000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +42565 +cc9e00000001000000000000037777770a617564696f706c616365026e6c0000010001 +cc9e80000001000000020000037777770a617564696f706c616365026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c032 + +42566 +198300000001000000000000046d61696c0d6b6170697465696e736b6f6f72026e6c0000010001 +198380000001000000020002046d61696c0d6b6170697465696e736b6f6f72026e6c0000010001c01100020001000151800015036e73310e692d6d61746368686f7374696e67c01fc01100020001000151800006036e7332c037c03300010001000151800004d4cb1d01c05400010001000151800004d4cb1d02 + +42567 +00b428000001000200000000026e6c0000060001076a7570697465720b7a69636874696e7465726e026e6c00000500fe000000000000c014000100010000000000045a000092 +00b4a8040000000000000000 + +42568 +98dd00000001000000000000037777770770636d65646961026e6c0000010001 +98dd80000001000000020000037777770770636d65646961026e6c0000010001c0100002000100015180000f036e7331056b7761726b036e657400c01000020001000151800006036e7332c030 + +42569 +21bd00000001000000000000036e733103617a67026e6c0000010001 +21bd80000001000000030003036e733103617a67026e6c0000010001c01000020001000151800002c00cc0100002000100015180000a036e733103727567c014c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004c057175cc03600010001000151800004817d0406c04c00010001000151800004c0576a65 + +42570 +d41700000001000000000000036e733103617a67026e6c00001c0001 +d41780000001000000030003036e733103617a67026e6c00001c0001c01000020001000151800002c00cc0100002000100015180000a036e733103727567c014c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004c057175cc03600010001000151800004817d0406c04c00010001000151800004c0576a65 + +42571 +99ee0000000100000000000005646e732d32056c61646f74026e6c0000010001 +99ee8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42572 +96dc0000000100000000000005646e732d31056c61646f74026e6c0000010001 +96dc8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42573 +e3bd00000001000000000000076c6f6467696e67026e6c0000020001 +e3bd80000001000000020002076c6f6467696e67026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +42574 +000000007002faf0205200000204057a01010402 +000080010000000000000000 + +42575 +b8501b4d5010fbec78320000000000000000 +b8509b440000000000000000 + +42576 +b8501b4d5018fbec917400000089a7cd000000010001000000000e3932373731323933353935342d330000f900010e3932373731323933353935342d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd09403c4e8900030000002c4e544c4d535350000100000097b208e0050005002700000007000700200000004a5550495445525a494348540000 +b8509b440000000000000000 + +42577 +f98500000001000000000000026e730f444f4d41494e2d5245474953545259026e6c00001c0001 +f98580000001000000030002026e730f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42578 +245a00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c00001c0001 +245a80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42579 +04f800000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +04f880000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42580 +1487000000010000000000000a782d706572696d656e74046d796762026e6c0000010001 +1487800000010000000300020a782d706572696d656e74046d796762026e6c0000010001c0170002000100015180000d036e733106776964657873c01cc01700020001000151800010036e733206776964657873036e657400c01700020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +42581 +b8501b5b5011fbde77a60000000000000000 +b8509b540000000000000000 + +42582 +01110000000100000000000009776565726b616d6572026e6c0000010001 +01118000000100000002000009776565726b616d6572026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02e + +42583 +000000007002faf0503500000204057a01010402 +000080010000000000000000 + +42584 +b8501b5c5010fbde77a50000000000000000 +b8509b540000000000000000 + +42585 +b850aee15010fbec14810000000000000000 + + +42586 +b850aee15018fbecf3a500000089e3ea000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd09403c4e8900030000002c4e544c4d535350000100000097b208e0050005002700000007000700200000004a5550495445525a494348540000 + + +42587 +f61c00000001000000000000076d726f757465720777697265687562026e6c0000010001 +f61c80000001000000030000076d726f757465720777697265687562026e6c0000010001c01400020001000151800010026e730777697265687562036e657400c01400020001000151800006036e7332c033c01400020001000151800006036e7333c033 + +42588 +c993000000010000000000000377777711686f6e64656e7363686f6f6c61626f766f026e6c0000010001 +c993800000010000000300030377777711686f6e64656e7363686f6f6c61626f766f026e6c0000010001c0100002000100015180000e036e733107686f7374696e67c022c01000020001000151800006036e7332c03ac01000020001000151800006036e7333c03ac036000100010001518000043e818b01c050000100010001518000043e818b02c062000100010001518000043e818ae1 + +42589 +b850aeef5011fbde13f50000000000000000 + + +42590 +6ee70000000100000000000014736c6176656e627572672d656e2d687579736572026e6c0000ff0001 +6ee78000000100000002000214736c6176656e627572672d656e2d687579736572026e6c0000ff0001c00c00020001000151800013036e73310c636f6c742d74656c65636f6dc021c00c00020001000151800006036e7332c039c03500010001000151800004d44ea00dc05400010001000151800004d44ea00e + +42591 +000000007002faf05e3000000204057a01010402 +000080010000000000000000 + +42592 +b850aef05010fbde13f40000000000000000 + + +42593 +8e7400000001000000000000066c6f64696765026e6c0000020001 +8e7480000001000000020002066c6f64696765026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +42594 +b8519e465010fbec33160000000000000000 + + +42595 +b8519e465018fbec89db000000896c4a000000010001000000000e3932373731323933353935342d320000f900010e3932373731323933353935342d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd09403c4e8900030000002c4e544c4d535350000100000097b208e0050005002700000007000700200000004a5550495445525a494348540000 + + +42596 +7efa00000001000000000000037777770864616e61626f7577026e6c0000010001 +7efa80000001000000020002037777770864616e61626f7577026e6c0000010001c01000020001000151800010036e733109657870726573776562c019c01000020001000151800006036e7332c031c02d000100010001518000045054ed19c049000100010001518000045054ed1a + +42597 +b8519e545011fbde328a0000000000000000 + + +42598 +2b0000000001000000000000037777770a676f7564656e67696473026e6c0000010001 +2b0080000001000000020001037777770a676f7564656e67696473026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02f00010001000151800004c1ac0e02 + +42599 +3b0a00000001000000000000037777770a676f7564656e67696473026e6c0000010001 +3b0a80000001000000020001037777770a676f7564656e67696473026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e7332036b706e036e657400c02f00010001000151800004c1ac0e02 + +42600 +c5130000000100000000000008666f72656c616e64026e6c00001c0001 +c5138000000100000002000108666f72656c616e64026e6c00001c0001c00c0002000100015180000a036e733303777873c015c00c00020001000151800006036e7334c02dc03f00010001000151800004d5ef9a65 + +42601 +b8519e555010fbde32890000000000000000 + + +42602 +12a000000001000000000000057065706f6204626d7367026e6c0000010001 +12a080000001000000030002057065706f6204626d7367026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c0120002000100015180000d036e7332036b706e036e657400c02b00010001000151800004910747ecc03d00010001000151800004910749cd + +42603 +860200000001000000000000037777770a6c65756b6567616d6573026e6c0000010001 +860280000001000000030003037777770a6c65756b6567616d6573026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +42604 +14980000000100000000000003777777076e6574706f6c6c026e6c0000010001 +14988000000100000002000003777777076e6574706f6c6c026e6c0000010001c01000020001000151800016036e73310c6d6564696168696768776179036e657400c01000020001000151800006036e7332c030 + +42605 +f37100000001000000000000036e73310a726564686f7374696e67026e6c0000010001 +f37180000001000000020002036e73310a726564686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5efa404c03d00010001000151800004d5efa405 + +42606 +94d100000001000000000000036e7331056d61786573026e6c0000010001 +94d180000001000000030003036e7331056d61786573026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c000100010001518000045045402ec038000100010001518000045045402fc04a000100010001518000045045440a + +42607 +94d200000001000000000000036e7332056d61786573026e6c0000010001 +94d280000001000000030003036e7332056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02a000100010001518000045045402ec00c000100010001518000045045402fc04a000100010001518000045045440a + +42608 +94d300000001000000000000036e7333056d61786573026e6c0000010001 +94d380000001000000030003036e7333056d61786573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02a000100010001518000045045402ec03c000100010001518000045045402fc00c000100010001518000045045440a + +42609 +810f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +810f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42610 +ec6d00000001000000000000056c6f65636b026e6c0000020001 +ec6d80000001000000020002056c6f65636b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +42611 +17a20000000100000000000007666f786b696473026e6c00001c0001 +17a28000000100000003000007666f786b696473026e6c00001c0001c00c00020001000151800011036e73310777652d64617265036e657400c00c00020001000151800006036e7332c02cc00c00020001000151800006036e7333c02c + +42612 +688200000001000000000000036e733206726564636170026e6c0000010001 +688280000001000000020002036e733206726564636170026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02b00010001000151800004d4ccf5abc00c00010001000151800004507e7640 + +42613 +3dc7000000010000000000000776697a7a617669026e6c00001c0001 +3dc7800000010000000300010776697a7a617669026e6c00001c0001c00c00020001000151800005026e73c00cc00c0002000100015180001d046e73303708637573746f6d6572026575066c6576656c33036e657400c00c00020001000151800007046e733038c03ec028000100010001518000043e48df58 + +42614 +afb800000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001 +afb884030001000000010000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001c04c00060001000038400036026e730f646f6d61696e2d7265676973747279c04c0a686f73746d6173746572c0630bf1e540000070800000384000278d0000003840 + +42615 +92390000000100000000000005646e732d31056c61646f74026e6c0000010001 +92398000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42616 +a98f0000000100000000000005646e732d32056c61646f74026e6c0000010001 +a98f8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42617 +1eeb000000010000000000000a6e6f6f72647a6565666d0b776561746865726e657773026e6c0000010001 +1eeb800000010000000200020a6e6f6f72647a6565666d0b776561746865726e657773026e6c0000010001c01700020001000151800009026e73036f6b65c023c01700020001000151800006036e7332c03ac03700010001000151800004c13acc3bc04c00010001000151800004c13acc27 + +42618 +eb8100000001000000000000055f6c646170045f746370026463065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001 +eb8184030001000000010000055f6c646170045f746370026463065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001c02f00060001000038400036026e730f646f6d61696e2d7265676973747279c02f0a686f73746d6173746572c0460bf1e540000070800000384000278d0000003840 + +42619 +977b001000010000000000010777616e61646f6f026e6c00000f00010000290800000080000000 +977b800000010000000200020777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c28600430000291000000000000000 + +42620 +4b1400000001000000000000037777770778706c697a6974026e6c0000010001 +4b1480000001000000020002037777770778706c697a6974026e6c0000010001c0100002000100015180000e036e73310774696b6b6c696bc018c01000020001000151800006036e7332c030c02c00010001000151800004d5c40902c046000100010001518000043eddd512 + +42621 +ee8e0000000100000000000008686f73746e616d650462696e640000100003 +ee8e8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +42622 +650f0000000100000000000008706f73746475696607736e7362616e6b026e6c0000010001 +650f8000000100000002000008706f73746475696607736e7362616e6b026e6c0000010001c0150002000100015180000d036e7331036b706e036e657400c01500020001000151800006036e7332c035 + +42623 +a3bc000000010000000000000663616e646561026e6c0000010001 +a3bc800000010000000300030663616e646561026e6c0000010001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +42624 +cf4e00000001000000000000055f6c646170045f7463702438653862356437612d393864622d343931302d626465392d32353338396132323931636107646f6d61696e73065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001 +cf4e84030001000000010000055f6c646170045f7463702438653862356437612d393864622d343931302d626465392d32353338396132323931636107646f6d61696e73065f6d736463730d73616c2d61706f7468656b656e026e6c0000210001c05900060001000038400036026e730f646f6d61696e2d7265676973747279c0590a686f73746d6173746572c0700bf1e540000070800000384000278d0000003840 + +42625 +4ef4000000010000000000000a656d6561736d7470303103616f6e026e6c0000010001 +4ef4800000010000000200010a656d6561736d7470303103616f6e026e6c0000010001c01700020001000151800005026e73c017c0170002000100015180000b026e73026e6c036e657400c02f00010001000151800004c1acf879 + +42626 +5df100000001000000000000046d61696c03736f64026e6c0000010001 +5df180000001000000020002046d61696c03736f64026e6c0000010001c0110002000100015180000e036e7331076970746f776572c015c01100020001000151800006036e7332c02dc029000100010001518000043ecc4065c043000100010001518000043ecc4066 + +42627 +426400000001000000000000036b616b026e6c0000ff0001 +426480000001000000020000036b616b026e6c0000ff0001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c027 + +42628 +875b00000001000000000000037777770d7475726b7375697467616e6773026e6c0000010001 +875b84030001000000010000037777770d7475726b7375697467616e6773026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +42629 +af53000000010000000000000777616e61646f6f026e6c00000f0001 +af53800000010000000200010777616e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +42630 +099e0000000100000000000004686f6d650777616e61646f6f026e6c0000010001 +099e8000000100000002000104686f6d650777616e61646f6f026e6c0000010001c0110002000100015180000d026e73046575726f036e657400c0110002000100015180000d026e73076575726f6e6574c019c04600010001000151800004c2860043 + +42631 +660300000001000000000000036e733109666972737466696e64026e6c0000010001 +660380000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42632 +660400000001000000000000036e733209666972737466696e64026e6c0000010001 +660480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +42633 +ff0600000001000000000000037777770773756273697465026e6c0000010001 +ff0680000001000000020002037777770773756273697465026e6c0000010001c01000020001000151800009036e7331026973c018c01000020001000151800006036e7332c030c02c00010001000151800004d5852102c04100010001000151800004d5c41503 + +42634 +0a400000000100000000000003777777077a6f656b6d7033026e6c0000010001 +0a408000000100000002000203777777077a6f656b6d7033026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa404c04900010001000151800004d5efa405 + +42635 +8f57000000010000000000000877616e6e61646f6f026e6c00000f0001 +8f57800000010000000200010877616e6e61646f6f026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c015c04200010001000151800004c2860043 + +42636 +f97300000001000000000000086469616c2d31353608656e657267697331036d6c6404646e6574026e6c0000010001 +f97380000001000000020002086469616c2d31353608656e657267697331036d6c6404646e6574026e6c0000010001c0220002000100015180000d036e7331066d696e646566c027c02200020001000151800006036e7332c03fc03b00010001000151800004d9a9e7c6c05400010001000151800004d9a9e7c5 + +42637 +c7ef00000001000000000000036e7332036e7873026e6c0000010001 +c7ef80000001000000020002036e7332036e7873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d973c015c00c00010001000151800004d973c102 + +42638 +882e00000001000000000000036e7331036e7873026e6c0000010001 +882e80000001000000020002036e7331036e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c015c03600010001000151800004d973c102 + +42639 +ff28000000010000000000000377777707636176656c6c6f026e6c0000010001 +ff28800000010000000300020377777707636176656c6c6f026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42640 +fa3a0000000100000000000007646f6c66696a6e026e6c00000f0001 +fa3a8000000100000003000307646f6c66696a6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +42641 +05940000000100000000000003777777096865746f6f7374656e026e6c0000010001 +05948000000100000002000003777777096865746f6f7374656e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c034 + +42642 +faa70000000100000000000003736e73026e6c0000ff0001 +faa78000000100000002000003736e73026e6c0000ff0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c028 + +42643 +a42a0000000100000000000008636463656e746572026e6c00000f0001 +a42a8000000100000002000208636463656e746572026e6c00000f0001c00c00020001000151800014036e73310d6162696e666f686f7374696e67c015c00c00020001000151800006036e7332c02dc029000100010001518000045054f439c049000100010001518000045054f43a + +42644 +b99400000001000000000000036d783103626974026e6c0000010001 +b99480000001000000030003036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +42645 +8b490000000100000000000103777777076364636f766572026e6c00000100010000291000000000000000 +8b498000000100000003000303777777076364636f766572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa07030000291000000000000000 + +42646 +f31c0000000100000000000103777777076364636f766572026e6c00000100010000291000000000000000 +f31c8000000100000003000303777777076364636f766572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa07030000291000000000000000 + +42647 +6c390000000100000000000005696b616e61026e6c00000f0001 +6c398000000100000003000005696b616e61026e6c00000f0001c00c00020001000151800011036e733107616e7977697365036e657400c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02a + +42648 +aa6100000001000000000000037777770d636f6c756d6275732d696e666f026e6c0000010001 +aa6180000001000000020002037777770d636f6c756d6275732d696e666f026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01ec01000020001000151800006036e7332c035c03200010001000151800004c26d0642c04a00010001000151800004c26d0963 + +42649 +534400000001000000000000037777770d626f7577766164656d6563756d026e6c0000010001 +534480000001000000030002037777770d626f7577766164656d6563756d026e6c0000010001c0100002000100015180000f036e73310870726f7365727665c01ec01000020001000151800012036e73320970726f2d736572766502626500c01000020001000151800006036e7333c036c032000100010001518000045054e055c06b00010001000151800004d4ccc655 + +42650 +c86300000001000000000000146964702d6f6e7a696e67616c6c6572792d696e74027830026e6c0000010001 +c86380000001000000020002146964702d6f6e7a696e67616c6c6572792d696e74027830026e6c0000010001c0210002000100015180000d026e730776697065726276c024c02100020001000151800006036e7332c03bc03800010001000151800004d5881a07c05100010001000151800004d5881a05 + +42651 +0a720000000100000000000003777777116b756e737473746f66636f6174696e6773026e6c0000010001 +0a728000000100000003000303777777116b756e737473746f66636f6174696e6773026e6c0000010001c0100002000100015180000c036e7331053266617374c022c01000020001000151800006036e7332c03ac01000020001000151800006036e7333c03ac0360001000100015180000450f7c022c04e000100010001518000043e858122c060000100010001518000045117eb22 + +42652 +8b490000000100000000000003777777076364636f766572026e6c0000010001 +8b498000000100000003000203777777076364636f766572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42653 +24b7000000010000000000000577686f69730f646f6d61696e2d7265676973747279026e6c0000010001 +24b7800000010000000300020577686f69730f646f6d61696e2d7265676973747279026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000e036e733107737572666e6574c022c0120002000100015180000b026e73026e6c036e657400c03600010001000151800004c1b09002c04700010001000151800004c0576a65 + +42654 +f31c0000000100000000000003777777076364636f766572026e6c0000010001 +f31c8000000100000003000203777777076364636f766572026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42655 +9ac3000000010000000000000776616e646f6f6c026e6c0000010001 +9ac3800000010000000200000776616e646f6f6c026e6c0000010001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02e + +42656 +518c00000001000000000000037777770964616e736f6d6d6572026e6c0000010001 +518c80000001000000020000037777770964616e736f6d6d6572026e6c0000010001c010000200010001518000130761757468323030026e73027575036e657400c0100002000100015180000a0761757468323130c036 + +42657 +741900000001000000000000037777770a63642d686f65736a6573026e6c0000010001 +741980000001000000030002037777770a63642d686f65736a6573026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +42658 +3108000000010000000000000b747261646563656e746572047a75747a026e6c0000010001 +3108800000010000000200020b747261646563656e746572047a75747a026e6c0000010001c01800020001000151800012036e73310b706c7573686f7374696e67c01dc01800020001000151800006036e7332c035c03100010001000151800004d994ae77c04f000100010001518000045054ea06 + +42659 +87fb00000001000000000000046a6e666e026e6c00000f0001 +87fb80000001000000020002046a6e666e026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c011c00c00020001000151800006036e7332c028c02500010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +42660 +036000000001000000000000076b61617274656e046c696e71026e6c0000010001 +036080000001000000020002076b61617274656e046c696e71026e6c0000010001c01400020001000151800012036e73310b737461727464657369676ec019c01400020001000151800006036e7332c031c02d00010001000151800004d5f73823c04b000100010001518000043ed45149 + +42661 +d5e9000000010000000000000c66726565726f617374696e67026e6c00000f0001 +d5e9800000010000000200000c66726565726f617374696e67026e6c00000f0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c031 + +42662 +864d0000000100000000000017706c6578757361726265696473696e7465677261746965026e6c00000f0001 +864d8000000100000002000117706c6578757361726265696473696e7465677261746965026e6c00000f0001c00c00020001000151800010036e7331067573656c616203636f6d00c00c0002000100015180000d036e7332067573656c6162c024c054000100010001518000043e3aa284 + +42663 +204000000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +204080000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +42664 +39ce00000001000000000000166c6f656b686f656b2d7475696e6f6e7477657270656e026e6c0000020001 +39ce80000001000000020002166c6f656b686f656b2d7475696e6f6e7477657270656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec023c00c00020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +42665 +8ad00000000100000000000003777777036f6572026e6c0000010001 +8ad08000000100000002000203777777036f6572026e6c0000010001c0100002000100015180000b026e7305706c616e74c014c01000020001000151800006036e7332c02bc02800010001000151800004d59f0037c03f00010001000151800004d59f0046 + +42666 +143b00000001000000000000026e73027675026e6c00001c0001 +143b80000001000000030003026e73027675026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000a0473746172026373c00fc00f0002000100015180000e036e733107737572666e6574c012c00c0001000100015180000482258104c03400010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +42667 +9fcf0000000100000000000009626f65726861617665036d6564027675026e6c00001c0001 +9fcf8000000100000003000309626f65726861617665036d6564027675026e6c00001c0001c01a00020001000151800005026e73c01ac01a0002000100015180000a0473746172026373c01ac01a0002000100015180000e036e733107737572666e6574c01dc0310001000100015180000482258104c04200010001000151800004c01fe72ac05800010001000151800004c0576a65 + +42668 +69d900000001000000000001026e73076575726f6e6574026e6c00000100010000291000000000000000 +69d980000001000000020002026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c28600430000291000000000000000 + +42669 +9bed0000000100000000000003777777026e75026e6c0000010001 +9bed8000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +42670 +69d900000001000000000000026e73076575726f6e6574026e6c0000010001 +69d980000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +42671 +529300000001000000000000026e73076575726f6e6574026e6c0000010001 +529380000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +42672 +069900000001000000000000037777770770696f6e656572026e6c0000010001 +069980000001000000020000037777770770696f6e656572026e6c0000010001c0100002000100015180000f026e73096379626572636f6d6dc018c01000020001000151800006036e7332c02f + +42673 +53330000000100000000000003777777047a6f726b026e6c0000010001 +53338000000100000003000103777777047a6f726b026e6c0000010001c0100002000100015180000b026e730563616c7978c015c01000020001000151800006036e7332c02cc0100002000100015180000c096d617273657065696ec02cc02900010001000151800004d582a20c + +42674 +54c600000001000000000000037777770d6865656d736b65726b2d776562026e6c0000010001 +54c680000001000000020000037777770d6865656d736b65726b2d776562026e6c0000010001c0100002000100015180000c026e7306766576696461c01ec01000020001000151800006036e7332c035 + +42675 +36a400000001000000000000026e73096379626572636f6d6d026e6c0000010001 +36a480000001000000030003026e73096379626572636f6d6d026e6c0000010001c00f00020001000151800017036e733110736361726c65742d696e7465726e6574c019c00f00020001000151800006036e7332c031c00f00020001000151800006036e7333c031c02d00010001000151800004d5ccc302c05000010001000151800004d5ccc303c06200010001000151800004c277e953 + +42676 +da4d00000001000000000000036e733103617474026e6c0000010001 +da4d80000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +42677 +efe000000001000000000000036e733103617474026e6c0000260001 +efe080000001000000020002036e733103617474026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +42678 +852500000001000000000000026e6c0000060001 +852584000001000100080001026e6c0000060001c00c00060001000151800036026e730f646f6d61696e2d7265676973747279c00c0a686f73746d6173746572c0230bf1e540000070800000384000278d0000003840c00c00020001000151800002c020c00c0002000100015180000d026e730472697065036e657400c00c0002000100015180000f06617574683032026e73027575c078c00c00020001000151800006036e7332c023c00c000200010001518000100573756e69630573756e657402736500c00c0002000100015180001305736c61766503737468066e65746e6f64c0c2c00c0002000100015180000c036e7332036e696302667200c00c00020001000151800006036e7335c023c02000010001000151800004c1b09002 + +42679 +39ad00000001000000000000036e7332056269746963026e6c0000010001 +39ad80000001000000020001036e7332056269746963026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000b026e73026e6c036e657400c02a00010001000151800004c36cdfc8 + +42680 +746c00000001000000000000086c6f656b686f656b026e6c0000020001 +746c80000001000000020002086c6f656b686f656b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +42681 +3b8000000001000000000000036e733203617474026e6c0000010001 +3b8080000001000000020002036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +42682 +9dc000000001000000000000036e733203617474026e6c0000260001 +9dc080000001000000020002036e733203617474026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +42683 +e0d20000000100000000000006706570696a6e026e6c0000010001 +e0d28000000100000002000206706570696a6e026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42684 +c1990000000100000000000003777777046c657861026e6c0000010001 +c1998000000100000003000203777777046c657861026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +42685 +3c76000000010000000000000f70762d64652d616c6c69616e746965026e6c0000010001 +3c76800000010000000200020f70762d64652d616c6c69616e746965026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +42686 +830c00000001000000000000036e7332057377646e73026e6c0000010001 +830c80000001000000020002036e7332057377646e73026e6c0000010001c0100002000100015180000a036e733103686978c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5a0da0ac0400001000100015180000451112ec3 + +42687 +4f5500000001000000000000026e73057377646e73026e6c0000010001 +4f5580000001000000020002026e73057377646e73026e6c0000010001c00f0002000100015180000a036e733103686978c015c00f00020001000151800006036e7332c02dc02900010001000151800004d5a0da0ac03f0001000100015180000451112ec3 + +42688 +0ef728000001000200000000026e6c00000600010767656c6465723208696e7465726e6574026e6c00000500fe000000000000c01400010001000000000004c0a80002 +0ef7a8040000000000000000 + +42689 +644b28000001000200000000026e6c00000600010d7365727665722d636f6d706171086b6565726b616465026e6c00000500fe000000000000c014000100010000000000040a000015 +644ba8040000000000000000 + +42690 +14b000000001000000000000067372763031320b66726565686f7374696e67026e6c00000f0001 +14b080000001000000020000067372763031320b66726565686f7374696e67026e6c00000f0001c0130002000100015180001105646e732d33056c61646f7403636f6d00c0130002000100015180000805646e732d34c039 + +42691 +fe920000000100000000000005616374696d026e6c00000f0001 +fe928000000100000002000005616374696d026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +42692 +33610000000100000000000003777777066370732d6974026e6c0000010001 +33618000000100000002000003777777066370732d6974026e6c0000010001c0100002000100015180000c026e7306766576696461c017c01000020001000151800006036e7332c02e + +42693 +25dc00000001000000000000086261726d61746f6e026e6c00000f0001 +25dc80000001000000020002086261726d61746f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +42694 +0000000070024000fee80000020405b401010402 +000080010000000000000000 + +42695 +000000007002faf0e84d00000204059801010402 +000080010000000000000000 + +42696 +3c7900000001000000000000037777770777696c64686572026e6c0000010001 +3c7980000001000000020002037777770777696c64686572026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02c000100010001518000043ed44661c03d000100010001518000043ed44660 + +42697 +88c5000000010000000000000377777710676161737465726c616e2d736c656174026e6c0000010001 +88c5800000010000000200020377777710676161737465726c616e2d736c656174026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c021c01000020001000151800006036e7332c039c03500010001000151800004d43d0f08c05300010001000151800004d43d19e2 + +42698 +b8557ee25010fbb8dce50000000000000000 +b855fee40000000000000000 + +42699 +a367000000010000000000000377777708737964657369676e026e6c0000010001 +a367800000010000000200000377777708737964657369676e026e6c0000010001c01000020001000151800010036e7331066969686f73740362697a00c01000020001000151800006036e7332c031 + +42700 +b854aa3250104470c4a50000000000000000 + + +42701 +b854aa32501844703b560000008e31a0000000010001000000000f313238383439303138383831382d330000f900010f313238383439303138383831382d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403afce5403c4e6500030000002f4e544c4d535350000100000097b200e00800080027000000070007002000000047454c44455232494e5445524e45540000 + + +42702 +b8557ee25018fbb819b500000094158a000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403af92f403c4aaf0003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 +b855fee40000000000000000 + +42703 +fc67000000010000000000000a74796265782d646f636f026e6c00000f0001 +fc67800000010000000200020a74796265782d646f636f026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +42704 +6ffc0000000100000000000004686f6d650464656473026e6c0000010001 +6ffc8000000100000002000204686f6d650464656473026e6c0000010001c0110002000100015180000c026e73067874646e6574c016c01100020001000151800006036e7331c02dc02a00010001000151800004c16e9d02c04200010001000151800004d9cc165f + +42705 +b8557ef05011fbaadc4e0000000000000000 +b855fef40000000000000000 + +42706 +d31800000001000000000000077575746772756e026e6c00000f0001 +d31880000001000000020001077575746772756e026e6c00000f0001c00c0002000100015180000e036e733107626c7565646e73c014c00c00020001000151800006036e7334c02cc02800010001000151800004d5c401c0 + +42707 +339100000001000000000000036e73330874656c6562797465026e6c0000010001 +339180000001000000020002036e73330874656c6562797465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004d5d38115c03b00010001000151800004d5d38116 + +42708 +216800000001000000000000036e73330874656c6562797465026e6c0000260001 +216880000001000000020002036e73330874656c6562797465026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c00010001000151800004d5d38115c03b00010001000151800004d5d38116 + +42709 +881700000001000000000000036e73340874656c6562797465026e6c0000010001 +881780000001000000020002036e73340874656c6562797465026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800002c00cc02d00010001000151800004d5d38115c00c00010001000151800004d5d38116 + +42710 +0fa500000001000000000000036e73340874656c6562797465026e6c0000260001 +0fa580000001000000020002036e73340874656c6562797465026e6c0000260001c01000020001000151800006036e7333c010c01000020001000151800002c00cc02d00010001000151800004d5d38115c00c00010001000151800004d5d38116 + +42711 +b854aa4050114462c4140000000000000000 + + +42712 +0000000070024000f6150000020405b401010402 +000080010000000000000000 + +42713 +b8557ef15010fbaadc4d0000000000000000 +b855fef40000000000000000 + +42714 +000000007002faf0a5b400000204059801010402 +000080010000000000000000 + +42715 +b856f8ee5010fbb8203f0000000000000000 + + +42716 +b854aa4150104462c4130000000000000000 + + +42717 +94b40000000100000000000006636f6f6b696504696c7365026e6c0000010001 +94b48000000100000003000306636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +42718 +b85652805010447013830000000000000000 +b856d2840000000000000000 + +42719 +b856f8ee5018fbb8972200000094dc76000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af92f403c4aaf0003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 + + +42720 +b8565280501844705c5c0000008e6078000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afce5403c4e6500030000002f4e544c4d535350000100000097b200e00800080027000000070007002000000047454c44455232494e5445524e45540000 +b856d2840000000000000000 + +42721 +e4e20000000100000000000002616404696c7365026e6c0000010001 +e4e28000000100000003000302616404696c7365026e6c0000010001c00f00020001000151800006036e7331c00fc00f00020001000151800006036e7332c00fc00f00020001000151800006036e7333c00fc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +42722 +ce9400000001000000000000026168026e6c00000f0001 +ce9480000001000000020001026168026e6c00000f0001c00c0002000100015180000b026e730561686f6c64c00fc00c0002000100015180000d036e7332036b706e036e657400c023000100010001518000048d5d2302 + +42723 +951f0000000100000000000003777777087063616374697665026e6c0000010001 +951f8000000100000002000003777777087063616374697665026e6c0000010001c0100002000100015180000a026e7304616b7475c019c0100002000100015180000b026e73026e6c036e657400 + +42724 +b856f8fc5011fbaa1fa80000000000000000 + + +42725 +e14600000001000000000000037777771062616e6e65726d616e6167656d656e74026e6c0000010001 +e14680000001000000030003037777771062616e6e65726d616e6167656d656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c035000100010001518000043e45a282c047000100010001518000043e45a283c059000100010001518000043e45a284 + +42726 +113800000001000000000000037777770b68696b696e672d73697465026e6c0000010001 +113880000001000000020002037777770b68696b696e672d73697465026e6c0000010001c0100002000100015180000a036e7331036e7873c01cc01000020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +42727 +b856528e5011446212f20000000000000000 +b856d2840000000000000000 + +42728 +b856f8fd5010fbaa1fa70000000000000000 + + +42729 +0000000070024000d2440000020405b401010402 +000080010000000000000000 + +42730 +296200000001000000000000036e733206736f6c636f6e026e6c0000010001 +296280000001000000030003036e733206736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d42d2005c04200010001000151800004d42d2003c00c00010001000151800004d42d2103 + +42731 +5c600000000100000000000008736f6c7574696f6e06736f6c636f6e026e6c0000010001 +5c608000000100000003000308736f6c7574696f6e06736f6c636f6e026e6c0000010001c01500020001000151800002c00cc01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c00c00010001000151800004d42d2005c03e00010001000151800004d42d2003c05000010001000151800004d42d2103 + +42732 +55f700000001000000000000036e733106736f6c636f6e026e6c0000010001 +55f780000001000000030003036e733106736f6c636f6e026e6c0000010001c0100002000100015180000b08736f6c7574696f6ec010c01000020001000151800002c00cc01000020001000151800006036e7332c010c02b00010001000151800004d42d2005c00c00010001000151800004d42d2003c05000010001000151800004d42d2103 + +42733 +cec100000001000000000000037777770b7374617274706167696e61026e6c0000010001 +cec180000001000000030003037777770b7374617274706167696e61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c030000100010001518000043e45a282c042000100010001518000043e45a283c054000100010001518000043e45a284 + +42734 +000000007002faf0e5ea00000204059801010402 +000080010000000000000000 + +42735 +cd6400000001000000000000056d656469610873636f7574696e67026e6c0000010001 +cd6480000001000000020001056d656469610873636f7574696e67026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800010026e730777697265687562036e657400c02f00010001000151800004d5c1d633 + +42736 +898c00000001000000000000086575726f6b6c696b026e6c0000010001 +898c80000001000000020001086575726f6b6c696b026e6c0000010001c00c0002000100015180000e026e73086575726f636c6978c015c00c00020001000151800012036e7332086575726f636c697803636f6d00c02900010001000151800004d47bc685 + +42737 +b856528f5010446212f10000000000000000 +b856d2840000000000000000 + +42738 +b8583c905010fbb81cd20000000000000000 +b858bc940000000000000000 + +42739 +b857977e50104470aab20000000000000000 + + +42740 +b857977e50184470f99f0000008e5a64000000010001000000000f313238383439303138383831382d320000f900010f313238383439303138383831382d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403afce5403c4e6500030000002f4e544c4d535350000100000097b200e00800080027000000070007002000000047454c44455232494e5445524e45540000 + + +42741 +4d9e0010000100000000000103777777096e6574646972656374026e6c00000100010000290800000080000000 +4d9e8000000100000003000103777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c0320000291000000000000000 + +42742 +b8583c905018fbb876ff00000094f92c000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403af92f403c4aaf0003000000354e544c4d535350000100000097b208e0080008002d0000000d000d00200000005345525645522d434f4d5041514b4545524b4144450000 +b858bc940000000000000000 + +42743 +b8583c9e5011fbaa1c3b0000000000000000 +b858bc940000000000000000 + +42744 +87ec000000010000000000000c746f70726563726561746965026e6c00000f0001 +87ec800000010000000200020c746f70726563726561746965026e6c00000f0001c00c00020001000151800010026e730a7a65656c616e646e6574c019c00c00020001000151800006036e7332c030c02d00010001000151800004d473c0c1c04900010001000151800004d473c0c3 + +42745 +b857978c50114462aa210000000000000000 + + +42746 +b8583c9f5010fbaa1c3a0000000000000000 +b858bc940000000000000000 + +42747 +dccb000000010000000000000864656b6c61766572026e6c0000010001 +dccb800000010000000200000864656b6c61766572026e6c0000010001c00c0002000100015180000e05646e732d31056c61646f74c015c00c0002000100015180000805646e732d32c02f + +42748 +64a90000000100000000000003777777057673686f70026e6c0000010001 +64a98000000100000003000003777777057673686f70026e6c0000010001c0100002000100015180001809776f7274656c746a650868696e6472696b73036e657400c0100002000100015180000a077065656e746a65c034c0100002000100015180001206706574727573086d696e64636f7079c03d + +42749 +06a0000000010000000000000d62626163636f756e74616e7473026e6c00000f0001 +06a0800000010000000200000d62626163636f756e74616e7473026e6c00000f0001c00c0002000100015180001b026e7312756e6976657273616c2d726567697374727903636f6d00c00c00020001000151800006036e7331c031 + +42750 +b857978d50104462aa200000000000000000 + + +42751 +9e8b0000000100000000000003777777086172656e61636f6d026e6c0000010001 +9e8b8000000100000002000203777777086172656e61636f6d026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +42752 +f0ce00000001000000000000037777771a626572656e7363686f7470726f6365736d616e6167656d656e74026e6c0000010001 +f0ce80000001000000020002037777771a626572656e7363686f7470726f6365736d616e6167656d656e74026e6c0000010001c01000020001000151800011036e73310a746f62656f6e6c696e65c02bc01000020001000151800006036e7332c043c03f000100010001518000043eddd4afc05c000100010001518000043eddc707 + +42753 +cb7a00000001000000000000026e730d646f6d65696e656e6d61726b74026e6c0000010001 +cb7a80000001000000020002026e730d646f6d65696e656e6d61726b74026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043e320c64c03f000100010001518000043e64366a + +42754 +0da4000000010000000000000670726f646973056e76776d6e026e6c0000010001 +0da4800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +42755 +32c400000001000000000000036e73320d646f6d65696e656e6d61726b74026e6c0000010001 +32c480000001000000020002036e73320d646f6d65696e656e6d61726b74026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc032000100010001518000043e320c64c00c000100010001518000043e64366a + +42756 +6322000000010000000000000469742d62026e6c00000f0001 +6322800000010000000200020469742d62026e6c00000f0001c00c0002000100015180000a016105646e737672c011c00c000200010001518000040162c027c02500010001000151800004417de609c03b0001000100015180000440f61ba0 + +42757 +aa9e00000001000000000000037777770d76726f6c696a6b656b65727374026e6c0000010001 +aa9e80000001000000020000037777770d76726f6c696a6b656b65727374026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01ec0100002000100015180000805646e732d32c038 + +42758 +91d40000000100000000000005646e732d31056c61646f74026e6c0000010001 +91d48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42759 +b74d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +b74d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42760 +d6170000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d6178000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42761 +36650000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +36658000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42762 +74c400000001000000000000037777770b686f74626f7864616e6e69026e6c0000010001 +74c480000001000000020002037777770b686f74626f7864616e6e69026e6c0000010001c0100002000100015180000b036e7331046e732d31c01cc01000020001000151800006036e7332c034c030000100010001518000045045a0cdc04700010001000151800004d4cceec8 + +42763 +636400000001000000000000056d61696c3109636c65616e706f7274026e6c0000260001 +636480000001000000020002056d61696c3109636c65616e706f7274026e6c0000260001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +42764 +d785000000010000000000000470617374026e6c00000f0001 +d785800000010000000200020470617374026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +42765 +342c0000000100000000000003777777086b6575726d65726b026e6c0000010001 +342c8000000100000002000003777777086b6575726d65726b026e6c0000010001c0100002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0100002000100015180000805726f6b696ec034 + +42766 +bdcb00100001000000000001034e53320743495354524f4e024e4c00000100010000290800000080000000 +bdcb80000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +42767 +2c12000000010000000000000d6b6f6e69672d6e657572617468026e6c0000010001 +2c12800000010000000200020d6b6f6e69672d6e657572617468026e6c0000010001c00c0002000100015180000c026e730673656e746961c01ac00c00020001000151800006036e7332c031c02e0001000100015180000450fd695ac04600010001000151800004d4cce917 + +42768 +97350000000100000000000008636f6e73756e6574026e6c0000010001 +97358000000100000002000008636f6e73756e6574026e6c0000010001c00c00020001000151800012036e73310b776f726c646f6e6c696e65c015c00c00020001000151800006036e7332c02d + +42769 +90120000000100000000000006706167653431026e6c00000f0001 +90128403000100000001000006706167653431026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +42770 +96fb000000010000000000000b6e6f64652d632d66346537056132303030026e6c0000010001 +96fb800000010000000300020b6e6f64652d632d66346537056132303030026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800010036e733109756e69736f75726365c01ec01800020001000151800006036e7332c018c032000100010001518000043e6c0141c060000100010001518000043e6c0142 + +42771 +b2720000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +b2728000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +42772 +f0d2000000010000000000000377777705647761617a026e6c0000010001 +f0d2800000010000000200000377777705647761617a026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c030 + +42773 +44e300000001000000000000036e73320a616d657273666f6f7274026e6c0000010001 +44e380000001000000020001036e73320a616d657273666f6f7274026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02f00010001000151800004c14387fe + +42774 +d2fc00000001000000000000036e73320a616d657273666f6f7274026e6c0000260001 +d2fc80000001000000020001036e73320a616d657273666f6f7274026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02f00010001000151800004c14387fe + +42775 +8bdc000000010000000000000b7265636c616d65636f6465026e6c0000010001 +8bdc800000010000000300010b7265636c616d65636f6465026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +42776 +9ddd0000000100000000000003777777076e6c6265757273026e6c0000010001 +9ddd8000000100000003000203777777076e6c6265757273026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42777 +b8c5000000010000000000000d6c6f656b6d65656e686f727374026e6c0000020001 +b8c5800000010000000200020d6c6f656b6d65656e686f727374026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +42778 +4fc500000001000000000000085453434c49454e5406444e53424441024e4c0000010001 +4fc584030001000000010000085453434c49454e5406444e53424441024e4c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +42779 +dc1400000001000000000000036e733303696467026e6c00001c0001 +dc1480000001000000030003036e733303696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +42780 +f40300000001000000000000036e733103696467026e6c00001c0001 +f40380000001000000030003036e733103696467026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +42781 +972700000001000000000000036e733203696467026e6c00001c0001 +972780000001000000030003036e733203696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +42782 +80da00000001000000000000096863632d67726f6570026e6c0000010001 +80da80000001000000020002096863632d67726f6570026e6c0000010001c00c0002000100015180000e036e7331077175616e746973c016c00c00020001000151800006036e7332c02ec02a000100010001518000043ed44440c04400010001000151800004d4ccca83 + +42783 +3399000000010000000000000467696473026e6c00001c0001 +3399800000010000000200000467696473026e6c00001c0001c00c00020001000151800015096d6f6e64726961616e0874656c6562797465c011c00c0002000100015180000a077665726d656572c02f + +42784 +196900000001000000000000037777770f68656c6c686f756e6473626c756573026e6c0000010001 +196984030001000000010000037777770f68656c6c686f756e6473626c756573026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +42785 +811e00000001000000000000026e73057972616d73026e6c0000010001 +811e80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +42786 +800b00000001000000000000066962626e6574026e6c0000010001 +800b80000001000000020000066962626e6574026e6c0000010001c00c0002000100015180000b026e73057972616d73c013c00c0002000100015180000b026e73026e6c036e657400 + +42787 +1659000000010000000000000b73797374656d6661726d61026e6c00000f0001 +1659800000010000000200010b73797374656d6661726d61026e6c00000f0001c00c0002000100015180000e036e7331076e6564636f6d70c018c00c00020001000151800011036e7332076e6564636f6d70036f726700c02c00010001000151800004c3c1a80d + +42788 +f3fd0000000100000000000008686f73746e616d650462696e640000100003 +f3fd8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +42789 +20b400000001000000000000086d616667726f7570026e6c0000ff0001 +20b480000001000000020000086d616667726f7570026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +42790 +83ea00000001000000000000056d61696c31076e6564636f6d70026e6c0000010001 +83ea80000001000000020001056d61696c31076e6564636f6d70026e6c0000010001c01200020001000151800006036e7331c012c0120002000100015180000b026e73026e6c036e657400c02e00010001000151800004c3c1a80d + +42791 +02a300100001000000000001036e733503777873026e6c00000100010000290800000000000000 +02a380000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +42792 +ae0700000001000000000000036e733206657472616465026e6c00001c0001 +ae0780000001000000020000036e733206657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +42793 +5f8300000001000000000000036e733106657472616465026e6c00001c0001 +5f8380000001000000020000036e733106657472616465026e6c00001c0001c01000020001000151800011056c656d6f6e0571696e6970036e657400c01000020001000151800007046c696d65c031 + +42794 +469700000001000000000000086c65736562616e63026e6c00000f0001 +469780000001000000020002086c65736562616e63026e6c00000f0001c00c00020001000151800012036e73320b76736d2d686f7374696e67c015c00c00020001000151800005026e73c02dc02900010001000151800004d468c204c04700010001000151800004d468c205 + +42795 +f33b0000000100000000000008686f73746e616d650462696e640000100003 +f33b8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +42796 +6bad000000010000000000000377777706787334616c6c026e6c0000010001 +6bad800000010000000300020377777706787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +42797 +df8c0000000100000000000003777777096e6574646972656374026e6c0000010001 +df8c8000000100000003000003777777096e6574646972656374026e6c0000010001c01000020001000151800012036e733108626c7565646f6d65036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +42798 +6e2c00000001000000000000037777770461646864026e6c0000010001 +6e2c80000001000000020002037777770461646864026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c015c01000020001000151800006036e7332c02dc02900010001000151800004505fa002c04400010001000151800004505fac02 + +42799 +52280000000100000000000008686f73746e616d650462696e640000100003 +52288000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +42800 +2487000000010000000000000377777710636f6d7075746572737570706c696573026e6c0000010001 +2487800000010000000200020377777710636f6d7075746572737570706c696573026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c021c01000020001000151800006036e7332c038c03500010001000151800004d9aa2042c04e00010001000151800004d9aa2c06 + +42801 +926d0000000100000000000006696d6167657306776562616473026e6c0000010001 +926d8000000100000002000206696d6167657306776562616473026e6c0000010001c01300020001000151800012036e73310b7669616e6574776f726b73c01ac01300020001000151800006036e7332c032c02e00010001000151800004d43d0f08c04c00010001000151800004d43d19e2 + +42802 +138b00000001000000000000037777770e73616d736f6e20656e2067657274026e6c0000010001 +138b84030001000000010000037777770e73616d736f6e20656e2067657274026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +42803 +70df00000001000000000000036e7333076e656473746174026e6c0000010001 +70df80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42804 +6ff300000001000000000000026e73076e656473746174026e6c0000010001 +6ff380000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42805 +bec300000001000000000000036e733503777873026e6c0000010001 +bec380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +42806 +65f528000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d73646373086e6b6f6572696572026e6c000021000100000258001a000000640cc406736572766572086e6b6f6572696572026e6c00 +65f5a8040000000000000000 + +42807 +e12c00000001000000000000037777770667726f656e65026e6c0000010001 +e12c80000001000000020002037777770667726f656e65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +42808 +b74100000001000000000000037777770667726f656e65026e6c0000010001 +b74180000001000000020002037777770667726f656e65026e6c0000010001c0100002000100015180000c026e7306787334616c6cc017c01000020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +42809 +64ef00000001000000000000034e53320743495354524f4e024e4c0000010001 +64ef80000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +42810 +7018000000010000000000000377777707626572746f6e69026e6c0000010001 +7018800000010000000300010377777707626572746f6e69026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +42811 +000000007002223853ff00000204057801010402 +000080010000000000000000 + +42812 +eae200000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d7676762d676f72696e6368656d026e6c0000060001 +eae284030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d7676762d676f72696e6368656d026e6c0000060001c05200060001000038400036026e730f646f6d61696e2d7265676973747279c0520a686f73746d6173746572c0690bf1e540000070800000384000278d0000003840 + +42813 +f6a800100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +f6a880000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +42814 +c46800100001000000000001036e733107737572666e6574026e6c00002600010000290800000080000000 +c46880000001000000040004036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +42815 +107200000001000000000000037777770766726565787878026e6c0000010001 +107280000001000000030003037777770766726565787878026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +42816 +14c800100001000000000001026e7308454c534556494552026e6c00000100010000290800000080000000 +14c880000001000000020003026e7308454c534556494552026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c018c00c0001000100015180000491240501c03a00010001000151800004c0576a650000291000000000000000 + +42817 +130c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +130c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42818 +455d00100001000000000001026e7308454c534556494552026e6c00002600010000290800000080000000 +455d80000001000000020003026e7308454c534556494552026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c018c00c0001000100015180000491240501c03a00010001000151800004c0576a650000291000000000000000 + +42819 +89950000000100000000000005646e732d32056c61646f74026e6c0000010001 +89958000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42820 +2f7b00000001000000000000036e73310769736973776562026e6c0000010001 +2f7b80000001000000030003036e73310769736973776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7334c010c00c00010001000151800004d4ccca65c03a00010001000151800004510440dec04c00010001000151800004510440fa + +42821 +b29200000001000000000000036e73320769736973776562026e6c0000010001 +b29280000001000000030003036e73320769736973776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7334c010c02c00010001000151800004d4ccca65c00c00010001000151800004510440dec04c00010001000151800004510440fa + +42822 +03c900000001000000000000036e73340769736973776562026e6c0000010001 +03c980000001000000030003036e73340769736973776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02c00010001000151800004d4ccca65c03e00010001000151800004510440dec00c00010001000151800004510440fa + +42823 +33d500000001000000000000036e73350769736973776562026e6c0000010001 +33d580000001000000030003036e73350769736973776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7334c010c02c00010001000151800004d4ccca65c03e00010001000151800004510440dec05000010001000151800004510440fa + +42824 +427800000001000000000000086c6f656e6174696b026e6c0000020001 +427880000001000000020002086c6f656e6174696b026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +42825 +b85a8a295010264839e30000000000000000 + + +42826 +82c70000000100000000000003777777087374617273686f70026e6c0000010001 +82c78000000100000002000203777777087374617273686f70026e6c0000010001c01000020001000151800009026e730369736dc019c01000020001000151800006036e7332c030c02d00010001000151800004d994ab02c04200010001000151800004d994ab03 + +42827 +0137000000010000000000000377777703696267026e6c0000010001 +0137800000010000000200000377777703696267026e6c0000010001c01000020001000151800011036e73310773696e6e65726703636f6d00c01000020001000151800006036e7332c02c + +42828 +d31c00000001000000000000026763065f6d736463730a76706e2d6f6e6c696e65026e6c0000060001 +d31c84030001000000010000026763065f6d736463730a76706e2d6f6e6c696e65026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +42829 +fd37000000010000000000000477697368026e6c00000f0001 +fd37800000010000000300020477697368026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +42830 +b85a8a2950182648986c0000008d7000000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +42831 +411228000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730d7676762d676f72696e6368656d026e6c00002100010000025800280000006400580f676f72696e6368656d326b2d7362730d7676762d676f72696e6368656d026e6c00 +4112a8040000000000000000 + +42832 +f5710000000100000000000003777777066a2d656e2d65026e6c0000010001 +f5718403000100000001000003777777066a2d656e2d65026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +42833 +000000007002faf02bcb0000020405b401010402 +000080010000000000000000 + +42834 +b85a8a375011263a39530000000000000000 + + +42835 +b85b16615010faf089c20000000000000000 +b85b96640000000000000000 + +42836 +eb58000000010000000000000775706461746573077261666f726365026e6c0000010001 +eb58800000010000000200000775706461746573077261666f726365026e6c0000010001c01400020001000151800012036e7331087a6f6e656564697403636f6d00c01400020001000151800006036e7335c034 + +42837 +00000000700222384d0d00000204057801010402 +000080010000000000000000 + +42838 +b85b16615018faf0b5f40000009ba618000000010001000000000f313138353431303937333731342d330000f900010f313138353431303937333731342d330000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af563403c46e300030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 +b85b96640000000000000000 + +42839 +000928000001000200000000026e6c00000600010261730b746563686e6f70616e656c026e6c00000500fe000000000000c01400010001000000000004c0a86466 +0009a8040000000000000000 + +42840 +b85b166f5011fae289240000000000000000 +b85b96640000000000000000 + +42841 +906a000000010000000000000377777703757661026e6c0000010001 +906a800000010000000200020377777703757661026e6c0000010001c0100002000100015180000e086261726c61657573026963c010c01000020001000151800006036e7331c010c0280001000100015180000491124432c0420001000100015180000491122710 + +42842 +29cb00000001000000000000026e7308454c534556494552026e6c0000010001 +29cb80000001000000020002026e7308454c534556494552026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c018c00c0001000100015180000491240501c03a00010001000151800004c0576a65 + +42843 +b85b16705010fae289230000000000000000 +b85b96740000000000000000 + +42844 +b85a8a385010263a39520000000000000000 + + +42845 +50f200000001000000000000026e7308454c534556494552026e6c0000260001 +50f280000001000000020002026e7308454c534556494552026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c018c00c0001000100015180000491240501c03a00010001000151800004c0576a65 + +42846 +4aec00000001000000000000036d783207776172706e6574026e6c0000010001 +4aec80000001000000020002036d783207776172706e6574026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c323b01ec03e00010001000151800004c323b01f + +42847 +000000007002faf087d30000020405b401010402 +000080010000000000000000 + +42848 +b85bdfe450102648dd340000000000000000 + + +42849 +376f00000001000000000000036e7331056577656b61026e6c0000010001 +376f80000001000000020002036e7331056577656b61026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7333c010c00c0001000100015180000451ab6504c0380001000100015180000451ab660e + +42850 +a8c900000001000000000000036e7333056577656b61026e6c0000010001 +a8c980000001000000020002036e7333056577656b61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02a0001000100015180000451ab6504c00c0001000100015180000451ab660e + +42851 +b85cb74e5010faf044dc0000000000000000 + + +42852 +000000007002400075820000020405b401010402 +000080010000000000000000 + +42853 +fee600000001000000000000067669617765620b7669616e6574776f726b73026e6c0000010001 +fee680000001000000020002067669617765620b7669616e6574776f726b73026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c03300010001000151800004d43d0f08c04500010001000151800004d43d19e2 + +42854 +b85cb74e5018faf0b5e70000009b6240000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af563403c46e300030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 + + +42855 +28cc00000001000000000000026e73076e656473746174026e6c0000010001 +28cc80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +42856 +28cd00000001000000000000036e7333076e656473746174026e6c0000010001 +28cd80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +42857 +1fe200100001000000000001105649525455414c53484f5754494d4553026e6c00000200010000290800000080000000 +1fe284030001000000010001105649525455414c53484f5754494d4553026e6c0000020001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d00000038400000291000000000000000 + +42858 +5e800000000100000000000002676b026e6c00000f0001 +5e808000000100000003000102676b026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc00fc00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c041c023000100010001518000043efa0202 + +42859 +51e700000001000000000000037777770a6473742d74726176656c026e6c0000010001 +51e780000001000000020000037777770a6473742d74726176656c026e6c0000010001c0100002000100015180000c026e7306766576696461c01bc01000020001000151800006036e7332c032 + +42860 +027528000001000100020000026e6c00000600010a7765726b706c656b3234116e65776d61726b6574636f6e73756c7473026e6c00000500fe000000000000c014000100ff000000000000c014000100010000038400040a070145 +0275a8040000000000000000 + +42861 +9cba000000010000000000000b726964646572686176656e026e6c00000f0001 +9cba800000010000000300020b726964646572686176656e026e6c00000f0001c00c0002000100015180000d036e733106776964657873c018c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +42862 +b85bdfe4501826489cbf0000008d1000000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +42863 +9ed800000001000000000000036e73320a7a65656c616e646e6574026e6c0000010001 +9ed880000001000000020002036e73320a7a65656c616e646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +42864 +27ce00000001000000000000026e730a7a65656c616e646e6574026e6c0000010001 +27ce80000001000000020002026e730a7a65656c616e646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +42865 +93e700000001000000000000036e73320a7a65656c616e646e6574026e6c0000260001 +93e780000001000000020002036e73320a7a65656c616e646e6574026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +42866 +fcf300000001000000000000026e730a7a65656c616e646e6574026e6c0000260001 +fcf380000001000000020002026e730a7a65656c616e646e6574026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +42867 +b85cb75c5011fae2443e0000000000000000 + + +42868 +b85d4c1f5010447099490000000000000000 +b85dcc140000000000000000 + +42869 +82b800000001000000000000087761746572776567026e6c00000f0001 +82b880000001000000020002087761746572776567026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +42870 +b85d4c1f5018447060e70000008aa150000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd59403c4ed900030000002d4e544c4d535350000100000097b200c00b000b002200000002000200200000004153544543484e4f50414e454c0000 +b85dcc140000000000000000 + +42871 +7ff6000000010000000000000773616c2d656e67026e6c00000f0001 +7ff6800000010000000200010773616c2d656e67026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02800010001000151800004c14e3e01 + +42872 +b85cb75d5010fae2443d0000000000000000 + + +42873 +000000007002faf03cb70000020405b401010402 +000080010000000000000000 + +42874 +b85dec5d5010faf0c4af0000000000000000 + + +42875 +b85d4c2d5011446298bc0000000000000000 +b85dcc240000000000000000 + +42876 +1f1700000001000000000000037777770a6b72697374616c6c656e026e6c0000010001 +1f1780000001000000020001037777770a6b72697374616c6c656e026e6c0000010001c0100002000100015180000e036e733107626c7565646e73c01bc01000020001000151800006036e7333c033c02f00010001000151800004d5c401c0 + +42877 +0000000070024000dacd0000020405b401010402 +000080010000000000000000 + +42878 +b85dec5d5018faf08a890000009b0d72000000010001000000000f313138353431303937333731342d320000f900010f313138353431303937333731342d320000f900ff00000000005f03677373096d6963726f736f667403636f6d00403af563403c46e300030000003c4e544c4d535350000100000097b208e00d000d002f0000000f000f0020000000474f52494e4348454d324b2d5342535656562d474f52494e4348454d0000 + + +42879 +014900000001000000000000066265696a6572026e6c00000f0001 +014980000001000000020000066265696a6572026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02d + +42880 +8ae40000000100000000000003777777067a69656d696a026e6c0000010001 +8ae48000000100000003000203777777067a69656d696a026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +42881 +b85bdff25011263adca40000000000000000 + + +42882 +7898000000010000000000000977696e6b656c6d616e026e6c00000f0001 +7898800000010000000200020977696e6b656c6d616e026e6c00000f0001c00c0002000100015180000a036e733103647768c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d5efb308c04000010001000151800004d5efb303 + +42883 +7a6b0000000100000000000007696e6e6f76616d026e6c00000f0001 +7a6b8000000100000002000207696e6e6f76616d026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +42884 +0000000070022238441700000204057801010402 +000080010000000000000000 + +42885 +b85dec6b5011fae2c4110000000000000000 + + +42886 +b85d4c2e5010446298bb0000000000000000 +b85dcc240000000000000000 + +42887 +1c80000000010000000000000974656c656b6162656c026e6c00000f0001 +1c80800000010000000200020974656c656b6162656c026e6c00000f0001c00c0002000100015180000a036e733103757063c016c00c0002000100015180000e046e733032066368656c6c6fc016c02a00010001000151800004d48e1c42c04000010001000151800004d4534483 + +42888 +b85ec015501044708a9d0000000000000000 + + +42889 +e3e700000001000000000000066368656c6c6f026e6c0000ff0001 +e3e780000001000000030003066368656c6c6f026e6c0000ff0001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +42890 +528500000001000000000000036c6f66026e6c0000020001 +528580000001000000020002036c6f66026e6c0000020001c00c0002000100015180000e036e733007656173796e6574c010c00c00020001000151800006036e7331c028c02400010001000151800004c2a55e01c03e00010001000151800004c2a55e05 + +42891 +9f730000000100000000000007706f727461616c026e6c00000f0001 +9f738000000100000002000007706f727461616c026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +42892 +b85dec6c5010fae2c4100000000000000000 + + +42893 +b85ec0155018447027ef0000008acd9c000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd59403c4ed900030000002d4e544c4d535350000100000097b200c00b000b002200000002000200200000004153544543484e4f50414e454c0000 + + +42894 +606628000001000000010000026e6c0000060001055f6c646170045f746370026763065f6d73646373057368696e650473686276026e6c000021000100000258001d000000640cc4077368696e653031057368696e650473686276026e6c00 +6066a8040000000000000000 + +42895 +b85bdff35010263adca30000000000000000 + + +42896 +a6db00000001000000000000037777770b646f6e7175692d6a6f686e026e6c0000010001 +a6db80000001000000020000037777770b646f6e7175692d6a6f686e026e6c0000010001c01000020001000151800016036e73310f627573696e657373636f6e6e656374c01cc01000020001000151800010036e733206776964657873036e657400 + +42897 +34c30000000100000000000008616473657276657206776562616473026e6c0000010001 +34c38000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +42898 +ad3c00000001000000000000036e73310f627573696e657373636f6e6e656374026e6c0000010001 +ad3c80000001000000030002036e73310f627573696e657373636f6e6e656374026e6c0000010001c0100002000100015180000d036e733106776964657873c020c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c038c03400010001000151800004d4ccc0fcc069000100010001518000043efa0703 + +42899 +b9ae0000000100000000000008444953484f45434b024e4c00000f0001 +b9ae8000000100000003000108444953484f45434b024e4c00000f0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +42900 +0ff100000001000000000000105649525455414c53484f5754494d4553026e6c0000020001 +0ff184030001000000010000105649525455414c53484f5754494d4553026e6c0000020001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +42901 +b85ec023501144628a100000000000000000 + + +42902 +4dc7000000010000000000000a6d6470726f6475637473026e6c00000f0001 +4dc7800000010000000200010a6d6470726f6475637473026e6c00000f0001c00c0002000100015180000d026e7307696e746f756368c017c00c00020001000151800010026e7307696e746f756368036e657400c02b00010001000151800004d413c001 + +42903 +b85f89fe501026482a210000000000000000 + + +42904 +00000000700240007f700000020405b401010402 +000080010000000000000000 + +42905 +000000007002400035fd0000020405b401010402 +000080010000000000000000 + +42906 +30cc000000010000000000000974696e6b6f6570656c026e6c00000f0001 +30cc800000010000000200020974696e6b6f6570656c026e6c00000f0001c00c00020001000151800013036e73310c62656472696a76656e776562c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d90867fec04900010001000151800004c1ad2bfe + +42907 +b860b22450104470f3bb0000000000000000 + + +42908 +fad5000000010000000000001566696e616e636965656c2d6d616e6167656d656e74026e6c00000f0001 +fad5800000010000000200021566696e616e636965656c2d6d616e6167656d656e74026e6c00000f0001c00c0002000100015180000a036e733103656964c022c00c00020001000151800006036e7332c03ac0360001000100015180000452c048b6c04c0001000100015180000452c048ba + +42909 +73ea000000010000000000000d64656d6f6c656e62616e64656e026e6c00000f0001 +73ea800000010000000200020d64656d6f6c656e62616e64656e026e6c00000f0001c00c00020001000151800012026e730c696e746572636f6e6e656374c01ac00c00020001000151800006036e7332c031c02e00010001000151800004d453c005c04c00010001000151800004d453c006 + +42910 +b85ec024501044628a0f0000000000000000 + + +42911 +b85f89fe50182648b9ab0000008d4000000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403afcd7403c4e5700030000002e4e544c4d535350000100000097b200e0080008002600000006000600200000005345525645524e4b4f45524945520000 + + +42912 +b860b224501844700a5d0000008b8567000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd2a403c4eaa00030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 + + +42913 +9dd10000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +9dd18000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42914 +4a810000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +4a818000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42915 +b8600c6350104470e2f00000000000000000 +b8608c640000000000000000 + +42916 +b8600c6350184470bba00000008a903e000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403afd5a403c4eda00030000002d4e544c4d535350000100000097b200c00b000b002200000002000200200000004153544543484e4f50414e454c0000 +b8608c640000000000000000 + +42917 +af8e0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +af8e8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +42918 +0126000000010000000000000377777706737562776562026e6c0000010001 +0126800000010000000200020377777706737562776562026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000d036e73320663617374656cc017c02b00010001000151800004c35593cac03c00010001000151800004c3558245 + +42919 +b860b23250114462f32d0000000000000000 + + +42920 +4fdd00000001000000000000036e7331077569746c696a6e026e6c00001c0001 +4fdd80000001000000020002036e7331077569746c696a6e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3aa5fbc03a00010001000151800004d4ccfc79 + +42921 +d03900000001000000000000036e7331077569746c696a6e026e6c0000260001 +d03980000001000000020002036e7331077569746c696a6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3aa5fbc03a00010001000151800004d4ccfc79 + +42922 +bb2f00000001000000000000036e7332077569746c696a6e026e6c00001c0001 +bb2f80000001000000020002036e7332077569746c696a6e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3aa5fbc00c00010001000151800004d4ccfc79 + +42923 +55f600000001000000000000036e7332077569746c696a6e026e6c0000260001 +55f680000001000000020002036e7332077569746c696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3aa5fbc00c00010001000151800004d4ccfc79 + +42924 +0000000070024000aa9b0000020405b401010402 +000080010000000000000000 + +42925 +c18400000001000000000000036d783203656964026e6c0000010001 +c18480000001000000020002036d783203656964026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0280001000100015180000452c048b6c03a0001000100015180000452c048ba + +42926 +2a190000000100000000000003777777057261756368026e6c0000010001 +2a198000000100000002000203777777057261756368026e6c0000010001c0100002000100015180000e08706f7765722d6133026133c016c0100002000100015180000c09706f7765722d697078c033c02a0001000100015180000451113b42c04400010001000151800004d5ab40e6 + +42927 +0b8c0000000100000000000008656c63686561706f026e6c0000010001 +0b8c8000000100000002000008656c63686561706f026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c02d + +42928 +b860b23350104462f32c0000000000000000 + + +42929 +b8600c7150114462e2630000000000000000 +b8608c740000000000000000 + +42930 +b861437f50104470d6fe0000000000000000 +b861c3740000000000000000 + +42931 +b861437f50184470a8780000008bcb8f000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd2a403c4eaa00030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 +b861c3740000000000000000 + +42932 +b85f8a0c5011263a29910000000000000000 + + +42933 +ad4900000001000000000000037777770e6261736b657462616c6c73697465026e6c0000010001 +ad4980000001000000020002037777770e6261736b657462616c6c73697465026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01fc01000020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +42934 +b861438d50114462d6700000000000000000 +b861c3840000000000000000 + +42935 +b8600c7250104462e2620000000000000000 +b8608c740000000000000000 + +42936 +0000000070024000229f0000020405b401010402 +000080010000000000000000 + +42937 +b861438e50104462d66f0000000000000000 +b861c3840000000000000000 + +42938 +b863aebd50104470e3c10000000000000000 + + +42939 +c1ae00000001000000000000046d61696c0b6a6f736875617072696e73026e6c0000010001 +c1ae80000001000000020002046d61696c0b6a6f736875617072696e73026e6c0000010001c01100020001000151800015036e73310e692d6d61746368686f7374696e67c01dc01100020001000151800006036e7332c035c03100010001000151800004d4cb1d01c05200010001000151800004d4cb1d02 + +42940 +9b7c00000001000000000000094f4f535450434449520a4f6f737465696e646572026e6c0000060001 +9b7c84030001000000010000094f4f535450434449520a4f6f737465696e646572026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +42941 +b85f8a0d5010263a29900000000000000000 + + +42942 +b863aebd501844706f140000008b11b7000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000004f03677373096d6963726f736f667403636f6d00403afd2a403c4eaa00030000002c4e544c4d535350000100000097b200e0050005002700000007000700200000005348494e4530315348494e450000 + + +42943 +b863aecb50114462e3330000000000000000 + + +42944 +da0700000001000000000000037777770b6161646d616e7376656c64026e6c0000010001 +da0780000001000000020000037777770b6161646d616e7376656c64026e6c0000010001c01000020001000151800012036e7331086974732d646e733303636f6d00c01000020001000151800006036e7332c034 + +42945 +446e00000001000000000000037777770768657465313030026e6c0000010001 +446e80000001000000020002037777770768657465313030026e6c0000010001c0100002000100015180000c04646e73310470696e73c018c0100002000100015180000704646e7332c031c02c00010001000151800004d9c26101c04400010001000151800004d9c26002 + +42946 +b863aecc50104462e3320000000000000000 + + +42947 +0c0600100001000000000001036e733206776964657873026e6c00000100010000290800000000000000 +0c0680000001000000030003036e733206776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c02b00010001000151800004d4ccc0fcc059000100010001518000043efa07030000291000000000000000 + +42948 +709f00000001000000000000096c6f6c706c616e6574026e6c00000f0001 +709f84030001000000010000096c6f6c706c616e6574026e6c00000f0001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +42949 +3ad40000000100000000000004534d545006585334414c4c024e4c0000010001 +3ad48000000100000003000204534d545006585334414c4c024e4c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +42950 +ad0800000001000000000000037777771473696e676c656d6161726e696574616c6c65656e026e6c0000010001 +ad0880000001000000020002037777771473696e676c656d6161726e696574616c6c65656e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c039000100010001518000043e320da2c04b000100010001518000043ed48264 + +42951 +ba0000000001000000000000036e733108696e74726f776562026e6c0000010001 +ba0080000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +42952 +af5400000001000000000000036e733208696e74726f776562026e6c0000010001 +af5480000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +42953 +70db00000001000000000000036e73321473696e676c656d6161726e696574616c6c65656e026e6c0000010001 +70db80000001000000020002036e73321473696e676c656d6161726e696574616c6c65656e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc039000100010001518000043e320da2c00c000100010001518000043ed48264 + +42954 +d24c00000001000000000000036e73311473696e676c656d6161726e696574616c6c65656e026e6c0000010001 +d24c80000001000000020002036e73311473696e676c656d6161726e696574616c6c65656e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e320da2c047000100010001518000043ed48264 + +42955 +057100000001000000000000126c6f676565726b72696e676472656e746865026e6c0000020001 +057180000001000000020002126c6f676565726b72696e676472656e746865026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01fc00c00020001000151800006036e7332c037c03300010001000151800004c29f4906c04b00010001000151800004c29fb004 + +42956 +fbd40000000100000000000002706d026e6c00001c0001 +fbd48000000100000002000002706d026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +42957 +b37900000001000000000000036e733206776964657873026e6c0000010001 +b37980000001000000030002036e733206776964657873026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c010c02b00010001000151800004d4ccc0fcc059000100010001518000043efa0703 + +42958 +b5b200100001000000000001036e73320e64617461636f6e686f7374696e67026e6c00000100010000290800000080000000 +b5b280000001000000020003036e73320e64617461636f6e686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03300010001000151800004d43d2934c00c00010001000151800004d468d1430000291000000000000000 + +42959 +d872000000010000000000000964736c3032382d30360364736c07737570706f7274026e6c0000010001 +d872800000010000000200020964736c3032382d30360364736c07737570706f7274026e6c0000010001c01a00020001000151800006036e7332c01ac01a00020001000151800006036e7334c01ac03600010001000151800004c372e7c8c04800010001000151800004c372e6fe + +42960 +6d6200100001000000000001026e730e64617461636f6e686f7374696e67026e6c00000100010000290800000080000000 +6d6280000001000000020003026e730e64617461636f6e686f7374696e67026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d43d2934c04000010001000151800004d468d1430000291000000000000000 + +42961 +06d500000001000000000000037777770d77616e64656c77656273697465026e6c0000010001 +06d580000001000000020000037777770d77616e64656c77656273697465026e6c0000010001c01000020001000151800011036e73330a737562686f7374696e67c01ec01000020001000151800006036e7334c036 + +42962 +525000000001000000000000037777771068616e64732d6f6e2d6865616c696e67026e6c0000010001 +525080000001000000020002037777771068616e64732d6f6e2d6865616c696e67026e6c0000010001c01000020001000151800013036e73310c666173747365727665723131c021c01000020001000151800006036e7332c039c0350001000100015180000442a4f077c0540001000100015180000442a4f078 + +42963 +2a7a0000000100000000000003777777096163736576656e756d026e6c0000010001 +2a7a8000000100000002000203777777096163736576656e756d026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +42964 +9ac70000000100000000000006636861726973026e6c00000f0001 +9ac78000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +42965 +9fe500000001000000000000037777770d7375706572736e656c6164736c026e6c0000010001 +9fe580000001000000020002037777770d7375706572736e656c6164736c026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01ec0100002000100015180001004646e733208636f6e6365707473c01ec03200010001000151800004d5c51c03c04f00010001000151800004d5c51e1c + +42966 +7b8a000000010000000000000677777777696e06317374776562026e6c0000010001 +7b8a800000010000000200020677777777696e06317374776562026e6c0000010001c0130002000100015180000e08706f7765722d6133026133c01ac0130002000100015180000c09706f7765722d697078c037c02e0001000100015180000451113b42c04800010001000151800004d5ab40e6 + +42967 +61c600000001000000000000037777770d6d6f746f726b6c61737369656b026e6c0000010001 +61c680000001000000020000037777770d6d6f746f726b6c61737369656b026e6c0000010001c01000020001000151800014026e730b686f6c6c616e64686f7374036e657400c01000020001000151800006036e7332c035 + +42968 +3a0c0000000100000000000003777777046465646b026e6c0000010001 +3a0c8000000100000002000203777777046465646b026e6c0000010001c01000020001000151800014036e73310d32302d616c6c686f7374696e67c015c01000020001000151800006036e7332c02dc029000100010001518000044262d66ec049000100010001518000044262d66f + +42969 +25a000000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +25a080000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +42970 +6d59000000010000000000000c74696d6d65726f6e6c696e65026e6c00000f0001 +6d59800000010000000200000c74696d6d65726f6e6c696e65026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c033 + +42971 +85a00000000100000000000005646e732d31056c61646f74026e6c0000010001 +85a08000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42972 +46720000000100000000000005646e732d32056c61646f74026e6c0000010001 +46728000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42973 +c8b20000000100000000000003777777096e616774656761616c026e6c0000010001 +c8b28000000100000003000103777777096e616774656761616c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +42974 +b03700000001000000000000096d61696c686f7374340b66726565686f7374696e67026e6c0000010001 +b03780000001000000020000096d61696c686f7374340b66726565686f7374696e67026e6c0000010001c0160002000100015180001105646e732d33056c61646f7403636f6d00c0160002000100015180000805646e732d34c03c + +42975 +2c54000000010000000000000d6672616e656b6572616465656c026e6c00000f0001 +2c54800000010000000200020d6672616e656b6572616465656c026e6c00000f0001c00c0002000100015180000e026e730869742d776f726b73c01ac00c00020001000151800014026e730e667279736c616e2d6f6e6c696e65c01ac02e00010001000151800004515b0288c04800010001000151800004515b020d + +42976 +c5ce000000010000000000000b776966692d7365727665720377686b026e6c0000060001 +c5ce800000010000000300030b776966692d7365727665720377686b026e6c0000060001c0180002000100015180000e04646e733106626c6978656dc01cc0180002000100015180000704646e7332c035c0180002000100015180000704646e7333c035c03000010001000151800004d44fe803c04a00010001000151800004c3f5c782c05d00010001000151800004d44ff303 + +42977 +0aa0000000010000000000000b776966692d7365727665720377686b026e6c0000060001 +0aa0800000010000000300030b776966692d7365727665720377686b026e6c0000060001c0180002000100015180000e04646e733106626c6978656dc01cc0180002000100015180000704646e7332c035c0180002000100015180000704646e7333c035c03000010001000151800004d44fe803c04a00010001000151800004c3f5c782c05d00010001000151800004d44ff303 + +42978 +de1700000001000000000000046162656c0564656d6f6e026e6c00001c0001 +de1780000001000000030002046162656c0564656d6f6e026e6c00001c0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +42979 +1cfc00000001000000000000026e73057972616d73026e6c0000010001 +1cfc80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +42980 +144e0000000100000000000003706f700b7669616e6574776f726b73026e6c0000010001 +144e8000000100000002000203706f700b7669616e6574776f726b73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c03000010001000151800004d43d0f08c04200010001000151800004d43d19e2 + +42981 +1923000000010000000000000377777711796163687463686172746572736e65656b026e6c0000010001 +1923800000010000000200020377777711796163687463686172746572736e65656b026e6c0000010001c01000020001000151800009036e7331026d6ac022c01000020001000151800006036e7332c03ac03600010001000151800004515b010ac04b00010001000151800004515b000a + +42982 +1c53000000010000000000000377777711796163687463686172746572736e65656b026e6c0000010001 +1c53800000010000000200020377777711796163687463686172746572736e65656b026e6c0000010001c01000020001000151800009036e7331026d6ac022c01000020001000151800006036e7332c03ac03600010001000151800004515b010ac04b00010001000151800004515b000a + +42983 +5558000000010000000000000377777708696b73746f706e75026e6c0000010001 +5558840300010000000100000377777708696b73746f706e75026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +42984 +6ef60000000100000000000008686f75736561647303696467026e6c0000010001 +6ef68000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +42985 +d55600000001000000000000037777770b74656d706f686572656e33026e6c0000010001 +d55680000001000000020002037777770b74656d706f686572656e33026e6c0000010001c0100002000100015180000a036e733103647768c01cc01000020001000151800006036e7332c034c03000010001000151800004d5efb308c04600010001000151800004d5efb303 + +42986 +ba4e00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +ba4e80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +42987 +826f00000001000000000000037777770a68617065727462697a7a026e6c0000010001 +826f84030001000000010000037777770a68617065727462697a7a026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +42988 +3de8000000010000000000000970636d7366727430310370636d026e6c0000010001 +3de8800000010000000200010970636d7366727430310370636d026e6c0000010001c01600020001000151800005026e73c016c0160002000100015180000b026e73026e6c036e657400c02e00010001000151800004c143e6dc + +42989 +8d8000000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +8d8080000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42990 +0f1e00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +0f1e80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +42991 +fea30000000100000000000005646e732d31056c61646f74026e6c0000010001 +fea38000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42992 +cd0800000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +cd0880000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42993 +a82e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +a82e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +42994 +a2ee000000010000000000000878656961746f746c0564656d6f6e026e6c00000f0001 +a2ee800000010000000300020878656961746f746c0564656d6f6e026e6c00000f0001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c0150002000100015180000f036e73320564656d6f6e036e657400c02f00010001000151800004c29f4906c04100010001000151800004c29fb004 + +42995 +001b00000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +001b80000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +42996 +35a8000000010000000000000670726f646973056e76776d6e026e6c0000010001 +35a8800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +42997 +590800000001000000000000026e730774696c62757267026e6c0000010001 +590880000001000000020000026e730774696c62757267026e6c0000010001c00f0002000100015180000d036e7331036b706e036e657400c00f00020001000151800006036e7332c02f + +42998 +1b1c00000001000000000000036e73320774696c62757267026e6c0000010001 +1b1c80000001000000020000036e73320774696c62757267026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c030 + +42999 +33d100000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +33d180000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43000 +ca2800000001000000000000085453434c49454e5406444e53424441024e4c0000010001 +ca2884030001000000010000085453434c49454e5406444e53424441024e4c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +43001 +3f2400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +3f2480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43002 +519600000001000000000000037777770d626561757479626575727a656e026e6c0000010001 +519680000001000000020002037777770d626561757479626575727a656e026e6c0000010001c0100002000100015180000e036e73310765766964656e74c01ec01000020001000151800006036e7332c036c03200010001000151800004c36d19c4c04c00010001000151800004c36d1942 + +43003 +65a600000001000000000000037777770a626162796f75746c6574026e6c0000010001 +65a680000001000000020002037777770a626162796f75746c6574026e6c0000010001c0100002000100015180000d03706e7306636f6d6c6f67c01bc0100002000100015180000603736e73c033c02f00010001000151800004d5a0c803c04800010001000151800004d5a0c804 + +43004 +c8ba0000000100000000000006636861726973026e6c00000f0001 +c8ba8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43005 +ac3300000001000000000000046d61696c06434841524953024e4c0000010001 +ac3380000001000000020000046d61696c06434841524953024e4c0000010001c0110002000100015180000c026e7306766576696461c018c01100020001000151800006036e7332c02f + +43006 +ea8a00000001000000000000037777770a6865727065726475696e026e6c0000010001 +ea8a80000001000000030002037777770a6865727065726475696e026e6c0000010001c0100002000100015180000d036e733106776964657873c01bc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c033c02f00010001000151800004d4ccc0fcc064000100010001518000043efa0703 + +43007 +456a00000001000000000000046d61696c0874616c6b6c696e65026e6c0000010001 +456a80000001000000030003046d61696c0874616c6b6c696e65026e6c0000010001c0110002000100015180000e04646e733106626c6978656dc01ac0110002000100015180000704646e7332c033c0110002000100015180000704646e7333c033c02e00010001000151800004d44fe803c04800010001000151800004c3f5c782c05b00010001000151800004d44ff303 + +43008 +577a0000000100000000000004646e73320471776562026e6c0000010001 +577a8000000100000002000204646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +43009 +36b100000001000000000000036e73320e64617461636f6e686f7374696e67026e6c0000010001 +36b180000001000000020002036e73320e64617461636f6e686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03300010001000151800004d43d2934c00c00010001000151800004d468d143 + +43010 +532b00000001000000000000026e730e64617461636f6e686f7374696e67026e6c0000010001 +532b80000001000000020002026e730e64617461636f6e686f7374696e67026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d43d2934c04000010001000151800004d468d143 + +43011 +33250000000100000000000003777777046b627667026e6c0000010001 +33258000000100000002000003777777046b627667026e6c0000010001c01000020001000151800012046e733130076d756c7472697803636f6d00c01000020001000151800007046e733230c02e + +43012 +86bc00000001000000000000037777770b636f6e7461637463686174026e6c0000010001 +86bc80000001000000020002037777770b636f6e7461637463686174026e6c0000010001c0100002000100015180000a036e733103686978c01cc01000020001000151800006036e7332c034c03000010001000151800004d5a0da0ac0460001000100015180000451112ec3 + +43013 +e3290000000100000000000004686e73310774697363616c69026e6c0000010001 +e3298000000100000003000204686e73310774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +43014 +80780000000100000000000004686e73300774697363616c69026e6c0000010001 +80788000000100000003000204686e73300774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +43015 +67f700000001000000000000076c6f676572696a026e6c0000020001 +67f780000001000000020002076c6f676572696a026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec014c00c00020001000151800006036e7332c02cc02800010001000151800004c29f4906c04000010001000151800004c29fb004 + +43016 +35b100000001000000000000037777770666756e646978026e6c0000010001 +35b180000001000000020000037777770666756e646978026e6c0000010001c01000020001000151800015036e73310b656e65726769732d696463036e657400c01000020001000151800006036e7332c02f + +43017 +af3600000001000000000000036e73310d746973636f6d686f7374696e67026e6c0000010001 +af3680000001000000020002036e73310d746973636f6d686f7374696e67026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e5def0ac040000100010001518000043e5def0b + +43018 +d79b00000001000000000000036e73320d746973636f6d686f7374696e67026e6c0000010001 +d79b80000001000000020002036e73320d746973636f6d686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc032000100010001518000043e5def0ac00c000100010001518000043e5def0b + +43019 +67c10010000100000000000104686f6d6506706c616e6574026e6c00000100010000290800000080000000 +67c18000000100000003000404686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a650000291000000000000000 + +43020 +8ec20000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +8ec28000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +43021 +dddb00000001000000000000036e733107737572666e6574026e6c0000010001 +dddb80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +43022 +e4af00000001000000000000036e733107737572666e6574026e6c0000260001 +e4af80000001000000040003036e733107737572666e6574026e6c0000260001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +43023 +739700000001000000000000036e733103697870026e6c0000010001 +739780000001000000020002036e733103697870026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d943e639c036000100010001518000043efa063f + +43024 +066d00000001000000000000036e733203697870026e6c0000010001 +066d80000001000000020002036e733203697870026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d943e639c00c000100010001518000043efa063f + +43025 +077800000001000000000000037777770e6e62636465626c6f6b686f657665026e6c0000010001 +077880000001000000030001037777770e6e62636465626c6f6b686f657665026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01fc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c051c033000100010001518000043efa0202 + +43026 +75b20000000100000000000003777777116d616e6167656d656e74737570706f7274026e6c0000010001 +75b28000000100000002000103777777116d616e6167656d656e74737570706f7274026e6c0000010001c0100002000100015180000d026e7307616d6572636f6dc022c01000020001000151800006036e7331c039c03600010001000151800004c2b2b20a + +43027 +243b0000000100000000000003777777046b726173026e6c0000010001 +243b8000000100000002000003777777046b726173026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02f + +43028 +96fa0000000100000000000003777777146272616e64776565722d626f646567726176656e026e6c0000010001 +96fa8000000100000002000003777777146272616e64776565722d626f646567726176656e026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c03f + +43029 +1e8400000001000000000000034e533203494e47026e6c0000010001 +1e8480000001000000020002034e533203494e47026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +43030 +245a00000001000000000000034e533103494e47026e6c0000010001 +245a80000001000000020002034e533103494e47026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +43031 +f96b000000010000000000000377777708696e746572616972026e6c0000010001 +f96b800000010000000200020377777708696e746572616972026e6c0000010001c0100002000100015180000f036e7331086261726d61746f6ec019c01000020001000151800006036e7332c031c02d00010001000151800004d5a0da96c04800010001000151800004d5a0da64 + +43032 +c34f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +c34f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43033 +c3500000000100000000000005646e732d32056c61646f74026e6c0000010001 +c3508000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43034 +6c25000000010000000000000663617374656c026e6c00000f0001 +6c25800000010000000200020663617374656c026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02700010001000151800004c3558244c03900010001000151800004c3558245 + +43035 +f80500000001000000000000037777770a6d6573732d69636f6e73026e6c0000010001 +f80580000001000000030003037777770a6d6573732d69636f6e73026e6c0000010001c0100002000100015180000a036e7331036f7068c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d5ef8033c04500010001000151800004d5efb033c05700010001000151800004d5ef8133 + +43036 +2bee0000000100000000000008686f73746e616d650462696e640000100003 +2bee8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +43037 +a33300000001000000000000086167726963756c74026e6c0000ff0001 +a33380000001000000020002086167726963756c74026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c015c00c00020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +43038 +1da700000001000000000000036e7331046e732d31026e6c0000010001 +1da780000001000000020002036e7331046e732d31026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045045a0cdc03700010001000151800004d4cceec8 + +43039 +1e3100000001000000000000036e7332046e732d31026e6c0000010001 +1e3180000001000000020002036e7332046e732d31026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc029000100010001518000045045a0cdc00c00010001000151800004d4cceec8 + +43040 +6e60000000010000000000000377777711636f6e7261642d656c656374726f6e6963026e6c0000010001 +6e60800000010000000200020377777711636f6e7261642d656c656374726f6e6963026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c022c01000020001000151800006036e7332c03ac0360001000100015180000450416028c05100010001000151800004c356780c + +43041 +862f0000000100000000000003777777026e75026e6c0000010001 +862f8000000100000003000303777777026e75026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c027000100010001518000043e45a282c039000100010001518000043e45a283c04b000100010001518000043e45a284 + +43042 +e5550000000100000000000006766f6e647374026e6c0000010001 +e5558000000100000002000206766f6e647374026e6c0000010001c00c0002000100015180000c026e7306657374617465c013c00c00020001000151800006036e7332c02ac02700010001000151800004c2e5b501c03f00010001000151800004c2e5b506 + +43043 +968600000001000000000000036e733203747565026e6c0000010001 +968680000001000000030003036e733203747565026e6c0000010001c0100002000100015180000a0774756567617465c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004839b0203c00c00010001000151800004839b0303c04c00010001000151800004c0576a65 + +43044 +df8700000001000000000000087472696f70736973026e6c00000f0001 +df8784030001000000010000087472696f70736973026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +43045 +052500000001000000000000037777770b64697265637476616c7565026e6c0000010001 +052580000001000000020002037777770b64697265637476616c7565026e6c0000010001c01000020001000151800012036e73350b73696c766572706f696e74c01cc01000020001000151800006036e7336c034c0300001000100015180000450f7c702c04e0001000100015180000450f7c602 + +43046 +820f0000000100000000000003777777106275726561756e6f6f7264656c6f6f73026e6c0000010001 +820f8000000100000002000003777777106275726561756e6f6f7264656c6f6f73026e6c0000010001c0100002000100015180000c036e723105692d702d64c021c01000020001000151800006036e7232c039 + +43047 +2f530000000100000000000008626173736c696e65026e6c0000ff0001 +2f538000000100000002000108626173736c696e65026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c02900010001000151800004d4ccc0fc + +43048 +b2ff000000010000000000000377777703766964026e6c0000010001 +b2ff800000010000000200020377777703766964026e6c0000010001c01000020001000151800011036e73310a616363657373706f7274c014c01000020001000151800006036e7332c02cc02800010001000151800004d4483408c04500010001000151800004d4483409 + +43049 +2a6700000001000000000000147370656b736e696a6465727472616e73706f7274026e6c0000010001 +2a6780000001000000020002147370656b736e696a6465727472616e73706f7274026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c021c00c00020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +43050 +e3cd00000001000000000000026e73076e656473746174026e6c00001c0001 +e3cd80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43051 +774400000001000000000000026e73076e656473746174026e6c0000260001 +774480000001000000020002026e73076e656473746174026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43052 +901300000001000000000000036e7332076e656473746174026e6c0000010001 +901380000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43053 +af1000000001000000000000036e7332076e656473746174026e6c00001c0001 +af1080000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43054 +e53b000000010000000000000f6e76686176656e6d6f657264696a6b026e6c0000ff0001 +e53b800000010000000200010f6e76686176656e6d6f657264696a6b026e6c0000ff0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01cc04900010001000151800004c2860043 + +43055 +7e3900000001000000000000036e7332076e656473746174026e6c0000260001 +7e3980000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43056 +6c9500000001000000000000036e7333076e656473746174026e6c00001c0001 +6c9580000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +43057 +b6ca00000001000000000000036e7333076e656473746174026e6c0000260001 +b6ca80000001000000020002036e7333076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +43058 +841500000001000000000000036e7334076e656473746174026e6c00001c0001 +841580000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43059 +204a00000001000000000000036e7334076e656473746174026e6c0000260001 +204a80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43060 +18d10000000100000000000005696b616e61026e6c00000f0001 +18d18000000100000003000005696b616e61026e6c00000f0001c00c00020001000151800011036e733107616e7977697365036e657400c00c00020001000151800006036e7332c02ac00c00020001000151800006036e7333c02a + +43061 +26040000000100000000000008434654562d30303304484f4d450c534f45524f44494b524f4d4f024e4c0000010001 +26048403000100000001000008434654562d30303304484f4d450c534f45524f44494b524f4d4f024e4c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +43062 +82d3000000010000000000000e677261706869636f6d67726f7570026e6c00000f0001 +82d3840300010000000100000e677261706869636f6d67726f7570026e6c00000f0001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +43063 +6d3c00000001000000000000067a7376737566026e6c0000010001 +6d3c84030001000000010000067a7376737566026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +43064 +d8df00000001000000000000046d61696c077468656669726d026e6c0000010001 +d8df80000001000000020002046d61696c077468656669726d026e6c0000010001c01100020001000151800013036e73310c62656472696a76656e776562c019c01100020001000151800006036e7332c031c02d00010001000151800004d90867fec04c00010001000151800004c1ad2bfe + +43065 +96950000000100000000000003777777046a65676f026e6c0000010001 +96958000000100000002000203777777046a65676f026e6c0000010001c0100002000100015180000d036e733106737072696e74c015c01000020001000151800006036e7332c02dc02900010001000151800004d973c202c04200010001000151800004d4ccd6a6 + +43066 +0a6100000001000000000000077475656761746503747565026e6c0000010001 +0a6180000001000000030003077475656761746503747565026e6c0000010001c01400020001000151800002c00cc01400020001000151800006036e7332c014c0140002000100015180000e036e733107737572666e6574c018c00c00010001000151800004839b0203c03a00010001000151800004839b0303c04c00010001000151800004c0576a65 + +43067 +c6930000000100000000000004686f6d6506706c616e6574026e6c0000010001 +c6938000000100000003000304686f6d6506706c616e6574026e6c0000010001c0110002000100015180000b046e73303803777873c018c01100020001000151800007046e733039c031c01100020001000151800006036e7334c031c02c00010001000151800004c3790128c04300010001000151800004c3790143c05600010001000151800004d5ef9a65 + +43068 +eeb00000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +eeb08000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43069 +f7580000000100000000000003626c3402626c06787334616c6c026e6c0000260001 +f7588000000100000003000203626c3402626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43070 +79f30000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +79f38000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43071 +30e40000000100000000000009616e74686f6e796276026e6c00000f0001 +30e48000000100000003000309616e74686f6e796276026e6c00000f0001c00c00020001000151800010036e733109736974656279746573c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c2a55e5ac04600010001000151800004c356781cc058000100010001518000043ec58016 + +43072 +add500000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +add580000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43073 +773500000001000000000000086c6f67696e2d6276026e6c0000020001 +773580000001000000020002086c6f67696e2d6276026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +43074 +7c670000000100000000000003777777066863636e6574026e6c0000010001 +7c678000000100000002000003777777066863636e6574026e6c0000010001c010000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0100002000100015180000906617574683230c032 + +43075 +43de00000001000000000000037777770766726565787878026e6c0000010001 +43de80000001000000030003037777770766726565787878026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +43076 +7f9500000001000000000000077468656669726d026e6c0000010001 +7f9580000001000000020002077468656669726d026e6c0000010001c00c00020001000151800013036e73310c62656472696a76656e776562c014c00c00020001000151800006036e7332c02cc02800010001000151800004d90867fec04700010001000151800004c1ad2bfe + +43077 +d14e00000001000000000000037777771872656372656174696563656e7472616e656465726c616e64026e6c0000010001 +d14e80000001000000020000037777771872656372656174696563656e7472616e656465726c616e64026e6c0000010001c01000020001000151800011036e73310a747770686f7374696e67c029c01000020001000151800006036e7332c041 + +43078 +318c000000010000000000000e65722d74726176656c67726f7570026e6c00000f0001 +318c800000010000000200000e65722d74726176656c67726f7570026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c035 + +43079 +3877000000010000000000000233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000050001 +3877800000010000000200020233380233350236300236350a626c61636b686f6c657307656173796e6574026e6c0000050001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +43080 +b560000000010000000000000d62616c6c6173742d6e6564616d026e6c00000f0001 +b560800000010000000200010d62616c6c6173742d6e6564616d026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800013036e7332026e6c0669676e697465036e657400c02e000100010001518000043eadcea1 + +43081 +ab2600000001000000000000027330026e6c0000010001 +ab2680000001000000020002027330026e6c0000010001c00c0002000100015180000d026e73076e656473746174c00fc00c00020001000151800006036e7333c026c02300010001000151800004d4482615c03c00010001000151800004d5c4021d + +43082 +2f6500000001000000000000037777770674726f66656f026e6c0000010001 +2f6580000001000000020001037777770674726f66656f026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +43083 +9da800000001000000000000037777770472696765026e6c0000010001 +9da880000001000000020002037777770472696765026e6c0000010001c0100002000100015180000c036e733105636176656fc015c01000020001000151800006036e7332c02dc029000100010001518000045112a002c041000100010001518000045112a102 + +43084 +34c40000000100000000000008616473657276657206776562616473026e6c0000010001 +34c48000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +43085 +5810000000010000000000000a6865696a6e656b616d70026e6c00000f0001 +5810800000010000000200000a6865696a6e656b616d70026e6c00000f0001c00c00020001000151800017036e73310d6465696e7465726e65746d616e036e657400c00c00020001000151800006036e7332c02f + +43086 +434900100001000000000001036e7331066d696e646566026e6c00000100010000290800000080000000 +434980000001000000020003036e7331066d696e646566026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9a9e7c6c03900010001000151800004d9a9e7c50000291000000000000000 + +43087 +895b00100001000000000001036e7332066d696e646566026e6c00000100010000290800000080000000 +895b80000001000000020003036e7332066d696e646566026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d9a9e7c6c00c00010001000151800004d9a9e7c50000291000000000000000 + +43088 +5fe500000001000000000000096d61696c72656c6179096b656e6e69736e6574026e6c0000010001 +5fe580000001000000020002096d61696c72656c6179096b656e6e69736e6574026e6c0000010001c01600020001000151800006036e7339c016c0160002000100015180000e036e733207737572666e6574c020c03400010001000151800004c0576a61c04600010001000151800004c0572402 + +43089 +35b60000000100000000000003777777077a65737469656e026e6c0000010001 +35b68000000100000002000203777777077a65737469656e026e6c0000010001c0100002000100015180000e036e7331076e6174616c6965c018c01000020001000151800006036e7332c030c02c000100010001518000043e94a116c046000100010001518000043e94a117 + +43090 +f98528000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026763065f6d73646373064148584c3032026e6c000021000100000258001c000000640cc40a646330316168786c3032064148584c3032026e6c00 +f985a8040000000000000000 + +43091 +cba700000001000000000000096d61696c72656c6179066e6c74726565026e6c0000010001 +cba780000001000000020002096d61696c72656c6179066e6c74726565026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c03100010001000151800004d4b20403c04300010001000151800004d5881e45 + +43092 +4e1100000001000000000000126c6f676973696e7465726e6174696f6e616c026e6c0000020001 +4e1180000001000000020002126c6f676973696e7465726e6174696f6e616c026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01fc00c00020001000151800006036e7332c037c03300010001000151800004c29f4906c04b00010001000151800004c29fb004 + +43093 +53f500000001000000000000036e7064026e6c00000f0001 +53f580000001000000020000036e7064026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c028 + +43094 +69c200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +69c280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43095 +f40600000001000000000000037777770b63686573617065616b6573026e6c0000010001 +f40680000001000000020002037777770b63686573617065616b6573026e6c0000010001c01000020001000151800015036e73310e726567696f70726f766964657273c01cc01000020001000151800006036e7332c034c03000010001000151800004d41da001c05100010001000151800004d41da1fe + +43096 +fe1600000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +fe1680000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43097 +15170000000100000000000003777777047769616c026e6c0000010001 +15178000000100000002000203777777047769616c026e6c0000010001c0100002000100015180000f036e733108676c6f62616c2d65c015c01000020001000151800006036e7332c02dc02900010001000151800004d4f132c8c04400010001000151800004d4f132d3 + +43098 +d21500000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +d21580000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43099 +05e900000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +05e980000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43100 +abb700000001000000000000036e733503777873026e6c0000010001 +abb780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43101 +27320000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +27328000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43102 +cd3600000001000000000000037777770461676f65026e6c0000010001 +cd3680000001000000020002037777770461676f65026e6c0000010001c0100002000100015180000f026e7309656174736572766572c015c01000020001000151800006036e7332c02cc02900010001000151800004d4cb0e42c04400010001000151800004d4cb1221 + +43103 +000000007002faf0e1130000020405b401010402 +000080010000000000000000 + +43104 +0f1000000001000000000000046e7330320462696374026e6c0000010001 +0f1080000001000000020002046e7330320462696374026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02a00010001000151800004d413d6c8c00c00010001000151800004d413d604 + +43105 +078800000001000000000000046e7330310462696374026e6c0000010001 +078880000001000000020002046e7330310462696374026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733032c011c00c00010001000151800004d413d6c8c03800010001000151800004d413d604 + +43106 +4203000000010000000000000a6970393133353136343805737065656406706c616e6574026e6c0000010001 +4203800000010000000300030a6970393133353136343805737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +43107 +b8676c6a5010faf0e8f50000000000000000 +b867ec640000000000000000 + +43108 +b8676c6a5018faf0d99f0000008f5be8000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afda7403c4f270003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000444330314148584c30324148584c30320000 +b867ec640000000000000000 + +43109 +06ed00000001000000000000037777770a656967656e77696a6b73026e6c0000010001 +06ed80000001000000030001037777770a656967656e77696a6b73026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +43110 +a122000000010000000000000b6d756c7469737065656473026e6c00000f0001 +a122800000010000000200020b6d756c7469737065656473026e6c00000f0001c00c00020001000151800012036e73350b73696c766572706f696e74c018c00c00020001000151800006036e7336c030c02c0001000100015180000450f7c702c04a0001000100015180000450f7c602 + +43111 +3fa300000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373065363686f6f6c026e6c0000060001 +3fa380000001000000020001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d73646373065363686f6f6c026e6c0000060001c04400020001000151800015086e732d69736d30310963617067656d696e69c04bc0440002000100015180000b086e732d69736d3032c068c05f00010001000151800004d5f4a024 + +43112 +3af2000000010000000000000767657477656c6c026e6c00001c0001 +3af2800000010000000300010767657477656c6c026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +43113 +bef200000001000000000000057669706572086f6e7468616e6574026e6c0000010001 +bef280000001000000020000057669706572086f6e7468616e6574026e6c0000010001c0120002000100015180000e036e73300470707365036e657400c01200020001000151800006036e7331c033 + +43114 +b8676c785011fae2e8630000000000000000 +b867ec740000000000000000 + +43115 +88c80000000100000000000003656170026e6c00000f0001 +88c88000000100000002000203656170026e6c00000f0001c00c0002000100015180000d036e7331066e6574636f6ec010c00c00020001000151800006036e7332c028c0240001000100015180000450f7ce01c03d0001000100015180000450f7cf01 + +43116 +000000007002faf0b9b20000020405b401010402 +000080010000000000000000 + +43117 +b8676c795010fae2e8620000000000000000 +b867ec740000000000000000 + +43118 +72790000000100000000000008696e74657276616c026e6c0000010001 +72798000000100000002000208696e74657276616c026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +43119 +3204000000010000000000000765787065646961026e6c0000010001 +3204800000010000000200000765787065646961026e6c0000010001c00c000200010001518000140570646e733108726567697374657203636f6d00c00c000200010001518000080570646e7332c02e + +43120 +3b940000000100000000000009652d6c756e61746963026e6c0000010001 +3b948000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +43121 +1af7000000010000000000000b7374617274706167696e61026e6c00001c0001 +1af7800000010000000300030b7374617274706167696e61026e6c00001c0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +43122 +4eb300000001000000000000036e7331066d696e646566026e6c0000010001 +4eb380000001000000020002036e7331066d696e646566026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9a9e7c6c03900010001000151800004d9a9e7c5 + +43123 +714000000001000000000000036e7332066d696e646566026e6c0000010001 +714080000001000000020002036e7332066d696e646566026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b00010001000151800004d9a9e7c6c00c00010001000151800004d9a9e7c5 + +43124 +802e00000001000000000000037777770475737069026e6c0000010001 +802e80000001000000020002037777770475737069026e6c0000010001c0100002000100015180000b036e733104696e666fc015c01000020001000151800006036e7332c02dc02900010001000151800004504fc020c04000010001000151800004504fc021 + +43125 +b8684f895010faf0de740000000000000000 +b868cf840000000000000000 + +43126 +bef100000001000000000000046865726101780463756369026e6c0000010001 +bef180000001000000030003046865726101780463756369026e6c0000010001c01300020001000151800002c00cc0130002000100015180000c066865726d6573026e6cc013c01300020001000151800009066865726d6573c011c00c00010001000151800004d47d8001c03a00010001000151800004c143ef02c05200010001000151800004d47d8002 + +43127 +eaac00000001000000000000066865726d657301780463756369026e6c0000010001 +eaac80000001000000030003066865726d657301780463756369026e6c0000010001c015000200010001518000070468657261c013c0150002000100015180000c066865726d6573026e6cc015c01500020001000151800002c00cc02e00010001000151800004d47d8001c04100010001000151800004c143ef02c00c00010001000151800004d47d8002 + +43128 +f55600000001000000000000066865726d6573026e6c0463756369026e6c0000010001 +f55680000001000000030003066865726d6573026e6c0463756369026e6c0000010001c0160002000100015180000904686572610178c016c01600020001000151800002c00cc01600020001000151800009066865726d6573c034c02f00010001000151800004d47d8001c00c00010001000151800004c143ef02c05200010001000151800004d47d8002 + +43129 +7aa50000000100000000000005776f64616e0369637303656c6503747565026e6c0000010001 +7aa58000000100000003000305776f64616e0369637303656c6503747565026e6c0000010001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +43130 +599d00000001000000000000106b6e6873726567696f62726162616e74026e6c00000f0001 +599d80000001000000020000106b6e6873726567696f62726162616e74026e6c00000f0001c00c0002000100015180001505646e7332300961637469766569737003636f6d00c00c0002000100015180000805646e733231c037 + +43131 +b8684f895018faf0a85b0000008f83ac000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afda7403c4f270003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000444330314148584c30324148584c30320000 +b868cf840000000000000000 + +43132 +2c8300000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +2c8380000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +43133 +705a00000001000000000000036e73320d63656e747269636f6e6c696e65026e6c0000010001 +705a80000001000000020002036e73320d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d481ec0cc00c00010001000151800004d590e63a + +43134 +c9f40010000100000000000103777777076e65746c696e71026e6c00000100010000290800000080000000 +c9f48000000100000002000303777777076e65746c696e71026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c018c01000020001000151800006036e7332c02fc02c00010001000151800004d9aa2042c04500010001000151800004d9aa2c060000291000000000000000 + +43135 +9c320000000100000000000009706974616374696566026e6c00000f0001 +9c328000000100000003000309706974616374696566026e6c00000f0001c00c0002000100015180000d046e733031056d61636f6ec016c00c00020001000151800007046e733032c02fc00c00020001000151800007046e733033c02fc02a000100010001518000045360bc03c043000100010001518000045360bc04c0560001000100015180000450454704 + +43136 +ce19000000010000000000000a737970726f6d65646961026e6c00000f0001 +ce19800000010000000200020a737970726f6d65646961026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +43137 +b9d000000001000000000000066d61737465720364746f07747564656c6674026e6c00001c0001 +b9d080000001000000050005066d61737465720364746f07747564656c6674026e6c00001c0001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +43138 +d6f80000000100000000000003777777086e74652d6d61696c026e6c0000010001 +d6f88000000100000002000103777777086e74652d6d61696c026e6c0000010001c01000020001000151800012036e733107686f7374696e6703656269c019c0100002000100015180000d03646e73036b706e03636f6d00c02d00010001000151800004c1ad9c46 + +43139 +d57a00000001000000000000026e7303616d730874656c6567617465026e6c0000010001 +d57a80000001000000030000026e7303616d730874656c6567617465026e6c0000010001c01300020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01300020001000151800006036e7332c034c01300020001000151800006036e7333c034 + +43140 +b8684f975011fae2dde20000000000000000 +b868cf940000000000000000 + +43141 +6f690000000100000000000003626c3102626c06787334616c6c026e6c00001c0001 +6f698000000100000003000203626c3102626c06787334616c6c026e6c00001c0001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43142 +928f0000000100000000000004636f72700968617a6c65776f6f64026e6c0000060001 +928f8403000100000001000004636f72700968617a6c65776f6f64026e6c0000060001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +43143 +000000007002faf096770000020405b401010402 +000080010000000000000000 + +43144 +94c500000001000000000000036d6567026e6c0000010001 +94c580000001000000020000036d6567026e6c0000010001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec02b + +43145 +109800000001000000000000066d61737465720364746f07747564656c6674026e6c0000260001 +109880000001000000050005066d61737465720364746f07747564656c6674026e6c0000260001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +43146 +03da000000010000000000000473746172026373027675026e6c0000010001 +03da800000010000000300030473746172026373027675026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800002c00cc0140002000100015180000e036e733107737572666e6574c017c02b0001000100015180000482258104c00c00010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +43147 +380f0000000100000000000003613262026e6c0000ff0001 +380f8000000100000002000203613262026e6c0000ff0001c00c0002000100015180000f036e733108696c696d62757267c010c00c00020001000151800006036e7332c028c02400010001000151800004c2b26281c03f00010001000151800004c2b262f7 + +43148 +8c0600000001000000000000036e73320c776562666f726d616c697479026e6c0000010001 +8c0680000001000000020002036e73320c776562666f726d616c697479026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0310001000100015180000451047310c00c0001000100015180000451047311 + +43149 +d5d200000001000000000000036e73310c776562666f726d616c697479026e6c0000010001 +d5d280000001000000020002036e73310c776562666f726d616c697479026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451047310c03f0001000100015180000451047311 + +43150 +b8684f985010fae2dde10000000000000000 +b868cf940000000000000000 + +43151 +b868d4a65010faf0361c0000000000000000 + + +43152 +5b160000000100000000000003777777096f70746973706f7274026e6c0000010001 +5b168000000100000002000203777777096f70746973706f7274026e6c0000010001c0100002000100015180000a036e733103686978c01ac01000020001000151800006036e7332c032c02e00010001000151800004d5a0da0ac0440001000100015180000451112ec3 + +43153 +8b5b0000000100000000000003777777046f70656c026e6c0000010001 +8b5b8000000100000002000203777777046f70656c026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +43154 +0cd8000000010000000000000377777708656c7a656e616172026e6c0000010001 +0cd8800000010000000200020377777708656c7a656e616172026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +43155 +ff35000000010000000000000673617479616d026e6c00000f0001 +ff35840300010000000100000673617479616d026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +43156 +b8b700000001000000000000076b75707769656c026e6c0000010001 +b8b780000001000000020000076b75707769656c026e6c0000010001c00c0002000100015180000d036e7333036b706e036e657400c00c00020001000151800006036e7334c02c + +43157 +deda00000001000000000000037777770b78787868617264636f7265026e6c0000010001 +deda80000001000000030003037777770b78787868617264636f7265026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01cc0100002000100015180000704646e7332c035c0100002000100015180000704646e7333c035c03000010001000151800004d44fe803c04a00010001000151800004c3f5c782c05d00010001000151800004d44ff303 + +43158 +df1b00000001000000000000037777770b78787868617264636f7265026e6c0000010001 +df1b80000001000000030003037777770b78787868617264636f7265026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01cc0100002000100015180000704646e7332c035c0100002000100015180000704646e7333c035c03000010001000151800004d44fe803c04a00010001000151800004c3f5c782c05d00010001000151800004d44ff303 + +43159 +b76a00000001000000000000037777770b78787868617264636f7265026e6c0000010001 +b76a80000001000000030003037777770b78787868617264636f7265026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01cc0100002000100015180000704646e7332c035c0100002000100015180000704646e7333c035c03000010001000151800004d44fe803c04a00010001000151800004c3f5c782c05d00010001000151800004d44ff303 + +43160 +b868d4a65018faf0bc1c0000008fc792000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afda7403c4f270003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000444330314148584c30324148584c30320000 + + +43161 +4a69000000010000000000000377777706732d63617264026e6c0000010001 +4a69800000010000000200020377777706732d63617264026e6c0000010001c0100002000100015180000a026e730469636d63c017c01000020001000151800006036e7332c02ec02b000100010001518000043e643805c041000100010001518000043e643806 + +43162 +1486000000010000000000000377777703696578026e6c0000010001 +1486800000010000000300000377777703696578026e6c0000010001c0100002000100015180001607646e732d65753108706f776572646e73036e657400c0100002000100015180000a07646e732d757331c030c0100002000100015180000a07646e732d657532c030 + +43163 +591900000001000000000000086d656c6368696e67026e6c00000f0001 +591980000001000000020002086d656c6368696e67026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c015c00c00020001000151800006036e7332c02dc0290001000100015180000450416028c04400010001000151800004c356780c + +43164 +2354000000010000000000000377777703666f78026e6c0000010001 +2354800000010000000200020377777703666f78026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c028000100010001518000043e320da2c03a000100010001518000043ed48264 + +43165 +b868d4b45011fae2358a0000000000000000 + + +43166 +e931000000010000000000000d6c6f67697374696368616e6473026e6c0000020001 +e931800000010000000200020d6c6f67697374696368616e6473026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ac00c00020001000151800006036e7332c032c02e00010001000151800004c29f4906c04600010001000151800004c29fb004 + +43167 +448000000001000000000000036d783306787334616c6c026e6c0000010001 +448080000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +43168 +321400000001000000000000036e733203666f78026e6c0000010001 +321480000001000000020002036e733203666f78026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000043e320da2c00c000100010001518000043ed48264 + +43169 +d06900000001000000000000036e733103666f78026e6c0000010001 +d06980000001000000020002036e733103666f78026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e320da2c036000100010001518000043ed48264 + +43170 +b868d4b55010fae235890000000000000000 + + +43171 +93610000000100000000000004747a6468026e6c0000010001 +93618000000100000002000204747a6468026e6c0000010001c00c0002000100015180000e0b6e616d6573657276657231c011c00c0002000100015180000e0b6e616d6573657276657232c011c02500010001000151800004c1acb692c03f00010001000151800004d48e0602 + +43172 +855100000001000000000000037777771364616e737363686f6f6c77657373656c696e67026e6c0000010001 +855180000001000000020002037777771364616e737363686f6f6c77657373656c696e67026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c024c01000020001000151800006036e7332c03cc038000100010001518000045104580ac058000100010001518000045104601e + +43173 +68220000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +68228000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +43174 +95e90000000100000000000006666174696d6103646473026e6c0000010001 +95e98000000100000003000306666174696d6103646473026e6c0000010001c01300020001000151800017036e733110736361726c65742d696e7465726e6574c017c01300020001000151800006036e7332c02fc01300020001000151800006036e7333c02fc02b00010001000151800004d5ccc302c04e00010001000151800004d5ccc303c06000010001000151800004c277e953 + +43175 +26fe000000010000000000000670726f646973056e76776d6e026e6c0000010001 +26fe800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +43176 +799700000001000000000000056d69726d61026e6c00000f0001 +799780000001000000020000056d69726d61026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02c + +43177 +328e00000001000000000000026e73096b656e6e69736e6574026e6c0000010001 +328e80000001000000020002026e73096b656e6e69736e6574026e6c0000010001c00f00020001000151800006036e7339c00fc00f0002000100015180000e036e733207737572666e6574c019c02d00010001000151800004c0576a61c03f00010001000151800004c0572402 + +43178 +73e700000001000000000000036e7333096b656e6e69736e6574026e6c0000010001 +73e780000001000000020002036e7333096b656e6e69736e6574026e6c0000010001c01000020001000151800006036e7339c010c0100002000100015180000e036e733207737572666e6574c01ac02e00010001000151800004c0576a61c04000010001000151800004c0572402 + +43179 +c1fd00000001000000000000036e7331077569746c696a6e026e6c0000010001 +c1fd80000001000000020002036e7331077569746c696a6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3aa5fbc03a00010001000151800004d4ccfc79 + +43180 +c3eb00000001000000000000036e7331077569746c696a6e026e6c0000260001 +c3eb80000001000000020002036e7331077569746c696a6e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043e3aa5fbc03a00010001000151800004d4ccfc79 + +43181 +a91000000001000000000000036e7332077569746c696a6e026e6c0000010001 +a91080000001000000020002036e7332077569746c696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3aa5fbc00c00010001000151800004d4ccfc79 + +43182 +6a0900000001000000000000036e7332077569746c696a6e026e6c0000260001 +6a0980000001000000020002036e7332077569746c696a6e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043e3aa5fbc00c00010001000151800004d4ccfc79 + +43183 +703a00000001000000000000036e73310769736973776562026e6c0000010001 +703a80000001000000030003036e73310769736973776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7334c010c00c00010001000151800004d4ccca65c03a00010001000151800004510440dec04c00010001000151800004510440fa + +43184 +a29100000001000000000000036e733503777873026e6c0000010001 +a29180000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43185 +204e00000001000000000000036e733503777873026e6c0000260001 +204e80000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43186 +a7970000000100000000000003777777086d6f736b776f6f64026e6c0000010001 +a7978000000100000002000203777777086d6f736b776f6f64026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +43187 +9a23000000010000000000000377777707746f7063617368026e6c0000010001 +9a23800000010000000200020377777707746f7063617368026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c018c01000020001000151800006036e7332c030c02c0001000100015180000452c04516c0490001000100015180000452c04542 + +43188 +a86200000001000000000000036e7332086d65646961776562026e6c0000010001 +a86280000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +43189 +155a00000001000000000000036e7333086d65646961776562026e6c0000010001 +155a80000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +43190 +ecc600000001000000000000036e733206313233623262026e6c0000010001 +ecc680000001000000020002036e733206313233623262026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02b000100010001518000045054e5b5c00c000100010001518000045054e5b6 + +43191 +a2d10000000100000000000008686f73746e616d650462696e640000100003 +a2d18000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +43192 +0bf500000001000000000000056e696575770d73696d70656c636f6e74656e74026e6c0000010001 +0bf580000001000000030003056e696575770d73696d70656c636f6e74656e74026e6c0000010001c0120002000100015180000c036e7331056d61786573c020c01200020001000151800006036e7332c038c01200020001000151800006036e7333c038c034000100010001518000045045402ec04c000100010001518000045045402fc05e000100010001518000045045440a + +43193 +88480000000100000000000003656465026e6c00000f0001 +88488000000100000002000103656465026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c02400010001000151800004d5a0fd2a + +43194 +370b00000001000000000000036e73310973746172746d657570026e6c00001c0001 +370b80000001000000020002036e73310973746172746d657570026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4cb1d01c03c00010001000151800004d4cb1d02 + +43195 +243f00000001000000000000036e73320973746172746d657570026e6c00001c0001 +243f80000001000000020002036e73320973746172746d657570026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d4cb1d01c00c00010001000151800004d4cb1d02 + +43196 +8e8800100001000000000001036e733103757063026e6c00000100010000290800000080000000 +8e8880000001000000030004036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c01410000291000000000000000 + +43197 +c74400100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000080000000 +c74480000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +43198 +6bd20000000100000000000003777777077569746c696a6e026e6c0000010001 +6bd28000000100000002000203777777077569746c696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043e3aa5fbc03e00010001000151800004d4ccfc79 + +43199 +fcc800000001000000000000037777770a636f6d70757365727665026e6c0000010001 +fcc880000001000000020000037777770a636f6d70757365727665026e6c0000010001c0100002000100015180001f0e61726c2d6e616d652d7376632d310a636f6d7075736572766503636f6d00c010000200010001518000110e6475622d6e616d652d7376632d31c03e + +43200 +487a0000000100000000000003777777076631746f646179026e6c0000010001 +487a8000000100000002000003777777076631746f646179026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c031 + +43201 +368000000001000000000000067a65706879720473656d61026e6c0000010001 +368080000001000000030003067a65706879720473656d61026e6c0000010001c01300020001000151800012047072693103646e73067073696e6574c018c013000200010001518000070470726932c031c013000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +43202 +8c980000000100000000000003777777036e7263026e6c0000010001 +8c988000000100000003000203777777036e7263026e6c0000010001c01000020001000151800015036e73310b70696e6b726f6363616465036e657400c0100002000100015180000e026e73086d656761706c6578c014c01000020001000151800006036e7331c04cc04900010001000151800004504f6101c06300010001000151800004504f6102 + +43203 +01f128000001000200000000026e6c00000600010970635f706965746572056c6f63616c0768616d61746e6c026e6c00000500fe000000000000c0140001000100000000000484a49332 +01f1a8040000000000000000 + +43204 +f11800000001000000000000046d61696c0c6c696e6765636f6c6c656765026e6c0000010001 +f11880000001000000020002046d61696c0c6c696e6765636f6c6c656765026e6c0000010001c0110002000100015180000d026e730763697374726f6ec01ec01100020001000151800006036e7332c035c032000100010001518000043ed81f37c04b000100010001518000043ed81f38 + +43205 +3941000000010000000000000a7a65656c616e646e6574026e6c0000010001 +3941800000010000000200020a7a65656c616e646e6574026e6c0000010001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc02b00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +43206 +2cf70000000100000000000005776f64616e0369637303656c6503747565026e6c0000010001 +2cf78000000100000003000305776f64616e0369637303656c6503747565026e6c0000010001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +43207 +cbcb0010000100000000000106787334616c6c026e6c00000f00010000290800000080000000 +cbcb8000000100000003000306787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +43208 +a13d000000010000000000000b737175617368776f726c64026e6c00000f0001 +a13d800000010000000200000b737175617368776f726c64026e6c00000f0001c00c00020001000151800018036e73370e666c6578776562686f7374696e6703636f6d00c00c00020001000151800006036e7338c030 + +43209 +328000000001000000000000037777770431363439026e6c0000010001 +328084030001000000010000037777770431363439026e6c0000010001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +43210 +ca2300000001000000000000077765626d61696c096c6f67696361636d67026e6c0000010001 +ca2380000001000000020000077765626d61696c096c6f67696361636d67026e6c0000010001c0140002000100015180000c026e7303636d6703636f6d00c0140002000100015180000b026e73026e6c036e657400 + +43211 +3bcb0000000100000000000006787334616c6c026e6c00000f0001 +3bcb8000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +43212 +aa570000000100000000000003777777116d6f746f72626575727375747265636874026e6c0000010001 +aa578000000100000002000203777777116d6f746f72626575727375747265636874026e6c0000010001c0100002000100015180000c026e7306787334616c6cc022c01000020001000151800006036e7332c039c03600010001000151800004c26d0642c04e00010001000151800004c26d0963 + +43213 +000000007002faf0285d0000020405b401010402 +000080010000000000000000 + +43214 +48d10000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +48d18000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43215 +777b0000000100000000000003777777087465656e2d736578026e6c0000010001 +777b8000000100000002000203777777087465656e2d736578026e6c0000010001c0100002000100015180000a036e733103647768c019c01000020001000151800006036e7332c031c02d00010001000151800004d5efb308c04300010001000151800004d5efb303 + +43216 +8aa30000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +8aa38000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43217 +171a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +171a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43218 +b86a79785010faf0232e0000000000000000 +b86af9740000000000000000 + +43219 +b86a79785018faf049cd0000008da9c3000000010001000000000e3839333335333139373538362d330000f900010e3839333335333139373538362d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdb8403c4f380003000000304e544c4d535350000100000097b208e00700070029000000090009002000000050435f50494554455248414d41544e4c0000 +b86af9740000000000000000 + +43220 +b0f900000001000000000000037777770972656c69706c65696e026e6c0000010001 +b0f980000001000000020001037777770972656c69706c65696e026e6c0000010001c01000020001000151800014096361636f666f6e697803756369036b756ec01ac0100002000100015180000b086361707962617261c038c04e0001000100015180000483ae3c15 + +43221 +b8df001000010000000000010766313031303836057570632d66066368656c6c6f026e6c00000100010000290800000080000000 +b8df800000010000000300040766313031303836057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c420000291000000000000000 + +43222 +2bf700000001000000000000036e73310974656c656b6162656c026e6c0000010001 +2bf780000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +43223 +da4900000001000000000000036e733103757063026e6c0000010001 +da4980000001000000030003036e733103757063026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e046e733032066368656c6c6fc014c0100002000100015180000c036e7331056132303030c014c00c00010001000151800004d48e1c42c03600010001000151800004d4534483c050000100010001518000043e6c0141 + +43224 +b86a79865011fae2229e0000000000000000 +b86af9840000000000000000 + +43225 +772800000001000000000000046e733032066368656c6c6f026e6c0000010001 +772880000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +43226 +7e2a00000001000000000000037777770c62616b656e2d6f6e6c696e65026e6c0000010001 +7e2a80000001000000020002037777770c62616b656e2d6f6e6c696e65026e6c0000010001c01000020001000151800012036e73310b737461727464657369676ec01dc01000020001000151800006036e7332c035c03100010001000151800004d5f73823c04f000100010001518000043ed45149 + +43227 +f75700000001000000000000046265616e026e6c00001c0001 +f75780000001000000020002046265616e026e6c00001c0001c00c00020001000151800010036e733109696e746572686f7374c011c00c00020001000151800006036e7335c029c02500010001000151800004d91a7429c04100010001000151800004d554e583 + +43228 +84ce000000010000000000000f57533031352d64616e69656c6c657304636f72700968617a6c65776f6f64026e6c0000060001 +84ce840300010000000100000f57533031352d64616e69656c6c657304636f72700968617a6c65776f6f64026e6c0000060001c02b00060001000038400036026e730f646f6d61696e2d7265676973747279c02b0a686f73746d6173746572c0420bf1e540000070800000384000278d0000003840 + +43229 +2aef0000000100000000000003796670026e6c00000f0001 +2aef8000000100000002000203796670026e6c00000f0001c00c0002000100015180000d046e73303105696e6f726dc010c00c00020001000151800007046e733032c029c02400010001000151800004d973c41ac03d00010001000151800004d973c41c + +43230 +20a6000000010000000000000a6970353033633431633405737065656406706c616e6574026e6c0000010001 +20a6800000010000000300030a6970353033633431633405737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +43231 +341100000001000000000000037777770472696765026e6c0000010001 +341180000001000000020002037777770472696765026e6c0000010001c0100002000100015180000c036e733105636176656fc015c01000020001000151800006036e7332c02dc029000100010001518000045112a002c041000100010001518000045112a102 + +43232 +000000007002faf025ca0000020405b401010402 +000080010000000000000000 + +43233 +b86a79875010fae2229d0000000000000000 +b86af9840000000000000000 + +43234 +326c00000001000000000000036e733109756e69736572766572026e6c0000010001 +326c80000001000000020002036e733109756e69736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +43235 +b86b60fc5010faf039160000000000000000 +b86be0f40000000000000000 + +43236 +b86b60fc5018faf03bd00000008dcfa8000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdb8403c4f380003000000304e544c4d535350000100000097b208e00700070029000000090009002000000050435f50494554455248414d41544e4c0000 +b86be0f40000000000000000 + +43237 +c358000000010000000000000661726f3131310861726f6e736f686e026e6c0000010001 +c358800000010000000300030661726f3131310861726f6e736f686e026e6c0000010001c0130002000100015180000f036e7331086e6f766178657373c01cc01300020001000151800006036e7332c034c01300020001000151800006036e7333c034c03000010001000151800004d5c98015c04b00010001000151800004d5c9bf12c05d00010001000151800004d5ef9c26 + +43238 +b86b610a5011fae238860000000000000000 +b86be1040000000000000000 + +43239 +030f00100001000000000001046e65777306787334616c6c026e6c0000ff00010000290800000080000000 +030f80000001000000030003046e65777306787334616c6c026e6c0000ff0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d09630000291000000000000000 + +43240 +9a820000000100000000000004504f4132026e6c0000010001 +9a828403000100000001000004504f4132026e6c0000010001c01100060001000038400036026e730f646f6d61696e2d7265676973747279c0110a686f73746d6173746572c0280bf1e540000070800000384000278d0000003840 + +43241 +d134000000010000000000000377777708626c616465746d63026e6c0000010001 +d134800000010000000200020377777708626c616465746d63026e6c0000010001c01000020001000151800011036e73310a726564686f7374696e67c019c01000020001000151800006036e7332c031c02d00010001000151800004d5efa404c04a00010001000151800004d5efa405 + +43242 +dda5000000010000000000000766313031303836057570632d66066368656c6c6f026e6c0000010001 +dda5800000010000000300030766313031303836057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +43243 +c01700000001000000000000036e73330767617574656e67026e6c0000010001 +c01780000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43244 +f25c00000001000000000000036e73340767617574656e67026e6c0000010001 +f25c80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43245 +d4ed0000000100000000000009652d6c756e61746963026e6c0000010001 +d4ed8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +43246 +b46a0000000100000000000009652d6c756e61746963026e6c0000010001 +b46a8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +43247 +000000007002faf0f53f0000020405b401010402 +000080010000000000000000 + +43248 +b86b610b5010fae238850000000000000000 +b86be1040000000000000000 + +43249 +820400000001000000000000036e733103616270026e6c0000010001 +820480000001000000020001036e733103616270026e6c0000010001c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c1adc287 + +43250 +b86bf32d5010faf0765a0000000000000000 + + +43251 +2e8900000001000000000000067a65706879720473656d61026e6c0000010001 +2e8980000001000000030003067a65706879720473656d61026e6c0000010001c01300020001000151800012047072693103646e73067073696e6574c018c013000200010001518000070470726932c031c013000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +43252 +b86bf32d5018faf05d640000008deb58000000010001000000000e3839333335333139373538362d320000f900010e3839333335333139373538362d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afdb8403c4f380003000000304e544c4d535350000100000097b208e00700070029000000090009002000000050435f50494554455248414d41544e4c0000 + + +43253 +b195000000010000000000000769746f6c616e67026e6c00000f0001 +b195800000010000000200020769746f6c616e67026e6c00000f0001c00c0002000100015180000f036e7331086974736c6f676963c014c00c0002000100015180000e026e7308646961706c617a61c014c02800010001000151800004d59ae111c04300010001000151800004c2a54621 + +43254 +cd9b000000010000000000000377777709626f6f746e6f646967026e6c0000010001 +cd9b800000010000000200020377777709626f6f746e6f646967026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01ac01000020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +43255 +b86bf33b5011fae275ca0000000000000000 + + +43256 +3bd5000000010000000000000563696e6475026e6c00000f0001 +3bd5800000010000000200000563696e6475026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +43257 +5ac300000001000000000000086263742d6263746e026e6c00000f0001 +5ac380000001000000020002086263742d6263746e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +43258 +e42f00000001000000000000037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001 +e42f80000001000000030003037777770f686f726f73636f6f706f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c034000100010001518000043e45a282c046000100010001518000043e45a283c058000100010001518000043e45a284 + +43259 +b86bf33c5010fae275c90000000000000000 + + +43260 +a29a000000010000000000000a6c6f6b61616c756e6974026e6c0000020001 +a29a800000010000000200020a6c6f6b61616c756e6974026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +43261 +63e7000000010000000000000b76616e77696a6b76657266026e6c00001c0001 +63e7800000010000000200000b76616e77696a6b76657266026e6c00001c0001c00c0002000100015180000f04686e73300774697363616c69c018c00c0002000100015180000704686e7331c031 + +43262 +2ed70000000100000000000007706963736572760e6265796f6e642d7265616c697479026e6c0000010001 +2ed78000000100000002000207706963736572760e6265796f6e642d7265616c697479026e6c0000010001c0140002000100015180000d036e73310674696b74616bc023c01400020001000151800009036e733202696fc023c037000100010001518000045111281dc0500001000100015180000451112202 + +43263 +ccc500000001000000000000037777770b7275696c65656e6c696e6b026e6c0000010001 +ccc580000001000000020000037777770b7275696c65656e6c696e6b026e6c0000010001c01000020001000151800014036e73310d666c65746873686f7374696e67c01cc01000020001000151800006036e7332c034 + +43264 +c3f90000000100000000000003766261026e6c00000f0001 +c3f98000000100000003000203766261026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000b026e73026e6c036e657400c02400010001000151800004d4883c23c03600010001000151800004c14e4887 + +43265 +9f0800000001000000000000046e65777306787334616c6c026e6c0000ff0001 +9f0880000001000000030002046e65777306787334616c6c026e6c0000ff0001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +43266 +06b228000001000200000000026e6c000006000109696e7465726e65743105656c616e32026e6c00000500fe000000000000c01400010001000000000004640a0a02 +06b2a8040000000000000000 + +43267 +000000007002faf085460000020405b401010402 +000080010000000000000000 + +43268 +b3de0000000100000000000003777777076e65746661726d026e6c0000010001 +b3de8000000100000002000203777777076e65746661726d026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c018c01000020001000151800006036e7332c030c02c00010001000151800004505fa002c04700010001000151800004505fac02 + +43269 +168a00000001000000000000037777770c6631636f6d70657469746965026e6c0000010001 +168a80000001000000030003037777770c6631636f6d70657469746965026e6c0000010001c0100002000100015180000c036e7331056d61786573c01dc01000020001000151800006036e7332c035c01000020001000151800006036e7333c035c031000100010001518000045045402ec049000100010001518000045045402fc05b000100010001518000045045440a + +43270 +b86cc7b65010fbec30db0000000000000000 + + +43271 +b86cc7b65018fbecbc930000008d0bd8000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff84403c510400030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 + + +43272 +4ebc0000000100000000000006636c69656e7407626f736e65656b026e6c0000010001 +4ebc8403000100000001000006636c69656e7407626f736e65656b026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +43273 +8c6600100001000000000001036e73310974656c656b6162656c026e6c00000100010000290800000000000000 +8c6680000001000000020003036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d45344830000291000000000000000 + +43274 +c63300100001000000000001046e733032066368656c6c6f026e6c00000100010000290800000000000000 +c63380000001000000030004046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c420000291000000000000000 + +43275 +c3b200000001000000000000036e73310974656c656b6162656c026e6c0000010001 +c3b280000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +43276 +61d900000001000000000000046e733032066368656c6c6f026e6c0000010001 +61d980000001000000030003046e733032066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +43277 +b3f10000000100000000000003707469026e6c00000f0001 +b3f18000000100000002000203707469026e6c00000f0001c00c0002000100015180000e036e7331076970746f776572c010c00c00020001000151800006036e7332c028c024000100010001518000043ecc4065c03e000100010001518000043ecc4066 + +43278 +b86cc7c45011fbde304b0000000000000000 + + +43279 +000500000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +000580000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43280 +e9dc00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +e9dc80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43281 +000000007002faf003060000020405b401010402 +000080010000000000000000 + +43282 +b86cc7c55010fbde304a0000000000000000 + + +43283 +b86eaaeb5010fbeccb630000000000000000 + + +43284 +c7e300000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c7e380000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43285 +b86eaaeb5018fbec587d0000008d0b78000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff84403c510400030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 + + +43286 +242100000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +242180000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +43287 +f0ef00000001000000000000037777770b6861766568656b7765726b026e6c0000010001 +f0ef80000001000000020002037777770b6861766568656b7765726b026e6c0000010001c0100002000100015180000d026e730777696c64686572c01cc01000020001000151800006036e7332c033c030000100010001518000043ed44661c049000100010001518000043ed44660 + +43288 +b86eaaf95011fbdecad30000000000000000 + + +43289 +000000007002faf0d33e0000020405b401010402 +000080010000000000000000 + +43290 +1f8900000001000000000000024e530743495354524f4e024e4c0000010001 +1f8980000001000000020002024e530743495354524f4e024e4c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +43291 +dbc000000001000000000000037777770a636173686d6173746572026e6c0000010001 +dbc080000001000000020000037777770a636173686d6173746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c032 + +43292 +b86eaafa5010fbdecad20000000000000000 + + +43293 +b86f5d985010fbece8ee0000000000000000 +b86fdd940000000000000000 + +43294 +b86f5d985018fbec36500000008d4b30000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005103677373096d6963726f736f667403636f6d00403aff84403c510400030000002e4e544c4d535350000100000097b208e005000500290000000900090020000000494e5445524e455431454c414e320000 +b86fdd940000000000000000 + +43295 +842300100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +842380000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +43296 +f9ce00100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +f9ce80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +43297 +b86f5da65011fbdee85e0000000000000000 +b86fdda40000000000000000 + +43298 +5c1800000001000000000000036e733103766261026e6c0000010001 +5c1880000001000000030002036e733103766261026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4883c23c03600010001000151800004c14e4887 + +43299 +176900000001000000000000036e733103766261026e6c0000260001 +176980000001000000030002036e733103766261026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4883c23c03600010001000151800004c14e4887 + +43300 +dbf000000001000000000000116c6f6b616c6562656c617374696e67656e026e6c0000020001 +dbf080000001000000020002116c6f6b616c6562656c617374696e67656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ec00c00020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +43301 +174d0000000100000000000006636861726973026e6c00000f0001 +174d8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43302 +b86f5da75010fbdee85d0000000000000000 +b86fdda40000000000000000 + +43303 +a589000000010000000000000b7374617274706167696e61026e6c0000010001 +a589800000010000000300030b7374617274706167696e61026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +43304 +66ba000000010000000000000377777703746663026e6c0000010001 +66ba800000010000000200020377777703746663026e6c0000010001c0100002000100015180000d026e73076e65746c616e64c014c01000020001000151800006036e7332c02bc02800010001000151800004d9aa2042c04100010001000151800004d9aa2c06 + +43305 +973b0000000100000000000003777777077569746c696a6e026e6c0000010001 +973b8000000100000002000203777777077569746c696a6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c000100010001518000043e3aa5fbc03e00010001000151800004d4ccfc79 + +43306 +000828000001000200000000026e6c00000600010f57533031352d64616e69656c6c657304636f72700968617a6c65776f6f64026e6c00000500fe000000000000c01400010001000000000004c297cb0e +0008a8040000000000000000 + +43307 +2f31000000010000000000000a7661737375706c696573026e6c00000f0001 +2f31840300010000000100000a7661737375706c696573026e6c00000f0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +43308 +fd6d00000001000000000000044d41494c0475627675027675026e6c00000f0001 +fd6d80000001000000030003044d41494c0475627675027675026e6c00000f0001c01600020001000151800005026e73c016c0160002000100015180000a0473746172026373c016c0160002000100015180000e036e733107737572666e6574c019c02d0001000100015180000482258104c03e00010001000151800004c01fe72ac05400010001000151800004c0576a65 + +43309 +f5730000000100000000000005656c766961026e6c00000f0001 +f5738000000100000002000005656c766961026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c029 + +43310 +1835000000010000000000000377777707636f7272616469026e6c0000010001 +1835800000010000000200000377777707636f7272616469026e6c0000010001c0100002000100015180000f026e73066e656269747303636f6d00c01000020001000151800006036e7332c02f + +43311 +e86e000000010000000000000377777718686f6c6c616e64636173696e6f2d65726564697669736965026e6c0000010001 +e86e800000010000000300030377777718686f6c6c616e64636173696e6f2d65726564697669736965026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c029c01000020001000151800006036e7332c041c01000020001000151800006036e7333c041c03d00010001000151800004c3f13ceec05900010001000151800004c372eb43c06b000100010001518000043e320e8f + +43312 +ae1b000000010000000000000472656a6f067a656e676572026e6c0000010001 +ae1b800000010000000200020472656a6f067a656e676572026e6c0000010001c0110002000100015180000c036e7330056e65786974c018c01100020001000151800006036e7331c030c02c00010001000151800004d4ccf5d3c04400010001000151800004d4ccf5d4 + +43313 +11fe00000001000000000000037777771164656879706f746865656b77696e6b656c026e6c0000010001 +11fe80000001000000020002037777771164656879706f746865656b77696e6b656c026e6c0000010001c0100002000100015180000b04646e733103627367c022c0100002000100015180000704646e7332c03bc036000100010001518000043e3a8553c04d000100010001518000043e3a8554 + +43314 +7c900000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +7c908000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43315 +2f4628000001000000010000026e6c0000060001095f6b65726265726f73045f7564700a544f5047524f57455253026e6c00002100010000025800230000006400580d706463746f7067726f776572730a544f5047524f57455253026e6c00 +2f46a8040000000000000000 + +43316 +856c00000001000000000000037777770472696765026e6c0000010001 +856c80000001000000020002037777770472696765026e6c0000010001c0100002000100015180000c036e733105636176656fc015c01000020001000151800006036e7332c02dc029000100010001518000045112a002c041000100010001518000045112a102 + +43317 +9ce100000001000000000000036e6f63056c69616373026e6c0000010001 +9ce180000001000000030002036e6f63056c69616373026e6c0000010001c01000020001000151800002c00cc010000200010001518000080561746c6173c010c010000200010001518000140672756c7761790a6c656964656e756e6976c016c00c0001000100015180000484e52c0bc0380001000100015180000484e52c19 + +43318 +e55200000001000000000000036e6f63056c69616373026e6c00001c0001 +e55280000001000000030002036e6f63056c69616373026e6c00001c0001c01000020001000151800002c00cc010000200010001518000080561746c6173c010c010000200010001518000140672756c7761790a6c656964656e756e6976c016c00c0001000100015180000484e52c0bc0380001000100015180000484e52c19 + +43319 +606000000001000000000000086d61696c67617465056c69616373026e6c0000010001 +606080000001000000030002086d61696c67617465056c69616373026e6c0000010001c01500020001000151800006036e6f63c015c015000200010001518000080561746c6173c015c015000200010001518000140672756c7761790a6c656964656e756e6976c01bc02f0001000100015180000484e52c0bc0410001000100015180000484e52c19 + +43320 +65a000000001000000000000086d61696c67617465056c69616373026e6c00001c0001 +65a080000001000000030002086d61696c67617465056c69616373026e6c00001c0001c01500020001000151800006036e6f63c015c015000200010001518000080561746c6173c015c015000200010001518000140672756c7761790a6c656964656e756e6976c01bc02f0001000100015180000484e52c0bc0410001000100015180000484e52c19 + +43321 +3fea00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +3fea80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +43322 +e53700000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +e53780000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43323 +59aa0000000100000000000006696e61637473026e6c0000010001 +59aa8000000100000002000206696e61637473026e6c0000010001c00c00020001000151800012036e73310b736c61636b736572766572c013c00c00020001000151800006036e7332c02bc027000100010001518000043ed444c0c045000100010001518000043ed44d0a + +43324 +0000000070024000ddd30000020405b401010402 +000080010000000000000000 + +43325 +e1a900000001000000000000037777770472696765026e6c0000010001 +e1a980000001000000020002037777770472696765026e6c0000010001c0100002000100015180000c036e733105636176656fc015c01000020001000151800006036e7332c02dc029000100010001518000045112a002c041000100010001518000045112a102 + +43326 +ac790000000100000000000004444e533203523249026e6c0000010001 +ac798000000100000002000204444e533203523249026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0290001000100015180000491050e02c00c0001000100015180000491050e22 + +43327 +a8770000000100000000000004444e533103523249026e6c0000010001 +a8778000000100000002000204444e533103523249026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c0001000100015180000491050e02c0370001000100015180000491050e22 + +43328 +b86ffc6a50104470513d0000000000000000 + + +43329 +d8240000000100000000000007616c7465726e6f026e6c00000f0001 +d8248000000100000002000207616c7465726e6f026e6c00000f0001c00c0002000100015180000f036e7331086461786973776562c014c00c00020001000151800006036e7332c02cc02800010001000151800004c323c083c04300010001000151800004c323c084 + +43330 +0e9200000001000000000000067a65706879720473656d61026e6c0000010001 +0e9280000001000000030003067a65706879720473656d61026e6c0000010001c01300020001000151800012047072693103646e73067073696e6574c018c013000200010001518000070470726932c031c013000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +43331 +b86ffc6a50184470fc390000009600da000000010001000000000f313233363935303538313236362d330000f900010f313233363935303538313236362d330000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd2b403c4eab0003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 + + +43332 +d5ea000000010000000000000377777708726f7a65676f6c66026e6c0000010001 +d5ea800000010000000200020377777708726f7a65676f6c66026e6c0000010001c0100002000100015180000e036e733107686f7477697265c019c01000020001000151800006036e7332c031c02d0001000100015180000451044b03c0470001000100015180000451044bc8 + +43333 +b86ffc785011446250a40000000000000000 + + +43334 +926d00000001000000000000037777770863616e6e61626973026e6c0000010001 +926d80000001000000020000037777770863616e6e61626973026e6c0000010001c01000020001000151800013026e730a6e61616d736572766572036e657400c01000020001000151800006036e7331c030 + +43335 +0000000070024000f56e0000020405b401010402 +000080010000000000000000 + +43336 +bd5c0000000100000000000009535449434b44454154026e6c0000020001 +bd5c8403000100000001000009535449434b44454154026e6c0000020001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +43337 +f64c0000000100000000000003777777046f687261026e6c0000010001 +f64c8000000100000002000003777777046f687261026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02d + +43338 +b86ffc795010446250a30000000000000000 + + +43339 +beb40000000100000000000005646e732d32056c61646f74026e6c0000010001 +beb48000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43340 +4ccb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +4ccb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43341 +b870e1475010447083fa0000000000000000 + + +43342 +b870e147501844709691000000969a40000000010001000000000f313233363935303538313236362d320000f900010f313233363935303538313236362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd2b403c4eab0003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 + + +43343 +611a0000000100000000000007317365727665720b65696c616e64686f6f6664026e6c0000010001 +611a8403000100000001000007317365727665720b65696c616e64686f6f6664026e6c0000010001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +43344 +886800000001000000000000037777770a68616e73616e64657273026e6c0000010001 +886880000001000000030003037777770a68616e73616e64657273026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004c3f13ceec04b00010001000151800004c372eb43c05d000100010001518000043e320e8f + +43345 +b7990000000100000000000002706d026e6c0000ff0001 +b7998000000100000002000002706d026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c029 + +43346 +b10e00000001000000000000036e7331046177676f026e6c0000010001 +b10e80000001000000020002036e7331046177676f026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d9aa124cc03700010001000151800004d9aa124d + +43347 +3b0b00000001000000000000036e7332046177676f026e6c0000010001 +3b0b80000001000000020002036e7332046177676f026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02900010001000151800004d9aa124cc00c00010001000151800004d9aa124d + +43348 +b870e1555011446283610000000000000000 + + +43349 +d2ed00000001000000000000037777770b74696573746f776f726c64026e6c0000010001 +d2ed80000001000000020000037777770b74696573746f776f726c64026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c035 + +43350 +5ab200000001000000000000026e7309747269706c652d6974026e6c0000010001 +5ab280000001000000030003026e7309747269706c652d6974026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b086e7331636f6c6f32c00fc00f0002000100015180000b086e7331636f6c6f33c00fc00c00010001000151800004d584b002c03b00010001000151800004d47ffe42c05200010001000151800004504542ad + +43351 +fea400000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +fea480000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +43352 +000000007002400031f30000020405b401010402 +000080010000000000000000 + +43353 +7f5200000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000260001 +7f5280000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +43354 +9fce00000001000000000000036e73320d63656e747269636f6e6c696e65026e6c0000010001 +9fce80000001000000020002036e73320d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d481ec0cc00c00010001000151800004d590e63a + +43355 +27dc00000001000000000000036e73320d63656e747269636f6e6c696e65026e6c0000260001 +27dc80000001000000020002036e73320d63656e747269636f6e6c696e65026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03200010001000151800004d481ec0cc00c00010001000151800004d590e63a + +43356 +b870e1565010446283600000000000000000 + + +43357 +6eaf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +6eaf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43358 +b871b54f50104470ec750000000000000000 + + +43359 +b871b54f50184470e88c00000096b0c0000000010001000000000f313233363935303538313236362d320000f900010f313233363935303538313236362d320000f900ff00000000005a03677373096d6963726f736f667403636f6d00403afd2b403c4eab0003000000374e544c4d535350000100000097b208e00a000a002d0000000d000d0020000000504443544f5047524f57455253544f5047524f574552530000 + + +43360 +14a70000000100000000000005646e732d31056c61646f74026e6c0000010001 +14a78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43361 +adc300000001000000000000037777770773656b7366616e026e6c0000010001 +adc380000001000000020001037777770773656b7366616e026e6c0000010001c0100002000100015180000a026e7304696d636fc018c01000020001000151800013036e7332097669727475616c787303636f6d00c02c000100010001518000043e81810a + +43362 +1c540000000100000000000003777777127a6f656b6a65656967656e656e6572676965026e6c0000010001 +1c548403000100000001000003777777127a6f656b6a65656967656e656e6572676965026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +43363 +b871b55d50114462ebdc0000000000000000 + + +43364 +f1a600000001000000000000085f6b706173737764045f7463700d696e7472612d6b6c6174746572026e6c0000060001 +f1a684030001000000010000085f6b706173737764045f7463700d696e7472612d6b6c6174746572026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +43365 +7ce700000001000000000000026e73076e656473746174026e6c0000010001 +7ce780000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43366 +dca000000001000000000000037777770a7065746572627275696e026e6c0000010001 +dca080000001000000020002037777770a7065746572627275696e026e6c0000010001c0100002000100015180000f0472617131076e657474756e65c01bc01000020001000151800006036e7332c034c02f00010001000151800004d4ccf78dc04a00010001000151800004d4ccf78e + +43367 +dbb2000000010000000000001167616c65726965646564726965686f656b026e6c0000010001 +dbb2800000010000000200001167616c65726965646564726965686f656b026e6c0000010001c00c00020001000151800019036e73310f6c696e6b67696473686f7374696e6703636f6d00c00c00020001000151800006036e7332c036 + +43368 +380400000001000000000000036e7333076e656473746174026e6c0000010001 +380480000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +43369 +50cb00000001000000000000085f6b706173737764045f7564700d696e7472612d6b6c6174746572026e6c0000060001 +50cb84030001000000010000085f6b706173737764045f7564700d696e7472612d6b6c6174746572026e6c0000060001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +43370 +5132001000010000000000010631376769726c026e6c00000100010000290800000000000000 +5132800000010000000200010631376769726c026e6c0000010001c00c0002000100015180000e036e73310774697363616c69c013c00c00020001000151800006036e7332c02b0000291000000000000000 + +43371 +b871b55e50104462ebdb0000000000000000 + + +43372 +224e00000001000000000000037777771872656372656174696563656e7472616e656465726c616e64026e6c0000010001 +224e80000001000000020000037777771872656372656174696563656e7472616e656465726c616e64026e6c0000010001c01000020001000151800011036e73310a747770686f7374696e67c029c01000020001000151800006036e7332c041 + +43373 +451900000001000000000000026e7303786f73026e6c0000010001 +451980000001000000020001026e7303786f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800010036e7332096e657473797374656dc013c00c00010001000151800004d41acfe2 + +43374 +cad300000001000000000000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730d696e7472612d6b6c6174746572026e6c0000060001 +cad384030001000000010000055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730d696e7472612d6b6c6174746572026e6c0000060001c04400060001000038400036026e730f646f6d61696e2d7265676973747279c0440a686f73746d6173746572c05b0bf1e540000070800000384000278d0000003840 + +43375 +57d800000001000000000000037777770c6575726f7365727669636573026e6c0000010001 +57d880000001000000020000037777770c6575726f7365727669636573026e6c0000010001c0100002000100015180000c026e7306766576696461c01dc01000020001000151800006036e7332c034 + +43376 +f8fb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +f8fb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43377 +561700000001000000000000056665776562027675026e6c0000ff0001 +561780000001000000030003056665776562027675026e6c0000ff0001c01200020001000151800005026e73c012c0120002000100015180000a0473746172026373c012c0120002000100015180000e036e733107737572666e6574c015c0290001000100015180000482258104c03a00010001000151800004c01fe72ac05000010001000151800004c0576a65 + +43378 +88060000000100000000000003666869026e6c00000f0001 +88068000000100000002000203666869026e6c00000f0001c00c0002000100015180000d026e73076e65746c616e64c010c00c00020001000151800006036e7332c027c02400010001000151800004d9aa2042c03d00010001000151800004d9aa2c06 + +43379 +95040000000100000000000003627361026e6c0000010001 +95048000000100000002000003627361026e6c0000010001c00c00020001000151800010036e733106736563757265036e657400c00c00020001000151800006036e7332c028 + +43380 +2ded0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2ded8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43381 +d1e900000001000000000000036e733109666972737466696e64026e6c0000010001 +d1e980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43382 +d1ea00000001000000000000036e733209666972737466696e64026e6c0000010001 +d1ea80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43383 +e7ff00000001000000000000026937026e6c0000010001 +e7ff80000001000000030002026937026e6c0000010001c00c0002000100015180000d036e733106776964657873c00fc00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c027c02300010001000151800004d4ccc0fcc058000100010001518000043efa0703 + +43384 +de7e00000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +de7e80000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +43385 +ebaf0000000100000000000003777777086171756172696f6d026e6c0000010001 +ebaf8000000100000002000203777777086171756172696f6d026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c019c01000020001000151800006036e7332c030c02d00010001000151800004c3402003c04600010001000151800004c340202b + +43386 +59ae00000001000000000000056c6f686572026e6c00001c0001 +59ae80000001000000020002056c6f686572026e6c00001c0001c00c0002000100015180000a036e733103677673c012c00c00020001000151800006036e7332c02ac026000100010001518000045054e1aac03c00010001000151800004d4ccc646 + +43387 +2dee0000000100000000000005646e732d32056c61646f74026e6c0000010001 +2dee8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43388 +867a00000001000000000000096d696e64706f776572026e6c00000f0001 +867a80000001000000020000096d696e64706f776572026e6c00000f0001c00c0002000100015180000c026e7306766576696461c016c00c00020001000151800006036e7332c02d + +43389 +8a1500000001000000000000037777770773656b7366616e026e6c0000010001 +8a1580000001000000020001037777770773656b7366616e026e6c0000010001c0100002000100015180000a026e7304696d636fc018c01000020001000151800013036e7332097669727475616c787303636f6d00c02c000100010001518000043e81810a + +43390 +ef3f00000001000000000000036e73310a6d756c74696b6162656c026e6c0000260001 +ef3f80000001000000030002036e73310a6d756c74696b6162656c026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +43391 +fdb4000000010000000000000477656e740564656d6f6e026e6c0000ff0001 +fdb4800000010000000300020477656e740564656d6f6e026e6c0000ff0001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c0110002000100015180000f036e73320564656d6f6e036e657400c02b00010001000151800004c29f4906c03d00010001000151800004c29fb004 + +43392 +05b400000001000000000000036677310a737072656e67656c6f6f026e6c0000010001 +05b480000001000000020002036677310a737072656e67656c6f6f026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01bc01000020001000151800006036e7332c033c02f00010001000151800004d43d0f08c04d00010001000151800004d43d19e2 + +43393 +819a00100001000000000001036e733103617474026e6c00000100010000290800000000000000 +819a80000001000000020003036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d0000291000000000000000 + +43394 +c0cd00100001000000000001036e733103617474026e6c00002600010000290800000000000000 +c0cd80000001000000020003036e733103617474026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d0000291000000000000000 + +43395 +a22d00100001000000000001036e733203617474026e6c00000100010000290800000000000000 +a22d80000001000000020003036e733203617474026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d0000291000000000000000 + +43396 +9ec50000000100000000000005646e732d31056c61646f74026e6c0000010001 +9ec58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43397 +784200100001000000000001036e733203617474026e6c00002600010000290800000000000000 +784280000001000000020003036e733203617474026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d0000291000000000000000 + +43398 +3a320000000100000000000006647570616330026e6c00000f0001 +3a328403000100000001000006647570616330026e6c00000f0001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +43399 +d1ec00000001000000000000036e733109666972737466696e64026e6c0000010001 +d1ec80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43400 +a9a7000000010000000000000631376769726c026e6c0000010001 +a9a7800000010000000200000631376769726c026e6c0000010001c00c0002000100015180000e036e73310774697363616c69c013c00c00020001000151800006036e7332c02b + +43401 +d1ed00000001000000000000036e733209666972737466696e64026e6c0000010001 +d1ed80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43402 +4e1b00000001000000000000036e733103617474026e6c0000010001 +4e1b80000001000000020002036e733103617474026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +43403 +93eb00000001000000000000036e733103617474026e6c0000260001 +93eb80000001000000020002036e733103617474026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2970216c03600010001000151800004c297024d + +43404 +84d400000001000000000000036e733203617474026e6c0000260001 +84d480000001000000020002036e733203617474026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004c2970216c00c00010001000151800004c297024d + +43405 +ae7e28000001000000020000026e6c00000600012439653263393166622d313132322d343037302d386363392d373561623332666464633337065f6d736463730970726b766477696c64026e6c00000500ff000000000000c014000500010000025800190a77326b736572766572310970726b766477696c64026e6c00 +ae7ea8040000000000000000 + +43406 +f61e00000001000000000000037777770e646574656c65666f6f6e67696461026e6c0000010001 +f61e84030001000000010000037777770e646574656c65666f6f6e67696461026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +43407 +e93e0000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +e93e8000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43408 +23f900000001000000000000027463036164730974656c656772616166026e6c0000010001 +23f980000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +43409 +999600000001000000000000027463036164730974656c656772616166026e6c0000010001 +999680000001000000020000027463036164730974656c656772616166026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c035 + +43410 +6f5200000001000000000000036e73320a6d756c74696b6162656c026e6c0000010001 +6f5280000001000000030002036e73320a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +43411 +000000007002faf0225800000204055001010402 +000080010000000000000000 + +43412 +443628000001000200000000024e4c00000600010b67656d736c6477323030300847454d534c44324b0a534c4945445245434854024e4c00000500fe000000000000c01400010001000000000004ac100166 +4436a8040000000000000000 + +43413 +b1c20000000100000000000003777777076a6f62706f6f6c026e6c0000010001 +b1c28000000100000003000203777777076a6f62706f6f6c026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +43414 +b873d47b5010ff00bda80000000000000000 + + +43415 +b873d47b5018ff002785000000923da3000000010001000000000f313531313832383438383231302d330000f900010f313531313832383438383231302d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403b0027403c51a70003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +43416 +1fa728000001000000010000026e6c0000060001055f6c646170045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d736463730b626973677665726f6c6d65026e6c00002100010000025800220000006401850b64632d68756e74736d616e0b626973677665726f6c6d65026e6c00 +1fa7a8040000000000000000 + +43417 +723b0000000100000000000008616562766d61696c06787334616c6c026e6c0000010001 +723b8000000100000003000208616562766d61696c06787334616c6c026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7332c015c0150002000100015180000d026e730472697065036e657400c03000010001000151800004c26d0642c04100010001000151800004c26d0963 + +43418 +30f20000000100000000000005646e732d31056c61646f74026e6c0000010001 +30f28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43419 +5bda00000001000000000000036e73320a6d756c74696b6162656c026e6c0000260001 +5bda80000001000000030002036e73320a6d756c74696b6162656c026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c00c0001000100015180000450f2e006 + +43420 +4e1000000001000000000000056d61696c3207677265656e6962026e6c00000f0001 +4e1080000001000000020000056d61696c3207677265656e6962026e6c00000f0001c0120002000100015180000b026e73026e6c036e657400c0120002000100015180001206617574683630026e73026e6c027575c034 + +43421 +241800000001000000000000036d736e056972737369036f7267086368616b6f746179026e6c0000010001 +241880000001000000030000036d736e056972737369036f7267086368616b6f746179026e6c0000010001c01a00020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01a00020001000151800006036e7332c03bc01a00020001000151800006036e7333c03b + +43422 +b873d4895011fef2bd130000000000000000 + + +43423 +1f0d0000000100000000000008686f73746e616d650462696e640000100003 +1f0d8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +43424 +000000007002faf0f7480000020405b401010402 +000080010000000000000000 + +43425 +000000007002faf0332200000204055001010402 +000080010000000000000000 + +43426 +000000007002faf07aff0000020405b401010402 +000080010000000000000000 + +43427 +b873d48a5010fef2bd120000000000000000 + + +43428 +b8756c445010ff0036a80000000000000000 +b875ec440000000000000000 + +43429 +b8760bd75010faf0e3650000000000000000 +b8768bd40000000000000000 + +43430 +9ff300000001000000000000046e7330320462696374026e6c0000010001 +9ff380000001000000020002046e7330320462696374026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800002c00cc02a00010001000151800004d413d6c8c00c00010001000151800004d413d604 + +43431 +b874af045010faf0bc830000000000000000 + + +43432 +b8756c445018ff00da670000009204c1000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b0027403c51a70003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 +b875ec440000000000000000 + +43433 +b874af045018faf097a50000009250ac000000010001000000000f313330353637303035383030322d330000f900010f313330353637303035383030322d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e0080008002b0000000b000b002000000047454d534c44573230303047454d534c44324b0000 + + +43434 +b8760bd75018faf0c670000000955c40000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd89403c4f090003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 +b8768bd40000000000000000 + +43435 +917b000000010000000000000576616c6d61026e6c0000010001 +917b800000010000000300030576616c6d61026e6c0000010001c00c0002000100015180000e076e73617574683103626974c012c00c0002000100015180000a076e736175746832c02ec00c0002000100015180000a076e736175746833c02ec02600010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +43436 +b8760be55011fae2e2cd0000000000000000 +b8768be40000000000000000 + +43437 +b8756c525011fef236130000000000000000 +b875ec540000000000000000 + +43438 +9dd40000000100000000000005646e732d31056c61646f74026e6c0000010001 +9dd48000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43439 +000000007002faf0cc390000020405b401010402 +000080010000000000000000 + +43440 +cc470000000100000000000005646e732d32056c61646f74026e6c0000010001 +cc478000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43441 +b874af125011fae2bbee0000000000000000 + + +43442 +000000007002faf0865700000204055001010402 +000080010000000000000000 + +43443 +0eb0000000010000000000000561636b6572026e6c00001c0001 +0eb0800000010000000200000561636b6572026e6c00001c0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c029 + +43444 +b8760be65010fae2e2cc0000000000000000 +b8768be40000000000000000 + +43445 +b87704245010faf03c520000000000000000 +b87780010000000000000000 + +43446 +000000007002faf0d3060000020405b401010402 +000080010000000000000000 + +43447 +b8756c535010fef236120000000000000000 +b875ec540000000000000000 + +43448 +b8778b1f5010ff006b000000000000000000 + + +43449 +243400000001000000000000057269636173026e6c00000f0001 +243480000001000000030003057269636173026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c012c00c0002000100015180000a076e736175746832c02ec00c0002000100015180000a076e736175746833c02ec02600010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +43450 +b87704245018faf0c21d00000095ba80000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd89403c4f090003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 +b87780010000000000000000 + +43451 +b874af135010fae2bbed0000000000000000 + + +43452 +23de000000010000000000000a7474702d646f6d61696e026e6c0000060001 +23de840300010000000100000a7474702d646f6d61696e026e6c0000060001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +43453 +89530000000100000000000005646e732d31056c61646f74026e6c0000010001 +89538000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43454 +972d0000000100000000000003777777166c6974657261747575726765736368696564656e6973026e6c0000010001 +972d8000000100000002000203777777166c6974657261747575726765736368696564656e6973026e6c0000010001c0100002000100015180000a036e7331036e7873c027c01000020001000151800006036e7332c03fc03b00010001000151800004d973c015c05100010001000151800004d973c102 + +43455 +b8778b1f5018ff007616000000929d6a000000010001000000000f313531313832383438383231302d320000f900010f313531313832383438383231302d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b0027403c51a70003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +43456 +2b5800000001000000000000056a6170706f026e6c0000010001 +2b5880000001000000020000056a6170706f026e6c0000010001c00c0002000100015180000f036e7336086a726f6e6c696e65c012c00c00020001000151800014036e73330d686f73746e656465726c616e64c012 + +43457 +b87704325011fae23bba0000000000000000 +b87780010000000000000000 + +43458 +b8784b705010faf0fbd10000000000000000 +b878cb740000000000000000 + +43459 +000000007002faf035460000020405b401010402 +000080010000000000000000 + +43460 +b8784b705018faf060fe00000092c7a2000000010001000000000f313330353637303035383030322d320000f900010f313330353637303035383030322d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e0080008002b0000000b000b002000000047454d534c44573230303047454d534c44324b0000 +b878cb740000000000000000 + +43461 +b8778b2d5011fef26a6b0000000000000000 + + +43462 +003b00000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +003b80000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +43463 +32a500000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000260001 +32a580000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +43464 +7f7200000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +7f7280000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43465 +eb8100000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c0000260001 +eb8180000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43466 +274400000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +274480000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43467 +ec6800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c0000260001 +ec6880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43468 +b87704335010fae23bb90000000000000000 +b87780010000000000000000 + +43469 +b878f3165010faf0b66a0000000000000000 + + +43470 +e2050000000100000000000008626c7565666973680a6f70656e6f6666696365026e6c0000010001 +e2058000000100000002000008626c7565666973680a6f70656e6f6666696365026e6c0000010001c01500020001000151800010026e73076379736f6e657403636f6d00c01500020001000151800006036e7331c037 + +43471 +b8778b2e5010fef26a6a0000000000000000 + + +43472 +b878f3165018faf0a036000000955680000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd89403c4f090003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 + + +43473 +b8784b7e5011fae2fb3c0000000000000000 +b878cb740000000000000000 + +43474 +b878f3245011fae2b5d20000000000000000 + + +43475 +a8f30000000100000000000005646e732d31056c61646f74026e6c0000010001 +a8f38000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43476 +07b600000001000000000000086174617261786961026e6c0000010001 +07b680000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +43477 +000000007002faf0ea1e0000020405b401010402 +000080010000000000000000 + +43478 +b8784b7f5010fae2fb3b0000000000000000 +b878cb740000000000000000 + +43479 +854e00000001000000000000037777770a6b63726f65726d6f6e64026e6c0000010001 +854e80000001000000020002037777770a6b63726f65726d6f6e64026e6c0000010001c0100002000100015180000e036e73310769736973776562c01bc01000020001000151800006036e7332c033c02f00010001000151800004d4ccca65c04900010001000151800004510440de + +43480 +b878f3255010fae2b5d10000000000000000 + + +43481 +86c600000001000000000000037777770d62726973776172656e68756973026e6c0000010001 +86c680000001000000020002037777770d62726973776172656e68756973026e6c0000010001c0100002000100015180000a026e730469636d63c01ec01000020001000151800006036e7332c035c032000100010001518000043e643805c048000100010001518000043e643806 + +43482 +b87984425010faf0da160000000000000000 + + +43483 +5d17000000010000000000000377777707626f727361746f026e6c0000010001 +5d17800000010000000200020377777707626f727361746f026e6c0000010001c0100002000100015180000b026e73057162616c6cc018c0100002000100015180000f026e7309747269706c652d6974c018c02c00010001000151800004d584b024c04300010001000151800004d584b002 + +43484 +b87984425018faf0c84d000000923e98000000010001000000000f313330353637303035383030322d320000f900010f313330353637303035383030322d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403afd0f403c4e8f0003000000334e544c4d535350000100000097b208e0080008002b0000000b000b002000000047454d534c44573230303047454d534c44324b0000 + + +43485 +278e000000010000000000000377777707696b6f6e727476026e6c0000010001 +278e800000010000000200000377777707696b6f6e727476026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c02f + +43486 +b41f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +b41f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43487 +b9bc0000000100000000000003777777096c75667468616e7361026e6c0000010001 +b9bc8000000100000002000203777777096c75667468616e7361026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c01ac01000020001000151800006036e7332c031c02e00010001000151800004d513b013c04b00010001000151800004d513b012 + +43488 +1db600000001000000000000026e7308767575727765726b026e6c0000010001 +1db680000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +43489 +b87984505011fae2d9810000000000000000 + + +43490 +31450000000100000000000005646e732d31056c61646f74026e6c0000010001 +31458000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43491 +b87984515010fae2d9800000000000000000 + + +43492 +fcac0000000100000000000003777777076665657374656e026e6c0000010001 +fcac8000000100000002000203777777076665657374656e026e6c0000010001c0100002000100015180000e036e733107662d6163746966c018c01000020001000151800006036e7332c030c02c00010001000151800004d5f72f2dc04600010001000151800004d5c1d528 + +43493 +7d790000000100000000000004646e733206626c6978656d026e6c0000010001 +7d798000000100000003000304646e733206626c6978656d026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02c00010001000151800004d44fe803c00c00010001000151800004c3f5c782c04d00010001000151800004d44ff303 + +43494 +b91e0000000100000000000004646e733306626c6978656d026e6c0000010001 +b91e8000000100000003000304646e733306626c6978656d026e6c0000010001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02c00010001000151800004d44fe803c03f00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +43495 +e2dd000000010000000000000a6a6f616e6b6e65636874026e6c00000f0001 +e2dd800000010000000300020a6a6f616e6b6e65636874026e6c00000f0001c00c0002000100015180000d036e733106776964657873c017c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +43496 +6e680000000100000000000004646e733306626c6978656d026e6c0000260001 +6e688000000100000003000304646e733306626c6978656d026e6c0000260001c0110002000100015180000704646e7331c011c0110002000100015180000704646e7332c011c01100020001000151800002c00cc02c00010001000151800004d44fe803c03f00010001000151800004c3f5c782c00c00010001000151800004d44ff303 + +43497 +1be20000000100000000000004646e733206626c6978656d026e6c0000260001 +1be28000000100000003000304646e733206626c6978656d026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc0110002000100015180000704646e7333c011c02c00010001000151800004d44fe803c00c00010001000151800004c3f5c782c04d00010001000151800004d44ff303 + +43498 +d1cd0000000100000000000005646e732d31056c61646f74026e6c0000010001 +d1cd8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43499 +22bd0000000100000000000005646e732d31056c61646f74026e6c0000010001 +22bd8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43500 +e6e20000000100000000000005646e732d32056c61646f74026e6c0000010001 +e6e28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43501 +169e00000001000000000000067a65706879720473656d61026e6c0000010001 +169e80000001000000030003067a65706879720473656d61026e6c0000010001c01300020001000151800012047072693103646e73067073696e6574c018c013000200010001518000070470726932c031c013000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +43502 +995a00000001000000000000026e7306787334616c6c026e6c0000010001 +995a80000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +43503 +dbdd0000000100000000000005646e732d31056c61646f74026e6c0000010001 +dbdd8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43504 +8133000000010000000000000a7374617274726176656c026e6c0000ff0001 +8133800000010000000200020a7374617274726176656c026e6c0000ff0001c00c00020001000151800009026e73036f6b65c017c00c00020001000151800006036e7332c02ec02b00010001000151800004c13acc3bc04000010001000151800004c13acc27 + +43505 +23390000000100000000000007766462636f6d70026e6c00001c0001 +23398000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +43506 +9cbb000000010000000000000567656e6965026e6c00000f0001 +9cbb800000010000000200020567656e6965026e6c00000f0001c00c0002000100015180000d026e73076e65746c616e64c012c00c00020001000151800006036e7332c029c02600010001000151800004d9aa2042c03f00010001000151800004d9aa2c06 + +43507 +08930000000100000000000005646e732d31056c61646f74026e6c0000010001 +08938000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43508 +5a0e000000010000000000000b636f6d3474726164696e67026e6c0000ff0001 +5a0e800000010000000300010b636f6d3474726164696e67026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc018c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +43509 +d9b300000001000000000000037777770f63616d706572736361726176616e73026e6c0000010001 +d9b380000001000000030002037777770f63616d706572736361726176616e73026e6c0000010001c0100002000100015180000903646e73026469c020c0100002000100015180000704646e7332c038c0100002000100015180000704646e7333c038c03400010001000151800004c286fb03c05c00010001000151800004d4cb1285 + +43510 +0d79000000010000000000000379786b026e6c00001c0001 +0d79800000010000000300000379786b026e6c00001c0001c00c00020001000151800015036e73310b70726f6c6f636174696f6e036e657400c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028 + +43511 +e4dd00100001000000000001036e733203626f73026e6c00000100010000290800000080000000 +e4dd80000001000000020003036e733203626f73026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004d5881e43c00c00010001000151800004d51392030000291000000000000000 + +43512 +cefa00000001000000000000056169737476026e6c00000f0001 +cefa80000001000000020002056169737476026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +43513 +c9ba00100001000000000001026e7303626f73026e6c00000100010000290800000080000000 +c9ba80000001000000020003026e7303626f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5881e43c03500010001000151800004d51392030000291000000000000000 + +43514 +3bca0000000100000000000005646e732d31056c61646f74026e6c0000010001 +3bca8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43515 +85460000000100000000000003706f700c667973696f70687973696373026e6c00001c0001 +85468000000100000003000203706f700c667973696f70687973696373026e6c00001c0001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +43516 +aa3d000000010000000000000c667973696f70687973696373026e6c0000ff0001 +aa3d800000010000000300020c667973696f70687973696373026e6c0000ff0001c00c0002000100015180000d036e733106776964657873c019c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +43517 +88e90000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +88e98000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +43518 +02b900000001000000000000096c6f6e6776696c6c65026e6c0000020001 +02b980000001000000020002096c6f6e6776696c6c65026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +43519 +27d70000000100000000000005646e732d31056c61646f74026e6c0000010001 +27d78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43520 +97ea0000000100000000000004736d747003726463026e6c0000010001 +97ea8000000100000002000204736d747003726463026e6c0000010001c011000200010001518000100d7372726463303134646d7a3034c011c011000200010001518000100d7372726463303132646d7a3033c011c02900010001000151800004d973e064c04500010001000151800004d973e054 + +43521 +2c32000000010000000000000869702d73706163650262790870726f7365727665026e6c0000010001 +2c32800000010000000300020869702d73706163650262790870726f7365727665026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800012036e73320970726f2d736572766502626500c01800020001000151800006036e7333c018c035000100010001518000045054e055c06500010001000151800004d4ccc655 + +43522 +0aa400000001000000000000026e73076e656473746174026e6c0000010001 +0aa480000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43523 +0cd5000000010000000000000874726176656c736f066e7434616c6c026e6c0000010001 +0cd5800000010000000200020874726176656c736f066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +43524 +d18328000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d736463730b6465626f646567726f6570026e6c000021000100000258001d000000640185067365727665720b6465626f646567726f6570026e6c00 +d183a8040000000000000000 + +43525 +a2b80000000100000000000005646e732d31056c61646f74026e6c0000010001 +a2b88000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43526 +000000007002faf05a680000020405b401010402 +000080010000000000000000 + +43527 +776a00000001000000000000036e73330767617574656e67026e6c0000010001 +776a80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43528 +20a900000001000000000000036e73340767617574656e67026e6c0000010001 +20a980000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43529 +802100000001000000000000054d4f4c454e0350434d026e6c0000010001 +802180000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +43530 +fa2500000001000000000000054d4f4c454e0350434d026e6c00001c0001 +fa2580000001000000020001054d4f4c454e0350434d026e6c00001c0001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +43531 +963e000000010000000000000377777707726f6e64756974026e6c0000010001 +963e800000010000000200020377777707726f6e64756974026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c018c0100002000100015180000805726f62696ec033c02c00010001000151800004913a1e04c04800010001000151800004913a1a34 + +43532 +42bf0000000100000000000005646e732d31056c61646f74026e6c0000010001 +42bf8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43533 +17a9000000010000000000000b72656b656e6a6572696a6b026e6c00001c0001 +17a9800000010000000200000b72656b656e6a6572696a6b026e6c00001c0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c032 + +43534 +b87a075c5010faf0c7450000000000000000 +b87a80010000000000000000 + +43535 +f7390000000100000000000003706f700b7469626d6f6c656e616172026e6c0000010001 +f7398000000100000002000003706f700b7469626d6f6c656e616172026e6c0000010001c01000020001000151800014036e73310d646e73636f6d656f6e6c696e65c01cc01000020001000151800006036e7333c034 + +43536 +b87a075c5018faf0598400000088bd00000000010001000000000f313432353932393134323239302d330000f900010f313432353932393134323239302d330000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe8d403c500d0003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 +b87a80010000000000000000 + +43537 +9a0e0000000100000000000003444453024e4c00000f0001 +9a0e8000000100000003000303444453024e4c00000f0001c00c00020001000151800017036e733110736361726c65742d696e7465726e6574c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004d5ccc302c04700010001000151800004d5ccc303c05900010001000151800004c277e953 + +43538 +03c400000001000000000000037777770e6172626569647372656368746572026e6c0000010001 +03c480000001000000020000037777770e6172626569647372656368746572026e6c0000010001c0100002000100015180000f04686e73300774697363616c69c01fc0100002000100015180000704686e7331c038 + +43539 +3fe5000000010000000000000f616972706f72742d73657276696365026e6c0000010001 +3fe5800000010000000200020f616972706f72742d73657276696365026e6c0000010001c00c0002000100015180000a036e7331036e7873c01cc00c00020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +43540 +66740000000100000000000003777777056865657273026e6c0000010001 +66748000000100000002000003777777056865657273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c030 + +43541 +baf200000001000000000000096d6d70726f7879303202656f026e6c0000010001 +baf280000001000000020002096d6d70726f7879303202656f026e6c0000010001c01600020001000151800010066d696e6e6965066f6d726f6570c019c0160002000100015180000805726f62696ec034c02d00010001000151800004913a1e04c04900010001000151800004913a1a34 + +43542 +b87a076a5011fae2c6ba0000000000000000 +b87a80010000000000000000 + +43543 +9c7b00000001000000000000036e733109666972737466696e64026e6c0000010001 +9c7b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43544 +58e20000000100000000000005646e732d31056c61646f74026e6c0000010001 +58e28000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43545 +000000007002faf01b310000020405b401010402 +000080010000000000000000 + +43546 +876d00000001000000000000166c6f6f6467696574657276616e76696c73746572656e026e6c0000020001 +876d80000001000000020002166c6f6f6467696574657276616e76696c73746572656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec023c00c00020001000151800006036e7332c03bc03700010001000151800004c29f4906c04f00010001000151800004c29fb004 + +43547 +9cc000000001000000000000036e733203626f73026e6c0000010001 +9cc080000001000000020002036e733203626f73026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004d5881e43c00c00010001000151800004d5139203 + +43548 +4e6000000001000000000000026e7303626f73026e6c0000010001 +4e6080000001000000020002026e7303626f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5881e43c03500010001000151800004d5139203 + +43549 +b87a076b5010fae2c6b90000000000000000 +b87a80010000000000000000 + +43550 +b77d00000001000000000000076e6f7669727573036a6d69026e6c0000260001 +b77d80000001000000020001076e6f7669727573036a6d69026e6c0000260001c01400020001000151800002c00cc0140002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4ce6842 + +43551 +b69f00000001000000000000037777771077696c64657276616e6b696e73697465026e6c0000010001 +b69f80000001000000020000037777771077696c64657276616e6b696e73697465026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c038 + +43552 +b87c49885010faf045e00000000000000000 +b87cc9840000000000000000 + +43553 +b87c49885018faf02e20000000886800000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe8d403c500d0003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 +b87cc9840000000000000000 + +43554 +73b50000000100000000000005646e732d31056c61646f74026e6c0000010001 +73b58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43555 +5bc60000000100000000000010766f726465726d616e317d6d79776562026e6c00000f0001 +5bc68403000100000001000010766f726465726d616e317d6d79776562026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +43556 +8c6400000001000000000000046e73303803777873026e6c0000010001 +8c6480000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +43557 +b87c49965011fae245550000000000000000 +b87cc9940000000000000000 + +43558 +9d3600000001000000000000037777770968756973706c65696e026e6c0000010001 +9d3680000001000000020002037777770968756973706c65696e026e6c0000010001c0100002000100015180000b036e73330474656c65c01ac01000020001000151800006036e7334c032c02e000100010001518000043ed45203c045000100010001518000043ed45204 + +43559 +000000007002faf02f960000020405b401010402 +000080010000000000000000 + +43560 +dbce00000001000000000000036e733209666972737466696e64026e6c0000010001 +dbce80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43561 +b87c49975010fae245540000000000000000 +b87cc9940000000000000000 + +43562 +b87d3c4e5010faf0677e0000000000000000 +b87dbc440000000000000000 + +43563 +b87d3c4e5018faf05abe000000885b00000000010001000000000f313432353932393134323239302d320000f900010f313432353932393134323239302d320000f900ff00000000004c03677373096d6963726f736f667403636f6d00403afe8e403c500e0003000000294e544c4d535350000100000097b208e0030003002600000006000600200000005345525645524442470000 +b87dbc440000000000000000 + +43564 +d34b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +d34b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43565 +1a27000000010000000000000377777707686f746d61696c026e6c0000010001 +1a27800000010000000200000377777707686f746d61696c026e6c0000010001c01000020001000151800011036e733107686f746d61696c03636f6d00c01000020001000151800006036e7333c030 + +43566 +ada20000000100000000000009637962657264756465026e6c00000f0001 +ada28000000100000003000309637962657264756465026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c016c00c0002000100015180000a076e736175746832c032c00c0002000100015180000a076e736175746833c032c02a00010001000151800004d5880c33c04400010001000151800004d5880c3bc05a00010001000151800004d4ccc00b + +43567 +a174000000010000000000000b776f726c646f6e6c696e65026e6c00001c0001 +a174800000010000000300020b776f726c646f6e6c696e65026e6c00001c0001c00c0002000100015180000f04616e73310774697363616c69c018c00c0002000100015180000704616e7332c031c00c0002000100015180001404616e73330a74697363616c696e657402626500c02c00010001000151800004c3f14d38c04700010001000151800004c3f13325 + +43568 +b87d3c5c5011fae266f30000000000000000 +b87dbc540000000000000000 + +43569 +02ab00000001000000000000026e73076e656473746174026e6c0000010001 +02ab80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43570 +a5b90000000100000000000005646e732d31056c61646f74026e6c0000010001 +a5b98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43571 +b87d3c5d5010fae266f20000000000000000 +b87dbc540000000000000000 + +43572 +d7d700000001000000000000066d696e66696e026e6c0000ff0001 +d7d780000001000000020001066d696e66696e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004c2b2a748 + +43573 +2a6800000001000000000000036e7331107365637572656e616d65736572766572026e6c0000010001 +2a6880000001000000020002036e7331107365637572656e616d65736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000442a4f102c0430001000100015180000442a4f105 + +43574 +153400000001000000000000036e7332107365637572656e616d65736572766572026e6c0000010001 +153480000001000000020002036e7332107365637572656e616d65736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0350001000100015180000442a4f102c00c0001000100015180000442a4f105 + +43575 +60aa0000000100000000000005646e732d31056c61646f74026e6c0000010001 +60aa8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43576 +f2e30000000100000000000006636861726973026e6c00000f0001 +f2e38000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43577 +bd8d00000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +bd8d80000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43578 +a9d70000000100000000000005746f706563026e6c0000ff0001 +a9d78000000100000002000005746f706563026e6c0000ff0001c00c0002000100015180000c036e723705692d702d64c012c00c00020001000151800006036e7236c02a + +43579 +eb3f0000000100000000000006726567656c74026e6c0000ff0001 +eb3f8000000100000002000006726567656c74026e6c0000ff0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02b + +43580 +2c120000000100000000000005647330313806787334616c6c026e6c0000010001 +2c128000000100000003000205647330313806787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +43581 +f73f00000001000000000000036e73330767617574656e67026e6c0000010001 +f73f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43582 +71c70000000100000000000005646e732d31056c61646f74026e6c0000010001 +71c78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43583 +c73000000001000000000000036e73340767617574656e67026e6c0000010001 +c73080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43584 +ed34000000010000000000000967656c6468616c656e026e6c00000f0001 +ed34800000010000000200000967656c6468616c656e026e6c00000f0001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +43585 +69f100000001000000000000094d4c424c4f434b4552026e6c0000020001 +69f184030001000000010000094d4c424c4f434b4552026e6c0000020001c01600060001000038400036026e730f646f6d61696e2d7265676973747279c0160a686f73746d6173746572c02d0bf1e540000070800000384000278d0000003840 + +43586 +990500000001000000000000036e733109666972737466696e64026e6c0000010001 +990580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43587 +b6930000000100000000000003777777046f70656c026e6c0000010001 +b6938000000100000002000203777777046f70656c026e6c0000010001c0100002000100015180000c036e73310564656d6f6ec015c01000020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +43588 +1e8d000000010000000000000656424e4554340e61726e6f6c642d73696564736d61026e6c0000010001 +1e8d800000010000000200000656424e4554340e61726e6f6c642d73696564736d61026e6c0000010001c0130002000100015180000d036e7331036b706e036e657400c01300020001000151800006036e7332c03a + +43589 +6bf60000000100000000000005646e732d32056c61646f74026e6c0000010001 +6bf68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43590 +6bf50000000100000000000005646e732d31056c61646f74026e6c0000010001 +6bf58000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43591 +1a200000000100000000000003777777057473636e6c026e6c0000010001 +1a208000000100000002000203777777057473636e6c026e6c0000010001c0100002000100015180000d026e73077374616e6e6574c016c01000020001000151800006036e7332c02dc02a00010001000151800004d5852414c04300010001000151800004d5852418 + +43592 +c71a00000001000000000000036e733209666972737466696e64026e6c0000010001 +c71a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43593 +2fbb0000000100000000000005646e732d31056c61646f74026e6c0000010001 +2fbb8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43594 +8ea5000000010000000000000e656e65726769656f6e6c696f6e65026e6c00000f0001 +8ea5840300010000000100000e656e65726769656f6e6c696f6e65026e6c00000f0001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +43595 +6c670000000100000000000005646e732d31056c61646f74026e6c0000010001 +6c678000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43596 +17cc000000010000000000000662757265617503636461026e6c0000ff0001 +17cc800000010000000200020662757265617503636461026e6c0000ff0001c01300020001000151800009026e730369736dc017c01300020001000151800006036e7332c02ec02b00010001000151800004d994ab02c04000010001000151800004d994ab03 + +43597 +affb00000001000000000000026e730b6973642d686f6c6c616e64026e6c00001c0001 +affb80000001000000020002026e730b6973642d686f6c6c616e64026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5e38d0ac03d00010001000151800004d5e38205 + +43598 +1a0b00000001000000000000036e73320b6973642d686f6c6c616e64026e6c00001c0001 +1a0b80000001000000020002036e73320b6973642d686f6c6c616e64026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc03000010001000151800004d5e38d0ac00c00010001000151800004d5e38205 + +43599 +0a2f00000001000000000000077365796d6f75720b6973642d686f6c6c616e64026e6c00001c0001 +0a2f80000001000000020002077365796d6f75720b6973642d686f6c6c616e64026e6c00001c0001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c03400010001000151800004d5e38d0ac04500010001000151800004d5e38205 + +43600 +2ce10000000100000000000009646f7272657061616c026e6c00000f0001 +2ce18000000100000002000009646f7272657061616c026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c016c00c0002000100015180000704686e7331c02f + +43601 +ac140000000100000000000005646e732d31056c61646f74026e6c0000010001 +ac148000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43602 +9398000000010000000000000b6f7564696e616672696b61026e6c00000f0001 +9398800000010000000200020b6f7564696e616672696b61026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c018c00c0002000100015180001004646e733208636f6e6365707473c018c02c00010001000151800004d5c51c03c04900010001000151800004d5c51e1c + +43603 +1ea900000001000000000000066b61726d6163036d6373026e6c0000ff0001 +1ea980000001000000020001066b61726d6163036d6373026e6c0000ff0001c01300020001000151800005026e73c013c01300020001000151800010036e7332096379626572636f6d6dc017c02b00010001000151800004d5c40185 + +43604 +a1d10000000100000000000005646e732d31056c61646f74026e6c0000010001 +a1d18000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43605 +8b3700000001000000000000026e73027675026e6c0000010001 +8b3780000001000000030003026e73027675026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000a0473746172026373c00fc00f0002000100015180000e036e733107737572666e6574c012c00c0001000100015180000482258104c03400010001000151800004c01fe72ac04a00010001000151800004c0576a65 + +43606 +8f0500000001000000000000056d61696c3207696e666f6e6574026e6c0000010001 +8f0580000001000000020002056d61696c3207696e666f6e6574026e6c0000010001c0120002000100015180000704646e7331c012c0120002000100015180000704646e7332c012c02e00010001000151800004d4bd01c4c04100010001000151800004d4bd7f83 + +43607 +f568000000010000000000000377777706766961766961026e6c0000010001 +f568800000010000000200020377777706766961766961026e6c0000010001c01000020001000151800009026e730369736dc017c01000020001000151800006036e7332c02ec02b00010001000151800004d994ab02c04000010001000151800004d994ab03 + +43608 +8f030000000100000000000005646e732d31056c61646f74026e6c0000010001 +8f038000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43609 +37480000000100000000000005646e732d31056c61646f74026e6c0000010001 +37488000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43610 +1db6000000010000000000000670726f646973056e76776d6e026e6c0000010001 +1db6800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +43611 +25460000000100000000000003737477026e6c0000ff0001 +25468000000100000002000203737477026e6c0000ff0001c00c000200010001518000070469726973c00cc00c0002000100015180000e036e733107737572666e6574c010c02400010001000151800004c3a95a82c03700010001000151800004c0576a65 + +43612 +0e6d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +0e6d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43613 +ffd2000000010000000000000a6d61696c73657276657204656d6973026e6c0000010001 +ffd2800000010000000200000a6d61696c73657276657204656d6973026e6c0000010001c0170002000100015180000b026e73026e6c036e657400c0170002000100015180001206617574683630026e73026e6c027575c036 + +43614 +9df1000000010000000000000377777710766f73656e7465727461696e6d656e74026e6c0000010001 +9df1800000010000000200000377777710766f73656e7465727461696e6d656e74026e6c0000010001c01000020001000151800017036e73310d666173747365727665726e6c32036e657400c01000020001000151800006036e7332c039 + +43615 +411d00000001000000000000036e73320d7061676570726f636573736f72026e6c0000010001 +411d80000001000000030001036e73320d7061676570726f636573736f72026e6c0000010001c0100002000100015180000d026e7307706167656e6963c01ec01000020001000151800006036e7332c035c0100002000100015180000d036e73320663617374656cc01ec05d00010001000151800004c3558245 + +43616 +9d4b00000001000000000000026e730d7061676570726f636573736f72026e6c0000010001 +9d4b80000001000000030001026e730d7061676570726f636573736f72026e6c0000010001c00f0002000100015180000d026e7307706167656e6963c01dc00f00020001000151800006036e7332c034c00f0002000100015180000d036e73320663617374656cc01dc05c00010001000151800004c3558245 + +43617 +9ef8000000010000000000003b6c6f6f6e76657270616b6b656e2d736163686574732d626c6973746572732d76657273747569766572732d666c61636f6e732d6165726f736f6c73026e6c0000020001 +9ef8800000010000000200023b6c6f6f6e76657270616b6b656e2d736163686574732d626c6973746572732d76657273747569766572732d666c61636f6e732d6165726f736f6c73026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec048c00c00020001000151800006036e7332c060c05c00010001000151800004c29f4906c07400010001000151800004c29fb004 + +43618 +f253000000010000000000000c61616e6e656d6572626f7574026e6c0000ff0001 +f253800000010000000300010c61616e6e656d6572626f7574026e6c0000ff0001c00c0002000100015180000d026e7307696e746f756368c019c00c00020001000151800010026e7307696e746f756368036e657400c00c00020001000151800007046e733031c049c02d00010001000151800004d413c001 + +43619 +f83100100001000000000001036e733503777873026e6c00000100010000290800000000000000 +f83180000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +43620 +ce7700000001000000000000085453434c49454e5406444e53424441024e4c0000010001 +ce7784030001000000010000085453434c49454e5406444e53424441024e4c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +43621 +54750000000100000000000006636861726973026e6c00001c0001 +54758000000100000002000006636861726973026e6c00001c0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43622 +c0b700000001000000000000037777770766757863617073026e6c0000010001 +c0b780000001000000020000037777770766757863617073026e6c0000010001c01000020001000151800013026e730a646168686f7374696e6703636f6d00c01000020001000151800006036e7332c02f + +43623 +ca1a00000001000000000000036e733103636865026e6c0000010001 +ca1a80000001000000020002036e733103636865026e6c0000010001c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004c2ab59fdc03600010001000151800004c0576a65 + +43624 +3db100000001000000000000036e733203636865026e6c0000010001 +3db180000001000000020002036e733203636865026e6c0000010001c01000020001000151800006036e7331c010c0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004c2ab59fdc03a00010001000151800004c0576a65 + +43625 +2700000000010000000000000670726f646973056e76776d6e026e6c0000010001 +2700800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +43626 +6f3a000000010000000000000377777707746f7063617368026e6c0000010001 +6f3a800000010000000200020377777707746f7063617368026e6c0000010001c01000020001000151800011036e73310a686f73746d6173746572c018c01000020001000151800006036e7332c030c02c0001000100015180000452c04516c0490001000100015180000452c04542 + +43627 +047d000000010000000000000377777709706f7070656570657203636f6d096472616368746e6574026e6c00001c0001 +047d840300010000000100000377777709706f7070656570657203636f6d096472616368746e6574026e6c00001c0001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +43628 +5cd70000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +5cd78000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43629 +39e000000001000000000000066c656e6e6570026e6c00000f0001 +39e080000001000000020002066c656e6e6570026e6c00000f0001c00c0002000100015180000e036e733107656c63616e6574c013c00c00020001000151800006036e7332c02bc02700010001000151800004c1ac2d36c04100010001000151800004c1ac2d35 + +43630 +185600000001000000000000076e73617574683103626974026e6c0000010001 +185680000001000000030003076e73617574683103626974026e6c0000010001c01400020001000151800002c00cc0140002000100015180000a076e736175746832c014c0140002000100015180000a076e736175746833c014c00c00010001000151800004d5880c33c03a00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +43631 +861b00000001000000000000076e73617574683203626974026e6c0000010001 +861b80000001000000030003076e73617574683203626974026e6c0000010001c0140002000100015180000a076e736175746831c014c01400020001000151800002c00cc0140002000100015180000a076e736175746833c014c02c00010001000151800004d5880c33c00c00010001000151800004d5880c3bc05000010001000151800004d4ccc00b + +43632 +d7130000000100000000000003706f70086765617274736a65026e6c0000010001 +d7138000000100000002000003706f70086765617274736a65026e6c0000010001c01000020001000151800014036e73310a6272696e6b686f737432036e657400c01000020001000151800006036e7332c031 + +43633 +98f40000000100000000000008706f6c697469656b0b7a6f7267706f727461616c026e6c0000010001 +98f48000000100000003000308706f6c697469656b0b7a6f7267706f727461616c026e6c0000010001c015000200010001518000110161026e7309636f6d626f64617461c021c015000200010001518000040162c037c015000200010001518000040163c037c03500010001000151800004d5de0b44c05200010001000151800004d5de0b45c06200010001000151800004d5de0b4e + +43634 +911700000001000000000000037330320474657261026e6c00000f0001 +911780000001000000030002037330320474657261026e6c00000f0001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +43635 +a40100000001000000000000036e733503777873026e6c0000010001 +a40180000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43636 +09dd0000000100000000000012676c6f62616c2d73706f7274732d636f6d6d026e6c0000ff0001 +09dd8000000100000002000012676c6f62616c2d73706f7274732d636f6d6d026e6c0000ff0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03e + +43637 +c3c00000000100000000000007646f6c66696a6e026e6c0000ff0001 +c3c08000000100000003000307646f6c66696a6e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +43638 +5106000000010000000000000f73686f776b6f72707364696e647561026e6c00000f0001 +5106800000010000000200000f73686f776b6f72707364696e647561026e6c00000f0001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c036 + +43639 +584900000001000000000000037777770d7365782d617274696b656c656e026e6c0000010001 +584980000001000000020002037777770d7365782d617274696b656c656e026e6c0000010001c01000020001000151800011026e730b6973642d686f6c6c616e64c01ec01000020001000151800006036e7332c035c03200010001000151800004d5e38d0ac04f00010001000151800004d5e38205 + +43640 +58ea00000001000000000000037777770f726f6164696e7374616c6c61746965026e6c0000010001 +58ea80000001000000020001037777770f726f6164696e7374616c6c61746965026e6c0000010001c0100002000100015180000a036e733303777873c020c01000020001000151800006036e7334c038c04a00010001000151800004d5ef9a65 + +43641 +13ec00000001000000000000037777770f726f6164696e7374616c6c61746965026e6c0000010001 +13ec80000001000000020001037777770f726f6164696e7374616c6c61746965026e6c0000010001c0100002000100015180000a036e733303777873c020c01000020001000151800006036e7334c038c04a00010001000151800004d5ef9a65 + +43642 +d71b00000001000000000000036d783103626974026e6c0000010001 +d71b80000001000000030003036d783103626974026e6c0000010001c0100002000100015180000a076e736175746831c010c0100002000100015180000a076e736175746832c010c0100002000100015180000a076e736175746833c010c02800010001000151800004d5880c33c03e00010001000151800004d5880c3bc05400010001000151800004d4ccc00b + +43643 +5111000000010000000000000377777706707261786973026e6c0000010001 +5111800000010000000300030377777706707261786973026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c017c01000020001000151800006036e7332c02fc01000020001000151800006036e7333c02fc02b00010001000151800004c3f13ceec04700010001000151800004c372eb43c059000100010001518000043e320e8f + +43644 +2270000000010000000000000668656c69756d056964657461026e6c0000010001 +2270800000010000000300030668656c69756d056964657461026e6c0000010001c01300020001000151800010036e7331096d61726b6772616166c019c01300020001000151800006036e7332c031c01300020001000151800006036e7333c031c02d00010001000151800004c3f13ceec04900010001000151800004c372eb43c05b000100010001518000043e320e8f + +43645 +542d00000001000000000000037777770d6772617469736d6f6b6b656c73026e6c0000010001 +542d80000001000000020000037777770d6772617469736d6f6b6b656c73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c035 + +43646 +bfe500000001000000000000037777770b7365612d6578616d656e73026e6c0000010001 +bfe580000001000000020002037777770b7365612d6578616d656e73026e6c0000010001c0100002000100015180000d026e730763697374726f6ec01cc01000020001000151800006036e7332c033c030000100010001518000043ed81f37c049000100010001518000043ed81f38 + +43647 +53070000000100000000000008776f726d686f6c65056172637573026e6c0000010001 +53078000000100000002000108776f726d686f6c65056172637573026e6c0000010001c01500020001000151800002c00cc0150002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2b28701 + +43648 +1c9c0000000100000000000008776f726d686f6c65056172637573026e6c0000260001 +1c9c8000000100000002000108776f726d686f6c65056172637573026e6c0000260001c01500020001000151800002c00cc0150002000100015180000b026e73026e6c036e657400c00c00010001000151800004c2b28701 + +43649 +1e6d0000000100000000000008686f73746e616d650462696e640000100003 +1e6d8000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +43650 +de1400000001000000000000036e733109666972737466696e64026e6c0000010001 +de1480000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43651 +fc6300000001000000000000036e733209666972737466696e64026e6c0000010001 +fc6380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43652 +84c228000001000200000000026e6c0000060001056c75786f7208696e7465726e6574026e6c00000500fe000000000000c01400010001000000000004c0a80128 +84c2a8040000000000000000 + +43653 +90ba0000000100000000000005646e732d31056c61646f74026e6c0000010001 +90ba8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43654 +3e0b0000000100000000000005646e732d32056c61646f74026e6c0000010001 +3e0b8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43655 +22ea000000010000000000000a736572766f2d77726170026e6c00000f0001 +22ea800000010000000200020a736572766f2d77726170026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec017c00c00020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +43656 +0000000070024000eb4a0000020405b401010402 +000080010000000000000000 + +43657 +223c00000001000000000000106c6f6f6e77616172646566696c746572026e6c0000020001 +223c80000001000000020002106c6f6f6e77616172646566696c746572026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01dc00c00020001000151800006036e7332c035c03100010001000151800004c29f4906c04900010001000151800004c29fb004 + +43658 +0a570000000100000000000006756e696d6f670475726c73026e6c0000010001 +0a578000000100000002000206756e696d6f670475726c73026e6c0000010001c01300020001000151800012036e73350b73696c766572706f696e74c018c01300020001000151800006036e7336c030c02c0001000100015180000450f7c702c04a0001000100015180000450f7c602 + +43659 +b87f0582501005b494490000000000000000 +b87f80010000000000000000 + +43660 +b87f058250184470519b0000008cc780000000010001000000000f313036353135313838393432362d330000f900010f313036353135313838393432362d330000f900ff00000000005003677373096d6963726f736f667403636f6d00403af2f9403c447900030000002d4e544c4d535350000100000097b200e0080008002500000005000500200000004c55584f52494e5445524e45540000 +b87f80010000000000000000 + +43661 +c0fb00000001000000000000037777770d7569746761616e736b72616e74026e6c0000010001 +c0fb80000001000000020002037777770d7569746761616e736b72616e74026e6c0000010001c01000020001000151800015036e73310e726567696f70726f766964657273c01ec01000020001000151800006036e7332c036c03200010001000151800004d41da001c05300010001000151800004d41da1fe + +43662 +67ff0000000100000000000003777777076a6f62706f6f6c026e6c0000010001 +67ff8000000100000003000203777777076a6f62706f6f6c026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +43663 +87fe0000000100000000000006776468303131066e7434616c6c026e6c0000010001 +87fe8000000100000002000206776468303131066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +43664 +349200000001000000000000037777770477636373026e6c0000010001 +349280000001000000020000037777770477636373026e6c0000010001c01000020001000151800016036e73310c776f726c6477696465646e73036e657400c01000020001000151800006036e7332c02d + +43665 +9f7300000001000000000000036e73310b64696e65726f6e6c696e65026e6c0000010001 +9f7380000001000000020002036e73310b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43666 +41e600000001000000000000036e73320b64696e65726f6e6c696e65026e6c0000010001 +41e680000001000000020002036e73320b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43667 +1a6100000001000000000000036e73330b64696e65726f6e6c696e65026e6c0000010001 +1a6180000001000000020002036e73330b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43668 +00000000700240000e870000020405b401010402 +000080010000000000000000 + +43669 +b87f97b7501005b425500000000000000000 + + +43670 +b87f97b75018447052630000008c58c0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403af2f9403c447900030000002d4e544c4d535350000100000097b200e0080008002500000005000500200000004c55584f52494e5445524e45540000 + + +43671 +69ed00000001000000000000037777770b6e69657577756262656e61026e6c0000010001 +69ed80000001000000020000037777770b6e69657577756262656e61026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +43672 +aea200000001000000000000036e733109666972737466696e64026e6c0000010001 +aea280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43673 +09ab00000001000000000000066d61696c6d65026e6c00000f0001 +09ab80000001000000030002066d61696c6d65026e6c00000f0001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +43674 +8b3f00000001000000000000036e733209666972737466696e64026e6c0000010001 +8b3f80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43675 +0e9f00000001000000000000076172626f726973026e6c00000f0001 +0e9f80000001000000020002076172626f726973026e6c00000f0001c00c00020001000151800011036e73310a666f726d6d61696c6572c014c00c00020001000151800006036e7332c02cc028000100010001518000045054f5d7c045000100010001518000045054f5d8 + +43676 +256900000001000000000000044b656e47026e6c00000f0001 +256980000001000000020002044b656e47026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec011c00c00020001000151800006036e7332c029c02500010001000151800004c29f4906c03d00010001000151800004c29fb004 + +43677 +e8b30000000100000000000005646168627606787334616c6c026e6c0000010001 +e8b38000000100000003000205646168627606787334616c6c026e6c0000010001c01200020001000151800005026e73c012c01200020001000151800006036e7332c012c0120002000100015180000d026e730472697065036e657400c02d00010001000151800004c26d0642c03e00010001000151800004c26d0963 + +43678 +dc0200000001000000000000095f6b65726265726f73045f7463700b626973677665726f6c6d65026e6c0000060001 +dc0284030001000000010000095f6b65726265726f73045f7463700b626973677665726f6c6d65026e6c0000060001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +43679 +6d2d0000000100000000000003777777076564692d746965026e6c0000010001 +6d2d8000000100000002000203777777076564692d746965026e6c0000010001c0100002000100015180000c036e73310563736e6574c018c01000020001000151800006036e7332c030c02c00010001000151800004c2451012c04400010001000151800004c2451212 + +43680 +1c0300000001000000000000066272756e656c026e6c0000ff0001 +1c0380000001000000020000066272756e656c026e6c0000ff0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02a + +43681 +7c5f00000001000000000000026e73076e656473746174026e6c00001c0001 +7c5f80000001000000020002026e73076e656473746174026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43682 +301d00000001000000000000036e7332076e656473746174026e6c0000010001 +301d80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43683 +f16a00000001000000000000036e7332076e656473746174026e6c00001c0001 +f16a80000001000000020002036e7332076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43684 +4cab00000001000000000000036e7333076e656473746174026e6c00001c0001 +4cab80000001000000020002036e7333076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +43685 +566f00000001000000000000036e7334076e656473746174026e6c0000010001 +566f80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43686 +e81300000001000000000000036e7334076e656473746174026e6c00001c0001 +e81380000001000000020002036e7334076e656473746174026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43687 +533e00000001000000000000036e733103696e67026e6c00001c0001 +533e80000001000000020002036e733103696e67026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +43688 +c9b300000001000000000000036e733203696e67026e6c00001c0001 +c9b380000001000000020002036e733203696e67026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +43689 +a39a00000001000000000000036e733103696e67026e6c0000260001 +a39a80000001000000020002036e733103696e67026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000491dd19c2c0360001000100015180000491dd5dc2 + +43690 +af4700000001000000000000036e733203696e67026e6c0000260001 +af4780000001000000020002036e733203696e67026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0280001000100015180000491dd19c2c00c0001000100015180000491dd5dc2 + +43691 +64ed00000001000000000000086c6f67696e6e65740870617373706f727403636f6d096472616368746e6574026e6c00001c0001 +64ed84030001000000010000086c6f67696e6e65740870617373706f727403636f6d096472616368746e6574026e6c00001c0001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +43692 +a2b300000001000000000000066f7a77617265026e6c0000010001 +a2b380000001000000020000066f7a77617265026e6c0000010001c00c00020001000151800011026e7308786c736572766572036e657400c00c00020001000151800006036e7332c02a + +43693 +fa10000000010000000000000767657069646165026e6c0000010001 +fa10800000010000000200020767657069646165026e6c0000010001c00c0002000100015180000a036e7331036e7873c014c00c00020001000151800006036e7332c02cc02800010001000151800004d973c015c03e00010001000151800004d973c102 + +43694 +8d52000000010000000000000e6c697474656e736572616469656c026e6c0000010001 +8d52800000010000000200020e6c697474656e736572616469656c026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc01bc00c00020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +43695 +fdf6000000010000000000000377777711726f656c6f6673726163696e677465616d026e6c0000010001 +fdf6800000010000000200000377777711726f656c6f6673726163696e677465616d026e6c0000010001c0100002000100015180000c026e7306766576696461c022c01000020001000151800006036e7332c039 + +43696 +1faa28000001000000010000026e6c0000060001095f6b65726265726f73045f7463700b626973677665726f6c6d65026e6c00002100010000025800220000006400580b64632d68756e74736d616e0b626973677665726f6c6d65026e6c00 +1faaa8040000000000000000 + +43697 +519c000000010000000000000377777709737461727467696473026e6c0000010001 +519c800000010000000200020377777709737461727467696473026e6c0000010001c01000020001000151800010036e7331096e65746e6174696f6ec01ac01000020001000151800006036e7332c032c02e00010001000151800004d5efb105c04a00010001000151800004505faa0a + +43698 +da7d0000000100000000000003646d69087a776f6c73776562026e6c0000010001 +da7d8000000100000002000003646d69087a776f6c73776562026e6c0000010001c01000020001000151800013036e733009696e7465726c697a65036e657400c01000020001000151800006036e7331c031 + +43699 +000000007002faf0bdf60000020405b401010402 +000080010000000000000000 + +43700 +26c000000001000000000000036e73300461736d6c024e4c0000010001 +26c080000001000000030001036e73300461736d6c024e4c0000010001c01000020001000151800002c00cc0100002000100015180000d026e730461736d6c03636f6d00c01000020001000151800006036e7331c03ac00c00010001000151800004c26979c2 + +43701 +547c0000000100000000000007646f6364617461026e6c00000f0001 +547c8000000100000002000007646f6364617461026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c014c00c0002000100015180000704686e7331c02d + +43702 +50d200000001000000000000037777770a74726176656c63697479026e6c0000010001 +50d280000001000000020002037777770a74726176656c63697479026e6c0000010001c0100002000100015180000d04646e733105692d702d64c01bc0100002000100015180000704646e7332c034c02f00010001000151800004d9124003c04800010001000151800004d9124104 + +43703 +f0f00000000100000000000003656465026e6c00000f0001 +f0f08000000100000002000103656465026e6c00000f0001c00c00020001000151800006036e7331c00cc00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c02400010001000151800004d5a0fd2a + +43704 +b8807c0e5010faf0b61b0000000000000000 +b880fc040000000000000000 + +43705 +863500000001000000000000036e733303777873026e6c0000010001 +863580000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43706 +b8807c0e5018faf0e626000000950d40000000010001000000000f313231393737303731323038322d330000f900010f313231393737303731323038322d330000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd8a403c4f0a0003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 +b880fc040000000000000000 + +43707 +bf3f000000010000000000000964636e6c646d7a30320f6461696d6c657263687279736c6572026e6c0000010001 +bf3f800000010000000200010964636e6c646d7a30320f6461696d6c657263687279736c6572026e6c0000010001c01600020001000151800002c00cc0160002000100015180000b026e73026e6c036e657400c00c00010001000151800004c14e3f46 + +43708 +a0c2000000010000000000000a6265746572686f72656e026e6c00000f0001 +a0c2800000010000000200010a6265746572686f72656e026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c017c04400010001000151800004c2860043 + +43709 +b8807c1c5011fae2b5830000000000000000 +b880fc140000000000000000 + +43710 +000000007002faf0c3a40000020405b401010402 +000080010000000000000000 + +43711 +b8807c1d5010fae2b5820000000000000000 +b880fc140000000000000000 + +43712 +b88124355010faf013a20000000000000000 +b881a4330000000000000000 + +43713 +b88124355018faf0e66d000000956b80000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd8a403c4f0a0003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 +b881a4330000000000000000 + +43714 +21c200000001000000000000037777770a706f7374657273616c65026e6c0000010001 +21c280000001000000020002037777770a706f7374657273616c65026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +43715 +98c20000000100000000000004646e73320471776562026e6c0000010001 +98c28000000100000002000204646e73320471776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +43716 +d1160000000100000000000004646e73310471776562026e6c0000010001 +d1168000000100000002000204646e73310471776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +43717 +93c30000000100000000000004646e73310471776562026e6c00001c0001 +93c38000000100000002000204646e73310471776562026e6c00001c0001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +43718 +e02c0000000100000000000004646e73310471776562026e6c0000260001 +e02c8000000100000002000204646e73310471776562026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +43719 +9fb30000000100000000000004646e73320471776562026e6c00001c0001 +9fb38000000100000002000204646e73320471776562026e6c00001c0001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +43720 +8b860000000100000000000004646e73320471776562026e6c0000260001 +8b868000000100000002000204646e73320471776562026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +43721 +b88124435011fae2130a0000000000000000 +b881a4430000000000000000 + +43722 +000000007002faf018ba0000020405b401010402 +000080010000000000000000 + +43723 +02490000000100000000000005646e732d31056c61646f74026e6c0000010001 +02498000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43724 +b88124445010fae213090000000000000000 +b881a4430000000000000000 + +43725 +c50d0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c50d8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43726 +b881d8d95010faf0b4120000000000000000 + + +43727 +d8510000000100000000000007636e766469626f026e6c0000010001 +d8518000000100000002000207636e766469626f026e6c0000010001c00c0002000100015180000c046e7330310462696374c014c00c00020001000151800007046e733032c02dc02800010001000151800004d413d6c8c04000010001000151800004d413d604 + +43728 +b881d8d95018faf04ede00000095a380000000010001000000000f313231393737303731323038322d320000f900010f313231393737303731323038322d320000f900ff00000000005903677373096d6963726f736f667403636f6d00403afd8a403c4f0a0003000000364e544c4d535350000100000097b208e00b000b002b0000000b000b002000000044432d48554e54534d414e424953475645524f4c4d450000 + + +43729 +ba7500000001000000000000027464076368656d70726f026e6c0000060001 +ba7584030001000000010000027464076368656d70726f026e6c0000060001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +43730 +b22300000001000000000000037777770672686d776562026e6c0000010001 +b22380000001000000030002037777770672686d776562026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +43731 +b881d8e75011fae2b37a0000000000000000 + + +43732 +b40300000001000000000000067369746573310d696e7465727265676973746572026e6c0000010001 +b40380000001000000020000067369746573310d696e7465727265676973746572026e6c0000010001c01300020001000151800017036e73310d696e746572726567697374657203636f6d00c01300020001000151800006036e7332c039 + +43733 +4e1e000000010000000000000377777710686f656b737472616a7577656c696572026e6c0000010001 +4e1e800000010000000200020377777710686f656b737472616a7577656c696572026e6c0000010001c0100002000100015180000a026e730469636d63c021c01000020001000151800006036e7332c038c035000100010001518000043e643805c04b000100010001518000043e643806 + +43734 +be620000000100000000000008616c6c6f6365616e026e6c0000ff0001 +be628000000100000002000208616c6c6f6365616e026e6c0000ff0001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +43735 +b881d8e85010fae2b3790000000000000000 + + +43736 +7af000000001000000000000046d61696c07646f6364617461026e6c0000010001 +7af080000001000000020000046d61696c07646f6364617461026e6c0000010001c0110002000100015180000f04686e73300774697363616c69c019c0110002000100015180000704686e7331c032 + +43737 +3337000000010000000000001764656e6174696f6e616c65766163617475726562616e6b026e6c0000010001 +3337800000010000000300021764656e6174696f6e616c65766163617475726562616e6b026e6c0000010001c00c0002000100015180000d036e733106776964657873c024c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c03cc03800010001000151800004d4ccc0fcc06d000100010001518000043efa0703 + +43738 +78ba0000000100000000000003777777056c6572656e026e6c0000010001 +78ba8000000100000002000203777777056c6572656e026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +43739 +5e8d0000000100000000000008756d636e6574303203617a6e026e6c00001c0001 +5e8d8000000100000003000308756d636e6574303203617a6e026e6c00001c0001c0150002000100015180000b08756d636e65743031c015c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483aedc02c00c0001000100015180000483aee402c05200010001000151800004c0576a65 + +43740 +a27b0000000100000000000008756d636e6574303203617a6e026e6c0000260001 +a27b8000000100000003000308756d636e6574303203617a6e026e6c0000260001c0150002000100015180000b08756d636e65743031c015c01500020001000151800002c00cc0150002000100015180000e036e733107737572666e6574c019c02d0001000100015180000483aedc02c00c0001000100015180000483aee402c05200010001000151800004c0576a65 + +43741 +4d580000000100000000000008756d636e6574303103617a6e026e6c00001c0001 +4d588000000100000003000308756d636e6574303103617a6e026e6c00001c0001c01500020001000151800002c00cc0150002000100015180000b08756d636e65743032c015c0150002000100015180000e036e733107737572666e6574c019c00c0001000100015180000483aedc02c03b0001000100015180000483aee402c05200010001000151800004c0576a65 + +43742 +85d70000000100000000000008756d636e6574303103617a6e026e6c0000260001 +85d78000000100000003000308756d636e6574303103617a6e026e6c0000260001c01500020001000151800002c00cc0150002000100015180000b08756d636e65743032c015c0150002000100015180000e036e733107737572666e6574c019c00c0001000100015180000483aedc02c03b0001000100015180000483aee402c05200010001000151800004c0576a65 + +43743 +17d800100001000000000001036e7334076e656473746174026e6c00000100010000290800000080000000 +17d880000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +43744 +70ef00100001000000000001036e7332076e656473746174026e6c00000100010000290800000080000000 +70ef80000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +43745 +2e1d0000000100000000000004736d74700763697479616972026e6c0000010001 +2e1d8000000100000002000004736d74700763697479616972026e6c0000010001c01100020001000151800018036e73310e66696e616c2d66726f6e74696572036e657400c01100020001000151800006036e7332c031 + +43746 +798000000001000000000000037777770d6b6c65696e6b6170697461616c026e6c0000010001 +798080000001000000030002037777770d6b6c65696e6b6170697461616c026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +43747 +ca7a00000001000000000000037777770961657363756c616170026e6c0000010001 +ca7a80000001000000020002037777770961657363756c616170026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c01ac01000020001000151800006036e7332c031c02e00010001000151800004c3402003c04700010001000151800004c340202b + +43748 +66e000000001000000000000037777770e646174696e672d73657276696365026e6c0000010001 +66e080000001000000020002037777770e646174696e672d73657276696365026e6c0000010001c0100002000100015180000b026e730564616e6479c01fc01000020001000151800006036e7332c036c03300010001000151800004c1ad2b11c04a00010001000151800004d50abe20 + +43749 +6a56000000010000000000000a70696e6b656c6f746a65076265676865796e026e6c0000010001 +6a56800000010000000200000a70696e6b656c6f746a65076265676865796e026e6c0000010001c01700020001000151800012026e7309686f7374696e673475036e657400c01700020001000151800006036e7332c036 + +43750 +776f00000001000000000000036e733109666972737466696e64026e6c0000010001 +776f80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43751 +4c7300000001000000000000036e733209666972737466696e64026e6c0000010001 +4c7380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43752 +129600000001000000000000026e73076e656473746174026e6c0000010001 +129680000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43753 +541b0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +541b8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +43754 +333000000001000000000000037777770473757266026e6c0000010001 +333080000001000000030003037777770473757266026e6c0000010001c0100002000100015180000f036e7331086d6f746966616374c015c01000020001000151800006036e7332c02dc0100002000100015180000e036e733207737572666e6574c015c02900010001000151800004d44ebd9dc04400010001000151800004d44ebd9ec05600010001000151800004c0572402 + +43755 +1ea700000001000000000000036e733109666972737466696e64026e6c0000010001 +1ea780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43756 +25b400000001000000000000036e733209666972737466696e64026e6c0000010001 +25b480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43757 +2f1c00000001000000000000086d6972726f72656407666c6162626572026e6c0000010001 +2f1c80000001000000030002086d6972726f72656407666c6162626572026e6c0000010001c0150002000100015180000d036e733106776964657873c01dc01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +43758 +34c50000000100000000000008616473657276657206776562616473026e6c0000010001 +34c58000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +43759 +a8860000000100000000000006636861726973026e6c00000f0001 +a8868000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43760 +8ca200000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +8ca280000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +43761 +c65100000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +c65180000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +43762 +db900000000100000000000003777777117665726f756465726465766c6f6572656e026e6c0000010001 +db908000000100000002000203777777117665726f756465726465766c6f6572656e026e6c0000010001c01000020001000151800012036e73310b736c61636b736572766572c022c01000020001000151800006036e7332c03ac036000100010001518000043ed444c0c054000100010001518000043ed44d0a + +43763 +4e8000000001000000000000046164737004696c7365026e6c0000010001 +4e8080000001000000030003046164737004696c7365026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02a000100010001518000043e45a282c03c000100010001518000043e45a283c04e000100010001518000043e45a284 + +43764 +e63a00000001000000000000037777770b666c616262657267617374026e6c0000010001 +e63a84030001000000010000037777770b666c616262657267617374026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +43765 +0e5200000001000000000000037777770674726f66656f026e6c0000010001 +0e5280000001000000020001037777770674726f66656f026e6c0000010001c0100002000100015180000a036e733303777873c017c01000020001000151800006036e7334c02fc04100010001000151800004d5ef9a65 + +43766 +9725000000010000000000000550432d3132186d74646c616e64736368617073617263686974656374656e026e6c0000010001 +9725800000010000000200020550432d3132186d74646c616e64736368617073617263686974656374656e026e6c0000010001c0120002000100015180000c026e7306787334616c6cc02bc01200020001000151800006036e7332c042c03f00010001000151800004c26d0642c05700010001000151800004c26d0963 + +43767 +f3e5000000010000000000000450433138186d74646c616e64736368617073617263686974656374656e026e6c0000010001 +f3e5800000010000000200020450433138186d74646c616e64736368617073617263686974656374656e026e6c0000010001c0110002000100015180000c026e7306787334616c6cc02ac01100020001000151800006036e7332c041c03e00010001000151800004c26d0642c05600010001000151800004c26d0963 + +43768 +43b6000000010000000000000d6138302d3132362d32372d3537046164736c06787334616c6c026e6c0000010001 +43b6800000010000000300020d6138302d3132362d32372d3537046164736c06787334616c6c026e6c0000010001c01f00020001000151800005026e73c01fc01f00020001000151800006036e7332c01fc01f0002000100015180000d026e730472697065036e657400c03a00010001000151800004c26d0642c04b00010001000151800004c26d0963 + +43769 +187c000000010000000000000b68756e6b656d6f6c6c6572026e6c0000010001 +187c800000010000000300030b68756e6b656d6f6c6c6572026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004c3f13ceec04800010001000151800004c372eb43c05a000100010001518000043e320e8f + +43770 +50fe00000001000000000000036e733206766576696461026e6c0000010001 +50fe80000001000000030002036e733206766576696461026e6c0000010001c0100002000100015180000d036e733106776964657873c017c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02fc02b00010001000151800004d4ccc0fcc060000100010001518000043efa0703 + +43771 +078a000000010000000000000866616c6c6261636b067874646e6574026e6c0000010001 +078a800000010000000200020866616c6c6261636b067874646e6574026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800006036e7331c015c03000010001000151800004c16e9d02c04100010001000151800004d9cc165f + +43772 +a8d00000000100000000000004736d7470067874646e6574026e6c0000010001 +a8d08000000100000002000204736d7470067874646e6574026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7331c011c02c00010001000151800004c16e9d02c03d00010001000151800004d9cc165f + +43773 +254700000001000000000000037777770472696765026e6c0000010001 +254780000001000000020002037777770472696765026e6c0000010001c0100002000100015180000c036e733105636176656fc015c01000020001000151800006036e7332c02dc029000100010001518000045112a002c041000100010001518000045112a102 + +43774 +d55b000000010000000000000866616c6c6261636b046d61696c06776964657873026e6c0000010001 +d55b800000010000000300020866616c6c6261636b046d61696c06776964657873026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800010036e733206776964657873036e657400c01a00020001000151800006036e7333c01ac03500010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +43775 +178b000000010000000000000377777710736f6c6c6963697461746965696e666f026e6c0000010001 +178b800000010000000200020377777710736f6c6c6963697461746965696e666f026e6c0000010001c0100002000100015180000f026e7309656174736572766572c021c01000020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +43776 +d11a000000010000000000000377777708636c69636b666565026e6c0000010001 +d11a800000010000000200020377777708636c69636b666565026e6c0000010001c0100002000100015180000b036e7331046e732d31c019c01000020001000151800006036e7332c031c02d000100010001518000045045a0cdc04400010001000151800004d4cceec8 + +43777 +2da0000000010000000000000874726f7577776562026e6c0000010001 +2da0800000010000000300030874726f7577776562026e6c0000010001c00c0002000100015180000e076e73617574683103626974c015c00c0002000100015180000a076e736175746832c031c00c0002000100015180000a076e736175746833c031c02900010001000151800004d5880c33c04300010001000151800004d5880c3bc05900010001000151800004d4ccc00b + +43778 +183100000001000000000000126c6f6f706261616e6f7269656e7461746965026e6c0000020001 +183180000001000000020002126c6f6f706261616e6f7269656e7461746965026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01fc00c00020001000151800006036e7332c037c03300010001000151800004c29f4906c04b00010001000151800004c29fb004 + +43779 +e1f000000001000000000000036e733107686f7374696e6703656269026e6c0000010001 +e1f080000001000000020001036e733107686f7374696e6703656269026e6c0000010001c01800020001000151800002c00cc0180002000100015180000d03646e73036b706e03636f6d00c00c00010001000151800004c1ad9c46 + +43780 +88c20000000100000000000009686f636f7061727473026e6c00000f0001 +88c28000000100000002000209686f636f7061727473026e6c00000f0001c00c00020001000151800012036e73310b676c6f62616c7369746573c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d4cce37ac04800010001000151800004d94d8b0c + +43781 +f2e300000001000000000000037777770472656e7a026e6c0000010001 +f2e380000001000000030003037777770472656e7a026e6c0000010001c0100002000100015180000e076e73617574683103626974c015c0100002000100015180000a076e736175746832c031c0100002000100015180000a076e736175746833c031c02900010001000151800004d5880c33c04300010001000151800004d5880c3bc05900010001000151800004d4ccc00b + +43782 +4df400000001000000000000046d61696c0c776f6f72646c6f6f69657273026e6c0000010001 +4df480000001000000020002046d61696c0c776f6f72646c6f6f69657273026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01ec01100020001000151800006036e7332c035c03200010001000151800004d4cb0e42c04d00010001000151800004d4cb1221 + +43783 +424500000001000000000000037777770473696d61026e6c0000010001 +424580000001000000020002037777770473696d61026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c015c01000020001000151800006036e7332c02dc02900010001000151800004d43d0f08c04700010001000151800004d43d19e2 + +43784 +51c90010000100000000000105737461747308626f6f6b696e6773026e6c00000100010000290800000080000000 +51c98000000100000002000205737461747308626f6f6b696e6773026e6c0000010001c01200020001000151800009026e730374656ec01bc0120002000100015180000b026e73026e6c036e657400c02f00010001000151800004c36c4b010000291000000000000000 + +43785 +86b400000001000000000000067768646e7331056577656b61026e6c0000010001 +86b480000001000000020002067768646e7331056577656b61026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7333c013c02d0001000100015180000451ab6504c03f0001000100015180000451ab660e + +43786 +804000000001000000000000067768646e7332056577656b61026e6c0000010001 +804080000001000000020002067768646e7332056577656b61026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7333c013c02d0001000100015180000451ab6504c03f0001000100015180000451ab660e + +43787 +da4b000000010000000000000773747564656e740868736c656964656e026e6c0000010001 +da4b800000010000000200020773747564656e740868736c656964656e026e6c0000010001c01400020001000151800006036e7331c014c0140002000100015180000e036e733107737572666e6574c01dc03100010001000151800004c3a95702c04300010001000151800004c0576a65 + +43788 +32790000000100000000000009736d74702d6f75743506787334616c6c026e6c00000f0001 +32798000000100000003000209736d74702d6f75743506787334616c6c026e6c00000f0001c01600020001000151800005026e73c016c01600020001000151800006036e7332c016c0160002000100015180000d026e730472697065036e657400c03100010001000151800004c26d0642c04200010001000151800004c26d0963 + +43789 +aece000000010000000000000365676d026e6c0000010001 +aece800000010000000200020365676d026e6c0000010001c00c0002000100015180000e036e733107626265796f6e64c010c00c00020001000151800006036e7332c028c024000100010001518000043eb1900bc03e000100010001518000043eb19002 + +43790 +88f100000001000000000000036e733104686f6d65026e6c0000010001 +88f180000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +43791 +11210010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +11218000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +43792 +e60a00000001000000000000037777770a68696c746f6e6d656164026e6c0000010001 +e60a84030001000000010000037777770a68696c746f6e6d656164026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +43793 +400c0000000100000000000003777777036e6864026e6c0000010001 +400c8000000100000003000303777777036e6864026e6c0000010001c0100002000100015180000e076e73617574683103626974c014c0100002000100015180000a076e736175746832c030c0100002000100015180000a076e736175746833c030c02800010001000151800004d5880c33c04200010001000151800004d5880c3bc05800010001000151800004d4ccc00b + +43794 +1ccc0000000100000000000003777777096d656469616d656e75026e6c0000010001 +1ccc8000000100000003000303777777096d656469616d656e75026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +43795 +88a2000000010000000000000a496e746572706f6c6973026e6c0000ff0001 +88a2800000010000000200000a496e746572706f6c6973026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +43796 +fd080000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +fd088000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43797 +464a000000010000000000000d66756e696e6475737472696573026e6c00000f0001 +464a800000010000000300020d66756e696e6475737472696573026e6c00000f0001c00c0002000100015180000f036e7331086c65617365776562c01ac00c00020001000151800006036e7332c032c00c00020001000151800012036e7333086c65617365776562036f726700c02e000100010001518000043ed44079c049000100010001518000043ed4407a + +43798 +6e2e00000001000000000000056d656c7365026e6c0000ff0001 +6e2e80000001000000020000056d656c7365026e6c0000ff0001c00c0002000100015180000f04686e73300774697363616c69c012c00c0002000100015180000704686e7331c02b + +43799 +06d4000000010000000000000672656c6179310b776f726c646f6e6c696e65026e6c0000010001 +06d4800000010000000300020672656c6179310b776f726c646f6e6c696e65026e6c0000010001c0130002000100015180000f04616e73310774697363616c69c01fc0130002000100015180000704616e7332c038c0130002000100015180001404616e73330a74697363616c696e657402626500c03300010001000151800004c3f14d38c04e00010001000151800004c3f13325 + +43800 +648a00000001000000000000046d61696c076575726f6e6574026e6c0000010001 +648a80000001000000020001046d61696c076575726f6e6574026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000d026e73046575726f036e657400c02d00010001000151800004c2860043 + +43801 +6f8b000000010000000000000f616472656e616c696e73706f727473026e6c0000010001 +6f8b800000010000000200020f616472656e616c696e73706f727473026e6c0000010001c00c00020001000151800013036e73310c62656472696a76656e776562c01cc00c00020001000151800006036e7332c034c03000010001000151800004d90867fec04f00010001000151800004c1ad2bfe + +43802 +97af000000010000000000000661736f706f73026e6c0000ff0001 +97af800000010000000200000661736f706f73026e6c0000ff0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +43803 +8116000000010000000000000a69706435346262396138077072656d69756d06706c616e6574026e6c0000010001 +8116800000010000000300030a69706435346262396138077072656d69756d06706c616e6574026e6c0000010001c01f0002000100015180000b046e73303803777873c026c01f00020001000151800007046e733039c03fc01f00020001000151800006036e7334c03fc03a00010001000151800004c3790128c05100010001000151800004c3790143c06400010001000151800004d5ef9a65 + +43804 +2f7000000001000000000000037777770e62622d6164766572746973696e67026e6c0000010001 +2f7080000001000000020000037777770e62622d6164766572746973696e67026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c036 + +43805 +a48100000001000000000000066462696e6574026e6c00000f0001 +a48180000001000000020002066462696e6574026e6c00000f0001c00c0002000100015180000d026e730777697a7a626974c013c00c00020001000151800006036e7332c02ac027000100010001518000043e3a360bc040000100010001518000043e3a360c + +43806 +1290000000010000000000000377777703646674026e6c0000010001 +1290800000010000000200000377777703646674026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c02c + +43807 +f703000000010000000000000f6361726176616e732d6f6e6c696e65026e6c00000f0001 +f703800000010000000200020f6361726176616e732d6f6e6c696e65026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01cc00c00020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +43808 +248c000000010000000000000663616c646963026e6c00000f0001 +248c800000010000000200000663616c646963026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02b + +43809 +cab600000001000000000000055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f736974657304686f6e6b026e6c0000060001 +cab680000001000000020002055f6c646170045f746370155374616e64616172642d6565727374652d73697465065f736974657304686f6e6b026e6c0000060001c0340002000100015180000f036e73310864736267726f6570c039c03400020001000151800006036e7332c051c04d00010001000151800004d4362461c06800010001000151800004c36c2c36 + +43810 +0c4a0000000100000000000003777777096575726f6368616d70026e6c0000010001 +0c4a8000000100000002000203777777096575726f6368616d70026e6c0000010001c01000020001000151800016036e73310f73696d706c65736f6c7574696f6e73c01ac01000020001000151800006036e7332c032c02e00010001000151800004d973cc32c05000010001000151800004d973cc33 + +43811 +45ae0000000100000000000006636861726973026e6c00000f0001 +45ae8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43812 +87df00000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +87df80000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +43813 +87e000000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +87e080000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +43814 +87e200000001000000000000036e73310d666c65746873686f7374696e67026e6c0000010001 +87e280000001000000020000036e73310d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +43815 +87e300000001000000000000036e73320d666c65746873686f7374696e67026e6c0000010001 +87e380000001000000020000036e73320d666c65746873686f7374696e67026e6c0000010001c01000020001000151800013036e73310c616374697665646f6d61696ec01ec01000020001000151800006036e7332c036 + +43816 +d4e7000000010000000000000a696e746572696d6e6574026e6c00001c0001 +d4e7800000010000000200000a696e746572696d6e6574026e6c00001c0001c00c00020001000151800013036e733009696e7465726c697a65036e657400c00c00020001000151800006036e7331c02f + +43817 +02550000000100000000000004616a6178066e696b686566026e6c0000010001 +02558000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +43818 +fd19000000010000000000000377777707676f6c64776562026e6c0000010001 +fd19800000010000000200000377777707676f6c64776562026e6c0000010001c0100002000100015180000e026e730562622d6964036e657400c01000020001000151800006036e7332c02f + +43819 +dae3000000010000000000000377777711726f7474657264616d2d616972706f7274026e6c0000010001 +dae3800000010000000200020377777711726f7474657264616d2d616972706f7274026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c022c01000020001000151800006036e7332c03ac03600010001000151800004505fa002c05100010001000151800004505fac02 + +43820 +c5f80000000100000000000007646f6c66696a6e026e6c0000ff0001 +c5f88000000100000003000307646f6c66696a6e026e6c0000ff0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc028000100010001518000043e45a282c03a000100010001518000043e45a283c04c000100010001518000043e45a284 + +43821 +611a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +611a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43822 +5ead00000001000000000000036e7334076e656473746174026e6c0000010001 +5ead80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43823 +3d610000000100000000000005646e732d32056c61646f74026e6c0000010001 +3d618000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +43824 +32b900000001000000000000036e7332076e656473746174026e6c0000010001 +32b980000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +43825 +919f00000001000000000000046d61696c076c616361726469026e6c0000010001 +919f80000001000000020002046d61696c076c616361726469026e6c0000010001c0110002000100015180000e026e730874657272617a7572c019c01100020001000151800006036e7332c030c02d00010001000151800004d5880e9ac04700010001000151800004d59ae202 + +43826 +488000000001000000000000094747425345525645520d6767622d64616d73706f727433026e6c0000010001 +488084030001000000010000094747425345525645520d6767622d64616d73706f727433026e6c0000010001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +43827 +7106000000010000000000000368696f0368656e026e6c00000f0001 +7106800000010000000300030368696f0368656e026e6c00000f0001c0100002000100015180000d0a6a75666665726265656bc010c0100002000100015180000e036e733107737572666e6574c014c0100002000100015180000b036e7332046873696ac014c02800010001000151800004914c0248c04100010001000151800004c0576a65c05b000100010001518000049102d715 + +43828 +375b000000010000000000000868696e7474656368026e6c00000f0001 +375b800000010000000300030868696e7474656368026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02900010001000151800004c2ab32e1c03b00010001000151800004c2ab32e2c04d00010001000151800004c3405ec2 + +43829 +b3da00000001000000000000036e73310868696e7474656368026e6c0000010001 +b3da80000001000000030003036e73310868696e7474656368026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004c2ab32e1c03b00010001000151800004c2ab32e2c04d00010001000151800004c3405ec2 + +43830 +5be600000001000000000000036e73320868696e7474656368026e6c0000010001 +5be680000001000000030003036e73320868696e7474656368026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02d00010001000151800004c2ab32e1c00c00010001000151800004c2ab32e2c04d00010001000151800004c3405ec2 + +43831 +238200000001000000000000036e73330868696e7474656368026e6c0000010001 +238280000001000000030003036e73330868696e7474656368026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02d00010001000151800004c2ab32e1c03f00010001000151800004c2ab32e2c00c00010001000151800004c3405ec2 + +43832 +7ef600000001000000000000086261726d61746f6e026e6c00000f0001 +7ef680000001000000020002086261726d61746f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02900010001000151800004d5a0da96c03b00010001000151800004d5a0da64 + +43833 +e5d700000001000000000000036e73320a77656273797374656d73026e6c0000010001 +e5d780000001000000020002036e73320a77656273797374656d73026e6c0000010001c01000020001000151800007046e733031c010c01000020001000151800007046e733032c010c02f00010001000151800004d4cccf12c042000100010001518000043eddd552 + +43834 +882800000001000000000000037777770b627575726d6569736a6573026e6c0000010001 +882880000001000000020000037777770b627575726d6569736a6573026e6c0000010001c01000020001000151800010036e73610674696e74656c03636f6d00c01000020001000151800006036e7362c034 + +43835 +664600000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000260001 +664680000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000260001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +43836 +05e7000000010000000000000377777705667567726f026e6c0000010001 +05e7800000010000000200000377777705667567726f026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c030 + +43837 +b7ef00000001000000000000037777771273686f70737570706c6965732d6c69737365026e6c0000010001 +b7ef80000001000000030001037777771273686f70737570706c6965732d6c69737365026e6c0000010001c0100002000100015180000e026e7308767575727765726bc023c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c055c037000100010001518000043efa0202 + +43838 +f3400000000100000000000005737461747308626f6f6b696e6773026e6c0000010001 +f3408000000100000002000105737461747308626f6f6b696e6773026e6c0000010001c01200020001000151800009026e730374656ec01bc0120002000100015180000b026e73026e6c036e657400c02f00010001000151800004c36c4b01 + +43839 +da7200000001000000000000026e73076575726f6e6574026e6c0000010001 +da7280000001000000020001026e73076575726f6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000d026e73046575726f036e657400c00c00010001000151800004c2860043 + +43840 +4f9a0000000100000000000003777777056b69647a7a026e6c0000010001 +4f9a8000000100000003000103777777056b69647a7a026e6c0000010001c0100002000100015180000e026e7308767575727765726bc016c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c048c02a000100010001518000043efa0202 + +43841 +fb0d00000001000000000000037777770e696374636f6e7472616374696e67026e6c0000010001 +fb0d80000001000000020000037777770e696374636f6e7472616374696e67026e6c0000010001c0100002000100015180000c026e7306766576696461c01fc01000020001000151800006036e7332c036 + +43842 +6e7b00000001000000000000037777770974686567616c6c6f70026e6c0000010001 +6e7b80000001000000020000037777770974686567616c6c6f70026e6c0000010001c01000020001000151800012036e7331097072696f72686f737402626500c01000020001000151800006036e7332c032 + +43843 +b65000000001000000000000037777770e6f766572686569647362616e656e026e6c0000010001 +b65080000001000000020000037777770e6f766572686569647362616e656e026e6c0000010001c01000020001000151800013036e73310368617306686f7374697402626500c0100002000100015180000a036e7332036c7578c03b + +43844 +36c8000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c0000ff0001 +36c8800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c0000ff0001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +43845 +c15900000001000000000000076e7376696e6c310b76616e6465726c616e6465026e6c0000010001 +c15980000001000000030001076e7376696e6c310b76616e6465726c616e6465026e6c0000010001c01400020001000151800002c00cc01400020001000151800012026e7302756b06707273657276036e657400c01400020001000151800008026e73026e6cc048c00c00010001000151800004c34bb162 + +43846 +bf860000000100000000000004646e7330026975026e6c0000010001 +bf868000000100000002000204646e7330026975026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7331c011c00c00010001000151800004d91a7002c03600010001000151800004d91a7103 + +43847 +dfc30000000100000000000004646e7331026975026e6c0000010001 +dfc38000000100000002000204646e7331026975026e6c0000010001c0110002000100015180000704646e7330c011c01100020001000151800002c00cc02800010001000151800004d91a7002c00c00010001000151800004d91a7103 + +43848 +5d8300000001000000000000037777770c73626b656d70656e6c616e64026e6c0000010001 +5d8380000001000000020001037777770c73626b656d70656e6c616e64026e6c0000010001c0100002000100015180000a036e733303777873c01dc01000020001000151800006036e7334c035c04700010001000151800004d5ef9a65 + +43849 +fcf20000000100000000000006636861726973026e6c0000010001 +fcf28000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43850 +da4c00000001000000000000036e73320568616e7a65026e6c0000010001 +da4c80000001000000030003036e73320568616e7a65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004912106efc00c00010001000151800004912106eec04a00010001000151800004c0576a65 + +43851 +6ad700000001000000000000036e73310568616e7a65026e6c0000010001 +6ad780000001000000030003036e73310568616e7a65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c016c00c00010001000151800004912106efc03800010001000151800004912106eec04a00010001000151800004c0576a65 + +43852 +78d200000001000000000000037777770e6d616b6561676f6f647374617274026e6c0000010001 +78d280000001000000020002037777770e6d616b6561676f6f647374617274026e6c0000010001c01000020001000151800010036e733109756e69736572766572c01fc01000020001000151800006036e7332c037c03300010001000151800004c3454b03c04f00010001000151800004d119a2fa + +43853 +1e6a0000000100000000000003777777036a686d026e6c0000010001 +1e6a8000000100000002000103777777036a686d026e6c0000010001c0100002000100015180000d026e73046575726f036e657400c0100002000100015180000d026e73076575726f6e6574c014c04100010001000151800004c2860043 + +43854 +8b58000000010000000000000564656d6f6e026e6c00000f0001 +8b58800000010000000300020564656d6f6e026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000f036e73320564656d6f6e036e657400c02600010001000151800004c29f4906c03800010001000151800004c29fb004 + +43855 +50a500000001000000000000036e7332086d65646961776562026e6c0000010001 +50a580000001000000020000036e7332086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +43856 +864900000001000000000000036e7333086d65646961776562026e6c0000010001 +864980000001000000020000036e7333086d65646961776562026e6c0000010001c01000020001000151800013036e7331086d6564696177656204696e666f00c01000020001000151800006036e7332c031 + +43857 +db3e00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +db3e80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +43858 +f68b00100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +f68b80000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +43859 +9e3800000001000000000000037777770a6d61726a6f6c65696e77026e6c0000010001 +9e3880000001000000020002037777770a6d61726a6f6c65696e77026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5c9e8c8c04f00010001000151800004d5c9e8c9 + +43860 +546800000001000000000000036e733007686f73746c6162026e6c0000010001 +546880000001000000020002036e733007686f73746c6162026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7331c010c00c00010001000151800004c3eaad40c03a00010001000151800004c3eaad41 + +43861 +9d0300000001000000000000036e733107686f73746c6162026e6c0000010001 +9d0380000001000000020002036e733107686f73746c6162026e6c0000010001c01000020001000151800006036e7330c010c01000020001000151800002c00cc02c00010001000151800004c3eaad40c00c00010001000151800004c3eaad41 + +43862 +a3e900000001000000000000037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001 +a3e980000001000000020002037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001c0100002000100015180000f026e7309656174736572766572c02dc01000020001000151800006036e7332c044c04100010001000151800004d4cb0e42c05c00010001000151800004d4cb1221 + +43863 +9f8000000001000000000000026e73076e656473746174026e6c0000010001 +9f8080000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43864 +a78f00000001000000000000036e7333076e656473746174026e6c0000010001 +a78f80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +43865 +8f5800000001000000000000036e73310b64696e65726f6e6c696e65026e6c0000010001 +8f5880000001000000020002036e73310b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43866 +de4e00000001000000000000036e73320b64696e65726f6e6c696e65026e6c0000010001 +de4e80000001000000020002036e73320b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43867 +c96a00000001000000000000036e73330b64696e65726f6e6c696e65026e6c0000010001 +c96a80000001000000020002036e73330b64696e65726f6e6c696e65026e6c0000010001c0100002000100015180000d026e73077072657a656e74c01cc01000020001000151800006036e7332c033c030000100010001518000043ec07802c049000100010001518000043ec07803 + +43868 +7bbc0000000100000000000016535449434854494e4741524f4d415448455241504945026e6c0000020001 +7bbc8000000100000003000116535449434854494e4741524f4d415448455241504945026e6c0000020001c00c0002000100015180000e026e7308767575727765726bc023c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c055c037000100010001518000043efa0202 + +43869 +59ff00000001000000000000046d61696c0a706d706172746e657273026e6c0000010001 +59ff80000001000000020002046d61696c0a706d706172746e657273026e6c0000010001c01100020001000151800014036e73310d78786c776562686f7374696e67c01cc01100020001000151800006036e7332c034c030000100010001518000045104580ac050000100010001518000045104601e + +43870 +e015000000010000000000000761313832313037057570632d61066368656c6c6f026e6c0000010001 +e015800000010000000300030761313832313037057570632d61066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +43871 +9f3700000001000000000000076e6f7669727573036a6d69026e6c0000260001 +9f3780000001000000020001076e6f7669727573036a6d69026e6c0000260001c01400020001000151800002c00cc0140002000100015180000b026e73026e6c036e657400c00c00010001000151800004d4ce6842 + +43872 +dc0c00000001000000000000076f70656e6e61700567757a6564026e6c0000010001 +dc0c80000001000000020002076f70656e6e61700567757a6564026e6c0000010001c0140002000100015180000e036e73310773656172636879c01ac01400020001000151800006036e7332c032c02e00010001000151800004d9aa1235c04800010001000151800004507e81e0 + +43873 +b384000000010000000000000776656e73746572026e6c00000f0001 +b384800000010000000300020776656e73746572026e6c00000f0001c00c0002000100015180000d036e733106776964657873c014c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02cc02800010001000151800004d4ccc0fcc05d000100010001518000043efa0703 + +43874 +eb3a000000010000000000000377777708636f757273696e67026e6c0000010001 +eb3a800000010000000200000377777708636f757273696e67026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c033 + +43875 +48e200000001000000000000037777770c6765736368696564656e6973026e6c0000010001 +48e280000001000000030001037777770c6765736368696564656e6973026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01dc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04fc031000100010001518000043efa0202 + +43876 +a9f20000000100000000000012676f6564652d6865726465727363686f6f6c026e6c00000f0001 +a9f28000000100000002000212676f6564652d6865726465727363686f6f6c026e6c00000f0001c00c0002000100015180000d036e7331066e6c74726565c01fc00c00020001000151800006036e7332c037c03300010001000151800004d4b20403c04c00010001000151800004d5881e45 + +43877 +85d400000001000000000000026e7311656e7465727072697365686f7374696e67026e6c00001c0001 +85d480000001000000020001026e7311656e7465727072697365686f7374696e67026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +43878 +81eb0000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c00001c0001 +81eb8000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c00001c0001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +43879 +0dfe0000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c0000010001 +0dfe8000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +43880 +62610000000100000000000007776f6c6d61696c026e6c00001c0001 +62618000000100000003000207776f6c6d61696c026e6c00001c0001c00c0002000100015180000f04616e73310774697363616c69c014c00c0002000100015180000704616e7332c02dc00c0002000100015180001404616e73330a74697363616c696e657402626500c02800010001000151800004c3f14d38c04300010001000151800004c3f13325 + +43881 +18120000000100000000000008686f73746e616d650462696e640000100003 +18128000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +43882 +6e220000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +6e228000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43883 +214c00000001000000000000136c6f6f706261616e7065727370656374696566026e6c0000020001 +214c80000001000000020002136c6f6f706261616e7065727370656374696566026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec020c00c00020001000151800006036e7332c038c03400010001000151800004c29f4906c04c00010001000151800004c29fb004 + +43884 +8984000000010000000000000b636f6d6d69742d6172626f026e6c00000f0001 +8984800000010000000200000b636f6d6d69742d6172626f026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c030 + +43885 +89a30000000100000000000003667261026e6c00000f0001 +89a38000000100000003000303667261026e6c00000f0001c00c0002000100015180000e04646e733106626c6978656dc010c00c0002000100015180000704646e7332c029c00c0002000100015180000704646e7333c029c02400010001000151800004d44fe803c03e00010001000151800004c3f5c782c05100010001000151800004d44ff303 + +43886 +052400000001000000000000046d61696c066368656c6c6f026e6c0000010001 +052480000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +43887 +43270000000100000000000003777777106f72616e6a65766572656e6967696e67026e6c0000010001 +43278000000100000002000003777777106f72616e6a65766572656e6967696e67026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +43888 +a76f00000001000000000000046d61696c03617470026e6c0000010001 +a76f80000001000000020001046d61696c03617470026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800013036e7332026e6c0669676e697465036e657400c02900010001000151800004d4298505 + +43889 +8a4600000001000000000000026e730a7a65656c616e646e6574026e6c0000010001 +8a4680000001000000020002026e730a7a65656c616e646e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +43890 +039200000001000000000000037777770d6475746368746f707369746573026e6c0000010001 +039280000001000000020002037777770d6475746368746f707369746573026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01ec01000020001000151800006036e7332c036c03200010001000151800004d5efa011c04d00010001000151800004d5efa075 + +43891 +c52300000001000000000000026e730a7a65656c616e646e6574026e6c0000260001 +c52380000001000000020002026e730a7a65656c616e646e6574026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d473c0c1c03c00010001000151800004d473c0c3 + +43892 +77d700000001000000000000036e73320a7a65656c616e646e6574026e6c0000010001 +77d780000001000000020002036e73320a7a65656c616e646e6574026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +43893 +3ed600000001000000000000036e73320a7a65656c616e646e6574026e6c0000260001 +3ed680000001000000020002036e73320a7a65656c616e646e6574026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02f00010001000151800004d473c0c1c00c00010001000151800004d473c0c3 + +43894 +275a0000000100000000000005786d61696c076e617674656368026e6c0000010001 +275a8000000100000002000005786d61696c076e617674656368026e6c0000010001c0120002000100015180000d036e7331036b706e036e657400c01200020001000151800006036e7332c032 + +43895 +531500100001000000000000087773696e746930370377696e03747565026e6c00000f0001 +531580000001000000030003087773696e746930370377696e03747565026e6c00000f0001c0190002000100015180000a0774756567617465c019c01900020001000151800006036e7332c019c0190002000100015180000e036e733107737572666e6574c01dc03100010001000151800004839b0203c04700010001000151800004839b0303c05900010001000151800004c0576a65 + +43896 +572800000001000000000000037777770e6772617469732d7469656e657273026e6c0000010001 +572880000001000000020002037777770e6772617469732d7469656e657273026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac01fc01000020001000151800006036e7332c037c03300010001000151800004d5efa011c04e00010001000151800004d5efa075 + +43897 +8efc0000000100000000000003777777136c756e6172657374776174657262656464656e026e6c0000010001 +8efc8000000100000002000003777777136c756e6172657374776174657262656464656e026e6c0000010001c01000020001000151800017056e6f7274680b646f6d65696e736c756973036f726700c0100002000100015180000805736f757468c03e + +43898 +5c08000000010000000000000b776f726c64616363657373026e6c00000f0001 +5c08800000010000000200010b776f726c64616363657373026e6c00000f0001c00c0002000100015180000a036e733303777873c018c00c00020001000151800006036e7334c030c04200010001000151800004d5ef9a65 + +43899 +84480000000100000000000004696c7365026e6c00000f0001 +84488000000100000003000304696c7365026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc025000100010001518000043e45a282c037000100010001518000043e45a283c049000100010001518000043e45a284 + +43900 +524c0000000100000000000008647664776f726c64026e6c00000f0001 +524c8000000100000003000008647664776f726c64026e6c00000f0001c00c00020001000151800017076e73686f73743103737432056c79636575036e657400c00c0002000100015180000a076e73686f737432c031c00c0002000100015180000a076e73686f737433c031 + +43901 +db54000000010000000000000377777709626f72646a65706170026e6c0000010001 +db54800000010000000300000377777709626f72646a65706170026e6c0000010001c01000020001000151800015036e73310b70726f6c6f636174696f6e036e657400c01000020001000151800006036e7332c032c01000020001000151800006036e7333c032 + +43902 +a57500000001000000000000086c6f6f796d616e73026e6c0000020001 +a57580000001000000020002086c6f6f796d616e73026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c29f4906c04100010001000151800004c29fb004 + +43903 +18380000000100000000000003777777156272616e64776565726b656e6e656d65726c616e64026e6c0000010001 +18388000000100000002000203777777156272616e64776565726b656e6e656d65726c616e64026e6c0000010001c0100002000100015180000f0472617131076e657474756e65c026c01000020001000151800006036e7332c03fc03a00010001000151800004d4ccf78dc05500010001000151800004d4ccf78e + +43904 +5d64000000010000000000000a6d6f6c2d6575726f7065026e6c0000ff0001 +5d64800000010000000200000a6d6f6c2d6575726f7065026e6c0000ff0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02e + +43905 +ec5a0000000100000000000004616a6178066e696b686566026e6c0000010001 +ec5a8000000100000004000204616a6178066e696b686566026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046c656461c011c0110002000100015180000f0564786d6f6e046365726e02636800c0110002000100015180000d026e730472697065036e657400c00c00010001000151800004c010c701c03a00010001000151800004c010c704 + +43906 +820f00000001000000000000057769737061026e6c00000f0001 +820f80000001000000020000057769737061026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c + +43907 +336d00000001000000000000024e53087261626f62616e6b026e6c00001c0001 +336d80000001000000020001024e53087261626f62616e6b026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +43908 +4060000000010000000000000572656c6179087261626f62616e6b026e6c0000010001 +4060800000010000000200010572656c6179087261626f62616e6b026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02f0001000100015180000491484fde + +43909 +3687000000010000000000000b61746c6173616476696573026e6c00000f0001 +3687800000010000000200020b61746c6173616476696573026e6c00000f0001c00c0002000100015180000e036e733107647265636f6d6dc018c00c00020001000151800006036e7332c030c02c00010001000151800004d5c42546c04600010001000151800004d5c42547 + +43910 +e20200000001000000000000036e733207747564656c6674026e6c00001c0001 +e20280000001000000050005036e733207747564656c6674026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +43911 +b93f00000001000000000000036e733207747564656c6674026e6c0000260001 +b93f80000001000000050005036e733207747564656c6674026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c02c0001000100015180000482a1b401c00c0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +43912 +8ece00000001000000000000036e733107747564656c6674026e6c00001c0001 +8ece80000001000000050005036e733107747564656c6674026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +43913 +4d8b00000001000000000000036e733107747564656c6674026e6c0000260001 +4d8b80000001000000050005036e733107747564656c6674026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800009036e7331026574c010c0100002000100015180000d07647574746e636202746ec010c0100002000100015180000e036e733107737572666e6574c018c00c0001000100015180000482a1b401c03a0001000100015180000482a1b441c04c0001000100015180000482a12111c0610001000100015180000482a1bc8cc07a00010001000151800004c0576a65 + +43914 +ffc400000001000000000000096d61696c686f73743207747564656c6674026e6c0000010001 +ffc480000001000000050005096d61696c686f73743207747564656c6674026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c01600020001000151800009036e7331026574c016c0160002000100015180000d07647574746e636202746ec016c0160002000100015180000e036e733107737572666e6574c01ec0320001000100015180000482a1b401c0440001000100015180000482a1b441c0560001000100015180000482a12111c06b0001000100015180000482a1bc8cc08400010001000151800004c0576a65 + +43915 +a6e500000001000000000000056c6f70656e026e6c0000020001 +a6e580000001000000020002056c6f70656e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +43916 +30c000000001000000000000037777770b6d61726b74706c61617473026e6c0000010001 +30c080000001000000020000037777770b6d61726b74706c61617473026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c034 + +43917 +6d9b00000001000000000000067a737673756b026e6c0000010001 +6d9b84030001000000010000067a737673756b026e6c0000010001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +43918 +7d6a00000001000000000000026e730763697374726f6e026e6c0000010001 +7d6a80000001000000020002026e730763697374726f6e026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043ed81f37c039000100010001518000043ed81f38 + +43919 +169a000000010000000000000b747269746f6e67726f6570026e6c00000f0001 +169a800000010000000300030b747269746f6e67726f6570026e6c00000f0001c00c00020001000151800015036e73310e6469726563747365727669636573c018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004d994aa05c04d00010001000151800004d994aa06c05f00010001000151800004d994aa07 + +43920 +3f0e00000001000000000000037777770f686f6d6f736578706c6161746a6573026e6c0000010001 +3f0e80000001000000020002037777770f686f6d6f736578706c6161746a6573026e6c0000010001c0100002000100015180000c04646e73310470696e73c020c0100002000100015180000704646e7332c039c03400010001000151800004d9c26101c04c00010001000151800004d9c26002 + +43921 +18300000000100000000000007766462636f6d70026e6c00001c0001 +18308000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +43922 +104d0000000100000000000007766462636f6d70026e6c00001c0001 +104d8000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +43923 +10590000000100000000000007766462636f6d70026e6c00001c0001 +10598000000100000003000107766462636f6d70026e6c00001c0001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +43924 +eeab00000001000000000000106c7578776f6f6462656e656c75786276026e6c00000f0001 +eeab84030001000000010000106c7578776f6f6462656e656c75786276026e6c00000f0001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +43925 +2c7e000000010000000000000a656c656374726f6c7578026e6c0000ff0001 +2c7e800000010000000200000a656c656374726f6c7578026e6c0000ff0001c00c00020001000151800012026e730a656c656374726f6c757802736500c00c00020001000151800014036e73320d646f6d61696e6e6574776f726bc039 + +43926 +cda0000000010000000000000c616265747465727072696365026e6c00000f0001 +cda0800000010000000300020c616265747465727072696365026e6c00000f0001c00c0002000100015180000d036e733106776964657873c019c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +43927 +25b000000001000000000000037777770974656c656772616166026e6c0000010001 +25b080000001000000020000037777770974656c656772616166026e6c0000010001c01000020001000151800013036e73300974656c656772616166036e657400c01000020001000151800006036e7331c032 + +43928 +42b60000000100000000000006636861726973026e6c0000010001 +42b68000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +43929 +d9ce00000001000000000000066472616b6573026e6c00001c0001 +d9ce80000001000000020002066472616b6573026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +43930 +83be0000000100000000000004617369610374656e026e6c0000010001 +83be8000000100000002000104617369610374656e026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +43931 +60e10000000100000000000004617369610374656e026e6c0000260001 +60e18000000100000002000104617369610374656e026e6c0000260001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02900010001000151800004c36c4b01 + +43932 +f06400000001000000000000037777771c706c617474656c616e646c6161747a6963686e6965746b697374656e026e6c00001c0001 +f06480000001000000020000037777771c706c617474656c616e646c6161747a6963686e6965746b697374656e026e6c00001c0001c01000020001000151800011026e7308786c736572766572036e657400c01000020001000151800006036e7332c044 + +43933 +5e3f00000001000000000000037777770c7269702d636f6c6f666f6f6e026e6c0000010001 +5e3f84030001000000010000037777770c7269702d636f6c6f666f6f6e026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +43934 +efcd0000000100000000000003777777177363686f6e6b636f6d7075746572736f6c7574696f6e73026e6c0000010001 +efcd8000000100000002000203777777177363686f6e6b636f6d7075746572736f6c7574696f6e73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c028c01000020001000151800006036e7332c03fc03c00010001000151800004d4cb0e42c05700010001000151800004d4cb1221 + +43935 +8eef0000000100000000000003777777177363686f6e6b636f6d7075746572736f6c7574696f6e73026e6c0000010001 +8eef8000000100000002000203777777177363686f6e6b636f6d7075746572736f6c7574696f6e73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c028c01000020001000151800006036e7332c03fc03c00010001000151800004d4cb0e42c05700010001000151800004d4cb1221 + +43936 +23cf00000001000000000000036e73330767617574656e67026e6c0000010001 +23cf80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43937 +23d000000001000000000000036e73340767617574656e67026e6c0000010001 +23d080000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43938 +a7e70000000100000000000013706572736f6f6e6c696a6b652d6c656e696e67107261626f62616e6b2d6575726f706173026e6c0000010001 +a7e78000000100000002000213706572736f6f6e6c696a6b652d6c656e696e67107261626f62616e6b2d6575726f706173026e6c0000010001c0200002000100015180000a036e733103696166c031c02000020001000151800006036e7332c049c045000100010001518000045059e040c05b000100010001518000045059ee03 + +43939 +24bd000000010000000000000974656c656d65646961026e6c00001c0001 +24bd800000010000000200020974656c656d65646961026e6c00001c0001c00c0002000100015180000e036e73310765766964656e74c016c00c00020001000151800006036e7332c02ec02a00010001000151800004c36d19c4c04400010001000151800004c36d1942 + +43940 +c14f00000001000000000000036e73330767617574656e67026e6c0000010001 +c14f80000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43941 +772300000001000000000000036e73340767617574656e67026e6c0000010001 +772380000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +43942 +220d00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +220d80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +43943 +220d00000001000000000000037777770c6765696c65706f65736a6573026e6c0000010001 +220d80000001000000020000037777770c6765696c65706f65736a6573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +43944 +1dfd0000000100000000000005776b746873026e6c00000f0001 +1dfd8000000100000002000205776b746873026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +43945 +a33c00000001000000000000066c6f72616765026e6c0000020001 +a33c80000001000000020002066c6f72616765026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +43946 +7837000000010000000000000377777712617262656964736465736b756e646967656e026e6c0000010001 +7837800000010000000200020377777712617262656964736465736b756e646967656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c023c01000020001000151800006036e7332c03ac03700010001000151800004d4cb0e42c05200010001000151800004d4cb1221 + +43947 +17f9000000010000000000000764697669647573026e6c0000010001 +17f9800000010000000200000764697669647573026e6c0000010001c00c0002000100015180000f036e73310561676e2d65036e657400c00c00020001000151800006036e7332c02c + +43948 +b87f97c550114462e6040000000000000000 + + +43949 +4ced00000001000000000000056e65627572026e6c0000010001 +4ced80000001000000030003056e65627572026e6c0000010001c00c00020001000151800014026e730e61726765776562686f7374696e67c012c00c00020001000151800006036e7330c029c00c00020001000151800006036e7333c029c02600010001000151800004c3561682c04600010001000151800004c3561683c05800010001000151800004d5de0bfa + +43950 +0000000070024000e5880000020405b401010402 +000080010000000000000000 + +43951 +b87f97c650104462e6030000000000000000 + + +43952 +8f8a00000001000000000000037777770b76726f75776f6e6c696e65026e6c0000010001 +8f8a80000001000000030000037777770b76726f75776f6e6c696e65026e6c0000010001c01000020001000151800010036e733106666173747873036e657400c01000020001000151800006036e7332c034c01000020001000151800006036e7333c034 + +43953 +b8866f32501005b424d00000000000000000 +b886ef340000000000000000 + +43954 +b8f700000001000000000000067370656c6c65026e6c00000f0001 +b8f780000001000000020000067370656c6c65026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02a + +43955 +b8866f3250184470a3e30000008c04c0000000010001000000000f313036353135313838393432362d320000f900010f313036353135313838393432362d320000f900ff00000000005003677373096d6963726f736f667403636f6d00403af2fa403c447a00030000002d4e544c4d535350000100000097b200e0080008002500000005000500200000004c55584f52494e5445524e45540000 +b886ef340000000000000000 + +43956 +85470000000100000000000006736d7470303903777873026e6c00000f0001 +85478000000100000003000306736d7470303903777873026e6c00000f0001c01300020001000151800007046e733038c013c01300020001000151800007046e733039c013c01300020001000151800006036e7334c013c02b00010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +43957 +90dd000000010000000000000377777708666f636f6c617265026e6c0000010001 +90dd800000010000000200010377777708666f636f6c617265026e6c0000010001c0100002000100015180000d026e7307696e746f756368c019c01000020001000151800010026e7307696e746f756368036e657400c02d00010001000151800004d413c001 + +43958 +1a9d00000001000000000000026e73076e656473746174026e6c0000010001 +1a9d80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +43959 +dd0400000001000000000000037777770b7365612d6578616d656e73026e6c0000010001 +dd0480000001000000020002037777770b7365612d6578616d656e73026e6c0000010001c0100002000100015180000d026e730763697374726f6ec01cc01000020001000151800006036e7332c033c030000100010001518000043ed81f37c049000100010001518000043ed81f38 + +43960 +b8866f4050114462e5840000000000000000 +b886ef440000000000000000 + +43961 +609d000000010000000000000b626f7577696e666f737973026e6c00000f0001 +609d800000010000000200000b626f7577696e666f737973026e6c00000f0001c00c00020001000151800012026e73096e6c686f7374696e67036e657400c00c00020001000151800006036e7331c02f + +43962 +b8866f4150104462e5830000000000000000 +b886ef440000000000000000 + +43963 +dbf600000001000000000000036e733503777873026e6c0000010001 +dbf680000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +43964 +330200100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +330280000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +43965 +fc1e000000010000000000000762616e6e65727303647161026e6c0000010001 +fc1e800000010000000200000762616e6e65727303647161026e6c0000010001c0140002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0140002000100015180000805726f6b696ec033 + +43966 +998100100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +998180000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +43967 +50ca00000001000000000000066272756e656c026e6c0000010001 +50ca80000001000000020000066272756e656c026e6c0000010001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c02a + +43968 +768500100001000000000001036e7333076e656473746174026e6c00000100010000290800000080000000 +768580000001000000020003036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d0000291000000000000000 + +43969 +e195000000010000000000000363766c026e6c00000f0001 +e195800000010000000200020363766c026e6c00000f0001c00c00020001000151800009036e7331026973c010c00c00020001000151800006036e7332c028c02400010001000151800004d5852102c03900010001000151800004d5c41503 + +43970 +490f00100001000000000001026e73076e656473746174026e6c00000100010000290800000080000000 +490f80000001000000020003026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d0000291000000000000000 + +43971 +55d000000001000000000000036e7332076e65746c616e64026e6c00001c0001 +55d080000001000000020002036e7332076e65746c616e64026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +43972 +8aa900000001000000000000036e7332076e65746c616e64026e6c0000260001 +8aa980000001000000020002036e7332076e65746c616e64026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +43973 +6f3a00000001000000000000026e73076e65746c616e64026e6c00001c0001 +6f3a80000001000000020002026e73076e65746c616e64026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +43974 +b08d00000001000000000000026e73076e65746c616e64026e6c0000260001 +b08d80000001000000020002026e73076e65746c616e64026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +43975 +667100000001000000000000036e7332076e65746c616e64026e6c0000010001 +667180000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +43976 +752a00000001000000000000036e7332076e65746c616e64026e6c00001c0001 +752a80000001000000020002036e7332076e65746c616e64026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +43977 +363200000001000000000000036e7332076e65746c616e64026e6c0000260001 +363280000001000000020002036e7332076e65746c616e64026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +43978 +65cd00000001000000000000026e73076e65746c616e64026e6c0000010001 +65cd80000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +43979 +631600000001000000000000026e73076e65746c616e64026e6c00001c0001 +631680000001000000020002026e73076e65746c616e64026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +43980 +280328000001000000010000026e6c0000060001055f6c646170045f74637003706463065f6d7364637306726f63767565026e6c000021000100000258001c0000006401850a726f637365727665723206726f63767565026e6c00 +2803a8040000000000000000 + +43981 +2bb100000001000000000000026e73076e65746c616e64026e6c0000260001 +2bb180000001000000020002026e73076e65746c616e64026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +43982 +06af00000001000000000000076e65746d61696c0a726f636176656e747573026e6c0000010001 +06af80000001000000020002076e65746d61696c0a726f636176656e747573026e6c0000010001c0140002000100015180000d036e7331066e6c74726565c01fc01400020001000151800006036e7332c037c03300010001000151800004d4b20403c04c00010001000151800004d5881e45 + +43983 +2c4e0000000100000000000003777777117061726b6572656e616d7374657264616d026e6c0000010001 +2c4e8000000100000002000203777777117061726b6572656e616d7374657264616d026e6c0000010001c0100002000100015180000d026e73076b6e6f77617265c022c01000020001000151800006036e7332c039c03600010001000151800004c3402003c04f00010001000151800004c340202b + +43984 +9f91000000010000000000000a7377697463686a6f6273026e6c0000010001 +9f91800000010000000200020a7377697463686a6f6273026e6c0000010001c00c00020001000151800009036e7331026973c017c00c00020001000151800006036e7332c02fc02b00010001000151800004d5852102c04000010001000151800004d5c41503 + +43985 +025a00000001000000000000116c6f72616e676572696574696c62757267026e6c0000020001 +025a80000001000000020002116c6f72616e676572696574696c62757267026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec01ec00c00020001000151800006036e7332c036c03200010001000151800004c29f4906c04a00010001000151800004c29fb004 + +43986 +645a00000001000000000000036d783004696c7365026e6c0000010001 +645a80000001000000030003036d783004696c7365026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c029000100010001518000043e45a282c03b000100010001518000043e45a283c04d000100010001518000043e45a284 + +43987 +000000007002ff00758500000204055001010402 +000080010000000000000000 + +43988 +8786000000010000000000000477697368036e6574026e6c00000f0001 +8786840300010000000100000477697368036e6574026e6c00000f0001c01500060001000038400036026e730f646f6d61696e2d7265676973747279c0150a686f73746d6173746572c02c0bf1e540000070800000384000278d0000003840 + +43989 +ff450000000100000000000003777777036e7469026e6c0000010001 +ff458000000100000002000003777777036e7469026e6c0000010001c01000020001000151800016036e73610c73697465657874656e64657203636f6d00c01000020001000151800006036e7362c02c + +43990 +cb7c00000001000000000000036e733109666972737466696e64026e6c0000010001 +cb7c80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43991 +5b0b00000001000000000000037777770661742d647767026e6c0000010001 +5b0b80000001000000020000037777770661742d647767026e6c0000010001c01000020001000151800011036e733107636174616c6f6703636f6d00c01000020001000151800006036e7333c02f + +43992 +b8873df25010ff00ab5b0000000000000000 +b887bdf40000000000000000 + +43993 +e92600000001000000000000037777770b7765626164766973653475026e6c0000010001 +e92680000001000000020002037777770b7765626164766973653475026e6c0000010001c01000020001000151800010036e733109686f73746e65746276c01cc01000020001000151800006036e7332c034c0300001000100015180000451113264c04c00010001000151800004d5c42851 + +43994 +b8873df25018ff001b780000008f5b0e000000010001000000000f313034373937323032303234322d330000f900010f313034373937323032303234322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afe3d403c4fbd0003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 +b887bdf40000000000000000 + +43995 +b8873e005011fef2aac90000000000000000 +b887be040000000000000000 + +43996 +c37b00000001000000000000036e733209666972737466696e64026e6c0000010001 +c37b80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +43997 +000000007002ff001e8b00000204055001010402 +000080010000000000000000 + +43998 +a400000000010000000000000c64656c667a696a6c2d677469026e6c00000f0001 +a400840300010000000100000c64656c667a696a6c2d677469026e6c00000f0001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +43999 +03be000000010000000000000867656172736f6674026e6c00001c0001 +03be800000010000000200000867656172736f6674026e6c00001c0001c00c00020001000151800014026e730b686f6c6c616e64686f7374036e657400c00c00020001000151800006036e7332c02c + +44000 +b8873e015010fef2aac80000000000000000 +b887be040000000000000000 + +44001 +f2ba000000010000000000000377777705666964696e026e6c0000010001 +f2ba800000010000000200020377777705666964696e026e6c0000010001c0100002000100015180000b026e7305706c616e74c016c01000020001000151800006036e7332c02dc02a00010001000151800004d59f0037c04100010001000151800004d59f0046 + +44002 +b887f30b5010ff009f470000000000000000 + + +44003 +b0bb000000010000000000000a776f726c646f6e6c696e026e6c0000ff0001 +b0bb840300010000000100000a776f726c646f6e6c696e026e6c0000ff0001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +44004 +8c6700000001000000000000036e733109666972737466696e64026e6c0000010001 +8c6780000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44005 +23d200000001000000000000036e73330767617574656e67026e6c0000010001 +23d280000001000000020000036e73330767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +44006 +23d300000001000000000000036e73340767617574656e67026e6c0000010001 +23d380000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +44007 +75fd00000001000000000000047573686e026e6c00000f0001 +75fd80000001000000020000047573686e026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c029 + +44008 +2457000000010000000000000377777709686973746f63617361026e6c0000010001 +2457800000010000000300020377777709686973746f63617361026e6c0000010001c0100002000100015180000d036e733106776964657873c01ac01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c032c02e00010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +44009 +619600000001000000000000056c6f72656c026e6c0000020001 +619680000001000000020002056c6f72656c026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec012c00c00020001000151800006036e7332c02ac02600010001000151800004c29f4906c03e00010001000151800004c29fb004 + +44010 +7fba00000001000000000000026e73076e656473746174026e6c0000010001 +7fba80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +44011 +07bc00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +07bc80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44012 +065800000001000000000000037777770c76616e6465726c696e64656e026e6c0000010001 +065880000001000000020000037777770c76616e6465726c696e64656e026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c035 + +44013 +2c4000000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +2c4080000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44014 +0e060000000100000000000006626570706965086d6963726f776562026e6c0000010001 +0e068000000100000002000206626570706965086d6963726f776562026e6c0000010001c0130002000100015180000a036e7331036e7873c01cc01300020001000151800006036e7332c034c03000010001000151800004d973c015c04600010001000151800004d973c102 + +44015 +b87f05905010446254fe0000000000000000 +b87f80010000000000000000 + +44016 +00f500000001000000000000036e7331036e7873026e6c0000010001 +00f580000001000000020002036e7331036e7873026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d973c015c03600010001000151800004d973c102 + +44017 +bfdd00000001000000000000036e7333076e656473746174026e6c0000010001 +bfdd80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +44018 +000b28000001000200000000026e6c0000060001066d657869636f037777770b77656e6e656b65736e6574026e6c00000500fe000000000000c01400010001000000000004c0a80003 +000ba8040000000000000000 + +44019 +0bbd0000000100000000000008657965746f657965026e6c00000f0001 +0bbd8000000100000002000208657965746f657965026e6c00000f0001c00c0002000100015180000d036e73310663617374656cc015c00c00020001000151800006036e7332c02dc02900010001000151800004c3558244c04200010001000151800004c3558245 + +44020 +51ec000000010000000000000377777708776f6f6e73646167026e6c0000010001 +51ec800000010000000200000377777708776f6f6e73646167026e6c0000010001c01000020001000151800011036e73310764726965626974036e657400c01000020001000151800006036e7332c031 + +44021 +d967000000010000000000000377777708706f737462616e6b026e6c0000010001 +d967800000010000000200020377777708706f737462616e6b026e6c0000010001c0100002000100015180000a036e733103696e67c019c01000020001000151800006036e7332c031c02d0001000100015180000491dd19c2c0430001000100015180000491dd5dc2 + +44022 +266200000001000000000000066d636d777777086c6f7374626f7973026e6c0000010001 +266280000001000000020002066d636d777777086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c0130002000100015180000906706f6c6c7578c013c030000100010001518000043e32050ac04500010001000151800004c297d912 + +44023 +00000000700240003e080000020405b401010402 +000080010000000000000000 + +44024 +11480000000100000000000003777777056c6f74746f026e6c0000010001 +11488000000100000002000203777777056c6f74746f026e6c0000010001c0100002000100015180000b036e733104696e666fc016c01000020001000151800006036e7332c02ec02a00010001000151800004504fc020c04100010001000151800004504fc021 + +44025 +f48400000001000000000000036e733209666972737466696e64026e6c0000010001 +f48480000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44026 +c4520000000100000000000003777777096465616a6163696564026e6c0000010001 +c4528000000100000002000203777777096465616a6163696564026e6c0000010001c01000020001000151800010036e7331096e657467726f756e64c01ac01000020001000151800006036e7332c032c02e000100010001518000045054e415c04a0001000100015180000451046014 + +44027 +0a140000000100000000000003777777086c65747373746174026e6c0000010001 +0a148000000100000002000203777777086c65747373746174026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02d00010001000151800004d973cc69c03f00010001000151800004d973cc6a + +44028 +c2680000000100000000000003777777057370656373026e6c0000010001 +c2688000000100000002000003777777057370656373026e6c0000010001c01000020001000151800010036e73310673697465347503636f6d00c01000020001000151800006036e7332c02e + +44029 +22930000000100000000000003726463026e6c00000f0001 +22938000000100000002000203726463026e6c00000f0001c00c000200010001518000100d7372726463303134646d7a3034c00cc00c000200010001518000100d7372726463303132646d7a3033c00cc02400010001000151800004d973e064c04000010001000151800004d973e054 + +44030 +bbb900000001000000000000037777770a707261676d612d616465026e6c0000010001 +bbb980000001000000020002037777770a707261676d612d616465026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01bc01000020001000151800006036e7332c032c02f00010001000151800004c26d0642c04700010001000151800004c26d0963 + +44031 +73260000000100000000000005646e732d31056c61646f74026e6c0000010001 +73268000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44032 +330800000001000000000000026e7308767575727765726b026e6c0000010001 +330880000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +44033 +2c910000000100000000000003777777057661646562026e6c0000010001 +2c918000000100000002000003777777057661646562026e6c0000010001c010000200010001518000170767726965746a65096171756173656e736503636f6d00c01000020001000151800012046e73303107696e746f756368036e657400 + +44034 +07d700000001000000000000034e53330f444f4d41494e2d5245474953545259024e4c0000010001 +07d780000001000000030002034e53330f444f4d41494e2d5245474953545259024e4c0000010001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +44035 +3d2800000001000000000000046e65777306697474707562026e6c0000010001 +3d2880000001000000020001046e65777306697474707562026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c14fcc01 + +44036 +73270000000100000000000005646e732d32056c61646f74026e6c0000010001 +73278000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44037 +43e500000001000000000000036d78320765766964656e74026e6c0000010001 +43e580000001000000020002036d78320765766964656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c36d19c4c03e00010001000151800004c36d1942 + +44038 +1f0b00000001000000000000036d78310765766964656e74026e6c0000010001 +1f0b80000001000000020002036d78310765766964656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c36d19c4c03e00010001000151800004c36d1942 + +44039 +f8b100000001000000000000036d78310765766964656e74026e6c0000010001 +f8b180000001000000020002036d78310765766964656e74026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02c00010001000151800004c36d19c4c03e00010001000151800004c36d1942 + +44040 +b8888b9e5010447022250000000000000000 + + +44041 +b2500000000100000000000002343703323031033136350236370a626c61636b686f6c657307656173796e6574026e6c0000010001 +b2508000000100000002000202343703323031033136350236370a626c61636b686f6c657307656173796e6574026e6c0000010001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +44042 +b8888b9e50184470c7750000008e386c000000010001000000000e3936323037323637343332322d330000f900010e3936323037323637343332322d330000f900ff00000000005403677373096d6963726f736f667403636f6d0032f53d9532f68f150003000000314e544c4d535350000100000097b200c00b000b002600000006000600200000004d455849434f57454e4e454b45534e45540000 + + +44043 +2fed000000010000000000000377777704766f6365026e6c0000010001 +2fed800000010000000200010377777704766f6365026e6c0000010001c0100002000100015180000d026e7307696e746f756368c015c01000020001000151800010026e7307696e746f756368036e657400c02900010001000151800004d413c001 + +44044 +aa7200000001000000000000036e733109666972737466696e64026e6c0000010001 +aa7280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44045 +2fae00000001000000000000036e7333076e656473746174026e6c0000010001 +2fae80000001000000020002036e7333076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d4482615c00c00010001000151800004d5c4021d + +44046 +8baf00000001000000000000026e73076e656473746174026e6c0000010001 +8baf80000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +44047 +e2e900000001000000000000036e733209666972737466696e64026e6c0000010001 +e2e980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44048 +61100000000100000000000003777777166465626f6572646572696a2d6265656b62657267656e026e6c0000010001 +61108403000100000001000003777777166465626f6572646572696a2d6265656b62657267656e026e6c0000010001c02700060001000038400036026e730f646f6d61696e2d7265676973747279c0270a686f73746d6173746572c03e0bf1e540000070800000384000278d0000003840 + +44049 +b8888bac5011446221940000000000000000 + + +44050 +6e5100000001000000000000024e530f444f4d41494e2d5245474953545259026e6c0000010001 +6e5180000001000000030002024e530f444f4d41494e2d5245474953545259026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +44051 +0000000070024000a7870000020405b401010402 +000080010000000000000000 + +44052 +7b2500000001000000000000036e733109756e69736572766572026e6c0000010001 +7b2580000001000000020002036e733109756e69736572766572026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c3454b03c03c00010001000151800004d119a2fa + +44053 +e5b200000001000000000000036e733209756e69736572766572026e6c0000010001 +e5b280000001000000020002036e733209756e69736572766572026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004c3454b03c00c00010001000151800004d119a2fa + +44054 +3bb50000000100000000000006736572766572036f7664026e6c0000010001 +3bb58000000100000002000206736572766572036f7664026e6c0000010001c0130002000100015180000c036e73310564656d6f6ec017c01300020001000151800006036e7332c02fc02b00010001000151800004c29f4906c04300010001000151800004c29fb004 + +44055 +b8888bad5010446221930000000000000000 + + +44056 +bb0800000001000000000000037777770461616169026e6c0000010001 +bb0880000001000000030002037777770461616169026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +44057 +bc0200000001000000000000037777770d6d61757269636562616b6b6572026e6c0000010001 +bc0280000001000000020000037777770d6d61757269636562616b6b6572026e6c0000010001c01000020001000151800013046e733135087a6f6e656564697403636f6d00c01000020001000151800007046e733136c037 + +44058 +811e0000000100000000000005646e732d32056c61646f74026e6c0000010001 +811e8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44059 +811d0000000100000000000005646e732d31056c61646f74026e6c0000010001 +811d8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44060 +e88f00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +e88f80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44061 +178700000001000000000000037777770b6a62616b6c61617373656e026e6c0000010001 +178780000001000000020002037777770b6a62616b6c61617373656e026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c01cc01000020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +44062 +aeb700000001000000000000046d61696c036d6567026e6c00001c0001 +aeb780000001000000020000046d61696c036d6567026e6c00001c0001c0110002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0110002000100015180000805726f6b696ec030 + +44063 +5ff000000001000000000000046d61696c036d6567026e6c0000260001 +5ff080000001000000020000046d61696c036d6567026e6c0000260001c0110002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c0110002000100015180000805726f6b696ec030 + +44064 +f04d00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f04d80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44065 +68860000000100000000000004646e7331057467776562026e6c0000010001 +68868000000100000002000204646e7331057467776562026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac1cc03900010001000151800004d994ac1d + +44066 +34430000000100000000000004646e7332057467776562026e6c0000010001 +34438000000100000002000204646e7332057467776562026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d994ac1cc00c00010001000151800004d994ac1d + +44067 +5c3600000001000000000000036e73310f6578636c757369766564657369676e026e6c00001c0001 +5c3680000001000000020002036e73310f6578636c757369766564657369676e026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d97261bec04200010001000151800004d97261bd + +44068 +f74800000001000000000000036e73320f6578636c757369766564657369676e026e6c0000260001 +f74880000001000000020002036e73320f6578636c757369766564657369676e026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03400010001000151800004d97261bec00c00010001000151800004d97261bd + +44069 +5ce100000001000000000000036e73320f6578636c757369766564657369676e026e6c00001c0001 +5ce180000001000000020002036e73320f6578636c757369766564657369676e026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03400010001000151800004d97261bec00c00010001000151800004d97261bd + +44070 +7cec00000001000000000000036e73310f6578636c757369766564657369676e026e6c0000260001 +7cec80000001000000020002036e73310f6578636c757369766564657369676e026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d97261bec04200010001000151800004d97261bd + +44071 +c2c300000001000000000000037777771561647669657363656e7472756d6b6c61617373656e026e6c0000010001 +c2c380000001000000020002037777771561647669657363656e7472756d6b6c61617373656e026e6c0000010001c0100002000100015180000d036e733106786c6164736cc026c01000020001000151800006036e7332c03ec03a00010001000151800004d5a0da0ac0530001000100015180000451112ec3 + +44072 +8ed000000001000000000000036e733109666972737466696e64026e6c0000010001 +8ed080000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44073 +b71300000001000000000000036e733209666972737466696e64026e6c0000010001 +b71380000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44074 +cc4f00000001000000000000146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001 +cc4f80000001000000020002146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001c0210002000100015180000d026e73076e656473746174c024c02100020001000151800006036e7333c03bc03800010001000151800004d4482615c05100010001000151800004d5c4021d + +44075 +7fa600000001000000000000146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001 +7fa680000001000000020002146f736e6162727565636b65722d7a656974756e67027330026e6c0000010001c0210002000100015180000d026e73076e656473746174c024c02100020001000151800006036e7333c03bc03800010001000151800004d4482615c05100010001000151800004d5c4021d + +44076 +1e7b00000001000000000000036e7335046372696f026e6c0000010001 +1e7b80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44077 +5d8600000001000000000000036e7336046372696f026e6c0000010001 +5d8680000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44078 +83180000000100000000000003777777096f756467617374656c026e6c0000010001 +83188000000100000003000303777777096f756467617374656c026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc01ac0100002000100015180000704646e7332c033c0100002000100015180000704646e7333c033c02e00010001000151800004d44fe803c04800010001000151800004c3f5c782c05b00010001000151800004d44ff303 + +44079 +0ca70000000100000000000003777777087475746368666f72026e6c0000010001 +0ca78000000100000002000203777777087475746368666f72026e6c0000010001c01000020001000151800009036e7331026973c019c01000020001000151800006036e7332c031c02d00010001000151800004d5852102c04200010001000151800004d5c41503 + +44080 +901a00000001000000000000036e7331046372696f026e6c0000010001 +901a80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44081 +69410000000100000000000003777777056c6572656e026e6c0000010001 +69418000000100000002000203777777056c6572656e026e6c0000010001c0100002000100015180000a036e7331036e7873c016c01000020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +44082 +22c000000001000000000000036e7332046372696f026e6c0000010001 +22c080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44083 +cc3400000001000000000000056461636f73026e6c0000ff0001 +cc3480000001000000030001056461636f73026e6c0000ff0001c00c0002000100015180000e026e7308767575727765726bc012c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c044c026000100010001518000043efa0202 + +44084 +7fd200000001000000000000037777770f686f6d6f736578706c6161746a6573026e6c0000010001 +7fd280000001000000020002037777770f686f6d6f736578706c6161746a6573026e6c0000010001c0100002000100015180000c04646e73310470696e73c020c0100002000100015180000704646e7332c039c03400010001000151800004d9c26101c04c00010001000151800004d9c26002 + +44085 +aa8a00000001000000000000026e73066863636e6574026e6c0000010001 +aa8a80000001000000020000026e73066863636e6574026e6c0000010001c00f000200010001518000180661757468313003646e7307696e7465726e6c036e657400c00f0002000100015180000906617574683230c031 + +44086 +066a0000000100000000000003627676026e6c00000f0001 +066a8000000100000002000203627676026e6c00000f0001c00c0002000100015180000e036e7331076167726f776562c010c00c00020001000151800006036e7332c028c024000100010001518000043e5de217c03e000100010001518000043e5de222 + +44087 +97450000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +97458000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44088 +b88953b450104470c38d0000000000000000 +b889d3b40000000000000000 + +44089 +b88953b450184470223e0000008e810c000000010001000000000e3936323037323637343332322d320000f900010e3936323037323637343332322d320000f900ff00000000005403677373096d6963726f736f667403636f6d0032f53d9532f68f150003000000314e544c4d535350000100000097b200c00b000b002600000006000600200000004d455849434f57454e4e454b45534e45540000 +b889d3b40000000000000000 + +44090 +ee0f000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +ee0f840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +44091 +d53d00000001000000000000066765617064330364736c0b7669616e6574776f726b73026e6c0000010001 +d53d80000001000000020002066765617064330364736c0b7669616e6574776f726b73026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c03700010001000151800004d43d0f08c04900010001000151800004d43d19e2 + +44092 +c97200000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c97280000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44093 +627b00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +627b80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44094 +b88953c250114462c2fc0000000000000000 +b889d3c40000000000000000 + +44095 +5dae000000010000000000000377777708636f72656e646f6e026e6c0000010001 +5dae800000010000000200000377777708636f72656e646f6e026e6c0000010001c01000020001000151800011036e7333076361706361766503636f6d00c01000020001000151800006036e7334c031 + +44096 +0000000070024000525e0000020405b401010402 +000080010000000000000000 + +44097 +10630000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +10638000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +44098 +eeee00000001000000000000036e73320564656d6f6e026e6c0000010001 +eeee80000001000000030002036e73320564656d6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000f036e73320564656d6f6e036e657400c02a00010001000151800004c29f4906c00c00010001000151800004c29fb004 + +44099 +30d300000001000000000000036e73310564656d6f6e026e6c0000010001 +30d380000001000000030002036e73310564656d6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000f036e73320564656d6f6e036e657400c00c00010001000151800004c29f4906c03800010001000151800004c29fb004 + +44100 +196400000001000000000000037777770d72656461637469657374617274026e6c0000010001 +196480000001000000030002037777770d72656461637469657374617274026e6c0000010001c0100002000100015180000d036e733106776964657873c01ec01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +44101 +8a02000000010000000000000c6c6f72656c70617261736f6c026e6c0000020001 +8a02800000010000000200020c6c6f72656c70617261736f6c026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec019c00c00020001000151800006036e7332c031c02d00010001000151800004c29f4906c04500010001000151800004c29fb004 + +44102 +b0a600000001000000000000064d41545249580a72656d636b75696a6572026e6c0000060001 +b0a684030001000000010000064d41545249580a72656d636b75696a6572026e6c0000060001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +44103 +b88953c350104462c2fb0000000000000000 +b889d3c40000000000000000 + +44104 +5372000000010000000000000a74657273706567656c74026e6c00001c0001 +5372800000010000000200020a74657273706567656c74026e6c00001c0001c00c00020001000151800012026e730c686f6c696461796d65646961c017c00c00020001000151800006036e7333c02ec02b000100010001518000049265424dc049000100010001518000045054ebbf + +44105 +3b1e00000001000000000000076d61696c616d730c72656564627573696e657373026e6c00001c0001 +3b1e80000001000000020001076d61696c616d730c72656564627573696e657373026e6c00001c0001c01400020001000151800012036e733107686f7374696e6703656269c021c0140002000100015180000d03646e73036b706e03636f6d00c03500010001000151800004c1ad9c46 + +44106 +fba70000000100000000000007746f7368696261026e6c0000010001 +fba78000000100000002000107746f7368696261026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02800010001000151800004c1ad6a42 + +44107 +b88b7a195010447047fd0000000000000000 +b88bfa140000000000000000 + +44108 +b88b7a195018447009840000008e1e36000000010001000000000e3936323037323637343332322d320000f900010e3936323037323637343332322d320000f900ff00000000005403677373096d6963726f736f667403636f6d0032f53d9532f68f150003000000314e544c4d535350000100000097b200c00b000b002600000006000600200000004d455849434f57454e4e454b45534e45540000 +b88bfa140000000000000000 + +44109 +d83b00000001000000000000046d61696c0e76616e686565727761617264656e026e6c0000010001 +d83b80000001000000020002046d61696c0e76616e686565727761617264656e026e6c0000010001c0110002000100015180000f026e7309656174736572766572c020c01100020001000151800006036e7332c037c03400010001000151800004d4cb0e42c04f00010001000151800004d4cb1221 + +44110 +8c7f000000010000000000000268740567616d6b6f026e6c0000010001 +8c7f800000010000000200000268740567616d6b6f026e6c0000010001c00f0002000100015180000f04686e73300774697363616c69c015c00f0002000100015180000704686e7331c02e + +44111 +3d8000000001000000000000096b7261616d69646565026e6c0000010001 +3d8080000001000000020002096b7261616d69646565026e6c0000010001c00c00020001000151800010036e7331097465727261686f7374c016c00c00020001000151800006036e7332c02ec02a0001000100015180000451044ecec046000100010001518000044500d44a + +44112 +b88b7a2750114462476c0000000000000000 +b88bfa240000000000000000 + +44113 +96c800000001000000000000066b616d70656e026e6c0000010001 +96c880000001000000020002066b616d70656e026e6c0000010001c00c0002000100015180000e026e73086d656761706c6578c013c00c00020001000151800006036e7331c02ac02700010001000151800004504f6101c04100010001000151800004504f6102 + +44114 +7a0900000001000000000000037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001 +7a0980000001000000020002037777771c64656261736b657462616c6c7369746576616e6e656465726c616e64026e6c0000010001c0100002000100015180000f026e7309656174736572766572c02dc01000020001000151800006036e7332c044c04100010001000151800004d4cb0e42c05c00010001000151800004d4cb1221 + +44115 +00ae0000000100000000000009656173792d64697363026e6c00000f0001 +00ae8000000100000002000209656173792d64697363026e6c00000f0001c00c0002000100015180000b036e73310470696e65c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d59c0201c04100010001000151800004c3c1a303 + +44116 +4e96000000010000000000000377777704616c6469026e6c0000010001 +4e96800000010000000200000377777704616c6469026e6c0000010001c0100002000100015180001a046e73303904626e69630b62657274656c736d616e6e02646500c01000020001000151800007046e733137c02e + +44117 +42700000000100000000000003777777027669026e6c0000010001 +42708000000100000002000203777777027669026e6c0000010001c0100002000100015180000c026e7306787334616c6cc013c01000020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44118 +54380000000100000000000003777777066e6f76617476026e6c0000010001 +54388000000100000002000203777777066e6f76617476026e6c0000010001c01000020001000151800010066d696e6e6965066f6d726f6570c017c0100002000100015180000805726f62696ec032c02b00010001000151800004913a1e04c04700010001000151800004913a1a34 + +44119 +65ca00000001000000000000066c6f72696a6e026e6c0000020001 +65ca80000001000000020002066c6f72696a6e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +44120 +879b00000001000000000000036e73330e61726765776562686f7374696e67026e6c0000010001 +879b80000001000000030003036e73330e61726765776562686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7330c010c01000020001000151800002c00cc03300010001000151800004c3561682c04400010001000151800004c3561683c00c00010001000151800004d5de0bfa + +44121 +8e6200000001000000000000037777770777656777696a73026e6c0000010001 +8e6280000001000000020002037777770777656777696a73026e6c0000010001c01000020001000151800013036e73310c62656472696a76656e776562c018c01000020001000151800006036e7332c030c02c00010001000151800004d90867fec04b00010001000151800004c1ad2bfe + +44122 +b88b7a2850104462476b0000000000000000 +b88bfa240000000000000000 + +44123 +b2b600000001000000000000037777771472756974657273706f72746a6f766965686f6666026e6c0000010001 +b2b680000001000000020000037777771472756974657273706f72746a6f766965686f6666026e6c0000010001c0100002000100015180000f036e73310561676e2d65036e657400c01000020001000151800006036e7332c03d + +44124 +1d2e00000001000000000000046d61696c066368656c6c6f026e6c0000010001 +1d2e80000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +44125 +7c0c000000010000000000000377777709736578687569736a65026e6c0000010001 +7c0c800000010000000300000377777709736578687569736a65026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036c0100002000100015180000a076e73686f737433c036 + +44126 +203b00000001000000000000037777770e67726174697370757a7a656c656e026e6c0000010001 +203b80000001000000020000037777770e67726174697370757a7a656c656e026e6c0000010001c01000020001000151800010056e73313530047061697203636f6d00c0100002000100015180000c056e73303030036e7330c03e + +44127 +15ad0010000100000000000108737465653833313905737065656406706c616e6574026e6c00000100010000290800000080000000 +15ad8000000100000003000408737465653833313905737065656406706c616e6574026e6c0000010001c01b0002000100015180000b046e73303803777873c022c01b00020001000151800007046e733039c03bc01b00020001000151800006036e7334c03bc03600010001000151800004c3790128c04d00010001000151800004c3790143c06000010001000151800004d5ef9a650000291000000000000000 + +44128 +77ec0010000100000000000108737465653833313905737065656406706c616e6574026e6c00002600010000290800000080000000 +77ec8000000100000003000408737465653833313905737065656406706c616e6574026e6c0000260001c01b0002000100015180000b046e73303803777873c022c01b00020001000151800007046e733039c03bc01b00020001000151800006036e7334c03bc03600010001000151800004c3790128c04d00010001000151800004c3790143c06000010001000151800004d5ef9a650000291000000000000000 + +44129 +27d800000001000000000000147370656b736e696a6465727472616e73706f7274026e6c00000f0001 +27d880000001000000020002147370656b736e696a6465727472616e73706f7274026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c021c00c00020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +44130 +3bf60000000100000000000008737465653833313905737065656406706c616e6574026e6c0000010001 +3bf68000000100000003000308737465653833313905737065656406706c616e6574026e6c0000010001c01b0002000100015180000b046e73303803777873c022c01b00020001000151800007046e733039c03bc01b00020001000151800006036e7334c03bc03600010001000151800004c3790128c04d00010001000151800004c3790143c06000010001000151800004d5ef9a65 + +44131 +8ef30000000100000000000008737465653833313905737065656406706c616e6574026e6c0000260001 +8ef38000000100000003000308737465653833313905737065656406706c616e6574026e6c0000260001c01b0002000100015180000b046e73303803777873c022c01b00020001000151800007046e733039c03bc01b00020001000151800006036e7334c03bc03600010001000151800004c3790128c04d00010001000151800004c3790143c06000010001000151800004d5ef9a65 + +44132 +d1d500000001000000000000036e733109666972737466696e64026e6c0000010001 +d1d580000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44133 +8cb900000001000000000000036e733209666972737466696e64026e6c0000010001 +8cb980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44134 +29f9000000010000000000000377777703657664026e6c0000010001 +29f9800000010000000200000377777703657664026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +44135 +85e9000000010000000000000377777706617265613137026e6c0000010001 +85e9800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +44136 +bf6200000001000000000000037777770879706576656e7473026e6c0000010001 +bf6280000001000000020000037777770879706576656e7473026e6c0000010001c0100002000100015180000c026e7306766576696461c019c01000020001000151800006036e7332c030 + +44137 +3be400000001000000000000037777770a696e666f6b6170706572026e6c0000010001 +3be484030001000000010000037777770a696e666f6b6170706572026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +44138 +40b000000001000000000000026e73077461736b696e67026e6c0000010001 +40b080000001000000030001026e73077461736b696e67026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00f0002000100015180000c026e730678786c696e6bc017c00c00010001000151800004c3c1cf02 + +44139 +9df2000000010000000000000673656375726507656e64656d6f6c026e6c0000010001 +9df2800000010000000200000673656375726507656e64656d6f6c026e6c0000010001c0130002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0130002000100015180000d036e7332036b706e036e657400 + +44140 +2e3300000001000000000000026e7311656e7465727072697365686f7374696e67026e6c0000260001 +2e3380000001000000020001026e7311656e7465727072697365686f7374696e67026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004d5358e02 + +44141 +123d0000000100000000000004736d747011656e7465727072697365686f7374696e67026e6c0000010001 +123d8000000100000002000104736d747011656e7465727072697365686f7374696e67026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c03700010001000151800004d5358e02 + +44142 +799100000001000000000000066c6f726f6276026e6c0000020001 +799180000001000000020002066c6f726f6276026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +44143 +b87f05905011446254fe0000000000000000 +b87f80010000000000000000 + +44144 +728100000001000000000000024e53085241424f42414e4b026e6c0000010001 +728180000001000000020001024e53085241424f42414e4b026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000b026e73026e6c036e657400c00c0001000100015180000491484fde + +44145 +b87f05915010446254fd0000000000000000 +b87f80010000000000000000 + +44146 +20cc00000001000000000000037777770b6d61726b74706c61617473026e6c0000010001 +20cc80000001000000020000037777770b6d61726b74706c61617473026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c034 + +44147 +00e800000001000000000000036e7332076e65746c616e64026e6c0000010001 +00e880000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +44148 +637f00000001000000000000026e73076e65746c616e64026e6c0000010001 +637f80000001000000020002026e73076e65746c616e64026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d9aa2042c03900010001000151800004d9aa2c06 + +44149 +c21300000001000000000000046b696c6f0c6d657373616765626f617264026e6c0000010001 +c21380000001000000020000046b696c6f0c6d657373616765626f617264026e6c0000010001c01100020001000151800012026e73096e6c686f7374696e67036e657400c01100020001000151800006036e7331c035 + +44150 +fb6a0000000100000000000006706f7274616c0c74656c6567726161666e6574026e6c0000010001 +fb6a8000000100000002000006706f7274616c0c74656c6567726161666e6574026e6c0000010001c01300020001000151800013036e73300974656c656772616166036e657400c01300020001000151800006036e7331c038 + +44151 +fa4700000001000000000000037777770a6e6f6f7264626f726768026e6c0000010001 +fa4780000001000000030000037777770a6e6f6f7264626f726768026e6c0000010001c01000020001000151800013036e7331096a61636f62736e657403636f6d00c01000020001000151800012046e73303107696e746f756368036e657400c01000020001000151800006036e7332c033 + +44152 +089d00000001000000000000036e7332076e656473746174026e6c0000010001 +089d80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44153 +d9c9000000010000000000000e67757972612d65786368616e6765086775797261696e74026e6c0000010001 +d9c9800000010000000200000e67757972612d65786368616e6765086775797261696e74026e6c0000010001c01b0002000100015180000f036e73310571696e6970036e657400c01b00020001000151800006036e7332c03c + +44154 +b33700000001000000000000036e7334076e656473746174026e6c0000010001 +b33780000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44155 +035600000001000000000000037777770d6d6973756e64657273746f6f64026e6c0000010001 +035680000001000000020000037777770d6d6973756e64657273746f6f64026e6c0000010001c0100002000100015180000f036e7331053132337873036e657400c01000020001000151800006036e7333c036 + +44156 +bd0b00000001000000000000036e733109666972737466696e64026e6c0000010001 +bd0b80000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44157 +a69e00000001000000000000036e733209666972737466696e64026e6c0000010001 +a69e80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44158 +09f80000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +09f88000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44159 +7b09000000010000000000000b66612d7269657476656c64056d79776562026e6c0000020001 +7b09800000010000000200000b66612d7269657476656c64056d79776562026e6c0000020001c018000200010001518000160b6d797765622d61757468300777616e61646f6fc01ec0180002000100015180000e0b6d797765622d6175746831c03e + +44160 +ae9600000001000000000000036e733309736974656279746573026e6c0000010001 +ae9680000001000000030003036e733309736974656279746573026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02e00010001000151800004c2a55e5ac04000010001000151800004c356781cc00c000100010001518000043ec58016 + +44161 +c7860000000100000000000005646e732d31056c61646f74026e6c0000010001 +c7868000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44162 +c5cb0000000100000000000005646e732d32056c61646f74026e6c0000010001 +c5cb8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44163 +e0fc0000000100000000000003777777066d6174757265026e6c0000010001 +e0fc8000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +44164 +11a700000001000000000000066472616b6573026e6c00001c0001 +11a780000001000000020002066472616b6573026e6c00001c0001c00c0002000100015180000c026e7306787334616c6cc013c00c00020001000151800006036e7332c02ac02700010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44165 +784f00000001000000000000036e73310974656c656b6162656c026e6c0000010001 +784f80000001000000020002036e73310974656c656b6162656c026e6c0000010001c0100002000100015180000a036e733103757063c01ac0100002000100015180000e046e733032066368656c6c6fc01ac02e00010001000151800004d48e1c42c04400010001000151800004d4534483 + +44166 +322100000001000000000000046a706f77076767772d6f7073026e6c0000010001 +322180000001000000020002046a706f77076767772d6f7073026e6c0000010001c0110002000100015180000f026e7309656174736572766572c019c01100020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +44167 +83cf00100001000000000001036e7332076e656473746174026e6c00000100010000290800000000000000 +83cf80000001000000020003036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +44168 +178100100001000000000001036e7332076e656473746174026e6c00002600010000290800000000000000 +178180000001000000020003036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +44169 +101d00100001000000000001036e7334076e656473746174026e6c00000100010000290800000000000000 +101d80000001000000020003036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +44170 +eed900100001000000000001036e7334076e656473746174026e6c00002600010000290800000000000000 +eed980000001000000020003036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d0000291000000000000000 + +44171 +3caf00000001000000000000037777770e616a61782532306f726c616e646f026e6c0000010001 +3caf84030001000000010000037777770e616a61782532306f726c616e646f026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +44172 +4db900000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +4db980000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +44173 +f5a700000001000000000000036d346e056d62757975026e6c0000010001 +f5a780000001000000020000036d346e056d62757975026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c02d + +44174 +82b800000001000000000000036e733109756e69736f75726365026e6c0000010001 +82b880000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +44175 +65ac000000010000000000000377777703777264026e6c0000010001 +65ac800000010000000200020377777703777264026e6c0000010001c0100002000100015180000f036e733108696e74726f776562c014c01000020001000151800006036e7332c02cc0280001000100015180000450416028c04300010001000151800004c356780c + +44176 +646600000001000000000000037777771275747265636874736e6965757773626c6164026e6c0000010001 +646680000001000000020002037777771275747265636874736e6965757773626c6164026e6c0000010001c0100002000100015180000e036e7331076e657463617374c023c01000020001000151800006036e7332c03bc03700010001000151800004c2970101c05100010001000151800004c297012d + +44177 +765900000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +765980000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44178 +8a1b00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +8a1b80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44179 +bd8700000001000000000000036e733503777873026e6c0000010001 +bd8780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44180 +e37800000001000000000000046e73303803777873026e6c0000010001 +e37880000001000000030003046e73303803777873026e6c0000010001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44181 +328500000001000000000000046e73303903777873026e6c0000010001 +328580000001000000030003046e73303903777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44182 +b2b50000000100000000000004726f6f7307656e64656d6f6c026e6c0000010001 +b2b58000000100000002000004726f6f7307656e64656d6f6c026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c0110002000100015180000d036e7332036b706e036e657400 + +44183 +6058000000010000000000000974656d702d72697465026e6c00000f0001 +6058800000010000000200020974656d702d72697465026e6c00000f0001c00c0002000100015180000c026e73067574722d6978c016c00c00020001000151800006036e7332c02dc02a0001000100015180000451113206c04200010001000151800004d5c42806 + +44184 +55d500000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +55d580000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44185 +c70c00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +c70c80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44186 +52fa00000001000000000000037777770865617374626f7973026e6c0000010001 +52fa80000001000000020002037777770865617374626f7973026e6c0000010001c0100002000100015180000c04646e73310470696e73c019c0100002000100015180000704646e7332c032c02d00010001000151800004d9c26101c04500010001000151800004d9c26002 + +44187 +fb2000000001000000000000036e73310b7669616e6574776f726b73026e6c00001c0001 +fb2080000001000000020002036e73310b7669616e6574776f726b73026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +44188 +f55400000001000000000000036e73310b7669616e6574776f726b73026e6c0000260001 +f55480000001000000020002036e73310b7669616e6574776f726b73026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d43d0f08c03e00010001000151800004d43d19e2 + +44189 +99f300000001000000000000036e73320b7669616e6574776f726b73026e6c00001c0001 +99f380000001000000020002036e73320b7669616e6574776f726b73026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +44190 +7a4500000001000000000000036e73320b7669616e6574776f726b73026e6c0000260001 +7a4580000001000000020002036e73320b7669616e6574776f726b73026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03000010001000151800004d43d0f08c00c00010001000151800004d43d19e2 + +44191 +4b58000000010000000000000b7374617274706167696e61026e6c0000010001 +4b58800000010000000300030b7374617274706167696e61026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +44192 +d9e800000001000000000000056d61696c33057669736971026e6c0000010001 +d9e880000001000000020002056d61696c33057669736971026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000d036e733206787334616c6cc018c02c00010001000151800004507e17d4c03d00010001000151800004c26d0963 + +44193 +b02300000001000000000000026e7303626f73026e6c0000010001 +b02380000001000000020002026e7303626f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5881e43c03500010001000151800004d5139203 + +44194 +6c4800000001000000000000036e733203626f73026e6c0000010001 +6c4880000001000000020002036e733203626f73026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004d5881e43c00c00010001000151800004d5139203 + +44195 +4532001000010000000000010377777707746f7067616d65026e6c00000100010000290800000080000000 +4532800000010000000200010377777707746f7067616d65026e6c0000010001c0100002000100015180000f02763109706365787472656d65c018c01000020001000151800005027632c02f0000291000000000000000 + +44196 +7d1c00000001000000000000037777770462656872026e6c0000010001 +7d1c80000001000000030002037777770462656872026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +44197 +4e02000000010000000000000377777702707a026e6c0000010001 +4e02800000010000000300010377777702707a026e6c0000010001c0100002000100015180000e026e7308767575727765726bc013c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c045c027000100010001518000043efa0202 + +44198 +af3600100001000000000001036e73310b776f726c646f6e6c696e65026e6c00000100010000290800000000000000 +af3680000001000000030003036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f133250000291000000000000000 + +44199 +abe200100001000000000001036e73320b776f726c646f6e6c696e65026e6c00000100010000290800000000000000 +abe280000001000000030003036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f133250000291000000000000000 + +44200 +e2e6000000010000000000000770726576696577056e6c736d73026e6c0000010001 +e2e6800000010000000200000770726576696577056e6c736d73026e6c0000010001c01400020001000151800011036e73310a6461632d706c616e6574c01ac01400020001000151800006036e7332c032 + +44201 +717300000001000000000000036e73310a6461632d706c616e6574026e6c0000010001 +717380000001000000030003036e73310a6461632d706c616e6574026e6c0000010001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +44202 +ceca00000001000000000000036e73320a6461632d706c616e6574026e6c0000010001 +ceca80000001000000030003036e73320a6461632d706c616e6574026e6c0000010001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +44203 +f63900000001000000000000036e7331066e6c74726565026e6c0000010001 +f63980000001000000020002036e7331066e6c74726565026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4b20403c03900010001000151800004d5881e45 + +44204 +f0e60000000100000000000003777777097768656c6672696368026e6c0000010001 +f0e68000000100000002000003777777097768656c6672696368026e6c0000010001c0100002000100015180000f036e7331056279303038036e657400c01000020001000151800006036e7332c032 + +44205 +c1dd000000010000000000000377777707746f7067616d65026e6c0000010001 +c1dd800000010000000200000377777707746f7067616d65026e6c0000010001c0100002000100015180000f02763109706365787472656d65c018c01000020001000151800005027632c02f + +44206 +7aad0000000100000000000003777777097765626d6173746572026e6c0000010001 +7aad8000000100000002000003777777097765626d6173746572026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c031 + +44207 +0cdd00000001000000000000037777770e686f74656c617070656c73636861026e6c0000010001 +0cdd80000001000000020002037777770e686f74656c617070656c73636861026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01fc01000020001000151800006036e7332c036c03300010001000151800004d4cb0e42c04e00010001000151800004d4cb1221 + +44208 +61db00000001000000000000036e733103646c61026e6c0000010001 +61db80000001000000020002036e733103646c61026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1a412c036000100010001518000043eb1a413 + +44209 +156f00000001000000000000036e733203646c61026e6c0000010001 +156f80000001000000020002036e733203646c61026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc028000100010001518000043eb1a412c00c000100010001518000043eb1a413 + +44210 +aae200000001000000000000036e73310b776f726c646f6e6c696e65026e6c0000010001 +aae280000001000000030002036e73310b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +44211 +557100000001000000000000036e73320b776f726c646f6e6c696e65026e6c0000010001 +557180000001000000030002036e73320b776f726c646f6e6c696e65026e6c0000010001c0100002000100015180000f04616e73310774697363616c69c01cc0100002000100015180000704616e7332c035c0100002000100015180001404616e73330a74697363616c696e657402626500c03000010001000151800004c3f14d38c04b00010001000151800004c3f13325 + +44212 +0f3d000000010000000000000d70616e6461736f667477617265026e6c0000ff0001 +0f3d800000010000000200000d70616e6461736f667477617265026e6c0000ff0001c00c0002000100015180000c03646e73036b706e02626500c00c00020001000151800005026e73c032 + +44213 +418300000001000000000000026e73077374616e6e6574026e6c0000010001 +418380000001000000020002026e73077374616e6e6574026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5852414c03900010001000151800004d5852418 + +44214 +143900000001000000000000036e733107676f6c69617468026e6c0000010001 +143980000001000000020002036e733107676f6c69617468026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +44215 +3e5200000001000000000000036e733107676f6c69617468026e6c00001c0001 +3e5280000001000000020002036e733107676f6c69617468026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +44216 +9f2900000001000000000000036e733107676f6c69617468026e6c0000260001 +9f2980000001000000020002036e733107676f6c69617468026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054f379c03a00010001000151800004507f48c2 + +44217 +e3dd00000001000000000000046e73303903777873026e6c00001c0001 +e3dd80000001000000030003046e73303903777873026e6c00001c0001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44218 +efb600000001000000000000046e73303903777873026e6c0000260001 +efb680000001000000030003046e73303903777873026e6c0000260001c01100020001000151800007046e733038c011c01100020001000151800002c00cc01100020001000151800006036e7334c011c02900010001000151800004c3790128c00c00010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44219 +cf6c00000001000000000000036e733503777873026e6c00001c0001 +cf6c80000001000000030003036e733503777873026e6c00001c0001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44220 +c5e700000001000000000000046e73303803777873026e6c00001c0001 +c5e780000001000000030003046e73303803777873026e6c00001c0001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44221 +bc2900000001000000000000036e733503777873026e6c0000260001 +bc2980000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44222 +c8db00000001000000000000046e73303803777873026e6c0000260001 +c8db80000001000000030003046e73303803777873026e6c0000260001c01100020001000151800002c00cc01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c00c00010001000151800004c3790128c03700010001000151800004c3790143c04a00010001000151800004d5ef9a65 + +44223 +6666000000010000000000000a6970353033636430353905737065656406706c616e6574026e6c0000010001 +6666800000010000000300030a6970353033636430353905737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +44224 +45520000000100000000000009686869656d73747261026e6c0000010001 +45528000000100000002000009686869656d73747261026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c030 + +44225 +1fd1000000010000000000000c61727469732d686f72656361026e6c0000010001 +1fd1800000010000000200000c61727469732d686f72656361026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c033 + +44226 +4c4d00000001000000000000036e7332076e656473746174026e6c0000010001 +4c4d80000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44227 +9ada00000001000000000000036e7332076e656473746174026e6c0000260001 +9ada80000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44228 +e6ac00000001000000000000036e7334076e656473746174026e6c0000010001 +e6ac80000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44229 +735600000001000000000000036e7334076e656473746174026e6c0000260001 +735680000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +44230 +84ef00000001000000000000037777770773657877697368026e6c0000010001 +84ef80000001000000020002037777770773657877697368026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac018c01000020001000151800006036e7332c030c02c00010001000151800004d5efa011c04700010001000151800004d5efa075 + +44231 +821700000001000000000000037777771074686561746572626f75776b756e6465026e6c0000010001 +821780000001000000020001037777771074686561746572626f75776b756e6465026e6c0000010001c0100002000100015180000e036e7331076f6d732d6e6574c021c01000020001000151800006036e7333c039c03500010001000151800004d5efb22f + +44232 +469a000000010000000000000377777711706574657270616e7370656564726f636b026e6c0000010001 +469a800000010000000200000377777711706574657270616e7370656564726f636b026e6c0000010001c0100002000100015180001504646e73310a65617379736572766572036e657400c0100002000100015180000704646e7332c03b + +44233 +0d0900000001000000000000064b5542535531034b5542024e4c0000010001 +0d0980000001000000030003064b5542535531034b5542024e4c0000010001c01300020001000151800009066b7562737532c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c017c02b0001000100015180000489380028c00c000100010001518000048938001bc04e00010001000151800004c0576a65 + +44234 +d52f0000000100000000000003777777067878786f6d61026e6c0000010001 +d52f8000000100000002000003777777067878786f6d61026e6c0000010001c0100002000100015180000d036e7331046564697302617400c01000020001000151800006036e7332c02f + +44235 +8d2300100001000000000001036e733503777873026e6c00000100010000290800000000000000 +8d2380000001000000030004036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a650000291000000000000000 + +44236 +451500000001000000000000023465026e6c00000f0001 +451580000001000000020002023465026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec00fc00c00020001000151800006036e7332c027c02300010001000151800004c29f4906c03b00010001000151800004c29fb004 + +44237 +bfd700000001000000000000026e730f646f6d61696e2d7265676973747279026e6c00001c0001 +bfd780000001000000030002026e730f646f6d61696e2d7265676973747279026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +44238 +391500000001000000000000026e730f646f6d61696e2d7265676973747279026e6c0000260001 +391580000001000000030002026e730f646f6d61696e2d7265676973747279026e6c0000260001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +44239 +7c6f00000001000000000000037777770b6465776966616e73697465026e6c0000010001 +7c6f80000001000000020000037777770b6465776966616e73697465026e6c0000010001c0100002000100015180000d036e7331046564697302617400c01000020001000151800006036e7332c034 + +44240 +17a100000001000000000000037777770b787472656d65766964656f026e6c0000010001 +17a180000001000000020002037777770b787472656d65766964656f026e6c0000010001c0100002000100015180000b036e7331046e732d31c01cc01000020001000151800006036e7332c034c030000100010001518000045045a0cdc04700010001000151800004d4cceec8 + +44241 +e3ed000000010000000000000362776403727773076d696e76656e77026e6c00000f0001 +e3ed800000010000000300020362776403727773076d696e76656e77026e6c00000f0001c01400020001000151800005026e73c014c01400020001000151800006036e7331c014c0140002000100015180000d036e7332036b706e036e657400c03000010001000151800004c297be47c04100010001000151800004c297be48 + +44242 +a2d500000001000000000000047269766d026e6c00000f0001 +a2d580000001000000020002047269766d026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000e036e733107737572666e6574c011c0250001000100015180000483e00314c03600010001000151800004c0576a65 + +44243 +579d000000010000000000000377777709646f72647473657777026e6c0000010001 +579d800000010000000300010377777709646f72647473657777026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +44244 +b62e00000001000000000000036e733503777873026e6c0000010001 +b62e80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44245 +1b700000000100000000000008626a7a2d616d7a77026e6c00000f0001 +1b708000000100000002000208626a7a2d616d7a77026e6c00000f0001c00c0002000100015180000d026e73076b6e6f77617265c015c00c00020001000151800006036e7332c02cc02900010001000151800004c3402003c04200010001000151800004c340202b + +44246 +6fbf00000001000000000000037777770a62616279626f6f6d6572026e6c0000010001 +6fbf80000001000000020001037777770a62616279626f6f6d6572026e6c0000010001c0100002000100015180000c026e7306636f62776562c01bc01000020001000151800011026e73087363686970686f6c036e657400c02f0001000100015180000450f26001 + +44247 +72f500000001000000000000037777770361636e026e6c0000010001 +72f580000001000000020000037777770361636e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +44248 +0d4900000001000000000000046e65777306697474707562026e6c0000010001 +0d4980000001000000020001046e65777306697474707562026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c14fcc01 + +44249 +0d4000000001000000000000046e65777306697474707562026e6c0000010001 +0d4080000001000000020001046e65777306697474707562026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c14fcc01 + +44250 +e595000000010000000000000376766b036b766b026e6c00000f0001 +e595800000010000000200020376766b036b766b026e6c00000f0001c0100002000100015180000d026e73076b6e6f77617265c014c01000020001000151800006036e7332c02bc02800010001000151800004c3402003c04100010001000151800004c340202b + +44251 +b72b000000010000000000000767726179646f6e026e6c00001c0001 +b72b800000010000000200020767726179646f6e026e6c00001c0001c00c0002000100015180000704706c6f70c00cc00c0002000100015180000c036e73310563736e6574c014c028000100010001518000043e3a0e32c03b00010001000151800004c2451012 + +44252 +a83d00000001000000000000037777770d6b656c6c797365727669636573026e6c0000010001 +a83d80000001000000020002037777770d6b656c6c797365727669636573026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01ec01000020001000151800013036e73320c636f6e63657074732d696374c01ec03200010001000151800004d5c51c03c04f00010001000151800004d5c51e4b + +44253 +74cb00000001000000000000077365727665723907626c7565646e73026e6c00000f0001 +74cb80000001000000020002077365727665723907626c7565646e73026e6c00000f0001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c03000010001000151800004d5c401c0c04200010001000151800004d5c4035a + +44254 +24ca0000000100000000000003777777137363686f7577656e2d64756976656e6c616e64026e6c0000010001 +24ca8403000100000001000003777777137363686f7577656e2d64756976656e6c616e64026e6c0000010001c02400060001000038400036026e730f646f6d61696e2d7265676973747279c0240a686f73746d6173746572c03b0bf1e540000070800000384000278d0000003840 + +44255 +685d00000001000000000000037777770c73656b73616472657373656e026e6c0000010001 +685d80000001000000020002037777770c73656b73616472657373656e026e6c0000010001c0100002000100015180000c036e733105642d6f2d73c01dc01000020001000151800006036e7332c035c0310001000100015180000451ad076cc0490001000100015180000451ad076d + +44256 +542c0000000100000000000003777777176165676f6e62656472696a667370656e73696f656e656e026e6c0000010001 +542c8000000100000002000003777777176165676f6e62656472696a667370656e73696f656e656e026e6c0000010001c01000020001000151800015026e730d646f6d61696e6e6574776f726b02736500c01000020001000151800006036e7332c03f + +44257 +390c00000001000000000000037777770873796d616e746563026e6c0000010001 +390c80000001000000030000037777770873796d616e746563026e6c0000010001c01000020001000151800012036e73310873796d616e74656303636f6d00c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031 + +44258 +bae200000001000000000000036e733109666972737466696e64026e6c0000010001 +bae280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44259 +1de80000000100000000000004646f6f72026e6c00000f0001 +1de88000000100000002000004646f6f72026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c011c00c0002000100015180000704686e7331c02a + +44260 +b0e800000001000000000000036e733209666972737466696e64026e6c0000010001 +b0e880000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44261 +d7500000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +d7508000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44262 +e4ec000000010000000000000377777706617265613137026e6c0000010001 +e4ec800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +44263 +238d00000001000000000000036e733109756e69736f75726365026e6c0000010001 +238d80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +44264 +5a7c000000010000000000000b6c6f752d68616e73746f6e026e6c0000020001 +5a7c800000010000000200020b6c6f752d68616e73746f6e026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec018c00c00020001000151800006036e7332c030c02c00010001000151800004c29f4906c04400010001000151800004c29fb004 + +44265 +3840000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +3840840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +44266 +f34d00100001000000000001036e733103727567026e6c00000100010000290800000000000000 +f34d80000001000000030004036e733103727567026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a650000291000000000000000 + +44267 +1cd400100001000000000001036e733103727567026e6c00002600010000290800000000000000 +1cd480000001000000030004036e733103727567026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a650000291000000000000000 + +44268 +475a00100001000000000001036e733203727567026e6c00000100010000290800000000000000 +475a80000001000000030004036e733203727567026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a650000291000000000000000 + +44269 +a3ad00100001000000000001036e733203727567026e6c00002600010000290800000000000000 +a3ad80000001000000030004036e733203727567026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a650000291000000000000000 + +44270 +bef30000000100000000000005646e732d31056c61646f74026e6c0000010001 +bef38000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44271 +40ad0000000100000000000005646e732d32056c61646f74026e6c0000010001 +40ad8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44272 +0eb00010000100000000000103626c3102626c06787334616c6c026e6c00000100010000290800000080000000 +0eb08000000100000003000303626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d09630000291000000000000000 + +44273 +36e300000001000000000000037777770f686f6d6f736578706c6161746a6573026e6c0000010001 +36e380000001000000020002037777770f686f6d6f736578706c6161746a6573026e6c0000010001c0100002000100015180000c04646e73310470696e73c020c0100002000100015180000704646e7332c039c03400010001000151800004d9c26101c04c00010001000151800004d9c26002 + +44274 +423c000000010000000000000377777709626f6f7a616c6c656e026e6c0000010001 +423c800000010000000300010377777709626f6f7a616c6c656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +44275 +3fe000000001000000000000036e733103727567026e6c0000010001 +3fe080000001000000030003036e733103727567026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a65 + +44276 +cfdd00000001000000000000036e733103727567026e6c0000260001 +cfdd80000001000000030003036e733103727567026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a65 + +44277 +b9a000000001000000000000036e733203727567026e6c0000260001 +b9a080000001000000030003036e733203727567026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a65 + +44278 +815100000001000000000000036e733203727567026e6c0000010001 +815180000001000000030003036e733203727567026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a65 + +44279 +65ab00100001000000000001036e733107737572666e6574026e6c00000100010000290800000080000000 +65ab80000001000000040004036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a650000291000000000000000 + +44280 +18d4000000010000000000000377777716706c6174666f726d67656e746563686e6f6c6f676965026e6c0000010001 +18d4800000010000000300000377777716706c6174666f726d67656e746563686e6f6c6f676965026e6c0000010001c01000020001000151800010036e73310669646565656c036e657400c01000020001000151800006036e7332c03fc01000020001000151800006036e7333c03f + +44281 +bfd2000000010000000000000377777709616476656e74697374026e6c0000010001 +bfd2800000010000000200020377777709616476656e74697374026e6c0000010001c01000020001000151800012036e73310b73697465686f7374696e67c01ac01000020001000151800006036e7332c032c02e00010001000151800004cf2410f1c04c00010001000151800004cf2410f2 + +44282 +84d50000000100000000000003646e62026e6c00000f0001 +84d58000000100000002000003646e62026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02a + +44283 +9f240000000100000000000002343703323031033136350236370a626c61636b686f6c657307656173796e6574026e6c0000050001 +9f248000000100000002000202343703323031033136350236370a626c61636b686f6c657307656173796e6574026e6c0000050001c02500020001000151800006036e7330c025c02500020001000151800006036e7331c025c04100010001000151800004c2a55e01c05300010001000151800004c2a55e05 + +44284 +8720000000010000000000000377777707686f70616b6565026e6c0000010001 +8720800000010000000200000377777707686f70616b6565026e6c0000010001c01000020001000151800012036e733108636f7665736f6674036e657400c010000200010001518000120377773208636f7665736f667403636f6d00 + +44285 +705e00000001000000000000156865616c7468616e646669746e65737367726f7570026e6c00000f0001 +705e80000001000000030003156865616c7468616e646669746e65737367726f7570026e6c00000f0001c00c0002000100015180000b04646e733103766970c022c00c0002000100015180000704646e7332c03bc00c0002000100015180000704646e7333c03bc03600010001000151800004d44fe803c04d00010001000151800004c3f5c782c06000010001000151800004d44ff303 + +44286 +f05800000001000000000000086561737964697363026e6c00000f0001 +f05880000001000000020002086561737964697363026e6c00000f0001c00c00020001000151800013036e73310c62656472696a76656e776562c015c00c00020001000151800006036e7332c02dc02900010001000151800004d90867fec04800010001000151800004c1ad2bfe + +44287 +d76100000001000000000000036e733109666972737466696e64026e6c0000010001 +d76180000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44288 +8f1900000001000000000000036e733209666972737466696e64026e6c0000010001 +8f1980000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44289 +843300000001000000000000064f424a564953026e6c0000020001 +843384030001000000010000064f424a564953026e6c0000020001c01300060001000038400036026e730f646f6d61696e2d7265676973747279c0130a686f73746d6173746572c02a0bf1e540000070800000384000278d0000003840 + +44290 +2d3200000001000000000000046d61696c066368656c6c6f026e6c0000010001 +2d3280000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +44291 +0860000000010000000000000e7072696e732d746563686e69656b026e6c00000f0001 +0860800000010000000200010e7072696e732d746563686e69656b026e6c00000f0001c00c00020001000151800013036e73310c636f6e63657074732d696374c01bc00c00020001000151800006036e7332c033c04e00010001000151800004d5c51e4b + +44292 +c79c00000001000000000000056f6469756d05746d666562026e6c00000f0001 +c79c84030001000000010000056f6469756d05746d666562026e6c00000f0001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +44293 +6cf9000000010000000000000f4a4f48414e534348554954454d414b026e6c0000010001 +6cf9840300010000000100000f4a4f48414e534348554954454d414b026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +44294 +a9700000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +a9708000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44295 +cf350000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cf358000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44296 +ec5000000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +ec5080000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +44297 +344400100001000000000001036d783306787334616c6c026e6c00000100010000290800000080000000 +344480000001000000030003036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d09630000291000000000000000 + +44298 +ece3000000010000000000000377777716706c6174666f726d67656e746563686e6f6c6f676965026e6c0000010001 +ece3800000010000000300000377777716706c6174666f726d67656e746563686e6f6c6f676965026e6c0000010001c01000020001000151800010036e73310669646565656c036e657400c01000020001000151800006036e7332c03fc01000020001000151800006036e7333c03f + +44299 +f43b00000001000000000000036e733107737572666e6574026e6c0000010001 +f43b80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +44300 +5b1e0000000100000000000003777777057061746865026e6c0000010001 +5b1e8000000100000002000203777777057061746865026e6c0000010001c0100002000100015180000e036e733207737570706f7274c016c01000020001000151800006036e7334c02ec02a00010001000151800004c372e7c8c04400010001000151800004c372e6fe + +44301 +ddfa00000001000000000000037777770b636861696e2d6d6574616c026e6c0000010001 +ddfa80000001000000030003037777770b636861696e2d6d6574616c026e6c0000010001c010000200010001518000180b6e616d6573657276657231096469676974616c7573c01cc0100002000100015180000e0b6e616d6573657276657232c03cc0100002000100015180000e0b6e616d6573657276657233c03cc0300001000100015180000451ad2020c0540001000100015180000451ad2021c06e0001000100015180000452c049aa + +44302 +8c68000000010000000000000377777706617265613137026e6c0000010001 +8c68800000010000000200000377777706617265613137026e6c0000010001c01000020001000151800010036e733109666972737466696e64c017c01000020001000151800006036e7332c02f + +44303 +812b0000000100000000000005646e732d31056c61646f74026e6c0000010001 +812b8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44304 +812c0000000100000000000005646e732d32056c61646f74026e6c0000010001 +812c8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44305 +812d00000001000000000000037777770a64756976656e666f746f026e6c0000010001 +812d80000001000000020000037777770a64756976656e666f746f026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01bc0100002000100015180000805646e732d32c035 + +44306 +704c0000000100000000000008696e76756c6c656e026e6c0000010001 +704c8000000100000003000208696e76756c6c656e026e6c0000010001c00c0002000100015180000d036e733106776964657873c015c00c00020001000151800010036e733206776964657873036e657400c00c00020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +44307 +4c6a00000001000000000000046e733032066368656c6c6f026e6c00001c0001 +4c6a80000001000000030003046e733032066368656c6c6f026e6c00001c0001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +44308 +978e00000001000000000000046e733032066368656c6c6f026e6c0000260001 +978e80000001000000030003046e733032066368656c6c6f026e6c0000260001c01100020001000151800007046e733031c011c01100020001000151800002c00cc0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c00c00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +44309 +1b090000000100000000000008667265656d61696c026e6c0000010001 +1b098000000100000003000208667265656d61696c026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c015c00c0002000100015180000704616e7332c02ec00c0002000100015180001404616e73330a74697363616c696e657402626500c02900010001000151800004c3f14d38c04400010001000151800004c3f13325 + +44310 +e268000000010000000000000470696e6706787334616c6c026e6c0000010001 +e268800000010000000300020470696e6706787334616c6c026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c0110002000100015180000d026e730472697065036e657400c02c00010001000151800004c26d0642c03d00010001000151800004c26d0963 + +44311 +7aa90000000100000000000006643638323331057570632d64066368656c6c6f026e6c0000010001 +7aa98000000100000003000306643638323331057570632d64066368656c6c6f026e6c0000010001c01900020001000151800007046e733031c019c01900020001000151800007046e733032c019c0190002000100015180000a036e733103757063c020c03400010001000151800004d4534482c04700010001000151800004d4534483c05a00010001000151800004d48e1c42 + +44312 +947000000001000000000000056873656276026e6c00000f0001 +947080000001000000020000056873656276026e6c00000f0001c00c0002000100015180000c036e723105692d702d64c012c00c00020001000151800006036e7232c02a + +44313 +939900000001000000000000037777770b7665727a616d656c6c656e026e6c0000010001 +939984030001000000010000037777770b7665727a616d656c6c656e026e6c0000010001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +44314 +b18800000001000000000000036e733202696f026e6c0000010001 +b18880000001000000020002036e733202696f026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0270001000100015180000451112102c00c0001000100015180000451112202 + +44315 +757800000001000000000000036e733202696f026e6c00001c0001 +757880000001000000020002036e733202696f026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0270001000100015180000451112102c00c0001000100015180000451112202 + +44316 +841c00000001000000000000036e733202696f026e6c0000260001 +841c80000001000000020002036e733202696f026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0270001000100015180000451112102c00c0001000100015180000451112202 + +44317 +b59600000001000000000000036e733102696f026e6c0000010001 +b59680000001000000020002036e733102696f026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451112102c0350001000100015180000451112202 + +44318 +257300000001000000000000036e733102696f026e6c00001c0001 +257380000001000000020002036e733102696f026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451112102c0350001000100015180000451112202 + +44319 +0dea00000001000000000000036e733102696f026e6c0000260001 +0dea80000001000000020002036e733102696f026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000451112102c0350001000100015180000451112202 + +44320 +8e1700000001000000000000046d61696c057369727573026e6c0000010001 +8e1780000001000000030003046d61696c057369727573026e6c0000010001c01100020001000151800010036e733109736974656279746573c017c01100020001000151800006036e7332c02fc01100020001000151800006036e7333c02fc02b00010001000151800004c2a55e5ac04700010001000151800004c356781cc059000100010001518000043ec58016 + +44321 +0a5b000000010000000000000773657834616c6c026e6c0000010001 +0a5b800000010000000200000773657834616c6c026e6c0000010001c00c00020001000151800012036e7331086379626572616374036e657400c00c00020001000151800006036e7332c02c + +44322 +32660000000100000000000006626f696b6f6e026e6c00000f0001 +32668000000100000002000206626f696b6f6e026e6c00000f0001c00c0002000100015180000a036e733103696166c013c00c00020001000151800006036e7332c02bc027000100010001518000045059e040c03d000100010001518000045059ee03 + +44323 +38d6000000010000000000000773657276657231087369746574726171026e6c0000010001 +38d6800000010000000200000773657276657231087369746574726171026e6c0000010001c0140002000100015180000f036e733105796b6f6f6e036e657400c01400020001000151800006036e7332c035 + +44324 +9a2200000001000000000000036d783306787334616c6c026e6c0000010001 +9a2280000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +44325 +ff7000000001000000000000046d61696c076e65746578706f026e6c0000010001 +ff7080000001000000020002046d61696c076e65746578706f026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02d000100010001518000043efa0ac2c03e000100010001518000043efa0a82 + +44326 +eb6b00000001000000000000066d6164726964076e65746578706f026e6c0000010001 +eb6b80000001000000020002066d6164726964076e65746578706f026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c02f000100010001518000043efa0ac2c040000100010001518000043efa0a82 + +44327 +106500000001000000000000037777770a61737472616c6c696f6e026e6c0000010001 +106580000001000000020002037777770a61737472616c6c696f6e026e6c0000010001c0100002000100015180000a036e733103696166c01bc01000020001000151800006036e7332c033c02f000100010001518000045059e040c045000100010001518000045059ee03 + +44328 +ef4f000000010000000000000a656c656374726162656c026e6c0000010001 +ef4f800000010000000200010a656c656374726162656c026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c02b00010001000151800004d535c463 + +44329 +cc63001000010000000000010a6175746f747261646572086175746f7765656b026e6c00000100010000290800000080000000 +cc63800000010000000300010a6175746f747261646572086175746f7765656b026e6c0000010001c01700020001000151800010036e733106666173747873036e657400c01700020001000151800006036e7332c038c01700020001000151800006036e7333c0380000291000000000000000 + +44330 +9f6200000001000000000000036e733109666972737466696e64026e6c0000010001 +9f6280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44331 +b9a20000000100000000000010706c617374696b66616e74617374696b026e6c00000f0001 +b9a28000000100000002000010706c617374696b66616e74617374696b026e6c00000f0001c00c0002000100015180000c026e7306766576696461c01dc00c00020001000151800006036e7332c034 + +44332 +87bd00000001000000000000036e733209666972737466696e64026e6c0000010001 +87bd80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44333 +50060000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +50068000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44334 +42d70000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +42d78000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44335 +040200000001000000000000036e733109776869726c77696e64026e6c0000010001 +040280000001000000020002036e733109776869726c77696e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e683c03c00010001000151800004d973c5bd + +44336 +c11a00000001000000000000036e733109776869726c77696e64026e6c0000260001 +c11a80000001000000020002036e733109776869726c77696e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000045054e683c03c00010001000151800004d973c5bd + +44337 +b05c00000001000000000000036e733209776869726c77696e64026e6c0000010001 +b05c80000001000000020002036e733209776869726c77696e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054e683c00c00010001000151800004d973c5bd + +44338 +2c5a00000001000000000000036e733209776869726c77696e64026e6c0000260001 +2c5a80000001000000020002036e733209776869726c77696e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000045054e683c00c00010001000151800004d973c5bd + +44339 +0f480000000100000000000006636861726973026e6c00000f0001 +0f488000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +44340 +6bd400000001000000000000115354494e472d494e2d5448452d5441494c026e6c0000020001 +6bd484030001000000010000115354494e472d494e2d5448452d5441494c026e6c0000020001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +44341 +97f0000000010000000000000562696e636b026e6c00001c0001 +97f0800000010000000200020562696e636b026e6c00001c0001c00c0002000100015180000b036e73310470696e65c012c00c00020001000151800006036e7332c02ac02600010001000151800004d59c0201c03d00010001000151800004c3c1a303 + +44342 +ddae00000001000000000000036e733306696e61646765026e6c0000010001 +ddae80000001000000020001036e733306696e61646765026e6c0000010001c01000020001000151800002c00cc01000020001000151800012036e7337087a6f6e656564697403636f6d00c00c00010001000151800004d9164114 + +44343 +fbcd0000000100000000000006636861726973026e6c00000f0001 +fbcd8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +44344 +eed700000001000000000000036e733306696e61646765026e6c0000260001 +eed780000001000000020001036e733306696e61646765026e6c0000260001c01000020001000151800002c00cc01000020001000151800012036e7337087a6f6e656564697403636f6d00c00c00010001000151800004d9164114 + +44345 +73220000000100000000000006504c414e4554024e4c0000ff0001 +73228000000100000003000306504c414e4554024e4c0000ff0001c00c0002000100015180000b046e73303803777873c013c00c00020001000151800007046e733039c02cc00c00020001000151800006036e7334c02cc02700010001000151800004c3790128c03e00010001000151800004c3790143c05100010001000151800004d5ef9a65 + +44346 +fd870000000100000000000006636861726973026e6c0000010001 +fd878000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +44347 +e71f00000001000000000000076379636c6f6e65026e6c00000f0001 +e71f80000001000000020002076379636c6f6e65026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c014c00c00020001000151800006036e7332c02cc02800010001000151800004d43d0f08c04600010001000151800004d43d19e2 + +44348 +e5e600000001000000000000037777770c6265726e657273656e6e656e026e6c0000010001 +e5e680000001000000020002037777770c6265726e657273656e6e656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +44349 +d039000000010000000000001076616e6d6175726963656465686f6e64026e6c0000010001 +d039840300010000000100001076616e6d6175726963656465686f6e64026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +44350 +92ab00000001000000000000056d61696c3109636c65616e706f7274026e6c0000010001 +92ab80000001000000020002056d61696c3109636c65616e706f7274026e6c0000010001c01200020001000151800015036e73310e6f6f7374656e646f72702d696374c01cc01200020001000151800006036e7332c034c03000010001000151800004d44fe9e0c05100010001000151800004d44fe9e1 + +44351 +aaaf0000000100000000000003777777076f72696f6e636f026e6c0000010001 +aaaf8000000100000002000003777777076f72696f6e636f026e6c0000010001c0100002000100015180000d026e730468736367036e657400c01000020001000151800006036e7332c02f + +44352 +ccb3000000010000000000000377777703313072026e6c0000010001 +ccb3800000010000000200020377777703313072026e6c0000010001c0100002000100015180000f036e73310861746c616e74697ac014c01000020001000151800006036e7332c02cc02800010001000151800004d5efa011c04300010001000151800004d5efa075 + +44353 +b657000000010000000000000a6175746f747261646572086175746f7765656b026e6c0000010001 +b657800000010000000300000a6175746f747261646572086175746f7765656b026e6c0000010001c01700020001000151800010036e733106666173747873036e657400c01700020001000151800006036e7332c038c01700020001000151800006036e7333c038 + +44354 +cb4d00000001000000000000046a6f686e0b6c756c6d6161727261616b026e6c0000010001 +cb4d80000001000000030002046a6f686e0b6c756c6d6161727261616b026e6c0000010001c01100020001000151800015036e73310e666c6578776562686f7374696e67c01dc01100020001000151800006036e7332c035c01100020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c03100010001000151800004cf2cd7adc0520001000100015180000452c04365 + +44355 +6aba00000001000000000000036d783209414d5354455244414d024e4c0000010001 +6aba80000001000000030002036d783209414d5354455244414d024e4c0000010001c01000020001000151800015036e73310b70696e6b726f6363616465036e657400c0100002000100015180000e026e73086d656761706c6578c01ac01000020001000151800006036e7331c052c04f00010001000151800004504f6101c06900010001000151800004504f6102 + +44356 +12e800000001000000000000034e5332044c554d43024e4c0000010001 +12e880000001000000030003034e5332044c554d43024e4c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c015c029000100010001518000049158d2eac00c000100010001518000049158d30ac04900010001000151800004c0576a65 + +44357 +2a2300000001000000000000034e5331044c554d43024e4c0000010001 +2a2380000001000000030003034e5331044c554d43024e4c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c015c00c000100010001518000049158d2eac037000100010001518000049158d30ac04900010001000151800004c0576a65 + +44358 +477000000001000000000000026e7303617a72026e6c0000010001 +477080000001000000030003026e7303617a72026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000e036e733107737572666e6574c013c00c000100010001518000049c53fc99c035000100010001518000049c53fcfdc04700010001000151800004c0576a65 + +44359 +2dbb0000000100000000000006706f6c6c7578086c6f7374626f7973026e6c0000010001 +2dbb8000000100000002000206706f6c6c7578086c6f7374626f7973026e6c0000010001c0130002000100015180000906636173746f72c013c01300020001000151800002c00cc030000100010001518000043e32050ac00c00010001000151800004c297d912 + +44360 +e0560000000100000000000006706f6c6c7578086c6f7374626f7973026e6c00001c0001 +e0568000000100000002000206706f6c6c7578086c6f7374626f7973026e6c00001c0001c0130002000100015180000906636173746f72c013c01300020001000151800002c00cc030000100010001518000043e32050ac00c00010001000151800004c297d912 + +44361 +ebf40000000100000000000006706f6c6c7578086c6f7374626f7973026e6c0000260001 +ebf48000000100000002000206706f6c6c7578086c6f7374626f7973026e6c0000260001c0130002000100015180000906636173746f72c013c01300020001000151800002c00cc030000100010001518000043e32050ac00c00010001000151800004c297d912 + +44362 +b9490000000100000000000006636173746f72086c6f7374626f7973026e6c0000010001 +b9498000000100000002000206636173746f72086c6f7374626f7973026e6c0000010001c01300020001000151800002c00cc0130002000100015180000906706f6c6c7578c013c00c000100010001518000043e32050ac03e00010001000151800004c297d912 + +44363 +99f60000000100000000000006636173746f72086c6f7374626f7973026e6c00001c0001 +99f68000000100000002000206636173746f72086c6f7374626f7973026e6c00001c0001c01300020001000151800002c00cc0130002000100015180000906706f6c6c7578c013c00c000100010001518000043e32050ac03e00010001000151800004c297d912 + +44364 +d7010000000100000000000006636173746f72086c6f7374626f7973026e6c0000260001 +d7018000000100000002000206636173746f72086c6f7374626f7973026e6c0000260001c01300020001000151800002c00cc0130002000100015180000906706f6c6c7578c013c00c000100010001518000043e32050ac03e00010001000151800004c297d912 + +44365 +445200000001000000000000036e7332046e667261026e6c00001c0001 +445280000001000000030003036e7332046e667261026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c015c02900010001000151800004c0570196c00c00010001000151800004c0570197c04900010001000151800004c0576a65 + +44366 +601600000001000000000000036e7332046e667261026e6c0000260001 +601680000001000000030003036e7332046e667261026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c015c02900010001000151800004c0570196c00c00010001000151800004c0570197c04900010001000151800004c0576a65 + +44367 +e1da00000001000000000000036e7331046e667261026e6c00001c0001 +e1da80000001000000030003036e7331046e667261026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c015c00c00010001000151800004c0570196c03700010001000151800004c0570197c04900010001000151800004c0576a65 + +44368 +b68800000001000000000000036e7331046e667261026e6c0000260001 +b68880000001000000030003036e7331046e667261026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c015c00c00010001000151800004c0570196c03700010001000151800004c0570197c04900010001000151800004c0576a65 + +44369 +b6f300000001000000000000036e733205786c722d38026e6c0000010001 +b6f380000001000000020002036e733205786c722d38026e6c0000010001c01000020001000151800009036e7331026973c016c01000020001000151800006036e7332c02ec02a00010001000151800004d5852102c03f00010001000151800004d5c41503 + +44370 +c2520000000100000000000003777777086175746f6c616e64026e6c0000010001 +c2528000000100000002000203777777086175746f6c616e64026e6c0000010001c0100002000100015180000c026e7306787334616c6cc019c01000020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +44371 +1adf0000000100000000000003777777036d736e026e6c0000010001 +1adf8000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +44372 +09bb00000001000000000000037777771163762064657a7765696c616e6365657273026e6c0000010001 +09bb84030001000000010000037777771163762064657a7765696c616e6365657273026e6c0000010001c02200060001000038400036026e730f646f6d61696e2d7265676973747279c0220a686f73746d6173746572c0390bf1e540000070800000384000278d0000003840 + +44373 +06a000000001000000000000067a65706879720473656d61026e6c0000010001 +06a080000001000000030003067a65706879720473656d61026e6c0000010001c01300020001000151800012047072693103646e73067073696e6574c018c013000200010001518000070470726932c031c013000200010001518000070470726933c031c02c000100010001518000049a0ff9a6c04a000100010001518000049a0ff9aac05d000100010001518000049a0ff9ae + +44374 +7a1b00000001000000000000036d7831076e65746c616e64026e6c0000010001 +7a1b80000001000000020002036d7831076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c02c00010001000151800004d9aa2042c03d00010001000151800004d9aa2c06 + +44375 +ddc6000000010000000000000673656375726509706f7374706c617a61026e6c0000010001 +ddc6800000010000000200020673656375726509706f7374706c617a61026e6c0000010001c0130002000100015180000e036e733207737570706f7274c01dc01300020001000151800006036e7334c035c03100010001000151800004c372e7c8c04b00010001000151800004c372e6fe + +44376 +7c6200100001000000000001077765626d61696c03777873026e6c00000100010000290800000080000000 +7c6280000001000000030004077765626d61696c03777873026e6c0000010001c01400020001000151800007046e733038c014c01400020001000151800007046e733039c014c01400020001000151800006036e7334c014c02c00010001000151800004c3790128c03f00010001000151800004c3790143c05200010001000151800004d5ef9a650000291000000000000000 + +44377 +3a38000000010000000000000966616c6c6261636b31086473646575726e65026e6c0000010001 +3a38800000010000000200020966616c6c6261636b31086473646575726e65026e6c0000010001c01600020001000151800006036e7331c016c01600020001000151800006036e7332c016c0330001000100015180000452968003c04500010001000151800004d5a0f984 + +44378 +d81800000001000000000000036e733503777873026e6c0000010001 +d81880000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44379 +ca390000000100000000000003777777056665646578026e6c0000010001 +ca398000000100000002000203777777056665646578026e6c0000010001c0100002000100015180000c04646e73310471776562c016c0100002000100015180000704646e7332c02fc02a00010001000151800004d994ac0cc04200010001000151800004d5c42f6c + +44380 +0142000000010000000000000477697368026e6c0000ff0001 +0142800000010000000300020477697368026e6c0000ff0001c00c0002000100015180000f04616e73310774697363616c69c011c00c0002000100015180000704616e7332c02ac00c0002000100015180001404616e73330a74697363616c696e657402626500c02500010001000151800004c3f14d38c04000010001000151800004c3f13325 + +44381 +1f1600000001000000000000077765626d61696c03777873026e6c0000010001 +1f1680000001000000030003077765626d61696c03777873026e6c0000010001c01400020001000151800007046e733038c014c01400020001000151800007046e733039c014c01400020001000151800006036e7334c014c02c00010001000151800004c3790128c03f00010001000151800004c3790143c05200010001000151800004d5ef9a65 + +44382 +5d12000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +5d12800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +44383 +9b370000000100000000000003777777047573686e026e6c0000010001 +9b378000000100000002000003777777047573686e026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c02d + +44384 +000828000001000200000000026e6c00000600010f57533031352d64616e69656c6c657304636f72700968617a6c65776f6f64026e6c00000500fe000000000000c01400010001000000000004c297cb0e +0008a8040000000000000000 + +44385 +186a000000010000000000000d6963702d736f6c7574696f6e73026e6c00000f0001 +186a800000010000000200000d6963702d736f6c7574696f6e73026e6c00000f0001c00c00020001000151800010036e73310977696e646f74636f6dc01ac00c00020001000151800006036e7332c032 + +44386 +09f10000000100000000000003777777026c31026e6c0000010001 +09f18000000100000002000003777777026c31026e6c0000010001c0100002000100015180000d036e7333036b706e036e657400c01000020001000151800006036e7334c02b + +44387 +799f0000000100000000000003746273026e6c0000010001 +799f8000000100000003000103746273026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc010c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c042c024000100010001518000043efa0202 + +44388 +dc3a000000010000000000000e776f6e696e67706172746e657273026e6c00000f0001 +dc3a800000010000000200000e776f6e696e67706172746e657273026e6c00000f0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c03a + +44389 +967f00000001000000000000036e7331086765656e70756e74026e6c00001c0001 +967f80000001000000020002036e7331086765656e70756e74026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd865c03b000100010001518000045054ec34 + +44390 +f3c400000001000000000000036e7331086765656e70756e74026e6c0000260001 +f3c480000001000000020002036e7331086765656e70756e74026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d4ccd865c03b000100010001518000045054ec34 + +44391 +57e800000001000000000000036e7332086765656e70756e74026e6c00001c0001 +57e880000001000000020002036e7332086765656e70756e74026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d4ccd865c00c000100010001518000045054ec34 + +44392 +619c00000001000000000000036e7332086765656e70756e74026e6c0000260001 +619c80000001000000020002036e7332086765656e70756e74026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d00010001000151800004d4ccd865c00c000100010001518000045054ec34 + +44393 +d33f00000001000000000000036e73310864757463686e6574026e6c0000010001 +d33f80000001000000020000036e73310864757463686e6574026e6c0000010001c01000020001000151800018036e73310e746865696e7465726e65746f6e65036e657400c01000020001000151800006036e7332c031 + +44394 +98ba00000001000000000000036e73320864757463686e6574026e6c0000010001 +98ba80000001000000020000036e73320864757463686e6574026e6c0000010001c01000020001000151800018036e73310e746865696e7465726e65746f6e65036e657400c01000020001000151800006036e7332c031 + +44395 +1fce0000000100000000000006696d6167657306676f6f676c65026e6c0000010001 +1fce8000000100000003000006696d6167657306676f6f676c65026e6c0000010001c01300020001000151800010036e733106676f6f676c6503636f6d00c01300020001000151800006036e7332c032c01300020001000151800006036e7333c032 + +44396 +863f00000001000000000000037777770d666c616262657267617374656e026e6c0000010001 +863f84030001000000010000037777770d666c616262657267617374656e026e6c0000010001c01e00060001000038400036026e730f646f6d61696e2d7265676973747279c01e0a686f73746d6173746572c0350bf1e540000070800000384000278d0000003840 + +44397 +ef5d00000001000000000000036e7335046372696f026e6c0000010001 +ef5d80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44398 +492200000001000000000000036e7336046372696f026e6c0000010001 +492280000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44399 +330d000000010000000000000377777703776562026e6c0000010001 +330d800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44400 +30a100000001000000000000036e7331046372696f026e6c0000010001 +30a180000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44401 +5acf00000001000000000000036e7332046372696f026e6c0000010001 +5acf80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44402 +689400000001000000000000037777770a72656372656174696566026e6c0000010001 +689480000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44403 +507200000001000000000000036e7331046372696f026e6c0000010001 +507280000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44404 +8c0400000001000000000000036e7332046372696f026e6c0000010001 +8c0480000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44405 +4e650000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +4e658000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44406 +266000000001000000000000046d61696c0a64656c74616c6c6f7964026e6c0000010001 +266080000001000000020000046d61696c0a64656c74616c6c6f7964026e6c0000010001c0110002000100015180000d036e7333036b706e036e657400c01100020001000151800006036e7334c034 + +44407 +47680000000100000000000006636861726973026e6c0000010001 +47688000000100000002000006636861726973026e6c0000010001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +44408 +812f0000000100000000000005646e732d31056c61646f74026e6c0000010001 +812f8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44409 +81300000000100000000000005646e732d32056c61646f74026e6c0000010001 +81308000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44410 +dd2a0000000100000000000006485342444e5309485342524142414e54026e6c0000010001 +dd2a8000000100000002000206485342444e5309485342524142414e54026e6c0000010001c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01dc00c00010001000151800004913001fac03f00010001000151800004c0576a65 + +44411 +6f1d00000001000000000000037777770c6265726e657273656e6e656e026e6c0000010001 +6f1d80000001000000020002037777770c6265726e657273656e6e656e026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +44412 +388000000001000000000000037777770c77656263726561746f727334026e6c0000010001 +388080000001000000020001037777770c77656263726561746f727334026e6c0000010001c0100002000100015180000d036e733106776964657873c01dc01000020001000151800010036e733206776964657873036e657400c03100010001000151800004d4ccc0fc + +44413 +5114000000010000000000000377777709666c65766f6c616e64026e6c0000010001 +5114800000010000000200000377777709666c65766f6c616e64026e6c0000010001c0100002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c0100002000100015180000d077669312d6e7330026174c039 + +44414 +161100000001000000000000046b77696b09656174736572766572026e6c0000010001 +161180000001000000020002046b77696b09656174736572766572026e6c0000010001c01100020001000151800005026e73c011c01100020001000151800006036e7332c011c02f00010001000151800004d4cb0e42c04000010001000151800004d4cb1221 + +44415 +79b400000001000000000000037777770b6f6e6c696e652d64617461026e6c0000010001 +79b480000001000000020002037777770b6f6e6c696e652d64617461026e6c0000010001c0100002000100015180000b036e73310431326e73c01cc01000020001000151800006036e7332c034c030000100010001518000043ed44ca0c047000100010001518000043ed4440c + +44416 +e5e20000000100000000000007697463636f6d70026e6c00000f0001 +e5e28000000100000002000207697463636f6d70026e6c00000f0001c00c00020001000151800014036e73310d6d6576657273686f7374696e67c014c00c00020001000151800006036e7332c02cc02800010001000151800004d5c9e8c8c04800010001000151800004d5c9e8c9 + +44417 +325e00000001000000000000037777771166696e616e636574656c65766973696f6e026e6c0000010001 +325e80000001000000020002037777771166696e616e636574656c65766973696f6e026e6c0000010001c01000020001000151800011026e730b666163696e676661637473c022c01000020001000151800006036e7332c039c03600010001000151800004d513b013c05300010001000151800004d513b012 + +44418 +b3fc00000001000000000000026763065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001 +b3fc84030001000000010000026763065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001c02600060001000038400036026e730f646f6d61696e2d7265676973747279c0260a686f73746d6173746572c03d0bf1e540000070800000384000278d0000003840 + +44419 +7da100100001000000000001046a616d6f026e6c00000f00010000290800000080000000 +7da180000001000000020001046a616d6f026e6c00000f0001c00c0002000100015180000c036e7331036e6c6902646b00c00c00020001000151800006036e7332c0290000291000000000000000 + +44420 +112e0000000100000000000006432d31376e74084b6f6e646172444d026e6c0000060001 +112e8403000100000001000006432d31376e74084b6f6e646172444d026e6c0000060001c01c00060001000038400036026e730f646f6d61696e2d7265676973747279c01c0a686f73746d6173746572c0330bf1e540000070800000384000278d0000003840 + +44421 +893b00000001000000000000037777770477656572026e6c0000010001 +893b80000001000000020002037777770477656572026e6c0000010001c010000200010001518000110568656e7279086d6574656f636f6ec015c0100002000100015180000e036e733207737572666e6574c015c02900010001000151800004c057690ac04600010001000151800004c0572402 + +44422 +24db000000010000000000000c616e67656c6f2d657374657206746d66776562026e6c0000010001 +24db800000010000000200000c616e67656c6f2d657374657206746d66776562026e6c0000010001c01900020001000151800011056c656d6f6e0571696e6970036e657400c01900020001000151800007046c696d65c03a + +44423 +f709000000010000000000000966697265666c696573026e6c00000f0001 +f709800000010000000200020966697265666c696573026e6c00000f0001c00c0002000100015180000b036e733104656e6f6dc016c00c00020001000151800006036e7332c02ec02a00010001000151800004d87a0479c04100010001000151800004d86296b6 + +44424 +2db9000000010000000000000670726f646973056e76776d6e026e6c0000010001 +2db9800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +44425 +3bf90000000100000000000007747067706f7374026e6c00000f0001 +3bf98000000100000002000207747067706f7374026e6c00000f0001c00c0002000100015180000e036e733207737570706f7274c014c00c00020001000151800006036e7334c02cc02800010001000151800004c372e7c8c04200010001000151800004c372e6fe + +44426 +c0ba0000000100000000000007706f6f74657273026e6c00000f0001 +c0ba8000000100000003000307706f6f74657273026e6c00000f0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec014c00c00020001000151800006036e7331c031c00c00020001000151800006036e7332c031c02800010001000151800004d42d2005c04600010001000151800004d42d2003c05800010001000151800004d42d2103 + +44427 +0d6000000001000000000000046e65777306697474707562026e6c0000010001 +0d6080000001000000020001046e65777306697474707562026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c14fcc01 + +44428 +30760000000100000000000003777777086d6574656f636f6e026e6c0000010001 +30768000000100000003000303777777086d6574656f636f6e026e6c0000010001c010000200010001518000080568656e7279c010c010000200010001518000090670616c6f6d61c010c0100002000100015180000e036e733207737572666e6574c019c02d00010001000151800004c057690ac04100010001000151800004c057690bc05600010001000151800004c0572402 + +44429 +056800000001000000000000046e65777306697474707562026e6c0000010001 +056880000001000000020001046e65777306697474707562026e6c0000010001c01100020001000151800005026e73c011c0110002000100015180000b026e73026e6c036e657400c02c00010001000151800004c14fcc01 + +44430 +9f7900000001000000000000037777770b677265656e646972656374026e6c0000010001 +9f7980000001000000020000037777770b677265656e646972656374026e6c0000010001c01000020001000151800018036e73310e6e6574776f726b696e6734616c6c03636f6d00c01000020001000151800018036e73320e6e6574776f726b696e6734616c6c036e657400 + +44431 +a39100000001000000000000024e530a444f4244454e48414147024e4c0000010001 +a39180000001000000020002024e530a444f4244454e48414147024e4c0000010001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01ac00c00010001000151800004c05706f0c03c00010001000151800004c0576a65 + +44432 +0abd000000010000000000000a7765627265706f72747306677265636f6d026e6c0000010001 +0abd800000010000000300020a7765627265706f72747306677265636f6d026e6c0000010001c0170002000100015180000d036e733106776964657873c01ec01700020001000151800010036e733206776964657873036e657400c01700020001000151800006036e7333c036c03200010001000151800004d4ccc0fcc067000100010001518000043efa0703 + +44433 +bebf0000000100000000000003777777066d6174757265026e6c0000010001 +bebf8000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +44434 +cb6a00000001000000000000037777770c76657277656e2d66696c6d73026e6c0000010001 +cb6a80000001000000020000037777770c76657277656e2d66696c6d73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +44435 +1fa400000001000000000000046d61696c03777873026e6c0000010001 +1fa480000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +44436 +338600000001000000000000037777770b72696a6b736d757365756d026e6c0000010001 +338680000001000000020000037777770b72696a6b736d757365756d026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c034 + +44437 +2f0c000000010000000000000670726f646973056e76776d6e026e6c0000010001 +2f0c800000010000000200020670726f646973056e76776d6e026e6c0000010001c0130002000100015180000c036e73310563736e6574c019c01300020001000151800006036e7332c031c02d00010001000151800004c2451012c04500010001000151800004c2451212 + +44438 +c1c2000000010000000000000661736f706f73026e6c00000f0001 +c1c2800000010000000200000661736f706f73026e6c00000f0001c00c00020001000151800010036e7331066576736f6674036e657400c00c00020001000151800006036e7332c02b + +44439 +f821000000010000000000000a6970353033636430353905737065656406706c616e6574026e6c0000010001 +f821800000010000000300030a6970353033636430353905737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +44440 +11cc000000010000000000000377777707696e74656e7a65026e6c0000010001 +11cc800000010000000300010377777707696e74656e7a65026e6c0000010001c0100002000100015180000e026e7308767575727765726bc018c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04ac02c000100010001518000043efa0202 + +44441 +33c8000000010000000000000a77326b736572766572310970726b766477696c64026e6c0000060001 +33c8840300010000000100000a77326b736572766572310970726b766477696c64026e6c0000060001c02100060001000038400036026e730f646f6d61696e2d7265676973747279c0210a686f73746d6173746572c0380bf1e540000070800000384000278d0000003840 + +44442 +4ec6000000010000000000000b76616c6b656e686f7273740476616c6b026e6c00000f0001 +4ec6800000010000000200020b76616c6b656e686f7273740476616c6b026e6c00000f0001c01800020001000151800012026e730c6d65676170726f7669646572c01dc01800020001000151800006036e7332c034c0310001000100015180000450474002c04f0001000100015180000450474102 + +44443 +e3860000000100000000000003777777086d74726565787878026e6c0000010001 +e3868000000100000002000003777777086d74726565787878026e6c0000010001c01000020001000151800013036e7331097669727475616c787303636f6d00c01000020001000151800006036e7332c031 + +44444 +62c728000001000200000000026e6c00000600010a77326b736572766572310970726b766477696c64026e6c00000500fe000000000000c014000100010000000000040a000001 +62c7a8040000000000000000 + +44445 +09ce00000001000000000000057473757275026e6c0000010001 +09ce80000001000000020001057473757275026e6c0000010001c00c0002000100015180000a036e733303777873c012c00c00020001000151800006036e7334c02ac03c00010001000151800004d5ef9a65 + +44446 +2100000000010000000000000974656c656b6162656c026e6c00000f0001 +2100800000010000000200020974656c656b6162656c026e6c00000f0001c00c0002000100015180000a036e733103757063c016c00c0002000100015180000e046e733032066368656c6c6fc016c02a00010001000151800004d48e1c42c04000010001000151800004d4534483 + +44447 +b0600010000100000000000103666c79036b6c6d026e6c00000100010000290800000080000000 +b0608000000100000002000203666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab1550120000291000000000000000 + +44448 +000000007002faf089aa00000204055001010402 +000080010000000000000000 + +44449 +d8300010000100000000000103666c79036b6c6d026e6c00002600010000290800000080000000 +d8308000000100000002000203666c79036b6c6d026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab1550120000291000000000000000 + +44450 +661500000001000000000000056961656876026e6c00000f0001 +661580000001000000020002056961656876026e6c00000f0001c00c00020001000151800012036e73310b7669616e6574776f726b73c012c00c00020001000151800006036e7332c02ac02600010001000151800004d43d0f08c04400010001000151800004d43d19e2 + +44451 +b89059d55010ff009f840000000000000000 +b890d9d40000000000000000 + +44452 +82e8000000010000000000000377777710666f726d756c6172696a7363686f6f6c026e6c0000010001 +82e8800000010000000200020377777710666f726d756c6172696a7363686f6f6c026e6c0000010001c0100002000100015180000f026e7309656174736572766572c021c01000020001000151800006036e7332c038c03500010001000151800004d4cb0e42c05000010001000151800004d4cb1221 + +44453 +b89059d55018ff00bd6e000000927286000000010001000000000f313436303238383838303635382d330000f900010f313436303238383838303635382d330000f900ff00000000005603677373096d6963726f736f667403636f6d00403b002b403c51ab0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 +b890d9d40000000000000000 + +44454 +8bc90000000100000000000003777777087175616474696572026e6c0000010001 +8bc98000000100000002000203777777087175616474696572026e6c0000010001c0100002000100015180000f036e73310864696d6d65646961c019c01000020001000151800006036e7332c031c02d000100010001518000043eddda10c048000100010001518000043eb1e4dc + +44455 +a94600000001000000000000036e733109666972737466696e64026e6c0000010001 +a94680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44456 +a94700000001000000000000036e733209666972737466696e64026e6c0000010001 +a94780000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44457 +b89059e35011fef29eef0000000000000000 +b890d9e40000000000000000 + +44458 +000000007002faf08e5d00000204055001010402 +000080010000000000000000 + +44459 +bcee00000001000000000000037777771062726162616e7462756e67616c6f7773026e6c0000010001 +bcee80000001000000020002037777771062726162616e7462756e67616c6f7773026e6c0000010001c01000020001000151800012026e730c686f6c696461796d65646961c021c01000020001000151800006036e7333c038c035000100010001518000049265424dc053000100010001518000045054ebbf + +44460 +dc6600000001000000000000037777770c616d61746575726c696e6b73026e6c0000010001 +dc6680000001000000020000037777770c616d61746575726c696e6b73026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c034 + +44461 +8e9600000001000000000000036339380e63656e747572696f6e2d616b6b75026e6c0000010001 +8e9680000001000000020001036339380e63656e747572696f6e2d616b6b75026e6c0000010001c010000200010001518000130b737061726373657276657204706c6578c01fc0100002000100015180000b026e73026e6c036e657400c03300010001000151800004c1439a0a + +44462 +b89059e45010fef29eee0000000000000000 +b890d9e40000000000000000 + +44463 +b89138d85010ff00c5330000000000000000 +b891b8d40000000000000000 + +44464 +b89138d85018ff00a8dc00000092adc8000000010001000000000f313436303238383838303635382d320000f900010f313436303238383838303635382d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b002b403c51ab0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 +b891b8d40000000000000000 + +44465 +b89138e65011fef2c49e0000000000000000 +b891b8e40000000000000000 + +44466 +000000007002faf0622900000204055001010402 +000080010000000000000000 + +44467 +b6ca01000001000000000000036e73310a6d756c74696b6162656c026e6c0000010001 +b6ca81000001000000030002036e73310a6d756c74696b6162656c026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c0001000100015180000450f2e002c03d0001000100015180000450f2e006 + +44468 +b89138e75010fef2c49d0000000000000000 +b891b8e40000000000000000 + +44469 +b893d5bc5010ff00fc180000000000000000 + + +44470 +a94900000001000000000000036e733109666972737466696e64026e6c0000010001 +a94980000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44471 +a94a00000001000000000000036e733209666972737466696e64026e6c0000010001 +a94a80000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44472 +da7800000001000000000000036e7335046372696f026e6c0000010001 +da7880000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44473 +5e9500000001000000000000036e7336046372696f026e6c0000010001 +5e9580000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44474 +b15f000000010000000000000377777703776562026e6c0000010001 +b15f800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44475 +b893d5bc5018ff004d31000000924059000000010001000000000f313436303238383838303635382d320000f900010f313436303238383838303635382d320000f900ff00000000005603677373096d6963726f736f667403636f6d00403b002b403c51ab0003000000334e544c4d535350000100000097b208e0090009002a0000000a000a002000000057324b5345525645523150524b564457494c440000 + + +44476 +7e8000000001000000000000036e73310c62656472696a76656e776562026e6c00001c0001 +7e8080000001000000020002036e73310c62656472696a76656e776562026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d90867fec03f00010001000151800004c1ad2bfe + +44477 +046f00000001000000000000036e73310c62656472696a76656e776562026e6c0000260001 +046f80000001000000020002036e73310c62656472696a76656e776562026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d90867fec03f00010001000151800004c1ad2bfe + +44478 +b8de00000001000000000000036e73320c62656472696a76656e776562026e6c00001c0001 +b8de80000001000000020002036e73320c62656472696a76656e776562026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03100010001000151800004d90867fec00c00010001000151800004c1ad2bfe + +44479 +1eb700000001000000000000036e73320c62656472696a76656e776562026e6c0000260001 +1eb780000001000000020002036e73320c62656472696a76656e776562026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc03100010001000151800004d90867fec00c00010001000151800004c1ad2bfe + +44480 +454100000001000000000000036e7331046372696f026e6c0000010001 +454180000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44481 +a97d00000001000000000000036e7332046372696f026e6c0000010001 +a97d80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44482 +aba700000001000000000000037777770a72656372656174696566026e6c0000010001 +aba780000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44483 +7687000000010000000000000631326d6f7665026e6c0000010001 +7687800000010000000300020631326d6f7665026e6c0000010001c00c0002000100015180000f04616e73310774697363616c69c013c00c0002000100015180000704616e7332c02cc00c0002000100015180001404616e73330a74697363616c696e657402626500c02700010001000151800004c3f14d38c04200010001000151800004c3f13325 + +44484 +f95e0000000100000000000008717569636b6e6574026e6c00000f0001 +f95e8000000100000003000208717569636b6e6574026e6c00000f0001c00c00020001000151800011036e73310a6d756c74696b6162656cc015c00c00020001000151800006036e7332c02dc00c00020001000151800014036e73300a6d756c74696b6162656c036e657400c0290001000100015180000450f2e002c0460001000100015180000450f2e006 + +44485 +f6290000000100000000000003666c79036b6c6d026e6c0000010001 +f6298000000100000002000103666c79036b6c6d026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +44486 +b893d5ca5011fef2fb830000000000000000 + + +44487 +4a740000000100000000000003666c79036b6c6d026e6c0000260001 +4a748000000100000002000103666c79036b6c6d026e6c0000260001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c02800010001000151800004ab155012 + +44488 +40ec000000010000000000000763656e74726963026e6c00000f0001 +40ec800000010000000200000763656e74726963026e6c00000f0001c00c0002000100015180000d036e7331036b706e036e657400c00c00020001000151800006036e7332c02c + +44489 +b893d5cb5010fef2fb820000000000000000 + + +44490 +125000000001000000000000046a616d6f026e6c00000f0001 +125080000001000000020000046a616d6f026e6c00000f0001c00c0002000100015180000c036e7331036e6c6902646b00c00c00020001000151800006036e7332c029 + +44491 +c59500000001000000000000036e7331066974686f7374026e6c0000010001 +c59580000001000000020002036e7331066974686f7374026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5852a55c03900010001000151800004d5852a64 + +44492 +c6e400000001000000000000037777770668617469626f026e6c0000010001 +c6e480000001000000030001037777770668617469626f026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +44493 +13b1000000010000000000000a7374617274726176656c026e6c0000010001 +13b1800000010000000200020a7374617274726176656c026e6c0000010001c00c00020001000151800009026e73036f6b65c017c00c00020001000151800006036e7332c02ec02b00010001000151800004c13acc3bc04000010001000151800004c13acc27 + +44494 +35500000000100000000000006535441544f5208524553454152434803505454024e4c0000010001 +35508000000100000002000006535441544f5208524553454152434803505454024e4c0000010001c01c0002000100015180000d03646e73036b706e03636f6d00c01c0002000100015180000d036e7332036b706e036e657400 + +44495 +8dfe000000010000000000000b6e6f64652d632d66346537056132303030026e6c0000010001 +8dfe800000010000000300020b6e6f64652d632d66346537056132303030026e6c0000010001c01800020001000151800006036e7331c018c01800020001000151800010036e733109756e69736f75726365c01ec01800020001000151800006036e7332c018c032000100010001518000043e6c0141c060000100010001518000043e6c0142 + +44496 +e6960000000100000000000003777777056f706c6f6f026e6c0000010001 +e6968000000100000003000303777777056f706c6f6f026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc016c0100002000100015180000704646e7332c02fc0100002000100015180000704646e7333c02fc02a00010001000151800004d44fe803c04400010001000151800004c3f5c782c05700010001000151800004d44ff303 + +44497 +373e000000010000000000000561636b6572026e6c00001c0001 +373e800000010000000200000561636b6572026e6c00001c0001c00c00020001000151800015026e730c776f726c64686f7374696e67036f726700c00c00020001000151800008026e73026175c029 + +44498 +6c7700000001000000000000036e73310862657374686f7374026e6c0000010001 +6c7780000001000000020002036e73310862657374686f7374026e6c0000010001c0100002000100015180000e036e733107736b616e646e73c019c01000020001000151800006036e7332c031c02d00010001000151800004d9aa1271c04700010001000151800004d9aa1272 + +44499 +5c8400000001000000000000036e73320862657374686f7374026e6c0000010001 +5c8480000001000000020002036e73320862657374686f7374026e6c0000010001c0100002000100015180000e036e733107736b616e646e73c019c01000020001000151800006036e7332c031c02d00010001000151800004d9aa1271c04700010001000151800004d9aa1272 + +44500 +6a21000000010000000000000377777718726f746172792d6a6575676475697477697373656c696e67026e6c0000010001 +6a21800000010000000200020377777718726f746172792d6a6575676475697477697373656c696e67026e6c0000010001c0100002000100015180000a036e733103696166c029c01000020001000151800006036e7332c041c03d000100010001518000045059e040c053000100010001518000045059ee03 + +44501 +bd890000000100000000000009677261706861726d61026e6c00000f0001 +bd898000000100000002000209677261706861726d61026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +44502 +658c0000000100000000000005646e732d31056c61646f74026e6c0000010001 +658c8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44503 +cec40000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cec48000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44504 +8f810000000100000000000005646e732d32056c61646f74026e6c0000010001 +8f818000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44505 +089600000001000000000000086174617261786961026e6c0000010001 +089680000001000000020000086174617261786961026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c02f + +44506 +8ac9000000010000000000000d36322d3137372d3139362d333007626265796f6e64026e6c0000010001 +8ac9800000010000000200020d36322d3137372d3139362d333007626265796f6e64026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800006036e7332c01ac036000100010001518000043eb1900bc048000100010001518000043eb19002 + +44507 +84e90000000100000000000005646e732d31056c61646f74026e6c0000010001 +84e98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44508 +84ea0000000100000000000005646e732d32056c61646f74026e6c0000010001 +84ea8000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44509 +1f20000000010000000000000765617379626974026e6c0000010001 +1f20800000010000000300010765617379626974026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc014c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c046c028000100010001518000043efa0202 + +44510 +0e0000100001000000000001036e7331046e696f7a026e6c00000100010000290800000000000000 +0e0080000001000000030003036e7331046e696f7a026e6c0000010001c01000020001000151800002c00cc01000020001000151800008056c69776562c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c000100010001518000049101d228c037000100010001518000049101d21e0000291000000000000000 + +44511 +838000100001000000000001056c69776562046e696f7a026e6c00000100010000290800000000000000 +838080000001000000030003056c69776562046e696f7a026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800002c00cc01200020001000151800014036e73300a6d756c74696b6162656c036e657400c02b000100010001518000049101d228c00c000100010001518000049101d21e0000291000000000000000 + +44512 +0f400000000100000000000003637769026e6c00000f0001 +0f408000000100000002000203637769026e6c00000f0001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc02400010001000151800004c010bf08c03600010001000151800004c010bf23 + +44513 +976c000000010000000000000377777705706f6f7374026e6c0000010001 +976c800000010000000200020377777705706f6f7374026e6c0000010001c01000020001000151800012036e73310b7669616e6574776f726b73c016c01000020001000151800006036e7332c02ec02a00010001000151800004d43d0f08c04800010001000151800004d43d19e2 + +44514 +f51d0000000100000000000003777777087072656e6574616c026e6c0000010001 +f51d8000000100000003000303777777087072656e6574616c026e6c0000010001c01000020001000151800010036e7331096d61726b6772616166c019c01000020001000151800006036e7332c031c01000020001000151800006036e7333c031c02d00010001000151800004c3f13ceec04900010001000151800004c372eb43c05b000100010001518000043e320e8f + +44515 +c24300000001000000000000037777770a31386a61617267696473026e6c0000010001 +c24380000001000000020002037777770a31386a61617267696473026e6c0000010001c0100002000100015180000b036e7331046e732d31c01bc01000020001000151800006036e7332c033c02f000100010001518000045045a0cdc04600010001000151800004d4cceec8 + +44516 +9014000000010000000000000b736373766f6c656e64616d026e6c00000f0001 +9014800000010000000200020b736373766f6c656e64616d026e6c00000f0001c00c00020001000151800010036e7331096c6971756964776562c018c00c00020001000151800006036e7332c030c02c0001000100015180000451ad0716c0480001000100015180000451ad0717 + +44517 +eee000000001000000000000037777770e6d6172697469656d6d757365756d026e6c0000010001 +eee080000001000000020002037777770e6d6172697469656d6d757365756d026e6c0000010001c0100002000100015180000f036e733108696e7465726d6178c01fc01000020001000151800006036e7332c037c03300010001000151800004505fa002c04e00010001000151800004505fac02 + +44518 +8362000000010000000000000377777705626f6b6f65026e6c0000010001 +8362800000010000000200020377777705626f6b6f65026e6c0000010001c01000020001000151800006036e7333c010c01000020001000151800006036e7334c010c02a00010001000151800004d554b1dcc03c00010001000151800004d5540479 + +44519 +c83b0000000100000000000003646173026e6c00000f0001 +c83b8000000100000003000303646173026e6c00000f0001c00c00020001000151800010036e7331096d61726b6772616166c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004c3f13ceec04000010001000151800004c372eb43c052000100010001518000043e320e8f + +44520 +6da20000000100000000000003777777093275686f7374696e67026e6c0000010001 +6da28000000100000002000203777777093275686f7374696e67026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c02e000100010001518000043ed45d0cc040000100010001518000043ed45d0d + +44521 +20db000000010000000000000773657276657231087369746574726171026e6c0000010001 +20db800000010000000200000773657276657231087369746574726171026e6c0000010001c0140002000100015180000f036e733105796b6f6f6e036e657400c01400020001000151800006036e7332c035 + +44522 +d1e7001000010000000000010663616e646561026e6c00000f00010000290800000080000000 +d1e7800000010000000300040663616e646561026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b0000291000000000000000 + +44523 +6d20000000010000000000000377777703767665026e6c0000010001 +6d20800000010000000300030377777703767665026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02800010001000151800004c14e9e14c03a00010001000151800004c14e9e22c04c00010001000151800004d4ce7a43 + +44524 +be1200100001000000000001046e7330310a6c696e6b736572766572026e6c00000100010000290800000080000000 +be1280000001000000020003046e7330310a6c696e6b736572766572026e6c0000010001c01100020001000151800015036e73310e6d656761626974686f7374696e67c01cc01100020001000151800006036e7332c034c0300001000100015180000452c04516c0510001000100015180000452c045420000291000000000000000 + +44525 +2f8a00100001000000000001046e7330320a6c696e6b736572766572026e6c00000100010000290800000080000000 +2f8a80000001000000020003046e7330320a6c696e6b736572766572026e6c0000010001c01100020001000151800015036e73310e6d656761626974686f7374696e67c01cc01100020001000151800006036e7332c034c0300001000100015180000452c04516c0510001000100015180000452c045420000291000000000000000 + +44526 +244400000001000000000000037777770b737765657461646f6e6973026e6c0000010001 +244480000001000000020002037777770b737765657461646f6e6973026e6c0000010001c0100002000100015180000c04646e73310470696e73c01cc0100002000100015180000704646e7332c035c03000010001000151800004d9c26101c04800010001000151800004d9c26002 + +44527 +8ef100000001000000000000066d61737465720364746f07747564656c6674026e6c0000010001 +8ef180000001000000050005066d61737465720364746f07747564656c6674026e6c0000010001c01700020001000151800006036e7331c017c01700020001000151800006036e7332c017c01700020001000151800009036e7331026574c017c0170002000100015180000d07647574746e636202746ec017c0170002000100015180000e036e733107737572666e6574c01fc0330001000100015180000482a1b401c0450001000100015180000482a1b441c0570001000100015180000482a12111c06c0001000100015180000482a1bc8cc08500010001000151800004c0576a65 + +44528 +2ec7000000010000000000000b77617469736d696a6e6970026e6c0000010001 +2ec7800000010000000200020b77617469736d696a6e6970026e6c0000010001c00c0002000100015180000e036e733107756e6974656368c018c00c00020001000151800006036e7332c030c02c00010001000151800004511121f8c0460001000100015180000451112184 + +44529 +bdba000000010000000000000c727363726f7474657264616d026e6c00000f0001 +bdba800000010000000200000c727363726f7474657264616d026e6c00000f0001c00c00020001000151800010026e730777697265687562036e657400c00c00020001000151800006036e7332c030 + +44530 +93e7000000010000000000000b6d656761737570706f7274026e6c00000f0001 +93e7800000010000000200000b6d656761737570706f7274026e6c00000f0001c00c00020001000151800013026e730a6e61616d736572766572036e657400c00c00020001000151800006036e7331c02f + +44531 +64a5000000010000000000000377777708666f746f70726574026e6c0000010001 +64a5800000010000000300020377777708666f746f70726574026e6c0000010001c0100002000100015180000d036e733106776964657873c019c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c031c02d00010001000151800004d4ccc0fcc062000100010001518000043efa0703 + +44532 +7f9f000000010000000000000a6970353033633363616405737065656406706c616e6574026e6c0000010001 +7f9f800000010000000300030a6970353033633363616405737065656406706c616e6574026e6c0000010001c01d0002000100015180000b046e73303803777873c024c01d00020001000151800007046e733039c03dc01d00020001000151800006036e7334c03dc03800010001000151800004c3790128c04f00010001000151800004c3790143c06200010001000151800004d5ef9a65 + +44533 +507400000001000000000000037777770d7469636b6574747261636b6572026e6c0000010001 +507480000001000000020002037777770d7469636b6574747261636b6572026e6c0000010001c0100002000100015180001103646e730a636f6e63657074736661c01ec0100002000100015180001004646e733208636f6e6365707473c01ec03200010001000151800004d5c51c03c04f00010001000151800004d5c51e1c + +44534 +60f4000000010000000000000377777703766568026e6c0000010001 +60f4800000010000000200000377777703766568026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c02e + +44535 +42dc00000001000000000000056c6f76656e026e6c00000f0001 +42dc80000001000000020002056c6f76656e026e6c00000f0001c00c0002000100015180000b036e73310477656233c012c00c00020001000151800006036e7332c02ac02600010001000151800004d436240ec03d00010001000151800004c2b262ef + +44536 +a4c5000000010000000000000377777709737065656c7370656c026e6c0000010001 +a4c5800000010000000200000377777709737065656c7370656c026e6c0000010001c01000020001000151800018036e73330e666c6578776562686f7374696e6703636f6d00c01000020001000151800006036e7334c032 + +44537 +f0d700000001000000000000036e733503777873026e6c0000010001 +f0d780000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44538 +aed500000001000000000000036e733503777873026e6c0000260001 +aed580000001000000030003036e733503777873026e6c0000260001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44539 +9dfa0000000100000000000006736572766572066b6f72707574026e6c0000060001 +9dfa8403000100000001000006736572766572066b6f72707574026e6c0000060001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +44540 +0d7000000001000000000000037777770769727361756e61026e6c0000010001 +0d7080000001000000020002037777770769727361756e61026e6c0000010001c01000020001000151800014036e73310d6d6576657273686f7374696e67c018c01000020001000151800006036e7332c030c02c00010001000151800004d5c9e8c8c04c00010001000151800004d5c9e8c9 + +44541 +f4970000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +f4978000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +44542 +6c98000000010000000000000a6777656264657369676e026e6c0000ff0001 +6c98800000010000000200020a6777656264657369676e026e6c0000ff0001c00c0002000100015180000f026e7309656174736572766572c017c00c00020001000151800006036e7332c02ec02b00010001000151800004d4cb0e42c04600010001000151800004d4cb1221 + +44543 +ccf800000001000000000000026e730e64617461636f6e686f7374696e67026e6c0000010001 +ccf880000001000000020002026e730e64617461636f6e686f7374696e67026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d43d2934c04000010001000151800004d468d143 + +44544 +46c600000001000000000000036e73320e64617461636f6e686f7374696e67026e6c0000010001 +46c680000001000000020002036e73320e64617461636f6e686f7374696e67026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc03300010001000151800004d43d2934c00c00010001000151800004d468d143 + +44545 +17c500000001000000000000046e7330310a6c696e6b736572766572026e6c0000010001 +17c580000001000000020002046e7330310a6c696e6b736572766572026e6c0000010001c01100020001000151800015036e73310e6d656761626974686f7374696e67c01cc01100020001000151800006036e7332c034c0300001000100015180000452c04516c0510001000100015180000452c04542 + +44546 +5d6d00000001000000000000046e7330320a6c696e6b736572766572026e6c0000010001 +5d6d80000001000000020002046e7330320a6c696e6b736572766572026e6c0000010001c01100020001000151800015036e73310e6d656761626974686f7374696e67c01cc01100020001000151800006036e7332c034c0300001000100015180000452c04516c0510001000100015180000452c04542 + +44547 +dc5500000001000000000000036e733109756e69736f75726365026e6c0000010001 +dc5580000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +44548 +885528000001000200000000026e6c000006000106736572766572066b6f72707574026e6c00000500fe000000000000c01400010001000000000004c0a80003 +8855a8040000000000000000 + +44549 +3534000000010000000000000663616e646561026e6c00000f0001 +3534800000010000000300030663616e646561026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c013c00c0002000100015180000a076e736175746832c02fc00c0002000100015180000a076e736175746833c02fc02700010001000151800004d5880c33c04100010001000151800004d5880c3bc05700010001000151800004d4ccc00b + +44550 +656c00000001000000000000054d4f4c454e0350434d026e6c0000010001 +656c80000001000000020001054d4f4c454e0350434d026e6c0000010001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +44551 +c9c700000001000000000000054d4f4c454e0350434d026e6c00001c0001 +c9c780000001000000020001054d4f4c454e0350434d026e6c00001c0001c01200020001000151800005026e73c012c0120002000100015180000b026e73026e6c036e657400c02a00010001000151800004c143e6dc + +44552 +53e800000001000000000000037777770666616e2d6f66026e6c0000010001 +53e880000001000000030001037777770666616e2d6f66026e6c0000010001c0100002000100015180000e026e7308767575727765726bc017c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c049c02b000100010001518000043efa0202 + +44553 +33e100000001000000000000036e7331046e696f7a026e6c0000010001 +33e180000001000000030002036e7331046e696f7a026e6c0000010001c01000020001000151800002c00cc01000020001000151800008056c69776562c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c00c000100010001518000049101d228c037000100010001518000049101d21e + +44554 +59f5000000010000000000000b6576656e656d656e74656e09756974736c6167656e026e6c0000010001 +59f5800000010000000300010b6576656e656d656e74656e09756974736c6167656e026e6c0000010001c0180002000100015180000e026e7308767575727765726bc022c01800020001000151800012036e733208767575727765726b036e657400c01800020001000151800006036e7333c054c036000100010001518000043efa0202 + +44555 +2c4801000001000000000000056b6f726e6f026e6c00000f000100 +2c4885030001000000010000056b6f726e6f026e6c00000f0001c01200060001000038400036026e730f646f6d61696e2d7265676973747279c0120a686f73746d6173746572c0290bf1e540000070800000384000278d0000003840 + +44556 +00000000700240005b1100000204055001010402 +000080010000000000000000 + +44557 +55fe00000001000000000000036e733303777873026e6c0000010001 +55fe80000001000000030003036e733303777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44558 +226d0000000100000000000003777777107a656e74726f7079706172746e657273026e6c0000010001 +226d8000000100000002000003777777107a656e74726f7079706172746e657273026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c03b + +44559 +00bf000000010000000000000377777709676f2d63656e747265026e6c0000010001 +00bf800000010000000200020377777709676f2d63656e747265026e6c0000010001c0100002000100015180000e036e733107686f7477697265c01ac01000020001000151800006036e7332c032c02e0001000100015180000451044b03c0480001000100015180000451044bc8 + +44560 +19d000000001000000000000037777770f617263686974656374656e7765726b026e6c0000010001 +19d080000001000000020002037777770f617263686974656374656e7765726b026e6c0000010001c0100002000100015180000c026e7306787334616c6cc020c01000020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +44561 +6e3400000001000000000000067370642d6f67026e6c0000010001 +6e3480000001000000020002067370642d6f67026e6c0000010001c00c0002000100015180000a036e733103777332c013c00c00020001000151800006036e7332c02bc027000100010001518000045054e5f3c03d000100010001518000045054e5f4 + +44562 +683b000000010000000000000c756e6978616476616e6365640b7669616e6574776f726b73026e6c0000010001 +683b800000010000000200020c756e6978616476616e6365640b7669616e6574776f726b73026e6c0000010001c01900020001000151800006036e7331c019c01900020001000151800006036e7332c019c03900010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +44563 +661700000001000000000000037777770b616466697265776f726b73026e6c0000010001 +661780000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +44564 +73c60000000100000000000003706f7003777873026e6c0000010001 +73c68000000100000003000303706f7003777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44565 +dfab00000001000000000000076865696a73656e026e6c0000010001 +dfab80000001000000020002076865696a73656e026e6c0000010001c00c0002000100015180000f026e7309656174736572766572c014c00c00020001000151800006036e7332c02bc02800010001000151800004d4cb0e42c04300010001000151800004d4cb1221 + +44566 +23ab000000010000000000000468747470077765626e743034067365727665720477656233026e6c0000010001 +23ab800000010000000200020468747470077765626e743034067365727665720477656233026e6c0000010001c02000020001000151800006036e7331c020c02000020001000151800006036e7332c020c03900010001000151800004d436240ec04b00010001000151800004c2b262ef + +44567 +5cc40000000100000000000007686f73746e6574026e6c00000f0001 +5cc48000000100000002000207686f73746e6574026e6c00000f0001c00c00020001000151800010036e733109686f73746e65746276c014c00c00020001000151800006036e7332c02cc0280001000100015180000451113264c04400010001000151800004d5c42851 + +44568 +d3a500000001000000000000037777770f617263686974656374656e7765726b026e6c0000010001 +d3a580000001000000020002037777770f617263686974656374656e7765726b026e6c0000010001c0100002000100015180000c026e7306787334616c6cc020c01000020001000151800006036e7332c037c03400010001000151800004c26d0642c04c00010001000151800004c26d0963 + +44569 +3f1b0000000100000000000003777777076879756e646169026e6c026e6c0000010001 +3f1b8403000100000001000003777777076879756e646169026e6c026e6c0000010001c01b00060001000038400036026e730f646f6d61696e2d7265676973747279c01b0a686f73746d6173746572c0320bf1e540000070800000384000278d0000003840 + +44570 +45a700000001000000000000036e73310d63656e747269636f6e6c696e65026e6c0000010001 +45a780000001000000020002036e73310d63656e747269636f6e6c696e65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d481ec0cc04000010001000151800004d590e63a + +44571 +b887f30b5018ff0072d80000008ff89a000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afe3d403c4fbd0003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 + + +44572 +40140000000100000000000009696e65742d737276310472616574026e6c0000010001 +40148000000100000002000109696e65742d737276310472616574026e6c0000010001c01600020001000151800002c00cc0160002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1430d21 + +44573 +264d00000001000000000000036e733109776570726f76696465026e6c0000010001 +264d80000001000000020002036e733109776570726f76696465026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9db5c03c00010001000151800004d5ef9dbe + +44574 +adfe00000001000000000000036e733109776570726f76696465026e6c0000260001 +adfe80000001000000020002036e733109776570726f76696465026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5ef9db5c03c00010001000151800004d5ef9dbe + +44575 +56ff00000001000000000000036e733209776570726f76696465026e6c0000010001 +56ff80000001000000020002036e733209776570726f76696465026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9db5c00c00010001000151800004d5ef9dbe + +44576 +722800000001000000000000036e733209776570726f76696465026e6c0000260001 +722880000001000000020002036e733209776570726f76696465026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e00010001000151800004d5ef9db5c00c00010001000151800004d5ef9dbe + +44577 +b887f3195011fef29eb50000000000000000 + + +44578 +000000007002ff00e15100000204055001010402 +000080010000000000000000 + +44579 +b887f31a5010fef29eb40000000000000000 + + +44580 +67390000000100000000000005646e732d32056c61646f74026e6c0000010001 +67398000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44581 +67380000000100000000000005646e732d31056c61646f74026e6c0000010001 +67388000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44582 +b8971ae65010ff003a240000000000000000 +b8979ae40000000000000000 + +44583 +2cf600000001000000000000037777770966656d667573696f6e026e6c0000010001 +2cf680000001000000030003037777770966656d667573696f6e026e6c0000010001c01000020001000151800010036e733109656e6368616e746564c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e00010001000151800004d5ef8589c04a00010001000151800004d5ef8593c05c00010001000151800004d5ef8005 + +44584 +b8971ae65018ff00a9f90000008f5656000000010001000000000f313034373937323032303234322d320000f900010f313034373937323032303234322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afe40403c4fc00003000000304e544c4d535350000100000097b208e0060006002a0000000a000a0020000000524f4353455256455232524f435655450000 +b8979ae40000000000000000 + +44585 +863700000001000000000000034e533205414d415a45024e4c0000010001 +863780000001000000020002034e533205414d415a45024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02a00010001000151800004c26d6d05c00c00010001000151800004d4ccc0f2 + +44586 +b8971af45011fef239920000000000000000 +b8979af40000000000000000 + +44587 +000000007002faf06fb40000020405b401010402 +000080010000000000000000 + +44588 +81d000000001000000000000037777770b6f6e6c696e652d64617461026e6c0000010001 +81d080000001000000020002037777770b6f6e6c696e652d64617461026e6c0000010001c0100002000100015180000b036e73310431326e73c01cc01000020001000151800006036e7332c034c030000100010001518000043ed44ca0c047000100010001518000043ed4440c + +44589 +121200000001000000000000026e73076e656473746174026e6c0000010001 +121280000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +44590 +b8971af55010fef239910000000000000000 +b8979af40000000000000000 + +44591 +ef4e00000001000000000000036e73320431326e73026e6c0000010001 +ef4e80000001000000020002036e73320431326e73026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc029000100010001518000043ed44ca0c00c000100010001518000043ed4440c + +44592 +e66c00000001000000000000036e73310431326e73026e6c0000010001 +e66c80000001000000020002036e73310431326e73026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043ed44ca0c037000100010001518000043ed4440c + +44593 +083b000000010000000000000970636d7366727430310370636d024e4c0000010001 +083b800000010000000200010970636d7366727430310370636d024e4c0000010001c01600020001000151800005026e73c016c0160002000100015180000b026e73026e6c036e657400c02e00010001000151800004c143e6dc + +44594 +7d2800000001000000000000037777770f64696b6b696564696b6f6e6c696e65026e6c0000010001 +7d2880000001000000020000037777770f64696b6b696564696b6f6e6c696e65026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c020c0100002000100015180000805646e732d32c03a + +44595 +d0840000000100000000000003777777087665726f6e696361026e6c0000010001 +d0848000000100000002000203777777087665726f6e696361026e6c0000010001c0100002000100015180000f036e7331086261736971776562c019c01000020001000151800006036e7332c031c02d0001000100015180000452c04516c0480001000100015180000452c04542 + +44596 +221900000001000000000000026e73076e656473746174026e6c0000010001 +221980000001000000020002026e73076e656473746174026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7333c00fc00c00010001000151800004d4482615c03900010001000151800004d5c4021d + +44597 +10f80000000100000000000003777777076265676865796e026e6c0000010001 +10f88000000100000002000003777777076265676865796e026e6c0000010001c01000020001000151800012026e7309686f7374696e673475036e657400c01000020001000151800006036e7332c02f + +44598 +611900000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +611980000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44599 +07e900000001000000000000066368656c6c6f026e6c0000010001 +07e980000001000000030003066368656c6c6f026e6c0000010001c00c00020001000151800007046e733031c00cc00c00020001000151800007046e733032c00cc00c0002000100015180000a036e733103757063c013c02700010001000151800004d4534482c03a00010001000151800004d4534483c04d00010001000151800004d48e1c42 + +44600 +570d00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +570d80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44601 +9e1d00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +9e1d80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44602 +4c6e00000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +4c6e80000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44603 +be3000000001000000000000026e73067a6f6e6e6574026e6c0000010001 +be3080000001000000020002026e73067a6f6e6e6574026e6c0000010001c00f00020001000151800002c00cc00f0002000100015180000e026e7308767575727765726bc016c00c000100010001518000043e3a3204c038000100010001518000043efa0202 + +44604 +69e00000000100000000000006787334616c6c026e6c00000f0001 +69e08000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +44605 +1cfe0000000100000000000005646e732d31056c61646f74026e6c0000010001 +1cfe8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44606 +7ee20000000100000000000005646e732d32056c61646f74026e6c0000010001 +7ee28000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44607 +52bf00000001000000000000037777770d6261626576616e64657765656b026e6c0000010001 +52bf80000001000000020002037777770d6261626576616e64657765656b026e6c0000010001c0100002000100015180000b036e7331046e732d31c01ec01000020001000151800006036e7332c036c032000100010001518000045045a0cdc04900010001000151800004d4cceec8 + +44608 +e8c100000001000000000000076d656d62657273096d7966726565776562026e6c0000010001 +e8c180000001000000020002076d656d62657273096d7966726565776562026e6c0000010001c0140002000100015180000b036e7331046e732d31c01ec01400020001000151800006036e7332c036c032000100010001518000045045a0cdc04900010001000151800004d4cceec8 + +44609 +5f1500000001000000000000036e7332046372696f026e6c0000010001 +5f1580000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44610 +7cc400000001000000000000036e7335046372696f026e6c0000010001 +7cc480000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44611 +ec3e00000001000000000000036e7336046372696f026e6c0000010001 +ec3e80000001000000020000036e7336046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44612 +16be000000010000000000000867726f626f756d61026e6c00001c0001 +16be800000010000000200000867726f626f756d61026e6c00001c0001c00c0002000100015180000f04686e73300774697363616c69c015c00c0002000100015180000704686e7331c02e + +44613 +69050000000100000000000007736d2d74656368026e6c0000020001 +69058403000100000001000007736d2d74656368026e6c0000020001c01400060001000038400036026e730f646f6d61696e2d7265676973747279c0140a686f73746d6173746572c02b0bf1e540000070800000384000278d0000003840 + +44614 +4ae300000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b626973677665726f6c6d65026e6c0000060001 +4ae384030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b626973677665726f6c6d65026e6c0000060001c04600060001000038400036026e730f646f6d61696e2d7265676973747279c0460a686f73746d6173746572c05d0bf1e540000070800000384000278d0000003840 + +44615 +6c1b00000001000000000000046d61696c0d62616b6f6e7368697070696e67026e6c0000010001 +6c1b80000001000000020001046d61696c0d62616b6f6e7368697070696e67026e6c0000010001c0110002000100015180001007617374657269780577746e6574c01fc0110002000100015180000d0670696361726403647376c01fc03300010001000151800004c36db552 + +44616 +8768000000010000000000000c6876726f6e646572686f7564026e6c0000010001 +8768800000010000000200020c6876726f6e646572686f7564026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc019c00c00020001000151800006036e7332c030c02d00010001000151800004c26d0642c04500010001000151800004c26d0963 + +44617 +2fc50000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +2fc58000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44618 +e46c00000001000000000000086d6972726f72656407666c6162626572026e6c0000010001 +e46c80000001000000030002086d6972726f72656407666c6162626572026e6c0000010001c0150002000100015180000d036e733106776964657873c01dc01500020001000151800010036e733206776964657873036e657400c01500020001000151800006036e7333c035c03100010001000151800004d4ccc0fcc066000100010001518000043efa0703 + +44619 +83b700000001000000000000086d616e726f6c6c6f026e6c00000f0001 +83b780000001000000020002086d616e726f6c6c6f026e6c00000f0001c00c0002000100015180000c036e7331056f72696f6ec015c00c00020001000151800006036e7332c02dc02900010001000151800004c2862282c04100010001000151800004c2862b02 + +44620 +a22500000001000000000000026e73076d696e76656e77026e6c0000010001 +a22580000001000000030002026e73076d696e76656e77026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c297be47c03900010001000151800004c297be48 + +44621 +1fad28000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f73697465730b626973677665726f6c6d65026e6c00002100010000025800220000006400580b64632d68756e74736d616e0b626973677665726f6c6d65026e6c00 +1fada8040000000000000000 + +44622 +83de00000001000000000000026e73076d696e76656e77026e6c00001c0001 +83de80000001000000030002026e73076d696e76656e77026e6c00001c0001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c297be47c03900010001000151800004c297be48 + +44623 +000000007002faf07bee0000020405b401010402 +000080010000000000000000 + +44624 +3ca600000001000000000000026e73076d696e76656e77026e6c0000260001 +3ca680000001000000030002026e73076d696e76656e77026e6c0000260001c00f00020001000151800002c00cc00f00020001000151800006036e7331c00fc00f0002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c297be47c03900010001000151800004c297be48 + +44625 +fabe0000000100000000000003777777056c6f666172026e6c0000010001 +fabe8000000100000003000303777777056c6f666172026e6c0000010001c0100002000100015180000b036e7331046e667261c016c01000020001000151800006036e7332c02ec0100002000100015180000e036e733107737572666e6574c016c02a00010001000151800004c0570196c04100010001000151800004c0570197c05300010001000151800004c0576a65 + +44626 +fbd800000001000000000000036e7331076d696e76656e77026e6c0000010001 +fbd880000001000000030002036e7331076d696e76656e77026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c297be47c00c00010001000151800004c297be48 + +44627 +e0a800000001000000000000036e7331076d696e76656e77026e6c00001c0001 +e0a880000001000000030002036e7331076d696e76656e77026e6c00001c0001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c297be47c00c00010001000151800004c297be48 + +44628 +22a700000001000000000000036e7331076d696e76656e77026e6c0000260001 +22a780000001000000030002036e7331076d696e76656e77026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c02c00010001000151800004c297be47c00c00010001000151800004c297be48 + +44629 +b898e9c85010faf006410000000000000000 + + +44630 +985000000001000000000000036e733103696467026e6c00001c0001 +985080000001000000030003036e733103696467026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +44631 +791500000001000000000000036e733103696467026e6c0000260001 +791580000001000000030003036e733103696467026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c0001000100015180000451af4646c0360001000100015180000451af4647c04800010001000151800004d5a0fde6 + +44632 +a7f500000001000000000000036e733203696467026e6c00001c0001 +a7f580000001000000030003036e733203696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +44633 +abea00000001000000000000036e733203696467026e6c0000260001 +abea80000001000000030003036e733203696467026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c0280001000100015180000451af4646c00c0001000100015180000451af4647c04800010001000151800004d5a0fde6 + +44634 +04a100000001000000000000036e733303696467026e6c00001c0001 +04a180000001000000030003036e733303696467026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +44635 +138000000001000000000000036e733303696467026e6c0000260001 +138080000001000000030003036e733303696467026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0280001000100015180000451af4646c03a0001000100015180000451af4647c00c00010001000151800004d5a0fde6 + +44636 +9dca00000001000000000000036b726f026e6c00000f0001 +9dca80000001000000020002036b726f026e6c00000f0001c00c00020001000151800010066d696e6e6965066f6d726f6570c010c00c0002000100015180000805726f62696ec02bc02400010001000151800004913a1e04c04000010001000151800004913a1a34 + +44637 +295e00000001000000000000036e7331046372696f026e6c0000010001 +295e80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44638 +e2ce00000001000000000000036e7332046372696f026e6c0000010001 +e2ce80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44639 +395d000000010000000000000377777703776562026e6c0000010001 +395d800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44640 +33e800000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +33e880000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +44641 +7a3f0000000100000000000003777777097362736f6e6c696e65026e6c0000010001 +7a3f8000000100000002000203777777097362736f6e6c696e65026e6c0000010001c0100002000100015180000b036e73310476646e73c01ac01000020001000151800006036e7332c032c02e000100010001518000045117f60bc045000100010001518000045117f60c + +44642 +406400000001000000000000036e7331046372696f026e6c0000010001 +406480000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44643 +77e200000001000000000000036e7332046372696f026e6c0000010001 +77e280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44644 +159800000001000000000000037777770a72656372656174696566026e6c0000010001 +159880000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44645 +263600000001000000000000036e7331046372696f026e6c0000010001 +263680000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44646 +865800000001000000000000034e53320f444f4d41494e2d5245474953545259026e6c00001c0001 +865880000001000000030002034e53320f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +44647 +8c3200000001000000000000036e7332046372696f026e6c0000010001 +8c3280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44648 +61f900000001000000000000024e530f444f4d41494e2d5245474953545259026e6c00001c0001 +61f980000001000000030002024e530f444f4d41494e2d5245474953545259026e6c00001c0001c00f00020001000151800002c00cc00f0002000100015180000e036e733107737572666e6574c01fc00f0002000100015180000b026e73026e6c036e657400c00c00010001000151800004c1b09002c04100010001000151800004c0576a65 + +44649 +ba37000000010000000000000377777703776562026e6c0000010001 +ba37800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44650 +c92c00000001000000000000036e7331046372696f026e6c0000010001 +c92c80000001000000020000036e7331046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44651 +c52200000001000000000000036e7332046372696f026e6c0000010001 +c52280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44652 +dbdc0000000100000000000008686f75736561647303696467026e6c0000010001 +dbdc8000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +44653 +b50f00000001000000000000036e7332076e65746c616e64026e6c0000010001 +b50f80000001000000020002036e7332076e65746c616e64026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c00010001000151800004d9aa2042c00c00010001000151800004d9aa2c06 + +44654 +37f20000000100000000000008686f73746e616d650462696e640000100003 +37f28000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +44655 +fd990000000100000000000008686f73746e616d650462696e640000100003 +fd998000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +44656 +04b6000000010000000000000766313031303836057570632d66066368656c6c6f026e6c0000010001 +04b6800000010000000300030766313031303836057570632d66066368656c6c6f026e6c0000010001c01a00020001000151800007046e733031c01ac01a00020001000151800007046e733032c01ac01a0002000100015180000a036e733103757063c021c03500010001000151800004d4534482c04800010001000151800004d4534483c05b00010001000151800004d48e1c42 + +44657 +b9a900000001000000000000034e53350f444f4d41494e2d5245474953545259026e6c00001c0001 +b9a980000001000000030002034e53350f444f4d41494e2d5245474953545259026e6c00001c0001c01000020001000151800005026e73c010c0100002000100015180000e036e733107737572666e6574c020c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004c1b09002c04500010001000151800004c0576a65 + +44658 +fcb6000000010000000000000b67656c7265766973696f6e026e6c0000ff0001 +fcb6800000010000000200000b67656c7265766973696f6e026e6c0000ff0001c00c0002000100015180002007616d312d6e7330026e6c0f7072696f7269747974656c65636f6d036e657400c00c0002000100015180000d077669312d6e7330026174c037 + +44659 +54a600000001000000000000096d756c7469636f7079026e6c00000f0001 +54a680000001000000020002096d756c7469636f7079026e6c00000f0001c00c0002000100015180000c036e73310564656d6f6ec016c00c00020001000151800006036e7332c02ec02a00010001000151800004c29f4906c04200010001000151800004c29fb004 + +44660 +54d80000000100000000000008686f73746e616d650462696e640000100003 +54d88000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +44661 +aaff0000000100000000000004706f7033057175726561026e6c0000010001 +aaff8000000100000002000204706f7033057175726561026e6c0000010001c01100020001000151800010036e7331096d6173746572646e73c017c01100020001000151800006036e7332c02fc02b000100010001518000045054f347c047000100010001518000043e94a047 + +44662 +4c720000000100000000000005666f72756d086e65646c696e7578026e6c0000010001 +4c728000000100000003000305666f72756d086e65646c696e7578026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800006036e7332c012c01200020001000151800006036e7333c012c02f00010001000151800004d5ef87d2c04100010001000151800004d5ef87d3c05300010001000151800004d5ef8005 + +44663 +142a00000001000000000000037777770c64656c6674636c7573746572026e6c0000010001 +142a80000001000000030003037777770c64656c6674636c7573746572026e6c0000010001c010000200010001518000120664672d7376310867656f64656c6674c01dc0100002000100015180000e036e733107737572666e6574c01dc0100002000100015180000a077769672d777331c038c0310001000100015180000491030101c04f00010001000151800004c0576a65c0690001000100015180000491030104 + +44664 +926b000000010000000000000377777709747275636b7765726b026e6c0000010001 +926b800000010000000300010377777709747275636b7765726b026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01ac01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04cc02e000100010001518000043efa0202 + +44665 +1d9e00000001000000000000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637309706972616d6964656e026e6c0000060001 +1d9e84030001000000010000095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637309706972616d6964656e026e6c0000060001c04e00060001000038400036026e730f646f6d61696e2d7265676973747279c04e0a686f73746d6173746572c0650bf1e540000070800000384000278d0000003840 + +44666 +ed5b28000001000000010000026e6c0000060001095f6b65726265726f73045f7463701744656661756c742d46697273742d536974652d4e616d65065f7369746573026463065f6d7364637309706972616d6964656e026e6c00002100010000025800210000006400580c736273706972616d6964656e09706972616d6964656e026e6c00 +ed5ba8040000000000000000 + +44667 +00000000700240002fbf00000204057a01010402 +000080010000000000000000 + +44668 +2a0800000001000000000000046d61696c0776697370726f78026e6c0000010001 +2a0880000001000000020002046d61696c0776697370726f78026e6c0000010001c0110002000100015180000c036e733105636176656fc019c01100020001000151800006036e7332c031c02d000100010001518000045112a002c045000100010001518000045112a102 + +44669 +b7a400000001000000000000037777770c73757266736e656c6e616172026e6c0000010001 +b7a480000001000000020002037777770c73757266736e656c6e616172026e6c0000010001c0100002000100015180000f026e7309656174736572766572c01dc01000020001000151800006036e7332c034c03100010001000151800004d4cb0e42c04c00010001000151800004d4cb1221 + +44670 +799d000000010000000000000a6e656465727765657274027370026e6c0000010001 +799d800000010000000200020a6e656465727765657274027370026e6c0000010001c01700020001000151800005026e73c017c01700020001000151800006036e7332c017c02e00010001000151800004c356785dc03f00010001000151800004d468d113 + +44671 +b89baf9f501041b8f2450000000000000000 + + +44672 +054000000001000000000000046d61696c066368656c6c6f026e6c0000010001 +054080000001000000030003046d61696c066368656c6c6f026e6c0000010001c01100020001000151800007046e733031c011c01100020001000151800007046e733032c011c0110002000100015180000a036e733103757063c018c02c00010001000151800004d4534482c03f00010001000151800004d4534483c05200010001000151800004d48e1c42 + +44673 +b89baf9f501841b8f68800000094b100000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa7e403c4bfe0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 + + +44674 +21ca00000001000000000001026e75026e6c00000100010000290500000000000000 +21ca80000001000000030004026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a2840000291000000000000000 + +44675 +b89bafad501141aaf1ae0000000000000000 + + +44676 +0000000070024000a23a00000204057a01010402 +000080010000000000000000 + +44677 +444a00000001000000000000037777770870632d6163746966026e6c0000010001 +444a84030001000000010000037777770870632d6163746966026e6c0000010001c01900060001000038400036026e730f646f6d61696e2d7265676973747279c0190a686f73746d6173746572c0300bf1e540000070800000384000278d0000003840 + +44678 +b89bafae501041aaf1ad0000000000000000 + + +44679 +679300000001000000000000037777770b6861727279706f74746572026e6c0000010001 +679380000001000000020002037777770b6861727279706f74746572026e6c0000010001c01000020001000151800009036e7331026973c01cc01000020001000151800006036e7332c034c03000010001000151800004d5852102c04500010001000151800004d5c41503 + +44680 +b89c5852501041b8bc0d0000000000000000 +b89cd8540000000000000000 + +44681 +b89c5852501841b8f051000000948200000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa7e403c4bfe0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 +b89cd8540000000000000000 + +44682 +21ca00000001000000000000026e75026e6c0000010001 +21ca80000001000000030003026e75026e6c0000010001c00c00020001000151800006036e7331c00cc00c00020001000151800006036e7332c00cc00c00020001000151800006036e7333c00cc023000100010001518000043e45a282c035000100010001518000043e45a283c047000100010001518000043e45a284 + +44683 +2dcc00000001000000000000036d783306787334616c6c026e6c0000010001 +2dcc80000001000000030002036d783306787334616c6c026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7332c010c0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c03c00010001000151800004c26d0963 + +44684 +b89c5860501141aabb760000000000000000 +b89cd8640000000000000000 + +44685 +0000000070024000da6600000204057a01010402 +000080010000000000000000 + +44686 +af8b00000001000000000000037777770a6d756c74696b6162656c026e6c0000010001 +af8b80000001000000030002037777770a6d756c74696b6162656c026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800014036e73300a6d756c74696b6162656c036e657400c02f0001000100015180000450f2e002c0410001000100015180000450f2e006 + +44687 +b89c5861501041aabb750000000000000000 +b89cd8640000000000000000 + +44688 +b89cfce5501041b84fa60000000000000000 + + +44689 +b89cfce5501841b8b2ea000000945300000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005803677373096d6963726f736f667403636f6d00403afa7e403c4bfe0003000000354e544c4d535350000100000097b200e0090009002c0000000c000c0020000000534253504952414d4944454e504952414d4944454e0000 + + +44690 +88ce000000010000000000000666696e616365026e6c00000f0001 +88ce800000010000000200000666696e616365026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c013c00c0002000100015180000704686e7331c02c + +44691 +b89cfcf3501141aa4f0f0000000000000000 + + +44692 +b89cfcf4501041aa4f0e0000000000000000 + + +44693 +6281000000010000000000000436303632106173736f63696174656e756d6265727303636f6d0774656265626574026e6c0000010001 +6281840300010000000100000436303632106173736f63696174656e756d6265727303636f6d0774656265626574026e6c0000010001c02e00060001000038400036026e730f646f6d61696e2d7265676973747279c02e0a686f73746d6173746572c0450bf1e540000070800000384000278d0000003840 + +44694 +eb3a000000010000000000000139033134320236300236390a626c61636b686f6c657307656173796e6574026e6c0000010001 +eb3a800000010000000200020139033134320236300236390a626c61636b686f6c657307656173796e6574026e6c0000010001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +44695 +49d9000000010000000000000377777709717569636b73746570026e6c0000010001 +49d9800000010000000200020377777709717569636b73746570026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01ac01000020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +44696 +b0d70000000100000000000005646e732d31056c61646f74026e6c0000010001 +b0d78000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44697 +25970000000100000000000005646e732d32056c61646f74026e6c0000010001 +25978000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44698 +ead200000001000000000000077370656369616c06787334616c6c026e6c0000010001 +ead280000001000000030002077370656369616c06787334616c6c026e6c0000010001c01400020001000151800005026e73c014c01400020001000151800006036e7332c014c0140002000100015180000d026e730472697065036e657400c02f00010001000151800004c26d0642c04000010001000151800004c26d0963 + +44699 +b53200000001000000000000086d6f746f72687532066e7434616c6c026e6c0000010001 +b53280000001000000020002086d6f746f72687532066e7434616c6c026e6c0000010001c01500020001000151800005026e73c015c0150002000100015180000d036e733206787334616c6cc01cc03000010001000151800004c26d3402c04100010001000151800004c26d0963 + +44700 +c9e9000000010000000000000377777709776f6f6e6b72616e74026e6c0000010001 +c9e9800000010000000200000377777709776f6f6e6b72616e74026e6c0000010001c01000020001000151800011036e733107636f6e78696f6e036e657400c01000020001000151800006036e7332c032 + +44701 +23cc0000000100000000000006636861726973026e6c00000f0001 +23cc8000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +44702 +f7d90000000100000000000005646e732d31056c61646f74026e6c0000010001 +f7d98000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44703 +028300000001000000000000036e7332046372696f026e6c0000010001 +028380000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44704 +e54600000001000000000000037777770a72656372656174696566026e6c0000010001 +e54680000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44705 +6814000000010000000000000377777708666f6e64736f677a026e6c0000010001 +6814800000010000000200020377777708666f6e64736f677a026e6c0000010001c0100002000100015180000e0474726578066e6574726578c019c01000020001000151800006036e7332c032c02d00010001000151800004d4cccf1fc047000100010001518000043eb1a02b + +44706 +aa7000000001000000000000036e7332046372696f026e6c0000010001 +aa7080000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44707 +18e00000000100000000000003777777046c657861026e6c0000010001 +18e08000000100000003000203777777046c657861026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +44708 +38e900000001000000000000037777770a6977616e6e6164617465026e6c0000010001 +38e980000001000000020000037777770a6977616e6e6164617465026e6c0000010001c01000020001000151800011036e73330a6f70656e2d646f6f7273c01bc01000020001000151800006036e7334c033 + +44709 +230300000001000000000000036e7335046372696f026e6c0000010001 +230380000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44710 +5354000000010000000000000377777703776562026e6c0000010001 +5354800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44711 +96d700000001000000000000036e7335046372696f026e6c0000010001 +96d780000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44712 +98dd00000001000000000000056f72646f730367726e056672656961026e6c00000f0001 +98dd80000001000000020002056f72646f730367726e056672656961026e6c00000f0001c0160002000100015180000906706f6c6c7578c016c0160002000100015180000e07636172746d616e03616f67c01cc03000010001000151800004c1acf7fac04500010001000151800004c05716fa + +44713 +a65900000001000000000000036e7332046372696f026e6c0000010001 +a65980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44714 +35a200000001000000000000037777770a72656372656174696566026e6c0000010001 +35a280000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44715 +b80600000001000000000000036e7332046372696f026e6c0000010001 +b80680000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44716 +597400000001000000000000037777770562616e6173026e6c0000010001 +597480000001000000020000037777770562616e6173026e6c0000010001c01000020001000151800011036e73310a6d61696e736572766572c016c01000020001000151800006036e7332c02e + +44717 +5fec000000010000000000000c6d706d616e6167656d656e74026e6c00000f0001 +5fec800000010000000200000c6d706d616e6167656d656e74026e6c00000f0001c00c0002000100015180000f036e73310571696e6970036e657400c00c00020001000151800006036e7332c031 + +44718 +c57400000001000000000000037777770d7261626f62616e6b67726f6570026e6c0000010001 +c57480000001000000020001037777770d7261626f62616e6b67726f6570026e6c0000010001c0100002000100015180000e026e73087261626f62616e6bc01ec0100002000100015180000b026e73026e6c036e657400c0320001000100015180000491484fde + +44719 +ea1900000001000000000000036e7335046372696f026e6c0000010001 +ea1980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44720 +2461000000010000000000000377777703776562026e6c0000010001 +2461800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44721 +d0ac00000001000000000000036e7335046372696f026e6c0000010001 +d0ac80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44722 +3d0a00000001000000000000036e7332046372696f026e6c0000010001 +3d0a80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44723 +e5f000000001000000000000037777770a72656372656174696566026e6c0000010001 +e5f080000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44724 +d59e00000001000000000000036e7332046372696f026e6c0000010001 +d59e80000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44725 +603300000001000000000000036e7335046372696f026e6c0000010001 +603380000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44726 +38a8000000010000000000000377777703776562026e6c0000010001 +38a8800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44727 +5aa800000001000000000000036e7335046372696f026e6c0000010001 +5aa880000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44728 +e32b0000000100000000000003777777086962666f72756d73026e6c0000010001 +e32b8000000100000002000203777777086962666f72756d73026e6c0000010001c0100002000100015180000f026e7309656174736572766572c019c01000020001000151800006036e7332c030c02d00010001000151800004d4cb0e42c04800010001000151800004d4cb1221 + +44729 +5cc8000000010000000000001868616c6b657368616e64656c736f6e6465726e656d696e67026e6c00000f0001 +5cc8800000010000000200021868616c6b657368616e64656c736f6e6465726e656d696e67026e6c00000f0001c00c00020001000151800010036e733109686f73746e65746276c025c00c00020001000151800006036e7332c03dc0390001000100015180000451113264c05500010001000151800004d5c42851 + +44730 +2b38000000010000000000000970616e6e6f6e696361026e6c0000010001 +2b38800000010000000200020970616e6e6f6e696361026e6c0000010001c00c0002000100015180000a036e7331036e7873c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d973c015c04000010001000151800004d973c102 + +44731 +de7c00000001000000000000046d61696c086561737966696c65026e6c0000010001 +de7c80000001000000020002046d61696c086561737966696c65026e6c0000010001c0110002000100015180000f026e7309656174736572766572c01ac01100020001000151800006036e7332c031c02e00010001000151800004d4cb0e42c04900010001000151800004d4cb1221 + +44732 +093b00000001000000000000036e73320461786974026e6c0000010001 +093b80000001000000030003036e73320461786974026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c029000100010001518000043e3a440bc00c000100010001518000043e3a440cc04900010001000151800004d43d5c83 + +44733 +9d1e00100001000000000001056669716173026e6c0000ff00010000290800000080000000 +9d1e80000001000000020001056669716173026e6c0000ff0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c02c0000291000000000000000 + +44734 +618200000001000000000000054d54504333044857444c026e6c0000010001 +618284030001000000010000054d54504333044857444c026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +44735 +68a0000000010000000000000b70726f756464657369676e026e6c0000010001 +68a0800000010000000300030b70726f756464657369676e026e6c0000010001c00c00020001000151800010036e733109736974656279746573c018c00c00020001000151800006036e7332c030c00c00020001000151800006036e7333c030c02c00010001000151800004c2a55e5ac04800010001000151800004c356781cc05a000100010001518000043ec58016 + +44736 +70bb000000010000000000000377777703636264026e6c0000010001 +70bb800000010000000300030377777703636264026e6c0000010001c0100002000100015180000e046865726101780463756369c014c0100002000100015180000c066865726d6573026e6cc02fc01000020001000151800009066865726d6573c02dc02800010001000151800004d47d8001c04200010001000151800004c143ef02c05a00010001000151800004d47d8002 + +44737 +5e7900000001000000000000037777770a64757463687465656e73026e6c0000010001 +5e7980000001000000020001037777770a64757463687465656e73026e6c0000010001c0100002000100015180000a026e7304696d636fc01bc01000020001000151800013036e7332097669727475616c787303636f6d00c02f000100010001518000043e81810a + +44738 +44d2000000010000000000000377777708636861746769726c026e6c0000010001 +44d2800000010000000200000377777708636861746769726c026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c030 + +44739 +28200000000100000000000004646e73310570726f7869026e6c0000010001 +28208000000100000002000204646e73310570726f7869026e6c0000010001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d4cb090cc03900010001000151800004d4cb090d + +44740 +7a4e0000000100000000000004646e73320570726f7869026e6c0000010001 +7a4e8000000100000002000204646e73320570726f7869026e6c0000010001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02b00010001000151800004d4cb090cc00c00010001000151800004d4cb090d + +44741 +fa5300000001000000000000037777771b64696572656e626573636865726d696e672d67726f6e696e67656e026e6c0000010001 +fa5380000001000000020000037777771b64696572656e626573636865726d696e672d67726f6e696e67656e026e6c0000010001c0100002000100015180000c036e723605692d702d64c02cc01000020001000151800006036e7237c044 + +44742 +012f28000001000200000000026e6c0000060001065453444f4355026e6c00000500fe000000000000c01400010001000000000004c009c83c +012fa8040000000000000000 + +44743 +97cd00000001000000000000037777770d7265666c65637465646d696e64026e6c0000010001 +97cd80000001000000020000037777770d7265666c65637465646d696e64026e6c0000010001c01000020001000151800010036e733109706365787472656d65c01ec01000020001000151800006036e7332c036 + +44744 +4bbe00000001000000000000036e733107737572666e6574026e6c0000010001 +4bbe80000001000000040003036e733107737572666e6574026e6c0000010001c0100002000100015180000906737572766973c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc0100002000100015180000c036e7330026a61036e657400c02c00010001000151800004c0576c03c04100010001000151800004c0572402c00c00010001000151800004c0576a65 + +44745 +efcd00000001000000000000055f6c646170045f746370026463065f6d736463730c6f70656e627573696e657373026e6c0000210001 +efcd80000001000000020000055f6c646170045f746370026463065f6d736463730c6f70656e627573696e657373026e6c0000210001c0210002000100015180000b026e73026e6c036e657400c0210002000100015180001206617574683630026e73026e6c027575c048 + +44746 +53120000000100000000000003777777167765657273746174696f6e2d646f6574696e6368656d026e6c0000010001 +53128000000100000002000003777777167765657273746174696f6e2d646f6574696e6368656d026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800018036e73310e73706c69742d696e66696e697479036e657400 + +44747 +92d1000000010000000000000c6b656d70656e73747265656b026e6c0000010001 +92d1800000010000000200020c6b656d70656e73747265656b026e6c0000010001c00c00020001000151800012036e73310b7669616e6574776f726b73c019c00c00020001000151800006036e7332c031c02d00010001000151800004d43d0f08c04b00010001000151800004d43d19e2 + +44748 +cfcf00000001000000000000036e733103746d6e026e6c0000010001 +cfcf80000001000000020002036e733103746d6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d5a0d8fac03600010001000151800004d5a0d9fa + +44749 +4a5800000001000000000000037777770c74656c65666f6f6e67646973026e6c0000010001 +4a5884030001000000010000037777770c74656c65666f6f6e67646973026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +44750 +000000007002faf06c420000020405b401010402 +000080010000000000000000 + +44751 +a53000000001000000000000036e733203746d6e026e6c0000010001 +a53080000001000000020002036e733203746d6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02800010001000151800004d5a0d8fac00c00010001000151800004d5a0d9fa + +44752 +100c00000001000000000000036e733203747565026e6c0000010001 +100c80000001000000030003036e733203747565026e6c0000010001c0100002000100015180000a0774756567617465c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004839b0203c00c00010001000151800004839b0303c04c00010001000151800004c0576a65 + +44753 +023900000001000000000000077475656761746503747565026e6c0000010001 +023980000001000000030003077475656761746503747565026e6c0000010001c01400020001000151800002c00cc01400020001000151800006036e7332c014c0140002000100015180000e036e733107737572666e6574c018c00c00010001000151800004839b0203c03a00010001000151800004839b0303c04c00010001000151800004c0576a65 + +44754 +b89f748d5010faf06bc90000000000000000 +b89ff4840000000000000000 + +44755 +e7f400000001000000000000037777770a64697678706c61796572026e6c0000010001 +e7f480000001000000020002037777770a64697678706c61796572026e6c0000010001c01000020001000151800014036e73310d78786c776562686f7374696e67c01bc01000020001000151800006036e7332c033c02f000100010001518000045104580ac04f000100010001518000045104601e + +44756 +25d200000001000000000000026e7306787334616c6c026e6c0000010001 +25d280000001000000030002026e7306787334616c6c026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00f0002000100015180000d026e730472697065036e657400c00c00010001000151800004c26d0642c03800010001000151800004c26d0963 + +44757 +b89f748d5018faf029bd0000008ed048000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403af976403c4af600030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005453444f43554f4c59534c414745520000 +b89ff4840000000000000000 + +44758 +15d2000000010000000000000866616c6c6261636b046d61696c06776964657873026e6c0000010001 +15d2800000010000000300020866616c6c6261636b046d61696c06776964657873026e6c0000010001c01a00020001000151800006036e7331c01ac01a00020001000151800010036e733206776964657873036e657400c01a00020001000151800006036e7333c01ac03500010001000151800004d4ccc0fcc063000100010001518000043efa0703 + +44759 +54aa000000010000000000000866616c6c6261636b08767575727765726b026e6c0000010001 +54aa800000010000000300010866616c6c6261636b08767575727765726b026e6c0000010001c01500020001000151800005026e73c015c01500020001000151800012036e733208767575727765726b036e657400c01500020001000151800006036e7333c047c032000100010001518000043efa0202 + +44760 +18dd000000010000000000000565666e657403626974026e6c0000010001 +18dd800000010000000300030565666e657403626974026e6c0000010001c0120002000100015180000a076e736175746831c012c0120002000100015180000a076e736175746832c012c0120002000100015180000a076e736175746833c012c02a00010001000151800004d5880c33c04000010001000151800004d5880c3bc05600010001000151800004d4ccc00b + +44761 +85e700100001000000000001026e7303626f73026e6c00000100010000290800000080000000 +85e780000001000000020003026e7303626f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5881e43c03500010001000151800004d51392030000291000000000000000 + +44762 +40b400100001000000000001036e733203626f73026e6c00000100010000290800000080000000 +40b480000001000000020003036e733203626f73026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004d5881e43c00c00010001000151800004d51392030000291000000000000000 + +44763 +b89f749b5011fae26b380000000000000000 +b89ff4940000000000000000 + +44764 +000000007002faf091260000020405b401010402 +000080010000000000000000 + +44765 +6dea00000001000000000000066b6f6d62696e026e6c0000010001 +6dea80000001000000020001066b6f6d62696e026e6c0000010001c00c000200010001518000130b737061726373657276657204706c6578c013c00c0002000100015180000b026e73026e6c036e657400c02700010001000151800004c1439a0a + +44766 +58a9000000010000000000000d62657374757572736b616d65720661736f706f73026e6c0000010001 +58a9800000010000000200000d62657374757572736b616d65720661736f706f73026e6c0000010001c01a00020001000151800010036e7331066576736f6674036e657400c01a00020001000151800006036e7332c039 + +44767 +b57a000000010000000000000474617869026e6c00000f0001 +b57a800000010000000200020474617869026e6c00000f0001c00c0002000100015180000d03706e7306636f6d6c6f67c011c00c0002000100015180000603736e73c029c02500010001000151800004d5a0c803c03e00010001000151800004d5a0c804 + +44768 +970d000000010000000000000d62657374757572736b616d65720661736f706f73026e6c0000010001 +970d800000010000000200000d62657374757572736b616d65720661736f706f73026e6c0000010001c01a00020001000151800010036e7331066576736f6674036e657400c01a00020001000151800006036e7332c039 + +44769 +205a00000001000000000000026e7303626f73026e6c0000010001 +205a80000001000000020002026e7303626f73026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c00010001000151800004d5881e43c03500010001000151800004d5139203 + +44770 +102d00000001000000000000036e733203626f73026e6c0000010001 +102d80000001000000020002036e733203626f73026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02800010001000151800004d5881e43c00c00010001000151800004d5139203 + +44771 +323e0000000100000000000003777777036d736e026e6c0000010001 +323e8000000100000003000003777777036d736e026e6c0000010001c0100002000100015180001204646e733302756b046d736674036e657400c0100002000100015180000a04646e7331026370c030c0100002000100015180000a04646e7331026463c030 + +44772 +b89f749c5010fae26b370000000000000000 +b89ff4940000000000000000 + +44773 +b8a055e75010faf0af520000000000000000 +b8a0d5e40000000000000000 + +44774 +7e23000000010000000000000768696768776179026e6c00000f0001 +7e23800000010000000200000768696768776179026e6c00000f0001c00c00020001000151800012036e73310866696e616c69737403636f6d00c00c00020001000151800006036e7332c02c + +44775 +7b290010000100000000000106787334616c6c026e6c00000f00010000290800000000000000 +7b298000000100000003000306787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d09630000291000000000000000 + +44776 +b8a055e75018faf0a56c0000008e9923000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af976403c4af600030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005453444f43554f4c59534c414745520000 +b8a0d5e40000000000000000 + +44777 +dcc400000001000000000000036e73320f732d686572746f67656e626f736368026e6c0000010001 +dcc480000001000000030002036e73320f732d686572746f67656e626f736368026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c03400010001000151800004c29725e3c00c00010001000151800004c29725ec + +44778 +c67500000001000000000000036e73320f732d686572746f67656e626f736368026e6c00001c0001 +c67580000001000000030002036e73320f732d686572746f67656e626f736368026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c03400010001000151800004c29725e3c00c00010001000151800004c29725ec + +44779 +7d1600000001000000000000036e73320f732d686572746f67656e626f736368026e6c0000260001 +7d1680000001000000030002036e73320f732d686572746f67656e626f736368026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000d036e7332036b706e036e657400c03400010001000151800004c29725e3c00c00010001000151800004c29725ec + +44780 +6bd200000001000000000000036e73310f732d686572746f67656e626f736368026e6c0000010001 +6bd280000001000000030002036e73310f732d686572746f67656e626f736368026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c29725e3c04200010001000151800004c29725ec + +44781 +43af00000001000000000000036e73310f732d686572746f67656e626f736368026e6c00001c0001 +43af80000001000000030002036e73310f732d686572746f67656e626f736368026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c29725e3c04200010001000151800004c29725ec + +44782 +605600000001000000000000036e73310f732d686572746f67656e626f736368026e6c0000260001 +605680000001000000030002036e73310f732d686572746f67656e626f736368026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000d036e7332036b706e036e657400c00c00010001000151800004c29725e3c04200010001000151800004c29725ec + +44783 +aae100100001000000000001036e73320f6761726e69657270726f6a65637473026e6c00000100010000290800000080000000 +aae180000001000000020003036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e1420000291000000000000000 + +44784 +a27900000001000000000000036e73320f6761726e69657270726f6a65637473026e6c0000010001 +a27980000001000000020002036e73320f6761726e69657270726f6a65637473026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7331c010c034000100010001518000045117e122c045000100010001518000045117e142 + +44785 +e7400000000100000000000006787334616c6c026e6c00000f0001 +e7408000000100000003000206787334616c6c026e6c00000f0001c00c00020001000151800005026e73c00cc00c00020001000151800006036e7332c00cc00c0002000100015180000d026e730472697065036e657400c02700010001000151800004c26d0642c03800010001000151800004c26d0963 + +44786 +446a0000000100000000000006696d6167657306637532646179026e6c0000010001 +446a8000000100000002000206696d6167657306637532646179026e6c0000010001c01300020001000151800012036e73310b6d6564696164657369676ec01ac01300020001000151800006036e7332c032c02e00010001000151800004c3b1f203c04c00010001000151800004d4ccf533 + +44787 +e685000000010000000000000374736c0d696e766973696f6e706f776572026e6c0000010001 +e685800000010000000200020374736c0d696e766973696f6e706f776572026e6c0000010001c01000020001000151800011036e73310a667574757265666c6578c01ec01000020001000151800006036e7332c036c03200010001000151800004d9aa122bc04f00010001000151800004d9aa122c + +44788 +b8a055f55011fae2aec10000000000000000 +b8a0d5f40000000000000000 + +44789 +8a6d000000010000000000000a736f6e6572616d61696c026e6c00000f0001 +8a6d800000010000000200000a736f6e6572616d61696c026e6c00000f0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +44790 +000000007002faf0a72f0000020405b401010402 +000080010000000000000000 + +44791 +eb2200000001000000000000034e5331074e4544434f4d50024e4c0000010001 +eb2280000001000000020001034e5331074e4544434f4d50024e4c0000010001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +44792 +3a8c00000001000000000000034e5331074e4544434f4d50024e4c0000260001 +3a8c80000001000000020001034e5331074e4544434f4d50024e4c0000260001c01000020001000151800002c00cc0100002000100015180000b026e73026e6c036e657400c00c00010001000151800004c3c1a80d + +44793 +ecb600000001000000000000036e733109666972737466696e64026e6c0000010001 +ecb680000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44794 +6350000000010000000000000377777703776562026e6c0000010001 +6350800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44795 +01300000000100000000000003777777077374616f6b6179026e6c0000010001 +01308403000100000001000003777777077374616f6b6179026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +44796 +b8a055f65010fae2aec00000000000000000 +b8a0d5f40000000000000000 + +44797 +b8a134165010faf0e72b0000000000000000 +b8a1b4140000000000000000 + +44798 +04ee0000000100000000000005776f64616e0369637303656c6503747565026e6c0000010001 +04ee8000000100000003000305776f64616e0369637303656c6503747565026e6c0000010001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +44799 +b8a134165018faf0631b0000008e134e000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af976403c4af600030000002f4e544c4d535350000100000097b208e0090009002600000006000600200000005453444f43554f4c59534c414745520000 +b8a1b4140000000000000000 + +44800 +466c0000000100000000000015616e636f746865656b5f5f73696572746567656c7306636c75626964026e6c0000010001 +466c8000000100000002000015616e636f746865656b5f5f73696572746567656c7306636c75626964026e6c0000010001c02200020001000151800014036e73310a646f6c7068696e2d6973036e657400c02200020001000151800006036e7332c041 + +44801 +5e4800000001000000000000036e733403777873026e6c0000010001 +5e4880000001000000030003036e733403777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800002c00cc02800010001000151800004c3790128c03b00010001000151800004c3790143c00c00010001000151800004d5ef9a65 + +44802 +17ea00000001000000000000036e733503777873026e6c0000010001 +17ea80000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44803 +b8a134245011fae2e69a0000000000000000 +b8a1b4240000000000000000 + +44804 +a09500000001000000000000037777770b6b61617274656e73746164026e6c0000010001 +a09580000001000000030002037777770b6b61617274656e73746164026e6c0000010001c0100002000100015180000d036e733106776964657873c01cc01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c034c03000010001000151800004d4ccc0fcc065000100010001518000043efa0703 + +44805 +ffec000000010000000000000377777708626f6f6b696e6773026e6c0000010001 +ffec800000010000000200010377777708626f6f6b696e6773026e6c0000010001c01000020001000151800009026e730374656ec019c0100002000100015180000b026e73026e6c036e657400c02d00010001000151800004c36c4b01 + +44806 +4e5400100001000000000000126175746f7061727473686f6f6664646f7270026e6c00001c0001 +4e5480000001000000030003126175746f7061727473686f6f6664646f7270026e6c00001c0001c00c0002000100015180000f036e7331087769726569747570c01fc00c00020001000151800006036e7332c037c00c00020001000151800006036e7333c037c03300010001000151800004d5ef8035c04e00010001000151800004d5efb035c06000010001000151800004d5ef8135 + +44807 +5dd8000000010000000000000377777704646d6d64026e6c0000010001 +5dd8800000010000000200000377777704646d6d64026e6c0000010001c01000020001000151800019036e73310f6c696e6b67696473686f7374696e67036e657400c01000020001000151800006036e7332c02d + +44808 +b8a134255010fae2e6990000000000000000 +b8a1b4240000000000000000 + +44809 +c4a800000001000000000000036e7332076f727468616e63026e6c0000010001 +c4a880000001000000020002036e7332076f727468616e63026e6c0000010001c0100002000100015180000a036e7331036e7873c018c01000020001000151800006036e7332c030c02c00010001000151800004d973c015c04200010001000151800004d973c102 + +44810 +1fc8000000010000000000000b61646e656465726c616e64026e6c00000f0001 +1fc8800000010000000200000b61646e656465726c616e64026e6c00000f0001c00c0002000100015180000d026e730468736367036e657400c00c00020001000151800006036e7332c02f + +44811 +26cf0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +26cf8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44812 +9fff0000000100000000000003706f700574656c6532026e6c0000010001 +9fff8000000100000003000003706f700574656c6532026e6c0000010001c010000200010001518000140566616c756e03646e730473776970036e657400c01000020001000151800009066b616c6d6172c030c0100002000100015180000a026e7304756e6932c039 + +44813 +373f00000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +373f80000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +44814 +01e50000000100000000000003626c3102626c06787334616c6c026e6c0000260001 +01e58000000100000003000203626c3102626c06787334616c6c026e6c0000260001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44815 +6abe00000001000000000000034e533206585334414c4c024e4c0000010001 +6abe80000001000000030002034e533206585334414c4c024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc0100002000100015180000d026e730472697065036e657400c02b00010001000151800004c26d0642c00c00010001000151800004c26d0963 + +44816 +596500000001000000000000036e7335046372696f026e6c0000010001 +596580000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44817 +ac0800000001000000000000036e7332046372696f026e6c0000010001 +ac0880000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44818 +c44f00000001000000000000037777770a72656372656174696566026e6c0000010001 +c44f80000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44819 +7c8900000001000000000000036e7332046372696f026e6c0000010001 +7c8980000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44820 +73c100000001000000000000036e733104686f6d65026e6c0000010001 +73c180000001000000030003036e733104686f6d65026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c00c00010001000151800004d47842ccc03700010001000151800004d5338161c04900010001000151800004d533804b + +44821 +eb850000000100000000000005776f64616e0369637303656c6503747565026e6c0000010001 +eb858000000100000003000305776f64616e0369637303656c6503747565026e6c0000010001c01a0002000100015180000a0774756567617465c01ac01a00020001000151800006036e7332c01ac01a0002000100015180000e036e733107737572666e6574c01ec03200010001000151800004839b0203c04800010001000151800004839b0303c05a00010001000151800004c0576a65 + +44822 +6f80000000010000000000000b6d7573696374726176656c026e6c00000f0001 +6f80800000010000000200020b6d7573696374726176656c026e6c00000f0001c00c00020001000151800010036e7331096e657467726f756e64c018c00c00020001000151800006036e7332c030c02c000100010001518000045054e415c0480001000100015180000451046014 + +44823 +02b400000001000000000000037777770f62656c617374696e676469656e7374026e6c0000010001 +02b480000001000000020001037777770f62656c617374696e676469656e7374026e6c0000010001c01000020001000151800005026e73c010c0100002000100015180000b026e73026e6c036e657400c03400010001000151800004d4880935 + +44824 +48f200000001000000000000036e733204686f6d65026e6c0000010001 +48f280000001000000030003036e733204686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc01000020001000151800006036e7333c010c02900010001000151800004d47842ccc00c00010001000151800004d5338161c04900010001000151800004d533804b + +44825 +395400000001000000000000037777771a647575727a616d6562656472696a76656e7465727265696e656e026e6c0000010001 +395480000001000000030001037777771a647575727a616d6562656472696a76656e7465727265696e656e026e6c0000010001c0100002000100015180000e026e7308767575727765726bc02bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c05dc03f000100010001518000043efa0202 + +44826 +915f00000001000000000000037777770a73746172746b6162656c026e6c0000010001 +915f80000001000000030001037777770a73746172746b6162656c026e6c0000010001c0100002000100015180000e026e7308767575727765726bc01bc01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c04dc02f000100010001518000043efa0202 + +44827 +a47900000001000000000000036e733304686f6d65026e6c0000010001 +a47980000001000000030003036e733304686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800002c00cc02900010001000151800004d47842ccc03b00010001000151800004d5338161c00c00010001000151800004d533804b + +44828 +bc5200000001000000000000036e733404686f6d65026e6c0000010001 +bc5280000001000000030003036e733404686f6d65026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c01000020001000151800006036e7333c010c02900010001000151800004d47842ccc03b00010001000151800004d5338161c04d00010001000151800004d533804b + +44829 +e70200000001000000000000036e733109666972737466696e64026e6c0000010001 +e70280000001000000020000036e733109666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44830 +cee100000001000000000000036e733209666972737466696e64026e6c0000010001 +cee180000001000000020000036e733209666972737466696e64026e6c0000010001c01000020001000151800010026e73076379736f6e657403636f6d00c01000020001000151800006036e7331c031 + +44831 +e7890000000100000000000008616473657276657206776562616473026e6c0000010001 +e7898000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +44832 +d42b00000001000000000000036e7335046372696f026e6c0000010001 +d42b80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44833 +1dcd000000010000000000000377777703776562026e6c0000010001 +1dcd800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44834 +72cc00000001000000000000036e7335046372696f026e6c0000010001 +72cc80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44835 +49c5000000010000000000002465636534633030352d633430302d343231322d386234382d316537633466383766326561065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001 +49c5840300010000000100002465636534633030352d633430302d343231322d386234382d316537633466383766326561065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001c04800060001000038400036026e730f646f6d61696e2d7265676973747279c0480a686f73746d6173746572c05f0bf1e540000070800000384000278d0000003840 + +44836 +10e50000000100000000000003706f700c737469636874696e67616e75026e6c00001c0001 +10e58000000100000002000003706f700c737469636874696e67616e75026e6c00001c0001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c036 + +44837 +57ef0000000100000000000003706f700c737469636874696e67616e75026e6c0000260001 +57ef8000000100000002000003706f700c737469636874696e67616e75026e6c0000260001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c036 + +44838 +1663000000010000000000000377777706616474726171026e6c0000010001 +1663800000010000000200000377777706616474726171026e6c0000010001c0100002000100015180000f036e733105796b6f6f6e036e657400c01000020001000151800006036e7332c02f + +44839 +73e3000000010000000000000377777708636f6e2d6e656374026e6c0000010001 +73e3800000010000000200000377777708636f6e2d6e656374026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c043 + +44840 +94e60000000100000000000007636f6e74726f6c026e6c00000f0001 +94e68000000100000002000007636f6e74726f6c026e6c00000f0001c00c00020001000151800018036e7330026e6c0b7369746570726f7465637403636f6d00c00c00020001000151800006036e7331c02c + +44841 +2ee8000000010000000000000139033134320236300236390a626c61636b686f6c657307656173796e6574026e6c0000050001 +2ee8800000010000000200020139033134320236300236390a626c61636b686f6c657307656173796e6574026e6c0000050001c02300020001000151800006036e7330c023c02300020001000151800006036e7331c023c03f00010001000151800004c2a55e01c05100010001000151800004c2a55e05 + +44842 +8e6200000001000000000000095f6b65726265726f73045f746370026463065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001 +8e6284030001000000010000095f6b65726265726f73045f746370026463065f6d736463730a6e706363656e7472756d0463766e6e026e6c0000060001c03500060001000038400036026e730f646f6d61696e2d7265676973747279c0350a686f73746d6173746572c04c0bf1e540000070800000384000278d0000003840 + +44843 +da16000000010000000000000377777712636f756e74646f776e696e62656472696a66026e6c0000010001 +da16800000010000000200000377777712636f756e74646f776e696e62656472696a66026e6c0000010001c0100002000100015180000d036e73310662697a646576c023c01000020001000151800006036e7332c03b + +44844 +02cc0000000100000000000005646e732d31056c61646f74026e6c0000010001 +02cc8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44845 +fad30000000100000000000005646e732d32056c61646f74026e6c0000010001 +fad38000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +44846 +989d0000000100000000000009616476616e74616765026e6c0000010001 +989d8000000100000002000209616476616e74616765026e6c0000010001c00c0002000100015180000c026e7306787334616c6cc016c00c00020001000151800006036e7332c02dc02a00010001000151800004c26d0642c04200010001000151800004c26d0963 + +44847 +58df00000001000000000000037777770b6469726563746c65617365026e6c0000010001 +58df80000001000000020002037777770b6469726563746c65617365026e6c0000010001c0100002000100015180000c036e7331057669727475c01cc01000020001000151800006036e7332c034c03000010001000151800004d9726102c04800010001000151800004d58141c4 + +44848 +ae7e000000010000000000000869636c656964656e026e6c00000f0001 +ae7e800000010000000200020869636c656964656e026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc015c00c00020001000151800006036e7332c02cc02900010001000151800004c26d0642c04100010001000151800004c26d0963 + +44849 +d129000000010000000000000377777709706c63646972656374026e6c0000010001 +d129800000010000000200000377777709706c63646972656374026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c036 + +44850 +974000000001000000000000037777770c6a7562696c6561736f6e6773026e6c0000010001 +974084030001000000010000037777770c6a7562696c6561736f6e6773026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +44851 +f263000000010000000000000377777709736570746574746573026e6c0000010001 +f263800000010000000200000377777709736570746574746573026e6c0000010001c0100002000100015180000f026e7306777367617465036e657400c01000020001000151800006036e7332c031 + +44852 +da6700000001000000000000136469726967656e74696e74656b7374656e7072026e6c00000f0001 +da6780000001000000020000136469726967656e74696e74656b7374656e7072026e6c00000f0001c00c0002000100015180000f04686e73300774697363616c69c020c00c0002000100015180000704686e7331c039 + +44853 +a4030000000100000000000003777777066d6174757265026e6c0000010001 +a4038000000100000002000203777777066d6174757265026e6c0000010001c0100002000100015180000e036e733007686f73746c6162c017c01000020001000151800006036e7331c02fc02b00010001000151800004c3eaad40c04500010001000151800004c3eaad41 + +44854 +aeee001000010000000000010377777702746906746572656e61026e6c00000100010000290800000000000000 +aeee800000010000000200030377777702746906746572656e61026e6c0000010001c01300020001000151800006036e7331c013c0130002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0571e02c04000010001000151800004c0576a650000291000000000000000 + +44855 +49c20000000100000000000008686f73746e616d650462696e640000100003 +49c28000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +44856 +baf20000000100000000000008686f73746e616d650462696e640000100003 +baf28000000100010000000008686f73746e616d650462696e640000100003c00c0010000300000000000605656c697a61 + +44857 +5777000000010000000000000377777702746906746572656e61026e6c0000010001 +5777800000010000000200020377777702746906746572656e61026e6c0000010001c01300020001000151800006036e7331c013c0130002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0571e02c04000010001000151800004c0576a65 + +44858 +2aa20000000100000000000002393402323403313335033134340964796e61626c6f636b07656173796e6574026e6c0000100001 +2aa28000000100000002000202393402323403313335033134340964796e61626c6f636b07656173796e6574026e6c0000100001c02400020001000151800006036e7330c024c02400020001000151800006036e7331c024c04000010001000151800004c2a55e01c05200010001000151800004c2a55e05 + +44859 +b73700000001000000000000036e7331096b6162656c666f6f6e026e6c0000010001 +b73780000001000000020002036e7331096b6162656c666f6f6e026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7334c010c00c000100010001518000043e2d2d2cc03c000100010001518000043e2d3f03 + +44860 +0ca600000001000000000000036e7334096b6162656c666f6f6e026e6c0000010001 +0ca680000001000000020002036e7334096b6162656c666f6f6e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02e000100010001518000043e2d2d2cc00c000100010001518000043e2d3f03 + +44861 +cd080000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +cd088000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44862 +28f90000000100000000000003777777076e6f7a7a6d616e026e6c0000010001 +28f98000000100000002000203777777076e6f7a7a6d616e026e6c0000010001c0100002000100015180000a036e733103677673c018c01000020001000151800006036e7332c030c02c000100010001518000045054e1aac04200010001000151800004d4ccc646 + +44863 +dc070000000100000000000005636f627261066b6f6e626962026e6c00001c0001 +dc078000000100000003000305636f627261066b6f6e626962026e6c00001c0001c01200020001000151800002c00cc0120002000100015180000906707974686f6ec012c0120002000100015180000e036e733107737572666e6574c019c00c00010001000151800004c0571f16c03b00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +44864 +76960000000100000000000005636f627261066b6f6e626962026e6c0000260001 +76968000000100000003000305636f627261066b6f6e626962026e6c0000260001c01200020001000151800002c00cc0120002000100015180000906707974686f6ec012c0120002000100015180000e036e733107737572666e6574c019c00c00010001000151800004c0571f16c03b00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +44865 +827c0000000100000000000006707974686f6e066b6f6e626962026e6c00001c0001 +827c8000000100000003000306707974686f6e066b6f6e626962026e6c00001c0001c0130002000100015180000805636f627261c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0571f16c00c00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +44866 +4ff40000000100000000000006707974686f6e066b6f6e626962026e6c0000260001 +4ff48000000100000003000306707974686f6e066b6f6e626962026e6c0000260001c0130002000100015180000805636f627261c013c01300020001000151800002c00cc0130002000100015180000e036e733107737572666e6574c01ac02e00010001000151800004c0571f16c00c00010001000151800004c0571f0bc05000010001000151800004c0576a65 + +44867 +62d3000000010000000000000377777712616e6e656672616e6b737469636874696e67026e6c0000010001 +62d3840300010000000100000377777712616e6e656672616e6b737469636874696e67026e6c0000010001c02300060001000038400036026e730f646f6d61696e2d7265676973747279c0230a686f73746d6173746572c03a0bf1e540000070800000384000278d0000003840 + +44868 +6a3000000001000000000000037777770378626e026e6c0000010001 +6a3080000001000000020000037777770378626e026e6c0000010001c0100002000100015180000f036e73310571696e6970036e657400c01000020001000151800006036e7332c02c + +44869 +1eef00000001000000000000037777770a696e667261736b696c6c026e6c0000010001 +1eef80000001000000020002037777770a696e667261736b696c6c026e6c0000010001c0100002000100015180000a036e733103686978c01bc01000020001000151800006036e7332c033c02f00010001000151800004d5a0da0ac0450001000100015180000451112ec3 + +44870 +1f8a0000000100000000000004777777320c7374657272656e6265757273026e6c0000010001 +1f8a8000000100000002000004777777320c7374657272656e6265757273026e6c0000010001c0110002000100015180001204726f6f7307656e64656d6f6c03636f6d00c01100020001000151800007046e6f7661c037 + +44871 +27340000000100000000000004777777770b626572747665726265656b026e6c0000010001 +27348000000100000003000304777777770b626572747665726265656b026e6c0000010001c0110002000100015180000c036e7331053266617374c01dc01100020001000151800006036e7332c035c01100020001000151800006036e7333c035c0310001000100015180000450f7c022c049000100010001518000043e858122c05b000100010001518000045117eb22 + +44872 +a4b300000001000000000000037777771168617264636f726567616c6c6572696573026e6c0000010001 +a4b380000001000000020000037777771168617264636f726567616c6c6572696573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c039 + +44873 +e0fd00000001000000000000036e733103736369036b756e026e6c0000010001 +e0fd80000001000000030003036e733103736369036b756e026e6c0000010001c0140002000100015180000f08636170796261726103756369c014c01400020001000151800002c00cc0140002000100015180000e036e733107737572666e6574c018c02c0001000100015180000483ae3c15c00c0001000100015180000483aee004c05500010001000151800004c0576a65 + +44874 +e5f60000000100000000000008636170796261726103756369036b756e026e6c0000010001 +e5f68000000100000003000308636170796261726103756369036b756e026e6c0000010001c01900020001000151800002c00cc0190002000100015180000a036e733103736369c019c0190002000100015180000e036e733107737572666e6574c01dc00c0001000100015180000483ae3c15c03f0001000100015180000483aee004c05500010001000151800004c0576a65 + +44875 +0b3900100001000000000001036e733109756e69736f75726365026e6c00000100010000290800000080000000 +0b3980000001000000020001036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c0320000291000000000000000 + +44876 +292c000000010000000000000872616b65746e6574026e6c00000f0001 +292c800000010000000200020872616b65746e6574026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c015c00c0002000100015180001004646e733208636f6e6365707473c015c02900010001000151800004d5c51c03c04600010001000151800004d5c51e1c + +44877 +e04600000001000000000000037777770e6b6f6e696e6b6c696a6b68756973026e6c0000010001 +e04680000001000000020000037777770e6b6f6e696e6b6c696a6b68756973026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c039 + +44878 +7baa000000010000000000000377777709616e696d652d64627a026e6c0000010001 +7baa840300010000000100000377777709616e696d652d64627a026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +44879 +0c1a0000000100000000000004686f6d65066863636e6574026e6c0000010001 +0c1a8000000100000002000004686f6d65066863636e6574026e6c0000010001c011000200010001518000180661757468313003646e7307696e7465726e6c036e657400c0110002000100015180000906617574683230c033 + +44880 +63ff00000001000000000000026e73057972616d73026e6c0000010001 +63ff80000001000000020000026e73057972616d73026e6c0000010001c00f0002000100015180001103646e7307626974626f6f6d036e657400c00f0002000100015180000704646e7332c02d + +44881 +cf4e00000001000000000000046d61696c076d6f62696c6572026e6c0000010001 +cf4e80000001000000020000046d61696c076d6f62696c6572026e6c0000010001c0110002000100015180000f026e7306777367617465036e657400c01100020001000151800006036e7332c030 + +44882 +49da000000010000000000000677656c6c6572066e7434616c6c026e6c0000010001 +49da800000010000000200020677656c6c6572066e7434616c6c026e6c0000010001c01300020001000151800005026e73c013c0130002000100015180000d036e733206787334616c6cc01ac02e00010001000151800004c26d3402c03f00010001000151800004c26d0963 + +44883 +2f5500000001000000000000066962626e6574026e6c0000010001 +2f5580000001000000020000066962626e6574026e6c0000010001c00c0002000100015180000b026e73057972616d73c013c00c0002000100015180000b026e73026e6c036e657400 + +44884 +7e6600000001000000000000026e7306636f62776562026e6c0000010001 +7e6680000001000000020001026e7306636f62776562026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800011026e73087363686970686f6c036e657400c00c0001000100015180000450f26001 + +44885 +f20000000001000000000000036e733306636f62776562026e6c0000010001 +f20080000001000000020001036e733306636f62776562026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800011026e73087363686970686f6c036e657400c02b0001000100015180000450f26001 + +44886 +741000100001000000000001026e7308767575727765726b026e6c00000100010000290800000080000000 +741080000001000000030002026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa02020000291000000000000000 + +44887 +6eed00100001000000000001036e733208767575727765726b026e6c00000100010000290800000080000000 +6eed80000001000000030002036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa02020000291000000000000000 + +44888 +5ad1000000010000000000000a63726173686561676c65026e6c0000060001 +5ad1840300010000000100000a63726173686561676c65026e6c0000060001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +44889 +0b4a00000001000000000000036e733109756e69736f75726365026e6c0000010001 +0b4a80000001000000020000036e733109756e69736f75726365026e6c0000010001c0100002000100015180000d036e7331036b706e036e657400c01000020001000151800006036e7332c032 + +44890 +3ee400000001000000000000037777770f6b616e6a657276616e64657765656b026e6c0000010001 +3ee480000001000000020002037777770f6b616e6a657276616e64657765656b026e6c0000010001c0100002000100015180000b036e7331046e732d31c020c01000020001000151800006036e7332c038c034000100010001518000045045a0cdc04b00010001000151800004d4cceec8 + +44891 +91b2000000010000000000000377777707746f7067616d65026e6c0000010001 +91b2800000010000000200000377777707746f7067616d65026e6c0000010001c0100002000100015180000f02763109706365787472656d65c018c01000020001000151800005027632c02f + +44892 +528900000001000000000000026e7308767575727765726b026e6c0000010001 +528980000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +44893 +fb1200000001000000000000036e733208767575727765726b026e6c0000010001 +fb1280000001000000030001036e733208767575727765726b026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800012036e733208767575727765726b036e657400c01000020001000151800006036e7333c042c02d000100010001518000043efa0202 + +44894 +d6290000000100000000000003777777116c656575776172646572636f7572616e74026e6c0000010001 +d6298000000100000003000303777777116c656575776172646572636f7572616e74026e6c0000010001c01000020001000151800011036e73310a6e6463686f6c64696e67c022c01000020001000151800006036e7332c03ac01000020001000151800006036e7333c03ac03600010001000151800004c1ad573dc05300010001000151800004c1ad573ec06500010001000151800004d5880089 + +44895 +e92700000001000000000000037777770b616466697265776f726b73026e6c0000010001 +e92780000001000000020002037777770b616466697265776f726b73026e6c0000010001c0100002000100015180000c026e7306787334616c6cc01cc01000020001000151800006036e7332c033c03000010001000151800004c26d0642c04800010001000151800004c26d0963 + +44896 +18f40000000100000000000003777777046c657861026e6c0000010001 +18f48000000100000003000203777777046c657861026e6c0000010001c0100002000100015180000d036e733106776964657873c015c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c02dc02900010001000151800004d4ccc0fcc05e000100010001518000043efa0703 + +44897 +18f900000001000000000000037777770a6977616e6e6164617465026e6c0000010001 +18f980000001000000020000037777770a6977616e6e6164617465026e6c0000010001c01000020001000151800011036e73330a6f70656e2d646f6f7273c01bc01000020001000151800006036e7334c033 + +44898 +27ba000000010000000000000a7665726d65696a776562026e6c00000f0001 +27ba800000010000000200020a7665726d65696a776562026e6c00000f0001c00c0002000100015180000a026e730469636d63c017c00c00020001000151800006036e7332c02ec02b000100010001518000043e643805c041000100010001518000043e643806 + +44899 +36a300000001000000000000026e7308767575727765726b026e6c0000010001 +36a380000001000000030001026e7308767575727765726b026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800012036e733208767575727765726b036e657400c00f00020001000151800006036e7333c03ec00c000100010001518000043efa0202 + +44900 +a73900000001000000000000037777771168617264636f726567616c6c6572696573026e6c0000010001 +a73980000001000000020000037777771168617264636f726567616c6c6572696573026e6c0000010001c01000020001000151800012026e73096e6c686f7374696e67036e657400c01000020001000151800006036e7331c039 + +44901 +40f8000000010000000000000377777703707474026e6c0000010001 +40f8800000010000000200000377777703707474026e6c0000010001c0100002000100015180000d03646e73036b706e03636f6d00c0100002000100015180000d036e7332036b706e036e657400 + +44902 +bba60000000100000000000003646173026e6c00000f0001 +bba68000000100000003000303646173026e6c00000f0001c00c00020001000151800010036e7331096d61726b6772616166c010c00c00020001000151800006036e7332c028c00c00020001000151800006036e7333c028c02400010001000151800004c3f13ceec04000010001000151800004c372eb43c052000100010001518000043e320e8f + +44903 +160a000000010000000000000a736f6e6572616d61696c026e6c0000ff0001 +160a800000010000000200000a736f6e6572616d61696c026e6c0000ff0001c00c00020001000151800011036e73310774647364617461036e657400c00c00020001000151800006036e7332c02f + +44904 +10de00100001000000000000046a616d6f026e6c00000f0001 +10de80000001000000020000046a616d6f026e6c00000f0001c00c0002000100015180000c036e7331036e6c6902646b00c00c00020001000151800006036e7332c029 + +44905 +39d300000001000000000000047365633203646e73067073696e6574026e6c0000010001 +39d380000001000000030003047365633203646e73067073696e6574026e6c0000010001c015000200010001518000070470726931c011c015000200010001518000070470726932c011c015000200010001518000070470726933c011c030000100010001518000049a0ff9a6c043000100010001518000049a0ff9aac056000100010001518000049a0ff9ae + +44906 +2e70000000010000000000000a647272696a6e6d6f6e64026e6c00000f0001 +2e70800000010000000200020a647272696a6e6d6f6e64026e6c00000f0001c00c0002000100015180000f036e733108696e7465726d6178c017c00c00020001000151800006036e7332c02fc02b00010001000151800004505fa002c04600010001000151800004505fac02 + +44907 +382a00100001000000000001056c69776562046e696f7a026e6c00000100010000290800000000000000 +382a80000001000000030003056c69776562046e696f7a026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800002c00cc01200020001000151800014036e73300a6d756c74696b6162656c036e657400c02b000100010001518000049101d228c00c000100010001518000049101d21e0000291000000000000000 + +44908 +e5fc00000001000000000000036e7335046372696f026e6c0000010001 +e5fc80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44909 +360c000000010000000000000377777703776562026e6c0000010001 +360c800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44910 +e13d00000001000000000000036e7335046372696f026e6c0000010001 +e13d80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44911 +78b60000000100000000000005622d6f6e65026e6c0000010001 +78b68000000100000002000205622d6f6e65026e6c0000010001c00c00020001000151800009036e7331026973c012c00c00020001000151800006036e7332c02ac02600010001000151800004d5852102c03b00010001000151800004d5c41503 + +44912 +34c60000000100000000000008616473657276657206776562616473026e6c0000010001 +34c68000000100000002000208616473657276657206776562616473026e6c0000010001c01500020001000151800012036e73310b7669616e6574776f726b73c01cc01500020001000151800006036e7332c034c03000010001000151800004d43d0f08c04e00010001000151800004d43d19e2 + +44913 +ca6d000000010000000000000761646469736f6e026e6c00000f0001 +ca6d800000010000000200000761646469736f6e026e6c00000f0001c00c00020001000151800010036e73310673697465347503636f6d00c00c00020001000151800006036e7332c02c + +44914 +b1b200000001000000000000036e7332046372696f026e6c0000010001 +b1b280000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44915 +da2200000001000000000000037777770a72656372656174696566026e6c0000010001 +da2280000001000000020000037777770a72656372656174696566026e6c0000010001c0100002000100015180000b036e7331046372696fc01bc01000020001000151800006036e7332c033 + +44916 +508500000001000000000000036e7332046372696f026e6c0000010001 +508580000001000000020000036e7332046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44917 +d3c3000000010000000000000567677a6261026e6c00001c0001 +d3c3800000010000000200020567677a6261026e6c00001c0001c00c0002000100015180000f036e73330874656c6562797465c012c00c00020001000151800006036e7334c02ac02600010001000151800004d5d38115c04100010001000151800004d5d38116 + +44918 +38b000000001000000000000086d6f64657374616c026e6c00000f0001 +38b080000001000000030000086d6f64657374616c026e6c00000f0001c00c0002000100015180000f036e73310570616e7361036e657400c00c00020001000151800006036e7332c02dc00c00020001000151800006036e7333c02d + +44919 +7ffa0000000100000000000003706f70136164766965736275726f76616e64657277616c026e6c0000010001 +7ffa8000000100000003000003706f70136164766965736275726f76616e64657277616c026e6c0000010001c01000020001000151800017076e73686f73743103737432056c79636575036e657400c0100002000100015180000a076e73686f737432c040c0100002000100015180000a076e73686f737433c040 + +44920 +08ff000000010000000000000644454d41414e024e4c0000010001 +08ff800000010000000200020644454d41414e024e4c0000010001c00c0002000100015180000c026e73067574722d6978c013c00c00020001000151800006036e7332c02ac0270001000100015180000451113206c03f00010001000151800004d5c42806 + +44921 +00b00000000100000000000003777777127a756964776573742d6e656465726c616e64026e6c0000010001 +00b08000000100000002000003777777127a756964776573742d6e656465726c616e64026e6c0000010001c01000020001000151800017036e73310d6e616d65636f6d6d616e64657203636f6d00c01000020001000151800006036e7332c03b + +44922 +08ae00000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +08ae80000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +44923 +20b800000001000000000000037777770e6b756e737467656f677261666965026e6c0000010001 +20b880000001000000020000037777770e6b756e737467656f677261666965026e6c0000010001c0100002000100015180001b026e7312796f75726e616d65776562686f7374696e6703636f6d00c01000020001000151800015026e730f796f75726e616d65686f7374696e67c049 + +44924 +287400000001000000000000036e7335046372696f026e6c0000010001 +287480000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44925 +151f000000010000000000000377777703776562026e6c0000010001 +151f800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44926 +5bc000000001000000000000036e7335046372696f026e6c0000010001 +5bc080000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44927 +dfd100000001000000000000036e7332076e65746578706f026e6c0000010001 +dfd180000001000000020002036e7332076e65746578706f026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043efa0ac2c00c000100010001518000043efa0a82 + +44928 +a47800000001000000000000026e73076e65746578706f026e6c0000010001 +a47880000001000000020002026e73076e65746578706f026e6c0000010001c00f00020001000151800002c00cc00f00020001000151800006036e7332c00fc00c000100010001518000043efa0ac2c039000100010001518000043efa0a82 + +44929 +101f00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +101f80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44930 +ed8800000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +ed8880000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44931 +c72e00000001000000000000037777770c73706f7274706c616e6e6572026e6c0000010001 +c72e80000001000000020002037777770c73706f7274706c616e6e6572026e6c0000010001c0100002000100015180000b036e73310477656233c01dc01000020001000151800006036e7332c035c03100010001000151800004d436240ec04800010001000151800004c2b262ef + +44932 +c21c00000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +c21c80000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44933 +746b000000010000000000000e63656e747261616c626568656572026e6c0000010001 +746b800000010000000300030e63656e747261616c626568656572026e6c0000010001c00c00020001000151800012047072693103646e73067073696e6574c01bc00c000200010001518000070470726932c034c00c000200010001518000070470726933c034c02f000100010001518000049a0ff9a6c04d000100010001518000049a0ff9aac060000100010001518000049a0ff9ae + +44934 +610400000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +610480000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44935 +6e330000000100000000000003777777067a7376737571026e6c0000010001 +6e338403000100000001000003777777067a7376737571026e6c0000010001c01700060001000038400036026e730f646f6d61696e2d7265676973747279c0170a686f73746d6173746572c02e0bf1e540000070800000384000278d0000003840 + +44936 +e785000000010000000000000a6e6574776f726b657273026e6c00000f0001 +e785800000010000000200000a6e6574776f726b657273026e6c00000f0001c00c0002000100015180000b026e73026e6c036e657400c00c0002000100015180001206617574683630026e73026e6c027575c031 + +44937 +00e200000001000000000000096772616669656b6173026e6c00000f0001 +00e280000001000000020001096772616669656b6173026e6c00000f0001c00c00020001000151800005026e73c00cc00c0002000100015180000d036e7332036b706e036e657400c02a00010001000151800004c1ac0103 + +44938 +b36200000001000000000000037777770b6772656d696f2d756e696f026e6c0000010001 +b36280000001000000020000037777770b6772656d696f2d756e696f026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +44939 +cde50000000100000000000008706172746e657273076d6f62656c6c65026e6c0000010001 +cde58000000100000002000008706172746e657273076d6f62656c6c65026e6c0000010001c01500020001000151800010036e7331096d6f62696c6c696f6ec01dc01500020001000151800006036e7332c035 + +44940 +c2bf00000001000000000000046265726b026e6c0000ff0001 +c2bf80000001000000020000046265726b026e6c0000ff0001c00c0002000100015180001e0673696e67656c09616d7374657264616d0764617461776562036e657400c00c0002000100015180000805726f6b696ec02c + +44941 +1f880000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +1f888000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +44942 +0c89000000010000000000000850434f4f535431310a4f6f737465696e646572026e6c0000060001 +0c89840300010000000100000850434f4f535431310a4f6f737465696e646572026e6c0000060001c02000060001000038400036026e730f646f6d61696e2d7265676973747279c0200a686f73746d6173746572c0370bf1e540000070800000384000278d0000003840 + +44943 +da470000000100000000000003777777176175746f6d6174657269616c656e7265696a6e64657273026e6c0000010001 +da478000000100000002000203777777176175746f6d6174657269616c656e7265696a6e64657273026e6c0000010001c0100002000100015180000a036e733103686978c028c01000020001000151800006036e7332c040c03c00010001000151800004d5a0da0ac0520001000100015180000451112ec3 + +44944 +0e8f000000010000000000000673657863616d06706167696e61026e6c0000010001 +0e8f800000010000000300030673657863616d06706167696e61026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02e000100010001518000043e45a282c040000100010001518000043e45a283c052000100010001518000043e45a284 + +44945 +9a5b28000001000200000000026e6c00000600010969772d30303137323206746b74657374026e6c00000500fe000000000000c01400010001000000000004c0a800ce +9a5ba8040000000000000000 + +44946 +5e2300000001000000000000036e733503777873026e6c0000010001 +5e2380000001000000030003036e733503777873026e6c0000010001c01000020001000151800007046e733038c010c01000020001000151800007046e733039c010c01000020001000151800006036e7334c010c02800010001000151800004c3790128c03b00010001000151800004c3790143c04e00010001000151800004d5ef9a65 + +44947 +2e4500000001000000000000056c69776562046e696f7a026e6c0000010001 +2e4580000001000000030002056c69776562046e696f7a026e6c0000010001c01200020001000151800006036e7331c012c01200020001000151800002c00cc01200020001000151800014036e73300a6d756c74696b6162656c036e657400c02b000100010001518000049101d228c00c000100010001518000049101d21e + +44948 +000000007002faf0b79b0000020405b401010402 +000080010000000000000000 + +44949 +000328000001000200000000026e6c00000600010850434f4f535431310a4f6f737465696e646572026e6c00000500fe000000000000c014000100010000000000045073bc50 +0003a8040000000000000000 + +44950 +93bd0000000100000000000005736d7470310874656c6562797465026e6c0000010001 +93bd8000000100000002000205736d7470310874656c6562797465026e6c0000010001c01200020001000151800006036e7333c012c01200020001000151800006036e7334c012c02f00010001000151800004d5d38115c04100010001000151800004d5d38116 + +44951 +14130000000100000000000003777777077374616f6b6179026e6c0000010001 +14138403000100000001000003777777077374616f6b6179026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +44952 +b8a596575010faf095520000000000000000 + + +44953 +f7d4000000010000000000000d6175746f74656c656772616166026e6c0000010001 +f7d4800000010000000200000d6175746f74656c656772616166026e6c0000010001c00c00020001000151800013036e73300974656c656772616166036e657400c00c00020001000151800006036e7331c032 + +44954 +b8a596575018faf088240000008e42e5000000010001000000000f313038323333313735383631302d330000f900010f313038323333313735383631302d330000f900ff00000000005203677373096d6963726f736f667403636f6d00403af53e403c46be00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 + + +44955 +5d2100000001000000000000037777770962697a617273697465026e6c0000010001 +5d2180000001000000030003037777770962697a617273697465026e6c0000010001c0100002000100015180000c036e7331056d61786573c01ac01000020001000151800006036e7332c032c01000020001000151800006036e7333c032c02e000100010001518000045045402ec046000100010001518000045045402fc058000100010001518000045045440a + +44956 +961600000001000000000000037777770770657567656f74026e6c0000010001 +961680000001000000020002037777770770657567656f74026e6c0000010001c0100002000100015180000e036e73310768756d616e2d69c018c01000020001000151800006036e7332c030c02c00010001000151800004c1ad2884c04600010001000151800004c1ad2886 + +44957 +773500000001000000000000037777770b336c636f6d707574657273026e6c0000010001 +773580000001000000020000037777770b336c636f6d707574657273026e6c0000010001c0100002000100015180000e05646e732d31056c61646f74c01cc0100002000100015180000805646e732d32c036 + +44958 +b8a596655011fae294c10000000000000000 + + +44959 +000000007002faf07bfa00000204056401010402 +000080010000000000000000 + +44960 +000000007002faf0ae140000020405b401010402 +000080010000000000000000 + +44961 +157400000001000000000000146e69657577736272696576656e73657276696365026e6c0000010001 +157480000001000000030001146e69657577736272696576656e73657276696365026e6c0000010001c00c0002000100015180000e026e7308767575727765726bc021c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c053c035000100010001518000043efa0202 + +44962 +eef4000000010000000000000e666f72626f2d6c696e6f6c65756d026e6c00000f0001 +eef4800000010000000200010e666f72626f2d6c696e6f6c65756d026e6c00000f0001c00c0002000100015180000d026e73046575726f036e657400c00c0002000100015180000d026e73076575726f6e6574c01bc04800010001000151800004c2860043 + +44963 +b8a596665010fae294c00000000000000000 + + +44964 +b8a674795010fd5c78d20000000000000000 +b8a6f4740000000000000000 + +44965 +b8a70de15010faf014400000000000000000 +b8a78de40000000000000000 + +44966 +b62b00000001000000000000036e73320768756d616e2d69026e6c00001c0001 +b62b80000001000000020002036e73320768756d616e2d69026e6c00001c0001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c1ad2884c00c00010001000151800004c1ad2886 + +44967 +0ee500000001000000000000036e73320768756d616e2d69026e6c0000260001 +0ee580000001000000020002036e73320768756d616e2d69026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c00010001000151800004c1ad2884c00c00010001000151800004c1ad2886 + +44968 +6d2e00000001000000000000036e73310768756d616e2d69026e6c00001c0001 +6d2e80000001000000020002036e73310768756d616e2d69026e6c00001c0001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c1ad2884c03a00010001000151800004c1ad2886 + +44969 +1a4c00000001000000000000036e73310768756d616e2d69026e6c0000260001 +1a4c80000001000000020002036e73310768756d616e2d69026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c1ad2884c03a00010001000151800004c1ad2886 + +44970 +cf7700000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +cf7780000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44971 +b8a70de15018faf0b7340000008e93c3000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af53e403c46be00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 +b8a78de40000000000000000 + +44972 +202000000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +202080000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44973 +3d250000000100000000000004646e7331057368656c6c026e6c0000010001 +3d258000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +44974 +80d5000000010000000000000377777707626f6f6b6d616e026e6c0000010001 +80d5800000010000000300020377777707626f6f6b6d616e026e6c0000010001c0100002000100015180000d036e733106776964657873c018c01000020001000151800010036e733206776964657873036e657400c01000020001000151800006036e7333c030c02c00010001000151800004d4ccc0fcc061000100010001518000043efa0703 + +44975 +393900000001000000000000036e733203736369036b756e026e6c0000010001 +393980000001000000030003036e733203736369036b756e026e6c0000010001c0140002000100015180000f08636170796261726103756369c014c01400020001000151800006036e7331c010c0140002000100015180000e036e733107737572666e6574c018c02c0001000100015180000483ae3c15c0470001000100015180000483aee004c05900010001000151800004c0576a65 + +44976 +cf490000000100000000000007616e737765727303736369036b756e026e6c0000010001 +cf498000000100000003000307616e737765727303736369036b756e026e6c0000010001c0180002000100015180000f08636170796261726103756369c018c01800020001000151800006036e7331c014c0180002000100015180000e036e733107737572666e6574c01cc0300001000100015180000483ae3c15c04b0001000100015180000483aee004c05d00010001000151800004c0576a65 + +44977 +b8a674795018fd5c78830000008f059c000000010001000000000e3931303533333036363737302d330000f900010e3931303533333036363737302d330000f900ff00000000005503677373096d6963726f736f667403636f6d00403af386403c45060003000000324e544c4d535350000100000097b208e00a000a0028000000080008002000000050434f4f535431314f4f535445494e4445520000 +b8a6f4740000000000000000 + +44978 +ecdb0000000100000000000008636f6d636f726465026e6c00000f0001 +ecdb8000000100000003000108636f6d636f726465026e6c00000f0001c00c0002000100015180000e026e7308767575727765726bc015c00c00020001000151800012036e733208767575727765726b036e657400c00c00020001000151800006036e7333c047c029000100010001518000043efa0202 + +44979 +b8a70def5011fae213af0000000000000000 +b8a78de40000000000000000 + +44980 +f95e00000001000000000000036e7335046372696f026e6c0000010001 +f95e80000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44981 +3611000000010000000000000377777703776562026e6c0000010001 +3611800000010000000200000377777703776562026e6c0000010001c0100002000100015180000b036e7335046372696fc014c01000020001000151800006036e7336c02c + +44982 +bcb900000001000000000000036e7335046372696f026e6c0000010001 +bcb980000001000000020000036e7335046372696f026e6c0000010001c0100002000100015180000d056372696f31047372767ac015c01000020001000151800008056372696f32c02f + +44983 +000000007002faf0e3ce0000020405b401010402 +000080010000000000000000 + +44984 +b8a674875011fd4e78400000000000000000 +b8a6f4840000000000000000 + +44985 +ec2500000001000000000000036e73310c616374697665646f6d61696e026e6c0000010001 +ec2580000001000000030000036e73310c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44986 +f07600000001000000000000036e73320c616374697665646f6d61696e026e6c0000010001 +f07680000001000000030000036e73320c616374697665646f6d61696e026e6c0000010001c01000020001000151800019036e73310f616374697665646f6d61696e646e73036e657400c01000020001000151800006036e7332c035c01000020001000151800006036e7333c035 + +44987 +000000007002faf0fefc00000204056401010402 +000080010000000000000000 + +44988 +6e010000000100000000000003777777096b696e6465726e6574026e6c0000010001 +6e018000000100000003000003777777096b696e6465726e6574026e6c0000010001c01000020001000151800019096d7476692d646e7331096d74766575726f706503636f6d00c01000020001000151800012047365633103646e73067073696e6574c01ac010000200010001518000070473656332c058 + +44989 +d85900000001000000000000036e7331096d6f62696c6c696f6e026e6c0000010001 +d85980000001000000030003036e7331096d6f62696c6c696f6e026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +44990 +2cf300000001000000000000036e7332096d6f62696c6c696f6e026e6c0000010001 +2cf380000001000000030003036e7332096d6f62696c6c696f6e026e6c0000010001c0100002000100015180000e076e73617574683103626974c01ac0100002000100015180000a076e736175746832c036c0100002000100015180000a076e736175746833c036c02e00010001000151800004d5880c33c04800010001000151800004d5880c3bc05e00010001000151800004d4ccc00b + +44991 +b8a70df05010fae213ae0000000000000000 +b8a78df40000000000000000 + +44992 +58e00000000100000000000105666c6e6574026e6c00000f00010000291000000000000000 +58e08000000100000002000305666c6e6574026e6c00000f0001c00c0002000100015180001103646e730a636f6e63657074736661c012c00c0002000100015180001004646e733208636f6e6365707473c012c02600010001000151800004d5c51c03c04300010001000151800004d5c51e1c0000291000000000000000 + +44993 +b8a674885010fd4e783f0000000000000000 +b8a6f4840000000000000000 + +44994 +b8a7ad145010faf0aac60000000000000000 + + +44995 +b8a87d065010fd5cf3450000000000000000 +b8a8fd040000000000000000 + +44996 +b8a7ad145018faf0518f0000008e8fef000000010001000000000f313038323333313735383631302d320000f900010f313038323333313735383631302d320000f900ff00000000005203677373096d6963726f736f667403636f6d00403af53e403c46be00030000002f4e544c4d535350000100000097b208e00600060029000000090009002000000049572d303031373232544b544553540000 + + +44997 +b8a87d065018fd5cc9920000008f3100000000010001000000000e3931303533333036363737302d320000f900010e3931303533333036363737302d320000f900ff00000000005503677373096d6963726f736f667403636f6d00403af386403c45060003000000324e544c4d535350000100000097b208e00a000a0028000000080008002000000050434f4f535431314f4f535445494e4445520000 +b8a8fd040000000000000000 + +44998 +822f000000010000000000000b64656a6f6e67696e747261026e6c00000f0001 +822f800000010000000200020b64656a6f6e67696e747261026e6c00000f0001c00c0002000100015180000e036e733107626265796f6e64c018c00c00020001000151800006036e7332c030c02c000100010001518000043eb1900bc046000100010001518000043eb19002 + +44999 +b8a7ad225011fae2aa350000000000000000 + + +45000 +c6790000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +c6798000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + diff --git a/external/unbound/testdata/test_packets.2 b/external/unbound/testdata/test_packets.2 new file mode 100644 index 0000000..ac9917f --- /dev/null +++ b/external/unbound/testdata/test_packets.2 @@ -0,0 +1,50 @@ +b29092340000000000000000 + +289 +98d50000000100000000000003626c3402626c06787334616c6c026e6c0000010001 +98d58000000100000003000203626c3402626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +290 +b28f6a4e5011431228310000000000000000 +b28fea440000000000000000 + +291 +de6028000001000000010000026e6c0000060001055f6c646170045f746370026463065f6d736463730b6f7372646f6d65696e2d31026e6c00002100010000025800230000006401850c504f574552454447452d53420b6f7372646f6d65696e2d31026e6c00 +de60a8040000000000000000 + +292 +b353000000010000000000000450434b4e087963646f6d65696e026e6c0000010001 +b353840300010000000100000450434b4e087963646f6d65696e026e6c0000010001c01a00060001000038400036026e730f646f6d61696e2d7265676973747279c01a0a686f73746d6173746572c0310bf1e540000070800000384000278d0000003840 + +293 +b2901243501140a2340b0000000000000000 +b29092440000000000000000 + +294 +b28f6a4f5010431228300000000000000000 +b28fea440000000000000000 + +295 +e0f600000001000000000000066b6d742d6570026e6c0000020001 +e0f680000001000000020002066b6d742d6570026e6c0000020001c00c0002000100015180000c036e73310564656d6f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c29f4906c03f00010001000151800004c29fb004 + +296 +0000000070024000a52500000204056401010402 +000080010000000000000000 + +297 +000000007002400088e600000204059801010402 +000080010000000000000000 + +298 +00000000700240001f5900000204059801010402 +000080010000000000000000 + +299 +b2901244501040a2340a0000000000000000 +b29092440000000000000000 + +300 +b293149b50104320eb2f0000000000000000 +b29394940000000000000000 + diff --git a/external/unbound/testdata/test_packets.3 b/external/unbound/testdata/test_packets.3 new file mode 100644 index 0000000..bcdb544 --- /dev/null +++ b/external/unbound/testdata/test_packets.3 @@ -0,0 +1,496 @@ +1576 +1ca000000001000000000000036e73310762617365776562026e6c0000010001 +1ca080000001000000020002036e73310762617365776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004d535d035c03a00010001000151800004d535d034 + +1577 +221c0000000100000000000009652d6c756e61746963026e6c0000010001 +221c8000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +1578 +b9ab000000010000000000000962626469676974616c026e6c0000010001 +b9ab800000010000000200000962626469676974616c026e6c0000010001c00c0002000100015180001105646e732d33056c61646f7403636f6d00c00c0002000100015180000805646e732d34c030 + +1579 +b2c21baf5011fae2e9c00000000000000000 +b2c29ba40000000000000000 + +1580 +e1be0000000100000000000008686f75736561647303696467026e6c0000010001 +e1be8000000100000003000308686f75736561647303696467026e6c0000010001c01500020001000151800006036e7331c015c01500020001000151800006036e7332c015c01500020001000151800006036e7333c015c02d0001000100015180000451af4646c03f0001000100015180000451af4647c05100010001000151800004d5a0fde6 + +1581 +000000007002faf00a970000020405b401010402 +000080010000000000000000 + +1582 +02ac00000001000000000000036e73310563736e6574026e6c0000010001 +02ac80000001000000020002036e73310563736e6574026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c00010001000151800004c2451012c03800010001000151800004c2451212 + +1583 +153e00000001000000000000095f6b65726265726f73045f746370026463065f6d736463730644494b534954024e4c0000210001 +153e84030001000000010000095f6b65726265726f73045f746370026463065f6d736463730644494b534954024e4c0000210001c02c00060001000038400036026e730f646f6d61696e2d7265676973747279c02c0a686f73746d6173746572c0430bf1e540000070800000384000278d0000003840 + +1584 +b2c21bb05010fae2e9bf0000000000000000 +b2c29bb40000000000000000 + +1585 +b2c2d04f5010faf0b4380000000000000000 + + +1586 +b2c2d04f5018faf0747c0000008f552d000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 + + +1587 +bf28000000010000000000000962696a656e6b6f7266026e6c0000010001 +bf28800000010000000300030962696a656e6b6f7266026e6c0000010001c00c00020001000151800010036e7331096d61726b6772616166c016c00c00020001000151800006036e7332c02ec00c00020001000151800006036e7333c02ec02a00010001000151800004c3f13ceec04600010001000151800004c372eb43c058000100010001518000043e320e8f + +1588 +f95900000001000000000000037777770766636f72696f6e026e6c0000010001 +f95984030001000000010000037777770766636f72696f6e026e6c0000010001c01800060001000038400036026e730f646f6d61696e2d7265676973747279c0180a686f73746d6173746572c02f0bf1e540000070800000384000278d0000003840 + +1589 +b2c2d05d5011fae2b3a60000000000000000 + + +1590 +000000007002faf0d9770000020405b401010402 +000080010000000000000000 + +1591 +b2c2d05e5010fae2b3a50000000000000000 + + +1592 +a18b00000001000000000000036e733107626265796f6e64026e6c0000010001 +a18b80000001000000020002036e733107626265796f6e64026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +1593 +b2c379ae5010faf0d9b90000000000000000 +b2c3f9a40000000000000000 + +1594 +410400000001000000000000036e733107626265796f6e64026e6c0000260001 +410480000001000000020002036e733107626265796f6e64026e6c0000260001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c000100010001518000043eb1900bc03a000100010001518000043eb19002 + +1595 +852300000001000000000000037777770f64616d696174652d636f6c6c656765026e6c0000010001 +852380000001000000020002037777770f64616d696174652d636f6c6c656765026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c020c01000020001000151800006036e7332c038c03400010001000151800004d4b20403c04d00010001000151800004d5881e45 + +1596 +208200000001000000000000036e733207626265796f6e64026e6c0000010001 +208280000001000000020002036e733207626265796f6e64026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +1597 +883a00000001000000000000036e733207626265796f6e64026e6c0000260001 +883a80000001000000020002036e733207626265796f6e64026e6c0000260001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02c000100010001518000043eb1900bc00c000100010001518000043eb19002 + +1598 +b2c379ae5018faf0d58e0000008f199c000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 +b2c3f9a40000000000000000 + +1599 +2a640000000100000000000009652d6c756e61746963026e6c0000010001 +2a648000000100000002000009652d6c756e61746963026e6c0000010001c00c0002000100015180000e036e73330767617574656e67c016c00c00020001000151800006036e7334c02e + +1600 +99a400000001000000000000037777770e7765736c6579736e65696a646572026e6c0000010001 +99a480000001000000020000037777770e7765736c6579736e65696a646572026e6c0000010001c01000020001000151800014046e733031096772616669782d697303636f6d00c01000020001000151800007046e733033c038 + +1601 +7ab500000001000000000000096d61696c686f7374320b66726565686f7374696e67026e6c0000010001 +7ab580000001000000020000096d61696c686f7374320b66726565686f7374696e67026e6c0000010001c0160002000100015180001105646e732d33056c61646f7403636f6d00c0160002000100015180000805646e732d34c03c + +1602 +c3e800000001000000000000037777770f64616d696174652d636f6c6c656765026e6c0000010001 +c3e880000001000000020002037777770f64616d696174652d636f6c6c656765026e6c0000010001c0100002000100015180000d036e7331066e6c74726565c020c01000020001000151800006036e7332c038c03400010001000151800004d4b20403c04d00010001000151800004d5881e45 + +1603 +95af00100001000000000001046d61696c03777873026e6c00000100010000290800000080000000 +95af80000001000000030004046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a650000291000000000000000 + +1604 +b2c379bc5011fae2d9270000000000000000 +b2c3f9b40000000000000000 + +1605 +61be00000001000000000000037777771a676f6c666261616e68657472696a6b76616e6e696a6d6567656e026e6c0000010001 +61be80000001000000020000037777771a676f6c666261616e68657472696a6b76616e6e696a6d6567656e026e6c0000010001c0100002000100015180000b026e73026e6c036e657400c0100002000100015180001206617574683630026e73026e6c027575c045 + +1606 +f99c00000001000000000000095f6b65726265726f73045f746370026463065f6d736463730b746563686e6f70616e656c026e6c0000060001 +f99c84030001000000010000095f6b65726265726f73045f746370026463065f6d736463730b746563686e6f70616e656c026e6c0000060001c03100060001000038400036026e730f646f6d61696e2d7265676973747279c0310a686f73746d6173746572c0480bf1e540000070800000384000278d0000003840 + +1607 +d8bd00000001000000000000037777770c636170636974796368657679026e6c0000010001 +d8bd84030001000000010000037777770c636170636974796368657679026e6c0000010001c01d00060001000038400036026e730f646f6d61696e2d7265676973747279c01d0a686f73746d6173746572c0340bf1e540000070800000384000278d0000003840 + +1608 +f05f00000001000000000000087261626f62616e6b026e6c0000010001 +f05f80000001000000020001087261626f62616e6b026e6c0000010001c00c00020001000151800005026e73c00cc00c0002000100015180000b026e73026e6c036e657400c0290001000100015180000491484fde + +1609 +b2c379bd5010fae2d9260000000000000000 +b2c3f9b40000000000000000 + +1610 +175928000001000000010000026e6c0000060001095f6b65726265726f73045f746370026463065f6d736463730b746563686e6f70616e656c026e6c000021000100000258001c000000640058056e746673310b746563686e6f70616e656c026e6c00 +1759a8040000000000000000 + +1611 +4d9a0000000100000000000005646e732d31056c61646f74026e6c0000010001 +4d9a8000000100000002000005646e732d31056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +1612 +adb60000000100000000000005646e732d32056c61646f74026e6c0000010001 +adb68000000100000002000005646e732d32056c61646f74026e6c0000010001c0120002000100015180001105646e732d33056c61646f7403636f6d00c0120002000100015180000805646e732d34c032 + +1613 +b22d00000001000000000000037777771777696a6b766572656e6967696e672d68616e65766f6574026e6c0000010001 +b22d84030001000000010000037777771777696a6b766572656e6967696e672d68616e65766f6574026e6c0000010001c02800060001000038400036026e730f646f6d61696e2d7265676973747279c0280a686f73746d6173746572c03f0bf1e540000070800000384000278d0000003840 + +1614 +ba9a00000001000000000000037777771076616b616e746965776f6e696e67656e0f76616b616e7469652d61616e626f64026e6c0000010001 +ba9a80000001000000020000037777771076616b616e746965776f6e696e67656e0f76616b616e7469652d61616e626f64026e6c0000010001c02100020001000151800011036e733005736572766502636f02756b00c02100020001000151800010036e7330057365727665036e6574c052 + +1615 +000000007002faf0ec1e0000020405b401010402 +000080010000000000000000 + +1616 +8f9e00000001000000000000097463676e777331313608686e65746f6e7477026e6c0000010001 +8f9e84030001000000010000097463676e777331313608686e65746f6e7477026e6c0000010001c01f00060001000038400036026e730f646f6d61696e2d7265676973747279c01f0a686f73746d6173746572c0360bf1e540000070800000384000278d0000003840 + +1617 +230b0000000100000000000004646e73310471776562026e6c0000260001 +230b8000000100000002000204646e73310471776562026e6c0000260001c01100020001000151800002c00cc0110002000100015180000704646e7332c011c00c00010001000151800004d994ac0cc03800010001000151800004d5c42f6c + +1618 +f8200000000100000000000004646e73320471776562026e6c0000260001 +f8208000000100000002000204646e73320471776562026e6c0000260001c0110002000100015180000704646e7331c011c01100020001000151800002c00cc02a00010001000151800004d994ac0cc00c00010001000151800004d5c42f6c + +1619 +825800000001000000000000046d61696c0761627374726163026e6c0000010001 +825880000001000000020002046d61696c0761627374726163026e6c0000010001c01100020001000151800013036e73310c706f77657273657276657233c019c01100020001000151800006036e7332c031c02d000100010001518000045104741ec04c000100010001518000045104741f + +1620 +f8f000000001000000000000037777770d6165726f736f6c64657369676e026e6c0000010001 +f8f080000001000000020002037777770d6165726f736f6c64657369676e026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800006036e7332c010c0320001000100015180000451044432c0440001000100015180000451044433 + +1621 +cd46000000010000000000000c626c65696a656e6265726768026e6c0000ff0001 +cd46800000010000000200020c626c65696a656e6265726768026e6c0000ff0001c00c00020001000151800010036e7331096e657467726f756e64c019c00c00020001000151800006036e7332c031c02d000100010001518000045054e415c0490001000100015180000451046014 + +1622 +b2c4383f5010faf02dcf0000000000000000 +b2c4b8340000000000000000 + +1623 +5e1200000001000000000000037777770864616e69656c6c61026e6c0000010001 +5e1280000001000000020002037777770864616e69656c6c61026e6c0000010001c01000020001000151800012026e730c6d65676170726f7669646572c019c01000020001000151800006036e7332c030c02d0001000100015180000450474002c04b0001000100015180000450474102 + +1624 +b2c4383f5018faf0d3750000008f6ec9000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 +b2c4b8340000000000000000 + +1625 +e81f000000010000000000000d7469636b6574736576656e7473026e6c00000f0001 +e81f800000010000000200020d7469636b6574736576656e7473026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc01ac00c00020001000151800006036e7332c031c02e00010001000151800004c26d0642c04600010001000151800004c26d0963 + +1626 +6bf800100001000000000001034e53320743495354524f4e024e4c00000100010000290800000080000000 +6bf880000001000000020003034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f380000291000000000000000 + +1627 +b2c4384d5011fae22d3d0000000000000000 +b2c4b8440000000000000000 + +1628 +000000007002faf042610000020405b401010402 +000080010000000000000000 + +1629 +39f400000001000000000000036e73320a6461632d706c616e6574026e6c0000010001 +39f480000001000000030003036e73320a6461632d706c616e6574026e6c0000010001c0100002000100015180000c036e7331056264726567c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f00010001000151800004d44ff4dac04700010001000151800004d44ff642c05900010001000151800004c3f5c70a + +1630 +b2c4384e5010fae22d3c0000000000000000 +b2c4b8440000000000000000 + +1631 +6adb00000001000000000000037777770773657870657274026e6c0000010001 +6adb80000001000000030003037777770773657870657274026e6c0000010001c0100002000100015180000e04646e733106626c6978656dc018c0100002000100015180000704646e7332c031c0100002000100015180000704646e7333c031c02c00010001000151800004d44fe803c04600010001000151800004c3f5c782c05900010001000151800004d44ff303 + +1632 +b2c4e8a95010faf0d3a60000000000000000 + + +1633 +3a440000000100000000000006504152495445024e4c00000f0001 +3a448000000100000002000206504152495445024e4c00000f0001c00c0002000100015180000c036e7331056f72696f6ec013c00c00020001000151800006036e7332c02bc02700010001000151800004c2862282c03f00010001000151800004c2862b02 + +1634 +e9e400000001000000000000037777770b617564696f636f76657273026e6c0000010001 +e9e480000001000000020000037777770b617564696f636f76657273026e6c0000010001c0100002000100015180001105646e732d33056c61646f7403636f6d00c0100002000100015180000805646e732d34c036 + +1635 +b2c4e8a95018faf0b5df0000008f3338000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 + + +1636 +02eb00000001000000000000046d61696c03777873026e6c0000010001 +02eb80000001000000030003046d61696c03777873026e6c0000010001c01100020001000151800007046e733038c011c01100020001000151800007046e733039c011c01100020001000151800006036e7334c011c02900010001000151800004c3790128c03c00010001000151800004c3790143c04f00010001000151800004d5ef9a65 + +1637 +e16d00000001000000000000086a756c69657474650762657374776562026e6c0000010001 +e16d80000001000000020002086a756c69657474650762657374776562026e6c0000010001c0150002000100015180000e08706f7765722d6133026133c01dc0150002000100015180000c09706f7765722d697078c03ac0310001000100015180000451113b42c04b00010001000151800004d5ab40e6 + +1638 +04920000000100000000000003323034033139320236310232340770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +04928000000100000002000203323034033139320236310232340770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02d00020001000151800006036e7330c02dc02d00020001000151800006036e7331c02dc04900010001000151800004c2a55e01c05b00010001000151800004c2a55e05 + +1639 +b2c4e8b75011fae2d3140000000000000000 + + +1640 +000000007002faf00f9e0000020405b401010402 +000080010000000000000000 + +1641 +613000000001000000000000046d61696c086e65646c696e7578026e6c0000010001 +613080000001000000030003046d61696c086e65646c696e7578026e6c0000010001c01100020001000151800006036e7331c011c01100020001000151800006036e7332c011c01100020001000151800006036e7333c011c02e00010001000151800004d5ef87d2c04000010001000151800004d5ef87d3c05200010001000151800004d5ef8005 + +1642 +b2c4e8b85010fae2d3130000000000000000 + + +1643 +e6930000000100000000000006636861726973026e6c00000f0001 +e6938000000100000002000006636861726973026e6c00000f0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +1644 +b2c581cb5010faf007c10000000000000000 + + +1645 +b2c581cb5018faf0258a0000008ff7a7000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 + + +1646 +e97b00000001000000000000036e73310b7669727475616c686f7374026e6c0000010001 +e97b80000001000000020000036e73310b7669727475616c686f7374026e6c0000010001c01000020001000151800013036e733109676c6f62616c6e656403636f6d00c01000020001000151800006036e7332c034 + +1647 +e97c00000001000000000000036e73320b7669727475616c686f7374026e6c0000010001 +e97c80000001000000020000036e73320b7669727475616c686f7374026e6c0000010001c01000020001000151800013036e733109676c6f62616c6e656403636f6d00c01000020001000151800006036e7332c034 + +1648 +bffb0000000100000000000003626c3102626c06787334616c6c026e6c0000010001 +bffb8000000100000003000203626c3102626c06787334616c6c026e6c0000010001c01300020001000151800005026e73c013c01300020001000151800006036e7332c013c0130002000100015180000d026e730472697065036e657400c02e00010001000151800004c26d0642c03f00010001000151800004c26d0963 + +1649 +37fd00000001000000000000036e73340767617574656e67026e6c0000010001 +37fd80000001000000020000036e73340767617574656e67026e6c0000010001c0100002000100015180000d036e7331066c696e6b7570c018c01000020001000151800006036e7332c030 + +1650 +73360000000100000000000004646e7331057368656c6c026e6c0000010001 +73368000000100000003000004646e7331057368656c6c026e6c0000010001c0110002000100015180001004646e7331057368656c6c03636f6d00c0110002000100015180000704646e7332c030c0110002000100015180000704646e7333c030 + +1651 +8bea00000001000000000000037777770764736c6465736b026e6c0000010001 +8bea80000001000000020000037777770764736c6465736b026e6c0000010001c01000020001000151800014036e73310a676f6c64766973696f6e03636f6d00c01000020001000151800006036e7332c030 + +1652 +35fc00000001000000000000034e53320743495354524f4e024e4c0000010001 +35fc80000001000000020002034e53320743495354524f4e024e4c0000010001c01000020001000151800005026e73c010c01000020001000151800002c00cc02c000100010001518000043ed81f37c00c000100010001518000043ed81f38 + +1653 +b2c581d95011fae2072f0000000000000000 + + +1654 +e94000000001000000000000037777770a6c696e6b746970706572026e6c0000010001 +e94080000001000000030003037777770a6c696e6b746970706572026e6c0000010001c0100002000100015180000c036e7331056d61786573c01bc01000020001000151800006036e7332c033c01000020001000151800006036e7333c033c02f000100010001518000045045402ec047000100010001518000045045402fc059000100010001518000045045440a + +1655 +77be0000000100000000000003777777086879706f686f6d65026e6c0000010001 +77be8000000100000002000003777777086879706f686f6d65026e6c0000010001c01000020001000151800013036e733109696d6167653264617903636f6d00c01000020001000151800006036e7332c031 + +1656 +4fb500000001000000000000036e733208696e74726f776562026e6c0000010001 +4fb580000001000000020002036e733208696e74726f776562026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc02d0001000100015180000450416028c00c00010001000151800004c356780c + +1657 +b2c581da5010fae2072e0000000000000000 + + +1658 +5c6a0010000100000000000007636172746d616e076e6574666c6f77026e6c0000010001 +5c6a8000000100000002000207636172746d616e076e6574666c6f77026e6c0000010001c01400020001000151800006036e7331c014c01400020001000151800006036e7332c014c030000100010001518000043eb1ef24c042000100010001518000043eb1ef25 + +1659 +92d100000001000000000000036e7332076e656473746174026e6c0000010001 +92d180000001000000020002036e7332076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +1660 +921500000001000000000000036e7334076e656473746174026e6c0000010001 +921580000001000000020002036e7334076e656473746174026e6c0000010001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +1661 +ba9500000001000000000000036e7332076e656473746174026e6c0000260001 +ba9580000001000000020002036e7332076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +1662 +3a9f00000001000000000000036e7334076e656473746174026e6c0000260001 +3a9f80000001000000020002036e7334076e656473746174026e6c0000260001c01000020001000151800005026e73c010c01000020001000151800006036e7333c010c02c00010001000151800004d4482615c03d00010001000151800004d5c4021d + +1663 +175c28000001000000010000026e6c0000060001095f6b65726265726f73045f746370155374616e64616172642d6565727374652d73697465065f7369746573026463065f6d736463730b746563686e6f70616e656c026e6c000021000100000258001c000000640058056e746673310b746563686e6f70616e656c026e6c00 +175ca8040000000000000000 + +1664 +3cfa00000001000000000000036e733108696e74726f776562026e6c0000010001 +3cfa80000001000000020002036e733108696e74726f776562026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c00c0001000100015180000450416028c03b00010001000151800004c356780c + +1665 +e0ea0000000100000000000006636f6f6b696504696c7365026e6c0000010001 +e0ea8000000100000003000306636f6f6b696504696c7365026e6c0000010001c01300020001000151800006036e7331c013c01300020001000151800006036e7332c013c01300020001000151800006036e7333c013c02c000100010001518000043e45a282c03e000100010001518000043e45a283c050000100010001518000043e45a284 + +1666 +000000007002faf01bd90000020405b401010402 +000080010000000000000000 + +1667 +ddaf000000010000000000000377777709766572626f7577656e026e6c0000010001 +ddaf800000010000000200020377777709766572626f7577656e026e6c0000010001c0100002000100015180000f036e7331086765656e70756e74c01ac01000020001000151800006036e7332c032c02e00010001000151800004d4ccd865c049000100010001518000045054ec34 + +1668 +b2c62b8d5010faf06a390000000000000000 +b2c6ab840000000000000000 + +1669 +b2c62b8d5018faf031d50000008f4cd4000000010001000000000f313133333837313336363136322d330000f900010f313133333837313336363136322d330000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 +b2c6ab840000000000000000 + +1670 +897c0000000100000000000004686f6d650774697363616c69026e6c0000010001 +897c8000000100000003000204686f6d650774697363616c69026e6c0000010001c0110002000100015180000704616e7331c011c0110002000100015180000704616e7332c011c0110002000100015180001404616e73330a74697363616c696e657402626500c02d00010001000151800004c3f14d38c04000010001000151800004c3f13325 + +1671 +4caa00000001000000000000086f76657268656964047a6f656b026e6c0000010001 +4caa80000001000000020002086f76657268656964047a6f656b026e6c0000010001c0150002000100015180000d026e73076e65746c616e64c01ac01500020001000151800006036e7332c031c02e00010001000151800004d9aa2042c04700010001000151800004d9aa2c06 + +1672 +5eb200000001000000000000086f76657268656964047a6f656b026e6c0000010001 +5eb280000001000000020002086f76657268656964047a6f656b026e6c0000010001c0150002000100015180000d026e73076e65746c616e64c01ac01500020001000151800006036e7332c031c02e00010001000151800004d9aa2042c04700010001000151800004d9aa2c06 + +1673 +b2c62b9b5011fae269a70000000000000000 +b2c6ab940000000000000000 + +1674 +000000007002faf04d060000020405b401010402 +000080010000000000000000 + +1675 +e97f00000001000000000000036e73320b7669727475616c686f7374026e6c0000010001 +e97f80000001000000020000036e73320b7669727475616c686f7374026e6c0000010001c01000020001000151800013036e733109676c6f62616c6e656403636f6d00c01000020001000151800006036e7332c034 + +1676 +e97e00000001000000000000036e73310b7669727475616c686f7374026e6c0000010001 +e97e80000001000000020000036e73310b7669727475616c686f7374026e6c0000010001c01000020001000151800013036e733109676c6f62616c6e656403636f6d00c01000020001000151800006036e7332c034 + +1677 +c36200000001000000000000046d61696c06737469626265026e6c0000010001 +c36280000001000000020002046d61696c06737469626265026e6c0000010001c01100020001000151800011026e730b666163696e676661637473c018c01100020001000151800006036e7332c02fc02c00010001000151800004d513b013c04900010001000151800004d513b012 + +1678 +7637000000010000000000000777656276696577026e6c00000f0001 +7637800000010000000200000777656276696577026e6c00000f0001c00c00020001000151800012036e73310b6d6565737465726c696a6bc014c00c00020001000151800006036e7332c02c + +1679 +e7000000000100000000000005627261616d026e6c00000f0001 +e7008000000100000002000205627261616d026e6c00000f0001c00c0002000100015180000b036e73310461786974c012c00c00020001000151800006036e7332c02ac026000100010001518000043e3a440bc03d000100010001518000043e3a440c + +1680 +b2c62b9c5010fae269a60000000000000000 +b2c6ab940000000000000000 + +1681 +e5cc000000010000000000000f6d656c6b7765672d686f6c6c616e64026e6c00000f0001 +e5cc800000010000000300030f6d656c6b7765672d686f6c6c616e64026e6c00000f0001c00c0002000100015180000e076e73617574683103626974c01cc00c0002000100015180000a076e736175746832c038c00c0002000100015180000a076e736175746833c038c03000010001000151800004d5880c33c04a00010001000151800004d5880c3bc06000010001000151800004d4ccc00b + +1682 +3a0f000000010000000000000964656e68656c646572026e6c00000f0001 +3a0f800000010000000200020964656e68656c646572026e6c00000f0001c00c00020001000151800011036e73310a7765626275726f646e73c016c00c00020001000151800006036e7332c02ec02a00010001000151800004d51380cec04700010001000151800004d513806a + +1683 +b2c6b1045010faf015ef0000000000000000 + + +1684 +b2c6b1045018faf01a1d0000008f1143000000010001000000000f313133333837313336363136322d320000f900010f313133333837313336363136322d320000f900ff00000000005303677373096d6963726f736f667403636f6d00403afc84403c4e040003000000304e544c4d535350000100000097b208e00b000b002500000005000500200000004e54465331544543484e4f50414e454c0000 + + +1685 +c22900000001000000000000036e733103727567026e6c0000010001 +c22980000001000000030003036e733103727567026e6c0000010001c01000020001000151800002c00cc01000020001000151800006036e7332c010c0100002000100015180000e036e733107737572666e6574c014c00c00010001000151800004817d0406c03600010001000151800004817d040dc04800010001000151800004c0576a65 + +1686 +ab8400000001000000000000036e733203727567026e6c0000010001 +ab8480000001000000030003036e733203727567026e6c0000010001c01000020001000151800006036e7331c010c01000020001000151800002c00cc0100002000100015180000e036e733107737572666e6574c014c02800010001000151800004817d0406c00c00010001000151800004817d040dc04800010001000151800004c0576a65 + +1687 +0359000000010000000000000f50432d30392054454120262052494108627275696e686f66026e6c0000010001 +0359800000010000000300020f50432d30392054454120262052494108627275696e686f66026e6c0000010001c01c0002000100015180000d036e733106776964657873c025c01c00020001000151800010036e733206776964657873036e657400c01c00020001000151800006036e7333c03dc03900010001000151800004d4ccc0fcc06e000100010001518000043efa0703 + +1688 +38fd0000000100000000000006636861726973026e6c0000ff0001 +38fd8000000100000002000006636861726973026e6c0000ff0001c00c0002000100015180000c026e7306766576696461c013c00c00020001000151800006036e7332c02a + +1689 +4e9100000001000000000000076e6372766e6574026e6c00000f0001 +4e9180000001000000030003076e6372766e6574026e6c00000f0001c00c0002000100015180001208736f6c7574696f6e06736f6c636f6ec014c00c00020001000151800006036e7331c031c00c00020001000151800006036e7332c031c02800010001000151800004d42d2005c04600010001000151800004d42d2003c05800010001000151800004d42d2103 + +1690 +964b00000001000000000000066b7669616e61036b7669026e6c0000010001 +964b80000001000000030003066b7669616e61036b7669026e6c0000010001c01300020001000151800009066b7669657870c013c01300020001000151800002c00cc0130002000100015180000e04616a6178066e696b686566c017c02b00010001000151800004817d0f01c00c00010001000151800004817d0f02c04e00010001000151800004c010c701 + +1691 +0ba600000001000000000000066b7669617376036b7669026e6c0000010001 +0ba680000001000000030003066b7669617376036b7669026e6c0000010001c01300020001000151800009066b7669657870c013c01300020001000151800009066b7669616e61c013c0130002000100015180000e04616a6178066e696b686566c017c02b00010001000151800004817d0f01c04000010001000151800004817d0f02c05500010001000151800004c010c701 + +1692 +85d300000001000000000000066b7669657870036b7669026e6c0000010001 +85d380000001000000030003066b7669657870036b7669026e6c0000010001c01300020001000151800002c00cc01300020001000151800009066b7669616e61c013c0130002000100015180000e04616a6178066e696b686566c017c00c00010001000151800004817d0f01c03900010001000151800004817d0f02c04e00010001000151800004c010c701 + +1693 +11fc000000010000000000000234330332313503313733033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001 +11fc800000010000000200020234330332313503313733033134320770726f786965730a626c61636b686f6c657307656173796e6574026e6c00001c0001c02e00020001000151800006036e7330c02ec02e00020001000151800006036e7331c02ec04a00010001000151800004c2a55e01c05c00010001000151800004c2a55e05 + +1694 +769c000000010000000000000a6d61726b656e6865656d026e6c00000f0001 +769c800000010000000200020a6d61726b656e6865656d026e6c00000f0001c00c0002000100015180000c026e7306787334616c6cc017c00c00020001000151800006036e7332c02ec02b00010001000151800004c26d0642c04300010001000151800004c26d0963 + +1695 +9355000000010000000000000d3231312d3233322d34372d343708696e746572746e7303636f6d06787369746573026e6c0000010001 +9355800000010000000200020d3231312d3233322d34372d343708696e746572746e7303636f6d06787369746573026e6c0000010001c02700020001000151800006036e7331c027c02700020001000151800006036e7332c027c042000100010001518000045054f526c054000100010001518000045054f527 + +1696 +51c600000001000000000000056761726f74026e6c00000f0001 +51c680000001000000020002056761726f74026e6c00000f0001c00c0002000100015180000f026e7309656174736572766572c012c00c00020001000151800006036e7332c029c02600010001000151800004d4cb0e42c04100010001000151800004d4cb1221 + +1697 +b2c6b1125011fae2155d0000000000000000 + + +1698 +000000007002faf041280000020405b401010402 +000080010000000000000000 + +1699 +c1f700000001000000000000096e696a656e6b616d70026e6c00000f0001 +c1f780000001000000020002096e696a656e6b616d70026e6c00000f0001c00c0002000100015180000f036e733108696e74726f776562c016c00c00020001000151800006036e7332c02ec02a0001000100015180000450416028c04500010001000151800004c356780c + diff --git a/external/unbound/testdata/test_packets.4 b/external/unbound/testdata/test_packets.4 new file mode 100644 index 0000000..c50c34b --- /dev/null +++ b/external/unbound/testdata/test_packets.4 @@ -0,0 +1,929 @@ +; DNSSEC test packets. +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 2e 15 85 00 00 01 00 01 00 03 00 05 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 01 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 01 00 01 00 01 51 80 00 04 d5 9a e0 01 09 6e ; 41- 60 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 ; 61- 80 + 00 18 03 6e 73 37 0f 64 6f 6d 61 69 6e 2d 72 65 67 69 73 74 ; 81- 100 + 72 79 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 101- 120 + 00 02 00 01 00 01 51 80 00 13 04 6f 70 65 6e 09 6e 6c 6e 65 ; 121- 140 + 74 6c 61 62 73 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 141- 160 + 6e 6c 00 00 02 00 01 00 01 51 80 00 11 05 6f 6d 76 61 6c 06 ; 161- 180 + 74 65 64 6e 65 74 02 6e 6c 00 04 6f 70 65 6e 09 6e 6c 6e 65 ; 181- 200 + 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 00 01 51 80 00 04 d5 ; 201- 220 + 9a e0 01 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 221- 240 + 6c 00 00 1c 00 01 00 01 51 80 00 10 20 01 07 b8 02 06 00 01 ; 241- 260 + 00 00 00 00 00 00 00 53 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c ; 261- 280 + 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 20 01 07 ; 281- 300 + b8 02 06 00 01 00 00 00 00 00 00 00 01 05 6f 6d 76 61 6c 06 ; 301- 320 + 74 65 64 6e 65 74 02 6e 6c 00 00 01 00 01 00 00 70 80 00 04 ; 321- 340 + d5 9a e0 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c ; 341- 360 + 00 00 1c 00 01 00 00 70 80 00 10 20 01 07 b8 02 06 00 01 02 ; 361- 380 + 00 39 ff fe 59 b1 87 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 4d 79 85 00 00 01 00 02 00 04 00 08 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 01 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 01 00 01 00 01 51 80 00 04 d5 9a e0 01 09 6e ; 41- 60 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 ; 61- 80 + 00 a0 00 01 05 02 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f ; 81- 100 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 46 0f 5f 69 aa fe ; 101- 120 + 22 ae bf 65 52 2f 18 39 d7 3c 76 6b b0 4d a8 e4 32 46 60 e2 ; 121- 140 + 3b 68 5f 3f b1 3a 7b 4f 3f 47 62 45 89 19 60 a8 04 53 19 9b ; 141- 160 + 6c 7d 5a eb fe ce b3 2e 5b 2d 7d e5 87 3f 53 f7 3a ab c3 39 ; 161- 180 + 83 bb 1a 77 a1 1a 36 4d bc 46 4d 28 3c ba 93 70 d7 dd dc 2e ; 181- 200 + f9 9b ea eb a8 75 8e 6b a2 03 41 4f f6 36 77 8a 61 87 72 b3 ; 201- 220 + 4f db 96 20 19 04 93 f8 63 cb 0a 55 cf 25 95 9c fd 94 e6 90 ; 221- 240 + 7f 5f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 ; 241- 260 + 00 01 51 80 00 18 03 6e 73 37 0f 64 6f 6d 61 69 6e 2d 72 65 ; 261- 280 + 67 69 73 74 72 79 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 ; 281- 300 + 02 6e 6c 00 00 02 00 01 00 01 51 80 00 13 04 6f 70 65 6e 09 ; 301- 320 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 09 6e 6c 6e 65 74 6c ; 321- 340 + 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 11 05 6f 6d ; 341- 360 + 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 09 6e 6c 6e 65 74 ; 361- 380 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 ; 381- 400 + 05 02 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e ; 401- 420 + 65 74 6c 61 62 73 02 6e 6c 00 ad 07 18 03 3f 18 f6 5c 35 8d ; 421- 440 + 5b 89 d8 cf 6a 11 fc 3c 32 6b bc 06 e3 c4 c8 ec 47 83 1d ab ; 441- 460 + a0 ea e3 af 43 b0 f5 ec aa 5d 4e aa fa 79 6f 1a 2d fc 1f 44 ; 461- 480 + 81 7a 61 a2 49 76 0b 8e 9d 9f 34 95 66 56 89 99 dc f6 31 6e ; 481- 500 + 42 bb 16 45 93 60 44 7b 19 3a c4 e6 9a ab 69 9a b5 84 8f 86 ; 501- 520 + b5 17 af c1 e0 4c b1 33 eb 67 cc cf 5b f6 e9 27 ff f3 d9 d0 ; 521- 540 + c5 8e f0 91 b0 ab 77 93 18 e7 7e dc 44 1e f1 73 72 7e 04 6f ; 541- 560 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 ; 561- 580 + 01 00 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e 6c 6e ; 581- 600 + 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 ; 601- 620 + 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 53 04 6f 70 65 ; 621- 640 + 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 ; 641- 660 + 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 ; 661- 680 + 01 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 00 01 ; 681- 700 + 00 01 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c 06 74 ; 701- 720 + 65 64 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 10 20 ; 721- 740 + 01 07 b8 02 06 00 01 02 00 39 ff fe 59 b1 87 04 6f 70 65 6e ; 741- 760 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 ; 761- 780 + 51 80 00 a0 00 01 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ; 781- 800 + ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 33 42 f9 d1 ; 801- 820 + 94 cb d3 27 dc e3 6b fd 80 34 a8 c0 ab 2a 76 f8 ef 9d c2 f7 ; 821- 840 + b4 08 2f ff 3c 35 c1 b4 13 46 5b 05 38 e7 97 96 41 b9 01 ff ; 841- 860 + 8c 0b de 62 78 29 68 2f fe fb 53 7a 61 92 3f 89 79 3e df 49 ; 861- 880 + cc ad a3 f7 45 13 7b 99 4c 0b 74 06 ee 1e 97 5a fc 6b 74 60 ; 881- 900 + 6d a7 68 24 5f 01 f8 5a e2 84 ad 18 cf 52 ff f7 a5 66 84 76 ; 901- 920 + b0 34 5c 42 8f c6 58 c2 38 c4 8c 6b 7a 72 90 4c 9c 77 90 d4 ; 921- 940 + dc cf cf 2a 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 941- 960 + 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 03 00 01 51 ; 961- 980 + 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 ; 981-1000 + 73 02 6e 6c 00 53 09 41 45 b5 88 59 88 6e 2a 21 8e 42 ac 80 ; 1001-1020 + 7c e2 9f 2e d4 f6 48 3f 70 40 d8 61 1d 3f ea e2 ba ad 20 83 ; 1021-1040 + 80 bc 7e 3f 40 e7 41 74 9c c3 7c 51 30 e6 f2 99 50 0a 3f d9 ; 1041-1060 + 26 5a fd d2 38 09 79 e5 27 f1 25 80 e5 13 58 a5 2b 95 70 c3 ; 1061-1080 + 53 cd ee 0e c3 07 32 f6 73 17 60 b2 1d 3a b0 a4 0c 8f ef c3 ; 1081-1100 + 65 5e 87 01 98 51 51 a9 fe c0 f7 b2 0d 02 d8 29 40 b2 a8 c4 ; 1101-1120 + 8d 52 da 36 f9 98 f9 c4 6d 6e 1b ed 42 00 00 29 10 00 00 00 ; 1121-1140 + 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + b2 88 85 03 00 01 00 00 00 01 00 00 04 7a 61 72 66 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 09 6e 6c 6e 65 ; 21- 40 + 74 6c 61 62 73 02 6e 6c 00 00 06 00 01 00 00 46 50 00 40 04 ; 41- 60 + 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 0a 68 ; 61- 80 + 6f 73 74 6d 61 73 74 65 72 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 81- 100 + 6e 6c 00 77 a1 02 58 00 00 70 80 00 00 1c 20 00 09 3a 80 00 ; 101- 120 + 00 46 50 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 1c be 85 03 00 01 00 00 00 06 00 01 04 7a 61 72 66 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 09 6e 6c 6e 65 ; 21- 40 + 74 6c 61 62 73 02 6e 6c 00 00 06 00 01 00 00 46 50 00 40 04 ; 41- 60 + 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 0a 68 ; 61- 80 + 6f 73 74 6d 61 73 74 65 72 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 81- 100 + 6e 6c 00 77 a1 02 58 00 00 70 80 00 00 1c 20 00 09 3a 80 00 ; 101- 120 + 00 46 50 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 ; 121- 140 + 01 00 00 46 50 00 a0 00 06 05 02 00 01 51 80 46 3d 18 29 46 ; 141- 160 + 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 81 ; 161- 180 + de 4b b8 1d 81 1f 95 cb ca 8e fa 04 bc b6 a4 05 7f b1 7f de ; 181- 200 + e7 bd cc 8f 39 63 1d 0a 9a ac 7c b7 eb b5 e5 e8 38 a0 d6 9d ; 201- 220 + ec 34 06 43 9b 5a 4f 61 f3 18 21 32 c7 79 43 6f 99 32 b8 25 ; 221- 240 + 54 3b 19 6c 25 d3 3e ef ec 2a d1 1e 4a 86 f6 17 ca 84 07 44 ; 241- 260 + 73 a2 39 df d1 66 09 c1 e2 21 83 bf 79 73 2b 8d 2d bb bf 37 ; 261- 280 + c5 e0 95 a9 2a f3 79 75 67 1d 90 29 5c 57 06 07 4b 69 25 05 ; 281- 300 + dd 63 05 91 c5 81 0d 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c ; 301- 320 + 00 00 2f 00 01 00 00 46 50 00 21 04 5f 73 69 70 04 5f 75 64 ; 321- 340 + 70 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 07 62 01 80 ; 341- 360 + 08 10 03 80 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e ; 361- 380 + 00 01 00 00 46 50 00 a0 00 2f 05 02 00 00 46 50 46 3d 18 29 ; 381- 400 + 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 401- 420 + 53 04 6e cf ce b4 19 e1 40 c5 47 36 02 c5 1b fa ab 43 57 ec ; 421- 440 + d1 57 da 02 d6 13 16 b1 4d 15 58 d1 a6 cb 5d 27 67 71 33 c2 ; 441- 460 + 87 16 12 af 45 99 7f 95 74 19 71 e3 ea 33 b5 60 39 21 15 11 ; 461- 480 + af 5d df 33 f3 c4 9d 9c 62 9f ba f8 10 f6 18 4c eb 92 84 8a ; 481- 500 + 85 5c a3 83 aa 00 01 c8 48 b7 5b de 80 9a 38 00 3d d9 cd f5 ; 501- 520 + 09 68 06 7f 5c 83 4e 2c a1 99 76 53 dc 01 ac 06 f1 ed 9a a4 ; 521- 540 + d3 03 17 33 4b 71 bd 94 03 77 77 77 09 6e 6c 6e 65 74 6c 61 ; 541- 560 + 62 73 02 6e 6c 00 00 2f 00 01 00 00 46 50 00 16 09 6e 6c 6e ; 561- 580 + 65 74 6c 61 62 73 02 6e 6c 00 00 06 40 00 00 08 00 03 03 77 ; 581- 600 + 77 77 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 601- 620 + 00 00 46 50 00 a0 00 2f 05 03 00 00 46 50 46 3d 18 29 46 15 ; 621- 640 + 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 3f f2 ; 641- 660 + fd 50 50 3a ea 29 bf 75 26 28 0c 22 72 29 77 5a 8f ef 2f 34 ; 661- 680 + 96 18 27 32 79 57 1e 08 ce 04 0f 22 c8 4e 32 db 1d 90 c6 68 ; 681- 700 + 0c 23 c8 43 44 2a ab fe e6 bb 90 3a 73 7d 79 44 63 93 e8 97 ; 701- 720 + 4f aa 51 f5 91 c2 ee d3 13 ea 94 68 4b 1d fc 9c 8e f5 1a 7b ; 721- 740 + 5f f6 09 e8 94 58 7e 26 4e 00 9e 98 a5 b9 c7 4d 34 8c f0 1e ; 741- 760 + 8e 74 f1 6d 54 ef d0 45 70 57 5a d0 fe 3d 54 78 e0 96 70 0e ; 761- 780 + a7 b8 e2 be 13 00 00 00 29 10 00 00 00 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 95 7c 85 00 00 01 00 00 00 01 00 00 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 07 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 06 00 01 00 00 46 50 00 40 04 6f 70 65 6e 09 ; 41- 60 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 0a 68 6f 73 74 6d 61 ; 61- 80 + 73 74 65 72 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 77 a1 ; 81- 100 + 02 58 00 00 70 80 00 00 1c 20 00 09 3a 80 00 00 46 50 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 78 1a 85 00 00 01 00 00 00 04 00 01 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 07 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 06 00 01 00 00 46 50 00 40 04 6f 70 65 6e 09 ; 41- 60 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 0a 68 6f 73 74 6d 61 ; 61- 80 + 73 74 65 72 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 77 a1 ; 81- 100 + 02 58 00 00 70 80 00 00 1c 20 00 09 3a 80 00 00 46 50 09 6e ; 101- 120 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 46 50 ; 121- 140 + 00 a0 00 06 05 02 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f ; 141- 160 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 81 de 4b b8 1d 81 ; 161- 180 + 1f 95 cb ca 8e fa 04 bc b6 a4 05 7f b1 7f de e7 bd cc 8f 39 ; 181- 200 + 63 1d 0a 9a ac 7c b7 eb b5 e5 e8 38 a0 d6 9d ec 34 06 43 9b ; 201- 220 + 5a 4f 61 f3 18 21 32 c7 79 43 6f 99 32 b8 25 54 3b 19 6c 25 ; 221- 240 + d3 3e ef ec 2a d1 1e 4a 86 f6 17 ca 84 07 44 73 a2 39 df d1 ; 241- 260 + 66 09 c1 e2 21 83 bf 79 73 2b 8d 2d bb bf 37 c5 e0 95 a9 2a ; 261- 280 + f3 79 75 67 1d 90 29 5c 57 06 07 4b 69 25 05 dd 63 05 91 c5 ; 281- 300 + 81 0d 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2f 00 01 ; 301- 320 + 00 00 46 50 00 21 04 5f 73 69 70 04 5f 75 64 70 09 6e 6c 6e ; 321- 340 + 65 74 6c 61 62 73 02 6e 6c 00 00 07 62 01 80 08 10 03 80 09 ; 341- 360 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 46 ; 361- 380 + 50 00 a0 00 2f 05 02 00 00 46 50 46 3d 18 29 46 15 8b 29 ab ; 381- 400 + 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 53 04 6e cf ce ; 401- 420 + b4 19 e1 40 c5 47 36 02 c5 1b fa ab 43 57 ec d1 57 da 02 d6 ; 421- 440 + 13 16 b1 4d 15 58 d1 a6 cb 5d 27 67 71 33 c2 87 16 12 af 45 ; 441- 460 + 99 7f 95 74 19 71 e3 ea 33 b5 60 39 21 15 11 af 5d df 33 f3 ; 461- 480 + c4 9d 9c 62 9f ba f8 10 f6 18 4c eb 92 84 8a 85 5c a3 83 aa ; 481- 500 + 00 01 c8 48 b7 5b de 80 9a 38 00 3d d9 cd f5 09 68 06 7f 5c ; 501- 520 + 83 4e 2c a1 99 76 53 dc 01 ac 06 f1 ed 9a a4 d3 03 17 33 4b ; 521- 540 + 71 bd 94 00 00 29 10 00 00 00 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 0d 5b 85 00 00 01 00 01 00 03 00 05 04 64 69 76 61 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 04 64 69 76 61 ; 21- 40 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 00 01 ; 41- 60 + 51 80 00 04 d5 9a e0 26 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 61- 80 + 6c 00 00 02 00 01 00 01 51 80 00 18 03 6e 73 37 0f 64 6f 6d ; 81- 100 + 61 69 6e 2d 72 65 67 69 73 74 72 79 02 6e 6c 00 09 6e 6c 6e ; 101- 120 + 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 13 ; 121- 140 + 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 09 ; 141- 160 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 ; 161- 180 + 80 00 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 ; 181- 200 + 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 ; 201- 220 + 01 00 01 00 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e ; 221- 240 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 ; 241- 260 + 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 01 04 6f ; 261- 280 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 ; 281- 300 + 01 00 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 ; 301- 320 + 00 00 53 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 ; 321- 340 + 00 01 00 01 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c ; 341- 360 + 06 74 65 64 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 ; 361- 380 + 10 20 01 07 b8 02 06 00 01 02 00 39 ff fe 59 b1 87 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 0e 87 85 00 00 01 00 02 00 04 00 08 04 64 69 76 61 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 04 64 69 76 61 ; 21- 40 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 00 01 ; 41- 60 + 51 80 00 04 d5 9a e0 26 04 64 69 76 61 09 6e 6c 6e 65 74 6c ; 61- 80 + 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 01 05 ; 81- 100 + 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 ; 101- 120 + 74 6c 61 62 73 02 6e 6c 00 7d 90 9b 21 31 d6 0d b5 91 2b b1 ; 121- 140 + e8 ff 90 4a 39 6f 61 bd 50 61 ee 64 8c 50 99 4a 95 04 cd 9e ; 141- 160 + 48 d8 d4 13 2a 7f 3a f2 ff 5f e5 2b ec 58 56 b7 e7 95 b0 89 ; 161- 180 + 23 84 be 57 bd fd 85 59 2e b2 a1 dd 0c 59 23 63 9d 77 68 b0 ; 181- 200 + 1d 37 84 2b 47 1b 70 00 04 2e 27 56 3c 39 37 e9 9e 93 74 34 ; 201- 220 + 1b d9 46 7a 8f cf b5 c2 03 b8 fe 65 97 f9 0f 09 04 f4 6e fd ; 221- 240 + 38 fc 47 c6 e0 b6 2f 21 77 d1 f1 05 65 6a 87 7f 26 09 6e 6c ; 241- 260 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 ; 261- 280 + 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 09 6e ; 281- 300 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 ; 301- 320 + 00 18 03 6e 73 37 0f 64 6f 6d 61 69 6e 2d 72 65 67 69 73 74 ; 321- 340 + 72 79 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 341- 360 + 00 02 00 01 00 01 51 80 00 13 04 6f 70 65 6e 09 6e 6c 6e 65 ; 361- 380 + 74 6c 61 62 73 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 381- 400 + 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 05 02 00 01 51 ; 401- 420 + 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 ; 421- 440 + 73 02 6e 6c 00 ad 07 18 03 3f 18 f6 5c 35 8d 5b 89 d8 cf 6a ; 441- 460 + 11 fc 3c 32 6b bc 06 e3 c4 c8 ec 47 83 1d ab a0 ea e3 af 43 ; 461- 480 + b0 f5 ec aa 5d 4e aa fa 79 6f 1a 2d fc 1f 44 81 7a 61 a2 49 ; 481- 500 + 76 0b 8e 9d 9f 34 95 66 56 89 99 dc f6 31 6e 42 bb 16 45 93 ; 501- 520 + 60 44 7b 19 3a c4 e6 9a ab 69 9a b5 84 8f 86 b5 17 af c1 e0 ; 521- 540 + 4c b1 33 eb 67 cc cf 5b f6 e9 27 ff f3 d9 d0 c5 8e f0 91 b0 ; 541- 560 + ab 77 93 18 e7 7e dc 44 1e f1 73 72 7e 04 6f 70 65 6e 09 6e ; 561- 580 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 00 01 51 80 ; 581- 600 + 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 ; 601- 620 + 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 20 01 07 b8 02 ; 621- 640 + 06 00 01 00 00 00 00 00 00 00 01 04 6f 70 65 6e 09 6e 6c 6e ; 641- 660 + 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 ; 661- 680 + 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 53 05 6f 6d 76 ; 681- 700 + 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 00 01 00 01 00 00 70 ; 701- 720 + 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 ; 721- 740 + 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 10 20 01 07 b8 02 06 ; 741- 760 + 00 01 02 00 39 ff fe 59 b1 87 04 6f 70 65 6e 09 6e 6c 6e 65 ; 761- 780 + 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 ; 781- 800 + 01 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c ; 801- 820 + 6e 65 74 6c 61 62 73 02 6e 6c 00 33 42 f9 d1 94 cb d3 27 dc ; 821- 840 + e3 6b fd 80 34 a8 c0 ab 2a 76 f8 ef 9d c2 f7 b4 08 2f ff 3c ; 841- 860 + 35 c1 b4 13 46 5b 05 38 e7 97 96 41 b9 01 ff 8c 0b de 62 78 ; 861- 880 + 29 68 2f fe fb 53 7a 61 92 3f 89 79 3e df 49 cc ad a3 f7 45 ; 881- 900 + 13 7b 99 4c 0b 74 06 ee 1e 97 5a fc 6b 74 60 6d a7 68 24 5f ; 901- 920 + 01 f8 5a e2 84 ad 18 cf 52 ff f7 a5 66 84 76 b0 34 5c 42 8f ; 921- 940 + c6 58 c2 38 c4 8c 6b 7a 72 90 4c 9c 77 90 d4 dc cf cf 2a 04 ; 941- 960 + 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e ; 961- 980 + 00 01 00 01 51 80 00 a0 00 1c 05 03 00 01 51 80 46 3d 18 29 ; 981-1000 + 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 1001-1020 + 53 09 41 45 b5 88 59 88 6e 2a 21 8e 42 ac 80 7c e2 9f 2e d4 ; 1021-1040 + f6 48 3f 70 40 d8 61 1d 3f ea e2 ba ad 20 83 80 bc 7e 3f 40 ; 1041-1060 + e7 41 74 9c c3 7c 51 30 e6 f2 99 50 0a 3f d9 26 5a fd d2 38 ; 1061-1080 + 09 79 e5 27 f1 25 80 e5 13 58 a5 2b 95 70 c3 53 cd ee 0e c3 ; 1081-1100 + 07 32 f6 73 17 60 b2 1d 3a b0 a4 0c 8f ef c3 65 5e 87 01 98 ; 1101-1120 + 51 51 a9 fe c0 f7 b2 0d 02 d8 29 40 b2 a8 c4 8d 52 da 36 f9 ; 1121-1140 + 98 f9 c4 6d 6e 1b ed 42 00 00 29 10 00 00 00 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 5c 21 87 00 00 01 00 02 00 00 00 00 04 64 69 76 61 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 04 64 69 76 61 ; 21- 40 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 ; 41- 60 + 51 80 00 a0 00 01 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ; 61- 80 + ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 7d 90 9b 21 ; 81- 100 + 31 d6 0d b5 91 2b b1 e8 ff 90 4a 39 6f 61 bd 50 61 ee 64 8c ; 101- 120 + 50 99 4a 95 04 cd 9e 48 d8 d4 13 2a 7f 3a f2 ff 5f e5 2b ec ; 121- 140 + 58 56 b7 e7 95 b0 89 23 84 be 57 bd fd 85 59 2e b2 a1 dd 0c ; 141- 160 + 59 23 63 9d 77 68 b0 1d 37 84 2b 47 1b 70 00 04 2e 27 56 3c ; 161- 180 + 39 37 e9 9e 93 74 34 1b d9 46 7a 8f cf b5 c2 03 b8 fe 65 97 ; 181- 200 + f9 0f 09 04 f4 6e fd 38 fc 47 c6 e0 b6 2f 21 77 d1 f1 05 65 ; 201- 220 + 6a 87 7f 26 04 64 69 76 61 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 221- 240 + 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 03 00 01 51 ; 241- 260 + 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 ; 261- 280 + 73 02 6e 6c 00 de 55 75 bf 56 52 fb 36 13 2a c6 1b cd 95 d1 ; 281- 300 + 3f 28 f8 60 f8 b9 d5 e1 4b ae 51 e5 b2 3c c3 87 43 53 04 19 ; 301- 320 + 13 64 42 86 62 9c f3 b7 af b7 52 29 c5 cd 53 d2 5e 70 cb 59 ; 321- 340 + 4e 66 7b 02 d5 d6 29 46 1a 2a 6c 4b 22 81 b8 93 65 0d 9d 12 ; 341- 360 + de e8 9d 59 41 17 d2 c4 fd d2 76 92 fc fb 83 3d 97 85 06 f9 ; 361- 380 + f5 08 c8 dc 2b d4 7c e0 da eb 96 ff 5a be 15 c3 17 4c b3 a7 ; 381- 400 + c3 54 84 55 b6 be f2 cd 05 ca 99 5d c8 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + f6 7d 85 00 00 01 00 03 00 04 00 08 04 64 69 76 61 09 6e 6c ; 1- 20 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 04 64 69 76 61 ; 21- 40 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 ; 41- 60 + 51 80 00 a0 00 01 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ; 61- 80 + ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 7d 90 9b 21 ; 81- 100 + 31 d6 0d b5 91 2b b1 e8 ff 90 4a 39 6f 61 bd 50 61 ee 64 8c ; 101- 120 + 50 99 4a 95 04 cd 9e 48 d8 d4 13 2a 7f 3a f2 ff 5f e5 2b ec ; 121- 140 + 58 56 b7 e7 95 b0 89 23 84 be 57 bd fd 85 59 2e b2 a1 dd 0c ; 141- 160 + 59 23 63 9d 77 68 b0 1d 37 84 2b 47 1b 70 00 04 2e 27 56 3c ; 161- 180 + 39 37 e9 9e 93 74 34 1b d9 46 7a 8f cf b5 c2 03 b8 fe 65 97 ; 181- 200 + f9 0f 09 04 f4 6e fd 38 fc 47 c6 e0 b6 2f 21 77 d1 f1 05 65 ; 201- 220 + 6a 87 7f 26 04 64 69 76 61 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 221- 240 + 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 03 00 01 51 ; 241- 260 + 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 ; 261- 280 + 73 02 6e 6c 00 de 55 75 bf 56 52 fb 36 13 2a c6 1b cd 95 d1 ; 281- 300 + 3f 28 f8 60 f8 b9 d5 e1 4b ae 51 e5 b2 3c c3 87 43 53 04 19 ; 301- 320 + 13 64 42 86 62 9c f3 b7 af b7 52 29 c5 cd 53 d2 5e 70 cb 59 ; 321- 340 + 4e 66 7b 02 d5 d6 29 46 1a 2a 6c 4b 22 81 b8 93 65 0d 9d 12 ; 341- 360 + de e8 9d 59 41 17 d2 c4 fd d2 76 92 fc fb 83 3d 97 85 06 f9 ; 361- 380 + f5 08 c8 dc 2b d4 7c e0 da eb 96 ff 5a be 15 c3 17 4c b3 a7 ; 381- 400 + c3 54 84 55 b6 be f2 cd 05 ca 99 5d c8 04 64 69 76 61 09 6e ; 401- 420 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 46 50 ; 421- 440 + 00 a0 00 2f 05 03 00 00 46 50 46 3d 18 29 46 15 8b 29 ab 0f ; 441- 460 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 5a 75 f4 5c 4f fc ; 461- 480 + 4e 1b 16 09 6f a9 12 d2 ac c3 ef 00 4f 45 f8 f9 e7 d5 77 58 ; 481- 500 + 2a 2a da cd cd 7a a3 0b 4c 18 30 d1 c2 89 f6 e3 49 64 9c 81 ; 501- 520 + f1 a8 e9 f5 29 35 e0 f0 c9 e7 33 42 3d d5 c5 0c b8 da e6 27 ; 521- 540 + 29 45 96 df 89 5d 32 30 d6 8b b0 ee 07 d7 63 17 17 3a 44 c5 ; 541- 560 + 1a 13 bf 72 a8 ec fe 2d 88 82 8a 3b 43 4a 30 a0 af 87 64 33 ; 561- 580 + 23 42 ec 46 0d 19 f2 d9 34 31 ee 6b 11 f3 10 22 49 8a d7 5f ; 581- 600 + 15 65 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 ; 601- 620 + 00 01 51 80 00 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 ; 621- 640 + 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 ; 641- 660 + 01 00 01 51 80 00 18 03 6e 73 37 0f 64 6f 6d 61 69 6e 2d 72 ; 661- 680 + 65 67 69 73 74 72 79 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 ; 681- 700 + 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 13 04 6f 70 65 6e ; 701- 720 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 09 6e 6c 6e 65 74 ; 721- 740 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 ; 741- 760 + 05 02 00 01 51 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e ; 761- 780 + 65 74 6c 61 62 73 02 6e 6c 00 ad 07 18 03 3f 18 f6 5c 35 8d ; 781- 800 + 5b 89 d8 cf 6a 11 fc 3c 32 6b bc 06 e3 c4 c8 ec 47 83 1d ab ; 801- 820 + a0 ea e3 af 43 b0 f5 ec aa 5d 4e aa fa 79 6f 1a 2d fc 1f 44 ; 821- 840 + 81 7a 61 a2 49 76 0b 8e 9d 9f 34 95 66 56 89 99 dc f6 31 6e ; 841- 860 + 42 bb 16 45 93 60 44 7b 19 3a c4 e6 9a ab 69 9a b5 84 8f 86 ; 861- 880 + b5 17 af c1 e0 4c b1 33 eb 67 cc cf 5b f6 e9 27 ff f3 d9 d0 ; 881- 900 + c5 8e f0 91 b0 ab 77 93 18 e7 7e dc 44 1e f1 73 72 7e 04 6f ; 901- 920 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 ; 921- 940 + 01 00 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e 6c 6e ; 941- 960 + 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 ; 961- 980 + 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 01 04 6f 70 65 ; 981-1000 + 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 ; 1001-1020 + 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 ; 1021-1040 + 53 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 00 01 ; 1041-1060 + 00 01 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c 06 74 ; 1061-1080 + 65 64 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 10 20 ; 1081-1100 + 01 07 b8 02 06 00 01 02 00 39 ff fe 59 b1 87 04 6f 70 65 6e ; 1101-1120 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 ; 1121-1140 + 51 80 00 a0 00 01 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ; 1141-1160 + ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 33 42 f9 d1 ; 1161-1180 + 94 cb d3 27 dc e3 6b fd 80 34 a8 c0 ab 2a 76 f8 ef 9d c2 f7 ; 1181-1200 + b4 08 2f ff 3c 35 c1 b4 13 46 5b 05 38 e7 97 96 41 b9 01 ff ; 1201-1220 + 8c 0b de 62 78 29 68 2f fe fb 53 7a 61 92 3f 89 79 3e df 49 ; 1221-1240 + cc ad a3 f7 45 13 7b 99 4c 0b 74 06 ee 1e 97 5a fc 6b 74 60 ; 1241-1260 + 6d a7 68 24 5f 01 f8 5a e2 84 ad 18 cf 52 ff f7 a5 66 84 76 ; 1261-1280 + b0 34 5c 42 8f c6 58 c2 38 c4 8c 6b 7a 72 90 4c 9c 77 90 d4 ; 1281-1300 + dc cf cf 2a 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 1301-1320 + 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 03 00 01 51 ; 1321-1340 + 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 ; 1341-1360 + 73 02 6e 6c 00 53 09 41 45 b5 88 59 88 6e 2a 21 8e 42 ac 80 ; 1361-1380 + 7c e2 9f 2e d4 f6 48 3f 70 40 d8 61 1d 3f ea e2 ba ad 20 83 ; 1381-1400 + 80 bc 7e 3f 40 e7 41 74 9c c3 7c 51 30 e6 f2 99 50 0a 3f d9 ; 1401-1420 + 26 5a fd d2 38 09 79 e5 27 f1 25 80 e5 13 58 a5 2b 95 70 c3 ; 1421-1440 + 53 cd ee 0e c3 07 32 f6 73 17 60 b2 1d 3a b0 a4 0c 8f ef c3 ; 1441-1460 + 65 5e 87 01 98 51 51 a9 fe c0 f7 b2 0d 02 d8 29 40 b2 a8 c4 ; 1461-1480 + 8d 52 da 36 f9 98 f9 c4 6d 6e 1b ed 42 00 00 29 10 00 00 00 ; 1481-1500 + 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + f6 7d 85 00 00 01 00 01 00 03 00 05 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 30 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 30 00 01 00 01 51 80 00 86 01 01 03 05 01 03 ; 41- 60 + f3 cd 35 8c cf ca 92 58 84 25 7d 19 cf 72 4c 76 06 25 66 91 ; 61- 80 + 53 7a 2c fb a9 3b 79 9b cf b1 61 2d 29 e6 db a9 fa 88 6f 4d ; 81- 100 + 2d bc bd ec 98 b8 e7 76 96 65 8d cc e7 fc 49 05 23 92 da f5 ; 101- 120 + ad 72 8d ad f0 2d 3e c5 e3 b5 6d cf dd e9 94 f2 df 60 c7 72 ; 121- 140 + 1a 56 ea b0 c7 d6 fa 7c e8 b9 7e 85 ad 2d 9b 0c b2 f5 03 fb ; 141- 160 + cb 66 d5 c3 9c d2 6c 50 ab 79 f9 3c a8 25 01 81 f1 e6 f5 b1 ; 161- 180 + f3 30 6d 54 05 8b 44 21 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 181- 200 + 6c 00 00 02 00 01 00 01 51 80 00 18 03 6e 73 37 0f 64 6f 6d ; 201- 220 + 61 69 6e 2d 72 65 67 69 73 74 72 79 02 6e 6c 00 09 6e 6c 6e ; 221- 240 + 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 13 ; 241- 260 + 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 09 ; 261- 280 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 ; 281- 300 + 80 00 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 ; 301- 320 + 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 ; 321- 340 + 01 00 01 00 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e ; 341- 360 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 ; 361- 380 + 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 53 04 6f ; 381- 400 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 ; 401- 420 + 01 00 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 ; 421- 440 + 00 00 01 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 ; 441- 460 + 00 01 00 01 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c ; 461- 480 + 06 74 65 64 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 ; 481- 500 + 10 20 01 07 b8 02 06 00 01 02 00 39 ff fe 59 b1 87 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 7d b9 85 00 00 01 00 02 00 04 00 08 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 30 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 30 00 01 00 01 51 80 00 86 01 01 03 05 01 03 ; 41- 60 + f3 cd 35 8c cf ca 92 58 84 25 7d 19 cf 72 4c 76 06 25 66 91 ; 61- 80 + 53 7a 2c fb a9 3b 79 9b cf b1 61 2d 29 e6 db a9 fa 88 6f 4d ; 81- 100 + 2d bc bd ec 98 b8 e7 76 96 65 8d cc e7 fc 49 05 23 92 da f5 ; 101- 120 + ad 72 8d ad f0 2d 3e c5 e3 b5 6d cf dd e9 94 f2 df 60 c7 72 ; 121- 140 + 1a 56 ea b0 c7 d6 fa 7c e8 b9 7e 85 ad 2d 9b 0c b2 f5 03 fb ; 141- 160 + cb 66 d5 c3 9c d2 6c 50 ab 79 f9 3c a8 25 01 81 f1 e6 f5 b1 ; 161- 180 + f3 30 6d 54 05 8b 44 21 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 181- 200 + 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 30 05 02 00 01 51 80 ; 201- 220 + 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 ; 221- 240 + 02 6e 6c 00 e6 20 9a 3f 0b d4 7f fe e3 aa ac 29 eb d1 4e 9c ; 241- 260 + eb dd 76 21 9c cc 7a 4d 42 f2 47 16 f7 06 fb 48 e5 fd f6 73 ; 261- 280 + 91 23 e1 dc 7b 43 8b 64 72 f7 06 5e a3 08 8f bd 38 7e 16 22 ; 281- 300 + ea a2 a2 a3 10 3c 0c d0 ec 67 26 b7 06 7e e6 71 b8 8a 3a a9 ; 301- 320 + 7f 00 d5 14 db 2c 32 02 b0 5e 65 25 07 a3 89 71 00 f2 3c db ; 321- 340 + 20 86 01 1e 53 80 d9 46 46 04 ec 26 8d 35 97 cc 81 a9 fe d8 ; 341- 360 + 5b 25 6b 2e e9 f7 0c eb e7 6e b0 37 09 6e 6c 6e 65 74 6c 61 ; 361- 380 + 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 11 05 6f 6d 76 ; 381- 400 + 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 09 6e 6c 6e 65 74 6c ; 401- 420 + 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 18 03 6e 73 ; 421- 440 + 37 0f 64 6f 6d 61 69 6e 2d 72 65 67 69 73 74 72 79 02 6e 6c ; 441- 460 + 00 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 ; 461- 480 + 01 51 80 00 13 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 ; 481- 500 + 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e ; 501- 520 + 00 01 00 01 51 80 00 a0 00 02 05 02 00 01 51 80 46 3d 18 29 ; 521- 540 + 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 541- 560 + ad 07 18 03 3f 18 f6 5c 35 8d 5b 89 d8 cf 6a 11 fc 3c 32 6b ; 561- 580 + bc 06 e3 c4 c8 ec 47 83 1d ab a0 ea e3 af 43 b0 f5 ec aa 5d ; 581- 600 + 4e aa fa 79 6f 1a 2d fc 1f 44 81 7a 61 a2 49 76 0b 8e 9d 9f ; 601- 620 + 34 95 66 56 89 99 dc f6 31 6e 42 bb 16 45 93 60 44 7b 19 3a ; 621- 640 + c4 e6 9a ab 69 9a b5 84 8f 86 b5 17 af c1 e0 4c b1 33 eb 67 ; 641- 660 + cc cf 5b f6 e9 27 ff f3 d9 d0 c5 8e f0 91 b0 ab 77 93 18 e7 ; 661- 680 + 7e dc 44 1e f1 73 72 7e 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c ; 681- 700 + 61 62 73 02 6e 6c 00 00 01 00 01 00 01 51 80 00 04 d5 9a e0 ; 701- 720 + 01 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 721- 740 + 00 1c 00 01 00 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 ; 741- 760 + 00 00 00 00 00 53 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 ; 761- 780 + 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 20 01 07 b8 02 ; 781- 800 + 06 00 01 00 00 00 00 00 00 00 01 05 6f 6d 76 61 6c 06 74 65 ; 801- 820 + 64 6e 65 74 02 6e 6c 00 00 01 00 01 00 00 70 80 00 04 d5 9a ; 821- 840 + e0 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 00 ; 841- 860 + 1c 00 01 00 00 70 80 00 10 20 01 07 b8 02 06 00 01 02 00 39 ; 861- 880 + ff fe 59 b1 87 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 ; 881- 900 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 01 05 03 00 01 ; 901- 920 + 51 80 46 3d 18 29 46 15 8b 29 ab 0f 09 6e 6c 6e 65 74 6c 61 ; 921- 940 + 62 73 02 6e 6c 00 33 42 f9 d1 94 cb d3 27 dc e3 6b fd 80 34 ; 941- 960 + a8 c0 ab 2a 76 f8 ef 9d c2 f7 b4 08 2f ff 3c 35 c1 b4 13 46 ; 961- 980 + 5b 05 38 e7 97 96 41 b9 01 ff 8c 0b de 62 78 29 68 2f fe fb ; 981-1000 + 53 7a 61 92 3f 89 79 3e df 49 cc ad a3 f7 45 13 7b 99 4c 0b ; 1001-1020 + 74 06 ee 1e 97 5a fc 6b 74 60 6d a7 68 24 5f 01 f8 5a e2 84 ; 1021-1040 + ad 18 cf 52 ff f7 a5 66 84 76 b0 34 5c 42 8f c6 58 c2 38 c4 ; 1041-1060 + 8c 6b 7a 72 90 4c 9c 77 90 d4 dc cf cf 2a 04 6f 70 65 6e 09 ; 1061-1080 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 ; 1081-1100 + 80 00 a0 00 1c 05 03 00 01 51 80 46 3d 18 29 46 15 8b 29 ab ; 1101-1120 + 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 53 09 41 45 b5 ; 1121-1140 + 88 59 88 6e 2a 21 8e 42 ac 80 7c e2 9f 2e d4 f6 48 3f 70 40 ; 1141-1160 + d8 61 1d 3f ea e2 ba ad 20 83 80 bc 7e 3f 40 e7 41 74 9c c3 ; 1161-1180 + 7c 51 30 e6 f2 99 50 0a 3f d9 26 5a fd d2 38 09 79 e5 27 f1 ; 1181-1200 + 25 80 e5 13 58 a5 2b 95 70 c3 53 cd ee 0e c3 07 32 f6 73 17 ; 1201-1220 + 60 b2 1d 3a b0 a4 0c 8f ef c3 65 5e 87 01 98 51 51 a9 fe c0 ; 1221-1240 + f7 b2 0d 02 d8 29 40 b2 a8 c4 8d 52 da 36 f9 98 f9 c4 6d 6e ; 1241-1260 + 1b ed 42 00 00 29 10 00 00 00 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 50 e5 81 80 00 01 00 08 00 0a 00 18 02 73 65 00 00 30 00 01 ; 1- 20 + 02 73 65 00 00 30 00 01 00 00 0e 10 00 86 01 00 03 05 01 03 ; 21- 40 + db 42 4d 16 35 1a f6 8e 87 cb dc 52 4a 49 1f 15 27 68 bc 86 ; 41- 60 + c5 d4 0b 6b e9 e0 bf 69 ab ce 9c 6b ad fe 4b 00 fb 9a 59 74 ; 61- 80 + f2 36 1f 61 8d 9f b2 7e 63 84 fc 72 45 8d 57 bd ae ca c2 1a ; 81- 100 + 77 e6 8d 4d 5f 21 c1 05 c0 66 06 45 77 af 60 46 4b d7 3a d9 ; 101- 120 + 8c d2 8f 2b ff 44 8e 32 1e 0b 3e d3 73 55 b2 a9 4d 68 cc fd ; 121- 140 + 0b 0d f8 a2 fd 38 2b ae 6c e3 96 52 27 47 c5 83 4e 55 55 50 ; 141- 160 + a0 09 49 62 de 1e a1 25 02 73 65 00 00 30 00 01 00 00 0e 10 ; 161- 180 + 00 88 01 00 03 05 03 01 00 01 b9 a9 68 15 f6 09 f9 32 a4 7b ; 181- 200 + 0e c9 8f 95 f6 df d3 87 18 f3 75 9c 8b de 4f 3d f9 5b b7 6f ; 201- 220 + 51 a5 60 46 fb 10 c2 f0 84 5e 67 e4 49 89 11 c4 5e 55 de 26 ; 221- 240 + 67 9e 5b 54 0a d4 43 c1 af 86 2a 17 b6 8a 19 ad d2 ba db 4c ; 241- 260 + 15 38 78 28 ca 1c ed 2c 98 5c 8c f4 96 19 fc c1 46 59 8d 66 ; 261- 280 + 11 72 48 34 b7 49 e8 58 31 5e 82 17 1b 00 88 55 e2 e1 bb ae ; 281- 300 + 13 5d de 1a dd 92 df 3d 64 a1 b5 8c 34 74 b3 55 6e 29 02 73 ; 301- 320 + 65 00 00 30 00 01 00 00 0e 10 00 88 01 00 03 05 03 01 00 01 ; 321- 340 + cd e7 e2 f5 7b 7f a4 db 46 34 a9 7c 00 dc 20 19 fe 30 3a b3 ; 341- 360 + b8 55 28 fa cd db f3 9c 02 f1 3a 7e 77 51 03 94 b3 c5 ff 91 ; 361- 380 + 88 47 86 37 3f ef 2e d4 ea 4f 2a e0 82 ce ea ef 7e 27 2c fc ; 381- 400 + 78 86 41 4d c9 92 fd f0 94 53 f9 71 92 c1 4a 90 a2 c1 ac d8 ; 401- 420 + db 9d ee 27 05 e9 22 d4 be 96 23 fa 00 af a4 38 ec 2c 11 64 ; 421- 440 + d8 c4 6e af bc 1a 1d 9b f0 12 4d ba ac d8 5a a8 90 54 cf 2d ; 441- 460 + 6e f8 95 33 a9 e7 56 b9 02 73 65 00 00 30 00 01 00 00 0e 10 ; 461- 480 + 01 08 01 01 03 05 03 01 00 01 ac 4f 31 c4 76 c7 41 db 41 5e ; 481- 500 + 16 79 90 7a a0 40 d7 fa bd 10 33 ae 4a 6e 14 e3 ad 6d 59 68 ; 501- 520 + 04 66 3e 11 19 65 ed d8 f6 27 e0 12 ea bb bd 9f f3 19 95 1d ; 521- 540 + 10 63 56 cb e2 59 ce eb 34 95 4a 6d c2 08 c6 c2 15 12 d7 9e ; 541- 560 + 7c 1d be 09 29 46 db 39 37 0c f2 9c 17 96 3d 04 89 7d e8 0c ; 561- 580 + 55 66 8c 73 b8 e3 88 0b 90 13 94 29 47 ff 98 2e c7 bd fc 18 ; 581- 600 + 1f f0 5e db 61 a7 0a 5a e2 9c a2 69 d4 e8 38 cb 0c ce f5 68 ; 601- 620 + 25 32 4e e3 6d f5 b7 de 05 0a be 2a d3 1e bd b9 18 be d2 4d ; 621- 640 + 05 33 05 be 54 b3 1b 7c 96 09 f2 4d 41 ec d6 dd c9 c0 26 39 ; 641- 660 + 84 a6 7a 0a a1 71 98 05 59 3f 6d 22 81 38 b1 8a 7f f5 2d ca ; 661- 680 + e0 5f f2 8c 10 67 7f 6e eb c5 e2 a2 42 c9 db a2 78 7b a4 b9 ; 681- 700 + 8d c7 e1 73 00 71 1f b1 89 ad a7 21 43 ef 9b fa 32 59 1f 01 ; 701- 720 + 5b f8 56 77 33 af 9d 20 93 86 51 df df 18 98 95 e0 db b7 fa ; 721- 740 + 35 39 34 34 f4 0d 02 73 65 00 00 30 00 01 00 00 0e 10 01 08 ; 741- 760 + 01 01 03 05 03 01 00 01 be b1 45 91 c4 7f e3 f2 17 97 71 12 ; 761- 780 + fc f4 04 71 07 6f 38 ae ea 26 5a 88 d5 bf ca 34 9a 65 c9 ab ; 781- 800 + 99 98 91 30 5f 05 3e 9a 43 f9 7b 8a 49 ab b4 ae 0b b8 78 1c ; 801- 820 + 18 76 99 04 a0 c5 51 e0 58 48 f1 fa e4 b8 f1 c8 b9 ed 8b 3f ; 821- 840 + 51 13 a3 ed a1 0a b7 6b eb 42 b5 e7 7f 32 2e fc db 3a 13 31 ; 841- 860 + 5e de a4 9e 33 cd f8 e9 5a 94 c9 82 92 76 9d 6a 87 ca 81 ae ; 861- 880 + 45 2c a3 8f 42 cd 82 de 7c 3a 00 7e 16 50 d1 ab 72 19 83 31 ; 881- 900 + 50 70 47 07 d9 75 05 d8 65 35 de b2 a5 0b 98 63 0a ee 6c 23 ; 901- 920 + 40 63 b1 7a b4 43 41 6a c5 bf c3 61 36 75 55 df 53 e2 85 a6 ; 921- 940 + 01 75 0d 53 26 3b df 19 2f c5 61 92 70 bf f0 5d 76 21 0b 88 ; 941- 960 + b7 94 9c d5 ae dc 03 ac 44 0b 21 80 e7 03 04 e0 0f 52 f2 89 ; 961- 980 + 34 4a ba 44 71 0b 16 6b d7 38 e7 b6 77 c1 f6 cb 3b f4 d8 43 ; 981-1000 + 10 8a 4e 86 c1 49 b5 e8 3a d2 76 65 fe 49 67 de 95 0b 3e f4 ; 1001-1020 + 42 c5 37 a9 02 73 65 00 00 2e 00 01 00 00 0e 10 00 96 00 30 ; 1021-1040 + 05 01 00 00 0e 10 46 2e a3 b7 46 26 25 d5 95 7b 02 73 65 00 ; 1041-1060 + a5 f8 54 11 87 a1 c5 0a 62 cf 21 27 61 8f 82 4e 32 8f ca 1e ; 1061-1080 + 25 10 34 48 4c 23 46 52 fc 7c 79 c5 91 77 8a 81 b3 08 29 d2 ; 1081-1100 + 89 64 d3 4c ad 20 b9 b3 4e e3 e2 6b bb d6 e1 56 59 c0 aa b8 ; 1101-1120 + 12 c5 b3 39 2e 8f 4a ae c1 b3 78 07 8f ac 40 4f 28 a0 ea 98 ; 1121-1140 + 6f 1f 80 f3 d3 70 11 1b 4b c0 fc 5d f3 f2 a6 32 22 10 1f e7 ; 1141-1160 + c8 40 82 9a 4c 21 d1 93 ce 17 87 b6 2a 42 67 89 f9 5c 71 a1 ; 1161-1180 + 89 a3 5f b0 e0 15 3d d0 02 73 65 00 00 2e 00 01 00 00 0e 10 ; 1181-1200 + 01 16 00 30 05 01 00 00 0e 10 46 47 a6 80 46 12 1c 59 18 16 ; 1201-1220 + 02 73 65 00 4c bd 74 15 bd 17 0b e1 34 d1 b5 57 4f 18 c8 7d ; 1221-1240 + 7c 80 75 22 d7 f4 43 aa 7b 83 61 e8 c1 70 cd d5 8c 93 2a c7 ; 1241-1260 + b6 7f 9c 73 79 52 1a 58 68 54 ef 12 83 4a 5f f3 45 e6 25 65 ; 1261-1280 + fe 4f 18 72 b3 84 ea 9c 4b 54 39 ad 1b 18 29 ed 0b ca e2 80 ; 1281-1300 + 3c 07 98 44 09 55 95 d3 57 0f 0a 81 af 61 d0 9c 93 7c aa b3 ; 1301-1320 + 7c 36 52 f3 f2 e6 93 0c 20 06 5c 45 c6 45 fe 5c 8c 84 24 d0 ; 1321-1340 + e9 c5 87 1e 1b 83 e2 30 b8 2a 41 59 b7 5b a5 a6 b0 22 0e bf ; 1341-1360 + 55 c9 99 5a ff 7b 43 74 a4 d1 8f d0 ed f5 20 d1 8d a3 e3 f9 ; 1361-1380 + f8 c6 db 4d e3 3d 6e 33 9c 49 c4 14 3a b8 59 db bc 02 ef 94 ; 1381-1400 + d6 d1 f3 74 f9 2c 0d 5e 98 61 8f f7 3a 22 85 18 8f 4c 36 df ; 1401-1420 + 3e 2f 1b 5f 4a 5c a1 39 ff fd 33 52 ab 43 b9 7e 89 5e d1 ac ; 1421-1440 + e0 bd d4 88 56 39 c1 e3 4a ef f0 41 0a ee d2 96 5b c1 d8 d3 ; 1441-1460 + 4a 55 48 d3 e9 cf dc 96 b8 22 ca f7 75 fd 6d df cf d8 b2 2e ; 1461-1480 + 02 73 65 00 00 2e 00 01 00 00 0e 10 01 16 00 30 05 01 00 00 ; 1481-1500 + 0e 10 46 47 a6 80 46 12 1c 59 45 16 02 73 65 00 20 f7 f4 13 ; 1501-1520 + 08 99 61 ca f1 75 9f 71 9a c8 c4 06 77 1a 48 a8 d8 4f 45 e8 ; 1521-1540 + 25 92 b2 5c 16 b1 14 b4 79 44 23 23 37 20 0e 36 2f 57 8f 17 ; 1541-1560 + c3 69 65 49 11 a9 40 86 06 13 ff f6 d6 ac 5e 58 ea de aa de ; 1561-1580 + 06 d4 19 1b 0d 58 84 83 c2 1a 01 2b 6e 7b 18 e6 38 5f 2d eb ; 1581-1600 + c5 76 01 60 a4 52 5a 23 ec 7c d0 e6 21 ca 6f 29 9e 83 5f db ; 1601-1620 + fb 49 0b 03 ad 09 5b 3b 28 23 1c cb 99 82 5b 1c 81 a7 7d ca ; 1621-1640 + 00 fd 52 22 66 19 51 1d c6 ac da 2d 65 6d 53 40 e7 b7 c0 6c ; 1641-1660 + 97 73 7d e2 df e7 75 df 7b 6b 7d a9 9e cb e2 6a d3 35 0c 31 ; 1661-1680 + ee 6b 98 44 c7 17 47 4a 3c 69 d4 1b eb 90 40 79 6f 86 bb 53 ; 1681-1700 + a6 8c e7 04 4d e4 c3 6b a6 13 5f f8 21 76 f3 ff cd de c9 88 ; 1701-1720 + 9f 2a 0b a5 4a aa 43 13 f1 cd 2c 28 98 9c eb 91 cc 0a da ca ; 1721-1740 + d8 b5 47 78 ed c2 f4 19 78 27 f7 05 d6 4a 4f 93 7a 22 43 3d ; 1741-1760 + 59 15 da 1c 60 7a 46 ca 86 95 c3 77 02 73 65 00 00 02 00 01 ; 1761-1780 + 00 02 7b f1 00 09 01 63 02 4e 53 02 73 65 00 02 73 65 00 00 ; 1781-1800 + 02 00 01 00 02 7b f1 00 09 01 64 02 4e 53 02 73 65 00 02 73 ; 1801-1820 + 65 00 00 02 00 01 00 02 7b f1 00 09 01 65 02 4e 53 02 73 65 ; 1821-1840 + 00 02 73 65 00 00 02 00 01 00 02 7b f1 00 09 01 66 02 4e 53 ; 1841-1860 + 02 73 65 00 02 73 65 00 00 02 00 01 00 02 7b f1 00 09 01 67 ; 1861-1880 + 02 4e 53 02 73 65 00 02 73 65 00 00 02 00 01 00 02 7b f1 00 ; 1881-1900 + 09 01 68 02 4e 53 02 73 65 00 02 73 65 00 00 02 00 01 00 02 ; 1901-1920 + 7b f1 00 09 01 69 02 4e 53 02 73 65 00 02 73 65 00 00 02 00 ; 1921-1940 + 01 00 02 7b f1 00 09 01 41 02 4e 53 02 73 65 00 02 73 65 00 ; 1941-1960 + 00 02 00 01 00 02 7b f1 00 09 01 62 02 4e 53 02 73 65 00 02 ; 1961-1980 + 73 65 00 00 2e 00 01 00 02 a3 00 00 96 00 02 05 01 00 02 a3 ; 1981-2000 + 00 46 2e ad 6a 46 27 22 f5 95 7b 02 73 65 00 d0 db 15 15 e6 ; 2001-2020 + 6f 13 58 01 d7 c2 07 d1 54 e4 bf 64 00 6d ca a6 b7 61 5e 69 ; 2021-2040 + 2f e8 b4 b1 3e 91 d6 65 21 9e 92 82 c7 e8 6b ec 2a 1c 86 60 ; 2041-2060 + 6d 52 03 9c d3 7c 29 3b 60 46 0f 41 83 86 59 66 95 76 9c 83 ; 2061-2080 + 22 fd 27 aa c6 68 ce 41 44 c0 bb bb 8e 56 79 c1 66 3c 9b 07 ; 2081-2100 + ed 50 05 88 22 24 88 0e 83 09 7f 6d 81 4c 12 ab 79 df f2 d9 ; 2101-2120 + 0b 6d 41 38 55 7b 7c ac 5d cd 28 04 a6 b0 54 9b 89 82 9e 39 ; 2121-2140 + 7e c9 5b 01 41 02 4e 53 02 73 65 00 00 01 00 01 00 02 7b f1 ; 2141-2160 + 00 04 c0 24 90 6b 01 41 02 4e 53 02 73 65 00 00 1c 00 01 00 ; 2161-2180 + 02 7b f1 00 10 20 01 06 98 00 09 03 01 00 00 00 00 00 00 00 ; 2181-2200 + 53 01 62 02 4e 53 02 73 65 00 00 01 00 01 00 02 7b f1 00 04 ; 2201-2220 + c0 24 85 6b 01 63 02 4e 53 02 73 65 00 00 01 00 01 00 02 7b ; 2221-2240 + f1 00 04 c0 24 87 6b 01 64 02 4e 53 02 73 65 00 00 01 00 01 ; 2241-2260 + 00 02 7b f3 00 04 51 e4 08 10 01 65 02 4e 53 02 73 65 00 00 ; 2261-2280 + 01 00 01 00 02 7b f1 00 04 51 e4 0a 39 01 66 02 4e 53 02 73 ; 2281-2300 + 65 00 00 01 00 01 00 02 7b f1 00 04 c0 24 7d 35 01 66 02 4e ; 2301-2320 + 53 02 73 65 00 00 1c 00 01 00 02 7b f1 00 10 20 01 06 b0 00 ; 2321-2340 + 07 00 00 00 00 00 00 00 00 00 53 01 67 02 4e 53 02 73 65 00 ; 2341-2360 + 00 01 00 01 00 02 7b f3 00 04 82 ef 05 72 01 67 02 4e 53 02 ; 2361-2380 + 73 65 00 00 1c 00 01 00 02 7b f3 00 10 20 01 06 b0 00 0e 00 ; 2381-2400 + 03 00 00 00 00 00 00 00 01 01 68 02 4e 53 02 73 65 00 00 01 ; 2401-2420 + 00 01 00 02 7b f1 00 04 c7 07 31 1e 01 69 02 4e 53 02 73 65 ; 2421-2440 + 00 00 01 00 01 00 02 7b f1 00 04 c2 92 6a 16 01 41 02 4e 53 ; 2441-2460 + 02 73 65 00 00 2e 00 01 00 02 7b f1 00 96 00 01 05 03 00 02 ; 2461-2480 + a3 00 46 2e bd b4 46 27 06 d4 95 7b 02 73 65 00 36 41 6c 4e ; 2481-2500 + 6b 37 41 ba 9c 84 4c ca 8a 25 b0 f4 5e b5 38 da 51 78 f6 57 ; 2501-2520 + b3 2a b8 06 24 66 06 8f fc e6 48 f6 bd 2e eb 5c 25 f8 ca 6e ; 2521-2540 + a2 71 52 c3 b2 1a 21 b4 d3 69 35 b8 65 96 b7 15 9e e2 fa 25 ; 2541-2560 + 23 6e da e3 20 c1 bd 15 b6 40 86 2d 50 52 33 33 75 c3 97 2c ; 2561-2580 + 50 e5 3a ec 92 ca 32 b6 e7 7c 72 f0 8c bc dc cb 33 65 b5 0d ; 2581-2600 + 2b 99 21 81 0a 78 74 41 0a 89 6b 87 dc 4c 31 70 2a 8c f8 68 ; 2601-2620 + 10 26 e5 2a 01 41 02 4e 53 02 73 65 00 00 2e 00 01 00 02 7b ; 2621-2640 + f1 00 96 00 1c 05 03 00 02 a3 00 46 2f f8 c0 46 27 06 d4 95 ; 2641-2660 + 7b 02 73 65 00 8b 6e 8e 8e 07 47 bc 80 ad dc 07 a4 b3 2f 3c ; 2661-2680 + 0e 75 a6 50 5e 8b 07 80 19 aa 11 77 74 be 9c fc a5 21 26 2f ; 2681-2700 + 56 3f cc 0a 46 91 06 78 39 86 5d c1 df 9b b2 1f 2f f5 97 7a ; 2701-2720 + a7 91 36 6e 12 56 8c d1 d7 e0 0a b5 1b 8f 0b ac 7d df 4b 32 ; 2721-2740 + 4d 4a e1 a4 9f 4f 3e 6a dc fe ee d4 f8 00 40 e6 34 48 98 2f ; 2741-2760 + c7 b9 df 49 63 80 8d 91 87 8d 24 2d 6d 7f ce e6 eb 93 5d 8b ; 2761-2780 + d5 a3 e0 00 64 df 94 51 88 f8 b2 14 c1 01 62 02 4e 53 02 73 ; 2781-2800 + 65 00 00 2e 00 01 00 02 7b f1 00 96 00 01 05 03 00 02 a3 00 ; 2801-2820 + 46 30 17 a6 46 27 06 d4 95 7b 02 73 65 00 49 a8 36 07 fd bb ; 2821-2840 + 2e a3 d3 f0 f7 3d 66 f3 b1 78 74 3b 74 92 b0 97 3e 7a 3c 01 ; 2841-2860 + d5 35 97 67 d2 bc d0 47 70 dc cd b6 98 ba 95 b9 db 35 ed b4 ; 2861-2880 + c1 68 94 ce 52 df 9d 44 a7 22 27 66 d2 19 4a 70 80 6e 3d cc ; 2881-2900 + 60 e2 b5 7f 37 3a c1 18 b5 01 41 4a 76 ae 21 33 03 f1 e4 23 ; 2901-2920 + 0c d7 17 d1 3f 9e 01 d2 0e f3 11 d8 f1 ef 49 ec 75 5c eb fc ; 2921-2940 + e3 74 4e 40 a9 eb 80 25 b5 a1 39 c8 e2 b6 cb 7c e3 43 fb 18 ; 2941-2960 + f0 2d 01 63 02 4e 53 02 73 65 00 00 2e 00 01 00 02 7b f1 00 ; 2961-2980 + 96 00 01 05 03 00 02 a3 00 46 2f e5 19 46 27 06 d4 95 7b 02 ; 2981-3000 + 73 65 00 0d b2 38 33 08 15 51 95 35 8a 52 ef 0f 09 74 51 a2 ; 3001-3020 + c8 41 ee a4 d2 01 54 0b 01 1f fb 73 d3 e8 3b 36 2c c5 29 75 ; 3021-3040 + 78 49 5f 25 03 fa c2 a2 da 7c 59 6c 68 90 dc 9c 7c 6e 88 83 ; 3041-3060 + 75 a8 de a9 6c 33 13 f6 61 f5 97 89 cf b6 ff 5f 08 e7 77 04 ; 3061-3080 + 13 67 da 56 1f 88 26 6b 3e db 91 bb 9c 7a 33 ec 7c a9 18 f0 ; 3081-3100 + 55 28 a3 04 52 fb e0 3d ec 82 b1 8a fa 70 0e 76 4c 40 53 f6 ; 3101-3120 + 3c 4f e6 86 ed 7f 25 cc cf 84 a1 01 64 02 4e 53 02 73 65 00 ; 3121-3140 + 00 2e 00 01 00 02 7b f3 00 96 00 01 05 03 00 02 a3 00 46 2f ; 3141-3160 + 66 45 46 27 06 d4 95 7b 02 73 65 00 d8 0b 9f 5a 79 a2 b5 a3 ; 3161-3180 + 03 af a6 c6 6d 46 0a c4 45 c8 2c 58 3f a8 eb a6 19 da 01 f2 ; 3181-3200 + d4 24 e4 83 99 93 6f 79 d0 c1 a1 29 9e 1f b3 e9 92 ab bd c5 ; 3201-3220 + 5f 2b 27 e1 4c 8a ec 4c 48 fb ac f7 05 34 6d d3 76 78 77 41 ; 3221-3240 + 8f 32 92 d3 38 35 4c 18 1b f9 67 7d e0 82 c8 91 69 9b f7 ec ; 3241-3260 + 7f c1 93 21 c8 2e e7 a8 95 0f 6f 2f 1c d0 f4 93 f8 09 18 07 ; 3261-3280 + cc d5 3e e7 88 26 f8 7c c8 6e 4c 3d 29 e8 22 82 af c3 f6 3c ; 3281-3300 + 01 65 02 4e 53 02 73 65 00 00 2e 00 01 00 02 7b f1 00 96 00 ; 3301-3320 + 01 05 03 00 02 a3 00 46 2f d6 16 46 27 06 d4 95 7b 02 73 65 ; 3321-3340 + 00 93 c6 b0 7d be 20 b2 2a da b5 20 c8 52 c7 06 3d 3f 0b 2b ; 3341-3360 + a2 2a d8 74 85 47 7c 8c 8d 6e f1 c1 4d ea ea e9 88 ad af d2 ; 3361-3380 + 5d 31 85 36 c6 9f e5 88 f2 4b 7e 94 cc 4a b7 29 68 ef 19 55 ; 3381-3400 + eb 0a f0 f3 12 07 3f a4 72 d9 dc 86 ab f3 9c 36 e1 ec 70 cd ; 3401-3420 + d3 cd 29 4d f4 c6 f3 b4 a6 b9 98 b7 63 66 8a 68 1a be 0c d7 ; 3421-3440 + 32 af 89 14 87 6d d0 32 62 02 69 4b 71 1c bb f9 d6 f1 72 7d ; 3441-3460 + a8 8b c3 1e af 97 75 36 9c 01 66 02 4e 53 02 73 65 00 00 2e ; 3461-3480 + 00 01 00 02 7b f1 00 96 00 01 05 03 00 02 a3 00 46 2f ca 31 ; 3481-3500 + 46 27 06 d4 95 7b 02 73 65 00 6f dd d9 ae 84 61 ea e3 a3 40 ; 3501-3520 + f0 dc 78 f3 db ad f8 a2 08 92 c1 f7 0a 66 65 2d 4b be d6 8d ; 3521-3540 + e2 a5 86 24 ff ed f8 f2 a2 87 b4 5a c2 c3 ee 3c 51 36 90 16 ; 3541-3560 + e0 de c3 30 43 eb c5 c2 d8 30 fe 93 3c c5 cd 32 74 46 ff 0c ; 3561-3580 + 32 c3 d8 1d cb 76 e0 0b 39 03 7f c8 07 58 50 2f 4d 69 20 1e ; 3581-3600 + e1 c3 4b 78 89 d1 f7 3f 80 42 9d 32 d2 cc f9 de de f7 47 b3 ; 3601-3620 + 3f 62 98 89 f7 94 14 cf 1b 42 e7 4f 3c 50 d9 f2 05 9a 01 66 ; 3621-3640 + 02 4e 53 02 73 65 00 00 2e 00 01 00 02 7b f1 00 96 00 1c 05 ; 3641-3660 + 03 00 02 a3 00 46 2f cc f8 46 27 06 d4 95 7b 02 73 65 00 56 ; 3661-3680 + 64 a5 e6 69 52 b9 6b 57 b1 0f 2a 8a 5b c5 2f 74 39 1d 6b 63 ; 3681-3700 + dd 06 01 5d a9 84 13 0f 1b b1 73 bb 3a 6e 2d 46 f3 83 b8 d3 ; 3701-3720 + f5 a8 40 41 05 2a a4 8e 0a c6 6c 6a 26 19 fd f8 ab e7 73 ce ; 3721-3740 + 52 a4 77 66 56 5b d4 26 42 00 30 9b 3d b0 93 4a 3d e4 70 ca ; 3741-3760 + 6f a0 2a 20 b6 cb d1 20 b8 05 2f 7c 44 4f 50 f6 8d 70 06 1a ; 3761-3780 + 7d 8e f5 88 f3 42 63 18 23 0c bc 5d 0a a5 ce 64 2b 4c 9f 3d ; 3781-3800 + 17 56 c2 64 aa 9c ef 01 67 02 4e 53 02 73 65 00 00 2e 00 01 ; 3801-3820 + 00 02 7b f3 00 96 00 01 05 03 00 02 a3 00 46 30 07 7e 46 27 ; 3821-3840 + 06 d4 95 7b 02 73 65 00 39 90 c1 fe 3d b9 69 33 6b 82 7d 36 ; 3841-3860 + 13 10 1d 14 b2 ca e8 4a e9 dd 32 38 aa a2 6e bf c9 96 32 a9 ; 3861-3880 + b5 8d e6 51 be bb 43 4a b6 24 a6 68 39 38 93 0d 20 4c 38 52 ; 3881-3900 + cb 6c b1 c8 9d ba f3 cd 36 32 43 65 5f 13 44 8e 0c 01 4e fd ; 3901-3920 + d0 ec f7 12 bd 97 8e 4a ac d9 0b 6c 4b 61 f2 17 26 ac a8 cd ; 3921-3940 + 6b a2 fb f6 54 56 53 03 a0 79 56 e4 b1 69 1f 6a 66 c7 f0 fc ; 3941-3960 + db c1 e2 6d 83 5f 2c 7b 9b 99 35 f5 a7 3d 4d 0a 01 67 02 4e ; 3961-3980 + 53 02 73 65 00 00 2e 00 01 00 02 7b f3 00 96 00 1c 05 03 00 ; 3981-4000 + 02 a3 00 46 2d cf 81 46 27 06 d4 95 7b 02 73 65 00 73 cf 2a ; 4001-4020 + 01 60 76 4a 11 2d 2d 98 62 b3 63 dc 42 4c be e9 e9 81 f3 fb ; 4021-4040 + c1 83 8b 1e d1 ab d3 73 1d a9 bc bc 25 35 5f ea dc 07 25 99 ; 4041-4060 + 09 6d b5 ac 9a 04 b2 17 5a c4 61 22 fe 96 a9 d0 16 90 44 18 ; 4061-4080 + 1d c1 6a 06 8d 2e 48 91 cf 36 75 75 26 5c ef 82 5e 73 4f 10 ; 4081-4100 + 51 1d ea fd 7d a9 db af 23 44 c1 73 62 98 a6 1e c6 61 5e 3e ; 4101-4120 + 20 b9 f8 ce 6a 39 3e fc 41 34 5e c7 9d fc 5e cb cb 0d e3 84 ; 4121-4140 + bb b2 a1 53 8f 01 68 02 4e 53 02 73 65 00 00 2e 00 01 00 02 ; 4141-4160 + 7b f1 00 96 00 01 05 03 00 02 a3 00 46 30 0c fe 46 27 06 d4 ; 4161-4180 + 95 7b 02 73 65 00 3f c3 f3 ff 24 18 26 47 e0 3c 6a bf 3a 96 ; 4181-4200 + 79 bc 62 52 b1 25 78 d3 71 4b b3 7d d9 60 c5 ca 89 34 75 1e ; 4201-4220 + 20 18 ef cf 8b bd 77 2a 7c 21 83 1f d1 0e f5 2a c9 5d 77 0b ; 4221-4240 + b2 b1 8d df d5 52 a7 b8 94 18 d4 42 70 cb 42 fc 4f ab 50 2f ; 4241-4260 + ce ac 3e dc c4 94 d3 d1 ae ac 12 70 4a e1 f8 a5 c4 06 dd 1b ; 4261-4280 + da f9 06 28 b3 3d 07 06 71 22 fc 3e f0 4d f0 94 b8 2d e9 40 ; 4281-4300 + 03 16 d7 96 ac 38 44 58 93 7f 8b 73 6e a3 00 00 29 10 00 00 ; 4301-4320 + 00 80 00 00 00 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + b4 e2 87 00 00 01 00 02 00 00 00 00 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 2e 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 06 05 02 00 01 ; 41- 60 + 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 ; 61- 80 + 62 73 02 6e 6c 00 5c 33 2b 93 5d f9 18 8f c6 7d f8 26 d2 d3 ; 81- 100 + da 50 a3 60 42 df 19 1b cb e7 40 4a 7b 88 bb 41 08 68 8f 27 ; 101- 120 + 7d 4f 05 17 86 89 08 a1 a3 7f 56 1f f4 91 db cc 8b 9b 8e a0 ; 121- 140 + 03 dc 03 d8 2a 35 f7 ed 2e 01 41 9d b2 42 de 3e 50 4a ab 45 ; 141- 160 + 9d ac cd 1c a0 90 51 12 be 6c ae 51 20 a5 34 b0 38 e9 83 1d ; 161- 180 + 99 57 d2 a6 2f 53 a2 4c 4e 97 47 c7 d9 43 72 a6 4a d2 83 be ; 181- 200 + ed f6 e4 34 6e 48 1b ae ed 2c c5 65 d0 ec 09 6e 6c 6e 65 74 ; 201- 220 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 ; 221- 240 + 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e ; 241- 260 + 65 74 6c 61 62 73 02 6e 6c 00 81 18 16 b9 0b 65 db e0 00 19 ; 261- 280 + 68 06 01 11 46 67 4e 8c 51 c6 66 46 78 d7 7a ec b4 1f 8a 1e ; 281- 300 + d7 3c 44 4a 55 b0 16 b5 25 b6 ad 25 2f 7d 24 16 d2 4e 08 67 ; 301- 320 + ac 95 fa b3 61 cc 13 9d 72 c2 22 76 9b d4 dc 17 6b 3e 58 d5 ; 321- 340 + c3 4b 6f b4 fa 60 17 68 46 57 b8 b5 f3 3d b7 f5 a5 df e3 e4 ; 341- 360 + bb 8c 6f 33 07 f2 c8 8f c7 ff 6c 13 72 8d 4c 54 a4 ae 70 29 ; 361- 380 + 24 72 ba 7d fe e7 c7 4d 18 e4 5d f1 24 17 9a 8e 79 e4 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + fe c1 85 00 00 01 00 09 00 03 00 06 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 2e 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 06 05 02 00 01 ; 41- 60 + 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 ; 61- 80 + 62 73 02 6e 6c 00 5c 33 2b 93 5d f9 18 8f c6 7d f8 26 d2 d3 ; 81- 100 + da 50 a3 60 42 df 19 1b cb e7 40 4a 7b 88 bb 41 08 68 8f 27 ; 101- 120 + 7d 4f 05 17 86 89 08 a1 a3 7f 56 1f f4 91 db cc 8b 9b 8e a0 ; 121- 140 + 03 dc 03 d8 2a 35 f7 ed 2e 01 41 9d b2 42 de 3e 50 4a ab 45 ; 141- 160 + 9d ac cd 1c a0 90 51 12 be 6c ae 51 20 a5 34 b0 38 e9 83 1d ; 161- 180 + 99 57 d2 a6 2f 53 a2 4c 4e 97 47 c7 d9 43 72 a6 4a d2 83 be ; 181- 200 + ed f6 e4 34 6e 48 1b ae ed 2c c5 65 d0 ec 09 6e 6c 6e 65 74 ; 201- 220 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 ; 221- 240 + 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e ; 241- 260 + 65 74 6c 61 62 73 02 6e 6c 00 81 18 16 b9 0b 65 db e0 00 19 ; 261- 280 + 68 06 01 11 46 67 4e 8c 51 c6 66 46 78 d7 7a ec b4 1f 8a 1e ; 281- 300 + d7 3c 44 4a 55 b0 16 b5 25 b6 ad 25 2f 7d 24 16 d2 4e 08 67 ; 301- 320 + ac 95 fa b3 61 cc 13 9d 72 c2 22 76 9b d4 dc 17 6b 3e 58 d5 ; 321- 340 + c3 4b 6f b4 fa 60 17 68 46 57 b8 b5 f3 3d b7 f5 a5 df e3 e4 ; 341- 360 + bb 8c 6f 33 07 f2 c8 8f c7 ff 6c 13 72 8d 4c 54 a4 ae 70 29 ; 361- 380 + 24 72 ba 7d fe e7 c7 4d 18 e4 5d f1 24 17 9a 8e 79 e4 09 6e ; 381- 400 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 ; 401- 420 + 00 a0 00 01 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f ; 421- 440 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ca ee ca 28 cd cf ; 441- 460 + f4 fd a5 6e 5c ad 3f d5 89 7c 06 69 93 30 93 f7 0f b2 43 07 ; 461- 480 + eb ad ce 8e f0 da 75 b9 5e 46 d5 28 40 9d 51 17 9e 2d 3d f3 ; 481- 500 + 85 1b dd 85 4a 82 9d 32 5c ff 27 c9 83 8f 36 04 89 94 52 3b ; 501- 520 + 01 29 01 62 36 1a 66 67 f7 43 16 5b 2a 19 77 d1 cc 73 7c 86 ; 521- 540 + 44 4c f5 d0 db a4 f5 ea 62 98 0f 18 9f 72 2c 73 5f cb 62 c2 ; 541- 560 + 7f 45 91 99 53 bb 70 44 93 3a f5 ea 3c 23 80 3f a6 19 06 33 ; 561- 580 + 3f 69 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 581- 600 + 00 01 51 80 00 a0 00 0f 05 02 00 01 51 80 46 4e f9 ff 46 27 ; 601- 620 + 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 8f 79 ; 621- 640 + 3e 49 68 56 05 e7 6c 01 6d f6 cf 6f f3 5d 5b cb e8 c1 ff fd ; 641- 660 + a2 45 de 61 25 44 0d 4f 47 ea 54 8a 46 0f 58 1a 43 dc b4 3b ; 661- 680 + 02 b4 a3 11 a2 c5 45 0a 4b b2 f1 7a 3b 39 8d b0 ad 02 2e 60 ; 681- 700 + 15 dd fb b5 66 3a e1 b7 6f 5c 2d ea 99 21 a1 7e d9 8c da d8 ; 701- 720 + 94 6f e5 fc 1c 1f 0a b2 f6 18 7f 11 66 54 37 ad 1d f1 72 32 ; 721- 740 + dd db 48 6b 53 4a 39 54 77 9b dc 54 f0 da 0c ae 94 7d 82 22 ; 741- 760 + 05 7f ab bb 3b 79 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 761- 780 + 00 2e 00 01 00 01 51 80 00 a0 00 10 05 02 00 01 51 80 46 4e ; 781- 800 + f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 801- 820 + 6c 00 ce 39 43 cf 06 19 80 eb 18 77 90 6a 43 52 d6 de 3a d0 ; 821- 840 + b3 5f 00 49 34 6e bd 2a 38 2b a1 4e 24 7a 59 03 c8 72 90 15 ; 841- 860 + c0 59 e0 8b aa da a9 06 f5 a8 25 5d 46 fc 46 d8 63 46 56 d0 ; 861- 880 + 34 b4 dd ae 6f f6 e6 41 bc ca cf f7 f0 66 be ba a1 cd 2e 9f ; 881- 900 + 06 91 fe 3c 08 b4 5d de ce 11 ee 22 6d e9 ec 2e 3b 97 60 d4 ; 901- 920 + 0e f8 de 63 ff a8 42 7f ab a9 26 90 b8 72 21 5d fd 80 f3 64 ; 921- 940 + 09 1f 0e 9c 89 6a 91 08 46 8b 09 6e 6c 6e 65 74 6c 61 62 73 ; 941- 960 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 02 00 01 ; 961- 980 + 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 ; 981-1000 + 62 73 02 6e 6c 00 9b a2 35 6e 53 03 58 22 75 43 ae 1a e2 51 ; 1001-1020 + 09 4e fb 37 0f 60 eb 77 0f bc 4d c0 27 e7 34 a4 3a 27 30 c0 ; 1021-1040 + 4d 45 ad 4b 4d a1 82 54 92 ad 47 95 2b 78 70 6b c4 c7 f4 a3 ; 1041-1060 + d3 55 77 51 09 ce 2a 6e d9 a2 5c 91 ed c1 14 91 0e 49 b5 4b ; 1061-1080 + 3c 08 3d c1 f0 dc 5d 82 48 97 be 3c eb d9 84 ce 7c 62 27 0c ; 1081-1100 + b4 92 65 80 5a 3f 39 af f6 96 08 cd 40 3c e2 06 6f 36 df dc ; 1101-1120 + ae 58 fb 9f fe b1 6a b1 fc 86 1d 7b 4d 7a 09 6e 6c 6e 65 74 ; 1121-1140 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 02 58 00 a0 00 23 ; 1141-1160 + 05 02 00 00 02 58 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e ; 1161-1180 + 65 74 6c 61 62 73 02 6e 6c 00 dc bc 30 a6 b8 6f f6 3b 07 af ; 1181-1200 + cb 44 32 80 97 70 f9 f0 17 a0 cf d4 f8 cd a0 0d 8f cb 31 3b ; 1201-1220 + 82 b8 8d e7 f0 76 26 28 5e 7f c9 06 a7 53 f2 29 4a 06 18 54 ; 1221-1240 + 9b 0d 9a 18 8d c1 95 51 31 6b 4e 9e 82 c0 40 33 7e 0f d4 29 ; 1241-1260 + 19 b1 ee 96 41 97 ff f8 ea 14 0c d0 f2 fc 1c 41 95 c8 2f 82 ; 1261-1280 + b0 8c 62 1f b7 d0 ea a4 f1 4e 35 0b 85 23 2f ba 44 bd 05 c4 ; 1281-1300 + 2a 47 f8 62 e1 80 d8 76 fb 8e 89 4f 87 66 19 69 7a 57 09 6e ; 1301-1320 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 46 50 ; 1321-1340 + 00 a0 00 2f 05 02 00 00 46 50 46 4e f9 ff 46 27 6c ff ab 0f ; 1341-1360 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 42 6f f9 6d 68 59 ; 1361-1380 + 0c c9 c2 43 f4 1a fd eb f1 2b 42 48 9c 77 87 fe 92 d6 c4 3e ; 1381-1400 + ba e5 03 ee 23 99 18 7f 49 46 83 d1 b0 2b f9 eb 62 5d be a5 ; 1401-1420 + 9f 74 43 d3 36 27 cb 61 54 20 c5 6f e7 62 17 d9 07 5f e5 bb ; 1421-1440 + 73 4d 93 ca d5 35 d7 06 e2 56 78 44 65 ed 08 a7 c3 e0 c5 db ; 1441-1460 + fc 07 56 9b e5 0d 4b ab 53 95 11 7f 50 10 3f 78 5b 58 f6 e7 ; 1461-1480 + 31 35 11 80 b1 bc 99 ec a0 e6 59 dc cd 39 4f ae 31 bc df e1 ; 1481-1500 + 6d 0d 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 1501-1520 + 00 01 51 80 00 a0 00 30 05 02 00 01 51 80 46 4e f9 ff 46 27 ; 1521-1540 + 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 4e ca ; 1541-1560 + 77 bd 35 15 34 fc b0 14 74 ed 4e d0 c3 52 e8 36 d5 80 86 ec ; 1561-1580 + fc 06 65 af f0 37 48 56 a1 a3 4e 25 c9 55 a6 f1 35 85 e2 75 ; 1581-1600 + c1 2d 4e 28 a0 70 7d 9c 03 9f 6c d2 94 2f 7e 20 a1 9a 80 64 ; 1601-1620 + 22 0f 95 24 e1 ad 91 eb 5a 78 73 a5 65 3a eb 29 09 fb 37 37 ; 1621-1640 + 9b 7c be 32 f7 d2 ab ba 88 28 3c 4e 92 24 8d 83 0f 3a 1e 4e ; 1641-1660 + 60 be 00 95 6b e5 4c c2 6c df f8 93 8b da 6f f7 a7 a5 e8 11 ; 1661-1680 + 2c 25 df 8d d2 7f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 1681-1700 + 00 02 00 01 00 01 51 80 00 13 04 6f 70 65 6e 09 6e 6c 6e 65 ; 1701-1720 + 74 6c 61 62 73 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 02 ; 1721-1740 + 6e 6c 00 00 02 00 01 00 01 51 80 00 11 05 6f 6d 76 61 6c 06 ; 1741-1760 + 74 65 64 6e 65 74 02 6e 6c 00 09 6e 6c 6e 65 74 6c 61 62 73 ; 1761-1780 + 02 6e 6c 00 00 02 00 01 00 01 51 80 00 18 03 6e 73 37 0f 64 ; 1781-1800 + 6f 6d 61 69 6e 2d 72 65 67 69 73 74 72 79 02 6e 6c 00 03 6e ; 1801-1820 + 73 37 0f 64 6f 6d 61 69 6e 2d 72 65 67 69 73 74 72 79 02 6e ; 1821-1840 + 6c 00 00 01 00 01 00 00 44 09 00 04 3e 04 56 e6 04 6f 70 65 ; 1841-1860 + 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 01 00 01 00 ; 1861-1880 + 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e 6c 6e 65 74 ; 1881-1900 + 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 00 10 20 01 ; 1901-1920 + 07 b8 02 06 00 01 00 00 00 00 00 00 00 53 04 6f 70 65 6e 09 ; 1921-1940 + 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 ; 1941-1960 + 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 01 05 ; 1961-1980 + 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 00 01 00 01 ; 1981-2000 + 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c 06 74 65 64 ; 2001-2020 + 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 10 20 01 07 ; 2021-2040 + b8 02 06 00 01 02 00 39 ff fe 59 b1 87 +; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +;-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + 56 4e 85 00 00 01 00 09 00 04 00 09 09 6e 6c 6e 65 74 6c 61 ; 1- 20 + 62 73 02 6e 6c 00 00 2e 00 01 09 6e 6c 6e 65 74 6c 61 62 73 ; 21- 40 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 06 05 02 00 01 ; 41- 60 + 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 ; 61- 80 + 62 73 02 6e 6c 00 5c 33 2b 93 5d f9 18 8f c6 7d f8 26 d2 d3 ; 81- 100 + da 50 a3 60 42 df 19 1b cb e7 40 4a 7b 88 bb 41 08 68 8f 27 ; 101- 120 + 7d 4f 05 17 86 89 08 a1 a3 7f 56 1f f4 91 db cc 8b 9b 8e a0 ; 121- 140 + 03 dc 03 d8 2a 35 f7 ed 2e 01 41 9d b2 42 de 3e 50 4a ab 45 ; 141- 160 + 9d ac cd 1c a0 90 51 12 be 6c ae 51 20 a5 34 b0 38 e9 83 1d ; 161- 180 + 99 57 d2 a6 2f 53 a2 4c 4e 97 47 c7 d9 43 72 a6 4a d2 83 be ; 181- 200 + ed f6 e4 34 6e 48 1b ae ed 2c c5 65 d0 ec 09 6e 6c 6e 65 74 ; 201- 220 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 02 ; 221- 240 + 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e ; 241- 260 + 65 74 6c 61 62 73 02 6e 6c 00 81 18 16 b9 0b 65 db e0 00 19 ; 261- 280 + 68 06 01 11 46 67 4e 8c 51 c6 66 46 78 d7 7a ec b4 1f 8a 1e ; 281- 300 + d7 3c 44 4a 55 b0 16 b5 25 b6 ad 25 2f 7d 24 16 d2 4e 08 67 ; 301- 320 + ac 95 fa b3 61 cc 13 9d 72 c2 22 76 9b d4 dc 17 6b 3e 58 d5 ; 321- 340 + c3 4b 6f b4 fa 60 17 68 46 57 b8 b5 f3 3d b7 f5 a5 df e3 e4 ; 341- 360 + bb 8c 6f 33 07 f2 c8 8f c7 ff 6c 13 72 8d 4c 54 a4 ae 70 29 ; 361- 380 + 24 72 ba 7d fe e7 c7 4d 18 e4 5d f1 24 17 9a 8e 79 e4 09 6e ; 381- 400 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 ; 401- 420 + 00 a0 00 01 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f ; 421- 440 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ca ee ca 28 cd cf ; 441- 460 + f4 fd a5 6e 5c ad 3f d5 89 7c 06 69 93 30 93 f7 0f b2 43 07 ; 461- 480 + eb ad ce 8e f0 da 75 b9 5e 46 d5 28 40 9d 51 17 9e 2d 3d f3 ; 481- 500 + 85 1b dd 85 4a 82 9d 32 5c ff 27 c9 83 8f 36 04 89 94 52 3b ; 501- 520 + 01 29 01 62 36 1a 66 67 f7 43 16 5b 2a 19 77 d1 cc 73 7c 86 ; 521- 540 + 44 4c f5 d0 db a4 f5 ea 62 98 0f 18 9f 72 2c 73 5f cb 62 c2 ; 541- 560 + 7f 45 91 99 53 bb 70 44 93 3a f5 ea 3c 23 80 3f a6 19 06 33 ; 561- 580 + 3f 69 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 581- 600 + 00 01 51 80 00 a0 00 0f 05 02 00 01 51 80 46 4e f9 ff 46 27 ; 601- 620 + 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 8f 79 ; 621- 640 + 3e 49 68 56 05 e7 6c 01 6d f6 cf 6f f3 5d 5b cb e8 c1 ff fd ; 641- 660 + a2 45 de 61 25 44 0d 4f 47 ea 54 8a 46 0f 58 1a 43 dc b4 3b ; 661- 680 + 02 b4 a3 11 a2 c5 45 0a 4b b2 f1 7a 3b 39 8d b0 ad 02 2e 60 ; 681- 700 + 15 dd fb b5 66 3a e1 b7 6f 5c 2d ea 99 21 a1 7e d9 8c da d8 ; 701- 720 + 94 6f e5 fc 1c 1f 0a b2 f6 18 7f 11 66 54 37 ad 1d f1 72 32 ; 721- 740 + dd db 48 6b 53 4a 39 54 77 9b dc 54 f0 da 0c ae 94 7d 82 22 ; 741- 760 + 05 7f ab bb 3b 79 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 761- 780 + 00 2e 00 01 00 01 51 80 00 a0 00 10 05 02 00 01 51 80 46 4e ; 781- 800 + f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e ; 801- 820 + 6c 00 ce 39 43 cf 06 19 80 eb 18 77 90 6a 43 52 d6 de 3a d0 ; 821- 840 + b3 5f 00 49 34 6e bd 2a 38 2b a1 4e 24 7a 59 03 c8 72 90 15 ; 841- 860 + c0 59 e0 8b aa da a9 06 f5 a8 25 5d 46 fc 46 d8 63 46 56 d0 ; 861- 880 + 34 b4 dd ae 6f f6 e6 41 bc ca cf f7 f0 66 be ba a1 cd 2e 9f ; 881- 900 + 06 91 fe 3c 08 b4 5d de ce 11 ee 22 6d e9 ec 2e 3b 97 60 d4 ; 901- 920 + 0e f8 de 63 ff a8 42 7f ab a9 26 90 b8 72 21 5d fd 80 f3 64 ; 921- 940 + 09 1f 0e 9c 89 6a 91 08 46 8b 09 6e 6c 6e 65 74 6c 61 62 73 ; 941- 960 + 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 02 00 01 ; 961- 980 + 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 ; 981-1000 + 62 73 02 6e 6c 00 9b a2 35 6e 53 03 58 22 75 43 ae 1a e2 51 ; 1001-1020 + 09 4e fb 37 0f 60 eb 77 0f bc 4d c0 27 e7 34 a4 3a 27 30 c0 ; 1021-1040 + 4d 45 ad 4b 4d a1 82 54 92 ad 47 95 2b 78 70 6b c4 c7 f4 a3 ; 1041-1060 + d3 55 77 51 09 ce 2a 6e d9 a2 5c 91 ed c1 14 91 0e 49 b5 4b ; 1061-1080 + 3c 08 3d c1 f0 dc 5d 82 48 97 be 3c eb d9 84 ce 7c 62 27 0c ; 1081-1100 + b4 92 65 80 5a 3f 39 af f6 96 08 cd 40 3c e2 06 6f 36 df dc ; 1101-1120 + ae 58 fb 9f fe b1 6a b1 fc 86 1d 7b 4d 7a 09 6e 6c 6e 65 74 ; 1121-1140 + 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 02 58 00 a0 00 23 ; 1141-1160 + 05 02 00 00 02 58 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e ; 1161-1180 + 65 74 6c 61 62 73 02 6e 6c 00 dc bc 30 a6 b8 6f f6 3b 07 af ; 1181-1200 + cb 44 32 80 97 70 f9 f0 17 a0 cf d4 f8 cd a0 0d 8f cb 31 3b ; 1201-1220 + 82 b8 8d e7 f0 76 26 28 5e 7f c9 06 a7 53 f2 29 4a 06 18 54 ; 1221-1240 + 9b 0d 9a 18 8d c1 95 51 31 6b 4e 9e 82 c0 40 33 7e 0f d4 29 ; 1241-1260 + 19 b1 ee 96 41 97 ff f8 ea 14 0c d0 f2 fc 1c 41 95 c8 2f 82 ; 1261-1280 + b0 8c 62 1f b7 d0 ea a4 f1 4e 35 0b 85 23 2f ba 44 bd 05 c4 ; 1281-1300 + 2a 47 f8 62 e1 80 d8 76 fb 8e 89 4f 87 66 19 69 7a 57 09 6e ; 1301-1320 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 00 46 50 ; 1321-1340 + 00 a0 00 2f 05 02 00 00 46 50 46 4e f9 ff 46 27 6c ff ab 0f ; 1341-1360 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 42 6f f9 6d 68 59 ; 1361-1380 + 0c c9 c2 43 f4 1a fd eb f1 2b 42 48 9c 77 87 fe 92 d6 c4 3e ; 1381-1400 + ba e5 03 ee 23 99 18 7f 49 46 83 d1 b0 2b f9 eb 62 5d be a5 ; 1401-1420 + 9f 74 43 d3 36 27 cb 61 54 20 c5 6f e7 62 17 d9 07 5f e5 bb ; 1421-1440 + 73 4d 93 ca d5 35 d7 06 e2 56 78 44 65 ed 08 a7 c3 e0 c5 db ; 1441-1460 + fc 07 56 9b e5 0d 4b ab 53 95 11 7f 50 10 3f 78 5b 58 f6 e7 ; 1461-1480 + 31 35 11 80 b1 bc 99 ec a0 e6 59 dc cd 39 4f ae 31 bc df e1 ; 1481-1500 + 6d 0d 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 1501-1520 + 00 01 51 80 00 a0 00 30 05 02 00 01 51 80 46 4e f9 ff 46 27 ; 1521-1540 + 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 4e ca ; 1541-1560 + 77 bd 35 15 34 fc b0 14 74 ed 4e d0 c3 52 e8 36 d5 80 86 ec ; 1561-1580 + fc 06 65 af f0 37 48 56 a1 a3 4e 25 c9 55 a6 f1 35 85 e2 75 ; 1581-1600 + c1 2d 4e 28 a0 70 7d 9c 03 9f 6c d2 94 2f 7e 20 a1 9a 80 64 ; 1601-1620 + 22 0f 95 24 e1 ad 91 eb 5a 78 73 a5 65 3a eb 29 09 fb 37 37 ; 1621-1640 + 9b 7c be 32 f7 d2 ab ba 88 28 3c 4e 92 24 8d 83 0f 3a 1e 4e ; 1641-1660 + 60 be 00 95 6b e5 4c c2 6c df f8 93 8b da 6f f7 a7 a5 e8 11 ; 1661-1680 + 2c 25 df 8d d2 7f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 ; 1681-1700 + 00 02 00 01 00 01 51 80 00 18 03 6e 73 37 0f 64 6f 6d 61 69 ; 1701-1720 + 6e 2d 72 65 67 69 73 74 72 79 02 6e 6c 00 09 6e 6c 6e 65 74 ; 1721-1740 + 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 13 04 6f ; 1741-1760 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 09 6e 6c ; 1761-1780 + 6e 65 74 6c 61 62 73 02 6e 6c 00 00 02 00 01 00 01 51 80 00 ; 1781-1800 + 11 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 09 6e ; 1801-1820 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 ; 1821-1840 + 00 a0 00 02 05 02 00 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f ; 1841-1860 + 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 81 18 16 b9 0b 65 ; 1861-1880 + db e0 00 19 68 06 01 11 46 67 4e 8c 51 c6 66 46 78 d7 7a ec ; 1881-1900 + b4 1f 8a 1e d7 3c 44 4a 55 b0 16 b5 25 b6 ad 25 2f 7d 24 16 ; 1901-1920 + d2 4e 08 67 ac 95 fa b3 61 cc 13 9d 72 c2 22 76 9b d4 dc 17 ; 1921-1940 + 6b 3e 58 d5 c3 4b 6f b4 fa 60 17 68 46 57 b8 b5 f3 3d b7 f5 ; 1941-1960 + a5 df e3 e4 bb 8c 6f 33 07 f2 c8 8f c7 ff 6c 13 72 8d 4c 54 ; 1961-1980 + a4 ae 70 29 24 72 ba 7d fe e7 c7 4d 18 e4 5d f1 24 17 9a 8e ; 1981-2000 + 79 e4 03 6e 73 37 0f 64 6f 6d 61 69 6e 2d 72 65 67 69 73 74 ; 2001-2020 + 72 79 02 6e 6c 00 00 01 00 01 00 00 43 f3 00 04 3e 04 56 e6 ; 2021-2040 + 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 ; 2041-2060 + 01 00 01 00 01 51 80 00 04 d5 9a e0 01 04 6f 70 65 6e 09 6e ; 2061-2080 + 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 01 00 01 51 80 ; 2081-2100 + 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 00 00 53 04 6f ; 2101-2120 + 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 1c 00 ; 2121-2140 + 01 00 01 51 80 00 10 20 01 07 b8 02 06 00 01 00 00 00 00 00 ; 2141-2160 + 00 00 01 05 6f 6d 76 61 6c 06 74 65 64 6e 65 74 02 6e 6c 00 ; 2161-2180 + 00 01 00 01 00 00 70 80 00 04 d5 9a e0 11 05 6f 6d 76 61 6c ; 2181-2200 + 06 74 65 64 6e 65 74 02 6e 6c 00 00 1c 00 01 00 00 70 80 00 ; 2201-2220 + 10 20 01 07 b8 02 06 00 01 02 00 39 ff fe 59 b1 87 04 6f 70 ; 2221-2240 + 65 6e 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 00 2e 00 01 ; 2241-2260 + 00 01 51 80 00 a0 00 01 05 03 00 01 51 80 46 4e f9 ff 46 27 ; 2261-2280 + 6c ff ab 0f 09 6e 6c 6e 65 74 6c 61 62 73 02 6e 6c 00 bd 11 ; 2281-2300 + d7 c8 6f 7f f1 b8 d7 6c 2e c0 eb 5b 65 6c 5e 32 bc ba 0e 50 ; 2301-2320 + c6 d2 b2 65 71 81 44 6e 2a 22 3c 98 39 16 71 f1 56 2d 8f 0d ; 2321-2340 + 02 8a e8 7d ad 93 f1 f6 85 d0 fc 19 13 26 de 5a 1f ee 33 7d ; 2341-2360 + f0 9b 5b 15 63 1a a6 33 55 d4 d3 23 4f c5 ac cf 48 71 f5 ed ; 2361-2380 + 44 17 eb d3 db fe 98 ea 7e fb b3 7d 8f 2a 6b f7 87 af 15 aa ; 2381-2400 + 78 ee cb e5 24 2b 04 46 a9 e2 96 fa 41 2a 99 42 5d 3e 22 07 ; 2401-2420 + b9 bc 99 62 ad 61 04 6f 70 65 6e 09 6e 6c 6e 65 74 6c 61 62 ; 2421-2440 + 73 02 6e 6c 00 00 2e 00 01 00 01 51 80 00 a0 00 1c 05 03 00 ; 2441-2460 + 01 51 80 46 4e f9 ff 46 27 6c ff ab 0f 09 6e 6c 6e 65 74 6c ; 2461-2480 + 61 62 73 02 6e 6c 00 a7 45 db c2 3c 05 77 76 03 b8 7e e7 9c ; 2481-2500 + 3d 64 12 7c 9d f9 17 f2 a0 4a 94 74 19 bd a3 6b 3e 62 da e6 ; 2501-2520 + 87 0e 07 1d fb 5c 5c 0e f9 ab 97 87 71 c1 78 d4 b5 b0 21 65 ; 2521-2540 + fe 26 95 40 ed b4 d6 0c f5 ce a1 34 32 2a 54 1e e0 b5 34 0f ; 2541-2560 + 71 01 8f bf 66 48 d7 a7 12 85 a5 a0 25 d2 5c 5f 3a 15 87 b5 ; 2561-2580 + bd 4a 3c 0c 34 4b 48 21 48 ac d7 92 02 6b 28 55 35 28 8b b6 ; 2581-2600 + cf 72 b4 2c c3 22 88 8b b0 75 80 0c 35 13 02 00 00 29 10 00 ; 2601-2620 + 00 00 80 00 00 00 diff --git a/external/unbound/testdata/test_packets.5 b/external/unbound/testdata/test_packets.5 new file mode 100644 index 0000000..907ac9b --- /dev/null +++ b/external/unbound/testdata/test_packets.5 @@ -0,0 +1,70 @@ +; Hand made test packets. +; By Wouter Wijngaards. +; These DNS packets contain interesting compression cases. +; +;-- next packet -- +; 0. A valid packet (handmade) +; id flags qd an ns ar -- header +4242 0000 0001 0001 0000 0000 +; query: qname example.com. qtype A(1) qclass IN(1) +07 6578616d706c65 03 636f6d 00 0001 0001 +; answer: example.com type class ttl rdatalen 10.x address. +07 6578616d706c65 03 636f6d 00 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 0b. correct compression from answer to query. +4242 0000 0001 0001 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +c00c 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 1. Compression from query to answer. +4242 0000 0001 0001 0000 0000 +c012 0001 0001 +07 6578616d706c65 03 636f6d 00 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 2. Compression loop answer 1 to answer 2. +4242 0000 0001 0002 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +c02d 0001 0001 00000101 0004 0a203040 +07 6578616d706c65 03 636f6d 00 0001 0001 00000101 0004 0a203050 + +;-- next packet -- +; 2b. Compression loop answer 2 to answer 1. +4242 0000 0001 0002 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +07 6578616d706c65 03 636f6d 00 0001 0001 00000101 0004 0a203050 +c01d 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 3. Compression loop to self (in answer section). +4242 0000 0001 0001 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +c01d 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 4. bad compression pointer - to header. +4242 0000 0001 0001 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +c004 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 5. bad compression pointer - exceeds packet. +4242 0000 0001 0001 0000 0000 +07 6578616d706c65 03 636f6d 00 0001 0001 +c0bb 0001 0001 00000101 0004 0a203040 + +;-- next packet -- +; 6. double OPT record. +; id flags qd an ns ar -- header +4242 0000 0001 0001 0000 0002 +; query: qname example.com. qtype A(1) qclass IN(1) +07 6578616d706c65 03 636f6d 00 0001 0001 +; answer: example.com type class ttl rdatalen 10.x address. +07 6578616d706c65 03 636f6d 00 0001 0001 00000101 0004 0a203040 +; additional: . OPT 4096 +00 0029 1000 00000000 0000 +; additional: . OPT 4096 +00 0029 1000 00000001 0000 + diff --git a/external/unbound/testdata/test_packets.6 b/external/unbound/testdata/test_packets.6 new file mode 100644 index 0000000..70f111e --- /dev/null +++ b/external/unbound/testdata/test_packets.6 @@ -0,0 +1,22 @@ +; test packets for unit test +;-- next packet -- +; test packet from nlnetlabs.nl ANY +dnssec last SRV has RRSIG first. + +63578490000100190000000D096E6C6E65746C616273026E6C0000FF0001C00C00060001000151800028046F70656EC00C0A686F73746D6173746572C00C77A1A1BB0000708000001C2000093A8000004650C00C002E000100000E1000A00030050200000E1046E6941D46C1AA1D4706096E6C6E65746C616273026E6C00066B3C47EA4915422B5D312C4221165E01BAA2578D947B0485E01336C355EC4ED3A98BBB7BDDEE50F1DD9CB6D0F535AECB7FC1FD2ED465A416245D69652B6A5D85A441618575ACE9E8DF7EB7E8FE887CD5932D5BEB4DA166DDAA6124F7FD4115C4F0A0534E938C7DE9E77E5C37DC43E279F39C6CD893EA788E39958785C53BEDC070002E000100000E1001200030050200000E1046E6941D46C1AA1D9003096E6C6E65746C616273026E6C00B7AEBD8B1306D263E891326B3C92177676BF25E7795B837532591333E214C04096B7E420CC18C797B81F0A3FA577C364A7D4D36A1284723B3DA04CD120F94A4F07EF98FDBA07A44012BDA0C18091F8AE8FA9F2EDB5F6203664DF945FFCA8087B98823FEB0DC87470F9897A40E43D122A3C4717AF728DC7AE08B3A7CC2F56B7F7B0F9261F9DDC61A30DC06D8B73C8CE1EC2DD011034DB5AABA0A738426014BE076BB7015BA269EED5D9A9BCFEF8767A0D7B09644C50476C2EF49C10A138077EC3BDB2D75DB8AE64E766C855D108F374FD22063564A9B6 +1254931B60E0572F4CC42874387E9063748F0C828A27C85BE31183CF6F97739EAD719415FD8DD506E074C11C002E000100000E1000A00030050200000E1046E6941D46C1AA1DAB0F096E6C6E65746C616273026E6C0065258E476A661AF6EB0C7B3FB6511A9E8D96C0D86B9563DD0BD3A3FE751F25CE324AB06F7FB00584C82CC4CB293B9321A890194B0ECF1953A202FF0A172E5028D1476D0F854E0D6F14E529329ED991E5CCEE57E0D96C6E74D6F4D58823B978FAF56221F0A8DFB295E50CD20CC70A8812D5CABD6D8C02966D3FBF414F0236DE8CC2480030000100000E100086010003050103A96D8AD435A850015E7FC13089F7FC1B48CFDE57E37E8D864032620A9FA405DD9E7B07ABA981C8D51C43B216403761C22DE45CFE5AAA1D0AB0019F8A9285DEAA25847C88FDD2E9F8CDE8F569963323AE1B29FFAC95737D02E9CECFD9BFE6816662E62602E7A9647A00ECD1519F016E479A8B0A8D056860C8CEB4DA3717E30643C2480030000100000E100106010103050103BA4ED88EABBB996BCC07AD0354193DD95EE75A1A39DB76E527C8BC3D5B088311DF15CB5028E0554AEF1A84005A3817980E91D1ABE98ED7CF417E6797B501A425BE10618EE8EF2213D9E4422E34690651B45360B8555F938950731876B5E918F7721BE5754C14E6C49FFE3A651D916893D89EB0E57529498441FA9D2463019FEEEC4F3BF70336 +9EBB7C82EDC75F9D76E4B7D01ED0CA038AF9FECF78064371D068DAAB32E6B9C1B0FB0B85B129769585B3658F4D5A34206600111DE71BA599A6D8AAF0E6006F52B6D8AF22FA3F3E843C2F3510CC8D679531E6C16576CD406930B06809B08B1AA067D5393DD675E2710EEF46A8E0CCFFF9B06714EF3BB4AD6CE86DC2480030000100000E100086010103050103F3CD358CCFCA925884257D19CF724C7606256691537A2CFBA93B799BCFB1612D29E6DBA9FA886F4D2DBCBDEC98B8E77696658DCCE7FC49052392DAF5AD728DADF02D3EC5E3B56DCFDDE994F2DF60C7721A56EAB0C7D6FA7CE8B97E85AD2D9B0CB2F503FBCB66D5C39CD26C50AB79F93CA8250181F1E6F5B1F3306D54058B4421C248002E00010000025800A0002305020000025846E6941D46C1AA1D4706096E6C6E65746C616273026E6C006F0EFD5F3606CDC8501772579B48A24A3522EB2E05A6908BFC9329A63AE2D31640F05B5D26A5ED591A789A705FC54A8D61AB08399F75DCB51380CE647D078670D8330DB2F58517FC74CEF1F9636759C188B8D6FCDE3844411A1F24DA06E371DF17C70F897D1AC23EEFC1CE720E365EF4F4B852BBD25152FB0AEEAEDE0F622A58C52A00230001000002580027001400000173075349502B44325500045F736970045F756470096E6C6E65746C616273026E6C00C5DD002E00010001518000A0001C05020001518046 +E6941D46C1AA1D4706096E6C6E65746C616273026E6C00816A6DF6B45D28B9EFEDA508223F84B8EA9FDBC1122D6758E1DC9BF1379B0DE7305AF63A978EF6B4EB6920083B82A30D24A119C233905F24CFC3EB29782C650FE87699D8CAD2AFF98A790A936F11E29F44D9C0F3A5A4986475DC637AC42018A3377313BE8A3A2C59E67A0B390A4AE9647FCA295A0BE6891B616BB274AB3662C4C609001C0001000151800010200107B8020600010000000000000001C609002E00010001518000A0001005020001518046E6941D46C1AA1D4706096E6C6E65746C616273026E6C0084B11D5C675C84EFF41B5E672E297B4B7171FCF14092236ADC7B356ED4A9A67997A4F4B666C36873EDF3A800BEB4274C4277C408917621F8D380C3A3726FCBA82FF8ED46E5F07DE5AE936993640A62A3F2D2C26EB1DE93E56DE1A277128A442D7AFDEFD264856C35AD59A06A8E881B2CB7205E79805A59B2ACE1A15EDF151338C6D10010000100015180001A19537469636874696E67204E4C6E6574204C616273207A6F6E65C6D1002E00010001518000A0000F05020001518046E6941D46C1AA1D4706096E6C6E65746C616273026E6C0032FBD313E442240AD077248B87DB4CA1B8BB8AEC94B2E815293DDC93093E10E29D1920BCBF2F84244DD58FB9707C6380D171DDB1B39239305C6FDA81E0AFA8E59C4596D3774CB4939B80CA9473558D +AA3CB31FD2E8D756F425A80CDA9EDB48A9547582F998D363D8D64E45E65EFECA8BD11B3036D2B8B1DFF0FFD0F703CE7BB6C7A3000F00010001518000040032C02AC7A3000F00010001518000110064056F6D76616C067465646E6574C7ADC7A3002E00010001518000A0000605020001518046E6941D46C1AA1D4706096E6C6E65746C616273026E6C0087059806E37D4CFEC617C733F1841B9EB5DBA3F02E7E105E9D23A9998C34F276FE032A83758FA6B4D30A540BCCB0D82AAA1903C8CDF34377712556B08A227613F40FB3A129B6205B16A377227EE682ED9D6F22069BFA24E50FD485C525DE6D1813B056F9AEF2C0CE408BBA7A3E8D9347AA648849B7896275BE6D7EC443B6E1A0C87C002E00010001518000A0000205020001518046E6941D46C1AA1D4706096E6C6E65746C616273026E6C007588829ABDACCB921070102946174422ECB1057BF9B1DF3A6A179FB03E7CA698C967FDD34EF0973142B6471B161981B0BF9EE066608744D8A60EDC873EFC8461E055915D924BC2FEBCF5DC22D1468EAD2C27D167112FEC0F3C079A91F279EC0925CE54F2AD1EA280D973584633DE119D32F16EAAD012A052D6C66690799AD1D4C92800020001000151800002C02AC92800020001000151800016036E73370F646F6D61696E2D7265676973747279C932C92800020001000151800002C84FC928002E00010001518000A0 +000105020001518046E6941D46C1AA1D4706096E6C6E65746C616273026E6C004A8FDD14D1F4655452A6C5A9321434B9A4FC73C1D63E7D30030D716AC1ABBB37E208319F2A80111D211EE6D8A47FF4084401353FD65B2F50CB6D3EC0C9593CFA53630E75AAEB483C70E9B5B754B5EAD88DDCC2B0EE8D9BA4BAC3F8643BE12A3BD9CE6051BDDE14C46CE9608B935F004C0828ECF0C7958E272F71F67DE8DDDE72CA1200010001000151800004D59AE001CA12002E00010000465000A0002F05020000465046E6941D46C1AA1D4706096E6C6E65746C616273026E6C000E85A6563F289CC81E360B46EC09C30D0B16B3E7C75DB01C6F7544594425237D38D02FCC3C304F904DE3617D195BBA1F0642C2906E1F91C8D4CC7E34903837607AC1FEE5A9F1AA22596EDEC40AAD323EC8F9845F2A17C94F266C0F30E604E1C6A38124EA2A5F87E3522A7E100E4A2B85059FDF9C2716DAC5D735CE111237F395CACE002F0001000046500021045F736970045F756470096E6C6E65746C616273026E6C00000762018008100380066A6F686E6E79CB7200010001000002580004D59AE02CC02A00010001000002580004D59AE001C02A001C0001000002580010200107B8020600010000000000000001C02A001C0001000002580010200107B8020600010000000000000053C84F00010001000070800004D59AE011C84F001C00010000 +70800010200107B802060001020039FFFE59B187C9D0000100010000FE8B00043E0456E6CB68002E00010000025800A0002105040000025846E6941D46C1AA1D4706096E6C6E65746C616273026E6C0098CEBAD0E8783AE7234B216005CD368086EAE5879C25181A0FF4533F5FE60D5E818D6B10AA5D96D57B9648CD1A530184D128AD1F04BF03316563383A85BF22F8E0E8E2551F419BEFBE849B2C6510A4471D7A285DD071511AF1AEB555A2DDBEDFE535717C1384FA130CEAC5EE86B07A61FAB69C3CEA143FC6AE5006D2152E9CFDCB89002E00010000025800A0000105030000025846E6941C46C1AA1C4706096E6C6E65746C616273026E6C00432C065713ABF3D8C9C40E1A46EF6FE49F2060689C281BACDDC98ECD06F3D354D77B2216E4EE408D080F9DF86F0F1C427B772D32EDCEE989B2AC8D76615E59E6FD11A1A963D5CEEB40F05C04CC4752A7308739B3C6C9C06A92D65522AB674AD2C27DC5DAC91044DE85A5D8126E170E515C52A642F51FB24323DEE893AF9995DCC02A002E00010000025800A0000105030000025846E6941C46C1AA1C4706096E6C6E65746C616273026E6C000EBC0704DD6A076244351A27EE61E35EA294A2E6726C919E8BF33BDF7DC97913FE54C1EAAE26624C3F852C77BA1356AF771C3AC6636A3C23DE82AB03FE9F72515E6289D18779083006FE38152773E0AD6A3E9831006B9EA6 +490EEAFE1359AC9FF23F1189E303B838C5D4F3BBDE4FDFC531F1B1095E8BB301F5F8F17C2F20B526C02A002E00010000025800A0001C05030000025846E6941C46C1AA1C4706096E6C6E65746C616273026E6C006D9C956476F8A04DE789F4439DFFB289AED649EC80320B0A68AE004FD5B39D5F3A955B18AB2DB535662B624FC36ECCBAEC421C7C3D3C2E67ADE6B284AE424974BF24CFAC9A6C3AF9541E70C4D4B8F196419D34C7686D5D95693C4C75B560E543BAED77EF343C1D14F0C5CC842757ABC86B6EC9A8C41F38AEF12B9E7886B1251ECB680021000100000258001B0000000013C4066A6F686E6E79096E6C6E65746C616273026E6C000000291000000080000000 + +;-- next packet -- +; this packet contains a SOA record, the +; comrite.com. 86400 IN SOA ns15.domaincontrol.com. dns.jomax.net. 2006092800 28800 7200 604800 86400 +; with dns.jomax.net. having its root label compressed 0xc040. +00588400000100000001000007 +636F6D7269746503636F6D00001C0001C00C0006000100015180003C046E7331350D646F6D61696E +636F6E74726F6C03636F6D0003646E73056A6F6D6178036E6574C04077928C000000708000001C20 +00093A8000015180 + diff --git a/external/unbound/testdata/test_packets.7 b/external/unbound/testdata/test_packets.7 new file mode 100644 index 0000000..357fa40 --- /dev/null +++ b/external/unbound/testdata/test_packets.7 @@ -0,0 +1,37 @@ +; switch.ch ANY with strange RRSIG ordering. + +B0518510000100170000001A067377697463680263680000FF0001C00C0006000100015180002A067363736E6D73C00C0A686F73746D6173746572C00C77C09B050000708000001C2000093A80000000B4C00C00230001000151800024006400320173075349502B44325500045F736970045F7564700673776974636802636800C076000100010000003C0004823B8A22C076001C00010000003C0010200106200000001B000000000000000BC076002E000100015180007D00060502000151804B24A0F24AFD13F2FC60067377697463680263680077281AD5F78041CC354CA718703D133A36D0CE63C8E1FA0378DA2B3B4EB935E241225C23F786F5365D2D +F39E8A84702BEDA2591A82BCBDF4E8DD9094296CED48301DAA5DD71B0B8E60E69A858B8FD1ABD555C6711911D966FDFED53C9AC5A477C0CB002E00010002A300007D000205020002A3004B11ADE94AEA20E9FC600673776974636802636800BE4DD85BC15B5AB0575FA1E4ACE582D25A853D8A914FE431B2D057D56CE07B8017FC0994664AFB4B3B830B7E9A88B5C3FB7DACA5921B886BF6B20D4A08E24C73FCE86FDC3738DDBAAF8DB36321FABE9DCE94479C752AABB17B7FAF3D1B2B3F53C154002E00010000003C007D000105020000003C4B11ADE94AEA20E9FC60067377697463680263680000F41CF28713DCE591995F7FABB71832669065F359F2BE0F +1369BFA762005BD24ED3B9EB0E3706BC00F38810D2B60389AE55A5481B2662F76D09C632C9A0171F7ECD22D58E99106A1D5F3A4599AAD7287ECD20FB96BD6FBE4ADB87CACE63D358C1DD002E00010000012C007D000F05020000012C4B11ADE94AEA20E9FC600673776974636802636800DD53A4C140E5717101092724AD0CB23D2C47D5486711171C0BCFADA2B161202A964A663419C1A077E6D9ADAFD2749DF11930F03AED5E295A2C592E4EE9816E6AF1BF504DDEC5B99370BFA58330F165807DE37FD96BAFF859F263F37B16A37D4DC266002E00010000003C007D001C05020000003C4B11ADE94AEA20E9FC6006737769746368026368007A30FB0344B3 +5150669907042E30A66B1F674DE2E659710BC63B900522C22C209BDE6BBD7660F0BA579E2D497E3BA5C8098EE2B4F6247B6CA182AC9473B47738367FC67AB4D4CD5341B51F50A3AF16BA576E3F3C7C893E44AE04180FF631574DC2EF002E000100015180007D001D0502000151804B11ADE94AEA20E9FC60067377697463680263680028FB119F1E1F9DCDD48F3FC65030CA2AB06700A9331030EE4DFB933C6E6EA93EC22867117951F7E820D9D069DC44F78B7F5C740154AFCC7B8749DA956FFB80A9AEA311D503404A3CB8D771A1486F8E388F8CC410C7C433551FEE2DC8A8B89312C378002E000100015180007D00230502000151804B11ADE94AEA20E9FC +6006737769746368026368004930DC3A37A7BBE7585E62BFC6C024F68A421977CA990DF5D60CB6313A8F24829CAACC70F284DC4184CBA8C774BAFD72D418F81E5E14195BE398CC532824933260536DF58BD66A395D46FFDFF9F9902FD42E7C699A6A3EF50D22D3648829DAB3C401002F0001000000B4001F0672657331303203313032067377697463680263680000076201000C100380C483002E0001000000B4007D002F0502000000B44B12C1EC4AEB34ECFC600673776974636802636800039A5F99A0EAA9F55C2D138044208FC77DC2C0B85968CE642F9D6B1F7D5F83A800FD8908855FC55F7177CFCFCB5F1F2703C2BC5CDDC3346062BD1DFB28CFD91D +7E2B8DF25BEDBD2ADAC1539224DAF7BD8B4CC265955B0169DBFFF55DBEB92E6CC4B5003000010001518001080101030503010001BC06344005077BCC13F4DC094F157C2E49A33E9ED3835E32401A0BE8DB36214601E6D848CEF9A2A34788090081E953DCAD10A8A9B98E5ACBDF0B69AD0F106FC3385C3293253E0A14B78BAD1BD7CCF86B96209EAD12DFEDF02CF5B7BEB524F5753248B4354C5451277AF881CD5A4E1710C3B69ADB4FDD5C5A09B20F3324E658AD29D5E1BD4A1A17853DEF9CFBF1C80718850EE179A4486CA6CFCA577E9CDA80D35AC732D275E6678FDA0F1042880A7F4BCAF49F74CDF948D7E71586B10F9D908DC3C5C81232DC4C36218D7582 +E5CD9960272EDFD95CB613352C49393CFC07C94BF871292B8895493731EB8942D0E588DB49BFA4979AF5A7D900DCEE20FE80D6F3C4B5003000010001518000680100030503010001D7AE707CBD0F618702D448E87AF0020008AC85EBA502F5F39D2F396D1581A99F3928CDA7E2FF138224CED79D1F1CE7D303DAEE1A4323F79416FD892D7290FBEA3C00FA5DC25F4BFDA357953A047597F1560D768BCBB367102933102E8353E415C4B5003000010001518000680100030503010001E0835B08C93B89970736B288A7F8A7BC1A27B1307949EC4EC016931A5F10B722E22695741BA0CD83DFB19220F51E9320F932DCBA0F00F9888C27367DB1642A7AC623B849 +8D7006311C11248069AC5C78057652B23B2F19BE8C182F9EC474A55FC4B5002E000100015180011D00300502000151804B24A0F24AFD13F2AB3D0673776974636802636800B1F71FCBF44A0FDA3F339DC419113966FCD4DDA1A032681F5018E3FC2E3740105A2A3A3DBC66EE954BB9518C4AFA0F0463001D68BD8578D52085B73CB4777E13C07D3E479F925D3EA2133FA4D6AE1F3FF8AABD9A8CA37501131A5DA53780C6F697EABE2AE5027D96451B82EAE2E0AB9F62BA518D41C49C1D001D15F31B115F7656C6294E23C7F9CBFA7CA28A5B5F6E56A61C08238802F4342B7DF893013328BB638EA81A39ADE7BC737E097EFDA9A1F6E929AE49AE40E275369E48 +9E9ACFF2639EF00665FEFC67EB7F384AF0E4C6514445C6F4F8AA0C96137B45CD9FF1E075002FD75060E67AD07430365998CF5AE2AF1D6DC2F10CE7267BF320C40B62CF2C97C73A002E000100015180007D00300502000151804B24A0F24AFD13F2FC6006737769746368026368004AA60548E8E119C5028898B96F3E719947B0E6EE1E867B861022342D79E09B38540ABC2F7D2BE2F257F8B090AD21743A613627F03ECF18FEC2EDEB5225225F431FA76573BB94DADF6FC20FB09896D2C8248FB3DD3F0CD1CEC09CCC918299B23BC863000200010002A3000002C027C863000200010002A3000009066D6572617069C863C863001D0001000151800010001216 +138A2AAAA981D5657900994648C863000F00010000012C000C001407616C6574736368C863C863000F00010000012C000A0014056D6564656CC86306616E75626973C86300010001000151800004823B0A5C0865737472656C6C61C86300010001000151800004823B6C6FC8E8000100010002A3000004823BD30AC8E8001C00010002A300001020010620000000000000000000000005C027000100010002A3000004823B011EC027000100010002A3000004823B0A1EC027001C00010002A300001020010620000000000000000000000001C933000100010000012C0004823B6C26C933000100010000012C0004823B6C27C933001C00010000012C001020 +0106200000001402144FFFFE754774C933001C00010000012C0010200106200000001402144FFFFE754775C91B000100010000012C0004823B8A1AC91B000100010000012C0004823B8A1BC91B001C00010000012C0010200106200000001B0203BAFFFEBE9059C91B001C00010000012C0010200106200000001B0203BAFFFEBE905AC06C002E00010000012C007D002105040000012C4B11ADE94AEA20E9FC600673776974636802636800976C32190811F36B7EB9AF4D6F0A19E0CEE36B0293D8F956D43CDB55A9E7E07079590DB7EF6BC21E8AB71EEC0C7FEF4F6654C30A594118E0879FE0419B3F081C55C5C79464FB4E22B47A7342117613CA9EFAB15F +B6BD39DFC78DE09EDD8C84EEC93B002E000100015180007D00010503000151804B11ADE94AEA20E9FC6006737769746368026368002C0DBE38052528746486C66537C3605EC7B3EDCB661F9833AE84BFFAF581FEE5CE430C349B3F33E9564CFCC5D761F2FE04C7CDACE04543A2BA0386E86A74C2608ACE110A17A3E21342F4D3247D97340C2BF599FF73A46F870EB43D77CFDEA1CFC952002E000100015180007D00010503000151804B11ADE94AEA20E9FC6006737769746368026368005F3C8F014D97512C6EE50BEEB1436B2735438D21383291FC5CFFF824ED091BFBBA2EFB6F375B89CAA75A82DEED0BBDCE9CEDD342D029D7AB934FA41968A561C19840 +3FCAB16C7D6145F2F9B864CB73AB12D6BA0E4BF8B57FEF274A638A908E63C8E8002E00010002A300007D000105030002A3004B11ADE94AEA20E9FC600673776974636802636800DCA5BD623C5D2F4F05A9560A1529FD438FBC535898AD50AE9FE275372F18222302FBAA104BF199C119F69ABF8732BBB0123341F6CEDB586CD19918914C04CFBD2EBB8318C28899123F9F0F906275756DF005ACFAAF57DE18DBF32A11CB86F45EC8E8002E00010002A300007D001C05030002A3004B11ADE94AEA20E9FC60067377697463680263680086533D7CE4D47F70A42B4FE06CF2F5B3C30308130533F184D838436E61952148946224F0CEE10A2BE3931A0B2A339385 +A608C7155005EBEDCA2176A559EFAF28D5DA1E91F540874BAA1C46BB08B1BAAE1812699A18139CF02851AB058D044DB8C027002E00010002A300007D000105030002A3004B11ADE94AEA20E9FC60067377697463680263680077107EC5D87E073BDE7E022FD121A8E0D6FF851C38633197FC0C16900C916F617EBB895E985476BB68B62025C5378EBC8F6949CF045493041D7E0CBA75BA11F2DE6C0E0CBE40EE77BF9C72CF2D9789DFF31D39CFA37277FEE26D1685CAD8EF13C027002E00010002A300007D001C05030002A3004B11ADE94AEA20E9FC600673776974636802636800AF3A14ECD3CB4138D4335C4C21A8A11938100397E939D167C3AAD6BE357E +13BBDA2EC641FB23993A72ED6606C8C85E0D1660CC1770769697CEE7EB8E6474714984D7FF41FBBE48FF4A70669101BF00320340B82DC590B2C19D0006841121DC6AC933002E00010000012C007D000105030000012C4B11ADE94AEA20E9FC600673776974636802636800561C052414445D427CE00A40ACE2DA2EC168523823830CA724B087B8116F46B3CD051C5EC5874F6FC75CF6BA846279E469C474A75F9334242BB66FDD367C73B8BBC3F8748736BC5E6AED8B9B7C5FB5FE2DEDFBF46B403BC173DE958C038CFCCAC933002E00010000012C007D001C05030000012C4B11ADE94AEA20E9FC600673776974636802636800A6F44063C12A5A8BF5BCFADD +745C5B3915E463DA478131E636347EED414675023BBCA5BA2AABEC2FA3DF976A2343B4AA3403D1AFA3D470D25812BD1A319FBB5B833244D0FA18A59BB69ABB77BBDB3D7F62740D3871A69A5B9D43331D78AB8AE8C91B002E00010000012C007D000105030000012C4B11ADE94AEA20E9FC6006737769746368026368008906D2CFEFC3AA652125DD021CAB6392EBC4A9B4B3CFE3B07E4AFE7DA3263C7B8CE5DC3B66DA45D120E75B3D49ADC1F7D2E9A04A31760698FCFDEAB4AC82915D8E0AD2494DB4F11C02E115C3BD47DC8E57EDA7805BF0E7820A445F93A07698DF0000291000000080000000 + +;-- es.net IN ANY about RRSIG ordering. +687D8410000100150000000E026573036E65740000FF0001C00C00060001000151800027036E7331C00C0A686F73746D6173746572C00C77CECF4300001C2000000E100012750000000258C00C002E000100015180011A00300502000151804BE2932A4BD0101A2522026573036E657400AF2107A80A9D98A0712FF20826B95D8E686FFF023BEEAD1019045569D94D1493C84C819446ECB5489EBC6B556F4BE4B51A8E9CAC8BAA69F2B74948B78CBB197044E3D3A9E0E5EA958254637984D34BAE34167E1437D275E01C4B7C04C34053333514E1FE7EAC7C4777B02F24356F1F775526E19F54A21D3A134DC74DE153F9267008F5605D3BE38E61352BA9495D77 +97A76735BD68350CD648F40F95ADA4B25464A615E7CD4870E23C21D681F5C68C3DE9477D2EC7216FDF3269F5993428D0F1A4B7E203A04AB6807836263FDD7D6796BE6D84478B906B802DEBDCB1E0870481388503F0396CAD24147BC819A855E6CBCE98526ECAF8423450E30CB4F59C7062C069002E000100015180009A00300502000151804BE2932A4BD0101A4BA3026573036E657400602356C2D379E94F97D2900473D118288D46CFBCAAFF73D8A6FDF0B4305E8B338DD53A90106CDD78BF82A1AEC20B7C02067FDE1BEEC912E5581687BB32DD8BDC7E84B3F844F01E198E75C179194447C13B568886B33933FF35370060440D64E2DB7446962CA348C199 +DDFE4AA252AFFDEB3A818D1BF45CD795EA0907332B4508C18F002E000100015180009A00060502000151804BE2932A4BD0101A4BA3026573036E6574004FFB07563C6F88028C0E09CF163BAC777065BDCC826C583A3B3ABD525D6AF5101A6D5533888E5BAAA33DE28B52330815E14034506C4C69EDE8AD1A1F00B486C670FE0DC2F3B5F7210EBAC66695CC8679F2CA2353666A143A2E3E87377DCD8D3E6E450934BBD4CC6F9EE033E11D05CA3F44B1A64A2666E3AF2A8710F16FF8CC33C235002E000100000258009A002F0502000002584BE2932A4BD0101A4BA3026573036E6574003D2DDC713285C7338263BD338AFEEAB77571054B1F483A7BADC87BAF32 +0740A8D1B8B28CB23E04A80F90979704B44FE379103F4D91482D0EBC1D7005E326668F30B2A434F9DE76BB90DFEF2BFEDEE8CAD62164CA089651AB31498F18ED9A1E5694B4D460FFA4E667950322B2A75E8FD408B6A54EDB00257CE44AC865D1567346C2DB002E000100000258009A00100502000002584BE2932A4BD0101A4BA3026573036E6574004367180234A327C0AF72B3963518FC6E53A43E92CE6F5560E383FE8E7EF258FEA28BA666C026A90DAB67F46FBA4FF82F2704FEB3A27E25F3A8E6874B78938D70C5A20D94BEC90596B55C594F94A1438B14C8F890CE61D9630EFD897DEA9B3995D2C668469F62DB9346BB6AAF2EB6F3EE20EC31EAC80BCB +962105A64CCD5783EFC381002E000100000258009A000F0502000002584BE2932A4BD0101A4BA3026573036E657400D36D367D4D95060CB2952870BE9E826E6F7835CF6517FF83957F5097B6FC401FE5815B8895D02C68E23A47D7015A3DCE9FDE63AF9D9E1D697016444355633D0BE03177B35BE54980B241C12978A7F3EBF2420861EBFAA028CAF9FCBBF54C069869BFB7F9AB9E60D4791ACCA276AE698EB6EF7582235977E158DA8530EC84327EC427002E000100000258009A00010502000002584BE2932A4BD0101A4BA3026573036E65740068E7176D8561B49621F80DB36DC12A3C5DCD2DE5FE3973F5D7DE15769F099F2A1A9BB088042E794747E3AB +BB4AE48651F815D5D38BE7F4FB94F08F51FC209246296BE108111E90A7A5E2A5A79D305F81DBE313569B72598F36F3CFAA02FD9F321FBC2BDA10861F1D537D48DDF80BBF4B228724636FD79C06C4487365F602E6F5C4CD002E000100000258009A00020502000002584BE2932A4BD0101A4BA3026573036E657400BAA98093DDB57F38CA58C599EEED47F16AA20C1CCF668FF0A022AFAAC97059A28C50FE63034E58FBE361059B43FCBAE3876AC6AE8450987B8A00BEC29093267B9B655E645B7478294FF5E149984459A39D191585463BD80F635C21DBCF30462E60E4EACF8EECC25E4D02C181954CCBB8BDF5D19882CF6F9E982B1BEBEF14797DC573003000 +0100015180008801000305030100017D08356710D7E8A11F9B4C29E5E0F6B65F18CE64B4AAFAD7EA0E08DB85013CD777436CB8BC4EE33C0B4E6EEDFBE4227B25354F2EA2F978EE3222F3F32C1D4D3AF0F6014A527981FC5A0D2B65BF78B86A1D37965A98CAE3746CBB250655C2200FB9B8EBCC8C0AFD3182738F246AD0DAACA3199C54F08CF5F666477281872710E7C573003000010001518000880100030503010001DF43A43270EA741D5E79034C5E46A8310C9CFC7BD65C532D815D6B8C245EFF8F0C365DE400B6CDAC0124B00E08017DFB98D91133D5C18251EE0868852AD9E7FED091B393DAD1CD57381A5A1E7EA74E8FB4B708DB0F93B9EA4296EA4A71 +6E3572F168779CB5288880699413B3FFD4B7432EBE2AA2767B8EA6CB576A65C5163A3DC5730030000100015180010801010305030100017DA2FA058940109205AA36338EB8AA8B5B0D9788C4229368D371DBDE4BD24F0805C60EDD8DF223D250F23D189CDC434F388A91D6CEC1A9D6F305817409ACA784F381DFFD7EC3EC688FFE16D2AC57BD7F0B625EFC3099B3A9A5EDA1742460229669DD67D81F12069877F6AFA497F81EB12D179B183F5C8185B2786B790BEAFB6D02E0F94C780065511CF46AF80D40055022867DF712869CC262C0D315B92DFA96D58BC2336DAB5D1258DD60406913D116DC2EC1135D89C6D2092C35A19C67959743B407A3C30F3C6B8B +C4763504FE12541EDD947A5FBE8E402D31816D1824867E2CD89AEE5FF6ED7A2D683B8C5E6B7B5972BDFF355BFD9128F0D0EDB59A60F321C573003000010001518001080101030503010001DD8EC709089B6D74BAF2D294E4C626CF789B89A74B7E320D7002A03D0F94EA62DF1F19717FE8C4BFD732DA495E481353C78167255CC6256A98ACBFF5977B81A48C5E2A5AF23E8377423C4034D5D84E9E3548B9D0A07955586F67324B6B5720CC4456D86AEE3A21A4EBED9BA13358C8127D182A5083739B042D7E06307E417D020DD68EC0628E9C8279AF0F7E608A3C5D51AB33BF7C32EBD27B45D72B1AD5752BB485D52488FBA9A1B5BF3B2B50F074F481171E4B65 +3AF846E58FE46DEB3491FA683959B38B893BF55721CED8FC4A64DBEDB6BF1C7FADE650EE219A01E81DD0212B89259319CA5DC81F26821A5CC29B4CC1059AE28227B89B8816039E43C35E33C57300300001000151800108018103050301000188F31BEFA3466D6FCAF11E0D1954D2011D6EAECF922D9E1B8D620095A0D15E7CFF8EA33F8E2A8C3B3F45A1ADACFED62E3E4EDC884AEF8A7CADBCFF8EDF2158730136D01BDB6D057BEBF3D35A92ADB5E8ACB1152FE1244B2D36DCB500E952CFB6D744BF7DBAB24A901B984F869FF47113C9515D53FE1A57293B01C24195A1D40580566CDAE5B04348CB60507267BB38F34839EE959D43FB9605652157014059FDBD +39EB0836D4043A63F8660D241006F757DB92B35B39B5ABCA32A16A81C65C9F53DA79A99F1134CF3ED5304F189434AF787A3A10D63862E6C2E5FBA08B6EF6701783DB00CB41851DF13070947EEC090FCED3539F3F494170BD90E68F99453DF9C573002F00010000025800220B726573657276652D3132380231340131026573036E657400000762018000000380CA7C0010000100000258009C9B763D73706631206D7820613A6D61696C312E65732E6E657420613A6D61696C322E65732E6E657420613A6D61696C332E65732E6E657420613A6D61696C342E65732E6E657420613A6D61696C2E65732E6E657420613A6D61696C67772E65732E6E657420613A +706F7374616C312E65732E6E657420613A706F7374616C322E65732E6E657420613A706F7374616C332E65732E6E6574207E616C6CCA7C000F00010000025800090032046D61696CCA7CCA7C00010001000002580004C6800370CA7C00020001000002580009066E732D616F61CA7CCA7C00020001000002580002C024CA7C00020001000002580009066E732D6C766BCA7CCB4300010001000002580004C0BC1609CB43001C000100000258001020010400FFFFFFFFFFFFFFFFFFFFFF81C02400010001000151800004C680020AC024001C000100000258001020010400001400020000000000000010CB6600010001000002580004C67CFC16CB66001C0001 +00000258001020010400600000000000000000000022CB8900010001000002580004C681FC22CB89001C000100000258001020010400091000010000000000000002CB43002E000100000258009A00010503000002584BE2932A4BD0101A4BA3026573036E657400B425467E45E411066B99B85420FB7E844D734F414FFAF6B9528867B3DF808733BF479A0F125C84179401306579994AB8D84DF0173E2824527CEDA45C75ED4D818722EEB2D5A37641108B112D9A6D832D29A507C35DBBEBD46D50DE9915E924F53F55B5A2A263A48B48209FB50A13A7DF40AE697B1BCCE71A2B95C1BB9E47ACCACB43002E000100000258009A001C0503000002584BE2932A +4BD0101A4BA3026573036E6574002588E73F85BE8FAFD09628232906913DB78592B59F9C3C95A4AD1334D383C1326EE0C6FCF38892D8BB74631D680A6E4DB2D603D32394BC7B4EC798A1511667D246A0C30B33D03AB144C3704AA80AFCA27F197B2F83F20A9F0D2835C7C0A9B49E47E7CF2E192DC7DBF4635C39ECCCB291DB4B2832E0B8FF430A75726500194D9EC024002E000100015180009A00010503000151804BE2932A4BD0101A4BA3026573036E6574000E9F4098B1EF4F429B802007E3A9EA8E267A1F78EA7241AADD120A74CEBF70DC1DF76065A2CE0CDAA51AAB2F68411D9DEDC1F9DBEB3AB114A1FCBE122610756DE205EEC576CA5E62BD02497F +84D5DDB7110AC7F2BF02485B3E7B28FC1EB2999724B64D811270B085D1D10E184295D423F0141D652BD7E97633AC2E98C2819EDAC024002E000100000258009A001C0503000002584BE2932A4BD0101A4BA3026573036E657400936ADA283A90836E92BD42E2B6C8A0299147BCB8E47D9D4464C4151FCC99DC4F2D1C39FB691F6E322715B22F61E7BB8D5507982A3119674B350C569BDC2CD95C708EC73B4E5DEA516D053A4FD725326FFC5B0D0562B542BA96124D9FFBBF787CA0BBE6960951CC2FDD074376A1D184287C2C56A93FBBC1C7FFAA6977B30AE808CB66002E000100000258009A00010503000002584BE2932A4BD0101A4BA3026573036E657400 +0CE145578E56BB359606C9B85538450D2BCA3E9AD0DEFC8FF865DA646F900B9CBC7325B7F04706B60E2770107E62894FE9CF3B1A432F0FB53C5C7A8F37D0F60354C7D52F4DF88BDD4C46774AA728DFC1C807EF5276641CA28774F323C7326B7C1D99DFCB9498C6E096392009AA972B83F0583A5D1002CA26B59B5C97F6A8309C0000291000000080000000 + diff --git a/external/unbound/testdata/test_packets.8 b/external/unbound/testdata/test_packets.8 new file mode 100644 index 0000000..de6c046 --- /dev/null +++ b/external/unbound/testdata/test_packets.8 @@ -0,0 +1,13 @@ +; Test that FORMERR no longer happens. +;-- next packet -- +; bad packet, had arcount=1 but EDNS record is missing. +; from imgw.pl. BIND accepts it (but dig notes 'it is malformed'). +; therefore we leniently accept this. +; header +75D684100001000200000001 +; qd section +04696D677702706C0000010001 +; answer section +04696D677702706C000001000100000E100004C3BB560E +04696D677702706C000001000100000E100004C3BB560D + diff --git a/external/unbound/testdata/test_packets.9 b/external/unbound/testdata/test_packets.9 new file mode 100644 index 0000000..72dbac0 --- /dev/null +++ b/external/unbound/testdata/test_packets.9 @@ -0,0 +1,23 @@ +; Test that RRSIG(SOA) is matched with the SOA record. +; Test that FORMERR no longer happens. +; This is output from the PowerDNS online signer. +; +;-- next packet -- +E2C084000001000000040 +0010E686F74656C6C73616E746961676F02736500000F0001C00C0006000100000E10002C036E733 +30662696E65726FC01B087265676973747279C0334EDFD75C0000A8C000000E1000093A8000000E1 +02075616D326963717673707635356136746A306C6C32336B71376E766D666E6136C00C003200010 +0001C2000240100000101AB14D7425114B28CE784C3A3D9B8FC5D920A8D7B5570000762000000000 +290C00C002E000100001C2000A50006080200001C204EE938804ED6C38085F80E686F74656C6C736 +16E746961676F02736500442DF70F92FCFDF5F5D3560194FCDE01B91CE6AC00910CDDA550F985C84 +F4FA1FD8DFD +957F4382C276FD26E5A +3C10C494DCB6D0132F930595A0901D4E0616679EA426F7D45A683CA7236F8532C1E3B3B82EF6B0C0 +2E43999F8B8FF0B001968E10AFAEFA7774FC003ED0E43DDEA776596AFD91DADECA5AD505107F97AC +467264EC05B002E000100001C2000A50032080300001C204EE938804ED6C38085F80E686F74656C6 +C73616E746961676F027365000D4700DE3055046F2CC0529307903D40FEFC7ECFF29BB5B6B7427EB +11B06669605B1ADFC070DAF801FB3EB59446F6C7BE5D4BC7C725BFEF2F5F416BCC8A090692F5CE76 +85923DD102677C9224E69FF10167EF8C0EC18070E986E9F0266C7CBB3270A9CD6C562157EC1074B6 +F48553DD58BBE +12A63202C9A1DB7DA5F8560849580000295800000080000000 + diff --git a/external/unbound/testdata/test_signatures.1 b/external/unbound/testdata/test_signatures.1 new file mode 100644 index 0000000..983d7c2 --- /dev/null +++ b/external/unbound/testdata/test_signatures.1 @@ -0,0 +1,605 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + + +; DNSKEY used for testing, from august 2007. +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. 3600 IN DNSKEY 256 3 5 AQOpbYrUNahQAV5/wTCJ9/wbSM/eV+N+jYZAMmIKn6QF3Z57B6upgcjV HEOyFkA3YcIt5Fz+WqodCrABn4qShd6qJYR8iP3S6fjN6PVpljMjrhsp /6yVc30C6c7P2b/mgWZi5iYC56lkegDs0VGfAW5HmosKjQVoYMjOtNo3 F+MGQw== +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQO6TtiOq7uZa8wHrQNUGT3ZXudaGjnbduUnyLw9WwiDEd8Vy1Ao4FVK 7xqEAFo4F5gOkdGr6Y7Xz0F+Z5e1AaQlvhBhjujvIhPZ5EIuNGkGUbRT YLhVX5OJUHMYdrXpGPdyG+V1TBTmxJ/+OmUdkWiT2J6w5XUpSYRB+p0k YwGf7uxPO/cDNp67fILtx1+dduS30B7QygOK+f7PeAZDcdBo2qsy5rnB sPsLhbEpdpWFs2WPTVo0IGYAER3nG6WZptiq8OYAb1K22K8i+j8+hDwv NRDMjWeVMebBZXbNQGkwsGgJsIsaoGfVOT3WdeJxDu9GqODM//mwZxTv O7StbOht +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ== +ENTRY_END + +; first entry; the www site +ENTRY_BEGIN +SECTION QUESTION +www.nlnetlabs.nl. IN A +SECTION ANSWER +www.nlnetlabs.nl. 600 IN A 213.154.224.1 +www.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Luav3fjE1VGhran3tnxR93cgoEyH3Kh//240KDCT8k0U4Tfw6xSBMVjj rf3oH13SXCZfYdJYZbZEahBvysMRm40Izl4+rpfUKzwjHXn1una1o4Gt A48v0fwffCXtUPz1TDFq9IKlVe95uLwjheMF8auDXHLwLItj2lF827Dd VI0= +SECTION AUTHORITY +nlnetlabs.nl. 86400 IN NS ns7.domain-registry.nl. +nlnetlabs.nl. 86400 IN NS open.nlnetlabs.nl. +nlnetlabs.nl. 86400 IN NS omval.tednet.nl. +nlnetlabs.nl. 86400 IN RRSIG NS 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. mXE8tSPoCvD7f6SjQ4skJi8tvbiloN5dlXNHcwufK1rREEVl8oCJ34VV cldL6tv4APj8w0PXmYOiB3xM3TIFpi33n6eqRjudKiq5906PKaj/zLEE cl+dU64+hg9VL0rsT+Fx7TWs/i+gh6oiQm6MsbG415UWUgqtZLflwmMB SC4= +SECTION ADDITIONAL +ns7.domain-registry.nl. 8380 IN A 62.4.86.230 +open.nlnetlabs.nl. 600 IN A 213.154.224.1 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::53 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +omval.tednet.nl. 28800 IN A 213.154.224.17 +omval.tednet.nl. 28800 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +open.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ViuIpiw1c6a0roF+XCOSFMQ3BCH/qmy+lRcU0Y8jEeoN7vLu5rJlWUuF yuuU3kAx6RFB/XDPjxNzm2OER/JJSUUeagzXSqnJVL8Orj03RGpS2PAW 5p66uf5uMv34VEednxoGoigVHKIBfpIwYIbcaXAkDaRMMpw+ylRWwWee q84= +open.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. bcDWQYXDf6XEyNFeYeDJZTcdUCD4hbfzEIMCL1Fap4Lm6FNSvACQ8c+F F48UfJVdvSZeczDKgsHSm7nte81qYu4+lBQm5TuJcMkjgJakHumKGV0Y 17wIJAsMPiacw+NNICweKO4x4RKwNzWgcn1ymktYsiaPIJpOxQCQVJcU tlg= +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +bartok.nlnetlabs.nl. IN MX +SECTION ANSWER +bartok.nlnetlabs.nl. 600 IN MX 50 bartok.nlnetlabs.nl. +bartok.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +bartok.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. kPtROxDJsZMq0XF/sM6tF3MQyaWBPAKGmEdWJ1DAcKwR5GJgBCCPbL4Z poV7NtJwfs0tN+vE5IqdxRu707Px3Omoc9HUJqF7mwu+dr8R4ltMkUGH 4XJpfSty7/4Q4B7Y/BrcJbYduudi4YmwqmO0ffFDJjTjDgJGCGC/DFtE HAo= +ENTRY_END + +; big zone apex +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN ANY +SECTION ANSWER +nlnetlabs.nl. 18000 IN NSEC _sip._udp.nlnetlabs.nl. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +nlnetlabs.nl. 18000 IN RRSIG NSEC 5 2 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. RMppeajhOKtJXWq2HRFHN7fbbBVrqQwyr8uuiaSft48JpCA4QfM8/sxD ahqGOt2P5BvMqVeHz6oWPYrxpnoe9NGJBYCnQ50aipTEFohct9HTFUFu cnk2NoEizMHPWWbQOhVxXaL+sQHZhLR69DIu6KwH9SNu8Dks9V2n6Yi5 slg= +nlnetlabs.nl. 86400 IN A 213.154.224.1 +nlnetlabs.nl. 86400 IN RRSIG A 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. mpbqSRHxv3TUo+MgzQndhWdZp0CqlOyaIPKFp2trycJ7onH63hCZ7Ixd d4sk/DhIfgzoo8HHootbsYvFCHr5oue8qgkAk9bjco7wWFt9KskturwS RS29p8+jTf4uQ0oXOad0IJo07iccpPyqVapIOHjOFwsFKG1ma7TZQRcW Sz0= +nlnetlabs.nl. 86400 IN NS open.nlnetlabs.nl. +nlnetlabs.nl. 86400 IN NS omval.tednet.nl. +nlnetlabs.nl. 86400 IN NS ns7.domain-registry.nl. +nlnetlabs.nl. 86400 IN RRSIG NS 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. mXE8tSPoCvD7f6SjQ4skJi8tvbiloN5dlXNHcwufK1rREEVl8oCJ34VV cldL6tv4APj8w0PXmYOiB3xM3TIFpi33n6eqRjudKiq5906PKaj/zLEE cl+dU64+hg9VL0rsT+Fx7TWs/i+gh6oiQm6MsbG415UWUgqtZLflwmMB SC4= +nlnetlabs.nl. 86400 IN RRSIG SOA 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. C54bDHKC2sRbVUrDOeM2kXCHpJIFu0LlZWAFVFLf4l1Grfj+B4WcXqel kSVhi/Gpt70VW+zDEOHrS0kcE5XaBnrQE1AUZ9QjGyfjXlRzGWYbyVLD evIFrs7FdIeGKKWWp1YDLUHHF+txDT9NFu6KyEqPbZEVgIVok3skO5Vu jpA= +nlnetlabs.nl. 86400 IN MX 100 omval.tednet.nl. +nlnetlabs.nl. 86400 IN MX 50 open.nlnetlabs.nl. +nlnetlabs.nl. 86400 IN RRSIG MX 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. o9l0WEH53WBdFd+3PE5UHN8kAJVFDb60DcES9oWlBOVwsBMqeTU7eDQr o+wlq1AlUYC+PlFb/W1vLdWN6eCJ//4iPxFJhKoElUEFR+ICPYIIZcD9 VLJM3i4FVsqUwcfgHdOcafciMpMeCgYutxbQDoOwDPe5o+jbynu3gq9a PQ4= +nlnetlabs.nl. 86400 IN TXT "Stichting NLnet Labs zone" +nlnetlabs.nl. 86400 IN RRSIG TXT 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. lSeFN/S4BATNoC5DG2fYtdSGkC5yxIwOxMH3rChYurB/bD3M4435ySKS Z+vHjLbXQqPtlXw1Jt5ZcVZujRhBM6kEmYZ2XwvC0rPZF0wMtz9nFhxK oc+seBSuP0R9GkbJZReho+JwAYh4F7EC/RQVbHylE1lPAQUHtxCGjmlV EAg= +nlnetlabs.nl. 86400 IN AAAA 2001:7b8:206:1::1 +nlnetlabs.nl. 86400 IN RRSIG AAAA 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. KGGDcoOAmCby+/xrK7f1b/t/evXfwWgm39VVzE/xButUtPzXv+0htDgO jtUMmouO3GWicIU3fGCffDBCdOmdIrMffjvrR0lKmQAC5JwWPt2FNF/F K7dKh+KrRMp2ruqucpajfvwShWnfesEWaTYWNox1/saLjsw1NXiQ6h+0 2bc= +nlnetlabs.nl. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.nlnetlabs.nl. +nlnetlabs.nl. 600 IN RRSIG NAPTR 5 2 600 20070912141341 20070815141341 18182 nlnetlabs.nl. cxgMuZWTVJEagjnERLGjnPNZ7JKuyfe3o1gkkjoS1sg+AQb/8nUEKO/A tIoAwqPHWyALjlbOf25mWEIWviYVVt9TDn6d8k4saWNgTdnnCS+Kc5sM fV/Wz0Np/eQRZElBN0fP4QSBv0rk1VjqK1FHnFpSYz/zRV7FqDSQE1nQ 64w= +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQO6TtiOq7uZa8wHrQNUGT3ZXudaGjnbduUnyLw9WwiDEd8Vy1Ao4FVK 7xqEAFo4F5gOkdGr6Y7Xz0F+Z5e1AaQlvhBhjujvIhPZ5EIuNGkGUbRT YLhVX5OJUHMYdrXpGPdyG+V1TBTmxJ/+OmUdkWiT2J6w5XUpSYRB+p0k YwGf7uxPO/cDNp67fILtx1+dduS30B7QygOK+f7PeAZDcdBo2qsy5rnB sPsLhbEpdpWFs2WPTVo0IGYAER3nG6WZptiq8OYAb1K22K8i+j8+hDwv NRDMjWeVMebBZXbNQGkwsGgJsIsaoGfVOT3WdeJxDu9GqODM//mwZxTv O7StbOht +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ== +nlnetlabs.nl. 3600 IN DNSKEY 256 3 5 AQOpbYrUNahQAV5/wTCJ9/wbSM/eV+N+jYZAMmIKn6QF3Z57B6upgcjV HEOyFkA3YcIt5Fz+WqodCrABn4qShd6qJYR8iP3S6fjN6PVpljMjrhsp /6yVc30C6c7P2b/mgWZi5iYC56lkegDs0VGfAW5HmosKjQVoYMjOtNo3 F+MGQw== +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. foMQGGiev3Lys1fGMfYiHCHnqE9IIzpOFsXECGmT2kPHCRvXWDRcAGMu DWWfCQBPcAlDLZBKCvpUhp/H/VSLS+EA6wonPWN2dS20cDuPWKm3QsHo 6+wQmw7y5t/ejsd+i370dUTjgT40T5bR6nvXZkOLN0DJvaLk7USDRvRg BNU= +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 36867 nlnetlabs.nl. hw0alVZsoFJqe+u4Meg2VMJ9acbLa85V65RvEAB6RDOqXvaYBhok3kNJ HGR4zq+FYC7i4EKczT7HVKdLtxL9QGt0rzVPq++tcE85861kAgHcLpB9 Iml8QkR7dRER/FpQ1t15gTxoGg6ctlNLfDM6j0x5+S144Rg7gAm1YODB VfL5gSML385EVo2nX7Jiv/Rz1Y6shJ5SzmXnkARqhrJDhQE/Tuf2N+HY sCNatrAv3aNwN0P7a+c99qd5esIb/WVt8eR7cx9Z46nO9GV8HOvfeYxh nMnhlQ/Oy+yG2s2FnJMpD9B4m4WS/m/lBR4pyxHvZR2PQ+/drlJ+oRUS Jt4yhw== +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 43791 nlnetlabs.nl. uykSWt5yfpz/IN2jKEO+XPtCj9KBFuNWz7vIk+HvEDd+KhXp7vpjISvC tI/xK6yRCeTBIbX6uxR8VRsWEtoKuWwXWHhNmpPBWTGdDuguHOLiuGBn NBUSiTPhideDW8qx/cir6I1MtqypHjEr2w9dn21xdYZbieNXpdZWDLQl ufw= +nlnetlabs.nl. 86400 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2007081501 28800 7200 604800 18000 +SECTION ADDITIONAL +ns7.domain-registry.nl. 8295 IN A 62.4.86.230 +open.nlnetlabs.nl. 600 IN A 213.154.224.1 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::53 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +omval.tednet.nl. 28800 IN A 213.154.224.17 +omval.tednet.nl. 28800 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +johnny.nlnetlabs.nl. 600 IN A 213.154.224.44 +open.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ViuIpiw1c6a0roF+XCOSFMQ3BCH/qmy+lRcU0Y8jEeoN7vLu5rJlWUuF yuuU3kAx6RFB/XDPjxNzm2OER/JJSUUeagzXSqnJVL8Orj03RGpS2PAW 5p66uf5uMv34VEednxoGoigVHKIBfpIwYIbcaXAkDaRMMpw+ylRWwWee q84= +open.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. bcDWQYXDf6XEyNFeYeDJZTcdUCD4hbfzEIMCL1Fap4Lm6FNSvACQ8c+F F48UfJVdvSZeczDKgsHSm7nte81qYu4+lBQm5TuJcMkjgJakHumKGV0Y 17wIJAsMPiacw+NNICweKO4x4RKwNzWgcn1ymktYsiaPIJpOxQCQVJcU tlg= +_sip._udp.nlnetlabs.nl. 600 IN RRSIG SRV 5 4 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ON/hEJ3zq5J7QUKEMT7mDY8Jj++cYCpTJoFfR/XjWC+JxQuQ5kA5HHoI kI6kABBVK+/6Npz1wof3ELQxvz3IU1jxVn2gwwofC2BNcf+MKRw6aSwc BKcDWRsrQwtMRABwZ63ixobXIUOr/NWBoRODrKQ+61ntPFmwHHCFmfwR YJ0= +johnny.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. EJAy5kI3QxNNABLIw/asxL2LjCMshjnWMNyUeu1pRd7KM3QQUDygnw+c 50MpE1y4X8LkBXDizazoUXPsqEGhq+fzGeFEhdB0DqrxVXtyQ3ikHa+d oVp2jdGiI5zl3yWBlxr4GtLr59jIB0ZU1sL5F0voBIAGv2i6PqArRswr HBI= +_sip._udp.nlnetlabs.nl. 600 IN SRV 0 0 5060 johnny.nlnetlabs.nl. +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN AXFR +SECTION ANSWER +; <<>> DiG 9.4.1-P1 <<>> @open.nlnetlabs.nl. nlnetlabs.nl. AXFR +; (3 servers found) +;; global options: printcmd +nlnetlabs.nl. 86400 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2007081501 28800 7200 604800 18000 +nlnetlabs.nl. 18000 IN NSEC _sip._udp.nlnetlabs.nl. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +nlnetlabs.nl. 18000 IN RRSIG NSEC 5 2 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. RMppeajhOKtJXWq2HRFHN7fbbBVrqQwyr8uuiaSft48JpCA4QfM8/sxD ahqGOt2P5BvMqVeHz6oWPYrxpnoe9NGJBYCnQ50aipTEFohct9HTFUFu cnk2NoEizMHPWWbQOhVxXaL+sQHZhLR69DIu6KwH9SNu8Dks9V2n6Yi5 slg= +nlnetlabs.nl. 86400 IN A 213.154.224.1 +nlnetlabs.nl. 86400 IN RRSIG A 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. mpbqSRHxv3TUo+MgzQndhWdZp0CqlOyaIPKFp2trycJ7onH63hCZ7Ixd d4sk/DhIfgzoo8HHootbsYvFCHr5oue8qgkAk9bjco7wWFt9KskturwS RS29p8+jTf4uQ0oXOad0IJo07iccpPyqVapIOHjOFwsFKG1ma7TZQRcW Sz0= +nlnetlabs.nl. 86400 IN NS ns7.domain-registry.nl. +nlnetlabs.nl. 86400 IN NS open.nlnetlabs.nl. +nlnetlabs.nl. 86400 IN NS omval.tednet.nl. +nlnetlabs.nl. 86400 IN RRSIG NS 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. mXE8tSPoCvD7f6SjQ4skJi8tvbiloN5dlXNHcwufK1rREEVl8oCJ34VV cldL6tv4APj8w0PXmYOiB3xM3TIFpi33n6eqRjudKiq5906PKaj/zLEE cl+dU64+hg9VL0rsT+Fx7TWs/i+gh6oiQm6MsbG415UWUgqtZLflwmMB SC4= +nlnetlabs.nl. 86400 IN RRSIG SOA 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. C54bDHKC2sRbVUrDOeM2kXCHpJIFu0LlZWAFVFLf4l1Grfj+B4WcXqel kSVhi/Gpt70VW+zDEOHrS0kcE5XaBnrQE1AUZ9QjGyfjXlRzGWYbyVLD evIFrs7FdIeGKKWWp1YDLUHHF+txDT9NFu6KyEqPbZEVgIVok3skO5Vu jpA= +nlnetlabs.nl. 86400 IN MX 50 open.nlnetlabs.nl. +nlnetlabs.nl. 86400 IN MX 100 omval.tednet.nl. +nlnetlabs.nl. 86400 IN RRSIG MX 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. o9l0WEH53WBdFd+3PE5UHN8kAJVFDb60DcES9oWlBOVwsBMqeTU7eDQr o+wlq1AlUYC+PlFb/W1vLdWN6eCJ//4iPxFJhKoElUEFR+ICPYIIZcD9 VLJM3i4FVsqUwcfgHdOcafciMpMeCgYutxbQDoOwDPe5o+jbynu3gq9a PQ4= +nlnetlabs.nl. 86400 IN TXT "Stichting NLnet Labs zone" +nlnetlabs.nl. 86400 IN RRSIG TXT 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. lSeFN/S4BATNoC5DG2fYtdSGkC5yxIwOxMH3rChYurB/bD3M4435ySKS Z+vHjLbXQqPtlXw1Jt5ZcVZujRhBM6kEmYZ2XwvC0rPZF0wMtz9nFhxK oc+seBSuP0R9GkbJZReho+JwAYh4F7EC/RQVbHylE1lPAQUHtxCGjmlV EAg= +nlnetlabs.nl. 86400 IN AAAA 2001:7b8:206:1::1 +nlnetlabs.nl. 86400 IN RRSIG AAAA 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. KGGDcoOAmCby+/xrK7f1b/t/evXfwWgm39VVzE/xButUtPzXv+0htDgO jtUMmouO3GWicIU3fGCffDBCdOmdIrMffjvrR0lKmQAC5JwWPt2FNF/F K7dKh+KrRMp2ruqucpajfvwShWnfesEWaTYWNox1/saLjsw1NXiQ6h+0 2bc= +nlnetlabs.nl. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.nlnetlabs.nl. +nlnetlabs.nl. 600 IN RRSIG NAPTR 5 2 600 20070912141341 20070815141341 18182 nlnetlabs.nl. cxgMuZWTVJEagjnERLGjnPNZ7JKuyfe3o1gkkjoS1sg+AQb/8nUEKO/A tIoAwqPHWyALjlbOf25mWEIWviYVVt9TDn6d8k4saWNgTdnnCS+Kc5sM fV/Wz0Np/eQRZElBN0fP4QSBv0rk1VjqK1FHnFpSYz/zRV7FqDSQE1nQ 64w= +nlnetlabs.nl. 3600 IN DNSKEY 256 3 5 AQOpbYrUNahQAV5/wTCJ9/wbSM/eV+N+jYZAMmIKn6QF3Z57B6upgcjV HEOyFkA3YcIt5Fz+WqodCrABn4qShd6qJYR8iP3S6fjN6PVpljMjrhsp /6yVc30C6c7P2b/mgWZi5iYC56lkegDs0VGfAW5HmosKjQVoYMjOtNo3 F+MGQw== +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQO6TtiOq7uZa8wHrQNUGT3ZXudaGjnbduUnyLw9WwiDEd8Vy1Ao4FVK 7xqEAFo4F5gOkdGr6Y7Xz0F+Z5e1AaQlvhBhjujvIhPZ5EIuNGkGUbRT YLhVX5OJUHMYdrXpGPdyG+V1TBTmxJ/+OmUdkWiT2J6w5XUpSYRB+p0k YwGf7uxPO/cDNp67fILtx1+dduS30B7QygOK+f7PeAZDcdBo2qsy5rnB sPsLhbEpdpWFs2WPTVo0IGYAER3nG6WZptiq8OYAb1K22K8i+j8+hDwv NRDMjWeVMebBZXbNQGkwsGgJsIsaoGfVOT3WdeJxDu9GqODM//mwZxTv O7StbOht +nlnetlabs.nl. 3600 IN DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ== +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. foMQGGiev3Lys1fGMfYiHCHnqE9IIzpOFsXECGmT2kPHCRvXWDRcAGMu DWWfCQBPcAlDLZBKCvpUhp/H/VSLS+EA6wonPWN2dS20cDuPWKm3QsHo 6+wQmw7y5t/ejsd+i370dUTjgT40T5bR6nvXZkOLN0DJvaLk7USDRvRg BNU= +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 36867 nlnetlabs.nl. hw0alVZsoFJqe+u4Meg2VMJ9acbLa85V65RvEAB6RDOqXvaYBhok3kNJ HGR4zq+FYC7i4EKczT7HVKdLtxL9QGt0rzVPq++tcE85861kAgHcLpB9 Iml8QkR7dRER/FpQ1t15gTxoGg6ctlNLfDM6j0x5+S144Rg7gAm1YODB VfL5gSML385EVo2nX7Jiv/Rz1Y6shJ5SzmXnkARqhrJDhQE/Tuf2N+HY sCNatrAv3aNwN0P7a+c99qd5esIb/WVt8eR7cx9Z46nO9GV8HOvfeYxh nMnhlQ/Oy+yG2s2FnJMpD9B4m4WS/m/lBR4pyxHvZR2PQ+/drlJ+oRUS Jt4yhw== +nlnetlabs.nl. 3600 IN RRSIG DNSKEY 5 2 3600 20070912141341 20070815141341 43791 nlnetlabs.nl. uykSWt5yfpz/IN2jKEO+XPtCj9KBFuNWz7vIk+HvEDd+KhXp7vpjISvC tI/xK6yRCeTBIbX6uxR8VRsWEtoKuWwXWHhNmpPBWTGdDuguHOLiuGBn NBUSiTPhideDW8qx/cir6I1MtqypHjEr2w9dn21xdYZbieNXpdZWDLQl ufw= +_sip._udp.nlnetlabs.nl. 18000 IN NSEC alpha.nlnetlabs.nl. SRV +_sip._udp.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. R0Mg9z4VQHtZXK3xcv3SOZLlibfhJ4nCXURBzvDSn2C3eI1UHvOdbeZ/ B7L7/1aVlho2kHFwjkPI0wGdTSyPqlc3tSHh9Kr+EuMw2wiqtjKqzROF 9hofI/V/PKYCQGBS31e6Dq2Mi5pfeHfxAaBQ8HoFVyLBvj7Xc33aRXGE DaI= +_sip._udp.nlnetlabs.nl. 600 IN SRV 0 0 5060 johnny.nlnetlabs.nl. +_sip._udp.nlnetlabs.nl. 600 IN RRSIG SRV 5 4 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ON/hEJ3zq5J7QUKEMT7mDY8Jj++cYCpTJoFfR/XjWC+JxQuQ5kA5HHoI kI6kABBVK+/6Npz1wof3ELQxvz3IU1jxVn2gwwofC2BNcf+MKRw6aSwc BKcDWRsrQwtMRABwZ63ixobXIUOr/NWBoRODrKQ+61ntPFmwHHCFmfwR YJ0= +alpha.nlnetlabs.nl. 18000 IN NSEC asus-ap.nlnetlabs.nl. A MX AAAA RRSIG NSEC +alpha.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ntDts9XbX6LamoCEkr7nsEBtqC8PMjsbrXmoZUDggDRKIjAjaqRt3tfy 2QdTdVYcPtG1Tj53RqAXGFfIn3+BfpSvkLELO9qIcIFvmaX+wZr458PV okltp9fX8rm2rirspNlHPNCuZBYVWb9gIRJkg64wnDFC31ERqqF+GS8/ iyo= +alpha.nlnetlabs.nl. 600 IN A 213.154.224.59 +alpha.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Hu76XqcNZI3IjJT6DwIisVWXhGFP3MCYUTH2XHGwpGF9mQOHX+Jbk7NO k88mwZ9CM3ZNLrDWGu1Z8qhd1ZfgvpxAXshqGBvKhne7Rvf/CopP4XWx QEKcA3Zy5EYUo8J+UBJVm/l5cURlDyj3skqBb+inFpL+FysLKRcQx2E5 Mg0= +alpha.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +alpha.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +alpha.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. YK+H+ugme14+K8H8zdXcB96wI8gNXloKW1IJVBgjzzAwGooqxRM6LEXt jfD9F+ZA8wn0HnB58a/CZ9S/24+grfdTRjUdeTEl8Cbk0ZR5tqVUFLJt MZSXAKczyXWGXZnCn6htGy6diHm+SL0S2Agr/JhsGBBxSX22tTKcoI+i CxA= +alpha.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:202:44ff:fe41:b898 +alpha.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. DtljNKbGwkLs+LtvDeRQEXBUTg/TGFjRdrkxp7HEfx/N6n7fWiRgvzo7 va1py1cc+EMxBO6zC2hegCVS5c1lRjwYuIoA1lSfclkZLQFwwJTfyFVe M/Iq2mE0bbPoJhQ6RAhivD+5Yb9JCqRcKM4B2zlAV2LGKlhwMD/Cq8u3 IB8= +asus-ap.nlnetlabs.nl. 18000 IN NSEC bartok.nlnetlabs.nl. A RRSIG NSEC +asus-ap.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. bCWeNq/W0loWFRQpKPO2bJT6XsEmjfwdP7X8Iz2aIXmHXmfMyNTpFEJH 26vcJJ8D/hMC8zDAKutHWRdcFPwJp+bCg3HJqemLdvzpdSlcGcC/hmr4 zCVLVNWYK/Q/Vq7/cbVWoJTYwVEarwwwATK+Hu3YZFMPOmxoWoHVPaoN bys= +asus-ap.nlnetlabs.nl. 600 IN A 213.154.224.63 +asus-ap.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. PQFBpiGWor6itylbCSIiowF0iTTGbmS1JyH4Yh2tUsexqlWNSJVvIiL5 EYqdttTSRGGDHkYFas8MN6CWXCvTUAAzAyDHOomHr3qt76n5bPpWXNlQ atz+Q2j+n9sqSrqiFYQ2ubAIyclsMetdRNtZxZvo+0Dqcyn42O6cx+0c L6o= +bartok.nlnetlabs.nl. 18000 IN NSEC dhcp-01.nlnetlabs.nl. A MX AAAA RRSIG NSEC +bartok.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. Q7VfSibMW/aRxye7XKj1mxq9tT3b76H7PNuqNWmvQplA05Ad4mlBGrnN +THcTIv1ymE0pWzDR94LQkmQZabCzFpP5cwRqoVb5TwLgJBwWIxQeVMp zzFQ43+jYhlpiPnmzrtBMmG+js0gDPDa4446mMDFp9BapJEG1TYg2Mzl 7oQ= +bartok.nlnetlabs.nl. 600 IN A 213.154.224.50 +bartok.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. J26AYtIbdOrZdLxKSp65MOdbIcMmx+Cty8l9Z0HlsiamAYovhhWWh39+ HqO6H2sJiGXT8dPBrQvvRNbtbLWi2c02WRAtGZt1GFolLIvkgVPGjd0y 0eLJXikN9L7W4j5nspTRBe6GOWIatCg1NwHM7VWNFEsUSZJVNVxBmIVi Dao= +bartok.nlnetlabs.nl. 600 IN MX 50 bartok.nlnetlabs.nl. +bartok.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +bartok.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. kPtROxDJsZMq0XF/sM6tF3MQyaWBPAKGmEdWJ1DAcKwR5GJgBCCPbL4Z poV7NtJwfs0tN+vE5IqdxRu707Px3Omoc9HUJqF7mwu+dr8R4ltMkUGH 4XJpfSty7/4Q4B7Y/BrcJbYduudi4YmwqmO0ffFDJjTjDgJGCGC/DFtE HAo= +bartok.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:216:76ff:feb8:3c02 +bartok.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. HKozneYfqXBLk/3VIcSTDGY3jb3fqQfjvl2yKN3rTkYUrewI5EwSMo4p kXfkCZOvhu24UTuPNjJClCa2eDmuCOJ6uRfHprnF5zVEDOXYdibYSF6Q VAHEi7hzKdJVzk+Fg3BYdxkjzx2kq8jCSF7LAMQ7z1I7eJbpRZ/ORafC aHE= +dhcp-01.nlnetlabs.nl. 18000 IN NSEC dhcp-02.nlnetlabs.nl. A RRSIG NSEC +dhcp-01.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. BhWsjNlZlugg3KMFyaCTK+jX3JXiRsGA7KdKWvP/lvFkBS1nSI4dwwej omkDGiNWa90NGZiBx8A41eqykM9SJNi/+57K6jEKI8X/A1CngK1HxyyS JZyU2sbdSqV7MVERfnd5i7ZbThS5M90G/C2Dr5tJ0pMUJ9mwr1PN7mbj jlw= +dhcp-01.nlnetlabs.nl. 3600 IN A 213.154.224.64 +dhcp-01.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. Q/uN5lccCVcHi/BW3QL7HbQFSjw+9y3kFy00WCxo52ydjo91bPLME3e3 e988ajyZDWDp9BGmIe6lYjXaVpbzB5semGmlpX6ZKw9Ngq8BVVvCIfcN QLEsqzFsnQCa0wrRXqTeBsGa/msU3y09UJOpMBvVndUxjpX7liAMz5Up Iug= +dhcp-02.nlnetlabs.nl. 18000 IN NSEC dhcp-03.nlnetlabs.nl. A RRSIG NSEC +dhcp-02.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. h0JZ2yT+qAnoZc8C5x/7F063grW9x9nIyY1yHVhLHknwcJ0i7CA662jA FxdsEpj7r9oUrJKZEBC/txzeAb//mOM6Dt7xaQWL2JaqmGjRaIVhUX7g zmGTXqGxNr8+SSLwe8+D6h+FJHXirO495bk6fpa2AQNxlraCROV7IdFW Sik= +dhcp-02.nlnetlabs.nl. 3600 IN A 213.154.224.65 +dhcp-02.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. B08kP1Sw3I2JGN9gZ2WOvmo5Kg0dE/9Hu3zyoiJei2Ed8iNnl7G1snYI bBlWqvsbdqxlcwuV5wcwbkgmXsHQbvuSLjShKTyoJglqdMI3etKsseDT 2kBZsxvarrk4fXVlvTI0ICm35tKEgBKT+Nw87z+ZSd/a4zpIToLVIQv4 rio= +dhcp-03.nlnetlabs.nl. 18000 IN NSEC dhcp-04.nlnetlabs.nl. A RRSIG NSEC +dhcp-03.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. c4G82wM8U9YX0ESAPFfjosrPTivw/6Mbqq+DtqP76tLG2Ukm5xxth81w HgUDiOVegTQpJbaHXdwJL2gjzTsN3WTdn+5/ivGUSdH7SUiIkcge2MGZ Oz0Q/iCvDs/1ftDYW9SWaizuNay5Uyg15LCasf4UrVam5JcQtidGiBif l3g= +dhcp-03.nlnetlabs.nl. 3600 IN A 213.154.224.66 +dhcp-03.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. bTv4qvtUqco993fs4Oak+BmAU8CyQhk5XUBXoKzXYN4T8Fto5bFUkYi4 tzlzKzNxQpMpKww5uNPBOjxpyi1fBZDt+qZqrGzFiQ6+sq4G1x8qJ7fm h6/wW2QGYNR7A9j9VGmDmlGL9dOwXkNBGuKVPfD8n6GFF1FJ6HNJLqr5 n1U= +dhcp-04.nlnetlabs.nl. 18000 IN NSEC dhcp-05.nlnetlabs.nl. A RRSIG NSEC +dhcp-04.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ZquGGtHlQKK+D3CUAsWPPK/pyjtR7QBrrs4OTtEFhzJpkvm6kpYi6Gtf TtMy4M8LFFyslQaMsJM63ByzEf2LjNx3vUjgi80vbl4/dZhBDcegaBcB QBUZ3BUdDihfmjoZk/GvT4ddKoU5l8xGhbeG3qKsfNrA5VWVe51UgwiY dpo= +dhcp-04.nlnetlabs.nl. 3600 IN A 213.154.224.67 +dhcp-04.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. p34f8rWzYb5wQUsk20o+vWv3FfdJ/mbjVoK5zP6WZTIKUMxTAiXihLwB yhgQlOvJKJFT6Q/AZPC55lleZ5h0hE43P6S/9Q9rWRZVUJtrCAqy9xo2 QvRcsM/8VHR8ziehErSGHCSFdsiT6ANNMuO3FC5hBSRLrE8KHO5Aujum 0mg= +dhcp-05.nlnetlabs.nl. 18000 IN NSEC dhcp-06.nlnetlabs.nl. A RRSIG NSEC +dhcp-05.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. fx9KvvNQgkNrk0cbOJGqUAXIKSKLaS/u3zmdaKKEVJH+Xy2UpX1vGHgF WSgg6Cx8vuYu02yRMBv/PJwI5gg5flAXVfP1+GsT6Zd4c+fapUV6BPFc 7YNANu3eRv1kdjwEVZlKVmmZU9TL6oef+RSXZXiF3Zn8n+Cv+fwRIbGg +0I= +dhcp-05.nlnetlabs.nl. 3600 IN A 213.154.224.68 +dhcp-05.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. GHUlG1mfvwOPXrgY8pUBAtDj+InxjGRUnilnnhdeYnpB9ioNgNAmYMtG peRjGl8I6TgC2pYySkIP4kXHBG+KU/BrwcNyHNTjwCtfkWRD5em3nUMX SAlbh10ArTwtDBPuNLL/JVXQlVnXFqWdzONRH7coi0CQmE9Pd0HIdDe8 L1c= +dhcp-06.nlnetlabs.nl. 18000 IN NSEC dhcp-07.nlnetlabs.nl. A RRSIG NSEC +dhcp-06.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. DQcSwxeQL1yAZyxeA0JlRRVgy7NPTvwg8Jblv4eSCj/+hC7MWCNnS7uw syCqo06hxK9cDTppyeiBWFig1+Dd+dSJQF4P8NxEgmLLh2TWXEvPPgFy cd/D4C+Dvra0nuu1QWoEJP/oQrHoxGMiRz5b591XB+MOyfNOXTYw7YEg Qus= +dhcp-06.nlnetlabs.nl. 3600 IN A 213.154.224.69 +dhcp-06.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. N7ETvKemqDEOlcFfL21Un+IXT+cYrANIGOwnw9EZC2V/qyRVU0m2WlGB T6VgCOZyBAL5D7tEEqBHlWwTqdzstL4R05xlrgwcXuIehMlKhk5NJd+H t8lFw5jWSPhAeL5/8AM7fKV2gubV2W219ogzuvirIMfOtzf4hyXOsxTb 03Y= +dhcp-07.nlnetlabs.nl. 18000 IN NSEC dhcp-08.nlnetlabs.nl. A RRSIG NSEC +dhcp-07.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. KNII0C76+CbI1nrRS+TcRYpKfr2jNZ4K1dv9KhGPSV74p4X/HlPD3gn4 B2Gyj7kHGP1t8AkIbhpW1PpT1r3AslXkNoI843/P5XcOIQch4xtgXup5 xMp3gm/WQNOK00zrE8DgL/qnl+zVZBjKYPivuCOse9f5uP+2BAc/F09r fEQ= +dhcp-07.nlnetlabs.nl. 3600 IN A 213.154.224.70 +dhcp-07.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. E4Y9q8xhxzaMHYz9z/2zJm/9GA0mMBIpJENQPOEYTuHA6z17/MZumBym NpuQKmPm89qNIKcSUT3E2Yn/iayPZ7g3B4O6He8FJbv5ZlPXhb+/nZiT POd3gmUGtrGxmmF47u7c+KcMgM8eNS7zLAwHfGYihjbgsW0riTxjzlko 08k= +dhcp-08.nlnetlabs.nl. 18000 IN NSEC dhcp-09.nlnetlabs.nl. A RRSIG NSEC +dhcp-08.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. DWcPcqjgKVIXnko5DR2uwWDHX2nkp66TY1pcZDKVRCxt1dYO/b28CSHB 7Fnr8J5/fwtV5XKriw4VShk5azAphWke+XA3SCWNUmJ7cK0Rc6XcszwJ 02bHFSHMrfT6uxM6qUSOXJBqoHkhw2clVaeIXJSpmYpFsAF5kgLajOz0 yxM= +dhcp-08.nlnetlabs.nl. 3600 IN A 213.154.224.71 +dhcp-08.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. UTP/kGB7yZyh8aRFgomdLQHVGoRU6rn9HuoH1Tbcvu8++MmicoeYyXrs ei6W6lVHsZLjVAnWqistb8NAsHeS1MMy0cYHDqFe+NQl1osk6c+lmXu5 VxRG79J8CLXHR3Nr23HPWFLjZ0RRyrRykQsjdpgBlcydnfRgZ3JrXyXw GoI= +dhcp-09.nlnetlabs.nl. 18000 IN NSEC dhcp-10.nlnetlabs.nl. A RRSIG NSEC +dhcp-09.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. luSV2RpmFyjniakKkCo9sY4ZqgAOIo2k3fWmsZeIKEt7C2XD8bKyVO6v iL/55qSbd8p+xs/W6fvWtoDmlgrVk+e1E47UIu7uthbV/nLCyskwM2y4 ZX9VW/yC5WEgG/bzCKH1AY/ucLdYH4b/hD5IDyhM62ZXAqk/umj5zR27 bQA= +dhcp-09.nlnetlabs.nl. 3600 IN A 213.154.224.72 +dhcp-09.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. pjayjQAL8C2DUDJSSLxT2WaVbcRAObAGU7MCEQO+KK6jnbKpXM1lzVuC NFy6z0MqyjjcRv6bsBqLW22XJicJ8uEJxqGKD/w3RUF1mXaGVKj07z/G DpAH/ZuPeVWrlXrszLEuqXKeFd+UMvWc+0Wmfyu+SbAySmEeBhT0UqUM 2L4= +dhcp-10.nlnetlabs.nl. 3600 IN A 213.154.224.73 +dhcp-10.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. A6M/86z7t0FHkSboB/cXkzI4LduR7WYWhMHk/gPOVlWJkVtz6tl/MOaW PIC1Ls7e6qMdNLZpoKxsUUSnjYplurZXOPsi5rR96gWCuR4IRy2Lq+Fu IuVATPhXeKwexSwxDe2A0Ah1RdcTGQRxA763d2tsxenSbmRgSWZRwO/b SnY= +dhcp-10.nlnetlabs.nl. 18000 IN NSEC dhcp-11.nlnetlabs.nl. A RRSIG NSEC +dhcp-10.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. jKRrUspeXbc+oMTAZxt8C5TLK1PogrPcgIa02XykMJ5r1t/laYI5oXry tWj2S1l41zfNopBmSBGwysDZk67k41lj5Z4Hn9ytLsYzKCaOuOeL8LF0 +R0IlpJKZCZ6EglkyNBnTeXF8XbndoRh8FM6H0OEmftr906k7XQCzIlA WsI= +dhcp-11.nlnetlabs.nl. 18000 IN NSEC dhcp-12.nlnetlabs.nl. A RRSIG NSEC +dhcp-11.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. BbTDena3H6eEte8SjPGF+B8wQxd2Z024yUVPRs2zWfvLeXShVhJ5PbXJ Z8J4O/8iVxidFPWCr34YdJobtNcDZbMNPdfiLiyWT4LChBEAqWNaBJ7d uVDNxoKiS02aKfrKoOhTWgjf4An0FGmDh30Qxj0Mdq2ck7cNAaVAgCE/ Z5k= +dhcp-11.nlnetlabs.nl. 3600 IN A 213.154.224.74 +dhcp-11.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. ClbgLhqTC1EbKUoYJRJpIaQQKvBEWcxoOChOntxYTFw6vvPSx4C1M8Fr uDX40OEO0NO/l3IwHpBCBKrtKcP0mpdnkwcB3Zu12dlUuZSv8Syx3bjE ehXFcRktbh45M9JfiIuhI6kiN0SjWdK59LJzJ1PMGAOwiKjk7ZxBtngg qUI= +dhcp-12.nlnetlabs.nl. 18000 IN NSEC dhcp-13.nlnetlabs.nl. A RRSIG NSEC +dhcp-12.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. FAaeKtLXHurb5H8utLHKy7Y75dgQaE+qzcM8NYRjxrVD2qlHRQb+Wj2E 06He2jnOu/XAMC32Auuj0mllc2ixodg1hTCX2z/HyjM1RHR4dj2ZPCOx arKTpiTVd2J2UUabb5aUQjArlzbq1grIvy5fnkRfP5hBprq9Z8S1acVh 7Hs= +dhcp-12.nlnetlabs.nl. 3600 IN A 213.154.224.75 +dhcp-12.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. hejfyrYuoJJ4kJEep/dD/zjIAYa1ouw27xRj0G1CyTZuiyEmZrqgwPzc SbWcVI23ZoqooE5EYPfr/l8QJj0JHpc0QNlxVa/lC9BGFHIVVlOZkvmf qYkxBw0AZPzaW6oa7xA0aYHyksLOwAnaVD1G/P9k3TcNceTbRTJTqvIK 0QI= +dhcp-13.nlnetlabs.nl. 18000 IN NSEC dhcp-14.nlnetlabs.nl. A RRSIG NSEC +dhcp-13.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. NpHGV/R2Nou9bOLma3xNhFYFTs0iFC4ys/pWuyizz8YmWB32/oJCQ2wK kruitBPuEna3AuYtT5sG07AO5e4ueUYXYG2vLSUn+j6JrneL+k25zH2Z rLE68W+J646iIZZ5ruKraJ2Y28J8GZzArshwFwR9oRi+0iM94jdspIV1 qpI= +dhcp-13.nlnetlabs.nl. 3600 IN A 213.154.224.76 +dhcp-13.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. ZKDNqZ1I/d7KnVUnzakaPHKCj2A1Z8W17c5diDVvrWKeudgeHBM+JD+9 0bfAHH4gbgosKANNTGXA2cpUHlDlJoADhUX5sfd9+l5amxZAqLtC+QnX hea8LuHDIlMQQG66hsX7qvvzVpD1MuK5newEpJfKVUeKHbp+tFRSLGCr u3c= +dhcp-14.nlnetlabs.nl. 18000 IN NSEC dhcp-15.nlnetlabs.nl. A RRSIG NSEC +dhcp-14.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. c9mU38QvqETEs/v1y0RSeNhP3XELt2dhm4m0cRrYHkqxEERwt9NSDx9n gL9w7xVhVcnfzCXDzIfumqL+ZCjEjavMZ14X6a89CD6lGM+b/dqQoMzw ijeOSTJ6hq0p3lZYS13NXjUaQi8jwCeFNb2q2+TDhF8QPzJrW650Z8IB 5v8= +dhcp-14.nlnetlabs.nl. 3600 IN A 213.154.224.77 +dhcp-14.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. qUR/vpPkDIEQAa9L+a3QilfzvjYWti3btPUdal0gQD1+hmkMlFOI5wGO aaKyDU6GSU8F/i9VmRs3nuggKWVLoG9PJwkfZoDiJNlE81aZ+sKsGE1b AL2Hw2ZYqnUT7LDtzWt/TslpJcpxS0usfMfQtJN8E8iC7kcFEsCcLtyw z0k= +dhcp-15.nlnetlabs.nl. 18000 IN NSEC dhcp-16.nlnetlabs.nl. A RRSIG NSEC +dhcp-15.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. lAzCYeVTtrmNilOU9SuymQSyziT/qysJLtf92jY1/u9ZfG0wHMP7HE1n c2k1r2yCPKvjnJbNYEgYZJnjUhk8HH797TWkWQXY1dGJ2Vw4fPeXiB8b qH685V5i4fSjWkW6bk32WqdkpkWkLs1P6lzfWq5aQg3csQRWdOfw3HZ3 6NU= +dhcp-15.nlnetlabs.nl. 3600 IN A 213.154.224.78 +dhcp-15.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. k9ji4tuqlojJjFKGL/jlpXZDfEn2OUJYQdu5VJOI9vlGVcdKlL/QMERa vLweoleRNTdu0/Tt27caz7TrG0KtLhM71qRS0rd9X8fmGkO2PpxbvuJW yFjY/ckv22Y/K0sKn1zCf6/o1XxR2Wro6D6+V/u7KLYnRm7aVa//D5ef zfk= +dhcp-16.nlnetlabs.nl. 18000 IN NSEC dhcp-80.nlnetlabs.nl. A RRSIG NSEC +dhcp-16.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. e1rPfAwWPq9LBn2AXGgw43W8eO7K/VUtKvnGJ/ennRKlfJu5vsqDnhje zbQh2PY33jy2LUuLdGv9H3Ba2Hf4i8skK7YjcXI0yBMmWLiBHGoiF9i1 oD55Fpk+77RLJp6XU6wNDodsNGa83zsAfxdySrwy3USNAkIn3AXee5l7 4OQ= +dhcp-16.nlnetlabs.nl. 3600 IN A 213.154.224.79 +dhcp-16.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. g2qWzNzrbjlZVTGwj0ujmOGZzMmRZ0CNMZbMZVbBrf77aP9Lz1VgDvGL h9MPpBvdk3JanO/xZL+PY2Elkj0iTFGP3uRNteywdcUP2/Xx3nATzJzr eP5mIDZYDKiAmkoqXOLhouWXQ9j1xAJ2uinslw0ZefxaOF6MGpXihdos EYc= +dhcp-80.nlnetlabs.nl. 18000 IN NSEC dhcp-81.nlnetlabs.nl. A RRSIG NSEC +dhcp-80.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. Q52UtKoSAbaBFrJmT6SH7fHzg2W1HK3ybH/s/sqJSyaqZbf9pZQRopL3 ryiXMX7L4eGXWr4tOuOdVf8j5EboGEJfKDMRBZeQXEgEYw7VlCC0t5dP VALFQP2NKtYa7yZ9rXe7Ua/3duo7ydGpv4/acT0wwNNcW/Risx9pozH0 3OI= +dhcp-80.nlnetlabs.nl. 3600 IN A 213.154.224.80 +dhcp-80.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. HWdpL/uE9hV1FUjMSotBWtTlEJwT3RR36LcTyUa7/VHeL1H5Grq5QkxM 6Mf1Wv4zT9tjqTouDU7vkGlDvh9JN8eW+MIcV42Sugt27F+Oe/MAP4EW heYUF7Ez/7oZ6RWcq2I3n30x+qK3ehfwBNBfMchyPYEIqRIzWwyPVNjF 6c0= +dhcp-81.nlnetlabs.nl. 18000 IN NSEC dhcp-82.nlnetlabs.nl. A RRSIG NSEC +dhcp-81.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. R04Tz8a9qYlqNg6JPzNlAl+xGn5CGL3qEHJ6AM1C5uwZ9NU6vYdStNbp /gU7LJlMzcsN5wcS9V3dBsAap+P9awL9TUiPphlJA2O/37VL6pr2GmFF ZAKmJW28YN+dbqfeeiKE2mz6J+ZYcumlO5vPr46g6QtRf0pLFVkVlo12 TEE= +dhcp-81.nlnetlabs.nl. 3600 IN A 213.154.224.81 +dhcp-81.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. N6lkHwdgk53nhMoHDT/7cWhuybmHPMDZWPFEdNjnoStic3o8zlAOuXZ+ zucX9S6Pefw2fwTXlfxoAAs5TGU4WCY0I2DQszSDcj8polwDY5SJrJDJ Veu1lXXyd4iBzhZRww/VLoBmf44HLbB0kZ7ZbH+xlmwnbkRZ0xR+gvLb XoI= +dhcp-82.nlnetlabs.nl. 18000 IN NSEC dhcp-83.nlnetlabs.nl. A RRSIG NSEC +dhcp-82.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. HLiIvzxeEKcJF3NHZgrY1EhnZ+91fdLmvqePzKi7RDJZLxiTsCCdET17 FdQWRX4zT9wMg9WhI0Q2jvacomj1FGaW7jOJl9iEhPNPmy+O9HogWmE5 BxICgAkOJzX1SATH1tQnUTgXMarmmZd1YU/hc2mxM+Xtf5g6xs6VXotK VKE= +dhcp-82.nlnetlabs.nl. 3600 IN A 213.154.224.82 +dhcp-82.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. DhGvag9N4qTDfV2PpZmmDDwSkDx7QTrRAfH4SWU/fM5QYAMSk0P8g/4I dWDRL3BxAvvVNzfm5ATOEe+Kq+xNLDKAMxxRYSbaoeLQtEiRai+QUvrl YU7rgUpszenfwi5c5aVYeI0YvqC8DgLDjqIxcJEqvsi4mbWFYu2u4oJQ B90= +dhcp-83.nlnetlabs.nl. 18000 IN NSEC dhcp-84.nlnetlabs.nl. A RRSIG NSEC +dhcp-83.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. E2z6O6f4AHqXjlFaOMMyG8Xy9tCD89jgAmpioIqgOB4J/HgZHSzH0xi1 8XjNILyvYDnfjTDEcxUmfPHKBP8u7ngS6dKbKXT4+O4Q3ZeAvYUs3m5v h+U+2oOm5qM21k4CEIQmSSUFVqU44ASry4TbiT+Di9z2iqLDW17ajyr3 3NM= +dhcp-83.nlnetlabs.nl. 3600 IN A 213.154.224.83 +dhcp-83.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. XNPiy0sSgZgQjrq4fcTpxkRiHI8V6N+twVL1Q4A+3oFbAv4CLrvWZBnX 0N2cagdqFhLLtWNYxIw5P7wrZF/UowcxPa2KCr5DyDpo0JfNWR9En38G +XvV/f96DyR8LDnlfoGb7/PeopHnNP0W3sl5jXQPUBfZe6A1gh8Ph0F2 yzg= +dhcp-84.nlnetlabs.nl. 18000 IN NSEC dhcp-85.nlnetlabs.nl. A RRSIG NSEC +dhcp-84.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. MfJPB+IQxZs2N2x6qjCT3aJ27it8asZedsMrRii/6ZEvGJ0QQU5+x2xl bh3+mxRxbkTguk4Rf6ZPbbCwI3qa3ReP+V0GQTVFIctNmAV7OCreE5y2 svobwBThQp5Ue7U0l4w2u6r2kGXVISipYgll3rp8JdvhD1bs0HC82qL2 WGY= +dhcp-84.nlnetlabs.nl. 3600 IN A 213.154.224.84 +dhcp-84.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. KSgsF31Edr0e7wUJEaUGE1OzRU862UXlSISgmqyjLyqrR6HqyvtVAN7E WWz22LNwZdEKUxqkQ3EFNISGxcl0EgnIuM+1mnKNiWGLZY4gcxv9gyxr dHjtJC/03rCfeN5QDFqxwrZwRcChiyXt8sHDM5t43fWjb0bumjkMt0qb tBM= +dhcp-85.nlnetlabs.nl. 18000 IN NSEC dhcp-86.nlnetlabs.nl. A RRSIG NSEC +dhcp-85.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. HMipwg278ezTwQ7XW2SLz4rF+QVZRMPwVrxQ3elO/io0juBJLGDiI6UX GNZ8HeoBVLKR+EbXR0uzHj8Bu/nD/+5463CXWFDRVH26cBG8ppkD573v H8kkAsf1NBMSPvmxsnk100vfgInjsdVjbjPViVmq0MF+SUrfCDK3UwGi Vz8= +dhcp-85.nlnetlabs.nl. 3600 IN A 213.154.224.85 +dhcp-85.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. fdbeSnzQ3oDiuT6+h654Z9Q4Ap2G0SNVGzv7fICz5cTW6ofkHHgRGpsl XmZnvHergU4+mesbBsGOq6mQDL5lFVuQpZkoU9U+ZsDTVa4IOHjuxv1Z 7Gq6ipR5Tv/FnJwkxs7IR7G6iikN+cRfWau1b5qfJbjxcxI5IaxxVOjn zGY= +dhcp-86.nlnetlabs.nl. 18000 IN NSEC dhcp-87.nlnetlabs.nl. A RRSIG NSEC +dhcp-86.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ZiLXpVFO2a/xUFHr+lCLD/1WxSDBTzyfu+m5KCT63eQMyjetTqhic1xo o4Evww2ePf1/WMoUopJ2ho0gnrsNv6fCRQY1apXwPE/5NW36PZn3h4MV ldlSYx1ut/j1THjNf7QxL/Rd+mcixrYcRAByvn2edfrhU5wuCfybI3MO 3/A= +dhcp-86.nlnetlabs.nl. 3600 IN A 213.154.224.86 +dhcp-86.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. f7O7tH/gA1WhQ/EOEAAsyXpEUH3+XEAC1Kmy1F5zMF6TFB4ynIrqiCbJ Xvdl1AN+WoEClK/bJ+Y9gLjRHzD/fYGSuO1wnPjJRD6WGynVtaYEfSal ly8UHRuywvHlKV4vL6YQ+z/FFegMb47WCvmEd1Gu3QvohyOJrz/aS773 gBo= +dhcp-87.nlnetlabs.nl. 18000 IN NSEC dhcp-88.nlnetlabs.nl. A RRSIG NSEC +dhcp-87.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. n5zIChy2yTS4ulHqNe2/obbF+JXcKWMs1DnLPRsDm6BaXRjosn32zrj9 P0hoQJNOQxhG8f2xKO+3jYoDXMLKh6qOJrjXjUHeaBBiuj5kxU/EUJRz YspUKC4oEFE3KcA5UNL+siRfdMsnAD+fUVpWs0msrr+aT+rAIeZ44r+B HD0= +dhcp-87.nlnetlabs.nl. 3600 IN A 213.154.224.87 +dhcp-87.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. c2oRlyKG9hDQ+WUdBshyeKrgBNmeZQi/WTMaWMN/F3iICYGOd3NF0JLd ba9LqpY2BHFvA16y1LfVFY/3aRlmFqp/r8GZcdODyC0UMEf1nSY/gILg sLWTdi3H2Fk7+64FfpUu0o5WaDNWQKHz2lAyDU9h403cOQbaDKh5IIMH y0M= +dhcp-88.nlnetlabs.nl. 18000 IN NSEC dhcp-89.nlnetlabs.nl. A RRSIG NSEC +dhcp-88.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. EeWOJ4JcjbHxB4qu8du2YOa3Xbww9v6kIia88YCJLfRviaUlSqXxkrdl UOj7HoNWMMVyTAAT+Zc5zGS0IZi5JdxyAZyfdC3mwto3asSDNhsT1HZA qpHiOQIXoT/+yPLgYLtpBxafgiPzLP+V4yW+Q1ZmrBj9jZa0+WILjmHz qv8= +dhcp-88.nlnetlabs.nl. 3600 IN A 213.154.224.88 +dhcp-88.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. SSdcAQ+8Dpuc+XfIK9R9vhWTjkOabSrolGYzCvrjSnSyTQQbzNGgLOr3 SEt1XOCEKQ9p/uK+MPvytuJhZEIJThhE7umCJ278+q2EfYHvtc22gMuc /S9b1QpX4iwUNmsJRbSFhfhW7huL92kEhwh2ABUwjD5j/wC8DDLKGJdn bvk= +dhcp-89.nlnetlabs.nl. 18000 IN NSEC dhcp-90.nlnetlabs.nl. A RRSIG NSEC +dhcp-89.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. nEMoh/PDePEoGN8sqX8+cwzViqGADytqVQgsUjD/dR/rpetLAo+r2NKg mAtRpC0lzF5AMFgqheKvqGTyKFhiiHUCwL2JO6xturvGQ88BiQLku0Dl IsNHRqrqPbRdCsMnnh3dFgnlt2RgY0tFAlb0QvtUFS4JFLeZ4zrE0CAX QYQ= +dhcp-89.nlnetlabs.nl. 3600 IN A 213.154.224.89 +dhcp-89.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. S1QrqU8nF0wHHwkyJDTNz85WGwEZAqK0S3S6U8X5o8j6t6YA5shoqRUg HNNG9i2T2QLAuFDJ6RFKTuC2NjaTtuMlKOJN6eOUBDG7r9JEkTDj79jV EDMjjXOBVhG4DVeughfwSdGX20o/CEcVsD7w/cuG/h86tloLCdAxXf+3 xXQ= +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN AXFR +SECTION ANSWER +dhcp-90.nlnetlabs.nl. 18000 IN NSEC dhcp-91.nlnetlabs.nl. A RRSIG NSEC +dhcp-90.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. cPEmnWaQJQflV/fR1LTiDn+EfCm9PO7DoIhjvr35dfp9Gx39OJPf5Fnc 4NC2Ay0gnfiJ8RmtWsd5A/rg0HYDAOqI50oHjmgBPjBaCDyclkZdCUdH r4wycksRf8yUWyrOc9EZtF7PekY8Pcd0HtaXG2eWH6h36qPZcuDDZExV ONk= +dhcp-90.nlnetlabs.nl. 3600 IN A 213.154.224.90 +dhcp-90.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. ZLV7Q/fuq/lxC7NuoSL3a8kkXnbvno7cujDLdqjNZWqMBWFe06GKYyFa lDQ6UDhKOOvavGJaY0dA6k+PoSzoL+bch3Ro+56/8+hNOGL33LDSiycZ 5X4bF7ghW+ggvrGCPoomICfoNVOKefHRBzKGBm6C8zJKjggb4FbDFeh9 DVM= +dhcp-91.nlnetlabs.nl. 18000 IN NSEC dhcp-92.nlnetlabs.nl. A RRSIG NSEC +dhcp-91.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. cJoIQjSfnuf/OIJXr+IQqHC+fl8bXlHrFEQf5PvdUgmYO5lx6HZ9FB9h dLuqDzLdVzPjf7ncBxiQrt1ng7gySAzeBqjezrTm9XqFoTXyK6W5SASC vSmAx/c8yHCcqsNSIWQWyo56VCF+ampF/xqVRO8xmmJP4EWJ49VOMOgt Smw= +dhcp-91.nlnetlabs.nl. 3600 IN A 213.154.224.91 +dhcp-91.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. DlSRwEHWgHWe+epmbdI+bo2fI3K+jJcm6plDXxy4b86Uc0wU25QMMbnV 6ksrJ2SAAXUzcdruJLlpdtdnZk6gX29w9KH9OTyIDDi8+Pkff16F1YQ/ 2WBrCDT/ogQFD7hLpmu5i5MuBSxblCigaQy1DWL8ZQLN1uIg+PIOG5mh j20= +dhcp-92.nlnetlabs.nl. 18000 IN NSEC dhcp-93.nlnetlabs.nl. A RRSIG NSEC +dhcp-92.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. YqjXuYbOomBjOwFVVCv7tg0ofoHrrvZRGmt2QNTHzuyFyvm1tVlYauF7 xHpTnFsdsKJMkWVNX1U05O1+gXI7mv7CiJmwk4ixap/oGNc/qT5ziOMm mEaW+HbD6Q3bMrb3/n3M3dQdU6aSHjKi6PAeqdu8k7101jb6qwJyKih7 cyg= +dhcp-92.nlnetlabs.nl. 3600 IN A 213.154.224.92 +dhcp-92.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. JGRsNgN+pLLGKqTkPRgGpP7wthjinjxS5aEI/SzyqYJ49jn58gLvUk02 j2rrC4zi14X74qaVg6Rqk5iYEaCnDD8WFF3rrTM2svyrxHtL9WooXVKD meuZUHo/S9em6avaMaJ4ATbrLRnyesDwX9ObKvFPqIB6ngDL7BEbdMcw FXE= +dhcp-93.nlnetlabs.nl. 18000 IN NSEC dhcp-94.nlnetlabs.nl. A RRSIG NSEC +dhcp-93.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ghKndVKwVwB3GCCbB05AQ+QHErd5hDH/eThxntJzD+t4XwfE/ba7w+15 R3n/rCMP8GZyOXIu4t9qRDuaqyx0Z2vnSDXVie20qilq+liFuSJc08oI OhD+TTUTfc3JeDFSq8966nE2iDOlga/0PlQv1J2ZWlHy6GW7uG9+erCD OQw= +dhcp-93.nlnetlabs.nl. 3600 IN A 213.154.224.93 +dhcp-93.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. OxOLXxd9IyHhfSZDgH6e3Q4kmu39n/STAFvveQ7lzrzABIiauIHqy2oR mteIYUzy3fV+C+GogeiowA6c9JROKzsU4DQHERP/WGM2TyYGVHrH+vuo FlkNEVUc85hbVySwXgjJDLo3megI0HYatldTNYt5I90mZOgUg7pSpLhG Wo4= +dhcp-94.nlnetlabs.nl. 18000 IN NSEC dhcp-95.nlnetlabs.nl. A RRSIG NSEC +dhcp-94.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. GiTajmO7Q7P5D9RSjFthAjKb3VFaU3IsEi1WIa9SdDCCgkweHh+a+42V TmbsSUxCEtHtHcutgARIoL1fghxAQUE0d0WPaOHlqsKXcIlOqFGe/uHF phydsYuyba0k5KwP5KQ9vpj55dUHmvE45EGpclooon6/j+dhYjlV15Kh MfI= +dhcp-94.nlnetlabs.nl. 3600 IN A 213.154.224.94 +dhcp-94.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. gMEfCCsC2RBehO29NobegN3YbUmPE6aml7dSEhVS2vzRXkceZ/kCDn4n yXkbBJA6WhZCR3XjIN9/YvGdCWS7TkbzebQC/btbEp1n0t/yDhjzyt8y 2waiIWM4ooehjyKRtr0B6GXv0UolSzK77JzHVtkaNOkNn0WJyLfY/Xyc 494= +dhcp-95.nlnetlabs.nl. 18000 IN NSEC dicht.nlnetlabs.nl. A RRSIG NSEC +dhcp-95.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. Fv/xwiUB8s25tD6FRSiaSHpO34hpxPZCGSQrkqExl8vqKP3B3dHtIcCX SiA0u22LlkehvpkoHUWzIhjRK2I5MslqHSzN+ZOmf2FNZd/NJruPPwVz lAjRn3pKQkOV1iqQBj0DlxAsTpI5r6a0dkPRcQ+qKs96xUXY6g9fhU/C pjg= +dhcp-95.nlnetlabs.nl. 3600 IN A 213.154.224.95 +dhcp-95.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. g9TfAoDLV1A+FXaLFU1pKxXYIk3Jy9nco8uvX6eR1lnuQkLg0ZD5Kmbk Yen8BuqlUDe7Tn7HFQ9/dq4y6eFXyoVi0ysvRw6E4P0yAwKHmvkqK0Sp surB64dt2MWKMekaXas8MTgCiwe6FkSutEO3/q64yGgFZcfcLTOy+8w6 unY= +dicht.nlnetlabs.nl. 18000 IN NSEC fable.nlnetlabs.nl. A RRSIG NSEC +dicht.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. V+b6TXHkfPt1DpfJdeQLIqlfyaev6ifluTkgA8rYA1ncehDH4OJtWg/a ChZBy8Y9LMzkQMFgqTBGjPlkrE6uzOlBEfZNAP+YA920KUZ84KdFutfL 0FYYracWonskOMdQvdbZNo0pFz/3OZr/9123okc/dCVEA7tavWiBfsBZ o9Q= +dicht.nlnetlabs.nl. 3600 IN A 213.154.224.250 +dicht.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. enxkeWL8VC9lsXjBnqCZt6BrONS/W6WzNhXJrhDFf/LBZTRdb37MgnGH fCBRqgKn/HozKPKAFtZiqsXrlsQ86P3mzlNm4IUpaj1v+y9syrFOjkyx 4/osLK1CZZdSEMUqROgoE9DQ+UdSJmKto2oUNxjidg8Ewlb7SDPXM/G+ ct0= +fable.nlnetlabs.nl. 18000 IN NSEC ferret.nlnetlabs.nl. A AAAA RRSIG NSEC +fable.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. p7JVmo3vVvAmgXLqEAljzKxhacRC6/T5r8SwF+t80zoEDTSTnS7wTmcq K/nXkkxUcQv/9fJAC5pZaj4karJURQ2q38EExwyoJGMgUvw7I8wzGZ/k /NMahGyGJLZf8hbcb0jLyvpnnq38V4DsQfbb9CcifcwmJkvS6cgHU6AE aOg= +fable.nlnetlabs.nl. 600 IN A 213.154.224.45 +fable.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. WWnxLKqS8bZ3WnJfmman1E9Xx+JwXM2/UVF78YjCVqCV8RMT6W2fzPCt ylgCAweIa6aG28hEGzPHCiWlSvQUs+cd2wUWbdDiVwle9FC+Vji9Iszs 19JQy3HEwiuZ4m3eapgYia+DRzJnXg1ZWaFgvhb6IW17DfHPVmcYYHku eQk= +fable.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:250:bfff:fe58:4d93 +fable.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. oOKls8T7L9tx2AqgyClKIcFquXD6aT3NYJb5ZA3gXGp+cPMbvnfixilu pD7XZF2i08AzmlOxHpd1zNw0jp3IMKebQ5eZcIV4kIyyuY6rFovJCmxW ECcLumjIKlyxb8h3Qj7KSZcPH7Pt0yw/czluGD//5LWA+/7gg+itwk20 2dw= +ferret.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. CaP8AdmTbja9YXpxnJfYsLWENSChjjG899PVPoluvQYXbfrLcb465uXe mp8MI03nySvo8786wGe++Icj9bXOzeP7zfUSEPW2UFREd3LsjvZB/wdu dfOApQcWBLrQEvD/++EGgJB7idf4cgrkovtW4elRWFpWHY3GQLCvbjGH UYM= +ferret.nlnetlabs.nl. 18000 IN NSEC ferret-e.nlnetlabs.nl. A AAAA RRSIG NSEC +ferret.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. FF69Elwu+M4nDJWr+f1UwyaL0UzAoorPOhZ8AZr90uuAeDdhNRZ9fdPj qLb4qqVj+5bDNFS4oxYyf1RZyMsHJPPMwi9j8STFh3uTa56JLSsK8zby CSc90Ik8ipnB/5fe0DThnEHzqGzujuPpX33pTgYd3+OHJCiCsTTJH/ml Tqc= +ferret.nlnetlabs.nl. 600 IN A 213.154.224.60 +ferret.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. QEZ72Z7l0zhUNTn5IqkoasFWSuV/cRasyTw3eFC/B2AT5l+0SQT1AlRd w1WHKJ+EcCeVdtujX4TbWgSfNB9Cwc90tLvWPTm6bq6WXI+LpfHEPw1m Vxi6dZAjncKN6S5GKYmovpiiipQgpA32vjc/52Ptzep1VZuFIXvHYesC 6kc= +ferret.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:20d:93ff:fe86:918d +ferret-e.nlnetlabs.nl. 18000 IN NSEC floep.nlnetlabs.nl. A AAAA RRSIG NSEC +ferret-e.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. EUhsopQYSHZgNW64CNKUOIgJ3o8NU+EhCXoG0GGyvBQSkUOUAdqzMHJ4 wWXvigqPxpEa24mrMZQKKnHyAq1B/cB8Bt05TCNblOCcUxrDATaUYtOt K16NFIGCmI7gRTt5CTKKjMDrVpH12uDwISk7h2MGCvYVnsA/NN4Y+4BV k8c= +ferret-e.nlnetlabs.nl. 600 IN A 213.154.224.61 +ferret-e.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. GDL06fR5q0+YsaoRcBHzNZHgZ9GRpIGFQyTdwUQLWGIl3XeyZgiMVU3g w1MNDk1TM/UtTOLgUDu+lG2QJEgRFadU43F2ubcSVrL1PahAoN7Gou7N JlagBdgXE99gi2UfPeePBwcL/COv3U8aTSIiEJ7WVODSVtR9l0PCZ1m9 bfU= +ferret-e.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:20d:93ff:fe27:ff66 +ferret-e.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Vt9a8m/XSjOcDurL+0H8vDFRXNsSlTgUVlsxmxQoNnw+2O9iA05i7UUl f2iubmnvgUmBpYa8ILp0FHGD6cyqD/O/wKKNpc4W7RoLBelWAwDVrhx/ yx8j5XXr56ER6XjoPPtCpNVNRvXPZ980VQr7HoPzbJWjOCAUovQ4YONT Ny8= +floep.nlnetlabs.nl. 18000 IN NSEC gary.nlnetlabs.nl. A MX AAAA RRSIG NSEC +floep.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. K5r3od2Qo7nQwgnggvuTpQcB+NX5nlXfFFVH9TRzlx3kSupiEROO3YUd GXtTBl4fw9vDimo2o/VajENF50d0yU6aqfgCHhnjL7rg+pWPbyY6w02M c01/F5RklmwPCiynHebJ/RGXWSKFUi5/hNKr0LCIFae4YydPNUCHyivI 04Y= +floep.nlnetlabs.nl. 600 IN A 213.154.224.37 +floep.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. pmC5tXXZPnc4Sjfmcn4ADpuUbTdKAx9wIm5hflE6xCYnNGNCCY2LZDBh eggJtjMTsY30a7/ziDCwMiG9LzPoUo3cHURV5vVwSfiqMFDSyMrNxYQU aSa9tl+TdP3pxuGG0MG0MykM0CwnkjZOG2kTtd09pNYgg//iuD7UnAp9 6pw= +floep.nlnetlabs.nl. 600 IN MX 100 floep.nlnetlabs.nl. +floep.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Ix/ol/iR+Tp70/bxUifh4FRu2lK8WDpj6aGyNFyzUrpSQH0cs5ZL+Xns S5fnhmGjkCm+6WCSr6oT1ncKqNmztwKBXFfAjkLQK9iynxDRC+j/ERuv OfxIh+nlvZ5pZXDIOJx4qzHSGZYi3D4bDL0otSjJjXG4316nzeeGIbFG c6g= +floep.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:240:f4ff:fe37:7af9 +floep.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. SekN1WZszjlLSrVN2FFkRGSB0MVcTfsX0GEMn9cknFsA5hItnty+0rlf A++miOFdb6NbxNaoCSBLA95eldnEBkTOy3hp5rMHdQpjUxuzv31z3Kc/ tsMFBajyv79SFWibeUxzwS6kdgabO+yA8EN3S3be2f7/+n3dRBYpxxle cm8= +gary.nlnetlabs.nl. 18000 IN NSEC hpr.nlnetlabs.nl. A AAAA RRSIG NSEC +gary.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. k1ylHPSUOzCI+8eOhyJi1RVtc0g6SB+EqDEi0e45fsBh3Hsa5yr7/bua aK3NUI7OHRVjEg0Bs27UmNTrfzmNpFfties+eh5QTbtJ32DqQzzKCPPu CMfGOYVOqUrSVqAuYDLq2hVQwTLtvV6u7Dc5pCDE2RslGoqhL6BExdn5 0wQ= +gary.nlnetlabs.nl. 600 IN A 213.154.224.58 +gary.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. FElqOEtxgXvbJJbXE4e/0i7w/tCCCT03SC3Q4AJZ5wzhjyUBRMUQ5fZ7 Xa2YFUYtWvtZnuP74mIHc1mV4lUpGwT3TbXOVqCX45UaIA9GdEoFDeay S2vJbYRrdJewLGJHb8uIqFi+8MvGQWIm0TcCFd4s3CEMpoPASe+KzO3p ET4= +gary.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:216:76ff:feb8:1853 +gary.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. JiqXQWJj/xzn9NopyM+M0p3EVdg/QuQZbZ+o4bQZ5JWHFvwzXSkjjR6u SDmObQTJCWVmgFvNQav6Y6Xh28Vgw3wO7ut5i3VOs2T7GAF5Ezr2tH2E rPP6NjgmvWgYwNSDCDuyzFIunNocVnUHt1VMk1FpfTxD3IIOY12UBWhL wuA= +hpr.nlnetlabs.nl. 18000 IN NSEC iii.nlnetlabs.nl. A TXT RRSIG NSEC +hpr.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. aS/em0n3uWpObWr73TyAppJfzVBBqsm3ItqrejZQwvPneUbf/VFTcRCn Rrkr1MkRpGHc1EKe4UOikhc/BLh3/WSlKeAHphVb4FxOHsik1gA9mkWN GgczZiB+iJhoSvXCrB548DcCC3kWRM7llz1GsbVfdJMlMu76G+K8j5DU 4vc= +hpr.nlnetlabs.nl. 600 IN A 213.154.224.35 +hpr.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. MtNG5jmsGvikF2+8VeM6YmtjtdwyaVtlYp2TOnhf9f/DnwGbHF6IyNp7 e3UCGaVSCe25nO3LXC8Bd/B/vXDrKhlvwdeLHnQttVC/1FukNySWLoIl 2TQMo+awluLnvndbSqinZat3IJwy7V3PHTTJByVagg6qf6SahBwPaxjG 7L4= +hpr.nlnetlabs.nl. 600 IN TXT "HP LaserJet 2420" +hpr.nlnetlabs.nl. 600 IN RRSIG TXT 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. emQOMgaasP6+meaCM7LWQA1euf7K0cKe84pKOJj5wh9ZcX+gIpORsTlt o7wvqbEq6khMRNkjtyqxaJW06LBw/diXtPqpwNbl+DfEXHmtU/QRoJzm tpEBaqZbmBcWXjBZeZJ3EJ4ZLxl1L52JAwOtW6FFtxDzt46pp5mB2DSZ P2E= +iii.nlnetlabs.nl. 18000 IN NSEC ipdns.nlnetlabs.nl. A AAAA RRSIG NSEC +iii.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ASgNY0oaCiUS8DJVzRrPlF33EHjAnYhyTfFjXIUqxXraoNhMba1qqgIS AsBUAbaGfBsxl32lbLMvb1utYrCUtfo+ZMxjpr1EK+KhD0QQoudVI7Yk o60VHl6mrsZXFlJ2DBm/FLYbkMbhJFzI7DLLsRN2vQsCeOTjPHcSw9wi 4Yk= +iii.nlnetlabs.nl. 600 IN A 213.154.224.1 +iii.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. UjvIGM54znUgTcuEJmR/e8u3jnmG1LM/+3JLZmzDdvNMVnW3n+K8qkEz ERWJwW3V+alkN2Rl+udErP8I7H5lB5YmtQDeGnZwiu4k6f/J3gdmNrkx MRpSnEtVYeNkajjPb0xX++7emchkeSydAA/Jt35cEEaMZwvWXkzaUyI2 MYM= +iii.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +iii.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. LzM3IiVN+rCNYAHM0/9Hd2b8q9gO1NeTxdIp4YVnrQqJMYIR+cwmJ7ie 6s7L4tlbbPsuN/rwXTog85dPyRhr7p0p5qFiHePXuzZm9sFwBH+hCrp9 F5/Op0YfjRGDbaQ2Aa2Ujc75Xp92kWVViJWP3efH6/FyGXARXR0OVPNS DM4= +ipdns.nlnetlabs.nl. 18000 IN NSEC jelte.nlnetlabs.nl. NS RRSIG NSEC +ipdns.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. jFgGPCL0aBhyG+xXjKy0wKlFosRlUtnURPnzSLAgjqU328xZUZK2k4Fe mc5ZxIgUDQdqsXm8B+1zKu8X7fnjeeX/4la8VIP5vRhIETKuDURyrU2S ZO/XYgMyzgXGo91zVxsOEp5otw+w8PuVJX0ErdE60v90KsGuzuy9z1NP aQU= +ipdns.nlnetlabs.nl. 3600 IN NS fable.nlnetlabs.nl. +jelte.nlnetlabs.nl. 18000 IN NSEC johnny.nlnetlabs.nl. NS DS RRSIG NSEC +jelte.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. kKd6XS6j7oXpvhquML+09ef+RdD26UJ/UF7byOsGUGnadu1d+22K6/9a mfvDwwDtLb+ozZb4mHkhsRWgUDkPaLUjwj4GIwUbo0fb/29XsixNt7XZ djqVS0RgoOC6v7MsOluENBN5CB1rL1DPyQYqEGg7coT9onlREL3fy6cA dA8= +jelte.nlnetlabs.nl. 600 IN NS talon.fluim.net. +jelte.nlnetlabs.nl. 3600 IN DS 31560 5 1 1CFED84787E6E19CCF9372C1187325972FE546CD +jelte.nlnetlabs.nl. 3600 IN RRSIG DS 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. MNtlv53uN3bLOFWlpqwZb6gWMJCkrCuUs1qrHiTPpzSyG/2Yn/pvqpRN pvS0OKZgZEv+xPodqFnYbFLc90//FFaMEiiXRh5M2M1wZbxdhf4CF2pQ Ip2E3TecPAZO1OAzxGJwXvYP/INFZsGSedP81+NmGOgXkDQ73hF8Pz7j Dpo= +johnny.nlnetlabs.nl. 18000 IN NSEC lappie.nlnetlabs.nl. A MX RRSIG NSEC +johnny.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. j3hxzzPIGSGWaaMCmsv5rO0exCMGKG7axgFN+zQ7S72MVBRsssddDa7J 0oFUZvKX3ZxH1oaxwuaBJURo0+2Z4ip4FJaqykY2CAHq19/ki55DDxiK 4hgBUj73gbeMeTWu01grVzdp5SdDCOP87DRmY0fhZ0W82it8bWYV5Nos pFs= +johnny.nlnetlabs.nl. 600 IN A 213.154.224.44 +johnny.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. EJAy5kI3QxNNABLIw/asxL2LjCMshjnWMNyUeu1pRd7KM3QQUDygnw+c 50MpE1y4X8LkBXDizazoUXPsqEGhq+fzGeFEhdB0DqrxVXtyQ3ikHa+d oVp2jdGiI5zl3yWBlxr4GtLr59jIB0ZU1sL5F0voBIAGv2i6PqArRswr HBI= +johnny.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +johnny.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +johnny.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. I0qgNxmzI+Y83gLAMRkbqXqaTAwXksmtS0bxyw9ZeZuP6p68ScV5siS1 MsOmqmdcoqLX9BRU0ekL2JZBIiaOCBrZg9Gt4+NMRQdaZGv3cR79X6QB W2cEdQO5dKVuzFWH/oFJEBoThetFNKaEPNH7jlZSUMqSpBEdo6uHGOPP EvQ= +lappie.nlnetlabs.nl. 18000 IN NSEC localhost.nlnetlabs.nl. A MX RRSIG NSEC +lappie.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. EC+9kJ73MmOyyXzmo9Gf+CoNDEItyKdQB6YderLcv7or9CcWPnZ6hsW1 aZbU4SPYjO8Qtyp5O+vcTY3gFyex0eVmCSI05dNEY9VNCACfb5rUPtGw 6Q+Fc2oll0CAJhFRaRWHHfEoDuDh5MCNjnGM6bDax9JIKzJBi3cNmS1W VEc= +lappie.nlnetlabs.nl. 600 IN A 213.154.224.55 +lappie.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. TXeBHEwmv5bQDnkofdL2No8B7uf2/kQlDMRZh/yeGE86vIppxXZ1I42V SBzM3qEZ+dPWxJZU2yWdFcX45+NVIxQp/ktgaTNHcgPRHalX5B7gbd3N Ga4niMxUSXKQM3aZYqXrxDLvWjYaj9qH23AO65rF/sANAkPiZp4+/GqJ zPc= +lappie.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +lappie.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +lappie.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. pD5bMt84XFoNJDcCbkq/+xBLg/yb1nPmfuYOeE4YaSV6lFFmth6HrQiS p86ErhD80R9omATBTEEaHnuYw/HxHUM219NA1kKO9smocB7oNhsb/Has WrdgzlzMm1oGyIJknuVCXFQQo/Z9kUJyLMLPntaOAORsRwuRgOn60JMb szo= +localhost.nlnetlabs.nl. 18000 IN NSEC loghost.nlnetlabs.nl. A RRSIG NSEC +localhost.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. h7Y5+OptNNj5UMWuDnRARnMbf0IKBYkii20PAHEQ1+tBtfA5bv1aavrk n3i/amzJLk5GV1xAoc459mV0+RcTzOrlrZZ7MwsvYFmdiB+0xmplRTgn 9bF0W43LZ5mMH5pFyBnygc3myoDMxmrgcdhjiW52JRCX19Ui0Dn33lZ3 dYU= +localhost.nlnetlabs.nl. 3600 IN A 127.0.0.1 +localhost.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. T1giRKds7G/HjqKOgDnGXwsRDm/kt6c4cWs10Xd0vaVKmeEFyi52+YoK j6AIRlHMd3aDJO2F0yNTy2MufDZTHVJ6usyGw0+GEi6Vf0AT1lAMtg5i /C4i38KAwJXLCNWQxPTfbAubpnPOtt/078Oq2I/MLNGytcWyRXApyftW J/Q= +loghost.nlnetlabs.nl. 18000 IN NSEC lustra.nlnetlabs.nl. A MX AAAA RRSIG NSEC +loghost.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. VcO1o9JRiqFCkOCgizKfCWslCQObdt7QrvlSDgd7kkcT0UDuDcDMcD42 jDy3hhrJkmU+ICqx1g7CaaMIbsOPZWOsZi/qcNki6oEuLG8gRD55F3X9 TGApgPAd0feU1S2GuEBZSc/4oeizx4xuYrC+RSCQlgl5OUwJf1Iql1v0 Iwc= +loghost.nlnetlabs.nl. 600 IN A 213.154.224.1 +loghost.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Qa7seOsz+RF6J2NIk2Z2WQio+qoxgKHNLdYapzooJxvkghOQCqF2Ogto ykmmTvZTj7fUoZ+gyipkosNi6BIIxIUpI/BaEtEEp/sZK7vQZsGXHoqS Etoduv4dEUX1ZjVtBnuzW8BIg4NzPRXtrHTGox2SNcvEHpB2QrXD33XN BxY= +loghost.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +loghost.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +loghost.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. VO0p+Ygk0L1HIwrCRsy/6GAF/HSaWZjDkM19iKhtlA1rmry1DQ4u0Zoz GV4gWLmuqxxC0ablYo3TPP1krRTuVowfEsxOPcInP1NbFXtfaJxNh73a KfyFOHCMbLboBU7pQCdnKjXZOqrOOaipEVAkPviAEhY9Rz3bHeDQKmTX R5M= +loghost.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +loghost.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. G0G/zsG2irSSY/Ym5Sk7e4qyfXU17S3gueNN/3it6AvoT6twshV604GZ 6aFRvpmx5tUhaosSV6uASzeZ65aR+5/kZa+IJtmzDoVliYv3Z1T4Bu85 MFX3ep0OSjXkF8umDzopfgiv89UHU/1lM/R+8WcgIyNBxpkcr0BDk5tL CZY= +lustra.nlnetlabs.nl. 18000 IN NSEC markbook.nlnetlabs.nl. A RRSIG NSEC +lustra.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. eI6c1Zvg7B4W33c3Hp682BUQFLldh/cuZU9Ynk0Ymga20lyjGRS27SYA 1PNiEge9h6dg+nLPJztgz7lexDfdp2p3ZLq4guNiGkN2YaQDMxoGzeOd zG3hHEyzTYKCBbdAlFmuy+94eIp4GWptlhu2vgAuWjvCQxvqAoTKIfiU 0q4= +lustra.nlnetlabs.nl. 600 IN A 213.154.224.52 +lustra.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. l5CL80Ow8dk/Cv/Yq6U1Fq2RuvkdrU1zvdh8SMIEim1JljsqV1YsyWZC AwBTH6ms35sG8MbiF5X0luwAV/V30jL8CUrB4EhQCA4TDwM+xSYZrEi4 wfb2KpNsX3GNDDa1CV5YEqbJEp69EmMhX92Wg+L2cd+0xXop1Z8PmKKw W5Y= +markbook.nlnetlabs.nl. 18000 IN NSEC markbook-wifi.nlnetlabs.nl. A RRSIG NSEC +markbook.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. BWuNDPuQ/yQoF6cI26tayhNArrClF9stzilmBnQpewBPuthWEllswZpQ yGKQ1cuBw189DD4rDN+22152lttO7Evwgf3rQTrCCIwpZm4/xERdLVbH 0/vwHVooJHgA4hjX6JeNkT8UrMnyTHt/0j/uZi76YI4jkttGKBQTw1IH V34= +markbook.nlnetlabs.nl. 600 IN A 213.154.224.15 +markbook.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. HDLwWv+UtqQvGPpr1Pb3NHqwt5bUqWOdJRx3a4UN9TAdjH2p54jjd+0Q TkobfBra18VfwThK9J7PP6br0ceEKBLXfI1bpOu93PMTmJJSjReocakw YSkwbjepZH9rWAMnVsUHEenjt6BfyIB36vKe+BXN+nsTT89JVewyd/Up nEk= +markbook-wifi.nlnetlabs.nl. 18000 IN NSEC mirre.nlnetlabs.nl. A RRSIG NSEC +markbook-wifi.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. Z9ay1VDAu6CFmZwnTBj/zBe/orvWl/KpfqcLe3M+YW0+Xmqr0egZKGtn b6DZjDBUAe0gsu+T5pGa0KL5QxX4SBTs6eIBqNaUmvwQEDFuaxjWiCTJ CtHItcmiWtCYSHMhqXJNehMFUWmW+MCtqQnBzHP/+ETvgwS8PXPrCi2H Exc= +markbook-wifi.nlnetlabs.nl. 600 IN A 213.154.224.14 +markbook-wifi.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. SxAdBN/lM9g4cAVnQbY7T2RyDxtis1DUjQ26N3Vwz9DpjvO6gF1mVZBm E31BIoV0oqx/qPAUZ5acIvelMvnabqeD33eZ8PPSBjLZ1ozGli0hNzD0 2zAL+zSfV6A/Ndl1f0FXH3L8yQnCYk1xamgvrWSwOqB/ikpkK+F0fy4A 0fE= +mirre.nlnetlabs.nl. 18000 IN NSEC motel.nlnetlabs.nl. A AAAA RRSIG NSEC +mirre.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. DXlYJ5kmPFQavM16V9QkoHZqHhmyTdFE/iF/k/RL/1NzZ/3G8gL+sXfI r1I1Ziq1/NrrYdAGkZTQqw3TIXMkqsRUFqpGxzPu8mKB2e+IGprzhtyg HanlZQLzQAecIo5iiVpoqK3suYgE43nBDnjbILCUU/uuiKCsqnqwIac4 7Q8= +mirre.nlnetlabs.nl. 600 IN A 213.154.224.9 +mirre.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. IZx+IOx6mC3IZWWjdhAfgp8GGpYpEWGkx+IuIYT15ScE71xcP8Erd1Di s5e6Omtt0roZLOWMAFzC9gxd1n1E6nx9hyP8fYzSDaNsp8mfJhTPl5Of 8NEeGyZ/lBlWbxlBcaV0dSnllP44sjDbmLZqQBWhWWtG+Z5Of0Sqiahs DRU= +mirre.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:219:d1ff:fe0b:89f4 +mirre.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. XEgipNwqEvfrpL2EEwBdGz4gtNMwJb9NQPrro1H85li59ts2yEH7GIGz CrSkI+nwXkNKhwf1NW7EE32DsGmYyWB6Ysg0+ISoeyx2gtlYh4NGVPav MrgWXYfg6p23w94fjfLGze2ADdcDpNmPSuz0q5zdLgEh5kSq09LAn//J txM= +motel.nlnetlabs.nl. 18000 IN NSEC nlnetlabs-bit-gw.nlnetlabs.nl. A AAAA RRSIG NSEC +motel.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. n16G/quCXHjHTfhdMdZUf836jZSHkhDbDJZwB0L2UT7OppTMBRwWL2+E /Gfiza5HRYCdOUhx7QBKD/eqXMwbASDuD2wfxoNXHna4aYeuHn47pI+2 cijH4EFslnwzyNvcY0m3L/fws75pmE9iKw4+e92sz2h3Pp4YG7IM+wTg +2A= +motel.nlnetlabs.nl. 600 IN A 213.154.224.7 +motel.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. cIVhYnVXBJoUll4z4y+PisMtJi9HAKQFVLN8yYK/dqkkK0FbMptChIJj Bqnoc3EghwIuGIi1sbAbn/dFb3Bsdio3E6mKsdBJ+Cit4TgqPTcQT05M wWMRKBNVkSVFLxisyAZCl78pNAji2DmpABtDVhHjI2HuhvFEqtUOUH4s GNA= +motel.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::7 +motel.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Ekv3MGcrn16kes3koWHMfw6RwXIot/4kJYQOJus1dICT7Zuhrpbhps2k msSNHQ+/ziuJ0dvmkP4TBZU2rFHsYmJlzEv5qtBF6MMzQFH6M6ZgkDh1 Ovv3Xp5XBGfSm+hJMLtzoWmS8p/22RLogOsiv8RGiKCD+T3UF8TnRleU XXQ= +nlnetlabs-bit-gw.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. OxxcW1xKbolFyiydndIfBIYdsb0jLL98VFEUsSaj2qstoLlRAL6YKORV wn/ssblwQsXqfdimVwyoNUvIdIO5rInbcqfBcimXDlvO8ihZENZZv4iw iHPxQ/Bc1pPTYFdHem+xfn/ih5i4oLLn6nd/v/0U1/immMWX16La86s7 Og8= +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN A 213.136.31.102 +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. aTs3q0dm27hE9RSCUXMxyqVXCH/bo18YzV1N31ywu+0uGAqEkhnwtZpm PNX1C/PJNbmeVpRlOR1oIJ6KV73Q8r9zA2/gWODlr2G7uEwed3Uife0j FRA4D1DRMIituvD3Tjb6UIyqV/qikPe2fn1s9Kcl0IpMJ8uc/HgIARnz DGE= +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:40:1::3 +nlnetlabs-bit-gw.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. a4kVuaQbmEs7Ju1slFsv+6aLqkVP1r330aCF1h1c/P+qayNYIpWibQHS ZojJtgVbB2eid0xaYXCFd1TK5BBTu58SSNc9G7vR8U2WTkhmk0bvBeyc bVgMSfiPJsALtj5ID3OAkxtvO1ZusiVbKPXHeSFIXKFHJcRePZ8dox/n /jQ= +nlnetlabs-bit-gw.nlnetlabs.nl. 18000 IN NSEC ns-ext.nlnetlabs.nl. A AAAA RRSIG NSEC +ns-ext.nlnetlabs.nl. 18000 IN NSEC ns1.nlnetlabs.nl. A AAAA RRSIG NSEC +ns-ext.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. OY+bcQreb7oTtgveymg0FWRG35NcEu9iBP8SHokm7NH2WtL5jOH7FZMR Jyaaq222Iv9TMcOEn2KEYqui7VaHkoQRS8YKchPHVS85YTDsjk7uULdm bZw6BqskiNKSo90bQDPBobvER41B3DGwvVUP3RDptNrEiMxhuIidGjOl yTU= +ns-ext.nlnetlabs.nl. 600 IN A 213.154.224.4 +ns-ext.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. lj0ArLI85OQ59mhEj9FPnx2UYfTOehnql3nAG8uNmnGbeepyIKDi5QRf ZKp0/eyyBFiMmKHVxvvrm1z0TtOULb7nS5325w9KfS2JQR4/nHAQZrff HGDnqZ8wFWVdnebhAqKzYt8paqlRc4I7tsyYuFxmKGZt4vi+1DQfK0z6 jbw= +ns-ext.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::4:53 +ns-ext.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. gKo21eKXSxeR+8MpSUnGVBt46BLOm39e0Jxolz4dc880hOiWlfNRl+3y vZTILWgTn9iLJ2wz5ZPZwuk9ae/EHqlIvJUx+RLZ+i7tCsMr7Y5P2ris 27Ar0I4aipnN0DIdXio8VQF0GCvQHj+lcFlqBcV0d0saM3ZsMNoZc4jW zo0= +ns1.nlnetlabs.nl. 18000 IN NSEC nsd-xfr.nlnetlabs.nl. A AAAA RRSIG NSEC +ns1.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. mRQhMDYQM8/0Dkn9dplPnHqV0+d7wv/rGItfEYNOOu5HwGLmcp0D/fC5 caFMYtlfu6Py7/zNWrs7Ulwg0H0hfJhaQhHmxXRmf4ereFdrEiHEpgyN A1Uw8HsDOjOPEJTSbov2FxYvjihG+qJoiQWF+35qJC5/D0s5M6vXib0f 81A= +ns1.nlnetlabs.nl. 600 IN A 213.154.224.1 +ns1.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. AJpm2iiICAWSAWfcyWSZtlywNWlLgMk3qH2v0OcLawL5GPd9gCOw38iM J0fwYKu34UF08Z7f+ytNA7zPGUFGND4Xhe4lQeYworPXh2SeMfggmWtB y9tjGGsxQJe3+ldRajSIP71fSuWsvcp/YhNA4Q8/pQ51pgrxeOuJDgOj aGw= +ns1.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +ns1.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::53 +ns1.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. mL6AM8KRQFBtCSy8V10Rjmn0j6PfWB8j8Af79og8DirJkUuIJQq7Oiy/ EaNGHHpThAwEvS/JwCZbFOezx9gLgEW6s/So7E+U1v4iMnjm/HrEQlpk aXcLm6sI3oNP46mlBuBKpbaze6m41wJZHp80xPCqEmbiBxDEdQzjUVcf VBE= +nsd-xfr.nlnetlabs.nl. 18000 IN NSEC omega.nlnetlabs.nl. A RRSIG NSEC +nsd-xfr.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. p4YKePcT1qhweFhgILxcioJgEgsQprIIpYXSSb1KGcWAizPsTB4VrWAc qBrHWL7ok1XMIUBZEJ1ukwjmWKdG2bIr10PLIRKpFQl/+UtzxRXqldJh 8W9rBrxvZnaQCSFCm/fBMk+TcH82F90EvLIG08Pbr0f8R7Fad1NEwsmG eKg= +nsd-xfr.nlnetlabs.nl. 600 IN A 213.154.224.49 +nsd-xfr.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. HK3CIL/brGoxxuBGd7lvhUUZPt4Xjjs9bxoiiksCxkj7aGz8Kchi98tO sulv4HKGFV9CqzCtwgL09cLJOq4O9qg+WF/ZqbtJhFCLMgOq1hVE42j1 ZQQ78ueVtaBrxztyPHZWha2lgJKj0KKU8B9SJwdY+E6nXqd1lDWIEBtM 5V0= +omega.nlnetlabs.nl. 18000 IN NSEC open.nlnetlabs.nl. A MX RRSIG NSEC +omega.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. fcIj3rZIOYBdooN8hE/QzUMFm8J1uuwKPTqJpMU0QJWvvGNVZRI0oNVi Lc0rKg35xkW13GC51MPx7fiBOdYJHGVi0azSAtGAn358Q1BkekDXd7CG jMxlZ4z5DxMbdxcUpIIcWu1JGLI8EZ6Oog95CSA1987ya6H2c33Qn1Dr uZw= +omega.nlnetlabs.nl. 600 IN A 213.154.224.54 +omega.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. PPGDFlV4KMJKObKpSIj5EamMQL0xN4jJ1ilmeaZiLyrf5o51sG2YyzZc InUOznjoI74m4I53uvyUuf/DaEDivan+5xHb5ZlUkQu+/JnK2zRXF20b iARFnKdPW8kNe3aWLrolc7XSpKqOXGcsDoa2SS8zSU3oG875IkQOUzwR 76M= +omega.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +omega.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +omega.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. UtSt0IyUVg+SiHBNkaz8S7otj2rpqZJQuKJSLb3bQvfXPJ9vnPvJsaCo pVB+CxXqx1GqjKj00Sfq8BZHbDS5OyO1baLRVXTNBZuXcjSDBksWEoel cdxuMG6If2R1rRfZnck3cu4DH2s2eQvk0SKUyfewOjp9QBuuGN/SEJcU X9M= +open.nlnetlabs.nl. 18000 IN NSEC pan.nlnetlabs.nl. A MX AAAA RRSIG NSEC +open.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. mxHCyGC0YrwXJ1EUFB4fEzxV9ZERmCJLkdiCYt3zrub0zzoUAmlRZkrq J+7/HHpozI5mI8NuSNYNHtbD1Nu7Z2a+JaHOgbmKpEXx+BiQjKmUf/fM 63mkv1gtWjluk9wLc2tk01H0JEEX7CrwHfLKX346i6/qDPh4Xa+Mf5p8 2z0= +open.nlnetlabs.nl. 600 IN A 213.154.224.1 +open.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ViuIpiw1c6a0roF+XCOSFMQ3BCH/qmy+lRcU0Y8jEeoN7vLu5rJlWUuF yuuU3kAx6RFB/XDPjxNzm2OER/JJSUUeagzXSqnJVL8Orj03RGpS2PAW 5p66uf5uMv34VEednxoGoigVHKIBfpIwYIbcaXAkDaRMMpw+ylRWwWee q84= +open.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +open.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +open.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. bXZIS3/aa5cdXU2k2vYCbfVj/1FnU8sI/4zAP5HNNVEl5PtNj3Zc97yi 0hj0grLoBqRYpwKB1ZzIVMWbJ0F/Ly39kx7yVWfQ047t27cXUZzGRWKu 3gUITW8qsLVTSr4tj1faWofrWTUZHRjn+5eT7stFTMKFQnXNRnE9aLb8 OhU= +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::53 +open.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. bcDWQYXDf6XEyNFeYeDJZTcdUCD4hbfzEIMCL1Fap4Lm6FNSvACQ8c+F F48UfJVdvSZeczDKgsHSm7nte81qYu4+lBQm5TuJcMkjgJakHumKGV0Y 17wIJAsMPiacw+NNICweKO4x4RKwNzWgcn1ymktYsiaPIJpOxQCQVJcU tlg= +pan.nlnetlabs.nl. 18000 IN NSEC pontdugard.nlnetlabs.nl. A AAAA RRSIG NSEC +pan.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. g126geXJj4BHuWcsmaG+gXMLh6qGya58U2gZ5KGIsLdqjyEdRUrwkwiP vOoXPFhPXYi3PnWO+qmCZF3+VZUYa4WDqGCHfkNtgV0VPmw0sTJvXN8q Y3I4ODvvYXwDSR0lzQvvZh5nXELGs6cMzEhxu9fU9ujBj0nA+3JL6V/t 23o= +pan.nlnetlabs.nl. 600 IN A 213.154.224.38 +pan.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. KJ+uPefKJD2HIqt8EYCsIT24kVRszJ74XwBlvkxuLZZlBu9ld4MBqfaj JJWssWPFGGHVFaK67afa/t8fn+NL7b9uF3OCo6iWSOrFlVzXcT+huQRI yokYnncKdbk4GHWJn7vjfFjfgiNZT5cbdq+e3zp/NjBuvETcyXGgQbDP 7Jw= +pan.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:240:f4ff:fe37:8810 +pan.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Et98q71wUk53WPF3SURj1QmAQLLVXolNVIihwSnZcosB1v4VtrwXIDGp JocHKH3gl5ixOrGFnXLSi0x5icJ/MEFRAEUd5J+CcXhAjMmcwim2mZax d9SWjl0bLjrcXrQNHKqUZJn3QouEkrAiP+FM7eeD4xJ8cWxD3OVj6Foh YYQ= +pontdugard.nlnetlabs.nl. 18000 IN NSEC qubit.nlnetlabs.nl. A RRSIG NSEC +pontdugard.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. H3nguVxothKIXYwrCGnsklJMK0eDOM9PLY14YZBucyT77GcXbrG8yUKy C6KztNFDWWMDWGF5yZloQVPqaBAvmTKFxPC2q5e/JrCiwmZfStcOgFhg S7IpIZOYwa9QBWmQShfsnb/2GJbE9H1XsvAtGw25BCg4j1CFeBDm+n7s mCg= +pontdugard.nlnetlabs.nl. 600 IN A 213.154.224.8 +pontdugard.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. WfJXmfIWFVRmJxloj73JK/FMwNyBtXiAvDI2eX2BLBu6DCc4VqdE2sjn ObSE7wOx/28Nt5TL3ZktJkW+pOvxDHO0WE9F4GtEskSZdFSV0mV11xC2 dbn3F23+S2MpgNN0ZDEvYeZIcxvpYoDAbwEbKyd22efzcIv+A9dlH11n kPU= +qubit.nlnetlabs.nl. 18000 IN NSEC roto.nlnetlabs.nl. A MX AAAA RRSIG NSEC +qubit.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. JhEWtMOZPbTlq3P7H0VZuGdLXVSxsTbpWe4Ers1zAUEKSZSpQ0UYKX+c IypwIOTgrRJLdPqKYeKWeU+/JVq0ZB2u0oc8fuxVnEfiR9yVILtbLwVv P4pgkzC/lUHU1GPljiqrLo2HngamQuIaznZ72FVrMIgFg3hZElHtturM /G8= +qubit.nlnetlabs.nl. 600 IN A 213.154.224.46 +qubit.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. frtAaueWLxb2/wzKkY4ltLS6yf7NAAMLxj4d6e/VAH7WrhFpak1sqQxn lGXOAJGTlwE36q1EtIOlbxB7ugvd9m8QkMiPkUE8OsdiafGcGR/o7UYH /fTBuqhnU6pkBztENZb1e1+elBZo9+dvkB1NeVkoildpZAUkdy1eYz0Y IaE= +qubit.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +qubit.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +qubit.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. HYpo/8yh+GsNZsy2jPGzr5ya/pBYNwXbcpIOboCQt3yRwbieodwn4uDm yftGeL5DSVsaU0GalM7OR98sGG5weXV7WlCccqAZq+SGLALyqJ42hXfi tdNSiq3/snDtx5e+RPKqe97z3jcbthm26SrRLxMdLtt5v0S0ppNGfh4v nX4= +qubit.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:202:8aff:fef2:f598 +qubit.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Pqlh2e0tXkamkSPQuvEQNqbqVWsq0RSqdgYSB1N08M/Jbe+BiqWoml7X EO90ir4ug1gTF/Re0vtEV8cr3lRofhmpHXHMe3dcVoZ538Yq3Eu7MyGV /NsjYGgNj2ek4sZiTt75/auvU6grx04egDJn6gvvsiVt5xnEwipNnP0S WIs= +roto.nlnetlabs.nl. 18000 IN NSEC sane.nlnetlabs.nl. A AAAA RRSIG NSEC +roto.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. GYigpeoLV9ax25m4mmF2HKWCbDT/flBZaBo8b8GBJ6RURaBr6ShcMe3J t645fVr6VOIAcNGDddSqqFOWvCIGEZhXSR7e7sjDJBKXVa8j72ANKN5Q zvfx5JDNxclWbsqiADgn6oYC9rp7KxvpqEUL/f/Yp2j7c4OP+xerduvf LWQ= +roto.nlnetlabs.nl. 3600 IN A 213.154.224.153 +roto.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. kBGp41jRARMoXDaLWWUD4i/jrj8n52a75EoFJMOgsy1/8QtWl9UpzGcK P8J32u4rAj8jQTprC9eyLYTXwPp7ACfqmCCSOeec1G3RLDzxm1bs6xzp ez4sZfbcbBlqI/MQccD6O6dTxI3Szxzt9WEM067QwdgU5KcLI7+noaxk 5DY= +roto.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1::153 +roto.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. psSEF/+UXwZpCYqhQbHU89q/DFkA4odxlEcLZZkZmJG1+TFnOuDDh+FV MYFhjlZfHiWoN7tIhTqGtHHh04xrlcx5NVbnphZMqlZd4PBl05iCCrZb FT9AhsHftolVgH8fq29LVO3tQso8pbYw6MpG9flGT45rZzTU/eI8F3Aw luI= +sane.nlnetlabs.nl. 18000 IN NSEC sanne.nlnetlabs.nl. A RRSIG NSEC +sane.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ZHA2sgpDy7DLxLZBn+4TWnfYIfFJTZbvr/qqSGKYaMswNUgsq5D0g3sg LS0721YI37qDtZNKA/6wLVO2epnKm0vzLDJSn40YUOMdTyCt/xXpV8p2 oUopbsQhflxP3AWNQ8VnsijhJQLgQhTdr7NEz8EHgHpFjgSjB1h4pDkM nV0= +sane.nlnetlabs.nl. 600 IN A 213.154.224.6 +sane.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. NYHvgCZCpgAVe5roAttvnxc4I3ltRa/P/VHUofQgTRRFIGJY2FzcinYH 8CHRN0BEdgoCzNUGirHvYnbHin8PIqVgfllMWJ7Dtexz+Vl0RRyGqeUo ArVZf3j7C+z/kKpL8CYMk8WvSAVlXlPFqolUiiJJwwNzlsjrKqLs7fwE BzY= +sanne.nlnetlabs.nl. 18000 IN NSEC se-dns-probe.nlnetlabs.nl. A MX AAAA RRSIG NSEC +sanne.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ewVO7sU70vbby8VL52SZ+M74yy7ClyIH/R9oFbLI3O4OQ2iqN8YXR0Fs uf30tSI6XKYYzIjps1MLlK0zSL23PKwcZIOkK55icSrgV7TnasWkrvFD LigM1smmErxyMeqfrrwu8yGFdhpzHDvYAjqiiVRiXJNRaoLC0GkOYEfQ eQs= +sanne.nlnetlabs.nl. 600 IN A 213.154.224.39 +sanne.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. J0HE1rZbC4cPBVt2gmiFBoyE2s7PyH52BkIalz5J1gBD8xTo6Kq5iPO2 zqk7aijDlbWAvgaftzyKwab5WZHdBJEfZ1wMvlMukPd2tRyiBfW/Hqbi kJf2SzAvUOipAUHHomESV2cO1U5OAbYvFMR5syu9WD/+5xjsnGabSLjK aFw= +sanne.nlnetlabs.nl. 600 IN MX 50 sanne.nlnetlabs.nl. +sanne.nlnetlabs.nl. 600 IN MX 75 open.nlnetlabs.nl. +sanne.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. i3YmK7bxxz37q5NNfU5f0bPoO8xHVOC8xbzngXsieqfKsJEty5PPTDRZ f7opc7Xe/yMfU3IH/ZX2C0NJHxI1GwWGe0mRs5uic/gHJIFMqv/XUvjB MPZKVnIeSSa8fbfOBgHOpjXCXeEGVhHEmRjfrcePTIz5/eNUmPpaQZ15 NvU= +sanne.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +sanne.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. mHVDCixUCNsdQoWtenWumJ6jYi5KOYk4WSZBZtm2QOBBVzyY9R6nqIZM HChCivztLR5lLdc7sO4aGekLxko5MVm6nZ+AG2yz2kIRNhxqyYYbWmD2 Ta3QGXz2RKiiwgyE6d5xk55sG9lEHhngwfItBgwYLOvrLVGIdjh8UmGF PLg= +se-dns-probe.nlnetlabs.nl. 18000 IN NSEC sixgate.nlnetlabs.nl. A AAAA RRSIG NSEC +se-dns-probe.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. E13fsWV+gXja+Ynt5/fc3ry47LyHBlCuUC74XjWXHGSiCY4KaaWbmv1Y LpjCvVQz7SKXyhL20el1qQVQZkDqfDUvtJKThgJpVdIlPGVpfhg00BMb XaD5UNIzGvsEUPo7cNqPswRvGU/9lc9Tn7z/Fwvikmj+8bL3SbDQPQlk mS8= +se-dns-probe.nlnetlabs.nl. 600 IN A 213.154.224.5 +se-dns-probe.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. jKPpQ5cpUdFh8Dd/VHwN6geBBiPRi4tihr1/FMZO4enHbzmwHhtuh5ql qaZXn1hySLnNOJ70+0e4Ma4DZOsvuapGY44lpuQ49qGbu5AgpxPH2bUZ CjrsVnHfoifhR9c68GhocgjOQ9PS59/Ec2Ej/DF2rMFXFD0aF6bq555f ldE= +se-dns-probe.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::5 +se-dns-probe.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. nh/86UHPGKcVw6nmQT8fYUplqtl5SzzKLYxXk5SsDl1rpGg6iHMvl3nz X/UnDXn7gMa4OQPEg4oVz7ZBjmBSuVjIjM3LoBSF41zZscBfjSue8HUE YIkOhhkJYvzR/xAhjnA+aAjmldtZ7HQYo1XfgOjwx/rh6asIwDtS4TxY 7NM= +sixgate.nlnetlabs.nl. 18000 IN NSEC snom0.nlnetlabs.nl. A MX AAAA RRSIG NSEC +sixgate.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. p9SYrNRZKAcvnrFhk/oJVuVAJMRmlWuyijhz1ueoMrU0zslFqqKOCG1e HcuWVDLjjn8SV8nAak6uEZRWigjttjXLwl1uNenKUtt+pp5vo16a1Eff bGhoN0R4N+Q9yzoI6zfET2y7R+HrYBHOlVkrvUwGFo2Sliupi5b7kumr gdU= +sixgate.nlnetlabs.nl. 600 IN A 213.154.224.41 +sixgate.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. eBLYxx2wU5FyrLCIJqfWpEyUh1omWfqb6d++s3tQJWtbL8jV1E84Erde y7kphOsn8w9ar/ytcVg/k99+664FNTnMEiU8blJnLXUzBB97sy2irmS6 P/2TznKYEIce6kOyD99COJ6D2+u6SHCHEKKBv2G1RIGLyQt13aPiQkjk uXA= +sixgate.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +sixgate.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +sixgate.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. KL+o5qDn8O69KadGbacCGLNYRkcVdrY1EqEGCib0AjVcemRyl382cqhP qUQI7Vzlr+dzRz5YON16OK0GOh+j9yBBUeabF2kZoZk/lzS6fojNZrFl Q3aE/sqEygYcKtuVft21Bg0W2v66x+mpYd35jbZbxpgg6K7RW/ceH0u7 rEc= +sixgate.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:250:bfff:fe5e:33e0 +sixgate.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. aG4F9+Vx3wX43Si/iX+J2036Tz8ja0DkJg4+/G+0suCM/OHDFZcfR1Ne zxbwgdhXY74FODdYaz7JuJDUpYoQNy8HA0eHLaXMTPEjzU/C/YuePVrD DJjHEb2TpNapjD4BKCqXDY+OaQclPLdPIoOHkAv7I4DRvn/8qwUHK/Gf 3Fo= +snom0.nlnetlabs.nl. 18000 IN NSEC snom1.nlnetlabs.nl. A RRSIG NSEC +snom0.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. puhC3IReZ0U31hWvtWLlSrMww4BUf9+ExNAmQY9+rAOh8N61E25qmsSl wOveKfVIW/EK3d7Ld/DDcYEVsoOKcOXrSZ53SVUPFpmdx6FNPvkWkbjT LzwUspdwB/L1Ox7T7yFMvFAaubq0TzbEcZVnZlPxPKwGqw1ABgAT/FzP oo8= +snom0.nlnetlabs.nl. 3600 IN A 213.154.224.200 +snom0.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. kPE4amI57Hk6j+HLuKUzwYgj665mCP7klFnt2Ty1rjbBACXJDrzbgm5k Wq9Ee8OfpTrALro6qFhry5TSFkxA/46KADTRNtYzOHZvHtXJx//ZIJZU 3oBjnMbNFEGKQ7NUa1TmTg0XtKmZkFk45hiVsXEUTkHJ1br55Sk9ZN7P R6E= +snom1.nlnetlabs.nl. 18000 IN NSEC snom2.nlnetlabs.nl. A RRSIG NSEC +snom1.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. lsp1olju7Z38jPpBQ+TRPttAHLE/QU6tm1iRe8F5DAZVKduUCFtz4qsN jbCD9B5iWuhEBwPZ4+LLQi2Ga27OEioe9k9kFeWuF2GBSxYjSCOeczIr s6gGi7fARK1b4x5HoI5JrbwW8zrQ+y9lu/dwrXhFyPOX5SgQSwqLNUo8 qBM= +snom1.nlnetlabs.nl. 3600 IN A 213.154.224.201 +snom1.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. COot+bPSyihBf9iTeChxvIfMYm9a2LH9eR/kC2bmp64DIo2OhO4W58WJ CcDh/KzW6mtQt2PMU7JW8FwWHrRfgvScWxfcQGl90nlnWrb8I0VaZuyP M65WPwxB+xqCs3tmnN87m2jHCL9eWFXg7yCPPDTRJPDr0OZWbeQZXb2e 9F0= +snom2.nlnetlabs.nl. 18000 IN NSEC snom3.nlnetlabs.nl. A RRSIG NSEC +snom2.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. SjUDNgnAwaETHAovXMHWVFxcNTFn5+JKqcnk0SYEzIXZiTcfbDGfFE5b hGMVEwKl08KvsHCF9v9ckb+RfL9aQOkRoUEjxnsqU9L0J6WWXYv0CWld 46GFG9Rm0IbiE80IY4KMfXW9/sAbv8anDqhWLm3yHn5Muj2Al+h0OjSB kvE= +snom2.nlnetlabs.nl. 3600 IN A 213.154.224.202 +snom2.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. DQ9hFcmw8bXdW+TX4sTS3y1qPMUOzfzgDRIqCDu8oIiARH102rNpuB8E +JJT2ziaGgKjyfsVxJQldiBMIIvGagLIR0ArsJXThxtlaiFDbQeqZSZL +b8xqQcTDOhaU7xAC0V5cRYfdCYbd5sMtVx7XYQggX/Mot5Zt6oEOg3i msg= +snom3.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. PJyBfD+TVk4JjyzUreels+5tWLmOOZg9Of3uklVcX+GK+Q2hCtU7yyUj k2mkeMJ731V7zLQXZGz+1vC91WtIVXP6tlY3rr63nMtj3jb1R8WWqY3/ 4O2hP6d6S2OEyuESuGnIhVXyZlPunzAWgLN53Dnzb+xn8KULe+iy9Sjp uH4= +snom3.nlnetlabs.nl. 18000 IN NSEC sol.nlnetlabs.nl. A RRSIG NSEC +snom3.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. j/KJY9y9PZIoSnAOzRkUbfq5PoUeSPW/Dy3d7K7HfVlysfJ+I2DloTPs 8CssOp/oCdki5EUnpnn2ym1csJTKZdEl6MSfDGMT4BP1W7FK6RDpLO6z ehQj7yKs+Pbr1nBq0tZWlr/HUTmJY1VJmnj5G81dmazesufO/9wDKer+ TCo= +snom3.nlnetlabs.nl. 3600 IN A 213.154.224.203 +sol.nlnetlabs.nl. 18000 IN NSEC sparc5.nlnetlabs.nl. A MX AAAA RRSIG NSEC +sol.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. jUXNRrMfRHbf7p4KgbdVI8WsDMC8k/1FOsO3BoIjSyX22Hr5v1RuKHG2 v8ZDlFXMbKcP92xdj3mAJbEmcM2JKvaHiY47VrweO+FbwY3JDgUkTQmH jf3SMOHXrxtKjixQOAJKOWOLDigEBBLkuUjdfG6PybDDG7sBgx8WHFIE Ulc= +sol.nlnetlabs.nl. 600 IN A 213.154.224.43 +sol.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. XEkjh4r+7asDkk98LEV5mlaIFD/nUvfP1eUBKVTfh4a8ba4W5sLo6HgY Y6sJcnaBuK0a4IDv2q2q/BPIokAcg72+P420oRD2vQXUhM+fgxVESJt5 AqWrqRetmctCOIhWuNhOYw1PlCT+lZ9eT5INhXAscepQyyjuAKQ+nQFK qW4= +sol.nlnetlabs.nl. 600 IN MX 100 sol.nlnetlabs.nl. +sol.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. gEqhZntMOkonkQ6ONN1fwqOPf/kp7XGQMsORg7MPEt8UUxfkx4FlIZSc uQU11EfLr14BE6zkPZj4i8927KmfWK6M2I5F9WWynq41xDPO5giI7nPQ xX1d2ga2Oq/kCHH5Q3DyWmXTrdc9JpbwKIQLdtPEmAN2t2VslSH77M2a IVE= +sol.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:7200:ff:fe00:28e3 +sol.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ExX2ABe4l4kOkFMeexofV/KE9u+XWvQKpdXtydtawymAz++crBdrYCUj 0tjDH8f9lUJEYPc/M0XUBj0FXrEK/OGrHREcj+U4dA4PfbKdCshp0+Ha jDqNigaFhwtXlRxwaaVX2F4B8y8WTOMpLeLA8GjH14gnC29TY/Fu5EAy rzM= +sparc5.nlnetlabs.nl. 18000 IN NSEC stun1.nlnetlabs.nl. A MX AAAA RRSIG NSEC +sparc5.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ZGKUwlLbPYCQqGZQzUwaZUU7C89Qnq+7Uyo1VaPmDNMYLLxmi8RaRJKG SzNBDmr+om2MiEV68S4zkwj5aZ+IYB8cvvjdq8ZA4walYg1O8cf0OMFS A03lAnSfWiu9Ok7SryjltHfWZbEmS1bfhJQ7QVznKuIrzUbrx0giGxUl G7A= +sparc5.nlnetlabs.nl. 600 IN A 213.154.224.47 +sparc5.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. PqrRrkXcrTRXWSbrT1JZ9Rvt80SplTqpVgOlmLhe8qIxz+DiYdlBdIv9 bmb6orj1cLYG62/hWuGaW5UHpmslp1rn3LgrZCVbWS7JpULLEYs1l+B7 XYnRRGR4LlQ6cE1fZLbT55k4hMCnv+jYcto+gYDcp58ssZy3MUUyno+P C50= +sparc5.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +sparc5.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +sparc5.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. G8cIIEKxLSh+Ql+OxYSCDdaeJ+iLreSS6DWLcgaMSXY+O0qXiy/avUYG IunyJyp95PuIle9OS6s3CpRTH7ZKcC7v80uAeBjGkwliIMaZc3L35x/t epNGGkw2FM2G0ZZCOoH55nw8CT9RHoKtvtXsr2A7er4gj2gLsk6sNSpo jqE= +sparc5.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:a00:20ff:fea7:8f78 +sparc5.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. b9woyIw2bKMA3eJCTurjgBi1/3Er6Edgk6nT0iUBfzhv/qUK0K4ROor+ 9UkenclArkh2lbDHm/ziqn0z35gNn6FZUjo4L2x3jZQggxOuLz9ZhmpP es3eEArPU+c290i6NGGytrOmF5mh7S9h5nVapjDIPqgSBq7TtKBJ89wv ayc= +stun1.nlnetlabs.nl. 18000 IN NSEC stun2.nlnetlabs.nl. CNAME RRSIG NSEC +stun1.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. HFbzEeDw66ot0Qdm4S8z2YWJT3tD1HlRPhSwV/yN7GnJSQqmD4s6tUkz ZCyZtgcUNUwzm7ntIUMzD/njEiMCPWAR7SMoSHEnfLYlCx43GyiTDf8E J77Do1l8m116gA7sGnj6aPEsKrq/E0ml0yZn8sxRLhWEgxvCiGrQo652 e94= +stun1.nlnetlabs.nl. 600 IN CNAME johnny.nlnetlabs.nl. +stun1.nlnetlabs.nl. 600 IN RRSIG CNAME 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Vfy6Magu59sn5mCUs1qf/6FghANc01hJ8kpFzmt9Sxhowf+xpuJnyG9a lsYjYHhzvjpCv1ys82aDlN4s28ILOt7sbgeBTfG30VX6F3WZ3A7EtWS4 4ZTEwwDvV+c5x/mm+HAQQCnz9LGuNLF/9rQOprHmEivomWqnp4sXRAHs TyI= +stun2.nlnetlabs.nl. 18000 IN NSEC tednet-gw.nlnetlabs.nl. A RRSIG NSEC +stun2.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. YQJd0U7xpSZanBGsDMR5o3Sim0aU91L52cDVkdG/mgfkOjJcvXskQbyb 39LQozpAas5PeBvQ6xK07KR0nza4fmg1882Nv5TI38CktrdoBO0m1oDa Zj3rM5MwxAd5jClVIKuQ3Nw0DsTLR5Tlm7IVPZMPrWUJjO5QILfjWXMH Ny0= +stun2.nlnetlabs.nl. 600 IN A 213.154.224.154 +stun2.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ZxQ4qsRBDOj/BK800jqNncEQoyCWCqkZoT8VUmZOUdnUXv/pOQg3Fe51 a1/zeeUq9D7CPs5O8DV7OcYZSFpJHEA/GIBE+QGMT6wIdtlDl+lyvfOc lQnV+sf5t4jCexh/Mv/fSVgceO6aSqyiWc1jzQ/7kluQ/+Jk3RKJq7PA WUM= +tednet-gw.nlnetlabs.nl. 18000 IN NSEC ds10.testlab.nlnetlabs.nl. A RRSIG NSEC +tednet-gw.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. KKnPYYlzIMH7atLRWHIQMUim3GnfSQrpkRE49/2NeHcPuEgcSJebOf1l Ew/NEBiDCQtHEK0aiN+sE+nZ3tqdj951Ub9N332nKg98cNIqM5FVTcPS 8C5SrTH83O/xyhLbOYSJd+eOsuGlrmF0dnV6uFwC11DwGEp5fAtHXQ3/ SAQ= +tednet-gw.nlnetlabs.nl. 3600 IN A 213.154.224.33 +tednet-gw.nlnetlabs.nl. 3600 IN RRSIG A 5 3 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. jSPQxVwJ9Mks7+EAAYBrFkEmT8Pxmv1Op6AFldVRzsgNUh8AZYpsTqiO AH49+sbG8ZjHLSSKGdd54PGxPgTvF+h+B7NpSzpnachWIgczbiAejgsD X8EDS3D7JArouSl4/FPns2JKOJXyuA2vipB9Q0hota06O3s3T3VkOJLV Z+8= +ds10.testlab.nlnetlabs.nl. 18000 IN NSEC listener.testlab.nlnetlabs.nl. A AAAA RRSIG NSEC +ds10.testlab.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. CASiMvLsgqAkq6WIOqPIAtjAmi/fcd9mNCxJLgeOuyDrd6r/gbUTHky2 +sU2wYwpM19ThHyb+SLYTqlU/hI1dCpxMGVm5xf8PN3dINSZJFsKaaCx 01fg1j9LaZidOTLu8AtJqGH4TU+E7H7wvv4lvBYwwGejFHpM2r43CxIL DA4= +ds10.testlab.nlnetlabs.nl. 3600 IN A 213.154.224.100 +ds10.testlab.nlnetlabs.nl. 3600 IN RRSIG A 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. e9iqEEVgfnanV/2O/aNch3vIYbaAG4hvub+/UbbelsXDyADWfcVnunWU kF3WIsxFSqaZIQxAlHyIcK63z/jr+oDaGvPFmZcFE9cIU0rUlRC1GkVA pqNHcXRMcsPVdkX+kF82hbdy/CVqVGfEQfigcQq7E1bvLhs7ir+ckcRR 3gA= +ds10.testlab.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1:a00:2bff:fe86:cdb3 +ds10.testlab.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. bWxVt+4GHXW2RIv5vxVeGRaDpI5O3wKoUoj71Nm+5Dx8ffzM/ZtcQNKs Xch2H+MowJ4EMqfct8YLufxFp7kv3aTYP7q/bhCk9PoxADSUVnZjs+Zh gSTTpX5InphKFEeT+JIg9RqAyYxMOSfjXU3KRI/xfWtzJ3VgYExVh4i5 UUw= +listener.testlab.nlnetlabs.nl. 18000 IN NSEC player.testlab.nlnetlabs.nl. A AAAA RRSIG NSEC +listener.testlab.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. dDJhcIcG9y/kF2WE/EbDG/5NKtY3cCv6VghKzv3gVnThDg24YwHq1x7s 3cGRzI6l1PpNAEBgim7Z90W5lIlfQfcwknDwh5fSZ7gD74KyG8/2I6SY EMTfW9P+cyM34Ujk8TwSlq0MLQYtElzfEkps0IC5nVRYvyRJYSzPOR51 y7w= +listener.testlab.nlnetlabs.nl. 3600 IN A 213.154.224.98 +listener.testlab.nlnetlabs.nl. 3600 IN RRSIG A 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. Sj5nJWIyGIuURQTGhIVfxNG8DqKDcTcwSRxWAihplSZ3gXdyL6M0qePn y23qlmj9H3DugndOol/vmmtDOUrAqOUTK3uKXeNuhJ8bxS5AN5f7PaJE CMGDMfvl9XTw6nlKF30ufpbXXlfZ26TFhfXjFmNz/r5H285kF/mNU8bF rX0= +listener.testlab.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1:42e0:4cff:fe39:6302 +listener.testlab.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. PNZSXJS0xGP65+wQJtG4N8mBxeorUEVv8pRs4FtFqXv4wDvcnTpgCT4d 449V7gjlPk2ngQK5qpy68CvDVs47qrtfpgGQKOfNxeGpQbGsUE9I1114 B+38q4NUQldGGzzBQIxWBIlJnUVABPjAAyNVeSLVREVUp0m8wzsR1HQt syo= +player.testlab.nlnetlabs.nl. 18000 IN NSEC rotten.testlab.nlnetlabs.nl. A AAAA RRSIG NSEC +player.testlab.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ICq3/OV9Pb9yt+dMASSV6EGiXZulQqsCYoWpUs3a+ZKHVqS1Qepi0vK1 4s/mtv0xn3z/qLDzUjB3UDH4ezo7WZJILQR1W0nVdRj+baCqnR/QfA+4 Y4F37cs8qfrT0neIpSyCzDEdlMaLext+OhyhYP2eQ/17NM/OFJiMavjw OXg= +player.testlab.nlnetlabs.nl. 3600 IN A 213.154.224.99 +player.testlab.nlnetlabs.nl. 3600 IN RRSIG A 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. F7/bPM5B1Ye9q1urMwT2DVH5u9K3eyDau20o/Zx272aXLkJP3s3fbjhB cUtQz9DFs6MLVthN3s3BN/2+JS5XsxqGeY2ypjhlpWxb4j759gEe79pz 188jzliidXkoTxHotaTfE4z1SR35cS/nfBbMEBLILgkC7TmQpXdh9WdD NQU= +player.testlab.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1:22e0:4cff:fe39:5e05 +player.testlab.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. DuuL+20G6fAgD5VFMvDHTAm8hKxgvksDvsQRUJ8yT7RpBh/VZQKzpPR/ 0l9FeZZ00dy1x/QSdPTo56t84SUGdvPh219zvs6ksmg4kXfyZquv6m0f 19IoGFX3myQ//aKnE6XDI0jvZekKmY01NXEdC0ujZe06VUyHxUpR3bnQ pek= +rotten.testlab.nlnetlabs.nl. 18000 IN NSEC server.testlab.nlnetlabs.nl. A AAAA RRSIG NSEC +rotten.testlab.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. ZQqczzsqR6ob3f2ldPcxxUFwMoJHygObZkL7XqdkpuHV4WzfA9rw9wUZ FYi5dE3D+2sFPDY8LGjPyd0DqQswDdi80eecv/ZIROiL2ka0buFsFo9L 93RoeaB/f52ilAuvTaJUie8L38p9G9w0g9HljscUEbBhGUSzvB32fAbw SE4= +rotten.testlab.nlnetlabs.nl. 3600 IN A 213.154.224.101 +rotten.testlab.nlnetlabs.nl. 3600 IN RRSIG A 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. bDraapmxqrCuAcoLuAKxYN646POaFATJa+YJ/ZKSgCJC7efwjVzWAqvL ga3gR+uGu9iRUzQh68OE2IYOgxYtGvG/lkMYBfTcreO6NbgOnFCQ4+J5 BpxucrvgQxz9tVqyl84kG+eZiB+ksVF0FQRYhJxxZUqWTPcMtU2p1RTU dOw= +rotten.testlab.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1:206:5bff:fef2:ae8b +rotten.testlab.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. EqVqCWsRTraX6Ykw2L8WOSnV3GG2Ox8T5fh/nHfBX+Nxp8fJJg/CE9+q eVU7GUyqzmobFSDrwc5O9cgtR6hJ/ZP4g2TEWob9TMIguCXByjzq6zqr 8SPn0WXmJV/hja4GnnEM2oe4AZxu1hjWW2YVCJ/LdslPyPqLDPosFcmz 8Fk= +server.testlab.nlnetlabs.nl. 18000 IN NSEC tinkerbell.nlnetlabs.nl. A AAAA RRSIG NSEC +server.testlab.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 4 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. TKWHK663II7q0IcML1dy+PsMLYNnrOg9SeXCpgsP8xYsiFHWHPrYViRY NC+tJj3G4ORrhp8qgSi5Zb/loXDNahL2hHsqfs3vmWyONMu5zysBtfC7 BO41fRBkDtDzxQchfpaII0DDNdXzMN6rF0/tA10zOzbetTOrAzdgO0aM h44= +server.testlab.nlnetlabs.nl. 3600 IN A 213.154.224.97 +server.testlab.nlnetlabs.nl. 3600 IN RRSIG A 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. jYUS4vthWsYDgB1Ks8vOx9qI7mcvLN4YdMb1UnUUMua/jWuZ3j0flmTJ n0oTXWuje5Fnyu+ZgpNAbR2/TgrP9GGwFbnvLcye5lcz0tSK8RQpja7I nVmzs+BSN6YgAmmNpl7hA49ofDPmxb4Uo+ykfh6DR7lPkgec1KuXC47M sFw= +server.testlab.nlnetlabs.nl. 3600 IN AAAA 2001:7b8:206:1:22e0:4cff:fe39:5e02 +server.testlab.nlnetlabs.nl. 3600 IN RRSIG AAAA 5 4 3600 20070912141341 20070815141341 18182 nlnetlabs.nl. a7mvvRN5wAwqObak5JMtWLrMyLCwDhB9eVZCON+nIE478i2WcuPFxWSx XYiOZGiZq7OwIBU7aO7BwaBMKXqNokbJqbwE8KGvLMXgnWQgqlUCHRBy 2YKD9tsFT5xCtaDcSynBlMri/z9Wk+KXxlf58Adj5yCIqTEGueT4n1LG QhQ= +tinkerbell.nlnetlabs.nl. 18000 IN NSEC ufo.nlnetlabs.nl. A RRSIG NSEC +tinkerbell.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. FX1z7mozbIq/4PufluGQ6ZVirevfKu8nZUHb9Ol4DNAD1nIu0v+teldL Ahx7fHpmzcYrMTA1n9Kktsim8cTd0LizMTd/wwWb+syExqNINZ1L20p1 nvIKzl/Razv27HKsY/kpiBUK7X+TCd/xJnFIO7D2JzoGjyiYpRGiaqef XxY= +tinkerbell.nlnetlabs.nl. 600 IN A 213.154.224.13 +tinkerbell.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Ws7cRR7C2t+njlV/zBhVLfYPJN2l9fWOn97DjcU0sB6hT7r09cYIVV5u 8RTrH5UgwaboSqkImD+0LlbNte9nwcJS9wP3sItg/eO6eZyJ5NGKm/Nk 4KrKV6J1Vx1Ms+EtgzFhxYAiX4ThWBwZxaSNEDVh3ZCA+dAucURt315h xF0= +ufo.nlnetlabs.nl. 18000 IN NSEC unbound.nlnetlabs.nl. A MX RRSIG NSEC +ufo.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. IgEV6H97KEnxkNdhytWMjmtbXYerO61AqhAhDeD6J8iakPf83SqXOE9R ExwFmiSeqBRe+y/YZ+wVxLeWOU6okBrP4L6FAg57X+WVNNa123KD4r4j CMNR2hxXtFMjvvfRRPdi3i6JtTl2ygHJpvMzvbqJc2BrN7zdaGEG8bDU vQ8= +ufo.nlnetlabs.nl. 600 IN A 213.154.224.56 +ufo.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. mEc9varsLkWC5CCcQJqlSK1Tsk29Qfo6K2WzGQCLHaX+hhy83NbkHSss tYqXgpXNFUcxHRTmPoVofzlHFEkD+/5U8PxFEnSOI5FEfBbcYlHPSr7v l+8AJBPKXlC2ftVr7my7w+UhzvAODEbXxhveeqe/zJfeRImr+lJlANpk /pA= +ufo.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +ufo.nlnetlabs.nl. 600 IN MX 100 omval.tednet.nl. +ufo.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. K2RffkDkyKmII1DVIgom/MeplVYzo6HLYgm4bbwbGP9y1T41XDwvgnvE EBI7OO+Dcz4m+adtIAD6/adkKYEQnqymok/BK1N1WArMtXXPyotRFOK7 UlrbYIFiIDE7GaVJsvJH0jyCDp8/pAJt7m3WLmhc579avWNvIPNqRAB7 uM0= +unbound.nlnetlabs.nl. 18000 IN NSEC viertje.nlnetlabs.nl. A MX AAAA RRSIG NSEC +unbound.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. T7VzMgdNSmXjZgw5VI8khY6k71BfeOH59r6vfHQhdlalMpALaDWYN6RD Oloslx7lLucA3ZrQ4X/RPwr84ZrRc0K0sH61MyQtuzyeiIWu8ifK7KHG yuxLYlngZx0jWsf2DgJuUaPaU6tzLLccfRJ0xZbbbv6TKL3sTD+EGSdI Wkc= +unbound.nlnetlabs.nl. 600 IN A 213.154.224.1 +unbound.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. euqJ/pC1YAuQB04coh1qWAptIkgfJDcJcGcKHH+bCGy5NK/IhEH8SKQE D0WlSD1pD+ibmeGQAi2be8eF3v2bHLog/Gm9wPjpxRj7lLkqtVxrXmyO pO6w7S9xfncsqJLkyyDhOgdg4/5LKghb6WAzkPKcMOd9GWLmVPdYhZ7u Pa4= +unbound.nlnetlabs.nl. 600 IN MX 10 open.nlnetlabs.nl. +unbound.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. YxVXw9KyfAmxJqhIKh6L2X2cs6eUnQNlo3xkenBPZW1UjEne6I4H0nbB hXWc4hWFaADJjLEJlXu0NoYTIsSVafynu4knJfmNiUykmWc2nqUy96R8 1qmQ+TknQ93qW8s/2LA5Maf8UjHqFhbZbX/EpGxlVFEc5WN1nNwIiSH+ hwM= +unbound.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +unbound.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. BwPZseI4zk7Kh4JFKGmeevVKIG4FtLVdajwGWluOk9vhC7Hv7jbEbO+R k/pfkJuibHy+cx0Rv72sRM6vK86G7WD9PsLseHJvCupXOcHB/gfrftfq kSRyt8bNs+XZ2oFVLLj9MkksbuJt7ZrJVhYneBUGvDyzDOitIhg6aIDt oPc= +viertje.nlnetlabs.nl. 18000 IN NSEC vrij-2.nlnetlabs.nl. A AAAA RRSIG NSEC +viertje.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. KDdYp63+Wl7DRcwjA90xwSOqZUGQsZnqweopqsaVhZ3eKz4seGnihRwh oXrNVJlAZpsujIrTZwfh9VbzbATtaUciVCfE4AjGdXxsLKhEQIGjExau XyFgCmaT4/kKc6d9Bdxhw2Lan2cClWQWCtlUEIDyoAybtwkmO5zU0Pil EvE= +viertje.nlnetlabs.nl. 600 IN A 213.154.224.62 +viertje.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. fldcX8mF5FC4YxcoPgOmLhGmW/TTw5MVLOwK35aItqemNfXwFglbuJtv KiW3Qdtcr5g5iE5xkDl9aCJRYlfAyugYgJX+AJ1WkO0nfpSUUbulOnRN MEZImO2EHsyA3JQCEHTZ+J8xfYQJ87rfAD/pRXbmh5TW+wiXckNflf4J rPM= +viertje.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1:203:93ff:feea:3086 +viertje.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. hFGUoyGTYcfURTEKx0qFYaJRBqzGeuctzC/rVQqLGTx0DhzVxNUIJN9V Rqj79FQXQ3S/XxOANmk14Y78HZmykUcARxCDDZGjgGrMTuuoQpYiDCdD FRhWWXr0/uS9yl0exj9Xo7fTIiGHe+d57CIuy8daJuxaBNXvc5+OIiyD U3U= +vrij-2.nlnetlabs.nl. 18000 IN NSEC www.nlnetlabs.nl. A MX RRSIG NSEC +vrij-2.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. avyjH0dMBtuhwewLd0ZIy/m4dFJCqdD2sWhq7X7s/wHIf4A3sSAZecFf 5Eu0gtyKkX4cIhFjrPzj6NTJPIUZmkaEAXIsmJ6sVw58+Wc6dP0E84d/ WQ8vBkpYzoAWVH5p9FDyax/3jNmn5U5KAqraOy3UaihnbafpmyR801kz 0uQ= +vrij-2.nlnetlabs.nl. 600 IN A 213.154.224.53 +vrij-2.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. ieo0tj2nMObHvje9Zb8KuhHzEE7hAo/d61NovqrGEe3MKFZ1Q/m15bC7 QTXZpuqundT1cIDPQmc9nA7vC7dX3JZameQ1j5QE3GSiNuU5xpFmnpvc KTBQbSDer+dncn/A3F+qY2HjylgkzMrmxRRSxOjexVIYCjFbtUvYsiAd KRk= +vrij-2.nlnetlabs.nl. 600 IN MX 50 open.nlnetlabs.nl. +vrij-2.nlnetlabs.nl. 600 IN MX 100 sanne.nlnetlabs.nl. +vrij-2.nlnetlabs.nl. 600 IN RRSIG MX 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. hwamqP2ZCEhBO5Wn12GsZoKwxkmhn7J0NTbsuYKF2Vk23aPlV9qc7yfR SnK2G4y33dq/omt6LxN+29Sd+9lcu/Krx3rlYd5Y/dmu2ZX/SXX+XVUY Iqla+LwyYe6UWhG1zdvtD5UHuBBYocGcGud9amqFXHo8Q7YVded4AkoC 1BQ= +www.nlnetlabs.nl. 18000 IN NSEC nlnetlabs.nl. A AAAA RRSIG NSEC +www.nlnetlabs.nl. 18000 IN RRSIG NSEC 5 3 18000 20070912141341 20070815141341 18182 nlnetlabs.nl. L2RzZigsb3UEJTef8PTiDghDDWsRdwEFRUNZTSm79MO6poZOkq/0yzBr mfRMo3ST2wHfcyV+/Ws11imgrZ4EVXZ8bynQ7HFVnsI1xH/SrMHSUnzQ g1OPsiXJbukgfVaM0q4URq6cmBSuX6Ti/6waq39j4Cj3UJXAClG3lloB z+o= +www.nlnetlabs.nl. 600 IN A 213.154.224.1 +www.nlnetlabs.nl. 600 IN RRSIG A 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. Luav3fjE1VGhran3tnxR93cgoEyH3Kh//240KDCT8k0U4Tfw6xSBMVjj rf3oH13SXCZfYdJYZbZEahBvysMRm40Izl4+rpfUKzwjHXn1una1o4Gt A48v0fwffCXtUPz1TDFq9IKlVe95uLwjheMF8auDXHLwLItj2lF827Dd VI0= +www.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +www.nlnetlabs.nl. 600 IN RRSIG AAAA 5 3 600 20070912141341 20070815141341 18182 nlnetlabs.nl. kNBkVXmMFOsKXv6IdhydkSbopCxiW1gHOVHv3G9co1SzRuaubyZ+Z7PL 5xVVMwx9Z7AwvwZ1t4b3IqVnXOXtdbABMSlUyLLRxMGt6pPt6jrcFery 7aNlmtIEStJ4FBLL5T8wdsNWUP4/iV9iTrppB/Emxp0dTz77MF2rpI+V DL0= +nlnetlabs.nl. 86400 IN RRSIG SOA 5 2 86400 20070912141341 20070815141341 18182 nlnetlabs.nl. C54bDHKC2sRbVUrDOeM2kXCHpJIFu0LlZWAFVFLf4l1Grfj+B4WcXqel kSVhi/Gpt70VW+zDEOHrS0kcE5XaBnrQE1AUZ9QjGyfjXlRzGWYbyVLD evIFrs7FdIeGKKWWp1YDLUHHF+txDT9NFu6KyEqPbZEVgIVok3skO5Vu jpA= +nlnetlabs.nl. 86400 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2007081501 28800 7200 604800 18000 +;; Query time: 20 msec +;; SERVER: 2001:7b8:206:1::53#53(2001:7b8:206:1::53) +;; WHEN: Thu Aug 16 11:36:35 2007 +;; XFR size: 493 records (messages 1, bytes 50727) +ENTRY_END diff --git a/external/unbound/testdata/test_signatures.2 b/external/unbound/testdata/test_signatures.2 new file mode 100644 index 0000000..0337853 --- /dev/null +++ b/external/unbound/testdata/test_signatures.2 @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + + +; DNSKEY used for testing, from april 2008 +ENTRY_BEGIN +SECTION QUESTION +cesar.sec3.br. IN DNSKEY +SECTION ANSWER +cesar.sec3.br. 43200 IN DNSKEY 257 3 3 AMAdw+X4IcinbsSOXamwV4BrJVbRjSJ63DYRV0NLR4W5cDMEQGmB3Lci ybjLvaEogs9RDmjhxQrQJRfaIVMG11LtOwlTPBr4yzyeK9zzeZPAQz2F 9yCCPqgUdts51v4XeK5evtn+b4AB7t/j+v7Vb+26k8No6hmJiRJAy59N Fpzrt5FoY5qFZ8QbPl59nzEcXTbOiXBNSu9mQbe/jFH5p9NP4KB0iNL/ oAthNIVVsDG8hQFh1hE5YlDNLxYY3U+TODjWx//DZvkn5Tyyvp7I6b33 oJiq +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +cesar.sec3.br. IN SOA +SECTION ANSWER +cesar.sec3.br. 43200 IN SOA home.kuroiwa.eng.br. hostmaster.cesar.sec3.br. 2008040903 86400 86400 8640000 600 +cesar.sec3.br. 43200 IN RRSIG SOA 3 3 43200 20081010000000 20080410122550 14996 cesar.sec3.br. AJOGbuGOMggPspEBhIc58I8BXUHqR+DKiZqGZRwu9jMTgAX6JCPunSI= ;{id = 14996} +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.3 b/external/unbound/testdata/test_signatures.3 new file mode 100644 index 0000000..fddc462 --- /dev/null +++ b/external/unbound/testdata/test_signatures.3 @@ -0,0 +1,48 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; created test keys with bind tools: +; dnssec-keygen 9.4.2: /usr/sbin/dnssec-keygen -a DSA -b 512 -n ZONE nlnetlabs.nl +; Knlnetlabs.nl.+003+03510 + +; private key file: +; Private-key-format: v1.2 +; Algorithm: 3 (DSA) +; Prime(p): 4nziv5P4tsXwaf71EoyKFoLzFq0/wN5fb6yb8IY5uwmVh5hvO0M4lR8LAjwimCIo3SYEdCnUPkl8WbJYHkRm9w== +; Subprime(q): 3ueDKL3Jc2Ue1G/ZCfhwMEyR4v0= +; Base(g): Ji9iYukmprX5qXO7V0MALKCTsfvz3kef2TsZdpM/VdetDK53OwKE1NRTMU6PSPGyumedOrkSD2BLa7CT1dJRJQ== +; Private_value(x): wlEfaVwW10q6Re/ZOBL9PLJJb20= +; Public_value(y): cHuTGyrkbj5QVkgmFm3KEpLnb5c7jH6tapeU5ugEIJiacbroPhfz/9vPw8tkZedBGImuYPSohRPfHIQPMxfxAg== + + +; DSA key from bind tool 9.4.2 +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. IN DNSKEY 256 3 3 AN7ngyi9yXNlHtRv2Qn4cDBMkeL94nziv5P4tsXwaf71EoyKFoLzFq0/ wN5fb6yb8IY5uwmVh5hvO0M4lR8LAjwimCIo3SYEdCnUPkl8WbJYHkRm 9yYvYmLpJqa1+alzu1dDACygk7H7895Hn9k7GXaTP1XXrQyudzsChNTU UzFOj0jxsrpnnTq5Eg9gS2uwk9XSUSVwe5MbKuRuPlBWSCYWbcoSkudv lzuMfq1ql5Tm6AQgmJpxuug+F/P/28/Dy2Rl50EYia5g9KiFE98chA8z F/EC +ENTRY_END + +; entry to test +; from +; /usr/sbin/dnssec-signzone nlnetlabs.nl +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN SOA +SECTION ANSWER +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. ( 2008040100 28800 7200 604800 3600 ) +nlnetlabs.nl. 10200 RRSIG SOA 3 2 10200 20080515132632 ( 20080415132632 3510 nlnetlabs.nl. ACYwIl9GQofKJ2xdgx1YelKbtmLrWRl8f+eC ToRnfyQ+gvdUIX3mTTw= ) +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN NS +SECTION ANSWER +nlnetlabs.nl. 10200 NS omval.tednet.nl. +nlnetlabs.nl. 10200 NS ns7.domain-registry.nl. +nlnetlabs.nl. 10200 NS open.nlnetlabs.nl. +nlnetlabs.nl. 10200 RRSIG NS 3 2 10200 20080515132632 ( 20080415132632 3510 nlnetlabs.nl. AEYy9ZN3KEDHybhZbL3PoR71jMQuufKM1lej +obA6uL6CjYQAPrL9tk= ) +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.4 b/external/unbound/testdata/test_signatures.4 new file mode 100644 index 0000000..fbda8f9 --- /dev/null +++ b/external/unbound/testdata/test_signatures.4 @@ -0,0 +1,47 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; dnssec-keygen 9.4.2: /usr/sbin/dnssec-keygen -a DSA -b 768 -n ZONE nlnetlabs.nl +; Knlnetlabs.nl.+003+03793 + +; private key file +; Private-key-format: v1.2 +; Algorithm: 3 (DSA) +; Prime(p): lHKDKRMhV1yBk/gXk3IL29jkPwWwOqEskebo/hC0ieobdQkeuf9B3AgzCdn2hQOWVGoIMWyxChhqHVLwnQzUGY/uAhTZgSXBG47eHZC+Pj1hgX9tkB+9kzoK5jKhstR9 +; Subprime(q): 6u+5FI/H5WmwyTPWB5K0LjegVb0= +; Base(g): hWj33Fnu7b9vhIriw6nXnJKpeus9pffjSaKzVJBNnlWTMXbo3+w3rObnJlbkVLfRsY4F8boWn1EbUUHCaRIW3bsqziE739S8HBJDDwxYx85n0xRqkg0djWoCG2e4uv4o +; Private_value(x): xSLjPW1PE6twDgObqfkUk6EXO+g= +; Public_value(y): ORFJhDQMHGQNdWXlh05vAJJ8Fqm6u+72qsIY2pnSgWL7vQIL6sKKJL14oIVJbsZW9FIjQCFpqe19leUdzUDQa9AxB8WSRAzmh4S6tWkmbAGpUjoAUJSLtqV1NgvH8ESg + + +; DSA key from bind tool 9.4.2 +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. IN DNSKEY 256 3 3 BOrvuRSPx+VpsMkz1geStC43oFW9lHKDKRMhV1yBk/gXk3IL29jkPwWw OqEskebo/hC0ieobdQkeuf9B3AgzCdn2hQOWVGoIMWyxChhqHVLwnQzU GY/uAhTZgSXBG47eHZC+Pj1hgX9tkB+9kzoK5jKhstR9hWj33Fnu7b9v hIriw6nXnJKpeus9pffjSaKzVJBNnlWTMXbo3+w3rObnJlbkVLfRsY4F 8boWn1EbUUHCaRIW3bsqziE739S8HBJDDwxYx85n0xRqkg0djWoCG2e4 uv4oORFJhDQMHGQNdWXlh05vAJJ8Fqm6u+72qsIY2pnSgWL7vQIL6sKK JL14oIVJbsZW9FIjQCFpqe19leUdzUDQa9AxB8WSRAzmh4S6tWkmbAGp UjoAUJSLtqV1NgvH8ESg +ENTRY_END + +; entry to test +; from +; /usr/sbin/dnssec-signzone nlnetlabs.nl +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN SOA +SECTION ANSWER +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. ( 2008040100 28800 7200 604800 3600 ) +nlnetlabs.nl. 10200 RRSIG SOA 3 2 10200 20080515133546 ( 20080415133546 3793 nlnetlabs.nl. BHMt1eWN8HzfFOqrqL1PrsED43JVCrybDYL1 GJXymKlkWRAjar0wT6o= ) +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN NS +SECTION ANSWER +nlnetlabs.nl. 10200 NS omval.tednet.nl. +nlnetlabs.nl. 10200 NS ns7.domain-registry.nl. +nlnetlabs.nl. 10200 NS open.nlnetlabs.nl. +nlnetlabs.nl. 10200 RRSIG NS 3 2 10200 20080515133546 ( 20080415133546 3793 nlnetlabs.nl. BJZaThgkBaF3k6t2q+tr0ngKcF2EntSOn9gX Ut9Xipj3CdioZl8b0cY= ) +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.5 b/external/unbound/testdata/test_signatures.5 new file mode 100644 index 0000000..2e9c55c --- /dev/null +++ b/external/unbound/testdata/test_signatures.5 @@ -0,0 +1,48 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; ldns-keygen (svn trunk 1.3.0, 15 april 2008) +; ./ldns-keygen -a DSAMD5 -b 512 nlnetlabs.nl +; Knlnetlabs.nl.+003+08866 + +; nlnetlabs.nl. 3600 IN DS 8866 3 1 1300e7258af98cef40a47e6ac1e34ea79cb4b27f +; Private-key-format: v1.2 +; Algorithm: 3 (DSA) +; Prime(p): qp/0xtfW76CbSH29kZmI0iUEhJ9cIs/52WsgqogqBwrY/HpT+D6G2jd66WLi88DF0z/We3/YIjZYkR5PH03IRQ== +; Subprime(q): iTRl4piaQvy9yxIsz/c5pAaVIeM= +; Base(g): RJhjYU22ooiTKltbGmIR6OfXZjKDBfSODrT3e3/IrwiT8oQZriDFZkExYKrKqoqZFn7y0esTf9Bwvx2IhGabQw== +; Private_value(x): gYjuQexf8JiiVBvCcxpXO+QaD88= +; Public_value(y): aPtEU9ui/w2+9aFnCrWUB/fGvMEyAyLyGCCaT/N+l8bPYDPCv+wDxEKHoM3HT/ZOf3RuCE/CYKVK7CDX6+AZrA== + +; DSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. 3600 IN DNSKEY 256 3 3 AIk0ZeKYmkL8vcsSLM/3OaQGlSHjqp/0xtfW76CbSH29kZmI0iUEhJ9cIs/52WsgqogqBwrY/HpT+D6G2jd66WLi88DF0z/We3/YIjZYkR5PH03IRUSYY2FNtqKIkypbWxpiEejn12YygwX0jg6093t/yK8Ik/KEGa4gxWZBMWCqyqqKmRZ+8tHrE3/QcL8diIRmm0No+0RT26L/Db71oWcKtZQH98a8wTIDIvIYIJpP836Xxs9gM8K/7APEQoegzcdP9k5/dG4IT8JgpUrsINfr4Bms ;{id = 8866 (zsk), size = 512b} +ENTRY_END + +; entry to test +; from +; ldns-signzone nlnetlabs.nl Knlnetlabs.nl.+003+08866 +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN SOA +SECTION ANSWER +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. ( 2008040100 28800 7200 604800 3600 ) +nlnetlabs.nl. 10200 IN RRSIG SOA 3 2 10200 20080513173901 20080415173901 8866 nlnetlabs.nl. MC0CFFI7JB0x4xaO0qhe9iQGk0eot8zGAhUAg/SFtf5MrR7DEkmd6vm2xf+SN9M= ;{id = 8866} +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN NS +SECTION ANSWER +nlnetlabs.nl. 10200 NS omval.tednet.nl. +nlnetlabs.nl. 10200 NS ns7.domain-registry.nl. +nlnetlabs.nl. 10200 NS open.nlnetlabs.nl. +nlnetlabs.nl. 10200 IN RRSIG NS 3 2 10200 20080513173901 20080415173901 8866 nlnetlabs.nl. MCwCFFHwxz9Kx7Un60vLMMoOrZizagNrAhR6OskQNF/KVL5/xanbOmK3ZUj0vw== ;{id = 8866} + +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.6 b/external/unbound/testdata/test_signatures.6 new file mode 100644 index 0000000..be6f090 --- /dev/null +++ b/external/unbound/testdata/test_signatures.6 @@ -0,0 +1,48 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; ldns-keygen (svn trunk 1.3.0, 15 april 2008) +; ./ldns-keygen -a DSAMD5 -b 768 nlnetlabs.nl +; Knlnetlabs.nl.+003+51124 + +; nlnetlabs.nl. 3600 IN DS 51124 3 1 6f7e3ea1d525f3428ce342596f7375b1c3a71c51 +; Private-key-format: v1.2 +; Algorithm: 3 (DSA) +; Prime(p): 1kpY0hU98SJrpDCTKHv9TQyN6EGcY9FJ8bw0QiQdcm3nx3fkS298V9Y7ZRzjCQmkxVwNrwdhtNpz4MvrByHKy+YE/hSJamNhwKHAtiIAHNggqfutGQwUkfqHmybFO8Kx +; Subprime(q): 3GwgwvHRyOeXNgZqR/5XpaNs6Pc= +; Base(g): Rw1YckcZ/Es07FYrNV6soRTbcQ5NEDj7ITSUdGSLKRPQT0k4ofR3L8aslTeOJESR2s2sIay/ZHoYmdQuwLZ93HLEq5MooPO19c/GnVkOWZm1Ab9H7zttNcoKgzQ64dhT +; Private_value(x): OoN8CQisHVjCIET7B3WdAwERRro= +; Public_value(y): 08zY8i9l5qn1xC829beHq2Hhb8MUIvGHyW+eBchQa4S5XIRwf1rVpnw1iengslp/Y1Kx28/a9GEQbIESQORfxllPV23Uv2OJ3aNV0jP7kI2a7VLVSDSJrCh2wBCFj8tY + +; DSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. 3600 IN DNSKEY 256 3 3 BNxsIMLx0cjnlzYGakf+V6WjbOj31kpY0hU98SJrpDCTKHv9TQyN6EGcY9FJ8bw0QiQdcm3nx3fkS298V9Y7ZRzjCQmkxVwNrwdhtNpz4MvrByHKy+YE/hSJamNhwKHAtiIAHNggqfutGQwUkfqHmybFO8KxRw1YckcZ/Es07FYrNV6soRTbcQ5NEDj7ITSUdGSLKRPQT0k4ofR3L8aslTeOJESR2s2sIay/ZHoYmdQuwLZ93HLEq5MooPO19c/GnVkOWZm1Ab9H7zttNcoKgzQ64dhT08zY8i9l5qn1xC829beHq2Hhb8MUIvGHyW+eBchQa4S5XIRwf1rVpnw1iengslp/Y1Kx28/a9GEQbIESQORfxllPV23Uv2OJ3aNV0jP7kI2a7VLVSDSJrCh2wBCFj8tY ;{id = 51124 (zsk), size = 768b} +ENTRY_END + +; entry to test +; from +; ldns-signzone nlnetlabs.nl Knlnetlabs.nl.+003+51124 +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN SOA +SECTION ANSWER +nlnetlabs.nl. 10200 IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. ( 2008040100 28800 7200 604800 3600 ) +nlnetlabs.nl. 10200 IN RRSIG SOA 3 2 10200 20080513174626 20080415174626 51124 nlnetlabs.nl. MC0CFB3cRDHQROzkGp4NtLNc4jDA1lhWAhUAgsbb8VMxGqifShEzuCNgczxDHHg= ;{id = 51124} +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN NS +SECTION ANSWER +nlnetlabs.nl. 10200 NS omval.tednet.nl. +nlnetlabs.nl. 10200 NS ns7.domain-registry.nl. +nlnetlabs.nl. 10200 NS open.nlnetlabs.nl. +nlnetlabs.nl. 10200 IN RRSIG NS 3 2 10200 20080513174626 20080415174626 51124 nlnetlabs.nl. MCwCFEzgEjT0n/ooV/xZkRMzKNqeF4pkAhQxEPFtMt5LbIlsi9mSi0HS4+RZuA== ;{id = 51124} + +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.7 b/external/unbound/testdata/test_signatures.7 new file mode 100644 index 0000000..8c62998 --- /dev/null +++ b/external/unbound/testdata/test_signatures.7 @@ -0,0 +1,32 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; DSA Key from ldns tool, key used in the testbound tests. + +; DSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.8 b/external/unbound/testdata/test_signatures.8 new file mode 100644 index 0000000..7e607a4 --- /dev/null +++ b/external/unbound/testdata/test_signatures.8 @@ -0,0 +1,83 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; RSA Key from ldns tool, key used in the testbound tests. + +; RSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +ENTRY_END + +; entry to test -- capitals in signer name. +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sUb.eXamPle.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +ENTRY_END + +; another entry. Signed with ldns. +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN A 22.22.22.22 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. A1rCcVWeTZ5u0Fr1IewSOhpZvpSd8jMBsy4zk12LzZbjFK2yINSpClGYoyRvJMySfbNHjFKfufR/YpdsrsjC8A== ;{id = 30899} +ENTRY_END + +; another entry. Signed with ldns. 10800 ttl +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 10800 IN A 11.11.11.11 +www.sub.example.com. 10800 IN A 22.22.22.22 +www.sub.example.com. 10800 IN RRSIG A 5 4 10800 20070926134150 20070829134150 30899 sub.example.com. gRrsfYr57vipJHXE21RmXp0Y4cwp9rHyTYeqf1ncBgeipYSPFMILRw21wvAKNKEQ418/0toZOw6Nfmc1gXWS/w== ;{id = 30899} +ENTRY_END + +; another entry. Signed with ldns. 10800 ttl original, now modified TTLs +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 10800 IN A 22.22.22.22 +www.sub.example.com. 10800 IN RRSIG A 5 4 10800 20070926134150 20070829134150 30899 sub.example.com. gRrsfYr57vipJHXE21RmXp0Y4cwp9rHyTYeqf1ncBgeipYSPFMILRw21wvAKNKEQ418/0toZOw6Nfmc1gXWS/w== ;{id = 30899} +ENTRY_END + +; another entry. Signed with ldns. 10800 ttl original, now modified TTLs +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 10800 IN A 11.11.11.11 +www.sub.example.com. 3600 IN A 22.22.22.22 +www.sub.example.com. 10800 IN RRSIG A 5 4 10800 20070926134150 20070829134150 30899 sub.example.com. gRrsfYr57vipJHXE21RmXp0Y4cwp9rHyTYeqf1ncBgeipYSPFMILRw21wvAKNKEQ418/0toZOw6Nfmc1gXWS/w== ;{id = 30899} +ENTRY_END + +; another entry. Signed with ldns. 10800 ttl original, now modified TTLs +ENTRY_BEGIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 1234 IN A 11.11.11.11 +www.sub.example.com. 3600 IN A 22.22.22.22 +www.sub.example.com. 10800 IN RRSIG A 5 4 10800 20070926134150 20070829134150 30899 sub.example.com. gRrsfYr57vipJHXE21RmXp0Y4cwp9rHyTYeqf1ncBgeipYSPFMILRw21wvAKNKEQ418/0toZOw6Nfmc1gXWS/w== ;{id = 30899} +ENTRY_END + diff --git a/external/unbound/testdata/test_signatures.9 b/external/unbound/testdata/test_signatures.9 new file mode 100644 index 0000000..7f4b350 --- /dev/null +++ b/external/unbound/testdata/test_signatures.9 @@ -0,0 +1,21 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +ENTRY_BEGIN +SECTION QUESTION +nsec.0skar.cz. IN DNSKEY +SECTION ANSWER +nsec.0skar.cz. 297 IN DNSKEY 257 3 10 AwEAAcfJERXDHOSg4JsxSO8WmFdi/PPbtgB6N6xDyyaDqRzr9QCL4LXH yLYjGmriFn7xhVDQTyQQp/nox5RK8YeAFHoiglQuwQVs2TyZTAZskTRj K4NL3+TuMxtCMObzHkAxa0rYvAV5RBh5tdLHUHJLe33xrFNcVidkHMAP F+kjY/9UNi1at2LTohE8VQD0mcv3Gvm79heIjq8Xt3SuqPpk7eQm1r8m 7cIsuojbCum964/H93LeyafExa1eEMhZIIiSG+ik2jDhdeybmMyeoKsO jIL/9N/Yd6u60VkWvUMennyv9rKQTOY84yg2T9yAVjusepggcxMpCVX5 HdWxakruR80= +ENTRY_END + +; entry to test ; note timestamp in 2080. +ENTRY_BEGIN +SECTION QUESTION +nsec.0skar.cz. IN DNSKEY +SECTION ANSWER +nsec.0skar.cz. 297 IN DNSKEY 257 3 10 AwEAAcfJERXDHOSg4JsxSO8WmFdi/PPbtgB6N6xDyyaDqRzr9QCL4LXH yLYjGmriFn7xhVDQTyQQp/nox5RK8YeAFHoiglQuwQVs2TyZTAZskTRj K4NL3+TuMxtCMObzHkAxa0rYvAV5RBh5tdLHUHJLe33xrFNcVidkHMAP F+kjY/9UNi1at2LTohE8VQD0mcv3Gvm79heIjq8Xt3SuqPpk7eQm1r8m 7cIsuojbCum964/H93LeyafExa1eEMhZIIiSG+ik2jDhdeybmMyeoKsO jIL/9N/Yd6u60VkWvUMennyv9rKQTOY84yg2T9yAVjusepggcxMpCVX5 HdWxakruR80= +nsec.0skar.cz. 297 IN RRSIG DNSKEY 10 3 300 20800101000000 20140130121330 28887 nsec.0skar.cz. Ef6Jmf/d9BR0VcRakUD8dEjrMmbAF6qqYRBllLOvibFvpgdEJ7egCO9t d8jliD2VRXhqej2lqECNOvARJ+YyYekpniueiYZsBjleU2kJAyFAS2q3 7aBIii1WdM3h+noayDnjiuhEO3GLxxHWc3kyd2yDesPddiFl09fx+rcz 9BwXaS9A/vdWv+92R1j4nijVI5jxZgkQ4lnD0ZtAVRdBRO7qDRpkRHDM pnaSq51B/9XCZEv2CW8UQ5dGd9D20a3uA2lAKHLgj2/Rcuar4o2Y4ERa ms9pyDCQDhGaveZQdx01EXX0ehe5qIKOKk7iFP95TbWPMRyk1bfKTUoT Rq5rhQ== +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.ecdsa_p256 b/external/unbound/testdata/test_sigs.ecdsa_p256 new file mode 100644 index 0000000..28d08a7 --- /dev/null +++ b/external/unbound/testdata/test_sigs.ecdsa_p256 @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test ECDSA P256 signatures from draft-ietf-dnsext-ecdsa-04 + +ENTRY_BEGIN +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 257 3 13 ( GojIhhXUN/u4v54ZQqGSnyhWJwaubCvTmeexv7bR6edb krSqQpF64cYbcB7wNcP+e+MAnLr+Wi9xMWyQLc8NAA== ) +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 192.0.2.1 +www.example.net. 3600 IN RRSIG A 13 3 3600 ( 20100909100439 20100812100439 55648 example.net. qx6wLYqmh+l9oCKTN6qIc+bw6ya+KJ8oMz0YP107epXA yGmt+3SNruPFKG7tZoLBLlUzGGus7ZwmwWep666VCw== ) +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.ecdsa_p384 b/external/unbound/testdata/test_sigs.ecdsa_p384 new file mode 100644 index 0000000..fc5d12e --- /dev/null +++ b/external/unbound/testdata/test_sigs.ecdsa_p384 @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test ECDSA P384 signatures from draft-ietf-dnsext-ecdsa-04 + +ENTRY_BEGIN +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 257 3 14 ( xKYaNhWdGOfJ+nPrL8/arkwf2EY3MDJ+SErKivBVSum1 w/egsXvSADtNJhyem5RCOpgQ6K8X1DRSEkrbYQ+OB+v8 /uX45NBwY8rp65F6Glur8I/mlVNgF6W/qTI37m40 ) +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 192.0.2.1 +www.example.net. 3600 IN RRSIG A 14 3 3600 ( 20100909102025 20100812102025 10771 example.net. /L5hDKIvGDyI1fcARX3z65qrmPsVz73QD1Mr5CEqOiLP 95hxQouuroGCeZOvzFaxsT8Glr74hbavRKayJNuydCuz WTSSPdz7wnqXL5bdcJzusdnI0RSMROxxwGipWcJm ) +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.ed25519 b/external/unbound/testdata/test_sigs.ed25519 new file mode 100644 index 0000000..b159225 --- /dev/null +++ b/external/unbound/testdata/test_sigs.ed25519 @@ -0,0 +1,21 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +ENTRY_BEGIN +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 15 +sZnc8HII6xxA9Ili5bboiKH0Ipv/Ap1aucIt/CVF2M= ;{id = 57147 (zsk), size = 256b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.0.0.1 +www.example.com. 3600 IN RRSIG A 15 3 3600 20170627103620 20170530103620 57147 example.com. daYG6zZJ3BJwGOS4PC0tDnxssVNYoenOHocoIfx0GeXNkKHSyXF+XHgD5LKbG3ZN0dZJ/4To5eni9QXOXiR4CA== +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.ed448 b/external/unbound/testdata/test_sigs.ed448 new file mode 100644 index 0000000..3e5f14f --- /dev/null +++ b/external/unbound/testdata/test_sigs.ed448 @@ -0,0 +1,21 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +ENTRY_BEGIN +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. IN DNSKEY 256 3 16 zqUQUbOlkWR1cEGLAr/50aOgpFIwyT3juetr4fT9TRIOdEaXK3Pzv6AvA4iNViZ6RAMD2xctd1EA ;{id = 39998 (zsk), size = 456b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +mail.example.com. 3600 IN A 1.2.3.5 +mail.example.com. 3600 IN RRSIG A 16 3 3600 20180503143630 20180405143630 39998 example.com. 5T6sjxQ2sB9Crcx8hNKDCteUVc0vNpz8slOa58acb4yLP7dBysp/6dVZwl9/gUN+CWUl6QpkcEMAFx2AcgjPhncYzRpeKCNuJBgBBQrb4Fz2Kvqf7r7H4Day6JrWQDvWcMXf8U9r0Eq06hoJ48M52CkA +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.gost b/external/unbound/testdata/test_sigs.gost new file mode 100644 index 0000000..ebc85aa --- /dev/null +++ b/external/unbound/testdata/test_sigs.gost @@ -0,0 +1,40 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test GOST signatures using algo number 12. + +ENTRY_BEGIN +SECTION QUESTION +nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nlnetlabs.nl. 3600 IN DNSKEY 256 3 12 9SZY+xB3wKtrLoRHzkBs9L3fjcvazjnk5HF3gMaD1PVp4pthrwgHIm0TUaLrd3YCa2VCl5wj+MzbhZi8NEJ/Cg== ;{id = 60385 (zsk), size = 512b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +open.nlnetlabs.nl. IN A +SECTION ANSWER +open.nlnetlabs.nl. 600 IN A 213.154.224.1 +open.nlnetlabs.nl. 600 IN RRSIG A 12 3 600 20090903100515 20090806100515 60385 nlnetlabs.nl. XVxDmt7/gRk13Yv+U+RPuEZ86iCGSVPmTcpMZYJs14Yn6Y/On8X+vgLV6IzxQTxAwGb+D35/dUfT55p6pFo8YQ== ;{id = 60385} +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +open.nlnetlabs.nl. IN AAAA +SECTION ANSWER +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::1 +open.nlnetlabs.nl. 600 IN AAAA 2001:7b8:206:1::53 +open.nlnetlabs.nl. 600 IN RRSIG AAAA 12 3 600 20090903100515 20090806100515 60385 nlnetlabs.nl. +tdW+Uhkl2dBsD3zjGFGg1UtkBgfEhM6aXzERl0gWElgoJ4pCpXTV7VhZQ4yjibpMYjcXsBhQLcN7AuG20Ps9Q== ;{id = 60385} +ENTRY_END + +ENTRY_BEGIN +SECTION QUESTION +open.nlnetlabs.nl. IN NSEC +SECTION ANSWER +open.nlnetlabs.nl. 3600 IN NSEC nlnetlabs.nl. A AAAA RRSIG NSEC +open.nlnetlabs.nl. 3600 IN RRSIG NSEC 12 3 3600 20090903100515 20090806100515 60385 nlnetlabs.nl. vOzQQh9ITdgD74ohIE37L8mAZcgDt7V+HrrPjCdalsFYw9dvGwuEvc0MfSDmzrFQ7OhL0elwI/A1AfK57M7emQ== ;{id = 60385} +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.hinfo b/external/unbound/testdata/test_sigs.hinfo new file mode 100644 index 0000000..eb4d594 --- /dev/null +++ b/external/unbound/testdata/test_sigs.hinfo @@ -0,0 +1,55 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test HINFO canonicalisation + +; RSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +jelte.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +jelte.nlnetlabs.nl. 3600 IN DNSKEY 256 3 5 AwEAAawmHBgxeOiaYE4JpNU+CBqEj7xGB1o6ThEsUmtjsbmTnsJ89uWv 2PudzhQKCR1hJtuxVxG0Aw4mwHlAy+SoWHp8NXW1JYVA5qbvYhUUUM3l +ZFImaMhShhlviJJDLla5nmB5pyNYbC4wxqkCs51mzJY1abbCmZepmQL IlprTjUL +ENTRY_END + +; check that signatures work +ENTRY_BEGIN +SECTION QUESTION +jelte.nlnetlabs.nl. IN NS +SECTION ANSWER +jelte.nlnetlabs.nl. 3600 IN NS ns1.jelte.nlnetlabs.nl. +jelte.nlnetlabs.nl. 3600 IN NS ns2.jelte.nlnetlabs.nl. +jelte.nlnetlabs.nl. 3600 IN RRSIG NS 5 3 3600 20090203100022 20090106100022 48885 jelte.nlnetlabs.nl. E3G8ZsCvUw56EKxYA4JzjYaB3ojLpdmQdUHOPSxlWK43haSuxpFERGRc P7AhiMjcYcoJcR+LWQr0uOFVnW8VcFFdy8u7Gs9MNAIWs5+jOaI3WDRC reee7K/NEBiubQCdm7UPA894VNM5oiLCa1waMoMD+LfEeijuN4N09HqY 6eo= +ENTRY_END + +; currently this fails due to the design of canonicalisation in unbound. +; HINFO record signed with ldns, HINFO in uppercase, signature uppercase +ENTRY_BEGIN +SECTION QUESTION +jelte.nlnetlabs.nl. IN HINFO +SECTION ANSWER +jelte.nlnetlabs.nl. 3600 IN HINFO "Jelte" "Machine van" +jelte.nlnetlabs.nl. 3600 IN RRSIG HINFO 5 3 3600 20090203100022 20090106100022 48885 jelte.nlnetlabs.nl. eRig3NjIIgBTmQiN7AREmplgiY6OOtVwCNZgF5UAoYFAE1K1tl5WLqe9 FmTcVtaNUzFdgYv+TD93NNYdV0uxJkr+rS2sSykGf9OIlxevFm+rW2ya 4/Y+5GIN77eN9q9/6ULQRdsX3p8w1fhloiDXk+tgCaw+cJJElMEE1Avw 2dY= +ENTRY_END + + +; HINFO record signed with ldns, HINFO in lowercase, signature lowercase +ENTRY_BEGIN +SECTION QUESTION +jelte.nlnetlabs.nl. IN HINFO +SECTION ANSWER +jelte.nlnetlabs.nl. 3600 IN HINFO "jelte" "machine van" +jelte.nlnetlabs.nl. 3600 IN RRSIG HINFO 5 3 3600 20090203105558 20090106105558 48885 jelte.nlnetlabs.nl. UwFKSqH9oau3nCdJ4i6iYamo2izgMCKy1K8ec0IkhniUONKaIGiRNz8/ QrLAeBHhMnLQYNV/GBprNjvnPyYLG/6bWYUBxvP6pCG4oDEmNY7QF9di I6So5Ycv0ZWaYoT/NYStUj1fLNZ4xCdNXVLA7Oi5PRMeOvPQIvMG3hHK Ja0= +ENTRY_END + +; HINFO record signed with ldns, HINFO in uppercase, signature lowercase +; (signer canonicalised) +ENTRY_BEGIN +SECTION QUESTION +bogus.jelte.nlnetlabs.nl. IN HINFO +SECTION ANSWER +jelte.nlnetlabs.nl. 3600 IN HINFO "Jelte" "Machine van" +jelte.nlnetlabs.nl. 3600 IN RRSIG HINFO 5 3 3600 20090203105558 20090106105558 48885 jelte.nlnetlabs.nl. UwFKSqH9oau3nCdJ4i6iYamo2izgMCKy1K8ec0IkhniUONKaIGiRNz8/ QrLAeBHhMnLQYNV/GBprNjvnPyYLG/6bWYUBxvP6pCG4oDEmNY7QF9di I6So5Ycv0ZWaYoT/NYStUj1fLNZ4xCdNXVLA7Oi5PRMeOvPQIvMG3hHK Ja0= +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.revoked b/external/unbound/testdata/test_sigs.revoked new file mode 100644 index 0000000..bcf6e15 --- /dev/null +++ b/external/unbound/testdata/test_sigs.revoked @@ -0,0 +1,24 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + + +; DNSKEY is revoked. +ENTRY_BEGIN +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 384 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 31027 (zsk), size = 512b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +secure.example.com. IN SOA +SECTION ANSWER +example.com. 43200 IN SOA home.kuroiwa.eng.br. hostmaster.cesar.sec3.br. 2008040903 86400 86400 8640000 600 +example.com. 43200 IN RRSIG SOA 5 2 43200 20081010000000 20080410122550 31027 example.com. af7nqRak6cEeQLytqLHMIUKPsOECA4Cu/Zpm7vdnKSh2q2+/8ZwIxwHLyCEGdiu/mTYffZEHTZytJyzxnB0oxA== ;{id = 31027} +ENTRY_END + + diff --git a/external/unbound/testdata/test_sigs.rsasha256 b/external/unbound/testdata/test_sigs.rsasha256 new file mode 100644 index 0000000..0c44ffa --- /dev/null +++ b/external/unbound/testdata/test_sigs.rsasha256 @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test RSASHA256 signatures. + +; RSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 8 AwEAAbd9WqjzE2Pynz21OG5doSf9hFzMr5dhzz2waZ3vTa+0o5r7AjTAqmA1yH/B3+aAMihUm5ucZSfVqo7+kOaRE8yFj9aivOmA1n1+JLevJq/oyvQyjxQN2Qb89LyaNUT5oKZIiL+uyyhNW3KDR3SSbQ/GBwQNDHVcZi+JDR3RC0r7 ;{id = 1443 (zsk), size = 1024b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 192.0.2.66 +www.example.com. 3600 IN RRSIG A 8 3 3600 20070926134150 20070829134150 1443 example.com. sX+BZ6Qdq0Td/THR1HgOnWh9URNP03KMEgjpnRGbS74NqlmlqLU3HcimOT/lUD7xsZTeOIWw5kAcQePxU3UrjS5gsIttIXAfrHFmOtTsyb0O4w0/RpR0QYxRl1hk4zQRPzHeEkgxNTe+y9V9gYe7iv9OddXsfwEnmqQiXk+tdsU= ;{id = 1443} +ENTRY_END diff --git a/external/unbound/testdata/test_sigs.rsasha256_draft b/external/unbound/testdata/test_sigs.rsasha256_draft new file mode 100644 index 0000000..4e1cb9c --- /dev/null +++ b/external/unbound/testdata/test_sigs.rsasha256_draft @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test RSASHA256 signatures from draft-ietf-dnsext-dnssec-rsasha256-14 + +ENTRY_BEGIN +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY (256 3 8 AwEAAcFcGsaxxdgiuuGmCkVI my4h99CqT7jwY3pexPGcnUFtR2Fh36BponcwtkZ4cAgtvd4Qs8P kxUdp6p/DlUmObdk= );{id = 9033 (zsk), size = 512b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 192.0.2.91 +www.example.net. 3600 IN RRSIG (A 8 3 3600 20300101000000 20000101000000 9033 example.net. kRCOH6u7l0QGy9qpC9 l1sLncJcOKFLJ7GhiUOibu4teYp5VE9RncriShZNz85mwlMgNEa cFYK/lPtPiVYP4bwg== );{id = 9033} +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.rsasha512_draft b/external/unbound/testdata/test_sigs.rsasha512_draft new file mode 100644 index 0000000..08d5bcb --- /dev/null +++ b/external/unbound/testdata/test_sigs.rsasha512_draft @@ -0,0 +1,23 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test RSASHA512 signatures from draft-ietf-dnsext-dnssec-rsasha256-14 + +ENTRY_BEGIN +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY (256 3 10 AwEAAdHoNTOW+et86KuJOWRD p1pndvwb6Y83nSVXXyLA3DLroROUkN6X0O6pnWnjJQujX/AyhqFD xj13tOnD9u/1kTg7cV6rklMrZDtJCQ5PCl/D7QNPsgVsMu1J2Q8g pMpztNFLpPBz1bWXjDtaR7ZQBlZ3PFY12ZTSncorffcGmhOL);{id = 3740 (zsk), size = 1024b} +ENTRY_END + +; entry to test +ENTRY_BEGIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 192.0.2.91 +www.example.net. 3600 IN RRSIG (A 10 3 3600 20300101000000 20000101000000 3740 example.net. tsb4wnjRUDnB1BUi+t 6TMTXThjVnG+eCkWqjvvjhzQL1d0YRoOe0CbxrVDYd0xDtsuJRa eUw1ep94PzEWzr0iGYgZBWm/zpq+9fOuagYJRfDqfReKBzMweOL DiNa8iP5g9vMhpuv6OPlvpXwm9Sa9ZXIbNl1MBGk0fthPgxdDLw =);{id = 3740} +ENTRY_END + diff --git a/external/unbound/testdata/test_sigs.sha1_and_256 b/external/unbound/testdata/test_sigs.sha1_and_256 new file mode 100644 index 0000000..92fb05a --- /dev/null +++ b/external/unbound/testdata/test_sigs.sha1_and_256 @@ -0,0 +1,56 @@ +; Signature test file + +; first entry is a DNSKEY answer, with the DNSKEY rrset used for verification. +; later entries are verified with it. + +; Test multiple signature algos: RSASHA1 + RSASHA256 signatures. + +; RSA key from ldns tool +ENTRY_BEGIN +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 8 AwEAAbd9WqjzE2Pynz21OG5doSf9hFzMr5dhzz2waZ3vTa+0o5r7AjTAqmA1yH/B3+aAMihUm5ucZSfVqo7+kOaRE8yFj9aivOmA1n1+JLevJq/oyvQyjxQN2Qb89LyaNUT5oKZIiL+uyyhNW3KDR3SSbQ/GBwQNDHVcZi+JDR3RC0r7 ;{id = 1443 (zsk), size = 1024b} +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +ENTRY_END + +; both signatures valid +ENTRY_BEGIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 192.0.2.66 +www.example.com. 3600 IN RRSIG A 8 3 3600 20070926134150 20070829134150 1443 example.com. sX+BZ6Qdq0Td/THR1HgOnWh9URNP03KMEgjpnRGbS74NqlmlqLU3HcimOT/lUD7xsZTeOIWw5kAcQePxU3UrjS5gsIttIXAfrHFmOtTsyb0O4w0/RpR0QYxRl1hk4zQRPzHeEkgxNTe+y9V9gYe7iv9OddXsfwEnmqQiXk+tdsU= ;{id = 1443} +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Ip2xOAgSq3HdeGEMyQ0jafKNOOJO7Ca+huBgBPSj7B3txTlP9hBzlV0rb0XULymEiQLSpIPm4EY7xzom7z6aKA== ;{id = 30899} +ENTRY_END + +; the SHA1 invalid +ENTRY_BEGIN +SECTION QUESTION +bogus.example.com. IN A +SECTION ANSWER +bogus.example.com. 3600 IN A 192.0.2.66 +bogus.example.com. 3600 IN RRSIG A 8 3 3600 20070926134150 20070829134150 1443 example.com. qaYKAK9+t5HggYjHduA5d3A3i41HoU0ct0yqNzsYQqElFkH0d1aTjRDExD0PGeVbMTocMBru+ID9cLot3kwgn8aZL6UI3AwV6MR+0lianuA8DyhuqpD8OwkZ+LJxNsfq3t5ospXlBhyaI95S7lC3N6dsHDj4qtOwyE42fnQkedE= ;{id = 1443} +bogus.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Ip2xOAgSq3HdeGEMyQ0jafKNOOJO7Ca+huBgBPSj7B3txTlP9hBzlV0rb0XULymEiQLSpIPm4EY7xzom7z6aKA== ;{id = 30899} +ENTRY_END + +; the SHA256 invalid +ENTRY_BEGIN +SECTION QUESTION +bogus.example.com. IN A +SECTION ANSWER +bogus.example.com. 3600 IN A 192.0.2.66 +bogus.example.com. 3600 IN RRSIG A 8 3 3600 20070926134150 20070829134150 1443 example.com. sX+BZ6Qdq0Td/THR1HgOnWh9URNP03KMEgjpnRGbS74NqlmlqLU3HcimOT/lUD7xsZTeOIWw5kAcQePxU3UrjS5gsIttIXAfrHFmOtTsyb0O4w0/RpR0QYxRl1hk4zQRPzHeEkgxNTe+y9V9gYe7iv9OddXsfwEnmqQiXk+tdsU= ;{id = 1443} +bogus.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. EetlYQbmdt8deu6LIOYTxwHsMnivWBaxClTlLTPooUjgE+upQfCbG25mdY/wx+lM8fthKry+z65YACR8opA0Sw== ;{id = 30899} +ENTRY_END + +; SHA1 and SHA256 not valid +ENTRY_BEGIN +SECTION QUESTION +bogus.example.com. IN A +SECTION ANSWER +bogus.example.com. 3600 IN A 192.0.2.66 +bogus.example.com. 3600 IN RRSIG A 8 3 3600 20070926134150 20070829134150 1443 example.com. sX+BZ6Qdq0Td/THR1HgOnWh9URNP03KMEgjpnRGbS74NqlmlqLU3HcimOT/lUD7xsZTeOIWw5kAcQePxU3UrjS5gsIttIXAfrHFmOtTsyb0O4w0/RpR0QYxRl1hk4zQRPzHeEkgxNTe+y9V9gYe7iv9OddXsfwEnmqQiXk+tdsU= ;{id = 1443} +bogus.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Ip2xOAgSq3HdeGEMyQ0jafKNOOJO7Ca+huBgBPSj7B3txTlP9hBzlV0rb0XULymEiQLSpIPm4EY7xzom7z6aKA== ;{id = 30899} +ENTRY_END + diff --git a/external/unbound/testdata/trust_cname_chain.rpl b/external/unbound/testdata/trust_cname_chain.rpl new file mode 100644 index 0000000..e4d2d2a --- /dev/null +++ b/external/unbound/testdata/trust_cname_chain.rpl @@ -0,0 +1,153 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test trust in cname chain answer + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME xxx.example.com. +xxx.example.com. IN CNAME yyy.example.com. +yyy.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +xxx.example.com. IN A +SECTION ANSWER +xxx.example.com. IN CNAME yyy.example.com. +yyy.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +yyy.example.com. IN A +SECTION ANSWER +yyy.example.com. IN A 10.20.30.42 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + + +; This stores it into cache. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME xxx.example.com. +xxx.example.com. IN CNAME yyy.example.com. +;;; did not trust the remainder of the CNAME chain! +yyy.example.com. IN A 10.20.30.42 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ttl_max.rpl b/external/unbound/testdata/ttl_max.rpl new file mode 100644 index 0000000..1faa054 --- /dev/null +++ b/external/unbound/testdata/ttl_max.rpl @@ -0,0 +1,213 @@ +; config options +server: + access-control: 127.0.0.1 allow_snoop + cache-max-ttl: 10 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test TTL max option for messages in the cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 248 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +ENTRY_END + +RANGE_END + +; start by passing time ; so we are not at 0 +STEP 1 TIME_PASSES ELAPSE 10 + +; query for the record +STEP 8 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA CD +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 248 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; wait +STEP 20 TIME_PASSES ELAPSE 17 + +; do a lookup to check TTLs. +STEP 25 QUERY +ENTRY_BEGIN +REPLY +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 26 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +. 3600 IN NS K.ROOT-SERVERS.NET. +SECTION AUTHORITY +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. 3600 IN A 193.0.14.129 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ttl_min.rpl b/external/unbound/testdata/ttl_min.rpl new file mode 100644 index 0000000..b965fdb --- /dev/null +++ b/external/unbound/testdata/ttl_min.rpl @@ -0,0 +1,214 @@ +; config options +server: + access-control: 127.0.0.1 allow_snoop + cache-min-ttl: 10 + qname-minimisation: "no" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test TTL min option for messages in the cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 5 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +ENTRY_END + +RANGE_END + +; start by passing time ; so we are not at 0 +STEP 1 TIME_PASSES ELAPSE 10 + +; query for the record +STEP 8 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA CD +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; wait for 7 seconds +STEP 20 TIME_PASSES ELAPSE 7 + +; do a lookup to check TTLs. +STEP 25 QUERY +ENTRY_BEGIN +REPLY +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 26 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RA +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3593 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3593 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/ttl_msg.rpl b/external/unbound/testdata/ttl_msg.rpl new file mode 100644 index 0000000..efb7ea3 --- /dev/null +++ b/external/unbound/testdata/ttl_msg.rpl @@ -0,0 +1,492 @@ +; config options +; fetch all extra targets - we want to trigger a lookup in cache +server: + target-fetch-policy: "-1 -1 -1 -1 -1" + qname-minimisation: "no" + access-control: 127.0.0.1 allow_snoop + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test TTL countdown on messages in the cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN A +SECTION ANSWER +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN A +SECTION ANSWER +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.gtld-servers.net. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +K.ROOT-SERVERS.NET. IN AAAA +SECTION AUTHORITY +. 86400 IN SOA . . 20070304 28800 7200 604800 86400 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.com. IN A +SECTION AUTHORITY +foo.com. IN NS ns.foo.com. +;foo.com. IN NS nx1.example.com. +SECTION ADDITIONAL +ns.foo.com. IN A 1.2.5.6 +ENTRY_END +RANGE_END + +; ns.foo.com +RANGE_BEGIN 0 100 + ADDRESS 1.2.5.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +foo.com. IN NS +SECTION ANSWER +foo.com. IN NS ns.foo.com. +;foo.com. IN NS nx1.example.com. +SECTION ADDITIONAL +ns.foo.com. IN A 1.2.5.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +;www.foo.com. IN A 1.2.5.6 +www.foo.com. IN CNAME nx1.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. IN A 1.2.5.6 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION AUTHORITY +foo.com. IN SOA . . 1 2 3 4 3600 +ENTRY_END +RANGE_END + +; ns.example.com. --- serial=15 +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx2.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +; ns.example.com. --- serial=17 +RANGE_BEGIN 20 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx2.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +; start by passing time ; so we are not at 0 +STEP 1 TIME_PASSES ELAPSE 10 + +; query for NXDOMAIN +STEP 8 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN CD +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 15 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +; wait for 5 seconds +STEP 20 TIME_PASSES ELAPSE 5 + +; do a lookup for nx1.example.com just to check TTLs... +STEP 25 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +STEP 26 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN CD +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 5 IN SOA . . 15 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +; cause a lookup that refreshes the TTL on the SOA record +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx2.example.com. IN A +ENTRY_END +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx2.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +; do a lookup for nx1.example.com to check TTLs updated +STEP 35 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +STEP 36 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN CD +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +; cause a lookup for nx1.example.com bypassing the cache. +; with bug; this causes msg ttl for nx1 to be time(NOW)+ttl. +; so 15+5 = 20 +; visiable in debug log as "msg ttl is %d" +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN A +ENTRY_END +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +;www.foo.com IN A 1.2.5.6 +www.foo.com IN CNAME nx1.example.com. +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +ENTRY_END + +; now cause lookup from cache by not passing CD flag +; (validator has a look, and stores after iterator cache lookup). +STEP 45 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END +STEP 46 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 10 IN SOA . . 17 28800 7200 604800 10 +SECTION ADDITIONAL +ENTRY_END + +; the message should timeout in 5 seconds, wait 7 +STEP 50 TIME_PASSES ELAPSE 7 + +; it is still there? (nonRD query) +STEP 55 QUERY +ENTRY_BEGIN +REPLY +SECTION QUESTION +nx1.example.com. IN A +ENTRY_END + +; this answer is the bug - NXDOMAIN too long in the cache. +;STEP 56 CHECK_ANSWER +;ENTRY_BEGIN +;MATCH all ttl +;REPLY QR RA NXDOMAIN +;SECTION QUESTION +;nx1.example.com. IN A +;SECTION ANSWER +;SECTION AUTHORITY +;example.com. 3 IN SOA . . 17 28800 7200 604800 10 +;SECTION ADDITIONAL +;ENTRY_END + +; Now the correct answer: no such cached query. +STEP 56 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA NOERROR +SECTION QUESTION +nx1.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_adbit.rpl b/external/unbound/testdata/val_adbit.rpl new file mode 100644 index 0000000..f8f44fc --- /dev/null +++ b/external/unbound/testdata/val_adbit.rpl @@ -0,0 +1,173 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator AD bit signaling + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD AD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; ask from cache too +STEP 21 QUERY +ENTRY_BEGIN +REPLY RD AD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 23 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/val_adcopy.rpl b/external/unbound/testdata/val_adcopy.rpl new file mode 100644 index 0000000..beb9523 --- /dev/null +++ b/external/unbound/testdata/val_adcopy.rpl @@ -0,0 +1,172 @@ +; config options +; The island of trust is at example.com +server: + #trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator AD bit sent by untrusted upstream + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA AD NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA AD NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA RA AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD AD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; ask from cache too +STEP 21 QUERY +ENTRY_BEGIN +REPLY RD AD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 23 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/val_anchor_nx.rpl b/external/unbound/testdata/val_anchor_nx.rpl new file mode 100644 index 0000000..5d8855b --- /dev/null +++ b/external/unbound/testdata/val_anchor_nx.rpl @@ -0,0 +1,220 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with secure proof of trust anchor nxdomain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN DS +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_anchor_nx_nosig.rpl b/external/unbound/testdata/val_anchor_nx_nosig.rpl new file mode 100644 index 0000000..e0dc7d8 --- /dev/null +++ b/external/unbound/testdata/val_anchor_nx_nosig.rpl @@ -0,0 +1,218 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with unsigned denial of trust anchor + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN DS +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +blub.example.com. NSEC znub.example.com. A MX RRSIG NSEC +blub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCic/WwyMtdDE/84g8l0S0M8AOtnAhR88hQEp5cD5XQ3EmQ79RUuNTCgdg== ;{id = 2854} +example.com. NSEC blub.example.com. SOA NS MX DNSKEY RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFFYX7iNIlT79gNFFlvnn44Ittm6HAhUAg7u0hZ4to87qyfkonZu2jVLW3xw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ans_dsent.rpl b/external/unbound/testdata/val_ans_dsent.rpl new file mode 100644 index 0000000..09ce621 --- /dev/null +++ b/external/unbound/testdata/val_ans_dsent.rpl @@ -0,0 +1,247 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with empty nonterminals on the trust chain. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; responses to DS empty nonterminal queries. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +194.example.com. IN DS +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. host.example.com. 2007091980 3600 7200 1209600 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCOn5qKBIV7bwFMBA+Qqiblx0cylAhUAoFiGtFm2wHhJpq9MooTYdeVw45s= ;{id = 2854} + +; This NSEC proves the NOERROR/NODATA case. +194.example.com. IN NSEC 0.0.194.example.com. A RRSIG NSEC +194.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDcoKl74U9FjsuYF3Vc0E8GQ2GgzAhUAhlyhO2MMcAWQMxIhEZ4MguokN5g= ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +; this should be NOERROR. +REPLY QR AA NOERROR +SECTION QUESTION +0.194.example.com. IN DS +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. host.example.com. 2007091980 3600 7200 1209600 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCOn5qKBIV7bwFMBA+Qqiblx0cylAhUAoFiGtFm2wHhJpq9MooTYdeVw45s= ;{id = 2854} + +; This NSEC proves the NOERROR/NODATA case. +194.example.com. IN NSEC 0.0.194.example.com. A RRSIG NSEC +194.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDcoKl74U9FjsuYF3Vc0E8GQ2GgzAhUAhlyhO2MMcAWQMxIhEZ4MguokN5g= ;{id = 2854} + +ENTRY_END + +; response for delegation to sub zone. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +0.0.194.example.com. 3600 IN RRSIG DS 3 5 3600 20070926135752 20070829135752 2854 example.com. MCwCFC9GIqtp/103hktw6bPpD83gr+0iAhQ8yev2yUaR9l64rYBUYTJqOoTKdw== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub zone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +0.0.194.example.com. 3600 IN RRSIG DS 3 5 3600 20070926135752 20070829135752 2854 example.com. MCwCFC9GIqtp/103hktw6bPpD83gr+0iAhQ8yev2yUaR9l64rYBUYTJqOoTKdw== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. for zone 0.0.194.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN NS +SECTION ANSWER +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN RRSIG NS 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. KXDA+/PJAE+dXhv6O6Z0ZovDwabSRJcIt+GT5AL6ewlj46hzo/SDKUtEhYCeT1IVQvYtXrESwFZjpp7N0rXXBg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +; response to DNSKEY priming query +; 0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN DNSKEY +SECTION ANSWER +0.0.194.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +0.0.194.example.com. 3600 IN RRSIG DNSKEY 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. fSmc7ef6NwbDXC0o4wPc/aa8LakW5ZJwEZ4xPYl3tTZKmPNM7hPXskl1tFlvst9Va4u37F62v+16trprHb+SCQ== ;{id = 30899} +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN RRSIG NS 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. KXDA+/PJAE+dXhv6O6Z0ZovDwabSRJcIt+GT5AL6ewlj46hzo/SDKUtEhYCeT1IVQvYtXrESwFZjpp7N0rXXBg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +328.0.0.194.example.com. IN A 11.11.11.11 +328.0.0.194.example.com. 3600 IN RRSIG A 5 6 3600 20070926135752 20070829135752 30899 0.0.194.example.com. chZW77mqywhw/4ch6BxXQ4EbFgb9zgh2xF75FLlKq/7ey6CfHSJRpJRjRqtMTn+1i18UL2B4nPS/WnK5DZeqlA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +328.0.0.194.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +328.0.0.194.example.com. 3600 IN A 11.11.11.11 +328.0.0.194.example.com. 3600 IN RRSIG A 5 6 3600 20070926135752 20070829135752 30899 0.0.194.example.com. chZW77mqywhw/4ch6BxXQ4EbFgb9zgh2xF75FLlKq/7ey6CfHSJRpJRjRqtMTn+1i18UL2B4nPS/WnK5DZeqlA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ans_nx.rpl b/external/unbound/testdata/val_ans_nx.rpl new file mode 100644 index 0000000..48f4527 --- /dev/null +++ b/external/unbound/testdata/val_ans_nx.rpl @@ -0,0 +1,249 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS nodata as nxdomain on trust chain +; This is a bug in ANS 2.8.1.0 where it gives an NXDOMAIN instead of +; NOERROR for an empty nonterminal DS query. The proof for this NXDOMAIN +; is the NSEC that proves emptynonterminal. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; responses to DS empty nonterminal queries. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +194.example.com. IN DS +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. host.example.com. 2007091980 3600 7200 1209600 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCOn5qKBIV7bwFMBA+Qqiblx0cylAhUAoFiGtFm2wHhJpq9MooTYdeVw45s= ;{id = 2854} + +; This NSEC proves the NOERROR/NODATA case. +194.example.com. IN NSEC 0.0.194.example.com. A RRSIG NSEC +194.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDcoKl74U9FjsuYF3Vc0E8GQ2GgzAhUAhlyhO2MMcAWQMxIhEZ4MguokN5g= ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +; Bad NXDOMAIN response, this should be NOERROR. +REPLY QR AA NXDOMAIN +SECTION QUESTION +0.194.example.com. IN DS +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. host.example.com. 2007091980 3600 7200 1209600 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCOn5qKBIV7bwFMBA+Qqiblx0cylAhUAoFiGtFm2wHhJpq9MooTYdeVw45s= ;{id = 2854} + +; This NSEC proves the NOERROR/NODATA case. +194.example.com. IN NSEC 0.0.194.example.com. A RRSIG NSEC +194.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDcoKl74U9FjsuYF3Vc0E8GQ2GgzAhUAhlyhO2MMcAWQMxIhEZ4MguokN5g= ;{id = 2854} + +ENTRY_END + +; response for delegation to sub zone. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +0.0.194.example.com. 3600 IN RRSIG DS 3 5 3600 20070926135752 20070829135752 2854 example.com. MCwCFC9GIqtp/103hktw6bPpD83gr+0iAhQ8yev2yUaR9l64rYBUYTJqOoTKdw== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub zone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +0.0.194.example.com. 3600 IN RRSIG DS 3 5 3600 20070926135752 20070829135752 2854 example.com. MCwCFC9GIqtp/103hktw6bPpD83gr+0iAhQ8yev2yUaR9l64rYBUYTJqOoTKdw== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. for zone 0.0.194.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN NS +SECTION ANSWER +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN RRSIG NS 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. KXDA+/PJAE+dXhv6O6Z0ZovDwabSRJcIt+GT5AL6ewlj46hzo/SDKUtEhYCeT1IVQvYtXrESwFZjpp7N0rXXBg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to DNSKEY priming query +; 0.0.194.example.com. 3600 IN DS 30899 RSASHA1 1 aa46f0717075d9750ac3596c659a2e326b33c28c +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.0.194.example.com. IN DNSKEY +SECTION ANSWER +0.0.194.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +0.0.194.example.com. 3600 IN RRSIG DNSKEY 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. fSmc7ef6NwbDXC0o4wPc/aa8LakW5ZJwEZ4xPYl3tTZKmPNM7hPXskl1tFlvst9Va4u37F62v+16trprHb+SCQ== ;{id = 30899} +SECTION AUTHORITY +0.0.194.example.com. IN NS ns.sub.example.com. +0.0.194.example.com. 3600 IN RRSIG NS 5 5 3600 20070926135752 20070829135752 30899 0.0.194.example.com. KXDA+/PJAE+dXhv6O6Z0ZovDwabSRJcIt+GT5AL6ewlj46hzo/SDKUtEhYCeT1IVQvYtXrESwFZjpp7N0rXXBg== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +328.0.0.194.example.com. IN A 11.11.11.11 +328.0.0.194.example.com. 3600 IN RRSIG A 5 6 3600 20070926135752 20070829135752 30899 0.0.194.example.com. chZW77mqywhw/4ch6BxXQ4EbFgb9zgh2xF75FLlKq/7ey6CfHSJRpJRjRqtMTn+1i18UL2B4nPS/WnK5DZeqlA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +328.0.0.194.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +328.0.0.194.example.com. IN A +SECTION ANSWER +328.0.0.194.example.com. 3600 IN A 11.11.11.11 +328.0.0.194.example.com. 3600 IN RRSIG A 5 6 3600 20070926135752 20070829135752 30899 0.0.194.example.com. chZW77mqywhw/4ch6BxXQ4EbFgb9zgh2xF75FLlKq/7ey6CfHSJRpJRjRqtMTn+1i18UL2B4nPS/WnK5DZeqlA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_any.rpl b/external/unbound/testdata/val_any.rpl new file mode 100644 index 0000000..058f449 --- /dev/null +++ b/external/unbound/testdata/val_any.rpl @@ -0,0 +1,203 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with response to qtype ANY + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ns7.domain-registry.example. 80173 IN A 62.4.86.230 +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +v.net.example. 28800 IN A 213.154.224.17 +v.net.example. 28800 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +johnny.example.com. 600 IN A 213.154.224.44 +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +johnny.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MCwCFAh0/zSpCd/9eMNz7AyfnuGQFD1ZAhQEpNFNw4XByNEcbi/vsVeii9kp7g== ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD DO +SECTION QUESTION +example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_any_cname.rpl b/external/unbound/testdata/val_any_cname.rpl new file mode 100644 index 0000000..5e5d12b --- /dev/null +++ b/external/unbound/testdata/val_any_cname.rpl @@ -0,0 +1,164 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with response to qtype ANY that includes CNAME + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. 3600 IN CNAME serf.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. AH/qSA7et6tXS08u4UUsWmXbIedGFpBKhiCqqVAgV8Z95dgn/vrB5ag= ;{id = 2854} +www.example.com. 18000 IN NSEC example.com. CNAME RRSIG NSEC +www.example.com. 18000 IN RRSIG NSEC 3 3 18000 20070926134150 20070829134150 2854 example.com. ACqeCl/aLq90zkeSfneQY+HnvJTUAeyTF03HWdXr3WhnYzupKAdnuQ4= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +serf.example.com. IN ANY +SECTION ANSWER +serf.example.com. 3600 IN A 192.0.2.1 +serf.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AGLOiUcDNkSCplT07hT8szlUfMHNfPh6/104ydBt4bJ6UcfXUiM3pV8= ;{id = 2854} +serf.example.com. 18000 IN NSEC www.example.com. A RRSIG NSEC +serf.example.com. 18000 IN RRSIG NSEC 3 3 18000 20070926134150 20070829134150 2854 example.com. AEBNiqg7Uz+NfNvoyA4KjkqJPb7hrjyS7oPE2MGNgVwUgQrcRIxd7DA= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD DO +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. 3600 IN CNAME serf.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. AH/qSA7et6tXS08u4UUsWmXbIedGFpBKhiCqqVAgV8Z95dgn/vrB5ag= ;{id = 2854} +www.example.com. 18000 IN NSEC example.com. CNAME RRSIG NSEC +www.example.com. 18000 IN RRSIG NSEC 3 3 18000 20070926134150 20070829134150 2854 example.com. ACqeCl/aLq90zkeSfneQY+HnvJTUAeyTF03HWdXr3WhnYzupKAdnuQ4= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_any_dname.rpl b/external/unbound/testdata/val_any_dname.rpl new file mode 100644 index 0000000..3957f7b --- /dev/null +++ b/external/unbound/testdata/val_any_dname.rpl @@ -0,0 +1,207 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with response to qtype ANY that includes DNAME + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCdje5lZfq9kENX9a8lOOKn79BRlQIUbVCx/fXo0kfvAgC5kB8Dvd5LodQ= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ns7.domain-registry.example. 80173 IN A 62.4.86.230 +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +v.net.example. 28800 IN A 213.154.224.17 +v.net.example. 28800 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +johnny.example.com. 600 IN A 213.154.224.44 +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +johnny.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MCwCFAh0/zSpCd/9eMNz7AyfnuGQFD1ZAhQEpNFNw4XByNEcbi/vsVeii9kp7g== ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD DO +SECTION QUESTION +example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCdje5lZfq9kENX9a8lOOKn79BRlQIUbVCx/fXo0kfvAgC5kB8Dvd5LodQ= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cname_loop1.rpl b/external/unbound/testdata/val_cname_loop1.rpl new file mode 100644 index 0000000..b261ecf --- /dev/null +++ b/external/unbound/testdata/val_cname_loop1.rpl @@ -0,0 +1,146 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname loop + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.com. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFH0SwLHe7u56TshoVciFRHEl1KqbAhQ3zBOZMlL8bt1DqoDoM5ni8U/1UA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cname_loop2.rpl b/external/unbound/testdata/val_cname_loop2.rpl new file mode 100644 index 0000000..009616f --- /dev/null +++ b/external/unbound/testdata/val_cname_loop2.rpl @@ -0,0 +1,155 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname 2 step loop + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME foo.example.com. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFH0SwLHe7u56TshoVciFRHEl1KqbAhQ3zBOZMlL8bt1DqoDoM5ni8U/1UA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +foo.example.com. IN A +SECTION ANSWER +foo.example.com. IN CNAME www.example.com. +foo.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC7kcWPsMnGbjvzj5UNnxQzM0YvnAhUAgxIKgs1huJHvcAP2Xt3p8Adpy/c= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cname_loop3.rpl b/external/unbound/testdata/val_cname_loop3.rpl new file mode 100644 index 0000000..acdd110 --- /dev/null +++ b/external/unbound/testdata/val_cname_loop3.rpl @@ -0,0 +1,168 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname 3 step loop + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME foo.example.com. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFH0SwLHe7u56TshoVciFRHEl1KqbAhQ3zBOZMlL8bt1DqoDoM5ni8U/1UA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +foo.example.com. IN A +SECTION ANSWER +foo.example.com. IN CNAME bar.example.com. +foo.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFFMlXuWrNL/8aYOl9U9WYjgif8gAAhUAqsC/xOXakHP1SYxMSLANziOik94= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +bar.example.com. IN A +SECTION ANSWER +bar.example.com. IN CNAME www.example.com. +bar.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFAsalUJJSV86uPlfiGS3kKDc0JB7AhQ+qmHqagY/r36Re/J3Q1OfvcA1dA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnameinsectopos.rpl b/external/unbound/testdata/val_cnameinsectopos.rpl new file mode 100644 index 0000000..8a26feb --- /dev/null +++ b/external/unbound/testdata/val_cnameinsectopos.rpl @@ -0,0 +1,292 @@ +; config options +; The island of trust is at example.com +server: + ;trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with an insecure cname to positive cached + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +insecure.example.com. IN A +SECTION ANSWER +insecure.example.com. IN CNAME www.example.net. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +; Get www.example.net validated in the cache. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +; reference the cache object +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +insecure.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +insecure.example.com. IN A +SECTION ANSWER +insecure.example.com. IN CNAME www.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnamenx_dblnsec.rpl b/external/unbound/testdata/val_cnamenx_dblnsec.rpl new file mode 100644 index 0000000..4a04324 --- /dev/null +++ b/external/unbound/testdata/val_cnamenx_dblnsec.rpl @@ -0,0 +1,179 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname-nxdomain for duplicate NSEC detection + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +cname.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +cname.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +cname.example.com. IN A +SECTION ANSWER +cname.example.com. 3600 IN CNAME www.example.com. +cname.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFBhJC8qi+g+EOYqzT2q6RxE8Im09AhUAotz8NFnpY+cpEDNBKjM940a74/E= ;{id = 2854} +SECTION AUTHORITY +; already includes the necessary NSECs +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +cname.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +cname.example.com. IN A +SECTION ANSWER +cname.example.com. 3600 IN CNAME www.example.com. +cname.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFBhJC8qi+g+EOYqzT2q6RxE8Im09AhUAotz8NFnpY+cpEDNBKjM940a74/E= ;{id = 2854} +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnamenx_rcodenx.rpl b/external/unbound/testdata/val_cnamenx_rcodenx.rpl new file mode 100644 index 0000000..09d3793 --- /dev/null +++ b/external/unbound/testdata/val_cnamenx_rcodenx.rpl @@ -0,0 +1,237 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname-nxdomain with rcode nxdomain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnameqtype.rpl b/external/unbound/testdata/val_cnameqtype.rpl new file mode 100644 index 0000000..05ef474 --- /dev/null +++ b/external/unbound/testdata/val_cnameqtype.rpl @@ -0,0 +1,231 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a query for type cname + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN CNAME +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN CNAME +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN CNAME +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN CNAME +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN CNAME +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN CNAME +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametocloser.rpl b/external/unbound/testdata/val_cnametocloser.rpl new file mode 100644 index 0000000..d29478b --- /dev/null +++ b/external/unbound/testdata/val_cnametocloser.rpl @@ -0,0 +1,105 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + trust-anchor: "a.b.example.com. 3600 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8=" + val-override-date: "20091113091234" + fake-sha1: yes + trust-anchor-signaling: no + +forward-zone: + name: "." + forward-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to closer anchor under optout. + +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN CNAME www.a.b.example.com. +www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091213091234 20091111091234 30899 example.com. mfQXJgOsRe8wiqNDZT4+ygSgRqzNowJ20o5+b681Mssp0xc007dq1ZaUYwUCdZjTn/GhF+f74t0UI1oqsFw2XA== ;{id = 30899} + +SECTION AUTHORITY +;; nsec3param 1 1 1 d399eaab +; example.com. -> l0c0e5lac37ai0lpij31sj699hkktdmb. +; b.example.com. -> 1lq6sb4omkd2vgj0l8lro2cbie223hco. +;; closest encloser: example.com. +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. IN NSEC3 1 1 1 d399eaab l0c0e5lac37ai0lpij31sj699hkktdmc SOA NS DNSKEY NSEC3PARAM RRSIG +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. qjV0zsbDWLuoOQQ3tgCE2zo1z31bK9nv/Wh6xqKhmhyFI87nw2HM0lZGfRQrpWvWfBDczLRxHH9WNZkeIzv28w== ;{id = 30899} + +;; nextcloser is: b.example.com. ; under optout range. +; disproof of DS using the optout range. +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. IN NSEC3 1 1 1 d399eaab 1lq8sb4omkd2vgj0l8lro2cbie223hco NS RRSIG +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. ZOJhHYt+YkGHBxHynuXlyZ8PEGg4YyqD/roWiEtBoP2PiGoPNCNqtWd0WjRgsUT0YFp/VqjqAU/RH8D45B8S8A== ;{id = 30899} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.a.b.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +; NSEC that proves there is no AAAA record +www.a.b.example.com. IN NSEC zzz.a.b.example.com. A NSEC RRSIG MX +www.a.b.example.com. 3600 IN RRSIG NSEC 5 5 3600 20091213091234 20091111091234 16486 a.b.example.com. pOj+aOIolZ8VXlLpaLD1NsYVbl8FW4wmsJbiVTYAMcyDOlgxOsbhTtlB4jQ7uV9pRVAzkvdm1V5wc/1PcncTuw== ;{id = 16486} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20091213091234 20091111091234 30899 example.com. hc+1QLqhy6lcfgH95k6eabsXrYsdH2oTLqDu6BjHYrmLi0kX4ZDiOI+syhIcGw9+hRqW1j8t+lsHvzvi7BgcXg== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.example.com. IN DNSKEY +SECTION ANSWER +a.b.example.com. 3600 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} +a.b.example.com. 3600 IN RRSIG DNSKEY 5 4 3600 20091213091234 20091111091234 16486 a.b.example.com. kPftbF2Rut5h2Sc2k/gp27XS+4I9WQ/EYa5NJOnqfJZqpw/es7GuLyWAAZyvNhBDIUEenXtZ8k1H8F8poKdNXw== ;{id = 16486} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN CNAME www.a.b.example.com. +www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091213091234 20091111091234 30899 example.com. mfQXJgOsRe8wiqNDZT4+ygSgRqzNowJ20o5+b681Mssp0xc007dq1ZaUYwUCdZjTn/GhF+f74t0UI1oqsFw2XA== ;{id = 30899} +SECTION AUTHORITY +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. 3600 IN NSEC3 1 1 1 d399eaab l0c0e5lac37ai0lpij31sj699hkktdmc NS SOA RRSIG DNSKEY NSEC3PARAM ; flags: optout +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. qjV0zsbDWLuoOQQ3tgCE2zo1z31bK9nv/Wh6xqKhmhyFI87nw2HM0lZGfRQrpWvWfBDczLRxHH9WNZkeIzv28w== ;{id = 30899} +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. 3600 IN NSEC3 1 1 1 d399eaab 1lq8sb4omkd2vgj0l8lro2cbie223hco NS RRSIG ; flags: optout +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. ZOJhHYt+YkGHBxHynuXlyZ8PEGg4YyqD/roWiEtBoP2PiGoPNCNqtWd0WjRgsUT0YFp/VqjqAU/RH8D45B8S8A== ;{id = 30899} +www.a.b.example.com. 3600 IN NSEC zzz.a.b.example.com. A MX RRSIG NSEC +www.a.b.example.com. 3600 IN RRSIG NSEC 5 5 3600 20091213091234 20091111091234 16486 a.b.example.com. pOj+aOIolZ8VXlLpaLD1NsYVbl8FW4wmsJbiVTYAMcyDOlgxOsbhTtlB4jQ7uV9pRVAzkvdm1V5wc/1PcncTuw== ;{id = 16486} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametocloser_nosig.rpl b/external/unbound/testdata/val_cnametocloser_nosig.rpl new file mode 100644 index 0000000..cfd0d72 --- /dev/null +++ b/external/unbound/testdata/val_cnametocloser_nosig.rpl @@ -0,0 +1,98 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + trust-anchor: "a.b.example.com. 3600 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8=" + val-override-date: "20091113091234" + fake-sha1: yes + trust-anchor-signaling: no + +forward-zone: + name: "." + forward-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to closer anchor optout missing sigs. + +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. IN CNAME www.a.b.example.com. +www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091213091234 20091111091234 30899 example.com. mfQXJgOsRe8wiqNDZT4+ygSgRqzNowJ20o5+b681Mssp0xc007dq1ZaUYwUCdZjTn/GhF+f74t0UI1oqsFw2XA== ;{id = 30899} + +SECTION AUTHORITY +;; nsec3param 1 1 1 d399eaab +; example.com. -> l0c0e5lac37ai0lpij31sj699hkktdmb. +; b.example.com. -> 1lq6sb4omkd2vgj0l8lro2cbie223hco. +;; closest encloser: example.com. +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. IN NSEC3 1 1 1 d399eaab l0c0e5lac37ai0lpij31sj699hkktdmc SOA NS DNSKEY NSEC3PARAM RRSIG +l0c0e5lac37ai0lpij31sj699hkktdmb.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. qjV0zsbDWLuoOQQ3tgCE2zo1z31bK9nv/Wh6xqKhmhyFI87nw2HM0lZGfRQrpWvWfBDczLRxHH9WNZkeIzv28w== ;{id = 30899} + +;; nextcloser is: b.example.com. ; under optout range. +; disproof of DS using the optout range. +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. IN NSEC3 1 1 1 d399eaab 1lq8sb4omkd2vgj0l8lro2cbie223hco NS RRSIG +1lq4sb4omkd2vgj0l8lro2cbie223hco.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20091213091234 20091111091234 30899 example.com. ZOJhHYt+YkGHBxHynuXlyZ8PEGg4YyqD/roWiEtBoP2PiGoPNCNqtWd0WjRgsUT0YFp/VqjqAU/RH8D45B8S8A== ;{id = 30899} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.a.b.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +; NSEC that proves there is no AAAA record +www.a.b.example.com. IN NSEC zzz.a.b.example.com. A NSEC RRSIG MX +; signature missing! +;www.a.b.example.com. 3600 IN RRSIG NSEC 5 5 3600 20091213091234 20091111091234 16486 a.b.example.com. pOj+aOIolZ8VXlLpaLD1NsYVbl8FW4wmsJbiVTYAMcyDOlgxOsbhTtlB4jQ7uV9pRVAzkvdm1V5wc/1PcncTuw== ;{id = 16486} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20091213091234 20091111091234 30899 example.com. hc+1QLqhy6lcfgH95k6eabsXrYsdH2oTLqDu6BjHYrmLi0kX4ZDiOI+syhIcGw9+hRqW1j8t+lsHvzvi7BgcXg== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.example.com. IN DNSKEY +SECTION ANSWER +a.b.example.com. 3600 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} +; signature missing! +;a.b.example.com. 3600 IN RRSIG DNSKEY 5 4 3600 20091213091234 20091111091234 16486 a.b.example.com. kPftbF2Rut5h2Sc2k/gp27XS+4I9WQ/EYa5NJOnqfJZqpw/es7GuLyWAAZyvNhBDIUEenXtZ8k1H8F8poKdNXw== ;{id = 16486} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametocnamewctoposwc.rpl b/external/unbound/testdata/val_cnametocnamewctoposwc.rpl new file mode 100644 index 0000000..f17f5aa --- /dev/null +++ b/external/unbound/testdata/val_cnametocnamewctoposwc.rpl @@ -0,0 +1,211 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. IN DNSKEY 257 3 8 AwEAAdL6YJdvoKQJEt/SgB6MrbQ2RDwnrcQQb6bDE8FpGgLen6hvF31ntVsZ3RZzhCmwL6lvumOLFIRKaP9ZBEVutT9iMoF2dNRbT0TCUrv6uQNHcuCZ0BJhuDNBU42f3yOnfFv7PKxd0NP+yFHJkvDQAVLMB5GeUQuYnvgQGeZsf/3b" + val-override-date: "-1" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a regular cname to wildcard cname to wildcard response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 120 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 8 AwEAAdWzfjQD2bfQuoQGNYuS0ByosBxiTkoKcy9kMoWOQ/jx9rvTRhHImWxTxFtIyZOoRgn6E6mE71e5Y1q1nuyH544Em+4rNRMMW4bzecQmMmPk+B97MqW9aW6e4BwiCTt52IGfL++5GORYcaITw9UOlQLYH1oHHUNUC6ebHENofLTj ;{id = 64050 (zsk), size = 1024b} +example.com. 3600 IN DNSKEY 257 3 8 AwEAAdL6YJdvoKQJEt/SgB6MrbQ2RDwnrcQQb6bDE8FpGgLen6hvF31ntVsZ3RZzhCmwL6lvumOLFIRKaP9ZBEVutT9iMoF2dNRbT0TCUrv6uQNHcuCZ0BJhuDNBU42f3yOnfFv7PKxd0NP+yFHJkvDQAVLMB5GeUQuYnvgQGeZsf/3b ;{id = 46426 (ksk), size = 1024b} +example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20121126123249 20121029123249 46426 example.com. pisNb/A40XDEiMpcYtxc+yO6osISyfpqz+0UZ61pd70+TLXMF197zr9SqOVJHyRI6G2lSnFggxYrZDpxLbxOW0RY/KfjD3xlI14M/2DieJ1NdlQuYFGgTwxcoINUJ/wRd4YUxkF4JS0D4NBdQ0yQYR0KqDr84oyhnULEHX6WB7s= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION ANSWER +start.example.com. 3600 IN CNAME x.y.z.wc.example.com. +start.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126131853 20121029131853 64050 example.com. uN8+hg2b9kqpso4zTtpb8CdkGkgOdlbayH1Ui7NVSi1Y8un8FDG4NHy2gpCi0zIMpeAOa5bENe3cdTEwYZKHQdvnGjaI/zFWpFAzXsEFg0VlLxDQXSzRB6GtoFoUEYiZBHsmLIy3zWjuihlWK9fRzyPyVtBDDmqU8KK7+H3BYp0= +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126131853 20121029131853 64050 example.com. NQTIY1uMK1jxVMHOaMB4shedyhdAERZuPiZXytfqSH36hDVMf1C8tSxdbCjJ90lOLEWNtMmT09l5kh14gp1XIaBHzLuDsYmZJVeudBGCaQRkbM5focd2VMd8V4hHQk4odwsRrSY6IETftHeqeFiRifru/rI3x5Dlv8awI6V5TZI= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126131826 20121029131826 64050 example.com. iS1Pe45xt8SLGlmfmrSPTrnIAlwpIX8leTrsoLgpQJc98aA0XJmO/D32CbMTRZzAM1oBVggm80ht2RIQkX3W1NvN/prcu+Gp0Zrm0rtW+7Q7VwcSbo7jyHh5K8Mppp2OsCleexco5NVAKpDMvD0nyG+CsKtNMQpKK2DlumQsraE= +SECTION AUTHORITY +*.wc.example.com. 86400 IN NSEC www.example.com. CNAME RRSIG NSEC +*.wc.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131853 20121029131853 64050 example.com. YrmCLu0uGgD2gcU4p12BGnUGYcrKmfg82MJHSF5OnVmmJxXiSbSBnZPahbJNGA/kPLt+SlDyBTcssZKXWxM6bW7WF57OwffOj7rMyr5vhx7J6OsuWKotPVqnUFDx9j/rOum24yCKqoBWvpW/RYUHLuX1Wm05WMCgNWhuN4wqwiU= +*.end.example.com. 86400 IN NSEC escapedtext.example.com. A RRSIG NSEC +*.end.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131826 20121029131826 64050 example.com. P6uJSImaee+5NHlTP06pMxgO69qxjJc0Uo1+htjVyE8f15MhG8A7NttvzggbtyzmfLMPr7TilM+Mm7hC3pIk/TeBEdH8p+8qypnY0NzPntz5z1+6C6ZTjDXp6NxDwMz7th31r3B3u4xo/K4qMnXmrAFOIE5Lopk0uDGXfjKPCKE= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126131826 20121029131826 64050 example.com. NgY7UAdkXprnCi/O6c5XoB82tqLBd1bY9LmDG9wwN0zEUR5aHQcOmX9waHyqXQI86SOFQbGCvO2wDLqdqWniw1IYf4S66Vf9KrpaH2gVbvHKiEpGJPeDYQcD5xkv50Lsp4ktcLyuO/dk8ORCP7E2yC5IQVNeFgUfaqttZcJoxuQ= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126131826 20121029131826 64050 example.com. L/EsWsRNhM0Lt8877XYfm0FkVc+utuRPYlW/yxEi/Nzs/mTb9BMrOygsW0qfpYakYgfFvinR7S7ce9/naWidzGkWKYR85g2WFms3/TgchpmfjZHEsNyuT8zsiGrj3bQ3RxpT5cmt/IS2QlOak/RhdtawKfd9aqkMTVpP2idEQwY= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.z.wc.example.com. IN A +SECTION ANSWER +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126131853 20121029131853 64050 example.com. NQTIY1uMK1jxVMHOaMB4shedyhdAERZuPiZXytfqSH36hDVMf1C8tSxdbCjJ90lOLEWNtMmT09l5kh14gp1XIaBHzLuDsYmZJVeudBGCaQRkbM5focd2VMd8V4hHQk4odwsRrSY6IETftHeqeFiRifru/rI3x5Dlv8awI6V5TZI= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126131826 20121029131826 64050 example.com. iS1Pe45xt8SLGlmfmrSPTrnIAlwpIX8leTrsoLgpQJc98aA0XJmO/D32CbMTRZzAM1oBVggm80ht2RIQkX3W1NvN/prcu+Gp0Zrm0rtW+7Q7VwcSbo7jyHh5K8Mppp2OsCleexco5NVAKpDMvD0nyG+CsKtNMQpKK2DlumQsraE= +SECTION AUTHORITY +*.wc.example.com. 86400 IN NSEC www.example.com. CNAME RRSIG NSEC +*.wc.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131853 20121029131853 64050 example.com. YrmCLu0uGgD2gcU4p12BGnUGYcrKmfg82MJHSF5OnVmmJxXiSbSBnZPahbJNGA/kPLt+SlDyBTcssZKXWxM6bW7WF57OwffOj7rMyr5vhx7J6OsuWKotPVqnUFDx9j/rOum24yCKqoBWvpW/RYUHLuX1Wm05WMCgNWhuN4wqwiU= +*.end.example.com. 86400 IN NSEC escapedtext.example.com. A RRSIG NSEC +*.end.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131826 20121029131826 64050 example.com. P6uJSImaee+5NHlTP06pMxgO69qxjJc0Uo1+htjVyE8f15MhG8A7NttvzggbtyzmfLMPr7TilM+Mm7hC3pIk/TeBEdH8p+8qypnY0NzPntz5z1+6C6ZTjDXp6NxDwMz7th31r3B3u4xo/K4qMnXmrAFOIE5Lopk0uDGXfjKPCKE= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126131826 20121029131826 64050 example.com. NgY7UAdkXprnCi/O6c5XoB82tqLBd1bY9LmDG9wwN0zEUR5aHQcOmX9waHyqXQI86SOFQbGCvO2wDLqdqWniw1IYf4S66Vf9KrpaH2gVbvHKiEpGJPeDYQcD5xkv50Lsp4ktcLyuO/dk8ORCP7E2yC5IQVNeFgUfaqttZcJoxuQ= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126131826 20121029131826 64050 example.com. L/EsWsRNhM0Lt8877XYfm0FkVc+utuRPYlW/yxEi/Nzs/mTb9BMrOygsW0qfpYakYgfFvinR7S7ce9/naWidzGkWKYR85g2WFms3/TgchpmfjZHEsNyuT8zsiGrj3bQ3RxpT5cmt/IS2QlOak/RhdtawKfd9aqkMTVpP2idEQwY= +ENTRY_END + +ENTRY_BEGING +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.z.end.example.com. IN A +SECTION ANSWER +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126131826 20121029131826 64050 example.com. iS1Pe45xt8SLGlmfmrSPTrnIAlwpIX8leTrsoLgpQJc98aA0XJmO/D32CbMTRZzAM1oBVggm80ht2RIQkX3W1NvN/prcu+Gp0Zrm0rtW+7Q7VwcSbo7jyHh5K8Mppp2OsCleexco5NVAKpDMvD0nyG+CsKtNMQpKK2DlumQsraE= +SECTION AUTHORITY +*.end.example.com. 86400 IN NSEC escapedtext.example.com. A RRSIG NSEC +*.end.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131826 20121029131826 64050 example.com. P6uJSImaee+5NHlTP06pMxgO69qxjJc0Uo1+htjVyE8f15MhG8A7NttvzggbtyzmfLMPr7TilM+Mm7hC3pIk/TeBEdH8p+8qypnY0NzPntz5z1+6C6ZTjDXp6NxDwMz7th31r3B3u4xo/K4qMnXmrAFOIE5Lopk0uDGXfjKPCKE= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126131826 20121029131826 64050 example.com. NgY7UAdkXprnCi/O6c5XoB82tqLBd1bY9LmDG9wwN0zEUR5aHQcOmX9waHyqXQI86SOFQbGCvO2wDLqdqWniw1IYf4S66Vf9KrpaH2gVbvHKiEpGJPeDYQcD5xkv50Lsp4ktcLyuO/dk8ORCP7E2yC5IQVNeFgUfaqttZcJoxuQ= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END +RANGE_END + + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +start.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION ANSWER +start.example.com. 3600 IN CNAME x.y.z.wc.example.com. +start.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126131853 20121029131853 64050 example.com. uN8+hg2b9kqpso4zTtpb8CdkGkgOdlbayH1Ui7NVSi1Y8un8FDG4NHy2gpCi0zIMpeAOa5bENe3cdTEwYZKHQdvnGjaI/zFWpFAzXsEFg0VlLxDQXSzRB6GtoFoUEYiZBHsmLIy3zWjuihlWK9fRzyPyVtBDDmqU8KK7+H3BYp0= +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126131853 20121029131853 64050 example.com. NQTIY1uMK1jxVMHOaMB4shedyhdAERZuPiZXytfqSH36hDVMf1C8tSxdbCjJ90lOLEWNtMmT09l5kh14gp1XIaBHzLuDsYmZJVeudBGCaQRkbM5focd2VMd8V4hHQk4odwsRrSY6IETftHeqeFiRifru/rI3x5Dlv8awI6V5TZI= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126131826 20121029131826 64050 example.com. iS1Pe45xt8SLGlmfmrSPTrnIAlwpIX8leTrsoLgpQJc98aA0XJmO/D32CbMTRZzAM1oBVggm80ht2RIQkX3W1NvN/prcu+Gp0Zrm0rtW+7Q7VwcSbo7jyHh5K8Mppp2OsCleexco5NVAKpDMvD0nyG+CsKtNMQpKK2DlumQsraE= +SECTION AUTHORITY +*.wc.example.com. 86400 IN NSEC www.example.com. CNAME RRSIG NSEC +*.wc.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131853 20121029131853 64050 example.com. YrmCLu0uGgD2gcU4p12BGnUGYcrKmfg82MJHSF5OnVmmJxXiSbSBnZPahbJNGA/kPLt+SlDyBTcssZKXWxM6bW7WF57OwffOj7rMyr5vhx7J6OsuWKotPVqnUFDx9j/rOum24yCKqoBWvpW/RYUHLuX1Wm05WMCgNWhuN4wqwiU= +*.end.example.com. 86400 IN NSEC escapedtext.example.com. A RRSIG NSEC +*.end.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131826 20121029131826 64050 example.com. P6uJSImaee+5NHlTP06pMxgO69qxjJc0Uo1+htjVyE8f15MhG8A7NttvzggbtyzmfLMPr7TilM+Mm7hC3pIk/TeBEdH8p+8qypnY0NzPntz5z1+6C6ZTjDXp6NxDwMz7th31r3B3u4xo/K4qMnXmrAFOIE5Lopk0uDGXfjKPCKE= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126131826 20121029131826 64050 example.com. NgY7UAdkXprnCi/O6c5XoB82tqLBd1bY9LmDG9wwN0zEUR5aHQcOmX9waHyqXQI86SOFQbGCvO2wDLqdqWniw1IYf4S66Vf9KrpaH2gVbvHKiEpGJPeDYQcD5xkv50Lsp4ktcLyuO/dk8ORCP7E2yC5IQVNeFgUfaqttZcJoxuQ= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametodname.rpl b/external/unbound/testdata/val_cnametodname.rpl new file mode 100644 index 0000000..e064ec5 --- /dev/null +++ b/external/unbound/testdata/val_cnametodname.rpl @@ -0,0 +1,233 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a cname to a dname + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN DNAME +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN DNAME +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN DNAME +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN DNAME +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN DNAME +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN DNAME +SECTION ANSWER +www.example.net. IN DNAME blarg.com. +www.example.net. 3600 IN RRSIG DNAME RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. ByevtOI1ChCDb8CD8Qvu2pNcooUWN4LkNXQj0vzSLp62rCltiWWTg8iU6DiojeOx2inVqx+PZXyiX1nX80kCgg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN DNAME +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN DNAME +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +www.example.net. IN DNAME blarg.com. +www.example.net. 3600 IN RRSIG DNAME RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. ByevtOI1ChCDb8CD8Qvu2pNcooUWN4LkNXQj0vzSLp62rCltiWWTg8iU6DiojeOx2inVqx+PZXyiX1nX80kCgg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametodnametocnametopos.rpl b/external/unbound/testdata/val_cnametodnametocnametopos.rpl new file mode 100644 index 0000000..280e557 --- /dev/null +++ b/external/unbound/testdata/val_cnametodnametocnametopos.rpl @@ -0,0 +1,421 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + trust-anchor: "example.org. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname, dname, cname, positive answer + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.org. IN A +SECTION AUTHORITY +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +org. IN NS +SECTION ANSWER +org. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.org. IN A +SECTION AUTHORITY +example.org. IN NS ns.example.org. +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.7 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFEv1gOb7KEskzkJNtFKKVBxY+Hb2AhUAqKJDIZJvNl+AdzqAt+JgdvnYAF0= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.net. IN NSEC www.example.net. DNAME RRSIG NSEC +sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. PsKlcOSNElUi3u7Cn6c5+Sv8CRLTqmooMbvloTwUCkM53SuAirXcCA+9Pz5y0unO9+5IxwdkwssnoCOX5FqnCQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.net. IN A +SECTION ANSWER +sub.example.net. IN DNAME sub.example.com. +sub.example.net. 3600 IN RRSIG DNAME 5 3 3600 20070926134150 20070829134150 30899 example.net. G/UmcL1VmCF2mjB1O9IeNM2DnvayxEy6vOrvA+Ic/Gqcsgnq/f4VTCV9soQQIAWEir2v5Vt8hqPDP8rCRbMnyA== ;{id = 30899} +www.sub.example.net. IN CNAME www.sub.example.com. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN CNAME www.example.org. +www.sub.example.com. 3600 IN RRSIG CNAME 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. ZE6A4pkyeUpNCscu2oeBv/3JbbirdwUaAMgmQ/ighzacUJCC6Lh8vAL5aYDEyTk7oktb8uS7gmYan171aM9/tg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.org. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN NS +SECTION ANSWER +example.org. IN NS ns.example.org. +example.org. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.org. MCwCFAE1sQemdwqUPt4Qo+mr59a66DlFAhRV1mftIFs2YnkmIWsGtikIOJvh5A== ;{id = 2854} +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.7 +ns.example.org. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.org. MC0CFQC0yXaA8ywsZF+7dHukVIBFD820wQIUONbyI+UX9SDSDFmFnr+ApuTEooY= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN DNSKEY +SECTION ANSWER +example.org. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.org. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.org. MC0CFBCSESiUl5XEht/LRecGFuX2Xad7AhUAoURP4DsIEbwMjlB955vziIB798E= ;{id = 2854} +SECTION AUTHORITY +example.org. IN NS ns.example.org. +example.org. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.org. MCwCFAE1sQemdwqUPt4Qo+mr59a66DlFAhRV1mftIFs2YnkmIWsGtikIOJvh5A== ;{id = 2854} +SECTION ADDITIONAL +ns.example.org. IN A 1.2.3.7 +ns.example.org. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.org. MC0CFQC0yXaA8ywsZF+7dHukVIBFD820wQIUONbyI+UX9SDSDFmFnr+ApuTEooY= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.org. IN A +SECTION ANSWER +www.example.org. IN A 11.11.11.11 +www.example.org. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.org. MC0CFB/erEAxSMqW0I51r6VQMq861B+yAhUAqJ7DPU7xHFpWJGILOQ0WW3aDGi0= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.sub.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFEv1gOb7KEskzkJNtFKKVBxY+Hb2AhUAqKJDIZJvNl+AdzqAt+JgdvnYAF0= ;{id = 2854} +sub.example.net. 3600 IN DNAME sub.example.com. +sub.example.net. 3600 IN RRSIG DNAME 5 3 3600 20070926134150 20070829134150 30899 example.net. G/UmcL1VmCF2mjB1O9IeNM2DnvayxEy6vOrvA+Ic/Gqcsgnq/f4VTCV9soQQIAWEir2v5Vt8hqPDP8rCRbMnyA== ;{id = 30899} +www.sub.example.net. 0 IN CNAME www.sub.example.com. +www.sub.example.com. 3600 IN CNAME www.example.org. +www.sub.example.com. 3600 IN RRSIG CNAME 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. ZE6A4pkyeUpNCscu2oeBv/3JbbirdwUaAMgmQ/ighzacUJCC6Lh8vAL5aYDEyTk7oktb8uS7gmYan171aM9/tg== ;{id = 30899} +www.example.org. 3600 IN A 11.11.11.11 +www.example.org. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.org. MC0CFB/erEAxSMqW0I51r6VQMq861B+yAhUAqJ7DPU7xHFpWJGILOQ0WW3aDGi0= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametoinsecure.rpl b/external/unbound/testdata/val_cnametoinsecure.rpl new file mode 100644 index 0000000..78d04de --- /dev/null +++ b/external/unbound/testdata/val_cnametoinsecure.rpl @@ -0,0 +1,139 @@ +; config options +server: + trust-anchor: "example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + trust-anchor: "example.org. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20091011000000" + fake-sha1: yes + trust-anchor-signaling: no + +forward-zone: + name: "." + forward-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to insecure NSEC or NSEC3. + +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20091012000000 20091010000000 30899 example.com. BeCk6+D0ysmO1+X0CjvXH55AO78C7Vxrq58C3YgO0wt2eTG/deZCiWI3bz+3OC64cICbJr5fvCfqUuJDABU/fw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. 3600 IN CNAME unsafe.example.com. +www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20091010000000 30899 example.com. FJN0bZitZfxNQNTD1V2vcDBQ9cb4y4YGa35Ilr+VnrBiisAB9ZyrO8umvdtwzV1VPIlfFDQTJrKh5aZparLHPw== ;{id = 30899} +SECTION AUTHORITY +; really an insecure delegation, but co-hosted on the server. +unsafe.example.com. 3600 IN NSEC v.example.com. NS RRSIG NSEC +unsafe.example.com. 3600 IN RRSIG NSEC 5 3 3600 20091012000000 20091010000000 30899 example.com. Le9EsRd2MxkOGRCvGtQkXRDAob5ZJOFQlZbDvcWAh5OXVpmcwZmCHctxw/Zyi4LkNYoYCSCc8PiVRrJM3IsGrQ== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +unsafe.example.com. IN AAAA +SECTION ANSWER +; empty response +ENTRY_END + + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.org. IN DNSKEY +SECTION ANSWER +example.org. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.org. 3600 IN RRSIG DNSKEY 5 2 3600 20091012000000 20091010000000 30899 example.org. rd9aoXbeaE0zyT96Z0sjN3Mz5Nz/wuRsIH1lwcjwUFmAAT7F+SjwVWeo8nGaTBd8JDSUdiL+VwotEE0I22RrnA== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.org. IN AAAA +SECTION ANSWER +www.example.org. 3600 IN CNAME unsafe.example.org. +www.example.org. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20091010000000 30899 example.org. ZgRbMnunAqa1K46GINIihekkI73/1PkGFSAJRn7bSTxBpLM+qiHJDU1+QgS2SjaSKHqNqbXy/eeG3qX9r9y87g== ;{id = 30899} +SECTION AUTHORITY +; really an insecure delegation, but co-hosted on the server. +; h(unsafe.example.org.) = ltchu0548v0cof8f25u2pj4mjf4shcms. +ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. IN NSEC3 1 0 1 - ltchu0548v0cof8f25u2pj4mjf4shcmt NS +ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. 3600 IN RRSIG NSEC3 5 3 3600 20091012000000 20091010000000 30899 example.org. yxuYgfkg8QTdB5yBMN9Up9GyKu7xjKDScqq95/tsy3lx22tLsdLD9Fojdrq7eB+K7Tr72AejmVJs44v6TmWkZw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +unsafe.example.org. IN AAAA +SECTION ANSWER +; empty response +ENTRY_END + +RANGE_END + +; NSEC +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +www.example.com. 3600 IN CNAME unsafe.example.com. +www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20091010000000 30899 example.com. FJN0bZitZfxNQNTD1V2vcDBQ9cb4y4YGa35Ilr+VnrBiisAB9ZyrO8umvdtwzV1VPIlfFDQTJrKh5aZparLHPw== ;{id = 30899} +SECTION AUTHORITY +unsafe.example.com. 3600 IN NSEC v.example.com. NS RRSIG NSEC +unsafe.example.com. 3600 IN RRSIG NSEC 5 3 3600 20091012000000 20091010000000 30899 example.com. Le9EsRd2MxkOGRCvGtQkXRDAob5ZJOFQlZbDvcWAh5OXVpmcwZmCHctxw/Zyi4LkNYoYCSCc8PiVRrJM3IsGrQ== ;{id = 30899} +ENTRY_END + +; NSEC3 +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.org. IN AAAA +ENTRY_END +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.org. IN AAAA +SECTION ANSWER +www.example.org. 3600 IN CNAME unsafe.example.org. +www.example.org. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20091010000000 30899 example.org. ZgRbMnunAqa1K46GINIihekkI73/1PkGFSAJRn7bSTxBpLM+qiHJDU1+QgS2SjaSKHqNqbXy/eeG3qX9r9y87g== ;{id = 30899} +SECTION AUTHORITY +ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. 3600 IN NSEC3 1 0 1 - ltchu0548v0cof8f25u2pj4mjf4shcmt NS +ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. 3600 IN RRSIG NSEC3 5 3 3600 20091012000000 20091010000000 30899 example.org. yxuYgfkg8QTdB5yBMN9Up9GyKu7xjKDScqq95/tsy3lx22tLsdLD9Fojdrq7eB+K7Tr72AejmVJs44v6TmWkZw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametonodata.rpl b/external/unbound/testdata/val_cnametonodata.rpl new file mode 100644 index 0000000..c94cfed --- /dev/null +++ b/external/unbound/testdata/val_cnametonodata.rpl @@ -0,0 +1,233 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname to nodata + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +www.example.net. IN NSEC example.net. MX NSEC RRSIG +www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +www.example.net. IN NSEC example.net. MX NSEC RRSIG +www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametonodata_nonsec.rpl b/external/unbound/testdata/val_cnametonodata_nonsec.rpl new file mode 100644 index 0000000..c1346ce --- /dev/null +++ b/external/unbound/testdata/val_cnametonodata_nonsec.rpl @@ -0,0 +1,265 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname to nodata + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +; NSEC here ... +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +; NSEC here +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +;www.example.net. IN NSEC example.net. MX NSEC RRSIG +;www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +www.example.net. IN NSEC example.net. MX NSEC RRSIG +www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametonsec.rpl b/external/unbound/testdata/val_cnametonsec.rpl new file mode 100644 index 0000000..27a562f --- /dev/null +++ b/external/unbound/testdata/val_cnametonsec.rpl @@ -0,0 +1,191 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to insecure NSEC delegation + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; no NSECs to prove this, not needed in test, but could be there +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134802 20070829134802 2854 example.com. AKvv+5rFiCFiNRbdpna4rQtyARsLltUL9lXRWgpBVB5voJNJ9g/n/f4= ;{id = 2854} +SECTION AUTHORITY +sub.example.com. IN NSEC zzz.example.com. NS +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134802 20070829134802 2854 example.com. AJPvjSrqGbe3ZBOxV9J3XyFeOqrcPfIYPIWnlmj6G+PebJdAkvwIu9o= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; this server also serves the zone sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134802 20070829134802 2854 example.com. AKvv+5rFiCFiNRbdpna4rQtyARsLltUL9lXRWgpBVB5voJNJ9g/n/f4= ;{id = 2854} +SECTION AUTHORITY +sub.example.com. IN NSEC zzz.example.com. NS +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134802 20070829134802 2854 example.com. AJPvjSrqGbe3ZBOxV9J3XyFeOqrcPfIYPIWnlmj6G+PebJdAkvwIu9o= ;{id = 2854} +sub.example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametonx.rpl b/external/unbound/testdata/val_cnametonx.rpl new file mode 100644 index 0000000..f381029 --- /dev/null +++ b/external/unbound/testdata/val_cnametonx.rpl @@ -0,0 +1,237 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cname to nxdomain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFGtYzScyRnHV8U/jOIPYwrlI9t3oAhRF0PIf+IthUR7uCWIvskWp5CfReQ== ;{id = 2854} +SECTION AUTHORITY +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametooptin.rpl b/external/unbound/testdata/val_cnametooptin.rpl new file mode 100644 index 0000000..77a3c06 --- /dev/null +++ b/external/unbound/testdata/val_cnametooptin.rpl @@ -0,0 +1,195 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to insecure optin NSEC3 + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134802 20070829134802 2854 example.com. AKvv+5rFiCFiNRbdpna4rQtyARsLltUL9lXRWgpBVB5voJNJ9g/n/f4= ;{id = 2854} +SECTION AUTHORITY +; NSEC3PARAM 1 0 1 - +; example.com. -> 9vq38lj9qs6s1aruer131mbtsfnvek2p. +; sub.example.com. -> 7t1ect6t5vp0s7se8si9d07roqupr3gc. +; www.example.com. -> 0lverorlcjoa2lji5rik0otij3lgoj3l. +7t1ect6t5vp0s7se8si9d07roqupr3gc.example.com. IN NSEC3 1 0 1 - 7t1ect6t5vp0s7se8si9d07roqupr3gd NS +7t1ect6t5vp0s7se8si9d07roqupr3gc.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134802 20070829134802 2854 example.com. AIiTSxI4hTDiDzo+bMaOKSvjIyoChgjY19y2NQG/Mtt80sNbDBY126I= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; this server also serves the zone sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134802 20070829134802 2854 example.com. AKvv+5rFiCFiNRbdpna4rQtyARsLltUL9lXRWgpBVB5voJNJ9g/n/f4= ;{id = 2854} +SECTION AUTHORITY +7t1ect6t5vp0s7se8si9d07roqupr3gc.example.com. IN NSEC3 1 0 1 - 7t1ect6t5vp0s7se8si9d07roqupr3gd NS +7t1ect6t5vp0s7se8si9d07roqupr3gc.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134802 20070829134802 2854 example.com. AIiTSxI4hTDiDzo+bMaOKSvjIyoChgjY19y2NQG/Mtt80sNbDBY126I= ;{id = 2854} +sub.example.com. IN SOA a. b. 1 2 3 4 5 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametooptout.rpl b/external/unbound/testdata/val_cnametooptout.rpl new file mode 100644 index 0000000..c9e9822 --- /dev/null +++ b/external/unbound/testdata/val_cnametooptout.rpl @@ -0,0 +1,112 @@ +; config options +server: + trust-anchor: "GOV. DS 26079 7 2 4ED5FFBC8A40262B56E1232135B929192804ACC006930D087AAB38A611C89041" + val-override-date: "20091113091234" + fake-sha1: yes + trust-anchor-signaling: no + +forward-zone: + name: "." + forward-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME to optout NSEC3 span NODATA + +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.hud.gov. IN AAAA +SECTION ANSWER +www.hud.gov. 86400 IN CNAME www.content.hud.gov. +www.hud.gov. 86400 IN RRSIG CNAME 7 3 86400 20091204150200 20091104150200 64775 hud.gov. taZtumaTp8eSlcj0vEGnY0Up05RtlC2NhHrtHDUdq1TskAPQH8Eu9AoVe6gKrFEyCC1ixprOhT8Ni661d/ZykdzgceZ8KgFIlSQ84Whm59yB2gcbXLen9rApF0+NuyRgdAph6yjMYMtfoRQWAASG7SqS/v52dkHNf/a9PXaDvHBvjoiTK+dXPKFulkmEl0KyhXBdsikl6/Xd68FF41FdDNzWS8ZzYCdd4CWaXXkwTtPSFsKyXGZeXOTxqGQJnD+hNBkn2sAca1oLiAsfaiCHec66I+rHGXT+mPB7HXez32jbbeInkgB7M2TUoRXehifuloR8sur8Xck9FPRv24Si8A== ;{id = 64775} +SECTION AUTHORITY +content.hud.gov. 86400 IN NS drfswitch.hud.gov. +content.hud.gov. 86400 IN NS lanswitch.hud.gov. +3RUD2HK5O5KA0IC6BF22C1T4R1BJGJ3R.hud.gov. 86400 IN NSEC3 1 1 5 abcd 42bsks495i3mb2s3f6nhusc6rfm54g4g A NS SOA MX RRSIG DNSKEY NSEC3PARAM ; flags: optout +3RUD2HK5O5KA0IC6BF22C1T4R1BJGJ3R.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. APf75Nx4eY9eHov3T9hduDLuG4TJfVfEUEhSgm7HIZRvSPFgajHz2q+Wy6888G3C0T1Zft1qL2PdHMonK6H1OEE+NiOxroDsZaH+aWZjAsbIO86qQ2xcC+/Z9DsddQtONk0zAqpuYxHSn879rAk/BIKeDukNoBChHCSTy8olUFiYt7XEmjz5AOoc8R5VQhMQi/vmbmC0BoFOemDxxowG2MX27Hj2MbVBEJiT8xioFEk41jsdDI0WQtpnory2NT/UM4kWZdmDdxbpwu2F8oixe3oi4AOI9j3EukoOZT9f0Sx+tCg/I9zLNZJi+VuI5oUlpZkSH5EoUyRgK33eO+KJhQ== ;{id = 64775} +GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN NSEC3 1 1 5 abcd gvfjd9enpjtet8a14uhb8hlrfeon2b72 A RRSIG ; flags: optout +GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. eQFg/RvJ640k+Fa5yIUZwkx8FvsYSivykYFjc6dOiGt7r3VprfxwGWeYpyjYr/+mzu0ugE5ePDjZWtr5naK3dvqmt7qKk4/nEvVDoUmrg7joIUmeTzami9RB9lzCq2O/ddempQ6jpwfjiIDuEKUxHMpBFpw8QQZnZSZHKKQCDB4pOj8U8J/wNJXCS+SP7plU1hEVroC+QXCOYS8NHY2wFyeuW7A+xvg9tyYp9PH6c5MoNMkRQt36Kdvfk1nk3osktwalJNLmMhDr/vtErFieGGD6E9Ud9Pg70bPF2G5nqwwLDRevy7hIFjaMDHfYrcWc4B5hrUSpGtLJkYog9vsd2w== ;{id = 64775} +SECTION ADDITIONAL +drfswitch.hud.gov. 86400 IN A 170.97.167.1 +lanswitch.hud.gov. 86400 IN A 170.97.67.78 +drfswitch.hud.gov. 86400 IN RRSIG A 7 3 86400 20091204150200 20091104150200 64775 hud.gov. ub6Anb7XgDMRsTYxqKDRUOYnntLetcJMXM9SVbG7Cb2n+ccp4OO38u6KnGO1i8U5rhTQ6WPlG6iKA+8U0mQuWp3fkzBaE+a5R3eEfzLlRE/MbjUqHjTb0MVYQnMWaA7YXmj/1BNFjBuAam+J3QnU4JR3RqN9WDmHXYx8IUEY9BYSWvTMhOnzebRu6z9MUBQWFfm69pFxf0Z1SkpInznU/mxGdGlslzxL8ScKAUMSBiQG1tyL90OEXW3Yp7kbOtpTxGrXucpMiMB9lXI/z9UiRJenZrJ7swyyyJ5Do0TjCiS3oS8RBhX8ou09sNftUmF9crKz/BdNq90wVYoHXYz9vg== ;{id = 64775} +lanswitch.hud.gov. 86400 IN RRSIG A 7 3 86400 20091204150200 20091104150200 64775 hud.gov. QO+quzaZXrIBZy0JXhx85/8auhBj8dCqeidaUCs6rzCd/lgUDt7B/mH8IanU33o+PyKsBN+B5r9bavFFCNc4sPDUVwNcnZfKCyFQvvUnI3rztCJb/ESYnJ/xu/5g966cRLOajzAvvLAWZ6vT4p3b9+CpaONOJ19D08RpwsWnTkqiEP/UiXaWBpVwyt4JHN0oiNmMGshk5zjbHir1gUInd7QbJk3SpyiIgHT5Z4nhTUGkd1sIve++aIxjsQ8MVrE+INw4v56dJaoYD6bqQewmg2yAr9nYemYUHYi8+USy7/anEaUsOvk9zZfncevTfY/sOORFWoD15bHF2BWUo2YwaQ== ;{id = 64775} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.content.hud.gov. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +GOV. IN DNSKEY +SECTION ANSWER +GOV. 86400 IN DNSKEY 256 3 7 AwEAAaQ6vDoHd2QDRBLwB+n63RxnmJExvIcOz7uv9gM+l8QSMAJTTCDpqJ8R+8UfYs97cn6LM3cT3kcl9V0GnjljNzNMk39W11Ej7htNcbf4u1n5z2e4WsnpjQJJmKoWv2FORIfJmLKbxzGILSK13mrDUETj9onhdtOsjkhcK/7S+h1d ;{id = 51998 (zsk), size = 1024b} +GOV. 86400 IN DNSKEY 257 3 7 AwEAAZ1OCt7zZxeaROvzXNCNlqQWIi++p5ABXSoxqJ65WQko6xrI9RImK7IBT5roFhXjBDGJ8ld9CYIEN94kK83K/QwUGCJ+v3vIQFi09IqsPeRdHTQyghWWbhzAZpnlZ16imXB4yFZjdbV2iM66KcgsESQMPEcIayDQJh6JEi1wmslrYvRRJ6YPOWrlLD0RmdtCaRuzlUE0RiWSem/i8vDFdmsSwChRMcORklKqjqt1+RBIiEFJGKIz7lGc9DXRwkBfb+halii+jrELiZAPzfO7rf08l3QlgHEuxclTTdEaxctPd2O2U/Hl9tRgkxRL/Zv1i0sEx2mOJGcUCeVm4Hf2aM8= ;{id = 26079 (ksk), size = 2048b} +GOV. 86400 IN RRSIG DNSKEY 7 1 86400 20091117211705 20091112211705 26079 gov. OR2ltuGs0IxWqikvqWIoXLy7gPpWafolM+fyQ9uyuzPdxILo8QboVzfRr3Q8X/hOa6MRwR0KHGci2NH/29p9cekafdMbOer0kvh0hndnf+yGLuDcd9HLj5hpoZ5uecZ2r02OWtRHCKetAPF95SYrIQBzoqUNOswdDlSTW1R8v/BQ6UpztuUQcciZJxARbXlovzSkMbnoyjtehgKjXPP/Zy79vSwhjpTJ4XAsc2E3Tw1qAE7ZZUzYpN8uGmAQYVtZraQIjazE/A+xVo+XB0dZdhlM00xUs6GNuZytckUOqecBKZ2IKlxBe+kBEkj2nz1PBRAzmZUoS3ZZPkKaA6ygTA== ;{id = 26079} +GOV. 86400 IN RRSIG DNSKEY 7 1 86400 20091117211705 20091112211705 51998 gov. VDizeuAywZB0tQm4kmbOSGhrK1eJYC9VSSND/wG7oTj/oWDAKMEke1XrQXGEoIFyBKZk5dHpUB6tmEA9RPLMwI51ue66pM9RRT1aNLba08r6TDzr6ZxKjtqBDj4Xy16h6PWZ2jC9JASGeNGINg6zCeVmU75yqXh6+X+KeypO64E= ;{id = 51998} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +hud.gov. IN DS +SECTION ANSWER +hud.gov. 86399 IN DS 52146 7 2 54af554fc3ffc532bb898b9ab39f1276fd17b59d3e44772c3142ea62680d71c7 ; xihap-zehog-zybyz-zecaf-dyvym-nydun-pusan-zagil-kezyc-lutyn-tazog-gyted-sosig-depyk-dypeb-tasas-lexix +hud.gov. 86399 IN RRSIG DS 7 2 86400 20091117211705 20091112211705 51998 gov. FHDstL7xVBBedCaG83M884pnxCV8PY9GjUulwH7BSTVIaFBJe/kxlKGTsD0j5x4QfezjBWKenjpvw5SiMGeQOnIJeA/z6Ze9QBCGVrbx0ZgoKEoSRyfD0vIjvM7J4T2PLgslI8fsMpWFs4KzmujKJNRVq4aFzFk9k8bFCJnEPJk= ;{id = 51998} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +hud.gov. IN DNSKEY +SECTION ANSWER +hud.gov. 86400 IN DNSKEY 256 3 7 AwEAAcAOoW+zclZqs8kCGmm290DImA1DDfKqbifB1oGNjOcmz6xz6PigLa8ORaAG0zpabZwLMXyhMaKbseR+beGnOf2wh5N0oxN8grCNTJm+YAMeyvCn2dz3J8YEoclyST4bhU38MGFsEVVZukXsIniFfvnKfpVxArpO7ocbDXI+EN3RA8EHFTIHOCfEbCS7zyO0mtrdM88Y/tIX9fjsYUig6lfVUNISJUL4TyUMpmi8/hu2dLdTuXXIAEMx/vyQHVFq2ZZM0nnDJ9vJCZEgwFAjUE5/BjlrDgofonxdY8SLDbQvn11z/SPugKiA16bdO6i/ND4FjEhG2HUJHeeQCrZ61rE= ;{id = 64775 (zsk), size = 2048b} +hud.gov. 86400 IN DNSKEY 256 3 7 AwEAAfFubFVJ6m7jO8HvInmFEXivfnqZZpS7SnsucTlfGg5yhIayzS3tC0UMAt1QU+pEIyVH+qa2fG2+/45gAp+iG3zwyepyZuup8eo/SlXefWXZ9CIjBNaaptd2sSDsuF8mPtdQmtm3AbPqGEe7p7edIHHJBxPy90AzJQeKppyRcRcrGO3QNC9Glso177NbHZVZuY46V63RdaY3Qf5t7/03xy/Z68KWFEJKUCBxkHjAVIH0KaT9M37dPzs9L7F/+NyOLfMUzk87ctv4ivW9dcJRf79aulzoIV4LlGu0ZsrvxRZ5t+ind+GDeTvaKseH0NWF5Am2dG/QrHtewQL9qGztjN8= ;{id = 41402 (zsk), size = 2048b} +hud.gov. 86400 IN DNSKEY 257 3 7 AwEAAZ50d20TkOzWzJD+anUMSIMfGaI8m4If6DMax4NQnZ34yta6UOb907SRqBs2vJ+MpcJkyRuLx/Z9vGlfZQ7V9eBgI62EZwmfiitanwSFPZgCzM8nVswpDS+/CmaHhXUoLdgNgUYh4WSl/7fXroluC/18xyMl3ZGQRRjJftpQSMXubP/n9nCHZXE5YiDw1cRklqA4lLyNeXBgadWa8klekr89WNij454KApevbg0GSudEJw7IWzbOb09npvQ1hnLz8pmDsaahfIsGBvcHSUEJrjSkk3J1oHDj0B7Gxm+tZH4Er21RTucEWeroyIJSQmsYN+Cm0FyfgJ75bNEsRe5M4Vc= ;{id = 52146 (ksk), size = 2048b} +hud.gov. 86400 IN RRSIG DNSKEY 7 2 86400 20091204150200 20091104150200 52146 hud.gov. KWIA6wH6BqwuF7d6dyTbfqbcLgbUG2ZKJA4vVfhWqOC76Xnt7gXPLeB2GQwwyhSR0s3IHIzAB0Uj+RAGGcz2NH5JanfxNC9rAvubYESXSlLr/FC33exLeOxGisJZzRnPpk5NynXwyT8TXul1ew48/Mpyi7j6+tlqakqHw2HlId7oblxO2cjN6JV0JLZ44l7tCw6ALYhamA48PQ1WeJbGcfH7buCEG7S1ceZSZlG6kml+u7pb65QL9AZjCnDIecXk7B3HMCdIT8zyrO8QK0GiLMMak9RogF/5gBiH/WDCq7146vcVneW/Hn/+hLnY104iOKuadJcbmStlMF5k0iBzng== ;{id = 52146} +hud.gov. 86400 IN RRSIG DNSKEY 7 2 86400 20091204150200 20091104150200 64775 hud.gov. V0JSAtTmQn76T408nyntg1ydX5sVvq8RSCN/Bf+cqTPXMFlPpmOs4VQv791bY85n28qOehV7Ws2CrhfxbyFbyYRXPBtWkg6jH3JXicYPn7Abm7E5N2Y6Mkm1Z9xt/APCw+aSkt0swMJzYBO5P5aeDesIB+Pz5I+SLuOPin3GFjGYL+YB5j5rTY/Nqnp2eQytF0SoFdqCIPCP7l9ZtYdaxBDQNX3Hklm4dRYP5U9wL8sqaeUwgKjJTGcbXiXdPXF9+3AojshKMpk14lcplHcy+cQ4p5ehSngtDwdWtG8gcWKCg829I/1iOFcnPgJ1YK1DdPVEGTgUFgGGwTx+HYMsPA== ;{id = 64775} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.hud.gov. IN AAAA +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.hud.gov. IN AAAA +SECTION ANSWER +www.hud.gov. 86400 IN CNAME www.content.hud.gov. +www.hud.gov. 86400 IN RRSIG CNAME 7 3 86400 20091204150200 20091104150200 64775 hud.gov. taZtumaTp8eSlcj0vEGnY0Up05RtlC2NhHrtHDUdq1TskAPQH8Eu9AoVe6gKrFEyCC1ixprOhT8Ni661d/ZykdzgceZ8KgFIlSQ84Whm59yB2gcbXLen9rApF0+NuyRgdAph6yjMYMtfoRQWAASG7SqS/v52dkHNf/a9PXaDvHBvjoiTK+dXPKFulkmEl0KyhXBdsikl6/Xd68FF41FdDNzWS8ZzYCdd4CWaXXkwTtPSFsKyXGZeXOTxqGQJnD+hNBkn2sAca1oLiAsfaiCHec66I+rHGXT+mPB7HXez32jbbeInkgB7M2TUoRXehifuloR8sur8Xck9FPRv24Si8A== ;{id = 64775} +SECTION AUTHORITY +3RUD2HK5O5KA0IC6BF22C1T4R1BJGJ3R.hud.gov. 86400 IN NSEC3 1 1 5 abcd 42bsks495i3mb2s3f6nhusc6rfm54g4g A NS SOA MX RRSIG DNSKEY NSEC3PARAM ; flags: optout +3RUD2HK5O5KA0IC6BF22C1T4R1BJGJ3R.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. APf75Nx4eY9eHov3T9hduDLuG4TJfVfEUEhSgm7HIZRvSPFgajHz2q+Wy6888G3C0T1Zft1qL2PdHMonK6H1OEE+NiOxroDsZaH+aWZjAsbIO86qQ2xcC+/Z9DsddQtONk0zAqpuYxHSn879rAk/BIKeDukNoBChHCSTy8olUFiYt7XEmjz5AOoc8R5VQhMQi/vmbmC0BoFOemDxxowG2MX27Hj2MbVBEJiT8xioFEk41jsdDI0WQtpnory2NT/UM4kWZdmDdxbpwu2F8oixe3oi4AOI9j3EukoOZT9f0Sx+tCg/I9zLNZJi+VuI5oUlpZkSH5EoUyRgK33eO+KJhQ== ;{id = 64775} +GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN NSEC3 1 1 5 abcd gvfjd9enpjtet8a14uhb8hlrfeon2b72 A RRSIG ; flags: optout +GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. eQFg/RvJ640k+Fa5yIUZwkx8FvsYSivykYFjc6dOiGt7r3VprfxwGWeYpyjYr/+mzu0ugE5ePDjZWtr5naK3dvqmt7qKk4/nEvVDoUmrg7joIUmeTzami9RB9lzCq2O/ddempQ6jpwfjiIDuEKUxHMpBFpw8QQZnZSZHKKQCDB4pOj8U8J/wNJXCS+SP7plU1hEVroC+QXCOYS8NHY2wFyeuW7A+xvg9tyYp9PH6c5MoNMkRQt36Kdvfk1nk3osktwalJNLmMhDr/vtErFieGGD6E9Ud9Pg70bPF2G5nqwwLDRevy7hIFjaMDHfYrcWc4B5hrUSpGtLJkYog9vsd2w== ;{id = 64775} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametopos.rpl b/external/unbound/testdata/val_cnametopos.rpl new file mode 100644 index 0000000..b71bdb2 --- /dev/null +++ b/external/unbound/testdata/val_cnametopos.rpl @@ -0,0 +1,233 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a cname to positive + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametoposnowc.rpl b/external/unbound/testdata/val_cnametoposnowc.rpl new file mode 100644 index 0000000..343c3e2 --- /dev/null +++ b/external/unbound/testdata/val_cnametoposnowc.rpl @@ -0,0 +1,265 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a cname to positive wildcard without proof + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +; missing proof +;wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +;wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.net. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnametoposwc.rpl b/external/unbound/testdata/val_cnametoposwc.rpl new file mode 100644 index 0000000..01801b7 --- /dev/null +++ b/external/unbound/testdata/val_cnametoposwc.rpl @@ -0,0 +1,239 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a cname to positive wildcard + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME DSA 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFGcJxnNxpWCBzXejiSdl4p1BKRMnAhUApoJrugVBRwFgAoYAhhqlZFac7fE= ;{id = 2854} +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnamewctonodata.rpl b/external/unbound/testdata/val_cnamewctonodata.rpl new file mode 100644 index 0000000..65c0007 --- /dev/null +++ b/external/unbound/testdata/val_cnamewctonodata.rpl @@ -0,0 +1,237 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard cname to nodata + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFDwBErFx90ixZDOdIsKz1QaXA1WzAhUAprOUlV1d5fmUiOp7DZ0TWWcM81Q= ;{id = 2854} +SECTION AUTHORITY +u.example.com. IN NSEC z.example.com. NSEC RRSIG +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCdc/AWOi3BbYLOClSaw7uVkEf0/AhRJLUUXhuvEsdxEXESjotO3tJZyog== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +www.example.net. IN NSEC example.net. MX NSEC RRSIG +www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFDwBErFx90ixZDOdIsKz1QaXA1WzAhUAprOUlV1d5fmUiOp7DZ0TWWcM81Q= ;{id = 2854} +SECTION AUTHORITY +u.example.com. IN NSEC z.example.com. NSEC RRSIG +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCdc/AWOi3BbYLOClSaw7uVkEf0/AhRJLUUXhuvEsdxEXESjotO3tJZyog== ;{id = 2854} +www.example.net. IN NSEC example.net. MX NSEC RRSIG +www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnamewctonx.rpl b/external/unbound/testdata/val_cnamewctonx.rpl new file mode 100644 index 0000000..a576293 --- /dev/null +++ b/external/unbound/testdata/val_cnamewctonx.rpl @@ -0,0 +1,241 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard cname to nxdomain + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFDwBErFx90ixZDOdIsKz1QaXA1WzAhUAprOUlV1d5fmUiOp7DZ0TWWcM81Q= ;{id = 2854} +SECTION AUTHORITY +u.example.com. IN NSEC z.example.com. NSEC RRSIG +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCdc/AWOi3BbYLOClSaw7uVkEf0/AhRJLUUXhuvEsdxEXESjotO3tJZyog== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +SECTION AUTHORITY +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFDwBErFx90ixZDOdIsKz1QaXA1WzAhUAprOUlV1d5fmUiOp7DZ0TWWcM81Q= ;{id = 2854} +SECTION AUTHORITY +u.example.com. IN NSEC z.example.com. NSEC RRSIG +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCdc/AWOi3BbYLOClSaw7uVkEf0/AhRJLUUXhuvEsdxEXESjotO3tJZyog== ;{id = 2854} +example.net. IN NSEC abc.example.net. SOA NS DNSKEY NSEC RRSIG +example.net. 3600 IN RRSIG NSEC 5 2 3600 20070926134150 20070829134150 30899 example.net. SEHthmjHyqGlzaOp3Dx6Jn5Fnvvtknw/IF6YSFY8NZLe+YSh1oRJbdEkQ8G92IT08n1jSN6jvKRsFBOUoFOQAw== ;{id = 30899} +wab.example.net. IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_cnamewctoposwc.rpl b/external/unbound/testdata/val_cnamewctoposwc.rpl new file mode 100644 index 0000000..0c9932d --- /dev/null +++ b/external/unbound/testdata/val_cnamewctoposwc.rpl @@ -0,0 +1,245 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard cname to positive wildcard + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; *.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFCA2HhM4cInPoUZ58o6t9CVlqv+kAhRjxWXvnFecgDxnDphpEVEoc0Ps6Q== ;{id = 2854} +SECTION AUTHORITY +; weird NSEC that denies everything. But validly signed, so valid. +; extreme version of 'white lies' :-) +example.com. IN NSEC example.com. SOA NS A NSEC RRSIG DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCSPaRH721mYjuTGb6fZ+nR3pnVxAIUAxEctE1hzMQSw0CWJSMLHS/A+Xk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.example.net. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFCA2HhM4cInPoUZ58o6t9CVlqv+kAhRjxWXvnFecgDxnDphpEVEoc0Ps6Q== ;{id = 2854} +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NSEC example.com. SOA NS A NSEC RRSIG DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCSPaRH721mYjuTGb6fZ+nR3pnVxAIUAxEctE1hzMQSw0CWJSMLHS/A+Xk= ;{id = 2854} +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_deleg_nons.rpl b/external/unbound/testdata/val_deleg_nons.rpl new file mode 100644 index 0000000..6e8f1bd --- /dev/null +++ b/external/unbound/testdata/val_deleg_nons.rpl @@ -0,0 +1,271 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with unsigned delegation with no NS bit in NSEC + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns3.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +foo.www.example.com. IN A +SECTION ANSWER +foo.www.example.com. IN A 1.2.3.4 +; unsigned, no delegation. +ENTRY_END + +; DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +; NSEC3 here: 1 0 1 1234 +; www.example.com. -> h8c0nvkuibedn7ia997iegdl7h0i6h8b. +h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. IN NSEC3 1 0 1 1234 h8c0nvkuibedn7ia997iegdl7h0i6h8c TXT +h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. AH+bPQZST3COwJ1vSe05N7E5BM2GmXzJUKsiWwXKrmm/XjYKSxSuNPE= + +;www.example.com. IN NSEC zzz.example.com. RRSIG NSEC +;www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AA9Dm626WvHXHPQXJkVyjyTqJ/dCHfZgt6PWCn9gd8ZmPxyl3STW3iI= +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; DS query for foo.www.example.com returns the referral without record. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +foo.www.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +mipf0g23547qunto04vboegh9vadsrpo.example.com. IN NSEC3 1 0 1 1234 mipf0g23547qunto04vboegh9vadsrpq TXT +mipf0g23547qunto04vboegh9vadsrpo.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. ADc6JrdKuTmIJe4sAjpKZSUZKdHdfhmREk2F5A5cftU9053b0/3ILQM= + +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} + + +;www.example.com. IN NS ns3.example.com. +;h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. IN NSEC3 1 0 1 1234 h8c0nvkuibedn7ia997iegdl7h0i6h8c TXT +;h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. AH+bPQZST3COwJ1vSe05N7E5BM2GmXzJUKsiWwXKrmm/XjYKSxSuNPE= +;SECTION ADDITIONAL +;ns3.example.com. IN A 1.2.3.5 + + +; NSEC3 here: 1 0 1 1234 +; www.example.com. -> h8c0nvkuibedn7ia997iegdl7h0i6h8b. +; *.www.example.com. -> cg2lpgpr8k7ck69h7bqu3od9pkht2o79. +; foo.www.example.com. -> mipf0g23547qunto04vboegh9vadsrpo. + +;h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. IN NSEC3 1 0 1 1234 h8c0nvkuibedn7ia997iegdl7h0i6h8c TXT +;h8c0nvkuibedn7ia997iegdl7h0i6h8b.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. AH+bPQZST3COwJ1vSe05N7E5BM2GmXzJUKsiWwXKrmm/XjYKSxSuNPE= +;cg2lpgpr8k7ck69h7bqu3od9pkht2o78.example.com. IN NSEC3 1 0 1 1234 cg2lpgpr8k7ck69h7bqu3od9pkht2o89 TXT +;cg2lpgpr8k7ck69h7bqu3od9pkht2o78.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. ACzxBHMyDB5tTrXijboPSsB0ws1lJe3/B62QNAMcZv7l9DYNDEDKsXY= +;mipf0g23547qunto04vboegh9vadsrph.example.com. IN NSEC3 1 0 1 1234 mipf0g23547qunto04vboegh9vadsrpp TXT +;mipf0g23547qunto04vboegh9vadsrph.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926134150 20070829134150 2854 example.com. AG2B7lrIVtBgg+WIt0yNYekGDBKkY7xkKfI0GLQ8q3brGy/+jubxba0= + +;www.example.com. IN NSEC zzz.example.com. RRSIG NSEC +;www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AA9Dm626WvHXHPQXJkVyjyTqJ/dCHfZgt6PWCn9gd8ZmPxyl3STW3iI= + +;example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +;example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +; ns3.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +foo.www.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +foo.www.example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +foo.www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +foo.www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_dnametoolong.rpl b/external/unbound/testdata/val_dnametoolong.rpl new file mode 100644 index 0000000..6cd202e --- /dev/null +++ b/external/unbound/testdata/val_dnametoolong.rpl @@ -0,0 +1,258 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a dname too long response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR YXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; length +; www. = 4 +; long1234567890abcdef. = 21 +; long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef. = 12 * 21 = 252 +example.com. IN DNAME long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFBdWQE6lzktCN4vdAx9HY1zZe6dYAhUAghsHM4lSJAykdvp5p0wppml03K0= ;{id = 2854} +; unsigned CNAME synthesis is too long +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO YXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. IN DNAME long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef.long1234567890abcdef. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFBdWQE6lzktCN4vdAx9HY1zZe6dYAhUAghsHM4lSJAykdvp5p0wppml03K0= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_dnametopos.rpl b/external/unbound/testdata/val_dnametopos.rpl new file mode 100644 index 0000000..c0ccc59 --- /dev/null +++ b/external/unbound/testdata/val_dnametopos.rpl @@ -0,0 +1,264 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a dname to positive + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFH1xw24Hswia3g10AVL1yFUHUPdFAhQDrA+qZJwqXRPg2C1oiNPk9fosGg== ;{id = 2854} +; unsigned CNAME +www.example.com. IN CNAME www.example.net. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. 3600 IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFH1xw24Hswia3g10AVL1yFUHUPdFAhQDrA+qZJwqXRPg2C1oiNPk9fosGg== ;{id = 2854} +www.example.com. 0 IN CNAME www.example.net. +www.example.net. 3600 IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; Check cache response for DNAME +; so 100+ the authority will not respond any more : must be from cache. +STEP 110 TIME_PASSES ELAPSE 10 + +STEP 120 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. 3590 IN DNAME example.net. +example.com. 3590 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFH1xw24Hswia3g10AVL1yFUHUPdFAhQDrA+qZJwqXRPg2C1oiNPk9fosGg== ;{id = 2854} +www.example.com. 3590 IN CNAME www.example.net. +www.example.net. 3590 IN A 11.12.13.14 +www.example.net. 3590 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_dnametoposwc.rpl b/external/unbound/testdata/val_dnametoposwc.rpl new file mode 100644 index 0000000..16481d1 --- /dev/null +++ b/external/unbound/testdata/val_dnametoposwc.rpl @@ -0,0 +1,241 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a dname to positive wildcard + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFH1xw24Hswia3g10AVL1yFUHUPdFAhQDrA+qZJwqXRPg2C1oiNPk9fosGg== ;{id = 2854} +; unsigned CNAME +www.example.com. IN CNAME www.example.net. +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +example.com. 3600 IN DNAME example.net. +example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFH1xw24Hswia3g10AVL1yFUHUPdFAhQDrA+qZJwqXRPg2C1oiNPk9fosGg== ;{id = 2854} +www.example.com. 0 IN CNAME www.example.net. +www.example.net. 3600 IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 2 3600 20070926134150 20070829134150 30899 example.net. quSyDbSeHRvyMmanqq5rW+APC9MKOswbRLB5QP/G+C2iyokQFLuRTlX9Wmo/jo1Oo1MGBefJUmP9NdRd2EqABA== ;{id = 30899} +SECTION AUTHORITY +wab.example.net IN NSEC wzz.example.net. A NSEC RRSIG +wab.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. gl8vkI3xfSWx4Pyv5OdOthiewE6u/13kclY7UG9ptuFBddamdJO3RQqyxM6Xcmq+ToO4kMCCyaKijp01gTDoGg== ;{id = 30899} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_dnamewc.rpl b/external/unbound/testdata/val_dnamewc.rpl new file mode 100644 index 0000000..b011af8 --- /dev/null +++ b/external/unbound/testdata/val_dnamewc.rpl @@ -0,0 +1,268 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a wildcarded dname + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +; *.example.com. IN DNAME example.net. +sub.example.com. IN DNAME example.net. +sub.example.com. 3600 IN RRSIG DNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFEyO+NY3QgAf/cF0mmZhsj3TqgoGAhRqJhHoCd+aA1FbBp16WGfk1HmeIg== ;{id = 2854} +; unsigned CNAME; one interpretation of the wildcarded DNAME expansion +www.sub.example.com. IN CNAME www.example.net. +SECTION AUTHORITY +; prove original does not exist +ns.example.com. IN NSEC www.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCCqvDUT+jMCvfm7OHL2IDY75JDmQIUfOtDiiyeSiwjuq3i3OuLnVRyoJ8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.net. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.net. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +; from *.example.net. +www.example.net. IN A 11.12.13.14 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.net. CPxF5hK9Kg5eT7W6LgZwr0ePYEm9HMcSY4vvqCS6gDWB4X9jvXLCfBkCLhsNybPBpGWlsLi5wM6MTdJXuPpsRA== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_afterprime.rpl b/external/unbound/testdata/val_ds_afterprime.rpl new file mode 100644 index 0000000..50c28aa --- /dev/null +++ b/external/unbound/testdata/val_ds_afterprime.rpl @@ -0,0 +1,180 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test DS lookup after key prime is done. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DS +SECTION AUTHORITY +com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +example.com. IN DS +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +example.com. IN DS +SECTION AUTHORITY +com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_cname.rpl b/external/unbound/testdata/val_ds_cname.rpl new file mode 100644 index 0000000..7c3e41b --- /dev/null +++ b/external/unbound/testdata/val_ds_cname.rpl @@ -0,0 +1,205 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME response to DS + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; not legal NOERROR/NODATA response, but leniently accepted (not validated) +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; nothing here, not even NSECs +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN DS +SECTION ANSWER +www.example.com. IN CNAME zzz.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. AERsv3PiBObAEhZ/dKyamie0sjvYLn7YaEKgv9ExB14KKLgWvzCaOWo= ;{id = 2854} +;*.example.com. IN CNAME zzz.example.com. +;*.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926134150 20070829134150 2854 example.com. AERsv3PiBObAEhZ/dKyamie0sjvYLn7YaEKgv9ExB14KKLgWvzCaOWo= ;{id = 2854} + +SECTION AUTHORITY +*.example.com. IN NSEC zzz.example.com. CNAME RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AJxl2TXciyhbKqSakVNtjlt8Bbkco02zpl5RlY88iqVmSa6ts+/guU4= ;{id = 2854} +zzz.example.com. IN NSEC *.zzz.example.com. A RRSIG NSEC +zzz.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ACtgx/h0YfGEK79zg4G16jB/0oRWH0nxrMzUc/4hCY3oprsP8DrdjqU= ;{id = 2854} +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +zzz.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +zzz.example.com. IN NSEC *.zzz.example.com. A RRSIG NSEC +zzz.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ACtgx/h0YfGEK79zg4G16jB/0oRWH0nxrMzUc/4hCY3oprsP8DrdjqU= ;{id = 2854} +example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_cnamesub.rpl b/external/unbound/testdata/val_ds_cnamesub.rpl new file mode 100644 index 0000000..bbd3689 --- /dev/null +++ b/external/unbound/testdata/val_ds_cnamesub.rpl @@ -0,0 +1,278 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with CNAME response to DS in chain of trust +; the CNAME is at a nonempty nonterminal name in the parent zone. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; not legal NOERROR/NODATA response, but leniently accepted (not validated) +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +;example.com. IN SOA alfa.ns.example.com.cz. hostmaster.example.com. 2010030800 10800 86400 604800 86400 +;example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. ADsxLOHjxFzwFmwIiGOubqD9nKWAp4RccRIXQ0+EAUGfSDZMCB0ZiFA= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DS query for a.example.com, a CNAME +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.example.com. IN DS +SECTION ANSWER +a.example.com. IN CNAME zzz.example.net. +a.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926134150 20070829134150 2854 example.com. AKM6/j6yowuwqbazKzi4fEsavcLwXo3PjglhH9KD68ANZOrdN9y1ZCc= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response to DS query for sub.a.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.a.example.com. IN DS +SECTION ANSWER +sub.a.example.com. 3600 IN DS 57024 7 1 e54100bff773a794854808694c5d217267a53649 +sub.a.example.com. 3600 IN RRSIG DS 3 4 3600 20070926134150 20070829134150 2854 example.com. ALHDGmpgZlXnAb54z4FbBKw/9nXVBdosG0UCEuh4qU7Lm/fs5Dv9aJw= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; delegation down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.a.example.com. IN NS +SECTION ANSWER +SECTION AUTHORITY +sub.a.example.com. 3600 IN DS 57024 7 1 e54100bff773a794854808694c5d217267a53649 +sub.a.example.com. 3600 IN RRSIG DS 3 4 3600 20070926134150 20070829134150 2854 example.com. ALHDGmpgZlXnAb54z4FbBKw/9nXVBdosG0UCEuh4qU7Lm/fs5Dv9aJw= +sub.a.example.com. IN NS ns.sub.a.example.com. +SECTION ADDITIONAL +ns.sub.a.example.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.sub.a.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 + +; DNSKEY query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.a.example.com. IN DNSKEY +SECTION ANSWER +sub.a.example.com. 3600 IN DNSKEY 257 3 7 AwEAAbvre/wK/WVeoj0SiwVkTD+NefvHPru9YIqLWY0m+0E5NYOpJZdc+PGQQYRzFNOlugVZtFirmv5Lmz7GNiASXtG/IFi//SlE30DxEKQOjt2F6qSZTZ1nZ5XOIMGTwWyp4OoI0egk5JavC5mQbyXqcj82ywt6F5Z3CmnThVl6MtOv ;{id = 57024 (ksk), size = 1024b} +sub.a.example.com. 3600 IN RRSIG DNSKEY 7 4 3600 20070926134150 20070829134150 57024 sub.a.example.com. TB3rkkPBD/ESQR9WBpfq2aV+2howI+EJq2+om2EI6PiemQOdpN6ovLvKwCILb0LOsTEFfPpAvRCOuDzRC24sJqBgWpZ4xLxMTcQJ8hMvv7rIUfZotDPO2JYNHSRmpeQLuDGA6P+AtJLYIr7yfOltJmJ0aCJxy3Fm9RQxJxHVbEQ= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.sub.a.example.com. IN A +SECTION ANSWER +www.sub.a.example.com. IN A 10.20.30.40 +www.sub.a.example.com. 3600 IN RRSIG A 7 5 3600 20070926134150 20070829134150 57024 sub.a.example.com. az44R7VbfooRtaSOO65W+GP4K/fHlIcKMkF/z3LVvDXOdCK+zuYPJycBCYljH5cAhslMXgDeHMOWdcPhKIZ3EjykYUJIGlMckVIMobBieFKFhIX9r/bRpT0vlsCF2YKbmvyjpeRF/sIg2iSNMf/s6wxpZq02Kq6yuHtUEqgx7uA= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +zzz.example.net. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA root. host. 1 2 3 4 5 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.a.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.a.example.com. IN A +SECTION ANSWER +www.sub.a.example.com. 3600 IN A 10.20.30.40 +www.sub.a.example.com. 3600 IN RRSIG A 7 5 3600 20070926134150 20070829134150 57024 sub.a.example.com. az44R7VbfooRtaSOO65W+GP4K/fHlIcKMkF/z3LVvDXOdCK+zuYPJycBCYljH5cAhslMXgDeHMOWdcPhKIZ3EjykYUJIGlMckVIMobBieFKFhIX9r/bRpT0vlsCF2YKbmvyjpeRF/sIg2iSNMf/s6wxpZq02Kq6yuHtUEqgx7uA= +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_gost.crpl b/external/unbound/testdata/val_ds_gost.crpl new file mode 100644 index 0000000..5babb3d --- /dev/null +++ b/external/unbound/testdata/val_ds_gost.crpl @@ -0,0 +1,209 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with GOST DS digest + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. + +; GOST DS for sub.example.com. +sub.example.com. 3600 IN DS 60385 12 3 2be04f63b3d069fd65f81a3b810b661a00d39be3ff00d1c7481a150b93b0d027 ; xepov-bofek-fuset-bipiz-tunoz-mukyf-rybyb-ranic-pobet-fakov-fozob-bagus-ludac-pyheb-rygor-bygyd-lyxyx + +; SHA DS for sub.example.com. +;sub.example.com. 3600 IN DS 60385 12 1 0a66f7923318bb1e208bfd975ffa2e30cfcdf962 ; xedik-katin-dasec-myvic-vumum-rizan-luluz-paraf-befas-tovek-dyxax +;sub.example.com. 3600 IN DS 60385 12 2 cd3290b84b457d02ca29846a005a5eba61640256ced8deca0ef8345d2cd34a58 ; xufef-dugir-modog-hyzyb-dadod-nicuk-pubyh-polor-pomuk-gobuh-kufet-mulus-pofyz-metoh-tarit-fudih-moxex + +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. ADwjiGkzrz8RPRJ6LAB37cNEQxTXSaR6Stu/GwGvcQ7KVGH/Qw76ktI= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. LAgerMKnwGgapo7tDs2jV8kjA+RminByvkR6qHineRDv4SYbRdDlCtYcFR4CoYo9aigLPej1WBmaZjFV+/7AVA== ;{id = 60385} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. qYVQEwiVNWwRRoDJxK3c3LaXtfvOm/YzOEzXbN2MxPHZXHaa2nCzWLsILNstot/wTAbrk4wNcT16gKxF5JguNw== ;{id = 60385} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 12 9SZY+xB3wKtrLoRHzkBs9L3fjcvazjnk5HF3gMaD1PVp4pthrwgHIm0TUaLrd3YCa2VCl5wj+MzbhZi8NEJ/Cg== ;{id = 60385 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. zyZCppfMjlMS9xs3pJfbWkdA6EgV5MqI11AdVRV8pBsyI7diYLWm8RAHlhEI5MT59A6IT6Di9YjOCvWJjzZ9tA== ;{id = 60385} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. 3y6qmOn5GIytQQtXmdhkyL0+8Um7uNzOA0m0CkWFtzN81T98jHdGcCGNC3CIGMyhKaWKqPlOoSwIfm55fa4qRA== ;{id = 60385} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. VS97UxG9Kn7DIYFCnBDJQ3n7sQ+aYF42/cU6s8jF1Y4nHSorKPFa0KHn0WVmaW33hA+Vs4BWTvJ1/JOpbiJskA== ;{id = 60385} + +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. KVDpNBH83UM8l1e9yAdXA1fV+wFJSJF4NtOnDLTtbpfyVbndNW3tvPc2YfLBxTEZeUCns2QrqcmIMdZ086frOQ== ;{id = 60385} + +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. KVDpNBH83UM8l1e9yAdXA1fV+wFJSJF4NtOnDLTtbpfyVbndNW3tvPc2YfLBxTEZeUCns2QrqcmIMdZ086frOQ== ;{id = 60385} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_gost_downgrade.crpl b/external/unbound/testdata/val_ds_gost_downgrade.crpl new file mode 100644 index 0000000..a3930bc --- /dev/null +++ b/external/unbound/testdata/val_ds_gost_downgrade.crpl @@ -0,0 +1,248 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + harden-algo-downgrade: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with GOST DS digest downgrade attack + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. + +; downgrade: false GOST, correct SHA + + +sub.example.com. 3600 IN DS 60385 12 3 2be04f63b3d069fd65f81a3b810b661a00d39be3ff00d1c7481a150b93b0d028 + +; correct GOST DS for sub.example.com. +; sub.example.com. 3600 IN DS 60385 12 3 2be04f63b3d069fd65f81a3b810b661a00d39be3ff00d1c7481a150b93b0d027 ; xepov-bofek-fuset-bipiz-tunoz-mukyf-rybyb-ranic-pobet-fakov-fozob-bagus-ludac-pyheb-rygor-bygyd-lyxyx + +; SHA1 DS for sub.example.com. +sub.example.com. 3600 IN DS 60385 12 1 0a66f7923318bb1e208bfd975ffa2e30cfcdf962 ; xedik-katin-dasec-myvic-vumum-rizan-luluz-paraf-befas-tovek-dyxax +; SHA256 DS for sub.example.com. +sub.example.com. 3600 IN DS 60385 12 2 cd3290b84b457d02ca29846a005a5eba61640256ced8deca0ef8345d2cd34a58 ; xufef-dugir-modog-hyzyb-dadod-nicuk-pubyh-polor-pomuk-gobuh-kufet-mulus-pofyz-metoh-tarit-fudih-moxex + +; signs SHA1, SHA2 and GOST DSes +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. ADB1PPtGoPKRrhNtRtkqeqpgnZdbPOdJMgjdZVxPfgGCoMTu3JFQVbo= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. 6mNrX32/DC2RU1A+yWCccn5H6wnsbNYTlf8e/LyF1fsuNfw6tH12sKGBCtk1mp4HpDIgH02HDHplJskSFOvzTw== ;{id = 60385} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. kJEyinL7BkpiPW2HxmFHRLAi68EdrLXToJiK83a5cedDe5ABL7c/k+nFHd3WjATUtVoueY3pSnCDVCJaFmd+/A== ;{id = 60385} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. kJEyinL7BkpiPW2HxmFHRLAi68EdrLXToJiK83a5cedDe5ABL7c/k+nFHd3WjATUtVoueY3pSnCDVCJaFmd+/A== ;{id = 60385} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. 6mNrX32/DC2RU1A+yWCccn5H6wnsbNYTlf8e/LyF1fsuNfw6tH12sKGBCtk1mp4HpDIgH02HDHplJskSFOvzTw== ;{id = 60385} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 12 9SZY+xB3wKtrLoRHzkBs9L3fjcvazjnk5HF3gMaD1PVp4pthrwgHIm0TUaLrd3YCa2VCl5wj+MzbhZi8NEJ/Cg== ;{id = 60385 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. zyZCppfMjlMS9xs3pJfbWkdA6EgV5MqI11AdVRV8pBsyI7diYLWm8RAHlhEI5MT59A6IT6Di9YjOCvWJjzZ9tA== ;{id = 60385} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 12 3 3600 20070926134150 20070829134150 60385 sub.example.com. 6mNrX32/DC2RU1A+yWCccn5H6wnsbNYTlf8e/LyF1fsuNfw6tH12sKGBCtk1mp4HpDIgH02HDHplJskSFOvzTw== ;{id = 60385} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. kJEyinL7BkpiPW2HxmFHRLAi68EdrLXToJiK83a5cedDe5ABL7c/k+nFHd3WjATUtVoueY3pSnCDVCJaFmd+/A== ;{id = 60385} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. KVDpNBH83UM8l1e9yAdXA1fV+wFJSJF4NtOnDLTtbpfyVbndNW3tvPc2YfLBxTEZeUCns2QrqcmIMdZ086frOQ== ;{id = 60385} + +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN AAAA +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +; must servfail bogus +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +;www.sub.example.com. 3600 IN A 11.11.11.11 +;www.sub.example.com. 3600 IN RRSIG A 12 4 3600 20070926134150 20070829134150 60385 sub.example.com. KVDpNBH83UM8l1e9yAdXA1fV+wFJSJF4NtOnDLTtbpfyVbndNW3tvPc2YfLBxTEZeUCns2QrqcmIMdZ086frOQ== ;{id = 60385} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_sha2.crpl b/external/unbound/testdata/val_ds_sha2.crpl new file mode 100644 index 0000000..4af6693 --- /dev/null +++ b/external/unbound/testdata/val_ds_sha2.crpl @@ -0,0 +1,205 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-dsa: yes + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with SHA256 DS digest + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. + +; SHA256 DS for sub.example.com. +sub.example.com. 3600 IN DS 30899 5 2 51be8e847cc663f2775d0f2b6d15e41553c97ecb99b8dd667f18244e2f652033 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. AJ6FL7yKjrpEEO8WMKlG7TVZoGjgFblJeu0rkJCmJxfdeh6ysUlWQWs= ;{id = 2854} + +; SHA1 DS for sub.example.com. +;sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_sha2_downgrade.crpl b/external/unbound/testdata/val_ds_sha2_downgrade.crpl new file mode 100644 index 0000000..b15f39b --- /dev/null +++ b/external/unbound/testdata/val_ds_sha2_downgrade.crpl @@ -0,0 +1,229 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-dsa: yes + fake-sha1: yes + trust-anchor-signaling: no + harden-algo-downgrade: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with SHA256 DS downgrade to SHA1 + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. + +; Downgrade attack: false SHA2, correct SHA1 + +; SHA256 DS for sub.example.com. +;sub.example.com. 3600 IN DS 30899 5 2 51be8e847cc663f2775d0f2b6d15e41553c97ecb99b8dd667f18244e2f652033 +; BAD SHA256 DS +sub.example.com. 3600 IN DS 30899 5 2 51be8e847cc663f2775d0f2b6d15e41553c97ecb99b8dd667f18244e2f652000 + +; SHA1 DS for sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. ACqqpk1ow07XJvN1orEpiWOeqMLdDKQtTgWB8Mp6CF/9VTfHuWWmsu8= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN AAAA +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +; must servfail, BOGUS +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +;www.sub.example.com. 3600 IN A 11.11.11.11 +;www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ds_sha2_lenient.crpl b/external/unbound/testdata/val_ds_sha2_lenient.crpl new file mode 100644 index 0000000..631facd --- /dev/null +++ b/external/unbound/testdata/val_ds_sha2_lenient.crpl @@ -0,0 +1,229 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-dsa: yes + fake-sha1: yes + trust-anchor-signaling: no + harden-algo-downgrade: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with SHA256 DS downgrade to SHA1 lenience + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. + +; Downgrade attack: false SHA2, correct SHA1 + +; SHA256 DS for sub.example.com. +;sub.example.com. 3600 IN DS 30899 5 2 51be8e847cc663f2775d0f2b6d15e41553c97ecb99b8dd667f18244e2f652033 +; BAD SHA256 DS +sub.example.com. 3600 IN DS 30899 5 2 51be8e847cc663f2775d0f2b6d15e41553c97ecb99b8dd667f18244e2f652000 + +; SHA1 DS for sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. ACqqpk1ow07XJvN1orEpiWOeqMLdDKQtTgWB8Mp6CF/9VTfHuWWmsu8= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN AAAA +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +; must servfail, BOGUS +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_dsnsec.rpl b/external/unbound/testdata/val_dsnsec.rpl new file mode 100644 index 0000000..07dd403 --- /dev/null +++ b/external/unbound/testdata/val_dsnsec.rpl @@ -0,0 +1,287 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test pickup of DS NSEC from the cache. +; make sure unbound does not pick up the wrong nsec. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; barely valid nodata for AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for tub.example.com +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NXDOMAIN +SECTION QUESTION +tub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +; SOA record +example.com IN SOA ns.iana.org. NSTLD.iana.org. 2009061200 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AAvpEruGS0UJzMoO6ou/+y8ZyHjjrFC6HKDWU8a61Ru9qtl4R66fC1c= ;{id = 2854} +; qname denial +sub.example.com. IN NSEC wub.example.com. NS DS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AA4+SSCI8kQZ2/iGj+9rxpNZyaIJNNRZ4eM0fEw2D5fVR/+WLUZ9GdE= ;{id = 2854} +; wildcard denial +example.com. IN NSEC blub.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AARheDFiRjrnKHzsPloUJ0FC+8aAM6H49Lnm2AJrgxE9RlBlH2E4sRo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; DS query for sub.example.com +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; query for a domain next to it, so the wrong NSEC gets in the cache. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.tub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.tub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA ns.iana.org. NSTLD.iana.org. 2009061200 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AAvpEruGS0UJzMoO6ou/+y8ZyHjjrFC6HKDWU8a61Ru9qtl4R66fC1c= ;{id = 2854} +sub.example.com. 3600 IN NSEC wub.example.com. NS DS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AA4+SSCI8kQZ2/iGj+9rxpNZyaIJNNRZ4eM0fEw2D5fVR/+WLUZ9GdE= ;{id = 2854} +example.com. 3600 IN NSEC blub.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AARheDFiRjrnKHzsPloUJ0FC+8aAM6H49Lnm2AJrgxE9RlBlH2E4sRo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; query of interest. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + + +SCENARIO_END diff --git a/external/unbound/testdata/val_entds.rpl b/external/unbound/testdata/val_entds.rpl new file mode 100644 index 0000000..74509ac --- /dev/null +++ b/external/unbound/testdata/val_entds.rpl @@ -0,0 +1,277 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with lots of ENTs in the chain of trust +; query is for a.1.2.b.3.4.c.5.6.example.com. +; labels 1-6 are empty nonterminals. +; there are DNSKEYs at labels b, c, example.com. +; and DSes at b and c. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for ENT DS queries. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +6.example.com. IN DS +SECTION AUTHORITY +example.com. NSEC c.5.6.example.com. SOA DNSKEY NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCoocKDsR+Hius4e+5zJPlXeeWNowIUO+pa14FBcWH/dCNK5R0vRrlWY5s= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +5.6.example.com. IN DS +SECTION AUTHORITY +example.com. NSEC c.5.6.example.com. SOA DNSKEY NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCoocKDsR+Hius4e+5zJPlXeeWNowIUO+pa14FBcWH/dCNK5R0vRrlWY5s= ;{id = 2854} +ENTRY_END + +; response for query in question - delegation +; and all other queries, receive a delegation to c.5.6.example.com. +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +a.1.2.b.3.4.c.5.6.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +c.5.6.example.com. IN NS ns.c.5.6.example.com. +c.5.6.example.com. 3600 IN DS 2854 3 1 4449f16fa7d712283aa43cc8dcc8e07c05856e08 +c.5.6.example.com. 3600 IN RRSIG DS 3 5 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCgiF7eFL89mSqjUPEpQuL5QEa1OgIUWdfUmMkwVBwOgmxlxZIKfGs5od0= ;{id = 2854} +SECTION ADDITIONAL +ns.c.5.6.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.c.5.6.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +c.5.6.example.com. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +c.5.6.example.com. IN DNSKEY +SECTION ANSWER +c.5.6.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +c.5.6.example.com. 3600 IN RRSIG DNSKEY 3 5 3600 20070926134150 20070829134150 2854 c.5.6.example.com. MC0CFHsYd4tGO5BotXFzG9d8fzHkX576AhUAoZ2d1FNUBsrwxl6XSz/hoxme/4Q= ;{id = 2854} +ENTRY_END + +; response to DS queries. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +4.c.5.6.example.com. IN DS +SECTION AUTHORITY +3.c.5.6.example.com. IN NSEC b.3.4.c.5.6.example.com. NS DS RRSIG NSEC +3.c.5.6.example.com. 3600 IN RRSIG NSEC 3 6 3600 20070926134150 20070829134150 2854 c.5.6.example.com. MCwCFFFF5WwGibkPunDt0BW2W9lncACcAhQuFh7FbfCE1ulJqBFf1YxjvT/WHQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +3.4.c.5.6.example.com. IN DS +SECTION AUTHORITY +3.c.5.6.example.com. IN NSEC b.3.4.c.5.6.example.com. NS DS RRSIG NSEC +3.c.5.6.example.com. 3600 IN RRSIG NSEC 3 6 3600 20070926134150 20070829134150 2854 c.5.6.example.com. MCwCFFFF5WwGibkPunDt0BW2W9lncACcAhQuFh7FbfCE1ulJqBFf1YxjvT/WHQ== ;{id = 2854} +ENTRY_END + +; any other query gets a referral +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY AA QR NOERROR +SECTION QUESTION +4.c.5.6.example.com. IN DS +SECTION AUTHORITY +b.3.4.c.5.6.example.com. IN NS ns.b.3.4.c.5.6.example.com. +b.3.4.c.5.6.example.com. 3600 IN DS 30899 5 1 849ebbdefa338db3e6c3ddffd58851523ba701de +b.3.4.c.5.6.example.com. 3600 IN RRSIG DS 3 8 3600 20070926134150 20070829134150 2854 c.5.6.example.com. MC0CFEuXbvClpAOx7E1SXeH0d+Q4jpySAhUAtbEbQ8qtRF5chUOWNtg31ESAjWg= ;{id = 2854} +SECTION ADDITIONAL +ns.b.3.4.c.5.6.example.com. IN A 1.2.3.7 +ENTRY_END +RANGE_END + +; ns.b.3.4.c.5.6.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.3.4.c.5.6.example.com. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.3.4.c.5.6.example.com. IN DNSKEY +SECTION ANSWER +b.3.4.c.5.6.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +b.3.4.c.5.6.example.com. 3600 IN RRSIG DNSKEY 5 8 3600 20070926134150 20070829134150 30899 b.3.4.c.5.6.example.com. KNftlGVkrfvo3l3Wliq+i695MqJI9B8QnTVhCHKhFPZfEq0HCxV8gO3ZlaTUle1YEnr7+yXUritXlzjFOlf1hw== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.1.2.b.3.4.c.5.6.example.com. IN A +SECTION ANSWER +a.1.2.b.3.4.c.5.6.example.com. IN A 11.11.11.11 +a.1.2.b.3.4.c.5.6.example.com. 3600 IN RRSIG A 5 11 3600 20070926134150 20070829134150 30899 b.3.4.c.5.6.example.com. GUZcUHhxAvc6FYwAzVJcTqsjz5L36bGA45dyeSupEGEhhUJj0wm/FaYCAlO8J+H2zcFEqbgK0KzHdrFmNHkgUQ== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.1.2.b.3.4.c.5.6.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +a.1.2.b.3.4.c.5.6.example.com. IN A +SECTION ANSWER +a.1.2.b.3.4.c.5.6.example.com. 3600 IN A 11.11.11.11 +a.1.2.b.3.4.c.5.6.example.com. 3600 IN RRSIG A 5 11 3600 20070926134150 20070829134150 30899 b.3.4.c.5.6.example.com. GUZcUHhxAvc6FYwAzVJcTqsjz5L36bGA45dyeSupEGEhhUJj0wm/FaYCAlO8J+H2zcFEqbgK0KzHdrFmNHkgUQ== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_faildnskey.rpl b/external/unbound/testdata/val_faildnskey.rpl new file mode 100644 index 0000000..4c3139a --- /dev/null +++ b/external/unbound/testdata/val_faildnskey.rpl @@ -0,0 +1,170 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + # test that default value of harden-dnssec-stripped is still yes. + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with failed DNSKEY request + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +;REPLY QR AA NOERROR +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +;example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +;SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_faildnskey_ok.rpl b/external/unbound/testdata/val_faildnskey_ok.rpl new file mode 100644 index 0000000..c191859 --- /dev/null +++ b/external/unbound/testdata/val_faildnskey_ok.rpl @@ -0,0 +1,179 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + harden-dnssec-stripped: no + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with failed DNSKEY request, but not hardened. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +;REPLY QR AA NOERROR +REPLY QR AA SERVFAIL +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +;example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +;example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +;SECTION AUTHORITY +;example.com. IN NS ns.example.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +;SECTION ADDITIONAL +;ns.example.com. IN A 1.2.3.4 +;ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_fwdds.rpl b/external/unbound/testdata/val_fwdds.rpl new file mode 100644 index 0000000..485e286 --- /dev/null +++ b/external/unbound/testdata/val_fwdds.rpl @@ -0,0 +1,231 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +forward-zone: + name: "sub.example.com" + forward-addr: 1.2.3.6 +CONFIG_END + +SCENARIO_BEGIN Test forward-zone with DS query +; The fwd zone is linked validly with a DS to the public internet zone. +; unbound just has to be able to ask the DS from the right server (not +; from the fwd). +; Here the fwd is not even recursive, just the plain server for sub.example.com + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for DS of sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response for qtype DS. This is not available here. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR SERVFAIL +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_keyprefetch.rpl b/external/unbound/testdata/val_keyprefetch.rpl new file mode 100644 index 0000000..0462833 --- /dev/null +++ b/external/unbound/testdata/val_keyprefetch.rpl @@ -0,0 +1,215 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + prefetch-key: yes + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with key prefetch + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_keyprefetch_verify.rpl b/external/unbound/testdata/val_keyprefetch_verify.rpl new file mode 100644 index 0000000..f55bd79 --- /dev/null +++ b/external/unbound/testdata/val_keyprefetch_verify.rpl @@ -0,0 +1,248 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + prefetch-key: yes + prefetch: yes + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with key prefetch and verify with the anchor + + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 TIME_PASSES ELAPSE 3400 + +; now the key gets prefetched and has to be verified with the anchor, +; not with the key itself. +; this answer is from cache enyway. +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DNSKEY +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +STEP 50 TRAFFIC + +SCENARIO_END diff --git a/external/unbound/testdata/val_mal_wc.rpl b/external/unbound/testdata/val_mal_wc.rpl new file mode 100644 index 0000000..5279092 --- /dev/null +++ b/external/unbound/testdata/val_mal_wc.rpl @@ -0,0 +1,152 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata, wildcards and ENT + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +b.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +b.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. 86394 IN SOA NS.IANA.ORG. NSTLD.IANA.ORG. 2007092000 1800 900 604800 86400 +example.com. 86394 IN RRSIG SOA 3 2 86394 20070926135752 20070829135752 2854 example.com. MCwCFFHjDbVjiPywHcXm669wMUJ7dlcoAhRfuauTUoExMSx96lTVYbBHOXtQEw== ;{id = 2854} + +; note that b.example.com. is an empty nonterminal +*.example.com. 3600 IN NSEC *.b.example.com. A MX RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFE9CopvxP6w/1HqnqxNluh1Qbgk0AhRgKrdjk/YoEm4tcYflNX6McDMCgQ== ;{id = 2854} + +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +b.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +b.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. 86394 IN SOA NS.IANA.ORG. NSTLD.IANA.ORG. 2007092000 1800 900 604800 86400 +example.com. 86394 IN RRSIG SOA 3 2 86394 20070926135752 20070829135752 2854 example.com. MCwCFFHjDbVjiPywHcXm669wMUJ7dlcoAhRfuauTUoExMSx96lTVYbBHOXtQEw== ;{id = 2854} +*.example.com. 3600 IN NSEC *.b.example.com. A MX RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFE9CopvxP6w/1HqnqxNluh1Qbgk0AhRgKrdjk/YoEm4tcYflNX6McDMCgQ== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_negcache_ds.rpl b/external/unbound/testdata/val_negcache_ds.rpl new file mode 100644 index 0000000..3a2c8d5 --- /dev/null +++ b/external/unbound/testdata/val_negcache_ds.rpl @@ -0,0 +1,216 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with negative cache DS response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; query for missing DS record. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; the downstream validator wants the DS record. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_negcache_dssoa.rpl b/external/unbound/testdata/val_negcache_dssoa.rpl new file mode 100644 index 0000000..0121d1f --- /dev/null +++ b/external/unbound/testdata/val_negcache_dssoa.rpl @@ -0,0 +1,256 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with negative cache DS response with cached SOA + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; query for missing DS record. +; commented out, this query should not happen as negative cache works. +;ENTRY_BEGIN +;MATCH opcode qtype qname +;ADJUST copy_id +;REPLY QR NOERROR +;SECTION QUESTION +;sub.example.com. IN DS +;SECTION ANSWER +;SECTION AUTHORITY +;example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +;example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +;sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +;sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +;SECTION ADDITIONAL +;ns.sub.example.com. IN A 1.2.3.6 +;ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION AUTHORITY +example.com. 7200 IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 7200 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +nw.example.com. 7200 IN NSEC ny.example.com. A RRSIG +nw.example.com. 7200 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AHMp+sqWyR3JL6P0LhJ10fufMFSkW9+DM3QghOokyqgbRu54Q1XrHoE= ;{id = 2854} +!.example.com. 7200 IN NSEC +.example.com. A RRSIG +!.example.com. 7200 IN RRSIG NSEC 3 3 7200 20070926134150 20070829134150 2854 example.com. AJsNy2VkFTJEMShfEcvIkBe+UViVYDJbNNuGnwf/QecOrhONaVpIXy4= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; put the SOA into the cache +STEP 14 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +nx.example.com. IN A +ENTRY_END + +STEP 15 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +nx.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 7200 IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 7200 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +nw.example.com. 7200 IN NSEC ny.example.com. A RRSIG +nw.example.com. 7200 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AHMp+sqWyR3JL6P0LhJ10fufMFSkW9+DM3QghOokyqgbRu54Q1XrHoE= ;{id = 2854} +!.example.com. 7200 IN NSEC +.example.com. A RRSIG +!.example.com. 7200 IN RRSIG NSEC 3 3 7200 20070926134150 20070829134150 2854 example.com. AJsNy2VkFTJEMShfEcvIkBe+UViVYDJbNNuGnwf/QecOrhONaVpIXy4= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; the downstream validator wants the DS record. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +example.com. 7200 IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 7200 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_negcache_nodata.rpl b/external/unbound/testdata/val_negcache_nodata.rpl new file mode 100644 index 0000000..2fb9429 --- /dev/null +++ b/external/unbound/testdata/val_negcache_nodata.rpl @@ -0,0 +1,167 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" + val-override-date: "20180213111425" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + trust-anchor-signaling: no + aggressive-nsec: yes + +stub-zone: + name: "testzone.nlnetlabs.nl" + stub-addr: 185.49.140.60 +CONFIG_END + +SCENARIO_BEGIN Test validator with negative cache NXDOMAIN response (aggressive NSEC) + +; testzone.nlnetlabs.nl nameserver +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.60 + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +testzone.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +testzone.nlnetlabs.nl. 3600 IN DNSKEY 256 3 8 AwEAAbrNEg01ByEpUUiip+GNAkNVjUfeX7sl9kPUssR3JQvhCJWVs7aBY0Ae1cNtQWgzCmidGorlXvEY2nNBiMM4l7IXqopJsgyj+Cb3nQPVLi/7yVwUb+AIwSJw1gRFElMYonsMOL9qUrJi8BBCnCR0EqkL+X4slmtkXSJbzQAwvHI7 +testzone.nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbn0eGV0wqMBQNSVTY//BoiOD7bexC7FcVv0fH9bwjKOA8I+ob377E14vZN2xRLC2b1GG5iBckjeI+N2dB9eC2KRnScU3Gbmtw75BBYfm/y4Hu72zEjEZ0ZGv6gjSZRv/1o87ODAwQaxN8/dQD+5U/5xu12XM39bCJZx2GWTbf5L +testzone.nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 3 3600 20180313101254 20180213101254 2926 testzone.nlnetlabs.nl. gSLZb/dSKutRlAKSo8ZCC1R+SkvABMYBRQsms77WPfYCDbt5GbXeuGqwGdadjEN8gGSU+qrYNxBZRhlYY6d2vtl+DGh67qwteHSwOCw0VvU64eVh38maJA1U673U4JtlBALzBOA/UHmXPlCgPPoW3BG0U3T2Qir/mqOmegmpBcw= +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NS ns.nlnetlabs.nl. +testzone.nlnetlabs.nl. 3600 IN RRSIG NS 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. Ox0iKc+z3i1qR1wMr8TBPYzuYO5UTaLrBsDagJAd25fvCkGN+h3HPmWlCIW0cBHsS+IaHXr1JhWutjSCc4UBcY+sT7Y7Fw3V1qdZW2KzbSgWUyPkTXoYcIIVLacSUTXEyltW6jj61WEI/RaUGUCJortvwH5iv1Hzee343isxObI= +SECTION ADDITIONAL +ENTRY_END + +; NODATA response for alligator.testzone.nlnetlabs.nl A type +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +alligator.testzone.nlnetlabs.nl. IN A +SECTION ANSWER +SECTION AUTHORITY +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; NXDOMAIN response for emu.testzone.nlnetlabs.nl +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +emu.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +*.elephant.testzone.nlnetlabs.nl. 3600 IN NSEC duck.ent.testzone.nlnetlabs.nl. TXT RRSIG NSEC +*.elephant.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GC4dtR5zYvfuIgMpr6gF8jV69wsi2GwGlftTl532H2sZP7nWa5cJmJ59+q4evBZ+P3fLxaZeGBpsp3fn1e7yadLW5PGiA25qrjG0TGVQgOPdIV+lo45sxn7Yn8apiXcJf/vtXZMR7FcHYK/BieTo2hafa2zaftfQVRA7hpJ/HDc= +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; No answer for ant.testzone.nlnetlabs.nl + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +alligator.testzone.nlnetlabs.nl. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO AD NOERROR +SECTION QUESTION +alligator.testzone.nlnetlabs.nl. IN A +SECTION ANSWER +SECTION AUTHORITY +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; AAAA query for alligator.testzone.nlnetlabs.nl, which isn't on the testzone nameserver +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +alligator.testzone.nlnetlabs.nl. IN AAAA +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +alligator.testzone.nlnetlabs.nl. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +emu.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +emu.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +*.elephant.testzone.nlnetlabs.nl. 3600 IN NSEC duck.ent.testzone.nlnetlabs.nl. TXT RRSIG NSEC +*.elephant.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GC4dtR5zYvfuIgMpr6gF8jV69wsi2GwGlftTl532H2sZP7nWa5cJmJ59+q4evBZ+P3fLxaZeGBpsp3fn1e7yadLW5PGiA25qrjG0TGVQgOPdIV+lo45sxn7Yn8apiXcJf/vtXZMR7FcHYK/BieTo2hafa2zaftfQVRA7hpJ/HDc= +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ent.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +; query for ENT, must result in NOERROR answer +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +ent.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +*.elephant.testzone.nlnetlabs.nl. 3600 IN NSEC duck.ent.testzone.nlnetlabs.nl. TXT RRSIG NSEC +*.elephant.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GC4dtR5zYvfuIgMpr6gF8jV69wsi2GwGlftTl532H2sZP7nWa5cJmJ59+q4evBZ+P3fLxaZeGBpsp3fn1e7yadLW5PGiA25qrjG0TGVQgOPdIV+lo45sxn7Yn8apiXcJf/vtXZMR7FcHYK/BieTo2hafa2zaftfQVRA7hpJ/HDc= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_negcache_nta.rpl b/external/unbound/testdata/val_negcache_nta.rpl new file mode 100644 index 0000000..95c25fd --- /dev/null +++ b/external/unbound/testdata/val_negcache_nta.rpl @@ -0,0 +1,121 @@ +; config options +; The island of trust is at testzone.nlnetlabs.nl +server: + trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" + val-override-date: "20180213111425" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + trust-anchor-signaling: no + aggressive-nsec: yes + domain-insecure: "ant.testzone.nlnetlabs.nl" + +stub-zone: + name: "testzone.nlnetlabs.nl" + stub-addr: 185.49.140.60 +stub-zone: + name: "ant.testzone.nlnetlabs.nl" + stub-addr: 185.49.140.61 +CONFIG_END + +SCENARIO_BEGIN Test to not do aggressive NSEC for domains under NTA + +; testzone.nlnetlabs.nl nameserver +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.60 + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +testzone.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +testzone.nlnetlabs.nl. 3600 IN DNSKEY 256 3 8 AwEAAbrNEg01ByEpUUiip+GNAkNVjUfeX7sl9kPUssR3JQvhCJWVs7aBY0Ae1cNtQWgzCmidGorlXvEY2nNBiMM4l7IXqopJsgyj+Cb3nQPVLi/7yVwUb+AIwSJw1gRFElMYonsMOL9qUrJi8BBCnCR0EqkL+X4slmtkXSJbzQAwvHI7 +testzone.nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbn0eGV0wqMBQNSVTY//BoiOD7bexC7FcVv0fH9bwjKOA8I+ob377E14vZN2xRLC2b1GG5iBckjeI+N2dB9eC2KRnScU3Gbmtw75BBYfm/y4Hu72zEjEZ0ZGv6gjSZRv/1o87ODAwQaxN8/dQD+5U/5xu12XM39bCJZx2GWTbf5L +testzone.nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 3 3600 20180313101254 20180213101254 2926 testzone.nlnetlabs.nl. gSLZb/dSKutRlAKSo8ZCC1R+SkvABMYBRQsms77WPfYCDbt5GbXeuGqwGdadjEN8gGSU+qrYNxBZRhlYY6d2vtl+DGh67qwteHSwOCw0VvU64eVh38maJA1U673U4JtlBALzBOA/UHmXPlCgPPoW3BG0U3T2Qir/mqOmegmpBcw= +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NS ns.nlnetlabs.nl. +testzone.nlnetlabs.nl. 3600 IN RRSIG NS 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. Ox0iKc+z3i1qR1wMr8TBPYzuYO5UTaLrBsDagJAd25fvCkGN+h3HPmWlCIW0cBHsS+IaHXr1JhWutjSCc4UBcY+sT7Y7Fw3V1qdZW2KzbSgWUyPkTXoYcIIVLacSUTXEyltW6jj61WEI/RaUGUCJortvwH5iv1Hzee343isxObI= +SECTION ADDITIONAL +ENTRY_END + +; response for antelope.testzone.nlnetlabs.nl. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +; ant.testzone.nlnetlabs.nl nameserver +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.61 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +ant.testzone.nlnetlabs.nl. 10 IN TXT "domain under NTA" +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO AD NXDOMAIN +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; query for ant.testzone.nlnetlabs.nl, which is below an NTA +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +ant.testzone.nlnetlabs.nl. 10 IN TXT "domain under NTA" +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_negcache_nxdomain.rpl b/external/unbound/testdata/val_negcache_nxdomain.rpl new file mode 100644 index 0000000..520c577 --- /dev/null +++ b/external/unbound/testdata/val_negcache_nxdomain.rpl @@ -0,0 +1,110 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" + val-override-date: "20180213111425" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + trust-anchor-signaling: no + aggressive-nsec: yes + +stub-zone: + name: "testzone.nlnetlabs.nl" + stub-addr: 185.49.140.60 +CONFIG_END + +SCENARIO_BEGIN Test validator with negative cache NXDOMAIN response (aggressive NSEC) + +; testzone.nlnetlabs.nl nameserver +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.60 + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +testzone.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +testzone.nlnetlabs.nl. 3600 IN DNSKEY 256 3 8 AwEAAbrNEg01ByEpUUiip+GNAkNVjUfeX7sl9kPUssR3JQvhCJWVs7aBY0Ae1cNtQWgzCmidGorlXvEY2nNBiMM4l7IXqopJsgyj+Cb3nQPVLi/7yVwUb+AIwSJw1gRFElMYonsMOL9qUrJi8BBCnCR0EqkL+X4slmtkXSJbzQAwvHI7 +testzone.nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbn0eGV0wqMBQNSVTY//BoiOD7bexC7FcVv0fH9bwjKOA8I+ob377E14vZN2xRLC2b1GG5iBckjeI+N2dB9eC2KRnScU3Gbmtw75BBYfm/y4Hu72zEjEZ0ZGv6gjSZRv/1o87ODAwQaxN8/dQD+5U/5xu12XM39bCJZx2GWTbf5L +testzone.nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 3 3600 20180313101254 20180213101254 2926 testzone.nlnetlabs.nl. gSLZb/dSKutRlAKSo8ZCC1R+SkvABMYBRQsms77WPfYCDbt5GbXeuGqwGdadjEN8gGSU+qrYNxBZRhlYY6d2vtl+DGh67qwteHSwOCw0VvU64eVh38maJA1U673U4JtlBALzBOA/UHmXPlCgPPoW3BG0U3T2Qir/mqOmegmpBcw= +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NS ns.nlnetlabs.nl. +testzone.nlnetlabs.nl. 3600 IN RRSIG NS 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. Ox0iKc+z3i1qR1wMr8TBPYzuYO5UTaLrBsDagJAd25fvCkGN+h3HPmWlCIW0cBHsS+IaHXr1JhWutjSCc4UBcY+sT7Y7Fw3V1qdZW2KzbSgWUyPkTXoYcIIVLacSUTXEyltW6jj61WEI/RaUGUCJortvwH5iv1Hzee343isxObI= +SECTION ADDITIONAL +ENTRY_END + +; response for antelope.testzone.nlnetlabs.nl. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; No answer for ant.testzone.nlnetlabs.nl + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO AD NXDOMAIN +SECTION QUESTION +antelope.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +SECTION ADDITIONAL +ENTRY_END + +; query for ant.testzone.nlnetlabs.nl, which isn't on the testzone nameserver +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN TXT +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_noadwhennodo.rpl b/external/unbound/testdata/val_noadwhennodo.rpl new file mode 100644 index 0000000..c4b9afd --- /dev/null +++ b/external/unbound/testdata/val_noadwhennodo.rpl @@ -0,0 +1,152 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test if AD bit is returned on non-DO query. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +; it is validated, but no AD bit, because no AD was requested. +; (this is a copy of val_positive.rpl). +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata.rpl b/external/unbound/testdata/val_nodata.rpl new file mode 100644 index 0000000..f199634 --- /dev/null +++ b/external/unbound/testdata/val_nodata.rpl @@ -0,0 +1,150 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; Denies A, note this is the end of the NSEC chain. +www.example.com. IN NSEC example.com. RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCreYgWjFPE/E47n+KUp6vAPIfS4gIUaof1QcUQeIcsxVi1/M73CuHVwEc= ;{id = 2854} +; Denies wildcard +;example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +;example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +www.example.com. IN NSEC example.com. RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCreYgWjFPE/E47n+KUp6vAPIfS4gIUaof1QcUQeIcsxVi1/M73CuHVwEc= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_ent.rpl b/external/unbound/testdata/val_nodata_ent.rpl new file mode 100644 index 0000000..96ba7db --- /dev/null +++ b/external/unbound/testdata/val_nodata_ent.rpl @@ -0,0 +1,156 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata on empty nonterminal response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +; Denies A, note this is the end of the NSEC chain. +u.example.com. IN NSEC y.www.example.com. RRSIG NSEC +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCvUG2P/8Q8b02C6agrgtJX4YfBbwIUaF/fIuS4OFmGVNkFzgiLAkpze3M= ;{id = 2854} + +; Denies wildcard +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +u.example.com. IN NSEC y.www.example.com. RRSIG NSEC +u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCvUG2P/8Q8b02C6agrgtJX4YfBbwIUaF/fIuS4OFmGVNkFzgiLAkpze3M= ;{id = 2854} +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_entnx.rpl b/external/unbound/testdata/val_nodata_entnx.rpl new file mode 100644 index 0000000..c8e704e --- /dev/null +++ b/external/unbound/testdata/val_nodata_entnx.rpl @@ -0,0 +1,151 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. IN DS 29332 8 2 751f8b755718a7b4ef8920a4b42407520889c3d2142a64f6ffad9e12fa9fc262" + val-override-date: "20140301134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata on empty nonterminal response with rcode NXDOMAIN + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +0.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20140320093645 20140220093645 55566 example.com. Z+gwYHWVcSXkIYX35nm3bHzlARf1AsI51gH7lGUSwKoD+ZEePXgkqnVS3jrzl/VjeNrmGutpl1rP1tZvTLD5Hs7Q04BlmhS5X22jiGpfwfdaKbbBUNDuCLN31+W8A4B6PBA+jNO3m3+vYNctWfemWX2YTIxKIyOppFOZP2+ll4A= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 3 3600 20140320093645 20140220093645 55566 example.com. Fgdfl8Jp4xFHxHyjkjaso7pt0AdrRifUEP2fer8pNnW4KIH83uA4OjfYcMwdP4HqSBJFPb04wQLFoDrLDdFp3zSjHwQQm+4OIBffBMXQ42RSWFgjCygOzQ/vdBUsBDV9tf6y/ggQg+CVfI7l2oPrUwMQCrr69KdzzrRRlsivotM= +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 8 AwEAAdug/L739i0mgN2nuK/bhxu3wFn5Ud9nK2+XUmZQlPUEZUC5YZvm1rfMmEWTGBn87fFxEu/kjFZHJ55JLzqsbbpVHLbmKCTT2gYR2FV2WDKROGKuYbVkJIXdKAjJ0ONuK507NinYvlWXIoxHn22KAWOd9wKgSTNHBlmGkX+ts3hh ;{id = 55566 (zsk), size = 1024b} +example.com. 3600 IN DNSKEY 257 3 8 AwEAAb4WMOTBLTFvmBra5m6SK4VfViOzmvyUAU0qv861ZQXeEFvwlndqNU9rwRsMxrSWAYs5nHErKDn49usC/HyxxW1477iGFHhfgL4mjNreJm9zft2QFB1VLbRbEPYdDMLCn4co0qnG7/KG8W2i8Pym1L7f+aREwbLo+/716AS2PbaKMhfWLKLiq5wnBcUClQMNzCiwhqxDJp1oePqfkVdeUgXOtgi0dYRIKyQFhJ5VWJ22npoi/Gif0XLCADAlAwRLKc8o/yJkCxskzgpHpw5Cki1lclg0aq4ssOuPRQ+ne6IHYCz9D2mwzulblhLFamKdq7aHzNt4NlyxhpANVFiKLD8= ;{id = 29332 (ksk), size = 2048b} +example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20140320093645 20140220093645 29332 example.com. Vjcu4FD2hbHO4jgRXBeWwhUU29DOyUhdcQuRBhcNNZPYS4/MNKrKzhqZ/5jGRx//UffVvZMrVjb2xbJXf0UALrBktbG/yRK0lETXu4JHVtUyCY8jiKlmSl4LabsYC5GvvoLCzXilYFtp1zzagorONmJtmBc9DiP3fp/ju0gZ45/pTn6cLY8cm2/ja5U5SQ4KQ4SVQsiNduvpLAm3CM2qkqOdspWtNEjjG92EXqgBg5lQ0pt5U2wKk3igecACGUiKzrc9qlSBoErS+rDYAZ3TKqUdW489o4hd0vOowvwgb7Z+lqleplyptlCAwpw/djNqA4dX+FTK/oB6lokX5bxnjQ== +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20140320093645 20140220093645 55566 example.com. Z+gwYHWVcSXkIYX35nm3bHzlARf1AsI51gH7lGUSwKoD+ZEePXgkqnVS3jrzl/VjeNrmGutpl1rP1tZvTLD5Hs7Q04BlmhS5X22jiGpfwfdaKbbBUNDuCLN31+W8A4B6PBA+jNO3m3+vYNctWfemWX2YTIxKIyOppFOZP2+ll4A= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 3 3600 20140320093645 20140220093645 55566 example.com. Fgdfl8Jp4xFHxHyjkjaso7pt0AdrRifUEP2fer8pNnW4KIH83uA4OjfYcMwdP4HqSBJFPb04wQLFoDrLDdFp3zSjHwQQm+4OIBffBMXQ42RSWFgjCygOzQ/vdBUsBDV9tf6y/ggQg+CVfI7l2oPrUwMQCrr69KdzzrRRlsivotM= +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +0.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. postmaster.example.com. 1337 1200 180 1209600 3600 +example.com. 3600 IN RRSIG SOA 8 2 3600 20140320093645 20140220093645 55566 example.com. dcglYOgcxQS6G0PIGitAvMsOUdChGmGAKKb9PYewds2CnoBZq9Tn5F27A4agfJJrUcMC1g3m/O9+kbIYSRs3L9qYwpV/hOu7WLAS/fw+8S3ASSWP2RE+uu0IC1qo0YdHtH5y/cNjqEUcH8uhD1CAYfgKdn3hWEwqXKpWAFrUE7U= +; Denies A and wildcard +example.com. 3600 IN NSEC 0.0.0.0.example.com. NS SOA MX TXT RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 8 2 3600 20140320093645 20140220093645 55566 example.com. dL8lR8Wsvow+dCR24E7BTG3NxzxVCJb0wxQ+k8gLVbQMMsMkQEh4gw2zOXkfX21764ULm6RxEww0ibuKnidXLGUEkCc6g+WL2hsnE2DUpwIGZXn/O3VamrB9+GJ+dbCj4NFl+IXNlrfQFsYOiw055jjQjZTxrsCzodnfxqDgwUg= +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +0.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +0.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. postmaster.example.com. 1337 1200 180 1209600 3600 +example.com. 3600 IN RRSIG SOA 8 2 3600 20140320093645 20140220093645 55566 example.com. dcglYOgcxQS6G0PIGitAvMsOUdChGmGAKKb9PYewds2CnoBZq9Tn5F27A4agfJJrUcMC1g3m/O9+kbIYSRs3L9qYwpV/hOu7WLAS/fw+8S3ASSWP2RE+uu0IC1qo0YdHtH5y/cNjqEUcH8uhD1CAYfgKdn3hWEwqXKpWAFrUE7U= +example.com. 3600 IN NSEC 0.0.0.0.example.com. NS SOA MX TXT RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 8 2 3600 20140320093645 20140220093645 55566 example.com. dL8lR8Wsvow+dCR24E7BTG3NxzxVCJb0wxQ+k8gLVbQMMsMkQEh4gw2zOXkfX21764ULm6RxEww0ibuKnidXLGUEkCc6g+WL2hsnE2DUpwIGZXn/O3VamrB9+GJ+dbCj4NFl+IXNlrfQFsYOiw055jjQjZTxrsCzodnfxqDgwUg= +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_entwc.rpl b/external/unbound/testdata/val_nodata_entwc.rpl new file mode 100644 index 0000000..c02e952 --- /dev/null +++ b/external/unbound/testdata/val_nodata_entwc.rpl @@ -0,0 +1,156 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard nodata on empty nonterminal response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +; Denies A, note this is the end of the NSEC chain. +*.u.example.com. IN NSEC y.www.example.com. RRSIG NSEC +*.u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFEiVqFPbtbpIh8NrE/YjNCDPFYZgAhR9/9SDX2lwxckJZR299JcRRsjnqw== ;{id = 2854} + +; Denies wildcard +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +*.u.example.com. IN NSEC y.www.example.com. RRSIG NSEC +*.u.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFEiVqFPbtbpIh8NrE/YjNCDPFYZgAhR9/9SDX2lwxckJZR299JcRRsjnqw== ;{id = 2854} +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_failsig.rpl b/external/unbound/testdata/val_nodata_failsig.rpl new file mode 100644 index 0000000..f1be663 --- /dev/null +++ b/external/unbound/testdata/val_nodata_failsig.rpl @@ -0,0 +1,166 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata response with bogus RRSIG + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; Denies A, note this is the end of the NSEC chain. +; this RRSIG is failed, we set to 0 base64 data to make this easy to detect +www.example.com. IN NSEC example.com. RRSIG NSEC +;www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDA8yqBITvLruoQjn/eqjYjwCwySAhUAk5/f3H1HKMsvM+spmmswwFtndyY= ;{id = 2854} +www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. +; Denies wildcard +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_failwc.rpl b/external/unbound/testdata/val_nodata_failwc.rpl new file mode 100644 index 0000000..76fa8ac --- /dev/null +++ b/external/unbound/testdata/val_nodata_failwc.rpl @@ -0,0 +1,72 @@ +; config options +; The island of trust is at nsecwc.nlnetlabs.nl +server: + trust-anchor: "nsecwc.nlnetlabs.nl. 10024 IN DS 565 8 2 0C15C04C022700C8713028F6F64CF2343DE627B8F83CDA1C421C65DB 52908A2E" + val-override-date: "20181202115531" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "nsecwc.nlnetlabs.nl" + stub-addr: "185.49.140.60" + +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata response with wildcard expanded NSEC record, original NSEC owner does not provide proof for QNAME. CVE-2017-15105 test. + + ; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.60 + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +nsecwc.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nsecwc.nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbTluF4BfJ/FT7Ak5a3VvYG1AqhT8FXxOsVwGTyueyE/hW+fMFMd QlLMf2Lf/gmsnFgn/p7GDmJBLlPTATmLeP3isvAZbK3MDEP2O5UjTVmt LZriTv8xfxYW6emCM54EQjWii64BFWrOeLm9zQqzyaLl53CbIIXqiacV KPteh8GX +nsecwc.nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. q3bG4e8EtvXKDcNWcyYHeQxLF9l9aJKdmeSubyN6Qc3UVHugd6t3YSxD hlD+g43y7FcdnNHdAPh/jpgC4wtOb5J+5XAuESDHwesmIXOCTJjrb+A8 r+xQK+vsY8FhNZ2r81JZ/KQ/+TcCS5tbYeNZQgENduWAxgGiw3fdrMOV xiU= +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +_25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA +SECTION ANSWER +SECTION AUTHORITY +nsecwc.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +nsecwc.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. bYibpCDg1LgrnYJgVahgu94LBqLIcNs4iC0SW8LV7pTI1hhuFKbLkO2O ekPdkJAWmu/KTytf8D+cdcK6X/9VS8QCVIF5S0hraHtNezu0f1B5ztg3 7Rqy+uJSucNKoykueAsz2z43GMgO0rGH3bqM7+3ii8p2E2rhzqEtG/D3 qyY= +; NSEC has a label lenght of 3, indication that the original owner name is: +; *.nsecwc.nlnetlabs.nl. The NSEC therefore does no prove the NODATA answer. +_25._tcp.mail.nsecwc.nlnetlabs.nl. 3600 IN NSEC delegation.nsecwc.nlnetlabs.nl. TXT RRSIG NSEC +_25._tcp.mail.nsecwc.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. ddy1MRbshFuFJswlouNGHsZUF/tYu8BOCztY2JuHeTMyWL7rhRKp73q/ 1RAXMwywKsynT5ioY0bMtEQszeIEn29IYaPDHieLAobjF6BMu1kO7U2/ oEBrSHM/fx28BcaM5G4nfCIm3BlhQhWvk1NDHLn3Q26x4hF/dnmFOUet aXw= +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +_25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +_25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_hasdata.rpl b/external/unbound/testdata/val_nodata_hasdata.rpl new file mode 100644 index 0000000..18f420c --- /dev/null +++ b/external/unbound/testdata/val_nodata_hasdata.rpl @@ -0,0 +1,164 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata response, that proves the data. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; Denies A, note this is the end of the NSEC chain. +www.example.com. IN NSEC example.com. A RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDA8yqBITvLruoQjn/eqjYjwCwySAhUAk5/f3H1HKMsvM+spmmswwFtndyY= ;{id = 2854} +; Denies wildcard +example.com. IN NSEC ns.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFGlz/gvGdVxEo3Kpr+MijEGCZgwaAhRU7qbF13vmCVgR8dFw7LQFKopV6w== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodata_zonecut.rpl b/external/unbound/testdata/val_nodata_zonecut.rpl new file mode 100644 index 0000000..eb84ac0 --- /dev/null +++ b/external/unbound/testdata/val_nodata_zonecut.rpl @@ -0,0 +1,162 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata response from wrong side of zonecut + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; Denies A, note this is the end of the NSEC chain. +; from wrong side of zone-cut +www.example.com. 3600 IN NSEC example.com. NS DS RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. AA+3mzAYPyQ8G9EKxeyNM+UZY+RtCiS5BOkS8h4wSxMT3lfVdadGpn8= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodatawc.rpl b/external/unbound/testdata/val_nodatawc.rpl new file mode 100644 index 0000000..542b65e --- /dev/null +++ b/external/unbound/testdata/val_nodatawc.rpl @@ -0,0 +1,152 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard nodata response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; wildcard, Denies A, note this is the end of the NSEC chain. +*.example.com. IN NSEC example.com. RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFEwIBOyCychIo8y/JnBLLrhQdejHAhUAtKBLVPEvhF2haaX/RNUGLji1Xw0= ;{id = 2854} +; this NSEC denies original query name +ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCfm3mQakqw9pd8SluduiMXYYc+/wIULqIBxw1bK8QEwCrd8E6T50P4BEw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +*.example.com. IN NSEC example.com. RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFEwIBOyCychIo8y/JnBLLrhQdejHAhUAtKBLVPEvhF2haaX/RNUGLji1Xw0= ;{id = 2854} +ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCfm3mQakqw9pd8SluduiMXYYc+/wIULqIBxw1bK8QEwCrd8E6T50P4BEw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodatawc_badce.rpl b/external/unbound/testdata/val_nodatawc_badce.rpl new file mode 100644 index 0000000..49ee7f1 --- /dev/null +++ b/external/unbound/testdata/val_nodatawc_badce.rpl @@ -0,0 +1,164 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard nodata, bad closest encloser + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; wildcard is *.com, +*.com. IN NSEC com. RRSIG NSEC +*.com. 3600 IN RRSIG NSEC 3 1 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCdZKVAPYKe6WhoeuK4+J2hd3F2DgIUXv9Dif1uZsSjboLYVx7Wp0DEg78= ;{id = 2854} +; this NSEC denies original query name from a different zone +ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCfm3mQakqw9pd8SluduiMXYYc+/wIULqIBxw1bK8QEwCrd8E6T50P4BEw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodatawc_nodeny.rpl b/external/unbound/testdata/val_nodatawc_nodeny.rpl new file mode 100644 index 0000000..35f154e --- /dev/null +++ b/external/unbound/testdata/val_nodatawc_nodeny.rpl @@ -0,0 +1,164 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard nodata response without qdenial + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; wildcard, Denies A, note this is the end of the NSEC chain. +*.example.com. IN NSEC ns.example.com. RRSIG NSEC +*.example.com. IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFG0+PaReanKYupgDsJMHBBl7qaAOAhRApLLtiHNSl326iqVz/icLUJ6+Kg== ;{id = 2854} +; this NSEC denies original query name +;ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +;ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCfm3mQakqw9pd8SluduiMXYYc+/wIULqIBxw1bK8QEwCrd8E6T50P4BEw= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nodatawc_one.rpl b/external/unbound/testdata/val_nodatawc_one.rpl new file mode 100644 index 0000000..081d20c --- /dev/null +++ b/external/unbound/testdata/val_nodatawc_one.rpl @@ -0,0 +1,147 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with wildcard nodata response with one NSEC + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +; SOA record is missing in reply. +; wildcard, Denies A, note this is the end of the NSEC chain. +*.example.com. IN NSEC example.com. RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFEwIBOyCychIo8y/JnBLLrhQdejHAhUAtKBLVPEvhF2haaX/RNUGLji1Xw0= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +*.example.com. IN NSEC example.com. RRSIG NSEC +*.example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFEwIBOyCychIo8y/JnBLLrhQdejHAhUAtKBLVPEvhF2haaX/RNUGLji1Xw0= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nokeyprime.rpl b/external/unbound/testdata/val_nokeyprime.rpl new file mode 100644 index 0000000..4675a38 --- /dev/null +++ b/external/unbound/testdata/val_nokeyprime.rpl @@ -0,0 +1,163 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with failed key prime, no keys. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; barely valid nodata for AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007101500 28800 7200 604800 18000 +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b1_nameerror.rpl b/external/unbound/testdata/val_nsec3_b1_nameerror.rpl new file mode 100644 index 0000000..f9d1d26 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b1_nameerror.rpl @@ -0,0 +1,134 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.1 name error. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NXDOMAIN +SECTION QUESTION +a.c.x.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that covers the "next closer" name (c.x.w.example) +;; H(c.x.w.example) = 0va5bpr2ou0vk0lbqeeljri88laipsfh + +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +;; NSEC3 RR that matches the closest encloser (x.w.example) +;; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995 + +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) + +;; NSEC3 RR that covers wildcard at the closest encloser (*.x.w.example) +;; H(*.x.w.example) = 92pqneegtaue7pjatc3l3qnk738c6v5m + +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.c.x.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +a.c.x.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b1_nameerror_noce.rpl b/external/unbound/testdata/val_nsec3_b1_nameerror_noce.rpl new file mode 100644 index 0000000..ebe93a6 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b1_nameerror_noce.rpl @@ -0,0 +1,144 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.1 name error without ce NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NXDOMAIN +SECTION QUESTION +a.c.x.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that covers the "next closer" name (c.x.w.example) +;; H(c.x.w.example) = 0va5bpr2ou0vk0lbqeeljri88laipsfh + +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +;; NSEC3 RR that matches the closest encloser (x.w.example) +;; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995 + +; b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +; b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) + +;; NSEC3 RR that covers wildcard at the closest encloser (*.x.w.example) +;; H(*.x.w.example) = 92pqneegtaue7pjatc3l3qnk738c6v5m + +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.c.x.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +a.c.x.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b1_nameerror_nonc.rpl b/external/unbound/testdata/val_nsec3_b1_nameerror_nonc.rpl new file mode 100644 index 0000000..3fc9db6 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b1_nameerror_nonc.rpl @@ -0,0 +1,146 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm 3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.1 name error without nc NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89ep O6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8 Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf 3bH+QsCtg== ) + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NXDOMAIN +SECTION QUESTION +a.c.x.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd V I2LmKusbZsT0Q== ) + +;; NSEC3 RR that covers the "next closer" name (c.x.w.example) +;; H(c.x.w.example) = 0va5bpr2ou0vk0lbqeeljri88laipsfh + +;0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi 47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +;0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRx K9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +;; NSEC3 RR that matches the closest encloser (x.w.example) +;; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995 + +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUi wtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) + +;; NSEC3 RR that covers wildcard at the closest encloser (*.x.w.example) +;; H(*.x.w.example) = 92pqneegtaue7pjatc3l3qnk738c6v5m + +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH +z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.c.x.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +a.c.x.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b1_nameerror_nowc.rpl b/external/unbound/testdata/val_nsec3_b1_nameerror_nowc.rpl new file mode 100644 index 0000000..6c77421 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b1_nameerror_nowc.rpl @@ -0,0 +1,151 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.1 name error without wc NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NXDOMAIN +SECTION QUESTION +a.c.x.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that covers the "next closer" name (c.x.w.example) +;; H(c.x.w.example) = 0va5bpr2ou0vk0lbqeeljri88laipsfh + +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +;; NSEC3 RR that matches the closest encloser (x.w.example) +;; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995 + +b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) + +;; NSEC3 RR that covers wildcard at the closest encloser (*.x.w.example) +;; H(*.x.w.example) = 92pqneegtaue7pjatc3l3qnk738c6v5m + + +;35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +;35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.c.x.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +a.c.x.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +; example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +; example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +; b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) +; b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b21_nodataent.rpl b/external/unbound/testdata/val_nsec3_b21_nodataent.rpl new file mode 100644 index 0000000..e20a285 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b21_nodataent.rpl @@ -0,0 +1,117 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.2.1 no data empty nonterminal. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +y.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR matches the QNAME and shows that the A type bit is not set. +ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. NSEC3 1 1 12 aabbccdd ( k8udemvp1j2f7eg6jebps17vp3n8i58h ) +ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. gPkFp1s2QDQ6wQzcg1uSebZ61W33rUBDcTj7 2F3kQ490fEdp7k1BUIfbcZtPbX3YCpE+sIt0 MpzVSKfTwx4uYA== ) + +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +y.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +y.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) +ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. NSEC3 1 1 12 aabbccdd ( k8udemvp1j2f7eg6jebps17vp3n8i58h ) +ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. gPkFp1s2QDQ6wQzcg1uSebZ61W33rUBDcTj7 2F3kQ490fEdp7k1BUIfbcZtPbX3YCpE+sIt0 MpzVSKfTwx4uYA== ) +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b21_nodataent_wr.rpl b/external/unbound/testdata/val_nsec3_b21_nodataent_wr.rpl new file mode 100644 index 0000000..a56f0b8 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b21_nodataent_wr.rpl @@ -0,0 +1,135 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.2.1 no data empty nonterminal, wrong rr. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +y.w.example. IN A +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR matches the QNAME and shows that the A type bit is not set. +;ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. NSEC3 1 1 12 aabbccdd ( k8udemvp1j2f7eg6jebps17vp3n8i58h ) +;ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. gPkFp1s2QDQ6wQzcg1uSebZ61W33rUBDcTj7 2F3kQ490fEdp7k1BUIfbcZtPbX3YCpE+sIt0 MpzVSKfTwx4uYA== ) + +; instead the wrong NSEC3 rr is included +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +y.w.example. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +y.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b2_nodata.rpl b/external/unbound/testdata/val_nsec3_b2_nodata.rpl new file mode 100644 index 0000000..709c918 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b2_nodata.rpl @@ -0,0 +1,117 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.2 no data. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns1.example. IN MX +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR matches the QNAME and shows that the MX type bit is not set. +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. NSEC3 1 1 12 aabbccdd ( 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG ) +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OmBvJ1Vgg1hCKMXHFiNeIYHK9XVW0iLDLwJN 4TFoNxZuP03gAXEI634YwOc4YBNITrj413iq NI6mRk/r1dOSUw== ) + +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ns1.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +ns1.example. IN MX +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. NSEC3 1 1 12 aabbccdd ( 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG ) +2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OmBvJ1Vgg1hCKMXHFiNeIYHK9XVW0iLDLwJN 4TFoNxZuP03gAXEI634YwOc4YBNITrj413iq NI6mRk/r1dOSUw== ) +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b2_nodata_nons.rpl b/external/unbound/testdata/val_nsec3_b2_nodata_nons.rpl new file mode 100644 index 0000000..43d815e --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b2_nodata_nons.rpl @@ -0,0 +1,139 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.2 no data, without NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +; response to DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns1.example. IN DS +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns1.example. IN MX +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR matches the QNAME and shows that the MX type bit is not set. +;2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. NSEC3 1 1 12 aabbccdd ( 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG ) +;2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OmBvJ1Vgg1hCKMXHFiNeIYHK9XVW0iLDLwJN 4TFoNxZuP03gAXEI634YwOc4YBNITrj413iq NI6mRk/r1dOSUw== ) + +SECTION ADDITIONAL +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ns1.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +ns1.example. IN MX +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b3_optout.rpl b/external/unbound/testdata/val_nsec3_b3_optout.rpl new file mode 100644 index 0000000..41e2e38 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b3_optout.rpl @@ -0,0 +1,214 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.3 referral to optout unsigned zone. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. + +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +c.example. IN DS +SECTION AUTHORITY +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +ENTRY_END + +RANGE_END + +; ns1.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + +; ns2.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b3_optout_negcache.rpl b/external/unbound/testdata/val_nsec3_b3_optout_negcache.rpl new file mode 100644 index 0000000..e2897e5 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b3_optout_negcache.rpl @@ -0,0 +1,216 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.3 referral optout with negative cache. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. + +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 + +ENTRY_END + + +; DS must be gotten from neg cache +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR AA DO NOERROR +; SECTION QUESTION +; c.example. IN DS +; SECTION AUTHORITY +; ;; NSEC3 RR that covers the "next closer" name (c.example) +; ;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +; 35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +; 35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) +; +; ;; NSEC3 RR that matches the closest encloser (example) +; ;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +; ENTRY_END + +RANGE_END + +; ns1.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + +; ns2.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b3_optout_noce.rpl b/external/unbound/testdata/val_nsec3_b3_optout_noce.rpl new file mode 100644 index 0000000..ddcd4c0 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b3_optout_noce.rpl @@ -0,0 +1,255 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.3 optout unsigned, without ce. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +c.example. IN DS +SECTION AUTHORITY +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +;0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +;0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA DO NOERROR +SECTION QUESTION +c.example. IN MX +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. + +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 + +ENTRY_END +RANGE_END + +; ns1.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns1.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns2.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + +; ns2.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns1.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns2.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b3_optout_nonc.rpl b/external/unbound/testdata/val_nsec3_b3_optout_nonc.rpl new file mode 100644 index 0000000..c4b044e --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b3_optout_nonc.rpl @@ -0,0 +1,256 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.3 optout unsigned, without nc. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +c.example. IN DS +SECTION AUTHORITY +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +;35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +;35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR AA DO NOERROR +SECTION QUESTION +c.example. IN MX +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. + +;; NSEC3 RR that covers the "next closer" name (c.example) +;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck +; 35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd ( b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG ) +; 35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ XtAIR3chwgW+SA== ) + +;; NSEC3 RR that matches the closest encloser (example) +;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) +0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) + +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 + +ENTRY_END + +RANGE_END + +; ns1.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns1.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns2.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + +; ns2.c.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns1.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns2.c.example. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example. IN NS +SECTION ANSWER +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +mc.c.example. IN MX +SECTION ANSWER +mc.c.example. IN MX 50 mx.c.example. +SECTION AUTHORITY +c.example. NS ns1.c.example. +c.example. NS ns2.c.example. +SECTION ADDITIONAL +ns1.c.example. A 192.0.2.7 +ns2.c.example. A 192.0.2.8 +ENTRY_END +RANGE_END + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +mc.c.example. IN MX +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b4_wild.rpl b/external/unbound/testdata/val_nsec3_b4_wild.rpl new file mode 100644 index 0000000..db205ab --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b4_wild.rpl @@ -0,0 +1,155 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.4 wildcard expansion. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN MX +SECTION ANSWER +a.z.w.example. MX 1 ai.example. +a.z.w.example. RRSIG MX 7 2 3600 20150420235959 20051021000000 ( 40430 example. CikebjQwGQPwijVcxgcZcSJKtfynugtlBiKb 9FcBTrmOoyQ4InoWVudhCWsh/URX3lc4WRUM ivEBP6+4KS3ldA== ) +SECTION AUTHORITY +example. NS ns1.example. +example. NS ns2.example. +example. RRSIG NS 7 1 3600 20150420235959 20051021000000 ( 40430 example. PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv CnMXjtz6SyObxA== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +SECTION ADDITIONAL +ai.example. A 192.0.2.9 +ai.example. RRSIG A 7 2 3600 20150420235959 20051021000000 ( 40430 example. hVe+wKYMlObTRPhX0NL67GxeZfdxqr/QeR6F tfdAj5+FgYxyzPEjIzvKWy00hWIl6wD3Vws+ rznEn8sQ64UdqA== ) +ai.example. AAAA 2001:db8:0:0:0:0:f00:baa9 +ai.example. RRSIG AAAA 7 2 3600 20150420235959 20051021000000 ( 40430 example. LcdxKaCB5bGZwPDg+3JJ4O02zoMBrjxqlf6W uaHQZZfTUpb9Nf2nxFGe2XRPfR5tpJT6GdRG cHueLuXkMjBArQ== ) +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.z.w.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.z.w.example. IN MX +SECTION ANSWER +a.z.w.example. MX 1 ai.example. +a.z.w.example. RRSIG MX 7 2 3600 20150420235959 20051021000000 ( 40430 example. CikebjQwGQPwijVcxgcZcSJKtfynugtlBiKb 9FcBTrmOoyQ4InoWVudhCWsh/URX3lc4WRUM ivEBP6+4KS3ldA== ) +SECTION AUTHORITY +example. NS ns1.example. +example. NS ns2.example. +example. RRSIG NS 7 1 3600 20150420235959 20051021000000 ( 40430 example. PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv CnMXjtz6SyObxA== ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +SECTION ADDITIONAL +ai.example. A 192.0.2.9 +ai.example. AAAA 2001:db8:0:0:0:0:f00:baa9 +ai.example. RRSIG A 7 2 3600 20150420235959 20051021000000 ( 40430 example. hVe+wKYMlObTRPhX0NL67GxeZfdxqr/QeR6F tfdAj5+FgYxyzPEjIzvKWy00hWIl6wD3Vws+ rznEn8sQ64UdqA== ) +ai.example. RRSIG AAAA 7 2 3600 20150420235959 20051021000000 ( 40430 example. LcdxKaCB5bGZwPDg+3JJ4O02zoMBrjxqlf6W uaHQZZfTUpb9Nf2nxFGe2XRPfR5tpJT6GdRG cHueLuXkMjBArQ== ) +ENTRY_END +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b4_wild_wr.rpl b/external/unbound/testdata/val_nsec3_b4_wild_wr.rpl new file mode 100644 index 0000000..50daf38 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b4_wild_wr.rpl @@ -0,0 +1,166 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.4 wildcard expansion, wrong NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN MX +SECTION ANSWER +a.z.w.example. MX 1 ai.example. +a.z.w.example. RRSIG MX 7 2 3600 20150420235959 20051021000000 ( 40430 example. CikebjQwGQPwijVcxgcZcSJKtfynugtlBiKb 9FcBTrmOoyQ4InoWVudhCWsh/URX3lc4WRUM ivEBP6+4KS3ldA== ) +SECTION AUTHORITY +example. NS ns1.example. +example. NS ns2.example. +example. RRSIG NS 7 1 3600 20150420235959 20051021000000 ( 40430 example. PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv CnMXjtz6SyObxA== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +;q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +;q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +; The wrong NSEC3 here +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) + +SECTION ADDITIONAL +ai.example. A 192.0.2.9 +ai.example. RRSIG A 7 2 3600 20150420235959 20051021000000 ( 40430 example. hVe+wKYMlObTRPhX0NL67GxeZfdxqr/QeR6F tfdAj5+FgYxyzPEjIzvKWy00hWIl6wD3Vws+ rznEn8sQ64UdqA== ) +ai.example. AAAA 2001:db8:0:0:0:0:f00:baa9 +ai.example. RRSIG AAAA 7 2 3600 20150420235959 20051021000000 ( 40430 example. LcdxKaCB5bGZwPDg+3JJ4O02zoMBrjxqlf6W uaHQZZfTUpb9Nf2nxFGe2XRPfR5tpJT6GdRG cHueLuXkMjBArQ== ) +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.z.w.example. IN MX +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +a.z.w.example. IN MX +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b5_wcnodata.rpl b/external/unbound/testdata/val_nsec3_b5_wcnodata.rpl new file mode 100644 index 0000000..a10d6b7 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b5_wcnodata.rpl @@ -0,0 +1,156 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.5 wildcard nodata. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that matches the closest encloser (w.example) +;; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +;; NSEC3 RR that matches a wildcard at the closest encloser. +;; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd ( t644ebqk9bibcna874givr6joj62mlhv MX RRSIG ) +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+ HF1FWKW7RIJdtQ== ) + +SECTION ADDITIONAL +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.z.w.example. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd ( t644ebqk9bibcna874givr6joj62mlhv MX RRSIG ) +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+ HF1FWKW7RIJdtQ== ) + +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b5_wcnodata_noce.rpl b/external/unbound/testdata/val_nsec3_b5_wcnodata_noce.rpl new file mode 100644 index 0000000..f35eae1 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b5_wcnodata_noce.rpl @@ -0,0 +1,165 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.5 wildcard nodata, without ce. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that matches the closest encloser (w.example) +;; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h +;k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +;k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +;; NSEC3 RR that matches a wildcard at the closest encloser. +;; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd ( t644ebqk9bibcna874givr6joj62mlhv MX RRSIG ) +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+ HF1FWKW7RIJdtQ== ) + +SECTION ADDITIONAL +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.z.w.example. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b5_wcnodata_nonc.rpl b/external/unbound/testdata/val_nsec3_b5_wcnodata_nonc.rpl new file mode 100644 index 0000000..e4c58c6 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b5_wcnodata_nonc.rpl @@ -0,0 +1,165 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.5 wildcard nodata, without nc. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that matches the closest encloser (w.example) +;; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +;q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +;q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +;; NSEC3 RR that matches a wildcard at the closest encloser. +;; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd ( t644ebqk9bibcna874givr6joj62mlhv MX RRSIG ) +r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+ HF1FWKW7RIJdtQ== ) + +SECTION ADDITIONAL +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.z.w.example. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_b5_wcnodata_nowc.rpl b/external/unbound/testdata/val_nsec3_b5_wcnodata_nowc.rpl new file mode 100644 index 0000000..27f68d6 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_b5_wcnodata_nowc.rpl @@ -0,0 +1,167 @@ +; config options +server: + trust-anchor: "example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= )" + val-override-date: "20120420235959" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NSEC3 B.5 wildcard nodata, without wc. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION AUTHORITY +example. IN NS ns1.example. +; leave out to make unbound take ns1 +;example. IN NS ns2.example. +SECTION ADDITIONAL +ns1.example. IN A 192.0.2.1 +; leave out to make unbound take ns1 +;ns2.example. IN A 192.0.2.2 +ENTRY_END +RANGE_END + +; ns1.example. +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +ns1.example. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR REFUSED +SECTION QUESTION +example. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN DNSKEY +SECTION ANSWER +example. DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU ( sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h TY4hHn9npWFRw5BYubE= ) +example. DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ ( j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9 AbsUdblMFin8CVF3n4s= ) +example. RRSIG DNSKEY 7 1 3600 20150420235959 ( 20051021000000 12708 example. AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31 uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm MGQZf3bH+QsCtg== ) +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) + +;; NSEC3 RR that matches the closest encloser (w.example) +;; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd ( kohar7mbb8dc2ce8a9qvl8hon4k53uhi ) +k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt Otx7w9WfcIg62A== ) + +;; NSEC3 RR that covers the "next closer" name (z.w.example) +;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03 +q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd ( r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG ) +q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3 ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN NlkxWcLsIlMmUg== ) + +;; NSEC3 RR that matches a wildcard at the closest encloser. +;; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en +;r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd ( t644ebqk9bibcna874givr6joj62mlhv MX RRSIG ) +;r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+ HF1FWKW7RIJdtQ== ) + +SECTION ADDITIONAL +ENTRY_END + +; catch glue queries +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN A +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA DO NOERROR +SECTION QUESTION +ns2.example. IN AAAA +SECTION ANSWER +; nothing to make sure the ns1 server is used for queries. +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.z.w.example. IN AAAA +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +; insecure! not bogus! (due to optout) +REPLY QR RD RA NOERROR +SECTION QUESTION +a.z.w.example. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example. 3600 IN SOA ns1.example. bugs.x.w.example. 1 3600 300 3600000 3600 +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_cname_ds.rpl b/external/unbound/testdata/val_nsec3_cname_ds.rpl new file mode 100644 index 0000000..a3c2b8a --- /dev/null +++ b/external/unbound/testdata/val_nsec3_cname_ds.rpl @@ -0,0 +1,214 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 CNAME for qtype DS. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN DS +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN DS +SECTION ANSWER +; from *.sub.example.com. IN CNAME sub.example.com. +www.sub.example.com. IN CNAME sub.example.com. +www.sub.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFFyXwAzONbrkZD3oQ50zRYXOr1vvAhQAmzDTm7YYloe6F96eBS1L+KE9hg== ;{id = 2854} +SECTION AUTHORITY +; cover qname next closer name, for the wildcard. +; H(www.sub.example.com.) = ecllopkacmb753v6jlld4d371l1u8gme +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFD4bIeWulXj9lhAGsqCfsKg6jQheAhQ9kkYqd9AVdomcl2YzWOupJnV5wQ== ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN DS +SECTION ANSWER +www.sub.example.com. IN CNAME sub.example.com. +www.sub.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFFyXwAzONbrkZD3oQ50zRYXOr1vvAhQAmzDTm7YYloe6F96eBS1L+KE9hg== ;{id = 2854} +sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +SECTION AUTHORITY +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFD4bIeWulXj9lhAGsqCfsKg6jQheAhQ9kkYqd9AVdomcl2YzWOupJnV5wQ== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_cname_par.rpl b/external/unbound/testdata/val_nsec3_cname_par.rpl new file mode 100644 index 0000000..e07a4ae --- /dev/null +++ b/external/unbound/testdata/val_nsec3_cname_par.rpl @@ -0,0 +1,218 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 wildcard CNAME to parent. +; to test the zone determination routines in nsec3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +; from *.sub.example.com. IN CNAME www.example.com. +www.sub.example.com. IN CNAME www.example.com. +www.sub.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFFKPEuHCx2R69zF2Nd4c7Vu/4RUxAhRB9zHHPCihRU4HT5HhpPJxJykeFg== ;{id = 2854} +SECTION AUTHORITY +; cover qname next closer name, for the wildcard. +; H(www.sub.example.com.) = ecllopkacmb753v6jlld4d371l1u8gme +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFD4bIeWulXj9lhAGsqCfsKg6jQheAhQ9kkYqd9AVdomcl2YzWOupJnV5wQ== ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN CNAME www.example.com. +www.sub.example.com. 3600 IN RRSIG CNAME 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFFKPEuHCx2R69zF2Nd4c7Vu/4RUxAhRB9zHHPCihRU4HT5HhpPJxJykeFg== ;{id = 2854} +SECTION AUTHORITY +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFD4bIeWulXj9lhAGsqCfsKg6jQheAhQ9kkYqd9AVdomcl2YzWOupJnV5wQ== ;{id = 2854} +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_cname_sub.rpl b/external/unbound/testdata/val_nsec3_cname_sub.rpl new file mode 100644 index 0000000..233afb0 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_cname_sub.rpl @@ -0,0 +1,228 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 wildcard CNAME to subzone. +; to test the zone determination routines in nsec3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +;from *.example.com. IN CNAME www.sub.example.com. +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCjVxqOi0bcgHgxVkwzJqIi6iNJswIUZxbmItvoyEczTclgVtHsr9Jmf+w= ;{id = 2854} +SECTION AUTHORITY +; cover qname next closer name. +; H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN SOA ns.sub.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +sub.example.com. 3600 IN RRSIG SOA 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBLls0z0ncWxTXzDt4uLAuJsr932AhQvVeUJevgwAL6mfmLL6fAf2IZ7mg== ;{id = 2854} + +; closest encloser, H(sub.example.com). = 8r1f0ieoutlnjc03meng9e3bn2n0o9pd +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd SOA NS MX RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBX1qVlth+YE+y57p5C7X00bLthDAhRIF2xoHF0exs29obE7JjVthwXfHA== ;{id = 2854} + +; wildcard denial, H(*.sub.example.com.) = hq432j8q183b54mejh50200pqo8rvlog +hq432j8q183b54mejh50200pqo7rvlog.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd hq432j8q183b54mejh50200pqo9rvlog A RRSIG +hq432j8q183b54mejh50200pqo7rvlog.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFAOXoeUk1d0cxT9p1gUvBrybAQCSAhQ5eLWaK932TxxY4U6NAxgst4O4uA== ;{id = 2854} + +; next closer denial H(www.sub.example.com.) = ecllopkacmb753v6jlld4d371l1u8gme +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFAuD3qb/+CWyqjBRt/RDjZvsSyCGAhQivfP3zr1+2Uknw9RhXUcUO0g6Lg== ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN CNAME www.sub.example.com. +www.example.com. 3600 IN RRSIG CNAME 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCjVxqOi0bcgHgxVkwzJqIi6iNJswIUZxbmItvoyEczTclgVtHsr9Jmf+w= ;{id = 2854} +SECTION AUTHORITY +SECTION AUTHORITY +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} +sub.example.com. IN SOA ns.sub.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +sub.example.com. 3600 IN RRSIG SOA 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBLls0z0ncWxTXzDt4uLAuJsr932AhQvVeUJevgwAL6mfmLL6fAf2IZ7mg== ;{id = 2854} +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd SOA NS MX RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBX1qVlth+YE+y57p5C7X00bLthDAhRIF2xoHF0exs29obE7JjVthwXfHA== ;{id = 2854} +hq432j8q183b54mejh50200pqo7rvlog.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd hq432j8q183b54mejh50200pqo9rvlog A RRSIG +hq432j8q183b54mejh50200pqo7rvlog.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFAOXoeUk1d0cxT9p1gUvBrybAQCSAhQ5eLWaK932TxxY4U6NAxgst4O4uA== ;{id = 2854} +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd ecllopkacmb753v6jlld4d371l1u9gme A RRSIG +ecllopkacmb753v6jlld4d371l1u7gme.sub.example.com. 3600 IN RRSIG NSEC3 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFAuD3qb/+CWyqjBRt/RDjZvsSyCGAhQivfP3zr1+2Uknw9RhXUcUO0g6Lg== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_cnametocnamewctoposwc.rpl b/external/unbound/testdata/val_nsec3_cnametocnamewctoposwc.rpl new file mode 100644 index 0000000..23d2b6a --- /dev/null +++ b/external/unbound/testdata/val_nsec3_cnametocnamewctoposwc.rpl @@ -0,0 +1,209 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. IN DNSKEY 257 3 8 AwEAAdL6YJdvoKQJEt/SgB6MrbQ2RDwnrcQQb6bDE8FpGgLen6hvF31ntVsZ3RZzhCmwL6lvumOLFIRKaP9ZBEVutT9iMoF2dNRbT0TCUrv6uQNHcuCZ0BJhuDNBU42f3yOnfFv7PKxd0NP+yFHJkvDQAVLMB5GeUQuYnvgQGeZsf/3b" + val-override-date: "-1" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a regular cname to wildcard cname to wildcard response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 120 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 8 AwEAAdWzfjQD2bfQuoQGNYuS0ByosBxiTkoKcy9kMoWOQ/jx9rvTRhHImWxTxFtIyZOoRgn6E6mE71e5Y1q1nuyH544Em+4rNRMMW4bzecQmMmPk+B97MqW9aW6e4BwiCTt52IGfL++5GORYcaITw9UOlQLYH1oHHUNUC6ebHENofLTj ;{id = 64050 (zsk), size = 1024b} +example.com. 3600 IN DNSKEY 257 3 8 AwEAAdL6YJdvoKQJEt/SgB6MrbQ2RDwnrcQQb6bDE8FpGgLen6hvF31ntVsZ3RZzhCmwL6lvumOLFIRKaP9ZBEVutT9iMoF2dNRbT0TCUrv6uQNHcuCZ0BJhuDNBU42f3yOnfFv7PKxd0NP+yFHJkvDQAVLMB5GeUQuYnvgQGeZsf/3b ;{id = 46426 (ksk), size = 1024b} +example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20121126123249 20121029123249 46426 example.com. pisNb/A40XDEiMpcYtxc+yO6osISyfpqz+0UZ61pd70+TLXMF197zr9SqOVJHyRI6G2lSnFggxYrZDpxLbxOW0RY/KfjD3xlI14M/2DieJ1NdlQuYFGgTwxcoINUJ/wRd4YUxkF4JS0D4NBdQ0yQYR0KqDr84oyhnULEHX6WB7s= +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION ANSWER +start.example.com. 3600 IN CNAME x.y.z.wc.example.com. +start.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126123316 20121029123316 64050 example.com. LHpx5n++Z0Jgjjalac+e7wdYSbfurqSDpLRAOI1PybTJkwrMvgDKfp0ycT4HwsLVy7spumZ/Ahg/5II9pai7jCiqv1Iyh6fx19ZVeClTFMOLotCK8xMHACYJIY39BhTwD2D3r9BxbK+RopUlXypwV02yzdY2xEnPCBJVDUn5d0g= +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126123316 20121029123316 64050 example.com. BCnT6CIuqvF1U9LfiHIovgvXIVFJsCXqQWmnjHtbFvzUlTlfGj+56YBSOEpyCep4CBJ0CBgZ8gl5kWip8N+sTlveU/UWMv4FAkqLXRYjp4CZegslmJIuXU5uS+Q0GlLbWdSB9ZCZcbbO0qrOtUfrJ2ozcSTCS+D+oIZ+CkwvDlQ= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126123249 20121029123249 64050 example.com. MyXXd3MvXtEYVNqWDepM3+Ra/j/b63QehzSHXZe5gL954WxW8KGHPYmeWyhDtruThpZS6s6jeARY2xt0lmEDnMgNyPJGA6UWwTIgvGD0u9Qw5kocCq3ZH4cSG4xu4rmZoi+h8OGrHxUb4jIKzipzAQDxhnAcp/wKF7e+p+OE+Fo= +SECTION AUTHORITY +; H(z.wc.example.com.) = isn85psesctb6afn2q105mv966tqqepi. +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN NSEC3 1 0 1 abcd isoaarjsq14bkqaamivn1t1milkv95lc A RRSIG +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123259 20121029123259 64050 example.com. Cxwzq1DUQvhkTVHEJHlb92c511Y+uJy/C0yL9br6W/5lB/usuSiK2DjW58ibPh2kLH1P3SpGqd1Y7LigptdXoPBDFakcNcimPWCN93R3J80+vrHHPkPyIsBaywwYI3SNGgfnHfPF+wmH+tZ1vfEHbigOxqPFK+T0ntKq7dkSndg= +; H(z.end.example.com.) = a62608t4becqb6233m87ar7a3648rj3b. +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN NSEC3 1 0 1 abcd a64lt5ij9a1up15h5cdsn1u2071901hu A RRSIG +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123315 20121029123315 64050 example.com. gfBu4oqo9cVxJbqrw2Ly7mK638kGPOF8l8eh7ovalniwkU3F+PNYJyfSE9yGX8tMGbXrkEW9mAzAh39igr2+Bbzi9WPTRp4RDVM0qw+eyMmQRPWKt7FeanDtP+OcdVp0Hf2aPzsgmgTdS6s0AboUq1rX53H2M6F8xAiwPrBJXDQ= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.z.wc.example.com. IN A +SECTION ANSWER +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126123316 20121029123316 64050 example.com. BCnT6CIuqvF1U9LfiHIovgvXIVFJsCXqQWmnjHtbFvzUlTlfGj+56YBSOEpyCep4CBJ0CBgZ8gl5kWip8N+sTlveU/UWMv4FAkqLXRYjp4CZegslmJIuXU5uS+Q0GlLbWdSB9ZCZcbbO0qrOtUfrJ2ozcSTCS+D+oIZ+CkwvDlQ= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126123249 20121029123249 64050 example.com. MyXXd3MvXtEYVNqWDepM3+Ra/j/b63QehzSHXZe5gL954WxW8KGHPYmeWyhDtruThpZS6s6jeARY2xt0lmEDnMgNyPJGA6UWwTIgvGD0u9Qw5kocCq3ZH4cSG4xu4rmZoi+h8OGrHxUb4jIKzipzAQDxhnAcp/wKF7e+p+OE+Fo= +SECTION AUTHORITY +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN NSEC3 1 0 1 abcd isoaarjsq14bkqaamivn1t1milkv95lc A RRSIG +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123259 20121029123259 64050 example.com. Cxwzq1DUQvhkTVHEJHlb92c511Y+uJy/C0yL9br6W/5lB/usuSiK2DjW58ibPh2kLH1P3SpGqd1Y7LigptdXoPBDFakcNcimPWCN93R3J80+vrHHPkPyIsBaywwYI3SNGgfnHfPF+wmH+tZ1vfEHbigOxqPFK+T0ntKq7dkSndg= +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN NSEC3 1 0 1 abcd a64lt5ij9a1up15h5cdsn1u2071901hu A RRSIG +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123315 20121029123315 64050 example.com. gfBu4oqo9cVxJbqrw2Ly7mK638kGPOF8l8eh7ovalniwkU3F+PNYJyfSE9yGX8tMGbXrkEW9mAzAh39igr2+Bbzi9WPTRp4RDVM0qw+eyMmQRPWKt7FeanDtP+OcdVp0Hf2aPzsgmgTdS6s0AboUq1rX53H2M6F8xAiwPrBJXDQ= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGING +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +x.y.z.end.example.com. IN A +SECTION ANSWER +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126123249 20121029123249 64050 example.com. MyXXd3MvXtEYVNqWDepM3+Ra/j/b63QehzSHXZe5gL954WxW8KGHPYmeWyhDtruThpZS6s6jeARY2xt0lmEDnMgNyPJGA6UWwTIgvGD0u9Qw5kocCq3ZH4cSG4xu4rmZoi+h8OGrHxUb4jIKzipzAQDxhnAcp/wKF7e+p+OE+Fo= +SECTION AUTHORITY +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN NSEC3 1 0 1 abcd a64lt5ij9a1up15h5cdsn1u2071901hu A RRSIG +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123315 20121029123315 64050 example.com. gfBu4oqo9cVxJbqrw2Ly7mK638kGPOF8l8eh7ovalniwkU3F+PNYJyfSE9yGX8tMGbXrkEW9mAzAh39igr2+Bbzi9WPTRp4RDVM0qw+eyMmQRPWKt7FeanDtP+OcdVp0Hf2aPzsgmgTdS6s0AboUq1rX53H2M6F8xAiwPrBJXDQ= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END +RANGE_END + + + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +start.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +start.example.com. IN A +SECTION ANSWER +start.example.com. 3600 IN CNAME x.y.z.wc.example.com. +start.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126123316 20121029123316 64050 example.com. LHpx5n++Z0Jgjjalac+e7wdYSbfurqSDpLRAOI1PybTJkwrMvgDKfp0ycT4HwsLVy7spumZ/Ahg/5II9pai7jCiqv1Iyh6fx19ZVeClTFMOLotCK8xMHACYJIY39BhTwD2D3r9BxbK+RopUlXypwV02yzdY2xEnPCBJVDUn5d0g= +x.y.z.wc.example.com. 3600 IN CNAME x.y.z.end.example.com. +x.y.z.wc.example.com. 3600 IN RRSIG CNAME 8 3 3600 20121126123316 20121029123316 64050 example.com. BCnT6CIuqvF1U9LfiHIovgvXIVFJsCXqQWmnjHtbFvzUlTlfGj+56YBSOEpyCep4CBJ0CBgZ8gl5kWip8N+sTlveU/UWMv4FAkqLXRYjp4CZegslmJIuXU5uS+Q0GlLbWdSB9ZCZcbbO0qrOtUfrJ2ozcSTCS+D+oIZ+CkwvDlQ= +x.y.z.end.example.com. 3600 IN A 1.2.3.5 +x.y.z.end.example.com. 3600 IN RRSIG A 8 3 3600 20121126123249 20121029123249 64050 example.com. MyXXd3MvXtEYVNqWDepM3+Ra/j/b63QehzSHXZe5gL954WxW8KGHPYmeWyhDtruThpZS6s6jeARY2xt0lmEDnMgNyPJGA6UWwTIgvGD0u9Qw5kocCq3ZH4cSG4xu4rmZoi+h8OGrHxUb4jIKzipzAQDxhnAcp/wKF7e+p+OE+Fo= +SECTION AUTHORITY +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN NSEC3 1 0 1 abcd isoaarjsq14bkqaamivn1t1milkv95lc A RRSIG +isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123259 20121029123259 64050 example.com. Cxwzq1DUQvhkTVHEJHlb92c511Y+uJy/C0yL9br6W/5lB/usuSiK2DjW58ibPh2kLH1P3SpGqd1Y7LigptdXoPBDFakcNcimPWCN93R3J80+vrHHPkPyIsBaywwYI3SNGgfnHfPF+wmH+tZ1vfEHbigOxqPFK+T0ntKq7dkSndg= +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN NSEC3 1 0 1 abcd a64lt5ij9a1up15h5cdsn1u2071901hu A RRSIG +a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123315 20121029123315 64050 example.com. gfBu4oqo9cVxJbqrw2Ly7mK638kGPOF8l8eh7ovalniwkU3F+PNYJyfSE9yGX8tMGbXrkEW9mAzAh39igr2+Bbzi9WPTRp4RDVM0qw+eyMmQRPWKt7FeanDtP+OcdVp0Hf2aPzsgmgTdS6s0AboUq1rX53H2M6F8xAiwPrBJXDQ= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_entnodata_optout.rpl b/external/unbound/testdata/val_nsec3_entnodata_optout.rpl new file mode 100644 index 0000000..b055470 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_entnodata_optout.rpl @@ -0,0 +1,202 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 response for NODATA ENT with optout. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN DS +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; OPTOUT SPAN around it +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AFgtC3UEm/Tu4HIjfDHIDmZkvgwHF0kWKcD3wP2hs+/wOfaILtXBr4c= +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN A +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; OPTOUT SPAN around it +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AFgtC3UEm/Tu4HIjfDHIDmZkvgwHF0kWKcD3wP2hs+/wOfaILtXBr4c= +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ent.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +ent.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AFgtC3UEm/Tu4HIjfDHIDmZkvgwHF0kWKcD3wP2hs+/wOfaILtXBr4c= +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_entnodata_optout_badopt.rpl b/external/unbound/testdata/val_nsec3_entnodata_optout_badopt.rpl new file mode 100644 index 0000000..7bf202e --- /dev/null +++ b/external/unbound/testdata/val_nsec3_entnodata_optout_badopt.rpl @@ -0,0 +1,198 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 response for NODATA ENT with optout. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN DS +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; the span does not have OPTOUT +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AAaGjBrmbElksOWsOAU0vdNwbRKsbsQgOwhFkONaynSk9M+2QpJQ6+k= +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN A +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; the span does not have OPTOUT +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk7oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AAaGjBrmbElksOWsOAU0vdNwbRKsbsQgOwhFkONaynSk9M+2QpJQ6+k= +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ent.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +ent.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_entnodata_optout_match.rpl b/external/unbound/testdata/val_nsec3_entnodata_optout_match.rpl new file mode 100644 index 0000000..daea380 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_entnodata_optout_match.rpl @@ -0,0 +1,202 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator NODATA ENT with nsec3 optout matches the ent. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN DS +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; OPTOUT +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AJl6kanB5RTIcTJysEzDUNqQAr0ftIqzGzQw2+v8RLEbn3Yhi1bEfOQ= +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ent.example.com. IN A +SECTION AUTHORITY +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; OPTOUT +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= + +; ent.example.com. -> 2kekcu37chvrqjb272ptidu9jhk8oqag. +; OPTOUT +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AJl6kanB5RTIcTJysEzDUNqQAr0ftIqzGzQw2+v8RLEbn3Yhi1bEfOQ= +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ent.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +ent.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA RRSIG DNSKEY +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AHNLlpOM8cBFBBdzUO9nQC/O6mw3rDUrqcdiSwMKAIckd3k5WZvoP78= +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. 3600 IN NSEC3 1 1 123 aabb00123456bbccdd 2kekcu37chvrqjb272ptidu9jhk9oqag +2kekcu37chvrqjb272ptidu9jhk8oqag.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AJl6kanB5RTIcTJysEzDUNqQAr0ftIqzGzQw2+v8RLEbn3Yhi1bEfOQ= +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_iter_high.rpl b/external/unbound/testdata/val_nsec3_iter_high.rpl new file mode 100644 index 0000000..2b78f0b --- /dev/null +++ b/external/unbound/testdata/val_nsec3_iter_high.rpl @@ -0,0 +1,165 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + val-nsec3-keysize-iterations: "1024 100 2048 200 4096 500" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain NSEC3 with too high iterations + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} + +; closest encloser, H(example.com). +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCz/LkFOFcaQzVnyySW9ZoVUnxh7gIUdxyS9vqVDzo8pGhFU+3YogN2ZRk= ;{id = 2854} + +; wildcard denial, H(*.example.com.) = 4f3cnt8cu22tngec382jj4gde4rb47ub +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHS+i/OB/V/gYmS1eQTXieXIXGjsAhQQ0Ql7TW/hsUklrb0DfoyhVPG95Q== ;{id = 2854} + +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCz/LkFOFcaQzVnyySW9ZoVUnxh7gIUdxyS9vqVDzo8pGhFU+3YogN2ZRk= ;{id = 2854} +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHS+i/OB/V/gYmS1eQTXieXIXGjsAhQQ0Ql7TW/hsUklrb0DfoyhVPG95Q== ;{id = 2854} +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nodatawccname.rpl b/external/unbound/testdata/val_nsec3_nodatawccname.rpl new file mode 100644 index 0000000..48631bc --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nodatawccname.rpl @@ -0,0 +1,170 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nodata NSEC3 abused wildcarded CNAME. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; closest encloser +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCz/LkFOFcaQzVnyySW9ZoVUnxh7gIUdxyS9vqVDzo8pGhFU+3YogN2ZRk= ;{id = 2854} + +; wildcard H(*.example.com.) = 4f3cnt8cu22tngec382jj4gde4rb47ub +4f3cnt8cu22tngec382jj4gde4rb47ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub CNAME RRSIG +4f3cnt8cu22tngec382jj4gde4rb47ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFHo9PHBS+MkNWl2DVXH1h1Z8p0yFAhUAjBVKA5s0q5Bt8YOGdY1+9J6GmDU= ;{id = 2854} + +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nods.rpl b/external/unbound/testdata/val_nsec3_nods.rpl new file mode 100644 index 0000000..7151e11 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nods.rpl @@ -0,0 +1,221 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 with no DS referral. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nods_badopt.rpl b/external/unbound/testdata/val_nsec3_nods_badopt.rpl new file mode 100644 index 0000000..6ddd474 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nods_badopt.rpl @@ -0,0 +1,249 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 with no DS with wrong optout bit. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEtLEiFNr2V6qJOHUxIRQ4ittparAhUAm+WN3aqAHEgiQQEeX9z4S0Ub/dM= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn1n0o9pd.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +8r1f0ieoutlnjc03meng9e3bn1n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCategdxsiQTpOMHED1ehjPT7PO2gIUDJ9f/zGCEUHy/UVp97aOh0RRoks= ;{id = 2854} +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig54sqg NS SOA DNSKEY RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEtLEiFNr2V6qJOHUxIRQ4ittparAhUAm+WN3aqAHEgiQQEeX9z4S0Ub/dM= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn1n0o9pd.example.com. IN NSEC3 1 0 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +8r1f0ieoutlnjc03meng9e3bn1n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCategdxsiQTpOMHED1ehjPT7PO2gIUDJ9f/zGCEUHy/UVp97aOh0RRoks= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nods_badsig.rpl b/external/unbound/testdata/val_nsec3_nods_badsig.rpl new file mode 100644 index 0000000..1c37d21 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nods_badsig.rpl @@ -0,0 +1,238 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 with no DS referral with bad signature. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +; bad signature: +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20010926135752 20010829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +;8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +; bad signature +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20010926135752 20010829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +;8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nods_negcache.rpl b/external/unbound/testdata/val_nsec3_nods_negcache.rpl new file mode 100644 index 0000000..d2ba730 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nods_negcache.rpl @@ -0,0 +1,222 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 with no DS referral from neg cache. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +; get DS proof from neg cache +; ENTRY_BEGIN +; MATCH opcode qtype qname +; ADJUST copy_id +; REPLY QR NOERROR +; SECTION QUESTION +; sub.example.com. IN DS +; SECTION AUTHORITY +; ; proof that there is no DS here. +; ;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +; ;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; ; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +; 8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS RRSIG +; 8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFEC78oZJjqlV6kVyQb4X0o6tsUpUAhUAk+bgth7eeN+aO8ts2+yLSyzSX9g= ;{id = 2854} +; ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_nods_soa.rpl b/external/unbound/testdata/val_nsec3_nods_soa.rpl new file mode 100644 index 0000000..bbb0633 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_nods_soa.rpl @@ -0,0 +1,253 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 with no DS referral abuse of apex. +; abusing subzone apex NSEC3. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA SERVFAIL +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCM6lsu9byZIQ1yYjJmyYfFWM2RWAIUcR5t84r2La824oWCkLjmHXRQlco= ;{id = 2854} + +; NODATA response. H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3 +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m3.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFE/a24nsY2luhQmZjY/ObAIgNSMkAhQWd4MUOUVK55bD6AbMHWrDA0yvEA== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS SOA DNSKEY RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC4CFQCeKcyw76yvOvfa2+qtxv8bKcEyJwIVAJBeIGST4Y8Tk8YkQI0suee3Bxb1 ;{id = 2854} +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; proof that there is no DS here. +;sub.example.com. 3600 IN DS 2854 DSA 1 be4d46cd7489cce25a31af0dff2968ce0425dd31 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQC1WMTfb25sTgeUEXCFR4+YiJqecwIUc2R/jrO4amyQxovSnld2reg8eyo= ;{id = 2854} +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 8r1f0ieoutlnjc03meng9e3bn3n0o9pd NS SOA DNSKEY RRSIG +8r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC4CFQCeKcyw76yvOvfa2+qtxv8bKcEyJwIVAJBeIGST4Y8Tk8YkQI0suee3Bxb1 ;{id = 2854} + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +sub.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926135752 20070829135752 2854 sub.example.com. MCwCFBznBTYM/SrdUnjQdBnLtRO79KAaAhQReG5nRuL7Xsdf6D0KKwPa1GpWyQ== ;{id = 2854} + +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +www.sub.example.com. 3600 IN RRSIG A 3 4 3600 20070926135752 20070829135752 2854 sub.example.com. MC0CFEExteiCsLkRi/md6o5K8BhRJAKFAhUAgg2tkvwaDn8Xbm9q+5xnjvgIB8k= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_optout_ad.rpl b/external/unbound/testdata/val_nsec3_optout_ad.rpl new file mode 100644 index 0000000..824cf6d --- /dev/null +++ b/external/unbound/testdata/val_nsec3_optout_ad.rpl @@ -0,0 +1,362 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. DS 57024 7 1 46d134be319b2cc910b9938f1cb25dc41abb27bf" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with optout NSEC3 response that gets no AD. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 7 2 3600 20070926134150 20070829134150 57024 example.com. fIE3H2v3wAm3GPajsdgJn+A8R4Cp7dMXf1PSUQ8BfklzMBMJjpc0oM/S7u/HVLYQs1jx8CMdw2TZEpIPfo6Rl0TekDqNtVk6IBw1H+zxDFwf3v7UdOjm8s6FfoEJcZ5yEFV/Lps82NzHCR9uqprhv6ddQdAeVNA5QHis1c5Y1P0= ;{id = 57024} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 7 3 3600 20070926134150 20070829134150 57024 example.com. b0iX5vuTqngB5F0ORFrFLx8sAeTHGJVcPpD34iNFY71ZoFnHrHfAMWC3RAWz+nQ1NmH1oDdA8NTYN/aQQNzwEz4VmVYA2PANBSiwSY3q3gp9PWZU6CfRNf2dU/210H0y35FroQpADszmwC+Hlbcvll+bQj3fSyT2W/69kRVssj4= ;{id = 57024} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 257 3 7 AwEAAbvre/wK/WVeoj0SiwVkTD+NefvHPru9YIqLWY0m+0E5NYOpJZdc+PGQQYRzFNOlugVZtFirmv5Lmz7GNiASXtG/IFi//SlE30DxEKQOjt2F6qSZTZ1nZ5XOIMGTwWyp4OoI0egk5JavC5mQbyXqcj82ywt6F5Z3CmnThVl6MtOv ;{id = 57024 (ksk), size = 1024b} +example.com. 3600 IN RRSIG DNSKEY 7 2 3600 20070926134150 20070829134150 57024 example.com. lqOo8W7UffLZIKBoIJg8OAPkmCWptnstiLIg1bAtzuEZDZFr2KNZGv+5k6hbRJKYnZRLReY4v8G9Eg0GCC/44gLm8BZlnh/4jLOjMH9MKusFV/jNqz/HABITYn1pBwvVak7lzqN+bmL0KMyWf1MzPWilx4fM9YWinsQFILVLPL0= ;{id = 57024} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 7 2 3600 20070926134150 20070829134150 57024 example.com. fIE3H2v3wAm3GPajsdgJn+A8R4Cp7dMXf1PSUQ8BfklzMBMJjpc0oM/S7u/HVLYQs1jx8CMdw2TZEpIPfo6Rl0TekDqNtVk6IBw1H+zxDFwf3v7UdOjm8s6FfoEJcZ5yEFV/Lps82NzHCR9uqprhv6ddQdAeVNA5QHis1c5Y1P0= ;{id = 57024} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 7 3 3600 20070926134150 20070829134150 57024 example.com. b0iX5vuTqngB5F0ORFrFLx8sAeTHGJVcPpD34iNFY71ZoFnHrHfAMWC3RAWz+nQ1NmH1oDdA8NTYN/aQQNzwEz4VmVYA2PANBSiwSY3q3gp9PWZU6CfRNf2dU/210H0y35FroQpADszmwC+Hlbcvll+bQj3fSyT2W/69kRVssj4= ;{id = 57024} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} + +; optout +; example.com. -> onib9mgub9h0rml3cdf5bgrj59dkjhvk. +; sub.example.com. -> kg19n32806c832kijdnglq8p9m2r5mdj. +; *.example.com. -> 4f3cnt8cu22tngec382jj4gde4rb47ub. +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. NSEC3 1 1 0 - lg19n32806c832kijdnglq8p9m2r5mdj NS DS RRSIG + +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. f7ZSCahAuKOLXquM0jpdU6I9AX31CgGicRiB3aU4jvqQp/EygbCNn5kfpyXY0FvZvzggpl8naXSStOPN9dy3bb0NwGQkJcYD94NEw307T8uEunOvx1ug5TuakBAwqjY8xKM3xab3LnWYRtx4zdln/3ZDHvBUwfzkxUZrzeKjpiI= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN MX +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} + +; optout +; example.com. -> onib9mgub9h0rml3cdf5bgrj59dkjhvk. +; sub.example.com. -> kg19n32806c832kijdnglq8p9m2r5mdj. +; *.example.com. -> 4f3cnt8cu22tngec382jj4gde4rb47ub. +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. NSEC3 1 1 0 - lg19n32806c832kijdnglq8p9m2r5mdj NS DS RRSIG + +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. f7ZSCahAuKOLXquM0jpdU6I9AX31CgGicRiB3aU4jvqQp/EygbCNn5kfpyXY0FvZvzggpl8naXSStOPN9dy3bb0NwGQkJcYD94NEw307T8uEunOvx1ug5TuakBAwqjY8xKM3xab3LnWYRtx4zdln/3ZDHvBUwfzkxUZrzeKjpiI= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +rub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} + +; optout +; example.com. -> onib9mgub9h0rml3cdf5bgrj59dkjhvk. +; rub.example.com. -> c2bqk3tb4foaenfbp1v0pdk6mor3r7vo. +; *.example.com. -> 4f3cnt8cu22tngec382jj4gde4rb47ub. +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +22bqk3tb4foaenfbp1v0pdk6mor3r7vo.example.com. NSEC3 1 1 0 - f2bqk3tb4foaenfbp1v0pdk6mor3r7vo NS RRSIG + +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +22bqk3tb4foaenfbp1v0pdk6mor3r7vo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jk6EYU9qTrmNeeKuQRG7iKyfNJnBt45MToPVpAQ+LoGDC3muy4bkWeKspj68cN9E5wNijfmm1eFK3khSSEnM50mfJbpiwlbKgL0VZz33Zn+Wu8b7sTtdDwDH7MUBLRwHeb7W+NtQIEXPLs4Z3BXHzAXy5ZpSjQ3PJZn6zBx4/dw= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +; wildcard expansion +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.wild.example.com. IN A +SECTION ANSWER +; *.wild.example.com. IN A 77.88.99.0 +a.wild.example.com. IN A 77.88.99.0 +a.wild.example.com. 3600 IN RRSIG A 7 3 3600 20070926134150 20070829134150 57024 example.com. GWV6cQprrpAsaYla5z7N9tppdb+X0ZjOsiWBuBueSACHU8CzsYPMbwKUZlTNbQ4mSVRRDa0rM1niYoZF9oqyAfbn5HBLi62TRjrBLHfvatDgSiZCa4mauUfzUS+U7FfUXikNIigG0aN0xdpJ//urmecjNSKg2aW4M0DYsm7keMI= ;{id = 57024} +SECTION AUTHORITY +; a.wild.example.com -> ad1535hlgg914unuuaei9jfh4ofr44uo. covered by optout +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. IN NSEC3 1 1 0 - ae1535hlgg914unuuaei9jfh4ofr44uo NS RRSIG +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. imoxsXE1c3FaXu6uSantJfMPGBgsauf1GhmNpS1lLuaNRjXOhf1PDXwt/GoD/dm2GXJAlWT8u6EK3RXkFwlDIsP7vYFuDfUNCQ/hvYq300sXl1nfW0O1bsoBJahQJuNM+xcbwbnQf0krCTxNthyi2cuiY7RYug6ZTZ3gz4DMkhU= ;{id = 57024} +; for wild.example.com the closest encloser +; wild.example.com -> 8aeigskl5tmraedgji7v1lqbmqs8qv7u. +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. IN NSEC3 1 1 0 - 9aeigskl5tmraedgji7v1lqbmqs8qv7u +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. afV7c9knpxmD5c6UKrqw5J/06eokPwSb3HZi3TI63tzFcswuMjj4d7NKJmdpA+uo0aweVZgcOp+O+v9urgNYNYbxOy02qqOetLph8YWH7MQTftaGBwKD7gZMbnUArryPCtrlJz0i0GzoWvVTZnsjrrlDtP/ogLDnCKyi7Q0si+k= ;{id = 57024} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.wild.example.com. IN MX +SECTION ANSWER +SECTION AUTHORITY +; wildcard no data +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} +; wild.example.com -> 8aeigskl5tmraedgji7v1lqbmqs8qv7u. +; *.wild.example.com. -> nvec78au1hpuma9eebeji5n06eq33gbk. +; the NSEC3 for the wildcard *.wild.example.com. , with optout, A RRSIG +nvec78au1hpuma9eebeji5n06eq33gbk.example.com. IN NSEC3 1 1 0 - ovec78au1hpuma9eebeji5n06eq33gbk A RRSIG +nvec78au1hpuma9eebeji5n06eq33gbk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jE+b5p+stQumm+tLZdaBT+KBpwYI7wRXijRHWcqiUp2SY1uV7HxBdW8aedVTqpFe8kYbMUgI3pCOAitmiI9R6SJg3q7022QOb9y+0/xSmIDqxATVPTJbkzVBInfWrulRtn7o3HmOyoIc9/w7NnNxFYpwtFL08jTBRr8XRTWDM7Q= ;{id = 57024} +; NSEC3 for the closest encloser, wild.example.com. (an empty nonterminal) +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. IN NSEC3 1 1 0 - 9aeigskl5tmraedgji7v1lqbmqs8qv7u +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. afV7c9knpxmD5c6UKrqw5J/06eokPwSb3HZi3TI63tzFcswuMjj4d7NKJmdpA+uo0aweVZgcOp+O+v9urgNYNYbxOy02qqOetLph8YWH7MQTftaGBwKD7gZMbnUArryPCtrlJz0i0GzoWvVTZnsjrrlDtP/ogLDnCKyi7Q0si+k= ;{id = 57024} +; a.wild.example.com -> ad1535hlgg914unuuaei9jfh4ofr44uo. covered by optout +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. IN NSEC3 1 1 0 - ae1535hlgg914unuuaei9jfh4ofr44uo NS RRSIG +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. imoxsXE1c3FaXu6uSantJfMPGBgsauf1GhmNpS1lLuaNRjXOhf1PDXwt/GoD/dm2GXJAlWT8u6EK3RXkFwlDIsP7vYFuDfUNCQ/hvYq300sXl1nfW0O1bsoBJahQJuNM+xcbwbnQf0krCTxNthyi2cuiY7RYug6ZTZ3gz4DMkhU= ;{id = 57024} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN MX +ENTRY_END + +; recursion happens here. +; no AD flag on this because an optout NSEC3 is used. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +sub.example.com. IN MX +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. NSEC3 1 1 0 - lg19n32806c832kijdnglq8p9m2r5mdj NS DS RRSIG +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. f7ZSCahAuKOLXquM0jpdU6I9AX31CgGicRiB3aU4jvqQp/EygbCNn5kfpyXY0FvZvzggpl8naXSStOPN9dy3bb0NwGQkJcYD94NEw307T8uEunOvx1ug5TuakBAwqjY8xKM3xab3LnWYRtx4zdln/3ZDHvBUwfzkxUZrzeKjpiI= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +; no AD flag here because of RFC5155 9.2 section. +; even though we are sure there is no DS, this is what the RFC says. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. NSEC3 1 1 0 - lg19n32806c832kijdnglq8p9m2r5mdj NS DS RRSIG +jg19n32806c832kijdnglq8p9m2r5mdj.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. f7ZSCahAuKOLXquM0jpdU6I9AX31CgGicRiB3aU4jvqQp/EygbCNn5kfpyXY0FvZvzggpl8naXSStOPN9dy3bb0NwGQkJcYD94NEw307T8uEunOvx1ug5TuakBAwqjY8xKM3xab3LnWYRtx4zdln/3ZDHvBUwfzkxUZrzeKjpiI= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +rub.example.com. IN A +ENTRY_END + +; recursion happens here. +; no AD flag here because of RFC5155 9.2 section. +; also for NXDOMAIN +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +rub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. NSEC3 1 1 0 - pnib9mgub9h0rml3cdf5bgrj59dkjhvk NS SOA RRSIG DNSKEY NSEC3PARAM +onib9mgub9h0rml3cdf5bgrj59dkjhvk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jHrF+lnyRL1LE/Bwz6C+jZg3E/2qQkVSboGxya6iX71v0zA3eUsob9m9l3gHNlhwhyahbamHUKx+OMvtYuzRa+RMv4ObuLRIt8StdixeXaUU+rx7C2qCKOFsa5q4HzK4bLYPfyb5T9w67HbzHPLEllXPA7tghzyzCM9qBtbvwK4= ;{id = 57024} +22bqk3tb4foaenfbp1v0pdk6mor3r7vo.example.com. NSEC3 1 1 0 - f2bqk3tb4foaenfbp1v0pdk6mor3r7vo NS RRSIG +22bqk3tb4foaenfbp1v0pdk6mor3r7vo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jk6EYU9qTrmNeeKuQRG7iKyfNJnBt45MToPVpAQ+LoGDC3muy4bkWeKspj68cN9E5wNijfmm1eFK3khSSEnM50mfJbpiwlbKgL0VZz33Zn+Wu8b7sTtdDwDH7MUBLRwHeb7W+NtQIEXPLs4Z3BXHzAXy5ZpSjQ3PJZn6zBx4/dw= ;{id = 57024} +SECTION ADDITIONAL +ENTRY_END + +STEP 60 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.wild.example.com. IN A +ENTRY_END + +; query is a wildcard expansion, covered by optout. +; hence it is without AD flag (even though we are sure this wildcard exists, +; we are not sure that there is no delegation covered by the optout span +; with the name a.wild.example.com). +STEP 70 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.wild.example.com. IN A +SECTION ANSWER +a.wild.example.com. IN A 77.88.99.0 +a.wild.example.com. 3600 IN RRSIG A 7 3 3600 20070926134150 20070829134150 57024 example.com. GWV6cQprrpAsaYla5z7N9tppdb+X0ZjOsiWBuBueSACHU8CzsYPMbwKUZlTNbQ4mSVRRDa0rM1niYoZF9oqyAfbn5HBLi62TRjrBLHfvatDgSiZCa4mauUfzUS+U7FfUXikNIigG0aN0xdpJ//urmecjNSKg2aW4M0DYsm7keMI= ;{id = 57024} +SECTION AUTHORITY +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. IN NSEC3 1 1 0 - ae1535hlgg914unuuaei9jfh4ofr44uo NS RRSIG +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. imoxsXE1c3FaXu6uSantJfMPGBgsauf1GhmNpS1lLuaNRjXOhf1PDXwt/GoD/dm2GXJAlWT8u6EK3RXkFwlDIsP7vYFuDfUNCQ/hvYq300sXl1nfW0O1bsoBJahQJuNM+xcbwbnQf0krCTxNthyi2cuiY7RYug6ZTZ3gz4DMkhU= ;{id = 57024} +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. IN NSEC3 1 1 0 - 9aeigskl5tmraedgji7v1lqbmqs8qv7u +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. afV7c9knpxmD5c6UKrqw5J/06eokPwSb3HZi3TI63tzFcswuMjj4d7NKJmdpA+uo0aweVZgcOp+O+v9urgNYNYbxOy02qqOetLph8YWH7MQTftaGBwKD7gZMbnUArryPCtrlJz0i0GzoWvVTZnsjrrlDtP/ogLDnCKyi7Q0si+k= ;{id = 57024} +ENTRY_END + +STEP 80 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.wild.example.com. IN MX +ENTRY_END + +; nodata wildcard expansion, we are sure that the wildcard does not have +; the data that is requested, but there an optout flag set on the wildcard +; expansion denial, thus we are not sure of a.wild.example.com delegation +; under the optout. +STEP 90 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.wild.example.com. IN MX +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. noc.example.com. 2009310622 1800 900 604800 86400 +example.com. 3600 IN RRSIG SOA 7 2 3600 20070926134150 20070829134150 57024 example.com. HlyER7bYPiSJ9jdjjRBucQexYr932Oor1TvxSLPWw5fuWvr/fFitKVnLqC+lqBIeOby44KiDr0rIk+ZqYjWWKNjaLm5wMfhQzbsAgGTQxmO07jnYOGQG9SI6DSbR9GJdZ7imu5sx5oo5dze73MxgLMZIethGaFMkktYN53+AzG0= ;{id = 57024} +nvec78au1hpuma9eebeji5n06eq33gbk.example.com. IN NSEC3 1 1 0 - ovec78au1hpuma9eebeji5n06eq33gbk A RRSIG +nvec78au1hpuma9eebeji5n06eq33gbk.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. jE+b5p+stQumm+tLZdaBT+KBpwYI7wRXijRHWcqiUp2SY1uV7HxBdW8aedVTqpFe8kYbMUgI3pCOAitmiI9R6SJg3q7022QOb9y+0/xSmIDqxATVPTJbkzVBInfWrulRtn7o3HmOyoIc9/w7NnNxFYpwtFL08jTBRr8XRTWDM7Q= ;{id = 57024} +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. IN NSEC3 1 1 0 - 9aeigskl5tmraedgji7v1lqbmqs8qv7u +8aeigskl5tmraedgji7v1lqbmqs8qv7u.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. afV7c9knpxmD5c6UKrqw5J/06eokPwSb3HZi3TI63tzFcswuMjj4d7NKJmdpA+uo0aweVZgcOp+O+v9urgNYNYbxOy02qqOetLph8YWH7MQTftaGBwKD7gZMbnUArryPCtrlJz0i0GzoWvVTZnsjrrlDtP/ogLDnCKyi7Q0si+k= ;{id = 57024} +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. IN NSEC3 1 1 0 - ae1535hlgg914unuuaei9jfh4ofr44uo NS RRSIG +ac1535hlgg914unuuaei9jfh4ofr44uo.example.com. 3600 IN RRSIG NSEC3 7 3 3600 20070926134150 20070829134150 57024 example.com. imoxsXE1c3FaXu6uSantJfMPGBgsauf1GhmNpS1lLuaNRjXOhf1PDXwt/GoD/dm2GXJAlWT8u6EK3RXkFwlDIsP7vYFuDfUNCQ/hvYq300sXl1nfW0O1bsoBJahQJuNM+xcbwbnQf0krCTxNthyi2cuiY7RYug6ZTZ3gz4DMkhU= ;{id = 57024} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_optout_cache.rpl b/external/unbound/testdata/val_nsec3_optout_cache.rpl new file mode 100644 index 0000000..215cca6 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_optout_cache.rpl @@ -0,0 +1,280 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 span change and cache effects. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +; blacklisted address to stop it from using it, the negative answer uses its +; nsec3-hash which is alittle inconvenient +; ns.example.com. -> 7l9dbddmge35f7vr9mec78dqr6l3236k. +ns.example.com. IN AAAA ::1 +ns.example.com. 3600 IN RRSIG AAAA 3 3 3600 20070926135752 20070829135752 2854 example.com. AExGBc6JU/xwwoSIeK/DtX8kr7AgOecx5Z2FnRiz/YSpnWGnFDt26ec= +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DS query +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN SOA a. b. 1 2 3 4 5 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. AAkQt1yoMF7s4gCYlojFzi0ubw6Uo4uWPSJTz6Dp/2iWUVDbxDKpy+E= + +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; proof that there is no DS here. +; ce: +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig53sqh NS SOA DNSKEY NSEC3PARAM RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AKHQ0gnNP5WDab1yqbd+Bt12CSSff88sqeDR40dvhiWOcYA8mmyjYNA= + +; span around sub.example.com., same span as foo.example.com, but it has +; just changed and it is now larger to accomodate sub.example.com. +6obgmo062d9935unjnnj2su5otaj9334.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG +6obgmo062d9935unjnnj2su5otaj9334.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. ABzruSKUUcJRNlYDqZ4UmQH/WnzeXt9Gozp3chS4cR0sqsEeGjL54eQ= + +; span around sub.example.com. from previous delegation in nsec3-chain +;7r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG +;7r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AF2FOKiIfOV9KrDTuP4RwnDI6lZnmhRHE+HAh8UHEq87uakYUEHfGUY= +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; proof that there is no DS here. +; ce: +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig53sqh NS SOA DNSKEY NSEC3PARAM RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AKHQ0gnNP5WDab1yqbd+Bt12CSSff88sqeDR40dvhiWOcYA8mmyjYNA= + +; span around sub.example.com., same span as foo.example.com, but it has +; just changed and it is now larger to accomodate sub.example.com. +6obgmo062d9935unjnnj2su5otaj9334.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG +6obgmo062d9935unjnnj2su5otaj9334.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. ABzruSKUUcJRNlYDqZ4UmQH/WnzeXt9Gozp3chS4cR0sqsEeGjL54eQ= + +; span around sub.example.com. from previous delegation in nsec3-chain +;7r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG +;7r1f0ieoutlnjc03meng9e3bn2n0o9pd.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AF2FOKiIfOV9KrDTuP4RwnDI6lZnmhRHE+HAh8UHEq87uakYUEHfGUY= + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +; refer to server one down +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.example.com. IN A +SECTION AUTHORITY +foo.example.com. IN NS ns.sub.example.com. +; sub.example.com. -> 8r1f0ieoutlnjc03meng9e3bn2n0o9pd. +; foo.example.com. -> 7obgmo062d9935unjnnj2su5otaj9334. +; example.com. -> b6fuorg741ufili49mg9j4328ig53sqg. +; proof that there is no DS here. +; ce: +b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd b6fuorg741ufili49mg9j4328ig53sqh NS SOA DNSKEY NSEC3PARAM RRSIG +b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AKHQ0gnNP5WDab1yqbd+Bt12CSSff88sqeDR40dvhiWOcYA8mmyjYNA= + +; span around sub.example.com. from previous delegation in nsec3-chain +; note it does not cover sub.example.com. +6obgmo062d9935unjnnj2su5otaj9334.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 7r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG +6obgmo062d9935unjnnj2su5otaj9334.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. ABQZ49PmeXGxUmMebbKcYI/Y3mhMdlHmshohKTbGhEsNF11OjPYmr9c= + +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.10 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR REFUSED +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.foo.example.com. IN A +SECTION ANSWER +www.foo.example.com. IN A 1.2.3.124 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.foo.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.foo.example.com. IN A +SECTION ANSWER +www.foo.example.com. IN A 1.2.3.124 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 1.2.3.123 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_wcany.rpl b/external/unbound/testdata/val_nsec3_wcany.rpl new file mode 100644 index 0000000..24bdaeb --- /dev/null +++ b/external/unbound/testdata/val_nsec3_wcany.rpl @@ -0,0 +1,162 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 wildcard qtype ANY response. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +; *.example.com. IN A 1.2.3.123 +; *.example.com. IN AAAA ::5 +; *.example.com. IN MX 10 mail.example.com. +www.example.com. 3600 IN MX 10 mail.example.com. +www.example.com. 3600 IN RRSIG MX 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFBncNdBkFSOTvqF7RtZ4bZuojWF8AhQlEv7Iw8BpQ7YkZQidRDJdx+BrGw== ;{id = 2854} +www.example.com. 3600 IN AAAA ::5 +www.example.com. 3600 IN RRSIG AAAA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCWSH0WGURY1mQwpL08SN1XF9p39AhUAgwbFk0frQC62UxhNfn4pu7iq8q4= ;{id = 2854} +www.example.com. 3600 IN A 1.2.3.123 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFCypz6dZfecwPbJ3BKrXEA7jw5kkAhRz1vprGL0idsKos8szoybKXe17Jw== ;{id = 2854} + +SECTION AUTHORITY +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +www.example.com. 3600 IN MX 10 mail.example.com. +www.example.com. 3600 IN RRSIG MX 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFBncNdBkFSOTvqF7RtZ4bZuojWF8AhQlEv7Iw8BpQ7YkZQidRDJdx+BrGw== ;{id = 2854} +www.example.com. 3600 IN AAAA ::5 +www.example.com. 3600 IN RRSIG AAAA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCWSH0WGURY1mQwpL08SN1XF9p39AhUAgwbFk0frQC62UxhNfn4pu7iq8q4= ;{id = 2854} +www.example.com. 3600 IN A 1.2.3.123 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFCypz6dZfecwPbJ3BKrXEA7jw5kkAhRz1vprGL0idsKos8szoybKXe17Jw== ;{id = 2854} +SECTION AUTHORITY +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nsec3_wcany_nodeny.rpl b/external/unbound/testdata/val_nsec3_wcany_nodeny.rpl new file mode 100644 index 0000000..2e27fb5 --- /dev/null +++ b/external/unbound/testdata/val_nsec3_wcany_nodeny.rpl @@ -0,0 +1,171 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with NSEC3 wildcard qtype ANY without denial. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +; *.example.com. IN A 1.2.3.123 +; *.example.com. IN AAAA ::5 +; *.example.com. IN MX 10 mail.example.com. +www.example.com. 3600 IN MX 10 mail.example.com. +www.example.com. 3600 IN RRSIG MX 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFBncNdBkFSOTvqF7RtZ4bZuojWF8AhQlEv7Iw8BpQ7YkZQidRDJdx+BrGw== ;{id = 2854} +www.example.com. 3600 IN AAAA ::5 +www.example.com. 3600 IN RRSIG AAAA 3 2 3600 20070926135752 20070829135752 2854 example.com. MC0CFCWSH0WGURY1mQwpL08SN1XF9p39AhUAgwbFk0frQC62UxhNfn4pu7iq8q4= ;{id = 2854} +www.example.com. 3600 IN A 1.2.3.123 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFCypz6dZfecwPbJ3BKrXEA7jw5kkAhRz1vprGL0idsKos8szoybKXe17Jw== ;{id = 2854} + +SECTION AUTHORITY +; no qname denial! +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +;s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +;s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN ANY +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx.rpl b/external/unbound/testdata/val_nx.rpl new file mode 100644 index 0000000..d0e4bb3 --- /dev/null +++ b/external/unbound/testdata/val_nx.rpl @@ -0,0 +1,155 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_failwc.rpl b/external/unbound/testdata/val_nx_failwc.rpl new file mode 100644 index 0000000..eb2f5ba --- /dev/null +++ b/external/unbound/testdata/val_nx_failwc.rpl @@ -0,0 +1,70 @@ +; config options +; The island of trust is at nsecwc.nlnetlabs.nl +server: + trust-anchor: "nsecwc.nlnetlabs.nl. 10024 IN DS 565 8 2 0C15C04C022700C8713028F6F64CF2343DE627B8F83CDA1C421C65DB 52908A2E" + val-override-date: "20181202115531" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no +stub-zone: + name: "nsecwc.nlnetlabs.nl" + stub-addr: "185.49.140.60" + +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain response with wildcard expanded NSEC record, original NSEC owner does not provide proof for QNAME. CVE-2017-15105 test. + + ; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 185.49.140.60 + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +nsecwc.nlnetlabs.nl. IN DNSKEY +SECTION ANSWER +nsecwc.nlnetlabs.nl. 3600 IN DNSKEY 257 3 8 AwEAAbTluF4BfJ/FT7Ak5a3VvYG1AqhT8FXxOsVwGTyueyE/hW+fMFMd QlLMf2Lf/gmsnFgn/p7GDmJBLlPTATmLeP3isvAZbK3MDEP2O5UjTVmt LZriTv8xfxYW6emCM54EQjWii64BFWrOeLm9zQqzyaLl53CbIIXqiacV KPteh8GX +nsecwc.nlnetlabs.nl. 3600 IN RRSIG DNSKEY 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. q3bG4e8EtvXKDcNWcyYHeQxLF9l9aJKdmeSubyN6Qc3UVHugd6t3YSxD hlD+g43y7FcdnNHdAPh/jpgC4wtOb5J+5XAuESDHwesmIXOCTJjrb+A8 r+xQK+vsY8FhNZ2r81JZ/KQ/+TcCS5tbYeNZQgENduWAxgGiw3fdrMOV xiU= +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +a.nsecwc.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +!.nsecwc.nlnetlabs.nl. 3600 IN NSEC delegation.nsecwc.nlnetlabs.nl. TXT RRSIG NSEC +!.nsecwc.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. ddy1MRbshFuFJswlouNGHsZUF/tYu8BOCztY2JuHeTMyWL7rhRKp73q/ 1RAXMwywKsynT5ioY0bMtEQszeIEn29IYaPDHieLAobjF6BMu1kO7U2/ oEBrSHM/fx28BcaM5G4nfCIm3BlhQhWvk1NDHLn3Q26x4hF/dnmFOUet aXw= +nsecwc.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +nsecwc.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. bYibpCDg1LgrnYJgVahgu94LBqLIcNs4iC0SW8LV7pTI1hhuFKbLkO2O ekPdkJAWmu/KTytf8D+cdcK6X/9VS8QCVIF5S0hraHtNezu0f1B5ztg3 7Rqy+uJSucNKoykueAsz2z43GMgO0rGH3bqM7+3ii8p2E2rhzqEtG/D3 qyY= +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.nsecwc.nlnetlabs.nl. IN TXT +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +a.nsecwc.nlnetlabs.nl. IN TXT +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_nodeny.rpl b/external/unbound/testdata/val_nx_nodeny.rpl new file mode 100644 index 0000000..311b6ab --- /dev/null +++ b/external/unbound/testdata/val_nx_nodeny.rpl @@ -0,0 +1,165 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain response missing qname denial + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +;wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +;wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_nowc.rpl b/external/unbound/testdata/val_nx_nowc.rpl new file mode 100644 index 0000000..3a5aa18 --- /dev/null +++ b/external/unbound/testdata/val_nx_nowc.rpl @@ -0,0 +1,165 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain response missing wildcard denial + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +;example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +;example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +wab.example.com. IN NSEC wzz.example.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFG5DZSEIZC088rjcB1e6sQx8nQz4AhUAtQ09tP1YYLJkhL/Wg1KV2pW4Ivk= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_nsec3_collision.rpl b/external/unbound/testdata/val_nx_nsec3_collision.rpl new file mode 100644 index 0000000..41cd0d6 --- /dev/null +++ b/external/unbound/testdata/val_nx_nsec3_collision.rpl @@ -0,0 +1,188 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain NSEC3 with a collision. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} + +; some collisions added here. Say different chains are being signed +; and some colliding NSEC3 RRs are generated. + +; closest encloser, H(example.com) = 6md8numosa4q9ugkffdo1bmm82t5j39s +; for 1 1 8 - +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 123 aabb00123456bbccdd 6md8numosa4q9ugkffdo1bmm82t5j49s A RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHndWrEEbuzezs/4lxeiMgEuUsUbAhR72gJgd/Zmhf80yoxCauw9k5OkCw== ;{id = 2854} + +; wildcard denial, H(*.example.com.) = 4f3cnt8cu22tngec382jj4gde4rb47ub +; for 1 1 0 - +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 18 - 4f3cnt8cu22tngec382jj4gde4rb87ub A RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 19 - 4f3cnt8cu22tngec382jj4gde4rb87ub A RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFDRwji51WCXJg7W/3+Jx586af5qgAhQPxHegtzu1I/QbvCNrOOON05N1rw== ;{id = 2854} + +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +; for 1 1 123 aaabb... +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 18 - s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 19 - s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 00 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 01 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 02 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 03 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFDLy4GbR8ZaKHATVJGnGxzpsuq60AhQ1/pRbXi1ZbcYohzHgWzNC50fC5A== ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 123 aabb00123456bbccdd 6md8numosa4q9ugkffdo1bmm82t5j49s A RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHndWrEEbuzezs/4lxeiMgEuUsUbAhR72gJgd/Zmhf80yoxCauw9k5OkCw== ;{id = 2854} +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 18 - 4f3cnt8cu22tngec382jj4gde4rb87ub A RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 19 - 4f3cnt8cu22tngec382jj4gde4rb87ub A RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFDRwji51WCXJg7W/3+Jx586af5qgAhQPxHegtzu1I/QbvCNrOOON05N1rw== ;{id = 2854} +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 18 - s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 19 - s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 00 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 01 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 02 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 20 03 s1unhcti19bkdr98fegs0v46mbu3t4m4 A RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFDLy4GbR8ZaKHATVJGnGxzpsuq60AhQ1/pRbXi1ZbcYohzHgWzNC50fC5A== ;{id = 2854} + +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_nsec3_params.rpl b/external/unbound/testdata/val_nx_nsec3_params.rpl new file mode 100644 index 0000000..dd3ab6b --- /dev/null +++ b/external/unbound/testdata/val_nx_nsec3_params.rpl @@ -0,0 +1,164 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with nxdomain NSEC3 several parameters. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} + +; closest encloser, H(example.com). +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCz/LkFOFcaQzVnyySW9ZoVUnxh7gIUdxyS9vqVDzo8pGhFU+3YogN2ZRk= ;{id = 2854} + +; wildcard denial, H(*.example.com.) = 4f3cnt8cu22tngec382jj4gde4rb47ub +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHS+i/OB/V/gYmS1eQTXieXIXGjsAhQQ0Ql7TW/hsUklrb0DfoyhVPG95Q== ;{id = 2854} + +; next closer name, H(www.example.com.) = s1unhcti19bkdr98fegs0v46mbu3t4m3. +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. NSEC3 1 1 8 - 6md8numosa4q9ugkffdo1bmm82t5j49s SOA NS MX DNSKEY RRSIG +6md8numosa4q9ugkffdo1bmm82t5j39s.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCz/LkFOFcaQzVnyySW9ZoVUnxh7gIUdxyS9vqVDzo8pGhFU+3YogN2ZRk= ;{id = 2854} +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. NSEC3 1 1 0 - 4f3cnt8cu22tngec382jj4gde4rb48ub A MX RRSIG +4f3cnt8cu22tngec382jj4gde4rb46ub.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MCwCFHS+i/OB/V/gYmS1eQTXieXIXGjsAhQQ0Ql7TW/hsUklrb0DfoyhVPG95Q== ;{id = 2854} +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. NSEC3 1 1 123 aabb00123456bbccdd s1unhcti19bkdr98fegs0v46mbu3t4m4 A MX RRSIG +s1unhcti19bkdr98fegs0v46mbu3t4m2.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFFSH4klZKke48dYyddYDj17gjTS0AhUAltWicpFLWqW98/Af9Qlx70MH8o4= ;{id = 2854} + +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_nx_overreach.rpl b/external/unbound/testdata/val_nx_overreach.rpl new file mode 100644 index 0000000..c63d4da --- /dev/null +++ b/external/unbound/testdata/val_nx_overreach.rpl @@ -0,0 +1,166 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with overreaching NSEC record + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFCNGZ+/OfElYQMCZ77O9Lw9rhk7PAhUAmDcvTAst6Bq83qPq3r6c/Dm1nFc= ;{id = 2854} +; wildcard denial +example.com. IN NSEC abc.example.com. SOA NS DNSKEY NSEC RRSIG +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHV2IBWyTmDJvZ+sT+WsGrJX0op/AhQkAijjnjPAtx/tNub2FAGqcexJSg== ;{id = 2854} +; qname denial +; The overreaching NSEC record; it tries to deny other .com zones! +wab.example.com. IN NSEC wzz.foo.com. A NSEC RRSIG +wab.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AEimIB2N5u7AQOb5IBMnckASZ4MlhBxziJy+zVUjLov/s7q85j8eWQc= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_pos_truncns.rpl b/external/unbound/testdata/val_pos_truncns.rpl new file mode 100644 index 0000000..57f320e --- /dev/null +++ b/external/unbound/testdata/val_pos_truncns.rpl @@ -0,0 +1,151 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with badly truncated positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. + +; Truncated, no signature for NS record. +;;;example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +;;;SECTION ADDITIONAL +;;;ns.example.com. IN A 1.2.3.4 +;;;ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_positive.rpl b/external/unbound/testdata/val_positive.rpl new file mode 100644 index 0000000..bef91f6 --- /dev/null +++ b/external/unbound/testdata/val_positive.rpl @@ -0,0 +1,153 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_positive_nosigs.rpl b/external/unbound/testdata/val_positive_nosigs.rpl new file mode 100644 index 0000000..e57836f --- /dev/null +++ b/external/unbound/testdata/val_positive_nosigs.rpl @@ -0,0 +1,181 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive response, signatures removed. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; barely valid nodata for AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DS query for subzone +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN DS +SECTION ANSWER +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_positive_wc.rpl b/external/unbound/testdata/val_positive_wc.rpl new file mode 100644 index 0000000..5384acf --- /dev/null +++ b/external/unbound/testdata/val_positive_wc.rpl @@ -0,0 +1,162 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive wildcard response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; from +; *.example.com. IN A 10.20.30.40 +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFFi0g6v/20JyUxoQq7XM0iQnaMMOAhRjhUCLZjMqR1tj2MGGOgfhb1BSyw== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +; denies www.example.com. +ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFGbrr95DAxBIRKFmr4BUm5OxXWMUAhUAsduS0iF2Pa7FagrbAPrJxZ2KPNs= ;{id = 2854} + +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFFi0g6v/20JyUxoQq7XM0iQnaMMOAhRjhUCLZjMqR1tj2MGGOgfhb1BSyw== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFGbrr95DAxBIRKFmr4BUm5OxXWMUAhUAsduS0iF2Pa7FagrbAPrJxZ2KPNs= ;{id = 2854} + +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_positive_wc_nodeny.rpl b/external/unbound/testdata/val_positive_wc_nodeny.rpl new file mode 100644 index 0000000..e87611e --- /dev/null +++ b/external/unbound/testdata/val_positive_wc_nodeny.rpl @@ -0,0 +1,169 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with positive wildcard without qname denial + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA REFUSED +SECTION QUESTION +ns.example.com. IN AAAA +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +; from +; *.example.com. IN A 10.20.30.40 +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFFi0g6v/20JyUxoQq7XM0iQnaMMOAhRjhUCLZjMqR1tj2MGGOgfhb1BSyw== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +; denies www.example.com. +; ns.example.com. IN NSEC zork.example.com. A RRSIG NSEC +; ns.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFGbrr95DAxBIRKFmr4BUm5OxXWMUAhUAsduS0iF2Pa7FagrbAPrJxZ2KPNs= ;{id = 2854} + +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_qds_badanc.rpl b/external/unbound/testdata/val_qds_badanc.rpl new file mode 100644 index 0000000..5c9f756 --- /dev/null +++ b/external/unbound/testdata/val_qds_badanc.rpl @@ -0,0 +1,223 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS query and a bad anchor +; The anchor is the wrong side of the zone cut; no parent anchor. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_qds_oneanc.rpl b/external/unbound/testdata/val_qds_oneanc.rpl new file mode 100644 index 0000000..c742cfa --- /dev/null +++ b/external/unbound/testdata/val_qds_oneanc.rpl @@ -0,0 +1,223 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS query and one anchor + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_qds_twoanc.rpl b/external/unbound/testdata/val_qds_twoanc.rpl new file mode 100644 index 0000000..dc66388 --- /dev/null +++ b/external/unbound/testdata/val_qds_twoanc.rpl @@ -0,0 +1,224 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS query and two anchors + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to DS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_refer_unsignadd.rpl b/external/unbound/testdata/val_refer_unsignadd.rpl new file mode 100644 index 0000000..90e0f04 --- /dev/null +++ b/external/unbound/testdata/val_refer_unsignadd.rpl @@ -0,0 +1,353 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + trust-anchor: "example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}" + val-override-date: "20070916134226" + access-control: 127.0.0.1 allow_snoop + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with a referral with unsigned additional +; but the additional record is from a signed zone, +; and a proper proof for no DS or DSNKEY types is forthcoming. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +; Skip .com, to provide unsigned referral A record for ns.example.net +; and go straight to example.com. +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.net IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.net IN A 1.2.3.5 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFEsWNXjGDFwH/0NGClonWUQlBaiFAhR/dt0asVj8M0VKs7PdTEKN/Y9i5w== ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to example.com. DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFEsWNXjGDFwH/0NGClonWUQlBaiFAhR/dt0asVj8M0VKs7PdTEKN/Y9i5w== ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 11.12.13.14 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFC6+BbFcL95vH6SOhMLGotcBospIAhUAhjfof+1VY5GsCp5b9UOD7UydBzI= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFEsWNXjGDFwH/0NGClonWUQlBaiFAhR/dt0asVj8M0VKs7PdTEKN/Y9i5w== ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; example.com zone in ns.example.net. +; response to example.com. DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFEsWNXjGDFwH/0NGClonWUQlBaiFAhR/dt0asVj8M0VKs7PdTEKN/Y9i5w== ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 11.12.13.14 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFC6+BbFcL95vH6SOhMLGotcBospIAhUAhjfof+1VY5GsCp5b9UOD7UydBzI= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; example.net zone in ns.example.net. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; deny DS and DNSKEY types +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN DS +SECTION AUTHORITY +example.net. IN SOA ns-pri.ripe.net. ops.ripe.net. 2007092101 3600 7200 1209600 7200 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. E1T+LAsAk7rtA6mnKRlgca5Lk+NJYUNNkfco1CrUp5IZZ1+QL7u7CINQBcndJkvoBwKhdVI8rz2LLW19wIywTw== ;{id = 30899} +ns.example.net IN NSEC ns-new.example.net. A AAAA RRSIG NSEC +ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. HLkPBWA8Hstub8e/zdp/A8xyI6+fnnMsA9oiZ20VBuSTaBknX0SXmVulNhVGfdmz9fYmYFUr1zjqvPFG+ErO8A== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN DNSKEY +SECTION AUTHORITY +example.net. IN SOA ns-pri.ripe.net. ops.ripe.net. 2007092101 3600 7200 1209600 7200 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. E1T+LAsAk7rtA6mnKRlgca5Lk+NJYUNNkfco1CrUp5IZZ1+QL7u7CINQBcndJkvoBwKhdVI8rz2LLW19wIywTw== ;{id = 30899} +ns.example.net IN NSEC ns-new.example.net. A RRSIG NSEC +ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. fAbDxuMP6lMqi71Wa9nsByG7buoJpfxyQhjps6HXOPzOC24UCCjdvZfZltlRy7Yrfrs28MjHwYEmHFmCeFpfPw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN SOA ns-pri.ripe.net. ops.ripe.net. 2007092101 3600 7200 1209600 7200 +example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. E1T+LAsAk7rtA6mnKRlgca5Lk+NJYUNNkfco1CrUp5IZZ1+QL7u7CINQBcndJkvoBwKhdVI8rz2LLW19wIywTw== ;{id = 30899} +ns.example.net IN NSEC ns-new.example.net. A RRSIG NSEC +ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. fAbDxuMP6lMqi71Wa9nsByG7buoJpfxyQhjps6HXOPzOC24UCCjdvZfZltlRy7Yrfrs28MjHwYEmHFmCeFpfPw== ;{id = 30899} +ENTRY_END + +RANGE_END + +; prime cache with example.com. NS rrset. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 11.12.13.14 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFC6+BbFcL95vH6SOhMLGotcBospIAhUAhjfof+1VY5GsCp5b9UOD7UydBzI= ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; test nonrec referral validation +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +bla.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AD DO NOERROR +SECTION QUESTION +bla.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns.example.net. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926135752 20070829135752 2854 example.com. MCwCFEsWNXjGDFwH/0NGClonWUQlBaiFAhR/dt0asVj8M0VKs7PdTEKN/Y9i5w== ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_referd.rpl b/external/unbound/testdata/val_referd.rpl new file mode 100644 index 0000000..dfc82e1 --- /dev/null +++ b/external/unbound/testdata/val_referd.rpl @@ -0,0 +1,175 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + harden-referral-path: no + access-control: 127.0.0.1 allow_snoop + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cache referral + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AD8qRJvXxOtmSuy8Ogyo0roA294qOtNT2E1m05kSU0jbxN4qLYn0OmU= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +; first ask for +CD and get the data in the cache. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 3 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA CD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; now the data is in the cache, validate a referral from cache +; note, no recursion desired +STEP 5 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +bla.example.com. IN A +ENTRY_END + +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AD DO NOERROR +SECTION QUESTION +bla.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_referglue.rpl b/external/unbound/testdata/val_referglue.rpl new file mode 100644 index 0000000..a9714d1 --- /dev/null +++ b/external/unbound/testdata/val_referglue.rpl @@ -0,0 +1,300 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + directory: "" + access-control: 127.0.0.1 allow_snoop + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with cache referral with unsigned glue + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END + +; referral, for all types +ENTRY_BEGIN +MATCH opcode qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns2.sub.example.com. IN A +SECTION AUTHORITY +sub.example.com. IN NS ns2.sub.example.com. +sub.example.com. IN NSEC tlib.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. ABdrfr+eKT1syk2qFlV01wLOqQdvNMpEtPmGAM6CrtyQAje/ddXSi9A= ;{id = 2854} +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +; This is from an unsigned subzone +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFEG4WWIYBDknWlr2d8S42UZHRuByAhRgnDELUAccGZTCVzG+xl/locivpA== ;{id = 2854} +ENTRY_END +RANGE_END + +; ns2.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 100.200.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +; This is from an unsigned subzone +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFEG4WWIYBDknWlr2d8S42UZHRuByAhRgnDELUAccGZTCVzG+xl/locivpA== ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns2.sub.example.com. IN A +SECTION ANSWER +ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns2.sub.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + +RANGE_END + +; first ask for +CD and get the data in the cache. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD CD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 3 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA CD NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.sub.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +; already validated and thus stripped from the answer. +;ns2.sub.example.com. IN A 100.200.30.40 +ENTRY_END + +; now the data is in the cache, validate a referral from cache +; note, no recursion desired +STEP 5 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +bla.example.com. IN A +ENTRY_END + +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AD DO NOERROR +SECTION QUESTION +bla.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN NS ns2.sub.example.com. +example.com. 3600 IN RRSIG NS DSA 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCiyp/3hxwKS5QZPnjk36t16s4QTwIUI0m+MBVOAPacANrXXFKieyZd39o= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_rrsig.rpl b/external/unbound/testdata/val_rrsig.rpl new file mode 100644 index 0000000..d9684e4 --- /dev/null +++ b/external/unbound/testdata/val_rrsig.rpl @@ -0,0 +1,169 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with qtype RRSIG response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query for A +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END + +; RRSIG query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN RRSIG +SECTION ANSWER +;www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN RRSIG +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN RRSIG +SECTION ANSWER +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_secds.rpl b/external/unbound/testdata/val_secds.rpl new file mode 100644 index 0000000..6178627 --- /dev/null +++ b/external/unbound/testdata/val_secds.rpl @@ -0,0 +1,214 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with secure delegation + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_secds_nosig.rpl b/external/unbound/testdata/val_secds_nosig.rpl new file mode 100644 index 0000000..453cfa6 --- /dev/null +++ b/external/unbound/testdata/val_secds_nosig.rpl @@ -0,0 +1,232 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with no signatures after secure delegation + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; barely valid nodata for AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +;ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; barely valid nodata for AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.sub.example.com. IN AAAA +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +;ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.sub.example.com. IN A +SECTION ANSWER +ns.sub.example.com. IN A 1.2.3.6 +;ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +;sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +;sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +;ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +;www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_spurious_ns.rpl b/external/unbound/testdata/val_spurious_ns.rpl new file mode 100644 index 0000000..0f9d843 --- /dev/null +++ b/external/unbound/testdata/val_spurious_ns.rpl @@ -0,0 +1,154 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with spurious unsigned NS in auth section + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +;example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +; removed by spurious NS record removal code +;;example.com. IN NS ns.example.com. +;;example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_stub_noroot.rpl b/external/unbound/testdata/val_stub_noroot.rpl new file mode 100644 index 0000000..07fb0e3 --- /dev/null +++ b/external/unbound/testdata/val_stub_noroot.rpl @@ -0,0 +1,85 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + trust-anchor: "lp0.eu. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" + val-override-date: "20100913111500" + ; the dlv anchor is completely ignored, but here to test that. + dlv-anchor: "dlv.isc.org. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 81.187.81.187 +stub-zone: + name: "lp0.eu" + stub-addr: 81.2.80.65 + stub-prime: no +CONFIG_END + +SCENARIO_BEGIN Test validation of stub zone without root prime. + +; this server does not respond. (for the root) +RANGE_BEGIN 0 100 + ADDRESS 81.187.81.187 +ENTRY_BEGIN +MATCH +ADJUST copy_id copy_query +REPLY QR SERVFAIL +SECTION QUESTION +. IN NS +ENTRY_END +RANGE_END + +; lp0.eu server +RANGE_BEGIN 0 100 + ADDRESS 81.2.80.65 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +lp0.eu. IN DNSKEY +SECTION ANSWER +lp0.eu. 3600 IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30900 (ksk), size = 512b} +lp0.eu. 3600 IN RRSIG DNSKEY 5 2 3600 20101013111500 20100909111500 30900 lp0.eu. zWYOT1zmB2k7hMl7mke7k1UNp4lDveUxi2EnF0tW++j2/qJopiAAcFHBo2GOo88jHcLWycurf0Qo+YGXfFbpEg== ;{id = 30900} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +proxima.lp0.eu. IN A +SECTION ANSWER +proxima.lp0.eu. IN A 81.2.80.65 +proxima.lp0.eu. 3600 IN RRSIG A 5 3 3600 20101013111500 20100909111500 30900 lp0.eu. xwS3PLSlxh500pDYh/t6fnLzxQAra6n3nhzk4fVqLzwmneBIfcx4F/vO44wRzXSprz1UbMkVUcruTbQYlLFBEg== ;{id = 30900} +SECTION AUTHORITY +lp0.eu. IN NS proxima.lp0.eu. +lp0.eu. 3600 IN RRSIG NS 5 2 3600 20101013111500 20100909111500 30900 lp0.eu. KM7Zfwc1b0Ay8Ezer0ZAERPbmgGzKIrTfZMxzXzSkVx5DWirTtdgPTNVG/y9fkN4tUARNhElN2eb0ufb04Hdgw== ;{id = 30900} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +proxima.lp0.eu. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +proxima.lp0.eu. IN A +SECTION ANSWER +proxima.lp0.eu. IN A 81.2.80.65 +proxima.lp0.eu. 3600 IN RRSIG A 5 3 3600 20101013111500 20100909111500 30900 lp0.eu. xwS3PLSlxh500pDYh/t6fnLzxQAra6n3nhzk4fVqLzwmneBIfcx4F/vO44wRzXSprz1UbMkVUcruTbQYlLFBEg== ;{id = 30900} +SECTION AUTHORITY +lp0.eu. IN NS proxima.lp0.eu. +lp0.eu. 3600 IN RRSIG NS 5 2 3600 20101013111500 20100909111500 30900 lp0.eu. KM7Zfwc1b0Ay8Ezer0ZAERPbmgGzKIrTfZMxzXzSkVx5DWirTtdgPTNVG/y9fkN4tUARNhElN2eb0ufb04Hdgw== ;{id = 30900} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_stubds.rpl b/external/unbound/testdata/val_stubds.rpl new file mode 100644 index 0000000..7e1dfed --- /dev/null +++ b/external/unbound/testdata/val_stubds.rpl @@ -0,0 +1,230 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +stub-zone: + name: "sub.example.com" + stub-addr: 1.2.3.6 +CONFIG_END + +SCENARIO_BEGIN Test stub with DS query +; The stub zone is linked validly with a DS to the public internet zone. +; unbound just has to be able to ask the DS from the right server (not +; from the stub). + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for DS of sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response for qtype DS. This is not available here. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR SERVFAIL +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ta_algo_dnskey.rpl b/external/unbound/testdata/val_ta_algo_dnskey.rpl new file mode 100644 index 0000000..a1f1ed5 --- /dev/null +++ b/external/unbound/testdata/val_ta_algo_dnskey.rpl @@ -0,0 +1,184 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}" + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with multiple algorithm trust anchor + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. AKIIYDOGHogglFqJK94ZtOnF7EfGikgAyloMNRSMCrQgFaFkmcOyjrc= ;{id = 2854} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20070926134150 20070829134150 30899 example.com. J55fsz1GGMnngc4r50xvXDUdaVMlfcLKLVsfMhwNLF+ERac5XV/lLRAc/aSER+qQdsSo0CrjYjy1wat7YQpDAA== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ta_algo_dnskey_dp.rpl b/external/unbound/testdata/val_ta_algo_dnskey_dp.rpl new file mode 100644 index 0000000..1dd48bf --- /dev/null +++ b/external/unbound/testdata/val_ta_algo_dnskey_dp.rpl @@ -0,0 +1,185 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}" + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + harden-algo-downgrade: no + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with multiple algorithm trust anchor without harden + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. AKIIYDOGHogglFqJK94ZtOnF7EfGikgAyloMNRSMCrQgFaFkmcOyjrc= ;{id = 2854} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20070926134150 20070829134150 30899 example.com. J55fsz1GGMnngc4r50xvXDUdaVMlfcLKLVsfMhwNLF+ERac5XV/lLRAc/aSER+qQdsSo0CrjYjy1wat7YQpDAA== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ta_algo_missing.rpl b/external/unbound/testdata/val_ta_algo_missing.rpl new file mode 100644 index 0000000..a905c22 --- /dev/null +++ b/external/unbound/testdata/val_ta_algo_missing.rpl @@ -0,0 +1,175 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}" + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + trust-anchor: "example.com. 3600 IN DS 30899 7 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + harden-algo-downgrade: yes + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with multiple algorithm missing one + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. AKIIYDOGHogglFqJK94ZtOnF7EfGikgAyloMNRSMCrQgFaFkmcOyjrc= ;{id = 2854} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20070926134150 20070829134150 30899 example.com. J55fsz1GGMnngc4r50xvXDUdaVMlfcLKLVsfMhwNLF+ERac5XV/lLRAc/aSER+qQdsSo0CrjYjy1wat7YQpDAA== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_ta_algo_missing_dp.rpl b/external/unbound/testdata/val_ta_algo_missing_dp.rpl new file mode 100644 index 0000000..4709407 --- /dev/null +++ b/external/unbound/testdata/val_ta_algo_missing_dp.rpl @@ -0,0 +1,188 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}" + trust-anchor: "example.com. 3600 IN DS 30899 5 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + trust-anchor: "example.com. 3600 IN DS 30899 7 1 d4bf9d2e10f6d76840d42ef5913022abcd0bf512" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + harden-algo-downgrade: no + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with multiple algorithm missing one + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 512b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. AKIIYDOGHogglFqJK94ZtOnF7EfGikgAyloMNRSMCrQgFaFkmcOyjrc= ;{id = 2854} +example.com. 3600 IN RRSIG DNSKEY 5 2 3600 20070926134150 20070829134150 30899 example.com. J55fsz1GGMnngc4r50xvXDUdaVMlfcLKLVsfMhwNLF+ERac5XV/lLRAc/aSER+qQdsSo0CrjYjy1wat7YQpDAA== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 3600 IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. JNWECShNE+nCLQwOXJJ3xpUkh2G+FCh5nk8uYAHIVQRse/BIvCMSlvRrtVyw9RnXvk5RR2bEgN0pRdLWW7ug5Q== ;{id = 30899} +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} + +SECTION AUTHORITY +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +example.com. 3600 IN RRSIG NS 5 2 3600 20070926134150 20070829134150 30899 example.com. YTqtYba73HIOQuPr5oDyIX9pfmz1ybEBjwlD/jUgcPmFINUOZ9FeqG6ywgRKwn4AizkKTK00p1sxZYMKxl91wg== ;{id = 30899} + +SECTION ADDITIONAL +ns.example.com. 3600 IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ns.example.com. 3600 IN RRSIG A 5 3 3600 20070926134150 20070829134150 30899 example.com. Dn1ziMKrc3NdJkSv8g61Y9WNk3+BAuwCwnYzAZiHmkejkSCPViLJN7+f4Conp9l8LkTl50ZnLgoYrrUYNhMj6w== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_twocname.rpl b/external/unbound/testdata/val_twocname.rpl new file mode 100644 index 0000000..6756787 --- /dev/null +++ b/external/unbound/testdata/val_twocname.rpl @@ -0,0 +1,134 @@ +; config options +server: + trust-anchor: "ORG. DS 21366 7 1 E6C1716CFB6BDC84E84CE1AB5510DAC69173B5B2" + val-override-date: "20091116100204" + fake-sha1: yes + trust-anchor-signaling: no + +forward-zone: + name: "." + forward-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test validator with unsigned CNAME to signed CNAME to data + +RANGE_BEGIN 0 100 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +k.root-servers.org. IN A +SECTION ANSWER +k.root-servers.org. 3600 IN CNAME www.ripe.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.ripe.net. IN A +SECTION ANSWER +www.ripe.net. 900 IN CNAME aquila-www.ripe.net. +www.ripe.net. 900 IN RRSIG CNAME 5 3 900 20091216060007 20091116060007 19386 ripe.net. NjCpVZC/LLnoV1pa91GSL9SP65n7eFKoe/OcuKzUPHumXIDrXnE23F1rNfbjYpVrQDEsG6iInI7Edh2MCS4NI4tLwrytEDgCX7ZnqIMIOV2/gJa5ZkLlmVT71Agnfi788q7ozEq14zlhY+brD5kyBiEcfOhH/qkX+zJuGdt1AcQwMxYn/GQ0Z32k5ulBnzrIFWObBksO ;{id = 19386} +SECTION AUTHORITY +ripe.net. 172800 IN NS ns3.nic.fr. +ripe.net. 172800 IN NS sunic.sunet.se. +ripe.net. 172800 IN NS ns-pri.ripe.net. +ripe.net. 172800 IN NS sns-pb.isc.org. +ripe.net. 172800 IN RRSIG NS 5 2 172800 20091216060007 20091116060007 19386 ripe.net. Km2zmkvPOjRddE+SlFBokj2QVroW/R8D2C6u6uCtFI5HVLZTV+oxrIw1ZYYWwe/Jf2CpVBzh3P6iHtWvojM8DHhfkO84wsO33ssqzIzq7e8nDOinqeeGB7yyl642xHCt0jObRewX1hU6Deubs42pFZmO6YKL8Tx6Jb5oe2yyoVebv4bX2qLoEPFw9plE0VavfD397Y4g ;{id = 19386} +SECTION ADDITIONAL +ns-pri.ripe.net. 172800 IN A 193.0.0.195 +ns-pri.ripe.net. 172800 IN AAAA 2001:610:240:0:53::3 +ns-pri.ripe.net. 172800 IN RRSIG A 5 3 172800 20091216060007 20091116060007 19386 ripe.net. BRxWwUNDivDxXnrPlj3/VPUBrf/bk8tKljRG0pQ/7XucTUMR9ae1huNVTC+FTrfZjggqU9/PZlyJ9TwI1lp7J1lEua1mByCHObzHlO7Cq/m7sjZ9cFvpIm6ke2c+xxjs3X8mHsiyftSsCCSvB43DLhgcJtib6QZlCpFxa4Y3sg1fx+1GENrbKlcuJGGqkdrAw0irvKEv ;{id = 19386} +ns-pri.ripe.net. 172800 IN RRSIG AAAA 5 3 172800 20091216060007 20091116060007 19386 ripe.net. Ngd/GLGHakPj1A4rna19OPFpMPVSgCj7CgBtsuwjGwurMFEje4F4miNleazkdQKqe2kRMpB+Kg2OBnnRZpjR2PR9ZjRv6rss6/DL5qMRkDH6Xghwl5ZZzIONTgRSZlHKaHQZ7BHR2azZTo9wupK7VuE7f7EWmjBc5SDNiNOfwuEujUg2DvO1JOv16P2JLeQ3Vst4ovxW ;{id = 19386} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +aquila-www.ripe.net. IN A +SECTION ANSWER +aquila-www.ripe.net. 600 IN A 193.0.19.25 +aquila-www.ripe.net. 600 IN RRSIG A 5 3 600 20091216060007 20091116060007 19386 ripe.net. RuPSSATpwiS5hY4WTt7x9Hzq1tQ+ttWgq0hpgJPSorqJHlLbvgucXd8LhrcIFmBm/K/3sj9UYP1viCjbqfvjGToUdv+g4z9KrNq3FoAal6WSyTBgxAgvnHjNi9gRTZBm4O+rUQCKUD8XwlG6r3SKo6iOeSM84CHeQkGjsp5GNxpGnIagWkr5BzjKhaaUc+i82vk1SrNa ;{id = 19386} +SECTION AUTHORITY +ripe.net. 172800 IN NS ns3.nic.fr. +ripe.net. 172800 IN NS sunic.sunet.se. +ripe.net. 172800 IN NS ns-pri.ripe.net. +ripe.net. 172800 IN NS sns-pb.isc.org. +ripe.net. 172800 IN RRSIG NS 5 2 172800 20091216060007 20091116060007 19386 ripe.net. Km2zmkvPOjRddE+SlFBokj2QVroW/R8D2C6u6uCtFI5HVLZTV+oxrIw1ZYYWwe/Jf2CpVBzh3P6iHtWvojM8DHhfkO84wsO33ssqzIzq7e8nDOinqeeGB7yyl642xHCt0jObRewX1hU6Deubs42pFZmO6YKL8Tx6Jb5oe2yyoVebv4bX2qLoEPFw9plE0VavfD397Y4g ;{id = 19386} +SECTION ADDITIONAL +ns-pri.ripe.net. 172800 IN A 193.0.0.195 +ns-pri.ripe.net. 172800 IN AAAA 2001:610:240:0:53::3 +ns-pri.ripe.net. 172800 IN RRSIG A 5 3 172800 20091216060007 20091116060007 19386 ripe.net. BRxWwUNDivDxXnrPlj3/VPUBrf/bk8tKljRG0pQ/7XucTUMR9ae1huNVTC+FTrfZjggqU9/PZlyJ9TwI1lp7J1lEua1mByCHObzHlO7Cq/m7sjZ9cFvpIm6ke2c+xxjs3X8mHsiyftSsCCSvB43DLhgcJtib6QZlCpFxa4Y3sg1fx+1GENrbKlcuJGGqkdrAw0irvKEv ;{id = 19386} +ns-pri.ripe.net. 172800 IN RRSIG AAAA 5 3 172800 20091216060007 20091116060007 19386 ripe.net. Ngd/GLGHakPj1A4rna19OPFpMPVSgCj7CgBtsuwjGwurMFEje4F4miNleazkdQKqe2kRMpB+Kg2OBnnRZpjR2PR9ZjRv6rss6/DL5qMRkDH6Xghwl5ZZzIONTgRSZlHKaHQZ7BHR2azZTo9wupK7VuE7f7EWmjBc5SDNiNOfwuEujUg2DvO1JOv16P2JLeQ3Vst4ovxW ;{id = 19386} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ORG. IN DNSKEY +SECTION ANSWER +ORG. 900 IN DNSKEY 256 3 7 AwEAAdV7bl0omw53nFPoUZSowSTSTDpQO4K8th19coBjlS0iMIWb0NF5YzGkoeditMS8ZLkgc9wS9txeH6XGHzwqJNc5eQcQEOasmC7vqaopoeN/GP/ZkUMbtNTcN1qzS9WzJ4gToxeNCHkAc7LZGh5XY/v1n599hk/ifotV/ZDGhN+H ;{id = 5273 (zsk), size = 1024b} +ORG. 900 IN DNSKEY 257 3 7 AwEAAYpYfj3aaRzzkxWQqMdl7YExY81NdYSv+qayuZDodnZ9IMh0bwMcYaVUdzNAbVeJ8gd6jq1sR3VvP/SR36mmGssbV4Udl5ORDtqiZP2TDNDHxEnKKTX+jWfytZeT7d3AbSzBKC0v7uZrM6M2eoJnl6id66rEUmQC2p9DrrDg9F6tXC9CD/zC7/y+BNNpiOdnM5DXk7HhZm7ra9E7ltL13h2mx7kEgU8e6npJlCoXjraIBgUDthYs48W/sdTDLu7N59rjCG+bpil+c8oZ9f7NR3qmSTpTP1m86RqUQnVErifrH8KjDqL+3wzUdF5ACkYwt1XhPVPU+wSIlzbaAQN49PU= ;{id = 21366 (ksk), size = 2048b} +ORG. 900 IN DNSKEY 257 3 7 AwEAAZTjbIO5kIpxWUtyXc8avsKyHIIZ+LjC2Dv8naO+Tz6X2fqzDC1bdq7HlZwtkaqTkMVVJ+8gE9FIreGJ4c8G1GdbjQgbP1OyYIG7OHTc4hv5T2NlyWr6k6QFz98Q4zwFIGTFVvwBhmrMDYsOTtXakK6QwHovA1+83BsUACxlidpwB0hQacbD6x+I2RCDzYuTzj64Jv0/9XsX6AYV3ebcgn4hL1jIR2eJYyXlrAoWxdzxcW//5yeL5RVWuhRxejmnSVnCuxkfS4AQ485KH2tpdbWcCopLJZs6tw8q3jWcpTGzdh/v3xdYfNpQNcPImFlxAun3BtORPA2r8ti6MNoJEHU= ;{id = 9795 (ksk), size = 2048b} +ORG. 900 IN DNSKEY 256 3 7 AwEAAaT7yoAEj5kX1rW40gMxUgPYGIc6hIPXihtK44jq6UQlZxTeFdsNX6aNaFpSq9pbI19y4JfQvCPPjw2248fwNzgwxfkdyRk7vzKagad2hs8wQ/C7vYuTUoTjrOBRwnsEHix+jYgKZH+lX1ZRKo/YXyMz05KWH+3j5y0VSrKBcdBZ ;{id = 53990 (zsk), size = 1024b} +ORG. 900 IN RRSIG DNSKEY 7 1 900 20091123154522 20091109144522 5273 org. zHcY20bnIBzsl1CXmZdtt8PWPy079Ic3dQ/pLH2z1yCoC+kWGzLIlU/EcWa0rrQzqc9oK+v63xzXFoib3LewcijiGmKYtFcyi3HGfVdJrDFIxmN52x4pZerVZq9NA/FLQ8ZrobkVgYiEAmjMU1OesPPZPwwlPRdSG421q3o3N4Q= ;{id = 5273} +ORG. 900 IN RRSIG DNSKEY 7 1 900 20091123154522 20091109144522 21366 org. Xlh0UQl+Ldig/jBS7Ty9rfeUztG5P7Brjr/Du+XlC7KjUkk/gNfpxgPmIKuA3ZLwgwTvEF6i7CD7b5gEKKC2P8Y5kQjKcjcDZl0+5W1IfpFF1Ka546erCy5cznXT23W5bzODNiraMs7KwvwMlD3LeOCiBeldPKeZ0yxWI/3YXmwAbkky4MApX9khSnilSaewcVSzQM/iOVuCR/+5esNvcKqjgWbT3M4vorzjc7YxVxF2BTgxybDOn4OkWvdeSlDiIVVS+VtxK0U7yIc59mpE7WxoRLtw/Qkd8bjh+KF5izQO2Q/7VxhkJ6pBxxumHwQahlgOQYxWMLqUc/EZnXSQpQ== ;{id = 21366} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +root-servers.org. IN DS +SECTION ANSWER +SECTION AUTHORITY +h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86399 IN NSEC3 1 1 1 d399eaab h9rsfb7fpf2l8hg35cmpc765tdk23rp6 NS SOA RRSIG DNSKEY NSEC3PARAM ; flags: optout +h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 86399 IN RRSIG NSEC3 7 2 86400 20091130090148 20091116080148 5273 org. FL7e/4Lhihh9LKAPDKNmlvEHbjkPY/6GLhtVMWtbSfBS8rAaHuInCD/tbQxCmFmT6e3HXHXkUcjC7BSDFPnlhtB8P2iNjvkdZJ72jVTXDY1P6LuK/OJhRT8DjFlHlvjdNgS5/0HCuGYU5A1GPkWGx1waUmblryPApb8HNSAmdYA= ;{id = 5273} +i8i48ibuph5kgh999ld485qnt660qdag.org. 86399 IN NSEC3 1 1 1 d399eaab i94atlaqkvkoms2q45m5msds8r3414ft A RRSIG ; flags: optout +i8i48ibuph5kgh999ld485qnt660qdag.org. 86399 IN RRSIG NSEC3 7 2 86400 20091125010858 20091111000858 5273 org. WrWFYs2FuzPRYh+hgc8B3ZKL6jiMee2F1FsPNVEx9Ojv76BMELWomI0Zcd90NZbs7kvs5FP1G79s9o3oQHeWVfa6as8Wi6RLn97nX3FVqYI39r7GZnoKj8QGrCsRCatqK4Lsh426X0vzR5CwIA14/XL1w6UQ1KuTHlIu51RidA4= ;{id = 5273} +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +k.root-servers.org. IN A +ENTRY_END +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +k.root-servers.org. IN A +SECTION ANSWER +k.root-servers.org. IN CNAME www.ripe.net. +www.ripe.net. 900 IN CNAME aquila-www.ripe.net. +www.ripe.net. 900 IN RRSIG CNAME 5 3 900 20091216060007 20091116060007 19386 ripe.net. NjCpVZC/LLnoV1pa91GSL9SP65n7eFKoe/OcuKzUPHumXIDrXnE23F1rNfbjYpVrQDEsG6iInI7Edh2MCS4NI4tLwrytEDgCX7ZnqIMIOV2/gJa5ZkLlmVT71Agnfi788q7ozEq14zlhY+brD5kyBiEcfOhH/qkX+zJuGdt1AcQwMxYn/GQ0Z32k5ulBnzrIFWObBksO ;{id = 19386} +aquila-www.ripe.net. 600 IN A 193.0.19.25 +aquila-www.ripe.net. 600 IN RRSIG A 5 3 600 20091216060007 20091116060007 19386 ripe.net. RuPSSATpwiS5hY4WTt7x9Hzq1tQ+ttWgq0hpgJPSorqJHlLbvgucXd8LhrcIFmBm/K/3sj9UYP1viCjbqfvjGToUdv+g4z9KrNq3FoAal6WSyTBgxAgvnHjNi9gRTZBm4O+rUQCKUD8XwlG6r3SKo6iOeSM84CHeQkGjsp5GNxpGnIagWkr5BzjKhaaUc+i82vk1SrNa ;{id = 19386} +SECTION AUTHORITY +ripe.net. 172800 IN NS ns3.nic.fr. +ripe.net. 172800 IN NS sunic.sunet.se. +ripe.net. 172800 IN NS ns-pri.ripe.net. +ripe.net. 172800 IN NS sns-pb.isc.org. +ripe.net. 172800 IN RRSIG NS 5 2 172800 20091216060007 20091116060007 19386 ripe.net. Km2zmkvPOjRddE+SlFBokj2QVroW/R8D2C6u6uCtFI5HVLZTV+oxrIw1ZYYWwe/Jf2CpVBzh3P6iHtWvojM8DHhfkO84wsO33ssqzIzq7e8nDOinqeeGB7yyl642xHCt0jObRewX1hU6Deubs42pFZmO6YKL8Tx6Jb5oe2yyoVebv4bX2qLoEPFw9plE0VavfD397Y4g ;{id = 19386} +SECTION ADDITIONAL +ns-pri.ripe.net. 172800 IN A 193.0.0.195 +ns-pri.ripe.net. 172800 IN AAAA 2001:610:240:0:53::3 +ns-pri.ripe.net. 172800 IN RRSIG A 5 3 172800 20091216060007 20091116060007 19386 ripe.net. BRxWwUNDivDxXnrPlj3/VPUBrf/bk8tKljRG0pQ/7XucTUMR9ae1huNVTC+FTrfZjggqU9/PZlyJ9TwI1lp7J1lEua1mByCHObzHlO7Cq/m7sjZ9cFvpIm6ke2c+xxjs3X8mHsiyftSsCCSvB43DLhgcJtib6QZlCpFxa4Y3sg1fx+1GENrbKlcuJGGqkdrAw0irvKEv ;{id = 19386} +ns-pri.ripe.net. 172800 IN RRSIG AAAA 5 3 172800 20091216060007 20091116060007 19386 ripe.net. Ngd/GLGHakPj1A4rna19OPFpMPVSgCj7CgBtsuwjGwurMFEje4F4miNleazkdQKqe2kRMpB+Kg2OBnnRZpjR2PR9ZjRv6rss6/DL5qMRkDH6Xghwl5ZZzIONTgRSZlHKaHQZ7BHR2azZTo9wupK7VuE7f7EWmjBc5SDNiNOfwuEujUg2DvO1JOv16P2JLeQ3Vst4ovxW ;{id = 19386} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unalgo_anchor.rpl b/external/unbound/testdata/val_unalgo_anchor.rpl new file mode 100644 index 0000000..24dcbaf --- /dev/null +++ b/external/unbound/testdata/val_unalgo_anchor.rpl @@ -0,0 +1,152 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 208 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with unsupported algorithm trust anchor + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unalgo_dlv.rpl b/external/unbound/testdata/val_unalgo_dlv.rpl new file mode 100644 index 0000000..e78226f --- /dev/null +++ b/external/unbound/testdata/val_unalgo_dlv.rpl @@ -0,0 +1,283 @@ +; config options +; The island of trust is at example.com (the DLV repository) +server: + dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with unknown algorithm DLV anchor +; positive response for DLV. +; but only has unknown algos +; have to treat zone as insecure + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +net. IN A +SECTION AUTHORITY +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net. IN NS +SECTION ANSWER +net. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.net. IN A +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; DLV query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net.example.com. IN DLV +SECTION ANSWER +; algo 208 is unknown +example.net.example.com. 3600 IN DLV 30899 208 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. AFBU1dN/KstcLfQQzy7ZKvPq+2hQg7D6QynqgwI3f8envPQGj782/NA= ;{id = 2854} +;example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +;example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +net.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NXDOMAIN +SECTION QUESTION +com.example.com. IN DLV +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} +example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} +ENTRY_END + +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +; DS RR is +; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix +; DNSKEY prime query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN DNSKEY +SECTION ANSWER +example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; NS query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +; www.example.net query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.net. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.net. IN A +SECTION ANSWER +www.example.net. 3600 IN A 10.20.30.40 +www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} +SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.5 +ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unalgo_ds.rpl b/external/unbound/testdata/val_unalgo_ds.rpl new file mode 100644 index 0000000..65db9b2 --- /dev/null +++ b/external/unbound/testdata/val_unalgo_ds.rpl @@ -0,0 +1,203 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with unknown algorithm delegation +; DS has unknown algo only. +; so subzone has to be treated as unsigned. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +; algorithm 208 is unknown. +sub.example.com. 3600 IN DS 30899 208 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AEMPMNVJAygL0TyRUU+MVgP4FA7jSIpVj6628IdLe7eY3OwWp3hUTnU= ;{id = 2854} +;sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +;sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +www.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899} +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unsec_cname.rpl b/external/unbound/testdata/val_unsec_cname.rpl new file mode 100644 index 0000000..ad02dae --- /dev/null +++ b/external/unbound/testdata/val_unsec_cname.rpl @@ -0,0 +1,362 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with DS, unsec, cname sequence. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to c.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.c.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +c.example.com. IN NS ns.c.example.com. +c.example.com. IN NSEC d.example.com. NS RRSIG NSEC +c.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDQ1xBqQ8Yxy7d7MbfAOg9g+dInHAhUAgP2w61bvME+hLWFiNg42Ny02/vo= ;{id = 2854} +SECTION ADDITIONAL +ns.c.example.com. IN A 1.2.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +c.example.com. IN NSEC d.example.com. NS RRSIG NSEC +c.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFDQ1xBqQ8Yxy7d7MbfAOg9g+dInHAhUAgP2w61bvME+hLWFiNg42Ny02/vo= ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +sub.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to DNSKEY priming query +; sub.example.com. 3600 IN DS 30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DNSKEY +SECTION ANSWER +sub.example.com. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} +sub.example.com. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899} +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ns.sub.example.com. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899} +ENTRY_END + +; response to query of interest +; another delegation, validated unsecure. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +b.sub.example.com. IN NS ns.b.sub.example.com. +b.sub.example.com. IN NSEC c.sub.example.com. NS NSEC RRSIG +b.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. KPdURTUrbQvc6OXtDZaH3+14uO2qPUPIFO86aTNZ/Ujy3d2RMSB7fkSSulDO6QDSBEUhr9WgbQr0/YoljCBirA== ;{id = 30899} +SECTION ADDITIONAL +ns.b.sub.example.com. IN A 1.2.3.7 +ENTRY_END + +; b DS query. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.sub.example.com. IN DS +SECTION AUTHORITY +b.sub.example.com. IN NSEC c.sub.example.com. NS NSEC RRSIG +b.sub.example.com. 3600 IN RRSIG NSEC 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. KPdURTUrbQvc6OXtDZaH3+14uO2qPUPIFO86aTNZ/Ujy3d2RMSB7fkSSulDO6QDSBEUhr9WgbQr0/YoljCBirA== ;{id = 30899} +ENTRY_END +RANGE_END + +; server ns.b.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.7 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +b.sub.example.com. IN NS +SECTION ANSWER +b.sub.example.com. IN NS ns.b.sub.example.com. +SECTION ADDITIONAL +ns.b.sub.example.com. IN A 1.2.3.7 +ENTRY_END + +ENTRY_BEGIN +; query of interest, give a cname to another unsecure zone. +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION ANSWER +a.b.sub.example.com. IN CNAME c.c.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +a.b.sub.example.com. IN DS +SECTION AUTHORITY +b.sub.example.com. IN SOA B-EXAMPLE. b-example. 1 2 3 7 7 +ENTRY_END +RANGE_END + +; server ns.c.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.8 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.sub.example.com. IN NS +SECTION ANSWER +c.sub.example.com. IN NS ns.c.sub.example.com. +SECTION ADDITIONAL +ns.c.sub.example.com. IN A 1.2.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.example.com. IN NS +SECTION ANSWER +c.example.com. IN NS ns.c.example.com. +SECTION ADDITIONAL +ns.c.example.com. IN A 1.2.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.c.example.com. IN A +SECTION ANSWER +c.c.example.com. IN A 11.11.11.11 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +c.c.example.com. IN DS +SECTION AUTHORITY +c.example.com. IN SOA C-EXAMPLE. c-example. 1 2 3 4 5 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.b.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.b.sub.example.com. IN A +SECTION ANSWER +a.b.sub.example.com. IN CNAME c.c.example.com. +c.c.example.com. 3600 IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; test that a DS query does not get CNAME redirected, but instead +; asked to the right server that has to respond to it. +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +a.b.sub.example.com. IN DS +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +a.b.sub.example.com. IN DS +SECTION AUTHORITY +b.sub.example.com. IN SOA B-EXAMPLE. b-example. 1 2 3 7 7 +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unsecds.rpl b/external/unbound/testdata/val_unsecds.rpl new file mode 100644 index 0000000..8678160 --- /dev/null +++ b/external/unbound/testdata/val_unsecds.rpl @@ -0,0 +1,194 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with insecure delegation + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; query for missing DS record. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unsecds_negcache.rpl b/external/unbound/testdata/val_unsecds_negcache.rpl new file mode 100644 index 0000000..2e9b1e7 --- /dev/null +++ b/external/unbound/testdata/val_unsecds_negcache.rpl @@ -0,0 +1,195 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with insecure delegation and DS negative cache + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; query for missing DS record. +; get it from the negative cache instead! +;ENTRY_BEGIN +;MATCH opcode qtype qname +;ADJUST copy_id +;REPLY QR NOERROR +;SECTION QUESTION +;sub.example.com. IN DS +;SECTION ANSWER +;SECTION AUTHORITY +;example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +;example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +;sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +;sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +;SECTION ADDITIONAL +;ns.sub.example.com. IN A 1.2.3.6 +;ENTRY_END + + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. 3600 IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_unsecds_qtypeds.rpl b/external/unbound/testdata/val_unsecds_qtypeds.rpl new file mode 100644 index 0000000..e277fd7 --- /dev/null +++ b/external/unbound/testdata/val_unsecds_qtypeds.rpl @@ -0,0 +1,210 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with insecure delegation and qtype DS. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; query for missing DS record. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response for delegation to sub.example.com. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN NS ns.sub.example.com. +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + + +RANGE_END + +; ns.sub.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.6 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +sub.example.com. IN NS +SECTION ANSWER +sub.example.com. IN NS ns.sub.example.com. +SECTION ADDITIONAL +ns.sub.example.com. IN A 1.2.3.6 +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +www.sub.example.com. IN A 11.11.11.11 +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END + +; query for missing DS record. on wrong side of zone cut. +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN SOA ns.sub.example.com. h.sub.example.com. 2007090504 1800 1800 2419200 7200 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +sub.example.com. IN DS +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +sub.example.com. IN DS +SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. h.example.com. 2007090504 1800 1800 2419200 7200 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFC5uwIHSehZtetK2CMNXttSFUB0XAhROFDAgy/FaxR8zFXJzyPdpQG93Sw== ;{id = 2854} +sub.example.com. IN NSEC www.example.com. NS RRSIG NSEC +sub.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFDCaiDM6G+glwNW276HWdH+McmjgAhRSwF5OfimNQCqkWgnYotLOwUghKQ== ;{id = 2854} +SECTION ADDITIONAL +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/val_wild_pos.rpl b/external/unbound/testdata/val_wild_pos.rpl new file mode 100644 index 0000000..2fc3847 --- /dev/null +++ b/external/unbound/testdata/val_wild_pos.rpl @@ -0,0 +1,162 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with direct wildcard positive response + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +*.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +*.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +*.example.com. IN A +SECTION ANSWER +*.example.com. IN A 10.20.30.40 +*.example.com. 3600 IN RRSIG A 3 2 3600 20070926134150 20070829134150 2854 example.com. AG3iIIzflgRHsIlOKiSHADHIn/NmfNgESAslc1wIjxys5r9w4CxNIGs= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +*.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +*.example.com. IN A +SECTION ANSWER +*.example.com. IN A 10.20.30.40 +*.example.com. 3600 IN RRSIG A 3 2 3600 20070926134150 20070829134150 2854 example.com. AG3iIIzflgRHsIlOKiSHADHIn/NmfNgESAslc1wIjxys5r9w4CxNIGs= ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/version_bind.rpl b/external/unbound/testdata/version_bind.rpl new file mode 100644 index 0000000..1c5b914 --- /dev/null +++ b/external/unbound/testdata/version_bind.rpl @@ -0,0 +1,74 @@ +; config options +server: + hide-identity: no + hide-version: no + identity: "test-identity" + version: "test-version" +CONFIG_END +SCENARIO_BEGIN Test version.bind identity and version queries + +; version.bind. +STEP 1 QUERY +ENTRY_BEGIN +SECTION QUESTION +version.bind. CH TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA +SECTION QUESTION +version.bind. CH TXT +SECTION ANSWER +version.bind. 0 CH TXT "test-version" +ENTRY_END + +; version.server. +STEP 3 QUERY +ENTRY_BEGIN +SECTION QUESTION +version.server. CH TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA +SECTION QUESTION +version.server. CH TXT +SECTION ANSWER +version.server. 0 CH TXT "test-version" +ENTRY_END + +; hostname.bind. +STEP 5 QUERY +ENTRY_BEGIN +SECTION QUESTION +hostname.bind. CH TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA +SECTION QUESTION +hostname.bind. CH TXT +SECTION ANSWER +hostname.bind. 0 CH TXT "test-identity" +ENTRY_END + +; id.server. +STEP 7 QUERY +ENTRY_BEGIN +SECTION QUESTION +id.server. CH TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA +SECTION QUESTION +id.server. CH TXT +SECTION ANSWER +id.server. 0 CH TXT "test-identity" +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/version_bind_hide.rpl b/external/unbound/testdata/version_bind_hide.rpl new file mode 100644 index 0000000..0237646 --- /dev/null +++ b/external/unbound/testdata/version_bind_hide.rpl @@ -0,0 +1,71 @@ +; config options +server: + hide-identity: yes + hide-version: yes + identity: "test-identity" + version: "test-version" +; we rely on the fact that there are no builtin stubs for class CH. +CONFIG_END +SCENARIO_BEGIN Test config hide options for identity and version queries + +; version.bind. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +version.bind. CH TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA REFUSED +SECTION QUESTION +version.bind. CH TXT +ENTRY_END + +; version.server. +STEP 3 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +version.server. CH TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA REFUSED +SECTION QUESTION +version.server. CH TXT +ENTRY_END + +; hostname.bind. +STEP 5 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +hostname.bind. CH TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA REFUSED +SECTION QUESTION +hostname.bind. CH TXT +ENTRY_END + +; id.server. +STEP 7 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +id.server. CH TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA REFUSED +SECTION QUESTION +id.server. CH TXT +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/testdata/views.rpl b/external/unbound/testdata/views.rpl new file mode 100644 index 0000000..5573cd8 --- /dev/null +++ b/external/unbound/testdata/views.rpl @@ -0,0 +1,211 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + + access-control: 10.10.10.0/24 allow + access-control-view: 10.10.10.10/32 "view1" + access-control-view: 10.10.10.20/32 "view2" + access-control-view: 10.10.10.30/32 "view3" + access-control-view: 10.10.10.40/32 "view4" + + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "global"' + +view: + name: "view1" + local-zone: "nomatch.example.com." redirect + local-data: 'nomatch.example.com. IN TXT "view 1"' + view-first: no + +view: + name: "view2" + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "view 2"' + ; view-first default = no + +view: + name: "view3" + local-zone: "nomatch.example.com." redirect + local-data: 'nomatch.example.com. IN TXT "view 3"' + view-first: yes + +view: + name: "view4" + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "view 4"' + view-first: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END +SCENARIO_BEGIN Test view specific local-zone and local-data elements + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "auth data" +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "auth data" +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "view 2" +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "global" +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "view 4" +ENTRY_END + +STEP 9 QUERY ADDRESS 10.10.10.50 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "global" +ENTRY_END + +SCENARIO_END diff --git a/external/unbound/util/alloc.c b/external/unbound/util/alloc.c index 05d2fa3..908b1f4 100644 --- a/external/unbound/util/alloc.c +++ b/external/unbound/util/alloc.c @@ -52,7 +52,7 @@ /** setup new special type */ static void -alloc_setup_special(alloc_special_t* t) +alloc_setup_special(alloc_special_type* t) { memset(t, 0, sizeof(*t)); lock_rw_init(&t->entry.lock); @@ -64,12 +64,13 @@ alloc_setup_special(alloc_special_t* t) * @param alloc: the structure to fill up. */ static void -prealloc(struct alloc_cache* alloc) +prealloc_setup(struct alloc_cache* alloc) { - alloc_special_t* p; + alloc_special_type* p; int i; for(i=0; iquar; + while(p) { + np = alloc_special_next(p); + /* deinit special type */ + lock_rw_destroy(&p->entry.lock); + free(p); + p = np; + } +} + +void +alloc_clear_special(struct alloc_cache* alloc) +{ + if(!alloc->super) { + lock_quick_lock(&alloc->lock); + } + alloc_clear_special_list(alloc); + alloc->quar = 0; + alloc->num_quar = 0; + if(!alloc->super) { + lock_quick_unlock(&alloc->lock); + } +} + void alloc_clear(struct alloc_cache* alloc) { - alloc_special_t* p, *np; + alloc_special_type* p; struct regional* r, *nr; if(!alloc) return; @@ -146,15 +177,7 @@ alloc_clear(struct alloc_cache* alloc) alloc->super->num_quar += alloc->num_quar; lock_quick_unlock(&alloc->super->lock); } else { - /* free */ - p = alloc->quar; - while(p) { - np = alloc_special_next(p); - /* deinit special type */ - lock_rw_destroy(&p->entry.lock); - free(p); - p = np; - } + alloc_clear_special_list(alloc); } alloc->quar = 0; alloc->num_quar = 0; @@ -187,10 +210,10 @@ alloc_get_id(struct alloc_cache* alloc) return id; } -alloc_special_t* +alloc_special_type* alloc_special_obtain(struct alloc_cache* alloc) { - alloc_special_t* p; + alloc_special_type* p; log_assert(alloc); /* see if in local cache */ if(alloc->quar) { @@ -216,8 +239,8 @@ alloc_special_obtain(struct alloc_cache* alloc) } } /* allocate new */ - prealloc(alloc); - if(!(p = (alloc_special_t*)malloc(sizeof(alloc_special_t)))) { + prealloc_setup(alloc); + if(!(p = (alloc_special_type*)malloc(sizeof(alloc_special_type)))) { log_err("alloc_special_obtain: out of memory"); return NULL; } @@ -228,10 +251,10 @@ alloc_special_obtain(struct alloc_cache* alloc) /** push mem and some more items to the super */ static void -pushintosuper(struct alloc_cache* alloc, alloc_special_t* mem) +pushintosuper(struct alloc_cache* alloc, alloc_special_type* mem) { int i; - alloc_special_t *p = alloc->quar; + alloc_special_type *p = alloc->quar; log_assert(p); log_assert(alloc && alloc->super && alloc->num_quar >= ALLOC_SPECIAL_MAX); @@ -253,7 +276,7 @@ pushintosuper(struct alloc_cache* alloc, alloc_special_t* mem) } void -alloc_special_release(struct alloc_cache* alloc, alloc_special_t* mem) +alloc_special_release(struct alloc_cache* alloc, alloc_special_type* mem) { log_assert(alloc); if(!mem) @@ -286,12 +309,12 @@ alloc_stats(struct alloc_cache* alloc) size_t alloc_get_mem(struct alloc_cache* alloc) { - alloc_special_t* p; + alloc_special_type* p; size_t s = sizeof(*alloc); if(!alloc->super) { lock_quick_lock(&alloc->lock); /* superalloc needs locking */ } - s += sizeof(alloc_special_t) * alloc->num_quar; + s += sizeof(alloc_special_type) * alloc->num_quar; for(p = alloc->quar; p; p = alloc_special_next(p)) { s += lock_get_mem(&p->entry.lock); } diff --git a/external/unbound/util/alloc.h b/external/unbound/util/alloc.h index 43fc30f..ee03b07 100644 --- a/external/unbound/util/alloc.h +++ b/external/unbound/util/alloc.h @@ -53,11 +53,11 @@ struct ub_packed_rrset_key; struct regional; /** The special type, packed rrset. Not allowed to be used for other memory */ -typedef struct ub_packed_rrset_key alloc_special_t; +typedef struct ub_packed_rrset_key alloc_special_type; /** clean the special type. Pass pointer. */ #define alloc_special_clean(x) (x)->id = 0; /** access next pointer. (in available spot). Pass pointer. */ -#define alloc_special_next(x) ((alloc_special_t*)((x)->entry.overflow_next)) +#define alloc_special_next(x) ((alloc_special_type*)((x)->entry.overflow_next)) /** set next pointer. (in available spot). Pass pointers. */ #define alloc_set_special_next(x, y) \ ((x)->entry.overflow_next) = (struct lruhash_entry*)(y); @@ -71,11 +71,11 @@ typedef struct ub_packed_rrset_key alloc_special_t; */ struct alloc_cache { /** lock, only used for the super. */ - lock_quick_t lock; + lock_quick_type lock; /** global allocator above this one. NULL for none (malloc/free) */ struct alloc_cache* super; /** singly linked lists of special type. These are free for use. */ - alloc_special_t* quar; + alloc_special_type* quar; /** number of items in quarantine. */ size_t num_quar; /** thread number for id creation */ @@ -116,20 +116,28 @@ void alloc_init(struct alloc_cache* alloc, struct alloc_cache* super, void alloc_clear(struct alloc_cache* alloc); /** - * Get a new special_t element. + * Free the special alloced items. The rrset and message caches must be + * empty, there must be no more references to rrset pointers into the + * rrset cache. + * @param alloc: the special allocs are freed. + */ +void alloc_clear_special(struct alloc_cache* alloc); + +/** + * Get a new special_type element. * @param alloc: where to alloc it. * @return: memory block. Will not return NULL (instead fatal_exit). * The block is zeroed. */ -alloc_special_t* alloc_special_obtain(struct alloc_cache* alloc); +alloc_special_type* alloc_special_obtain(struct alloc_cache* alloc); /** - * Return special_t back to pool. + * Return special_type back to pool. * The block is cleaned up (zeroed) which also invalidates the ID inside. * @param alloc: where to alloc it. * @param mem: block to free. */ -void alloc_special_release(struct alloc_cache* alloc, alloc_special_t* mem); +void alloc_special_release(struct alloc_cache* alloc, alloc_special_type* mem); /** * Set ID number of special type to a fresh new ID number. diff --git a/external/unbound/util/as112.c b/external/unbound/util/as112.c new file mode 100644 index 0000000..6ee6940 --- /dev/null +++ b/external/unbound/util/as112.c @@ -0,0 +1,143 @@ +/* + * util/as112.c - list of local zones. + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file provides a list of lan zones. + */ + +#include "util/as112.h" + +static const char* as112_zone_array[] = { + "10.in-addr.arpa.", + "16.172.in-addr.arpa.", + "17.172.in-addr.arpa.", + "18.172.in-addr.arpa.", + "19.172.in-addr.arpa.", + "20.172.in-addr.arpa.", + "21.172.in-addr.arpa.", + "22.172.in-addr.arpa.", + "23.172.in-addr.arpa.", + "24.172.in-addr.arpa.", + "25.172.in-addr.arpa.", + "26.172.in-addr.arpa.", + "27.172.in-addr.arpa.", + "28.172.in-addr.arpa.", + "29.172.in-addr.arpa.", + "30.172.in-addr.arpa.", + "31.172.in-addr.arpa.", + "168.192.in-addr.arpa.", + "0.in-addr.arpa.", + "64.100.in-addr.arpa.", + "65.100.in-addr.arpa.", + "66.100.in-addr.arpa.", + "67.100.in-addr.arpa.", + "68.100.in-addr.arpa.", + "69.100.in-addr.arpa.", + "70.100.in-addr.arpa.", + "71.100.in-addr.arpa.", + "72.100.in-addr.arpa.", + "73.100.in-addr.arpa.", + "74.100.in-addr.arpa.", + "75.100.in-addr.arpa.", + "76.100.in-addr.arpa.", + "77.100.in-addr.arpa.", + "78.100.in-addr.arpa.", + "79.100.in-addr.arpa.", + "80.100.in-addr.arpa.", + "81.100.in-addr.arpa.", + "82.100.in-addr.arpa.", + "83.100.in-addr.arpa.", + "84.100.in-addr.arpa.", + "85.100.in-addr.arpa.", + "86.100.in-addr.arpa.", + "87.100.in-addr.arpa.", + "88.100.in-addr.arpa.", + "89.100.in-addr.arpa.", + "90.100.in-addr.arpa.", + "91.100.in-addr.arpa.", + "92.100.in-addr.arpa.", + "93.100.in-addr.arpa.", + "94.100.in-addr.arpa.", + "95.100.in-addr.arpa.", + "96.100.in-addr.arpa.", + "97.100.in-addr.arpa.", + "98.100.in-addr.arpa.", + "99.100.in-addr.arpa.", + "100.100.in-addr.arpa.", + "101.100.in-addr.arpa.", + "102.100.in-addr.arpa.", + "103.100.in-addr.arpa.", + "104.100.in-addr.arpa.", + "105.100.in-addr.arpa.", + "106.100.in-addr.arpa.", + "107.100.in-addr.arpa.", + "108.100.in-addr.arpa.", + "109.100.in-addr.arpa.", + "110.100.in-addr.arpa.", + "111.100.in-addr.arpa.", + "112.100.in-addr.arpa.", + "113.100.in-addr.arpa.", + "114.100.in-addr.arpa.", + "115.100.in-addr.arpa.", + "116.100.in-addr.arpa.", + "117.100.in-addr.arpa.", + "118.100.in-addr.arpa.", + "119.100.in-addr.arpa.", + "120.100.in-addr.arpa.", + "121.100.in-addr.arpa.", + "122.100.in-addr.arpa.", + "123.100.in-addr.arpa.", + "124.100.in-addr.arpa.", + "125.100.in-addr.arpa.", + "126.100.in-addr.arpa.", + "127.100.in-addr.arpa.", + "254.169.in-addr.arpa.", + "2.0.192.in-addr.arpa.", + "100.51.198.in-addr.arpa.", + "113.0.203.in-addr.arpa.", + "255.255.255.255.in-addr.arpa.", + "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.ip6.arpa.", + "d.f.ip6.arpa.", + "8.e.f.ip6.arpa.", + "9.e.f.ip6.arpa.", + "a.e.f.ip6.arpa.", + "b.e.f.ip6.arpa.", + "8.b.d.0.1.0.0.2.ip6.arpa.", + 0 +}; + +const char** as112_zones = as112_zone_array; diff --git a/external/unbound/util/as112.h b/external/unbound/util/as112.h new file mode 100644 index 0000000..7d0329e --- /dev/null +++ b/external/unbound/util/as112.h @@ -0,0 +1,57 @@ +/* + * util/as112.c - list of local zones. + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file provides a list of lan zones + */ + +#ifndef UTIL_AS112_H +#define UTIL_AS112_H + +/** + * Array of text-format domain names of the AS112 zones. + * The array ends with NULL. "AS112" is a service on the internet that + * that this array is named after. The names in this list (or some of them) + * are null-routed by this service to avoid load on central servers caused by + * mistaken lookups for local content on the global internet. + * + * This is the list of names that unbound should not normally be sending + * on towards the internet, because they are local-use. + */ +extern const char** as112_zones; + +#endif diff --git a/external/unbound/util/config_file.c b/external/unbound/util/config_file.c index cc7d990..b061760 100644 --- a/external/unbound/util/config_file.c +++ b/external/unbound/util/config_file.c @@ -62,13 +62,16 @@ #ifdef HAVE_GLOB_H # include #endif +#ifdef CLIENT_SUBNET +#include "edns-subnet/edns-subnet.h" +#endif #ifdef HAVE_PWD_H #include #endif -/** from cfg username, after daemonise setup performed */ +/** from cfg username, after daemonize setup performed */ uid_t cfg_uid = (uid_t)-1; -/** from cfg username, after daemonise setup performed */ +/** from cfg username, after daemonize setup performed */ gid_t cfg_gid = (gid_t)-1; /** for debug allow small timeout values for fast rollovers */ int autr_permit_small_holddown = 0; @@ -98,13 +101,20 @@ config_create(void) cfg->do_udp = 1; cfg->do_tcp = 1; cfg->tcp_upstream = 0; + cfg->udp_upstream_without_downstream = 0; + cfg->tcp_mss = 0; + cfg->outgoing_tcp_mss = 0; cfg->ssl_service_key = NULL; cfg->ssl_service_pem = NULL; - cfg->ssl_port = 853; + cfg->ssl_port = UNBOUND_DNS_OVER_TLS_PORT; cfg->ssl_upstream = 0; + cfg->tls_cert_bundle = NULL; + cfg->tls_win_cert = 0; cfg->use_syslog = 1; + cfg->log_identity = NULL; /* changed later with argv[0] */ cfg->log_time_ascii = 0; cfg->log_queries = 0; + cfg->log_replies = 0; #ifndef USE_WINSOCK # ifdef USE_MINI_EVENT /* select max 1024 sockets */ @@ -152,21 +162,35 @@ config_create(void) if(!(cfg->logfile = strdup(""))) goto error_exit; if(!(cfg->pidfile = strdup(PIDFILE))) goto error_exit; if(!(cfg->target_fetch_policy = strdup("3 2 1 0 0"))) goto error_exit; + cfg->low_rtt_permil = 0; + cfg->low_rtt = 45; cfg->donotqueryaddrs = NULL; cfg->donotquery_localhost = 1; cfg->root_hints = NULL; + cfg->use_systemd = 0; cfg->do_daemonize = 1; cfg->if_automatic = 0; cfg->so_rcvbuf = 0; cfg->so_sndbuf = 0; cfg->so_reuseport = 0; cfg->ip_transparent = 0; + cfg->ip_freebind = 0; cfg->num_ifs = 0; cfg->ifs = NULL; cfg->num_out_ifs = 0; cfg->out_ifs = NULL; cfg->stubs = NULL; cfg->forwards = NULL; + cfg->auths = NULL; +#ifdef CLIENT_SUBNET + cfg->client_subnet = NULL; + cfg->client_subnet_zone = NULL; + cfg->client_subnet_opcode = LDNS_EDNS_CLIENT_SUBNET; + cfg->client_subnet_always_forward = 0; + cfg->max_client_subnet_ipv4 = 24; + cfg->max_client_subnet_ipv6 = 56; +#endif + cfg->views = NULL; cfg->acls = NULL; cfg->harden_short_bufsize = 0; cfg->harden_large_queries = 0; @@ -182,12 +206,15 @@ config_create(void) cfg->unwanted_threshold = 0; cfg->hide_identity = 0; cfg->hide_version = 0; + cfg->hide_trustanchor = 0; cfg->identity = NULL; cfg->version = NULL; cfg->auto_trust_anchor_file_list = NULL; cfg->trust_anchor_file_list = NULL; cfg->trust_anchor_list = NULL; cfg->trusted_keys_file_list = NULL; + cfg->trust_anchor_signaling = 1; + cfg->root_key_sentinel = 1; cfg->dlv_anchor_file = NULL; cfg->dlv_anchor_list = NULL; cfg->domain_insecure = NULL; @@ -198,7 +225,9 @@ config_create(void) cfg->val_log_level = 0; cfg->val_log_squelch = 0; cfg->val_permissive_mode = 0; + cfg->aggressive_nsec = 0; cfg->ignore_cd = 0; + cfg->serve_expired = 0; cfg->add_holddown = 30*24*3600; cfg->del_holddown = 30*24*3600; cfg->keep_missing = 366*24*3600; /* one year plus a little leeway */ @@ -208,13 +237,17 @@ config_create(void) cfg->neg_cache_size = 1 * 1024 * 1024; cfg->local_zones = NULL; cfg->local_zones_nodefault = NULL; + cfg->local_zones_disable_default = 0; cfg->local_data = NULL; + cfg->local_zone_overrides = NULL; cfg->unblock_lan_zones = 0; + cfg->insecure_lan_zones = 0; cfg->python_script = NULL; cfg->remote_control_enable = 0; - cfg->control_ifs = NULL; + cfg->control_ifs.first = NULL; + cfg->control_ifs.last = NULL; cfg->control_port = UNBOUND_CONTROL_PORT; - cfg->remote_control_use_cert = 1; + cfg->control_use_cert = 1; cfg->minimal_responses = 0; cfg->rrset_roundrobin = 0; cfg->max_udp_size = 4096; @@ -227,20 +260,54 @@ config_create(void) if(!(cfg->control_cert_file = strdup(RUN_DIR"/unbound_control.pem"))) goto error_exit; +#ifdef CLIENT_SUBNET + if(!(cfg->module_conf = strdup("subnetcache validator iterator"))) goto error_exit; +#else if(!(cfg->module_conf = strdup("validator iterator"))) goto error_exit; +#endif if(!(cfg->val_nsec3_key_iterations = strdup("1024 150 2048 500 4096 2500"))) goto error_exit; #if defined(DNSTAP_SOCKET_PATH) if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) goto error_exit; #endif + cfg->disable_dnssec_lame_check = 0; + cfg->ip_ratelimit = 0; cfg->ratelimit = 0; + cfg->ip_ratelimit_slabs = 4; cfg->ratelimit_slabs = 4; + cfg->ip_ratelimit_size = 4*1024*1024; cfg->ratelimit_size = 4*1024*1024; cfg->ratelimit_for_domain = NULL; cfg->ratelimit_below_domain = NULL; + cfg->ip_ratelimit_factor = 10; cfg->ratelimit_factor = 10; - cfg->qname_minimisation = 0; + cfg->qname_minimisation = 1; + cfg->qname_minimisation_strict = 0; + cfg->shm_enable = 0; + cfg->shm_key = 11777; + cfg->dnscrypt = 0; + cfg->dnscrypt_port = 0; + cfg->dnscrypt_provider = NULL; + cfg->dnscrypt_provider_cert = NULL; + cfg->dnscrypt_provider_cert_rotated = NULL; + cfg->dnscrypt_secret_key = NULL; + cfg->dnscrypt_shared_secret_cache_size = 4*1024*1024; + cfg->dnscrypt_shared_secret_cache_slabs = 4; + cfg->dnscrypt_nonce_cache_size = 4*1024*1024; + cfg->dnscrypt_nonce_cache_slabs = 4; +#ifdef USE_IPSECMOD + cfg->ipsecmod_enabled = 1; + cfg->ipsecmod_ignore_bogus = 0; + cfg->ipsecmod_hook = NULL; + cfg->ipsecmod_max_ttl = 3600; + cfg->ipsecmod_whitelist = NULL; + cfg->ipsecmod_strict = 0; +#endif +#ifdef USE_CACHEDB + cfg->cachedb_backend = NULL; + cfg->cachedb_secret = NULL; +#endif return cfg; error_exit: config_delete(cfg); @@ -316,10 +383,23 @@ struct config_file* config_create_forlib(void) /** put string into strlist */ #define S_STRLIST(str, var) if(strcmp(opt, str)==0) \ { return cfg_strlist_insert(&cfg->var, strdup(val)); } +/** put string into strlist if not present yet*/ +#define S_STRLIST_UNIQ(str, var) if(strcmp(opt, str)==0) \ + { if(cfg_strlist_find(cfg->var, val)) { return 0;} \ + return cfg_strlist_insert(&cfg->var, strdup(val)); } +/** append string to strlist */ +#define S_STRLIST_APPEND(str, var) if(strcmp(opt, str)==0) \ + { return cfg_strlist_append(&cfg->var, strdup(val)); } int config_set_option(struct config_file* cfg, const char* opt, const char* val) { + char buf[64]; + if(!opt) return 0; + if(opt[strlen(opt)-1] != ':' && strlen(opt)+2log_time_ascii); } else S_SIZET_NONZERO("max-udp-size:", max_udp_size) else S_YNO("use-syslog:", use_syslog) + else S_STR("log-identity:", log_identity) else S_YNO("extended-statistics:", stat_extended) else S_YNO("statistics-cumulative:", stat_cumulative) + else S_YNO("shm-enable:", shm_enable) + else S_NUMBER_OR_ZERO("shm-key:", shm_key) else S_YNO("do-ip4:", do_ip4) else S_YNO("do-ip6:", do_ip6) else S_YNO("do-udp:", do_udp) else S_YNO("do-tcp:", do_tcp) else S_YNO("tcp-upstream:", tcp_upstream) + else S_YNO("udp-upstream-without-downstream:", + udp_upstream_without_downstream) + else S_NUMBER_NONZERO("tcp-mss:", tcp_mss) + else S_NUMBER_NONZERO("outgoing-tcp-mss:", outgoing_tcp_mss) else S_YNO("ssl-upstream:", ssl_upstream) else S_STR("ssl-service-key:", ssl_service_key) else S_STR("ssl-service-pem:", ssl_service_pem) else S_NUMBER_NONZERO("ssl-port:", ssl_port) + else S_STR("tls-cert-bundle:", tls_cert_bundle) + else S_YNO("tls-win-cert:", tls_win_cert) + else S_STRLIST("additional-tls-port:", tls_additional_port) + else S_STRLIST("tls-additional-ports:", tls_additional_port) + else S_STRLIST("tls-additional-port:", tls_additional_port) else S_YNO("interface-automatic:", if_automatic) + else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) else S_NUMBER_NONZERO("port:", port) else S_NUMBER_NONZERO("outgoing-range:", outgoing_num_ports) @@ -388,6 +481,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_MEMSIZE("so-sndbuf:", so_sndbuf) else S_YNO("so-reuseport:", so_reuseport) else S_YNO("ip-transparent:", ip_transparent) + else S_YNO("ip-freebind:", ip_freebind) else S_MEMSIZE("rrset-cache-size:", rrset_cache_size) else S_POW2("rrset-cache-slabs:", rrset_cache_slabs) else S_YNO("prefetch:", prefetch) @@ -412,6 +506,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("pidfile:", pidfile) else S_YNO("hide-identity:", hide_identity) else S_YNO("hide-version:", hide_version) + else S_YNO("hide-trustanchor:", hide_trustanchor) else S_STR("identity:", identity) else S_STR("version:", version) else S_STRLIST("root-hints:", root_hints) @@ -423,7 +518,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("harden-below-nxdomain:", harden_below_nxdomain) else S_YNO("harden-referral-path:", harden_referral_path) else S_YNO("harden-algo-downgrade:", harden_algo_downgrade) - else S_YNO("use-caps-for-id", use_caps_bits_for_id) + else S_YNO("use-caps-for-id:", use_caps_bits_for_id) else S_STRLIST("caps-whitelist:", caps_whitelist) else S_SIZET_OR_ZERO("unwanted-reply-threshold:", unwanted_threshold) else S_STRLIST("private-address:", private_address) @@ -434,6 +529,8 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STRLIST("trust-anchor-file:", trust_anchor_file_list) else S_STRLIST("trust-anchor:", trust_anchor_list) else S_STRLIST("trusted-keys-file:", trusted_keys_file_list) + else S_YNO("trust-anchor-signaling:", trust_anchor_signaling) + else S_YNO("root-key-sentinel:", root_key_sentinel) else S_STR("dlv-anchor-file:", dlv_anchor_file) else S_STRLIST("dlv-anchor:", dlv_anchor_list) else S_STRLIST("domain-insecure:", domain_insecure) @@ -442,8 +539,11 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_OR_ZERO("val-log-level:", val_log_level) else S_YNO("val-log-squelch:", val_log_squelch) else S_YNO("log-queries:", log_queries) + else S_YNO("log-replies:", log_replies) else S_YNO("val-permissive-mode:", val_permissive_mode) + else S_YNO("aggressive-nsec:", aggressive_nsec) else S_YNO("ignore-cd-flag:", ignore_cd) + else S_YNO("serve-expired:", serve_expired) else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations) else S_UNSIGNED_OR_ZERO("add-holddown:", add_holddown) else S_UNSIGNED_OR_ZERO("del-holddown:", del_holddown) @@ -458,8 +558,9 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("rrset-roundrobin:", rrset_roundrobin) else S_STRLIST("local-data:", local_data) else S_YNO("unblock-lan-zones:", unblock_lan_zones) + else S_YNO("insecure-lan-zones:", insecure_lan_zones) else S_YNO("control-enable:", remote_control_enable) - else S_STRLIST("control-interface:", control_ifs) + else S_STRLIST_APPEND("control-interface:", control_ifs) else S_NUMBER_NONZERO("control-port:", control_port) else S_STR("server-key-file:", server_key_file) else S_STR("server-cert-file:", server_cert_file) @@ -467,17 +568,80 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("control-cert-file:", control_cert_file) else S_STR("module-config:", module_conf) else S_STR("python-script:", python_script) + else S_YNO("disable-dnssec-lame-check:", disable_dnssec_lame_check) +#ifdef CLIENT_SUBNET + /* Can't set max subnet prefix here, since that value is used when + * generating the address tree. */ + /* No client-subnet-always-forward here, module registration depends on + * this option. */ +#endif +#ifdef USE_DNSTAP + else S_YNO("dnstap-enable:", dnstap) + else S_STR("dnstap-socket-path:", dnstap_socket_path) + else S_YNO("dnstap-send-identity:", dnstap_send_identity) + else S_YNO("dnstap-send-version:", dnstap_send_version) + else S_STR("dnstap-identity:", dnstap_identity) + else S_STR("dnstap-version:", dnstap_version) + else S_YNO("dnstap-log-resolver-query-messages:", + dnstap_log_resolver_query_messages) + else S_YNO("dnstap-log-resolver-response-messages:", + dnstap_log_resolver_response_messages) + else S_YNO("dnstap-log-client-query-messages:", + dnstap_log_client_query_messages) + else S_YNO("dnstap-log-client-response-messages:", + dnstap_log_client_response_messages) + else S_YNO("dnstap-log-forwarder-query-messages:", + dnstap_log_forwarder_query_messages) + else S_YNO("dnstap-log-forwarder-response-messages:", + dnstap_log_forwarder_response_messages) +#endif +#ifdef USE_DNSCRYPT + else S_YNO("dnscrypt-enable:", dnscrypt) + else S_NUMBER_NONZERO("dnscrypt-port:", dnscrypt_port) + else S_STR("dnscrypt-provider:", dnscrypt_provider) + else S_STRLIST_UNIQ("dnscrypt-provider-cert:", dnscrypt_provider_cert) + else S_STRLIST("dnscrypt-provider-cert-rotated:", dnscrypt_provider_cert_rotated) + else S_STRLIST_UNIQ("dnscrypt-secret-key:", dnscrypt_secret_key) + else S_MEMSIZE("dnscrypt-shared-secret-cache-size:", + dnscrypt_shared_secret_cache_size) + else S_POW2("dnscrypt-shared-secret-cache-slabs:", + dnscrypt_shared_secret_cache_slabs) + else S_MEMSIZE("dnscrypt-nonce-cache-size:", + dnscrypt_nonce_cache_size) + else S_POW2("dnscrypt-nonce-cache-slabs:", + dnscrypt_nonce_cache_slabs) +#endif + else if(strcmp(opt, "ip-ratelimit:") == 0) { + IS_NUMBER_OR_ZERO; cfg->ip_ratelimit = atoi(val); + infra_ip_ratelimit=cfg->ip_ratelimit; + } else if(strcmp(opt, "ratelimit:") == 0) { IS_NUMBER_OR_ZERO; cfg->ratelimit = atoi(val); infra_dp_ratelimit=cfg->ratelimit; } + else S_MEMSIZE("ip-ratelimit-size:", ip_ratelimit_size) else S_MEMSIZE("ratelimit-size:", ratelimit_size) + else S_POW2("ip-ratelimit-slabs:", ip_ratelimit_slabs) else S_POW2("ratelimit-slabs:", ratelimit_slabs) + else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) + else S_NUMBER_OR_ZERO("low-rtt:", low_rtt) + else S_NUMBER_OR_ZERO("low-rtt-pct:", low_rtt_permil) + else S_NUMBER_OR_ZERO("low-rtt-permil:", low_rtt_permil) else S_YNO("qname-minimisation:", qname_minimisation) + else S_YNO("qname-minimisation-strict:", qname_minimisation_strict) +#ifdef USE_IPSECMOD + else S_YNO("ipsecmod-enabled:", ipsecmod_enabled) + else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus) + else if(strcmp(opt, "ipsecmod-max-ttl:") == 0) + { IS_NUMBER_OR_ZERO; cfg->ipsecmod_max_ttl = atoi(val); } + else S_YNO("ipsecmod-strict:", ipsecmod_strict) +#endif + else if(strcmp(opt, "define-tag:") ==0) { + return config_add_tag(cfg, val); /* val_sig_skew_min and max are copied into val_env during init, * so this does not update val_env with set_option */ - else if(strcmp(opt, "val-sig-skew-min:") == 0) + } else if(strcmp(opt, "val-sig-skew-min:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_min = (int32_t)atoi(val); } else if(strcmp(opt, "val-sig-skew-max:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_max = (int32_t)atoi(val); } @@ -494,11 +658,16 @@ int config_set_option(struct config_file* cfg, const char* opt, cfg->out_ifs = oi; } else { /* unknown or unsupported (from the set_option interface): - * interface, outgoing-interface, access-control, + * interface, outgoing-interface, access-control, * stub-zone, name, stub-addr, stub-host, stub-prime - * forward-first, stub-first, - * forward-zone, name, forward-addr, forward-host, - * ratelimit-for-domain, ratelimit-below-domain */ + * forward-first, stub-first, forward-ssl-upstream, + * stub-ssl-upstream, forward-zone, auth-zone + * name, forward-addr, forward-host, + * ratelimit-for-domain, ratelimit-below-domain, + * local-zone-tag, access-control-view, + * send-client-subnet, client-subnet-always-forward, + * max-client-subnet-ipv4, max-client-subnet-ipv6, ipsecmod_hook, + * ipsecmod_whitelist. */ return 0; } return 1; @@ -622,23 +791,53 @@ config_collate_cat(struct config_strlist* list) /** compare and print list option */ #define O_LS2(opt, name, lst) if(strcmp(opt, name)==0) { \ struct config_str2list* p = cfg->lst; \ - for(p = cfg->lst; p; p = p->next) \ - snprintf(buf, len, "%s %s\n", p->str, p->str2); \ + for(p = cfg->lst; p; p = p->next) { \ + snprintf(buf, len, "%s %s", p->str, p->str2); \ + func(buf, arg); \ + } \ + } +/** compare and print list option */ +#define O_LS3(opt, name, lst) if(strcmp(opt, name)==0) { \ + struct config_str3list* p = cfg->lst; \ + for(p = cfg->lst; p; p = p->next) { \ + snprintf(buf, len, "%s %s %s", p->str, p->str2, p->str3); \ func(buf, arg); \ + } \ + } +/** compare and print taglist option */ +#define O_LTG(opt, name, lst) if(strcmp(opt, name)==0) { \ + char* tmpstr = NULL; \ + struct config_strbytelist *p = cfg->lst; \ + for(p = cfg->lst; p; p = p->next) {\ + tmpstr = config_taglist2str(cfg, p->str2, p->str2len); \ + if(tmpstr) {\ + snprintf(buf, len, "%s %s", p->str, tmpstr); \ + func(buf, arg); \ + free(tmpstr); \ + } \ + } \ } int config_get_option(struct config_file* cfg, const char* opt, void (*func)(char*,void*), void* arg) { - char buf[1024]; + char buf[1024], nopt[64]; size_t len = sizeof(buf); + if(opt && opt[strlen(opt)-1] == ':' && strlen(opt)dnscrypt) cfg->dnscrypt_port = 0; + if(cfg_parser->errors != 0) { fprintf(stderr, "read %s failed: %d errors in configuration file\n", fname, cfg_parser->errors); @@ -864,6 +1153,18 @@ config_read(struct config_file* cfg, const char* filename, const char* chroot) return 1; } +struct config_stub* cfg_stub_find(struct config_stub*** pp, const char* nm) +{ + struct config_stub* p = *(*pp); + while(p) { + if(strcmp(p->name, nm) == 0) + return p; + (*pp) = &p->next; + p = p->next; + } + return NULL; +} + void config_delstrlist(struct config_strlist* p) { @@ -889,15 +1190,106 @@ config_deldblstrlist(struct config_str2list* p) } } +void +config_deltrplstrlist(struct config_str3list* p) +{ + struct config_str3list *np; + while(p) { + np = p->next; + free(p->str); + free(p->str2); + free(p->str3); + free(p); + p = np; + } +} + +void +config_delauth(struct config_auth* p) +{ + if(!p) return; + free(p->name); + config_delstrlist(p->masters); + config_delstrlist(p->urls); + config_delstrlist(p->allow_notify); + free(p->zonefile); + free(p); +} + +void +config_delauths(struct config_auth* p) +{ + struct config_auth* np; + while(p) { + np = p->next; + config_delauth(p); + p = np; + } +} + +void +config_delstub(struct config_stub* p) +{ + if(!p) return; + free(p->name); + config_delstrlist(p->hosts); + config_delstrlist(p->addrs); + free(p); +} + void config_delstubs(struct config_stub* p) { struct config_stub* np; while(p) { np = p->next; - free(p->name); - config_delstrlist(p->hosts); - config_delstrlist(p->addrs); + config_delstub(p); + p = np; + } +} + +void +config_delview(struct config_view* p) +{ + if(!p) return; + free(p->name); + config_deldblstrlist(p->local_zones); + config_delstrlist(p->local_zones_nodefault); + config_delstrlist(p->local_data); + free(p); +} + +void +config_delviews(struct config_view* p) +{ + struct config_view* np; + while(p) { + np = p->next; + config_delview(p); + p = np; + } +} +/** delete string array */ +static void +config_del_strarray(char** array, int num) +{ + int i; + if(!array) + return; + for(i=0; inext; + free(p->str); + free(p->str2); free(p); p = np; } @@ -915,26 +1307,26 @@ config_delete(struct config_file* cfg) free(cfg->target_fetch_policy); free(cfg->ssl_service_key); free(cfg->ssl_service_pem); - if(cfg->ifs) { - int i; - for(i=0; inum_ifs; i++) - free(cfg->ifs[i]); - free(cfg->ifs); - } - if(cfg->out_ifs) { - int i; - for(i=0; inum_out_ifs; i++) - free(cfg->out_ifs[i]); - free(cfg->out_ifs); - } + free(cfg->tls_cert_bundle); + config_delstrlist(cfg->tls_additional_port); + free(cfg->log_identity); + config_del_strarray(cfg->ifs, cfg->num_ifs); + config_del_strarray(cfg->out_ifs, cfg->num_out_ifs); config_delstubs(cfg->stubs); config_delstubs(cfg->forwards); + config_delauths(cfg->auths); + config_delviews(cfg->views); config_delstrlist(cfg->donotqueryaddrs); config_delstrlist(cfg->root_hints); +#ifdef CLIENT_SUBNET + config_delstrlist(cfg->client_subnet); + config_delstrlist(cfg->client_subnet_zone); +#endif free(cfg->identity); free(cfg->version); free(cfg->module_conf); free(cfg->outgoing_avail_ports); + free(cfg->python_script); config_delstrlist(cfg->caps_whitelist); config_delstrlist(cfg->private_address); config_delstrlist(cfg->private_domain); @@ -950,7 +1342,14 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->local_zones); config_delstrlist(cfg->local_zones_nodefault); config_delstrlist(cfg->local_data); - config_delstrlist(cfg->control_ifs); + config_deltrplstrlist(cfg->local_zone_overrides); + config_del_strarray(cfg->tagname, cfg->num_tags); + config_del_strbytelist(cfg->local_zone_tags); + config_del_strbytelist(cfg->acl_tags); + config_del_strbytelist(cfg->respip_tags); + config_deltrplstrlist(cfg->acl_tag_actions); + config_deltrplstrlist(cfg->acl_tag_datas); + config_delstrlist(cfg->control_ifs.first); free(cfg->server_key_file); free(cfg->server_cert_file); free(cfg->control_key_file); @@ -961,6 +1360,14 @@ config_delete(struct config_file* cfg) free(cfg->dnstap_version); config_deldblstrlist(cfg->ratelimit_for_domain); config_deldblstrlist(cfg->ratelimit_below_domain); +#ifdef USE_IPSECMOD + free(cfg->ipsecmod_hook); + config_delstrlist(cfg->ipsecmod_whitelist); +#endif +#ifdef USE_CACHEDB + free(cfg->cachedb_backend); + free(cfg->cachedb_secret); +#endif free(cfg); } @@ -1107,6 +1514,39 @@ int cfg_strlist_append(struct config_strlist_head* list, char* item) return 1; } +int +cfg_region_strlist_insert(struct regional* region, + struct config_strlist** head, char* item) +{ + struct config_strlist *s; + if(!item || !head) + return 0; + s = (struct config_strlist*)regional_alloc_zero(region, + sizeof(struct config_strlist)); + if(!s) + return 0; + s->str = item; + s->next = *head; + *head = s; + return 1; +} + +struct config_strlist* +cfg_strlist_find(struct config_strlist* head, const char *item) +{ + struct config_strlist *s = head; + if(!head){ + return NULL; + } + while(s) { + if(strcmp(s->str, item) == 0) { + return s; + } + s = s->next; + } + return NULL; +} + int cfg_strlist_insert(struct config_strlist** head, char* item) { @@ -1138,6 +1578,42 @@ cfg_str2list_insert(struct config_str2list** head, char* item, char* i2) return 1; } +int +cfg_str3list_insert(struct config_str3list** head, char* item, char* i2, + char* i3) +{ + struct config_str3list *s; + if(!item || !i2 || !i3 || !head) + return 0; + s = (struct config_str3list*)calloc(1, sizeof(struct config_str3list)); + if(!s) + return 0; + s->str = item; + s->str2 = i2; + s->str3 = i3; + s->next = *head; + *head = s; + return 1; +} + +int +cfg_strbytelist_insert(struct config_strbytelist** head, char* item, + uint8_t* i2, size_t i2len) +{ + struct config_strbytelist* s; + if(!item || !i2 || !head) + return 0; + s = (struct config_strbytelist*)calloc(1, sizeof(*s)); + if(!s) + return 0; + s->str = item; + s->str2 = i2; + s->str2len = i2len; + s->next = *head; + *head = s; + return 1; +} + time_t cfg_convert_timeval(const char* str) { @@ -1242,6 +1718,123 @@ cfg_parse_memsize(const char* str, size_t* res) return 1; } +int +find_tag_id(struct config_file* cfg, const char* tag) +{ + int i; + for(i=0; inum_tags; i++) { + if(strcmp(cfg->tagname[i], tag) == 0) + return i; + } + return -1; +} + +int +config_add_tag(struct config_file* cfg, const char* tag) +{ + char** newarray; + char* newtag; + if(find_tag_id(cfg, tag) != -1) + return 1; /* nothing to do */ + newarray = (char**)malloc(sizeof(char*)*(cfg->num_tags+1)); + if(!newarray) + return 0; + newtag = strdup(tag); + if(!newtag) { + free(newarray); + return 0; + } + if(cfg->tagname) { + memcpy(newarray, cfg->tagname, sizeof(char*)*cfg->num_tags); + free(cfg->tagname); + } + newarray[cfg->num_tags++] = newtag; + cfg->tagname = newarray; + return 1; +} + +/** set a bit in a bit array */ +static void +cfg_set_bit(uint8_t* bitlist, size_t len, int id) +{ + int pos = id/8; + log_assert((size_t)pos < len); + (void)len; + bitlist[pos] |= 1<<(id%8); +} + +uint8_t* config_parse_taglist(struct config_file* cfg, char* str, + size_t* listlen) +{ + uint8_t* taglist = NULL; + size_t len = 0; + char* p, *s; + + /* allocate */ + if(cfg->num_tags == 0) { + log_err("parse taglist, but no tags defined"); + return 0; + } + len = (size_t)(cfg->num_tags+7)/8; + taglist = calloc(1, len); + if(!taglist) { + log_err("out of memory"); + return 0; + } + + /* parse */ + s = str; + while((p=strsep(&s, " \t\n")) != NULL) { + if(*p) { + int id = find_tag_id(cfg, p); + /* set this bit in the bitlist */ + if(id == -1) { + log_err("unknown tag: %s", p); + free(taglist); + return 0; + } + cfg_set_bit(taglist, len, id); + } + } + + *listlen = len; + return taglist; +} + +char* config_taglist2str(struct config_file* cfg, uint8_t* taglist, + size_t taglen) +{ + char buf[10240]; + size_t i, j, len = 0; + buf[0] = 0; + for(i=0; itagname[id]); + len += strlen(buf+len); + } + } + } + return strdup(buf); +} + +int taglist_intersect(uint8_t* list1, size_t list1len, uint8_t* list2, + size_t list2len) +{ + size_t i; + if(!list1 || !list2) + return 0; + for(i=0; iremote_control_enable) return 0; + if(!cfg->control_ifs.first) return 1; + if(!cfg->control_ifs.first->str) return 1; + if(cfg->control_ifs.first->str[0] == 0) return 1; + return (cfg->control_ifs.first->str[0] != '/'); +} diff --git a/external/unbound/util/config_file.h b/external/unbound/util/config_file.h index 8fa163e..4206eb9 100644 --- a/external/unbound/util/config_file.h +++ b/external/unbound/util/config_file.h @@ -42,11 +42,24 @@ #ifndef UTIL_CONFIG_FILE_H #define UTIL_CONFIG_FILE_H struct config_stub; +struct config_auth; +struct config_view; struct config_strlist; struct config_str2list; +struct config_str3list; +struct config_strbytelist; struct module_qstate; struct sock_list; struct ub_packed_rrset_key; +struct regional; + +/** List head for strlist processing, used for append operation. */ +struct config_strlist_head { + /** first in list of text items */ + struct config_strlist* first; + /** last in list of text items */ + struct config_strlist* last; +}; /** * The configuration options. @@ -72,12 +85,20 @@ struct config_file { int do_ip4; /** do ip6 query support. */ int do_ip6; + /** prefer ip6 upstream queries. */ + int prefer_ip6; /** do udp query support. */ int do_udp; /** do tcp query support. */ int do_tcp; /** tcp upstream queries (no UDP upstream queries) */ int tcp_upstream; + /** udp upstream enabled when no UDP downstream is enabled (do_udp no)*/ + int udp_upstream_without_downstream; + /** maximum segment size of tcp socket which queries are answered */ + int tcp_mss; + /** maximum segment size of tcp socket for outgoing queries */ + int outgoing_tcp_mss; /** private key file for dnstcp-ssl service (enabled if not NULL) */ char* ssl_service_key; @@ -87,6 +108,12 @@ struct config_file { int ssl_port; /** if outgoing tcp connections use SSL */ int ssl_upstream; + /** cert bundle for outgoing connections */ + char* tls_cert_bundle; + /** should the system certificate store get added to the cert bundle */ + int tls_win_cert; + /** additional tls ports */ + struct config_strlist* tls_additional_port; /** outgoing port range number of ports (per thread) */ int outgoing_num_ports; @@ -126,6 +153,10 @@ struct config_file { /** the target fetch policy for the iterator */ char* target_fetch_policy; + /** percent*10, how many times in 1000 to pick low rtt destinations */ + int low_rtt_permil; + /** what time in msec is a low rtt destination */ + int low_rtt; /** automatic interface for incoming messages. Uses ipv6 remapping, * and recvmsg/sendmsg ancillary data to detect interfaces, boolean */ @@ -138,6 +169,8 @@ struct config_file { int so_reuseport; /** IP_TRANSPARENT socket option requested on port 53 sockets */ int ip_transparent; + /** IP_FREEBIND socket option request on port 53 sockets */ + int ip_freebind; /** number of interfaces to open. If 0 default all interfaces. */ int num_ifs; @@ -156,8 +189,26 @@ struct config_file { struct config_stub* stubs; /** the forward zone definitions, linked list */ struct config_stub* forwards; + /** the auth zone definitions, linked list */ + struct config_auth* auths; + /** the views definitions, linked list */ + struct config_view* views; /** list of donotquery addresses, linked list */ struct config_strlist* donotqueryaddrs; +#ifdef CLIENT_SUBNET + /** list of servers we send edns-client-subnet option to and + * accept option from, linked list */ + struct config_strlist* client_subnet; + /** list of zones we send edns-client-subnet option for */ + struct config_strlist* client_subnet_zone; + /** opcode assigned by IANA for edns0-client-subnet option */ + uint16_t client_subnet_opcode; + /** Do not check whitelist if incoming query contains an ECS record */ + int client_subnet_always_forward; + /** Subnet length we are willing to give up privacy for */ + uint8_t max_client_subnet_ipv4; + uint8_t max_client_subnet_ipv6; +#endif /** list of access control entries, linked list */ struct config_str2list* acls; /** use default localhost donotqueryaddr entries */ @@ -215,11 +266,17 @@ struct config_file { int log_time_ascii; /** log queries with one line per query */ int log_queries; + /** log replies with one line per reply */ + int log_replies; + /** log identity to report */ + char* log_identity; /** do not report identity (id.server, hostname.bind) */ int hide_identity; /** do not report version (version.server, version.bind) */ int hide_version; + /** do not report trustanchor (trustanchor.unbound) */ + int hide_trustanchor; /** identity, hostname is returned if "". */ char* identity; /** version, package version returned if "". */ @@ -242,6 +299,10 @@ struct config_file { struct config_strlist* dlv_anchor_list; /** insecure domain list */ struct config_strlist* domain_insecure; + /** send key tag query */ + int trust_anchor_signaling; + /** enable root key sentinel */ + int root_key_sentinel; /** if not 0, this value is the validation date for RRSIGs */ int32_t val_date_override; @@ -259,8 +320,12 @@ struct config_file { int val_log_squelch; /** should validator allow bogus messages to go through */ int val_permissive_mode; + /** use cached NSEC records to synthesise (negative) answers */ + int aggressive_nsec; /** ignore the CD flag in incoming queries and refuse them bogus data */ int ignore_cd; + /** serve expired entries and prefetch them */ + int serve_expired; /** nsec3 maximum iterations per key size, string */ char* val_nsec3_key_iterations; /** autotrust add holddown time, in seconds */ @@ -283,19 +348,45 @@ struct config_file { struct config_str2list* local_zones; /** local zones nodefault list */ struct config_strlist* local_zones_nodefault; + /** do not add any default local zone */ + int local_zones_disable_default; /** local data RRs configured */ struct config_strlist* local_data; - /** unblock lan zones (reverse lookups for 10/8 and so on) */ + /** local zone override types per netblock */ + struct config_str3list* local_zone_overrides; + /** unblock lan zones (reverse lookups for AS112 zones) */ int unblock_lan_zones; + /** insecure lan zones (don't validate AS112 zones) */ + int insecure_lan_zones; + /** list of zonename, tagbitlist */ + struct config_strbytelist* local_zone_tags; + /** list of aclname, tagbitlist */ + struct config_strbytelist* acl_tags; + /** list of aclname, tagname, localzonetype */ + struct config_str3list* acl_tag_actions; + /** list of aclname, tagname, redirectdata */ + struct config_str3list* acl_tag_datas; + /** list of aclname, view*/ + struct config_str2list* acl_view; + /** list of IP-netblock, tagbitlist */ + struct config_strbytelist* respip_tags; + /** list of response-driven access control entries, linked list */ + struct config_str2list* respip_actions; + /** RRs configured for response-driven access controls */ + struct config_str2list* respip_data; + /** tag list, array with tagname[i] is malloced string */ + char** tagname; + /** number of items in the taglist */ + int num_tags; /** remote control section. enable toggle. */ int remote_control_enable; /** the interfaces the remote control should listen on */ - struct config_strlist* control_ifs; + struct config_strlist_head control_ifs; + /** if the use-cert option is set */ + int control_use_cert; /** port number for the control port */ int control_port; - /** use certificates for remote control */ - int remote_control_use_cert; /** private key file for server */ char* server_key_file; /** certificate file for server */ @@ -308,6 +399,9 @@ struct config_file { /** Python script file */ char* python_script; + /** Use systemd socket activation. */ + int use_systemd; + /** daemonize, i.e. fork into the background. */ int do_daemonize; @@ -352,7 +446,19 @@ struct config_file { /** true to log dnstap FORWARDER_RESPONSE message events */ int dnstap_log_forwarder_response_messages; - /** ratelimit 0 is off, otherwise qps (unless overridden) */ + /** true to disable DNSSEC lameness check in iterator */ + int disable_dnssec_lame_check; + + /** ratelimit for ip addresses. 0 is off, otherwise qps (unless overridden) */ + int ip_ratelimit; + /** number of slabs for ip_ratelimit cache */ + size_t ip_ratelimit_slabs; + /** memory size in bytes for ip_ratelimit cache */ + size_t ip_ratelimit_size; + /** ip_ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ + int ip_ratelimit_factor; + + /** ratelimit for domains. 0 is off, otherwise qps (unless overridden) */ int ratelimit; /** number of slabs for ratelimit cache */ size_t ratelimit_slabs; @@ -366,11 +472,73 @@ struct config_file { int ratelimit_factor; /** minimise outgoing QNAME and hide original QTYPE if possible */ int qname_minimisation; + /** minimise QNAME in strict mode, minimise according to RFC. + * Do not apply fallback */ + int qname_minimisation_strict; + /** SHM data - true if shm is enabled */ + int shm_enable; + /** SHM data - key for the shm */ + int shm_key; + + /** DNSCrypt */ + /** true to enable dnscrypt */ + int dnscrypt; + /** port on which to provide dnscrypt service */ + int dnscrypt_port; + /** provider name 2.dnscrypt-cert.example.com */ + char* dnscrypt_provider; + /** dnscrypt secret keys 1.key */ + struct config_strlist* dnscrypt_secret_key; + /** dnscrypt provider certs 1.cert */ + struct config_strlist* dnscrypt_provider_cert; + /** dnscrypt provider certs 1.cert which have been rotated and should not be + * advertised through DNS's providername TXT record but are required to be + * able to handle existing traffic using the old cert. */ + struct config_strlist* dnscrypt_provider_cert_rotated; + /** memory size in bytes for dnscrypt shared secrets cache */ + size_t dnscrypt_shared_secret_cache_size; + /** number of slabs for dnscrypt shared secrets cache */ + size_t dnscrypt_shared_secret_cache_slabs; + /** memory size in bytes for dnscrypt nonces cache */ + size_t dnscrypt_nonce_cache_size; + /** number of slabs for dnscrypt nonces cache */ + size_t dnscrypt_nonce_cache_slabs; + /** IPsec module */ +#ifdef USE_IPSECMOD + /** false to bypass the IPsec module */ + int ipsecmod_enabled; + /** whitelisted domains for ipsecmod */ + struct config_strlist* ipsecmod_whitelist; + /** path to external hook */ + char* ipsecmod_hook; + /** true to proceed even with a bogus IPSECKEY */ + int ipsecmod_ignore_bogus; + /** max TTL for the A/AAAA records that call the hook */ + int ipsecmod_max_ttl; + /** false to proceed even when ipsecmod_hook fails */ + int ipsecmod_strict; +#endif + + /* cachedb module */ +#ifdef USE_CACHEDB + /** backend DB name */ + char* cachedb_backend; + /** secret seed for hash key calculation */ + char* cachedb_secret; +#ifdef USE_REDIS + /** redis server's IP address or host name */ + char* redis_server_host; + /** redis server's TCP port */ + int redis_server_port; + /** timeout (in ms) for communication with the redis server */ + int redis_timeout; +#endif +#endif }; -/** from cfg username, after daemonise setup performed */ +/** from cfg username, after daemonize setup performed */ extern uid_t cfg_uid; -/** from cfg username, after daemonise setup performed */ +/** from cfg username, after daemonize setup performed */ extern gid_t cfg_gid; /** debug and enable small timeouts */ extern int autr_permit_small_holddown; @@ -391,6 +559,56 @@ struct config_stub { int isprime; /** if forward-first is set (failover to without if fails) */ int isfirst; + /** use SSL for queries to this stub */ + int ssl_upstream; +}; + +/** + * Auth config options + */ +struct config_auth { + /** next in list */ + struct config_auth* next; + /** domain name (in text) of the auth apex domain */ + char* name; + /** list of masters */ + struct config_strlist* masters; + /** list of urls */ + struct config_strlist* urls; + /** list of allow-notify */ + struct config_strlist* allow_notify; + /** zonefile (or NULL) */ + char* zonefile; + /** provide downstream answers */ + int for_downstream; + /** provide upstream answers */ + int for_upstream; + /** fallback to recursion to authorities if zone expired and other + * reasons perhaps (like, query bogus) */ + int fallback_enabled; +}; + +/** + * View config options + */ +struct config_view { + /** next in list */ + struct config_view* next; + /** view name */ + char* name; + /** local zones */ + struct config_str2list* local_zones; + /** local data RRs */ + struct config_strlist* local_data; + /** local zones nodefault list */ + struct config_strlist* local_zones_nodefault; + /** Fallback to global local_zones when there is no match in the view + * view specific tree. 1 for yes, 0 for no */ + int isfirst; + /** predefined actions for particular IP address responses */ + struct config_str2list* respip_actions; + /** data complementing the 'redirect' response IP actions */ + struct config_str2list* respip_data; }; /** @@ -415,12 +633,32 @@ struct config_str2list { char* str2; }; -/** List head for strlist processing, used for append operation. */ -struct config_strlist_head { - /** first in list of text items */ - struct config_strlist* first; - /** last in list of text items */ - struct config_strlist* last; +/** + * List of three strings for config options + */ +struct config_str3list { + /** next item in list */ + struct config_str3list* next; + /** first string */ + char* str; + /** second string */ + char* str2; + /** third string */ + char* str3; +}; + + +/** + * List of string, bytestring for config options + */ +struct config_strbytelist { + /** next item in list */ + struct config_strbytelist* next; + /** first string */ + char* str; + /** second bytestring */ + uint8_t* str2; + size_t str2len; }; /** @@ -536,6 +774,15 @@ char* config_collate_cat(struct config_strlist* list); */ int cfg_strlist_append(struct config_strlist_head* list, char* item); +/** + * Find string in strlist. + * @param head: pointer to strlist head variable. + * @param item: the item to search for. + * @return: the element in the list when found, NULL otherwise. + */ +struct config_strlist* cfg_strlist_find(struct config_strlist* head, + const char* item); + /** * Insert string into strlist. * @param head: pointer to strlist head variable. @@ -544,6 +791,10 @@ int cfg_strlist_append(struct config_strlist_head* list, char* item); */ int cfg_strlist_insert(struct config_strlist** head, char* item); +/** insert with region for allocation. */ +int cfg_region_strlist_insert(struct regional* region, + struct config_strlist** head, char* item); + /** * Insert string into str2list. * @param head: pointer to str2list head variable. @@ -553,6 +804,39 @@ int cfg_strlist_insert(struct config_strlist** head, char* item); */ int cfg_str2list_insert(struct config_str2list** head, char* item, char* i2); +/** + * Insert string into str3list. + * @param head: pointer to str3list head variable. + * @param item: new item. malloced by caller. If NULL the insertion fails. + * @param i2: 2nd string, malloced by caller. If NULL the insertion fails. + * @param i3: 3rd string, malloced by caller. If NULL the insertion fails. + * @return: true on success. + */ +int cfg_str3list_insert(struct config_str3list** head, char* item, char* i2, + char* i3); + +/** + * Insert string into strbytelist. + * @param head: pointer to strbytelist head variable. + * @param item: new item. malloced by caller. If NULL the insertion fails. + * @param i2: 2nd string, malloced by caller. If NULL the insertion fails. + * @param i2len: length of the i2 bytestring. + * @return: true on success. + */ +int cfg_strbytelist_insert(struct config_strbytelist** head, char* item, + uint8_t* i2, size_t i2len); + +/** + * Find stub in config list, also returns prevptr (for deletion). + * @param pp: call routine with pointer to a pointer to the start of the list, + * if the stub is found, on exit, the value contains a pointer to the + * next pointer that points to the found element (or to the list start + * pointer if it is the first element). + * @param nm: name of stub to find. + * @return: pointer to config_stub if found, or NULL if not found. + */ +struct config_stub* cfg_stub_find(struct config_stub*** pp, const char* nm); + /** * Delete items in config string list. * @param list: list. @@ -565,12 +849,55 @@ void config_delstrlist(struct config_strlist* list); */ void config_deldblstrlist(struct config_str2list* list); +/** + * Delete items in config triple string list. + * @param list: list. + */ +void config_deltrplstrlist(struct config_str3list* list); + +/** delete stringbytelist */ +void config_del_strbytelist(struct config_strbytelist* list); + +/** + * Delete a stub item + * @param p: stub item + */ +void config_delstub(struct config_stub* p); + /** * Delete items in config stub list. * @param list: list. */ void config_delstubs(struct config_stub* list); +/** + * Delete an auth item + * @param p: auth item + */ +void config_delauth(struct config_auth* p); + +/** + * Delete items in config auth list. + * @param list: list. + */ +void config_delauths(struct config_auth* list); + +/** + * Delete a view item + * @param p: view item + */ +void config_delview(struct config_view* p); + +/** + * Delete items in config view list. + * @param list: list. + */ +void config_delviews(struct config_view* list); + +/** check if config for remote control turns on IP-address interface + * with certificates or a named pipe without certificates. */ +int options_remote_is_address(struct config_file* cfg); + /** * Convert 14digit to time value * @param str: string of 14 digits @@ -601,6 +928,54 @@ int cfg_count_numbers(const char* str); */ int cfg_parse_memsize(const char* str, size_t* res); +/** + * Add a tag name to the config. It is added at the end with a new ID value. + * @param cfg: the config structure. + * @param tag: string (which is copied) with the name. + * @return: false on alloc failure. + */ +int config_add_tag(struct config_file* cfg, const char* tag); + +/** + * Find tag ID in the tag list. + * @param cfg: the config structure. + * @param tag: string with tag name to search for. + * @return: 0..(num_tags-1) with tag ID, or -1 if tagname is not found. + */ +int find_tag_id(struct config_file* cfg, const char* tag); + +/** + * parse taglist from string into bytestring with bitlist. + * @param cfg: the config structure (with tagnames) + * @param str: the string to parse. Parse puts 0 bytes in string. + * @param listlen: returns length of in bytes. + * @return malloced bytes with a bitlist of the tags. or NULL on parse error + * or malloc failure. + */ +uint8_t* config_parse_taglist(struct config_file* cfg, char* str, + size_t* listlen); + +/** + * convert tag bitlist to a malloced string with tag names. For debug output. + * @param cfg: the config structure (with tagnames) + * @param taglist: the tag bitlist. + * @param len: length of the tag bitlist. + * @return malloced string or NULL. + */ +char* config_taglist2str(struct config_file* cfg, uint8_t* taglist, + size_t len); + +/** + * see if two taglists intersect (have tags in common). + * @param list1: first tag bitlist. + * @param list1len: length in bytes of first list. + * @param list2: second tag bitlist. + * @param list2len: length in bytes of second list. + * @return true if there are tags in common, 0 if not. + */ +int taglist_intersect(uint8_t* list1, size_t list1len, uint8_t* list2, + size_t list2len); + /** * Parse local-zone directive into two strings and register it in the config. * @param cfg: to put it in. @@ -746,4 +1121,7 @@ char* w_lookup_reg_str(const char* key, const char* name); void w_config_adjust_directory(struct config_file* cfg); #endif /* UB_ON_WINDOWS */ +/** debug option for unit tests. */ +extern int fake_dsa, fake_sha1; + #endif /* UTIL_CONFIG_FILE_H */ diff --git a/external/unbound/util/configlexer.c b/external/unbound/util/configlexer.c index a9fe541..a869066 100644 --- a/external/unbound/util/configlexer.c +++ b/external/unbound/util/configlexer.c @@ -9,8 +9,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 37 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -89,25 +89,13 @@ typedef unsigned int flex_uint32_t; #endif /* ! FLEXINT_H */ -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #endif /* Returned upon end-of-file. */ @@ -143,7 +131,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -160,7 +156,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; typedef size_t yy_size_t; #endif -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -169,13 +165,14 @@ extern FILE *yyin, *yyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -198,12 +195,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -254,7 +251,7 @@ struct yy_buffer_state /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general @@ -273,11 +270,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; +static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -302,7 +299,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -336,7 +333,7 @@ void yyfree (void * ); typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; @@ -345,12 +342,15 @@ extern int yylineno; int yylineno = 1; extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); +static void yynoreturn yy_fatal_error (yyconst char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -358,13 +358,13 @@ static void yy_fatal_error (yyconst char msg[] ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ (yytext_ptr) -= (yy_more_len); \ - yyleng = (size_t) (yy_cp - (yytext_ptr)); \ + yyleng = (int) (yy_cp - (yytext_ptr)); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 176 -#define YY_END_OF_BUFFER 177 +#define YY_NUM_RULES 267 +#define YY_END_OF_BUFFER 268 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,220 +372,316 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1771] = +static yyconst flex_int16_t yy_accept[2632] = { 0, - 1, 1, 158, 158, 162, 162, 166, 166, 170, 170, - 1, 1, 177, 174, 1, 156, 156, 175, 2, 175, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 158, 159, 159, 160, 175, 162, 163, 163, 164, 175, - 169, 166, 167, 167, 168, 175, 170, 171, 171, 172, - 175, 173, 157, 2, 161, 175, 173, 174, 0, 1, - 2, 2, 2, 2, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 158, 0, 162, 0, - 169, 0, 166, 170, 0, 173, 0, 2, 2, 173, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 173, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 173, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 71, 174, 174, 174, 174, 174, 174, 7, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 173, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 173, 174, 174, 174, 174, 174, - 31, 174, 174, 174, 174, 174, 174, 174, 174, 137, - 174, 13, 14, 174, 16, 15, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 130, 174, 174, 174, 174, - 174, 174, 174, 3, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 173, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 165, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 34, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 35, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 86, 165, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 85, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 69, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 21, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 32, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 33, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 23, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 150, 174, 174, 174, - 174, 174, 174, 27, 174, 28, 174, 174, 174, 72, - 174, 73, 174, 70, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 6, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 88, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 24, - 174, 174, 174, 174, 174, 114, 113, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 36, 174, 174, 174, 174, 174, 174, 174, 174, - 75, 74, 174, 174, 174, 174, 174, 174, 174, 110, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 54, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 58, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 112, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 5, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 106, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 123, 174, 107, 174, 135, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 22, - 174, 174, 174, 174, 77, 174, 78, 76, 174, 174, - 174, 174, 174, 174, 174, 84, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 108, 174, 174, - 174, 174, 134, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 68, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 29, 174, 174, 18, 174, 174, 174, 17, 174, 93, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 43, 45, 174, 174, 174, 174, - 174, 174, 174, 174, 138, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 79, 174, - 174, 174, 174, 174, 174, 83, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 87, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 129, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 97, 174, - 101, 174, 174, 174, 174, 82, 174, 174, 64, 174, - - 121, 174, 174, 174, 174, 136, 174, 174, 174, 174, - 174, 174, 174, 143, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 100, 174, 174, 174, 174, - 174, 46, 47, 174, 30, 53, 102, 174, 115, 111, - 174, 174, 39, 174, 104, 174, 174, 174, 174, 174, - 8, 174, 174, 67, 174, 174, 174, 174, 152, 174, - 120, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 89, 142, - 174, 174, 174, 174, 174, 174, 174, 174, 131, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 103, 174, 38, 40, 174, 174, 174, - 174, 174, 174, 66, 174, 174, 174, 174, 151, 174, - 174, 174, 174, 125, 19, 20, 174, 174, 174, 174, - 174, 174, 174, 63, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 127, 124, 174, 174, 174, 174, - 174, 174, 174, 174, 37, 174, 174, 174, 174, 174, - 174, 174, 12, 174, 174, 174, 174, 174, 174, 174, - 174, 11, 174, 174, 174, 174, 174, 155, 174, 41, - 174, 133, 126, 174, 174, 174, 174, 174, 174, 174, - - 174, 174, 174, 174, 96, 95, 174, 174, 128, 122, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 48, 174, - 132, 174, 174, 174, 174, 174, 174, 174, 174, 42, - 174, 174, 174, 90, 92, 116, 174, 174, 174, 94, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 139, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 25, 174, 174, 174, 4, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 141, 174, 174, 119, 174, - - 174, 174, 174, 174, 174, 174, 51, 174, 26, 174, - 10, 174, 174, 174, 174, 174, 117, 55, 174, 174, - 174, 99, 174, 174, 174, 174, 174, 174, 174, 140, - 80, 174, 174, 174, 174, 57, 61, 56, 174, 49, - 174, 9, 174, 174, 153, 174, 174, 98, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 62, 60, - 174, 50, 174, 109, 174, 118, 174, 174, 91, 44, - 174, 174, 174, 174, 174, 174, 81, 59, 52, 154, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 65, 174, 174, 174, - - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 105, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 146, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 144, 174, - 147, 148, 174, 174, 174, 174, 174, 145, 149, 0 + 1, 1, 249, 249, 253, 253, 257, 257, 261, 261, + 1, 1, 268, 265, 1, 247, 247, 266, 2, 266, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 249, 250, 250, 251, 266, 253, 254, 254, + 255, 266, 260, 257, 258, 258, 259, 266, 261, 262, + 262, 263, 266, 264, 248, 2, 252, 266, 264, 265, + 0, 1, 2, 2, 2, 2, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 249, + 0, 253, 0, 260, 0, 257, 261, 0, 264, 0, + 2, 2, 264, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 264, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 104, 265, 265, 265, 265, 265, 265, 265, 264, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 88, 265, 265, 265, 265, + 265, 265, 8, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 109, 265, 264, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 264, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 48, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 193, + 265, 14, 15, 265, 18, 17, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 103, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 179, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 3, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 264, 265, 265, 265, 265, 265, 265, 265, + 241, 265, 265, 240, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 256, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 51, 265, 217, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 52, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 168, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 20, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 124, 265, 265, 256, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 223, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 143, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 123, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 86, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 28, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 29, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 49, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 102, 265, 265, 265, 265, 265, 101, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 50, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 144, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 39, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 208, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 43, + 265, 44, 265, 265, 265, 265, 89, 265, 90, 265, + + 265, 265, 87, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 7, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 186, 265, 265, 265, 265, 126, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 40, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 160, + 265, 159, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 16, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 53, 265, 265, 265, + 265, 265, 265, 265, 265, 167, 265, 265, 265, 265, + 265, 92, 91, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 154, 265, + 265, 265, 265, 265, 265, 265, 265, 110, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 71, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 75, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 47, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 157, 158, 265, 218, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 6, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 221, + 265, 265, 265, 242, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 37, + 265, 265, 265, 265, 265, 265, 265, 265, 150, 265, + 265, 265, 105, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 172, 265, 151, 265, 265, 184, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 38, 265, 265, 265, 265, + 265, 265, 107, 96, 265, 97, 265, 265, 95, 265, + + 265, 265, 265, 265, 265, 265, 265, 121, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 207, + 265, 265, 265, 265, 265, 265, 265, 265, 152, 265, + 265, 265, 265, 265, 155, 265, 265, 265, 183, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 85, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 45, 265, 265, 265, 22, 265, + 265, 265, 265, 265, 19, 265, 265, 265, 265, 23, + 32, 265, 131, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 60, 62, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 225, 265, 265, 265, 194, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 98, 265, 265, 265, 265, + 265, 265, 265, 265, 120, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 236, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 125, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 178, + + 265, 265, 265, 265, 265, 265, 265, 265, 245, 265, + 265, 265, 265, 265, 265, 265, 265, 142, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 137, + 265, 145, 265, 265, 265, 265, 265, 113, 265, 265, + 265, 265, 265, 81, 265, 265, 265, 265, 170, 265, + 265, 265, 265, 265, 185, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 199, 265, 265, + 265, 265, 265, 265, 106, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 141, 265, 265, 265, 265, 265, + + 63, 64, 265, 265, 265, 265, 265, 46, 265, 265, + 265, 265, 265, 70, 146, 265, 161, 265, 187, 156, + 219, 265, 265, 265, 56, 265, 148, 265, 265, 265, + 265, 265, 9, 265, 265, 265, 84, 265, 265, 265, + 265, 212, 265, 265, 265, 169, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 140, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 127, 224, 265, 265, 265, + + 265, 198, 265, 265, 265, 265, 265, 265, 265, 265, + 180, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 239, 265, 147, 265, + 265, 265, 55, 57, 265, 265, 265, 265, 265, 265, + 265, 83, 265, 265, 265, 265, 210, 265, 265, 265, + 220, 265, 265, 265, 265, 265, 265, 174, 30, 24, + 26, 265, 265, 265, 265, 265, 265, 31, 25, 27, + 265, 265, 265, 265, 265, 265, 80, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 176, 173, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 54, + 265, 108, 265, 265, 265, 265, 265, 265, 265, 265, + 122, 13, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 234, 265, 237, 265, 265, 265, 265, 265, 265, + 12, 265, 265, 21, 265, 265, 265, 216, 265, 265, + 265, 222, 265, 58, 265, 182, 265, 175, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 136, 135, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 177, 171, 265, 265, 265, + + 226, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 65, 265, 265, 265, 211, 265, 265, + 265, 265, 265, 181, 265, 265, 265, 265, 265, 265, + 265, 265, 243, 244, 133, 59, 265, 265, 265, 93, + 94, 265, 265, 128, 265, 130, 265, 162, 265, 265, + 265, 134, 265, 265, 188, 265, 265, 265, 265, 265, + 265, 265, 115, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 195, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 163, + + 265, 265, 209, 265, 238, 265, 265, 265, 41, 265, + 265, 265, 265, 4, 265, 265, 114, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 191, + 33, 34, 265, 265, 265, 265, 265, 265, 265, 227, + 265, 265, 265, 265, 265, 265, 197, 265, 265, 166, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 68, + 265, 42, 215, 265, 192, 265, 265, 11, 265, 265, + 265, 265, 265, 265, 164, 72, 36, 265, 265, 265, + 265, 265, 265, 139, 265, 265, 265, 265, 265, 117, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 196, + + 111, 265, 99, 100, 265, 265, 265, 74, 78, 73, + 265, 66, 265, 265, 265, 10, 265, 265, 265, 213, + 265, 35, 265, 265, 265, 138, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 79, 77, 265, 67, 235, 265, 265, + 265, 153, 265, 265, 165, 265, 265, 265, 265, 265, + 265, 129, 61, 265, 265, 265, 265, 265, 228, 265, + 265, 265, 265, 265, 265, 265, 112, 76, 118, 119, + 69, 265, 214, 132, 265, 265, 265, 265, 190, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 82, 265, 189, 265, 206, 232, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 5, 265, 265, 265, 233, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 116, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 149, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 229, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 246, + + 265, 265, 202, 265, 265, 265, 265, 265, 230, 265, + 265, 265, 265, 265, 265, 231, 265, 265, 265, 200, + 265, 203, 204, 265, 265, 265, 265, 265, 201, 205, + 0 } ; -static yyconst flex_int32_t yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, - 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, - 9, 10, 1, 11, 1, 1, 1, 12, 1, 1, + 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, + 10, 11, 1, 12, 1, 1, 1, 13, 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, 13, 1, 1, 1, 1, 14, 15, 16, 17, + 1, 14, 1, 1, 1, 1, 15, 16, 17, 18, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 1, 1, 1, 1, 1, 1, 1, 1, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 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, 1, 1, 1, @@ -602,1200 +698,1750 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[40] = +static yyconst YY_CHAR yy_meta[41] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, - 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 7, 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, 1 } ; -static yyconst flex_int16_t yy_base[1785] = +static yyconst flex_uint16_t yy_base[2646] = { 0, - 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2403, 1986, 50, 3503, 3503, 3503, 129, 94, - 70, 104, 130, 90, 92, 115, 127, 95, 84, 111, - 137, 148, 50, 170, 122, 150, 157, 160, 140, 166, - 1934, 3503, 3503, 3503, 70, 1883, 3503, 3503, 3503, 42, - 1800, 1768, 3503, 3503, 3503, 192, 1510, 3503, 3503, 3503, - 141, 849, 3503, 198, 3503, 202, 197, 811, 210, 120, - 0, 223, 0, 0, 103, 203, 180, 205, 164, 206, - 213, 210, 125, 216, 224, 218, 226, 227, 229, 230, - 231, 238, 248, 244, 240, 250, 253, 233, 249, 258, - - 264, 261, 265, 266, 267, 270, 269, 276, 277, 278, - 173, 280, 283, 284, 285, 289, 295, 281, 291, 297, - 301, 302, 303, 306, 308, 309, 668, 250, 392, 319, - 382, 327, 363, 322, 333, 243, 339, 343, 0, 336, - 340, 346, 314, 342, 338, 344, 347, 353, 351, 360, - 363, 384, 364, 349, 366, 49, 358, 369, 372, 370, - 375, 373, 376, 377, 379, 380, 394, 400, 407, 408, - 406, 395, 414, 412, 423, 424, 420, 421, 422, 410, - 425, 411, 429, 426, 435, 432, 436, 438, 441, 442, - 449, 445, 446, 450, 458, 451, 452, 454, 467, 471, - - 472, 468, 459, 469, 481, 479, 487, 473, 475, 486, - 483, 489, 495, 500, 498, 501, 490, 503, 504, 505, - 510, 516, 512, 513, 515, 522, 521, 524, 523, 525, - 527, 529, 530, 531, 533, 537, 536, 540, 543, 546, - 535, 548, 550, 551, 558, 564, 559, 565, 566, 568, - 570, 573, 571, 574, 581, 582, 583, 590, 584, 587, - 588, 595, 596, 597, 605, 602, 598, 601, 599, 608, - 610, 611, 630, 616, 618, 620, 624, 623, 628, 639, - 635, 636, 637, 640, 659, 647, 650, 662, 653, 660, - 673, 661, 663, 666, 672, 674, 680, 675, 677, 678, - - 683, 685, 694, 688, 701, 689, 699, 704, 702, 706, - 708, 715, 711, 712, 713, 714, 716, 722, 720, 723, - 3503, 728, 726, 730, 731, 733, 734, 3503, 735, 736, - 737, 744, 743, 745, 749, 759, 742, 748, 758, 761, - 762, 763, 764, 766, 786, 769, 767, 776, 772, 773, - 790, 626, 795, 782, 788, 784, 798, 801, 803, 804, - 805, 806, 774, 814, 807, 810, 816, 818, 831, 815, - 820, 822, 833, 834, 835, 841, 839, 843, 845, 855, - 847, 857, 858, 838, 860, 862, 868, 867, 864, 861, - 875, 872, 873, 876, 882, 874, 880, 890, 886, 893, - - 897, 898, 878, 899, 889, 900, 907, 908, 906, 910, - 911, 915, 917, 924, 920, 918, 922, 935, 926, 928, - 937, 929, 940, 947, 948, 936, 949, 944, 945, 952, - 953, 956, 957, 954, 959, 961, 970, 964, 967, 974, - 975, 979, 972, 980, 981, 982, 985, 991, 987, 995, - 993, 996, 997, 1001, 1002, 1005, 1009, 1004, 1017, 1010, - 3503, 1021, 1020, 1022, 1012, 1023, 1014, 1027, 1053, 3503, - 1028, 3503, 3503, 1029, 3503, 3503, 1033, 1035, 1036, 1044, - 1076, 1045, 1037, 1038, 1048, 1057, 1047, 1059, 1049, 1066, - 1068, 1069, 1070, 1061, 1073, 1079, 1084, 1082, 1086, 1091, - - 1099, 1105, 1106, 1090, 1102, 1103, 1107, 1109, 1112, 1113, - 1110, 1119, 1114, 1121, 1123, 3503, 1124, 1125, 1128, 1126, - 1135, 1130, 1138, 3503, 1132, 1139, 1137, 1143, 1146, 1147, - 1148, 1150, 1151, 1152, 1155, 1156, 1159, 1160, 1161, 1177, - 1178, 1162, 1174, 1176, 1179, 1181, 1182, 1190, 1186, 1187, - 1191, 1197, 1194, 1196, 1199, 1200, 1203, 1201, 1206, 1208, - 1209, 1231, 1212, 1210, 1213, 1211, 1218, 1219, 1221, 1224, - 1217, 1239, 1241, 1237, 1227, 1243, 1249, 1250, 1258, 1253, - 1256, 1260, 1263, 1267, 1271, 1262, 1269, 1272, 1278, 1281, - 3503, 1287, 1286, 1273, 1280, 1290, 1279, 1288, 1294, 1296, - - 1297, 1299, 1300, 1301, 1311, 3503, 1305, 1307, 1308, 1312, - 1313, 1316, 1320, 1326, 1333, 1309, 3503, 1335, 1336, 1338, - 1331, 1332, 1339, 1342, 1343, 1344, 1348, 1350, 1351, 1347, - 1358, 1360, 1361, 1349, 1366, 1356, 1368, 1371, 1372, 1373, - 1375, 1376, 1379, 1377, 1381, 1389, 1395, 1383, 1397, 1386, - 1392, 1399, 1404, 1401, 1403, 1402, 1407, 3503, 158, 1408, - 1409, 1410, 1418, 1420, 1423, 1426, 1425, 1427, 1429, 1433, - 1416, 1436, 1437, 1443, 1440, 1438, 1445, 1446, 1449, 1450, - 1452, 1414, 1453, 1455, 1462, 1459, 1463, 1460, 1469, 1461, - 1472, 1474, 1475, 1476, 1477, 1480, 1481, 1484, 1483, 1485, - - 1486, 3503, 1497, 1493, 1494, 1491, 1503, 1514, 1500, 1515, - 1504, 1512, 1523, 1524, 1522, 1526, 1528, 1530, 1532, 1506, - 1533, 1540, 1541, 1538, 1542, 1544, 1547, 1534, 3503, 1550, - 1549, 1552, 1556, 1568, 1555, 1557, 1566, 1559, 1561, 1571, - 1578, 1572, 1581, 3503, 1582, 1583, 1575, 1590, 1584, 1592, - 1593, 1600, 1586, 1597, 1595, 1605, 1607, 1601, 1609, 1611, - 3503, 1617, 1621, 1620, 1627, 1614, 1613, 1624, 1629, 1626, - 1630, 1636, 1634, 1637, 1633, 1638, 1639, 1641, 1642, 1644, - 1647, 1643, 1650, 3503, 1664, 1649, 1660, 1669, 1651, 1675, - 1672, 1673, 1674, 1677, 1678, 1680, 1679, 1681, 1682, 1687, - - 1683, 1690, 1691, 1692, 1689, 1694, 1688, 1709, 1698, 1710, - 1700, 1711, 1712, 1713, 1725, 1726, 1722, 3503, 1728, 1724, - 1729, 1730, 1731, 1737, 1739, 1735, 1740, 1741, 1743, 1745, - 1752, 1746, 1749, 1753, 1755, 1756, 1748, 1758, 1760, 1763, - 1766, 1776, 1764, 1778, 1779, 1782, 3503, 1783, 1786, 1789, - 1791, 1790, 1798, 3503, 1781, 3503, 1797, 1804, 1811, 3503, - 1808, 3503, 1813, 3503, 1814, 1815, 1809, 1796, 1818, 1820, - 1819, 1823, 1826, 1827, 1829, 1830, 1831, 1833, 1837, 3503, - 1836, 1839, 1843, 1840, 1838, 1847, 1848, 1849, 1859, 1850, - 1865, 1856, 1868, 1864, 1871, 1866, 3503, 1862, 1873, 1875, - - 1877, 1882, 1884, 1889, 1881, 1891, 1880, 1892, 1898, 1901, - 1899, 1903, 1904, 1906, 1912, 1908, 1909, 1916, 1913, 1910, - 1919, 1920, 1921, 1925, 1923, 1932, 1926, 1929, 1930, 3503, - 1933, 1941, 1943, 1945, 1942, 3503, 3503, 1948, 1952, 1959, - 1944, 1953, 1961, 1963, 1965, 1971, 1968, 1969, 1970, 1973, - 1976, 1981, 1977, 1978, 1984, 1979, 1988, 1982, 1998, 1992, - 1994, 3503, 2005, 2003, 2011, 2008, 2007, 2015, 2009, 2016, - 3503, 3503, 2018, 2017, 2020, 2023, 2029, 2028, 2031, 3503, - 2032, 2033, 2034, 2035, 2036, 2045, 2043, 2046, 2048, 2050, - 2051, 2053, 2055, 2056, 2062, 2059, 2060, 2063, 2073, 2074, - - 2080, 3503, 2076, 2082, 2083, 2084, 2087, 2086, 2088, 2092, - 2090, 2091, 2093, 2101, 2107, 2094, 2104, 2105, 2110, 2106, - 2114, 2117, 2118, 2124, 2127, 3503, 2133, 2120, 2134, 2121, - 2132, 2135, 2142, 2139, 2140, 2141, 2143, 2145, 2144, 2148, - 2149, 2154, 2150, 3503, 2157, 2168, 2156, 2162, 2164, 2172, - 2176, 2174, 2178, 3503, 2179, 2185, 2181, 2182, 2188, 2187, - 2190, 2193, 2191, 2196, 2192, 2203, 2199, 2197, 2207, 2205, - 2209, 2210, 2212, 2213, 2227, 2219, 2232, 2216, 2224, 2234, - 2240, 2246, 2247, 2233, 2236, 2249, 2243, 2250, 2251, 2252, - 2258, 2256, 2262, 2260, 3503, 2261, 2265, 2268, 2270, 2271, - - 2273, 2275, 2276, 2274, 3503, 2281, 3503, 2284, 3503, 2285, - 2288, 2289, 2290, 2292, 2293, 2294, 2295, 2306, 2302, 3503, - 2303, 2305, 2308, 2311, 3503, 2314, 3503, 3503, 2307, 2318, - 2324, 2321, 2325, 2068, 2328, 3503, 2214, 2329, 2330, 2333, - 2334, 2335, 2336, 2339, 2337, 2340, 2341, 3503, 2345, 2344, - 2353, 2354, 3503, 2343, 2359, 2356, 2362, 2364, 2365, 2368, - 2369, 2372, 2379, 2375, 2376, 3503, 2377, 2381, 2386, 2388, - 2378, 2383, 2399, 2397, 2398, 2401, 2405, 2404, 2407, 2408, - 3503, 2410, 2418, 3503, 2409, 2391, 2412, 3503, 2419, 3503, - 2421, 2424, 2426, 2429, 2431, 2432, 2434, 2435, 2436, 2437, - - 2443, 2445, 2447, 2446, 3503, 3503, 2449, 2450, 2453, 2457, - 2460, 2461, 2462, 2464, 3503, 2465, 2468, 2469, 2470, 2471, - 2475, 2478, 2481, 2482, 2474, 2483, 2477, 2487, 3503, 2484, - 2491, 2495, 2496, 2497, 2498, 3503, 2500, 2501, 2505, 2502, - 2508, 2510, 2513, 2523, 2520, 2525, 2527, 2529, 2530, 2532, - 2535, 2536, 3503, 2537, 2539, 2540, 2544, 2545, 2541, 2548, - 2552, 2557, 2546, 2550, 2565, 3503, 2554, 2558, 2560, 2562, - 2571, 2567, 2573, 2576, 2577, 2579, 2580, 2582, 2583, 2584, - 2585, 2589, 2590, 2591, 2595, 2593, 2601, 2599, 3503, 2598, - 3503, 2610, 2611, 2614, 2615, 3503, 2613, 2617, 3503, 2620, - - 3503, 2622, 2629, 2621, 2631, 3503, 2636, 2623, 2638, 2633, - 2640, 2627, 2642, 3503, 2644, 2647, 2652, 2653, 2649, 2656, - 2655, 2657, 2660, 2666, 2662, 3503, 2663, 2667, 2676, 2673, - 2678, 3503, 3503, 2674, 3503, 3503, 3503, 2683, 3503, 3503, - 2684, 2686, 3503, 2688, 3503, 2695, 2691, 2693, 2694, 2696, - 3503, 2698, 2700, 3503, 2697, 2707, 2703, 2704, 3503, 2712, - 3503, 2708, 2715, 2714, 2718, 2725, 2727, 2730, 2720, 2722, - 2731, 2733, 2734, 2736, 2735, 2738, 2739, 2742, 2744, 2747, - 2749, 2751, 2752, 2750, 2753, 2754, 2757, 2762, 3503, 3503, - 2763, 2766, 2767, 2771, 2769, 2774, 2775, 2776, 3503, 2780, - - 2781, 2785, 2782, 2786, 2787, 2795, 2788, 2799, 2801, 2800, - 2802, 2803, 2806, 3503, 2808, 3503, 3503, 2809, 2810, 2815, - 2816, 2812, 2819, 3503, 2820, 2821, 2833, 2824, 3503, 2839, - 2828, 2841, 2843, 3503, 3503, 3503, 2844, 2834, 2846, 2848, - 2849, 2850, 2851, 3503, 2852, 2857, 2858, 2860, 2865, 2871, - 2866, 2868, 2877, 2879, 3503, 3503, 2885, 2882, 2883, 2872, - 2874, 2884, 2890, 2887, 3503, 2891, 2893, 2896, 2897, 2898, - 2900, 2903, 3503, 2902, 2904, 2908, 2914, 2910, 2916, 2917, - 2918, 3503, 2920, 2922, 2926, 2928, 2931, 3503, 2932, 3503, - 2937, 3503, 3503, 2934, 2938, 2940, 2945, 2948, 2950, 2941, - - 2951, 2957, 2956, 2958, 3503, 3503, 2960, 2968, 3503, 3503, - 2953, 2964, 2961, 2967, 2972, 2974, 2975, 2976, 2977, 2980, - 2982, 2985, 2988, 2978, 2989, 2990, 2991, 2992, 3503, 2997, - 3503, 2995, 3003, 3004, 3005, 3006, 3010, 3007, 3016, 3503, - 3017, 3018, 3019, 3503, 3503, 3503, 3022, 3023, 3028, 3503, - 3029, 3031, 3032, 3033, 3036, 3035, 3043, 3039, 3046, 3503, - 3042, 3047, 3049, 3051, 3050, 3056, 3057, 3058, 3060, 3063, - 3068, 3069, 3071, 3073, 3503, 3075, 3077, 3079, 3503, 3080, - 3082, 3083, 3085, 3087, 3090, 3091, 3092, 3094, 3095, 3098, - 3099, 3100, 3106, 3108, 3111, 3503, 3114, 3115, 3503, 3116, - - 3117, 3122, 3124, 3129, 3133, 3130, 3503, 3137, 3503, 3138, - 3503, 3141, 3142, 3143, 3145, 3146, 3503, 3503, 3147, 3149, - 3153, 3503, 3154, 3150, 3157, 3160, 3161, 3163, 3164, 3503, - 3503, 3165, 3167, 3171, 3168, 3503, 3503, 3503, 3174, 3503, - 3177, 3503, 3183, 3180, 3503, 3187, 3188, 3503, 3189, 3191, - 3193, 3195, 3196, 3197, 3199, 3200, 3198, 3202, 3503, 3503, - 3209, 3503, 3213, 3503, 3215, 3503, 3210, 3223, 3503, 3503, - 3221, 3219, 3225, 3226, 3228, 3227, 3503, 3503, 3503, 3503, - 3231, 3229, 3234, 3232, 3236, 3237, 3238, 3240, 3242, 3239, - 3252, 3256, 3244, 3250, 3264, 3258, 3503, 3260, 3262, 3271, - - 3273, 3270, 3267, 3274, 3276, 3277, 3278, 3279, 3282, 3283, - 3289, 3285, 3286, 3295, 3297, 3298, 3299, 3310, 3307, 3308, - 3309, 3311, 3317, 3313, 3314, 3503, 3316, 3319, 3320, 3322, - 3323, 3326, 3325, 3333, 3336, 3340, 3341, 3342, 3347, 3343, - 3349, 3351, 3352, 3353, 3503, 3354, 3355, 3358, 3362, 3363, - 3365, 3366, 3367, 3374, 3369, 3379, 3383, 3380, 3503, 3386, - 3503, 3503, 3388, 3371, 3375, 3396, 3398, 3503, 3503, 3503, - 3411, 3418, 3425, 3432, 3439, 94, 3446, 3453, 3460, 3467, - 3474, 3481, 3488, 3495 + 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, + 90, 112, 2230, 1992, 81, 5150, 5150, 5150, 96, 52, + 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, + 76, 135, 141, 117, 148, 145, 160, 164, 185, 176, + 191, 152, 1803, 5150, 5150, 5150, 107, 1743, 5150, 5150, + 5150, 165, 1687, 1456, 5150, 5150, 5150, 211, 1154, 5150, + 5150, 5150, 180, 852, 5150, 217, 5150, 221, 168, 648, + 225, 189, 0, 232, 0, 0, 226, 189, 85, 221, + 114, 227, 234, 156, 219, 235, 236, 238, 239, 132, + 246, 241, 243, 253, 244, 251, 254, 247, 260, 267, + + 272, 187, 271, 275, 280, 279, 277, 283, 284, 285, + 288, 289, 294, 302, 295, 305, 300, 307, 303, 311, + 316, 317, 319, 321, 332, 327, 328, 325, 335, 338, + 340, 342, 344, 341, 345, 347, 348, 355, 354, 534, + 372, 468, 379, 410, 383, 368, 318, 374, 198, 387, + 391, 0, 383, 385, 393, 352, 388, 389, 394, 392, + 395, 396, 401, 398, 399, 415, 407, 419, 423, 424, + 421, 428, 413, 426, 433, 434, 443, 436, 445, 439, + 447, 448, 449, 451, 452, 458, 465, 454, 455, 475, + 472, 483, 485, 461, 486, 482, 484, 493, 490, 494, + + 498, 496, 497, 500, 499, 501, 502, 504, 508, 509, + 511, 513, 515, 516, 517, 523, 525, 518, 532, 527, + 539, 530, 535, 542, 544, 553, 543, 554, 551, 555, + 558, 565, 566, 567, 245, 568, 552, 561, 570, 571, + 572, 574, 581, 582, 579, 585, 593, 588, 592, 589, + 594, 596, 595, 598, 600, 609, 614, 599, 612, 615, + 605, 618, 619, 623, 625, 630, 626, 635, 636, 628, + 641, 639, 637, 643, 646, 645, 647, 650, 652, 653, + 654, 656, 661, 657, 665, 667, 676, 669, 673, 677, + 678, 680, 683, 681, 690, 689, 704, 692, 693, 699, + + 700, 705, 708, 710, 713, 711, 720, 721, 722, 723, + 724, 725, 733, 728, 731, 738, 741, 745, 749, 729, + 755, 730, 753, 757, 751, 777, 759, 760, 767, 761, + 5150, 765, 769, 801, 770, 786, 808, 788, 766, 773, + 790, 797, 791, 818, 737, 789, 811, 827, 659, 799, + 814, 822, 823, 824, 832, 829, 830, 833, 841, 836, + 838, 840, 846, 848, 850, 851, 855, 856, 853, 859, + 864, 860, 870, 862, 871, 872, 873, 874, 883, 884, + 895, 876, 890, 898, 899, 888, 900, 903, 905, 906, + 911, 913, 914, 909, 915, 917, 921, 922, 923, 924, + + 925, 927, 932, 931, 934, 5150, 938, 940, 943, 944, + 945, 946, 5150, 948, 947, 877, 955, 950, 960, 957, + 956, 963, 975, 964, 973, 978, 977, 980, 979, 981, + 982, 983, 989, 987, 990, 993, 1013, 995, 997, 994, + 999, 1000, 1007, 1018, 1008, 1011, 1031, 1026, 1027, 1017, + 1034, 1028, 1040, 1043, 1038, 1044, 1045, 1046, 1047, 1048, + 1051, 1054, 1049, 5150, 1056, 1062, 1067, 1060, 1063, 1071, + 1073, 1074, 1075, 1076, 1079, 1081, 1077, 1095, 1088, 1084, + 1097, 1086, 1099, 1100, 1101, 1104, 1103, 1105, 1114, 1110, + 1112, 1117, 1124, 1126, 1128, 1135, 1109, 1131, 1120, 1132, + + 1134, 1133, 1138, 1141, 1148, 1143, 1144, 1146, 1149, 1158, + 1150, 1153, 1160, 1159, 1164, 1161, 1166, 1170, 1173, 1174, + 1182, 1181, 1180, 1184, 1186, 1192, 1178, 1185, 1195, 1193, + 1202, 1196, 1199, 1204, 1209, 1206, 1208, 1214, 1218, 1207, + 1219, 1226, 1222, 1230, 1228, 1229, 1238, 1235, 1236, 1221, + 1245, 1242, 1243, 1246, 1244, 1256, 1253, 1254, 1264, 1266, + 1255, 1268, 1257, 1269, 1260, 1272, 1273, 1274, 1275, 1277, + 1279, 1282, 1283, 1284, 1286, 1285, 1302, 1287, 1289, 1305, + 1292, 1294, 1299, 1304, 1307, 1313, 1311, 1316, 998, 1319, + 1318, 1320, 1325, 1322, 1326, 1330, 1327, 1328, 1336, 1340, + + 1341, 1342, 1343, 1345, 1344, 1348, 1355, 1346, 1353, 1358, + 1361, 1363, 1365, 1367, 1370, 1371, 5150, 1366, 1378, 1374, + 1377, 1379, 1382, 1389, 1387, 1386, 1388, 1390, 1393, 5150, + 1392, 5150, 5150, 1397, 5150, 5150, 1399, 1403, 1416, 1417, + 1421, 1419, 1411, 1406, 1429, 1431, 1396, 1424, 1428, 1427, + 1434, 1440, 1441, 1453, 1436, 1455, 1442, 1457, 1458, 1459, + 1462, 1464, 1465, 1466, 1468, 1467, 1470, 1473, 1476, 1477, + 1472, 1480, 1479, 1497, 5150, 1489, 1498, 1499, 1500, 1501, + 1502, 1504, 1505, 1506, 1508, 1509, 1482, 1513, 1516, 1520, + 1517, 5150, 1518, 1521, 1526, 1525, 1529, 1533, 1535, 1519, + + 1539, 1537, 1541, 1542, 1543, 1545, 5150, 1553, 1547, 1550, + 1554, 1557, 1561, 1562, 1558, 1563, 1564, 1565, 1566, 1568, + 1570, 1574, 1572, 1575, 1588, 1577, 1585, 1590, 1592, 1593, + 1595, 1596, 1603, 1600, 1604, 1601, 1608, 1606, 1607, 1611, + 1615, 1609, 1618, 1628, 1624, 1625, 1629, 1638, 1633, 1635, + 1636, 1639, 1641, 1637, 1645, 1646, 1648, 1651, 1650, 1656, + 5150, 1657, 1658, 5150, 1659, 1661, 1683, 1662, 1660, 1665, + 1666, 1669, 1674, 1685, 1684, 1701, 1693, 1702, 1696, 1703, + 1705, 1709, 1676, 1712, 1713, 1720, 1668, 1721, 1728, 1715, + 1717, 1736, 1727, 1724, 1731, 1738, 1677, 1725, 1732, 1733, + + 1741, 1746, 1749, 1753, 5150, 1758, 1751, 1759, 1761, 1769, + 1766, 1764, 1767, 1768, 1770, 1779, 1772, 1775, 1780, 1782, + 1784, 1787, 1788, 1790, 1795, 5150, 1792, 5150, 1791, 1793, + 1796, 1800, 1801, 1804, 1811, 1810, 1817, 1826, 1821, 5150, + 1813, 1828, 1831, 1830, 1823, 1824, 1825, 1836, 1838, 1845, + 1840, 1847, 1848, 1842, 1850, 1852, 1846, 1854, 1856, 1858, + 5150, 1865, 1864, 1866, 1873, 1869, 1874, 1875, 1876, 1877, + 1878, 1881, 1885, 1888, 1890, 1886, 1887, 5150, 1889, 1894, + 1902, 1900, 1903, 1904, 1905, 1906, 1910, 1911, 1913, 1923, + 1924, 1915, 1926, 1920, 1916, 1927, 1928, 1936, 1933, 1934, + + 1937, 1938, 5150, 1939, 1945, 124, 1946, 1942, 1947, 1948, + 1952, 1950, 1954, 1968, 1970, 1966, 1965, 1972, 1955, 1973, + 1975, 1976, 1978, 1979, 1981, 1982, 1984, 1985, 1988, 1989, + 1990, 1993, 5150, 2002, 2000, 2004, 1994, 2013, 2014, 2015, + 2017, 2018, 2020, 2019, 5150, 2027, 2023, 2021, 2029, 2031, + 2030, 2033, 2036, 2040, 2042, 2043, 2044, 2045, 2046, 2047, + 2053, 2051, 2049, 2054, 2061, 5150, 2068, 2058, 2063, 2060, + 2073, 2075, 2082, 2077, 2079, 2084, 2085, 2098, 2088, 2083, + 2095, 2090, 2094, 2100, 2105, 2108, 2114, 2119, 2112, 2116, + 2118, 2120, 2126, 2133, 2135, 2131, 2137, 2138, 2139, 2104, + + 2142, 5150, 2145, 2128, 2130, 2146, 2163, 2150, 2159, 2151, + 2160, 2161, 2166, 2167, 2168, 2171, 2170, 2174, 2173, 2177, + 2181, 2179, 2188, 2190, 2192, 5150, 2193, 2195, 2187, 2198, + 2199, 2205, 2207, 2201, 2208, 2210, 2211, 2213, 2214, 2215, + 5150, 2221, 2220, 2227, 2226, 2228, 2230, 2236, 2238, 2239, + 2240, 2241, 5150, 2248, 2249, 2246, 2250, 2252, 2253, 2255, + 2258, 2259, 5150, 2260, 2262, 2269, 2270, 2265, 5150, 2273, + 2268, 2274, 2275, 2276, 2277, 2283, 2278, 2281, 2286, 2291, + 2293, 2289, 2297, 5150, 2299, 2309, 2301, 2305, 2300, 2307, + 2311, 2315, 2317, 2316, 2327, 2324, 2325, 2331, 2332, 2333, + + 2334, 2335, 2337, 5150, 2338, 2341, 2342, 2340, 2345, 2346, + 2348, 2347, 2354, 2349, 2355, 2356, 2362, 2369, 2372, 2361, + 2371, 2373, 2378, 2381, 2382, 2383, 2390, 2391, 2394, 2396, + 5150, 2399, 2400, 2392, 2389, 2402, 2405, 2406, 2408, 2410, + 2411, 2412, 2414, 2415, 2424, 2427, 2422, 2425, 2429, 2431, + 2432, 2433, 2441, 2436, 2437, 2439, 2446, 2438, 2447, 2449, + 2453, 2455, 2443, 2458, 2459, 2467, 2463, 2477, 2474, 2461, + 2471, 2478, 2480, 2483, 5150, 2481, 2482, 2488, 2490, 2492, + 2494, 2495, 2501, 2503, 2496, 2504, 2498, 2515, 2511, 5150, + 2512, 5150, 2513, 2514, 2520, 2523, 5150, 2525, 5150, 2527, + + 2528, 2529, 5150, 2532, 2536, 2531, 2533, 2538, 2539, 2541, + 2542, 2547, 2548, 2550, 2551, 2552, 2561, 2558, 2553, 2565, + 2555, 2563, 2571, 2568, 2576, 5150, 2570, 2578, 2579, 2580, + 2583, 2582, 2584, 2586, 2588, 2589, 2592, 2590, 2594, 2602, + 2598, 2611, 2606, 2616, 5150, 2613, 2618, 2612, 2615, 5150, + 2619, 2622, 2624, 2620, 2628, 2629, 2630, 2635, 2637, 2632, + 2639, 2647, 2648, 2650, 2651, 2638, 2655, 2660, 2661, 2664, + 2666, 2667, 2668, 2669, 2670, 2678, 2679, 2676, 2683, 2674, + 2682, 2685, 2689, 2675, 2691, 2692, 2695, 2696, 2701, 2702, + 2704, 2699, 2700, 2703, 2705, 5150, 2707, 2708, 2716, 2722, + + 2714, 2718, 2724, 2725, 2727, 2730, 2731, 2735, 2733, 5150, + 2737, 5150, 2734, 2740, 2742, 2750, 2755, 2751, 2746, 2756, + 2758, 2760, 2762, 2763, 2767, 2777, 2779, 2766, 2770, 2773, + 2768, 2780, 2785, 5150, 2784, 2787, 2788, 2790, 2792, 2793, + 2799, 2795, 2794, 2802, 2803, 2816, 5150, 2808, 2817, 2813, + 2819, 2826, 2824, 2833, 2828, 5150, 2825, 2830, 2838, 2835, + 2837, 5150, 5150, 2836, 2839, 2841, 2843, 2847, 2850, 2857, + 2852, 2842, 2853, 2854, 2859, 2866, 2863, 2867, 5150, 2869, + 2870, 2874, 2875, 2876, 2877, 2883, 2884, 5150, 2886, 2888, + 2889, 2891, 2893, 2895, 2896, 2897, 2899, 2902, 2898, 2900, + + 2915, 2906, 2905, 2913, 2922, 2924, 2926, 5150, 2928, 2929, + 2931, 2932, 2934, 2937, 2935, 2939, 2941, 2942, 2943, 2945, + 2946, 2947, 2951, 2957, 2949, 2950, 2953, 2970, 2963, 2967, + 2968, 2971, 2974, 2977, 2981, 2972, 2983, 2978, 2985, 2990, + 2987, 3000, 2993, 5150, 3001, 2997, 3004, 3002, 3005, 3010, + 3011, 3013, 3016, 3003, 3014, 3024, 3017, 5150, 3026, 3019, + 3036, 3021, 3031, 3045, 3040, 3022, 3041, 3044, 3047, 3050, + 3048, 3052, 3053, 3056, 5150, 5150, 3057, 5150, 3058, 3059, + 3061, 3063, 3064, 3070, 3065, 3075, 3069, 3072, 5150, 3077, + 3087, 3083, 3085, 3090, 3099, 3097, 3089, 3098, 3086, 3100, + + 3101, 3102, 3104, 3108, 3109, 3117, 3112, 3114, 3116, 5150, + 3115, 3118, 3123, 5150, 3121, 3124, 3125, 3130, 3127, 3141, + 3133, 3143, 3146, 3147, 3148, 3150, 3157, 3153, 3154, 3156, + 3158, 3163, 3165, 3172, 3179, 3181, 3159, 3176, 3183, 5150, + 3178, 3180, 3182, 3186, 3193, 3191, 3195, 3192, 5150, 3196, + 3197, 3198, 5150, 3199, 3200, 3206, 3210, 3207, 3218, 3214, + 3217, 3215, 3219, 5150, 3224, 5150, 3223, 3225, 5150, 3230, + 3231, 3233, 3235, 3232, 3239, 3240, 3247, 3236, 3248, 3249, + 3250, 3251, 3253, 3260, 3252, 5150, 3261, 3259, 3263, 3265, + 3264, 3268, 5150, 5150, 3271, 5150, 3275, 3278, 5150, 3280, + + 3279, 3288, 3283, 3284, 3287, 3297, 3290, 5150, 3292, 3286, + 3301, 3303, 3304, 3305, 3307, 3308, 3309, 3311, 3310, 5150, + 3313, 3315, 3322, 3314, 3318, 3328, 3334, 3323, 5150, 3336, + 3340, 3330, 3344, 3345, 5150, 3337, 3347, 3351, 5150, 3350, + 3355, 3356, 3357, 3358, 3361, 3363, 3365, 3367, 3375, 3371, + 3372, 3370, 5150, 3373, 3374, 3380, 3389, 3381, 3377, 3399, + 3386, 3398, 3394, 3404, 3395, 3405, 3408, 3411, 3412, 3413, + 3401, 3417, 3414, 3418, 5150, 3419, 3427, 3428, 5150, 3425, + 3426, 3429, 3434, 3435, 5150, 3436, 3437, 3439, 3440, 5150, + 5150, 3450, 5150, 3453, 3441, 3442, 3443, 3454, 3461, 3458, + + 3466, 3455, 3471, 3472, 3470, 3479, 3482, 3486, 3481, 3485, + 3487, 5150, 5150, 3489, 3490, 3492, 3495, 3496, 3498, 3499, + 3506, 3503, 3512, 3504, 3519, 5150, 3514, 3502, 3520, 5150, + 3515, 3521, 3523, 3527, 3525, 3529, 3528, 3532, 3533, 3534, + 3536, 3535, 3538, 3543, 3551, 5150, 3539, 3545, 3552, 3553, + 3554, 3555, 3556, 3559, 5150, 3563, 3566, 3567, 3569, 3560, + 3571, 3585, 3588, 3590, 3579, 3583, 3591, 3593, 3598, 3595, + 5150, 3599, 3581, 3603, 3606, 3608, 3610, 3611, 3613, 3614, + 3616, 3620, 3622, 3617, 3624, 5150, 3628, 3626, 3627, 3635, + 3629, 3636, 3637, 3638, 3645, 3641, 3648, 3649, 3651, 5150, + + 3652, 3653, 3655, 3657, 3659, 3656, 3662, 3664, 5150, 3666, + 3667, 3671, 3669, 3673, 3680, 3682, 3684, 5150, 3685, 3688, + 3689, 3690, 3692, 3674, 3696, 3698, 3702, 3704, 3706, 3708, + 3709, 3710, 3711, 3712, 3716, 3717, 3714, 3724, 3727, 5150, + 3722, 5150, 3729, 3732, 3736, 3739, 3735, 5150, 3737, 3743, + 3745, 3741, 3749, 5150, 3750, 3747, 3746, 3752, 5150, 3751, + 3760, 3766, 3767, 3769, 5150, 3771, 3772, 3773, 3780, 3782, + 3784, 3777, 3787, 3781, 3785, 3789, 3794, 5150, 3792, 3797, + 3802, 3798, 3790, 3805, 5150, 3804, 3806, 3807, 3811, 3812, + 3813, 3820, 3816, 3817, 5150, 3823, 3825, 3833, 3828, 3829, + + 5150, 5150, 3834, 3837, 3840, 3819, 3841, 5150, 3846, 3853, + 3844, 3852, 3849, 5150, 5150, 3855, 5150, 3857, 5150, 5150, + 5150, 3859, 3860, 3862, 5150, 3867, 5150, 3869, 3870, 3868, + 3872, 3873, 5150, 3874, 3876, 3880, 5150, 3877, 3887, 3882, + 3883, 5150, 3890, 3885, 3891, 5150, 3895, 3902, 3892, 3903, + 3905, 3899, 3906, 3910, 3912, 3917, 3919, 3922, 3914, 3923, + 3924, 3927, 3930, 3929, 3932, 3934, 3936, 3937, 3939, 3938, + 3940, 3943, 3944, 3952, 3947, 3953, 3954, 3955, 3957, 3958, + 3961, 3966, 3963, 3965, 5150, 3959, 3967, 3969, 3970, 3971, + 3982, 3983, 3991, 3994, 3995, 5150, 5150, 3997, 3984, 3999, + + 3986, 5150, 4000, 4001, 4003, 4004, 4006, 4007, 4008, 4011, + 5150, 4014, 4009, 4017, 4021, 4022, 4023, 4028, 4029, 4031, + 4032, 4033, 4035, 4037, 4044, 4041, 4042, 4045, 4046, 4050, + 4053, 4055, 4054, 4062, 4063, 4067, 5150, 4058, 5150, 4069, + 4068, 4071, 5150, 5150, 4072, 4076, 4075, 4080, 4081, 4083, + 4085, 5150, 4086, 4087, 4094, 4084, 5150, 4096, 4098, 4103, + 5150, 4100, 4105, 4106, 4108, 4109, 4111, 5150, 5150, 5150, + 5150, 4119, 4113, 4115, 4117, 4122, 4121, 5150, 5150, 5150, + 4124, 4123, 4127, 4126, 4133, 4138, 5150, 4139, 4140, 4142, + 4141, 4144, 4149, 4150, 4153, 4151, 4155, 4165, 4161, 4162, + + 4160, 4167, 4171, 4177, 5150, 5150, 4168, 4179, 4184, 4180, + 4186, 4193, 4188, 4189, 4190, 4195, 4196, 4197, 4200, 5150, + 4198, 5150, 4203, 4206, 4205, 4207, 4209, 4213, 4214, 4216, + 5150, 5150, 4217, 4219, 4221, 4227, 4224, 4228, 4229, 4231, + 4232, 5150, 4233, 5150, 4234, 4238, 4241, 4246, 4247, 4252, + 5150, 4249, 4250, 5150, 4256, 4253, 4259, 5150, 4261, 4265, + 4269, 5150, 4271, 5150, 4273, 5150, 4266, 5150, 4275, 4276, + 4279, 4281, 4282, 4283, 4288, 4289, 4292, 4284, 4294, 4296, + 4297, 4304, 4303, 4305, 5150, 5150, 4313, 4300, 4306, 4308, + 4310, 4321, 4317, 4318, 4320, 5150, 5150, 4324, 4325, 4327, + + 5150, 4331, 4332, 4334, 4336, 4337, 4338, 4339, 4344, 4340, + 4346, 4345, 4347, 4349, 4360, 4362, 4357, 4365, 4366, 4367, + 4368, 4369, 4371, 5150, 4375, 4376, 4372, 5150, 4381, 4378, + 4383, 4387, 4388, 5150, 4384, 4395, 4396, 4398, 4399, 4409, + 4404, 4401, 5150, 5150, 5150, 5150, 4406, 4411, 4412, 5150, + 5150, 4413, 4415, 5150, 4416, 5150, 4418, 5150, 4421, 4422, + 4425, 5150, 4427, 4429, 5150, 4437, 4441, 4443, 4444, 4431, + 4445, 4447, 5150, 4454, 4450, 4456, 4458, 4449, 4459, 4460, + 4463, 4468, 4446, 4470, 5150, 4466, 4472, 4474, 4475, 4476, + 4478, 4477, 4479, 4483, 4484, 4491, 4490, 4494, 4498, 5150, + + 4500, 4504, 5150, 4497, 5150, 4506, 4507, 4508, 5150, 4510, + 4501, 4511, 4512, 5150, 4514, 4519, 5150, 4520, 4525, 4527, + 4529, 4530, 4532, 4522, 4535, 4536, 4538, 4540, 4544, 5150, + 5150, 5150, 4546, 4549, 4557, 4554, 4559, 4561, 4550, 5150, + 4560, 4566, 4563, 4570, 4567, 4573, 5150, 4575, 4576, 5150, + 4578, 4580, 4581, 4583, 4587, 4589, 4591, 4594, 4596, 5150, + 4599, 5150, 5150, 4600, 5150, 4602, 4603, 5150, 4606, 4607, + 4608, 4609, 4611, 4612, 5150, 5150, 5150, 4614, 4615, 4622, + 4623, 4626, 4627, 5150, 4620, 4630, 4633, 4634, 4635, 5150, + 4636, 4637, 4639, 4642, 4643, 4647, 4648, 4649, 4652, 5150, + + 5150, 4651, 5150, 5150, 4654, 4668, 4660, 5150, 5150, 5150, + 4673, 5150, 4675, 4679, 4678, 5150, 4681, 4669, 4683, 5150, + 4685, 5150, 4686, 4688, 4689, 5150, 4690, 4691, 4694, 4699, + 4702, 4696, 4705, 4703, 4719, 4720, 4706, 4707, 4709, 4716, + 4723, 4717, 4725, 5150, 5150, 4727, 5150, 5150, 4733, 4735, + 4738, 5150, 4739, 4741, 5150, 4743, 4729, 4745, 4746, 4749, + 4751, 5150, 5150, 4752, 4655, 4753, 4754, 4756, 5150, 4758, + 4765, 4762, 4763, 4766, 4760, 4767, 5150, 5150, 5150, 5150, + 5150, 4769, 5150, 5150, 4771, 4773, 4775, 4782, 5150, 4780, + 4781, 4784, 4786, 4787, 4790, 4793, 4797, 4799, 4798, 4800, + + 4804, 4801, 4808, 4810, 4811, 4813, 4823, 4827, 4829, 4815, + 4818, 4830, 4831, 4832, 4835, 4839, 4846, 4841, 4843, 4844, + 5150, 4847, 5150, 4848, 5150, 5150, 4850, 4851, 4845, 4856, + 4864, 4865, 4857, 4861, 4867, 5150, 4868, 4869, 4872, 5150, + 4870, 4873, 4877, 4879, 4880, 4881, 4882, 4884, 4885, 4891, + 4895, 4897, 4904, 4905, 4907, 4908, 4909, 4899, 4917, 4915, + 4922, 5150, 4919, 4916, 4924, 4925, 4926, 4933, 4928, 4929, + 4936, 5150, 4939, 4934, 4948, 4930, 4932, 4941, 4955, 4952, + 4950, 5150, 4940, 4958, 4960, 4961, 4964, 4967, 4968, 4969, + 4971, 4973, 4805, 4977, 4974, 4980, 4982, 4984, 4983, 5150, + + 4986, 4990, 5150, 4991, 4992, 4993, 4994, 4998, 5150, 5004, + 4995, 5000, 5005, 5008, 5010, 5150, 5016, 5021, 5011, 5150, + 5022, 5150, 5150, 5023, 5024, 5025, 5030, 5032, 5150, 5150, + 5150, 5058, 5065, 5072, 5079, 5086, 88, 5093, 5100, 5107, + 5114, 5121, 5128, 5135, 5142 } ; -static yyconst flex_int16_t yy_def[1785] = +static yyconst flex_int16_t yy_def[2646] = { 0, - 1770, 1, 1771, 1771, 1772, 1772, 1773, 1773, 1774, 1774, - 1775, 1775, 1770, 1776, 1770, 1770, 1770, 1770, 1777, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1778, 1770, 1770, 1770, 1778, 1779, 1770, 1770, 1770, 1779, - 1780, 1770, 1770, 1770, 1770, 1780, 1781, 1770, 1770, 1770, - 1781, 1782, 1770, 1783, 1770, 1782, 1782, 1776, 1776, 1770, - 1784, 1777, 1784, 1777, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1778, 1778, 1779, 1779, - 1780, 1780, 1770, 1781, 1781, 1782, 1782, 1783, 1783, 1782, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1782, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1770, 1770, 1776, 1770, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1782, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1782, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1770, - 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1776, 1770, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1770, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, - 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1770, 1776, 1776, 1776, 1770, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - 1770, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1770, 1776, - - 1770, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1770, 1770, 1776, 1770, 1770, 1770, 1776, 1770, 1770, - 1776, 1776, 1770, 1776, 1770, 1776, 1776, 1776, 1776, 1776, - 1770, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1770, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1770, 1770, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1770, 1776, - 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1770, - 1776, 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, 1770, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1770, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1770, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1770, 1776, - 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1776, 1776, - 1776, 1770, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, - 1770, 1776, 1776, 1776, 1776, 1770, 1770, 1770, 1776, 1770, - 1776, 1770, 1776, 1776, 1770, 1776, 1776, 1770, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, - 1776, 1770, 1776, 1770, 1776, 1770, 1776, 1776, 1770, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 1770, 1770, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, - - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1770, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1770, 1776, - 1770, 1770, 1776, 1776, 1776, 1776, 1776, 1770, 1770, 0, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770 + 2631, 1, 2632, 2632, 2633, 2633, 2634, 2634, 2635, 2635, + 2636, 2636, 2631, 2637, 2631, 2631, 2631, 2631, 2638, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2639, 2631, 2631, 2631, 2639, 2640, 2631, 2631, + 2631, 2640, 2641, 2631, 2631, 2631, 2631, 2641, 2642, 2631, + 2631, 2631, 2642, 2643, 2631, 2644, 2631, 2643, 2643, 2637, + 2637, 2631, 2645, 2638, 2645, 2638, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2639, + 2639, 2640, 2640, 2641, 2641, 2631, 2642, 2642, 2643, 2643, + 2644, 2644, 2643, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2643, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2643, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2643, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2643, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2631, 2637, 2631, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2643, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2631, 2637, 2637, 2643, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2637, 2637, 2637, 2637, 2631, 2637, 2631, 2637, + + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2631, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2631, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2631, 2637, 2631, 2637, 2637, 2631, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2631, + 2631, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + + 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2631, 2631, 2637, 2631, 2637, 2631, 2631, + 2631, 2637, 2637, 2637, 2631, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2631, 2637, 2637, 2637, + + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2631, 2637, + 2637, 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2631, 2631, + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2631, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2631, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2631, 2637, 2631, 2637, 2631, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2631, 2637, 2637, 2637, + + 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2631, 2631, 2631, 2637, 2637, 2637, 2631, + 2631, 2637, 2637, 2631, 2637, 2631, 2637, 2631, 2637, 2637, + 2637, 2631, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + + 2637, 2637, 2631, 2637, 2631, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2631, 2631, 2637, 2631, 2637, 2637, 2631, 2637, 2637, + 2637, 2637, 2637, 2637, 2631, 2631, 2631, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + + 2631, 2637, 2631, 2631, 2637, 2637, 2637, 2631, 2631, 2631, + 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, + 2637, 2631, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2631, 2631, 2637, 2631, 2631, 2637, 2637, + 2637, 2631, 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2631, 2631, 2631, 2631, + 2631, 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2631, 2637, 2631, 2637, 2631, 2631, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, + 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2631, + + 2637, 2637, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2637, + 2637, 2637, 2637, 2637, 2637, 2631, 2637, 2637, 2637, 2631, + 2637, 2631, 2631, 2637, 2637, 2637, 2637, 2637, 2631, 2631, + 0, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631 } ; -static yyconst flex_int16_t yy_nxt[3543] = +static yyconst flex_uint16_t yy_nxt[5191] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, - 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 14, 14, 14, 14, 42, - 43, 44, 42, 43, 44, 129, 47, 48, 129, 45, - 49, 70, 45, 47, 48, 71, 50, 49, 58, 59, - 60, 69, 69, 50, 52, 53, 54, 55, 61, 18, - 58, 59, 60, 127, 127, 56, 52, 53, 54, 55, - 61, 18, 69, 105, 224, 75, 76, 56, 15, 16, - 17, 63, 64, 65, 68, 68, 69, 68, 68, 66, - - 68, 96, 69, 77, 69, 68, 86, 69, 67, 15, - 16, 17, 63, 64, 65, 69, 69, 78, 141, 88, - 66, 70, 95, 69, 79, 71, 87, 69, 89, 67, - 73, 80, 73, 73, 69, 73, 90, 69, 97, 69, - 73, 74, 69, 91, 134, 134, 92, 81, 111, 69, - 98, 82, 69, 93, 83, 94, 84, 85, 99, 150, - 69, 102, 69, 112, 100, 103, 123, 113, 101, 69, - 137, 124, 69, 120, 116, 121, 69, 114, 69, 125, - 115, 104, 69, 126, 117, 69, 184, 106, 118, 119, - 122, 107, 69, 131, 146, 131, 131, 108, 131, 73, - - 109, 73, 73, 136, 73, 136, 136, 110, 136, 137, - 139, 68, 143, 68, 68, 69, 68, 69, 69, 142, - 144, 68, 69, 140, 73, 69, 73, 73, 69, 73, - 69, 152, 147, 145, 73, 74, 69, 148, 69, 69, - 149, 69, 69, 69, 154, 69, 158, 151, 159, 153, - 69, 164, 69, 127, 127, 137, 69, 156, 155, 157, - 69, 69, 69, 161, 160, 69, 162, 166, 168, 170, - 69, 165, 169, 69, 172, 171, 69, 69, 69, 69, - 163, 69, 69, 173, 175, 179, 174, 167, 69, 69, - 69, 176, 69, 69, 181, 69, 69, 69, 182, 177, - - 178, 69, 190, 69, 192, 191, 180, 69, 186, 69, - 183, 187, 185, 69, 69, 69, 188, 197, 69, 189, - 69, 69, 129, 199, 193, 129, 69, 194, 131, 195, - 131, 131, 200, 131, 135, 196, 134, 134, 198, 201, - 136, 205, 136, 136, 73, 136, 73, 73, 137, 73, - 69, 202, 69, 204, 69, 139, 69, 203, 69, 69, - 210, 69, 206, 69, 133, 69, 211, 213, 212, 207, - 69, 208, 69, 214, 225, 69, 69, 221, 69, 209, - 222, 69, 69, 223, 69, 69, 226, 69, 69, 69, - 233, 69, 69, 232, 132, 215, 69, 228, 227, 229, - - 216, 237, 230, 231, 130, 217, 69, 69, 236, 234, - 218, 235, 69, 238, 239, 241, 219, 220, 69, 69, - 69, 244, 69, 69, 69, 240, 69, 242, 243, 245, - 246, 247, 69, 69, 69, 69, 69, 69, 69, 248, - 250, 69, 251, 252, 69, 253, 249, 69, 69, 254, - 69, 255, 256, 69, 69, 259, 263, 69, 69, 257, - 265, 69, 69, 69, 69, 267, 69, 270, 258, 266, - 69, 69, 261, 262, 271, 260, 269, 264, 273, 69, - 137, 69, 268, 69, 69, 69, 274, 69, 279, 278, - 277, 69, 276, 69, 281, 69, 280, 272, 69, 69, - - 282, 69, 69, 275, 286, 283, 284, 69, 287, 288, - 69, 289, 69, 69, 290, 69, 69, 69, 291, 293, - 285, 294, 69, 296, 69, 69, 298, 69, 69, 300, - 292, 295, 299, 69, 69, 69, 69, 69, 297, 69, - 305, 69, 69, 69, 310, 69, 307, 69, 69, 69, - 304, 311, 69, 301, 302, 69, 303, 309, 69, 306, - 69, 308, 69, 69, 312, 319, 320, 315, 316, 321, - 69, 69, 313, 317, 318, 314, 69, 69, 69, 322, - 69, 328, 69, 69, 330, 69, 69, 326, 323, 327, - 329, 324, 325, 69, 69, 69, 69, 335, 332, 69, - - 69, 331, 69, 338, 337, 339, 333, 69, 69, 69, - 69, 69, 345, 69, 69, 334, 336, 69, 344, 346, - 69, 340, 69, 69, 341, 351, 349, 342, 69, 343, - 69, 347, 137, 348, 350, 69, 69, 353, 69, 362, - 69, 352, 69, 361, 354, 355, 367, 69, 69, 69, - 365, 69, 69, 363, 356, 364, 357, 358, 359, 69, - 366, 360, 69, 444, 370, 69, 372, 371, 369, 375, - 368, 69, 69, 69, 69, 69, 374, 377, 69, 373, - 128, 376, 378, 379, 69, 69, 69, 69, 384, 69, - 69, 381, 69, 380, 382, 69, 385, 69, 383, 388, - - 69, 69, 391, 387, 390, 386, 69, 395, 394, 393, - 392, 69, 389, 69, 69, 396, 69, 397, 69, 398, - 69, 400, 401, 69, 69, 69, 69, 69, 69, 406, - 405, 399, 69, 403, 69, 69, 409, 404, 69, 407, - 69, 410, 69, 69, 402, 69, 69, 69, 69, 69, - 412, 419, 413, 408, 69, 69, 69, 69, 415, 411, - 69, 69, 421, 418, 420, 414, 423, 416, 417, 422, - 69, 69, 424, 69, 69, 69, 69, 427, 69, 69, - 429, 69, 425, 439, 69, 69, 137, 441, 69, 428, - 455, 426, 430, 440, 69, 438, 69, 431, 69, 432, - - 69, 437, 69, 443, 433, 442, 434, 69, 445, 446, - 69, 448, 447, 69, 435, 69, 69, 69, 69, 69, - 451, 456, 69, 69, 436, 452, 69, 69, 69, 449, - 69, 457, 69, 454, 69, 450, 453, 464, 460, 462, - 458, 459, 461, 69, 463, 69, 69, 69, 469, 466, - 69, 69, 470, 69, 472, 69, 473, 69, 475, 69, - 465, 137, 474, 467, 471, 477, 468, 69, 476, 69, - 69, 478, 69, 69, 69, 481, 69, 479, 480, 69, - 69, 483, 485, 482, 69, 69, 69, 69, 69, 486, - 69, 488, 69, 484, 69, 491, 489, 494, 69, 487, - - 490, 69, 69, 500, 492, 69, 493, 495, 496, 69, - 69, 69, 69, 497, 504, 499, 501, 502, 69, 69, - 69, 506, 69, 69, 503, 507, 505, 69, 508, 69, - 69, 511, 69, 513, 69, 498, 69, 512, 69, 514, - 69, 69, 515, 510, 519, 509, 516, 69, 69, 69, - 520, 517, 69, 518, 523, 521, 69, 69, 524, 69, - 69, 69, 525, 527, 69, 69, 69, 526, 69, 69, - 522, 69, 532, 69, 528, 529, 69, 537, 533, 69, - 539, 534, 69, 530, 69, 531, 69, 69, 536, 535, - 540, 69, 69, 69, 69, 538, 542, 69, 541, 69, - - 543, 546, 547, 69, 549, 69, 545, 69, 69, 69, - 548, 544, 550, 69, 137, 552, 69, 69, 553, 555, - 556, 69, 69, 551, 69, 557, 69, 554, 562, 69, - 559, 561, 69, 69, 69, 69, 563, 558, 560, 69, - 69, 69, 565, 566, 567, 69, 564, 69, 69, 69, - 69, 579, 578, 577, 576, 574, 69, 69, 575, 69, - 69, 69, 587, 590, 568, 69, 592, 588, 591, 69, - 569, 69, 593, 69, 570, 589, 594, 571, 69, 595, - 69, 69, 69, 596, 572, 69, 597, 573, 69, 580, - 581, 69, 582, 599, 69, 583, 69, 602, 69, 601, - - 584, 598, 69, 69, 600, 609, 585, 586, 605, 603, - 606, 69, 607, 608, 69, 69, 604, 69, 69, 69, - 610, 69, 69, 611, 69, 69, 69, 612, 619, 614, - 617, 69, 615, 69, 618, 69, 69, 69, 69, 613, - 69, 616, 69, 623, 69, 621, 622, 69, 625, 69, - 69, 69, 624, 627, 620, 69, 630, 626, 69, 69, - 69, 628, 69, 69, 69, 629, 636, 69, 69, 635, - 631, 69, 69, 69, 69, 632, 639, 641, 646, 634, - 633, 637, 640, 638, 644, 645, 69, 643, 69, 69, - 69, 69, 642, 69, 69, 651, 649, 652, 69, 69, - - 648, 653, 69, 69, 656, 647, 69, 658, 69, 69, - 659, 137, 69, 69, 650, 69, 655, 654, 69, 661, - 69, 69, 69, 69, 69, 69, 657, 660, 672, 69, - 69, 69, 662, 69, 664, 676, 69, 673, 675, 69, - 679, 665, 663, 69, 680, 677, 666, 678, 667, 69, - 674, 69, 668, 69, 669, 69, 681, 688, 683, 670, - 685, 69, 69, 684, 671, 69, 682, 687, 69, 686, - 69, 689, 69, 694, 69, 69, 690, 693, 691, 69, - 697, 69, 699, 69, 69, 69, 695, 696, 698, 702, - 69, 69, 69, 69, 704, 700, 692, 703, 69, 69, - - 69, 705, 69, 701, 706, 707, 69, 708, 69, 69, - 709, 69, 69, 69, 713, 711, 710, 69, 717, 69, - 69, 69, 716, 69, 69, 69, 715, 712, 69, 721, - 722, 714, 69, 723, 727, 720, 718, 719, 69, 725, - 726, 724, 728, 69, 69, 69, 729, 69, 69, 730, - 69, 69, 731, 732, 69, 69, 69, 733, 737, 69, - 69, 69, 69, 69, 734, 739, 735, 740, 69, 741, - 69, 744, 69, 69, 736, 742, 743, 738, 69, 746, - 69, 747, 745, 69, 69, 69, 748, 69, 69, 69, - 752, 69, 753, 69, 755, 69, 758, 751, 69, 749, - - 756, 69, 759, 750, 69, 757, 754, 69, 761, 69, - 760, 69, 765, 69, 69, 69, 69, 762, 763, 69, - 69, 69, 69, 764, 767, 773, 69, 774, 69, 792, - 69, 766, 69, 768, 770, 69, 771, 69, 69, 69, - 775, 69, 772, 776, 769, 69, 779, 781, 69, 69, - 69, 777, 69, 778, 784, 69, 786, 69, 69, 788, - 780, 69, 69, 782, 69, 69, 789, 69, 783, 790, - 785, 69, 69, 69, 69, 69, 794, 787, 791, 795, - 797, 69, 800, 793, 69, 799, 69, 69, 69, 69, - 796, 798, 69, 69, 803, 69, 69, 69, 69, 801, - - 804, 802, 808, 69, 812, 69, 69, 811, 805, 69, - 809, 807, 69, 806, 814, 69, 69, 810, 69, 813, - 816, 817, 135, 815, 69, 818, 69, 69, 820, 821, - 823, 819, 830, 822, 69, 69, 69, 824, 69, 825, - 69, 827, 69, 826, 69, 69, 69, 832, 833, 829, - 69, 828, 69, 69, 69, 834, 69, 841, 835, 69, - 840, 69, 69, 831, 69, 836, 842, 69, 69, 69, - 837, 69, 838, 69, 839, 846, 843, 845, 69, 847, - 69, 848, 844, 69, 69, 851, 850, 69, 849, 854, - 69, 852, 856, 69, 69, 69, 69, 857, 69, 855, - - 858, 860, 69, 862, 69, 69, 859, 69, 853, 69, - 863, 864, 69, 69, 866, 867, 861, 69, 865, 69, - 869, 69, 868, 69, 873, 69, 69, 871, 874, 69, - 872, 870, 69, 69, 876, 877, 69, 875, 69, 69, - 880, 69, 69, 883, 878, 69, 69, 879, 69, 69, - 69, 69, 889, 69, 69, 69, 69, 887, 881, 69, - 884, 69, 69, 69, 893, 882, 885, 895, 888, 886, - 898, 896, 69, 890, 892, 897, 69, 901, 894, 891, - 899, 69, 902, 900, 69, 69, 69, 69, 903, 69, - 69, 69, 69, 69, 69, 69, 904, 908, 911, 69, - - 69, 69, 69, 69, 69, 905, 69, 919, 907, 909, - 69, 918, 69, 910, 913, 906, 914, 912, 915, 916, - 917, 69, 69, 69, 69, 69, 920, 923, 921, 924, - 926, 922, 927, 928, 69, 929, 69, 69, 69, 930, - 69, 69, 69, 69, 935, 925, 932, 69, 936, 69, - 937, 69, 69, 69, 931, 69, 933, 69, 69, 943, - 69, 69, 934, 942, 69, 69, 938, 69, 69, 133, - 69, 939, 69, 951, 941, 69, 69, 944, 69, 940, - 945, 949, 948, 953, 946, 950, 947, 952, 69, 955, - 69, 69, 954, 69, 69, 69, 958, 962, 69, 956, - - 959, 69, 69, 69, 957, 966, 963, 964, 69, 69, - 69, 967, 132, 960, 968, 961, 69, 969, 970, 971, - 69, 69, 965, 69, 972, 69, 69, 69, 974, 973, - 69, 69, 69, 976, 980, 69, 975, 978, 69, 69, - 982, 69, 69, 69, 977, 69, 979, 985, 69, 69, - 69, 69, 69, 984, 987, 69, 990, 991, 981, 69, - 69, 69, 69, 983, 986, 989, 988, 997, 69, 994, - 992, 69, 998, 996, 69, 1000, 69, 69, 69, 993, - 69, 995, 1002, 69, 1003, 69, 1005, 69, 999, 69, - 1001, 1011, 69, 69, 69, 130, 69, 1008, 1004, 1006, - - 1009, 69, 1013, 69, 69, 1017, 1012, 1016, 1014, 1007, - 69, 69, 1010, 69, 1018, 69, 69, 1015, 69, 1023, - 69, 69, 69, 1022, 69, 69, 1025, 1026, 69, 1019, - 1027, 69, 69, 69, 1020, 69, 1021, 69, 69, 1034, - 1028, 69, 69, 1024, 69, 69, 128, 1031, 1033, 1032, - 1038, 1029, 1030, 69, 69, 69, 69, 69, 1035, 1044, - 69, 1036, 1040, 1037, 69, 69, 1041, 1045, 1039, 1042, - 1043, 69, 1047, 69, 1048, 69, 1046, 69, 1053, 1054, - 69, 69, 69, 69, 1050, 69, 1052, 1051, 69, 69, - 69, 69, 1049, 69, 69, 1056, 69, 1062, 69, 1065, - - 69, 1055, 1058, 1057, 69, 1059, 69, 1063, 1061, 1064, - 69, 1066, 1071, 1068, 1060, 69, 1069, 69, 1073, 69, - 69, 69, 1076, 69, 1070, 1067, 1074, 69, 69, 69, - 69, 1078, 69, 1072, 1077, 69, 1084, 1079, 1080, 1075, - 69, 69, 1081, 69, 69, 69, 69, 69, 69, 1088, - 1082, 1089, 1090, 1091, 1083, 69, 1085, 69, 69, 1095, - 69, 1086, 69, 69, 1087, 69, 1092, 69, 69, 1101, - 1097, 69, 69, 1094, 69, 69, 1096, 1098, 1093, 1099, - 69, 1104, 1235, 1102, 1105, 69, 69, 1100, 69, 1106, - 1103, 1107, 69, 1109, 69, 69, 69, 1108, 69, 69, - - 69, 1111, 69, 69, 69, 69, 69, 1110, 1112, 1115, - 1113, 1116, 1120, 69, 1121, 1114, 69, 69, 69, 69, - 1119, 1125, 69, 1118, 1117, 1127, 69, 1122, 1128, 69, - 69, 1130, 69, 69, 1129, 1123, 69, 1124, 1126, 69, - 1132, 1134, 1131, 1136, 69, 69, 69, 69, 1137, 1138, - 1133, 69, 69, 69, 69, 69, 69, 69, 1135, 1148, - 69, 69, 69, 1139, 1140, 1141, 69, 1150, 69, 69, - 1142, 1146, 1143, 1144, 69, 1145, 69, 1147, 1152, 1153, - 69, 1155, 1151, 1154, 69, 1156, 69, 1149, 69, 1158, - 69, 69, 1162, 69, 69, 1165, 1161, 69, 1166, 69, - - 69, 1164, 69, 69, 69, 69, 1160, 1167, 69, 69, - 1157, 69, 1159, 1163, 1168, 69, 1171, 69, 1172, 69, - 1175, 69, 69, 1169, 69, 69, 69, 1170, 69, 1173, - 1179, 69, 1176, 1237, 1180, 1174, 69, 1178, 1181, 69, - 1177, 1187, 1182, 1184, 69, 69, 69, 1183, 69, 1185, - 1186, 1188, 69, 1189, 1191, 69, 1194, 1190, 69, 69, - 1193, 69, 69, 69, 69, 1199, 1196, 1195, 69, 1201, - 69, 1192, 69, 69, 69, 1197, 1203, 69, 1204, 1205, - 69, 1206, 69, 69, 1202, 69, 69, 69, 69, 1198, - 1200, 1208, 1209, 69, 1210, 1211, 69, 69, 1212, 1215, - - 69, 69, 69, 1207, 69, 69, 69, 69, 1213, 1214, - 1220, 1217, 1221, 1222, 69, 69, 1224, 69, 69, 69, - 69, 1216, 1218, 69, 1219, 1229, 69, 1225, 1223, 1227, - 69, 1232, 1228, 69, 1230, 1226, 69, 69, 1234, 1236, - 69, 69, 69, 1239, 1231, 69, 69, 69, 69, 69, - 1233, 69, 69, 69, 1240, 69, 69, 69, 1249, 1242, - 1243, 1238, 1248, 1244, 1245, 69, 69, 1241, 69, 1252, - 1253, 69, 1246, 1247, 69, 1251, 69, 69, 1256, 1255, - 69, 69, 1257, 1250, 69, 1258, 1261, 69, 69, 69, - 69, 69, 1262, 69, 1254, 69, 1263, 1266, 69, 1259, - - 69, 1267, 1770, 69, 1260, 1268, 1270, 1265, 1264, 69, - 69, 69, 1272, 69, 1271, 1269, 69, 69, 1276, 69, - 69, 69, 69, 1282, 69, 1273, 1274, 1279, 1277, 1275, - 69, 69, 1278, 69, 1281, 1280, 69, 1284, 69, 1285, - 1283, 69, 1289, 69, 69, 1291, 69, 69, 69, 69, - 1288, 1286, 1293, 1290, 1294, 69, 1296, 69, 69, 69, - 1299, 69, 69, 1287, 1301, 69, 1292, 1297, 1295, 69, - 1302, 1300, 69, 69, 69, 1306, 69, 69, 1298, 1305, - 69, 69, 69, 69, 1303, 1308, 69, 69, 1311, 69, - 69, 1304, 1314, 69, 69, 69, 69, 1310, 1315, 69, - - 1317, 1316, 1307, 69, 1309, 1312, 1313, 69, 69, 69, - 69, 1326, 69, 69, 69, 1318, 1327, 69, 1319, 1320, - 69, 1324, 69, 1331, 1332, 69, 1322, 1321, 1329, 1323, - 1328, 1325, 69, 1330, 1333, 69, 1335, 69, 1336, 69, - 1337, 69, 69, 1339, 69, 1334, 1340, 69, 69, 69, - 1343, 69, 69, 69, 1342, 1345, 69, 69, 69, 1347, - 69, 1338, 69, 1348, 69, 1349, 69, 1341, 1351, 69, - 69, 1344, 69, 1352, 69, 1346, 1354, 69, 1358, 69, - 1350, 1353, 1359, 69, 1361, 69, 1355, 1357, 69, 69, - 1363, 69, 69, 1356, 69, 69, 69, 69, 1360, 1366, - - 1364, 69, 69, 69, 1365, 69, 1370, 69, 1375, 1368, - 69, 69, 1372, 69, 1362, 1376, 1373, 1371, 1369, 1374, - 1367, 1380, 69, 69, 1379, 69, 69, 69, 1381, 69, - 1377, 1378, 69, 69, 69, 69, 1382, 1386, 1384, 69, - 1383, 69, 1389, 69, 1385, 69, 1387, 1390, 69, 1391, - 69, 1392, 69, 1388, 69, 1396, 69, 1393, 1395, 69, - 1397, 69, 1398, 1399, 69, 69, 1394, 69, 69, 69, - 1400, 1403, 69, 1406, 69, 69, 1770, 1405, 69, 69, - 1407, 1401, 1402, 1410, 1409, 69, 69, 1413, 69, 1404, - 69, 1408, 1412, 1411, 1414, 69, 69, 1416, 69, 1417, - - 69, 1415, 1418, 69, 1419, 69, 69, 69, 69, 69, - 69, 1424, 69, 1422, 1426, 69, 69, 1770, 1425, 69, - 69, 1420, 1423, 1429, 69, 1430, 69, 69, 1421, 1431, - 69, 1428, 69, 1427, 69, 1433, 1434, 69, 1435, 69, - 1432, 1436, 69, 69, 1437, 69, 69, 69, 69, 1444, - 69, 69, 1438, 1442, 69, 1439, 69, 1440, 1441, 69, - 1445, 69, 69, 69, 69, 69, 69, 1443, 1455, 69, - 1453, 1454, 1448, 1456, 69, 69, 1447, 1450, 69, 69, - 1446, 69, 1451, 69, 1452, 1449, 69, 69, 69, 1464, - 1461, 1465, 69, 69, 69, 1457, 1458, 69, 69, 69, - - 69, 1459, 1466, 1460, 1467, 1463, 1462, 69, 1474, 1468, - 1473, 69, 69, 69, 69, 69, 1469, 1470, 69, 1472, - 69, 69, 69, 1471, 69, 1481, 1482, 69, 69, 1476, - 1475, 69, 69, 69, 1477, 1485, 69, 1487, 1478, 1479, - 69, 1480, 1484, 1483, 1488, 69, 69, 1486, 1770, 1489, - 1490, 69, 1492, 69, 1493, 69, 69, 1494, 69, 1491, - 69, 69, 69, 69, 69, 1497, 1498, 1496, 1495, 69, - 69, 1500, 69, 1507, 1502, 1503, 1505, 69, 69, 1501, - 69, 1499, 1506, 69, 69, 1508, 69, 1504, 1509, 69, - 1510, 69, 1511, 1514, 69, 69, 69, 69, 1512, 69, - - 1513, 1515, 69, 69, 1516, 69, 1519, 1517, 69, 69, - 69, 1518, 69, 1524, 69, 69, 69, 1770, 1522, 1523, - 69, 1521, 69, 1520, 1525, 1529, 69, 1531, 69, 69, - 69, 1530, 69, 1526, 69, 1533, 1527, 1532, 69, 1528, - 69, 1534, 1536, 69, 69, 1539, 69, 1535, 1540, 69, - 69, 1542, 69, 69, 1537, 1543, 1544, 69, 1538, 1545, - 69, 1546, 69, 69, 1549, 69, 1541, 1550, 69, 69, - 69, 1547, 69, 69, 1551, 1553, 69, 1548, 1552, 69, - 69, 1556, 1554, 1555, 69, 1560, 69, 69, 69, 69, - 69, 1557, 69, 1564, 69, 1565, 1562, 69, 1559, 1558, - - 69, 69, 69, 69, 69, 1567, 1561, 69, 1563, 69, - 1568, 1570, 1573, 1566, 1575, 69, 69, 69, 69, 69, - 1576, 1579, 69, 1571, 1572, 1574, 1577, 1569, 69, 69, - 69, 69, 1580, 1578, 69, 69, 1586, 1581, 1582, 1585, - 69, 69, 1583, 69, 69, 69, 1588, 69, 69, 1587, - 1594, 69, 1589, 1592, 69, 69, 1584, 1596, 69, 69, - 1599, 69, 69, 69, 1590, 1593, 1591, 1600, 69, 69, - 69, 1601, 69, 1597, 1598, 69, 1595, 1605, 1604, 1607, - 69, 69, 1609, 69, 1602, 69, 1611, 69, 1603, 69, - 1610, 69, 69, 1614, 69, 69, 1617, 69, 1618, 69, - - 1608, 1606, 69, 69, 69, 1622, 69, 69, 1615, 1612, - 69, 69, 69, 1627, 1613, 1620, 1625, 1616, 69, 1623, - 69, 1619, 1630, 69, 1621, 1631, 69, 69, 69, 69, - 1624, 1626, 1770, 1633, 69, 1636, 69, 1628, 1629, 1635, - 1637, 69, 69, 1634, 1638, 69, 1632, 1639, 1640, 69, - 69, 1641, 1642, 69, 69, 69, 1645, 69, 69, 69, - 1648, 69, 69, 1646, 1644, 69, 69, 1647, 1643, 69, - 1649, 1650, 69, 69, 1651, 69, 69, 69, 1659, 69, - 69, 1657, 1660, 69, 1661, 1662, 69, 1652, 1653, 69, - 1654, 1655, 69, 1663, 1664, 69, 1656, 1658, 1666, 69, - - 69, 69, 1669, 69, 1670, 69, 1665, 69, 69, 69, - 69, 69, 69, 1677, 69, 1667, 1674, 1675, 1770, 1668, - 1678, 69, 69, 1672, 1679, 69, 1680, 69, 1683, 1676, - 1673, 69, 1671, 69, 1681, 69, 1682, 69, 69, 69, - 69, 69, 1685, 69, 69, 1684, 69, 1689, 69, 69, - 69, 69, 69, 1697, 69, 1688, 69, 1686, 1687, 1691, - 1698, 1690, 69, 1692, 69, 1694, 1693, 1696, 69, 1699, - 69, 1703, 69, 1700, 69, 1695, 69, 1702, 1707, 69, - 1708, 1701, 69, 69, 1704, 69, 69, 1705, 69, 69, - 69, 69, 1710, 1706, 69, 69, 1709, 69, 69, 1720, - - 1717, 69, 1712, 1714, 1715, 1711, 1718, 69, 1713, 69, - 69, 69, 1721, 1716, 1722, 1723, 1719, 1725, 1726, 69, - 69, 69, 69, 69, 1730, 69, 69, 1727, 69, 69, - 1724, 69, 69, 1733, 69, 69, 1737, 69, 69, 1732, - 1728, 1770, 1729, 1738, 1731, 69, 1740, 1736, 69, 1741, - 1734, 1735, 69, 69, 69, 69, 1739, 1742, 1745, 69, - 1743, 69, 1746, 69, 69, 69, 69, 69, 1747, 1749, - 69, 1751, 1752, 1744, 69, 69, 1755, 69, 69, 69, - 1758, 69, 1748, 69, 1750, 1759, 69, 69, 1760, 1753, - 1761, 69, 69, 1754, 1762, 69, 1756, 1757, 69, 1763, - - 69, 1770, 1766, 1764, 1770, 1765, 1767, 1768, 69, 1769, - 69, 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, 1770, 72, - 72, 72, 72, 127, 127, 1770, 1770, 1770, 127, 127, - 129, 129, 1770, 1770, 129, 1770, 129, 131, 1770, 1770, - 1770, 1770, 1770, 131, 134, 134, 1770, 1770, 1770, 134, - 134, 136, 1770, 1770, 1770, 1770, 1770, 136, 138, 138, - 1770, 138, 138, 138, 138, 73, 73, 1770, 73, 73, - - 73, 73, 13, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770 + 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, + 14, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 14, 14, 14, 42, + 44, 45, 46, 44, 45, 46, 49, 50, 49, 50, + 51, 47, 51, 70, 47, 70, 70, 52, 70, 52, + 54, 55, 56, 57, 70, 18, 54, 55, 56, 57, + 71, 18, 58, 60, 61, 62, 71, 82, 58, 60, + 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, + 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, + + 75, 71, 75, 68, 104, 156, 103, 93, 75, 76, + 140, 140, 69, 15, 16, 17, 65, 66, 67, 71, + 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, + 71, 80, 85, 88, 69, 86, 89, 150, 90, 91, + 81, 71, 94, 71, 96, 71, 71, 158, 71, 105, + 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, + 100, 71, 101, 107, 170, 71, 113, 108, 142, 71, + 114, 142, 118, 71, 119, 111, 115, 71, 120, 116, + 139, 150, 123, 147, 147, 124, 117, 162, 121, 71, + 72, 122, 125, 132, 73, 153, 126, 127, 71, 128, + + 71, 129, 71, 133, 71, 136, 155, 134, 135, 137, + 130, 150, 144, 138, 144, 144, 131, 144, 75, 188, + 75, 75, 149, 75, 149, 149, 70, 149, 70, 70, + 152, 70, 71, 75, 71, 75, 75, 70, 75, 71, + 71, 163, 154, 159, 75, 76, 157, 71, 71, 71, + 160, 71, 71, 171, 71, 165, 71, 71, 71, 71, + 71, 166, 164, 161, 71, 180, 71, 71, 173, 167, + 168, 179, 172, 71, 169, 177, 174, 175, 176, 186, + 71, 337, 178, 182, 71, 71, 183, 181, 71, 189, + 71, 191, 71, 71, 197, 192, 71, 71, 71, 184, + + 185, 71, 71, 198, 187, 200, 196, 71, 71, 190, + 199, 193, 194, 71, 201, 71, 71, 195, 71, 204, + 71, 209, 202, 206, 71, 203, 205, 207, 211, 71, + 71, 148, 71, 208, 71, 216, 210, 212, 71, 220, + 71, 71, 222, 213, 214, 71, 217, 219, 71, 215, + 218, 71, 221, 71, 71, 71, 224, 71, 71, 229, + 71, 71, 223, 232, 225, 71, 231, 71, 71, 146, + 226, 228, 233, 235, 227, 140, 140, 147, 147, 234, + 230, 236, 142, 241, 144, 142, 144, 144, 149, 144, + 149, 149, 75, 149, 75, 75, 150, 75, 71, 237, + + 239, 71, 71, 238, 152, 71, 71, 71, 71, 71, + 243, 71, 71, 246, 71, 240, 242, 244, 245, 249, + 71, 251, 252, 145, 248, 254, 71, 247, 71, 253, + 256, 250, 71, 255, 71, 257, 71, 71, 260, 71, + 258, 71, 265, 261, 267, 266, 71, 71, 262, 71, + 270, 268, 71, 272, 263, 264, 71, 259, 71, 269, + 71, 71, 71, 273, 71, 71, 274, 71, 71, 279, + 280, 71, 281, 276, 71, 275, 277, 282, 71, 271, + 278, 143, 288, 285, 287, 71, 289, 286, 71, 283, + 290, 284, 292, 294, 293, 71, 71, 71, 71, 71, + + 297, 299, 291, 71, 295, 300, 71, 71, 298, 71, + 71, 71, 71, 71, 71, 71, 301, 71, 296, 303, + 305, 71, 71, 302, 71, 307, 71, 309, 71, 71, + 71, 71, 304, 310, 308, 314, 71, 306, 71, 318, + 71, 311, 316, 71, 312, 71, 321, 141, 71, 313, + 323, 325, 71, 317, 315, 71, 71, 71, 319, 320, + 326, 328, 324, 322, 71, 150, 71, 71, 71, 330, + 331, 71, 332, 334, 71, 327, 329, 339, 71, 71, + 71, 71, 335, 71, 71, 71, 338, 71, 345, 346, + 343, 341, 71, 340, 71, 71, 333, 347, 71, 336, + + 349, 71, 71, 348, 342, 71, 71, 71, 71, 71, + 344, 71, 71, 71, 356, 357, 350, 354, 71, 351, + 352, 353, 71, 358, 359, 71, 361, 71, 71, 362, + 360, 71, 71, 355, 363, 365, 71, 368, 71, 71, + 366, 71, 370, 71, 376, 372, 364, 367, 71, 71, + 71, 371, 71, 369, 71, 374, 71, 375, 71, 71, + 71, 71, 373, 71, 381, 71, 71, 71, 382, 71, + 71, 384, 71, 380, 71, 386, 377, 378, 71, 379, + 71, 388, 71, 390, 383, 391, 71, 385, 387, 71, + 71, 71, 389, 71, 71, 477, 71, 400, 392, 393, + + 397, 399, 71, 71, 406, 71, 71, 394, 395, 407, + 396, 398, 71, 71, 403, 401, 402, 71, 71, 404, + 405, 71, 413, 71, 71, 415, 71, 411, 410, 408, + 412, 414, 409, 71, 71, 71, 71, 71, 71, 417, + 422, 71, 71, 71, 71, 425, 71, 418, 416, 424, + 71, 71, 436, 421, 71, 419, 431, 420, 71, 426, + 437, 423, 71, 427, 71, 429, 71, 430, 71, 428, + 71, 432, 71, 71, 71, 438, 472, 439, 71, 150, + 71, 451, 71, 71, 433, 440, 71, 434, 450, 435, + 71, 441, 447, 442, 448, 449, 453, 452, 461, 71, + + 466, 71, 71, 71, 71, 467, 443, 465, 462, 444, + 71, 445, 71, 446, 71, 463, 454, 455, 468, 469, + 464, 71, 473, 470, 71, 471, 456, 71, 457, 458, + 459, 71, 478, 460, 475, 71, 71, 71, 474, 483, + 71, 481, 71, 71, 476, 71, 71, 479, 487, 71, + 480, 71, 482, 71, 71, 485, 491, 492, 490, 71, + 486, 71, 484, 71, 71, 150, 71, 489, 71, 71, + 498, 497, 71, 71, 488, 71, 499, 71, 501, 494, + 495, 493, 496, 71, 71, 71, 71, 71, 502, 71, + 71, 500, 510, 504, 506, 509, 71, 71, 505, 503, + + 511, 71, 513, 71, 547, 507, 512, 508, 71, 515, + 514, 71, 71, 71, 519, 516, 71, 517, 71, 71, + 524, 518, 71, 521, 71, 523, 71, 71, 71, 520, + 71, 525, 522, 527, 71, 71, 71, 71, 71, 528, + 71, 534, 533, 526, 71, 71, 529, 71, 537, 532, + 535, 71, 538, 71, 531, 530, 71, 71, 71, 71, + 71, 71, 548, 71, 540, 536, 541, 550, 71, 71, + 71, 543, 549, 71, 539, 551, 71, 71, 542, 544, + 546, 545, 555, 552, 553, 558, 71, 554, 71, 557, + 71, 71, 71, 71, 71, 71, 71, 556, 561, 564, + + 71, 565, 71, 71, 560, 567, 71, 71, 71, 559, + 71, 71, 71, 71, 562, 563, 580, 566, 581, 568, + 71, 71, 737, 579, 71, 569, 71, 570, 577, 578, + 71, 71, 571, 585, 572, 582, 583, 584, 586, 71, + 71, 71, 573, 589, 71, 574, 575, 71, 591, 587, + 590, 71, 576, 71, 593, 588, 71, 71, 71, 71, + 71, 71, 71, 595, 71, 599, 592, 71, 603, 71, + 600, 594, 596, 71, 606, 150, 71, 597, 604, 605, + 71, 598, 602, 601, 71, 607, 71, 71, 71, 71, + 71, 608, 71, 613, 71, 618, 615, 71, 616, 71, + + 610, 71, 611, 609, 620, 614, 612, 617, 71, 619, + 71, 621, 71, 71, 71, 622, 71, 71, 71, 624, + 625, 629, 71, 71, 632, 71, 630, 71, 623, 633, + 71, 634, 626, 71, 628, 627, 631, 71, 635, 71, + 636, 71, 637, 638, 71, 71, 71, 71, 71, 639, + 642, 71, 640, 641, 71, 646, 71, 71, 645, 71, + 647, 71, 71, 71, 649, 651, 71, 148, 652, 643, + 644, 71, 71, 71, 71, 648, 654, 71, 658, 71, + 653, 655, 650, 71, 660, 656, 71, 71, 661, 664, + 657, 71, 659, 71, 71, 71, 666, 71, 71, 71, + + 662, 667, 663, 665, 669, 71, 71, 671, 71, 71, + 670, 672, 71, 673, 675, 71, 679, 71, 676, 71, + 71, 71, 71, 668, 681, 680, 674, 71, 677, 678, + 682, 71, 71, 686, 71, 71, 683, 688, 684, 71, + 687, 71, 71, 71, 689, 691, 685, 690, 71, 71, + 692, 71, 697, 695, 696, 71, 71, 71, 71, 71, + 701, 693, 694, 703, 700, 699, 71, 71, 71, 71, + 71, 706, 705, 71, 698, 702, 707, 71, 704, 71, + 708, 71, 71, 710, 712, 71, 71, 71, 71, 711, + 71, 713, 71, 709, 718, 71, 71, 71, 71, 71, + + 71, 719, 71, 714, 715, 71, 716, 71, 717, 725, + 720, 723, 71, 724, 721, 71, 722, 71, 71, 726, + 71, 727, 728, 729, 71, 730, 71, 734, 735, 71, + 731, 71, 71, 71, 733, 71, 732, 738, 71, 71, + 71, 71, 742, 71, 743, 745, 746, 739, 736, 71, + 744, 741, 740, 71, 71, 71, 71, 150, 71, 71, + 748, 71, 753, 749, 754, 751, 71, 747, 71, 750, + 752, 71, 755, 756, 71, 757, 71, 761, 71, 71, + 71, 762, 764, 71, 71, 767, 758, 71, 759, 763, + 71, 71, 71, 765, 769, 71, 772, 760, 766, 71, + + 71, 71, 71, 71, 770, 71, 71, 768, 773, 71, + 71, 777, 71, 771, 800, 778, 71, 774, 779, 71, + 782, 784, 785, 776, 71, 780, 775, 783, 781, 71, + 71, 787, 71, 786, 71, 788, 792, 71, 790, 791, + 71, 71, 71, 789, 71, 793, 794, 71, 795, 71, + 804, 796, 805, 71, 71, 71, 797, 146, 801, 802, + 810, 806, 798, 799, 808, 803, 71, 807, 71, 809, + 71, 71, 71, 811, 813, 71, 812, 71, 71, 71, + 71, 71, 816, 71, 820, 71, 71, 814, 819, 71, + 71, 826, 71, 71, 840, 71, 815, 824, 825, 817, + + 818, 821, 71, 822, 827, 830, 831, 829, 823, 828, + 71, 71, 71, 71, 71, 71, 832, 71, 71, 71, + 833, 71, 71, 834, 837, 835, 71, 843, 838, 71, + 71, 71, 71, 71, 71, 841, 836, 842, 71, 71, + 845, 839, 71, 846, 847, 849, 71, 848, 71, 844, + 71, 850, 71, 853, 71, 71, 71, 852, 71, 861, + 71, 858, 851, 71, 856, 854, 71, 71, 860, 859, + 71, 71, 863, 855, 71, 71, 71, 71, 71, 71, + 857, 71, 870, 71, 862, 71, 869, 71, 71, 878, + 71, 864, 873, 867, 865, 866, 868, 871, 71, 874, + + 872, 71, 876, 71, 875, 71, 71, 877, 71, 71, + 885, 887, 880, 71, 71, 889, 71, 71, 879, 71, + 71, 71, 71, 890, 71, 881, 882, 886, 71, 884, + 883, 71, 896, 894, 888, 897, 892, 71, 71, 891, + 898, 71, 71, 895, 893, 901, 71, 903, 71, 71, + 71, 71, 71, 906, 150, 900, 899, 905, 71, 71, + 909, 71, 908, 71, 71, 907, 902, 904, 912, 71, + 71, 71, 71, 71, 71, 71, 924, 925, 71, 71, + 945, 71, 71, 910, 911, 915, 928, 71, 913, 71, + 71, 960, 916, 926, 914, 917, 71, 71, 71, 918, + + 145, 919, 929, 930, 927, 920, 71, 921, 932, 71, + 941, 931, 922, 933, 71, 71, 71, 923, 71, 935, + 934, 937, 71, 939, 936, 71, 71, 944, 71, 946, + 71, 938, 943, 71, 71, 947, 940, 71, 71, 942, + 71, 71, 957, 961, 71, 71, 71, 948, 949, 71, + 950, 71, 956, 962, 71, 951, 143, 952, 958, 71, + 963, 966, 71, 959, 71, 968, 71, 969, 953, 954, + 967, 71, 71, 964, 71, 955, 972, 71, 965, 71, + 71, 71, 71, 71, 973, 71, 978, 971, 71, 975, + 976, 970, 71, 71, 979, 71, 974, 71, 981, 977, + + 71, 71, 987, 71, 71, 71, 71, 980, 71, 71, + 985, 983, 986, 71, 71, 982, 141, 71, 989, 993, + 984, 988, 994, 71, 71, 990, 71, 991, 992, 995, + 71, 997, 996, 998, 71, 1001, 71, 71, 71, 71, + 1002, 71, 1000, 71, 71, 1003, 1005, 999, 1004, 71, + 1006, 71, 1011, 71, 1013, 71, 1008, 1007, 71, 71, + 71, 71, 1009, 71, 1014, 71, 1010, 71, 1016, 71, + 1017, 71, 1019, 1012, 1020, 1018, 1015, 71, 71, 71, + 1025, 1026, 71, 1021, 1022, 1024, 71, 71, 71, 71, + 71, 71, 1029, 1023, 71, 1034, 1027, 1035, 71, 71, + + 71, 71, 71, 71, 1036, 1037, 1028, 71, 1030, 1040, + 1031, 1033, 1041, 71, 1032, 71, 71, 71, 71, 71, + 1038, 1044, 1045, 71, 71, 1042, 71, 1039, 71, 71, + 1049, 1050, 1053, 71, 1046, 1043, 71, 71, 1048, 71, + 71, 71, 1047, 1051, 1052, 1057, 71, 71, 1054, 71, + 71, 71, 71, 1056, 1055, 71, 1059, 1063, 71, 71, + 71, 71, 1069, 71, 1058, 71, 1067, 71, 71, 1060, + 1065, 1062, 1066, 1064, 1068, 1071, 1061, 1072, 71, 71, + 1074, 71, 1076, 71, 1073, 71, 71, 1070, 71, 71, + 1075, 71, 71, 1078, 71, 71, 1084, 71, 71, 1081, + + 1077, 71, 71, 71, 1079, 71, 71, 71, 1087, 1082, + 1080, 1089, 1085, 71, 1083, 71, 1093, 71, 1094, 1086, + 1090, 1096, 1091, 1088, 1095, 1092, 71, 71, 71, 1097, + 71, 71, 71, 71, 71, 1100, 71, 1099, 1102, 1104, + 71, 1105, 71, 71, 71, 1098, 71, 1107, 1108, 71, + 1101, 1103, 1109, 71, 1106, 71, 71, 71, 71, 71, + 71, 1110, 71, 1114, 71, 1112, 71, 71, 1111, 1115, + 1113, 71, 1119, 71, 71, 1124, 71, 1116, 1118, 1120, + 1117, 71, 1121, 1123, 1126, 1125, 71, 1122, 71, 1130, + 71, 1128, 71, 1127, 1131, 71, 71, 71, 71, 1135, + + 1129, 71, 1144, 71, 1145, 1143, 1133, 71, 71, 1132, + 1134, 71, 1146, 71, 1142, 1168, 1136, 71, 71, 1137, + 1138, 71, 1147, 1148, 1139, 71, 1149, 71, 1150, 71, + 1140, 71, 71, 71, 1141, 1151, 1155, 1152, 1154, 71, + 1158, 71, 1159, 71, 71, 1153, 71, 1156, 71, 1160, + 71, 71, 71, 1167, 1161, 71, 1171, 1157, 71, 71, + 1162, 1172, 1170, 71, 71, 1163, 1169, 1164, 1173, 1165, + 1174, 1166, 71, 71, 71, 1175, 71, 1177, 1178, 71, + 71, 71, 1179, 71, 71, 1176, 71, 71, 1182, 1184, + 71, 1190, 71, 1180, 71, 1183, 1186, 1185, 1181, 1189, + + 71, 71, 1192, 71, 1187, 71, 71, 1193, 71, 1194, + 1197, 71, 71, 1195, 71, 1188, 1191, 1199, 71, 1196, + 71, 71, 1203, 71, 71, 1200, 71, 71, 71, 2631, + 1207, 1205, 1198, 71, 71, 1201, 1206, 1208, 1209, 71, + 71, 71, 1202, 71, 1204, 1210, 1212, 1211, 1213, 71, + 1214, 71, 71, 71, 71, 1219, 1220, 1222, 1216, 71, + 1217, 71, 71, 71, 1221, 71, 71, 1218, 71, 1215, + 1226, 71, 71, 71, 1223, 71, 1230, 1231, 71, 1225, + 1233, 71, 71, 71, 1232, 1224, 71, 71, 71, 71, + 71, 71, 1227, 1228, 71, 1234, 71, 1240, 1229, 71, + + 1237, 1235, 71, 1238, 71, 1245, 71, 1236, 1239, 1244, + 71, 1241, 71, 71, 71, 1247, 1249, 1243, 71, 1242, + 71, 1250, 71, 1251, 71, 1246, 1252, 1253, 71, 71, + 71, 1248, 1259, 1257, 1261, 1254, 1258, 71, 71, 1255, + 71, 1262, 1256, 1260, 71, 71, 71, 71, 71, 1263, + 71, 71, 1267, 71, 71, 71, 1272, 1273, 71, 71, + 71, 71, 71, 1264, 1266, 1270, 1268, 71, 71, 71, + 1269, 1265, 1271, 1276, 71, 71, 1274, 1279, 1275, 1277, + 1282, 1278, 71, 1280, 71, 71, 71, 1287, 1281, 1283, + 1284, 71, 1285, 1286, 71, 71, 71, 1292, 1293, 2631, + + 1289, 1291, 71, 71, 71, 71, 1288, 71, 1294, 71, + 1295, 1296, 71, 71, 1298, 71, 1290, 1297, 71, 71, + 1299, 71, 1303, 71, 71, 71, 1302, 71, 71, 1300, + 1306, 1309, 1305, 1301, 1311, 71, 1310, 71, 71, 1312, + 71, 1307, 71, 1304, 71, 71, 71, 1308, 1319, 71, + 71, 71, 71, 1323, 71, 1313, 71, 1314, 1322, 71, + 71, 1315, 71, 1316, 1318, 1317, 71, 2631, 71, 1321, + 1324, 71, 71, 1331, 71, 1320, 71, 1329, 1336, 1325, + 71, 1326, 1328, 1332, 71, 1327, 1330, 71, 1333, 1334, + 71, 71, 1335, 71, 71, 71, 71, 1337, 1340, 1343, + + 1338, 71, 1341, 71, 1347, 71, 1339, 71, 71, 71, + 1344, 71, 1348, 1349, 71, 1342, 71, 71, 1350, 1346, + 1351, 1345, 1355, 1356, 71, 71, 71, 71, 71, 1352, + 1361, 1354, 1359, 71, 1360, 1353, 71, 1362, 71, 1363, + 71, 71, 71, 1357, 71, 71, 71, 1358, 1366, 71, + 1367, 71, 71, 1371, 71, 71, 1370, 1364, 1365, 1368, + 71, 71, 1375, 71, 71, 71, 71, 1369, 71, 1377, + 1373, 71, 1372, 1379, 71, 1380, 71, 1376, 71, 1382, + 1378, 71, 1388, 71, 71, 1374, 1381, 1384, 1385, 71, + 1383, 71, 71, 71, 1387, 71, 71, 71, 1395, 71, + + 1386, 71, 71, 71, 1396, 71, 1390, 71, 1400, 1389, + 1393, 71, 1391, 1392, 1399, 71, 1403, 1402, 1404, 71, + 1394, 1397, 1398, 1406, 71, 71, 71, 1401, 71, 71, + 1408, 71, 71, 71, 1410, 71, 1412, 71, 1413, 1405, + 1407, 71, 71, 71, 1409, 71, 1417, 1414, 71, 1418, + 71, 71, 71, 2631, 1424, 1421, 1411, 1416, 1422, 1415, + 71, 71, 1419, 71, 71, 1420, 1425, 1430, 71, 1427, + 1423, 1429, 1426, 71, 71, 1431, 1428, 71, 1432, 71, + 71, 71, 71, 71, 1433, 1438, 1439, 71, 71, 71, + 1441, 71, 71, 1434, 1440, 71, 71, 1444, 71, 1435, + + 1443, 1436, 71, 1437, 71, 71, 1446, 1445, 71, 71, + 1442, 1453, 71, 71, 71, 71, 71, 71, 71, 1458, + 71, 71, 1449, 1450, 1447, 1448, 1451, 71, 1452, 71, + 1456, 71, 1454, 1455, 1460, 71, 1461, 71, 71, 1457, + 71, 1459, 1462, 71, 71, 1463, 71, 71, 71, 1466, + 71, 1468, 1475, 71, 1476, 71, 1465, 1469, 1467, 71, + 1470, 1464, 1471, 71, 71, 1472, 1477, 1478, 71, 71, + 1473, 71, 1474, 71, 1481, 71, 71, 1479, 1480, 71, + 71, 71, 1483, 71, 1488, 1485, 71, 1482, 1486, 1487, + 71, 1489, 71, 71, 1484, 1493, 1491, 71, 71, 1490, + + 71, 71, 1498, 71, 1492, 71, 71, 71, 71, 1494, + 1495, 1501, 71, 1502, 1500, 71, 71, 1504, 1497, 1499, + 1505, 71, 1496, 1509, 1512, 1506, 71, 1503, 1510, 71, + 71, 1514, 71, 1515, 1508, 1511, 1507, 71, 71, 71, + 1517, 71, 1516, 71, 1513, 1521, 71, 1518, 71, 71, + 71, 71, 71, 1523, 71, 71, 71, 1520, 1519, 1524, + 71, 1522, 1527, 71, 1531, 71, 71, 71, 1525, 1528, + 71, 1526, 71, 1537, 1529, 1533, 71, 1530, 1532, 71, + 71, 1540, 71, 71, 1534, 1536, 1535, 71, 71, 71, + 71, 1542, 1538, 1543, 1544, 1545, 71, 71, 1539, 71, + + 1549, 71, 71, 1541, 71, 1546, 71, 1553, 71, 71, + 71, 71, 71, 71, 1548, 71, 1551, 1555, 71, 71, + 1547, 1550, 1560, 1554, 1556, 1552, 71, 1557, 71, 2631, + 1558, 1561, 1563, 1559, 1564, 71, 1562, 71, 1566, 71, + 1565, 71, 71, 1569, 71, 71, 1567, 71, 71, 1571, + 71, 1568, 71, 1572, 71, 71, 71, 1570, 71, 71, + 71, 1577, 71, 71, 71, 1586, 71, 1578, 1573, 1581, + 71, 1579, 1575, 1576, 1574, 1580, 71, 1587, 1585, 1582, + 71, 71, 1584, 71, 71, 71, 1591, 71, 1592, 1593, + 71, 71, 1583, 1594, 71, 1596, 71, 1588, 71, 1589, + + 71, 1590, 1599, 71, 1600, 1595, 71, 1601, 1603, 1602, + 71, 1605, 1597, 71, 71, 71, 71, 71, 71, 1598, + 1610, 1607, 1608, 71, 71, 1609, 71, 71, 1604, 71, + 71, 1617, 71, 1619, 71, 71, 1615, 71, 1620, 71, + 1606, 1611, 1612, 1613, 71, 1623, 1621, 1616, 1614, 71, + 1618, 1622, 1625, 71, 71, 1627, 1629, 71, 71, 1624, + 71, 71, 1626, 71, 1631, 71, 71, 1634, 1635, 71, + 71, 71, 71, 1639, 71, 1628, 71, 71, 71, 1636, + 1637, 1632, 71, 71, 1641, 71, 1630, 1633, 71, 1644, + 71, 1640, 1642, 1638, 1648, 1647, 71, 1651, 71, 71, + + 71, 1646, 71, 71, 1643, 1650, 1652, 1654, 1645, 1653, + 71, 71, 71, 71, 71, 71, 1649, 71, 1659, 1656, + 1655, 71, 71, 1662, 1663, 71, 1658, 71, 71, 71, + 71, 71, 1657, 1666, 71, 1660, 71, 71, 71, 1675, + 71, 1672, 1665, 71, 1673, 1664, 71, 1661, 1668, 1667, + 1669, 1670, 1674, 1671, 71, 1679, 71, 1677, 1676, 71, + 71, 71, 1678, 71, 1684, 1685, 71, 71, 1686, 71, + 71, 71, 71, 1687, 1681, 1690, 71, 1691, 71, 1692, + 1680, 1682, 1688, 1683, 1693, 71, 1694, 1689, 1695, 71, + 1698, 71, 71, 71, 71, 71, 71, 1700, 1696, 71, + + 1703, 1697, 1705, 1699, 71, 71, 71, 1701, 71, 71, + 71, 71, 71, 71, 1711, 1710, 1709, 1706, 1712, 71, + 71, 1707, 1713, 71, 1702, 1715, 1704, 71, 71, 1708, + 71, 71, 71, 1716, 1718, 1717, 71, 71, 71, 1721, + 1714, 1719, 1720, 71, 71, 71, 71, 1726, 71, 71, + 1722, 1725, 71, 71, 1727, 1723, 1724, 1728, 1729, 1730, + 71, 71, 71, 71, 71, 71, 71, 1737, 1735, 1731, + 1732, 1736, 71, 71, 71, 1739, 71, 71, 71, 1738, + 1733, 71, 1734, 1746, 71, 1742, 1740, 1743, 71, 1744, + 1741, 71, 71, 71, 1745, 1751, 71, 71, 1753, 71, + + 71, 71, 1754, 71, 1747, 71, 1750, 1748, 1749, 1755, + 71, 1756, 1757, 1752, 71, 1759, 71, 71, 71, 1758, + 71, 71, 71, 71, 71, 1760, 71, 71, 71, 1767, + 1762, 71, 1763, 1764, 1771, 71, 71, 2631, 1761, 1766, + 1770, 71, 1768, 71, 1774, 1772, 1769, 71, 1765, 71, + 71, 1773, 1775, 71, 1777, 1778, 1776, 71, 71, 1782, + 71, 1779, 1780, 71, 71, 1781, 1784, 1786, 71, 71, + 71, 71, 1783, 1789, 71, 1788, 71, 1785, 71, 1790, + 71, 1791, 1794, 71, 71, 71, 71, 71, 71, 1795, + 71, 1797, 1800, 71, 71, 1787, 1792, 2631, 1796, 71, + + 1793, 1799, 71, 1801, 1805, 1798, 1804, 71, 71, 1802, + 1803, 71, 71, 1806, 71, 1807, 1809, 71, 71, 1811, + 1810, 71, 1812, 1808, 71, 71, 71, 71, 1816, 1818, + 71, 71, 71, 1813, 1814, 1817, 1819, 1815, 71, 71, + 71, 71, 71, 1820, 1821, 1822, 1823, 71, 71, 71, + 71, 1824, 71, 71, 71, 71, 71, 1831, 1832, 1825, + 1826, 1829, 1830, 71, 1828, 1827, 71, 71, 71, 1833, + 1837, 71, 1835, 1840, 71, 2631, 1839, 1836, 1842, 71, + 1841, 1838, 1834, 71, 71, 71, 1847, 1843, 1844, 1849, + 1845, 1848, 71, 1850, 71, 71, 1846, 1851, 71, 71, + + 71, 1854, 71, 71, 1855, 71, 1852, 1859, 71, 71, + 1860, 71, 71, 1863, 1858, 71, 71, 71, 1856, 71, + 1853, 1864, 1866, 1861, 1865, 71, 1867, 71, 71, 1857, + 1862, 1868, 71, 71, 71, 1869, 71, 1870, 71, 1872, + 71, 71, 71, 1875, 1878, 71, 71, 71, 71, 71, + 1879, 71, 71, 1871, 1881, 1874, 71, 1877, 71, 1873, + 1876, 1884, 1880, 1885, 71, 71, 71, 71, 71, 71, + 1883, 1886, 71, 71, 1882, 2631, 71, 1887, 1895, 71, + 71, 1892, 71, 1896, 71, 2631, 1890, 1898, 1888, 1891, + 1889, 1894, 71, 1893, 71, 1897, 71, 1899, 71, 1900, + + 1901, 71, 1902, 71, 71, 1905, 71, 1903, 71, 1904, + 1908, 71, 71, 1909, 1911, 1906, 71, 1910, 1907, 71, + 1914, 71, 1915, 71, 71, 1917, 71, 71, 1919, 71, + 71, 1913, 1920, 71, 1921, 71, 1912, 71, 1925, 71, + 71, 71, 71, 1916, 1922, 1918, 1924, 1927, 71, 71, + 71, 71, 1931, 1930, 71, 1929, 1923, 1933, 71, 1926, + 1928, 71, 71, 1937, 71, 71, 71, 1932, 71, 71, + 71, 1942, 71, 1934, 1941, 71, 1935, 71, 1946, 71, + 71, 1936, 71, 1940, 71, 1938, 71, 71, 1943, 1939, + 1944, 1948, 1945, 71, 1951, 71, 1949, 71, 71, 1953, + + 1947, 71, 71, 71, 1952, 71, 1955, 1956, 1959, 71, + 1954, 71, 1950, 1964, 1960, 71, 1961, 71, 1958, 71, + 1962, 71, 71, 71, 71, 71, 1965, 71, 1957, 71, + 71, 1973, 1963, 1968, 1969, 71, 1967, 71, 1970, 1971, + 71, 1972, 71, 1978, 1974, 71, 1977, 1966, 71, 71, + 71, 1976, 71, 1979, 71, 1975, 71, 1985, 71, 71, + 71, 1980, 71, 71, 71, 71, 1983, 1992, 1981, 1986, + 1982, 1987, 1984, 71, 1990, 1988, 1989, 1991, 1993, 71, + 71, 1996, 71, 1997, 71, 71, 71, 2000, 1998, 2001, + 71, 1999, 1995, 71, 71, 71, 2002, 71, 71, 1994, + + 71, 2004, 71, 71, 2003, 71, 2005, 71, 2008, 2009, + 71, 71, 2006, 2010, 2011, 71, 2012, 71, 71, 71, + 71, 2007, 2014, 2013, 71, 71, 71, 2021, 2018, 71, + 71, 2020, 71, 71, 2017, 2022, 71, 2015, 71, 2016, + 2026, 71, 71, 2025, 2028, 2019, 71, 71, 2023, 2027, + 71, 2030, 2024, 71, 71, 2033, 2031, 71, 2032, 71, + 2035, 2029, 71, 2034, 2037, 71, 71, 2039, 71, 2036, + 71, 2038, 71, 71, 2043, 71, 2045, 2041, 2042, 2044, + 71, 71, 71, 71, 2046, 71, 71, 71, 2040, 71, + 71, 2049, 2052, 71, 2054, 71, 71, 2047, 71, 2053, + + 71, 2051, 2057, 71, 71, 71, 2050, 2048, 71, 2060, + 2062, 2056, 71, 2055, 2061, 71, 71, 2058, 71, 71, + 2064, 2063, 2059, 71, 2068, 71, 2065, 71, 2067, 2069, + 71, 2070, 71, 2066, 2071, 71, 71, 71, 2074, 2072, + 71, 2075, 71, 71, 2078, 71, 2079, 71, 2080, 71, + 71, 71, 71, 71, 2073, 2076, 71, 71, 2077, 2082, + 71, 2085, 2081, 2083, 2087, 71, 71, 71, 71, 2088, + 71, 71, 71, 2084, 71, 2094, 71, 2086, 71, 71, + 71, 2091, 71, 71, 71, 2093, 2101, 2090, 2095, 2631, + 2098, 2096, 2089, 2097, 2092, 71, 71, 71, 2102, 71, + + 2103, 2104, 2099, 2105, 71, 2100, 2106, 71, 71, 2107, + 71, 2108, 71, 71, 71, 2109, 71, 71, 2111, 71, + 71, 71, 71, 2110, 71, 2119, 2120, 71, 2116, 2122, + 71, 2121, 2113, 2112, 71, 71, 71, 2115, 2114, 2118, + 2117, 71, 71, 2125, 71, 71, 71, 2131, 71, 2132, + 71, 2133, 2123, 2124, 71, 71, 2126, 71, 71, 71, + 2127, 2129, 2128, 71, 2137, 2130, 71, 71, 71, 2141, + 2135, 71, 2134, 2140, 2142, 71, 71, 2136, 2143, 2144, + 71, 71, 71, 2138, 71, 71, 2139, 2151, 71, 71, + 2145, 2146, 2150, 71, 71, 2154, 71, 71, 71, 71, + + 71, 2147, 2155, 2148, 2157, 2149, 2158, 71, 2152, 71, + 2159, 71, 2153, 71, 2156, 2162, 71, 2164, 71, 71, + 2166, 71, 71, 2168, 71, 2163, 71, 2167, 71, 2160, + 71, 2161, 71, 2169, 71, 71, 71, 71, 2165, 71, + 71, 2171, 2175, 2172, 2173, 2177, 71, 2178, 2170, 2174, + 2176, 71, 71, 71, 71, 71, 2185, 71, 2182, 2180, + 2183, 2186, 71, 71, 71, 2179, 71, 2181, 71, 2184, + 2187, 2188, 2191, 71, 71, 71, 2193, 2631, 71, 2192, + 71, 71, 2189, 2196, 71, 2195, 2190, 2631, 2194, 2197, + 71, 2200, 71, 71, 2198, 2199, 2201, 71, 2202, 71, + + 2204, 71, 71, 71, 2203, 2205, 71, 2206, 71, 71, + 71, 71, 2207, 71, 2212, 2210, 71, 2209, 71, 71, + 71, 2213, 71, 2208, 2214, 2211, 71, 71, 2219, 71, + 71, 2217, 71, 2216, 71, 2218, 2215, 71, 2220, 2224, + 71, 71, 71, 2228, 71, 71, 71, 71, 2233, 2221, + 2226, 71, 2222, 2223, 71, 2232, 2225, 2227, 2234, 71, + 71, 2230, 71, 71, 2229, 71, 71, 2231, 2235, 71, + 2236, 2237, 71, 2239, 71, 2242, 2238, 2243, 71, 71, + 2240, 2244, 71, 2245, 71, 2246, 71, 2241, 71, 71, + 2249, 2250, 71, 2251, 71, 71, 71, 71, 2252, 2247, + + 2254, 71, 71, 2255, 2256, 71, 2258, 71, 2248, 71, + 71, 2261, 2257, 71, 2253, 2262, 71, 71, 71, 71, + 2264, 71, 2263, 71, 2260, 2265, 71, 2259, 2270, 2269, + 71, 71, 2273, 71, 71, 2272, 2266, 71, 71, 2267, + 71, 2268, 2274, 2276, 71, 71, 2275, 71, 2278, 71, + 71, 71, 71, 71, 2281, 2271, 2285, 71, 71, 71, + 71, 2289, 71, 2290, 2279, 2280, 2284, 2287, 2282, 2277, + 71, 2283, 2286, 71, 2291, 71, 2292, 2288, 71, 71, + 71, 71, 71, 2294, 71, 71, 2293, 2300, 71, 71, + 2297, 71, 2301, 2303, 71, 2305, 71, 71, 2304, 2295, + + 71, 71, 2298, 2302, 2299, 2306, 2296, 2309, 71, 71, + 2307, 71, 71, 2310, 71, 2308, 2313, 71, 2317, 71, + 2311, 2314, 71, 2316, 71, 71, 71, 2312, 71, 71, + 2315, 71, 2631, 2318, 71, 71, 2325, 2319, 71, 2324, + 71, 2322, 71, 2328, 71, 2327, 2329, 2326, 2321, 2330, + 71, 2320, 2323, 2331, 71, 2332, 71, 71, 71, 71, + 71, 2337, 71, 71, 2334, 2336, 2333, 71, 2338, 71, + 2340, 71, 71, 71, 2339, 2345, 71, 2335, 2343, 71, + 2341, 71, 2347, 71, 2346, 71, 2350, 71, 71, 71, + 71, 71, 71, 2342, 2344, 2353, 71, 71, 2348, 2354, + + 2349, 2351, 2352, 71, 71, 2357, 2360, 71, 2355, 2358, + 71, 71, 2362, 71, 71, 2356, 2363, 71, 2365, 71, + 71, 71, 2368, 71, 71, 71, 2367, 71, 2372, 2359, + 2361, 2364, 71, 71, 2369, 71, 2366, 2375, 71, 2376, + 71, 2377, 71, 71, 2371, 71, 2373, 2370, 71, 71, + 2384, 71, 2379, 71, 2381, 2374, 2385, 71, 2386, 71, + 2382, 2378, 71, 71, 2389, 2380, 2390, 71, 2392, 2383, + 71, 2387, 71, 71, 71, 2391, 71, 2397, 2394, 71, + 71, 2393, 2388, 71, 2395, 2400, 71, 2401, 71, 71, + 2403, 71, 2404, 71, 71, 2396, 71, 2398, 2399, 2405, + + 71, 2408, 71, 2409, 71, 2407, 2410, 71, 2402, 71, + 2406, 2412, 71, 71, 2411, 71, 71, 2415, 2416, 71, + 71, 71, 71, 2420, 71, 71, 2422, 71, 71, 2424, + 2421, 2419, 2413, 71, 2417, 71, 71, 2414, 2426, 71, + 71, 2418, 2423, 71, 2425, 2427, 71, 71, 71, 71, + 71, 2430, 71, 2428, 2432, 71, 71, 2433, 2631, 2431, + 71, 71, 71, 2429, 71, 71, 2444, 71, 71, 2434, + 2442, 2491, 2435, 71, 2437, 2436, 2438, 2446, 2439, 2440, + 2445, 71, 71, 2441, 2443, 2447, 71, 2448, 71, 2449, + 2450, 71, 71, 2452, 71, 2451, 71, 2455, 71, 71, + + 2453, 71, 71, 71, 71, 2457, 2456, 71, 2461, 71, + 2454, 2462, 71, 2460, 2463, 71, 71, 2458, 71, 71, + 71, 2459, 71, 2465, 2464, 2466, 2468, 2470, 2467, 71, + 71, 2469, 71, 71, 2474, 2472, 71, 2477, 71, 2478, + 71, 2475, 71, 2473, 2471, 2479, 71, 2480, 71, 2476, + 2481, 71, 71, 2483, 71, 2484, 71, 2485, 71, 71, + 2487, 2482, 71, 2489, 71, 71, 71, 71, 2493, 71, + 2486, 71, 2496, 71, 2495, 71, 71, 2488, 71, 71, + 71, 2498, 71, 2490, 71, 2502, 71, 2494, 71, 2497, + 2504, 2500, 2492, 71, 71, 71, 2501, 71, 2499, 71, + + 71, 2510, 2509, 71, 2512, 2508, 71, 2503, 2505, 2506, + 71, 71, 71, 71, 71, 2511, 2507, 71, 71, 2513, + 2602, 71, 2521, 71, 71, 2523, 71, 2516, 71, 2514, + 2515, 71, 2518, 2522, 2519, 2520, 71, 2524, 2517, 2525, + 71, 2526, 71, 71, 71, 71, 2529, 2527, 71, 2530, + 2531, 2528, 71, 2534, 71, 2536, 71, 71, 71, 71, + 71, 71, 2540, 71, 71, 2541, 2542, 2533, 2535, 71, + 71, 2544, 2545, 2532, 71, 2538, 2537, 71, 71, 2539, + 71, 71, 71, 71, 2546, 71, 71, 2547, 2543, 2551, + 71, 2553, 71, 71, 71, 71, 2550, 71, 71, 2548, + + 2558, 2549, 2559, 2552, 71, 2555, 2556, 2562, 71, 2554, + 71, 2564, 71, 2557, 2631, 2563, 2560, 71, 71, 2565, + 71, 71, 71, 2561, 2570, 2566, 2567, 2568, 71, 71, + 71, 2569, 71, 2571, 2572, 71, 2573, 71, 71, 71, + 2578, 71, 71, 71, 2575, 71, 71, 71, 2574, 71, + 2581, 2582, 71, 71, 71, 2580, 2583, 2576, 2577, 2584, + 2579, 71, 2586, 71, 2587, 71, 2585, 2588, 71, 2589, + 2590, 71, 2593, 71, 71, 2595, 2591, 71, 2596, 2592, + 71, 71, 71, 2600, 71, 2597, 71, 71, 2598, 2603, + 71, 2601, 2594, 71, 2604, 71, 71, 71, 2609, 71, + + 2605, 2599, 2607, 71, 71, 71, 71, 71, 71, 2611, + 2612, 71, 2615, 71, 2606, 2608, 2616, 71, 71, 2619, + 2620, 71, 2610, 71, 71, 2613, 2614, 2617, 2622, 71, + 2621, 2624, 2618, 2623, 71, 71, 71, 71, 71, 2631, + 2625, 2626, 2629, 71, 2630, 71, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2627, 2628, 43, 43, + 43, 43, 43, 43, 43, 48, 48, 48, 48, 48, + 48, 48, 53, 53, 53, 53, 53, 53, 53, 59, + 59, 59, 59, 59, 59, 59, 64, 64, 64, 64, + 64, 64, 64, 74, 74, 2631, 74, 74, 74, 74, + + 140, 140, 2631, 2631, 2631, 140, 140, 142, 142, 2631, + 2631, 142, 2631, 142, 144, 2631, 2631, 2631, 2631, 2631, + 144, 147, 147, 2631, 2631, 2631, 147, 147, 149, 2631, + 2631, 2631, 2631, 2631, 149, 151, 151, 2631, 151, 151, + 151, 151, 75, 75, 2631, 75, 75, 75, 75, 13, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631 } ; -static yyconst flex_int16_t yy_chk[3543] = +static yyconst flex_int16_t yy_chk[5191] = { 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, 1, 1, 1, 1, 3, - 3, 3, 4, 4, 4, 50, 5, 5, 50, 3, - 5, 15, 4, 6, 6, 15, 5, 6, 9, 9, - 9, 156, 33, 6, 7, 7, 7, 7, 9, 7, - 10, 10, 10, 45, 45, 7, 8, 8, 8, 8, - 10, 8, 21, 33, 156, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1776, 20, 29, 20, 20, 11, - - 20, 29, 24, 21, 25, 20, 24, 28, 11, 12, - 12, 12, 12, 12, 12, 75, 22, 22, 75, 25, - 12, 70, 28, 30, 22, 70, 24, 26, 26, 12, - 19, 22, 19, 19, 35, 19, 26, 83, 30, 27, - 19, 19, 23, 27, 61, 61, 27, 23, 35, 31, - 31, 23, 39, 27, 23, 27, 23, 23, 31, 83, - 32, 32, 36, 36, 31, 32, 39, 36, 31, 37, - 659, 39, 38, 38, 37, 38, 79, 36, 40, 40, - 36, 32, 34, 40, 37, 111, 111, 34, 37, 37, - 38, 34, 77, 56, 79, 56, 56, 34, 56, 64, - - 34, 64, 64, 66, 64, 66, 66, 34, 66, 67, - 64, 69, 77, 69, 69, 76, 69, 78, 80, 76, - 78, 69, 82, 67, 72, 81, 72, 72, 84, 72, - 86, 85, 80, 78, 72, 72, 85, 81, 87, 88, - 82, 89, 90, 91, 86, 98, 90, 84, 91, 85, - 92, 94, 95, 128, 128, 136, 94, 88, 87, 89, - 93, 99, 96, 93, 92, 97, 93, 96, 97, 98, - 100, 95, 97, 102, 100, 99, 101, 103, 104, 105, - 93, 107, 106, 101, 103, 107, 102, 96, 108, 109, - 110, 104, 112, 118, 109, 113, 114, 115, 109, 105, - - 106, 116, 117, 119, 119, 118, 108, 117, 113, 120, - 110, 114, 112, 121, 122, 123, 115, 123, 124, 116, - 125, 126, 130, 124, 119, 130, 143, 120, 132, 121, - 132, 132, 125, 132, 134, 122, 135, 135, 123, 126, - 137, 143, 137, 137, 138, 137, 138, 138, 140, 138, - 145, 140, 141, 142, 144, 138, 146, 141, 142, 147, - 148, 154, 144, 149, 133, 148, 148, 150, 149, 145, - 157, 146, 150, 151, 157, 151, 153, 153, 155, 147, - 154, 158, 160, 155, 159, 162, 158, 161, 163, 164, - 164, 165, 166, 163, 131, 151, 152, 160, 159, 161, - - 152, 167, 161, 162, 129, 152, 167, 172, 166, 164, - 152, 165, 168, 168, 169, 170, 152, 152, 171, 169, - 170, 173, 180, 182, 174, 169, 173, 171, 172, 174, - 175, 176, 177, 178, 179, 175, 176, 181, 184, 177, - 179, 183, 180, 181, 186, 182, 178, 185, 187, 183, - 188, 184, 185, 189, 190, 188, 191, 192, 193, 186, - 193, 191, 194, 196, 197, 195, 198, 198, 187, 194, - 195, 203, 190, 190, 199, 189, 197, 192, 200, 199, - 202, 204, 196, 200, 201, 208, 201, 209, 205, 204, - 203, 206, 202, 205, 207, 211, 206, 199, 210, 207, - - 208, 212, 217, 201, 212, 209, 210, 213, 213, 214, - 215, 215, 214, 216, 216, 218, 219, 220, 217, 219, - 211, 220, 221, 222, 223, 224, 224, 225, 222, 226, - 218, 221, 225, 227, 226, 229, 228, 230, 223, 231, - 231, 232, 233, 234, 236, 235, 233, 241, 237, 236, - 230, 237, 238, 227, 228, 239, 229, 235, 240, 232, - 242, 234, 243, 244, 238, 244, 244, 240, 241, 245, - 245, 247, 239, 242, 243, 239, 246, 248, 249, 246, - 250, 251, 251, 253, 253, 252, 254, 249, 247, 250, - 252, 247, 248, 255, 256, 257, 259, 258, 255, 260, - - 261, 254, 258, 261, 260, 261, 256, 262, 263, 264, - 267, 269, 265, 268, 266, 257, 259, 265, 264, 266, - 270, 262, 271, 272, 263, 271, 269, 263, 274, 263, - 275, 267, 276, 268, 270, 278, 277, 272, 352, 275, - 279, 271, 273, 274, 273, 273, 280, 281, 282, 283, - 278, 280, 284, 276, 273, 277, 273, 273, 273, 286, - 279, 273, 287, 352, 283, 289, 285, 284, 282, 288, - 281, 285, 290, 292, 288, 293, 287, 290, 294, 286, - 127, 289, 291, 291, 295, 291, 296, 298, 296, 299, - 300, 293, 297, 292, 294, 301, 297, 302, 295, 300, - - 304, 306, 302, 299, 301, 298, 303, 306, 305, 304, - 303, 307, 300, 305, 309, 307, 308, 308, 310, 309, - 311, 311, 312, 313, 314, 315, 316, 312, 317, 317, - 316, 310, 319, 314, 318, 320, 320, 315, 323, 318, - 322, 322, 324, 325, 313, 326, 327, 329, 330, 331, - 324, 332, 325, 319, 337, 333, 332, 334, 327, 323, - 338, 335, 334, 331, 333, 326, 336, 329, 330, 335, - 339, 336, 337, 340, 341, 342, 343, 340, 344, 347, - 342, 346, 338, 348, 349, 350, 363, 349, 348, 341, - 363, 339, 343, 348, 354, 347, 356, 344, 345, 345, - - 355, 346, 351, 351, 345, 350, 345, 353, 353, 354, - 357, 356, 355, 358, 345, 359, 360, 361, 362, 365, - 359, 364, 366, 68, 345, 360, 364, 370, 367, 357, - 368, 365, 371, 362, 372, 358, 361, 372, 368, 370, - 366, 367, 369, 369, 371, 373, 374, 375, 376, 374, - 384, 377, 376, 376, 378, 378, 379, 379, 381, 381, - 373, 62, 380, 375, 377, 383, 375, 380, 382, 382, - 383, 384, 385, 390, 386, 387, 389, 385, 386, 388, - 387, 389, 391, 388, 392, 393, 396, 391, 394, 392, - 403, 394, 397, 390, 395, 395, 394, 398, 399, 393, - - 394, 405, 398, 403, 396, 400, 397, 399, 400, 401, - 402, 404, 406, 401, 407, 402, 404, 405, 409, 407, - 408, 409, 410, 411, 406, 410, 408, 412, 411, 413, - 416, 414, 415, 416, 417, 401, 414, 415, 419, 417, - 420, 422, 418, 413, 421, 412, 418, 418, 426, 421, - 422, 419, 423, 420, 424, 423, 428, 429, 424, 424, - 425, 427, 425, 427, 430, 431, 434, 426, 432, 433, - 423, 435, 432, 436, 428, 429, 438, 437, 433, 439, - 439, 434, 437, 430, 443, 431, 440, 441, 436, 435, - 440, 442, 444, 445, 446, 438, 442, 447, 441, 449, - - 443, 446, 447, 448, 449, 451, 445, 450, 452, 453, - 448, 444, 450, 454, 455, 452, 458, 456, 453, 455, - 456, 457, 460, 451, 465, 457, 467, 454, 462, 459, - 459, 460, 463, 462, 464, 466, 463, 458, 459, 468, - 471, 474, 465, 466, 467, 477, 464, 478, 479, 483, - 484, 480, 479, 478, 477, 471, 480, 482, 474, 487, - 485, 489, 482, 485, 468, 469, 487, 483, 486, 486, - 469, 488, 488, 494, 469, 484, 489, 469, 490, 490, - 491, 492, 493, 491, 469, 495, 492, 469, 481, 481, - 481, 496, 481, 494, 498, 481, 497, 497, 499, 496, - - 481, 493, 504, 500, 495, 504, 481, 481, 500, 498, - 501, 501, 502, 503, 505, 506, 499, 502, 503, 507, - 505, 508, 511, 506, 509, 510, 513, 507, 514, 509, - 512, 512, 510, 514, 513, 515, 517, 518, 520, 508, - 519, 511, 522, 519, 525, 517, 518, 521, 521, 527, - 523, 526, 520, 523, 515, 528, 526, 522, 529, 530, - 531, 523, 532, 533, 534, 525, 532, 535, 536, 531, - 527, 537, 538, 539, 542, 528, 535, 537, 542, 530, - 529, 533, 536, 534, 540, 541, 543, 539, 544, 540, - 541, 545, 538, 546, 547, 547, 545, 548, 549, 550, - - 544, 549, 548, 551, 552, 543, 553, 554, 554, 552, - 555, 555, 556, 558, 546, 557, 551, 550, 559, 557, - 560, 561, 564, 566, 563, 565, 553, 556, 563, 571, - 567, 568, 558, 569, 560, 567, 570, 564, 566, 575, - 570, 561, 559, 562, 571, 568, 562, 569, 562, 574, - 565, 572, 562, 573, 562, 576, 572, 578, 573, 562, - 575, 577, 578, 574, 562, 580, 572, 577, 581, 576, - 579, 579, 582, 581, 586, 583, 579, 580, 579, 584, - 584, 587, 586, 585, 588, 594, 582, 583, 585, 589, - 589, 597, 595, 590, 592, 587, 579, 590, 593, 592, - - 598, 593, 596, 588, 594, 595, 599, 596, 600, 601, - 597, 602, 603, 604, 601, 599, 598, 607, 605, 608, - 609, 616, 604, 605, 610, 611, 603, 600, 612, 610, - 611, 602, 613, 612, 616, 609, 607, 608, 614, 614, - 615, 613, 618, 621, 622, 615, 618, 618, 619, 619, - 620, 623, 619, 620, 624, 625, 626, 621, 625, 630, - 627, 634, 628, 629, 622, 627, 623, 628, 636, 629, - 631, 632, 632, 633, 624, 630, 631, 626, 635, 634, - 637, 635, 633, 638, 639, 640, 636, 641, 642, 644, - 640, 643, 641, 645, 643, 648, 646, 639, 650, 637, - - 644, 646, 647, 638, 651, 645, 642, 647, 649, 649, - 648, 652, 653, 654, 656, 655, 653, 650, 651, 657, - 660, 661, 662, 652, 655, 663, 682, 664, 671, 682, - 663, 654, 664, 656, 660, 665, 661, 667, 666, 668, - 665, 669, 662, 666, 657, 670, 669, 671, 672, 673, - 676, 667, 675, 668, 674, 674, 676, 677, 678, 678, - 670, 679, 680, 672, 681, 683, 679, 684, 673, 680, - 675, 686, 688, 690, 685, 687, 684, 677, 681, 685, - 687, 689, 690, 683, 691, 689, 692, 693, 694, 695, - 686, 688, 696, 697, 693, 699, 698, 700, 701, 691, - - 694, 692, 698, 706, 703, 704, 705, 701, 695, 703, - 699, 697, 709, 696, 705, 707, 711, 700, 720, 704, - 707, 708, 57, 706, 712, 708, 708, 710, 710, 711, - 713, 709, 720, 712, 715, 713, 714, 714, 716, 715, - 717, 717, 718, 716, 719, 721, 728, 722, 723, 719, - 724, 718, 722, 723, 725, 724, 726, 728, 725, 727, - 727, 731, 730, 721, 732, 726, 730, 735, 733, 736, - 726, 738, 726, 739, 726, 734, 731, 733, 737, 734, - 734, 735, 732, 740, 742, 738, 737, 747, 736, 741, - 741, 739, 743, 743, 745, 746, 749, 745, 753, 742, - - 746, 748, 748, 750, 750, 751, 747, 755, 740, 754, - 751, 752, 752, 758, 754, 755, 749, 756, 753, 757, - 757, 759, 756, 760, 762, 767, 766, 759, 763, 762, - 760, 758, 764, 763, 765, 766, 768, 764, 770, 765, - 769, 769, 771, 772, 767, 775, 773, 768, 772, 774, - 776, 777, 777, 778, 779, 782, 780, 775, 770, 781, - 773, 786, 783, 789, 781, 771, 773, 783, 776, 774, - 786, 785, 787, 778, 780, 785, 785, 789, 782, 779, - 787, 788, 790, 788, 791, 792, 793, 790, 791, 794, - 795, 797, 796, 798, 799, 801, 792, 796, 799, 800, - - 807, 805, 802, 803, 804, 793, 806, 807, 795, 797, - 809, 806, 811, 798, 801, 794, 802, 800, 803, 804, - 805, 808, 810, 812, 813, 814, 808, 811, 809, 812, - 814, 810, 815, 816, 817, 817, 820, 815, 816, 819, - 819, 821, 822, 823, 824, 813, 821, 826, 824, 824, - 825, 825, 827, 828, 820, 829, 822, 830, 832, 831, - 837, 833, 823, 830, 831, 834, 826, 835, 836, 52, - 838, 827, 839, 839, 829, 840, 843, 832, 841, 828, - 833, 837, 836, 841, 834, 838, 835, 840, 842, 843, - 844, 845, 842, 855, 846, 848, 846, 849, 849, 844, - - 846, 850, 852, 851, 845, 853, 850, 851, 868, 857, - 853, 855, 51, 846, 857, 848, 858, 858, 859, 861, - 861, 867, 852, 859, 863, 863, 865, 866, 866, 865, - 869, 871, 870, 868, 872, 872, 867, 870, 873, 874, - 874, 875, 876, 877, 869, 878, 871, 877, 881, 879, - 885, 882, 884, 876, 879, 883, 883, 884, 873, 886, - 887, 888, 890, 875, 878, 882, 881, 890, 892, 887, - 885, 889, 891, 889, 898, 893, 894, 891, 896, 886, - 893, 888, 895, 895, 896, 899, 899, 900, 892, 901, - 894, 903, 907, 905, 902, 46, 903, 902, 898, 900, - - 902, 904, 905, 906, 908, 909, 904, 908, 906, 901, - 909, 911, 902, 910, 910, 912, 913, 907, 914, 915, - 916, 917, 920, 914, 915, 919, 917, 918, 918, 911, - 919, 921, 922, 923, 912, 925, 913, 924, 927, 926, - 920, 928, 929, 916, 926, 931, 41, 923, 925, 924, - 931, 921, 922, 932, 935, 933, 941, 934, 927, 938, - 938, 928, 933, 929, 939, 942, 934, 939, 932, 934, - 935, 940, 941, 943, 942, 944, 940, 945, 946, 947, - 947, 948, 949, 946, 944, 950, 945, 944, 951, 953, - 954, 956, 943, 952, 958, 949, 955, 955, 14, 958, - - 957, 948, 951, 950, 960, 952, 961, 956, 954, 957, - 959, 959, 963, 960, 953, 964, 960, 963, 965, 967, - 966, 969, 968, 965, 961, 959, 966, 968, 970, 974, - 973, 970, 975, 964, 969, 976, 977, 970, 973, 967, - 978, 977, 974, 979, 981, 982, 983, 984, 985, 982, - 975, 983, 984, 985, 976, 987, 978, 986, 988, 989, - 989, 979, 990, 991, 981, 992, 986, 993, 994, 995, - 991, 996, 997, 988, 995, 998, 990, 992, 987, 993, - 1134, 998, 1134, 996, 999, 999, 1000, 994, 1003, 1000, - 997, 1001, 1001, 1004, 1004, 1005, 1006, 1003, 1008, 1007, - - 1009, 1006, 1011, 1012, 1010, 1013, 1016, 1005, 1007, 1010, - 1008, 1011, 1014, 1014, 1015, 1009, 1017, 1018, 1020, 1015, - 1013, 1019, 1019, 1012, 1011, 1021, 1021, 1016, 1022, 1022, - 1023, 1024, 1028, 1030, 1023, 1017, 1024, 1018, 1020, 1025, - 1027, 1029, 1025, 1031, 1031, 1027, 1029, 1032, 1032, 1033, - 1028, 1034, 1035, 1036, 1033, 1037, 1039, 1038, 1030, 1040, - 1040, 1041, 1043, 1034, 1034, 1034, 1042, 1042, 1047, 1045, - 1034, 1038, 1035, 1036, 1048, 1037, 1049, 1039, 1045, 1046, - 1046, 1048, 1043, 1047, 1050, 1049, 1052, 1041, 1051, 1051, - 1053, 1055, 1056, 1057, 1058, 1059, 1055, 1056, 1060, 1060, - - 1059, 1058, 1061, 1063, 1065, 1062, 1053, 1061, 1064, 1068, - 1050, 1067, 1052, 1057, 1062, 1066, 1065, 1070, 1066, 1069, - 1069, 1071, 1072, 1063, 1073, 1074, 1137, 1064, 1078, 1067, - 1073, 1076, 1070, 1137, 1074, 1068, 1079, 1072, 1075, 1075, - 1071, 1080, 1076, 1077, 1077, 1084, 1080, 1076, 1085, 1078, - 1079, 1081, 1081, 1082, 1083, 1087, 1086, 1082, 1082, 1083, - 1085, 1086, 1088, 1089, 1090, 1091, 1088, 1087, 1092, 1093, - 1091, 1084, 1094, 1096, 1093, 1089, 1096, 1097, 1097, 1098, - 1098, 1099, 1099, 1100, 1094, 1101, 1104, 1102, 1103, 1090, - 1092, 1101, 1102, 1106, 1103, 1104, 1108, 1110, 1106, 1111, - - 1111, 1112, 1113, 1100, 1114, 1115, 1116, 1117, 1108, 1110, - 1116, 1113, 1117, 1118, 1119, 1121, 1121, 1122, 1118, 1129, - 1123, 1112, 1114, 1124, 1115, 1126, 1126, 1121, 1119, 1123, - 1130, 1131, 1124, 1132, 1129, 1122, 1131, 1133, 1133, 1135, - 1135, 1138, 1139, 1139, 1130, 1140, 1141, 1142, 1143, 1145, - 1132, 1144, 1146, 1147, 1140, 1154, 1150, 1149, 1150, 1142, - 1143, 1138, 1149, 1144, 1145, 1151, 1152, 1141, 1156, 1154, - 1155, 1155, 1146, 1147, 1157, 1152, 1158, 1159, 1158, 1157, - 1160, 1161, 1159, 1151, 1162, 1160, 1163, 1164, 1165, 1167, - 1171, 1163, 1164, 1168, 1156, 1172, 1165, 1169, 1169, 1161, - - 1170, 1170, 13, 1186, 1162, 1171, 1173, 1168, 1167, 1174, - 1175, 1173, 1175, 1176, 1174, 1172, 1178, 1177, 1178, 1179, - 1180, 1185, 1182, 1186, 1187, 1176, 1177, 1182, 1179, 1177, - 1183, 1189, 1180, 1191, 1185, 1183, 1192, 1189, 1193, 1191, - 1187, 1194, 1195, 1195, 1196, 1197, 1197, 1198, 1199, 1200, - 1194, 1192, 1199, 1196, 1200, 1201, 1202, 1202, 1204, 1203, - 1207, 1207, 1208, 1193, 1209, 1209, 1198, 1203, 1201, 1210, - 1210, 1208, 1211, 1212, 1213, 1214, 1214, 1216, 1204, 1213, - 1217, 1218, 1219, 1220, 1211, 1217, 1225, 1221, 1220, 1227, - 1222, 1212, 1223, 1223, 1224, 1226, 1230, 1219, 1224, 1228, - - 1226, 1225, 1216, 1231, 1218, 1221, 1222, 1232, 1233, 1234, - 1235, 1237, 1237, 1238, 1240, 1227, 1238, 1239, 1228, 1230, - 1241, 1234, 1242, 1242, 1243, 1243, 1232, 1231, 1240, 1233, - 1239, 1235, 1245, 1241, 1244, 1244, 1246, 1246, 1247, 1247, - 1248, 1248, 1249, 1250, 1250, 1245, 1251, 1251, 1252, 1254, - 1255, 1255, 1256, 1259, 1254, 1257, 1257, 1258, 1263, 1259, - 1260, 1249, 1264, 1260, 1261, 1261, 1267, 1252, 1262, 1262, - 1268, 1256, 1269, 1263, 1270, 1258, 1265, 1265, 1270, 1272, - 1261, 1264, 1271, 1271, 1273, 1273, 1267, 1269, 1274, 1275, - 1275, 1276, 1277, 1268, 1278, 1279, 1280, 1281, 1272, 1278, - - 1276, 1282, 1283, 1284, 1277, 1286, 1282, 1285, 1287, 1280, - 1290, 1288, 1284, 1287, 1274, 1288, 1285, 1283, 1281, 1286, - 1279, 1294, 1292, 1293, 1293, 1297, 1294, 1295, 1295, 1298, - 1290, 1292, 1300, 1304, 1302, 1308, 1295, 1302, 1298, 1312, - 1297, 1303, 1305, 1305, 1300, 1310, 1303, 1307, 1307, 1308, - 1309, 1309, 1311, 1304, 1313, 1313, 1315, 1310, 1312, 1316, - 1315, 1319, 1316, 1317, 1317, 1318, 1311, 1321, 1320, 1322, - 1318, 1321, 1323, 1324, 1325, 1327, 0, 1323, 1324, 1328, - 1325, 1319, 1320, 1329, 1328, 1330, 1334, 1334, 1329, 1322, - 1331, 1327, 1331, 1330, 1338, 1338, 1341, 1342, 1342, 1344, - - 1344, 1341, 1346, 1347, 1347, 1348, 1349, 1346, 1350, 1355, - 1352, 1353, 1353, 1350, 1356, 1357, 1358, 0, 1355, 1356, - 1362, 1348, 1352, 1360, 1360, 1362, 1364, 1363, 1349, 1363, - 1365, 1358, 1369, 1357, 1370, 1365, 1366, 1366, 1367, 1367, - 1364, 1368, 1368, 1371, 1369, 1372, 1373, 1375, 1374, 1376, - 1376, 1377, 1370, 1374, 1378, 1371, 1379, 1372, 1373, 1380, - 1377, 1381, 1384, 1382, 1383, 1385, 1386, 1375, 1387, 1387, - 1385, 1386, 1380, 1388, 1388, 1391, 1379, 1382, 1392, 1393, - 1378, 1395, 1383, 1394, 1384, 1381, 1396, 1397, 1398, 1398, - 1395, 1400, 1400, 1401, 1403, 1391, 1392, 1402, 1404, 1405, - - 1407, 1393, 1401, 1394, 1402, 1397, 1396, 1406, 1409, 1403, - 1408, 1408, 1410, 1409, 1411, 1412, 1404, 1405, 1413, 1407, - 1415, 1418, 1419, 1406, 1422, 1419, 1420, 1420, 1421, 1411, - 1410, 1423, 1425, 1426, 1412, 1423, 1428, 1426, 1413, 1415, - 1431, 1418, 1422, 1421, 1427, 1427, 1438, 1425, 0, 1428, - 1430, 1430, 1432, 1432, 1433, 1433, 1437, 1437, 1439, 1431, - 1440, 1441, 1442, 1443, 1445, 1440, 1441, 1439, 1438, 1446, - 1447, 1443, 1448, 1451, 1446, 1447, 1449, 1449, 1451, 1445, - 1452, 1442, 1450, 1450, 1460, 1452, 1461, 1448, 1453, 1453, - 1454, 1454, 1457, 1460, 1458, 1459, 1462, 1457, 1458, 1464, - - 1459, 1461, 1463, 1466, 1462, 1467, 1466, 1463, 1468, 1469, - 1470, 1464, 1471, 1471, 1474, 1472, 1475, 0, 1469, 1470, - 1476, 1468, 1478, 1467, 1472, 1477, 1477, 1479, 1479, 1480, - 1481, 1478, 1483, 1474, 1484, 1481, 1475, 1480, 1485, 1476, - 1486, 1483, 1485, 1487, 1489, 1489, 1494, 1484, 1491, 1491, - 1495, 1495, 1496, 1500, 1486, 1496, 1497, 1497, 1487, 1498, - 1498, 1499, 1499, 1501, 1502, 1511, 1494, 1503, 1503, 1502, - 1504, 1500, 1507, 1513, 1504, 1508, 1512, 1501, 1507, 1514, - 1508, 1512, 1511, 1511, 1515, 1516, 1516, 1517, 1518, 1519, - 1524, 1513, 1520, 1520, 1521, 1521, 1518, 1522, 1515, 1514, - - 1523, 1525, 1526, 1527, 1528, 1523, 1517, 1532, 1519, 1530, - 1524, 1526, 1530, 1522, 1533, 1533, 1534, 1535, 1536, 1538, - 1534, 1537, 1537, 1527, 1528, 1532, 1535, 1525, 1539, 1541, - 1542, 1543, 1538, 1536, 1547, 1548, 1548, 1539, 1541, 1547, - 1549, 1551, 1542, 1552, 1553, 1554, 1551, 1556, 1555, 1549, - 1557, 1558, 1552, 1555, 1561, 1557, 1543, 1559, 1559, 1562, - 1563, 1563, 1565, 1564, 1553, 1556, 1554, 1564, 1566, 1567, - 1568, 1565, 1569, 1561, 1562, 1570, 1558, 1569, 1568, 1571, - 1571, 1572, 1573, 1573, 1566, 1574, 1576, 1576, 1567, 1577, - 1574, 1578, 1580, 1580, 1581, 1582, 1583, 1583, 1584, 1584, - - 1572, 1570, 1585, 1586, 1587, 1588, 1588, 1589, 1581, 1577, - 1590, 1591, 1592, 1593, 1578, 1586, 1591, 1582, 1593, 1589, - 1594, 1585, 1595, 1595, 1587, 1597, 1597, 1598, 1600, 1601, - 1590, 1592, 0, 1600, 1602, 1603, 1603, 1594, 1594, 1602, - 1604, 1604, 1606, 1601, 1605, 1605, 1598, 1606, 1608, 1608, - 1610, 1610, 1612, 1612, 1613, 1614, 1615, 1615, 1616, 1619, - 1620, 1620, 1624, 1616, 1614, 1621, 1623, 1619, 1613, 1625, - 1621, 1623, 1626, 1627, 1624, 1628, 1629, 1632, 1633, 1633, - 1635, 1629, 1634, 1634, 1635, 1639, 1639, 1625, 1626, 1641, - 1627, 1627, 1644, 1641, 1643, 1643, 1628, 1632, 1646, 1646, - - 1647, 1649, 1650, 1650, 1651, 1651, 1644, 1652, 1653, 1654, - 1657, 1655, 1656, 1658, 1658, 1647, 1655, 1656, 0, 1649, - 1661, 1661, 1667, 1653, 1663, 1663, 1665, 1665, 1671, 1657, - 1654, 1672, 1652, 1671, 1667, 1668, 1668, 1673, 1674, 1676, - 1675, 1682, 1673, 1681, 1684, 1672, 1683, 1681, 1685, 1686, - 1687, 1690, 1688, 1689, 1689, 1676, 1693, 1674, 1675, 1683, - 1690, 1682, 1694, 1684, 1691, 1686, 1685, 1688, 1692, 1691, - 1696, 1695, 1698, 1692, 1699, 1687, 1695, 1694, 1700, 1703, - 1701, 1693, 1702, 1700, 1696, 1701, 1704, 1698, 1705, 1706, - 1707, 1708, 1703, 1699, 1709, 1710, 1702, 1712, 1713, 1713, - - 1710, 1711, 1705, 1707, 1708, 1704, 1711, 1714, 1706, 1715, - 1716, 1717, 1714, 1709, 1715, 1716, 1712, 1718, 1719, 1719, - 1720, 1721, 1718, 1722, 1723, 1724, 1725, 1720, 1727, 1723, - 1717, 1728, 1729, 1727, 1730, 1731, 1731, 1733, 1732, 1725, - 1721, 0, 1722, 1732, 1724, 1734, 1734, 1730, 1735, 1735, - 1728, 1729, 1736, 1737, 1738, 1740, 1733, 1736, 1739, 1739, - 1737, 1741, 1740, 1742, 1743, 1744, 1746, 1747, 1741, 1743, - 1748, 1746, 1747, 1738, 1749, 1750, 1750, 1751, 1752, 1753, - 1753, 1755, 1742, 1764, 1744, 1754, 1754, 1765, 1755, 1748, - 1756, 1756, 1758, 1749, 1757, 1757, 1751, 1752, 1760, 1758, - - 1763, 0, 1764, 1760, 0, 1763, 1765, 1766, 1766, 1767, - 1767, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1772, 1772, - 1772, 1772, 1772, 1772, 1772, 1773, 1773, 1773, 1773, 1773, - 1773, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775, - 1775, 1775, 1775, 1775, 1775, 1775, 1777, 1777, 0, 1777, - 1777, 1777, 1777, 1778, 1778, 0, 0, 0, 1778, 1778, - 1779, 1779, 0, 0, 1779, 0, 1779, 1780, 0, 0, - 0, 0, 0, 1780, 1781, 1781, 0, 0, 0, 1781, - 1781, 1782, 0, 0, 0, 0, 0, 1782, 1783, 1783, - 0, 1783, 1783, 1783, 1783, 1784, 1784, 0, 1784, 1784, - - 1784, 1784, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, + 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, + 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, + 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, + 10, 10, 15, 25, 9, 29, 15, 25, 2637, 31, + 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, + + 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, + 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, + 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, + 34, 21, 23, 24, 12, 23, 24, 906, 24, 24, + 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, + 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, + 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, + 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, + 42, 69, 38, 63, 63, 38, 35, 84, 37, 40, + 72, 37, 38, 40, 72, 69, 38, 38, 39, 39, + + 102, 39, 78, 40, 41, 41, 78, 40, 40, 41, + 39, 149, 58, 41, 58, 58, 39, 58, 66, 102, + 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, + 66, 71, 85, 74, 80, 74, 74, 71, 74, 77, + 82, 85, 77, 82, 74, 74, 80, 83, 86, 87, + 83, 88, 89, 91, 92, 87, 93, 95, 235, 91, + 98, 87, 86, 83, 96, 98, 94, 97, 92, 88, + 88, 97, 91, 99, 89, 95, 93, 94, 94, 101, + 100, 235, 96, 100, 103, 101, 100, 99, 104, 103, + 107, 104, 106, 105, 107, 104, 108, 109, 110, 100, + + 100, 111, 112, 108, 101, 110, 106, 113, 115, 103, + 109, 104, 105, 117, 111, 114, 119, 105, 116, 114, + 118, 118, 112, 116, 120, 113, 115, 116, 120, 121, + 122, 147, 123, 117, 124, 123, 119, 120, 128, 125, + 126, 127, 127, 120, 121, 125, 123, 124, 129, 122, + 123, 130, 126, 131, 134, 132, 128, 133, 135, 133, + 136, 137, 127, 135, 129, 156, 134, 139, 138, 146, + 130, 132, 136, 138, 131, 141, 141, 148, 148, 137, + 133, 139, 143, 156, 145, 143, 145, 145, 150, 145, + 150, 150, 151, 150, 151, 151, 153, 151, 154, 153, + + 155, 157, 158, 154, 151, 160, 155, 159, 161, 162, + 158, 164, 165, 160, 163, 155, 157, 158, 159, 163, + 167, 165, 166, 144, 162, 167, 173, 161, 166, 166, + 169, 164, 168, 168, 171, 170, 169, 170, 171, 174, + 170, 172, 172, 171, 174, 173, 175, 176, 171, 178, + 177, 175, 180, 178, 171, 171, 177, 170, 179, 176, + 181, 182, 183, 179, 184, 185, 180, 188, 189, 184, + 185, 186, 186, 182, 194, 181, 182, 186, 187, 177, + 183, 142, 190, 187, 189, 191, 191, 188, 190, 186, + 192, 186, 193, 195, 194, 196, 192, 197, 193, 195, + + 198, 200, 192, 199, 196, 201, 198, 200, 199, 202, + 203, 201, 205, 204, 206, 207, 202, 208, 197, 204, + 206, 209, 210, 203, 211, 208, 212, 210, 213, 214, + 215, 218, 205, 211, 209, 215, 216, 207, 217, 219, + 220, 212, 217, 222, 213, 219, 221, 140, 223, 214, + 223, 225, 221, 218, 216, 224, 227, 225, 220, 220, + 226, 228, 224, 222, 229, 237, 226, 228, 230, 230, + 231, 231, 232, 233, 238, 227, 229, 237, 232, 233, + 234, 236, 234, 239, 240, 241, 236, 242, 243, 244, + 241, 239, 245, 238, 243, 244, 232, 245, 246, 234, + + 247, 248, 250, 246, 240, 249, 247, 251, 253, 252, + 242, 254, 258, 255, 254, 255, 248, 252, 261, 249, + 250, 251, 256, 256, 257, 259, 259, 257, 260, 260, + 258, 262, 263, 253, 261, 263, 264, 266, 265, 267, + 264, 270, 268, 266, 273, 270, 262, 265, 268, 269, + 273, 269, 272, 267, 271, 271, 274, 272, 276, 275, + 277, 70, 270, 278, 278, 279, 280, 281, 279, 282, + 284, 281, 349, 277, 283, 283, 274, 275, 285, 276, + 286, 285, 288, 287, 280, 288, 289, 282, 284, 287, + 290, 291, 286, 292, 294, 349, 293, 294, 289, 290, + + 291, 293, 296, 295, 298, 298, 299, 290, 290, 299, + 290, 292, 300, 301, 296, 294, 295, 297, 302, 297, + 297, 303, 304, 304, 306, 306, 305, 302, 301, 300, + 303, 305, 300, 307, 308, 309, 310, 311, 312, 308, + 313, 314, 320, 322, 315, 316, 313, 309, 307, 315, + 345, 316, 322, 312, 317, 310, 320, 311, 318, 317, + 323, 314, 319, 318, 325, 319, 323, 319, 321, 318, + 324, 321, 327, 328, 330, 324, 345, 325, 332, 339, + 329, 332, 333, 335, 321, 325, 340, 321, 330, 321, + 326, 326, 327, 326, 328, 329, 333, 332, 335, 336, + + 339, 338, 346, 341, 343, 340, 326, 338, 336, 326, + 342, 326, 350, 326, 334, 337, 334, 334, 341, 342, + 337, 337, 346, 343, 347, 344, 334, 351, 334, 334, + 334, 344, 350, 334, 348, 352, 353, 354, 347, 355, + 348, 353, 356, 357, 348, 355, 358, 351, 359, 360, + 352, 361, 354, 362, 359, 357, 363, 363, 362, 363, + 358, 364, 356, 365, 366, 64, 369, 361, 367, 368, + 369, 368, 370, 372, 360, 374, 370, 371, 371, 365, + 366, 364, 367, 373, 375, 376, 377, 378, 372, 382, + 416, 370, 378, 374, 376, 377, 379, 380, 375, 373, + + 379, 386, 381, 383, 416, 376, 380, 376, 381, 383, + 382, 384, 385, 387, 387, 384, 388, 385, 389, 390, + 392, 386, 394, 389, 391, 391, 392, 393, 395, 388, + 396, 393, 390, 395, 397, 398, 399, 400, 401, 396, + 402, 402, 401, 394, 404, 403, 397, 405, 405, 400, + 403, 407, 407, 408, 399, 398, 409, 410, 411, 412, + 415, 414, 417, 418, 409, 404, 410, 419, 417, 421, + 420, 412, 418, 419, 408, 420, 422, 424, 411, 414, + 415, 414, 423, 421, 422, 426, 425, 422, 423, 425, + 427, 426, 429, 428, 430, 431, 432, 424, 428, 431, + + 434, 432, 433, 435, 427, 434, 436, 440, 438, 426, + 439, 589, 441, 442, 429, 430, 441, 433, 442, 435, + 443, 445, 589, 440, 446, 436, 437, 437, 438, 439, + 450, 444, 437, 446, 437, 443, 444, 445, 447, 448, + 449, 452, 437, 449, 447, 437, 437, 451, 451, 447, + 450, 455, 437, 453, 453, 448, 454, 456, 457, 458, + 459, 460, 463, 455, 461, 459, 452, 462, 463, 465, + 460, 454, 456, 468, 467, 466, 469, 457, 465, 466, + 467, 458, 462, 461, 470, 468, 471, 472, 473, 474, + 477, 469, 475, 474, 476, 479, 476, 480, 477, 482, + + 471, 479, 472, 470, 481, 475, 473, 478, 478, 480, + 481, 482, 483, 484, 485, 483, 487, 486, 488, 485, + 486, 489, 497, 490, 491, 491, 489, 489, 484, 492, + 492, 493, 487, 499, 488, 487, 490, 493, 494, 494, + 495, 495, 496, 497, 498, 500, 502, 501, 496, 498, + 501, 503, 499, 500, 504, 505, 506, 507, 504, 508, + 506, 505, 509, 511, 508, 510, 512, 59, 511, 502, + 503, 510, 514, 513, 516, 507, 513, 515, 515, 517, + 512, 513, 509, 518, 517, 513, 519, 520, 518, 521, + 514, 527, 516, 523, 522, 521, 523, 524, 528, 525, + + 519, 524, 520, 522, 525, 526, 530, 527, 529, 532, + 526, 528, 533, 529, 531, 531, 535, 534, 532, 536, + 540, 537, 535, 524, 537, 536, 530, 538, 533, 534, + 538, 539, 541, 542, 550, 543, 539, 544, 540, 542, + 543, 545, 546, 544, 545, 547, 541, 546, 548, 549, + 547, 547, 551, 550, 550, 552, 553, 555, 551, 554, + 555, 548, 549, 556, 554, 553, 557, 558, 561, 556, + 563, 559, 558, 565, 552, 555, 559, 559, 557, 560, + 560, 562, 564, 562, 564, 566, 567, 568, 569, 563, + 570, 565, 571, 561, 570, 572, 573, 574, 576, 575, + + 578, 571, 579, 566, 567, 581, 568, 582, 569, 577, + 572, 575, 583, 576, 573, 577, 574, 584, 580, 578, + 585, 579, 580, 581, 587, 582, 586, 586, 587, 588, + 583, 591, 590, 592, 585, 594, 584, 590, 593, 595, + 597, 598, 594, 596, 595, 597, 598, 591, 588, 599, + 596, 593, 592, 600, 601, 602, 603, 605, 604, 608, + 600, 606, 605, 601, 606, 603, 609, 599, 607, 602, + 604, 610, 607, 608, 611, 609, 612, 613, 613, 618, + 614, 614, 615, 615, 616, 619, 610, 620, 611, 614, + 621, 619, 622, 616, 621, 623, 624, 612, 618, 626, + + 625, 627, 624, 628, 622, 631, 629, 620, 625, 647, + 634, 629, 637, 623, 647, 629, 638, 626, 629, 644, + 631, 637, 638, 628, 643, 629, 627, 634, 629, 639, + 640, 640, 642, 639, 641, 641, 645, 648, 643, 644, + 650, 649, 645, 642, 646, 646, 646, 651, 646, 655, + 651, 646, 652, 652, 653, 657, 646, 54, 648, 649, + 657, 653, 646, 646, 655, 650, 654, 654, 656, 656, + 658, 659, 660, 658, 660, 661, 659, 662, 663, 664, + 666, 665, 663, 667, 667, 671, 668, 661, 666, 669, + 670, 673, 673, 672, 687, 687, 662, 671, 672, 664, + + 665, 668, 676, 669, 674, 677, 678, 676, 670, 674, + 674, 677, 678, 679, 680, 681, 679, 682, 683, 684, + 680, 685, 686, 681, 684, 682, 688, 690, 685, 689, + 691, 693, 700, 690, 694, 688, 683, 689, 696, 695, + 693, 686, 697, 694, 695, 697, 698, 696, 699, 691, + 702, 698, 701, 701, 703, 704, 705, 700, 706, 709, + 709, 706, 699, 710, 704, 702, 708, 711, 708, 706, + 712, 715, 711, 703, 713, 714, 716, 717, 718, 719, + 705, 720, 718, 721, 710, 723, 717, 722, 724, 726, + 726, 712, 721, 715, 713, 714, 716, 719, 727, 722, + + 720, 725, 724, 728, 723, 729, 730, 725, 731, 732, + 733, 735, 728, 734, 736, 737, 733, 735, 727, 738, + 739, 737, 742, 738, 740, 729, 730, 734, 741, 732, + 731, 743, 743, 741, 736, 744, 740, 745, 746, 739, + 745, 744, 747, 742, 740, 748, 749, 750, 750, 751, + 754, 748, 752, 753, 753, 747, 746, 752, 755, 756, + 756, 757, 755, 759, 758, 754, 749, 751, 759, 760, + 762, 763, 765, 769, 766, 768, 768, 769, 770, 771, + 787, 787, 772, 757, 758, 763, 772, 773, 760, 783, + 797, 797, 765, 770, 762, 766, 767, 775, 774, 767, + + 53, 767, 773, 774, 771, 767, 777, 767, 776, 779, + 783, 775, 767, 776, 776, 778, 780, 767, 781, 778, + 777, 780, 782, 781, 779, 784, 785, 786, 790, 788, + 791, 780, 785, 786, 788, 789, 782, 794, 798, 784, + 793, 789, 794, 798, 795, 799, 800, 790, 791, 792, + 792, 796, 793, 799, 801, 792, 48, 792, 795, 802, + 800, 803, 803, 796, 807, 806, 804, 807, 792, 792, + 804, 806, 808, 801, 809, 792, 810, 812, 802, 811, + 813, 814, 810, 815, 811, 817, 816, 809, 818, 813, + 814, 808, 816, 819, 817, 820, 812, 821, 819, 815, + + 822, 823, 825, 824, 829, 827, 830, 818, 825, 831, + 823, 821, 824, 832, 833, 820, 43, 834, 829, 833, + 822, 827, 834, 836, 835, 830, 841, 831, 832, 835, + 837, 837, 836, 838, 839, 842, 845, 846, 847, 838, + 842, 842, 841, 844, 843, 843, 844, 839, 843, 848, + 845, 849, 850, 851, 852, 854, 847, 846, 850, 857, + 852, 853, 848, 855, 853, 856, 849, 858, 855, 859, + 856, 860, 858, 851, 859, 857, 854, 863, 862, 864, + 865, 866, 866, 860, 862, 864, 865, 867, 868, 869, + 870, 871, 869, 863, 872, 874, 867, 875, 873, 876, + + 877, 874, 879, 875, 876, 877, 868, 880, 870, 881, + 871, 873, 882, 882, 872, 881, 883, 884, 885, 886, + 879, 885, 886, 887, 888, 883, 889, 880, 892, 895, + 890, 891, 894, 894, 887, 884, 890, 891, 889, 893, + 896, 897, 888, 892, 893, 898, 899, 900, 895, 898, + 901, 902, 904, 897, 896, 908, 900, 905, 905, 907, + 909, 910, 912, 912, 899, 911, 910, 913, 919, 901, + 908, 904, 909, 907, 911, 914, 902, 915, 917, 916, + 917, 914, 919, 915, 916, 918, 920, 913, 921, 922, + 918, 923, 924, 921, 925, 926, 927, 927, 928, 924, + + 920, 929, 930, 931, 922, 14, 932, 937, 930, 925, + 923, 932, 928, 935, 926, 934, 934, 936, 935, 929, + 932, 937, 932, 931, 936, 932, 938, 939, 940, 938, + 941, 942, 944, 943, 948, 941, 947, 940, 943, 946, + 946, 947, 949, 951, 950, 939, 952, 949, 950, 953, + 942, 944, 951, 954, 948, 955, 956, 957, 958, 959, + 960, 952, 963, 956, 962, 954, 961, 964, 953, 957, + 955, 968, 961, 970, 965, 967, 969, 958, 960, 962, + 959, 967, 963, 965, 969, 968, 971, 964, 972, 973, + 974, 971, 975, 970, 973, 973, 980, 976, 977, 977, + + 972, 979, 981, 982, 982, 980, 975, 983, 981, 974, + 976, 978, 983, 984, 979, 1000, 978, 1000, 985, 978, + 978, 986, 984, 985, 978, 989, 986, 987, 987, 990, + 978, 991, 988, 992, 978, 988, 991, 988, 990, 993, + 994, 1004, 995, 1005, 996, 989, 994, 992, 995, 996, + 997, 998, 999, 999, 997, 1001, 1004, 993, 1003, 1006, + 998, 1005, 1003, 1008, 1010, 998, 1001, 998, 1006, 998, + 1007, 998, 1009, 1011, 1012, 1007, 1007, 1009, 1010, 1013, + 1014, 1015, 1011, 1017, 1016, 1008, 1019, 1018, 1014, 1016, + 1020, 1022, 1022, 1012, 1021, 1015, 1018, 1017, 1013, 1021, + + 1029, 1023, 1024, 1024, 1019, 1025, 1027, 1025, 1028, 1027, + 1030, 1030, 1031, 1028, 1034, 1020, 1023, 1032, 1032, 1029, + 1033, 1035, 1036, 1036, 1037, 1033, 1038, 1039, 1040, 13, + 1040, 1038, 1031, 1043, 1042, 1034, 1039, 1042, 1043, 1045, + 1044, 1046, 1035, 1047, 1037, 1044, 1046, 1045, 1047, 1048, + 1048, 1049, 1050, 1051, 1052, 1054, 1055, 1057, 1050, 1056, + 1051, 1054, 1055, 1057, 1056, 1058, 1059, 1052, 1060, 1049, + 1061, 1061, 1062, 1064, 1058, 1065, 1066, 1067, 1068, 1060, + 1070, 1071, 1066, 1067, 1068, 1059, 1070, 1072, 1073, 1074, + 1075, 1077, 1062, 1064, 1078, 1071, 1076, 1076, 1065, 1079, + + 1073, 1071, 1082, 1074, 1080, 1081, 1081, 1072, 1075, 1080, + 1083, 1077, 1085, 1089, 1087, 1083, 1086, 1079, 1088, 1078, + 1090, 1086, 1086, 1087, 1091, 1082, 1088, 1089, 1092, 1094, + 1093, 1085, 1093, 1092, 1095, 1090, 1092, 1096, 1097, 1091, + 1095, 1096, 1091, 1094, 1098, 1099, 1100, 1101, 1102, 1097, + 1103, 1105, 1101, 1108, 1106, 1107, 1107, 1108, 1109, 1110, + 1112, 1111, 1114, 1098, 1100, 1105, 1102, 1113, 1115, 1116, + 1103, 1099, 1106, 1111, 1120, 1117, 1109, 1114, 1110, 1112, + 1117, 1113, 1118, 1115, 1121, 1119, 1122, 1122, 1116, 1118, + 1119, 1123, 1120, 1121, 1124, 1125, 1126, 1127, 1128, 0, + + 1124, 1126, 1135, 1127, 1128, 1134, 1123, 1129, 1129, 1130, + 1130, 1132, 1132, 1133, 1134, 1136, 1125, 1133, 1137, 1138, + 1135, 1139, 1139, 1140, 1141, 1142, 1138, 1143, 1144, 1136, + 1142, 1145, 1141, 1137, 1146, 1147, 1145, 1145, 1148, 1146, + 1146, 1143, 1149, 1140, 1150, 1151, 1152, 1144, 1153, 1154, + 1155, 1158, 1156, 1157, 1153, 1147, 1163, 1148, 1156, 1157, + 1159, 1149, 1160, 1150, 1152, 1151, 1161, 0, 1162, 1155, + 1158, 1164, 1165, 1165, 1170, 1154, 1167, 1163, 1170, 1159, + 1166, 1160, 1162, 1166, 1171, 1161, 1164, 1169, 1167, 1168, + 1168, 1172, 1169, 1173, 1176, 1177, 1174, 1171, 1174, 1176, + + 1172, 1178, 1174, 1179, 1180, 1180, 1173, 1181, 1182, 1185, + 1177, 1187, 1181, 1182, 1183, 1174, 1184, 1186, 1183, 1179, + 1184, 1178, 1188, 1189, 1189, 1191, 1193, 1194, 1188, 1185, + 1196, 1187, 1194, 1195, 1195, 1186, 1196, 1198, 1198, 1200, + 1200, 1201, 1202, 1191, 1206, 1204, 1207, 1193, 1204, 1205, + 1205, 1208, 1209, 1209, 1210, 1211, 1208, 1201, 1202, 1206, + 1212, 1213, 1213, 1214, 1215, 1216, 1219, 1207, 1221, 1215, + 1211, 1218, 1210, 1217, 1217, 1218, 1222, 1214, 1220, 1220, + 1216, 1224, 1227, 1227, 1223, 1212, 1219, 1222, 1223, 1225, + 1221, 1228, 1229, 1230, 1225, 1232, 1231, 1233, 1233, 1234, + + 1224, 1235, 1236, 1238, 1234, 1237, 1229, 1239, 1238, 1228, + 1231, 1241, 1230, 1230, 1237, 1240, 1241, 1240, 1242, 1243, + 1232, 1235, 1236, 1244, 1242, 1248, 1246, 1239, 1249, 1244, + 1247, 1247, 1251, 1254, 1249, 1252, 1252, 1253, 1253, 1243, + 1246, 1255, 1256, 1257, 1248, 1260, 1257, 1254, 1258, 1258, + 1259, 1266, 1261, 0, 1262, 1261, 1251, 1256, 1261, 1255, + 1262, 1263, 1259, 1264, 1265, 1260, 1263, 1268, 1267, 1265, + 1261, 1267, 1264, 1268, 1269, 1269, 1266, 1270, 1270, 1271, + 1272, 1273, 1274, 1275, 1271, 1276, 1277, 1280, 1284, 1278, + 1279, 1276, 1277, 1272, 1278, 1281, 1279, 1282, 1282, 1273, + + 1281, 1274, 1283, 1275, 1285, 1286, 1284, 1283, 1287, 1288, + 1280, 1291, 1292, 1293, 1289, 1290, 1294, 1291, 1295, 1297, + 1297, 1298, 1287, 1288, 1285, 1286, 1289, 1301, 1290, 1299, + 1294, 1302, 1292, 1293, 1299, 1300, 1300, 1303, 1304, 1295, + 1305, 1298, 1301, 1306, 1307, 1302, 1309, 1313, 1308, 1305, + 1311, 1307, 1314, 1314, 1315, 1315, 1304, 1308, 1306, 1319, + 1308, 1303, 1309, 1316, 1318, 1311, 1316, 1317, 1317, 1320, + 1311, 1321, 1313, 1322, 1320, 1323, 1324, 1318, 1319, 1328, + 1325, 1331, 1322, 1329, 1326, 1324, 1330, 1321, 1324, 1325, + 1326, 1327, 1327, 1332, 1323, 1331, 1329, 1335, 1333, 1328, + + 1336, 1337, 1337, 1338, 1330, 1339, 1340, 1343, 1342, 1332, + 1333, 1340, 1341, 1341, 1339, 1344, 1345, 1342, 1336, 1338, + 1342, 1348, 1335, 1346, 1349, 1343, 1350, 1341, 1346, 1346, + 1349, 1351, 1351, 1352, 1345, 1348, 1344, 1353, 1357, 1352, + 1354, 1355, 1353, 1358, 1350, 1359, 1354, 1355, 1360, 1364, + 1361, 1359, 1365, 1361, 1366, 1372, 1367, 1358, 1357, 1361, + 1368, 1360, 1366, 1369, 1370, 1371, 1373, 1374, 1364, 1367, + 1370, 1365, 1375, 1376, 1368, 1372, 1377, 1369, 1371, 1376, + 1378, 1380, 1380, 1381, 1373, 1375, 1374, 1382, 1383, 1384, + 1385, 1382, 1377, 1383, 1384, 1385, 1386, 1387, 1378, 1389, + + 1390, 1390, 1391, 1381, 1392, 1386, 1393, 1394, 1394, 1395, + 1396, 1399, 1397, 1400, 1389, 1398, 1392, 1396, 1403, 1402, + 1387, 1391, 1401, 1395, 1397, 1393, 1404, 1398, 1401, 0, + 1399, 1402, 1404, 1400, 1405, 1405, 1403, 1406, 1407, 1407, + 1406, 1409, 1410, 1411, 1411, 1412, 1409, 1413, 1415, 1413, + 1414, 1410, 1416, 1414, 1417, 1418, 1419, 1412, 1420, 1421, + 1422, 1419, 1425, 1426, 1423, 1427, 1427, 1420, 1415, 1423, + 1424, 1421, 1417, 1418, 1416, 1422, 1429, 1428, 1426, 1424, + 1430, 1431, 1425, 1428, 1432, 1436, 1432, 1433, 1433, 1434, + 1434, 1438, 1424, 1435, 1435, 1437, 1437, 1429, 1439, 1430, + + 1441, 1431, 1440, 1440, 1441, 1436, 1443, 1442, 1445, 1443, + 1446, 1447, 1438, 1442, 1445, 1448, 1454, 1447, 1449, 1439, + 1452, 1449, 1450, 1450, 1451, 1451, 1452, 1455, 1446, 1453, + 1457, 1456, 1460, 1459, 1462, 1466, 1454, 1456, 1459, 1459, + 1448, 1453, 1453, 1453, 1463, 1462, 1460, 1455, 1453, 1461, + 1457, 1461, 1464, 1465, 1467, 1466, 1468, 1468, 1464, 1463, + 1469, 1471, 1465, 1470, 1470, 1472, 1473, 1473, 1474, 1474, + 1477, 1479, 1480, 1481, 1481, 1467, 1482, 1483, 1485, 1477, + 1479, 1471, 1487, 1484, 1483, 1488, 1469, 1472, 1486, 1486, + 1490, 1482, 1484, 1480, 1491, 1490, 1492, 1494, 1493, 1499, + + 1491, 1488, 1497, 1494, 1485, 1493, 1495, 1497, 1487, 1496, + 1496, 1498, 1495, 1500, 1501, 1502, 1492, 1503, 1502, 1499, + 1498, 1504, 1505, 1505, 1506, 1507, 1501, 1508, 1511, 1509, + 1506, 1512, 1500, 1509, 1515, 1503, 1513, 1516, 1517, 1519, + 1519, 1516, 1508, 1518, 1517, 1507, 1521, 1504, 1511, 1509, + 1512, 1513, 1518, 1515, 1520, 1522, 1522, 1521, 1520, 1523, + 1524, 1525, 1521, 1526, 1527, 1528, 1528, 1529, 1529, 1530, + 1527, 1531, 1537, 1530, 1524, 1532, 1532, 1533, 1533, 1534, + 1523, 1525, 1531, 1526, 1534, 1534, 1535, 1531, 1536, 1538, + 1539, 1541, 1535, 1542, 1536, 1543, 1539, 1542, 1537, 1544, + + 1545, 1538, 1547, 1541, 1546, 1548, 1545, 1543, 1547, 1550, + 1551, 1552, 1554, 1555, 1555, 1554, 1552, 1548, 1556, 1556, + 1558, 1550, 1557, 1557, 1544, 1559, 1546, 1560, 1562, 1551, + 1561, 1559, 1563, 1560, 1562, 1561, 1567, 1565, 1568, 1567, + 1558, 1563, 1565, 1570, 1571, 1574, 1572, 1573, 1573, 1578, + 1568, 1572, 1575, 1576, 1574, 1570, 1571, 1575, 1576, 1577, + 1577, 1579, 1580, 1581, 1582, 1585, 1583, 1584, 1582, 1578, + 1579, 1583, 1588, 1584, 1587, 1587, 1589, 1591, 1590, 1585, + 1580, 1592, 1581, 1595, 1595, 1589, 1587, 1590, 1597, 1591, + 1588, 1598, 1601, 1600, 1592, 1602, 1603, 1604, 1604, 1610, + + 1605, 1602, 1605, 1607, 1597, 1609, 1601, 1598, 1600, 1606, + 1606, 1607, 1609, 1603, 1611, 1611, 1612, 1613, 1614, 1610, + 1615, 1616, 1617, 1619, 1618, 1612, 1621, 1624, 1622, 1619, + 1614, 1625, 1615, 1616, 1623, 1623, 1628, 0, 1613, 1618, + 1622, 1626, 1619, 1632, 1626, 1624, 1621, 1627, 1617, 1630, + 1636, 1625, 1627, 1631, 1630, 1631, 1628, 1633, 1634, 1636, + 1637, 1632, 1633, 1640, 1638, 1634, 1638, 1641, 1641, 1642, + 1643, 1644, 1637, 1644, 1645, 1643, 1646, 1640, 1647, 1645, + 1648, 1646, 1649, 1652, 1650, 1651, 1654, 1655, 1649, 1650, + 1659, 1652, 1656, 1656, 1658, 1642, 1647, 0, 1651, 1661, + + 1648, 1655, 1657, 1657, 1661, 1654, 1660, 1663, 1665, 1658, + 1659, 1662, 1660, 1662, 1671, 1663, 1664, 1664, 1666, 1666, + 1665, 1667, 1667, 1663, 1668, 1669, 1670, 1673, 1670, 1672, + 1672, 1674, 1676, 1668, 1669, 1671, 1673, 1669, 1680, 1681, + 1677, 1678, 1682, 1674, 1676, 1677, 1678, 1683, 1684, 1686, + 1687, 1680, 1688, 1689, 1695, 1696, 1697, 1688, 1689, 1681, + 1682, 1686, 1687, 1692, 1684, 1683, 1694, 1698, 1702, 1692, + 1696, 1700, 1694, 1699, 1699, 0, 1698, 1695, 1701, 1701, + 1700, 1697, 1692, 1705, 1703, 1704, 1706, 1702, 1703, 1707, + 1704, 1706, 1706, 1708, 1709, 1707, 1705, 1709, 1710, 1708, + + 1711, 1714, 1714, 1715, 1715, 1716, 1710, 1717, 1717, 1718, + 1718, 1719, 1720, 1721, 1716, 1728, 1722, 1724, 1715, 1721, + 1711, 1722, 1724, 1719, 1723, 1723, 1725, 1727, 1731, 1715, + 1720, 1727, 1725, 1729, 1732, 1728, 1733, 1729, 1735, 1732, + 1734, 1737, 1736, 1735, 1738, 1738, 1739, 1740, 1742, 1741, + 1739, 1743, 1747, 1731, 1741, 1734, 1744, 1737, 1748, 1733, + 1736, 1744, 1740, 1745, 1745, 1749, 1750, 1751, 1752, 1753, + 1743, 1747, 1754, 1760, 1742, 0, 1756, 1748, 1757, 1757, + 1758, 1753, 1759, 1758, 1761, 0, 1751, 1760, 1749, 1752, + 1750, 1756, 1765, 1754, 1773, 1759, 1766, 1761, 1762, 1762, + + 1763, 1763, 1764, 1764, 1767, 1767, 1768, 1765, 1770, 1766, + 1769, 1769, 1772, 1770, 1773, 1768, 1774, 1772, 1768, 1775, + 1776, 1776, 1777, 1777, 1778, 1779, 1779, 1780, 1781, 1781, + 1784, 1775, 1782, 1782, 1783, 1783, 1774, 1785, 1788, 1788, + 1789, 1787, 1791, 1778, 1784, 1780, 1787, 1790, 1790, 1792, + 1793, 1794, 1794, 1793, 1796, 1792, 1785, 1795, 1795, 1789, + 1791, 1797, 1798, 1799, 1799, 1801, 1802, 1794, 1803, 1806, + 1804, 1805, 1805, 1796, 1804, 1807, 1797, 1808, 1810, 1810, + 1811, 1798, 1813, 1803, 1812, 1801, 1814, 1824, 1806, 1802, + 1807, 1812, 1808, 1815, 1815, 1816, 1813, 1817, 1819, 1817, + + 1811, 1820, 1821, 1822, 1816, 1823, 1820, 1821, 1824, 1825, + 1819, 1826, 1814, 1829, 1825, 1827, 1826, 1828, 1823, 1829, + 1827, 1830, 1831, 1832, 1833, 1834, 1830, 1837, 1822, 1835, + 1836, 1838, 1828, 1833, 1834, 1841, 1832, 1838, 1835, 1836, + 1839, 1837, 1843, 1845, 1839, 1844, 1844, 1831, 1847, 1845, + 1849, 1843, 1846, 1846, 1852, 1841, 1850, 1851, 1851, 1857, + 1856, 1846, 1853, 1855, 1860, 1858, 1849, 1860, 1847, 1852, + 1847, 1853, 1850, 1861, 1857, 1855, 1856, 1858, 1861, 1862, + 1863, 1864, 1864, 1866, 1866, 1867, 1868, 1869, 1867, 1870, + 1872, 1868, 1863, 1869, 1874, 1870, 1871, 1871, 1875, 1862, + + 1873, 1873, 1876, 1883, 1872, 1879, 1874, 1877, 1877, 1879, + 1880, 1882, 1875, 1880, 1881, 1881, 1882, 1886, 1884, 1887, + 1888, 1876, 1884, 1883, 1889, 1890, 1891, 1892, 1889, 1893, + 1894, 1891, 1906, 1892, 1888, 1893, 1896, 1886, 1897, 1887, + 1898, 1899, 1900, 1897, 1900, 1890, 1898, 1903, 1894, 1899, + 1904, 1904, 1896, 1905, 1907, 1907, 1905, 1911, 1906, 1909, + 1910, 1903, 1913, 1909, 1912, 1912, 1910, 1916, 1916, 1911, + 1918, 1913, 1922, 1923, 1924, 1924, 1928, 1922, 1923, 1926, + 1926, 1930, 1928, 1929, 1929, 1931, 1932, 1934, 1918, 1935, + 1938, 1932, 1936, 1936, 1939, 1940, 1941, 1930, 1944, 1938, + + 1939, 1935, 1943, 1943, 1945, 1949, 1934, 1931, 1947, 1947, + 1949, 1941, 1952, 1940, 1948, 1948, 1950, 1944, 1951, 1953, + 1951, 1950, 1945, 1954, 1955, 1955, 1952, 1959, 1954, 1956, + 1956, 1957, 1957, 1953, 1958, 1958, 1960, 1961, 1961, 1959, + 1962, 1962, 1964, 1963, 1965, 1965, 1966, 1966, 1967, 1967, + 1968, 1970, 1969, 1971, 1960, 1963, 1972, 1973, 1964, 1969, + 1975, 1972, 1968, 1970, 1974, 1974, 1976, 1977, 1978, 1975, + 1979, 1980, 1986, 1971, 1981, 1981, 1983, 1973, 1984, 1982, + 1987, 1978, 1988, 1989, 1990, 1980, 1989, 1977, 1982, 0, + 1986, 1983, 1976, 1984, 1979, 1991, 1992, 1999, 1990, 2001, + + 1991, 1992, 1987, 1993, 1993, 1988, 1994, 1994, 1995, 1995, + 1998, 1998, 2000, 2003, 2004, 1999, 2005, 2006, 2001, 2007, + 2008, 2009, 2013, 2000, 2010, 2010, 2012, 2012, 2007, 2014, + 2014, 2013, 2004, 2003, 2015, 2016, 2017, 2006, 2005, 2009, + 2008, 2018, 2019, 2017, 2020, 2021, 2022, 2023, 2023, 2024, + 2024, 2025, 2015, 2016, 2026, 2027, 2018, 2025, 2028, 2029, + 2019, 2021, 2020, 2030, 2029, 2022, 2031, 2033, 2032, 2033, + 2027, 2038, 2026, 2032, 2034, 2034, 2035, 2028, 2035, 2036, + 2036, 2041, 2040, 2030, 2042, 2045, 2031, 2047, 2047, 2046, + 2038, 2040, 2046, 2048, 2049, 2050, 2050, 2056, 2051, 2053, + + 2054, 2041, 2051, 2042, 2054, 2045, 2055, 2055, 2048, 2058, + 2056, 2059, 2049, 2062, 2053, 2060, 2060, 2063, 2063, 2064, + 2065, 2065, 2066, 2067, 2067, 2062, 2073, 2066, 2074, 2058, + 2075, 2059, 2072, 2072, 2077, 2076, 2082, 2081, 2064, 2084, + 2083, 2074, 2081, 2075, 2076, 2083, 2085, 2084, 2073, 2077, + 2082, 2086, 2088, 2089, 2091, 2090, 2092, 2092, 2089, 2086, + 2090, 2093, 2093, 2094, 2096, 2085, 2095, 2088, 2097, 2091, + 2094, 2095, 2098, 2101, 2099, 2100, 2100, 0, 2098, 2099, + 2102, 2107, 2096, 2103, 2103, 2102, 2097, 0, 2101, 2104, + 2104, 2109, 2108, 2110, 2107, 2108, 2109, 2109, 2110, 2111, + + 2112, 2113, 2114, 2115, 2111, 2113, 2112, 2114, 2116, 2117, + 2118, 2121, 2115, 2119, 2121, 2118, 2123, 2117, 2125, 2124, + 2126, 2123, 2127, 2116, 2124, 2119, 2128, 2129, 2129, 2130, + 2133, 2127, 2134, 2126, 2135, 2128, 2125, 2137, 2130, 2136, + 2136, 2138, 2139, 2140, 2140, 2141, 2143, 2145, 2147, 2133, + 2138, 2146, 2134, 2135, 2147, 2146, 2137, 2139, 2148, 2148, + 2149, 2143, 2152, 2153, 2141, 2150, 2156, 2145, 2149, 2155, + 2150, 2152, 2157, 2155, 2159, 2159, 2153, 2160, 2160, 2167, + 2156, 2161, 2161, 2163, 2163, 2165, 2165, 2157, 2169, 2170, + 2170, 2171, 2171, 2172, 2172, 2173, 2174, 2178, 2173, 2167, + + 2175, 2175, 2176, 2176, 2177, 2177, 2179, 2179, 2169, 2180, + 2181, 2182, 2178, 2188, 2174, 2183, 2183, 2182, 2184, 2189, + 2187, 2190, 2184, 2191, 2181, 2187, 2187, 2180, 2192, 2191, + 2193, 2194, 2195, 2195, 2192, 2194, 2188, 2198, 2199, 2189, + 2200, 2190, 2198, 2200, 2202, 2203, 2199, 2204, 2203, 2205, + 2206, 2207, 2208, 2210, 2205, 2193, 2209, 2209, 2212, 2211, + 2213, 2213, 2214, 2214, 2204, 2204, 2208, 2211, 2206, 2202, + 2217, 2207, 2210, 2215, 2215, 2216, 2216, 2212, 2218, 2219, + 2220, 2221, 2222, 2218, 2223, 2227, 2217, 2225, 2225, 2226, + 2221, 2230, 2226, 2229, 2229, 2231, 2231, 2235, 2230, 2219, + + 2232, 2233, 2222, 2227, 2223, 2232, 2220, 2236, 2236, 2237, + 2233, 2238, 2239, 2237, 2242, 2235, 2240, 2241, 2247, 2247, + 2238, 2240, 2240, 2242, 2248, 2249, 2252, 2239, 2253, 2255, + 2241, 2257, 0, 2248, 2259, 2260, 2260, 2249, 2261, 2259, + 2263, 2255, 2264, 2264, 2270, 2263, 2264, 2261, 2253, 2266, + 2266, 2252, 2257, 2267, 2267, 2268, 2268, 2269, 2271, 2283, + 2272, 2274, 2278, 2275, 2270, 2272, 2269, 2274, 2275, 2276, + 2277, 2277, 2279, 2280, 2276, 2282, 2281, 2271, 2280, 2286, + 2278, 2282, 2284, 2284, 2283, 2287, 2288, 2288, 2289, 2290, + 2292, 2291, 2293, 2279, 2281, 2291, 2294, 2295, 2286, 2292, + + 2287, 2289, 2290, 2297, 2296, 2295, 2298, 2298, 2293, 2296, + 2304, 2299, 2301, 2301, 2311, 2294, 2302, 2302, 2306, 2306, + 2307, 2308, 2310, 2310, 2312, 2313, 2308, 2315, 2315, 2297, + 2299, 2304, 2316, 2318, 2311, 2324, 2307, 2319, 2319, 2320, + 2320, 2321, 2321, 2322, 2313, 2323, 2316, 2312, 2325, 2326, + 2327, 2327, 2322, 2328, 2324, 2318, 2328, 2329, 2329, 2333, + 2325, 2321, 2334, 2339, 2335, 2323, 2336, 2336, 2338, 2326, + 2335, 2333, 2337, 2341, 2338, 2337, 2343, 2344, 2341, 2342, + 2345, 2339, 2334, 2344, 2342, 2346, 2346, 2348, 2348, 2349, + 2351, 2351, 2352, 2352, 2353, 2343, 2354, 2345, 2345, 2353, + + 2355, 2356, 2356, 2357, 2357, 2355, 2358, 2358, 2349, 2359, + 2354, 2361, 2361, 2364, 2359, 2366, 2367, 2367, 2369, 2369, + 2370, 2371, 2372, 2373, 2373, 2374, 2378, 2378, 2379, 2380, + 2374, 2372, 2364, 2385, 2370, 2380, 2381, 2366, 2382, 2382, + 2383, 2371, 2379, 2386, 2381, 2383, 2387, 2388, 2389, 2391, + 2392, 2387, 2393, 2385, 2389, 2394, 2395, 2391, 0, 2388, + 2396, 2397, 2398, 2386, 2402, 2399, 2405, 2405, 2465, 2392, + 2399, 2465, 2393, 2407, 2395, 2394, 2396, 2407, 2397, 2397, + 2406, 2406, 2418, 2398, 2402, 2411, 2411, 2413, 2413, 2414, + 2414, 2415, 2414, 2417, 2417, 2415, 2419, 2421, 2421, 2423, + + 2418, 2424, 2425, 2427, 2428, 2424, 2423, 2429, 2429, 2432, + 2419, 2430, 2430, 2428, 2431, 2431, 2434, 2425, 2433, 2437, + 2438, 2427, 2439, 2433, 2432, 2434, 2435, 2436, 2434, 2440, + 2442, 2435, 2435, 2436, 2440, 2438, 2441, 2443, 2443, 2446, + 2446, 2441, 2457, 2439, 2437, 2449, 2449, 2450, 2450, 2442, + 2451, 2451, 2453, 2454, 2454, 2456, 2456, 2457, 2458, 2459, + 2459, 2453, 2460, 2461, 2461, 2464, 2466, 2467, 2467, 2468, + 2458, 2470, 2471, 2475, 2470, 2472, 2473, 2460, 2471, 2474, + 2476, 2473, 2482, 2464, 2485, 2482, 2486, 2468, 2487, 2472, + 2486, 2475, 2466, 2490, 2491, 2488, 2476, 2492, 2474, 2493, + + 2494, 2493, 2492, 2495, 2495, 2491, 2496, 2485, 2487, 2488, + 2497, 2499, 2498, 2500, 2502, 2494, 2490, 2501, 2593, 2496, + 2593, 2503, 2504, 2504, 2505, 2506, 2506, 2499, 2510, 2497, + 2498, 2511, 2501, 2505, 2502, 2503, 2507, 2507, 2500, 2508, + 2508, 2509, 2509, 2512, 2513, 2514, 2512, 2510, 2515, 2513, + 2514, 2511, 2516, 2517, 2518, 2519, 2519, 2520, 2529, 2517, + 2522, 2524, 2527, 2527, 2528, 2528, 2529, 2516, 2518, 2530, + 2533, 2531, 2532, 2515, 2534, 2522, 2520, 2531, 2532, 2524, + 2535, 2537, 2538, 2541, 2533, 2539, 2542, 2534, 2530, 2539, + 2543, 2542, 2544, 2545, 2546, 2547, 2538, 2548, 2549, 2535, + + 2547, 2537, 2548, 2541, 2550, 2544, 2545, 2551, 2551, 2543, + 2552, 2553, 2558, 2546, 0, 2552, 2549, 2553, 2554, 2554, + 2555, 2556, 2557, 2550, 2559, 2555, 2556, 2557, 2560, 2564, + 2559, 2558, 2563, 2560, 2561, 2561, 2563, 2565, 2566, 2567, + 2568, 2569, 2570, 2576, 2565, 2577, 2568, 2574, 2564, 2571, + 2571, 2573, 2573, 2583, 2578, 2570, 2574, 2566, 2567, 2574, + 2569, 2575, 2576, 2581, 2577, 2580, 2575, 2578, 2579, 2579, + 2580, 2584, 2584, 2585, 2586, 2586, 2581, 2587, 2587, 2583, + 2588, 2589, 2590, 2591, 2591, 2588, 2592, 2595, 2589, 2594, + 2594, 2592, 2585, 2596, 2595, 2597, 2599, 2598, 2601, 2601, + + 2596, 2590, 2598, 2602, 2604, 2605, 2606, 2607, 2611, 2604, + 2605, 2608, 2608, 2612, 2597, 2599, 2610, 2610, 2613, 2613, + 2614, 2614, 2602, 2615, 2619, 2606, 2607, 2611, 2617, 2617, + 2615, 2619, 2612, 2618, 2618, 2621, 2624, 2625, 2626, 0, + 2621, 2624, 2627, 2627, 2628, 2628, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2625, 2626, 2632, 2632, + 2632, 2632, 2632, 2632, 2632, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2635, + 2635, 2635, 2635, 2635, 2635, 2635, 2636, 2636, 2636, 2636, + 2636, 2636, 2636, 2638, 2638, 0, 2638, 2638, 2638, 2638, + + 2639, 2639, 0, 0, 0, 2639, 2639, 2640, 2640, 0, + 0, 2640, 0, 2640, 2641, 0, 0, 0, 0, 0, + 2641, 2642, 2642, 0, 0, 0, 2642, 2642, 2643, 0, + 0, 0, 0, 0, 2643, 2644, 2644, 0, 2644, 2644, + 2644, 2644, 2645, 2645, 0, 2645, 2645, 2645, 2645, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631 } ; static yy_state_type yy_last_accepting_state; @@ -1824,8 +2470,13 @@ char *yytext; * See LICENSE for the license. * */ + +/* because flex keeps having sign-unsigned compare problems that are unfixed*/ +#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) +#pragma GCC diagnostic ignored "-Wsign-compare" +#endif + #include -#include #include #ifdef HAVE_GLOB_H # include @@ -1880,7 +2531,7 @@ static void config_start_include(const char* filename) ub_c_error_msg("too many include files"); return; } - if(strlen(filename) == 0) { + if(*filename == '\0') { ub_c_error_msg("empty include file name"); return; } @@ -1992,7 +2643,7 @@ static void config_end_include(void) #endif #define YY_NO_INPUT 1 -#line 181 "./util/configlexer.lex" +#line 186 "./util/configlexer.lex" #ifndef YY_NO_UNPUT #define YY_NO_UNPUT 1 #endif @@ -2000,7 +2651,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2002 "" +#line 2653 "" #define INITIAL 0 #define quotedstring 1 @@ -2038,19 +2689,19 @@ void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); -void yyset_in (FILE * in_str ); +void yyset_in (FILE * _in_str ); FILE *yyget_out (void ); -void yyset_out (FILE * out_str ); +void yyset_out (FILE * _out_str ); -yy_size_t yyget_leng (void ); + int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); -void yyset_lineno (int line_number ); +void yyset_lineno (int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2064,6 +2715,10 @@ extern int yywrap (void ); #endif #endif +#ifndef YY_NO_UNPUT + +#endif + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -2084,7 +2739,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -2092,7 +2752,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -2103,7 +2763,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2116,7 +2776,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -2171,7 +2831,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK break; +#define YY_BREAK /*LINTED*/break; #endif #define YY_RULE_SETUP \ @@ -2181,14 +2841,10 @@ extern int yylex (void); */ YY_DECL { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; -#line 201 "./util/configlexer.lex" - -#line 2189 "" - if ( !(yy_init) ) { (yy_init) = 1; @@ -2215,7 +2871,12 @@ YY_DECL yy_load_buffer_state( ); } - while ( 1 ) /* loops until end-of-file is reached */ + { +#line 206 "./util/configlexer.lex" + +#line 2876 "" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) @@ -2237,7 +2898,7 @@ YY_DECL yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2246,13 +2907,13 @@ YY_DECL 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 >= 1771 ) + if ( yy_current_state >= 2632 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3503 ); + while ( yy_base[yy_current_state] != 5150 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2278,824 +2939,1281 @@ YY_DECL case 1: YY_RULE_SETUP -#line 202 "./util/configlexer.lex" +#line 207 "./util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 204 "./util/configlexer.lex" +#line 209 "./util/configlexer.lex" { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 207 "./util/configlexer.lex" +#line 212 "./util/configlexer.lex" { YDVAR(0, VAR_SERVER) } YY_BREAK case 4: YY_RULE_SETUP -#line 208 "./util/configlexer.lex" +#line 213 "./util/configlexer.lex" { YDVAR(1, VAR_QNAME_MINIMISATION) } YY_BREAK case 5: YY_RULE_SETUP -#line 209 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_THREADS) } +#line 214 "./util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } YY_BREAK case 6: YY_RULE_SETUP -#line 210 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERBOSITY) } +#line 215 "./util/configlexer.lex" +{ YDVAR(1, VAR_NUM_THREADS) } YY_BREAK case 7: YY_RULE_SETUP -#line 211 "./util/configlexer.lex" -{ YDVAR(1, VAR_PORT) } +#line 216 "./util/configlexer.lex" +{ YDVAR(1, VAR_VERBOSITY) } YY_BREAK case 8: YY_RULE_SETUP -#line 212 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_RANGE) } +#line 217 "./util/configlexer.lex" +{ YDVAR(1, VAR_PORT) } YY_BREAK case 9: YY_RULE_SETUP -#line 213 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } +#line 218 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_RANGE) } YY_BREAK case 10: YY_RULE_SETUP -#line 214 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } +#line 219 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } YY_BREAK case 11: YY_RULE_SETUP -#line 215 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } +#line 220 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } YY_BREAK case 12: YY_RULE_SETUP -#line 216 "./util/configlexer.lex" -{ YDVAR(1, VAR_INCOMING_NUM_TCP) } +#line 221 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } YY_BREAK case 13: YY_RULE_SETUP -#line 217 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP4) } +#line 222 "./util/configlexer.lex" +{ YDVAR(1, VAR_INCOMING_NUM_TCP) } YY_BREAK case 14: YY_RULE_SETUP -#line 218 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP6) } +#line 223 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP4) } YY_BREAK case 15: YY_RULE_SETUP -#line 219 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_UDP) } +#line 224 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP6) } YY_BREAK case 16: YY_RULE_SETUP -#line 220 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_TCP) } +#line 225 "./util/configlexer.lex" +{ YDVAR(1, VAR_PREFER_IP6) } YY_BREAK case 17: YY_RULE_SETUP -#line 221 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_UPSTREAM) } +#line 226 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_UDP) } YY_BREAK case 18: YY_RULE_SETUP -#line 222 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } +#line 227 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_TCP) } YY_BREAK case 19: YY_RULE_SETUP -#line 223 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } +#line 228 "./util/configlexer.lex" +{ YDVAR(1, VAR_TCP_UPSTREAM) } YY_BREAK case 20: YY_RULE_SETUP -#line 224 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } +#line 229 "./util/configlexer.lex" +{ YDVAR(1, VAR_TCP_MSS) } YY_BREAK case 21: YY_RULE_SETUP -#line 225 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } +#line 230 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_TCP_MSS) } YY_BREAK case 22: YY_RULE_SETUP -#line 226 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +#line 231 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 23: YY_RULE_SETUP -#line 227 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +#line 232 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 24: YY_RULE_SETUP -#line 228 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +#line 233 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 25: YY_RULE_SETUP -#line 229 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +#line 234 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 26: YY_RULE_SETUP -#line 230 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +#line 235 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 27: YY_RULE_SETUP -#line 231 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +#line 236 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 28: YY_RULE_SETUP -#line 232 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +#line 237 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 29: YY_RULE_SETUP -#line 233 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +#line 238 "./util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 30: YY_RULE_SETUP -#line 234 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +#line 239 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 31: YY_RULE_SETUP -#line 235 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +#line 240 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 32: YY_RULE_SETUP -#line 236 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +#line 241 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_WIN_CERT) } YY_BREAK case 33: YY_RULE_SETUP -#line 237 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +#line 242 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 34: YY_RULE_SETUP -#line 238 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +#line 243 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 35: YY_RULE_SETUP -#line 239 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +#line 244 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 36: YY_RULE_SETUP -#line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +#line 245 "./util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 37: YY_RULE_SETUP -#line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +#line 246 "./util/configlexer.lex" +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 38: YY_RULE_SETUP -#line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +#line 247 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 39: YY_RULE_SETUP -#line 243 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +#line 248 "./util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 40: YY_RULE_SETUP -#line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +#line 249 "./util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 41: YY_RULE_SETUP -#line 245 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +#line 250 "./util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 42: YY_RULE_SETUP -#line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +#line 251 "./util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 43: YY_RULE_SETUP -#line 247 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +#line 252 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 44: YY_RULE_SETUP -#line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +#line 253 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 45: YY_RULE_SETUP -#line 249 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +#line 254 "./util/configlexer.lex" +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 46: YY_RULE_SETUP -#line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +#line 255 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 47: YY_RULE_SETUP -#line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +#line 256 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 48: YY_RULE_SETUP -#line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +#line 257 "./util/configlexer.lex" +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 49: YY_RULE_SETUP -#line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +#line 258 "./util/configlexer.lex" +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 50: YY_RULE_SETUP -#line 254 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +#line 259 "./util/configlexer.lex" +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 51: YY_RULE_SETUP -#line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +#line 260 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 52: YY_RULE_SETUP -#line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +#line 261 "./util/configlexer.lex" +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 53: YY_RULE_SETUP -#line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +#line 262 "./util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 54: YY_RULE_SETUP -#line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +#line 263 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 55: YY_RULE_SETUP -#line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +#line 264 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 56: YY_RULE_SETUP -#line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +#line 265 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 57: YY_RULE_SETUP -#line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +#line 266 "./util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 58: YY_RULE_SETUP -#line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +#line 267 "./util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 59: YY_RULE_SETUP -#line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +#line 268 "./util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 60: YY_RULE_SETUP -#line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +#line 269 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 61: YY_RULE_SETUP -#line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +#line 270 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 62: YY_RULE_SETUP -#line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +#line 271 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 63: YY_RULE_SETUP -#line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +#line 272 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 64: YY_RULE_SETUP -#line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +#line 273 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 65: YY_RULE_SETUP -#line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +#line 274 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 66: YY_RULE_SETUP -#line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +#line 275 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 67: YY_RULE_SETUP -#line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +#line 276 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 68: YY_RULE_SETUP -#line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +#line 277 "./util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 69: YY_RULE_SETUP -#line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +#line 278 "./util/configlexer.lex" +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 70: YY_RULE_SETUP -#line 274 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +#line 279 "./util/configlexer.lex" +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 71: YY_RULE_SETUP -#line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +#line 280 "./util/configlexer.lex" +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 72: YY_RULE_SETUP -#line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +#line 281 "./util/configlexer.lex" +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 73: YY_RULE_SETUP -#line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +#line 282 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 74: YY_RULE_SETUP -#line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +#line 283 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 75: YY_RULE_SETUP -#line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +#line 284 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 76: YY_RULE_SETUP -#line 280 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +#line 285 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 77: YY_RULE_SETUP -#line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +#line 286 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 78: YY_RULE_SETUP -#line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +#line 287 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 79: YY_RULE_SETUP -#line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +#line 288 "./util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 80: YY_RULE_SETUP -#line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +#line 289 "./util/configlexer.lex" +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 81: YY_RULE_SETUP -#line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +#line 290 "./util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 82: YY_RULE_SETUP -#line 286 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +#line 291 "./util/configlexer.lex" +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 83: YY_RULE_SETUP -#line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +#line 292 "./util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 84: YY_RULE_SETUP -#line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +#line 293 "./util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 85: YY_RULE_SETUP -#line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +#line 294 "./util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 86: YY_RULE_SETUP -#line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +#line 295 "./util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 87: YY_RULE_SETUP -#line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +#line 296 "./util/configlexer.lex" +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 88: YY_RULE_SETUP -#line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +#line 297 "./util/configlexer.lex" +{ YDVAR(1, VAR_NAME) } YY_BREAK case 89: YY_RULE_SETUP -#line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +#line 298 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 90: YY_RULE_SETUP -#line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +#line 299 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 91: YY_RULE_SETUP -#line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +#line 300 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 92: YY_RULE_SETUP -#line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +#line 301 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 93: YY_RULE_SETUP -#line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +#line 302 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 94: YY_RULE_SETUP -#line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +#line 303 "./util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 95: YY_RULE_SETUP -#line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +#line 304 "./util/configlexer.lex" +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 96: YY_RULE_SETUP -#line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +#line 305 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 97: YY_RULE_SETUP -#line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +#line 306 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 98: YY_RULE_SETUP -#line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +#line 307 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 99: YY_RULE_SETUP -#line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +#line 308 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 100: YY_RULE_SETUP -#line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +#line 309 "./util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 101: YY_RULE_SETUP -#line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +#line 310 "./util/configlexer.lex" +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 102: YY_RULE_SETUP -#line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +#line 311 "./util/configlexer.lex" +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 103: YY_RULE_SETUP -#line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +#line 312 "./util/configlexer.lex" +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 104: YY_RULE_SETUP -#line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +#line 313 "./util/configlexer.lex" +{ YDVAR(1, VAR_URL) } YY_BREAK case 105: YY_RULE_SETUP -#line 309 "./util/configlexer.lex" +#line 314 "./util/configlexer.lex" +{ YDVAR(1, VAR_ALLOW_NOTIFY) } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 315 "./util/configlexer.lex" +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 316 "./util/configlexer.lex" +{ YDVAR(1, VAR_FOR_UPSTREAM) } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 317 "./util/configlexer.lex" +{ YDVAR(1, VAR_FALLBACK_ENABLED) } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 318 "./util/configlexer.lex" +{ YDVAR(0, VAR_VIEW) } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 319 "./util/configlexer.lex" +{ YDVAR(1, VAR_VIEW_FIRST) } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 320 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 321 "./util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 322 "./util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL) } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 323 "./util/configlexer.lex" +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 324 "./util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 325 "./util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 326 "./util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 327 "./util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 328 "./util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 329 "./util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_IDENTITY) } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 330 "./util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_VERSION) } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 331 "./util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 332 "./util/configlexer.lex" +{ YDVAR(1, VAR_IDENTITY) } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 333 "./util/configlexer.lex" +{ YDVAR(1, VAR_VERSION) } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 334 "./util/configlexer.lex" +{ YDVAR(1, VAR_MODULE_CONF) } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 335 "./util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR) } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 336 "./util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 337 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 338 "./util/configlexer.lex" +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 339 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 340 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR) } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 341 "./util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 342 "./util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } + YY_BREAK +case 134: +YY_RULE_SETUP +#line 343 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 344 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 345 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 346 "./util/configlexer.lex" +{ YDVAR(1, VAR_BOGUS_TTL) } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 347 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } + YY_BREAK +case 139: +YY_RULE_SETUP +#line 348 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } + YY_BREAK +case 140: +YY_RULE_SETUP +#line 349 "./util/configlexer.lex" +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } + YY_BREAK +case 141: +YY_RULE_SETUP +#line 350 "./util/configlexer.lex" +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } + YY_BREAK +case 142: +YY_RULE_SETUP +#line 351 "./util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED) } + YY_BREAK +case 143: +YY_RULE_SETUP +#line 352 "./util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_DSA) } + YY_BREAK +case 144: +YY_RULE_SETUP +#line 353 "./util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_SHA1) } + YY_BREAK +case 145: +YY_RULE_SETUP +#line 354 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } + YY_BREAK +case 146: +YY_RULE_SETUP +#line 355 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } + YY_BREAK +case 147: +YY_RULE_SETUP +#line 356 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } + YY_BREAK +case 148: +YY_RULE_SETUP +#line 357 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } + YY_BREAK +case 149: +YY_RULE_SETUP +#line 358 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK -case 106: +case 150: YY_RULE_SETUP -#line 311 "./util/configlexer.lex" +#line 360 "./util/configlexer.lex" { YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK -case 107: +case 151: YY_RULE_SETUP -#line 312 "./util/configlexer.lex" +#line 361 "./util/configlexer.lex" { YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK -case 108: +case 152: YY_RULE_SETUP -#line 313 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK -case 109: +case 153: YY_RULE_SETUP -#line 314 "./util/configlexer.lex" +#line 363 "./util/configlexer.lex" { YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK -case 110: +case 154: YY_RULE_SETUP -#line 315 "./util/configlexer.lex" +#line 364 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK -case 111: +case 155: YY_RULE_SETUP -#line 316 "./util/configlexer.lex" +#line 365 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOG_IDENTITY) } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 366 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK -case 112: +case 157: YY_RULE_SETUP -#line 317 "./util/configlexer.lex" +#line 367 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK -case 113: +case 158: YY_RULE_SETUP -#line 318 "./util/configlexer.lex" +#line 368 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOG_REPLIES) } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 369 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK -case 114: +case 160: YY_RULE_SETUP -#line 319 "./util/configlexer.lex" +#line 370 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK -case 115: +case 161: YY_RULE_SETUP -#line 320 "./util/configlexer.lex" +#line 371 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK -case 116: +case 162: YY_RULE_SETUP -#line 321 "./util/configlexer.lex" +#line 372 "./util/configlexer.lex" { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK -case 117: +case 163: YY_RULE_SETUP -#line 322 "./util/configlexer.lex" +#line 373 "./util/configlexer.lex" +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } + YY_BREAK +case 164: +YY_RULE_SETUP +#line 374 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK -case 118: +case 165: YY_RULE_SETUP -#line 323 "./util/configlexer.lex" +#line 375 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK -case 119: +case 166: YY_RULE_SETUP -#line 324 "./util/configlexer.lex" +#line 376 "./util/configlexer.lex" { YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK -case 120: +case 167: YY_RULE_SETUP -#line 325 "./util/configlexer.lex" +#line 377 "./util/configlexer.lex" +{ YDVAR(1, VAR_SHM_ENABLE) } + YY_BREAK +case 168: +YY_RULE_SETUP +#line 378 "./util/configlexer.lex" +{ YDVAR(1, VAR_SHM_KEY) } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 379 "./util/configlexer.lex" { YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK -case 121: +case 170: YY_RULE_SETUP -#line 326 "./util/configlexer.lex" +#line 380 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK -case 122: +case 171: YY_RULE_SETUP -#line 327 "./util/configlexer.lex" +#line 381 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK -case 123: +case 172: YY_RULE_SETUP -#line 328 "./util/configlexer.lex" +#line 382 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK -case 124: +case 173: YY_RULE_SETUP -#line 329 "./util/configlexer.lex" +#line 383 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK -case 125: +case 174: YY_RULE_SETUP -#line 330 "./util/configlexer.lex" +#line 384 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK -case 126: +case 175: YY_RULE_SETUP -#line 331 "./util/configlexer.lex" +#line 385 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK -case 127: +case 176: YY_RULE_SETUP -#line 332 "./util/configlexer.lex" +#line 386 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK -case 128: +case 177: YY_RULE_SETUP -#line 333 "./util/configlexer.lex" +#line 387 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK -case 129: +case 178: YY_RULE_SETUP -#line 334 "./util/configlexer.lex" +#line 388 "./util/configlexer.lex" { YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK -case 130: +case 179: YY_RULE_SETUP -#line 335 "./util/configlexer.lex" +#line 389 "./util/configlexer.lex" { YDVAR(0, VAR_PYTHON) } YY_BREAK -case 131: +case 180: YY_RULE_SETUP -#line 336 "./util/configlexer.lex" +#line 390 "./util/configlexer.lex" { YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK -case 132: +case 181: YY_RULE_SETUP -#line 337 "./util/configlexer.lex" +#line 391 "./util/configlexer.lex" { YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK -case 133: +case 182: YY_RULE_SETUP -#line 338 "./util/configlexer.lex" +#line 392 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK -case 134: +case 183: YY_RULE_SETUP -#line 339 "./util/configlexer.lex" +#line 393 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK -case 135: +case 184: YY_RULE_SETUP -#line 340 "./util/configlexer.lex" +#line 394 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK -case 136: +case 185: YY_RULE_SETUP -#line 341 "./util/configlexer.lex" +#line 395 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK -case 137: +case 186: YY_RULE_SETUP -#line 342 "./util/configlexer.lex" +#line 396 "./util/configlexer.lex" +{ YDVAR(1, VAR_DEFINE_TAG) } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 397 "./util/configlexer.lex" +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 398 "./util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } + YY_BREAK +case 189: +YY_RULE_SETUP +#line 399 "./util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } + YY_BREAK +case 190: +YY_RULE_SETUP +#line 400 "./util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 401 "./util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } + YY_BREAK +case 192: +YY_RULE_SETUP +#line 402 "./util/configlexer.lex" +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } + YY_BREAK +case 193: +YY_RULE_SETUP +#line 403 "./util/configlexer.lex" { YDVAR(0, VAR_DNSTAP) } YY_BREAK -case 138: +case 194: YY_RULE_SETUP -#line 343 "./util/configlexer.lex" +#line 404 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK -case 139: +case 195: YY_RULE_SETUP -#line 344 "./util/configlexer.lex" +#line 405 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK -case 140: +case 196: YY_RULE_SETUP -#line 345 "./util/configlexer.lex" +#line 406 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK -case 141: +case 197: YY_RULE_SETUP -#line 346 "./util/configlexer.lex" +#line 407 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK -case 142: +case 198: YY_RULE_SETUP -#line 347 "./util/configlexer.lex" +#line 408 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK -case 143: +case 199: YY_RULE_SETUP -#line 348 "./util/configlexer.lex" +#line 409 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK -case 144: +case 200: YY_RULE_SETUP -#line 349 "./util/configlexer.lex" +#line 410 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK -case 145: +case 201: YY_RULE_SETUP -#line 351 "./util/configlexer.lex" +#line 412 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK -case 146: +case 202: YY_RULE_SETUP -#line 353 "./util/configlexer.lex" +#line 414 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK -case 147: +case 203: YY_RULE_SETUP -#line 355 "./util/configlexer.lex" +#line 416 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK -case 148: +case 204: YY_RULE_SETUP -#line 357 "./util/configlexer.lex" +#line 418 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK -case 149: +case 205: YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK -case 150: +case 206: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 422 "./util/configlexer.lex" +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } + YY_BREAK +case 207: +YY_RULE_SETUP +#line 423 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT) } + YY_BREAK +case 208: +YY_RULE_SETUP +#line 424 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT) } YY_BREAK -case 151: +case 209: YY_RULE_SETUP -#line 362 "./util/configlexer.lex" +#line 425 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } + YY_BREAK +case 210: +YY_RULE_SETUP +#line 426 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK -case 152: +case 211: YY_RULE_SETUP -#line 363 "./util/configlexer.lex" +#line 427 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } + YY_BREAK +case 212: +YY_RULE_SETUP +#line 428 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK -case 153: +case 213: YY_RULE_SETUP -#line 364 "./util/configlexer.lex" +#line 429 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK -case 154: +case 214: YY_RULE_SETUP -#line 365 "./util/configlexer.lex" +#line 430 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK -case 155: +case 215: YY_RULE_SETUP -#line 366 "./util/configlexer.lex" +#line 431 "./util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } + YY_BREAK +case 216: +YY_RULE_SETUP +#line 432 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK -case 156: -/* rule 156 can match eol */ +case 217: YY_RULE_SETUP -#line 367 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOW_RTT) } + YY_BREAK +case 218: +YY_RULE_SETUP +#line 434 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOW_RTT_PERMIL) } + YY_BREAK +case 219: +YY_RULE_SETUP +#line 435 "./util/configlexer.lex" +{ YDVAR(1, VAR_LOW_RTT_PERMIL) } + YY_BREAK +case 220: +YY_RULE_SETUP +#line 436 "./util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } + YY_BREAK +case 221: +YY_RULE_SETUP +#line 437 "./util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP) } + YY_BREAK +case 222: +YY_RULE_SETUP +#line 438 "./util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } + YY_BREAK +case 223: +YY_RULE_SETUP +#line 439 "./util/configlexer.lex" +{ YDVAR(0, VAR_DNSCRYPT) } + YY_BREAK +case 224: +YY_RULE_SETUP +#line 440 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } + YY_BREAK +case 225: +YY_RULE_SETUP +#line 441 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PORT) } + YY_BREAK +case 226: +YY_RULE_SETUP +#line 442 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } + YY_BREAK +case 227: +YY_RULE_SETUP +#line 443 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } + YY_BREAK +case 228: +YY_RULE_SETUP +#line 444 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } + YY_BREAK +case 229: +YY_RULE_SETUP +#line 445 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } + YY_BREAK +case 230: +YY_RULE_SETUP +#line 446 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } + YY_BREAK +case 231: +YY_RULE_SETUP +#line 448 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YY_BREAK +case 232: +YY_RULE_SETUP +#line 450 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } + YY_BREAK +case 233: +YY_RULE_SETUP +#line 451 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 452 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } + YY_BREAK +case 235: +YY_RULE_SETUP +#line 453 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } + YY_BREAK +case 236: +YY_RULE_SETUP +#line 454 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_HOOK) } + YY_BREAK +case 237: +YY_RULE_SETUP +#line 455 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } + YY_BREAK +case 238: +YY_RULE_SETUP +#line 456 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } + YY_BREAK +case 239: +YY_RULE_SETUP +#line 457 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_STRICT) } + YY_BREAK +case 240: +YY_RULE_SETUP +#line 458 "./util/configlexer.lex" +{ YDVAR(0, VAR_CACHEDB) } + YY_BREAK +case 241: +YY_RULE_SETUP +#line 459 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_BACKEND) } + YY_BREAK +case 242: +YY_RULE_SETUP +#line 460 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } + YY_BREAK +case 243: +YY_RULE_SETUP +#line 461 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } + YY_BREAK +case 244: +YY_RULE_SETUP +#line 462 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } + YY_BREAK +case 245: +YY_RULE_SETUP +#line 463 "./util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } + YY_BREAK +case 246: +YY_RULE_SETUP +#line 464 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 247: +/* rule 247 can match eol */ +YY_RULE_SETUP +#line 465 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 157: +case 248: YY_RULE_SETUP -#line 370 "./util/configlexer.lex" +#line 468 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 371 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 158: +case 249: YY_RULE_SETUP -#line 376 "./util/configlexer.lex" +#line 474 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 159: -/* rule 159 can match eol */ +case 250: +/* rule 250 can match eol */ YY_RULE_SETUP -#line 377 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 160: +case 251: YY_RULE_SETUP -#line 379 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3108,34 +4226,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 161: +case 252: YY_RULE_SETUP -#line 391 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 392 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 162: +case 253: YY_RULE_SETUP -#line 397 "./util/configlexer.lex" +#line 495 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 163: -/* rule 163 can match eol */ +case 254: +/* rule 254 can match eol */ YY_RULE_SETUP -#line 398 "./util/configlexer.lex" +#line 496 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 164: +case 255: YY_RULE_SETUP -#line 400 "./util/configlexer.lex" +#line 498 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3148,38 +4266,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 165: +case 256: YY_RULE_SETUP -#line 412 "./util/configlexer.lex" +#line 510 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 414 "./util/configlexer.lex" +#line 512 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 166: +case 257: YY_RULE_SETUP -#line 418 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 167: -/* rule 167 can match eol */ +case 258: +/* rule 258 can match eol */ YY_RULE_SETUP -#line 419 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 168: +case 259: YY_RULE_SETUP -#line 420 "./util/configlexer.lex" +#line 518 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 169: +case 260: YY_RULE_SETUP -#line 421 "./util/configlexer.lex" +#line 519 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3187,27 +4305,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 426 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 170: +case 261: YY_RULE_SETUP -#line 430 "./util/configlexer.lex" +#line 528 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 171: -/* rule 171 can match eol */ +case 262: +/* rule 262 can match eol */ YY_RULE_SETUP -#line 431 "./util/configlexer.lex" +#line 529 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 172: +case 263: YY_RULE_SETUP -#line 433 "./util/configlexer.lex" +#line 531 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3217,7 +4335,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 439 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3229,33 +4347,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 173: +case 264: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 174: +case 265: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 552 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 175: +case 266: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 176: +case 267: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3257 "" +#line 4375 "" case YY_END_OF_BUFFER: { @@ -3384,6 +4502,7 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -3395,9 +4514,9 @@ ECHO; */ static int yy_get_next_buffer (void) { - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -3426,7 +4545,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -3439,7 +4558,7 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -3453,7 +4572,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3462,11 +4581,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -3508,10 +4627,10 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } @@ -3529,14 +4648,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - register yy_state_type yy_current_state; - register char *yy_cp; + yy_state_type yy_current_state; + char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3545,10 +4664,10 @@ 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 >= 1771 ) + if ( yy_current_state >= 2632 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -3561,10 +4680,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); - register YY_CHAR yy_c = 1; + YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3573,15 +4692,19 @@ 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 >= 1771 ) + if ( yy_current_state >= 2632 ) 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 == 1770); + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_is_jam = (yy_current_state == 2631); return yy_is_jam ? 0 : yy_current_state; } +#ifndef YY_NO_UNPUT + +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -3606,7 +4729,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -3630,7 +4753,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return EOF; + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -3736,7 +4859,7 @@ static void yy_load_buffer_state (void) /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -3878,7 +5001,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -3886,7 +5009,7 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -3903,7 +5026,7 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; + yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -3933,16 +5056,16 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return 0; + return NULL; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = 0; + b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -3965,7 +5088,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes(yystr,strlen(yystr) ); + return yy_scan_bytes(yystr,(int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -3975,7 +5098,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -3983,7 +5106,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; + n = (yy_size_t) _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -4009,9 +5132,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len #define YY_EXIT_FAILURE 2 #endif -static void yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -4022,7 +5145,7 @@ static void yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -4062,7 +5185,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -4077,29 +5200,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param line_number + * @param _line_number line number * */ -void yyset_lineno (int line_number ) +void yyset_lineno (int _line_number ) { - yylineno = line_number; + yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param in_str A readable stream. + * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * in_str ) +void yyset_in (FILE * _in_str ) { - yyin = in_str ; + yyin = _in_str ; } -void yyset_out (FILE * out_str ) +void yyset_out (FILE * _out_str ) { - yyout = out_str ; + yyout = _out_str ; } int yyget_debug (void) @@ -4107,9 +5230,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int bdebug ) +void yyset_debug (int _bdebug ) { - yy_flex_debug = bdebug ; + yy_flex_debug = _bdebug ; } static int yy_init_globals (void) @@ -4118,10 +5241,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = 0; + (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; + (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; @@ -4130,8 +5253,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -4169,7 +5292,8 @@ int yylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - register int i; + + int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -4178,7 +5302,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - register int n; + int n; for ( n = 0; s[n]; ++n ) ; @@ -4188,11 +5312,12 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) { + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -4200,17 +5325,17 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 462 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" diff --git a/external/unbound/util/configlexer.lex b/external/unbound/util/configlexer.lex index 6637943..6124e32 100644 --- a/external/unbound/util/configlexer.lex +++ b/external/unbound/util/configlexer.lex @@ -7,8 +7,13 @@ * See LICENSE for the license. * */ + +/* because flex keeps having sign-unsigned compare problems that are unfixed*/ +#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) +#pragma GCC diagnostic ignored "-Wsign-compare" +#endif + #include -#include #include #ifdef HAVE_GLOB_H # include @@ -63,7 +68,7 @@ static void config_start_include(const char* filename) ub_c_error_msg("too many include files"); return; } - if(strlen(filename) == 0) { + if(*filename == '\0') { ub_c_error_msg("empty include file name"); return; } @@ -206,6 +211,7 @@ SQANY [^\'\n\r\\]|\\. LEXOUT(("comment(%s) ", yytext)); /* ignore */ } server{COLON} { YDVAR(0, VAR_SERVER) } qname-minimisation{COLON} { YDVAR(1, VAR_QNAME_MINIMISATION) } +qname-minimisation-strict{COLON} { YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } num-threads{COLON} { YDVAR(1, VAR_NUM_THREADS) } verbosity{COLON} { YDVAR(1, VAR_VERBOSITY) } port{COLON} { YDVAR(1, VAR_PORT) } @@ -216,13 +222,28 @@ outgoing-num-tcp{COLON} { YDVAR(1, VAR_OUTGOING_NUM_TCP) } incoming-num-tcp{COLON} { YDVAR(1, VAR_INCOMING_NUM_TCP) } do-ip4{COLON} { YDVAR(1, VAR_DO_IP4) } do-ip6{COLON} { YDVAR(1, VAR_DO_IP6) } +prefer-ip6{COLON} { YDVAR(1, VAR_PREFER_IP6) } do-udp{COLON} { YDVAR(1, VAR_DO_UDP) } do-tcp{COLON} { YDVAR(1, VAR_DO_TCP) } tcp-upstream{COLON} { YDVAR(1, VAR_TCP_UPSTREAM) } +tcp-mss{COLON} { YDVAR(1, VAR_TCP_MSS) } +outgoing-tcp-mss{COLON} { YDVAR(1, VAR_OUTGOING_TCP_MSS) } ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } +tls-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } ssl-service-key{COLON} { YDVAR(1, VAR_SSL_SERVICE_KEY) } +tls-service-key{COLON} { YDVAR(1, VAR_SSL_SERVICE_KEY) } ssl-service-pem{COLON} { YDVAR(1, VAR_SSL_SERVICE_PEM) } +tls-service-pem{COLON} { YDVAR(1, VAR_SSL_SERVICE_PEM) } ssl-port{COLON} { YDVAR(1, VAR_SSL_PORT) } +tls-port{COLON} { YDVAR(1, VAR_SSL_PORT) } +ssl-cert-bundle{COLON} { YDVAR(1, VAR_TLS_CERT_BUNDLE) } +tls-cert-bundle{COLON} { YDVAR(1, VAR_TLS_CERT_BUNDLE) } +tls-win-cert{COLON} { YDVAR(1, VAR_TLS_WIN_CERT) } +additional-ssl-port{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +additional-tls-port{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +tls-additional-ports{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +tls-additional-port{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } ip-address{COLON} { YDVAR(1, VAR_INTERFACE) } @@ -232,6 +253,7 @@ so-rcvbuf{COLON} { YDVAR(1, VAR_SO_RCVBUF) } so-sndbuf{COLON} { YDVAR(1, VAR_SO_SNDBUF) } so-reuseport{COLON} { YDVAR(1, VAR_SO_REUSEPORT) } ip-transparent{COLON} { YDVAR(1, VAR_IP_TRANSPARENT) } +ip-freebind{COLON} { YDVAR(1, VAR_IP_FREEBIND) } chroot{COLON} { YDVAR(1, VAR_CHROOT) } username{COLON} { YDVAR(1, VAR_USERNAME) } directory{COLON} { YDVAR(1, VAR_DIRECTORY) } @@ -277,15 +299,36 @@ stub-addr{COLON} { YDVAR(1, VAR_STUB_ADDR) } stub-host{COLON} { YDVAR(1, VAR_STUB_HOST) } stub-prime{COLON} { YDVAR(1, VAR_STUB_PRIME) } stub-first{COLON} { YDVAR(1, VAR_STUB_FIRST) } +stub-ssl-upstream{COLON} { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +stub-tls-upstream{COLON} { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } forward-zone{COLON} { YDVAR(0, VAR_FORWARD_ZONE) } forward-addr{COLON} { YDVAR(1, VAR_FORWARD_ADDR) } forward-host{COLON} { YDVAR(1, VAR_FORWARD_HOST) } forward-first{COLON} { YDVAR(1, VAR_FORWARD_FIRST) } +forward-ssl-upstream{COLON} { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +forward-tls-upstream{COLON} { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +auth-zone{COLON} { YDVAR(0, VAR_AUTH_ZONE) } +zonefile{COLON} { YDVAR(1, VAR_ZONEFILE) } +master{COLON} { YDVAR(1, VAR_MASTER) } +url{COLON} { YDVAR(1, VAR_URL) } +allow-notify{COLON} { YDVAR(1, VAR_ALLOW_NOTIFY) } +for-downstream{COLON} { YDVAR(1, VAR_FOR_DOWNSTREAM) } +for-upstream{COLON} { YDVAR(1, VAR_FOR_UPSTREAM) } +fallback-enabled{COLON} { YDVAR(1, VAR_FALLBACK_ENABLED) } +view{COLON} { YDVAR(0, VAR_VIEW) } +view-first{COLON} { YDVAR(1, VAR_VIEW_FIRST) } do-not-query-address{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } do-not-query-localhost{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } access-control{COLON} { YDVAR(2, VAR_ACCESS_CONTROL) } +send-client-subnet{COLON} { YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +client-subnet-zone{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +client-subnet-always-forward{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +client-subnet-opcode{COLON} { YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +max-client-subnet-ipv4{COLON} { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +max-client-subnet-ipv6{COLON} { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } hide-identity{COLON} { YDVAR(1, VAR_HIDE_IDENTITY) } hide-version{COLON} { YDVAR(1, VAR_HIDE_VERSION) } +hide-trustanchor{COLON} { YDVAR(1, VAR_HIDE_TRUSTANCHOR) } identity{COLON} { YDVAR(1, VAR_IDENTITY) } version{COLON} { YDVAR(1, VAR_VERSION) } module-config{COLON} { YDVAR(1, VAR_MODULE_CONF) } @@ -295,13 +338,19 @@ trust-anchor-file{COLON} { YDVAR(1, VAR_TRUST_ANCHOR_FILE) } auto-trust-anchor-file{COLON} { YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } trusted-keys-file{COLON} { YDVAR(1, VAR_TRUSTED_KEYS_FILE) } trust-anchor{COLON} { YDVAR(1, VAR_TRUST_ANCHOR) } +trust-anchor-signaling{COLON} { YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +root-key-sentinel{COLON} { YDVAR(1, VAR_ROOT_KEY_SENTINEL) } val-override-date{COLON} { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } val-sig-skew-min{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } val-sig-skew-max{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } val-bogus-ttl{COLON} { YDVAR(1, VAR_BOGUS_TTL) } val-clean-additional{COLON} { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } val-permissive-mode{COLON} { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +aggressive-nsec{COLON} { YDVAR(1, VAR_AGGRESSIVE_NSEC) } ignore-cd-flag{COLON} { YDVAR(1, VAR_IGNORE_CD_FLAG) } +serve-expired{COLON} { YDVAR(1, VAR_SERVE_EXPIRED) } +fake-dsa{COLON} { YDVAR(1, VAR_FAKE_DSA) } +fake-sha1{COLON} { YDVAR(1, VAR_FAKE_SHA1) } val-log-level{COLON} { YDVAR(1, VAR_VAL_LOG_LEVEL) } key-cache-size{COLON} { YDVAR(1, VAR_KEY_CACHE_SIZE) } key-cache-slabs{COLON} { YDVAR(1, VAR_KEY_CACHE_SLABS) } @@ -313,15 +362,20 @@ del-holddown{COLON} { YDVAR(1, VAR_DEL_HOLDDOWN) } keep-missing{COLON} { YDVAR(1, VAR_KEEP_MISSING) } permit-small-holddown{COLON} { YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } use-syslog{COLON} { YDVAR(1, VAR_USE_SYSLOG) } +log-identity{COLON} { YDVAR(1, VAR_LOG_IDENTITY) } log-time-ascii{COLON} { YDVAR(1, VAR_LOG_TIME_ASCII) } log-queries{COLON} { YDVAR(1, VAR_LOG_QUERIES) } +log-replies{COLON} { YDVAR(1, VAR_LOG_REPLIES) } local-zone{COLON} { YDVAR(2, VAR_LOCAL_ZONE) } local-data{COLON} { YDVAR(1, VAR_LOCAL_DATA) } local-data-ptr{COLON} { YDVAR(1, VAR_LOCAL_DATA_PTR) } unblock-lan-zones{COLON} { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +insecure-lan-zones{COLON} { YDVAR(1, VAR_INSECURE_LAN_ZONES) } statistics-interval{COLON} { YDVAR(1, VAR_STATISTICS_INTERVAL) } statistics-cumulative{COLON} { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } extended-statistics{COLON} { YDVAR(1, VAR_EXTENDED_STATISTICS) } +shm-enable{COLON} { YDVAR(1, VAR_SHM_ENABLE) } +shm-key{COLON} { YDVAR(1, VAR_SHM_KEY) } remote-control{COLON} { YDVAR(0, VAR_REMOTE_CONTROL) } control-enable{COLON} { YDVAR(1, VAR_CONTROL_ENABLE) } control-interface{COLON} { YDVAR(1, VAR_CONTROL_INTERFACE) } @@ -339,6 +393,13 @@ rrset-roundrobin{COLON} { YDVAR(1, VAR_RRSET_ROUNDROBIN) } max-udp-size{COLON} { YDVAR(1, VAR_MAX_UDP_SIZE) } dns64-prefix{COLON} { YDVAR(1, VAR_DNS64_PREFIX) } dns64-synthall{COLON} { YDVAR(1, VAR_DNS64_SYNTHALL) } +define-tag{COLON} { YDVAR(1, VAR_DEFINE_TAG) } +local-zone-tag{COLON} { YDVAR(2, VAR_LOCAL_ZONE_TAG) } +access-control-tag{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +access-control-tag-action{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +access-control-tag-data{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +access-control-view{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +local-zone-override{COLON} { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } dnstap-socket-path{COLON} { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } @@ -358,12 +419,49 @@ dnstap-log-forwarder-query-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } dnstap-log-forwarder-response-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } +disable-dnssec-lame-check{COLON} { YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +ip-ratelimit{COLON} { YDVAR(1, VAR_IP_RATELIMIT) } ratelimit{COLON} { YDVAR(1, VAR_RATELIMIT) } +ip-ratelimit-slabs{COLON} { YDVAR(1, VAR_IP_RATELIMIT_SLABS) } ratelimit-slabs{COLON} { YDVAR(1, VAR_RATELIMIT_SLABS) } +ip-ratelimit-size{COLON} { YDVAR(1, VAR_IP_RATELIMIT_SIZE) } ratelimit-size{COLON} { YDVAR(1, VAR_RATELIMIT_SIZE) } ratelimit-for-domain{COLON} { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } ratelimit-below-domain{COLON} { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +ip-ratelimit-factor{COLON} { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) } +low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } +low-rtt-pct{COLON} { YDVAR(1, VAR_LOW_RTT_PERMIL) } +low-rtt-permil{COLON} { YDVAR(1, VAR_LOW_RTT_PERMIL) } +response-ip-tag{COLON} { YDVAR(2, VAR_RESPONSE_IP_TAG) } +response-ip{COLON} { YDVAR(2, VAR_RESPONSE_IP) } +response-ip-data{COLON} { YDVAR(2, VAR_RESPONSE_IP_DATA) } +dnscrypt{COLON} { YDVAR(0, VAR_DNSCRYPT) } +dnscrypt-enable{COLON} { YDVAR(1, VAR_DNSCRYPT_ENABLE) } +dnscrypt-port{COLON} { YDVAR(1, VAR_DNSCRYPT_PORT) } +dnscrypt-provider{COLON} { YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +dnscrypt-secret-key{COLON} { YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +dnscrypt-provider-cert{COLON} { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +dnscrypt-provider-cert-rotated{COLON} { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +dnscrypt-shared-secret-cache-size{COLON} { + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +dnscrypt-shared-secret-cache-slabs{COLON} { + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +dnscrypt-nonce-cache-size{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +dnscrypt-nonce-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } +ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } +ipsecmod-max-ttl{COLON} { YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +ipsecmod-whitelist{COLON} { YDVAR(1, VAR_IPSECMOD_WHITELIST) } +ipsecmod-strict{COLON} { YDVAR(1, VAR_IPSECMOD_STRICT) } +cachedb{COLON} { YDVAR(0, VAR_CACHEDB) } +backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) } +secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } +redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) } +redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) } +redis-timeout{COLON} { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/external/unbound/util/configparser.c b/external/unbound/util/configparser.c index 50346f6..7e4002c 100644 --- a/external/unbound/util/configparser.c +++ b/external/unbound/util/configparser.c @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,8 +62,7 @@ /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 38 "./util/configparser.y" +#line 38 "./util/configparser.y" /* yacc.c:339 */ #include "config.h" @@ -80,6 +79,8 @@ int ub_c_lex(void); void ub_c_error(const char *message); +static void validate_respip_action(const char* action); + /* these need to be global, otherwise they cannot be used inside yacc */ extern struct config_parser_state* cfg_parser; @@ -90,14 +91,13 @@ extern struct config_parser_state* cfg_parser; #endif -/* Line 371 of yacc.c */ -#line 95 "util/configparser.c" +#line 95 "util/configparser.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -113,7 +113,7 @@ extern struct config_parser_state* cfg_parser; by #include "configparser.h". */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -121,173 +121,252 @@ extern struct config_parser_state* cfg_parser; extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_DO_IP4 = 272, - VAR_DO_IP6 = 273, - VAR_DO_UDP = 274, - VAR_DO_TCP = 275, - VAR_CHROOT = 276, - VAR_USERNAME = 277, - VAR_DIRECTORY = 278, - VAR_LOGFILE = 279, - VAR_PIDFILE = 280, - VAR_MSG_CACHE_SIZE = 281, - VAR_MSG_CACHE_SLABS = 282, - VAR_NUM_QUERIES_PER_THREAD = 283, - VAR_RRSET_CACHE_SIZE = 284, - VAR_RRSET_CACHE_SLABS = 285, - VAR_OUTGOING_NUM_TCP = 286, - VAR_INFRA_HOST_TTL = 287, - VAR_INFRA_LAME_TTL = 288, - VAR_INFRA_CACHE_SLABS = 289, - VAR_INFRA_CACHE_NUMHOSTS = 290, - VAR_INFRA_CACHE_LAME_SIZE = 291, - VAR_NAME = 292, - VAR_STUB_ZONE = 293, - VAR_STUB_HOST = 294, - VAR_STUB_ADDR = 295, - VAR_TARGET_FETCH_POLICY = 296, - VAR_HARDEN_SHORT_BUFSIZE = 297, - VAR_HARDEN_LARGE_QUERIES = 298, - VAR_FORWARD_ZONE = 299, - VAR_FORWARD_HOST = 300, - VAR_FORWARD_ADDR = 301, - VAR_DO_NOT_QUERY_ADDRESS = 302, - VAR_HIDE_IDENTITY = 303, - VAR_HIDE_VERSION = 304, - VAR_IDENTITY = 305, - VAR_VERSION = 306, - VAR_HARDEN_GLUE = 307, - VAR_MODULE_CONF = 308, - VAR_TRUST_ANCHOR_FILE = 309, - VAR_TRUST_ANCHOR = 310, - VAR_VAL_OVERRIDE_DATE = 311, - VAR_BOGUS_TTL = 312, - VAR_VAL_CLEAN_ADDITIONAL = 313, - VAR_VAL_PERMISSIVE_MODE = 314, - VAR_INCOMING_NUM_TCP = 315, - VAR_MSG_BUFFER_SIZE = 316, - VAR_KEY_CACHE_SIZE = 317, - VAR_KEY_CACHE_SLABS = 318, - VAR_TRUSTED_KEYS_FILE = 319, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, - VAR_USE_SYSLOG = 321, - VAR_OUTGOING_INTERFACE = 322, - VAR_ROOT_HINTS = 323, - VAR_DO_NOT_QUERY_LOCALHOST = 324, - VAR_CACHE_MAX_TTL = 325, - VAR_HARDEN_DNSSEC_STRIPPED = 326, - VAR_ACCESS_CONTROL = 327, - VAR_LOCAL_ZONE = 328, - VAR_LOCAL_DATA = 329, - VAR_INTERFACE_AUTOMATIC = 330, - VAR_STATISTICS_INTERVAL = 331, - VAR_DO_DAEMONIZE = 332, - VAR_USE_CAPS_FOR_ID = 333, - VAR_STATISTICS_CUMULATIVE = 334, - VAR_OUTGOING_PORT_PERMIT = 335, - VAR_OUTGOING_PORT_AVOID = 336, - VAR_DLV_ANCHOR_FILE = 337, - VAR_DLV_ANCHOR = 338, - VAR_NEG_CACHE_SIZE = 339, - VAR_HARDEN_REFERRAL_PATH = 340, - VAR_PRIVATE_ADDRESS = 341, - VAR_PRIVATE_DOMAIN = 342, - VAR_REMOTE_CONTROL = 343, - VAR_CONTROL_ENABLE = 344, - VAR_CONTROL_INTERFACE = 345, - VAR_CONTROL_PORT = 346, - VAR_SERVER_KEY_FILE = 347, - VAR_SERVER_CERT_FILE = 348, - VAR_CONTROL_KEY_FILE = 349, - VAR_CONTROL_CERT_FILE = 350, - VAR_CONTROL_USE_CERT = 351, - VAR_EXTENDED_STATISTICS = 352, - VAR_LOCAL_DATA_PTR = 353, - VAR_JOSTLE_TIMEOUT = 354, - VAR_STUB_PRIME = 355, - VAR_UNWANTED_REPLY_THRESHOLD = 356, - VAR_LOG_TIME_ASCII = 357, - VAR_DOMAIN_INSECURE = 358, - VAR_PYTHON = 359, - VAR_PYTHON_SCRIPT = 360, - VAR_VAL_SIG_SKEW_MIN = 361, - VAR_VAL_SIG_SKEW_MAX = 362, - VAR_CACHE_MIN_TTL = 363, - VAR_VAL_LOG_LEVEL = 364, - VAR_AUTO_TRUST_ANCHOR_FILE = 365, - VAR_KEEP_MISSING = 366, - VAR_ADD_HOLDDOWN = 367, - VAR_DEL_HOLDDOWN = 368, - VAR_SO_RCVBUF = 369, - VAR_EDNS_BUFFER_SIZE = 370, - VAR_PREFETCH = 371, - VAR_PREFETCH_KEY = 372, - VAR_SO_SNDBUF = 373, - VAR_SO_REUSEPORT = 374, - VAR_HARDEN_BELOW_NXDOMAIN = 375, - VAR_IGNORE_CD_FLAG = 376, - VAR_LOG_QUERIES = 377, - VAR_TCP_UPSTREAM = 378, - VAR_SSL_UPSTREAM = 379, - VAR_SSL_SERVICE_KEY = 380, - VAR_SSL_SERVICE_PEM = 381, - VAR_SSL_PORT = 382, - VAR_FORWARD_FIRST = 383, - VAR_STUB_FIRST = 384, - VAR_MINIMAL_RESPONSES = 385, - VAR_RRSET_ROUNDROBIN = 386, - VAR_MAX_UDP_SIZE = 387, - VAR_DELAY_CLOSE = 388, - VAR_UNBLOCK_LAN_ZONES = 389, - VAR_INFRA_CACHE_MIN_RTT = 390, - VAR_DNS64_PREFIX = 391, - VAR_DNS64_SYNTHALL = 392, - VAR_DNSTAP = 393, - VAR_DNSTAP_ENABLE = 394, - VAR_DNSTAP_SOCKET_PATH = 395, - VAR_DNSTAP_SEND_IDENTITY = 396, - VAR_DNSTAP_SEND_VERSION = 397, - VAR_DNSTAP_IDENTITY = 398, - VAR_DNSTAP_VERSION = 399, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405, - VAR_HARDEN_ALGO_DOWNGRADE = 406, - VAR_IP_TRANSPARENT = 407, - VAR_RATELIMIT = 408, - VAR_RATELIMIT_SLABS = 409, - VAR_RATELIMIT_SIZE = 410, - VAR_RATELIMIT_FOR_DOMAIN = 411, - VAR_RATELIMIT_BELOW_DOMAIN = 412, - VAR_RATELIMIT_FACTOR = 413, - VAR_CAPS_WHITELIST = 414, - VAR_CACHE_MAX_NEGATIVE_TTL = 415, - VAR_PERMIT_SMALL_HOLDDOWN = 416, - VAR_QNAME_MINIMISATION = 417 - }; + enum yytokentype + { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_SERVER = 266, + VAR_VERBOSITY = 267, + VAR_NUM_THREADS = 268, + VAR_PORT = 269, + VAR_OUTGOING_RANGE = 270, + VAR_INTERFACE = 271, + VAR_DO_IP4 = 272, + VAR_DO_IP6 = 273, + VAR_PREFER_IP6 = 274, + VAR_DO_UDP = 275, + VAR_DO_TCP = 276, + VAR_TCP_MSS = 277, + VAR_OUTGOING_TCP_MSS = 278, + VAR_CHROOT = 279, + VAR_USERNAME = 280, + VAR_DIRECTORY = 281, + VAR_LOGFILE = 282, + VAR_PIDFILE = 283, + VAR_MSG_CACHE_SIZE = 284, + VAR_MSG_CACHE_SLABS = 285, + VAR_NUM_QUERIES_PER_THREAD = 286, + VAR_RRSET_CACHE_SIZE = 287, + VAR_RRSET_CACHE_SLABS = 288, + VAR_OUTGOING_NUM_TCP = 289, + VAR_INFRA_HOST_TTL = 290, + VAR_INFRA_LAME_TTL = 291, + VAR_INFRA_CACHE_SLABS = 292, + VAR_INFRA_CACHE_NUMHOSTS = 293, + VAR_INFRA_CACHE_LAME_SIZE = 294, + VAR_NAME = 295, + VAR_STUB_ZONE = 296, + VAR_STUB_HOST = 297, + VAR_STUB_ADDR = 298, + VAR_TARGET_FETCH_POLICY = 299, + VAR_HARDEN_SHORT_BUFSIZE = 300, + VAR_HARDEN_LARGE_QUERIES = 301, + VAR_FORWARD_ZONE = 302, + VAR_FORWARD_HOST = 303, + VAR_FORWARD_ADDR = 304, + VAR_DO_NOT_QUERY_ADDRESS = 305, + VAR_HIDE_IDENTITY = 306, + VAR_HIDE_VERSION = 307, + VAR_IDENTITY = 308, + VAR_VERSION = 309, + VAR_HARDEN_GLUE = 310, + VAR_MODULE_CONF = 311, + VAR_TRUST_ANCHOR_FILE = 312, + VAR_TRUST_ANCHOR = 313, + VAR_VAL_OVERRIDE_DATE = 314, + VAR_BOGUS_TTL = 315, + VAR_VAL_CLEAN_ADDITIONAL = 316, + VAR_VAL_PERMISSIVE_MODE = 317, + VAR_INCOMING_NUM_TCP = 318, + VAR_MSG_BUFFER_SIZE = 319, + VAR_KEY_CACHE_SIZE = 320, + VAR_KEY_CACHE_SLABS = 321, + VAR_TRUSTED_KEYS_FILE = 322, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 323, + VAR_USE_SYSLOG = 324, + VAR_OUTGOING_INTERFACE = 325, + VAR_ROOT_HINTS = 326, + VAR_DO_NOT_QUERY_LOCALHOST = 327, + VAR_CACHE_MAX_TTL = 328, + VAR_HARDEN_DNSSEC_STRIPPED = 329, + VAR_ACCESS_CONTROL = 330, + VAR_LOCAL_ZONE = 331, + VAR_LOCAL_DATA = 332, + VAR_INTERFACE_AUTOMATIC = 333, + VAR_STATISTICS_INTERVAL = 334, + VAR_DO_DAEMONIZE = 335, + VAR_USE_CAPS_FOR_ID = 336, + VAR_STATISTICS_CUMULATIVE = 337, + VAR_OUTGOING_PORT_PERMIT = 338, + VAR_OUTGOING_PORT_AVOID = 339, + VAR_DLV_ANCHOR_FILE = 340, + VAR_DLV_ANCHOR = 341, + VAR_NEG_CACHE_SIZE = 342, + VAR_HARDEN_REFERRAL_PATH = 343, + VAR_PRIVATE_ADDRESS = 344, + VAR_PRIVATE_DOMAIN = 345, + VAR_REMOTE_CONTROL = 346, + VAR_CONTROL_ENABLE = 347, + VAR_CONTROL_INTERFACE = 348, + VAR_CONTROL_PORT = 349, + VAR_SERVER_KEY_FILE = 350, + VAR_SERVER_CERT_FILE = 351, + VAR_CONTROL_KEY_FILE = 352, + VAR_CONTROL_CERT_FILE = 353, + VAR_CONTROL_USE_CERT = 354, + VAR_EXTENDED_STATISTICS = 355, + VAR_LOCAL_DATA_PTR = 356, + VAR_JOSTLE_TIMEOUT = 357, + VAR_STUB_PRIME = 358, + VAR_UNWANTED_REPLY_THRESHOLD = 359, + VAR_LOG_TIME_ASCII = 360, + VAR_DOMAIN_INSECURE = 361, + VAR_PYTHON = 362, + VAR_PYTHON_SCRIPT = 363, + VAR_VAL_SIG_SKEW_MIN = 364, + VAR_VAL_SIG_SKEW_MAX = 365, + VAR_CACHE_MIN_TTL = 366, + VAR_VAL_LOG_LEVEL = 367, + VAR_AUTO_TRUST_ANCHOR_FILE = 368, + VAR_KEEP_MISSING = 369, + VAR_ADD_HOLDDOWN = 370, + VAR_DEL_HOLDDOWN = 371, + VAR_SO_RCVBUF = 372, + VAR_EDNS_BUFFER_SIZE = 373, + VAR_PREFETCH = 374, + VAR_PREFETCH_KEY = 375, + VAR_SO_SNDBUF = 376, + VAR_SO_REUSEPORT = 377, + VAR_HARDEN_BELOW_NXDOMAIN = 378, + VAR_IGNORE_CD_FLAG = 379, + VAR_LOG_QUERIES = 380, + VAR_LOG_REPLIES = 381, + VAR_TCP_UPSTREAM = 382, + VAR_SSL_UPSTREAM = 383, + VAR_SSL_SERVICE_KEY = 384, + VAR_SSL_SERVICE_PEM = 385, + VAR_SSL_PORT = 386, + VAR_FORWARD_FIRST = 387, + VAR_STUB_SSL_UPSTREAM = 388, + VAR_FORWARD_SSL_UPSTREAM = 389, + VAR_TLS_CERT_BUNDLE = 390, + VAR_STUB_FIRST = 391, + VAR_MINIMAL_RESPONSES = 392, + VAR_RRSET_ROUNDROBIN = 393, + VAR_MAX_UDP_SIZE = 394, + VAR_DELAY_CLOSE = 395, + VAR_UNBLOCK_LAN_ZONES = 396, + VAR_INSECURE_LAN_ZONES = 397, + VAR_INFRA_CACHE_MIN_RTT = 398, + VAR_DNS64_PREFIX = 399, + VAR_DNS64_SYNTHALL = 400, + VAR_DNSTAP = 401, + VAR_DNSTAP_ENABLE = 402, + VAR_DNSTAP_SOCKET_PATH = 403, + VAR_DNSTAP_SEND_IDENTITY = 404, + VAR_DNSTAP_SEND_VERSION = 405, + VAR_DNSTAP_IDENTITY = 406, + VAR_DNSTAP_VERSION = 407, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 408, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 409, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 410, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 411, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 412, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 413, + VAR_RESPONSE_IP_TAG = 414, + VAR_RESPONSE_IP = 415, + VAR_RESPONSE_IP_DATA = 416, + VAR_HARDEN_ALGO_DOWNGRADE = 417, + VAR_IP_TRANSPARENT = 418, + VAR_DISABLE_DNSSEC_LAME_CHECK = 419, + VAR_IP_RATELIMIT = 420, + VAR_IP_RATELIMIT_SLABS = 421, + VAR_IP_RATELIMIT_SIZE = 422, + VAR_RATELIMIT = 423, + VAR_RATELIMIT_SLABS = 424, + VAR_RATELIMIT_SIZE = 425, + VAR_RATELIMIT_FOR_DOMAIN = 426, + VAR_RATELIMIT_BELOW_DOMAIN = 427, + VAR_IP_RATELIMIT_FACTOR = 428, + VAR_RATELIMIT_FACTOR = 429, + VAR_SEND_CLIENT_SUBNET = 430, + VAR_CLIENT_SUBNET_ZONE = 431, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 432, + VAR_CLIENT_SUBNET_OPCODE = 433, + VAR_MAX_CLIENT_SUBNET_IPV4 = 434, + VAR_MAX_CLIENT_SUBNET_IPV6 = 435, + VAR_CAPS_WHITELIST = 436, + VAR_CACHE_MAX_NEGATIVE_TTL = 437, + VAR_PERMIT_SMALL_HOLDDOWN = 438, + VAR_QNAME_MINIMISATION = 439, + VAR_QNAME_MINIMISATION_STRICT = 440, + VAR_IP_FREEBIND = 441, + VAR_DEFINE_TAG = 442, + VAR_LOCAL_ZONE_TAG = 443, + VAR_ACCESS_CONTROL_TAG = 444, + VAR_LOCAL_ZONE_OVERRIDE = 445, + VAR_ACCESS_CONTROL_TAG_ACTION = 446, + VAR_ACCESS_CONTROL_TAG_DATA = 447, + VAR_VIEW = 448, + VAR_ACCESS_CONTROL_VIEW = 449, + VAR_VIEW_FIRST = 450, + VAR_SERVE_EXPIRED = 451, + VAR_FAKE_DSA = 452, + VAR_FAKE_SHA1 = 453, + VAR_LOG_IDENTITY = 454, + VAR_HIDE_TRUSTANCHOR = 455, + VAR_TRUST_ANCHOR_SIGNALING = 456, + VAR_AGGRESSIVE_NSEC = 457, + VAR_USE_SYSTEMD = 458, + VAR_SHM_ENABLE = 459, + VAR_SHM_KEY = 460, + VAR_ROOT_KEY_SENTINEL = 461, + VAR_DNSCRYPT = 462, + VAR_DNSCRYPT_ENABLE = 463, + VAR_DNSCRYPT_PORT = 464, + VAR_DNSCRYPT_PROVIDER = 465, + VAR_DNSCRYPT_SECRET_KEY = 466, + VAR_DNSCRYPT_PROVIDER_CERT = 467, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 468, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 469, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 470, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 471, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 472, + VAR_IPSECMOD_ENABLED = 473, + VAR_IPSECMOD_HOOK = 474, + VAR_IPSECMOD_IGNORE_BOGUS = 475, + VAR_IPSECMOD_MAX_TTL = 476, + VAR_IPSECMOD_WHITELIST = 477, + VAR_IPSECMOD_STRICT = 478, + VAR_CACHEDB = 479, + VAR_CACHEDB_BACKEND = 480, + VAR_CACHEDB_SECRETSEED = 481, + VAR_CACHEDB_REDISHOST = 482, + VAR_CACHEDB_REDISPORT = 483, + VAR_CACHEDB_REDISTIMEOUT = 484, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 485, + VAR_FOR_UPSTREAM = 486, + VAR_AUTH_ZONE = 487, + VAR_ZONEFILE = 488, + VAR_MASTER = 489, + VAR_URL = 490, + VAR_FOR_DOWNSTREAM = 491, + VAR_FALLBACK_ENABLED = 492, + VAR_TLS_ADDITIONAL_PORT = 493, + VAR_LOW_RTT = 494, + VAR_LOW_RTT_PERMIL = 495, + VAR_ALLOW_NOTIFY = 496, + VAR_TLS_WIN_CERT = 497 + }; #endif /* Tokens. */ #define SPACE 258 @@ -306,192 +385,258 @@ extern int yydebug; #define VAR_INTERFACE 271 #define VAR_DO_IP4 272 #define VAR_DO_IP6 273 -#define VAR_DO_UDP 274 -#define VAR_DO_TCP 275 -#define VAR_CHROOT 276 -#define VAR_USERNAME 277 -#define VAR_DIRECTORY 278 -#define VAR_LOGFILE 279 -#define VAR_PIDFILE 280 -#define VAR_MSG_CACHE_SIZE 281 -#define VAR_MSG_CACHE_SLABS 282 -#define VAR_NUM_QUERIES_PER_THREAD 283 -#define VAR_RRSET_CACHE_SIZE 284 -#define VAR_RRSET_CACHE_SLABS 285 -#define VAR_OUTGOING_NUM_TCP 286 -#define VAR_INFRA_HOST_TTL 287 -#define VAR_INFRA_LAME_TTL 288 -#define VAR_INFRA_CACHE_SLABS 289 -#define VAR_INFRA_CACHE_NUMHOSTS 290 -#define VAR_INFRA_CACHE_LAME_SIZE 291 -#define VAR_NAME 292 -#define VAR_STUB_ZONE 293 -#define VAR_STUB_HOST 294 -#define VAR_STUB_ADDR 295 -#define VAR_TARGET_FETCH_POLICY 296 -#define VAR_HARDEN_SHORT_BUFSIZE 297 -#define VAR_HARDEN_LARGE_QUERIES 298 -#define VAR_FORWARD_ZONE 299 -#define VAR_FORWARD_HOST 300 -#define VAR_FORWARD_ADDR 301 -#define VAR_DO_NOT_QUERY_ADDRESS 302 -#define VAR_HIDE_IDENTITY 303 -#define VAR_HIDE_VERSION 304 -#define VAR_IDENTITY 305 -#define VAR_VERSION 306 -#define VAR_HARDEN_GLUE 307 -#define VAR_MODULE_CONF 308 -#define VAR_TRUST_ANCHOR_FILE 309 -#define VAR_TRUST_ANCHOR 310 -#define VAR_VAL_OVERRIDE_DATE 311 -#define VAR_BOGUS_TTL 312 -#define VAR_VAL_CLEAN_ADDITIONAL 313 -#define VAR_VAL_PERMISSIVE_MODE 314 -#define VAR_INCOMING_NUM_TCP 315 -#define VAR_MSG_BUFFER_SIZE 316 -#define VAR_KEY_CACHE_SIZE 317 -#define VAR_KEY_CACHE_SLABS 318 -#define VAR_TRUSTED_KEYS_FILE 319 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320 -#define VAR_USE_SYSLOG 321 -#define VAR_OUTGOING_INTERFACE 322 -#define VAR_ROOT_HINTS 323 -#define VAR_DO_NOT_QUERY_LOCALHOST 324 -#define VAR_CACHE_MAX_TTL 325 -#define VAR_HARDEN_DNSSEC_STRIPPED 326 -#define VAR_ACCESS_CONTROL 327 -#define VAR_LOCAL_ZONE 328 -#define VAR_LOCAL_DATA 329 -#define VAR_INTERFACE_AUTOMATIC 330 -#define VAR_STATISTICS_INTERVAL 331 -#define VAR_DO_DAEMONIZE 332 -#define VAR_USE_CAPS_FOR_ID 333 -#define VAR_STATISTICS_CUMULATIVE 334 -#define VAR_OUTGOING_PORT_PERMIT 335 -#define VAR_OUTGOING_PORT_AVOID 336 -#define VAR_DLV_ANCHOR_FILE 337 -#define VAR_DLV_ANCHOR 338 -#define VAR_NEG_CACHE_SIZE 339 -#define VAR_HARDEN_REFERRAL_PATH 340 -#define VAR_PRIVATE_ADDRESS 341 -#define VAR_PRIVATE_DOMAIN 342 -#define VAR_REMOTE_CONTROL 343 -#define VAR_CONTROL_ENABLE 344 -#define VAR_CONTROL_INTERFACE 345 -#define VAR_CONTROL_PORT 346 -#define VAR_SERVER_KEY_FILE 347 -#define VAR_SERVER_CERT_FILE 348 -#define VAR_CONTROL_KEY_FILE 349 -#define VAR_CONTROL_CERT_FILE 350 -#define VAR_CONTROL_USE_CERT 351 -#define VAR_EXTENDED_STATISTICS 352 -#define VAR_LOCAL_DATA_PTR 353 -#define VAR_JOSTLE_TIMEOUT 354 -#define VAR_STUB_PRIME 355 -#define VAR_UNWANTED_REPLY_THRESHOLD 356 -#define VAR_LOG_TIME_ASCII 357 -#define VAR_DOMAIN_INSECURE 358 -#define VAR_PYTHON 359 -#define VAR_PYTHON_SCRIPT 360 -#define VAR_VAL_SIG_SKEW_MIN 361 -#define VAR_VAL_SIG_SKEW_MAX 362 -#define VAR_CACHE_MIN_TTL 363 -#define VAR_VAL_LOG_LEVEL 364 -#define VAR_AUTO_TRUST_ANCHOR_FILE 365 -#define VAR_KEEP_MISSING 366 -#define VAR_ADD_HOLDDOWN 367 -#define VAR_DEL_HOLDDOWN 368 -#define VAR_SO_RCVBUF 369 -#define VAR_EDNS_BUFFER_SIZE 370 -#define VAR_PREFETCH 371 -#define VAR_PREFETCH_KEY 372 -#define VAR_SO_SNDBUF 373 -#define VAR_SO_REUSEPORT 374 -#define VAR_HARDEN_BELOW_NXDOMAIN 375 -#define VAR_IGNORE_CD_FLAG 376 -#define VAR_LOG_QUERIES 377 -#define VAR_TCP_UPSTREAM 378 -#define VAR_SSL_UPSTREAM 379 -#define VAR_SSL_SERVICE_KEY 380 -#define VAR_SSL_SERVICE_PEM 381 -#define VAR_SSL_PORT 382 -#define VAR_FORWARD_FIRST 383 -#define VAR_STUB_FIRST 384 -#define VAR_MINIMAL_RESPONSES 385 -#define VAR_RRSET_ROUNDROBIN 386 -#define VAR_MAX_UDP_SIZE 387 -#define VAR_DELAY_CLOSE 388 -#define VAR_UNBLOCK_LAN_ZONES 389 -#define VAR_INFRA_CACHE_MIN_RTT 390 -#define VAR_DNS64_PREFIX 391 -#define VAR_DNS64_SYNTHALL 392 -#define VAR_DNSTAP 393 -#define VAR_DNSTAP_ENABLE 394 -#define VAR_DNSTAP_SOCKET_PATH 395 -#define VAR_DNSTAP_SEND_IDENTITY 396 -#define VAR_DNSTAP_SEND_VERSION 397 -#define VAR_DNSTAP_IDENTITY 398 -#define VAR_DNSTAP_VERSION 399 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 400 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 401 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 402 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405 -#define VAR_HARDEN_ALGO_DOWNGRADE 406 -#define VAR_IP_TRANSPARENT 407 -#define VAR_RATELIMIT 408 -#define VAR_RATELIMIT_SLABS 409 -#define VAR_RATELIMIT_SIZE 410 -#define VAR_RATELIMIT_FOR_DOMAIN 411 -#define VAR_RATELIMIT_BELOW_DOMAIN 412 -#define VAR_RATELIMIT_FACTOR 413 -#define VAR_CAPS_WHITELIST 414 -#define VAR_CACHE_MAX_NEGATIVE_TTL 415 -#define VAR_PERMIT_SMALL_HOLDDOWN 416 -#define VAR_QNAME_MINIMISATION 417 - - - +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_CHROOT 279 +#define VAR_USERNAME 280 +#define VAR_DIRECTORY 281 +#define VAR_LOGFILE 282 +#define VAR_PIDFILE 283 +#define VAR_MSG_CACHE_SIZE 284 +#define VAR_MSG_CACHE_SLABS 285 +#define VAR_NUM_QUERIES_PER_THREAD 286 +#define VAR_RRSET_CACHE_SIZE 287 +#define VAR_RRSET_CACHE_SLABS 288 +#define VAR_OUTGOING_NUM_TCP 289 +#define VAR_INFRA_HOST_TTL 290 +#define VAR_INFRA_LAME_TTL 291 +#define VAR_INFRA_CACHE_SLABS 292 +#define VAR_INFRA_CACHE_NUMHOSTS 293 +#define VAR_INFRA_CACHE_LAME_SIZE 294 +#define VAR_NAME 295 +#define VAR_STUB_ZONE 296 +#define VAR_STUB_HOST 297 +#define VAR_STUB_ADDR 298 +#define VAR_TARGET_FETCH_POLICY 299 +#define VAR_HARDEN_SHORT_BUFSIZE 300 +#define VAR_HARDEN_LARGE_QUERIES 301 +#define VAR_FORWARD_ZONE 302 +#define VAR_FORWARD_HOST 303 +#define VAR_FORWARD_ADDR 304 +#define VAR_DO_NOT_QUERY_ADDRESS 305 +#define VAR_HIDE_IDENTITY 306 +#define VAR_HIDE_VERSION 307 +#define VAR_IDENTITY 308 +#define VAR_VERSION 309 +#define VAR_HARDEN_GLUE 310 +#define VAR_MODULE_CONF 311 +#define VAR_TRUST_ANCHOR_FILE 312 +#define VAR_TRUST_ANCHOR 313 +#define VAR_VAL_OVERRIDE_DATE 314 +#define VAR_BOGUS_TTL 315 +#define VAR_VAL_CLEAN_ADDITIONAL 316 +#define VAR_VAL_PERMISSIVE_MODE 317 +#define VAR_INCOMING_NUM_TCP 318 +#define VAR_MSG_BUFFER_SIZE 319 +#define VAR_KEY_CACHE_SIZE 320 +#define VAR_KEY_CACHE_SLABS 321 +#define VAR_TRUSTED_KEYS_FILE 322 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 323 +#define VAR_USE_SYSLOG 324 +#define VAR_OUTGOING_INTERFACE 325 +#define VAR_ROOT_HINTS 326 +#define VAR_DO_NOT_QUERY_LOCALHOST 327 +#define VAR_CACHE_MAX_TTL 328 +#define VAR_HARDEN_DNSSEC_STRIPPED 329 +#define VAR_ACCESS_CONTROL 330 +#define VAR_LOCAL_ZONE 331 +#define VAR_LOCAL_DATA 332 +#define VAR_INTERFACE_AUTOMATIC 333 +#define VAR_STATISTICS_INTERVAL 334 +#define VAR_DO_DAEMONIZE 335 +#define VAR_USE_CAPS_FOR_ID 336 +#define VAR_STATISTICS_CUMULATIVE 337 +#define VAR_OUTGOING_PORT_PERMIT 338 +#define VAR_OUTGOING_PORT_AVOID 339 +#define VAR_DLV_ANCHOR_FILE 340 +#define VAR_DLV_ANCHOR 341 +#define VAR_NEG_CACHE_SIZE 342 +#define VAR_HARDEN_REFERRAL_PATH 343 +#define VAR_PRIVATE_ADDRESS 344 +#define VAR_PRIVATE_DOMAIN 345 +#define VAR_REMOTE_CONTROL 346 +#define VAR_CONTROL_ENABLE 347 +#define VAR_CONTROL_INTERFACE 348 +#define VAR_CONTROL_PORT 349 +#define VAR_SERVER_KEY_FILE 350 +#define VAR_SERVER_CERT_FILE 351 +#define VAR_CONTROL_KEY_FILE 352 +#define VAR_CONTROL_CERT_FILE 353 +#define VAR_CONTROL_USE_CERT 354 +#define VAR_EXTENDED_STATISTICS 355 +#define VAR_LOCAL_DATA_PTR 356 +#define VAR_JOSTLE_TIMEOUT 357 +#define VAR_STUB_PRIME 358 +#define VAR_UNWANTED_REPLY_THRESHOLD 359 +#define VAR_LOG_TIME_ASCII 360 +#define VAR_DOMAIN_INSECURE 361 +#define VAR_PYTHON 362 +#define VAR_PYTHON_SCRIPT 363 +#define VAR_VAL_SIG_SKEW_MIN 364 +#define VAR_VAL_SIG_SKEW_MAX 365 +#define VAR_CACHE_MIN_TTL 366 +#define VAR_VAL_LOG_LEVEL 367 +#define VAR_AUTO_TRUST_ANCHOR_FILE 368 +#define VAR_KEEP_MISSING 369 +#define VAR_ADD_HOLDDOWN 370 +#define VAR_DEL_HOLDDOWN 371 +#define VAR_SO_RCVBUF 372 +#define VAR_EDNS_BUFFER_SIZE 373 +#define VAR_PREFETCH 374 +#define VAR_PREFETCH_KEY 375 +#define VAR_SO_SNDBUF 376 +#define VAR_SO_REUSEPORT 377 +#define VAR_HARDEN_BELOW_NXDOMAIN 378 +#define VAR_IGNORE_CD_FLAG 379 +#define VAR_LOG_QUERIES 380 +#define VAR_LOG_REPLIES 381 +#define VAR_TCP_UPSTREAM 382 +#define VAR_SSL_UPSTREAM 383 +#define VAR_SSL_SERVICE_KEY 384 +#define VAR_SSL_SERVICE_PEM 385 +#define VAR_SSL_PORT 386 +#define VAR_FORWARD_FIRST 387 +#define VAR_STUB_SSL_UPSTREAM 388 +#define VAR_FORWARD_SSL_UPSTREAM 389 +#define VAR_TLS_CERT_BUNDLE 390 +#define VAR_STUB_FIRST 391 +#define VAR_MINIMAL_RESPONSES 392 +#define VAR_RRSET_ROUNDROBIN 393 +#define VAR_MAX_UDP_SIZE 394 +#define VAR_DELAY_CLOSE 395 +#define VAR_UNBLOCK_LAN_ZONES 396 +#define VAR_INSECURE_LAN_ZONES 397 +#define VAR_INFRA_CACHE_MIN_RTT 398 +#define VAR_DNS64_PREFIX 399 +#define VAR_DNS64_SYNTHALL 400 +#define VAR_DNSTAP 401 +#define VAR_DNSTAP_ENABLE 402 +#define VAR_DNSTAP_SOCKET_PATH 403 +#define VAR_DNSTAP_SEND_IDENTITY 404 +#define VAR_DNSTAP_SEND_VERSION 405 +#define VAR_DNSTAP_IDENTITY 406 +#define VAR_DNSTAP_VERSION 407 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 408 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 409 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 410 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 411 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 412 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 413 +#define VAR_RESPONSE_IP_TAG 414 +#define VAR_RESPONSE_IP 415 +#define VAR_RESPONSE_IP_DATA 416 +#define VAR_HARDEN_ALGO_DOWNGRADE 417 +#define VAR_IP_TRANSPARENT 418 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 419 +#define VAR_IP_RATELIMIT 420 +#define VAR_IP_RATELIMIT_SLABS 421 +#define VAR_IP_RATELIMIT_SIZE 422 +#define VAR_RATELIMIT 423 +#define VAR_RATELIMIT_SLABS 424 +#define VAR_RATELIMIT_SIZE 425 +#define VAR_RATELIMIT_FOR_DOMAIN 426 +#define VAR_RATELIMIT_BELOW_DOMAIN 427 +#define VAR_IP_RATELIMIT_FACTOR 428 +#define VAR_RATELIMIT_FACTOR 429 +#define VAR_SEND_CLIENT_SUBNET 430 +#define VAR_CLIENT_SUBNET_ZONE 431 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 432 +#define VAR_CLIENT_SUBNET_OPCODE 433 +#define VAR_MAX_CLIENT_SUBNET_IPV4 434 +#define VAR_MAX_CLIENT_SUBNET_IPV6 435 +#define VAR_CAPS_WHITELIST 436 +#define VAR_CACHE_MAX_NEGATIVE_TTL 437 +#define VAR_PERMIT_SMALL_HOLDDOWN 438 +#define VAR_QNAME_MINIMISATION 439 +#define VAR_QNAME_MINIMISATION_STRICT 440 +#define VAR_IP_FREEBIND 441 +#define VAR_DEFINE_TAG 442 +#define VAR_LOCAL_ZONE_TAG 443 +#define VAR_ACCESS_CONTROL_TAG 444 +#define VAR_LOCAL_ZONE_OVERRIDE 445 +#define VAR_ACCESS_CONTROL_TAG_ACTION 446 +#define VAR_ACCESS_CONTROL_TAG_DATA 447 +#define VAR_VIEW 448 +#define VAR_ACCESS_CONTROL_VIEW 449 +#define VAR_VIEW_FIRST 450 +#define VAR_SERVE_EXPIRED 451 +#define VAR_FAKE_DSA 452 +#define VAR_FAKE_SHA1 453 +#define VAR_LOG_IDENTITY 454 +#define VAR_HIDE_TRUSTANCHOR 455 +#define VAR_TRUST_ANCHOR_SIGNALING 456 +#define VAR_AGGRESSIVE_NSEC 457 +#define VAR_USE_SYSTEMD 458 +#define VAR_SHM_ENABLE 459 +#define VAR_SHM_KEY 460 +#define VAR_ROOT_KEY_SENTINEL 461 +#define VAR_DNSCRYPT 462 +#define VAR_DNSCRYPT_ENABLE 463 +#define VAR_DNSCRYPT_PORT 464 +#define VAR_DNSCRYPT_PROVIDER 465 +#define VAR_DNSCRYPT_SECRET_KEY 466 +#define VAR_DNSCRYPT_PROVIDER_CERT 467 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 468 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 469 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 470 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 471 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 472 +#define VAR_IPSECMOD_ENABLED 473 +#define VAR_IPSECMOD_HOOK 474 +#define VAR_IPSECMOD_IGNORE_BOGUS 475 +#define VAR_IPSECMOD_MAX_TTL 476 +#define VAR_IPSECMOD_WHITELIST 477 +#define VAR_IPSECMOD_STRICT 478 +#define VAR_CACHEDB 479 +#define VAR_CACHEDB_BACKEND 480 +#define VAR_CACHEDB_SECRETSEED 481 +#define VAR_CACHEDB_REDISHOST 482 +#define VAR_CACHEDB_REDISPORT 483 +#define VAR_CACHEDB_REDISTIMEOUT 484 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 485 +#define VAR_FOR_UPSTREAM 486 +#define VAR_AUTH_ZONE 487 +#define VAR_ZONEFILE 488 +#define VAR_MASTER 489 +#define VAR_URL 490 +#define VAR_FOR_DOWNSTREAM 491 +#define VAR_FALLBACK_ENABLED 492 +#define VAR_TLS_ADDITIONAL_PORT 493 +#define VAR_LOW_RTT 494 +#define VAR_LOW_RTT_PERMIL 495 +#define VAR_ALLOW_NOTIFY 496 +#define VAR_TLS_WIN_CERT 497 + +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE + +union YYSTYPE { -/* Line 387 of yacc.c */ -#line 64 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:355 */ char* str; +#line 623 "util/configparser.c" /* yacc.c:355 */ +}; -/* Line 387 of yacc.c */ -#line 467 "util/configparser.c" -} YYSTYPE; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 495 "util/configparser.c" +#line 640 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -505,11 +650,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -529,8 +671,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -552,6 +693,33 @@ typedef short int yytype_int16; # endif #endif +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -559,23 +727,25 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) -#else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -594,8 +764,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -607,8 +776,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -624,7 +793,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -632,15 +801,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -650,7 +817,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -675,16 +842,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -703,7 +870,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -711,25 +878,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 305 +#define YYLAST 491 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 163 +#define YYNTOKENS 243 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 168 +#define YYNNTS 263 /* YYNRULES -- Number of rules. */ -#define YYNRULES 321 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 473 +#define YYNRULES 503 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 753 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 417 +#define YYMAXUTOK 497 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -773,170 +942,72 @@ static const yytype_uint8 yytranslate[] = 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 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 + 155, 156, 157, 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, 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 }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, - 25, 27, 30, 31, 33, 35, 37, 39, 41, 43, - 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, - 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, - 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, - 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, - 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, - 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, - 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, - 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, - 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, - 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, - 245, 247, 249, 251, 253, 255, 257, 259, 261, 263, - 265, 267, 270, 271, 273, 275, 277, 279, 281, 283, - 286, 287, 289, 291, 293, 295, 298, 301, 304, 307, - 310, 313, 316, 319, 322, 325, 328, 331, 334, 337, - 340, 343, 346, 349, 352, 355, 358, 361, 364, 367, - 370, 373, 376, 379, 382, 385, 388, 391, 394, 397, - 400, 403, 406, 409, 412, 415, 418, 421, 424, 427, - 430, 433, 436, 439, 442, 445, 448, 451, 454, 457, - 460, 463, 466, 469, 472, 475, 478, 481, 484, 487, - 490, 493, 496, 499, 502, 505, 508, 511, 514, 517, - 520, 523, 526, 529, 532, 535, 538, 542, 545, 548, - 551, 554, 557, 560, 563, 566, 569, 572, 575, 578, - 581, 584, 587, 590, 593, 596, 599, 602, 606, 609, - 612, 615, 618, 621, 624, 627, 630, 633, 636, 640, - 644, 647, 650, 653, 656, 659, 662, 665, 668, 671, - 674, 677, 679, 682, 683, 685, 687, 689, 691, 693, - 695, 697, 699, 702, 705, 708, 711, 714, 717, 720, - 723, 725, 728, 729, 731, 733, 735, 737, 739, 741, - 743, 745, 747, 749, 751, 753, 756, 759, 762, 765, - 768, 771, 774, 777, 780, 783, 786, 789, 791, 794, - 795, 797 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 164, 0, -1, -1, 164, 165, -1, 166, 167, -1, - 169, 170, -1, 172, 173, -1, 327, 328, -1, 301, - 302, -1, 312, 313, -1, 11, -1, 167, 168, -1, - -1, 175, -1, 176, -1, 180, -1, 183, -1, 189, - -1, 190, -1, 191, -1, 192, -1, 181, -1, 202, - -1, 203, -1, 204, -1, 205, -1, 206, -1, 225, - -1, 226, -1, 227, -1, 231, -1, 232, -1, 186, - -1, 233, -1, 234, -1, 237, -1, 235, -1, 236, - -1, 239, -1, 240, -1, 241, -1, 254, -1, 215, - -1, 216, -1, 217, -1, 218, -1, 242, -1, 257, - -1, 211, -1, 213, -1, 258, -1, 264, -1, 265, - -1, 266, -1, 187, -1, 224, -1, 274, -1, 275, - -1, 212, -1, 269, -1, 199, -1, 182, -1, 207, - -1, 255, -1, 261, -1, 243, -1, 256, -1, 277, - -1, 278, -1, 188, -1, 177, -1, 198, -1, 247, - -1, 178, -1, 184, -1, 185, -1, 208, -1, 209, - -1, 276, -1, 245, -1, 249, -1, 250, -1, 179, - -1, 279, -1, 228, -1, 253, -1, 200, -1, 214, - -1, 259, -1, 260, -1, 263, -1, 268, -1, 210, - -1, 270, -1, 271, -1, 272, -1, 219, -1, 223, - -1, 251, -1, 252, -1, 220, -1, 244, -1, 267, - -1, 201, -1, 193, -1, 194, -1, 195, -1, 196, - -1, 197, -1, 280, -1, 281, -1, 282, -1, 221, - -1, 229, -1, 230, -1, 283, -1, 284, -1, 238, - -1, 246, -1, 222, -1, 285, -1, 287, -1, 286, - -1, 288, -1, 289, -1, 290, -1, 248, -1, 262, - -1, 273, -1, 291, -1, 38, -1, 170, 171, -1, - -1, 292, -1, 293, -1, 294, -1, 296, -1, 295, - -1, 44, -1, 173, 174, -1, -1, 297, -1, 298, - -1, 299, -1, 300, -1, 13, 10, -1, 12, 10, - -1, 76, 10, -1, 79, 10, -1, 97, 10, -1, - 14, 10, -1, 16, 10, -1, 67, 10, -1, 15, - 10, -1, 80, 10, -1, 81, 10, -1, 31, 10, - -1, 60, 10, -1, 75, 10, -1, 17, 10, -1, - 18, 10, -1, 19, 10, -1, 20, 10, -1, 123, - 10, -1, 124, 10, -1, 125, 10, -1, 126, 10, - -1, 127, 10, -1, 77, 10, -1, 66, 10, -1, - 102, 10, -1, 122, 10, -1, 21, 10, -1, 22, - 10, -1, 23, 10, -1, 24, 10, -1, 25, 10, - -1, 68, 10, -1, 82, 10, -1, 83, 10, -1, - 110, 10, -1, 54, 10, -1, 64, 10, -1, 55, - 10, -1, 103, 10, -1, 48, 10, -1, 49, 10, - -1, 50, 10, -1, 51, 10, -1, 114, 10, -1, - 118, 10, -1, 119, 10, -1, 152, 10, -1, 115, - 10, -1, 61, 10, -1, 26, 10, -1, 27, 10, - -1, 28, 10, -1, 99, 10, -1, 133, 10, -1, - 134, 10, -1, 29, 10, -1, 30, 10, -1, 32, - 10, -1, 33, 10, -1, 35, 10, -1, 36, 10, - -1, 34, 10, -1, 135, 10, -1, 41, 10, -1, - 42, 10, -1, 43, 10, -1, 52, 10, -1, 71, - 10, -1, 120, 10, -1, 85, 10, -1, 151, 10, - -1, 78, 10, -1, 159, 10, -1, 86, 10, -1, - 87, 10, -1, 116, 10, -1, 117, 10, -1, 101, - 10, -1, 47, 10, -1, 69, 10, -1, 72, 10, - 10, -1, 53, 10, -1, 56, 10, -1, 106, 10, - -1, 107, 10, -1, 70, 10, -1, 160, 10, -1, - 108, 10, -1, 57, 10, -1, 58, 10, -1, 59, - 10, -1, 121, 10, -1, 109, 10, -1, 65, 10, - -1, 112, 10, -1, 113, 10, -1, 111, 10, -1, - 161, 10, -1, 62, 10, -1, 63, 10, -1, 84, - 10, -1, 73, 10, 10, -1, 74, 10, -1, 98, - 10, -1, 130, 10, -1, 131, 10, -1, 132, 10, - -1, 136, 10, -1, 137, 10, -1, 153, 10, -1, - 155, 10, -1, 154, 10, -1, 156, 10, 10, -1, - 157, 10, 10, -1, 158, 10, -1, 162, 10, -1, - 37, 10, -1, 39, 10, -1, 40, 10, -1, 129, - 10, -1, 100, 10, -1, 37, 10, -1, 45, 10, - -1, 46, 10, -1, 128, 10, -1, 88, -1, 302, - 303, -1, -1, 304, -1, 306, -1, 305, -1, 308, - -1, 309, -1, 310, -1, 311, -1, 307, -1, 89, - 10, -1, 91, 10, -1, 90, 10, -1, 96, 10, - -1, 92, 10, -1, 93, 10, -1, 94, 10, -1, - 95, 10, -1, 138, -1, 313, 314, -1, -1, 315, - -1, 316, -1, 317, -1, 318, -1, 319, -1, 320, - -1, 321, -1, 322, -1, 323, -1, 324, -1, 325, - -1, 326, -1, 139, 10, -1, 140, 10, -1, 141, - 10, -1, 142, 10, -1, 143, 10, -1, 144, 10, - -1, 145, 10, -1, 146, 10, -1, 147, 10, -1, - 148, 10, -1, 149, 10, -1, 150, 10, -1, 104, - -1, 328, 329, -1, -1, 330, -1, 105, 10, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 128, 128, 128, 129, 129, 130, 130, 131, 131, - 135, 140, 141, 142, 142, 142, 143, 143, 144, 144, - 144, 145, 145, 145, 146, 146, 146, 147, 147, 148, - 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, - 153, 154, 154, 155, 155, 155, 156, 156, 156, 157, - 157, 157, 158, 158, 159, 159, 160, 160, 161, 161, - 162, 162, 162, 163, 163, 164, 164, 165, 165, 165, - 166, 166, 167, 167, 168, 168, 169, 169, 169, 170, - 170, 171, 171, 172, 172, 173, 173, 174, 174, 175, - 175, 175, 176, 176, 177, 177, 177, 178, 178, 178, - 179, 179, 179, 180, 180, 180, 181, 181, 181, 182, - 182, 182, 183, 183, 183, 184, 184, 185, 185, 186, - 186, 186, 187, 187, 188, 188, 189, 189, 190, 190, - 192, 204, 205, 206, 206, 206, 206, 206, 208, 220, - 221, 222, 222, 222, 222, 224, 233, 242, 253, 262, - 271, 280, 293, 308, 317, 326, 335, 344, 353, 362, - 371, 380, 389, 398, 407, 416, 423, 430, 439, 448, - 462, 471, 480, 487, 494, 501, 509, 516, 523, 530, - 537, 545, 553, 561, 568, 575, 584, 593, 600, 607, - 615, 623, 633, 643, 656, 667, 675, 688, 697, 706, - 715, 725, 733, 746, 755, 763, 772, 780, 793, 802, - 809, 819, 829, 839, 849, 859, 869, 879, 889, 896, - 903, 910, 919, 928, 937, 944, 954, 971, 978, 996, - 1009, 1022, 1031, 1040, 1049, 1058, 1068, 1078, 1087, 1096, - 1103, 1112, 1121, 1130, 1139, 1147, 1160, 1168, 1192, 1199, - 1214, 1224, 1234, 1241, 1248, 1257, 1266, 1274, 1287, 1300, - 1313, 1322, 1332, 1342, 1349, 1356, 1365, 1375, 1385, 1392, - 1399, 1408, 1413, 1414, 1415, 1415, 1415, 1416, 1416, 1416, - 1417, 1417, 1419, 1429, 1438, 1445, 1455, 1462, 1469, 1476, - 1483, 1488, 1489, 1490, 1490, 1491, 1491, 1492, 1492, 1493, - 1494, 1495, 1496, 1497, 1498, 1500, 1508, 1515, 1523, 1531, - 1538, 1545, 1554, 1563, 1572, 1581, 1590, 1599, 1604, 1605, - 1606, 1608 + 0, 163, 163, 163, 164, 164, 165, 165, 166, 166, + 166, 167, 167, 168, 172, 177, 178, 179, 179, 179, + 180, 180, 181, 181, 182, 182, 183, 183, 184, 184, + 184, 185, 185, 185, 186, 186, 187, 187, 188, 188, + 189, 189, 190, 190, 191, 191, 192, 192, 193, 193, + 194, 194, 194, 195, 195, 195, 196, 196, 196, 197, + 197, 198, 198, 199, 199, 200, 200, 201, 201, 201, + 202, 202, 203, 203, 204, 204, 204, 205, 205, 206, + 206, 207, 207, 208, 208, 208, 209, 209, 210, 210, + 211, 211, 212, 212, 213, 213, 214, 214, 214, 215, + 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, + 219, 219, 219, 219, 220, 220, 220, 221, 221, 221, + 222, 222, 223, 223, 224, 224, 225, 225, 226, 226, + 226, 227, 227, 228, 228, 229, 230, 230, 231, 231, + 232, 232, 233, 234, 234, 235, 235, 236, 236, 237, + 237, 237, 238, 238, 239, 239, 240, 240, 241, 241, + 242, 242, 242, 243, 243, 243, 244, 244, 244, 245, + 245, 246, 247, 247, 248, 248, 249, 249, 250, 250, + 251, 251, 251, 252, 252, 254, 266, 267, 268, 268, + 268, 268, 268, 269, 271, 283, 284, 285, 285, 285, + 285, 286, 288, 302, 303, 304, 304, 304, 304, 305, + 305, 305, 307, 323, 324, 325, 325, 325, 325, 326, + 326, 326, 327, 329, 338, 347, 358, 367, 376, 385, + 396, 405, 416, 429, 444, 455, 472, 489, 502, 517, + 526, 535, 544, 553, 562, 571, 580, 589, 598, 607, + 616, 625, 634, 643, 652, 661, 668, 675, 684, 691, + 700, 708, 717, 726, 740, 749, 758, 767, 774, 781, + 807, 815, 822, 829, 836, 843, 851, 859, 867, 874, + 885, 896, 903, 912, 921, 930, 937, 944, 952, 960, + 970, 980, 990, 1003, 1014, 1022, 1035, 1044, 1053, 1062, + 1072, 1082, 1090, 1103, 1112, 1120, 1129, 1137, 1150, 1159, + 1166, 1176, 1186, 1196, 1206, 1216, 1226, 1236, 1246, 1253, + 1260, 1267, 1276, 1285, 1294, 1301, 1311, 1329, 1336, 1354, + 1367, 1380, 1389, 1398, 1407, 1416, 1426, 1436, 1447, 1456, + 1465, 1478, 1491, 1500, 1507, 1516, 1525, 1534, 1543, 1551, + 1564, 1572, 1601, 1608, 1623, 1633, 1643, 1650, 1657, 1666, + 1680, 1699, 1718, 1730, 1742, 1754, 1765, 1784, 1794, 1803, + 1811, 1819, 1832, 1845, 1858, 1871, 1880, 1889, 1898, 1907, + 1917, 1927, 1940, 1953, 1964, 1977, 1988, 2001, 2011, 2018, + 2025, 2034, 2044, 2054, 2064, 2071, 2078, 2087, 2097, 2107, + 2114, 2121, 2128, 2136, 2146, 2156, 2166, 2176, 2206, 2216, + 2224, 2233, 2248, 2257, 2262, 2263, 2264, 2264, 2264, 2265, + 2265, 2265, 2266, 2266, 2268, 2278, 2287, 2294, 2301, 2308, + 2315, 2322, 2329, 2334, 2335, 2336, 2336, 2337, 2337, 2338, + 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2346, 2354, 2361, + 2369, 2377, 2384, 2391, 2400, 2409, 2418, 2427, 2436, 2445, + 2450, 2451, 2452, 2454, 2460, 2470, 2477, 2486, 2494, 2500, + 2501, 2503, 2503, 2503, 2504, 2504, 2505, 2506, 2507, 2508, + 2509, 2511, 2521, 2531, 2538, 2547, 2554, 2563, 2571, 2584, + 2592, 2605, 2610, 2611, 2612, 2612, 2613, 2613, 2613, 2615, + 2629, 2644, 2656, 2671 }; #endif @@ -948,12 +1019,12 @@ static const char *const yytname[] = "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", - "VAR_DO_IP4", "VAR_DO_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_CHROOT", - "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", - "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS", - "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE", - "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL", - "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", + "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_CHROOT", "VAR_USERNAME", + "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", + "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD", + "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", + "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", @@ -984,10 +1055,12 @@ static const char *const yytname[] = "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", - "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", - "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", - "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", - "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", + "VAR_LOG_REPLIES", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", + "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", + "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", + "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", + "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", + "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", @@ -997,86 +1070,153 @@ static const char *const yytname[] = "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", - "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_RATELIMIT", - "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN", - "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR", + "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG", + "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE", + "VAR_IP_TRANSPARENT", "VAR_DISABLE_DNSSEC_LAME_CHECK", + "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", + "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", + "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", + "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", + "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE", + "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE", + "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6", "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", - "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "$accept", - "toplevelvars", "toplevelvar", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", + "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", + "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", + "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", + "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", + "VAR_ACCESS_CONTROL_TAG_DATA", "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_TRUST_ANCHOR_SIGNALING", + "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", + "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", + "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", + "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT", + "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED", + "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", + "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", + "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS", + "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", + "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", + "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", + "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", + "VAR_CACHEDB_REDISTIMEOUT", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", + "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", + "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", + "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", + "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "authstart", "contents_auth", "content_auth", "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", - "server_port", "server_interface", "server_outgoing_interface", - "server_outgoing_range", "server_outgoing_port_permit", - "server_outgoing_port_avoid", "server_outgoing_num_tcp", - "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", - "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream", - "server_ssl_upstream", "server_ssl_service_key", - "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", - "server_use_syslog", "server_log_time_ascii", "server_log_queries", - "server_chroot", "server_username", "server_directory", "server_logfile", + "server_shm_enable", "server_shm_key", "server_port", + "server_send_client_subnet", "server_client_subnet_zone", + "server_client_subnet_always_forward", "server_client_subnet_opcode", + "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", + "server_interface", "server_outgoing_interface", "server_outgoing_range", + "server_outgoing_port_permit", "server_outgoing_port_avoid", + "server_outgoing_num_tcp", "server_incoming_num_tcp", + "server_interface_automatic", "server_do_ip4", "server_do_ip6", + "server_do_udp", "server_do_tcp", "server_prefer_ip6", "server_tcp_mss", + "server_outgoing_tcp_mss", "server_tcp_upstream", + "server_udp_upstream_without_downstream", "server_ssl_upstream", + "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", + "server_tls_cert_bundle", "server_tls_win_cert", + "server_tls_additional_port", "server_use_systemd", + "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", + "server_log_queries", "server_log_replies", "server_chroot", + "server_username", "server_directory", "server_logfile", "server_pidfile", "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", "server_auto_trust_anchor_file", "server_trust_anchor_file", "server_trusted_keys_file", - "server_trust_anchor", "server_domain_insecure", "server_hide_identity", - "server_hide_version", "server_identity", "server_version", - "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", - "server_ip_transparent", "server_edns_buffer_size", + "server_trust_anchor", "server_trust_anchor_signaling", + "server_root_key_sentinel", "server_domain_insecure", + "server_hide_identity", "server_hide_version", "server_hide_trustanchor", + "server_identity", "server_version", "server_so_rcvbuf", + "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", + "server_ip_freebind", "server_edns_buffer_size", "server_msg_buffer_size", "server_msg_cache_size", "server_msg_cache_slabs", "server_num_queries_per_thread", "server_jostle_timeout", "server_delay_close", - "server_unblock_lan_zones", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_infra_cache_min_rtt", "server_target_fetch_policy", - "server_harden_short_bufsize", "server_harden_large_queries", - "server_harden_glue", "server_harden_dnssec_stripped", - "server_harden_below_nxdomain", "server_harden_referral_path", - "server_harden_algo_downgrade", "server_use_caps_for_id", - "server_caps_whitelist", "server_private_address", - "server_private_domain", "server_prefetch", "server_prefetch_key", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_ignore_cd_flag", "server_val_log_level", + "server_unblock_lan_zones", "server_insecure_lan_zones", + "server_rrset_cache_size", "server_rrset_cache_slabs", + "server_infra_host_ttl", "server_infra_lame_ttl", + "server_infra_cache_numhosts", "server_infra_cache_lame_size", + "server_infra_cache_slabs", "server_infra_cache_min_rtt", + "server_target_fetch_policy", "server_harden_short_bufsize", + "server_harden_large_queries", "server_harden_glue", + "server_harden_dnssec_stripped", "server_harden_below_nxdomain", + "server_harden_referral_path", "server_harden_algo_downgrade", + "server_use_caps_for_id", "server_caps_whitelist", + "server_private_address", "server_private_domain", "server_prefetch", + "server_prefetch_key", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", "server_fake_dsa", + "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix", - "server_dns64_synthall", "server_ratelimit", "server_ratelimit_size", + "server_dns64_synthall", "server_define_tag", "server_local_zone_tag", + "server_access_control_tag", "server_access_control_tag_action", + "server_access_control_tag_data", "server_local_zone_override", + "server_access_control_view", "server_response_ip_tag", + "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size", + "server_ratelimit_size", "server_ip_ratelimit_slabs", "server_ratelimit_slabs", "server_ratelimit_for_domain", - "server_ratelimit_below_domain", "server_ratelimit_factor", - "server_qname_minimisation", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_prime", "forward_name", "forward_host", - "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc", - "rc_control_enable", "rc_control_port", "rc_control_interface", - "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", - "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", - "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path", - "dt_dnstap_send_identity", "dt_dnstap_send_version", - "dt_dnstap_identity", "dt_dnstap_version", + "server_ratelimit_below_domain", "server_ip_ratelimit_factor", + "server_ratelimit_factor", "server_low_rtt", "server_low_rtt_permil", + "server_qname_minimisation", "server_qname_minimisation_strict", + "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", + "server_ipsecmod_hook", "server_ipsecmod_max_ttl", + "server_ipsecmod_whitelist", "server_ipsecmod_strict", "stub_name", + "stub_host", "stub_addr", "stub_first", "stub_ssl_upstream", + "stub_prime", "forward_name", "forward_host", "forward_addr", + "forward_first", "forward_ssl_upstream", "auth_name", "auth_zonefile", + "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", + "auth_for_upstream", "auth_fallback_enabled", "view_name", + "view_local_zone", "view_response_ip", "view_response_ip_data", + "view_local_data", "view_local_data_ptr", "view_first", "rcstart", + "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", + "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", + "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", + "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", + "dt_dnstap_socket_path", "dt_dnstap_send_identity", + "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", "dt_dnstap_log_client_response_messages", "dt_dnstap_log_forwarder_query_messages", "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", YY_NULL + "contents_py", "content_py", "py_script", + "server_disable_dnssec_lame_check", "server_log_identity", + "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_provider_cert_rotated", + "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", + "dnsc_dnscrypt_shared_secret_cache_slabs", + "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", + "cachedbstart", "contents_cachedb", "content_cachedb", + "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", + "redis_server_port", "redis_timeout", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1095,94 +1235,119 @@ static const yytype_uint16 yytoknum[] = 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417 + 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, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 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 }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 163, 164, 164, 165, 165, 165, 165, 165, 165, - 166, 167, 167, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 169, 170, 170, 171, 171, 171, 171, 171, 172, 173, - 173, 174, 174, 174, 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, 302, 303, 303, 303, 303, 303, 303, - 303, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 313, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 314, 314, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 328, - 329, 330 -}; +#define YYPACT_NINF -184 -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-184))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 2, 0, 2, 2, 2, 2, 2, 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, 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, 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, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, - 0, 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, 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, 2, 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, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 2, 2, 2, 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 + -184, 0, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, 221, -37, -32, -38, -39, -62, + -129, -104, -160, -183, -3, -1, 2, 3, 4, 5, + 30, 48, 49, 50, 51, 52, 54, 55, 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, 85, 87, 88, 91, 93, + 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 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, 176, 177, 178, + 179, 180, 181, 189, 190, 191, 193, 194, 195, 196, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, + 219, 220, 251, 252, 253, 254, 258, 259, 260, 302, + 303, 304, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, 305, 306, 307, 308, 309, 310, -184, -184, -184, + -184, -184, -184, -184, 314, 318, 319, 343, 344, -184, + -184, -184, -184, -184, -184, 345, 347, 357, 358, 359, + 360, 361, -184, -184, -184, -184, -184, -184, -184, -184, + 362, 363, 364, 365, 366, 367, 368, 369, -184, -184, + -184, -184, -184, -184, -184, -184, -184, 404, 406, 418, + 419, 420, 421, 422, 423, -184, -184, -184, -184, -184, + -184, -184, -184, -184, 424, 425, 426, 427, 428, 435, + 436, 437, 438, 439, 440, 442, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, 443, + -184, -184, 444, 445, 446, 447, 448, 452, 454, 455, + 456, 457, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, 458, 459, 460, 461, 462, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + 463, 464, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, 465, 466, 467, -184, -184, + -184, -184, -184, -184, -184, -184, -184, 468, 469, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, 470, 471, 472, 473, 474, 475, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, 476, -184, -184, 477, 478, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, 479, 480, 481, -184, -184, -184, -184, + -184, -184, -184 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 10, 130, 138, 271, 317, 290, 3, - 12, 132, 140, 273, 292, 319, 4, 5, 6, 8, - 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 14, 185, 194, 413, 459, 432, 202, + 468, 491, 212, 3, 16, 187, 196, 204, 214, 415, + 434, 461, 470, 493, 4, 5, 6, 10, 13, 8, + 9, 7, 11, 12, 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, 0, 0, 0, 0, @@ -1193,259 +1358,310 @@ 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, 0, 0, 0, 0, 0, 0, 0, 11, - 13, 14, 70, 73, 82, 15, 21, 61, 16, 74, - 75, 32, 54, 69, 17, 18, 19, 20, 104, 105, - 106, 107, 108, 71, 60, 86, 103, 22, 23, 24, - 25, 26, 62, 76, 77, 92, 48, 58, 49, 87, - 42, 43, 44, 45, 96, 100, 112, 119, 97, 55, - 27, 28, 29, 84, 113, 114, 30, 31, 33, 34, - 36, 37, 35, 117, 38, 39, 40, 46, 65, 101, - 79, 118, 72, 126, 80, 81, 98, 99, 85, 41, - 63, 66, 47, 50, 88, 89, 64, 127, 90, 51, - 52, 53, 102, 91, 59, 93, 94, 95, 128, 56, - 57, 78, 67, 68, 83, 109, 110, 111, 115, 116, - 120, 122, 121, 123, 124, 125, 129, 0, 0, 0, - 0, 0, 131, 133, 134, 135, 137, 136, 0, 0, - 0, 0, 139, 141, 142, 143, 144, 0, 0, 0, - 0, 0, 0, 0, 0, 272, 274, 276, 275, 281, - 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 291, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 0, - 318, 320, 146, 145, 150, 153, 151, 159, 160, 161, - 162, 172, 173, 174, 175, 176, 195, 196, 197, 201, - 202, 156, 203, 204, 207, 205, 206, 209, 210, 211, - 224, 185, 186, 187, 188, 212, 227, 181, 183, 228, - 234, 235, 236, 157, 194, 244, 245, 182, 239, 169, - 152, 177, 225, 231, 213, 0, 0, 248, 158, 147, - 168, 217, 148, 154, 155, 178, 179, 246, 215, 219, - 220, 149, 249, 198, 223, 170, 184, 229, 230, 233, - 238, 180, 242, 240, 241, 189, 193, 221, 222, 190, - 191, 214, 237, 171, 163, 164, 165, 166, 167, 250, - 251, 252, 199, 200, 208, 253, 254, 216, 192, 255, - 257, 256, 0, 0, 260, 218, 232, 243, 261, 262, - 263, 264, 266, 265, 267, 268, 269, 270, 282, 284, - 283, 286, 287, 288, 289, 285, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 321, 226, - 247, 258, 259 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 9, 10, 16, 139, 11, 17, 262, 12, - 18, 272, 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, 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, 263, - 264, 265, 266, 267, 273, 274, 275, 276, 13, 19, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 14, - 20, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 15, 21, 320, 321 + 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, 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, 15, 17, 18, 77, 80, 89, 166, 167, + 19, 139, 140, 141, 142, 143, 144, 28, 68, 20, + 81, 82, 39, 61, 76, 21, 22, 24, 25, 23, + 26, 27, 112, 178, 113, 114, 115, 116, 180, 184, + 181, 162, 78, 67, 93, 110, 111, 29, 30, 31, + 32, 33, 69, 83, 84, 99, 55, 65, 56, 170, + 171, 94, 49, 50, 169, 51, 52, 103, 107, 120, + 128, 149, 104, 62, 34, 35, 36, 91, 121, 122, + 123, 37, 38, 40, 41, 43, 44, 42, 126, 45, + 46, 47, 53, 72, 108, 86, 127, 79, 145, 87, + 88, 105, 106, 92, 48, 70, 73, 54, 57, 95, + 96, 71, 146, 97, 58, 59, 60, 179, 109, 159, + 160, 168, 98, 66, 100, 101, 102, 147, 63, 64, + 85, 74, 75, 90, 117, 118, 119, 124, 125, 150, + 151, 153, 155, 156, 154, 157, 163, 129, 130, 133, + 134, 131, 132, 135, 136, 138, 137, 182, 183, 148, + 158, 172, 174, 173, 175, 176, 177, 152, 161, 164, + 165, 0, 0, 0, 0, 0, 0, 186, 188, 189, + 190, 192, 193, 191, 0, 0, 0, 0, 0, 195, + 197, 198, 199, 200, 201, 0, 0, 0, 0, 0, + 0, 0, 203, 205, 206, 209, 210, 207, 211, 208, + 0, 0, 0, 0, 0, 0, 0, 0, 213, 215, + 216, 217, 218, 222, 219, 220, 221, 0, 0, 0, + 0, 0, 0, 0, 0, 414, 416, 418, 417, 423, + 419, 420, 421, 422, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 433, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, + 460, 462, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 469, 471, 472, 473, 475, 476, 474, 477, + 478, 479, 480, 0, 0, 0, 0, 0, 492, 494, + 495, 496, 497, 498, 224, 223, 230, 239, 237, 245, + 246, 249, 247, 248, 250, 251, 267, 268, 269, 270, + 271, 294, 295, 296, 301, 302, 242, 303, 304, 307, + 305, 306, 309, 310, 311, 324, 282, 283, 285, 286, + 312, 327, 276, 278, 328, 334, 335, 336, 243, 293, + 348, 349, 277, 343, 263, 238, 272, 325, 331, 313, + 0, 0, 352, 244, 225, 262, 317, 226, 240, 241, + 273, 274, 350, 315, 319, 320, 227, 353, 297, 323, + 264, 281, 329, 330, 333, 342, 275, 346, 344, 345, + 287, 292, 321, 322, 288, 289, 314, 338, 265, 266, + 252, 254, 255, 256, 257, 258, 354, 355, 356, 298, + 299, 300, 308, 357, 358, 0, 0, 0, 316, 290, + 464, 367, 371, 369, 368, 372, 370, 0, 0, 375, + 376, 231, 232, 233, 234, 235, 236, 318, 332, 347, + 379, 380, 291, 359, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 465, 284, 279, 337, 261, 228, 229, + 280, 381, 383, 382, 384, 385, 386, 253, 260, 377, + 378, 259, 387, 388, 389, 392, 391, 390, 393, 394, + 395, 396, 397, 406, 0, 410, 411, 0, 0, 412, + 398, 404, 399, 400, 401, 403, 405, 402, 424, 426, + 425, 428, 429, 430, 431, 427, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 463, 481, + 482, 483, 486, 484, 485, 487, 488, 489, 490, 499, + 500, 501, 502, 503, 326, 351, 366, 466, 467, 373, + 374, 360, 361, 0, 0, 0, 365, 407, 408, 409, + 364, 362, 363 }; -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -81 -static const yytype_int16 yypact[] = + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = { - -81, 116, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -12, 89, 47, -13, - 22, -80, 16, 17, 18, 23, 24, 78, 107, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 141, 142, - 143, 145, 146, 147, 148, 149, 163, 164, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 209, 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, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, 262, 263, 264, - 265, 266, -81, -81, -81, -81, -81, -81, 267, 268, - 269, 270, -81, -81, -81, -81, -81, 271, 272, 273, - 274, 275, 276, 277, 278, -81, -81, -81, -81, -81, - -81, -81, -81, -81, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, 291, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, 292, 293, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, 294, 295, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81 + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184 }; -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = { - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81 + -1, 1, 13, 14, 24, 202, 15, 25, 377, 16, + 26, 389, 17, 27, 402, 18, 28, 418, 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, 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, 378, 379, 380, 381, 382, 383, 390, 391, + 392, 393, 394, 419, 420, 421, 422, 423, 424, 425, + 426, 403, 404, 405, 406, 407, 408, 409, 19, 29, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 20, + 30, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 21, 31, 470, 471, 367, 368, + 369, 370, 22, 32, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 23, 33, 498, 499, 500, + 501, 502, 503 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 319, 322, 323, 324, 47, - 48, 49, 0, 325, 326, 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, 277, 278, 279, 280, - 281, 282, 283, 284, 268, 91, 92, 93, 327, 94, - 95, 96, 269, 270, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 2, 328, 119, 120, - 121, 122, 123, 124, 125, 126, 257, 3, 258, 259, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 338, 339, 340, 4, 341, 342, 343, 344, 345, - 5, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 346, 347, 271, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 260, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 6, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 261, 388, - 7, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 8, 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, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472 + 2, 410, 395, 371, 469, 372, 373, 504, 384, 505, + 0, 3, 506, 507, 508, 509, 385, 386, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 427, 428, 429, 430, 431, 432, 433, 434, 396, 397, + 510, 4, 493, 494, 495, 496, 497, 5, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 511, 512, + 513, 514, 515, 398, 516, 517, 374, 518, 519, 520, + 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 6, 542, 543, 544, 545, 375, 546, 547, 376, + 387, 548, 388, 549, 550, 551, 552, 7, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 399, 400, 567, 568, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 8, 589, 590, 591, + 592, 593, 594, 595, 596, 597, 598, 401, 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, 628, 629, 630, + 631, 632, 411, 9, 412, 413, 414, 415, 416, 633, + 634, 635, 417, 636, 637, 638, 639, 10, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 11, 656, 657, 658, 659, 660, + 661, 0, 12, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 662, 663, 664, 665, 62, 63, 64, 666, 667, + 668, 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, 100, 101, 102, 103, + 104, 105, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 106, 107, 108, 678, 109, 110, 111, 679, 680, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 681, 682, 683, 135, 684, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, + 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, 176, 177, 178, 698, 179, 699, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 700, 701, + 702, 703, 704, 705, 706, 707, 708, 709, 710, 191, + 192, 193, 194, 195, 196, 711, 712, 713, 714, 715, + 716, 197, 717, 718, 719, 720, 721, 722, 723, 198, + 199, 200, 724, 201, 725, 726, 727, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-81))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 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, 105, 10, 10, 10, 41, - 42, 43, -1, 10, 10, 47, 48, 49, 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, 89, 90, 91, 92, - 93, 94, 95, 96, 37, 97, 98, 99, 10, 101, - 102, 103, 45, 46, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 0, 10, 130, 131, - 132, 133, 134, 135, 136, 137, 37, 11, 39, 40, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 10, 10, 10, 38, 10, 10, 10, 10, 10, - 44, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 10, 10, 128, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 100, + 0, 40, 40, 40, 108, 42, 43, 10, 40, 10, + -1, 11, 10, 10, 10, 10, 48, 49, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 92, 93, 94, 95, 96, 97, 98, 99, 76, 77, + 10, 41, 225, 226, 227, 228, 229, 47, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 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, 91, 10, 10, 10, 10, 133, 10, 10, 136, + 132, 10, 134, 10, 10, 10, 10, 107, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 160, 161, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 146, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 195, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 88, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 129, 10, - 104, 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, 138, 10, 10, 10, 10, 10, + 10, 10, 231, 193, 233, 234, 235, 236, 237, 10, + 10, 10, 241, 10, 10, 10, 10, 207, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 224, 10, 10, 10, 10, 10, + 10, -1, 232, 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, 135, 10, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 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, 186, 187, 188, + 189, 190, 191, 192, 10, 194, 10, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 218, + 219, 220, 221, 222, 223, 10, 10, 10, 10, 10, + 10, 230, 10, 10, 10, 10, 10, 10, 10, 238, + 239, 240, 10, 242, 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 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 164, 0, 11, 38, 44, 88, 104, 138, 165, - 166, 169, 172, 301, 312, 327, 167, 170, 173, 302, - 313, 328, 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, 41, 42, 43, - 47, 48, 49, 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, 97, 98, 99, 101, 102, 103, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, - 131, 132, 133, 134, 135, 136, 137, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 168, - 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, 37, 39, 40, - 100, 129, 171, 292, 293, 294, 295, 296, 37, 45, - 46, 128, 174, 297, 298, 299, 300, 89, 90, 91, - 92, 93, 94, 95, 96, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 105, - 329, 330, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 244, 0, 11, 41, 47, 91, 107, 146, 193, + 207, 224, 232, 245, 246, 249, 252, 255, 258, 451, + 462, 477, 485, 498, 247, 250, 253, 256, 259, 452, + 463, 478, 486, 499, 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, 135, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 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, 186, 187, 188, 189, 190, 191, 192, 194, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 218, 219, 220, 221, 222, 223, 230, 238, 239, + 240, 242, 248, 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, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 481, 482, 483, + 484, 40, 42, 43, 103, 133, 136, 251, 425, 426, + 427, 428, 429, 430, 40, 48, 49, 132, 134, 254, + 431, 432, 433, 434, 435, 40, 76, 77, 101, 160, + 161, 195, 257, 444, 445, 446, 447, 448, 449, 450, + 40, 231, 233, 234, 235, 236, 237, 241, 260, 436, + 437, 438, 439, 440, 441, 442, 443, 92, 93, 94, + 95, 96, 97, 98, 99, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 108, + 479, 480, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 225, 226, 227, 228, 229, 500, 501, + 502, 503, 504, 505, 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, 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, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1463,30 +1679,128 @@ static const yytype_uint16 yystos[] = 10, 10, 10 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 243, 244, 244, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 246, 247, 247, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 249, 250, 250, 251, 251, + 251, 251, 251, 251, 252, 253, 253, 254, 254, 254, + 254, 254, 255, 256, 256, 257, 257, 257, 257, 257, + 257, 257, 258, 259, 259, 260, 260, 260, 260, 260, + 260, 260, 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, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 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, 452, 452, 453, 453, 453, 453, + 453, 453, 453, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 463, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 486, 487, 487, 487, 487, 487, 487, 487, 487, 487, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 499, 500, 500, 500, 500, 500, 501, + 502, 503, 504, 505 +}; + + /* 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, 2, 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, 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, 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, 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, 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, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 0, 1, 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, 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, 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, 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, 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, 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, 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, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + #define YYRECOVERING() (!!yyerrstatus) @@ -1503,27 +1817,15 @@ do \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +#define YYTERROR 1 +#define YYERRCODE 256 -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -1533,40 +1835,36 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); @@ -1575,14 +1873,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -1590,22 +1882,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -1616,16 +1897,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -1636,49 +1909,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1692,7 +1958,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1715,15 +1981,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -1739,16 +1998,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1778,27 +2029,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1821,11 +2072,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1833,10 +2084,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1886,7 +2133,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -1953,31 +2200,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -1986,18 +2219,8 @@ yydestruct (yymsg, yytype, yyvaluep) /* The lookahead symbol. */ int yychar; - -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - /* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - +YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; @@ -2006,35 +2229,16 @@ int yynerrs; | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + 'yyss': related to states. + 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -2102,23 +2306,23 @@ yyparse () #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -2126,22 +2330,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -2150,10 +2354,10 @@ yyparse () yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2182,7 +2386,7 @@ yyparse () if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -2247,7 +2451,7 @@ yyparse () yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -2260,17 +2464,16 @@ yyparse () YY_REDUCE_PRINT (yyn); switch (yyn) { - case 10: -/* Line 1792 of yacc.c */ -#line 136 "./util/configparser.y" + case 14: +#line 173 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } +#line 2473 "util/configparser.c" /* yacc.c:1646 */ break; - case 130: -/* Line 1792 of yacc.c */ -#line 193 "./util/configparser.y" + case 185: +#line 255 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2281,11 +2484,11 @@ yyparse () } else yyerror("out of memory"); } +#line 2488 "util/configparser.c" /* yacc.c:1646 */ break; - case 138: -/* Line 1792 of yacc.c */ -#line 209 "./util/configparser.y" + case 194: +#line 272 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2296,87 +2499,250 @@ yyparse () } else yyerror("out of memory"); } +#line 2503 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 202: +#line 289 "./util/configparser.y" /* yacc.c:1646 */ + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } +#line 2520 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 212: +#line 308 "./util/configparser.y" /* yacc.c:1646 */ + { + struct config_auth* s; + OUTYY(("\nP(auth_zone:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for auth zone */ + s->for_downstream = 1; + s->for_upstream = 1; + s->fallback_enabled = 0; + } else + yyerror("out of memory"); + } +#line 2539 "util/configparser.c" /* yacc.c:1646 */ break; - case 145: -/* Line 1792 of yacc.c */ -#line 225 "./util/configparser.y" + case 223: +#line 330 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2551 "util/configparser.c" /* yacc.c:1646 */ break; - case 146: -/* Line 1792 of yacc.c */ -#line 234 "./util/configparser.y" + case 224: +#line 339 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2563 "util/configparser.c" /* yacc.c:1646 */ break; - case 147: -/* Line 1792 of yacc.c */ -#line 243 "./util/configparser.y" + case 225: +#line 348 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) + OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; - else if(atoi((yyvsp[(2) - (2)].str)) == 0) + else if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 2577 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 226: +#line 359 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2589 "util/configparser.c" /* yacc.c:1646 */ break; - case 148: -/* Line 1792 of yacc.c */ -#line 254 "./util/configparser.y" + case 227: +#line 368 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_extended_statistics:%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->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2601 "util/configparser.c" /* yacc.c:1646 */ break; - case 149: -/* Line 1792 of yacc.c */ -#line 263 "./util/configparser.y" + case 228: +#line 377 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_shm_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->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 2613 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 229: +#line 386 "./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) + cfg_parser->cfg->shm_key = 0; + else if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2627 "util/configparser.c" /* yacc.c:1646 */ break; - case 150: -/* Line 1792 of yacc.c */ -#line 272 "./util/configparser.y" + case 230: +#line 397 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2639 "util/configparser.c" /* yacc.c:1646 */ break; - case 151: -/* Line 1792 of yacc.c */ -#line 281 "./util/configparser.y" + case 231: +#line 406 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) + fatal_exit("out of memory adding client-subnet"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + } +#line 2653 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 232: +#line 417 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, + (yyvsp[0].str))) + fatal_exit("out of memory adding client-subnet-zone"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + } +#line 2668 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 233: +#line 430 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_always_forward:%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->client_subnet_always_forward = + (strcmp((yyvsp[0].str), "yes")==0); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 2686 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 234: +#line 445 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); + OUTYY(("P(Deprecated option, ignoring)\n")); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 2700 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 235: +#line 456 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi((yyvsp[0].str)) > 32) + cfg_parser->cfg->max_client_subnet_ipv4 = 32; + else if (atoi((yyvsp[0].str)) < 0) + cfg_parser->cfg->max_client_subnet_ipv4 = 0; + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 2720 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 236: +#line 473 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi((yyvsp[0].str)) > 128) + cfg_parser->cfg->max_client_subnet_ipv6 = 128; + else if (atoi((yyvsp[0].str)) < 0) + cfg_parser->cfg->max_client_subnet_ipv6 = 0; + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 2740 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 237: +#line 490 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, @@ -2384,15 +2750,15 @@ yyparse () if(!cfg_parser->cfg->ifs) yyerror("out of memory"); else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } +#line 2756 "util/configparser.c" /* yacc.c:1646 */ break; - case 152: -/* Line 1792 of yacc.c */ -#line 294 "./util/configparser.y" + case 238: +#line 503 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); else cfg_parser->cfg->out_ifs = realloc( @@ -2402,1198 +2768,1452 @@ yyparse () yyerror("out of memory"); else cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } +#line 2774 "util/configparser.c" /* yacc.c:1646 */ break; - case 153: -/* Line 1792 of yacc.c */ -#line 309 "./util/configparser.y" + case 239: +#line 518 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2786 "util/configparser.c" /* yacc.c:1646 */ break; - case 154: -/* Line 1792 of yacc.c */ -#line 318 "./util/configparser.y" + case 240: +#line 527 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, + OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); + if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 2798 "util/configparser.c" /* yacc.c:1646 */ break; - case 155: -/* Line 1792 of yacc.c */ -#line 327 "./util/configparser.y" + case 241: +#line 536 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, + OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); + if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 2810 "util/configparser.c" /* yacc.c:1646 */ break; - case 156: -/* Line 1792 of yacc.c */ -#line 336 "./util/configparser.y" + case 242: +#line 545 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2822 "util/configparser.c" /* yacc.c:1646 */ break; - case 157: -/* Line 1792 of yacc.c */ -#line 345 "./util/configparser.y" + case 243: +#line 554 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 2834 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 244: +#line 563 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 2846 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 245: +#line 572 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2858 "util/configparser.c" /* yacc.c:1646 */ break; - case 158: -/* Line 1792 of yacc.c */ -#line 354 "./util/configparser.y" + case 246: +#line 581 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_do_ip6:%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->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2870 "util/configparser.c" /* yacc.c:1646 */ break; - case 159: -/* Line 1792 of yacc.c */ -#line 363 "./util/configparser.y" + case 247: +#line 590 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_do_udp:%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->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2882 "util/configparser.c" /* yacc.c:1646 */ break; - case 160: -/* Line 1792 of yacc.c */ -#line 372 "./util/configparser.y" + case 248: +#line 599 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_do_tcp:%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->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2894 "util/configparser.c" /* yacc.c:1646 */ break; - case 161: -/* Line 1792 of yacc.c */ -#line 381 "./util/configparser.y" + case 249: +#line 608 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_prefer_ip6:%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->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 2906 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 250: +#line 617 "./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) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 2918 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 251: +#line 626 "./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) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 2930 "util/configparser.c" /* yacc.c:1646 */ break; - case 162: -/* Line 1792 of yacc.c */ -#line 390 "./util/configparser.y" + case 252: +#line 635 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_tcp_upstream:%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->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2942 "util/configparser.c" /* yacc.c:1646 */ break; - case 163: -/* Line 1792 of yacc.c */ -#line 399 "./util/configparser.y" + case 253: +#line 644 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_udp_upstream_without_downstream:%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->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2954 "util/configparser.c" /* yacc.c:1646 */ break; - case 164: -/* Line 1792 of yacc.c */ -#line 408 "./util/configparser.y" + case 254: +#line 653 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_ssl_upstream:%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->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 2966 "util/configparser.c" /* yacc.c:1646 */ break; - case 165: -/* Line 1792 of yacc.c */ -#line 417 "./util/configparser.y" + case 255: +#line 662 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } +#line 2976 "util/configparser.c" /* yacc.c:1646 */ break; - case 166: -/* Line 1792 of yacc.c */ -#line 424 "./util/configparser.y" + case 256: +#line 669 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } +#line 2986 "util/configparser.c" /* yacc.c:1646 */ break; - case 167: -/* Line 1792 of yacc.c */ -#line 431 "./util/configparser.y" + case 257: +#line 676 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 2998 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 258: +#line 685 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->tls_cert_bundle); + cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); + } +#line 3008 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 259: +#line 692 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_tls_win_cert:%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->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3020 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 260: +#line 701 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, + (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 3031 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 261: +#line 709 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3043 "util/configparser.c" /* yacc.c:1646 */ break; - case 168: -/* Line 1792 of yacc.c */ -#line 440 "./util/configparser.y" + case 262: +#line 718 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_do_daemonize:%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->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3055 "util/configparser.c" /* yacc.c:1646 */ break; - case 169: -/* Line 1792 of yacc.c */ -#line 449 "./util/configparser.y" + case 263: +#line 727 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_use_syslog:%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->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0) + if(strcmp((yyvsp[0].str), "yes") == 0) yyerror("no syslog services are available. " "(reconfigure and compile to add)"); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3072 "util/configparser.c" /* yacc.c:1646 */ break; - case 170: -/* Line 1792 of yacc.c */ -#line 463 "./util/configparser.y" + case 264: +#line 741 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_log_time_ascii:%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->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3084 "util/configparser.c" /* yacc.c:1646 */ break; - case 171: -/* Line 1792 of yacc.c */ -#line 472 "./util/configparser.y" + case 265: +#line 750 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_log_queries:%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->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3096 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 266: +#line 759 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3108 "util/configparser.c" /* yacc.c:1646 */ break; - case 172: -/* Line 1792 of yacc.c */ -#line 481 "./util/configparser.y" + case 267: +#line 768 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); - cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->chrootdir = (yyvsp[0].str); } +#line 3118 "util/configparser.c" /* yacc.c:1646 */ break; - case 173: -/* Line 1792 of yacc.c */ -#line 488 "./util/configparser.y" + case 268: +#line 775 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); - cfg_parser->cfg->username = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->username = (yyvsp[0].str); } +#line 3128 "util/configparser.c" /* yacc.c:1646 */ break; - case 174: -/* Line 1792 of yacc.c */ -#line 495 "./util/configparser.y" + case 269: +#line 782 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->directory = (yyvsp[0].str); + /* change there right away for includes relative to this */ + if((yyvsp[0].str)[0]) { + char* d; +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg_parser->cfg); +#endif + d = cfg_parser->cfg->directory; + /* adjust directory if we have already chroot, + * like, we reread after sighup */ + if(cfg_parser->chroot && cfg_parser->chroot[0] && + strncmp(d, cfg_parser->chroot, strlen( + cfg_parser->chroot)) == 0) + d += strlen(cfg_parser->chroot); + if(d[0]) { + if(chdir(d)) + log_err("cannot chdir to directory: %s (%s)", + d, strerror(errno)); + } + } } +#line 3157 "util/configparser.c" /* yacc.c:1646 */ break; - case 175: -/* Line 1792 of yacc.c */ -#line 502 "./util/configparser.y" + case 270: +#line 808 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); - cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } +#line 3168 "util/configparser.c" /* yacc.c:1646 */ break; - case 176: -/* Line 1792 of yacc.c */ -#line 510 "./util/configparser.y" + case 271: +#line 816 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); - cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->pidfile = (yyvsp[0].str); } +#line 3178 "util/configparser.c" /* yacc.c:1646 */ break; - case 177: -/* Line 1792 of yacc.c */ -#line 517 "./util/configparser.y" + case 272: +#line 823 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) + 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 3188 "util/configparser.c" /* yacc.c:1646 */ break; - case 178: -/* Line 1792 of yacc.c */ -#line 524 "./util/configparser.y" + case 273: +#line 830 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } +#line 3198 "util/configparser.c" /* yacc.c:1646 */ break; - case 179: -/* Line 1792 of yacc.c */ -#line 531 "./util/configparser.y" + case 274: +#line 837 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) + 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 3208 "util/configparser.c" /* yacc.c:1646 */ break; - case 180: -/* Line 1792 of yacc.c */ -#line 538 "./util/configparser.y" + case 275: +#line 844 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str))) + auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 3219 "util/configparser.c" /* yacc.c:1646 */ break; - case 181: -/* Line 1792 of yacc.c */ -#line 546 "./util/configparser.y" + case 276: +#line 852 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - trust_anchor_file_list, (yyvsp[(2) - (2)].str))) + trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 3230 "util/configparser.c" /* yacc.c:1646 */ break; - case 182: -/* Line 1792 of yacc.c */ -#line 554 "./util/configparser.y" + case 277: +#line 860 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[(2) - (2)].str))) + trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 3241 "util/configparser.c" /* yacc.c:1646 */ break; - case 183: -/* Line 1792 of yacc.c */ -#line 562 "./util/configparser.y" + case 278: +#line 868 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) + 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 3251 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 279: +#line 875 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_trust_anchor_signaling:%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->trust_anchor_signaling = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3265 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 280: +#line 886 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_root_key_sentinel:%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->root_key_sentinel = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3279 "util/configparser.c" /* yacc.c:1646 */ break; - case 184: -/* Line 1792 of yacc.c */ -#line 569 "./util/configparser.y" + case 281: +#line 897 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) + 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 3289 "util/configparser.c" /* yacc.c:1646 */ break; - case 185: -/* Line 1792 of yacc.c */ -#line 576 "./util/configparser.y" + case 282: +#line 904 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3301 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 283: +#line 913 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_hide_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->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3313 "util/configparser.c" /* yacc.c:1646 */ break; - case 186: -/* Line 1792 of yacc.c */ -#line 585 "./util/configparser.y" + case 284: +#line 922 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_hide_trustanchor:%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->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3325 "util/configparser.c" /* yacc.c:1646 */ break; - case 187: -/* Line 1792 of yacc.c */ -#line 594 "./util/configparser.y" + case 285: +#line 931 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); - cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->identity = (yyvsp[0].str); } +#line 3335 "util/configparser.c" /* yacc.c:1646 */ break; - case 188: -/* Line 1792 of yacc.c */ -#line 601 "./util/configparser.y" + case 286: +#line 938 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); - cfg_parser->cfg->version = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->version = (yyvsp[0].str); } +#line 3345 "util/configparser.c" /* yacc.c:1646 */ break; - case 189: -/* Line 1792 of yacc.c */ -#line 608 "./util/configparser.y" + case 287: +#line 945 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3356 "util/configparser.c" /* yacc.c:1646 */ break; - case 190: -/* Line 1792 of yacc.c */ -#line 616 "./util/configparser.y" + case 288: +#line 953 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3367 "util/configparser.c" /* yacc.c:1646 */ break; - case 191: -/* Line 1792 of yacc.c */ -#line 624 "./util/configparser.y" + case 289: +#line 961 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_so_reuseport:%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->so_reuseport = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3380 "util/configparser.c" /* yacc.c:1646 */ break; - case 192: -/* Line 1792 of yacc.c */ -#line 634 "./util/configparser.y" + case 290: +#line 971 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_ip_transparent:%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->ip_transparent = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3393 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 291: +#line 981 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3406 "util/configparser.c" /* yacc.c:1646 */ break; - case 193: -/* Line 1792 of yacc.c */ -#line 644 "./util/configparser.y" + case 292: +#line 991 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else if (atoi((yyvsp[(2) - (2)].str)) < 12) + else if (atoi((yyvsp[0].str)) < 12) yyerror("edns buffer size too small"); - else if (atoi((yyvsp[(2) - (2)].str)) > 65535) + else if (atoi((yyvsp[0].str)) > 65535) cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3422 "util/configparser.c" /* yacc.c:1646 */ break; - case 194: -/* Line 1792 of yacc.c */ -#line 657 "./util/configparser.y" + case 293: +#line 1004 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else if (atoi((yyvsp[(2) - (2)].str)) < 4096) + else if (atoi((yyvsp[0].str)) < 4096) yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3436 "util/configparser.c" /* yacc.c:1646 */ break; - case 195: -/* Line 1792 of yacc.c */ -#line 668 "./util/configparser.y" + case 294: +#line 1015 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3447 "util/configparser.c" /* yacc.c:1646 */ break; - case 196: -/* Line 1792 of yacc.c */ -#line 676 "./util/configparser.y" + case 295: +#line 1023 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3463 "util/configparser.c" /* yacc.c:1646 */ break; - case 197: -/* Line 1792 of yacc.c */ -#line 689 "./util/configparser.y" + case 296: +#line 1036 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3475 "util/configparser.c" /* yacc.c:1646 */ break; - case 198: -/* Line 1792 of yacc.c */ -#line 698 "./util/configparser.y" + case 297: +#line 1045 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3487 "util/configparser.c" /* yacc.c:1646 */ break; - case 199: -/* Line 1792 of yacc.c */ -#line 707 "./util/configparser.y" + case 298: +#line 1054 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3499 "util/configparser.c" /* yacc.c:1646 */ break; - case 200: -/* Line 1792 of yacc.c */ -#line 716 "./util/configparser.y" + case 299: +#line 1063 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_unblock_lan_zones:%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->unblock_lan_zones = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3512 "util/configparser.c" /* yacc.c:1646 */ break; - case 201: -/* Line 1792 of yacc.c */ -#line 726 "./util/configparser.y" + case 300: +#line 1073 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) + OUTYY(("P(server_insecure_lan_zones:%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->insecure_lan_zones = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3525 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 301: +#line 1083 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3536 "util/configparser.c" /* yacc.c:1646 */ break; - case 202: -/* Line 1792 of yacc.c */ -#line 734 "./util/configparser.y" + case 302: +#line 1091 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3552 "util/configparser.c" /* yacc.c:1646 */ break; - case 203: -/* Line 1792 of yacc.c */ -#line 747 "./util/configparser.y" + case 303: +#line 1104 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3564 "util/configparser.c" /* yacc.c:1646 */ break; - case 204: -/* Line 1792 of yacc.c */ -#line 756 "./util/configparser.y" + case 304: +#line 1113 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + "removed, use infra-host-ttl)", (yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3575 "util/configparser.c" /* yacc.c:1646 */ break; - case 205: -/* Line 1792 of yacc.c */ -#line 764 "./util/configparser.y" + case 305: +#line 1121 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3587 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -/* Line 1792 of yacc.c */ -#line 773 "./util/configparser.y" + case 306: +#line 1130 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3598 "util/configparser.c" /* yacc.c:1646 */ break; - case 207: -/* Line 1792 of yacc.c */ -#line 781 "./util/configparser.y" + case 307: +#line 1138 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3614 "util/configparser.c" /* yacc.c:1646 */ break; - case 208: -/* Line 1792 of yacc.c */ -#line 794 "./util/configparser.y" + case 308: +#line 1151 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3626 "util/configparser.c" /* yacc.c:1646 */ break; - case 209: -/* Line 1792 of yacc.c */ -#line 803 "./util/configparser.y" + case 309: +#line 1160 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } +#line 3636 "util/configparser.c" /* yacc.c:1646 */ break; - case 210: -/* Line 1792 of yacc.c */ -#line 810 "./util/configparser.y" + case 310: +#line 1167 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_short_bufsize:%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->harden_short_bufsize = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3649 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -/* Line 1792 of yacc.c */ -#line 820 "./util/configparser.y" + case 311: +#line 1177 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_large_queries:%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->harden_large_queries = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3662 "util/configparser.c" /* yacc.c:1646 */ break; - case 212: -/* Line 1792 of yacc.c */ -#line 830 "./util/configparser.y" + case 312: +#line 1187 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_glue:%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->harden_glue = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3675 "util/configparser.c" /* yacc.c:1646 */ break; - case 213: -/* Line 1792 of yacc.c */ -#line 840 "./util/configparser.y" + case 313: +#line 1197 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_dnssec_stripped:%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->harden_dnssec_stripped = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3688 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -/* Line 1792 of yacc.c */ -#line 850 "./util/configparser.y" + case 314: +#line 1207 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_below_nxdomain:%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->harden_below_nxdomain = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3701 "util/configparser.c" /* yacc.c:1646 */ break; - case 215: -/* Line 1792 of yacc.c */ -#line 860 "./util/configparser.y" + case 315: +#line 1217 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_referral_path:%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->harden_referral_path = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3714 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -/* Line 1792 of yacc.c */ -#line 870 "./util/configparser.y" + case 316: +#line 1227 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_harden_algo_downgrade:%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->harden_algo_downgrade = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3727 "util/configparser.c" /* yacc.c:1646 */ break; - case 217: -/* Line 1792 of yacc.c */ -#line 880 "./util/configparser.y" + case 317: +#line 1237 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3740 "util/configparser.c" /* yacc.c:1646 */ break; - case 218: -/* Line 1792 of yacc.c */ -#line 890 "./util/configparser.y" + case 318: +#line 1247 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str))) + 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 3750 "util/configparser.c" /* yacc.c:1646 */ break; - case 219: -/* Line 1792 of yacc.c */ -#line 897 "./util/configparser.y" + case 319: +#line 1254 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) + 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 3760 "util/configparser.c" /* yacc.c:1646 */ break; - case 220: -/* Line 1792 of yacc.c */ -#line 904 "./util/configparser.y" + case 320: +#line 1261 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) + 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 3770 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -/* Line 1792 of yacc.c */ -#line 911 "./util/configparser.y" + case 321: +#line 1268 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_prefetch:%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->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3782 "util/configparser.c" /* yacc.c:1646 */ break; - case 222: -/* Line 1792 of yacc.c */ -#line 920 "./util/configparser.y" + case 322: +#line 1277 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_prefetch_key:%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->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3794 "util/configparser.c" /* yacc.c:1646 */ break; - case 223: -/* Line 1792 of yacc.c */ -#line 929 "./util/configparser.y" + case 323: +#line 1286 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3806 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -/* Line 1792 of yacc.c */ -#line 938 "./util/configparser.y" + case 324: +#line 1295 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) + 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 3816 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -/* Line 1792 of yacc.c */ -#line 945 "./util/configparser.y" + case 325: +#line 1302 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->donotquery_localhost = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3829 "util/configparser.c" /* yacc.c:1646 */ break; - case 226: -/* Line 1792 of yacc.c */ -#line 955 "./util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && - strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 && - strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && - strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && - strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) { + case 326: +#line 1312 "./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 && + strcmp((yyvsp[0].str), "deny_non_local")!=0 && + strcmp((yyvsp[0].str), "refuse_non_local")!=0 && + strcmp((yyvsp[0].str), "allow_setrd")!=0 && + strcmp((yyvsp[0].str), "allow")!=0 && + strcmp((yyvsp[0].str), "allow_snoop")!=0) { yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow or allow_snoop " - "in access control action"); + "refuse_non_local, allow, allow_setrd or " + "allow_snoop in access control action"); } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } } +#line 3850 "util/configparser.c" /* yacc.c:1646 */ break; - case 227: -/* Line 1792 of yacc.c */ -#line 972 "./util/configparser.y" + case 327: +#line 1330 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); - cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->module_conf = (yyvsp[0].str); } +#line 3860 "util/configparser.c" /* yacc.c:1646 */ break; - case 228: -/* Line 1792 of yacc.c */ -#line 979 "./util/configparser.y" + case 328: +#line 1337 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); - if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); + if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; - } else if(strlen((yyvsp[(2) - (2)].str)) == 14) { + } else if(strlen((yyvsp[0].str)) == 14) { cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[(2) - (2)].str)); + cfg_convert_timeval((yyvsp[0].str)); if(!cfg_parser->cfg->val_date_override) yyerror("bad date/time specification"); } else { - if(atoi((yyvsp[(2) - (2)].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3881 "util/configparser.c" /* yacc.c:1646 */ break; - case 229: -/* Line 1792 of yacc.c */ -#line 997 "./util/configparser.y" + case 329: +#line 1355 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); - if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); + if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; } else { - cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); if(!cfg_parser->cfg->val_sig_skew_min) yyerror("number expected"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3897 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -/* Line 1792 of yacc.c */ -#line 1010 "./util/configparser.y" + case 330: +#line 1368 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); - if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); + if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); if(!cfg_parser->cfg->val_sig_skew_max) yyerror("number expected"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3913 "util/configparser.c" /* yacc.c:1646 */ break; - case 231: -/* Line 1792 of yacc.c */ -#line 1023 "./util/configparser.y" + case 331: +#line 1381 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3925 "util/configparser.c" /* yacc.c:1646 */ break; - case 232: -/* Line 1792 of yacc.c */ -#line 1032 "./util/configparser.y" + case 332: +#line 1390 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3937 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -/* Line 1792 of yacc.c */ -#line 1041 "./util/configparser.y" + case 333: +#line 1399 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3949 "util/configparser.c" /* yacc.c:1646 */ break; - case 234: -/* Line 1792 of yacc.c */ -#line 1050 "./util/configparser.y" + case 334: +#line 1408 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3961 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -/* Line 1792 of yacc.c */ -#line 1059 "./util/configparser.y" + case 335: +#line 1417 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_val_clean_additional:%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->val_clean_additional = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3974 "util/configparser.c" /* yacc.c:1646 */ break; - case 236: -/* Line 1792 of yacc.c */ -#line 1069 "./util/configparser.y" + case 336: +#line 1427 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_val_permissive_mode:%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->val_permissive_mode = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3987 "util/configparser.c" /* yacc.c:1646 */ break; - case 237: -/* Line 1792 of yacc.c */ -#line 1079 "./util/configparser.y" + case 337: +#line 1437 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_aggressive_nsec:%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->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else + cfg_parser->cfg->aggressive_nsec = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4001 "util/configparser.c" /* yacc.c:1646 */ break; - case 238: -/* Line 1792 of yacc.c */ -#line 1088 "./util/configparser.y" + case 338: +#line 1448 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + OUTYY(("P(server_ignore_cd_flag:%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->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4013 "util/configparser.c" /* yacc.c:1646 */ break; - case 239: -/* Line 1792 of yacc.c */ -#line 1097 "./util/configparser.y" + case 339: +#line 1457 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); - free(cfg_parser->cfg->val_nsec3_key_iterations); - cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[(2) - (2)].str); + OUTYY(("P(server_serve_expired:%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->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4025 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -/* Line 1792 of yacc.c */ -#line 1104 "./util/configparser.y" + case 340: +#line 1466 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); +#ifdef HAVE_SSL + else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); + if(fake_dsa) + log_warn("test option fake_dsa is enabled"); +#endif + free((yyvsp[0].str)); } +#line 4041 "util/configparser.c" /* yacc.c:1646 */ break; - case 241: -/* Line 1792 of yacc.c */ -#line 1113 "./util/configparser.y" + case 341: +#line 1479 "./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) + yyerror("expected yes or no."); +#ifdef HAVE_SSL + else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); + if(fake_sha1) + log_warn("test option fake_sha1 is enabled"); +#endif + free((yyvsp[0].str)); + } +#line 4057 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 342: +#line 1492 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4069 "util/configparser.c" /* yacc.c:1646 */ break; - case 242: -/* Line 1792 of yacc.c */ -#line 1122 "./util/configparser.y" + case 343: +#line 1501 "./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 4079 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 344: +#line 1508 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4091 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -/* Line 1792 of yacc.c */ -#line 1131 "./util/configparser.y" + case 345: +#line 1517 "./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) + yyerror("number expected"); + else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4103 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 346: +#line 1526 "./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) + yyerror("number expected"); + else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4115 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 347: +#line 1535 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_permit_small_holddown:%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->permit_small_holddown = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4128 "util/configparser.c" /* yacc.c:1646 */ break; - case 244: -/* Line 1792 of yacc.c */ -#line 1140 "./util/configparser.y" + case 348: +#line 1544 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4139 "util/configparser.c" /* yacc.c:1646 */ break; - case 245: -/* Line 1792 of yacc.c */ -#line 1148 "./util/configparser.y" + case 349: +#line 1552 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4155 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -/* Line 1792 of yacc.c */ -#line 1161 "./util/configparser.y" + case 350: +#line 1565 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4166 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -/* Line 1792 of yacc.c */ -#line 1169 "./util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && - strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && - strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 - && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 && - strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0) + case 351: +#line 1573 "./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 && + strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && + strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 + && strcmp((yyvsp[0].str), "typetransparent")!=0 + && strcmp((yyvsp[0].str), "always_transparent")!=0 + && strcmp((yyvsp[0].str), "always_refuse")!=0 + && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "noview")!=0 + && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny " - "or nodefault"); - else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); + else if(strcmp((yyvsp[0].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[(2) - (3)].str))) + local_zones_nodefault, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[0].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } +#line 4198 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -/* Line 1792 of yacc.c */ -#line 1193 "./util/configparser.y" + case 352: +#line 1602 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) + 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 4208 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -/* Line 1792 of yacc.c */ -#line 1200 "./util/configparser.y" + case 353: +#line 1609 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); - ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); + ptr = cfg_ptr_reverse((yyvsp[0].str)); + free((yyvsp[0].str)); if(ptr) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_data, ptr)) @@ -3602,525 +4222,1345 @@ yyparse () yyerror("local-data-ptr could not be reversed"); } } +#line 4226 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -/* Line 1792 of yacc.c */ -#line 1215 "./util/configparser.y" + case 354: +#line 1624 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_minimal_responses:%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->minimal_responses = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4239 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -/* Line 1792 of yacc.c */ -#line 1225 "./util/configparser.y" + case 355: +#line 1634 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_rrset_roundrobin:%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->rrset_roundrobin = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4252 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -/* Line 1792 of yacc.c */ -#line 1235 "./util/configparser.y" + case 356: +#line 1644 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + 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 4262 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -/* Line 1792 of yacc.c */ -#line 1242 "./util/configparser.y" + case 357: +#line 1651 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); - cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } +#line 4272 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -/* Line 1792 of yacc.c */ -#line 1249 "./util/configparser.y" + case 358: +#line 1658 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_dns64_synthall:%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->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4284 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -/* Line 1792 of yacc.c */ -#line 1258 "./util/configparser.y" + case 359: +#line 1667 "./util/configparser.y" /* yacc.c:1646 */ + { + char* p, *s = (yyvsp[0].str); + OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); + while((p=strsep(&s, " \t\n")) != NULL) { + if(*p) { + if(!config_add_tag(cfg_parser->cfg, p)) + yyerror("could not define-tag, " + "out of memory"); + } + } + free((yyvsp[0].str)); + } +#line 4301 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 360: +#line 1681 "./util/configparser.y" /* yacc.c:1646 */ + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + &len); + free((yyvsp[0].str)); + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str))); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->local_zone_tags, + (yyvsp[-1].str), bitlist, len)) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + } + } + } +#line 4323 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 361: +#line 1700 "./util/configparser.y" /* yacc.c:1646 */ + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + &len); + free((yyvsp[0].str)); + OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + (yyvsp[-1].str), bitlist, len)) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + } + } + } +#line 4345 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 362: +#line 1719 "./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, + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 4360 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 363: +#line 1731 "./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, + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 4375 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 364: +#line 1743 "./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, + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 4390 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 365: +#line 1755 "./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, + (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 4404 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 366: +#line 1766 "./util/configparser.y" /* yacc.c:1646 */ + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + &len); + free((yyvsp[0].str)); + OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str))); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->respip_tags, + (yyvsp[-1].str), bitlist, len)) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + } + } + } +#line 4426 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 367: +#line 1785 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ratelimit = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4438 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -/* Line 1792 of yacc.c */ -#line 1267 "./util/configparser.y" + case 368: +#line 1795 "./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) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4450 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 369: +#line 1804 "./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 4461 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 370: +#line 1812 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size)) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4472 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -/* Line 1792 of yacc.c */ -#line 1275 "./util/configparser.y" + case 371: +#line 1820 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[0].str)); + } +#line 4488 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 372: +#line 1833 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else { - cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str)); if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4504 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -/* Line 1792 of yacc.c */ -#line 1288 "./util/configparser.y" + case 373: +#line 1846 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { + 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) { yyerror("number expected"); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "ratelimit-for-domain"); } } +#line 4520 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -/* Line 1792 of yacc.c */ -#line 1301 "./util/configparser.y" + case 374: +#line 1859 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { + 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) { yyerror("number expected"); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "ratelimit-below-domain"); } } +#line 4536 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -/* Line 1792 of yacc.c */ -#line 1314 "./util/configparser.y" + case 375: +#line 1872 "./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) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4548 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 376: +#line 1881 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4560 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -/* Line 1792 of yacc.c */ -#line 1323 "./util/configparser.y" + case 377: +#line 1890 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_low_rtt:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->low_rtt = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4572 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 378: +#line 1899 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_low_rtt_permil:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->low_rtt_permil = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4584 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 379: +#line 1908 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(server_qname_minimisation:%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->qname_minimisation = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4597 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -/* Line 1792 of yacc.c */ -#line 1333 "./util/configparser.y" + case 380: +#line 1918 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_qname_minimisation_strict:%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->qname_minimisation_strict = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4610 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 381: +#line 1928 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_enabled:%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->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4626 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 382: +#line 1941 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_ignore_bogus:%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->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4642 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 383: +#line 1954 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->ipsecmod_hook); + cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4656 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 384: +#line 1965 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4672 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 385: +#line 1978 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) + yyerror("out of memory"); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4686 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 386: +#line 1989 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_strict:%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->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } +#line 4702 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 387: +#line 2002 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " "for one stub-zone"); free(cfg_parser->cfg->stubs->name); - cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->stubs->name = (yyvsp[0].str); } +#line 4715 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -/* Line 1792 of yacc.c */ -#line 1343 "./util/configparser.y" + case 388: +#line 2012 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) + 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 4725 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -/* Line 1792 of yacc.c */ -#line 1350 "./util/configparser.y" + case 389: +#line 2019 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) + 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 4735 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -/* Line 1792 of yacc.c */ -#line 1357 "./util/configparser.y" + case 390: +#line 2026 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(stub-first:%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->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4747 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -/* Line 1792 of yacc.c */ -#line 1366 "./util/configparser.y" + case 391: +#line 2035 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->ssl_upstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4760 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 392: +#line 2045 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(stub-prime:%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->stubs->isprime = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4773 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -/* Line 1792 of yacc.c */ -#line 1376 "./util/configparser.y" + case 393: +#line 2055 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " "name for one forward-zone"); free(cfg_parser->cfg->forwards->name); - cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->forwards->name = (yyvsp[0].str); } +#line 4786 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -/* Line 1792 of yacc.c */ -#line 1386 "./util/configparser.y" + case 394: +#line 2065 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) + 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 4796 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -/* Line 1792 of yacc.c */ -#line 1393 "./util/configparser.y" + case 395: +#line 2072 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) + 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 4806 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -/* Line 1792 of yacc.c */ -#line 1400 "./util/configparser.y" + case 396: +#line 2079 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(forward-first:%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->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4818 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -/* Line 1792 of yacc.c */ -#line 1409 "./util/configparser.y" + case 397: +#line 2088 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->ssl_upstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4831 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 398: +#line 2098 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->auths->name) + yyerror("auth name override, there must be one name " + "for one auth-zone"); + free(cfg_parser->cfg->auths->name); + cfg_parser->cfg->auths->name = (yyvsp[0].str); + } +#line 4844 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 399: +#line 2108 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->auths->zonefile); + cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); + } +#line 4854 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 400: +#line 2115 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(master:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 4864 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 401: +#line 2122 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(url:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 4874 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 402: +#line 2129 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 4885 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 403: +#line 2137 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(for-downstream:%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->auths->for_downstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4898 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 404: +#line 2147 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(for-upstream:%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->auths->for_upstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4911 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 405: +#line 2157 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(fallback-enabled:%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->auths->fallback_enabled = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4924 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 406: +#line 2167 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = (yyvsp[0].str); + } +#line 4937 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 407: +#line 2177 "./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 && + strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && + strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 + && strcmp((yyvsp[0].str), "typetransparent")!=0 + && strcmp((yyvsp[0].str), "always_transparent")!=0 + && strcmp((yyvsp[0].str), "always_refuse")!=0 + && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "noview")!=0 + && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); + else if(strcmp((yyvsp[0].str), "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, (yyvsp[-1].str))) + fatal_exit("out of memory adding local-zone"); + free((yyvsp[0].str)); + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding local-zone"); + } + } +#line 4970 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 408: +#line 2207 "./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)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding per-view " + "response-ip action"); + } +#line 4983 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 409: +#line 2217 "./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 4994 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 410: +#line 2225 "./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))) { + fatal_exit("out of memory adding local-data"); + free((yyvsp[0].str)); + } + } +#line 5006 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 411: +#line 2234 "./util/configparser.y" /* yacc.c:1646 */ + { + char* ptr; + OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); + ptr = cfg_ptr_reverse((yyvsp[0].str)); + free((yyvsp[0].str)); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } +#line 5024 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 412: +#line 2249 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5036 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 413: +#line 2258 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } +#line 5044 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -/* Line 1792 of yacc.c */ -#line 1420 "./util/configparser.y" + case 424: +#line 2269 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(control_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->remote_control_enable = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5057 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -/* Line 1792 of yacc.c */ -#line 1430 "./util/configparser.y" + case 425: +#line 2279 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); - else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5069 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -/* Line 1792 of yacc.c */ -#line 1439 "./util/configparser.y" + case 426: +#line 2288 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) + OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } +#line 5079 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -/* Line 1792 of yacc.c */ -#line 1446 "./util/configparser.y" + case 427: +#line 2295 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_use_cert = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); + cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5089 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -/* Line 1792 of yacc.c */ -#line 1456 "./util/configparser.y" + case 428: +#line 2302 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->server_key_file = (yyvsp[0].str); } +#line 5099 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -/* Line 1792 of yacc.c */ -#line 1463 "./util/configparser.y" + case 429: +#line 2309 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } +#line 5109 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -/* Line 1792 of yacc.c */ -#line 1470 "./util/configparser.y" + case 430: +#line 2316 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->control_key_file = (yyvsp[0].str); } +#line 5119 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -/* Line 1792 of yacc.c */ -#line 1477 "./util/configparser.y" + case 431: +#line 2323 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } +#line 5129 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -/* Line 1792 of yacc.c */ -#line 1484 "./util/configparser.y" + case 432: +#line 2330 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } +#line 5137 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -/* Line 1792 of yacc.c */ -#line 1501 "./util/configparser.y" + case 447: +#line 2347 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } +#line 5148 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -/* Line 1792 of yacc.c */ -#line 1509 "./util/configparser.y" + case 448: +#line 2355 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } +#line 5158 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -/* Line 1792 of yacc.c */ -#line 1516 "./util/configparser.y" + case 449: +#line 2362 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } +#line 5169 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -/* Line 1792 of yacc.c */ -#line 1524 "./util/configparser.y" + case 450: +#line 2370 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } +#line 5180 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -/* Line 1792 of yacc.c */ -#line 1532 "./util/configparser.y" + case 451: +#line 2378 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); - cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } +#line 5190 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -/* Line 1792 of yacc.c */ -#line 1539 "./util/configparser.y" + case 452: +#line 2385 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); - cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } +#line 5200 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -/* Line 1792 of yacc.c */ -#line 1546 "./util/configparser.y" + case 453: +#line 2392 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_resolver_query_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5212 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -/* Line 1792 of yacc.c */ -#line 1555 "./util/configparser.y" + case 454: +#line 2401 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_resolver_response_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5224 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -/* Line 1792 of yacc.c */ -#line 1564 "./util/configparser.y" + case 455: +#line 2410 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_client_query_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5236 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -/* Line 1792 of yacc.c */ -#line 1573 "./util/configparser.y" + case 456: +#line 2419 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_client_response_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5248 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -/* Line 1792 of yacc.c */ -#line 1582 "./util/configparser.y" + case 457: +#line 2428 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_forwarder_query_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5260 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -/* Line 1792 of yacc.c */ -#line 1591 "./util/configparser.y" + case 458: +#line 2437 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_log_forwarder_response_messages = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); } +#line 5272 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -/* Line 1792 of yacc.c */ -#line 1600 "./util/configparser.y" + case 459: +#line 2446 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } +#line 5280 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -/* Line 1792 of yacc.c */ -#line 1609 "./util/configparser.y" + case 463: +#line 2455 "./util/configparser.y" /* yacc.c:1646 */ { - OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); - cfg_parser->cfg->python_script = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->python_script = (yyvsp[0].str); } +#line 5290 "util/configparser.c" /* yacc.c:1646 */ break; + case 464: +#line 2461 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->disable_dnssec_lame_check = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5303 "util/configparser.c" /* yacc.c:1646 */ + break; -/* Line 1792 of yacc.c */ -#line 4124 "util/configparser.c" + case 465: +#line 2471 "./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 5313 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 466: +#line 2478 "./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)); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, + (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding response-ip"); + } +#line 5325 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 467: +#line 2487 "./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 5336 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 468: +#line 2495 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(dnscrypt:)\n")); + OUTYY(("\nP(dnscrypt:)\n")); + } +#line 5345 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 481: +#line 2512 "./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); + free((yyvsp[0].str)); + } +#line 5357 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 482: +#line 2522 "./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 5370 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 483: +#line 2532 "./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 5380 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 484: +#line 2539 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) + log_warn("dnscrypt-provider-cert %s is a duplicate", (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 5392 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 485: +#line 2548 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) + fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); + } +#line 5402 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 486: +#line 2555 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) + log_warn("dnscrypt-secret-key: %s is a duplicate", (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 5414 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 487: +#line 2564 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free((yyvsp[0].str)); + } +#line 5425 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 488: +#line 2572 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[0].str)); + } +#line 5441 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 489: +#line 2585 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free((yyvsp[0].str)); + } +#line 5452 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 490: +#line 2593 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[0].str)); + } +#line 5468 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 491: +#line 2606 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(cachedb:)\n")); + } +#line 5476 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 499: +#line 2616 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->cachedb_backend) + yyerror("cachedb backend override, there must be one " + "backend"); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + #endif + } +#line 5493 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 500: +#line 2630 "./util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->cachedb_secret) + yyerror("cachedb secret-seed override, there must be " + "only one secret"); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 5511 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 501: +#line 2645 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 5526 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 502: +#line 2657 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); + port = atoi((yyvsp[0].str)); + if(port == 0 || port < 0 || port > 65535) + yyerror("valid redis server port number expected"); + else cfg_parser->cfg->redis_server_port = port; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 5544 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 503: +#line 2672 "./util/configparser.y" /* yacc.c:1646 */ + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free((yyvsp[0].str)); + } +#line 5560 "util/configparser.c" /* yacc.c:1646 */ + break; + + +#line 5564 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4142,7 +5582,7 @@ yyparse () *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -4157,9 +5597,9 @@ yyparse () goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -4210,20 +5650,20 @@ yyparse () if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -4242,7 +5682,7 @@ yyparse () if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -4255,29 +5695,29 @@ yyparse () | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -4328,14 +5768,14 @@ yyparse () yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -4346,13 +5786,25 @@ yyparse () if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -/* Line 2055 of yacc.c */ -#line 1614 "./util/configparser.y" +#line 2684 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ +static void +validate_respip_action(const char* action) +{ + if(strcmp(action, "deny")!=0 && + strcmp(action, "redirect")!=0 && + strcmp(action, "inform")!=0 && + strcmp(action, "inform_deny")!=0 && + strcmp(action, "always_transparent")!=0 && + strcmp(action, "always_refuse")!=0 && + strcmp(action, "always_nxdomain")!=0) + { + yyerror("response-ip action: expected deny, redirect, " + "inform, inform_deny, always_transparent, " + "always_refuse or always_nxdomain"); + } +} diff --git a/external/unbound/util/configparser.h b/external/unbound/util/configparser.h index 53e5adc..0eabf8d 100644 --- a/external/unbound/util/configparser.h +++ b/external/unbound/util/configparser.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,173 +40,252 @@ extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_DO_IP4 = 272, - VAR_DO_IP6 = 273, - VAR_DO_UDP = 274, - VAR_DO_TCP = 275, - VAR_CHROOT = 276, - VAR_USERNAME = 277, - VAR_DIRECTORY = 278, - VAR_LOGFILE = 279, - VAR_PIDFILE = 280, - VAR_MSG_CACHE_SIZE = 281, - VAR_MSG_CACHE_SLABS = 282, - VAR_NUM_QUERIES_PER_THREAD = 283, - VAR_RRSET_CACHE_SIZE = 284, - VAR_RRSET_CACHE_SLABS = 285, - VAR_OUTGOING_NUM_TCP = 286, - VAR_INFRA_HOST_TTL = 287, - VAR_INFRA_LAME_TTL = 288, - VAR_INFRA_CACHE_SLABS = 289, - VAR_INFRA_CACHE_NUMHOSTS = 290, - VAR_INFRA_CACHE_LAME_SIZE = 291, - VAR_NAME = 292, - VAR_STUB_ZONE = 293, - VAR_STUB_HOST = 294, - VAR_STUB_ADDR = 295, - VAR_TARGET_FETCH_POLICY = 296, - VAR_HARDEN_SHORT_BUFSIZE = 297, - VAR_HARDEN_LARGE_QUERIES = 298, - VAR_FORWARD_ZONE = 299, - VAR_FORWARD_HOST = 300, - VAR_FORWARD_ADDR = 301, - VAR_DO_NOT_QUERY_ADDRESS = 302, - VAR_HIDE_IDENTITY = 303, - VAR_HIDE_VERSION = 304, - VAR_IDENTITY = 305, - VAR_VERSION = 306, - VAR_HARDEN_GLUE = 307, - VAR_MODULE_CONF = 308, - VAR_TRUST_ANCHOR_FILE = 309, - VAR_TRUST_ANCHOR = 310, - VAR_VAL_OVERRIDE_DATE = 311, - VAR_BOGUS_TTL = 312, - VAR_VAL_CLEAN_ADDITIONAL = 313, - VAR_VAL_PERMISSIVE_MODE = 314, - VAR_INCOMING_NUM_TCP = 315, - VAR_MSG_BUFFER_SIZE = 316, - VAR_KEY_CACHE_SIZE = 317, - VAR_KEY_CACHE_SLABS = 318, - VAR_TRUSTED_KEYS_FILE = 319, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, - VAR_USE_SYSLOG = 321, - VAR_OUTGOING_INTERFACE = 322, - VAR_ROOT_HINTS = 323, - VAR_DO_NOT_QUERY_LOCALHOST = 324, - VAR_CACHE_MAX_TTL = 325, - VAR_HARDEN_DNSSEC_STRIPPED = 326, - VAR_ACCESS_CONTROL = 327, - VAR_LOCAL_ZONE = 328, - VAR_LOCAL_DATA = 329, - VAR_INTERFACE_AUTOMATIC = 330, - VAR_STATISTICS_INTERVAL = 331, - VAR_DO_DAEMONIZE = 332, - VAR_USE_CAPS_FOR_ID = 333, - VAR_STATISTICS_CUMULATIVE = 334, - VAR_OUTGOING_PORT_PERMIT = 335, - VAR_OUTGOING_PORT_AVOID = 336, - VAR_DLV_ANCHOR_FILE = 337, - VAR_DLV_ANCHOR = 338, - VAR_NEG_CACHE_SIZE = 339, - VAR_HARDEN_REFERRAL_PATH = 340, - VAR_PRIVATE_ADDRESS = 341, - VAR_PRIVATE_DOMAIN = 342, - VAR_REMOTE_CONTROL = 343, - VAR_CONTROL_ENABLE = 344, - VAR_CONTROL_INTERFACE = 345, - VAR_CONTROL_PORT = 346, - VAR_SERVER_KEY_FILE = 347, - VAR_SERVER_CERT_FILE = 348, - VAR_CONTROL_KEY_FILE = 349, - VAR_CONTROL_CERT_FILE = 350, - VAR_CONTROL_USE_CERT = 351, - VAR_EXTENDED_STATISTICS = 352, - VAR_LOCAL_DATA_PTR = 353, - VAR_JOSTLE_TIMEOUT = 354, - VAR_STUB_PRIME = 355, - VAR_UNWANTED_REPLY_THRESHOLD = 356, - VAR_LOG_TIME_ASCII = 357, - VAR_DOMAIN_INSECURE = 358, - VAR_PYTHON = 359, - VAR_PYTHON_SCRIPT = 360, - VAR_VAL_SIG_SKEW_MIN = 361, - VAR_VAL_SIG_SKEW_MAX = 362, - VAR_CACHE_MIN_TTL = 363, - VAR_VAL_LOG_LEVEL = 364, - VAR_AUTO_TRUST_ANCHOR_FILE = 365, - VAR_KEEP_MISSING = 366, - VAR_ADD_HOLDDOWN = 367, - VAR_DEL_HOLDDOWN = 368, - VAR_SO_RCVBUF = 369, - VAR_EDNS_BUFFER_SIZE = 370, - VAR_PREFETCH = 371, - VAR_PREFETCH_KEY = 372, - VAR_SO_SNDBUF = 373, - VAR_SO_REUSEPORT = 374, - VAR_HARDEN_BELOW_NXDOMAIN = 375, - VAR_IGNORE_CD_FLAG = 376, - VAR_LOG_QUERIES = 377, - VAR_TCP_UPSTREAM = 378, - VAR_SSL_UPSTREAM = 379, - VAR_SSL_SERVICE_KEY = 380, - VAR_SSL_SERVICE_PEM = 381, - VAR_SSL_PORT = 382, - VAR_FORWARD_FIRST = 383, - VAR_STUB_FIRST = 384, - VAR_MINIMAL_RESPONSES = 385, - VAR_RRSET_ROUNDROBIN = 386, - VAR_MAX_UDP_SIZE = 387, - VAR_DELAY_CLOSE = 388, - VAR_UNBLOCK_LAN_ZONES = 389, - VAR_INFRA_CACHE_MIN_RTT = 390, - VAR_DNS64_PREFIX = 391, - VAR_DNS64_SYNTHALL = 392, - VAR_DNSTAP = 393, - VAR_DNSTAP_ENABLE = 394, - VAR_DNSTAP_SOCKET_PATH = 395, - VAR_DNSTAP_SEND_IDENTITY = 396, - VAR_DNSTAP_SEND_VERSION = 397, - VAR_DNSTAP_IDENTITY = 398, - VAR_DNSTAP_VERSION = 399, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405, - VAR_HARDEN_ALGO_DOWNGRADE = 406, - VAR_IP_TRANSPARENT = 407, - VAR_RATELIMIT = 408, - VAR_RATELIMIT_SLABS = 409, - VAR_RATELIMIT_SIZE = 410, - VAR_RATELIMIT_FOR_DOMAIN = 411, - VAR_RATELIMIT_BELOW_DOMAIN = 412, - VAR_RATELIMIT_FACTOR = 413, - VAR_CAPS_WHITELIST = 414, - VAR_CACHE_MAX_NEGATIVE_TTL = 415, - VAR_PERMIT_SMALL_HOLDDOWN = 416, - VAR_QNAME_MINIMISATION = 417 - }; + enum yytokentype + { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_SERVER = 266, + VAR_VERBOSITY = 267, + VAR_NUM_THREADS = 268, + VAR_PORT = 269, + VAR_OUTGOING_RANGE = 270, + VAR_INTERFACE = 271, + VAR_DO_IP4 = 272, + VAR_DO_IP6 = 273, + VAR_PREFER_IP6 = 274, + VAR_DO_UDP = 275, + VAR_DO_TCP = 276, + VAR_TCP_MSS = 277, + VAR_OUTGOING_TCP_MSS = 278, + VAR_CHROOT = 279, + VAR_USERNAME = 280, + VAR_DIRECTORY = 281, + VAR_LOGFILE = 282, + VAR_PIDFILE = 283, + VAR_MSG_CACHE_SIZE = 284, + VAR_MSG_CACHE_SLABS = 285, + VAR_NUM_QUERIES_PER_THREAD = 286, + VAR_RRSET_CACHE_SIZE = 287, + VAR_RRSET_CACHE_SLABS = 288, + VAR_OUTGOING_NUM_TCP = 289, + VAR_INFRA_HOST_TTL = 290, + VAR_INFRA_LAME_TTL = 291, + VAR_INFRA_CACHE_SLABS = 292, + VAR_INFRA_CACHE_NUMHOSTS = 293, + VAR_INFRA_CACHE_LAME_SIZE = 294, + VAR_NAME = 295, + VAR_STUB_ZONE = 296, + VAR_STUB_HOST = 297, + VAR_STUB_ADDR = 298, + VAR_TARGET_FETCH_POLICY = 299, + VAR_HARDEN_SHORT_BUFSIZE = 300, + VAR_HARDEN_LARGE_QUERIES = 301, + VAR_FORWARD_ZONE = 302, + VAR_FORWARD_HOST = 303, + VAR_FORWARD_ADDR = 304, + VAR_DO_NOT_QUERY_ADDRESS = 305, + VAR_HIDE_IDENTITY = 306, + VAR_HIDE_VERSION = 307, + VAR_IDENTITY = 308, + VAR_VERSION = 309, + VAR_HARDEN_GLUE = 310, + VAR_MODULE_CONF = 311, + VAR_TRUST_ANCHOR_FILE = 312, + VAR_TRUST_ANCHOR = 313, + VAR_VAL_OVERRIDE_DATE = 314, + VAR_BOGUS_TTL = 315, + VAR_VAL_CLEAN_ADDITIONAL = 316, + VAR_VAL_PERMISSIVE_MODE = 317, + VAR_INCOMING_NUM_TCP = 318, + VAR_MSG_BUFFER_SIZE = 319, + VAR_KEY_CACHE_SIZE = 320, + VAR_KEY_CACHE_SLABS = 321, + VAR_TRUSTED_KEYS_FILE = 322, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 323, + VAR_USE_SYSLOG = 324, + VAR_OUTGOING_INTERFACE = 325, + VAR_ROOT_HINTS = 326, + VAR_DO_NOT_QUERY_LOCALHOST = 327, + VAR_CACHE_MAX_TTL = 328, + VAR_HARDEN_DNSSEC_STRIPPED = 329, + VAR_ACCESS_CONTROL = 330, + VAR_LOCAL_ZONE = 331, + VAR_LOCAL_DATA = 332, + VAR_INTERFACE_AUTOMATIC = 333, + VAR_STATISTICS_INTERVAL = 334, + VAR_DO_DAEMONIZE = 335, + VAR_USE_CAPS_FOR_ID = 336, + VAR_STATISTICS_CUMULATIVE = 337, + VAR_OUTGOING_PORT_PERMIT = 338, + VAR_OUTGOING_PORT_AVOID = 339, + VAR_DLV_ANCHOR_FILE = 340, + VAR_DLV_ANCHOR = 341, + VAR_NEG_CACHE_SIZE = 342, + VAR_HARDEN_REFERRAL_PATH = 343, + VAR_PRIVATE_ADDRESS = 344, + VAR_PRIVATE_DOMAIN = 345, + VAR_REMOTE_CONTROL = 346, + VAR_CONTROL_ENABLE = 347, + VAR_CONTROL_INTERFACE = 348, + VAR_CONTROL_PORT = 349, + VAR_SERVER_KEY_FILE = 350, + VAR_SERVER_CERT_FILE = 351, + VAR_CONTROL_KEY_FILE = 352, + VAR_CONTROL_CERT_FILE = 353, + VAR_CONTROL_USE_CERT = 354, + VAR_EXTENDED_STATISTICS = 355, + VAR_LOCAL_DATA_PTR = 356, + VAR_JOSTLE_TIMEOUT = 357, + VAR_STUB_PRIME = 358, + VAR_UNWANTED_REPLY_THRESHOLD = 359, + VAR_LOG_TIME_ASCII = 360, + VAR_DOMAIN_INSECURE = 361, + VAR_PYTHON = 362, + VAR_PYTHON_SCRIPT = 363, + VAR_VAL_SIG_SKEW_MIN = 364, + VAR_VAL_SIG_SKEW_MAX = 365, + VAR_CACHE_MIN_TTL = 366, + VAR_VAL_LOG_LEVEL = 367, + VAR_AUTO_TRUST_ANCHOR_FILE = 368, + VAR_KEEP_MISSING = 369, + VAR_ADD_HOLDDOWN = 370, + VAR_DEL_HOLDDOWN = 371, + VAR_SO_RCVBUF = 372, + VAR_EDNS_BUFFER_SIZE = 373, + VAR_PREFETCH = 374, + VAR_PREFETCH_KEY = 375, + VAR_SO_SNDBUF = 376, + VAR_SO_REUSEPORT = 377, + VAR_HARDEN_BELOW_NXDOMAIN = 378, + VAR_IGNORE_CD_FLAG = 379, + VAR_LOG_QUERIES = 380, + VAR_LOG_REPLIES = 381, + VAR_TCP_UPSTREAM = 382, + VAR_SSL_UPSTREAM = 383, + VAR_SSL_SERVICE_KEY = 384, + VAR_SSL_SERVICE_PEM = 385, + VAR_SSL_PORT = 386, + VAR_FORWARD_FIRST = 387, + VAR_STUB_SSL_UPSTREAM = 388, + VAR_FORWARD_SSL_UPSTREAM = 389, + VAR_TLS_CERT_BUNDLE = 390, + VAR_STUB_FIRST = 391, + VAR_MINIMAL_RESPONSES = 392, + VAR_RRSET_ROUNDROBIN = 393, + VAR_MAX_UDP_SIZE = 394, + VAR_DELAY_CLOSE = 395, + VAR_UNBLOCK_LAN_ZONES = 396, + VAR_INSECURE_LAN_ZONES = 397, + VAR_INFRA_CACHE_MIN_RTT = 398, + VAR_DNS64_PREFIX = 399, + VAR_DNS64_SYNTHALL = 400, + VAR_DNSTAP = 401, + VAR_DNSTAP_ENABLE = 402, + VAR_DNSTAP_SOCKET_PATH = 403, + VAR_DNSTAP_SEND_IDENTITY = 404, + VAR_DNSTAP_SEND_VERSION = 405, + VAR_DNSTAP_IDENTITY = 406, + VAR_DNSTAP_VERSION = 407, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 408, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 409, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 410, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 411, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 412, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 413, + VAR_RESPONSE_IP_TAG = 414, + VAR_RESPONSE_IP = 415, + VAR_RESPONSE_IP_DATA = 416, + VAR_HARDEN_ALGO_DOWNGRADE = 417, + VAR_IP_TRANSPARENT = 418, + VAR_DISABLE_DNSSEC_LAME_CHECK = 419, + VAR_IP_RATELIMIT = 420, + VAR_IP_RATELIMIT_SLABS = 421, + VAR_IP_RATELIMIT_SIZE = 422, + VAR_RATELIMIT = 423, + VAR_RATELIMIT_SLABS = 424, + VAR_RATELIMIT_SIZE = 425, + VAR_RATELIMIT_FOR_DOMAIN = 426, + VAR_RATELIMIT_BELOW_DOMAIN = 427, + VAR_IP_RATELIMIT_FACTOR = 428, + VAR_RATELIMIT_FACTOR = 429, + VAR_SEND_CLIENT_SUBNET = 430, + VAR_CLIENT_SUBNET_ZONE = 431, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 432, + VAR_CLIENT_SUBNET_OPCODE = 433, + VAR_MAX_CLIENT_SUBNET_IPV4 = 434, + VAR_MAX_CLIENT_SUBNET_IPV6 = 435, + VAR_CAPS_WHITELIST = 436, + VAR_CACHE_MAX_NEGATIVE_TTL = 437, + VAR_PERMIT_SMALL_HOLDDOWN = 438, + VAR_QNAME_MINIMISATION = 439, + VAR_QNAME_MINIMISATION_STRICT = 440, + VAR_IP_FREEBIND = 441, + VAR_DEFINE_TAG = 442, + VAR_LOCAL_ZONE_TAG = 443, + VAR_ACCESS_CONTROL_TAG = 444, + VAR_LOCAL_ZONE_OVERRIDE = 445, + VAR_ACCESS_CONTROL_TAG_ACTION = 446, + VAR_ACCESS_CONTROL_TAG_DATA = 447, + VAR_VIEW = 448, + VAR_ACCESS_CONTROL_VIEW = 449, + VAR_VIEW_FIRST = 450, + VAR_SERVE_EXPIRED = 451, + VAR_FAKE_DSA = 452, + VAR_FAKE_SHA1 = 453, + VAR_LOG_IDENTITY = 454, + VAR_HIDE_TRUSTANCHOR = 455, + VAR_TRUST_ANCHOR_SIGNALING = 456, + VAR_AGGRESSIVE_NSEC = 457, + VAR_USE_SYSTEMD = 458, + VAR_SHM_ENABLE = 459, + VAR_SHM_KEY = 460, + VAR_ROOT_KEY_SENTINEL = 461, + VAR_DNSCRYPT = 462, + VAR_DNSCRYPT_ENABLE = 463, + VAR_DNSCRYPT_PORT = 464, + VAR_DNSCRYPT_PROVIDER = 465, + VAR_DNSCRYPT_SECRET_KEY = 466, + VAR_DNSCRYPT_PROVIDER_CERT = 467, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 468, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 469, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 470, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 471, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 472, + VAR_IPSECMOD_ENABLED = 473, + VAR_IPSECMOD_HOOK = 474, + VAR_IPSECMOD_IGNORE_BOGUS = 475, + VAR_IPSECMOD_MAX_TTL = 476, + VAR_IPSECMOD_WHITELIST = 477, + VAR_IPSECMOD_STRICT = 478, + VAR_CACHEDB = 479, + VAR_CACHEDB_BACKEND = 480, + VAR_CACHEDB_SECRETSEED = 481, + VAR_CACHEDB_REDISHOST = 482, + VAR_CACHEDB_REDISPORT = 483, + VAR_CACHEDB_REDISTIMEOUT = 484, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 485, + VAR_FOR_UPSTREAM = 486, + VAR_AUTH_ZONE = 487, + VAR_ZONEFILE = 488, + VAR_MASTER = 489, + VAR_URL = 490, + VAR_FOR_DOWNSTREAM = 491, + VAR_FALLBACK_ENABLED = 492, + VAR_TLS_ADDITIONAL_PORT = 493, + VAR_LOW_RTT = 494, + VAR_LOW_RTT_PERMIL = 495, + VAR_ALLOW_NOTIFY = 496, + VAR_TLS_WIN_CERT = 497 + }; #endif /* Tokens. */ #define SPACE 258 @@ -225,184 +304,251 @@ extern int yydebug; #define VAR_INTERFACE 271 #define VAR_DO_IP4 272 #define VAR_DO_IP6 273 -#define VAR_DO_UDP 274 -#define VAR_DO_TCP 275 -#define VAR_CHROOT 276 -#define VAR_USERNAME 277 -#define VAR_DIRECTORY 278 -#define VAR_LOGFILE 279 -#define VAR_PIDFILE 280 -#define VAR_MSG_CACHE_SIZE 281 -#define VAR_MSG_CACHE_SLABS 282 -#define VAR_NUM_QUERIES_PER_THREAD 283 -#define VAR_RRSET_CACHE_SIZE 284 -#define VAR_RRSET_CACHE_SLABS 285 -#define VAR_OUTGOING_NUM_TCP 286 -#define VAR_INFRA_HOST_TTL 287 -#define VAR_INFRA_LAME_TTL 288 -#define VAR_INFRA_CACHE_SLABS 289 -#define VAR_INFRA_CACHE_NUMHOSTS 290 -#define VAR_INFRA_CACHE_LAME_SIZE 291 -#define VAR_NAME 292 -#define VAR_STUB_ZONE 293 -#define VAR_STUB_HOST 294 -#define VAR_STUB_ADDR 295 -#define VAR_TARGET_FETCH_POLICY 296 -#define VAR_HARDEN_SHORT_BUFSIZE 297 -#define VAR_HARDEN_LARGE_QUERIES 298 -#define VAR_FORWARD_ZONE 299 -#define VAR_FORWARD_HOST 300 -#define VAR_FORWARD_ADDR 301 -#define VAR_DO_NOT_QUERY_ADDRESS 302 -#define VAR_HIDE_IDENTITY 303 -#define VAR_HIDE_VERSION 304 -#define VAR_IDENTITY 305 -#define VAR_VERSION 306 -#define VAR_HARDEN_GLUE 307 -#define VAR_MODULE_CONF 308 -#define VAR_TRUST_ANCHOR_FILE 309 -#define VAR_TRUST_ANCHOR 310 -#define VAR_VAL_OVERRIDE_DATE 311 -#define VAR_BOGUS_TTL 312 -#define VAR_VAL_CLEAN_ADDITIONAL 313 -#define VAR_VAL_PERMISSIVE_MODE 314 -#define VAR_INCOMING_NUM_TCP 315 -#define VAR_MSG_BUFFER_SIZE 316 -#define VAR_KEY_CACHE_SIZE 317 -#define VAR_KEY_CACHE_SLABS 318 -#define VAR_TRUSTED_KEYS_FILE 319 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 320 -#define VAR_USE_SYSLOG 321 -#define VAR_OUTGOING_INTERFACE 322 -#define VAR_ROOT_HINTS 323 -#define VAR_DO_NOT_QUERY_LOCALHOST 324 -#define VAR_CACHE_MAX_TTL 325 -#define VAR_HARDEN_DNSSEC_STRIPPED 326 -#define VAR_ACCESS_CONTROL 327 -#define VAR_LOCAL_ZONE 328 -#define VAR_LOCAL_DATA 329 -#define VAR_INTERFACE_AUTOMATIC 330 -#define VAR_STATISTICS_INTERVAL 331 -#define VAR_DO_DAEMONIZE 332 -#define VAR_USE_CAPS_FOR_ID 333 -#define VAR_STATISTICS_CUMULATIVE 334 -#define VAR_OUTGOING_PORT_PERMIT 335 -#define VAR_OUTGOING_PORT_AVOID 336 -#define VAR_DLV_ANCHOR_FILE 337 -#define VAR_DLV_ANCHOR 338 -#define VAR_NEG_CACHE_SIZE 339 -#define VAR_HARDEN_REFERRAL_PATH 340 -#define VAR_PRIVATE_ADDRESS 341 -#define VAR_PRIVATE_DOMAIN 342 -#define VAR_REMOTE_CONTROL 343 -#define VAR_CONTROL_ENABLE 344 -#define VAR_CONTROL_INTERFACE 345 -#define VAR_CONTROL_PORT 346 -#define VAR_SERVER_KEY_FILE 347 -#define VAR_SERVER_CERT_FILE 348 -#define VAR_CONTROL_KEY_FILE 349 -#define VAR_CONTROL_CERT_FILE 350 -#define VAR_CONTROL_USE_CERT 351 -#define VAR_EXTENDED_STATISTICS 352 -#define VAR_LOCAL_DATA_PTR 353 -#define VAR_JOSTLE_TIMEOUT 354 -#define VAR_STUB_PRIME 355 -#define VAR_UNWANTED_REPLY_THRESHOLD 356 -#define VAR_LOG_TIME_ASCII 357 -#define VAR_DOMAIN_INSECURE 358 -#define VAR_PYTHON 359 -#define VAR_PYTHON_SCRIPT 360 -#define VAR_VAL_SIG_SKEW_MIN 361 -#define VAR_VAL_SIG_SKEW_MAX 362 -#define VAR_CACHE_MIN_TTL 363 -#define VAR_VAL_LOG_LEVEL 364 -#define VAR_AUTO_TRUST_ANCHOR_FILE 365 -#define VAR_KEEP_MISSING 366 -#define VAR_ADD_HOLDDOWN 367 -#define VAR_DEL_HOLDDOWN 368 -#define VAR_SO_RCVBUF 369 -#define VAR_EDNS_BUFFER_SIZE 370 -#define VAR_PREFETCH 371 -#define VAR_PREFETCH_KEY 372 -#define VAR_SO_SNDBUF 373 -#define VAR_SO_REUSEPORT 374 -#define VAR_HARDEN_BELOW_NXDOMAIN 375 -#define VAR_IGNORE_CD_FLAG 376 -#define VAR_LOG_QUERIES 377 -#define VAR_TCP_UPSTREAM 378 -#define VAR_SSL_UPSTREAM 379 -#define VAR_SSL_SERVICE_KEY 380 -#define VAR_SSL_SERVICE_PEM 381 -#define VAR_SSL_PORT 382 -#define VAR_FORWARD_FIRST 383 -#define VAR_STUB_FIRST 384 -#define VAR_MINIMAL_RESPONSES 385 -#define VAR_RRSET_ROUNDROBIN 386 -#define VAR_MAX_UDP_SIZE 387 -#define VAR_DELAY_CLOSE 388 -#define VAR_UNBLOCK_LAN_ZONES 389 -#define VAR_INFRA_CACHE_MIN_RTT 390 -#define VAR_DNS64_PREFIX 391 -#define VAR_DNS64_SYNTHALL 392 -#define VAR_DNSTAP 393 -#define VAR_DNSTAP_ENABLE 394 -#define VAR_DNSTAP_SOCKET_PATH 395 -#define VAR_DNSTAP_SEND_IDENTITY 396 -#define VAR_DNSTAP_SEND_VERSION 397 -#define VAR_DNSTAP_IDENTITY 398 -#define VAR_DNSTAP_VERSION 399 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 400 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 401 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 402 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405 -#define VAR_HARDEN_ALGO_DOWNGRADE 406 -#define VAR_IP_TRANSPARENT 407 -#define VAR_RATELIMIT 408 -#define VAR_RATELIMIT_SLABS 409 -#define VAR_RATELIMIT_SIZE 410 -#define VAR_RATELIMIT_FOR_DOMAIN 411 -#define VAR_RATELIMIT_BELOW_DOMAIN 412 -#define VAR_RATELIMIT_FACTOR 413 -#define VAR_CAPS_WHITELIST 414 -#define VAR_CACHE_MAX_NEGATIVE_TTL 415 -#define VAR_PERMIT_SMALL_HOLDDOWN 416 -#define VAR_QNAME_MINIMISATION 417 - - +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_CHROOT 279 +#define VAR_USERNAME 280 +#define VAR_DIRECTORY 281 +#define VAR_LOGFILE 282 +#define VAR_PIDFILE 283 +#define VAR_MSG_CACHE_SIZE 284 +#define VAR_MSG_CACHE_SLABS 285 +#define VAR_NUM_QUERIES_PER_THREAD 286 +#define VAR_RRSET_CACHE_SIZE 287 +#define VAR_RRSET_CACHE_SLABS 288 +#define VAR_OUTGOING_NUM_TCP 289 +#define VAR_INFRA_HOST_TTL 290 +#define VAR_INFRA_LAME_TTL 291 +#define VAR_INFRA_CACHE_SLABS 292 +#define VAR_INFRA_CACHE_NUMHOSTS 293 +#define VAR_INFRA_CACHE_LAME_SIZE 294 +#define VAR_NAME 295 +#define VAR_STUB_ZONE 296 +#define VAR_STUB_HOST 297 +#define VAR_STUB_ADDR 298 +#define VAR_TARGET_FETCH_POLICY 299 +#define VAR_HARDEN_SHORT_BUFSIZE 300 +#define VAR_HARDEN_LARGE_QUERIES 301 +#define VAR_FORWARD_ZONE 302 +#define VAR_FORWARD_HOST 303 +#define VAR_FORWARD_ADDR 304 +#define VAR_DO_NOT_QUERY_ADDRESS 305 +#define VAR_HIDE_IDENTITY 306 +#define VAR_HIDE_VERSION 307 +#define VAR_IDENTITY 308 +#define VAR_VERSION 309 +#define VAR_HARDEN_GLUE 310 +#define VAR_MODULE_CONF 311 +#define VAR_TRUST_ANCHOR_FILE 312 +#define VAR_TRUST_ANCHOR 313 +#define VAR_VAL_OVERRIDE_DATE 314 +#define VAR_BOGUS_TTL 315 +#define VAR_VAL_CLEAN_ADDITIONAL 316 +#define VAR_VAL_PERMISSIVE_MODE 317 +#define VAR_INCOMING_NUM_TCP 318 +#define VAR_MSG_BUFFER_SIZE 319 +#define VAR_KEY_CACHE_SIZE 320 +#define VAR_KEY_CACHE_SLABS 321 +#define VAR_TRUSTED_KEYS_FILE 322 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 323 +#define VAR_USE_SYSLOG 324 +#define VAR_OUTGOING_INTERFACE 325 +#define VAR_ROOT_HINTS 326 +#define VAR_DO_NOT_QUERY_LOCALHOST 327 +#define VAR_CACHE_MAX_TTL 328 +#define VAR_HARDEN_DNSSEC_STRIPPED 329 +#define VAR_ACCESS_CONTROL 330 +#define VAR_LOCAL_ZONE 331 +#define VAR_LOCAL_DATA 332 +#define VAR_INTERFACE_AUTOMATIC 333 +#define VAR_STATISTICS_INTERVAL 334 +#define VAR_DO_DAEMONIZE 335 +#define VAR_USE_CAPS_FOR_ID 336 +#define VAR_STATISTICS_CUMULATIVE 337 +#define VAR_OUTGOING_PORT_PERMIT 338 +#define VAR_OUTGOING_PORT_AVOID 339 +#define VAR_DLV_ANCHOR_FILE 340 +#define VAR_DLV_ANCHOR 341 +#define VAR_NEG_CACHE_SIZE 342 +#define VAR_HARDEN_REFERRAL_PATH 343 +#define VAR_PRIVATE_ADDRESS 344 +#define VAR_PRIVATE_DOMAIN 345 +#define VAR_REMOTE_CONTROL 346 +#define VAR_CONTROL_ENABLE 347 +#define VAR_CONTROL_INTERFACE 348 +#define VAR_CONTROL_PORT 349 +#define VAR_SERVER_KEY_FILE 350 +#define VAR_SERVER_CERT_FILE 351 +#define VAR_CONTROL_KEY_FILE 352 +#define VAR_CONTROL_CERT_FILE 353 +#define VAR_CONTROL_USE_CERT 354 +#define VAR_EXTENDED_STATISTICS 355 +#define VAR_LOCAL_DATA_PTR 356 +#define VAR_JOSTLE_TIMEOUT 357 +#define VAR_STUB_PRIME 358 +#define VAR_UNWANTED_REPLY_THRESHOLD 359 +#define VAR_LOG_TIME_ASCII 360 +#define VAR_DOMAIN_INSECURE 361 +#define VAR_PYTHON 362 +#define VAR_PYTHON_SCRIPT 363 +#define VAR_VAL_SIG_SKEW_MIN 364 +#define VAR_VAL_SIG_SKEW_MAX 365 +#define VAR_CACHE_MIN_TTL 366 +#define VAR_VAL_LOG_LEVEL 367 +#define VAR_AUTO_TRUST_ANCHOR_FILE 368 +#define VAR_KEEP_MISSING 369 +#define VAR_ADD_HOLDDOWN 370 +#define VAR_DEL_HOLDDOWN 371 +#define VAR_SO_RCVBUF 372 +#define VAR_EDNS_BUFFER_SIZE 373 +#define VAR_PREFETCH 374 +#define VAR_PREFETCH_KEY 375 +#define VAR_SO_SNDBUF 376 +#define VAR_SO_REUSEPORT 377 +#define VAR_HARDEN_BELOW_NXDOMAIN 378 +#define VAR_IGNORE_CD_FLAG 379 +#define VAR_LOG_QUERIES 380 +#define VAR_LOG_REPLIES 381 +#define VAR_TCP_UPSTREAM 382 +#define VAR_SSL_UPSTREAM 383 +#define VAR_SSL_SERVICE_KEY 384 +#define VAR_SSL_SERVICE_PEM 385 +#define VAR_SSL_PORT 386 +#define VAR_FORWARD_FIRST 387 +#define VAR_STUB_SSL_UPSTREAM 388 +#define VAR_FORWARD_SSL_UPSTREAM 389 +#define VAR_TLS_CERT_BUNDLE 390 +#define VAR_STUB_FIRST 391 +#define VAR_MINIMAL_RESPONSES 392 +#define VAR_RRSET_ROUNDROBIN 393 +#define VAR_MAX_UDP_SIZE 394 +#define VAR_DELAY_CLOSE 395 +#define VAR_UNBLOCK_LAN_ZONES 396 +#define VAR_INSECURE_LAN_ZONES 397 +#define VAR_INFRA_CACHE_MIN_RTT 398 +#define VAR_DNS64_PREFIX 399 +#define VAR_DNS64_SYNTHALL 400 +#define VAR_DNSTAP 401 +#define VAR_DNSTAP_ENABLE 402 +#define VAR_DNSTAP_SOCKET_PATH 403 +#define VAR_DNSTAP_SEND_IDENTITY 404 +#define VAR_DNSTAP_SEND_VERSION 405 +#define VAR_DNSTAP_IDENTITY 406 +#define VAR_DNSTAP_VERSION 407 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 408 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 409 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 410 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 411 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 412 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 413 +#define VAR_RESPONSE_IP_TAG 414 +#define VAR_RESPONSE_IP 415 +#define VAR_RESPONSE_IP_DATA 416 +#define VAR_HARDEN_ALGO_DOWNGRADE 417 +#define VAR_IP_TRANSPARENT 418 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 419 +#define VAR_IP_RATELIMIT 420 +#define VAR_IP_RATELIMIT_SLABS 421 +#define VAR_IP_RATELIMIT_SIZE 422 +#define VAR_RATELIMIT 423 +#define VAR_RATELIMIT_SLABS 424 +#define VAR_RATELIMIT_SIZE 425 +#define VAR_RATELIMIT_FOR_DOMAIN 426 +#define VAR_RATELIMIT_BELOW_DOMAIN 427 +#define VAR_IP_RATELIMIT_FACTOR 428 +#define VAR_RATELIMIT_FACTOR 429 +#define VAR_SEND_CLIENT_SUBNET 430 +#define VAR_CLIENT_SUBNET_ZONE 431 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 432 +#define VAR_CLIENT_SUBNET_OPCODE 433 +#define VAR_MAX_CLIENT_SUBNET_IPV4 434 +#define VAR_MAX_CLIENT_SUBNET_IPV6 435 +#define VAR_CAPS_WHITELIST 436 +#define VAR_CACHE_MAX_NEGATIVE_TTL 437 +#define VAR_PERMIT_SMALL_HOLDDOWN 438 +#define VAR_QNAME_MINIMISATION 439 +#define VAR_QNAME_MINIMISATION_STRICT 440 +#define VAR_IP_FREEBIND 441 +#define VAR_DEFINE_TAG 442 +#define VAR_LOCAL_ZONE_TAG 443 +#define VAR_ACCESS_CONTROL_TAG 444 +#define VAR_LOCAL_ZONE_OVERRIDE 445 +#define VAR_ACCESS_CONTROL_TAG_ACTION 446 +#define VAR_ACCESS_CONTROL_TAG_DATA 447 +#define VAR_VIEW 448 +#define VAR_ACCESS_CONTROL_VIEW 449 +#define VAR_VIEW_FIRST 450 +#define VAR_SERVE_EXPIRED 451 +#define VAR_FAKE_DSA 452 +#define VAR_FAKE_SHA1 453 +#define VAR_LOG_IDENTITY 454 +#define VAR_HIDE_TRUSTANCHOR 455 +#define VAR_TRUST_ANCHOR_SIGNALING 456 +#define VAR_AGGRESSIVE_NSEC 457 +#define VAR_USE_SYSTEMD 458 +#define VAR_SHM_ENABLE 459 +#define VAR_SHM_KEY 460 +#define VAR_ROOT_KEY_SENTINEL 461 +#define VAR_DNSCRYPT 462 +#define VAR_DNSCRYPT_ENABLE 463 +#define VAR_DNSCRYPT_PORT 464 +#define VAR_DNSCRYPT_PROVIDER 465 +#define VAR_DNSCRYPT_SECRET_KEY 466 +#define VAR_DNSCRYPT_PROVIDER_CERT 467 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 468 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 469 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 470 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 471 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 472 +#define VAR_IPSECMOD_ENABLED 473 +#define VAR_IPSECMOD_HOOK 474 +#define VAR_IPSECMOD_IGNORE_BOGUS 475 +#define VAR_IPSECMOD_MAX_TTL 476 +#define VAR_IPSECMOD_WHITELIST 477 +#define VAR_IPSECMOD_STRICT 478 +#define VAR_CACHEDB 479 +#define VAR_CACHEDB_BACKEND 480 +#define VAR_CACHEDB_SECRETSEED 481 +#define VAR_CACHEDB_REDISHOST 482 +#define VAR_CACHEDB_REDISPORT 483 +#define VAR_CACHEDB_REDISTIMEOUT 484 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 485 +#define VAR_FOR_UPSTREAM 486 +#define VAR_AUTH_ZONE 487 +#define VAR_ZONEFILE 488 +#define VAR_MASTER 489 +#define VAR_URL 490 +#define VAR_FOR_DOWNSTREAM 491 +#define VAR_FALLBACK_ENABLED 492 +#define VAR_TLS_ADDITIONAL_PORT 493 +#define VAR_LOW_RTT 494 +#define VAR_LOW_RTT_PERMIL 495 +#define VAR_ALLOW_NOTIFY 496 +#define VAR_TLS_WIN_CERT 497 +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE + +union YYSTYPE { -/* Line 2058 of yacc.c */ -#line 64 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:1909 */ char* str; +#line 542 "util/configparser.h" /* yacc.c:1909 */ +}; -/* Line 2058 of yacc.c */ -#line 386 "util/configparser.h" -} YYSTYPE; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/external/unbound/util/configparser.y b/external/unbound/util/configparser.y index abc0bb0..e34665a 100644 --- a/external/unbound/util/configparser.y +++ b/external/unbound/util/configparser.y @@ -51,6 +51,8 @@ int ub_c_lex(void); void ub_c_error(const char *message); +static void validate_respip_action(const char* action); + /* these need to be global, otherwise they cannot be used inside yacc */ extern struct config_parser_state* cfg_parser; @@ -69,7 +71,8 @@ extern struct config_parser_state* cfg_parser; %token STRING_ARG %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT %token VAR_OUTGOING_RANGE VAR_INTERFACE -%token VAR_DO_IP4 VAR_DO_IP6 VAR_DO_UDP VAR_DO_TCP +%token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP +%token VAR_TCP_MSS VAR_OUTGOING_TCP_MSS %token VAR_CHROOT VAR_USERNAME VAR_DIRECTORY VAR_LOGFILE VAR_PIDFILE %token VAR_MSG_CACHE_SIZE VAR_MSG_CACHE_SLABS VAR_NUM_QUERIES_PER_THREAD %token VAR_RRSET_CACHE_SIZE VAR_RRSET_CACHE_SLABS VAR_OUTGOING_NUM_TCP @@ -103,10 +106,13 @@ extern struct config_parser_state* cfg_parser; %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH %token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN -%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM +%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES +%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST +%token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN -%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UNBLOCK_LAN_ZONES +%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE +%token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES %token VAR_INFRA_CACHE_MIN_RTT %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH @@ -118,17 +124,48 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES +%token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA %token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT +%token VAR_DISABLE_DNSSEC_LAME_CHECK +%token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE -%token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR +%token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN +%token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR +%token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE +%token VAR_CLIENT_SUBNET_ALWAYS_FORWARD VAR_CLIENT_SUBNET_OPCODE +%token VAR_MAX_CLIENT_SUBNET_IPV4 VAR_MAX_CLIENT_SUBNET_IPV6 %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN -%token VAR_QNAME_MINIMISATION +%token VAR_QNAME_MINIMISATION VAR_QNAME_MINIMISATION_STRICT VAR_IP_FREEBIND +%token VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG VAR_ACCESS_CONTROL_TAG +%token VAR_LOCAL_ZONE_OVERRIDE VAR_ACCESS_CONTROL_TAG_ACTION +%token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW +%token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_FAKE_DSA VAR_FAKE_SHA1 +%token VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR VAR_TRUST_ANCHOR_SIGNALING +%token VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD VAR_SHM_ENABLE VAR_SHM_KEY +%token VAR_ROOT_KEY_SENTINEL +%token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER +%token VAR_DNSCRYPT_SECRET_KEY VAR_DNSCRYPT_PROVIDER_CERT +%token VAR_DNSCRYPT_PROVIDER_CERT_ROTATED +%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE +%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS +%token VAR_DNSCRYPT_NONCE_CACHE_SIZE +%token VAR_DNSCRYPT_NONCE_CACHE_SLABS +%token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS +%token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT +%token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED +%token VAR_CACHEDB_REDISHOST VAR_CACHEDB_REDISPORT VAR_CACHEDB_REDISTIMEOUT +%token VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM VAR_FOR_UPSTREAM +%token VAR_AUTH_ZONE VAR_ZONEFILE VAR_MASTER VAR_URL VAR_FOR_DOWNSTREAM +%token VAR_FALLBACK_ENABLED VAR_TLS_ADDITIONAL_PORT VAR_LOW_RTT VAR_LOW_RTT_PERMIL +%token VAR_ALLOW_NOTIFY VAR_TLS_WIN_CERT %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | - rcstart contents_rc | dtstart contents_dt + rcstart contents_rc | dtstart contents_dt | viewstart contents_view | + dnscstart contents_dnsc | cachedbstart contents_cachedb | + authstart contents_auth ; /* server: declaration */ @@ -141,7 +178,9 @@ contents_server: contents_server content_server | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | - server_do_ip6 | server_do_udp | server_do_tcp | + server_do_ip6 | server_prefer_ip6 | + server_do_udp | server_do_tcp | + server_tcp_mss | server_outgoing_tcp_mss | server_interface | server_chroot | server_username | server_directory | server_logfile | server_pidfile | server_msg_cache_size | server_msg_cache_slabs | @@ -177,17 +216,40 @@ content_server: server_num_threads | server_verbosity | server_port | server_del_holddown | server_keep_missing | server_so_rcvbuf | server_edns_buffer_size | server_prefetch | server_prefetch_key | server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag | - server_log_queries | server_tcp_upstream | server_ssl_upstream | + server_log_queries | server_log_replies | server_tcp_upstream | server_ssl_upstream | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | - server_so_reuseport | server_delay_close | server_unblock_lan_zones | + server_so_reuseport | server_delay_close | + server_unblock_lan_zones | server_insecure_lan_zones | server_dns64_prefix | server_dns64_synthall | server_infra_cache_min_rtt | server_harden_algo_downgrade | - server_ip_transparent | server_ratelimit | server_ratelimit_slabs | - server_ratelimit_size | server_ratelimit_for_domain | + server_ip_transparent | server_ip_ratelimit | server_ratelimit | + server_ip_ratelimit_slabs | server_ratelimit_slabs | + server_ip_ratelimit_size | server_ratelimit_size | + server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | + server_ip_ratelimit_factor | server_send_client_subnet | + server_client_subnet_zone | server_client_subnet_always_forward | + server_client_subnet_opcode | + server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 | server_caps_whitelist | server_cache_max_negative_ttl | - server_permit_small_holddown | server_qname_minimisation + server_permit_small_holddown | server_qname_minimisation | + server_ip_freebind | server_define_tag | server_local_zone_tag | + server_disable_dnssec_lame_check | server_access_control_tag | + server_local_zone_override | server_access_control_tag_action | + server_access_control_tag_data | server_access_control_view | + server_qname_minimisation_strict | server_serve_expired | + server_fake_dsa | server_log_identity | server_use_systemd | + server_response_ip_tag | server_response_ip | server_response_ip_data | + server_shm_enable | server_shm_key | server_fake_sha1 | + server_hide_trustanchor | server_trust_anchor_signaling | + server_root_key_sentinel | + server_ipsecmod_enabled | server_ipsecmod_hook | + server_ipsecmod_ignore_bogus | server_ipsecmod_max_ttl | + server_ipsecmod_whitelist | server_ipsecmod_strict | + server_udp_upstream_without_downstream | server_aggressive_nsec | + server_tls_cert_bundle | server_tls_additional_port | server_low_rtt | + server_low_rtt_permil | server_tls_win_cert ; stubstart: VAR_STUB_ZONE { @@ -203,7 +265,8 @@ stubstart: VAR_STUB_ZONE ; contents_stub: contents_stub content_stub | ; -content_stub: stub_name | stub_host | stub_addr | stub_prime | stub_first +content_stub: stub_name | stub_host | stub_addr | stub_prime | stub_first | + stub_ssl_upstream ; forwardstart: VAR_FORWARD_ZONE { @@ -219,7 +282,49 @@ forwardstart: VAR_FORWARD_ZONE ; contents_forward: contents_forward content_forward | ; -content_forward: forward_name | forward_host | forward_addr | forward_first +content_forward: forward_name | forward_host | forward_addr | forward_first | + forward_ssl_upstream + ; +viewstart: VAR_VIEW + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } + ; +contents_view: contents_view content_view + | ; +content_view: view_name | view_local_zone | view_local_data | view_first | + view_response_ip | view_response_ip_data | view_local_data_ptr + ; +authstart: VAR_AUTH_ZONE + { + struct config_auth* s; + OUTYY(("\nP(auth_zone:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for auth zone */ + s->for_downstream = 1; + s->for_upstream = 1; + s->fallback_enabled = 0; + } else + yyerror("out of memory"); + } + ; +contents_auth: contents_auth content_auth + | ; +content_auth: auth_name | auth_zonefile | auth_master | auth_url | + auth_for_downstream | auth_for_upstream | auth_fallback_enabled | + auth_allow_notify ; server_num_threads: VAR_NUM_THREADS STRING_ARG { @@ -268,6 +373,26 @@ server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG free($2); } ; +server_shm_enable: VAR_SHM_ENABLE STRING_ARG + { + OUTYY(("P(server_shm_enable:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->shm_enable = (strcmp($2, "yes")==0); + free($2); + } + ; +server_shm_key: VAR_SHM_KEY STRING_ARG + { + OUTYY(("P(server_shm_key:%s)\n", $2)); + if(strcmp($2, "") == 0 || strcmp($2, "0") == 0) + cfg_parser->cfg->shm_key = 0; + else if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->shm_key = atoi($2); + free($2); + } + ; server_port: VAR_PORT STRING_ARG { OUTYY(("P(server_port:%s)\n", $2)); @@ -277,6 +402,90 @@ server_port: VAR_PORT STRING_ARG free($2); } ; +server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_send_client_subnet:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, $2)) + fatal_exit("out of memory adding client-subnet"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + } + ; +server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_zone:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, + $2)) + fatal_exit("out of memory adding client-subnet-zone"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + } + ; +server_client_subnet_always_forward: + VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_always_forward:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->client_subnet_always_forward = + (strcmp($2, "yes")==0); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free($2); + } + ; +server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(client_subnet_opcode:%s)\n", $2)); + OUTYY(("P(Deprecated option, ignoring)\n")); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free($2); + } + ; +server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv4:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi($2) > 32) + cfg_parser->cfg->max_client_subnet_ipv4 = 32; + else if (atoi($2) < 0) + cfg_parser->cfg->max_client_subnet_ipv4 = 0; + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi($2); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free($2); + } + ; +server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv6:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi($2) > 128) + cfg_parser->cfg->max_client_subnet_ipv6 = 128; + else if (atoi($2) < 0) + cfg_parser->cfg->max_client_subnet_ipv6 = 0; + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi($2); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free($2); + } + ; server_interface: VAR_INTERFACE STRING_ARG { OUTYY(("P(server_interface:%s)\n", $2)); @@ -395,6 +604,33 @@ server_do_tcp: VAR_DO_TCP STRING_ARG free($2); } ; +server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG + { + OUTYY(("P(server_prefer_ip6:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip6 = (strcmp($2, "yes")==0); + free($2); + } + ; +server_tcp_mss: VAR_TCP_MSS STRING_ARG + { + OUTYY(("P(server_tcp_mss:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi($2); + free($2); + } + ; +server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG + { + OUTYY(("P(server_outgoing_tcp_mss:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_tcp_mss = atoi($2); + free($2); + } + ; server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG { OUTYY(("P(server_tcp_upstream:%s)\n", $2)); @@ -404,6 +640,15 @@ server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG free($2); } ; +server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG + { + OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp($2, "yes")==0); + free($2); + } + ; server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG { OUTYY(("P(server_ssl_upstream:%s)\n", $2)); @@ -436,6 +681,39 @@ server_ssl_port: VAR_SSL_PORT STRING_ARG free($2); } ; +server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", $2)); + free(cfg_parser->cfg->tls_cert_bundle); + cfg_parser->cfg->tls_cert_bundle = $2; + } + ; +server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG + { + OUTYY(("P(server_tls_win_cert:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tls_win_cert = (strcmp($2, "yes")==0); + free($2); + } + ; +server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG + { + OUTYY(("P(server_tls_additional_port:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, + $2)) + yyerror("out of memory"); + } + ; +server_use_systemd: VAR_USE_SYSTEMD STRING_ARG + { + OUTYY(("P(server_use_systemd:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp($2, "yes")==0); + free($2); + } + ; server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG { OUTYY(("P(server_do_daemonize:%s)\n", $2)); @@ -477,6 +755,15 @@ server_log_queries: VAR_LOG_QUERIES STRING_ARG free($2); } ; +server_log_replies: VAR_LOG_REPLIES STRING_ARG + { + OUTYY(("P(server_log_replies:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0); + free($2); + } + ; server_chroot: VAR_CHROOT STRING_ARG { OUTYY(("P(server_chroot:%s)\n", $2)); @@ -496,6 +783,25 @@ server_directory: VAR_DIRECTORY STRING_ARG OUTYY(("P(server_directory:%s)\n", $2)); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = $2; + /* change there right away for includes relative to this */ + if($2[0]) { + char* d; +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg_parser->cfg); +#endif + d = cfg_parser->cfg->directory; + /* adjust directory if we have already chroot, + * like, we reread after sighup */ + if(cfg_parser->chroot && cfg_parser->chroot[0] && + strncmp(d, cfg_parser->chroot, strlen( + cfg_parser->chroot)) == 0) + d += strlen(cfg_parser->chroot); + if(d[0]) { + if(chdir(d)) + log_err("cannot chdir to directory: %s (%s)", + d, strerror(errno)); + } + } } ; server_logfile: VAR_LOGFILE STRING_ARG @@ -565,6 +871,28 @@ server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG yyerror("out of memory"); } ; +server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG + { + OUTYY(("P(server_trust_anchor_signaling:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->trust_anchor_signaling = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG + { + OUTYY(("P(server_root_key_sentinel:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->root_key_sentinel = + (strcmp($2, "yes")==0); + free($2); + } + ; server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG { OUTYY(("P(server_domain_insecure:%s)\n", $2)); @@ -590,6 +918,15 @@ server_hide_version: VAR_HIDE_VERSION STRING_ARG free($2); } ; +server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG + { + OUTYY(("P(server_hide_trustanchor:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_trustanchor = (strcmp($2, "yes")==0); + free($2); + } + ; server_identity: VAR_IDENTITY STRING_ARG { OUTYY(("P(server_identity:%s)\n", $2)); @@ -640,6 +977,16 @@ server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG free($2); } ; +server_ip_freebind: VAR_IP_FREEBIND STRING_ARG + { + OUTYY(("P(server_ip_freebind:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp($2, "yes")==0); + free($2); + } + ; server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG { OUTYY(("P(server_edns_buffer_size:%s)\n", $2)); @@ -722,6 +1069,16 @@ server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG free($2); } ; +server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG + { + OUTYY(("P(server_insecure_lan_zones:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->insecure_lan_zones = + (strcmp($2, "yes")==0); + free($2); + } + ; server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG { OUTYY(("P(server_rrset_cache_size:%s)\n", $2)); @@ -957,11 +1314,12 @@ server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG if(strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && strcmp($3, "deny_non_local")!=0 && strcmp($3, "refuse_non_local")!=0 && + strcmp($3, "allow_setrd")!=0 && strcmp($3, "allow")!=0 && strcmp($3, "allow_snoop")!=0) { yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow or allow_snoop " - "in access control action"); + "refuse_non_local, allow, allow_setrd or " + "allow_snoop in access control action"); } else { if(!cfg_str2list_insert(&cfg_parser->cfg->acls, $2, $3)) fatal_exit("out of memory adding acl"); @@ -978,7 +1336,7 @@ server_module_conf: VAR_MODULE_CONF STRING_ARG server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG { OUTYY(("P(server_val_override_date:%s)\n", $2)); - if(strlen($2) == 0 || strcmp($2, "0") == 0) { + if(*$2 == '\0' || strcmp($2, "0") == 0) { cfg_parser->cfg->val_date_override = 0; } else if(strlen($2) == 14) { cfg_parser->cfg->val_date_override = @@ -996,7 +1354,7 @@ server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG { OUTYY(("P(server_val_sig_skew_min:%s)\n", $2)); - if(strlen($2) == 0 || strcmp($2, "0") == 0) { + if(*$2 == '\0' || strcmp($2, "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; } else { cfg_parser->cfg->val_sig_skew_min = atoi($2); @@ -1009,7 +1367,7 @@ server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG { OUTYY(("P(server_val_sig_skew_max:%s)\n", $2)); - if(strlen($2) == 0 || strcmp($2, "0") == 0) { + if(*$2 == '\0' || strcmp($2, "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; } else { cfg_parser->cfg->val_sig_skew_max = atoi($2); @@ -1075,6 +1433,17 @@ server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG free($2); } ; +server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG + { + OUTYY(("P(server_aggressive_nsec:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->aggressive_nsec = + (strcmp($2, "yes")==0); + free($2); + } + ; server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG { OUTYY(("P(server_ignore_cd_flag:%s)\n", $2)); @@ -1084,6 +1453,41 @@ server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG free($2); } ; +server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG + { + OUTYY(("P(server_serve_expired:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired = (strcmp($2, "yes")==0); + free($2); + } + ; +server_fake_dsa: VAR_FAKE_DSA STRING_ARG + { + OUTYY(("P(server_fake_dsa:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); +#ifdef HAVE_SSL + else fake_dsa = (strcmp($2, "yes")==0); + if(fake_dsa) + log_warn("test option fake_dsa is enabled"); +#endif + free($2); + } + ; +server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG + { + OUTYY(("P(server_fake_sha1:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); +#ifdef HAVE_SSL + else fake_sha1 = (strcmp($2, "yes")==0); + if(fake_sha1) + log_warn("test option fake_sha1 is enabled"); +#endif + free($2); + } + ; server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG { OUTYY(("P(server_val_log_level:%s)\n", $2)); @@ -1171,12 +1575,17 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 && strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0 - && strcmp($3, "typetransparent")!=0 && - strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) + && strcmp($3, "typetransparent")!=0 + && strcmp($3, "always_transparent")!=0 + && strcmp($3, "always_refuse")!=0 + && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "noview")!=0 + && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny " - "or nodefault"); + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); else if(strcmp($3, "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_zones_nodefault, $2)) @@ -1254,6 +1663,134 @@ server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG free($2); } ; +server_define_tag: VAR_DEFINE_TAG STRING_ARG + { + char* p, *s = $2; + OUTYY(("P(server_define_tag:%s)\n", $2)); + while((p=strsep(&s, " \t\n")) != NULL) { + if(*p) { + if(!config_add_tag(cfg_parser->cfg, p)) + yyerror("could not define-tag, " + "out of memory"); + } + } + free($2); + } + ; +server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3, + &len); + free($3); + OUTYY(("P(server_local_zone_tag:%s)\n", $2)); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->local_zone_tags, + $2, bitlist, len)) { + yyerror("out of memory"); + free($2); + } + } + } + ; +server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3, + &len); + free($3); + OUTYY(("P(server_access_control_tag:%s)\n", $2)); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + $2, bitlist, len)) { + yyerror("out of memory"); + free($2); + } + } + } + ; +server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG + { + OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", $2, $3, $4)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, + $2, $3, $4)) { + yyerror("out of memory"); + free($2); + free($3); + free($4); + } + } + ; +server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG + { + OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", $2, $3, $4)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, + $2, $3, $4)) { + yyerror("out of memory"); + free($2); + free($3); + free($4); + } + } + ; +server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG + { + OUTYY(("P(server_local_zone_override:%s %s %s)\n", $2, $3, $4)); + if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, + $2, $3, $4)) { + yyerror("out of memory"); + free($2); + free($3); + free($4); + } + } + ; +server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG + { + OUTYY(("P(server_access_control_view:%s %s)\n", $2, $3)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + $2, $3)) { + yyerror("out of memory"); + free($2); + free($3); + } + } + ; +server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3, + &len); + free($3); + OUTYY(("P(response_ip_tag:%s)\n", $2)); + if(!bitlist) + yyerror("could not parse tags, (define-tag them first)"); + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->respip_tags, + $2, bitlist, len)) { + yyerror("out of memory"); + free($2); + } + } + } + ; +server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG + { + OUTYY(("P(server_ip_ratelimit:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit = atoi($2); + free($2); + } + ; + server_ratelimit: VAR_RATELIMIT STRING_ARG { OUTYY(("P(server_ratelimit:%s)\n", $2)); @@ -1263,6 +1800,14 @@ server_ratelimit: VAR_RATELIMIT STRING_ARG free($2); } ; +server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free($2); + } + ; server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG { OUTYY(("P(server_ratelimit_size:%s)\n", $2)); @@ -1271,6 +1816,19 @@ server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG free($2); } ; +server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free($2); + } + ; server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG { OUTYY(("P(server_ratelimit_slabs:%s)\n", $2)); @@ -1310,6 +1868,15 @@ server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG } } ; +server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi($2); + free($2); + } + ; server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG { OUTYY(("P(server_ratelimit_factor:%s)\n", $2)); @@ -1319,6 +1886,24 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG free($2); } ; +server_low_rtt: VAR_LOW_RTT STRING_ARG + { + OUTYY(("P(server_low_rtt:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->low_rtt = atoi($2); + free($2); + } + ; +server_low_rtt_permil: VAR_LOW_RTT_PERMIL STRING_ARG + { + OUTYY(("P(server_low_rtt_permil:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->low_rtt_permil = atoi($2); + free($2); + } + ; server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG { OUTYY(("P(server_qname_minimisation:%s)\n", $2)); @@ -1329,6 +1914,90 @@ server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG free($2); } ; +server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG + { + OUTYY(("P(server_qname_minimisation_strict:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation_strict = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_enabled:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp($2, "yes")==0); + free($2); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; +server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp($2, "yes")==0); + free($2); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; +server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_hook:%s)\n", $2)); + free(cfg_parser->cfg->ipsecmod_hook); + cfg_parser->cfg->ipsecmod_hook = $2; + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; +server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi($2); + free($2); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; +server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, $2)) + yyerror("out of memory"); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; +server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_strict:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_strict = (strcmp($2, "yes")==0); + free($2); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); @@ -1362,6 +2031,16 @@ stub_first: VAR_STUB_FIRST STRING_ARG free($2); } ; +stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG + { + OUTYY(("P(stub-ssl-upstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->ssl_upstream = + (strcmp($2, "yes")==0); + free($2); + } + ; stub_prime: VAR_STUB_PRIME STRING_ARG { OUTYY(("P(stub-prime:%s)\n", $2)); @@ -1405,6 +2084,176 @@ forward_first: VAR_FORWARD_FIRST STRING_ARG free($2); } ; +forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG + { + OUTYY(("P(forward-ssl-upstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->ssl_upstream = + (strcmp($2, "yes")==0); + free($2); + } + ; +auth_name: VAR_NAME STRING_ARG + { + OUTYY(("P(name:%s)\n", $2)); + if(cfg_parser->cfg->auths->name) + yyerror("auth name override, there must be one name " + "for one auth-zone"); + free(cfg_parser->cfg->auths->name); + cfg_parser->cfg->auths->name = $2; + } + ; +auth_zonefile: VAR_ZONEFILE STRING_ARG + { + OUTYY(("P(zonefile:%s)\n", $2)); + free(cfg_parser->cfg->auths->zonefile); + cfg_parser->cfg->auths->zonefile = $2; + } + ; +auth_master: VAR_MASTER STRING_ARG + { + OUTYY(("P(master:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, $2)) + yyerror("out of memory"); + } + ; +auth_url: VAR_URL STRING_ARG + { + OUTYY(("P(url:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, $2)) + yyerror("out of memory"); + } + ; +auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG + { + OUTYY(("P(allow-notify:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + $2)) + yyerror("out of memory"); + } + ; +auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG + { + OUTYY(("P(for-downstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_downstream = + (strcmp($2, "yes")==0); + free($2); + } + ; +auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG + { + OUTYY(("P(for-upstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_upstream = + (strcmp($2, "yes")==0); + free($2); + } + ; +auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG + { + OUTYY(("P(fallback-enabled:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->fallback_enabled = + (strcmp($2, "yes")==0); + free($2); + } + ; +view_name: VAR_NAME STRING_ARG + { + OUTYY(("P(name:%s)\n", $2)); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = $2; + } + ; +view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG + { + OUTYY(("P(view_local_zone:%s %s)\n", $2, $3)); + if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 && + strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 && + strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0 + && strcmp($3, "typetransparent")!=0 + && strcmp($3, "always_transparent")!=0 + && strcmp($3, "always_refuse")!=0 + && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "noview")!=0 + && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); + else if(strcmp($3, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, $2)) + fatal_exit("out of memory adding local-zone"); + free($3); + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + $2, $3)) + fatal_exit("out of memory adding local-zone"); + } + } + ; +view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG + { + OUTYY(("P(view_response_ip:%s %s)\n", $2, $3)); + validate_respip_action($3); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_actions, $2, $3)) + fatal_exit("out of memory adding per-view " + "response-ip action"); + } + ; +view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG + { + OUTYY(("P(view_response_ip_data:%s)\n", $2)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_data, $2, $3)) + fatal_exit("out of memory adding response-ip-data"); + } + ; +view_local_data: VAR_LOCAL_DATA STRING_ARG + { + OUTYY(("P(view_local_data:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, $2)) { + fatal_exit("out of memory adding local-data"); + free($2); + } + } + ; +view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG + { + char* ptr; + OUTYY(("P(view_local_data_ptr:%s)\n", $2)); + ptr = cfg_ptr_reverse($2); + free($2); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } + ; +view_first: VAR_VIEW_FIRST STRING_ARG + { + OUTYY(("P(view-first:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp($2, "yes")==0); + free($2); + } + ; rcstart: VAR_REMOTE_CONTROL { OUTYY(("\nP(remote-control:)\n")); @@ -1438,17 +2287,14 @@ rc_control_port: VAR_CONTROL_PORT STRING_ARG rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG { OUTYY(("P(control_interface:%s)\n", $2)); - if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, $2)) + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, $2)) yyerror("out of memory"); } ; rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG { OUTYY(("P(control_use_cert:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_use_cert = - (strcmp($2, "yes")==0); + cfg_parser->cfg->control_use_cert = (strcmp($2, "yes")==0); free($2); } ; @@ -1611,6 +2457,246 @@ py_script: VAR_PYTHON_SCRIPT STRING_ARG free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = $2; } +server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG + { + OUTYY(("P(disable_dnssec_lame_check:%s)\n", $2)); + if (strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->disable_dnssec_lame_check = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_log_identity: VAR_LOG_IDENTITY STRING_ARG + { + OUTYY(("P(server_log_identity:%s)\n", $2)); + free(cfg_parser->cfg->log_identity); + cfg_parser->cfg->log_identity = $2; + } + ; +server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG + { + OUTYY(("P(server_response_ip:%s %s)\n", $2, $3)); + validate_respip_action($3); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, + $2, $3)) + fatal_exit("out of memory adding response-ip"); + } + ; +server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG + { + OUTYY(("P(server_response_ip_data:%s)\n", $2)); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, + $2, $3)) + fatal_exit("out of memory adding response-ip-data"); + } + ; +dnscstart: VAR_DNSCRYPT + { + OUTYY(("\nP(dnscrypt:)\n")); + OUTYY(("\nP(dnscrypt:)\n")); + } + ; +contents_dnsc: contents_dnsc content_dnsc + | ; +content_dnsc: + dnsc_dnscrypt_enable | dnsc_dnscrypt_port | dnsc_dnscrypt_provider | + dnsc_dnscrypt_secret_key | dnsc_dnscrypt_provider_cert | + dnsc_dnscrypt_provider_cert_rotated | + dnsc_dnscrypt_shared_secret_cache_size | + dnsc_dnscrypt_shared_secret_cache_slabs | + dnsc_dnscrypt_nonce_cache_size | + dnsc_dnscrypt_nonce_cache_slabs + ; +dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnscrypt = (strcmp($2, "yes")==0); + free($2); + } + ; + +dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_port:%s)\n", $2)); + + if(atoi($2) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->dnscrypt_port = atoi($2); + free($2); + } + ; +dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", $2)); + free(cfg_parser->cfg->dnscrypt_provider); + cfg_parser->cfg->dnscrypt_provider = $2; + } + ; +dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", $2)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, $2)) + log_warn("dnscrypt-provider-cert %s is a duplicate", $2); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, $2)) + fatal_exit("out of memory adding dnscrypt-provider-cert"); + } + ; +dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, $2)) + fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); + } + ; +dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", $2)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, $2)) + log_warn("dnscrypt-secret-key: %s is a duplicate", $2); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, $2)) + fatal_exit("out of memory adding dnscrypt-secret-key"); + } + ; +dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free($2); + } + ; +dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) + yyerror("must be a power of 2"); + } + free($2); + } + ; +dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free($2); + } + ; +dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free($2); + } + ; +cachedbstart: VAR_CACHEDB + { + OUTYY(("\nP(cachedb:)\n")); + } + ; +contents_cachedb: contents_cachedb content_cachedb + | ; +content_cachedb: cachedb_backend_name | cachedb_secret_seed | + redis_server_host | redis_server_port | redis_timeout + ; +cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", $2)); + if(cfg_parser->cfg->cachedb_backend) + yyerror("cachedb backend override, there must be one " + "backend"); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = $2; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + #endif + } + ; +cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", $2)); + if(cfg_parser->cfg->cachedb_secret) + yyerror("cachedb secret-seed override, there must be " + "only one secret"); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = $2; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free($2); + #endif + } + ; +redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", $2)); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = $2; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free($2); + #endif + } + ; +redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", $2)); + port = atoi($2); + if(port == 0 || port < 0 || port > 65535) + yyerror("valid redis server port number expected"); + else cfg_parser->cfg->redis_server_port = port; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free($2); + } + ; +redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi($2); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free($2); + } + ; %% /* parse helper routines could be here */ +static void +validate_respip_action(const char* action) +{ + if(strcmp(action, "deny")!=0 && + strcmp(action, "redirect")!=0 && + strcmp(action, "inform")!=0 && + strcmp(action, "inform_deny")!=0 && + strcmp(action, "always_transparent")!=0 && + strcmp(action, "always_refuse")!=0 && + strcmp(action, "always_nxdomain")!=0) + { + yyerror("response-ip action: expected deny, redirect, " + "inform, inform_deny, always_transparent, " + "always_refuse or always_nxdomain"); + } +} diff --git a/external/unbound/util/data/dname.c b/external/unbound/util/data/dname.c index 79bf52a..c7360f7 100644 --- a/external/unbound/util/data/dname.c +++ b/external/unbound/util/data/dname.c @@ -256,11 +256,13 @@ dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2) log_assert(len1 == len2 && len1 != 0); /* compare labels */ while(len1--) { - if(tolower((unsigned char)*d1++) != tolower((unsigned char)*d2++)) { - if(tolower((unsigned char)d1[-1]) < tolower((unsigned char)d2[-1])) + if(tolower((unsigned char)*d1) != tolower((unsigned char)*d2)) { + if(tolower((unsigned char)*d1) < tolower((unsigned char)*d2)) return -1; return 1; } + d1++; + d2++; } len1 = *d1++; len2 = *d2++; @@ -268,8 +270,8 @@ dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2) return 0; } -hashvalue_t -dname_query_hash(uint8_t* dname, hashvalue_t h) +hashvalue_type +dname_query_hash(uint8_t* dname, hashvalue_type h) { uint8_t labuf[LDNS_MAX_LABELLEN+1]; uint8_t lablen; @@ -281,8 +283,10 @@ dname_query_hash(uint8_t* dname, hashvalue_t h) log_assert(lablen <= LDNS_MAX_LABELLEN); labuf[0] = lablen; i=0; - while(lablen--) - labuf[++i] = (uint8_t)tolower((unsigned char)*dname++); + while(lablen--) { + labuf[++i] = (uint8_t)tolower((unsigned char)*dname); + dname++; + } h = hashlittle(labuf, labuf[0] + 1, h); lablen = *dname++; } @@ -290,8 +294,8 @@ dname_query_hash(uint8_t* dname, hashvalue_t h) return h; } -hashvalue_t -dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_t h) +hashvalue_type +dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_type h) { uint8_t labuf[LDNS_MAX_LABELLEN+1]; uint8_t lablen; @@ -309,8 +313,10 @@ dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_t h) log_assert(lablen <= LDNS_MAX_LABELLEN); labuf[0] = lablen; i=0; - while(lablen--) - labuf[++i] = (uint8_t)tolower((unsigned char)*dname++); + while(lablen--) { + labuf[++i] = (uint8_t)tolower((unsigned char)*dname); + dname++; + } h = hashlittle(labuf, labuf[0] + 1, h); lablen = *dname++; } @@ -517,6 +523,29 @@ dname_lab_cmp(uint8_t* d1, int labs1, uint8_t* d2, int labs2, int* mlabs) return lastdiff; } +int +dname_lab_startswith(uint8_t* label, char* prefix, char** endptr) +{ + size_t plen = strlen(prefix); + size_t orig_plen = plen; + size_t lablen = (size_t)*label; + if(plen > lablen) + return 0; + label++; + while(plen--) { + if(*prefix != tolower((unsigned char)*label)) { + return 0; + } + prefix++; label++; + } + if(orig_plen < lablen) + *endptr = (char *)label; + else + /* prefix length == label length */ + *endptr = NULL; + return 1; +} + int dname_buffer_write(sldns_buffer* pkt, uint8_t* dname) { diff --git a/external/unbound/util/data/dname.h b/external/unbound/util/data/dname.h index ae2fbad..53a33c6 100644 --- a/external/unbound/util/data/dname.h +++ b/external/unbound/util/data/dname.h @@ -127,7 +127,7 @@ int dname_pkt_compare(struct sldns_buffer* pkt, uint8_t* d1, uint8_t* d2); * @param h: initial hash value. * @return: result hash value. */ -hashvalue_t dname_query_hash(uint8_t* dname, hashvalue_t h); +hashvalue_type dname_query_hash(uint8_t* dname, hashvalue_type h); /** * Hash dname, label by label, lowercasing, into hashvalue. @@ -139,7 +139,8 @@ hashvalue_t dname_query_hash(uint8_t* dname, hashvalue_t h); * @return: result hash value. * Result is the same as dname_query_hash, even if compression is used. */ -hashvalue_t dname_pkt_hash(struct sldns_buffer* pkt, uint8_t* dname, hashvalue_t h); +hashvalue_type dname_pkt_hash(struct sldns_buffer* pkt, uint8_t* dname, + hashvalue_type h); /** * Copy over a valid dname and decompress it. @@ -184,6 +185,17 @@ int dname_count_size_labels(uint8_t* dname, size_t* size); */ int dname_lab_cmp(uint8_t* d1, int labs1, uint8_t* d2, int labs2, int* mlabs); +/** + * Check if labels starts with given prefix + * @param label: dname label + * @param prefix: the string to match label with, null terminated. + * @param endptr: pointer to location in label after prefix, only if return + * value is 1. NULL if nothing in the label after the prefix, i.e. prefix + * and label are the same. + * @return: 1 if label starts with prefix, else 0 + */ +int dname_lab_startswith(uint8_t* label, char* prefix, char** endptr); + /** * See if domain name d1 is a strict subdomain of d2. * That is a subdomain, but not equal. diff --git a/external/unbound/util/data/msgencode.c b/external/unbound/util/data/msgencode.c index 43464e9..aab7f5d 100644 --- a/external/unbound/util/data/msgencode.c +++ b/external/unbound/util/data/msgencode.c @@ -48,6 +48,7 @@ #include "util/regional.h" #include "util/net_help.h" #include "sldns/sbuffer.h" +#include "services/localzone.h" /** return code that means the function ran out of memory. negative so it does * not conflict with DNS rcodes. */ @@ -458,6 +459,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, owner_labs = dname_count_labels(key->rk.dname); owner_pos = sldns_buffer_position(pkt); + /* For an rrset with a fixed TTL, use the rrset's TTL as given */ + if((key->rk.flags & PACKED_RRSET_FIXEDTTL) != 0) + timenow = 0; + if(do_data) { const sldns_rr_descriptor* c = type_rdata_compressable(key); for(i=0; icount; i++) { @@ -534,7 +539,11 @@ insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t* num_rrs, { int r; size_t i, setstart; - *num_rrs = 0; + /* we now allow this function to be called multiple times for the + * same section, incrementally updating num_rrs. The caller is + * responsible for initializing it (which is the case in the current + * implementation). */ + if(s != LDNS_SECTION_ADDITIONAL) { if(s == LDNS_SECTION_ANSWER && qtype == LDNS_RR_TYPE_ANY) dnssec = 1; /* include all types in ANY answer */ @@ -581,17 +590,20 @@ static int insert_query(struct query_info* qinfo, struct compress_tree_node** tree, sldns_buffer* buffer, struct regional* region) { + uint8_t* qname = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname : qinfo->qname; + size_t qname_len = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname_len : qinfo->qname_len; if(sldns_buffer_remaining(buffer) < qinfo->qname_len+sizeof(uint16_t)*2) return RETVAL_TRUNC; /* buffer too small */ /* the query is the first name inserted into the tree */ - if(!compress_tree_store(qinfo->qname, - dname_count_labels(qinfo->qname), + if(!compress_tree_store(qname, dname_count_labels(qname), sldns_buffer_position(buffer), region, NULL, tree)) return RETVAL_OUTMEM; - if(sldns_buffer_current(buffer) == qinfo->qname) - sldns_buffer_skip(buffer, (ssize_t)qinfo->qname_len); - else sldns_buffer_write(buffer, qinfo->qname, qinfo->qname_len); + if(sldns_buffer_current(buffer) == qname) + sldns_buffer_skip(buffer, (ssize_t)qname_len); + else sldns_buffer_write(buffer, qname, qname_len); sldns_buffer_write_u16(buffer, qinfo->qtype); sldns_buffer_write_u16(buffer, qinfo->qclass); return RETVAL_OK; @@ -635,6 +647,8 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep, sldns_buffer_clear(buffer); if(udpsize < sldns_buffer_limit(buffer)) sldns_buffer_set_limit(buffer, udpsize); + else if(sldns_buffer_limit(buffer) < udpsize) + udpsize = sldns_buffer_limit(buffer); if(sldns_buffer_remaining(buffer) < LDNS_HEADER_SIZE) return 0; @@ -662,6 +676,33 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep, * for different roundrobins for sequential id client senders. */ rr_offset = RRSET_ROUNDROBIN?ntohs(id):0; + /* "prepend" any local alias records in the answer section if this + * response is supposed to be authoritative. Currently it should + * be a single CNAME record (sanity-checked in worker_handle_request()) + * but it can be extended if and when we support more variations of + * aliases. */ + if(qinfo->local_alias && (flags & BIT_AA)) { + struct reply_info arep; + time_t timezero = 0; /* to use the 'authoritative' TTL */ + memset(&arep, 0, sizeof(arep)); + arep.flags = rep->flags; + arep.an_numrrsets = 1; + arep.rrset_count = 1; + arep.rrsets = &qinfo->local_alias->rrset; + if((r=insert_section(&arep, 1, &ancount, buffer, 0, + timezero, region, &tree, LDNS_SECTION_ANSWER, + qinfo->qtype, dnssec, rr_offset)) != RETVAL_OK) { + if(r == RETVAL_TRUNC) { + /* create truncated message */ + sldns_buffer_write_u16_at(buffer, 6, ancount); + LDNS_TC_SET(sldns_buffer_begin(buffer)); + sldns_buffer_flip(buffer); + return 1; + } + return 0; + } + } + /* insert answer section */ if((r=insert_section(rep, rep->an_numrrsets, &ancount, buffer, 0, timenow, region, &tree, LDNS_SECTION_ANSWER, qinfo->qtype, @@ -717,16 +758,23 @@ reply_info_encode(struct query_info* qinfo, struct reply_info* rep, uint16_t calc_edns_field_size(struct edns_data* edns) { + size_t rdatalen = 0; + struct edns_option* opt; if(!edns || !edns->edns_present) return 0; - /* domain root '.' + type + class + ttl + rdatalen(=0) */ - return 1 + 2 + 2 + 4 + 2; + for(opt = edns->opt_list; opt; opt = opt->next) { + rdatalen += 4 + opt->opt_len; + } + /* domain root '.' + type + class + ttl + rdatalen */ + return 1 + 2 + 2 + 4 + 2 + rdatalen; } void attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) { size_t len; + size_t rdatapos; + struct edns_option* opt; if(!edns || !edns->edns_present) return; /* inc additional count */ @@ -742,7 +790,18 @@ attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) sldns_buffer_write_u8(pkt, edns->ext_rcode); /* ttl */ sldns_buffer_write_u8(pkt, edns->edns_version); sldns_buffer_write_u16(pkt, edns->bits); + rdatapos = sldns_buffer_position(pkt); sldns_buffer_write_u16(pkt, 0); /* rdatalen */ + /* write rdata */ + for(opt=edns->opt_list; opt; opt=opt->next) { + sldns_buffer_write_u16(pkt, opt->opt_code); + sldns_buffer_write_u16(pkt, opt->opt_len); + if(opt->opt_len != 0) + sldns_buffer_write(pkt, opt->opt_data, opt->opt_len); + } + if(edns->opt_list) + sldns_buffer_write_u16_at(pkt, rdatapos, + sldns_buffer_position(pkt)-rdatapos-2); sldns_buffer_flip(pkt); } @@ -753,7 +812,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, struct edns_data* edns, int dnssec, int secure) { uint16_t flags; - int attach_edns = 1; + unsigned int attach_edns = 0; if(!cached || rep->authoritative) { /* original flags, copy RD and CD bits from query. */ @@ -764,15 +823,27 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(secure && (dnssec || (qflags&BIT_AD))) flags |= BIT_AD; + /* restore AA bit if we have a local alias and the response can be + * authoritative. Also clear AD bit if set as the local data is the + * primary answer. */ + if(qinf->local_alias && + (FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NOERROR || + FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN)) { + flags |= BIT_AA; + flags &= ~BIT_AD; + } log_assert(flags & BIT_QR); /* QR bit must be on in our replies */ if(udpsize < LDNS_HEADER_SIZE) return 0; + if(sldns_buffer_capacity(pkt) < udpsize) + udpsize = sldns_buffer_capacity(pkt); if(udpsize < LDNS_HEADER_SIZE + calc_edns_field_size(edns)) { /* packet too small to contain edns, omit it. */ attach_edns = 0; } else { /* reserve space for edns record */ - udpsize -= calc_edns_field_size(edns); + attach_edns = (unsigned int)calc_edns_field_size(edns); + udpsize -= attach_edns; } if(!reply_info_encode(qinf, rep, id, flags, pkt, timenow, region, @@ -780,7 +851,8 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, log_err("reply encode: out of memory"); return 0; } - if(attach_edns) + if(attach_edns && sldns_buffer_capacity(pkt) >= + sldns_buffer_limit(pkt)+attach_edns) attach_edns_record(pkt, edns); return 1; } @@ -789,13 +861,17 @@ void qinfo_query_encode(sldns_buffer* pkt, struct query_info* qinfo) { uint16_t flags = 0; /* QUERY, NOERROR */ + const uint8_t* qname = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname : qinfo->qname; + size_t qname_len = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname_len : qinfo->qname_len; sldns_buffer_clear(pkt); log_assert(sldns_buffer_remaining(pkt) >= 12+255+4/*max query*/); sldns_buffer_skip(pkt, 2); /* id done later */ sldns_buffer_write_u16(pkt, flags); sldns_buffer_write_u16(pkt, 1); /* query count */ sldns_buffer_write(pkt, "\000\000\000\000\000\000", 6); /* counts */ - sldns_buffer_write(pkt, qinfo->qname, qinfo->qname_len); + sldns_buffer_write(pkt, qname, qname_len); sldns_buffer_write_u16(pkt, qinfo->qtype); sldns_buffer_write_u16(pkt, qinfo->qclass); sldns_buffer_flip(pkt); @@ -820,9 +896,14 @@ error_encode(sldns_buffer* buf, int r, struct query_info* qinfo, sldns_buffer_write(buf, &flags, sizeof(uint16_t)); sldns_buffer_write(buf, &flags, sizeof(uint16_t)); if(qinfo) { - if(sldns_buffer_current(buf) == qinfo->qname) - sldns_buffer_skip(buf, (ssize_t)qinfo->qname_len); - else sldns_buffer_write(buf, qinfo->qname, qinfo->qname_len); + const uint8_t* qname = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname : qinfo->qname; + size_t qname_len = qinfo->local_alias ? + qinfo->local_alias->rrset->rk.dname_len : + qinfo->qname_len; + if(sldns_buffer_current(buf) == qname) + sldns_buffer_skip(buf, (ssize_t)qname_len); + else sldns_buffer_write(buf, qname, qname_len); sldns_buffer_write_u16(buf, qinfo->qtype); sldns_buffer_write_u16(buf, qinfo->qclass); } diff --git a/external/unbound/util/data/msgparse.c b/external/unbound/util/data/msgparse.c index 108c9da..13cad8a 100644 --- a/external/unbound/util/data/msgparse.c +++ b/external/unbound/util/data/msgparse.c @@ -38,6 +38,7 @@ */ #include "config.h" #include "util/data/msgparse.h" +#include "util/data/msgreply.h" #include "util/data/dname.h" #include "util/data/packed_rrset.h" #include "util/storage/lookup3.h" @@ -70,7 +71,7 @@ smart_compare(sldns_buffer* pkt, uint8_t* dnow, */ static struct rrset_parse* new_rrset(struct msg_parse* msg, uint8_t* dname, size_t dnamelen, - uint16_t type, uint16_t dclass, hashvalue_t hash, + uint16_t type, uint16_t dclass, hashvalue_type hash, uint32_t rrset_flags, sldns_pkt_section section, struct regional* region) { @@ -158,13 +159,13 @@ pkt_rrset_flags(sldns_buffer* pkt, uint16_t type, sldns_pkt_section sec) return f; } -hashvalue_t +hashvalue_type pkt_hash_rrset(sldns_buffer* pkt, uint8_t* dname, uint16_t type, uint16_t dclass, uint32_t rrset_flags) { /* note this MUST be identical to rrset_key_hash in packed_rrset.c */ /* this routine handles compressed names */ - hashvalue_t h = 0xab; + hashvalue_type h = 0xab; h = dname_pkt_hash(pkt, dname, h); h = hashlittle(&type, sizeof(type), h); /* host order */ h = hashlittle(&dclass, sizeof(dclass), h); /* netw order */ @@ -173,25 +174,25 @@ pkt_hash_rrset(sldns_buffer* pkt, uint8_t* dname, uint16_t type, } /** create partial dname hash for rrset hash */ -static hashvalue_t +static hashvalue_type pkt_hash_rrset_first(sldns_buffer* pkt, uint8_t* dname) { /* works together with pkt_hash_rrset_rest */ /* note this MUST be identical to rrset_key_hash in packed_rrset.c */ /* this routine handles compressed names */ - hashvalue_t h = 0xab; + hashvalue_type h = 0xab; h = dname_pkt_hash(pkt, dname, h); return h; } /** create a rrset hash from a partial dname hash */ -static hashvalue_t -pkt_hash_rrset_rest(hashvalue_t dname_h, uint16_t type, uint16_t dclass, +static hashvalue_type +pkt_hash_rrset_rest(hashvalue_type dname_h, uint16_t type, uint16_t dclass, uint32_t rrset_flags) { /* works together with pkt_hash_rrset_first */ /* note this MUST be identical to rrset_key_hash in packed_rrset.c */ - hashvalue_t h; + hashvalue_type h; h = hashlittle(&type, sizeof(type), dname_h); /* host order */ h = hashlittle(&dclass, sizeof(dclass), h); /* netw order */ h = hashlittle(&rrset_flags, sizeof(uint32_t), h); @@ -200,7 +201,7 @@ pkt_hash_rrset_rest(hashvalue_t dname_h, uint16_t type, uint16_t dclass, /** compare rrset_parse with data */ static int -rrset_parse_equals(struct rrset_parse* p, sldns_buffer* pkt, hashvalue_t h, +rrset_parse_equals(struct rrset_parse* p, sldns_buffer* pkt, hashvalue_type h, uint32_t rrset_flags, uint8_t* dname, size_t dnamelen, uint16_t type, uint16_t dclass) { @@ -214,8 +215,8 @@ rrset_parse_equals(struct rrset_parse* p, sldns_buffer* pkt, hashvalue_t h, struct rrset_parse* msgparse_hashtable_lookup(struct msg_parse* msg, sldns_buffer* pkt, - hashvalue_t h, uint32_t rrset_flags, uint8_t* dname, size_t dnamelen, - uint16_t type, uint16_t dclass) + hashvalue_type h, uint32_t rrset_flags, uint8_t* dname, + size_t dnamelen, uint16_t type, uint16_t dclass) { struct rrset_parse* p = msg->hashtable[h & (PARSE_TABLE_SIZE-1)]; while(p) { @@ -387,7 +388,7 @@ change_rrsig_rrset(struct rrset_parse* sigset, struct msg_parse* msg, int hasother, sldns_pkt_section section, struct regional* region) { struct rrset_parse* dataset = sigset; - hashvalue_t hash = pkt_hash_rrset(pkt, sigset->dname, datatype, + hashvalue_type hash = pkt_hash_rrset(pkt, sigset->dname, datatype, sigset->rrset_class, rrset_flags); log_assert( sigset->type == LDNS_RR_TYPE_RRSIG ); log_assert( datatype != LDNS_RR_TYPE_RRSIG ); @@ -454,14 +455,14 @@ change_rrsig_rrset(struct rrset_parse* sigset, struct msg_parse* msg, */ static int find_rrset(struct msg_parse* msg, sldns_buffer* pkt, uint8_t* dname, - size_t dnamelen, uint16_t type, uint16_t dclass, hashvalue_t* hash, + size_t dnamelen, uint16_t type, uint16_t dclass, hashvalue_type* hash, uint32_t* rrset_flags, uint8_t** prev_dname_first, uint8_t** prev_dname_last, size_t* prev_dnamelen, uint16_t* prev_type, uint16_t* prev_dclass, struct rrset_parse** rrset_prev, sldns_pkt_section section, struct regional* region) { - hashvalue_t dname_h = pkt_hash_rrset_first(pkt, dname); + hashvalue_type dname_h = pkt_hash_rrset_first(pkt, dname); uint16_t covtype; if(*rrset_prev) { /* check if equal to previous item */ @@ -823,7 +824,7 @@ parse_section(sldns_buffer* pkt, struct msg_parse* msg, uint16_t type, prev_type = 0; uint16_t dclass, prev_dclass = 0; uint32_t rrset_flags = 0; - hashvalue_t hash = 0; + hashvalue_type hash = 0; struct rrset_parse* rrset = NULL; int r; @@ -933,13 +934,41 @@ parse_packet(sldns_buffer* pkt, struct msg_parse* msg, struct regional* region) return 0; } +/** parse EDNS options from EDNS wireformat rdata */ +static int +parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, + struct edns_data* edns, struct regional* region) +{ + /* while still more options, and have code+len to read */ + /* ignores partial content (i.e. rdata len 3) */ + while(rdata_len >= 4) { + uint16_t opt_code = sldns_read_uint16(rdata_ptr); + uint16_t opt_len = sldns_read_uint16(rdata_ptr+2); + rdata_ptr += 4; + rdata_len -= 4; + if(opt_len > rdata_len) + break; /* option code partial */ + if(!edns_opt_append(edns, region, opt_code, opt_len, + rdata_ptr)) { + log_err("out of memory"); + return 0; + } + rdata_ptr += opt_len; + rdata_len -= opt_len; + } + return 1; +} + int -parse_extract_edns(struct msg_parse* msg, struct edns_data* edns) +parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, + struct regional* region) { struct rrset_parse* rrset = msg->rrset_first; struct rrset_parse* prev = 0; struct rrset_parse* found = 0; struct rrset_parse* found_prev = 0; + size_t rdata_len; + uint8_t* rdata_ptr; /* since the class encodes the UDP size, we cannot use hash table to * find the EDNS OPT record. Scan the packet. */ while(rrset) { @@ -986,16 +1015,58 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns) edns->edns_version = found->rr_last->ttl_data[1]; edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]); edns->udp_size = ntohs(found->rrset_class); - /* ignore rdata and rrsigs */ + edns->opt_list = NULL; + + /* take the options */ + rdata_len = found->rr_first->size-2; + rdata_ptr = found->rr_first->ttl_data+6; + if(!parse_edns_options(rdata_ptr, rdata_len, edns, region)) + return 0; + + /* ignore rrsigs */ + return 0; } +/** skip RR in packet */ +static int +skip_pkt_rr(sldns_buffer* pkt) +{ + if(sldns_buffer_remaining(pkt) < 1) return 0; + if(!pkt_dname_len(pkt)) + return 0; + if(sldns_buffer_remaining(pkt) < 4) return 0; + sldns_buffer_skip(pkt, 4); /* type and class */ + if(!skip_ttl_rdata(pkt)) + return 0; + return 1; +} + +/** skip RRs from packet */ +static int +skip_pkt_rrs(sldns_buffer* pkt, int num) +{ + int i; + for(i=0; i 1) { return LDNS_RCODE_FORMERR; @@ -1017,6 +1088,36 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns) edns->ext_rcode = sldns_buffer_read_u8(pkt); /* ttl used for bits */ edns->edns_version = sldns_buffer_read_u8(pkt); edns->bits = sldns_buffer_read_u16(pkt); - /* ignore rdata and rrsigs */ + edns->opt_list = NULL; + + /* take the options */ + rdata_len = sldns_buffer_read_u16(pkt); + if(sldns_buffer_remaining(pkt) < rdata_len) + return LDNS_RCODE_FORMERR; + rdata_ptr = sldns_buffer_current(pkt); + if(!parse_edns_options(rdata_ptr, rdata_len, edns, region)) + return LDNS_RCODE_SERVFAIL; + + /* ignore rrsigs */ + return 0; } + +void +log_edns_opt_list(enum verbosity_value level, const char* info_str, + struct edns_option* list) +{ + if(verbosity >= level && list) { + char str[128], *s; + size_t slen; + verbose(level, "%s", info_str); + while(list) { + s = str; + slen = sizeof(str); + (void)sldns_wire2str_edns_option_print(&s, &slen, list->opt_code, + list->opt_data, list->opt_len); + verbose(level, " %s", str); + list = list->next; + } + } +} diff --git a/external/unbound/util/data/msgparse.h b/external/unbound/util/data/msgparse.h index 44497c8..e21f850 100644 --- a/external/unbound/util/data/msgparse.h +++ b/external/unbound/util/data/msgparse.h @@ -69,6 +69,7 @@ struct sldns_buffer; struct rrset_parse; struct rr_parse; struct regional; +struct edns_option; /** number of buckets in parse rrset hash table. Must be power of 2. */ #define PARSE_TABLE_SIZE 32 @@ -137,7 +138,7 @@ struct rrset_parse { /** next in list of all rrsets */ struct rrset_parse* rrset_all_next; /** hash value of rrset */ - hashvalue_t hash; + hashvalue_type hash; /** which section was it found in: one of * LDNS_SECTION_ANSWER, LDNS_SECTION_AUTHORITY, LDNS_SECTION_ADDITIONAL */ @@ -202,7 +203,8 @@ struct rr_parse { /** * EDNS data storage - * EDNS rdata is ignored. + * rdata is parsed in a list (has accessor functions). allocated in a + * region. */ struct edns_data { /** if EDNS OPT record was present */ @@ -215,6 +217,22 @@ struct edns_data { uint16_t bits; /** UDP reassembly size. */ uint16_t udp_size; + /** rdata element list, or NULL if none */ + struct edns_option* opt_list; +}; + +/** + * EDNS option + */ +struct edns_option { + /** next item in list */ + struct edns_option* next; + /** type of this edns option */ + uint16_t opt_code; + /** length of this edns option (cannot exceed uint16 in encoding) */ + size_t opt_len; + /** data of this edns option; allocated in region, or NULL if len=0 */ + uint8_t* opt_data; }; /** @@ -249,10 +267,12 @@ int parse_packet(struct sldns_buffer* pkt, struct msg_parse* msg, * @param msg: parsed message structure. Modified on exit, if EDNS was present * it is removed from the additional section. * @param edns: the edns data is stored here. Does not have to be initialised. + * @param region: region to alloc results in (edns option contents) * @return: 0 on success. or an RCODE on an error. * RCODE formerr if OPT in wrong section, and so on. */ -int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns); +int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, + struct regional* region); /** * If EDNS data follows a query section, extract it and initialize edns struct. @@ -260,10 +280,12 @@ int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns); * section. At end, right after EDNS data or no movement if failed. * @param edns: the edns data allocated by the caller. Does not have to be * initialised. + * @param region: region to alloc results in (edns option contents) * @return: 0 on success, or an RCODE on error. * RCODE formerr if OPT is badly formatted and so on. */ -int parse_edns_from_pkt(struct sldns_buffer* pkt, struct edns_data* edns); +int parse_edns_from_pkt(struct sldns_buffer* pkt, struct edns_data* edns, + struct regional* region); /** * Calculate hash value for rrset in packet. @@ -274,8 +296,8 @@ int parse_edns_from_pkt(struct sldns_buffer* pkt, struct edns_data* edns); * @param rrset_flags: rrset flags (same as packed_rrset flags). * @return hash value */ -hashvalue_t pkt_hash_rrset(struct sldns_buffer* pkt, uint8_t* dname, uint16_t type, - uint16_t dclass, uint32_t rrset_flags); +hashvalue_type pkt_hash_rrset(struct sldns_buffer* pkt, uint8_t* dname, + uint16_t type, uint16_t dclass, uint32_t rrset_flags); /** * Lookup in msg hashtable to find a rrset. @@ -290,7 +312,7 @@ hashvalue_t pkt_hash_rrset(struct sldns_buffer* pkt, uint8_t* dname, uint16_t ty * @return NULL or the rrset_parse if found. */ struct rrset_parse* msgparse_hashtable_lookup(struct msg_parse* msg, - struct sldns_buffer* pkt, hashvalue_t h, uint32_t rrset_flags, + struct sldns_buffer* pkt, hashvalue_type h, uint32_t rrset_flags, uint8_t* dname, size_t dnamelen, uint16_t type, uint16_t dclass); /** @@ -300,4 +322,13 @@ struct rrset_parse* msgparse_hashtable_lookup(struct msg_parse* msg, */ void msgparse_bucket_remove(struct msg_parse* msg, struct rrset_parse* rrset); +/** + * Log the edns options in the edns option list. + * @param level: the verbosity level. + * @param info_str: the informational string to be printed before the options. + * @param list: the edns option list. + */ +void log_edns_opt_list(enum verbosity_value level, const char* info_str, + struct edns_option* list); + #endif /* UTIL_DATA_MSGPARSE_H */ diff --git a/external/unbound/util/data/msgreply.c b/external/unbound/util/data/msgreply.c index 06593ff..772f5d1 100644 --- a/external/unbound/util/data/msgreply.c +++ b/external/unbound/util/data/msgreply.c @@ -52,6 +52,8 @@ #include "util/data/msgencode.h" #include "sldns/sbuffer.h" #include "sldns/wire2str.h" +#include "util/module.h" +#include "util/fptr_wlist.h" /** MAX TTL default for messages and rrsets */ time_t MAX_TTL = 3600 * 24 * 10; /* ten days */ @@ -76,6 +78,7 @@ parse_create_qinfo(sldns_buffer* pkt, struct msg_parse* msg, qinf->qname_len = msg->qname_len; qinf->qtype = msg->qtype; qinf->qclass = msg->qclass; + qinf->local_alias = NULL; return 1; } @@ -130,9 +133,8 @@ parse_create_repinfo(struct msg_parse* msg, struct reply_info** rep, return 1; } -/** allocate (special) rrset keys, return 0 on error */ -static int -repinfo_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache* alloc, +int +reply_info_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache* alloc, struct regional* region) { size_t i; @@ -435,7 +437,7 @@ parse_create_msg(sldns_buffer* pkt, struct msg_parse* msg, return 0; if(!parse_create_repinfo(msg, rep, region)) return 0; - if(!repinfo_alloc_rrset_keys(*rep, alloc, region)) + if(!reply_info_alloc_rrset_keys(*rep, alloc, region)) return 0; if(!parse_copy_decompress(pkt, msg, *rep, region)) return 0; @@ -451,6 +453,7 @@ int reply_info_parse(sldns_buffer* pkt, struct alloc_cache* alloc, int ret; qinf->qname = NULL; + qinf->local_alias = NULL; *rep = NULL; if(!(msg = regional_alloc(region, sizeof(*msg)))) { return LDNS_RCODE_SERVFAIL; @@ -461,7 +464,7 @@ int reply_info_parse(sldns_buffer* pkt, struct alloc_cache* alloc, if((ret = parse_packet(pkt, msg, region)) != 0) { return ret; } - if((ret = parse_extract_edns(msg, edns)) != 0) + if((ret = parse_extract_edns(msg, edns, region)) != 0) return ret; /* parse OK, allocate return structures */ @@ -531,8 +534,9 @@ query_info_parse(struct query_info* m, sldns_buffer* query) /* minimum size: header + \0 + qtype + qclass */ if(sldns_buffer_limit(query) < LDNS_HEADER_SIZE + 5) return 0; - if(LDNS_OPCODE_WIRE(q) != LDNS_PACKET_QUERY || - LDNS_QDCOUNT(q) != 1 || sldns_buffer_position(query) != 0) + if((LDNS_OPCODE_WIRE(q) != LDNS_PACKET_QUERY && LDNS_OPCODE_WIRE(q) != + LDNS_PACKET_NOTIFY) || LDNS_QDCOUNT(q) != 1 || + sldns_buffer_position(query) != 0) return 0; sldns_buffer_skip(query, LDNS_HEADER_SIZE); m->qname = sldns_buffer_current(query); @@ -542,6 +546,7 @@ query_info_parse(struct query_info* m, sldns_buffer* query) return 0; /* need qtype, qclass */ m->qtype = sldns_buffer_read_u16(query); m->qclass = sldns_buffer_read_u16(query); + m->local_alias = NULL; return 1; } @@ -603,10 +608,10 @@ reply_info_delete(void* d, void* ATTR_UNUSED(arg)) free(r); } -hashvalue_t +hashvalue_type query_info_hash(struct query_info *q, uint16_t flags) { - hashvalue_t h = 0xab; + hashvalue_type h = 0xab; h = hashlittle(&q->qtype, sizeof(q->qtype), h); if(q->qtype == LDNS_RR_TYPE_AAAA && (flags&BIT_CD)) h++; @@ -617,7 +622,7 @@ query_info_hash(struct query_info *q, uint16_t flags) struct msgreply_entry* query_info_entrysetup(struct query_info* q, struct reply_info* r, - hashvalue_t h) + hashvalue_type h) { struct msgreply_entry* e = (struct msgreply_entry*)malloc( sizeof(struct msgreply_entry)); @@ -627,9 +632,14 @@ query_info_entrysetup(struct query_info* q, struct reply_info* r, e->entry.key = e; e->entry.data = r; lock_rw_init(&e->entry.lock); - lock_protect(&e->entry.lock, &e->key, sizeof(e->key)); - lock_protect(&e->entry.lock, &e->entry.hash, sizeof(e->entry.hash) + - sizeof(e->entry.key) + sizeof(e->entry.data)); + lock_protect(&e->entry.lock, &e->key.qname, sizeof(e->key.qname)); + lock_protect(&e->entry.lock, &e->key.qname_len, sizeof(e->key.qname_len)); + lock_protect(&e->entry.lock, &e->key.qtype, sizeof(e->key.qtype)); + lock_protect(&e->entry.lock, &e->key.qclass, sizeof(e->key.qclass)); + lock_protect(&e->entry.lock, &e->key.local_alias, sizeof(e->key.local_alias)); + lock_protect(&e->entry.lock, &e->entry.hash, sizeof(e->entry.hash)); + lock_protect(&e->entry.lock, &e->entry.key, sizeof(e->entry.key)); + lock_protect(&e->entry.lock, &e->entry.data, sizeof(e->entry.data)); lock_protect(&e->entry.lock, e->key.qname, e->key.qname_len); q->qname = NULL; return e; @@ -683,7 +693,7 @@ reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, if(!cp) return NULL; /* allocate ub_key structures special or not */ - if(!repinfo_alloc_rrset_keys(cp, alloc, region)) { + if(!reply_info_alloc_rrset_keys(cp, alloc, region)) { if(!region) reply_info_parsedelete(cp, alloc); return NULL; @@ -814,7 +824,41 @@ log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* rep) regional_destroy(region); } -void +void +log_reply_info(enum verbosity_value v, struct query_info *qinf, + struct sockaddr_storage *addr, socklen_t addrlen, struct timeval dur, + int cached, struct sldns_buffer *rmsg) +{ + char qname_buf[LDNS_MAX_DOMAINLEN+1]; + char clientip_buf[128]; + char rcode_buf[16]; + char type_buf[16]; + char class_buf[16]; + size_t pktlen; + uint16_t rcode = FLAGS_GET_RCODE(sldns_buffer_read_u16_at(rmsg, 2)); + + if(verbosity < v) + return; + + sldns_wire2str_rcode_buf((int)rcode, rcode_buf, sizeof(rcode_buf)); + addr_to_str(addr, addrlen, clientip_buf, sizeof(clientip_buf)); + if(rcode == LDNS_RCODE_FORMERR) + { + log_info("%s - - - %s - - - ", clientip_buf, rcode_buf); + } else { + if(qinf->qname) + dname_str(qinf->qname, qname_buf); + else snprintf(qname_buf, sizeof(qname_buf), "null"); + pktlen = sldns_buffer_limit(rmsg); + sldns_wire2str_type_buf(qinf->qtype, type_buf, sizeof(type_buf)); + sldns_wire2str_class_buf(qinf->qclass, class_buf, sizeof(class_buf)); + log_info("%s %s %s %s %s " ARG_LL "d.%6.6d %d %d", + clientip_buf, qname_buf, type_buf, class_buf, + rcode_buf, (long long)dur.tv_sec, (int)dur.tv_usec, cached, (int)pktlen); + } +} + +void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf) { @@ -857,3 +901,336 @@ reply_all_rrsets_secure(struct reply_info* rep) } return 1; } + +struct reply_info* +parse_reply_in_temp_region(sldns_buffer* pkt, struct regional* region, + struct query_info* qi) +{ + struct reply_info* rep; + struct msg_parse* msg; + if(!(msg = regional_alloc(region, sizeof(*msg)))) { + return NULL; + } + memset(msg, 0, sizeof(*msg)); + sldns_buffer_set_position(pkt, 0); + if(parse_packet(pkt, msg, region) != 0) + return 0; + if(!parse_create_msg(pkt, msg, NULL, qi, &rep, region)) { + return 0; + } + return rep; +} + +int edns_opt_append(struct edns_data* edns, struct regional* region, + uint16_t code, size_t len, uint8_t* data) +{ + struct edns_option** prevp; + struct edns_option* opt; + + /* allocate new element */ + opt = (struct edns_option*)regional_alloc(region, sizeof(*opt)); + if(!opt) + return 0; + opt->next = NULL; + opt->opt_code = code; + opt->opt_len = len; + opt->opt_data = NULL; + if(len > 0) { + opt->opt_data = regional_alloc_init(region, data, len); + if(!opt->opt_data) + return 0; + } + + /* append at end of list */ + prevp = &edns->opt_list; + while(*prevp != NULL) + prevp = &((*prevp)->next); + *prevp = opt; + return 1; +} + +int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, + uint8_t* data, struct regional* region) +{ + struct edns_option** prevp; + struct edns_option* opt; + + /* allocate new element */ + opt = (struct edns_option*)regional_alloc(region, sizeof(*opt)); + if(!opt) + return 0; + opt->next = NULL; + opt->opt_code = code; + opt->opt_len = len; + opt->opt_data = NULL; + if(len > 0) { + opt->opt_data = regional_alloc_init(region, data, len); + if(!opt->opt_data) + return 0; + } + + /* append at end of list */ + prevp = list; + while(*prevp != NULL) { + prevp = &((*prevp)->next); + } + *prevp = opt; + return 1; +} + +int edns_opt_list_remove(struct edns_option** list, uint16_t code) +{ + /* The list should already be allocated in a region. Freeing the + * allocated space in a region is not possible. We just unlink the + * required elements and they will be freed together with the region. */ + + struct edns_option* prev; + struct edns_option* curr; + if(!list || !(*list)) return 0; + + /* Unlink and repoint if the element(s) are first in list */ + while(list && *list && (*list)->opt_code == code) { + *list = (*list)->next; + } + + if(!list || !(*list)) return 1; + /* Unlink elements and reattach the list */ + prev = *list; + curr = (*list)->next; + while(curr != NULL) { + if(curr->opt_code == code) { + prev->next = curr->next; + curr = curr->next; + } else { + prev = curr; + curr = curr->next; + } + } + return 1; +} + +static int inplace_cb_reply_call_generic( + struct inplace_cb* callback_list, enum inplace_cb_list_type type, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region) +{ + struct inplace_cb* cb; + struct edns_option* opt_list_out = NULL; +#if defined(EXPORT_ALL_SYMBOLS) + (void)type; /* param not used when fptr_ok disabled */ +#endif + if(qstate) + opt_list_out = qstate->edns_opts_front_out; + for(cb=callback_list; cb; cb=cb->next) { + fptr_ok(fptr_whitelist_inplace_cb_reply_generic( + (inplace_cb_reply_func_type*)cb->cb, type)); + (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep, + rcode, edns, &opt_list_out, region, cb->id, cb->cb_arg); + } + edns->opt_list = opt_list_out; + return 1; +} + +int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct regional* region) +{ + return inplace_cb_reply_call_generic( + env->inplace_cb_lists[inplace_cb_reply], inplace_cb_reply, qinfo, + qstate, rep, rcode, edns, region); +} + +int inplace_cb_reply_cache_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region) +{ + return inplace_cb_reply_call_generic( + env->inplace_cb_lists[inplace_cb_reply_cache], inplace_cb_reply_cache, + qinfo, qstate, rep, rcode, edns, region); +} + +int inplace_cb_reply_local_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region) +{ + return inplace_cb_reply_call_generic( + env->inplace_cb_lists[inplace_cb_reply_local], inplace_cb_reply_local, + qinfo, qstate, rep, rcode, edns, region); +} + +int inplace_cb_reply_servfail_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region) +{ + /* We are going to servfail. Remove any potential edns options. */ + if(qstate) + qstate->edns_opts_front_out = NULL; + return inplace_cb_reply_call_generic( + env->inplace_cb_lists[inplace_cb_reply_servfail], + inplace_cb_reply_servfail, qinfo, qstate, rep, rcode, edns, region); +} + +int inplace_cb_query_call(struct module_env* env, struct query_info* qinfo, + uint16_t flags, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, struct module_qstate* qstate, + struct regional* region) +{ + struct inplace_cb* cb = env->inplace_cb_lists[inplace_cb_query]; + for(; cb; cb=cb->next) { + fptr_ok(fptr_whitelist_inplace_cb_query( + (inplace_cb_query_func_type*)cb->cb)); + (void)(*(inplace_cb_query_func_type*)cb->cb)(qinfo, flags, + qstate, addr, addrlen, zone, zonelen, region, + cb->id, cb->cb_arg); + } + return 1; +} + +int inplace_cb_edns_back_parsed_call(struct module_env* env, + struct module_qstate* qstate) +{ + struct inplace_cb* cb = + env->inplace_cb_lists[inplace_cb_edns_back_parsed]; + for(; cb; cb=cb->next) { + fptr_ok(fptr_whitelist_inplace_cb_edns_back_parsed( + (inplace_cb_edns_back_parsed_func_type*)cb->cb)); + (void)(*(inplace_cb_edns_back_parsed_func_type*)cb->cb)(qstate, + cb->id, cb->cb_arg); + } + return 1; +} + +int inplace_cb_query_response_call(struct module_env* env, + struct module_qstate* qstate, struct dns_msg* response) { + struct inplace_cb* cb = + env->inplace_cb_lists[inplace_cb_query_response]; + for(; cb; cb=cb->next) { + fptr_ok(fptr_whitelist_inplace_cb_query_response( + (inplace_cb_query_response_func_type*)cb->cb)); + (void)(*(inplace_cb_query_response_func_type*)cb->cb)(qstate, + response, cb->id, cb->cb_arg); + } + return 1; +} + +struct edns_option* edns_opt_copy_region(struct edns_option* list, + struct regional* region) +{ + struct edns_option* result = NULL, *cur = NULL, *s; + while(list) { + /* copy edns option structure */ + s = regional_alloc_init(region, list, sizeof(*list)); + if(!s) return NULL; + s->next = NULL; + + /* copy option data */ + if(s->opt_data) { + s->opt_data = regional_alloc_init(region, s->opt_data, + s->opt_len); + if(!s->opt_data) + return NULL; + } + + /* link into list */ + if(cur) + cur->next = s; + else result = s; + cur = s; + + /* examine next element */ + list = list->next; + } + return result; +} + +int edns_opt_compare(struct edns_option* p, struct edns_option* q) +{ + if(!p && !q) return 0; + if(!p) return -1; + if(!q) return 1; + log_assert(p && q); + if(p->opt_code != q->opt_code) + return (int)q->opt_code - (int)p->opt_code; + if(p->opt_len != q->opt_len) + return (int)q->opt_len - (int)p->opt_len; + if(p->opt_len != 0) + return memcmp(p->opt_data, q->opt_data, p->opt_len); + return 0; +} + +int edns_opt_list_compare(struct edns_option* p, struct edns_option* q) +{ + int r; + while(p && q) { + r = edns_opt_compare(p, q); + if(r != 0) + return r; + p = p->next; + q = q->next; + } + if(p || q) { + /* uneven length lists */ + if(p) return 1; + if(q) return -1; + } + return 0; +} + +void edns_opt_list_free(struct edns_option* list) +{ + struct edns_option* n; + while(list) { + free(list->opt_data); + n = list->next; + free(list); + list = n; + } +} + +struct edns_option* edns_opt_copy_alloc(struct edns_option* list) +{ + struct edns_option* result = NULL, *cur = NULL, *s; + while(list) { + /* copy edns option structure */ + s = memdup(list, sizeof(*list)); + if(!s) { + edns_opt_list_free(result); + return NULL; + } + s->next = NULL; + + /* copy option data */ + if(s->opt_data) { + s->opt_data = memdup(s->opt_data, s->opt_len); + if(!s->opt_data) { + free(s); + edns_opt_list_free(result); + return NULL; + } + } + + /* link into list */ + if(cur) + cur->next = s; + else result = s; + cur = s; + + /* examine next element */ + list = list->next; + } + return result; +} + +struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code) +{ + struct edns_option* p; + for(p=list; p; p=p->next) { + if(p->opt_code == code) + return p; + } + return NULL; +} diff --git a/external/unbound/util/data/msgreply.h b/external/unbound/util/data/msgreply.h index 7088979..60e6438 100644 --- a/external/unbound/util/data/msgreply.h +++ b/external/unbound/util/data/msgreply.h @@ -49,8 +49,14 @@ struct alloc_cache; struct iovec; struct regional; struct edns_data; +struct edns_option; +struct inplace_cb; +struct module_qstate; +struct module_env; struct msg_parse; struct rrset_parse; +struct local_rrset; +struct dns_msg; /** calculate the prefetch TTL as 90% of original. Calculation * without numerical overflow (uin32_t) */ @@ -73,6 +79,23 @@ struct query_info { uint16_t qtype; /** qclass, host byte order */ uint16_t qclass; + /** + * Alias local answer(s) for the qname. If 'qname' is an alias defined + * in a local zone, this field will be set to the corresponding local + * RRset when the alias is determined. + * In the initial implementation this can only be a single CNAME RR + * (or NULL), but it could possibly be extended to be a DNAME or a + * chain of aliases. + * Users of this structure are responsible to initialize this field + * to be NULL; otherwise other part of query handling code may be + * confused. + * Users also have to be careful about the lifetime of data. On return + * from local zone lookup, it may point to data derived from + * configuration that may be dynamically invalidated or data allocated + * in an ephemeral regional allocator. A deep copy of the data may + * have to be generated if it has to be kept during iterative + * resolution. */ + struct local_rrset* local_alias; }; /** @@ -82,7 +105,7 @@ struct rrset_ref { /** the key with lock, and ptr to packed data. */ struct ub_packed_rrset_key* key; /** id needed */ - rrset_id_t id; + rrset_id_type id; }; /** @@ -262,6 +285,10 @@ int parse_create_msg(struct sldns_buffer* pkt, struct msg_parse* msg, struct alloc_cache* alloc, struct query_info* qinf, struct reply_info** rep, struct regional* region); +/** get msg reply struct (in temp region) */ +struct reply_info* parse_reply_in_temp_region(struct sldns_buffer* pkt, + struct regional* region, struct query_info* qi); + /** * Sorts the ref array. * @param rep: reply info. rrsets must be filled in. @@ -307,7 +334,7 @@ void reply_info_delete(void* d, void* arg); /** calculate hash value of query_info, lowercases the qname, * uses CD flag for AAAA qtype */ -hashvalue_t query_info_hash(struct query_info *q, uint16_t flags); +hashvalue_type query_info_hash(struct query_info *q, uint16_t flags); /** * Setup query info entry @@ -317,7 +344,7 @@ hashvalue_t query_info_hash(struct query_info *q, uint16_t flags); * @return: newly allocated message reply cache item. */ struct msgreply_entry* query_info_entrysetup(struct query_info* q, - struct reply_info* r, hashvalue_t h); + struct reply_info* r, hashvalue_type h); /** * Copy reply_info and all rrsets in it and allocate. @@ -333,6 +360,21 @@ struct msgreply_entry* query_info_entrysetup(struct query_info* q, struct reply_info* reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, struct regional* region); +/** + * Allocate (special) rrset keys. + * @param rep: reply info in which the rrset keys to be allocated, rrset[] + * array should have bee allocated with NULL pointers. + * @param alloc: how to allocate rrset keys. + * Not used if region!=NULL, it can be NULL in that case. + * @param region: if this parameter is NULL then the alloc is used. + * otherwise, rrset keys are allocated in this region. + * In a region, no special rrset key structures are needed (not shared). + * and no rrset_ref array in the reply needs to be built up. + * @return 1 on success, 0 on error + */ +int reply_info_alloc_rrset_keys(struct reply_info* rep, + struct alloc_cache* alloc, struct regional* region); + /** * Copy a parsed rrset into given key, decompressing and allocating rdata. * @param pkt: packet for decompression @@ -425,9 +467,26 @@ struct ub_packed_rrset_key* reply_find_rrset(struct reply_info* rep, * @param qinfo: query section. * @param rep: rest of message. */ -void log_dns_msg(const char* str, struct query_info* qinfo, +void log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* rep); +/** + * Print string with neat domain name, type, class, + * status code from, and size of a query response. + * + * @param v: at what verbosity level to print this. + * @param qinf: query section. + * @param addr: address of the client. + * @param addrlen: length of the client address. + * @param dur: how long it took to complete the query. + * @param cached: whether or not the reply is coming from + * the cache, or an outside network. + * @param rmsg: sldns buffer packet. + */ +void log_reply_info(enum verbosity_value v, struct query_info *qinf, + struct sockaddr_storage *addr, socklen_t addrlen, struct timeval dur, + int cached, struct sldns_buffer *rmsg); + /** * Print string with neat domain name, type, class from query info. * @param v: at what verbosity level to print this. @@ -437,4 +496,183 @@ void log_dns_msg(const char* str, struct query_info* qinfo, void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf); +/** + * Append edns option to edns data structure + * @param edns: the edns data structure to append the edns option to. + * @param region: region to allocate the new edns option. + * @param code: the edns option's code. + * @param len: the edns option's length. + * @param data: the edns option's data. + * @return false on failure. + */ +int edns_opt_append(struct edns_data* edns, struct regional* region, + uint16_t code, size_t len, uint8_t* data); + +/** + * Append edns option to edns option list + * @param list: the edns option list to append the edns option to. + * @param code: the edns option's code. + * @param len: the edns option's length. + * @param data: the edns option's data. + * @param region: region to allocate the new edns option. + * @return false on failure. + */ +int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, + uint8_t* data, struct regional* region); + +/** + * Remove any option found on the edns option list that matches the code. + * @param list: the list of edns options. + * @param code: the opt code to remove. + * @return true when at least one edns option was removed, false otherwise. + */ +int edns_opt_list_remove(struct edns_option** list, uint16_t code); + +/** + * Find edns option in edns list + * @param list: list of edns options (eg. edns.opt_list) + * @param code: opt code to find. + * @return NULL or the edns_option element. + */ +struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); + +/** + * Call the registered functions in the inplace_cb_reply linked list. + * This function is going to get called while answering with a resolved query. + * @param env: module environment. + * @param qinfo: query info. + * @param qstate: module qstate. + * @param rep: Reply info. Could be NULL. + * @param rcode: return code. + * @param edns: edns data of the reply. + * @param region: region to store data. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct regional* region); + +/** + * Call the registered functions in the inplace_cb_reply_cache linked list. + * This function is going to get called while answering from cache. + * @param env: module environment. + * @param qinfo: query info. + * @param qstate: module qstate. NULL when replying from cache. + * @param rep: Reply info. + * @param rcode: return code. + * @param edns: edns data of the reply. Edns input can be found here. + * @param region: region to store data. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_reply_cache_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region); + +/** + * Call the registered functions in the inplace_cb_reply_local linked list. + * This function is going to get called while answering with local data. + * @param env: module environment. + * @param qinfo: query info. + * @param qstate: module qstate. NULL when replying from cache. + * @param rep: Reply info. + * @param rcode: return code. + * @param edns: edns data of the reply. Edns input can be found here. + * @param region: region to store data. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_reply_local_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region); + +/** + * Call the registered functions in the inplace_cb_reply linked list. + * This function is going to get called while answering with a servfail. + * @param env: module environment. + * @param qinfo: query info. + * @param qstate: module qstate. Contains the edns option lists. Could be NULL. + * @param rep: Reply info. NULL when servfail. + * @param rcode: return code. LDNS_RCODE_SERVFAIL. + * @param edns: edns data of the reply. Edns input can be found here if qstate + * is NULL. + * @param region: region to store data. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_reply_servfail_call(struct module_env* env, + struct query_info* qinfo, struct module_qstate* qstate, + struct reply_info* rep, int rcode, struct edns_data* edns, + struct regional* region); + +/** + * Call the registered functions in the inplace_cb_query linked list. + * This function is going to get called just before sending a query to a + * nameserver. + * @param env: module environment. + * @param qinfo: query info. + * @param flags: flags of the query. + * @param addr: to which server to send the query. + * @param addrlen: length of addr. + * @param zone: name of the zone of the delegation point. wireformat dname. + * This is the delegation point name for which the server is deemed + * authoritative. + * @param zonelen: length of zone. + * @param qstate: module qstate. + * @param region: region to store data. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_query_call(struct module_env* env, struct query_info* qinfo, + uint16_t flags, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, struct module_qstate* qstate, + struct regional* region); + +/** + * Call the registered functions in the inplace_cb_edns_back_parsed linked list. + * This function is going to get called after parsing the EDNS data on the + * reply from a nameserver. + * @param env: module environment. + * @param qstate: module qstate. + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_edns_back_parsed_call(struct module_env* env, + struct module_qstate* qstate); + +/** + * Call the registered functions in the inplace_cb_query_response linked list. + * This function is going to get called after receiving a reply from a + * nameserver. + * @param env: module environment. + * @param qstate: module qstate. + * @param response: received response + * @return false on failure (a callback function returned an error). + */ +int inplace_cb_query_response_call(struct module_env* env, + struct module_qstate* qstate, struct dns_msg* response); + +/** + * Copy edns option list allocated to the new region + */ +struct edns_option* edns_opt_copy_region(struct edns_option* list, + struct regional* region); + +/** + * Copy edns option list allocated with malloc + */ +struct edns_option* edns_opt_copy_alloc(struct edns_option* list); + +/** + * Free edns option list allocated with malloc + */ +void edns_opt_list_free(struct edns_option* list); + +/** + * Compare an edns option. (not entire list). Also compares contents. + */ +int edns_opt_compare(struct edns_option* p, struct edns_option* q); + +/** + * Compare edns option lists, also the order and contents of edns-options. + */ +int edns_opt_list_compare(struct edns_option* p, struct edns_option* q); + #endif /* UTIL_DATA_MSGREPLY_H */ diff --git a/external/unbound/util/data/packed_rrset.c b/external/unbound/util/data/packed_rrset.c index 6639908..7b9d549 100644 --- a/external/unbound/util/data/packed_rrset.c +++ b/external/unbound/util/data/packed_rrset.c @@ -158,14 +158,14 @@ rrsetdata_equal(struct packed_rrset_data* d1, struct packed_rrset_data* d2) return 1; } -hashvalue_t +hashvalue_type rrset_key_hash(struct packed_rrset_key* key) { /* type is hashed in host order */ uint16_t t = ntohs(key->type); /* Note this MUST be identical to pkt_hash_rrset in msgparse.c */ /* this routine does not have a compressed name */ - hashvalue_t h = 0xab; + hashvalue_type h = 0xab; h = dname_query_hash(key->dname, h); h = hashlittle(&t, sizeof(t), h); h = hashlittle(&key->rrset_class, sizeof(uint16_t), h); @@ -253,6 +253,7 @@ sec_status_to_string(enum sec_status s) case sec_status_bogus: return "sec_status_bogus"; case sec_status_indeterminate: return "sec_status_indeterminate"; case sec_status_insecure: return "sec_status_insecure"; + case sec_status_secure_sentinel_fail: return "sec_status_secure_sentinel_fail"; case sec_status_secure: return "sec_status_secure"; } return "unknown_sec_status_value"; diff --git a/external/unbound/util/data/packed_rrset.h b/external/unbound/util/data/packed_rrset.h index 6039aef..3a5335d 100644 --- a/external/unbound/util/data/packed_rrset.h +++ b/external/unbound/util/data/packed_rrset.h @@ -47,7 +47,7 @@ struct regional; /** type used to uniquely identify rrsets. Cannot be reused without * clearing the cache. */ -typedef uint64_t rrset_id_t; +typedef uint64_t rrset_id_type; /** this rrset is NSEC and is at zone apex (at child side of zonecut) */ #define PACKED_RRSET_NSEC_AT_APEX 0x1 @@ -57,6 +57,10 @@ typedef uint64_t rrset_id_t; * this is set on SOA rrsets in the authority section, to keep its TTL separate * from the SOA in the answer section from a direct SOA query or ANY query. */ #define PACKED_RRSET_SOA_NEG 0x4 +/** This rrset is considered to have a fixed TTL; its TTL doesn't have to be + * updated on encoding in a reply. This flag is not expected to be set in + * cached data. */ +#define PACKED_RRSET_FIXEDTTL 0x80000000 /** number of rrs and rrsets for integer overflow protection. More than * this is not really possible (64K packet has much less RRs and RRsets) in @@ -83,6 +87,7 @@ struct packed_rrset_key { * o PACKED_RRSET_NSEC_AT_APEX * o PACKED_RRSET_PARENT_SIDE * o PACKED_RRSET_SOA_NEG + * o PACKED_RRSET_FIXEDTTL (not supposed to be cached) */ uint32_t flags; /** the rrset type in network format */ @@ -114,7 +119,7 @@ struct ub_packed_rrset_key { * The other values in this struct may only be altered after changing * the id (which needs a writelock on entry.lock). */ - rrset_id_t id; + rrset_id_type id; /** key data: dname, type and class */ struct packed_rrset_key rk; }; @@ -182,6 +187,10 @@ enum sec_status { * insecure. Generally this means that this RRset is below a trust * anchor, but also below a verified, insecure delegation. */ sec_status_insecure, + /** SECURE_SENTINEL_FAIL means that the object (RRset or message) + * validated according to local policy but did not succeed in the root + * KSK sentinel test (draft-ietf-dnsop-kskroll-sentinel). */ + sec_status_secure_sentinel_fail, /** SECURE means that the object (RRset or message) validated * according to local policy. */ sec_status_secure @@ -191,6 +200,12 @@ enum sec_status { * RRset data. * * The data is packed, stored contiguously in memory. + * + * It is not always stored contiguously, in that case, an unpacked-packed + * rrset has the arrays separate. A bunch of routines work on that, but + * the packed rrset that is contiguous is for the rrset-cache and the + * cache-response routines in daemon/worker.c. + * * memory layout: * o base struct * o rr_len size_t array @@ -334,7 +349,7 @@ void rrset_data_delete(void* data, void* userdata); * @param key: the rrset key with name, type, class, flags. * @return hash value. */ -hashvalue_t rrset_key_hash(struct packed_rrset_key* key); +hashvalue_type rrset_key_hash(struct packed_rrset_key* key); /** * Fixup pointers in fixed data packed_rrset_data blob. diff --git a/external/unbound/util/fptr_wlist.c b/external/unbound/util/fptr_wlist.c index 1397e9c..302b6f7 100644 --- a/external/unbound/util/fptr_wlist.c +++ b/external/unbound/util/fptr_wlist.c @@ -49,8 +49,10 @@ #include "services/outside_network.h" #include "services/mesh.h" #include "services/localzone.h" +#include "services/authzone.h" #include "services/cache/infra.h" #include "services/cache/rrset.h" +#include "services/view.h" #include "dns64/dns64.h" #include "iterator/iterator.h" #include "iterator/iter_fwd.h" @@ -74,23 +76,36 @@ #ifdef UB_ON_WINDOWS #include "winrc/win_svc.h" #endif +#include "respip/respip.h" #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef USE_CACHEDB +#include "cachedb/cachedb.h" +#endif +#ifdef USE_IPSECMOD +#include "ipsecmod/ipsecmod.h" +#endif +#ifdef CLIENT_SUBNET +#include "edns-subnet/subnetmod.h" +#endif int -fptr_whitelist_comm_point(comm_point_callback_t *fptr) +fptr_whitelist_comm_point(comm_point_callback_type *fptr) { if(fptr == &worker_handle_request) return 1; else if(fptr == &outnet_udp_cb) return 1; else if(fptr == &outnet_tcp_cb) return 1; else if(fptr == &tube_handle_listen) return 1; + else if(fptr == &auth_xfer_probe_udp_callback) return 1; + else if(fptr == &auth_xfer_transfer_tcp_callback) return 1; + else if(fptr == &auth_xfer_transfer_http_callback) return 1; return 0; } int -fptr_whitelist_comm_point_raw(comm_point_callback_t *fptr) +fptr_whitelist_comm_point_raw(comm_point_callback_type *fptr) { if(fptr == &tube_handle_listen) return 1; else if(fptr == &tube_handle_write) return 1; @@ -110,6 +125,8 @@ fptr_whitelist_comm_timer(void (*fptr)(void*)) #ifdef UB_ON_WINDOWS else if(fptr == &wsvc_cron_cb) return 1; #endif + else if(fptr == &auth_xfer_timer) return 1; + else if(fptr == &auth_xfer_probe_timer_callback) return 1; return 0; } @@ -145,6 +162,7 @@ fptr_whitelist_event(void (*fptr)(int, short, void *)) else if(fptr == &comm_point_raw_handle_callback) return 1; else if(fptr == &tube_handle_signal) return 1; else if(fptr == &comm_base_handle_slow_accept) return 1; + else if(fptr == &comm_point_http_handle_callback) return 1; #ifdef UB_ON_WINDOWS else if(fptr == &worker_win_stop_cb) return 1; #endif @@ -152,7 +170,7 @@ fptr_whitelist_event(void (*fptr)(int, short, void *)) } int -fptr_whitelist_pending_udp(comm_point_callback_t *fptr) +fptr_whitelist_pending_udp(comm_point_callback_type *fptr) { if(fptr == &serviced_udp_callback) return 1; else if(fptr == &worker_handle_reply) return 1; @@ -161,7 +179,7 @@ fptr_whitelist_pending_udp(comm_point_callback_t *fptr) } int -fptr_whitelist_pending_tcp(comm_point_callback_t *fptr) +fptr_whitelist_pending_tcp(comm_point_callback_type *fptr) { if(fptr == &serviced_tcp_callback) return 1; else if(fptr == &worker_handle_reply) return 1; @@ -170,7 +188,7 @@ fptr_whitelist_pending_tcp(comm_point_callback_t *fptr) } int -fptr_whitelist_serviced_query(comm_point_callback_t *fptr) +fptr_whitelist_serviced_query(comm_point_callback_type *fptr) { if(fptr == &worker_handle_service_reply) return 1; else if(fptr == &libworker_handle_service_reply) return 1; @@ -200,47 +218,69 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)) else if(fptr == &val_neg_zone_compare) return 1; else if(fptr == &probetree_cmp) return 1; else if(fptr == &replay_var_compare) return 1; + else if(fptr == &view_cmp) return 1; + else if(fptr == &auth_zone_cmp) return 1; + else if(fptr == &auth_data_cmp) return 1; + else if(fptr == &auth_xfer_cmp) return 1; return 0; } int -fptr_whitelist_hash_sizefunc(lruhash_sizefunc_t fptr) +fptr_whitelist_hash_sizefunc(lruhash_sizefunc_type fptr) { if(fptr == &msgreply_sizefunc) return 1; else if(fptr == &ub_rrset_sizefunc) return 1; else if(fptr == &infra_sizefunc) return 1; else if(fptr == &key_entry_sizefunc) return 1; else if(fptr == &rate_sizefunc) return 1; + else if(fptr == &ip_rate_sizefunc) return 1; else if(fptr == &test_slabhash_sizefunc) return 1; +#ifdef CLIENT_SUBNET + else if(fptr == &msg_cache_sizefunc) return 1; +#endif +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_sizefunc) return 1; + else if(fptr == &dnsc_nonces_sizefunc) return 1; +#endif return 0; } int -fptr_whitelist_hash_compfunc(lruhash_compfunc_t fptr) +fptr_whitelist_hash_compfunc(lruhash_compfunc_type fptr) { if(fptr == &query_info_compare) return 1; else if(fptr == &ub_rrset_compare) return 1; else if(fptr == &infra_compfunc) return 1; else if(fptr == &key_entry_compfunc) return 1; else if(fptr == &rate_compfunc) return 1; + else if(fptr == &ip_rate_compfunc) return 1; else if(fptr == &test_slabhash_compfunc) return 1; +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_compfunc) return 1; + else if(fptr == &dnsc_nonces_compfunc) return 1; +#endif return 0; } int -fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_t fptr) +fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_type fptr) { if(fptr == &query_entry_delete) return 1; else if(fptr == &ub_rrset_key_delete) return 1; else if(fptr == &infra_delkeyfunc) return 1; else if(fptr == &key_entry_delkeyfunc) return 1; else if(fptr == &rate_delkeyfunc) return 1; + else if(fptr == &ip_rate_delkeyfunc) return 1; else if(fptr == &test_slabhash_delkey) return 1; +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_delkeyfunc) return 1; + else if(fptr == &dnsc_nonces_delkeyfunc) return 1; +#endif return 0; } int -fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_t fptr) +fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_type fptr) { if(fptr == &reply_info_delete) return 1; else if(fptr == &rrset_data_delete) return 1; @@ -248,11 +288,18 @@ fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_t fptr) else if(fptr == &key_entry_deldatafunc) return 1; else if(fptr == &rate_deldatafunc) return 1; else if(fptr == &test_slabhash_deldata) return 1; +#ifdef CLIENT_SUBNET + else if(fptr == &subnet_data_delete) return 1; +#endif +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_deldatafunc) return 1; + else if(fptr == &dnsc_nonces_deldatafunc) return 1; +#endif return 0; } int -fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr) +fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr) { if(fptr == NULL) return 1; else if(fptr == &rrset_markdel) return 1; @@ -262,10 +309,9 @@ fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr) /** whitelist env->send_query callbacks */ int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( - uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, int nocaps, - struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, + struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, + int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q)) { if(fptr == &worker_send_query) return 1; @@ -290,6 +336,16 @@ fptr_whitelist_modenv_attach_sub(int (*fptr)( return 0; } +int +fptr_whitelist_modenv_add_sub(int (*fptr)( + struct module_qstate* qstate, struct query_info* qinfo, + uint16_t qflags, int prime, int valrec, struct module_qstate** newq, + struct mesh_state** sub)) +{ + if(fptr == &mesh_add_sub) return 1; + return 0; +} + int fptr_whitelist_modenv_kill_sub(void (*fptr)(struct module_qstate* newq)) { @@ -312,8 +368,18 @@ fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int id)) if(fptr == &iter_init) return 1; else if(fptr == &val_init) return 1; else if(fptr == &dns64_init) return 1; + else if(fptr == &respip_init) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_init) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_init) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_init) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_init) return 1; #endif return 0; } @@ -324,8 +390,18 @@ fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env, int id)) if(fptr == &iter_deinit) return 1; else if(fptr == &val_deinit) return 1; else if(fptr == &dns64_deinit) return 1; + else if(fptr == &respip_deinit) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_deinit) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_deinit) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_deinit) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_deinit) return 1; #endif return 0; } @@ -337,8 +413,18 @@ fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate* qstate, if(fptr == &iter_operate) return 1; else if(fptr == &val_operate) return 1; else if(fptr == &dns64_operate) return 1; + else if(fptr == &respip_operate) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_operate) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_operate) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_operate) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_operate) return 1; #endif return 0; } @@ -350,8 +436,18 @@ fptr_whitelist_mod_inform_super(void (*fptr)( if(fptr == &iter_inform_super) return 1; else if(fptr == &val_inform_super) return 1; else if(fptr == &dns64_inform_super) return 1; + else if(fptr == &respip_inform_super) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_inform_super) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_inform_super) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_inform_super) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_inform_super) return 1; #endif return 0; } @@ -363,8 +459,18 @@ fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate, if(fptr == &iter_clear) return 1; else if(fptr == &val_clear) return 1; else if(fptr == &dns64_clear) return 1; + else if(fptr == &respip_clear) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_clear) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_clear) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_clear) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_clear) return 1; #endif return 0; } @@ -375,8 +481,18 @@ fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env, int id)) if(fptr == &iter_get_mem) return 1; else if(fptr == &val_get_mem) return 1; else if(fptr == &dns64_get_mem) return 1; + else if(fptr == &respip_get_mem) return 1; #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_get_mem) return 1; +#endif +#ifdef USE_CACHEDB + else if(fptr == &cachedb_get_mem) return 1; +#endif +#ifdef USE_IPSECMOD + else if(fptr == &ipsecmod_get_mem) return 1; +#endif +#ifdef CLIENT_SUBNET + else if(fptr == &subnetmod_get_mem) return 1; #endif return 0; } @@ -388,19 +504,21 @@ fptr_whitelist_alloc_cleanup(void (*fptr)(void*)) return 0; } -int fptr_whitelist_tube_listen(tube_callback_t* fptr) +int fptr_whitelist_tube_listen(tube_callback_type* fptr) { if(fptr == &worker_handle_control_cmd) return 1; else if(fptr == &libworker_handle_control_cmd) return 1; return 0; } -int fptr_whitelist_mesh_cb(mesh_cb_func_t fptr) +int fptr_whitelist_mesh_cb(mesh_cb_func_type fptr) { if(fptr == &libworker_fg_done_cb) return 1; else if(fptr == &libworker_bg_done_cb) return 1; else if(fptr == &libworker_event_done_cb) return 1; else if(fptr == &probe_answer_cb) return 1; + else if(fptr == &auth_xfer_probe_lookup_callback) return 1; + else if(fptr == &auth_xfer_transfer_lookup_callback) return 1; return 0; } @@ -411,3 +529,64 @@ int fptr_whitelist_print_func(void (*fptr)(char*,void*)) else if(fptr == &remote_get_opt_ssl) return 1; return 0; } + +int fptr_whitelist_inplace_cb_reply_generic(inplace_cb_reply_func_type* fptr, + enum inplace_cb_list_type type) +{ +#ifndef WITH_PYTHONMODULE + (void)fptr; +#endif + if(type == inplace_cb_reply) { +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif + } else if(type == inplace_cb_reply_cache) { +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif + } else if(type == inplace_cb_reply_local) { +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif + } else if(type == inplace_cb_reply_servfail) { +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif + } + return 0; +} + +int fptr_whitelist_inplace_cb_query(inplace_cb_query_func_type* fptr) +{ +#ifdef CLIENT_SUBNET + if(fptr == &ecs_whitelist_check) + return 1; +#else + (void)fptr; +#endif + return 0; +} + +int fptr_whitelist_inplace_cb_edns_back_parsed( + inplace_cb_edns_back_parsed_func_type* fptr) +{ +#ifdef CLIENT_SUBNET + if(fptr == &ecs_edns_back_parsed) + return 1; +#else + (void)fptr; +#endif + return 0; +} + +int fptr_whitelist_inplace_cb_query_response( + inplace_cb_query_response_func_type* fptr) +{ +#ifdef CLIENT_SUBNET + if(fptr == &ecs_query_response) + return 1; +#else + (void)fptr; +#endif + return 0; +} diff --git a/external/unbound/util/fptr_wlist.h b/external/unbound/util/fptr_wlist.h index 10de5d8..03c2b92 100644 --- a/external/unbound/util/fptr_wlist.h +++ b/external/unbound/util/fptr_wlist.h @@ -80,7 +80,7 @@ * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_comm_point(comm_point_callback_t *fptr); +int fptr_whitelist_comm_point(comm_point_callback_type *fptr); /** * Check function pointer whitelist for raw comm_point callback values. @@ -88,7 +88,7 @@ int fptr_whitelist_comm_point(comm_point_callback_t *fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_comm_point_raw(comm_point_callback_t *fptr); +int fptr_whitelist_comm_point_raw(comm_point_callback_type *fptr); /** * Check function pointer whitelist for comm_timer callback values. @@ -137,7 +137,7 @@ int fptr_whitelist_event(void (*fptr)(int, short, void *)); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_pending_udp(comm_point_callback_t *fptr); +int fptr_whitelist_pending_udp(comm_point_callback_type *fptr); /** * Check function pointer whitelist for pending tcp callback values. @@ -145,7 +145,7 @@ int fptr_whitelist_pending_udp(comm_point_callback_t *fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_pending_tcp(comm_point_callback_t *fptr); +int fptr_whitelist_pending_tcp(comm_point_callback_type *fptr); /** * Check function pointer whitelist for serviced query callback values. @@ -153,7 +153,7 @@ int fptr_whitelist_pending_tcp(comm_point_callback_t *fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_serviced_query(comm_point_callback_t *fptr); +int fptr_whitelist_serviced_query(comm_point_callback_type *fptr); /** * Check function pointer whitelist for rbtree cmp callback values. @@ -169,7 +169,7 @@ int fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_hash_sizefunc(lruhash_sizefunc_t fptr); +int fptr_whitelist_hash_sizefunc(lruhash_sizefunc_type fptr); /** * Check function pointer whitelist for lruhash compfunc callback values. @@ -177,7 +177,7 @@ int fptr_whitelist_hash_sizefunc(lruhash_sizefunc_t fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_hash_compfunc(lruhash_compfunc_t fptr); +int fptr_whitelist_hash_compfunc(lruhash_compfunc_type fptr); /** * Check function pointer whitelist for lruhash delkeyfunc callback values. @@ -185,7 +185,7 @@ int fptr_whitelist_hash_compfunc(lruhash_compfunc_t fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_t fptr); +int fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_type fptr); /** * Check function pointer whitelist for lruhash deldata callback values. @@ -193,7 +193,7 @@ int fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_t fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_t fptr); +int fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_type fptr); /** * Check function pointer whitelist for lruhash markdel callback values. @@ -201,7 +201,7 @@ int fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_t fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr); +int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr); /** * Check function pointer whitelist for module_env send_query callback values. @@ -210,10 +210,9 @@ int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_t fptr); * @return false if not in whitelist. */ int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( - uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, - uint16_t flags, int dnssec, int want_dnssec, int nocaps, - struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, + struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, + int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q)); /** @@ -235,6 +234,15 @@ int fptr_whitelist_modenv_attach_sub(int (*fptr)( struct module_qstate* qstate, struct query_info* qinfo, uint16_t qflags, int prime, int valrec, struct module_qstate** newq)); +/** + * Check function pointer whitelist for module_env add_sub callback values. + * + * @param fptr: function pointer to check. + * @return false if not in whitelist. + */ +int fptr_whitelist_modenv_add_sub(int (*fptr)(struct module_qstate* qstate, + struct query_info* qinfo, uint16_t qflags, int prime, int valrec, + struct module_qstate** newq, struct mesh_state** sub)); /** * Check function pointer whitelist for module_env kill_sub callback values. * @@ -318,7 +326,7 @@ int fptr_whitelist_alloc_cleanup(void (*fptr)(void*)); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_tube_listen(tube_callback_t* fptr); +int fptr_whitelist_tube_listen(tube_callback_type* fptr); /** * Check function pointer whitelist for mesh state callback values. @@ -326,7 +334,7 @@ int fptr_whitelist_tube_listen(tube_callback_t* fptr); * @param fptr: function pointer to check. * @return false if not in whitelist. */ -int fptr_whitelist_mesh_cb(mesh_cb_func_t fptr); +int fptr_whitelist_mesh_cb(mesh_cb_func_type fptr); /** * Check function pointer whitelist for config_get_option func values. @@ -335,6 +343,40 @@ int fptr_whitelist_mesh_cb(mesh_cb_func_t fptr); */ int fptr_whitelist_print_func(void (*fptr)(char*,void*)); +/** + * Check function pointer whitelist for inplace_cb_reply, + * inplace_cb_reply_cache, inplace_cb_reply_local and inplace_cb_reply_servfail + * func values. + * @param fptr: function pointer to check. + * @param type: the type of the callback function. + * @return false if not in whitelist. + */ +int fptr_whitelist_inplace_cb_reply_generic(inplace_cb_reply_func_type* fptr, + enum inplace_cb_list_type type); + +/** + * Check function pointer whitelist for inplace_cb_query func values. + * @param fptr: function pointer to check. + * @return false if not in whitelist. + */ +int fptr_whitelist_inplace_cb_query(inplace_cb_query_func_type* fptr); + +/** + * Check function pointer whitelist for inplace_cb_edns_back_parsed func values. + * @param fptr: function pointer to check. + * @return false if not in whitelist. + */ +int fptr_whitelist_inplace_cb_edns_back_parsed( + inplace_cb_edns_back_parsed_func_type* fptr); + +/** + * Check function pointer whitelist for inplace_cb_query_response func values. + * @param fptr: function pointer to check. + * @return false if not in whitelist. + */ +int fptr_whitelist_inplace_cb_query_response( + inplace_cb_query_response_func_type* fptr); + /** Due to module breakage by fptr wlist, these test app declarations * are presented here */ /** diff --git a/external/unbound/util/iana_ports.inc b/external/unbound/util/iana_ports.inc index b09a9ad..b35cf7d 100644 --- a/external/unbound/util/iana_ports.inc +++ b/external/unbound/util/iana_ports.inc @@ -29,7 +29,6 @@ 44, 45, 46, -47, 48, 49, 50, @@ -41,7 +40,6 @@ 57, 58, 59, -61, 62, 63, 64, @@ -661,6 +659,7 @@ 847, 848, 853, +854, 860, 861, 862, @@ -1186,6 +1185,7 @@ 1525, 1526, 1527, +1528, 1529, 1530, 1531, @@ -2696,7 +2696,6 @@ 3068, 3069, 3070, -3071, 3072, 3073, 3074, @@ -3775,6 +3774,7 @@ 4188, 4191, 4192, +4197, 4199, 4300, 4301, @@ -3844,6 +3844,8 @@ 4412, 4413, 4416, +4418, +4420, 4425, 4426, 4430, @@ -3904,6 +3906,7 @@ 4599, 4600, 4601, +4621, 4658, 4659, 4660, @@ -3942,6 +3945,7 @@ 4700, 4701, 4702, +4711, 4725, 4726, 4727, @@ -3958,12 +3962,15 @@ 4743, 4744, 4745, +4746, 4747, 4749, 4750, 4751, 4752, 4753, +4754, +4755, 4784, 4785, 4789, @@ -4222,6 +4229,7 @@ 5436, 5437, 5443, +5450, 5453, 5454, 5455, @@ -4446,6 +4454,7 @@ 6446, 6455, 6456, +6464, 6471, 6480, 6481, @@ -4493,6 +4502,7 @@ 6626, 6627, 6628, +6629, 6633, 6634, 6635, @@ -4522,7 +4532,6 @@ 6786, 6787, 6788, -6789, 6790, 6791, 6801, @@ -4562,6 +4571,8 @@ 7013, 7014, 7015, +7016, +7017, 7019, 7020, 7021, @@ -4573,6 +4584,7 @@ 7040, 7070, 7071, +7072, 7080, 7088, 7095, @@ -4598,6 +4610,7 @@ 7201, 7227, 7235, +7244, 7262, 7272, 7273, @@ -4622,6 +4635,7 @@ 7402, 7410, 7411, +7420, 7421, 7426, 7427, @@ -4651,12 +4665,14 @@ 7570, 7574, 7588, +7606, 7624, 7627, 7628, 7629, 7633, 7648, +7663, 7674, 7675, 7676, @@ -4718,6 +4734,8 @@ 8002, 8003, 8005, +8006, +8007, 8008, 8019, 8020, @@ -4729,6 +4747,7 @@ 8033, 8034, 8040, +8041, 8052, 8053, 8054, @@ -4777,9 +4796,12 @@ 8207, 8208, 8230, +8231, +8232, 8243, 8276, 8280, +8282, 8292, 8294, 8300, @@ -4836,6 +4858,8 @@ 8793, 8800, 8804, +8805, +8808, 8873, 8880, 8883, @@ -4866,6 +4890,7 @@ 9006, 9007, 9009, +9011, 9020, 9021, 9022, @@ -4873,7 +4898,9 @@ 9024, 9025, 9026, +9060, 9080, +9081, 9084, 9085, 9086, @@ -5199,6 +5226,7 @@ 18463, 18634, 18635, +18668, 18769, 18881, 18888, @@ -5206,6 +5234,7 @@ 19007, 19191, 19194, +19220, 19283, 19315, 19398, @@ -5266,6 +5295,7 @@ 23004, 23005, 23272, +23294, 23333, 23400, 23401, @@ -5335,6 +5365,7 @@ 30260, 30832, 30999, +31016, 31029, 31416, 31457, @@ -5364,16 +5395,19 @@ 33331, 33334, 33434, +33435, 33656, 34249, 34378, 34379, +34567, 34962, 34963, 34964, 34980, 35001, 35004, +35100, 35355, 36001, 36411, @@ -5403,6 +5437,7 @@ 43189, 43190, 43210, +43438, 43439, 43440, 43441, @@ -5415,6 +5450,7 @@ 44900, 45000, 45054, +45514, 45678, 45825, 45966, @@ -5435,3 +5471,4 @@ 48556, 48619, 48653, +49001, diff --git a/external/unbound/util/locks.c b/external/unbound/util/locks.c index adfb6c0..b65a02b 100644 --- a/external/unbound/util/locks.c +++ b/external/unbound/util/locks.c @@ -110,15 +110,15 @@ void ub_thread_sig_unblock(int sig) * @param arg: user argument to func. */ void -ub_thr_fork_create(ub_thread_t* thr, void* (*func)(void*), void* arg) +ub_thr_fork_create(ub_thread_type* thr, void* (*func)(void*), void* arg) { pid_t pid = fork(); switch(pid) { default: /* main */ - *thr = (ub_thread_t)pid; + *thr = (ub_thread_type)pid; return; case 0: /* child */ - *thr = (ub_thread_t)getpid(); + *thr = (ub_thread_type)getpid(); (void)(*func)(arg); exit(0); case -1: /* error */ @@ -128,10 +128,10 @@ ub_thr_fork_create(ub_thread_t* thr, void* (*func)(void*), void* arg) /** * There is no threading. Wait for a process to terminate. - * Note that ub_thread_t is defined as pid_t. + * Note that ub_thread_type is defined as pid_t. * @param thread: the process id to wait for. */ -void ub_thr_fork_wait(ub_thread_t thread) +void ub_thr_fork_wait(ub_thread_type thread) { int status = 0; if(waitpid((pid_t)thread, &status, 0) == -1) @@ -143,7 +143,7 @@ void ub_thr_fork_wait(ub_thread_t thread) #endif /* !defined(HAVE_PTHREAD) && !defined(HAVE_SOLARIS_THREADS) && !defined(HAVE_WINDOWS_THREADS) */ #ifdef HAVE_SOLARIS_THREADS -void* ub_thread_key_get(ub_thread_key_t key) +void* ub_thread_key_get(ub_thread_key_type key) { void* ret=NULL; LOCKRET(thr_getspecific(key, &ret)); @@ -167,19 +167,19 @@ static void log_win_err(const char* str, DWORD err) LocalFree(buf); } -void lock_basic_init(lock_basic_t* lock) +void lock_basic_init(lock_basic_type* lock) { /* implement own lock, because windows HANDLE as Mutex usage * uses too many handles and would bog down the whole system. */ (void)InterlockedExchange(lock, 0); } -void lock_basic_destroy(lock_basic_t* lock) +void lock_basic_destroy(lock_basic_type* lock) { (void)InterlockedExchange(lock, 0); } -void lock_basic_lock(lock_basic_t* lock) +void lock_basic_lock(lock_basic_type* lock) { LONG wait = 1; /* wait 1 msec at first */ @@ -191,13 +191,13 @@ void lock_basic_lock(lock_basic_t* lock) /* the old value was 0, but we inserted 1, we locked it! */ } -void lock_basic_unlock(lock_basic_t* lock) +void lock_basic_unlock(lock_basic_type* lock) { /* unlock it by inserting the value of 0. xchg for cache coherency. */ (void)InterlockedExchange(lock, 0); } -void ub_thread_key_create(ub_thread_key_t* key, void* f) +void ub_thread_key_create(ub_thread_key_type* key, void* f) { *key = TlsAlloc(); if(*key == TLS_OUT_OF_INDEXES) { @@ -207,14 +207,14 @@ void ub_thread_key_create(ub_thread_key_t* key, void* f) else ub_thread_key_set(*key, f); } -void ub_thread_key_set(ub_thread_key_t key, void* v) +void ub_thread_key_set(ub_thread_key_type key, void* v) { if(!TlsSetValue(key, v)) { log_win_err("TlsSetValue failed", GetLastError()); } } -void* ub_thread_key_get(ub_thread_key_t key) +void* ub_thread_key_get(ub_thread_key_type key) { void* ret = (void*)TlsGetValue(key); if(ret == NULL && GetLastError() != ERROR_SUCCESS) { @@ -223,7 +223,7 @@ void* ub_thread_key_get(ub_thread_key_t key) return ret; } -void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg) +void ub_thread_create(ub_thread_type* thr, void* (*func)(void*), void* arg) { #ifndef HAVE__BEGINTHREADEX *thr = CreateThread(NULL, /* default security (no inherit handle) */ @@ -233,7 +233,7 @@ void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg) NULL); /* do not store thread identifier anywhere */ #else /* the beginthreadex routine setups for the C lib; aligns stack */ - *thr=(ub_thread_t)_beginthreadex(NULL, 0, (void*)func, arg, 0, NULL); + *thr=(ub_thread_type)_beginthreadex(NULL, 0, (void*)func, arg, 0, NULL); #endif if(*thr == NULL) { log_win_err("CreateThread failed", GetLastError()); @@ -241,12 +241,12 @@ void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg) } } -ub_thread_t ub_thread_self(void) +ub_thread_type ub_thread_self(void) { return GetCurrentThread(); } -void ub_thread_join(ub_thread_t thr) +void ub_thread_join(ub_thread_type thr) { DWORD ret = WaitForSingleObject(thr, INFINITE); if(ret == WAIT_FAILED) { diff --git a/external/unbound/util/locks.h b/external/unbound/util/locks.h index 3776912..d86ee49 100644 --- a/external/unbound/util/locks.h +++ b/external/unbound/util/locks.h @@ -95,7 +95,7 @@ /******************* PTHREAD ************************/ /** use pthread mutex for basic lock */ -typedef pthread_mutex_t lock_basic_t; +typedef pthread_mutex_t lock_basic_type; /** small front for pthread init func, NULL is default attrs. */ #define lock_basic_init(lock) LOCKRET(pthread_mutex_init(lock, NULL)) #define lock_basic_destroy(lock) LOCKRET(pthread_mutex_destroy(lock)) @@ -104,7 +104,7 @@ typedef pthread_mutex_t lock_basic_t; #ifndef HAVE_PTHREAD_RWLOCK_T /** in case rwlocks are not supported, use a mutex. */ -typedef pthread_mutex_t lock_rw_t; +typedef pthread_mutex_t lock_rw_type; #define lock_rw_init(lock) LOCKRET(pthread_mutex_init(lock, NULL)) #define lock_rw_destroy(lock) LOCKRET(pthread_mutex_destroy(lock)) #define lock_rw_rdlock(lock) LOCKRET(pthread_mutex_lock(lock)) @@ -112,7 +112,7 @@ typedef pthread_mutex_t lock_rw_t; #define lock_rw_unlock(lock) LOCKRET(pthread_mutex_unlock(lock)) #else /* HAVE_PTHREAD_RWLOCK_T */ /** we use the pthread rwlock */ -typedef pthread_rwlock_t lock_rw_t; +typedef pthread_rwlock_t lock_rw_type; /** small front for pthread init func, NULL is default attrs. */ #define lock_rw_init(lock) LOCKRET(pthread_rwlock_init(lock, NULL)) #define lock_rw_destroy(lock) LOCKRET(pthread_rwlock_destroy(lock)) @@ -123,7 +123,7 @@ typedef pthread_rwlock_t lock_rw_t; #ifndef HAVE_PTHREAD_SPINLOCK_T /** in case spinlocks are not supported, use a mutex. */ -typedef pthread_mutex_t lock_quick_t; +typedef pthread_mutex_t lock_quick_type; /** small front for pthread init func, NULL is default attrs. */ #define lock_quick_init(lock) LOCKRET(pthread_mutex_init(lock, NULL)) #define lock_quick_destroy(lock) LOCKRET(pthread_mutex_destroy(lock)) @@ -132,7 +132,7 @@ typedef pthread_mutex_t lock_quick_t; #else /* HAVE_PTHREAD_SPINLOCK_T */ /** use pthread spinlock for the quick lock */ -typedef pthread_spinlock_t lock_quick_t; +typedef pthread_spinlock_t lock_quick_type; /** * allocate process private since this is available whether * Thread Process-Shared Synchronization is supported or not. @@ -148,14 +148,31 @@ typedef pthread_spinlock_t lock_quick_t; #endif /* HAVE SPINLOCK */ /** Thread creation */ -typedef pthread_t ub_thread_t; -/** Pass where to store tread_t in thr. Use default NULL attributes. */ -#define ub_thread_create(thr, func, arg) LOCKRET(pthread_create(thr, NULL, func, arg)) +typedef pthread_t ub_thread_type; +/** On alpine linux default thread stack size is 80 Kb. See +http://wiki.musl-libc.org/wiki/Functional_differences_from_glibc#Thread_stack_size +This is not enough and cause segfault. Other linux distros have 2 Mb at least. +Wrapper for set up thread stack size */ +#define PTHREADSTACKSIZE 2*1024*1024 +#define PTHREADCREATE(thr, stackrequired, func, arg) do {\ + pthread_attr_t attr; \ + size_t stacksize; \ + LOCKRET(pthread_attr_init(&attr)); \ + LOCKRET(pthread_attr_getstacksize(&attr, &stacksize)); \ + if (stacksize < stackrequired) { \ + LOCKRET(pthread_attr_setstacksize(&attr, stackrequired)); \ + LOCKRET(pthread_create(thr, &attr, func, arg)); \ + LOCKRET(pthread_attr_getstacksize(&attr, &stacksize)); \ + verbose(VERB_ALGO, "Thread stack size set to %u", (unsigned)stacksize); \ + } else {LOCKRET(pthread_create(thr, NULL, func, arg));} \ + } while(0) +/** Use wrapper for set thread stack size on attributes. */ +#define ub_thread_create(thr, func, arg) PTHREADCREATE(thr, PTHREADSTACKSIZE, func, arg) /** get self id. */ #define ub_thread_self() pthread_self() /** wait for another thread to terminate */ #define ub_thread_join(thread) LOCKRET(pthread_join(thread, NULL)) -typedef pthread_key_t ub_thread_key_t; +typedef pthread_key_t ub_thread_key_type; #define ub_thread_key_create(key, f) LOCKRET(pthread_key_create(key, f)) #define ub_thread_key_set(key, v) LOCKRET(pthread_setspecific(key, v)) #define ub_thread_key_get(key) pthread_getspecific(key) @@ -167,7 +184,7 @@ typedef pthread_key_t ub_thread_key_t; #include #include -typedef rwlock_t lock_rw_t; +typedef rwlock_t lock_rw_type; #define lock_rw_init(lock) LOCKRET(rwlock_init(lock, USYNC_THREAD, NULL)) #define lock_rw_destroy(lock) LOCKRET(rwlock_destroy(lock)) #define lock_rw_rdlock(lock) LOCKRET(rw_rdlock(lock)) @@ -175,28 +192,28 @@ typedef rwlock_t lock_rw_t; #define lock_rw_unlock(lock) LOCKRET(rw_unlock(lock)) /** use basic mutex */ -typedef mutex_t lock_basic_t; +typedef mutex_t lock_basic_type; #define lock_basic_init(lock) LOCKRET(mutex_init(lock, USYNC_THREAD, NULL)) #define lock_basic_destroy(lock) LOCKRET(mutex_destroy(lock)) #define lock_basic_lock(lock) LOCKRET(mutex_lock(lock)) #define lock_basic_unlock(lock) LOCKRET(mutex_unlock(lock)) /** No spinlocks in solaris threads API. Use a mutex. */ -typedef mutex_t lock_quick_t; +typedef mutex_t lock_quick_type; #define lock_quick_init(lock) LOCKRET(mutex_init(lock, USYNC_THREAD, NULL)) #define lock_quick_destroy(lock) LOCKRET(mutex_destroy(lock)) #define lock_quick_lock(lock) LOCKRET(mutex_lock(lock)) #define lock_quick_unlock(lock) LOCKRET(mutex_unlock(lock)) /** Thread creation, create a default thread. */ -typedef thread_t ub_thread_t; +typedef thread_t ub_thread_type; #define ub_thread_create(thr, func, arg) LOCKRET(thr_create(NULL, NULL, func, arg, NULL, thr)) #define ub_thread_self() thr_self() #define ub_thread_join(thread) LOCKRET(thr_join(thread, NULL, NULL)) -typedef thread_key_t ub_thread_key_t; +typedef thread_key_t ub_thread_key_type; #define ub_thread_key_create(key, f) LOCKRET(thr_keycreate(key, f)) #define ub_thread_key_set(key, v) LOCKRET(thr_setspecific(key, v)) -void* ub_thread_key_get(ub_thread_key_t key); +void* ub_thread_key_get(ub_thread_key_type key); #else /* we do not HAVE_SOLARIS_THREADS and no PTHREADS */ @@ -205,7 +222,7 @@ void* ub_thread_key_get(ub_thread_key_t key); #include /* Use a mutex */ -typedef LONG lock_rw_t; +typedef LONG lock_rw_type; #define lock_rw_init(lock) lock_basic_init(lock) #define lock_rw_destroy(lock) lock_basic_destroy(lock) #define lock_rw_rdlock(lock) lock_basic_lock(lock) @@ -213,35 +230,35 @@ typedef LONG lock_rw_t; #define lock_rw_unlock(lock) lock_basic_unlock(lock) /** the basic lock is a mutex, implemented opaquely, for error handling. */ -typedef LONG lock_basic_t; -void lock_basic_init(lock_basic_t* lock); -void lock_basic_destroy(lock_basic_t* lock); -void lock_basic_lock(lock_basic_t* lock); -void lock_basic_unlock(lock_basic_t* lock); +typedef LONG lock_basic_type; +void lock_basic_init(lock_basic_type* lock); +void lock_basic_destroy(lock_basic_type* lock); +void lock_basic_lock(lock_basic_type* lock); +void lock_basic_unlock(lock_basic_type* lock); /** on windows no spinlock, use mutex too. */ -typedef LONG lock_quick_t; +typedef LONG lock_quick_type; #define lock_quick_init(lock) lock_basic_init(lock) #define lock_quick_destroy(lock) lock_basic_destroy(lock) #define lock_quick_lock(lock) lock_basic_lock(lock) #define lock_quick_unlock(lock) lock_basic_unlock(lock) /** Thread creation, create a default thread. */ -typedef HANDLE ub_thread_t; -void ub_thread_create(ub_thread_t* thr, void* (*func)(void*), void* arg); -ub_thread_t ub_thread_self(void); -void ub_thread_join(ub_thread_t thr); -typedef DWORD ub_thread_key_t; -void ub_thread_key_create(ub_thread_key_t* key, void* f); -void ub_thread_key_set(ub_thread_key_t key, void* v); -void* ub_thread_key_get(ub_thread_key_t key); +typedef HANDLE ub_thread_type; +void ub_thread_create(ub_thread_type* thr, void* (*func)(void*), void* arg); +ub_thread_type ub_thread_self(void); +void ub_thread_join(ub_thread_type thr); +typedef DWORD ub_thread_key_type; +void ub_thread_key_create(ub_thread_key_type* key, void* f); +void ub_thread_key_set(ub_thread_key_type key, void* v); +void* ub_thread_key_get(ub_thread_key_type key); #else /* we do not HAVE_SOLARIS_THREADS, PTHREADS or WINDOWS_THREADS */ /******************* NO THREADS ************************/ #define THREADS_DISABLED 1 /** In case there is no thread support, define locks to do nothing */ -typedef int lock_rw_t; +typedef int lock_rw_type; #define lock_rw_init(lock) /* nop */ #define lock_rw_destroy(lock) /* nop */ #define lock_rw_rdlock(lock) /* nop */ @@ -249,30 +266,30 @@ typedef int lock_rw_t; #define lock_rw_unlock(lock) /* nop */ /** define locks to do nothing */ -typedef int lock_basic_t; +typedef int lock_basic_type; #define lock_basic_init(lock) /* nop */ #define lock_basic_destroy(lock) /* nop */ #define lock_basic_lock(lock) /* nop */ #define lock_basic_unlock(lock) /* nop */ /** define locks to do nothing */ -typedef int lock_quick_t; +typedef int lock_quick_type; #define lock_quick_init(lock) /* nop */ #define lock_quick_destroy(lock) /* nop */ #define lock_quick_lock(lock) /* nop */ #define lock_quick_unlock(lock) /* nop */ /** Thread creation, threads do not exist */ -typedef pid_t ub_thread_t; +typedef pid_t ub_thread_type; /** ub_thread_create is simulated with fork (extremely heavy threads, * with no shared memory). */ #define ub_thread_create(thr, func, arg) \ ub_thr_fork_create(thr, func, arg) #define ub_thread_self() getpid() #define ub_thread_join(thread) ub_thr_fork_wait(thread) -void ub_thr_fork_wait(ub_thread_t thread); -void ub_thr_fork_create(ub_thread_t* thr, void* (*func)(void*), void* arg); -typedef void* ub_thread_key_t; +void ub_thr_fork_wait(ub_thread_type thread); +void ub_thr_fork_create(ub_thread_type* thr, void* (*func)(void*), void* arg); +typedef void* ub_thread_key_type; #define ub_thread_key_create(key, f) (*(key)) = NULL #define ub_thread_key_set(key, v) (key) = (v) #define ub_thread_key_get(key) (key) diff --git a/external/unbound/util/log.c b/external/unbound/util/log.c index 3ebd120..75a58f9 100644 --- a/external/unbound/util/log.c +++ b/external/unbound/util/log.c @@ -67,10 +67,10 @@ static FILE* logfile = 0; /** if key has been created */ static int key_created = 0; /** pthread key for thread ids in logfile */ -static ub_thread_key_t logkey; +static ub_thread_key_type logkey; #ifndef THREADS_DISABLED /** pthread mutex to protect FILE* */ -static lock_quick_t log_lock; +static lock_quick_type log_lock; #endif /** the identity of this executable/process */ static const char* ident="unbound"; @@ -103,8 +103,12 @@ log_init(const char* filename, int use_syslog, const char* chrootdir) use_syslog?"syslog":(filename&&filename[0]?filename:"stderr")); lock_quick_lock(&log_lock); } - if(logfile && logfile != stderr) - fclose(logfile); + if(logfile && logfile != stderr) { + FILE* cl = logfile; + logfile = NULL; /* set to NULL before it is closed, so that + other threads have a valid logfile or NULL */ + fclose(cl); + } #ifdef HAVE_SYSLOG_H if(logging_to_syslog) { closelog(); @@ -187,6 +191,17 @@ void log_set_time_asc(int use_asc) log_time_asc = use_asc; } +void* log_get_lock(void) +{ + if(!key_created) + return NULL; +#ifndef THREADS_DISABLED + return (void*)&log_lock; +#else + return NULL; +#endif +} + void log_vmsg(int pri, const char* type, const char *format, va_list args) diff --git a/external/unbound/util/log.h b/external/unbound/util/log.h index 8e85ee6..7bc3d9e 100644 --- a/external/unbound/util/log.h +++ b/external/unbound/util/log.h @@ -127,6 +127,9 @@ void log_set_time(time_t* t); */ void log_set_time_asc(int use_asc); +/** get log lock */ +void* log_get_lock(void); + /** * Log informational message. * Pass printf formatted arguments. No trailing newline is needed. @@ -186,11 +189,17 @@ void log_vmsg(int pri, const char* type, const char* format, va_list args); * an assertion that is thrown to the logfile. */ #ifdef UNBOUND_DEBUG +#ifdef __clang_analyzer__ +/* clang analyzer needs to know that log_assert is an assertion, otherwise + * it could complain about the nullptr the assert is guarding against. */ +#define log_assert(x) assert(x) +#else # define log_assert(x) \ do { if(!(x)) \ fatal_exit("%s:%d: %s: assertion %s failed", \ __FILE__, __LINE__, __func__, #x); \ } while(0); +#endif #else # define log_assert(x) /*nothing*/ #endif diff --git a/external/unbound/util/mini_event.c b/external/unbound/util/mini_event.c index 98d15f6..14e9efe 100644 --- a/external/unbound/util/mini_event.c +++ b/external/unbound/util/mini_event.c @@ -147,7 +147,7 @@ static void handle_timeouts(struct event_base* base, struct timeval* now, wait->tv_sec = (time_t)-1; #endif - while((rbnode_t*)(p = (struct event*)rbtree_first(base->times)) + while((rbnode_type*)(p = (struct event*)rbtree_first(base->times)) !=RBTREE_NULL) { #ifndef S_SPLINT_S if(p->ev_timeout.tv_sec > now->tv_sec || diff --git a/external/unbound/util/mini_event.h b/external/unbound/util/mini_event.h index 1a5bcb4..204894d 100644 --- a/external/unbound/util/mini_event.h +++ b/external/unbound/util/mini_event.h @@ -96,7 +96,7 @@ struct event_base { /** sorted by timeout (absolute), ptr */ - rbtree_t* times; + rbtree_type* times; /** array of 0 - maxfd of ptr to event for it */ struct event** fds; /** max fd in use */ @@ -128,7 +128,7 @@ struct event_base */ struct event { /** node in timeout rbtree */ - rbnode_t node; + rbnode_type node; /** is event already added */ int added; diff --git a/external/unbound/util/module.c b/external/unbound/util/module.c index 09e276c..f4b715d 100644 --- a/external/unbound/util/module.c +++ b/external/unbound/util/module.c @@ -39,6 +39,7 @@ #include "config.h" #include "util/module.h" +#include "sldns/wire2str.h" const char* strextstate(enum module_ext_state s) @@ -69,3 +70,169 @@ strmodulevent(enum module_ev e) } return "bad_event_value"; } + +int +edns_known_options_init(struct module_env* env) +{ + env->edns_known_options_num = 0; + env->edns_known_options = (struct edns_known_option*)calloc( + MAX_KNOWN_EDNS_OPTS, sizeof(struct edns_known_option)); + if(!env->edns_known_options) return 0; + return 1; +} + +void +edns_known_options_delete(struct module_env* env) +{ + free(env->edns_known_options); + env->edns_known_options = NULL; + env->edns_known_options_num = 0; +} + +int +edns_register_option(uint16_t opt_code, int bypass_cache_stage, + int no_aggregation, struct module_env* env) +{ + size_t i; + if(env->worker) { + log_err("invalid edns registration: " + "trying to register option after module init phase"); + return 0; + } + + /** + * Checking if we are full first is faster but it does not provide + * the option to change the flags when the array is full. + * It only impacts unbound initialization, leave it for now. + */ + /* Check if the option is already registered. */ + for(i=0; iedns_known_options_num; i++) + if(env->edns_known_options[i].opt_code == opt_code) + break; + /* If it is not yet registered check if we have space to add a new one. */ + if(i == env->edns_known_options_num) { + if(env->edns_known_options_num >= MAX_KNOWN_EDNS_OPTS) { + log_err("invalid edns registration: maximum options reached"); + return 0; + } + env->edns_known_options_num++; + } + env->edns_known_options[i].opt_code = opt_code; + env->edns_known_options[i].bypass_cache_stage = bypass_cache_stage; + env->edns_known_options[i].no_aggregation = no_aggregation; + return 1; +} + +int +inplace_cb_register(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id) +{ + struct inplace_cb* callback; + struct inplace_cb** prevp; + if(env->worker) { + log_err("invalid edns callback registration: " + "trying to register callback after module init phase"); + return 0; + } + + callback = (struct inplace_cb*)calloc(1, sizeof(*callback)); + if(callback == NULL) { + log_err("out of memory during edns callback registration."); + return 0; + } + callback->id = id; + callback->next = NULL; + callback->cb = cb; + callback->cb_arg = cbarg; + + prevp = (struct inplace_cb**) &env->inplace_cb_lists[type]; + /* append at end of list */ + while(*prevp != NULL) + prevp = &((*prevp)->next); + *prevp = callback; + return 1; +} + +void +inplace_cb_delete(struct module_env* env, enum inplace_cb_list_type type, + int id) +{ + struct inplace_cb* temp = env->inplace_cb_lists[type]; + struct inplace_cb* prev = NULL; + + while(temp) { + if(temp->id == id) { + if(!prev) { + env->inplace_cb_lists[type] = temp->next; + free(temp); + temp = env->inplace_cb_lists[type]; + } + else { + prev->next = temp->next; + free(temp); + temp = prev->next; + } + } + else { + prev = temp; + temp = temp->next; + } + } +} + +struct edns_known_option* +edns_option_is_known(uint16_t opt_code, struct module_env* env) +{ + size_t i; + for(i=0; iedns_known_options_num; i++) + if(env->edns_known_options[i].opt_code == opt_code) + return env->edns_known_options + i; + return NULL; +} + +int +edns_bypass_cache_stage(struct edns_option* list, struct module_env* env) +{ + size_t i; + for(; list; list=list->next) + for(i=0; iedns_known_options_num; i++) + if(env->edns_known_options[i].opt_code == list->opt_code && + env->edns_known_options[i].bypass_cache_stage == 1) + return 1; + return 0; +} + +int +unique_mesh_state(struct edns_option* list, struct module_env* env) +{ + size_t i; + if(env->unique_mesh) + return 1; + for(; list; list=list->next) + for(i=0; iedns_known_options_num; i++) + if(env->edns_known_options[i].opt_code == list->opt_code && + env->edns_known_options[i].no_aggregation == 1) + return 1; + return 0; +} + +void +log_edns_known_options(enum verbosity_value level, struct module_env* env) +{ + size_t i; + char str[32], *s; + size_t slen; + if(env->edns_known_options_num > 0 && verbosity >= level) { + verbose(level, "EDNS known options:"); + verbose(level, " Code: Bypass_cache_stage: Aggregate_mesh:"); + for(i=0; iedns_known_options_num; i++) { + s = str; + slen = sizeof(str); + (void)sldns_wire2str_edns_option_code_print(&s, &slen, + env->edns_known_options[i].opt_code); + verbose(level, " %-8.8s %-19s %-15s", str, + env->edns_known_options[i].bypass_cache_stage?"YES":"NO", + env->edns_known_options[i].no_aggregation?"NO":"YES"); + } + } +} diff --git a/external/unbound/util/module.h b/external/unbound/util/module.h index b9dde36..c6e5164 100644 --- a/external/unbound/util/module.h +++ b/external/unbound/util/module.h @@ -166,6 +166,9 @@ struct query_info; struct edns_data; struct regional; struct worker; +struct comm_base; +struct auth_zones; +struct outside_network; struct module_qstate; struct ub_randstate; struct mesh_area; @@ -174,9 +177,128 @@ struct val_anchors; struct val_neg_cache; struct iter_forwards; struct iter_hints; +struct respip_set; +struct respip_client_info; +struct respip_addr_info; /** Maximum number of modules in operation */ -#define MAX_MODULE 5 +#define MAX_MODULE 16 + +/** Maximum number of known edns options */ +#define MAX_KNOWN_EDNS_OPTS 256 + +enum inplace_cb_list_type { + /* Inplace callbacks for when a resolved reply is ready to be sent to the + * front.*/ + inplace_cb_reply = 0, + /* Inplace callbacks for when a reply is given from the cache. */ + inplace_cb_reply_cache, + /* Inplace callbacks for when a reply is given with local data + * (or Chaos reply). */ + inplace_cb_reply_local, + /* Inplace callbacks for when the reply is servfail. */ + inplace_cb_reply_servfail, + /* Inplace callbacks for when a query is ready to be sent to the back.*/ + inplace_cb_query, + /* Inplace callback for when a reply is received from the back. */ + inplace_cb_query_response, + /* Inplace callback for when EDNS is parsed on a reply received from the + * back. */ + inplace_cb_edns_back_parsed, + /* Total number of types. Used for array initialization. + * Should always be last. */ + inplace_cb_types_total +}; + + +/** Known edns option. Can be populated during modules' init. */ +struct edns_known_option { + /** type of this edns option */ + uint16_t opt_code; + /** whether the option needs to bypass the cache stage */ + int bypass_cache_stage; + /** whether the option needs mesh aggregation */ + int no_aggregation; +}; + +/** + * Inplace callback list of registered routines to be called. + */ +struct inplace_cb { + /** next in list */ + struct inplace_cb* next; + /** Inplace callback routine */ + void* cb; + void* cb_arg; + /** module id */ + int id; +}; + +/** + * Inplace callback function called before replying. + * Called as func(edns, qstate, opt_list_out, qinfo, reply_info, rcode, + * region, python_callback) + * Where: + * qinfo: the query info. + * qstate: the module state. NULL when calling before the query reaches the + * mesh states. + * rep: reply_info. Could be NULL. + * rcode: the return code. + * edns: the edns_data of the reply. When qstate is NULL, it is also used as + * the edns input. + * opt_list_out: the edns options list for the reply. + * region: region to store data. + * python_callback: only used for registering a python callback function. + */ +typedef int inplace_cb_reply_func_type(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct regional* region, int id, void* callback); + +/** + * Inplace callback function called before sending the query to a nameserver. + * Called as func(qinfo, flags, qstate, addr, addrlen, zone, zonelen, region, + * python_callback) + * Where: + * qinfo: query info. + * flags: flags of the query. + * qstate: query state. + * addr: to which server to send the query. + * addrlen: length of addr. + * zone: name of the zone of the delegation point. wireformat dname. + * This is the delegation point name for which the server is deemed + * authoritative. + * zonelen: length of zone. + * region: region to store data. + * python_callback: only used for registering a python callback function. + */ +typedef int inplace_cb_query_func_type(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, + int id, void* callback); + +/** + * Inplace callback function called after parsing edns on query reply. + * Called as func(qstate, cb_args) + * Where: + * qstate: the query state + * id: module id + * cb_args: argument passed when registering callback. + */ +typedef int inplace_cb_edns_back_parsed_func_type(struct module_qstate* qstate, + int id, void* cb_args); + +/** + * Inplace callback function called after parsing query response. + * Called as func(qstate, id, cb_args) + * Where: + * qstate: the query state + * response: query response + * id: module id + * cb_args: argument passed when registering callback. + */ +typedef int inplace_cb_query_response_func_type(struct module_qstate* qstate, + struct dns_msg* response, int id, void* cb_args); /** * Module environment. @@ -202,10 +324,7 @@ struct module_env { * will cause operate() to be called with event timeout or reply. * The time until a timeout is calculated from roundtrip timing, * several UDP retries are attempted. - * @param qname: query name. (host order) - * @param qnamelen: length in bytes of qname, including trailing 0. - * @param qtype: query type. (host order) - * @param qclass: query class. (host order) + * @param qinfo: query info. * @param flags: host order flags word, with opcode and CD bit. * @param dnssec: if set, EDNS record will have bits set. * If EDNS_DO bit is set, DO bit is set in EDNS records. @@ -218,17 +337,20 @@ struct module_env { * @param addrlen: length of addr. * @param zone: delegation point name. * @param zonelen: length of zone name. + * @param ssl_upstream: use SSL for upstream queries. + * @param tls_auth_name: if ssl_upstream, use this name with TLS + * authentication. * @param q: wich query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. Or returns an outbound entry with qsent and qstate set. * This outbound_entry will be used on later module invocations * that involve this query (timeout, error or reply). */ - struct outbound_entry* (*send_query)(uint8_t* qname, size_t qnamelen, - uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, - int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, - struct module_qstate* q); + struct outbound_entry* (*send_query)(struct query_info* qinfo, + uint16_t flags, int dnssec, int want_dnssec, int nocaps, + struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, int ssl_upstream, + char* tls_auth_name, struct module_qstate* q); /** * Detach-subqueries. @@ -265,10 +387,41 @@ struct module_env { struct query_info* qinfo, uint16_t qflags, int prime, int valrec, struct module_qstate** newq); + /** + * Add detached query. + * Creates it if it does not exist already. + * Does not make super/sub references. + * Performs a cycle detection - for double check - and fails if there is + * one. + * Updates stat items in mesh_area structure. + * Pass if it is priming query or not. + * return: + * o if error (malloc) happened. + * o need to initialise the new state (module init; it is a new state). + * so that the next run of the query with this module is successful. + * o no init needed, attachment successful. + * o added subquery, created if it did not exist already. + * + * @param qstate: the state to find mesh state, and that wants to receive + * the results from the new subquery. + * @param qinfo: what to query for (copied). + * @param qflags: what flags to use (RD / CD flag or not). + * @param prime: if it is a (stub) priming query. + * @param valrec: if it is a validation recursion query (lookup of key, DS). + * @param newq: If the new subquery needs initialisation, it is returned, + * otherwise NULL is returned. + * @param sub: The added mesh state, created if it did not exist already. + * @return: false on error, true if success (and init may be needed). + */ + int (*add_sub)(struct module_qstate* qstate, + struct query_info* qinfo, uint16_t qflags, int prime, + int valrec, struct module_qstate** newq, + struct mesh_state** sub); + /** * Kill newly attached sub. If attach_sub returns newq for * initialisation, but that fails, then this routine will cleanup and - * delete the fresly created sub. + * delete the freshly created sub. * @param newq: the new subquery that is no longer needed. * It is removed. */ @@ -297,6 +450,10 @@ struct module_env { struct sldns_buffer* scratch_buffer; /** internal data for daemon - worker thread. */ struct worker* worker; + /** the worker event base */ + struct comm_base* worker_base; + /** the outside network */ + struct outside_network* outnet; /** mesh area with query state dependencies */ struct mesh_area* mesh; /** allocation service */ @@ -320,6 +477,8 @@ struct module_env { struct val_neg_cache* neg_cache; /** the 5011-probe timer (if any) */ struct comm_timer* probe_timer; + /** auth zones */ + struct auth_zones* auth_zones; /** Mapping of forwarding zones to targets. * iterator forwarder information. per-thread, created by worker */ struct iter_forwards* fwds; @@ -333,6 +492,20 @@ struct module_env { struct iter_hints* hints; /** module specific data. indexed by module id. */ void* modinfo[MAX_MODULE]; + + /* Shared linked list of inplace callback functions */ + struct inplace_cb* inplace_cb_lists[inplace_cb_types_total]; + + /** + * Shared array of known edns options (size MAX_KNOWN_EDNS_OPTS). + * Filled by edns literate modules during init. + */ + struct edns_known_option* edns_known_options; + /* Number of known edns options */ + size_t edns_known_options_num; + + /* Make every mesh state unique, do not aggregate mesh states. */ + int unique_mesh; }; /** @@ -390,6 +563,8 @@ struct sock_list { struct sockaddr_storage addr; }; +struct respip_action_info; + /** * Module state, per query. */ @@ -431,6 +606,34 @@ struct module_qstate { struct mesh_state* mesh_info; /** how many seconds before expiry is this prefetched (0 if not) */ time_t prefetch_leeway; + + /** incoming edns options from the front end */ + struct edns_option* edns_opts_front_in; + /** outgoing edns options to the back end */ + struct edns_option* edns_opts_back_out; + /** incoming edns options from the back end */ + struct edns_option* edns_opts_back_in; + /** outgoing edns options to the front end */ + struct edns_option* edns_opts_front_out; + /** whether modules should answer from the cache */ + int no_cache_lookup; + /** whether modules should store answer in the cache */ + int no_cache_store; + /** whether to refetch a fresh answer on finishing this state*/ + int need_refetch; + + /** + * Attributes of clients that share the qstate that may affect IP-based + * actions. + */ + struct respip_client_info* client_info; + + /** Extended result of response-ip action processing, mainly + * for logging purposes. */ + struct respip_action_info* respip_action_info; + + /** whether the reply should be dropped */ + int is_drop; }; /** @@ -520,4 +723,100 @@ const char* strextstate(enum module_ext_state s); */ const char* strmodulevent(enum module_ev e); +/** + * Initialize the edns known options by allocating the required space. + * @param env: the module environment. + * @return false on failure (no memory). + */ +int edns_known_options_init(struct module_env* env); + +/** + * Free the allocated space for the known edns options. + * @param env: the module environment. + */ +void edns_known_options_delete(struct module_env* env); + +/** + * Register a known edns option. Overwrite the flags if it is already + * registered. Used before creating workers to register known edns options. + * @param opt_code: the edns option code. + * @param bypass_cache_stage: whether the option interacts with the cache. + * @param no_aggregation: whether the option implies more specific + * aggregation. + * @param env: the module environment. + * @return true on success, false on failure (registering more options than + * allowed or trying to register after the environment is copied to the + * threads.) + */ +int edns_register_option(uint16_t opt_code, int bypass_cache_stage, + int no_aggregation, struct module_env* env); + +/** + * Register an inplace callback function. + * @param cb: pointer to the callback function. + * @param type: inplace callback type. + * @param cbarg: argument for the callback function, or NULL. + * @param env: the module environment. + * @param id: module id. + * @return true on success, false on failure (out of memory or trying to + * register after the environment is copied to the threads.) + */ +int +inplace_cb_register(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id); + +/** + * Delete callback for specified type and module id. + * @param env: the module environment. + * @param type: inplace callback type. + * @param id: module id. + */ +void +inplace_cb_delete(struct module_env* env, enum inplace_cb_list_type type, + int id); + +/** + * Delete all the inplace callback linked lists. + * @param env: the module environment. + */ +void inplace_cb_lists_delete(struct module_env* env); + +/** + * Check if an edns option is known. + * @param opt_code: the edns option code. + * @param env: the module environment. + * @return pointer to registered option if the edns option is known, + * NULL otherwise. + */ +struct edns_known_option* edns_option_is_known(uint16_t opt_code, + struct module_env* env); + +/** + * Check if an edns option needs to bypass the reply from cache stage. + * @param list: the edns options. + * @param env: the module environment. + * @return true if an edns option needs to bypass the cache stage, + * false otherwise. + */ +int edns_bypass_cache_stage(struct edns_option* list, + struct module_env* env); + +/** + * Check if an unique mesh state is required. Might be triggered by EDNS option + * or set for the complete env. + * @param list: the edns options. + * @param env: the module environment. + * @return true if an edns option needs a unique mesh state, + * false otherwise. + */ +int unique_mesh_state(struct edns_option* list, struct module_env* env); + +/** + * Log the known edns options. + * @param level: the desired verbosity level. + * @param env: the module environment. + */ +void log_edns_known_options(enum verbosity_value level, + struct module_env* env); + #endif /* UTIL_MODULE_H */ diff --git a/external/unbound/util/net_help.c b/external/unbound/util/net_help.c index eb03cd0..a5059b0 100644 --- a/external/unbound/util/net_help.c +++ b/external/unbound/util/net_help.c @@ -52,6 +52,9 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif +#ifdef USE_WINSOCK +#include +#endif /** max length of an IP address (the address portion) that we allow */ #define MAX_ADDR_STRLEN 128 /* characters */ @@ -114,8 +117,9 @@ fd_set_block(int s) #elif defined(HAVE_IOCTLSOCKET) unsigned long off = 0; if(ioctlsocket(s, FIONBIO, &off) != 0) { - log_err("can't ioctlsocket FIONBIO off: %s", - wsa_strerror(WSAGetLastError())); + if(WSAGetLastError() != WSAEINVAL || verbosity >= 4) + log_err("can't ioctlsocket FIONBIO off: %s", + wsa_strerror(WSAGetLastError())); } #endif return 1; @@ -240,7 +244,8 @@ ipstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr, int netblockstrtoaddr(const char* str, int port, struct sockaddr_storage* addr, socklen_t* addrlen, int* net) { - char* s = NULL; + char buf[64]; + char* s; *net = (str_is_ip6(str)?128:32); if((s=strchr(str, '/'))) { if(atoi(s+1) > *net) { @@ -252,24 +257,78 @@ int netblockstrtoaddr(const char* str, int port, struct sockaddr_storage* addr, log_err("cannot parse netblock: '%s'", str); return 0; } - if(!(s = strdup(str))) { - log_err("out of memory"); - return 0; - } - *strchr(s, '/') = '\0'; + strlcpy(buf, str, sizeof(buf)); + s = strchr(buf, '/'); + if(s) *s = 0; + s = buf; } if(!ipstrtoaddr(s?s:str, port, addr, addrlen)) { - free(s); log_err("cannot parse ip address: '%s'", str); return 0; } if(s) { - free(s); addr_mask(addr, *addrlen, *net); } return 1; } +int authextstrtoaddr(char* str, struct sockaddr_storage* addr, + socklen_t* addrlen, char** auth_name) +{ + char* s; + int port = UNBOUND_DNS_PORT; + if((s=strchr(str, '@'))) { + char buf[MAX_ADDR_STRLEN]; + size_t len = (size_t)(s-str); + char* hash = strchr(s+1, '#'); + if(hash) { + *auth_name = hash+1; + } else { + *auth_name = NULL; + } + if(len >= MAX_ADDR_STRLEN) { + return 0; + } + (void)strlcpy(buf, str, sizeof(buf)); + buf[len] = 0; + port = atoi(s+1); + if(port == 0) { + if(!hash && strcmp(s+1,"0")!=0) + return 0; + if(hash && strncmp(s+1,"0#",2)!=0) + return 0; + } + return ipstrtoaddr(buf, port, addr, addrlen); + } + if((s=strchr(str, '#'))) { + char buf[MAX_ADDR_STRLEN]; + size_t len = (size_t)(s-str); + if(len >= MAX_ADDR_STRLEN) { + return 0; + } + (void)strlcpy(buf, str, sizeof(buf)); + buf[len] = 0; + port = UNBOUND_DNS_OVER_TLS_PORT; + *auth_name = s+1; + return ipstrtoaddr(buf, port, addr, addrlen); + } + *auth_name = NULL; + return ipstrtoaddr(str, port, addr, addrlen); +} + +/** store port number into sockaddr structure */ +void +sockaddr_store_port(struct sockaddr_storage* addr, socklen_t addrlen, int port) +{ + if(addr_is_ip6(addr, addrlen)) { + struct sockaddr_in6* sa = (struct sockaddr_in6*)addr; + sa->sin6_port = (in_port_t)htons((uint16_t)port); + } else { + struct sockaddr_in* sa = (struct sockaddr_in*)addr; + sa->sin_port = (in_port_t)htons((uint16_t)port); + } +} + void log_nametypeclass(enum verbosity_value v, const char* str, uint8_t* name, uint16_t type, uint16_t dclass) @@ -610,45 +669,66 @@ log_crypto_err(const char* str) #endif /* HAVE_SSL */ } -void* listen_sslctx_create(char* key, char* pem, char* verifypem) +int +listen_sslctx_setup(void* ctxt) { #ifdef HAVE_SSL - SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method()); - if(!ctx) { - log_crypto_err("could not SSL_CTX_new"); - return NULL; - } + SSL_CTX* ctx = (SSL_CTX*)ctxt; /* no SSLv2, SSLv3 because has defects */ if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) != SSL_OP_NO_SSLv2){ log_crypto_err("could not set SSL_OP_NO_SSLv2"); - SSL_CTX_free(ctx); - return NULL; + return 0; } if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) != SSL_OP_NO_SSLv3){ log_crypto_err("could not set SSL_OP_NO_SSLv3"); - SSL_CTX_free(ctx); - return NULL; + return 0; } - if(!SSL_CTX_use_certificate_chain_file(ctx, pem)) { - log_err("error for cert file: %s", pem); - log_crypto_err("error in SSL_CTX use_certificate_chain_file"); - SSL_CTX_free(ctx); - return NULL; +#if defined(SSL_OP_NO_TLSv1) && defined(SSL_OP_NO_TLSv1_1) + /* if we have tls 1.1 disable 1.0 */ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_TLSv1) & SSL_OP_NO_TLSv1) + != SSL_OP_NO_TLSv1){ + log_crypto_err("could not set SSL_OP_NO_TLSv1"); + return 0; } - if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) { - log_err("error for private key file: %s", key); - log_crypto_err("Error in SSL_CTX use_PrivateKey_file"); - SSL_CTX_free(ctx); - return NULL; +#endif +#if defined(SSL_OP_NO_TLSv1_1) && defined(SSL_OP_NO_TLSv1_2) + /* if we have tls 1.2 disable 1.1 */ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_TLSv1_1) & SSL_OP_NO_TLSv1_1) + != SSL_OP_NO_TLSv1_1){ + log_crypto_err("could not set SSL_OP_NO_TLSv1_1"); + return 0; } - if(!SSL_CTX_check_private_key(ctx)) { - log_err("error for key file: %s", key); - log_crypto_err("Error in SSL_CTX check_private_key"); - SSL_CTX_free(ctx); - return NULL; +#endif +#if defined(SHA256_DIGEST_LENGTH) && defined(USE_ECDSA) + /* if we have sha256, set the cipher list to have no known vulns */ + if(!SSL_CTX_set_cipher_list(ctx, "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256")) + log_crypto_err("could not set cipher list with SSL_CTX_set_cipher_list"); +#endif + + if((SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE) & + SSL_OP_CIPHER_SERVER_PREFERENCE) != + SSL_OP_CIPHER_SERVER_PREFERENCE) { + log_crypto_err("could not set SSL_OP_CIPHER_SERVER_PREFERENCE"); + return 0; } + +#ifdef HAVE_SSL_CTX_SET_SECURITY_LEVEL + SSL_CTX_set_security_level(ctx, 0); +#endif +#else + (void)ctxt; +#endif /* HAVE_SSL */ + return 1; +} + +void +listen_sslctx_setup_2(void* ctxt) +{ +#ifdef HAVE_SSL + SSL_CTX* ctx = (SSL_CTX*)ctxt; + (void)ctx; #if HAVE_DECL_SSL_CTX_SET_ECDH_AUTO if(!SSL_CTX_set_ecdh_auto(ctx,1)) { log_crypto_err("Error in SSL_CTX_ecdh_auto, not enabling ECDHE"); @@ -666,7 +746,42 @@ void* listen_sslctx_create(char* key, char* pem, char* verifypem) } } #endif +#else + (void)ctxt; +#endif /* HAVE_SSL */ +} +void* listen_sslctx_create(char* key, char* pem, char* verifypem) +{ +#ifdef HAVE_SSL + SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method()); + if(!ctx) { + log_crypto_err("could not SSL_CTX_new"); + return NULL; + } + if(!listen_sslctx_setup(ctx)) { + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_use_certificate_chain_file(ctx, pem)) { + log_err("error for cert file: %s", pem); + log_crypto_err("error in SSL_CTX use_certificate_chain_file"); + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) { + log_err("error for private key file: %s", key); + log_crypto_err("Error in SSL_CTX use_PrivateKey_file"); + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_check_private_key(ctx)) { + log_err("error for key file: %s", key); + log_crypto_err("Error in SSL_CTX check_private_key"); + SSL_CTX_free(ctx); + return NULL; + } + listen_sslctx_setup_2(ctx); if(verifypem && verifypem[0]) { if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL)) { log_crypto_err("Error in SSL_CTX verify locations"); @@ -684,7 +799,97 @@ void* listen_sslctx_create(char* key, char* pem, char* verifypem) #endif } -void* connect_sslctx_create(char* key, char* pem, char* verifypem) +#ifdef USE_WINSOCK +/* For windows, the CA trust store is not read by openssl. + Add code to open the trust store using wincrypt API and add + the root certs into openssl trust store */ +static int +add_WIN_cacerts_to_openssl_store(SSL_CTX* tls_ctx) +{ + HCERTSTORE hSystemStore; + PCCERT_CONTEXT pTargetCert = NULL; + X509_STORE* store; + + verbose(VERB_ALGO, "Adding Windows certificates from system root store to CA store"); + + /* load just once per context lifetime for this version + TODO: dynamically update CA trust changes as they are available */ + if (!tls_ctx) + return 0; + + /* Call wincrypt's CertOpenStore to open the CA root store. */ + + if ((hSystemStore = CertOpenStore( + CERT_STORE_PROV_SYSTEM, + 0, + 0, + /* NOTE: mingw does not have this const: replace with 1 << 16 from code + CERT_SYSTEM_STORE_CURRENT_USER, */ + 1 << 16, + L"root")) == 0) + { + return 0; + } + + store = SSL_CTX_get_cert_store(tls_ctx); + if (!store) + return 0; + + /* failure if the CA store is empty or the call fails */ + if ((pTargetCert = CertEnumCertificatesInStore( + hSystemStore, pTargetCert)) == 0) { + verbose(VERB_ALGO, "CA certificate store for Windows is empty."); + return 0; + } + /* iterate over the windows cert store and add to openssl store */ + do + { + X509 *cert1 = d2i_X509(NULL, + (const unsigned char **)&pTargetCert->pbCertEncoded, + pTargetCert->cbCertEncoded); + if (!cert1) { + /* return error if a cert fails */ + verbose(VERB_ALGO, "%s %d:%s", + "Unable to parse certificate in memory", + (int)ERR_get_error(), ERR_error_string(ERR_get_error(), NULL)); + return 0; + } + else { + /* return error if a cert add to store fails */ + if (X509_STORE_add_cert(store, cert1) == 0) { + unsigned long error = ERR_peek_last_error(); + + /* Ignore error X509_R_CERT_ALREADY_IN_HASH_TABLE which means the + * certificate is already in the store. */ + if(ERR_GET_LIB(error) != ERR_LIB_X509 || + ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE) { + verbose(VERB_ALGO, "%s %d:%s\n", + "Error adding certificate", (int)ERR_get_error(), + ERR_error_string(ERR_get_error(), NULL)); + X509_free(cert1); + return 0; + } + } + X509_free(cert1); + } + } while ((pTargetCert = CertEnumCertificatesInStore( + hSystemStore, pTargetCert)) != 0); + + /* Clean up memory and quit. */ + if (pTargetCert) + CertFreeCertificateContext(pTargetCert); + if (hSystemStore) + { + if (!CertCloseStore( + hSystemStore, 0)) + return 0; + } + verbose(VERB_ALGO, "Completed adding Windows certificates to CA store successfully"); + return 1; +} +#endif /* USE_WINSOCK */ + +void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert) { #ifdef HAVE_SSL SSL_CTX* ctx = SSL_CTX_new(SSLv23_client_method()); @@ -724,17 +929,30 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem) return NULL; } } - if(verifypem && verifypem[0]) { - if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL)) { - log_crypto_err("error in SSL_CTX verify"); - SSL_CTX_free(ctx); - return NULL; + if((verifypem && verifypem[0]) || wincert) { + if(verifypem && verifypem[0]) { + if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL)) { + log_crypto_err("error in SSL_CTX verify"); + SSL_CTX_free(ctx); + return NULL; + } } +#ifdef USE_WINSOCK + if(wincert) { + if(!add_WIN_cacerts_to_openssl_store(ctx)) { + log_crypto_err("error in add_WIN_cacerts_to_openssl_store"); + SSL_CTX_free(ctx); + return NULL; + } + } +#else + (void)wincert; +#endif SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); } return ctx; #else - (void)key; (void)pem; (void)verifypem; + (void)key; (void)pem; (void)verifypem; (void)wincert; return NULL; #endif } @@ -783,9 +1001,9 @@ void* outgoing_ssl_fd(void* sslctx, int fd) #endif } -#if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) +#if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) && defined(CRYPTO_LOCK) && OPENSSL_VERSION_NUMBER < 0x10100000L /** global lock list for openssl locks */ -static lock_basic_t *ub_openssl_locks = NULL; +static lock_basic_type *ub_openssl_locks = NULL; /** callback that gets thread id for openssl */ static unsigned long @@ -808,10 +1026,10 @@ ub_crypto_lock_cb(int mode, int type, const char *ATTR_UNUSED(file), int ub_openssl_lock_init(void) { -#if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) +#if defined(HAVE_SSL) && defined(OPENSSL_THREADS) && !defined(THREADS_DISABLED) && defined(CRYPTO_LOCK) && OPENSSL_VERSION_NUMBER < 0x10100000L int i; - ub_openssl_locks = (lock_basic_t*)reallocarray( - NULL, (size_t)CRYPTO_num_locks(), sizeof(lock_basic_t)); + ub_openssl_locks = (lock_basic_type*)reallocarray( + NULL, (size_t)CRYPTO_num_locks(), sizeof(lock_basic_type)); if(!ub_openssl_locks) return 0; for(i=0; i #endif @@ -56,7 +59,9 @@ /* -------- Start of local definitions -------- */ /** if CMSG_ALIGN is not defined on this platform, a workaround */ #ifndef CMSG_ALIGN -# ifdef _CMSG_DATA_ALIGN +# ifdef __CMSG_ALIGN +# define CMSG_ALIGN(n) __CMSG_ALIGN(n) +# elif defined(CMSG_DATA_ALIGN) # define CMSG_ALIGN _CMSG_DATA_ALIGN # else # define CMSG_ALIGN(len) (((len)+sizeof(long)-1) & ~(sizeof(long)-1)) @@ -77,8 +82,10 @@ # endif #endif -/** The TCP reading or writing query timeout in seconds */ -#define TCP_QUERY_TIMEOUT 120 +/** The TCP reading or writing query timeout in milliseconds */ +#define TCP_QUERY_TIMEOUT 120000 +/** The TCP timeout in msec for fast queries, above half are used */ +#define TCP_QUERY_TIMEOUT_FAST 200 #ifndef NONBLOCKING_IS_BROKEN /** number of UDP reads to perform per read indication from select */ @@ -87,48 +94,29 @@ #define NUM_UDP_PER_SELECT 1 #endif -/* We define libevent structures here to hide the libevent stuff. */ - -#ifdef USE_MINI_EVENT -# ifdef USE_WINSOCK -# include "util/winsock_event.h" -# else -# include "util/mini_event.h" -# endif /* USE_WINSOCK */ -#else /* USE_MINI_EVENT */ - /* we use libevent */ -# ifdef HAVE_EVENT_H -# include -# else -# include "event2/event.h" -# include "event2/event_struct.h" -# include "event2/event_compat.h" -# endif -#endif /* USE_MINI_EVENT */ - /** - * The internal event structure for keeping libevent info for the event. + * The internal event structure for keeping ub_event info for the event. * Possibly other structures (list, tree) this is part of. */ struct internal_event { /** the comm base */ struct comm_base* base; - /** libevent event type, alloced here */ - struct event ev; + /** ub_event event type */ + struct ub_event* ev; }; /** * Internal base structure, so that every thread has its own events. */ struct internal_base { - /** libevent event_base type. */ - struct event_base* base; + /** ub_event event_base type. */ + struct ub_event_base* base; /** seconds time pointer points here */ time_t secs; /** timeval with current time */ struct timeval now; /** the event used for slow_accept timeouts */ - struct event slow_accept; + struct ub_event* slow_accept; /** true if slow_accept is enabled */ int slow_accept_enabled; }; @@ -137,10 +125,12 @@ struct internal_base { * Internal timer structure, to store timer event in. */ struct internal_timer { + /** the super struct from which derived */ + struct comm_timer super; /** the comm base */ struct comm_base* base; - /** libevent event type, alloced here */ - struct event ev; + /** ub_event event type */ + struct ub_event* ev; /** is timer enabled */ uint8_t enabled; }; @@ -149,8 +139,8 @@ struct internal_timer { * Internal signal structure, to store signal event in. */ struct internal_signal { - /** libevent event type, alloced here */ - struct event ev; + /** ub_event event type */ + struct ub_event* ev; /** next in signal list */ struct internal_signal* next; }; @@ -158,30 +148,17 @@ struct internal_signal { /** create a tcp handler with a parent */ static struct comm_point* comm_point_create_tcp_handler( struct comm_base *base, struct comm_point* parent, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /* -------- End of local definitions -------- */ -#ifdef USE_MINI_EVENT -/** minievent updates the time when it blocks. */ -#define comm_base_now(x) /* nothing to do */ -#else /* !USE_MINI_EVENT */ -/** fillup the time values in the event base */ -static void -comm_base_now(struct comm_base* b) -{ - if(gettimeofday(&b->eb->now, NULL) < 0) { - log_err("gettimeofday: %s", strerror(errno)); - } - b->eb->secs = (time_t)b->eb->now.tv_sec; -} -#endif /* USE_MINI_EVENT */ - struct comm_base* comm_base_create(int sigs) { struct comm_base* b = (struct comm_base*)calloc(1, sizeof(struct comm_base)); + const char *evnm="event", *evsys="", *evmethod=""; + if(!b) return NULL; b->eb = (struct internal_base*)calloc(1, sizeof(struct internal_base)); @@ -189,55 +166,20 @@ comm_base_create(int sigs) free(b); return NULL; } -#ifdef USE_MINI_EVENT - (void)sigs; - /* use mini event time-sharing feature */ - b->eb->base = event_init(&b->eb->secs, &b->eb->now); -#else -# if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) - /* libev */ - if(sigs) - b->eb->base=(struct event_base *)ev_default_loop(EVFLAG_AUTO); - else - b->eb->base=(struct event_base *)ev_loop_new(EVFLAG_AUTO); -# else - (void)sigs; -# ifdef HAVE_EVENT_BASE_NEW - b->eb->base = event_base_new(); -# else - b->eb->base = event_init(); -# endif -# endif -#endif + b->eb->base = ub_default_event_base(sigs, &b->eb->secs, &b->eb->now); if(!b->eb->base) { free(b->eb); free(b); return NULL; } - comm_base_now(b); - /* avoid event_get_method call which causes crashes even when - * not printing, because its result is passed */ - verbose(VERB_ALGO, -#if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) - "libev" -#elif defined(USE_MINI_EVENT) - "event " -#else - "libevent " -#endif - "%s uses %s method.", - event_get_version(), -#ifdef HAVE_EVENT_BASE_GET_METHOD - event_base_get_method(b->eb->base) -#else - "not_obtainable" -#endif - ); + ub_comm_base_now(b); + ub_get_event_sys(b->eb->base, &evnm, &evsys, &evmethod); + verbose(VERB_ALGO, "%s %s user %s method.", evnm, evsys, evmethod); return b; } struct comm_base* -comm_base_create_event(struct event_base* base) +comm_base_create_event(struct ub_event_base* base) { struct comm_base* b = (struct comm_base*)calloc(1, sizeof(struct comm_base)); @@ -249,7 +191,7 @@ comm_base_create_event(struct event_base* base) return NULL; } b->eb->base = base; - comm_base_now(b); + ub_comm_base_now(b); return b; } @@ -259,18 +201,12 @@ comm_base_delete(struct comm_base* b) if(!b) return; if(b->eb->slow_accept_enabled) { - if(event_del(&b->eb->slow_accept) != 0) { + if(ub_event_del(b->eb->slow_accept) != 0) { log_err("could not event_del slow_accept"); } + ub_event_free(b->eb->slow_accept); } -#ifdef USE_MINI_EVENT - event_base_free(b->eb->base); -#elif defined(HAVE_EVENT_BASE_FREE) && defined(HAVE_EVENT_BASE_ONCE) - /* only libevent 1.2+ has it, but in 1.2 it is broken - - assertion fails on signal handling ev that is not deleted - in libevent 1.3c (event_base_once appears) this is fixed. */ - event_base_free(b->eb->base); -#endif /* HAVE_EVENT_BASE_FREE and HAVE_EVENT_BASE_ONCE */ + ub_event_base_free(b->eb->base); b->eb->base = NULL; free(b->eb); free(b); @@ -282,9 +218,10 @@ comm_base_delete_no_base(struct comm_base* b) if(!b) return; if(b->eb->slow_accept_enabled) { - if(event_del(&b->eb->slow_accept) != 0) { + if(ub_event_del(b->eb->slow_accept) != 0) { log_err("could not event_del slow_accept"); } + ub_event_free(b->eb->slow_accept); } b->eb->base = NULL; free(b->eb); @@ -302,8 +239,8 @@ void comm_base_dispatch(struct comm_base* b) { int retval; - retval = event_base_dispatch(b->eb->base); - if(retval != 0) { + retval = ub_event_base_dispatch(b->eb->base); + if(retval < 0) { fatal_exit("event_dispatch returned error %d, " "errno is %s", retval, strerror(errno)); } @@ -311,7 +248,7 @@ comm_base_dispatch(struct comm_base* b) void comm_base_exit(struct comm_base* b) { - if(event_base_loopexit(b->eb->base, NULL) != 0) { + if(ub_event_base_loopexit(b->eb->base) != 0) { log_err("Could not loopexit"); } } @@ -324,7 +261,7 @@ void comm_base_set_slow_accept_handlers(struct comm_base* b, b->cb_arg = arg; } -struct event_base* comm_base_internal(struct comm_base* b) +struct ub_event_base* comm_base_internal(struct comm_base* b) { return b->eb->base; } @@ -356,8 +293,19 @@ udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen) #endif /* permission denied is gotten for every send if the * network is disconnected (on some OS), squelch it */ - if(errno == EPERM && verbosity < VERB_DETAIL) + if( ((errno == EPERM) +# ifdef EADDRNOTAVAIL + /* 'Cannot assign requested address' also when disconnected */ + || (errno == EADDRNOTAVAIL) +# endif + ) && verbosity < VERB_DETAIL) + return 0; +# ifdef EADDRINUSE + /* If SO_REUSEADDR is set, we could try to connect to the same server + * from the same source port twice. */ + if(errno == EADDRINUSE && verbosity < VERB_DETAIL) return 0; +# endif /* squelch errors where people deploy AAAA ::ffff:bla for * authority servers, which we try for intranets. */ if(errno == EINVAL && addr_is_ip4mapped( @@ -393,6 +341,31 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), sldns_buffer_remaining(packet), 0, addr, addrlen); + if(sent == -1) { + /* try again and block, waiting for IO to complete, + * we want to send the answer, and we will wait for + * the ethernet interface buffer to have space. */ +#ifndef USE_WINSOCK + if(errno == EAGAIN || +# ifdef EWOULDBLOCK + errno == EWOULDBLOCK || +# endif + errno == ENOBUFS) { +#else + if(WSAGetLastError() == WSAEINPROGRESS || + WSAGetLastError() == WSAENOBUFS || + WSAGetLastError() == WSAEWOULDBLOCK) { +#endif + int e; + fd_set_block(c->fd); + sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), + sldns_buffer_remaining(packet), 0, + addr, addrlen); + e = errno; + fd_set_nonblock(c->fd); + errno = e; + } + } if(sent == -1) { if(!udp_send_errno_needs_log(addr, addrlen)) return 0; @@ -546,12 +519,41 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, if(verbosity >= VERB_ALGO) p_ancil("send_udp over interface", r); sent = sendmsg(c->fd, &msg, 0); + if(sent == -1) { + /* try again and block, waiting for IO to complete, + * we want to send the answer, and we will wait for + * the ethernet interface buffer to have space. */ +#ifndef USE_WINSOCK + if(errno == EAGAIN || +# ifdef EWOULDBLOCK + errno == EWOULDBLOCK || +# endif + errno == ENOBUFS) { +#else + if(WSAGetLastError() == WSAEINPROGRESS || + WSAGetLastError() == WSAENOBUFS || + WSAGetLastError() == WSAEWOULDBLOCK) { +#endif + int e; + fd_set_block(c->fd); + sent = sendmsg(c->fd, &msg, 0); + e = errno; + fd_set_nonblock(c->fd); + errno = e; + } + } if(sent == -1) { if(!udp_send_errno_needs_log(addr, addrlen)) return 0; verbose(VERB_OPS, "sendmsg failed: %s", strerror(errno)); log_addr(VERB_OPS, "remote address is", (struct sockaddr_storage*)addr, addrlen); +#ifdef __NetBSD__ + /* netbsd 7 has IP_PKTINFO for recv but not send */ + if(errno == EINVAL && r->srctype == 4) + log_err("sendmsg: No support for sendmsg(IP_PKTINFO). " + "Please disable interface-automatic"); +#endif return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { log_err("sent %d in place of %d bytes", @@ -587,10 +589,10 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); - if(!(event&EV_READ)) + if(!(event&UB_EV_READ)) return; log_assert(rep.c && rep.c->buffer && rep.c->fd == fd); - comm_base_now(rep.c->ev->base); + ub_comm_base_now(rep.c->ev->base); for(i=0; ibuffer); rep.addrlen = (socklen_t)sizeof(rep.addr); @@ -653,14 +655,14 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) (void)comm_point_send_udp_msg_if(rep.c, rep.c->buffer, (struct sockaddr*)&rep.addr, rep.addrlen, &rep); } - if(rep.c->fd == -1) /* commpoint closed */ + if(!rep.c || rep.c->fd == -1) /* commpoint closed */ break; } #else (void)fd; (void)event; (void)arg; - fatal_exit("recvmsg: No support for IPV6_PKTINFO. " + fatal_exit("recvmsg: No support for IPV6_PKTINFO; IP_PKTINFO or IP_RECVDSTADDR. " "Please disable interface-automatic"); #endif /* AF_INET6 && IPV6_PKTINFO && HAVE_RECVMSG */ } @@ -671,14 +673,15 @@ comm_point_udp_callback(int fd, short event, void* arg) struct comm_reply rep; ssize_t rcv; int i; + struct sldns_buffer *buffer; rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); - if(!(event&EV_READ)) + if(!(event&UB_EV_READ)) return; log_assert(rep.c && rep.c->buffer && rep.c->fd == fd); - comm_base_now(rep.c->ev->base); + ub_comm_base_now(rep.c->ev->base); for(i=0; ibuffer); rep.addrlen = (socklen_t)sizeof(rep.addr); @@ -707,10 +710,15 @@ comm_point_udp_callback(int fd, short event, void* arg) fptr_ok(fptr_whitelist_comm_point(rep.c->callback)); if((*rep.c->callback)(rep.c, rep.c->cb_arg, NETEVENT_NOERROR, &rep)) { /* send back immediate reply */ - (void)comm_point_send_udp_msg(rep.c, rep.c->buffer, +#ifdef USE_DNSCRYPT + buffer = rep.c->dnscrypt_buffer; +#else + buffer = rep.c->buffer; +#endif + (void)comm_point_send_udp_msg(rep.c, buffer, (struct sockaddr*)&rep.addr, rep.addrlen); } - if(rep.c->fd != fd) /* commpoint closed to -1 or reused for + if(!rep.c || rep.c->fd != fd) /* commpoint closed to -1 or reused for another UDP port. Note rep.c cannot be reused with TCP fd. */ break; } @@ -718,14 +726,24 @@ comm_point_udp_callback(int fd, short event, void* arg) /** Use a new tcp handler for new query fd, set to read query */ static void -setup_tcp_handler(struct comm_point* c, int fd) +setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) { log_assert(c->type == comm_tcp); log_assert(c->fd == -1); sldns_buffer_clear(c->buffer); +#ifdef USE_DNSCRYPT + if (c->dnscrypt) + sldns_buffer_clear(c->dnscrypt_buffer); +#endif c->tcp_is_reading = 1; c->tcp_byte_count = 0; - comm_point_start_listening(c, fd, TCP_QUERY_TIMEOUT); + c->tcp_timeout_msec = TCP_QUERY_TIMEOUT; + /* if more than half the tcp handlers are in use, use a shorter + * timeout for this TCP connection, we need to make space for + * other connections to be able to get attention */ + if(cur > max/2) + c->tcp_timeout_msec = TCP_QUERY_TIMEOUT_FAST; + comm_point_start_listening(c, fd, c->tcp_timeout_msec); } void comm_base_handle_slow_accept(int ATTR_UNUSED(fd), @@ -746,7 +764,12 @@ int comm_point_perform_accept(struct comm_point* c, { int new_fd; *addrlen = (socklen_t)sizeof(*addr); +#ifndef HAVE_ACCEPT4 new_fd = accept(c->fd, (struct sockaddr*)addr, addrlen); +#else + /* SOCK_NONBLOCK saves extra calls to fcntl for the same result */ + new_fd = accept4(c->fd, (struct sockaddr*)addr, addrlen, SOCK_NONBLOCK); +#endif if(new_fd == -1) { #ifndef USE_WINSOCK /* EINTR is signal interrupt. others are closed connection. */ @@ -777,16 +800,17 @@ int comm_point_perform_accept(struct comm_point* c, (*b->stop_accept)(b->cb_arg); /* set timeout, no mallocs */ tv.tv_sec = NETEVENT_SLOW_ACCEPT_TIME/1000; - tv.tv_usec = NETEVENT_SLOW_ACCEPT_TIME%1000; - event_set(&b->eb->slow_accept, -1, EV_TIMEOUT, + tv.tv_usec = (NETEVENT_SLOW_ACCEPT_TIME%1000)*1000; + b->eb->slow_accept = ub_event_new(b->eb->base, + -1, UB_EV_TIMEOUT, comm_base_handle_slow_accept, b); - if(event_base_set(b->eb->base, - &b->eb->slow_accept) != 0) { + if(b->eb->slow_accept == NULL) { /* we do not want to log here, because * that would spam the logfiles. * error: "event_base_set failed." */ } - if(event_add(&b->eb->slow_accept, &tv) != 0) { + else if(ub_event_add(b->eb->slow_accept, &tv) + != 0) { /* we do not want to log here, * error: "event_add failed." */ } @@ -800,7 +824,7 @@ int comm_point_perform_accept(struct comm_point* c, WSAGetLastError() == WSAECONNRESET) return -1; if(WSAGetLastError() == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_READ); + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return -1; } log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), @@ -808,7 +832,9 @@ int comm_point_perform_accept(struct comm_point* c, #endif return -1; } +#ifndef HAVE_ACCEPT4 fd_set_nonblock(new_fd); +#endif return new_fd; } @@ -816,22 +842,23 @@ int comm_point_perform_accept(struct comm_point* c, static long win_bio_cb(BIO *b, int oper, const char* ATTR_UNUSED(argp), int ATTR_UNUSED(argi), long argl, long retvalue) { + int wsa_err = WSAGetLastError(); /* store errcode before it is gone */ verbose(VERB_ALGO, "bio_cb %d, %s %s %s", oper, (oper&BIO_CB_RETURN)?"return":"before", (oper&BIO_CB_READ)?"read":((oper&BIO_CB_WRITE)?"write":"other"), - WSAGetLastError()==WSAEWOULDBLOCK?"wsawb":""); + wsa_err==WSAEWOULDBLOCK?"wsawb":""); /* on windows, check if previous operation caused EWOULDBLOCK */ if( (oper == (BIO_CB_READ|BIO_CB_RETURN) && argl == 0) || (oper == (BIO_CB_GETS|BIO_CB_RETURN) && argl == 0)) { - if(WSAGetLastError() == WSAEWOULDBLOCK) - winsock_tcp_wouldblock((struct event*) - BIO_get_callback_arg(b), EV_READ); + if(wsa_err == WSAEWOULDBLOCK) + ub_winsock_tcp_wouldblock((struct ub_event*) + BIO_get_callback_arg(b), UB_EV_READ); } if( (oper == (BIO_CB_WRITE|BIO_CB_RETURN) && argl == 0) || (oper == (BIO_CB_PUTS|BIO_CB_RETURN) && argl == 0)) { - if(WSAGetLastError() == WSAEWOULDBLOCK) - winsock_tcp_wouldblock((struct event*) - BIO_get_callback_arg(b), EV_WRITE); + if(wsa_err == WSAEWOULDBLOCK) + ub_winsock_tcp_wouldblock((struct ub_event*) + BIO_get_callback_arg(b), UB_EV_WRITE); } /* return original return value */ return retvalue; @@ -844,9 +871,9 @@ comm_point_tcp_win_bio_cb(struct comm_point* c, void* thessl) SSL* ssl = (SSL*)thessl; /* set them both just in case, but usually they are the same BIO */ BIO_set_callback(SSL_get_rbio(ssl), &win_bio_cb); - BIO_set_callback_arg(SSL_get_rbio(ssl), (char*)&c->ev->ev); + BIO_set_callback_arg(SSL_get_rbio(ssl), (char*)c->ev->ev); BIO_set_callback(SSL_get_wbio(ssl), &win_bio_cb); - BIO_set_callback_arg(SSL_get_wbio(ssl), (char*)&c->ev->ev); + BIO_set_callback_arg(SSL_get_wbio(ssl), (char*)c->ev->ev); } #endif @@ -856,11 +883,11 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) struct comm_point* c = (struct comm_point*)arg, *c_hdl; int new_fd; log_assert(c->type == comm_tcp_accept); - if(!(event & EV_READ)) { + if(!(event & UB_EV_READ)) { log_info("ignoring tcp accept event %d", (int)event); return; } - comm_base_now(c->ev->base); + ub_comm_base_now(c->ev->base); /* find free tcp handler. */ if(!c->tcp_free) { log_warn("accepted too many tcp, connections full"); @@ -869,6 +896,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* accept incoming connection. */ c_hdl = c->tcp_free; log_assert(fd != -1); + (void)fd; new_fd = comm_point_perform_accept(c, &c_hdl->repinfo.addr, &c_hdl->repinfo.addrlen); if(new_fd == -1) @@ -893,7 +921,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* stop accepting incoming queries for now. */ comm_point_stop_listening(c); } - setup_tcp_handler(c_hdl, new_fd); + setup_tcp_handler(c_hdl, new_fd, c->cur_tcp_count, c->max_tcp_count); } /** Make tcp handler free for next assignment */ @@ -947,10 +975,36 @@ tcp_callback_reader(struct comm_point* c) comm_point_stop_listening(c); fptr_ok(fptr_whitelist_comm_point(c->callback)); if( (*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &c->repinfo) ) { - comm_point_start_listening(c, -1, TCP_QUERY_TIMEOUT); + comm_point_start_listening(c, -1, c->tcp_timeout_msec); } } +#ifdef HAVE_SSL +/** log certificate details */ +static void +log_cert(unsigned level, const char* str, X509* cert) +{ + BIO* bio; + char nul = 0; + char* pp = NULL; + long len; + if(verbosity < level) return; + bio = BIO_new(BIO_s_mem()); + if(!bio) return; + X509_print_ex(bio, cert, 0, (unsigned long)-1 + ^(X509_FLAG_NO_SUBJECT + |X509_FLAG_NO_ISSUER|X509_FLAG_NO_VALIDITY + |X509_FLAG_NO_EXTENSIONS|X509_FLAG_NO_AUX + |X509_FLAG_NO_ATTRIBUTES)); + BIO_write(bio, &nul, (int)sizeof(nul)); + len = BIO_get_mem_data(bio, &pp); + if(len != 0 && pp) { + verbose(level, "%s: \n%s", str, pp); + } + BIO_free(bio); +} +#endif /* HAVE_SSL */ + /** continue ssl handshake */ #ifdef HAVE_SSL static int @@ -1002,8 +1056,51 @@ ssl_handshake(struct comm_point* c) } } /* this is where peer verification could take place */ - log_addr(VERB_ALGO, "SSL DNS connection", &c->repinfo.addr, - c->repinfo.addrlen); + if((SSL_get_verify_mode(c->ssl)&SSL_VERIFY_PEER)) { + /* verification */ + if(SSL_get_verify_result(c->ssl) == X509_V_OK) { + X509* x = SSL_get_peer_certificate(c->ssl); + if(!x) { + log_addr(VERB_ALGO, "SSL connection failed: " + "no certificate", + &c->repinfo.addr, c->repinfo.addrlen); + return 0; + } + log_cert(VERB_ALGO, "peer certificate", x); +#ifdef HAVE_SSL_GET0_PEERNAME + if(SSL_get0_peername(c->ssl)) { + char buf[255]; + snprintf(buf, sizeof(buf), "SSL connection " + "to %s authenticated", + SSL_get0_peername(c->ssl)); + log_addr(VERB_ALGO, buf, &c->repinfo.addr, + c->repinfo.addrlen); + } else { +#endif + log_addr(VERB_ALGO, "SSL connection " + "authenticated", &c->repinfo.addr, + c->repinfo.addrlen); +#ifdef HAVE_SSL_GET0_PEERNAME + } +#endif + X509_free(x); + } else { + X509* x = SSL_get_peer_certificate(c->ssl); + if(x) { + log_cert(VERB_ALGO, "peer certificate", x); + X509_free(x); + } + log_addr(VERB_ALGO, "SSL connection failed: " + "failed to authenticate", + &c->repinfo.addr, c->repinfo.addrlen); + return 0; + } + } else { + /* unauthenticated, the verify peer flag was not set + * in c->ssl when the ssl object was created from ssl_ctx */ + log_addr(VERB_ALGO, "SSL connection", &c->repinfo.addr, + c->repinfo.addrlen); + } /* setup listen rw correctly */ if(c->tcp_is_reading) { @@ -1039,6 +1136,7 @@ ssl_handle_read(struct comm_point* c) if(want == SSL_ERROR_ZERO_RETURN) { return 0; /* shutdown, closed */ } else if(want == SSL_ERROR_WANT_READ) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; /* read more later */ } else if(want == SSL_ERROR_WANT_WRITE) { c->ssl_shake_state = comm_ssl_shake_hs_write; @@ -1054,7 +1152,7 @@ ssl_handle_read(struct comm_point* c) return 0; } c->tcp_byte_count += r; - if(c->tcp_byte_count != sizeof(uint16_t)) + if(c->tcp_byte_count < sizeof(uint16_t)) return 1; if(sldns_buffer_read_u16_at(c->buffer, 0) > sldns_buffer_capacity(c->buffer)) { @@ -1067,33 +1165,36 @@ ssl_handle_read(struct comm_point* c) verbose(VERB_QUERY, "ssl: dropped bogus too short."); return 0; } + sldns_buffer_skip(c->buffer, (ssize_t)(c->tcp_byte_count-sizeof(uint16_t))); verbose(VERB_ALGO, "Reading ssl tcp query of length %d", (int)sldns_buffer_limit(c->buffer)); } - log_assert(sldns_buffer_remaining(c->buffer) > 0); - ERR_clear_error(); - r = SSL_read(c->ssl, (void*)sldns_buffer_current(c->buffer), - (int)sldns_buffer_remaining(c->buffer)); - if(r <= 0) { - int want = SSL_get_error(c->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { - return 0; /* shutdown, closed */ - } else if(want == SSL_ERROR_WANT_READ) { - return 1; /* read more later */ - } else if(want == SSL_ERROR_WANT_WRITE) { - c->ssl_shake_state = comm_ssl_shake_hs_write; - comm_point_listen_for_rw(c, 0, 1); - return 1; - } else if(want == SSL_ERROR_SYSCALL) { - if(errno != 0) - log_err("SSL_read syscall: %s", - strerror(errno)); + if(sldns_buffer_remaining(c->buffer) > 0) { + ERR_clear_error(); + r = SSL_read(c->ssl, (void*)sldns_buffer_current(c->buffer), + (int)sldns_buffer_remaining(c->buffer)); + if(r <= 0) { + int want = SSL_get_error(c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return 0; /* shutdown, closed */ + } else if(want == SSL_ERROR_WANT_READ) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); + return 1; /* read more later */ + } else if(want == SSL_ERROR_WANT_WRITE) { + c->ssl_shake_state = comm_ssl_shake_hs_write; + comm_point_listen_for_rw(c, 0, 1); + return 1; + } else if(want == SSL_ERROR_SYSCALL) { + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + return 0; + } + log_crypto_err("could not SSL_read"); return 0; } - log_crypto_err("could not SSL_read"); - return 0; + sldns_buffer_skip(c->buffer, (ssize_t)r); } - sldns_buffer_skip(c->buffer, (ssize_t)r); if(sldns_buffer_remaining(c->buffer) <= 0) { tcp_callback_reader(c); } @@ -1121,9 +1222,24 @@ ssl_handle_write(struct comm_point* c) if(c->tcp_byte_count < sizeof(uint16_t)) { uint16_t len = htons(sldns_buffer_limit(c->buffer)); ERR_clear_error(); - r = SSL_write(c->ssl, - (void*)(((uint8_t*)&len)+c->tcp_byte_count), - (int)(sizeof(uint16_t)-c->tcp_byte_count)); + if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) < + LDNS_RR_BUF_SIZE) { + /* combine the tcp length and the query for write, + * this emulates writev */ + uint8_t buf[LDNS_RR_BUF_SIZE]; + memmove(buf, &len, sizeof(uint16_t)); + memmove(buf+sizeof(uint16_t), + sldns_buffer_current(c->buffer), + sldns_buffer_remaining(c->buffer)); + r = SSL_write(c->ssl, (void*)(buf+c->tcp_byte_count), + (int)(sizeof(uint16_t)+ + sldns_buffer_remaining(c->buffer) + - c->tcp_byte_count)); + } else { + r = SSL_write(c->ssl, + (void*)(((uint8_t*)&len)+c->tcp_byte_count), + (int)(sizeof(uint16_t)-c->tcp_byte_count)); + } if(r <= 0) { int want = SSL_get_error(c->ssl, r); if(want == SSL_ERROR_ZERO_RETURN) { @@ -1133,6 +1249,7 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { if(errno != 0) @@ -1166,6 +1283,7 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { if(errno != 0) @@ -1236,7 +1354,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(WSAGetLastError() == WSAEINPROGRESS) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_READ); + ub_winsock_tcp_wouldblock(c->ev->ev, + UB_EV_READ); return 1; } log_err_addr("read (in tcp s)", @@ -1281,7 +1400,7 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(WSAGetLastError() == WSAEINPROGRESS) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_READ); + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; } log_err_addr("read (in tcp r)", @@ -1307,7 +1426,13 @@ 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); +#ifdef USE_DNSCRYPT + buffer = c->dnscrypt_buffer; +#else + buffer = c->buffer; +#endif if(c->tcp_is_reading && !c->ssl) return 0; log_assert(fd != -1); @@ -1340,7 +1465,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(error == WSAEINPROGRESS) return 1; else if(error == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_WRITE); + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; } else if(error != 0 && verbosity < 2) return 0; @@ -1354,14 +1479,89 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(c->ssl) return ssl_handle_it(c); +#ifdef USE_MSG_FASTOPEN + /* Only try this on first use of a connection that uses tfo, + otherwise fall through to normal write */ + /* Also, TFO support on WINDOWS not implemented at the moment */ + if(c->tcp_do_fastopen == 1) { + /* this form of sendmsg() does both a connect() and send() so need to + look for various flavours of error*/ + uint16_t len = htons(sldns_buffer_limit(buffer)); + struct msghdr msg; + struct iovec iov[2]; + c->tcp_do_fastopen = 0; + memset(&msg, 0, sizeof(msg)); + iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; + iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; + iov[1].iov_base = sldns_buffer_begin(buffer); + iov[1].iov_len = sldns_buffer_limit(buffer); + log_assert(iov[0].iov_len > 0); + log_assert(iov[1].iov_len > 0); + msg.msg_name = &c->repinfo.addr; + msg.msg_namelen = c->repinfo.addrlen; + msg.msg_iov = iov; + msg.msg_iovlen = 2; + r = sendmsg(fd, &msg, MSG_FASTOPEN); + if (r == -1) { +#if defined(EINPROGRESS) && defined(EWOULDBLOCK) + /* Handshake is underway, maybe because no TFO cookie available. + Come back to write the message*/ + if(errno == EINPROGRESS || errno == EWOULDBLOCK) + return 1; +#endif + if(errno == EINTR || errno == EAGAIN) + return 1; + /* Not handling EISCONN here as shouldn't ever hit that case.*/ + if(errno != EPIPE && errno != 0 && verbosity < 2) + return 0; /* silence lots of chatter in the logs */ + if(errno != EPIPE && errno != 0) { + log_err_addr("tcp sendmsg", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); + return 0; + } + /* fallthrough to nonFASTOPEN + * (MSG_FASTOPEN on Linux 3 produces EPIPE) + * we need to perform connect() */ + if(connect(fd, (struct sockaddr *)&c->repinfo.addr, c->repinfo.addrlen) == -1) { +#ifdef EINPROGRESS + if(errno == EINPROGRESS) + return 1; /* wait until connect done*/ +#endif +#ifdef USE_WINSOCK + if(WSAGetLastError() == WSAEINPROGRESS || + WSAGetLastError() == WSAEWOULDBLOCK) + return 1; /* wait until connect done*/ +#endif + if(tcp_connect_errno_needs_log( + (struct sockaddr *)&c->repinfo.addr, c->repinfo.addrlen)) { + log_err_addr("outgoing tcp: connect after EPIPE for fastopen", + strerror(errno), &c->repinfo.addr, c->repinfo.addrlen); + } + return 0; + } + + } else { + c->tcp_byte_count += r; + if(c->tcp_byte_count < sizeof(uint16_t)) + return 1; + sldns_buffer_set_position(buffer, c->tcp_byte_count - + sizeof(uint16_t)); + if(sldns_buffer_remaining(buffer) == 0) { + tcp_callback_writer(c); + return 1; + } + } + } +#endif /* USE_MSG_FASTOPEN */ + if(c->tcp_byte_count < sizeof(uint16_t)) { - uint16_t len = htons(sldns_buffer_limit(c->buffer)); + uint16_t len = htons(sldns_buffer_limit(buffer)); #ifdef HAVE_WRITEV struct iovec iov[2]; iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; - iov[1].iov_base = sldns_buffer_begin(c->buffer); - iov[1].iov_len = sldns_buffer_limit(c->buffer); + iov[1].iov_base = sldns_buffer_begin(buffer); + iov[1].iov_len = sldns_buffer_limit(buffer); log_assert(iov[0].iov_len > 0); log_assert(iov[1].iov_len > 0); r = writev(fd, iov, 2); @@ -1390,7 +1590,8 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(WSAGetLastError() == WSAEINPROGRESS) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_WRITE); + ub_winsock_tcp_wouldblock(c->ev->ev, + UB_EV_WRITE); return 1; } log_err_addr("tcp send s", @@ -1402,16 +1603,16 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) c->tcp_byte_count += r; if(c->tcp_byte_count < sizeof(uint16_t)) return 1; - sldns_buffer_set_position(c->buffer, c->tcp_byte_count - + sldns_buffer_set_position(buffer, c->tcp_byte_count - sizeof(uint16_t)); - if(sldns_buffer_remaining(c->buffer) == 0) { + if(sldns_buffer_remaining(buffer) == 0) { tcp_callback_writer(c); return 1; } } - log_assert(sldns_buffer_remaining(c->buffer) > 0); - r = send(fd, (void*)sldns_buffer_current(c->buffer), - sldns_buffer_remaining(c->buffer), 0); + log_assert(sldns_buffer_remaining(buffer) > 0); + r = send(fd, (void*)sldns_buffer_current(buffer), + sldns_buffer_remaining(buffer), 0); if(r == -1) { #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) @@ -1422,7 +1623,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(WSAGetLastError() == WSAEINPROGRESS) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { - winsock_tcp_wouldblock(&c->ev->ev, EV_WRITE); + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; } log_err_addr("tcp send r", wsa_strerror(WSAGetLastError()), @@ -1430,9 +1631,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #endif return 0; } - sldns_buffer_skip(c->buffer, r); + sldns_buffer_skip(buffer, r); - if(sldns_buffer_remaining(c->buffer) == 0) { + if(sldns_buffer_remaining(buffer) == 0) { tcp_callback_writer(c); } @@ -1444,9 +1645,30 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) { struct comm_point* c = (struct comm_point*)arg; log_assert(c->type == comm_tcp); - comm_base_now(c->ev->base); + ub_comm_base_now(c->ev->base); - if(event&EV_READ) { +#ifdef USE_DNSCRYPT + /* Initialize if this is a dnscrypt socket */ + if(c->tcp_parent) { + c->dnscrypt = c->tcp_parent->dnscrypt; + } + if(c->dnscrypt && c->dnscrypt_buffer == c->buffer) { + c->dnscrypt_buffer = sldns_buffer_new(sldns_buffer_capacity(c->buffer)); + if(!c->dnscrypt_buffer) { + log_err("Could not allocate dnscrypt buffer"); + reclaim_tcp_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } + return; + } + } +#endif + + if(event&UB_EV_READ) { if(!comm_point_tcp_handle_read(fd, c, 0)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -1458,7 +1680,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } return; } - if(event&EV_WRITE) { + if(event&UB_EV_WRITE) { if(!comm_point_tcp_handle_write(fd, c)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -1470,7 +1692,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } return; } - if(event&EV_TIMEOUT) { + if(event&UB_EV_TIMEOUT) { verbose(VERB_QUERY, "tcp took too long, dropped"); reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -1483,40 +1705,678 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) log_err("Ignored event %d for tcphdl.", event); } -void comm_point_local_handle_callback(int fd, short event, void* arg) +/** Make http handler free for next assignment */ +static void +reclaim_http_handler(struct comm_point* c) { - struct comm_point* c = (struct comm_point*)arg; - log_assert(c->type == comm_local); - comm_base_now(c->ev->base); + log_assert(c->type == comm_http); + if(c->ssl) { +#ifdef HAVE_SSL + SSL_shutdown(c->ssl); + SSL_free(c->ssl); + c->ssl = NULL; +#endif + } + comm_point_close(c); + if(c->tcp_parent) { + c->tcp_parent->cur_tcp_count--; + c->tcp_free = c->tcp_parent->tcp_free; + c->tcp_parent->tcp_free = c; + if(!c->tcp_free) { + /* re-enable listening on accept socket */ + comm_point_start_listening(c->tcp_parent, -1, -1); + } + } +} - if(event&EV_READ) { - if(!comm_point_tcp_handle_read(fd, c, 1)) { - fptr_ok(fptr_whitelist_comm_point(c->callback)); - (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, - NULL); +/** read more data for http (with ssl) */ +static int +ssl_http_read_more(struct comm_point* c) +{ +#ifdef HAVE_SSL + int r; + log_assert(sldns_buffer_remaining(c->buffer) > 0); + ERR_clear_error(); + r = SSL_read(c->ssl, (void*)sldns_buffer_current(c->buffer), + (int)sldns_buffer_remaining(c->buffer)); + if(r <= 0) { + int want = SSL_get_error(c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return 0; /* shutdown, closed */ + } else if(want == SSL_ERROR_WANT_READ) { + return 1; /* read more later */ + } else if(want == SSL_ERROR_WANT_WRITE) { + c->ssl_shake_state = comm_ssl_shake_hs_write; + comm_point_listen_for_rw(c, 0, 1); + return 1; + } else if(want == SSL_ERROR_SYSCALL) { + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + return 0; } - return; + log_crypto_err("could not SSL_read"); + return 0; } - log_err("Ignored event %d for localhdl.", event); + sldns_buffer_skip(c->buffer, (ssize_t)r); + return 1; +#else + (void)c; + return 0; +#endif /* HAVE_SSL */ } -void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), - short event, void* arg) +/** read more data for http */ +static int +http_read_more(int fd, struct comm_point* c) { - struct comm_point* c = (struct comm_point*)arg; - int err = NETEVENT_NOERROR; - log_assert(c->type == comm_raw); - comm_base_now(c->ev->base); - - if(event&EV_TIMEOUT) - err = NETEVENT_TIMEOUT; - fptr_ok(fptr_whitelist_comm_point_raw(c->callback)); - (void)(*c->callback)(c, c->cb_arg, err, NULL); + ssize_t r; + log_assert(sldns_buffer_remaining(c->buffer) > 0); + r = recv(fd, (void*)sldns_buffer_current(c->buffer), + sldns_buffer_remaining(c->buffer), 0); + if(r == 0) { + return 0; + } else if(r == -1) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return 1; + log_err_addr("read (in http r)", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); +#else /* USE_WINSOCK */ + if(WSAGetLastError() == WSAECONNRESET) + return 0; + if(WSAGetLastError() == WSAEINPROGRESS) + return 1; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); + return 1; + } + log_err_addr("read (in http r)", + wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); +#endif + return 0; + } + sldns_buffer_skip(c->buffer, r); + return 1; } -struct comm_point* -comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, - comm_point_callback_t* callback, void* callback_arg) +/** return true if http header has been read (one line complete) */ +static int +http_header_done(sldns_buffer* buf) +{ + size_t i; + for(i=sldns_buffer_position(buf); ibuffer); + if(!line) return 1; + verbose(VERB_ALGO, "http header: %s", line); + if(strncasecmp(line, "HTTP/1.1 ", 9) == 0) { + /* check returncode */ + if(line[9] != '2') { + verbose(VERB_ALGO, "http bad status %s", line+9); + return 0; + } + } else if(strncasecmp(line, "Content-Length: ", 16) == 0) { + if(!c->http_is_chunked) + c->tcp_byte_count = (size_t)atoi(line+16); + } else if(strncasecmp(line, "Transfer-Encoding: chunked", 19+7) == 0) { + c->tcp_byte_count = 0; + c->http_is_chunked = 1; + } else if(line[0] == 0) { + /* end of initial headers */ + c->http_in_headers = 0; + if(c->http_is_chunked) + c->http_in_chunk_headers = 1; + /* remove header text from front of buffer + * the buffer is going to be used to return the data segment + * itself and we don't want the header to get returned + * prepended with it */ + http_moveover_buffer(c->buffer); + sldns_buffer_flip(c->buffer); + return 1; + } + /* ignore other headers */ + return 1; +} + +/** a chunk header is complete, process it, return 0=fail, 1=continue next + * header line, 2=done with chunked transfer*/ +static int +http_process_chunk_header(struct comm_point* c) +{ + char* line = http_header_line(c->buffer); + if(!line) return 1; + if(c->http_in_chunk_headers == 3) { + verbose(VERB_ALGO, "http chunk trailer: %s", line); + /* are we done ? */ + if(line[0] == 0 && c->tcp_byte_count == 0) { + /* callback of http reader when NETEVENT_DONE, + * end of data, with no data in buffer */ + sldns_buffer_set_position(c->buffer, 0); + sldns_buffer_set_limit(c->buffer, 0); + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_DONE, NULL); + /* return that we are done */ + return 2; + } + if(line[0] == 0) { + /* continue with header of the next chunk */ + c->http_in_chunk_headers = 1; + /* remove header text from front of buffer */ + http_moveover_buffer(c->buffer); + sldns_buffer_flip(c->buffer); + return 1; + } + /* ignore further trail headers */ + return 1; + } + verbose(VERB_ALGO, "http chunk header: %s", line); + if(c->http_in_chunk_headers == 1) { + /* read chunked start line */ + char* end = NULL; + c->tcp_byte_count = (size_t)strtol(line, &end, 16); + if(end == line) + return 0; + c->http_in_chunk_headers = 0; + /* remove header text from front of buffer */ + http_moveover_buffer(c->buffer); + sldns_buffer_flip(c->buffer); + if(c->tcp_byte_count == 0) { + /* done with chunks, process chunk_trailer lines */ + c->http_in_chunk_headers = 3; + } + return 1; + } + /* ignore other headers */ + return 1; +} + +/** handle nonchunked data segment */ +static int +http_nonchunk_segment(struct comm_point* c) +{ + /* c->buffer at position..limit has new data we read in. + * the buffer itself is full of nonchunked data. + * we are looking to read tcp_byte_count more data + * and then the transfer is done. */ + size_t remainbufferlen; + size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored; + if(c->tcp_byte_count <= got_now) { + /* done, this is the last data fragment */ + c->http_stored = 0; + sldns_buffer_set_position(c->buffer, 0); + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_DONE, NULL); + return 1; + } + c->tcp_byte_count -= got_now; + /* if we have the buffer space, + * read more data collected into the buffer */ + remainbufferlen = sldns_buffer_capacity(c->buffer) - + sldns_buffer_limit(c->buffer); + if(remainbufferlen >= c->tcp_byte_count || + remainbufferlen >= 2048) { + size_t total = sldns_buffer_limit(c->buffer); + sldns_buffer_clear(c->buffer); + sldns_buffer_set_position(c->buffer, total); + c->http_stored = total; + /* return and wait to read more */ + return 1; + } + /* call callback with this data amount, then + * wait for more */ + c->http_stored = 0; + sldns_buffer_set_position(c->buffer, 0); + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, NULL); + /* c->callback has to buffer_clear(c->buffer). */ + /* return and wait to read more */ + return 1; +} + +/** handle nonchunked data segment, return 0=fail, 1=wait, 2=process more */ +static int +http_chunked_segment(struct comm_point* c) +{ + /* the c->buffer has from position..limit new data we read. */ + /* the current chunk has length tcp_byte_count. + * once we read that read more chunk headers. + */ + size_t remainbufferlen; + size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored; + if(c->tcp_byte_count <= got_now) { + /* the chunk has completed (with perhaps some extra data + * from next chunk header and next chunk) */ + /* save too much info into temp buffer */ + size_t fraglen; + struct comm_reply repinfo; + c->http_stored = 0; + sldns_buffer_skip(c->buffer, (ssize_t)c->tcp_byte_count); + sldns_buffer_clear(c->http_temp); + sldns_buffer_write(c->http_temp, + sldns_buffer_current(c->buffer), + sldns_buffer_remaining(c->buffer)); + sldns_buffer_flip(c->http_temp); + + /* callback with this fragment */ + fraglen = sldns_buffer_position(c->buffer); + sldns_buffer_set_position(c->buffer, 0); + sldns_buffer_set_limit(c->buffer, fraglen); + repinfo = c->repinfo; + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &repinfo); + /* c->callback has to buffer_clear(). */ + + /* is commpoint deleted? */ + if(!repinfo.c) { + return 1; + } + /* copy waiting info */ + sldns_buffer_clear(c->buffer); + sldns_buffer_write(c->buffer, + sldns_buffer_begin(c->http_temp), + sldns_buffer_remaining(c->http_temp)); + sldns_buffer_flip(c->buffer); + /* process end of chunk trailer header lines, until + * an empty line */ + c->http_in_chunk_headers = 3; + /* process more data in buffer (if any) */ + return 2; + } + c->tcp_byte_count -= got_now; + + /* if we have the buffer space, + * read more data collected into the buffer */ + remainbufferlen = sldns_buffer_capacity(c->buffer) - + sldns_buffer_limit(c->buffer); + if(remainbufferlen >= c->tcp_byte_count || + remainbufferlen >= 2048) { + size_t total = sldns_buffer_limit(c->buffer); + sldns_buffer_clear(c->buffer); + sldns_buffer_set_position(c->buffer, total); + c->http_stored = total; + /* return and wait to read more */ + return 1; + } + + /* callback of http reader for a new part of the data */ + c->http_stored = 0; + sldns_buffer_set_position(c->buffer, 0); + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, NULL); + /* c->callback has to buffer_clear(c->buffer). */ + /* return and wait to read more */ + return 1; +} + +/** + * Handle http reading callback. + * @param fd: file descriptor of socket. + * @param c: comm point to read from into buffer. + * @return: 0 on error + */ +static int +comm_point_http_handle_read(int fd, struct comm_point* c) +{ + log_assert(c->type == comm_http); + log_assert(fd != -1); + + /* if we are in ssl handshake, handle SSL handshake */ +#ifdef HAVE_SSL + if(c->ssl && c->ssl_shake_state != comm_ssl_shake_none) { + if(!ssl_handshake(c)) + return 0; + if(c->ssl_shake_state != comm_ssl_shake_none) + return 1; + } +#endif /* HAVE_SSL */ + + if(!c->tcp_is_reading) + return 1; + /* read more data */ + if(c->ssl) { + if(!ssl_http_read_more(c)) + return 0; + } else { + if(!http_read_more(fd, c)) + return 0; + } + + sldns_buffer_flip(c->buffer); + while(sldns_buffer_remaining(c->buffer) > 0) { + /* if we are reading headers, read more headers */ + if(c->http_in_headers || c->http_in_chunk_headers) { + /* if header is done, process the header */ + if(!http_header_done(c->buffer)) { + /* copy remaining data to front of buffer + * and set rest for writing into it */ + http_moveover_buffer(c->buffer); + /* return and wait to read more */ + return 1; + } + if(!c->http_in_chunk_headers) { + /* process initial headers */ + if(!http_process_initial_header(c)) + return 0; + } else { + /* process chunk headers */ + int r = http_process_chunk_header(c); + if(r == 0) return 0; + if(r == 2) return 1; /* done */ + /* r == 1, continue */ + } + /* see if we have more to process */ + continue; + } + + if(!c->http_is_chunked) { + /* if we are reading nonchunks, process that*/ + return http_nonchunk_segment(c); + } else { + /* if we are reading chunks, read the chunk */ + int r = http_chunked_segment(c); + if(r == 0) return 0; + if(r == 1) return 1; + continue; + } + } + /* broke out of the loop; could not process header instead need + * to read more */ + /* moveover any remaining data and read more data */ + http_moveover_buffer(c->buffer); + /* return and wait to read more */ + return 1; +} + +/** check pending connect for http */ +static int +http_check_connect(int fd, struct comm_point* c) +{ + /* check for pending error from nonblocking connect */ + /* from Stevens, unix network programming, vol1, 3rd ed, p450*/ + int error = 0; + socklen_t len = (socklen_t)sizeof(error); + if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, + &len) < 0){ +#ifndef USE_WINSOCK + error = errno; /* on solaris errno is error */ +#else /* USE_WINSOCK */ + error = WSAGetLastError(); +#endif + } +#ifndef USE_WINSOCK +#if defined(EINPROGRESS) && defined(EWOULDBLOCK) + if(error == EINPROGRESS || error == EWOULDBLOCK) + return 1; /* try again later */ + else +#endif + if(error != 0 && verbosity < 2) + return 0; /* silence lots of chatter in the logs */ + else if(error != 0) { + log_err_addr("http connect", strerror(error), + &c->repinfo.addr, c->repinfo.addrlen); +#else /* USE_WINSOCK */ + /* examine error */ + if(error == WSAEINPROGRESS) + return 1; + else if(error == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); + return 1; + } else if(error != 0 && verbosity < 2) + return 0; + else if(error != 0) { + log_err_addr("http connect", wsa_strerror(error), + &c->repinfo.addr, c->repinfo.addrlen); +#endif /* USE_WINSOCK */ + return 0; + } + /* keep on processing this socket */ + return 2; +} + +/** write more data for http (with ssl) */ +static int +ssl_http_write_more(struct comm_point* c) +{ +#ifdef HAVE_SSL + int r; + log_assert(sldns_buffer_remaining(c->buffer) > 0); + ERR_clear_error(); + r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer), + (int)sldns_buffer_remaining(c->buffer)); + if(r <= 0) { + int want = SSL_get_error(c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return 0; /* closed */ + } else if(want == SSL_ERROR_WANT_READ) { + c->ssl_shake_state = comm_ssl_shake_read; + comm_point_listen_for_rw(c, 1, 0); + return 1; /* wait for read condition */ + } else if(want == SSL_ERROR_WANT_WRITE) { + return 1; /* write more later */ + } else if(want == SSL_ERROR_SYSCALL) { + if(errno != 0) + log_err("SSL_write syscall: %s", + strerror(errno)); + return 0; + } + log_crypto_err("could not SSL_write"); + return 0; + } + sldns_buffer_skip(c->buffer, (ssize_t)r); + return 1; +#else + (void)c; + return 0; +#endif /* HAVE_SSL */ +} + +/** write more data for http */ +static int +http_write_more(int fd, struct comm_point* c) +{ + ssize_t r; + log_assert(sldns_buffer_remaining(c->buffer) > 0); + r = send(fd, (void*)sldns_buffer_current(c->buffer), + sldns_buffer_remaining(c->buffer), 0); + if(r == -1) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return 1; + log_err_addr("http send r", strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); +#else + if(WSAGetLastError() == WSAEINPROGRESS) + return 1; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); + return 1; + } + log_err_addr("http send r", wsa_strerror(WSAGetLastError()), + &c->repinfo.addr, c->repinfo.addrlen); +#endif + return 0; + } + sldns_buffer_skip(c->buffer, r); + return 1; +} + +/** + * Handle http writing callback. + * @param fd: file descriptor of socket. + * @param c: comm point to write buffer out of. + * @return: 0 on error + */ +static int +comm_point_http_handle_write(int fd, struct comm_point* c) +{ + log_assert(c->type == comm_http); + log_assert(fd != -1); + + /* check pending connect errors, if that fails, we wait for more, + * or we can continue to write contents */ + if(c->tcp_check_nb_connect) { + int r = http_check_connect(fd, c); + if(r == 0) return 0; + if(r == 1) return 1; + c->tcp_check_nb_connect = 0; + } + /* if we are in ssl handshake, handle SSL handshake */ +#ifdef HAVE_SSL + if(c->ssl && c->ssl_shake_state != comm_ssl_shake_none) { + if(!ssl_handshake(c)) + return 0; + if(c->ssl_shake_state != comm_ssl_shake_none) + return 1; + } +#endif /* HAVE_SSL */ + if(c->tcp_is_reading) + return 1; + /* if we are writing, write more */ + if(c->ssl) { + if(!ssl_http_write_more(c)) + return 0; + } else { + if(!http_write_more(fd, c)) + return 0; + } + + /* we write a single buffer contents, that can contain + * the http request, and then flip to read the results */ + /* see if write is done */ + if(sldns_buffer_remaining(c->buffer) == 0) { + sldns_buffer_clear(c->buffer); + if(c->tcp_do_toggle_rw) + c->tcp_is_reading = 1; + c->tcp_byte_count = 0; + /* switch from listening(write) to listening(read) */ + comm_point_stop_listening(c); + comm_point_start_listening(c, -1, -1); + } + return 1; +} + +void +comm_point_http_handle_callback(int fd, short event, void* arg) +{ + struct comm_point* c = (struct comm_point*)arg; + log_assert(c->type == comm_http); + ub_comm_base_now(c->ev->base); + + if(event&UB_EV_READ) { + if(!comm_point_http_handle_read(fd, c)) { + reclaim_http_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } + } + return; + } + if(event&UB_EV_WRITE) { + if(!comm_point_http_handle_write(fd, c)) { + reclaim_http_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } + } + return; + } + if(event&UB_EV_TIMEOUT) { + verbose(VERB_QUERY, "http took too long, dropped"); + reclaim_http_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_TIMEOUT, NULL); + } + return; + } + log_err("Ignored event %d for httphdl.", event); +} + +void comm_point_local_handle_callback(int fd, short event, void* arg) +{ + struct comm_point* c = (struct comm_point*)arg; + log_assert(c->type == comm_local); + ub_comm_base_now(c->ev->base); + + if(event&UB_EV_READ) { + if(!comm_point_tcp_handle_read(fd, c, 1)) { + fptr_ok(fptr_whitelist_comm_point(c->callback)); + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, + NULL); + } + return; + } + log_err("Ignored event %d for localhdl.", event); +} + +void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), + short event, void* arg) +{ + struct comm_point* c = (struct comm_point*)arg; + int err = NETEVENT_NOERROR; + log_assert(c->type == comm_raw); + ub_comm_base_now(c->ev->base); + + if(event&UB_EV_TIMEOUT) + err = NETEVENT_TIMEOUT; + fptr_ok(fptr_whitelist_comm_point_raw(c->callback)); + (void)(*c->callback)(c, c->cb_arg, err, NULL); +} + +struct comm_point* +comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1545,18 +2405,26 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, c->do_not_close = 0; c->tcp_do_toggle_rw = 0; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = buffer; +#endif c->inuse = 0; c->callback = callback; c->cb_arg = callback_arg; - evbits = EV_READ | EV_PERSIST; - /* libevent stuff */ - event_set(&c->ev->ev, c->fd, evbits, comm_point_udp_callback, c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0) { + evbits = UB_EV_READ | UB_EV_PERSIST; + /* ub_event stuff */ + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_udp_callback, c); + if(c->ev->ev == NULL) { log_err("could not baseset udp event"); comm_point_delete(c); return NULL; } - if(fd!=-1 && event_add(&c->ev->ev, c->timeout) != 0 ) { + if(fd!=-1 && ub_event_add(c->ev->ev, c->timeout) != 0 ) { log_err("could not add udp event"); comm_point_delete(c); return NULL; @@ -1567,7 +2435,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, struct comm_point* comm_point_create_udp_ancil(struct comm_base *base, int fd, sldns_buffer* buffer, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1594,20 +2462,28 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd, c->type = comm_udp; c->tcp_do_close = 0; c->do_not_close = 0; +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = buffer; +#endif c->inuse = 0; c->tcp_do_toggle_rw = 0; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif c->callback = callback; c->cb_arg = callback_arg; - evbits = EV_READ | EV_PERSIST; - /* libevent stuff */ - event_set(&c->ev->ev, c->fd, evbits, comm_point_udp_ancil_callback, c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0) { + evbits = UB_EV_READ | UB_EV_PERSIST; + /* ub_event stuff */ + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_udp_ancil_callback, c); + if(c->ev->ev == NULL) { log_err("could not baseset udp event"); comm_point_delete(c); return NULL; } - if(fd!=-1 && event_add(&c->ev->ev, c->timeout) != 0 ) { + if(fd!=-1 && ub_event_add(c->ev->ev, c->timeout) != 0 ) { log_err("could not add udp event"); comm_point_delete(c); return NULL; @@ -1618,7 +2494,7 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd, static struct comm_point* comm_point_create_tcp_handler(struct comm_base *base, struct comm_point* parent, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1658,16 +2534,26 @@ comm_point_create_tcp_handler(struct comm_base *base, c->do_not_close = 0; c->tcp_do_toggle_rw = 1; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + /* We don't know just yet if this is a dnscrypt channel. Allocation + * will be done when handling the callback. */ + c->dnscrypt_buffer = c->buffer; +#endif c->repinfo.c = c; c->callback = callback; c->cb_arg = callback_arg; /* add to parent free list */ c->tcp_free = parent->tcp_free; parent->tcp_free = c; - /* libevent stuff */ - evbits = EV_PERSIST | EV_READ | EV_TIMEOUT; - event_set(&c->ev->ev, c->fd, evbits, comm_point_tcp_handle_callback, c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0) + /* ub_event stuff */ + evbits = UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_tcp_handle_callback, c); + if(c->ev->ev == NULL) { log_err("could not basetset tcphdl event"); parent->tcp_free = c->tcp_free; @@ -1680,7 +2566,7 @@ comm_point_create_tcp_handler(struct comm_base *base, struct comm_point* comm_point_create_tcp(struct comm_base *base, int fd, int num, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1717,19 +2603,29 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, size_t bufsize, c->do_not_close = 0; c->tcp_do_toggle_rw = 0; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = NULL; +#endif c->callback = NULL; c->cb_arg = NULL; - evbits = EV_READ | EV_PERSIST; - /* libevent stuff */ - event_set(&c->ev->ev, c->fd, evbits, comm_point_tcp_accept_callback, c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0 || - event_add(&c->ev->ev, c->timeout) != 0 ) - { + evbits = UB_EV_READ | UB_EV_PERSIST; + /* ub_event stuff */ + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_tcp_accept_callback, c); + if(c->ev->ev == NULL) { + log_err("could not baseset tcpacc event"); + comm_point_delete(c); + return NULL; + } + if (ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("could not add tcpacc event"); comm_point_delete(c); return NULL; } - /* now prealloc the tcp handlers */ for(i=0; itcp_handlers[i] = comm_point_create_tcp_handler(base, @@ -1745,7 +2641,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, size_t bufsize, struct comm_point* comm_point_create_tcp_out(struct comm_base *base, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1779,14 +2675,91 @@ comm_point_create_tcp_out(struct comm_base *base, size_t bufsize, c->do_not_close = 0; c->tcp_do_toggle_rw = 1; c->tcp_check_nb_connect = 1; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 1; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = c->buffer; +#endif + c->repinfo.c = c; + c->callback = callback; + c->cb_arg = callback_arg; + evbits = UB_EV_PERSIST | UB_EV_WRITE; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_tcp_handle_callback, c); + if(c->ev->ev == NULL) + { + log_err("could not baseset tcpout event"); + sldns_buffer_free(c->buffer); + free(c->ev); + free(c); + return NULL; + } + + return c; +} + +struct comm_point* +comm_point_create_http_out(struct comm_base *base, size_t bufsize, + comm_point_callback_type* callback, void* callback_arg, + sldns_buffer* temp) +{ + struct comm_point* c = (struct comm_point*)calloc(1, + sizeof(struct comm_point)); + short evbits; + if(!c) + return NULL; + c->ev = (struct internal_event*)calloc(1, + sizeof(struct internal_event)); + if(!c->ev) { + free(c); + return NULL; + } + c->ev->base = base; + c->fd = -1; + c->buffer = sldns_buffer_new(bufsize); + if(!c->buffer) { + free(c->ev); + free(c); + return NULL; + } + c->timeout = NULL; + c->tcp_is_reading = 0; + c->tcp_byte_count = 0; + c->tcp_parent = NULL; + c->max_tcp_count = 0; + c->cur_tcp_count = 0; + c->tcp_handlers = NULL; + c->tcp_free = NULL; + c->type = comm_http; + c->tcp_do_close = 0; + c->do_not_close = 0; + c->tcp_do_toggle_rw = 1; + c->tcp_check_nb_connect = 1; + c->http_in_headers = 1; + c->http_in_chunk_headers = 0; + c->http_is_chunked = 0; + c->http_temp = temp; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 1; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = c->buffer; +#endif c->repinfo.c = c; c->callback = callback; c->cb_arg = callback_arg; - evbits = EV_PERSIST | EV_WRITE; - event_set(&c->ev->ev, c->fd, evbits, comm_point_tcp_handle_callback, c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0) + evbits = UB_EV_PERSIST | UB_EV_WRITE; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_http_handle_callback, c); + if(c->ev->ev == NULL) { - log_err("could not basetset tcpout event"); + log_err("could not baseset tcpout event"); +#ifdef HAVE_SSL + SSL_free(c->ssl); +#endif sldns_buffer_free(c->buffer); free(c->ev); free(c); @@ -1798,7 +2771,7 @@ comm_point_create_tcp_out(struct comm_base *base, size_t bufsize, struct comm_point* comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1832,16 +2805,28 @@ comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, c->do_not_close = 1; c->tcp_do_toggle_rw = 0; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = c->buffer; +#endif c->callback = callback; c->cb_arg = callback_arg; - /* libevent stuff */ - evbits = EV_PERSIST | EV_READ; - event_set(&c->ev->ev, c->fd, evbits, comm_point_local_handle_callback, - c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0 || - event_add(&c->ev->ev, c->timeout) != 0 ) - { + /* ub_event stuff */ + evbits = UB_EV_PERSIST | UB_EV_READ; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_local_handle_callback, c); + if(c->ev->ev == NULL) { + log_err("could not baseset localhdl event"); + free(c->ev); + free(c); + return NULL; + } + if (ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("could not add localhdl event"); + ub_event_free(c->ev->ev); free(c->ev); free(c); return NULL; @@ -1851,7 +2836,7 @@ comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, struct comm_point* comm_point_create_raw(struct comm_base* base, int fd, int writing, - comm_point_callback_t* callback, void* callback_arg) + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -1880,18 +2865,30 @@ comm_point_create_raw(struct comm_base* base, int fd, int writing, c->do_not_close = 1; c->tcp_do_toggle_rw = 0; c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = c->buffer; +#endif c->callback = callback; c->cb_arg = callback_arg; - /* libevent stuff */ + /* ub_event stuff */ if(writing) - evbits = EV_PERSIST | EV_WRITE; - else evbits = EV_PERSIST | EV_READ; - event_set(&c->ev->ev, c->fd, evbits, comm_point_raw_handle_callback, - c); - if(event_base_set(base->eb->base, &c->ev->ev) != 0 || - event_add(&c->ev->ev, c->timeout) != 0 ) - { + evbits = UB_EV_PERSIST | UB_EV_WRITE; + else evbits = UB_EV_PERSIST | UB_EV_READ; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_raw_handle_callback, c); + if(c->ev->ev == NULL) { + log_err("could not baseset rawhdl event"); + free(c->ev); + free(c); + return NULL; + } + if (ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("could not add rawhdl event"); + ub_event_free(c->ev->ev); free(c->ev); free(c); return NULL; @@ -1904,12 +2901,18 @@ comm_point_close(struct comm_point* c) { if(!c) return; - if(c->fd != -1) - if(event_del(&c->ev->ev) != 0) { + if(c->fd != -1) { + if(ub_event_del(c->ev->ev) != 0) { log_err("could not event_del on close"); } + } /* close fd after removing from event lists, or epoll.. is messed up */ if(c->fd != -1 && !c->do_not_close) { + if(c->type == comm_tcp || c->type == comm_http) { + /* delete sticky events for the fd, it gets closed */ + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); + ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); + } verbose(VERB_ALGO, "close fd %d", c->fd); #ifndef USE_WINSOCK close(c->fd); @@ -1925,7 +2928,7 @@ comm_point_delete(struct comm_point* c) { if(!c) return; - if(c->type == comm_tcp && c->ssl) { + if((c->type == comm_tcp || c->type == comm_http) && c->ssl) { #ifdef HAVE_SSL SSL_shutdown(c->ssl); SSL_free(c->ssl); @@ -1939,8 +2942,15 @@ comm_point_delete(struct comm_point* c) free(c->tcp_handlers); } free(c->timeout); - if(c->type == comm_tcp || c->type == comm_local) + if(c->type == comm_tcp || c->type == comm_local || c->type == comm_http) { sldns_buffer_free(c->buffer); +#ifdef USE_DNSCRYPT + if(c->dnscrypt && c->dnscrypt_buffer != c->buffer) { + sldns_buffer_free(c->dnscrypt_buffer); + } +#endif + } + ub_event_free(c->ev->ev); free(c->ev); free(c); } @@ -1948,14 +2958,23 @@ 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); +#ifdef USE_DNSCRYPT + 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) comm_point_send_udp_msg_if(repinfo->c, - repinfo->c->buffer, (struct sockaddr*)&repinfo->addr, + buffer, (struct sockaddr*)&repinfo->addr, repinfo->addrlen, repinfo); else - comm_point_send_udp_msg(repinfo->c, repinfo->c->buffer, + comm_point_send_udp_msg(repinfo->c, buffer, (struct sockaddr*)&repinfo->addr, repinfo->addrlen); #ifdef USE_DNSTAP if(repinfo->c->dtenv != NULL && @@ -1970,7 +2989,8 @@ comm_point_send_reply(struct comm_reply *repinfo) dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, &repinfo->addr, repinfo->c->type, repinfo->c->buffer); #endif - comm_point_start_listening(repinfo->c, -1, TCP_QUERY_TIMEOUT); + comm_point_start_listening(repinfo->c, -1, + repinfo->c->tcp_timeout_msec); } } @@ -1990,13 +3010,13 @@ void comm_point_stop_listening(struct comm_point* c) { verbose(VERB_ALGO, "comm point stop listening %d", c->fd); - if(event_del(&c->ev->ev) != 0) { + if(ub_event_del(c->ev->ev) != 0) { log_err("event_del error to stoplisten"); } } void -comm_point_start_listening(struct comm_point* c, int newfd, int sec) +comm_point_start_listening(struct comm_point* c, int newfd, int msec) { verbose(VERB_ALGO, "comm point start listening %d", c->fd==-1?newfd:c->fd); @@ -2004,7 +3024,7 @@ comm_point_start_listening(struct comm_point* c, int newfd, int sec) /* no use to start listening no free slots. */ return; } - if(sec != -1 && sec != 0) { + if(msec != -1 && msec != 0) { if(!c->timeout) { c->timeout = (struct timeval*)malloc(sizeof( struct timeval)); @@ -2013,17 +3033,17 @@ comm_point_start_listening(struct comm_point* c, int newfd, int sec) return; } } - c->ev->ev.ev_events |= EV_TIMEOUT; + ub_event_add_bits(c->ev->ev, UB_EV_TIMEOUT); #ifndef S_SPLINT_S /* splint fails on struct timeval. */ - c->timeout->tv_sec = sec; - c->timeout->tv_usec = 0; + c->timeout->tv_sec = msec/1000; + c->timeout->tv_usec = (msec%1000)*1000; #endif /* S_SPLINT_S */ } - if(c->type == comm_tcp) { - c->ev->ev.ev_events &= ~(EV_READ|EV_WRITE); + if(c->type == comm_tcp || c->type == comm_http) { + ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); if(c->tcp_is_reading) - c->ev->ev.ev_events |= EV_READ; - else c->ev->ev.ev_events |= EV_WRITE; + ub_event_add_bits(c->ev->ev, UB_EV_READ); + else ub_event_add_bits(c->ev->ev, UB_EV_WRITE); } if(newfd != -1) { if(c->fd != -1) { @@ -2034,9 +3054,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int sec) #endif } c->fd = newfd; - c->ev->ev.ev_fd = c->fd; + ub_event_set_fd(c->ev->ev, c->fd); } - if(event_add(&c->ev->ev, sec==0?NULL:c->timeout) != 0) { + if(ub_event_add(c->ev->ev, msec==0?NULL:c->timeout) != 0) { log_err("event_add failed. in cpsl."); } } @@ -2044,13 +3064,13 @@ comm_point_start_listening(struct comm_point* c, int newfd, int sec) void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) { verbose(VERB_ALGO, "comm point listen_for_rw %d %d", c->fd, wr); - if(event_del(&c->ev->ev) != 0) { + if(ub_event_del(c->ev->ev) != 0) { log_err("event_del error to cplf"); } - c->ev->ev.ev_events &= ~(EV_READ|EV_WRITE); - if(rd) c->ev->ev.ev_events |= EV_READ; - if(wr) c->ev->ev.ev_events |= EV_WRITE; - if(event_add(&c->ev->ev, c->timeout) != 0) { + ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); + if(rd) ub_event_add_bits(c->ev->ev, UB_EV_READ); + if(wr) ub_event_add_bits(c->ev->ev, UB_EV_WRITE); + if(ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("event_add failed. in cplf."); } } @@ -2063,8 +3083,15 @@ size_t comm_point_get_mem(struct comm_point* c) s = sizeof(*c) + sizeof(*c->ev); if(c->timeout) s += sizeof(*c->timeout); - if(c->type == comm_tcp || c->type == comm_local) + if(c->type == comm_tcp || c->type == comm_local) { s += sizeof(*c->buffer) + sldns_buffer_capacity(c->buffer); +#ifdef USE_DNSCRYPT + s += sizeof(*c->dnscrypt_buffer); + if(c->buffer != c->dnscrypt_buffer) { + s += sldns_buffer_capacity(c->dnscrypt_buffer); + } +#endif + } if(c->type == comm_tcp_accept) { int i; for(i=0; imax_tcp_count; i++) @@ -2076,29 +3103,24 @@ size_t comm_point_get_mem(struct comm_point* c) struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) { - struct comm_timer *tm = (struct comm_timer*)calloc(1, - sizeof(struct comm_timer)); - if(!tm) - return NULL; - tm->ev_timer = (struct internal_timer*)calloc(1, + struct internal_timer *tm = (struct internal_timer*)calloc(1, sizeof(struct internal_timer)); - if(!tm->ev_timer) { + if(!tm) { log_err("malloc failed"); - free(tm); return NULL; } - tm->ev_timer->base = base; - tm->callback = cb; - tm->cb_arg = cb_arg; - event_set(&tm->ev_timer->ev, -1, EV_TIMEOUT, - comm_timer_callback, tm); - if(event_base_set(base->eb->base, &tm->ev_timer->ev) != 0) { + tm->super.ev_timer = tm; + tm->base = base; + tm->super.callback = cb; + tm->super.cb_arg = cb_arg; + tm->ev = ub_event_new(base->eb->base, -1, UB_EV_TIMEOUT, + comm_timer_callback, &tm->super); + if(tm->ev == NULL) { log_err("timer_create: event_base_set failed."); - free(tm->ev_timer); free(tm); return NULL; } - return tm; + return &tm->super; } void @@ -2106,7 +3128,7 @@ comm_timer_disable(struct comm_timer* timer) { if(!timer) return; - evtimer_del(&timer->ev_timer->ev); + ub_timer_del(timer->ev_timer->ev); timer->ev_timer->enabled = 0; } @@ -2116,12 +3138,8 @@ comm_timer_set(struct comm_timer* timer, struct timeval* tv) log_assert(tv); if(timer->ev_timer->enabled) comm_timer_disable(timer); - event_set(&timer->ev_timer->ev, -1, EV_TIMEOUT, - comm_timer_callback, timer); - if(event_base_set(timer->ev_timer->base->eb->base, - &timer->ev_timer->ev) != 0) - log_err("comm_timer_set: set_base failed."); - if(evtimer_add(&timer->ev_timer->ev, tv) != 0) + if(ub_timer_add(timer->ev_timer->ev, timer->ev_timer->base->eb->base, + comm_timer_callback, timer, tv) != 0) log_err("comm_timer_set: evtimer_add failed."); timer->ev_timer->enabled = 1; } @@ -2132,17 +3150,20 @@ comm_timer_delete(struct comm_timer* timer) if(!timer) return; comm_timer_disable(timer); + /* Free the sub struct timer->ev_timer derived from the super struct timer. + * i.e. assert(timer == timer->ev_timer) + */ + ub_event_free(timer->ev_timer->ev); free(timer->ev_timer); - free(timer); } void comm_timer_callback(int ATTR_UNUSED(fd), short event, void* arg) { struct comm_timer* tm = (struct comm_timer*)arg; - if(!(event&EV_TIMEOUT)) + if(!(event&UB_EV_TIMEOUT)) return; - comm_base_now(tm->ev_timer->base); + ub_comm_base_now(tm->ev_timer->base); tm->ev_timer->enabled = 0; fptr_ok(fptr_whitelist_comm_timer(tm->callback)); (*tm->callback)(tm->cb_arg); @@ -2155,9 +3176,9 @@ comm_timer_is_set(struct comm_timer* timer) } size_t -comm_timer_get_mem(struct comm_timer* timer) +comm_timer_get_mem(struct comm_timer* ATTR_UNUSED(timer)) { - return sizeof(*timer) + sizeof(struct internal_timer); + return sizeof(struct internal_timer); } struct comm_signal* @@ -2181,9 +3202,9 @@ void comm_signal_callback(int sig, short event, void* arg) { struct comm_signal* comsig = (struct comm_signal*)arg; - if(!(event & EV_SIGNAL)) + if(!(event & UB_EV_SIGNAL)) return; - comm_base_now(comsig->base); + ub_comm_base_now(comsig->base); fptr_ok(fptr_whitelist_comm_signal(comsig->callback)); (*comsig->callback)(sig, comsig->cb_arg); } @@ -2199,14 +3220,16 @@ comm_signal_bind(struct comm_signal* comsig, int sig) } log_assert(comsig); /* add signal event */ - signal_set(&entry->ev, sig, comm_signal_callback, comsig); - if(event_base_set(comsig->base->eb->base, &entry->ev) != 0) { - log_err("Could not set signal base"); + entry->ev = ub_signal_new(comsig->base->eb->base, sig, + comm_signal_callback, comsig); + if(entry->ev == NULL) { + log_err("Could not create signal event"); free(entry); return 0; } - if(signal_add(&entry->ev, NULL) != 0) { + if(ub_signal_add(entry->ev, NULL) != 0) { log_err("Could not add signal handler"); + ub_event_free(entry->ev); free(entry); return 0; } @@ -2225,7 +3248,8 @@ comm_signal_delete(struct comm_signal* comsig) p=comsig->ev_signal; while(p) { np = p->next; - signal_del(&p->ev); + ub_signal_del(p->ev); + ub_event_free(p->ev); free(p); p = np; } diff --git a/external/unbound/util/netevent.h b/external/unbound/util/netevent.h index 4b87cdb..6819f57 100644 --- a/external/unbound/util/netevent.h +++ b/external/unbound/util/netevent.h @@ -60,18 +60,20 @@ #ifndef NET_EVENT_H #define NET_EVENT_H +#include "dnscrypt/dnscrypt.h" + struct sldns_buffer; struct comm_point; struct comm_reply; -struct event_base; +struct ub_event_base; /* internal event notification data storage structure. */ struct internal_event; struct internal_base; -struct internal_timer; +struct internal_timer; /* A sub struct of the comm_timer super struct */ /** callback from communication point function type */ -typedef int comm_point_callback_t(struct comm_point*, void*, int, +typedef int comm_point_callback_type(struct comm_point*, void*, int, struct comm_reply*); /** to pass no_error to callback function */ @@ -82,6 +84,8 @@ typedef int comm_point_callback_t(struct comm_point*, void*, int, #define NETEVENT_TIMEOUT -2 /** to pass fallback from capsforID to callback function; 0x20 failed */ #define NETEVENT_CAPSFAIL -3 +/** to pass done transfer to callback function; http file is complete */ +#define NETEVENT_DONE -4 /** timeout to slow accept calls when not possible, in msec. */ #define NETEVENT_SLOW_ACCEPT_TIME 2000 @@ -114,6 +118,13 @@ struct comm_reply { socklen_t addrlen; /** return type 0 (none), 4(IP4), 6(IP6) */ int srctype; + /* DnsCrypt context */ +#ifdef USE_DNSCRYPT + uint8_t client_nonce[crypto_box_HALF_NONCEBYTES]; + uint8_t nmkey[crypto_box_BEFORENMBYTES]; + const dnsccert *dnsc_cert; + int is_dnscrypted; +#endif /** the return source interface data */ union { #ifdef IPV6_PKTINFO @@ -124,9 +135,11 @@ struct comm_reply { #elif defined(IP_RECVDSTADDR) struct in_addr v4addr; #endif - } + } /** variable with return source data */ pktinfo; + /** max udp size for udp packets */ + size_t max_udp_size; }; /** @@ -190,6 +203,19 @@ struct comm_point { comm_ssl_shake_hs_write } ssl_shake_state; + /* -------- HTTP ------- */ + /** Currently reading in http headers */ + int http_in_headers; + /** Currently reading in chunk headers, 0=not, 1=firstline, 2=unused + * (more lines), 3=trailer headers after chunk */ + int http_in_chunk_headers; + /** chunked transfer */ + int http_is_chunked; + /** http temp buffer (shared buffer for temporary work) */ + struct sldns_buffer* http_temp; + /** http stored content in buffer */ + size_t http_stored; + /* -------- dnstap ------- */ /** the dnstap environment */ struct dt_env* dtenv; @@ -202,6 +228,8 @@ struct comm_point { comm_tcp_accept, /** TCP handler socket - handle byteperbyte readwrite. */ comm_tcp, + /** HTTP handler socket */ + comm_http, /** AF_UNIX socket - for internal commands. */ comm_local, /** raw - not DNS format - for pipe readers and writers */ @@ -225,9 +253,23 @@ struct comm_point { So that when that is done the callback is called. */ int tcp_do_toggle_rw; + /** timeout in msec for TCP wait times for this connection */ + int tcp_timeout_msec; + /** if set, checks for pending error from nonblocking connect() call.*/ int tcp_check_nb_connect; +#ifdef USE_MSG_FASTOPEN + /** used to track if the sendto() call should be done when using TFO. */ + int tcp_do_fastopen; +#endif + +#ifdef USE_DNSCRYPT + /** Is this a dnscrypt channel */ + int dnscrypt; + /** encrypted buffer pointer. Either to perthread, or own buffer or NULL */ + struct sldns_buffer* dnscrypt_buffer; +#endif /** number of queries outstanding on this socket, used by * outside network for udp ports */ int inuse; @@ -256,7 +298,7 @@ struct comm_point { For UDP this is done without changing the commpoint. In TCP it sets write state. */ - comm_point_callback_t* callback; + comm_point_callback_type* callback; /** argument to pass to callback. */ void *cb_arg; }; @@ -265,7 +307,7 @@ struct comm_point { * Structure only for making timeout events. */ struct comm_timer { - /** the internal event stuff */ + /** the internal event stuff (derived) */ struct internal_timer* ev_timer; /** callback function, takes user arg only */ @@ -301,12 +343,12 @@ struct comm_signal { struct comm_base* comm_base_create(int sigs); /** - * Create comm base that uses the given event_base (underlying event - * mechanism pointer). - * @param base: underlying lib event base. + * Create comm base that uses the given ub_event_base (underlying pluggable + * event mechanism pointer). + * @param base: underlying pluggable event base. * @return: the new comm base. NULL on error. */ -struct comm_base* comm_base_create_event(struct event_base* base); +struct comm_base* comm_base_create_event(struct ub_event_base* base); /** * Delete comm base structure but not the underlying lib event base. @@ -357,9 +399,9 @@ void comm_base_set_slow_accept_handlers(struct comm_base* b, /** * Access internal data structure (for util/tube.c on windows) * @param b: comm base - * @return event_base. Could be libevent, or internal event handler. + * @return ub_event_base. */ -struct event_base* comm_base_internal(struct comm_base* b); +struct ub_event_base* comm_base_internal(struct comm_base* b); /** * Create an UDP comm point. Calls malloc. @@ -374,7 +416,7 @@ struct event_base* comm_base_internal(struct comm_base* b); */ struct comm_point* comm_point_create_udp(struct comm_base* base, int fd, struct sldns_buffer* buffer, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /** * Create an UDP with ancillary data comm point. Calls malloc. @@ -390,7 +432,7 @@ struct comm_point* comm_point_create_udp(struct comm_base* base, */ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, int fd, struct sldns_buffer* buffer, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /** * Create a TCP listener comm point. Calls malloc. @@ -411,7 +453,7 @@ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, */ struct comm_point* comm_point_create_tcp(struct comm_base* base, int fd, int num, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /** * Create an outgoing TCP commpoint. No file descriptor is opened, left at -1. @@ -422,7 +464,21 @@ struct comm_point* comm_point_create_tcp(struct comm_base* base, * @return: the commpoint or NULL on error. */ struct comm_point* comm_point_create_tcp_out(struct comm_base* base, - size_t bufsize, comm_point_callback_t* callback, void* callback_arg); + size_t bufsize, comm_point_callback_type* callback, void* callback_arg); + +/** + * Create an outgoing HTTP commpoint. No file descriptor is opened, left at -1. + * @param base: in which base to alloc the commpoint. + * @param bufsize: size of buffer to create for handlers. + * @param callback: callback function pointer for the handler. + * @param callback_arg: will be passed to your callback function. + * @param temp: sldns buffer, shared between other http_out commpoints, for + * temporary data when performing callbacks. + * @return: the commpoint or NULL on error. + */ +struct comm_point* comm_point_create_http_out(struct comm_base* base, + size_t bufsize, comm_point_callback_type* callback, + void* callback_arg, struct sldns_buffer* temp); /** * Create commpoint to listen to a local domain file descriptor. @@ -435,7 +491,7 @@ struct comm_point* comm_point_create_tcp_out(struct comm_base* base, */ struct comm_point* comm_point_create_local(struct comm_base* base, int fd, size_t bufsize, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /** * Create commpoint to listen to a local domain pipe descriptor. @@ -448,7 +504,7 @@ struct comm_point* comm_point_create_local(struct comm_base* base, */ struct comm_point* comm_point_create_raw(struct comm_base* base, int fd, int writing, - comm_point_callback_t* callback, void* callback_arg); + comm_point_callback_type* callback, void* callback_arg); /** * Close a comm point fd. @@ -496,9 +552,10 @@ void comm_point_stop_listening(struct comm_point* c); * Start listening again for input on the comm point. * @param c: commpoint to enable again. * @param newfd: new fd, or -1 to leave fd be. - * @param sec: timeout in seconds, or -1 for no (change to the) timeout. + * @param msec: timeout in milliseconds, or -1 for no (change to the) timeout. + * So seconds*1000. */ -void comm_point_start_listening(struct comm_point* c, int newfd, int sec); +void comm_point_start_listening(struct comm_point* c, int newfd, int msec); /** * Stop listening and start listening again for reading or writing. @@ -639,6 +696,16 @@ void comm_point_tcp_accept_callback(int fd, short event, void* arg); */ void comm_point_tcp_handle_callback(int fd, short event, void* arg); +/** + * This routine is published for checks and tests, and is only used internally. + * handle libevent callback for tcp data comm point + * @param fd: file descriptor. + * @param event: event bits from libevent: + * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. + * @param arg: the comm_point structure. + */ +void comm_point_http_handle_callback(int fd, short event, void* arg); + /** * This routine is published for checks and tests, and is only used internally. * handle libevent callback for timer comm. diff --git a/external/unbound/util/rbtree.c b/external/unbound/util/rbtree.c index ee5446f..f031c9a 100644 --- a/external/unbound/util/rbtree.c +++ b/external/unbound/util/rbtree.c @@ -50,7 +50,7 @@ #define RED 1 /** the NULL node, global alloc */ -rbnode_t rbtree_null_node = { +rbnode_type rbtree_null_node = { RBTREE_NULL, /* Parent. */ RBTREE_NULL, /* Left. */ RBTREE_NULL, /* Right. */ @@ -59,13 +59,14 @@ rbnode_t rbtree_null_node = { }; /** rotate subtree left (to preserve redblack property) */ -static void rbtree_rotate_left(rbtree_t *rbtree, rbnode_t *node); +static void rbtree_rotate_left(rbtree_type *rbtree, rbnode_type *node); /** rotate subtree right (to preserve redblack property) */ -static void rbtree_rotate_right(rbtree_t *rbtree, rbnode_t *node); +static void rbtree_rotate_right(rbtree_type *rbtree, rbnode_type *node); /** Fixup node colours when insert happened */ -static void rbtree_insert_fixup(rbtree_t *rbtree, rbnode_t *node); +static void rbtree_insert_fixup(rbtree_type *rbtree, rbnode_type *node); /** Fixup node colours when delete happened */ -static void rbtree_delete_fixup(rbtree_t* rbtree, rbnode_t* child, rbnode_t* child_parent); +static void rbtree_delete_fixup(rbtree_type* rbtree, rbnode_type* child, + rbnode_type* child_parent); /* * Creates a new red black tree, initializes and returns a pointer to it. @@ -73,13 +74,13 @@ static void rbtree_delete_fixup(rbtree_t* rbtree, rbnode_t* child, rbnode_t* chi * Return NULL on failure. * */ -rbtree_t * +rbtree_type * rbtree_create (int (*cmpf)(const void *, const void *)) { - rbtree_t *rbtree; + rbtree_type *rbtree; /* Allocate memory for it */ - rbtree = (rbtree_t *) malloc(sizeof(rbtree_t)); + rbtree = (rbtree_type *) malloc(sizeof(rbtree_type)); if (!rbtree) { return NULL; } @@ -91,7 +92,7 @@ rbtree_create (int (*cmpf)(const void *, const void *)) } void -rbtree_init(rbtree_t *rbtree, int (*cmpf)(const void *, const void *)) +rbtree_init(rbtree_type *rbtree, int (*cmpf)(const void *, const void *)) { /* Initialize it */ rbtree->root = RBTREE_NULL; @@ -104,9 +105,9 @@ rbtree_init(rbtree_t *rbtree, int (*cmpf)(const void *, const void *)) * */ static void -rbtree_rotate_left(rbtree_t *rbtree, rbnode_t *node) +rbtree_rotate_left(rbtree_type *rbtree, rbnode_type *node) { - rbnode_t *right = node->right; + rbnode_type *right = node->right; node->right = right->left; if (right->left != RBTREE_NULL) right->left->parent = node; @@ -131,9 +132,9 @@ rbtree_rotate_left(rbtree_t *rbtree, rbnode_t *node) * */ static void -rbtree_rotate_right(rbtree_t *rbtree, rbnode_t *node) +rbtree_rotate_right(rbtree_type *rbtree, rbnode_type *node) { - rbnode_t *left = node->left; + rbnode_type *left = node->left; node->left = left->right; if (left->right != RBTREE_NULL) left->right->parent = node; @@ -154,9 +155,9 @@ rbtree_rotate_right(rbtree_t *rbtree, rbnode_t *node) } static void -rbtree_insert_fixup(rbtree_t *rbtree, rbnode_t *node) +rbtree_insert_fixup(rbtree_type *rbtree, rbnode_type *node) { - rbnode_t *uncle; + rbnode_type *uncle; /* While not at the root and need fixing... */ while (node != rbtree->root && node->parent->color == RED) { @@ -223,15 +224,15 @@ rbtree_insert_fixup(rbtree_t *rbtree, rbnode_t *node) * Returns NULL on failure or the pointer to the newly added node * otherwise. */ -rbnode_t * -rbtree_insert (rbtree_t *rbtree, rbnode_t *data) +rbnode_type * +rbtree_insert (rbtree_type *rbtree, rbnode_type *data) { /* XXX Not necessary, but keeps compiler quiet... */ int r = 0; /* We start at the root of the tree */ - rbnode_t *node = rbtree->root; - rbnode_t *parent = RBTREE_NULL; + rbnode_type *node = rbtree->root; + rbnode_type *parent = RBTREE_NULL; fptr_ok(fptr_whitelist_rbtree_cmp(rbtree->cmp)); /* Lets find the new parent... */ @@ -276,10 +277,10 @@ rbtree_insert (rbtree_t *rbtree, rbnode_t *data) * Searches the red black tree, returns the data if key is found or NULL otherwise. * */ -rbnode_t * -rbtree_search (rbtree_t *rbtree, const void *key) +rbnode_type * +rbtree_search (rbtree_type *rbtree, const void *key) { - rbnode_t *node; + rbnode_type *node; if (rbtree_find_less_equal(rbtree, key, &node)) { return node; @@ -295,13 +296,14 @@ static void swap_int8(uint8_t* x, uint8_t* y) } /** helpers for delete: swap node pointers */ -static void swap_np(rbnode_t** x, rbnode_t** y) +static void swap_np(rbnode_type** x, rbnode_type** y) { - rbnode_t* t = *x; *x = *y; *y = t; + rbnode_type* t = *x; *x = *y; *y = t; } /** Update parent pointers of child trees of 'parent' */ -static void change_parent_ptr(rbtree_t* rbtree, rbnode_t* parent, rbnode_t* old, rbnode_t* new) +static void change_parent_ptr(rbtree_type* rbtree, rbnode_type* parent, + rbnode_type* old, rbnode_type* new) { if(parent == RBTREE_NULL) { @@ -315,18 +317,19 @@ static void change_parent_ptr(rbtree_t* rbtree, rbnode_t* parent, rbnode_t* old, if(parent->right == old) parent->right = new; } /** Update parent pointer of a node 'child' */ -static void change_child_ptr(rbnode_t* child, rbnode_t* old, rbnode_t* new) +static void change_child_ptr(rbnode_type* child, rbnode_type* old, + rbnode_type* new) { if(child == RBTREE_NULL) return; log_assert(child->parent == old || child->parent == new); if(child->parent == old) child->parent = new; } -rbnode_t* -rbtree_delete(rbtree_t *rbtree, const void *key) +rbnode_type* +rbtree_delete(rbtree_type *rbtree, const void *key) { - rbnode_t *to_delete; - rbnode_t *child; + rbnode_type *to_delete; + rbnode_type *child; if((to_delete = rbtree_search(rbtree, key)) == 0) return 0; rbtree->count--; @@ -334,11 +337,11 @@ rbtree_delete(rbtree_t *rbtree, const void *key) if(to_delete->left != RBTREE_NULL && to_delete->right != RBTREE_NULL) { /* swap with smallest from right subtree (or largest from left) */ - rbnode_t *smright = to_delete->right; + rbnode_type *smright = to_delete->right; while(smright->left != RBTREE_NULL) smright = smright->left; /* swap the smright and to_delete elements in the tree, - * but the rbnode_t is first part of user data struct + * but the rbnode_type is first part of user data struct * so cannot just swap the keys and data pointers. Instead * readjust the pointers left,right,parent */ @@ -400,9 +403,10 @@ rbtree_delete(rbtree_t *rbtree, const void *key) return to_delete; } -static void rbtree_delete_fixup(rbtree_t* rbtree, rbnode_t* child, rbnode_t* child_parent) +static void rbtree_delete_fixup(rbtree_type* rbtree, rbnode_type* child, + rbnode_type* child_parent) { - rbnode_t* sibling; + rbnode_type* sibling; int go_up = 1; /* determine sibling to the node that is one-black short */ @@ -504,10 +508,11 @@ static void rbtree_delete_fixup(rbtree_t* rbtree, rbnode_t* child, rbnode_t* chi } int -rbtree_find_less_equal(rbtree_t *rbtree, const void *key, rbnode_t **result) +rbtree_find_less_equal(rbtree_type *rbtree, const void *key, + rbnode_type **result) { int r; - rbnode_t *node; + rbnode_type *node; log_assert(result); @@ -540,19 +545,19 @@ rbtree_find_less_equal(rbtree_t *rbtree, const void *key, rbnode_t **result) * Finds the first element in the red black tree * */ -rbnode_t * -rbtree_first (rbtree_t *rbtree) +rbnode_type * +rbtree_first (rbtree_type *rbtree) { - rbnode_t *node; + rbnode_type *node; for (node = rbtree->root; node->left != RBTREE_NULL; node = node->left); return node; } -rbnode_t * -rbtree_last (rbtree_t *rbtree) +rbnode_type * +rbtree_last (rbtree_type *rbtree) { - rbnode_t *node; + rbnode_type *node; for (node = rbtree->root; node->right != RBTREE_NULL; node = node->right); return node; @@ -562,10 +567,10 @@ rbtree_last (rbtree_t *rbtree) * Returns the next node... * */ -rbnode_t * -rbtree_next (rbnode_t *node) +rbnode_type * +rbtree_next (rbnode_type *node) { - rbnode_t *parent; + rbnode_type *parent; if (node->right != RBTREE_NULL) { /* One right, then keep on going left... */ @@ -581,10 +586,10 @@ rbtree_next (rbnode_t *node) return node; } -rbnode_t * -rbtree_previous(rbnode_t *node) +rbnode_type * +rbtree_previous(rbnode_type *node) { - rbnode_t *parent; + rbnode_type *parent; if (node->left != RBTREE_NULL) { /* One left, then keep on going right... */ @@ -602,7 +607,7 @@ rbtree_previous(rbnode_t *node) /** recursive descent traverse */ static void -traverse_post(void (*func)(rbnode_t*, void*), void* arg, rbnode_t* node) +traverse_post(void (*func)(rbnode_type*, void*), void* arg, rbnode_type* node) { if(!node || node == RBTREE_NULL) return; @@ -614,7 +619,8 @@ traverse_post(void (*func)(rbnode_t*, void*), void* arg, rbnode_t* node) } void -traverse_postorder(rbtree_t* tree, void (*func)(rbnode_t*, void*), void* arg) +traverse_postorder(rbtree_type* tree, void (*func)(rbnode_type*, void*), + void* arg) { traverse_post(func, arg, tree->root); } diff --git a/external/unbound/util/rbtree.h b/external/unbound/util/rbtree.h index 50c84bb..dfcf09a 100644 --- a/external/unbound/util/rbtree.h +++ b/external/unbound/util/rbtree.h @@ -45,40 +45,40 @@ /** * This structure must be the first member of the data structure in - * the rbtree. This allows easy casting between an rbnode_t and the + * the rbtree. This allows easy casting between an rbnode_type and the * user data (poor man's inheritance). */ -typedef struct rbnode_t rbnode_t; +typedef struct rbnode_type rbnode_type; /** - * The rbnode_t struct definition. + * The rbnode_type struct definition. */ -struct rbnode_t { +struct rbnode_type { /** parent in rbtree, RBTREE_NULL for root */ - rbnode_t *parent; + rbnode_type *parent; /** left node (smaller items) */ - rbnode_t *left; + rbnode_type *left; /** right node (larger items) */ - rbnode_t *right; + rbnode_type *right; /** pointer to sorting key */ - const void *key; + const void *key; /** colour of this node */ - uint8_t color; + uint8_t color; }; /** The nullpointer, points to empty node */ #define RBTREE_NULL &rbtree_null_node /** the global empty node */ -extern rbnode_t rbtree_null_node; +extern rbnode_type rbtree_null_node; /** An entire red black tree */ -typedef struct rbtree_t rbtree_t; +typedef struct rbtree_type rbtree_type; /** definition for tree struct */ -struct rbtree_t { +struct rbtree_type { /** The root of the red-black tree */ - rbnode_t *root; + rbnode_type *root; /** The number of the nodes in the tree */ - size_t count; + size_t count; /** * Key compare function. <0,0,>0 like strcmp. @@ -92,14 +92,14 @@ struct rbtree_t { * @param cmpf: compare function (like strcmp) takes pointers to two keys. * @return: new tree, empty. */ -rbtree_t *rbtree_create(int (*cmpf)(const void *, const void *)); +rbtree_type *rbtree_create(int (*cmpf)(const void *, const void *)); /** * Init a new tree (malloced by caller) with given key compare function. * @param rbtree: uninitialised memory for new tree, returned empty. * @param cmpf: compare function (like strcmp) takes pointers to two keys. */ -void rbtree_init(rbtree_t *rbtree, int (*cmpf)(const void *, const void *)); +void rbtree_init(rbtree_type *rbtree, int (*cmpf)(const void *, const void *)); /** * Insert data into the tree. @@ -107,7 +107,7 @@ void rbtree_init(rbtree_t *rbtree, int (*cmpf)(const void *, const void *)); * @param data: element to insert. * @return: data ptr or NULL if key already present. */ -rbnode_t *rbtree_insert(rbtree_t *rbtree, rbnode_t *data); +rbnode_type *rbtree_insert(rbtree_type *rbtree, rbnode_type *data); /** * Delete element from tree. @@ -116,7 +116,7 @@ rbnode_t *rbtree_insert(rbtree_t *rbtree, rbnode_t *data); * @return: node that is now unlinked from the tree. User to delete it. * returns 0 if node not present */ -rbnode_t *rbtree_delete(rbtree_t *rbtree, const void *key); +rbnode_type *rbtree_delete(rbtree_type *rbtree, const void *key); /** * Find key in tree. Returns NULL if not found. @@ -124,7 +124,7 @@ rbnode_t *rbtree_delete(rbtree_t *rbtree, const void *key); * @param key: key that must match. * @return: node that fits or NULL. */ -rbnode_t *rbtree_search(rbtree_t *rbtree, const void *key); +rbnode_type *rbtree_search(rbtree_type *rbtree, const void *key); /** * Find, but match does not have to be exact. @@ -135,45 +135,45 @@ rbnode_t *rbtree_search(rbtree_t *rbtree, const void *key); * @return: true if exact match in result. Else result points to <= element, * or NULL if key is smaller than the smallest key. */ -int rbtree_find_less_equal(rbtree_t *rbtree, const void *key, - rbnode_t **result); +int rbtree_find_less_equal(rbtree_type *rbtree, const void *key, + rbnode_type **result); /** * Returns first (smallest) node in the tree * @param rbtree: tree * @return: smallest element or NULL if tree empty. */ -rbnode_t *rbtree_first(rbtree_t *rbtree); +rbnode_type *rbtree_first(rbtree_type *rbtree); /** * Returns last (largest) node in the tree * @param rbtree: tree * @return: largest element or NULL if tree empty. */ -rbnode_t *rbtree_last(rbtree_t *rbtree); +rbnode_type *rbtree_last(rbtree_type *rbtree); /** * Returns next larger node in the tree * @param rbtree: tree * @return: next larger element or NULL if no larger in tree. */ -rbnode_t *rbtree_next(rbnode_t *rbtree); +rbnode_type *rbtree_next(rbnode_type *rbtree); /** * Returns previous smaller node in the tree * @param rbtree: tree * @return: previous smaller element or NULL if no previous in tree. */ -rbnode_t *rbtree_previous(rbnode_t *rbtree); +rbnode_type *rbtree_previous(rbnode_type *rbtree); /** - * Call with node=variable of struct* with rbnode_t as first element. + * Call with node=variable of struct* with rbnode_type as first element. * with type is the type of a pointer to that struct. */ #define RBTREE_FOR(node, type, rbtree) \ for(node=(type)rbtree_first(rbtree); \ - (rbnode_t*)node != RBTREE_NULL; \ - node = (type)rbtree_next((rbnode_t*)node)) + (rbnode_type*)node != RBTREE_NULL; \ + node = (type)rbtree_next((rbnode_type*)node)) /** * Call function for all elements in the redblack tree, such that @@ -186,7 +186,7 @@ rbnode_t *rbtree_previous(rbnode_t *rbtree); * The function must not alter the rbtree. * @param arg: user argument. */ -void traverse_postorder(rbtree_t* tree, void (*func)(rbnode_t*, void*), +void traverse_postorder(rbtree_type* tree, void (*func)(rbnode_type*, void*), void* arg); #endif /* UTIL_RBTREE_H_ */ diff --git a/external/unbound/util/shm_side/shm_main.c b/external/unbound/util/shm_side/shm_main.c new file mode 100644 index 0000000..a783c09 --- /dev/null +++ b/external/unbound/util/shm_side/shm_main.c @@ -0,0 +1,294 @@ +/* + * util/shm_side/shm_main.c - SHM for statistics transport + * + * Copyright (c) 2017, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions for the SHM implementation. + */ + +#include "config.h" +#include +#include +#ifdef HAVE_SYS_IPC_H +#include +#endif +#ifdef HAVE_SYS_SHM_H +#include +#endif +#include +#include +#include "shm_main.h" +#include "daemon/daemon.h" +#include "daemon/worker.h" +#include "daemon/stats.h" +#include "services/mesh.h" +#include "services/cache/rrset.h" +#include "services/cache/infra.h" +#include "validator/validator.h" +#include "util/config_file.h" +#include "util/fptr_wlist.h" +#include "util/log.h" + +#ifdef HAVE_SHMGET +/** subtract timers and the values do not overflow or become negative */ +static void +stat_timeval_subtract(long long *d_sec, long long *d_usec, const struct timeval* end, + const struct timeval* start) +{ +#ifndef S_SPLINT_S + time_t end_usec = end->tv_usec; + *d_sec = end->tv_sec - start->tv_sec; + if(end_usec < start->tv_usec) { + end_usec += 1000000; + (*d_sec)--; + } + *d_usec = end_usec - start->tv_usec; +#endif +} +#endif /* HAVE_SHMGET */ + +int shm_main_init(struct daemon* daemon) +{ +#ifdef HAVE_SHMGET + struct ub_shm_stat_info *shm_stat; + size_t shm_size; + + /* sanitize */ + if(!daemon) + return 0; + if(!daemon->cfg->shm_enable) + return 1; + if(daemon->cfg->stat_interval == 0) + log_warn("shm-enable is yes but statistics-interval is 0"); + + /* Statistics to maintain the number of thread + total */ + shm_size = (sizeof(struct ub_stats_info) * (daemon->num + 1)); + + /* Allocation of needed memory */ + daemon->shm_info = (struct shm_main_info*)calloc(1, shm_size); + + /* Sanitize */ + if(!daemon->shm_info) { + log_err("shm fail: malloc failure"); + return 0; + } + + daemon->shm_info->key = daemon->cfg->shm_key; + + /* Check for previous create SHM */ + daemon->shm_info->id_ctl = shmget(daemon->shm_info->key, sizeof(int), SHM_R); + daemon->shm_info->id_arr = shmget(daemon->shm_info->key + 1, sizeof(int), SHM_R); + + /* Destroy previous SHM */ + if (daemon->shm_info->id_ctl >= 0) + shmctl(daemon->shm_info->id_ctl, IPC_RMID, NULL); + + /* Destroy previous SHM */ + if (daemon->shm_info->id_arr >= 0) + shmctl(daemon->shm_info->id_arr, IPC_RMID, NULL); + + /* SHM: Create the segment */ + daemon->shm_info->id_ctl = shmget(daemon->shm_info->key, sizeof(struct ub_shm_stat_info), IPC_CREAT | 0666); + + if (daemon->shm_info->id_ctl < 0) + { + log_err("SHM failed(id_ctl) cannot shmget(key %d) %s", + daemon->shm_info->key, strerror(errno)); + + /* Just release memory unused */ + free(daemon->shm_info); + + return 0; + } + + daemon->shm_info->id_arr = shmget(daemon->shm_info->key + 1, shm_size, IPC_CREAT | 0666); + + if (daemon->shm_info->id_arr < 0) + { + log_err("SHM failed(id_arr) cannot shmget(key %d + 1) %s", + daemon->shm_info->key, strerror(errno)); + + /* Just release memory unused */ + free(daemon->shm_info); + + return 0; + } + + /* SHM: attach the segment */ + daemon->shm_info->ptr_ctl = (struct ub_shm_stat_info*) + shmat(daemon->shm_info->id_ctl, NULL, 0); + if(daemon->shm_info->ptr_ctl == (void *) -1) { + log_err("SHM failed(ctl) cannot shmat(%d) %s", + daemon->shm_info->id_ctl, strerror(errno)); + + /* Just release memory unused */ + free(daemon->shm_info); + + return 0; + } + + daemon->shm_info->ptr_arr = (struct ub_stats_info*) + shmat(daemon->shm_info->id_arr, NULL, 0); + + if (daemon->shm_info->ptr_arr == (void *) -1) + { + log_err("SHM failed(arr) cannot shmat(%d) %s", + daemon->shm_info->id_arr, strerror(errno)); + + /* Just release memory unused */ + free(daemon->shm_info); + + return 0; + } + + /* Zero fill SHM to stand clean while is not filled by other events */ + memset(daemon->shm_info->ptr_ctl, 0, sizeof(struct ub_shm_stat_info)); + memset(daemon->shm_info->ptr_arr, 0, shm_size); + + shm_stat = daemon->shm_info->ptr_ctl; + shm_stat->num_threads = daemon->num; + +#else + (void)daemon; +#endif /* HAVE_SHMGET */ + return 1; +} + +void shm_main_shutdown(struct daemon* daemon) +{ +#ifdef HAVE_SHMGET + /* web are OK, just disabled */ + if(!daemon->cfg->shm_enable) + return; + + verbose(VERB_DETAIL, "SHM shutdown - KEY [%d] - ID CTL [%d] ARR [%d] - PTR CTL [%p] ARR [%p]", + daemon->shm_info->key, daemon->shm_info->id_ctl, daemon->shm_info->id_arr, daemon->shm_info->ptr_ctl, daemon->shm_info->ptr_arr); + + /* Destroy previous SHM */ + if (daemon->shm_info->id_ctl >= 0) + shmctl(daemon->shm_info->id_ctl, IPC_RMID, NULL); + + if (daemon->shm_info->id_arr >= 0) + shmctl(daemon->shm_info->id_arr, IPC_RMID, NULL); + + if (daemon->shm_info->ptr_ctl) + shmdt(daemon->shm_info->ptr_ctl); + + if (daemon->shm_info->ptr_arr) + shmdt(daemon->shm_info->ptr_arr); + +#else + (void)daemon; +#endif /* HAVE_SHMGET */ +} + +void shm_main_run(struct worker *worker) +{ +#ifdef HAVE_SHMGET + struct ub_shm_stat_info *shm_stat; + struct ub_stats_info *stat_total; + struct ub_stats_info *stat_info; + int offset; + + verbose(VERB_DETAIL, "SHM run - worker [%d] - daemon [%p] - timenow(%u) - timeboot(%u)", + worker->thread_num, worker->daemon, (unsigned)worker->env.now_tv->tv_sec, (unsigned)worker->daemon->time_boot.tv_sec); + + offset = worker->thread_num + 1; + stat_total = worker->daemon->shm_info->ptr_arr; + stat_info = worker->daemon->shm_info->ptr_arr + offset; + + /* Copy data to the current position */ + server_stats_compile(worker, stat_info, 0); + + /* First thread, zero fill total, and copy general info */ + if (worker->thread_num == 0) { + + /* Copy data to the current position */ + memset(stat_total, 0, sizeof(struct ub_stats_info)); + + /* Point to data into SHM */ + shm_stat = worker->daemon->shm_info->ptr_ctl; + shm_stat->time.now_sec = (long long)worker->env.now_tv->tv_sec; + shm_stat->time.now_usec = (long long)worker->env.now_tv->tv_usec; + + stat_timeval_subtract(&shm_stat->time.up_sec, &shm_stat->time.up_usec, worker->env.now_tv, &worker->daemon->time_boot); + stat_timeval_subtract(&shm_stat->time.elapsed_sec, &shm_stat->time.elapsed_usec, worker->env.now_tv, &worker->daemon->time_last_stat); + + shm_stat->mem.msg = (long long)slabhash_get_mem(worker->env.msg_cache); + shm_stat->mem.rrset = (long long)slabhash_get_mem(&worker->env.rrset_cache->table); + shm_stat->mem.dnscrypt_shared_secret = 0; +#ifdef USE_DNSCRYPT + if(worker->daemon->dnscenv) { + shm_stat->mem.dnscrypt_shared_secret = (long long)slabhash_get_mem( + worker->daemon->dnscenv->shared_secrets_cache); + shm_stat->mem.dnscrypt_nonce = (long long)slabhash_get_mem( + worker->daemon->dnscenv->nonces_cache); + } +#endif + shm_stat->mem.val = (long long)mod_get_mem(&worker->env, + "validator"); + shm_stat->mem.iter = (long long)mod_get_mem(&worker->env, + "iterator"); + shm_stat->mem.respip = (long long)mod_get_mem(&worker->env, + "respip"); + + /* subnet mem value is available in shm, also when not enabled, + * to make the struct easier to memmap by other applications, + * independent of the configuration of unbound */ + shm_stat->mem.subnet = 0; +#ifdef CLIENT_SUBNET + shm_stat->mem.subnet = (long long)mod_get_mem(&worker->env, + "subnet"); +#endif + /* ipsecmod mem value is available in shm, also when not enabled, + * to make the struct easier to memmap by other applications, + * independent of the configuration of unbound */ + shm_stat->mem.ipsecmod = 0; +#ifdef USE_IPSECMOD + shm_stat->mem.ipsecmod = (long long)mod_get_mem(&worker->env, + "ipsecmod"); +#endif + } + + server_stats_add(stat_total, stat_info); + + /* print the thread statistics */ + stat_total->mesh_time_median /= (double)worker->daemon->num; + +#else + (void)worker; +#endif /* HAVE_SHMGET */ +} diff --git a/external/unbound/util/shm_side/shm_main.h b/external/unbound/util/shm_side/shm_main.h new file mode 100644 index 0000000..76c60e4 --- /dev/null +++ b/external/unbound/util/shm_side/shm_main.h @@ -0,0 +1,68 @@ +/* + * util/shm_side/shm_main.h - control the shared memory for unbound. + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions for the SHM side. + */ + +#ifndef UTIL_SHM_SIDE_MAIN_H +#define UTIL_SHM_SIDE_MAIN_H +struct daemon; +struct worker; + +/* get struct ub_shm_stat_info */ +#include "libunbound/unbound.h" + +/** + * The SHM info. + */ +struct shm_main_info { + /** stats_info array, shared memory segment. + * [0] is totals, [1..thread_num] are per-thread stats */ + struct ub_stats_info* ptr_arr; + /** the global stats block, shared memory segment */ + struct ub_shm_stat_info* ptr_ctl; + int key; + int id_ctl; + int id_arr; +}; + +int shm_main_init(struct daemon* daemon); +void shm_main_shutdown(struct daemon* daemon); +void shm_main_run(struct worker *worker); + +#endif /* UTIL_SHM_SIDE_MAIN_H */ diff --git a/external/unbound/util/storage/dnstree.c b/external/unbound/util/storage/dnstree.c index 0df490e..190369d 100644 --- a/external/unbound/util/storage/dnstree.c +++ b/external/unbound/util/storage/dnstree.c @@ -71,17 +71,17 @@ int addr_tree_compare(const void* k1, const void* k2) return 0; } -void name_tree_init(rbtree_t* tree) +void name_tree_init(rbtree_type* tree) { rbtree_init(tree, &name_tree_compare); } -void addr_tree_init(rbtree_t* tree) +void addr_tree_init(rbtree_type* tree) { rbtree_init(tree, &addr_tree_compare); } -int name_tree_insert(rbtree_t* tree, struct name_tree_node* node, +int name_tree_insert(rbtree_type* tree, struct name_tree_node* node, uint8_t* name, size_t len, int labs, uint16_t dclass) { node->node.key = node; @@ -93,7 +93,7 @@ int name_tree_insert(rbtree_t* tree, struct name_tree_node* node, return rbtree_insert(tree, &node->node) != NULL; } -int addr_tree_insert(rbtree_t* tree, struct addr_tree_node* node, +int addr_tree_insert(rbtree_type* tree, struct addr_tree_node* node, struct sockaddr_storage* addr, socklen_t addrlen, int net) { node->node.key = node; @@ -104,7 +104,7 @@ int addr_tree_insert(rbtree_t* tree, struct addr_tree_node* node, return rbtree_insert(tree, &node->node) != NULL; } -void addr_tree_init_parents(rbtree_t* tree) +void addr_tree_init_parents(rbtree_type* tree) { struct addr_tree_node* node, *prev = NULL, *p; int m; @@ -130,7 +130,7 @@ void addr_tree_init_parents(rbtree_t* tree) } } -void name_tree_init_parents(rbtree_t* tree) +void name_tree_init_parents(rbtree_type* tree) { struct name_tree_node* node, *prev = NULL, *p; int m; @@ -156,7 +156,7 @@ void name_tree_init_parents(rbtree_t* tree) } } -struct name_tree_node* name_tree_find(rbtree_t* tree, uint8_t* name, +struct name_tree_node* name_tree_find(rbtree_type* tree, uint8_t* name, size_t len, int labs, uint16_t dclass) { struct name_tree_node key; @@ -168,10 +168,10 @@ struct name_tree_node* name_tree_find(rbtree_t* tree, uint8_t* name, return (struct name_tree_node*)rbtree_search(tree, &key); } -struct name_tree_node* name_tree_lookup(rbtree_t* tree, uint8_t* name, +struct name_tree_node* name_tree_lookup(rbtree_type* tree, uint8_t* name, size_t len, int labs, uint16_t dclass) { - rbnode_t* res = NULL; + rbnode_type* res = NULL; struct name_tree_node *result; struct name_tree_node key; key.node.key = &key; @@ -200,10 +200,10 @@ struct name_tree_node* name_tree_lookup(rbtree_t* tree, uint8_t* name, return result; } -struct addr_tree_node* addr_tree_lookup(rbtree_t* tree, +struct addr_tree_node* addr_tree_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen) { - rbnode_t* res = NULL; + rbnode_type* res = NULL; struct addr_tree_node* result; struct addr_tree_node key; key.node.key = &key; @@ -231,11 +231,24 @@ struct addr_tree_node* addr_tree_lookup(rbtree_t* tree, return result; } +struct addr_tree_node* addr_tree_find(rbtree_type* tree, + struct sockaddr_storage* addr, socklen_t addrlen, int net) +{ + rbnode_type* res = NULL; + struct addr_tree_node key; + key.node.key = &key; + memcpy(&key.addr, addr, addrlen); + key.addrlen = addrlen; + key.net = net; + res = rbtree_search(tree, &key); + return (struct addr_tree_node*)res; +} + int -name_tree_next_root(rbtree_t* tree, uint16_t* dclass) +name_tree_next_root(rbtree_type* tree, uint16_t* dclass) { struct name_tree_node key; - rbnode_t* n; + rbnode_type* n; struct name_tree_node* p; if(*dclass == 0) { /* first root item is first item in tree */ diff --git a/external/unbound/util/storage/dnstree.h b/external/unbound/util/storage/dnstree.h index ec81891..782644b 100644 --- a/external/unbound/util/storage/dnstree.h +++ b/external/unbound/util/storage/dnstree.h @@ -49,12 +49,12 @@ * This is not sorted canonically, but fast. * This can be looked up to obtain a closest encloser parent name. * - * The tree itself is a rbtree_t. + * The tree itself is a rbtree_type. * This is the element node put as first entry in the client structure. */ struct name_tree_node { /** rbtree node, key is this struct : dclass and name */ - rbnode_t node; + rbnode_type node; /** parent in tree */ struct name_tree_node* parent; /** name in uncompressed wireformat */ @@ -71,12 +71,12 @@ struct name_tree_node { * Tree of IP addresses. Sorted first by protocol, then by bits. * This can be looked up to obtain the enclosing subnet. * - * The tree itself is a rbtree_t. + * The tree itself is a rbtree_type. * This is the element node put as first entry in the client structure. */ struct addr_tree_node { /** rbtree node, key is this struct : proto and subnet */ - rbnode_t node; + rbnode_type node; /** parent in tree */ struct addr_tree_node* parent; /** address */ @@ -91,7 +91,7 @@ struct addr_tree_node { * Init a name tree to be empty * @param tree: to init. */ -void name_tree_init(rbtree_t* tree); +void name_tree_init(rbtree_type* tree); /** * insert element into name tree. @@ -105,7 +105,7 @@ void name_tree_init(rbtree_t* tree); * @param dclass: class of name * @return false on error (duplicate element). */ -int name_tree_insert(rbtree_t* tree, struct name_tree_node* node, +int name_tree_insert(rbtree_type* tree, struct name_tree_node* node, uint8_t* name, size_t len, int labs, uint16_t dclass); /** @@ -113,7 +113,7 @@ int name_tree_insert(rbtree_t* tree, struct name_tree_node* node, * Should be performed after insertions are done, before lookups * @param tree: name tree */ -void name_tree_init_parents(rbtree_t* tree); +void name_tree_init_parents(rbtree_type* tree); /** * Lookup exact match in name tree @@ -124,7 +124,7 @@ void name_tree_init_parents(rbtree_t* tree); * @param dclass: class of name * @return node or NULL if not found. */ -struct name_tree_node* name_tree_find(rbtree_t* tree, uint8_t* name, +struct name_tree_node* name_tree_find(rbtree_type* tree, uint8_t* name, size_t len, int labs, uint16_t dclass); /** @@ -136,7 +136,7 @@ struct name_tree_node* name_tree_find(rbtree_t* tree, uint8_t* name, * @param dclass: class of name * @return closest enclosing node (could be equal) or NULL if not found. */ -struct name_tree_node* name_tree_lookup(rbtree_t* tree, uint8_t* name, +struct name_tree_node* name_tree_lookup(rbtree_type* tree, uint8_t* name, size_t len, int labs, uint16_t dclass); /** @@ -145,13 +145,13 @@ struct name_tree_node* name_tree_lookup(rbtree_t* tree, uint8_t* name, * @param dclass: the class to look for next (or higher). * @return false if no classes found, true means class put into c. */ -int name_tree_next_root(rbtree_t* tree, uint16_t* dclass); +int name_tree_next_root(rbtree_type* tree, uint16_t* dclass); /** * Init addr tree to be empty. * @param tree: to init. */ -void addr_tree_init(rbtree_t* tree); +void addr_tree_init(rbtree_type* tree); /** * insert element into addr tree. @@ -163,7 +163,7 @@ void addr_tree_init(rbtree_t* tree); * @param net: size of subnet. * @return false on error (duplicate element). */ -int addr_tree_insert(rbtree_t* tree, struct addr_tree_node* node, +int addr_tree_insert(rbtree_type* tree, struct addr_tree_node* node, struct sockaddr_storage* addr, socklen_t addrlen, int net); /** @@ -171,7 +171,7 @@ int addr_tree_insert(rbtree_t* tree, struct addr_tree_node* node, * Should be performed after insertions are done, before lookups * @param tree: addr tree */ -void addr_tree_init_parents(rbtree_t* tree); +void addr_tree_init_parents(rbtree_type* tree); /** * Lookup closest encloser in addr tree. @@ -180,9 +180,20 @@ void addr_tree_init_parents(rbtree_t* tree); * @param addrlen: length of addr * @return closest enclosing node (could be equal) or NULL if not found. */ -struct addr_tree_node* addr_tree_lookup(rbtree_t* tree, +struct addr_tree_node* addr_tree_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); +/** + * Find element in addr tree. (search a netblock, not a match for an address) + * @param tree: addr tree + * @param addr: netblock to lookup. + * @param addrlen: length of addr + * @param net: size of subnet + * @return addr tree element, or NULL if not found. + */ +struct addr_tree_node* addr_tree_find(rbtree_type* tree, + struct sockaddr_storage* addr, socklen_t addrlen, int net); + /** compare name tree nodes */ int name_tree_compare(const void* k1, const void* k2); diff --git a/external/unbound/util/storage/lookup3.c b/external/unbound/util/storage/lookup3.c index ddcb56e..cc11074 100644 --- a/external/unbound/util/storage/lookup3.c +++ b/external/unbound/util/storage/lookup3.c @@ -5,6 +5,7 @@ added #ifdef VALGRIND to remove 298,384,660 'unused variable k8' warnings. added include of lookup3.h to check definitions match declarations. removed include of stdint - config.h takes care of platform independence. + added fallthrough comments for new gcc warning suppression. url http://burtleburtle.net/bob/hash/index.html. */ /* @@ -235,7 +236,9 @@ uint32_t initval) /* the previous hash, or an arbitrary value */ switch(length) /* all the case statements fall through */ { case 3 : c+=k[2]; + /* fallthrough */ case 2 : b+=k[1]; + /* fallthrough */ case 1 : a+=k[0]; final(a,b,c); case 0: /* case 0: nothing left to add */ @@ -473,16 +476,27 @@ uint32_t hashlittle( const void *key, size_t length, uint32_t initval) switch(length) /* all the case statements fall through */ { case 12: c+=((uint32_t)k[11])<<24; + /* fallthrough */ case 11: c+=((uint32_t)k[10])<<16; + /* fallthrough */ case 10: c+=((uint32_t)k[9])<<8; + /* fallthrough */ case 9 : c+=k[8]; + /* fallthrough */ case 8 : b+=((uint32_t)k[7])<<24; + /* fallthrough */ case 7 : b+=((uint32_t)k[6])<<16; + /* fallthrough */ case 6 : b+=((uint32_t)k[5])<<8; + /* fallthrough */ case 5 : b+=k[4]; + /* fallthrough */ case 4 : a+=((uint32_t)k[3])<<24; + /* fallthrough */ case 3 : a+=((uint32_t)k[2])<<16; + /* fallthrough */ case 2 : a+=((uint32_t)k[1])<<8; + /* fallthrough */ case 1 : a+=k[0]; break; case 0 : return c; @@ -820,7 +834,7 @@ uint32_t hashbig( const void *key, size_t length, uint32_t initval) #ifdef SELF_TEST /* used for timings */ -void driver1() +void driver1(void) { uint8_t buf[256]; uint32_t i; @@ -842,7 +856,7 @@ void driver1() #define HASHLEN 1 #define MAXPAIR 60 #define MAXLEN 70 -void driver2() +void driver2(void) { uint8_t qa[MAXLEN+1], qb[MAXLEN+2], *a = &qa[0], *b = &qb[1]; uint32_t c[HASHSTATE], d[HASHSTATE], i=0, j=0, k, l, m=0, z; @@ -912,7 +926,7 @@ void driver2() } /* Check for reading beyond the end of the buffer and alignment problems */ -void driver3() +void driver3(void) { uint8_t buf[MAXLEN+20], *b; uint32_t len; @@ -1003,7 +1017,7 @@ void driver3() } /* check for problems with nulls */ - void driver4() + void driver4(void) { uint8_t buf[1]; uint32_t h,i,state[HASHSTATE]; @@ -1020,7 +1034,7 @@ void driver3() } -int main() +int main(void) { driver1(); /* test that the key is hashed: used for timings */ driver2(); /* test that whole key is hashed thoroughly */ diff --git a/external/unbound/util/storage/lruhash.c b/external/unbound/util/storage/lruhash.c index 2c987a2..0003ff4 100644 --- a/external/unbound/util/storage/lruhash.c +++ b/external/unbound/util/storage/lruhash.c @@ -59,9 +59,10 @@ bin_init(struct lruhash_bin* array, size_t size) } struct lruhash* -lruhash_create(size_t start_size, size_t maxmem, lruhash_sizefunc_t sizefunc, - lruhash_compfunc_t compfunc, lruhash_delkeyfunc_t delkeyfunc, - lruhash_deldatafunc_t deldatafunc, void* arg) +lruhash_create(size_t start_size, size_t maxmem, + lruhash_sizefunc_type sizefunc, lruhash_compfunc_type compfunc, + lruhash_delkeyfunc_type delkeyfunc, + lruhash_deldatafunc_type deldatafunc, void* arg) { struct lruhash* table = (struct lruhash*)calloc(1, sizeof(struct lruhash)); @@ -215,7 +216,7 @@ reclaim_space(struct lruhash* table, struct lruhash_entry** list) struct lruhash_entry* bin_find_entry(struct lruhash* table, - struct lruhash_bin* bin, hashvalue_t hash, void* key) + struct lruhash_bin* bin, hashvalue_type hash, void* key) { struct lruhash_entry* p = bin->overflow_list; while(p) { @@ -296,7 +297,7 @@ lru_touch(struct lruhash* table, struct lruhash_entry* entry) } void -lruhash_insert(struct lruhash* table, hashvalue_t hash, +lruhash_insert(struct lruhash* table, hashvalue_type hash, struct lruhash_entry* entry, void* data, void* cb_arg) { struct lruhash_bin* bin; @@ -352,7 +353,7 @@ lruhash_insert(struct lruhash* table, hashvalue_t hash, } struct lruhash_entry* -lruhash_lookup(struct lruhash* table, hashvalue_t hash, void* key, int wr) +lruhash_lookup(struct lruhash* table, hashvalue_type hash, void* key, int wr) { struct lruhash_entry* entry; struct lruhash_bin* bin; @@ -374,7 +375,7 @@ lruhash_lookup(struct lruhash* table, hashvalue_t hash, void* key, int wr) } void -lruhash_remove(struct lruhash* table, hashvalue_t hash, void* key) +lruhash_remove(struct lruhash* table, hashvalue_type hash, void* key) { struct lruhash_entry* entry; struct lruhash_bin* bin; @@ -512,7 +513,7 @@ lruhash_get_mem(struct lruhash* table) } void -lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_t md) +lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_type md) { lock_quick_lock(&table->lock); table->markdelfunc = md; @@ -542,3 +543,89 @@ lruhash_traverse(struct lruhash* h, int wr, } lock_quick_unlock(&h->lock); } + +/* + * Demote: the opposite of touch, move an entry to the bottom + * of the LRU pile. + */ + +void +lru_demote(struct lruhash* table, struct lruhash_entry* entry) +{ + log_assert(table && entry); + if (entry == table->lru_end) + return; /* nothing to do */ + /* remove from current lru position */ + lru_remove(table, entry); + /* add at end */ + entry->lru_next = NULL; + entry->lru_prev = table->lru_end; + + if (table->lru_end == NULL) + { + table->lru_start = entry; + } + else + { + table->lru_end->lru_next = entry; + } + table->lru_end = entry; +} + +struct lruhash_entry* +lruhash_insert_or_retrieve(struct lruhash* table, hashvalue_type hash, + struct lruhash_entry* entry, void* data, void* cb_arg) +{ + struct lruhash_bin* bin; + struct lruhash_entry* found, *reclaimlist = NULL; + size_t need_size; + fptr_ok(fptr_whitelist_hash_sizefunc(table->sizefunc)); + fptr_ok(fptr_whitelist_hash_delkeyfunc(table->delkeyfunc)); + fptr_ok(fptr_whitelist_hash_deldatafunc(table->deldatafunc)); + fptr_ok(fptr_whitelist_hash_compfunc(table->compfunc)); + fptr_ok(fptr_whitelist_hash_markdelfunc(table->markdelfunc)); + need_size = table->sizefunc(entry->key, data); + if (cb_arg == NULL) cb_arg = table->cb_arg; + + /* find bin */ + lock_quick_lock(&table->lock); + bin = &table->array[hash & table->size_mask]; + lock_quick_lock(&bin->lock); + + /* see if entry exists already */ + if ((found = bin_find_entry(table, bin, hash, entry->key)) != NULL) { + /* if so: keep the existing data - acquire a writelock */ + lock_rw_wrlock(&found->lock); + } + else + { + /* if not: add to bin */ + entry->overflow_next = bin->overflow_list; + bin->overflow_list = entry; + lru_front(table, entry); + table->num++; + table->space_used += need_size; + /* return the entry that was presented, and lock it */ + found = entry; + lock_rw_wrlock(&found->lock); + } + lock_quick_unlock(&bin->lock); + if (table->space_used > table->space_max) + reclaim_space(table, &reclaimlist); + if (table->num >= table->size) + table_grow(table); + lock_quick_unlock(&table->lock); + + /* finish reclaim if any (outside of critical region) */ + while (reclaimlist) { + struct lruhash_entry* n = reclaimlist->overflow_next; + void* d = reclaimlist->data; + (*table->delkeyfunc)(reclaimlist->key, cb_arg); + (*table->deldatafunc)(d, cb_arg); + reclaimlist = n; + } + + /* return the entry that was selected */ + return found; +} + diff --git a/external/unbound/util/storage/lruhash.h b/external/unbound/util/storage/lruhash.h index 30377d8..4759b50 100644 --- a/external/unbound/util/storage/lruhash.h +++ b/external/unbound/util/storage/lruhash.h @@ -116,7 +116,7 @@ struct lruhash_entry; #define HASH_DEFAULT_MAXMEM 4*1024*1024 /* bytes */ /** the type of a hash value */ -typedef uint32_t hashvalue_t; +typedef uint32_t hashvalue_type; /** * Type of function that calculates the size of an entry. @@ -124,39 +124,39 @@ typedef uint32_t hashvalue_t; * Keys that are identical must also calculate to the same size. * size = func(key, data). */ -typedef size_t (*lruhash_sizefunc_t)(void*, void*); +typedef size_t (*lruhash_sizefunc_type)(void*, void*); /** type of function that compares two keys. return 0 if equal. */ -typedef int (*lruhash_compfunc_t)(void*, void*); +typedef int (*lruhash_compfunc_type)(void*, void*); /** old keys are deleted. * The RRset type has to revoke its ID number, markdel() is used first. * This function is called: func(key, userarg) */ -typedef void (*lruhash_delkeyfunc_t)(void*, void*); +typedef void (*lruhash_delkeyfunc_type)(void*, void*); /** old data is deleted. This function is called: func(data, userarg). */ -typedef void (*lruhash_deldatafunc_t)(void*, void*); +typedef void (*lruhash_deldatafunc_type)(void*, void*); /** mark a key as pending to be deleted (and not to be used by anyone). * called: func(key) */ -typedef void (*lruhash_markdelfunc_t)(void*); +typedef void (*lruhash_markdelfunc_type)(void*); /** * Hash table that keeps LRU list of entries. */ struct lruhash { /** lock for exclusive access, to the lookup array */ - lock_quick_t lock; + lock_quick_type lock; /** the size function for entries in this table */ - lruhash_sizefunc_t sizefunc; + lruhash_sizefunc_type sizefunc; /** the compare function for entries in this table. */ - lruhash_compfunc_t compfunc; + lruhash_compfunc_type compfunc; /** how to delete keys. */ - lruhash_delkeyfunc_t delkeyfunc; + lruhash_delkeyfunc_type delkeyfunc; /** how to delete data. */ - lruhash_deldatafunc_t deldatafunc; + lruhash_deldatafunc_type deldatafunc; /** how to mark a key pending deletion */ - lruhash_markdelfunc_t markdelfunc; + lruhash_markdelfunc_type markdelfunc; /** user argument for user functions */ void* cb_arg; @@ -188,7 +188,7 @@ struct lruhash_bin { * Lock for exclusive access to the linked list * This lock makes deletion of items safe in this overflow list. */ - lock_quick_t lock; + lock_quick_type lock; /** linked list of overflow entries */ struct lruhash_entry* overflow_list; }; @@ -207,7 +207,7 @@ struct lruhash_entry { * Even with a writelock, you cannot change hash and key. * You need to delete it to change hash or key. */ - lock_rw_t lock; + lock_rw_type lock; /** next entry in overflow chain. Covered by hashlock and binlock. */ struct lruhash_entry* overflow_next; /** next entry in lru chain. covered by hashlock. */ @@ -215,7 +215,7 @@ struct lruhash_entry { /** prev entry in lru chain. covered by hashlock. */ struct lruhash_entry* lru_prev; /** hash value of the key. It may not change, until entry deleted. */ - hashvalue_t hash; + hashvalue_type hash; /** key */ void* key; /** data */ @@ -236,9 +236,9 @@ struct lruhash_entry { * @return: new hash table or NULL on malloc failure. */ struct lruhash* lruhash_create(size_t start_size, size_t maxmem, - lruhash_sizefunc_t sizefunc, lruhash_compfunc_t compfunc, - lruhash_delkeyfunc_t delkeyfunc, lruhash_deldatafunc_t deldatafunc, - void* arg); + lruhash_sizefunc_type sizefunc, lruhash_compfunc_type compfunc, + lruhash_delkeyfunc_type delkeyfunc, + lruhash_deldatafunc_type deldatafunc, void* arg); /** * Delete hash table. Entries are all deleted. @@ -269,7 +269,7 @@ void lruhash_clear(struct lruhash* table); * @param data: the data. * @param cb_override: if not null overrides the cb_arg for the deletefunc. */ -void lruhash_insert(struct lruhash* table, hashvalue_t hash, +void lruhash_insert(struct lruhash* table, hashvalue_type hash, struct lruhash_entry* entry, void* data, void* cb_override); /** @@ -285,8 +285,8 @@ void lruhash_insert(struct lruhash* table, hashvalue_t hash, * @return: pointer to the entry or NULL. The entry is locked. * The user must unlock the entry when done. */ -struct lruhash_entry* lruhash_lookup(struct lruhash* table, hashvalue_t hash, - void* key, int wr); +struct lruhash_entry* lruhash_lookup(struct lruhash* table, + hashvalue_type hash, void* key, int wr); /** * Touch entry, so it becomes the most recently used in the LRU list. @@ -299,7 +299,39 @@ void lru_touch(struct lruhash* table, struct lruhash_entry* entry); /** * Set the markdelfunction (or NULL) */ -void lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_t md); +void lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_type md); + +/************************* getdns functions ************************/ +/*** these are used by getdns only and not by unbound. ***/ + +/** + * Demote entry, so it becomes the least recently used in the LRU list. + * Caller must hold hash table lock. The entry must be inserted already. + * @param table: hash table. + * @param entry: entry to make last in LRU. + */ +void lru_demote(struct lruhash* table, struct lruhash_entry* entry); + +/** + * Insert a new element into the hashtable, or retrieve the corresponding + * element of it exits. + * + * If key is already present data pointer in that entry is kept. + * If it is not present, a new entry is created. In that case, + * the space calculation function is called with the key, data. + * If necessary the least recently used entries are deleted to make space. + * If necessary the hash array is grown up. + * + * @param table: hash table. + * @param hash: hash value. User calculates the hash. + * @param entry: identifies the entry. + * @param data: the data. + * @param cb_arg: if not null overrides the cb_arg for the deletefunc. + * @return: pointer to the existing entry if the key was already present, + * or to the entry argument if it was not. + */ +struct lruhash_entry* lruhash_insert_or_retrieve(struct lruhash* table, hashvalue_type hash, + struct lruhash_entry* entry, void* data, void* cb_arg); /************************* Internal functions ************************/ /*** these are only exposed for unit tests. ***/ @@ -311,7 +343,7 @@ void lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_t md); * @param hash: hash of key. * @param key: what to look for. */ -void lruhash_remove(struct lruhash* table, hashvalue_t hash, void* key); +void lruhash_remove(struct lruhash* table, hashvalue_type hash, void* key); /** init the hash bins for the table */ void bin_init(struct lruhash_bin* array, size_t size); @@ -328,7 +360,7 @@ void bin_delete(struct lruhash* table, struct lruhash_bin* bin); * @return: the entry or NULL if not found. */ struct lruhash_entry* bin_find_entry(struct lruhash* table, - struct lruhash_bin* bin, hashvalue_t hash, void* key); + struct lruhash_bin* bin, hashvalue_type hash, void* key); /** * Remove entry from bin overflow chain. diff --git a/external/unbound/util/storage/slabhash.c b/external/unbound/util/storage/slabhash.c index 0618b4c..ae63b97 100644 --- a/external/unbound/util/storage/slabhash.c +++ b/external/unbound/util/storage/slabhash.c @@ -46,9 +46,9 @@ #include "util/storage/slabhash.h" struct slabhash* slabhash_create(size_t numtables, size_t start_size, - size_t maxmem, lruhash_sizefunc_t sizefunc, - lruhash_compfunc_t compfunc, lruhash_delkeyfunc_t delkeyfunc, - lruhash_deldatafunc_t deldatafunc, void* arg) + size_t maxmem, lruhash_sizefunc_type sizefunc, + lruhash_compfunc_type compfunc, lruhash_delkeyfunc_type delkeyfunc, + lruhash_deldatafunc_type deldatafunc, void* arg) { size_t i; struct slabhash* sl = (struct slabhash*)calloc(1, @@ -108,24 +108,24 @@ void slabhash_clear(struct slabhash* sl) /** helper routine to calculate the slabhash index */ static unsigned int -slab_idx(struct slabhash* sl, hashvalue_t hash) +slab_idx(struct slabhash* sl, hashvalue_type hash) { return ((hash & sl->mask) >> sl->shift); } -void slabhash_insert(struct slabhash* sl, hashvalue_t hash, +void slabhash_insert(struct slabhash* sl, hashvalue_type hash, struct lruhash_entry* entry, void* data, void* arg) { lruhash_insert(sl->array[slab_idx(sl, hash)], hash, entry, data, arg); } struct lruhash_entry* slabhash_lookup(struct slabhash* sl, - hashvalue_t hash, void* key, int wr) + hashvalue_type hash, void* key, int wr) { return lruhash_lookup(sl->array[slab_idx(sl, hash)], hash, key, wr); } -void slabhash_remove(struct slabhash* sl, hashvalue_t hash, void* key) +void slabhash_remove(struct slabhash* sl, hashvalue_type hash, void* key) { lruhash_remove(sl->array[slab_idx(sl, hash)], hash, key); } @@ -163,7 +163,7 @@ size_t slabhash_get_mem(struct slabhash* sl) return total; } -struct lruhash* slabhash_gettable(struct slabhash* sl, hashvalue_t hash) +struct lruhash* slabhash_gettable(struct slabhash* sl, hashvalue_type hash) { return sl->array[slab_idx(sl, hash)]; } @@ -202,7 +202,7 @@ void test_slabhash_deldata(void* data, void* ATTR_UNUSED(arg)) deldata((struct slabhash_testdata*)data); } -void slabhash_setmarkdel(struct slabhash* sl, lruhash_markdelfunc_t md) +void slabhash_setmarkdel(struct slabhash* sl, lruhash_markdelfunc_type md) { size_t i; for(i=0; isize; i++) { diff --git a/external/unbound/util/storage/slabhash.h b/external/unbound/util/storage/slabhash.h index 031a9da..2ecf6fe 100644 --- a/external/unbound/util/storage/slabhash.h +++ b/external/unbound/util/storage/slabhash.h @@ -80,9 +80,9 @@ struct slabhash { * @return: new hash table or NULL on malloc failure. */ struct slabhash* slabhash_create(size_t numtables, size_t start_size, - size_t maxmem, lruhash_sizefunc_t sizefunc, - lruhash_compfunc_t compfunc, lruhash_delkeyfunc_t delkeyfunc, - lruhash_deldatafunc_t deldatafunc, void* arg); + size_t maxmem, lruhash_sizefunc_type sizefunc, + lruhash_compfunc_type compfunc, lruhash_delkeyfunc_type delkeyfunc, + lruhash_deldatafunc_type deldatafunc, void* arg); /** * Delete hash table. Entries are all deleted. @@ -107,9 +107,9 @@ void slabhash_clear(struct slabhash* table); * But entry->data is set to NULL before deletion, and put into * the existing entry. The data is then freed. * @param data: the data. - * @param cb_override: if not NULL overrides the cb_arg for deletfunc. + * @param cb_override: if not NULL overrides the cb_arg for deletefunc. */ -void slabhash_insert(struct slabhash* table, hashvalue_t hash, +void slabhash_insert(struct slabhash* table, hashvalue_type hash, struct lruhash_entry* entry, void* data, void* cb_override); /** @@ -126,7 +126,7 @@ void slabhash_insert(struct slabhash* table, hashvalue_t hash, * The user must unlock the entry when done. */ struct lruhash_entry* slabhash_lookup(struct slabhash* table, - hashvalue_t hash, void* key, int wr); + hashvalue_type hash, void* key, int wr); /** * Remove entry from hashtable. Does nothing if not found in hashtable. @@ -135,7 +135,7 @@ struct lruhash_entry* slabhash_lookup(struct slabhash* table, * @param hash: hash of key. * @param key: what to look for. */ -void slabhash_remove(struct slabhash* table, hashvalue_t hash, void* key); +void slabhash_remove(struct slabhash* table, hashvalue_type hash, void* key); /** * Output debug info to the log as to state of the hash table. @@ -165,14 +165,14 @@ size_t slabhash_get_mem(struct slabhash* table); * @param hash: hash value. * @return the lru hash table. */ -struct lruhash* slabhash_gettable(struct slabhash* table, hashvalue_t hash); +struct lruhash* slabhash_gettable(struct slabhash* table, hashvalue_type hash); /** * Set markdel function * @param table: slabbed hash table. * @param md: markdel function ptr. */ -void slabhash_setmarkdel(struct slabhash* table, lruhash_markdelfunc_t md); +void slabhash_setmarkdel(struct slabhash* table, lruhash_markdelfunc_type md); /** * Traverse a slabhash. diff --git a/external/unbound/util/timehist.c b/external/unbound/util/timehist.c index dbf5b98..61cc995 100644 --- a/external/unbound/util/timehist.c +++ b/external/unbound/util/timehist.c @@ -225,23 +225,23 @@ timehist_quartile(struct timehist* hist, double q) } void -timehist_export(struct timehist* hist, size_t* array, size_t sz) +timehist_export(struct timehist* hist, long long* array, size_t sz) { size_t i; if(!hist) return; if(sz > hist->num) sz = hist->num; for(i=0; ibuckets[i].count; + array[i] = (long long)hist->buckets[i].count; } void -timehist_import(struct timehist* hist, size_t* array, size_t sz) +timehist_import(struct timehist* hist, long long* array, size_t sz) { size_t i; if(!hist) return; if(sz > hist->num) sz = hist->num; for(i=0; ibuckets[i].count = array[i]; + hist->buckets[i].count = (size_t)array[i]; } diff --git a/external/unbound/util/timehist.h b/external/unbound/util/timehist.h index 5c65048..5f88a38 100644 --- a/external/unbound/util/timehist.h +++ b/external/unbound/util/timehist.h @@ -121,7 +121,7 @@ void timehist_log(struct timehist* hist, const char* name); * @param array: the array to export to. * @param sz: number of items in array. */ -void timehist_export(struct timehist* hist, size_t* array, size_t sz); +void timehist_export(struct timehist* hist, long long* array, size_t sz); /** * Import histogram from an array. @@ -129,6 +129,6 @@ void timehist_export(struct timehist* hist, size_t* array, size_t sz); * @param array: the array to import from. * @param sz: number of items in array. */ -void timehist_import(struct timehist* hist, size_t* array, size_t sz); +void timehist_import(struct timehist* hist, long long* array, size_t sz); #endif /* UTIL_TIMEHIST_H */ diff --git a/external/unbound/util/tube.c b/external/unbound/util/tube.c index 0535474..dc6e3c2 100644 --- a/external/unbound/util/tube.c +++ b/external/unbound/util/tube.c @@ -44,6 +44,7 @@ #include "util/net_help.h" #include "util/netevent.h" #include "util/fptr_wlist.h" +#include "util/ub_event.h" #ifndef USE_WINSOCK /* on unix */ @@ -303,6 +304,8 @@ int tube_write_msg(struct tube* tube, uint8_t* buf, uint32_t len, d = r; while(d != (ssize_t)sizeof(len)) { if((r=write(fd, ((char*)&len)+d, sizeof(len)-d)) == -1) { + if(errno == EAGAIN) + continue; /* temporarily unavail: try again*/ log_err("tube msg write failed: %s", strerror(errno)); (void)fd_set_nonblock(fd); return 0; @@ -312,6 +315,8 @@ int tube_write_msg(struct tube* tube, uint8_t* buf, uint32_t len, d = 0; while(d != (ssize_t)len) { if((r=write(fd, buf+d, len-d)) == -1) { + if(errno == EAGAIN) + continue; /* temporarily unavail: try again*/ log_err("tube msg write failed: %s", strerror(errno)); (void)fd_set_nonblock(fd); return 0; @@ -421,7 +426,7 @@ int tube_read_fd(struct tube* tube) } int tube_setup_bg_listen(struct tube* tube, struct comm_base* base, - tube_callback_t* cb, void* arg) + tube_callback_type* cb, void* arg) { tube->listen_cb = cb; tube->listen_arg = arg; @@ -449,8 +454,9 @@ int tube_setup_bg_write(struct tube* tube, struct comm_base* base) int tube_queue_item(struct tube* tube, uint8_t* msg, size_t len) { - struct tube_res_list* item = - (struct tube_res_list*)malloc(sizeof(*item)); + struct tube_res_list* item; + if(!tube || !tube->res_com) return 0; + item = (struct tube_res_list*)malloc(sizeof(*item)); if(!item) { free(msg); log_err("out of memory for async answer"); @@ -537,7 +543,7 @@ void tube_close_write(struct tube* ATTR_UNUSED(tube)) void tube_remove_bg_listen(struct tube* tube) { verbose(VERB_ALGO, "tube remove_bg_listen"); - winsock_unregister_wsaevent(&tube->ev_listen); + ub_winsock_unregister_wsaevent(tube->ev_listen); } void tube_remove_bg_write(struct tube* tube) @@ -662,14 +668,15 @@ tube_handle_write(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), } int tube_setup_bg_listen(struct tube* tube, struct comm_base* base, - tube_callback_t* cb, void* arg) + tube_callback_type* cb, void* arg) { tube->listen_cb = cb; tube->listen_arg = arg; if(!comm_base_internal(base)) return 1; /* ignore when no comm base - testing */ - return winsock_register_wsaevent(comm_base_internal(base), - &tube->ev_listen, tube->event, &tube_handle_signal, tube); + tube->ev_listen = ub_winsock_register_wsaevent( + comm_base_internal(base), tube->event, &tube_handle_signal, tube); + return tube->ev_listen ? 1 : 0; } int tube_setup_bg_write(struct tube* ATTR_UNUSED(tube), @@ -681,8 +688,9 @@ int tube_setup_bg_write(struct tube* ATTR_UNUSED(tube), int tube_queue_item(struct tube* tube, uint8_t* msg, size_t len) { - struct tube_res_list* item = - (struct tube_res_list*)malloc(sizeof(*item)); + struct tube_res_list* item; + if(!tube) return 0; + item = (struct tube_res_list*)malloc(sizeof(*item)); verbose(VERB_ALGO, "tube queue_item len %d", (int)len); if(!item) { free(msg); diff --git a/external/unbound/util/tube.h b/external/unbound/util/tube.h index 6cc6050..5b1fdb8 100644 --- a/external/unbound/util/tube.h +++ b/external/unbound/util/tube.h @@ -48,7 +48,6 @@ struct tube; struct tube_res_list; #ifdef USE_WINSOCK #include "util/locks.h" -#include "util/winsock_event.h" #endif /** @@ -56,7 +55,7 @@ struct tube_res_list; * void mycallback(tube, msg, len, error, user_argument); * if error is true (NETEVENT_*), msg is probably NULL. */ -typedef void tube_callback_t(struct tube*, uint8_t*, size_t, int, void*); +typedef void tube_callback_type(struct tube*, uint8_t*, size_t, int, void*); /** * A pipe @@ -71,7 +70,7 @@ struct tube { /** listen commpoint */ struct comm_point* listen_com; /** listen callback */ - tube_callback_t* listen_cb; + tube_callback_type* listen_cb; /** listen callback user arg */ void* listen_arg; /** are we currently reading a command, 0 if not, else bytecount */ @@ -93,16 +92,16 @@ struct tube { #else /* USE_WINSOCK */ /** listen callback */ - tube_callback_t* listen_cb; + tube_callback_type* listen_cb; /** listen callback user arg */ void* listen_arg; /** the windows sockets event (signaled if items in pipe) */ WSAEVENT event; /** winsock event storage when registered with event base */ - struct event ev_listen; + struct ub_event* ev_listen; /** lock on the list of outstanding items */ - lock_basic_t res_lock; + lock_basic_type res_lock; /** list of outstanding results on pipe */ struct tube_res_list* res_list; /** last in list */ @@ -223,7 +222,7 @@ int tube_read_fd(struct tube* tube); * @return true if successful, false on error. */ int tube_setup_bg_listen(struct tube* tube, struct comm_base* base, - tube_callback_t* cb, void* arg); + tube_callback_type* cb, void* arg); /** * Remove bg listen setup from event base. diff --git a/external/unbound/util/ub_event.c b/external/unbound/util/ub_event.c new file mode 100644 index 0000000..78481a9 --- /dev/null +++ b/external/unbound/util/ub_event.c @@ -0,0 +1,450 @@ +/* + * util/ub_event.c - directly call libevent (compatability) functions + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains and implementation for the indirection layer for pluggable + * events that transparently passes it either directly to libevent, or calls + * the libevent compatibility layer functions. + */ +#include "config.h" +#include +#include "util/ub_event.h" +#include "util/log.h" +#include "util/netevent.h" +#include "util/tube.h" + +/* We define libevent structures here to hide the libevent stuff. */ + +#ifdef USE_MINI_EVENT +# ifdef USE_WINSOCK +# include "util/winsock_event.h" +# else +# include "util/mini_event.h" +# endif /* USE_WINSOCK */ +#else /* USE_MINI_EVENT */ + /* we use libevent */ +# ifdef HAVE_EVENT_H +# include +# else +# include "event2/event.h" +# include "event2/event_struct.h" +# include "event2/event_compat.h" +# endif +#endif /* USE_MINI_EVENT */ + +#if UB_EV_TIMEOUT != EV_TIMEOUT || UB_EV_READ != EV_READ || \ + UB_EV_WRITE != EV_WRITE || UB_EV_SIGNAL != EV_SIGNAL || \ + UB_EV_PERSIST != EV_PERSIST +/* Only necessary for libev */ +# define NATIVE_BITS(b) ( \ + (((b) & UB_EV_TIMEOUT) ? EV_TIMEOUT : 0) \ + | (((b) & UB_EV_READ ) ? EV_READ : 0) \ + | (((b) & UB_EV_WRITE ) ? EV_WRITE : 0) \ + | (((b) & UB_EV_SIGNAL ) ? EV_SIGNAL : 0) \ + | (((b) & UB_EV_PERSIST) ? EV_PERSIST : 0)) + +# define UB_EV_BITS(b) ( \ + (((b) & EV_TIMEOUT) ? UB_EV_TIMEOUT : 0) \ + | (((b) & EV_READ ) ? UB_EV_READ : 0) \ + | (((b) & EV_WRITE ) ? UB_EV_WRITE : 0) \ + | (((b) & EV_SIGNAL ) ? UB_EV_SIGNAL : 0) \ + | (((b) & EV_PERSIST) ? UB_EV_PERSIST : 0)) + +# define UB_EV_BITS_CB(C) void my_ ## C (int fd, short bits, void *arg) \ + { (C)(fd, UB_EV_BITS(bits), arg); } + +UB_EV_BITS_CB(comm_point_udp_callback); +UB_EV_BITS_CB(comm_point_udp_ancil_callback) +UB_EV_BITS_CB(comm_point_tcp_accept_callback) +UB_EV_BITS_CB(comm_point_tcp_handle_callback) +UB_EV_BITS_CB(comm_timer_callback) +UB_EV_BITS_CB(comm_signal_callback) +UB_EV_BITS_CB(comm_point_local_handle_callback) +UB_EV_BITS_CB(comm_point_raw_handle_callback) +UB_EV_BITS_CB(comm_point_http_handle_callback) +UB_EV_BITS_CB(tube_handle_signal) +UB_EV_BITS_CB(comm_base_handle_slow_accept) + +static void (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*) +{ + if(cb == comm_point_udp_callback) + return my_comm_point_udp_callback; + else if(cb == comm_point_udp_ancil_callback) + return my_comm_point_udp_ancil_callback; + else if(cb == comm_point_tcp_accept_callback) + return my_comm_point_tcp_accept_callback; + else if(cb == comm_point_tcp_handle_callback) + return my_comm_point_tcp_handle_callback; + else if(cb == comm_timer_callback) + return my_comm_timer_callback; + else if(cb == comm_signal_callback) + return my_comm_signal_callback; + else if(cb == comm_point_local_handle_callback) + return my_comm_point_local_handle_callback; + else if(cb == comm_point_raw_handle_callback) + return my_comm_point_raw_handle_callback; + else if(cb == comm_point_http_handle_callback) + return my_comm_point_http_handle_callback; + else if(cb == tube_handle_signal) + return my_tube_handle_signal; + else if(cb == comm_base_handle_slow_accept) + return my_comm_base_handle_slow_accept; + else { + log_assert(0); /* this NULL callback pointer should not happen, + we should have the necessary routine listed above */ + return NULL; + } +} +#else +# define NATIVE_BITS(b) (b) +# define NATIVE_BITS_CB(c) (c) +#endif + +#ifndef EVFLAG_AUTO +#define EVFLAG_AUTO 0 +#endif + +#define AS_EVENT_BASE(x) ((struct event_base*)x) +#define AS_UB_EVENT_BASE(x) ((struct ub_event_base*)x) +#define AS_EVENT(x) ((struct event*)x) +#define AS_UB_EVENT(x) ((struct ub_event*)x) + +const char* ub_event_get_version(void) +{ + return event_get_version(); +} + +#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EVBACKEND_SELECT) +static const char* ub_ev_backend2str(int b) +{ + switch(b) { + case EVBACKEND_SELECT: return "select"; + case EVBACKEND_POLL: return "poll"; + case EVBACKEND_EPOLL: return "epoll"; + case EVBACKEND_KQUEUE: return "kqueue"; + case EVBACKEND_DEVPOLL: return "devpoll"; + case EVBACKEND_PORT: return "evport"; + } + return "unknown"; +} +#endif + +void +ub_get_event_sys(struct ub_event_base* base, const char** n, const char** s, + const char** m) +{ +#ifdef USE_WINSOCK + (void)base; + *n = "event"; + *s = "winsock"; + *m = "WSAWaitForMultipleEvents"; +#elif defined(USE_MINI_EVENT) + (void)base; + *n = "mini-event"; + *s = "internal"; + *m = "select"; +#else + struct event_base* b = AS_EVENT_BASE(base); + *s = event_get_version(); +# if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) + *n = "libev"; + if (!b) + b = (struct event_base*)ev_default_loop(EVFLAG_AUTO); +# ifdef EVBACKEND_SELECT + *m = ub_ev_backend2str(ev_backend((struct ev_loop*)b)); +# else + *m = "not obtainable"; +# endif +# elif defined(HAVE_EVENT_BASE_GET_METHOD) + *n = "libevent"; + if (!b) + b = event_base_new(); + *m = event_base_get_method(b); +# else + *n = "unknown"; + *m = "not obtainable"; + (void)b; +# endif +# ifdef HAVE_EVENT_BASE_FREE + if (b && b != AS_EVENT_BASE(base)) + event_base_free(b); +# endif +#endif +} + +struct ub_event_base* +ub_default_event_base(int sigs, time_t* time_secs, struct timeval* time_tv) +{ + void* base; + + (void)base; +#ifdef USE_MINI_EVENT + (void)sigs; + /* use mini event time-sharing feature */ + base = event_init(time_secs, time_tv); +#else + (void)time_secs; + (void)time_tv; +# if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) + /* libev */ + if(sigs) + base = ev_default_loop(EVFLAG_AUTO); + else + base = ev_loop_new(EVFLAG_AUTO); +# else + (void)sigs; +# ifdef HAVE_EVENT_BASE_NEW + base = event_base_new(); +# else + base = event_init(); +# endif +# endif +#endif + return (struct ub_event_base*)base; +} + +struct ub_event_base * +ub_libevent_event_base(struct event_base* libevent_base) +{ +#ifdef USE_MINI_EVENT + (void)libevent_base; + return NULL; +#else + return AS_UB_EVENT_BASE(libevent_base); +#endif +} + +struct event_base * +ub_libevent_get_event_base(struct ub_event_base* base) +{ +#ifdef USE_MINI_EVENT + (void)base; + return NULL; +#else + return AS_EVENT_BASE(base); +#endif +} + +void +ub_event_base_free(struct ub_event_base* base) +{ +#ifdef USE_MINI_EVENT + event_base_free(AS_EVENT_BASE(base)); +#elif defined(HAVE_EVENT_BASE_FREE) && defined(HAVE_EVENT_BASE_ONCE) + /* only libevent 1.2+ has it, but in 1.2 it is broken - + assertion fails on signal handling ev that is not deleted + in libevent 1.3c (event_base_once appears) this is fixed. */ + event_base_free(AS_EVENT_BASE(base)); +#else + (void)base; +#endif /* HAVE_EVENT_BASE_FREE and HAVE_EVENT_BASE_ONCE */ +} + +int +ub_event_base_dispatch(struct ub_event_base* base) +{ + return event_base_dispatch(AS_EVENT_BASE(base)); +} + +int +ub_event_base_loopexit(struct ub_event_base* base) +{ + return event_base_loopexit(AS_EVENT_BASE(base), NULL); +} + +struct ub_event* +ub_event_new(struct ub_event_base* base, int fd, short bits, + void (*cb)(int, short, void*), void* arg) +{ + struct event *ev = (struct event*)calloc(1, sizeof(struct event)); + + if (!ev) + return NULL; + + event_set(ev, fd, NATIVE_BITS(bits), NATIVE_BITS_CB(cb), arg); + if (event_base_set(AS_EVENT_BASE(base), ev) != 0) { + free(ev); + return NULL; + } + return AS_UB_EVENT(ev); +} + +struct ub_event* +ub_signal_new(struct ub_event_base* base, int fd, + void (*cb)(int, short, void*), void* arg) +{ + struct event *ev = (struct event*)calloc(1, sizeof(struct event)); + + if (!ev) + return NULL; + + signal_set(ev, fd, NATIVE_BITS_CB(cb), arg); + if (event_base_set(AS_EVENT_BASE(base), ev) != 0) { + free(ev); + return NULL; + } + return AS_UB_EVENT(ev); +} + +struct ub_event* +ub_winsock_register_wsaevent(struct ub_event_base* base, void* wsaevent, + void (*cb)(int, short, void*), void* arg) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + struct event *ev = (struct event*)calloc(1, sizeof(struct event)); + + if (!ev) + return NULL; + + if (winsock_register_wsaevent(AS_EVENT_BASE(base), ev, wsaevent, cb, + arg)) + return AS_UB_EVENT(ev); + free(ev); + return NULL; +#else + (void)base; + (void)wsaevent; + (void)cb; + (void)arg; + return NULL; +#endif +} + +void +ub_event_add_bits(struct ub_event* ev, short bits) +{ + AS_EVENT(ev)->ev_events |= NATIVE_BITS(bits); +} + +void +ub_event_del_bits(struct ub_event* ev, short bits) +{ + AS_EVENT(ev)->ev_events &= ~NATIVE_BITS(bits); +} + +void +ub_event_set_fd(struct ub_event* ev, int fd) +{ + AS_EVENT(ev)->ev_fd = fd; +} + +void +ub_event_free(struct ub_event* ev) +{ + if (ev) + free(AS_EVENT(ev)); +} + +int +ub_event_add(struct ub_event* ev, struct timeval* tv) +{ + return event_add(AS_EVENT(ev), tv); +} + +int +ub_event_del(struct ub_event* ev) +{ + return event_del(AS_EVENT(ev)); +} + +int +ub_timer_add(struct ub_event* ev, struct ub_event_base* base, + void (*cb)(int, short, void*), void* arg, struct timeval* tv) +{ + event_set(AS_EVENT(ev), -1, EV_TIMEOUT, NATIVE_BITS_CB(cb), arg); + if (event_base_set(AS_EVENT_BASE(base), AS_EVENT(ev)) != 0) + return -1; + return evtimer_add(AS_EVENT(ev), tv); +} + +int +ub_timer_del(struct ub_event* ev) +{ + return evtimer_del(AS_EVENT(ev)); +} + +int +ub_signal_add(struct ub_event* ev, struct timeval* tv) +{ + return signal_add(AS_EVENT(ev), tv); +} + +int +ub_signal_del(struct ub_event* ev) +{ + return signal_del(AS_EVENT(ev)); +} + +void +ub_winsock_unregister_wsaevent(struct ub_event* ev) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + winsock_unregister_wsaevent(AS_EVENT(ev)); + free(AS_EVENT(ev)); +#else + (void)ev; +#endif +} + +void +ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + winsock_tcp_wouldblock(AS_EVENT(ev), NATIVE_BITS(eventbits)); +#else + (void)ev; + (void)eventbits; +#endif +} + +void ub_comm_base_now(struct comm_base* cb) +{ +#ifdef USE_MINI_EVENT +/** minievent updates the time when it blocks. */ + (void)cb; /* nothing to do */ +#else /* !USE_MINI_EVENT */ +/** fillup the time values in the event base */ + time_t *tt; + struct timeval *tv; + comm_base_timept(cb, &tt, &tv); + if(gettimeofday(tv, NULL) < 0) { + log_err("gettimeofday: %s", strerror(errno)); + } + *tt = tv->tv_sec; +#endif /* USE_MINI_EVENT */ +} + diff --git a/external/unbound/util/ub_event.h b/external/unbound/util/ub_event.h new file mode 100644 index 0000000..b00a9bf --- /dev/null +++ b/external/unbound/util/ub_event.h @@ -0,0 +1,127 @@ +/* + * util/ub_event.h - indirection layer for pluggable events + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains prototypes for event loop functions. + * + */ + +#ifndef UB_EVENT_H +#define UB_EVENT_H + +struct ub_event_base; +struct ub_event; +struct comm_base; +struct event_base; + +/** event timeout */ +#define UB_EV_TIMEOUT 0x01 +/** event fd readable */ +#define UB_EV_READ 0x02 +/** event fd writable */ +#define UB_EV_WRITE 0x04 +/** event signal */ +#define UB_EV_SIGNAL 0x08 +/** event must persist */ +#define UB_EV_PERSIST 0x10 + +/** Returns event-base type. Could be "mini-event", "winsock-event" for the + * daemon compile, and will be "pluggable-event" for + * libunbound. + */ +const char* ub_event_get_version(void); +/** Return the name, system and method for the pluggable event base */ +void ub_get_event_sys(struct ub_event_base*, const char** n, const char** s, + const char** m); +/** Return a default event base. In the daemon this will be the only event + * bases used. + */ +struct ub_event_base* ub_default_event_base(int, time_t*, struct timeval*); +/** Return an ub_event_base constructed for the given libevent event base */ +struct ub_event_base* ub_libevent_event_base(struct event_base*); +/** Return the libevent base underlying the given ub_event_base. Will return + * NULL when the ub_event_base does not have an underlying libevent event base + */ +struct event_base* ub_libevent_get_event_base(struct ub_event_base*); +/** Free event base. Free events yourself */ +void ub_event_base_free(struct ub_event_base*); +/** Run the event base */ +int ub_event_base_dispatch(struct ub_event_base*); +/** exit that loop */ +int ub_event_base_loopexit(struct ub_event_base*); + +/** Create a new ub_event for the event base */ +struct ub_event* ub_event_new(struct ub_event_base*, + int fd, short bits, void (*cb)(int, short, void*), void* arg); +/** Create a new ub_event signal for the event base */ +struct ub_event* ub_signal_new(struct ub_event_base*, int fd, + void (*cb)(int, short, void*), void* arg); +/** Create a new ub_event associated with the wsaevent for the event base */ +struct ub_event* ub_winsock_register_wsaevent(struct ub_event_base*, + void* wsaevent, void (*cb)(int, short, void*), void* arg); + +/** Add event bits for this event to fire on */ +void ub_event_add_bits(struct ub_event*, short bits); + /** Configure the event so it will not longer fire on given bits */ +void ub_event_del_bits(struct ub_event*, short bits); +/** Change or set the file descriptor on the event */ +void ub_event_set_fd(struct ub_event*, int fd); +/** free the event */ +void ub_event_free(struct ub_event*); +/** Activate the event. The given timeval is an timeout value. */ +int ub_event_add(struct ub_event*, struct timeval*); +/** Deactivate the event */ +int ub_event_del(struct ub_event*); +/** Reconfigure and activate a timeout event */ +int ub_timer_add(struct ub_event*, struct ub_event_base*, + void (*cb)(int, short, void*), void* arg, struct timeval*); +/** Deactivate the timeout event */ +int ub_timer_del(struct ub_event*); +/** Activate a signal event */ +int ub_signal_add(struct ub_event*, struct timeval*); +/** Deactivate a signal event */ +int ub_signal_del(struct ub_event*); +/** Free a with a wsaevent associated event */ +void ub_winsock_unregister_wsaevent(struct ub_event* ev); +/** Signal the eventloop when a TCP windows socket will block on next read + * or write (given by the eventbits) + */ +void ub_winsock_tcp_wouldblock(struct ub_event*, int bits); +/** Equip the comm_base with the current time */ +void ub_comm_base_now(struct comm_base* cb); + +#endif /* UB_EVENT_H */ diff --git a/external/unbound/util/ub_event_pluggable.c b/external/unbound/util/ub_event_pluggable.c new file mode 100644 index 0000000..4a94512 --- /dev/null +++ b/external/unbound/util/ub_event_pluggable.c @@ -0,0 +1,692 @@ +/* + * util/ub_event_pluggable.c - call registered pluggable event functions + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains an implementation for the indirection layer for pluggable + * events that calls the registered pluggable event loop. It also defines a + * default pluggable event loop based on the default libevent (compatibility) + * functions. + */ +#include "config.h" +#include +#include "util/ub_event.h" +#include "libunbound/unbound-event.h" +#include "util/netevent.h" +#include "util/log.h" +#include "util/fptr_wlist.h" + +/* We define libevent structures here to hide the libevent stuff. */ + +#ifdef USE_MINI_EVENT +# ifdef USE_WINSOCK +# include "util/winsock_event.h" +# else +# include "util/mini_event.h" +# endif /* USE_WINSOCK */ +#else /* USE_MINI_EVENT */ + /* we use libevent */ +# ifdef HAVE_EVENT_H +# include +# else +# include "event2/event.h" +# include "event2/event_struct.h" +# include "event2/event_compat.h" +# endif +#endif /* USE_MINI_EVENT */ + +#if UB_EV_TIMEOUT != EV_TIMEOUT || UB_EV_READ != EV_READ || \ + UB_EV_WRITE != EV_WRITE || UB_EV_SIGNAL != EV_SIGNAL || \ + UB_EV_PERSIST != EV_PERSIST +/* Only necessary for libev */ +# define NATIVE_BITS(b) ( \ + (((b) & UB_EV_TIMEOUT) ? EV_TIMEOUT : 0) \ + | (((b) & UB_EV_READ ) ? EV_READ : 0) \ + | (((b) & UB_EV_WRITE ) ? EV_WRITE : 0) \ + | (((b) & UB_EV_SIGNAL ) ? EV_SIGNAL : 0) \ + | (((b) & UB_EV_PERSIST) ? EV_PERSIST : 0)) + +# define UB_EV_BITS(b) ( \ + (((b) & EV_TIMEOUT) ? UB_EV_TIMEOUT : 0) \ + | (((b) & EV_READ ) ? UB_EV_READ : 0) \ + | (((b) & EV_WRITE ) ? UB_EV_WRITE : 0) \ + | (((b) & EV_SIGNAL ) ? UB_EV_SIGNAL : 0) \ + | (((b) & EV_PERSIST) ? UB_EV_PERSIST : 0)) + +# define UB_EV_BITS_CB(C) void my_ ## C (int fd, short bits, void *arg) \ + { (C)(fd, UB_EV_BITS(bits), arg); } + +UB_EV_BITS_CB(comm_point_udp_callback); +UB_EV_BITS_CB(comm_point_udp_ancil_callback) +UB_EV_BITS_CB(comm_point_tcp_accept_callback) +UB_EV_BITS_CB(comm_point_tcp_handle_callback) +UB_EV_BITS_CB(comm_timer_callback) +UB_EV_BITS_CB(comm_signal_callback) +UB_EV_BITS_CB(comm_point_local_handle_callback) +UB_EV_BITS_CB(comm_point_raw_handle_callback) +UB_EV_BITS_CB(tube_handle_signal) +UB_EV_BITS_CB(comm_base_handle_slow_accept) + +static void (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*) +{ + if(cb == comm_point_udp_callback) + return my_comm_point_udp_callback; + else if(cb == comm_point_udp_ancil_callback) + return my_comm_point_udp_ancil_callback; + else if(cb == comm_point_tcp_accept_callback) + return my_comm_point_tcp_accept_callback; + else if(cb == comm_point_tcp_handle_callback) + return my_comm_point_tcp_handle_callback; + else if(cb == comm_timer_callback) + return my_comm_timer_callback; + else if(cb == comm_signal_callback) + return my_comm_signal_callback; + else if(cb == comm_point_local_handle_callback) + return my_comm_point_local_handle_callback; + else if(cb == comm_point_raw_handle_callback) + return my_comm_point_raw_handle_callback; + else if(cb == tube_handle_signal) + return my_tube_handle_signal; + else if(cb == comm_base_handle_slow_accept) + return my_comm_base_handle_slow_accept; + else + return NULL; +} +#else +# define NATIVE_BITS(b) (b) +# define NATIVE_BITS_CB(c) (c) +#endif + +#ifndef EVFLAG_AUTO +#define EVFLAG_AUTO 0 +#endif + +struct my_event_base { + struct ub_event_base super; + struct event_base* base; +}; + +struct my_event { + struct ub_event super; + struct event ev; +}; + +#define AS_MY_EVENT_BASE(x) ((struct my_event_base*)x) +#define AS_MY_EVENT(x) ((struct my_event*)x) + +const char* ub_event_get_version(void) +{ + return "pluggable-event"PACKAGE_VERSION; +} + +static void +my_event_add_bits(struct ub_event* ev, short bits) +{ + AS_MY_EVENT(ev)->ev.ev_events |= NATIVE_BITS(bits); +} + +static void +my_event_del_bits(struct ub_event* ev, short bits) +{ + AS_MY_EVENT(ev)->ev.ev_events &= ~NATIVE_BITS(bits); +} + +static void +my_event_set_fd(struct ub_event* ev, int fd) +{ + AS_MY_EVENT(ev)->ev.ev_fd = fd; +} + +static void +my_event_free(struct ub_event* ev) +{ + free(AS_MY_EVENT(ev)); +} + +static int +my_event_add(struct ub_event* ev, struct timeval* tv) +{ + return event_add(&AS_MY_EVENT(ev)->ev, tv); +} + +static int +my_event_del(struct ub_event* ev) +{ + return event_del(&AS_MY_EVENT(ev)->ev); +} + +static int +my_timer_add(struct ub_event* ev, struct ub_event_base* base, + void (*cb)(int, short, void*), void* arg, struct timeval* tv) +{ + event_set(&AS_MY_EVENT(ev)->ev, -1, EV_TIMEOUT,NATIVE_BITS_CB(cb),arg); + if (event_base_set(AS_MY_EVENT_BASE(base)->base, &AS_MY_EVENT(ev)->ev) + != 0) + return -1; + return evtimer_add(&AS_MY_EVENT(ev)->ev, tv); +} + +static int +my_timer_del(struct ub_event* ev) +{ + return evtimer_del(&AS_MY_EVENT(ev)->ev); +} + +static int +my_signal_add(struct ub_event* ev, struct timeval* tv) +{ + return signal_add(&AS_MY_EVENT(ev)->ev, tv); +} + +static int +my_signal_del(struct ub_event* ev) +{ + return signal_del(&AS_MY_EVENT(ev)->ev); +} + +static void +my_winsock_unregister_wsaevent(struct ub_event* ev) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + winsock_unregister_wsaevent(&AS_MY_EVENT(ev)->ev); + free(AS_MY_EVENT(ev)); +#else + (void)ev; +#endif +} + +static void +my_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + winsock_tcp_wouldblock(&AS_MY_EVENT(ev)->ev, NATIVE_BITS(eventbits)); +#else + (void)ev; + (void)eventbits; +#endif +} + +static struct ub_event_vmt default_event_vmt = { + my_event_add_bits, my_event_del_bits, my_event_set_fd, + my_event_free, my_event_add, my_event_del, + my_timer_add, my_timer_del, my_signal_add, my_signal_del, + my_winsock_unregister_wsaevent, my_winsock_tcp_wouldblock +}; + +static void +my_event_base_free(struct ub_event_base* base) +{ +#ifdef USE_MINI_EVENT + event_base_free(AS_MY_EVENT_BASE(base)->base); +#elif defined(HAVE_EVENT_BASE_FREE) && defined(HAVE_EVENT_BASE_ONCE) + /* only libevent 1.2+ has it, but in 1.2 it is broken - + assertion fails on signal handling ev that is not deleted + in libevent 1.3c (event_base_once appears) this is fixed. */ + event_base_free(AS_MY_EVENT_BASE(base)->base); +#endif /* HAVE_EVENT_BASE_FREE and HAVE_EVENT_BASE_ONCE */ + free(AS_MY_EVENT_BASE(base)); +} + +static int +my_event_base_dispatch(struct ub_event_base* base) +{ + return event_base_dispatch(AS_MY_EVENT_BASE(base)->base); +} + +static int +my_event_base_loopexit(struct ub_event_base* base, struct timeval* tv) +{ + return event_base_loopexit(AS_MY_EVENT_BASE(base)->base, tv); +} + +static struct ub_event* +my_event_new(struct ub_event_base* base, int fd, short bits, + void (*cb)(int, short, void*), void* arg) +{ + struct my_event *my_ev = (struct my_event*)calloc(1, + sizeof(struct my_event)); + + if (!my_ev) + return NULL; + + event_set(&my_ev->ev, fd, NATIVE_BITS(bits), NATIVE_BITS_CB(cb), arg); + if (event_base_set(AS_MY_EVENT_BASE(base)->base, &my_ev->ev) != 0) { + free(my_ev); + return NULL; + } + my_ev->super.magic = UB_EVENT_MAGIC; + my_ev->super.vmt = &default_event_vmt; + return &my_ev->super; +} + +static struct ub_event* +my_signal_new(struct ub_event_base* base, int fd, + void (*cb)(int, short, void*), void* arg) +{ + struct my_event *my_ev = (struct my_event*)calloc(1, + sizeof(struct my_event)); + + if (!my_ev) + return NULL; + + signal_set(&my_ev->ev, fd, NATIVE_BITS_CB(cb), arg); + if (event_base_set(AS_MY_EVENT_BASE(base)->base, &my_ev->ev) != 0) { + free(my_ev); + return NULL; + } + my_ev->super.magic = UB_EVENT_MAGIC; + my_ev->super.vmt = &default_event_vmt; + return &my_ev->super; +} + +static struct ub_event* +my_winsock_register_wsaevent(struct ub_event_base* base, void* wsaevent, + void (*cb)(int, short, void*), void* arg) +{ +#if defined(USE_MINI_EVENT) && defined(USE_WINSOCK) + struct my_event *my_ev = (struct my_event*)calloc(1, + sizeof(struct my_event)); + + if (!my_ev) + return NULL; + + if (!winsock_register_wsaevent(AS_MY_EVENT_BASE(base)->base, + &my_ev->ev, wsaevent, cb, arg)) { + free(my_ev); + return NULL; + + } + my_ev->super.magic = UB_EVENT_MAGIC; + my_ev->super.vmt = &default_event_vmt; + return &my_ev->super; +#else + (void)base; + (void)wsaevent; + (void)cb; + (void)arg; + return NULL; +#endif +} + +static struct ub_event_base_vmt default_event_base_vmt = { + my_event_base_free, my_event_base_dispatch, + my_event_base_loopexit, my_event_new, my_signal_new, + my_winsock_register_wsaevent +}; + +struct ub_event_base* +ub_default_event_base(int sigs, time_t* time_secs, struct timeval* time_tv) +{ + struct my_event_base* my_base = (struct my_event_base*)calloc(1, + sizeof(struct my_event_base)); + + if (!my_base) + return NULL; + +#ifdef USE_MINI_EVENT + (void)sigs; + /* use mini event time-sharing feature */ + my_base->base = event_init(time_secs, time_tv); +#else + (void)time_secs; + (void)time_tv; +# if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) + /* libev */ + if(sigs) + my_base->base = (struct event_base*)ev_default_loop(EVFLAG_AUTO); + else + my_base->base = (struct event_base*)ev_loop_new(EVFLAG_AUTO); +# else + (void)sigs; +# ifdef HAVE_EVENT_BASE_NEW + my_base->base = event_base_new(); +# else + my_base->base = event_init(); +# endif +# endif +#endif + if (!my_base->base) { + free(my_base); + return NULL; + } + my_base->super.magic = UB_EVENT_MAGIC; + my_base->super.vmt = &default_event_base_vmt; + return &my_base->super; +} + +struct ub_event_base* +ub_libevent_event_base(struct event_base* base) +{ +#ifdef USE_MINI_EVENT + (void)base; + return NULL; +#else + struct my_event_base* my_base = (struct my_event_base*)calloc(1, + sizeof(struct my_event_base)); + + if (!my_base) + return NULL; + my_base->super.magic = UB_EVENT_MAGIC; + my_base->super.vmt = &default_event_base_vmt; + my_base->base = base; + return &my_base->super; +#endif +} + +struct event_base* +ub_libevent_get_event_base(struct ub_event_base* base) +{ +#ifndef USE_MINI_EVENT + if (base->vmt == &default_event_base_vmt) + return AS_MY_EVENT_BASE(base)->base; +#else + (void)base; +#endif + return NULL; +} + +#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EVBACKEND_SELECT) +static const char* ub_ev_backend2str_pluggable(int b) +{ + switch(b) { + case EVBACKEND_SELECT: return "select"; + case EVBACKEND_POLL: return "poll"; + case EVBACKEND_EPOLL: return "epoll"; + case EVBACKEND_KQUEUE: return "kqueue"; + case EVBACKEND_DEVPOLL: return "devpoll"; + case EVBACKEND_PORT: return "evport"; + } + return "unknown"; +} +#endif + +void +ub_get_event_sys(struct ub_event_base* ub_base, const char** n, const char** s, + const char** m) +{ +#ifdef USE_WINSOCK + (void)ub_base; + *n = "pluggable-event"; + *s = "winsock"; + *m = "WSAWaitForMultipleEvents"; +#elif defined(USE_MINI_EVENT) + (void)ub_base; + *n = "pluggable-event"; + *s = "internal"; + *m = "select"; +#else + struct event_base* b = ub_libevent_get_event_base(ub_base); + /* This function is only called from comm_base_create, so + * ub_base is guaranteed to exist and to be the default + * event base. + */ + assert(b); + *n = "pluggable-event"; + *s = event_get_version(); +# if defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP) + *n = "pluggable-libev"; +# ifdef EVBACKEND_SELECT + *m = ub_ev_backend2str_pluggable(ev_backend((struct ev_loop*)b)); +# else + *m = "not obtainable"; +# endif +# elif defined(HAVE_EVENT_BASE_GET_METHOD) + *n = "pluggable-libevent"; + *m = event_base_get_method(b); +# else + *m = "not obtainable"; +# endif +#endif +} + +void +ub_event_base_free(struct ub_event_base* base) +{ + if (base && base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->free == my_event_base_free); + (*base->vmt->free)(base); + } +} + +int +ub_event_base_dispatch(struct ub_event_base* base) +{ + if (base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->dispatch == my_event_base_dispatch); + return (*base->vmt->dispatch)(base); + } + return -1; +} + +int +ub_event_base_loopexit(struct ub_event_base* base) +{ + if (base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->loopexit == my_event_base_loopexit); + return (*base->vmt->loopexit)(base, NULL); + } + return -1; +} + +struct ub_event* +ub_event_new(struct ub_event_base* base, int fd, short bits, + void (*cb)(int, short, void*), void* arg) +{ + if (base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->new_event == my_event_new); + return (*base->vmt->new_event)(base, fd, bits, cb, arg); + } + return NULL; +} + +struct ub_event* +ub_signal_new(struct ub_event_base* base, int fd, + void (*cb)(int, short, void*), void* arg) +{ + if (base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->new_signal == my_signal_new); + return (*base->vmt->new_signal)(base, fd, cb, arg); + } + return NULL; +} + +struct ub_event* +ub_winsock_register_wsaevent(struct ub_event_base* base, void* wsaevent, + void (*cb)(int, short, void*), void* arg) +{ + if (base->magic == UB_EVENT_MAGIC) { + fptr_ok(base->vmt != &default_event_base_vmt || + base->vmt->winsock_register_wsaevent == + my_winsock_register_wsaevent); + return (*base->vmt->winsock_register_wsaevent)(base, wsaevent, cb, arg); + } + return NULL; +} + +void +ub_event_add_bits(struct ub_event* ev, short bits) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->add_bits == my_event_add_bits); + (*ev->vmt->add_bits)(ev, bits); + } +} + +void +ub_event_del_bits(struct ub_event* ev, short bits) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->del_bits == my_event_del_bits); + (*ev->vmt->del_bits)(ev, bits); + } +} + +void +ub_event_set_fd(struct ub_event* ev, int fd) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->set_fd == my_event_set_fd); + (*ev->vmt->set_fd)(ev, fd); + } +} + +void +ub_event_free(struct ub_event* ev) +{ + if (ev && ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->free == my_event_free); + (*ev->vmt->free)(ev); + } +} + +int +ub_event_add(struct ub_event* ev, struct timeval* tv) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->add == my_event_add); + return (*ev->vmt->add)(ev, tv); + } + return -1; +} + +int +ub_event_del(struct ub_event* ev) +{ + if (ev && ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->del == my_event_del); + return (*ev->vmt->del)(ev); + } + return -1; +} + +int +ub_timer_add(struct ub_event* ev, struct ub_event_base* base, + void (*cb)(int, short, void*), void* arg, struct timeval* tv) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->add_timer == my_timer_add); + return (*ev->vmt->add_timer)(ev, base, cb, arg, tv); + } + return -1; +} + +int +ub_timer_del(struct ub_event* ev) +{ + if (ev && ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->del_timer == my_timer_del); + return (*ev->vmt->del_timer)(ev); + } + return -1; +} + +int +ub_signal_add(struct ub_event* ev, struct timeval* tv) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->add_signal == my_signal_add); + return (*ev->vmt->add_signal)(ev, tv); + } + return -1; +} + +int +ub_signal_del(struct ub_event* ev) +{ + if (ev && ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->del_signal == my_signal_del); + return (*ev->vmt->del_signal)(ev); + } + return -1; +} + +void +ub_winsock_unregister_wsaevent(struct ub_event* ev) +{ + if (ev && ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->winsock_unregister_wsaevent == + my_winsock_unregister_wsaevent); + (*ev->vmt->winsock_unregister_wsaevent)(ev); + } +} + +void +ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits) +{ + if (ev->magic == UB_EVENT_MAGIC) { + fptr_ok(ev->vmt != &default_event_vmt || + ev->vmt->winsock_tcp_wouldblock == + my_winsock_tcp_wouldblock); + (*ev->vmt->winsock_tcp_wouldblock)(ev, eventbits); + } +} + +void ub_comm_base_now(struct comm_base* cb) +{ + time_t *tt; + struct timeval *tv; + +#ifdef USE_MINI_EVENT +/** minievent updates the time when it blocks. */ + if (comm_base_internal(cb)->magic == UB_EVENT_MAGIC && + comm_base_internal(cb)->vmt == &default_event_base_vmt) + return; /* Actually using mini event, so do not set time */ +#endif /* USE_MINI_EVENT */ + +/** fillup the time values in the event base */ + comm_base_timept(cb, &tt, &tv); + if(gettimeofday(tv, NULL) < 0) { + log_err("gettimeofday: %s", strerror(errno)); + } + *tt = tv->tv_sec; +} + diff --git a/external/unbound/util/winsock_event.c b/external/unbound/util/winsock_event.c index 40b7982..63d9879 100644 --- a/external/unbound/util/winsock_event.c +++ b/external/unbound/util/winsock_event.c @@ -169,7 +169,7 @@ static void handle_timeouts(struct event_base* base, struct timeval* now, #endif verbose(VERB_CLIENT, "winsock_event handle_timeouts"); - while((rbnode_t*)(p = (struct event*)rbtree_first(base->times)) + while((rbnode_type*)(p = (struct event*)rbtree_first(base->times)) !=RBTREE_NULL) { #ifndef S_SPLINT_S if(p->ev_timeout.tv_sec > now->tv_sec || @@ -262,8 +262,9 @@ static int handle_select(struct event_base* base, struct timeval* wait) break; /* sanity check */ } log_assert(numwait <= WSA_MAXIMUM_WAIT_EVENTS); - verbose(VERB_CLIENT, "winsock_event bmax=%d numwait=%d wait=%x " - "timeout=%d", base->max, numwait, (int)wait, (int)timeout); + verbose(VERB_CLIENT, "winsock_event bmax=%d numwait=%d wait=%s " + "timeout=%d", base->max, numwait, (wait?"":""), + (int)timeout); /* do the wait */ if(numwait == 0) { diff --git a/external/unbound/util/winsock_event.h b/external/unbound/util/winsock_event.h index d386a69..d6dafac 100644 --- a/external/unbound/util/winsock_event.h +++ b/external/unbound/util/winsock_event.h @@ -132,7 +132,7 @@ struct event_base { /** sorted by timeout (absolute), ptr */ - rbtree_t* times; + rbtree_type* times; /** array (first part in use) of handles to work on */ struct event** items; /** number of items in use in array */ @@ -169,7 +169,7 @@ struct event_base */ struct event { /** node in timeout rbtree */ - rbnode_t node; + rbnode_type node; /** is event already added */ int added; diff --git a/external/unbound/validator/autotrust.c b/external/unbound/validator/autotrust.c index f8c9c8c..7bc5577 100644 --- a/external/unbound/validator/autotrust.c +++ b/external/unbound/validator/autotrust.c @@ -430,6 +430,8 @@ find_add_tp(struct val_anchors* anchors, uint8_t* rr, size_t rr_len, } tp = autr_tp_create(anchors, rr, dname_len, sldns_wirerr_get_class(rr, rr_len, dname_len)); + if(!tp) + return NULL; lock_basic_lock(&tp->lock); return tp; } @@ -1062,7 +1064,7 @@ int autr_read_file(struct val_anchors* anchors, const char* nm) /** string for a trustanchor state */ static const char* -trustanchor_state2str(autr_state_t s) +trustanchor_state2str(autr_state_type s) { switch (s) { case AUTR_STATE_START: return " START "; @@ -1201,7 +1203,7 @@ void autr_write_file(struct module_env* env, struct trust_anchor* tp) if(fsync(fileno(out)) != 0) log_err("could not fsync(%s): %s", fname, strerror(errno)); #else - FlushFileBuffers((HANDLE)_fileno(out)); + FlushFileBuffers((HANDLE)_get_osfhandle(_fileno(out))); #endif if(fclose(out) != 0) { fatal_exit("could not complete write: %s: %s", @@ -1225,17 +1227,20 @@ void autr_write_file(struct module_env* env, struct trust_anchor* tp) * @param ve: validator environment (with options) for verification. * @param tp: trust point to verify with * @param rrset: DNSKEY rrset to verify. + * @param qstate: qstate with region. * @return false on failure, true if verification successful. */ static int verify_dnskey(struct module_env* env, struct val_env* ve, - struct trust_anchor* tp, struct ub_packed_rrset_key* rrset) + struct trust_anchor* tp, struct ub_packed_rrset_key* rrset, + struct module_qstate* qstate) { char* reason = NULL; uint8_t sigalg[ALGO_NEEDS_MAX+1]; int downprot = env->cfg->harden_algo_downgrade; enum sec_status sec = val_verify_DNSKEY_with_TA(env, ve, rrset, - tp->ds_rrset, tp->dnskey_rrset, downprot?sigalg:NULL, &reason); + tp->ds_rrset, tp->dnskey_rrset, downprot?sigalg:NULL, &reason, + qstate); /* sigalg is ignored, it returns algorithms signalled to exist, but * in 5011 there are no other rrsets to check. if downprot is * enabled, then it checks that the DNSKEY is signed with all @@ -1274,7 +1279,8 @@ min_expiry(struct module_env* env, struct packed_rrset_data* dd) /** Is rr self-signed revoked key */ static int rr_is_selfsigned_revoked(struct module_env* env, struct val_env* ve, - struct ub_packed_rrset_key* dnskey_rrset, size_t i) + struct ub_packed_rrset_key* dnskey_rrset, size_t i, + struct module_qstate* qstate) { enum sec_status sec; char* reason = NULL; @@ -1283,7 +1289,7 @@ rr_is_selfsigned_revoked(struct module_env* env, struct val_env* ve, /* no algorithm downgrade protection necessary, if it is selfsigned * revoked it can be removed. */ sec = dnskey_verify_rrset(env, ve, dnskey_rrset, dnskey_rrset, i, - &reason); + &reason, LDNS_SECTION_ANSWER, qstate); return (sec == sec_status_secure); } @@ -1499,7 +1505,7 @@ init_events(struct trust_anchor* tp) static void check_contains_revoked(struct module_env* env, struct val_env* ve, struct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset, - int* changed) + int* changed, struct module_qstate* qstate) { struct packed_rrset_data* dd = (struct packed_rrset_data*) dnskey_rrset->entry.data; @@ -1519,7 +1525,7 @@ check_contains_revoked(struct module_env* env, struct val_env* ve, } if(!ta) continue; /* key not found */ - if(rr_is_selfsigned_revoked(env, ve, dnskey_rrset, i)) { + if(rr_is_selfsigned_revoked(env, ve, dnskey_rrset, i, qstate)) { /* checked if there is an rrsig signed by this key. */ /* same keytag, but stored can be revoked already, so * compare keytags, with +0 or +128(REVOKE flag) */ @@ -1569,6 +1575,11 @@ key_matches_a_ds(struct module_env* env, struct val_env* ve, verbose(VERB_ALGO, "DS match attempt failed"); continue; } + /* match of hash is sufficient for bootstrap of trust point */ + (void)reason; + (void)ve; + return 1; + /* no need to check RRSIG, DS hash already matched with source if(dnskey_verify_rrset(env, ve, dnskey_rrset, dnskey_rrset, key_idx, &reason) == sec_status_secure) { return 1; @@ -1576,6 +1587,7 @@ key_matches_a_ds(struct module_env* env, struct val_env* ve, verbose(VERB_ALGO, "DS match failed because the key " "does not verify the keyset: %s", reason); } + */ } return 0; } @@ -1677,7 +1689,7 @@ reset_holddown(struct module_env* env, struct autr_ta* ta, int* changed) /** Set the state for this trust anchor */ static void set_trustanchor_state(struct module_env* env, struct autr_ta* ta, int* changed, - autr_state_t s) + autr_state_type s) { verbose_key(ta, VERB_ALGO, "update: %s to %s", trustanchor_state2str(ta->s), trustanchor_state2str(s)); @@ -1987,7 +1999,7 @@ calc_next_probe(struct module_env* env, time_t wait) static time_t wait_probe_time(struct val_anchors* anchors) { - rbnode_t* t = rbtree_first(&anchors->autr->probe); + rbnode_type* t = rbtree_first(&anchors->autr->probe); if(t != RBTREE_NULL) return ((struct trust_anchor*)t->key)->autr->next_probe_time; return 0; @@ -2110,7 +2122,8 @@ autr_tp_remove(struct module_env* env, struct trust_anchor* tp, } int autr_process_prime(struct module_env* env, struct val_env* ve, - struct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset) + struct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset, + struct module_qstate* qstate) { int changed = 0; log_assert(tp && tp->autr); @@ -2146,12 +2159,12 @@ int autr_process_prime(struct module_env* env, struct val_env* ve, verbose(VERB_ALGO, "autotrust: no dnskey rrset"); /* no update of query_failed, because then we would have * to write to disk. But we cannot because we maybe are - * still 'initialising' with DS records, that we cannot write + * still 'initializing' with DS records, that we cannot write * in the full format (which only contains KSKs). */ return 1; /* trust point exists */ } /* check for revoked keys to remove immediately */ - check_contains_revoked(env, ve, tp, dnskey_rrset, &changed); + check_contains_revoked(env, ve, tp, dnskey_rrset, &changed, qstate); if(changed) { verbose(VERB_ALGO, "autotrust: revokedkeys, reassemble"); if(!autr_assemble(tp)) { @@ -2167,7 +2180,7 @@ int autr_process_prime(struct module_env* env, struct val_env* ve, } } /* verify the dnskey rrset and see if it is valid. */ - if(!verify_dnskey(env, ve, tp, dnskey_rrset)) { + if(!verify_dnskey(env, ve, tp, dnskey_rrset, qstate)) { verbose(VERB_ALGO, "autotrust: dnskey did not verify."); /* only increase failure count if this is not the first prime, * this means there was a previous successful probe */ @@ -2326,6 +2339,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) qinfo.qname_len = tp->namelen; qinfo.qtype = LDNS_RR_TYPE_DNSKEY; qinfo.qclass = tp->dclass; + qinfo.local_alias = NULL; log_query_info(VERB_ALGO, "autotrust probe", &qinfo); verbose(VERB_ALGO, "retry probe set in %d seconds", (int)tp->autr->next_probe_time - (int)*env->now); @@ -2333,6 +2347,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.ext_rcode = 0; edns.edns_version = 0; edns.bits = EDNS_DO; + edns.opt_list = NULL; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; @@ -2359,7 +2374,7 @@ static struct trust_anchor* todo_probe(struct module_env* env, time_t* next) { struct trust_anchor* tp; - rbnode_t* el; + rbnode_type* el; /* get first one */ lock_basic_lock(&env->anchors->lock); if( (el=rbtree_first(&env->anchors->autr->probe)) == RBTREE_NULL) { diff --git a/external/unbound/validator/autotrust.h b/external/unbound/validator/autotrust.h index ae61f8a..c549798 100644 --- a/external/unbound/validator/autotrust.h +++ b/external/unbound/validator/autotrust.h @@ -47,6 +47,7 @@ struct val_anchors; struct trust_anchor; struct ub_packed_rrset_key; struct module_env; +struct module_qstate; struct val_env; struct sldns_buffer; @@ -58,7 +59,7 @@ typedef enum { AUTR_STATE_MISSING = 3, AUTR_STATE_REVOKED = 4, AUTR_STATE_REMOVED = 5 -} autr_state_t; +} autr_state_type; /** * Autotrust metadata for one trust anchor key. @@ -73,7 +74,7 @@ struct autr_ta { /** last update of key state (new pending count keeps date the same) */ time_t last_change; /** 5011 state */ - autr_state_t s; + autr_state_type s; /** pending count */ uint8_t pending_count; /** fresh TA was seen */ @@ -90,7 +91,7 @@ struct autr_point_data { /** file to store the trust point in. chrootdir already applied. */ char* file; /** rbtree node for probe sort, key is struct trust_anchor */ - rbnode_t pnode; + rbnode_type pnode; /** the keys */ struct autr_ta* keys; @@ -126,7 +127,7 @@ struct autr_point_data { struct autr_global_data { /** rbtree of autotrust anchors sorted by next probe time. * When time is equal, sorted by anchor class, name. */ - rbtree_t probe; + rbtree_type probe; }; /** @@ -188,12 +189,14 @@ void autr_point_delete(struct trust_anchor* tp); * @param tp: trust anchor to process. * @param dnskey_rrset: DNSKEY rrset probed (can be NULL if bad prime result). * allocated in a region. Has not been validated yet. + * @param qstate: qstate with region. * @return false if trust anchor was revoked completely. * Otherwise logs errors to log, does not change return value. * On errors, likely the trust point has been unchanged. */ int autr_process_prime(struct module_env* env, struct val_env* ve, - struct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset); + struct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset, + struct module_qstate* qstate); /** * Debug printout of rfc5011 tracked anchors diff --git a/external/unbound/validator/val_anchor.c b/external/unbound/validator/val_anchor.c index 845b54a..8ae9e7f 100644 --- a/external/unbound/validator/val_anchor.c +++ b/external/unbound/validator/val_anchor.c @@ -48,6 +48,7 @@ #include "util/log.h" #include "util/net_help.h" #include "util/config_file.h" +#include "util/as112.h" #include "sldns/sbuffer.h" #include "sldns/rrdef.h" #include "sldns/str2wire.h" @@ -112,7 +113,7 @@ assembled_rrset_delete(struct ub_packed_rrset_key* pkey) /** destroy locks in tree and delete autotrust anchors */ static void -anchors_delfunc(rbnode_t* elem, void* ATTR_UNUSED(arg)) +anchors_delfunc(rbnode_type* elem, void* ATTR_UNUSED(arg)) { struct trust_anchor* ta = (struct trust_anchor*)elem; if(!ta) return; @@ -197,7 +198,7 @@ anchor_find(struct val_anchors* anchors, uint8_t* name, int namelabs, size_t namelen, uint16_t dclass) { struct trust_anchor key; - rbnode_t* n; + rbnode_type* n; if(!name) return NULL; key.node.key = &key; key.name = name; @@ -221,7 +222,7 @@ anchor_new_ta(struct val_anchors* anchors, uint8_t* name, int namelabs, size_t namelen, uint16_t dclass, int lockit) { #ifdef UNBOUND_DEBUG - rbnode_t* r; + rbnode_type* r; #endif struct trust_anchor* ta = (struct trust_anchor*)malloc( sizeof(struct trust_anchor)); @@ -989,7 +990,7 @@ anchors_assemble_rrsets(struct val_anchors* anchors) size_t nods, nokey; lock_basic_lock(&anchors->lock); ta=(struct trust_anchor*)rbtree_first(anchors->tree); - while((rbnode_t*)ta != RBTREE_NULL) { + while((rbnode_type*)ta != RBTREE_NULL) { next = (struct trust_anchor*)rbtree_next(&ta->node); lock_basic_lock(&ta->lock); if(ta->autr || (ta->numDS == 0 && ta->numDNSKEY == 0)) { @@ -1029,6 +1030,8 @@ anchors_assemble_rrsets(struct val_anchors* anchors) ")", b); (void)rbtree_delete(anchors->tree, &ta->node); lock_basic_unlock(&ta->lock); + if(anchors->dlv_anchor == ta) + anchors->dlv_anchor = NULL; anchors_delfunc(&ta->node, NULL); ta = next; continue; @@ -1044,8 +1047,18 @@ int anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) { struct config_strlist* f; + const char** zstr; char* nm; sldns_buffer* parsebuf = sldns_buffer_new(65535); + if(cfg->insecure_lan_zones) { + for(zstr = as112_zones; *zstr; zstr++) { + if(!anchor_insert_insecure(anchors, *zstr)) { + log_err("error in insecure-lan-zones: %s", *zstr); + sldns_buffer_free(parsebuf); + return 0; + } + } + } for(f = cfg->domain_insecure; f; f = f->next) { if(!f->str || f->str[0] == 0) /* empty "" */ continue; @@ -1151,7 +1164,7 @@ anchors_lookup(struct val_anchors* anchors, { struct trust_anchor key; struct trust_anchor* result; - rbnode_t* res = NULL; + rbnode_type* res = NULL; key.node.key = &key; key.name = qname; key.namelabs = dname_count_labels(qname); @@ -1260,3 +1273,80 @@ anchors_delete_insecure(struct val_anchors* anchors, uint16_t c, anchors_delfunc(&ta->node, NULL); } +/** compare two keytags, return -1, 0 or 1 */ +static int +keytag_compare(const void* x, const void* y) +{ + if(*(uint16_t*)x == *(uint16_t*)y) + return 0; + if(*(uint16_t*)x > *(uint16_t*)y) + return 1; + return -1; +} + +size_t +anchor_list_keytags(struct trust_anchor* ta, uint16_t* list, size_t num) +{ + size_t i, ret = 0; + if(ta->numDS == 0 && ta->numDNSKEY == 0) + return 0; /* insecure point */ + if(ta->numDS != 0 && ta->ds_rrset) { + struct packed_rrset_data* d=(struct packed_rrset_data*) + ta->ds_rrset->entry.data; + for(i=0; icount; i++) { + if(ret == num) continue; + list[ret++] = ds_get_keytag(ta->ds_rrset, i); + } + } + if(ta->numDNSKEY != 0 && ta->dnskey_rrset) { + struct packed_rrset_data* d=(struct packed_rrset_data*) + ta->dnskey_rrset->entry.data; + for(i=0; icount; i++) { + if(ret == num) continue; + list[ret++] = dnskey_calc_keytag(ta->dnskey_rrset, i); + } + } + qsort(list, ret, sizeof(*list), keytag_compare); + return ret; +} + +int +anchor_has_keytag(struct val_anchors* anchors, uint8_t* name, int namelabs, + size_t namelen, uint16_t dclass, uint16_t keytag) +{ + uint16_t* taglist; + uint16_t* tl; + size_t numtag, i; + struct trust_anchor* anchor = anchor_find(anchors, + name, namelabs, namelen, dclass); + if(!anchor) + return 0; + if(!anchor->numDS && !anchor->numDNSKEY) { + lock_basic_unlock(&anchor->lock); + return 0; + } + + taglist = calloc(anchor->numDS + anchor->numDNSKEY, sizeof(*taglist)); + if(!taglist) { + lock_basic_unlock(&anchor->lock); + return 0; + } + + numtag = anchor_list_keytags(anchor, taglist, + anchor->numDS+anchor->numDNSKEY); + lock_basic_unlock(&anchor->lock); + if(!numtag) { + free(taglist); + return 0; + } + tl = taglist; + for(i=0; iname); @@ -120,7 +120,7 @@ neg_clear_datas(rbnode_t* n, void* ATTR_UNUSED(arg)) /** clear zones on cache deletion */ static void -neg_clear_zones(rbnode_t* n, void* ATTR_UNUSED(arg)) +neg_clear_zones(rbnode_type* n, void* ATTR_UNUSED(arg)) { struct val_neg_zone* z = (struct val_neg_zone*)n; /* delete all the rrset entries in the tree */ @@ -371,7 +371,7 @@ static struct val_neg_zone* neg_closest_zone_parent(struct val_neg_cache* neg, { struct val_neg_zone key; struct val_neg_zone* result; - rbnode_t* res = NULL; + rbnode_type* res = NULL; key.node.key = &key; key.name = nm; key.len = nm_len; @@ -411,7 +411,7 @@ static struct val_neg_data* neg_closest_data_parent( { struct val_neg_data key; struct val_neg_data* result; - rbnode_t* res = NULL; + rbnode_type* res = NULL; key.node.key = &key; key.name = nm; key.len = nm_len; @@ -677,7 +677,7 @@ static void wipeout(struct val_neg_cache* neg, struct val_neg_zone* zone, uint8_t* end; size_t end_len; int end_labs, m; - rbnode_t* walk, *next; + rbnode_type* walk, *next; struct val_neg_data* cur; uint8_t buf[257]; /* get endpoint */ @@ -823,13 +823,22 @@ void neg_insert_data(struct val_neg_cache* neg, (h != zone->nsec3_hash || it != zone->nsec3_iter || slen != zone->nsec3_saltlen || memcmp(zone->nsec3_salt, s, slen) != 0)) { - uint8_t* sa = memdup(s, slen); - if(sa) { + + if(slen > 0) { + uint8_t* sa = memdup(s, slen); + if(sa) { + free(zone->nsec3_salt); + zone->nsec3_salt = sa; + zone->nsec3_saltlen = slen; + zone->nsec3_iter = it; + zone->nsec3_hash = h; + } + } else { free(zone->nsec3_salt); - zone->nsec3_salt = sa; - zone->nsec3_saltlen = slen; - zone->nsec3_hash = h; + zone->nsec3_salt = NULL; + zone->nsec3_saltlen = 0; zone->nsec3_iter = it; + zone->nsec3_hash = h; } } } @@ -838,34 +847,71 @@ void neg_insert_data(struct val_neg_cache* neg, wipeout(neg, zone, el, nsec); } +/** see if the reply has signed NSEC records and return the signer */ +static uint8_t* reply_nsec_signer(struct reply_info* rep, size_t* signer_len, + uint16_t* dclass) +{ + size_t i; + struct packed_rrset_data* d; + uint8_t* s; + for(i=rep->an_numrrsets; i< rep->an_numrrsets+rep->ns_numrrsets; i++){ + if(ntohs(rep->rrsets[i]->rk.type) == LDNS_RR_TYPE_NSEC || + ntohs(rep->rrsets[i]->rk.type) == LDNS_RR_TYPE_NSEC3) { + d = (struct packed_rrset_data*)rep->rrsets[i]-> + entry.data; + /* return first signer name of first NSEC */ + if(d->rrsig_count != 0) { + val_find_rrset_signer(rep->rrsets[i], + &s, signer_len); + if(s && *signer_len) { + *dclass = ntohs(rep->rrsets[i]-> + rk.rrset_class); + return s; + } + } + } + } + return 0; +} + void val_neg_addreply(struct val_neg_cache* neg, struct reply_info* rep) { size_t i, need; struct ub_packed_rrset_key* soa; + uint8_t* dname = NULL; + size_t dname_len; + uint16_t rrset_class; struct val_neg_zone* zone; /* see if secure nsecs inside */ if(!reply_has_nsec(rep)) return; /* find the zone name in message */ - soa = reply_find_soa(rep); - if(!soa) - return; + if((soa = reply_find_soa(rep))) { + dname = soa->rk.dname; + dname_len = soa->rk.dname_len; + rrset_class = ntohs(soa->rk.rrset_class); + } + else { + /* No SOA in positive (wildcard) answer. Use signer from the + * validated answer RRsets' signature. */ + if(!(dname = reply_nsec_signer(rep, &dname_len, &rrset_class))) + return; + } log_nametypeclass(VERB_ALGO, "negcache insert for zone", - soa->rk.dname, LDNS_RR_TYPE_SOA, ntohs(soa->rk.rrset_class)); + dname, LDNS_RR_TYPE_SOA, rrset_class); /* ask for enough space to store all of it */ need = calc_data_need(rep) + - calc_zone_need(soa->rk.dname, soa->rk.dname_len); + calc_zone_need(dname, dname_len); lock_basic_lock(&neg->lock); neg_make_space(neg, need); /* find or create the zone entry */ - zone = neg_find_zone(neg, soa->rk.dname, soa->rk.dname_len, - ntohs(soa->rk.rrset_class)); + zone = neg_find_zone(neg, dname, dname_len, rrset_class); if(!zone) { - if(!(zone = neg_create_zone(neg, soa->rk.dname, - soa->rk.dname_len, ntohs(soa->rk.rrset_class)))) { + if(!(zone = neg_create_zone(neg, dname, dname_len, + rrset_class))) { lock_basic_unlock(&neg->lock); log_err("out of memory adding negative zone"); return; @@ -902,7 +948,7 @@ static int neg_closest_data(struct val_neg_zone* zone, uint8_t* qname, size_t len, int labs, struct val_neg_data** data) { struct val_neg_data key; - rbnode_t* r; + rbnode_type* r; key.node.key = &key; key.name = qname; key.len = len; @@ -998,6 +1044,7 @@ int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, qinfo.qname = qname; qinfo.qtype = LDNS_RR_TYPE_DLV; qinfo.qclass = qclass; + qinfo.local_alias = NULL; if(!nsec_proves_nodata(nsec, &qinfo, &wc) && !val_nsec_proves_name_error(nsec, qname)) { /* the NSEC is not a denial for the DLV */ @@ -1019,33 +1066,6 @@ int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, return 1; } -/** see if the reply has signed NSEC records and return the signer */ -static uint8_t* reply_nsec_signer(struct reply_info* rep, size_t* signer_len, - uint16_t* dclass) -{ - size_t i; - struct packed_rrset_data* d; - uint8_t* s; - for(i=rep->an_numrrsets; i< rep->an_numrrsets+rep->ns_numrrsets; i++){ - if(ntohs(rep->rrsets[i]->rk.type) == LDNS_RR_TYPE_NSEC || - ntohs(rep->rrsets[i]->rk.type) == LDNS_RR_TYPE_NSEC3) { - d = (struct packed_rrset_data*)rep->rrsets[i]-> - entry.data; - /* return first signer name of first NSEC */ - if(d->rrsig_count != 0) { - val_find_rrset_signer(rep->rrsets[i], - &s, signer_len); - if(s && *signer_len) { - *dclass = ntohs(rep->rrsets[i]-> - rk.rrset_class); - return s; - } - } - } - } - return 0; -} - void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info* rep, uint8_t* zone_name) { @@ -1173,6 +1193,73 @@ grab_nsec(struct rrset_cache* rrset_cache, uint8_t* qname, size_t qname_len, return r; } +/** + * Get best NSEC record for qname. Might be matching, covering or totally + * useless. + * @param neg_cache: neg cache + * @param qname: to lookup rrset name + * @param qname_len: length of qname. + * @param qclass: class of rrset to lookup, host order + * @param rrset_cache: rrset cache + * @param now: to check ttl against + * @param region: where to alloc result + * @return rrset or NULL + */ +static struct ub_packed_rrset_key* +neg_find_nsec(struct val_neg_cache* neg_cache, uint8_t* qname, size_t qname_len, + uint16_t qclass, struct rrset_cache* rrset_cache, time_t now, + struct regional* region) +{ + int labs; + uint32_t flags; + struct val_neg_zone* zone; + struct val_neg_data* data; + struct ub_packed_rrset_key* nsec; + + labs = dname_count_labels(qname); + lock_basic_lock(&neg_cache->lock); + zone = neg_closest_zone_parent(neg_cache, qname, qname_len, labs, + qclass); + while(zone && !zone->in_use) + zone = zone->parent; + if(!zone) { + lock_basic_unlock(&neg_cache->lock); + return NULL; + } + + /* NSEC only for now */ + if(zone->nsec3_hash) { + lock_basic_unlock(&neg_cache->lock); + return NULL; + } + + /* ignore return value, don't care if it is an exact or smaller match */ + (void)neg_closest_data(zone, qname, qname_len, labs, &data); + if(!data) { + lock_basic_unlock(&neg_cache->lock); + return NULL; + } + + /* ENT nodes are not in use, try the previous node. If the previous node + * is not in use, we don't have an useful NSEC and give up. */ + if(!data->in_use) { + data = (struct val_neg_data*)rbtree_previous((rbnode_type*)data); + if((rbnode_type*)data == RBTREE_NULL || !data->in_use) { + lock_basic_unlock(&neg_cache->lock); + return NULL; + } + } + + flags = 0; + if(query_dname_compare(data->name, zone->name) == 0) + flags = PACKED_RRSET_NSEC_AT_APEX; + + nsec = grab_nsec(rrset_cache, data->name, data->len, LDNS_RR_TYPE_NSEC, + zone->dclass, flags, region, 0, 0, now); + lock_basic_unlock(&neg_cache->lock); + return nsec; +} + /** find nsec3 closest encloser in neg cache */ static struct val_neg_data* neg_find_nsec3_ce(struct val_neg_zone* zone, uint8_t* qname, size_t qname_len, @@ -1390,41 +1477,144 @@ static int add_soa(struct rrset_cache* rrset_cache, time_t now, struct dns_msg* val_neg_getmsg(struct val_neg_cache* neg, struct query_info* qinfo, struct regional* region, struct rrset_cache* rrset_cache, - sldns_buffer* buf, time_t now, int addsoa, uint8_t* topname) + sldns_buffer* buf, time_t now, int addsoa, uint8_t* topname, + struct config_file* cfg) { struct dns_msg* msg; - struct ub_packed_rrset_key* rrset; + struct ub_packed_rrset_key* nsec; /* qname matching/covering nsec */ + struct ub_packed_rrset_key* wcrr; /* wildcard record or nsec */ + uint8_t* nodata_wc = NULL; + uint8_t* ce = NULL; + size_t ce_len; + uint8_t wc_ce[LDNS_MAX_DOMAINLEN+3]; + struct query_info wc_qinfo; + struct ub_packed_rrset_key* cache_wc; + struct packed_rrset_data* wcrr_data; + int rcode = LDNS_RCODE_NOERROR; uint8_t* zname; size_t zname_len; int zname_labs; struct val_neg_zone* zone; - /* only for DS queries */ - if(qinfo->qtype != LDNS_RR_TYPE_DS) + /* only for DS queries when aggressive use of NSEC is disabled */ + if(qinfo->qtype != LDNS_RR_TYPE_DS && !cfg->aggressive_nsec) return NULL; log_assert(!topname || dname_subdomain_c(qinfo->qname, topname)); - /* see if info from neg cache is available - * For NSECs, because there is no optout; a DS next to a delegation - * always has exactly an NSEC for it itself; check its DS bit. - * flags=0 (not the zone apex). - */ - rrset = grab_nsec(rrset_cache, qinfo->qname, qinfo->qname_len, - LDNS_RR_TYPE_NSEC, qinfo->qclass, 0, region, 1, - qinfo->qtype, now); - if(rrset) { - /* return msg with that rrset */ + /* Get best available NSEC for qname */ + nsec = neg_find_nsec(neg, qinfo->qname, qinfo->qname_len, qinfo->qclass, + rrset_cache, now, region); + + /* Matching NSEC, use to generate No Data answer. Not creating answers + * yet for No Data proven using wildcard. */ + if(nsec && nsec_proves_nodata(nsec, qinfo, &nodata_wc) && !nodata_wc) { if(!(msg = dns_msg_create(qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, region, 2))) return NULL; - /* TTL already subtracted in grab_nsec */ - if(!dns_msg_authadd(msg, region, rrset, 0)) + if(!dns_msg_authadd(msg, region, nsec, 0)) return NULL; if(addsoa && !add_soa(rrset_cache, now, region, msg, NULL)) return NULL; + + lock_basic_lock(&neg->lock); + neg->num_neg_cache_noerror++; + lock_basic_unlock(&neg->lock); + return msg; + } else if(nsec && val_nsec_proves_name_error(nsec, qinfo->qname)) { + if(!(msg = dns_msg_create(qinfo->qname, qinfo->qname_len, + qinfo->qtype, qinfo->qclass, region, 3))) + return NULL; + if(!(ce = nsec_closest_encloser(qinfo->qname, nsec))) + return NULL; + dname_count_size_labels(ce, &ce_len); + + /* No extra extra NSEC required if both nameerror qname and + * nodata *.ce. are proven already. */ + if(!nodata_wc || query_dname_compare(nodata_wc, ce) != 0) { + /* Qname proven non existing, get wildcard record for + * QTYPE or NSEC covering or matching wildcard. */ + + /* Num labels in ce is always smaller than in qname, + * therefore adding the wildcard label cannot overflow + * buffer. */ + wc_ce[0] = 1; + wc_ce[1] = (uint8_t)'*'; + memmove(wc_ce+2, ce, ce_len); + wc_qinfo.qname = wc_ce; + wc_qinfo.qname_len = ce_len + 2; + wc_qinfo.qtype = qinfo->qtype; + + + if((cache_wc = rrset_cache_lookup(rrset_cache, wc_qinfo.qname, + wc_qinfo.qname_len, wc_qinfo.qtype, + qinfo->qclass, 0/*flags*/, now, 0/*read only*/))) { + /* Synthesize wildcard answer */ + wcrr_data = (struct packed_rrset_data*)cache_wc->entry.data; + if(!(wcrr_data->security == sec_status_secure || + (wcrr_data->security == sec_status_unchecked && + wcrr_data->rrsig_count > 0))) { + lock_rw_unlock(&cache_wc->entry.lock); + return NULL; + } + if(!(wcrr = packed_rrset_copy_region(cache_wc, + region, now))) { + lock_rw_unlock(&cache_wc->entry.lock); + return NULL; + }; + lock_rw_unlock(&cache_wc->entry.lock); + wcrr->rk.dname = qinfo->qname; + wcrr->rk.dname_len = qinfo->qname_len; + if(!dns_msg_ansadd(msg, region, wcrr, 0)) + return NULL; + /* No SOA needed for wildcard synthesised + * answer. */ + addsoa = 0; + } else { + /* Get wildcard NSEC for possible non existence + * proof */ + if(!(wcrr = neg_find_nsec(neg, wc_qinfo.qname, + wc_qinfo.qname_len, qinfo->qclass, + rrset_cache, now, region))) + return NULL; + + nodata_wc = NULL; + if(val_nsec_proves_name_error(wcrr, wc_ce)) + rcode = LDNS_RCODE_NXDOMAIN; + else if(!nsec_proves_nodata(wcrr, &wc_qinfo, + &nodata_wc) || nodata_wc) + /* &nodata_wc shouldn't be set, wc_qinfo + * already contains wildcard domain. */ + /* NSEC doesn't prove anything for + * wildcard. */ + return NULL; + if(query_dname_compare(wcrr->rk.dname, + nsec->rk.dname) != 0) + if(!dns_msg_authadd(msg, region, wcrr, 0)) + return NULL; + } + } + + if(!dns_msg_authadd(msg, region, nsec, 0)) + return NULL; + if(addsoa && !add_soa(rrset_cache, now, region, msg, NULL)) + return NULL; + + /* Increment statistic counters */ + lock_basic_lock(&neg->lock); + if(rcode == LDNS_RCODE_NOERROR) + neg->num_neg_cache_noerror++; + else if(rcode == LDNS_RCODE_NXDOMAIN) + neg->num_neg_cache_nxdomain++; + lock_basic_unlock(&neg->lock); + + FLAGS_SET_RCODE(msg->rep->flags, rcode); return msg; } + /* No aggressive use of NSEC3 for now, only proceed for DS types. */ + if(qinfo->qtype != LDNS_RR_TYPE_DS){ + return NULL; + } /* check NSEC3 neg cache for type DS */ /* need to look one zone higher for DS type */ zname = qinfo->qname; diff --git a/external/unbound/validator/val_neg.h b/external/unbound/validator/val_neg.h index bf3a247..877f5c9 100644 --- a/external/unbound/validator/val_neg.h +++ b/external/unbound/validator/val_neg.h @@ -67,9 +67,9 @@ struct ub_packed_rrset_key; struct val_neg_cache { /** the big lock on the negative cache. Because we use a rbtree * for the data (quick lookup), we need a big lock */ - lock_basic_t lock; + lock_basic_type lock; /** The zone rbtree. contents sorted canonical, type val_neg_zone */ - rbtree_t tree; + rbtree_type tree; /** the first in linked list of LRU of val_neg_data */ struct val_neg_data* first; /** last in lru (least recently used element) */ @@ -80,6 +80,12 @@ struct val_neg_cache { size_t max; /** max nsec3 iterations allowed */ size_t nsec3_max_iter; + /** number of times neg cache records were used to generate NOERROR + * responses. */ + size_t num_neg_cache_noerror; + /** number of times neg cache records were used to generate NXDOMAIN + * responses. */ + size_t num_neg_cache_nxdomain; }; /** @@ -87,7 +93,7 @@ struct val_neg_cache { */ struct val_neg_zone { /** rbtree node element, key is this struct: the name, class */ - rbnode_t node; + rbnode_type node; /** name; the key */ uint8_t* name; /** length of name */ @@ -114,7 +120,7 @@ struct val_neg_zone { /** tree of NSEC data for this zone, sorted canonical * by NSEC owner name */ - rbtree_t tree; + rbtree_type tree; /** class of node; host order */ uint16_t dclass; @@ -135,7 +141,7 @@ struct val_neg_zone { */ struct val_neg_data { /** rbtree node element, key is this struct: the name */ - rbnode_t node; + rbnode_type node; /** name; the key */ uint8_t* name; /** length of name */ @@ -250,6 +256,7 @@ int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, * more conservative, especially for opt-out zones, since the receiver * may have a trust-anchor below the optout and thus the optout cannot * be used to create a proof from the negative cache. + * @param cfg: config options. * @return a reply message if something was found. * This reply may still need validation. * NULL if nothing found (or out of memory). @@ -257,7 +264,7 @@ int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, struct dns_msg* val_neg_getmsg(struct val_neg_cache* neg, struct query_info* qinfo, struct regional* region, struct rrset_cache* rrset_cache, struct sldns_buffer* buf, time_t now, - int addsoa, uint8_t* topname); + int addsoa, uint8_t* topname, struct config_file* cfg); /**** functions exposed for unit test ****/ diff --git a/external/unbound/validator/val_nsec.c b/external/unbound/validator/val_nsec.c index f104a34..a795e77 100644 --- a/external/unbound/validator/val_nsec.c +++ b/external/unbound/validator/val_nsec.c @@ -176,7 +176,7 @@ val_nsec_proves_no_ds(struct ub_packed_rrset_key* nsec, static int nsec_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* nsec, struct key_entry_key* kkey, - char** reason) + char** reason, struct module_qstate* qstate) { struct packed_rrset_data* d = (struct packed_rrset_data*) nsec->entry.data; @@ -185,7 +185,8 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve, rrset_check_sec_status(env->rrset_cache, nsec, *env->now); if(d->security == sec_status_secure) return 1; - d->security = val_verify_rrset_entry(env, ve, nsec, kkey, reason); + d->security = val_verify_rrset_entry(env, ve, nsec, kkey, reason, + LDNS_SECTION_AUTHORITY, qstate); if(d->security == sec_status_secure) { rrset_update_sec_status(env->rrset_cache, nsec, *env->now); return 1; @@ -196,7 +197,8 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve, enum sec_status val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, struct query_info* qinfo, struct reply_info* rep, - struct key_entry_key* kkey, time_t* proof_ttl, char** reason) + struct key_entry_key* kkey, time_t* proof_ttl, char** reason, + struct module_qstate* qstate) { struct ub_packed_rrset_key* nsec = reply_find_rrset_section_ns( rep, qinfo->qname, qinfo->qname_len, LDNS_RR_TYPE_NSEC, @@ -213,7 +215,7 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, * 1) this is a delegation point and there is no DS * 2) this is not a delegation point */ if(nsec) { - if(!nsec_verify_rrset(env, ve, nsec, kkey, reason)) { + if(!nsec_verify_rrset(env, ve, nsec, kkey, reason, qstate)) { verbose(VERB_ALGO, "NSEC RRset for the " "referral did not verify."); return sec_status_bogus; @@ -242,7 +244,8 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, i++) { if(rep->rrsets[i]->rk.type != htons(LDNS_RR_TYPE_NSEC)) continue; - if(!nsec_verify_rrset(env, ve, rep->rrsets[i], kkey, reason)) { + if(!nsec_verify_rrset(env, ve, rep->rrsets[i], kkey, reason, + qstate)) { verbose(VERB_ALGO, "NSEC for empty non-terminal " "did not verify."); return sec_status_bogus; @@ -343,7 +346,7 @@ int nsec_proves_nodata(struct ub_packed_rrset_key* nsec, } else { /* See if the next owner name covers a wildcard * empty non-terminal. */ - while (dname_strict_subdomain_c(nm, nsec->rk.dname)) { + while (dname_canonical_compare(nsec->rk.dname, nm) < 0) { /* wildcard does not apply if qname below * the name that exists under the '*' */ if (dname_subdomain_c(qinfo->qname, nm)) @@ -510,7 +513,6 @@ val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, /* Determine if a NSEC record proves the non-existence of a * wildcard that could have produced qname. */ int labs; - int i; uint8_t* ce = nsec_closest_encloser(qname, nsec); uint8_t* strip; size_t striplen; @@ -523,13 +525,13 @@ val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, * and next names. */ labs = dname_count_labels(qname) - dname_count_labels(ce); - for(i=labs; i>0; i--) { + if(labs > 0) { /* i is number of labels to strip off qname, prepend * wild */ strip = qname; striplen = qnamelen; - dname_remove_labels(&strip, &striplen, i); + dname_remove_labels(&strip, &striplen, labs); if(striplen > LDNS_MAX_DOMAINLEN-2) - continue; /* too long to prepend wildcard */ + return 0; /* too long to prepend wildcard */ buf[0] = 1; buf[1] = (uint8_t)'*'; memmove(buf+2, strip, striplen); diff --git a/external/unbound/validator/val_nsec.h b/external/unbound/validator/val_nsec.h index c031c9a..4e71257 100644 --- a/external/unbound/validator/val_nsec.h +++ b/external/unbound/validator/val_nsec.h @@ -46,6 +46,7 @@ #include "util/data/packed_rrset.h" struct val_env; struct module_env; +struct module_qstate; struct ub_packed_rrset_key; struct reply_info; struct query_info; @@ -64,6 +65,7 @@ struct key_entry_key; * @param kkey: key entry to use for verification of signatures. * @param proof_ttl: if secure, the TTL of how long this proof lasts. * @param reason: string explaining why bogus. + * @param qstate: qstate with region. * @return security status. * SECURE: proved absence of DS. * INSECURE: proved that this was not a delegation point. @@ -73,7 +75,7 @@ struct key_entry_key; enum sec_status val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, struct query_info* qinfo, struct reply_info* rep, struct key_entry_key* kkey, - time_t* proof_ttl, char** reason); + time_t* proof_ttl, char** reason, struct module_qstate* qstate); /** * nsec typemap check, takes an NSEC-type bitmap as argument, checks for type. diff --git a/external/unbound/validator/val_nsec3.c b/external/unbound/validator/val_nsec3.c index 22867d1..773ed30 100644 --- a/external/unbound/validator/val_nsec3.c +++ b/external/unbound/validator/val_nsec3.c @@ -623,14 +623,14 @@ nsec3_calc_b32(struct regional* region, sldns_buffer* buf, } int -nsec3_hash_name(rbtree_t* table, struct regional* region, sldns_buffer* buf, +nsec3_hash_name(rbtree_type* table, struct regional* region, sldns_buffer* buf, struct ub_packed_rrset_key* nsec3, int rr, uint8_t* dname, size_t dname_len, struct nsec3_cached_hash** hash) { struct nsec3_cached_hash* c; struct nsec3_cached_hash looki; #ifdef UNBOUND_DEBUG - rbnode_t* n; + rbnode_type* n; #endif int r; looki.node.key = &looki; @@ -730,7 +730,7 @@ nsec3_hash_matches_owner(struct nsec3_filter* flt, */ static int find_matching_nsec3(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, uint8_t* nm, size_t nmlen, + rbtree_type* ct, uint8_t* nm, size_t nmlen, struct ub_packed_rrset_key** rrset, int* rr) { size_t i_rs; @@ -823,7 +823,7 @@ nsec3_covers(uint8_t* zone, struct nsec3_cached_hash* hash, */ static int find_covering_nsec3(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, uint8_t* nm, size_t nmlen, + rbtree_type* ct, uint8_t* nm, size_t nmlen, struct ub_packed_rrset_key** rrset, int* rr) { size_t i_rs; @@ -869,7 +869,7 @@ find_covering_nsec3(struct module_env* env, struct nsec3_filter* flt, */ static int nsec3_find_closest_encloser(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, struct query_info* qinfo, struct ce_response* ce) + rbtree_type* ct, struct query_info* qinfo, struct ce_response* ce) { uint8_t* nm = qinfo->qname; size_t nmlen = qinfo->qname_len; @@ -936,7 +936,7 @@ next_closer(uint8_t* qname, size_t qnamelen, uint8_t* ce, */ static enum sec_status nsec3_prove_closest_encloser(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, struct query_info* qinfo, int prove_does_not_exist, + rbtree_type* ct, struct query_info* qinfo, int prove_does_not_exist, struct ce_response* ce) { uint8_t* nc; @@ -1016,7 +1016,7 @@ nsec3_ce_wildcard(struct regional* region, uint8_t* ce, size_t celen, /** Do the name error proof */ static enum sec_status nsec3_do_prove_nameerror(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, struct query_info* qinfo) + rbtree_type* ct, struct query_info* qinfo) { struct ce_response ce; uint8_t* wc; @@ -1037,7 +1037,7 @@ nsec3_do_prove_nameerror(struct module_env* env, struct nsec3_filter* flt, "nsec3 is an insecure delegation"); return sec; } - log_nametypeclass(VERB_ALGO, "nsec3 namerror: proven ce=", ce.ce,0,0); + log_nametypeclass(VERB_ALGO, "nsec3 nameerror: proven ce=", ce.ce,0,0); /* At this point, we know that qname does not exist. Now we need * to prove that the wildcard does not exist. */ @@ -1062,7 +1062,7 @@ nsec3_prove_nameerror(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, struct query_info* qinfo, struct key_entry_key* kkey) { - rbtree_t ct; + rbtree_type ct; struct nsec3_filter flt; if(!list || num == 0 || !kkey || !key_entry_isgood(kkey)) @@ -1086,7 +1086,7 @@ nsec3_prove_nameerror(struct module_env* env, struct val_env* ve, /** Do the nodata proof */ static enum sec_status nsec3_do_prove_nodata(struct module_env* env, struct nsec3_filter* flt, - rbtree_t* ct, struct query_info* qinfo) + rbtree_type* ct, struct query_info* qinfo) { struct ce_response ce; uint8_t* wc; @@ -1180,7 +1180,7 @@ nsec3_do_prove_nodata(struct module_env* env, struct nsec3_filter* flt, nsec3_has_type(rrset, rr, LDNS_RR_TYPE_NS) && !nsec3_has_type(rrset, rr, LDNS_RR_TYPE_SOA)) { verbose(VERB_ALGO, "nsec3 nodata proof: matching " - "wilcard is a delegation, bogus"); + "wildcard is a delegation, bogus"); return sec_status_bogus; } /* everything is peachy keen, except for optout spans */ @@ -1221,7 +1221,7 @@ nsec3_prove_nodata(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, struct query_info* qinfo, struct key_entry_key* kkey) { - rbtree_t ct; + rbtree_type ct; struct nsec3_filter flt; if(!list || num == 0 || !kkey || !key_entry_isgood(kkey)) @@ -1240,7 +1240,7 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, struct query_info* qinfo, struct key_entry_key* kkey, uint8_t* wc) { - rbtree_t ct; + rbtree_type ct; struct nsec3_filter flt; struct ce_response ce; uint8_t* nc; @@ -1285,7 +1285,7 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve, static int list_is_secure(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, - struct key_entry_key* kkey, char** reason) + struct key_entry_key* kkey, char** reason, struct module_qstate* qstate) { struct packed_rrset_data* d; size_t i; @@ -1299,7 +1299,7 @@ list_is_secure(struct module_env* env, struct val_env* ve, if(d->security == sec_status_secure) continue; d->security = val_verify_rrset_entry(env, ve, list[i], kkey, - reason); + reason, LDNS_SECTION_AUTHORITY, qstate); if(d->security != sec_status_secure) { verbose(VERB_ALGO, "NSEC3 did not verify"); return 0; @@ -1312,9 +1312,10 @@ list_is_secure(struct module_env* env, struct val_env* ve, enum sec_status nsec3_prove_nods(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, - struct query_info* qinfo, struct key_entry_key* kkey, char** reason) + struct query_info* qinfo, struct key_entry_key* kkey, char** reason, + struct module_qstate* qstate) { - rbtree_t ct; + rbtree_type ct; struct nsec3_filter flt; struct ce_response ce; struct ub_packed_rrset_key* rrset; @@ -1325,7 +1326,7 @@ nsec3_prove_nods(struct module_env* env, struct val_env* ve, *reason = "no valid NSEC3s"; return sec_status_bogus; /* no valid NSEC3s, bogus */ } - if(!list_is_secure(env, ve, list, num, kkey, reason)) + if(!list_is_secure(env, ve, list, num, kkey, reason, qstate)) return sec_status_bogus; /* not all NSEC3 records secure */ rbtree_init(&ct, &nsec3_hash_cmp); /* init names-to-hash cache */ filter_init(&flt, list, num, qinfo); /* init RR iterator */ @@ -1403,7 +1404,7 @@ nsec3_prove_nxornodata(struct module_env* env, struct val_env* ve, struct query_info* qinfo, struct key_entry_key* kkey, int* nodata) { enum sec_status sec, secnx; - rbtree_t ct; + rbtree_type ct; struct nsec3_filter flt; *nodata = 0; diff --git a/external/unbound/validator/val_nsec3.h b/external/unbound/validator/val_nsec3.h index 69ba78d..7fd37c1 100644 --- a/external/unbound/validator/val_nsec3.h +++ b/external/unbound/validator/val_nsec3.h @@ -71,6 +71,7 @@ struct val_env; struct regional; struct module_env; +struct module_qstate; struct ub_packed_rrset_key; struct reply_info; struct query_info; @@ -185,6 +186,7 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve, * @param qinfo: query that is verified for. * @param kkey: key entry that signed the NSEC3s. * @param reason: string for bogus result. + * @param qstate: qstate with region. * @return: * sec_status SECURE of the proposition is proven by the NSEC3 RRs, * BOGUS if not, INSECURE if all of the NSEC3s could be validly ignored. @@ -194,7 +196,8 @@ nsec3_prove_wildcard(struct module_env* env, struct val_env* ve, enum sec_status nsec3_prove_nods(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key** list, size_t num, - struct query_info* qinfo, struct key_entry_key* kkey, char** reason); + struct query_info* qinfo, struct key_entry_key* kkey, char** reason, + struct module_qstate* qstate); /** * Prove NXDOMAIN or NODATA. @@ -224,7 +227,7 @@ nsec3_prove_nxornodata(struct module_env* env, struct val_env* ve, */ struct nsec3_cached_hash { /** rbtree node, key is this structure */ - rbnode_t node; + rbnode_type node; /** where are the parameters for conversion, in this rrset data */ struct ub_packed_rrset_key* nsec3; /** where are the parameters for conversion, this RR number in data */ @@ -271,7 +274,7 @@ int nsec3_hash_cmp(const void* c1, const void* c2); * 0 on a malloc failure. * -1 if the NSEC3 rr was badly formatted (i.e. formerr). */ -int nsec3_hash_name(rbtree_t* table, struct regional* region, +int nsec3_hash_name(rbtree_type* table, struct regional* region, struct sldns_buffer* buf, struct ub_packed_rrset_key* nsec3, int rr, uint8_t* dname, size_t dname_len, struct nsec3_cached_hash** hash); diff --git a/external/unbound/validator/val_secalgo.c b/external/unbound/validator/val_secalgo.c index 7c8d7b2..95200a4 100644 --- a/external/unbound/validator/val_secalgo.c +++ b/external/unbound/validator/val_secalgo.c @@ -72,6 +72,11 @@ #include #endif +/** fake DSA support for unit tests */ +int fake_dsa = 0; +/** fake SHA1 support for unit tests */ +int fake_sha1 = 0; + /* return size of digest if supported, or 0 otherwise */ size_t nsec3_hash_algo_size_supported(int id) @@ -98,6 +103,12 @@ secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, } } +void +secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char* res) +{ + (void)SHA256(buf, len, res); +} + /** * Return size of DS digest according to its hash algorithm. * @param algo: DS digest algo. @@ -107,9 +118,12 @@ size_t ds_digest_size_supported(int algo) { switch(algo) { -#ifdef HAVE_EVP_SHA1 case LDNS_SHA1: +#if defined(HAVE_EVP_SHA1) && defined(USE_SHA1) return SHA_DIGEST_LENGTH; +#else + if(fake_sha1) return 20; + return 0; #endif #ifdef HAVE_EVP_SHA256 case LDNS_SHA256: @@ -117,6 +131,8 @@ ds_digest_size_supported(int algo) #endif #ifdef USE_GOST case LDNS_HASH_GOST: + /* we support GOST if it can be loaded */ + (void)sldns_key_EVP_load_gost_id(); if(EVP_get_digestbyname("md_gost94")) return 32; else return 0; @@ -147,7 +163,7 @@ secalgo_ds_digest(int algo, unsigned char* buf, size_t len, unsigned char* res) { switch(algo) { -#ifdef HAVE_EVP_SHA1 +#if defined(HAVE_EVP_SHA1) && defined(USE_SHA1) case LDNS_SHA1: (void)SHA1(buf, len, res); return 1; @@ -186,8 +202,22 @@ dnskey_algo_id_is_supported(int id) return 0; case LDNS_DSA: case LDNS_DSA_NSEC3: +#if defined(USE_DSA) && defined(USE_SHA1) + return 1; +#else + if(fake_dsa || fake_sha1) return 1; + return 0; +#endif + case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: +#ifdef USE_SHA1 + return 1; +#else + if(fake_sha1) return 1; + return 0; +#endif + #if defined(HAVE_EVP_SHA256) && defined(USE_SHA2) case LDNS_RSASHA256: #endif @@ -198,7 +228,16 @@ dnskey_algo_id_is_supported(int id) case LDNS_ECDSAP256SHA256: case LDNS_ECDSAP384SHA384: #endif +#ifdef USE_ED25519 + case LDNS_ED25519: +#endif +#ifdef USE_ED448 + case LDNS_ED448: +#endif +#if (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) || defined(USE_ECDSA) || defined(USE_ED25519) || defined(USE_ED448) return 1; +#endif + #ifdef USE_GOST case LDNS_ECC_GOST: /* we support GOST if it can be loaded */ @@ -225,6 +264,7 @@ log_crypto_error(const char* str, unsigned long e) log_err("%s crypto %s", str, buf); } +#ifdef USE_DSA /** * Setup DSA key digest in DER encoding ... * @param sig: input is signature output alloced ptr (unless failure). @@ -253,8 +293,12 @@ setup_dsa_sig(unsigned char** sig, unsigned int* len) dsasig = DSA_SIG_new(); if(!dsasig) return 0; +#ifdef HAVE_DSA_SIG_SET0 + if(!DSA_SIG_set0(dsasig, R, S)) return 0; +#else dsasig->r = R; dsasig->s = S; +#endif *sig = NULL; newlen = i2d_DSA_SIG(dsasig, sig); if(newlen < 0) { @@ -266,6 +310,7 @@ setup_dsa_sig(unsigned char** sig, unsigned int* len) DSA_SIG_free(dsasig); return 1; } +#endif /* USE_DSA */ #ifdef USE_ECDSA /** @@ -279,36 +324,82 @@ setup_dsa_sig(unsigned char** sig, unsigned int* len) static int setup_ecdsa_sig(unsigned char** sig, unsigned int* len) { - ECDSA_SIG* ecdsa_sig; - int newlen; + /* convert from two BIGNUMs in the rdata buffer, to ASN notation. + * ASN preamble: 30440220 0220 + * the '20' is the length of that field (=bnsize). +i * the '44' is the total remaining length. + * if negative, start with leading zero. + * if starts with 00s, remove them from the number. + */ + uint8_t pre[] = {0x30, 0x44, 0x02, 0x20}; + int pre_len = 4; + uint8_t mid[] = {0x02, 0x20}; + int mid_len = 2; + int raw_sig_len, r_high, s_high, r_rem=0, s_rem=0; int bnsize = (int)((*len)/2); + unsigned char* d = *sig; + uint8_t* p; /* if too short or not even length, fails */ if(*len < 16 || bnsize*2 != (int)*len) return 0; - /* use the raw data to parse two evenly long BIGNUMs, "r | s". */ - ecdsa_sig = ECDSA_SIG_new(); - if(!ecdsa_sig) return 0; - ecdsa_sig->r = BN_bin2bn(*sig, bnsize, ecdsa_sig->r); - ecdsa_sig->s = BN_bin2bn(*sig+bnsize, bnsize, ecdsa_sig->s); - if(!ecdsa_sig->r || !ecdsa_sig->s) { - ECDSA_SIG_free(ecdsa_sig); - return 0; - } - /* spool it into ASN format */ - *sig = NULL; - newlen = i2d_ECDSA_SIG(ecdsa_sig, sig); - if(newlen <= 0) { - ECDSA_SIG_free(ecdsa_sig); - free(*sig); + /* strip leading zeroes from r (but not last one) */ + while(r_rem < bnsize-1 && d[r_rem] == 0) + r_rem++; + /* strip leading zeroes from s (but not last one) */ + while(s_rem < bnsize-1 && d[bnsize+s_rem] == 0) + s_rem++; + + r_high = ((d[0+r_rem]&0x80)?1:0); + s_high = ((d[bnsize+s_rem]&0x80)?1:0); + raw_sig_len = pre_len + r_high + bnsize - r_rem + mid_len + + s_high + bnsize - s_rem; + *sig = (unsigned char*)malloc((size_t)raw_sig_len); + if(!*sig) return 0; + p = (uint8_t*)*sig; + p[0] = pre[0]; + p[1] = (uint8_t)(raw_sig_len-2); + p[2] = pre[2]; + p[3] = (uint8_t)(bnsize + r_high - r_rem); + p += 4; + if(r_high) { + *p = 0; + p += 1; } - *len = (unsigned int)newlen; - ECDSA_SIG_free(ecdsa_sig); + memmove(p, d+r_rem, (size_t)bnsize-r_rem); + p += bnsize-r_rem; + memmove(p, mid, (size_t)mid_len-1); + p += mid_len-1; + *p = (uint8_t)(bnsize + s_high - s_rem); + p += 1; + if(s_high) { + *p = 0; + p += 1; + } + memmove(p, d+bnsize+s_rem, (size_t)bnsize-s_rem); + *len = (unsigned int)raw_sig_len; return 1; } #endif /* USE_ECDSA */ +#ifdef USE_ECDSA_EVP_WORKAROUND +static EVP_MD ecdsa_evp_256_md; +static EVP_MD ecdsa_evp_384_md; +void ecdsa_evp_workaround_init(void) +{ + /* openssl before 1.0.0 fixes RSA with the SHA256 + * hash in EVP. We create one for ecdsa_sha256 */ + ecdsa_evp_256_md = *EVP_sha256(); + ecdsa_evp_256_md.required_pkey_type[0] = EVP_PKEY_EC; + ecdsa_evp_256_md.verify = (void*)ECDSA_verify; + + ecdsa_evp_384_md = *EVP_sha384(); + ecdsa_evp_384_md.required_pkey_type[0] = EVP_PKEY_EC; + ecdsa_evp_384_md.verify = (void*)ECDSA_verify; +} +#endif /* USE_ECDSA_EVP_WORKAROUND */ + /** * Setup key and digest for verification. Adjust sig if necessary. * @@ -323,10 +414,13 @@ static int setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, unsigned char* key, size_t keylen) { +#if defined(USE_DSA) && defined(USE_SHA1) DSA* dsa; +#endif RSA* rsa; switch(algo) { +#if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: *evp_key = EVP_PKEY_new(); @@ -345,11 +439,20 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, "EVP_PKEY_assign_DSA failed"); return 0; } +#ifdef HAVE_EVP_DSS1 *digest_type = EVP_dss1(); +#else + *digest_type = EVP_sha1(); +#endif break; +#endif /* USE_DSA && USE_SHA1 */ + +#if defined(USE_SHA1) || (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) +#ifdef USE_SHA1 case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: +#endif #if defined(HAVE_EVP_SHA256) && defined(USE_SHA2) case LDNS_RSASHA256: #endif @@ -384,9 +487,14 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, *digest_type = EVP_sha512(); else #endif +#ifdef USE_SHA1 *digest_type = EVP_sha1(); - +#else + { verbose(VERB_QUERY, "no digest available"); return 0; } +#endif break; +#endif /* defined(USE_SHA1) || (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) */ + case LDNS_RSAMD5: *evp_key = EVP_PKEY_new(); if(!*evp_key) { @@ -433,20 +541,7 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, return 0; } #ifdef USE_ECDSA_EVP_WORKAROUND - /* openssl before 1.0.0 fixes RSA with the SHA256 - * hash in EVP. We create one for ecdsa_sha256 */ - { - static int md_ecdsa_256_done = 0; - static EVP_MD md; - if(!md_ecdsa_256_done) { - EVP_MD m = *EVP_sha256(); - md_ecdsa_256_done = 1; - m.required_pkey_type[0] = (*evp_key)->type; - m.verify = (void*)ECDSA_verify; - md = m; - } - *digest_type = &md; - } + *digest_type = &ecdsa_evp_256_md; #else *digest_type = EVP_sha256(); #endif @@ -460,25 +555,34 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, return 0; } #ifdef USE_ECDSA_EVP_WORKAROUND - /* openssl before 1.0.0 fixes RSA with the SHA384 - * hash in EVP. We create one for ecdsa_sha384 */ - { - static int md_ecdsa_384_done = 0; - static EVP_MD md; - if(!md_ecdsa_384_done) { - EVP_MD m = *EVP_sha384(); - md_ecdsa_384_done = 1; - m.required_pkey_type[0] = (*evp_key)->type; - m.verify = (void*)ECDSA_verify; - md = m; - } - *digest_type = &md; - } + *digest_type = &ecdsa_evp_384_md; #else *digest_type = EVP_sha384(); #endif break; #endif /* USE_ECDSA */ +#ifdef USE_ED25519 + case LDNS_ED25519: + *evp_key = sldns_ed255192pkey_raw(key, keylen); + if(!*evp_key) { + verbose(VERB_QUERY, "verify: " + "sldns_ed255192pkey_raw failed"); + return 0; + } + *digest_type = NULL; + break; +#endif /* USE_ED25519 */ +#ifdef USE_ED448 + case LDNS_ED448: + *evp_key = sldns_ed4482pkey_raw(key, keylen); + if(!*evp_key) { + verbose(VERB_QUERY, "verify: " + "sldns_ed4482pkey_raw failed"); + return 0; + } + *digest_type = NULL; + break; +#endif /* USE_ED448 */ default: verbose(VERB_QUERY, "verify: unknown algorithm %d", algo); @@ -506,9 +610,18 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, char** reason) { const EVP_MD *digest_type; - EVP_MD_CTX ctx; - int res, dofree = 0; + EVP_MD_CTX* ctx; + int res, dofree = 0, docrypto_free = 0; EVP_PKEY *evp_key = NULL; + +#ifndef USE_DSA + if((algo == LDNS_DSA || algo == LDNS_DSA_NSEC3) &&(fake_dsa||fake_sha1)) + return sec_status_secure; +#endif +#ifndef USE_SHA1 + if(fake_sha1 && (algo == LDNS_DSA || algo == LDNS_DSA_NSEC3 || algo == LDNS_RSASHA1 || algo == LDNS_RSASHA1_NSEC3)) + return sec_status_secure; +#endif if(!setup_key_digest(algo, &evp_key, &digest_type, key, keylen)) { verbose(VERB_QUERY, "verify: failed to setup key"); @@ -516,6 +629,7 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, EVP_PKEY_free(evp_key); return sec_status_bogus; } +#ifdef USE_DSA /* if it is a DSA signature in bind format, convert to DER format */ if((algo == LDNS_DSA || algo == LDNS_DSA_NSEC3) && sigblock_len == 1+2*SHA_DIGEST_LENGTH) { @@ -525,10 +639,14 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, EVP_PKEY_free(evp_key); return sec_status_bogus; } - dofree = 1; + docrypto_free = 1; } +#endif +#if defined(USE_ECDSA) && defined(USE_DSA) + else +#endif #ifdef USE_ECDSA - else if(algo == LDNS_ECDSAP256SHA256 || algo == LDNS_ECDSAP384SHA384) { + if(algo == LDNS_ECDSAP256SHA256 || algo == LDNS_ECDSAP384SHA384) { /* EVP uses ASN prefix on sig, which is not in the wire data */ if(!setup_ecdsa_sig(&sigblock, &sigblock_len)) { verbose(VERB_QUERY, "verify: failed to setup ECDSA sig"); @@ -541,32 +659,77 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, #endif /* USE_ECDSA */ /* do the signature cryptography work */ - EVP_MD_CTX_init(&ctx); - if(EVP_VerifyInit(&ctx, digest_type) == 0) { - verbose(VERB_QUERY, "verify: EVP_VerifyInit failed"); +#ifdef HAVE_EVP_MD_CTX_NEW + ctx = EVP_MD_CTX_new(); +#else + ctx = (EVP_MD_CTX*)malloc(sizeof(*ctx)); + if(ctx) EVP_MD_CTX_init(ctx); +#endif + if(!ctx) { + log_err("EVP_MD_CTX_new: malloc failure"); EVP_PKEY_free(evp_key); if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); return sec_status_unchecked; } - if(EVP_VerifyUpdate(&ctx, (unsigned char*)sldns_buffer_begin(buf), +#ifndef HAVE_EVP_DIGESTVERIFY + if(EVP_DigestInit(ctx, digest_type) == 0) { + verbose(VERB_QUERY, "verify: EVP_DigestInit failed"); +#ifdef HAVE_EVP_MD_CTX_NEW + EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif + EVP_PKEY_free(evp_key); + if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); + return sec_status_unchecked; + } + if(EVP_DigestUpdate(ctx, (unsigned char*)sldns_buffer_begin(buf), (unsigned int)sldns_buffer_limit(buf)) == 0) { - verbose(VERB_QUERY, "verify: EVP_VerifyUpdate failed"); + verbose(VERB_QUERY, "verify: EVP_DigestUpdate failed"); +#ifdef HAVE_EVP_MD_CTX_NEW + EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif EVP_PKEY_free(evp_key); if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); return sec_status_unchecked; } - res = EVP_VerifyFinal(&ctx, sigblock, sigblock_len, evp_key); - if(EVP_MD_CTX_cleanup(&ctx) == 0) { - verbose(VERB_QUERY, "verify: EVP_MD_CTX_cleanup failed"); + res = EVP_VerifyFinal(ctx, sigblock, sigblock_len, evp_key); +#else /* HAVE_EVP_DIGESTVERIFY */ + if(EVP_DigestVerifyInit(ctx, NULL, digest_type, NULL, evp_key) == 0) { + verbose(VERB_QUERY, "verify: EVP_DigestVerifyInit failed"); +#ifdef HAVE_EVP_MD_CTX_NEW + EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif EVP_PKEY_free(evp_key); if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); return sec_status_unchecked; } + res = EVP_DigestVerify(ctx, sigblock, sigblock_len, + (unsigned char*)sldns_buffer_begin(buf), + sldns_buffer_limit(buf)); +#endif +#ifdef HAVE_EVP_MD_CTX_NEW + EVP_MD_CTX_destroy(ctx); +#else + EVP_MD_CTX_cleanup(ctx); + free(ctx); +#endif EVP_PKEY_free(evp_key); - if(dofree) - free(sigblock); + if(dofree) free(sigblock); + else if(docrypto_free) OPENSSL_free(sigblock); if(res == 1) { return sec_status_secure; @@ -618,13 +781,21 @@ secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, } } +void +secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char* res) +{ + (void)HASH_HashBuf(HASH_AlgSHA256, res, buf, (unsigned long)len); +} + size_t ds_digest_size_supported(int algo) { /* uses libNSS */ switch(algo) { +#ifdef USE_SHA1 case LDNS_SHA1: return SHA1_LENGTH; +#endif #ifdef USE_SHA2 case LDNS_SHA256: return SHA256_LENGTH; @@ -646,9 +817,11 @@ secalgo_ds_digest(int algo, unsigned char* buf, size_t len, { /* uses libNSS */ switch(algo) { +#ifdef USE_SHA1 case LDNS_SHA1: return HASH_HashBuf(HASH_AlgSHA1, res, buf, len) == SECSuccess; +#endif #if defined(USE_SHA2) case LDNS_SHA256: return HASH_HashBuf(HASH_AlgSHA256, res, buf, len) @@ -676,10 +849,15 @@ dnskey_algo_id_is_supported(int id) case LDNS_RSAMD5: /* RFC 6725 deprecates RSAMD5 */ return 0; +#if defined(USE_SHA1) || defined(USE_SHA2) +#if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: +#endif +#ifdef USE_SHA1 case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: +#endif #ifdef USE_SHA2 case LDNS_RSASHA256: #endif @@ -687,6 +865,8 @@ dnskey_algo_id_is_supported(int id) case LDNS_RSASHA512: #endif return 1; +#endif /* SHA1 or SHA2 */ + #ifdef USE_ECDSA case LDNS_ECDSAP256SHA256: case LDNS_ECDSAP384SHA384: @@ -918,6 +1098,9 @@ nss_setup_key_digest(int algo, SECKEYPublicKey** pubkey, HASH_HashType* htype, */ switch(algo) { + +#if defined(USE_SHA1) || defined(USE_SHA2) +#if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: *pubkey = nss_buf2dsa(key, keylen); @@ -928,8 +1111,11 @@ nss_setup_key_digest(int algo, SECKEYPublicKey** pubkey, HASH_HashType* htype, *htype = HASH_AlgSHA1; /* no prefix for DSA verification */ break; +#endif +#ifdef USE_SHA1 case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: +#endif #ifdef USE_SHA2 case LDNS_RSASHA256: #endif @@ -956,13 +1142,22 @@ nss_setup_key_digest(int algo, SECKEYPublicKey** pubkey, HASH_HashType* htype, *prefixlen = sizeof(p_sha512); } else #endif +#ifdef USE_SHA1 { *htype = HASH_AlgSHA1; *prefix = p_sha1; *prefixlen = sizeof(p_sha1); } +#else + { + verbose(VERB_QUERY, "verify: no digest algo"); + return 0; + } +#endif break; +#endif /* SHA1 or SHA2 */ + case LDNS_RSAMD5: *pubkey = nss_buf2rsa(key, keylen); if(!*pubkey) { @@ -1044,6 +1239,7 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, return sec_status_bogus; } +#if defined(USE_DSA) && defined(USE_SHA1) /* need to convert DSA, ECDSA signatures? */ if((algo == LDNS_DSA || algo == LDNS_DSA_NSEC3)) { if(sigblock_len == 1+2*SHA1_LENGTH) { @@ -1066,6 +1262,7 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, SECITEM_FreeItem(p, PR_TRUE); } } +#endif /* USE_DSA */ /* do the signature cryptography work */ /* hash the data */ @@ -1129,11 +1326,17 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, #include "macros.h" #include "rsa.h" #include "dsa.h" +#ifdef HAVE_NETTLE_DSA_COMPAT_H +#include "dsa-compat.h" +#endif #include "asn1.h" #ifdef USE_ECDSA #include "ecdsa.h" #include "ecc-curve.h" #endif +#ifdef HAVE_NETTLE_EDDSA_H +#include "eddsa.h" +#endif static int _digest_nettle(int algo, uint8_t* buf, size_t len, @@ -1204,6 +1407,12 @@ secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, } } +void +secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char* res) +{ + _digest_nettle(SHA256_DIGEST_SIZE, (uint8_t*)buf, len, res); +} + /** * Return size of DS digest according to its hash algorithm. * @param algo: DS digest algo. @@ -1214,7 +1423,12 @@ ds_digest_size_supported(int algo) { switch(algo) { case LDNS_SHA1: +#ifdef USE_SHA1 return SHA1_DIGEST_SIZE; +#else + if(fake_sha1) return 20; + return 0; +#endif #ifdef USE_SHA2 case LDNS_SHA256: return SHA256_DIGEST_SIZE; @@ -1236,8 +1450,10 @@ secalgo_ds_digest(int algo, unsigned char* buf, size_t len, unsigned char* res) { switch(algo) { +#ifdef USE_SHA1 case LDNS_SHA1: return _digest_nettle(SHA1_DIGEST_SIZE, buf, len, res); +#endif #if defined(USE_SHA2) case LDNS_SHA256: return _digest_nettle(SHA256_DIGEST_SIZE, buf, len, res); @@ -1261,10 +1477,14 @@ dnskey_algo_id_is_supported(int id) { /* uses libnettle */ switch(id) { +#if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: +#endif +#ifdef USE_SHA1 case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: +#endif #ifdef USE_SHA2 case LDNS_RSASHA256: case LDNS_RSASHA512: @@ -1274,6 +1494,10 @@ dnskey_algo_id_is_supported(int id) case LDNS_ECDSAP384SHA384: #endif return 1; +#ifdef USE_ED25519 + case LDNS_ED25519: + return 1; +#endif case LDNS_RSAMD5: /* RFC 6725 deprecates RSAMD5 */ case LDNS_ECC_GOST: default: @@ -1281,12 +1505,13 @@ dnskey_algo_id_is_supported(int id) } } +#if defined(USE_DSA) && defined(USE_SHA1) static char * _verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, unsigned int sigblock_len, unsigned char* key, unsigned int keylen) { uint8_t digest[SHA1_DIGEST_SIZE]; - uint8_t key_t; + uint8_t key_t_value; int res = 0; size_t offset; struct dsa_public_key pubkey; @@ -1325,8 +1550,8 @@ _verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, } /* Validate T values constraints - RFC 2536 sec. 2 & sec. 3 */ - key_t = key[0]; - if (key_t > 8) { + key_t_value = key[0]; + if (key_t_value > 8) { return "invalid T value in DSA pubkey"; } @@ -1337,9 +1562,9 @@ _verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, expected_len = 1 + /* T */ 20 + /* Q */ - (64 + key_t*8) + /* P */ - (64 + key_t*8) + /* G */ - (64 + key_t*8); /* Y */ + (64 + key_t_value*8) + /* P */ + (64 + key_t_value*8) + /* G */ + (64 + key_t_value*8); /* Y */ if (keylen != expected_len ) { return "invalid DSA pubkey length"; } @@ -1349,11 +1574,11 @@ _verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, offset = 1; nettle_mpz_set_str_256_u(pubkey.q, 20, key+offset); offset += 20; - nettle_mpz_set_str_256_u(pubkey.p, (64 + key_t*8), key+offset); - offset += (64 + key_t*8); - nettle_mpz_set_str_256_u(pubkey.g, (64 + key_t*8), key+offset); - offset += (64 + key_t*8); - nettle_mpz_set_str_256_u(pubkey.y, (64 + key_t*8), key+offset); + nettle_mpz_set_str_256_u(pubkey.p, (64 + key_t_value*8), key+offset); + offset += (64 + key_t_value*8); + nettle_mpz_set_str_256_u(pubkey.g, (64 + key_t_value*8), key+offset); + offset += (64 + key_t_value*8); + nettle_mpz_set_str_256_u(pubkey.y, (64 + key_t_value*8), key+offset); /* Digest content of "buf" and verify its DSA signature in "sigblock"*/ res = _digest_nettle(SHA1_DIGEST_SIZE, (unsigned char*)sldns_buffer_begin(buf), @@ -1368,6 +1593,7 @@ _verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock, else return NULL; } +#endif /* USE_DSA */ static char * _verify_nettle_rsa(sldns_buffer* buf, unsigned int digest_size, char* sigblock, @@ -1513,6 +1739,30 @@ _verify_nettle_ecdsa(sldns_buffer* buf, unsigned int digest_size, unsigned char* } #endif +#ifdef USE_ED25519 +static char * +_verify_nettle_ed25519(sldns_buffer* buf, unsigned char* sigblock, + unsigned int sigblock_len, unsigned char* key, unsigned int keylen) +{ + int res = 0; + + if(sigblock_len != ED25519_SIGNATURE_SIZE) { + return "wrong ED25519 signature length"; + } + if(keylen != ED25519_KEY_SIZE) { + return "wrong ED25519 key length"; + } + + res = ed25519_sha512_verify((uint8_t*)key, sldns_buffer_limit(buf), + sldns_buffer_begin(buf), (uint8_t*)sigblock); + + if (!res) + return "ED25519 signature verification failed"; + else + return NULL; +} +#endif + /** * Check a canonical sig+rrset and signature against a dnskey * @param buf: buffer with data to verify, the first rrsig part and the @@ -1539,6 +1789,7 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, } switch(algo) { +#if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: *reason = _verify_nettle_dsa(buf, sigblock, sigblock_len, key, keylen); @@ -1546,13 +1797,20 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, return sec_status_bogus; else return sec_status_secure; +#endif /* USE_DSA */ +#ifdef USE_SHA1 case LDNS_RSASHA1: case LDNS_RSASHA1_NSEC3: digest_size = (digest_size ? digest_size : SHA1_DIGEST_SIZE); +#endif + /* double fallthrough annotation to please gcc parser */ + /* fallthrough */ #ifdef USE_SHA2 + /* fallthrough */ case LDNS_RSASHA256: digest_size = (digest_size ? digest_size : SHA256_DIGEST_SIZE); + /* fallthrough */ case LDNS_RSASHA512: digest_size = (digest_size ? digest_size : SHA512_DIGEST_SIZE); @@ -1567,6 +1825,7 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, #ifdef USE_ECDSA case LDNS_ECDSAP256SHA256: digest_size = (digest_size ? digest_size : SHA256_DIGEST_SIZE); + /* fallthrough */ case LDNS_ECDSAP384SHA384: digest_size = (digest_size ? digest_size : SHA384_DIGEST_SIZE); *reason = _verify_nettle_ecdsa(buf, digest_size, sigblock, @@ -1575,6 +1834,15 @@ verify_canonrrset(sldns_buffer* buf, int algo, unsigned char* sigblock, return sec_status_bogus; else return sec_status_secure; +#endif +#ifdef USE_ED25519 + case LDNS_ED25519: + *reason = _verify_nettle_ed25519(buf, sigblock, sigblock_len, + key, keylen); + if (*reason != NULL) + return sec_status_bogus; + else + return sec_status_secure; #endif case LDNS_RSAMD5: case LDNS_ECC_GOST: diff --git a/external/unbound/validator/val_secalgo.h b/external/unbound/validator/val_secalgo.h index 589f1f1..52aaeb9 100644 --- a/external/unbound/validator/val_secalgo.h +++ b/external/unbound/validator/val_secalgo.h @@ -59,6 +59,14 @@ size_t nsec3_hash_algo_size_supported(int id); int secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len, unsigned char* res); +/** + * Calculate the sha256 hash for the data buffer into the result. + * @param buf: buffer to digest. + * @param len: length of the buffer to digest. + * @param res: result is stored here (space 256/8 bytes). + */ +void secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char* res); + /** * Return size of DS digest according to its hash algorithm. * @param algo: DS digest algo. diff --git a/external/unbound/validator/val_sigcrypt.c b/external/unbound/validator/val_sigcrypt.c index 1dd07b4..cfa3ead 100644 --- a/external/unbound/validator/val_sigcrypt.c +++ b/external/unbound/validator/val_sigcrypt.c @@ -51,6 +51,7 @@ #include "util/module.h" #include "util/net_help.h" #include "util/regional.h" +#include "util/config_file.h" #include "sldns/keyraw.h" #include "sldns/sbuffer.h" #include "sldns/parseutil.h" @@ -318,12 +319,17 @@ int ds_digest_match_dnskey(struct module_env* env, size_t dslen; uint8_t* digest; /* generated digest */ size_t digestlen = ds_digest_size_algo(ds_rrset, ds_idx); - + if(digestlen == 0) { verbose(VERB_QUERY, "DS fail: not supported, or DS RR " "format error"); return 0; /* not supported, or DS RR format error */ } +#ifndef USE_SHA1 + if(fake_sha1 && ds_get_digest_algo(ds_rrset, ds_idx)==LDNS_SHA1) + return 1; +#endif + /* check digest length in DS with length from hash function */ ds_get_sigdata(ds_rrset, ds_idx, &ds, &dslen); if(!ds || dslen != digestlen) { @@ -479,11 +485,12 @@ int algo_needs_missing(struct algo_needs* n) enum sec_status dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, - uint8_t* sigalg, char** reason) + uint8_t* sigalg, char** reason, sldns_pkt_section section, + struct module_qstate* qstate) { enum sec_status sec; size_t i, num; - rbtree_t* sortree = NULL; + rbtree_type* sortree = NULL; /* make sure that for all DNSKEY algorithms there are valid sigs */ struct algo_needs needs; int alg; @@ -506,7 +513,7 @@ dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve, } for(i=0; inow, rrset, - dnskey, i, &sortree, reason); + dnskey, i, &sortree, reason, section, qstate); /* see which algorithm has been fixed up */ if(sec == sec_status_secure) { if(!sigalg) @@ -547,11 +554,12 @@ void algo_needs_reason(struct module_env* env, int alg, char** reason, char* s) enum sec_status dnskey_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, - size_t dnskey_idx, char** reason) + size_t dnskey_idx, char** reason, sldns_pkt_section section, + struct module_qstate* qstate) { enum sec_status sec; size_t i, num, numchecked = 0; - rbtree_t* sortree = NULL; + rbtree_type* sortree = NULL; int buf_canon = 0; uint16_t tag = dnskey_calc_keytag(dnskey, dnskey_idx); int algo = dnskey_get_algo(dnskey, dnskey_idx); @@ -571,7 +579,8 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve, buf_canon = 0; sec = dnskey_verify_rrset_sig(env->scratch, env->scratch_buffer, ve, *env->now, rrset, - dnskey, dnskey_idx, i, &sortree, &buf_canon, reason); + dnskey, dnskey_idx, i, &sortree, &buf_canon, reason, + section, qstate); if(sec == sec_status_secure) return sec; numchecked ++; @@ -585,7 +594,8 @@ enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve, time_t now, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, size_t sig_idx, - struct rbtree_t** sortree, char** reason) + struct rbtree_type** sortree, char** reason, sldns_pkt_section section, + struct module_qstate* qstate) { /* find matching keys and check them */ enum sec_status sec = sec_status_bogus; @@ -610,7 +620,7 @@ dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve, /* see if key verifies */ sec = dnskey_verify_rrset_sig(env->scratch, env->scratch_buffer, ve, now, rrset, dnskey, i, - sig_idx, sortree, &buf_canon, reason); + sig_idx, sortree, &buf_canon, reason, section, qstate); if(sec == sec_status_secure) return sec; } @@ -627,7 +637,7 @@ dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve, */ struct canon_rr { /** rbtree node, key is this structure */ - rbnode_t node; + rbnode_type node; /** rrset the RR is in */ struct ub_packed_rrset_key* rrset; /** which RR in the rrset */ @@ -885,7 +895,7 @@ canonical_tree_compare(const void* k1, const void* k2) */ static void canonical_sort(struct ub_packed_rrset_key* rrset, struct packed_rrset_data* d, - rbtree_t* sortree, struct canon_rr* rrs) + rbtree_type* sortree, struct canon_rr* rrs) { size_t i; /* insert into rbtree to sort and detect duplicates */ @@ -900,7 +910,7 @@ canonical_sort(struct ub_packed_rrset_key* rrset, struct packed_rrset_data* d, } /** - * Inser canonical owner name into buffer. + * Insert canonical owner name into buffer. * @param buf: buffer to insert into at current position. * @param k: rrset with its owner name. * @param sig: signature with signer name and label count. @@ -1043,7 +1053,7 @@ canonicalize_rdata(sldns_buffer* buf, struct ub_packed_rrset_key* rrset, int rrset_canonical_equal(struct regional* region, struct ub_packed_rrset_key* k1, struct ub_packed_rrset_key* k2) { - struct rbtree_t sortree1, sortree2; + struct rbtree_type sortree1, sortree2; struct canon_rr *rrs1, *rrs2, *p1, *p2; struct packed_rrset_data* d1=(struct packed_rrset_data*)k1->entry.data; struct packed_rrset_data* d2=(struct packed_rrset_data*)k2->entry.data; @@ -1115,12 +1125,15 @@ int rrset_canonical_equal(struct regional* region, * signer name length. * @param sortree: if NULL is passed a new sorted rrset tree is built. * Otherwise it is reused. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return false on alloc error. */ static int rrset_canonical(struct regional* region, sldns_buffer* buf, struct ub_packed_rrset_key* k, uint8_t* sig, size_t siglen, - struct rbtree_t** sortree) + struct rbtree_type** sortree, sldns_pkt_section section, + struct module_qstate* qstate) { struct packed_rrset_data* d = (struct packed_rrset_data*)k->entry.data; uint8_t* can_owner = NULL; @@ -1129,8 +1142,8 @@ rrset_canonical(struct regional* region, sldns_buffer* buf, struct canon_rr* rrs; if(!*sortree) { - *sortree = (struct rbtree_t*)regional_alloc(region, - sizeof(rbtree_t)); + *sortree = (struct rbtree_type*)regional_alloc(region, + sizeof(rbtree_type)); if(!*sortree) return 0; if(d->count > RR_COUNT_MAX) @@ -1169,6 +1182,20 @@ rrset_canonical(struct regional* region, sldns_buffer* buf, canonicalize_rdata(buf, k, d->rr_len[walk->rr_idx]); } sldns_buffer_flip(buf); + + /* Replace RR owner with canonical owner for NSEC records in authority + * section, to prevent that a wildcard synthesized NSEC can be used in + * the non-existence proves. */ + if(ntohs(k->rk.type) == LDNS_RR_TYPE_NSEC && + section == LDNS_SECTION_AUTHORITY) { + k->rk.dname = regional_alloc_init(qstate->region, can_owner, + can_owner_len); + if(!k->rk.dname) + return 0; + k->rk.dname_len = can_owner_len; + } + + return 1; } @@ -1198,13 +1225,51 @@ sigdate_error(const char* str, int32_t expi, int32_t incep, int32_t now) (unsigned)incep, (unsigned)now); } +/** RFC 1918 comparison, uses unsigned integers, and tries to avoid + * compiler optimization (eg. by avoiding a-b<0 comparisons), + * this routine matches compare_serial(), for SOA serial number checks */ +static int +compare_1918(uint32_t a, uint32_t b) +{ + /* for 32 bit values */ + const uint32_t cutoff = ((uint32_t) 1 << (32 - 1)); + + if (a == b) { + return 0; + } else if ((a < b && b - a < cutoff) || (a > b && a - b > cutoff)) { + return -1; + } else { + return 1; + } +} + +/** if we know that b is larger than a, return the difference between them, + * that is the distance between them. in RFC1918 arith */ +static uint32_t +subtract_1918(uint32_t a, uint32_t b) +{ + /* for 32 bit values */ + const uint32_t cutoff = ((uint32_t) 1 << (32 - 1)); + + if(a == b) + return 0; + if(a < b && b - a < cutoff) { + return b-a; + } + if(a > b && a - b > cutoff) { + return ((uint32_t)0xffffffff) - (a-b-1); + } + /* wrong case, b smaller than a */ + return 0; +} + /** check rrsig dates */ static int check_dates(struct val_env* ve, uint32_t unow, uint8_t* expi_p, uint8_t* incep_p, char** reason) { /* read out the dates */ - int32_t expi, incep, now; + uint32_t expi, incep, now; memmove(&expi, expi_p, sizeof(expi)); memmove(&incep, incep_p, sizeof(incep)); expi = ntohl(expi); @@ -1218,21 +1283,21 @@ check_dates(struct val_env* ve, uint32_t unow, } now = ve->date_override; verbose(VERB_ALGO, "date override option %d", (int)now); - } else now = (int32_t)unow; + } else now = unow; /* check them */ - if(incep - expi > 0) { + if(compare_1918(incep, expi) > 0) { sigdate_error("verify: inception after expiration, " "signature bad", expi, incep, now); *reason = "signature inception after expiration"; return 0; } - if(incep - now > 0) { + if(compare_1918(incep, now) > 0) { /* within skew ? (calc here to avoid calculation normally) */ - int32_t skew = (expi-incep)/10; - if(skew < ve->skew_min) skew = ve->skew_min; - if(skew > ve->skew_max) skew = ve->skew_max; - if(incep - now > skew) { + uint32_t skew = subtract_1918(incep, expi)/10; + if(skew < (uint32_t)ve->skew_min) skew = ve->skew_min; + if(skew > (uint32_t)ve->skew_max) skew = ve->skew_max; + if(subtract_1918(now, incep) > skew) { sigdate_error("verify: signature bad, current time is" " before inception date", expi, incep, now); *reason = "signature before inception date"; @@ -1241,11 +1306,11 @@ check_dates(struct val_env* ve, uint32_t unow, sigdate_error("verify warning suspicious signature inception " " or bad local clock", expi, incep, now); } - if(now - expi > 0) { - int32_t skew = (expi-incep)/10; - if(skew < ve->skew_min) skew = ve->skew_min; - if(skew > ve->skew_max) skew = ve->skew_max; - if(now - expi > skew) { + if(compare_1918(now, expi) > 0) { + uint32_t skew = subtract_1918(incep, expi)/10; + if(skew < (uint32_t)ve->skew_min) skew = ve->skew_min; + if(skew > (uint32_t)ve->skew_max) skew = ve->skew_max; + if(subtract_1918(expi, now) > skew) { sigdate_error("verify: signature expired", expi, incep, now); *reason = "signature expired"; @@ -1283,15 +1348,23 @@ adjust_ttl(struct val_env* ve, uint32_t unow, /* so now: * d->ttl: rrset ttl read from message or cache. May be reduced * origttl: original TTL from signature, authoritative TTL max. + * MIN_TTL: minimum TTL from config. * expittl: TTL until the signature expires. * - * Use the smallest of these. + * Use the smallest of these, but don't let origttl set the TTL + * below the minimum. */ - if(d->ttl > (time_t)origttl) { - verbose(VERB_QUERY, "rrset TTL larger than original TTL," - " adjusting TTL downwards"); + if(MIN_TTL > (time_t)origttl && d->ttl > MIN_TTL) { + verbose(VERB_QUERY, "rrset TTL larger than original and minimum" + " TTL, adjusting TTL downwards to minimum ttl"); + d->ttl = MIN_TTL; + } + else if(MIN_TTL <= origttl && d->ttl > (time_t)origttl) { + verbose(VERB_QUERY, "rrset TTL larger than original TTL, " + "adjusting TTL downwards to original ttl"); d->ttl = origttl; } + if(expittl > 0 && d->ttl > (time_t)expittl) { verbose(VERB_ALGO, "rrset TTL larger than sig expiration ttl," " adjusting TTL downwards"); @@ -1304,7 +1377,8 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf, struct val_env* ve, time_t now, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, size_t dnskey_idx, size_t sig_idx, - struct rbtree_t** sortree, int* buf_canon, char** reason) + struct rbtree_type** sortree, int* buf_canon, char** reason, + sldns_pkt_section section, struct module_qstate* qstate) { enum sec_status sec; uint8_t* sig; /* RRSIG rdata */ @@ -1403,7 +1477,7 @@ dnskey_verify_rrset_sig(struct regional* region, sldns_buffer* buf, /* create rrset canonical format in buffer, ready for * signature */ if(!rrset_canonical(region, buf, rrset, sig+2, - 18 + signer_len, sortree)) { + 18 + signer_len, sortree, section, qstate)) { log_err("verify: failed due to alloc error"); return sec_status_unchecked; } diff --git a/external/unbound/validator/val_sigcrypt.h b/external/unbound/validator/val_sigcrypt.h index 68aa9a4..755a1d6 100644 --- a/external/unbound/validator/val_sigcrypt.h +++ b/external/unbound/validator/val_sigcrypt.h @@ -44,10 +44,12 @@ #ifndef VALIDATOR_VAL_SIGCRYPT_H #define VALIDATOR_VAL_SIGCRYPT_H #include "util/data/packed_rrset.h" +#include "sldns/pkthdr.h" struct val_env; struct module_env; +struct module_qstate; struct ub_packed_rrset_key; -struct rbtree_t; +struct rbtree_type; struct regional; struct sldns_buffer; @@ -237,13 +239,16 @@ uint16_t dnskey_get_flags(struct ub_packed_rrset_key* k, size_t idx); * @param sigalg: if nonNULL provide downgrade protection otherwise one * algorithm is enough. * @param reason: if bogus, a string returned, fixed or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return SECURE if one key in the set verifies one rrsig. * UNCHECKED on allocation errors, unsupported algorithms, malformed data, * and BOGUS on verification failures (no keys match any signatures). */ enum sec_status dnskeyset_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, - struct ub_packed_rrset_key* dnskey, uint8_t* sigalg, char** reason); + struct ub_packed_rrset_key* dnskey, uint8_t* sigalg, char** reason, + sldns_pkt_section section, struct module_qstate* qstate); /** * verify rrset against one specific dnskey (from rrset) @@ -253,12 +258,15 @@ enum sec_status dnskeyset_verify_rrset(struct module_env* env, * @param dnskey: DNSKEY rrset, keyset. * @param dnskey_idx: which key from the rrset to try. * @param reason: if bogus, a string returned, fixed or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return secure if *this* key signs any of the signatures on rrset. * unchecked on error or and bogus on bad signature. */ enum sec_status dnskey_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, - struct ub_packed_rrset_key* dnskey, size_t dnskey_idx, char** reason); + struct ub_packed_rrset_key* dnskey, size_t dnskey_idx, char** reason, + sldns_pkt_section section, struct module_qstate* qstate); /** * verify rrset, with dnskey rrset, for a specific rrsig in rrset @@ -271,13 +279,16 @@ enum sec_status dnskey_verify_rrset(struct module_env* env, * @param sortree: reused sorted order. Stored in region. Pass NULL at start, * and for a new rrset. * @param reason: if bogus, a string returned, fixed or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return secure if any key signs *this* signature. bogus if no key signs it, * or unchecked on error. */ enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env, struct val_env* ve, time_t now, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, size_t sig_idx, - struct rbtree_t** sortree, char** reason); + struct rbtree_type** sortree, char** reason, sldns_pkt_section section, + struct module_qstate* qstate); /** * verify rrset, with specific dnskey(from set), for a specific rrsig @@ -295,6 +306,8 @@ enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env, * pass false at start. pass old value only for same rrset and same * signature (but perhaps different key) for reuse. * @param reason: if bogus, a string returned, fixed or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return secure if this key signs this signature. unchecked on error or * bogus if it did not validate. */ @@ -302,7 +315,8 @@ enum sec_status dnskey_verify_rrset_sig(struct regional* region, struct sldns_buffer* buf, struct val_env* ve, time_t now, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey, size_t dnskey_idx, size_t sig_idx, - struct rbtree_t** sortree, int* buf_canon, char** reason); + struct rbtree_type** sortree, int* buf_canon, char** reason, + sldns_pkt_section section, struct module_qstate* qstate); /** * canonical compare for two tree entries diff --git a/external/unbound/validator/val_utils.c b/external/unbound/validator/val_utils.c index 475b0c9..2f36fcc 100644 --- a/external/unbound/validator/val_utils.c +++ b/external/unbound/validator/val_utils.c @@ -54,6 +54,9 @@ #include "util/net_help.h" #include "util/module.h" #include "util/regional.h" +#include "util/config_file.h" +#include "sldns/wire2str.h" +#include "sldns/parseutil.h" enum val_classification val_classify_response(uint16_t query_flags, struct query_info* origqinf, @@ -217,7 +220,7 @@ val_find_signer(enum val_classification subtype, struct query_info* qinf, { size_t i; - if(subtype == VAL_CLASS_POSITIVE || subtype == VAL_CLASS_ANY) { + if(subtype == VAL_CLASS_POSITIVE) { /* check for the answer rrset */ for(i=skip; ian_numrrsets; i++) { if(query_dname_compare(qinf->qname, @@ -269,6 +272,29 @@ val_find_signer(enum val_classification subtype, struct query_info* qinf, signer_name, signer_len, &matchcount); } } + } else if(subtype == VAL_CLASS_ANY) { + /* check for one of the answer rrset that has signatures, + * or potentially a DNAME is in use with a different qname */ + for(i=skip; ian_numrrsets; i++) { + if(query_dname_compare(qinf->qname, + rep->rrsets[i]->rk.dname) == 0) { + val_find_rrset_signer(rep->rrsets[i], + signer_name, signer_len); + if(*signer_name) + return; + } + } + /* no answer RRSIGs with qname, try a DNAME */ + if(skip < rep->an_numrrsets && + ntohs(rep->rrsets[skip]->rk.type) == + LDNS_RR_TYPE_DNAME) { + val_find_rrset_signer(rep->rrsets[skip], + signer_name, signer_len); + if(*signer_name) + return; + } + *signer_name = NULL; + *signer_len = 0; } else if(subtype == VAL_CLASS_REFERRAL) { /* find keys for the item at skip */ if(skip < rep->rrset_count) { @@ -309,7 +335,8 @@ rrset_get_ttl(struct ub_packed_rrset_key* rrset) enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* keys, - uint8_t* sigalg, char** reason) + uint8_t* sigalg, char** reason, sldns_pkt_section section, + struct module_qstate* qstate) { enum sec_status sec; struct packed_rrset_data* d = (struct packed_rrset_data*)rrset-> @@ -331,7 +358,8 @@ val_verify_rrset(struct module_env* env, struct val_env* ve, } log_nametypeclass(VERB_ALGO, "verify rrset", rrset->rk.dname, ntohs(rrset->rk.type), ntohs(rrset->rk.rrset_class)); - sec = dnskeyset_verify_rrset(env, ve, rrset, keys, sigalg, reason); + sec = dnskeyset_verify_rrset(env, ve, rrset, keys, sigalg, reason, + section, qstate); verbose(VERB_ALGO, "verify result: %s", sec_status_to_string(sec)); regional_free_all(env->scratch); @@ -364,7 +392,7 @@ val_verify_rrset(struct module_env* env, struct val_env* ve, enum sec_status val_verify_rrset_entry(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, struct key_entry_key* kkey, - char** reason) + char** reason, sldns_pkt_section section, struct module_qstate* qstate) { /* temporary dnskey rrset-key */ struct ub_packed_rrset_key dnskey; @@ -377,7 +405,8 @@ val_verify_rrset_entry(struct module_env* env, struct val_env* ve, dnskey.rk.dname_len = kkey->namelen; dnskey.entry.key = &dnskey; dnskey.entry.data = kd->rrset_data; - sec = val_verify_rrset(env, ve, rrset, &dnskey, kd->algo, reason); + sec = val_verify_rrset(env, ve, rrset, &dnskey, kd->algo, reason, + section, qstate); return sec; } @@ -385,7 +414,8 @@ val_verify_rrset_entry(struct module_env* env, struct val_env* ve, static enum sec_status verify_dnskeys_with_ds_rr(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, - struct ub_packed_rrset_key* ds_rrset, size_t ds_idx, char** reason) + struct ub_packed_rrset_key* ds_rrset, size_t ds_idx, char** reason, + struct module_qstate* qstate) { enum sec_status sec = sec_status_bogus; size_t i, num, numchecked = 0, numhashok = 0; @@ -416,7 +446,7 @@ verify_dnskeys_with_ds_rr(struct module_env* env, struct val_env* ve, /* Otherwise, we have a match! Make sure that the DNSKEY * verifies *with this key* */ sec = dnskey_verify_rrset(env, ve, dnskey_rrset, - dnskey_rrset, i, reason); + dnskey_rrset, i, reason, LDNS_SECTION_ANSWER, qstate); if(sec == sec_status_secure) { return sec; } @@ -452,7 +482,8 @@ int val_favorite_ds_algo(struct ub_packed_rrset_key* ds_rrset) enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, - struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason) + struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason, + struct module_qstate* qstate) { /* as long as this is false, we can consider this DS rrset to be * equivalent to no DS rrset. */ @@ -470,16 +501,21 @@ val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve, return sec_status_bogus; } - digest_algo = val_favorite_ds_algo(ds_rrset); - if(sigalg) + if(sigalg) { + /* harden against algo downgrade is enabled */ + digest_algo = val_favorite_ds_algo(ds_rrset); algo_needs_init_ds(&needs, ds_rrset, digest_algo, sigalg); + } else { + /* accept any key algo, any digest algo */ + digest_algo = -1; + } num = rrset_get_count(ds_rrset); for(i=0; iname); + else snprintf(herr, sizeof(herr), "%d", + (int)ds_get_digest_algo(ds_rrset, i)); + lt = sldns_lookup_by_id(sldns_algorithms, + (int)ds_get_key_algo(ds_rrset, i)); + if(lt) snprintf(aerr, sizeof(aerr), "%s", lt->name); + else snprintf(aerr, sizeof(aerr), "%d", + (int)ds_get_key_algo(ds_rrset, i)); + verbose(VERB_ALGO, "DS unsupported, hash %s %s, " + "key algorithm %s %s", herr, + (ds_digest_algo_is_supported(ds_rrset, 0)? + "(supported)":"(unsupported)"), aerr, + (ds_key_algo_is_supported(ds_rrset, 0)? + "(supported)":"(unsupported)")); + } return 0; } @@ -704,7 +767,8 @@ rrsig_get_labcount(struct packed_rrset_data* d, size_t sig) } int -val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc) +val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc, + size_t* wc_len) { struct packed_rrset_data* d = (struct packed_rrset_data*)rrset-> entry.data; @@ -737,6 +801,7 @@ val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc) if(labdiff > 0) { *wc = wn; dname_remove_labels(wc, &wl, labdiff); + *wc_len = wl; return 1; } return 1; @@ -859,7 +924,7 @@ void val_reply_remove_auth(struct reply_info* rep, size_t index) } void -val_check_nonsecure(struct val_env* ve, struct reply_info* rep) +val_check_nonsecure(struct module_env* env, struct reply_info* rep) { size_t i; /* authority */ @@ -876,17 +941,24 @@ val_check_nonsecure(struct val_env* ve, struct reply_info* rep) * Therefore the message is bogus. */ - /* check if authority consists of only an NS record + /* check if authority has an NS record * which is bad, and there is an answer section with * data. In that case, delete NS and additional to * be lenient and make a minimal response */ - if(rep->an_numrrsets != 0 && rep->ns_numrrsets == 1 && + if(rep->an_numrrsets != 0 && ntohs(rep->rrsets[i]->rk.type) == LDNS_RR_TYPE_NS) { verbose(VERB_ALGO, "truncate to minimal"); - rep->ns_numrrsets = 0; rep->ar_numrrsets = 0; - rep->rrset_count = rep->an_numrrsets; + rep->rrset_count = rep->an_numrrsets + + rep->ns_numrrsets; + /* remove this unneeded authority rrset */ + memmove(rep->rrsets+i, rep->rrsets+i+1, + sizeof(struct ub_packed_rrset_key*)* + (rep->rrset_count - i - 1)); + rep->ns_numrrsets--; + rep->rrset_count--; + i--; return; } @@ -900,7 +972,7 @@ val_check_nonsecure(struct val_env* ve, struct reply_info* rep) } } /* additional */ - if(!ve->clean_additional) + if(!env->cfg->val_clean_additional) return; for(i=rep->an_numrrsets+rep->ns_numrrsets; irrset_count; i++) { if(((struct packed_rrset_data*)rep->rrsets[i]->entry.data) @@ -1088,8 +1160,9 @@ val_find_DS(struct module_env* env, uint8_t* nm, size_t nmlen, uint16_t c, qinfo.qname_len = nmlen; qinfo.qtype = LDNS_RR_TYPE_DS; qinfo.qclass = c; + qinfo.local_alias = NULL; /* do not add SOA to reply message, it is going to be used internal */ msg = val_neg_getmsg(env->neg_cache, &qinfo, region, env->rrset_cache, - env->scratch_buffer, *env->now, 0, topname); + env->scratch_buffer, *env->now, 0, topname, env->cfg); return msg; } diff --git a/external/unbound/validator/val_utils.h b/external/unbound/validator/val_utils.h index 051824a..6e9867f 100644 --- a/external/unbound/validator/val_utils.h +++ b/external/unbound/validator/val_utils.h @@ -42,10 +42,12 @@ #ifndef VALIDATOR_VAL_UTILS_H #define VALIDATOR_VAL_UTILS_H #include "util/data/packed_rrset.h" +#include "sldns/pkthdr.h" struct query_info; struct reply_info; struct val_env; struct module_env; +struct module_qstate; struct ub_packed_rrset_key; struct key_entry_key; struct regional; @@ -70,7 +72,7 @@ enum val_classification { /** A NXDOMAIN response. */ VAL_CLASS_NAMEERROR, /** A CNAME/DNAME chain, and the offset is at the end of it, - * but there is no answer here, it can be NAMERROR or NODATA. */ + * but there is no answer here, it can be NAMEERROR or NODATA. */ VAL_CLASS_CNAMENOANSWER, /** A referral, from cache with a nonRD query. */ VAL_CLASS_REFERRAL, @@ -120,11 +122,14 @@ void val_find_signer(enum val_classification subtype, * @param sigalg: if nonNULL provide downgrade protection otherwise one * algorithm is enough. Algo list is constructed in here. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return security status of verification. */ enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* keys, - uint8_t* sigalg, char** reason); + uint8_t* sigalg, char** reason, sldns_pkt_section section, + struct module_qstate* qstate); /** * Verify RRset with keys from a keyset. @@ -133,11 +138,14 @@ enum sec_status val_verify_rrset(struct module_env* env, struct val_env* ve, * @param rrset: what to verify * @param kkey: key_entry to verify with. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param section: section of packet where this rrset comes from. + * @param qstate: qstate with region. * @return security status of verification. */ enum sec_status val_verify_rrset_entry(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* rrset, - struct key_entry_key* kkey, char** reason); + struct key_entry_key* kkey, char** reason, sldns_pkt_section section, + struct module_qstate* qstate); /** * Verify DNSKEYs with DS rrset. Like val_verify_new_DNSKEYs but @@ -150,13 +158,15 @@ enum sec_status val_verify_rrset_entry(struct module_env* env, * algorithm is enough. The list of signalled algorithms is returned, * must have enough space for ALGO_NEEDS_MAX+1. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param qstate: qstate with region. * @return: sec_status_secure if a DS matches. * sec_status_insecure if end of trust (i.e., unknown algorithms). * sec_status_bogus if it fails. */ enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, - struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason); + struct ub_packed_rrset_key* ds_rrset, uint8_t* sigalg, char** reason, + struct module_qstate* qstate); /** * Verify DNSKEYs with DS and DNSKEY rrset. Like val_verify_DNSKEY_with_DS @@ -170,6 +180,7 @@ enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env, * algorithm is enough. The list of signalled algorithms is returned, * must have enough space for ALGO_NEEDS_MAX+1. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param qstate: qstate with region. * @return: sec_status_secure if a DS matches. * sec_status_insecure if end of trust (i.e., unknown algorithms). * sec_status_bogus if it fails. @@ -177,7 +188,8 @@ enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env, enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, struct ub_packed_rrset_key* ta_ds, - struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason); + struct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason, + struct module_qstate* qstate); /** * Verify new DNSKEYs with DS rrset. The DS contains hash values that should @@ -192,6 +204,7 @@ enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env, * @param downprot: if true provide downgrade protection otherwise one * algorithm is enough. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param qstate: qstate with region. * @return a KeyEntry. This will either contain the now trusted * dnskey_rrset, a "null" key entry indicating that this DS * rrset/DNSKEY pair indicate an secure end to the island of trust @@ -205,7 +218,8 @@ enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env, struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region, struct module_env* env, struct val_env* ve, struct ub_packed_rrset_key* dnskey_rrset, - struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason); + struct ub_packed_rrset_key* ds_rrset, int downprot, char** reason, + struct module_qstate* qstate); /** @@ -220,6 +234,7 @@ struct key_entry_key* val_verify_new_DNSKEYs(struct regional* region, * @param downprot: if true provide downgrade protection otherwise one * algorithm is enough. * @param reason: reason of failure. Fixed string or alloced in scratch. + * @param qstate: qstate with region. * @return a KeyEntry. This will either contain the now trusted * dnskey_rrset, a "null" key entry indicating that this DS * rrset/DNSKEY pair indicate an secure end to the island of trust @@ -235,7 +250,7 @@ struct key_entry_key* val_verify_new_DNSKEYs_with_ta(struct regional* region, struct ub_packed_rrset_key* dnskey_rrset, struct ub_packed_rrset_key* ta_ds_rrset, struct ub_packed_rrset_key* ta_dnskey_rrset, - int downprot, char** reason); + int downprot, char** reason, struct module_qstate* qstate); /** * Determine if DS rrset is usable for validator or not. @@ -252,10 +267,11 @@ int val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset); * the result of a wildcard expansion. If so, return the name of the * generating wildcard. * - * @param rrset The rrset to chedck. + * @param rrset The rrset to check. * @param wc: the wildcard name, if the rrset was synthesized from a wildcard. * unchanged if not. The wildcard name, without "*." in front, is * returned. This is a pointer into the rrset owner name. + * @param wc_len: the length of the returned wildcard name. * @return false if the signatures are inconsistent in indicating the * wildcard status; possible spoofing of wildcard response for other * responses is being tried. We lost the status which rrsig was verified @@ -264,7 +280,8 @@ int val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset); * of service; but in that you could also have removed the real * signature anyway. */ -int val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc); +int val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t** wc, + size_t* wc_len); /** * Chase the cname to the next query name. @@ -306,10 +323,10 @@ void val_reply_remove_auth(struct reply_info* rep, size_t index); * So that unsigned data does not get let through to clients, when we have * found the data to be secure. * - * @param ve: validator environment with cleaning options. + * @param env: environment with cleaning options. * @param rep: reply to dump all nonsecure stuff out of. */ -void val_check_nonsecure(struct val_env* ve, struct reply_info* rep); +void val_check_nonsecure(struct module_env* env, struct reply_info* rep); /** * Mark all unchecked rrset entries not below a trust anchor as indeterminate. diff --git a/external/unbound/validator/validator.c b/external/unbound/validator/validator.c index db4383b..5777b29 100644 --- a/external/unbound/validator/validator.c +++ b/external/unbound/validator/validator.c @@ -40,6 +40,7 @@ * According to RFC 4034. */ #include "config.h" +#include #include "validator/validator.h" #include "validator/val_anchor.h" #include "validator/val_kcache.h" @@ -51,6 +52,7 @@ #include "validator/val_sigcrypt.h" #include "validator/autotrust.h" #include "services/cache/dns.h" +#include "services/cache/rrset.h" #include "util/data/dname.h" #include "util/module.h" #include "util/log.h" @@ -60,6 +62,7 @@ #include "util/fptr_wlist.h" #include "sldns/rrdef.h" #include "sldns/wire2str.h" +#include "sldns/str2wire.h" /* forward decl for cache response and normal super inform calls of a DS */ static void process_ds_response(struct module_qstate* qstate, @@ -112,8 +115,6 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, { int c; val_env->bogus_ttl = (uint32_t)cfg->bogus_ttl; - val_env->clean_additional = cfg->val_clean_additional; - val_env->permissive_mode = cfg->val_permissive_mode; if(!env->anchors) env->anchors = anchors_create(); if(!env->anchors) { @@ -156,6 +157,9 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, return 1; } +#ifdef USE_ECDSA_EVP_WORKAROUND +void ecdsa_evp_workaround_init(void); +#endif int val_init(struct module_env* env, int id) { @@ -167,14 +171,17 @@ val_init(struct module_env* env, int id) } env->modinfo[id] = (void*)val_env; env->need_to_validate = 1; - val_env->permissive_mode = 0; lock_basic_init(&val_env->bogus_lock); lock_protect(&val_env->bogus_lock, &val_env->num_rrset_bogus, sizeof(val_env->num_rrset_bogus)); +#ifdef USE_ECDSA_EVP_WORKAROUND + ecdsa_evp_workaround_init(); +#endif if(!val_apply_cfg(env, val_env, env->cfg)) { log_err("validator: could not apply configuration settings."); return 0; } + return 1; } @@ -357,43 +364,145 @@ already_validated(struct dns_msg* ret_msg) * @param qtype: query type. * @param qclass: query class. * @param flags: additional flags, such as the CD bit (BIT_CD), or 0. + * @param newq: If the subquery is newly created, it is returned, + * otherwise NULL is returned + * @param detached: true if this qstate should not attach to the subquery * @return false on alloc failure. */ static int generate_request(struct module_qstate* qstate, int id, uint8_t* name, - size_t namelen, uint16_t qtype, uint16_t qclass, uint16_t flags) + size_t namelen, uint16_t qtype, uint16_t qclass, uint16_t flags, + struct module_qstate** newq, int detached) { struct val_qstate* vq = (struct val_qstate*)qstate->minfo[id]; - struct module_qstate* newq; struct query_info ask; int valrec; ask.qname = name; ask.qname_len = namelen; ask.qtype = qtype; ask.qclass = qclass; + ask.local_alias = NULL; log_query_info(VERB_ALGO, "generate request", &ask); - fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub)); /* enable valrec flag to avoid recursion to the same validation * routine, this lookup is simply a lookup. DLVs need validation */ if(qtype == LDNS_RR_TYPE_DLV) valrec = 0; else valrec = 1; - if(!(*qstate->env->attach_sub)(qstate, &ask, - (uint16_t)(BIT_RD|flags), 0, valrec, &newq)){ - log_err("Could not generate request: out of memory"); - return 0; + if(detached) { + struct mesh_state* sub = NULL; + fptr_ok(fptr_whitelist_modenv_add_sub( + qstate->env->add_sub)); + if(!(*qstate->env->add_sub)(qstate, &ask, + (uint16_t)(BIT_RD|flags), 0, valrec, newq, &sub)){ + log_err("Could not generate request: out of memory"); + return 0; + } + } + else { + fptr_ok(fptr_whitelist_modenv_attach_sub( + qstate->env->attach_sub)); + if(!(*qstate->env->attach_sub)(qstate, &ask, + (uint16_t)(BIT_RD|flags), 0, valrec, newq)){ + log_err("Could not generate request: out of memory"); + return 0; + } } /* newq; validator does not need state created for that * query, and its a 'normal' for iterator as well */ - if(newq) { + if(*newq) { /* add our blacklist to the query blacklist */ - sock_list_merge(&newq->blacklist, newq->region, + sock_list_merge(&(*newq)->blacklist, (*newq)->region, vq->chain_blacklist); } qstate->ext_state[id] = module_wait_subquery; return 1; } +/** + * Generate, send and detach key tag signaling query. + * + * @param qstate: query state. + * @param id: module id. + * @param ta: trust anchor, locked. + * @return false on a processing error. + */ +static int +generate_keytag_query(struct module_qstate* qstate, int id, + struct trust_anchor* ta) +{ + /* 3 bytes for "_ta", 5 bytes per tag (4 bytes + "-") */ +#define MAX_LABEL_TAGS (LDNS_MAX_LABELLEN-3)/5 + size_t i, numtag; + uint16_t tags[MAX_LABEL_TAGS]; + char tagstr[LDNS_MAX_LABELLEN+1] = "_ta"; /* +1 for NULL byte */ + size_t tagstr_left = sizeof(tagstr) - strlen(tagstr); + char* tagstr_pos = tagstr + strlen(tagstr); + uint8_t dnamebuf[LDNS_MAX_DOMAINLEN+1]; /* +1 for label length byte */ + size_t dnamebuf_len = sizeof(dnamebuf); + uint8_t* keytagdname; + struct module_qstate* newq = NULL; + enum module_ext_state ext_state = qstate->ext_state[id]; + + numtag = anchor_list_keytags(ta, tags, MAX_LABEL_TAGS); + if(numtag == 0) + return 0; + + for(i=0; iname, ta->namelen); + if(!(keytagdname = (uint8_t*)regional_alloc_init(qstate->region, + dnamebuf, dnamebuf_len))) { + log_err("could not generate key tag query: out of memory"); + return 0; + } + + log_nametypeclass(VERB_OPS, "generate keytag query", keytagdname, + LDNS_RR_TYPE_NULL, ta->dclass); + if(!generate_request(qstate, id, keytagdname, dnamebuf_len, + LDNS_RR_TYPE_NULL, ta->dclass, 0, &newq, 1)) { + log_err("failed to generate key tag signaling request"); + return 0; + } + + /* Not interrested in subquery response. Restore the ext_state, + * that might be changed by generate_request() */ + qstate->ext_state[id] = ext_state; + + return 1; +} + +/** + * Get keytag as uint16_t from string + * + * @param start: start of string containing keytag + * @param keytag: pointer where to store the extracted keytag + * @return: 1 if keytag was extracted, else 0. + */ +static int +sentinel_get_keytag(char* start, uint16_t* keytag) { + char* keytag_str; + char* e = NULL; + keytag_str = calloc(1, SENTINEL_KEYTAG_LEN + 1 /* null byte */); + if(!keytag_str) + return 0; + memmove(keytag_str, start, SENTINEL_KEYTAG_LEN); + keytag_str[SENTINEL_KEYTAG_LEN] = '\0'; + *keytag = (uint16_t)strtol(keytag_str, &e, 10); + if(!e || *e != '\0') { + free(keytag_str); + return 0; + } + free(keytag_str); + return 1; +} + /** * Prime trust anchor for use. * Generate and dispatch a priming query for the given trust anchor. @@ -409,8 +518,16 @@ static int prime_trust_anchor(struct module_qstate* qstate, struct val_qstate* vq, int id, struct trust_anchor* toprime) { + struct module_qstate* newq = NULL; int ret = generate_request(qstate, id, toprime->name, toprime->namelen, - LDNS_RR_TYPE_DNSKEY, toprime->dclass, BIT_CD); + LDNS_RR_TYPE_DNSKEY, toprime->dclass, BIT_CD, &newq, 0); + + if(newq && qstate->env->cfg->trust_anchor_signaling && + !generate_keytag_query(qstate, id, toprime)) { + log_err("keytag signaling query failed"); + return 0; + } + if(!ret) { log_err("Could not prime trust anchor: out of memory"); return 0; @@ -482,7 +599,8 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env, } /* Verify the answer rrset */ - sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason); + sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason, + LDNS_SECTION_ANSWER, qstate); /* If the (answer) rrset failed to validate, then this * message is BAD. */ if(sec != sec_status_secure) { @@ -511,7 +629,8 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env, for(i=chase_reply->an_numrrsets; ian_numrrsets+ chase_reply->ns_numrrsets; i++) { s = chase_reply->rrsets[i]; - sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason); + sec = val_verify_rrset_entry(env, ve, s, key_entry, &reason, + LDNS_SECTION_AUTHORITY, qstate); /* If anything in the authority section fails to be secure, * we have a bad message. */ if(sec != sec_status_secure) { @@ -526,9 +645,11 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env, } } - /* attempt to validate the ADDITIONAL section rrsets */ - if(!ve->clean_additional) + /* If set, the validator should clean the additional section of + * secure messages. */ + if(!env->cfg->val_clean_additional) return 1; + /* attempt to validate the ADDITIONAL section rrsets */ for(i=chase_reply->an_numrrsets+chase_reply->ns_numrrsets; irrset_count; i++) { s = chase_reply->rrsets[i]; @@ -537,7 +658,7 @@ validate_msg_signatures(struct module_qstate* qstate, struct module_env* env, val_find_rrset_signer(s, &sname, &slen); if(sname && query_dname_compare(sname, key_entry->name)==0) (void)val_verify_rrset_entry(env, ve, s, key_entry, - &reason); + &reason, LDNS_SECTION_ADDITIONAL, qstate); /* the additional section can fail to be secure, * it is optional, check signature in case we need * to clean the additional section later. */ @@ -651,6 +772,8 @@ validate_positive_response(struct module_env* env, struct val_env* ve, struct key_entry_key* kkey) { uint8_t* wc = NULL; + size_t wl; + int wc_cached = 0; int wc_NSEC_ok = 0; int nsec3s_seen = 0; size_t i; @@ -663,13 +786,19 @@ validate_positive_response(struct module_env* env, struct val_env* ve, /* Check to see if the rrset is the result of a wildcard * expansion. If so, an additional check will need to be * made in the authority section. */ - if(!val_rrset_wildcard(s, &wc)) { + if(!val_rrset_wildcard(s, &wc, &wl)) { log_nametypeclass(VERB_QUERY, "Positive response has " "inconsistent wildcard sigs:", s->rk.dname, ntohs(s->rk.type), ntohs(s->rk.rrset_class)); chase_reply->security = sec_status_bogus; return; } + if(wc && !wc_cached && env->cfg->aggressive_nsec) { + rrset_cache_update_wildcard(env->rrset_cache, s, wc, wl, + env->alloc, *env->now); + wc_cached = 1; + } + } /* validate the AUTHORITY section as well - this will generally be @@ -850,6 +979,9 @@ validate_nameerror_response(struct module_env* env, struct val_env* ve, int nsec3s_seen = 0; struct ub_packed_rrset_key* s; size_t i; + uint8_t* ce; + int ce_labs = 0; + int prev_ce_labs = 0; for(i=chase_reply->an_numrrsets; ian_numrrsets+ chase_reply->ns_numrrsets; i++) { @@ -857,9 +989,19 @@ validate_nameerror_response(struct module_env* env, struct val_env* ve, if(ntohs(s->rk.type) == LDNS_RR_TYPE_NSEC) { if(val_nsec_proves_name_error(s, qchase->qname)) has_valid_nsec = 1; - if(val_nsec_proves_no_wc(s, qchase->qname, - qchase->qname_len)) - has_valid_wnsec = 1; + ce = nsec_closest_encloser(qchase->qname, s); + ce_labs = dname_count_labels(ce); + /* Use longest closest encloser to prove wildcard. */ + if(ce_labs > prev_ce_labs || + (ce_labs == prev_ce_labs && + has_valid_wnsec == 0)) { + if(val_nsec_proves_no_wc(s, qchase->qname, + qchase->qname_len)) + has_valid_wnsec = 1; + else + has_valid_wnsec = 0; + } + prev_ce_labs = ce_labs; if(val_nsec_proves_insecuredelegation(s, qchase)) { verbose(VERB_ALGO, "delegation is insecure"); chase_reply->security = sec_status_insecure; @@ -974,6 +1116,7 @@ validate_any_response(struct module_env* env, struct val_env* ve, /* but check if a wildcard response is given, then check NSEC/NSEC3 * for qname denial to see if wildcard is applicable */ uint8_t* wc = NULL; + size_t wl; int wc_NSEC_ok = 0; int nsec3s_seen = 0; size_t i; @@ -992,7 +1135,7 @@ validate_any_response(struct module_env* env, struct val_env* ve, /* Check to see if the rrset is the result of a wildcard * expansion. If so, an additional check will need to be * made in the authority section. */ - if(!val_rrset_wildcard(s, &wc)) { + if(!val_rrset_wildcard(s, &wc, &wl)) { log_nametypeclass(VERB_QUERY, "Positive ANY response" " has inconsistent wildcard sigs:", s->rk.dname, ntohs(s->rk.type), @@ -1081,6 +1224,7 @@ validate_cname_response(struct module_env* env, struct val_env* ve, struct key_entry_key* kkey) { uint8_t* wc = NULL; + size_t wl; int wc_NSEC_ok = 0; int nsec3s_seen = 0; size_t i; @@ -1093,7 +1237,7 @@ validate_cname_response(struct module_env* env, struct val_env* ve, /* Check to see if the rrset is the result of a wildcard * expansion. If so, an additional check will need to be * made in the authority section. */ - if(!val_rrset_wildcard(s, &wc)) { + if(!val_rrset_wildcard(s, &wc, &wl)) { log_nametypeclass(VERB_QUERY, "Cname response has " "inconsistent wildcard sigs:", s->rk.dname, ntohs(s->rk.type), ntohs(s->rk.rrset_class)); @@ -1197,11 +1341,14 @@ validate_cname_noanswer_response(struct module_env* env, struct val_env* ve, uint8_t* ce = NULL; /* for wildcard nodata responses. This is the proven closest encloser. */ uint8_t* wc = NULL; /* for wildcard nodata responses. wildcard nsec */ - int nxdomain_valid_nsec = 0; /* if true, namerror has been proven */ + int nxdomain_valid_nsec = 0; /* if true, nameerror has been proven */ int nxdomain_valid_wnsec = 0; int nsec3s_seen = 0; /* nsec3s seen */ struct ub_packed_rrset_key* s; size_t i; + uint8_t* nsec_ce; /* Used to find the NSEC with the longest ce */ + int ce_labs = 0; + int prev_ce_labs = 0; /* the AUTHORITY section */ for(i=chase_reply->an_numrrsets; ian_numrrsets+ @@ -1220,9 +1367,19 @@ validate_cname_noanswer_response(struct module_env* env, struct val_env* ve, ce = nsec_closest_encloser(qchase->qname, s); nxdomain_valid_nsec = 1; } - if(val_nsec_proves_no_wc(s, qchase->qname, - qchase->qname_len)) - nxdomain_valid_wnsec = 1; + nsec_ce = nsec_closest_encloser(qchase->qname, s); + ce_labs = dname_count_labels(nsec_ce); + /* Use longest closest encloser to prove wildcard. */ + if(ce_labs > prev_ce_labs || + (ce_labs == prev_ce_labs && + nxdomain_valid_wnsec == 0)) { + if(val_nsec_proves_no_wc(s, qchase->qname, + qchase->qname_len)) + nxdomain_valid_wnsec = 1; + else + nxdomain_valid_wnsec = 0; + } + prev_ce_labs = ce_labs; if(val_nsec_proves_insecuredelegation(s, qchase)) { verbose(VERB_ALGO, "delegation is insecure"); chase_reply->security = sec_status_insecure; @@ -1502,6 +1659,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) uint8_t* target_key_name, *current_key_name; size_t target_key_len; int strip_lab; + struct module_qstate* newq = NULL; log_query_info(VERB_ALGO, "validator: FindKey", &vq->qchase); /* We know that state.key_entry is not 0 or bad key -- if it were, @@ -1514,7 +1672,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) if(key_entry_isnull(vq->key_entry)) { if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD)) { + vq->qchase.qclass, BIT_CD, &newq, 0)) { log_err("mem error generating DNSKEY request"); return val_error(qstate, id); } @@ -1586,7 +1744,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) vq->key_entry->name) != 0) { if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD)) { + vq->qchase.qclass, BIT_CD, &newq, 0)) { log_err("mem error generating DNSKEY request"); return val_error(qstate, id); } @@ -1615,7 +1773,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) } if(!generate_request(qstate, id, target_key_name, target_key_len, LDNS_RR_TYPE_DS, vq->qchase.qclass, - BIT_CD)) { + BIT_CD, &newq, 0)) { log_err("mem error generating DS request"); return val_error(qstate, id); } @@ -1625,7 +1783,7 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) /* Otherwise, it is time to query for the DNSKEY */ if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD)) { + vq->qchase.qclass, BIT_CD, &newq, 0)) { log_err("mem error generating DNSKEY request"); return val_error(qstate, id); } @@ -1839,6 +1997,7 @@ val_dlv_init(struct module_qstate* qstate, struct val_qstate* vq, { uint8_t* nm; size_t nm_len; + struct module_qstate* newq = NULL; /* there must be a DLV configured */ log_assert(qstate->env->anchors->dlv_anchor); /* this bool is true to avoid looping in the DLV checks */ @@ -1940,7 +2099,7 @@ val_dlv_init(struct module_qstate* qstate, struct val_qstate* vq, vq->state = VAL_DLVLOOKUP_STATE; if(!generate_request(qstate, id, vq->dlv_lookup_name, vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0)) { + vq->qchase.qclass, 0, &newq, 0)) { return val_error(qstate, id); } @@ -2034,10 +2193,14 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, * a different signer name). And drop additional rrsets * that are not secure (if clean-additional option is set) */ /* this may cause the msg to be marked bogus */ - val_check_nonsecure(ve, vq->orig_msg->rep); + val_check_nonsecure(qstate->env, vq->orig_msg->rep); if(vq->orig_msg->rep->security == sec_status_secure) { log_query_info(VERB_DETAIL, "validation success", &qstate->qinfo); + if(!qstate->no_cache_store) { + val_neg_addreply(qstate->env->neg_cache, + vq->orig_msg->rep); + } } } @@ -2075,24 +2238,60 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, free(err); } } + /* + * If set, the validator will not make messages bogus, instead + * indeterminate is issued, so that no clients receive SERVFAIL. + * This allows an operator to run validation 'shadow' without + * hurting responses to clients. + */ /* If we are in permissive mode, bogus gets indeterminate */ - if(ve->permissive_mode) + if(qstate->env->cfg->val_permissive_mode) vq->orig_msg->rep->security = sec_status_indeterminate; } + if(vq->orig_msg->rep->security == sec_status_secure && + qstate->env->cfg->root_key_sentinel && + (qstate->qinfo.qtype == LDNS_RR_TYPE_A || + qstate->qinfo.qtype == LDNS_RR_TYPE_AAAA)) { + char* keytag_start; + uint16_t keytag; + if(*qstate->qinfo.qname == strlen(SENTINEL_IS) + + SENTINEL_KEYTAG_LEN && + dname_lab_startswith(qstate->qinfo.qname, SENTINEL_IS, + &keytag_start)) { + if(sentinel_get_keytag(keytag_start, &keytag) && + !anchor_has_keytag(qstate->env->anchors, + (uint8_t*)"", 1, 0, vq->qchase.qclass, keytag)) { + vq->orig_msg->rep->security = + sec_status_secure_sentinel_fail; + } + } else if(*qstate->qinfo.qname == strlen(SENTINEL_NOT) + + SENTINEL_KEYTAG_LEN && + dname_lab_startswith(qstate->qinfo.qname, SENTINEL_NOT, + &keytag_start)) { + if(sentinel_get_keytag(keytag_start, &keytag) && + anchor_has_keytag(qstate->env->anchors, + (uint8_t*)"", 1, 0, vq->qchase.qclass, keytag)) { + vq->orig_msg->rep->security = + sec_status_secure_sentinel_fail; + } + } + } /* store results in cache */ if(qstate->query_flags&BIT_RD) { /* if secure, this will override cache anyway, no need * to check if from parentNS */ - if(!dns_cache_store(qstate->env, &vq->orig_msg->qinfo, - vq->orig_msg->rep, 0, qstate->prefetch_leeway, 0, NULL, - qstate->query_flags)) { - log_err("out of memory caching validator results"); + if(!qstate->no_cache_store) { + if(!dns_cache_store(qstate->env, &vq->orig_msg->qinfo, + vq->orig_msg->rep, 0, qstate->prefetch_leeway, 0, NULL, + qstate->query_flags)) { + log_err("out of memory caching validator results"); + } } } else { /* for a referral, store the verified RRsets */ /* and this does not get prefetched, so no leeway */ - if(!dns_cache_store(qstate->env, &vq->orig_msg->qinfo, + if(!dns_cache_store(qstate->env, &vq->orig_msg->qinfo, vq->orig_msg->rep, 1, 0, 0, NULL, qstate->query_flags)) { log_err("out of memory caching validator results"); @@ -2118,6 +2317,7 @@ static int processDLVLookup(struct module_qstate* qstate, struct val_qstate* vq, struct val_env* ve, int id) { + struct module_qstate* newq = NULL; /* see if this we are ready to continue normal resolution */ /* we may need more DLV lookups */ if(vq->dlv_status==dlv_error) @@ -2166,7 +2366,7 @@ processDLVLookup(struct module_qstate* qstate, struct val_qstate* vq, if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD)) { + vq->qchase.qclass, BIT_CD, &newq, 0)) { log_err("mem error generating DNSKEY request"); return val_error(qstate, id); } @@ -2208,7 +2408,7 @@ processDLVLookup(struct module_qstate* qstate, struct val_qstate* vq, if(!generate_request(qstate, id, vq->dlv_lookup_name, vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0)) { + vq->qchase.qclass, 0, &newq, 0)) { return val_error(qstate, id); } @@ -2274,6 +2474,7 @@ val_operate(struct module_qstate* qstate, enum module_ev event, int id, (void)outbound; if(event == module_event_new || (event == module_event_pass && vq == NULL)) { + /* pass request to next module, to get it */ verbose(VERB_ALGO, "validator: pass to next module"); qstate->ext_state[id] = module_wait_module; @@ -2282,6 +2483,7 @@ val_operate(struct module_qstate* qstate, enum module_ev event, int id, if(event == module_event_moddone) { /* check if validation is needed */ verbose(VERB_ALGO, "validator: nextmodule returned"); + if(!needs_validation(qstate, qstate->return_rcode, qstate->return_msg)) { /* no need to validate this */ @@ -2379,7 +2581,7 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset, /* attempt to verify with trust anchor DS and DNSKEY */ kkey = val_verify_new_DNSKEYs_with_ta(qstate->region, qstate->env, ve, dnskey_rrset, ta->ds_rrset, ta->dnskey_rrset, downprot, - &reason); + &reason, qstate); if(!kkey) { log_err("out of memory: verifying prime TA"); return NULL; @@ -2469,7 +2671,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, /* Verify only returns BOGUS or SECURE. If the rrset is * bogus, then we are done. */ sec = val_verify_rrset_entry(qstate->env, ve, ds, - vq->key_entry, &reason); + vq->key_entry, &reason, LDNS_SECTION_ANSWER, qstate); if(sec != sec_status_secure) { verbose(VERB_DETAIL, "DS rrset in DS response did " "not verify"); @@ -2516,7 +2718,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, /* Try to prove absence of the DS with NSEC */ sec = val_nsec_prove_nodata_dsreply( qstate->env, ve, qinfo, msg->rep, vq->key_entry, - &proof_ttl, &reason); + &proof_ttl, &reason, qstate); switch(sec) { case sec_status_secure: verbose(VERB_DETAIL, "NSEC RRset for the " @@ -2544,7 +2746,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, sec = nsec3_prove_nods(qstate->env, ve, msg->rep->rrsets + msg->rep->an_numrrsets, - msg->rep->ns_numrrsets, qinfo, vq->key_entry, &reason); + msg->rep->ns_numrrsets, qinfo, vq->key_entry, &reason, + qstate); switch(sec) { case sec_status_insecure: /* case insecure also continues to unsigned @@ -2605,7 +2808,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, goto return_bogus; } sec = val_verify_rrset_entry(qstate->env, ve, cname, - vq->key_entry, &reason); + vq->key_entry, &reason, LDNS_SECTION_ANSWER, qstate); if(sec == sec_status_secure) { verbose(VERB_ALGO, "CNAME validated, " "proof that DS does not exist"); @@ -2771,7 +2974,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, } downprot = qstate->env->cfg->harden_algo_downgrade; vq->key_entry = val_verify_new_DNSKEYs(qstate->region, qstate->env, - ve, dnskey, vq->ds_rrset, downprot, &reason); + ve, dnskey, vq->ds_rrset, downprot, &reason, qstate); if(!vq->key_entry) { log_err("out of memory in verify new DNSKEYs"); @@ -2845,8 +3048,10 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, ta->name, ta->namelen, LDNS_RR_TYPE_DNSKEY, ta->dclass); } + if(ta->autr) { - if(!autr_process_prime(qstate->env, ve, ta, dnskey_rrset)) { + if(!autr_process_prime(qstate->env, ve, ta, dnskey_rrset, + qstate)) { /* trust anchor revoked, restart with less anchors */ vq->state = VAL_INIT_STATE; vq->trust_anchor_name = NULL; diff --git a/external/unbound/validator/validator.h b/external/unbound/validator/validator.h index 20f806a..9e4c8a9 100644 --- a/external/unbound/validator/validator.h +++ b/external/unbound/validator/validator.h @@ -67,6 +67,13 @@ struct config_strlist; /** max number of query restarts, number of IPs to probe */ #define VAL_MAX_RESTART_COUNT 5 +/** Root key sentinel is ta preamble */ +#define SENTINEL_IS "root-key-sentinel-is-ta-" +/** Root key sentinel is not ta preamble */ +#define SENTINEL_NOT "root-key-sentinel-not-ta-" +/** Root key sentinal keytag length */ +#define SENTINEL_KEYTAG_LEN 5 + /** * Global state for the validator. */ @@ -93,19 +100,6 @@ struct val_env { * seconds. */ uint32_t bogus_ttl; - /** If set, the validator should clean the additional section of - * secure messages. - */ - int clean_additional; - - /** - * If set, the validator will not make messages bogus, instead - * indeterminate is issued, so that no clients receive SERVFAIL. - * This allows an operator to run validation 'shadow' without - * hurting responses to clients. - */ - int permissive_mode; - /** * Number of entries in the NSEC3 maximum iteration count table. * Keep this table short, and sorted by size @@ -126,7 +120,7 @@ struct val_env { size_t* nsec3_maxiter; /** lock on bogus counter */ - lock_basic_t bogus_lock; + lock_basic_type bogus_lock; /** number of times rrsets marked bogus */ size_t num_rrset_bogus; }; diff --git a/external/unbound/winrc/combined.ico b/external/unbound/winrc/combined.ico index b0a4f4d16271b3f4997b549380fa69c93d38f14b..aa65d11e2e6f1bc7b94fb338204b08f6de018186 100644 GIT binary patch delta 7 OcmZ1;v@B?YnkE1Zj{@-k delta 9 QcmZ1$v^;2onkFL`026xx`~Uy| diff --git a/external/unbound/winrc/gen_msg.bin b/external/unbound/winrc/gen_msg.bin index ed8f79e63167d1814aa27a3f58e4d4f557494c2b..6e560057c26813430527e8906f6388206e0c7e82 100644 GIT binary patch delta 4 LcmXRdnNR`%1jqsI delta 6 NcmXRZolwHa1po-I0r>y` diff --git a/external/unbound/winrc/setup.nsi b/external/unbound/winrc/setup.nsi index 513b300..8f08522 100644 --- a/external/unbound/winrc/setup.nsi +++ b/external/unbound/winrc/setup.nsi @@ -90,12 +90,21 @@ section "-hidden.postinstall" File "..\unbound-service-install.exe" File "..\unbound-service-remove.exe" File "..\anchor-update.exe" + File "..\root.key" File "unbound-control-setup.cmd" File "unbound-website.url" - File "service.conf" File "..\doc\example.conf" File "..\doc\Changelog" + # Does service.conf already exist? + IfFileExists "$INSTDIR\service.conf" 0 service_conf_not_found + # if so, leave it be and place the shipped file under another name + File /oname=service.conf.shipped "service.conf" + goto end_service_conf_not_found + # or, it is not there, place it and fill it. + service_conf_not_found: + File "service.conf" + # Store Root Key choice SectionGetFlags ${SectionRootKey} $R0 IntOp $R0 $R0 & ${SF_SELECTED} @@ -111,6 +120,7 @@ section "-hidden.postinstall" ${Else} WriteRegStr HKLM "Software\Unbound" "RootAnchor" "" ${EndIf} + end_service_conf_not_found: # store installation folder WriteRegStr HKLM "Software\Unbound" "InstallLocation" "$INSTDIR" @@ -139,8 +149,10 @@ section "-hidden.postinstall" # install service entry nsExec::ExecToLog '"$INSTDIR\unbound-service-install.exe"' + Pop $0 # return value/error/timeout # start unbound service nsExec::ExecToLog '"$INSTDIR\unbound-service-install.exe" start' + Pop $0 # return value/error/timeout sectionEnd # set section descriptions @@ -162,8 +174,10 @@ LangString DESC_rootkey ${LANG_ENGLISH} "Set up to use the DNSSEC root trust anc section "un.Unbound" # stop unbound service nsExec::ExecToLog '"$INSTDIR\unbound-service-remove.exe" stop' + Pop $0 # return value/error/timeout # uninstall service entry nsExec::ExecToLog '"$INSTDIR\unbound-service-remove.exe"' + Pop $0 # return value/error/timeout # deregister uninstall DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Unbound" Delete "$INSTDIR\uninst.exe" # delete self @@ -179,7 +193,9 @@ section "un.Unbound" Delete "$INSTDIR\anchor-update.exe" Delete "$INSTDIR\unbound-control-setup.cmd" Delete "$INSTDIR\unbound-website.url" - Delete "$INSTDIR\service.conf" + # keep the service.conf with potential local modifications + #Delete "$INSTDIR\service.conf" + Delete "$INSTDIR\service.conf.shipped" Delete "$INSTDIR\example.conf" Delete "$INSTDIR\Changelog" Delete "$INSTDIR\root.key" diff --git a/external/unbound/winrc/setup_left.bmp b/external/unbound/winrc/setup_left.bmp index a013276a9beab112818e86ab8f64f99f029d1803..ddc17d07969aa673f16ec9510d7bb49c44604af7 100644 GIT binary patch delta 13 UcmZ3#oparG&W0AoEllg80V5$Rs%`^ delta 9 QcmaE0@X%mGf&?QM02TBDRR910 diff --git a/external/unbound/winrc/w_inst.c b/external/unbound/winrc/w_inst.c index d0de73b..0234906 100644 --- a/external/unbound/winrc/w_inst.c +++ b/external/unbound/winrc/w_inst.c @@ -231,8 +231,8 @@ wsvc_install(FILE* out, const char* rename) NULL, /* no load ordering group */ NULL, /* no tag identifier */ NULL, /* no deps */ - NULL, /* on LocalSystem */ - NULL /* no password */ + NULL, /* on LocalSystem */ + NULL /* no password */ ); if(!sv) { CloseServiceHandle(scm); diff --git a/external/unbound/winrc/win_svc.c b/external/unbound/winrc/win_svc.c index 9d6926d..a87d73b 100644 --- a/external/unbound/winrc/win_svc.c +++ b/external/unbound/winrc/win_svc.c @@ -51,7 +51,8 @@ #include "daemon/remote.h" #include "util/config_file.h" #include "util/netevent.h" -#include "util/winsock_event.h" +#include "util/ub_event.h" +#include "util/net_help.h" /** global service status */ static SERVICE_STATUS service_status; @@ -60,7 +61,7 @@ static SERVICE_STATUS_HANDLE service_status_handle; /** global service stop event */ static WSAEVENT service_stop_event = NULL; /** event struct for stop callbacks */ -static struct event service_stop_ev; +static struct ub_event* service_stop_ev = NULL; /** if stop even means shutdown or restart */ static int service_stop_shutdown = 0; /** config file to open. global communication to service_main() */ @@ -70,7 +71,7 @@ static int service_cmdline_verbose = 0; /** the cron callback */ static struct comm_timer* service_cron = NULL; /** the cron thread */ -static ub_thread_t cron_thread = NULL; +static ub_thread_type cron_thread = NULL; /** if cron has already done its quick check */ static int cron_was_quick = 0; @@ -357,6 +358,14 @@ service_init(int r, struct daemon** d, struct config_file** c) config_delete(cfg); return 0; } + if(cfg->ssl_service_key && cfg->ssl_service_key[0]) { + if(!(daemon->listen_sslctx = listen_sslctx_create( + cfg->ssl_service_key, cfg->ssl_service_pem, NULL))) + fatal_exit("could not set up listen SSL_CTX"); + } + if(!(daemon->connect_sslctx = connect_sslctx_create(NULL, NULL, + cfg->tls_cert_bundle, cfg->tls_win_cert))) + fatal_exit("could not set up connect SSL_CTX"); /* open ports */ /* keep reporting that we are busy starting */ @@ -453,9 +462,9 @@ service_main(DWORD ATTR_UNUSED(argc), LPTSTR* ATTR_UNUSED(argv)) /* exit */ verbose(VERB_ALGO, "winservice - cleanup."); report_status(SERVICE_STOP_PENDING, NO_ERROR, 0); + if(service_stop_event) (void)WSACloseEvent(service_stop_event); service_deinit(daemon, cfg); free(service_cfgfile); - if(service_stop_event) (void)WSACloseEvent(service_stop_event); verbose(VERB_QUERY, "winservice - full stop"); report_status(SERVICE_STOPPED, NO_ERROR, 0); } @@ -565,7 +574,7 @@ win_do_cron(void* ATTR_UNUSED(arg)) /** Set the timer for cron for the next wake up */ static void -set_cron_timer() +set_cron_timer(void) { struct timeval tv; int crontime; @@ -600,9 +609,9 @@ void wsvc_setup_worker(struct worker* worker) /* if not started with -w service, do nothing */ if(!service_stop_event) return; - if(!winsock_register_wsaevent(comm_base_internal(worker->base), - &service_stop_ev, service_stop_event, - &worker_win_stop_cb, worker)) { + if(!(service_stop_ev = ub_winsock_register_wsaevent( + comm_base_internal(worker->base), service_stop_event, + &worker_win_stop_cb, worker))) { fatal_exit("could not register wsaevent"); return; } diff --git a/include/INode.h b/include/INode.h index f3dc5cb..ce7344e 100644 --- a/include/INode.h +++ b/include/INode.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/include/IWallet.h b/include/IWallet.h index f39ceba..fee0a9b 100644 --- a/include/IWallet.h +++ b/include/IWallet.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e7f89b6..9459e41 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,6 +103,7 @@ add_subdirectory(cryptonote_core) add_subdirectory(blockchain_db) add_subdirectory(mnemonics) add_subdirectory(rpc) +add_subdirectory(node_rpc) add_subdirectory(wallet) add_subdirectory(p2p) add_subdirectory(cryptonote_protocol) diff --git a/src/blockchain_db/berkeleydb/db_bdb.h b/src/blockchain_db/berkeleydb/db_bdb.h index f320ab0..8ede57a 100644 --- a/src/blockchain_db/berkeleydb/db_bdb.h +++ b/src/blockchain_db/berkeleydb/db_bdb.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, are diff --git a/src/blockchain_db/blockchain_db.cpp b/src/blockchain_db/blockchain_db.cpp index b0c9c86..5fa3b32 100644 --- a/src/blockchain_db/blockchain_db.cpp +++ b/src/blockchain_db/blockchain_db.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_db/blockchain_db.h b/src/blockchain_db/blockchain_db.h index 93c34a0..9e0c80f 100644 --- a/src/blockchain_db/blockchain_db.h +++ b/src/blockchain_db/blockchain_db.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_db/db_types.h b/src/blockchain_db/db_types.h index ca4abf2..c5478c0 100644 --- a/src/blockchain_db/db_types.h +++ b/src/blockchain_db/db_types.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index f30ca09..13a42fb 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, are diff --git a/src/blockchain_db/lmdb/db_lmdb.h b/src/blockchain_db/lmdb/db_lmdb.h index 16044b9..ba069e3 100644 --- a/src/blockchain_db/lmdb/db_lmdb.h +++ b/src/blockchain_db/lmdb/db_lmdb.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, are diff --git a/src/blockchain_utilities/blockchain_export.cpp b/src/blockchain_utilities/blockchain_export.cpp index 45a47e5..bac0729 100644 --- a/src/blockchain_utilities/blockchain_export.cpp +++ b/src/blockchain_utilities/blockchain_export.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/blockchain_import.cpp b/src/blockchain_utilities/blockchain_import.cpp index 79225d9..dee97dc 100644 --- a/src/blockchain_utilities/blockchain_import.cpp +++ b/src/blockchain_utilities/blockchain_import.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/blockchain_utilities.h b/src/blockchain_utilities/blockchain_utilities.h index 6ddda65..305e521 100644 --- a/src/blockchain_utilities/blockchain_utilities.h +++ b/src/blockchain_utilities/blockchain_utilities.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/blocksdat_file.cpp b/src/blockchain_utilities/blocksdat_file.cpp index 926562b..b343fbf 100644 --- a/src/blockchain_utilities/blocksdat_file.cpp +++ b/src/blockchain_utilities/blocksdat_file.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/bootstrap_file.cpp b/src/blockchain_utilities/bootstrap_file.cpp index 61bd35a..d510953 100644 --- a/src/blockchain_utilities/bootstrap_file.cpp +++ b/src/blockchain_utilities/bootstrap_file.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/bootstrap_file.h b/src/blockchain_utilities/bootstrap_file.h index 0bbe28f..0a646aa 100644 --- a/src/blockchain_utilities/bootstrap_file.h +++ b/src/blockchain_utilities/bootstrap_file.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/bootstrap_serialization.h b/src/blockchain_utilities/bootstrap_serialization.h index a7d8890..891a8c4 100644 --- a/src/blockchain_utilities/bootstrap_serialization.h +++ b/src/blockchain_utilities/bootstrap_serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/cn_deserialize.cpp b/src/blockchain_utilities/cn_deserialize.cpp index 26c9688..f51cd9f 100644 --- a/src/blockchain_utilities/cn_deserialize.cpp +++ b/src/blockchain_utilities/cn_deserialize.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/blockchain_utilities/fake_core.h b/src/blockchain_utilities/fake_core.h index 952227f..cfb4691 100644 --- a/src/blockchain_utilities/fake_core.h +++ b/src/blockchain_utilities/fake_core.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/base58.cpp b/src/common/base58.cpp index 355d1e2..574bbdd 100644 --- a/src/common/base58.cpp +++ b/src/common/base58.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/base58.h b/src/common/base58.h index df2ac2e..aca0edf 100644 --- a/src/common/base58.h +++ b/src/common/base58.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/command_line.cpp b/src/common/command_line.cpp index 28879e0..2d9c5b7 100644 --- a/src/common/command_line.cpp +++ b/src/common/command_line.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/http_connection.h b/src/common/http_connection.h index 156474c..abe3147 100644 --- a/src/common/http_connection.h +++ b/src/common/http_connection.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/i18n.cpp b/src/common/i18n.cpp index c04790c..9c6a6f3 100644 --- a/src/common/i18n.cpp +++ b/src/common/i18n.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/i18n.h b/src/common/i18n.h index 3326021..e7faae1 100644 --- a/src/common/i18n.h +++ b/src/common/i18n.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/pod-class.h b/src/common/pod-class.h index f3f2415..428a768 100644 --- a/src/common/pod-class.h +++ b/src/common/pod-class.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/rpc_client.h b/src/common/rpc_client.h index 9c00361..898cba7 100644 --- a/src/common/rpc_client.h +++ b/src/common/rpc_client.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/scoped_message_writer.h b/src/common/scoped_message_writer.h index 77dda71..abfe9dd 100644 --- a/src/common/scoped_message_writer.h +++ b/src/common/scoped_message_writer.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/task_region.h b/src/common/task_region.h index e4d2106..761ae10 100644 --- a/src/common/task_region.h +++ b/src/common/task_region.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/thread_group.cpp b/src/common/thread_group.cpp index 4e1cc89..2cc2b99 100644 --- a/src/common/thread_group.cpp +++ b/src/common/thread_group.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/thread_group.h b/src/common/thread_group.h index 10add89..de3965a 100644 --- a/src/common/thread_group.h +++ b/src/common/thread_group.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/unordered_containers_boost_serialization.h b/src/common/unordered_containers_boost_serialization.h index 08b5d9c..981de80 100644 --- a/src/common/unordered_containers_boost_serialization.h +++ b/src/common/unordered_containers_boost_serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/util.cpp b/src/common/util.cpp index a53a9be..700cbf4 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/util.h b/src/common/util.h index 4fcf66b..145968a 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/common/varint.h b/src/common/varint.h index ffaa682..6427ad1 100644 --- a/src/common/varint.h +++ b/src/common/varint.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/blake256.c b/src/crypto/blake256.c index 1cb1cf3..ad19d3a 100644 --- a/src/crypto/blake256.c +++ b/src/crypto/blake256.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/blake256.h b/src/crypto/blake256.h index e262d1b..7efaf2c 100644 --- a/src/crypto/blake256.h +++ b/src/crypto/blake256.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/chacha8.h b/src/crypto/chacha8.h index ded7914..bd22836 100644 --- a/src/crypto/chacha8.h +++ b/src/crypto/chacha8.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/crypto-ops-data.c b/src/crypto/crypto-ops-data.c index 1d18b12..a884d92 100644 --- a/src/crypto/crypto-ops-data.c +++ b/src/crypto/crypto-ops-data.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/crypto-ops.c b/src/crypto/crypto-ops.c index 1b390e4..00a61ed 100644 --- a/src/crypto/crypto-ops.c +++ b/src/crypto/crypto-ops.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/crypto-ops.h b/src/crypto/crypto-ops.h index 691fc63..1814386 100644 --- a/src/crypto/crypto-ops.h +++ b/src/crypto/crypto-ops.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/crypto_ops_builder/crypto-ops.h b/src/crypto/crypto_ops_builder/crypto-ops.h index 84ef12a..7111c3c 100644 --- a/src/crypto/crypto_ops_builder/crypto-ops.h +++ b/src/crypto/crypto_ops_builder/crypto-ops.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/crypto_ops_builder/ref10CommentedCombined/crypto-ops.h b/src/crypto/crypto_ops_builder/ref10CommentedCombined/crypto-ops.h index cdc5ac1..6459510 100644 --- a/src/crypto/crypto_ops_builder/ref10CommentedCombined/crypto-ops.h +++ b/src/crypto/crypto_ops_builder/ref10CommentedCombined/crypto-ops.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/generic-ops.h b/src/crypto/generic-ops.h index a8d8fdb..2a8d687 100644 --- a/src/crypto/generic-ops.h +++ b/src/crypto/generic-ops.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/groestl.h b/src/crypto/groestl.h index ac749d1..4ef9e1c 100644 --- a/src/crypto/groestl.h +++ b/src/crypto/groestl.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/groestl_tables.h b/src/crypto/groestl_tables.h index c271fd3..f2b8e05 100644 --- a/src/crypto/groestl_tables.h +++ b/src/crypto/groestl_tables.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/hash-ops.h b/src/crypto/hash-ops.h index 9443bdb..c472597 100644 --- a/src/crypto/hash-ops.h +++ b/src/crypto/hash-ops.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/hash.c b/src/crypto/hash.c index 93f7353..faf2923 100644 --- a/src/crypto/hash.c +++ b/src/crypto/hash.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/hash.h b/src/crypto/hash.h index e591b6b..a1bb002 100644 --- a/src/crypto/hash.h +++ b/src/crypto/hash.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/initializer.h b/src/crypto/initializer.h index fefc3b7..83ac959 100644 --- a/src/crypto/initializer.h +++ b/src/crypto/initializer.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/random.c b/src/crypto/random.c index 6a9f63c..2fb64b5 100644 --- a/src/crypto/random.c +++ b/src/crypto/random.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/random.h b/src/crypto/random.h index b0d2303..6125fa8 100644 --- a/src/crypto/random.h +++ b/src/crypto/random.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/skein_port.h b/src/crypto/skein_port.h index 0b3d071..c0644c0 100644 --- a/src/crypto/skein_port.h +++ b/src/crypto/skein_port.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/crypto/tree-hash.c b/src/crypto/tree-hash.c index 7a128e4..4a292ef 100644 --- a/src/crypto/tree-hash.c +++ b/src/crypto/tree-hash.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index 2cfaf38..6f9b5d9 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -147,6 +147,7 @@ namespace config uint64_t const CRYPTONOTE_PUBLIC_SUBADDRESS_BASE58_PREFIX = 0x2b; uint16_t const P2P_DEFAULT_PORT = 44040; uint16_t const RPC_DEFAULT_PORT = 44041; + uint16_t const NODE_RPC_DEFAULT_PORT = 44042; boost::uuids::uuid const NETWORK_ID = { {0x37 ,0x15, 0x44, 0x87 , 0x89, 0x23 , 0x11, 0x53, 0x02, 0x34, 0x17, 0x09, 0x73, 0xB3, 0x23, 0x10} }; //For security reasons this id is fake. Contact the BXB team for a valid ID std::string const GENESIS_TX ="021401ff000180eb8edea30a02c4518830fe5ce54262ff4f6df6be7f1d244dcf5320681b3711f530c07323ab322101864ed1799256dfb1038b2f50fdb0fda8ee368a92c0e52126faa16faa0cd30cda00"; uint32_t const GENESIS_NONCE = 10000; diff --git a/src/cryptonote_core/account.h b/src/cryptonote_core/account.h index 41a119b..53fa737 100644 --- a/src/cryptonote_core/account.h +++ b/src/cryptonote_core/account.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/account_boost_serialization.h b/src/cryptonote_core/account_boost_serialization.h index 4151d9b..e000537 100644 --- a/src/cryptonote_core/account_boost_serialization.h +++ b/src/cryptonote_core/account_boost_serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 2c1dfb1..ccc304f 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/blockchain.h b/src/cryptonote_core/blockchain.h index 5dc309a..d6767fb 100644 --- a/src/cryptonote_core/blockchain.h +++ b/src/cryptonote_core/blockchain.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/blockchain_storage_boost_serialization.h b/src/cryptonote_core/blockchain_storage_boost_serialization.h index 0518b9a..3d79c22 100644 --- a/src/cryptonote_core/blockchain_storage_boost_serialization.h +++ b/src/cryptonote_core/blockchain_storage_boost_serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/checkpoints.cpp b/src/cryptonote_core/checkpoints.cpp index 96bfdf1..a6581c1 100644 --- a/src/cryptonote_core/checkpoints.cpp +++ b/src/cryptonote_core/checkpoints.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/checkpoints.h b/src/cryptonote_core/checkpoints.h index ce2462b..794bc6f 100644 --- a/src/cryptonote_core/checkpoints.h +++ b/src/cryptonote_core/checkpoints.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/connection_context.h b/src/cryptonote_core/connection_context.h index 7e62e77..5918439 100644 --- a/src/cryptonote_core/connection_context.h +++ b/src/cryptonote_core/connection_context.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/cryptonote_stat_info.h b/src/cryptonote_core/cryptonote_stat_info.h index d44904b..80a348a 100644 --- a/src/cryptonote_core/cryptonote_stat_info.h +++ b/src/cryptonote_core/cryptonote_stat_info.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/difficulty.cpp b/src/cryptonote_core/difficulty.cpp index 12c6fe1..c385e02 100644 --- a/src/cryptonote_core/difficulty.cpp +++ b/src/cryptonote_core/difficulty.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/difficulty.h b/src/cryptonote_core/difficulty.h index 0c4faf3..bd63d37 100644 --- a/src/cryptonote_core/difficulty.h +++ b/src/cryptonote_core/difficulty.h @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/hardfork.cpp b/src/cryptonote_core/hardfork.cpp index c63ca36..74be546 100644 --- a/src/cryptonote_core/hardfork.cpp +++ b/src/cryptonote_core/hardfork.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/hardfork.h b/src/cryptonote_core/hardfork.h index 33b958f..082eeae 100644 --- a/src/cryptonote_core/hardfork.h +++ b/src/cryptonote_core/hardfork.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/miner.h b/src/cryptonote_core/miner.h index f24f6e9..ce1a438 100644 --- a/src/cryptonote_core/miner.h +++ b/src/cryptonote_core/miner.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/tx_pool.cpp b/src/cryptonote_core/tx_pool.cpp index 7e53c0e..08402e2 100644 --- a/src/cryptonote_core/tx_pool.cpp +++ b/src/cryptonote_core/tx_pool.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/tx_pool.h b/src/cryptonote_core/tx_pool.h index d99a21f..9779c98 100644 --- a/src/cryptonote_core/tx_pool.h +++ b/src/cryptonote_core/tx_pool.h @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_core/verification_context.h b/src/cryptonote_core/verification_context.h index 4b114c9..286a795 100644 --- a/src/cryptonote_core/verification_context.h +++ b/src/cryptonote_core/verification_context.h @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/blobdatatype.h b/src/cryptonote_protocol/blobdatatype.h index 17285ee..af213e3 100644 --- a/src/cryptonote_protocol/blobdatatype.h +++ b/src/cryptonote_protocol/blobdatatype.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/cryptonote_protocol_defs.h b/src/cryptonote_protocol/cryptonote_protocol_defs.h index 7adc690..4642a27 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_defs.h +++ b/src/cryptonote_protocol/cryptonote_protocol_defs.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler-base.cpp b/src/cryptonote_protocol/cryptonote_protocol_handler-base.cpp index 9d9ab33..c5d7834 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler-base.cpp +++ b/src/cryptonote_protocol/cryptonote_protocol_handler-base.cpp @@ -3,6 +3,7 @@ /// @brief This is the place to implement our handlers for protocol network actions, e.g. for ratelimit for download-requests // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.h b/src/cryptonote_protocol/cryptonote_protocol_handler.h index 08dde49..29f133c 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.h +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.h @@ -3,6 +3,7 @@ /// @brief This is the orginal cryptonote protocol network-events handler, modified by us // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index 00ebe13..2998617 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -3,6 +3,7 @@ /// @brief This is the orginal cryptonote protocol network-events handler, modified by us // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler_common.h b/src/cryptonote_protocol/cryptonote_protocol_handler_common.h index 06061f5..042a927 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler_common.h +++ b/src/cryptonote_protocol/cryptonote_protocol_handler_common.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt index 532f2f2..f96b110 100644 --- a/src/daemon/CMakeLists.txt +++ b/src/daemon/CMakeLists.txt @@ -60,6 +60,7 @@ set(daemon_private_headers p2p.h protocol.h rpc.h + node_rpc.h rpc_command_executor.h # cryptonote_protocol @@ -90,6 +91,7 @@ Bixbite_add_executable(daemon target_link_libraries(daemon PRIVATE rpc + node_rpc blockchain_db cryptonote_core crypto diff --git a/src/daemon/command_line_args.h b/src/daemon/command_line_args.h index 1fe2ddc..af35b97 100644 --- a/src/daemon/command_line_args.h +++ b/src/daemon/command_line_args.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/command_parser_executor.h b/src/daemon/command_parser_executor.h index 93b1fab..ece27cd 100644 --- a/src/daemon/command_parser_executor.h +++ b/src/daemon/command_parser_executor.h @@ -7,6 +7,7 @@ */ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/command_server.cpp b/src/daemon/command_server.cpp index 6d05920..d33c350 100644 --- a/src/daemon/command_server.cpp +++ b/src/daemon/command_server.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/command_server.h b/src/daemon/command_server.h index fb1702a..b5bcab0 100644 --- a/src/daemon/command_server.h +++ b/src/daemon/command_server.h @@ -10,6 +10,7 @@ Passing RPC commands: */ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/core.h b/src/daemon/core.h index 2b7f0d1..65af369 100644 --- a/src/daemon/core.h +++ b/src/daemon/core.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index ae45e8d..0580b98 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -38,6 +38,7 @@ #include "daemon/p2p.h" #include "daemon/protocol.h" #include "daemon/rpc.h" +#include "daemon/node_rpc.h" #include "daemon/command_server.h" #include "version.h" #include "../../contrib/epee/include/syncobj.h" @@ -55,6 +56,7 @@ struct t_internals { t_core core; t_p2p p2p; t_rpc rpc; + t_node_rpc node_rpc; t_internals( boost::program_options::variables_map const & vm @@ -63,6 +65,7 @@ struct t_internals { , protocol{vm, core} , p2p{vm, protocol} , rpc{vm, core, p2p} + , node_rpc{vm, core, p2p} { // Handle circular dependencies protocol.set_p2p_endpoint(p2p.get()); @@ -75,6 +78,7 @@ void t_daemon::init_options(boost::program_options::options_description & option t_core::init_options(option_spec); t_p2p::init_options(option_spec); t_rpc::init_options(option_spec); + t_node_rpc::init_options(option_spec); } t_daemon::t_daemon( @@ -119,6 +123,7 @@ bool t_daemon::run(bool interactive) if (!mp_internals->core.run()) return false; mp_internals->rpc.run(); + mp_internals->node_rpc.run(); std::unique_ptr rpc_commands; @@ -136,6 +141,7 @@ bool t_daemon::run(bool interactive) } mp_internals->core.get().get_miner().stop(); + mp_internals->node_rpc.stop(); mp_internals->rpc.stop(); LOG_PRINT("Node stopped.", LOG_LEVEL_0); return true; @@ -161,6 +167,7 @@ void t_daemon::stop() mp_internals->core.get().get_miner().stop(); mp_internals->p2p.stop(); + mp_internals->node_rpc.stop(); mp_internals->rpc.stop(); mp_internals.reset(nullptr); // Ensure resources are cleaned up before we return } diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp index cec9f33..ef2e68d 100644 --- a/src/daemon/main.cpp +++ b/src/daemon/main.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // @@ -40,6 +41,7 @@ #include "misc_log_ex.h" #include "p2p/net_node.h" #include "rpc/core_rpc_server.h" +#include "node_rpc/node_rpc_server.h" #include "daemon/command_line_args.h" #include "blockchain_db/db_types.h" diff --git a/src/daemon/node_rpc.h b/src/daemon/node_rpc.h new file mode 100644 index 0000000..44ce267 --- /dev/null +++ b/src/daemon/node_rpc.h @@ -0,0 +1,105 @@ +// Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project + +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#pragma once + +#include "node_rpc/node_rpc_server.h" + + +namespace daemonize +{ + +class t_node_rpc final +{ +public: + static void init_options(boost::program_options::options_description & option_spec) + { + cryptonote::node_rpc_server::init_options(option_spec); + } +private: + cryptonote::node_rpc_server m_node_server; +public: + t_node_rpc( + boost::program_options::variables_map const & vm + , t_core & core + , t_p2p & p2p + ) + : m_node_server{core.get(), p2p.get()} + { + + LOG_PRINT_L0("Initializing node rpc server..."); + if (!m_node_server.init(vm)) + { + throw std::runtime_error("Failed to initialize node rpc server."); + } + LOG_PRINT_GREEN("Node rpc server initialized OK on port: " << m_node_server.get_binded_port(), LOG_LEVEL_0); + + } + + void run() + { + + LOG_PRINT_L0("Starting node rpc server..."); + if (!m_node_server.run(4, false)) + { + throw std::runtime_error("Failed to start node rpc server."); + } + LOG_PRINT_L0("Node rpc server started ok"); + + + } + + void stop() + { + + LOG_PRINT_L0("Stopping node rpc server..."); + m_node_server.send_stop_signal(); + m_node_server.timed_wait_server_stop(5000); + + } + + cryptonote::node_rpc_server* get_node_server() + { + return &m_node_server; + } + + ~t_node_rpc() + { + LOG_PRINT_L0("Deinitializing node rpc server..."); + try { + m_node_server.deinit(); + } catch (...) { + LOG_PRINT_L0("Failed to deinitialize node rpc server..."); + } + } +}; + +} diff --git a/src/daemon/p2p.h b/src/daemon/p2p.h index 3858989..d512b8a 100644 --- a/src/daemon/p2p.h +++ b/src/daemon/p2p.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/protocol.h b/src/daemon/protocol.h index eb894fb..9dd7ee7 100644 --- a/src/daemon/protocol.h +++ b/src/daemon/protocol.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemon/rpc.h b/src/daemon/rpc.h index 29fbf23..c430fd0 100644 --- a/src/daemon/rpc.h +++ b/src/daemon/rpc.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // @@ -50,7 +51,7 @@ class t_rpc final , t_core & core , t_p2p & p2p ) - : m_server{core.get(), p2p.get()} + : m_server{core.get(), p2p.get()} { LOG_PRINT_L0("Initializing core rpc server..."); if (!m_server.init(vm)) @@ -90,7 +91,7 @@ class t_rpc final } catch (...) { LOG_PRINT_L0("Failed to deinitialize rpc server..."); } - } + } }; } diff --git a/src/daemon/rpc_command_executor.h b/src/daemon/rpc_command_executor.h index c1c9915..3335273 100644 --- a/src/daemon/rpc_command_executor.h +++ b/src/daemon/rpc_command_executor.h @@ -7,6 +7,7 @@ */ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/daemonizer.h b/src/daemonizer/daemonizer.h index 3e30d85..52e3b30 100644 --- a/src/daemonizer/daemonizer.h +++ b/src/daemonizer/daemonizer.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/posix_fork.h b/src/daemonizer/posix_fork.h index ef627a4..6414850 100644 --- a/src/daemonizer/posix_fork.h +++ b/src/daemonizer/posix_fork.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/windows_daemonizer.inl b/src/daemonizer/windows_daemonizer.inl index d8ff08b..513730c 100644 --- a/src/daemonizer/windows_daemonizer.inl +++ b/src/daemonizer/windows_daemonizer.inl @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/windows_service.cpp b/src/daemonizer/windows_service.cpp index f8cc0c6..097617d 100644 --- a/src/daemonizer/windows_service.cpp +++ b/src/daemonizer/windows_service.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/windows_service.h b/src/daemonizer/windows_service.h index 2712d13..7429cbf 100644 --- a/src/daemonizer/windows_service.h +++ b/src/daemonizer/windows_service.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/daemonizer/windows_service_runner.h b/src/daemonizer/windows_service_runner.h index f4258a2..5582b7b 100644 --- a/src/daemonizer/windows_service_runner.h +++ b/src/daemonizer/windows_service_runner.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/electrum-words.cpp b/src/mnemonics/electrum-words.cpp index 9c3c259..ee792ae 100644 --- a/src/mnemonics/electrum-words.cpp +++ b/src/mnemonics/electrum-words.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2017, Bixbite // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/electrum-words.h b/src/mnemonics/electrum-words.h index 24f884a..984eafe 100644 --- a/src/mnemonics/electrum-words.h +++ b/src/mnemonics/electrum-words.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/english.h b/src/mnemonics/english.h index b550c54..8a0c17f 100644 --- a/src/mnemonics/english.h +++ b/src/mnemonics/english.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/german.h b/src/mnemonics/german.h index 81d527f..4ff5cd3 100644 --- a/src/mnemonics/german.h +++ b/src/mnemonics/german.h @@ -1,6 +1,7 @@ // Word list created by Monero contributor Shrikez // // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/italian.h b/src/mnemonics/italian.h index 60079f0..f8aae4e 100644 --- a/src/mnemonics/italian.h +++ b/src/mnemonics/italian.h @@ -1,6 +1,7 @@ // Word list created by Monero contributor Shrikez // // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/japanese.h b/src/mnemonics/japanese.h index 0706885..704d483 100644 --- a/src/mnemonics/japanese.h +++ b/src/mnemonics/japanese.h @@ -1,6 +1,7 @@ // Word list originally created by dabura667 // // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/language_base.h b/src/mnemonics/language_base.h index 2c30181..9d64c20 100644 --- a/src/mnemonics/language_base.h +++ b/src/mnemonics/language_base.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/portuguese.h b/src/mnemonics/portuguese.h index 587b036..91bd467 100644 --- a/src/mnemonics/portuguese.h +++ b/src/mnemonics/portuguese.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/russian.h b/src/mnemonics/russian.h index c32ae8c..2021ba9 100644 --- a/src/mnemonics/russian.h +++ b/src/mnemonics/russian.h @@ -1,6 +1,7 @@ // Word list created by Monero contributor sammy007 // // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/singleton.h b/src/mnemonics/singleton.h index d242311..59e5094 100644 --- a/src/mnemonics/singleton.h +++ b/src/mnemonics/singleton.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/mnemonics/spanish.h b/src/mnemonics/spanish.h index 408f010..1e7a04c 100644 --- a/src/mnemonics/spanish.h +++ b/src/mnemonics/spanish.h @@ -1,6 +1,7 @@ // Word list originally created as part of the Electrum project, Copyright (C) 2014 Thomas Voegtlin // // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/node_rpc/CMakeLists.txt b/src/node_rpc/CMakeLists.txt new file mode 100644 index 0000000..4963f86 --- /dev/null +++ b/src/node_rpc/CMakeLists.txt @@ -0,0 +1,54 @@ +# Copyright (c) 2014-2016, The Monero Project +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of +# conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list +# of conditions and the following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors may be +# used to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(node_rpc_sources + node_rpc_server.cpp) + +set(node_rpc_headers) + +set(node_rpc_private_headers + node_rpc_server.h + node_rpc_server_commands_defs.h + node_rpc_server_error_codes.h) + +Bixbite_private_headers(node_rpc + ${node_rpc_private_headers}) +Bixbite_add_library(node_rpc + ${node_rpc_sources} + ${node_rpc_headers} + ${node_rpc_private_headers}) +target_link_libraries(node_rpc + PUBLIC + wallet + cryptonote_core + cryptonote_protocol + ${Boost_THREAD_LIBRARY} + PRIVATE + ${EXTRA_LIBRARIES}) +add_dependencies(node_rpc + version) diff --git a/src/node_rpc/node_rpc_server.cpp b/src/node_rpc/node_rpc_server.cpp new file mode 100644 index 0000000..883e11d --- /dev/null +++ b/src/node_rpc/node_rpc_server.cpp @@ -0,0 +1,347 @@ +// Copyright (c) 2014-2017, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#include +#include "include_base_utils.h" +using namespace epee; + +#include "node_rpc_server.h" +#include "common/command_line.h" +#include "cryptonote_core/cryptonote_format_utils.h" +#include "cryptonote_core/account.h" +#include "cryptonote_core/cryptonote_basic_impl.h" +#include "misc_language.h" +#include "crypto/hash.h" +#include "node_rpc_server_error_codes.h" + +#include "wallet/api/wallet.h" + +#define MAX_RESTRICTED_FAKE_OUTS_COUNT 40 +#define MAX_RESTRICTED_GLOBAL_FAKE_OUTS_COUNT 500 + +namespace cryptonote +{ + + +//------------------------------------------------------------------------------------------------------------------------------ +node_rpc_server::node_rpc_server( + core& cr + , nodetool::node_server >& p2p + ) + : m_core(cr) + , m_p2p(p2p) +{} +//----------------------------------------------------------------------------------- +string node_rpc_server::base64_decode(const string &encoded_data) +{ + return epee::string_encoding::base64_decode(encoded_data); +} +//----------------------------------------------------------------------------------- +string node_rpc_server::base64_encode(const string &data) +{ + return epee::string_encoding::base64_encode(data); +} +//----------------------------------------------------------------------------------- +void node_rpc_server::init_options(boost::program_options::options_description& desc) +{ + command_line::add_arg(desc, arg_rpc_bind_ip); + command_line::add_arg(desc, arg_rpc_bind_port); + command_line::add_arg(desc, arg_restricted_rpc); + command_line::add_arg(desc, arg_user_agent); +} +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::handle_command_line( + const boost::program_options::variables_map& vm + ) +{ + m_bind_ip = command_line::get_arg(vm, arg_rpc_bind_ip); + m_port = command_line::get_arg(vm, arg_rpc_bind_port); + m_restricted = command_line::get_arg(vm, arg_restricted_rpc); + return true; +} +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::init( + const boost::program_options::variables_map& vm + ) +{ + m_testnet = command_line::get_arg(vm, command_line::arg_testnet_on); + std::string m_user_agent = command_line::get_arg(vm, command_line::arg_user_agent); + + m_net_server.set_threads_prefix("RPC"); + bool r = handle_command_line(vm); + CHECK_AND_ASSERT_MES(r, false, "Failed to process command line in node_rpc_server"); + return epee::http_server_impl_base::init(m_port, m_bind_ip, m_user_agent); +} +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::check_core_busy() +{ + if(m_p2p.get_payload_object().get_core().get_blockchain_storage().is_storing_blockchain()) + { + return false; + } + return true; +} +#define CHECK_NODE_BUSY() do { if(!check_core_busy()){res.status = NODE_RPC_STATUS_BUSY;return true;} } while(0) +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::check_core_ready() +{ + if(!m_p2p.get_payload_object().is_synchronized()) + { + return false; + } + return check_core_busy(); +} +#define CHECK_NODE_READY() do { if(!check_core_ready()){res.status = NODE_RPC_STATUS_BUSY;return true;} } while(0) + +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::on_helloworld(const COMMAND_NODE_RPC_HELLOWORLD::request& req, COMMAND_NODE_RPC_HELLOWORLD::response& res) +{ + CHECK_NODE_BUSY(); + res.phrase = "Hello, world!"; + res.status = NODE_RPC_STATUS_OK; + return true; +} +//------------------------------------------------------------------------------------------------------------------------------ +bool node_rpc_server::on_createaccount(COMMAND_NODE_RPC_CREATE_ACCOUNT::request& req, COMMAND_NODE_RPC_CREATE_ACCOUNT::response& res) +{ + CHECK_NODE_BUSY(); + + std::string uuid=boost::uuids::to_string(boost::uuids::random_generator()()); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + + if(!wal.create(uuid,req.password,req.language)) + { + res.status = NODE_RPC_ERROR_CREATE; + return false; + } + if(!wal.open(uuid,req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + + wal.setRefreshFromBlockHeight(wal.daemonBlockChainHeight()-1); + wal.refresh(); + + res.address=wal.mainAddress(); + res.account=base64_encode(uuid); + res.seed=wal.seed(); + res.view_key=wal.publicViewKey(); + + + + if(!wal.store("")) + { + wal.close(true); + res.status =NODE_RPC_ERROR_STORE; + return false; + } + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} + +//------------------------------------------------------------------------------------------------------------------------------ + +bool node_rpc_server::on_get_walletbalance(COMMAND_NODE_RPC_GETWALLETBALANCE::request& req, COMMAND_NODE_RPC_GETWALLETBALANCE::response& res) +{ + CHECK_NODE_BUSY(); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + if(!wal.open(base64_decode(req.account),req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + + wal.refresh(); + + res.balance=wal.balance(); + res.unlocked_balance=wal.unlockedBalance(); + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} + +//------------------------------------------------------------------------------------------------------------------------------ + +bool node_rpc_server::on_get_seed(COMMAND_NODE_RPC_GET_SEED::request& req, COMMAND_NODE_RPC_GET_SEED::response& res) +{ + CHECK_NODE_BUSY(); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + if(!wal.open(base64_decode(req.account),req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + + + res.seed=wal.seed(); + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} + +//------------------------------------------------------------------------------------------------------------------------------ + +bool node_rpc_server::on_restore_account(COMMAND_NODE_RPC_RESTORE_ACCOUNT::request& req, COMMAND_NODE_RPC_RESTORE_ACCOUNT::response& res) +{ + CHECK_NODE_BUSY(); + + std::string uuid=base64_encode(boost::uuids::to_string(boost::uuids::random_generator()())); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + + if(!wal.recover(uuid,req.seed)) + { + res.status = NODE_RPC_ERROR_RECOVER; + return false; + } + if(!wal.setPassword(req.password)) + { + res.status = NODE_RPC_ERROR_SET_PASSWORD; + wal.close(true); + return false; + } + if(!wal.open(uuid,req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + + res.address=wal.mainAddress(); + res.account=base64_encode(uuid); + res.seed=wal.seed(); + res.view_key=wal.publicViewKey(); + + wal.refresh(); + + if(!wal.store("")) + { + wal.close(true); + res.status =NODE_RPC_ERROR_STORE; + return false; + } + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} +bool node_rpc_server::on_transfer(COMMAND_NODE_RPC_TRANSFER::request& req, COMMAND_NODE_RPC_TRANSFER::response& res) +{ + CHECK_NODE_BUSY(); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + if(!wal.open(base64_decode(req.account),req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + uint64_t amm=wal.amountFromString(req.amount); + + Monero::PendingTransaction *trans=wal.createTransaction(req.address,"",amm,5); + if(!trans->commit()) + { + res.status = NODE_RPC_ERROR_COMMIT_TX; + wal.close(true); + return false; + } + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} +bool node_rpc_server::on_get_transfer_fee(COMMAND_NODE_RPC_GET_TRANSFER_FEE::request& req, COMMAND_NODE_RPC_GET_TRANSFER_FEE::response& res) +{ + CHECK_NODE_BUSY(); + + Monero::WalletImpl wal(false); + wal.init("http://127.0.0.1:44041",0); + if(!wal.open(base64_decode(req.account),req.password)) + { + res.status = NODE_RPC_ERROR_OPEN; + return false; + } + + uint64_t amm=wal.amountFromString(req.amount); + Monero::PendingTransaction *trans=wal.createTransaction(req.address,"",amm,5); + + // res.fee=trans->fee(); + + wal.close(true); + + res.status = NODE_RPC_STATUS_OK; + return true; +} +//------------------------------------------------------------------------------------------------------------------------------ +// equivalent of strstr, but with arbitrary bytes (ie, NULs) +// This does not differentiate between "not found" and "found at offset 0" + +const command_line::arg_descriptor node_rpc_server::arg_rpc_bind_ip = { + "node-rpc-bind-ip" + , "IP for NODE RPC server" + , "127.0.0.1" +}; + +const command_line::arg_descriptor node_rpc_server::arg_rpc_bind_port = { + "node-rpc-bind-port" + , "Port for NODE RPC server" + , std::to_string(config::NODE_RPC_DEFAULT_PORT) +}; + + +const command_line::arg_descriptor node_rpc_server::arg_restricted_rpc = { + "restricted-node-rpc" + , "Restrict NODE RPC to view only commands" + , false +}; + +const command_line::arg_descriptor node_rpc_server::arg_user_agent = { + "node-user-agent" + , "Restrict NODE RPC to clients using this user agent" + , "" +}; + +} // namespace cryptonote diff --git a/src/node_rpc/node_rpc_server.h b/src/node_rpc/node_rpc_server.h new file mode 100644 index 0000000..64db118 --- /dev/null +++ b/src/node_rpc/node_rpc_server.h @@ -0,0 +1,118 @@ +// Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#pragma once + +#include +#include + +#include "net/http_server_impl_base.h" +#include "node_rpc_server_commands_defs.h" +#include "cryptonote_core/cryptonote_core.h" +#include "p2p/net_node.h" +#include "cryptonote_protocol/cryptonote_protocol_handler.h" +#include "../contrib/epee/include/string_coding.h" + +// yes, epee doesn't properly use its full namespace when calling its +// functions from macros. *sigh* +using namespace epee; + +namespace cryptonote +{ + /************************************************************************/ + /* */ + /************************************************************************/ + class node_rpc_server: public epee::http_server_impl_base + { + public: + + static const command_line::arg_descriptor arg_rpc_bind_ip; + static const command_line::arg_descriptor arg_rpc_bind_port; + static const command_line::arg_descriptor arg_restricted_rpc; + static const command_line::arg_descriptor arg_user_agent; + + typedef epee::net_utils::connection_context_base connection_context; + + node_rpc_server( + core& cr + , nodetool::node_server >& p2p + ); + + static void init_options(boost::program_options::options_description& desc); + bool init( + const boost::program_options::variables_map& vm + ); + bool is_testnet() const { return m_testnet; } + + CHAIN_HTTP_TO_MAP2(connection_context); //forward http requests to uri map + + BEGIN_URI_MAP2() + BEGIN_JSON_RPC_MAP("/json_rpc") + MAP_JON_RPC("helloworld", on_helloworld, COMMAND_NODE_RPC_HELLOWORLD) + MAP_JON_RPC("createaccount", on_createaccount, COMMAND_NODE_RPC_CREATE_ACCOUNT) + MAP_JON_RPC("getwalletbalance", on_get_walletbalance, COMMAND_NODE_RPC_GETWALLETBALANCE) + MAP_JON_RPC("getseed", on_get_seed, COMMAND_NODE_RPC_GET_SEED) + MAP_JON_RPC("restoreaccount", on_restore_account, COMMAND_NODE_RPC_RESTORE_ACCOUNT) + MAP_JON_RPC("transfer", on_transfer, COMMAND_NODE_RPC_TRANSFER) + MAP_JON_RPC("gettransferfee", on_get_transfer_fee, COMMAND_NODE_RPC_GET_TRANSFER_FEE) + END_JSON_RPC_MAP() + END_URI_MAP2() + + //json_rpc + bool on_helloworld(const COMMAND_NODE_RPC_HELLOWORLD::request& req, COMMAND_NODE_RPC_HELLOWORLD::response& res); + bool on_createaccount(COMMAND_NODE_RPC_CREATE_ACCOUNT::request& req, COMMAND_NODE_RPC_CREATE_ACCOUNT::response& res); + bool on_get_walletbalance(COMMAND_NODE_RPC_GETWALLETBALANCE::request& req, COMMAND_NODE_RPC_GETWALLETBALANCE::response& res); + bool on_get_seed(COMMAND_NODE_RPC_GET_SEED::request& req, COMMAND_NODE_RPC_GET_SEED::response& res); + bool on_restore_account(COMMAND_NODE_RPC_RESTORE_ACCOUNT::request& req, COMMAND_NODE_RPC_RESTORE_ACCOUNT::response& res); + bool on_transfer(COMMAND_NODE_RPC_TRANSFER::request& req, COMMAND_NODE_RPC_TRANSFER::response& res); + bool on_get_transfer_fee(COMMAND_NODE_RPC_GET_TRANSFER_FEE::request& req, COMMAND_NODE_RPC_GET_TRANSFER_FEE::response& res); + //----------------------- + +private: + + bool handle_command_line( + const boost::program_options::variables_map& vm + ); + bool check_core_busy(); + bool check_core_ready(); + + string base64_decode(const string &encoded_data); + string base64_encode(const string &data); + + //utils + core& m_core; + nodetool::node_server >& m_p2p; + std::string m_port; + std::string m_bind_ip; + bool m_testnet; + bool m_restricted; + }; +} diff --git a/src/node_rpc/node_rpc_server_commands_defs.h b/src/node_rpc/node_rpc_server_commands_defs.h new file mode 100644 index 0000000..cc4fb40 --- /dev/null +++ b/src/node_rpc/node_rpc_server_commands_defs.h @@ -0,0 +1,237 @@ +// Copyright (c) 2014-2017, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#pragma once +#include "cryptonote_protocol/cryptonote_protocol_defs.h" +#include "cryptonote_core/cryptonote_basic.h" +#include "cryptonote_core/difficulty.h" +#include "crypto/hash.h" + +namespace cryptonote +{ +//----------------------------------------------- +#define NODE_RPC_STATUS_OK "OK" +#define NODE_RPC_STATUS_BUSY "BUSY" +#define NODE_RPC_STATUS_NOT_MINING "NOT MINING" + +// When making *any* change here, bump minor +// If the change is incompatible, then bump major and set minor to 0 +// This ensures CORE_RPC_VERSION always increases, that every change +// has its own version, and that clients can just test major to see +// whether they can talk to a given daemon without having to know in +// advance which version they will stop working with +// Don't go over 32767 for any of these +#define NODE_RPC_VERSION_MAJOR 0 +#define NODE_RPC_VERSION_MINOR 1 +#define NODE_RPC_VERSION (((NODE_RPC_VERSION_MAJOR)<<16)|(NODE_RPC_VERSION_MINOR)) + +struct COMMAND_NODE_RPC_HELLOWORLD +{ + struct request + { + BEGIN_KV_SERIALIZE_MAP() + END_KV_SERIALIZE_MAP() + }; + + struct response + { + std::string phrase; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(phrase) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_GETWALLETBALANCE +{ + struct request { + std::string account; + std::string password; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(account) + KV_SERIALIZE(password) + END_KV_SERIALIZE_MAP() + }; + struct response { + + int64_t result; + uint64_t balance; + uint64_t unlocked_balance; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(balance) + KV_SERIALIZE(unlocked_balance) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_CREATE_ACCOUNT { + struct request { + std::string password; + std::string language; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(password) + KV_SERIALIZE(language) + END_KV_SERIALIZE_MAP() + }; + struct response { + int64_t result; + std::string address; + std::string view_key; + std::string account; + std::string seed; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(address) + KV_SERIALIZE(view_key) + KV_SERIALIZE(account) + KV_SERIALIZE(seed) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_GET_SEED { + struct request { + std::string account; + std::string password; + std::string language; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(account) + KV_SERIALIZE(password) + KV_SERIALIZE(language) + END_KV_SERIALIZE_MAP() + }; + struct response { + int64_t result; + std::string seed; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(seed) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_RESTORE_ACCOUNT { + struct request { + std::string seed; + std::string password; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(seed) + KV_SERIALIZE(password) + END_KV_SERIALIZE_MAP() + }; + struct response { + int64_t result; + std::string address; + std::string view_key; + std::string account; + std::string seed; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(address) + KV_SERIALIZE(view_key) + KV_SERIALIZE(account) + KV_SERIALIZE(seed) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_TRANSFER { + struct request { + std::string account; + std::string password; + std::string address; + std::string amount; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(account) + KV_SERIALIZE(password) + KV_SERIALIZE(address) + KV_SERIALIZE(amount) + END_KV_SERIALIZE_MAP() + }; + struct response { + int64_t result; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +struct COMMAND_NODE_RPC_GET_TRANSFER_FEE { + struct request { + std::string account; + std::string password; + std::string address; + std::string amount; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(account) + KV_SERIALIZE(password) + KV_SERIALIZE(address) + KV_SERIALIZE(amount) + END_KV_SERIALIZE_MAP() + }; + struct response { + int64_t result; + uint64_t fee; + std::string status; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(result) + KV_SERIALIZE(fee) + KV_SERIALIZE(status) + END_KV_SERIALIZE_MAP() + }; +}; + +} diff --git a/src/node_rpc/node_rpc_server_error_codes.h b/src/node_rpc/node_rpc_server_error_codes.h new file mode 100644 index 0000000..5a5a0e9 --- /dev/null +++ b/src/node_rpc/node_rpc_server_error_codes.h @@ -0,0 +1,43 @@ +// Copyright (c) 2014-2017, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers + +#pragma once + + +#define NODE_RPC_ERROR_STORE -1 +#define NODE_RPC_ERROR_CREATE -2 +#define NODE_RPC_ERROR_OPEN -3 +#define NODE_RPC_ERROR_SET_PASSWORD -4 +#define NODE_RPC_ERROR_RECOVER -5 +#define NODE_RPC_ERROR_COMMIT_TX -6 + + + + diff --git a/src/p2p/connection_basic.cpp b/src/p2p/connection_basic.cpp index 99a7d56..2cf7413 100644 --- a/src/p2p/connection_basic.cpp +++ b/src/p2p/connection_basic.cpp @@ -3,6 +3,7 @@ /// @brief base for connection, contains e.g. the ratelimit hooks // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/connection_basic.hpp b/src/p2p/connection_basic.hpp index 0eaf31c..ca82b30 100644 --- a/src/p2p/connection_basic.hpp +++ b/src/p2p/connection_basic.hpp @@ -9,6 +9,7 @@ // ! Working on above premise, IF this is valid in your juristdictions, then consider this code as released as: // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/net_node.h b/src/p2p/net_node.h index f97ce6d..ba9d194 100644 --- a/src/p2p/net_node.h +++ b/src/p2p/net_node.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index 64e2be6..1e90dbe 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/net_node_common.h b/src/p2p/net_node_common.h index 69bee89..75044b7 100644 --- a/src/p2p/net_node_common.h +++ b/src/p2p/net_node_common.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/net_peerlist.h b/src/p2p/net_peerlist.h index a50d8be..7150ce1 100644 --- a/src/p2p/net_peerlist.h +++ b/src/p2p/net_peerlist.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/net_peerlist_boost_serialization.h b/src/p2p/net_peerlist_boost_serialization.h index d9a1172..454aa92 100644 --- a/src/p2p/net_peerlist_boost_serialization.h +++ b/src/p2p/net_peerlist_boost_serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/network_throttle-detail.cpp b/src/p2p/network_throttle-detail.cpp index 407d8d8..38cb03e 100644 --- a/src/p2p/network_throttle-detail.cpp +++ b/src/p2p/network_throttle-detail.cpp @@ -3,6 +3,7 @@ /// @brief implementaion for throttling of connection (count and rate-limit speed etc) // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/network_throttle-detail.hpp b/src/p2p/network_throttle-detail.hpp index ef7227e..98a4336 100644 --- a/src/p2p/network_throttle-detail.hpp +++ b/src/p2p/network_throttle-detail.hpp @@ -3,6 +3,7 @@ /// @brief implementaion for throttling of connection (count and rate-limit speed etc) // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/network_throttle.cpp b/src/p2p/network_throttle.cpp index 30538bb..78b78c6 100644 --- a/src/p2p/network_throttle.cpp +++ b/src/p2p/network_throttle.cpp @@ -27,6 +27,7 @@ Throttling work by: */ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/network_throttle.hpp b/src/p2p/network_throttle.hpp index b954c5b..b87f97b 100644 --- a/src/p2p/network_throttle.hpp +++ b/src/p2p/network_throttle.hpp @@ -3,6 +3,7 @@ /// @brief interface for throttling of connection (count and rate-limit speed etc) // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/p2p_protocol_defs.h b/src/p2p/p2p_protocol_defs.h index ce1ee14..7f69128 100644 --- a/src/p2p/p2p_protocol_defs.h +++ b/src/p2p/p2p_protocol_defs.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/p2p/stdafx.h b/src/p2p/stdafx.h index 77daa48..ba35578 100644 --- a/src/p2p/stdafx.h +++ b/src/p2p/stdafx.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/platform/mingw/alloca.h b/src/platform/mingw/alloca.h index 131ad34..fb968ae 100644 --- a/src/platform/mingw/alloca.h +++ b/src/platform/mingw/alloca.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/platform/msc/alloca.h b/src/platform/msc/alloca.h index 0007d32..87486fa 100644 --- a/src/platform/msc/alloca.h +++ b/src/platform/msc/alloca.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/platform/msc/inline_c.h b/src/platform/msc/inline_c.h index f28d707..f25096d 100644 --- a/src/platform/msc/inline_c.h +++ b/src/platform/msc/inline_c.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/platform/msc/stdbool.h b/src/platform/msc/stdbool.h index 22e34c2..d3ebd1f 100644 --- a/src/platform/msc/stdbool.h +++ b/src/platform/msc/stdbool.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/ringct/rctCryptoOps.c b/src/ringct/rctCryptoOps.c index 9bb9a68..088f781 100644 --- a/src/ringct/rctCryptoOps.c +++ b/src/ringct/rctCryptoOps.c @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/ringct/rctCryptoOps.h b/src/ringct/rctCryptoOps.h index 58c6964..7c1025d 100644 --- a/src/ringct/rctCryptoOps.h +++ b/src/ringct/rctCryptoOps.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index 4a08390..131e720 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -55,6 +55,7 @@ namespace cryptonote command_line::add_arg(desc, arg_testnet_rpc_bind_port); command_line::add_arg(desc, arg_restricted_rpc); command_line::add_arg(desc, arg_user_agent); + command_line::add_arg(desc, arg_callback_point); } //------------------------------------------------------------------------------------------------------------------------------ core_rpc_server::core_rpc_server( @@ -1398,6 +1399,12 @@ namespace cryptonote , "127.0.0.1" }; + const command_line::arg_descriptor core_rpc_server::arg_callback_point = { + "callback-point", + "Point to send notifications (incomming transacions)", + "" + }; + const command_line::arg_descriptor core_rpc_server::arg_rpc_bind_port = { "rpc-bind-port" , "Port for RPC server" diff --git a/src/rpc/core_rpc_server.h b/src/rpc/core_rpc_server.h index b7f6cdd..09905b7 100644 --- a/src/rpc/core_rpc_server.h +++ b/src/rpc/core_rpc_server.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // @@ -55,6 +56,7 @@ namespace cryptonote static const command_line::arg_descriptor arg_rpc_bind_ip; static const command_line::arg_descriptor arg_rpc_bind_port; static const command_line::arg_descriptor arg_testnet_rpc_bind_port; + static const command_line::arg_descriptor arg_callback_point; static const command_line::arg_descriptor arg_restricted_rpc; static const command_line::arg_descriptor arg_user_agent; diff --git a/src/serialization/binary_archive.h b/src/serialization/binary_archive.h index 3a5343c..506d8e8 100644 --- a/src/serialization/binary_archive.h +++ b/src/serialization/binary_archive.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/binary_utils.h b/src/serialization/binary_utils.h index ab4a86c..f2297b4 100644 --- a/src/serialization/binary_utils.h +++ b/src/serialization/binary_utils.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/crypto.h b/src/serialization/crypto.h index 9a7e89c..49e9410 100644 --- a/src/serialization/crypto.h +++ b/src/serialization/crypto.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/debug_archive.h b/src/serialization/debug_archive.h index f46a7ee..29c1508 100644 --- a/src/serialization/debug_archive.h +++ b/src/serialization/debug_archive.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/json_archive.h b/src/serialization/json_archive.h index 629a373..b315640 100644 --- a/src/serialization/json_archive.h +++ b/src/serialization/json_archive.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/json_utils.h b/src/serialization/json_utils.h index 5b78710..35a0dcb 100644 --- a/src/serialization/json_utils.h +++ b/src/serialization/json_utils.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/serialization.h b/src/serialization/serialization.h index dfc8241..66dd8df 100644 --- a/src/serialization/serialization.h +++ b/src/serialization/serialization.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/string.h b/src/serialization/string.h index 2a5228a..437d83a 100644 --- a/src/serialization/string.h +++ b/src/serialization/string.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/variant.h b/src/serialization/variant.h index a2cce9f..de90cf0 100644 --- a/src/serialization/variant.h +++ b/src/serialization/variant.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/serialization/vector.h b/src/serialization/vector.h index 7f2bc78..1ff4a57 100644 --- a/src/serialization/vector.h +++ b/src/serialization/vector.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/version.h b/src/version.h index d7b6f5e..82cc3e8 100644 --- a/src/version.h +++ b/src/version.h @@ -1,4 +1,4 @@ #define Bixbite_VERSION_TAG "release" -#define Bixbite_VERSION "0.0.0.5e" +#define Bixbite_VERSION "0.0.1.5e" #define Bixbite_RELEASE_NAME "Violet Claim" #define Bixbite_VERSION_FULL Bixbite_VERSION "-" Bixbite_VERSION_TAG diff --git a/src/version.h.in b/src/version.h.in index f40a16b..9ed0016 100644 --- a/src/version.h.in +++ b/src/version.h.in @@ -1,4 +1,4 @@ #define Bixbite_VERSION_TAG "@VERSIONTAG@" -#define Bixbite_VERSION "0.0.0.5e" +#define Bixbite_VERSION "0.0.1.5e" #define Bixbite_RELEASE_NAME "Violet Claim" #define Bixbite_VERSION_FULL Bixbite_VERSION "-" Bixbite_VERSION_TAG diff --git a/src/version.rc b/src/version.rc index 5e57240..a0515e1 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,6 +1,6 @@ VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,0,0,5 - PRODUCTVERSION 0,0,0,5 + FILEVERSION 0,0,1,5 + PRODUCTVERSION 0,0,1,5 FILEFLAGSMASK 0x003L FILEFLAGS 0x0L FILEOS 0x4L @@ -14,12 +14,12 @@ BEGIN VALUE "Comments", "Bixbite\0" VALUE "CompanyName", "Bixbite\0" VALUE "FileDescription", "Bixbite\0" - VALUE "FileVersion", "0.0.0.5e\0" + VALUE "FileVersion", "0.0.1.5e\0" VALUE "InternalName", "Bixbite\0" VALUE "LegalCopyright", "Copyright (C) 2018\0" VALUE "OriginalFilename", "\0" VALUE "ProductName", "Bixbite\0" - VALUE "ProductVersion", "0.0.0.5e\0" + VALUE "ProductVersion", "0.0.1.5e\0" END END BLOCK "VarFileInfo" diff --git a/src/wallet/api/utils.cpp b/src/wallet/api/utils.cpp index 0d30b61..e823a5d 100644 --- a/src/wallet/api/utils.cpp +++ b/src/wallet/api/utils.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/wallet/wallet_args.cpp b/src/wallet/wallet_args.cpp index b194e79..a626655 100644 --- a/src/wallet/wallet_args.cpp +++ b/src/wallet/wallet_args.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/wallet/wallet_args.h b/src/wallet/wallet_args.h index 17446ab..7b060c0 100644 --- a/src/wallet/wallet_args.h +++ b/src/wallet/wallet_args.h @@ -1,4 +1,5 @@ // Copyright (c) 2014-2016, The Monero Project +// Copyright (c) 2017-2018, The Bixbite Project // // All rights reserved. // diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index f5d99e4..5734505 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -50,6 +50,7 @@ namespace const command_line::arg_descriptor arg_rpc_bind_port = {"rpc-bind-port", "Sets bind port for server"}; const command_line::arg_descriptor arg_rpc_bind_ip = {"rpc-bind-ip", "Specify ip to bind rpc server", "127.0.0.1"}; const command_line::arg_descriptor arg_user_agent = {"user-agent", "Restrict RPC to clients using this user agent", ""}; + const command_line::arg_descriptor arg_callback_point = {"callback-point", "Point to send notifications (incomming transacions)", ""}; const command_line::arg_descriptor arg_confirm_external_bind = {"confirm-external-bind", "Confirm rcp-bind-ip value is NOT a loopback (local) IP"}; } @@ -1562,6 +1563,7 @@ int main(int argc, char** argv) { tools::wallet2::init_options(desc_params); command_line::add_arg(desc_params, arg_rpc_bind_ip); command_line::add_arg(desc_params, arg_rpc_bind_port); + command_line::add_arg(desc_params, arg_callback_point); command_line::add_arg(desc_params, arg_user_agent); command_line::add_arg(desc_params, arg_confirm_external_bind); command_line::add_arg(desc_params, arg_wallet_file);